{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "116abb0d",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.animation as animation\n",
    "%matplotlib notebook"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "2bcb3e8d",
   "metadata": {},
   "outputs": [],
   "source": [
    "def init_grille(n,m):\n",
    "    return([[0 for i in range (m)] for j in range(n)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "6ad9fb5d",
   "metadata": {},
   "outputs": [],
   "source": [
    "def aleat_grille(n,m):\n",
    "    array = np.random.randint(0, high=2, size=(n,m), dtype=int)\n",
    "    return array"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "172de5ab",
   "metadata": {},
   "source": [
    "On définit les trois fonctions de voisinage pour une case (i,j) de la grille selon la topologie"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "fdc87414",
   "metadata": {},
   "outputs": [],
   "source": [
    "def voisin_tore(grille, i, j):\n",
    "    n=len(grille)\n",
    "    m=len(grille[0])\n",
    "    return( [[grille[k%n][l%m] for l in range(j-1,j+2)] for k in range(i-1,i+2)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "d4d68c8c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# /!\\ problème \"index out of range\" /!\\\n",
    "def voisin_klein(grille,i,j):\n",
    "    n=len(grille)\n",
    "    m=len(grille[0])\n",
    "    if i==0:\n",
    "        return([[grille[n-1][(m-j-1)%m],grille[n-1][(m-j)%m],grille[n-1][(m-j+1)%m]],[grille[0][j-1],grille[0][j],grille[0][j+1]],[grille[1][j-1],grille[1][j],grille[1][j+1]]])\n",
    "    elif i==(n-1):\n",
    "        return([grille[n-2][(j-1)%m],grille[n-2][j%m],grille[n-2][(j+1)%m]],[grille[n-1][(j-1)%m],grille[n-1][j%m],grille[n-1][(j+1)%m]],[[grille[0][(m-j-1)%m],grille[0][(m-j)%m],grille[0][(m-j+1)%m]],])\n",
    "    else:\n",
    "        return([[grille[k][l%m] for l in range(j-1,j+1)] for k in range(i-1,i+1)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "591255ae",
   "metadata": {},
   "outputs": [],
   "source": [
    "# /!\\ problème \"index out of range\" /!\\\n",
    "def voisin_charlie(grille,i,j):\n",
    "    vois=klein(grille,i,j)\n",
    "    gi=[[(m-j-1)%m,(m-j)%m,(m-j+1)%m],[(j-1)%m,j,(j+1)%m],[(j-1)%m,j,(j+1)%m]]\n",
    "    gj=[[(n-i-1)%n,(i-1)%n,(i-1)%n],[(n-i)%n,i,i],[(n-i+1)%n,(i+1)%n,(i+1)%n]]\n",
    "    def auxi(k,l):\n",
    "        if i==0:\n",
    "            return(gi[k][l])\n",
    "        elif i==(n-1):\n",
    "            return(gi[l][k])\n",
    "        else:\n",
    "            return((l+j-1)%m)\n",
    "    def auxj(k,l):\n",
    "        if j==0:\n",
    "            return(gj[k][l])\n",
    "        elif j==(m-1):\n",
    "            return(gj[l][k])\n",
    "        else:\n",
    "            return((k+i-1)%n)\n",
    "    return([[grille[auxj(k,l)][auxi(k,l)] for l in range(3)] for k in range(3)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "1f53ab3c",
   "metadata": {},
   "outputs": [],
   "source": [
    "def CONWAYvie(vois):\n",
    "    S=sum(list(map(sum,vois)))-vois[1][1]\n",
    "    E=vois[1][1]\n",
    "    return(int((S==3) or (E==1 and S==2)))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "13d438db",
   "metadata": {},
   "source": [
    "On a seulement à changer la fonction de voisinage pour changer de topologie (ici tore par défaut)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c65aa535",
   "metadata": {},
   "source": [
    "La fonction suivant donne la grille de génération suivante selon la règle choisie (ici conwayvie par défaut)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "fe2d8b3e",
   "metadata": {},
   "outputs": [],
   "source": [
    "def suivant(grille):\n",
    "    n=len(grille)\n",
    "    m=len(grille[0])\n",
    "    neogrille=init_grille(n,m)\n",
    "    for i in range(n):\n",
    "        for j in range(m):\n",
    "            vois=voisin_tore(grille,i,j)\n",
    "            neogrille[i][j]=CONWAYvie(vois)\n",
    "    return(neogrille)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3af565d9",
   "metadata": {},
   "source": [
    "On définit une structure de départ (ici simple) qui donne des motifs plutôt riches et nombreux"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "1ffcb433",
   "metadata": {},
   "outputs": [],
   "source": [
    "def planeur(grille):\n",
    "    grille[0][4]=1\n",
    "    grille[1][5]=1\n",
    "    grille[2][3]=1\n",
    "    grille[2][4]=1\n",
    "    grille[2][5]=1\n",
    "    return grille"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a4a675b7",
   "metadata": {},
   "source": [
    "On crée une fonction qui affiche l'animation de l'évolution de la grille et l'envoie dans un fichier gif"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "02f049c5",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "/* global mpl */\n",
       "window.mpl = {};\n",
       "\n",
       "mpl.get_websocket_type = function () {\n",
       "    if (typeof WebSocket !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert(\n",
       "            'Your browser does not have WebSocket support. ' +\n",
       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "                'Firefox 4 and 5 are also supported but you ' +\n",
       "                'have to enable WebSockets in about:config.'\n",
       "        );\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById('mpl-warnings');\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent =\n",
       "                'This browser does not support binary websocket messages. ' +\n",
       "                'Performance may be slow.';\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = document.createElement('div');\n",
       "    this.root.setAttribute('style', 'display: inline-block');\n",
       "    this._root_extra_style(this.root);\n",
       "\n",
       "    parent_element.appendChild(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen = function () {\n",
       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
       "        fig.send_message('send_image_mode', {});\n",
       "        if (fig.ratio !== 1) {\n",
       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
       "        }\n",
       "        fig.send_message('refresh', {});\n",
       "    };\n",
       "\n",
       "    this.imageObj.onload = function () {\n",
       "        if (fig.image_mode === 'full') {\n",
       "            // Full images could contain transparency (where diff images\n",
       "            // almost always do), so we need to clear the canvas so that\n",
       "            // there is no ghosting.\n",
       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "        }\n",
       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "    };\n",
       "\n",
       "    this.imageObj.onunload = function () {\n",
       "        fig.ws.close();\n",
       "    };\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_header = function () {\n",
       "    var titlebar = document.createElement('div');\n",
       "    titlebar.classList =\n",
       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
       "    var titletext = document.createElement('div');\n",
       "    titletext.classList = 'ui-dialog-title';\n",
       "    titletext.setAttribute(\n",
       "        'style',\n",
       "        'width: 100%; text-align: center; padding: 3px;'\n",
       "    );\n",
       "    titlebar.appendChild(titletext);\n",
       "    this.root.appendChild(titlebar);\n",
       "    this.header = titletext;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
       "    canvas_div.setAttribute(\n",
       "        'style',\n",
       "        'border: 1px solid #ddd;' +\n",
       "            'box-sizing: content-box;' +\n",
       "            'clear: both;' +\n",
       "            'min-height: 1px;' +\n",
       "            'min-width: 1px;' +\n",
       "            'outline: 0;' +\n",
       "            'overflow: hidden;' +\n",
       "            'position: relative;' +\n",
       "            'resize: both;'\n",
       "    );\n",
       "\n",
       "    function on_keyboard_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.key_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'keydown',\n",
       "        on_keyboard_event_closure('key_press')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'keyup',\n",
       "        on_keyboard_event_closure('key_release')\n",
       "    );\n",
       "\n",
       "    this._canvas_extra_style(canvas_div);\n",
       "    this.root.appendChild(canvas_div);\n",
       "\n",
       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
       "    canvas.classList.add('mpl-canvas');\n",
       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
       "\n",
       "    this.context = canvas.getContext('2d');\n",
       "\n",
       "    var backingStore =\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        this.context.webkitBackingStorePixelRatio ||\n",
       "        this.context.mozBackingStorePixelRatio ||\n",
       "        this.context.msBackingStorePixelRatio ||\n",
       "        this.context.oBackingStorePixelRatio ||\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        1;\n",
       "\n",
       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
       "        'canvas'\n",
       "    ));\n",
       "    rubberband_canvas.setAttribute(\n",
       "        'style',\n",
       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
       "    );\n",
       "\n",
       "    // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
       "    if (this.ResizeObserver === undefined) {\n",
       "        if (window.ResizeObserver !== undefined) {\n",
       "            this.ResizeObserver = window.ResizeObserver;\n",
       "        } else {\n",
       "            var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
       "            this.ResizeObserver = obs.ResizeObserver;\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
       "        var nentries = entries.length;\n",
       "        for (var i = 0; i < nentries; i++) {\n",
       "            var entry = entries[i];\n",
       "            var width, height;\n",
       "            if (entry.contentBoxSize) {\n",
       "                if (entry.contentBoxSize instanceof Array) {\n",
       "                    // Chrome 84 implements new version of spec.\n",
       "                    width = entry.contentBoxSize[0].inlineSize;\n",
       "                    height = entry.contentBoxSize[0].blockSize;\n",
       "                } else {\n",
       "                    // Firefox implements old version of spec.\n",
       "                    width = entry.contentBoxSize.inlineSize;\n",
       "                    height = entry.contentBoxSize.blockSize;\n",
       "                }\n",
       "            } else {\n",
       "                // Chrome <84 implements even older version of spec.\n",
       "                width = entry.contentRect.width;\n",
       "                height = entry.contentRect.height;\n",
       "            }\n",
       "\n",
       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
       "            // the canvas container.\n",
       "            if (entry.devicePixelContentBoxSize) {\n",
       "                // Chrome 84 implements new version of spec.\n",
       "                canvas.setAttribute(\n",
       "                    'width',\n",
       "                    entry.devicePixelContentBoxSize[0].inlineSize\n",
       "                );\n",
       "                canvas.setAttribute(\n",
       "                    'height',\n",
       "                    entry.devicePixelContentBoxSize[0].blockSize\n",
       "                );\n",
       "            } else {\n",
       "                canvas.setAttribute('width', width * fig.ratio);\n",
       "                canvas.setAttribute('height', height * fig.ratio);\n",
       "            }\n",
       "            canvas.setAttribute(\n",
       "                'style',\n",
       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
       "            );\n",
       "\n",
       "            rubberband_canvas.setAttribute('width', width);\n",
       "            rubberband_canvas.setAttribute('height', height);\n",
       "\n",
       "            // And update the size in Python. We ignore the initial 0/0 size\n",
       "            // that occurs as the element is placed into the DOM, which should\n",
       "            // otherwise not happen due to the minimum size styling.\n",
       "            if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
       "                fig.request_resize(width, height);\n",
       "            }\n",
       "        }\n",
       "    });\n",
       "    this.resizeObserverInstance.observe(canvas_div);\n",
       "\n",
       "    function on_mouse_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.mouse_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousedown',\n",
       "        on_mouse_event_closure('button_press')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseup',\n",
       "        on_mouse_event_closure('button_release')\n",
       "    );\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousemove',\n",
       "        on_mouse_event_closure('motion_notify')\n",
       "    );\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseenter',\n",
       "        on_mouse_event_closure('figure_enter')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseleave',\n",
       "        on_mouse_event_closure('figure_leave')\n",
       "    );\n",
       "\n",
       "    canvas_div.addEventListener('wheel', function (event) {\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        on_mouse_event_closure('scroll')(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.appendChild(canvas);\n",
       "    canvas_div.appendChild(rubberband_canvas);\n",
       "\n",
       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
       "    this.rubberband_context.strokeStyle = '#000000';\n",
       "\n",
       "    this._resize_canvas = function (width, height, forward) {\n",
       "        if (forward) {\n",
       "            canvas_div.style.width = width + 'px';\n",
       "            canvas_div.style.height = height + 'px';\n",
       "        }\n",
       "    };\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
       "        event.preventDefault();\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus() {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'mpl-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'mpl-button-group';\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'mpl-button-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
       "        button.classList = 'mpl-widget';\n",
       "        button.setAttribute('role', 'button');\n",
       "        button.setAttribute('aria-disabled', 'false');\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "\n",
       "        var icon_img = document.createElement('img');\n",
       "        icon_img.src = '_images/' + image + '.png';\n",
       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
       "        icon_img.alt = tooltip;\n",
       "        button.appendChild(icon_img);\n",
       "\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    var fmt_picker = document.createElement('select');\n",
       "    fmt_picker.classList = 'mpl-widget';\n",
       "    toolbar.appendChild(fmt_picker);\n",
       "    this.format_dropdown = fmt_picker;\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = document.createElement('option');\n",
       "        option.selected = fmt === mpl.default_extension;\n",
       "        option.innerHTML = fmt;\n",
       "        fmt_picker.appendChild(option);\n",
       "    }\n",
       "\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_message = function (type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function () {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
       "        fig.send_message('refresh', {});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
       "    var x0 = msg['x0'] / fig.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
       "    var x1 = msg['x1'] / fig.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0,\n",
       "        0,\n",
       "        fig.canvas.width / fig.ratio,\n",
       "        fig.canvas.height / fig.ratio\n",
       "    );\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch (cursor) {\n",
       "        case 0:\n",
       "            cursor = 'pointer';\n",
       "            break;\n",
       "        case 1:\n",
       "            cursor = 'default';\n",
       "            break;\n",
       "        case 2:\n",
       "            cursor = 'crosshair';\n",
       "            break;\n",
       "        case 3:\n",
       "            cursor = 'move';\n",
       "            break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
       "    for (var key in msg) {\n",
       "        if (!(key in fig.buttons)) {\n",
       "            continue;\n",
       "        }\n",
       "        fig.buttons[key].disabled = !msg[key];\n",
       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
       "    if (msg['mode'] === 'PAN') {\n",
       "        fig.buttons['Pan'].classList.add('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    } else if (msg['mode'] === 'ZOOM') {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.add('active');\n",
       "    } else {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message('ack', {});\n",
       "};\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = 'image/png';\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src\n",
       "                );\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data\n",
       "            );\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        } else if (\n",
       "            typeof evt.data === 'string' &&\n",
       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
       "        ) {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig['handle_' + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\n",
       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
       "                msg\n",
       "            );\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\n",
       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
       "                    e,\n",
       "                    e.stack,\n",
       "                    msg\n",
       "                );\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "};\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function (e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e) {\n",
       "        e = window.event;\n",
       "    }\n",
       "    if (e.target) {\n",
       "        targ = e.target;\n",
       "    } else if (e.srcElement) {\n",
       "        targ = e.srcElement;\n",
       "    }\n",
       "    if (targ.nodeType === 3) {\n",
       "        // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "    }\n",
       "\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    var boundingRect = targ.getBoundingClientRect();\n",
       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
       "\n",
       "    return { x: x, y: y };\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys(original) {\n",
       "    return Object.keys(original).reduce(function (obj, key) {\n",
       "        if (typeof original[key] !== 'object') {\n",
       "            obj[key] = original[key];\n",
       "        }\n",
       "        return obj;\n",
       "    }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
       "    var canvas_pos = mpl.findpos(event);\n",
       "\n",
       "    if (name === 'button_press') {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * this.ratio;\n",
       "    var y = canvas_pos.y * this.ratio;\n",
       "\n",
       "    this.send_message(name, {\n",
       "        x: x,\n",
       "        y: y,\n",
       "        button: event.button,\n",
       "        step: event.step,\n",
       "        guiEvent: simpleKeys(event),\n",
       "    });\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.key_event = function (event, name) {\n",
       "    // Prevent repeat events\n",
       "    if (name === 'key_press') {\n",
       "        if (event.which === this._key) {\n",
       "            return;\n",
       "        } else {\n",
       "            this._key = event.which;\n",
       "        }\n",
       "    }\n",
       "    if (name === 'key_release') {\n",
       "        this._key = null;\n",
       "    }\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which !== 17) {\n",
       "        value += 'ctrl+';\n",
       "    }\n",
       "    if (event.altKey && event.which !== 18) {\n",
       "        value += 'alt+';\n",
       "    }\n",
       "    if (event.shiftKey && event.which !== 16) {\n",
       "        value += 'shift+';\n",
       "    }\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
       "    if (name === 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message('toolbar_button', { name: name });\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "\n",
       "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
       "// prettier-ignore\n",
       "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
       "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\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";/* global mpl */\n",
       "\n",
       "var comm_websocket_adapter = function (comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function () {\n",
       "        comm.close();\n",
       "    };\n",
       "    ws.send = function (m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function (msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data']);\n",
       "    });\n",
       "    return ws;\n",
       "};\n",
       "\n",
       "mpl.mpl_figure_comm = function (comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = document.getElementById(id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm);\n",
       "\n",
       "    function ondownload(figure, _format) {\n",
       "        window.open(figure.canvas.toDataURL());\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element;\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error('Failed to find cell for figure', id, fig);\n",
       "        return;\n",
       "    }\n",
       "    fig.cell_info[0].output_area.element.on(\n",
       "        'cleared',\n",
       "        { fig: fig },\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
       "    var width = fig.canvas.width / fig.ratio;\n",
       "    fig.cell_info[0].output_area.element.off(\n",
       "        'cleared',\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "    fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable();\n",
       "    fig.parent_element.innerHTML =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "    fig.close_ws(fig, msg);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width / this.ratio;\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message('ack', {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () {\n",
       "        fig.push_to_output();\n",
       "    }, 1000);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'btn-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'btn-group';\n",
       "    var button;\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'btn-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        button = fig.buttons[name] = document.createElement('button');\n",
       "        button.classList = 'btn btn-default';\n",
       "        button.href = '#';\n",
       "        button.title = name;\n",
       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message pull-right';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = document.createElement('div');\n",
       "    buttongrp.classList = 'btn-group inline pull-right';\n",
       "    button = document.createElement('button');\n",
       "    button.classList = 'btn btn-mini btn-primary';\n",
       "    button.href = '#';\n",
       "    button.title = 'Stop Interaction';\n",
       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
       "    button.addEventListener('click', function (_evt) {\n",
       "        fig.handle_close(fig, {});\n",
       "    });\n",
       "    button.addEventListener(\n",
       "        'mouseover',\n",
       "        on_mouseover_closure('Stop Interaction')\n",
       "    );\n",
       "    buttongrp.appendChild(button);\n",
       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._remove_fig_handler = function (event) {\n",
       "    var fig = event.data.fig;\n",
       "    if (event.target !== this) {\n",
       "        // Ignore bubbled events from children.\n",
       "        return;\n",
       "    }\n",
       "    fig.close_ws(fig, {});\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (el) {\n",
       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
       "    // this is important to make the div 'focusable\n",
       "    el.setAttribute('tabindex', 0);\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    } else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager) {\n",
       "        manager = IPython.keyboard_manager;\n",
       "    }\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which === 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "};\n",
       "\n",
       "mpl.find_output_cell = function (html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i = 0; i < ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code') {\n",
       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] === html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "};\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel !== null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target(\n",
       "        'matplotlib',\n",
       "        mpl.mpl_figure_comm\n",
       "    );\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAAPACAYAAABq3NR5AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFAKADAAQAAAABAAADwAAAAADIn4SfAABAAElEQVR4AezdDYxcVdkH8LOwtJUPxQpoaoukwYbG4EeEBYEKEoUgwfgFhigoIhBUAgRFoxEhKoKIqMRADChiFERCSAQMGL4EwdCAIEirfBm3UKKQCpRCa2lfZt7sWNxue3pn9t77nP1NQvbuzDn3POf3HH3l/87sDK19+ZE8CBAgQIAAAQIECBAgQIAAAQIECBAoUmCzIndlUwQIECBAgAABAgQIECBAgAABAgQIdAUEgA4CAQIECBAgQIAAAQIECBAgQIAAgYIFBIAFN9fWCBAgQIAAAQIECBAgQIAAAQIECAgAnQECBAgQIECAAAECBAgQIECAAAECBQsIAAturq0RIECAAAECBAgQIECAAAECBAgQEAA6AwQIECBAgAABAgQIECBAgAABAgQKFhAAFtxcWyNAgAABAgQIECBAgAABAgQIECAgAHQGCBAgQIAAAQIECBAgQIAAAQIECBQsIAAsuLm2RoAAAQIECBAgQIAAAQIECBAgQEAA6AwQIECAAAECBAgQIECAAAECBAgQKFhAAFhwc22NAAECBAgQIECAAAECBAgQIECAgADQGSBAgAABAgQIECBAgAABAgQIECBQsIAAsODm2hoBAgQIECBAgAABAgQIECBAgAABAaAzQIAAAQIECBAgQIAAAQIECBAgQKBgAQFgwc21NQIECBAgQIAAAQIECBAgQIAAAQICQGeAAAECBAgQIECAAAECBAgQIECAQMECAsCCm2trBAgQIECAAAECBAgQIECAAAECBASAzgABAgQIECBAgAABAgQIECBAgACBggUEgAU319YIECBAgAABAgQIECBAgAABAgQICACdAQIECBAgQIAAAQIECBAgQIAAAQIFCwgAC26urREgQIAAAQIECBAgQIAAAQIECBAQADoDBAgQIECAAAECBAgQIECAAAECBAoWEAAW3FxbI0CAAAECBAgQIECAAAECBAgQICAAdAYIECBAgAABAgQIECBAgAABAgQIFCwgACy4ubZGgAABAgQIECBAgAABAgQIECBAQADoDBAgQIAAAQIECBAgQIAAAQIECBAoWEAAWHBzbY0AAQIECBAgQIAAAQIECBAgQICAANAZIECAAAECBAgQIECAAAECBAgQIFCwgACw4ObaGgECBAgQIECAAAECBAgQIECAAAEBoDNAgAABAgQIECBAgAABAgQIECBAoGABAWDBzbU1AgQIECBAgAABAgQIECBAgAABAgJAZ4AAAQIECBAgQIAAAQIECBAgQIBAwQICwIKba2sECBAgQIAAAQIECBAgQIAAAQIEBIDOAAECBAgQIECAAAECBAgQIECAAIGCBQSABTfX1ggQIECAAAECBAgQIECAAAECBAgIAJ0BAgQIECBAgAABAgQIECBAgAABAgULCAALbq6tESBAgAABAgQIECBAgAABAgQIEBAAOgMECBAgQIAAAQIECBAgQIAAAQIEChYQABbcXFsjQIAAAQIECBAgQIAAAQIECBAgIAB0BggQIECAAAECBAgQIECAAAECBAgULCAALLi5tkaAAAECBAgQIECAAAECBAgQIEBAAOgMECBAgAABAgQIECBAgAABAgQIEChYQABYcHNtjQABAgQIECBAgAABAgQIECBAgIAA0BkgQIAAAQIECBAgQIAAAQIECBAgULCAALDg5toaAQIECBAgQIAAAQIECBAgQIAAAQGgM0CAAAECBAgQIECAAAECBAgQIECgYAEBYMHNtTUCBAgQIECAAAECBAgQIECAAAECAkBngAABAgQIECBAgAABAgQIECBAgEDBAgLAgptrawQIECBAgAABAgQIECBAgAABAgQEgM4AAQIECBAgQIAAAQIECBAgQIAAgYIFBIAFN9fWCBAgQIAAAQIECBAgQIAAAQIECAgAnQECBAgQIECAAAECBAgQIECAAAECBQsIAAturq0RIECAAAECBAgQIECAAAECBAgQEAA6AwQIECBAgAABAgQIECBAgAABAgQKFhAAFtxcWyNAgAABAgQIECBAgAABAgQIECAgAHQGCBAgQIAAAQIECBAgQIAAAQIECBQsIAAsuLm2RoAAAQIECBAgQIAAAQIECBAgQEAA6AwQIECAAAECBAgQIECAAAECBAgQKFhAAFhwc22NAAECBAgQIECAAAECBAgQIECAgADQGSBAgAABAgQIECBAgAABAgQIECBQsIAAsODm2hoBAgQIECBAgAABAgQIECBAgAABAaAzQIAAAQIECBAgQIAAAQIECBAgQKBgAQFgwc21NQIECBAgQIAAAQIECBAgQIAAAQICQGeAAAECBAgQIECAAAECBAgQIECAQMECAsCCm2trBAgQIECAAAECBAgQIECAAAECBASAzgABAgQIECBAgAABAgQIECBAgACBggUEgAU319YIECBAgAABAgQIECBAgAABAgQICACdAQIECBAgQIAAAQIECBAgQIAAAQIFCwgAC26urREgQIAAAQIECBAgQIAAAQIECBAQADoDBAgQIECAAAECBAgQIECAAAECBAoWEAAW3FxbI0CAAAECBAgQIECAAAECBAgQICAAdAYIECBAgAABAgQIECBAgAABAgQIFCwgACy4ubZGgAABAgQIECBAgAABAgQIECBAQADoDBAgQIAAAQIECBAgQIAAAQIECBAoWEAAWHBzbY0AAQIECBAgQIAAAQIECBAgQICAANAZIECAAAECBAgQIECAAAECBAgQIFCwgACw4ObaGgECBAgQIECAAAECBAgQIECAAAEBoDNAgAABAgQIECBAgAABAgQIECBAoGABAWDBzbU1AgQIECBAgAABAgQIECBAgAABAgJAZ4AAAQIECBAgQIAAAQIECBAgQIBAwQICwIKba2sECBAgQIAAAQIECBAgQIAAAQIEBIDOAAECBAgQIECAAAECBAgQIECAAIGCBQSABTfX1ggQIECAAAECBAgQIECAAAECBAgIAJ0BAgQIECBAgAABAgQIECBAgAABAgULCAALbq6tESBAgAABAgQIECBAgAABAgQIEBAAOgMECBAgQIAAAQIECBAgQIAAAQIEChYQABbcXFsjQIAAAQIECBAgQIAAAQIECBAgIAB0BggQIECAAAECBAgQIECAAAECBAgULCAALLi5tkaAAAECBAgQIECAAAECBAgQIEBAAOgMECBAgAABAgQIECBAgAABAgQIEChYQABYcHNtjQABAgQIECBAgAABAgQIECBAgIAA0BkgQIAAAQIECBAgQIAAAQIECBAgULCAALDg5toaAQIECBAgQIAAAQIECBAgQIAAAQGgM0CAAAECBAgQIECAAAECBAgQIECgYAEBYMHNtTUCBAgQIECAAAECBAgQIECAAAECAkBngAABAgQIECBAgAABAgQIECBAgEDBAgLAgptrawQIECBAgAABAgQIECBAgAABAgQEgM4AAQIECBAgQIAAAQIECBAgQIAAgYIFBIAFN9fWCBAgQIAAAQIECBAgQIAAAQIECAgAnQECBAgQIECAAAECBAgQIECAAAECBQsIAAturq0RIECAAAECBAgQIECAAAECBAgQEAA6AwQIECBAgAABAgQIECBAgAABAgQKFhAAFtxcWyNAgAABAgQIECBAgAABAgQIECAgAHQGCBAgQIAAAQIECBAgQIAAAQIECBQsIAAsuLm2RoAAAQIECBAgQIAAAQIECBAgQEAA6AwQIECAAAECBAgQIECAAAECBAgQKFhAAFhwc22NAAECBAgQIECAAAECBAgQIECAgADQGSBAgAABAgQIECBAgAABAgQIECBQsIAAsODm2hoBAgQIECBAgAABAgQIECBAgAABAaAzQIAAAQIECBAgQIAAAQIECBAgQKBgAQFgwc21NQIECBAgQIAAAQIECBAgQIAAAQICQGeAAAECBAgQIECAAAECBAgQIECAQMECwwXvzdYIEGiZwIsvvpjuv//+blXbb799Gh72X0Eta5FyCBAgQIAAAQIEChZYvXp1+te//tXd4a677ppmzJhR8G5tjQCBdQX82/e6Gq4JEJhUgU74NzIyMqlruDkBAgQIECBAgAABAhsXuOuuu9Luu+++8YFGECBQhICPABfRRpsgQIAAAQIECBAgQIAAAQIECBAgsH4B7wBcv4tnCRCYBIHOx37HHrun96Tp6VVjv/pJgAABAgQIECBAgMAkC6xML6SF6ebuKuv+b/NJXtbtCRBogYAAsAVNUAKBqSKw7t/864R/M4a2nCpbt08CBAgQIECAAAECzQus/W8J6/5v8/8+64oAgVIFfAS41M7aFwECBAgQIECAAAECBAgQIECAAIGXBQSAjgEBAgQIECBAgAABAgQIECBAgACBggUEgAU319YIECBAgAABAgQIECBAgAABAgQICACdAQIECBAgQIAAAQIECBAgQIAAAQIFCwgAC26urREgQIAAAQIECBAgQIAAAQIECBAQADoDBAgQIECAAAECBAgQIECAAAECBAoWEAAW3FxbI0CAAAECBAgQIECAAAECBAgQICAAdAYIECBAgAABAgQIECBAgAABAgQIFCwgACy4ubZGgAABAgQIECBAgAABAgQIECBAQADoDBAgQIAAAQIECBAgQIAAAQIECBAoWEAAWHBzbY0AAQIECBAgQIAAAQIECBAgQICAANAZIECAAAECBAgQIECAAAECBAgQIFCwgACw4ObaGgECBAgQIECAAAECBAgQIECAAAEBoDNAgAABAgQIECBAgAABAgQIECBAoGABAWDBzbU1AgQIECBAgAABAgQIECBAgAABAgJAZ4AAAQIECBAgQIAAAQIECBAgQIBAwQICwIKba2sECBAgQIAAAQIECBAgQIAAAQIEBIDOAAECBAgQIECAAAECBAgQIECAAIGCBQSABTfX1ggQIECAAAECBAgQIECAAAECBAgIAJ0BAgQIECBAgAABAgQIECBAgAABAgULCAALbq6tESBAgAABAgQIECBAgAABAgQIEBAAOgMECBAgQIAAAQIECBAgQIAAAQIEChYQABbcXFsjQIAAAQIECBAgQIAAAQIECBAgIAB0BggQIECAAAECBAgQIECAAAECBAgULCAALLi5tkZgQwL/+Mc/0he+8IU0f/78tNVWW6WZM2emkZGR9N3vfjetWLFiQ1O9RoAAAQIECBAgQIAAAQIECAQSGA5Uq1IJEBiQwLXXXps+/vGPp2eeeaZ3x07ot3Dhwu4/F110UbruuuvS3Llze6+7IECAAAECBAgQIECAAAECBGIKeAdgzL6pmkBlgfvuuy8ddthh3fBv6623Tt/61rfSHXfckW688cZ0zDHHdO/717/+NR188MFp+fLlldcxkQABAgQIECBAgAABAgQIEGiHgHcAtqMPqiBQm8BJJ53U/Yjv8PBwuuGGG9K73vWu3tr7779/evOb35xOPfXUtHjx4vS9730vnXbaab3XXRAgQIAAAQIECBAgQIAAAQLxBLwDMF7PVEygskDnI7633HJLd/7RRx/9ivBv7KannHJK9+8Cdn7//ve/n/7zn/+MveQnAQIECBAgQIAAAQIECBAgEFBAABiwaUomUFXg6quv7k096qijetfrXmy22WbpyCOP7D61bNmyXmC47hjXBAgQIECAAAECBAgQIECAQBwBAWCcXqmUQN8Ct912W/cenW/9fec73znh/fbdd9/ea7fffnvv2gUBAgQIECBAgAABAgQIECAQT0AAGK9nKiZQWWDRokXduTvvvHPq/A3AiR677LJL76WxOb0nXBAgQIAAAQIECBAgQIAAAQKhBCZOAEJtQ7EECGxM4MUXX0xPPfVUd9js2bM3OPy1r31t6rxL8Pnnn0+jo6MbHLvui0uWLFn313HXS5cuHfecJwgQIECAAAECBAgQIECAAIHJFRAATq6vuxNojcBzzz3Xq2XrrbfuXU90MRYALl++fKIh456fM2fOuOc8QYAAAQIECBAgQIAAAQIECDQr4CPAzfpbnUBtAp13AI49pk2bNnY54c/p06d3X3vhhRcmHOMFAgQIECBAgAABAgQIECBAoP0C3gHY/h6pkMBABGbMmNG7z6pVq3rXE12sXLmy+9KrXvWqiYaMe35jHxfufAR4ZGRk3DxPECBAgAABAgQIECBAgAABApMnIACcPFt3JtAqgW222aZXT87Hejt//6/zyPm48NiNN/a3BcfG+UmAAAECBAgQIECAAAECBAjUJ+AjwPVZW4lAowKddwBut9123Ro29mUdy5Yt634BSGewv+vXaNssToAAAQIECBAgQIAAAQIE+hYQAPZN6AYE4gjMnz+/W+zDDz+cVq9ePWHhixcv7r02Nqf3hAsCBAgQIECAAAECBAgQIEAglIAAMFS7FEugP4F99tmne4POx3vvvvvuCW9266239l7be++9e9cuCBAgQIAAAQIECBAgQIAAgXgCAsB4PVMxgcoCH/zgB3tzf/rTn/au171Ys2ZNuvTSS7tPbbvttuk973nPui+7JkCAAAECBAgQIECAAAECBIIJCACDNUy5BPoR6HwD74IFC7q3uPjii9Odd9457nbnnntuWrRoUff5E088MW2xxRbjxniCAAECBAgQIECAAAECBAgQiCPgW4Dj9EqlBAYi8IMf/CB1Ptb7wgsvpAMOOCB95Stf6b7Lr/P75Zdfnn784x9315k3b1465ZRTBrKmmxAgQIAAAQIECBAgQIAAAQLNCQgAm7O3MoFGBN7xjnekX/3qV+kTn/hEevbZZ7sB4P8W0gn/rr322rTNNtv870t+J0CAAAECBAgQIECAAAECBIIJ+AhwsIYpl8AgBA455JD05z//OZ188smpE/ZtueWWqfP3/nbbbbd09tlnpz/96U9p5513HsRS7kGAAAECBAgQIECAAAECBAg0LDC09uVHwzVYngCBKSKwZMmSNGfOnO5u90nvTzOGtpwiO7dNAgQIECBAgAABAs0LvLh2Rbo9XdctZHR0NM2ePbv5olRAgEAtAt4BWAuzRQgQIECAAAECBAgQIECAAAECBAg0IyAAbMbdqgQIECBAgAABAgQIECBAgAABAgRqERAA1sJsEQIECBAgQIAAAQIECBAgQIAAAQLNCAgAm3G3KgECBAgQIECAAAECBAgQIECAAIFaBASAtTBbhAABAgQIECBAgAABAgQIECBAgEAzAgLAZtytSoAAAQIECBAgQIAAAQIECBAgQKAWAQFgLcwWIUCAAAECBAgQIECAAAECBAgQINCMgACwGXerEiBAgAABAgQIECBAgAABAgQIEKhFQABYC7NFCBAgQIAAAQIECBAgQIAAAQIECDQjIABsxt2qBAgQIECAAAECBAgQIECAAAECBGoREADWwmwRAgQIECBAgAABAgQIECBAgAABAs0ICACbcbcqAQIECBAgQIAAAQIECBAgQIAAgVoEBIC1MFuEAAECBAgQIECAAAECBAgQIECAQDMCAsBm3K1KgAABAgQIECBAgAABAgQIECBAoBYBAWAtzBYhQIAAAQIECBAgQIAAAQIECBAg0IyAALAZd6sSIECAAAECBAgQIECAAAECBAgQqEVAAFgLs0UIECBAgAABAgQIECBAgAABAgQINCMgAGzG3aoECBAgQIAAAQIECBAgQIAAAQIEahEQANbCbBECBAgQIECAAAECBAgQIECAAAECzQgIAJtxtyoBAgQIECBAgAABAgQIECBAgACBWgQEgLUwW4QAAQIECBAgQIAAAQIECBAgQIBAMwICwGbcrUqAAAECBAgQIECAAAECBAgQIECgFgEBYC3MFiFAgAABAgQIECBAgAABAgQIECDQjIAAsBl3qxIgQIAAAQIECBAgQIAAAQIECBCoRUAAWAuzRQgQIECAAAECBAgQIECAAAECBAg0IyAAbMbdqgQIECBAgAABAgQIECBAgAABAgRqERAA1sJsEQIECBAgQIAAAQIECBAgQIAAAQLNCAgAm3G3KgECBAgQIECAAAECBAgQIECAAIFaBASAtTBbhAABAgQIECBAgAABAgQIECBAgEAzAgLAZtytSoAAAQIECBAgQIAAAQIECBAgQKAWAQFgLcwWIUCAAAECBAgQIECAAAECBAgQINCMgACwGXerEiBAgAABAgQIECBAgAABAgQIEKhFQABYC7NFCBAgQIAAAQIECBAgQIAAAQIECDQjIABsxt2qBAgQIECAAAECBAgQIECAAAECBGoREADWwmwRAgQIECBAgAABAgQIECBAgAABAs0ICACbcbcqAQIECBAgQIAAAQIECBAgQIAAgVoEBIC1MFuEAAECBAgQIECAAAECBAgQIECAQDMCAsBm3K1KgAABAgQIECBAgAABAgQIECBAoBYBAWAtzBYhQIAAAQIECBAgQIAAAQIECBAg0IyAALAZd6sSIECAAAECBAgQIECAAAECBAgQqEVAAFgLs0UIECBAgAABAgQIECBAgAABAgQINCMgAGzG3aoECBAgQIAAAQIECBAgQIAAAQIEahEQANbCbBECBAgQIECAAAECBAgQIECAAAECzQgIAJtxtyoBAgQIECBAgAABAgQIECBAgACBWgQEgLUwW4QAAQIECBAgQIAAAQIECBAgQIBAMwICwGbcrUqAAAECBAgQIECAAAECBAgQIECgFgEBYC3MFiFAgAABAgQIECBAgAABAgQIECDQjIAAsBl3qxIgQIAAAQIECBAgQIAAAQIECBCoRUAAWAuzRQgQIECAAAECBAgQIECAAAECBAg0IyAAbMbdqgQIECBAgAABAgQIECBAgAABAgRqERAA1sJsEQIECBAgQIAAAQIECBAgQIAAAQLNCAgAm3G3KgECBAgQIECAAAECBAgQIECAAIFaBASAtTBbhAABAgQIECBAgAABAgQIECBAgEAzAgLAZtytSoAAAQIECBAgQIAAAQIECBAgQKAWAQFgLcwWIUCAAAECBAgQIECAAAECBAgQINCMgACwGXerEiBAgAABAgQIECBAgAABAgQIEKhFQABYC7NFCBAgQIAAAQIECBAgQIAAAQIECDQjIABsxt2qBAgQIECAAAECBAgQIECAAAECBGoREADWwmwRAgQIECBAgAABAgQIECBAgAABAs0ICACbcbcqAQIECBAgQIAAAQIECBAgQIAAgVoEBIC1MFuEAAECBAgQIECAAAECBAgQIECAQDMCAsBm3K1KgAABAgQIECBAgAABAgQIECBAoBYBAWAtzBYhQIAAAQIECBAgQIAAAQIECBAg0IyAALAZd6sSIECAAAECBAgQIECAAAECBAgQqEVAAFgLs0UIECBAgAABAgQIECBAgAABAgQINCMgAGzG3aoECBAgQIAAAQIECBAgQIAAAQIEahEQANbCbBECBAgQIECAAAECBAgQIECAAAECzQgIAJtxtyoBAgQIECBAgAABAgQIECBAgACBWgQEgLUwW4QAAQIECBAgQIAAAQIECBAgQIBAMwICwGbcrUqAAAECBAgQIECAAAECBAgQIECgFgEBYC3MFiFAgAABAgQIECBAgAABAgQIECDQjIAAsBl3qxIgQIAAAQIECBAgQIAAAQIECBCoRUAAWAuzRQgQIECAAAECBAgQIECAAAECBAg0IyAAbMbdqgQIECBAgAABAgQIECBAgAABAgRqERAA1sJsEQIECBAgQIAAAQIECBAgQIAAAQLNCAgAm3G3KgECBAgQIECAAAECBAgQIECAAIFaBASAtTBbhAABAgQIECBAgAABAgQIECBAgEAzAgLAZtytSoAAAQIECBAgQIAAAQIECBAgQKAWAQFgLcwWIUCAAAECBAgQIECAAAECBAgQINCMgACwGXerEiBAgAABAgQIECBAgAABAgQIEKhFQABYC7NFCBAgQIAAAQIECBAgQIAAAQIECDQjIABsxt2qBAgQIECAAAECBAgQIECAAAECBGoREADWwmwRAgQIECBAgAABAgQIECBAgAABAs0ICACbcbcqAQIECBAgQIAAAQIECBAgQIAAgVoEBIC1MFuEAAECBAgQIECAAAECBAgQIECAQDMCAsBm3K1KgAABAgQIECBAgAABAgQIECBAoBYBAWAtzBYhQIAAAQIECBAgQIAAAQIECBAg0IyAALAZd6sSIECAAAECBAgQIECAAAECBAgQqEVAAFgLs0UIECBAgAABAgQIECBAgAABAgQINCMgAGzG3aoECBAgQIAAAQIECBAgQIAAAQIEahEQANbCbBECBAgQIECAAAECBAgQIECAAAECzQgIAJtxtyoBAgQIECBAgAABAgQIECBAgACBWgQEgLUwW4QAAQIECBAgQIAAAQIECBAgQIBAMwICwGbcrUqAAAECBAgQIECAAAECBAgQIECgFgEBYC3MFiFAgAABAgQIECBAgAABAgQIECDQjIAAsBl3qxIgQIAAAQIECBAgQIAAAQIECBCoRUAAWAuzRQgQIECAAAECBAgQIECAAAECBAg0IyAAbMbdqgQIECBAgAABAgQIECBAgAABAgRqERiuZRWLECBAgAABAgQIFCNw/RP3FrOXydzIgbPePpm3d28CBAgQIECAQLaAdwBmUxlIgAABAgQIECBAgAABAgQIECBAIJ6AADBez1RMgAABAgQIECBAgAABAgQIECBAIFtAAJhNZSABAgQIECBAgAABAgQIECBAgACBeAICwHg9UzEBAgQIECBAgAABAgQIECBAgACBbAEBYDaVgQQIECBAgAABAgQIECBAgAABAgTiCQgA4/VMxQQIECBAgAABAgQIECBAgAABAgSyBQSA2VQGEiBAgAABAgQIECBAgAABAgQIEIgnIACM1zMVEyBAgAABAgQIECBAgAABAgQIEMgWEABmUxlIgAABAgQIECBAgAABAgQIECBAIJ6AADBez1RMgAABAgQIECBAgAABAgQIECBAIFtAAJhNZSABAgQIECBAgAABAgQIECBAgACBeAICwHg9UzEBAgQIECBAgAABAgQIECBAgACBbAEBYDaVgQQIECBAgAABAgQIECBAgAABAgTiCQgA4/VMxQQIECBAgAABAgQIECBAgAABAgSyBQSA2VQGEiBAgAABAgQIECBAgAABAgQIEIgnIACM1zMVEyBAgAABAgQIECBAgAABAgQIEMgWEABmUxlIgAABAgQIECBAgAABAgQIECBAIJ6AADBez1RMgAABAgQIECBAgAABAgQIECBAIFtAAJhNZSABAgQIECBAgAABAgQIECBAgACBeAICwHg9UzEBAgQIECBAgAABAgQIECBAgACBbAEBYDaVgQQIECBAgAABAgQIECBAgAABAgTiCQgA4/VMxQQIECBAgAABAgQIECBAgAABAgSyBQSA2VQGEiBAgAABAgQIECBAgAABAgQIEIgnIACM1zMVEyBAgAABAgQIECBAgAABAgQIEMgWEABmUxlIgAABAgQIECBAgAABAgQIECBAIJ6AADBez1RMgAABAgQIECBAgAABAgQIECBAIFtAAJhNZSABAgQIECBAgAABAgQIECBAgACBeAICwHg9UzGBygL33HNPOvPMM9NBBx2U5syZk6ZPn5623nrrNG/evPSpT30q3XbbbZXvbSIBAgQIECBAgAABAgQIECDQToHhdpalKgIEBi2w7777pt///vfjbrtq1ar00EMPdf/52c9+lo444oh00UUXpWnTpo0b6wkCBAgQIECAAAECBAgQIEAgnoAAMF7PVEygksDjjz/enTdr1qx06KGHpgULFqQdd9wxvfTSS+nOO+9M5557buqM+fnPf55Wr16dfvnLX1ZaxyQCBAgQIECAAAECBAgQIECgXQICwHb1QzUEJk1gl1126X789yMf+UjafPPNX7HOnnvu2X3n3957753+9re/pcsuuywdf/zx3ZDwFQP9QoAAAQIECBAgQIAAAQIECIQT8DcAw7VMwQSqCVxzzTXpsMMOGxf+jd1tu+22674LcOz3K6+8cuzSTwIECBAgQIAAAQIECBAgQCCwgAAwcPOUTmDQAvvtt1/vlo888kjv2gUBAgQIECBAgAABAgQIECAQV0AAGLd3KicwcIHOF4KMPTbbzH89jFn4SYAAAQIECBAgQIAAAQIEIgv4N/zI3VM7gQEL3Hrrrb07dv5moAcBAgQIECBAgAABAgQIECAQX8CXgMTvoR0QGIjAmjVr0llnndW7V+fvBW7qY8mSJRucsnTp0g2+7kUCBAgQIECAAAECBAgQIEBg8AICwMGbuiOBkALnnXdeuuuuu7q1f+hDH0q77bbbJu9jzpw5mzzHBAIECBAgQIAAAQIECBAgQGByBXwEeHJ93Z1ACIHOR3+//OUvd2vdYYcd0gUXXBCibkUSIECAAAECBAgQIECAAAECGxfwDsCNGxlBoGiBv/zlL6nzjr/Vq1en6dOnpyuuuCK9/vWvr7Tn0dHRDc7rfAR4ZGRkg2O8SIAAAQIECBAgQIAAAQIECAxWQAA4WE93IxBK4LHHHksHHHBAWrZsWdp8883TZZddlvbdd9/Ke5g9e3bluSYSIECAAAECBAgQIECAAAECkyPgI8CT4+quBFov8MQTT6T3vve9qfNzaGgo/eQnP+m+E7D1hSuQAAECBAgQIECAAAECBAgQ2CQBAeAmcRlMoAyBp556Kr3vfe9Ljz76aHdD559/fjryyCPL2JxdECBAgAABAgQIECBAgAABAq8QEAC+gsMvBMoXeOaZZ9KBBx6YHnzwwe5mzzrrrPS5z32u/I3bIQECBAgQIECAAAECBAgQmKICAsAp2njbnpoCK1asSAcffHC65557ugBf/epX05e+9KWpiWHXBAgQIECAAAECBAgQIEBgiggIAKdIo22TwKpVq7p/4+8Pf/hDF+PEE09M3/zmN8EQIECAAAECBAgQIECAAAEChQv4FuDCG2x7BMYEDj/88HTDDTd0f91///3T0UcfnR544IGxl8f9nDZtWpo3b9645z1BgAABAgQIECBAgAABAgQIxBIQAMbql2oJVBa46qqrenNvuumm9Na3vrX3+/ou3vSmN6W///3v63vJcwQIECBAgAABAgQIECBAgEAgAR8BDtQspRIgQIAAAQIECBAgQIAAAQIECBDYVAHvANxUMeMJBBVYu3Zt0MqVTYAAAQIECBAgQIAAAQIECPQj4B2A/eiZS4AAAQIECBAgQIAAAQIECBAgQKDlAgLAljdIeQQIECBAgAABAgQIECBAgAABAgT6ERAA9qNnLgECBAgQIECAAAECBAgQIECAAIGWCwgAW94g5REgQIAAAQIECBAgQIAAAQIECBDoR0AA2I+euQQIECBAgAABAgQIECBAgAABAgRaLiAAbHmDlEeAAAECBAgQIECAAAECBAgQIECgHwEBYD965hIgQIAAAQIECBAgQIAAAQIECBBouYAAsOUNUh4BAgQIECBAgAABAgQIECBAgACBfgQEgP3omUuAAAECBAgQIECAAAECBAgQIECg5QICwJY3SHkECBAgQIAAAQIECBAgQIAAAQIE+hEQAPajZy4BAgQIECBAgAABAgQIECBAgACBlgsIAFveIOURIECAAAECBAgQIECAAAECBAgQ6EdAANiPnrkECBAgQIAAAQIECBAgQIAAAQIEWi4gAGx5g5RHgAABAgQIECBAgAABAgQIECBAoB8BAWA/euYSIECAAAECBAgQIECAAAECBAgQaLmAALDlDVIeAQIECBAgQIAAAQIECBAgQIAAgX4EBID96JlLgAABAgQIECBAgAABAgQIECBAoOUCAsCWN0h5BAgQIECAAAECBAgQIECAAAECBPoREAD2o2cuAQIECBAgQIAAAQIECBAgQIAAgZYLCABb3iDlESBAgAABAgQIECBAgAABAgQIEOhHQADYj565BAgQIECAAAECBAgQIECAAAECBFouIABseYOUR4AAAQIECBAgQIAAAQIECBAgQKAfAQFgP3rmEiBAgAABAgQIECBAgAABAgQIEGi5gACw5Q1SHgECBAgQIECAAAECBAgQIECAAIF+BIb7mWwuAQIECBAgQIDA1BM4cNbbp96mK+z4+ifurTDLFALrF/Cfu/W7eJYAAQIE8gS8AzDPySgCBAgQIECAAAECBAgQIECAAAECIQUEgCHbpmgCBAgQIECAAAECBAgQIECAAAECeQICwDwnowgQIECAAAECBAgQIECAAAECBAiEFBAAhmybogkQIECAAAECBAgQIECAAAECBAjkCQgA85yMIkCAAAECBAgQIECAAAECBAgQIBBSQAAYsm2KJkCAAAECBAgQIECAAAECBAgQIJAnIADMczKKAAECBAgQIECAAAECBAgQIECAQEgBAWDItimaAAECBAgQIECAAAECBAgQIECAQJ6AADDPySgCBAgQIECAAAECBAgQIECAAAECIQUEgCHbpmgCBAgQIECAAAECBAgQIECAAAECeQICwDwnowgQIECAAAECBAgQIECAAAECBAiEFBAAhmybogkQIECAAAECBAgQIECAAAECBAjkCQgA85yMIkCAAAECBAgQIECAAAECBAgQIBBSQAAYsm2KJkCAAAECBAgQIECAAAECBAgQIJAnIADMczKKAAECBAgQIECAAAECBAgQIECAQEgBAWDItimaAAECBAgQIECAAAECBAgQIECAQJ6AADDPySgCBAgQIECAAAECBAgQIECAAAECIQUEgCHbpmgCBAgQIECAAAECBAgQIECAAAECeQICwDwnowgQIECAAAECBAgQIECAAAECBAiEFBAAhmybogkQIECAAAECBAgQIECAAAECBAjkCQgA85yMIkCAAAECBAgQIECAAAECBAgQIBBSQAAYsm2KJkCAAAECBAgQIECAAAECBAgQIJAnIADMczKKAAECBAgQIECAAAECBAgQIECAQEgBAWDItimaAAECBAgQIECAAAECBAgQIECAQJ6AADDPySgCBAgQIECAAAECBAgQIECAAAECIQUEgCHbpmgCBAgQIECAAAECBAgQIECAAAECeQICwDwnowgQIECAAAECBAgQIECAAAECBAiEFBAAhmybogkQIECAAAECBAgQIECAAAECBAjkCQgA85yMIkCAAAECBAgQIECAAAECBAgQIBBSQAAYsm2KJkCAAAECBAgQIECAAAECBAgQIJAnIADMczKKAAECBAgQIECAAAECBAgQIECAQEgBAWDItimaAAECBAgQIECAAAECBAgQIECAQJ6AADDPySgCBAgQIECAAAECBAgQIECAAAECIQUEgCHbpmgCBAgQIECAAAECBAgQIECAAAECeQICwDwnowgQIECAAAECBAgQIECAAAECBAiEFBAAhmybogkQIECAAAECBAgQIECAAAECBAjkCQgA85yMIkCAAAECBAgQIECAAAECBAgQIBBSQAAYsm2KJkCAAAECBAgQIECAAAECBAgQIJAnIADMczKKAAECBAgQIECAAAECBAgQIECAQEgBAWDItimaAAECBAgQIECAAAECBAgQIECAQJ6AADDPySgCBAgQIECAAAECBAgQIECAAAECIQUEgCHbpmgCBAgQIECAAAECBAgQIECAAAECeQICwDwnowgQIECAAAECBAgQIECAAAECBAiEFBAAhmybogkQIECAAAECBAgQIECAAAECBAjkCQgA85yMIkCAAAECBAgQIECAAAECBAgQIBBSQAAYsm2KJkCAAAECBAgQIECAAAECBAgQIJAnIADMczKKAAECBAgQIECAAAECBAgQIECAQEgBAWDItimaAAECBAgQIECAAAECBAgQIECAQJ6AADDPySgCBAgQIECAAAECBAgQIECAAAECIQUEgCHbpmgCBAgQIECAAAECBAgQIECAAAECeQICwDwnowgQIECAAAECBAgQIECAAAECBAiEFBAAhmybogkQIECAAAECBAgQIECAAAECBAjkCQgA85yMIkCAAAECBAgQIECAAAECBAgQIBBSQAAYsm2KJkCAAAECBAgQIECAAAECBAgQIJAnIADMczKKAAECBAgQIECAAAECBAgQIECAQEgBAWDItimaAAECBAgQIECAAAECBAgQIECAQJ6AADDPySgCBAgQIECAAAECBAgQIECAAAECIQUEgCHbpmgCBAgQIECAAAECBAgQIECAAAECeQICwDwnowgQIECAAAECBAgQIECAAAECBAiEFBAAhmybogkQIECAAAECBAgQIECAAAECBAjkCQgA85yMIkCAAAECBAgQIECAAAECBAgQIBBSQAAYsm2KJkCAAAECBAgQIECAAAECBAgQIJAnIADMczKKAAECBAgQIECAAAECBAgQIECAQEgBAWDItimaAAECBAgQIECAAAECBAgQIECAQJ6AADDPySgCBAgQIECAAAECBAgQIECAAAECIQUEgCHbpmgCBAgQIECAAAECBAgQIECAAAECeQICwDwnowgQIECAAAECBAgQIECAAAECBAiEFBAAhmybogkQIECAAAECBAgQIECAAAECBAjkCQgA85yMIkCAAAECBAgQIECAAAECBAgQIBBSQAAYsm2KJkCAAAECBAgQIECAAAECBAgQIJAnIADMczKKAAECBAgQIECAAAECBAgQIECAQEgBAWDItimaAAECBAgQIECAAAECBAgQIECAQJ6AADDPySgCBAgQIECAAAECBAgQIECAAAECIQWGQ1ataAIECBAgQIAAgcYErn/i3sbWtnB5AgfOent5m7IjAgQIECDQMgHvAGxZQ5RDgAABAgQIECBAgAABAgQIECBAYJACAsBBaroXAQIECBAgQIAAAQIECBAgQIAAgZYJCABb1hDlECBAgAABAgQIECBAgAABAgQIEBikgABwkJruRYAAAQIECBAgQIAAAQIECBAgQKBlAgLAljVEOQQIECBAgAABAgQIECBAgAABAgQGKSAAHKSmexEgQIAAAQIECBAgQIAAAQIECBBomYAAsGUNUQ4BAgQIECBAgAABAgQIECBAgACBQQoIAAep6V4ECBAgQIAAAQIECBAgQIAAAQIEWiYgAGxZQ5RDgAABAgQIECBAgAABAgQIECBAYJACAsBBaroXAQIECBAgQIAAAQIECBAgQIAAgZYJCABb1hDlECBAgAABAgQIECBAgAABAgQIEBikgABwkJruRYAAAQIECBAgQIAAAQIECBAgQKBlAgLAljVEOQQIECBAgAABAgQIECBAgAABAgQGKSAAHKSmexEgQIAAAQIECBAgQIAAAQIECBBomYAAsGUNUQ4BAgQIECBAgAABAgQIECBAgACBQQoIAAep6V4ECBAgQIAAAQIECBAgQIAAAQIEWiYgAGxZQ5RDgAABAgQIECBAgAABAgQIECBAYJACAsBBaroXAQIECBAgQIAAAQIECBAgQIAAgZYJCABb1hDlECBAgAABAgQIECBAgAABAgQIEBikgABwkJruRYAAAQIECBAgQIAAAQIECBAgQKBlAgLAljVEOQQIECBAgAABAgQIECBAgAABAgQGKSAAHKSmexEgQIAAAQIECBAgQIAAAQIECBBomYAAsGUNUQ4BAgQIECBAgAABAgQIECBAgACBQQoIAAep6V4ECBAgQIAAAQIECBAgQIAAAQIEWiYgAGxZQ5RDgAABAgQIECBAgAABAgQIECBAYJACAsBBaroXAQIECBAgQIAAAQIECBAgQIAAgZYJCABb1hDlECBAgAABAgQIECBAgAABAgQIEBikgABwkJruRSCwwKmnnpqGhoZ6/9xyyy2Bd6N0AgQIECBAgAABAgQIECBAYExAADgm4SeBKSxw3333pfPOO28KC9g6AQIECBAgQIAAAQIECBAoV0AAWG5v7YxAlsCaNWvSMccck1avXp122GGHrDkGESBAgAABAgQIECBAgAABAnEEBIBxeqVSApMi8MMf/jAtXLgw7bLLLunoo4+elDXclAABAgQIECBAgAABAgQIEGhOQADYnL2VCTQuMDo6mr72ta9167jgggvStGnTGq9JAQQIECBAgAABAgQIECBAgMBgBQSAg/V0NwKhBD772c+m5cuXp09+8pNpv/32C1W7YgkQIECAAAECBAgQIECAAIE8AQFgnpNRBIoTuOKKK9I111yTZs6cmc4555zi9mdDBAgQIECAAAECBAgQIECAwP8LCACdBAJTUODf//53OvHEE7s7P/vss9P2228/BRVsmQABAgQIECBAgAABAgQITA2B4amxTbskQGBdgVNPPTU9+eSTaa+99hroF38sWbJk3WXGXS9dunTcc54gQIAAAQIECBAgQIAAAQIEJldAADi5vu5OoHUCt99+e7rooovS8PBwuvDCC9PQ0NDAapwzZ87A7uVGBAgQIECAAAECBAgQIECAwGAEfAR4MI7uQiCEwKpVq9Kxxx6b1q5dm04++eS06667hqhbkQQIECBAgAABAgQIECBAgEB1Ae8ArG5nJoFwAmeeeWZatGhR2nHHHdPXv/71gdc/Ojq6wXt2PgI8MjKywTFeJECAAAECBAgQIECAAAECBAYrIAAcrKe7EWitwOLFi9O3v/3tbn3nn39+2mqrrQZe6+zZswd+TzckQIAAAQIECBAgQIAAAQIE+hMQAPbnZzaBMALnnXde6nwEeO7cuWnFihXp8ssvH1f7Aw880Hvupptu6n5RSOeJQw45ZFICw95iLggQIECAAAECBAgQIECAAIFJExAAThqtGxNol8DKlSu7BT366KPp8MMP32hx3/jGN3pjHnvsMQFgT8MFAQIECBAgQIAAAQIECBCIJeBLQGL1S7UECBAgQIAAAQIECBAgQIAAAQIENklAALhJXAYTiCtwySWXdL/9t/MNwBP9s+4Xg9x88829cTvttFPcjaucAAECBAgQIECAAAECBAhMcQEB4BQ/ALZPgAABAgQIECBAgAABAgQIECBQtoAAsOz+2h0BAgQIECBAgAABAgQIECBAgMAUFxAATvEDYPsECBAgQIAAAQIECBAgQIAAAQJlCwgAy+6v3REgQIAAAQIECBAgQIAAAQIECExxAQHgFD8Atk9gXYHTTz+998Uf++2337ovuSZAgAABAgQIECBAgAABAgSCCggAgzZO2QQIECBAgAABAgQIECBAgAABAgRyBASAOUrGECBAgAABAgQIECBAgAABAgQIEAgqIAAM2jhlEyBAgAABAgQIECBAgAABAgQIEMgREADmKBlDgAABAgQIECBAgAABAgQIECBAIKiAADBo45RNgAABAgQIECBAgAABAgQIECBAIEdAAJijZAwBAgQIECBAgAABAgQIECBAgACBoAICwKCNUzYBAgQIECBAgAABAgQIECBAgACBHAEBYI6SMQQIECBAgAABAgQIECBAgAABAgSCCggAgzZO2QQIECBAgAABAgQIECBAgAABAgRyBASAOUrGECBAgAABAgQIECBAgAABAgQIEAgqIAAM2jhlEyBAgAABAgQIECBAgAABAgQIEMgREADmKBlDgAABAgQIECBAgAABAgQIECBAIKiAADBo45RNgAABAgQIECBAgAABAgQIECBAIEdAAJijZAwBAgQIECBAgAABAgQIECBAgACBoAICwKCNUzYBAgQIECBAgAABAgQIECBAgACBHAEBYI6SMQQIECBAgAABAgQIECBAgAABAgSCCggAgzZO2QQIECBAgAABAgQIECBAgAABAgRyBASAOUrGECBAgAABAgQIECBAgAABAgQIEAgqIAAM2jhlEyBAgAABAgQIECBAgAABAgQIEMgREADmKBlDgAABAgQIECBAgAABAgQIECBAIKiAADBo45RNgAABAgQIECBAgAABAgQIECBAIEdAAJijZAwBAgQIECBAgAABAgQIECBAgACBoAICwKCNUzYBAgQIECBAgAABAgQIECBAgACBHAEBYI6SMQQIECBAgAABAgQIECBAgAABAgSCCgwHrVvZBAgQIECAAAECDQkcOOvtDa1sWQIECBAgQIAAgSoC3gFYRc0cAgQIECBAgAABAgQIECBAgAABAkEEBIBBGqVMAgQIECBAgAABAgQIECBAgAABAlUEBIBV1MwhQIAAAQIECBAgQIAAAQIECBAgEERAABikUcokQIAAAQIECBAgQIAAAQIECBAgUEVAAFhFzRwCBAgQIECAAAECBAgQIECAAAECQQQEgEEapUwCBAgQIECAAAECBAgQIECAAAECVQQEgFXUzCFAgAABAgQIECBAgAABAgQIECAQREAAGKRRyiRAgAABAgQIECBAgAABAgQIECBQRUAAWEXNHAIECBAgQIAAAQIECBAgQIAAAQJBBASAQRqlTAIECBAgQIAAAQIECBAgQIAAAQJVBASAVdTMIUCAAAECBAgQIECAAAECBAgQIBBEQAAYpFHKJECAAAECBAgQIECAAAECBAgQIFBFQABYRc0cAgQIECBAgAABAgQIECBAgAABAkEEBIBBGqVMAgQIECBAgAABAgQIECBAgAABAlUEBIBV1MwhQIAAAQIECBAgQIAAAQIECBAgEERAABikUcokQIAAAQIECBAgQIAAAQIECBAgUEVAAFhFzRwCBAgQIECAAAECBAgQIECAAAECQQQEgEEapUwCBAgQIECAAAECBAgQIECAAAECVQQEgFXUzCFAgAABAgQIECBAgAABAgQIECAQREAAGKRRyiRAgAABAgQIECBAgAABAgQIECBQRUAAWEXNHAIECBAgQIAAAQIECBAgQIAAAQJBBASAQRqlTAIECBAgQIAAAQIECBAgQIAAAQJVBASAVdTMIUCAAAECBAgQIECAAAECBAgQIBBEQAAYpFHKJECAAAECBAgQIECAAAECBAgQIFBFQABYRc0cAgQIECBAgAABAgQIECBAgAABAkEEBIBBGqVMAgQIECBAgAABAgQIECBAgAABAlUEBIBV1MwhQIAAAQIECBAgQIAAAQIECBAgEERAABikUcokQIAAAQIECBAgQIAAAQIECBAgUEVAAFhFzRwCBAgQIECAAAECBAgQIECAAAECQQQEgEEapUwCBAgQIECAAAECBAgQIECAAAECVQQEgFXUzCFAgAABAgQIECBAgAABAgQIECAQREAAGKRRyiRAgAABAgQIECBAgAABAgQIECBQRUAAWEXNHAIECBAgQIAAAQIECBAgQIAAAQJBBASAQRqlTAIECBAgQIAAAQIECBAgQIAAAQJVBASAVdTMIUCAAAECBAgQIECAAAECBAgQIBBEQAAYpFHKJECAAAECBAgQIECAAAECBAgQIFBFQABYRc0cAgQIECBAgAABAgQIECBAgAABAkEEBIBBGqVMAgQIECBAgAABAgQIECBAgAABAlUEBIBV1MwhQIAAAQIECBAgQIAAAQIECBAgEERAABikUcokQIAAAQIECBAgQIAAAQIECBAgUEVAAFhFzRwCBAgQIECAAAECBAgQIECAAAECQQQEgEEapUwCBAgQIECAAAECBAgQIECAAAECVQQEgFXUzCFAgAABAgQIECBAgAABAgQIECAQREAAGKRRyiRAgAABAgQIECBAgAABAgQIECBQRUAAWEXNHAIECBAgQIAAAQIECBAgQIAAAQJBBASAQRqlTAIECBAgQIAAAQIECBAgQIAAAQJVBASAVdTMIUCAAAECBAgQIECAAAECBAgQIBBEQAAYpFHKJECAAAECBAgQIECAAAECBAgQIFBFQABYRc0cAgQIECBAgAABAgQIECBAgAABAkEEBIBBGqVMAgQIECBAgAABAgQIECBAgAABAlUEBIBV1MwhQIAAAQIECBAgQIAAAQIECBAgEERAABikUcokQIAAAQIECBAgQIAAAQIECBAgUEVAAFhFzRwCBAgQIECAN7ViEAAAQABJREFUAAECBAgQIECAAAECQQQEgEEapUwCBAgQIECAAAECBAgQIECAAAECVQQEgFXUzCFAgAABAgQIECBAgAABAgQIECAQREAAGKRRyiRAgAABAgQIECBAgAABAgQIECBQRUAAWEXNHAIECBAgQIAAAQIECBAgQIAAAQJBBASAQRqlTAIECBAgQIAAAQIECBAgQIAAAQJVBASAVdTMIUCAAAECBAgQIECAAAECBAgQIBBEQAAYpFHKJECAAAECBAgQIECAAAECBAgQIFBFQABYRc0cAgQIECBAgAABAgQIECBAgAABAkEEBIBBGqVMAgQIECBAgAABAgQIECBAgAABAlUEBIBV1MwhQIAAAQIECBAgQIAAAQIECBAgEERAABikUcokQIAAAQIECBAgQIAAAQIECBAgUEVAAFhFzRwCBAgQIECAAAECBAgQIECAAAECQQQEgEEapUwCBAgQIECAAAECBAgQIECAAAECVQQEgFXUzCFAgAABAgQIECBAgAABAgQIECAQREAAGKRRyiRAgAABAgQIECBAgAABAgQIECBQRUAAWEXNHAIECBAgQIAAAQIECBAgQIAAAQJBBASAQRqlTAIECBAgQIAAAQIECBAgQIAAAQJVBASAVdTMIUCAAAECBAgQIECAAAECBAgQIBBEQAAYpFHKJECAAAECBAgQIECAAAECBAgQIFBFQABYRc0cAgQIECBAgAABAgQIECBAgAABAkEEBIBBGqVMAgQIECBAgAABAgQIECBAgAABAlUEBIBV1MwhQIAAAQIECBAgQIAAAQIECBAgEERAABikUcokQIAAAQIECBAgQIAAAQIECBAgUEVAAFhFzRwCBAgQIECAAAECBAgQIECAAAECQQQEgEEapUwCBAgQIECAAAECBAgQIECAAAECVQQEgFXUzCFAgAABAgQIECBAgAABAgQIECAQREAAGKRRyiRAgAABAgQIECBAgAABAgQIECBQRUAAWEXNHAIECBAgQIAAAQIECBAgQIAAAQJBBASAQRqlTAIECBAgQIAAAQIECBAgQIAAAQJVBASAVdTMIUCAAAECBAgQIECAAAECBAgQIBBEQAAYpFHKJECAAAECBAgQIECAAAECBAgQIFBFQABYRc0cAgQIECBAgAABAgQIECBAgAABAkEEBIBBGqVMAgQIECBAgAABAgQIECBAgAABAlUEBIBV1MwhQIAAAQIECBAgQIAAAQIECBAgEERAABikUcokQIAAAQIECBAgQIAAAQIECBAgUEVAAFhFzRwCBAgQIECAAAECBAgQIECAAAECQQQEgEEapUwCBAgQIECAAAECBAgQIECAAAECVQQEgFXUzCFAgAABAgQIECBAgAABAgQIECAQREAAGKRRyiRAgAABAgQIECBAgAABAgQIECBQRUAAWEXNHAIECBAgQIAAAQIECBAgQIAAAQJBBASAQRqlTAIECBAgQIAAAQIECBAgQIAAAQJVBASAVdTMIUCAAAECBAgQIECAAAECBAgQIBBEQAAYpFHKJECAAAECBAgQIECAAAECBAgQIFBFQABYRc0cAgQIECBAgAABAgQIECBAgAABAkEEBIBBGqVMAgQIECBAgAABAgQIECBAgAABAlUEBIBV1MwhQIAAAQIECBAgQIAAAQIECBAgEERAABikUcokQIAAAQIECBAgQIAAAQIECBAgUEVAAFhFzRwCBAgQIECAAAECBAgQIECAAAECQQQEgEEapUwCgxZ46qmn0ne+85209957pze84Q1p+vTpadasWWmPPfZIX/ziF9Odd9456CXdjwABAgQIECBAgAABAgQIEGhAYLiBNS1JgEDDAr/+9a/T8ccfn55++ulXVLJ06dLU+eeuu+5KDz30ULr66qtf8bpfCBAgQIAAAQIECBAgQIAAgXgCAsB4PVMxgb4ELr300nTUUUelNWvWpB122KEbBO6zzz5p5syZ6cknn0yPPPJI+s1vfpO22GKLvtYxmQABAgQIECBAgAABAgQIEGiHgACwHX1QBYFaBBYtWpSOPfbYbvi3YMGCbtD3mte8ZtzaJ5xwQlq1atW45z1BgAABAgQIECBAgAABAgQIxBPwNwDj9UzFBCoLdIK9lStXpu222y5dddVVaX3h39jNp02bNnbpJwECBAgQIECAAAECBAgQIBBYQAAYuHlKJ7ApAosXL0433nhjd8rnP//5bgi4KfONJUCAAAECBAgQIECAAAECBGIKCABj9k3VBDZZoPPFH2OPQw89dOwyLVu2rPuFH//7hSC9AS4IECBAgAABAgQIECBAgACB0AICwNDtUzyBfIE//vGP3cGdj/3Onz8//eIXv0hve9vbul/+MW/evO47AufOnZvOOOOMtHz58vwbG0mAAAECBAgQIECAAAECBAi0WsCXgLS6PYojMDiBBx98sHuznXbaKXX+FuCPfvSjcTd/7LHH0umnn56uvPLKdP3116dZs2aNG7OhJ5YsWbKhl9PSpUs3+LoXCRAgQIAAAQIECBAgQIAAgcELDK19+TH427ojAQJtE+i88+/ZZ59N06dP734RyLbbbpvOOuus9OEPfzi9+tWvTvfff3867bTT0m9/+9tu6XvttVe67bbb0mab5b9ReGhoKHvb+6T3pxlDW2aPN5AAAQIECBAgQIAAgf4EXly7It2eruveZHR0NM2ePbu/G5pNgEAYgfx/sw+zJYUSILA+geeff777dOdbgDfffPNu0Hfcccel7bffvhsK7rbbbumaa65JBx10UHfcHXfc0f2m4PXdy3MECBAgQIAAAQIECBAgQIBAHAEfAY7TK5US6EtgxowZaSwE7HwJyJ577jnufp13+51zzjm9dwFedtll6aMf/ei4cRM90fn/Im7o0fkI8MjIyIaGeI0AAQIECBAgQIAAAQIECBAYsIAAcMCgbkegrQLbbLNNLwAce5ff+mp9y1vekt74xjemxx9/PC1cuHB9QyZ8zkcIJqTxAgECBAgQIECAAAECBAgQaEzAR4Abo7cwgXoF5syZ01twY0Hd2Nh//vOfvTkuCBAgQIAAAQIECBAgQIAAgZgCAsCYfVM1gU0W6Lyzb+zx0ksvjV2u9+fY68PD3iS8XiBPEiBAgAABAgQIECBAgACBQAICwEDNUiqBfgTe/e5396Y/8sgjvev1XTz66KPdpzsfBfYgQIAAAQIECBAgQIAAAQIEYgsIAGP3T/UEsgU+8IEPpC222KI7/qqrrppw3q233pqefvrp7usLFiyYcJwXCBAgQIAAAQIECBAgQIAAgRgCAsAYfVIlgb4FXve616XPfOYz3fv87ne/S5dffvm4ez733HPppJNO6j1/3HHH9a5dECBAgAABAgQIECBAgAABAjEFBIAx+6ZqApUEzjjjjLTjjjt25x5xxBHphBNOSDfffHO6++670yWXXJJGRkbSvffe2339+OOPT7vvvnuldUwiQIAAAQIECBAgQIAAAQIE2iMwtPblR3vKUQkBApMtsGjRotT5OPDDDz884VKf/vSn04UXXtj7yPCEAzfxhSVLlqSxbxjeJ70/zRjachPvYDgBAgQIECBAgAABAlUFXly7It2erutOHx0dTbNnz656K/MIEAgm4B2AwRqmXAL9CsyfP7/7Lr9zzjkn7bHHHmnmzJlp2rRp3f/j/7GPfSzddNNN6eKLLx54+Ndv3eYTIECAAAECBAgQIECAAAEC1QS8A7Cam1kECFQQ8A7ACmimECBAgAABAgQIEBiQgHcADgjSbQgEFPAOwIBNUzIBAgQIECBAgAABAgQIECBAgACBXAEBYK6UcQQIECBAgAABAgQIECBAgAABAgQCCggAAzZNyQQIECBAgAABAgQIECBAgAABAgRyBQSAuVLGESBAgAABAgQIECBAgAABAgQIEAgoIAAM2DQlEyBAgAABAgQIECBAgAABAgQIEMgVEADmShlHgAABAgQIECBAgAABAgQIECBAIKCAADBg05RMgAABAgQIECBAgAABAgQIECBAIFdAAJgrZRwBAgQIECBAgAABAgQIECBAgACBgAICwIBNUzIBAgQIECBAgAABAgQIECBAgACBXAEBYK6UcQQIECBAgAABAgQIECBAgAABAgQCCggAAzZNyQQIECBAgAABAgQIECBAgAABAgRyBQSAuVLGESBAgAABAgQIECBAgAABAgQIEAgoIAAM2DQlEyBAgAABAgQIECBAgAABAgQIEMgVEADmShlHgAABAgQIECBAgAABAgQIECBAIKCAADBg05RMgAABAgQIECBAgAABAgQIECBAIFdAAJgrZRwBAgQIECBAgAABAgQIECBAgACBgAICwIBNUzIBAgQIECBAgAABAgQIECBAgACBXAEBYK6UcQQIECBAgAABAgQIECBAgAABAgQCCggAAzZNyQQIECBAgAABAgQIECBAgAABAgRyBQSAuVLGESBAgAABAgQIECBAgAABAgQIEAgoIAAM2DQlEyBAgAABAgQIECBAgAABAgQIEMgVEADmShlHgAABAgQIECBAgAABAgQIECBAIKCAADBg05RMgAABAgQIECBAgAABAgQIECBAIFdAAJgrZRwBAgQIECBAgAABAgQIECBAgACBgAICwIBNUzIBAgQIECBAgAABAgQIECBAgACBXAEBYK6UcQQIECBAgAABAgQIECBAgAABAgQCCggAAzZNyQQIECBAgAABAgQIECBAgAABAgRyBQSAuVLGESBAgAABAgQIECBAgAABAgQIEAgoIAAM2DQlEyBAgAABAgQIECBAgAABAgQIEMgVEADmShlHgAABAgQIECBAgAABAgQIECBAIKCAADBg05RMgAABAgQIECBAgAABAgQIECBAIFdAAJgrZRwBAgQIECBAgAABAgQIECBAgACBgAICwIBNUzIBAgQIECBAgAABAgQIECBAgACBXAEBYK6UcQQIECBAgAABAgQIECBAgAABAgQCCggAAzZNyQQIECBAgAABAgQIECBAgAABAgRyBQSAuVLGESBAgAABAgQIECBAgAABAgQIEAgoIAAM2DQlEyBAgAABAgQIECBAgAABAgQIEMgVEADmShlHgAABAgQIECBAgAABAgQIECBAIKCAADBg05RMgAABAgQIECBAgAABAgQIECBAIFdAAJgrZRwBAgQIECBAgAABAgQIECBAgACBgAICwIBNUzIBAgQIECBAgAABAgQIECBAgACBXAEBYK6UcQQIECBAgAABAgQIECBAgAABAgQCCggAAzZNyQQIECBAgAABAgQIECBAgAABAgRyBQSAuVLGESBAgAABAgQIECBAgAABAgQIEAgoIAAM2DQlEyBAgAABAgQIECBAgAABAgQIEMgVEADmShlHgAABAgQIECBAgAABAgQIECBAIKCAADBg05RMgAABAgQIECBAgAABAgQIECBAIFdAAJgrZRwBAgQIECBAgAABAgQIECBAgACBgAICwIBNUzIBAgQIECBAgAABAgQIECBAgACBXAEBYK6UcQQIECBAgAABAgQIECBAgAABAgQCCggAAzZNyQQIECBAgAABAgQIECBAgAABAgRyBQSAuVLGESBAgAABAgQIECBAgAABAgQIEAgoIAAM2DQlEyBAgAABAgQIECBAgAABAgQIEMgVEADmShlHgAABAgQIECBAgAABAgQIECBAIKCAADBg05RMgAABAgQIECBAgAABAgQIECBAIFdAAJgrZRwBAgQIECBAgAABAgQIECBAgACBgAICwIBNUzIBAgQIECBAgAABAgQIECBAgACBXAEBYK6UcQQIECBAgAABAgQIECBAgAABAgQCCggAAzZNyQQIECBAgAABAgQIECBAgAABAgRyBQSAuVLGESBAgAABAgQIECBAgAABAgQIEAgoIAAM2DQlEyBAgAABAgQIECBAgAABAgQIEMgVEADmShlHgAABAgQIECBAgAABAgQIECBAIKCAADBg05RMgAABAgQIECBAgAABAgQIECBAIFdAAJgrZRwBAgQIECBAgAABAgQIECBAgACBgAICwIBNUzIBAgQIECBAgAABAgQIECBAgACBXAEBYK6UcQQIECBAgAABAgQIECBAgAABAgQCCggAAzZNyQQIECBAgAABAgQIECBAgAABAgRyBQSAuVLGESBAgAABAgQIECBAgAABAgQIEAgoIAAM2DQlEyBAgAABAgQIECBAgAABAgQIEMgVEADmShlHgAABAgQIECBAgAABAgQIECBAIKCAADBg05RMgAABAgQIECBAgAABAgQIECBAIFdAAJgrZRwBAgQIECBAgAABAgQIECBAgACBgAICwIBNUzIBAgQIECBAgAABAgQIECBAgACBXAEBYK6UcQQIECBAgAABAgQIECBAgAABAgQCCggAAzZNyQQIECBAgAABAgQIECBAgAABAgRyBQSAuVLGESBAgAABAgQIECBAgAABAgQIEAgoIAAM2DQlEyBAgAABAgQIECBAgAABAgQIEMgVEADmShlHgAABAgQIECBAgAABAgQIECBAIKCAADBg05RMgAABAgQIECBAgAABAgQIECBAIFdAAJgrZRwBAgQIECBAgAABAgQIECBAgACBgAICwIBNUzIBAgQIECBAgAABAgQIECBAgACBXAEBYK6UcQQIECBAgAABAgQIECBA4P/auxdgq6r6D+ALwVAxEwuFAkN8Mo0kw8NMLR9kGmAPzSRNkkqzxyBmkjWZZj5IEZqmckqUsUmdfIwNkTNGoiBBJmKSjyyoAR+JDzSUh4D8XXs853+Be69nX2CdszifPaP3nL3XPr+1P+sM99zv2XsvAgQIEMhQQACY4aDpMgECBAgQIECAAAECBAgQIECAAIFaBQSAtUppR4AAAQIECBAgQIAAAQIECBAgQCBDAQFghoOmywQIECBAgAABAgQIECBAgAABAgRqFRAA1iqlHQECBAgQIECAAAECBAgQIECAAIEMBQSAGQ6aLhMgQIAAAQIECBAgQIAAAQIECBCoVUAAWKuUdgQIECBAgAABAgQIECBAgAABAgQyFBAAZjhoukyAAAECBAgQIECAAAECBAgQIECgVgEBYK1S2hEgQIAAAQIECBAgQIAAAQIECBDIUEAAmOGg6TIBAgQIECBAgAABAgQIECBAgACBWgUEgLVKaUeAAAECBAgQIECAAAECBAgQIEAgQwEBYIaDpssECBAgQIAAAQIECBAgQIAAAQIEahUQANYqpR0BAgQIECBAgAABAgQIECBAgACBDAUEgBkOmi4TIECAAAECBAgQIECAAAECBAgQqFVAAFirlHYECBAgQIAAAQIECBAgQIAAAQIEMhQQAGY4aLpMgAABAgQIECBAgAABAgQIECBAoFYBAWCtUtoRIECAAAECBAgQIECAAAECBAgQyFBAAJjhoOkyAQIECBAgQIAAAQIECBAgQIAAgVoFBIC1SmlHgAABAgQIECBAgAABAgQIECBAIEMBAWCGg6bLBAgQIECAAAECBAgQIECAAAECBGoVEADWKqUdAQIECBAgQIAAAQIECBAgQIAAgQwFBIAZDpouEyBAgAABAgQIECBAgAABAgQIEKhVQABYq5R2BAgQIECAAAECBAgQIECAAAECBDIUEABmOGi6TIAAAQIECBAgQIAAAQIECBAgQKBWAQFgrVLaESBAgAABAgQIECBAgAABAgQIEMhQQACY4aDpMgECBAgQIECAAAECBAgQIECAAIFaBQSAtUppR4AAAQIECBAgQIAAAQIECBAgQCBDAQFghoOmywQIECBAgAABAgQIECBAgAABAgRqFRAA1iqlHQECBAgQIECAAAECBAgQIECAAIEMBQSAGQ6aLhMgQIAAAQIECBAgQIAAAQIECBCoVUAAWKuUdgQIECBAgAABAgQIECBAgAABAgQyFBAAZjhoukyAAAECBAgQIECAAAECBAgQIECgVgEBYK1S2hEgQIAAAQIECBAgQIAAAQIECBDIUEAAmOGg6TIBAgQIECBAgAABAgQIECBAgACBWgUEgLVKaUeAAAECBAgQIECAAAECBAgQIEAgQwEBYIaDpssECBAgQIAAAQIECBAgQIAAAQIEahUQANYqpR0BAgQIECBAgAABAgQIECBAgACBDAUEgBkOmi4TIECAAAECBAgQIECAAAECBAgQqFVAAFirlHYECBAgQIAAAQIECBAgQIAAAQIEMhQQAGY4aLpMgAABAgQIECBAgAABAgQIECBAoFYBAWCtUtoRIECAAAECBAgQIECAAAECBAgQyFBAAJjhoOkyAQIECBAgQIAAAQIECBAgQIAAgVoFBIC1SmlHgAABAgQIECBAgAABAgQIECBAIEMBAWCGg6bLBAgQIECAAAECBAgQIECAAAECBGoVEADWKqUdAQIECBAgQIAAAQIECBAgQIAAgQwFBIAZDpouE9hSgddffz1MmTIlHH/88aFXr16ha9euYddddw0HHnhgGDNmTJg3b96WlrA/AQIECBAgQIAAAQIECBAg0CACXRqkH7pBgEAigaVLl4bhw4eHhQsXblQxhoJPPvlk8d8NN9wQxo0bFyZOnBg6deq0UTtPCBAgQIAAAQIECBAgQIAAgbwEnAGY13jpLYEtEli3bt1G4d+AAQPC1KlTw9y5c8Pdd98dLrrootCtW7eixqRJk8LVV1+9RfXsTIAAAQIECBAgQIAAAQIECNRfoNOGN5f6d0MPCBBIIXD77beHk08+uSh12GGHhdmzZ4fOnTtvVHr+/Pkhblu7dm3o3r17WLZsWejSZeucLPzUU0+FPn36FPWOCJ8IO3XaZaPanhAgQIAAAQIECBAgsO0EVm9YGe4PfygKxCuDevfuve2KeWUCBBpKwBmADTUcOkNg2wrMmTOnWuDCCy/cLPyLGwcNGhRGjBhRtFu+fHl44oknqvt4QIAAAQIECBAgQIAAAQIECOQnIADMb8z0mECHBeJ9/ipLv379Kg83+7nvvvtW161Zs6b62AMCBAgQIECAAAECBAgQIEAgPwEBYH5jpscEOixwwAEHVPddvHhx9fGmDxYtWlSsihOA7L///ptu9pwAAQIECBAgQIAAAQIECBDISEAAmNFg6SqBLRUYNWpU2G233YqXmTBhQli/fv1mL7lgwYIwffr0Yv2pp55abb9ZQysIECBAgAABAgQIECBAgACBLAS2zp39szhUnSRAoEePHsWsv6eddlqI9wMcMmRIOPfcc0M8M/DVV18t1k2cODHES4UPOeSQcM0115RCi5N8tLc8++yz7W22jQABAgQIECBAgAABAgQIENgGAmYB3gaoXpJAows89thjRbh3/fXXh00nAt9rr73C+PHjw1lnnRW6detW6lDiJcO1LmYBrlVKOwIECBAgQIAAAQJbR8AswFvH0asQyFHAJcA5jpo+E9gCgbVr14abbropTJs2bbPwL77sc889F26++eZw7733bkEVuxIgQIAAAQIECBAgQIAAAQKNIuAS4EYZCf0gkEDgtddeC5/4xCfCrFmzQufOncMFF1wQzjzzzBBnBF69enX4y1/+En74wx+G+++/P4wcOTJMmjQpjB07tuaeLV26tN228RLgoUOHttvGRgIECBAgQIAAAQIECBAgQGDrCrgEeOt6ejUCDS1w/vnnh3iPv7hMnTo1jB49erP+rlu3Lhx33HFh5syZYYcddghxUpABAwZs1q4jK+I9Avv06VPs6hLgjgjahwABAgQIECBAgEDHBVwC3HE7exLIXcAlwLmPoP4TqFEg3uvvhhtuKFrHST9aC//ixi5duoRLL720aPfGG29U9ylW+B8BAgQIECBAgAABAgQIECCQnYAAMLsh02ECHROI9/Z76aWXip0HDhzY7osMGjSouv2JJ56oPvaAAAECBAgQIECAAAECBAgQyE9AAJjfmOkxgQ4JxDP7Kku8zLe9JU4UUlla7ldZ5ycBAgQIECBAgAABAgQIECCQj4AAMJ+x0lMCWySwxx57hN122614jblz54b2QsD77ruvWmufffapPvaAAAECBAgQIECAAAECBAgQyE9AAJjfmOkxgQ4JxAk9hg8fXuz7zDPPhMsuu6zV11m+fHkYP358dduIESOqjz0gQIAAAQIECBAgQIAAAQIE8hMwC3B+Y6bHBDosEO/nF+/vt3LlyuI1Ro4cWUwG0q9fv7B69eowb968MHny5LBkyZJi+7HHHhtmzJjR4Xqb7mgW4E1FPCdAgAABAgQIECCQTsAswOmsVSLQaAL/f1OwRuuZ/hAgsNUFDjrooPC73/0ujBo1Krzwwgth2rRpxX+tFTrmmGPCrbfe2tom6wgQIECAAAECBAgQIECAAIGMBASAGQ2WrhLYGgLDhg0L8UzAKVOmhLvuuis8+uij4eWXXw5xso+ePXuGIUOGhM9//vPhxBNPDJ06ddoaJb0GAQIECBAgQIAAAQIECBAgUEcBlwDXEV9pAs0m4BLgZhtxx0uAAAECBAgQINBIAi4BbqTR0BcCaQVMApLWWzUCBAgQIECAAAECBAgQIECAAAECSQUEgEm5FSNAgAABAgQIECBAgAABAgQIECCQVkAAmNZbNQIECBAgQIAAAQIECBAgQIAAAQJJBQSASbkVI0CAAAECBAgQIECAAAECBAgQIJBWQACY1ls1AgQIECBAgAABAgQIECBAgAABAkkFBIBJuRUjQIAAAQIECBAgQIAAAQIECBAgkFZAAJjWWzUCBAgQIECAAAECBAgQIECAAAECSQUEgEm5FSNAgAABAgQIECBAgAABAgQIECCQVkAAmNZbNQIECBAgQIAAAQIECBAgQIAAAQJJBQSASbkVI0CAAAECBAgQIECAAAECBAgQIJBWQACY1ls1AgQIECBAgAABAgQIECBAgAABAkkFBIBJuRUjQIAAAQIECBAgQIAAAQIECBAgkFZAAJjWWzUCBAgQIECAAAECBAgQIECAAAECSQUEgEm5FSNAgAABAgQIECBAgAABAgQIECCQVkAAmNZbNQIECBAgQIAAAQIECBAgQIAAAQJJBQSASbkVI0CAAAECBAgQIECAAAECBAgQIJBWQACY1ls1AgQIECBAgAABAgQIECBAgAABAkkFBIBJuRUjQIAAAQIECBAgQIAAAQIECBAgkFZAAJjWWzUCBAgQIECAAAECBAgQIECAAAECSQUEgEm5FSNAgAABAgQIECBAgAABAgQIECCQVkAAmNZbNQIECBAgQIAAAQIECBAgQIAAAQJJBQSASbkVI0CAAAECBAgQIECAAAECBAgQIJBWQACY1ls1AgQIECBAgAABAgQIECBAgAABAkkFBIBJuRUjQIAAAQIECBAgQIAAAQIECBAgkFZAAJjWWzUCBAgQIECAAAECBAgQIECAAAECSQUEgEm5FSNAgAABAgQIECBAgAABAgQIECCQVkAAmNZbNQIECBAgQIAAAQIECBAgQIAAAQJJBQSASbkVI0CAAAECBAgQIECAAAECBAgQIJBWQACY1ls1AgQIECBAgAABAgQIECBAgAABAkkFBIBJuRUjQIAAAQIECBAgQIAAAQIECBAgkFZAAJjWWzUCBAgQIECAAAECBAgQIECAAAECSQUEgEm5FSNAgAABAgQIECBAgAABAgQIECCQVkAAmNZbNQIECBAgQIAAAQIECBAgQIAAAQJJBQSASbkVI0CAAAECBAgQIECAAAECBAgQIJBWQACY1ls1AgQIECBAgAABAgQIECBAgAABAkkFBIBJuRUjQIAAAQIECBAgQIAAAQIECBAgkFZAAJjWWzUCBAgQIECAAAECBAgQIECAAAECSQUEgEm5FSNAgAABAgQIECBAgAABAgQIECCQVkAAmNZbNQIECBAgQIAAAQIECBAgQIAAAQJJBQSASbkVI0CAAAECBAgQIECAAAECBAgQIJBWQACY1ls1AgQIECBAgAABAgQIECBAgAABAkkFBIBJuRUjQIAAAQIECBAgQIAAAQIECBAgkFZAAJjWWzUCBAgQIECAAAECBAgQIECAAAECSQUEgEm5FSNAgAABAgQIECBAgAABAgQIECCQVkAAmNZbNQIECBAgQIAAAQIECBAgQIAAAQJJBQSASbkVI0CAAAECBAgQIECAAAECBAgQIJBWQACY1ls1AgQIECBAgAABAgQIECBAgAABAkkFBIBJuRUjQIAAAQIECBAgQIAAAQIECBAgkFZAAJjWWzUCBAgQIECAAAECBAgQIECAAAECSQUEgEm5FSNAgAABAgQIECBAgAABAgQIECCQVkAAmNZbNQIECBAgQIAAAQIECBAgQIAAAQJJBQSASbkVI0CAAAECBAgQIECAAAECBAgQIJBWQACY1ls1AgQIECBAgAABAgQIECBAgAABAkkFBIBJuRUjQIAAAQIECBAgQIAAAQIECBAgkFZAAJjWWzUCBAgQIECAAAECBAgQIECAAAECSQUEgEm5FSNAgAABAgQIECBAgAABAgQIECCQVkAAmNZbNQIECBAgQIAAAQIECBAgQIAAAQJJBQSASbkVI0CAAAECBAgQIECAAAECBAgQIJBWQACY1ls1AgQIECBAgAABAgQIECBAgAABAkkFBIBJuRUjQIAAAQIECBAgQIAAAQIECBAgkFZAAJjWWzUCBAgQIECAAAECBAgQIECAAAECSQUEgEm5FSNAgAABAgQIECBAgAABAgQIECCQVkAAmNZbNQIECBAgQIAAAQIECBAgQIAAAQJJBQSASbkVI0CAAAECBAgQIECAAAECBAgQIJBWQACY1ls1AgQIECBAgAABAgQIECBAgAABAkkFBIBJuRUjQIAAAQIECBAgQIAAAQIECBAgkFZAAJjWWzUCBAgQIECAAAECBAgQIECAAAECSQUEgEm5FSNAgAABAgQIECBAgAABAgQIECCQVkAAmNZbNQIECBAgQIAAAQIECBAgQIAAAQJJBQSASbkVI0CAAAECBAgQIECAAAECBAgQIJBWQACY1ls1AgQIECBAgAABAgQIECBAgAABAkkFBIBJuRUjQIAAAQIECBAgQIAAAQIECBAgkFZAAJjWWzUCBAgQIECAAAECBAgQIECAAAECSQUEgEm5FSNAgAABAgQIECBAgAABAgQIECCQVkAAmNZbNQIECBAgQIAAAQIECBAgQIAAAQJJBQSASbkVI0CAAAECBAgQIECAAAECBAgQIJBWQACY1ls1AgQIECBAgAABAgQIECBAgAABAkkFBIBJuRUjQIAAAQIECBAgQIAAAQIECBAgkFZAAJjWWzUCBAgQIECAAAECBAgQIECAAAECSQUEgEm5FSNAgAABAgQIECBAgAABAgQIECCQVkAAmNZbNQIECBAgQIAAAQIECBAgQIAAAQJJBQSASbkVI0CAAAECBAgQIECAAAECBAgQIJBWQACY1ls1AgQIECBAgAABAgQIECBAgAABAkkFBIBJuRUjQIAAAQIECBAgQIAAAQIECBAgkFZAAJjWWzUCBAgQIECAAAECBAgQIECAAAECSQUEgEm5FSNAgAABAgQIECBAgAABAgQIECCQVkAAmNZbNQIECBAgQIAAAQIECBAgQIAAAQJJBQSASbkVI0CAAAECBAgQIECAAAECBAgQIJBWQACY1ls1AgQIECBAgAABAgQIECBAgAABAkkFBIBJuRUjQIAAAQIECBAgQIAAAQIECBAgkFZAAJjWWzUCBAgQIECAAAECBAgQIECAAAECSQUEgEm5FSNAgAABAgQIECBAgAABAgQIECCQVkAAmNZbNQIECBAgQIAAAQIECBAgQIAAAQJJBQSASbkVI0CAAAECBAgQIECAAAECBAgQIJBWQACY1ls1AgQIECBAgAABAgQIECBAgAABAkkFBIBJuRUjQIAAAQIECBAgQIAAAQIECBAgkFagS9pyqhEg0MwC69atqx7+mrAqhA3Vpx4QIECAAAECBAgQILCNBYrP4G/VaPnZfBuX9fIECDSAgACwAQZBFwg0i8Dzzz9fPdS/hpnVxx4QIECAAAECBAgQIJBWIH4279u3b9qiqhEgUDcBlwDXjV5hAgQIECBAgAABAgQIECBAgAABAtteoNOGN5dtX0YFAgQIhLB69eqwcOHCgqJHjx6hS5f6n4T87LPPhqFDhxZ9euCBB0KvXr0MFYEOC3g/dZjOjq0IeD+1gmJVhwW8nzpMZ8dWBLyfWkHJZFW87LdyVc7BBx8cdtppp0x6rpsECGypQP3/+t7SI7A/AQLZCMQPGEOGDGnY/sbwr3fv3g3bPx3LS8D7Ka/xavTeej81+gjl1T/vp7zGq9F76/3U6CO0ef9c9ru5iTUEmkHAJcDNMMqOkQABAgQIECBAgAABAgQIECBAoGkFBIBNO/QOnAABAgQIECBAgAABAgQIECBAoBkEBIDNMMqOkQABAgQIECBAgAABAgQIECBAoGkFBIBNO/QOnAABAgQIECBAgAABAgQIECBAoBkEBIDNMMqOkQABAgQIECBAgAABAgQIECBAoGkFBIBNO/QOnAABAgQIECBAgAABAgQIECBAoBkEBIDNMMqOkQABAgQIECBAgAABAgQIECBAoGkFOm14c2nao3fgBAgQIECAAAECBAgQIECAAAECBLZzAWcAbucD7PAIECBAgAABAgQIECBAgAABAgSaW0AA2Nzj7+gJECBAgAABAgQIECBAgAABAgS2cwEB4HY+wA6PAAECBAgQIECAAAECBAgQIECguQUEgM09/o6eAAECBAgQIECAAAECBAgQIEBgOxcQAG7nA+zwCBAgQIAAAQIECBAgQIAAAQIEmltAANjc4+/oCRAgQIAAAQIECBAgQIAAAQIEtnMBAeB2PsAOjwABAgQIECBAgAABAgQIECBAoLkFBIDNPf6OngABAgQIECBAgAABAgQIECBAYDsXEABu5wPs8AgQIECAAAECBAgQIECAAAECBJpbQADY3OPv6AkQIECAAAECBAgQIECAAAECBLZzAQHgdj7ADo8AgbYFlixZEs4///zQv3//0K1bt7DHHnuEoUOHhquvvjqsXLmy7R1tIfCWwEMPPRQuv/zycMIJJ4Q+ffqErl27hl133TUccMAB4Ytf/GKYPXs2KwJbReCCCy4InTp1qv537733bpXX9SLNIfDCCy+EH//4x+Hwww8PPXv2LP6teu973xsOPfTQ8O1vfzvMnTu3OSAc5RYLvP7662HKlCnh+OOPD7169ar+3jvwwAPDmDFjwrx587a4hhcgQIAAgW0j0GnDm8u2eWmvSoAAgcYVmD59ejjttNPCK6+80mon4wfZP/zhD6Ffv36tbreSwEc/+tEwa9ast4X4whe+EK677rrwjne8423bakCgNYG//e1vYfDgwWHdunXVzTNnzgxHHXVU9bkHBNoSuPXWW8M555wTXnzxxbaahE9+8pPhzjvvbHO7DQSiwNKlS8Pw4cPDwoUL2wUZN25cmDhxYvGFRbsNbSRAgACBpAJdklZTjAABAg0gEP+YPuWUU4qz/OLZWhdeeGE4+uijw6pVq8Itt9wSfvWrX4V//OMfxYfcv/71r8UZXQ3QbV1oMIGnn3666FE8i+azn/1sOPLII8Pee+8d1q9fX5xNE//4iW1+/etfF8HNTTfd1GBHoDs5CLzxxhvhK1/5SvEe2nPPPcOyZcty6LY+NojAjTfeGM4888wQ30fx/RODwCOOOKI44/2///1vWLRoUZg2bVrYcccdG6THutGoAvELiJbh34ABA8J5550X4hemK1asCPfff38R+r322mth0qRJxdmB8exSCwECBAg0joAzABtnLPSEAIFEAjHsi5fPdenSpTiD67DDDtuo8lVXXRXi5XZxueSSS8JFF1200XZPCESBESNGhDPOOCOcdNJJoXPnzpuhxEvu4uV2Tz75ZLEtni0YQ0ILgTICkydPDvFsmoMOOih8+tOfDldccUWxuzMAyyg2Z9vHH388DBw4MKxZs6b4tycGfe9617taxYiXdTpLuVUaK98SuP3228PJJ59cPIufm+ItLjb93Td//vwQt61duzZ07969+MIiftayECBAgEBjCLgHYGOMg14QIJBIIJ7RF8O/uHzpS18qPqgWT1r871vf+lZxX8C4Kv7xHT/IWghsKvD73/++OJN00z+AKu3e8573FGdDVJ7fdtttlYd+EqhJIF5u9/3vf79o+4tf/EJAU5OaRhWBb37zm0X4F/8tuuOOO9oM/2J74V9Fzc+2BObMmVPdFK+caO1336BBg4ovx2LD5cuXhyeeeKK6jwcECBAgUH8BAWD9x0APCBBIKNDyHkfxsqjWlh122KE4sytuix9gK4Fha22tI9CeQMt7tMVL7SwEygh87WtfC6+++moYPXq0+/2VgdO2CF7+9Kc/FRLf+MY3QgwBLQS2RCCeJVpZ2rs/8r777ltpVgTQ1SceECBAgEDdBQSAdR8CHSBAIKVAZVbWOOtv/Ka6rSVO8FBZ4n1tLAQ6ItDyD6YYLFsI1Crw29/+NsSzTOPs5PG2BBYCZQTixB+VJd6jtLLEL7X++c9/tjshSKWtnwRaCsTZ7SvL4sWLKw83+1n5sivOWr7//vtvtt0KAgQIEKifgL9G6mevMgECdRCI90SKy3777VfcA7CtLsT7bVWWyj6V534SqFXgvvvuqzZt+Z6qrvSAQCsCL7/8chg7dmyxZcKECaFHjx6ttLKKQNsC8+bNKzbGe/71798//OY3vwkf/OAHi0A5BjnxjMB4Fle8z208y9RC4O0ERo0aFXbbbbeiWfx3KU54temyYMGCMH369GL1qaeeWm2/aTvPCRAgQKA+AgLA+rirSoBAHQRWr14d4sQMcendu3e7PYg3r45nCcYl3ofLQqCsQJx188orr6zuFmeethCoRSBOQhRnaP3whz9c3Ku0ln20IdBS4LHHHiue9u3bN8R7AZ5++unhkUceadkk/Pvf/w4XX3xxcS/cZ555ZqNtnhDYVCB+ETF16tSw8847h3g/wCFDhoQ4y3QMm2fMmFGEyfHqiXjm+yGHHBKuueaaTV/CcwIECBCos4AAsM4DoDwBAukEVqxYUS226667Vh+39aASADo7oi0h69sTmDRpUnjggQeKJnH21sGDB7fX3DYChUC85cB1111XnKF87bXXhngZnYVAWYGXXnqp2CVOwvCzn/0s7L777iG+n5YtWxbil2FxQqwTTjihaPP3v/89xMuE45cWFgLtCcTfZQ8++GDxxcTDDz9c3J80zvr7sY99rAiTd9lllyL4i/+O9ezZs72Xso0AAQIE6iAgAKwDupIECNRHIP7RU1lqmfGwa9euRfNVq1ZVdvOTQE0C8dLf73znO0XbPffcM8QZXC0E3k4gnjlz1llnhQ0bNoRx48aFgw8++O12sZ1AqwKvvfZasX7NmjXFbK133XVXOPvss4vLyePvtviFRLzHZCUE/POf/1zMFNzqi1lJ4C2BtWvXhptuuilMmzat+HdqU5jnnnsu3HzzzSZP2xTGcwIECDSIgACwQQZCNwgQ2PYCO+20U7VIy8kZqis3eRD/cIpLvNzFQqBWgUcffTTEsyTWrVsX4h/acTKHvfbaq9bdtWtigcsvvzzEe47uvffe4Qc/+EETSzj0LRVo+fsunt33oQ99aLOXjBMTtZxgJgY3FgJtCcRQediwYeGyyy4rJpGJtyqI/17Fz0qvvPJKuPvuu8MRRxxRnF06cuTI8JOf/KStl7KeAAECBOokIACsE7yyBAikF3jnO99ZLVrLZb2VMyhquVy4+sIeNLVAvKfWcccdF+JMm507dy7OhGg5o3RT4zj4dgXipZpXXHFF0eanP/1p9R6k7e5kI4E2BFr+vquc5dda0w984APhfe97X7EpXhZsIdCWQPxSYtasWcXmKVOmhDgRSJzcKl5REScHiZcBz5w5Mxx99NHF2YHnnXfeZvedbOu1rSdAgACBNAJd0pRRhQABAvUXiGdExJkP40QgTz31VLsdigFOJQDs06dPu21tJBAF4k3049kR8We8b9v1119fnAlIh0AtAvGekfHM5Dgz68qVK8Mtt9yy2W7xXm2V5Z577ikmConP49k2lXuWVrb72dwC8fdWnEgmLm836VVs+/TTTxf3B2xuNUfflkC8LcENN9xQbI6zSI8ePbrVpl26dAmXXnppcSZgvKdk3Cf+22YhQIAAgcYQEAA2xjjoBQECiQT69+8fZs+eHf71r38Vl2jGD6utLfFsnMoS97EQaE8ghsrx7IfFixcXzeIZXGeccUZ7u9hGYCOByi0H4nto1KhRG21r7Un8I7uyxDNPBYAVDT+jQDyzr3JG3/r169tFqWxv6/dhuzvb2BQC8d5+lYllBg4c2O4xDxo0qLq95Wep6koPCBAgQKBuAi4Brhu9wgQI1EMg3p8mLvHsvvnz57fZhTiJQ2U5/PDDKw/9JLCZQLz30cc//vHw2GOPFduuvPLK8PWvf32zdlYQIEAglcBHPvKRaqlFixZVH7f2oPLFReVS4NbaWNfcAi3D4Xh/2/aWOFFIZWm5X2WdnwQIECBQPwEBYP3sVSZAoA4Cn/rUp6pVK5ezVFe89SBetnLjjTcWz3bffffifjabtvGcQBSIl2oOHz48PPTQQwXI9773vTB+/Hg4BEoLTJ06tbhvVrzUrq3/Wk4MEu+1VWnXt2/f0vXssH0LnHjiiWHHHXcsDvKOO+5o82Djl10vvvhisf3II49ss50NzS2wxx57FPf5iwpz584trqBoS6TlF6j77LNPW82sJ0CAAIE6CAgA64CuJAEC9RMYOnRoqPyRE29iHT/IbrpMnDixmNkurh87dmz1j6hN23ne3ALxfm1xtt85c+YUEPG98qMf/ai5URw9AQINIfDud787fPnLXy768sc//rHVe0quWLEinHvuudX+nn322dXHHhBoKRBnjI5fdsUl3uc2zgTc2hLvn9zyS7ARI0a01sw6AgQIEKiTQKc3vz3eUKfayhIgQKAuAgsWLAjxst5Vq1aFOMPvd7/73eIsv/g83nj/l7/8ZdGveKPrBx98MLScTbEuHVa0IQVOOumkUDmz5phjjgmTJ08uJv9oq7NxpsT4nrIQ6KjAxRdfHC655JJi93gG4FFHHdXRl7JfEwg8//zzYfDgwWHJkiUhXor51a9+NXzmM58pzuRauHBhMYtr5R5t55xzTvj5z3/eBCoOsaMC8b0S7+8Xz3yPS5x8KE4GEicuWr16dZg3b17xezC+3+Jy7LHHhhkzZhSP/Y8AAQIEGkNAANgY46AXBAgkFpg2bVo4/fTTw//+979WK8egZvr06WG//fZrdbuVBOJMv2WW97///eE///lPmV20JbCRgABwIw5PahB4/PHHQ7wcOE581dYyZsyYcO211zrbvS0g66sCMdCLkxTFia/aW+KXYrfddlvo3r17e81sI0CAAIHEAi4BTgyuHAECjSEQv7l+5JFHwrhx44qzsnbZZZcQ7/cXz5aYMGFCiGcJCv8aY6z0ggABAgQ6JhBnsX/44YfDVVddFQ499NAQ7+UWz0bu3bt3+NznPhfuueeeEG+HUblfYMeq2KtZBIYNGxbimYDxc1I8A7lHjx7Fe2fnnXcO8X5/p5xySrjzzjuLM/+Ef83yrnCcBAjkJOAMwJxGS18JECBAgAABAgQIECBAgAABAgQIlBRwBmBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CQgAMxptPSVAAECBAgQIBMPJjgAAAAuSURBVECAAAECBAgQIECAQEkBAWBJMM0JECBAgAABAgQIECBAgAABAgQI5CTwfxIKdixFBXmJAAAAAElFTkSuQmCC\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "MovieWriter ffmpeg unavailable; using Pillow instead.\n"
     ]
    }
   ],
   "source": [
    "# animation dans un fichier gif de la grille (ici un planeur)\n",
    "state = init_grille(10,10)\n",
    "state=planeur(state)\n",
    "def animate(frame):\n",
    "    global state\n",
    "    state = suivant(state)\n",
    "    plt.imshow(state)\n",
    "\n",
    "fig = plt.figure()\n",
    "anim = animation.FuncAnimation(fig, animate, frames=40, interval=200)\n",
    "anim.save('jeu-de-la-vie-klein.gif')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "d40e9104",
   "metadata": {},
   "outputs": [],
   "source": [
    "def vies(iterations,n,m):\n",
    "    grille=init_grille(n,m)\n",
    "    grille=planeur(grille)\n",
    "    grilles=[grille]\n",
    "    for i in range(iterations):\n",
    "        grille=suivant(grille)\n",
    "        grilles.append(grille)\n",
    "    return(grilles)\n",
    "\n",
    "grilles=vies(100,20,20)\n",
    "\n",
    "def animate(frame):\n",
    "    plt.imshow(grilles[frame])\n",
    "\n",
    "#fig = plt.figure()\n",
    "#anim = animation.FuncAnimation(fig, animate, frames=len(grilles), interval=200)\n",
    "#anim.save('jeu-de-la-vie-klein.gif')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3071799f",
   "metadata": {},
   "source": [
    "############### Les fonctions suivantes sont des fonctions brouillon de travail ###############"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "6d030e65",
   "metadata": {},
   "outputs": [],
   "source": [
    "#affichage après un certain nombre d'itérations (ça marche)\n",
    "#grille=init_grille(20,20)\n",
    "#res=planeur(grille)\n",
    "#def ite(n,res):\n",
    "#    if n==0:\n",
    "#        return(res)\n",
    "#    else:\n",
    "#        return(ite(n-1,suivant(res)))\n",
    "#res=ite(1000,res)\n",
    "#aff=plt.pcolormesh(res)\n",
    "#plt.show()\n",
    "\n",
    "#on fait iterations+1 générations\n",
    "def vies(iterations,n,m):\n",
    "    grille=init_grille(n,m)\n",
    "    grille=planeur(grille)\n",
    "    grilles=[grille]\n",
    "    for i in range(iterations):\n",
    "        grille=suivant(grille)\n",
    "        grilles.append(grille)\n",
    "    return(grilles)\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "377cb420",
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "/* global mpl */\n",
       "window.mpl = {};\n",
       "\n",
       "mpl.get_websocket_type = function () {\n",
       "    if (typeof WebSocket !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert(\n",
       "            'Your browser does not have WebSocket support. ' +\n",
       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "                'Firefox 4 and 5 are also supported but you ' +\n",
       "                'have to enable WebSockets in about:config.'\n",
       "        );\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById('mpl-warnings');\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent =\n",
       "                'This browser does not support binary websocket messages. ' +\n",
       "                'Performance may be slow.';\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = document.createElement('div');\n",
       "    this.root.setAttribute('style', 'display: inline-block');\n",
       "    this._root_extra_style(this.root);\n",
       "\n",
       "    parent_element.appendChild(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen = function () {\n",
       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
       "        fig.send_message('send_image_mode', {});\n",
       "        if (fig.ratio !== 1) {\n",
       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
       "        }\n",
       "        fig.send_message('refresh', {});\n",
       "    };\n",
       "\n",
       "    this.imageObj.onload = function () {\n",
       "        if (fig.image_mode === 'full') {\n",
       "            // Full images could contain transparency (where diff images\n",
       "            // almost always do), so we need to clear the canvas so that\n",
       "            // there is no ghosting.\n",
       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "        }\n",
       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "    };\n",
       "\n",
       "    this.imageObj.onunload = function () {\n",
       "        fig.ws.close();\n",
       "    };\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_header = function () {\n",
       "    var titlebar = document.createElement('div');\n",
       "    titlebar.classList =\n",
       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
       "    var titletext = document.createElement('div');\n",
       "    titletext.classList = 'ui-dialog-title';\n",
       "    titletext.setAttribute(\n",
       "        'style',\n",
       "        'width: 100%; text-align: center; padding: 3px;'\n",
       "    );\n",
       "    titlebar.appendChild(titletext);\n",
       "    this.root.appendChild(titlebar);\n",
       "    this.header = titletext;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
       "    canvas_div.setAttribute(\n",
       "        'style',\n",
       "        'border: 1px solid #ddd;' +\n",
       "            'box-sizing: content-box;' +\n",
       "            'clear: both;' +\n",
       "            'min-height: 1px;' +\n",
       "            'min-width: 1px;' +\n",
       "            'outline: 0;' +\n",
       "            'overflow: hidden;' +\n",
       "            'position: relative;' +\n",
       "            'resize: both;'\n",
       "    );\n",
       "\n",
       "    function on_keyboard_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.key_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'keydown',\n",
       "        on_keyboard_event_closure('key_press')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'keyup',\n",
       "        on_keyboard_event_closure('key_release')\n",
       "    );\n",
       "\n",
       "    this._canvas_extra_style(canvas_div);\n",
       "    this.root.appendChild(canvas_div);\n",
       "\n",
       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
       "    canvas.classList.add('mpl-canvas');\n",
       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
       "\n",
       "    this.context = canvas.getContext('2d');\n",
       "\n",
       "    var backingStore =\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        this.context.webkitBackingStorePixelRatio ||\n",
       "        this.context.mozBackingStorePixelRatio ||\n",
       "        this.context.msBackingStorePixelRatio ||\n",
       "        this.context.oBackingStorePixelRatio ||\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        1;\n",
       "\n",
       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
       "        'canvas'\n",
       "    ));\n",
       "    rubberband_canvas.setAttribute(\n",
       "        'style',\n",
       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
       "    );\n",
       "\n",
       "    // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
       "    if (this.ResizeObserver === undefined) {\n",
       "        if (window.ResizeObserver !== undefined) {\n",
       "            this.ResizeObserver = window.ResizeObserver;\n",
       "        } else {\n",
       "            var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
       "            this.ResizeObserver = obs.ResizeObserver;\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
       "        var nentries = entries.length;\n",
       "        for (var i = 0; i < nentries; i++) {\n",
       "            var entry = entries[i];\n",
       "            var width, height;\n",
       "            if (entry.contentBoxSize) {\n",
       "                if (entry.contentBoxSize instanceof Array) {\n",
       "                    // Chrome 84 implements new version of spec.\n",
       "                    width = entry.contentBoxSize[0].inlineSize;\n",
       "                    height = entry.contentBoxSize[0].blockSize;\n",
       "                } else {\n",
       "                    // Firefox implements old version of spec.\n",
       "                    width = entry.contentBoxSize.inlineSize;\n",
       "                    height = entry.contentBoxSize.blockSize;\n",
       "                }\n",
       "            } else {\n",
       "                // Chrome <84 implements even older version of spec.\n",
       "                width = entry.contentRect.width;\n",
       "                height = entry.contentRect.height;\n",
       "            }\n",
       "\n",
       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
       "            // the canvas container.\n",
       "            if (entry.devicePixelContentBoxSize) {\n",
       "                // Chrome 84 implements new version of spec.\n",
       "                canvas.setAttribute(\n",
       "                    'width',\n",
       "                    entry.devicePixelContentBoxSize[0].inlineSize\n",
       "                );\n",
       "                canvas.setAttribute(\n",
       "                    'height',\n",
       "                    entry.devicePixelContentBoxSize[0].blockSize\n",
       "                );\n",
       "            } else {\n",
       "                canvas.setAttribute('width', width * fig.ratio);\n",
       "                canvas.setAttribute('height', height * fig.ratio);\n",
       "            }\n",
       "            canvas.setAttribute(\n",
       "                'style',\n",
       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
       "            );\n",
       "\n",
       "            rubberband_canvas.setAttribute('width', width);\n",
       "            rubberband_canvas.setAttribute('height', height);\n",
       "\n",
       "            // And update the size in Python. We ignore the initial 0/0 size\n",
       "            // that occurs as the element is placed into the DOM, which should\n",
       "            // otherwise not happen due to the minimum size styling.\n",
       "            if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
       "                fig.request_resize(width, height);\n",
       "            }\n",
       "        }\n",
       "    });\n",
       "    this.resizeObserverInstance.observe(canvas_div);\n",
       "\n",
       "    function on_mouse_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.mouse_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousedown',\n",
       "        on_mouse_event_closure('button_press')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseup',\n",
       "        on_mouse_event_closure('button_release')\n",
       "    );\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousemove',\n",
       "        on_mouse_event_closure('motion_notify')\n",
       "    );\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseenter',\n",
       "        on_mouse_event_closure('figure_enter')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseleave',\n",
       "        on_mouse_event_closure('figure_leave')\n",
       "    );\n",
       "\n",
       "    canvas_div.addEventListener('wheel', function (event) {\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        on_mouse_event_closure('scroll')(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.appendChild(canvas);\n",
       "    canvas_div.appendChild(rubberband_canvas);\n",
       "\n",
       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
       "    this.rubberband_context.strokeStyle = '#000000';\n",
       "\n",
       "    this._resize_canvas = function (width, height, forward) {\n",
       "        if (forward) {\n",
       "            canvas_div.style.width = width + 'px';\n",
       "            canvas_div.style.height = height + 'px';\n",
       "        }\n",
       "    };\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
       "        event.preventDefault();\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus() {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'mpl-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'mpl-button-group';\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'mpl-button-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
       "        button.classList = 'mpl-widget';\n",
       "        button.setAttribute('role', 'button');\n",
       "        button.setAttribute('aria-disabled', 'false');\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "\n",
       "        var icon_img = document.createElement('img');\n",
       "        icon_img.src = '_images/' + image + '.png';\n",
       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
       "        icon_img.alt = tooltip;\n",
       "        button.appendChild(icon_img);\n",
       "\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    var fmt_picker = document.createElement('select');\n",
       "    fmt_picker.classList = 'mpl-widget';\n",
       "    toolbar.appendChild(fmt_picker);\n",
       "    this.format_dropdown = fmt_picker;\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = document.createElement('option');\n",
       "        option.selected = fmt === mpl.default_extension;\n",
       "        option.innerHTML = fmt;\n",
       "        fmt_picker.appendChild(option);\n",
       "    }\n",
       "\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_message = function (type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function () {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
       "        fig.send_message('refresh', {});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
       "    var x0 = msg['x0'] / fig.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
       "    var x1 = msg['x1'] / fig.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0,\n",
       "        0,\n",
       "        fig.canvas.width / fig.ratio,\n",
       "        fig.canvas.height / fig.ratio\n",
       "    );\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch (cursor) {\n",
       "        case 0:\n",
       "            cursor = 'pointer';\n",
       "            break;\n",
       "        case 1:\n",
       "            cursor = 'default';\n",
       "            break;\n",
       "        case 2:\n",
       "            cursor = 'crosshair';\n",
       "            break;\n",
       "        case 3:\n",
       "            cursor = 'move';\n",
       "            break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
       "    for (var key in msg) {\n",
       "        if (!(key in fig.buttons)) {\n",
       "            continue;\n",
       "        }\n",
       "        fig.buttons[key].disabled = !msg[key];\n",
       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
       "    if (msg['mode'] === 'PAN') {\n",
       "        fig.buttons['Pan'].classList.add('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    } else if (msg['mode'] === 'ZOOM') {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.add('active');\n",
       "    } else {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message('ack', {});\n",
       "};\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = 'image/png';\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src\n",
       "                );\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data\n",
       "            );\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        } else if (\n",
       "            typeof evt.data === 'string' &&\n",
       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
       "        ) {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig['handle_' + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\n",
       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
       "                msg\n",
       "            );\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\n",
       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
       "                    e,\n",
       "                    e.stack,\n",
       "                    msg\n",
       "                );\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "};\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function (e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e) {\n",
       "        e = window.event;\n",
       "    }\n",
       "    if (e.target) {\n",
       "        targ = e.target;\n",
       "    } else if (e.srcElement) {\n",
       "        targ = e.srcElement;\n",
       "    }\n",
       "    if (targ.nodeType === 3) {\n",
       "        // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "    }\n",
       "\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    var boundingRect = targ.getBoundingClientRect();\n",
       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
       "\n",
       "    return { x: x, y: y };\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys(original) {\n",
       "    return Object.keys(original).reduce(function (obj, key) {\n",
       "        if (typeof original[key] !== 'object') {\n",
       "            obj[key] = original[key];\n",
       "        }\n",
       "        return obj;\n",
       "    }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
       "    var canvas_pos = mpl.findpos(event);\n",
       "\n",
       "    if (name === 'button_press') {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * this.ratio;\n",
       "    var y = canvas_pos.y * this.ratio;\n",
       "\n",
       "    this.send_message(name, {\n",
       "        x: x,\n",
       "        y: y,\n",
       "        button: event.button,\n",
       "        step: event.step,\n",
       "        guiEvent: simpleKeys(event),\n",
       "    });\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.key_event = function (event, name) {\n",
       "    // Prevent repeat events\n",
       "    if (name === 'key_press') {\n",
       "        if (event.which === this._key) {\n",
       "            return;\n",
       "        } else {\n",
       "            this._key = event.which;\n",
       "        }\n",
       "    }\n",
       "    if (name === 'key_release') {\n",
       "        this._key = null;\n",
       "    }\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which !== 17) {\n",
       "        value += 'ctrl+';\n",
       "    }\n",
       "    if (event.altKey && event.which !== 18) {\n",
       "        value += 'alt+';\n",
       "    }\n",
       "    if (event.shiftKey && event.which !== 16) {\n",
       "        value += 'shift+';\n",
       "    }\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
       "    if (name === 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message('toolbar_button', { name: name });\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "\n",
       "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
       "// prettier-ignore\n",
       "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
       "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\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";/* global mpl */\n",
       "\n",
       "var comm_websocket_adapter = function (comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function () {\n",
       "        comm.close();\n",
       "    };\n",
       "    ws.send = function (m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function (msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data']);\n",
       "    });\n",
       "    return ws;\n",
       "};\n",
       "\n",
       "mpl.mpl_figure_comm = function (comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = document.getElementById(id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm);\n",
       "\n",
       "    function ondownload(figure, _format) {\n",
       "        window.open(figure.canvas.toDataURL());\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element;\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error('Failed to find cell for figure', id, fig);\n",
       "        return;\n",
       "    }\n",
       "    fig.cell_info[0].output_area.element.on(\n",
       "        'cleared',\n",
       "        { fig: fig },\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
       "    var width = fig.canvas.width / fig.ratio;\n",
       "    fig.cell_info[0].output_area.element.off(\n",
       "        'cleared',\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "    fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable();\n",
       "    fig.parent_element.innerHTML =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "    fig.close_ws(fig, msg);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width / this.ratio;\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message('ack', {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () {\n",
       "        fig.push_to_output();\n",
       "    }, 1000);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'btn-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'btn-group';\n",
       "    var button;\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'btn-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        button = fig.buttons[name] = document.createElement('button');\n",
       "        button.classList = 'btn btn-default';\n",
       "        button.href = '#';\n",
       "        button.title = name;\n",
       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message pull-right';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = document.createElement('div');\n",
       "    buttongrp.classList = 'btn-group inline pull-right';\n",
       "    button = document.createElement('button');\n",
       "    button.classList = 'btn btn-mini btn-primary';\n",
       "    button.href = '#';\n",
       "    button.title = 'Stop Interaction';\n",
       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
       "    button.addEventListener('click', function (_evt) {\n",
       "        fig.handle_close(fig, {});\n",
       "    });\n",
       "    button.addEventListener(\n",
       "        'mouseover',\n",
       "        on_mouseover_closure('Stop Interaction')\n",
       "    );\n",
       "    buttongrp.appendChild(button);\n",
       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._remove_fig_handler = function (event) {\n",
       "    var fig = event.data.fig;\n",
       "    if (event.target !== this) {\n",
       "        // Ignore bubbled events from children.\n",
       "        return;\n",
       "    }\n",
       "    fig.close_ws(fig, {});\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (el) {\n",
       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
       "    // this is important to make the div 'focusable\n",
       "    el.setAttribute('tabindex', 0);\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    } else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager) {\n",
       "        manager = IPython.keyboard_manager;\n",
       "    }\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which === 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "};\n",
       "\n",
       "mpl.find_output_cell = function (html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i = 0; i < ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code') {\n",
       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] === html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "};\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel !== null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target(\n",
       "        'matplotlib',\n",
       "        mpl.mpl_figure_comm\n",
       "    );\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA+gAAAPoCAYAAABNo9TkAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAD6KADAAQAAAABAAAD6AAAAAAYK4+nAABAAElEQVR4AezdebAW1Z0//nMNAQXUxBVZRhjHBaIxTlwjKk5GjQZBiUvUUrGMxpqJFTOVZWrcazTRqWicslImFCouo3FL0EGDRuvngoMLiRmN2wSVGlBc44IiGpWfp+f7PLk8PPe5ffE2z+E5r6663l5Onz7n9eGft923u2v5x0uwECBAgAABAgQIECBAgAABAm0VWKutV3dxAgQIECBAgAABAgQIECBAoBAQ0P1DIECAAAECBAgQIECAAAECCQgI6AkUwRAIECBAgAABAgQIECBAgICA7t8AAQIECBAgQIAAAQIECBBIQEBAT6AIhkCAAAECBAgQIECAAAECBAR0/wYIECBAgAABAgQIECBAgEACAgJ6AkUwBAIECBAgQIAAAQIECBAgIKD7N0CAAAECBAgQIECAAAECBBIQENATKIIhECBAgAABAgQIECBAgAABAd2/AQIECBAgQIAAAQIECBAgkICAgJ5AEQyBAAECBAgQIECAAAECBAgI6P4NECBAgAABAgQIECBAgACBBAQE9ASKYAgECBAgQIAAAQIECBAgQEBA92+AAAECBAgQIECAAAECBAgkICCgJ1AEQyBAgAABAgQIECBAgAABAgK6fwMECBAgQIAAAQIECBAgQCABAQE9gSIYAgECBAgQIECAAAECBAgQEND9GyBAgAABAgQIECBAgAABAgkICOgJFMEQCBAgQIAAAQIECBAgQICAgO7fAAECBAgQIECAAAECBAgQSEBAQE+gCIZAgAABAgQIECBAgAABAgQEdP8GCBAgQIAAAQIECBAgQIBAAgICegJFMAQCBAgQIECAAAECBAgQICCg+zdAgAABAgQIECBAgAABAgQSEBDQEyiCIRAgQIAAAQIECBAgQIAAAQHdvwECBAgQIECAAAECBAgQIJCAgICeQBEMgQABAgQIECBAgAABAgQICOj+DRAgQIAAAQIECBAgQIAAgQQEBPQEimAIBAgQIECAAAECBAgQIEBAQPdvgAABAgQIECBAgAABAgQIJCCQRED/3e9+F374wx+G/fffP4waNSoMGjQoDB06NGy11VZh6tSp4b777usT1ezZs8OUKVPCyJEji77i77gd9/fn8tprr4UzzzwzbL/99mH99dcP6623XrEe98VjFgIECBAgQIAAAQIECBAgUFaga/nHS9nGVbTba6+9wr333ttr10cffXSYPn16GDhwYI9t41ROOumkMG3atB7bnHjiieFnP/tZ6Orq6rFNmQMPP/xwmDx5cli8eHHT5sOHDw8333xz2HHHHZset5MAAQIECBAgQIAAAQIECHQXaPsd9Oeff74YTwy03/72t8ONN94YHnrooTB37txw4YUXhhEjRhTHr7rqquJuevfBN66fdtpp9XC+ww47hGuvvbboK/6O23GJ4f30009vPLVP23HMBx54YBHOBwwYEL7//e8X/5Mh/o+GuB73vfDCC2HixImhNr8+XUBjAgQIECBAgAABAgQIEMhOoO130GOIPeaYY8LXvva18KlPfWqlArz66qth9913D//zP/9THIsheI899lip3fz588PYsWPDBx98UNy1ju3WWWederulS5eGeLd+3rx5RYB+6qmnwhZbbFE/3peV+Nj9FVdcUZxy/fXXh0MPPXSF02+44YZw2GGHFfuOO+64cNlll61w3AYBAgQIECBAgAABAgQIEGgUaPsd9FmzZhVhtlk4j4PdaKONwgUXXFAfd7zD3mz5yU9+UoTzeOziiy9eIZzHfYMHDy72x/UY4i+66KK42uflpZdeCldffXVx3n777bdSOI8HYmCPx+Jy5ZVXhniOhQABAgQIECBAgAABAgQItBJoe0BvNbjasQkTJtRWwzPPPFNfr63Evz2Pf+8dl2222SbsuuuutUMr/I77t95662LfzJkzw6r8+f0tt9wSPvzww6KPeHe8pyXeZY9LbBvPsRAgQIAAAQIECBAgQIAAgVYCa0RAf//99+tzWGutlYf83HPP1f/WOz7G3mqpHV+0aFFYsGBBq6ZNj3V/o3ytr2YNux+bM2dOsyb2ESBAgAABAgQIECBAgACBusDKabd+KJ2Ve+65pz6YeIe8cXnyySfru5odrx/8eKX78e7ndW/Tar12Tvys2rBhw3psutlmmxWfXYsNauf02NgBAgQIECBAgAABAgQIEMheYEDqAh999FE477zz6sOsvXytvuPjlYULF9Y34zfPWy3xO+u1pft5tX29/a6d09t1Yj/xWo8//vgK4+ut/3g83t1vtSxbtizEl9xtuummYeONNy5eeteqvWMECBAgQIAAAQIECBDoZIH4nrFXXnmlmOJ2220X1l577TVyuskH9Pjyt/jZtbgcfPDBTb8rvmTJkjr+0KFD6+vNVoYMGVLf/fbbb9fXy67UrtXbdWJ/tWv19Trd/ydC2XFpR4AAAQIECBAgQIAAAQKhyI877bTTGkmR9CPu8dH2f/7nfy5gN9lkk3DJJZc0RY53lGvLwIEDa6tNfw8aNKi+/913362vl12pXau368T+atdaleuUHY92BAgQIECAAAECBAgQINAZAsneQY+Phsc75vFRhRh04/fG4yPdzZbujy90f6Fcs7bvvfdefXf376TXd/ayEq8Vv6ne23ViN7Vr9fU6tcfoexpKPP6lL32pOLxT2DsMCn/53ntP59hPgAABAgQIECBAgACBThV4L7wbHg7/XzG9+GfAa+qSZECPb2Xfd999w+uvvx7i99Gvvfba0P2t6I3Y6667bn1Xb4+Tv/POO/W2ZR5Trzf+fyvxWjGg93ad2Lx2rb5ep8zft9fGFcP52l2Da5t+EyBAgAABAgQIECBAID+B5X+Z8oABScbcvwywxVpyj7i/8MIL4e///u9D/N3V1RUuu+yy4k56izmE7oG2txesdb87vSp/6127Vm/XieOtXWtVrtNqvo4RIECAAAECBAgQIECAQOcJJBXQX3311bDPPvuEZ599tpC++OKLwzHHHNOr+rhx4+pt4tvNWy3dj48dO7ZV06bHatd68803w4svvti0Tdy5ePHi8NZbbxXHV+U6PXbsAAECBAgQIECAAAECBAh0pEAyAT0G3v322y888cQTBXT8tNo//uM/lkIfM2ZMGD58eNG2+zfTm5187733FrtHjBgRRo8e3axJy33jx4+vH291re7Hdt999/o5VggQIECAAAECBAgQIECAQDOBJAJ6/Jvur371q+F3v/tdMcZTTz01/OAHP2g23qb74qPwkydPLo7FO+QPPPBA03Zxf+0Oemwfz+vrMmnSpLDWWv/Hdvnll/d4+owZM4pjsW08x0KAAAECBAgQIECAAAECBFoJtD2gx7ehx7e133///cU4v/3tb4dzzjmn1ZibHjvllFNC7WUAJ598cmj8tFncjvvjEtvF9s2WCRMmFME9hvcFCxas1GTYsGHhqKOOKvbffvvt4cYbb1ypzQ033BDisbgcffTRIZ5jIUCAAAECBAgQIECAAAECrQTa/nq7I444Itxxxx3FGP/u7/4uHH/88eEPf/hDj2OO3x/faqutVjoe9333u98N8dH4efPmhfhYebwLv8UWW4RnnnkmnH/++eGRRx4pzvve974Xttxyy5X6KLvj3HPPDbNnzw6vvPJKiOOP15s4cWJx+qxZs8IFF1xQrMfX+6/K/2woOw7tCBAgQIAAAQIECBAgQKBzBLqWf7y0czp9fcx88803b3pnO87ho48+CieccELx5vee5hT/B8C0adPqj6k3tot30Gt/Px4/9za6h79Tf/DBB8NBBx3U44vi4l3zmTNnhl122aXxEp94O75BvvZm+PHhAJ9Z+8SiOiBAgAABAgQIECBAYE0WWLZ8aZgTbiumEL+mVfv61po2p7Y/4t6fYPHvvS+99NJw6623Fn+THl8cF++4x9/xb85vu+22MH369B7DeV/GEoP3Y489Fk477bSw7bbbhvit8/iz3XbbFfviUwBVhPO+jFFbAgQIECBAgAABAgQIEFhzBNp+B33NoUpnpO6gp1MLIyFAgAABAgQIECBAoP0C7qC3vwZGQIAAAQIECBAgQIAAAQIEOkagox5x75iqmAgBAgQIECBAgAABAgQIZCcgoGdXchMmQIAAAQIECBAgQIAAgRQFBPQUq2JMBAgQIECAAAECBAgQIJCdgICeXclNmAABAgQIECBAgAABAgRSFBDQU6yKMREgQIAAAQIECBAgQIBAdgICenYlN2ECBAgQIECAAAECBAgQSFFAQE+xKsZEgAABAgQIECBAgAABAtkJCOjZldyECRAgQIAAAQIECBAgQCBFAQE9xaoYEwECBAgQIECAAAECBAhkJyCgZ1dyEyZAgAABAgQIECBAgACBFAUE9BSrYkwECBAgQIAAAQIECBAgkJ2AgJ5dyU2YAAECBAgQIECAAAECBFIUENBTrIoxESBAgAABAgQIECBAgEB2AgJ6diU3YQIECBAgQIAAAQIECBBIUUBAT7EqxkSAAAECBAgQIECAAAEC2QkI6NmV3IQJECBAgAABAgQIECBAIEUBAT3FqhgTAQIECBAgQIAAAQIECGQnIKBnV3ITJkCAAAECBAgQIECAAIEUBQT0FKtiTAQIECBAgAABAgQIECCQnYCA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O3duuOSSS0LtM2lbb711OOussxqHZ5sAAQIECBAgQIAAAQIECKwkkERAnz59erjiiitWGlzccf/99xc/3Q/2FtBrj7d/6lOfKsJ093P7Yz3eoY9jjj89LXvuuWe45pprwgYbbNBTE/sJECBAgAABAgQIECBAgEBdIImAXh9NP6z88Y9/DA8++GDR0z777BOGDRvWD73+pYsf//jH4a677irulj/99NPFi+ji3fP4t+bxZXC77LJLOOKII8K+++5bPCb/lzOtESBAgAABAgQIECBAgACBngW6Pv4c2PKeDzuSosCiRYvCqFGjiqGNDweEtbsGpzhMYyJAgAABAgQIECBAgMBqEVi2fGmYE24rrhX/5HjkyJGr5br9fZGOfElcfyPpjwABAgQIECBAgAABAgQIVC0goFctrH8CBAgQIECAAAECBAgQIFBCQEAvgaQJAQIECBAgQIAAAQIECBCoWkBAr1pY/wQIECBAgAABAgQIECBAoISAgF4CSRMCBAgQIECAAAECBAgQIFC1gIBetbD+CRAgQIAAAQIECBAgQIBACQEBvQSSJgQIECBAgAABAgQIECBAoGoBAb1qYf0TIECAAAECBAgQIECAAIESAgJ6CSRNCBAgQIAAAQIECBAgQIBA1QICetXC+idAgAABAgQIECBAgAABAiUEBPQSSJoQIECAAAECBAgQIECAAIGqBQT0qoX1T4AAAQIECBAgQIAAAQIESggI6CWQNCFAgAABAgQIECBAgAABAlULCOhVC+ufAAECBAgQIECAAAECBAiUEBDQSyBpQoAAAQIECBAgQIAAAQIEqhYQ0KsW1j8BAgQIECBAgAABAgQIECghIKCXQNKEAAECBAgQIECAAAECBAhULSCgVy2sfwIECBAgQIAAAQIECBAgUEJAQC+BpAkBAgQIECBAgAABAgQIEKhaQECvWlj/BAgQIECAAAECBAgQIECghICAXgJJEwIECBAgQIAAAQIECBAgULWAgF61sP4JECBAgAABAgQIECBAgEAJAQG9BJImBAgQIECAAAECBAgQIECgagEBvWph/RMgQIAAAQIECBAgQIAAgRICAnoJJE0IECBAgAABAgQIECBAgEDVAgJ61cL6J0CAAAECBAgQIECAAAECJQQE9BJImhAgQIAAAQIECBAgQIAAgaoFBPSqhfVPgAABAgQIECBAgAABAgRKCAjoJZA0IUCAAAECBAgQIECAAAECVQsI6FUL658AAQIECBAgQIAAAQIECJQQENBLIGlCgAABAgQIECBAgAABAgSqFhDQqxbWPwECBAgQIECAAAECBAgQKCEgoJdA0oQAAQIECBAgQIAAAQIECFQtIKBXLax/AgQIECBAgAABAgQIECBQQkBAL4GkCQECBAgQIECAAAECBAgQqFpAQK9aWP8ECBAgQIAAAQIECBAgQKCEgIBeAkkTAgQIECBAgAABAgQIECBQtYCAXrWw/gkQIECAAAECBAgQIECAQAkBAb0EkiYECBAgQIAAAQIECBAgQKBqAQG9amH9EyBAgAABAgQIECBAgACBEgICegkkTQgQIECAAAECBAgQIECAQNUCAnrVwvonQIAAAQIECBAgQIAAAQIlBAT0EkiaECBAgAABAgQIECBAgACBqgUE9KqF9U+AAAECBAgQIECAAAECBEoICOglkDQhQIAAAQIECBAgQIAAAQJVCwjoVQvrnwABAgQIECBAgAABAgQIlBAQ0EsgaUKAAAECBAgQIECAAAECBKoWENCrFtY/AQIECBAgQIAAAQIECBAoISCgl0DShAABAgQIECBAgAABAgQIVC0goFctrH8CBAgQIECAAAECBAgQIFBCQEAvgaQJAQIECBAgQIAAAQIECBCoWkBAr1pY/wQIECBAgAABAgQIECBAoISAgF4CSRMCBAgQIECAAAECBAgQIFC1gIBetbD+CRAgQIAAAQIECBAgQIBACQEBvQSSJgQIECBAgAABAgQIECBAoGoBAb1qYf0TIECAAAECBAgQIECAAIESAgJ6CSRNCBAgQIAAAQIECBAgQIBA1QICetXC+idAgAABAgQIECBAgAABAiUEBPQSSJoQIECAAAECBAgQIECAAIGqBQT0qoX1T4AAAQIECBAgQIAAAQIESggI6CWQNCFAgAABAgQIECBAgAABAlULCOhVC+ufAAECBAgQIECAAAECBAiUEBDQSyBpQoAAAQIECBAgQIAAAQIEqhYQ0KsW1j8BAgQIECBAgAABAgQIECghIKCXQNKEAAECBAgQIECAAAECBAhULSCgVy2sfwIECBAgQIAAAQIECBAgUEJAQC+BpAkBAgQIECBAgAABAgQIEKhaQECvWlj/BAgQIECAAAECBAgQIECghICAXgJJEwIECBAgQIAAAQIECBAgULWAgF61sP4JECBAgAABAgQIECBAgEAJAQG9BJImBAgQIECAAAECBAgQIECgagEBvWph/RMgQIAAAQIECBAgQIAAgRICAnoJJE0IECBAgAABAgQIECBAgEDVAgJ61cL6J0CAAAECBAgQIECAAAECJQQE9BJImhAgQIAAAQIECBAgQIAAgaoFBPSqhfVPgAABAgQIECBAgAABAgRKCAjoJZA0IUCAAAECBAgQIECAAAECVQsI6FUL658AAQIECBAgQIAAAQIECJQQENBLIGlCgAABAgQIECBAgAABAgSqFhDQqxbWPwECBAgQIECAAAECBAgQKCEgoJdA0oQAAQIECBAgQIAAAQIECFQtIKBXLax/AgQIECBAgAABAgQIECBQQkBAL4GkCQECBAgQIECAAAECBAgQqFpAQK9aWP8ECBAgQIAAAQIECBAgQKCEgIBeAkkTAgQIECBAgAABAgQIECBQtYCAXrWw/gkQIECAAAECBAgQIECAQAkBAb0EkiYECBAgQIAAAQIECBAgQKBqAQG9amH9EyBAgAABAgQIECBAgACBEgJJBPSXX345zJo1K5xxxhlh//33DxtttFHo6uoqfqZOnVpiGiHMmDGjfk7t3J5+x7b9sbz22mvhzDPPDNtvv31Yf/31w3rrrVesx33xmIUAAQIECBAgQIAAAQIECJQVGFC2YZXtNt100yq7r6Tvhx9+OEyePDksXrx4hf4fffTREH+mT58ebr755rDjjjuucNwGAQIECBAgQIAAAQIECBBoJpBEQO8+sFGjRoWxY8eGO+64o/vuPq3ffvvtYfjw4T2eM3LkyB6PlTnw/PPPhwMPPDC89NJLYcCAAeGf/umfwsSJE4tT45MAF154YXjhhReKfb/97W/DiBEjynSrDQECBAgQIECAAAECBAhkLJBEQI+Ptu+0007FT7ybvmDBgjBmzJhVLstWW20VRo8evcrn93biqaeeWoTz2O6aa64Jhx56aP2UPfbYo7hrfthhhxVtTj/99HDZZZfVj1shQIAAAQIECBAgQIAAAQLNBJL4G/Szzz67uNu8JjzqHu+aX3311YXlfvvtt0I4rwHHwB6PxeXKK6+sh/nacb8JECBAgAABAgQIECBAgECjQBIBvXFQKW/fcsst4cMPPyyGeNxxx/U41NrL7WLbeI6FAAECBAgQIECAAAECBAi0EhDQW+k0OXbffffV9+6111719caV7sfmzJnTeNg2AQIECBAgQIAAAQIECBBYQaAjA3q8ex0flx84cGDxybZdd901nHbaaSG+3O2TLk8++WTRRfys2rBhw3rsbrPNNis+uxYb1M7psbEDBAgQIECAAAECBAgQIJC9QBIvievvKtxzzz31LuP3yOPPgw8+GC644IJw0UUXhW9+85v1431dWbhwYXFKmTfBxzfSP/7446F2TtlrLVq0qGXTxk+7tWzsIAECBAgQIECAAAECBAisEQIdFdD/+q//OkyZMiXstttuIYbjuDz77LPhpptuCjfeeGNYtmxZOOmkk0JXV1c48cQTV6lAS5YsKc4bOnRor+cPGTKkaPP222/32rZ7g9rYu++zToAAAQIECBAgQIAAAQKdLdAxAf3ggw8Oxx57bBG+u5csfr7t8MMPD/H75DG8//nPfw7f+c53wqRJk1o+ot69j+7rMeTHJT4+39syaNCgosm7777bW1PHCRAgQIAAAQIECBAgQCBzgY75G/T4N+HxznhPy8SJE8OZZ55ZHF66dGm49NJLe2racv/aa69dHH///fdbtosH33vvvaLNOuus02vb7g3iI/Gtfh566KHuza0TIECAAAECBAgQIECAQAcIdExAL1OLE044oR7iu/+deplza23WXXfdYrXMY+vvvPNO0bbM4/C1/uPv+PftrX7iC+gsBAgQIECAAAECBAgQINBZAlkF9E022aR4q3ss4aq+0b32crjeXuQWr1F7OZy/KY8aFgIECBAgQIAAAQIECBBoJZBVQI8Qy5cvb+XR67Fx48YVbd58883w4osv9tg+vmn9rbfeKo6PHTu2x3YOECBAgAABAgQIECBAgACBKJBVQH/55ZeLT67FiQ8fPjz+6vMyfvz4+jmtHpPvfmz33Xevn2OFAAECBAgQIECAAAECBAg0E8gqoE+bNq1+B32vvfZq5tHrvvj297XW+j+2yy+/vMf2M2bMKI7FtvEcCwECBAgQIECAAAECBAgQaCXQEQF9wYIF4ZFHHmk1z+Iza//6r/9atIlvYj/uuOOatp8wYULxIrn4RvjYb+MybNiwcNRRRxW7b7/99uL76o1tbrjhhhCPxeXoo49epc+5NfZpmwABAgQIECBAgAABAgQ6WyCJ76DPmTMnzJ8/vy796quv1tfj/trd6NrOqVOn1laL3zFI77333mG33XYLBx54YPjCF74Q4gvh4t+bP/vss0WIvvHGG+t3z3/84x+HESNGrNBHXzbOPffcMHv27PDKK6+EI444IsybNy/Ez7jFJX5v/YILLijWN95443DOOecU6/5DgAABAgQIECBAgAABAgRaCXR9HGI/2VvTWvVe8lgM3FdccUXJ1iu/6O3uu+8uAnpvHQwePDj85Cc/CSeeeGKPTeMd9Nrfjz/33HNh9OjRTds++OCD4aCDDurxRXHxTvvMmTPDLrvs0vT8T7IzvkG+9mb48eGAsHbX4E/SnXMJECBAgAABAgQIECCwRgssW740zAm3FXOIX9OqfX1rTZtUEnfQPynaF7/4xXD11VeHuXPnFnez4xvU4134Dz74IHz2s58Nn/vc58KXv/zl8I1vfKO4s/5JrxfPj8H7scceC//+7/9eBPHa4/BjxowJkydPDqecckrYcMMN++NS+iBAgAABAgQIECBAgACBDASSuIOegXO/TtEd9H7l1BkBAgQIECBAgAABAmu4QKfcQe+Il8St4f+WDJ8AAQIECBAgQIAAAQIECOT1HXT1JkCAAAECBAgQIECAAAECqQq4g55qZYyLAAECBAgQIECAAAECBLISENCzKrfJEiBAgAABAgQIECBAgECqAgJ6qpUxLgIECBAgQIAAAQIECBDISkBAz6rcJkuAAAECBAgQIECAAAECqQoI6KlWxrgIECBAgAABAgQIECBAICsBAT2rcpssAQIECBAgQIAAAQIECKQqIKCnWhnjIkCAAAECBAgQIECAAIGsBAT0rMptsgQIECBAgAABAgQIECCQqoCAnmpljIsAAQIECBAgQIAAAQIEshIQ0LMqt8kSIECAAAECBAgQIECAQKoCAnqqlTEuAgQIECBAgAABAgQIEMhKQEDPqtwmS4AAAQIECBAgQIAAAQKpCgjoqVbGuAgQIECAAAECBAgQIEAgKwEBPatymywBAgQIECBAgAABAgQIpCogoKdaGeMiQIAAAQIECBAgQIAAgawEBPSsym2yBAgQIECAAAECBAgQIJCqgICeamWMiwABAgQIECBAgAABAgSyEhDQsyq3yRIgQIAAAQIECBAgQIBAqgICeqqVMS4CBAgQIECAAAECBAgQyEpAQM+q3CZLgAABAgQIECBAgAABAqkKCOipVsa4CBAgQIAAAQIECBAgQCArAQE9q3KbLAECBAgQIECAAAECBAikKiCgp1oZ4yJAgAABAgQIECBAgACBrAQE9KzKbbIECBAgQIAAAQIECBAgkKqAgJ5qZYyLAAECBAgQIECAAAECBLISENCzKrfJEiBAgAABAgQIECBAgECqAgJ6qpUxLgIECBAgQIAAAQIECBDISkBAz6rcJkuAAAECBAgQIECAAAECqQoI6KlWxrgIECBAgAABAgQIECBAICsBAT2rcpssAQIECBAgQIAAAQIECKQqIKCnWhnjIkCAAAECBAgQIECAAIGsBAT0rMptsgQIECBAgAABAgQIECCQqoCAnmpljIsAAQIECBAgQIAAAQIEshIQ0LMqt8kSIECAAAECBAgQIECAQKoCAnqqlTEuAgQIECBAgAABAgQIEMhKQEDPqtwmS4AAAQIECBAgQIAAAQKpCgjoqVbGuAgQIECAAAECBAgQIEAgKwEBPatymywBAgQIECBAgAABAgQIpCogoKdaGeMiQIAAAQIECBAgQIAAgawEBPSsym2yBAgQIECAAAECBAgQIJCqgICeamWMiwABAgQIECBAgAABAgSyEhDQsyq3yRIgQIAAAQIECBAgQIBAqgICeqqVMS4CBAgQIECAAAECBAgQyEpAQM+q3CZLgAABAgQIECBAgAABAqkKCOipVsa4CBAgQIAAAQIECBAgQCArAQE9q3KbLAECBAgQIECAAAECBAikKiCgp1oZ4yJAgAABAgQIECBAgACBrAQE9KzKbbIECBAgQIAAAQIECBAgkKqAgJ5qZYyLAAECBAgQIECAAAECBLISENCzKrfJEiBAgAABAgQIECBAgECqAgJ6qpUxLgIECBAgQIAAAQIECBDISkBAz6rcJkuAAAECBAgQIECAAAECqQoI6KlWxrgIECBAgAABAgQIECBAICsBAT2rcpssAQIECBAgQIAAAQIECKQqIKCnWhnjIkCAAAECBAgQIECAAIGsBAT0rMptsgQIECBAgAABAgQIECCQqoCAnmpljIsAAQIECBAgQIAAAQIEshIQ0LMqt8kSIECAAAECBAgQIECAQKoCAnqqlTEuAgQIECBAgAABAgQIEMhKQEDPqtwmS4AAAQIECBAgQIAAAQKpCgjoqVbGuAgQIECAAAECBAgQIEAgKwEBPatymywBAgQIECBAgAABAgQIpCogoKdaGeMiQIAAAQIECBAgQIAAgawEBPSsym2yBAgQIECAAAECBAgQIJCqgICeamWMiwABAgQIECBAgAABAgSyEhDQsyq3yRIgQIAAAQIECBAgQIBAqgICeqqVMS4CBAgQIECAAAECBAgQyEpAQM+q3CZLgAABAgQIECBAgAABAqkKCOipVsa4CBAgQIAAAQIECBAgQCArAQE9q3KbLAECBAgQIECAAAECBAikKiCgp1oZ4yJAgAABAgQIECBAgACBrAQE9KzKbbIECBAgQIAAAQIECBAgkKqAgJ5qZYyLAAECBAgQIECAAAECBLISENCzKrfJEiBAgAABAgQIECBAgECqAgJ6qpUxLgIECBAgQIAAAQIECBDISkBAz6rcJkuAAAECBAgQIECAAAECqQoI6KlWxrgIECBAgAABAgQIECBAICsBAT2rcpssAQIECBAgQIAAAQIECKQqIKCnWhnjIkCAAAECBAgQIECAAIGsBAT0rMptsgQIECBAgAABAgQIECCQqoCAnmpljIsAAQIECBAgQIAAAQIEshIQ0LMqt8kSIECAAAECBAgQIECAQKoCAnqqlTEuAgQIECBAgAABAgQIEMhKQEDPqtwmS4AAAQIECBAgQIAAAQKpCgjoqVbGuAgQIECAAAECBAgQIEAgKwEBPatymywBAgQIECBAgAABAgQIpCogoKdaGeMiQIAAAQIECBAgQIAAgawEkgjoL7/8cpg1a1Y444wzwv777x822mij0NXVVfxMnTq1VEGWLVsWbr755nDyySeHXXbZJWywwQbh05/+dPF7t912C2eddVZYvHhxqb56azR69Oj6+GrjbPY7trMQIECAAAECBAgQIECAAIEyAgPKNKq6zaabbvqJLvHoo4+G8ePHhyVLlqzUz+uvvx4eeOCB4ufCCy8M06dPD4cddthK7ewgQIAAAQIECBAgQIAAAQLtFEgioHcHGDVqVBg7dmy44447uu9uuf7WW2/Vw/nuu+8eJk6cGHbcccew4YYbhldeeSX88pe/LIJ5DPBHHnlkWHfddYs79S07LXFw8uTJ4Zxzzumx5cCBA3s85gABAgQIECBAgAABAgQIEOgukERAj4+277TTTsVPvJu+YMGCMGbMmO7jbLm+1lprFXfFzzzzzDBu3LiV2u67775FID/44IPDhx9+WDwG/8c//rF4TH2lxn3Y8ZnPfCZsu+22fThDUwIECBAgQIAAAQIECBAg0FwgiYB+9tlnNx9dyb1f+tKXQvxptcS73VOmTAk33XRTeOaZZ8Lvf//7sMMOO7Q6xTECBAgQIECAAAECBAgQILDaBJJ4Sdzqmu3ee+9dv1QM6RYCBAgQIECAAAECBAgQIJCKQFYB/b333qu7x8fiLQQIECBAgAABAgQIECBAIBWBrFLqPffcU3ffZptt6uurunLvvfeGz3/+82HIkCFh8ODBxd/NH3744WHmzJlh+fLlq9qt8wgQIECAAAECBAgQIEAgQ4Ek/gZ9dbj/93//d7j11luLS33uc59r+jK5vo7jueeeW+GU+HK7+HP99deH+Db56667LowYMWKFNmU2Fi1a1LJZf33PveVFHCRAgAABAgQIECBAgACB1SqQRUCPj7Z/4xvfKN7gHnV/+MMffiLk+Pm0SZMmhfh2+PgW9/XXXz+88cYbYe7cueGSSy4JCxcuDPfff3/YZ599in3xeF+W+Kk5CwECBAgQIECAAAECBAjkJZBFQP/Wt74V5s2bV1T22GOPLcL1JynzQw89FOIn1hqXCRMmhHitQw45pPiO+5NPPhniG+ovvPDCxqa2CRAgQIAAAQIECBAgQIDACgIdH9B/9KMfhenTpxeT/uIXvxh++tOfrgCwKhvNwnmtn3XXXbd4xH2LLbYIr732Wpg2bVo477zzQrzrXnaJd+BbLfER95133rlVE8cIECBAgAABAgQIECBAYA0T6OiA/vOf/zz8y7/8S1GSrbfeOvz6178uXuhWdY3iI+1f//rXi/8Z8M477xR373v7Tnv3MY0cObL7pnUCBAgQIECAAAECBAgQyECgY9/ifu2114Z/+Id/KEq4+eabhzvvvDNsvPHGq62k48aNq1/r+eefr69bIUCAAAECBAgQIECAAAECzQQ6MqDfcsst4ZhjjgkfffRR2GyzzcJdd90VVvddaZ9Za/bPzT4CBAgQIECAAAECBAgQ6Emg4wJ6DOOHHXZY+OCDD8KGG24YfvOb34T49+Cre3niiSfqlxw+fHh93QoBAgQIECBAgAABAgQIEGgm0FEB/b/+67/C5MmTQ/ys2nrrrRduv/32EL95vrqXN998s/gGerzu4MGDw4477ri6h+B6BAgQIECAAAECBAgQILCGCXRMQP/9738fvvrVr4b4UrYhQ4aE2267LcS3tvd1iZ9K6+rqKn4WLFiw0umzZ88O77777kr7azuWLFlS3MGPb3CPy/HHHx8GDRpUO+w3AQIECBAgQIAAAQIECBBoKpDEW9znzJkT5s+fXx/gq6++Wl+P+2fMmFHfjitTp05dYfuZZ54J++23X3jjjTeK/eecc06Ib1L/wx/+sEK77hubbLJJiD99XeIn04466qgwZcqUMH78+OLx+aFDhxbXnjt3brjkkktC7TNp8c3xZ511Vl8voT0BAgQIECBAgAABAgQIZCiQRECP3ym/4oormvLff//9If50XxoD+n333RdefvnlepPvfOc79fWeVs4888xVDs9/+tOfim+r176v3uwae+65Z7jmmmvCBhts0OywfQQIECBAgAABAgQIECBAYAWBJAL6CiNKfOPHP/5x8Vb4eLf86aefDvFuf7xzH//WPL4MbpdddglHHHFE2HfffYvH5BOfjuERIECAAAECBAgQIECAQCICXR9/Dmx5ImMxjJICixYtCqNGjSpajw8HhLW7Bpc8UzMCBAgQIECAAAECBAh0nsCy5UvDnHBbMbH4J8er+zPb/SXaMS+J6y8Q/RAgQIAAAQIECBAgQIAAgXYICOjtUHdNAgQIECBAgAABAgQIECDQICCgN4DYJECAAAECBAgQIECAAAEC7RAQ0Nuh7poECBAgQIAAAQIECBAgQKBBQEBvALFJgAABAgQIECBAgAABAgTaISCgt0PdNQkQIECAAAECBAgQIECAQIOAgN4AYpMAAQIECBAgQIAAAQIECLRDQEBvh7prEiBAgAABAgQIECBAgACBBgEBvQHEJgECBAgQIECAAAECBAgQaIeAgN4OddckQIAAAQIECBAgQIAAAQINAgJ6A4hNAgQIECBAgAABAgQIECDQDgEBvR3qrkmAAAECBAgQIECAAAECBBoEBPQGEJsECBAgQIAAAQIECBAgQKAdAgJ6O9RdkwABAgQIECBAgAABAgQINAgI6A0gNgkQIECAAAECBAgQIECAQDsEBPR2qLsmAQIECBAgQIAAAQIECBBoEBDQG0BsEiBAgAABAgQIECBAgACBdggI6O1Qd00CBAgQIECAAAECBAgQINAgIKA3gNgkQIAAAQIECBAgQIAAAQLtEBDQ26HumgQIECBAgAABAgQIECBAoEFAQG8AsUmAAAECBAgQIECAAAECBNohIKC3Q901CRAgQIAAAQIECBAgQIBAg4CA3gBikwABAgQIECBAgAABAgQItENAQG+HumsSIECAAAECBAgQIECAAIEGAQG9AcQmAQIECBAgQIAAAQIECBBoh4CA3g511yRAgAABAgQIECBAgAABAg0CAnoDiE0CBAgQIECAAAECBAgQINAOAQG9HequSYAAAQIECBAgQIAAAQIEGgQE9AYQmwQIECBAgAABAgQIECBAoB0CAno71F2TAAECBAgQIECAAAECBAg0CAjoDSA2CRAgQIAAAQIECBAgQIBAOwQE9HaouyYBAgQIECBAgAABAgQIEGgQENAbQGwSIECAAAECBAgQIECAAIF2CAjo7VB3TQIECBAgQIAAAQIECBAg0CAgoDeA2CRAgAABAgQIECBAgAABAu0QENDboe6aBAgQIECAAAECBAgQIECgQUBAbwCxSYAAAQIECBAgQIAAAQIE2iEgoLdD3TUJECBAgAABAgQIECBAgECDgIDeAGKTAAECBAgQIECAAAECBAi0Q0BAb4e6axIgQIAAAQIECBAgQIAAgQYBAb0BxCYBAgQIECBAgAABAgQIEGiHgIDeDnXXJECAAAECBAgQIECAAAECDQICegOITQIECBAgQIAAAQIECBAg0A4BAb0d6q5JgAABAgQIECBAgAABAgQaBAT0BhCbBAgQIECAAAECBAgQIECgHQICejvUXZMAAQIECBAgQIAAAQIECDQICOgNIDYJECBAgAABAgQIECBAgEA7BAT0dqi7JgECBAgQIECAAAECBAgQaBAQ0BtAbBIgQIAAAQIECBAgQIAAgXYICOjtUHdNAgQIECBAgAABAgQIECDQICCgN4DYJECAAAECBAgQIECAAAEC7RAQ0Nuh7poECBAgQIAAAQIECBAgQKBBQEBvALFJgAABAgQIECBAgAABAgTaISCgt0PdNQkQIECAAAECBAgQIECAQIOAgN4AYpMAAQIECBAgQIAAAQIECLRDQEBvh7prEiBAgAABAgQIECBAgACBBgEBvQHEJgECBAgQIECAAAECBAgQaIeAgN4OddckQIAAAQIECBAgQIAAAQINAgJ6A4hNAgQIECBAgAABAgQIECDQDgEBvR3qrkmAAAECBAgQIECAAAECBBoEBPQGEJsECBAgQIAAAQIECBAgQKAdAgJ6O9RdkwABAgQIECBAgAABAgQINAgI6A0gNgkQIECAAAECBAgQIECAQDsEBPR2qLsmAQIECBAgQIAAAQIECBBoEBDQG0BsEiBAgAABAgQIECBAgACBdggI6O1Qd00CBAgQIECAAAECBAgQINAgIKA3gNgkQIAAAQIECBAgQIAAAQLtEBDQ26HumgQIECBAgAABAgQIECBAoEFAQG8AsUmAAAECBAgQIECAAAECBNohIKC3Q901CRAgQIAAAQIECBAgQIBAg4CA3gBikwABAgQIECBAgAABAgQItENAQG+HumsSIECAAAECBAgQIECAAIEGAQG9AcQmAQIECBAgQIAAAQIECBBoh4CA3g511yRAgAABAgQIECBAgAABAg0CAnoDiE0CBAgQIECAAAECBAgQINAOAQG9HequSYAAAQIECBAgQIAAAQIEGgQE9AYQmwQIECBAgAABAgQIECBAoB0CAno71F2TAAECBAgQIECAAAECBAg0CAjoDSA2CRAgQIAAAQIECBAgQIBAOwQE9HaouyYBAgQIECBAgAABAgQIEGgQENAbQGwSIECAAAECBAgQIECAAIF2CAjo7VB3TQIECBAgQIAAAQIECBAg0CAgoDeA2CRAgAABAgQIECBAgAABAu0QENDboe6aBAgQIECAAAECBAgQIECgQUBAbwCxSYAAAQIECBAgQIAAAQIE2iEgoLdD3TUJECBAgAABAgQIECBAgECDgIDeAGKTAAECBAgQIECAAAECBAi0Q0BAb4e6axIgQIAAAQIECBAgQIAAgQaBJAL6yy+/HGbNmhXOOOOMsP/++4eNNtoodHV1FT9Tp05tGHLvm7Nnzw5TpkwJI0eODIMGDSp+x+24vz+X1157LZx55plh++23D+uvv35Yb731ivW4Lx6zECBAgAABAgQIECBAgACBsgIDyjasst2mm27aL90vX748nHTSSWHatGkr9Pf888+HX/3qV8XPiSeeGH72s58V4X+FRn3cePjhh8PkyZPD4sWLVzjz0UcfDfFn+vTp4eabbw477rjjCsdtECBAgAABAgQIECBAgACBZgJJ3EHvPrBRo0aFfffdt/uu0uunnXZaPZzvsMMO4dprrw0PPfRQ8TtuxyWG99NPP710n80axsB/4IEHFuF8wIAB4fvf/3649957i5+4Hve98MILYeLEiSG2tRAgQIAAAQIECBAgQIAAgd4EkriDHh9t32mnnYqfeDd9wYIFYcyY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pAkQIECAAAECBAgQIEAgNQEBPbWKGA8BAgQIECBAgAABAgQIZCkgoGdZdpMmQIAAAQIECBAgQIAAgdQEBPTUKmI8BAgQIECAAAECBAgQIJClgICeZdlNmgABAgQIECBAgAABAgRSExDQU6uI8RAgQIAAAQIECBAgQIBAlgICepZlN2kCBAgQIECAAAECBAgQSE1AQE+tIsZDgAABAgQIECBAgAABAlkKCOhZlt2kCRAgQIAAAQIECBAgQCA1AQE9tYoYDwECBAgQIECAAAECBAhkKSCgZ1l2kyZAgAABAgQIECBAgACB1AQE9NQqYjwECBAgQIAAAQIECBAgkKWAgJ5l2U2aAAECBAgQIECAAAECBFITENBTq4jxECBAgAABAgQIECBAgECWAgJ6lmU3aQIECBAgQIAAAQIECBBITUBAT60ixkOAAAECBAgQIECAAAECWQoI6FmW3aQJECBAgAABAgQIECBAIDUBAT21ihgPAQIECBAgQIAAAQIECGQpIKBnWXaTJkCAAAECBAgQIECAAIHUBAT01CpiPAQIECBAgAABAgQIECCQpYCAnmXZTZoAAQIECBAgQIAAAQIEUhMQ0FOriPEQIECAAAECBAgQIECAQJYCAnqWZTdpAgQIECBAgAABAgQIEEhNQEBPrSLGQ4AAAQIECBAgQIAAAQJZCgjoWZbdpAkQIECAAAECBAgQIEAgNQEBPbWKGA8BAgQIECBAgAABAgQIZCkgoGdZdpMmQIAAAQIECBAgQIAAgdQEBPTUKmI8BAgQIECAAAECBAgQIJClgICeZdlNmgABAgQIECBAgAABAgRSExDQU6uI8RAgQIAAAQIECBAgQIBAlgICepZlN2kCBAgQIECAAAECBAgQSE1AQE+tIsZDgAABAgQIECBAgAABAlkKCOhZlt2kCRAgQIAAAQIECBAgQCA1AQE9tYoYDwECBAgQIECAAAECBAhkKSCgZ1l2kyZAgAABAgQIECBAgACB1AQE9NQqYjwECBAgQIAAAQIECBAgkKVAxwT0CRMmhK6urj793H333X0u+llnnVX6GqvSf58H5AQCBAgQIECAAAECBAgQ6AiBjgnofa3GWmutFbbccsu+nqY9AQIECBAgQIAAAQIECBCoRGBAJb22odPLL788vPPOOy2v/MQTT4TDDz+8aPPlL385jBgxomX73g4+9thjLZuMGTOm5XEHCRAgQIAAAQIECBAgQIBATaBjAnqZMHzVVVfV5h2OOeaY+vqqrmy77bareqrzCBAgQIAAAQIECBAgQIDACgLZPOL+0Ucfhf/4j/8oJj906NAwZcqUFSBsECBAgAABAgQIECBAgACBdgpkE9Dvuuuu8PzzzxfWhxxySBg8eHA73V2bAAECBAgQIECAAAECBAisIJBNQL/yyivrE++Px9vrnVkhQIAAAQIECBAgQIAAAQL9IJBFQH/77bfDr371q4Lrr/7qr0L8JFt/LPvss0/YcMMNw8CBA8Mmm2xS9HveeeeF119/vT+61wcBAgQIECBAgAABAgQIZCTQMS+Ja1Wzm266qf6G96OPPrr4jnmr9mWP3XnnnfWmr7zySrjnnnuKn/PPPz/MmDEjTJ48uX68LyuLFi1q2Xzx4sUtjztIgAABAgQIECBAgAABAmueQBYBvb8fb99uu+3CQQcdFHbeeecwfPjw8Oc//zk8/fTTxUvo7rjjjvDGG2+Er33ta+E///M/w/7779/nfxWjRo3q8zlOIECAAAECBAgQIECAAIE1W6Br+cfLmj2F1qOPd6M333zzEN/ivuuuu4a5c+e2PqGXozF8f+Yzn+mx1c9//vNw0kknFcdjeJ8/f35YZ511emzf7EBXV1ez3U33jQ8HhLW7vPCuKY6dBAgQIECAAAECBAhkIbBs+dIwJ9xWzHXhwoVh5MiRa+S8O/4O+tVXX12E81idY4899hMXqVU4j51/85vfDPPmzQvTp08PL7zwQvjlL38ZjjrqqD5dN/6DarXER9zj3XsLAQIECBAgQIAAAQIECHSOQMcH9Kuuuqqo1qBBg8Lhhx++WioXQ3oM6HGJf5fe14C+pv7fntWC6yIECBAgQIAAAQIECBDoUIGOfot7vJP9xBNPFKWbOHFi+OxnP7tayjhu3Lj6dWrfXq/vsEKAAAECBAgQIECAAAECBJoIdHRA7/5yuP54vL2JX9NdHf5n/U3nbCcBAgQIECBAgAABAgQIfDKBjg3o8c3qv/jFLwqdjTfeeJXepr6qtLW79vH8+KI4CwECBAgQIECAAAECBAgQ6E2gYwP6r3/96xC/TR6XI488MgwYsPr+3D6+yb227LXXXrVVvwkQIECAAAECBAgQIECAQI8CHRvQuz/efswxx/QI0P3AjBkzQvzEWfw566yzuh8q1h977LHis2krHei2I4bzSy+9tNgzbNiwcPDBB3c7apUAAQIECBAgQIAAAQIECDQXWH23lZtfv5K9r7/+epg1a1bR97bbbhv+9m//tl+u89vf/jZ84xvfCHvvvXfxyPx2220XNtxww/DBBx+Ep556KsRPuv3mN78prvWpT30qxLA+ZMiQfrm2TggQIECAAAECBAgQIECgswU6MqBfd9114b333isqV/buedkyf/jhh+HOO+8sfno6J4b2eBd90qRJPTWxnwABAgQIECBAgAABAgQIrCDQkQG99u3zeBe7r98gX0GnYeOAAw4ogvfcuXPDI488El566aXw2muvhfjW9g022CBsv/324Stf+UqYOnVqWG+99RrOtkmAAAECBAgQIECAAAECBHoW6Po4XC7v+bAjKQosWrQojBo1qhja+HBAWLtrcIrDNCYCBAgQIECAAAECBAisFoFly5eGOeG24loLFy4MI0eOXC3X7e+LdOxL4vobSn8ECBAgQIAAAQIECBAgQKBKAQG9Sl19EyBAgAABAgQIECBAgACBkgICekkozQgQIECAAAECBAgQIECAQJUCAnqVuvomQIAAAQIECBAgQIAAAQIlBQT0klCaESBAgAABAgQIECBAgACBKgUE9Cp19U2AAAECBAgQIECAAAECBEoKCOgloTQjQIAAAQIECBAgQIAAAQJVCgjoVerqmwABAgQIECBAgAABAgQIlBQQ0EtCaUaAAAECBAgQIECAAAECBKoUENCr1NU3AQIECBAgQIAAAQIECBAoKSCgl4TSjAABAgQIECBAgAABAgQIVCkgoFepq28CBAgQIECAAAECBAgQIFBSQEAvCaUZAQIECBAgQIAAAQIECBCoUkBAr1JX3wQIECBAgAABAgQIECBAoKSAgF4SSjMCBAgQIECAAAECBAgQIFClgIBepa6+CRAgQIAAAQIECBAgQIBASQEBvSSUZgQIECBAgAABAgQIECBAoEoBAb1KXX0TIECAAAECBAgQIECAAIGSAgJ6SSjNCBAgQIAAAQIECBAgQIBAlQICepW6+iZAgAABAgQIECBAgAABAiUFBPSSUJoRIECAAAECBAgQIECAAIEqBQT0KnX1TYAAAQIECBAgQIAAAQIESgoI6CWhNCNAgAABAgQIECBAgAABAlUKCOhV6uqbAAECBAgQIECAAAECBAiUFBDQS0JpRoAAAQIECBAgQIAAAQIEqhQQ0KvU1TcBAgQIECBAgAABAgQIECgpIKCXhNKMAAECBAgQIECAAAECBAhUKSCgV6mrbwIECBAgQIAAAQIECBAgUFJAQC8JpRkBAgQIECBAgAABAgQIEKhSQECvUlffBAgQIECAAAECBAgQIECgpICAXhJKMwIECBAgQIAAAQIECBAgUKWAgF6lrr4JECBAgAABAgQIECBAgEBJAQG9JJRmBAgQIECAAAECBAgQIECgSgEBvUpdfRMgQIAAAQIECBAgQIAAgZICAnpJKM0IECBAgAABAgQIECBAgECVAgJ6lbr6JkCAAAECBAgQIECAAAECJQUE9JJQmhEgQIAAAQIECBAgQIAAgSoFBPQqdfVNgAABAgQIECBAgAABAgRKCgjoJaE0I0CAAAECBAgQIECAAAECVQoI6FXq6psAAQIECBAgQIAAAQIECJQUENBLQmlGgAABAgQIECBAgAABAgSqFBDQq9TVNwECBAgQIECAAAECBAgQKCkgoJeE0owAAQIECBAgQIAAAQIECFQpIKBXqatvAgQIECBAgAABAgQIECBQUkBALwmlGQECBAgQIECAAAECBAgQqFJAQK9SV98ECBAgQIAAAQIECBAgQKCkgIBeEkozAgQIECBAgAABAgQIECBQpYCAXqWuvgkQIECAAAECBAgQIECAQEkBAb0klGYECBAgQIAAAQIECBAgQKBKAQG9Sl19EyBAgAABAgQIECBAgACBkgICekkozQgQIECAAAECBAgQIECAQJUCAnqVuvomQIAAAQIECBAgQIAAAQIlBQT0klCaESBAgAABAgQIECBAgACBKgUE9Cp19U2AAAECBAgQIECAAAECBEoKCOgloTQjQIAAAQIECBAgQIAAAQJVCgjoVerqmwABAgQIECBAgAABAgQIlBQQ0EtCaUaAAAECBAgQIECAAAECBKoUENCr1NU3AQIECBAgQIAAAQIECBAoKSCgl4TSjAABAgQIECBAgAABAgQIVCkgoFepq28CBAgQIECAAAECBAgQIFBSQEAvCaUZAQIECBAgQIAAAQIECBCoUkBAr1JX3wQIECBAgAABAgQIECBAoKSAgF4SSjMCBAgQIECAAAECBAgQIFClgIBepa6+CRAgQIAAAQIECBAgQIBASQEBvSSUZgQIECBAgAABAgQIECBAoEoBAb1KXX0TIECAAAECBAgQIECAAIGSAgJ6SSjNCBAgQIAAAQIECBAgQIBAlQICepW6+iZAgAABAgQIECBAgAABAiUFBPSSUJoRIECAAAECBAgQIECAAIEqBQT0KnX1TYAAAQIECBAgQIAAAQIESgoI6CWhNCNAgAABAgQIECBAgAABAlUKCOhV6uqbAAECBAgQIECAAAECBAiUFBDQS0JpRoAAAQIECBAgQIAAAQIEqhQQ0KvU1TcBAgQIECBAgAABAgQIECgpIKCXhNKMAAECBAgQIECAAAECBAhUKSCgV6mrbwIECBAgQIAAAQIECBAgUFJAQC8JpRkBAgQIECBAgAABAgQIEKhSQECvUlffBAgQIECAAAECBAgQIECgpICAXhJKMwIECBAgQIAAAQIECBAgUKWAgF6lrr4JECBAgAABAgQIECBAgEBJAQG9JJRmBAgQIECAAAECBAgQIECgSgEBvUpdfRMgQIAAAQIECBAgQIAAgZICAnpJKM0IECBAgAABAgQIECBAgECVAgJ6lbr6JvD/t3cn0FaU9wHAvwfIoqhorEQChrjgUo3xGCmoBMEoReMerDnWJRVrjCa0R6ptUgw5jUaNZjmek2giiiZREy1atzYucY1Y1yKJqLhFUEPV466I4Ov9pr239y33vTvz5t7HHX7fOc87d75lZn6f3+P9Z/mGAAECBAgQIECAAAECBOoUEKDXCaUYAQIECBAgQIAAAQIECBBopIAAvZG62iZAgAABAgQIECBAgAABAnUKCNDrhFKMAAECBAgQIECAAAECBAg0UkCA3khdbRMgQIAAAQIECBAgQIAAgToFChWgt7W1hXp+9t577zp5ei521VVXhWnTpoUtttgiDB06NIwdOzYcffTR4f777++5olwCBAgQIECAAAECBAgQINBJYFCn777WIbBy5cowY8aMcOONN3Yo/cc//jHEnyuuuCLMnTs3zJkzp0O+LwQIECBAgAABAgQIECBAoJZAIQP0k046KXz1q1+tdcxhgw02qJlXT8bxxx9fCc6nTJkSZs2aFUaNGhUWL14czjrrrPDMM8+EM844I7myPnPmzHqaVIYAAQIECBAgQIAAAQIE1nGBQgbom2++edhpp50a0rV33XVXcoU8Nn7ggQeGa6+9NgwcODDZ1u677x4OOuigsNtuu4UXXnghnHbaaeGLX/xi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ECBAgAABAgQIECCQp4AAPU9NbREgQIAAAQIECBAgQIAAgYwCAvSMcKoRIECAAAECBAgQIECAAIE8BQToeWpqiwABAgQIECBAgAABAgQIZBQQoGeEU40AAQIECBAgQIAAAQIECOQpIEDPU1NbBAgQIECAAAECBAgQIEAgo4AAPSOcagQIECBAgAABAgQIECBAIE8BAXqemtoiQIAAAQIECBAgQIAAAQIZBQToGeFUI0CAAAECBAgQIECAAAECeQoI0PPU1BYBAgQIECBAgAABAgQIEMgoIEDPCKcaAQIECBAgQIAAAQIECBDIU0CAnqemtggQIECAAAECBAgQIECAQEYBAXpGONUIECBAgAABAgQIECBAgECeAgL0PDW1RYAAAQIECBAgQIAAAQIEMgoI0DPCqUaAAAECBAgQIECAAAECBPIUEKDnqaktAgQIECBAgAABAgQIECCQUUCAnhFONQIECBAgQIAAAQIECBAgkKeAAD1PTW0RIECAAAECBAgQIECAAIGMAgL0jHCqESBAgAABAgQIECBAgACBPAUE6HlqaosAAQIECBAgQIAAAQIECGQUEKBnhFONAAECBAgQIECAAAECBAjkKSBAz1NTWwQIECBAgAABAgQIECBAIKOAAD0jnGoECBAgQIAAAQIECBAgQCBPAQF6npraIkCAAAECBAgQIECAAAECGQUE6BnhVCNAgAABAgQIECBAgAABAnkKCNDz1NQWAQIECBAgQIAAAQIECBDIKCBAzwinGgECBAgQIECAAAECBAgQyFNAgJ6nprYIECBAgAABAgQIECBAgEBGAQF6RjjVCBAgQIAAAQIECBAgQIBAngIC9Dw1tUWAAAECBAgQIECAAAECBDIKCNAzwqlGgAABAgQIECBAgAABAgTyFBCg56mpLQIECBAgQIAAAQIECBAgkFFAgJ4RTjUCBAgQIECAAAECBAgQIJCngAA9T01tESBAgAABAgQIECBAgACBjAIC9IxwqhEgQIAAAQIECBAgQIAAgTwFBOh5amqLAAECBAgQIECAAAECBAhkFBCgZ4RTjQABAgQIECBAgAABAgQI5CkgQM9TU1sECBAgQIAAAQIECBAgQCCjgAA9I5xqBAgQIECAAAECBAgQIEAgTwEBep6a2iJAgAABAgQIECBAgAABAhkFBOgZ4VQjQIAAAQIECBAgQIAAAQJ5CgjQ89TUFgECBAgQIECAAAECBAgQyCggQM8IpxoBAgQIECBAgAABAgQIEMhTQICep6a2CBAgQIAAAQIECBAgQIBARgEBekY41QgQIECAAAECBAgQIECAQJ4CAvQ8NbVFgAABAgQIECBAgAABAgQyCgjQM8KpRoAAAQIECBAgQIAAAQIE8hQQoOepqS0CBAgQIECAAAECBAgQIJBRQICeEU41AgQIECBAgAABAgQIECCQp4AAPU9NbREgQIAAAQIECBAgQIAAgYwCAvSMcKoRIECAAAECBAgQIECAAIE8BQToeWpqiwABAgQIECBAgAABAgQIZBQQoGeEU40AAQIECBAgQIAAAQIECOQpIEDPU1NbBAgQIECAAAECBAgQIEAgo4AAPSOcagQIECBAgAABAgQIECBAIE8BAXqemtoiQIAAAQIECBAgQIAAAQIZBQToGeFUI0CAAAECBAgQIECAAAECeQoI0PPU1BYBAgQIECBAgAABAgQIEMgoIEDPCKcaAQIECBAgQIAAAQIECBDIU2BQno1pq/UFfvPSotwPYtqoXXJvU4MECBAgQIAAAQIECBAomoAr6EXrUcdDgAABAgQIECBAgAABAi0pIEBvyW6z0wQIECBAgAABAgQIECBQNAEBetF61PEQIECAAAECBAgQIECAQEsKCNBbstvsNAECBAgQIECAAAECBAgUTUCAXrQedTwECBAgQIAAAQIECBAg0JICAvSW7DY7TYAAAQIECBAgQIAAAQJFExCgF61HHQ8BAgQIECBAgAABAgQItKSAAL0lu81OEyBAgAABAgQIECBAgEDRBAToRetRx0OAAAECBAgQIECAAAECLSkgQG/JbrPTBAgQIECAAAECBAgQIFA0gUIF6I888kg466yzwvTp08OYMWPCkCFDwvDhw8O4cePCcccdF+65555c+m/u3Lmhra2trp8777wzl21qhAABAgQIECBAgAABAgSKLTCoKIc3efLkcPfdd3c5nFWrVoWlS5cmP5dddlk4+uijw8UXXxwGDx7cpawVBAgQIECAAAECBAgQIECgvwQKE6C/+OKLieGoUaPCjBkzwqRJk8KWW24Z1qxZExYuXBjOP//8EMv8/Oc/D6tXrw5XXHFFLuaLFy/usZ1PfepTPebLJECAAAECBAgQIECAAAECUaAwAfr222+f3N5++OGHh4EDB3bo3QkTJiRXzvfcc8/w1FNPhSuvvDKcdNJJSRDfoWCGLzvttFOGWqoQIECAAAECBAgQIECAAIGOAoV5Bv3GG28MRxxxRJfgvHy4m222WXIVvfz9mmuuKS/6JECAAAECBAgQIECAAAEC/S5QmAC9Hsm99967UuyZZ56pLFsgQIAAAQIECBAgQIAAAQL9LbBOBehxwrhyGjBgnTr08mH7JECAAAECBAgQIECAAIG1VGCdilLvuuuuSjfEZ9bzSPvuu2/42Mc+lswKv/nmm4d4lf7ss88Or7/+eh7Na4MAAQIECBAgQIAAAQIE1hGBwkwS11t/ffTRR0ngXC4Xn1fPI912222VZl555ZUQTwLEn3POOSfMnz8/HHzwwZX8eheWL1/eY9GXX365x3yZBAgQIECAAAECBAgQINB6AutMgP6DH/wgPPDAA0kPHXrooeGzn/1sn3pr5513DoccckgYP358iK92+/DDD8OTTz4ZfvnLX4ZbbrklvPHGGyHOKH/DDTeE6dOnp9rWmDFjUpVXmAABAgQIECBAgAABAgRaX6CtvZRa/zB6PoJ4Rfvzn/988v7zeBv6Y489FkaOHNlzpR5yY/A9YsSImiUuuuii8JWvfCXJj8H7008/HYYNG1azfOeMtra2zqtqft8r7B+Gtq1fMz9txm9eWpS2Sq/lp43apdcyChAgQIAAAQIECBAgQCCrwMr298K94eak+rJly8Lo0aOzNtWv9Qp/Bf0Pf/hDiFfMV69eHYYMGRJ+/etf9yk4j73VU3Ae80888cTw0EMPhYsvvji89NJLYcGCBeGoo46KWXWl+D9UTyne4h6v3EsECBAgQIAAAQIECBAgUByBQgfozz33XNhvv/2SCdsGDhwYrrzyyjB58uSm9F4M0mOAHlO8gp8mQG/Vsz1NgbURAgQIECBAgAABAgQIFFSgsLO4xyvX8bb2+BlvGb/kkkuSK+nN6scdd9yxsqkXX3yxsmyBAAECBAgQIECAAAECBAh0J1DIAP3VV18N8fVnzz77bHLMF1xwQTjmmGO6O/6GrVsHHu1vmJ2GCRAgQIAAAQIECBAgsC4KFC5Af/PNN8O0adPC448/nvRnfCf5ySef3PS+LW8/bjhOFCcRIECAAAECBAgQIECAAIGeBAoVoL/33nvhgAMOCI888khyzN/85jfD6aef3tPxNywvzuReTs167r28PZ8ECBAgQIAAAQIECBAg0HoChQnQV61alTxj/rvf/S7phVmzZoXvfOc7qXtk/vz5yTPr8bn1uXPndqm/ePHi5LVpXTKqVsTgfN68ecmaj3/840199r1qNywSIECAAAECBAgQIECAQAsJFGYW9y996UvhlltuSeinTp0ajj/++PD73/++ZlcMHjw4jBs3rmZ+rYyHH344zJw5M0yZMiVMnz497LzzzuFjH/tY8hq3J554IvziF78It956a1I9zhwfg/UNNtigVnPWEyBAgAABAgQIECBAgACBRKAwAXp813g5/fa3vw2f/vSny1+7/fzkJz8Znn/++W7zelu5Zs2acNtttyU/tcrGoD1eRT/ooINqFbGeAAECBAgQIECAAAECBAhUBAoToFeOqMEL+++/fxJ4L1y4MDz66KNhxYoV4bXXXgtx1vZNN9007LLLLuEv//Ivw3HHHRc22mijBu+N5gkQIECAAAECBAgQIECgKAJtpcCyvSgHs64cx/Lly8OYMWOSw90r7B+Gtq2f26H/5qVFubVVbmjaqF3Kiz4JECBAgAABAgQIECCQu8DK9vfCveHmpN1ly5aF0aNH576NZjRYmEnimoFlGwQIECBAgAABAgQIECBAoFECAvRGyWqXAAECBAgQIECAAAECBAikEBCgp8BSlAABAgQIECBAgAABAgQINEpAgN4oWe0SIECAAAECBAgQIECAAIEUAgL0FFiKEiBAgAABAgQIECBAgACBRgkI0Bslq10CBAgQIECAAAECBAgQIJBCQICeAktRAgQIECBAgAABAgQIECDQKAEBeqNktUuAAAECBAgQIECAAAECBFIICNBTYClKgAABAgQIECBAgAABAgQaJSBAb5SsdgkQIECAAAECBAgQIECAQAoBAXoKLEUJECBAgAABAgQIECBAgECjBAY1qmHtNkfglw8/HkaPWq85G8u4ld+8tChjzdrVpo3apXamHAIECBAgQIAAAQIECLSggCvoLdhpdpkAAQIECBAgQIAAAQIEiicgQC9enzoiAgQIECBAgAABAgQIEGhBAQF6C3aaXSZAgAABAgQIECBAgACB4gkI0IvXp46IAAECBAgQIECAAAECBFpQQIDegp1mlwkQIECAAAECBAgQIECgeAIC9OL1qSMiQIAAAQIECBAgQIAAgRYUEKC3YKfZZQIECBAgQIAAAQIECBAonoAAvXh96ogIECBAgAABAgQIECBAoAUFBOgt2Gl2mQABAgQIECBAgAABAgSKJyBAL16fOiICBAgQIECAAAECBAgQaEEBAXoLdppdJkCAAAECBAgQIECAAIHiCQjQi9enjogAAQIECBAgQIAAAQIEWlBAgN6CnWaXCRAgQIAAAQIECBAgQKB4AgL04vWpIyJAgAABAgQIECBAgACBFhQQoLdgp9llAgQIECBAgAABAgQIECiegAC9eH3qiAgQIECAAAECBAgQIECgBQUE6C3YaXaZAAECBAgQIECAAAECBIonIEAvXp86IgIECBAgQIAAAQIECBBoQQEBegt2ml0mQIAAAQIECBAgQIAAgeIJCNCL16eOiAABAgQIECBAgAABAgRaUECA3oKdZpcJECBAgAABAgQIECBAoHgCAvTi9akjIkCAAAECBAgQIECAAIEWFBCgt2Cn2WUCBAgQIECAAAECBAgQKJ6AAL14feqICBAgQIAAAQIECBAgQKAFBQToLdhpdpkAAQIECBAgQIAAAQIEiicgQC9enzoiAgQIECBAgAABAgQIEGhBAQF6C3aaXSZAgAABAgQIECBAgACB4gkI0IvXp46IAAECBAgQIECAAAECBFpQQIDegp1mlwkQIECAAAECBAgQIECgeAIC9OL1qSMiQIAAAQIECBAgQIAAgRYUEKC3YKfZZQIECBAgQIAAAQIECBAonoAAvXh96ogIECBAgAABAgQIECBAoAUFBOgt2Gl2mQABAgQIECBAgAABAgSKJyBAL16fOiICBAgQIECAAAECBAgQaEEBAXoLdppdJkCAAAECBAgQIECAAIHiCQjQi9enjogAAQIECBAgQIAAAQIEWlBAgN6CnWaXCRAgQIAAAQIECBAgQKB4AgL04vWpIyJAgAABAgQIECBAgACBFhQQoLdgp9llAgQIECBAgAABAgQIECiegAC9eH3qiAgQIECAAAECBAgQIECgBQUE6C3YaXaZAAECBAgQIECAAAECBIonIEAvXp86IgIECBAgQIAAAQIECBBoQQEBegt2ml0mQIAAAQIECBAgQIAAgeIJDCreITmivghMG7VLX6qrS4AAAQIECBAgQIAAAQIZBVxBzwinGgECBAgQIECAAAECBAgQyFNAgJ6nprYIECBAgAABAgQIECBAgEBGAQF6RjjVCBAgQIAAAQIECBAgQIBAngIC9Dw1tUWAAAECBAgQIECAAAECBDIKCNAzwqlGgAABAgQIECBAgAABAgTyFBCg56mpLQIECBAgQIAAAQIECBAgkFFAgJ4RTjUCBAgQIECAAAECBAgQIJCngAA9T01tESBAgAABAgQIECBAgACBjAIC9IxwqhEgQIAAAQIECBAgQIAAgTwFBOh5amqLAAECBAgQIECAAAECBAhkFBCgZ4RTjQABAgQIECBAgAABAgQI5CkgQM9TU1sECBAgQIAAAQIECBAgQCCjgAA9I5xqBAgQIECAAAECBAgQIEAgTwEBep6a2iJAgAABAgQIECBAgAABAhkFBOgZ4VQjQIAAAQIECBAgQIAAAQJ5CgjQ89TUFgECBAgQIECAAAECBAgQyCggQM8IpxoBAgQIECBAgAABAgQIEMhTQICep6a2CBAgQIAAAQIECBAgQIBARgEBekY41QgQIECAAAECBAgQIECAQJ4CAvQ8NbVFgAABAgQIECBAgAABAgQyCgjQM8KpRoAAAQIECBAgQIAAAQIE8hQQoOepqS0CBAgQIECAAAECBAgQIJBRQICeEU41AgQIECBAgAABAgQIECCQp4AAPU9NbREgQIAAAQIECBAgQIAAgYwCAvSMcKoRIECAAAECBAgQIECAAIE8BQToeWpqiwABAgQIECBAgAABAgQIZBQQoGeEU40AAQIECBAgQIAAAQIECOQpIEDPU1NbBAgQIECAAAECBAgQIEAgo4AAPSOcagQIECBAgAABAgQIECBAIE8BAXqemtoiQIAAAQIECBAgQIAAAQIZBQToGeFUI0CAAAECBAgQIECAAAECeQoI0PPU1BYBAgQIECBAgAABAgQIEMgoIEDPCKcaAQIECBAgQIAAAQIECBDIU6CwAfoLL7wQZs+eHXbYYYewwQYbhE033TSMHz8+nHfeeeG9997LzfCqq64K06ZNC1tssUUYOnRoGDt2bDj66KPD/fffn9s2NESAAAECBAgQIECAAAECxRdoay+loh3mTTfdFI466qjw5ptvdnto2223Xbj55pvDVltt1W1+PStXrlwZZsyYEW688cZuiw8YMCDMnTs3zJkzp9v8vqxcvnx5GDNmTNLEHx8eG0aPWq8vzXWoO23ULh2++0KAAAECBAgQIECAAIG1XWBl+3vh3nBzspvLli0Lo0ePXtt3udv9K9wV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xDB9+vQCHvnaf0i77bZb+MUvfpGMs3iHw8svv5z0TXy7xSabbBL+/M//POyzzz5h5syZyZX1tf+IiruHxtHa27fGUeP75vbbbw+33XZb8lzskiVLwooVK5K76OKrc0eOHJnc/fOFL3whHHHEET3+3WYcNa6v+tpHxlHj+ibvlltxHLXFMwt5Q2iPAAECBAgQIECAAAECBAgQSCdgFvd0XkoTIECAAAECBAgQIECAAIGGCAjQG8KqUQIECBAgQIAAAQIECBAgkE5AgJ7OS2kCBAgQIECAAAECBAgQINAQAQF6Q1g1SoAAAQIECBAgQIAAAQIE0gkI0NN5KU2AAAECBAgQIECAAAECBBoiIEBvCKtGCRAgQIAAAQIECBAgQIBAOgEBejovpQkQIECAAAECBAgQIECAQEMEBOgNYdUoAQIECBAgQIAAAQIECBBIJyBAT+elNAECBAgQIECAAAECBAgQaIiAAL0hrBolQIAAAQIECBAgQIAAAQLpBATo6byUJkCAAAECBAgQIECAAAECDREQoDeEVaMECBAgQIAAAQIECBAgQCCdgAA9nZfSBAgQIECAAAECBAgQIECgIQIC9IawapQAAQIECBAgQIAAAQIECKQTEKCn81KaAAECBAgQIECAAAECBAg0RECA3hBWjRIgQIAAAQIECBAgQIAAgXQCAvR0XkoTIECAAAECBAgQIECAAIGGCAjQG8KqUQIECBAgQIAAAQIECBAgkE5AgJ7OS2kCBAgQIECAAAECBAgQINAQAQF6Q1g1SoAAAQIECBAgQIAAAQIE0gkI0NN5KU2AAAECBAgQIECAAAECBBoiIEBvCKtGCRAgQIAAAQIECBAgQIBAOgEBejovpQkQIECAAAECBAgQIECAQEMEBOgNYdUoAQIECBAgQIAAAQIECBBIJyBAT+elNAECBAgQIECAAAECBAgQaIiAAL0hrBolQIAAAQIECBAgQIAAAQLpBATo6byUJkCAAAECBAgQIECAAAECDREQoDeEVaMECBAgQIAAAQIECBAgQCCdgAA9nZfSBAgQIECAAAECBAgQIECgIQIC9IawapQAAQIECBAgQIAAAQIECKQTEKCn81KaAAECBAgQIECAAAECBAg0RECA3hBWjRIgQIAAAQIECBAgQIAAgXQCAvR0XkoTIECAAAECBAgQIECAAIGGCAjQG8KqUQIECBAgQIAAAQIECBAgkE5AgJ7OS2kCBAgQIECAAAECBAgQINAQgf8BpZKQfY5ddBUAAAAASUVORK5CYII=\" width=\"500\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#tentative avec animation (ça foire)\n",
    "grille=planeur(init_grille(20,40))\n",
    "\n",
    "fig ,ax = plt.subplots() # initialise la figure\n",
    "affichage = plt.pcolormesh(grille,shading='flat')\n",
    "\n",
    "    \n",
    "def animate(i,grille):\n",
    "    grille.set_array(suivant(grille))\n",
    "    return(grille)\n",
    " \n",
    "ani = animation.FuncAnimation(fig,animate,frames=100,fargs=(grille),blit=False,interval=10,repeat=True)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d835b89d",
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "#fonction pour apprendre les animations\n",
    "import numpy as np\n",
    "from matplotlib import pyplot as plt, animation\n",
    "plt.rcParams[\"figure.figsize\"] = [5, 5]\n",
    "plt.rcParams[\"figure.autolayout\"] = True\n",
    "\n",
    "fig ,ax= plt.subplots()\n",
    "\n",
    "\n",
    "x = np.linspace(-3, 3, 91)\n",
    "t = np.linspace(0, 25, 30)\n",
    "y = np.linspace(-3, 3, 91)\n",
    "X3, Y3, T3 = np.meshgrid(x, y, t)\n",
    "sinT3 = np.sin(2 * np.pi * T3 / T3.max(axis=2)[..., np.newaxis])\n",
    "G = (X3 ** 2 + Y3 ** 2) * sinT3\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "cax = ax.pcolormesh(G[:-1, :-1, 0], vmax=1)\n",
    "\n",
    "def animate(i):\n",
    "   cax.set_array(G[:-1, :-1, i].flatten())\n",
    "\n",
    "anim = animation.FuncAnimation(fig, animate, interval=100, frames=len(t) - 1)\n",
    "anim.save('517.gif')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fec39904",
   "metadata": {},
   "source": [
    "                        #############          PARTIE LABYRINTHE          ##############"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "400a5d8a",
   "metadata": {},
   "source": [
    "# Préliminaire :"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "112bddfe",
   "metadata": {},
   "source": [
    "On prend n et m > 2 pour éviter les répétitions dans les listes d'adjacence un point couple (i,j) est représenté par l'entier m*i+j"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b96acf4c",
   "metadata": {},
   "source": [
    "on initialise un labyrinthe de type grille où on peut se déplacer au plus dans quatre directions,\n",
    "cela sur une surface fermée de type tore, klein ou charlie\n",
    "le poids donné sur les arêtes sert uniquement à déterminer de façon aléatoire un labyrinthe qui sera un arbre couvrant de poids minimal sur le graphe connexe pondéré ainsi formé."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "048da8c8",
   "metadata": {},
   "outputs": [],
   "source": [
    "#plutôt rapide\n",
    "def init_lab_tore1(n,m):    \n",
    "    G=[[((i-1)%n)*m+j,((i+1)%n)*m+j,m*i+((j-1)%m),m*i+((j+1)%m)] for i in range(n) for j in range(m)]\n",
    "    W=[[0]*4 for i in range(n*m)]\n",
    "    for i in range(n):\n",
    "        for j in range(m):\n",
    "            for h in range(4):\n",
    "                if W[m*i+j][h]==0:\n",
    "                    a=np.random.random()\n",
    "                    W[m*i+j][h]=a\n",
    "                    x,y=((G[m*i+j][h])//m,(G[m*i+j][h])%m)\n",
    "                    if x==i:\n",
    "                        if y==((j-1)%m):\n",
    "                            W[G[m*i+j][h]][2]=a\n",
    "                        else:\n",
    "                            W[G[m*i+j][h]][3]=a\n",
    "                    else:\n",
    "                        if x==((i-1)%n):\n",
    "                            W[G[m*i+j][h]][0]=a\n",
    "                        else:\n",
    "                            W[G[m*i+j][h]][1]=a\n",
    "    return(G,W)\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "301b53cc",
   "metadata": {},
   "outputs": [],
   "source": [
    "#attention lent pour des tailles moyennes\n",
    "def init_lab_tore2(n,m):    \n",
    "    G=[[((i-1)%n)*m+j,((i+1)%n)*m+j,m*i+((j-1)%m),m*i+((j+1)%m)] for i in range(n) for j in range(m)]\n",
    "    W=[[0]*(n*m) for i in range(n*m)]\n",
    "    for k in range(n*m):\n",
    "        for l in G[k]:\n",
    "            if W[k][l]==0:\n",
    "                a=np.random.random()\n",
    "                W[k][l]=a\n",
    "                W[l][k]=a\n",
    "    return(G,W)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3167a61d",
   "metadata": {},
   "source": [
    "On privilégiera donc le fonction de init_lab_tore1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "39989e58",
   "metadata": {},
   "outputs": [],
   "source": [
    "def filtre(x,l):\n",
    "    for i in range(len(l)):\n",
    "        if x==l[i]:\n",
    "            return(i)\n",
    "    return(None)\n",
    "\n",
    "def weight(u,v,G,W):\n",
    "    return(W[u][filtre(v,G[u])])\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ffe2b065",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "66c8db94",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "dfd77bcd",
   "metadata": {},
   "source": [
    "# Algorithme à proprement parler"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5ca71882",
   "metadata": {},
   "source": [
    "On met en place la structure union-find pour gérer les partitions d'ensembles, avec améliorations, d'où un coût en O((k+n)α(n)) où α(n) est l'inverse de n -> A(n,n) où A est la fonction d'Ackermann (Je ne prouve pas ce résultat). On le fait sous la forme d'un module/classe (je sais plus si on dit module en python mais en ocaml c'est le cas) d'où le côté orienté objet."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "ebcd07a0",
   "metadata": {},
   "outputs": [],
   "source": [
    "class UnionFind:\n",
    "    def __init__(self,n):\n",
    "        self.up=list(range(n))\n",
    "        self.rank=[0]*n\n",
    "\n",
    "    def find(self,x):\n",
    "        if self.up[x]==x:\n",
    "            return(x)\n",
    "        else:\n",
    "            self.up[x]=self.find(self.up[x])\n",
    "            return(self.up[x])\n",
    "\n",
    "    def union(self,x,y):\n",
    "        repr_x=self.find(x)\n",
    "        repr_y=self.find(y)\n",
    "        if repr_x==repr_y:\n",
    "            return(False)\n",
    "        if self.rank[repr_x]==self.rank[repr_y]:\n",
    "            self.rank[repr_x]+=1\n",
    "            self.up[repr_y]=repr_x\n",
    "        elif self.rank[repr_x]>self.rank[repr_y]:\n",
    "            self.up[repr_y]=repr_x\n",
    "        else:\n",
    "            self.up[repr_x]=repr_y\n",
    "        return(True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ff1c2ffd",
   "metadata": {},
   "source": [
    "Algorithme de Kruskal, on cherche l'arbre couvrant de poids minimum dans un GNO connexe pondéré par des flottants. Le coût temporel est celui du tri des arêtes soit en O(|E|log|E|)\n",
    "Le graphe est représenté par le tableau de la liste des voisins (en python la liste de la liste des voisins)\n",
    "les poids (weight) est une matrice de flottants de taille |G|^2 ~ |E|"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "9b93951a",
   "metadata": {},
   "outputs": [],
   "source": [
    "def kruskal(graph,W):\n",
    "    uf=UnionFind(len(graph))\n",
    "    edges=[]\n",
    "    for u in range(len(graph)):\n",
    "        for v in graph[u]:\n",
    "            edges.append((weight(u,v,graph,W),u,v))\n",
    "    edges.sort()\n",
    "    mst=[]\n",
    "    for w,u,v in edges:\n",
    "        if uf.union(u,v):\n",
    "            mst.append((u,v))\n",
    "    return(mst)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aafa10b7",
   "metadata": {},
   "source": [
    "Une fonction pour changer le format de données en sortie de kruskal en vue de l'afficher (ça peut être amélioré ou intégré à affichage, c'est comme on veut)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "2e7c63df",
   "metadata": {},
   "outputs": [],
   "source": [
    "def points_relies(n,m):\n",
    "    (G,W)=init_lab_tore1(n,m)\n",
    "    arb=kruskal(G,W)\n",
    "    def aux(x):\n",
    "        (k,l)=x\n",
    "        return([(k//m,k%m),(l//m,l%n)])\n",
    "    return(list(map(aux,arb)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "6501035b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# e est une variable qui permet de contrôler l'empilement au niveau du graphique\n",
    "#ça fait une grille noire puis on met des segments blancs où on veut supprimer un mur (y compris sur les bordures)\n",
    "\n",
    "#cet affichage n'est valable que dans le cas du tore, dans les autres cas,\n",
    "#il y a juste les conditions de bordure à affiner(les deux derniers elif)\n",
    "def affichage(n,m,l,e):\n",
    "    vx=[]\n",
    "    hx=[]\n",
    "    vmin=[]\n",
    "    vmax=[]\n",
    "    hmin=[]\n",
    "    hmax=[]\n",
    "    for a in l:\n",
    "        [(a1,a2),(b1,b2)]=a\n",
    "        if a1==b1 and abs(a2-b2)<=1:\n",
    "            vx.append(max(a2,b2))\n",
    "            vmin.append(a1+e)\n",
    "            vmax.append(a1+1-e)\n",
    "        elif a2==b2 and abs(a1-b1)<=1:\n",
    "            hx.append(max(a1,b1))\n",
    "            hmin.append(a2+e)\n",
    "            hmax.append(a2+1-e)\n",
    "        elif a1==b1:\n",
    "            vx.append(max(a2,b2)+1)\n",
    "            vx.append(min(a2,b2))\n",
    "            vmin.append(a1+e)\n",
    "            vmin.append(a1+e)\n",
    "            vmax.append(a1+1-e)\n",
    "            vmax.append(a1+1-e)\n",
    "        elif a2==b2:\n",
    "            hx.append(max(a1,b1)+1)\n",
    "            hx.append(min(a1,b1))\n",
    "            hmin.append(a2+e)\n",
    "            hmin.append(a2+e)\n",
    "            hmax.append(a2+1-e)\n",
    "            hmax.append(a2+1-e)\n",
    "    plt.vlines([j for j in range(m+1)],[0 for j in range(m+1)],[n for j in range(m+1)],color='black', linewidth=1)\n",
    "    plt.hlines([i for i in range(n+1)],[0 for i in range(n+1)],[m for i in range(n+1)],color='black', linewidth=1)  \n",
    "    plt.vlines(vx,vmin,vmax,color='white', linewidth=2)\n",
    "    plt.hlines(hx,hmin,hmax,color='white', linewidth=2)\n",
    "    \n",
    "            "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "b0f8378b",
   "metadata": {},
   "outputs": [],
   "source": [
    "affichage(30,30,points_relies(30,30),0.05)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7d66d328",
   "metadata": {},
   "source": [
    "On crée donc la fonction qui génère un labyrinthe aléatoirement, et qui renvoie le labyrinthe en question sous forme du graphe en format tableau de voisins (sans répétitions) de l'arbre obtenu, et de la liste des murs \"à détruire\"."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "2c9dfa69",
   "metadata": {},
   "outputs": [],
   "source": [
    "#version modifiée de filtre !\n",
    "def est_present(x,l):\n",
    "    if l==[]:\n",
    "        return(False)\n",
    "    else:\n",
    "        for i in range(len(l)):\n",
    "            if x==l[i]:\n",
    "                return(True)\n",
    "        return(False)\n",
    "\n",
    "\n",
    "def labyrinthe(n,m):\n",
    "    l=points_relies(n,m)\n",
    "    deb=np.random.randint(0,n*m-1)    #on tire deux points au pif et on s'assure qu'ils sont différents : ce sont les points début et final\n",
    "    fin=np.random.randint(0,n*m-1)\n",
    "    while deb==fin:\n",
    "        fin=np.random.randint(0,n*m-1)\n",
    "        \n",
    "    g=[[] for k in range(n*m)]\n",
    "    for x in l:\n",
    "        [(a1,a2),(b1,b2)]=x\n",
    "        if not est_present(m*b1+b2,g[m*a1+a2]):\n",
    "            g[m*a1+a2].append(m*b1+b2)\n",
    "            g[m*b1+b2].append(m*a1+a2)\n",
    "    return(g,l,deb,fin)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2f96680b",
   "metadata": {},
   "source": [
    "Résolution du labyrinthe en partant de début et en arrivant à fin : on va faire un parcours en largeur : à partir de l'algo BFS bien connu (ici la fonction est générale parce-que c'est toujours utile de l'avoir), et afficher le chemin de sommets."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "7a2c0e43",
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import deque\n",
    "#module de gestion de liste chaînée avec ajout d'élément à gauche(c'est plus simple comme ça)\n",
    "\n",
    "def bfs(graph,deb=0):\n",
    "    to_visit=deque()\n",
    "    dist=[float('inf')]*len(graph)\n",
    "    prec=[None]*len(graph)\n",
    "    dist[deb]=0\n",
    "    to_visit.appendleft(deb)\n",
    "    while to_visit:           #file vide est évaluée comme un faux\n",
    "        node=to_visit.pop()\n",
    "        for neighbor in graph[node]:\n",
    "            if dist[neighbor]==float('inf'):\n",
    "                dist[neighbor]=dist[node]+1\n",
    "                prec[neighbor]=node\n",
    "                to_visit.appendleft(neighbor)\n",
    "    return(dist,prec)\n",
    "\n",
    "def parcours(g,deb,fin):\n",
    "    dist,prec=bfs(g,deb)\n",
    "    chemin=deque([])\n",
    "    x=fin\n",
    "    while prec[x]!= None:\n",
    "        chemin.appendleft(x)\n",
    "        x=prec[x]\n",
    "    return(chemin)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "093e05c8",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "68f0912a",
   "metadata": {},
   "source": [
    "Je n'arrive pas à enlever cette foutue paire de parenthèses dans la liste, et que ça affiche le chemin, si qqn à une idée...\n",
    "il y a un bug si n<>m c'est à corriger!!!!!\n",
    "ci dessous une ligne exemple utile pour la suite"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "5f892c52",
   "metadata": {},
   "outputs": [],
   "source": [
    "g,l,deb,fin=labyrinthe(40,40)\n",
    "chemin=list(parcours(g,deb,fin))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "1f34667c",
   "metadata": {},
   "outputs": [],
   "source": [
    "def chemin_to_plot(n,m,chemin):\n",
    "    def aux(x):\n",
    "        return([(x//m+0.5,x%m+0.5)])\n",
    "    return(list(map(aux,chemin)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "e218b4a1",
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_chemin(n,m,chemin):\n",
    "    q=chemin_to_plot(m,n,chemin)\n",
    "    [(ydeb,xdeb)]=q[0]\n",
    "    [(yfin,xfin)]=q[-1]\n",
    "    plt.plot((np.transpose(q)[1]).tolist()[0],(np.transpose(q)[0]).tolist()[0],color='red')\n",
    "    plt.plot(xdeb,ydeb, marker=\"o\", color=\"green\")\n",
    "    plt.plot(xfin,yfin, marker=\"o\", color=\"green\")\n",
    "\n",
    "affichage(40,40,l,0.05)\n",
    "plot_chemin(40,40,chemin)\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0a326149",
   "metadata": {},
   "source": [
    "cette fonction affiche un voyage(un chemin au hasard sur un labyrinthe au hasard qui est le plus court entre 2 points) (cette fonction bugge si n<>m c'est à corriger)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "2c186ab1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "/* Put everything inside the global mpl namespace */\n",
       "/* global mpl */\n",
       "window.mpl = {};\n",
       "\n",
       "mpl.get_websocket_type = function () {\n",
       "    if (typeof WebSocket !== 'undefined') {\n",
       "        return WebSocket;\n",
       "    } else if (typeof MozWebSocket !== 'undefined') {\n",
       "        return MozWebSocket;\n",
       "    } else {\n",
       "        alert(\n",
       "            'Your browser does not have WebSocket support. ' +\n",
       "                'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
       "                'Firefox 4 and 5 are also supported but you ' +\n",
       "                'have to enable WebSockets in about:config.'\n",
       "        );\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
       "    this.id = figure_id;\n",
       "\n",
       "    this.ws = websocket;\n",
       "\n",
       "    this.supports_binary = this.ws.binaryType !== undefined;\n",
       "\n",
       "    if (!this.supports_binary) {\n",
       "        var warnings = document.getElementById('mpl-warnings');\n",
       "        if (warnings) {\n",
       "            warnings.style.display = 'block';\n",
       "            warnings.textContent =\n",
       "                'This browser does not support binary websocket messages. ' +\n",
       "                'Performance may be slow.';\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.imageObj = new Image();\n",
       "\n",
       "    this.context = undefined;\n",
       "    this.message = undefined;\n",
       "    this.canvas = undefined;\n",
       "    this.rubberband_canvas = undefined;\n",
       "    this.rubberband_context = undefined;\n",
       "    this.format_dropdown = undefined;\n",
       "\n",
       "    this.image_mode = 'full';\n",
       "\n",
       "    this.root = document.createElement('div');\n",
       "    this.root.setAttribute('style', 'display: inline-block');\n",
       "    this._root_extra_style(this.root);\n",
       "\n",
       "    parent_element.appendChild(this.root);\n",
       "\n",
       "    this._init_header(this);\n",
       "    this._init_canvas(this);\n",
       "    this._init_toolbar(this);\n",
       "\n",
       "    var fig = this;\n",
       "\n",
       "    this.waiting = false;\n",
       "\n",
       "    this.ws.onopen = function () {\n",
       "        fig.send_message('supports_binary', { value: fig.supports_binary });\n",
       "        fig.send_message('send_image_mode', {});\n",
       "        if (fig.ratio !== 1) {\n",
       "            fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
       "        }\n",
       "        fig.send_message('refresh', {});\n",
       "    };\n",
       "\n",
       "    this.imageObj.onload = function () {\n",
       "        if (fig.image_mode === 'full') {\n",
       "            // Full images could contain transparency (where diff images\n",
       "            // almost always do), so we need to clear the canvas so that\n",
       "            // there is no ghosting.\n",
       "            fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
       "        }\n",
       "        fig.context.drawImage(fig.imageObj, 0, 0);\n",
       "    };\n",
       "\n",
       "    this.imageObj.onunload = function () {\n",
       "        fig.ws.close();\n",
       "    };\n",
       "\n",
       "    this.ws.onmessage = this._make_on_message_function(this);\n",
       "\n",
       "    this.ondownload = ondownload;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_header = function () {\n",
       "    var titlebar = document.createElement('div');\n",
       "    titlebar.classList =\n",
       "        'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
       "    var titletext = document.createElement('div');\n",
       "    titletext.classList = 'ui-dialog-title';\n",
       "    titletext.setAttribute(\n",
       "        'style',\n",
       "        'width: 100%; text-align: center; padding: 3px;'\n",
       "    );\n",
       "    titlebar.appendChild(titletext);\n",
       "    this.root.appendChild(titlebar);\n",
       "    this.header = titletext;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
       "\n",
       "mpl.figure.prototype._init_canvas = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var canvas_div = (this.canvas_div = document.createElement('div'));\n",
       "    canvas_div.setAttribute(\n",
       "        'style',\n",
       "        'border: 1px solid #ddd;' +\n",
       "            'box-sizing: content-box;' +\n",
       "            'clear: both;' +\n",
       "            'min-height: 1px;' +\n",
       "            'min-width: 1px;' +\n",
       "            'outline: 0;' +\n",
       "            'overflow: hidden;' +\n",
       "            'position: relative;' +\n",
       "            'resize: both;'\n",
       "    );\n",
       "\n",
       "    function on_keyboard_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.key_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'keydown',\n",
       "        on_keyboard_event_closure('key_press')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'keyup',\n",
       "        on_keyboard_event_closure('key_release')\n",
       "    );\n",
       "\n",
       "    this._canvas_extra_style(canvas_div);\n",
       "    this.root.appendChild(canvas_div);\n",
       "\n",
       "    var canvas = (this.canvas = document.createElement('canvas'));\n",
       "    canvas.classList.add('mpl-canvas');\n",
       "    canvas.setAttribute('style', 'box-sizing: content-box;');\n",
       "\n",
       "    this.context = canvas.getContext('2d');\n",
       "\n",
       "    var backingStore =\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        this.context.webkitBackingStorePixelRatio ||\n",
       "        this.context.mozBackingStorePixelRatio ||\n",
       "        this.context.msBackingStorePixelRatio ||\n",
       "        this.context.oBackingStorePixelRatio ||\n",
       "        this.context.backingStorePixelRatio ||\n",
       "        1;\n",
       "\n",
       "    this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
       "\n",
       "    var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
       "        'canvas'\n",
       "    ));\n",
       "    rubberband_canvas.setAttribute(\n",
       "        'style',\n",
       "        'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
       "    );\n",
       "\n",
       "    // Apply a ponyfill if ResizeObserver is not implemented by browser.\n",
       "    if (this.ResizeObserver === undefined) {\n",
       "        if (window.ResizeObserver !== undefined) {\n",
       "            this.ResizeObserver = window.ResizeObserver;\n",
       "        } else {\n",
       "            var obs = _JSXTOOLS_RESIZE_OBSERVER({});\n",
       "            this.ResizeObserver = obs.ResizeObserver;\n",
       "        }\n",
       "    }\n",
       "\n",
       "    this.resizeObserverInstance = new this.ResizeObserver(function (entries) {\n",
       "        var nentries = entries.length;\n",
       "        for (var i = 0; i < nentries; i++) {\n",
       "            var entry = entries[i];\n",
       "            var width, height;\n",
       "            if (entry.contentBoxSize) {\n",
       "                if (entry.contentBoxSize instanceof Array) {\n",
       "                    // Chrome 84 implements new version of spec.\n",
       "                    width = entry.contentBoxSize[0].inlineSize;\n",
       "                    height = entry.contentBoxSize[0].blockSize;\n",
       "                } else {\n",
       "                    // Firefox implements old version of spec.\n",
       "                    width = entry.contentBoxSize.inlineSize;\n",
       "                    height = entry.contentBoxSize.blockSize;\n",
       "                }\n",
       "            } else {\n",
       "                // Chrome <84 implements even older version of spec.\n",
       "                width = entry.contentRect.width;\n",
       "                height = entry.contentRect.height;\n",
       "            }\n",
       "\n",
       "            // Keep the size of the canvas and rubber band canvas in sync with\n",
       "            // the canvas container.\n",
       "            if (entry.devicePixelContentBoxSize) {\n",
       "                // Chrome 84 implements new version of spec.\n",
       "                canvas.setAttribute(\n",
       "                    'width',\n",
       "                    entry.devicePixelContentBoxSize[0].inlineSize\n",
       "                );\n",
       "                canvas.setAttribute(\n",
       "                    'height',\n",
       "                    entry.devicePixelContentBoxSize[0].blockSize\n",
       "                );\n",
       "            } else {\n",
       "                canvas.setAttribute('width', width * fig.ratio);\n",
       "                canvas.setAttribute('height', height * fig.ratio);\n",
       "            }\n",
       "            canvas.setAttribute(\n",
       "                'style',\n",
       "                'width: ' + width + 'px; height: ' + height + 'px;'\n",
       "            );\n",
       "\n",
       "            rubberband_canvas.setAttribute('width', width);\n",
       "            rubberband_canvas.setAttribute('height', height);\n",
       "\n",
       "            // And update the size in Python. We ignore the initial 0/0 size\n",
       "            // that occurs as the element is placed into the DOM, which should\n",
       "            // otherwise not happen due to the minimum size styling.\n",
       "            if (fig.ws.readyState == 1 && width != 0 && height != 0) {\n",
       "                fig.request_resize(width, height);\n",
       "            }\n",
       "        }\n",
       "    });\n",
       "    this.resizeObserverInstance.observe(canvas_div);\n",
       "\n",
       "    function on_mouse_event_closure(name) {\n",
       "        return function (event) {\n",
       "            return fig.mouse_event(event, name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousedown',\n",
       "        on_mouse_event_closure('button_press')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseup',\n",
       "        on_mouse_event_closure('button_release')\n",
       "    );\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mousemove',\n",
       "        on_mouse_event_closure('motion_notify')\n",
       "    );\n",
       "\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseenter',\n",
       "        on_mouse_event_closure('figure_enter')\n",
       "    );\n",
       "    rubberband_canvas.addEventListener(\n",
       "        'mouseleave',\n",
       "        on_mouse_event_closure('figure_leave')\n",
       "    );\n",
       "\n",
       "    canvas_div.addEventListener('wheel', function (event) {\n",
       "        if (event.deltaY < 0) {\n",
       "            event.step = 1;\n",
       "        } else {\n",
       "            event.step = -1;\n",
       "        }\n",
       "        on_mouse_event_closure('scroll')(event);\n",
       "    });\n",
       "\n",
       "    canvas_div.appendChild(canvas);\n",
       "    canvas_div.appendChild(rubberband_canvas);\n",
       "\n",
       "    this.rubberband_context = rubberband_canvas.getContext('2d');\n",
       "    this.rubberband_context.strokeStyle = '#000000';\n",
       "\n",
       "    this._resize_canvas = function (width, height, forward) {\n",
       "        if (forward) {\n",
       "            canvas_div.style.width = width + 'px';\n",
       "            canvas_div.style.height = height + 'px';\n",
       "        }\n",
       "    };\n",
       "\n",
       "    // Disable right mouse context menu.\n",
       "    this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
       "        event.preventDefault();\n",
       "        return false;\n",
       "    });\n",
       "\n",
       "    function set_focus() {\n",
       "        canvas.focus();\n",
       "        canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    window.setTimeout(set_focus, 100);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'mpl-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'mpl-button-group';\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'mpl-button-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        var button = (fig.buttons[name] = document.createElement('button'));\n",
       "        button.classList = 'mpl-widget';\n",
       "        button.setAttribute('role', 'button');\n",
       "        button.setAttribute('aria-disabled', 'false');\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "\n",
       "        var icon_img = document.createElement('img');\n",
       "        icon_img.src = '_images/' + image + '.png';\n",
       "        icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
       "        icon_img.alt = tooltip;\n",
       "        button.appendChild(icon_img);\n",
       "\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    var fmt_picker = document.createElement('select');\n",
       "    fmt_picker.classList = 'mpl-widget';\n",
       "    toolbar.appendChild(fmt_picker);\n",
       "    this.format_dropdown = fmt_picker;\n",
       "\n",
       "    for (var ind in mpl.extensions) {\n",
       "        var fmt = mpl.extensions[ind];\n",
       "        var option = document.createElement('option');\n",
       "        option.selected = fmt === mpl.default_extension;\n",
       "        option.innerHTML = fmt;\n",
       "        fmt_picker.appendChild(option);\n",
       "    }\n",
       "\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
       "    // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
       "    // which will in turn request a refresh of the image.\n",
       "    this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_message = function (type, properties) {\n",
       "    properties['type'] = type;\n",
       "    properties['figure_id'] = this.id;\n",
       "    this.ws.send(JSON.stringify(properties));\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.send_draw_message = function () {\n",
       "    if (!this.waiting) {\n",
       "        this.waiting = true;\n",
       "        this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    var format_dropdown = fig.format_dropdown;\n",
       "    var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
       "    fig.ondownload(fig, format);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
       "    var size = msg['size'];\n",
       "    if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
       "        fig._resize_canvas(size[0], size[1], msg['forward']);\n",
       "        fig.send_message('refresh', {});\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
       "    var x0 = msg['x0'] / fig.ratio;\n",
       "    var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
       "    var x1 = msg['x1'] / fig.ratio;\n",
       "    var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
       "    x0 = Math.floor(x0) + 0.5;\n",
       "    y0 = Math.floor(y0) + 0.5;\n",
       "    x1 = Math.floor(x1) + 0.5;\n",
       "    y1 = Math.floor(y1) + 0.5;\n",
       "    var min_x = Math.min(x0, x1);\n",
       "    var min_y = Math.min(y0, y1);\n",
       "    var width = Math.abs(x1 - x0);\n",
       "    var height = Math.abs(y1 - y0);\n",
       "\n",
       "    fig.rubberband_context.clearRect(\n",
       "        0,\n",
       "        0,\n",
       "        fig.canvas.width / fig.ratio,\n",
       "        fig.canvas.height / fig.ratio\n",
       "    );\n",
       "\n",
       "    fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
       "    // Updates the figure title.\n",
       "    fig.header.textContent = msg['label'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
       "    var cursor = msg['cursor'];\n",
       "    switch (cursor) {\n",
       "        case 0:\n",
       "            cursor = 'pointer';\n",
       "            break;\n",
       "        case 1:\n",
       "            cursor = 'default';\n",
       "            break;\n",
       "        case 2:\n",
       "            cursor = 'crosshair';\n",
       "            break;\n",
       "        case 3:\n",
       "            cursor = 'move';\n",
       "            break;\n",
       "    }\n",
       "    fig.rubberband_canvas.style.cursor = cursor;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_message = function (fig, msg) {\n",
       "    fig.message.textContent = msg['message'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
       "    // Request the server to send over a new figure.\n",
       "    fig.send_draw_message();\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
       "    fig.image_mode = msg['mode'];\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
       "    for (var key in msg) {\n",
       "        if (!(key in fig.buttons)) {\n",
       "            continue;\n",
       "        }\n",
       "        fig.buttons[key].disabled = !msg[key];\n",
       "        fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
       "    if (msg['mode'] === 'PAN') {\n",
       "        fig.buttons['Pan'].classList.add('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    } else if (msg['mode'] === 'ZOOM') {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.add('active');\n",
       "    } else {\n",
       "        fig.buttons['Pan'].classList.remove('active');\n",
       "        fig.buttons['Zoom'].classList.remove('active');\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Called whenever the canvas gets updated.\n",
       "    this.send_message('ack', {});\n",
       "};\n",
       "\n",
       "// A function to construct a web socket function for onmessage handling.\n",
       "// Called in the figure constructor.\n",
       "mpl.figure.prototype._make_on_message_function = function (fig) {\n",
       "    return function socket_on_message(evt) {\n",
       "        if (evt.data instanceof Blob) {\n",
       "            /* FIXME: We get \"Resource interpreted as Image but\n",
       "             * transferred with MIME type text/plain:\" errors on\n",
       "             * Chrome.  But how to set the MIME type?  It doesn't seem\n",
       "             * to be part of the websocket stream */\n",
       "            evt.data.type = 'image/png';\n",
       "\n",
       "            /* Free the memory for the previous frames */\n",
       "            if (fig.imageObj.src) {\n",
       "                (window.URL || window.webkitURL).revokeObjectURL(\n",
       "                    fig.imageObj.src\n",
       "                );\n",
       "            }\n",
       "\n",
       "            fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
       "                evt.data\n",
       "            );\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        } else if (\n",
       "            typeof evt.data === 'string' &&\n",
       "            evt.data.slice(0, 21) === 'data:image/png;base64'\n",
       "        ) {\n",
       "            fig.imageObj.src = evt.data;\n",
       "            fig.updated_canvas_event();\n",
       "            fig.waiting = false;\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        var msg = JSON.parse(evt.data);\n",
       "        var msg_type = msg['type'];\n",
       "\n",
       "        // Call the  \"handle_{type}\" callback, which takes\n",
       "        // the figure and JSON message as its only arguments.\n",
       "        try {\n",
       "            var callback = fig['handle_' + msg_type];\n",
       "        } catch (e) {\n",
       "            console.log(\n",
       "                \"No handler for the '\" + msg_type + \"' message type: \",\n",
       "                msg\n",
       "            );\n",
       "            return;\n",
       "        }\n",
       "\n",
       "        if (callback) {\n",
       "            try {\n",
       "                // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
       "                callback(fig, msg);\n",
       "            } catch (e) {\n",
       "                console.log(\n",
       "                    \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
       "                    e,\n",
       "                    e.stack,\n",
       "                    msg\n",
       "                );\n",
       "            }\n",
       "        }\n",
       "    };\n",
       "};\n",
       "\n",
       "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
       "mpl.findpos = function (e) {\n",
       "    //this section is from http://www.quirksmode.org/js/events_properties.html\n",
       "    var targ;\n",
       "    if (!e) {\n",
       "        e = window.event;\n",
       "    }\n",
       "    if (e.target) {\n",
       "        targ = e.target;\n",
       "    } else if (e.srcElement) {\n",
       "        targ = e.srcElement;\n",
       "    }\n",
       "    if (targ.nodeType === 3) {\n",
       "        // defeat Safari bug\n",
       "        targ = targ.parentNode;\n",
       "    }\n",
       "\n",
       "    // pageX,Y are the mouse positions relative to the document\n",
       "    var boundingRect = targ.getBoundingClientRect();\n",
       "    var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
       "    var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
       "\n",
       "    return { x: x, y: y };\n",
       "};\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * http://stackoverflow.com/a/24161582/3208463\n",
       " */\n",
       "function simpleKeys(original) {\n",
       "    return Object.keys(original).reduce(function (obj, key) {\n",
       "        if (typeof original[key] !== 'object') {\n",
       "            obj[key] = original[key];\n",
       "        }\n",
       "        return obj;\n",
       "    }, {});\n",
       "}\n",
       "\n",
       "mpl.figure.prototype.mouse_event = function (event, name) {\n",
       "    var canvas_pos = mpl.findpos(event);\n",
       "\n",
       "    if (name === 'button_press') {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    var x = canvas_pos.x * this.ratio;\n",
       "    var y = canvas_pos.y * this.ratio;\n",
       "\n",
       "    this.send_message(name, {\n",
       "        x: x,\n",
       "        y: y,\n",
       "        button: event.button,\n",
       "        step: event.step,\n",
       "        guiEvent: simpleKeys(event),\n",
       "    });\n",
       "\n",
       "    /* This prevents the web browser from automatically changing to\n",
       "     * the text insertion cursor when the button is pressed.  We want\n",
       "     * to control all of the cursor setting manually through the\n",
       "     * 'cursor' event from matplotlib */\n",
       "    event.preventDefault();\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
       "    // Handle any extra behaviour associated with a key event\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.key_event = function (event, name) {\n",
       "    // Prevent repeat events\n",
       "    if (name === 'key_press') {\n",
       "        if (event.which === this._key) {\n",
       "            return;\n",
       "        } else {\n",
       "            this._key = event.which;\n",
       "        }\n",
       "    }\n",
       "    if (name === 'key_release') {\n",
       "        this._key = null;\n",
       "    }\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.which !== 17) {\n",
       "        value += 'ctrl+';\n",
       "    }\n",
       "    if (event.altKey && event.which !== 18) {\n",
       "        value += 'alt+';\n",
       "    }\n",
       "    if (event.shiftKey && event.which !== 16) {\n",
       "        value += 'shift+';\n",
       "    }\n",
       "\n",
       "    value += 'k';\n",
       "    value += event.which.toString();\n",
       "\n",
       "    this._key_event_extra(event, name);\n",
       "\n",
       "    this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
       "    return false;\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
       "    if (name === 'download') {\n",
       "        this.handle_save(this, null);\n",
       "    } else {\n",
       "        this.send_message('toolbar_button', { name: name });\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
       "    this.message.textContent = tooltip;\n",
       "};\n",
       "\n",
       "///////////////// REMAINING CONTENT GENERATED BY embed_js.py /////////////////\n",
       "// prettier-ignore\n",
       "var _JSXTOOLS_RESIZE_OBSERVER=function(A){var t,i=new WeakMap,n=new WeakMap,a=new WeakMap,r=new WeakMap,o=new Set;function s(e){if(!(this instanceof s))throw new TypeError(\"Constructor requires 'new' operator\");i.set(this,e)}function h(){throw new TypeError(\"Function is not a constructor\")}function c(e,t,i,n){e=0 in arguments?Number(arguments[0]):0,t=1 in arguments?Number(arguments[1]):0,i=2 in arguments?Number(arguments[2]):0,n=3 in arguments?Number(arguments[3]):0,this.right=(this.x=this.left=e)+(this.width=i),this.bottom=(this.y=this.top=t)+(this.height=n),Object.freeze(this)}function d(){t=requestAnimationFrame(d);var s=new WeakMap,p=new Set;o.forEach((function(t){r.get(t).forEach((function(i){var r=t instanceof window.SVGElement,o=a.get(t),d=r?0:parseFloat(o.paddingTop),f=r?0:parseFloat(o.paddingRight),l=r?0:parseFloat(o.paddingBottom),u=r?0:parseFloat(o.paddingLeft),g=r?0:parseFloat(o.borderTopWidth),m=r?0:parseFloat(o.borderRightWidth),w=r?0:parseFloat(o.borderBottomWidth),b=u+f,F=d+l,v=(r?0:parseFloat(o.borderLeftWidth))+m,W=g+w,y=r?0:t.offsetHeight-W-t.clientHeight,E=r?0:t.offsetWidth-v-t.clientWidth,R=b+v,z=F+W,M=r?t.width:parseFloat(o.width)-R-E,O=r?t.height:parseFloat(o.height)-z-y;if(n.has(t)){var k=n.get(t);if(k[0]===M&&k[1]===O)return}n.set(t,[M,O]);var S=Object.create(h.prototype);S.target=t,S.contentRect=new c(u,d,M,O),s.has(i)||(s.set(i,[]),p.add(i)),s.get(i).push(S)}))})),p.forEach((function(e){i.get(e).call(e,s.get(e),e)}))}return s.prototype.observe=function(i){if(i instanceof window.Element){r.has(i)||(r.set(i,new Set),o.add(i),a.set(i,window.getComputedStyle(i)));var n=r.get(i);n.has(this)||n.add(this),cancelAnimationFrame(t),t=requestAnimationFrame(d)}},s.prototype.unobserve=function(i){if(i instanceof window.Element&&r.has(i)){var n=r.get(i);n.has(this)&&(n.delete(this),n.size||(r.delete(i),o.delete(i))),n.size||r.delete(i),o.size||cancelAnimationFrame(t)}},A.DOMRectReadOnly=c,A.ResizeObserver=s,A.ResizeObserverEntry=h,A}; // eslint-disable-line\n",
       "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\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
       "\n",
       "mpl.default_extension = \"png\";/* global mpl */\n",
       "\n",
       "var comm_websocket_adapter = function (comm) {\n",
       "    // Create a \"websocket\"-like object which calls the given IPython comm\n",
       "    // object with the appropriate methods. Currently this is a non binary\n",
       "    // socket, so there is still some room for performance tuning.\n",
       "    var ws = {};\n",
       "\n",
       "    ws.close = function () {\n",
       "        comm.close();\n",
       "    };\n",
       "    ws.send = function (m) {\n",
       "        //console.log('sending', m);\n",
       "        comm.send(m);\n",
       "    };\n",
       "    // Register the callback with on_msg.\n",
       "    comm.on_msg(function (msg) {\n",
       "        //console.log('receiving', msg['content']['data'], msg);\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(msg['content']['data']);\n",
       "    });\n",
       "    return ws;\n",
       "};\n",
       "\n",
       "mpl.mpl_figure_comm = function (comm, msg) {\n",
       "    // This is the function which gets called when the mpl process\n",
       "    // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
       "\n",
       "    var id = msg.content.data.id;\n",
       "    // Get hold of the div created by the display call when the Comm\n",
       "    // socket was opened in Python.\n",
       "    var element = document.getElementById(id);\n",
       "    var ws_proxy = comm_websocket_adapter(comm);\n",
       "\n",
       "    function ondownload(figure, _format) {\n",
       "        window.open(figure.canvas.toDataURL());\n",
       "    }\n",
       "\n",
       "    var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
       "\n",
       "    // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
       "    // web socket which is closed, not our websocket->open comm proxy.\n",
       "    ws_proxy.onopen();\n",
       "\n",
       "    fig.parent_element = element;\n",
       "    fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
       "    if (!fig.cell_info) {\n",
       "        console.error('Failed to find cell for figure', id, fig);\n",
       "        return;\n",
       "    }\n",
       "    fig.cell_info[0].output_area.element.on(\n",
       "        'cleared',\n",
       "        { fig: fig },\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_close = function (fig, msg) {\n",
       "    var width = fig.canvas.width / fig.ratio;\n",
       "    fig.cell_info[0].output_area.element.off(\n",
       "        'cleared',\n",
       "        fig._remove_fig_handler\n",
       "    );\n",
       "    fig.resizeObserverInstance.unobserve(fig.canvas_div);\n",
       "\n",
       "    // Update the output cell to use the data from the current canvas.\n",
       "    fig.push_to_output();\n",
       "    var dataURL = fig.canvas.toDataURL();\n",
       "    // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
       "    // the notebook keyboard shortcuts fail.\n",
       "    IPython.keyboard_manager.enable();\n",
       "    fig.parent_element.innerHTML =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "    fig.close_ws(fig, msg);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.close_ws = function (fig, msg) {\n",
       "    fig.send_message('closing', msg);\n",
       "    // fig.ws.close()\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
       "    // Turn the data on the canvas into data in the output cell.\n",
       "    var width = this.canvas.width / this.ratio;\n",
       "    var dataURL = this.canvas.toDataURL();\n",
       "    this.cell_info[1]['text/html'] =\n",
       "        '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.updated_canvas_event = function () {\n",
       "    // Tell IPython that the notebook contents must change.\n",
       "    IPython.notebook.set_dirty(true);\n",
       "    this.send_message('ack', {});\n",
       "    var fig = this;\n",
       "    // Wait a second, then push the new image to the DOM so\n",
       "    // that it is saved nicely (might be nice to debounce this).\n",
       "    setTimeout(function () {\n",
       "        fig.push_to_output();\n",
       "    }, 1000);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._init_toolbar = function () {\n",
       "    var fig = this;\n",
       "\n",
       "    var toolbar = document.createElement('div');\n",
       "    toolbar.classList = 'btn-toolbar';\n",
       "    this.root.appendChild(toolbar);\n",
       "\n",
       "    function on_click_closure(name) {\n",
       "        return function (_event) {\n",
       "            return fig.toolbar_button_onclick(name);\n",
       "        };\n",
       "    }\n",
       "\n",
       "    function on_mouseover_closure(tooltip) {\n",
       "        return function (event) {\n",
       "            if (!event.currentTarget.disabled) {\n",
       "                return fig.toolbar_button_onmouseover(tooltip);\n",
       "            }\n",
       "        };\n",
       "    }\n",
       "\n",
       "    fig.buttons = {};\n",
       "    var buttonGroup = document.createElement('div');\n",
       "    buttonGroup.classList = 'btn-group';\n",
       "    var button;\n",
       "    for (var toolbar_ind in mpl.toolbar_items) {\n",
       "        var name = mpl.toolbar_items[toolbar_ind][0];\n",
       "        var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
       "        var image = mpl.toolbar_items[toolbar_ind][2];\n",
       "        var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
       "\n",
       "        if (!name) {\n",
       "            /* Instead of a spacer, we start a new button group. */\n",
       "            if (buttonGroup.hasChildNodes()) {\n",
       "                toolbar.appendChild(buttonGroup);\n",
       "            }\n",
       "            buttonGroup = document.createElement('div');\n",
       "            buttonGroup.classList = 'btn-group';\n",
       "            continue;\n",
       "        }\n",
       "\n",
       "        button = fig.buttons[name] = document.createElement('button');\n",
       "        button.classList = 'btn btn-default';\n",
       "        button.href = '#';\n",
       "        button.title = name;\n",
       "        button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
       "        button.addEventListener('click', on_click_closure(method_name));\n",
       "        button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
       "        buttonGroup.appendChild(button);\n",
       "    }\n",
       "\n",
       "    if (buttonGroup.hasChildNodes()) {\n",
       "        toolbar.appendChild(buttonGroup);\n",
       "    }\n",
       "\n",
       "    // Add the status bar.\n",
       "    var status_bar = document.createElement('span');\n",
       "    status_bar.classList = 'mpl-message pull-right';\n",
       "    toolbar.appendChild(status_bar);\n",
       "    this.message = status_bar;\n",
       "\n",
       "    // Add the close button to the window.\n",
       "    var buttongrp = document.createElement('div');\n",
       "    buttongrp.classList = 'btn-group inline pull-right';\n",
       "    button = document.createElement('button');\n",
       "    button.classList = 'btn btn-mini btn-primary';\n",
       "    button.href = '#';\n",
       "    button.title = 'Stop Interaction';\n",
       "    button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
       "    button.addEventListener('click', function (_evt) {\n",
       "        fig.handle_close(fig, {});\n",
       "    });\n",
       "    button.addEventListener(\n",
       "        'mouseover',\n",
       "        on_mouseover_closure('Stop Interaction')\n",
       "    );\n",
       "    buttongrp.appendChild(button);\n",
       "    var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
       "    titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._remove_fig_handler = function (event) {\n",
       "    var fig = event.data.fig;\n",
       "    if (event.target !== this) {\n",
       "        // Ignore bubbled events from children.\n",
       "        return;\n",
       "    }\n",
       "    fig.close_ws(fig, {});\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._root_extra_style = function (el) {\n",
       "    el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._canvas_extra_style = function (el) {\n",
       "    // this is important to make the div 'focusable\n",
       "    el.setAttribute('tabindex', 0);\n",
       "    // reach out to IPython and tell the keyboard manager to turn it's self\n",
       "    // off when our div gets focus\n",
       "\n",
       "    // location in version 3\n",
       "    if (IPython.notebook.keyboard_manager) {\n",
       "        IPython.notebook.keyboard_manager.register_events(el);\n",
       "    } else {\n",
       "        // location in version 2\n",
       "        IPython.keyboard_manager.register_events(el);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
       "    var manager = IPython.notebook.keyboard_manager;\n",
       "    if (!manager) {\n",
       "        manager = IPython.keyboard_manager;\n",
       "    }\n",
       "\n",
       "    // Check for shift+enter\n",
       "    if (event.shiftKey && event.which === 13) {\n",
       "        this.canvas_div.blur();\n",
       "        // select the cell after this one\n",
       "        var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
       "        IPython.notebook.select(index + 1);\n",
       "    }\n",
       "};\n",
       "\n",
       "mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
       "    fig.ondownload(fig, null);\n",
       "};\n",
       "\n",
       "mpl.find_output_cell = function (html_output) {\n",
       "    // Return the cell and output element which can be found *uniquely* in the notebook.\n",
       "    // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
       "    // IPython event is triggered only after the cells have been serialised, which for\n",
       "    // our purposes (turning an active figure into a static one), is too late.\n",
       "    var cells = IPython.notebook.get_cells();\n",
       "    var ncells = cells.length;\n",
       "    for (var i = 0; i < ncells; i++) {\n",
       "        var cell = cells[i];\n",
       "        if (cell.cell_type === 'code') {\n",
       "            for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
       "                var data = cell.output_area.outputs[j];\n",
       "                if (data.data) {\n",
       "                    // IPython >= 3 moved mimebundle to data attribute of output\n",
       "                    data = data.data;\n",
       "                }\n",
       "                if (data['text/html'] === html_output) {\n",
       "                    return [cell, data, j];\n",
       "                }\n",
       "            }\n",
       "        }\n",
       "    }\n",
       "};\n",
       "\n",
       "// Register the function which deals with the matplotlib target/channel.\n",
       "// The kernel may be null if the page has been refreshed.\n",
       "if (IPython.notebook.kernel !== null) {\n",
       "    IPython.notebook.kernel.comm_manager.register_target(\n",
       "        'matplotlib',\n",
       "        mpl.mpl_figure_comm\n",
       "    );\n",
       "}\n"
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<img src=\"data:image/png;base64,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BIwE9vb2jj+BV34tbhSeMB0RYACwIw2VW5rl7/yTwb+lpaXcSqQeBBBAAAEEEEAAAQQQQAABBJISKL8WTyoxkmlcgI8AN07MARBAAAEEEEAAAQQQQAABBBBAAAEEEJicAAOAk7PnyAgggAACCCCAAAIIIIAAAggggAACCDQuwABg48QcAAEEEEAAAQQQQAABBBBAAAEEEEAAgckJMAA4OXuOjAACCCCAAAIIIIAAAggggAACCCCAQOMCDAA2TswBEEAAAQQQQAABBBBAAAEEEEAAAQQQmJwAA4CTs+fICCCAAAIIIIAAAggggAACCCCAAAIINC7AAGDjxBwAAQQQQAABBBBAAAEEEEAAAQQQQACByQkwADg5e46MAAIIIIAAAggggAACCCCAAAIIIIBA4wIMADZOzAEQQAABBBBAAAEEEEAAAQQQQAABBBCYnAADgJOz58gIIIAAAggggAACCCCAAAIIIIAAAgg0LsAAYOPEHAABBBBAAAEEEEAAAQQQQAABBBBAAIHJCTAAODl7jowAAggggAACCCCAAAIIIIAAAggggEDjAgwANk7MARBAAAEEEEAAAQQQQAABBBBAAAEEEJicAAOAk7PnyAgggAACCCCAAAIIIIAAAggggAACCDQuwABg48QcAAEEEEAAAQQQQAABBBBAAAEEEEAAgckJMAA4OXuOjAACCCCAAAIIIIAAAggggAACCCCAQOMCDAA2TswBEEAAAQQQQAABBBBAAAEEEEAAAQQQmJwAA4CTs+fICCCAAAIIIIAAAggggAACCCCAAAIINC7AAGDjxBwAAQQQQAABBBBAAAEEEEAAAQQQQACByQkwADg5e46MAAIIIIAAAggggAACCCCAAAIIIIBA4wIMADZOzAEQQAABBBBAAAEEEEAAAQQQQAABBBCYnAADgJOzDzryzMyMG+ffPffcMzL+Jz7xCfeqV73KLS0tudOnT/fmcl+WMyGAAAIIIIAAAggggAACCCCAAAII5CHAAGAe7ViriqOjI/e6173OvfzlL3cf+9jH3O7urnviiSd6c7kvy2W9bMeEAAIIIIAAAggggAACCCCAAAIIINBtgVPdTn96s//Zn/1Zd9999w0FuPHGG4eue+tb3+o+8IEP9Na/6EUvcm95y1vcs5/9bPflL3/Zvetd73Kf//zne+vPnDnj3v72tw+NwwoEEEAA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aC+JlfzoxmporNjiWLWZWss8ZNI4oc4hOaT3tcpH48Tio/nE4pw2r/L2uP/9XaVtk2LbvJ0z8mFLDogAAggggMDoBHy/p3N0Gfodibr83OraK7b2ii2futqlKce1ai+rOE1xa3qeVu21Y8cO7++sThvGFiedWyy3rdrMqp625hNbXVbtRRwE8gT4CHCezpis+8EPfuD+9V//1X3qU59ycnvDhg3u5JNPds94xjPcC17wAnfMMceMiQRlIoBA4wQODfoGwJxKfPbJCdezyie2zz49B+UOAggggAACCCCAAAIIIJAvwABgvk/r18qg3zOf+Ux32223dWv9xS9+4a677rrOvyuuuMJ9+tOfdg94wAO667mBAAIIRCNw2mnRpNJJJLZ84tIhGwQQQAABBBBAAAEEEKhJgI8A1wQfw2G/9a1vda7yk8G/Y4891r3+9a93yfd7uM9//vPuuc99bifF73znO+6cc85xt99+ewwpkwMCCCCAAAIIIIAAAggggAACCCCAQEkBrgAsCdamzV/84hc7udpv3bp17rOf/azbvn17t7zHP/7x7kEPepC75JJL3M033+ze8pa3uFe/+tXd9dxAAAEERi5w/PHOHXecSy5Ztj20xJTYZafY8imbP9sjgAACCCCAAAIIIIDA2AhwBeDYNHVvofIR3y9+8YudhRdddFHP4J9u+dKXvtSdeuqpnbtve9vb3K9+9StdxRwBBBAYvUDyZoW77LJfDwJaHV0G/ySmxC47xZZP2fzZHgEEEEAAAQQQQAABBMZGwOMvnrGxaXWhH//4x7v1Pec5z+neTt+YnJx0z372s90rXvEKd/jw4c6A4ROe8IT0JtxGAAEERitw/vnOnXeeSx6UbI4rV/H5DP7p0WPLR/NijgACCCCAAAIIIIAAAgikBBgATGGM080vf/nLnXLvec97urm5uYGln3XWWd111157rWMAsMvBDQQQqEtABuw2barr6GuPG1s+azNkCQIIIIAAAggggAACCIy5AAOAY9oBbrrppk7lJ598cuc7AAcxPOQhD+mu0n26C7gRLLBr167gGARAoG0C8mNE69evj6osztWomqNxycTWf6zyiS1O4zpGwYRxLgjFZpUKxPjcXGnBHsGtzlWPQzdiF3wa0Uwk2XIBBgBb3sBZ5d15553u0KFDnVWzs7NZm3SXHZ98PE6uEvz5z3/u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YACwRnwOjQACCCCAAAIIIIAAAggggAACCCCAQNUCDABWLUx8BBBAAAEEEEAAAQQQQAABBBBAAAEEahRgALBGfA6NAAIIIIAAAggggAACCCCAAAIIIIBA1QIMAFYtTHwEEEAAAQQQQAABBBBAAAEEEEAAAQRqFGAAsEZ8Do0AAggggAACCCCAAAIIIIAAAggggEDVAgwAVi1MfAQQQAABBBBAAAEEEEAAAQQQQAABBGoUYACwRnwOjQACCCCAAAIIIIAAAggggAACCCCAQNUCDABWLUx8BBBAAAEEEEAAAQQQQAABBBBAAAEEahRgALBGfA6NAAIIIIAAAggggAACCCCAAAIIIIBA1QIMAFYtTHwEEEAAAQQQQAABBBBAAAEEEEAAAQRqFGAAsEZ8Do0AAggggAACCCCAAAIIIIAAAggggEDVAgwAVi1MfAQQQAABBBBAAAEEEEAAAQQQQAABBGoUYACwRnwOjQACCCCAAAIIIIAAAggggAACCCCAQNUCDABWLUx8BBBAAAEEEEAAAQQQQAABBBBAAAEEahRgALBGfA6NAAIIIIAAAggggAACCCCAAAIIIIBA1QIMAFYtTHwEEEAAAQQQQAABBBBAAAEEEEAAAQRqFGAAsEZ8Do0AAggggAACCCCAAAIIIIAAAggggEDVAgwAVi1MfAQQQAABBBBAAAEEEEAAAQQQQAABBGoUYACwRnwOjQACCCCAAAIIIIAAAggggAACCCCAQNUCDABWLUx8BBBAAAEEEEAAAQQQQAABBBBAAAEEahRgALBGfA6NAAIIIIAAAggggAACCCCAAAIIIIBA1QIMAFYtTHwEEEAAAQQQQAABBBBAAAEEEEAAAQRqFGAAsEZ8Do0AAggggAACCCCAAAIIIIAAAggggEDVAgwAVi1MfAQQQAABBBBAAAEEEEAAAQQQQAABBGoUYACwRnwOjQACCCCAAAIIIIAAAggggAACCCCAQNUCDABWLUx8BBBAAAEEEEAAAQQQQAABBBBAAAEEahRgALBGfA6NAAIIIIAAAggggAACCCCAAAIIIIBA1QIMAFYtTHwEEEAAAQQQQAABBBBAAAEEEEAAAQRqFGAAsEZ8Do0AAggggAACCCCAAAIIIIAAAggggEDVAgwAVi1MfAQQQAABBBBAAAEEEEAAAQQQQAABBGoUYACwRnwOjQACCCCAAAIIIIAAAggggAACCCCAQNUCDABWLUx8BBBAAAEEEEAAAQQQQAABBBBAAAEEahRgALBGfA6NAAIIIIAAAggggAACCCCAAAIIIIBA1QIMAFYtTHwEEEAAAQQQQAABBBBAAAEEEEAAAQRqFGAAsEZ8Do0AAggggAACCCCAAAIIIIAAAggggEDVAgwAVi1MfAQQQAABBBBAAAEEEEAAAQQQQAABBGoUYACwRnwOjQACCCCAAAIIIIAAAggggAACCCCAQNUCDABWLUx8BBBAAAEEEEAAAQQQQAABBBBAAAEEahRgALBGfA6NAAIIIIAAAggggAACCCCAAAIIIIBA1QIMAFYtTHwEEEAAAQQQQAABBBBAAAEEEEAAAQRqFGAAsEZ8Do0AAggggAACCCCAAAIIIIAAAggggEDVAgwAVi1MfAQQQAABBBBAAAEEEEAAAQQQQAABBGoUYACwRnwOjQACCCCAAAIIIIAAAggggAACCCCAQNUCDABWLUx8BBBAAAEEEEAAAQQQQAABBBBAAAEEahRgALBGfA6NAAIIIIAAAggggAACCCCAAAIIIIBA1QIMAFYtTHwEEEAAAQQQQAABBBBAAAEEEEAAAQRqFGAAsEZ8Do0AAggggAACCCCAAAIIIIAAAggggEDVAgwAVi1MfAQQQAABBBBAAAEEEEAAAQQQQAABBGoU+P8BA336MgvyDwkAAAAASUVORK5CYII=\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def affiche_un_voyage(n,m):\n",
    "    g,l,deb,fin=labyrinthe(n,m)\n",
    "    chemin=list(parcours(g,deb,fin))\n",
    "    affichage(n,m,l,0.05)\n",
    "    plot_chemin(n,m,chemin)\n",
    "\n",
    "affiche_un_voyage(50,50)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fd9fee71",
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d8a02e6e",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
