{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "8f84b965",
   "metadata": {},
   "outputs": [],
   "source": [
    "import ENDFtk\n",
    "import ACEtk\n",
    "import scion\n",
    "\n",
    "import matplotlib.pyplot as plot\n",
    "%matplotlib notebook"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "b44313bc",
   "metadata": {},
   "outputs": [],
   "source": [
    "# the files we want to look at\n",
    "endffile = '../performance/u235.endf'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "43b81161",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "number points:  85\n",
      "interpolation types:  [2]\n"
     ]
    }
   ],
   "source": [
    "# open the ENDF file and retrieve the capture cross section\n",
    "tape = ENDFtk.tree.Tape.from_file( endffile )\n",
    "u235_nubar = tape.materials.front().file( 1 ).section( 452 ).parse()\n",
    "\n",
    "print( 'number points: ', len( u235_nubar.nubar.energies ) )\n",
    "print( 'interpolation types: ', u235_nubar.nubar.interpolants.to_list() )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "4c81ced4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "number points:  85\n"
     ]
    }
   ],
   "source": [
    "# create an InterpolationTable from the ENDF data and linearise the data\n",
    "representation = scion.math.LinearLinearTable( x = u235_nubar.nubar.energies.to_list(),\n",
    "                                               y = u235_nubar.nubar.multiplicities.to_list() )\n",
    "\n",
    "linearised = representation.linearise() # default tolerance of 0.1%\n",
    "\n",
    "print( 'number points: ', len( linearised.x ) )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "b138247b",
   "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_device_pixel_ratio', {\n",
       "                device_pixel_ratio: fig.ratio,\n",
       "            });\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('tabindex', '0');\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",
       "            'z-index: 2;'\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(\n",
       "        'style',\n",
       "        'box-sizing: content-box;' +\n",
       "            'pointer-events: none;' +\n",
       "            'position: relative;' +\n",
       "            'z-index: 0;'\n",
       "    );\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;' +\n",
       "            'left: 0;' +\n",
       "            'pointer-events: none;' +\n",
       "            'position: absolute;' +\n",
       "            'top: 0;' +\n",
       "            '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",
       "            /* This rescales the canvas back to display pixels, so that it\n",
       "             * appears correct on HiDPI screens. */\n",
       "            canvas.style.width = width + 'px';\n",
       "            canvas.style.height = height + 'px';\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",
       "        /* User Agent sniffing is bad, but WebKit is busted:\n",
       "         * https://bugs.webkit.org/show_bug.cgi?id=144526\n",
       "         * https://bugs.webkit.org/show_bug.cgi?id=181818\n",
       "         * The worst that happens here is that they get an extra browser\n",
       "         * selection when dragging, if this check fails to catch them.\n",
       "         */\n",
       "        var UA = navigator.userAgent;\n",
       "        var isWebKit = /AppleWebKit/.test(UA) && !/Chrome/.test(UA);\n",
       "        if(isWebKit) {\n",
       "            return function (event) {\n",
       "                /* This prevents the web browser from automatically changing to\n",
       "                 * the text insertion cursor when the button is pressed. We\n",
       "                 * want to control all of the cursor setting manually through\n",
       "                 * the 'cursor' event from matplotlib */\n",
       "                event.preventDefault()\n",
       "                return fig.mouse_event(event, name);\n",
       "            };\n",
       "        } else {\n",
       "            return function (event) {\n",
       "                return fig.mouse_event(event, name);\n",
       "            };\n",
       "        }\n",
       "    }\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'mousedown',\n",
       "        on_mouse_event_closure('button_press')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'mouseup',\n",
       "        on_mouse_event_closure('button_release')\n",
       "    );\n",
       "    canvas_div.addEventListener(\n",
       "        'dblclick',\n",
       "        on_mouse_event_closure('dblclick')\n",
       "    );\n",
       "    // Throttle sequential mouse events to 1 every 20ms.\n",
       "    canvas_div.addEventListener(\n",
       "        'mousemove',\n",
       "        on_mouse_event_closure('motion_notify')\n",
       "    );\n",
       "\n",
       "    canvas_div.addEventListener(\n",
       "        'mouseenter',\n",
       "        on_mouse_event_closure('figure_enter')\n",
       "    );\n",
       "    canvas_div.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",
       "    canvas_div.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",
       "    fig.canvas_div.style.cursor = msg['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",
       "            var img = evt.data;\n",
       "            if (img.type !== 'image/png') {\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",
       "                img.type = 'image/png';\n",
       "            }\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",
       "                img\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",
       "function getModifiers(event) {\n",
       "    var mods = [];\n",
       "    if (event.ctrlKey) {\n",
       "        mods.push('ctrl');\n",
       "    }\n",
       "    if (event.altKey) {\n",
       "        mods.push('alt');\n",
       "    }\n",
       "    if (event.shiftKey) {\n",
       "        mods.push('shift');\n",
       "    }\n",
       "    if (event.metaKey) {\n",
       "        mods.push('meta');\n",
       "    }\n",
       "    return mods;\n",
       "}\n",
       "\n",
       "/*\n",
       " * return a copy of an object with only non-object keys\n",
       " * we need this to avoid circular references\n",
       " * https://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",
       "    if (name === 'button_press') {\n",
       "        this.canvas.focus();\n",
       "        this.canvas_div.focus();\n",
       "    }\n",
       "\n",
       "    // from https://stackoverflow.com/q/1114465\n",
       "    var boundingRect = this.canvas.getBoundingClientRect();\n",
       "    var x = (event.clientX - boundingRect.left) * this.ratio;\n",
       "    var y = (event.clientY - boundingRect.top) * this.ratio;\n",
       "\n",
       "    this.send_message(name, {\n",
       "        x: x,\n",
       "        y: y,\n",
       "        button: event.button,\n",
       "        step: event.step,\n",
       "        modifiers: getModifiers(event),\n",
       "        guiEvent: simpleKeys(event),\n",
       "    });\n",
       "\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.key === this._key) {\n",
       "            return;\n",
       "        } else {\n",
       "            this._key = event.key;\n",
       "        }\n",
       "    }\n",
       "    if (name === 'key_release') {\n",
       "        this._key = null;\n",
       "    }\n",
       "\n",
       "    var value = '';\n",
       "    if (event.ctrlKey && event.key !== 'Control') {\n",
       "        value += 'ctrl+';\n",
       "    }\n",
       "    else if (event.altKey && event.key !== 'Alt') {\n",
       "        value += 'alt+';\n",
       "    }\n",
       "    else if (event.shiftKey && event.key !== 'Shift') {\n",
       "        value += 'shift+';\n",
       "    }\n",
       "\n",
       "    value += 'k' + event.key;\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\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis\", \"fa fa-square-o\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o\", \"download\"]];\n",
       "\n",
       "mpl.extensions = [\"eps\", \"jpeg\", \"pgf\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\", \"webp\"];\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.binaryType = comm.kernel.ws.binaryType;\n",
       "    ws.readyState = comm.kernel.ws.readyState;\n",
       "    function updateReadyState(_event) {\n",
       "        if (comm.kernel.ws) {\n",
       "            ws.readyState = comm.kernel.ws.readyState;\n",
       "        } else {\n",
       "            ws.readyState = 3; // Closed state.\n",
       "        }\n",
       "    }\n",
       "    comm.kernel.ws.addEventListener('open', updateReadyState);\n",
       "    comm.kernel.ws.addEventListener('close', updateReadyState);\n",
       "    comm.kernel.ws.addEventListener('error', updateReadyState);\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",
       "        var data = msg['content']['data'];\n",
       "        if (data['blob'] !== undefined) {\n",
       "            data = {\n",
       "                data: new Blob(msg['buffers'], { type: data['blob'] }),\n",
       "            };\n",
       "        }\n",
       "        // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
       "        ws.onmessage(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",
       "    // 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,iVBORw0KGgoAAAANSUhEUgAAA8AAAALQCAYAAABfdxm0AAAgAElEQVR4XuzdCfwV0//H8U+lfaHQoqSsicq+UxHCn1T42Vss2bd+yM9WfhHxs/ezRcguyhoSsoZQlBRJWiQS2qTtP++5v/l2v9++y9xl7szc+zqPRw/6fmfOfOZ57uF87jlzptJapxgFAQQQQAABBBBAAAEEEEAAgTwXqEQCnOctzO0hgAACCCCAAAIIIIAAAgi4AiTAfBAQQAABBBBAAAEEEEAAAQQKQoAEuCCamZtEAAEEEEAAAQQQQAABBBAgAeYzgAACCCCAAAIIIIAAAgggUBACJMAF0czcJAIIIIAAAggggAACCCCAAAkwnwEEEEAAAQQQQAABBBBAAIGCECABLohm5iYRQAABBBBAAAEEEEAAAQRIgPkMIIAAAggggAACCCCAAAIIFIQACXBBNDM3iQACCCCAAAIIIIAAAgggQALMZwABBBBAAAEEEEAAAQQQQKAgBEiAC6KZuUkEEEAAAQQQQAABBBBAAAESYD4DCCCAAAIIIIAAAggggAACBSFAAlwQzcxNIoAAAggggAACCCCAAAIIkADzGUAAAQQQQAABBBBAAAEEECgIARLggmhmbhIBBBBAAAEEEEAAAQQQQIAEmM8AAggggAACCCCAAAIIIIBAQQiQABdEM3OTCCCAAAIIIIAAAggggAACJMB8BhBAAAEEEEAAAQQQQAABBApCgAS4IJqZm0QAAQQQQAABBBBAAAEEECAB5jOAAAIIIIAAAggggAACCCBQEAIkwAXRzNwkAggggAACCCCAAAIIIIAACTCfAQQQQAABBBBAAAEEEEAAgYIQIAEuiGbmJhFAAAEEEEAAAQQQQAABBEiA+QwggAACCCCAAAIIIIAAAggUhAAJcEE0MzeJAAIIIIAAAggggAACCCBAAsxnAAEEEEAAAQQQQAABBBBAoCAESIALopm5SQQQQAABBBBAAAEEEEAAARJgPgMIIIAAAggggAACCCCAAAIFIUACXBDNzE0igAACCCCAAAIIIIAAAgiQAPMZQAABBBBAAAEEEEAAAQQQKAgBEuCCaGZuEgEEEEAAAQQQQAABBBBAgASYzwACCCCAAAIIIIAAAggggEBBCJAAF0Qzc5MIIIAAAggggAACCCCAAAIkwHwGEEAAAQQQQAABBBBAAAEECkKABLggmpmbRAABBBBAAAEEEEAAAQQQIAHmM4AAAggggAACCCCAAAIIIFAQAiTABdHM3CQCCCCAAAIIIIAAAggggAAJMJ8BBBBAAAEEEEAAAQQQQACBghAgAS6IZuYmEUAAAQQQQAABBBBAAAEESID5DCCAAAIIIIAAAggggAACCBSEAAlwQTQzN4kAAggggAACCCCAAAIIIEACzGcAAQQQQAABBBBAAAEEEECgIARIgAuimblJBBBAAAEEEEAAAQQQQAABEmA+AwgggAACCCCAAAIIIIAAAgUhQAJcEM3MTSKAAAIIIIAAAggggAACCJAA8xlAAAEEEEAAAQQQQAABBBAoCAES4IJoZm4SAQQQQAABBBBAAAEEEECABJjPAAIIIIAAAggggAACCCCAQEEIkAAXRDNzkwgggAACCCCAAAIIIIAAAiTAfAYQQAABBBBAAAEEEEAAAQQKQoAEuCCamZtEAAEEEEAAAQQQQAABBBAgAeYzgAACCCCAAAIIIIAAAgggUBACJMAF0czcJAIIIIAAAggggAACCCCAAAkwnwEEEEAAAQQQQAABBBBAAIGCECABLohm5iYRQAABBBBAIOoCLVq0sFmzZtmwYcOsZ8+eUQ+X+BBAAIFYCpAAx7LZCBoBBMIU6N+/vw0YMMB3CGvXri12rAa2jzzyiPuzzTbbzL799lurVatWqfW988471rFjR/d3M2fONA2Qk4s3YE7+2QYbbGD16tWzjTbayLbffnvbZZddrFu3brbTTjuVG3Mq91XynpIrHjVqlHXt2tX2228/e++999xfJd9zySBq165tW2yxhR1wwAF27rnn2o477ujbVgduu+22ruERRxxhL7/8sq9zf/zxR9dS9/Gf//zHLrnkkmJxKp4ffvihWF36e8uWLd2flZagePdY2rm+gvrfQc8//7zdd9999sUXX9iff/5pTZo0sUMOOcQuvfRS23rrrVOpqujYVGIr7z7lNX78eHvllVfs/ffft6lTp9pvv/3mfn4Vm+I877zzrGnTpqXG+ccff9hjjz1mEyZMsEmTJtnPP/9sv/76q1WtWtWaNWvmfmb69Olju+++e6nnJ8dWHsSVV15pAwcOTMsqzJNIgMPU59oIIFAoAiTAhdLS3CcCCGRNIDlRbNSoUYX1zp8/v9gxJZPBG264wa644opS6/GbANeoUcM23HBDtw4lKUqc/vrrr2J17rXXXm5i1bZt21Kvlcp9lbyn5Ap79eplDz/8sN188832z3/+0/2Vd8+VK1e2TTfdtOjw1atX28KFC92YVapUqeLGeNppp1Xo6h1w4403un46d/bs2W7CWFHRFxi6XyVec+fOLYqpvEQx6ARYBrpvJdcqsqpTp47blipKMp999lk7/PDDK7q99X6frQT4+uuvt6uuuqqo/kqVKrmfOyW2Xhvqy5fhw4fbUUcdtV4cSnyTk1vdo3f+mjVr3ONVZ79+/Uz9omRJboNNNtnEbfPSysUXX2yXX355yk5hn0ACHHYLcH0EECgEARLgQmhl7hEBBLIqkJwoljcTWtZFSybASgC+//57a9CgwXqn+E2Ae/To4SadyUWJ02effWZPPvmkPfroo7ZixQqrVq2aPffcc/Z///d/610r0/tShUpi9KWAZvWmT59u22yzjXud8hKwlStX2tixY93ZXzkoxmnTpq03212W508//WTNmze3VatWmZLhihIftdlWW23lzqh3797dRowYUVR1mAnw4MGDi2K/9tpr3S8PlADLonfv3vbhhx+aZsu/+uqroplovx/sbCXA+ozcdtttduKJJ9pxxx1n+lKlZs2atnz5chs9erQp8dTsutpw4sSJ7gqE5DJjxgz3C459993XTYT1WVESq7bTZ/Xqq6+2MWPGuKfoc3v88ccXOz85AS5tRYRfj6geRwIc1ZYhLgQQyCcBEuB8ak3uBQEEciKQaaLoJSO77babzZkzxzSb2rdvX7vllluymgAnV/bll1+6Sa9mSJVEaXmtl5x6x2V6X6pHS561lFmJz9dff+0rsfQO0pLa/fff3/3rf//7Xzv77LN9t6dmG1966SXbbrvt7Jtvvin3vLfeessOOugg9xgt5U2eUQ0rAV60aJG7DHzx4sXuEuB777232D3o961bt3Y/KyeffLI7w5pKyVYCrKRWcdavX7/Uyysp3WGHHdyEWLPZQ4cOTSVM90uaVq1aucvPO3XqVJQMe5WQAKfEycEIIIAAAqUIkADzsUAAAQRSFMg0UfSSkfbt27uzaJr51BJmzZhuvvnmxaLJZAa45G198skn7oydZkBLS6IyvS9dT4n8rbfe6i5hHTRoUEoJ8JIlS6xu3bruOZoN1TOvfssLL7xgRx99tHu4EmnNMJZVdO+PP/64+5yqNhxKXkYbVgL8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gEDKAozPUybL+gkkwFknjU6FdLDotAWRIIAAAggggAACCCDA+Dz8zwAJcPhtEFgEmXSwtWvXmv5QEECgfIFKlSqZ/lAQQAABBBBAAIGKBDIZn1dUN7/3J0AC7M8plkel0sGU7C5evNj+/PNPW7Zsma1evTqW90zQCIQhUKVKFatVq5bVq1fP6tatS0IcRiNwTQQQQAABBGIgkMr4PAa3E8sQSYBj2Wz+gvbbwdasWWPz58+3P/74w1/FHIUAAmUKbLTRRtaoUSOrXLkySggggAACCCCAQDEBv+Nz2IITIAEOzjb0mv12sEWLFrkJsEqDBg3cGazq1aszixV6CxJAHAS0emLFihXuCorffvvNDblx48ZWv379OIRPjAgggAACCCCQQwG/4/MchlRwlyIBzuMm99vBvv/+e3cA37BhQ9t4443zWIRbQyBYgYULF9qCBQvcL5C23HLLYC9G7QgggAACCCAQOwG/4/PY3ViMAiYBjlFjpRqqnw6m2atvvvnGrXrrrbe2qlWrpnoZjkcAgf8JrFy50r777jv3b61atWIVBZ8MBBBAAAEEECgm4Gd8DlmwAiTAwfqGWrufDqbnf6dNm+bGud122/HcYqgtxsXjLkB/insLEj8CCCCAAALBCvgZnwcbAbWTAOfxZ8BPB2PAnscfAG4t5wL0p5yTc0EEEEAAAQRiJeBnfB6rG4phsCTAMWw0vyH76WAM2P1qchwCFQvQnyo24ggEEEAAAQQKWcDP+LyQfXJx7yTAuVAO6Rp+OhgD9pAah8vmpQD9KS+blZtCAAEEEEAgawJ+xudZuxgVlSpAApzHHww/HYwBex5/ALi1nAvQn3JOzgURQAABBBCIlYCf8XmsbiiGwZIAx7DR/Ibsp4MxYC9bs1KlShVS9+jRwx5++OGi41q0aGGzZs2yDTbYwKZOnerurF2y6PhevXpZnz597N577y36tffz5ONr1aplG264oW277ba255572qmnnmpeu5ZVb3lBDxs2zHr27LneIR988IHtt99+9u9//9uuuuoq954UY8mieHRP3bp1s3/+859Wu3btCo0uu+wyu/nmm61379724IMPlnu87Fq2bOm+Rujnn3+2evXqufE+8sgjVjL2VH9eUaB//fWXDRo0yJ588kn78ccf3Xdid+7c2a677jpr1qxZRae7v6c/+WLiIAQQQAABBApW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axN3oZngBx4I/Y4Yn4feBCTAfptAuz73czqRZm6nTp1q2gwrudR2XrKtGdtjjz22wir13K8SaCXBeua3ZFGCrd2gddxzGXxTRQersCk4AAEEEEAAAQQQQCBfBc48c13Sq5lgLxkO8X4Zn4eI/79LswmWzzZQ8qskWJtVVa9e3e6880476qijbMmSJe6mVbfeeqtVq1bNPv30U2vbtm25tR5yyCE2ZswY50uoB5wvo/73XELSGVoWffDBB5uOe/311yuM0OtIJQ+cMWOGbbXVViyBrlCQAxBAAAEEEEAAAQTyTuCYY9Yte1by6y2HDvFGSYBDxCcBTg1fy5VvueUW96T77rvPztQ3SklFM78jRoywk046yR577LFyK1dyqyR36NChpud9SxYlx0p+SYBTayOORgABBBBAAAEEEECgSKBjx3UbX2n5cykTT7nWIgHOtfj612MG2GcbXHfddXbttdda5cqVbdmyZe4scHIZPXq0+35g7e6s9wGXV1gC7ROdwxBAAAEEEEAAAQQQSFegXbt1rz7SY4XaCCvkQgIccgM4lycB9tkGjz76qPXo0cM222wz9/VEJYueC27durVVrVrV/v7773JrZRMsn+gchgACCCCAAAIIIIBAugLOq0WdmanE2XoFkl6FFHIhAQ65AUiA/TfAV1995T7bW7NmTVu6dKlVqlSp2MnaEXr//fe3+vXru+/wLa/4fQ2SXoXUq1cv/0GWOJIOljYdJyKAAAIIIIAAAgjEXaBWLbPlyxN38eWXZm3ahH5HjM9DbwJmgFNpgi233NJmzpzp7gC91157FTt14MCBdvXVV5f5bt/kg3/66Sdr1qyZu6HW7NmzrWHDhkW/XrFihW3ufFu1cOFCd6a5cePGqYRY7Fg6WNp0nIgAAggggAACCCAQZwElvkqAvaKZYOdRxbAL4/OwW4Al0Cm1gDa/Ouuss2z33Xe3V1991TbZZBP3/M8++8w6depkv//+uz377LN2jHacc8rdd9/t/unatasNGjSo2LVOPvlke/zxx6179+721FNPucmwyoUXXujuMK3fDx8+PKX4Sh5MB8uIj5MRQAABBBBAAAEE4iowb17xhNfZw8dZyhn63TA+D70JmAFOpQnWrFljxx9/vJvkNmjQwPbZZx/3NUgffvih+9zvGWecYffff39Rlf3797cBAwa4zw4//PDDxS71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AAEEEEAAAQQQCFbgvPPMhgxJXEOb3t52W7DXC6B2xucBoKZYZawT4JbOw+9a4jxu3Lii29b7f++9914bPXq0HXLIIbZo0SLnGfmW1q5du2LHpegUy8PpYLFsNoJGAAEEEEAAAQQQKE1Az//qOWCVgQPNrrwydk6Mz8NvslgnwLVr17YuXbrYE088USTZunVrN+n96aefin6mmeLPPvvM5ull2QVU6GAF1NjcKgIIIIAAAgggkO8C2gFaO0Gr3HOP2Vlnxe6OGZ+H32SxToA33XRT23fffW3UqFGu5G+//Wb62bHHHut8OfS/b4ecn59yyik2YsQIW758efjiOYyADpZDbC6FAAIIIIAAAgggEKzALruYffFF4hrPPGPOoD/Y6wVQO+PzAFBTrDLWCbA2vtLzvXPmzLGqVava0KFDrU+fPvbAAw9Y7969iygOdr4tmj59us2aNStFnngfTgeLd/sRPQIIIIAAAggggECSgPPoo82enfjBW2+ZdewYOx7G5+E3WawTYO0AffbZZ7s7QGvjq2HDhtmaNWucd2J/bxtvvLGru2rVKndWeLfddrMxY8aEL57DCOhgOcTmUggggAACCCCAAALBCjiPP9qyZYlrTJpk1rZtsNcLoHbG5wGgplhlrBNgJbcnO1ugP6MlEE7RM8Ga/T3++OOLGEaOHGndu3e366+/3q644ooUeeJ9OB0s3u1H9AgggAACCCCAAAL/E9CjjLVqreNwVoBa06ax42F8Hn6TxToB9vi0tHnBggXWqlUrq1u3bjHViRMnukuf99prL2vUqFH44jmMgA6WQ2wuhQACCCCAAAIIIBCcgBLezTdfV78S4ho1grteQDUzPg8INoVq8yIBTuF+C+pQOlhBNTc3iwACCCCAAAII5K+AM6llO++cuD8thV6yJJb3yvg8/GYjAQ6/DQKLgA4WGC0VI4AAAggggAACCORSYOxYs06dElfcYgtzdsLN5dWzdi3G51mjTLuiWCXA1113nVWqVMnOPfdca9CggenvfovOu/rqq/0enhfH0cHyohm5CQQQQAABBBBAAAG94vSEExIOzua29umnsTRhfB5+s8UqAa5cubKbAE+dOtW23XZb8/6+du3aCiV13urVqys8Lp8OoIPlU2tyLwgggAACCCCAQAEL3H232fnnJwA6dzYbPTqWGIzPw2+2WCXADz/8sJsA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AQRKEejTR+rdO/hhly7ylnvJKyrG5+7DSQLsPgahtYAOFhotFSOAAAIIIIAAAgiEIXD22fLeaQxqvvxy6fbbwziKszoZnzujLzhw7BPglStX6qmnnvKejnjXX/vX/l1SWc97eX7cuHHuxXPYAjpYDrE5FAIIIIAAAggggEDmAocfLr32WlDPwIHSRRdlXmeEamB87j4YsU6A586dqwMOOEDfffed/rE1w8oolgCvXr3avXgOW0AHyyE2h0IAAQQQQAABBBDIXGCnnaTJk4N6Ro6Ujjsu8zojVAPjc/fBiHUCfNJJJ2nEiBHae++9ddlll6l58+beutnewtmllEaNGrkXz2EL6GA5xOZQCCCAAAIIIIAAApkL2FKmS5YE9YwfL28m28zrjFANjM/dByPWCbCt9WuzPk+bNk3VqlVzrxmxFtDBIhYQmoMAAggggAACCCBQusDvv8sb3Bf+fM4caaut8kqM8bn7cMY6Aba7vYcddpj3dIT3eARlHQE6GBcFAggggAACCCCAQGwEpkyRdtghaO7660srVkiVKsWm+ck0lPF5MkrhbhPrBHivvfbydcbb4xEUEmCuAQQQQAABBBBAAIH4CtjkVzYJlpVtt5WmT4/vuZTSchJg9yGNdQI8evRo77344/zZndu2beteM2ItoINFLCA0BwEEEEAAAQQQQKB0gYceks49N/h5u3bSW2/lnRbjc/chjXUCPGvWLN1///168MEHdemll+qggw5SgwYNZDM+l1S23npr9+I5bAEdLIfYHAoBBBBAAAEEEEAgM4FrrpFuvTWoo2tXaciQzOqL4N6Mz90HJdYJcCXvnQBLdm0JpNKS3gSx/XzVqlVZE1/izU7XokUL/fTTT9puu+38ibhSLb/88ot69+6tUaNGacGCBapXr546duyoPn36aNNNN021unW2p4NlTEgFCCCAAAIIIIAAArkS8FZ40VNPBUe7/np5g+JcHTlnx2F8njPqUg8U6wS4nfdoRHmJb9EzfyuLj1F069ZNw4YN85PvdBLgxYsXy95htjWMt/XecWjdurWmeC/+21fTpk01YcIE2SzXmRQ6WCZ67IsAAggggAACCCCQU4F99pE++CA45GOPSWeckdPD5+JgjM9zoVz2MWKdALvis3eODzzwQJ199tl65JFH0kqATzvtND3xxBM69thj9fTTT6tKlSr+6Vx4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QCBVgXvvlS68MNjrgAOkN99MtYbYb8/43H0IY5UA9+/fPyOxK6+8MqP947YzHSxuEaO9CCCAAAIIIIBAHgtY8mtJsJVzzpEefDCPT7bkU2N87j7ksUqAbYmjZCezssmxrBTd3t4NrkiFDlaRos25IoAAAggggAACERewx5/tMWgrd90lXXJJxBuc/eYxPs++aao1xioB7t27d9IJsEEsXLhQtlbw8uXL/f1IgFO9PNgeAQQQQAABBBBAAIEsCdgEWDYRlpWXX5Y6dMhSxfGphgTYfaxilQAny7V48WLddttt3lMVD+oPb3a5jTbaSD179tStt96abBV5sR0dLC/CyEkggAACCCCAAALxF1i5Mpjxec2a4Fy+/VZq1iz+55XiGTA+TxEshM3zKgFesmSJvybw/fff7ye+1atX13nnnSd797d27doh8EW7SjpYtOND6xBAAAEEEEAAgQojMHWq1LJlcLqVK8t7RFNaf/0Kc/qJE2V87j7keZEAL126VHfccYfuu+8+LVu2zE98zz33XF111VXaYostsqZ8l/euwvvvv6/Jkydr0aJFWrFiherVq6d27dr5SXbigk7mgI0bN9bMmTNL3XSq90uiRYsWyVRV6jZ0sIz42BkBBBBAAAEEEEAgWwIvvCB17BjUZnd+7Q5wBSyMz90HPdYJ8C+//KI777zTm0zuXj/x3WCDDbwJ5c7xE9+6detmXdfuItud5Z122klbbbWVX/+UKVO8/vutqlatqtGjR+uwww5L6riJBLhr164lbt+vXz9tueWWSdVV2kZ0sIz42BkBBBBAAAEEEEAgWwLeU5reHaOgNnv3194BroCF8bn7oMcyAf7111+9iePu0t13312Q+J599tm6+uqr/TuyYZUPPvhAu+22m6pVq1bsEPausT1qXb9+fW8971neUx3eYx3llEQCnJiturzt0/k5HSwdNfZBAAEEEEAAAQQQyLrA6adLQ4YE1V56qby7WFk/RBwqZHzuPkqxSoB/++03DRgwQAMHDpQlwXbH96yzztI111yT8d3STEPRzHuU4/vvv/fvCLdMvN9QRqUkwJmKsz8CCCCAAAIIIIBAbARat5Y+/TRo7uDBUrdusWl6NhtKApxNzfTqilUCvPnmm/uJrz1ufOaZZ+raa691nvgm2O193W+++UbfffedmjZtWm40SIDLJWIDBBBAAAEE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EEAAAQQQQAABBBDIogAJcBYxqQoBBBBAAAEEEEAAAQQQQCC6AiTA0Y0NLatAAuPGjdPBBx+shg0basaMGRXozON1qoMHD9awYcP01VdfacWKFWrevLkuvfRSnXzyyfE6kTxs7dixY3XNNddoypQpqlWrlk4//XT16dNHlStXzsOzjf8p0ZfiG0P+v4pP7BYvXqx///vfeuGFF2R/33LLLXX11VfrnHPOic9JVJCWrlmzRrfeequGDBmi2bNna/PNN9chhxzif69OnToVRCF3p0kCnDtrjoRAiQLz5s1TmzZttOOOO2rq1KkkwBG+Tk455RTttttu2meffbTZZptp1KhRuuqqq/TUU0/phBNOiHDL87tpn3/+ufbYYw/17NlTZ599tr7++mt1797dH+TZ4IESPQH6UvRikkyL+P8qGaVobPP777/7Y4utttrKT4IbNWqk+fPn6++//9Z+++0XjUbSigKB/v37q2/fvnrsscf8/89mzpypc889Vw0aNJB9wEvJrgAJcHY9qS2iAp9++qneeOMNffTRR5o4caLsP/ENNtjAv4tXVrGf9+vXz09wZs2a5X8id+ihh/q/pOyXUqZl9erVat++vY444gj98ccf/id/3AEOVKMas7Vjfvjhh6t69ep67rnnMr0c8nL/XMTR7sBPmzbNv2YS5Z577vHvdCxatEg1atTIS9uwTioXMSup7fSl9CKaq3jx/1V68Slpr1zE7IYbbtDQoUP1zTff+OMdSvoCuYjXkUceqapVqxYbS9j/Y9ddd52WLVuWfuPZs0QBEmAujAoh0LFjR/8RoKKlvATYkt8DDjhAH374of/Y0L777usnp5ZEb7HFFho/fryaNGmSkZ/dPZyjG+5mAAAaN0lEQVQ8ebJeeeUV/3FNEuBCzqjGbO2A77333v7d+4cffjijayFfd85FHBs3bqxTTz1VN954YwHj9OnT1bRpU7399ttq27ZtvvKGcl65iFlJDacvpRfOXMWL/6/Si09Je+UiZjvssIN23nlnbbzxxv7TSvZnhw4d/N+TG220UfZOpgLUlIt42R3gO+64Q6+99pr/pJndqLEny+wO/ogRIyqAcm5PkQQ4t94czZHAbbfdpj///FO77767/1WvXr1y7wBff/31/n8Ue+21l//4SeIu0l133aXLLrvMf4TonXfeKTijJUuWyL7KKvYfUOJd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CCCAAAIIIIAAAgikJUACnBYbOyGAAAIIIIAAAggggAACCMRNgAQ4bhGjvQgggAACCCCAAAIIIIAAAmkJkACnxcZOCCCAAAIIIIAAAggggAACcRMgAY5bxGgvAggggAACCCCAAAIIIIBAWgIkwGmxsRMCCCCAAAIIIIAAAggggEDcBEiA4xYx2osAAggggAACCCCAAAIIIJCWAAlwWmzshAACCCCAAAIIIIAAAgggEDcBEuC4RYz2IoAAAggggAACCCCAAAIIpCVAApwWGzshgAACCCCAAAIIIIAAAgjETYAEOG4Ro70IIIAAAggggAACCCCAAAJpCZAAp8XGTggggED+Cay33nr+Sf3zzz85PbnevXurT58+Gjx4sLp165bUsd9++23tv//+6tq1q4YMGZLUPmwUb4EZM2Zom222KXYSn3/+uXbeeee0Tqxz584aOXKk+vbtq169epVZx7vvvqu2bduqQYMGmjlzpipVqqSOHTvqhRdeKNiPazGtMLATAgggkHMBEuCck3NABBBAIJoCJMDJx6Vdu3Z655139OOPP6px48bJ78iWaQskEuC6devq0EMP9eux5HXrrbdOq86XXnpJRx11lLbbbjtNmzatzDp69OihRx55RFdddZVuvfVWf9t77rlHn332mRYsWKAxY8bwYUxaUWAnBBBAIPcCJMC5N+eICCCAQCQFXCXAP//8s+xryy231CabbJKUjes7wCTASYUpqxslEmC7E2vxz7T8/fffql+/vn/tffzxx2rdunWJVf7111+qV6+eli5dqsmTJ2uHHXYotp3razFTB/ZHAAEEKpoACXBFizjniwACCJQi4CoBTicgrpMOEuB0opbZPtlOgK01F1xwge677z5dfPHFGjBgQIkNHD16tI455hj/UWt75Hrt4vpazEyVvRFAAIGKJ0ACXPFizhkjgAACJQqUlAAXTTpee+01/13dp556yn/ss2HDhjrrrLN05ZVXKrFv0Yrtztqdd94pe9TUHhVef/31/ceFO3TooEsvvVS1atXyNy/rHWA7/jXXXKOxY8dq5cqV2mmnnXTddddpo402KvUdYHuHediwYXrsscc0adIkf79mzZrptNNO00UXXeS3o2ixNtl7nbbfoEGD/Edbv/vuO/9u9NFHH63bbrtNm266qb9LSe+hFq0r2fenf/rpJ79es7FjV69eXXvuuad/rvvtt1+x9hVNsO666y7//C0pW7JkiX9eZnnGGWeUGFNrb79+/fxHdOfPn6+NN97Yf5f1+uuv9y2LFnuX+vTTT9cNN9ygk046yd/mrbfekrX1+eef9995tfLMM8/o9ttv11dffeXXd/jhh/uPBdvjwUOHDvX3sQ8I7Hj2eLLd2bd22Huzaxfb3t777t69u29fVkk2Af79999lTvZ+7/Tp01WlShXtsssuuuSSSwrOIXGcjz76SHvssYd/h3fOnDmqXLnyOk047rjj9Nxzz+mOO+7QZZddts7PSYD5hYoAAgjES4AEOF7xorUIIIBAaAJlJcB77bWXnxxMmTJFbdq08dtg78CuWLHCT8huuummYu36+uuvdfDBB2vu3Ll+AmT7r169Wt98843/vmUiSbKdSkuALXnZe++9tWjRIjVv3ly77rqrn0hb0nLOOefowQcfXOe9yzVr1ujEE0/0kx9LznbffXfVqFFDEydO9JN2S9Ys6SyajCUS4CuuuEJ33323v88WW2yhDz/80D/2vvvu65+r+VhSf/nll+v111/XwoUL1alTJ7/+RElmQi47/wMPPNC3adKkiZ+ILl68WBMmTNCqVav0xBNP+AlooiQSLEvGp06dql9//dWPgSV6NjmTuT766KM688wzi8Xg/fff9z9s+O233/R///d/2n777f1j2nGqVaumV155xf8QoWjbLQE2v1dffdX/gMKOY4/+XnjhhX5dAwcO9BNJuxYsya1du7bsOPahgp3Hiy++WCy25mPJsx3L7NcuZmv7W5ssEc00AbaYtG/fXnb9bbXVVtptt930559/avz48frjjz/8DwOuvvrqYodp0aKFf13ahwR2zRYtZm3JsT0GPXv2bP+R6bULCXBov5KoGAEEEAhFgAQ4FFYqRQABBOInUFYCbGdjyYolM5b0WPnkk0/8xLZq1ap+MphIBC2J23HHHf1E1+6YWdJR9K6rPUZqCabNqGultAT4kEMO8e/8nnfeebr33nsLkla7U2h3nq2sPfNu//79/TuRBx10kJ588kn/OFYs+enSpYuf/Nojrz179iwIUCIBtkTdEr/ErMKW7Nr5ff/99xo3bpyfWCVKuo9AW7Jq9dvdU0u27RHchLu5WLvtQ4UffvhBderU8Q+XSLDs75ZQ2l1TuwNuxWYhtjuzdqfV7iQniiW9NrmTJdbDhw+X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\" width=\"640\">"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot the nubar data\n",
    "plot.figure()\n",
    "plot.plot( u235_nubar.nubar.energies, u235_nubar.nubar.multiplicities, label = 'ENDF/B-VIII.0', color = 'red', linewidth = 1.5 )\n",
    "plot.xlabel( 'Incident energy [eV]' )\n",
    "plot.ylabel( 'Neutrons per fission' )\n",
    "plot.title( 'ENDF/B-VIII.0 U235 nubar' )\n",
    "plot.xscale( 'log' )\n",
    "plot.yscale( 'linear' )\n",
    "plot.legend()\n",
    "plot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "ba147c00",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on Section in module ENDFtk.MF1.MT452 object:\n",
      "\n",
      "class Section(pybind11_builtins.pybind11_object)\n",
      " |  MF1 MT452 section - the total number of fission neutrons\n",
      " |  \n",
      " |  Method resolution order:\n",
      " |      Section\n",
      " |      pybind11_builtins.pybind11_object\n",
      " |      builtins.object\n",
      " |  \n",
      " |  Methods defined here:\n",
      " |  \n",
      " |  __init__(...)\n",
      " |      __init__(*args, **kwargs)\n",
      " |      Overloaded function.\n",
      " |      \n",
      " |      1. __init__(self: ENDFtk.MF1.MT452.Section, zaid: float, awr: float, multiplicity: Union[ENDFtk.MF1.PolynomialMultiplicity, ENDFtk.MF1.TabulatedMultiplicity]) -> None\n",
      " |      \n",
      " |      Initialise the section\n",
      " |      \n",
      " |      Arguments:\n",
      " |          self            the section\n",
      " |          zaid            the ZA value of the material\n",
      " |          awr            the atomic weight ratio\n",
      " |          multiplicity    the multiplicity data\n",
      " |      \n",
      " |      2. __init__(self: ENDFtk.MF1.MT452.Section, section: ENDFtk.MF1.MT452.Section) -> None\n",
      " |      \n",
      " |      Initialise the section with another section\n",
      " |      \n",
      " |      Arguments:\n",
      " |          self       the section\n",
      " |          section    the section to be copied\n",
      " |  \n",
      " |  to_string(...)\n",
      " |      to_string(self: ENDFtk.MF1.MT452.Section, mat: int, mf: int) -> str\n",
      " |      \n",
      " |      Return the string representation of the section\n",
      " |      \n",
      " |      Arguments:\n",
      " |          self    the section\n",
      " |          mat     the MAT number to be used\n",
      " |          mf      the MF number to be used\n",
      " |  \n",
      " |  to_tree(...)\n",
      " |      to_tree(self: ENDFtk.MF1.MT452.Section, mat: int) -> njoy::ENDFtk::tree::Section\n",
      " |      \n",
      " |      Return the ENDF tree representation of the section\n",
      " |      \n",
      " |      Arguments:\n",
      " |          self    the section\n",
      " |          mat     the MAT number to be used\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Static methods defined here:\n",
      " |  \n",
      " |  from_string(...) from builtins.PyCapsule\n",
      " |      from_string(section: str) -> ENDFtk.MF1.MT452.Section\n",
      " |      \n",
      " |      Read the section from a string\n",
      " |      \n",
      " |      An exception is raised if something goes wrong while reading the\n",
      " |      section\n",
      " |      \n",
      " |      Arguments:\n",
      " |          section    the string representing the section\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Readonly properties defined here:\n",
      " |  \n",
      " |  AWR\n",
      " |      The atomic weight ratio for the section\n",
      " |  \n",
      " |  LNU\n",
      " |      The fission multiplicity representation type\n",
      " |  \n",
      " |  MT\n",
      " |      The MT number of the section\n",
      " |  \n",
      " |  NC\n",
      " |      The number of lines in this section\n",
      " |  \n",
      " |  ZA\n",
      " |      The ZA identifier for the section\n",
      " |  \n",
      " |  atomic_weight_ratio\n",
      " |      The atomic weight ratio for the section\n",
      " |  \n",
      " |  nubar\n",
      " |      The fission multiplicity data\n",
      " |  \n",
      " |  representation\n",
      " |      The fission multiplicity representation type\n",
      " |  \n",
      " |  section_number\n",
      " |      The MT number of the section\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Static methods inherited from pybind11_builtins.pybind11_object:\n",
      " |  \n",
      " |  __new__(*args, **kwargs) from pybind11_builtins.pybind11_type\n",
      " |      Create and return a new object.  See help(type) for accurate signature.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help( u235_nubar )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "71dc8101",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on class ChebyshevSeries in module scion.math:\n",
      "\n",
      "class ChebyshevSeries(pybind11_builtins.pybind11_object)\n",
      " |  A Chebyshev series function y -> f(x) = sum c_i T_i(x) of order n\n",
      " |  \n",
      " |  This class represents a Chebyshev series function y -> f(x) =\n",
      " |  sum c_i T_i(x) defined over the domain [-1,1].\n",
      " |  \n",
      " |  The Clenshaw recursion scheme is used for the evaluation of the series\n",
      " |  using the following recursion relation for Chebyshev polynomials:\n",
      " |    T_(n+1) = 2 x T_n - T_(n-1)\n",
      " |  \n",
      " |  Method resolution order:\n",
      " |      ChebyshevSeries\n",
      " |      pybind11_builtins.pybind11_object\n",
      " |      builtins.object\n",
      " |  \n",
      " |  Methods defined here:\n",
      " |  \n",
      " |  __call__(...)\n",
      " |      __call__(self: scion.math.ChebyshevSeries, x: float) -> float\n",
      " |      \n",
      " |      Evaluate the function for a value of x\n",
      " |      \n",
      " |      Arguments:\n",
      " |          self   the function\n",
      " |          x      the value to be evaluated\n",
      " |  \n",
      " |  __init__(...)\n",
      " |      __init__(self: scion.math.ChebyshevSeries, coefficients: List[float]) -> None\n",
      " |      \n",
      " |      Initialise the function\n",
      " |      \n",
      " |      Arguments:\n",
      " |          self           the function\n",
      " |          coefficients   the coefficients of the Chebyshev series (from\n",
      " |                         lowest to highest order coefficient)\n",
      " |  \n",
      " |  derivative(...)\n",
      " |      derivative(self: scion.math.ChebyshevSeries) -> scion.math.ChebyshevSeries\n",
      " |      \n",
      " |      Return the derivative of the Chebyshev series\n",
      " |  \n",
      " |  evaluate(...)\n",
      " |      evaluate(self: scion.math.ChebyshevSeries, x: float) -> float\n",
      " |      \n",
      " |      Evaluate the function for a value of x\n",
      " |      \n",
      " |      Arguments:\n",
      " |          self   the function\n",
      " |          x      the value to be evaluated\n",
      " |  \n",
      " |  is_contained(...)\n",
      " |      is_contained(self: scion.math.ChebyshevSeries, x: float) -> bool\n",
      " |      \n",
      " |      Check whether or not a value is inside the domain (including boundaries)\n",
      " |      \n",
      " |      Arguments:\n",
      " |          self   the function\n",
      " |          x      the value to be tested\n",
      " |  \n",
      " |  is_inside(...)\n",
      " |      is_inside(self: scion.math.ChebyshevSeries, x: float) -> bool\n",
      " |      \n",
      " |      Check whether or not a value is inside the domain (including boundaries)\n",
      " |      \n",
      " |      Arguments:\n",
      " |          self   the function\n",
      " |          x      the value to be tested\n",
      " |  \n",
      " |  linearise(...)\n",
      " |      linearise(self: scion.math.ChebyshevSeries, convergence: scion.linearisation.ToleranceConvergence = <scion.linearisation.ToleranceConvergence object at 0x11233c6f0>) -> scion.math.LinearLinearTable\n",
      " |      \n",
      " |      Linearise the function and return a LinearLinearTable\n",
      " |      \n",
      " |      Arguments:\n",
      " |          self           the function\n",
      " |          convergence    the linearisation convergence criterion (default 0.1 %)\n",
      " |  \n",
      " |  primitive(...)\n",
      " |      primitive(self: scion.math.ChebyshevSeries, left: float = 0.0) -> scion.math.ChebyshevSeries\n",
      " |      \n",
      " |      Return the primitive or antiderivative of the Chebyshev series\n",
      " |      \n",
      " |      Arguments:\n",
      " |          self   the function\n",
      " |          left   the left bound of the integral (default = 0)\n",
      " |  \n",
      " |  roots(...)\n",
      " |      roots(self: scion.math.ChebyshevSeries, a: float = 0.0) -> List[float]\n",
      " |      \n",
      " |      Calculate the real roots of the Chebyshev series so that f(x) = a\n",
      " |      \n",
      " |      This function calculates all roots on the real axis of the Chebyshev series.\n",
      " |      \n",
      " |      The roots of the Chebyshev series are the eigenvalues of the Frobenius\n",
      " |      companion matrix whose elements are trivial functions of the coefficients of\n",
      " |      the Chebyshev series. The resulting roots are in the complex plane so the\n",
      " |      roots that are not on the real axis are filtered out. The roots on the real\n",
      " |      axis are then improved upon using a few iterations of the Newton-Rhapson\n",
      " |      method.\n",
      " |      \n",
      " |      Arguments:\n",
      " |          self   the function\n",
      " |          a      the value of a (default is zero)\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Readonly properties defined here:\n",
      " |  \n",
      " |  coefficients\n",
      " |      The Chebyshev coefficients\n",
      " |  \n",
      " |  domain\n",
      " |      The domain\n",
      " |  \n",
      " |  order\n",
      " |      The Chebyshev order\n",
      " |  \n",
      " |  ----------------------------------------------------------------------\n",
      " |  Static methods inherited from pybind11_builtins.pybind11_object:\n",
      " |  \n",
      " |  __new__(*args, **kwargs) from pybind11_builtins.pybind11_type\n",
      " |      Create and return a new object.  See help(type) for accurate signature.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help( scion.math.ChebyshevSeries )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "63aff31f",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
