Skip to content
Snippets Groups Projects
python-data-extra-life-sol.ipynb 262 KiB
Newer Older
ignat's avatar
ignat committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Conway's Game of Life\n",
    "\n",
    "This is a 2D grid of cells, which can be on or off, 'living' or 'dead'. This grid changes over a series of generations.\n",
    "\n",
    "Each cell has 8 neighbours (up, down, left, right and the diagonals). The number of neighbours of each cell determines whether it will live in the next generation:\n",
    "\n",
    "* Cells with less than two neighbours will die\n",
    "* Cells with two neighbours will stay alive if already alive\n",
    "* Cells with three neighbours will come to life\n",
    "* Cells with four or more neighbours will die"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First, run the `import`s below that we'll need for the exercise."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib import animation, rc\n",
    "from IPython.display import HTML\n",
    "import random"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Starting out\n",
    "\n",
    "Have a quick look through the rest of the worksheet to familiarise yourself. All of the code you need to edit is in the cells labelled:\n",
    "\n",
    "```python\n",
    "### Update the grid\n",
    "```\n",
    "\n",
    "and\n",
    "\n",
    "```python\n",
    "### Starting conditions\n",
    "```\n",
    "\n",
    "The eventual goal is that the function `update_cell()` will apply the Life rules as above. `update_grid` will run these rules on the whole grid, and return a new grid (the next generation of the cellular automaton).\n",
    "\n",
    "Let's do something simpler first. In the section `### Update the grid`, edit `update_grid()` so that it:\n",
    "\n",
    "* Creates a new grid the same shape as the one passed to it.\n",
    "* Calls `update_cell` for each position in the grid, and puts the result in the same position in the new grid.\n",
    "* Returns the new grid.\n",
    "\n",
    "Once that's done, you'll be ready to edit `update_cell()` to apply the rules, and return a `0` if the cell is dead in the next generation, and `1` if it's alive.\n",
    "\n",
    "First we should test the code though, and make sure everything works! So for now let's get `update_cell` to return a random `0` or `1`:\n",
    "\n",
    "```python\n",
    "def update_cell(x, y, grid):\n",
    "    return random.choice([0, 1])\n",
    "```\n",
    "\n",
    "Run all of the rest of the cells to the end of the worksheet. When you get to the one marked ```### VIDEO```, after a short wait, you should see video of a randomly changing grid.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## A simple rule\n",
    "\n",
    "Rather than going straight to the Life rules, let's try something simpler.\n",
    "\n",
    "Change `update_cell` so that each cell is alive in the next generation if the cell to the left of it is alive.\n",
    "\n",
    "Re-run the rest of the worksheet and look at the result."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## A less simple rule\n",
    "\n",
    "Now change `update_cell` so that a cell is alive if two cells adjacent to it (up, down, left, right) are alive.\n",
    "\n",
    "You'll have to work around the limits of the grid. If you like, for now you could just ignore the edges. (I.e., just update up to the second-last row and second-last column, and ignore the last row and last column)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Life!\n",
    "\n",
    "Now it's time to implement the Game of Life rules. As before, if you want you can ignore the last row and last column, to make things easier around the edges of the grid."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$\\downarrow$ The code below will need to be filled out for the Game of Life to run."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "### Update the grid\n",
    "\n",
    "def update_cell(x, y, grid):\n",
    "#     print(grid)\n",
    "    y_lim, x_lim = grid.shape\n",
    "    x_down, x_up = attentuate(x, x_lim)\n",
    "    y_down, y_up = attentuate(y, y_lim)\n",
    "    prev_state = grid[y, x]\n",
    "#     grid[y, x] = 0\n",
    "    grid_slice = grid[y_down:y_up, x_down:x_up]\n",
    "    \n",
    "#     print(\"x=\", x, \"y=\", y)\n",
    "#     print(grid_slice)\n",
    "\n",
    "    slice_sum = np.sum(grid_slice) - prev_state\n",
    "#     print(\"Slice sum =\", slice_sum)\n",
    "    \n",
    "    if slice_sum < 2:\n",
    "        new_state = 0\n",
    "        \n",
    "    elif slice_sum == 2:\n",
    "        if prev_state == 1:\n",
    "            new_state = 1\n",
    "        else:\n",
    "            new_state = 0\n",
    "    \n",
    "    elif slice_sum == 3:\n",
    "        new_state = 1\n",
    "    \n",
    "    else:\n",
    "        new_state = 0\n",
    "        \n",
    "        \n",
    "    return new_state\n",
    "\n",
    "\n",
    "def attentuate(x, x_lim):\n",
    "    x_down = x - 1\n",
    "    x_up = x + 1\n",
    "    \n",
    "    if x_down < 0:\n",
    "        x_down = 0\n",
    "    \n",
    "    if x_up > x_lim:\n",
    "        x_up = x_lim\n",
    "        \n",
    "    return x_down, x_up\n",
    "\n",
    "\n",
    "def update_grid(grid):\n",
    "#     print(grid)\n",
    "    new_grid = np.empty(grid.shape)\n",
    "    for (x, y), value in np.ndenumerate(grid):\n",
    "        new_grid[x, y] = update_cell(x, y, grid)\n",
    "    \n",
    "    return new_grid"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$\\downarrow$ This code sets up the starting conditions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "### Starting conditions\n",
    "\n",
    "# random grid\n",
    "start_grid = np.random.randint(2,size=(100,100))\n",
    "\n",
    "# glider\n",
    "#start_grid = np.zeros((100,100))\n",
    "#start_grid[50:53,52] = 1\n",
    "#start_grid[52,51] = 1\n",
    "#start_grid[51,50] = 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$\\downarrow$ This code sets up the plot where we'll display the grid -- you don't need to edit it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/ignat/anaconda3/envs/ds/lib/python3.7/site-packages/matplotlib/cbook/__init__.py:424: MatplotlibDeprecationWarning: \n",
      "Passing one of 'on', 'true', 'off', 'false' as a boolean is deprecated; use an actual boolean (True/False) instead.\n",
      "  warn_deprecated(\"2.2\", \"Passing one of 'on', 'true', 'off', 'false' as a \"\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "fig = plt.figure()\n",
    "ax = plt.axes()\n",
    "image = plt.imshow(start_grid, interpolation='none')\n",
    "plt.set_cmap(\"Greys\")\n",
    "plt.tick_params(axis='x',which='both',bottom='off',top='off',labelbottom='off')\n",
    "plt.tick_params(axis='y',which='both',left='off',right='off',labelleft='off')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$\\downarrow$ The next three code cells are setup for the animation -- you don't need to edit them."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "### Code to animate the grid -- do not modify\n",
    "def init():\n",
    "    return (image,)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "### Code to animate the grid -- do not modify\n",
    "def animate(_):\n",
    "    global grid\n",
    "    grid = update_grid(grid)\n",
    "    image.set_data(grid)\n",
    "    return (image,)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "global grid\n",
    "grid = start_grid\n",
    "anim = animation.FuncAnimation(fig, animate, init_func=init, frames=100, interval=500, blit=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$\\downarrow$ This cell creates a video of the generations of the grid."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<link rel=\"stylesheet\"\n",
       "href=\"https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/\n",
       "css/font-awesome.min.css\">\n",
       "<script language=\"javascript\">\n",
       "  /* Define the Animation class */\n",
       "  function Animation(frames, img_id, slider_id, interval, loop_select_id){\n",
       "    this.img_id = img_id;\n",
       "    this.slider_id = slider_id;\n",
       "    this.loop_select_id = loop_select_id;\n",
       "    this.interval = interval;\n",
       "    this.current_frame = 0;\n",
       "    this.direction = 0;\n",
       "    this.timer = null;\n",
       "    this.frames = new Array(frames.length);\n",
       "\n",
       "    for (var i=0; i<frames.length; i++)\n",
       "    {\n",
       "     this.frames[i] = new Image();\n",
       "     this.frames[i].src = frames[i];\n",
       "    }\n",
       "    document.getElementById(this.slider_id).max = this.frames.length - 1;\n",
       "    this.set_frame(this.current_frame);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.get_loop_state = function(){\n",
       "    var button_group = document[this.loop_select_id].state;\n",
       "    for (var i = 0; i < button_group.length; i++) {\n",
       "        var button = button_group[i];\n",
       "        if (button.checked) {\n",
       "            return button.value;\n",
       "        }\n",
       "    }\n",
       "    return undefined;\n",
       "  }\n",
       "\n",
       "  Animation.prototype.set_frame = function(frame){\n",
       "    this.current_frame = frame;\n",
       "    document.getElementById(this.img_id).src =\n",
       "            this.frames[this.current_frame].src;\n",
       "    document.getElementById(this.slider_id).value = this.current_frame;\n",
       "  }\n",
       "\n",
       "  Animation.prototype.next_frame = function()\n",
       "  {\n",
       "    this.set_frame(Math.min(this.frames.length - 1, this.current_frame + 1));\n",
       "  }\n",
       "\n",
       "  Animation.prototype.previous_frame = function()\n",
       "  {\n",
       "    this.set_frame(Math.max(0, this.current_frame - 1));\n",
       "  }\n",
       "\n",
       "  Animation.prototype.first_frame = function()\n",
       "  {\n",
       "    this.set_frame(0);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.last_frame = function()\n",
       "  {\n",
       "    this.set_frame(this.frames.length - 1);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.slower = function()\n",
       "  {\n",
       "    this.interval /= 0.7;\n",
       "    if(this.direction > 0){this.play_animation();}\n",
       "    else if(this.direction < 0){this.reverse_animation();}\n",
       "  }\n",
       "\n",
       "  Animation.prototype.faster = function()\n",
       "  {\n",
       "    this.interval *= 0.7;\n",
       "    if(this.direction > 0){this.play_animation();}\n",
       "    else if(this.direction < 0){this.reverse_animation();}\n",
       "  }\n",
       "\n",
       "  Animation.prototype.anim_step_forward = function()\n",
       "  {\n",
       "    this.current_frame += 1;\n",
       "    if(this.current_frame < this.frames.length){\n",
       "      this.set_frame(this.current_frame);\n",
       "    }else{\n",
       "      var loop_state = this.get_loop_state();\n",
       "      if(loop_state == \"loop\"){\n",
       "        this.first_frame();\n",
       "      }else if(loop_state == \"reflect\"){\n",
       "        this.last_frame();\n",
       "        this.reverse_animation();\n",
       "      }else{\n",
       "        this.pause_animation();\n",
       "        this.last_frame();\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.anim_step_reverse = function()\n",
       "  {\n",
       "    this.current_frame -= 1;\n",
       "    if(this.current_frame >= 0){\n",
       "      this.set_frame(this.current_frame);\n",
       "    }else{\n",
       "      var loop_state = this.get_loop_state();\n",
       "      if(loop_state == \"loop\"){\n",
       "        this.last_frame();\n",
       "      }else if(loop_state == \"reflect\"){\n",
       "        this.first_frame();\n",
       "        this.play_animation();\n",
       "      }else{\n",
       "        this.pause_animation();\n",
       "        this.first_frame();\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.pause_animation = function()\n",
       "  {\n",
       "    this.direction = 0;\n",
       "    if (this.timer){\n",
       "      clearInterval(this.timer);\n",
       "      this.timer = null;\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.play_animation = function()\n",
       "  {\n",
       "    this.pause_animation();\n",
       "    this.direction = 1;\n",
       "    var t = this;\n",
       "    if (!this.timer) this.timer = setInterval(function() {\n",
       "        t.anim_step_forward();\n",
       "    }, this.interval);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.reverse_animation = function()\n",
       "  {\n",
       "    this.pause_animation();\n",
       "    this.direction = -1;\n",
       "    var t = this;\n",
       "    if (!this.timer) this.timer = setInterval(function() {\n",
       "        t.anim_step_reverse();\n",
       "    }, this.interval);\n",
       "  }\n",
       "</script>\n",
       "\n",
       "<div class=\"animation\" align=\"center\">\n",
       "    <img id=\"_anim_imgfbf9cc9411414f9b9ee842f70ad16512\">\n",
       "    <br>\n",
       "    <input id=\"_anim_sliderfbf9cc9411414f9b9ee842f70ad16512\" type=\"range\" style=\"width:350px\"\n",
       "           name=\"points\" min=\"0\" max=\"1\" step=\"1\" value=\"0\"\n",
       "           onchange=\"animfbf9cc9411414f9b9ee842f70ad16512.set_frame(parseInt(this.value));\"></input>\n",
       "    <br>\n",
       "    <button onclick=\"animfbf9cc9411414f9b9ee842f70ad16512.slower()\"><i class=\"fa fa-minus\"></i></button>\n",
       "    <button onclick=\"animfbf9cc9411414f9b9ee842f70ad16512.first_frame()\"><i class=\"fa fa-fast-backward\">\n",
       "        </i></button>\n",
       "    <button onclick=\"animfbf9cc9411414f9b9ee842f70ad16512.previous_frame()\">\n",
       "        <i class=\"fa fa-step-backward\"></i></button>\n",
       "    <button onclick=\"animfbf9cc9411414f9b9ee842f70ad16512.reverse_animation()\">\n",
       "        <i class=\"fa fa-play fa-flip-horizontal\"></i></button>\n",
       "    <button onclick=\"animfbf9cc9411414f9b9ee842f70ad16512.pause_animation()\"><i class=\"fa fa-pause\">\n",
       "        </i></button>\n",
       "    <button onclick=\"animfbf9cc9411414f9b9ee842f70ad16512.play_animation()\"><i class=\"fa fa-play\"></i>\n",
       "        </button>\n",
       "    <button onclick=\"animfbf9cc9411414f9b9ee842f70ad16512.next_frame()\"><i class=\"fa fa-step-forward\">\n",
       "        </i></button>\n",
       "    <button onclick=\"animfbf9cc9411414f9b9ee842f70ad16512.last_frame()\"><i class=\"fa fa-fast-forward\">\n",
       "        </i></button>\n",
       "    <button onclick=\"animfbf9cc9411414f9b9ee842f70ad16512.faster()\"><i class=\"fa fa-plus\"></i></button>\n",
       "  <form action=\"#n\" name=\"_anim_loop_selectfbf9cc9411414f9b9ee842f70ad16512\" class=\"anim_control\">\n",
       "    <input type=\"radio\" name=\"state\"\n",
       "           value=\"once\" > Once </input>\n",
       "    <input type=\"radio\" name=\"state\"\n",
       "           value=\"loop\" checked> Loop </input>\n",
       "    <input type=\"radio\" name=\"state\"\n",
       "           value=\"reflect\" > Reflect </input>\n",
       "  </form>\n",
       "</div>\n",
       "\n",
       "\n",
       "<script language=\"javascript\">\n",
       "  /* Instantiate the Animation class. */\n",
       "  /* The IDs given should match those used in the template above. */\n",
       "  (function() {\n",
       "    var img_id = \"_anim_imgfbf9cc9411414f9b9ee842f70ad16512\";\n",
       "    var slider_id = \"_anim_sliderfbf9cc9411414f9b9ee842f70ad16512\";\n",
       "    var loop_select_id = \"_anim_loop_selectfbf9cc9411414f9b9ee842f70ad16512\";\n",
       "    var frames = new Array(100);\n",
       "    \n",
       "  frames[0] = \"data:image/png;base64,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\\\n",
       "RU5ErkJggg==\\\n",
       "\"\n",
       "  frames[1] = \"data:image/png;base64,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\\\n",
       "UlKBAZDS/wD8XrKlQO2ANAAAAABJRU5ErkJggg==\\\n",
       "\"\n",
       "  frames[2] = \"data:image/png;base64,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\\\n",
       "\"\n",
       "  frames[3] = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbAAAAEgCAYAAADVKCZpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\\n",
       "AAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBo\\\n",
       "dHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAACYtJREFUeJzt3d1xpDgYBVC8tSE4AOcwnX8EE4QD\\\n",
       "cA69T65tY/oXBN+VznmbmtpZQVN1dYWAt/P5fJ4AIMw/Rw8AAF4hwACIJMAAiCTAAIgkwACIJMAA\\\n",
       "iCTAAIgkwACIJMAAiCTAAIgkwACIJMAAiCTAAIgkwACIJMAAiCTAAIgkwACIJMAAiCTAAIgkwACI\\\n",
       "JMAAiCTAAIgkwACIJMAAiCTAAIgkwACIJMAAiCTAAIgkwACIJMAAiCTAAIgkwACIJMAAiCTAAIj0\\\n",
       "79EDYL339/fp4+Pj6GFAtz4/P6evr6+jh8GMAOvAx8fH9Pfv36OHAd06nU5HD4EFlhABiCTAAIgk\\\n",
       "wACIJMAAiCTAAIgkwACIZBv9YN7e3n78+Xw+HzSS9kY6VhiRBgZAJA1sMCO1kO9jnTcxoA8aGACR\\\n",
       "NDC6N1LrhJFoYABE0sCA4dih2gcNDIBIGhjTNN3eqWd2Sm9c033QwACIJMAAiCTAAIgkwACIZBMH\\\n",
       "0zT9vKnt1UtAAg0MgEgaGFfZasw13y3dNcKRNDAAImlg/GJWzT1rrpGle6yuOV6hgQEQSQODUOmv\\\n",
       "/0oYI7VpYABEEmAARLKESKTK27htUrjNuWArGhgAkTQw2EHrxqjVMCINDIBIGhiRKjeOvcZW+RzA\\\n",
       "HjQwACIJMAAiCTAAIrkHBkzTVPvZuiP5wGtdGhgAkQQYvOjt7c3sfADn83n68+fP0cNggQADIJIA\\\n",
       "AyCSTRywUi+bH1qPv5fzRB0aGACRNDB4kSbxv0falfPF1jQwACJpYMBmLh8r0LhoTQMDIJIAo6kK\\\n",
       "D/tWGEPvzufzr8blvNOaAAMgkntggxjxGRyz//3teX2NeE3zkwYGQCQNjKaOnB2bmffN74sGBkAk\\\n",
       "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\\\n",
       "\"\n",
       "  frames[4] = \"data:image/png;base64,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\\\n",
       "\"\n",
       "  frames[5] = \"data:image/png;base64,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\\\n",
       "SUVORK5CYII=\\\n",
       "\"\n",
       "  frames[6] = \"data:image/png;base64,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\\\n",
       "RK5CYII=\\\n",
       "\"\n",
       "  frames[7] = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbAAAAEgCAYAAADVKCZpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\\n",
       "AAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBo\\\n",
       "dHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAABPNJREFUeJzt3MFt40AUBUHOQiEwAAbh/CNQEAqA\\\n",
       "OczeBV9seTXbdFUE79b4A5Bjzjk3AIj5s3oAAHyHgAGQJGAAJAkYAEkCBkCSgAGQJGAAJAkYAEkC\\\n",
       "BkCSgAGQJGAAJAkYAEkCBkCSgAGQJGAAJAkYAEkCBkCSgAGQJGAAJAkYAEkCBkCSgAGQJGAAJAkY\\\n",
       "AEkCBkCSgAGQJGAAJAkYAEkCBkCSgAGQJGAAJAkYAEkCBkCSgAGQdFs9gNft+74dx7F6BlzW4/HY\\\n",
       "zvNcPYMnAnYBx3Fs9/t99Qy4rI+Pj9UT+IQnRACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgS\\\n",
       "MACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnA\\\n",
       "AEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAED\\\n",
       "IEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyA\\\n",
       "JAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACS\\\n",
       "BAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgS\\\n",
       "MACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnA\\\n",
       "AEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAED0sYY2xhj9QwWEDAAkgQM\\\n",
       "gKTb6gEAr5hzrp7AIi4wAJIEDIAkAQMgScAASBIwAJIEDIAkAQMgScAASBIwAJIEDIAkAQMgScAA\\\n",
       "SBIwAJIEDIAkAQMgScAASBIwAJIEDIAkAQMgScAASBIwAJIEDIAkAQMgScCAf2KMsY0xVs/gwgQM\\\n",
       "gKTb6gHANc05V0/g4lxgACQJGABJAgZAkoABkCRgACQJGABJAgZAku/A+LLP/q7gmx/g3VxgACQJ\\\n",
       "GABJnhD5Ms+FwP/ABQZAkoABkCRgACQJGABJAgZAkoABkCRgACQJGABJAgZAkj9x8HbPPwP2Zw/g\\\n",
       "O1xgACQJGABJnhB5O0+GwE9wgQGQJGAAJAkYAEkCBkCSgAGQJGAAJAkYAEkCBkCSgAGQJGAAJAkY\\\n",
       "AEkCBkCSgAGQJGAAJAkYAEkCBkCSgAGQJGAAJAkYAEkCBkCSgAGQJGAAJAkYAEkCBkCSgAGQJGDA\\\n",
       "y8YY2xhj9Qx+GQEDIOm2egDQN+dcPYFfyAUGQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAkCRgASQIG\\\n",
       "QJKAAZAkYAAkCRgASQIGQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAkjTnn\\\n",
       "XD2C1+z7vh3HsXoGXNbj8djO81w9gycCBkCSJ0QAkgQMgCQBAyBJwABIEjAAkgQMgCQBAyBJwABI\\\n",
       "EjAAkgQMgCQBAyBJwABIEjAAkgQMgCQBAyBJwABIEjAAkgQMgCQBAyBJwABIEjAAkgQMgCQBAyBJ\\\n",
       "wABIEjAAkgQMgCQBAyBJwABIEjAAkgQMgCQBAyBJwABIEjAAkgQMgKS/sxgyp9KGfeMAAAAASUVO\\\n",
       "RK5CYII=\\\n",
       "\"\n",
       "  frames[8] = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbAAAAEgCAYAAADVKCZpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\\n",
       "AAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBo\\\n",
       "dHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAABKBJREFUeJzt2EFtxEAABEFfdBAMYEGYPwKDMABz\\\n",
       "2PxPeeUeq7aqEMyvpXnNOecGADE/qwcAwH8IGABJAgZAkoABkCRgACQJGABJAgZAkoABkCRgACQJ\\\n",
       "GABJAgZAkoABkCRgACQJGABJAgZAkoABkCRgACQJGABJAgZAkoABkCRgACQJGABJAgZAkoABkCRg\\\n",
       "ACQJGABJAgZAkoABkCRgACQJGABJAgZAkoABkCRgACQJGABJ79UD+N6+79sYY/UMeKzrurb7vlfP\\\n",
       "4IOAPcAYYzvPc/UMeKzjOFZP4A8uRACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyA\\\n",
       "JAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACS\\\n",
       "BAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgS\\\n",
       "MACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnA\\\n",
       "AEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAED\\\n",
       "IEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyA\\\n",
       "JAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACS\\\n",
       "BAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgS\\\n",
       "MACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnA\\\n",
       "AEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAED\\\n",
       "IEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyA\\\n",
       "JAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACS\\\n",
       "BAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgS\\\n",
       "MACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnA\\\n",
       "AEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIOk155yrR/Cdfd+3McbqGfBY13Vt932vnsEHAQMg\\\n",
       "yYUIQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAk\\\n",
       "CRgASQIGQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAkCRgASQIGQJKAAZAk\\\n",
       "YAAkCRgASQIGQJKAAZD0C2SAHZYXaq/wAAAAAElFTkSuQmCC\\\n",
       "\"\n",
       "  frames[9] = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbAAAAEgCAYAAADVKCZpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\\n",
       "AAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBo\\\n",
       "dHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAABKBJREFUeJzt2EFtxEAABEFfdBAMYEGYPwKDMABz\\\n",
       "2PxPeeUeq7aqEMyvpXnNOecGADE/qwcAwH8IGABJAgZAkoABkCRgACQJGABJAgZAkoABkCRgACQJ\\\n",
       "GABJAgZAkoABkCRgACQJGABJAgZAkoABkCRgACQJGABJAgZAkoABkCRgACQJGABJAgZAkoABkCRg\\\n",
       "ACQJGABJAgZAkoABkCRgACQJGABJAgZAkoABkCRgACQJGABJ79UD+N6+79sYY/UMeKzrurb7vlfP\\\n",
       "4IOAPcAYYzvPc/UMeKzjOFZP4A8uRACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyA\\\n",
       "JAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACS\\\n",
       "BAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgS\\\n",
       "MACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnA\\\n",
       "AEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAED\\\n",
       "IEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyA\\\n",
       "JAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACS\\\n",
       "BAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgS\\\n",
       "MACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnA\\\n",
       "AEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAED\\\n",
       "IEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyA\\\n",
       "JAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACS\\\n",
       "BAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgS\\\n",
       "MACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnA\\\n",
       "AEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIOk155yrR/Cdfd+3McbqGfBY13Vt932vnsEHAQMg\\\n",
       "yYUIQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAk\\\n",
       "CRgASQIGQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAkCRgASQIGQJKAAZAk\\\n",
       "YAAkCRgASQIGQJKAAZD0C2SAHZYXaq/wAAAAAElFTkSuQmCC\\\n",
       "\"\n",
       "  frames[10] = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbAAAAEgCAYAAADVKCZpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\\n",
       "AAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBo\\\n",
       "dHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAABKBJREFUeJzt2EFtxEAABEFfdBAMYEGYPwKDMABz\\\n",
       "2PxPeeUeq7aqEMyvpXnNOecGADE/qwcAwH8IGABJAgZAkoABkCRgACQJGABJAgZAkoABkCRgACQJ\\\n",
       "GABJAgZAkoABkCRgACQJGABJAgZAkoABkCRgACQJGABJAgZAkoABkCRgACQJGABJAgZAkoABkCRg\\\n",
       "ACQJGABJAgZAkoABkCRgACQJGABJAgZAkoABkCRgACQJGABJ79UD+N6+79sYY/UMeKzrurb7vlfP\\\n",
       "4IOAPcAYYzvPc/UMeKzjOFZP4A8uRACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyA\\\n",
       "JAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACS\\\n",
       "BAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgS\\\n",
       "MACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnA\\\n",
       "AEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAED\\\n",
       "IEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyA\\\n",
       "JAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACS\\\n",
       "BAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgS\\\n",
       "MACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnA\\\n",
       "AEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAED\\\n",
       "IEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyA\\\n",
       "JAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACS\\\n",
       "BAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgS\\\n",
       "MACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnA\\\n",
       "AEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIOk155yrR/Cdfd+3McbqGfBY13Vt932vnsEHAQMg\\\n",
       "yYUIQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAk\\\n",
       "CRgASQIGQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAkCRgASQIGQJKAAZAkYAAkCRgASQIGQJKAAZAk\\\n",
       "YAAkCRgASQIGQJKAAZD0C2SAHZYXaq/wAAAAAElFTkSuQmCC\\\n",
       "\"\n",
       "  frames[11] = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbAAAAEgCAYAAADVKCZpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\\\n",
       "AAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBo\\\n",
       "dHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAABKBJREFUeJzt2EFtxEAABEFfdBAMYEGYPwKDMABz\\\n",
       "2PxPeeUeq7aqEMyvpXnNOecGADE/qwcAwH8IGABJAgZAkoABkCRgACQJGABJAgZAkoABkCRgACQJ\\\n",
       "GABJAgZAkoABkCRgACQJGABJAgZAkoABkCRgACQJGABJAgZAkoABkCRgACQJGABJAgZAkoABkCRg\\\n",
       "ACQJGABJAgZAkoABkCRgACQJGABJAgZAkoABkCRgACQJGABJ79UD+N6+79sYY/UMeKzrurb7vlfP\\\n",
       "4IOAPcAYYzvPc/UMeKzjOFZP4A8uRACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyA\\\n",
       "JAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACS\\\n",
       "BAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgS\\\n",
       "MACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnA\\\n",
       "AEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAED\\\n",
       "IEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyA\\\n",
       "JAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACS\\\n",
       "BAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgS\\\n",
       "MACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnAAEgSMACSBAyAJAEDIEnA\\\n",