You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

matplotlib_ani.ipynb 114 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {},
  6. "source": [
  7. "## Matplotlib Animation\n"
  8. ]
  9. },
  10. {
  11. "cell_type": "markdown",
  12. "metadata": {},
  13. "source": [
  14. "## Method 1"
  15. ]
  16. },
  17. {
  18. "cell_type": "code",
  19. "execution_count": 1,
  20. "metadata": {},
  21. "outputs": [
  22. {
  23. "data": {
  24. "image/png": "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\n",
  25. "text/plain": [
  26. "<Figure size 432x288 with 1 Axes>"
  27. ]
  28. },
  29. "metadata": {
  30. "needs_background": "light"
  31. },
  32. "output_type": "display_data"
  33. }
  34. ],
  35. "source": [
  36. "%matplotlib inline\n",
  37. "\n",
  38. "import numpy as np\n",
  39. "import matplotlib.pyplot as plt\n",
  40. "\n",
  41. "from matplotlib import animation, rc\n",
  42. "from IPython.display import HTML\n",
  43. "\n",
  44. "\n",
  45. "# First set up the figure, the axis, and the plot element we want to animate\n",
  46. "fig, ax = plt.subplots()\n",
  47. "\n",
  48. "ax.set_xlim(( 0, 2))\n",
  49. "ax.set_ylim((-2, 2))\n",
  50. "\n",
  51. "line, = ax.plot([], [], lw=2)\n",
  52. "\n",
  53. "\n",
  54. "\n"
  55. ]
  56. },
  57. {
  58. "cell_type": "code",
  59. "execution_count": 2,
  60. "metadata": {},
  61. "outputs": [
  62. {
  63. "data": {
  64. "text/html": [
  65. "<video width=\"432\" height=\"288\" controls autoplay loop>\n",
  66. " <source type=\"video/mp4\" src=\"data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAABeL21kYXQAAAKuBgX//6rcRem9\n",
  67. "5tlIt5Ys2CDZI+7veDI2NCAtIGNvcmUgMTQ4IHIyNjQzIDVjNjU3MDQgLSBILjI2NC9NUEVHLTQg\n",
  68. "QVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDE1IC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcv\n",
  69. "eDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MSByZWY9MyBkZWJsb2NrPTE6MDowIGFuYWx5c2U9\n",
  70. "MHgzOjB4MTEzIG1lPWhleCBzdWJtZT03IHBzeT0xIHBzeV9yZD0xLjAwOjAuMDAgbWl4ZWRfcmVm\n",
  71. "PTEgbWVfcmFuZ2U9MTYgY2hyb21hX21lPTEgdHJlbGxpcz0xIDh4OGRjdD0xIGNxbT0wIGRlYWR6\n",
  72. "b25lPTIxLDExIGZhc3RfcHNraXA9MSBjaHJvbWFfcXBfb2Zmc2V0PS0yIHRocmVhZHM9OSBsb29r\n",
  73. "YWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFj\n",
  74. "ZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJh\n",
  75. "bWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdl\n",
  76. "aWdodHA9MiBrZXlpbnQ9MjUwIGtleWludF9taW49MjUgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVz\n",
  77. "aD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIzLjAgcWNvbXA9MC42MCBx\n",
  78. "cG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAABKiZYiE\n",
  79. "AC///vau/MsrRwuVLh1Ze7NR8uhJcv2IMH1oAAADAADVayF8oYJVUBjgvNA9NyX0pOD8+0aEKaS/\n",
  80. "W+kRxFrWNzf+eSO4TQp9X9rSQjTItyhp18FcAAFYwPSb9MNj7345mZM2SCpqc/4dq8TkXuq00M8Q\n",
  81. "OvVEaAcaB8dFKy0nxv6lS/KsJVTGkw7kt4VpUBgOXNkT5vbbHpQLGFTaisacVyNWLNCImwHFb8yP\n",
  82. "CePMeSBVDHNL2XEMBl5TMwvoCjHau9D7RwBgcKfh2rz+BOgXuunyP8n78SBHX2YS9/lTVsUPVMzG\n",
  83. "LNxfvZecE5fhiqSuvtFQDPgaVLXZbeoO85oh4ZAnrx8itOqWDDaRmiI0BFP8Sq6+LZ0CjvnoE7/S\n",
  84. "DZjm5DXL3c1fWFQQWXF3enmOeIfPtNwAABGHNGPtgy+Op+pATlL/x7pbX3TbzLm5jX7zDnXsPT9C\n",
  85. "Ezy0T5J9vl0L81Nz1wcjuuAAANlC66FoXlsClhtzbcUtq8DImZZbTpnxmjoJ8+OVhb6V5OJGLw6o\n",
  86. "rtUXNVslFxPb4pLFAN1T6/3VSVgg4rExc6fp7b6ZA/rwh1zncBQeC+BPwWWGZWjKT520x8pMfUSi\n",
  87. "OUU1dOEPrsefWBB62d02HffLPASIU3KYcuVLGP9/AlkV+d7HQI7tH+Tup1aGArUFHb5qLfzKLsTF\n",
  88. "UjahiNVIMErlGfCKhNztvSsYyHNO6c+Fqdz7Y/ot9ghWeMksuj+9qGEzxIvovPXKBqMbEsombUwn\n",
  89. "kc4DqbrkOv4htXURRs4OZ2t1KRXsFlSWELi5i3+P4osb/uwQ6s1cU1G52DrrDby/bDkKYyPemPF7\n",
  90. "4nzvaHQAcC+B6giYccRdwozP3m0yB+u7Ogq/aOhcd5jwoTztV5T0WNaTPO3D9YWBLB5g8/Aps2r9\n",
  91. "vR8HankRia61LjCTjLbuX4F/rpIj/E9bMa6gK87GOJRR9wkCAYMelBO/7wcj6A7GiVOYH76GPH1Y\n",
  92. "n5tPabXlVGDzJcdvWlKLO35hwp7dtX3r58sbcTEaoDARGXhtKZv+urpF/C4/weT3VJEpZZ7lq2k2\n",
  93. "uuw/SdaQhFNobj4esztrZQT4oGu7JGG7fej5yktCIVyf3ChLCS+6rUfgdA9wawlklONjef1VB9Ov\n",
  94. "0O/ikn3dG8KSsBZv2F+ldccxWzItDYEPlxxMz+8mvpBkV+8cfwBregTzpxcsfbDLRAsEeizB1ApJ\n",
  95. "wBT0UZUfRMHIEfXRPI1taF2Ui/DfGe/j5n5FtaxsJmMny9/Ek6Cu/SHZrGKe6c6vSwRM27J5VoHi\n",
  96. "Zktqns88SrvtGF+sWJxnXrqsX5OLEtkLQAwYKykdlhkbKzqtwKyrHDL41n1mrRNIpQGTdrOn7+qa\n",
  97. "iHuIU7hIuNJQbu4RGekKVOGk20N4I1t0rbdTWf9SWE3aDhjZ8FJWw5ZkGxL/Il56ufetQJ3aPN2g\n",
  98. "98gGaM6YIz+YXuc9F8d/gwuqbEI236M/qij8Y/xPdyMr/rE6PBmtseIju13N3YqvaEyF7P268iTr\n",
  99. "etf1WoWfPyRTIfC7mM7ECfpd7jPwj6jEjoegj1VgORQBsEN9awzBjNtPDtmposDXTTVVqrjuDayJ\n",
  100. "FJJUd7uXV6Lf5tYFohMQmeuGPSp0BwMy0djFaiYwsYo2BsrrZ6KC5U/PS+lfIIsuWMhyVD52L7H6\n",
  101. "6eiL4dPrhgD1sz5PGwZerSTj7oI4O5Udm7afELpfqXcZNheuwEKTrWcKIZkjKjK0wotYqf56P88U\n",
  102. "bI61dL6YZPmg39TWBPIyF7lzBk96jl1RvxV7ZrCOrmb4rEhIBHXb67jcbpdEk+tBJ/qmTIqDBP//\n",
  103. "hvKagj3gkOZs9TDGIB4ouzmN2zVWK3oxb8pt5NqTmYIDohPYXe7PeN+j5KLiCAa5OZFQLKrPYHaQ\n",
  104. "55/Z4HEbWks+QUJqxAXwzSxZNLZzpJL34cAhq/Z7vu9gTcPaJ0K4BPs9+T+RLfnVKnA3hTf/kQ97\n",
  105. "WdJ6ElRHiWqpEgULJF7PavCkOFfXlzo1kyZ2yujUNQCNYQ0gCz8LiKIf3ZJ9vfnK4AZFG+dCGaE6\n",
  106. "zFOhVeAgRXe3b0wKej9vPQxwblLuU02g9jArWKOoUZHctE5RH58adcE6RnrskB1PKOHR4qqj5qNj\n",
  107. "tmFPT6GsHIOWeEECLgp+Hai2MChrGXuwdGxxqlulfcJmA5zeKOH1g5guP1lI5rBwMijjLWjppcgI\n",
  108. "SBWH9Af8HAqlPggjObkExPLtDHBmciNTn2KizgFYTeUE9EmrWjDmwJEFxvTbX27lhyf/Dsxctu2/\n",
  109. "R5C1noXLAccOD6fKiRFFIDRfEjKIdSFGVaqt9JmTqQZU13wuauyx+pTd0xJqb1sll8tbGHQ38e0n\n",
  110. "FxJOMq7sOzoD4TVSwqRs9B3ucWAB5aRo+r15Ugg2qOXSX6MsMLRKKIhCWxXq3VZnGuje9SZncSbv\n",
  111. "2cLHdzZAGzfr40D0qQPKKx3/Qhg5gfKXSj3E5/DNWfr2PhlFxLvWibGxk61osR0FEch44w9zaF3G\n",
  112. "YvzkKNOfq9vNzHu1SnHXyGW9E4M9TwDjvcDrOwNXB/FiTBvZlgQSKuqysHN4JlmCa8CTawYUlbxk\n",
  113. "nFFmLkqK9/4pALgakORp9y4qWKAgZMxCCegQpG7l3grSivtWMuN818no6Q4UTdbeVUE7E9/ZM9Cu\n",
  114. "EBqnAIbgHkjg8wBlLg8t/f/MP41++qwky//Du+CxEqQrngz4Q/h92tyrU7rvBO8SS6jpVHVCP17R\n",
  115. "PFj3oCo7RVqxhLmP0PnW3Hx+JPCJeZEbPPsX8hsXYRsswsUd3IbFHOpZ0y1ZPAwUwwOc0iTyHarV\n",
  116. "oBcq/k6YlYZca/U/aeahHd9ox7rKfA+XXVTXJ/xfweTgIwRg7PibFKg+3T24oM8Owgvz7Pae6AtQ\n",
  117. "oUJ2f8rE26yAfOWs0y3fxDVDCVFDSJJ4QjPUWT9HbF+xRnNAYfDKKH9G72gR0Ar20gF29rCg5NWX\n",
  118. "ljkmTpKY6RGmk5E6bPNf2VL1nNVt0FUt4JH++UvPpe4EJ1uXTUHbp8TVcaUmku3Pp9tBqrOgiwY0\n",
  119. "Ic/NZf5dqM9sXBfgp+aVMb21vx+Zl8ZiU9uWkiz3Hp8WFaHLUUAjG7emRUy3nPC71P4kW3i7Snym\n",
  120. "eGqKnJ1lYRpiz9iYilSbXa6FXPK1t0xqMVlnjkibAAXt/OvaNjDN4Irbdy121c5mNBc02v35NwT5\n",
  121. "HgVP6zM05NQRY8ph3MDknduAECTYlQGaaA5fXwdf1X4Dq+FULAlUf4dfKnl+FzuKPtmnMAV94NeC\n",
  122. "Mu8aZEOn2SZAtWc21NnGxqumpG1zykzCTMv1c0VuF2Lu7/NosHyqAcplEcijGoUsN40IlbCo12/D\n",
  123. "AcOElIx6hiMTWeasp1fYTQXPDUglxerIsFMu5xHeXofSqXXCLre9ZnwD1UEI9aOl1nrXiicPRAb4\n",
  124. "Z738PdA/4KVgYqmHaWboZqwWC6yweWN3ao/KWjOilB9CrtiySkngQ7/HaPQ7W2q103WNoUPmJjO1\n",
  125. "YDVCzfOdtXstEmWaB73Jvok5HyoilEimOHGrD8TpM8f9L939/+LpslxUm5ZFsof/hQmAXbB/E3Zo\n",
  126. "jAdAOVaxXTHyk1OeryDEH7RpvYYh4Eu7vPCAWijGxCXy2ERNx+M9gZhdAWRmttxhUZjHkGmcFqrk\n",
  127. "f+fpTpj+d7hQYNsE1Gl3FavbLWWWSTt+BH0O1/l8vDeLq46p5KfSLmC3c//8wGGMlJmavx+UFi8f\n",
  128. "Djw62UOp39NMxD8mPRWm0QtvaP49BwZKU4grh8AanDblmm7bp8FBGs5JH31fkpu37gTOn6u9uiYx\n",
  129. "jwMiBpQjCKdM8pRIpFHvaVo0RpgF3MflX4QxJywsrBlAidVo+Jwtk6yR63fVlIEaOyaoXViOxEXw\n",
  130. "txYpm5w/8QC79NG1Qykbq6kNnHWyGb2mX5xMTxIqSP7aitO5p+zntUOsaZ+13ilQH84i8dusxqUZ\n",
  131. "w+IQtI8D1ngBkoFivmmBWPyhJ41J4If0IIe02iI/OR/w7S6TiUcrodoN/f3UkIRMk7RBxmtNjKGd\n",
  132. "k/oLVvwzPUBwterEX68qBx/RtOHtn2vgXl7XBBZeZ9NTudRd9qM66UM0zDwEyKym31uFzmzFwS1S\n",
  133. "zkD7ZtTG6QR10AWCd/gdpMeCyvOrfELuHyoOsuSUNn9NRr+7hC9O5+TpyhVE9y1PvkUrJMJBtA7a\n",
  134. "I+1goXUqvyTwd1Z4qqyTvLCnoU2TGO8RZRIUN6vUY6Pd8U+MOzv64wcsEP9sZt1wftrObKbn3A1b\n",
  135. "B4bLzC50ZiZAF/pnSNfQBy5KXCrIrfMaDp9j5VZ5iQQPKqQA66Qq5wT5HEVFyMLHc2vVJasPIte8\n",
  136. "adOYaMwSPnMjMs5cPt9kQT6YyeyE2ICNPcsQMPXr3uPhvE8fX88WWRGDNakn/JVjuM7gJ9eGQws/\n",
  137. "rQ/toKC5iMX5BNX3sq+x4nirShDi9BNpsrtnFh/9iHyUPLnMfvQdZLFEIAwJGtKOOQAah4a9AF50\n",
  138. "NV5v2tBcQ3y15vzVDAOa2jHvrag8g3xp61YEk46le5eCcBnsc2erwuE8Nq4cmwtExpeYSx37GsZs\n",
  139. "bb/hYUYmKlj7uMDxL4rI6ysB2flULB0K5sJsy2Zc84JvdB1F96Ohy0OSVNxmiZEzZ6DrxOdlv/Zv\n",
  140. "t8n5ttkdV2ARrwnq+CzDqgLbkgI9JFf4K0ug9ffukSqVmQQTbq/r2Ae88sdb3k91YCK45sOQs40M\n",
  141. "yp1ncqDbUjw5hWscO0pctltwm/SnIBrL8EDqOm37rzCR7Gtttsrff7TGwOsFlpbblZxz+JjGNP2y\n",
  142. "GMztdvAVNqir3+eq0BG4WIrY2uwpHgqnj8qZrpjM/pE5RNQhlp7337fuPMI/b0fdhC9DmZdiC+qp\n",
  143. "Uoc3fRvdupXZQY+zYd9ZmRJ7HK7TE9ORTpMY+pFO9oAdezTGvens+EFpa/hX0kN2dP53L3v3qvWW\n",
  144. "LxECBm/ZfS4FQUvWniAiz4oLryUtb+UcB1KgB/kOh5tuUi+IT40WqR6hLDx0tLrR2fkieSNsuhGK\n",
  145. "V9c/m1dZs5PdYxirdhuWDFJJvga5yDbtr7bh4U+dKJJGlgS+PuzWdpx1/WK2Yrt9rdmIyBKLncQP\n",
  146. "O/2BTxVHiosvWKMIfbHrfGdhG9Dtuyzmd/t7SctBP6h8bOgb+IPkdLmmXKF4QCz1itbWBAxeRiqn\n",
  147. "TFRtDPwXbcZxOKLFl1wwvpXBuf17mjr8lBY7LCOG3Ad6/h/zQGaQVgDWirEgMSLjmGUxqHs2hfnO\n",
  148. "ceyYbZqrEVRMdk7R9tInc20xex6p6d4nylOVGF/lLFoGCvmRqPNyDFg9A+68En/+KKhR/BiaYY6B\n",
  149. "Zki1sQqXF61clIu3Z7Gw+WZDzXvRH0HC57AnRct0PFJSfwm00QXPPKUUFjXQGEf3lr378daUeIEc\n",
  150. "ZZ/EgG7Pb+SB8sM2sz3lLMhwOZ+6XlfhCFzgixAOdK8xFeScz+YY+shX/BOIeCC1d8kR5yJKax7m\n",
  151. "pdRktpo06DSU55CYqivuzCTgG7Zzr2Q/HPXZ0rCE5fd2OzxLA0WXoQV3L4ciALSHhXHgs3f2RYSq\n",
  152. "EVmmCRotH/91DBUG4UKulpgF8i0l+DObEvMDlonzwgtZnP3PY0tnaxbOiMwS/RIYvmiK+cToPyb2\n",
  153. "0b9xSzGw3D/yjyc2CM+S5l69av5jg32jeZ66zExPElVp2pcZ0pujNVj1bWJSnNP4muvSZaRnZuC9\n",
  154. "0rKpv2NAAcX3pu88ETjOMGVyCFcwa1mXT6Qij5Xi/DcKWbPe/M6mJ6kSOLGhr0iU8gXjQil6xIML\n",
  155. "n6k1G5mIn3JIf4jdfzA5VyaaFdd1D888rri6quXOzZ3v3qwr0RMxWw9tYSyMG+ng0zdGdFSY0qgh\n",
  156. "5LDCJ0NyvKS0BDVqmgyz4iTXEDfugpbZoPjfWR2B3avRI4pLPhrzQf5gzgfRD2KhIDHs+k/94LV2\n",
  157. "JSdihh2fr2PDdl7vrNn05irBlI/yfRvChPigioCd2/chjNj6PmnznRPhZLt6GkswXRnjrF2ny8Wl\n",
  158. "xdo0nK1zQDl3+yG8CdqxDBQh+mITS2Ou80ntloHXpN+7nK2CO4mDqJtiPOq+5mdohP38crT9cloD\n",
  159. "7Zpd5v/M6OqaxCBcbvJiucX1EwGt+oaYH761U6+YB7BoRvQ20OSB/jyzlaliyLOv9SK+N3T4R9qV\n",
  160. "/QrwN9E3PU3cGYHOjHF2lppr+Fit0W9oonCC8j19W0UWmhsP6Iy6+E29HOwjnYFyhVQrJSt/t3It\n",
  161. "OpnsE1M5w1WIe9Zv15iyNL+Jali27v3vwSlQV6krbs1huKoGR/9+/kJ6DrJCL3/84KLu/gMY1b+v\n",
  162. "q+gfjpolgk3bHbIsdc40txZOuz3EDr50mKABZ9sw/DNGD0fRAAABu0GaImxC//6MsAN5W5AC1Z9k\n",
  163. "jONX7aW9WpGN63ybTyN+1mZ6tsJ4v0rp5IzIx9vgL0UxZowMLJSqQlRX8B8zx2LzxEoKfp2b0BtR\n",
  164. "bqU4ncQJGa88wdxNJD/i2WNxH5Kb6t4YKaQAnfTzDamUP5PRWFYAtG4GUi+6fsjvh3WVWBF0sjO3\n",
  165. "BbS4P1emGFaKWJObaM3N0n5s5wnhaflpx0nbFaKBuk8Z59QIPRfWVxTMqegcs8r6ggxx1CwTR48b\n",
  166. "NBAysWRSiC3H7nH2K34Qd2guHSLCZgJRUTVF16e5fofj5BvVUQ1VQmaMykF43El3mJfWkV87Te61\n",
  167. "SynccnLrLKcdoD1At8ak6I0+o0RcHdmN6oLh369Me676kVkmZm55fkPp2CDJS+UoaSzYNX+H//IN\n",
  168. "W0WIOkolkuA7i9m8Wmh72Je19QheD5uz9LnIAoQuPGtXpPrFSWqnZLQgBj/v1Q9IbeOYTvR/Xi1D\n",
  169. "0G/zu5BfLkAzGlhpV+2IXZM4ISlKOCqbzo+efFGEIllAHUnH0iV4HNjAlc44In+RvGNgNCmBL3o4\n",
  170. "YgDqRnnxLyPQiNuV8qFBbQl5dFURvuecCBriAAAAlAGeQXkf/wBr/g1SaJxnukaRHUHqig0Aa0pA\n",
  171. "yeC/ZLM8noFSxKlvyXsnDPxOK5JYGcrhyuqU6gEVoTXQ4aBwAmroXXQCAvtof7HxVsvxbZkf9GRO\n",
  172. "nxJCLY+MVSBz0WDM5Vo+6LV+Tv++PxUeMgn8zOwdLHJwGC26j13ZPYz7Nqp1DKv5n7T1m4BsVtJR\n",
  173. "ApvXxNG13ZUAAAFaQZpEPCGTKYQv//6MsADePbogE0op6qDAEpVNoXRRjqQaVYBg5lQU8cCk7MQV\n",
  174. "7MRPfgWcrVJEU/ohHAV+BuWLbCUK891FI+m6H9G7cvg3/YI20J09QoVXRi6nmeXCFg+lCzNA/rWJ\n",
  175. "QHxb/34tflE/IljGcCOVtzGGl/rf4zEo1XClDjb/uybfQ4+Ma9vuNYdN9eHQuEH+ZTyXIv9CBgGd\n",
  176. "Lixyo9n8gOlH19DVstyq5EgilxKQmtNgAVCf1phVwfopkTYCIk+vfGAvIz8505pwbo3e5a+ljEGl\n",
  177. "TW9GEdKllo4QOogMBeQj1ipSc+hc5RPX/VRnh1eRBrWMgHqxRIyjirsvH2HJwTI2mj4jsrDEOp89\n",
  178. "r5SEAUn0e4LkGAOrT9llUGzpJzVQDpzZNJnLxd8JyPia5p6y1w18etrCGVWLlgr+BfZgv+wO8725\n",
  179. "0zfvbKhrAfARKOLgVdHlQAAAAGsBnmNqR/8AaXH6Iv9lxjAHcTkTqLwXuWpx8feqhKftQu7jYK36\n",
  180. "2hIYFnok3kz/bGw1qyLou47dnZWjCaMJteGONgk7qYpsUDL0lhaw7sgyWcO9lZKVcSjjshDAm+5R\n",
  181. "z4bRd0sApzIf58gkOQAAAPBBmmZJ4Q8mUwU8L//+jLAAz12CWx5P1MSxp6b1BAQcbeIL4mEHP0i5\n",
  182. "PUCXLxgo7AxlwadAuXxWDvotMh+4F5g6moXUfRBFKPKO0pJ+0ARHttSbJjGBi4npdmUsnNqzrj+K\n",
  183. "cpSZy/Dee3BVBo7xGH1tWzuZ795GnxeBN1nmdD9rc7Vcy1u4GNc7e5WnjJnSErk3RrpglMKCKB21\n",
  184. "9Esj69zTm2IJabqm/KJh7kYt4rRO7aVwyRSnQSTMjd+FnS7433xEh6YJFwHf3pfQUwlbtyCxNt0H\n",
  185. "TnflUqQvHxQuD0AUDAnfX7eJNwkCHAHvoO0yuvEAAACIAZ6Fakf/AGmfouc/RmXilHF1crVBe3uQ\n",
  186. "bjCItj3knq5dOljXvrmftgk6sSQXpxPkTub7kMLj5R+ull2KHKpVXpaSDnMBMwjp50wZgdvC4/dL\n",
  187. "medlDollZjX5iBUlQeDsP3bsJcFxVhThJq4AuI9j8eoZNmpNaqcd0ITje3wKeLrklykv2RjDIQAA\n",
  188. "ASVBmohJ4Q8mUwU8L//+jLAAzyuZ5nFcBvL/mgLtXSS7fgBT2PSd4Z/UtzJYpVTf803Y4Y3kuKkw\n",
  189. "vBKQi26z20anrdbYInRgiVMgPc5VjF2Aw8kIwC1kPA2HN/oeJmysj36g3ds/ckKFreXNpgifAsp7\n",
  190. "SXeramlxLxYbF6ygtPhpbmgTwpOIKPnkKO6u6IyUEsMs9YmjmoszbuNo0YfQdY5hedt418/R+NKf\n",
  191. "KCv5R784Qzg8Z4AHm9y52eU2LfBY4Q/CyyPpy4AbDnd+jfSooryMuO4tBWXE3ffBm1tHrsMPjrDY\n",
  192. "ddsXijYNUajY24R3FqVBIG+rbhYIUZ1KN4JJYoLXizebCV+eL+ZbaIEU1dlDRhV5Tp+LnNqe2Ovy\n",
  193. "CNU7OoCqKdK+gQAAAHoBnqdqR/8AaZ+jmb5ly2fLJY4miGdTPAu3RNknGA2y4lmY9eZ0yYchKOCc\n",
  194. "OV3ad7yI1dWkxbQxxJfsFjIhJQD0qOsZynsq2zTmMGStRMQhnYXIsmN+DC8WyWbIlsiKGQ++GzBO\n",
  195. "FA+eYZDoZApIdu3EV1kEB3ianjawgAAAARRBmqpJ4Q8mUwU8L//+jLAA0HCc/3PMJum068Pe8ZgP\n",
  196. "GU3njQpS2jUa+vZe8gw2tpnZAaI77xWWISaUqrgVtfWODkb2711NpgFOEIaVLJ+rr54qMW1TDKuo\n",
  197. "Rpx793c7FhiuR/uzxVAycqKcOIK8Bmayc4rrq9a6yMqjiB47ss1rqZdpyDTC8MC1NMGT+8L0reQ/\n",
  198. "zBCH05yzL1TaI/plGP+rypSw7pe4Ebdc+MJg34Bv8sPf18BfxV61cXu/SPkDTD9ivv1jCtTHH2Lk\n",
  199. "3BzO+kdsTOMWnBkpNwX4OGPjFGiu0VT/VuCIX7bsTdu1vyQyAHMAULcR+tiQwcgR3Bjn1gba4Xh4\n",
  200. "iXXNyf4/MuGoMrOGE28ht2AAAACCAZ7Jakf/AGmMPlRfgZSxhmKUMUknhdQgXWMS9/IicqcQZLxN\n",
  201. "FVJR/CN/VxYBwONCqcv/s/jjDJDur2sLLigJypwAmO9ale1/BS3OovACZM2VFlWkrpp28P3En44k\n",
  202. "pkQfVJ8zm1RUzloZT8Pm2ODUx+PCyfMEIvOjEXc45eFS1/nDQQAAAPlBmsxJ4Q8mUwU8L//+jLAA\n",
  203. "yl2CWtOh97sAoWANsWG+9O3qhNPbEh7OiADzJipgwYjdureJK6Jqnzb5OZIxwR1Na8/v95JjKICY\n",
  204. "xnHAWPVUrqvke8piNPctax/qv7MA6VgGAepyFGq1OavLFGWnzaA71cIG8tNrxz2qvQXvwavrClcZ\n",
  205. "9e4RJ9wAtYcPlhNcITvozj30ZSK3TVi2SPzV0T8kPYqbP6kng0kkXv+ORgwOxj//XBoTif1ar36u\n",
  206. "UH8/msS60F1mtc4J66TXXU3zf5MWua5hG0XFQ9uUVCi4LKTbsj3rz9fE5wUstLqouasVpoii/iLj\n",
  207. "+LDr0gwAAAB+AZ7rakf/AGcfouc8T8Y1Tqen48z/Jv+mbNfe+1CPFTsHP9xy4KXO9IvhVU4at9PK\n",
  208. "puWk8cclgln4E1Dhs2uFdhaykN9a9fj+tsy+YBuAE1dC8BZswnudU3wJx8tYBW+hashi9pslyfDn\n",
  209. "vuRAmv0Kgc7PsLUSHopqRV+587YIAAAA7EGa70nhDyZTAhf//oywAMosOqAg9Mec39gBvx+jm4Va\n",
  210. "ehUvap/MOLMAfbJygVNDtFM6/biltOYLOxeTJBazzKn+CXF2Exb3J3+ywtXoEvzbDZybiAvTNQMp\n",
  211. "JP7HL8Y1TGwNmxA2T9Z4/UrIliAJ1lmoliLrvl9BaPx0gVkTmiwiTFV8LrQ6r17VQS8m2eA6xRQB\n",
  212. "8qEnnRsKqWQ2SwI8QanhXt+fjAvWnvPUiCKKSylki8EqrL/4VSMWaotww4ZDsHkWI8a8LcJtnYTV\n",
  213. "Y2NZQwfxk4vFm4cSp39GdGoAil9Oxnwo6aOIMa6Rmh+RAAAAiEGfDkI//wBmrLTX1P3Rah9R7W9C\n",
  214. "zGRi3l609gtJMdi0BoZXIRbUBiEtIumvEqC3LC4H98lZNlqrpjC+k4xDIfd/CdWS7ZBU19OK+yHi\n",
  215. "VljySJvEVionHhLEzqXhf8dL8HiP/lMx121OfZq4lneqUvwG1810ef18gJHX33LdZHg5NJ0LdUDU\n",
  216. "wVEAAABtAZ8taRH/AGc6Tp6ec7j8nszCC4k0cDap6k29q44w+CiWLVpkpANH8Al5zX5LpVnhnBxh\n",
  217. "V7DCa4C5SynyFhmWljtUOkCtiMhlR7VzAAJnGBwVxpdpiSsql7vHCVCAHBw6VpLewXw58viCeTYy\n",
  218. "0QAAARRBmzJJqEFomUwIX//+jLAAyixGeZxaipgTnonTfa/7ThwTsZtHCDa/MLKEVbg2ZKVLy8h5\n",
  219. "b9yGRAH2cwDguonas8rkXE5PtzUA1JAngNIc2jgyFE/J8mYnRiwB+lxrWlVy9xrYzWRlcfhqfc5Y\n",
  220. "xISKLTC1McxM/UIOE6wKRqjMrdyf3w0RdCxF8e/CIsFLg1WTonOYag7J6yf7UAVGMzyRYMSqn7mt\n",
  221. "m2B/SDfPP0xFZPzxRxkdEB3ybiG84YvtJSPCQ51uurEuI5qd+IYSGX9ybtiL0fWUdIvLNIhtgr8g\n",
  222. "3rcNWU1PTRH0okZJyEkf/QFTpiJTApKciFGmMd9M5AYs47U7Oh+9gn0AC+uX9HJFsFpneaAAAAB7\n",
  223. "QZ9RQj//AGbx+tI8ztfnR3vHWD1MRd/EIWHL950SS1qEVSW80aEqrTcwDroH4I67F+p8m5WRFOX1\n",
  224. "tbQQ8H+0SDTMv/0oDH9w8OQSxtQxkUXUc4mS9EzftSt01q2SIyWhcSx3w5TxRnpCrBTkP5O8/VDP\n",
  225. "NUQ8Prch90/wAAAAewGfcGkR/wBnH6LSfZHjPKREeR4cjDa/Y273RinjR8QMJ3YWZfUs0ztAi5TQ\n",
  226. "1OLIANKs/ZZsAYE7RhSKpiW83tD4RdanpuY02S3lOmq6vDahR1ip2dxTXaX08U2hIvMMlSFbzSqO\n",
  227. "FkTJTdrcZIqos25aR1rhxuGA2z8ekQAAATNBm3RJqEFsmUwU0TC//oywAMtwnP2qNna4gkc9xBPy\n",
  228. "CGO2kBroAX6hv8YaXzQhnlEsc0nhQvdTqgMUxxt38f/9smHFAoOz9q6iu6cPWKM5ABZIbHQm2Gao\n",
  229. "yn2pJ423b7hueWpBxEP1xjjzvrYavXHXJyAS70ToCWc277dWyf3lVdaKOjbuIMe8cTLWV6VqpBqj\n",
  230. "/jeCvyKjJpVnCgWNWCKr2jlrmO1bfJkCPYmsQU8a2xM6mR0mNNbLmC5Klvum66jC9DO56VETH7+E\n",
  231. "PbhtJKrByMitDqHY6JLtoItcIOVsN4L/cAAAJA5G/GLCOlLMPugtH+TL/Ly1PiIVvNxddspU+QLX\n",
  232. "ZDleKxdNaGgGdMORGgWQaxYwHgzCKtVeUU0haYww//PhwzNU1YepraDwvCPMeFBwAAAAfwGfk2pH\n",
  233. "/wBm/gAZ4xEYwLmNkXXcMNL+J0L0v5ar1qkA8NPH+Qoml81LRqAN3k+1f/xTovgsduzJWJ+e6ZrN\n",
  234. "VdtFJ5wRh8WTogaQXPQG7NomJ7+lLd+aPdD/56lBFQENwWuLl5V+JXy39P3GrerN3+ZMunB0zjeE\n",
  235. "m2ERFfF+caAAAADhQZuXSeEKUmUwIX/+jLAAxV2CWyAm8DoIAQQ+DKxc7PlO7inbdTVydF9+aM6I\n",
  236. "ymNAGmnTetlH3Kfn3eI/0qCPMjUfnC0ePl/NlKD4jsTCX4YGDFjHVTEr9k4PqLQalpe+RRcpOnLq\n",
  237. "ZpoDJjcm4435uc1N2tPgBfUbpmHJWk8kPNkJxgY3xdGP2FwiWHbf+i9/Ett8vpyNE/f/hcJOimo9\n",
  238. "u7lrW4O7YLbCXjWLNJ64eVZeU8wf9WIZ+TlnCDcdOyyN7bfyOfp6Lz4Mcf8gXYgIIkdkLCbGBCeB\n",
  239. "rMOCF7woSCjZAAAAhkGftkI//wBkcfj+3boxoVhbOTlgEI5+GLXHob+b0rUyYo+VCptSljWirc+D\n",
  240. "XVIHzGhrPMaeKvxwNT+vg7jxD2TA6OXyrljV07d4BrmIox7+FTDkDPkE1EyTGfz0G+Xhi5uWu9tA\n",
  241. "B9ABUnw9vT18TWQYwywvm669txUkkCvG53stg3Crcz1gAAAAhgGf1WkR/wBkn6Naa2+hyzBWLBny\n",
  242. "hWXCRVmjdIoVZsigKzvNz0wwhOi0IjDT7uu0PxIF9tcMf6TCT4n1PSgYf2dIoD0jOwrZXzf64SIR\n",
  243. "jS8In9S+tWGcA0H8vf0nZ0VsFmNwRwo0AiByZcyaLZhrCOOM3UnWm0u0tJXRXX3sP2g/6xjhYyQh\n",
  244. "AAABSkGb2UmoQWiZTBRE8L/+jLAAxSud9sAcwufAJwxyVXG8HFai5swnUKdXgIh1MfMMCnpH3qCo\n",
  245. "jc/Mpx4FyvkHUKzVd7X5XdJjG5w36gGPqCFOMvKP47RMZlYMbHTAUCX3AfKvH8pudkcpno+qN2g5\n",
  246. "lJhwVhp040aP3/Uo9beHBHhKH1AebWawzBEBa+2qcAwuEBYTzbGbEEyKydemBY/P2Ld0aDPdNLr4\n",
  247. "4bTZoG8kwmYEW5Hb5wdX1ueKGbgYttCl0P7sg0S72t9zx9JsKnMujShpzXbL38QYSEUTzpYiuDP/\n",
  248. "2W+8+IjYHan/hWZXZu6ukkunVo9QiZINFK5/v9355GiilawGKRhcETdh54ZcXbrX1akxKimwFu4V\n",
  249. "RSqA6VRrz6YjZZCJ2P5HwMjF82zbLB8Hlk9DNb6kfk1mTyFdSQ+O2mlXXr92H1wgYQAAAIIBn/hq\n",
  250. "R/8AZJ+i5zxPxEGwS38OheiUgTkTE+R8pgxq+AYPXXTjnS/F+OxYQ0r95GzO4QS0/RUgl3LeimwI\n",
  251. "cOm1xJxnC9v9WVDYmRRfB2yGcVBI6n7FrZPRRYi3brOdcUiB1VoxIfi7tmnniYgAUEa3Hj+gSJkD\n",
  252. "E0A8Feo9Ha6n+aHAAAABPUGb+0nhClJlMFLC//6MsADFK2nDZ4MgCN+OCiXGYjBv65JZl0NrPUzS\n",
  253. "bNYhvKElsQISY5C9geeBU6VRMFiAt7AzLt5KB8GiPxrlItfMdZwlWHkP1jdNWpzk8T8lHfbhEau3\n",
  254. "W9OATZJ71qOqqGQx9MxgEWzocQNgKdNxg6idrCk4YCcdc4gY7cBPEM7P2lEr4gq4ruqbzDMBEmnS\n",
  255. "6EDTleYgA3/EOgysu6BnnCpCGaTmL+1I8rZ10Cn0AX2fDJKQc6Af/BbAIwThBzKGSGkm0O4XNRzg\n",
  256. "+ZN9VgcwjaW8k8Ik9lHVkq7ByXZjZ626nGBacc3/xnDamii6471gRyagk8rtQMTKxFPTCUaWUwLf\n",
  257. "rLa7HzQo4mztj5TdVqzltPeRgxTzruku2fQBNYzylNOLZoeYaJpMWyJ5flNtbpKBAAAAbQGeGmpH\n",
  258. "/wBkcfj++BVQaya1unmAM24SQGLYgpbJ/PZXvJDX1Pq6nwBLdE5uIVcVTLX25cqOikBejhs1w8rZ\n",
  259. "cBjH3tCalFiZjCppv1w7GcBtRoswKiV2c+PMDuZDi3w78XjhJcWNX3jKGLs9swYAAAE+QZodSeEO\n",
  260. "iZTBRML//oywAMZwnP9zzCbyPeOvoPc3gsYgBm9SPfNSjIWw4hknq/u3UW4wVyWET7EBT0hgzHcY\n",
  261. "384wCI/eBYEM38lervt2IZuhDX2ihiT0sIgWX8LapYCOluV+K45YklhBiupR4u6aNIAUIF0oBU52\n",
  262. "8M24qssufMZtAsIEbjZzsgV1XAS9Zan7SXF+QrmW6k4s1/oUXsq3zMKjNcvGF8/XOGEmRj/Mg/sa\n",
  263. "byfi7LquYstmUadxizfEB43kLpQTy3DAAAkIDNGokRgHXMhFMZDINLmy4XkhknH754/orq2mNona\n",
  264. "zKhbNW87KFzKKQa0oZDkieSYytTP5MHMQsxbULvbTKw35v8WAJVUH6R+kXVipFCre8ExAJ+piYel\n",
  265. "Y+XlKBsGfwgvuwwQ2fWmVN7/nTKv9JbTzg3pAAAAbwGePGpH/wBknl6sD4fYkpQH8jm4I6jzgruo\n",
  266. "ORlYkhm9UFv/NKnqlj3c2DeK2zM1zHQ7edRnLsvs+gzFPi1Vne22RXyyIEhw1IfivjYc35OAV1Ec\n",
  267. "aB0YD1BieHIwHK49pHbMI01JdH+Bex2clDv2ZQAAAR5Bmj9J4Q8mUwU8L//+jLAAwF2CWtOh1ub7\n",
  268. "08E2DF9zQAsI8xvkygAPu95HTj4dAAADAAAUAA2jrTsXGe3F8GPROpqHePWbCmPoAAAJk/yE+4nh\n",
  269. "eyecOMFwmBRqNTrLmqU4dXz+u8QAMnWuEw+o/xHGJmxP0CffiD/YmxGkKYbHR4sfGc2ywTA/VbBl\n",
  270. "vu4HRuuos/awNNDVlC3bieymeBiwFQNh3kDmoHXf5lhVEZKmkWR00/0+v78L3CcQuNDsdCFRH6b2\n",
  271. "J3aFYVmLXdVqjpyBqjv6hnHcsuaijRtyPhalVPxdXFz2eK4ftRmEsjg1XOsSv32AASWob23nLFlE\n",
  272. "VTFVkweUp3B3jss63TtfrKTKozXfkT6WE0WzWfihIcbQAAAAdAGeXmpH/wBiH6LnPE/GNSOcepEH\n",
  273. "wbqK+4Ls6s5j81WgT+2cGLCiFzQyDZ4wB6lrg82P+F7JPSU91LBMFXOqHvHRKchRLaMmhR0CV+0b\n",
  274. "p/eWL4b5zpMYKojMAajJsBBUMiQINZlCvJnyOelqK8kVO7udFLiAAAABDkGaQUnhDyZTBTwv//6M\n",
  275. "sADAXYJa06HW5Z/jbKr7zOKePKGbtH3tggaMbs6kqSm8Xge/u2M7ErJo5z/cn+uJFmQklh13hueU\n",
  276. "UnQtM/ZHLLhaBQylSBrfr1SLhpF/6eMZN5qZOHSDy2F+YBj4gdVvEjelZoHRqdMNparRi9NvvLsH\n",
  277. "WR/m2g9n7nmBvb1YYyo2GHT+4iEsSJpEvhzMSh1oy9C8wD2exV2yw1fKsdBPNbCMB/2DyqOC1aNS\n",
  278. "UaSZ5eJGtKsRKs8EbtDBZjT4WcSa2JPis2gBpqt8gjIT7bVNw4Hmjam4GT4g0mbjLRSIuJQMJDFr\n",
  279. "oD2ZNaVkB4zwCSlcWd8EvRPEfC9U2mKWhXEJwQAAAHYBnmBqR/8AYh+i5bXXVBjYuLrAWNnlGUqv\n",
  280. "UHDW4J2kYmLeOU/n2c9KFQQOAHRcqGU2HgpAgoig14Z7yRalpF28/NXYbRX9rgcVAAx3Xy7NNN2S\n",
  281. "ec4iqUe7OOVUBO4PV2XAxAtYi9cwtqjjTuFWE1xILmosDbuAAAABMkGaY0nhDyZTBTwv//6MsADB\n",
  282. "G8ID+xS3pRKeidOGzvGVkTUwsHpLpYZUnrxPeHZzBeBCIzqqxTdIA9SDBf3y3GDENhYhCCCEfoMY\n",
  283. "txgs8URx16Iw61zSTndDehhVv61E2U9OoUx6EdhIdcwZiP5VA85+7MePS14OPlJOirOwah8WpC9Y\n",
  284. "T56TdDbq7rZuLvCLAZc06dO1qZkAAGieaoA/q+M1n+/t6p5SUIBTVJOTcHcSqXzZIKhe9rMe01+3\n",
  285. "mAkzuhE1orxxf3dvqneTjrOpaxECvOMpIMvEYvGVjk0l2quqG4sFWXu60bkwgJP66uI6eQdhNhdg\n",
  286. "foscqfXm6uTPKVP97wPV0l53kHYAflE5Uyo9wHUQCcQv6ng/yiCzH1Sl+n67JHOWmo51xU8f6nmA\n",
  287. "IFPieQAAAHcBnoJqR/8AYOK7SyMywir+Itm5xEpxRs4po/q52sbrBWb+9Zrd8lIQXnKihs7IDUnF\n",
  288. "8UKZ6MLdMFGVY2+5MaXlz4EKEi2CG+WjWrvYagb/XTEMngt8f+m+EHz/iFPz+t+cQ4XYTusUf7lC\n",
  289. "ahvrFvNMA9IK6i4kYAAAAP9BmoVJ4Q8mUwU8L//+jLAAwARlwq9aXFIBlD391dpFJ/vxtS3qvcz1\n",
  290. "i9+Q287tpBZchhDtY9LfQkMvLABpA41rMypF8RzMuid9ufO0wLToTGVpeUkm4Wxyfa29lsclUPje\n",
  291. "LW8m3PXNuqg6qYa2MuakMhv8tiAKEC5gS8W92oecXnjrgFa48ewB5dkhVsSiiy34n540jH70im32\n",
  292. "5jiTWtEju2VOdpHEDZKhXHbWqPpl58t7akCHGCqYSLUIER3PJlVSdAMUC5E2Q0aZOn1XybikQJ4n\n",
  293. "NMj7GvVl+LvAHUPUTmcQyrqtdRFfsh3nKlPEFP+5P/pJgT0HncWsD+WXPoEAAAB1AZ6kakf/AGHx\n",
  294. "+iL/ZcIinCk6382scaQvUhVbx14e+hhQu2Y+UlVdDoCkUDhi4H/K7D2f8g0yfEytWNqi0I+QzCrw\n",
  295. "DPt1SKUkgAT/7FWEv6kiV5Yt67+Qfyc53r9XmkpYB3OhRZc4k6x0MAlRhBP3iR26pgXBAAABFkGa\n",
  296. "p0nhDyZTBTwv//6MsADBcJ0jyNLdhad4QsLmuS0qVndOGq2BZcFzsAFdimeJ6gZyi2tFsqx4Amyv\n",
  297. "+jXRHCrOKmrCsjPpkXGSdNtruhthHi4MEYkrl59J5JG37lTfzDXQejn4KZ5wv6E5Rk5iyltxaFFb\n",
  298. "iB489pFG7WhRairCa1Br8gD+s+RUCsDXZX9JAXEMbQnw34d0vG8fIyKpo3pAnIawVK0XDqNwJGlH\n",
  299. "rj9ti8SQaEbI/AUdmVXRZRXwn96a7l8oUAKJfwjRhuIsm8eUzAAAAwLKzzjGYuQuqvms0uYgFIsE\n",
  300. "dDy4AQUnyyHYMLZMuLAeqP3EMs7Euw3PMCJcnZJrAzwpg4CD5xGbkjFMk7E7b1khAAAAdAGexmpH\n",
  301. "/wBh/jqdT0wocEkutG84Tzxeuf6DIwMtVTMGKtpC+gbmX0h2eR/D7TWc+y4xNZq5/xf6NzKtq8a8\n",
  302. "Ao6IjaFO5CSfYO5nj9i8G/tOEQq0RVewxprTxnbeRsivxntK4MMq0QEloVAfb5+LgOAQyog5AAAA\n",
  303. "6UGayUnhDyZTBTwv//6MsAC7hYJa06HW5vvTwTJpahx8lmg30X4SWwmwWqkMSWgu8czge30Brdev\n",
  304. "gYsAyyJ8JrZZrWt3YdsDbQSFxbJZIx+sDT52ITRC2r5D/s/FaMiWC5eBu/9/Hrd/VeJVEW04FTt4\n",
  305. "czp0JEE8Q5nk3tlYrQRN0E0jPqYsHq0h10P7yPN9Sqo2jIassUSZyqK9idd8zirTWMPsq1DaoTbw\n",
  306. "iIgaGIa94fXlRzhq1mvAp7thznFT798fAgRackIJCmCjc2FcF+pEF9N6glT5yIGUdKDOKhVal8yG\n",
  307. "fRAjuoaYAAAAbwGe6GpH/wBfn6LnPE/G86E+YVKQFhUpXYfD65AUgIZ3S2cQuBDW6FD/O5w2RId7\n",
  308. "i2UTAwBwy/94UzALeSWop32WExzWCUKI0da0h+f8dEZO1Si1TZ6kpbXDpj/mn37XmgobB+I1cGtw\n",
  309. "Nldh9OQasAAAAPBBmutJ4Q8mUwU8L//+jLAAu4WCWtOh45ADOIGx90sy5YPzfuB+sjNa2WA5rg2c\n",
  310. "pqB7NhUWZYGanOtE7TfY9UA2kxK0+BQjM4WIL9f2RjX25byejaUSlcW9BPJZMa6tbES9LBueT/SK\n",
  311. "tB4+ehg3xqxwB9+ZWflts08pfkqdRWTWnHzuNYa6ePvo8mJ5euv4+8v8/pCdK5myuaha1NcQ1skp\n",
  312. "OCJoBcBGb/jvpE0C7Dt4QD1I+uHo7oOjCXZM1p2Aq786O75BI86WG/cPxDOKwvfnxFeAlHHGOi79\n",
  313. "uq2iSpiKfo9LN+VZTLSszVLNVAReDk0AAAB8AZ8Kakf/AF+fouWzdqCL2GQuwpPuTrNus+zDez2l\n",
  314. "PtRJ1Yp4+GhzX6CllWb3yzvh4C9HqpN+KZy/VJQzxkl/ato2/NKO5awAfhVow121QCDjJN3cKxD9\n",
  315. "xScoxlPWuiqJy8bnfSoSrFtnu6Ai3bOsD63WlVi38WAvErkFvAAAAO9Bmw1J4Q8mUwU8L//+jLAA\n",
  316. "u4WCqspJNrspkpvJTrYAqKIFb+dp6jXnv+6dm7oqsT7uXIdt0Vmj+aSoH2D70k3wZpdN/0vLWizf\n",
  317. "T1N4iDPZAm8+0wmp7Dv6/qT2OePYs31TC8RUgM3cvB37Z/bbAmZsEkTpEheJoc1Ka4RBV/dNfZdB\n",
  318. "7bXxLgrhEGzl14WVlHWSCRULaTkvkYJ5s0C4fnTldWoJWf0FteoeDVV1IQdwRgFh1fdRamNs0wEm\n",
  319. "ODWhK4Fk/1LvtkLx4xadbg1iaSwTEOMqAAV0Gp+chVqqkkrzSkuX15LgoXe1iIdB5sjVOAAAAHMB\n",
  320. "nyxqR/8AX7pOnhhPW57csqCfp+ayDDZDf6kLZqfAkY3cHogUFAy536hq6PwCwTacBWt6qzpYSQkD\n",
  321. "c7O9Qq7ZubCa+W/32DTFjBerSgintkZ+gatAVd6nxRpT4oUkAYFSjJZhZ2u0TAzzVbvSlDBNoqU1\n",
  322. "AAAA9EGbL0nhDyZTBTwv//6MsAC7VG3LnBnrhLexHwObxHvt5jCRSmEU8IJqFJh9X292kj/9IlhH\n",
  323. "phr+oZvOqwUys32ZbnuD8ALdtKGDtJBydWaObRGHSdWjEs+sIco3lEqEzlgGDDh+IL98kMzCAVTg\n",
  324. "WT9s7auYMXnliHyr+KJKAnAn9uIeXdz3JKtrWiKJn9Rkv1azhIIjSNHkPKCm4X3Txjy6k26+WNnD\n",
  325. "Nip6T+SvkhkS1WpoF8/0dPOW27QjVw4aTQ4kl1LVG8FfauGI7BkWHiC2cD5KL/aFZ55TI4Csx5H/\n",
  326. "IvesQcBNlaPbcvLgFnnLcfysgScAAABvAZ9Oakf/AF9x+QdKWKnMioPSoxYEryS7ZpORLd/pF6/r\n",
  327. "cIzYNe/GFWD3HyBUoj0SMnD85mfu4/pqFIGaATV5liRSlDBcAF47S7ToCfPhqpbgK0f850jc+ARB\n",
  328. "styOWZ3HJJaMTHhcfIi0I3dOCZbhAAAA00GbUUnhDyZTBTwv//6MsAC8cy5BlPR7dRMFPApdl9bW\n",
  329. "VDlueZOjvn0ptVuDIAI6Cn6iH0FpHZ2FzROBOXZeCUGceaH5pg8CHi/aXHzs5X/T7Na84aUjmlel\n",
  330. "1AnGaCl21M8LtSGhgOhyzsTv7bI8T9jOk2AfBH09cqr+f9YmPDy2TVVPGsQUS225sHfyF7HxBx2K\n",
  331. "M8k8SIn4H6DK5YbXps1eXc+tH2JNTfk1gkbvBNAeTOqMarZcmnm952tIO6flGnS74wQ5dkKP4v1E\n",
  332. "PK1x+FqDDqIAAABuAZ9wakf/AF99/2im+GNiAjFxmMxfiPE80JqTqkMk/C3Bv4O3XTF5ORuhuiim\n",
  333. "QSjCc4Ed9p3BYdOfLbxMjEDpJRGWvVYfAGADQ8VnQCrEg5ajb9JedaKwYPJ4A2/T5GXJqf8nYpJb\n",
  334. "j2A55b6N1OAAAADzQZtzSeEPJlMFPC///oywALcFglrTofe7ADnbrLlUsSbpcVUY3uxzG8M9D+zf\n",
  335. "MthoM4uhwC6qMTU5lvAro/wWVvR4ebc9LmNSo9ehaeqTG8G7xiTAmW4t+c74hXH5K3WBND22pU83\n",
  336. "M3fN64hLJ4RqnsLiuj/y9X2rkq5k6uoMcVjgkqgffUWzZmRMwG4Ya/QbqPMbnxkttotn8gnYDF28\n",
  337. "2NIbosU+D7m9QfeX+gvcFaeIhFqENoaGG7SBGPoHp1jsk4WZ8w+yXW0BXfGasUZzWDpVYxGszia4\n",
  338. "FWgBH/skiOOkOURzgIUdOieSF0e1/gSQItqBAAAAegGfkmpH/wBdLqxX+E2OAhvXIm4fRNpCkQho\n",
  339. "yMwpnLDtckDY/dpme3OcbfcnytLcFxSFOZFujN7QBy2XZnuY2OkV77t7e8meQQLBLpSqLqHy0Bsj\n",
  340. "+cRYA8fk86DEof4c9CS4qGVCdl9Jf0QpCVlX7v6kDPRWdEsRahmwAAABAUGblUnhDyZTBTwv//6M\n",
  341. "sAC3BYJhgwAsPQtDuowV+zuIswnTS1qyjhKgBWV3jB3UiJYnT3sY/Q802iMxD1IBcG4Rl5r44qpV\n",
  342. "OLcoaELknaXonBsVBNoRnX9m0yvKBBugoVZSEyDZZRIh8sLt/5sv92zoyIU84jUGR6rqIHsf/fHC\n",
  343. "14pNiFcX9awJnrEpHa88Q6zeFmDGLi6yfCeirdosg2vSvYRu4EM2aXDUDsdk8gz0AUZINXCuvs33\n",
  344. "hXmJPbRAn8JyqjyL0LFn5MFV3Ch8cPMmAlXVDOffmWL1ZMzKNE5CO2qRXjQDuOv9cdSy05Jk30Xc\n",
  345. "mHlGL6zQ6j8dOMauXA94AAAAfwGftGpH/wBdCGX9KtnL769teb7H1KDurYkXp2pRh4mYYxzF2DgS\n",
  346. "zAF8uNG7V7GU/z2a/aclS8SWfdbAB+FRbmsmlb+Hi70RWDFAqO7EvxMH25PWQw+2gMj84vnDiZK0\n",
  347. "S/m/9C/ZptNawfYcbErLf5eOaGEd+mpaVhTvJhIztx0AAADCQZu3SeEPJlMFPC///oywALbTeWBl\n",
  348. "7gwBp6b17IVp7uDuq+H4iSdiB6JxLb6g/hVoPRSxddQPlKIAAXUaiQKetW3LzAD8ED/tWH6ELT2w\n",
  349. "KzXB9oYY62W5BD2qX6/WpqVrQiknkRXv7CUW+r8z8i4elnHC+bnzlTyW5u7PbXmen89G1QGjPnHT\n",
  350. "E7YIXSt8pU/WvhsW2baPPy/4TMXmjsu5cF+V7e4VOf1iWls5f3Nc2IvgkDhA0eB4UiE0dxVy6Fk2\n",
  351. "LKAAAABzAZ/Wakf/AF0urLthAzAB51InJAg95pXHhKVPphq4fqEitztmxAV1TicvKK3vKYNOg4uY\n",
  352. "J3GSVT2Q9T0DQRiUw5SMJ7RpwmmG/mdRuZbNz8spHGQbI1FhteC1U12SXSUGX1Th1HPrxY6NACw1\n",
  353. "HZmURoWDowAAANBBm9lJ4Q8mUwU8L//+jLAAt/MuSvKHtZAEENlwct0G76Xb9NO5CW1ukee3biM0\n",
  354. "gACt/TFSWVXPr6PttsyeQa0kckVwTJS05Y2OYBD2gyq1Zhq1EF6zlR2uqt40ZZPX49pBBXxcl/Q2\n",
  355. "MS4V9nGnvoiTNukztLT+lNiKZ0i5Q8YVXIhXL11LpoCNgRTPViGnkOvobREuIp7kPbCqAluXcrqf\n",
  356. "D8vx8VmB2ofQuGws4ob+ckTHgAj0/wMom4dIl0oRITCskh2lswLLa6p5BuSvRzCBAAAAawGf+GpH\n",
  357. "/wBdRjsEXm/XTdOrHrzeC50UC2iwPbf/Gm72OhEFxLgl3aETXMV4JKIHET9LtzCI72+UQCb/B6Re\n",
  358. "9gcm8I7TDTNeS5vVk47Gd/A4SOE9Sf7dklhBg+gM7ljrIX2w+E+1ILhpPyRPAAAA70Gb+0nhDyZT\n",
  359. "BTwv//6MsACyhYJa06HW5vvTwTJpag53OCroAQgBKFx29FgDLhNb1lu4ZCcpmRCapRXAJPhi3ojr\n",
  360. "VuWeE/mmTvKaDPxJ4XHp1PHx88zaGHGTorHP7/jZf/tMj20muYKCxsyFL3wT1hM1TI6GKoMoFYsP\n",
  361. "CTlrpW8XPVzYi9I69GYrT+yXqHScl/1+Ft4OYnxifHoNH4j7Avq9cUdZW7iCz0s/ib4AYar5MMry\n",
  362. "YyRIEPtHV4GVsYxFiktjxcLDXQkTKjJXVsniA+GUn8NlmIS2C/0BaWRcKMedzQ3aj1Un9ta9IdTz\n",
  363. "anJLAAAAgwGeGmpH/wBayOoyPN44eGmrSiLFbmggDxxMtQf9YA2sFzWf9oXAFTZjF6U1+egAnboN\n",
  364. "MRF3HTQ7vCVE4hSfRKglHanQ9bX9p6MRX+3bN19ZQQ9qR7M+k8A48/K4q4TGJGN9zFpQxVgN0gZL\n",
  365. "6RaoZadXPcbwuFRSdD4JJkVZ8Rk9EQQ8AAABDUGaHUnhDyZTBTwv//6MsACyMxsGfdkLqxmUycb7\n",
  366. "9Bw/O3MHgBuvUnw00OoHenH5MQx/Sq5jnBDGwubIOMa6ZeLxaEub1NJHVa7Us2nzXu7y8qaCaCvX\n",
  367. "ZfWLkftOj79DcHxobl9A0fADUbJ6qsz9OKADutFXQAh22plaCYJ9vApkTIQtzHPyO+SHba8OfXEg\n",
  368. "4PGX8/nXs3lRyf+w7XFmf25PcNbPa1UuY5V10BMyFEI4pas+JgGs9SkyHPpKaRmNM/a2O9QmnTAQ\n",
  369. "3WkfBajZao8aKSEj/GSV5hQa55Q/sRYKlc5Ci1l1HChOO7uSzTpwPlEtE5naC4hU69WkyT2MyWHL\n",
  370. "c5tXeCMZWe5R1qEXAAAAfQGePGpH/wBa7qxX/E/GMX4KaXGuzw6BSBFQDCdYl1iOt/MaX1T1Jmph\n",
  371. "5VgCPRvvoAJwz3EqMQ1T/S5bGoR/ahb2FFcoWQnXsQX4bLvtOssnOrrwlCUn5GSCxEjMd6aUTt73\n",
  372. "AuqltnghHFaJYxsxjOOFI1EZKYpOE4nqReMZAAAA/0GaP0nhDyZTBTwv//6MsACyhYJa06HW6WZc\n",
  373. "7bpdv3ACCo4+VABbFgu4uoBtPpqNa8D8kWsI9fTvRnKOyS+Kgu2QxgIUg0AhvAjLedv5NAmVxITJ\n",
  374. "uu1JCTCPhWtWjIGVlF3mfF7SbysNgsrA/Ab8ve4nLDmuKREJDqE1jevO0rA+OcWTboU1VCvyJ5+7\n",
  375. "G8l3z4TxnarYc+H/c5UzD8w00NHBRkY7ad0IcKgkRHszCVwpR08QhYiFkn5dbEVyFLzCQJDH2GH6\n",
  376. "p0h6+RRL47FgkntgAjkanuOKbRIttdNYNh+i1M4yeY0pGXcWSx2tqKdYKknYHCMxN1C7aAITZrjY\n",
  377. "pwAAAHABnl5qR/8AWshl/SrZy8WTvhOSoV6QVGWyC+H7etonLdNoBmzr7DWhP03sXONspbbTbdVP\n",
  378. "6z8gjyPkeR0aX8BsWgR/hdJcHuFY/z57SbMi+Z5/uOHn8Nb4svHeptPB5xwKZ9PWVLDQoj1FHlsn\n",
  379. "WIKAAAAA40GaQUnhDyZTBTwv//6MsACyhYJa1CcgACu7XdtQQQBSe5YinUQLlFwdhjuJAyJcqvgg\n",
  380. "jaKNpO7gXAXh+isgVo/fjtuLcKiJtiGWTLRfqXcwsJgHrQ+dyju6/PaTBucyUSX213xy1ax0kZX3\n",
  381. "5eBkaeFc7XsINeXI91jgb0GDYeLPKz8/gozCGUqDeHDAi26Kz83vUZtHkiHELgMlFcvewRPyfl0I\n",
  382. "9j8oX27nsX5dXO5rbt/fSiUI+dJaRhjYneeK+xr388RN6FxpMQA+nRLURgGOW+DHa8Xd+1DiADIS\n",
  383. "hRI0qHFBAAAAbgGeYGpH/wBayOhnM4KPTEMBQKkvRZ0gY9lMrCiTq9yt42RLJRdmRbeLZqKnvzm5\n",
  384. "pYS1lWu9PsnXn4ELNH3u3WMzunMifoRbjE6QJufcOBPGPgaIQkxVpTGzNzIZQfUXDC+CbD090h/K\n",
  385. "McOyjux/AAABA0GaY0nhDyZTBTwv//6MsADeVZ8K05Kq6NWw9GACbxXcTOzumZ6oiwZUYiKN41BV\n",
  386. "CCRSwmrHj3GKKhl5vhyLe4ZD2X2HFx4prfBczLbsu+UtZMRzzI3QJC7H7xWPYZRgl0+4Hs0voaOl\n",
  387. "/QO89TTlvorlj6ezmLmoaGR0LAnQfUnR4OXxZa8+kUKkjcF3gAWGKU2j2t4F1zB2v4kAQKRQWSGe\n",
  388. "hD99sGrAHq1bp3IMy4ANEEDU+ZeSrbYO9Ixo6Xf+KfOfgZgrR1gyZMxXkOBYgTXS1DuGLMBxpz4u\n",
  389. "TRPHXOV6H8jtd4KpV+6C7JRhjj8WFk+5ifcyfB7FydhIIo75OCOQNIEAAABuAZ6Cakf/AFsGOwRe\n",
  390. "c7vg/QwvuChE1pG31tTvB07lFzkocSaiM6LlRt3WF5NBXn0aCF4ShzcDvb2eyTi3kOTOIL+70P57\n",
  391. "HKicnz3rFUg1GIppioA9ocKop/G5eK3ItzuTqxzfQ4g10J+AI75IY4AAAAD0QZqFSeEPJlMFPC//\n",
  392. "/oywANnzKN9RACaueuTBrPbsWlaRqF7F7eUw6Eh+NUxD3Z+3/WXc1558tFOy1CH4G9GfHgm7i6T+\n",
  393. "2KI2+MX8Ibu2la4UiX4y0saLfx0hvbufCCxCIeOdT2PXksTCnXy7fEWq2NBqBuilU0yqgyLegVOS\n",
  394. "Uxus7mSNXvi8h48qYBp2sgFXQQPqTt6RHKxK3Nm33zDk/CG4A/WwqKu6Bt6XYhWr5VhZtErnsenM\n",
  395. "ixPWh1DoWrXIzeKa4XJ9sMSrxpWNHetsuHhkp9T6Ve0sTddtHWnV1bb9c6Bd+iFtsK/7yK4TCeYP\n",
  396. "4fScUQAAAHsBnqRqR/8AbbQMC5QATtznMoFPy/j/RSj+gmpFoa6Xv3zHTsYFNjQlgKFpAWghKQRf\n",
  397. "vetG2iUwbHSgaMfPAzlxkrsym4jB/3aVqH6V89qsUzfJD/CBHrqupFdt4/kHiqCxMVgcvX5g9TAu\n",
  398. "iOydMz2z+pPwc+ApAqCZ9MkAAAEXQZqnSeEPJlMFPC///oywAN5VaGa0arAAuLkqfqfG835kqg6M\n",
  399. "k9ayH1PwLjwsuizX4+OCLN59eL8NBeOrzatDzLXWpW3pg7p4JyoZ3/0oyAA/eKVWESriAxok2xOd\n",
  400. "jb8nKEMqMSSz532h6inS2QZFOImEH2yP2Q/gY4dTtPRJE5ofJJGhqYre1NoF6+pXDAXfe0/lXsTe\n",
  401. "100Qn3kp4n2XnhZEExDWNPUt+25hp9+nUx5boa1zXB0PL0XgROb7iYC9jPT8RxHsokYDSQXBeNfa\n",
  402. "eHZcT+/STWFh1XDbrE3YHxhd64whRsFSGURLWMy9TdiQ+Nf+Wj8Cud5ZoWskDAwEpq8uG9STWo53\n",
  403. "7/LCFqjzGOqNGWE0EzJhAAAAdAGexmpH/wBttKeNQgAnYq5hXgIhKqXJ/VetB0eArZc0vM5KKbjO\n",
  404. "zJEFgLTV/mo9Y2DuIyTg30TnekO4v2dbUmUXkU1m2GdQjhjou7c1RP4K4nHZM8WrL102HMUjIlE4\n",
  405. "AzkDZ2HsS9ed44JARR3PHezB64yBAAABREGayUnhDyZTBTwv//6MsADZzyhRZnAAuJ+BOMeYMLjw\n",
  406. "E85itAmymwUdqkhWeEOU85HRGAjgPz579RGWQ8MHvRcejfMSdfPTvobXVvPPLLsedGs+yvC4KaUI\n",
  407. "r1HnO8w45bA9dXceWx16SEPztmYj0k8suEhvdXZ1imDUPZzDb6fPQw8bM2WyUIyplBw3UculxXiq\n",
  408. "Ghr2xmS8SvXnX+GPrUlYC9/5B0NQ7VGYvHC27PBvdMXlpZLhfuqaY8nJQLe/2KyWdHt2Vch0aBqG\n",
  409. "yEgmk0npdbDAWWvzj71tfUTtZ7+LF3ZGsKHPVUKXpjxQ9DMxShNic2V9AGXfp8fWi61xlEMrsIUz\n",
  410. "y/P/bHAhtItuX5ldUQgIPf9ulpoSUqkaj2PAU4U+8gw8U+hXEZGPhX3vQMdes/+rXV/yATbnnJUX\n",
  411. "TTeoPxW1IAAAAHUBnuhqR/8AbZKK3xydS0AzY0WmGoRxrk45tlkIcYTP4sP2n8l6ESg15KFaBMq5\n",
  412. "B0PEattuP+pwsGk78A9Dt1gPXn8fdY6iNG8DXPtNfPmMREEP7bJ+8ISdVmOtvj4SWVncYIHQXTXj\n",
  413. "XulxG92kGiyzihLQ2oAAAAECQZrrSeEPJlMFPC///oywANkZq94ngKACTlWdAEfdW3t0LFQmcSyl\n",
  414. "wGdmm6t+nDsvUHjXRz34PVuD33LCaX9PhIJuEIhUZGLdKxNIxoINTUI3YRWQgeggYnxRETR+m5zU\n",
  415. "PU7Upegq2Ev+Uga7UNKiJxFmt9JKB9h3IGKwaWTte4vpG+p4et8TDpXFIcHSIyrMaRtLaTO1AIT3\n",
  416. "BFk+6WvtZWc+geeoYaJz9W1lJ/ZB/OhuywWQFXhJX7X+6yE/8SZe7vYItJpXwwXuBednjgBkrZgK\n",
  417. "JDO7tgj9p895s3JFJYQyJnmeyzF1LNS4xetfgJKrGU+P0GV1n1+B5AJFfOY3N63fAAAAagGfCmpH\n",
  418. "/wBtkXK+TbvPynYkiYp+a1nqZtnE7+9oMv3IKgfs/A7u8uNmwbQCYvkAY3VLEwDul5Ikgmy7Aq+7\n",
  419. "8p2geFBI5huXz4IJSMkr/06L0cGxk9lzpC+YKIi0r2jQZbcQ/oHHwg+9AoAAAADuQZsNSeEPJlMF\n",
  420. "PC///oywANkDT6eSMAG3hLPxojTGt3U+s2vdH8yUSzUM+y6bjLbzj4Tx6xpb2NKCiY9NO0Qyz7OZ\n",
  421. "eQfiI5hDrZ0ro1cX33gI5ewTSGkJM7qO4S+gatN6cLMj8930wfdK9UOGyMAg4D1XjiqrzMwlAK8P\n",
  422. "EXxmm8wM+xORzqQqh2efyLibfTDxrm0wSWXNtcdDML5+slqKAYryhOzYWC2ghHyIQWWIrChGnO1q\n",
  423. "ki6h9gx1KctqMk9LVW1+o1N8IpejWiyAyTrfJHsvKPkFaz9xX1lUvPSFPunFYCoUvtJhLXrTvrKP\n",
  424. "2AAAAGkBnyxqR/8AbkK/Noy3LmnfE4l6zmv6OnaKh0pLg45L1t2RNJuNL85Zcqnm2em+Ow0alHnZ\n",
  425. "A7uBjDsqnACO0MZW27O8hYzLkH+thADZ85K6Ra+KswhuLE2Azm6jqIX//i/qH7X+XMOsHo8AAADq\n",
  426. "QZsvSeEPJlMFPC///oywANmKwKXADa54atpq7c7Rm2FK0Plxv1GO1qJ19QE5n+hUseSEL4mjdID3\n",
  427. "RDHQvRtniMv3D/GXWIEUGjZfK7BhaOE7cmtrmppZzILxRS9ROxIuUo1wWjIoJudkXwpb1/6iSj8a\n",
  428. "s7XhC/i18UkYxgNno3F/B0r+0DT7+lGGWa5u8PQzITF4uAR8GLnZdbyhYHY6ZMRZL2xyNYvX6tpY\n",
  429. "Z8NK2d25L19qUIWtzufVgpRY7IpAfjtkWeATMAW2D6na7P+KIVybxGmzY8Tj66XQdYF9kc8midoG\n",
  430. "M9J27vGxAAAAbgGfTmpH/wBrwV3AQaPiudFYMMKuZBKaEy+yS8J5pSx4HnCtrbCNJGhWwxpt+deW\n",
  431. "mBcd1aOHsNkZdbxUKzwrpWknk08VGai+S0GbBk6X0IQI2u1KNnOHxGQzGFgabKNTsOWQbJLRlAKM\n",
  432. "zKrRcO2BAAAA5kGbUUnhDyZTBTwv//6MsADZismMsALXE5XimxCg627WVfSJ+C5RyDhdye0L6Z0w\n",
  433. "ch2bPcJ+7K9JkphQC6Mjk/T3kzQttDFjTZSFHs/fE1Ttg8Znwtcz31t5pi7VYEEuGxW1uA3Ps1DS\n",
  434. "LhAj3PlgNabOklUexu403k0bs1VczETGxV247PE2lOZMyvPIt0CYf0deHrCQzlrOmFt1SOUVG0B/\n",
  435. "pInGWHvKmBFf47sM9dhlyW7Jz0SP7MjUzJghlMlKV8KZnqTlT3sU69lOR2G8Zwua9kp3SHvzki90\n",
  436. "Gn7DjnWzepvtVTCAAAAAWQGfcGpH/wBsOk6gRGMih5+5U13qYD27SZz6v7aLxDDz+4Zm+g4+OXcf\n",
  437. "4aZzmKwYySVxQdzrNVWdpTUK4AiE4t+aNrhmqXJNEtnUQI/u1NZPwo6edpz/wQz4AAAA/EGbc0nh\n",
  438. "DyZTBTwv//6MsADZisusv6AG2tb4MOkXqTLh/dtkNVK1LiAcbkhfS6MFpOMn1xSrOeHNOu/VDLU1\n",
  439. "W3RlXMCIgC2Le7h4vzmM6mBeZGJEYmpX9J3v+dfSZ3YcYbvdgoSbrZisC7+HwRpZIaZooAAAAwAA\n",
  440. "gRl+Ek5AkzkmFQLRS7e/3HoxOAk+lluRa4Mbx8iA4u6cjwgbNRp9cFw/wGR2jnM/x9MlqRjdMtRe\n",
  441. "mVodTxzUikz1GrmG57czQxxx+DApPcbNhjALzS0khIUnPqo8+7wH57eXvTvF1d/nK1O7F8wqvlIe\n",
  442. "Tq7NmVHfTEyeXPKtDWuiIGLIoQAAAHMBn5JqR/8AbZGrvJI5gBNRV31XOKyXn8KUQsSeRYtu/14v\n",
  443. "7M60KeEBY75pkta9POzVUm3J9kYX+9rlZB5wHU6jD+rd2CPZoWoYlTeigWeYD0L3i6sUTrGWQekq\n",
  444. "UbhJ1Xp94avglFOBusniBp8qRpO1XoyIAAABA0GblUnhDyZTBTwv//6MsADZBYvX4fOABdR6uEOu\n",
  445. "IoEliTD4lC3lExtCJ4aJX3tCrC44J2Iiu8F7T9sHXTxQM6N9Rmk8ybCvQB9KWJR8TZa0sRr/lI02\n",
  446. "hcL5pqfj7WLR4XfrC8TaBvcWdLvD5Mu0P+pRtTTsYo2wPDGIKied6C+2nQD3j9WRZUYx7/fiN2O+\n",
  447. "srZ/4Y+Px/Yf6uNwEp+GhrMvXkWzZLm9QZtGALzzSA5JzR55wkoxjZRXLICQMOJq7IseDzCPnc76\n",
  448. "E6PBbNif/6L6NDP+smjgl22HqCZYpmcM7rB50irBYzwvCpTWVLten+iWep74DZgOkuxnvpn4X0xH\n",
  449. "iEAAAAB0AZ+0akf/AG2Si/JN2jFdZus+ogSatSU7EMH3CeupDWoI2Yk1ks2sg3UUcarOfD3WxXYo\n",
  450. "+p0HIgOQQbEf8jVxlNPnBDzYZrVAz9DJjEuwj+D/eHCG6bHS0i+3rgmmvQBqs3jtzTVUim2eyiXV\n",
  451. "sMFRoXJ1KyEAAADZQZu3SeEPJlMFPCv//jhAA0w9IJYWADjZh2RIhXtZBKEI/lr+7fXj6bzuALjA\n",
  452. "Unw0bVMWOBB1GJ37Yu5yEVibv73IQRVvwrPRKGcg7t8N+hDBA+vs78mm3utxiAjcI67jkx8KbSmw\n",
  453. "rHH2kQgmg+Gx1L6VtMkPFy1BEWf1/EmRJMHNYZYkiFDnRUID0YJjR+Ri/EB4htKpex3VUCy+6cxF\n",
  454. "l0vsl7ZQzrdZobLW7SG+kGowF12gOyZtLgWhK13qfWoFpw4zSEWXfPDArjBW7mqfu0qT2vgLBoZL\n",
  455. "wAAAAHUBn9ZqR/8AbkKlonRryUYXQfmBDirchCb+T6yZXKnzECEWiHzYe60gR6wydeUPE/h83T9U\n",
  456. "hHF8iZgEnhlNkUT4k5T4h5uwk7pLUmYLn3xGbDjLDKiaBKLBx4QuHZCQaOceNbao+TDwQQKUb0O8\n",
  457. "/c+vD/j/DmkAAAD0QZvZSeEPJlMFPCv//jhAA0xPK/lIAreIDntPUBLtY23g1ZG//P4VEWjyf2Tj\n",
  458. "wyNtAfJ9XUZ+GlWWhxBAPa8898FtO1xTZK4vTLp/sReNcduwkIZW4qz5MqTcx7g4brWKcp984Ru4\n",
  459. "vFXiy/vdtYEgIbTiN1FrMnhSz/eyFASvcgBlMsx/y3ACcaq0g6qe4U7pMJjD3n+jcftmnHcpSyjX\n",
  460. "fjQ0jyarLVmmzExsumjMmMPkWt29l0O+EUrStDOPLTA1NPCJt26zT+yffUF2y057YwVYe0yYQ5DJ\n",
  461. "8AM+qcIkCVSNv2bjITlvDJMVTwYJINDt9nP2+QAAAHYBn/hqR/8AbkK/Nou7QuREF20Tgw5mlxjr\n",
  462. "Gf2KTdq7+rfhHXMq8UxMY5zEP+GVU1Weogi0hO/TV2A+e056FfVkBdfB+JwIkFDdUzPvhwU0iZuh\n",
  463. "nGeqwoo2Zru8Fg/UyMzR4Z4UJwX87bJofGEMNzmR/sxTmPD4AAAAs0Gb+0nhDyZTBTwr//44QANM\n",
  464. "TykjPkqbJETZRNc5J4ZbxOIAcyd+uoKmxRRbXUfZIBLkD9ryAKiQniSi4MG//dQpBWO7xKoOpn1Q\n",
  465. "Qn1GQ1q8cv5/dRpw6FWeKi6AzgXkJZ6Q8s3tKCq0pb5tLZUOmwtwNt2y7+9yO4tdzvF6YAc5t9Ye\n",
  466. "zv2AP7gjbwAcTOjAXNkyvAtnFcnUQmrCF/54OUDO0cH4Q7VrLI31DgZIg2C67JrLAAAAbQGeGmpH\n",
  467. "/wBuff9rVvfUt2LUXLF07e96l8w/Gqvv96E6tYZ1KmjPSzsynTym6yoCOCwx4IwSLhhtbdULVlPE\n",
  468. "0+ACrfmufJ/jC8PZFhNUE9gEJGwKWH99LmLGJYuDWI1pszzogaKMdUfL6Zk7lloAAADOQZodSeEP\n",
  469. "JlMFPCv//jhAA189Eif0HEtPetEjNLzmGX6HrvMWpsiut4AE6QdRNsJPlP/Kpm74yOlhiW28S1it\n",
  470. "yegYISeNuJbDOYtevm0orwXjcAATqEC/V5zq9WqQT3znFiI3ownowqsCh+/aJaZf5Bx+8xwOoYAD\n",
  471. "aC0H/9utro2Mf+69Ub4jAdiIJnLQPLPBjKX1gQF+8vjndfPDa1+Jc3mNSofbp6J01Y/H4BY3wmo2\n",
  472. "CftFI2nDv3QVjDikrORSPes8W5nscybO6s1L2EEAAABqAZ48akf/AGvx+P7ybJVMftFlecNwyWAc\n",
  473. "Gfjrs05VIBnAglwgeegAnF7C9sCt7tV2z73twCBC3XpDtpIQP0im4yCgOzNJ5y+NKYyvltO3zlXF\n",
  474. "VWXF+ztdvuVt9MN7/PBUEHdpSTgG+CAIeQAAALNBmj9J4Q8mUwU8K//+OEADNnOXO7dCwj9q0pay\n",
  475. "+YaOYyQjEALGb+C3g3aDCew3QxMhSwIKmMwImeWXhsWur3cCRFGZKa09ebNYp41iZsHhDhSyMehg\n",
  476. "GrAoDarWARUzdEvESd/tWY2mVrgQTu/vn5E7Tgu4oRNNhisVFu2vLedwWb+uXEcs8SqqIPkuPrFJ\n",
  477. "6BLpj/CEjCIUT0GtILWjEFzQScw4dblXA/38+DWg/IBIBnADcgAAAHQBnl5qR/8AbDpOmYffNuNR\n",
  478. "rHnU6MJswIbeKdZ1tDR1ynOKmwIjpKiBp6ACdirZZrzEB+ds+3ZqYKPzAMnYi6nA5HlWBjamhs8K\n",
  479. "H3gUy5ZcNd3+WWUgEWHNWUBAigoU9awJloeFCR8gRrY8YJEFYcreY706/wAAAKhBmkFJ4Q8mUwU8\n",
  480. "J//98QAHvs0d8ATslsGwfEcXk7w6mVLjKefXUz9523ZlsJ04gHGwXbniXrq3vwyqhv+i80l1p9HE\n",
  481. "PaV/vl+O4LN2gxBA3VNpFpJyz07lZdbaL70krIRph23MkKVdsP2PI3a1LW0cJU82agPLO4jF5lst\n",
  482. "oAI6yhiKUp/NpP+M2huPZHN8lP0fRsIhqlKQp+6jJB9dHKhoJB0h90SywYEAAABvAZ5gakf/AGvx\n",
  483. "+iMCJGXR9oxegQHvdpaHG62iRzrHYleykgAP50ML2e961ycwU8oHZEKwxhnpVWOW+aS0pSLkfdHq\n",
  484. "ARMnpfH0epkI+4JLVYxTZdF/XQ5kpoNVT+Fy/sTamIEVtEZV0tHNJ6q9/ciwAAAAmEGaY0nhDyZT\n",
  485. "BTx//IQAMO9RI7zDCwDEM8r2iFxJ6qQQMSNh6o1chPQgcunsVoPcLzBTpfMQWJasLZ5jwAmjYMCA\n",
  486. "W1Hq8mlWSk9QzDeOTdq7CvcdZbfpjuoSx/p8l2dA2/vr6oy6CmRYuLLaGeuYWxjJO/Ea7kkF37G9\n",
  487. "VQTNd+Q1VZE/YNAem9Etz5diLaOGb8S5TPfd2AtpAAAAdAGegmpH/wBsH+4cqnD6R8pZ++eMvDts\n",
  488. "j1a/S6cC2aYWQQy4CkSGiZkDAsH2FiEtayRMJaFgGQPj902MHHA1zX7noM5SI2KJIzBUEncuIwEi\n",
  489. "rfuxvqDm7854UJBc5jcIk9HIhcT4xwJ6uWQwNgcOPXmtUKCAAAAH3m1vb3YAAABsbXZoZAAAAAAA\n",
  490. "AAAAAAAAAAAAA+gAAAfQAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAA\n",
  491. "AAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAcIdHJhawAAAFx0a2hkAAAA\n",
  492. "AwAAAAAAAAAAAAAAAQAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAA\n",
  493. "AAAAAAAAAAAAAAAAQAAAAAGwAAABIAAAAAAAJGVkdHMAAAAcZWxzdAAAAAAAAAABAAAH0AAAAgAA\n",
  494. "AQAAAAAGgG1kaWEAAAAgbWRoZAAAAAAAAAAAAAAAAAAAMgAAAGQAVcQAAAAAAC1oZGxyAAAAAAAA\n",
  495. "AAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAABittaW5mAAAAFHZtaGQAAAABAAAAAAAA\n",
  496. "AAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAXrc3RibAAAALNzdHNkAAAA\n",
  497. "AAAAAAEAAACjYXZjMQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAGwASAASAAAAEgAAAAAAAAAAQAA\n",
  498. "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABj//wAAADFhdmNDAWQAHv/hABhnZAAerNlB\n",
  499. "sJaEAAADAAQAAAMBkDxYtlgBAAZo6+PLIsAAAAAcdXVpZGtoQPJfJE/FujmlG88DI/MAAAAAAAAA\n",
  500. "GHN0dHMAAAAAAAAAAQAAAGQAAAEAAAAAFHN0c3MAAAAAAAAAAQAAAAEAAAMwY3R0cwAAAAAAAABk\n",
  501. "AAAAAQAAAgAAAAABAAADAAAAAAEAAAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAMAAAAAAQAAAQAA\n",
  502. "AAABAAADAAAAAAEAAAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAMAAAAAAQAAAQAAAAABAAAEAAAA\n",
  503. "AAEAAAIAAAAAAQAAAAAAAAABAAAEAAAAAAEAAAIAAAAAAQAAAAAAAAABAAADAAAAAAEAAAEAAAAA\n",
  504. "AQAABAAAAAABAAACAAAAAAEAAAAAAAAAAQAAAwAAAAABAAABAAAAAAEAAAMAAAAAAQAAAQAAAAAB\n",
  505. "AAADAAAAAAEAAAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAMAAAAAAQAAAQAAAAABAAADAAAAAAEA\n",
  506. "AAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAMAAAAAAQAAAQAAAAABAAADAAAAAAEAAAEAAAAAAQAA\n",
  507. "AwAAAAABAAABAAAAAAEAAAMAAAAAAQAAAQAAAAABAAADAAAAAAEAAAEAAAAAAQAAAwAAAAABAAAB\n",
  508. "AAAAAAEAAAMAAAAAAQAAAQAAAAABAAADAAAAAAEAAAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAMA\n",
  509. "AAAAAQAAAQAAAAABAAADAAAAAAEAAAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAMAAAAAAQAAAQAA\n",
  510. "AAABAAADAAAAAAEAAAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAMAAAAAAQAAAQAAAAABAAADAAAA\n",
  511. "AAEAAAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAMAAAAAAQAAAQAAAAABAAADAAAAAAEAAAEAAAAA\n",
  512. "AQAAAwAAAAABAAABAAAAAAEAAAMAAAAAAQAAAQAAAAABAAADAAAAAAEAAAEAAAAAAQAAAwAAAAAB\n",
  513. "AAABAAAAAAEAAAMAAAAAAQAAAQAAAAABAAADAAAAAAEAAAEAAAAAAQAAAwAAAAABAAABAAAAAAEA\n",
  514. "AAMAAAAAAQAAAQAAAAABAAADAAAAAAEAAAEAAAAAAQAAAwAAAAABAAABAAAAAAEAAAMAAAAAAQAA\n",
  515. "AQAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAGQAAAABAAABpHN0c3oAAAAAAAAAAAAAAGQAABVYAAAB\n",
  516. "vwAAAJgAAAFeAAAAbwAAAPQAAACMAAABKQAAAH4AAAEYAAAAhgAAAP0AAACCAAAA8AAAAIwAAABx\n",
  517. "AAABGAAAAH8AAAB/AAABNwAAAIMAAADlAAAAigAAAIoAAAFOAAAAhgAAAUEAAABxAAABQgAAAHMA\n",
  518. "AAEiAAAAeAAAARIAAAB6AAABNgAAAHsAAAEDAAAAeQAAARoAAAB4AAAA7QAAAHMAAAD0AAAAgAAA\n",
  519. "APMAAAB3AAAA+AAAAHMAAADXAAAAcgAAAPcAAAB+AAABBQAAAIMAAADGAAAAdwAAANQAAABvAAAA\n",
  520. "8wAAAIcAAAERAAAAgQAAAQMAAAB0AAAA5wAAAHIAAAEHAAAAcgAAAPgAAAB/AAABGwAAAHgAAAFI\n",
  521. "AAAAeQAAAQYAAABuAAAA8gAAAG0AAADuAAAAcgAAAOoAAABdAAABAAAAAHcAAAEHAAAAeAAAAN0A\n",
  522. "AAB5AAAA+AAAAHoAAAC3AAAAcQAAANIAAABuAAAAtwAAAHgAAACsAAAAcwAAAJwAAAB4AAAAFHN0\n",
  523. "Y28AAAAAAAAAAQAAACwAAABidWR0YQAAAFptZXRhAAAAAAAAACFoZGxyAAAAAAAAAABtZGlyYXBw\n",
  524. "bAAAAAAAAAAAAAAAAC1pbHN0AAAAJal0b28AAAAdZGF0YQAAAAEAAAAATGF2ZjU2LjQwLjEwMQ==\n",
  525. "\">\n",
  526. " Your browser does not support the video tag.\n",
  527. "</video>"
  528. ],
  529. "text/plain": [
  530. "<IPython.core.display.HTML object>"
  531. ]
  532. },
  533. "execution_count": 2,
  534. "metadata": {},
  535. "output_type": "execute_result"
  536. }
  537. ],
  538. "source": [
  539. "\n",
  540. "# initialization function: plot the background of each frame\n",
  541. "def init():\n",
  542. " line.set_data([], [])\n",
  543. " return (line,)\n",
  544. "\n",
  545. "# animation function. This is called sequentially\n",
  546. "def animate(i):\n",
  547. " x = np.linspace(0, 2, 1000)\n",
  548. " y = np.sin(2 * np.pi * (x - 0.01 * i))\n",
  549. " line.set_data(x, y)\n",
  550. " return (line,)\n",
  551. "\n",
  552. "# call the animator. blit=True means only re-draw the parts that have changed.\n",
  553. "anim = animation.FuncAnimation(fig, animate, init_func=init,\n",
  554. " frames=100, interval=20, blit=True)\n",
  555. "\n",
  556. "HTML(anim.to_html5_video())"
  557. ]
  558. },
  559. {
  560. "cell_type": "markdown",
  561. "metadata": {},
  562. "source": [
  563. "## Method 2"
  564. ]
  565. },
  566. {
  567. "cell_type": "code",
  568. "execution_count": 4,
  569. "metadata": {},
  570. "outputs": [
  571. {
  572. "data": {
  573. "application/javascript": [
  574. "/* Put everything inside the global mpl namespace */\n",
  575. "window.mpl = {};\n",
  576. "\n",
  577. "\n",
  578. "mpl.get_websocket_type = function() {\n",
  579. " if (typeof(WebSocket) !== 'undefined') {\n",
  580. " return WebSocket;\n",
  581. " } else if (typeof(MozWebSocket) !== 'undefined') {\n",
  582. " return MozWebSocket;\n",
  583. " } else {\n",
  584. " alert('Your browser does not have WebSocket support.' +\n",
  585. " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
  586. " 'Firefox 4 and 5 are also supported but you ' +\n",
  587. " 'have to enable WebSockets in about:config.');\n",
  588. " };\n",
  589. "}\n",
  590. "\n",
  591. "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n",
  592. " this.id = figure_id;\n",
  593. "\n",
  594. " this.ws = websocket;\n",
  595. "\n",
  596. " this.supports_binary = (this.ws.binaryType != undefined);\n",
  597. "\n",
  598. " if (!this.supports_binary) {\n",
  599. " var warnings = document.getElementById(\"mpl-warnings\");\n",
  600. " if (warnings) {\n",
  601. " warnings.style.display = 'block';\n",
  602. " warnings.textContent = (\n",
  603. " \"This browser does not support binary websocket messages. \" +\n",
  604. " \"Performance may be slow.\");\n",
  605. " }\n",
  606. " }\n",
  607. "\n",
  608. " this.imageObj = new Image();\n",
  609. "\n",
  610. " this.context = undefined;\n",
  611. " this.message = undefined;\n",
  612. " this.canvas = undefined;\n",
  613. " this.rubberband_canvas = undefined;\n",
  614. " this.rubberband_context = undefined;\n",
  615. " this.format_dropdown = undefined;\n",
  616. "\n",
  617. " this.image_mode = 'full';\n",
  618. "\n",
  619. " this.root = $('<div/>');\n",
  620. " this._root_extra_style(this.root)\n",
  621. " this.root.attr('style', 'display: inline-block');\n",
  622. "\n",
  623. " $(parent_element).append(this.root);\n",
  624. "\n",
  625. " this._init_header(this);\n",
  626. " this._init_canvas(this);\n",
  627. " this._init_toolbar(this);\n",
  628. "\n",
  629. " var fig = this;\n",
  630. "\n",
  631. " this.waiting = false;\n",
  632. "\n",
  633. " this.ws.onopen = function () {\n",
  634. " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n",
  635. " fig.send_message(\"send_image_mode\", {});\n",
  636. " if (mpl.ratio != 1) {\n",
  637. " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n",
  638. " }\n",
  639. " fig.send_message(\"refresh\", {});\n",
  640. " }\n",
  641. "\n",
  642. " this.imageObj.onload = function() {\n",
  643. " if (fig.image_mode == 'full') {\n",
  644. " // Full images could contain transparency (where diff images\n",
  645. " // almost always do), so we need to clear the canvas so that\n",
  646. " // there is no ghosting.\n",
  647. " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
  648. " }\n",
  649. " fig.context.drawImage(fig.imageObj, 0, 0);\n",
  650. " };\n",
  651. "\n",
  652. " this.imageObj.onunload = function() {\n",
  653. " fig.ws.close();\n",
  654. " }\n",
  655. "\n",
  656. " this.ws.onmessage = this._make_on_message_function(this);\n",
  657. "\n",
  658. " this.ondownload = ondownload;\n",
  659. "}\n",
  660. "\n",
  661. "mpl.figure.prototype._init_header = function() {\n",
  662. " var titlebar = $(\n",
  663. " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n",
  664. " 'ui-helper-clearfix\"/>');\n",
  665. " var titletext = $(\n",
  666. " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n",
  667. " 'text-align: center; padding: 3px;\"/>');\n",
  668. " titlebar.append(titletext)\n",
  669. " this.root.append(titlebar);\n",
  670. " this.header = titletext[0];\n",
  671. "}\n",
  672. "\n",
  673. "\n",
  674. "\n",
  675. "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n",
  676. "\n",
  677. "}\n",
  678. "\n",
  679. "\n",
  680. "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n",
  681. "\n",
  682. "}\n",
  683. "\n",
  684. "mpl.figure.prototype._init_canvas = function() {\n",
  685. " var fig = this;\n",
  686. "\n",
  687. " var canvas_div = $('<div/>');\n",
  688. "\n",
  689. " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n",
  690. "\n",
  691. " function canvas_keyboard_event(event) {\n",
  692. " return fig.key_event(event, event['data']);\n",
  693. " }\n",
  694. "\n",
  695. " canvas_div.keydown('key_press', canvas_keyboard_event);\n",
  696. " canvas_div.keyup('key_release', canvas_keyboard_event);\n",
  697. " this.canvas_div = canvas_div\n",
  698. " this._canvas_extra_style(canvas_div)\n",
  699. " this.root.append(canvas_div);\n",
  700. "\n",
  701. " var canvas = $('<canvas/>');\n",
  702. " canvas.addClass('mpl-canvas');\n",
  703. " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n",
  704. "\n",
  705. " this.canvas = canvas[0];\n",
  706. " this.context = canvas[0].getContext(\"2d\");\n",
  707. "\n",
  708. " var backingStore = this.context.backingStorePixelRatio ||\n",
  709. "\tthis.context.webkitBackingStorePixelRatio ||\n",
  710. "\tthis.context.mozBackingStorePixelRatio ||\n",
  711. "\tthis.context.msBackingStorePixelRatio ||\n",
  712. "\tthis.context.oBackingStorePixelRatio ||\n",
  713. "\tthis.context.backingStorePixelRatio || 1;\n",
  714. "\n",
  715. " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
  716. "\n",
  717. " var rubberband = $('<canvas/>');\n",
  718. " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n",
  719. "\n",
  720. " var pass_mouse_events = true;\n",
  721. "\n",
  722. " canvas_div.resizable({\n",
  723. " start: function(event, ui) {\n",
  724. " pass_mouse_events = false;\n",
  725. " },\n",
  726. " resize: function(event, ui) {\n",
  727. " fig.request_resize(ui.size.width, ui.size.height);\n",
  728. " },\n",
  729. " stop: function(event, ui) {\n",
  730. " pass_mouse_events = true;\n",
  731. " fig.request_resize(ui.size.width, ui.size.height);\n",
  732. " },\n",
  733. " });\n",
  734. "\n",
  735. " function mouse_event_fn(event) {\n",
  736. " if (pass_mouse_events)\n",
  737. " return fig.mouse_event(event, event['data']);\n",
  738. " }\n",
  739. "\n",
  740. " rubberband.mousedown('button_press', mouse_event_fn);\n",
  741. " rubberband.mouseup('button_release', mouse_event_fn);\n",
  742. " // Throttle sequential mouse events to 1 every 20ms.\n",
  743. " rubberband.mousemove('motion_notify', mouse_event_fn);\n",
  744. "\n",
  745. " rubberband.mouseenter('figure_enter', mouse_event_fn);\n",
  746. " rubberband.mouseleave('figure_leave', mouse_event_fn);\n",
  747. "\n",
  748. " canvas_div.on(\"wheel\", function (event) {\n",
  749. " event = event.originalEvent;\n",
  750. " event['data'] = 'scroll'\n",
  751. " if (event.deltaY < 0) {\n",
  752. " event.step = 1;\n",
  753. " } else {\n",
  754. " event.step = -1;\n",
  755. " }\n",
  756. " mouse_event_fn(event);\n",
  757. " });\n",
  758. "\n",
  759. " canvas_div.append(canvas);\n",
  760. " canvas_div.append(rubberband);\n",
  761. "\n",
  762. " this.rubberband = rubberband;\n",
  763. " this.rubberband_canvas = rubberband[0];\n",
  764. " this.rubberband_context = rubberband[0].getContext(\"2d\");\n",
  765. " this.rubberband_context.strokeStyle = \"#000000\";\n",
  766. "\n",
  767. " this._resize_canvas = function(width, height) {\n",
  768. " // Keep the size of the canvas, canvas container, and rubber band\n",
  769. " // canvas in synch.\n",
  770. " canvas_div.css('width', width)\n",
  771. " canvas_div.css('height', height)\n",
  772. "\n",
  773. " canvas.attr('width', width * mpl.ratio);\n",
  774. " canvas.attr('height', height * mpl.ratio);\n",
  775. " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n",
  776. "\n",
  777. " rubberband.attr('width', width);\n",
  778. " rubberband.attr('height', height);\n",
  779. " }\n",
  780. "\n",
  781. " // Set the figure to an initial 600x600px, this will subsequently be updated\n",
  782. " // upon first draw.\n",
  783. " this._resize_canvas(600, 600);\n",
  784. "\n",
  785. " // Disable right mouse context menu.\n",
  786. " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n",
  787. " return false;\n",
  788. " });\n",
  789. "\n",
  790. " function set_focus () {\n",
  791. " canvas.focus();\n",
  792. " canvas_div.focus();\n",
  793. " }\n",
  794. "\n",
  795. " window.setTimeout(set_focus, 100);\n",
  796. "}\n",
  797. "\n",
  798. "mpl.figure.prototype._init_toolbar = function() {\n",
  799. " var fig = this;\n",
  800. "\n",
  801. " var nav_element = $('<div/>')\n",
  802. " nav_element.attr('style', 'width: 100%');\n",
  803. " this.root.append(nav_element);\n",
  804. "\n",
  805. " // Define a callback function for later on.\n",
  806. " function toolbar_event(event) {\n",
  807. " return fig.toolbar_button_onclick(event['data']);\n",
  808. " }\n",
  809. " function toolbar_mouse_event(event) {\n",
  810. " return fig.toolbar_button_onmouseover(event['data']);\n",
  811. " }\n",
  812. "\n",
  813. " for(var toolbar_ind in mpl.toolbar_items) {\n",
  814. " var name = mpl.toolbar_items[toolbar_ind][0];\n",
  815. " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
  816. " var image = mpl.toolbar_items[toolbar_ind][2];\n",
  817. " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
  818. "\n",
  819. " if (!name) {\n",
  820. " // put a spacer in here.\n",
  821. " continue;\n",
  822. " }\n",
  823. " var button = $('<button/>');\n",
  824. " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n",
  825. " 'ui-button-icon-only');\n",
  826. " button.attr('role', 'button');\n",
  827. " button.attr('aria-disabled', 'false');\n",
  828. " button.click(method_name, toolbar_event);\n",
  829. " button.mouseover(tooltip, toolbar_mouse_event);\n",
  830. "\n",
  831. " var icon_img = $('<span/>');\n",
  832. " icon_img.addClass('ui-button-icon-primary ui-icon');\n",
  833. " icon_img.addClass(image);\n",
  834. " icon_img.addClass('ui-corner-all');\n",
  835. "\n",
  836. " var tooltip_span = $('<span/>');\n",
  837. " tooltip_span.addClass('ui-button-text');\n",
  838. " tooltip_span.html(tooltip);\n",
  839. "\n",
  840. " button.append(icon_img);\n",
  841. " button.append(tooltip_span);\n",
  842. "\n",
  843. " nav_element.append(button);\n",
  844. " }\n",
  845. "\n",
  846. " var fmt_picker_span = $('<span/>');\n",
  847. "\n",
  848. " var fmt_picker = $('<select/>');\n",
  849. " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n",
  850. " fmt_picker_span.append(fmt_picker);\n",
  851. " nav_element.append(fmt_picker_span);\n",
  852. " this.format_dropdown = fmt_picker[0];\n",
  853. "\n",
  854. " for (var ind in mpl.extensions) {\n",
  855. " var fmt = mpl.extensions[ind];\n",
  856. " var option = $(\n",
  857. " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n",
  858. " fmt_picker.append(option)\n",
  859. " }\n",
  860. "\n",
  861. " // Add hover states to the ui-buttons\n",
  862. " $( \".ui-button\" ).hover(\n",
  863. " function() { $(this).addClass(\"ui-state-hover\");},\n",
  864. " function() { $(this).removeClass(\"ui-state-hover\");}\n",
  865. " );\n",
  866. "\n",
  867. " var status_bar = $('<span class=\"mpl-message\"/>');\n",
  868. " nav_element.append(status_bar);\n",
  869. " this.message = status_bar[0];\n",
  870. "}\n",
  871. "\n",
  872. "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n",
  873. " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
  874. " // which will in turn request a refresh of the image.\n",
  875. " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
  876. "}\n",
  877. "\n",
  878. "mpl.figure.prototype.send_message = function(type, properties) {\n",
  879. " properties['type'] = type;\n",
  880. " properties['figure_id'] = this.id;\n",
  881. " this.ws.send(JSON.stringify(properties));\n",
  882. "}\n",
  883. "\n",
  884. "mpl.figure.prototype.send_draw_message = function() {\n",
  885. " if (!this.waiting) {\n",
  886. " this.waiting = true;\n",
  887. " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
  888. " }\n",
  889. "}\n",
  890. "\n",
  891. "\n",
  892. "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
  893. " var format_dropdown = fig.format_dropdown;\n",
  894. " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
  895. " fig.ondownload(fig, format);\n",
  896. "}\n",
  897. "\n",
  898. "\n",
  899. "mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
  900. " var size = msg['size'];\n",
  901. " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
  902. " fig._resize_canvas(size[0], size[1]);\n",
  903. " fig.send_message(\"refresh\", {});\n",
  904. " };\n",
  905. "}\n",
  906. "\n",
  907. "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
  908. " var x0 = msg['x0'] / mpl.ratio;\n",
  909. " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
  910. " var x1 = msg['x1'] / mpl.ratio;\n",
  911. " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
  912. " x0 = Math.floor(x0) + 0.5;\n",
  913. " y0 = Math.floor(y0) + 0.5;\n",
  914. " x1 = Math.floor(x1) + 0.5;\n",
  915. " y1 = Math.floor(y1) + 0.5;\n",
  916. " var min_x = Math.min(x0, x1);\n",
  917. " var min_y = Math.min(y0, y1);\n",
  918. " var width = Math.abs(x1 - x0);\n",
  919. " var height = Math.abs(y1 - y0);\n",
  920. "\n",
  921. " fig.rubberband_context.clearRect(\n",
  922. " 0, 0, fig.canvas.width, fig.canvas.height);\n",
  923. "\n",
  924. " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
  925. "}\n",
  926. "\n",
  927. "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
  928. " // Updates the figure title.\n",
  929. " fig.header.textContent = msg['label'];\n",
  930. "}\n",
  931. "\n",
  932. "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
  933. " var cursor = msg['cursor'];\n",
  934. " switch(cursor)\n",
  935. " {\n",
  936. " case 0:\n",
  937. " cursor = 'pointer';\n",
  938. " break;\n",
  939. " case 1:\n",
  940. " cursor = 'default';\n",
  941. " break;\n",
  942. " case 2:\n",
  943. " cursor = 'crosshair';\n",
  944. " break;\n",
  945. " case 3:\n",
  946. " cursor = 'move';\n",
  947. " break;\n",
  948. " }\n",
  949. " fig.rubberband_canvas.style.cursor = cursor;\n",
  950. "}\n",
  951. "\n",
  952. "mpl.figure.prototype.handle_message = function(fig, msg) {\n",
  953. " fig.message.textContent = msg['message'];\n",
  954. "}\n",
  955. "\n",
  956. "mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
  957. " // Request the server to send over a new figure.\n",
  958. " fig.send_draw_message();\n",
  959. "}\n",
  960. "\n",
  961. "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
  962. " fig.image_mode = msg['mode'];\n",
  963. "}\n",
  964. "\n",
  965. "mpl.figure.prototype.updated_canvas_event = function() {\n",
  966. " // Called whenever the canvas gets updated.\n",
  967. " this.send_message(\"ack\", {});\n",
  968. "}\n",
  969. "\n",
  970. "// A function to construct a web socket function for onmessage handling.\n",
  971. "// Called in the figure constructor.\n",
  972. "mpl.figure.prototype._make_on_message_function = function(fig) {\n",
  973. " return function socket_on_message(evt) {\n",
  974. " if (evt.data instanceof Blob) {\n",
  975. " /* FIXME: We get \"Resource interpreted as Image but\n",
  976. " * transferred with MIME type text/plain:\" errors on\n",
  977. " * Chrome. But how to set the MIME type? It doesn't seem\n",
  978. " * to be part of the websocket stream */\n",
  979. " evt.data.type = \"image/png\";\n",
  980. "\n",
  981. " /* Free the memory for the previous frames */\n",
  982. " if (fig.imageObj.src) {\n",
  983. " (window.URL || window.webkitURL).revokeObjectURL(\n",
  984. " fig.imageObj.src);\n",
  985. " }\n",
  986. "\n",
  987. " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
  988. " evt.data);\n",
  989. " fig.updated_canvas_event();\n",
  990. " fig.waiting = false;\n",
  991. " return;\n",
  992. " }\n",
  993. " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
  994. " fig.imageObj.src = evt.data;\n",
  995. " fig.updated_canvas_event();\n",
  996. " fig.waiting = false;\n",
  997. " return;\n",
  998. " }\n",
  999. "\n",
  1000. " var msg = JSON.parse(evt.data);\n",
  1001. " var msg_type = msg['type'];\n",
  1002. "\n",
  1003. " // Call the \"handle_{type}\" callback, which takes\n",
  1004. " // the figure and JSON message as its only arguments.\n",
  1005. " try {\n",
  1006. " var callback = fig[\"handle_\" + msg_type];\n",
  1007. " } catch (e) {\n",
  1008. " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
  1009. " return;\n",
  1010. " }\n",
  1011. "\n",
  1012. " if (callback) {\n",
  1013. " try {\n",
  1014. " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
  1015. " callback(fig, msg);\n",
  1016. " } catch (e) {\n",
  1017. " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
  1018. " }\n",
  1019. " }\n",
  1020. " };\n",
  1021. "}\n",
  1022. "\n",
  1023. "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
  1024. "mpl.findpos = function(e) {\n",
  1025. " //this section is from http://www.quirksmode.org/js/events_properties.html\n",
  1026. " var targ;\n",
  1027. " if (!e)\n",
  1028. " e = window.event;\n",
  1029. " if (e.target)\n",
  1030. " targ = e.target;\n",
  1031. " else if (e.srcElement)\n",
  1032. " targ = e.srcElement;\n",
  1033. " if (targ.nodeType == 3) // defeat Safari bug\n",
  1034. " targ = targ.parentNode;\n",
  1035. "\n",
  1036. " // jQuery normalizes the pageX and pageY\n",
  1037. " // pageX,Y are the mouse positions relative to the document\n",
  1038. " // offset() returns the position of the element relative to the document\n",
  1039. " var x = e.pageX - $(targ).offset().left;\n",
  1040. " var y = e.pageY - $(targ).offset().top;\n",
  1041. "\n",
  1042. " return {\"x\": x, \"y\": y};\n",
  1043. "};\n",
  1044. "\n",
  1045. "/*\n",
  1046. " * return a copy of an object with only non-object keys\n",
  1047. " * we need this to avoid circular references\n",
  1048. " * http://stackoverflow.com/a/24161582/3208463\n",
  1049. " */\n",
  1050. "function simpleKeys (original) {\n",
  1051. " return Object.keys(original).reduce(function (obj, key) {\n",
  1052. " if (typeof original[key] !== 'object')\n",
  1053. " obj[key] = original[key]\n",
  1054. " return obj;\n",
  1055. " }, {});\n",
  1056. "}\n",
  1057. "\n",
  1058. "mpl.figure.prototype.mouse_event = function(event, name) {\n",
  1059. " var canvas_pos = mpl.findpos(event)\n",
  1060. "\n",
  1061. " if (name === 'button_press')\n",
  1062. " {\n",
  1063. " this.canvas.focus();\n",
  1064. " this.canvas_div.focus();\n",
  1065. " }\n",
  1066. "\n",
  1067. " var x = canvas_pos.x * mpl.ratio;\n",
  1068. " var y = canvas_pos.y * mpl.ratio;\n",
  1069. "\n",
  1070. " this.send_message(name, {x: x, y: y, button: event.button,\n",
  1071. " step: event.step,\n",
  1072. " guiEvent: simpleKeys(event)});\n",
  1073. "\n",
  1074. " /* This prevents the web browser from automatically changing to\n",
  1075. " * the text insertion cursor when the button is pressed. We want\n",
  1076. " * to control all of the cursor setting manually through the\n",
  1077. " * 'cursor' event from matplotlib */\n",
  1078. " event.preventDefault();\n",
  1079. " return false;\n",
  1080. "}\n",
  1081. "\n",
  1082. "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
  1083. " // Handle any extra behaviour associated with a key event\n",
  1084. "}\n",
  1085. "\n",
  1086. "mpl.figure.prototype.key_event = function(event, name) {\n",
  1087. "\n",
  1088. " // Prevent repeat events\n",
  1089. " if (name == 'key_press')\n",
  1090. " {\n",
  1091. " if (event.which === this._key)\n",
  1092. " return;\n",
  1093. " else\n",
  1094. " this._key = event.which;\n",
  1095. " }\n",
  1096. " if (name == 'key_release')\n",
  1097. " this._key = null;\n",
  1098. "\n",
  1099. " var value = '';\n",
  1100. " if (event.ctrlKey && event.which != 17)\n",
  1101. " value += \"ctrl+\";\n",
  1102. " if (event.altKey && event.which != 18)\n",
  1103. " value += \"alt+\";\n",
  1104. " if (event.shiftKey && event.which != 16)\n",
  1105. " value += \"shift+\";\n",
  1106. "\n",
  1107. " value += 'k';\n",
  1108. " value += event.which.toString();\n",
  1109. "\n",
  1110. " this._key_event_extra(event, name);\n",
  1111. "\n",
  1112. " this.send_message(name, {key: value,\n",
  1113. " guiEvent: simpleKeys(event)});\n",
  1114. " return false;\n",
  1115. "}\n",
  1116. "\n",
  1117. "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
  1118. " if (name == 'download') {\n",
  1119. " this.handle_save(this, null);\n",
  1120. " } else {\n",
  1121. " this.send_message(\"toolbar_button\", {name: name});\n",
  1122. " }\n",
  1123. "};\n",
  1124. "\n",
  1125. "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
  1126. " this.message.textContent = tooltip;\n",
  1127. "};\n",
  1128. "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
  1129. "\n",
  1130. "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
  1131. "\n",
  1132. "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
  1133. " // Create a \"websocket\"-like object which calls the given IPython comm\n",
  1134. " // object with the appropriate methods. Currently this is a non binary\n",
  1135. " // socket, so there is still some room for performance tuning.\n",
  1136. " var ws = {};\n",
  1137. "\n",
  1138. " ws.close = function() {\n",
  1139. " comm.close()\n",
  1140. " };\n",
  1141. " ws.send = function(m) {\n",
  1142. " //console.log('sending', m);\n",
  1143. " comm.send(m);\n",
  1144. " };\n",
  1145. " // Register the callback with on_msg.\n",
  1146. " comm.on_msg(function(msg) {\n",
  1147. " //console.log('receiving', msg['content']['data'], msg);\n",
  1148. " // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
  1149. " ws.onmessage(msg['content']['data'])\n",
  1150. " });\n",
  1151. " return ws;\n",
  1152. "}\n",
  1153. "\n",
  1154. "mpl.mpl_figure_comm = function(comm, msg) {\n",
  1155. " // This is the function which gets called when the mpl process\n",
  1156. " // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
  1157. "\n",
  1158. " var id = msg.content.data.id;\n",
  1159. " // Get hold of the div created by the display call when the Comm\n",
  1160. " // socket was opened in Python.\n",
  1161. " var element = $(\"#\" + id);\n",
  1162. " var ws_proxy = comm_websocket_adapter(comm)\n",
  1163. "\n",
  1164. " function ondownload(figure, format) {\n",
  1165. " window.open(figure.imageObj.src);\n",
  1166. " }\n",
  1167. "\n",
  1168. " var fig = new mpl.figure(id, ws_proxy,\n",
  1169. " ondownload,\n",
  1170. " element.get(0));\n",
  1171. "\n",
  1172. " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
  1173. " // web socket which is closed, not our websocket->open comm proxy.\n",
  1174. " ws_proxy.onopen();\n",
  1175. "\n",
  1176. " fig.parent_element = element.get(0);\n",
  1177. " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
  1178. " if (!fig.cell_info) {\n",
  1179. " console.error(\"Failed to find cell for figure\", id, fig);\n",
  1180. " return;\n",
  1181. " }\n",
  1182. "\n",
  1183. " var output_index = fig.cell_info[2]\n",
  1184. " var cell = fig.cell_info[0];\n",
  1185. "\n",
  1186. "};\n",
  1187. "\n",
  1188. "mpl.figure.prototype.handle_close = function(fig, msg) {\n",
  1189. " var width = fig.canvas.width/mpl.ratio\n",
  1190. " fig.root.unbind('remove')\n",
  1191. "\n",
  1192. " // Update the output cell to use the data from the current canvas.\n",
  1193. " fig.push_to_output();\n",
  1194. " var dataURL = fig.canvas.toDataURL();\n",
  1195. " // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
  1196. " // the notebook keyboard shortcuts fail.\n",
  1197. " IPython.keyboard_manager.enable()\n",
  1198. " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
  1199. " fig.close_ws(fig, msg);\n",
  1200. "}\n",
  1201. "\n",
  1202. "mpl.figure.prototype.close_ws = function(fig, msg){\n",
  1203. " fig.send_message('closing', msg);\n",
  1204. " // fig.ws.close()\n",
  1205. "}\n",
  1206. "\n",
  1207. "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
  1208. " // Turn the data on the canvas into data in the output cell.\n",
  1209. " var width = this.canvas.width/mpl.ratio\n",
  1210. " var dataURL = this.canvas.toDataURL();\n",
  1211. " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
  1212. "}\n",
  1213. "\n",
  1214. "mpl.figure.prototype.updated_canvas_event = function() {\n",
  1215. " // Tell IPython that the notebook contents must change.\n",
  1216. " IPython.notebook.set_dirty(true);\n",
  1217. " this.send_message(\"ack\", {});\n",
  1218. " var fig = this;\n",
  1219. " // Wait a second, then push the new image to the DOM so\n",
  1220. " // that it is saved nicely (might be nice to debounce this).\n",
  1221. " setTimeout(function () { fig.push_to_output() }, 1000);\n",
  1222. "}\n",
  1223. "\n",
  1224. "mpl.figure.prototype._init_toolbar = function() {\n",
  1225. " var fig = this;\n",
  1226. "\n",
  1227. " var nav_element = $('<div/>')\n",
  1228. " nav_element.attr('style', 'width: 100%');\n",
  1229. " this.root.append(nav_element);\n",
  1230. "\n",
  1231. " // Define a callback function for later on.\n",
  1232. " function toolbar_event(event) {\n",
  1233. " return fig.toolbar_button_onclick(event['data']);\n",
  1234. " }\n",
  1235. " function toolbar_mouse_event(event) {\n",
  1236. " return fig.toolbar_button_onmouseover(event['data']);\n",
  1237. " }\n",
  1238. "\n",
  1239. " for(var toolbar_ind in mpl.toolbar_items){\n",
  1240. " var name = mpl.toolbar_items[toolbar_ind][0];\n",
  1241. " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
  1242. " var image = mpl.toolbar_items[toolbar_ind][2];\n",
  1243. " var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
  1244. "\n",
  1245. " if (!name) { continue; };\n",
  1246. "\n",
  1247. " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
  1248. " button.click(method_name, toolbar_event);\n",
  1249. " button.mouseover(tooltip, toolbar_mouse_event);\n",
  1250. " nav_element.append(button);\n",
  1251. " }\n",
  1252. "\n",
  1253. " // Add the status bar.\n",
  1254. " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
  1255. " nav_element.append(status_bar);\n",
  1256. " this.message = status_bar[0];\n",
  1257. "\n",
  1258. " // Add the close button to the window.\n",
  1259. " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
  1260. " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
  1261. " button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
  1262. " button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
  1263. " buttongrp.append(button);\n",
  1264. " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
  1265. " titlebar.prepend(buttongrp);\n",
  1266. "}\n",
  1267. "\n",
  1268. "mpl.figure.prototype._root_extra_style = function(el){\n",
  1269. " var fig = this\n",
  1270. " el.on(\"remove\", function(){\n",
  1271. "\tfig.close_ws(fig, {});\n",
  1272. " });\n",
  1273. "}\n",
  1274. "\n",
  1275. "mpl.figure.prototype._canvas_extra_style = function(el){\n",
  1276. " // this is important to make the div 'focusable\n",
  1277. " el.attr('tabindex', 0)\n",
  1278. " // reach out to IPython and tell the keyboard manager to turn it's self\n",
  1279. " // off when our div gets focus\n",
  1280. "\n",
  1281. " // location in version 3\n",
  1282. " if (IPython.notebook.keyboard_manager) {\n",
  1283. " IPython.notebook.keyboard_manager.register_events(el);\n",
  1284. " }\n",
  1285. " else {\n",
  1286. " // location in version 2\n",
  1287. " IPython.keyboard_manager.register_events(el);\n",
  1288. " }\n",
  1289. "\n",
  1290. "}\n",
  1291. "\n",
  1292. "mpl.figure.prototype._key_event_extra = function(event, name) {\n",
  1293. " var manager = IPython.notebook.keyboard_manager;\n",
  1294. " if (!manager)\n",
  1295. " manager = IPython.keyboard_manager;\n",
  1296. "\n",
  1297. " // Check for shift+enter\n",
  1298. " if (event.shiftKey && event.which == 13) {\n",
  1299. " this.canvas_div.blur();\n",
  1300. " event.shiftKey = false;\n",
  1301. " // Send a \"J\" for go to next cell\n",
  1302. " event.which = 74;\n",
  1303. " event.keyCode = 74;\n",
  1304. " manager.command_mode();\n",
  1305. " manager.handle_keydown(event);\n",
  1306. " }\n",
  1307. "}\n",
  1308. "\n",
  1309. "mpl.figure.prototype.handle_save = function(fig, msg) {\n",
  1310. " fig.ondownload(fig, null);\n",
  1311. "}\n",
  1312. "\n",
  1313. "\n",
  1314. "mpl.find_output_cell = function(html_output) {\n",
  1315. " // Return the cell and output element which can be found *uniquely* in the notebook.\n",
  1316. " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
  1317. " // IPython event is triggered only after the cells have been serialised, which for\n",
  1318. " // our purposes (turning an active figure into a static one), is too late.\n",
  1319. " var cells = IPython.notebook.get_cells();\n",
  1320. " var ncells = cells.length;\n",
  1321. " for (var i=0; i<ncells; i++) {\n",
  1322. " var cell = cells[i];\n",
  1323. " if (cell.cell_type === 'code'){\n",
  1324. " for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
  1325. " var data = cell.output_area.outputs[j];\n",
  1326. " if (data.data) {\n",
  1327. " // IPython >= 3 moved mimebundle to data attribute of output\n",
  1328. " data = data.data;\n",
  1329. " }\n",
  1330. " if (data['text/html'] == html_output) {\n",
  1331. " return [cell, data, j];\n",
  1332. " }\n",
  1333. " }\n",
  1334. " }\n",
  1335. " }\n",
  1336. "}\n",
  1337. "\n",
  1338. "// Register the function which deals with the matplotlib target/channel.\n",
  1339. "// The kernel may be null if the page has been refreshed.\n",
  1340. "if (IPython.notebook.kernel != null) {\n",
  1341. " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
  1342. "}\n"
  1343. ],
  1344. "text/plain": [
  1345. "<IPython.core.display.Javascript object>"
  1346. ]
  1347. },
  1348. "metadata": {},
  1349. "output_type": "display_data"
  1350. },
  1351. {
  1352. "data": {
  1353. "text/html": [
  1354. "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnUAAAFoCAYAAAAxVw2MAAAgAElEQVR4Xu2dCdxV0/rHvylDuOYhJBnTNQvJdCOUyjzdMhYyX0UazFODJIWQKZllJnMyXqKSMWMUkTFcQxL5f57/2ud6b6pz3nP23mfttX/r83k/qbP3Ws/zfbbz/vYanqcOaiIgAiIgAiIgAiIgApknUCfzHsgBERABERABERABERABJOr0EIiACIiACIiACIhAAAQk6gIIolwQAREQAREQAREQAYk6PQMiIAIiIAIiIAIiEAABiboAgigXREAEREAEREAERECiTs+ACIiACIiACIiACARAQKIugCDKBREQAREQAREQARGQqNMzIAIiIAIiIAIiIAIBEJCoCyCIckEEREAEREAEREAEJOr0DIiACIiACIiACIhAAAQk6gIIolwQAREQAREQAREQAYk6PQMiIAIiIAIiIAIiEAABiboAgigXREAEREAEREAERECiTs+ACIiACIiACIiACARAQKIugCDKBREQAREQAREQARGQqNMzIAIiIAIiIAIiIAIBEJCoCyCIckEEREAEREAEREAEJOr0DIiACIiACIiACIhAAAQk6gIIolwQAREQAREQAREQAYk6PQMiIAIiIAIiIAIiEAABiboAgigXREAEREAEREAERECiTs+ACIiACIiACIiACARAQKIugCDKBREQAREQAREQARGQqNMzIAIiIAIiIAIiIAIBEJCoCyCIckEEREAEREAEREAEJOr0DIiACIiACIiACIhAAAQk6gIIolwQAREQAREQAREQAYk6PQMiIAIiIAIiIAIiEAABiboAgigXREAEREAEREAERECiTs+ACIiACIiACIiACARAQKIugCDKBREQAREQAREQARGQqNMzIAIiIAIiIAIiIAIBEJCoCyCIckEEREAEREAEREAEJOr0DIiACIiACIiACIhAAAQk6gIIolwQAREQAREQAREQAYk6PQMiIAIiIAIiIAIiEAABiboAgigXREAEREAEREAERECiTs+ACIiACIiACIiACARAQKIugCDKBREQAREQAREQARGQqNMzIAIiIAIiIAIiIAIBEJCoCyCIckEEREAEREAEREAEJOr0DIiACIiACIiACIhAAAQk6ioI4vLLL/9H48aNK+hBt4qACIiACIiACMRJYMKECV8DK8bZZ1b6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\" width=\"629\">"
  1355. ],
  1356. "text/plain": [
  1357. "<IPython.core.display.HTML object>"
  1358. ]
  1359. },
  1360. "metadata": {},
  1361. "output_type": "display_data"
  1362. }
  1363. ],
  1364. "source": [
  1365. "%matplotlib nbagg\n",
  1366. "\n",
  1367. "import numpy as np\n",
  1368. "import matplotlib.pyplot as plt\n",
  1369. "import matplotlib.animation as animation\n",
  1370. "\n",
  1371. "fig = plt.figure()\n",
  1372. "x = np.arange(0, 10, 0.1)\n",
  1373. "\n",
  1374. "ims = []\n",
  1375. "for a in range(50):\n",
  1376. " y = np.sin(x - a)\n",
  1377. " im = plt.plot(x, y, \"r\")\n",
  1378. " ims.append(im)\n",
  1379. "\n",
  1380. "ani = animation.ArtistAnimation(fig, ims)\n",
  1381. "plt.show()"
  1382. ]
  1383. }
  1384. ],
  1385. "metadata": {
  1386. "kernelspec": {
  1387. "display_name": "Python 3",
  1388. "language": "python",
  1389. "name": "python3"
  1390. },
  1391. "language_info": {
  1392. "codemirror_mode": {
  1393. "name": "ipython",
  1394. "version": 3
  1395. },
  1396. "file_extension": ".py",
  1397. "mimetype": "text/x-python",
  1398. "name": "python",
  1399. "nbconvert_exporter": "python",
  1400. "pygments_lexer": "ipython3",
  1401. "version": "3.5.2"
  1402. }
  1403. },
  1404. "nbformat": 4,
  1405. "nbformat_minor": 2
  1406. }

机器学习越来越多应用到飞行器、机器人等领域,其目的是利用计算机实现类似人类的智能,从而实现装备的智能化与无人化。本课程旨在引导学生掌握机器学习的基本知识、典型方法与技术,通过具体的应用案例激发学生对该学科的兴趣,鼓励学生能够从人工智能的角度来分析、解决飞行器、机器人所面临的问题和挑战。本课程主要内容包括Python编程基础,机器学习模型,无监督学习、监督学习、深度学习基础知识与实现,并学习如何利用机器学习解决实际问题,从而全面提升自我的《综合能力》。