diff --git a/README.md b/README.md index 0a2cf75..de6c83b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,3 @@ -# kpm-tools - -======= - # KPM Tools [![PyPI](https://img.shields.io/pypi/v/kpm-tools.svg)][pypi_] @@ -25,18 +21,13 @@ [pre-commit]: https://github.com/pre-commit/pre-commit [black]: https://github.com/psf/black +KPM Tools is an open-source Python package that extends the Kernel Polynomial Method (KPM) functionalities of [Kwant](https://kwant-project.org/), a popular software for quantum transport simulations in tight-binding models. Our package specifically enhances the KPM expansion capabilities within the realm of closed tight-binding systems. + ## Features -- KPM expansion of typical spectal functions - - Density of states - - Green's functions - - Kubo conductivity - - Chern marker -- Time evolution -- Tools for system with periodic boundaries - - KPM vector factories that produces tiles - - Velocity operators adapted to periodic boundaries - - Distance operators adapted to periodic boundaries +- Advanced KPM expansion of typical spectral functions like Density of States, Green's Functions, Kubo Conductivity, and Chern Markers. +- Extremely efficient time evolution operator expansion +- Additional functionalities like KPM vector factories producing tiles, and velocity and distance operators adapted to periodic boundaries. ## Requirements @@ -56,8 +47,7 @@ Please see the [python api reference] for details. ## Contributing -Contributions are very welcome. -To learn more, see the [Contributor Guide]. +Contributions, especially in documentation and the 'concatenator' function/module, are very welcome. For more information, see our [Contributor Guide]. ## License @@ -71,6 +61,21 @@ please [file an issue] along with a detailed description. ## Credits +Many of the ideas implemented in KPM Tools originate from the early work on KPM expansion on the paper + +_Computation of topological phase diagram of disordered PbSnTe using the kernel polynomial method_. + +[Phys. Rev. Research 2, 013229 (2020)](https://doi.org/10.48550/arXiv.1905.02215) +[arXiv:1905:02215](https://arxiv.org/abs/1905.02215) + +Consider citing that work if you use this package on a publication. + +### Acknowledgments to Kwant + +KPM Tools is built upon the robust and efficient foundation provided by Kwant. We extend our gratitude to the Kwant authors and contributors for their work in developing a versatile platform for quantum transport simulations. KPM Tools aims to complement Kwant's capabilities in KPM expansions, adhering to the high standards of quality and performance set by the Kwant project. + +### Project Template + This project was generated from [@cjolowicz]'s [Hypermodern Python Cookiecutter] template. [@cjolowicz]: https://github.com/cjolowicz diff --git a/docs/tutorials.md b/docs/tutorials.md index 66629f9..bc7e750 100644 --- a/docs/tutorials.md +++ b/docs/tutorials.md @@ -5,7 +5,10 @@ maxdepth: 1 --- +tutorials/tutorial_operators_and_functions +tutorials/tutorial_conductivity tutorials/tutorial_bloch +tutorials/tutorial_tiles tutorials/tutorial_time_evolution tutorials/tutorial_evolution_performance ``` diff --git a/docs/tutorials/tutorial_conductivity.ipynb b/docs/tutorials/tutorial_conductivity.ipynb new file mode 100644 index 0000000..7d50000 --- /dev/null +++ b/docs/tutorials/tutorial_conductivity.ipynb @@ -0,0 +1,963 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "5eee10ca-17d3-4702-bbdd-8eb22271547a", + "metadata": {}, + "source": [ + "# Tutorial Concatenator\n", + "\n", + "The `kpm_tools.kpm_generator.concatenator` function offers the possibility to make a concatenated KPM expansion of several operators.\n", + "\n", + "We distinguish Matrix Operators $M_i$ from Spectral Operators $O_j(e)$.\n", + "\n", + "To concatenate Matrix Operators it suffices to multiply all the matrix operators in order.\n", + "\n", + "On the other hand, to concatenate Spectral Operators, one must use the KPM expanded vectors of one operator onto the next in reverse order.\n", + "\n", + "In general, we can concatenate\n", + "$$\n", + "M_1 \\times O_1(e) \\times M_2 \\times O_2(e) \\times M_3 ... \\times O_{n-1}(e) \\times M_n\n", + "$$\n", + "\n", + "To create a concatenated function we just need to provide a list of the Matrix Operators \n", + "\n", + "`[M_1, M_2, ..., M_n]`,\n", + "\n", + "and a list of the coefficient functions that expand the Spectral Operators \n", + "\n", + "`[coef_1, coef_2, ..., coef_n-1]`.\n", + "\n", + "## Transport and topological metrics included\n", + "\n", + "A few special cases implemented in `kpm_tools.kpm_funcs` are:\n", + "* Kubo-Bastin Conductivity: `kpm_tools.kpm_funcs.conductivity`\n", + " * The operator is $\\sigma^{KB}_{a,b}(e) = 2\\pi i [V_a \\delta (e)V_b G_A'(e) - V_a G_R'(e)V_b \\delta(e)]$, where $G'_{A,R}$ are the advanced and retarded Green's function, and $V_{a,b}$ are the velocity operators in the directions $a$ and $b$.\n", + "\n", + "* Kubo-Greenwood Conductivity: `kpm_tools.kpm_funcs.longitudinal_conductivity`\n", + " * The operator is $\\sigma^{KG}_{a,a}(e) = V_a \\delta (e)V_a \\delta(e)$, where $V_a$ is the velocity operators in the direction $a$.\n", + " \n", + "* Local Chern marker: `kpm_tools.kpm_funcs.chern_number`\n", + " * The operator is $c = 2\\pi i \\mathrm{Im}[PXPYP - PYPXP]$, where $P$ is the projector operator over the occupied states, and $X, Y$ are the position operators in real space.\n", + "\n", + "Each of these is defined as a particular iteration of the `concatenator` function.\n" + ] + }, + { + "cell_type": "markdown", + "id": "b86ffd4a-3bb9-4df3-ac47-8236ef212336", + "metadata": {}, + "source": [ + "Below, we demonstrate the equivalence between the Hall conductivity $\\sigma_{xy}$ and and the local Chern marker $C$ inside the gaps of a topological system." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "9036038d-4705-40a6-9ca4-c27884072d81", + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " var force = true;\n", + " var py_version = '3.3.1'.replace('rc', '-rc.').replace('.dev', '-dev.');\n", + " var reloading = false;\n", + " var Bokeh = root.Bokeh;\n", + "\n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks;\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + " if (js_modules == null) js_modules = [];\n", + " if (js_exports == null) js_exports = {};\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + "\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " if (!reloading) {\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " }\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + " window._bokeh_on_load = on_load\n", + "\n", + " function on_error() {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " var skip = [];\n", + " if (window.requirejs) {\n", + " window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n", + " require([\"jspanel\"], function(jsPanel) {\n", + "\twindow.jsPanel = jsPanel\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-modal\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-tooltip\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-hint\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-layout\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-contextmenu\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-dock\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"gridstack\"], function(GridStack) {\n", + "\twindow.GridStack = GridStack\n", + "\ton_load()\n", + " })\n", + " require([\"notyf\"], function() {\n", + "\ton_load()\n", + " })\n", + " root._bokeh_is_loading = css_urls.length + 9;\n", + " } else {\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n", + " }\n", + "\n", + " var existing_stylesheets = []\n", + " var links = document.getElementsByTagName('link')\n", + " for (var i = 0; i < links.length; i++) {\n", + " var link = links[i]\n", + " if (link.href != null) {\n", + "\texisting_stylesheets.push(link.href)\n", + " }\n", + " }\n", + " for (var i = 0; i < css_urls.length; i++) {\n", + " var url = css_urls[i];\n", + " if (existing_stylesheets.indexOf(url) !== -1) {\n", + "\ton_load()\n", + "\tcontinue;\n", + " }\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } var existing_scripts = []\n", + " var scripts = document.getElementsByTagName('script')\n", + " for (var i = 0; i < scripts.length; i++) {\n", + " var script = scripts[i]\n", + " if (script.src != null) {\n", + "\texisting_scripts.push(script.src)\n", + " }\n", + " }\n", + " for (var i = 0; i < js_urls.length; i++) {\n", + " var url = js_urls[i];\n", + " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " for (var i = 0; i < js_modules.length; i++) {\n", + " var url = js_modules[i];\n", + " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " element.type = \"module\";\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " for (const name in js_exports) {\n", + " var url = js_exports[name];\n", + " if (skip.indexOf(url) >= 0 || root[name] != null) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.type = \"module\";\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " element.textContent = `\n", + " import ${name} from \"${url}\"\n", + " window.${name} = ${name}\n", + " window._bokeh_on_load()\n", + " `\n", + " document.head.appendChild(element);\n", + " }\n", + " if (!js_urls.length && !js_modules.length) {\n", + " on_load()\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.1.min.js\", \"https://cdn.holoviz.org/panel/1.3.2/dist/panel.min.js\"];\n", + " var js_modules = [];\n", + " var js_exports = {};\n", + " var css_urls = [];\n", + " var inline_js = [ function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + "function(Bokeh) {} // ensure no trailing comma for IE\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " if ((root.Bokeh !== undefined) || (force === true)) {\n", + " for (var i = 0; i < inline_js.length; i++) {\n", + "\ttry {\n", + " inline_js[i].call(root, root.Bokeh);\n", + "\t} catch(e) {\n", + "\t if (!reloading) {\n", + "\t throw e;\n", + "\t }\n", + "\t}\n", + " }\n", + " // Cache old bokeh versions\n", + " if (Bokeh != undefined && !reloading) {\n", + "\tvar NewBokeh = root.Bokeh;\n", + "\tif (Bokeh.versions === undefined) {\n", + "\t Bokeh.versions = new Map();\n", + "\t}\n", + "\tif (NewBokeh.version !== Bokeh.version) {\n", + "\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n", + "\t}\n", + "\troot.Bokeh = Bokeh;\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " }\n", + " root._bokeh_is_initializing = false\n", + " }\n", + "\n", + " function load_or_wait() {\n", + " // Implement a backoff loop that tries to ensure we do not load multiple\n", + " // versions of Bokeh and its dependencies at the same time.\n", + " // In recent versions we use the root._bokeh_is_initializing flag\n", + " // to determine whether there is an ongoing attempt to initialize\n", + " // bokeh, however for backward compatibility we also try to ensure\n", + " // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n", + " // before older versions are fully initialized.\n", + " if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n", + " root._bokeh_is_initializing = false;\n", + " root._bokeh_onload_callbacks = undefined;\n", + " console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n", + " load_or_wait();\n", + " } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n", + " setTimeout(load_or_wait, 100);\n", + " } else {\n", + " root._bokeh_is_initializing = true\n", + " root._bokeh_onload_callbacks = []\n", + " var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n", + " if (!reloading && !bokeh_loaded) {\n", + "\troot.Bokeh = undefined;\n", + " }\n", + " load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n", + "\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + "\trun_inline_js();\n", + " });\n", + " }\n", + " }\n", + " // Give older versions of the autoload script a head-start to ensure\n", + " // they initialize before we start loading newer version.\n", + " setTimeout(load_or_wait, 100)\n", + "}(window));" + ], + "application/vnd.holoviews_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n var py_version = '3.3.1'.replace('rc', '-rc.').replace('.dev', '-dev.');\n var reloading = false;\n var Bokeh = root.Bokeh;\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n run_callbacks();\n return null;\n }\n if (!reloading) {\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n require([\"jspanel\"], function(jsPanel) {\n\twindow.jsPanel = jsPanel\n\ton_load()\n })\n require([\"jspanel-modal\"], function() {\n\ton_load()\n })\n require([\"jspanel-tooltip\"], function() {\n\ton_load()\n })\n require([\"jspanel-hint\"], function() {\n\ton_load()\n })\n require([\"jspanel-layout\"], function() {\n\ton_load()\n })\n require([\"jspanel-contextmenu\"], function() {\n\ton_load()\n })\n require([\"jspanel-dock\"], function() {\n\ton_load()\n })\n require([\"gridstack\"], function(GridStack) {\n\twindow.GridStack = GridStack\n\ton_load()\n })\n require([\"notyf\"], function() {\n\ton_load()\n })\n root._bokeh_is_loading = css_urls.length + 9;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n var existing_stylesheets = []\n var links = document.getElementsByTagName('link')\n for (var i = 0; i < links.length; i++) {\n var link = links[i]\n if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n }\n }\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } var existing_scripts = []\n var scripts = document.getElementsByTagName('script')\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n\texisting_scripts.push(script.src)\n }\n }\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n var url = js_exports[name];\n if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.1.min.js\", \"https://cdn.holoviz.org/panel/1.3.2/dist/panel.min.js\"];\n var js_modules = [];\n var js_exports = {};\n var css_urls = [];\n var inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n\ttry {\n inline_js[i].call(root, root.Bokeh);\n\t} catch(e) {\n\t if (!reloading) {\n\t throw e;\n\t }\n\t}\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n if (!reloading && !bokeh_loaded) {\n\troot.Bokeh = undefined;\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n", + " window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n", + "}\n", + "\n", + "\n", + " function JupyterCommManager() {\n", + " }\n", + "\n", + " JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n", + " if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", + " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", + " comm_manager.register_target(comm_id, function(comm) {\n", + " comm.on_msg(msg_handler);\n", + " });\n", + " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", + " window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n", + " comm.onMsg = msg_handler;\n", + " });\n", + " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", + " google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n", + " var messages = comm.messages[Symbol.asyncIterator]();\n", + " function processIteratorResult(result) {\n", + " var message = result.value;\n", + " console.log(message)\n", + " var content = {data: message.data, comm_id};\n", + " var buffers = []\n", + " for (var buffer of message.buffers || []) {\n", + " buffers.push(new DataView(buffer))\n", + " }\n", + " var metadata = message.metadata || {};\n", + " var msg = {content, buffers, metadata}\n", + " msg_handler(msg);\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " return messages.next().then(processIteratorResult);\n", + " })\n", + " }\n", + " }\n", + "\n", + " JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n", + " if (comm_id in window.PyViz.comms) {\n", + " return window.PyViz.comms[comm_id];\n", + " } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", + " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", + " var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n", + " if (msg_handler) {\n", + " comm.on_msg(msg_handler);\n", + " }\n", + " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", + " var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n", + " comm.open();\n", + " if (msg_handler) {\n", + " comm.onMsg = msg_handler;\n", + " }\n", + " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", + " var comm_promise = google.colab.kernel.comms.open(comm_id)\n", + " comm_promise.then((comm) => {\n", + " window.PyViz.comms[comm_id] = comm;\n", + " if (msg_handler) {\n", + " var messages = comm.messages[Symbol.asyncIterator]();\n", + " function processIteratorResult(result) {\n", + " var message = result.value;\n", + " var content = {data: message.data};\n", + " var metadata = message.metadata || {comm_id};\n", + " var msg = {content, metadata}\n", + " msg_handler(msg);\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " }) \n", + " var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n", + " return comm_promise.then((comm) => {\n", + " comm.send(data, metadata, buffers, disposeOnDone);\n", + " });\n", + " };\n", + " var comm = {\n", + " send: sendClosure\n", + " };\n", + " }\n", + " window.PyViz.comms[comm_id] = comm;\n", + " return comm;\n", + " }\n", + " window.PyViz.comm_manager = new JupyterCommManager();\n", + " \n", + "\n", + "\n", + "var JS_MIME_TYPE = 'application/javascript';\n", + "var HTML_MIME_TYPE = 'text/html';\n", + "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n", + "var CLASS_NAME = 'output';\n", + "\n", + "/**\n", + " * Render data to the DOM node\n", + " */\n", + "function render(props, node) {\n", + " var div = document.createElement(\"div\");\n", + " var script = document.createElement(\"script\");\n", + " node.appendChild(div);\n", + " node.appendChild(script);\n", + "}\n", + "\n", + "/**\n", + " * Handle when a new output is added\n", + " */\n", + "function handle_add_output(event, handle) {\n", + " var output_area = handle.output_area;\n", + " var output = handle.output;\n", + " if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + " var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + " if (id !== undefined) {\n", + " var nchildren = toinsert.length;\n", + " var html_node = toinsert[nchildren-1].children[0];\n", + " html_node.innerHTML = output.data[HTML_MIME_TYPE];\n", + " var scripts = [];\n", + " var nodelist = html_node.querySelectorAll(\"script\");\n", + " for (var i in nodelist) {\n", + " if (nodelist.hasOwnProperty(i)) {\n", + " scripts.push(nodelist[i])\n", + " }\n", + " }\n", + "\n", + " scripts.forEach( function (oldScript) {\n", + " var newScript = document.createElement(\"script\");\n", + " var attrs = [];\n", + " var nodemap = oldScript.attributes;\n", + " for (var j in nodemap) {\n", + " if (nodemap.hasOwnProperty(j)) {\n", + " attrs.push(nodemap[j])\n", + " }\n", + " }\n", + " attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n", + " newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n", + " oldScript.parentNode.replaceChild(newScript, oldScript);\n", + " });\n", + " if (JS_MIME_TYPE in output.data) {\n", + " toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n", + " }\n", + " output_area._hv_plot_id = id;\n", + " if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n", + " window.PyViz.plot_index[id] = Bokeh.index[id];\n", + " } else {\n", + " window.PyViz.plot_index[id] = null;\n", + " }\n", + " } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " var bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " var script_attrs = bk_div.children[0].attributes;\n", + " for (var i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + "}\n", + "\n", + "/**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + "function handle_clear_output(event, handle) {\n", + " var id = handle.cell.output_area._hv_plot_id;\n", + " var server_id = handle.cell.output_area._bokeh_server_id;\n", + " if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n", + " var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n", + " if (server_id !== null) {\n", + " comm.send({event_type: 'server_delete', 'id': server_id});\n", + " return;\n", + " } else if (comm !== null) {\n", + " comm.send({event_type: 'delete', 'id': id});\n", + " }\n", + " delete PyViz.plot_index[id];\n", + " if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n", + " var doc = window.Bokeh.index[id].model.document\n", + " doc.clear();\n", + " const i = window.Bokeh.documents.indexOf(doc);\n", + " if (i > -1) {\n", + " window.Bokeh.documents.splice(i, 1);\n", + " }\n", + " }\n", + "}\n", + "\n", + "/**\n", + " * Handle kernel restart event\n", + " */\n", + "function handle_kernel_cleanup(event, handle) {\n", + " delete PyViz.comms[\"hv-extension-comm\"];\n", + " window.PyViz.plot_index = {}\n", + "}\n", + "\n", + "/**\n", + " * Handle update_display_data messages\n", + " */\n", + "function handle_update_output(event, handle) {\n", + " handle_clear_output(event, {cell: {output_area: handle.output_area}})\n", + " handle_add_output(event, handle)\n", + "}\n", + "\n", + "function register_renderer(events, OutputArea) {\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " var toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[0]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " events.on('output_added.OutputArea', handle_add_output);\n", + " events.on('output_updated.OutputArea', handle_update_output);\n", + " events.on('clear_output.CodeCell', handle_clear_output);\n", + " events.on('delete.Cell', handle_clear_output);\n", + " events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n", + "\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " safe: true,\n", + " index: 0\n", + " });\n", + "}\n", + "\n", + "if (window.Jupyter !== undefined) {\n", + " try {\n", + " var events = require('base/js/events');\n", + " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " } catch(err) {\n", + " }\n", + "}\n" + ], + "application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n console.log(message)\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n })\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n comm.open();\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n }) \n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\n \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "
\n", + "
\n", + "" + ] + }, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "p1002" + } + }, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "\n", + "import kpm_tools\n", + "from kpm_tools.hamiltonians import qhe_obc, params_qhe\n", + "from kpm_tools.kpm_funcs import chern_number\n", + "import kwant\n", + "\n", + "import holoviews as hv\n", + "hv.extension()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "a47f2464-296a-445d-bf26-ae2b59b29854", + "metadata": {}, + "outputs": [], + "source": [ + "size = 20\n", + "fsyst = qhe_obc(length=size, width=size)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "cdbbab76-66a2-4531-929c-945fb22d0219", + "metadata": {}, + "outputs": [], + "source": [ + "init_pos = [size/2, size/2]\n", + "center_sites = lambda s: np.linalg.norm(\n", + " np.array(s.pos) - init_pos) < 0.2\n", + "vector_factory = kwant.kpm.LocalVectors(fsyst, center_sites)\n", + "vectors = list(vector_factory)\n", + "\n", + "num_sites = len(fsyst.sites)\n", + "\n", + "kpm_params = {\n", + " \"bounds\": (-4, 4),\n", + " \"energy_resolution\": 0.02,\n", + " \"num_vectors\": None,\n", + " \"vector_factory\": vectors,\n", + "}\n", + "\n", + "cond = kwant.kpm.conductivity(\n", + " fsyst,\n", + " alpha='x',\n", + " beta='y',\n", + " params=params_qhe,\n", + " **kpm_params,\n", + ")\n", + "cond_xy = np.array([cond(mu=mu, temperature=0.) for mu in cond.energies])\n", + "\n", + "chern_f = chern_number(fsyst, params=params_qhe, **kpm_params)\n", + "chern_array = chern_f(cond.energies)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "29061326-08cf-4749-b455-165cf71ca559", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + ":Overlay\n", + " .Curve.Reverse_over_sigma_left_curly_bracket_xy_right_curly_bracket :Curve [$\\varepsilon$] ($\\sigma[e^2/h]$)\n", + " .Curve.C :Curve [$\\varepsilon$] ($\\sigma[e^2/h]$)" + ] + }, + "execution_count": 4, + "metadata": { + "application/vnd.holoviews_exec.v0+json": {} + }, + "output_type": "execute_result" + } + ], + "source": [ + "(\n", + " hv.Curve(\n", + " (cond.energies, cond_xy.real),\n", + " label=r'$\\sigma_{xy}$',\n", + " ).opts(show_grid=True) \n", + " *\n", + " hv.Curve(\n", + " (cond.energies, chern_array.real),\n", + " label=r'$C$',\n", + " ) \n", + ").redim(\n", + " x=r'$\\varepsilon$',\n", + " y=r'$\\sigma[e^2/h]$').relabel(\n", + " group='Conductivity of a QHE sample, $\\phi=\\phi_0/7$',\n", + ").opts(\n", + " show_legend=True,\n", + " fig_size=200,\n", + ")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "kt", + "language": "python", + "name": "kt" + }, + "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.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/tutorials/tutorial_operators_and_functions.ipynb b/docs/tutorials/tutorial_operators_and_functions.ipynb new file mode 100644 index 0000000..541ac1c --- /dev/null +++ b/docs/tutorials/tutorial_operators_and_functions.ipynb @@ -0,0 +1,1032 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "96fbb9c9-15da-416e-82c8-b70bde2e3eea", + "metadata": {}, + "source": [ + "# Tutorial Operators and Functions\n", + "\n", + "## General expansions\n", + "Any operator can be expanded with the Kernel Polynomial Method (KPM).\n", + "The only requirement is to define the coefficients for every KPM moment.\n", + "\n", + "In `kpm_tools` we have implemented `kpm_tools.kpm_generator.GeneralVectorExpansion` to handle all possible operator expansions using the KPM.\n", + "\n", + "We refer with 'functions' to the expectation values of these operators, which can be obtained with `kpm_tools.kpm_generator.general_function`.\n", + "\n", + "## Included expansions\n", + "\n", + "The coefficient functions of typical operators are included in `kpm_tools.kpm_funcs`:\n", + "* `kpm_tools.kpm_funcs.coef_greens_function_r`\n", + "* `kpm_tools.kpm_funcs.coef_delta_function`\n", + "* `kpm_tools.kpm_funcs.coef_projector_function`\n", + "\n", + "There are a few extra pre-defined coefficient functions for the projector over the unnocupied states, the advanced Green's functions, and the derivatives of the retarded and advanced Green's functions.\n", + "\n", + "These coefficients can be used to define operators or functions. The out-of-the-box included functions are\n", + "* `kpm_tools.kpm_funcs.greens_functions`\n", + "* `kpm_tools.kpm_funcs.delta_function`\n", + "* `kpm_tools.kpm_funcs.projector_operator`\n", + "\n", + "## Creating a custom expansion\n", + "\n", + "For any new or custom operator $O$, we can find the coefficients by solving the integral\n", + "$$\n", + "c_m(e_F) = \\int O(e_F, e) T_m(e)\\mathrm{d}{e}\n", + "$$\n", + "and defining a function with signature\n", + "```\n", + "def my_coef_function(m, e, ab=(1, 0)):\n", + " \"\"\"Return the coefficients for my operator.\n", + "\n", + " Parameters\n", + " ----------\n", + " m: int\n", + " Order of the Chebyshev moment.\n", + " e: float or ndarray\n", + " Fermi energy or array of energies in the same units as the Hamiltonian.\n", + " ab: tuple[float, float]\n", + " Width and center of the spectrum. The bounds defined as `(b-a, b+a)`\n", + " must fully contain the spectrum.\n", + "\n", + " Returns\n", + " -------\n", + " coef: ndarray\n", + " Coefficients of the Chebyshev expansio. Must have the same shape as `e`.\n", + " \"\"\"\n", + " ...\n", + " return coef\n", + "\n", + "```\n", + "\n", + "Once defined, the coefficients can be passed to `kpm_tools.kpm_generator.GeneralVectorExpansion`or `kpm_tools.kpm_generator.general_function` to define the Operator expansion or the expectation value function." + ] + }, + { + "cell_type": "markdown", + "id": "7468b680-8941-48fc-b1bb-638720ddf2c4", + "metadata": {}, + "source": [ + "We can demonstrate the application of the projector operator by defining a simple system, a set of initial random states, and those states but projected using our operator.\n", + "\n", + "Then, the spectral density computed with each set of vectors can show the spectral components of the initial and projected vectors." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "374ecb19-3b2a-4513-9aab-f328ff468229", + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " var force = true;\n", + " var py_version = '3.3.1'.replace('rc', '-rc.').replace('.dev', '-dev.');\n", + " var reloading = false;\n", + " var Bokeh = root.Bokeh;\n", + "\n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks;\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + " if (js_modules == null) js_modules = [];\n", + " if (js_exports == null) js_exports = {};\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + "\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " if (!reloading) {\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " }\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + " window._bokeh_on_load = on_load\n", + "\n", + " function on_error() {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " var skip = [];\n", + " if (window.requirejs) {\n", + " window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n", + " require([\"jspanel\"], function(jsPanel) {\n", + "\twindow.jsPanel = jsPanel\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-modal\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-tooltip\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-hint\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-layout\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-contextmenu\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-dock\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"gridstack\"], function(GridStack) {\n", + "\twindow.GridStack = GridStack\n", + "\ton_load()\n", + " })\n", + " require([\"notyf\"], function() {\n", + "\ton_load()\n", + " })\n", + " root._bokeh_is_loading = css_urls.length + 9;\n", + " } else {\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n", + " }\n", + "\n", + " var existing_stylesheets = []\n", + " var links = document.getElementsByTagName('link')\n", + " for (var i = 0; i < links.length; i++) {\n", + " var link = links[i]\n", + " if (link.href != null) {\n", + "\texisting_stylesheets.push(link.href)\n", + " }\n", + " }\n", + " for (var i = 0; i < css_urls.length; i++) {\n", + " var url = css_urls[i];\n", + " if (existing_stylesheets.indexOf(url) !== -1) {\n", + "\ton_load()\n", + "\tcontinue;\n", + " }\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } var existing_scripts = []\n", + " var scripts = document.getElementsByTagName('script')\n", + " for (var i = 0; i < scripts.length; i++) {\n", + " var script = scripts[i]\n", + " if (script.src != null) {\n", + "\texisting_scripts.push(script.src)\n", + " }\n", + " }\n", + " for (var i = 0; i < js_urls.length; i++) {\n", + " var url = js_urls[i];\n", + " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " for (var i = 0; i < js_modules.length; i++) {\n", + " var url = js_modules[i];\n", + " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " element.type = \"module\";\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " for (const name in js_exports) {\n", + " var url = js_exports[name];\n", + " if (skip.indexOf(url) >= 0 || root[name] != null) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.type = \"module\";\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " element.textContent = `\n", + " import ${name} from \"${url}\"\n", + " window.${name} = ${name}\n", + " window._bokeh_on_load()\n", + " `\n", + " document.head.appendChild(element);\n", + " }\n", + " if (!js_urls.length && !js_modules.length) {\n", + " on_load()\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.1.min.js\", \"https://cdn.holoviz.org/panel/1.3.2/dist/panel.min.js\"];\n", + " var js_modules = [];\n", + " var js_exports = {};\n", + " var css_urls = [];\n", + " var inline_js = [ function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + "function(Bokeh) {} // ensure no trailing comma for IE\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " if ((root.Bokeh !== undefined) || (force === true)) {\n", + " for (var i = 0; i < inline_js.length; i++) {\n", + "\ttry {\n", + " inline_js[i].call(root, root.Bokeh);\n", + "\t} catch(e) {\n", + "\t if (!reloading) {\n", + "\t throw e;\n", + "\t }\n", + "\t}\n", + " }\n", + " // Cache old bokeh versions\n", + " if (Bokeh != undefined && !reloading) {\n", + "\tvar NewBokeh = root.Bokeh;\n", + "\tif (Bokeh.versions === undefined) {\n", + "\t Bokeh.versions = new Map();\n", + "\t}\n", + "\tif (NewBokeh.version !== Bokeh.version) {\n", + "\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n", + "\t}\n", + "\troot.Bokeh = Bokeh;\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " }\n", + " root._bokeh_is_initializing = false\n", + " }\n", + "\n", + " function load_or_wait() {\n", + " // Implement a backoff loop that tries to ensure we do not load multiple\n", + " // versions of Bokeh and its dependencies at the same time.\n", + " // In recent versions we use the root._bokeh_is_initializing flag\n", + " // to determine whether there is an ongoing attempt to initialize\n", + " // bokeh, however for backward compatibility we also try to ensure\n", + " // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n", + " // before older versions are fully initialized.\n", + " if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n", + " root._bokeh_is_initializing = false;\n", + " root._bokeh_onload_callbacks = undefined;\n", + " console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n", + " load_or_wait();\n", + " } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n", + " setTimeout(load_or_wait, 100);\n", + " } else {\n", + " root._bokeh_is_initializing = true\n", + " root._bokeh_onload_callbacks = []\n", + " var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n", + " if (!reloading && !bokeh_loaded) {\n", + "\troot.Bokeh = undefined;\n", + " }\n", + " load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n", + "\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + "\trun_inline_js();\n", + " });\n", + " }\n", + " }\n", + " // Give older versions of the autoload script a head-start to ensure\n", + " // they initialize before we start loading newer version.\n", + " setTimeout(load_or_wait, 100)\n", + "}(window));" + ], + "application/vnd.holoviews_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n var py_version = '3.3.1'.replace('rc', '-rc.').replace('.dev', '-dev.');\n var reloading = false;\n var Bokeh = root.Bokeh;\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n run_callbacks();\n return null;\n }\n if (!reloading) {\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n require([\"jspanel\"], function(jsPanel) {\n\twindow.jsPanel = jsPanel\n\ton_load()\n })\n require([\"jspanel-modal\"], function() {\n\ton_load()\n })\n require([\"jspanel-tooltip\"], function() {\n\ton_load()\n })\n require([\"jspanel-hint\"], function() {\n\ton_load()\n })\n require([\"jspanel-layout\"], function() {\n\ton_load()\n })\n require([\"jspanel-contextmenu\"], function() {\n\ton_load()\n })\n require([\"jspanel-dock\"], function() {\n\ton_load()\n })\n require([\"gridstack\"], function(GridStack) {\n\twindow.GridStack = GridStack\n\ton_load()\n })\n require([\"notyf\"], function() {\n\ton_load()\n })\n root._bokeh_is_loading = css_urls.length + 9;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n var existing_stylesheets = []\n var links = document.getElementsByTagName('link')\n for (var i = 0; i < links.length; i++) {\n var link = links[i]\n if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n }\n }\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } var existing_scripts = []\n var scripts = document.getElementsByTagName('script')\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n\texisting_scripts.push(script.src)\n }\n }\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n var url = js_exports[name];\n if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.1.min.js\", \"https://cdn.holoviz.org/panel/1.3.2/dist/panel.min.js\"];\n var js_modules = [];\n var js_exports = {};\n var css_urls = [];\n var inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n\ttry {\n inline_js[i].call(root, root.Bokeh);\n\t} catch(e) {\n\t if (!reloading) {\n\t throw e;\n\t }\n\t}\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n if (!reloading && !bokeh_loaded) {\n\troot.Bokeh = undefined;\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n", + " window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n", + "}\n", + "\n", + "\n", + " function JupyterCommManager() {\n", + " }\n", + "\n", + " JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n", + " if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", + " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", + " comm_manager.register_target(comm_id, function(comm) {\n", + " comm.on_msg(msg_handler);\n", + " });\n", + " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", + " window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n", + " comm.onMsg = msg_handler;\n", + " });\n", + " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", + " google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n", + " var messages = comm.messages[Symbol.asyncIterator]();\n", + " function processIteratorResult(result) {\n", + " var message = result.value;\n", + " console.log(message)\n", + " var content = {data: message.data, comm_id};\n", + " var buffers = []\n", + " for (var buffer of message.buffers || []) {\n", + " buffers.push(new DataView(buffer))\n", + " }\n", + " var metadata = message.metadata || {};\n", + " var msg = {content, buffers, metadata}\n", + " msg_handler(msg);\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " return messages.next().then(processIteratorResult);\n", + " })\n", + " }\n", + " }\n", + "\n", + " JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n", + " if (comm_id in window.PyViz.comms) {\n", + " return window.PyViz.comms[comm_id];\n", + " } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", + " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", + " var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n", + " if (msg_handler) {\n", + " comm.on_msg(msg_handler);\n", + " }\n", + " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", + " var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n", + " comm.open();\n", + " if (msg_handler) {\n", + " comm.onMsg = msg_handler;\n", + " }\n", + " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", + " var comm_promise = google.colab.kernel.comms.open(comm_id)\n", + " comm_promise.then((comm) => {\n", + " window.PyViz.comms[comm_id] = comm;\n", + " if (msg_handler) {\n", + " var messages = comm.messages[Symbol.asyncIterator]();\n", + " function processIteratorResult(result) {\n", + " var message = result.value;\n", + " var content = {data: message.data};\n", + " var metadata = message.metadata || {comm_id};\n", + " var msg = {content, metadata}\n", + " msg_handler(msg);\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " }) \n", + " var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n", + " return comm_promise.then((comm) => {\n", + " comm.send(data, metadata, buffers, disposeOnDone);\n", + " });\n", + " };\n", + " var comm = {\n", + " send: sendClosure\n", + " };\n", + " }\n", + " window.PyViz.comms[comm_id] = comm;\n", + " return comm;\n", + " }\n", + " window.PyViz.comm_manager = new JupyterCommManager();\n", + " \n", + "\n", + "\n", + "var JS_MIME_TYPE = 'application/javascript';\n", + "var HTML_MIME_TYPE = 'text/html';\n", + "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n", + "var CLASS_NAME = 'output';\n", + "\n", + "/**\n", + " * Render data to the DOM node\n", + " */\n", + "function render(props, node) {\n", + " var div = document.createElement(\"div\");\n", + " var script = document.createElement(\"script\");\n", + " node.appendChild(div);\n", + " node.appendChild(script);\n", + "}\n", + "\n", + "/**\n", + " * Handle when a new output is added\n", + " */\n", + "function handle_add_output(event, handle) {\n", + " var output_area = handle.output_area;\n", + " var output = handle.output;\n", + " if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + " var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + " if (id !== undefined) {\n", + " var nchildren = toinsert.length;\n", + " var html_node = toinsert[nchildren-1].children[0];\n", + " html_node.innerHTML = output.data[HTML_MIME_TYPE];\n", + " var scripts = [];\n", + " var nodelist = html_node.querySelectorAll(\"script\");\n", + " for (var i in nodelist) {\n", + " if (nodelist.hasOwnProperty(i)) {\n", + " scripts.push(nodelist[i])\n", + " }\n", + " }\n", + "\n", + " scripts.forEach( function (oldScript) {\n", + " var newScript = document.createElement(\"script\");\n", + " var attrs = [];\n", + " var nodemap = oldScript.attributes;\n", + " for (var j in nodemap) {\n", + " if (nodemap.hasOwnProperty(j)) {\n", + " attrs.push(nodemap[j])\n", + " }\n", + " }\n", + " attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n", + " newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n", + " oldScript.parentNode.replaceChild(newScript, oldScript);\n", + " });\n", + " if (JS_MIME_TYPE in output.data) {\n", + " toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n", + " }\n", + " output_area._hv_plot_id = id;\n", + " if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n", + " window.PyViz.plot_index[id] = Bokeh.index[id];\n", + " } else {\n", + " window.PyViz.plot_index[id] = null;\n", + " }\n", + " } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " var bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " var script_attrs = bk_div.children[0].attributes;\n", + " for (var i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + "}\n", + "\n", + "/**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + "function handle_clear_output(event, handle) {\n", + " var id = handle.cell.output_area._hv_plot_id;\n", + " var server_id = handle.cell.output_area._bokeh_server_id;\n", + " if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n", + " var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n", + " if (server_id !== null) {\n", + " comm.send({event_type: 'server_delete', 'id': server_id});\n", + " return;\n", + " } else if (comm !== null) {\n", + " comm.send({event_type: 'delete', 'id': id});\n", + " }\n", + " delete PyViz.plot_index[id];\n", + " if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n", + " var doc = window.Bokeh.index[id].model.document\n", + " doc.clear();\n", + " const i = window.Bokeh.documents.indexOf(doc);\n", + " if (i > -1) {\n", + " window.Bokeh.documents.splice(i, 1);\n", + " }\n", + " }\n", + "}\n", + "\n", + "/**\n", + " * Handle kernel restart event\n", + " */\n", + "function handle_kernel_cleanup(event, handle) {\n", + " delete PyViz.comms[\"hv-extension-comm\"];\n", + " window.PyViz.plot_index = {}\n", + "}\n", + "\n", + "/**\n", + " * Handle update_display_data messages\n", + " */\n", + "function handle_update_output(event, handle) {\n", + " handle_clear_output(event, {cell: {output_area: handle.output_area}})\n", + " handle_add_output(event, handle)\n", + "}\n", + "\n", + "function register_renderer(events, OutputArea) {\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " var toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[0]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " events.on('output_added.OutputArea', handle_add_output);\n", + " events.on('output_updated.OutputArea', handle_update_output);\n", + " events.on('clear_output.CodeCell', handle_clear_output);\n", + " events.on('delete.Cell', handle_clear_output);\n", + " events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n", + "\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " safe: true,\n", + " index: 0\n", + " });\n", + "}\n", + "\n", + "if (window.Jupyter !== undefined) {\n", + " try {\n", + " var events = require('base/js/events');\n", + " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " } catch(err) {\n", + " }\n", + "}\n" + ], + "application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n console.log(message)\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n })\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n comm.open();\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n }) \n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\n \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "
\n", + "
\n", + "" + ] + }, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "p1002" + } + }, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import holoviews as hv\n", + "hv.extension()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "df712e27-3f0c-4016-bb58-9a21ef97dea6", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot, matplotlib.backends\n", + "import kwant\n", + "import kpm_tools" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "30932c78-94e4-4834-bb26-ba6a5123561d", + "metadata": {}, + "outputs": [], + "source": [ + "system_size = 20\n", + "_, fsyst = kpm_tools.hamiltonians.haldane_obc(\n", + " trans_symm=((system_size, 0), (0, system_size)), \n", + " e_0=0,\n", + " t=1,\n", + " t2=0,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "d1ea1feb-4e4c-43b9-bbc9-9367c295656e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAFUCAYAAAAH7mfYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOyddVxU29/9F2lTMopKo2IhKordit3drdiKrdjdHde6drdid7cYiKAIghJDN5Pr98c4hxlKfJ57v/c+39+8Xy/+mFjMOXv2nLPP2Z+9lh5JQocOHTp06NCh41+M/j+9ATp06NChQ4cOHb9CN2DRoUOHDh06dPzr0Q1YdOjQoUOHDh3/enQDFh06dOjQoUPHvx7dgEWHDh06dOjQ8a9HN2DRoUOHDh06dPzr0Q1YdOjQoUOHDh3/enQDFh06dOjQoUPHvx7Df3oD/gqUSiXCw8NRrFgx6Onp/dObo0OHDh06dOjIBySRnJyM0qVLQ18/73so/xUDlvDwcNjY2PzTm6FDhw4dOnTo+B8QFhYGa2vrPN/zXzFgKVasGADVDpuYmPzDW6NDhw4dOnToyA9JSUmwsbERzuN58dsDlvv372P16tV49eoVIiIicPbsWXTu3Fl4PbcpmVWrVmHatGk5vrZgwQIsXLhQ6zlnZ2d8+vQpX9uk/kwTExPdgEWHDh06dOj4P0Z+yjl+u+g2NTUVrq6u2Lp1a46vR0REaP3t3bsXenp66NatW57/t3Llylq6hw8f/u6m6dChQ4cOHTr+S/ntOyxt2rRBmzZtcn3dyspK6/H58+fRtGlTODo65r0hhobZtDp06NChQ4cOHcDfvKw5KioKPj4+GDZs2C/f+/nzZ5QuXRqOjo7o168fQkNDc32vRCJBUlKS1p8OHTp06NCh47+Xv3XAsn//fhQrVgxdu3bN8321a9fGvn37cPXqVWzfvh3BwcFo2LAhkpOTc3z/8uXLYWpqKvzpVgjp0KFDhw4d/93okeT/WKynl63oVpMKFSqgZcuW2Lx582/934SEBNjZ2WHdunU53p2RSCSQSCTCY3WVcWJioq7oVocOHTp06Pg/QlJSEkxNTfN1/v7bljU/ePAAAQEBOH78+G9rzczMUL58eXz58iXH1wsUKIACBQr8bzdRhw4dOnTo0PF/hL9tSmjPnj1wc3ODq6vrb2tTUlIQFBSEUqVK/Q1bpkOHDh06dOj4v8ZvD1hSUlLg6+sLX19fAEBwcDB8fX21imSTkpJw8uRJDB8+PMf/0bx5c2zZskV4PHXqVNy7dw8hISF4/PgxunTpAgMDA/Tp0+d3N0+HDh06dOjQ8V/Ibw9YXr58ierVq6N69eoAAC8vL1SvXh3z5s0T3nPs2DGQzHXAERQUhJiYGOHx9+/f0adPHzg7O6Nnz54oXrw4nj59CpFI9Lubp0PHv5/YIGB3C2B1OeDSZECp+D19yENgSy1gbQXg0cbf/3zfI8D6KsBGV8D/4u/rby0G1jgD2+sD4W9+TyvLAM6MBFaXBfa1BxJ//J4+OQo40EmlPzkEkKb9nj7yA7CjIbCmPHB97u9pASDwOrCpOrCuMvBq3+/rn/0BrK0IbHYDgu78nlapBC5PV/WbnU2B6IDf02ckAcf7q9ruUHcgNfb39PHfgL2tVZ9/fiygkP2ePuw5sLWOqt/eW/17WgB4fwrY4KL6+3D69/X3Vqs+e2sdIOzF72kVMtU+ry6naoP4b7+nT40FDnVTtf3x/oAk5wUluRIdAOxsovr8KzNUfeF3CLqj6nPrKgHPdv6eFgBe/qnq85uqq34D/xD/q6Lbfwu/U7SjQ8c/zs6mQPjrzMetVwJ1PPOnlWUAa8sDGYmZzw26BDg0zJ8+OhDYVhvgzwOeQQFg0jugWD49kD6eB04MzHxcrDQwxT9/WgC4swy4tzLzcdkWQP/fOPkc6wd8upT5uP5EoOWi/Os3VgPigzMfd90FVO2ZP21qLLC+MiBP//mEHuD5ALByyZ8+7AWwp0XmY+NiqrYr8GtLcgCqAdLFiZmPS1QGxjzOnxYALk8DnmucrFx6At125V//Z1vg26PMxy0WAA0m50+rVABrygFpGoOkfqeAci3zp48PUZ1wlXLVY30jYPwrwNwuf/rA68CRHpmPC1sCUwMBfYP86R+sA25puLHbNQCG+ORPCwCnhwPvT2Y+dh8FtF2Vf/22uoD4Y+bjDpsAt0H502YkAesqAtKUzOeG3wKsa+ZPH/EW+KMxgJ9DBaPCwGQ/oLBF/vS/4HfO37oBiw4d/2lW2gPp8cLDne8M4P0wf/XvJQsT7wdLtZ6bdMcQR/zzd+BtaqPE8Q7aV8Yep4zgK87fzdZx1eSYV0/7jpDNH8aQKPKXkr61uQw9nDOvDoMS9FD3iHG+tABwp6cUlS0zD1kXg/Qx7JpRvrR6IMI9pTDQ2NWVzw2w9mX+2r6ihRL3emu33eArhrgcnL+271pOgR0t5VrPuR8yRkhS/trOu44cE2pktn2qDHDYlf/FB0faydDCLrPtX0bqoe2Z/Le970AJShfNfHzATx9T7+Wv7U0LEJ+HaffbmfcNsfdD/tqubmklznfWbvuOZ43wNCJ//XaYiwLLG2q3fbk9xkiU5K/t1zSWYWDlzLb7kQJUP5D/tr/cVYqaVpn99sY3ffTzyV/bAUDICAkKa7x942sDLH2av37rYEI866/d9p43DHHmc/7avq2DAvvaaLcdRj8BSlbKl/5X6AYsOnT8i1GcHgWD98cAAEoC+gPPAU5N8ydWKiHd3gjG0e8BADL9gjAa9xSwcMifPi0Okg01UECqGjBJipRBgYkvAOMi+dNHvod8RxMYQnUAk9k2hNHQS78QafDhDHBqiPCQdcZBr/XSfMt5azH0HqzJfKLzDqBa/mvdZAe7wyjoBgBAAX0YDL8JWLvlU5wByebaKJAUAgCQGprAeOJLoFjJ/OkTv0O6qRaMFappLKm5M4zHPQYM8rlY89tjKP9sC/2fV7ryip1h2Gt//rQA8GIP4OMlPGSzudBrNDXfcuXFSdB/9WfmE32OAc65u55nRfpHcxhHvAQAyPSMYTTmESAqnz9xRiIkG9xQICMaACApVAIFJr4CCubzeB8dANm2BjCi6sQtK1UTRqNu5XvbEXAFONpbeKh0Gwr9DuvzLef9NdC7vTjzifbrgZpD862XHxsIw0/nVZ8NPegPuQzY1cufWCGDZEs9FIgPBABIDQrDeMILwDTvZGSB5ChIN7rBWP5zGsvSWXVn0fCvWan7O+fvv9U4TocOHdnZEOSAk0nVsPudPgbdKIpgffv8i/X1Mf65NV4UaoI/fPXQ+UJBpBXM5wkTgKKAKbr5FMV3607Y+BLod6s4aFQ43/o44zLodrEAUir1xaKHCsx5n8+B0k985Y4Yc98MihpDMOm6DPvC847syMrRSEdsCXHC3vf6mPzEAs+lTr+lX+hnj2tyd+x+p4+ePoUgNv4N00mjghhyrwQ+WrTCtjdAF58ikBcqnm+5pKAInc4XQrRTd6x5Rox6Uir/gxUAYfo26HulMDKqDoD3XQVWBvxe299LK4vZr0pA6TYUI32kuBBf7rf020MccTimCva+18ewW8UQgN/77qa8tsUjo4bY+VYPXS4UQFKB/EexKI2LoedVUwSXao/NL4FeV83A/E6lAUgqUApdLhRAYoXeWPZYiam+9r+17f5Kewy7bQJZ9cGYelOOP0J/r9+di3XCmkA77H2vj1kvS+B+Wtnf0q/4ZIeL6W7Y/U4ffS4Xxg/DfE6FAYCBEUY9LoW3Ji2w440eulwsDEnB/NeHygpaoPPFwoi074pNrw2AwT5/2WDlt+F/AYmJiQTAxMTEf3pTdOjIk8jISNrY2FAsFlMkEnHPnj3s1q1bvvVPnjxhlSpVKJPJKBKJOHHiRC5YsCDf+p07d7JHjx4kSUtLSzZt2pRnzpzJt378+PFcvHixoHd0dKS/v3++tEqlko0bN+b58+dJkhYWFrSzs8v37zYlJYUODg789OkTRSIRr169yjp16lCpVOZL/+XLF9rZ2TEpKYkikYirVq3iiBEj8qUlycuXL7N+/fpUKpUUiUQcMGAAN2/enG/9ihUrOGrUKJKqtqtevTrv3r2bb33fvn25detWkmTx4sVpY2PDsLCwfGnlcjmrVavG+/fvkyTNzc1Zvnx5ZmRk5EsfExNDGxsbfv/+nSKRiEeOHGHbtm3zve2vX78WPk8kEnHmzJmcMWNGvvUHDx5k+/btSZIikYht27bl4cOH862fPn06Z8+eTVLV9uXLl6evr2++9a1bt+axY8dIqvqtjY0NY2Nj86VNT09nuXLl+PbtW4pEIt69e5fVq1enXC7Plz40NJQ2NjaMi4ujSCTi5s2b2b9//3xv+507d+jm5kaFQkGRSMSRI0dy1apV+dZv3LiRAwcOJKlq+7+a3zl/6wYsOnT8Bxk2bBjXrVtHUvXjVygUdHNz4507d36pVSgUdHd3540bNwR9XFwcbW1tGRoa+kt9QkICbW1tGRwcLOjfvn3LcuXKMT09/Zd6Pz8/li1blmlpaYL+2LFjbNOmzS+1JHnq1Cm2bNlSGGCIRCLOnj2b06dPz5d+3rx59PLyErQk2b59ex46dChf+s6dO3Pfvn2CPiMjg87Oznzz5s0vtVKplBUrVuTLly8F/ffv32lra8uYmJhf6iMiIoSBqlp///59VqtWLV8nrkePHtHFxYUymUzQb926lf369fulliT/+OMP9urVS3gsEono6enJlStX5ks/btw4Ll26VNAqlUrWr1+fly9f/qVWqVSyUaNGvHDhgqBPSkqivb09v3z58kt9cnIyHRwcGBAQIOg/ffpEBwcHpqSk/FL/+fNn2tvbMzk5WdCfP3+eTZo0yddg18fHhw0aNNDqt4sXL+b48eN/qSXJ5cuXc/To0YKWJHv06MFdu3blS9+nTx9u375d0MtkMlapUoVPnjz5pVYul9PV1ZUPHz4U9GKxmDY2NoyMjPylPjo6mjY2Nvzx44fW9v+V6AYsOnT8C3n58iUrVqxIiURCMvPH//DhQ7q6uv7yxLV//3526tRJeKzWb9++nX369Pnl50+ZMoVz587Nph89ejSXL1+ep1apVLJly5Y8efKkll6pVLJBgwb08fHJU5+WlsayZcvyw4cPWvrk5GTa29vz8+fPeepDQkJoa2vL+Ph4rW0PCAigg4ODcDLKjRs3brBWrVpUKBRa+gsXLrBRo0a/PHGtX7+eQ4cO1dp2kly6dCnHjRuXp5YkhwwZwvXr12fT9+rVi3/88UeeWoVCwZo1a/LmzZtaeplMRhcXFz569ChPfXx8PG1tbfnt2zctvfrEFRERkaf+/fv3LFu2rDCoVW+7uj9LpdI89SdOnKCHh4fWCZ8k9+3bx86dO+epJUlvb29OnTpVa9tJ0svLi/PmzfulvlOnTjxw4ICWXt2fT506ladWIpGwQoUKfPXqlZY+LS2NTk5OWv05J378+EEbGxtGR0drbXtwcDBtbW2ZkJCQp/7Bgwdaxwa1/saNG3R3dxf6c27s2LFD69ig1q9bt47Dhg3LU0uSY8aM4bJly7Lp/0p0AxYdOv5l5HRFqvnj79OnD3fs2JGrXn1FqnliV+vVV1EPHjzIVZ/TFalan/UqKicuXLjAxo0ba53Y1fpXr16xQoUKwkAsJ5YsWZLtilStP3DggNZALCd69uzJnTt3ZtOS5NSpU+nt7Z2rVn1F+vjx42x6pVJJDw8PnjhxIld9Tid2tT49PZ1ly5bl+/fvc9U/f/4824ldrf/27ZvWQCwn/vzzT3bp0kXrObX+5s2brFmzZp4nLi8vL86fPz9H/YYNGzhkyJBctUqlks2bN+fp06ezaUly6NChWgOxrKhP7H5+ftn0CoWCtWrVEu4Y5kRwcDDt7Oy0TuxqvXogFhISkqv++vXrrF27tlb7qPUfPnzQumOYE2vXruXw4cO1nlPrT548qXXHMCcGDRrEjRs3ZtOS5Ny5czllypRcteq7r7dv385R36lTJ+7fvz9XfU53X9V6iUSidccwJ969e5ft7qtuwPIXoBuw6Pi3c/ToUWHqJCY5gxOOvqb14A3ccVd1Szw0NJS2traMi4vLUT9r1ixhzv9zVBIH731G60HreOltOEny9u3bwjx1TrRr106YOnn4OZq9/nhM6/4r+eqb6vM2btzIQYMG5ajNOnVy/Hkou217xDK9FzI0NpWkaqpr7dq1Oeq/f/8uzPkrFEquvR7AzlsfskyX6UxMlwpTXdevX89Rf+/ePWHqJCVDxpmn39F6yAauvOJPuUKZbaorK1u2bBGmTsIT0uh58CWtB6/nwSeqE52fnx+dnJxyPXGNGjVKmDp5/z2B/Xc/pfXANbz9KYqkaqqrefPmOZ64lEol69atyytXrpAkr32IYI/tj2ndbxn9I1THq3nz5nHy5Mk5fnZiYiLt7OwYFBREktz94Cu7bH3IMj3mMipJdSLp3Lkz//zzzxz1nz59oqOjI1NTUymVK7jU5yM7b33I0h0mM10qp1QqZaVKlfj8+fMc9efOnROmTuJTJZx8/A2tB2/g5luBVCqV2aa6srJo0SJOmDCBJPk1OoXD9j2n9aB1PPNaVXvz+PFjoSYrJ7p37y5MnTwNimGfnU9oPWAVn31V1Y/s3LmTPXv2zFGrHqg+ffqUJHnmdRi7b3/EMn0WMzhaNXAfN24clyxZkqM+KipKmDpRKpXcfCtQ1fZdZzE+VZJtqisrz549Y6VKlSiVSpkmkdP77HtaD9nApT4fKZUrtGqycmLPnj3s2rWralsS0znm8CtaD97APQ++ksyc6kpKSspRP2nSJKG+7WN4IgfueUbrgWt43U81FeTj4yPUZGVFqVRq1bfd/hTFnjse07rfCr7/nvddod9FN2DRoeNfRGpqqlZxar9dT2k345Lwd+ql6uC9YMECTpo0KZs+KChIKBaVyhWss+ymoHWYeYnvwlQHkK5du3LPnj3Z9FeuXGHdunWpVCoZFpdKZ+/Lgt5l/lXGpUgolUpZuXJlPnv2LJt+1apVHDlyJEnyQWC01ra3WKsqGlUXE0dFRWXT9+/fn1u2bCFJ7rofpKUfd+Q1Se1iYk3kcrlWceqUE75a+i23VXecdu3axe7du2f77NjYWK3i1Hab7mvpb35UHbwnTJjARYsWZdP7+voKxaJJ6VJWW3hN0Jabc5lfo1OoVCrZpEkTnjt3Lpv+8OHDbNeuHUnSPyKRTrN8BH3NJTeYLpULJ66cipdnzJjBmTNnkiQvvv2hte09tqvuGGkWE2elbdu2PHLkCEly9dVPWnrvs6q7QleuXGG9evWynbgyMjK0ilOH7XuupT/0VDXgW7lypVBMrElYWJgwCFcqlWy48ragtZ95iS+CVYOOfv36Cf1DE83i1KjEdFaae0XQV5p7hVFJ6UL/uHfvXjb95s2bOWDAAJLk8+BY2s/M3PaGK29TqVQK/eP79+/Z9CNGjODq1atJkgeehGjt+/D9L0iSb968obOzc7biZaVSyTp16vDq1askyTln32np115TDVIOHTok9A9Nsg5Uu217pKVXX6jMmDGDs2bNyqb39/cXBqppEjlrLrkhaJ1m+fBThKqvtGnThkePHs2mP3PmDJs1a0alUskgcTLLzc48ZlRfdJ1J6XlPA/4Ov3P+1vmw6NDxN7Nw4UIkJiZi3bp1AICqC64iKSPTAEzmdwOyZ0dAEnFxcTA1NYWhYeZy18TERBQoUAAFCxaEXmEzFOqt7f8gebAXis8PoFAokJCQAHNzc+jrqxwLSCI+Ph7FihWDkZER9K1dUNDDS0ufcWERlDHBkEqlSE1NhZmZGfT0VIZaSqUS8fHxwv80dGkD41razrBp+0cACjnS0tKgUChQrFjmclOZTIbk5GSYm5tDT08Pxo1GwLBspn+EMjESGadnAVD9jo2MjFCoUCHh9fT0dMhkMuF3XbDzIuhbZC5Flge/gPTONpBEQkICihQpAmPjTDO0lJQU6OnpoUiRIgD0UGjIbujpZbo5SF+fg9z3vLCfZmZmMDAwENouMTERhQoVQoECBaBnbo1CXTS8NABIbm2G4ttryOVyJCUlCfup1mt+nwaOdVCgySgtffrJ6WByNDIyMiCRSGBqaiq8lvX7NKzZHcZV2wmvUyZB+kFPYT8BoGjRTGc3iUSCtLQ04fs0bjkZhjZVM/+/OAiSS0sAaPcx4XvN8n0W7LUO+kXMM9s+4C6kj/YLfczExESr32p9n8ZFULh/Zn4cAEifHILc/1au/Vbz+9S3ckbBtjO19Bk+y6GMCsyz36q/T4OKzVGgbn8tfdqhsYA0LVsfA5Dt+zSqPxhGzo2F15Upscg4ofKwSU5OhoGBAQoXzrQHyPp9FmjvDYMSmUuhFWFvIbmxIZ/9Fig08A/oGWa+LnvnA9nLUzn226zfp55JSRTqvkJr3yV3/4Di61PI5XIkJibCwsJCq99qfp8Gdm4o0Hyclv7apEZwtsr/svK80Pmw6NDxLyE0NBR79+7FvHnzIJPJsGnTJiQGaefvFGcCzp07h+joaBw5cgR16tSBWCyGWCzGsWPHULVqVSQkJCAoKAiDencFk8WZYqUcVUoXw6NHjxAbG4uZM2di2LBhgt7b2xsDBgxAfHw83rx5g0YuTip7fzUZyWjf2B1+fn5ISEhAmzZtsGHDBkHfuXNnrFmzBjExMbh16xbsizLT1h8AY79h/JjR+PbtG+Li4mBnZ4fr169DLBYjMjIS5cuXx7Vr14R9K/rT+EuNXmwwli9fjoiICAQFBcHc3Bz+/v4Qi8X4/PkzLCws8OnTJ0RGRmLNmjXQjwvR0hdOi8SBAwcQHR2N27dvw8HBARERERCLxbhz5w5Kly6NmJgYhIaGYvLkSUBMsJbeuqAE169fR0xMDLZs2YI2bdoI+75jxw40adIECQkJ+PTpE7p6NALSNSIR5BLUqWCNly9fIi4uDiNGjMC0adME/ZgxYzB58mTExcXh6dOnqGFvqZ2/kxqHPp3bIDAwEImJiahVqxb27dsn6Bs1aoS9e/ciJiYGly5dQkn9FK1tR0wQZs6cie/fvyMqKgolS5bEkydPIBaL8f37d5QpUwZPnz6FWCzGrl27UCD5u5bcMP4bNm3ahKioKLx//x4ikQjBwcEQi8V49+4dLCwsEBoaivDwcCxcuBB6sV+19KayWJw6dQrR0dE4c+YMXF1dERUVBbFYjHPnzsHZ2Rnx8fEIDg7GyMH9wcQIjX6rQPnixrh37x5iY2OxcOFC9O3bV9j3pUuXolu3bkhISMC7d+/QolYV7dwoaSo86lTF+/fvkZCQgK5du2L58uWCvk+fPli8eDFiY2Nx7949lC9urJXZxYRweA4diODgYMTHx6N8+fK4cOECxGIxoqKi4OLiIvwmT548CVOpdu6SXmwwFi1ahIiICISGhsLCwgLv3r2DWCzG169fYWlpiffv3yMqKgobN26EYUKolr5A8g/s2bMHYrEYjx8/RpkyZfDjxw+IxWI8evQIJUuWRFRUFL5//44ZM2YAMdptX9IgFT4+PoiJicGePXvQpEkTYd/37dsHd3d3JCYmIjAwEL07tgJS4zLFChncHCzx7NkzxMXFYeLEiRg3bpygnzJlCkaNGoW4uDi8fPkStZ3LAHJJ5mebFICNRSH8E+gGLDp0/B2kRAPfX2H+zCmYM2cOnj9/jurVq+P169fwdC0EUaI/6tiZQPnsMBYM7QhPT0/069cP9erVQ3JyMm6f3Q956AtMnzIJ69evx4EDB+Di4gJDfX000/ODo0Esqpc0QqGXB9C/fVN4eHhg+vTpGDt2LE6cOIFvL68hzv8+1q5dg7lz52Lp0qWoW7cuGtWqCquAU6hipoRzkXRUjr6NcvbWcHNzw8aNG7FixQrMn+eNtKCn+HDvPB4/foxevXphzJgx6NatGyb2bQf9p/tQq0wh2Mh/oJtIjJiYGLi4uOD8+fNYvXo1pk0eD35/hdP7tqB06dKwt7dH586dMWfOHCwb2hp4cxr1Hc1hEvESM1vY4+rVq3B3d0dwcDA8PT2xYsFM4PsrrFk8B4MGDUJkZCTq1q2LM2fOYE4bZxQJe4z6jubQe3ceSwe2wKJFi9C+fXuULFkSzs7OOLpzHfj9FWZNmYDly5fj6tWrqFq1qipk1SYZZSTf4G5dBHi6D1P7t0fv3r0xcuRIdOrUCe/fv8erm6eQEfwMc2bNwOrVq7Ft2zZUq1YN1lYiVE94gPKFUuFSHLD0O4HWDWqhYcOGWLBgAWbOnIktW7Ygxu8ewn1vYt++fZg8eTLmzJmDZs2aoWvL+ij25hBcRQYoa5SAepKXMC1aBK6urti9ezfWrVuHmdOmQPbtBR5eOowfP36gRYsWGDx4MIYMGYI5gzuCTw+gjl0xlEz5gqEV9PDx40e4urriwYMHWLBgAbynTwK+v8Kfm1egbt26KFiwIDw8PLB+/Xos698EBh+voIGTBQp+vYf5Xapj//79aNiwIZKTk9GlSxdsWbUQ+P4Ki+dMw5QpU/D+/Xu4ubnh4cOHmFTXEhYx71DPwRR8eRxLhnXApEmT0LNnT1StWhVGRka4cmw3lN9fYdrk8Vi3bh2OHz8OFxcXSCQZaFMoCHaIglupAjB6vh8junmgffv2mDx5MoYOHYrLly/j8xMfJAc+wrKlS7B48WKsWrUK7u7uqOniDIdvl1DJRIaKxaRwCr2M6pXKoVatWli9ejUWL16MJYsXIfnzYwQ+8cHVq1cxZMgQTJo0CR06dMDIbh4wfL4PNUsXgB2j0L7YN6SlpcHFxQUnTpzAunXrMG3yeCi/v4LP0Z0oVKgQKleujJ49e8LLywtLhrUDX55APQdTmEe/xeT6JXD//n24ubnhw4cPmDx5MpZ4Twe+v8LmlQvQrVs3JCcno2HDhjh06BDmd66Ggl/vob6TOQz8LmNp/yZYs2YNWrdujSJFisDd3R37tqwEvr+C9/RJWLhwIe7evYuqVasiICAAQ8orYZUahNq2RcGnBzBrYHuhX7Rs2RKhoaF47HMUsm8vMGOqF9atW4ddu3bB1dUV5iZFUVfyAmWNE+Eq0ofp2yPo0qI+mjZtijlz5sDLywt79+5FxNtbEH+4i23btmHGjBlYsGABGjZsiDYNa6H4h2OoWhxo62KFw8Nro7Bx/g0P/1L+somofxBdDYuOfxVBd8mlpcn5JoyYZsbhXZuzTp06fPbsmTA3/fWrqnBOPf8vk8m4bds22tra8tDk5pTPNSHnmzBwihUb1a7Brl27MigoiB8/fhTmpsnM+f/k5GTOmTOHdnZ2vOFVg5yv0j/xcmbZsk4cN24cY2JieObMGTZt2pRKpVJr/j88PJxDhgxh1coV6TvFXtBf8KpHGxsbLl++nOnp6Vy4cCEnTpxIklrz/35+fvTw8GD7pnUYPMWSnG9CibcJ/5jQmvb29ty/fz8VCgW7desm1Nlozv/fuXOHrq6unNq/FWNmmJLzTRg/05SzB7dmlSpVeOPGDaFAVF1no57/VyqVPHz4MB0dHbllXBumz1Fte+jU4uzWqgGbNWvGd+/eZauzUc//Z2RkcPXq1bSxseFpr4bCvr+fYsvqVStzwIAB/P79O58+fcrKlSsLdTbq+f/4+HhOnjyZjo6OfOhVSdDfnVKV9vb2nDFjBhMTE7l7926hziYjI4PlypWjr68vQ0JC2LNnT9at6cqPU8qQ802omGfC45Ob0sbGhhs3bqRUKuWECRO4cOFCkplmYrGxsXz16hUbNGjAAR2a8PtUc3K+CdPmmHDt6DYsW7YsT506RYVCwaZNm/Ls2bMkVfUhNWrUoFwup4+PDytUqMBFw9sycZZq26Omm3FszxasWbMmHz58KNRhqQtEN23axIEDB1Iul3PXrl20tbXlnxNbUvqz336ZUoItG9Rihw4dGBgYqFWHRZLDhw/n6tWrmZqaygULFtDW1pZXvGoJbffCqywrOJfjqFGjKBaLefnyZaEOS6FQCPUhUVFRHDlyJCtWKM+XU5wE/WUvd9ra2nLRokVMS0vTqsPS/A0GBASwffv2bNWoNr9MKUHON6F0rgn3TvSgnZ0dd+/eTblcrlWH9fHjRzo5OTE1NZUPHjygm5sbx/VqSfF0Vb9NnGXCBcPasGLFivTx8RFM+9R1NqdPn2bTpk2pUCh48uRJOjk5cd2YNkz72W+/TzVnv/aN2bBhQ75+/VrLtI/MrHWTSqXcsGEDbWxseMKrKRXzVPqPU8qwjltV9u7dm9++feObN2+0TAK7du3KvXv3MjExkdOnT6e9vT3velUV2u6hV2U6Ojpy8uTJjI+P16rD+jvQFd3q0PFP8kdj4cfP+Sb8vLaVsHpH03GTzCxsVK/AiY2JpmSeuZY+4ICqEFepVLJVq1ZaRXJhYWG0sbERzMtC39zR0nK+Cb/eVi19VC/Bffv2raDXXIFDkp/Pr8mmjwhSeU3ktJJpy5YtguumUqlkwI5BWtrEeVbCSSqnlUyarptyuZxfl9fV0ocscRMGCJqOm+rPq1u3rrBUPCUlhbHzbLT0gVt7C8Wkw4YN45o1awR9UlKSVmFjVOgX4aAvfHenVStIFAoFa9eurbWSSbOwkSSDH5zI1nbfnqv8aXJayXT27Fkt87LAo7O1tPJ5poyOVBVX+vn5aX0WSS5cuFBYgaNUKhm4oaOWPmq+o7Dy6fTp09lWMnXv3p27d+8mqVrmGraoipb+y8omwnc1f/58rZVM6iJt9QqchIQEps2z1O63ezyF93fp0oV79+4VHkdGRtLa2lowL/vx8Vm2tgu6ul34rIoVK2qtZNJcgUOSQVe2ZdP/+Kga2Oa0kimrw3TA7pFa2tR5lsJS6pxWMk2cOFEYPCoUCgatbKylD1vkImybpru0+rvSXIGTlpbGqPmO2v12Qyfhuxo3bpzgLk1mFvF//PiRJBkd+YPyeaba+qOzhc/SdJcmM4v41efLb88uZWu7kIcqv6VfrWT6K9AV3erQ8U+yowEQ+V54ePyTPsbfNhKKCzUL3ABAKpUKxZH6ekToSCmMNYJU5z8ywPa3hlrv0yQtLQ1KpRJFixZFeXMlHvbRTrXtccEI977r51gUC6h+P8bGxihYsCA6l1Vgp4d2MmuVP40hTtfLsSgWAOLi4oQCvdm15ZjkllkrEJ0GVN6nyh2Jj49H0aJFYWSUGTvLn4Wp6oLLg21laGWfWSNzP0wP3S8aZ3ufGnVxpIWFKur+1QAJbDR2b4evAeY9Nsz2PjWaxZHFjImg4dqpthNuG+LYJ4Mci2IB7eLI2qWUuNhFu+1bnDTCu2j9bEWUahISEoSi3iGVFVjZOLPtFUrAbqcxpEo9rfdlbTt1weXqxjIM0kgUDozXQ4OjxsJ3ZGpqqlWYqS7YVPdHn65S1NJIFD7/RR8jrhtle58adbGrubmqEPfrcAmKaoQ/L39mgPWvDCGTyZCSkiK8T41mf7QtRrwcoN32Ay4b4lqIAdLT0yGXy7P12+TkZBgaGqJQoUJoba/Agbba/bbmQWOEJutpvU8Tzf7o5SbHzNqZ/TZFCjjuzn+/3e0hQ8eymW3/PEIP7c/mv98+6iNFOfPMtt/3QR/T72ceM4oX186skkgkyMjIgKmpKQoYEN9GSqGvETw9454h/vQzgEQiQXp6erZjRmpqKgCgSJEicBUpcaOHdr/FkKuAXV3MmzcPqampWLt2Lf4ufuv8/bcNm/6D6O6w6Pg3kfrqBDO8VVcqCbPMqYxQLR/N6ripJqvrZuSpGcKVTuScMmRqrOC4mZPRU1bXzW/rPTKv8JdUJ+WybI6bmmi5bkrTGDa/fOaV4s6+JPN2471582am62ZCGKNniVR3COYWY9wNlTdLVsdNTdatWye4yMq+PmTKbFNyvglTZhWjJEDl7prVcVOTwYMHc8OGDSTJ+LvbKPs5LRE7qzgZFyy48V66dCmbVu0ie+vWLZLkj33DhH3/PteRzEgWrOFzcuPVcpFVKPhtee3Mtl/dmFQqGRgYqGUNr4mWi2xaPMPnZN4hijiiunty8eJFNmzYMEe/jOPHjwsuskrxJ8bPslBNa3gXY/IT1Z21pUuXcuzYsTm2nbe3N6dNm0aSTH9/UZhOS5ptRnmYqq/17t07Vzfejh078uDBgyTJ6IuLhDtUUbOtyKRIymQyVq1aNUc33qwusqFbOgn7HrqwMimTCKZ94eHh2fRafVqWodKo9VtVRntZ3aU10erTSZGMml3y53RcMUZfUt3R2L9/f65uvJoO0/LQF0yabaaajptdjOnvL5LM7i6tiabDdNLjfcJ0WtwsCyrFATm6S6tRG1GqHaYjjowX9j3c25ZMT8jRXVqNlsO0Uqnqq+o7LId7kgpFNnfpvwvdlJAOHf8g06ZN41rvcezlZsEBXVrx0KFDvH79ep5W2mrXzdTUVHp4ePD6/jXsUd2CNSqX45s3b7h27do8rbRPnDjBli1b/jxIOTHo9kF2rmpGe1trxsTEcNCgQcJJPSfUrpvfvn1jOQcbJvteYIsKpqxWrRqlUilr1qyp5biZFbXr5q1bt9i0TnUqAq6xpl1R9uvX75d5R5qDsQ0bNtBrWE8y4BrLlyjIFStW8N27d1rW8FkJDw+ntbU1xWIxhw4dyn2rZ7FXDQu2aVKbPj4+PHbsGFu1apWrI+mjR49YtWpVSiQSuru78/nZ7exazZzOTnb88uUL58yZI5zUc2LHjh3s3bs3ExIS6GBvy4gnJ9iuihkdHVXOwh06dBBO6jkxZswYLl26lB8+fGCV8o7M+ODDRmVN2LhxY8G07/Xr1zlqlUolGzZsyIsXL/LkyZPs0bYJlQHXWLVMYY4fP144qeeWd6QejAUGBnLevHlcOnUEe7lZcFTfjty1a9cv8440B2OdO3fm+Z3L2LOGBetWr8wnT55w27Zt7Nu3b677fvHiRTZo0IAZGRmsWLEi/a/vYxdXczrYWjMiIoKenp55xkYsW7aMY8aMYUREBB3trBn/6ixbVTRlpUqVKJFItE7qOdG7d2/u2LGDjx49Yr0aVSj/dJW1HYqxa9euv8w7Ug/GHj58yD/++IOe/TqRgddZwaoQ58+f/8u8I02H6bFjx3L7kinsVcOC3Vo34unTp3n+/Pk8YyNevnzJChUqMCMjg40aNeL9Y5vYo7oFq5R3pJ+fH5csWZJnbIQ66iM5OZmODvYMe3CUnV2Lkz+PUVndpf8udAMWHTr+IQIDA4VsG5FIJDyuVKnSL8PKxo0bx/79+wtX0yKRiBcuXGDdunW15vtzQu262b9/f44ZM4akykZ7yZIl7N69u9Z8f06o56rbtm0rRASIRCL26tWLAwcOFBw3c+Pz58+0s7NjlSpVhKtpS0tLVq1alT179vxlorSPjw/d3d21rqbVicT16tXTsobPieXLl7Nbt25CRIBIJOKLFy9YoUIFOjg4CPP9udG3b18OHDhQiAgQiUTct28fPTw8fpkorY5G6NWrl3A1LRKJ6OXlxX79+rFOnTp5WufHxMTQ2tqajRo1EiICLC0t2aJFCw4YMCCbNXxWXr16xXLlytHR0VG4mra0tKSTkxM7duzITZs25ak/ePAgmzdvLtxlE4lEwtW1q6vrL4M5p02bxr59+woDcpFIxBs3brBGjRq/TJRW12UNGDBAiAgQiURcu3YtO3fu/MtgTnUScufOnYWIAJFIxMGDB3PgwIG/DOb89u0bbWxsWKNGDeEum6WlJWvWrMm+ffv+MlH61q1brFatmlZWU/HixWlra8tmzZr9Mphzw4YN7NixozAgF4lEfPfuHZ2cnFi2bNlfBnMOGzaMAwcOFO6yiUQiHj9+nI0bN6a1tXWeidJqh+m+ffsKWU1q6/179+79VqL0/wbdgEWHjn8IzVvk6h9/8+bN6eLi8kttREQEDQ0NBXdMdUhbmTJl8hUnf+3aNRoaGmolq6amprJgwYJ55hSpmTt3Lk1MTLSC1j58+EADA4N8JRp7eHiwUqVKwmORSMS9e/eyQIECvwwnJElbW1v27t1bSz9kyBBaWVn9MpwwLS2NBQsWFFZyqNu+WrVqbNSo0S8/29/fnwYGBlppzAqFgubm5nnmvag5cOAAjY2NhQJjdbigkZFRjg64WRkxYgRLlCihFRB4584dGhoa5ho5oImbmxvr168vPBaJRFy6dCmLFCmSZ8YTqTpxFS9eXFj9pZmEXb58+V9+dmxsLI2MjIQpTbXe0dHxlwNdUjU1Y2BgIBQ/q5O0CxcurFUknRsrV65k4cKFtUJFv3z5QgMDA638qNzo3LkznZychMcikYgnTpygkZFRrlEZmpQtW5YdO3bU0o8fP57Fixf/Zb+VSCQsUqSIcBdJ3XZ169ZlrVq1fvnZwcHBNDQ05P379wW9UqlkiRIl6Onp+Qu1ytHWyMhIuAMnEonydA/+O/id87fOh0WHjr8ItWFa3759hediY2MREBCA+Ph4hISE5Kk/fPgw3N3dcfjwYeG5t2/fwsjICI8fP0Z6evpv68+ePYvKlSvj5MmTYB719QqFAj4+PrC2tsaNGzeE5w8ePIi6devi4MGDeX52fHw8/P39kZSUhK9fM02uTp48iapVq+L06dN56t+9ewc9PT08ffoUaWkqgzCSePDgAQoXLoyXL1/mqT9//jwqVaqE06dPC/sZFhaG6OhoBAUFITo6Ok/9gQMHsu3n/fv3UaJECVy/fh1yuTwPNXDixAlUq1YNJ0+eFJ47duwY3NzccOTIkTy1EokE9+7dQ9GiRfH8+XPh+cOHD6N27dpa32dO/PjxA5GRkQgODkZUVBQAVdudP38ejo6OuHbtWp76R48ewdLSEjdu3IBMpiq+TEpKwtu3b5Geno7AwMA89er9PHbsmPDcx48fIZfL8erVKyQnJ+epP3jwIOrUqYNDhw4Jz/n4+KBcuXI4e/Zsnv2WJM6dO4eyZcvi8uXLwvOHDh3KV79NTk7GmzdvIJPJ8OnTp2z7dPz48Tz1AQEBkEgkePPmDZKSkoRtunnzJiwsLPDw4cM89VeuXIGTkxPOnTsn7GdkZCS+ffuG8PBwhIeH56k/ePAgateurdV2z549g4mJCe7evQupVJqHGjh69Gi27+7PP/9E2bJl0ahRozy1/wh/48DpP4buDouOf5qsWTwKhZIia3shXG337t1aSxuzovYI+fHjB6tUqcIHjx7TsrStEK6WW9aNGrVHiDpoMDj0By2tytDe3p6fPn3KNetGjdoj5Pnz56xUqRJjk9JoISpJe3t7RkVFaXlw5MTEiRO5aNEi7t27l127dmV8qoQmpmZs0KABv3z5kmdIm3qZ59mzZzlp0iTOmzefcSmqK09PT0+tLKSc0Fzm2axZM544dZqiMvbs06cPt23blmvWjRr1Ms/IyEg6OTnR990HWpayERKw+/fvz61bt+aqV2fxfP36lXZ2doyIjmPxkqVoY2PD0NDQX16tqj1Crl27xtq1azM+JYNmFsXp7OwsLMnNKetGjdojZPXq1Rw+fDjjUiQsZmLCDh065Jp1o0bzanrgwIHcuHETRdb2nDptGufMmcPDhw+zffv2uX52bGysUJ/k5ubGG7du07K0LT08PHj8+PFcs27UqD1C1Pv5+WsILUtZs2zZsnz37l2uWTdq1B4hb9++Zbly5RidkEwLUUna2toyMjKS5cuX11rGn5WZM2dy1qxZQjhpQqqUpuYWrFmzppCkndddFnVW06xZszht+vSf/bYoBw0axDt37gheNzmhmdXUrl07Hjh4iCJrew4dOpRr164VvG5yQ53VFBERQWdnZz5/+ZqWpW3p7u7OGzducMSIEXneoVJ78ainxcLCo1i8ZKk8g0T/DnRTQjp0/IfRPLh8DE9k7aU/AwpHbuf36ATK5XLWqFFDCPHLyvDhw4WDy5ojV2k/5TTtZlxi5VGbKJHJhRNDTvUAao+Qa9eukST7L95Lu+kXaTfjEltOU51ofX19Wa5cuRxPXGojreBg1YqaOuM30W7GJdpOPcuJG4+RJI8cOcK2bdvmuO2aacfJ6RKWHbGZdjMu0WbCUe6/orolP3PmTCHELyuaHiF+IRG09dxNuxmXWHrkLr4OVBXqtm3blocPH85RP3/+fCE08sStF7SbdIx2My7RccQWxqekZ/O6yYraSIskZ2w/Rftp52g34xLdxm6iQqHk9+/faWtrm2M9QNa04/Yzt9Nu+kXaTr/AHvNUKcN51QOoT9RRUVGUK5Ss6rlR1XZep7noT9VKk82bN+c6JajpERIVn0L7kdtoN+MSrccd5KXH70hqe91kZdeuXcJA+tH7INqO3a/qt6N28mt4TLa06ayMHz9e8AjZduY27bxO0W7GJTqP3MR0qSyb140mao8Q9UB6xMoDtJ9+gXYzLrHxZNXUnr+/Px0cHLT8Z9Rk9QhpNHnLz357jiNXqaZlz549KxglZkVzIJ0ukbH8SFW/t5l0nDvOqn6nmkaJWdFMO/7yI5p2njtpN+MSy3ju4eMPKmPIbt26CV43WVmxYoUwkL746C3tJhxRBUOO3EZxQko2r5us9OvXTxhIL9x7gfZTz9JuxiW6jt5IuUKplTadFbWZnXoqqfvcnUK/7TDr19PHfyW6KSEdOv6DxMTEYPXq1Vi+fDkAYP55P0Qm/czrMbfBH4/CYGBggA0bNmDSpElQKBRa+tevX+Phw4cYP348AGB/AEBDlQdEipkjTr36AQsLC8yYMQMzZ2oHwAGqqYMSJUrAw8MD3+PT8DC1BPDTLyNQ3w6vQ+Ph6uqKZs2aYcOGDdn0S5YsQf/+/WFvb487AWJEFHYEAOgZGMEnqhgS02Xo3bs3EhMTtW67A6rb35MnT8ayZctQqFAh7H8SCpmFAwBAv1Ax7H6naofZs2fj2LFjCAoK0tJnZGRgxowZ2LBhA/T09LDjcQT0TK0AAEbmpbD9iWqKY926dfD29hb8I9RoZjUBwK63qUABVQCgwsIeex+HokCBAli1ahUmTZqUbXrh9u3bCA0NxaBBg5AuVeDM98Kgvsp2PKaoI676RaJMmTIYMWIEFixYkK3ttm3bBnd3d9SqVQt+4Yl4TxtATw96evp4LimFoOgUNGrUCGXLlsWff/6ZTT9nzhxMmjQJJUqUwHnfH0g0VQXk6RsVwNGvhlAoCU9PT/j6+uLJkydaWqVSiYkTJ2L9+vUwNDTE7sehoLktAMCgiDl2vkoUvt/NmzcjMjJSS5+YmCjY3wPA9mfR0Cv60+/DrDS2P/oOPT09bNy4EVOmTBGmi9T4+fnh8uXLmDJlCgBg70cFYKQKT8wwd8SRZ2EoVqwY5s+fj2nTpmXb99OnT8PIyAgdO3aEODkDtxKKgz+DKUOM7fE4KAYVKlRAp06dhG3UZNWqVejSpQucnZ3x+EsMvhnbAwD0DAxxM94C0ckSdOrUCfr6+jh79mw2/dSpU7FgwQIUK1YMh5+HQWKu6vf6BYpgj59MeM+lS5fw8eNHLa1UKsXUqVOxceNGVb999AMwLQ0AMDQtie3PVFOQq1evxqJFi5CYmKilj4iIwJYtW7B4sSpMc+frJKCQyoOE5rbY/SgURkZGWLt2LSZOnAilUqmlf/z4Md69e4eRI0dCrlDi6Fcj0EDlE5Ng4oTzvj9QokQJTJw4Ed7e3tn2fc+ePXB2dkbDhg3xRZyCF9LSQr99p7TGx/CkbJp/AzrjOB06/peMHTsW1tbWmDVLlTpcf8ll/EjJ/FnJvjyG7P4uANkTifkzrbVw4cIoUKAACD0UHrwLevqZBl+S58eh+HA1W/KyWq+V8GxWBoW7LtHavoxra6H88SHHZNesaa36jnVQMGui8LHJYFpCtuRlAIIxlampKfT09GDo1h3GrpmJwsqMFGQcUQ3EcjJfS01NhVKpFEzBjFpMgpGtq/C6PNwf0quqk1VO5mua7UkShXqtg37RTHM46YfrkD8/mi15Wd12mu1J48Io0n+r1r6rk7CztTOyJwLrWTmjUNZE4YuLoYz+mmMicdb2zDFReP8oQCHNMZE4a3sa1hsE4wpNBK0iMRKSn0nYOZkGZm1P4/beMNRIFJYFv4DszjahnQ0NDYVE4qztSRKFB+3UShSWvj4Lue+FHBOJs7VnsRIo3GOldtvd3Axl6Osc+23W9tSzrYFCLcZr6dNPzgCTxTkmaWdtTwPXjijg1kXQUi5F+oFRQjurTdrU+qztadR0LIwcagp6edQXSH2WAlD1cZJaSdpZ27NAt+Uw+DlQBwDpp7uQP94PIHuSdtb2pIERigzaqbXvkscHofh0O8djRrZ+a+mIQh3naumPjqiDuk7aZnV/F7q0Zh06/kO8f/8eN27cwOTJk/H161d07doVCS8uZr5BKUeBH6/Qq1cvfPr0CYGBgShevDgCAwMhFouxdetWtGjRAgkJCbh06RLKOjnCLNZPkOvL02EU8R5eXl4ICwvDtWvXULZsWURGRkIsFmPUqFGYMmUKYmNjsWvXLpjpZ6BIamahXoGMWBRM/oE1a9ZALBZj7dq16NSpk5DM2qBBA+zfvx8RERFYuHAhjGM+w0iaeXVVLCkYJUwK4ujRo4iPj8egQYMwZ84cIRG4dOnSePbsmSqRd+RIGP14Az1FZqGfWfRbuLi44NatW0hISICrqyuOHj0KsVgMX19fWFpa4vv373j37h3at2+PIpFvMlN1qUSRyDdo3bo13rx5g/DwcFhaWuLFixcQi8U4ffo0KlSogISEBNy7dw9ubm4wjX4nfLaeQgrjH68xdOhQfP36Fa9fv0aJEiXw7ds3iMViLFq0CL169UJ8fDxOnDiBMpZmMEn4LOgNpckwiv6EuXPnIjw8HMePH0fNmjWFROKePXti2bJliImJwcaNG1E4XYyC6ZnFvYXTolBUloDt27cjJiYGc+bMweDBg4VE4MqVK+PChQv48eMHpk+fDqNIPxjIMu8gmcR+hJ11KZw7dw4JCQlo164d1q5dC7FYjKCgIBQvXhx+fn4IDAxE//79UeDHa0CRWRxsEuWLOnXq4NGjR4iLi4ODgwOuXLkCsViMhw8fwsrKCmKxGC9evEDTpk1RLMo3M4lbqUDBH6/QtWtX+Pn5ITg4GBYWFvj48SPEYjH27t2LevXqISEhAVevXkWFChW02l5fngHDH74YP348QkNDce/ePdjZ2SE8PBxisRiTJk3CmDFjEBcXh/3796N4AaJoSpigN5YkoECCKsk7KioK27Ztg4eHh9BvW7RogR07diAqKgrLli1DwYRgGEsSBH3R5FBYFCAOHDiAuLg4eHp6wsvLC2KxGOHh4bC1tcX9+/fx7ds3jBs3DsYRb6Evz0wxNxW/RYUKFXDt2jUkJiaiTp06QpK2n58fLCwsEBwcDD8/P3Tp0gWFIl5r9dtiUb5o1qwZXr58KSRpP3r0CGKxGD4+PnB0dER8fDwePnyI2rVra7UdFDIU+PEKAwYMQGBgID58+IDixYvj69evEIvFWL16NTp06ICEhAScPXsWdmVKwSTOX5AbyFJhFPURM2fOxI8fP3D+/Hm4uLgI/XbQoEGYO3cuYmJisG3bNhSVxaNwWpSgr1LGBNVtzfBvRDdg0aHjf0LgNfD2EhxdOBgLFizAokWL0KxZM3To0AED6tqhVspjLOxYCaI3f2L9zNEoWbIkqlWrhosXL2LgwAG4unwAZNcX4ujaaZg5cyaGDBmCIUOGYP78+agi8UNnSzG8W5eF8vJSnDm4C6GhoahatSqSkpLgZFsaLzcPRfy5mbh3bj+6du0qJPIePXwIRo/+wEjXgphYTwTp5RW4cOYkTp8+jbp166JmzZr4/OYRvh+djIC9Y5AeHwkrKyshkffSmeOQXFyMaU2tMaCsHJafzmLH9u2YOXMmunTpghEjRuDCntVI9ZmL+2sHonGDevDz8/uZyCvBoa2rYHR7Dea3r4CWBT6jqWUqxo4di65du2L8+PFYuHAhDi0ZDeXNxTi3ZAAmTZqEPXv2wN3dHS4uLpgzqD2cQs5jYcfKqPDjMqZ0bwx3d3fUrVsXW7duxfTp03F68UAoby3G4cUjsXjxYnh5eaF9+/YYOnQo2tjpoYmeH+a3r4BC9zdh79qF0NPTg4uLC16+fIk2rVrizuqBSL88D2f/WIpx48ahR48e8PLywubNm1Em9Ab62KVjZgs7SC8txsWTR/Dy5UtUr14dxYoVg6EiHR93j0bkial4//g6GjZsiIYNG+LgwYM4d+oEFNfXYHxtC4yuUQx6dzfh5PGj2L59O5o2bYq2bdvi6bWTiDk9Hb7bh0NkVgRKpVJI5D13dB9klxZjlocjulnFo1z8M6xYsUJI8p4yZQpObJwDydX5uL5yAHr26I5bt27B1dUVJiYm2LpwCkyfbceCDpVQT/oKPV0t0aNHD3h4eMDb2xuLFi3C4YVDwdtLcGKR6qS1atUqNGrUCM2bN4enhytcY+9iYcdKKPPxCFZMHAgHBwfUqFEDx48fh6enJy4tHQD5jUU4vGIi5s6di5EjR6Jv376YMWMG3I3C0M7kO+a2KQ9cW4ETe7YISd7fv39HNZeKeLJxMJIuzsG1o9vQr18/tG3bFkuWLMH+fX+iyKsDGFLRAF4NrSC9tAQXz5zElStX4O7ujgoVKiAi6AOCD05A8IHxEId8QrlyqrTma9eu4dLZU5BeWoIpjUphSEV9FH1zCPv3/YlFixahXbt26N+/P64d2Yqki3PwZMNguLlWQWhoKFxcXBAXF4djuzZB7/pKzG1bHm2LhaJOwXBMnz4dffr0wahRozB//nwcWj4BipuLcXFpf3h6egorbJycnLB0bF9YfzqGhR0roWrMbYxuXR1NmzZFw4YNsWbNGnh7e+PEokHg7SU4vGgYFi9ejFmzZqF169bo3bs3ulU2Q33payzoUBEmT3dg++LpKtt8V1fcuXMH3bt1xY2VAyC5Oh8nN3nDy8sLffv2xZgxY7Bq1SqUjX2C7qUTMaulA+Q+S3D+2H4hyZskLIoVxNsdIxB9ejqeXT+NVq1aoWnTptixYwdOnTgG3N2EMW7FsLKbC46PrIuCRga/Pgb+E/zVBTT/BLqiWx3/UV7u0woKm9bCSkjkzRq0pl51I5VKGRYWxn79+vFg39KCVjrXlF3cSgmJvI8ePaKLi4sQtKZedUOSb9++ZZMmjfliXClBHz/bgvVd7Hny5EkqlUr+8ccf7Nmzp7CpkyZN4vz580mqfFpqu1bkj+mZIXVfppRg3VrV+fDhQ5IUVjWRqqLI5s2b8/Tp01QoFNy3bx+bulgzZY6ZoL85sjTbt2/PgIAAwbzuwoULJFWrd5ycnOjn58f09HQuW7aMA+taUa4RMLihSymOHDmSUVFRgl14QEAASfLr16+CmVlMTAzHjh3LFR0y910xz4QjGlhx4cKFTE1NFVxX1auRrl69ytq1a1OhUPDLly/s3LkzLw3NbPs0bzO2dC3DXbt2CanF6iJKklyzZo1g2vb06VPWq+NO/8klM2MTZliyjmt5wUl1+fLlHD16tND2AwcO5KZNm6hUKnnu3DnWcXFkzKzigv7tRCs2alBfsKZXr2oiKRRp3759mzKZjFu3bmW7aqWY4W0q6E8MKM1evXoxJCREcF198OABSTIuLk5YpaRO8p7QxEqr385rbSUk8mq6rqr7mtq0LTw8nIMHD+YfPTLbXjbXhD1rWXH16tWUSCR89eqVYNpHUlh1Q6qKslu2bMmHozP1SbPN2dDFlkeOHKFSqeSBAwfYoUMHoe1mzZrF6dOnk1SFZtauXoXfpokyw/mmlWDtGi5CEfu0n6ua1LRv356HDh0SkrwbutgyaXZmqOiD0aXo4eFBPz8/KpVKYVUTScFd+M2bN0KSd2/3UkLkA+eb8I8epThkyBBGREQIoaLv3qmKnNUr9WJiYhgXF6f6DbbRbvvxTazo7e3N5ORkYZWOejWSZiCpOsn71MDMfpvhbcp21Upx27ZtlMlkvHXrFmvWrCmYE27dupX9+vVTHapevmTD+vX4bmLm58fMKs66VZ147tw5KpVKbtiwgYMHD871cPd3o1slpEPH38mf7bSTXbc3F14aMmSI4LipRjPrhiSlS6y19GlnVJkxCoWCtWrV4s2bN4X3Zs26USaGZ0tWlTxVrUJQ59qEhIQIerUtvtqFU+Z/NZte8TMzRp1ro0741XxO7TaafmtlNj2lqtdOnDghOG6qOX78uJYtfurBflra9NWVhfd6e3tnM2mbM2eO4MJJkmnrami3/Z/dhdc6duzI/fv3a+k7dOiQmd+kUFAx30z786+qEndzympSP6e2xVdEvM+279J3Z0mq4gGyZjVlzW+SvjqcTa+MVa0mefjwIatWraqVCPzgwQOt/Ka0CzO0tPJFJYT3bt++Xct0jyS3bdumld+UurOtdtttyjSayymrSTPrhiQly5209cdHkGSOWU1Zs26UaXHZ9j3j/maSmbk2gYGBgl5ti6/Ob5IH3c+ml39VDc5yymoKCAjQssXPuL8pe9unqQYIOWU1XbhwQcsWP/XYcO1tX15WeO/SpUsFd2k1S5Ys0cpvSttUT7vtdrUTXuvVq1c2Y8eePXtq5TfJF4q09GkXVSvucspqkslkdHFxEUzzlDFB2fvtqyMkM+MBcspq+k/xt6Y1379/H6tXr8arV68QERGBs2fPonPnzsLrgwcPxv79+7U0rVq1wtWrV/P8v1u3bsXq1asRGRkJV1dXbN68Ge7u7vnaJl3RrY7/KKdHAO9PCA9PBuhj7C2jXBOBs6bd3u0lRaXimT+7hY8NsNXXMNdEYHVxpoWFBQoZEh+HSFEkMzgWvS4a4U5Y7onAGRkZkEqlMDExQaXiStztlbnaQ64Eah4yRnhKzonAgKo4U19fH4ULF0a3cgpsb5lZJxGTDlT60xiAHmJjY7UKI9Woi4qNjY0xt44c42tkrpJ6+EMPXc8b55oIzCyJxEfaydDCLnPFxM53BvB+aJgtOVhN1oRs34ESlM6sfcSkO4Y44p97IrBmQnaJQsTrgdpJ2q1OGeGNWD/XRGDNJO16pZU41zmz7dPlgMs+YyRJ9XJMBAa0k7SHuSiwvGFm2wcl6KHukdwTgQFVSrO64HJtExkGVMpsu4tB+hh2Lfd+m/X/XukmhVvJzH678rkB1r401EoO1kTz/xroEQFDpTDR6FqDrxjicrCBVnKwJpq/B0dTJR71kcHg5+4plEC9o0YITtTPVpSqRvP30M5RgT9bZ7ZdkgRw3msMBfW00sY10fw9TKslx7Ramf32ZaQe2p7Jvd+q216dkL23lQztnTLb/oCfPqbeM8o1yTrr/33aVwpHs8y2n3nfEHs/qPqtTCbLdt7T/L+mBYh3g6QopLl7gy8D9vUxZswY2NnZYcaMGfin+FvTmi9fvsw5c+bwzJkzBMCzZ89qvT5o0CC2bt2aERERwt+v7I2PHTtGY2Nj7t27l35+fhwxYgTNzMwYFRWVr23S3WHR8Z8k8stbvvA0p2yuCV94mjMq6D2VSiXr1avHy5cv56jRnC54feUAQ6ZYUOJtwqtDS1CaniJcUebkV0FqTxdc2TCBCXMsmTanGE+PrkKSeQatqbNu1J4LJ6c0pWR+cSbMLMYz87qRJM+dO8fGjRvn6FcRExMjTBcoFQqeHeZA+QILhk0uxrv7lpIkFy9ezPHjx+e47a9fvxamC5JjI3hneHEqF5jz3egiDHyi8vfo0aMHd+3alaNec7rg6+u7/DBO1fYPRlgwIfIbZTIZq1SpkmtW09SpU4XpgodH1zJyRnFKvE14YZgNFXJZnn4V6qwb9XTBucX9mDrXkimzi/HkJNUdCs1pv6xknS44NbYGZfMtGDO9GC+tUt2h2Lt3L7t06ZLjtmual8ky0nhpaCkqFlgwaEJRPj+nugLXnPbLiuZ0QUxoAJ+MNKdygTmfDS/C7x+fU6lUslmzZrlmNWlOF3y4c4pfJltQ6m3CG8NETE+KE6b9cstqUpugkeT17TMZN9uS6XOK8czI8lQqlcK0X07HbnXWzfXr11VtN6MNM+YVZ9KsYjw9S3WHQnPaLysJCQmCCZpSqeTpEeUpX2DB8CnFeOOP2SS1p/2youkvlJYYyxtDLalcYM6PY4vy490zJDOn/XLi5MmTgr9QmN9Tvhmj6rdPRpozJjRQmPbLLatp7ty59PLyIkk+O7Od36ep+q3P0FKUSzMYGxsrTPvlROfOnblv3z6S5MWVI5jsbcnU2SbkHdVdM/W0X26mgv8p/mNTQrkNWNQBYvnF3d1d6/aZQqFg6dKl80zp1EQ3YNHxn0Q9xSMSWXL9+vUcMmRInsZqZGZI25s3b4TkY5HIUphCystYjSRDQ0NpY2MjHOC/fftGS8virFWrFm/cuJGnsRqpqgOoUaMG37x5I0zxqEPaAgIC8jRWIzON8YQpnp85O2XLlmVgYCBtbGzyDFpTG+MJycdKJU1MTNiyZUveuXMnz6A1tTHe1atXhSkekchSmELKy1iNzDxxffr0SUg+FokshYTpESNG5GqsRpIfP36kk5MTv3z5ItQmWFpasmLFinzx4gXr1Kkj5D/lxOnTp9msWTPeu3dPmOKxsLCgtbW14LKb20CVzDTGE6Z4lEqamZmxatWqfPfuHR0dHXM0VlOjNsYTpniUShYtWpS9e/fO01iNzDTGe/bsmTDFIxJZClNIeRmrkZnGeEFBQcIUj6VlcSFhOi9jNTLTGO/Dhw/CgNzS0pL29vb08/PL01iNzDTGE6Z4fvZb9cVBbgNVNWpjPCH5+Ge/bdiwIZ88ecLKlSvnGiqqaYynnuIRiSyFKaTdu3ezW7duuX622hjvw4cPrFKlCh8/fkyRyFJImJ4wYQIXLlyYq15tjPf161fa2NgwIiJCyCrSdJf+p/nHByympqYUiUQsX748PT09c402J1XzxAYGBtn+z8CBA7UCpTTJyMhgYmKi8BcWFqYbsOj4j6B5NS0SiSiVSuns7MzSpUvnaV1Pqlw3K1SoIBTRikQiRkREsFQplY17btb1ahYuXMhq1aoJyccikYiPHz+mnZ1dntb1arp27coKFSoIV9MikYg7d+5k1apV87SuJ1UnrooVK9La2lq4mhaJRBw3bhxdXV3ztK4nVdEDpUqVorW1tfA7tbS0ZMOGDeng4CDc/cmNp0+f0tbWVisROCUlhba2trSyssrTup5URQ+4uLgIV9MikYifP39m6dKl83WVOXHiRLq6ugpX0yKRiD4+PixfvjzbtWuXp1apVLJJkyZ0dHQUrqZFIhGXL1/OatWq5WldT6qKl+3s7GhlZSVcTYtEIvbp04cVK1bM07qeVEUPlCpVik5OTkItkjpJ29raOk/relJ1F6Ns2bJCEa1IJGJMTAxLly7N0qVL//IO+qpVq1itWjUh+VgkEvHVq1e0sbERikvzon///qxcubKQfCwSiXjw4EFWqVIlT+t6MvPuoo2NjTAgF4lEnDZtGqtVq/bLcMXY2FiWKlWKpUuXFgbklpaW9PDwYNmyZYW7P7nx5s0bWltbCwNVkUjE9PR0Ojo60srKil+/fs1Tf/jwYVaqVEkoohWJRPz27RtLlSpFe3v7PAeqpMphulq1aly5cqWgJ7Xdpf9p/lGn29atW+PAgQO4desWVq5ciXv37qFNmzbZ3D3VxMTEQKFQoGTJklrPlyxZMpszo5rly5fD1NRU+LOxsfmrd0OHjmyQxIQJE7Bu3Tqh1sDIyAhubm4gifLly+epb9q0KUJCQtC8eXPhOSsrK1hYWMDJySlb/URW2rdvjw8fPqB9+/bCczVr1kR8fDwaNGiQbQ49Ky1btkRwcLDW57dt2xb+/v5o27ZtnlojIyPUqlULcrkczs7OWtv08eNHtGvXLg+16vdsaWkJBwcHYZ5aT08PjRs3RkxMzC/r1WrUqIHExETUr19fqNMoUqQIypcvD1NTU5QpUyZPfZs2bfDp0ye0adNGeM7JyQn6+vpwdXXNVreTlXbt2mXbz8aNGyMsLEyrPXNCvZ9isRh16tQRnu/QoUO27zMnChcujIoVK6Jo0aJaxzoPDw8EBQWhZcuWeeodHBxgbGyMqlWrCnUeenp6qF27NjIyMlC5cuU89Q0bNkR4eDiaNm0qPFe8eHGUKlUKNjY22eovsqLutx06dBCec3V1RWpqKurVq5et5ikrHh4e+Pz5M1q1aqX1XGBgoNZzOWFgYIB69eohLS0NLi4uwvP5bXsLCwtYW1ujdOnSQo2Pnp4emjZtivDwcNSvXz9PvYuLC9LT01G7dm1hPwsWLIgqVaqgQIECsLe3z1Pv4eGBL1++aO2njY0NChUqhEqVKgnGc7mR0zEjq7v0/yn+NyMj5HCHJStBQUEEoLXyQZMfP34QQLYY8GnTptHd3T1Hje4Oi45/gkOHDmkFwamvduzs7Ojh4ZHnlAxJTp8+nSNGjBCWi4pEIt68eZNubm5CCFpetG7dmhMmTBBW4ohEIq5fv549e/b85ZSMekpq+PDhqimZn9s/ZMgQjh07Ns8pGVI1JWVra8vWrVvz4EFVToulpSVr1arF8ePH5zklQ1IIglNPyZAUpqT69u2b55QMSW7cuJHdu3cXVt2IRCK+f/+eTk5OrF27dq5ZN2qGDRvGsWPHal3pnjhxgs2aNfvllIx6SmrChAns27cvSVXbzZ07l0OGDPnllExiYiJtbW3Zr18/YZpbJBKxU6dOnDBhAps0aZLnla6fnx8dHR1Zp04dYdWNpaUlK1SowFGjRnHChAl57vvp06fZpEkT2tnZCatuLCwsaGNjww4dOuQ5JUOqpqQGDx4sTMmIRCJhVdOvpmRIskuXLpwwYYKw6kYkEnHHjh3s3Lkzra2t85ySUd/Z8/T0VE3JUNV2Y8aM4ejRo/OckiEzQ0U7derEnTt3ksy8szdhwoQ8p2RICtM+6ikZtd7e3p6DBg3Kc0qGJHfu3MmOHTtqTckEBgbSzs6OjRo14pkzZ/LUjxs3jp6enqxYsaJwV/fixYusV68eHR0d6e/vn6tWPSU1ceJEoUZKJBJx2bJlWiUY/zT/6JRQTlhaWmZbtqXmfzIllBVdDYuOv5vk5GQ6ODgIHiEfwxNpVbczO/QfxT/++IMBAQF0dHTMseiVJD9//iwsvRwzZgzHLdpIqzqdWLlWAz5+/Jjnz5/P88Sl9ghRKBRs0LAhl+67yJK1O9DGUZV0m1fRK5lZ9JucnEw7p3L848pLWlZvyQqVVAf8vIpeSbJv377cvn276mDrXIWHH32hRaUG7Ny5s7CMMreiV/Vt+YcPH/LixYus07IjT7wIZTF7F86bN49isVg4oOeEpkfI0qVL2XfcLFrV7cyGbbvz5MmTeRa9ktTyCOnVqxdnrP+TVnU60rFydfr5+Wl53eTEwYMH2bFjR9V+ulbj+pO3WaJWW9o6lGVCQgInT54sTNPlhNojJDo6mjYO5bj31ntaujZjLXd3yuVywesmJzQ9Ql6+fEnnarV59Gkwzcq7c+jQoVpeNzmhLvp9//499+/fT48eg3niRSiLWDtzw4YNDA4Opp2dXa7HTnXRb3x8PKdMmcJRc1bSqk4nVm/Qgrdv3+b169dzLXolM4t+5XI5W7ZsyYW7TrFk7Q60LVuR3759y7Polcws+k1LS6NjufLcdukpRW6t6FTemenp6XkWvZKqgeq6detU+1G2Ig89CKBF5YZs1aoV5XI53dzcci16VRf93rx5kzdv3mSNhi154sU3mjhW47Rp0wTLgNyKXjWLftetW8fuIybRqm5ntuw2gAcOHNDyusmJDx8+CEW/gwcPpteKHbSq04nlXWvx9evXWl43OXHq1Cm2bNmScrmcNWvV4qoj11iiVjvaOJTNs0zjP82/asASFhZGPT09nj9/Ptf3uLu7C6NnUtVRypQpoyu61fGvQdMj5ObHSDrN8lGl2k47x+sfVB4GXl5enDdvXo56dYEnSa67/E6lnXGJjtPO8HNUEpVKJVu0aMFTp05l02b1CBm47ZagrzrrNBNSpUxLS6OTkxM/fPiQTa/pB5Ihk7P+gnOCvvWKS5QrlAwODhZM2rKi6RESlZjOCtNPC3qvgyr/hxs3bgj1JVnZsWOH4BHy+luckCprO/0C9z1QeW+sXbuWQ4cOzbHtxowZw6VLVauRTjwLpt3PRF/7aWf5NEh14B00aJCW140atUfIxYuq5OPZx54J215++ml+j0/L5nWjiaZHiFKpZMfVlwV97XlnmSaRC/43aq8bTTQ9QpIzZKw+J7Ptem5U1T+8e/dOy+tGE02PkODoFJadlqlfek51p+rYsWPZ/G/UaHqE3P0URbufSdS2087zwhtV8rdQCJ0D6gJPktx+86Pw2Q5Tz9Dvh+p426FDB+GumyZZPUJG7b4r6CvPPM2Y5AxKJBI6OzsL5nmaiMViWltbMzw8nFK5gk0Wnxf0TZdcoFSuyOZ1o8nLly9ZsWJFSiQSxiRnsPKMzLYbveceyexeN5rs379fWEDy4UcCHaaeEfQ7bqnubGT1utFkypQp9Pb2Jkmefx1Ku2nnhWPGvQDVClhPT88cz3NKpZItW7bkiRMnSJKLz74SPrvstNMMjk7J5nWjSVpaGsuWLSscD3puvCboa8w5w+QMWTbNP8XfWsOSkpICX19f+Pr6AgCCg4Ph6+uL0NBQpKSkYNq0aXj69ClCQkJw69YtdOrUCWXLltWag2vevDm2bNkiPPby8sKuXbuwf/9++Pv7Y/To0UhNTcWQIUP+hxNdOnT8dYSEhODAgQOYO1cVEPbnoxDIlT89EfQNceBpKABg7ty52LdvH759+6alv3HjBiIiItC/vyrY7vCrzNoshb4xjj0Pg56eHtavX4+ZM2ciPT1dS79lyxbUr18fbm5uiEmR4N63zNcTlQVwwz8KhQoVwvLlyzF58uRsicSzZ8/GlClTVDk8wfH4np5pyOAfD/hHJMHe3h6DBg0S0mPVKJVKTJo0SUgEvvA2HOl6mfUeZ/3iIZUr0aJFC5QqVQqHDh3S0sfHx2PZsmVYuVIVbHfoaaiQKqunp4+Dz1W5R+PGjcPjx4/x6tUrLf379+9x/fp1eHl5AQD2PwsDfib6Ut8IB5+q2nr58uVYs2YNoqOjtfQnTpxQ+XC0awelkjj5LlZ4TaJXAOfe/IC+vj42btyIyZMnQy6Xa+lXrFiBHj16oFy5cgiKTsHbmEwvjUiJER59iYGZmRlmz56do5fFlClTsHjxYhQtWhR3PokRJ89su2fhUnyPV9VWeHh4YN26dVpadSKwutbg1KvvkOln6o++FgMAevbsibS0NPj4+Gjpw8PDsWPHDixatAgAVG31M4laT99A6LczZ87EyZMn8fnzZy39gwcP4O/vj+HDh6v0LyKE15QGxjjyXNX2a9euxdy5c5GSkqKl37VrF6pUqYJ69eohRSLH1c+Zr6ewAK58iISxsTHWrFmDiRMnZuu38+bNw9ixY1GqVCm8DUtAcEpmrcvXZH28+56A0qVLY/To0Zg/f76WliQmTpyINWvWwNjYGJc/RCIFmW13OTAZKRI5GjRogIoVK2L37t1a+uTkZMyfPx9r1qwBABx5FgqlQWaw48EXqn47YsQI+Pn54dGjR1r6gIAAnD59WkhXP/A0DFAHmuob4sATVdsvWrQI27ZtQ3h4uJb+4sWLkEgk6N69OwDg2JvMfi3TL4DTr7WTtKVSqZZ+3bp1aN26NSpXroywuDQ8C8/0/4mVG+NugBj/F/lt47i7d+9qFV+pGTRoELZv347OnTvjzZs3SEhQdSYPDw8sXrxYq6jW3t4egwcP1opr37Jli2AcV61aNWzatAm1a9fO1zbpjON0/J307NkTHh4eGD58ONLS0tB6yRmEKjMLDSVBzyC/ux16enrZjJyYJS1VqVSiYPeVMDTLTGZNf3EKfK862SQnJ0NfX18w0VIbSKnNu+R6hig2cDv0DDIHHanX1kPvx7scE4mzJgIrzW1RtMtCrf1LOTYV+mmxOSYSa5p3kQSc6qNIkxGCVinLQNp+T+jr62UzaQO0zbtIQr9WbxSq2lrQyyI/Q+qzFHp6epBIJIJJm56eXrb9USqVMG4zA8ZlKgn6DL9bUD5TDZKyJuhm3R+FQoEiA7ZCv2BmcXPaw/1A4F0A2ZO0syYCKwqYomjfddDTy7zOS7mwFPoxX3JMxc2aCKy0qoiibacLWioVSD08AfqytBwTiTX3hyT0KrVC4bp9BL0iORbpx72gr6+fY5J21iRrgwbDUdC5gaCXfnsD2c2N0NPTy2ZayCyJwEqlEgU7L4ahpW1mv319AfQ9m+171uy36v1RUA9FB/0BPcNMY7zUm1uhF/pS+J4LFiwoFAVnTVhWFCuFYj2Waffbk7OgnxwptL2m+Vu2fmvvjiLNx2S2vVyGlP2jYKDHHJO01YOvokWLqvpt9a4oVKOjoJfHfIPk/Hzo6enlmKStaWZHEkYtJsHYrlpmvw14AOWjvcL3LJfLsx0z1PujUChQuM8GGGikkKc9OQL43wCgOmYYGBgIBbjZ+q1hYRTtv0krAf7PIbXQ1LkE/g38rWnNTZo0AVVTSVp/+/btQ6FChXDt2jWIxWJIpVKEhIRg586d2VYAhYSEaA1WANUV1rdv3yCRSPDs2bN8D1Z06Pg7uXfvHr58+YLBgwfj6NGjqFKlChyS3oGpcQAApsaiZcl0mJiYYNOmTYiPj0elSpVw+vRpiMViLFiwAH379kVUVBRmzJiBwoULo1mxKECmSoY1SPyO+pZSWFtb49SpU/jx4wcsLS3x5s0biMVidOvWDStWrMCXL18wYMAAmBUpiOrKz0KqrlnSVzgXlcDNzQ3379/H8+fPUapUKYSFhSEqKgoVKlSAj48PXr16hWbNmsG6kBxlUjOvpJ0yAiAqBHTs2BEfPnzAgQMHUL9+fYjFYnz58gUWFhbw9/fHtWvXULFiRVQ3k6BQYohKrJChrn4QihQpDE9PT4SGhmLatGkYOXIkxGIx7t+/j9KlSyM6Ohr79++HSCRCMysp9JJUd5iYkYKWxVUuuIsWLUJcXBxatmyJzZs3QywWY9euXWjQoAFiY2OxfPlyFC1aFK1EyWD6zzTp5Cg0t5LCwsICe/bsQXR0NGxsbHDz5k2IxWKMHz8e48ePx/fv3zFu3DgULVoU9Y2+AQrV1WaBxFDUNJegXLly8PHxwefPn2FhYYGAgACIxWI0a9YMu3btgr+/P7p27QrLwvqoIA0Efl7jWaV8gX1hKRo1aoTnz5/j5s2bcHJyQmRkJH78+AFra2s8evQIjx8/Rp06deBUWILiyUGqbacSLvLPMCtkiN69eyMwMBAbNmxA+/btIRaL8f79e1hYWCAkJATnzp2Dvb096olkMEz8mWgsl6Bx4R8oXLgwpkyZgsjISAwZMgQzZ86EWCzGxYsXUbZsWcTGxmLbtm0wMzODRykJmBKj+vi0BHiIUlG0aFGsXbsWcXFxqFGjBg4dOgSxWIyVK1eic+fOiI6Ohre3NwoXLozmZjGgNA0AoJ8YjkYlJLCyssLRo0cRGRkJkUiE58+fQywWo3///pg/fz5CQkIwdOhQmBQtjJr4LCQaF0sKRuViGahatSru3LmDt2/fokSJEggJCUFUVBSqVauGU6dOwdfXF61atULpwkrYpQUI/dYuLRBWhZRo3bo13r59ixMnTqB69eqIiopCSEgIRCIR3r59i1u3bqFq1aqoUiwDxZKCVWKlArXwGSZFC2PYsGEICQnBvHnzMHDgQIjFYjx9+hQlS5ZEVFQUjhw5glKlSqGJlQz6iT/vgkjT0MI8DoUKFcLcuXMRHR2Njh07YtWqVRCLxThw4ADc3NwQHx+PNWvWoGjRovAokQqmJaj0KdFoaaUaTG3fvh1xcXFwcnKCj48PxGIxpk+fjmHDhiE8PByTJ09GkSJF0LjQd0AuAQAYJYahtoUE9vb2OH/+PEJCQmBhYYEPHz5ALBajXbt22LRpEwIDA9GrVy9YFDGCizzzmNG1ehk0KS/6Hx0P/2l0ac06dGRFIQeuzQF3NETygb6Y6DkETZo0wcGDB3H58mWUKET0M/2MB9Oboq/JZ1gV1oOPjw/279+PJk2aYMKowUja1xuyLXVhcHsBWjRrCldXV3z69AnPnz9H5Nu7WFpLiUczm6HSj8vo2qENNmzYgIkTJ8LT0xNThnZD9MamSNvgDpvwyyhcuDBcXV1RtGhRPH/+HH4X/sCxnra4P7UhMm5vxcYNGzB48GC0b98e+/fvR79GZSFe6YaYldXhYa/EkydP0LBhQzRr1gxnzpzB9wvrcXNcLfgMr4LPZzbg1q1bqFSpEmrVqoUfP36gumEQElbXgHh1HYzu2hDLly9Hnz59MH36dEyfOgVFX+3Hw+lNsLNtcQTcOII3b94Iy0bLli0L03e7IdlUB7Hb2mCa5wD06NEDixcvxv79+1G7akU0zniMhzOaYkq5eMgiP+PBgwe4d+8e3Nzc0KdHV8jOTYB8az1ITnliSP/eqF27Nq5evYo7d+5AL+E7xtlF4cH0pmilfAkXJ2scPXoUa9asQefOnTFtzGDE/9EB0s11UOzVFlR1cYGLiwtiY2Px6tUrfLl7CltaFMXDGU1h+f4wxo0eBW9vbwwaNAjz5s3D+F4tIF5TD0lra6KS1Bfx8fFwc3ODo6Mj7t+/j09nNuHC0Eq4M7EOonw24MiRI2jbti2aNm2KGzduoH3FwoheUR3RK2ugp3tpnDx5Eh4eHujZsyd27dyJpOubcc+rPk71Lwu/s1vw5MkTlChRAtWqVQMAOMTdQ8r6Wohe3wiTB3aAl5cXPD09sXLlSvTr1R0OQWfwcEZTrK5viLDnV/Hy5UuEhITAxcUF9evVRYEHKyDbUheJe7vDa/QQeHh4YMeOHTh79izsLYuiW8EPeDijKYaV+IZiTMH169dx8uRJNGjQAKOHDUDq4cGQb60HXJ2JDu3aoHr16nj9+jWePn2KxC+vMLdqOh7OaIqacbfg0bg+duzYgZkzZ2LQoEGYNrI3Yja1QPpGd5QMOoGSJUvCxcUF+vr6ePnyJT767MWBLqXwYFpj4OFOLF2yGGPGjEGXLl2wdetWDG1dDeJVtRC/ugYaFI/Dhw8fULduXdSuXRs+Pj4IPrcB10bXwFXP6gg+tx5XrlxBrVq1UKdOHfj7+6O+eSziV9eAeFUtDGtTA5s2bULXrl0xbtw4LF60EHqPduHBtMbY38UKHy//KUw/Vq1aFaVKlYLo81FkbHRHzJaWmDayLwYMGIA5c+Zg586daFa/NtwT7uDhjKaYXSUVSUGqNlEneXfp2A64MgPyrfWQdnQIPIcOQL169XDmzBncuHEDReSJGF4yFA+mN0Vn4/dwLGGCM2fOYNu2bWjVqhWmjBmC+N1dIdtSF4Uer0ad2u6oWrUqwsLC8OrVK3x7ehlrGxrj4YymsPtyGoP798GyZcswcuRITJkyBZMHdkD0uoZIWVcLDvH3oVAoUK1aNVhZWeHx48fwO7sFpweUw7PZzbGuV7X/e8uZ1fxVhTP/JLqiWx1/KffXaAWFXRxcUihsyxqqljW4zcfHh5cGl9TSb+9XXigqzBqqplmUKZfLuXPnTgZM0A7oWz60iRBomDVU7eLFi2zQoAGVSiVTU1O5Yv4MJszUCGnzNuFSr2GMj48nmT1UTbMoMyoqiovHdKNcI5U2cpop161aTolEki1UjdQuyvz06RPXDqypte1PR1nw8OHDVCqV2VYDqYsy1UnRDx484P5+tlr6owPKCKs4nj9/LhRRkhT+348fP6hUKnnixAneG1FcS7++v6uwgubPP/9k586dhW1/+fKlsHpIKpVyw7o1/DHFVCsNesmojsL2Zi2q1izKTExM5NLpnkybk/nZybNMuGzOZCYnJwvJ1ydPnhT0mkWZYWFhXDbcQ2vbgyebCom8WYuqsxZl+vr6cnO/Slr660NFQiJv1qJqdVHm+/fvSaqSvM8MLKWl39XPkc+ePSNJXr9+XauoOiQkRFg9pE7yfjvWXEu/anA9Ybl41qLqmzdvCpEB6enpXL1kHmNnZLa9dK4Jl0zsL6xmyVpUvW7dOg4ZMoSkahXZ4vF9KdXot7EzTLl66QKmp6fnWFStGVL65csXrhqkHU74Zow59+/fT4VCkS1AVP3/1FYdT58+5Z5+Dlr60wNLCaZyWYuqNUNKlUolz549yxtDtcMNN/erJBj6HTt2TCtAVDOkVJ3kHTLZVEu/bEQrwUwxr6LqfwN/a/jhvxFdDYuOv5STgwG/s8LDgDg9NDymKrhTz7VrGo1lnf9/2EeK8uaZP6uzn/Ux6oZq7j6noDXN8DdDfSLcU7uAbulTA2x8bZhr0JrmNrlYKnGrp0xL38/HEDe+GeQatKa5Tb2cFdjcXLvwtMYBY3xPyV6fA2QPaVtUTw7PapkmkUkSoOweVVtlnWsHkG2bTnaQorFNZts9DddDx3Oqto+PjxdqKtRkDS30GyyBSMNLa+97fcx8YJQtRFGNZmihqBDhN0S77afdM8R+P4Mc63OyblMjayVOddRu+3ZnjPAiUl8rRFGNepvUtQaernIsqq9tsOmw0xipcj2tEEU16m0qXrw4AGBTMxl6V8gsCv6WCNQ6rGp7zRBFNRKJBOnp6cI23ewhRVVRZttfCdbHoCt591uSwjb9GCWBkYYH3NqXBlj53DBbHZYazTqPcuaqcENNhl0zxMUgg1zDGTW3qVNZBXZ5aPfbekeM8CVBXyv8U03WfjurthyT3TLbXqoArP9QtV1OoaKagaQAcKCNDK0dMtveV6wHj1OqfppTqGjWbXrZXwJbjVPXEX99TLqTe7/VDCQtakR8HaHdb9FqGVB3LIKDg9G0aVO8e/fuX3tu/FvDD/+N6O6w6PhLebZTO4b+wiSS5JUrV3K0wFcoFKxTpw6vXbtGklRemKgd5/5c5W+yatUqjhw5MtvHJSYm0s7OTrDplv/RLPMqf74pGay6A9G/f39u3rw5m/7jx4+Z5mUZSZStcBL08sWlyITvlMvlrF69Ou/evZtNr866USqVpPgT5Qsy71LI17mQciljY2Npa2vLsLCwbPoFCxZw0iRVG9H/kta+Kw71JKm6A1C+fPkcLfDVWTckyburtNvupsqY6/DhwzlmNWlm3ZCk8vhAbf171TLxGTNm5JjVpM66iYqKIhUKyjfWyNz2BeZkhCq0sG3btjxy5Eg2/ZMnT1ilShXKZDIyOYqyJWUEvWyZHZkWx4yMjFyzmnbt2sXu3burHoS9oGJ+5t01+dZ6qqfDwnI1Bhw/fjwXLVqkevD6oHa/PaOKW7h7926OxoDqyIBz586pnrgyU7vtHqn62ubNmzlgwIBsn63OulFHUij2ttPWf1bdgcgtq+nLly+0s7NTRVJI0yhb7Zy57wtFZJwqtDC3rKbLly+zXr16qn4b+1WlUbf96gqkNE34beVkDLhy5crMSIrPN7T77Z+qsE1/f/9cjQH79euXGUnxcKP2vl9RxS2cOXMmx6wmuVzOatWq8d491fJq5ZmR2vrXqhiCBQsW5JjVpA4kVd9FkW+pm6ldYE6GqSwQunXrxj179mTT/5v4j/mw/FvQDVh0/JV8+vSJ89tYUXawB5e1KMRL504LJ8bnz5/nqHn27Jngunnx7CkeGFyePgNMOb+NFQMCAgTHTbFYnKN+z549wolrzaJZfDCzFi/2N+XIRqWZnJysfWLMgYkTJwqumxP6teXnlU14po8Jh7WpTqVSKYTA5YRmEJpMJuOQpmUZs60tD3QrytljVVktEyZM4OLFi3PUq83L/P39GRUVxQlNSjJ9X1dualuYu7euF06MuXkxqQMAExMT+fzZU67tYk35wR6c27gg79+7k+3EmJWrV6+yTp06VCqVPLB7O8+PqUKfAaac0qwkf/z4IYTA5ZbVpDmQnD95BF/Pr8tzfU04tLE9JRIJL1++zPr16+dq6jdgwABu2bKFSqWSIzrUYdj6FjzRqxjH9GhGMsuJMQuaA8nU1FQOb2TNxJ0duKdzUS6bM5lklhNjFtSJvWFhYfz69Stne1hReqA7V3sU4qmjB4UTY25ZTZoDyetXfLirnyN9BphyWYfSfPf2LWNiYmhra5trVtORI0eELKXNqxfz9tQavNTflGMaWzE+Pp5v3ryhs7NzrllNmqGfU4d2o//SRjzbx4RDW1amQqHI5i6dFfVAUqFQcEjzioza0pqHuxfltOGqvj5jxgzOnj07R616IOnr68u4uDiOaWzFtL1duK19EW5dq/L9adOmDY8dO5ajXnMg+dbXl8s6lKbsYA8ubFqIN65eFtylc8tq0hxInji8nydGVKTPAFPOalmSwcHBgrt0bllNmgPJpbMm8umc2rw0wIwMUA3u7ty5Qzc3t1xN/f4t6AYsOnT8L9BMPjY3N6ezszPXrFnDQYMG5akbOHAg165dKxwERSKRcMAdNmwY165dm6tWoVDQzc2NJ06coK2tLWNjYykSiTh9+nTOmjWL7u7uvHHjRq76uLg42tjY8MSJE8JBUCQSsXXr1tyzZ4/guJkbatfN9evXCzb7lpaWLFeuHM+cOSM4buaG2nVz5MiRwtW0hYUFbW1tuW/fPrZo0SJP+/lZs2Zx2rRpWlfTpqamrFGjBr29vTl58uRctSTZrl077ty5U7iaFolE3LhxIwcOHMjOnTvzzz//zFWbkZFBZ2dnnjlzRriaFolEHD58OFeuXCmkMufG9+/faWNjwwMHDghX05aWlqxduzaPHj2a50CVJO/fv89q1apx/vz5gs2+Orbg5MmTdHFxyXWgSpJbtmxhv379tJKPzc3N6eTkxM2bN7Nnz555tt2oUaO4bNkyVq5cmc+ePaNIJBLuuo0dO5ZLlizJVatUKlmvXj0ePnxYuFMlEomEhOlGjRrxwoULueqTkpJoZ2fHU6dOCQN+kUjELl26cNu2bbS3txfcpXPi06dPdHBw4LZt2wSbfUtLS1aqVImnT58W6sNy49y5c2zSpIlW8nHx4sVpY2PDw4cPC/VhubFo0SKOGzdOK/nYzMyMVapU4ZIlS+jp6ZmrliS7d+/OLVu20MHBgf7+/kIgaY8ePdinTx9u27YtV61MJmOVKlV46tQp4U6VOtxQ7S794MGDPD//34BuwKJDx/8QHx+fzNvMVGVvDBgwgKampgwPD89T++PHD5qamgoDG5FIRKVSKaTiqotFc+PBgwc0MzMTpn1EIhETExNpaWnJFi1a/HLbt2zZQjMzM+E2s0gk4sePH2lqaiok5ebFkCFDaGpqKlxNi0Qinjlzhubm5jx+/HieWqVSSVdXV1pbWwtX0yKRiN7e3jQ1NRWKO3MjKSmJlpaWbNq0qfCcSCRimzZtaGFhIRQN50ZAQABNTEwEN2J1kradnR0rVKjwy6vMCxcu0NzcXJj2EYlEjIyMpJmZmeDSmxfz58+nqampcDUtEon49OlTmpmZ/TIRmCTbt29Pc3Nz4WpafeIyNzfPNYdNjUwmo729PZ2dnYVpH5FIRE9PT5qamgoF27khFotpZmYm3IFT91t3d3daWVnlOVAlyRcvXtDMzEwrETg1NZUlS5bM886Umj179tDc3FwYqIpEIgYFBdHU1FTLAT03xo4dS1NTU2FKVSQS8erVqzQ3N+e+ffvy1KqnnKysrIRpH3XejpmZmeAunRtpaWksWbKkcIdPre/atSvNzMzyHKiSZHBwME1MTDh69GhBK5fLWa5cOTo6OuY5UCVVDtPm5ubCQFU9YNF0l/638zvnb8Pcq1t06Pj/C6lUiilTpuDgwYNahZXqQsFfLQVUv0+zsFDztfzoSWrp1QZqOf3P/Ohzeu5X26+5nQYGBirTsV8k6mq+N6e2+9XnqzVZ2yi353PTZ2079Xb9CnU7ab73d9pOve85tX1+P19zm9X/U6lU/o+/u/z2nZzaTvO1/22//ZVevZ85tf3vfHf/m36ftd/mt9/n1j757fc5vU/9P3/nmKG5nWp36QcPHuSp/T/JXz1a+ifQ3WHR8VeguVRSjbm5OcuVK8cVK1bkmnWjZsiQIVy1ahXLlSvHd+/eUSQSCVMlgwcPzjHrRo1CoWCtWrV4+PBhYbmoSCTirFmzOH369FyzbtSol0oeOXJEmLcWiURs164d//jjj1yzbtSol0quXr1auENkaWlJZ2dnnjx5MtesGzUnTpygh4cHhw4dKkx9qROB9+zZo7UsMye8vb3p5eVFd3d3YTmoqakpq1WrxlmzZnHq1Km5akmyY8eO3L59uzD1JRKJhKmSDh068MCBA7lq1VlNJ06cEKa+RCIRR40axaVLl7JChQpCwnROhIeH08bGhnv37hWmviwtLVmvXj0eOnQo16wbNeqsJs2pr+LFi9POzo7Hjh3LNetGzfbt29m7d2+tqS9zc3M6ODhw/fr1uWbdqBkzZgwXL14sTH2JRCJhqiS3rBs16qymgwcPClNfIpGIixYt4vjx43PNulGjtgU4fvy4MPUlEonYvXt3bt68mfb29kLCdE6obQE2bdokTH1ZWlqySpUqPH78uJYFQU6os5o0p77UU0IHDhzQsiDIiaVLl3L06NFaU19mZmasVKkSFy5c+MtU5F69enHjxo1CsKpIJOKePXvYtWvXbBYEWVHbAhw/flyY+hKJRJw0aVKeYZz/NnRTQjp0/CZZPUIOPAnhqIMvadGoP0+ePpstgDArL168EBKDT5w6w2r957BMz/m0bzGA/v7+wkkttxPXvn37hAj4WfMXs+nU7SzdYy7t6rVnUlISHz16JAQQ5oSmR0jbXoPYcelJluo6i24tu1CpVOZ5i1jtEXLq1ClKpVJWaNiOfTffYMn2kzlwlKqmYuzYsVy2bFmOerVHiJ+fn6q4uEEXDtn9iJbNR3Ddpq1UKpVs2LAhL126lKNe0yPk0ePHLN9hNEfuf06zuj14+86dbF43WdH0CNn2xy7WGbWcZXrMo03DbgwLC9PyusmJtWvXctiwYSTJkROmstWcfSzd3Ztl67VlRkYGL126JAQQ5sTgwYO5ceNGVT1Hm+7stuYCrTpPZ/Ou/UiSy5YtE7xusqLpEZKSkkL7Om04YPtditqM56QZKo8WTa+brGh6hHz58oV2Tftw+J9PadFkEPcfOpLN6yYr7969ExKDL/lcZpVe01im53w6tR7KN2/eCEnZuU2HHj9+nK1bt6ZSqeSi5avZeNImlu4xl7b1OjIuLk7L6yYnND1Cug0cyfaLjrFU19l0adKBcrlcy+smJ9TBi3K5nC5NOrD3xqss2WEKewxWFTlPnTqVc+fOzVGr/k2/fv1atQquXkcO2fWQlh6eXLJyrZCUremdo4k6eDEmJoavX7+mU5thHLHvGc3r96HP5SvZvG6ycv/+fWEw+ueBQ6w5dBHL9JxPu6a9GRQUpOV1kxPbtm1j3759SZITZ3izxczdLN3dmw712uW4qunfyt8afqhDx38jc+fOxbhx42BlZYVDT79h7rkPuPohEsXq9oavvhOMjY2xdu3aHEPa+DNobe3atTAyMsJbg7KIL1MXhg61QLdeeJVYCKVKlcLYsWMxb968bJ+dnJyMBQsWCEFrn0RN8NXABkaOtaHXcBQ+xcpQr149VKlSBbt27cqmDwgIwNmzZzF9+nSkSuSIqtwHb5MKwbhcfaTVHo6oJAmGDx8Of3//HG8TX7hwAQqFAl27dkVoggTyBqPx6LsEBSs3R7BDR8gUSixcuBA7duzIFtIGqMLv2rVrh0qVKuF9LKBffxhuf45HkZqd4GdSSwhpmzp1araQNgCYPn065s6dC1NTU7zJEEFSqR2ufRTDtNEgvJGWQtGiRbF48WJMmTIlm1Yul8PLywsbN26Evr4+PhSpjggzFxg6ukO/3hC8izdAuXLl0KNHD6xYsSKbXiwWY8OGDVi6dCmUSiLIpg0+yS1h5FQHykajERwvQdu2bVGkSBGcPHkym/7Fixd48eIFRo8ejdhUKZJqDsXLaH0UcG6E2Kr9kZgmw+TJk3Hjxg28f/8+m37//v2wtbVFs2bN8CVOBr3GY3A/JAWFq7ZCYKkWAICVK1di2bJliI+Pz6ZftGgRhg4dCltbW7xJKAC498ONTzEoVrsHPhSoBENDQ6xfvx6TJk2CUqnU0pLEpEmTsHLlShQsWBC+tEOyfWMYOtSC3LUrXqWYwtLSElOnTsXs2bOzfXZaWhpmz56NdevWQU9PD5+K10dIAcef/XYEPsYq4Obmhvr162uF3aoJDg7GoUOH4O3tjQyZAj/Kd8f71KIwLlcP0nqjEJ4oQf/+/REREYEbN25k01+7dg3R0dHo27cvwhMlkNQbhSfhchSs1BTfy3VDhkwBb29vHDhwACEhIdn0mzdvRsOGDVG9enX4xSqg13AEbn9JQJHq7eFvXi/PQFIAmDVrFqZNm4bixYvjVYop5FW74Lp/NEwa9IMv7VCoUCGsWLECkyZNynbMUCgUmDRpEjZs2AADAwN8KFgZ0aIaMHSoBbj3h2+CMezs7DB48OBsgaSAyoNmxYoVQqhooFULfKYVjJzqAA098SUu++/svwHdgEXH//f4+vrizp07mDhxIgDgSVCs1uvqx23btoWJiQmOHz+u9fqxY8dgZmaG1q1VoX6Pv2jr1Y8nTZqEmzdv4t27d1qvL1u2DL1794ajoyNkCiVehyUKrxF6ePZVpV+xYgWWL1+OuLg4Lb2XlxeWLFmCIkWKIDgmFTGpmQZaaTLiw49EGBgYYMOGDZg0aRIUikyDLIlEgmnTpgmJwK+/xUOmcV4Ljc9AVFIGihcvjqlTp2LWrFlan/39+3fs2rVLSMt98jXntqtevToaNGiAzZs3a72uzmpSJ7M/DorRev3Rz8d9+/aFWCzGtWvXtF7fsWMHqlWrhjp16gAAnmb5fPX/8/b2xsGDBxEcHKz1ure3N8aPH4+SJUsiNlWKLzGZJyYF9fAyJB56enpYt24dZs+ejbS0NOF1kpgwYYIwUP0UkYxkaWbjxacr8FmcjIIFC2LFihXZBrtJSUlYuHAhVq9eDQB4ERIHJTJrFvwiUpAikcPW1hZDhgwRUpfV+Pv748KFC5g2bdrPttZuu8dfVI+bNWsGW1tb7N+/X+v18+fPgyQ6d+6sausvWfQ//9/o0aPx/PlzvHjxQuv1NWvWoH379qhYsSIA4Fmw5oBKT/july5dig0bNkAs1k4InjZtGubOnQsTExN8j09DRHLmSTZDAbz9niAkaXt5eWklactkMq2Bqm9YAiQannvhSVJ8j0+HqakpvL29MX36dM2PRlRUFDZu3IglS5YAUPebzLZ/Gqz6jVWqVAlt27bF2rVrtfTPnj3Dq1ev4OnpCSB7v1e3ZdeuXSGXy3HhwgWt1/ft2wcHBwc0adJEpQ/Kud9Onz4dZ8+eRUBAgNbrCxcuxLBhw2BtbY3kDBk+RmYmYSuhh+fB2seI/xZ0Trc6/r+GJJo2bYrJkyejU6dOePv2LQatOooEm4bCe9I+PYT07nYYGxtDLpcjMTFRcMhklkRgqVQK4yajUbhCZipu0sPDwMerMDQ0FNxFTU1NVSm0Gsmq6sTiYr1Wwai4jaCPP78cRtGfoK+vn81dVDPhGADSlfqwGLgZ+gVUrpxUyBB/eAoKyJKgp6eHxMREGBsbC4nEmonASqUSkqJWsOi5TEh2VaQmIOHgeBQyNswxkVgzEVihUEBhWwtmrcYL2y75/hFpF5cIacuajqfMkggsk8lg4NYDRWt2EvQpvlegeHYYRkZG2ZOnNRKB9fVVbrKF2k5HQY1U3MRbO6D/9TEMDAyQnp4OqVQqOBJr/j8AyJBIYTpgMwyLFf/ZN5SIPzUPxolh0NfXz+Z4mjUROMOgMMz7rYe+kcrRVClNR9zBCSgElYNr1iRtzURghUIBWXEnWHSdL2y7PCESSUcmC4m/mv2MWRKO5XI56NwMpo2HCPr0L88gubkJxsbG2RJ81d+l2ilWKpXCqMFQFKnSXNAnPz0JvrsgvK6ZSJxTvy3abQmMSzoJ+gSftTCMeAd9ff1sSdqa/w8AMuSE2cAtMCj0M2lbqUDckWkoKImDnp5etiRtzYRjpVIJSSFLWPRZldlv05OQcGA8Chll72eAtuuyQqGAoowrzNpm3sGTRn5B6tl5Wv1W7TabU7/Vd+2EYnV6CPrUD7cgf/QnjIyMsiVP59RvC3pMQiEn98x+e3cv9D/fhYGBQTYnbc1jkLofmvbbCEOzzJDhQ8Nqo0E5S/xf4G9Na9ah478CpRJIisDZk8dgZGSEunXrwtPTEz179sS45s5QfroFp+KFYBT+FnNaOaJChQqoW7cunj9/jokTJ2L82NEQf/HFuDGemDRpEp49e4Y6deqgYsWKmNPKEUYRb+FUvBD46RZWD20JkUiEbt264fPnz2jUqBF2bd8C8Ze3aNSoIfbu3YsLFy7A3t4eLVq0QF/rJJhlRMDO1BCGHy5g8eieKFy4MMaPH4/Q0FCUKlUK92/44Pun1yhdujQeP36MHTt2wMzMDEP69oRb6guUNEhD6YJy2H6/iQlD+6BIkSJYsWIFPn78CAsLC3x59xzvnt+HhYUFgoKChETeWSP7wjzwEmyKApZMQAujAHTv0gkikQgHDx7ElStX4OzsjMgvb3Hh1DGUL18eoaGhqkReExOs9OwCvPeBo4UxiiR+xZhqBVGnTh1UqFABN27cwKpVq9C1SyeIv/hi+ZKF6NatG/z8/NC6dWtYW1tjWZ+6QNAjOFkWgl7IMyzt4QY7Ozs0b94cb9++Rb9+/TDfexbEX3zRp3dPLFq0CHfv3kXVqlXh5uaGie5mKBQXCEeLAqDfVawc0RGmpqYYOHAgvn37hipVquDkkQOI+vIWLi5VcPbsWRw9ehRWVlbo3Kkj2hUNQXFFHGyK6aGY/0XMGdkbhQsXxsyZMxEcHAxLS0u8fnwHXz+8hKWlJd6+fSsk8o4Z1Bvlou6iVAEpShplwCXhMUb07wUTExNs3rwZL168QMmSJRHq/wpP7lxDyZIl8e3bN3h5eaFIkSJYOLoPCnw4BzsTA5hLxehqGYk2bdrA2toap0+fxuHDh+HuXgtRX3xxYO9OuLu7Izg4GL169ULx4sWxenhbKD9eh2PxgjCO8sP0JmVQpUoVuLm54dGjR5g5cyZGDBsC8RdfTPOahJEjR+Lly5do2LAhypUrh4Udq8Ag7BWcLAuBgXexcmBjlCxZEh07dkRAQABat26NTetWQ/zlLVq38sDWrVtx5coVlCtXDo0bN8bgsjKYpIbB3swI+u8vYqlnNxQpUkRI8ra1tcUNn7MID/SFnZ0dbt++jT179sDCwgL9enVHfbkvRHrJKFNYCauvVzBleB8ULlwYixcvRmBgIMzNzfHpzRP4v34MCwsLBAYGYuHChShSpAimDu+DEkGXYV1YCZFeMhoq36NPj66wsLDA3r17cevWLTg4OCDi81tcv3QW9vb2CAsLw6hRo1CsWDEsH90Deu8uwMHcGMVSQjG0vEJolytXrmDz5s1o26Y1xF/eYsPalWjbti0+ffqEDh06oFSpUlgxoDEYeA9OloVgEPYKCztWgZOTExo1aoRXr15h+PDhmD5lMsRffDFsyCDMmjULDx8+hJubG6pWrYppjUqhgPgjHIsXBD9ex+rhbWFubo7evXsjODgYNWvWxIG9OxH1xRe1atXE0aNHcerUKVhbW6Ndu3boUjwC5lIxKpYyweJOlf/PDFZ+m7+4fuYfQVd0q+O3SE8kdzUn55swcZYpd8zsRxsbG65cuZIZGRkcOHAgN23aRJK8desWa9asSZlMxgMHDtDe3p6LJw3mNy9Tcr4Jv3mZcsGEgXRwcOChQ4cok8no5uYmBPZt3LiRgwcPZkZGBlesWEEbGxv+Mas/E2ep9L7jRBzarztdXFx469YtoYhSbYGvNpyLjY3lhAkT6OTkxKPT2lA2V6W/O74cmzZpzObNm/P9+/eCAZw69E296ubr16/s1q0b3dzceHlSdSHc75xXA1auXJmDBg3ijx8/hFVNJJmQkEA7OzsGBwfz+fPnrFu3Lju2b8Mn42zI+SZM9zblgZndaGdnx1mzZjEpKYmzZ88WPF/8/Pzo5OTE1NRUXrx4kc7Ozpw4vC/9J1iQ800YPd2UG2cMpo2NDTdv3kyZTMb27dvz0CGVLfmpU6fYvHlzymQy7tixg7a2tlw9dRAjp6n2PXCiOad5DhDM7dLT0+ns7CxY4M+bN49eXl5MSUnh3LlzaWdnxz9n9mDaHJX+2bjS7NapHd3d3fnkyRPBAE5tgd+lSxfu27ePkZGRHDZsGCtUqMDTU5tSMe9nuODEqnR3d2enTp34+fNn3r9/XzDtk0qlwqobf39/tm7dmvXr1+OtCRVU1vPzTHhiWkuWK1eOo0ePZnR0NLdu3cp+/VSFuurIALFYzHv37rFatWrs37MLX41TBWsmzzbl7pl9aGNjwyVLljAtLY2jRo0SvFAeP35MFxcXSqVSHjt2jI6OjvQeN5BfJ6us/39MMeUyr8G0s7Pj3r17KZfLWa9ePV65coUkuXPnTvbq1YsSiYRr166ljY0Nt8wYwLifAYXvxxen5+DerFSpEq9cucKkpCTa29sLFvjjxo3jkiVLmJCQwClTptDBwYGHZ3Sk5Ge/fTjega1atmDjxo355s0bwQAuJSWFSqVSWHXz7ds39u7dm66urrw02T0zkHRybVatWpV9+/ZlaGiosKpJqVQKzsgBAQF8/fo1GzVqxNYeLflwvCqgUDLXlIdmdKKDgwOnTp3KhIQELl68WDDt+/z5s1CkfeXKFVaqVImjB/fmh/GqyIq4GabcOnMgbWxsuG7dOkokEvbo0YO7dqkiOHx8fFi/fn3K5XLu2bOHdnZ2XO41SAjWDJpkxjljB9DR0ZHHjx+nVCpllSpV+OTJE5Lk8uXLOXr0aKalpXHx4sW0sbHh7pm9mTJbpX81riT79ujC6tWr8/79+4yKiqKNjQ0jIyP/umPkfxDdKiEdOvLiznKt3I6I2aWF1UFPnz4VHDfVaGbdJCcn88Pc6lr6D/OqCytQ9uzZIzhuksxm6R8eHs7I2dqpuM9XdRVW/2ha7JMULP2joqJIkv6+z4XBivrv2T5vKpVKwWL/zJkzgj6rpf+Lczu0M0vmm9D3tur9qampdHR0pL+/v6DXtPRXKpV8um20ljbN25xBX1TLTtUW+5oW+OPHjxcs/TMyMvhqSXMt/dfZjkIib9asJqVSycaNGwtZN3FxcQycU15L/3phQ2G59apVqzhixAjhs7Na+oeEhDBpjnaa87NNQwVTuQEDBmhlNQUFBWlZ+r97eEUYrKj/XpxcTzLTYl9t2kdmyboh+fzwUi2tfJ4JPzxXvV/TYl/N/2PvL8Pi2LbufXjghCQQpKNIBEIMiLu7644nO+5GhBAFYsTd3d3d3d2VGBCsgwZvG/8Pvau6C7rJed73d87z7H0Y18WHrmZ2V61eVbVqrTnHvWDBAtHSX6VS8cHSnpL42OkFRZO/58+fZ2M16Vv6p6am8mVgdUn8+xkVxGvmvn37JKymrJb+MTExDJ/mIj32+W3E80TfYp/Mzrr5+PaVOFgR/h5snii2jb67NEk+e/ZMcjxPz0s5SQy05bMLe8R+JbhLC9K39NdoNHywaYIkNnOmHT++05Kvw8PDRXdpQZMnTxYt/RUKBR8Ht5bEh01zFc9JQ6ymli1bcv/+/SS196f3M8pL4l8G1hAreVavXi26S5PMZukfHh7OuOkFpf12WU/x+/Tdpf+OyqU15ypXOenCNODBWvGlPA2osEObV2CICJyV1HuknQL19YjCN8NN0PW0ZTb6riBhvV7IlchKFF7/wgyB98yNEoH11/8NEYXHXDXHwY9m2ei7gvTX/xs4a3A4C1G48SELvInNnh8jKCEhAfny5YOFhQVG+KgwS48orNYArpssodSYGCQCZ22TrERhfRK2ISJwVlJvVqKwQMI2RgTOzMzUrvHb2cEERPgwBSz1vMCCH5phxVNzo0RgfZJ2aXsN7mQhCvc5a45LoWYGicCAlKRtiCgskLD16bv60m+TrERhfRJ2YmIibGxsJP02K5F4d2slWhTXtf3DKBO0O67rt1mJwFlJ2k/7ZsIlv27ftr8xhf8tC6P9Vp/ubYgoLJCws54fgvTzTGoU1uB0Z8Mk7Kz5MYL0z+UB5dVY2EDa9iU2WyJVmT0/BkC2NllUX4n+FfRI2L+Aant01wzh/BCUtU3OdFKgepHsJGxj14ys5/LXwZnIp/tpgXqTgCYz8eLFC/To0QMvX76U0KD/TsqlNecqVzkp+i1TZziITyupF7WGUbt27WK7du0MhggGbiSpenuKypl/UWFn2lL1VmsY5efnx+nTpxuM11/qSL0wR/fdMx3ImHei54MhC3yBdSMsdcRv7iTGJwS5kalxTE9Pp7u7O1+9epUtXljqiI2NJRXpjA2uoHtKX1qLVKsYGhpqFLQmsG5UKhWZFMGkgMJifNI+7YyGsHRmyAJff6mDYQ+ZPkNHJM68u54kuWLFCqOspmHDhnHBggUkScWjHeIsR+ZMO2q+amco9A3r9CWwbgTzsqTDY8Tv/jWzIBn/XVw6M8RqEpY6Pn/+TKrVjFvZUIyPm1uGzExhYmKiUVaT/lIH0xMZP7ukLn5dK1Kj4Zs3b4yymk6cOMEGDRpoZyJ+hjBlppMYn3JaOwNw+PBho6wmwcCNJDWfLlHxV79VzcxP1YtDJHVLZ4akv9SRfn2p+N3pM+3JiOckyY4dOxq0wBdYN8JSR8KOXmJ8YmAxMlkueqEYYjXFxMTQ2dlZO/upzGTsQh1JO3ZRFVKlkCydZdWjR49EbyQmx2i/Uzhvdmr74927d42ymrZt28bOnTtrX0Q8Z9oMe93xX19Gkty4caNRVpOvry8DAwO1bfHiIFV/9VvFTDtqPmn7mjFWk0ajYePGjXn06FGSZPIpPZL2fFfyZ4hk6ezvrNwloVzlKgfdu3ePLWuUoerRdrYqk5djx479rTmZcOMKCQnh5s2bOblvC46v78BJfZpzy5YtvzUn+/jxo3jjGjNmDHfPGsxx9ezZvJonHzx4IDpuGjMnO3XqFOvXr0+1Ws2GDerz4Y7pHFXHnhVKFmN0dDTnzZtn1JyMJOfOnctRo0YxJSWF5TyKM/L8Mg6qbkef8mWpUChyNCcjtY6cGzdu5OfPn1m1jCvT7m7iH9752KVLF9Gc7O7duwZjlUolvby8eO/ePZ49e5Y9m1Wh5skONnK34axZs35rTiaY+kVGRnLBggVcMLoLfevbc0Cbmjx27NhvzckeP37MsmW1x9mrVy+eXjaG4+rZs1Z5N7579+635mQ7duxgx44dqVKpWLWSD98dnssRtQuwXClXJiUlceLEiUbNyUidqV9sbCzLl3Jm/LU1/LOqLWvVqE6VSsVmzZrx0KFDBmM1Gg2bNm3Kw4cP89mzZ2xYsRQVD7eyXbm8HDJkiGjaZ8ycTHj/zZs33LNnD0d3bUg+2cFabtZcvXr1b83J9E39Jk+ezE3T+9G3nj3b163AGzdu8MqVK6xWrZpRVtPly5dZvbr2OFu0aM5bm/w5uq49fTyKMSwszKC7tL6WLl3KgQMHMj09neVKl2Lo6cUcUtOO5T3dmZGRwQEDBnD58uVG4wWH6bCwMFb0cGbK7Q3sXjE/W7duJbpLG2M1CaZ+165d47Vr19ixvhfVj7ezWWkbTpkyRXSXNsZq0jf1W7lyJQMHt+P4+g4c2aUB9+7dK7pLG2M1vXr1SnSYHjRoEA8vGMFx9R3IhDCSOnfp37Ga/q8rd8CSq1wZkXCREp6mnZycWLJkSQ4dOlR03DSmnTt3snXr1hL792/fvtHNzY2tWrXi7t27c4yfNGkShw0bJrF/F1xaPT09c7R/F2ZgJkyYID5Ny2QyLlmyhD179tTNoBiR4Lo5bNgw8WlaJpPxzz//5NixY39r/x4aGko3Nze2adNGfJp2cnJilSpVOH78eNFx05iuXLnCKlWqsGzZsqJbsEAk7tu3b4727yS5fPlydu/eXWL/LiQY16pVK0f7d1KLTRg7dqzE/n3//v1s2rTpb+3fhT7j6+vL7t27k9S23bRp0zh48ODf2r8LN7Y///xTfJqWyWRs27Ytx48f/1v799evX7NUqVKsU6eO+DTt5OTE0qVLc+TIkb8FBB46dIiNGjUSE1FJHTahY8eO3LRpU47xM2fO5KBBgyT274JLa4UKFXjv3r0c4zt06MDx48eLIESZTMa1a9eyc+fOEndpQxJmYEaNGiUBBA4bNoyjRo0SB6LGJDhMd+7cmevXa2fznJycWKdOHU6YMEF0lzYmwWFa3y3Y0dGRxYsX58CBA0V3aWPasGEDO3XqRBcXF0ZERFAmk4mzbg0bNuSRI0dyjB85ciRHjRolDsgFuKG+u/TfXbkDllzlyoiyPk3LZDKuXr2a1tbWTExMzDFWrVazcOHC4vKGcPHo1asXixQp8lsicEJCAq2trcVESCG+fPnybNCgwW/3/enTp7SwsBCnz2UyGTMzM2lnZ/db1g6ptfK2traWEIHDwsJoYWEhJrbmpD59+rBQoULiccpkMp47d44WFhYGl0OyqkKFCqxXr574WiaTcfr06cyXL1+OnCJSm/hoZ2cnsnaEtmvatClLly792++OiIighYWFeIMQiMTOzs6SJGljunjxIi0sLMQqGJlMxuTkZObJk+dfojEHBAQwX7584tO0TCbj69evaWFhYdQ2X18tWrSgu7u7hAi8fft2WllZ5cgpIrWDXVdXV8nNWSaTcciQIXRycspxoEpqk5dtbGwkNGaSrFKlCmvUqPHbfX/79i0tLCwkFHGlUkkHBwdxEJKTdu7cSUtLS3HZRyaTMSYmhpaWluIya04aNmwYHR0dJSTrmzdv0sLCQkzIzknVqlVj1apVxdcymYzz58+njY1NjgNVUpu87OjoyKFDh4qxpJZ95ebm9tvZEblcTktLS+7cuVMSr7/U93dXrjV/rnJlQMnJyQgMDBQt8AVdv34dLi4uv6Wbfv78Gaampnj+/LnouqlUKvHs2TOYmJjgy5cvOcbfvn0brq6uuH79urgtJiYGcXFx+Pr1q2gkZkznz59H2bJlcf78eXHb8+fPYWtri/v372ez/86qGzduwMXFBbdu3RK3Xbp0CaVLl8alS5dyjFWpVHj+/DlMTU0REhIibr948SI8PT2zOdBm1c+fPxEXF4dv374hOTkZgDax8c6dO3BycsLTp09zjH/x4gVsbW1x79498TjT0tLw6dMn/Pr1yyAyQF+XLl2Ch4eHxOL927dvUKlUeP36tUFkgL4uXryIMmXK4MKFC+K2O3fuoFixYr/tN/rHqe8We/78+WyfaUjp6en49OkTUlJSJMd55coVlChRQtKfDCk0NBQKhQKvX79GZmamuE+PHj2ClZUV3r9/n2P8vXv3tN4/ev0mPj4ekZGR+PHjBxITE3OMv3DhQrbjfPPmDfLkyYNHjx5lQwZk1bVr11CyZElcvXpV3HblyhWUKlVKss2QNBoNHj9+DGtra7x9+1bcLrS9/rlkSAkJCYiMjERkZKQEjXDr1i0ULlwYDx48yDH+3bt3sLa2xqNHj0SH6czMTLx58waZmZkICwvLMV449itXrojbBHfpoKCgHGP/kfr3jp3+M8qdYcnVvyL9xFlBdnZ2rFy5Mh89ekRPT0+jeRCkLnFWKH+VyWRctWoV//zzT+7evdtowi6pS5x98uQJK1WqxBs3blAmk3Hw4MFcsmRJjgm7pC5x9vPnz2L5q5OTE2vUqMHz58+zRYsWPHDggNF4wcvjyZMnYrmoQAR+//69SJg2JiFxVr/81d7enqVKleKHDx+MJuwKEjxC9MtfbW1t2aRJE165csVowi6pnSGoVasWz507J5a/ymQyBgYG0tfXN8eEXVJ7fXBzc+Pbt2/F8leZTCaWqwteN8YkTOF//PhRLH91cnJiuXLl+ODBAwlh2pAEj5Dr16+L5a8CETgkJMRowq4g4Wlav/y1QIECrFChAl+8eGE0YVeQkDirX/6aL18+du3aVfS6MfakLyTO3rt3j7Vq1eKFCxcok8nEcvWcEnZJih4hISEhdHNz45cvX+jk5CSWq+sTpg3p4cOHLFeuHF++fMmSJUsyNTWVTk5OLFGiBF+/fs2yZcuKlgGGJCTOHj9+nI0aNaJGo6GDg4O4DGgsYVeQQD6eNWsWx40bR1Lbb+vUqZNjwi5J0Wbg6NGj7NKlC7ds2UKZTCaWq+eUsEvqbAZevnwp9jWZTCYpV/8nKHdJKFe5yiLBIyQpKYmZSjVH73vG0tPPsejg9dx39gZJcvDgwVy8eLHBeH2PkNefvtF1wHK6TjxG1wHL+SZEW2lSs2ZNXrx40WD8okWLxGnhvWevs8SobXSdeIwle89mcmq6eFP9+vWrwfg+ffqIHiETl2ylx6RDdJ1whNUGaj1b3r17J17Qs0rwCLlxQ3ucLcfMp8eUk3QZu489py4nSR49epSNGzc2eOOKi4sTzezUajXL9w2ix9QzLDZ8Gxds1ZJsg4KC6Ovra3DfX7x4IQ6SomMT6NZnPt2nnmWR/it5+Z42b0ff6yar9u7dKw6Sbj15TbfBa7Vt33chw6LkotfNw4cPDcb7+/uLg6QVu0+w1Lg9dJ1wlJ59gqhUqrJ53WRV69atuW/fPpLkgIDV9Jh8jC6+h9h45DyS2b1u9JXVI6T2kDn0mHKKzqN3c2TwRpJar5s//vjD4HeHh4eLZnbpGZks1XsW3aeeYdEhG7n1qLavjRkzhrNnzzYYr+8REhIaSdd+S+g+7SwL91nMJ28+UaPRsGHDhkaXBFevXs2+ffuSJI9fvccSIzbTdeIxFu89lwm/krN53WTVkCFDxEHSjNW76T7hAF0nHKFPvyBqNBotYTqLd48gjUbDmjVr8sKFCyTJDhMW0cP/BF3GHWCnidrzNKvXjb6Ec+rLly/UaDT06RdEj6mn6TxyBwPWaj1fFi5cKHrdZNX79+/Fcyo+6ReL955Lj2lnWWTgGp68/oAkcxw8HDt2TBwkPXr9kW6DVmn7bb8lDAmNFL1u9L179BUUFCQOkjYdPs+SY3bSdeIxuveexYxM43k7fzflLgnlKldZ5Ofnh8DAQNja2mLHvW84/TISmSoNLBxdsDtEexrMnTsXq1atQkxMjCRWqVRi4sSJWLlyJUxMTLDtWSJMCnrAxNwSJgU9sPVZggTSplRK/SJiYmKwevVqEbS2O8QMmnwFYWJuCbVzZex/EglbW1sEBARkg7QBwIMHD/DixQsMHz4cGUo1zicVhcLMBiYW1pDLquDWp58oW7Ys2rVrl225CwC2b98Od3d3NGjQAB+if+GDjRcUNINpHls8QmlEJaWjU6dOIImTJ09mi581axaGDBkCZ2dnnH4VhZSiVaHQAOZ2BXEowk5s39OnT+PDhw+SWP5FBF68eDGsrKyw43E0UMwLSg1hWagUtr3RLlEsXrwYs2bNwq9fvyTxqampmDFjBpYtW6Y9ltfpgKObtu2Llsf2xz9hYWGBZcuWGSRpf/nyBQcPHhRpwwfD80FlXQAmFlbIKFYVx15EolChQhgzZgxmzpyZ7djPnz+PpKQk9OjRAz+TM3FbVRIKE0uYWtngS34fvPqRiJo1a6JSpUrYuHFjtviVK1eiUaNG8PHxwcOvcYhwqAQFTWGW1x5X01zwK0OJAQMG4MuXL7h582a2+ClTpmDKlClwcHDAoWeRUDlXgVIDWDgUw55vWmOOoKAgbN68GT9+/JDECkTglStXwszMDFufxMKkcBko1YRVsbLY9iIZJiYmWLFiBSZPniwuFwmKi4vD4sWLMX/+fADAzg8aaGyLwMTcEnSuiN2PopA3b17MmzfPIEn7xYsXuHXrFsaOHQuVWoMTsTIoLfLBxMIaiYWr4vK7GJQqVQo9e/ZEcHBwtvh9+/bByckJLVq0wLfYVLyyLAcFzGFqnQ8vLMrie2wqWrVqhQIFCuDAgQPZ4oODg9G7d2+ULFkSl97FILFwVSg0JjDL74Tjckeo1BqMGzcO169fx8uXL7PFT5gwAcHBwbCxscGuR9Ggc0Uo1ISlrDh2vNMuCS9YsAALFizIBiTNyMiAv7+/CBXd/jIZcCqp7beFy2Db01ijQFIACA8Px7Zt20So6P7v1lDbOMLE3BJK5yo49DQi2/7+NyjXOC5X/3hdu3YNkydPxqNHj2Bqaoqph59i/9No8X1N+i9k7NeSmg2ZUOmD1gDAsqUfzIuWE99XRbyF4qJ2oGDIhErfAAsArHutgqm17vOVby5B+Wi/QUhbtm157GDTc4Xk+DJvb4M65HY2SBuAbNtMi1aAdUvpzSXj5Cxo4r5ng7QByAZ7NK/QEpbVu0vi03YOAdSqbJA2ANlgjxb1BsPCo46u7ROjkHFMO5jQhwEKympmZ9VhFswcXXVt//URFDfWA9CatFlZWUmM66TbTJCn/2YRkAcAiqfHoHp5OhsMUGh7CeyxQDHYdJ4rbfsrq6AOe54NLqjf9sI20xI1YN1ouCQ+/fBkMPlnNrgggGywR/MqXWDp01aMpTID6btHaD9Hz6RN/Ows2yyb+sLc1Ud8Xx0Tgsyz2oFC1j4qbDM1NRVhj9bdlsI0n85YT/nhOpT3dol91MbGRjQv419wRhH2aGkDmz46s0YAUNzfDdX7awb7LbPAHk0KlUaeNlJSeMbZYGhiQrL1USC7cZtZ2SawqtVHEp+2ZySgSM/WRwEpVNTExAQWtfvBokxDMVaTEouMQ1pKtiHDxazXEcs202FeyF18XxX2AoorKwEgG5AUyH4dydN3A0wsdMZwIxuWwuSWZfBPUC78MFe5+ksqlQrjx4/HypUrodFosHbtWuxd4AdodE80FlGv0KZNG7x8+RLx8fFwc3PDhQsXIJfL8fbtW9jb2+Pbt2/4+vUrhgwZAvMI6dOYWcRLDB06FF+/fsXXr19hb2+Pd+/eQS6X4/z58yhevDji4+Px8uVLtGnTBpZRr3XBGjXMol4jKCgIUVFRuH79OooXL46oqCjI5XIsXboUbdq0QWJiIq5fvw4fzxKwSPguhpsq05EvJRybNm3Cz58/sWbNGrRo0QJyuRxyuRz9+/fHtGnTEBcXh4MHD6KgWSrMM5N0x572E272Fjh9+jTi4+MxdOhQTJw4EXK5HDExMahatSoOHDgAuVyO5cuXwyouBCZqXYKqecw71KlZA/fv30dSUhKqVauGHTt2QC6XIzQ0FAULFsSzZ8/w48cP+Pn5wSzyJaD3jGQW+RLdunXD+/fvERMTg0KFCuHu3buQy+V4/PgxnJycEBkZiY8fP6JXr14wj5S2vWnES/j6+iIsLAyvX7+Go6Mjvn79Crlcjn379sHb2xuJiYl49OgRGjZsAMvoN2KsiVoJy9iPWLx4MWJiYnD8+HF4eXkhJiYGcrkc06dPx59//omEhAQt5K9Qflik6Aa6ZopkOKgTsHfvXsTFxWH27Nno2bOn2Pbt27fH0qVL8fPnT2zfvh0FMmNgpkzVtX3SD5R1LYQrV64gMTERnTt3xrx58yCXyxEdHQ13d3dcvHgR0dHRmDt3Liyi3wIanVureeQrNG/eHM+ePUNCQgI8PDxw4sQJyOVyfPr0CQ4ODvj48SO+f/+OkSNHwiziRZZ++wIDBgzA58+fERYWBgcHB7x69QpyuRzXrl2Ds7MzYmNj8ebNG3To0AEWUXptTw3MIl5h+vTpiIyMxP3791GsWDFERERALpdj3bp1aNSoERITE3H79m1U8ykPi7jPurZXZSJP4jesXbsWP3/+xNatW1G/fn2x7YYPH47x48cjPj4ex44dQ7E8apin65JezdPjUSyPBsePH0d8fDx8fX0xcuRIMb5evXrYvn075HI51qxZgzwJX2Gi0s0gWcR+RvWKXrhz5w4SExPRoEEDbNiwAXK5HD9+/EDRokXx4MEDREZGYtq0aX/1W11ysHnkK3Ts2BFv3rxBbGwsihYtiuvXr0Mul+PFixdwcHBAWFgYQkJC0K9fP5hHStve9MdzjBo1Ct+/f8fHjx/h4OCAkJAQyOVyHDt2DJ6enkhISMCzZ8/QrFkzWES9EmMtzUzRvHxh/Dcqd8CSq3+mfkUCT3fg0prxKF++PNLT01G5cmXcv38fu5YGwPTGKgyt6wafzDfoU9YKPj4+qFGjBpYvX4758+dj+bRh4ONt2DlnOEaOHInLly/Dy8sLKpUKwYNao9CnkxjeoCQKfjqOBUPaQqFQwMvLC1evXsXw4cOxa84I8PE2rJg2DPPnz8eyZctQo0YNVKxYEb08zVFR+Q5D67jC5PoK7F4WiHv37qFy5crIzMxE2bJlcXnNeGTc3YB1C2dixowZGDNmDDp06IBhQ4eiQtxNNHX6hT6VHKG5uBA716/AypUr0axZM9SqVQsf373Bx8NzEHV+KS6cPILu3bujS5cu8PPzw6qlC2F5azX+KGOD9sVN4PRyN2YHBmDQoEH4888/MXLkSOzdsgYJ11bj6a4ZUGZmwNXVFbVr18aBAwewb8MyqC8sxIDqRVDXJgqNLL+gQ4cOaNKkCaZOnYrg4GAsCxgH1cMtOL5kDFq0aIGvX7/C29sbnz9/xsaA0bB+sBnD65dA6fj78G3ijqJFi6JSpUrYsWMHZs6ciXUzhwFPtmFjwDBMmTIFBw4cgI+PD+zt7eHXxhslom9geP0SyPdkB9b4D0RERAS8vLzw+vVrdO7cGYcXjob60VYsmzEaCxcuRGBgIBo0aIDmzZujuV00alqEYWDNolBfWoS9axbixIkTqFmzJhwdHZHH2gr3t05B8s212LFuCXx9fTFw4ED06dMH06b4o9jHw2jjokb38vlhfm05NqxaipkzZ6J9+/Zo3749blw+jx9nF+Pr8WA8e3QfjRs3RuvWrbFgwQJsXbscvLQYvXwKoEXhdLhHXIDvuLH4448/MGLECPj7+2PTsjlIu7MeN9ZPhLNzMZibm6Nq1aq4evUq9qyaB1xZhsG1XVCFIejilonatWujdu3amD9/PhYuXIhl00ZA83gr9s4bgX79+uHevXuoUKECfv36haVjusHhzUGMbFgKzqEXENSrIczNzeHt7Y3Tp09j/Pjx2BKk7fcrpw3F3LlzsW7dOlStWhWenp4YVMURFVKfY2hdN5jfWovtC/zx4sULVKxYEbGxsahZsybOrhgHxf3NWDVnMmbNmoVJkyahVatW6N27N6qlP0VDuzj0q1oQ6gsLsHv9cmzevBkNGzaEt7c3oiLC8Xp/IGIvr8Dx/TvRv39/9OjRA6NHj8bi+XOR7+FGdPawRCd3C+R/uAmL5s/FyJEj0bNnT/Tv3x/H9m1D7JWVeLUvEPLoSJQvXx4NGjTA1q1bsWfDcmguLkS/qgXR0C4ONZUv0LNnT7Rs2RJ+fn6YPXs2Vs72g+L+ZpxdPg516tSBXC6Hj48PXr16hW3Bk2Fxex2G1SuO8inPMLR6QXh4eKBq1apYv3495syZg1XTtW23dZZ2sHXq1Cl4e3vDysoKAd3rwTn0IoY3KIkCr/Zj+bieSExMhJeXFx48eIC+fftiX7D2t1s+fSTmz5+P4OBg1K5dG3Xr1kVH5zRUxWeMalQKh4fXQkWXAv/bV9j/Hf1bsmj+w8pNus2VRAmh5EKdBfrxoaVZrVo10eCqVatWIphMHzonl8s5fPhw9qztyowZdmL83E7ubN++PT99+sSMjAwJmEw/ofTTp09s164d53b2EGMzZtixZ203kcgbFhYmqajZt28f27RpQ1JrUlW1alWeGKqLT5jmwJplinHOnDlMS0vj9evXWblyZdFTQqi60Wg0PHLkCEt7lOLLCa5i/Be/IvQs6cqtW7dSrVaLVU2ChIRShULBVatWsUIpZ0b460Brd8eWFIm8pDaJUvAd0U8o/fXrF6dMmcIm3s5Mnq6z3t/Wz5P169fns2fPqFarWaNGDbGiRh869+PHD/bt25cjm5QQsQeqmbac0LIke/bsybCwsGyJyfoJpa9evWLjxo25rrcOjpg6vQBbV3bhxIkTmZiYKKFHk9KE0suXL7NChQq8PrqUGB8zRUYfj2IikffYsWOSipqhQ4dy8eLFVKvV3LVrF0uXdOOnSTr797cTXVi6VAkeOHCAGo1GkpgsVD6dP3+e6enpnD9/PquWLsbYqTo44/kRHhKgon5isn5CaVxcHMeMGcMuNVyZrtdvl3QrzVatWvH9+/fZIJz6CaVfvnxh586dOaO9u4g9UMy0Zf/6bhw0aBCjo6PFxGShoka/6kYgeR8YpGv7pGn2rFe+GAMCApiSkpItMVmoutFoNDx58iRLl/bgY9/iYnzo5MIsW9KFGzZsoEqlkkA4SbJLly7cunUrlUol169fz7IlnRnmr0NGPPYtTk/P0jx9+jQ1Gg3Hjh0rQjgVCgXLly/Phw8fiiTv+hWKMXGaznp//8DSrFWrFh89eiQmJp88eZKkFEgaFRXFgQMHcmCD4iL2QB1gyxnt3NmlSxd+/fo1W2KyPmD13bt3bNGiBZd2053z6TPs2Km6C8eOHcu4uDh+/vxZAuH8p+nfWiV08+ZNtm3blkWKFCEAHj9+XHxPoVBw8uTJrFChAm1sbFikSBH27duXEREROX5mYGAgAUj+PD09/+V9yh2w5Eqi28skZFN1YAGqldqsegH9rl9VIGHdkIzf3FkS/2thBfG9BQsWZDO7Gj58uGiqRZK/FkrJrPFbdMZkvXr1Eh03Se2Nq06dOjx37hxJUq3MpDqwgCQ+4UwQSW21j4+PD2/fvq37Ln3WDcmM0CfZqLYpL7QVIIIFvv75KGHdkPx1Z3O2eEVsKEktQTerBf7JkyfZsGFDsT3jD46WxGbMLiK+t3v3brZv317SdnPmzOHYsWPF1wmrG0uPfUUd8T1Dpd/6rBuNRsO0ua7Stt87RHwvK6spK+tGmRST7diTrmsrswSCrr4FvoAMiI6OJkmmvb2YLT79s9YUzhCrScK6IZl4cUG2eFW6FvVgiNUkYd2QjN/RW/q7B+sM9VauXMn+/ftL2m78+PEMCgoSXyctqSJtuw1txPcGDRrEZcuWia81Gg2bNGkiksE1Gg2VQVISdsJxf5I0yGpKTU2VOLVmRr7L3m8fax8qDLGavn79Klb9kWTyw73Z4jOjtNTxt2/fZrPAv3TpEmvUqCG2Z8IxP0msMshR7LdHjhxhs2bNJNeMJUuWSMjg8eulNOekJTqjOUOl33/++SdXrVoltl1KsIe07Xf2Ff/XGKvpn6J/K635/PnzuHv3LqpUqYLOnTvj+PHj6NixIwBt8tAff/yBIUOGwMfHBwkJCRg3bhzUajWePHli9DODgoJw5MgRiTmOubk5nJyc/qV9yk26zZVEj7cCZyeILxMzgNLbtAlrhojAwnYhuXJhfSUG6JFZH0SaoP0Jy2z0W0HMQlw93UmBGnpk1m2vTTHltoWYRJmVCJyVFBwyKBN2euDVSTfMseudcSKwfrKrS37icR8FTHW7h9ZHLfAkxtQoETglJQUmJibImzcvmrupsaeNLk9CqQbKbrfEL4WJQSIwoCUFC8mVvlVUmFZDlx8UmgRU22tllAgMaKtRhO0bmynRyUPX9ue/mqLfBeNE4Ky/ye0eCng66Np+6WMzLHxsDoVCISZR6kufSJzHnPg0SAErvd0bdNEcp7+YIS0tDRqNJhvJOj09HSqVCvnz50cFJw2udZNWiNXeZ4HPiaYGSdaANrHV3NwcefLkQXdPNVY30bV9qhIotcUSGppI+qe+9EnBs2qrMKKiru2fy03Q4ohxinjW7YfbKdBAj0K+770pfK9bGCVZZ93+pn8mCup1rRl3zLDplbnBZGxASiQumId42U8BM70khc4nLXAnwlTSP/WlT9Ku76zBET0KuVoDeO+0xM90E0n/1Jd+QvZwHxVm61HIY1IBr526a4adnV22fqt/LVnZSImeZXX99nqYCbqfMX7NyLr98h8K+BTUuxXXHgM0n4srV65g2rRpePDggeS3+yfpP0ZrRpYZFkN69OgRATA0NNTo/wQGBtLHx+f/5/3InWHJlb40ygw+HKt90k6Zmp+vDmk5NQJIzZD0IW7pP0P5fqx2ejhiQj5GPdcuYQggNUNavny5CHGLfHaRMX52ZKAt3491YHpsqAhSu3r1qsF4fYjby4PBTJuujX84zo1UZoo8GkPnkfDZAsTt1oI/xKn9W9PrkpSC1LJKAnHTaHhnkpd2ZmVGft5fO5wkefDgQbZo0cKg34UAcUtPT6c6PYnPxhTSPmH752fIpa0kyenTpxtlNR06dEh8gk0KfcWv47UzTF/H5mP8Zy2GoF27dty1a5fB+BkzZnDixIkkya839jJ+irbtXo6RUZUSz8zMTHp6evLp06cG4zt06CBanz/aPJ6ZM7XxdyeUJdVqRkREGGU1Cawb4bNvBjT5a1kgP2/NbUuSvH37tlFWk8C6+fnzJ6lS8r6vdikzbVp+Pt01g6QWqdCzZ0+D+37nzh16e3tTqVQyMyGKb8dqZzliJuVj+APtzNqIESOMspo2bNjAHj16kCR/vr3FiInaY/80zp6pUSHiDKAxVtPIkSMZHBxMknx7YgVTpmnjn4wtRo0iTYSKGmI1aTQa1q1bl6dPn9Yey9K+VAVo42/5VyMphYZmVVZg6W3/qtrZkZn5eXd5P5I6aKihfvvp0yeWKFGCycnJ1GSm8vGYotrZkSn5+e6UdvZj7ty5RllN+sDSlMiPDBmn7bdhvvn48+0tkmS3bt24ceNGg/H6wNLQe8f4c7L22LmhHpkaJ4GG/pP1HzOO+1cGLJcvX6aJiUmOOxMYGCguIZUoUYK9evXKcYCTkZHBpKQk8S88PDx3wJIrUadPn2bdunWpSZazkKMdfXx8xBtDTqA1Yep13rx5HDVyBJkcQ7v8+dizZ89s0/dZJeQIPH78mD169ODG9WtZztWJI0cM5/z587l9+3bJ9H1WRUVFiURib29v3rt1nZ7OjuLNIuv0fVbdu3ePXl5e4udEff/EkkUdxAu6PqrekDZt2sTu3bvryMcJUSwmK8ASJUrw58+fLFWqFN+9e2c0fvTo0Zw3b95frKb2ZLKcTva2rF+/frbp+6zSaDSsX78+T506pSUfz5hG/opmvrw2HDVqFC9evCiZvs8q/RyBZs2a8fCBfSzn6sRu3bpy48aNXLJkCQcPHmx030NCQli8eHHK5XK6u7vzzfPH9CjmKN4s+vXrJ07fG9LZs2dZt25dHdk46jvdCjuIy29VqlTh9evXjcbPnz+fI0aM0Dn+/ophYUc7li1bljExMXR1dWVYWJjR+J49e3L9+vV/kY/7k8kxtLfLz44dO4qASGOsJv1lxgEDBnDFsiUs5+rEiRPGMyAggAcOHGCrVq2MfndsbKxoKlitWjVevXSeZVwc2bRpUx45coTTpk2jv7+/0finT5+yTJky4nGGhryjezFHkTAtuEsbk7DMKJKP4yLoUsierq6ulMvl9PT05PPnz43G+/n5ccaMGTrycXIMZQ62rF69uphvFhcXZzBWo9GwRYsWPHjwIGfMmMFJEyeQyTG0zZeXAwcO5K1bt1ixYkWjrKb09HS6u7vz1atXbN++PXft2MZyrk7kX4OrrEvV/1T9nxmwpKens3Llyr8luZ47d46HDh3iy5cveeHCBdaqVYuurq5Gk4wM5bzkDlhyRWZ/4pXJZOzRowfr1q0rOm4a0+fPn+ns7ExnZ2fxadrJyYne3t4sX7686LhpTOfPn2eFChXEp2mZTMafP3/S2dmZxYoVE8F5xrRw4ULWq1dPPF9kMhmfPHnCkiVLskSJEgZdbPXVu3dv1qtXT3yalslk3LlzJ6tXry4mSBqTcOPy8vISn6ZlMhknTZrEBg0aiI6bxhQXF0dnZ2fRhp3Utl3z5s1Zs2ZNbt26Ncf458+fs0SJEixevLj4NO3k5ER3d3eWKlWKDx48yDF+z549rFatmvg0LZPJ+P37dxYrVozFihUT80yMafLkyWzQoIH4NC2TyXjlyhWWK1cux4GqoFatWrFWrVoi+Vgmk3H58uWsU6fOb+GKwo3Lw8NDfJqWyWQcMGAA69evz1mzZuUYHxYWJh6nMCB3cnJi1apV6ePj89uHyuvXr7NMmTLiccpkMnHWzdXVle/fv88xftWqVaxTp44IVxTAjm5ubjlexwUNHjyY9evXF8nHMpmMhw4dYqVKlVizZs0c+62QH1OpUiUJ2HLmzJls0KCB6C5tTElJSXRxcRHRDUJ8hw4dWKdOHa5ZsybH+Hfv3tHV1ZUuLi4iPNXJyYllypShp6en6C5tTEePHmXFihVZvXp1qtVqEW6oXwzwT9f/iQGLQqFgu3btWKlSpf/xQCIhIYG2trbcsmWLwfdzZ1hyZUxLlizhoEGDxNcCUdjc3DzH2RVBFSpUYNOmTSXxU6dOpZ2d3W9pzGq1mnZ2dpwxY4YYS5JNmjSht7f3b787KiqK5ubm4sBIiHd2dharWXLSpUuXaG5uLibVymQypqam0srKihs2bPhtfEBAAPPnzy+h2r5584ZmZmaitXxOat68OcuXLy++1icK/45qS5Kurq7i8oQQP2DAABYuXPi3VNv09HRaW1uL+AKh7SpVqsT69ev/9rvfv39PMzMzPnnyRIxXq9W0t7f/l0jYu3fvpqWlpXhzlslkjI2N/ZdJ2EOHDmWhQoUkNOYbN27Q3Nxcu1T3G1WtWpV16ugSlGUyGYODg5kvX77fDrY0Gg0dHR3FCiah7dq2bfsvkbDj4uJoYWEhJuAK8SVLlsxxVlHQnTt3aGZmJiFhZ2Zm0sbGJkfGk6BFixbRxsZGTAaXyWT88uULzczMxITqnNSxY0e6u7uLr4UBk4WFBRMSEn4b7+HhIUkmF1hLjo6Ov+23CoWCefPm5YIFC8RYkiKr6b9B/+sDFoVCwY4dO9Lb29vguu+/oqpVq4r8j98pN4clV6S23NDZ2VnyNO3k5MT69euzR48eRlk3gh48eMAyZcrQ1dVVrLoRQGvNmzc3yroRtHXrVjZv3lxcc5fJZCL0rUyZMjlC2khy3Lhx7Nmzp1h1I5PJePbsWVarVi1H1g2pA6316NFDxM7LZDLOnz+fHTt2NMq6ESSA1lq0aCFW3chkMvbq1Yu9e/eWlJQaksBqKlu2rHiTcHJyoo+PD7t06fLbi+/58+dZtWpVye/n6OhIZ2dn1qpV67c3/UWLFrFjx46SWYKnT5/Sw8ODxYsXN8q6EdS3b1/27t1bvMHKZDLu3r2bjRs3/m1JqcBq+uOPP8RlO5lMRj8/P3bv3t0o60aQ8DRdu3ZtcdlOmJ3q2bOnUdaNoOfPn9Pd3Z0lSpQQZwmcnJzo4eHBNm3a/BaUt2/fPjZq1EhctpPJZAwNDaWLiwu9vLx469atHOOnTJnC7t27i8t2MpmMV69eZcWKFeni4sIfP37kGN+6dWv26tVLXLaTyWRcsWKFOGDKyMgwGiuU1rdt21ZctpPJZBw0aBB79erFtm3b5vjdAqvJx8dHXLZzcnJi9erV2a1bN06bNi3H+Bs3btDb25suLi7isp0AtmzQoIFon2BMq1evZps2bcRlO+Eh4XdAy3+S/lcHLMJgpXz58jlSMHNScnIy7e3tuXLlyn/p/3MHLLkipfDClAwl74T8ZIHi5disWTOmpKSwZMmSRvMwBI+QCxcucPv27WzTpQdvfZIzXyE3Tpw4UQJPNCR9j5AJEyZwwsy5LOTTgG06d+fOnTt54cKFHKe3BY+QlJQUNm3alKt3HWVBr3r0LO/NJ0+eSOCJhiTAC4Vy0cPXn1BWrhZd/lrL14cnGpLgEfLt2ze6Fi/Byy+/09G9Er29vZmRkSGBJxqS4BFy+fJlVq1Vjzc/xtDW2YM9evT47fS2vkfI0qVL2WfIKN76JKeNU1HOmzePz58/p4eHh9EbV1RUFJ2dnRkTE8N+/foxcMlaFvSuz9oNmvD06dMSeKIhCR4hmZmZrFq1KrefuMKCXnVZvJQHP336JCFMG5LgERIfH09XVzeeefCeTmWq0614cSYnJ0vgiYYkwAtfvXrFUp5lef1tBO1LVGDdunXFcmpjeRgajUYkHx84cIBNW3fgzY8xzF+kBEeOHCmBJxqSfv7P9OnTOdJvBgv5NGDnXv25YcMGideNIel7hLRr145LN+9lQa969KpUlXfv3pV43RjS2bNnWbt2bZFmfuDyA8rK16aLqxsjIyMl8ERDEuCFERERdHF148XnX+noUZllypRhRkaG6HVjTAK88Pbt2/SuXI03P8bQztWTHTp0kHjdGJIAL7x16xbXrVvHP/oM5K1PcuaVuXDGjBl89+5djku5sbGx4oBu+PDhnDJ3KQt6N2Djlu146NAho/v8T9O/dcCSnJzM58+f8/nz5wTAZcuW8fnz5wwNDaVCoWD79u3p7OzMFy9eMCoqSvzT925o3Lix5OI5ceJE3rhxg9++fePdu3fZtGlTOjk5/csDntwBS66ePXtGT09PZmZmMiE1k42XXKeb/xm6+Z/h7EN3SZL79+9ny5YtDcbv2rWL7dq1I0m+j0xk8fGH6OZ/hq4Tj/HkY61R2dSpUzl58mSD8foeIScff6HbpON08z/D4uMP8n2kdm3bWAKhfvIeSc46eEfc97IT9zMhNVO8oBu6cekn75Fk50UnxPgGAQepUmv448cPo5Uu+h4h6QoVq07ZL8YPWaddnsopgfDatWuiR0hUYjrdJ2jjXf1Oct0F7f7mlEC4YsUK9uvXjyT58HMM3SYcppv/GbqMP8xb7yNJksOGDROnzbNq4MCB4tLB9mtv6Op3km7+Z1hq/AGGxaVSo9Gwdu3aoteNvrJ6hIzZckU89oqT9zE1U5nN60Zf+h4harWGTWcdFuPbBh+jRqPJ5nWjL/2n6V/pClaYtE+Mn7pbO0A8ceIEGzRoYHCwe/jwYTZt2lRLPo75xRLjD2jbftJxHrz7kSQ5e/ZscdYtq/Q9Qi6+DKXbxGN/9dtDfBmm9YzR97rJKn2PkMUnHtFt8im6+Z+h54T9/Jmckc3rRl8KhYJly5bl48faSrDey0+Lx15r+gEqVGrGxMRIvG70JSSYy+VyZirVrDXtgBjfZ8UZktm9bvQlJKorlUrKf2WwtNBvJ5/ikpPa2dCsXjf62rhxI7t160aSfB4ap+u3E47y8ivtbIuvry8DAwMNxo8aNYpz584lSe6/84Guk7TnbYnxB/hFnmww5p+ofyut+cmTJ6hUqRIqVaoEQEu0rFSpEgICAhAREYFTp07hx48fqFixIooUKSL+3bt3T/yML1++IDY2Vnz948cP9OzZE56enujWrRscHR3x4MEDyGSy/+nu5eq/UCQxbtw4LFmyBJaWljjy9Ae+/NQxW3a/SIJGQ3Tv3h3Jyck4d+6cJD4lJQUBAQFYunQpAGDz7e+gpdZQwsTcEhvvaSm4U6dOxaFDh/D582dJfEhICI4cOYIpU6YAADbeiwDMtH4ZtMyLzbe/AwCWLtXauAv+EYLOnTuHtLQ0dO3aFRoNseeljlicZp4fR57+gJWVFRYvXmyQSLx8+XI0b94cXl5e+CxPxtM4ncfM98y8uP8lDsWKFcOwYcMQFBSUrf38/f0xbdo02Nvb4/K7GPykDsx4KVSFn8mZqFevHjw9PbFt2zZJrD6rydTUFLsffIfSQhtvYmqGrY9/AgCGDh2KV69e4f79+5L42NhYLF26VCQCb7oTClhogW+mlnmw8U4YAGDOnDlYu3YtoqOjJfFPnz7FvXv3MHr0aADA5ocxItxQZZkPO+99h4mJCVauXImJEydmI2nv2bMHRYoUQdOmTfErQ4lTIRniewkmtjj7Kgr58+dHUFAQ/Pz8srXd3Llz0a9fPxQvXhxPwxIQkqYD2L1OssTbyF/w9PREp06dsGjRIkksSYwfPx7z589Hnjx5cOJFJJLNdD4UB96mIFOlRvv27WFhYYFjx45J4tPT0zF16lQsX75cSxG/+x0aS61PjImZBTY9iAIATJo0CefOncO7d+8k8WFhYdi5c6dIqd549wdg/hd009IGG29/AwAsWrQIc+fORVJSkiT+6tWriIiIQN++fQEA25/GASbaW0qGRX4ceBQGc3NzLF++HOPGjYNGo5HEr127FjVr1kTVqlURHp+GO9E6n5JIVT7c/PgTBQsWhK+vL6ZPn56t7adNm4YJEyZAJpPh5qefiFTrPHJuRwHh8WmoVq0aqlevjvXr10tiNRotqXn58uUwNzfHgUdhyBT6rYkptj/V0pf79euHsLAwXL9+XRKfmJiIefPmib/p5tvfdf3Wwgob7oQDAAICArB9+3aEhYVJ4t+8eYOLFy9iwgStX9TmB1EwMdOetxrLfNh291u2481VLq05V/8AHTp0CFu3bsWFCxdgYmKCaTuvYN97HeiMKgXSdg6DiUl2Ai4gpa2ShHnt/rAq21CMV8m/QHFGS+k1ZIKlb0BFElbtAmBesKT4fub7G1Df3wkA2UywmIUIrNEQeftvgom5zpwt/d5u8MO17ARcIBslmPkKIm+3hZL2STs7H4j5lI2ACwAKhUI0TjMxMQFcKsOm2RhJfMqe0TBVpBokEmclApv6dIB1lY5irDo1ARkHxsPExMQgkVifEkwSFo1Hw7JEVTFeGfYSyisrtMeRhYDLLJRgkrD+YxHM7AqK8RkvzkDz7CgA7XXC3NxcNM7LSgnWmFki75/rYWKie45Lv74B/PbQIEk7KyWYjiWQt0OAtO2PzQQSfxgkEmelBJu410Oe+gPFWGrUSNs5FCbUGCRpp6amQqPRIH/+/CAJsxq9YV2hmRiviguH4mSAwe8S2kMgApOEZaspsCiqIwBnhtyD+vZm8buEc0Roe2m/1cCm73qYWumc4zIeHoTm7QUA2UnaWUnWmjwFkK/ncmnbXVgKRL7JTs2GgfO4qBdsWk6QxKfuHw+T9ESD/TbreWxSoRXyVO8mxmoyU5G+ZxRMTEwMXjP0z2OSMK8/FFYetcV4ZeR7KC9oBzNZz5Gs5zFJWHWaC3MHZzH+z1pumN2hAv4blEtrztV/jdLS0sSnzLCwMHTr1g3n1s6EVZr2yR7UoGzme+TNa4N58+YhNjYW/fr1w9SpUyGXy/Hw4UM4OTkhKioK58+fh6enJ8riB5ChneWgKhMVTcPg6OiIHTt2IDExERUrVsTevXshl8uxZ88eVKpUCQkJCdi+fTucnJxQ0TQU/IsMa5KRhLIIh6enJ86fP4+oqCg4OTnh0aNHkMvlmDJlCgYMGIDY2FjMmzcPefPaoJzig0iGtUr7iSJp39GoUSM8efIEz58/h0wmQ2hoKORyOdq2bSse+8iRI2GjTkax9K9i+zikhyNfWjR69+6NkJAQHDx4EJUrV0ZMTAyio6NRqlQpXL58GW/fvkXHjh1hnxaO/GlRYnzJ9I+wMVVj8uTJiIqKwowZM9CvXz/I5XIJZfb27duoVq0a3BTfYZYW91fTq+Gj+Yz8+fNjxYoVSEhIQNu2bbFkyRLI5XJcuXIFLi4uiI2NxbFjx+Dq6gpv0x9ApnYGioo0eJtqybmHDh1CfHw8SpQogbNnz0Iul2P16tVo2rQpEhISsHbtWtjZ2cEHX0G1dhbFND0BJVWhqFSpEm7cuIFv377B3t4eb9++hVwux9ChQzFp0iRER0dj2rRpsLEwhUfGR/HY86ZFwyE1FG3btsXr169x69YtuLq6IjIyEnK5HHXq1MGuXbvw5csX9O/fH3kz5JClhYrxhdO/wUahJWB///4d69evR9OmTSGXyxEeHo7ChQvj4cOHeP78OZo1a4aC6d9hnSYX+22ZjPfIY2WJoKAgkWDs6+sLuVyO58+fw9HRET9+/MDly5dRoUIFeGrCYJKe+Fe/VaCiyXfY29tj8+bNSEhIQK1atbBt2zbI5XIcPXoUZcuWRWJiIvbs2YNChQqhkvkPUPnXDFNGMsojDCVLlsTp06chl8tRuHBh3LlzB3K5HLNmzUKPHj0QFxeHRYsWIV++fKig/ChS0C3SYlEs4zvq1q2LBw8e4O3btxKS9h9//IHg4GD8+PEDvr6+sGEGXNN1M5cF0iJgm/oD3bp1w4cPH3Dy5EmUL18eMTExiImJQbly5XD69Gl8+PABXbt2hV16BOzSIsR4t/QQ5GEGxo8fj4iICMybNw/dunWDXC7Hly9f4OjoiHfv3uH+/fuoU6cOXDNDYZGu7bfQqOGl/IR8+fJh8eLFiIuLQ7du3TBnzhzI5XLcvn0bhQsXhlwux+nTp1GyZEl4mf4AMpK1ba9MR0XTcBQsWBB79+5FYmIiPD09cfToUcjlcmzZsgW1a9dGQkICNm3aBHt7e1Q0+Q6qtBT0InbWGFJP98CTK51yByy5+nvqyzXgQG+ELGqCHq3q4sCBA6hfvz6aN2+ONcsWw+LmShweVgMzK2uQ8foSbty4gStXrqBatWpo27YtIs8uQuaOTni/rB0mjR2OCRMmoG/fvpg2bRp6tGmEKjFncXRELfTK/xElbRTYs2cPgoOD0bZtW0zwHYePmwZBvbsLPm4ehPHjxqJt27ZYsGAB9u7dixJ5MtHHLgRHR9RCpeiz6NWuKaZOnYo+ffpg4sSJmDR2ON4vbYfMHZ0QdW4x2rRpg2rVquHKlSu4efMm0l5eQEAV4PCwGrC4uRJrVy5F06ZN0aBBAxw6dAjdWtRGyKImiF/fChZhd+Dg4AAvLy/8+vUL9+7dQ9Tp5djQ0RU7epVD7PFgXL1yGQUKFICPjw9iY2NRyjoJUSub4fuSxqhb2hHPnz9H1apVUbp0aRw/ehjJZ+ZjX/+KWN7MATFXtuL+/fv49OkTvL294eXlhZQnB5G8uR0+LGqOob07YcWKFSKRN2CyLwq92I6jw2vB1z0BVtGvcf78eezbtw9169ZFv3798P3AFCh3dcG7lX9gyiRfDBgwAKNHj8bSpUvR0KcUmmTewZHhtdCGj1HDvSDWrFmDSZMmoVevXvCfNB7v1/SAancXfN0zHoMHDULDhg2xZcsWnDp1CrZJXzDSVY4jw2vB7d0eTBwxCIMHD0b79u2xYMECjBnUC+8Xt0DqlvZIurcD1atXR8WKFcXlqtibe7CoYT4cGFQFGecX4uC+PfD29kb16tVx+/ZtNKnohq+LGyNmVTMUUYUjIyMD3t7esLS0xM0bNxBzYgG29/DE5i4lEX1yCe7cuQOFQgFvb29YW1sjf9xLxK5tiS+LGqNjfR+cOXMGderUQd26dbFt0wbwyhIcGlINs2taIOnRcdy5c0ckeTdp0gTyK6uRvq0j3i9pjfEjBmLGjBno1q0bfH19MahHR5QLPYajI2phgCwURRiHQ4cOYcWKFWjRogXGjB6FT9tGQL37D7xf1xd+E8ejU6dOCAwMxLZt21DOyQJ/WL/B0RG1UDvxCjo0rI7Zs2dj0KBBGDlyJCaPH413yztCsaMTwk/MRteuXVGzZk2cOnUKV69ehebzHUzxysThYTWQ//46LJ4XJJK8t27dij87NcfHRU2QtLENNB/Pw83NDV5eXoiKisL9+/cRdW4N1rQpjD1/eiH+xDycP3dWJHl//foV3gVNEL6sCcKXNUbFwub4/PkzKlWqBGdnZ5w9fQqJp4Kx508vrG5dCFHn1+HBgweIiIiAt7c3SpQoAdW7s0ja2AYfFzVF/y4tsHnzZjRt2hSdOnXCgtkzYfdgA44Mr4nJ5dPBr/dw5coVnDx5EjVr1kS3bt0QdiwIip2d8W55R0yZOBYjRozA4MGDMXfuXLSpWxl1kq7i6Iha6Gz5GhUKWWPr1q2YOXMmOnfujMmTJuD9ur5Q7/4DIdtHYvSokWjevDlWrVqFI0eOoJBKjkGFwnF0RC1cGl8fLg42v78G/jfq/2XyzP+WcpNu/8sU/YacpQOtffYtQL9JE5iYmEi1Ws1q1aqJNvUajUZ03SS18E6/1lLQ2Pl+DiKRV2JTTzItLU2EtGk0Gh44cICrOhWSxK/qVJgHDx6kRqPhmzdvJKC1b9++0c3NjYmJiczMzOSyZct4ob+DJH5Saw+xdPTw4cNax82/EiwvX74smkolJibSb+J4fvbVwREzZ9hyeOf6ornXzJkzRZt6UosjEHxpQkNDOaJ3R/6aaifGyyfbccyQP8WkRn2belKLIxCq9Z49e8ZR7SpTFaDb9xcj7UUib2ZmJsuWLSt6mQjIgGvXrpHUli4HtpXCCff3dOTGjRupUqlEN2Ih2V5bdaPFEajVam7dupU7uskk8XPbOYtEXn2belKLIxDKRdPS0jhnzhw+GKYj8qoDbDmmrbeY9KlvU09KcQRyuZzjRgxi5CRd26dMs+OInm1EevSoUaNEm3pSiiP49OkTR3RtyvTpun0Pm1CA48eOYlxcHDUaDevVqyfa1JNaHMHu3btJaknevq3LSI79+iB7Lly4kBkZGdls6gUcwbNnz6jRaHj06FEu7lBEEr/xj4Lcs2cP1Wq1xKaeJCMiIujq6srY2FiR5H2ij7TfTmtTUkRNnDlzRrSpJ6U4Ai3J25/vx+raTjHTlsPb1xRhksHBwaJNPanFEQgGihERERzVv7uIXGCgLeP87ThqQA/Rc6hHjx4Sr6ERI0aISdqvXr3i8PY1RAo4A235fkwBTp06lb9+/aJSqaSPjw/v3tUm52fFEVy5coXT2pSQHPvxPg5cvXo1lUqlCBWNjNQmiAtJ2iEhISLJe2OXgpL4xR2K8tgxbVK26C6tV5jy36T/WFnz/xXlDlj+y/RkRzYyK5O0F64dO3awY8eOkn8Xbbv/GkSoz0ySxKqDXcX/nTBhgui4KUifdUOSqi0tpETdLdrKI41Gw2bNmomDI0EzZ86UmI+pg12k339G+57+4EhfHTp00HF0kiKyH/sTbZWGaA3/l+MmqXP+FQYR/HQpe3y49j39wZEgCeuGpObWsuzxCm27Llu2TGLaR2pvtD4+PuIgQn14oLTtlusM9QyxmrIOIlSrq0vbbp+WsWOM1aTPuqFaTU2gnSRec037niFWkzCIOHNGW3HCqNfZj/3tSZLSwZGg5ORklihRQhxE8OXB7PGx2sojQ6ymT58+sfhfpdEkqbk4Q7rvcwqK/2uI1aTPuiFJ1c6O0rbf0ED83/bt24uDI0HBwcEcNWqU+Fq9SDrQVx/Xvif0sWfPnknie/TooePopMZlO3bNfS213BCrSalU0tvbm3fuaGnX/Hore9t901LLDbGasg4iNPfXZY9P1ZZ6r1+/Ppsb+5MnT1i2bFlxEKE+Pkradot0hnqGWE1aREUH8bVqfQNp/E6tK/DvWE3/Dfq30pr/Lyo36fa/TD+egluawgTaPI/IFKDqHkso1TBKBNYnFfcoo8aqxjoq7s1wE3Q9bWmUCAxAQiqeXUeF4T46suuGF2YIuGecCMwspOIj7RWo76w77cZeM8eBD8aJwPr7ZWEGPOmjQNG//kWtAVods8ALuXEisP5+ueQn7vRUIM9fhURJmUCNvZaIzzAxSrLWT3Zt6KLBoXa6SpuQBKDOfqtsSZT60k/uHFlRhaDaurY7+dkUQy4ZJwIDUiLx6sZKdC+jqzaZ/9AMy5+aGyVZC20v7NfVrgp4yXRt3/ecOS5+NzNKBNbfr/yWWhK2w1/Nm6kGGh60wJdEU6NEYP3kzvKOGlzuqoT5X80TkwpU32uJNKXxfqtPJO7orsam5rp++yjKBG2PGycCA9pkV2tra1hZWWFaDRV8q+jafscbU0y+ZSEmQ9vb22dre/0+sae1As2L69rO/6Y5tr81y5YMLUi6X8DjPgq4/fXzaAh0OGGBh1GmEmK1vvRJ2oVsiPu9FMj3Vy56igKouc8S8jQTSf/Qlz5Ju2YRDU50VIoU89BfQLU9liBhkGQNSEnaAyuosaC+ru0vfjNB3/OWv+23QpL24gZK9CuvVyVVbyLQJAAHDhzArl27slUu/jfpP0Zr/r+i3BmW/y6p1WpOa+fBxCVVeenPfFw1YwRJreOmMdCavklTfHw8F7aVMWN1bR7qasOT+7QeE61bt+bevXsNxj9//pyenp7MyMjg6+ePubtnIT4fYcddPQrxzYsnouOmMQv7PXv2iK6bJ/Zu5o3RJfhkmC0Xti3IhIQEhoeH5whamzx5sui6uXL6cH6YXo4Ph9pyevvSVKvVvzX4atmypei6GdCrDmPmV+Stgfk5b5jWe2bNmjXs06ePwdiMjAx6eHjw5cuXzMzMZEAbF6Ysr84zvfNx65KZJLXW8sYMvgSIXHx8PCPCw7i6o4yKtXW4u5MNb1w4SY1Gw5o1axplNV2/fp2VK1emSqXi3WsXeLx/UT4fbssNnWX8/vXzbw2+Vq5cyT///JMkuWv1PD6e6MEnw2wZ1Loo09LS+P79e5YsWdKowdfgwYO5ZMkSkuSCMV35fZYX7w+x5YxuVanRaHj8+HGjrCbBkPDixYvUaDSc1qkC4xdV4bX++bjUrz9JctasWRw7dqzB705KSqKrqyu/fv3KX79+cW7rQkxfVYvHuufloa1aZ9cuXboYxZi8e/eOpUqVYmpqKj++e8NtXQtSubYuN7bLw6cP7lChULB8+fJ8+PChwXjBkFCj0fD8sb28PNyVz4bbcll7GX/K5YyOjs7RhTkwMJDjx48nSa6bM55vppbho6G2nNG2BJVKJR88eMDy5csbxQd06tRJdJie1b8JI+f58M6g/Jw1oBlJrbu0MVaTviGhUqnk9DYl+GtZdZ7vk48b5mqXTceNG2eU1aR/bPKYGC5rL2Pmmtrc18WGF0/sF92ljeFpBENCpVLJJ/du8mCfwnw+wo48508qM5mamsoSJUr8ltX0T1fuklCu/tHatm2bCFpzdHSkq6srb9y4QTc3txwt1FevXs0+ffpIzJzs7e1ZqlQpHj9+/LcW6kOHDuXChQtF8rFMJuORI0fYtGlTLliwIEcLdY1Gw1q1avHkyZMi+Vgmk4nGXYLjpjEJN+UbN26Iyz4ymYwdO3bk1q1bWbFiRd68edNo/Lt371iyZEmePHlStFB3cnJi2bJlefny5d9aqAs35cWLF4sW6oIF+dWrV8XBnDHNmjWL48aN459//ilaqBcoUIBeXl7cuXPnby3Uu3Tpwk2bNrFy5cq8du0aZTKZaNw1efJkTp061WiscOO6dOmSaKEuk8lE465WrVrlaKEu3LiuXbsmLvsIyIejR4+KgzljEm7Ku3fvZsuWLanRaETkw40bN+ji4sL4+Hij8Vu2bGGXLl0kxoUODloS97lz58TBnDEJN2V940JbW1vWqVNHMpgzJOGmfOjQIdG4UEA+jBgxQjKYMyQB+SAcZ2xsLGUyGXv27Mk1a9aI7tLGJDhMnzt3TjQuFJAPFy5cEN2ljUmA6a5Zs0Y0LhT67Y0bN8TBnDEJDtPDhg3jwoULSWr7bZkyZXjgwAE2adIkx2tGnz59uGrVKtG4UGAFkdrB3O9wIf8Nyh2w5Oofq6xP0zKZjJs3b2axYsW4ffv2HGOVSiU9PDxYrFgx8SIl3LhkMpmYfGlMcrmcjo6OrFOnjsj6EVxU/xVn5kePHolgNOG7U1JSWLRoUZYuXTpH1g+pHagVK1ZMfJqWyWT8/PkzHR0dxQFcThozZgxlMplIPhbAkIULF/4t60fI53BychITdGUyGRcsWMAiRYrw1KlTOcanpqayWLFidHd3F5+mZTIZu3fvTkdHR378+DHH+K9fv9LR0VGEzMlkMqpUKpYtW5aFCxf+LRH4woULLFy4sIT1I9w8q1at+ltI3eLFi1mkSBHxaVomk4k3798RgUmyV69edHR0FNEQMpmMe/bsYdGiRblu3bocY1UqFcuXL89ChQqJ1ziBpF2wYEHevn07x/j4+HjKZDJWqVJFAlds2rQpHR0dxcRVY3r58iWdnJzE/CSZTMb09HS6urqyePHiv00W3b9/P4sWLSoBU4aFhdHR0ZEtWrTIMZYk/f39WahQIRENIZPJeO3aNRYqVOi3rB9SC+V0dHQU0RAymYwrV65k0aJFRXdpY8rIyKCbmxvd3NzEAbkA5XRychKTho3px48fdHBwEIGqwoBF3136v13/VqfbXOXqf1PBwcHo1asXSpbU+RS4uroiISEBbm5uOcaam5ujQIECsLa2luR5FClSBGlpaShcuHCO8ba2tjAxMUHBggXFXAETExPIZDKYmJj8dv21cOHCSEtLQ9GiRcVtefLkgbW1Nezt7bPljmSVm5sbEhIS4OrqKm5zdHSEUqn87b4DQLFixZCWloYiRYqI21xcXPDr1y+4uLjkGCscNwCJaZ6rqyuSkpJ+G29tbY08efJITOsAbZsoFAo4OTnlGO/o6AiVSoVChQqJ28zMzODg4AArKyvRDM6YhON0dtaZc+XPnx+mpqaS39OY3NzckJSUJGn7QoUKZfs9jalIkSLIzMyUuHe7ubkhMTFR8pmGZGZmBicnJ1haWkpybIoVK4aUlJTffn++fPlgbm4OJycnyXEWLFgQJLPlXGVVoUKFkJGRIek3VlZWyJs3L2xtbbPljmSVcJz656e9vT3UavW/1G+dnZ2RnJyMYsWK5bgtp/1Xq9WSHB1D+2RIlpaWsLW1Rb58+UTDQEDbbzMyMsRzwpgKFCgAkpJ+C0jdpXP1P9C/ffj0H1DuDMt/h0JCQrKRc52cnOjl5cW1a9caZd0IOnv2LOvUqcN27dqJpbvC9HBwcLBR1o2gBQsWcMiQIWLVjTArU7ZsWQ4ZMkScMjamXr16cf78+WLVjUwm444dO9ihQwejrBtBKpWKPj4+XLt2rVi6K5PJOGHCBE6ePJlubm4GWTeChKqJ+fPni1U3Tk5ObNKkCVesWGGUdSNIYDUNGzZMrLpxcnJiqVKluHr1apEwbUy7d+9mu3btJFU3Dg4OdHV15bRp04zmcAjy8/PjpEmTxNJdmUzGS5cusXr16uzSpYtR1g2pnR1q3rw5ly9fLlbdyGQyLl26lP379zfKuhEkAAhXr14tVt3IZDL279+fc+bMMcq6ESQ8Tc+YMUMs3XVycmKVKlW4du1ao6wbQVevXmWVKlXYrVs3sXRXWApdtGiRUdaNoJUrV7Jv376Sqht7e3t6eHhw9OjR4qyTMQ0aNIizZ88Wq25kMhkPHjzI5s2bs3Hjxjx27JjRWIHVtHbtWrF0VyaTcfr06Rw3bhxLliyZrSpOXwKrafHixWLVjUwm04IWly7NEUhK6qCiY8eO5cyZ2nwrJycnlilThmvXrhWXR41JWPJt2rQpDx8+TFLbb11cXBgUFMQhQ4bk1HQMCAjgmDFjWKpUKb5+/ZoymYy3bt3KVtX036zcJaFc/SOl7xHyMfoX55x+S1mjfuzWW7sG361bN10ZZRbpl/eGhITQrVozTj/ynPY1OzN4/gIR0iZ4MWSVvkfI2bNnWanjEBZtO5YVOwzmuXPnKJfL6eLiwqioKIPx+h4h84Lns+W4hSzSZgzdqjfj58+fxYGPsRuXfnlv11592St4Dwu3GsniPrWYkpLC7du3Zyvn1tfIkSM5b948qlQqVqhenyM3XmLBpoNZt2krajQag+XcgvQ9QmJjY+niU4eT9z+kY71eHDlmXDavm6zS9wh5+vQpPRp04szjL1mgaltu2rTZaDm3IP3y3p07d7FO30ks2nYsPZt047179wyWc+vr9OnTrFu3LjUaDcdP8mPHqWtZpPUYOvvUY1RUlMFybn0JHiEajYZNWnfgwOXHWLjFcJapWpcKhULidWNIgkdIeno6S1WszXE7brJg4wFs16U7SbJfv37ZyrkF6Zf3hoaG0qVyI0499JQOtbtyZkAQ1Wo1q1Spkq2cW5B+ee/Vq1fp1fpPBpx4TVvvZjx69KjE68aQ9D1Cli9fwaYj5rBom7EsUbs13717Z7CcW1/65b1/DhzC7rO3s0irUXT1rsXExEQeOHBA4juUVRMnTuSMGTOoVqtZuU5jDl93joWaDWXVek2oVqsNlnMLEmwGDh06pB34eNem3977dGrQlwMGa/PN9L1usiotLY3u7u58/fo137x5wxK123DGsRe0r9aBK1euknjdGNL379/p6urKhIQEHj58mNW6jWHRtmNZvmVf0ZsoV7kDllz9AyU8TavVaobFpbJCwAWRzNp62TVqNBrJBSKrli5dyoEDB5Ik74b8ZPHJOjLspIPaC86VK1dE6nBW6XuEbLvzVYx18z/D7Xe0SX/Lly/ngAEDssVm9QiZeOCZGFvc/zTvhmg9TgYMGMDly5dni5caqGnYetk1Mb701NMMi0sVv0OgDuvr1atXdHd3Z3p6OhNSM+kTcFZHxZ17nmmZqmyGefrS9wh5H5XEUv6nxPheG7VP7Fm9bvSlf1M59ypS0nbzzmgHKVm9bvTVrl070Ydm6cUPkvjjz7SJwjNmzJAY5gkSbipPnz7VtvHW+2JsCf9TfBmeQDK7YZ4gfY+QDKWK9edfFOMrzDjDn8kZ2b1u9KT/NB2ZmMay03T9rsmiy1Sq1IyMjKSzs7PBHKh169axZ0+t18zjb3Es7q+LH7VHm3OV1TBPX/oeIfsehkrabt31EJLZvW4EZfUImXHspS5+8mlee6+tDJJ43ehJ30CNJDuuuiHGu085xS/yZGo0GtatW1dimCfow4cPLF68OFNSUvgrXcEqQefE+KqzzjE5Q5nNME9fp06dYv369bUka3ky3afo+m2n1doE9axeN/qaO3cuR48eTZK8+j6abnrXjBnHtWT0rF43+tJ/gFp3PUTS9vsfGh4g/jcqN4clV/8oqVQqTJgwQSQC3/sSi+RMnSfC25g0yJMz4ebmhv79+2P27NmSeLlcjhUrVmDevHkAgEvvYkC9tfwrH7TcoSZNmsDZ2Rm7du2SxD9+/BiPHj3CyJEjAQAX30qJwRffxgAARo0ahQcPHuDJkyeS93fu3AlXV1c0btxY8n0AQJjg0jttfHBwMJYtW4afP39K4mfPno0BAwbA1dUVP1My8TYmTXwvU2OCe19iYWpqilWrVmHChAlQqXRtQxK+vr5YuHAhrK2t8SI8EYmZOi+NyGQ1PsUko0CBApg+fTomT54s+e709HRMmzZNJALf+PgTKj2ix92vichQqlGhQgW0bNkSy5Ytk8R/+/YNe/bswYwZM8S215fw+o8//kBmZibOnDkjff/SJcjlcvTu3dtgvPBbTJkyBceOHcOnT58k769atQr16tVD5cqVodEQN0LixPc0MMX1v36LJUuWIDAwECkpKZL4qVOnws/PD46OjvgWm4rQRJ0HTbISePI9AZaWlli6dGk2krZGo4Gvry9WrFgBMzMzPPoWjzS1rt99jstERGI6ihQpglGjRiEgQApOTEhIwPz587FwoRZmeeW9HIQu/uoHLfG+Tp06KF++PDZv3iyJf/XqFa5cuQJfX19JW4lt+1dbDh48GO/fv8edO3ck7x88eBC2trZo3bo1AODye71+aWKCS++0nzd79mysX78ekZGRkvj58+ejW7ducHd3R1KaEs8jdG2rpCluh8SKJO1JkyZBoVBI4idOnIi5c+cib968eBv5C7HpOh+Tn2kavI1IQr58+TB79mxMnDhREpuZmQk/Pz+sXLkSJiYmuP3pJ5R6t7tnP5KRlKaEh4cHunbtigULFkjiIyIisHHjRsyaNUt77O9iAP1rxnst86lNmzawsbHB4cOHJfG3bt3Cp0+fMGjQIAC6a4SgrL9Frv415RrH5er/vNauXYsHDx5g9+7dSE9Px4SFG3E+w0N8X5ORgqRdo2BlbmqQSKxPBNZoNKBHQ+RvMECMV0SHIP3kLFhYWGSnH2eh9KpUKpjX7g+bCk3E+LQ3V6C+vwtmZmbZiMRZKb1KpRJ5OgTBsrC7GJ98cztMP9+EiYlJNhMufSIwACjUhN2fa2FqrTOXSzo+GxYJWhy9vkkbIKX0AoAyjyPseiyCianWoIwqJRL3jIOVJt0gkVif0qvRaKAu6g271rqbgzolHsl7xsDS0tIgkTgpKQmWlpbIkycP1Go1TLzbIV+NrmJ8xvfnUFxaBnNz82xEYmah9KpUKlg0Ho087jXE+NQnJ8EXx2BqapqNwJvVzE6hUCBfj6UwL6BL9Px1aTXMwp/CxMQkm3mcPqUXABQmlrDruxqmFlpzOFKDpEPTYJkaIx6rPpE4PT0dCoUCdnZ2IAmlnQsK/DFH128VaUjaNQZWphrxWPWN+/T3R6PRQFOyNmwbDxPjlbGhSDs63Wi/1ScCq9VqmFbribwVW4nx6R9uQXV7i8F+m/U8UiqVsG4zDVbO5XT99u5emLy/BFNT02xEYv39MTExgUKphO2f62Fmo7s+J52eD3P5R5iYmEjOUQCS/QEAhaUtCvRaBhMzbdtQrULSvgmwVCYb7Lf65xFJqAqWgV27Kbp+m/YLybtHwvIv0nTWfqt/Hmk0GrBcC+Sv3UuMz/zxFpnnFoj9VkLtNnTNqD8UNmXqifH/TTTm3ymX1pyrf4ZIxMXFYeHChZg/fz4OHz4MLy8vmMd9gX34beQzJ/KoktHY6iuqVvJBhQoVcPXqVezevRu1atWCPDoaly5dgqurK6KjozF9+nTY2NhgXOuKMPn2APmtTGGeFIH+ZUzg7OyMFi1a4NWrV/Dz88OQIUMgj44WwXFhYWHo378/7OzsMKFxcTDyLfJbmYGRbzC+UXHY2tpiwIABCAsLE6Fm8uhoDB48GP7+/nj58iWaN28OFxcX9C8DmP+KQH5LU5h8u4+xrXyQJ08eTJ8+HdHR0XB1dcXly5chj45GzZo1sXfvXly9ehUVKlRAtcoV0cjyC/KokpHPXAP78Nvo07w6bG1tsW7dOoSEhMDe3h4fPnxAWGgoChUqhCdPnmDfvn0oVKgQOjSqgVLxj5DXVAUbZMIn/Tma1qkKV1dXnDhxAleuXEHJkiURFRmBp0+fwsnJCeHh4SKRd1jr6rD+dhv5LACrjHh0dIxB2bJlUb16ddy7dw8rV65EmzZtII+OxqFDh+Dl5YWYmBj4+voib968mNCyPBj6BPmtTGES9w0jqxVAwYIF0alTJ3z8+BEDBw7E5MmTIY+ORkBAAHr16oXPnz+jW7ducHR0xJhaMkAegvxWpmDYc0xo4Ym8efNi1KhRiIqKQuXKlbFr1y7Io6PRqVMnLFy4EA8fPkSdOnVQunRpdC2aBMv0WOSzMIHltzsY3rIKbGxsEBwcjIiICMhkMjx48ADRUZHw9PTEuXPncObMGZQsWRINa1VFdeVr2DAdec3UcJU/QJfG1UWS98uXLyGTyfD92zd8DgmBo6Mj3r9/LxJ5ezargYIRd5DPTIM8mlTUM/mIWlUrwtPTExcvXsThw4dRsWJFxERH4caNGyhSpAiioqIQFBQEGxsbjG1dBaZf7yK/pQksUqLRp6QCxYsXR6NGjfDs2TMEBASgT58+kEdHY+PGjahXrx5+/PiBIUOGIH/+/JjQ1B388RK2VmZA9AeMq++MAgUKoE+fPvj+/Ts6dOiAhQsXQh4djdGjR2Ps2LF4+/Yt2rRpg6JFi2KItxXMEsOQ39IU+P4Q41t5w8bGBpMnT0Z0dDTc3d1x5swZyKOjRSDlrVu3ULlyZVT08UHLfKGwViYhnzmRP/Q2BrSoLpK8BZL269evEfHjB4oVK4Z79+7h0KFDKFasGNo0qIEyv54gr4kCNiYKlEt+ilb1q6No0aI4fPgw7ty5A2dnZ0T8+IHXr1/DwcEB379/x/Lly5E/f34MbFkd+UJvI58FYa1IQuv8YfD28kLlypVx+/ZtbNq0CY0bN4Y8OhqnTp2Ch4cHoqOj4efnBxsbG0xo5Q18e4j8VqYwSwjDUJ88KFy4MNq2bYt3795h9OjRGDNmDOTR0Zg/fz46duyIb9++oXfv3rC3t4dvvWJA9HvYWpujadmC8Gvh+b99df176t+wJPUfV24Oyz9Qt5eRcwoyPcCBuya0ZP369dmsWTO+ffuWp06dEteNhfX/mJgYHj9+nB4eHhwxfBhPDnSmOsieP6c4cFvgIJYrV44DBgxgZGQk586dKzJShPX/9PR0rl27li4uLpwzw493hjhQE1iAH8bac93cSXRzc+P06dOZnJzM7t27i2vTwvp/cnIyp02bRjc3N66bO4kfxtpTE1iAt4c4cM4MP7q6unLt2rVMT0+nl5cX7927R1K3/h8ZGcn+/fuzXLly3BY4iD+nOFIdZM9Tg1w4fNhQenh48MSJE4yJiaGzszMjIyMl6/9v3rxhs2bN2KBBA+4c35zpAQ5UBDpw38jqbN++PWvUqMEHDx7w0aNHIiNFf/3/2rVr9Pb2Zs+ePXloaDmqAu2ZPMORO/y7sFq1auzUqRO/fPkiYTUJ6/+/fv3inj17WKJECU4aP5YXBhaiJqgAf0xy4JY5o+nu7s5Ro0YxNjZWktwrrP+np6dz0aJFdHFx4ZKgyXwywp6aQDu+GGnP5bP8xCqutLQ0NmnSRKzWmDdvHkeOHMn4+Hj6+vqyZMmS3DRnLEMnatv+8iAZp/qNZ/Hixbljxw6mpKSwVKlSfPPmDUmye/fu3LBhA799+8auXbuyUqVK3DGtB5OmO1IVaM+jQ0qzb9++rFChAi9duiRJ7tVPhn3y5Anr1KnDVq1acc/o2lQEOjAjwIG7xzVikyZN2LBhQ758+ZKXLl1itWrVqFarxSTtHz9+8MyZMyxTpgwHDRrI44OKUx1oz/ipjtw2oy+9vLzYu3dvhoeHS/KwhGTYtLQ0btq0ia6urgycOpHXBztSE1iAn33tuWGu9tgnT57MpKQkSR6WkAybmprKwMBAurq6cvXcyXw7Rtt294fac36Atu1XrFjBjIwMaR7WxImcOXMmY2JiOGTIEHp6enJr0DBGT3agOrAAzw4syrGjR7JUqVI8fPgw4+Li6OLiwtDQUEky7IcPH9imTRvWrl2bOya2ZepMRyoDHXhgeEV26dKFVapU4e3btyV5WEKS9uvXr3nr1i1WrlyZf/zxBw8M96Ey0IGpMx25c1I71qpVi23btuXHjx8leVhCrlt8fDwPHjzIUqVKcdyYUTw7sAjVgQUYPdmBW2cNp6enJ4cOHcqYmBhJHtaVK1dYrVo1ZmRkcPny5XRxceGCwMl8MEzbdm9GF+CqOdpzPigoiKmpqZI8rFxJlZt0m6u/tyKeSUBhipm2vHRkBzUaDTMyMrJl5s+fP5/Dhw8nqS1BPTOnpyQ+doo9Hz16RFJr5JQVtNazZ0/RvCsuLo7X/GtK4l9MLC66ad66dUtSPi2UGwvmXV+/fuXLicUl8df8a4qW+2vXrpWUTwvIAMG869GjR4ybYi+JPzO3l2haNWzYMJFCS5JPnz6lp6cnMzMzqdFoePHwdir0qLQMtOWZzfOoVqtFkzv98uldu3axXTutPb9SqeTpFeMlsekz7Hj9gjYhUkii1C+f9vPz4/Tp00mSKSkpPD+zjST+u19BvnqlTVD88OGDpHxao9GwRYsWonlXVFQU70zyksQ/mFhWbJsTJ06wQYMGYoJjeno63d3dxc9/9+4dQyZJicQXpjcVy+Bnz54tmvaRunJjIUn75tVLTJ1uJ4k/vWSkmMzatWtXSfn01atXxSRtjUbDszuWUq1HslbNtOX5feup0WjEKjRhoEqSK1asYL9+/Uhqk4NPLxgg+e6kaQV47642qTkmJiZbFdrAgQO5dOlSklp44+Up9STxbyc6i8mojx49kpRPC+XGQpJ2aGgon0x0l8Tf9KsiQi+3bdsmKZ8Wyo2FJO1nz54xyt9REn92VmcxCVvfXZok37x5w1KlSonvXz55gJkzpP329LrpYtsK7tKCDh8+zKZNm1Kj0VClUvH02mmS2MwZtrxyStuvhAGOYNpHUnSYFt4/G9RJEh/l78Tnz5+T1J7TWcunO3bsyB07tNBRuVzOm36VJfFPJrozLCyMJHnx4sXflk//NysXfpirv7c+XQT2dZNsanzQAm/iTI2C1vQhbWMrqzCjpg7yptYAzhstoaZJthwPICukzQQbminR2UOX4Pc+zgQNDmrXxg2B1vQhbQBwq4cCZRx0p9WxEFMMv2yRDcQnSB/SZmZC/BimgJneYu3cB2ZY9czcKGhNf/2/gqMG17orJe/3OmuOK6FmyMzMREZGhsT4TTgmYb29m6caa5qoJO9X3GWJyBQTCYhPUNZjCqqtwsiKurZPygQ8tmpzPvRBfOJvkwU4ebCtAo1cdW13P9IEHU5o294QnFHI0RFyHV73y0QhPX7h1temmHrbwiggUD9Hx9GaeD8wS+LnDXPsfmeW7TcWpA+crFtMg2MdpG3f+qgFnsRkz/EQpH9MQ71VmFtXLXm/+CZLpKmy53gA2XN0VjRSoldZXb/9ngRU36tta/3fWFDW/nTpDwUqFtS1/fmvpuh3Qddvs8IZswInw4dlwkqP3bj0sRkWPjY3ChXVB5KWKqDB/V7Stht4wRxnvppl+40F6QNJ25VSY2sLab+tudcCX5NMDUJFsx6Tf3UVJlbVtX2GCnDdpG07Q1DRrMe0s6USrUrqwQ2LVgKG3oBSqUSlSpWwdetW1Kihy73KlU658MNc/b2VlsCUeaXEp5WUZVVIZWaOoLVjx47pAHTyD8wI1D3tpe/RQv3u37/P8uXLGyz/DAoK4rhx47QvPpyTPinfWEyS3Lx5M//44w+Du9ylSxdu3bqVJLX//1esOsCW/HCeJDl27FjOnj07W2xWAF36nl5ifEagEyn/SI1Gw4YNG/LEiRPZ4qOjo+ns7Kw1L1NmMmVpFV3bzSulbc+UFJYoUYIfPnzIFi8B0P2KYtqsYmJ86tpGpEYjMl0MWeBv2bJF1y7hT6gI0M0QZZ7Qtum5c+eMsprGjh0rAug0z/dJnlQ1j7eTJBcuXGjQAl9oF8EyX3F2ihirDChAftfOaPTu3Ztr1qzJFi+wbgQAXdrGlmJ8WlBhMjGcKpWKFStW5K1bt7LFC+2SlJREZiQzZb6nru0XeZGKNAl4M6vOnz/PmjVratsl7gvTA2W679+undF4/vw5S5cubZDVJGmXz1epCrDT9dvLWtzCnj172KZNm2yxpJZ1I7SL+t5aab99o21Tf39/g6wmlUrFSpUqiQyrjIODdb97gAMZpZ35MsZqEpaJwsPDSZWSKStr6/rdHDcyJVY07TPEapK0S0osU+e46tp+ZW1SrZKAN7Nq7969unaJeqXdZ+G8O6Q1hLt+/TqrVKlicHbE39+fU6ZM0b54c0xyzeD99STJVatWsW/fvgbbPlda5S4J5epvrYyMDNbyLsXIg5M4raEtm9arQY1Gw0GDBolT4FmlP20cHh7Oxl5FmXo+kKNr5ePwYUPEKfBLly4ZjBduXG/fvuWNGzc4qGkZqq/OY3fvPFy7di0TExPp5ubGb9++GYzXnzZes2YNVwxrzAWt7DmwiSdv3bolOm4a8ikhtawbYdp4+NDBvDCvB4NbFGBjr6L88eOH6LhpzGBLgBJqNBo2rlON77eOZFBTO9byLsWMjAwGBASI1FxDEqCESUlJrF3OmXEnptGvfn52bteKpJaaa4zVpFKpWLlyZV6/fp3v379nu6quzLw8h4Oq2nDatKlUKBQsW7asUVaT4DMTFhbG48eP069zZWquBbN9GSvu37+fUVFRRn1KSPLFixeiedmsWbO4c1Ibzm9pzy41i/Ply5e8e/euSM01pP3797NVK+1x9ujamXeX9+Pc5gVYp1wxxsfHc9OmTezWrZvRtps6dSr9/f2pUChYp1IZhu0bzxmNbdmwZkWq1WqOHj2ac+fONRrfpk0b7tmzh9HR0axXrgiTzwZwXO18HPBnH2o0GtavX58nT540GCtQwp8/f84HDx6wd313qq7MZZ+KNlyyZIk4UDXGatJfIt26dSsX9K/HBa3sObJVBV68eNGgu7S+bt68KS6R+o4by5NBfzC4RQG2qFiM3759E92ljfVbAUqo0WjYqkl9vtw4jLOa2bFmeTempqZKlnsNSYASpqamslZ5N8Yc9ad/A1u2bqpdOuzVq5dRVpP+EumXL1/YomIxZlyczeHV83LCeN9sy71Z9evXL5Frdv78eY5u40XNtWD2reZAUmfalxNUNFe5A5Zc/c21cOFCkXwsk8nYunVrzp07V3TcNCYhMa9Hjx7iU6OTkxM9PDw4e/ZsEZxnTAcOHGCzZs0k5GPBhnvUqFGcMWNGjvHTp0/n6NGjxYuUTCbjjRs3WKlSJTZt2pSHDh3KMb5du3acO3euSD6WyWRcvXo1e/XqJTpuGpNgkDZnzhzxqVEmk3HIkCGcOnWqUUM9QYJB2pgxY8SnaScnJ9aqVYvBwcFGDfUE3b59mz4+PmzZsqX4NO3o6CgmKxsy1NPXunXr2L17d8nTtL29PUuUKMG+ffty2bJlOcYPHz6c/v7+IvlYJpOJs25VqlThlStXjMYKBmnz588XyccymYyzZs3i8OHDjRrqCRJye2bOnCmSj2UyGbt06cLZs2cbNdQT9PHjRxYvXpz9+vXj4sXa2TwnJyeWK1eO8+bNM2qoJ+jkyZOsV6+ehHzs6OhIZ2dnjh8/3qChnr7mzp3LoUOHiuRjAZBZvnx5CcbCmLp168agoCCRfCyTybhlyxZ27tzZqKGeICG3Z968eWzcuLGIPRg7diwnTZokuksbk5C8PGnSJJF87OTkxEaNGjE4ONiooZ4gwWG6Y8eO3LZtmxhfsmRJBgUFGTTU09f27dvZoUMHlitXTsyTEwCHgrt0rnJW7oAlV39bRUVFSS5SMpmM79+/p5WVlVHrd3117tyZhQoVEi9SMpmM+/fvp5WVlUE3TH1pNBq6u7uzbt264jbh4mlra5sja4fUWtDnz59fnMkQLlx16tShh4fHb4nAHz9+pLW1tZiEKpPJqFQqWahQIXbp0iXnA6c2EdHKykpc9pHJZIyJiaGNjY14I8xJEyZMYP78+cWnaZlMxnv37tHKysrgckhW1a9fn6VKlZIQgVeuXMk8efIYRRYIUiqVLFy4sAQvIJPJ2LNnTzo5Of2WCCyXy2ljYyO6ugok7bJly7J69eq/3feHDx/SyspKtEyXyWRMTU2lnZ0dR4wY8dv4tWvXMk+ePGKCsEwm45cvX2htbf3bGz6pXZpxdHQUj1Mmk/HkyZO0srISk4qNSaPRsHz58qxSpYq4TSaTcerUqcybN69RZIGgtLQ0FihQQFxaEvpts2bN6Orq+ttk0W/fvtHa2lqcgRNI2s7OzuLMVU46d+4crays+OLFCzE+Pj6eefPmlSTqGtPMmTOZN29ecdlHIGlbWVnx/Pnzv41v2bIlXVxcxOMUBlzW1tZGkQWC1Go1XVxc2Lx5c3GbTCaTVDXlKmflOt3m6m+r6dOnY8KECRKq7cuXL1GkSBG8fPkyx1iNRoNv375Bo9FALpeL21+9eoXChQvj1atXOcYnJSUhJSUFUVFREtfNkJAQWFtbIzQ0NMf40NBQ2NjYSNxWFQoFoqKikJKSgl+/fuUYb2g/Y2JiJMeVkwy108ePH1GgQAG8f/8+x1gA+PTpE/LkyYPv37+L2168eIFixYrh+fPnOcYqFApERkYiNTUVSUlJ4vZ3796JfiQ56efPn9mOkyS+fPkCExMTREfn7Az66dOnbMeZkpKCpKQkyOVyZGRk5Bj//PlzFC1aFC9evBC3hYeHw8rKCiEhIRIHW0N6+/YtHB0d8e7dO3HbmzdvULBgQbx+/TrHWOE4TU1NJW6xr169QtGiRX/b71NTU5GYmAi5XI709HRx+6dPn5A/f358/fo1x/gfP37A0tJScpwqlQphYWFQKBRISEjIMf7t27fZjjMuLg4KhQJhYWFQq9U5RGv7WNa2//z5M/Lnz4+PHz/mGAto+3j+/Pnx5cuXbJ/5u7ZTqVQIDw9HZmYm4uJ0Lshv3ryBTCbDmzdvcoyPj48Xj1NwmGYWd+lc/T/Uv3fs9J9R7gzLP0OPHz/ORq4VpmcfPHjw26l5wSNk5cqV4tS8g4MD3dzceP/+/d9OzQseIYMGDeKSJUtIknZ2dqxZsyYPHjyY49S8vrdEjRo1ePHiRcpkMi5evJhDhgzhzJkzOWnSJKPfLZRePnz4UMyVkclk7Nu3L1evXm2UdSNI8Ah58OABS5YsydTUVDo5ObFSpUq8fPnyb6fmBVbT4cOHxal5gQj85MkTkTBtTMuWLeOgQYMYGBgozjDZ29uzdOnSvH79On18fHKcmhc8Qjp16iROzefPn5+tWrUyyroRJHCULl68KE7Ny2QyTpkyhf7+/kZZN4KEHJrHjx+LSd0ymUzMLdEnTBuSAAC8ceOGmCvj5OTE0qVL8+7du0ZZN4IEj5CNGzeya9euJHVLkY8ePTLKuhEkeISMHj2ac+ZoE23t7OxYqVIlnjhxwijrRlD79u25a9cuNmjQgCdPnqRMJuOaNWvYp08fBgcHi55FhiRwlO7evSsmdctkMg4dOpSLFi0SwY/GJCxFPn78WEzqdnJyYs2aNXnmzBkJYdqQBFbT6dOnxaRuYSlS+D0jIyONxq9fv569evXiggULxFwZe3t7lixZknfu3BE9i4xJYDX16tWLa9euJUna2tr+ll6eK51yl4Ry9bdTVo+Qky8i2GTpDRYbtIa9xmsrazZu3Gg0+VFIgPv8+TMVCgXdO4xmjdnnWKTPYi5Yp/VLGDVqlNHkR32PkPCISLp0mcJa8y6xYJcAXr51X0x+PHXqlMH4kydPih4hl27eY8l+i+gyYhtdu/jzR2TUb5Mf58yZI3qEzF+7neXHbqXz8C306DiWSqVSTH40duPq2rUrN23aRJLs4RvEilMOsdiQDWzUX2t2debMGaPJj0Iewf372uOs0m0sqwaeZtH+KzkqUJvkPH/+fKNLI4JHSHR0NFNSUli8gy9rzr3Awj2DufWAtqqpZ8+eXL9+vcF4fY+QNx9C6NY9gLWDL1HWwZ9PXr4Vkx+NLUtt27aNnTp1IknuPX6OHkNW0WX4Vrp1nMDEpCQx+VFYrskqfY+QScGr6DVxN52HbaL3H2Op0Wj47Nkzo/lTWT1CWg6ewsrTj7HY4HXsNGomSanXTVbpJ3urVCqW6TSa1WedZZE/lzJgmdaccNKkSaLXTVZ9/fqVrq6uTEpKYszPWLp28mOteRdZqOssnrx0PZvXTVbpe4TcfviUJfoEa/vtH9P45XuYWKVjbFlqyZIlHDx4MEly5bb9LDt6E12Gb2XJDmOZkZGRzesmq/7880+uXLmSJDnAP5g+/gfoPHQja/fWeqRcvXrVaJWOWq0Wk71Jslav8awacJJFB67mwCnapcEVK1awf//+Br9bP9k7IyODJTuMZY0551m41wKu3nGApNbrxlj+1MuXL8Vk78/fQunadTprzbtEWadpvPPIMME5V9mVuySUq7+dDhw4gAIFCqBVq1b4LE/G+IMv8FmeAnOn4niWtyriUxUYNGgQPn36hNu3b2eLDw4ORo8ePVCqVClc/RgLZZmWiE7VwLJYWZxPcQUAzJo1Cxs3bkRERES2+AkTJoigtcNvk2HqXheRvxTI414dR75biJA2Pz8/ZGZmSmIF0NqKFStgYmKCI6EWUBcuB1PbgjBxr4fDb38hb968mDNnTjZIG6Cdkt+0aROCgoIAAOdS3JCSpxDM7ApD4dkcVz7Ewt3dHd26dcP8+fOzxd+8eROfP3/GwIEDEZ+qwIt81ZFAG5g7OCO0SAN8lqegdevWyJ8/Pw4ePJgtfuPGjahYsSJq1qyJ5+GJiCvRHD8zTGBRqBRum5RHhlINX19fXLlyxeCy2syZYtJcjgABAABJREFUMzFmzBgUKlQIp97GgWWaIipZBStXb5yKdQIAEa+QdXmBJMaOHYtly5bBwsIChz9mAsWrIyJJAZsy9XDkswpmZmZYvnw5fH19sy0v/Pr1C7NmzcKSJUsAACdjCkDhUBKmdoUAz8Y48SYeTk5OmDRpEqZOnZpt3z98+IBTp05h8uTJUKo1uKYqg1/m9jArUBRJpZrjwdd4VKpUCXXr1sXq1auzxZ88eRIk0alTJ4TFpSFEVg9xKkuYO7ribYGaiPmVgd69e0Mul+PSpUvZ4pcsWYK2bduiXLlyuPU5DumlWyImjbAs4olLGaUAADNmzMDu3bvx7du3bPF+fn4ICAiAra0tjr5JhEnpBoj8pYR1ySo4/sMGJiYmWL58OaZNm4a0tDRJrFKplEBFD381gaaYt7bflqqNQ+9SYW1tjQULFsDX1zfbslhMTAxWrlyJuXPnAgDOJhZBWt6iMLUrBHWZ5rjwPhaurq4YMGBANiApADx8+BBPnjzBiBEj8CtDiUdWlZCIfDCzL4Yol8Z4F/kLjRs3hqurK3bu3JktfseOHShRogQaNmyIt5FJiHZtgp+ZZrCQlcAjy4r4laHEyJEj8ejRIzx+/Dhb/KxZszBo0CC4uLjg3LufUJdpjugUNaxcKuBMQhEAwLx587B8+XLJEjOgW/ZZtGgRrK2tcehdKkxK1kLkLwVsStfGka8m2b4vV///K9c4Llf/60pNTYWXlxfOnz8PT09PXH4XjSG7nkr+J/1EIBgflg3SBiAb+M3cuy0sq3YRY0kN0ncMAagxaOCVmZmJtLQ08TMtGw6HeUmdyZMmIQIZx7W0YUMGXlnN7Kw6zYOZfVHxfdXXh1Dc2GAQ0gZkARaamMFmwBbJsSueHIHq1VmDkLasn2ni6IY8HYIk8RmXV0AT/jIbpA1Ats80c68Dq/qDpW1/cBKYGicBKQrxWYGFFtW7w6JCS13bK9KQvmeU+DvzL5M2cd+yAAstW0yEeTEdFE4d/RGZ57QkXX2QoiCBrix8pnWPFTC10RnjKd9fhfL+nmwgRUESYKG1LWx6rZS2/d2dUH28kc2kTWh7fWChadFysG7pJ237M/OgkX+WgBSN9Vuz8s1hVaOnJD5t13BAlSkBKYr7luVcsKg7CBal64rva37JkXHEX2wnfbAjgGznglX7QJg5FRffV4U+g+Lq6mwgRUFZz4U8/TfDxFRn6qd8cQrKZ8cNAkmz9Vu7IsjTJVhy7JnX1kL9/Um2dgKy91vT4tVg3XikJD796FQwKdrgNSPruWBeuTMsK7YTY6lWIX3nEO1vYMCsMuu5YNlkLMzdKonvexWzw+kxut8iV8aVCz/M1d9KixcvRqdOneDp6Yk3b95g3sRhMFHongZN0uJR28sdDx8+RGJiIjp16oT58+dDLpdDLpejQYMG2Lp1K2JjY7F//34UyIwB9BJUTWI+oWeP7vjw4QMSEhLg4eGBU6dOQS6XIyIiAsWKFcP9+/cRExODJUuWwDw2RLqD0R8wceJEhIeHIzQ0FA4ODnj9+jXkcjlevXoFBwcHhIWFITw8HBMnToRpjDTB1CI2BMuWLUNMTAzu3bunhbRFREAul+PkyZMoXbo0EhIS8OHDB/To3hWI0Us01GhQIFOO/fv3IzY2Flu2bEHDhg3FYw8ODkbnzp2RmJiIhw8folb5kjBJi9cduyINZWR5cO3aNcTHx2Ps2LEYPXq0GN+zZ0/Mnj0bcXFxOHv2LFysFYBKl3BskhSFFvVr4MWLF0hMTET9+vWxadMmyOVyxMTEwNvbG8ePH4dcLsfWrVth8ysM0H8Gin6PQYMG4cuXL/j58yeKFi2KmzdvQi6X49u3b3BycsLr168RFRWF2bNnwzRGmmRpEvMRM2fOREREBD58+ABHR0d8/vwZcrkc9+7dQ6FChRATE4Nv375h+PDhMIn5IIm3TviGDRs2QC6X4+zZs/D09ER0dDTkcjl27NiBatWqISkpCa9evULbZg1gkvhDF6xWorBZCk6ePInY2FgsWrQInTt3Fttu0qRJGDp0KOLj43Hz5k14OdvDJDNFt+/pSajqURT37t1DQkICevfujYCAADG+ZcuWWLNmDWJjY3HkyBHINPGARm8GKfYrunTQwvUSExNRoUIFHDp0CHK5HFFRUShevDiuX78OuVyOVatWwTL+c5Z++x5jx45FaGgoIiIi4OTkhKdPn0Iul+P9+/dwcHDA169f8ePHD/j7+8M0S9uZ//yEBQsWICYmBk+ePEHhwoURHh4OuVyOixcvonjx4oiPj8enT5/Qt29fmETrxVOD/GmR2LVrF37+/Im9e/eiZs2a4rEvX74crVq1QmJiIp48eYKGVSvAJOWnru2UGShpZ4pLly4hLi4O/v7+GDx4sBg/cOBATJ06FXFxcbh48SJK2mpjxPgUORpV88bTp0+RmJiIli1bYuXKlWK/rV69Ovbv34+fP39i165dsE2LAKh3zYh+jz///BMhISGIi4uDm5sbLl26BLlcjrCwMBQqVAhPnz5F9F+wQ/OfukR7AKhf2gm5+n+v//GA5datW2jXrh2KFi0KExMTnDhxQvI+SQQEBKBIkSLIkycPmjZtipCQEMMfpqe1a9eiePHisLa2Ro0aNfDo0aP/6a7l6u8kEvh2GzH3D2LXjm0YNWoURo8ejU6dOmHUwD6wfbIV9YuZobp9Bjx/nEfbls3QsGFDzJgxA4GBgVgUPBupL0/iyfG1CA8PR506ddCpUydMmTIFy6aPgeb6arQqYw9PTRg6F4qDo6MjKlasiE2bNmHx4sUImDQKmg/ncWBVAGrUqAG1Wo1atWrhyJEjWD2+F8we70UHn8KQRdzBjLbl8O3bN3h5eeH+/fsYN24clgb4Ah8vYFmAL3x9fXH37l14eXnh+/fvmNa6LApG3kUHn8Iwe7wXqyf0xqFDh1C7dm1oNBpUrVoVB1cHQfPhPAImjcaSJUuwadMmVKxYETKZDJ1kP1GGYWhVxh68sRrLpo+Bv78/OnfujHr16iE0NBRPjq9DyosTWDx/DgIDAzF9+nQ0bNgQ7Vu3gEf4WdRwyEC9Ymawe7oNowb1RceOHTF69GiMHj0aO7ZtQcz9g/h2bRfOnz+Hnj17YsCAAejXrx9m+A6D5Z11aFLCBpVsElEz4xGqVqmMmjVrYsGCBViwYAFmT/eD4u1ZXNuzFJaWlihRogRatGiBJUuWYM30kdDc2oC25Z1QIvU9BlewBEl4eXnh8OHDmDNnDmZPHgV+PI8tC6egc+fOiIiIQOXKlXHz5k0sG9oaNm9PoqNPEeT7dB4L+jbE48ePUalSJXz+/Bm9e/fG+nl+wMcLmDdlDAIDA3Hq1Cl4eXkhNTUVI6vawSXpFdpWkIF3NmPttGFYs2YNmjRpgiJFikAmk+H89oVQvjuLwCnjsXjxYixZsgTVqlVDhfLl0YCv4W0Vi2al8sHs5hrM8RuFoUOHom/fvujcuTNu3bqJT5d3IO7xEWxctwYTJkzA+PHj0bZtWwzs3Q2yV7tRtwhQS6aC2+ej6NqxHZo2bQp/f39MmzYNK5cuQtLTY3h1ZhNev36N5s2bo1u3bhg3bhwWTR0LXF+FFh62KGcaidZ5v8PNzQ2VK1fGmjVrsGTJEgT4jYH6w3kcWz8HZcqUQZ48eVCvXj3s2LEDaycPgMn9HWjvXQhFfj7GpMZuiImJgZeXF65evQp/f38smjEO+HgBq2ZNwNChQ/H8+XP4+Pjg/fv3mPVHNdh/v4aOPkVg+eIQVozugrNnz6J69epITk5G48aNsXvZDPDjBQROGokFCxZg586d8PHxQd68edHTLR0eyi9oXdYBmhvrsHL6aMyaNQtt27ZFpUqV8OvXL9w9tArpr08jeNYMzJ07F0FBQahbty4aNagHr59XUdU2BQ1dLWHzYCMmjRyE7t27Y9iwYRgyZAgOHdyPiDv78OP2Phw5fAiDBg3C0KFD0aNHD0wePQTW9zegkasVqtimoGL8TTSoVwd16tTBrFmzMHfuXMwLmo6MN2dw99AqpKWlwdvbG23atMHs2bOxcvpoaG6sQ+uyjnBXfEavEpnIkycPvL29sXv3bixYsABBfqPAjxewa+l0NGvWDElJSahevTrOnz+PFaM7w/LFYXSqWAQz2pTFxGa5NOZ/i/6nCTLnzp3j9OnTeezYMQIQLbEFLViwgHZ2djxx4gRfvnzJ9u3bs0SJEjnWox84cICWlpbctm0b3759yyFDhrBAgQIGLdgNKTfp9m8mjYY82Fe0sX45qQSLuzpz3rx5TE9P59atW0XfEbVaLVbdJCYmctKkSSzn7sbPfkXF+PPjfOjm5sbt27dTrVZz3LhxDAoKIqmDtH39+pVhYWHs1asXW9Yow59THERA3brBNVi+fHlevHiRGo2GjRo14rFjx0iSb9++Fatunj9/zgYNGtC3Y1WmTvvLQny6Lcd1rMqGDRvyxYsXYhKlAFo7evSoWHVz4cIFlitXjuuH1KTqL0DhzykObFGjLHv16sWwsDCp1TspVt2o1Wpu27aNbm5uvDDORzz2z35FWdbdjX5+fkxKShKt3oUkRaHqJi0tjXPnzmVxV2e+mFhCjL8/wZMuLs5cvnw5FQqFWNVEapEBQtXNz58/OWLECFYtV5LhkwuK8YdHV2WpUqV46NAhajQasaqJ1HnqxMTEMCQkhB06dGD3hl5MmFpAhFou6FuTlStX5q1bt0SrdyGJ8t69e2LVzf3791m9enXO6lWDGX9B8pKm2vHPZj5s06YNP3z4ILV6J7lp0yZ27dqVGo2Gx44do4eHB/eOrCbue6S/jLW8S3HIkCGMiYnhixcvJBb4Y8aM4Zw5c6hUKrlmzRq6uLjw9oRyOrjgJDeWKu4iEnn37dvH1q1b/9XFNWLVjUDyLl3SlR/9nMX4q75edHV15aZNm6hSqcSqJpISlEJERAT79evHRlVKM+YvwKA6wJbbhtVgmTJleObMGWo0GrZu3Zp79+4lSYaEhIhVN69fv2bTpk05vE1lJk+z0+Iqpttyyh/VWKdOHT558kTimEtKUQoCyXvFgJpU/tVv46bYs32dcuzatSu/ffvG8PBwuri4iJBPoepGrVZzz549LF68OE+N1QECv00uTG/P4vT19WV8fLxosChARYWqm4yMDC5cuJCuLs4SOOOTie50dXHmokWLmJGRIVY1kZSgFOLj4zlu3Dh6exbn98mFxfiTYyuzRIkS3Lt3LzUajVjVRFKCUhBI3u3rlBOhpMqZtlwxoCa9vb157do1ajQa1qxZ81/yfMlVdv3HqoSyDlg0Gg0LFy4sMalKTEyklZWVQZaEoOrVq0tK59RqNYsWLSqaQP1OuQOWv5kiX0p4MQy05c9H2iqLpKQk0XFTkIR1QzLqwvJs8cnR2nLnd+/eiQMMQVu2bJEYr/3YJqXiJgcVEz9bf4AhSMK60WgYvbiWJD56sY6RExQUJDpuCv/fqFEjHetGoWBKUFFJ/I9tOhfYzp07i2W9ZHbWza/ob9mOPerCcvGzy5UrJzKJSGYbAMkfHskWH/dO6+priNV04cIF1qpVSzy+iKMzJLHqQDumJWs/+/79+9ks8BctWiRhAP1Y11ESHz+3tHiTMsRq6tOnjzgAUqvV/BlcQRIfsaql+L9jxoyRsJqEAdCNGzdIkulpaVQEOkjjD0wUf6esrKa4uDi6urqK1uoJnx9la7uYO7tJ0iCrKSsDKPrahmzxiWFvSZKfP3/Oxmrau3evOAAiyR+7R0hi0wMLipVLhlhN+qwbjUbDyGUNpfu+sIr4//ru0oJat27Nffv2kdRWkiXNllLIf2zqKf5v7969xbJeUocMEMzgkuNish175Olg8XfSd5cmmW0AFPv8XPZ++0Lr6muI1XTjxg3RtZgkI07NzRafEi8XfyfBXVrQ6tWrJQygH5t6SH+32cXFfp4TqylXv9d/jNZsYmKC48ePo2PHjgCAr1+/olSpUnj+/DkqVqwo/l+DBg1QsWJFrFy5MttnKBQK2NjY4MiRI+LnAEC/fv2QmJiIkydP/nY/cpNu/2aSvwfW1ZRsanfcAg+jTA0SgQFtgp+5uTny5MmDTu5qbGyuI7NqCJTeaolfChODRGBASlmeVkMF3yq6XIHwZKDKbu3/GyICMwuReE9rJZoX1613X/xuir7njBOBs1Jxn/XNhLMebHrFUzMEPzQ3SgTWpyzbWREfBypgqleEMPSSOU58NpNQn/Wl36Y1imhwupOUilt3vwU+JZhK2lhf+m06sIIaC+rr2j5TDbhtsoSGJgZJ1lnbdEkDJf4sr2u71z9N0OSwpVGSddY2PdtZgWqFdZesgx9MMeaahZiY6ejoKPnurG36dXAm8unynRF41wzrX5obJQLrJ6a62RKP+0hpzt1OW+BGuKnBhGJAmpjaqoQaO1tJicIVtltCnm4iTf7Vkz5leUIVFabU0PXbn2lA+R2/77dCYuqW5kq0d9e1/a1wE/xx2tJov81KJL7XUwF3e13bb3hphoC75mJCcVaKuEKhEJPZrc2Ir0MUMNdLQhh7zRwHPphloz4L0qcs+8g0uNxV2m+bHrbAq5+mEuqzvvQpyz3LqLGysa7tVRqg5GZLZKhNJNRnfem36Zw6Kgzz0csvcvQAxjwRCwYuXLiA0qVLI1f/c/3HaM3IMsNy9+5dAshm1NO1a1ej/hkREREEwHv37km2+/n5GbXUzsjIYFJSkvgXHh6eO8PyN9Pbxa10U+tzapMaDT99+sQSJUoY9BoRDKZ+/vxJKjP5YZqOivtxi/YJ/syZM6xbt65BrxGBdaNSqaj5Fc1QP9lfU+P5GXV9M0kyODiYI0eONLi/69atY69evUiSaV8fMM7fjgy0Zay/HdO+PiCp9RoxZpI1YsQILliwgCQZdW2TuKwR6iejJjmGSqWSPj4+vHv3brZYgXVz9uxZkuSHzUPFY/8wrQypUoheI4ZMsgTWTUhICKnR8O1s3QzR28XaJ/gnT54Y9Rr5+PGj6FHDzBSG+Lv9tZyWn18PaflKu3btYocOHQwe+6lTp0SPGlXsV0b6aWc5kqfmZ/wT7dLbpEmTjLKa5s6dy9GjR5MkE1+eY9LUv2aW/OypiH4vMe0zpG7duokeNaEn5onLGl8mFyPTk5iWlmaU1aRUKunl5SVen96u6Cy23bvAKqRazdDQULq5uRn0GhFYN1FRUaRKyfczdDNE79dpn+CvXLlilNUksG4UCgWZGsdvftpljcwZ+fnjwgqS5PLl/x97/xnW1LZG/cODagFBgYiFjoiiYAFE7Iq99957L6igImLvvffee+9dt71h7yJVQu8Qkoz3Q3ZWEkjwPM9zdjn/l3FdfiDJMGvOzKysNec9x2+VTlbTrl27hIyanIhXFAcoluMSAkow/aNi5mnw4MFctWqVVr+/v7+QUSO+v4+ZQYpjj5hqRXlKFGUyGb29vbWymuRyOZs2bSogNb7snSgQjT9PcyYlWUxKStIZCKkMU3z3TjEL9Xahaobo3aImJMk3b97oDIT88eMH7e3tFWgCSRY/TXP+czmtBL/uV+S8HDt2jM2bN9d6zrh27ZqQUSNLimDEVMVyXMYMM/LTFZIKLMDvWE2FKlj/2JLQ33XBEhISQgD5/hVesPxvSEk+jnh1i3VcLITQMWXipi4tWLCAo0eP5rt37+hSwYlZYc/oYWdONzc3pqen09XVlc+fP9fp79GjBzdv3szjx4+zVbPGlEe9pFNpU3bu3FnzgkiLcnNzhdTNkJAQTp80mn5ulpw2cRRnz56tcUGkTeoXFJ06deLhbWvYuJIFWzZtxJMnT3LTpk3s1auXVi+puqBIT09n5cqV+er2GTZwtWAFZ0e+e/eOo0aNKjDNdffu3ezQoYNAPk74cJ+1nEoJJ/S6desWmOY6efJkBgcH88GDB6zuXoW5ES/oVt6MPj4+TElJUV0QaZHyguLYsWPcunUr+/XoTEa9pL2VCYcNG6Z5QaRFyh+uN2/ecOzYsVw+dwb93Cw5rH9Prl27lmfPni0wzTUsLIx2dnZMTExkgwYNeOXYLjauZMFanop6mfnz5xeY5nr9+nV6e3szNTWVjo6O/P70Guu6WNDOzpbh4eHs0aMHt2zZotO/cuVKDho0SBH+Z2/H9G+PWcOhJF1cXJiWlkZ3d3etF6pKDRw4kKtWreKFCxfYuL4v5VEv6VJGkQKscUGkRcoU4OvXr3Px4sWcOGoIGfWSZUsWY2BgoOYFkRYpLyh+/vzJ3r17c9f6pWxS2ZKd27XkgQMHhHRpXVJeUKSlpbFatWp8fOU4G7pasLKrC1++fEl/f38GBwfr9CsTppXt/PXmDms7lxK+q35+fjx27JhO/8yZMzllyhS+ePGCbpUqUhL+nFVtzFi9enWmpaVpXBBpk/KctG/fPnZp35qMesnKdlYkVenSv2M1Fapg/WMXLN++fSMAoXBLqQYNGnD8+PFa/4+cnBwaGBjkK97t37+/Trpu4QzL/7bU76ZFIhFXrFjBli1bCnczupSVlUVnZ2f6+vpqAAIHDBjADh06cMiQIQW+78+fP1m+fHk6OjoKd9NWVlb09PRks2bNhMRNXbpx4wbd3d2F5E4lpM3Ozo7u7u4COE+XVq9ezebNmwt300pImrOzM21tFT9+BWnw4MHs0KGDkNwpEol4+PBh+vr60tnZucDCduWdcIsWLYTkTpFIxBkzZrBt27Zs2bJlgVHiycnJtLW1pYeHh3A3LRKJ2K5dO7Zv354BAQEFHvvbt2/p4OBAW1tb4W7aysqKrq6urF+/Pvfv31+g/9ixY/Tx8aGzszMzMzMpEokYGRlJGxsbOjs788WLgpNFg4OD2bZtWwGvIBKJePfuXbq5udHGxobx8fEF+jt27Mj27dsLd9MikYgbN25k06ZNWb16dZ0XqqTiHFe5cmU2bNiQu3fvFvwjR45khw4dhJk7XYqOjmb58uXp4uIi4BWsrKxYt25dtmrVSpi506UHDx6wUqVKGlBRS0tLOjg4sEaNGkK6tC5t2bKFTZo0EcjHIpFIIEzb2dnx69evBfrHjBnD9u3bs0ePHkLbz5w5Qy8vLzo4OBQIFZXL5axfvz5bt24tkI9FIhHnzZvH1q1bCzN3upSenk4HBwd6eXnx3Llzgr979+7s0KGDkC6tS1++fKGdnR3t7e0FvIISDtmtWzdu27atQH+hfq9/vOhWyWFRHsx/UnSrnPIlFSfX8uXLFxbd/n9QymUf5UlKJBIxPT2dxsbGwsm8IE2bNo3m5uYaZNXQ0FAaGBgUeKekVOPGjVmtWjXhb5FIxC1btrBIkSIFcoaUsrGxEThFyhNXv379aGNj81tvZmYmixQpwu3bt2v4PTw86Ofn91v/mzdvaGBgIMSki0QiymQympubc8aMGb/179ixg0WKFBEKkpU0Z0NDw9/+aJHkoEGDWK5cOeFvkUjE69ev09DQUGfsvbqqV6/ORo0aafhnz57NEiVK/JYILJPJWLJkSeHCSNl3LVu2pJub22/fOy4ujoaGhho/WiRpb28v/JAWpDt37tDAwEDYgSQSiZidnc2iRYty/fr1v/UvWLCApqamwoWN8kffwMCgQMaTUm3atKGrq6vwt0gk4oEDB2hkZKRRqKtLTk5OGgXNygsma2vr33olEgmLFSsmLBsp+65WrVqsU6fOb/3fvn2jgYGBUAyuJGlbWVnpvJFV15EjR2hkZCTMZIhEIiYlJdHIyOg/IriPHTtWeE+l/+HDhzQwMOCPHz9+6/f19WXt2rWFv0UiUb5dTYX6v9dfGs2fnp6OV69eCWTNHz9+4NWrVwgPD4eenh4mTpyI+fPn4+zZs3jz5g369++PcuXKaRTU+vn5Yf369cLf/v7+2LZtG/bs2YMPHz5g1KhRyMjIwKBBg/5PD69Q/3JNnjwZ8+bN0yiq3blzJ+rVq4ft27cXSMWVSCQ4deqUEPym1Lp169C8eXONMaVNUVFR+PLlC5KTk/HxoyLkiiR27twJX19frfHf6rp37x7MzMxw+/ZtgbycmpqKO3fuoESJErh//36B/t27d6NOnTrYsWOH0M4PHz4gNTUVnz9/1iD1atOGDRvytfP06dOoWLEiTp48qUGYziuS2LFjB+rUqYOdO3cKj2/atAl+fn7YvHlzge+dlpaGW7duoWTJkrhz547w+MaNG9G0aVNs2rSpQP+nT5+QnJyMr1+/CmgEkjhy5AiqVKmC48ePF+g/f/48nJ2dcerUKQGNEBsbi7dv3yIrK+u3ROTNmzejSZMmGsf56NEjFClSBA8fPkRycnKBfmXfb9iwQXhs37598PHxwe7duwskaUulUhw6dAju7u44evSo8Pj69ev/o3ErFosRGhqK3NxcgT5MElu3bkWDBg2wffv2Av1Pnz6FoaEhHj9+jMTERMF/+fJlWFtb4/r16wX6Dxw4AG9vb+zbt09AI3z79g2/fv1CZGTkbynm2tp5+fJl2NjY4MKFCxqE6bwiiS1btqBhw4bYunWr8PjWrVvRqFEjbNmypcBzRlZWFi5duoRy5cppoBH+074PCwtDVFQUoqKiBDQC/4zlX7NmjZA4Xai/Sf+nV0O3bt3SWj8yYMAAkopZluDgYFpbW7NIkSL08/PLB3yzt7cXCrmUWrduHe3s7GhsbMxatWrx0aNH//ExFc6w/G/o8uXLrF27tnCnE5GYQSuHSrSzs2NUVBRbtmzJw4cP6/QrM0JCQ0NZwcWF7yMSWKqcA11dXZmSkkIXFxeGhobq9Pfr149r167loUOH2LJ1G36JTaWZVRm2a9eO4eHhtLW1ZWJiolav+hbZGTNmcHLgdJZ2qUb/gGkMCgrirVu3dELaSNUW2YiICLZt25bb9hykyNmdzVu24pEjR7hmzRrhO6RNyoyQlJQUurq68saDZxQ5VWGFP8F06oRpbTp48CBbtWrFyMhI2tra8tXXSFraudDOzo7x8fFC1o0uTZ8+nYGBgbx79y6r16jJzzHJLGltSy8vLyYlJQmEaV1q06YNDxw4wA0bNrB33/78/CuVpqWsOHDgQL57905Y6tEm9YyQESNGcN7iZSztUo0DhwzjihUrePz48Xxb0dWl3CIbHx/POnXq8MjpCxQ5u9Pbx4fXrl3TIExr0507d1ijRg0mJSXRwcGBD0M/0sqhstDmTp06cdeuXTr9yoyQjx8/0sHRke9+imlR3onOzs5MSUkRsm50afjw4VyyZAlPnz7Nho2b8POvVJqLyrFp06aMjo7OtxVdXXK5nL6+vrx06RLnzZvH0eMn8vOvVBY3L0V/f3+tW9HVpYwZ+PbtG7t168b1W3awdAUPdujchbt37+bWrVt11ieS5IcPH+jk5MSUlBRWrVqVl279QZFTFVaq7ManT59qEKa16dSpU2zUqJGw5f7Fp5+0sncV2qzMutGluXPncvz48QrAZpWq/BSdxFJl7enu7s7k5OR8W9HzqmvXrty+fbsCsNmlG7/EprKERen/aFauUP+ZCmnNhfrXKW9GyMIL72kfeJ72gefZYuYektozVJRSzwjJlcro5b+D9oHnaTf1DCdtVhCUT548ycaNG2v94Xr48KGQ5ZKQls0KY3fSPvA8bScd574bivqH2bNnc8KECVqPf/v27cKU+otvv2g//oDi+Mcf4Mvvv0iSXbp04Y4dO7T6x48fL2SE7L3+gvaTT9A+8DwrjN3JxPRsSiQSVqlSRSNDRam8GSETN52lfcA52geep7f/DuZKZfz16xdtbGz469evfH5lRogyy6VZ0G6h77svUORs5M26UZcyyyU1NZVZEimrjt+u6Pspp7ng0I18/ZNX6hkh4fFpdByreH/bCYd58ennfP2TV0uWLBGyXG6GfqfdxCO0DzxPh7F7+e1XstA/eevglOrTp4+wbLPi+F3aTz1N+8DzrDxuBzNycvNl3agrb0ZIv6VHhL5rNG0X5XJ5vqwbdalnhMhkcvpOVYw7u4CzHLlGsUNKGfanbdyqZ7kkZ+aw4tg/x73/CW658Dhf/+TVgQMHhIyQdxHxtB+3n/aB52kzdj8fflAsb/Xt21fnslZgYCCnT59Okjx27w3t/Y/TPvA8ncbu4q/kTOFCXj1DRV2tWrUSygFm7LxE+4CztA88z+oTdzAnV5Yv7E9dSlK0Msulbcg+oe/bz96Xr3/yKjw8XCi2zsmVsfrE7cI5Y+auy/n6J69u3bolZLn8Ss6k09hdf54zjvLE/d8vPxfqP1MhrblQ/zpt2rQJ3t7eqFWrFr6K07Dl7nfhuY+5lnj+MxGVK1dG+/btsWzZsnz+oKAgTJw4EaVLl8bld78QZ2QNANDTN8DpMH2kZueiY8eOQjaQuuRyOSZMmIBVq1bByMgIO/8IQ65JaQCAvnFRbHmmIAhPnToV586dw4cPmiyglJQUzJs3TziuDffCgWJ/QuiKmWP93QgACibS3LlzheUipd6/f48LFy5gypQpAIDNT5MAQ0V+Rq5Jaez8IwxGRkZYsWIFJkyYkG+K++TJkzA0NET79u2Rmp2LMz/1gT/zMsRG1rjyLhbW1taYMGECZs6cma/vli5dio4dO6JSpUp4FpaIz1IV5+Rxqhm+xaXDx8cHnp6eWpeGpkyZgtmzZ6NEiRI49jwSacXKKPrewBB73uZAJicGDhyI79+/aywXAYoclClTpmDNmjXQ09PDlns/IDdRvL9+UVNsfBgLAJg9eza2b9+OiIgIDf+vX7+wfv16gQi84Y8Y6BVRLCfSxAKb7oZBT08Pq1evRkBAQD6S9sOHDxEaGooRI0YAAHa9zgT+BPRlFrfGwcfhKF68OBYsWAB/f/98bd+5cycqVqyIBg0aICIxE3cTVEuZPyjCg28JcHJyQu/evbFw4cJ8/tmzZ2PEiBEoX748bn4UI1pfMe709PRxOcYYcWk5aNmyJSwtLXHw4EENL0lMmDABy5YtQ5EiRbDv4U/kmPw57o2KYNtLxTibMGECbt++LSzTK5WRkYGZM2di5cqVir67+xMoXhIAYGBSEhv+UCzNLV68GEuWLBGWi5T69u0bjhw5IlCuNz2OB4wUOTEyExG23/8BAwMDrF69WitJ++LFi0hNTUWPHj2QnSvDkS9yQE/xk5NUxBrnQqNhYWGBwMBATJs2LV/frV69Gn5+fqhWrRreRqXgTbYqnyg0qxTeRaegevXqaNy4sdaMr2nTpmHatGkoVaoUzryKQlKRP8etvgEOfZYhO1eGXr16ISkpCZcvX9bwymQyjWWfbfd+QGYiAgDoGxfHpsdx+d6vUH+9CmnNhfrLFR8fD09PTzx69Ahly5bFo4+R6Lk7VOM1WReXgL8+aiUS5yXd6jnVRrFGIzT8GQfGQS8nPR89GMhPBDbw7Ioi1doIXnlGErKP+AuvVYa0Kf15SbdGzSbByNZD8OdGvEbutVWK48gTIMY8pFuSKNZrNfT//OEAgJzQi5A9PwYA+QLEmIcIzCKmMOmzTqPt2be3Qv79oVYicV7SrV6ZSijWOlCz70/NApMitFJx85Ju9Ss3RVHfPoKXcjmy9g4H5DIhpE2dipuXdGtYZyCMKzUU/LLESOScDlYchxaStnrwGkkUaTcLhqWdhOclXx9Cendrvtcq+06dCEwSxQdshZ6hKiAs58lRyN5eEl5bvHhxIXQw71hkCWuYdFus2XdXVoJRb7SO27xjUc+uJoo1HafhzzzsD2QmaSVp5yUCG1TvgCI1OwpeeU4Gsg+M1fpaIP9YNGo8FkaOnoJfGv0RkstLtL4W0ByLJFG021IYmJVW9f2765A+PgAgD3EcyDcWaWAMkwFbNNqefW8X5F/u/kfjFlZOKN4+WLPvz80D475rJWnnPWfoV2yAovU0ayKVJGxtJO28Y9HApzeKVGkmeG0tiuFeQBMU6v9dhbTmQv2rFBISgpEjR6J06dLYsmULerSoh1KZKipuiaxfKJISjunTpyM6OhobNmxAixYtBLJq1apVcebMGYSFhWHUqFEoGvcJRbJVd4Ol077AzFgP69atQ0JCAoYPHw5/f3+IxWJ8//4dlpaWePv2Ld68eYP27dvDLO4N9HMVNGhSDpvUd7CxscGJEyeQkpIiFFKKxWLcv39fIALfvXsXnp6eKJvyHpD9mbopy0WZ5Lfw9vbGvXv3EBurmO34448/IBaLsWvXLtSuXRvJyck4fvw4bG1tYZP6Tjh2fUkGzOJC0aFDB7x58wZv376FlZUVvn//DrFYjEmTJmHkyJFISEjAunXrYGash9JpKpho0exEFIn7iFGjRiEsLAynTp2Cu7s7YmNjIRaL0axZM2zcuBHR0dGYNm0aiqSEo0TWL8FfKjMCRbPjMX/+fIjFYsybNw89e/aEWCxGdHQ07O3tcefOHXz9+hX9+/dHMfFbGOWkCP5yKW9hUdIcO3fuRGJiIrp06YIFCxZALBbj3bt3sLCwwI8fP/D8+XM0bdoUFgmvgT+pupTLYZP2Hi4uLrh48SKSkpJQsWJFgf588eJFgQh89epVuLm5oXzqO1BJNJbmwCrhNRo2bIgnT54gPDwcpUqVQmhoKMRiMZYvX442bdogOTkZe/fuRenSpVFere8NJWkoLn6D3r174/Pnz3j06BHKly+PyMhIiMViDBw4EEFBQYiLi8PixYthIkuDRYaqwNQkW4wiST8wZcoUREVFYefOnWjQoIEwbr28vHD48GGEh4dj/PjxKJLwFcWy4wW/Vfp3mOrnYuXKlYiPj8fEiRMxatQoiMVi/Pz5EyKRCC9fvsSHDx/QpUsXmMa+hoFERYO2SXmLsmXL4vDhw0hOTkbDhg2xadMmiMViPHnyBFZWVoiJicGDBw/g6+uL0slvVSRuWS7KprxFtWrVcOvWLcTHx6N8+fIC/fngwYOoXr26kDbu6OgI27T34J9EY73cLJSMC0WrVq3w6tUrfPr0CRYWFvjy5QvEYjFmzJiBAQMGIDExEZs3b0ZJ02Iok6qauTTOSUZR8TsMHToU379/x+XLl+Hi4iKQtNu3b48VK1YgJiYGwcHBKJoRA7MsVVG6eWY0iqTHICQkBL9+/cLy5cvRoUMHiMVi/Pr1CxUqVMDVq1fx/ft3DBkyBEXjPsA4J1nwl0l5j5KmxbBlyxYkJiaiX79+mDlzJsRiMT5//gwLCwt8/vwZr169QqtWrVAq/g30chXFwXp6wJhGFVCov1+FFyyF+muUmQhcC0HC3kEIf3oRnp6e8PT0xJ07d3DjxnVkXFmFWQ2tMK+5DdLOLcSN69fw9u1bVK9eHTY2Nkj/GYroHf3waV032JYyRnJyskDkvXj2JLLPzcOKTq6YWE0fBi+O4Ny5c9i1axcaNGiALl264NnJdcg4OgKPl3RCj87tcfr0aXh7e8PNzQ3rF82C+YP1WN+rOrqXDIN70USsWrUK48ePR69evTBt2jRcXT0asjPjcWtxT0wLDEBwcDDatGmDgQMHon9zb3gnXMP63jXgFX8Vg1r5ol+/fmjdujVmzZqFwICpuLW4J2RnxuPamjEIDAxEz549MXHiRKxevRpVjePRvWQY1veqDvOHG7BxyRxUrlwZ3t7eOHPmDLp1bIsnSzsj/cgIPD+1Hp06dUKDBg2we/dunDt3DvrPD2NiNX0s71gRmWfn4uLZk0hPT4eHhwfS0tJQ3swAn9d1R9T2vsiMeINy5cqhWrVqeP/+PW7euI60cwsxv4UtZjawRMaV1bh+/Tpu3boFLy8veHl5IezxBSTsHYTXK7uglrsL3r17Bw8PD5iYmOD4/l2QX16E1d2qYLhzBiyj/sChQ4ewdOlStGrVCsOGDcPdXbORc2IM7i/ughFDB2PLli2oV68eGjZsiNkThsL+w36s710DrfRfoZFDccycORP9+/fH8OHDERwcjKvLBkF+dgKuL+2H4OBgjBs3Dj179sSUKVPQqmoZNJU+wfreNeDy9SgCh/ZAy5Yt0ahRI6xZswbjx4zC3cVdITk1Fre3zcCYMWPQtm1bzJ07F7t370bZhJcYZJuENd3doX9tCQ7u2CSQvJ88eYJGtWvg5YrOSDowFJ9uH0WDBg1Qq1YtXLx4EVevXkXOrU2YUdcci1o7IP3MfFy/ehk/fvyAh4cHzMzMwMQfCN/aG9839YS5Xjrkcjk8PDwgFotx9dJ5ZJyZi6XtK2CKV1HIHuzCxYsXcfToUdStWxetW7fG64s7kHp4OJ4t7YT2LZvg+vXrqFmzJhwcHLBj3TIUvbMK63pWQx9RNCpIw7Bp0yYEBgaiS5cu8Pf3x/X1kyA9PQ53FnfHFP9JWLBgAZo1a4auXbtiVJem8Ig+jw29a6Ju+j10r+eGkSNHomPHjggICEDQjBm4vri3YtyuHI4ZM2agf//+GDFiBBYtWgRvCwk6Ff+M9b1roPTzbVgWPBleXl6oXbs2Dh48iAF9euDB4k7IPDYSjw4tQ58+feDn54eNGzfixIkTKPbhAsa6ybCyc2VIzs/DmeOHhf6JiopCJVtLvF/TFbG7ByDu/X24urqiRo0aePbsGW7euIG080swp2lZzG5ijbSLS3Hzxg08fvwYNWrUQKVKlSB+dxexuwfg3eoucLMvjfDwcHh4KGZCzx47BMmF+VjVxQ1jKktR/NMlHD9+HOvXr0fTpk3Rr18/PDiwBFnHRuHB4s4Y1K8X9u/fj9q1a8Pb2xtLgyahzMvtWN+7Bs6NrYeetez+4RPs/5/qv15B8w+osOj2XyaZlNxUVwUXnFGSbet58N69eyRVJFellDtQSEWia5tGPgIZlSFm/DnZgp3athSq+Xv37s2NGzcK/jZt2nD//v2Uy+U8f/48O/s6URKsApXdGmrF4cOHMzY2llKplNWqVePdu3dJau5AkUql3Lp1Kyc0UlFdGWLGjZ2sBCKvsohSmTui3HUTHx/PjIwMhoSEcGMnKw3/+MZlBCLvixcv6OrqKkTg3717Vwgei42N5bBhw3h7mMovCTZnZ18nIZZ/3759bNeundD29evXs0+fPiTJjx8/slPblvw5WQX4i59Wim0b1xYSgKdOnaqR2TJixAguWbJEOJa2dd2ZHlRSFT8/3pI9undjWFgY5XI5W7RoIezkksvlrFOnDi9evEi5XM4jR46wTx1bSmep2n6qn5VA5FUWUSpzZFJTU4UdKBKJhKtWreKsFqU1+m5B69JctmwZs7Oz+fPnT42dXB8/fhQyfVJSUjh16lQe7iVSgRlnmXFQvfICkffGjRsaO7lOnz7NRo0aKYqBw8PZu3cvvhprKfgzgszZro6bQI/Ou5NLuQOFVOziate0HmMDVeM2aqoF27doIuQDDRkyhCtWrBD8Xbt2FYLHrly5wo6+LsyeaS74H4204qBBgxgdHU2ZTMZatWrx6tWrJBXJy1WqVOHDhw8pk8m4a9cujmhQVqPvdnSzYlBQENPS0oR0aeVOrtjYWCFhWknyXtFOc9wG+Flzw4YNzM3NzbeT68mTJ3Rzc6NEosBCjB49mpcHqfy5wWbs7mvP06dPUy6X8/jx42zatKlQWLxjxw527tyZpAL82LVTe36ZpOr7lBkl2bZBTWG36KxZszR2ck2cOFEgsj98+JBt6tdgygzVuP0yyZLdOnfgt2/fSFJjJ5dcLmeTJk148uRJyuVynjp1ij187QVkA0PMeGmQFceMGcP4+HhKJBJWrlyZT58+ZaH++yrcJVSof1ZJP/ORUWUvFNh75TZMZeImmYd1Q1L+4UI+P6MVOwXu378vJG4qpUzdVDKIcm8u1vDKQ8xJqeL1mzdvzrcl8cyZM2zQoIFwMs050EfDL1lVQ3jtmDFjhMRNpdRZNyQpWVVdw59zQHFBoUztVIaXKaXOuqFUkq/tuTcVSaZpaWl0cHAQEjdJxQ9X1apVVdHu0a/y+eUfFaFwnz9/1ugnkvmi3WXP9+Xv+yRFAq82VlPeaHfJ+akaXun8ssJrtbGa1Fk3JJmzvZVm321qLDzXs2dPbtq0ScM/adIkzpo1S9Ufixw1P7tT44R+UqIVlMrLumGaOP+4fawI+dPGasrLupF/vZm/738+JKmd1ZQ32l16b03+vs9WfFZ79uzJl/x99epV1qpVS7gAyzk6RLPtyyoLr9XGalqxYoVGOnTOutqafb+7s9BP2lhNAwYM0EiHls3WJGHnXpkt9FNeVpNMJqOnpydv3FDsMqP4U/6+f6MguCvRCuqsJmXC9M+fPxX/3+v8FHLGKb4n2lhNr1+/pouLi5AOnXtlluZ7z7EUXlsQq6lQ/+/622jN/xYVFt3+yyTJAFdUgl6OardM25NGePJLNxFYvTC2koUct7rnwuDPBcvMXMBrvzHis3QTgdULY9s7y7C9hYrM+jMV8N5fRCcRGACSk5OFwthptaTw91LteLj0Qx8DLhnloy6rKzExEebm5jAwMMDeVrlo6agKElv5zACLnxhqUJfVlZeW+6xvDuzUhvHQK4Y4+81AJxFYnUhsVYx43k+CYn9Ce2VyoNERI3xK0tdJBFanPPuUkeNcZxUVNyUH8NhjjCypnlYiMKBJ0h5YRYalDVV9HyrWQ7PjuonAgCZJe0mDXAyqquq7Qx/0MeGWkU4icN7P9FwnCXzKqk5pwfcNsOW1odaCXkBR3KksdjXSJ14PkMBSbWh2PWuEu5H6+Qp6lVKnPDuaEfd7SWD0Z5ZYjgzwOWCM6HTdRGD1z7S5vQz726j6LjYDcN9jDBIa1GV1qX+mEz2lmKFGc74doYfu54zzUZfVpf6Zbm2ei45qNOdNrwwQ8sBQg7qsrryf6f2eOaio9vGMu2GII58MNKjL6lL/TM2MidABEpj8+bWWE2h2zAhv4vU1qMvqUv9Mq4nkuNI1V6CYp0uA6nsVBPfExESNgl6l1CnPPVxlWOenRtK2cgXGPkFcXBw8PT3x5MkTlClTBoX67+tvozX/W1Q4w/Lv04H5IxkVZMvwSSW4cYAH5XK5xjRyXimnvK9du0aS3DSiHlPn2PPzuBLcOU0xI7Jz506Nu3F1JScn087Ojj9+/GBubi639rRl9kJHPh9uynPbFYiHiRMn5gssVOrt27fClHdcTARP9LFk7mJnXu1nwtcPrgnTyCdOnNDqV5/yDv3jKu+PEDF6shlP9LFk/K8o4W78/fv3Wv2zZs2iv7+CIHtu20J+mVqOkf5m3NbLjlKplN+/fy8QtNaxY0dhyntHYDfGzbJj2MQS3DyiPknFkoMuVpOSdfP06VPK5XJu7O/O9HkOfDfGlAcWjCJJLl++nEOHDtX63jExMcKsWVZmBvf0sKZkkRMfDDHhrROKGYr+/ftz7dq1Wv0PHjygu7s7c3NzGf7lHS8OsKR0sRPP9irOb2+fUyaTsWbNmjpZTVu2bBHCy+6fP8AX46wZPdmMB3qKmJ6azMTExAJZTWPGjOH8+fNJkkeWT2LEdBuGTzLjpr6VFJ9naKjG3bi65HI5GzRowLNnFVlAm8c2ZfJsO34dX4Lb/BUzIocOHdLJalJm5Hz69IkymYybezkya4EDX4005cn1Cijg9OnTdbKavnz5IsyaJcXH8kgvK+YuduKtASZ8dlMRqNa2bVudrKYLFy6wbt26lMvl/PD8Hm8NtWLMZDOe6WfJX+HfmJ2dTVdX13x8OKUWLVrEUaMUY+TyvjX84F+WUZPNuLNnOUpycjSWTLWpV69ewvLu7uD+jJ1py5+TSnDTEG+SitA+Xawm5fKucql50xBvps2158exJbgnRMHb2rBhg7Bkmlfqy7s52dnc2bMccxY58tlIczJWkcmjvmRaqL9GhUtChfpHpU4+trKyYr169Xju3Dn6+vry8uXLOn3K1M1bt24J5GMrKys6ODjwxYsXQr2DLm3bto3dunXjpk2b2LNnT5JkqVKl6ODgwGfPnukMpVNq3LhxnDdvngb52MzMjPXr1y8wlI7UDHerV68ez58/T5FIxAULFnDMmDGcO3euzlA6UvHD5eTkxOfPnwvLYyKRSCABKxM3denr1690cHAQ/GlpabSysqK7uztv377NKlWqFJgerQx3UycfW1pa0tbWlq9fvxbqHXRpyZIlHDlypNBekixZsiQrV67M+/fv6wylU6pPnz7csGGDBvm4RIkS7NChA3fs2MEuXbro9CrD3W7evCmQj0UikUACnjBhAufMmaPTr/zhCg0NFZZ9rKyshGWQxo0b6wylIxXhZa6urnzw4AErV67MnJwcWllZ0dnZmU+fPqWTk5POC1WS3L9/P9u2bSsQtUnSwsKCdnZ2fPnypc5QOqUCAgI4Y8YMDfKxubk5vb29eeHCBfr6+hYICFSGuymJ2iKRiCtXruTgwYO5bNkynaF0pCrc7cmTJ3R2dubbt28pEok4cOBArl69mv369eO6det0+pXhbq9evRKWfaysrOjl5cUrV64I6dK6dPPmTXp6evLKlSv09vamTCajpaUl7ezsGBoaKqRL69LatWs5YMAAob2kipWkTJfWFkpXqP+eCi9YCvWPSn1tWyQS8fnz5yxXrhxbtWr1W2+fPn1oa2sr3E2LRCLu3buXFSpUEBI3dUkqldLd3Z2lS5cW1rZFIhGnTJlCZ2dnHjx4sEB/QkICra2t6eDgINxNW1lZsWnTpixTpkyBsf+k4gRXtmxZNm/eXCACZ2Vl0cHBgWXKlNEZ+6/UgQMH6OzsrAH4+/nzJ62trenh4fFb0FpgYCCdnZ25b98+wX/9+nXa2tqyb9++BXpJBUiwbNmyAvlYJBJx9erVrFixIpctW1agNzs7m46OjixTpoxwNy0SiTho0CDa2dkVGPtPKuLzS5cuTXd3d6GdVlZWrFmzJkuXLs3v378X6L99+zZtbGzYq1cv4b2TkpJYtmxZ2traFnihSirQIBUrVhTIxyKRiG/fvmWZMmV+SwQmyaFDh9Le3l6ASIpEIh47doxOTk4FXqiSiotdb29vli5dWqjjEolEDA4OZoUKFXSmJyuVkpLCcuXK0dbWVgMq2q5dO5YrV67A2H9SEZ9vbW0tXKiKRCLm5OTQxcWF1tbWOmP/lTp58iQdHR2FOi6RSMTo6GhaW1uzUqVKOmP/lZo9ezZdXFyEOi6RSMQ//viD5cuXFwpzC1KnTp1Yvnx5PnjwQPBv2bKFLi4uOtOTlZJIJHR1daW1tbVQx6UEJaqnSxfqr1Nh0m2h/jE9efIEz549w6hRo4THXF1dkZqaKmwxLEg1atRAfHy8xmt9fHwQHh6OWrVqFeg1MDCAq6sr9PX1Ub58eeHxWrVqITIyEj4+PgX6S5UqBXNzc9jZ2Qnr5Xp6eqhatSoyMzPh4uJSoN/FxQUZGRmoWrWqUCtQtGhR2NrawtzcPF8NQF7Vrl0bkZGRGu1UtqNSpUq/Ba35+PggIiJCo53VqlVDfHw8atSoUaAXANzd3ZGeno6KFSsKj/n6+iIsLAx16tQp0FukSBHY29vD1NRUo86kZs2aEIvFv33/smXLwsDAABUqVBDaqaenh0qVKoEkbG1tf3vsCQkJqF69uvCYubk5SpUqhfLly+erPckrZTt9fX2Fx5ydnZGVlQV3d/d8tR955enpidjYWNSsWVN4zNvbG1FRUb8dt3p6eqhcuTJkMhns7e2Fx5XjXv2YtMnMzAyWlpYoU6aMBlTUw8MDKSkpqFSpUoF+R0dHSCQSuLm5Ce00NjaGo6MjihUrBpFIVKDf29sb0dHR8Pb2Fh6ztraGkZERKlSokK/mKa9q166Nnz9/onbt2sJjVapUQVJSksbnqUvVqlVDcnIyqlSpIjzm6+uLnz9//rbvjIyM4OTkBGNjY5QurQrFU0+XLtS/SH/99dNfr8IZln+HZDIZfXx8NJZ9lHeKI0eOLBDSRqpAa/7+/hp3ax06dOCsWbN+u6ygZBF17txZWFawsrJipUqVOHPmTJ2sG6WUyz5VqlQR7tYsLCxoa2vLYcOG/fZubc6cORwxYoSw60Z5p+ju7v4f3a116dKFwcHBQp2PSCTi5s2b2bVrV52sG6WUrKbg4GB27NiRpKLvRo8ezcmTJ/92WUHJaho5cqSw68bKyor169fnnDlzfrus8OjRI1atWpVNmjQRdt1YWVnR0dGRAQEBHDFiRIFt3759Ozt16qSx60a5nNezZ0+drBulxo8fz0mTJgl1PiKRiOfOnWPdunULZN2QquW8OXPmCLtuRCIRFy5cyMGDB9POzo6RkZE6/UoWUWBgoLDrRiQSsWfPngwKCvrtsoKSRdS7d2+uXr2apKLvPDw8OGvWLJ2sG6WUy3nqdT7K5bwxY8b8dmZy6dKlHDhwIO3s7BgeHi7MilaqVIktW7YUWEC61LdvX86YMUOo8xGJRNyzZw/btm3LihUrCiwgbVIu54WEhLBFixbCDM/kyZM5fvx42tnZMSEhQadfuZw3btw4Tp06laSi75o3b87Zs2cLLCBdUi7ntW7dWpiZtLKyyrerqVB/nQqXhAr1j0g9IyQnV8aDj3/SukEv2rsqyKjLly/nsGHDdPoDAgIYFBSkKFB18+CCYw8oqtOF3rXrUiaTFVi4qZ4REhYWRjs3T66+/JYWNVpw0ODBlEqlrFmzppCpkVfqGSHXr19ndb+O3HjrC0u4+nL16tXCNkpdhZvqoLVVq1ax/cjpLNu4H6s16cAbN24wNDS0wB+umzdvClsvBw4axOELd7BMo760c/Pkz58/eejQoQKX1JQZITKZjJ61fDlj12Va1+9BZzcPZmVlaWTdaJMyIyQpKYl2ru5cdvY5rXw6sHnLVpTL5Wzbti0PHDig1au8UL127RrfvHlD5xr1uP76R5b0aMKpU6f+tnBTPSPk6NGjrNtpADfe+kJT55rcu3fvbws31TNCZs6cyZ5TFrNs436sWKsxnz9/XmDhJqlZMN2ufQdOWHOY1g17087Vg/Hx8dywYUOBS2ohISH09/dnTk4OXatW59zDd1m6bjd61PSmVCr9beGmMiMkOjqatpWqc9XF17T0asOevXprZN1ok3pGyP3791mlXktuuPmZ5pXrcdGiRRpZN9qkXjC9efNmtho0iWUb96N3qx68cOECP378WGDtl3rB9KjRozl4zkaWadSX9u61+OXLF42sG21S0p7lcjnr1m/IwG3naV2/Jx0quTM9PV0j60abxo4dy/nz5zMtLY32rlW5+ORjWtXuyPoNFfVm3bp101n7JZfL2bBhQ549e1ax5d+jNtdefc9S1ZpxjFpMQaH+WhVesBTqb5d6RohcLmff7Y8EsmrVGWcYl5atOKG7ugo1EupSzwhJzZLQc9ZZwd908SVKpDKNYt68Us8I+R6XzgqBpwX/mD2KLIy7d+8Kxbx5tXDhQmG3w+1PYoEqax94nltuK+oKNm7cyN69e2ttf69evYSMkC23vwhe+4CzvP1JkTkzcuRIoUZCXXkzQkbveSj4KwSe5ve4dMUJvW5dIUBOXcqMkKioKEqkMvotviT4vULOMjVLIvxwKWsk1KWeERKXls2qM84I/k6rb1Aul/PTp09CSFte7d27V8gIeROZTMcAlT/45EuSiqwbXbUg6hkhZ19FCiRq+8DzPPpUUYs0b948jawbpZQZIUeOHCFJLjz3WvA6Bpzh85+KuqFu3bqpsm7UlDcjpOeG24K/8vTT/JWSxdzcXLq7uwuzbur6+fOnUCyakZPL2nPOC/768y8wO1eaL+tGXeoZIeEJGXSdphq3g7crdr88efJEI+tGXatWreLAgYodMQ++xtNBre9XX1XMyOXNulHX4MGDuXLlSpLk3j++a4zbK28Vxztp0iStu+tkMhm9vb15/fp1kuTkg08Ev3PAaX76lUq5XE4/Pz9V1o2akpKSaGdnx7CwMEplcrZeflXwV5t5hskZknxZN+p68+aNcKGalJHDajNVbW+9/CqlMjl//PhBe3t7rbvrjh07xmbNminG969UOgeo+n7KocKQuL9LhTUshfrbtXjxYnTt2hUuLi6IScnGvS8qZkqazAD3vsTB2NgYy5cv10oknjJlCubOnQtTU1M8DUtEfI5qaH5JkuFLbDrKlSuHkSNHIiQkRMMrkUgwefJkrF69Gnp6erj0Nga5UK2bX/qYCKlMjvr166NSpUrYvn27hj86OhqbNm3C3LlzAQAnnkcKVFkAOPFCwTAZNmwY3r59iz/++EPDf//+fbx//x7Dhg0DABx/EaV6Uk9f8f8BmDt3LjZs2ICYmBgN//bt21GlShXUrVsXUpkclz4kCM/lwhCX3sZAT08Pa9asweTJkyGRSDT8s2bNwqhRo1CuXDl8iU3H1yRVFkdctj6ehSnAcnPmzBGI0UrxTyLw8uXLYWxsjLuf45AmU9XKvIjJwq/UbFSsWBGdO3fGkiVLNPzp6emYNWsWVqxYAQA4GxoNuZ7KfzpUQWNu164djI2NceLECQ3/58+fceLECYHWe+x5lECiFv4GMHnyZFy6dAlv377V8J8/fx7Z2dno1q0bAODUn+8HAHI9A5x5qfAvXboU8+fPR3JysoZ/5cqVaNGiBapWrYrEDAkehqtYPZlyQ9z8KIahoSFWrVqFCRMmQC6Xa/gDAgIQFBSEkiVL4lV4MmIyVc+FpxHvolMhEokwadIkzJgxQ8MrlUoxadIkrFmzBvr6+rj2PhbZVI3bG19SkCWRwdvbGz4+PtiwYYOGPy4uDitWrBAo0adeRoJqfX/ylWKc9e/fHxEREbhx44aG/9mzZ3j48CHGjBmj6Os84/b4n+N21qxZ2LVrF8LDwzX8+/btQ/ny5eHn5wcAOPtO9Z2X6hni/OsYgaQ9bdo0ZGdna/jnzZuHAQMGwN7eHj8TMvAuTjWuk3MN8OBbPIoVK4aFCxdi4sSJGucMkpg0aRIWL16MYsWK4cG3BCTnqtr+Lk6C8MRMODg4oF+/fgLtW6msrCxMmzYNq1atgp6eHs6HRkOqp+r7s28Lacz/RhUGxxXq/1lhYWFo1KgRQkNDYW5ujqu37mH4pURAX3UCSDu3CAZxnwV6cdGiRYXCVnUiMADIStrCrMs8wUu5DKkHJsIoNz0fvRjQJAKThNyhNkr4jRT8sswUZOwfC0NDQ61E4tTUVBgaGqJ48eKQy+XQ9+qB4tVbC/6ciDfIvbIc+vr6+ejFzEMElslkMG4ZgCK2VQV/5qsL4PNj0NPTQ2ZmJqRSqTBO81J+pVIpTPptgEEx1ThOv7kF+mGPFP2YJ8AsLxE418gUZn1WQ09fdfJOPT4ThqlR+Y4V0KRTA4C8dCWUaDdN1fdSCVL3joERpFqJxOrBZyTBSk1hWrev4JcmRiHrxHShbXmJxOrBZ3K5HAZ1B6NYZRXNOfvLQ8juboGenl4+IjHzUH5lMhmKdpwLI5GD4M94dAR4dwl6enr5gvfyjoVcOVBiwGboGxVRjdtLK2AQ8zbfsWobt1JTa5j3UF3QkXKkHZoCw+wkrURi9eAzkpDbeqJEcxXNWZ6TifQ9I2FoaKB13OYlWetV74jinh0FvyTmEyQXFiralodIrBwLSjq1TCaDcdOJKOKoKhrOenMN8icHoKenly94T+u47bUKBiWsVOP2zk7of7snHKu+vr5QFJx3LOTqF4VZv3XQM1A7Z5yeC4PEH/mI54AmnRoAZJZOMOs4S9X3MinS9o+DoSxbCBc0NzcXzhn5xq1LQ5g2UNGcy5kXxYPpfijUX69CWnOh/lZNnToVwcHBSElJQa9evTB14ljUkn+CvjwXeiCsEt+gvosVHBwccO7cOYSGhqJ06dL4+fMnoqOjYWNjg/v37+PatWtwc3ODl6MVbFJeQw+EHmXwkHxARRsRfH198fDhQxw9ehQ1atRAbGws3r59CwsLC4SFhQlE3rZVRSga+1bhz81C8xLRsLKyQteuXfHp0ycEBwejX79+EIvFOHfuHJydnZGQkIDFixfD1NQUvTzMgbhvisalxaGHM1C8eHGMHz8eMTExaN++PZYuXQqxWIwlS5agQ4cOiImJwfjx42FiYoKeFRQ+AED8N/RyN4eJiQmWLFmChIQEODs748KFCxCLxejbty9CQkLw6dMndOnSBVZWVmhuGgW93CzogSgmfofWlS0gEomwb98+/PjxAxYWFnj79i1iY2NRvXp1HDt2DA8fPoSvry9cbUujas576FEGPRC2Ka/h6WgFNzc3XLt2DXfv3oWtrS2io6MRFhYGkUiE0NBQnD17Fo6OjmhQ0QqWCW+gB0JfngsffIFdWRGaNm2Kly9fYsuWLfDz84NYLMbjx48hEokQExOjIPKWLIku7pYwiFVQefWyU9GhbCrMzMzQv39//PjxA2PGjMGECRMgFouxb98+eHp6Ij4+HsHBwShevDj6VDUBExV38kyOQm+3oihWrBimT58OsViMOnXqYPv27RCLxQgICMDgwYMRHh6OIUOGoESJEuhimwVkJQMA9MWf0NXdAmZmZli3bh1iY2NRpkwZ3Lt3D2KxGG3atMGaNWvw+vVrtGzZEuXLlEY9w2/Ql0kAECXj36JxRUuB5P3+/XtYWlri27dviImJgbOzswCOrFatGqo7iOCU9hp6kEOPclTOeofKtlbw8vLCvXv3cO7cObi5uSE2NhYfP35EqVKl8PXrVxw6dAhly5ZFSzcrmMQpxq2+NBtNiv1E6dIidOjQAe/fv8fChQvRtWtXiMViXLt2DXZ2dsIsi6mpKXq4lwTEf5K8MxLQzUEKExMTjBo1CpGRkejZsyfmzJkDsViMtWvXonnz5oiNjYW/vz9MTEzQy9UQTFGQvJkQht7uZihevDjmz5+PhIQEVK5cGSdOnIBYLMawYcMQEBCAL1++oGfPnrCwsEBrizjoSTIAAMbi9+hQ1RIWFhbYuXMnIiIiYGlpiZcvX0IsFsPX1xf79u3DkydP0KBBAziVF6GG7CP0/xy3ZZPeoLazFVxcXHDp0iU8fvwYZcuWRUREBCIiIlCmTBk8efIEFy9ehIuLC+pUEKFM0p/jllLUlH+EQ1krNGzYEE+fPsXevXtRt25diMVivHz5ElZWVoiIiMCOHTtgaWmJjlUtYRT7HgBgaWKMVT2q/8VnzUL9X+m/uRb1T6mwhuUfUPQrcnN9Zi104sYe9pw1axbt7Oy4adMmxsfH097ent9//GBGVo6w/n/t2jVWrVqVffv25doxrRgfYs/kOQ5cO7Qehw8fTldXV545c4Zv3rxhhQoVmJKWzphfsUJ9xp49e+jg4MCpU6dybe9KzJjvyMgZttw4rR/btGnD2rVr88mTJ8LadJYkV1j/T01N5aJFi2hra8vlS5dwT4/SlCx25stx1ty+bCY9PT3ZpUsXfv/+ncHBwZw8eTKzJFJh/T8+Pp5jx46ls7Mzt65dzksDLSldUoGXBlpy69rldHZ25rhx45iQkMCOHTtyz549zJJI6e/vz5CQEH779o2dO3eml5cXty+byZfjy1Cy2Jl7epTm0iVLaGtry0WLFjElJUUoosyS5LJp06Y8ceIEHz9+zNq1a7Nt27bcENiXkTNsmTHfket6V+LUqVPp4OCgUaAa8yuWKWnpQpjXmTNnWLFiRQ4fPpxrhtRh8hwHxoXYc+2YVuzTpw+rVq3Ka9eu8Y8//qCHhwczsnL47ft32tvbMz4+nhs3bqStrS1DQkK4qYcdsxY68WtAeW6ePYaNGzdmkyZN+Pr1a27ZsoU9e/ZklkTKa9eu0cfHhykpKZw5cybt7Oy4btVyHultxdwlznwwUsSdqxewSpUq7NevHyMjIwVWU5ZEKrBuYmJiOHjwYFauXJnb1yzinWFWzF1SgSf6WHLDmhV0cHDgtGnTmJKSIrCasiRSIQ/o3bt3bN68OevVq8ct8ybw05RyzF7kxK09ynPu3Lm0tbXl2rVrmZiYSEdHR3789ImZORJ6eXnx5s2bvH37NqtXr84ePXpw3YSOjJ1lz5S5Dlw7qBbHjBnDChUq8Pjx40KdT2JyCsXxCQLr5uDBg3RycuKkSZO4tp8H0+Y5MHqmHddP7sFOnTrRy8uLf/zxh1CHlSXJFdJ1U1JSuHz5csX4WLiQO3uUYc4iZ76ZWJbbFgfSx8eH7dq14+fPnwVWU5ZEysOHD7NFixZMTEzkpEmT6OjoyM1rl/Nsf8W4vTbYitvWLqWLiwtHjhxJsVjMXr16cfPmzcySSBkUFMSAgACGhYWxR48erF69OrevCOHTMdaULK7AAz1FXLl8GW1tbTl37lympqayWrVqvH//PrMkUrZr14779+/nixcvWL9+fbZo0YIbg4YwbJoNMxc4cX1PZ86YMYP29vbcsWOHsEstIjKKaRlZQq3bhQsXWLlyZQ4aNIhrhjdm4mwHJs6259qRfhw4cCArV67MixcvCrua0jKyGBEZSTs7O8bGxnLbtm20s7NjUFAQ1/d0ZuYCJ4ZNs+GmmUPZvHlzNmjQgC9evODevXvZoUMHZkkKzjoq1H9fhUW3hfrrtaKyJhl2SkchGG3y5MlC4iapKCxUplDm5uZy55qFzApSg6QFm3Hb4kBmZ2cLRZTHjh0T/OoplGlpadwW1F/jvRMDzXlw7y7K5XKhSO/t27eCf+DAgVy1ahVJRQrv3rH1NPyvxomE7aB5gXQymYxeXl5CYeGbN294foSzhv/CCNX7Xbt2TQNIpywsVAbZ3bx5k6HjNKm4+8bVF6B66m1Vvl+FChWYlZVFmUzGg3t3MTHQXMO/NWiAADRUbytJHjlyRCgszM7O5rZFARpU2qwgM+5cu5i5ublCWwUgHcmZM2dyypQpJBXAue1TOmq8d9SUkjx16hTlcnm+tpJk+/btuXfvXqFvj4yqoeG/P6osHz5UFEW/fv1aaCupQAZUqlSJz549I6kALd4caaPhPz7SnV+/fhXaqgztU37WyiJtuVzOc+fO8fukUhr+Xf6thd1H6m0lNUGbUqmUuzetZMYMNbBjsBm3zpsgHK96W0ly06ZNQpBdeno6t4YM13jvlOlm3LdjE2UymVCQrqRqk9RIXP716xd3j2+i4f8wwVII5MtbkC6Xy4XEZVIRDnd6pKuG/8pIB2HL8b179zQK0vOCNu/evcunY6w1/AdG+wi75tTbSiqK6B0dHZmWlka5XM6jhw8xLkBz3G4L7Cmcs9XbSlIjcTknJ4fblwczZ6bKmz3TjNtXhFAikeRrK0mNxOXk5GRuC+yh8d5xAeY8euQw5XK50FZtBemF+utVCD8s1F+r3CxggSYIbM4DA2x4ZagTtKa+/l+jtAJUpq4e54xwK0JfJ2hNHdLWp7IMqxpLNZ53322M2Ew9raC1vJC2+fWkGO6hKkxNyAIq71KsjWsDreUF753sIEG98qqvzb1IPXQ5aywcZ17QWnZ2NiQSiTA2Pw7OgYUax23rawPMvG8oHGdeOKM6pM26OPFmoGbR7cRbhjj4wUAnnFEdvNfYVo4j7TT7vvlxI7wS62sAKJXin+v/ylqFsdWlmFVHpuG33WKMHJmeBoBSqbzjYWPTXHStqCpc/ZasB9+DxsJxqtcpAMg3Hm51l6CKlarvz33Tx5ArRvmOUyn1+iY9ENEjJQJUEwCWPDHAimeGOuGMqampMDIyQrFixVDZQo47PTX7buAlQ1z8YSDUs5QqVUrjeXWwYxcXGTY10xy3tfYbIyxVT+M48/a9cjzMrC3F+Jqqvs/IBRy3KfpKG1Q073g42CYXTe1Vff/slx5anzTOd5xK5R0Pr/rnoJwav3DvO31MuWOU7ziVUh8P5kWIL0M0x+20u4bY+bbgcascD77l5DjTUbPv258ywqMYfZ1QUfVzxhB3GRbV1+x7BIYBxUohKCgIUqk0X0F5of4eFcIPC/WXS7KtpepOM6SUYomIZJs2bbTmdShZN6mpqWR2GnOWqO72chbYk+nxzM7OZsWKFbXmdSjDseRyORn/lZLZIpV/nS8pkwnLIdqCphYvXqwKL/tyjbJZanfKxxVQv9u3b7NGjRpatz337t2bGzZsUPxxf40mxv4PRTbM+vXrteZ1KMOx7t69q/j7+FAVxn6WGflFMXszfPhwLl26NJ9fGY4VGRlJymSK9v7pl8wRkfFfKZfL6evry0uXLuXzv3jxgq6urooMmPR45iywU/Xd0kpkTroQ2qctr0PJuiFJRr9SfN7K99+uyIb58OGDzrwOJeuGJPn6mEbfyS8qsmFOnTqlNa9DLpdrhJfJr83W7PsXirCvOXPmaM3ryMrKYoUKFQSsQu6eTmrjtiQZroit18VqUs/XoSSLOcurqvpuXnkyNYa5ubk6WU1K1o1MJiOTflIyt4zKv6omKc1lbGysTlbTmjVr2L9/f8UfP+5RFmKumpk8qID6PXr0SCdUdMiQIVy+fLnij8dbNfv+tiIbRherSZmvc/XqVcXfZ8Zr9v0HxYyGLlaTer4OSUo2NVId+2xLMvYD5XI5GzduzJMnT+bzv3v3jk5OTszMzCQzk5izyEnVd4ucyaxkIbRPG6vpxIkT9PPzU4yp2A+K91Qe+/ZmJMnvfy57Fv52/HMqXBIq1F+ugIljeDukGXd2Nmdnr3JMSkrSvKjQomnTpnH69OmUy+Xs0ao+P6/rys3tzdixgQdlMhmXLl1aYCJq69atefDgQWZmZrKdlx0T9g7k8pamHD1IMRXdt29fnYmoyouhV69e8fv37xxYpyyzj4/kzIbFuWr5UuGiQlciakREhJC6eeXKFS7oUpF7uppzXueKvHbtGhMSEgpMRL19+7aQurly2RIen1iXu7uU5IA6ZRkWFiYkbuoKllu3bh379etHkhw1sCefLmrD7Z3M2d7bjpmZmTxw4ECBiajDhg3jsmXLKJPJ2L5eVUZs6cn17czYs3UDyuVyBgYG6kxEVV4MXb58mYmJiezsVY5ph4ZyYTNTTvMfJ3w2uhJRlRdD379/Z2hoKMc2sWXuqTGcXLcY9+zaqfHZaJMywTgjI4OHDh7ghgHVuKerOSc3t+fTp081Lyq0SB1cOWv6FF6d0YQ7O5uzq1cZisVi3rp1q8BE1Dlz5nDixIkkyb4dm/P9qk7c2tGM7XwVnJx169apLiq0qEuXLtyxYwezs7PZrpYTxbv6c1XrEhzSq6PGZ6NNEomEVapU4ePHjxkZGcnePmWYdWwEQxoX56J5s7WmS6tLWRsSGxvLu3fvMridM2Wnx3JUraI8e+aMxmejTcoE49zcXG5cv5YHxtTm7q4lOaxBeX7+/Jnv37+ns7OzzmC57du3CwnTE0YO4h/zWnJHJ3N28LJhWloaT548ySZNmug8Z4wfP55z586lXC5n5yZe/LGxOze2N2NnP2/K5XLOnj1b+GzySnkxdPr0aaamprKjlw2TDwzhyralyKwU4bPZuXOnVn+h/h4VXrAU6i+V+t20SCRiSEgIJ0yYwMqVKxcIWlOGl23evFn4ARGJROzcuTNXr14tJG7q0sePH+no6MiZM2cKd9NWVlZ0c3Pj9u3bhROrLinv4tXvppUR5suXL2e3bt0KbPfcuXM5duxY4W5aJBIJhOkxY8Zw3rx5Bfq7du3KlStXCnfTIpGI27ZtY/fu3dmwYUOeOXNGp1d5F799+3YBUSASiThu3DgGBwcrikU/ftTpV97Fr1y5UribtrKyYsOGDbl582ba29srZr906MmTJ3Rzc+P48eOFu2krKys6OTlxy5YtrFu3boHR/Tt27GDnzp01yMcWFhZ0cHDgnDlzOHLkyIK6jhMmTOCMGTOEu2mRSCRcIPfq1Us1+6VFyh+ujRs3CnfTIpFImHWrVq2aMPulTcq7+K1btwqIApFIxD59+nDp0qVCUbguKe/i582bJyQ9W1lZKQpZt2+nq6src3JydPovX75MHx8f9u3bVyAfK8ftmjVrVLNfOrRs2TIOGTKENWvWFMjHpUqVoqurKydPnqya/dKhfv36cfHixQL5WCQScf/+/WzXrp2QLq1LyoTpbdu2CUnPIpGIAQEBDAgIYIUKFfj69Wud/oSEBNra2nLdunVs3bo1SUXftWzZkuvXr6etrW2BUFFlwvTUqVM5bdo0kioas8bsV6H+MRVesBTqL1WrVq0E8rFIJGJGRgYtLS0Fhk1B2rp1K01NTYUpepFIxG/fvtHU1FSj6E6Xhg4dSnNzc+EkJRKJeOHCBZqYmAhT17okl8tZs2ZNOjk5CXfTIpGIs2fPpqmpqTB1rUuZmZm0srISUl2VJ762bdvSyspKMXVdgH78+EFTU1PhwkYkElEqldLR0ZFeXl6/JQJfvnyZJiYmGkTghIQEmpmZFYg8UGr+/Pk0NTUV7qZFIhFfvnxJExMTbtu27bf+Dh060NLSUribVjJjTE1NhcJYXZLJZHRycmKNGjWEdopEIo4ZM4YlSpQo8EKVVBT8mpmZCQXJyr6vXbs2bW1tf0sEDg0NpYmJCTdv3iz4s7OzaW1tzebNm/+27fv376eJiQkfP34s+CMiImhqasqgoKDf+sePH88SJUoILC2RSMRbt27RxMREuIArSHXr1mX58uWFdopEIi5btowmJib89OlTgd6cnBxaW1uzadOmwmMikYjdu3dnqVKlhIJtXYqMjKSpqanGD75cLqerqyurVKny23F7584dmpiYCMs+IpGIKSkpLFmyJPv06fPbtq9cuZImJibCBblIJOL79+9pYmIiUOELUu/evVmyZEnhglwkEuVLly7UP6fCpNtC/WW6ePEiUlNT0bNnT+GxjAxF9kJqaupv/QkJCShWrBji41WpmElJSShSpAgSExN/609OToa+vj7S0tKEx+Li4mBqagqxWFygVy6XIyMjAzk5OcjNVRXwJSYmwtjYOF8Kal5lZmYKgVv8s1adf4ZakURmZmaBfm3tlEgkyMnJQXp6er4U1bxStlO975ThYb87dkDRziJFiiApKUl4LD4+HsWLF0dCQkIBTlU7AWi0U+n/Xd9LJBKhMFW9ncnJyTA0NNT4PLVJWzvlcjnS0tKQm5uLnJycAv3K41Tvu6ysLMhkMqSmpuZLXtbmNzExQVycKgE1OTkZxsbGGv2pS8p2KvsQAMRiMUxNTTX+T21StlMqlWqkxSYkJKBo0aK//d5kZWVpjFOlUlJShEC9gpSSkpKvnbm5ucjOzkZWVhakUmkBbu3fT2VB7n86bosWLaoxRpXnkd+NW0B1zkhPV6UYq6dLF+p/SH/hhdPfpsIZlr9HebeZkoq7lZEjR3LRokU6WTdKRUdH09bWlhcuXBC2i1pZWbFu3bo8fvw4HRwchC2q2qQkH2/cuJE9evQgqZgad3Bw4NWrV3WybpTavHkze/ToIWR9kIqpcUdHRx45coQNGjQo8G5xzJgxnD9/Phs0aMBz585RJBLx7NmzbNiwoU7WjVJyuZz169fnsWPH6OjoyM+fP1MkEnH+/PkcN24cu3fvrpV1o5Ry6+W1a9cE5pLyLnnTpk2sWrWqVtaNUkpW07FjxwTmkpWVFatWrcoLFy7oZN0opcwIUWZ9kKpliUuXLuks+lRK6VNmfZBkyZIlheU8XawbpXr27MkNGzawWrVqvHfvHkUikZCRM2nSJIEwrU3Ku+nz588LyzcikUjw6WLdKKVkNV2+fFlgLllZWdHPz48HDx7UybpRSpkRsnPnTmF2zsrKis7Ozrx69arGNnpt2rNnD9u3b6/BXLKwsKC9vT1PnTqlsY1em6ZMmcKgoCC2aNGCR48eJUmam5vTx8eHy5cvFwjT2iSXy9m8eXPu379fYC6JRCKuWLGCQ4cOFbJudElZ9KxsZ1JSEkUiEQcMGMBVq1bR09NTiBTQprCwMNrZ2fH06dMCc8nKyoqenp48c+YMbW1tdQJJSfLGjRv08vLiypUrOWjQIJKKcVsQyLRQf68Kl4QK9ZdIPSMkMimTo/Y/Y/l+y+js15vZ2dl89uwZK1eurHM9ftCgQVy9ejVJsv3AcWwUcozlei9kw26KXTp79uzRuayknocilUrp1rw3Wy69xDJdZ3FU4GyS+fNf1KWeERIfH0/bpgPYYc0titpN5rY9B7Xmv6hLPSPk8dPndOo8hTYDVtCp8xQ+efZCgOip57+o6+jRo2zRogXlcjm37j7A6iNWsHz/5bRrNpAJCQkMCwvTCWkjNTNCRgWEsG7gHpbru4RVWvSmVCrVyLrRJmVGiFwuZ/0uQ+g3/zTL9pzPDoMURbN581/UpbxQff78ObOysujk14ttVlyjdacZDF6kAOepf7Z5FRUVRTs7O8bHxytgga1GsOO6O7RqOY6nzl3Ml3WTV+oZIZeu3qBr71m06b+C9m1G8/OXr1rzX9SlnhGyYOV6eo3fyPL9ltHBrw8zMjI0sm60afTo0Vy0aBFJsscIfzYMPsxyfRbTp8NARcbI0aMa+S/qUs8IkclkrNaqD1ssvsAy3edw4ARFkXPe/Bd1qWeEJCcn096vH9uvvsnS7adyzWZFsWje/Bd1qUMrX795S4cOE9hp/V1aNB3Ou3881PhstencuXPChfz+IydYdfBi2vRfQdvmg/nr1y9GR0fTzs5OK5CU1MxD8Q9eSN+pO1m+71JWbNabEolEI+tGm3r06MEtW7aQJJv1GsEmc0+ybK8FbNFHASrNm/+iLuWF6oMHDyiRSFixaS+2Xn6F1l1mcnLIIq2eQv39KlwSKtR/XWKxGKtWrcKCBQsAAIN3PcXFN79gWK4ypF698TwiDZ6envD19c0HaQOAp0+f4vHjxxg9ejSSMiT4btcaP7KLwcjWAzEVOyEqOQt9+/ZFdHQ0rl+/ns+/d+9e2Nraws/PDx9+pSOrZm98SJChiHMtvDJXQAODg4OxZ88ehIWF5fPPnTsXAwcOhJ2dHe6GZ0HfsxteRWeguFtj3JM6Q09PD6tWrcK0adOQlZWl4SWJiRMnYvHixShatChuiItB5tIIBmVcIXNphOtiRXz8okWLMGnSpHzLC1lZWZg+fTpWrlwJPT093JM6I6mkKwzLVoJeza648zMT9vb26N+/P+bNm4e8CgsLw759+zBz5kzkyuR4VbIeImEJo/JVkFmjNz78Soefnx/KlSuHffv25fNfvXoVv379Qp8+fRCdko3YSp3xNc0QxvbV8d2uNZIzJRgzZgwePnyIZ8+e5fOvX78edevWRc2aNfEiMh0yrz54K85B0Yp18Mi4BgBg4cKFWLFihdbljRkzZmDy5MmwtLTE9XAZ9Dza4WVkGkyqtcCt9DLQ19fHmjVrMGnSpHzLC3K5HBMnTsSqVatgYGCAWylWyLatBYOyrkDV1rgeCZQsWRIzZsxAQEBAvvdOSkrCwoULhYyNR4YeiCtmB8NylUGvXngcno6qVauiRYsWWLlyZT7/mzdvcO3aNUycOBFp2bn4VLY5wiSmMLKpisQq3fAzIRNdu3ZFVlYWLly4kM9/9OhRmJqaonXr1vgal4G0ar3wMYko4uiJt1aNkJ0rQ2BgII4fP47Pnz/n8y9atAjdunVDhQoV8CA8E/DqgdCYTBSr3BB/wBUAsHz5csyaNUtjyUOpyZMnY+7cuTAxMcG1GCOwUjO8iEhFCc/2uBFfokAgqUQiwZQpUwSo6J1sO6SJqsKgrCv0a3TGzZ85KFu2rFYgKQBERUVh8+bNmDNnDkjiqakPovVLw7C8GyQ1e+N1dDrq1q0LNze3fEBSALh37x4+ffqEIUOGQJyWjUjnDviWYQxju2qIcGqHuLQcDBs2DO/fv8f9+/fz+bdt24aqVavC19cXr6PTIPHsg3dxuShaoTaeFq/122XAQv37VBgcV6j/SCNGjICzszMCAgKQnStDpeDLGs9Lnh6F9M0lreFnzAPd0xc5oWi7YA1/9tWVkEe+yQdpA/KD1gwqNkCReoM0/FmHJ4GZyfkgbUB+0JqRT28YVWkmPM/sdGQdVEDn8kLaAOSD7hVpFQiDspWE52UxH5BzaalWSBuAfNC9Yr3XQa+oKoEr99015D4+qBXSBqhqCIoVKwa94iVRrOcqjbbn3N8F2ee7WgF5zAPd07dxR9Hm/pp9f3Yu5PE/kJOTI4S05e175f9p6N4Kxt7dNfyZe4YDslyt4Wd5P0/jBsNgWKGO8Lw85ReyT0wHoBnSJnyuWVmQSCRCKFjRjnOhb2Gr+mzDnkFyc4PQTlNTUwHsCCBPmJ0eig3aDj01ErfkxWlIX53RCnbM+3nqlbJBsU6aF5Q5N9ZD9vO51nGb9/M0cKqNIo1GaPizjgWCaWKtoX15P09Dr64w9mgjPE9pDrL2jtTSzj/blgfUadxsEgxtPVT/v/gbcs7P1wokBZDv8yzaYyX0TVTBeNJPdyD5Y7dWIGm+z9PYBMX7rtdou+Thfkg/3NA5bjXOGWVcUbT1NA1/9sXFkP/6lK+dQP5zhqFbUxjX7qPhfzWrGUoWN0ah/ln9o/BDBwcH6Onp5funRJjn1e7du/O9Vv1LU6h/Xq9evcLt27cxYcIEZGdnY+WyJWBSpOoFlKNCSQPcuXMH8fHxWLx4Mbp06QKxWAyxWIw1a9agRYsWSE5OxocPH9C+sS+Qo3Y3mJuNJjUr4fXr10hKSkKvXr0we/ZswT906FAEBgYiISEBjx49QjXbkoBclfjJ9HgM6dMd379/R3JyMtzc3HDs2DHBX7t2bezfvx9xcXE4d+4crPTy3Ikm/MCcOXMQHR2NqKgoWFpa4sWLFxCLxYiIiIC1tTWePn0KsViMrVu3wjgtSsNunBqNbdu2QSwW48mTJyhTpgwiIiIgFovx/PlzWFlZISoqCtHR0Zg9ezaQEKbhF+ml4/z584iLi8O+fftQp04d4diPHj2KqlWrIjk5Gd+/f8eQPt3BdFXhKOQyVLMtiUePHiEhIQFTp07FsGHDBP+sWbPQu3dvJCUlITQ0FI1ruAJStQLVnHR08KuDjx8/IiUlBc2bN8fatWsFf+fOnbFkyRLEx8fj9u3bcC5pAFBVNMvECEwaPxbh4eFISEiAnZ0drl27BrFYjF+/fsHV1RUXLlxAXFwcjh49ihISzSJJ/cSfWLZsGX79+oWvX7+iVKlS+PjxI8RiMb5+/QoLCwt8+PABsbGxWL16NfSTwjX8JlmxOHjwIOLi4nD9+nU4OTkhJiYGYrEYt2/fRtmyZREXF4eIiAhMnToFSPip4bc3keHGjRuIj4/HmjVr0KZNG6HtW7duRf369ZGcnIzPnz+jW+smQJZaYblUgrpV7PHy5UskJSVh8ODBCAwMFPxjx47F+PHjkZiYiKdPn8KrQhlApppBYkYi+nVti69fvyI5ORk1a9bE3r17BX+jRo2wbds2xMfH49KlSyhrlKewOP4HZs6ciaioKPz69QtWVlZ49OgRxGIxoqKiUL58efzxxx+Ii4vD7t27UTQjRsNulBKJjRs3QiwWIzQ0FCKRCGFhYRCLxXjz5g0sLCzw8+dPxMTEYMGCBdBL+KHhLylLxqlTpxAXF4djx46hevXqiI2NhVgsxtmzZ+Hi4oKkpCSEhYVh9NCBAlhR0Xg5KlsXx/3795GQkIBZs2ahb9++QtsXLVqEjh07Ijk5GW/fvkXLOjUAiVpRuyQTrerWwLt375CcnIwOHTpgyZIlgr9Pnz6YPXs2EhIScP/+fVQSFdMYt04iE5gXM0Kh/rf0X79gefr0KWJiYoR/165dAwB069ZNp8fMzEzD8/PnT52vLdTfqLRYMCYUUyaOw9KlS3HhwgW4u7sjOjoaXaxiUS43GjXKFoXBk/0Y3qkJ2rVrh4kTJ6Jfv364c+cO3v9xCZlhzxE8MwhLlizBunXrUKNGDTiUE6FK3C24FM9CJTMZbL+fhXeVCqhVqxaWLl2KOXPmYMmSJUj+8hjhL2/hyJEjGDt2LKZPn44mTZqgW1NfFHuxHx4iQ9jrJaCpwXtIcyXw8PDAoUOHsHLlSkyZNAGyqFDcOL0fqampaNCgAQYMGIAhQ4YgqG9zyJ8dhrdtCVgkfcCoGooTp6enJ169eoXAwECETJ8CxIRi86qF8PPzg4GBAZo1a4Y1a9ZgTldvGH6+AR+HkjD8fB1zu9fCqlWr0Lx5cxgZGaFx48bYsnoREBOKkOlTMG3aNLx8+RI1a9bEgwcPMKpGMVgmf4S3bQnw2WEE9WuBwYMHY8CAAWjYsCGSkpJw6+xByKJCMWXSBKxatQqHDh2Cu7s7pLkS+Om/g71+AjxEhij+8gC6NfVFkyZNMGPGDIwfPx6HDh1C+MtbSP7yCMuWLcPs2bOxZMkS+Pj4oFZVF5T/ehqVzGWoUCwLVeNvw66MFapXr44NGzZg6dKlmBk0A5lhz/Hu/kXcvXsXffv2xfjx49G+fXuM7OwH/Sf7UKNsUZTLjULX0mJERkbCw8MDFy9exJIlSzB10ngwJhQn925G6dKlUbFiRXTt2hWTJ0/GnL5+wKvT8LE3h2n0cwT42eP06dOoXbs2IiMjMWzYMCyeEwTEhGL5/GD07dsXiYmJqFevHg4ePIgZLV1QLPwRatmbA2/OYW6fxggKCkLHjh1hY2MDZ2dnHNq+FowJxbTJE7BgwQLcuHED1apVw5cvX9DLNhVlsn+iRrli0Hu8D+O7N0OXLl0wevRodO3aFS9fvsSLW2eQE/4C06cFYMWKFdi6dSuqVasGUckS8Ex7AOci6XArRZT+eByNvd1Rp04dzJ8/H0FBQVi7di3iPz5AzJu72LlzJyZPnoyQkBA0aNAAbet7wiz0IKpa6sPBMBn1pS9RxNAAHh4e2LNnD1atWoWAKf7IjXyFB5eO4ufPn2jVqhWGDh2Kvn37IqB3c8gfH4CXjSlEaV8xuBLw4sUL1KhRAw8fPkRISAiCAvyBmFDs2rAc3t7eMDMzQ6tWrbBw4ULM61kX+u8vo7ZDSRh/v4tZHTywZcsWNG7cGBKJBO3bt8e6pfOAmFDMnRmAiRMn4uPHj/D29sb169cxsY4VSsa/gbedGeTPj2HOgBYYPXo0evfuDU9PT+jp6eHSsd2QR4di8sTxWLlyJU6cOAF3d3ekpCSjtcl32MpjUc3aGMbP9qN/mwZo2bIlpk6diuHDh+PcuXP4+vQa0r49wbx5c7FgwQKsXLkSXl5eqOJsC6eIS3A1laCiqQQuUVfg5mQLT09PYal67tw5SP/+FF+eXMOFCxcwbNgwTJkyBS1btsTAdg1h9HQvqlsbo121ctg3xEcDwVCo/xH91yto8mjChAl0dnbWufti165dNDc3/396j8Ki279Ab0+RcxWQvq/+IrZvWk8g8ioj8JXQOOWum4yMDM6ZM4d2dnY8M1kFGHzu70SPqm7s378/o6KiePfuXVavXp1SqZRyuVzYdSMWizlixAhWrOjCB/6VVJA2fy+ByJuamsqNGzeyd+/eJBVQOUdHR3769ImfP39mu3bt2LhuLX7wLyuAFff5NxeIvBKJhCNHjuTixYtJkl++fBF23dy/f59eXl4c3q05o6aUJEPMmDrdjItHtWOFChV44sQJymQy1q1bV8hCuXDhAuvVq0eZTMbjx4+zQoUKXDKqPVOnK+GApTisW3OByJuamqqxG2rRokUcPXo0JRIJ165dS1tbW+7zby4ACj/4l2WjOt4CkVcZnqfcDdWrVy9u2rSJKSkpDAwMpIODA6/4ewl998C/EitWVBF5z5w5w4YNG1Iul1MqlQq7biIjI9mvXz9Wc6/CF/6Ogv/05Hq0tbXlvHnzmJmZKexqIhXIADs7O0ZFRfH169ds3Lgx2zetx6/+IgFQt2ViG4HIK5VK2b17dyHzRbl7JicnRyB5T+3fmuI/IXkJgeYMGtxGIPLm5uZq7Ibau3cv27dvT5lMJpC8149vK4A1f0y2ZPfWDQUirzI8T7kbSrnrJisrSyB5n/BvKGAbXvnb07O6B3v27MmfP38K4XlK4J5y101CQgLHjRvHChUq8K6/Krr/hn91Ojo60t/fn0lJScKuJlK1e+b169cCybturZp8619egQ2YZcbD/n60tbXlihUrmJOTw0mTJjEkJIQkFcXLf+66UZK8B3RsyvDJCmxC+gwzrhzbjk5OTjx8+DBlMhn9/Px44sQJkqrdM1KpVCB5zxvejknTFMceM7Ukx/VqKaQ/K6Giygj81atXc9CgQczNzeWmTZtoZ2fHXZNaCoDCz/7WbNHQly1atOD79+/548cPjaLywYMHc+XKlUxLS+PMmTNpb2/PC5NrC3332N+FlSu5csiQIfz16xevXLlCHx8fymQyymQyent789q1awLJ261yJT72dxH85/1r087OjsHBwUxPTxd2NRXq36d/zS6hnJwcWlpaCltItWnXrl00MDCgnZ0dbWxs2L59e507LZTKzs5mSkqK8C8iIqLwguW/rWUVNcmwG/sLF539+vXj2rVrhZdqsG5IRn56pcHqYYgZP51WRI8rky+ViZukinWj3F305dpOTWZJiBl/vlBsfVRG4EdERAj+ffv2aaR9vt+lyTzJnlWKcX8Gk7169YouLi4aEfhTp04V0j5lMhk/LW2mSSSe7SrsIDl06BBbtWql0VUtW7YU0j4zMzMZNVuz7z4tay7s3pk+fToDAwMFb1ZWFl1cXIS0zzhxLHNmaRKFP+yeILw+L6spPDxcI+0z7Pn1fH335douktTKasqb9vnp1FINr2yWGaO+KI5NG6tpzZo1HDBgAEnFjpgPG/tq+JODywjfyzt37uRjNQ0ZMoQrVqwgqdjV8W1BbQ3/j3k1he3S69ev1wgak8lkrFWrlkAsTk1NZfwsTZrzh7XdhXE7fPhwLlmyRPDnZd1E//icb9x+PDpHaFteVtO7d+/o7OwsBAZ+u3M4X9//eHiOpApPoM5qOn78uEYs/Yf9gRre3FklGRut+E59+PCBjo6OGhH4s2bN4qRJk4S++LiynYb/V4iK7XT69Ol8rKZOnTpx1y7V2AifU0Vz3CxuKHxWc+fO1WA1SSQSurm5CcnWiYmJzAjWpJC/3zZceL+8rKaYmBgBGUCS4W8f5uu7zxc2CO+Vl9X04MEDjWTrz+fX5fNHvFO8viBWU6H+ef1raM1Hjx5F7969ER4ejnLlyml9zcOHD/Hlyxd4eHggJSUFy5cvx927d/Hu3TvY2Nho9cyePRtz5szJ93hh0e1/UUudgExVvcHq5wZY+NhQJ1lVvdi1dHHibR6i8PCrhjj91SAfuVgpZTBY8eLF0chWjqN5iML1DxnhU5K+BrlYXUlJSUKB3ujqUsxWIwpLZIDdVmPIqaeVCMw8pN/1frno7qpa734Tpwe/Y8Y6icB5icQ3u0tQVY0ofPSTPsbeMNJJslYW9ZYsWRL6ekT4cAmMVf89Zj8wwMZXhjqJwOpFva6l5LjXS7Pvup8zwu0Ifa1FsYAmobpTBRm2NNfcqVN1lzHEWXpai2IBTSpuUG0pJqgRheOzALc/SdjaiMB5i3r3t85FcwdV39+N1EPXs6q+z0sEzjseX/TLgY1a8zaHGmDWH7rHrfp4NDMmvg7VHLfjbxri8EcDnURg9fHoU1aOc500+77ZMSOExukL4WzqRbGAJpF4cFUZFjdQ9b2cgP1WBQlbWRRb0Lhd3jAX/auo+u5Lkh7qHlJRxPMWxeYdjxc7S+BVRjVuz37Vx9CrRjpJ1nnH449hOTBRKwtZ/NgAK58bIjc3F+np6fnGrfp4tDcjnvbV7Pv+Fw1xOcxAayE9oFnU28pRhj2t8gTYTQgFSjlg+PDhqFixIqZMmYJC/fv0r6E1N2/e/Leci7ySSCR0dnYWApK0qXCG5a9X0pWlwt1mwgwRmRQu3NFqi8BXsm4ePnxIkoza2kM1QxHiQuZk5LujVZfGXZBUwoj51QR/5GoFWTXvHa26Hj9+rAovS4+jOKis4BefCCCpuKMV6K15pGTdkKQ8+hVTZyiWhHJmlmDmc8XsSUhIiHBHm1cTJ07k7NmKPJjMZ4eEqfHUGSUp/5NkrX5Hqy65XM4mTZoI0eXi41NVxx5UjkyPo0Qi0clqUrJulOFlEatUM0SR86uTUgljYmJoY2OjNQJfg1ibk8HoENXUetTWniTz39GqS8m6URKJE2aI/pydKcGkq4qZta1bt7J79+5a+27ZsmUCWiD3211mBJmTIWbMnFGCOR8Usydjx47VyWpSn/FLubWe0j+X0xJnWJIJ34RlR22sJuWM361bt0iSMbsGCW2PmeVIZqdqLDvmVWJioiqETCZlxKJaqjv8ZfVJuZxfvnzRyWpSzvhlZWWRmYn8NdNWNUNyUBFEeOHCBZ2spoMHDwozfvLY90yeUerPpdASTHuwi6SCVK6L1aQ+45f1+gyz/xy3aTNKUvYnybp3797cuHGjVr/6jF/8ORVJOy7ImkyNEZYdtbGa8s74Ra5XzRBFznEjc7OF0D5tUFGNpencbIVHOcNySpHTknf2tlD/Pv0rloTCwsKor6/P06dP/x97u3btyp49e/7Hry+sYfnvq2/fvjy0Ooi9PC3YqJYH79y5IyRu6tLVq1dZq1YtSiQS1qhRgy/PbGT3GqXo4qg44agndWrTihUrOGTIECYkJNDJ3pZxDw+znXtJVqyoOKE3b96cR44c0ekfMGAAV69ezZcvX7JmlQqUvD3HBhVKsE2bNkLNwJs3b7R6ZTKZkLp54MAB9uvYlPx4ke7linH69OkaNQPapP7DNW3aNK6YPpJ9vCzYt4MfDx06JNQM6Ap2e/36tfDD1bp1a17euYi9PC1Ys0oFhoaGctWqVRw4cKDOth8+fJgtWrRgVlYWK1Z04ZdrO9mlekk62SuWcAYNGsSVK1fq9M+YMYNTp05lREQEXRxtmfriBFtUNmPNmoolGW9vb53BbiTZrl077tu3j7dv32Zjn2qUvr9AHwdT9u/fn8nJybSzs2NYWJhWb05ODl1dXfnixQuuW7eOEwd1IT9cYCXroly2bBnfvn2r80KV1PzhGjZsGHctnsreXhZs1cCLly9f5tGjR9msWTOddXR3795ltWrVmJuby9q1a/PRsTXsXqMUKznb8fv37wwODubkyZN1tl1ZU5WSkkJHBztG3z/ADu4l6eykWMLp0KEDd+/erdOvTIp+//493Ss6MOv1GTauaMbGjRszOzs7X7q0uuRyuZAwffLkSXZpUZ/yDxdYw6Y4J06cKKRL62I1qddUzZkzh/P9B7OPlwWH9WjDnTt38o8//igw2E09mK5Lly48vXkue3la0Ld6ZT5+/FhIl9alM2fOsEGDBszJyaGbmxvfX9zKbjVK0dnehrGxsRw9enSBJQXKhOlfv37R2d6GSU+PsX01S6Fv6tevz3Pnzun0F+qf17/igiUkJIRlypT5LZQsr6RSKV1dXXXeyWpT4QXLf1fqd9MikYh37tyhh4cH7e3t+eXLlwK97du35+DBgwXysUgk4vr169m+ffvfRucrUzd79OihAQgcPnw4Bw0axPr16xcYnR8dHU0bGxvWqVNHuFC2srKir68v+/fvLyRu6tL9+/dZtWpVDfKxpaUl7e3t2aZNGyFxU5c2b97Mtm3b0sHBgampqRSJRPz48SOdnJx+G51PKhJVBwwYINxNi0Qinjp1ivXq1aONjQ2jo6N1epWJqgMHDuSIESNIKvpuzpw57NGjR4EJxKQqUbV9+/YC+VgkErFr164cPHjwb8GWyuh/Dw8P4W7aysqKVapUYe/evQuMzicViapKkKHybloZ/d+gQQOdCcRKLViwgN27dxfupkUiER8/fszKlSvTycnpt3VxPXr04ODBg4UZYZFIxB07drBVq1YFJhCTqkTVPn36CLVQIpGIEyZMYP/+/QtMICZJsVhMGxsbNmrUiIcOHSKp6LvGjRtz4MCBOhOIlXr27BldXV3p7Ows1EIpSdodO3bUmUCs1J49e9i8eXPa2dkxMTGRIpFImHWrUaMGb9y4UaB/8uTJ7Nevn1ALJRKJePnyZXp7e9PW1lZnAjFJIWF60KBB7N+/P0lF3y1dupRdunQpMIGYpFAM3KVLFy5fvlzwk5rp0oX69+ofv2CRyWS0s7PTKC5Uql+/fgL1kyTnzJnDK1eu8Nu3b3z+/Dl79uzJokWLFsjmyKvCC5b/ntQr8EnVl79SpUr/EdX2xYsXNDAwEH4glGTUEiVK/PZHiyQ3bNjAokWLahCBIyMjaWho+FsaM6nYNWNjY6NBBD5//jwNDQ0LZOUoVaVKFfr5+Ql/i0QiTp8+nebm5hrFotoklUppZmam8aNFkk2aNGHVqlV/+95RUVE0NDQUCjuVVNzy5cuzb9++v/VfvnyZhoaGwg++SCRieno6ixQpwk2bNv3WHxwczBIlSmgQgd+8eUMDAwONQl1datasGd3c3IS/lT/6RYoU0bocoi65XE5bW1uNmVWRSMRBgwaxTJkyv/3RyczMZNGiRYWlIWXfV69enfXr1//tsb9//54GBgZ8+vSp4JfJZCxVqhT9/f1/69+zZw+NjY2Fc5BIJKJYLKaRkdF/RGMeOnQoS5curTFub968SUNDw99SxEnS09OTderUEf4WiURcsGABTUxMfrscIpPJaGFhIRTVqlPIXVxcfvve8fHxNDIyEnhMSr+jo+NvGVGkAr1gaGgo7JwTiUTMyspi8eLFuXTp0t/6lyxZQhMTE6GQXiQSCRcy/ye/I4X6Z/SPR/Nfv34d4eHhGDx4cL7nwsPDEROjCjBKSkrCsGHDULlyZbRu3Rqpqal48OAB3Nzc/opDK9RvtG/fPpQrVw5NmzYVHvv+/TtSU1Px4cOH39JVDxw4gFq1auHgwYPCYzdu3ICNjQ0uXbpUIJGYJE6fPo1KlSrh3LlzwuOHDh2Cl5cXDh8+XOB7Z2Vl4fHjx9DT08ObN2+Ex48cOQJPT8/f+sPCwpCcnIyPHz8KZFqSuHTpEsqUKYPbt28X6L916xbKli2Ly5cvC+1MTEzE58+fkZSUhPDw8AL92o7z9evXMDQ0xMOHDzVIvdp0+PDhfP6zZ8+icuXKOHnyZIFR5HK5HJcuXUL58uVx8+ZN4fGDBw+iVq1aOHDgQIHvrQwFTElJ0UAjnDx5ElWqVMHp06cL9L99+xZ6enp49OiRQIMmifv376NYsWJ48eJFgf5z587B1dUVp06dEtoZGRkJsViM79+/a1CatUnZTvVxe//+fVhZWeH69eu/JRIr80ZOnjwpPHb06FHUqFEDR48eLdArkUhw9+5dFC9eXAONcPjwYXh5eeHQoUMF+qOjoxETE4MfP34IRGSSOHv2LBwcHIQsLF168OABLC0tcePGDaGdqampCA0NRVZWFr58+VKg/9ixY/na+fHjR+Tm5uLly5dakQHqOnjwYL52Xr58GU5OTjh37lyB45Ykzp07B0dHR1y5ckV4fPny5WjTpk3h78j/1/QXXjj9bSqcYfnvKDU1VWPZRyaTU1TOlp07d+aOHTsYHBxc4N2mMiMkOjqa9vb2/PTlK63KlKObmxsfP37Mjh07FriWr8wIeffuHZ2cnJiQnEpLkTVtbW0ZERHBypUrC3fA2qRczz558iQbN27M1CwJS5YqxSpVqvDnz586i06V6tatG7du3crZs2dzwoQJTMmS0NTUlF27dhVI0bqWOHNzc+nu7s4HDx6wS5cu3L59B0Xl7Dh+/HjOnTuXW7ZsKXAtXywWC+TZKlWq8OGjR7Qqq1gmOH36tAZhWpuePHnCypUrMyIigjY2NgyPjKaVdVk6Ojry/fv3rF+/Ps+ePavTr8wIefToEatUqcLk9ExaWIpob2/PmJgYgTCtS8qMkO3bt7Nr165MzZLQzMycderUEZaL0tLStHrlcrlATB4/fjznzJnDlCwJTUxMOHz4cJ4/f15n0SmpmF1RLvs0atSIJ06eoqicLfv06cP169dz4cKFHDVqlM5jV2aEREdH08nJiW/evadVmXJCBoky60aXrl69Sh8fH6G4VpyQRMvSZYTlEGXWjS4picmXLl1i7dq1mZYlYSkLS1asWFGoz4mKitLp79+/P9esWcMlS5Zw+PDhTMmSsEQJRe3Ws2fPhKwbbVKv3erbty/XrVtPUTnF7Pj06dOFrBtdUtZu/fjxgzVq1OCt27cpKmvLVq1a8dChQ7+tWwsNDWWFChUYFRVFW1tbfg/7SSvrcnRxceHLly9/W7d2+PBhtmzZki9evGDFihWZlJpBCyuRsLxVqH+//vElob9bhRcs/x2p7xh4/D2B1edcoX3geVYYupoZ2RJht4SyviOv1HcMTFh1kA5TT9M+8Dx9xynW0L9+/SrUd+RVdnY2XV1dhaWHZpPX0T7wHO2mnGb/eTtIkhcvXmSdOnW0/nCpZ4RIcqV0G7aK9oHnaTvxKFccvEyy4N0S6hkhkXFJtB+2kfaB51l+5E7efP6BZMG7JTZs2CAs29x49p72Y/fSPvA87YdtZFR8MqVSKatXr651twRJjhgxQpj+Xn7gIh0mn6B94Hm6DV9FSa40X9aNuvJmhPSdu50OAWdpF3CWzaasJ1nwbom8GSG1x66mfeB52k0+yQmrD5Ik9+/fz3bt2mk9dmWdTkZGBtMyc1hhqMJvM+4g9176gyQZEBDAoKAgrX71jJD3YTG0G7mV9oHnWW7YZr78EkG5XK6RdZNX6hkhR64/pv2EQ7QPPE+noWuZnJ6VL+smr9QzQqZtPEaHqadoH3ieXqNXUy6XMzw8XOcPoDLMTpkR0nbaRsW4nXqG3WYpap7yZt2oS313nFQmp8eIP8ftpGOct1Oxq0k96yavHj9+zCpVqlAikVCclEaHoesU43b0Hl54EEpSM+smr3bu3MkuXbqQJB+8+Uq70bsU43b4Zn6PjqdMJqOPj4/O5diJEydyzhxFVs3GEzfo4H+M9oHn6TpsNbMkuQXuDJTL5WzcuLGwO27Y4t10CDhD+8DzbDhRsbRX0M5A5e44ZZhdgwlrFeN2yikOX7JH6/EW6t+nf3xJqFD/e/r+/TsOHjyIoKAgAMDU46FIylRkSuRaVsDeR+EwMTHBvHnzMHny5Hz+S5cuITExEb169UJKVi4uxJmD+orMh+jiFXDrkxjOzs7o0aMHFi1alM+/du1aNGzYENWrV8eL8CR8NnQEoAc9A0Pcy7BGVHIWWrVqBXNzc61LO9OmTUNAQAAsLCxw/EUUMixcAAD6RYpj7xdFdsTEiRNx48YNhIaGanhlMhkmTJiA1atXw8DAAFv/iAQs7AAAhualsfmpYnloyZIlWLx4MRITEzX8iYmJwnMAsPlZMmDyZ96HhR22/hEJAwMDrF69GhMnToRMJtPwv3r1Crdu3cL48eMBAHu/GICGiryNjFIuOPFCwTeaOnUqpk+fnq/thw4dQqlSpdCyZUtEJWfhj8wyoJ4+9PT08dnAAS/Dk1CjRg3Ur18fa9euzedfuHAhevXqBScnJ9z6KEaMSQUAgJ6hMS6IzZGanYvevXsjLi5OY9pdKX9/f8yfPx/FixfH3sfhyLVU+A2Km2HHGwX/JigoCPv378ePH5o8mpycHAQEBAhE4M0PY6BnrshsMrKwweaHsdDT08PKlSsxY8YMYblIqYiICGzbtk2gBe94nQ0UVQSxyCydsOthOIoWLYrFixdrJRLfvn0b379/x8CBA5GdK8OJKBNQXxEmEleiAq68+wVbW1sMHjwYc+fOzdf2zZs3o0aNGvDx8cH76FS8oR0APejpG+BpTnl8j0tH48aNYW9vj927d+fzz5w5E+PGjYO1tTXOhkYhpeSf49a4GA79MIZMTowaNQpPnz7FkydPNLxyuRzjx4/HihUrYGRkhO0PIkBLRwCAYQlLbH2RBgBYsGABVq9eLSwXKZWamoo5c+Zg2bJlAIBNTxKgV0KkeLKUDbY8iBJI2v7+/vmWxT58+ICzZ88K+Sa7PshBI0VGT7ZFBRx+EgFzc3PMnDkTU6dOzdd25TJhx44dEZeWgxspIlBPEUAUVsQJj74nwM3NDa1bt8by5cvz+ZctW4Z27dqhcuXKePAtHj+LOgEA9AyMcD3ZCvHpOfk8hfrfViGtuVAAgM6dO6Ndu3YYNGgQSMJt5gVkydRCokIvQPr8uEBRLV68uBBixTxEYBQvheI9V2r8/9m3t0D+/ZFWKm7e8DD98u4o2kKTKJx1KhhMisxHXgbyE4ENqrZCkVoqojDlMmTtGQ5Qno+8DCBfMJVRg2EwUiMKyxIikHNmFoD85GUgPym3SMe5MFAjCud+fYDcu9sAaJKXlX2nTgQm9FB84HboqYWj5Tw5Atnby/n7GfmJwNqIwtlXVkAe9VYrSTsvKVffqTaK5iUKH/YHM5O0EonzEp4NPbvBuFprwSvPTkf2nyTsvORlID8ROC9RWBr9AZLLS7X2M5Cf8JyXKCx5dxXSx4e0krSV/akkPNPYBCZ5iMJKEnbefgbyE4H1yriiWF6i8Ll5kMd910okzjduK/uhiG9fDX/mnhGATKKVSJyX8GxYdyCMXRsKXlnKL+T8ScLWFhqYtz+N2wbDsLST8Hzuj2fIvbVBaz8r+1NJeCaJ4gO2Qs9QRT+WvDgF6auz+cjL6n0vhNmVKI3i3ZZo9t31dZCHv9B6zsjbn3p2NVGs6TgN/60pjeBopRnUV6h/n/5RWnOh/vd08+ZNREREYMCAAfjw4QNatWoFg7CHwvN6MgmMol9h3LhxCA8Px4MHD1C+fHlERUVBLBZj5syZ6NevH5KSknD06FGULVkMpqlhgt9Ikoqiid+waNEixMbGYseOHWjYsKFAVu3QoQOWL1+OuLg4rFmzBsUzolEkWzWLUTwjGhaGEuzZsweJiYmYMGECxowZIxCBXVxccPnyZURFRSEgIABGMW+gL1UVqJaIe4tKrhVx5coVJCcno0GDBti8eTPEYjG+fPkCCwsLfPz4EZ8/f0bfvn1RJOoFIFfdTZr8eokmTZrg2bNniI+PR7ly5XD79m2IxWLcunUL5cqVQ3x8PJ49e4YmTZrANPaVqnPlUhSJeoF+/frh8+fP+PTpEywtLfH161eIxWJs2rQJjRo1QnJyMi5fvoxKrhVRIk5VMKwvzYJRzFsEBgYiKioKly5dgqurK379+gWxWIxRo0Zh4sSJSExMxJ49e2BhKEHxjGjBXyQ7EcUzYrB27VrExcVh6dKl6Nixo9D3DRo0wM6dOxEbG4uFCxeiaOI3GEnSVG1P+YGypYrj2LFjSEpKQt++fREcHKxBBH706BF+/vyJsWPHwij6JfRkqsRSM3EoatasiTt37iAlJQXu7u44evSoQAi2sLBAeHg43r17h06dOqFYzAsVVZdyFIt5gXbt2uH169cCSfv58+cQi8U4ffo0KlasiKSkJNy/fx8+Pj4oIVbNnunJcmEc9RIjRoxAWFgYnj17Bmtra4SHh0MsFmPBggXo2rUrkpMV1GH7MpYwTfoq+A0l6TCO+4S5c+fi169fOHjwIHx8fIS+69mzJ+bNm4f4+Hhs3LgRJXISUDRLVdxbLDMWZrJUbN++HfHx8Zg2bRqGDBkCsViM2NhYuLu749SpU4iOjsbMmTNhFPseBrmqGaQS8e9RwdEOFy5cQHJyMlq2bIlVq1YJhcSWlpZ48+YNvn79ikGDBsE48rnGuC0RG4r69evj8ePHSExMhL29Pa5cuQKxWIwHDx7A2toasbGxePnyJVq0aAGTXy/Vxq0MRaKeo0ePHvj48SO+ffuGUqVK4cOHDxCLxdi9ezd8fHyQkpKCGzduwMPDAyXEr1V9L82BYXQo/P39ERERgZs3b8LR0VEgafv7+2P48OFITEzEwYMHUbq4PkzSIgS/cU4yiqaGY/ny5RCLxVi3bh1atmwp9H2LFi2wYcMGiMViLFu2DMVSw2GckyL461Wwgr2FZhp2of73VXjB8v/PencaspuLsHveKMybNw+TJk1Cu3btMGTIEPhZpaOJ8VfMaFkRBteX48CGpUhISIC7uzt+/PgBXx9v3F01GBmX5uDUtqUYNWoUunXrhilTpmD9unUQfTqFXk5STGpQDpLz83Hm2EFcuXIFtWrVgpOTExJjwvBl7wREHpmKD8/vo3bt2qhfvz4OHDiAk0cPIffyEozxscLAKsYo9ngH9uzaifnz56NNmzbo1asXrh7dgeRzwXi6YRjsypdBdnY2PDw88PnzZxzfsxmyiwsQ2MwJbUr9Qk35JwQGBqJ3794YPnw4goODsW/pZOTeWIgLi/qjX7++uHLlCqpVqwZzc3OsDBwBq5e7MbNNJdRIuY8hDSqgSZMmqF+/PpYsWYLZs2dj/+xBkN9ajP1zBmH27NlYvHgx6tevDz8/Pwyq6wTP1AeY2aYSLF/swurpo1CiRAlUq1YNV69eRZ8+vXFhUX/kXl+AfUunICgoCMOHD0efPn0wbdo0VJd+QFsLMQKaOkF+aSFO7tuKT58+oVq1asjJyUH5MiI82zgcSWdn4vrxXejRowdat26NBQsWYM+unSjycBsGVTHGGB9L5F5egpNHD2Hfvn2oX78+6tati/fP7iLqyFR83jMeybHhcHBwQK1atXDt2jWcOXYQkgvzMalBefRyzIX1lzNYu2YNJk2ahO7du2P06NE4tW0pMi7PwZ2Vg1Cndi18/foV7u7uSEpKwv71S2B4cwWCWlVEE6MvaGadhcGDB6Ndu3bw9/fHvHnzsHvuSMhvLcLJ+QMwYcIE7N+/H56enqhQoQKCB7aDw7eTCG7rhoqRFxHYownc3d1Rq1YtbNu2DQEBATg2dwDktxZjz5xhmD9/PqZNm4aWLVuiV69eaOdogPp4h6DWrihydw12rZiD7OxsuLu7482bN2jq1xg3lw9C1pW5OLp+LiZOnIjevXtj9OjRWLZsGeyjrqObbSYmN7KF5Pw8nD68F/fu3YOnpydEIhFkWSl4v3Msfh2fhud3LsLPzw+NGzfG1q1bcezwAcivr8BIr5IYWq04DO6ux6ED+7By5Uq0aNECHTt2xN3zhxF/agZebRkJc5MiMDIyQvXq1fHy5UucOrATuRfmI8DPAR1KJ6FS6lOEhIRg0KBBGDhwIAIDA3Fw1QzkXJuHK0sHokuXzrh//z48PDxgZGSETXOnwOzRFsxsXQk+2c/Qq4YIbdu2RePGjTFnzhzMmzcPe+cMAW8vxqG5AzFz5kysXr0aderUga+vL8a0rA73uJsIblMZZd8dxJIJ/VCmTBlUr14dp0+fxvDhw3F24QBIby7CnoXjMXv2bIwZMwZdunTBuHHjUKdoFFqYRmB6iwrA1cU4un0dIiIi4OHhgfj4eLi5uuDB2iFIvRCCi/vXY+DAgejQoQNmzpyJ7du2osTL/ejnqodxdUpDcmEhTh89iJMnT8LX1xceHh74+fEVwg7648eBSYj48gZVq1ZF7dq1cfr0aZw+ehCSCwswoa41lnb1wM6B3tDXL6Qx/39O//0Smr9fhUW3/xe6o4Lc5QabsW/tspw7dy4zMzP5/v17oYiSpLDrRi6X8927d2zevDmvDS8v+NOCSrJhVRuByHvy5EkNqNucOXM4YcIEkuTt27fpXbMav0wuo4owDxDR091VICDPnj2bEydOFA61S5cu3LFjB+VyOQ8ePEjfKvZMnG6hIruOLcf69evxxYsXJCnsaiJVkLZHjx4xJyeHy5cvZ/uaZZkTbC74d/cqLxB5la9//PgxSfLXr18CpC0pKYmTJk3ilKaq2H+GmHFK07ICkVf99SSFXTe5ubn8+fMne/Towd29VX2XE2zO9jXLcvny5czJyeHDhw81IvCVu25IReFs/fr1+HhsOcGfON2CtavY89ChQ5TL5dy2bZvwepLCrhtSEfHu5e7KyACRCjA32ZreNavxzp07wuvnzp1LUlUUeerUKUqlUm7bto0Nq9owLaik4L86rLxA5JXL5cKuJlJVFPnhwweB5N3Pt6xAomaIGVd1Ks/BgwczJiZGKOr+8EFR5Pzt2zcBGaAkeS9sp2q7dJYZh9QrKxB5v379qhGBf+nSJfr6+lIul/PTp09s27Ytzw1WwREzZ5akn0d5btq0ibm5ufmKupcuXcrhw4eTVIQK+nh78t0k1WcfE2hF76ouPHv2LOVyOZcsWSKE9pGKtOj169dTLpfz+PHjrFXFiXHTLAX/ywnl6FvbR8AtKHc1kYpMnxo1avD27duUSCRcs2YNW1Uvx+yZqnF7pL8Nu3Tpwu/fvwtF3crPMSEhQSjSVpK8xzYqqwF3DGpRluPGjWNCQoLG60ny5cuXrFixIrOzswWS9+ZuqnGbG2zGrt5luWjRImZlZfHly5d0dXUVslAOHDjANm3akKRA8r43WuVPmVGKdavYcu/evZTJZNy/f7/wepIMDAwU8rquXr1Kr2pu/DHVWgWVnGpNr2puQl6UcldTof73VLhLqFC/19qaGj+66fsUO1zkcjlbtGihsSMjL+tGLsnMR0bNuqGg4GrbkZGRkaGBppeGP8nnz/2oYMZo25Ghwbohmf1wWz6/PFURCqdtR4YG64Zk+vFxGt6c+bbCa7XtyFBn3ZBk+obGmn23sYnw3NChQ/PtyOjfvz/XrVsn/C2Zr0kUzjih2OGi3JGhPAmT+Vk38pTofG3PfqS4ONO2I0ODdUNS8uFSPr80QhH7rm1HRmhoqPDDRZKZ1xdr9nuIOeUSRRLpiRMn2LRpU41dXIcOHWLr1q1Vfbevj+a4WVpFeE4bqykv3TpzRZ5xu0t1caaN1aRBt5bJKJutScLOvKTgPylZTerb5vPuXJPFvMnXd5LXp0iq6MPq2+Y1WDckc54dyD9uE76T1M5qunPnDqtXry4EFmacCdD8zswtLbxWG6tp/fr1GoGD6VtaaY67taqguXHjxnH+/PkafvWdaySZvchJs+8PK74TcrmcDRs21Ng2L5fLWadOHeEmRJ6ZmP+ccVfxndDGalJGLCh3ruV+vZP/nPFNsVX8y5cvOncfFurfr38NrfnvUmHR7f+FdrUBft4X/lz3wgDzHimIwMoiSnVp0m6Jj4MlsCiqen7UNUOc+GKgkwisTru1MSWe9JXAUG1BstERI7xP0NdJBFan3frZyXCorWqtPiMXcNtljCypHhITEzWKUpVKSUlBkSJFULRoUYyrIUWwr2qnzvsEPTQ6opsIDGjSbjc1zUWXiqoAvOOf9TH6upFOInBe2u3tHhK4Waq+dvMeGmDdS8N8RZRKqdNuixkS7wdJNKi4Pc8b4ma4gdaiVECzqLiKpRy3eqiIwlI54L3fGFHp2knWgCZJu2tFGTY2VfV9QhZQeZcxAD2hKFWdZA1AKNI2NjbGLF8pxtZQ9f0fUXrodMZYJxFY+ZkoCy4PtZHAz17Vd9teGyDovm4icF4icWj/HJRV1Utj0i1DHPigIAJLpdJ841b9+1C6GPGyvwRGas1redwIL8T6SEtLg6GhYb5xm5mZCblcDlNTU9QtJ8epjqq+z5YCVXcbI1Wip5VkDWiStIe6S7GwvqrvvifrofbB349b5fdhZaNc9HVTjdvz3/Qx+IqCIq4sZFdX3v/3chcJalqr+n7ZUwMse2qoQRtXl/r3wVCf+DRYghKqmlwMumyIC98NtBayA5pFxc4l5fijVy5Uqzx6wNhngFUFdOzYEZ06dcKAAQNQqP89/WtozX+XCmdY/s/15eFFfplYirJZZrw3zJLpCTEChE4XaG3UqFFcuHAhSfLO7rlMnG7B3OASPD/ckXKZTAh/iouLy+dVsm7Onz9PkjwT0pnZsyyYFVSCp6YqZiju3bvHatWqaY3AV7JulOFlZ0ZXpTSkFBMDSvDqWsUMxaZNm3RCMz99+iSEl0kyU3l9aGnKQ0ry+wRThl7Zl699eXXu3DmBZRT7NZQvRyv67uXoUhR/e52vfXm1YMECgWUUemUfI6aUojTYjNeHWlOSmSa0TxerqUePHgLL6Mqa8UybacGcmSV4ZnTVfO3LK2Wo3f3790mSJ6c0Zm5IKaZPL8EzIV3ytS+vlKF20dHRlMukPD/ckbKQkvw1pQTv7pmfr3159ezZM4FllJ4Qw3vDLCkPMef7Mab8+uhSvvbl1e7du9mhQweSZNjL2/wwviRls8z4cIQFU2J/Cu37448/tPr9/f0ZHBxMknxweAXjplkwN9iMF4fZUi7N1WhfXilZN0qW0bn5fZgVbMHsoBI8NUkxQ/H06VOdrCZlRLwSVXFqXE1KQ0oxObAELy4blq99efXjxw8BuinNyeKVoWUpDynJ8EmmfH5mS7725dX169cFllFCxCc+HVmK8hBzvhhhwugPT/K1L69WrlwpsIze3z7OH/6KcXtrqIjZaYn52pdXAwcOFFhGNzZPY0qQBSUzS/DsyIr52pdXMpmMXl5eAnTz1PRWlMwqxcwgM/KRou3Xrl37LaupUP9uFS4JFapAyeVyIUHSurSVkFKqTNzUJSXq/du3bwL5uLTIkn5+fjxx4gQHDBjANWvW6PQ/f/6clSpV4pcvXxQnqcREiqws6ezszDdv3giJm7qkTN0UyMfSXFpYWNDe3p5hYWG/Ba1NmTKFQUFBXL16tYJ8LJPS3NycPj4+fPnyZYGgNfU+Gzx4MFeuXEnr0lZcsWIFhw4dKiRu6kpjVdKiQ0NDWatWLV6/fp3Wpa04YMAArl27ljNmzGBAQIDOY1fSosPCwoRkUZGVpdBnbdu25b59+3T6r1+/Ti8vL75+/Vqx7JORTktLC9rZ2fHr168CLVmXlH12/PhxBflYmstSpUrRxcWF375901j60CZln82aNUtBPpZJWaJECbZs2ZJ3797VWPrIK3W+lTIt2bq0ldBnGzZs+P+x99dRbXTt9z++0TqaKS1OoS0VoO6ud93d3YUWKtRdqbu7u7d33d2FuhdIizsk2b8/0jkkkNDn8/297Xlu9lpdq5nJxcycOZk5cp39YufOnY0eOyoqiq6urnzz5g2LFSvG+/fv0yG/gk2bNuWOHTs4cOBAzp0712i8TIv+8OGDdtonPJySwl6UWdWqVcXUhyHt37+f9evX5/Xr17VuyakptLOzo4uLi3DZzQoqKjtMC7fk3/W2VKlSfPHixR+hojItWrglq1XMmzcvu3TpItyljdXblJQUMVVWo0YNHj9+nA75FRw4cCDnzZvHGTNmcNiwYUaPLdOiP3z4IKZ98kv2gjAtu0sbk+ww/fLlS22DPDaWkqQgmW7a9yeoaLb+byu7wZKtLKXbm5YkiVFRUXR2dmbBggUZFhaWZezSpUtZunRp0ZuWAXnOzs4sVqwYU1NTs4zv27cvS5UqJXrTkiRx3759LFGiBFu3bp1lrFqtZoUKFejh4SF605IkceLEiSxbtiynTp2aZXx0dDSdnZ3p6OgoetOSJLF58+YsVqyYyNExphcvXtDZ2VlYnUuSJEalnJ2dRY6OMR08eJDFixcX5GNJkvjjxw86OjrS2dn5j/V3ypQpLFu2rOhNS5LE69ev08PDQy9Hx5hatmzJEiVKiN60JElcvXo1S5UqpZejY0ipqan09vami4uLHthy8ODBLF26tF6OjiGFhoayYMGCdHFxEeRjhULBqlWr0tPTU+ToGNPNmzfp7u6ubaj+JgLHxcXR1dWVBQsW5NevX7OMX7duHf38/MRogSRJfP36NZ2cnOjl5SVydIxp2LBhLFOmjBgtkCSJx48fp7e3Nxs1apRlrEajYY0aNejl5SVGC2Q4YZkyZQxCYnUVHx9PV1dXOjo6iga5JEns0KEDfXx80nN0jOjt27d0dHRkoUKFRINcoVDQx8eHrq6ufwRbnjp1ikWLFhXkYxns6OjoSCcnJ0ZERGQZP3fuXJYpU4YBAQHi3O/fv083NzejI6q66ty5M319fblt2zYRT2bO0cnWv6eyGyzZMir5BSv3puUff7Vq1ejn5/fH+I8fP+qRk2WqrYODg3bU4g86cuQILSws9BoM0dHRzJEjB9evX//H+MDAQFpbW4uGkSRJvHfvHs3Nzfn48eM/xtesWVOPnCxJElesWMGcOXP+S0ThggULioekXHZdunSho6PjH4nCMTExzJkzp+DSyPElSpRg7dq1/3jujx49orm5OR88eCDiU1NTaWVl9ceXHkmuXbuWOXLkEA0GSZL4/ft3WlhYZMkZktW9e3c9crIkSTxz5gwtLCyyHNmS5evryxo1aojPkiQJQvSfiMJpaWm0trYWLCu57OrXr8+iRYv+8dg/fvyghYWFaJTKJGwXFxe2a9fuj/F///23HjlZJmHnypVLNGKy0rRp05g3b149ovDLly9pbm7OW7du/TH+r7/+0iMnS5LELVu20NLS8o/MHI1GQzc3Nz1ysiRJ7N+/v/j9ZqXExETmzp2bCxYsELGklhBdqVKlP557SEgIzc3NBU9JkiSqVCra2dkZnUbU1Y4dO2hpaSmmmiVJyhJVka1/L2U3WLJlVAsWLGDfvn3FZ0mS+PDhQxYuXJi+vr5GWTeyunXrxkGDBokevSRJ3L59Oxs0aPDHB4i84mXgwIGiRy9JEseMGcPevXsbZd3IioiIoKurK1u3bs1ly7SsEYVCwYYNG3Lw4MFs2rRpluf++PFjFi5cmH5+fqJHr1Ao6OXlxZ49ezIoKCjL+N27d7NevXpi1Y0kSfzy5QtdXFxYt25do6wbWePHj2evXr3EqhtJknjx4kWWLl06S9aNrCZNmnDIkCGiRy9JEpcuXcrWrVvTxcUlyxdXcnIyixQpwl69eonGjSRJ7NOnDwcOHGiUdSNLXvFSv3590aNXKBSsWLEiBw0aZJR1I0te8SJD7UjS3t6ebm5ubN++vVHWjawVK1awVatWYupJkiQxHVKuXDmePXs2y/j+/ftzwIABYupJkiQeOHCANWvWNMq6kSWzmgYPHqzXWJ0yZQq7d+9ulHUjS2Y1dezYkfPmzRPxrVq14uDBg/UsAAzp1atX9PDwYIUKFcTUk0KhYLFixdi3b99MK6sy6siRI6xevTpdXV3Fqht7e3u6uLiwcePGmVZWZdT06dPZrVs3YXUgSRJv3rzJEiVKsFixYmJZtjG1bduWQ4YMEbwoSZK4bt06NmvWjM7OzsICwJBSU1NZokQJ9u3bV/CiJEni0KFDOWPGjCyPm61/D2U3WLJlUGFhYXR2dhbTPk+/RtOhYjNWrteUx44d46VLlwQA0JBu3bolQGtNmzbl1NW76VChCd2KlODr16+5bNkyduvWzejxZU+RlJQUFvEuxtXHb1AqU59uhbwYFxfHfv36iV6cIcmeIt++faOLR2Huuh5Cu5LVWaVqVapUKlaqVEkAADNK9gg5fPgwr169Sp8K1XnowRdae5bioEGDGBMTo/dAzyhdT5FVq1axZfeBLFCxGVt0G8DVq1dn8q7JKNlTJDY2lgMHDuTImUvpUKEpS5avxuvXr+t53RjSqVOnWLlyZarValapWpXzt5+gQ/lGdPEozO/fvwvCtDHJJN/Y2Fi6eXhy47mHVPjVYdFixZmSkqLnXWNIsqfI69ev6V60JPfdfk9b70ps3ry5eKnI3jUZpesRcvToUVZp0JyHHnxlPtcSnDhxYibvmoySe9Nfv37ljBkz2G34eDpUbMaaTdty7969evXSkHQ9Rdq1a8cJS7fQoUITepYoxWfPnmXyrsko2VMkLS2NJUr6cPmhy8xftiFdPTwZFRWl511jSLKniFKppIuHF7dfeUF7n5osW64cVSqVqJfG1KhRI+7atYt3796ld6kKPHDvM629yrBnz56ZvGsySm6oPn78mJs3b2aj9j15+OE35nUqwkWLFul53RiSrs2Av78/B0+aT4cKTVmmWl2eP39ez+vGkC5dusQyZcowLS2NdevW5ayNh+hQvhFdPYvy48ePol4ak/xMSUhIoIdnYa4/fZdS6Xos5FUky0Zitv59lN1gyZZB9enThwsXLiRJ7rv3he7jTtBt7Am6Bxzi4y/a3nnbtm0NTs3I+SPyVNDo7de1VNexJ1hszAGGxyaJF5ehIW65l/nx40eq1Ro2mntcxFefepgpaWo9cm1GvXjxQjQIohNT6Tv+gIjvtfoCSS25tnjx4gZfXAcOHGDdunWp0Wj4ThnHQgEHRfyS09qRjY0bNxrNo9H1CDn/4gfdfpOo3QKP8PwLrQfMyJEjjebR6HqELDn9VBzbM+Ag3ynjMnnd6Er2CJF7sr1WXxDxfuMPMCYpNRO5Vle6HiEpaWpWm3pYxDeae4JqtSbLF5eumV14bBK9x6SXfcAObS7RmTNnWKlSJYMvLl2PkMdfIukecEhL1R1zjNtvaJNNM3rd6Eq3N73/zge6jTkm6u3dD9pE327duolRN13J+SNHj2rJxxP33hbnXiTwAL9HJeqZtGWUrkeIRqNhy4WnRHylyYeYlKoSXjeG8mh0zezik9NYZkJ6veu4TDsqJI/8GcqjOXnyJKtWrUqNRsPPvxLoFZhe9rOPaKd1d+3aZTSPRpdQfu2Nkm4BR34TjY/wxGPt+Wb0utGVLqF87YWXdP1d9oUCDvJVqLau6Hnd6EilUtHPz0+M2g7eeFmce4mxBxgZnyIaVIbyaHSnfdJUataecVTE15l5lGmq7JVB/wnKpjVnK5MePnyIGzduYNgwLSBs7dUPkB14aGaJHbe/ANASUGfOnImYmBi9+J07d6JAgQKoX78+UlUaHHoRLfYlmuTEscc/YGFhgcWLF2PkyJHQaDR68TNnzkS3bt3g7u6Ol6GxeBmV7rXxJckC9z5FIn/+/Bg5ciQmTpyoF0sS/v7+mDNnDnLnzo2/X4YjRpNuAnPxUxIi4lNQoUIFlC9fHqtXr9aLT05Oxrhx4wQRePedL1CbpXuN7HgQDgDo2bMnPn/+jEuXLunFf/nyBZs3b8bkyVoA4uabX4DfJGqYmmPLrc8AgMmTJ2PTpk34+vWrXrzMaurevTsAYPv9MLFPZZYDe+5+gYmJCZYsWYKxY8ciOTlZL37VqlWoWLEiypcvj1/xKbj4KUnsi9bkxN8vwpE7d27Mnj0b/v7+mYjEEyZMgL+/PyRJwt2PkfialO718TIKeBUWi0KFCqFLly6YNWuWXqxGoxEka3Nzcxx7/ANJJullf/B5FFJVGjRs2BCSJGHXrl168TExMZg1axbmz9cCDLff/gKaac04TExMsfX2dwDA8OHDcfXqVTx69Egv/sWLFzh9+rQghG+58w0w0T62aGaJbb/r7Zw5c7BgwQJEREToxR88eBA5cuRAs2bNoNEQe5+kM6pSTHPi8KPvMDMzw9KlSw2StOfPn4/WrVujSJEieP8zHo9+ptfr0BRL3Hj3C7a2thg3bhzGjdMHHwJAQEAApk2bhnz58uHSayUiVOn17tb3NHyPToKfnx/q1q2LJUuW6MWmpqYiICAAS5cuhYmJCfbd/4o00/Sy3/VIS1/u2LEjYmNjcerUKb340NBQrFy5UlCmt9z8BJhp662JmTm23NKW3fjx47F37168f/9eL/7mzZt4/vw5+vXrBwDYejcUJr/LXm2WAzt/l/2iRYswadIk4ZUka+PGjfD29kb16tURn6LCyTfxYl88cuLU81DkyJEDCxYswMiRIzPV2ylTpmDgwIFwcnLC46/R+BCfboDzPs4MT77pP6Oy9Z+vbOO4f4BIokaNGhg7diyaNm2KmJgY1Jp9ClEm6WWV/PQsNPf3AMhMJGYGUq1ao0HeHutgYpH+8E24vAEmH24A0DdpA5CJsKzJo0DeDgv0zjHhyDSYRH4ySCTOSFimcynkaTAi/fo0asRvGwQzTZpBKm5CQgI0Gg3y5csHkjDxbYbc5duIeFV0GFIOjoOJiYlBIrGumR1JmNceghyFyov4lPd3ob6ibSRlJD9nvB6NRoOc7ebD3NpBxCfdOwg+OwFA36QNyEwEVptaIm/3VTAxTX94J5xbCpNvjw2StDNej8bODXlbTtUr+/i9gTBN+GWQSKxr3kUS8KqGPDX7ppd9WgoStg6AqamJQZK2rpkdSZhV6IScPg1FfFr4O6SemAkTE5PM9zkDYVmj0cCy0VhYOhVPr7cvL0Fze1um+2yw3qrVyNN9NUxzpBvrJV7fBry5lOk+A5mJwOqc1sjXeYl+2R2fDdOfbw3W24yEZU2BEsjbOCC97KhBwo5hME1LNEgk1jVhJAmTEn8hd6WOIl4dH4mkPf4wNTU1Wm/Nzc2RO3dubb2t3g85ilQV8amfHyPtvLYRn9G0UK5LMmFZo9EgZ6uZMLdPp5AnPToOPjqU6T4brLcwRd4ea2Bilt5YTriwGiaf7xokacumc/L1qK0KIl/b2Xplf2p4dRR3zH7e/7srm9acLT3t27cPefLkwV9//YUNGzbA19cXJVNfgSnaHpFJXDiq2yfAwcEBu3btQnh4OBwcHHD9+nUolUr0798fo0ePxrdv3zBkyBDkyZ0b5U3eCTJs7tgvKJknHj4+Prhw4QJevHgBe3t7fPjwAUqlEtWqVcPWrVvx8uVLtGrVCvaWahRKeiPOzzHhHQpYJKFhw4Z4/Pgxjh49ipIlSyI8PBzfvn1DwYIFcefOHdy4cQMVK1aEZ454WMd90gZTA1/VG1jlskSvXr3w8eNHzJw5E+3bt4dSqcSjR49gb2+Pb9++aYm8bm6oZJsIs5jfROO0ZNTI/QO5cuXCxIkToVQq0a5dO8yYMQNKpRIHDx6Et7c3oqKisHLlSlhbW6OuIh5MjNIePjEKdRTxsLa2xqpVqxAVFQVvb28cOnQISqUS06dPR4cOHaBUKjFhwgTkzp0bNXP/ANK0oyhmsT9Q0TYRbm5uOHz4ML5+/Qo7Ozs8fvxYnMvs2bPx8eNH9OrVC1a5LOCreiOIxtZxn1DIMg4VK1bEjRs3cPv2bRQsWBDfvn1DeHg4ihcvjmPHjuHRo0do0KABCloko2BCOpG4UNIb2Fmo0Lp1a7x8+RJbtmxB9erVoVQq8f79e9jb2+PFixc4f/48fHx84JMnAblitT1raFQob/IOuXPnwtChQ/Ht2zeMGjUKAwcOhFKpxLVr11CgQAEolUoxQlfdPgmI045oMSUBdWwikCdPHsyePRsRERGoXbu2oPBu3LgRlStXRmRkJBYsWIC8efOirl00mPybJh3/EzXtE6BQKLB161b8+vULzs7OuHDhApRKJUaMGIHBgwfjx48fGDlyJPLkyYPKZh8AtdZtNkfsV/jljYe3tzfOnj2LN2/ewM7ODm/evIFSqUS9evWwZs0avH79Gu3bt4ddDqBI8mvIQ5P5Ez7A2SIBderUwYMHD3D27Fl4eXkhLCwMP378gIuLC65evYo7d+6gWrVqcLOMh13ch9/1liiR+gZWOUzRtWtXvHv3DsHBwWjevDmUSiWeP38OW1tbfPz4EcePH4enpyfK2yTCPFY7IgVVCqrl+IrcuXNj7NixCA8PR/fu3REUFASlUomTJ09qIaORkVi3bh3s7OxQW5EAJGhHmJgUgzr2sciXLx+WLl2KqKgo+Pn5YdeuXYKA3KxZM/z69QtTp05F7ty5USufEkzVju6Zxoahim0CHB0dsW/fPvz48QMKhQL37t2DUqlE9+7dMWnSJHz+/Bn9+/dH3lw5UFrzFtBoR7Dyxn1G0VxxKFOmDK5evYqHDx9CkiR8/vwZ4eHhKF26NPbu3YunT5+iSZMmcLBMg0viW1Fv+1bzyG6s/AOV3WD5T1VaEnByNNRraiLp0HB07dQOFSpUwLlz53DlyhVolO/h7xmBK4G1UDXuCmpUKIV169YhKCgIXbt2xZjBPaFc0QjJK6oiz+MNKFasmCDyPnz4EO/O78Kav2xxeXQN5Li9AVMmTcCQIUPQunVrLFq0CP1bVkPo/EqICq6AEibvEBYWJoi8ly5dwrvDi3G0dwmcGVQW348twvHjx1GxYkVUrlwZDx8+RPWCKfg1vxzC5pVH5xpFsHPnTjRs2BAdO3bEyhXLkXR+GS76V8X2Nk54fWId7t27BzMzM/j6+sLe3h7Sp6NIWFoZYUvqYHSfdhg2bJgg8rZv2RTFvh3H1cDamFo6FdEht3D79m08ePAApUuXRpNGf0F9djLSVlVH5OZO8B/cF3Xr1sX69etx9OhROOUzQ6e8IbgcUAsd87yCi7UFDh8+jDVr1qBevXrwH9wXkZs6IW1VdajPTUHjvxoKIu/t27cR+fIGppVV4WpgbXh/OYaOrZtj3rx5GDx4MIYPH45RvdsibEltJCytjPxfTsDGxga+vr4wNzfHvXv38PrEOuxo44yL/lWRdH4ZVq9aiQ4dOqBhw4bYs2cPOlb3Qti88vg5vxxqOavw8OFDQeQ9duwYvh8NxplBZXG0V3G8O7wYV65cQaFChVC2bFkolUoUxxtEBVdA6ILK6N+yGoKDg9G2bVsMHz4ckyaMR+67m3AloCZWN7TBh4t78ODBA0HyLl68OHI9XI+UFVURvrIxxgzuic6dO2PixIlYv349qpfzQY2Ea7gSWAsjC/0Cfn3EpUuXBMm7e5cOSDw4DKrVNRC3ZwD69eyKypUr4/Dhwzh//jxyJIRjkPMPXA6ohfppt1G2mAe2bduGmTNnom3bthgzpDeUq5sjZWU1WN5ZhnLlysHHxwffv3/H/fv38enaYSytnRtXAmvB7vE2jBoxFGPGjEGnTp0wY8YMDO1QH6ELqyJmUUV4Jj5AYmIiSpcujYIFC+L69et4c2QZDvXwxt/DKkB5PBj79+8XJO+rV6+iYeGcUM4rh/B55dCmXEEcO3YMderUQbNmzbB1y2bEnFmC8yMqY09Hd4QcXYnbt28LkneOHDngpLyI+CWVELaoJvx7tMDYsWPRu3dvTJs2Db27dYbbm/24ElgLcyqZIuzh37h79y5CQkLg6+uL2rVqApdmI21VNfxa1wYBQ/uicePGWLp0Kfbt24cijrZoYfEYVwJroaf9B9ibJePUqVPYvn07atasiWEDeiN6e3eoVldHyokxaN2yOcqUKYMbN27gxo0bSPz0GEEl43ElsBbK/DyLpvVrYfny5Rg1ahT69euHwAGdEba0PpKWV4Ht6z1wcXGBj48PUlJS8ODBA7w5vRmbmjvg0qjq4JVVWDBvLnr16oWmTZtiw4YN6NmwFMLmV0DkwvKoYB2Bt2/fomLFivDz88PZs2fx+cginOxfCneC6mJi0+J/fgZm6z9P/5XJM/9byk66NaCTgXqgsE2dXURSoeweKYPWdCFtarWaW7du5a0BdnrxczuXEQmdwnHzt3SdSpOSkjhv1nSGBljrkV2nDmjF0FBtcurQoUO1jpu/tWrVKnbp0oWkNtFu6vAeTJqQfuyosVacOTGAcXFxIolS1zdE16n0/fv3nNmjht65vxxmI4i8cXFxeqA1jUYjXDdJbeLuio6eevFHe+Tn0aNHqdFo+ObNGz0L/NjYWLq7u/Pdu3fUaDQ8cuQIj/XIrxe/opOXWEFz8uRJVqtWTSSnvn79moUKFWJ8fDzT0tK4atUqvhpmoxc/o3sNsXppzpw5HDRokLh2XafSuLg4zpwYwKhxOoC5CVacNqKHMPfq1KmT8IEhqedUGhoayin9W+rRlEMDrDl/9gwmJSWJJErZ4p8k27dvL5K0X7x4wbmdS+ud+60Bdty6dSvVajV//vxJV1dX4cGT0an08uXL3NTJRS9+RxdHAYOUnZLlpe+ypX5oaKggeV/qY68Xv7CTj1guLjsly7p7965I0k5JSeHC+fP4bXR6vVVPtuLUvk3EUv3AwEBOnDhRxG/evFkkaUdFRXHaqH5MCEo/dux4K84YO4wxMTF6TsmyZIdpkvz06ROn9aqnd+7vR9pw2bJlTE1NFU7Jz549E/VWdpiWy2ZxR2+9+DO9tEu3NRqNcEqWLfBlS/0XL16Ierm/WwG9+LWd3IVBo3CX/r30XXbojYmJESTvR4P1wZKzu1USKA3hLv1b586dE9YICQkJnD11An+N0QGSTrTilMEdBUxSdkrO1n+esuGH2QI2NgS+3hYfr3w1Qbvj2mRHQ6A1XUgbALzvm6IHKlv92AxTbpobBa3pQtpc8hEPuqXqnc6wC+bY+9rMKGhNF9LWwE2NHU1Uevvr7rPAs1+mBkFrGc9pZFkVgirqJ08WXG0JNU0MgtYyQgvXNUhDS6/05MrXkSaovkdbGBnzcwBkmv+/3ikVRWzTf1ZH3pmi/zkLcZ0yRFGW7vy/uSnxY6B+2c2+Y4YlD8yNAgJ1oYU+Cg0utE/Ti+960hznPpuJPIeMZR8RESFyDToUVWN5Xf2yL7PNEt/itXkOqamper+xjOc0vYoKA0ull31cKuC5IYe4TlNTU5GfAyATtHB/s1TUdEkvuzuhJmh22FJcpwxRlJURWvi8Zwryp/95bH5uirFXLTJBFMX56UALpVzEi176ZR94xRxbX5hlgijK0v0t1XDW4EBz/bJvesgCd8NMDUJFM9bbgX4qTK+qX2891lsiIc0k0+8TyFxvl9VJQ0fv9Hr7ORYov0Nb9rq/T1kZf0vn26XCV0ov+zMfTdH9dHq9zQgV1QWSAsD3ASl6YMhF980w967xZ4bub6mwrRZuqKe2m4GSrXH//n1069YNT5480bv32frPUDb8MFvkucn6OPZL2hGIzZs3C2t4XSUmJtLLy0v0RtXbWuvHvzxOUtsrnDx5cqZ4vR5cWgpVwSVFrGqqPRn+SvQKDxw4kCleZt2o1Woy6gtV0x3S4+cWIpNiMvUKdbV48eL0HtyHq9RMsU7vKa/VusjKoDXZ6VVXvXr1Su/B3V6jd+2ao9oRiHPnzrFChQqZDNZ0WTcktd/XLbvfoLbg4GCDrCaZdfPp0yft31tbK/3YU6zJD9plocZYTc+ePUs3L0uK0ZaXXHbTHcjor1Sr1SxbtiwvXLiQKV5m3Wg0GjL8FdVT00fXVMElSVWqWLpryNF20qRJWj4QSb48pl9227VwxadPn7Jw4cIGWU0tWrTg1q1btR8uzdEvu7+nkCT37NkjrOF1lZKSQm9vb967d09b9ru76Mc/1WIIgoKCGBgYmOnYMutGqVSSajVVS9JHiNRTbckfT0iSzZo1M8hqunHjBn19fbWjlbFhVM10Si+72a5kQkQmd2ldrVmzJn208stdvXqrWqF1kdUdAc2owYMHp49W3t+iX/YHtcvEr169atACX6PRsHr16jx+XPvb5qkx+mV3Xevgu2rVKoOspoxAUvXGRvrxb7S/B2OsJr3RytREquYXSY+d4UBGvKdGo2GVKlXECGi2/vOU7cOSLV67cpmr2rvwXA9rLm7lxPv37ggvlHfv3hmMOXDggHDd3LhyEc8M9+Hp7tb0r+3Anz9/CsdNY6A1Xa+SSUO789m0yjzR1Yp96xZmWloajxw5ItwuDUn2KtFoNOzfuDRDF9fl/g75OLqH1sF2+vTpwu0yo3S9SuLi4ji4piPj1jXhxpZ5uHiWdhjfmMcMqZ0OkV03X4eEcHrjAkzb2orz6ufiqWOHxPSFMRv1mzdvCq+Sk0cPckdPT57tYc3pjQvwzevXWXrMkPpeJYtnTuD1sWV4qpsVB9dyZFxcHO/cuZOlOZquV4l/tyZ8O6c6j3W24oAmZbT3MwuPGY1Gw5o1a/Lo0aNMS0tjv7qF+WtFQ+5qm5eThvUgmbXHjOxVEhISQqVSSf/aDkza2JyrmubhptVLqNFoWLt2baOsprdv39Ld3Z2xsbG8d/c2F7dyomprK06rnZPXr17J0mOG1E5nVKlShRqNhjs2reGxwcV5toc1x9TNzx8/fvD9+/d0dXU1+nzQ9SqZHjCADydX5ImuVuxf24MpKSnCY8aYE7DsVaLRaDi4ZRV+Da7Ngx3zcUTHeiSz9pjR9SpJTEzkgJrOjFnTiFtb5eW8SVoMgTGPGVLfq+Tjx4+c1NCBKZtbctFfuXho7w7hLm2M1fTw4UPhMH3+7Clu7OLOsz2sObdZQT5/9ky4SxtjNW3fvp3NmjUjSa5cOJOXRpfi6e7WHFarAKOjo/n48WNh2mdIgYGBwmF6bN+2fDWzKk92syE/aaeisvKYydZ/hrIbLP9w6famJUniiRMnWLVqVY4ZM4bjxo0zGie7wW7fvl2QjyVJ4uzZszlo0CDhuGlMCQkJ9PDw4NGjR0VvWpIkdurUicuXLxeOm8Ykm5dt3rxZkI8VCgX9/Px48OBBuri4ZAlak103x48fL3rTsgX5gQMHsnTxJdPdYHXJxzY2NixatCgXL16cpYsvqXWDXbJkiehNS5Ik8ib+5OIrm5cdOHBAz35eJkxXqlSJZ86cMRofERFBFxcXHjx4UPSmFQoFGzRowM2bN9PNzc2oiy+Z7ga7bNky0ZuWsQVHjx7N0sWXTHeD1e1N29lpadDbt2//o/287Aar25u2trZm2bJlOXny5CxdfEmtG+zGjRsF+ViSJDHq9icX3+TkZBYuXJhHjx4VDXJJkti7d28uWLAgSxdfkvz69StdXV25c+dOkU+kUChYvnx57tu3L0sXX5LCYXratGkcOnQoSW29dXV15aFDh7JsqJLpbrC65GNbW1t6enpy1apVWbr4kmS/fv04d+5ckU8kSZIYdRs2bFiWLr5qtZqVKlXi3r17RT6RzIgaNWrUH1185U7U4cOHBTxVZhX9ycU3W/8Zym6w/MOl25uWIW81atSgQqH4I+Dv8ePHtLGxEcmFkiQxKSmJjo6OLFWq1B8Bfzt37qS9vb0eZO7Lly+0sbFhr169/njuAQEBtLGxEb1pmbdjZ2f3RyIwSdauXZsKhULUBfnFZWtr+0dOUnJyMp2cnOjj4yN605IksUuXLrS2tv4jaO3bt2+0sbFh9+7dRaxaraaPjw+dnZ3/CPi7cuUKbW1txbSPDIZUKBSsU6fOH6992bJltLW1Fb1pmbdjY2NjcDoko7p3704bGxvRm5YkiQcPHqS9vT13796dZaxGo6Gfnx+dnJz0AH8TJkygjY3NHzlJsbGxVCgUrFmzptgmSRL/+usv2tnZ/RHw9+rVK9rY2OjBEVNTU+nm5kZvb+8/Av4OHz5Me3t77tixQ8SHhobS1tZWL8HcmCZPnkwbGxvh2CrzdmxtbQU/KCs1adKEdnZ2okEuSRLXrFlDOzs74S5tTKmpqXR3d2eRIkVEg1ySJPbr14/W1tZZcpJIMjw8nDY2NqJhIz8zypcvzwIFCvzRAv/OnTu0tbXlnDlzRHx8fDzz589v1P1YVxs2bKCdnZ3AasgNFt0R22z95+r/5f1tbjy7JVv/joqNjcX06dNx8eJFsc3ExAQWFhYwMTHRSzg0JNkkSje5zdTUFCYmJnqJosaUM2dOqFQqvXjZMO1fSZgzdPwcOXJApVIJU6msJCcF6l5njhw5oFar/xhvamoKU1NTmJub6yVWyueim3BoSObm2gRD3e/JZW5mZqaXcGhIhs5Tvo4/HdtYvIWFxb907XK8RqPRu89y2esmaxqTubm5KENZhu6nIZmZmYl6qitD99OQLC0toVar9Y5jYmJi8H4ai894nebm2kTnf7XsDdXbf7XsLSy0icG61yn/lv6VeivXsYz1NmN9NCT5fmf8nlxn/1RvDZW9fC6WlpZ/LHtDv2/ZXfrJkydZxmbrH6b/7tbT/4SyR1jSNWbMGD3qsCRJ/Pvvv1muXDkOHz7caB4Cqe0lN2zYkGvXrqWzszN//PhBSZK4aNEi9uzZM8s8BJJMSkpi4cKFuWfPHhYrVowpKSmUJIm9evXivHnzssxDINNBaytXrhSJwQqFguXKleP27duzhLSR5MWLF1mmTBn6+/tz0qRJJNOH1rdu3SqWURrT0qVL2b17d9arV4/792uTNW1tbenl5cXZs2cbzUOQ1bdvX86ZM4eenp58/vw5JUnivn372KBBA3br1i3LESK1Ws2KFSty27ZtIjFYkiROnDiRo0aNYpkyZQyybmRFR0eL6Zfy5csLknbz5s25cuVKuri48MuXL0bjX7x4QU9PT86dO5e9e/cmqS17b29v7t69O8s8BJI8ePAg69atyx49enDJEm2ypp2dHV1cXLh27Vo2btw4y7KbMmUKR44cyXLlyvH8+fMktdNxvr6+HDNmjFHWjaxWrVpx+fLlelOZq1evZseOHdm4cWODrBtZcv7T7t276eXlJaYyBw8ezOnTpxtl3ciSWU3r169ngwYNxJRQtWrVuGXLlj9OZcr5T+PHj2dAQABJbdm7u7tz586dwjLAmNatW8d27dqxWbNm3LZtG0ltvXV3d2dwcLAgTBvTsGHDOHXqVHp7e/PBgweUJInHjx9n9erV2a9fP86fP99orJz/tHnzZrq4uPDnz5+UJImzZs3i4MGDWblyZaNAUjJ92mfnzp0ieVmSJHbo0IFr1qzJ8ryz9Z+h7Cmhf6h0s+7Vag3XXXlPp7YTWaTpAN64cYORkZHigW5Icq6LRqPh/OAlrD50IR3bTKBLleYMDQ3lkydPxAPdkHQ9Qrr0HcymU3ewYKtxLFLlL6amphpd6SFL9ghRq9UsVbspOy05RYdmo9i4vXaKJSgoiGPGjDEYm5aWRl9fX167dk276qbiX+yz4RqlBgM5btI0ktTLTcmonz9/0sXFhd+/f+ezZ8/oUa8rB227S9tqnbh334EsV3qQ+h4he/buZ5luQXRqO5EedbvwxYsXWa70IPU9QsZOnMp6gavp2CaIbpUaMTo6Ws/rxpDkXBeS/KttV7aac4AFW45h6drNqFaruXLlSoMrPUjqeYSkpKSwSJW/2G3leeZvPJxd+w4maXylB0k9j5AfP37QpUpz9t98i/Z1enPh4mWZvG4ySneF2fXr11mk6QAO3nGPNhXb8O/z57WE6d+5KYaku8Js+ao1rDJgjrbeVmvFz58/MyQkJMtkcV2PkL5D/dlo4hYWbD2OnpUaMikpSc/rxpBkjxCNRsNKDVqyffBxFmg+mrWbd6RGo9Hzusko3RVmcXFxdKvYkL3XXaHUcDCHB44nSb3clIySV5h9/PiRb968oVutDhy49Q7tanTj5q3bM3ndZNTz58/FCrNjx0/Qt8NoOrWdSM+GPfnw4UM9rxtD0l1hNnXWXNb2X6Yt+0pN+OvXLz2vG0OSc11IslWX3mwxYw8LthzDEtUbZ9lIy9Z/jv5X4YdTp06FiYmJ3j9vb+8sY/bv3w9vb2/kzJkTPj4+mSBe2frXJIPW8ubNi6UX3mLWqVcw96yElBLN8DTNAba2tggKCsLYsWMzxWYErb2xr4Ivebxh4VUZptX741WMKXx9fVG/fn0sXrw4U/yPHz+watUqTJ8+HSq1Bl+9WuNZkg0si1QDaw7Ft5hUtG/fHgkJCQbv740bN/Dy5Uv069cPP+NTkVp1EG6GapCzeB389OmMxFQVxo8fj3379uHt27eZ4jds2IDixYujWrVqeB+jgWmtITj/Nga5SzfFu4J1AQDBwcGYNGkS4uPjM8VPnjwZgwYNgqOjI54lWkFTtiNOvVDCqmoXvLAsCktLSyxYsAAjRozIBGkjiREjRmDhwoWwtLTEyxzeiHCsAnPPStCU64Sn8Xnh5OSEgQMHYsqUKZmOHR8fj8mTJyM4OBgA8N6xLt6ausDCqwpMag7Gu2gNqlevjqJFi2Ljxo2Z4t++fYsDBw5g3LhxSEhR4ZdvVzyMzgnLojWQUnUgfsWnon///nj27Blu3ryZKf7kyZNISkpCu3bt8C0mFZqaQ3H1SzJy+TTA18KtoVJrMH36dKxcuRKhoaGZ4hctWoSGDRuiZMmSCIkxg2n1/jgbEoG85VvjtV0lmJiYYOnSpQgICEBaWlqm+DFjxiAoKAg2NjZ4mlYAKSWa4eSzcFjX6oXndEG+fPkwbdo0BAQEZIpVqVTw9/fH0qVLYWpqijc25fHdxkdbb6v2wctYCxQtWhStWrXCvHnzMsX//PkTwcHBmD17Nkjik3szvExTwLJwNaDWUHyJSUOzZs1gaWmJgwcPZop/8OABbt26hSFDhiAyIRUJlfrjjtIEOYrVRnSZHohNVmH06NE4deoUXrx4kSl++/btcHR0RL169fAxWg3TWkNx4X0ccpdqjA/OfwHQAhgNAUkBYMaMGejRowfc3d3xPD4XULEbTr/8iXyVOyAkj9YdefHixRgxYkQmICl/Q0Xnzp2LXLly4blpIcS414a5ZyWoSrXFk0QbSJIEf39/TJgwIdOxk5KSMG7cOCxevBgmJiZ4l78mPlgW0pZ9zYF4HU2UL18eFSpUwKpVqzLFf/78GVu3bsWkSZOQnKZGWPGOeByfF5ZFa0BVfTBCY1MyxWTrn63/Fmv+EiVKIDQ0VPy7fv260e/evHkTnTp1Qp8+ffDo0SO0bNkSLVu2xPPnz/87Tu0/Vn///TfCwsLQtWtXAMD1d7/09l9/q/3cr18/vHr1KtM9WbFiBapWrYqyZcsCAG6+16fe3vz996ZPn47Vq1fjx48fevuDgoIQEBAAhUKB0JhkfI5KJw6naoAHn6P0XlypqekGXRqNBiNHjsTixYthZmaGZ99ikJCW3ihQxqvw4WcC8ubNi+nTp2d6cUVFRWHOnDnihXTrfQSI9Hnze5+joVJrUKRIEbRt2zbTi+vZs2c4f/48/P399cpKlN3va2/atCly5cqFAwcO6O3fv38/8ubNi8aNG+t9P2P8qFGjcPbs2Ux1e+7cuWjfvj28vLyQptbg3uf0FxNhgtsftPdi/vz5mDVrFqKjo/XiR48ejRkzZiBv3rz4+CsBPxPSjd8S0ohn32OMvrgyNlQffI5Cms577VNkMsJikyFJEkaPHp3pxfXjxw+sXbsW06ZNM3jtcj0qW7YsKleujJUrV+rtv3btGkJCQtC3b9/f8T/1y+73vejWrRt+/PiB8+fP6+1fv349fHx8UKVKFQDAjXf69Vb+PGnSJGzduhWfP3/W2z958mQMGTIEBQsWxK/4VLz9mSj2qWiCux8jYWJigsWLF2P8+PFISkonZcsN1eDgYFhaWuJVaBxiU9ILLzJJjXfKOOTKlQtz587NRNKOi4vD1KlTsXDhQgDAnY8R0OjU22c/4pCQooK7uzt69OiBGTNm6J3769evcfjwYdEBuf5W/9rle1GvXj04Ojpix44devtPnDiB1NRUtGnTRq+sM8YPGTIEt27dwoMHD/T2L1q0CI0bN0aJEiUAALc+ROrsNcGt3/d+9uzZCA4Oxs+f+vd2zJgxmDhxImxsbPAtKhE/YtOfCclq4MnXbBpztvT1X+50O3XqVBw5cgSPHz/+l77foUMHJCQk4MSJE2JbpUqVUKpUKaxZs+Zf+hv/dKdblUqF0qVLY/369ahUqRJu376NnivPIdmprPhO/INj0DzYD3Nz88wU2d9upTIZNTU1FblbTEYOx/SRsZhzK2D25R5MTU2RmJgIlUolylqXFAsAyWlq2HRfAbPcMvlVg6h9E5AjPhQmJiaZiMS6TrEajQYpljaw6xIMEzNtMqAmJRFR24chl6kmE0UW0HeKVavVUBUoAdtm6aNIaRHfEL9vjEiM1KXIMgMpVqVSASUbw6pKJxGf+PoG0i6vhoWFRSYiMTMQgVNTU2FZezByF02n4sbe2AWTl2dgZmaWiUisSwSWicX5Oi6AhZ2ziI8+Pg/m4S9hamqayalX914CQDLNYNttOUxzaMuW6jRE7QpAjtQYmJiYZHLq1SUCazQapOZzhG37WTAx0fZl1IkxiN42FLkszQ0SiXUJx2q1Gmq3CrBpMFSce8r3ECQem65X9rLjacZ7mZaWBrNyHZC3bDMRn/DkDNR3dsLc3DwzeVrnXpqaat1kczUZh5yuvun19sI6mH64DjMzs0wkbV0iMAAkp6Rq623edCfgqAOTYBnzVdRbU1NT4eyakWSdbJYHdl0Xw8RcWy81qcmI2jECuZBqkEgsj/TlzZsXGo0GafZesG01SRxbFROO2J0jkTNnToMkbd17qVKpAO96sKrRQ8Qnvb+LlL+XiqRYXfK0fC9l1+XU1FRYVu+L3CVqi/i4OwfAJ0dhbm6OlJQU4dRrrN7mbTsLlvkLpdfbU4tg/uOJeGbI9cxgvVUBtj1WwDSntl6bmZrg5PBq8C7wz3ue/9P0v05rfvv2LRwdHVGoUCF06dIFX758MfrdW7duoV69enrbGjZsiFu3bv13nNp/lkgg/ifWrl6F0qVLw8XFBd26dUO/fv0wrLoTTD7fg5ttTuDDLcxoVx4FChRA06ZNERISgubNm2P+3NlQfniB1q1bYe7cubh48SJ8fHxQrlw5DChpjtwxn+BqbQG8PIOZfZoiT548GDBgAL59+wZPT0+cPHoIYR9eomjRojh58iR27dqFAgUKoFXzpqhr/hp2mhgUzE3YvzuN0T3bIHfu3Jg+fTrevXsHOzs7vHh0B+9ePNL+/8ULLFiwAPny5cOQ7m3h+v0CHHKooDBNQPnkh+jStiVsbW2xYcMGXL16Fc7Ozvj+7jmuXjiLggUL4uvXr/D390eePHkwtW8rmD8/AWcrM+RLCkVnl1jUqFEDnp6eOHXqFNauXYs6depA+fEl1q9dpZ1Gev8e7du3h729PeZ0qwXN60tws80B89CnCKrvDk9PT1SvXh3379/H0KFDMXzYMCg/vMCwoUMxbNgw3L9/H9WqVUPhwoURVN8d5qHP4GabA3x9CXO614adnR06dOiADx8+oGrVqti4fg2UH1+idu3aWL9+PU6dOgUvLy/UqlULnZxiYJUUBud8ZrB4eRJT+rZC7ty54e/vjy9fvqBAgQK4dvEcvr97DicnJ1y7dg0bNmyAnZ0durRtiXJJ96EwTYRDjjS4fb+Iwd3aIm/evFi4cCGeP38OOzs7vHvxCM8f3oatrS3evXuHqVOnIk+ePAjo1RZ2b0+hYG7CThONuhav0bJZExQoUAC7d+/GiRMnUKxYMYR/fIUTRw7Cy8sLX758Qf/+/ZEvXz7M6tMUeHEartYWyB3zEYP8LFG2bFn4+Pjg0qVLmDNnDtq2bQPlhxeYN2cWWrZsiZCQEDRt2hQFCxbEjHblgA+34GabEyaf72Faq1JwcnJCw4YN8fz5c3Ts2BHTpkyG8sMLdOnSGVOmTMG1a9dQpkwZ+Pn5YXh5K+SMfAdXG0vw5TnM7t0IVlZW6N27N75+/YpixYrh4L7dCP/4En5+fjhw4AD2798PJycnNG3SGI3zfoKtKhJOeUyQL+QExvRqI0jenz59gr29PR7fvYFPr59CkiQ8fvwYS5cuhZWVFfp3aYPCyqvIb5kKyTwZvrG30bNDK1hbW2P16tW4c+cOChQogK9vnuHOtUvInz8/vnz5gjFjxiB37tyY2LcNcrw4Dqe8prBOUaK1fTjq168PNzc3HD16FNu2bUOVKlWg/PgS2zZvRNmyZfH582d06dIFtra2mNOzPjSvLsDNNgcslC8RUKMgvL29RScmMDAQA/r3g/LDC4wNDBCj2rVr14aHhwcmNy0Gs2+P4G6XE3x7DbM6V4UkSWjdujXevXuH+vXrY8WyJVB+fInGjRth2bJlOHfuHLy9vVGlShX09ExF3vhvcLEyh9mLU5jetwXy5MmDoUOH4suXL3BxccH5MycQ+uElPDw8cP78eWzduhUKhQLtWzdHFfVT2CMO3gXyYVF7v+zGSrYy6786gebUqVPct28fnzx5wjNnzrBy5cp0dXU16v9hYWGRyYxs5cqVzJ8/v9FjJCcnMyYmRvz7+vXrPy/pNjaUXFmJnGLFHwHWDB7Tmy4uLlyxYgVTU1NZv3597tu3jyS5ZcsWtmjRgikpKVy0aBFdXFy4ZGwvhgdak1Os+HyYHf0H9GDhwoV5+PBhJiQk0NPTU4DWRo0axUmTJjE6OpoBAQH08PDg1nFtmTRRG39tiAtbNm/KChUq8NatW/z06ZNIotRoNKxfvz7379/PL1++sFOnTvT19eXBUdWpnqy14T4xsizLly/PFi1a8O3btzx//rxY6SLb8T9//pyPHj1izZo1Wa9eXV4YWpicYsXUSdbcPaYpCxcuzMGDB/Pnz59ctGiR8HzRteM/ffo0ixcvzn7dO/LBEEkLVhxnzTXju9PFxYUzZ85kYmIie/bsycWLF5Mk//77b5YvX55paWnctGkT3dzcOHNUH3701wIKP/rbcIZ/b2F4l5aWxvLly4uVLosWLWLv3r2ZmJjImTNn0sXFhWvGd2fUOG3ZPRgisV/3jixevDjPnDkjkijlxOiePXtyyZIl/PnzJwcNGsTChQtz15gmTJ2kjb8wtDDr1avLmjVr8vHjx3z27Bm9vLyYmJhItVrNcuXK8cKFC3z79i1btGjBChUq8PiIMgLud3BUdfr4+LBz58788uWLWNWk0Wj0zuXmzZssX748W7doxmtDtIDCpInW3DquHT08PBgQEMDo6GhOnDhRrHTRPZdDhw7Ry8uLowZ25/NhWuv/8EBrLh2nrbeLFy9mamoqmzdvLmz69+7dywYNGjA1NVWsAAoe05s/foM1Xw235dghPVmoUCHu3buXycnJ9Pb25v3790mSEyZMYEBAAGNjYzl+/Hi6ublx0/iOTJigjb85xJHt27RkmTJlePXqVX7//l2sdCHJ5s2bc9u2bfz+/Tu7d+/OEiVKcP/oOqLenh7uyypVqrBx48YMCQnh9evXhWmfjAx48OABnz17xrp1tffo3LBiWiDoZGvuDWzIokWLsl+/fgwPDxermkjqncuFCxfo4+PDHp3b8+4Qh99gRWuuH9+Frq6unDJlChMSEjho0CDOnj2bJHnt2jX6+fkxNTWV27dvp7u7O6eM6M23I7T19ssoa84N6ENXV1euW7eOaWlprFatGk+cOEGSXL16NTt16sTk5GTOmzdP+2wZ14O/xmrL7vFQew7p05VFixbliRMnBARUToweNGgQ58yZw4iICA4fPpyFChXijrEtmfK73l4e6sEmjf5ilSpVeO/evUxQ0Wz9c/R/apVQVFQUraysuGHDBoP7/780WKZMmUIAmf79oxosGXg1r4OKiBUox44dY40aNcSqhoysm/DwcL4f76EXf3d6HbH6Z+bMmcJxk8zMunkd8ooJE/XJrDeWDxRLhtu3b6+3quH58+fixUWS98/t02eOTLHinUNagnBaWhp9fHz0VjXorkTQaDS8sXG8XmzqJGs+f3ibJA2uatBl3aSmpvLW3JZ68T/GFxSmcHfv3hWOm7J0WTcxMTF8OrGUXvyTiaVE3duyZQtbtWolYlNSUlisWDHxEv327Rt/jC+oF39rbktxvFGjRgmCL5mBdUPy2f1borEi/7u5MUiUTUZWkx7rhuTtg6v0YtWTrXj/nHYJtyFW09q1a8VLVK1W8/ryAXrxCRNt+eZ1CMl0gq8uq2nIkCHiJZqUlMS702vrE4nHe4hry8hqysi6+fXrF18HFdGLvz+lmnDgzchqysi6ef/+PWMm6NOcbyzuKVajZGQ1vX37lh4eHuIl+vDyCdFYEfduT7Aom3LlyvHixYsi/sSJE4LMrdFoeHPbdL3YtElWfHL7EkkaZDXNnj2bgwdrV2mlpaXx5oIOevE/g/KL7xtiNXXs2FEsDY6Li+OjSeX14l9MKCHozXv37hXu0iQzkblDQ0P5Zbw+Sfv2rEbCDHHChAl6K/h0V92R5Iunj5n8u4Mjyn6NvzieMVZTtv7z9X+O1ly+fHnUq1cPc+bMybTP1dUVo0aNwsiRI8W2KVOm4MiRI0ZNg1JSUpCSkp5BHhsbCxcXl39WDsv+nsCLw+Lj058mqLdfO3duiAickdSbkSi8J8QUwy9aGCUC65J6LU2JLwNSYarjBzX5hhnWPDHPRN+VpUvq9ZU0ON9Of7VIu2MWuPLNNFOegSxdUq8honCJzZb4mZQ5PwZIp+LKeSsZicI/E4ESW7R5BVFRUXr5MQAykXoPNEtFDR2isEzCzngcWRlJvS96pkDSIQqveWyGyTfNjRKBdef/DRGFZRK2ISIwoJ9nUtNZg/0ZiMIyCdsQEVguE5lIPMhPhWk6RGENAde1lkjVmBgkAstlIudOZCQKv4kyQbXdxuttRiJxRqKwTMLOmB8jSzfPxATE1wGpsNTxoJNJ2BmPI0uXSFzEVoPrGYjC3U6Z4+wnM4Mka0CbZ5IzZ07kyJEDLbzUWN9Av96W3W6Jr3EmenlYutItk/EVVfAva5iErUvsFvcmw295e+M0NHRPL3uZhG2s3mb8LT/olgKXfOnntuW5KcZcNf7M0CVp57UgPvTTr7doEgyU74uzZ89i6tSpuHHjxh9N6rL1n6f/U7TmuLg4PbvxjGrfvj2bNm2qt61y5cocMGDAv3yMf6IPi+bdJTG8qp6cj2l3tKyU+fPns3///gZjunTpwhUrVpAkU66vED2dlEnW5CftiEbXrl0NGpypVCqWKlWKV65cIUnG7uwl4mMnFyCjvwoejvwdXcmsm2/fvpGqNEYGVxLxkXNKkqmJArRmyAJfZt0kJyeT8b8YPTW9txe1rkXm72TQjh072KRJE+2H0GdMnJROJE48ozXT27lzp1GDs7Fjx3L8eK0vhvr5Yaomp/eS1c+PkCTHjRtnlNXUqFEjYW+feHqqOHbSJDsyVDv11rhxY4OsJpl18+SJlhwcta6FiI+e6krG/xLfMcRq+vLlS7p5WWoiI2eXSC/74EqkKo1fv341anB2+fJllilTRjsSEf1Ve7/le7+rT+bvZNCyZcsEroCfbop6yylW2npIcvny5UZZTX379hUcprQ7G8UoR8oka2reXSJJowZnsiGfzGGK2z9EHDt+skRGfND6pxhhNcmsmw8fPpBqNSOX1kwvu5lFyeQ4/e9k0MuXL9M5TIlRjJqePrIZtaohqdHofyeDDh48yNq1a2tHIpSvmTApfYQo4ah2ROPQoUPp38mgqVOncuTIkSRJTchppk36TYKelI+qR9r6OG3aNKOsptatW3PTpk0kyaQL83XqrS357QFJsk2bNgZZTampqSxevLjgMEVv1hkhWuhNxoZl+k62/nn6X50SGj16NC9fvsyPHz/yxo0brFevHhUKhRj27datm95D/caNGzQ3N+fChQv56tUrTpkyhRYWFiJ/4l/RP7HBcuTIEfZuUoGaO+tZxzMXg4ODheOmXNYZJb+Ufv36xenTp3OpfzuOrmnLDnX8ePbsWT3isCFdvnxZmJe1bduG55YNp38NW5Yr6syPHz9y/fr1bNeundFzXrFiBbt27cq0tDSW9i3BtwdmcEgVa/oULcTExEQOGzZMEIcNqX///pw/fz7Dw8PpV9iJMReXsUc5K9arU5tqtZo1a9bkkSNHDMZqNBpWrlyZp06d4p07d/hX+SJU3V7HZsXz0N/fX484bEiyedn79++5adMmBnapy8BadgzoXJebN2/mu3fvBHHYkF69eiVeSiNHjuS2KT05qqYtG5YvzLt37/LkyZPCtM+QDh8+zNq1tddZt3Yt3t44liOq29LH05Hh4eGcO3dulo38adOmcfjw4UxISGDJIh78fmI+B1SyZmnfEkxLS2OXLl24cuVKo/Ft27blhg0b+OHDB1Yo5sLEa6vYsVRetm/fTjRmjbGaUlNTWaJECd6+fZtnzpxhp7qlqL6znvUK5+LMmTP1iMOGFBYWRmdnZ4aFhXHBggWcO7gFA2rasmej8jx69CgfPnyYpRPv7du3hXlZt27deHzhII6qacuqJV0ZEhLCHTt2ZOo06Wrjxo1s06YNVSoVK5QtzRd7pnBoVRuWLOzG2NjYTO7SGTVixAhOmzaNERERLOnpxIi/F7NXeStWr1qZarWaDRs2NMpq0iVdP378mLVLFWLqzbVsVTIPBw4cKEz75MZsRumSrnfv3s2hbaqTdzewukdOrlq1SrhLG2M1yUDSmJgYjh8/nuvGd+HomrZsXrUYr169yosXL7Js2bJGHaRl0rVGo2HTJo15ZfVo+tewI+O0MEjZXTpb/1z9rzZYOnTowIIFC9LS0pJOTk7s0KED3717J/bXrFmTPXr00IvZt28fixQpQktLS5YoUcKoI6Yx/dMaLMnJyXrkY5lI3KlTJy5atCjL2BkzZrBHjx6iNy1JEm/dusUSJUqwbNmyIs/FmNq1a8fRo0cL8rEkSVy/fj1btGghHDeNSXbdHDVqlOhNS5LE4cOHc+jQocJx05jk/JQuXbqI3rRCoWCtWrUYGBjIevXqZQlau3v3Lr29vVmhQgXRm1YoFPTw8OCgQYOE46Yxbd68mU2bNhUNF0mSxAO9SZMm3LJlS5bx/v7+HDx4sGi4SJLE06dPs1KlSnrJooYk56eMGTNG9KYlSeK8efPYtWtXOjs7G22okukvriFDhojetAx2HDVqFH18fIw2VMn0/JTmzZuL3rRCoWDp0qU5evToPwICz507x/Lly+v1puV626NHD86aNSvL+IULF7Jz586i4SJJkhhRq1q1Ko8dO5ZlfPfu3env7y/Ix5IkcceOHWzYsCE9PDz4+vVro7Ey/TwgIEAPEDh27FgOGDDgj8micn5Kr169OG3aNBHfqFEjBgYGZtlQJcknT57Q09OTNWrUEORjhULBwoULc9iwYcJd2pj27NnDevXqsVChQoJ8LJO0W7duzdWrV2cZHxQUxP79+9PNTdtAkyRJEKZ9fHxEnosxNW3alIGBgaxcubKot2TmPJds/TP1fyrp9n9C/7QGy9y5czlw4EDxWZIkjhgxgjY2Nn8kAicmJjJv3rx6NGaSrFKlCn18fP547Hfv3tHCwoKnTp0S8SqVivnz5/+XekoHDx6kpaWl4NpIksSIiAjmzJnzX2KHjBo1ilZWVnpE4Nu3b9PCwoIPHjz4Y3z16tVZvHhx8VmSJC5dupQ5c+YUCYjGpFarWaBAAWFxL5ddp06dWKBAgT8SgaOiopgzZ04xLSfHFy9eXI9SbEz379+nhYUF7969K+KTk5NpZWUlVuZkpZUrVzJnzpx6RODPnz/T0tIyS0aUrK5du9LBwUGPZH3ixAlaWFgYnA7JqJIlS7JatWrisyRJDAoKYr58+YziHmSlpKTQ2tpaTG/IZVe3bl0WLlz4j0Tgr1+/0tLSUjCiZCKxs7Mz27Rp88dzP3v2LC0sLETnS5IkxsbGMleuXFy4cOEf4ydPnsy8efOKaR9JkvjkyRNaWFjw2rVrf4xv0KABPT09xXVKksSNGzcyR44cWTZUSW1j18XFhS1atBDbJEli3759qVAo/miBHxcXx9y5cws0g1z2ZcqUYYUKFf547s+fP6eFhYVgYcnxuquasvXP1f+qNX+2/nsVFhaGlStXYvr06WIbSdy9exd58+Y1aP+tq0ePtL4nt27dEq6bcXFx+PLlC379+oWIiIgs4y9cuIDChQvjwoULYtu7d+9gZmaGx48fQ61WZxENXLp0CZ6enrh06ZLYduPGDbi4uODatWtZxpLEvXv3YGVlhWfPnont58+fR9GiRfH3339nGR8fH4/Pnz8jMjJSz3Xz+vXrcHJyMmhbr6v379/DxMQET5480Rp1QZsU+uTJE5iYmODjx49Zxt+8eRPOzs561/nz509ERkbi06dPIsHTmP7+++9M1/n06VNYWVnh7t27mZABGXX9+nU4OzvrXefFixcz3Q9DUqvVePJEawL2/v17vfgiRYro1QdD+vXrFyIjI/H582dhmEYSt27dgq2tLR49epRl/PPnz5EvXz6960xKSsL79+8RFxeH8PDwLOMN1bvPnz9DpVLhxYsXBpEBujp//jyKFCmi57R7+/ZtFCxYEDdu3MgyVr5Oe3t7PHz4MMu/aUjJycl4+/Yt4uPj9dAIV65cgZub2x9/N1+/fkVaWhpevnwpHKZJ4uHDh7C0tMTr16+zjL979y4cHBz06k1UVBTCwsLw48cPxMbGZhlv6DozuktnK1v/kv4bG07/Y/onjbD06tVLeITIypcvHxs1asRjx46xevXqRnub8tLLv//+mzVq1ODRo0cpSRLHjx/PMWPGcObMmRwyZIjRY8vLm1+9eiXyPSRJYpMmTbhjxw526NCBa9euNRov+3K8ePFC5HsoFAoWLVqU9+7do6+vL2/cuGE0XvYIOXHiBKtUqUKNRiOIwCEhIYIwbUwTJ07k6NGjOWfOHDFCZW1tzVKlSvH27dsCXmhMskdI586duWrVKkqSxJUrV7JLly7csmWLIEwbkuzLcffuXZHvIUkSBwwYwHnz5nHUqFGcPHmy0XjZl+P169ci30OhULBy5co8efKkHmHakK5du0ZfX1/evXuXRYsWZUpKCu3t7enm5iZIzc+fPzcav2bNGnbs2JHbt29ns2bNSGqJwPI0g+x1Y0yDBw/m7NmzGRgYKCCNVlZWrFWrlpguMjZCpdFoWK1aNR47dowNGzbknj17KEkSp0+fzmHDhjE4OFgQpg1JXt4s17+nT59SkiS2bduW69evF143xvTmzRt6eHiI64yMjKRCoRBQQdnrxphk8vGFCxdEvoc8Hfb69etMy5kzSiYfL1myREyn29jYsHjx4nzw4EGWQFKSgnzcp08fBgdrl2Hny5ePrVu3Fl43xp4ZulDRChUq8Ny5c5QkiSNHjuTUqVM5YcIEBgYGGj22PI0bEhIipowVCgVr167NgwcPGo3L1j9H2VNC/6HS9QiJS05j78136T3xNAt0XcCr95/pUXcNafPmzeKleubaPbr3W0XXUQfo1nkmw35FMjExUTzQDcnf31+8VGet3c3CI3fSdeQ+Fu8yiRqNRo+6m1EZPUI6jF3IomMP0WX4LjYaqs1f0KXuZlRGj5CyPSez6PjjdB60maMXaD1+Fi9eLKi7GaVrIBcbn0CPTlNZdMJJOvZewZ3Htd4ZvXr1MpoDpOsR8vTNR7r2WEjXUQfo2mMhn735mMnrJqN0PUJ2HL/AQoM30NV/Pz06TWFcQmImr5uM0vUIGTV/PYuM3kuXkXtZrqf2fjx79sxoDpCcgyG/VBsOmcmi447QeegOdhyrfYHpet1klK5HiFqtZvEuE1k06ASdBqznnPXauqbrdZNRuh4hYb8i6dZ5JotOOMmC3Rfx7HVt3k6LFi2M5gDpUr6v3HtKtz7LtWXfdTa//FCKxuC9e/cMxgcFBYmX6uKth+g1fBtd/fezSKdJTEtLy+R1k1G6HiE9Jy1h0TEH6TJiN+sMnE4ys9eNrjJSvqv0mcqi44/RefBWDp65iqS2MWgsB0iX8p2UnELPTpNZdMIJOvZZxfUHTpPUNgaN5QBdvXpVmNm9+fSNrt3mseiEk3ToPJf3nr3O5HWTUatWrRJToIf+vk6PgWvp6r+f7p2mMSomLpPXTUbpUr4nLN3KwqN202XkXvp1m/THabxs/TOUPSX0Hyj+Bq0tWrQIFhYWWPz3G1wIUSIpTY0cTsWw9XmSgLQFBQXpQdoA7Vp3XdDa9hA1aOcKE4ucgEspbL+vFJC2kSNHZppeCAkJwZEjRzBmzBgAwEGlPVJzWMMkR24kOFfEiaehcHV1Ra9evfSmq2QdO3YMarUarVu3xo/oJNw3LYZkWMI0lxVe5fHDm/A41K1bFy4uLti2bVum+IULF6JJkyYoXrw4rr39iV8OFZCsMYGZlYTTcU5ITlNjyJAhuHPnDu7du5cpPjAwEJMmTYK1tTX2PgyDxrUcklWEheSOXR+1vh+zZ8/GokWLoFQq9WJVKhVGjRoliMBbHsXApIA3TCxywqSANzY/ioGpqSmWLl0Kf39/MV0kS6lUYsmSJZg1axYAYNcHC6jzFYCJZS5oXMtjz4NQ2NjYYOLEiaJ8dXX37l3cv38fgwYNQnKaGmfinZFingemOfLgp0MFXH/7CyVLlkSjRo0E8VlXW7ZsgZubG+rUqYM34XF4nbcUkmkOszw2uGfqjbCYZLRp0wapqak4fvx4pvjp06ejd+/ecHV1xclnYUhwroRkNWBuUxAHwrQeHWPHjsWhQ4cyTS/I9XbevHnImTMntt0PB1xKIVlFWBYsgm2vVOL+Tp06FXFxcXrxiYmJCAoKEkTgbS+SAYWHtuydfLH1wU9YWloiODjYIEn7w4cP2LFjByZOnAgA2P/DGmm57GBimQsprhVx+HEoChYsiCFDhmDy5MmZrv3s2bP4+fMnOnfujF/xKbihLoJkkxwwzZkP763L4Nm3GFSpUgUlS5bE+vXrM8UvW7YMNWrUQOnSpXH3YyS+K8ohWWMKs3z2uJjsjrjkNPTt2xchISEGp3bGjx+PwMBA2NvbY/+jUKhcKyBZBVgoXLHncy5xf9asWYPv37/rxarVaowcORJLliyBmZkZtjyMhIljCSSriJwuJbH5abxRICmg9YCZO3eugIXueGsCjbUTTCxzga5lseN+KPLmzYsZM2Zg9OjRmc79yZMnuHjxIkaOHAmVWoPjUQWQapEPpjnyINqxIi68UmaKyVa2stL/iHHcf7f+CfDDXbt2YdeuXQIS2WvDDVx6Fy32qyM+I+XoVAAwaEKlC1oDgBytZ8PMpqDYn/b2BtKubTAIaQP0QWswM0fuHvoP59S7e6F6fsYgpI0ZQGsm9u7I1WKKXnzy2WBovj/PBGkDkGmbWeHqyFG9t1584u6RQFJMJrAjgEzbzCt0gmXJBiJWkxSL5N0jtH8nA6QNQCYzO8u/AmHuWFzsV/14idQzCwDom7TJymhml7PzMpjmTP/7ac/PIe3uboNgx4zbTHLZIFenxXrXnnJtE9Rvr2UCOwLItM3UsSRy/qX/ckk+Og2aiE96MEC57DLCHs1L/gXLCh30y35rP0Ct0jNpE+eWAfZoUb0vLAqngyE10aFIPhQEIHMdBZAJ9pijxTSY2buml/2Hu0i9vBoAMoEd5W2Wlpa/74cJcvVcDxNTHVO/B4egenI8Ux2Vy14P9mjjhNytZ+qX/fllUH95ZLDeZjSzM/WoiJy1B+rFJ+0fA8b9NFhvM8Iezcu2gaVfUxHLtGQkbR+k/TsGDBeTkpKQmpoq7odlvZEwd/UT+9Xh75ByUtuINmS4mPE5krN9MEx1wJBpIZeQdnOb0Xqr9xyxzI3cXfVJ3dNblED3yu7I1j9b/+vww2z91yohIQETJ07EokWLkJKSgvnz5+PCVv2etNn3p+jRowfevn2L79+/Q6FQ4MGDB1Aqlbh16xby58+P8PBwvH79Gp06dYJ56NP0YBJmP55i/Pjx+P79O+7duwcHBwd8/foVSqUSW7ZsQfny5RETE4M7d+6gRtUqMFe+EuEm6lTkjHqPFStWQKlUYufOnahUqRKUSiWUSiUCAgLQr18/REZG4tSpU/BU5IJ5YjrK3iwlBgUtU3Do0CFERERg7Nix6Nu3r4j/66+/sGLFCvz8+RObNm2CVeIPmKqSRbx51GeUK1kE165dQ3R0NBo2bIglS5ZAqVQiNDQU7u7uuHjxIsLCwjBjxgxYhL0AmO74aR76DC1atMDz588REREBV1dXnDt3DkqlEq9evYKtrS3ev3+Pjx8/YtCgQTD7rlN2AEy/PcHgwYPx6dMnvH//Hra2tggJCYFSqcTZs2fh5uaGyMhIPHumPY75D92y18A87AVmzpyJsLAwXLhwAYUKFUJoaCiUSiUWL16MRo0aITo6GlevXkWZEl4wj/qcfmxVMqwSf2DTpk34+fMnli1bhkaNGomy6927N8aNG4eIiAgcOHAABSyTYZaSniRpnvgLnlJunD59GpGRkejbty8CAwNFfMWKFbFr1y4olUosX74cOaPew0Sd3hM3D3+JWtWr4e7du4iJiUG5cuWwbds2KJVKfPnyBQ4ODnjw4AG+f/+O8ePHwyz0mRbaKZ//j6fo3LkzXr9+jfDwcOTPnx+3b9+GUqnEgwcPYG9vj+/fv+Pt27fo3r07zH7ou1+b/niKgIAAfP36FU+ePIFCocDHjx+hVCqxd+9e+Pj4ICYmBg8ePEC9enW1916WRoUcEW+xePFiKJVKHDx4EH5+fggPD4dSqcSkSZPQtWtXREVF4dy5cyjmZAvz+PTkXrPUeChM4rB3715ERERg6tSp6NKliyi7li1bYsGCBfj16xe2b98O27RfME1LTC+72O/wKeSES5cuITo6Gi1btsScOXOgVCoRFhaGIkWK4PTp0wgPD8fcuXNhqXwFaNKT2s1Dn6Fx48Z48uQJIiMj4eXlhWPHjkGpVOLt27ewt7fH69ev8fnzZwwfPhymGcvu+2P069cPHz58wOfPn2FnZ4dnz55BqVTi8uXLcHR0xK9fv/Dy5Uu0bds2wzNDA7MfzzBlyhSEhobixo0bWiDp9+9QKpVYs2YNatasiejoaNy8eROVy/rBPCI9WTtvDnPUKCwhW9n6f1F2g+X/siI/Ag+3Y+/84WjVqhVevXoFX19ffPjwASvH9ELeB9vQt5o7XH9cQlDLMsiZMyf8/Pxw6NAhjBkzBmumDAIebsPyiQMxefJk7NixA35+frC3t8eI2p7wjLiFvlXdYHlrPdZNGYpnz56hVKlS+PHjB+rWrYvDwSOgurcZiyaPxJw5czBp0iTUqlULjRo1Qm2L96icMxTdyjpAfXYBti2fh40bN6JmzZooUqQI4mJj8GDHVERfWYPt61dgyJAh6N27N7p3746J48dCeroDjV2BlkVyIveN1Vg4ezqGDRuGjh07omvXrjh2cA/C/16G14fmIOTFM1SrVg2NGjXC/PnzsXH5AmjOLUBHPzvUtI1B6dib6Na1Kxo1aoRRo0Zh6tSpWDZ7AlJub8S5lYHw9vaGWq1G2bJlcenSJWxZMAEml5ahV2UXlEx+jp4lc6Fo0aIoV64cVqxYoZ0aChoIPtiKzTMGY8CAAbhy5Qp8fHwQHx+PuX0bQ/H6KPpV94Di9RHM798UsbGx8PHxwbVr19C/f39smTEEfLAVi4IGYs6cOVi2bBnKly8Pb29vdC+eAz4pL9CrsjNMLi3D1oUTcfHiRZQrVw4kUbhwYfy9agySb23E8jkTMWXKFIwaNQpNmjRB927d4Bd9HbXsYtHR1xaac9rymDdvHho1aoQaNWrgxdPHeHNoLsLOLcWJw/vQpUsXdOjQQTulOHcmcl5bgZZFcqKxK5D/2U4EjQ1E165d0adPHwwdOhTb1y1H9JU1eLBjKhLi4+Dl5YUaNWpg8+bN2L5iPtRnF6BbOQdUyvkDdXN9RoMGDVCzZk1MnjwZc+fOxcJJI6C6twWHg0eifv36+PbtG0qVKoXnz59j7aTByHFnA/pWc4fnr5sYVa8w7OzsUKpUKezYsQOTJk3CiokDgIfbsHryQIwbNw4HDx6Er68vcuXKhXHNSsEt9DL6VnNH7vtbsXJsb7x//x6+vr548+YNWrRogX0LRkB9fysWBA3BvHnzMGPGDFSrVg01atRAYzslypt9RvfyBaE5twDbls7Cnj17ULVqVRQsWBBmZqa4vWUS4q6txcYVCxAQEIABAwagQ4cOGDVyBJzfHEBDxzS0KZYH5peXYvmC2QgMDESbNm3Qtm1bnD9zAt9OL8bHYwtw99Z1NGjQAM2aNcPUqVOxdsk8mJxfiPYlrVFXSoR36DkMHNAfLVq0wLBhwzBhwgSsXjgdiTc34PK6cShQoABy586NChUq4OTJk9i2eDp4fhF6VnJCKfUbtHNLRZkyZVCxYkUEBwdj3rx5CA4aDM2Drdgxeyi6du2K+/fvw8fHR9v4HdYe1s/2om81dxT8eBrTu9SCSqWCj48Pzpw5gxEjRmDDtMHgg61YEjQAM2bMwPr161GmTBm4urqif3kFisU9Qp8qrjC7tgqb54zB7du3Ubp0acTGxqJcuXI4uWw00u5uxpJpgZgxYwbGjRuH+vXro02bNqiU+hjV80VgUC1PHBxUBe6KPH9+BmYrW7r6r0+h+Z/Xf2TSbegzcpaTsLJe2bUYa9asyUePHlGlUrFMmTK8dOkSSS2kTV518+HDB7Zt25ajGxcWNtwpE604qJ6XIPLKNvmyF8rJkyfFqpt79+6xSpUq3NSzWLr9epAt6/q5CiLv48eP9UBrsi+MRqPh8ePHWbRoUV4b4SXiv451YAlPZ0Hk3b17Nxs1aiQuVV51o1KpuHbtWhb2cOG7QEcR/3CUO708tURejUbD8ePHc+zYsSTTIW1Xr15lfHw8J0+ezIrFnPlrfLqF+aEB3oLIS1KsaiKp57IaFhbGvn37slNVD0GiVk+24sw2RQWRNzk5mUWLFuWjR49Ikg8fPhSrbl69esVGjRpxZpuiwj4+aaI1O1ZxF0ReOYlS9kLRXXVz9epVli5dmocGeItz/zXenhWLOXPKlCmMj4/nlStXhGkfSQYGBjIoSAs/3LNnDz0LefDhKHcR/y7QkYU9XLh27VqqVCquWLGCXbp0IalNhP7rr7+4Z88eQfIu4enMb2MdRPy1EV709vbmiRMnqNFoxKomUgszLFy4MJ8+fSpI3nX9XBkblA7G3NSzuCDyym7Dp09rk0XlJO3IyEhB8h5Uz4upk9KxB/6NCrNdu3b8+PGjsMCXvVB0V93IJO+VXdPrbfwEGzYq48oRI0YwMjJSrG6Lj48nqXVZlVfdyCTvC8PS4YqhYyX6ejlx/vz5TE5O5pEjR1irVi2RLCqvulGr1dy0aRMLe7gyJMBZxD8b7UqvQu7csWMH1Wo1p0+fzuHDh5PUJkJXqFCBZ8+eZWJiImfMmMEyRZyoHKcQ8ScHF6Wvr68AKsqrmkgyOjparLqRSd6tK7oz8TeJmlOsuLCDN+vXr8/nz58L08Zbt26RpFgZlpiYyDdv3rB58+ac0LwIVb/LPnmiFXvWLMQePXrw+/fvDA8Pp4uLC8PCwkiSBw4cYN26dbVQx98k71190uttVJAdq5VwZlBQEOPi4njnzh1h2petbOkqe5XQf4JOBuhTcWe4iQflhg0bhOOmLF3WDUlGLa6iFx+xrI7YN3z4cOG4KatRo0aCY6PRaJg8rYB+/N5hYl+tWrWE4ybJTByblJ8f9WI5xYox17QPWtlxVXbcJLWmXq6uruIlHvfwUKb4xE/a1SSys6yuBb7suim/xCOPTdYnEk+xoSpVu1z51KlTwnFT1rJly/Q4NhHrWumf+9ySYp8hVlO/fv0E64YkY+eW0C+79a3Fvq5duwrjOFL74tLl2KhSk6meYqMXH3l8inZfBp4Tqa37rq6ufP/+PUky8eO9TGUX90h7r+TG2devX0V8Ro5N9NV1meJTfmlXLhliNWXk2ETsGaIXmzytoNi3c+fOdJ7Tb+mybkgycpk+zTlqcVWxb+zYsZlYTa1btxbOuxqNhokzXPXLfkdf8V3dOk5mZt2kRodluvboi8tIZnaXJrXIABcXF4aHa23m45+fyRSf8EbbSNbjOf2W7DAtv8SjzszJFJ+WqK3nGes4Sa5fv17vORCxqZP+fZ9dRJS9IVbT8OHDOX36dPE5ekEZ/bJblc7VyljH5eeAjMJQq9VMm6pPwo44NEbs0+U5ZStbuvo/R2v+79Z/ZNLthenAtfQ8FZlqywz0W1nydjm5clujNPzlkZ6nIVNtjRGBM26/3zUFrjpFKVNt5STKjERg3e02OYiXvVJhrjPh2PWkOc59NsuURClLlxRcsYAGx1unG3lpCFTYYYkvcSYGEysB6JGCe5ZQY37N9JU6sSmA10ZtArEhInDG7fNrpKFnycxUW2NU2ozJlSdapaJCwfSflUy1NUYE1t9OvOuTCqv0fGeMuWKOLS+ME4F1t7vmI+5301/t0fSQBe6GmeoRs3Wlm1zZ0F2N7Y3Ty06lAYpttkRMiokeMVtXuqRg/7IqjK+YnmfxJRYotyOHUSJwxu3rGqShpVd62Z/5aIrup//1epuRQr7ovhnm3jU3SrKWk11tbW2Ry5x420ef5tz3rDmOvTczmIwN6CdpG6KQV91tgbdRpgaTsQH9JO2MFPLENMBzgyXUNNEjZutKd3tGCvkTpQnqH/jzM0PenpFCLhPc/7V6m5lCjgazgCpDsWPHDuzdu9fgCrRsZev/FK35f0L/iSMsqvgIPh8uaVewR3UAAKFrSURBVHvYY/Lx0xVtzzAwMFDY6mfU5s2b2apVK5Jk1Nu7/Dbampxixc+jbBj7+ekffVr8/f05ZcoUkuTbs+sYF6SNfzrCgZqkGAFaMwSmlH1WZDOoOyv7C6LxrUAf8g8+LRl9Vm5MqPJ7SiYfb87X9iIvXLhg1KdFZt1ER0eTacl8MFLb004Mysfn+7X230uWLDHq03Lu3DlWrFiRarWayb8+880I7bRG2Oi8DH98jiTZu3dvoz4twcHB7NtX25sPe3SGyjHasnsz0o7Jvz6LKYDz588bjO/RoweXLdP25p/vmy2mpB6MdCXTkvWmADJK9lmRpw5uzGsjpqRuTNCOUDx//tyoT4vss/LlyxdSo9HerylWTJuUj3dXaQ32Dhw4YNSnRddnRZMUw6fDtVNKMePy8f05rUfO5MmTjfq06PqsxH5+ws+jtCNMn0fmZdQ7LYagZcuWRn1agoKCOGaMtjf/6fIORo/Tlt3z4RJV8RFMSUlhsWLFjLKamjZtKqYIH6wfybTfNOk7o71JtSpLqKjssyJPEV6fUkeMMNyYqR1NunHjhlFWk67PClWpvOdfSDuVOCEfH+/Q/s7Xrl1r1Kfl6tWrAkiaGvWDISO0oxw/A/Px+x3t6MeQIUOM+rSsWrVKTBH+enGFYYHaa38/0paJoW+o0WhYo0YNoz4tAwcOFFOEr44uZoI8JbWpMZmayLi4uD+ymrL1z1b2lNB/gNavX88O7duR0d8o2eZj48aNheOmMdCa7GR74cIFDhs2jLOmT6Wfh4ITxo/h2LFjheOmMcMmXfOymjVr8sThffRxV7Bpk8bcuXOncNw0JtlJ9NevXyxUqBDfPnvA4q724oHesWPHLHlBsuumnJMTF/aBhQra0tXVleHh4X90wp0wYQIDAgJ+k4+rUBPznY4KK5YqVYqhoaF/dMJt1qwZt23bxrlz53LQwP5k9DfaWedl165def/+/SydcGXzsgcPHrBLly5cs3IZfd0VHDigH+fPn8+tW7fqsVwySnayDQsLY6lSpXjj0jmWcLVnlSranI/Ro0dz0qRJRuNlJ1t5muL7u+cs6mwncj7q16/Pffv2GY1fvXo1O3XqxEePHmlzciK+0NXBhoUKFeKvX7/o5eWVpRPuoEGDOGfOHO7YsYPNmzUlY77Twc6KtWvX1jPtMyTZyfbEiRMcM2YMJwaNJaO/0ipvbg4fPpx///13lk64snnZ69ev2bBhQ+7ftY2+7gq2a9uGGzZs4KJFi9irVy+j5/769Wt6eHjw58+fLFy4MJ8/uMXirvYsWbIkb9++bdBdWlfHjh1jjRo10hvk39/Ry0nrwPzjxw+WK1fOaEOVpHCYFuTj6G90lqxZvHhxKpXKPzrhtm/fnmvXruXSpUvZs0d3Mvob7a3zsk2bNuI3acwJV3ayvXHjBvv27cvFC+fT113BUSO108ayu7SxZ4bsZPv9+3dWrFiRF84cp4+7gvz9/YkTJ/5LnKts/XOV3WD5N5fcm5ZdTxUKBatWrcoKFSoIx01junHjBosUKSJ60zKkzc3NjR4eHn8EBK5Zs4ZVqlQR5GNJkoSttpOTk7YnmIWGDBnC2rVrC/KxJEk8evQoS5UqRV9f3yxBa7LrZqVKlURvWpIkzpgxg7Vq1RKOm8YUFxdHNzc3FipUSLieSpLEdu3asUaNGpwzZ06W8W/evKGzszOdnJxEb1q2YPfx8fkjRfzEiRP09fUVrqeSJFGpVNLZ2ZnOzs58+/ZtlvGzZ89mzZo1RW9akiTevXuXXl5edHd3F8mixtSxY0fWrFmTM2fOFPGbNm1ipUqVWKNGjSydRVUqFX19fenn5yfIx5Ik0d/fn7Vr1+bQoUOzPPbPnz/p5OREV1dX4XqqUChYt25dVqlShevWrcsy/v79+yxUqBDd3NxEg1yhUNDT05NeXl68efNmlvFbt25lxYoVWa1aNVFvP378SGdnZzo6OjI0NDTL+ICAANauXVuQjyVJ4rlz51iyZEl6e3tnmSwqj1xWrVpVkI8lSeLChQtZo0YNMeppTPLoYpEiRQQIUZIkdu/enbVq1coS2UCSnz59opOTE52cnAT5WKFQsGzZsixdurRwlzam8+fPs1ixYqJBLkkSIyMj6eLiItANWWnx4sWsXr06mzdvLs6dzDDqma1sGVF2g+XfXBl705IkccWKFcyVK9cfqbYajYYFChQQ0xPyw6NDhw50c3P747Hj4uJoaWmp12AgyWLFirFhw4Z/jH/06BHNzMz48uVLEa9SqZgvXz5OnTr1j/GrV69mzpw5xXVKksTv37/T3Nw8y16qrM6dO9PFxUV8liSJp06dorm5+R9fWqSWKFyvXj29+KCgIFpbW/+RxqxSqWhlZSVYObpE4X+FhB0aGkpzc3OePXtWL97Z2TlTwqQhnT17lubm5uKlJUkSExMTmSNHjn+JhD158mRaWVmJRqUkSXzx4gXNzMz45MmTP8Y3aNCAJUqUEJ8lSeLmzZuZI0eOPza2SNLV1ZWdOnXSi+/duzcLFCjwRxv3pKQkgyTs0qVLs0aNGn889qtXr2hmZiYa9DLN2dbW9l8aIdi2bRstLS1FY0uSJP769Yvm5uY8evToH+P79etHBwcHPRrzlStXaGZmZhTXoKty5cqxatX0BGVJkjh79mzmyZPnjytzNBoN7e3tM5GwmzVrxiJFivzx2JGRkbSwsBDEbzm+bdu23LBhwx/js/XPVnaD5d9Y8vC07gNeoVCwRIkSbNasmdEcCllHjx5lxYoVxYoESZIYFhZGZ2dnlipVyijrRtaMGTPYqlUrlilThiqVipIkCTBgVqwbWe3bt2fHjh3ZvXt3ktqH18aNG1m/fn2jORSy0tLS6OPjw+bNm3PhwoUifsSIEWzfvr3RHApZ8vB0mTJlxIoEGbTWrl07MepjTDIY0NXVlR8+fBDxhQoVYt26dY3mUMjavHkz69WrR09PTyYkJFCSJLGqqWjRokZzKGT5+/uzffv2rFOnjhglOH36NMuWLZsl64ZMzyFq37693otn/vz5bN68udEcCllyL79evXrctGmTiO/WrRs7duxoNIdCltyblgGPpLbsSpcuzVatWhnNoZB17tw5li5dms7OzmLVjb29PZ2dnVmhQgUx6mNMCxcuZLNmzViyZEkxuvXo0SN6eXnRzc3NKOtGVo8ePdixY0e2a9dOXPuuXbtYq1Yt7fSkkWlYMj2HqFWrVpwxY4aIHzduHNu2bStGfYxJHs2oVKmSWHUjSRIbN27MDh06iFEfY3ry5Ak9PT3p5ubGkJAQktqyL1KkCP/66y8x6mNMe/bsYY0aNcTqO0mS+PXrV7q4uLBkyZK8fv16lvFBQUFs27atsEaQJImXL18Wz5BsZSsrZTdY/o3VtGlT7ty5kyQZk5TKW+9/0aqgB7t3755l8h9JPY+QadOmsf/wADr4VGO3fkO4YMEC3rx5UzzQDUnXI6RNmzacv2oz85esyvJVqvPs2bNct24d27dvb/TcZY+QpKQklihRgnvOXqdUvBLd3D348eNHDhs2TExXGNLKlSvZtWvX354Prvz74TvaFy5DT09PxsfHs2bNmln2VmWPkDt37rCYjx+vvwmjjas369SpI5L/5Ad6Rul6hGzYsIEt2nXmzXe/mFdy5siRI/W8bgwpNjaW7u7ufP/+PUeMGMHAKbPp4FONzdt25KZNm3jq1ClWrVrV6IsrJCSEhQoVYnx8PGvXrs01uw4zf8kqLObjx7t37wqvG2OSPULi4+NZqFAhHrn6iFKxCnRx0eb/yF43xiR7hLx//55u7h68/PwL7Qr5smTJkkxOThaEaWNq164dN2zYwDNnzrBC1Rq8+e4nrRw92a5dO/769Yuurq5i5CejdD1C5s+fz+79h/Lmu1/MY1+Q06dP1/O6MSRdj5CuXbtyxuLVzF+yKqvXqc8jR47oed0YkuwRkpSUxNKlS3P78QvMX6Iy3T29GBISwjFjxohRM0PatGkT27Rpw4iICLq6uvLMvRAqipaju7s7Y2JihNeNMcnk48ePH9OraDFefx1KG7dirFKlChMTE4XXjSFpNBrWrl2bhw4d4s6dO9mwaSvefPeL+Qq4ccCAAXpeN4aUkJBAT09Pvnz5kuPGjePwsZPp4FON7bv14sqVK3nx4kWjie4k+eHDB7q5uTEmJoaNGzfmss17mL9kFfqVLZ9lfclWtmRlN1j+TXX69GnhEfItKpGVZ5+n29gTdA04zK2XtAmP8+bN44ABAwzG63qEXH31nW6jDtBt7Am6+e/jvQ/aRk6XLl30fEB01bVrVy5fvpwkuer0Q7oGHqXb2BMs7L+L4TFJBn1AZGXc13/lKe2xx55g+bG7mJymEoZ13759yxQvP+y/fftGlVrDmpP2iPi28w+TNOwDIkt3X3RCKouN2qktuzHHOHOftoe4Y8eOTD4gsnbu3MnGjbW+EyE/ounurz2+y6iDPHZP63GS0etGV+PGjRMeIcfuvafr6EN0G3uC7v57+DpUWy8bNWrE3bt3G4xv3Lix8AiZvvc63cYco9vYEyw+eiejE1Mzed3oKuO+NvMOibKrOWkPVWqNQR8QWbr7ktNULDd2l4gfsEpr8pZVj1l3X3hMEr38tfGugUe5+swjklqvG3nULaN0PULuvg+nm/9+bdmP3MfrIdok6b59++r5gOiqXz9tYjNJbrn4TNRbT/9d/BqZkKUPSMZ9I9afE9deOnAnE1NUwrBOHnXTle4+tVrD+lP3ivhms7S5Ixm9bnSluy8uOY0lR+8U8UHbL5MkDx48qOd1oytdH5wPyjh6jNytLfvRh7nvhnZlTkavG11NmzaNI0aMIEn+/fQz3UYf/F1v9/LZV20jp3Xr1mLULaPatGkjfHAWHrlDt0BtvS06aicj4g03MLOVLV1l05r/DZWWlobRo0dj6dKlMDExwabrH/EjRsvLMTGzwLo7WobJiBEjcOnSJTx+/FgvPiwsDMuXL8fMmVo429rrXwGL314llrmx5qqWPyPTVyMiIvTib926hcePH2PgQC2cbeP9XwISl2pphe23P8PMzAxLlizBiBEjoFar9eI3bdqEwoULo0aNGvgZl4KzX9K9NJSwwt8vw2FnZ4exY8di3Lhxma5/6tSp6NevH5ycnHDrfQQ+pab7tNyLsMA7ZTxKlSqFWrVqYenSpXqxJDFy5EjMnz8fOXLkwP4HX5FooQW+mZiYYuuTWGg0ROfOnREZGYnTp0/rxeuymgBg3bVPoKX2+KYWObD2lpaCO2HCBOzatQsfPnzQi3///j327NmDoCAtxG/Nze8wMf8NgbPMi3XXPgIAFi1ahAkTJiAxMVEv/tSpU4iJiUHHjh2h0RDbn8QCJtqfZoK5Nfbf/4ocOXJg/vz5BknaS5YsQZ06deDn54d3yjjcj0z3SfmUmhe3P0TAxcUFffv2xbRp0zKV/bhx4zBu3DjY2dnh3Itw/ES6F8KZz2r8ik9BzZo1UahQIWzZskUvNiMReOutT0iz1MabmJphwz0tM2rgwIF48OAB7ty5oxcfERGB+fPnY86cOQCAtdc+A5ZarxLTHLmx5voXAMDMmTOxdOlShIeH68U/evQIV65cwfDhwwEA6+4oRb1VWVph681PgqQ9atQopKXp+6Ts2rULkiShYcOGiEtOw5F36R42kabWOPksFFZWVpg8eTICAwMzld2sWbPQpUsXeHh44OGXKLxJSrebfxqbE8+/x6BYsWJo1qwZFixYoBdLEv7+/pg1axZy586Nw4++I848HRy552UCUlRqtGrVCgBw5MgRvfjk5GSMGTMGS5YsgYmJCTZc/whNDq1PjIm5BdbdDgWgJZUfO3YMr1690ov/+vUrNm7ciClTtCDS1de/AeZaAyBa5sGaq9p6u2DBAkybNg2xsbF68ZcuXcKnT5/Qs2dPAMDmh1HAb5+XZAtr7L77JVN5ZStb//8o2zju/4iWLl2Kx48fY/PmzQCAPitO4sK39P3qWCVSDowFkJmAC+jTVknCov4oWLr6ivjUj/ehuqSlpSYkJECj0QgTLGagrZJEro5LYJrHRsQnPzgCzZOjADITiTMSgZkjL/J0Wa53fYl/Lwe+PsxMwEVmIjAdiiJPE/1GTcL+cTCJC89k0maoPEy86yJXla4ilqpUJG4dABOTzARcuTz428yOJMyr9kIO75oiXqV8j9QT2oagISKxrpkdSeRoNhnm+QuJ/SkhV6C+uQVAZgJuxvLQaIg8PdeJBg8AJN3cAYZcMEjSzkgJZt78yNN+nn7Zn5wLhL82SNLOVB6uZZC73jD9st85DCYp8QaJxBkpwaZ+LZCzbEsRq0mIRtKekTAxMTFIJI6Li4OpqSny5Mmjrbd1hsLSo5yIT/v6FGl/a+nUGc3bMpYHSeRsNx9mVvlFfPLjk9A8PABAW2/Nzc2FcV7G8tCYWSJvj7V61550aQ348Y5BInHGegtFIeRuPkm/7A9PAqK+GSRpp6SkCDM7ExMTmHhVR64a6RRyatRI3NofJtQYJGnrlgdJmFXsgpwl64t4VcRXpB6drC2H5GQkJyfrPTN0f8ckYdloHCwcvUV86ttbUF1bp60DGQwfM9ZbksjVbRVMLdOd4wIbFsWQ2l7IVrayUjat+d9Mv379QnBwMGbPno2QkBA0btwYzw+tgGlSNACAahVKqt/BxsYGa9euRVRUFGrVqoXVq1dDqVTi9OnT8PDwQGRkJA4ePAgXFxeUxGcwLUl7gNREFNN8hoeHB44dO4Zfv37ByUlLiVUqlVi4cCGaNGmCqKgoLF++HFZWViiuegv+JsOaJUXBKfEdqlSpglu3biEkJAR2dnZ4+/YtlEolevbsiQkTJiA0NBTjx49HTqTBLfGNuL68SWGwiv+Edu3aISQkBGfPnkXhwoURFhaG8PBwlCtXDnv37sW7d+/Qo0cP5En4Dtuk9NaaY9JH5EqLwYgRI/D161csXLgQLVq0gFKpxOfPnyFJEh4+fIiHDx+iXr16yB//HpZJv2nQ1KBo8ivkyZMb8+fPR0REBLp164YJEyZAqVTi3r17UCgU+PHjB86dO4cSJUrAK+0jkBKnDVeloiQ/IX/+/NixYweio6Ph6+uLPXv2QKlUYvfu3fDz80N0dDS2b9+O/PnzwwefQJW2p26SHAevtA8oXrw4/v77b/z48QMKhQL379+HUqlEUFAQevTogYiICMybNw958+ZB0eQQQZPOkfQL+ePfo379+nj06BEePnyI/Pnz48uXL1AqlWjevDmCg4Px9etXDB8+HLlUsSiYmD4CZJv0Dbnjv6NHjx549+4ddu/ejfLlyyM8PBxhYWHw8vLC2bNn8erVK7Rt2xZWcZ+QNylMxLslvkFOpCEoKAhhYWEICgpCr169oFQq8ebNG9jZ2eHNmzdaIm/lynBKeg+zpKjfRa9GCdUbWFlZYcWKFYiKikLjxo2xaNEiKJVKXLx4Ec7OzoiIiMCxY8fg4eGB4vwCpP4egUpNQnF+houLCw4dOoTIyEi4u7vjzJkzUCqVWLlyJWrXro2oqCisXbsWNjY2KKl+D6q1brGmydFwTX6P8uXL49q1a/jw4QPs7Ozw8uVLKJVKDBw4EKNGjYJSqcTkyZOR28IUhRJDxLXnTgqHTdxHtGzZEi9evMDly5fh7u4uSNrVq1fHli1b8OHDB/Tt2xe5E8Ngn/RVxDskfUbOpF8YPHgwvnz5gpUrV6Jhw4ZQKpX49u0bHB0dcfv2bTx58gSNGjWCffxH5Ez6KeILJ71C7pw5MHPmTPz8+RP9+/cX5/v48WPY2dnh69evuHjxIkqVKgXPtE8wSY79/cxIQ0nNB9jb22Pz5s2Ijo5GxYoVsWXLFiiVShw+fBje3t6Ijo7Gnj17ULBgQfjgM5j2m4KeEo/Cqg96xGgHBwfcvHkTSqUSM2bMQPv27REREYFFixYhb968KJbyGtBo620hKQ86VXD9l55/2crWv6rsBsv/pl4eA/Z2xfP5jTC4d2csWLAAjRs3Rrdu3TBuWH+4vtiOPf0roZ/jD+RP/oYDBw5g+fLlqF+/PgYNHIhXW0ZAtbMDniztiHGBo9C9e3cMGzYMixYtQjVvRzRS38We/pVQM/4yGlUsjpkzZ6Jfv37o378/xgWMxJPFbZG2vT3e7h6HXr16oUaNGti0aROOHz+OvD+fY1ihSOzpVxH299dh5sQxaNWqFerWrYs1a9agT8cWeDG/IeI2tkL0nT0oVaoU/Pz88OzZM9y8eRMRFzdiQV1bbOvuh/hjs3Di6BE4OzujdOnSePHiBcq5W+Hjogb4sewvuFpEISoqCn5+fsiZMycunj+PiMOzsbFjMSxv6gTlySW4ceMGQkND4evriwIFCkD97jIi1zbD6/n10a5hVRw6dAhVq1ZF9erVsWb5YlhcWozdfctjnK8Kqpfncf78eRw7dgwVK1ZEq1at8PnYXKRsa4dnC5sjYPggjB07Fh06dIC/vz96tGqIUt+PYW//SuiQ9xWK2RAbN27E5MmT0bJlSwSOHoVnq3tBvbMjnq3ujYBR/mjRogWmTp2KzZs3o6iVGh3zhmBv/0rw/X4Uvdo0hr+/P9q1a4dx48Zh9LCBeLawOVK2tcPnY/PQokULVKxYEcePH8eFCxegevk3xpdSY3ff8jC7uAjrVi5F1apVUaVKFRw6dAht6ldGyPx6iFzTDPxwFQUKFICPjw/Cw8Nx48YNhJ9YjOXNnLGhozciDs/GpYsXkCNHDvj6+iI2NhbOZr/wY3kjfAyujwqFbPD8+XOUKVMGLi4uOH7kMOKPzcL2Hn5YUMcGkZc24ebNm3jy5An8/PxQpkwZRN3ejbiNrfByfkP07dwKK1euRL169dCmTRvMCAqA9HAD9vavhKEeEcgX8QrHjx8XJO/evXvjzc6xSNvRHk8Wt8W4gJHo168f+vXrh1mzZqFheW/USryKPf0roYHqNmoUc0JwcDCGDh2K7t27Y1zgKDxZ0gGqnR0QsnUkBg4ciHr16mH58uU4ePAgFImf0d8pFHv6V4Lzs60IGjkIXbp0QaNGjRAcHIxBPTvixYJGSNjcGsorG1G1alWULl0ad+7cwfXr1xF9fSdmV8+Nnb3KIPnkXBzYuxtFihRBuXLlcPv2bdT0ccG7hfURtqIR7JM/QaVSwdfXFxqNBpcvX8avI3Owvl1hrG7lDuWxBbh+/TpiYmJQsmRJ5MuXD5ZhD/FzVRO8WVAfTar64ty5c6hUqRLKli2LrRvXQnNuAXb2LofJ5UyQ+OAorly5ggsXLqBcuXJo2LAhvp1ZiqQtbfB8YVOMGNgbU6dORatWrTBgwAAM7t4ORd/vw97+ldDd7iPcLWKxY8cOzJkzB02aNMHIESPwfP1AqHd2xNMV3TAmYBTatWuHMWPGYPXq1SjtlActLZ5ib/9KqBhxFh0aVkNQUBC6du2KESNGYIz/UDwNboXU7e3x4cBUdOrUCVWrVsXevXtx9uxZmH+6hdHFE7BvQGWcGFYNdnks//wMzFa2/l/0X5c687+nf8uk2w9XyCnW6Tbe/W05efJkxsfHCwqu7H2RmprKEiVK8Pbt29RoNDx48CCnN3HUA41taqcQRN4vX77orQyQlzWHhYUxLS2Ny5cv586O+qCyCY1cePz4cWo0Gl68eFEvwfL27dssXrw4U1NTGRsby3HjxvHh4HQib9okK/ZrVEqYtWVMsNy4cSPbtGlDUuvoOqBHJ4aPSQf8RY+3Zt+OzURSY9++fcWyZpIcMWKEgDU+e/aMfZpVZsrE9HN/O8KGI4YPZURERKYkSt1VFKTWJGtkQ0+9az/Z3Y7z5s3TJuz+Nu2Tz0WGNb58+ZJqtZrbtm3j4hb59eIXt3AQRF6ZgisnWMrLmmNiYpicnMy5c+fyVA87vfgRDT154cIFktoES5mCS5JnzpxhpUqVqNFoGBERwRHDh/LtiPSyS55oxd7NqghcwpQpU/QSLOfPn89+/fppq9yHD+zToSljxqfXu/AxNhzYs7NYwZMxwbJbt24iEfvu3bvs95efQC5wihUfDLLl+PHjGRsbK2CC8rJmlUrF0qVL8/Lly4LkPbGRi9617+xoz+XLlzMtLS3TKjhdqrhKpeKaNWu4sa1CL35aY0ceOnRIUIN1V8E9evSIhQsXZnJyMuPj4zlp0iTe7J9eb9WTrTjorxKCYLx+/XqxrJkkd+3aJRKxw8LCOKhvD34PSC/7uCBr9mnbUBgCDhs2TCxrJvUTsV+9esXeLWrq0ZQ/jbLh0EH9+fPnT2o0GtasWVMsaya1idjyisErV65waIMietd+obcdZ86cycTERMbHx+utgpNhjY8ePRIk77nN9IGmq1prjQXVajXfvXuntwpOXtYcEaFFGwQHB/NQF/16G9jQXZC3te7SxlfBZStbxpS9SujfQRdn6/34NVNtyN9LB+fMmZPJe0GXdUOSqp36ZFbV8oriu506dcq0hHXhwoXs06eP+Kxa5KMfv1+7T6VS0c/PTzhuyurevTuXLl2q/ZCamIkqq7m2mKTW8VS26pYl+1RcunRJu+FrZqIw32j9YR4+fJjJAl+PdUNSc39L5vgY7WqSbdu2ZVrC+uTJE8G6IUn1idF6seo5ruK7AQEBmZaw7t69m3/99Vd62a1vqE/U3aA11NNoNGzYsGEmVpMu64Yk1bP1X9rqE1pjMmOsJl3WDWO+Zy77+1p/GENLWOUX18OHD7Ub3pzLXHbftP4whlhNeqwbkpqrizLHp2rL1RCrSZd1Q5Kqfb30691iX/Hd3r17Mzg4WC9+5cqVeg7Hacsq6Mfv0u5Tq9UsX758Jp+hAQMGcO7cub8LXq39nemW/UUtZ8oQq0mj0bBq1ao8deqUdkPos8zX/lLrD2OI1SQvdX/37p12w5O9meMjtCvQ9u/fL9ylZYWEhOh5MqnPTNQ/9xkO4ruTJk3K5DN05MgR1qxZU/xN1ZYW+vV2dU3xXUOsphkzZnDYsGHis2p+Yf3jHx5CUtuhyorVlK1sZaVsWvO/g14dB/amJ4Y+/2WCOvuME4EB/eTOgHIqjKmQvlJn/2tTDLlgIZIoM5JVAX0i8caGaWjmmb6SZ9pNM6x8bG6UCJzxvG51ToGnTfr+DsctcOmrcSJwWloa4uPjYWtrC/ucxN2uqcj3e8Q4WQVU262lMRsjAusmd5bJr8GpNmkw/V08YQlAme2WSFPDIBEY0E9K7lxMjSW106m4176ZoM0xS6NEYAB65zWzmgr9fdPLfu0TM0y6YZwIzAxE4kPNU1HNOf1nN+KiOXaHmOkRq3Wle16WZsCDbqko8HsxioZAo4MWeKQ01SNW60r3vFzzEdc7pSLnb1h1XCpQfoclIpNNEBkZqZcMLUv3vGq7aLC3WfpKm3dRQJXd6TTmjERgQJ+kPbSUCpOrpJfd8fem6HPWOBEYgN55raybhnZF0+vtvLtmCL5vbjAZWrfs5fO62D4VJRXpZd/jtDlOfzTLlAwtS/e8rCyJ+11TYfO7eFPVQK29FngXbapHrNaV7nmVtNfgXLs0QTH/mQiU22GJJJWJSP7NWG91z6t1YTXW1E+vt/fCTNDkUNbPDN3zmlhJheFl0st+2wtTBFyx0PttGip7+bx2NUlDPbf0skfjhUCFfliyZAmePXuGjRs3ZorPVrb+pGxa87+BkpKSOKupIxMXl+PJLnm4e7WWeNqzZ8/0kYwMevv2rYAffv74juvbSkxbXpHbWuXi3avn9eCHhnTixAnhunnlzBGe7uvEJ4OtuKqVgqHfv4mRDGOgtdmzZwv44ZbgSXw6xouPBlpxRjNXpqam6lF7DalTp07CIn7uoOb8Nr0E7/bPxxndtdbpe/fu5V9//WVwWFl35EetVnNKy6KMXlCaF3vm5aop2nOaMGECAwMDDR5bd+QnOjqawc3zM3lpBR7qkIcn9minQJo1a2aU1aQLP3zx5AF3dc7Pp4OtuLNTfr588kDAD8VIRgZt27ZNwA9P7N7Aq0Pd+HiQFYOb52dMTAy/f/9OV1dXo6ymgIAAQeleOXkQ30zw5oMBVpzSyptqtZpXr16ln5+fQZ8UmXUjww+nd6tG5Wwf3uiTj/MGa89p1apVRllNuiM/qampnN7MhfGLyvJM17zcungKSS38UIxkZNDnz5/p5ubGqKgohn7/xtWtFExdXpG72uTmtXPHxEiGMVbT+fPnxcjP7cvneKxnQT4dbMX1bSV++fRejGQYYzUtXrxYwA93rZzDB6M9+XiQFWc1dWRSUlKmkYyM6t27t4AfLhzZgZ+nFue9/vk4vVMFklr4oe5Ihq50R340Gg2ntPVh5LxSvNIrH5eO1Z7TzJkzjbKadIGkcXFxnNesAJOWlOexTnl4cLN2qq59+/ZGWU0y/DAxMZFvQ15waweJacsrcWOLXHxy74ZwlzbGatq/f79wmP77yG5eGOjCp4OtyfPTSY1GuEv/K9iLbGXLkLKnhP4NpPvyt7Ozo6urKy9evMgSJUpkyf6QXTd1ycfW1tasUKECN2zYwNatWxuN1Wg0/Ouvv7hz5076+vry+vXrlCSJwcHB7N27t3DcNCY5t+by5cuCfCxJEnv27MnFixezTp06IlfEkOTcmosXL7JYsWJMSUmhQqFguXLlePLkSeG4aUwyzXbz5s3i5W9vb09XV1deu3ZN5IoY09KlS9mjRw+OHj1avPxtbW3p5eXFY8eOsVKlSlnygvr06cOFCxcK8rEkSYIwvWDBApErYkhybs3x48cF+ViSJNHI6t69u8gVMaTo6Gi6ubnx2rVrWiJwVBQlSWKzZs24ZcsWlilTJn3KzYDk3JoTJ04I8rFCoaC3tzcvXbpEV1dXfv361Wi8nFujSz62s9MSiS9fvmzU0E/WlClTOGrUKD3ysY2NDf38/Lhz5042atTIaCxJtmrVihs3bhTkY0mSuGrVKnbq1Injx4/n2LFjjcbKUxYXLlwQDXJJkgRhukmTJiJXxJDk3JorV64I8rFCoWC1atV45MgR4S5tTDdv3qSPjw93794tyMcKhYLu7u68evWqUUM/WbLD9MSJEzl69GiS2nrr7q7NISldunSWFvhDhw7lzJkz2aJFC27dupUkaWVlxRo1anDFihXs2rWr0Vg5t+bgwYOCRi6zgkjtlJts2petbP1/UXaD5f+4vn//rpcXIEkSJ06cyIIFCxp049RVTEwMHRwcWKxYMT1IXZMmTWhvb8/3799nGf/y5UsqFAo9ZkpKSgoLFSpEJycng26cujp48CAdHR05e/ZsEf/jxw9BlP5T0t2UKVPo6OgoetOSJPHGjRt0cHDQmy83pmbNmlGhUIjetCRJXLNmDZ2dnf8IWktNTaWnpycLFiwoetOSJHHgwIGUJIl37tzJMj4sLIwKhUK4EcuAvEqVKlGhUAgGjjHdvn2b+fPnFw1VSZIYFxfHggUL0svLK0vWD6lNCnV2dha9aUmS+ObNGyoUCtGAy0pDhgxh/vz5RW9akiSeOHGCjo6OfwRTajQaVqlShQqFQvSmJUnirFmz6OTkxMOHD2cZn5CQQEdHR3p6eooGuSRJbNu2LRUKBV+9epVl/Pv372lvb8+mTZuK2LS0NHp7e9PBwcEoMkHWqVOnWLBgQQEVlSSJP3/+pCRJLFu27B/r7dy5c+nk5CTIx5Ik8f79+8yfP79ebpgxdejQgQqFQpCPJUni1q1b6ezsnGVDldSOLhYrVowODg6CfCyTtB0cHAw6T+tKZoqVKlVKNMhlxpZCoTDoPK2rR48eiY6JfGx5+58aqtnK1p+U7XT7f1zjx49HYGAg7O3txTZ3d3fExMTA3d09y9g8efIgZ86ckCRJb77b0dERKpUKkiRlGe/g4IDk5GQ4OzuLbZaWlrC1tUWePHmEGZwxFSpUCFFRUShUKN0YzdbWFiTh6OiYaQ49ozw8PDLFu7i4IC4uDm5ublnGAoCzszNSU1ORP3+6OZiXlxciIiLg6emZZayFhQXs7e2RJ08evRwbV1dXJCQkwMnJKct42eCrYMGC4jpNTExQoEABmJiYZMpdMXTu8fHxcHVN96fInTs3cufODYVCIczcjMnT0zPTdTo4OCAlJeWP5w5orzM+Ph4uLi5im7u7O6KiouDh4ZFlrImJCRwdHQFAL9ehUKFCiIyM1LufhpQrVy7kyZMHdnZ2ejkyzs7OSElJgYODQ5bxCoUCaWlp4hwAwNzcHAqFAjlz5syUe5JRHh4eiI6O1vt9WVtbw9TUVNy/rOTp6YnIyEi9snd2dkZCQoLe/TQmZ2dnJCcno0CBAmLbv1pvzczMkD9/flhaWurlN7m5uSEuLu6Px5fz1hwcHER+kXw/NRqNwbwhXTk6OiIxMVGv3vC3u/SCBQsy5e1kK1v/bfpvbz79D+jfaYTl9u3bmaZ9FAoFPTw8uHDhQqOsG1kbNmxgmzZt9Fbd2NnZ0d3dnf7+/kZZN7KGDx/OcePGiVU3kiSJJYmNGjUSPBtD0mg0rFWrFhcvXixyVSRJ4pw5c9ivXz+9pdiGJC8RDg4OFlMAkiSxc+fOnD17dpaQNjJ9ifDo0aPFqhuFQkE/Pz8uW7bsj0PjMqupSZMmYtWNvb09XVxcOGPGDMGzMab58+ezT58+YgpAkiSxqql3795GWTeyunbtypkzZ4pcFUmSBJivUqVKPHv2rNFYeYnwsmXLxKobSZIYGBjIgIAAo6wbWfIS4ZkzZ7JLly4ktWXXoEEDBgcHG2XdyHr8+DGLFCnCfv36cd68eSK+cOHCXLJkiSBMG9POnTvZpEkTvVU38lTouHHjjLJu/n/tnXVYVOn7xm8aUQGBsQm7QFQUxa61u7sbExWxUCzs7kR31bWxc+1e7ERFJSQGkG5m7t8f4znMwIDufndXd3/nc11elxMP856HhzPvOe/z3rfAtGnT6ObmJu66kclk4q4mYbkoL1q3bs3ly5eLvSoymYyrV6/mgAEDWLly5Tzvrgk7rVavXs3GjRuLd9eGDh1KLy8vWltb53l3TdgiPH36dPEuopWVFZ2dnblmzRpWqVIlz7trV69eZfXq1dmtWzdu27aNZNZSqLe3N7t165bnsa9bt459+/alg4ODuIVbWAodM2YM582bl2f88OHDOWfOHNFgUiaT8fDhw191T5eQ+Ba+65LQokWLWLNmTRYoUIAymYwdO3bM1SFXYNeuXQSg8c/IyOibP/PfMmER+hguXLhAknwcFMOFp1/Ssm53uk2ZKt52F7QNsiMYrX348IE3b95k5eY9OO/Ec5pVa8E9e/YwPj6etra2uS4LqWuEbNy4iU2HzWLxNmNZrkEH+vn58dWrV3l+calrhIwY7cqec7axWKvRtK7qwsjISB47dixXkzZSZcI2adIklTNy4584esMpFvlpOB2cGzAzM5Pz5s0Tjdi0IWiEJCQk0NahNqf+couyRv3YvbdqDb5bt265Lgupa4T4+/vTzvkneh57zELOnbhg4SINrRttqGuEnDx5kk6dh7N4m7F06jSMp06d0nAM1sadO3fo4ODAjIwMzl+wkG0nLmXxNq60q9Wcb9++FR2Dc+tfUtcI6darLwcs3suiLUfR1qE2ExISNLRutCFohGRkZLBKrfocv/0SCzcbzLpNVD0V6lo32REmqsePH1c1WVZ14YyDv9Oqfi+Och1HpVLJpk2b5rosJDhI+/v708/Pj+UbdqLX8Wc0r9GGmzdv0dC60Ya6RoiPjw8bDJjK4m3GslKz7rx165aG1o021DVCJrpNZtcZG1ms9RhaO9ZnaGiohtaNNpYsWcJRo0apjrNVOw5fc4xFWoxghRp1mZaWxmXLlommo9ro27cvN2zYwOTkZJauWpuT91ynrPEAtuusmmioa91kRzAVvX79Oj98+ECbGo05+8gjWtTpwpmzZmto3WgjKipKNBy9dOkSq7bpz3knntPUoSkPHTokNtrn1r/06NEj0Sl7xYqVbOk6n8XbuLK0S2s+f/4812OWkPhWvuuEpWXLlty1axefP3/Ox48fs02bNrSxscm1A59UTVhMTU0ZFhYm/svtxK+Nf8uERd3m/llILMvNzHI0Hr5L9UV5//59UaQtO1OnThU1QnwfhYixttNOcc1FlTPrzp072blz5xyxwk4RweZ+8ZmXWfHuJ3nuuaovYeLEiZwzZ06OeGGniGBz33fLTTG+jMcJ+ofHU6lUslmzZjxy5EiOeEEjJCYmhinpmay74GyWK+6c04xNSmdycjLLlCkjrvOro64REhSdxArTT4jx7VZdplKpVJ3QbWzEdX51Vq9ezYEDB5Ikb7+Lop37STF+2qFHJMnz589raN2oo64R4nPrvUbud9/6QFKldTNs2LAcsQqFgs7OzqJGiPvBR2KsnftJ3n6n6mUaMGAA165dmyNeXSNEqVSy3arLYnyF6SdER+IaNWrw8uXLOeLVNUJik9JZfU7W2OsuOMeU9MwcWjfqHD58WNQI8Q+PZ5lpWbnvt1XlhJ3XDjFPT09RI+Tc8zDaquV+8RnVJCW71o06nTp14q5du0iSqy/6a+T++GOV3s/06dM1tG4EhN1bgqjh0J13xNjS007wWYiqVjS0btRQn6imZSjYyPu8GO8w+xSjElKZlpaWa+PtrVu3xIlqeFwKK8/MOvafll1ipkKZQ+tGnS1btrBHjx4kSb+Pn2mnlvvxe1XHlF3rRh1XV1cuWLCAJHngfpBG7rZcU+nDbNiwQbzrpo5SqWTDhg154oRKa2aO71ONc8ZVf3mOGAmJP8p37WE5d+4cBg0ahCpVqsDR0RE+Pj4ICgrCgwcP8owTegGEf19b0/63kZiYiNmzZ2PFihUAgEuvIpCemaVp8NubaCiVRK1ateDs7IyNGzdqxL99+xaHDh0SnY7PPQ/XeP3sC9XjgQMHiv4i6pw+fRrJycno0aOH6v3q8To6OP/lsaenJ3bu3ImgIE2n1ZUrV6JFixZwcHBAaoYCN9/Hiq9lUhdX/eXQ0dHB6tWrMW3aNKSmpmrET5s2DTNmzIC5uTlehyfgU0KWHsTnVOJxiEovYtGiRZg0aZKGI3FmZiYmTZqENWvWQFdXF7cDopCqzCrdZ+HJiExIg52dHfr37y86VgtERkZi+fLloiPw+RfhoFrPwoVXKv+WFi1aoHDhwti7d69G/IMHD3D79m2MHTs2Z+4AnPuS+3HjxuHmzZt4+PChxuu//PILihUrhubNm6s+/6VcfI06OrjwUhXv7e2NZcuWISoqSiN+/vz5GDhwIOzs7CBPSMOz8Cy351SlLm6/ixYdiSdOnIjMzCytDn5xBPb29ka+fPnwKDgGn9V+NZ8SMvEmQmV+OH36dEybNk3js1NSUuDh4YFVq1ZBR0cHl1/Lkanm6HEjIBapGQo4ODigefPmWL16tUZ8YGAgfHx8MHu2yhTw3PNwQC33516o3Jd79uyJhIQEnDlzRiP+0qVLCAkJwYABA7Tn/rnKkXj69Ok4ePAg3r59q/H6hg0b4OLigpo1a0KpJK68/Sy+poAuLr9W/S5WrFiB2bNnIzExUSN+xowZcHNzg0wmw/uoRHyMzdKgiU8H/AJjYGhoiGXLlmHChAkadatUKjFhwgSsWrUK+vr6uPs+GkmZWcf+JioVn2JSUKJECYwcOVJ0TRaIjY3FwoULsXTpUgDAxZcRoFruL75W1UmDBg1Qvnz5HDooz58/x/nz5+Hm5gYAOPMlV1m5U+VyxIgRePr0KW7fvq3x+uHDh2FsbIx27dqp3v8iq26ho5PjHCQh8XfztwvHvXv3DuXKlcOzZ89gb2+v9T0+Pj4YNmwYSpQoAaVSiRo1amDRokWoUqWK1venpaUhLS1NfBwfHw9ra+sfWjhu1qxZSE9Px9KlS5GQkIChC7fhPiqIr2fGRSDp18kwMDDQ6oqrLhqnUCigW6Mb8jt1EONTA+4j4/J66Onp5XDgZTZn1czMTBi1nAwj22pifOK9w8Czk9DV1c3hwJt9POnp6SjYfz308mc1X8afXQW90CfQ0dHRcOAFNB2BASBdPz/M+62Gjp6q+ZJKBeJ+dYdh6metjsTq4yGJTMuyMOs0S/xsZVoS4ve4wlBPR6sjsbponFKpBMs3QcGGg8T49PB3SD3hBX19/ZzO0V9cek1MTGBkZASFQgG9uoNgUqWpGJ/84jKUd3ZDV1c3hwMvs4nGZWRkIF8nLxgWyWq0TLjuA923V6Gjo5PDkVh9PACQriDMBm6ErlFWk2mc73wYfFYZHmZ30lZ3sgaADBMrmPVcAh1dVcM2FRmI/WUCjBQpWp201Z29SUJRwhGmrSaJn61I/IzEveO/OE3ndCRWH49SqQSqtkcB525ZdfvxMTIurvzmujVsNg7GZZzF+KQHx8FHR6Grq5tDPC67s3d6ejoK9F4JfbOsi6H4ixugF/Q7dHR0cojH5ahbHUOYD1gvOmmTSsQdnAHDpAitdas+HpLIMLeBedd5WXWbnoK4PWNhpKsUj1VokAU0ReOUSiVYpj4KNhkuxmdEBSH5yAyt54zs41EoFNCr3RcmVVuK8Sn+N5F5fSv09PRyOGln/zvKyMhAvnYzYViikhgvuTFL/BX8MG7NSqUSEydORL169XKdrABAhQoVsHPnThw/fhy//PILlEol6tati5CQEK3v9/b2hpmZmfhPvXv9R+Tjx4/45ZdfMGPGDOzatQsODg4ojUgYBt5BPn3AICUa3YvHoVSpUmjcuDEePnyIRYsWoUePHpDL5fjll19Qo0YNhIWFYcKECcifPz/GNysLhjxBPgMdIOo9xjhbolChQujTpw/ev3+Pnj17Yt68eZDL5fDwUJkbvn37Ft27d4eVlRVG1igInc+BqvjgRxj/UwWYmJhg6tSpiIiIQMWKFXHkyBHI5XK0a9cOq1evxt27d1G3bl1UqFABHQqFwzAtFvn0gXxBdzC4uSMKFiyIVatWITg4GJaWlnj8+DHCw8NRpkwZXLp0CSdPnkTp0qXRpHY1OKY8gTHSYayTibKxfmhTvwaKFy+OgwcP4t69eyhevDhCQkLg7+8vOgJv2bIFhQoVQu+m1WHx6Tby6RFGmUloavQe1RyqoFq1arh69Sp2796N+vXrQy6X49KlS7C2tkZ4eDjmzJkDExMTjG3hAJ2P92FioAO9+DAMqEAUK1YMbdu2xYsXLzB58mSMHDkScrlcNJsMCQnBsGHDULBgQYxvaA2GvUI+A10w/BXGNyyJAgUKYPjw4QgJCUHz5s2xYcMGyOVyjBgxAlOnTsXz58/Rpk0blChRAgPKK6GXEAYTAx3oBt6H609VYGJigjlz5iA8PBzW1tb47bffIJfLUa9ePezZswdXr15F9erVUb2qPZoYBsAoMwn59AiL0Dvo3bQGzM3NsXXrVjFf/v7+CA4ORrFixXD//n0cOHAAxYsXR9v6NVAmxg/GOpkwRjocU56gsXM1lC5dGqdOncLFixdRtmxZhIeH49GjR7CyskJwcDBWrlyJggULYkjzajAOvI18+oBhWiw6WEagXLlyqFevHu7du4dVq1ahQ4cOkMvlOHLkCCpXroyIiAhMmTIFJiYmGN+8Ahj0ECYGOtD5HIhRTgVhaWmJ7t274927dxg0aBCmT58OuVwOLy8v9OrVC+/fv0efPn1gYWGBMc6WQFQA8hnogCFPMKFZOZiYmGDixIkIDw9HtWrVsHfvXsjlcnTr1g3e3t7w8/NDo0aNUKZMGXQtGgODlM+q8QfexbDmDihQoACWLl2KT58+wcrKCvfv30dERAQqV66MU6dO4dy5c6hQoQLq16qGWpnPYcxU5NNVwCbqPjo2rIHChQtj3759ePz4MWQyGQIDAxEQEABLS0u8fPkSO3fuhJWVFbo3roEiYbeRT1cJY2UK6uu+Qa1q9qhSpQouXbqEAwcOoEaNGoiIiMCNGzdQtGhRhIWFYcGCBcifPz9G/eQAvY93kU9fB/pJcvS2S4W1tTVatGiBJ0+eYNasWRg4cCDkcjm2b9+OevXq4dOnTxg9ejQKFCiACY3twNDnMDHQBeRvMbZuEZiammLQoEEICgpC+/btsXz5csjlckyYMAFjx47F69ev0bFjRxQpUgRDHQyhGxuC/EZ66OBYHMMa5L2zTELiL+evXo9SZ9SoUbS1tc1TkEobgl6GIO6VndTUVMbFxYn/goODf8welvMzyfmFGTPDijun92HNmjXZpUsXBgQEcOvWrezZsyfJrPX/xMREbtu2jTY2Npw9fSrPDZZRMdeCAZMsuG2hG8uWLcuxY8cyKiqKY8eO5cKFC0mSv/76K1u3bs2kpCR6eXnRxsaGqxdMp9/oQlTOLcS7IwtxxbzptLa2pre3N5OTkzXWpgWvm4iICI4YMYIVKlTg9vnjGTjZkoq5Fjw1uAjdp6h2aOzevZtxcXEsVaoU/f1VfTPC+r+/vz/btWtHFxcX7nTvyrhZVsyYa8l9w6uwX79+tLe358WLF/n27Vva2dkxISFBY/3/5s2bdHJyYpcuXbhntDPT5lgyabYVd01qxaZNm7JJkyZ8+vSpRhOlsP4fGRnJQ4cOsUyZMhw31pVHBpWkYq4Fw6dZcsecYbS3t2f//v0ZEhKi4dUkrP+npKRwzZo1tLa25qI5Hrw61ILKuYX4Ylwhblw4jXZ2dpw2bRrj4uLYp08fbtq0iaRKIbZv376Mi4uju7s77ezsuHGhO1+MU+X+ylALLpozg9bW1lyzZg1TUlLo6OjImzdVvR+jRo3ikiVLGBISwn79+tHBwYE75gxj+DQrZs615NHB1hzrOoZly5bl4cOHRWXRT58+aSjEPnnyhE2aNGGzZs24a1JLJnlaMW2OJfeMdmaXLl1Ys2ZN3rx5kw8ePBAVe9W9bi5cuCDmaN/wKsyYa8m4WVbcOa0b69Spw/bt2/PNmzf8+eef2aFDB5Kkv78/S5cuLTbD2tnZ0X2KG08NKkLFXEsGTrbk9gUTWL58eY4cOZJyuZxTp04V/66PHz/Oxo0bMzk5mYsWLaK1tTVXzp/BuyNVufMbXYirF0ynjY0Nvby8mJiYyBYtWoheTYLXjfD3ULZsWW5dMInv3SyomGvBc4NlnOkxlba2tty+fTsTExM1vJq6d+/Obdu2MSAggJ07d2atWrW4c0ZvxsxU1e2vQ8tz8ODBrFSpEs+cOaPRhyUoxN65c4f37t1j7dq1VSJ+rvWYOseSKZ5W9BnflC1btmSDBg348OFDjT4s4fcYGhpKX1/fLzkawUOD7Zg515KR0624Y9ZAVqtWjT179mRgYKCGV5PQ65acnMyNGzfS2tqaXrOm8dIQ1d+s/4RC3LxwCkuXLk03NzfGxMRw6NChXLlyJUlV32CXLl2YkJDAmTNn0tbWlhsWzeBjV1Xubw634FIvVd0uX76cKSkpdHZ25qVLl/7GE6bE/0d+COE4V1dXlixZMs+tlnnRrVs39urV65ve+0M23b4+q2EUljDDjFcuqbatxsTE0NbWVkMCf8yYMfT29iaparI8M72ZRrz/5KLiiVaQ2xYaHJVKJevXry+KsQUFBfHWpIoa8dfc7EVDwoMHD4qKmySZkJBAOzs7vnnzhqRqZ8D7KZqOxKdmtWFCQgJJctasWZwyZYo4dn9/f9EygCQvnDqq4UrLOab0XTlR3LrZsWNH7tmzR4w/efIkGzZsSKVSSYVCweObvDRi02aZ8syBHVQqlWITpbrR2sKFC+nqqjJiS05Opq9XT414+bRC4nZOQbQvMjJSjO/Zsye3bNlCUiXhf3FqbY34R5NsRaG6mzdvakjgZ2RksGrVqrx16xZJlX3Co0m2GvEXp9YWP2/z5s3s3bu3+NnZpc1v377NqGmFNOKPz+slmuqNGTNGFO0jVZYBgmqwUqnk6V+3M322psGe7+Z5VCgUYp2cOnVKjPfx8WGnTp3EYzm2YqJGbPJMM148fUysk1KlSmlI4E+ePJmenp4kVWZ/p2a21oh/P6Ww2Iz65s0bDQl8pVLJn376SRRj+/TpE6+52WvE33KrKDYCnzx5kg0aNBDrVmjSFnarPHv2jK/dNB2JT09vJjZhq9cJyRxN2r9dOMvEGdnqdukosQG+V69eYp2QKssAZ2dnKhQKKhQKntixlAo1J+uM2aY89fN6KpXKHHVCkitXruSQIUNIqi7CfBcO0vjsmOnmvH7tqkadhIaGivGDBg3i6tWrSaq2rZ9zr68R/8ytpLhDU71OSOaw8Xj//j3vT9J0Mb88pYa4XXv37t1inUhI/JV8V/NDkhg3bhyOHTuGq1evoly5cn/4ZygUClSpUgVt2rTBypUrv/r+H9L80G8ncGqSxlMVd6pM5rQZrTGbSdviBhkY4pDVlBuRBDjsVq2NazNay24ed7xTOlyKZ/1qrwTpoOcp1dp7dHR0DoPA7Ov/b4emwUxND2rDIz143dHP1WhN/ZhKFCAeDUjXOHbXS/o49CZrrTy70Zr6Mf1kq8Detpkarzc9YIDn0ar+mszMTLHHQ0Dd2HF8jUzMqpPV1KtQAiW3GEJBVX+Nvr6+hkBe9mPa/FMGupTLyv2raB00OqDKXUxMDAoUKKAhfpbdPO56r3RUtMjK/dG3uhh10SBXg0D1Y9LTIT6NSheNHQFgwV09rH2on6tBoPox2VsqcblnhsbrfU7r41KgHtLS0pCamprDIFD9mHpUUGB9M83cV9tjiNBEHSQlJQFAnnU7t24mxlTLyn1cGlBuh6qQ1PuwxN+NQqHRo3OgXTqa2GTl7k6oDjr6qnKv/jsWEHp0BNG+ZwPTUERNQ27HM11Mv2GQa90mJSWBJAoUKABLY+LVEM26nXxVHz+/1MvVIFD9mBqUUOJIR83ctzliAL+InH1hAurHNKJqJhbUV2i8brfVEMmZOhp9WALZj2l1kwz0qZRVtx/jAOe9WeeM7Kai2Y1SL3RLR7XCal8HFdoCvfchISEBVatWxaVLl74qcich8Uf5ruaHo0ePppmZGa9evaqxTVnddr1///708PAQH3t5efH8+fMMCAjggwcP2KtXLxobG2vd3qqNH/IOS0wgU+YWybpS3dKCZE7LeHUErxuS5IcbzPQ0y7paO6Xasunr6yuKV2Vn6NCh4tZb5b1tGldLyocqU7958+ZplcAXtt4KGjHpR12zPtvTnAy6T5Ia4lXqCF43Hz58IBUKJq9vJManeBUn40KZkZFBe3t78W6HOoJGTHJyMpn8mUkLS4nxSSuqkxlpeWqdHD58WNSIYcRLps2xFONTf1bdqbt3716uW8Y9PT05adIk1YOXJzWulBVXVEJpO3fuzNWrqXPnzuLW28zL3lmxnqbkK9Udjdy8mgSvG2HrberPvbLuLs2xJCNeilon2rya1LfeMiNVlS8hdwtLq/KZh9aJ4HWTkZFBxoUy2at4Vt1uaEQqFHz//n2uWieC1w1JMui+ql6+xKcfU9Xa+fPnc/VqErxuSKrqVL1u76lqbdmyZVq3jAtbb48fP06SzDg5VYzN9DQjP9wgqTrnaNsynpiYqLG8mbylRVbdzi1CxgSKW8a1eTWpL28yNZ5J3uWzcr+0CpmenKfWifryJqPeMXWOVdbn7+xIknzy5EmuW8a9vb05atSoL4O5qFG3mRdUtbZ///5cvZr69OnDjRs3kiQVN9do5J7PVHe+vubVJCHxv/Bdl4SQTQBO+CeczEmyUaNGWV/MVJ3IbWxsaGhoyCJFirBNmza5ut5q40ecsMTExLChfQnGHptG94YF2L+3SvSrbdu2uarJCuJl9+/f59OnT9ndxZYZ5+dwaE0TLlq4UFTcfPz4sdb48PBwUXXzwIEDnNOrFpe3MefUTo48efKkqLiZm9HanTt3aG9vz4yMDM6aOYMHPdpzWRtzdnAqyTdv3oiKm7mpyaqLm3Xt0IZ+awfRu5U5GzjYMCEhgevXr89TTXb8+PGcP38+09LS2KBaOX7aP5GeTU3ZqrHKu2fEiBG5Gq0J4ma+vr789OkTm1ctzqRTMzmxXgGOHTNK9PzJzatJ+OJ6/fo1r1+/zmHNylNx0Yt9HfNx8+bNomhfbqJ8AQEBorjZpk2buHZEYy5vY86hzcrz5s2bfPXqlSjap42zZ8+ybt26VCqVdB09kucXdOfS1uZsXrU4Q0NDvyrKt2TJEo4cOZJKpZItG9Xhq20juaCFGRtUK8e0tDR6eXnlKconiJslJCSwvr01o45MpUejguzeSeXd061bt1zVZAXxsuvXr9Pf358da1oz7ZwnRzmb0HP2LLGuc1OTFVR4Q0JCeOLECbp3dqTyohe7VDbiwYMHxbrOTZtJEDdLTU3lgvnz+fPkVlzexpzd6tjy2bNnWtWl1fnll19Ej6K+Pbvy9sp+9G5lzob2JRkTE8MdO3bkqSY7bdo0zpgxgxkZGWxUszIDfx7Huc1N2axuDSoUijxF+UiVCu/+/fspl8vZxL44E05M5+T6BThs8EAqlUo2adIkV1E+wZD0yZMnvH//Pvs1KM3MC14cVMOEq1atEiequXk1BQcHiwrTPj4+XDKwHpe3LUS+VfWqqNe1hMTfwQ/Rw/JP8iNOWCZNmiQKsFlZWbFatWpcunTpVw0Cz507x9q1a7Np06aiAJsgHz9z5sysq6lcWLZsGQcPHiw6Hwvy8RUqVGCvXr24YcOGPOP79+/POXPm0MbGhnFxcZTJZNyzZw/btWsnKm7mhvDFtWzZMlGATZCPd3Nzo42NTZ5Ga8KV6KxZs8SraSsrK7Zs2ZJLliwRv5RyQ5CP79u3L9esWSPGly1blt7e3uKXUm7s27ePrVu31riaFuTjx48fzxkzZuQZP336dHHyLdgeXL58mTVr1mSrVq1E0b7caNu2LRcvXsxy5coxNTVVlI/v37//V20PhMmst7e3KMAmk8k4ZMgQzp49+6u2B8JkdtKkSRq2B87Ozly2bBmdnJzydLK+du0aq1evnsP2wMbGhnPmzNG4QNHG+vXr2bt3bw0BtkKFCrFMmTIcNGgQly9fnmf8iBEjOHPmTFGATSaT8dChQ2zWrJnGnUNtKJVKuri4cNmyZRq2B56enhw7dmzWncNcEJqXvby8RAE2mUzGTp06ceHChXlOVEmKCtNDhw7l4sWLSapyX6lSJS5ZsiTrzmEuHDt2jI0bN6aLi4toeyCcM6ZMmZJ15zAX5s2bx9GjR9POzo4BAQEabsxdunTRuNiUkPirkSYs35nsEvcymYwXL16ksbFxrtLv6tSsWZOVK1cWT1IymYwLFiygiYmJ6rZ/HqSlpdHS0lJs7BROPu3bt2fRokW/6ggcEhLCfPnyic18MpmMCoWCpUqVYsOGDb869suXL9PY2FhsLpTJZIyLi2PBggVFtdO88Pb2pomJiXg1LZPJ+OLFCxobG/PQoUNfje/UqRMLFy6s4Qj8yy+/0NjY+KsWEUqlkmXKlGG9evXE52QyGceNG0dTU1OxqTg34uPjWbBgQfFOhpD7unXrsly5cl/1XXn16hWNjY25f/9+MT49PZ2FCxfOU3Zf4MCBAxpLqTKZjGFhYTQxMRH9f/Ji0qRJLFiwoPh3JJPJePPmTRobG2tdDslOgwYNWKZMGY26XblyJfPlyyc2fOdGRkYGixQpouE6LZPJ2LNnT1paWorNorkRERFBExMTceec4KRdsWJF1qpV66tjv3PnDo2NjcVdMDKZjImJiTQzM/vqRQJJrl27lvny5ROXfWQyGd++fUtjY2P6+Ph8Nb5Pnz60sLAQJ+QymYy+vr40NjbOc6JKquq2cuXKrFGjhvicTCbj9OnTWaBAAcbExOQZn5ycTHNzc/EiQahb9V1NEhJ/F5Jb83fGzc0NCxcu1GiQe/78OYoWLYrnz5/nGZuamoqoqCjExcWJTY6ASunW1NQU79+/zzM+IiICOjo6+PDhg6i6qVQqERQUBIVCgejo6Dzj37x5g0KFCsHf3198Lj4+HsnJyQgLC0NGRkYe0dqPMygoCPny5fvq2IGs4wwICBCfe/HiBQoXLowXL17kGatUKhEcHAylUqmhFvvq1SvIZDK8fPkyz/j4+HgkJSUhLCwM6elZzZcBAQEwMjJCcHBwnvHBwcHIly+fxtjT09MRHh6OxMREJCQk5Bn/8uVLFC5cWGOckZGRUCqVCAwM1FBR1caLFy9yHOe7d+9gamqKN2/e5BkLAO/fv4exsbHGcX5r3WZkZIjHGR8fLz4v1FN2BdrsREVFicepVKoaR0ni48eP0NHRQURERJ7xAQEBMDU11ficpKQkxMXFITIyUkNoUhvajjM0NBQGBgbfVLfCcarn+fXr17CyssKrV6/yjCWJwMBA6OrqahynUPdfy31ycjLi4uIQFRWloTD99u1b5M+fHx8/fswzXv04hRrLri4tIfFD8PfOnf4ZfqQ7LBpNdF8Qbs/ev38/T5M2kqJGyJQpU0S9CnNzc1ELIjevG4HevXtzw4YNbNGiBQ8ePEiZTMZdu3axU6dOXL58OYcOHZprbGZmJh0dHXnp0iVRr0Imk3HSpEn09PTkgAEDxKUWbURGRorHKehVWFlZsXnz5jx48KCGw7Q2BOfjs2fPslatWlQoFLSysmKZMmV4+/btXL1uBPbs2cP27dtz1apVol6FsKRz8+bNXBsXBaZMmcKZM2dy8ODBol6FmZkZnZ2duXfv3ly9bkjVVW7Lli25f/9+1qpVi5cuXaJMJuOKFSs4dOhQUesmNwSvplu3btHGxoYfP36kTCbjwIEDuWbNmly9bgQEjZCbN2+KzctWVlZ0cnLi2bNnWb58+Tz7woSr6QMHDoguvMKSzr1793L1uhEQNEJmz57NyZMnk1Qt6ZQrV44XL17M1etGQPBq6tixI3fv3k2SLFiwIFu2bMn169ezT58+ucYqFArWqlWLZ86cEbe8y2Qyzpgxg1OnTuXIkSPFpRZtCF5NwnFGRkZSJpOxffv23LNnj4bDtDYEr6bLly+zatWqzMjIoJWVFStUqMAbN26IWje5cejQITZv3pybNm0StZksLCxobW3NO3fu5NqkLzB79my6ublxzJgx4h0mMzMzOjo68ujRo2zUqFGed/cEr6YGDRrw5MmTlMlk3LhxY545l5D4q5CWhL4T2TVC9tz5yOYrrrJY/+WcslD1RT9r1ixOnTpVa3xoaKh4wvwcE0PbDhNY3/sCi3Sfy/2+qhNmhw4d+PPPP2uNv3nzpnjC/P3xM9r1mkvrkdto22MWn79+I47vwYMHWuM3b94sat9s3XuYFUetZ8mRW2nbfiwTEhK0apioo64RMmb2Ulafupclh2+iU/exVCqVOTRM1FEqlWzQoIGoEdK4/yQ6e/qy+OC17D1Rtdth06ZNGhom6qhryaSnp7Ns+9Gsu+Asi/ZZzMUbdpJU7WATtG6y8+bNG3G3R1DIJ9p0nsoG3hcp6zyDF67d0hBp08apU6dEjZDzV2+yzMDFtB65jTadpzLkU6g4PnUNE3UWLVokaoQsWr+T9hO2s+SILSzXYQzT09NzaN1kp1evXty8ebPq/+M96TT9IEsM28gmA1TLcCdOnBC1brKjrhGiVCpZo5sr63idZPGBK+nquYykSsNk7NixWj9bmKiGhqqO07b9WNZbdJ5Fes7jjv2qXU09e/bk1q1btcb7+fmJYnbPXvnTtscsNlh8kVbtp9DvyXNRpE1dw0Sd3bt3i0tJe4+eYoXhq1V122ECY2Jjc2jdZGfy5MmcPXu26v8LVtNx8s8sOXwzHTqPoUKhEDVMtDXtCloywnJlyyFTWWvWUZYYso6dx6iMStW1brKTnJwsXhxkZmayQofRdJl/hsX6LaXnCpU4oZubm6h1k52PHz+KFwfh8kjadHRjfe8LLNx1Nn3PqUxBmzdvLmrdZOfSpUvixcGNu34s3W+Bqm67evDdh0CtMRISfyXSktB3Yv369ahXrx6cnJxw9300Zvs+x1t5IgyLV8RVZSVkKpTw8PDA4cOHtd4inzFjBqZMmQIrKyuceBkLVPoJwbHpMC5dE8cjVPoPK1asgKenZw6TNsEGQTBaOxJA0LYmdM2LAaXq4PCbdBgaGmL58uU5TNoAlRbHokWLsGTJEgDAmZiiSDGzg555caByK5x5FYPixYtj9OjROUzaAODZs2e4ePEiJk2ahNQMBW7pOeKzrhn0LKwRXboVnoTEoV69eqhcuTK2b9+eI/7QoUPInz8/2rRpg3fyRASVaIaINH0YFC6NxwWd8TkpHcOHD8fLly9x8+bNHPGLFy9G9+7dUa5cOVx+E42Mym3xKUEBI2t7nEu2AwDMmzcPGzduRGhoaI74yZMnY/78+ShQoACOvkqCTvlGCIpNg0n5ujgaZAQdHR2sWbMGkydP1lguAlTLPlOmTMGaNWugo6ODY8HGyCxqD13zYtAp3wiHXyaiQIECmDdvHqZMmZLjs0NDQ7F582Z4eXkBAM4n2yHBuCj0CpVAeqU2uPwmGuXLl0fXrl3F3486N27cwKtXrzBs2DB8TkrHE9M6iFKaQN/SBoHFmyIgMhHt2rWDsbExDh8+nCN+27ZtsLe3R926dfE4OBafy7RGWLIODIqWx03dqkjNUMDNzQ3nzp3Tujzh6ekJV1dXFCtWDKdffQYqt0JIXAaM7WrgZHRhAMDSpUuxcOFCxMbGasSSxIQJE7BixQoYGhriyNsMoFQdBMWkIX/lxjj8Tgl9fX2sWrUKEyZMEJeLBBISEjBnzhwsX74cAHAy0hKpFmVVdVvpJ5x4GQOZTAY3NzfMmDEjx9j9/f1x9OhRTJs2DZkKJa6xMmL1C0HPoiTiy7fB7x9j4OTkBBcXF2zYsCFH/KlTp5Ceno6uXbsi+HMyAoo0hjzDEPqyUnhRqB4i4lPRv39/fPr0CZcuXcoRv3LlSrRq1Qr29va48S4aqZXaIjRRCcMSlXExTaVhNXv2bPj4+CAwMDBHvLu7O2bNmgVzc3P4voyDTsWmCI5NR76ytXE8rAB0dHSwatUqeHh4ICUlRSM2+7LPkY96UJSopqrbsvVx+HVyjs+TkPie/O3mh/8EP4JwnFwuR82aNfH777+jSJEi2HP7AzxPaPZMJO8bD6Qm5BBpA5DD+M3ApT8MKmUZ7CmTY5H6q0qITpvwXPafadRmOvSKlhdfV3x6jrTzK0RTNGNjYw0Br+w/M1+/jdAxzBJXy3h2Dhm/H9Bq0sZsRms6BSyRr8dyjWNPu74Nine3tRo7MpvRmm5JRxi3mKgRn+I7B/wclMOkDchpzqhftR0Ma3bVzP2uoQCVSE5ORmZmpkadZP+Zho1HQb907azcxXxC2jGV2aI2Aa/shoXGXRZC17y4+Hrm+3tIv7pZNFLMnz+/hoCXhmGhjh5MBmtO6NL9DiPz6Wmt5oLZf6aOpS3ydZyrEZ96cTWUwU9yGDsCyPEz9crWg1HDYZq5PzAZTPqsYaQoxAtidmLdOveEgX0rMZbpyUj5xRWApkibOLZsdWvYcjL0S2T5jinC/ZF2ZjEA7cJzwsRd+JnGvVZD10Tt7+rVb8i484tWY8ccP9PYFCZ91mjm/tZuZPpfzWGkKORe/W9Bt3hlGLeaqpn7UwuhlL/L8fcN5KxbvSotYFS7t0Z88p5RQGaaVuG57HVrUH8oDMrXF19XxsuReljlvp3dkBRAjp9p1GEO9KzsxNebVyqC7QNrQkLi7+SHMT/8/8SsWbMwbtw4FClSBPfv38fa2eMBhVqDamwIurRtgRcvXiA2NhY1atTAzz//DLlcLpoNnj59WjQuyxef7Woq4jXGjRuHwMBAhIeHQyaT4d69e5DL5Xj37h0sLCzw6tUrhIaGwsvLC7qRmk2WupFv4e3tjfDwcDx58gQymQwfP36EXC7HtWvXUKxYMURGRuLDhw8YOXIkEPFaI75AUgj27NmDyMhIHDx4ENWqVUNERATkcjm2bt2K+vXrIzY2Fk+fPkXrxnWBeDXr+cx02BUgzp8/j+joaHh6eqJ///6Qy+WQy+UYN24cxo0bh8+fP+PatWuoUtwUyMi6GtRJjkHD6hXh5+eH2NhYdOjQAUuWLBHjmzRpgq1btyIqKgqHDh2CZWYUoH4lHvEG/fv1xZs3bxATE4MyZcrg1KlTkMvl+PTpE0qUKIGbN29CLpdjzZo1MIgOgDo6Ef7w8PBASEgIPn78CAsLCzx//hxyuRzPnj2DhYUFPn78iJCQEEybNg06Ef4a8QbRAVi7di3kcjlu3LgBa2trhIaGQi6X4+TJkyhbtiw+f/6MN2/eoF/f3oBc7e6bUgnLzGgcOnQIUVFR2LJlC5o2bSoe++LFi9GxY0fExsbCz88PDatVgE5yTNbY05NhX9wU165dw+fPn+Hq6orx48eL8X379sWcOXMQHR2Nc+fOwTa/AlCo3UGKD0ebpvXx9OlTxMbGol69eti+fbtYt9WqVcPhw4cRGRmJ3bt3o0DiJ826DX+NkSNH4sOHD5DL5ShatChu3LgBuVyOjx8/QiaT4cmTJwgLC4O3tzf0IzXvPOrI32LevHkICwvDy5cvYWFhgXfv3kEul+Pu3bsoXLgwwsPD8fHjR4wdOxY62erWJD4IO3bsEHNdqVIlsW53794NJycnxMXF4cWLF+jUuhkQq2a4qshACaNUnD59GlFRUfD29ka3bt3E3Lm7u2Po0KH4/Pkzbt26hep2MuikZd351EmNR51KNrh37x5iYmLQq1cvzJ07V4xv06YN1qxZg6ioKPj6+qKITjygVFO6jf6AXt064/Xr14iNjUWlSpVw+PBhyOVyhIWFoVSpUrh06RLkcjk2btwIo5hszcER/nBzc0NQUBA+ffoES0tLPHr0CHK5HK9fv0ahQoXw7t07fPr0CbNmzYKuXLNuG5SzgoTEj4Q0YflfUGQCH67jzW8/49q1a+jevTsGDRqEwYMHY/b4YdC7sQlNSuVHFcNINNV9iVJ2dnBycsK6deuwYsUKzHafiEz/CzizaxmsrKxQsmRJtGzZEitXrsTaqUPAWzvQurIVSsQ+wbjaloiKioKDgwPOnz+P2bNnY+H08cDbS9i4aBr69u2LwMBAODk54caNG1jUtyHyvzmHdg5FYfziBJYPbYWzZ8/C2dkZ0dHRaN++PbYvnQG+vYi5U8diwYIFOHbsGBwcHJCamoqhlfVgm/QarSpZQnl9C1ZPG4F58+ahXbt2qFKlCgDgyv41SH91Hl4zp2Lp0qVYtmwZnJ2d4ehgjzop9+FoEovGtsYwurMF7qMHoXfv3hgxYgQGDhyIEyeO4+P1/ZDfP4JdO7djwoQJmDhxItq1a4dhfbuh0EMf1CuuByfzFFQMO4fmjRugQYMGmDt3LubNm4clC72Q9Ow0/I5vwYcPH9C4cWP06NEDkyZNwhL3UeD1jfipvBnKKYLQpUgU8ufPD0dHR/j4+GDZsmWYNdkVyjcX8ev6eahZsyb09fXRoEED/Pzzz1gzoSf0/PajrX0RWH66hVltK+Hly5dwdHTEgwcPMH78eKzwdAPeXsIKTzeMHz8ev//+OxwdHfH69WvMaF0BVqG30da+CHT99mHtxF7YvXs3GjRoAAMDA1SvXh2/rp8P5ZuLmDV5LJYvX45du3bB0VHleN1ZJkd5ZTB+KmcGXt+IJe6jMHHiRPTo0QNNmzZFQEAAHp7chsSnp7BkoRfmzZuHuXPnokGDBvipSUNU+HQGNc1TUbeYLgo92o2hfbqhXbt2mDRpEiZOnIgd27dCfv8IPlzbj1OnTmLAgAEYPnw4+vTpg2ljBsPw5iY0tjVG1XyxqJvmB4cqleHs7Izly5dj6dKlmDtjCtJfn8flfaqlhIoVK6Jt27ZYsGAB1niMgPL6FrSuZAnbxFcY5mCIlJQUODg4wNfXFwsWLICX+1jg7SVsXzoDHTt2RFRUFJydnXHu3DksHdISxi9OoJ1DUeR/cw7e/Rri2rVrcHJyQlBQEHr37o1N3h7A20tY4DEOnp6eOHfuHBwcHBAdHY0xtcxRIvYpWle2Am/twJqpQ7B8+XK0atUKtra2KFSoEM76LEOm/wV4TpuE5cuXY/Xq1XByckLZMmXQROcF7A2j0LR0fujd2ITZ44eJf9M9evTAlStX8Oa3X/D5gS82rl8Ld3d3TJ06FS1atECfrh1Q+Pk+uBQBnC0zYBtwDO1b/YQmTZpg5syZmD17NlYuW4z4Jyfx7OxOPH78GO3atUPfvn0xatQoLJw8Eri2Ac3KFERFnVC0LRCIwoULo1q1atiyZQtWrFiBmZPHQvHmAo5tWYRy5crB3NwcTZo0webNm7FuygDg7m60rVIYReS/Y0oTawQGBqJq1aq4fv063N3dsXjmRODtJayZNwUjRozAixcvUL16dTx8+BBzuzjB/OMVdHQsjoWd7TGwrt13Pb1KSOTg72mj+Wf5Lk23menkrrYa5oKCI296ejoXLFggNikKO0CePXvG0NBQDho0iPWqVWCIu0yM/8W1DsuWLctDhw5RqVRqNCkGBgbS1taWMTExfPHiBVu0aMFBrZwYO91MJeE905Re/erRycmJN27cEJsUb9++TVLVWCfoKVy5coWOjo5cOqge02apPjvaw5y9mlVnu3bt6O/vn6NJcdWqVRw8eDCVSiX37t3LUqVK8dC4LIPAQPcirFmlrOjI+/vvv2s0KQ4ZMoSrVq1iamoqly1bRmvrkrztVinLXHBKGdrZWtPLy4tJSUn08fFh586dSWbtALl06RI/f/7MiRMnskr5UnwztYQYf2ZiDdrY2HDbtm3MzMzUaFKMiYkRd918/PiRPXr0YJu69pRPs1DJl8825aYR9VipUiWePn2aSqWSzZo1E5sUBaPJ5ORk+vn5sV69enTrWoeJM1SfnTjDlJO61Gb9+vX54MED0ZBP0EI5dOiQuOvm9OnTrFixIjeNqMvMLwaFEdMs2MrFnj169ODHjx/54cMH2traioZ8wq6bzMxMbt26lTY2Njw7sYZ47G+mlmDlcqU4adIkxsTE8MKFC6IhH0lx101SUhLnzp1LO1trPpqcZXJ3260Sra2tuWzZMqalpYm7mkhVE3mlSpXo5+fHiIgIDh8+nLXsyzHQPcty4uC42ixVqhT37dtHpVLJQYMGiTvJ1JvIX79+zbZt27JXs+r87GEumlouHliPjo6OvHLlSg5Dvlu3bolN5Ddu3KCTkxO9+tVjykzVZ8dON+OgVk5s0aIFX7x4IQoPCqaiQhO5UqnkwYMHWaZMGe51rSOOPcRdxrrVVI7MYWFhomu6sJPM1dWVixYtYnp6OlevXk1ra2teVzNnfDrFjmXsVEKHCQkJPHDgAFu1akWlUik2kZ88eZJxcXGcOnUqy5e25asp1mL8pUmOtLGx4caNG5mRkcGZM2eKDfnqTeTBwcHs27cvm9aqxFB3S9HyYcfouixfvjx9fX2pVCrZvn17sSFfvYn88ePHbNy4MUd3cGbCF3PH5Jmm9Ojpwjp16vDevXtiQ/4fURiXkPgrkHYJ/RP4n9f03Zhjyui3Kr+dkJCQHNtANbxuSAbtm6QRmz7HgslfhOauX7+eYxuop6enKLymVCoZsqaVpiPxQnvxS2rDhg2i4qaAsHWRVG1fjppfXiM+aH1H8b3Zt4EKXjf376uOLzEuRsPniHNMGXx4pji2unXramwD1fC6IRn1/EqO3EXcVU0QBNVQdQl8Da8bkp/OrswRHxf2gaR2r6YtW7Zked2QDNqh6YqbMLeEKEzm6+ubYxuohteNUsnQpS4a8aFL64rvnz9/voZXk+B1c+LECZKqSUDC3OKaud8xSHx/9+7dNbyasnvdxIV9yHHsn86qtmBr82oSvG4EafXwu4dyxEe9UDkCa/Nqyr5NP/jQDI1YxRwzJsbFkCTv37+fw6tJ2KYv5n59R82/mfnlxTrX5tXUu3fvLK8bhYLyhZpuziFrWoljmzhxoqguTWZt0xfUmZOTkpg+x0Kzbvdn/U2pq0uTZFRUFK2trUXRu+g393PkLvyGynU8KSlJVJcWELbpC7UVemlTjvjPH1VO0+/fvxfVpQWEbfpi7naP0ohNnlNYFJoTFLLVJQ+mTp3KmTOz/i4/rWisOfbFWerFy5cv1+rVJCHxd/Nd3Zq/B9+l6fbdJeAXzcbOmj8bIihBR7OJUg11x1TXapmYUzdrvToxHSi9XeWsqs0RmF8aU4XmyPXNMtCjQlafxu/hOmh71DBXR2ChwU9ouLzcIx32Vlm/+t0vdDH1mkGujsDqLst6OkTgiHQYZpk9w+O6PnY+z90RWL0xtaKFEtd7aQrQtT9mgHthulodgQHNxtTOZRXY0iLLUVhJoPwOQ8Sn64gNxepO1tlzOrNOJibUyMp9cALg9LPq/docgbPndG/bDPxkm5X7Cx910e9M7o7A2XP6aEAaSmT1nWL1Az0suqefqyOwek7NjAj/IZpuziMu6MP3nV6ujsDqOa1TTIkTnTVzX3+/Ad7E6GptKAagkdMh9gosbpiV+zQFYLvVEErqICYmJkdDcfacLm+UgQFVsnL3LFIHzQ4Z5qhvgew5PdMlHTWLZtXtgde6GHfZIEd9C2TP6Yfhacif9WeFubf1sPGxfg7XZwF1J207U+J+P80dYj1OGuBqsC6Sk5OhVCo1GooBzSbt1qUU2N1a0wnb3scQ8mTVOcPQ0FCjoRiARk4n18zENOesuo1MBqr4fHvd7miZgfZl1Hq7SjUEBp5EREQEatWqJW4YkJD4J/mubs3fg+9yh0Wh4Os5Wa64r9eorgzVDQSzI3jdpKamkskx/DBNdaWdMbsgg4+rBJ/UDQSzs2/fPrZp04YkmRH2gnJ31a31eI+CjH+q0gcZN24c582bpzXew8NDdF2N+f0wk74sa4S5W1ARFUClUslGjRrR19dXa3ybNm24d+9ekuTHA9NFZ9gADxsyNUHDQDA7gteN4BPzalnWHaJX811IpZLv3r3L1WhNw7gxI5VvZmbdIXq7fThJ1d0AwUAwO1evXhXvWinjwxj8ZTkudWZBRlxRLb0tXryYI0eO1Hrs69atY79+/UiSyQG3GeNhprpC9jBjynvVHQ3BQFAb6saN4Zc3M/XLclywu4zK+HBmZmbm6tUkeN2cPXuWJPlm+7CsJaGZFciMNPFugDavJg3jRqWSr+ZnLYu8Wq5y8VU3EMyOhtVEaoLq9z3HlJmzC/LjQdUVvLqBYHbUjRszI98xzF11lyNxekHG+KnuaLi7u3P69Ola4728vDh+/HjVsTw5zYQvdSt3N2dG+EsN0T5tdO3aldu3bydJBh2bz4wvy3EfppUgU2I1DASzIxg3CpYar1d3zvqbn1uDVCgYFBSUq1eThnFjZgb9Z2fdIfLfqKqny5cvs0aNGlr1ie7evZt11yoxSlyOS59VkKFnV5FUubwPGDBA67Fv375dtHVIC3rA6Gmqc0ashykZpDKjHDZs2Fe9miQk/i6kJaF/gKCgIFpbl2Tsq+usU8acpUuXZkJCAp2dnXnx4sVc40aNGsXFixfz6tWrrO3kyMyg+6xSwpRNmjQR+y1yM1oTxMvOnDnDdevWccSAXmTw77S1MuHEiRNFxc3k5GSt8fHx8bS1teW7d+84fPhwbljsyRZVLNm3Wwfu2LFDVNzMTRVTWG6Jj49n7dq1ec13D5tVsqBjlUq8d++exrKVNo4fP85GjRoxNjaWtra2DPI7z4blLWhtXZIRERHs1KlTnr4rwnLLy5cvWa5MKSYH3GYNOzNWqVKFSUlJrFSpEn///fdc47t3786tW7fy6NGjbN2sIZXBv7Nc0QLs1q2b2G+Rm1eT+nKLl5cXp08cyZZVLOkxYSTnzZuXY9kqO0JfUHh4OLt27cr9W1bwp8oWbNm0IX19fbllyxZR5VQbwnJLUlISK1euzMe/HWbTShYsW9qOr169oqurq7hspY2dO3eyc+fODA8PZ8mSJRj1/DLrli0k9suoL1tpQzDzvHv3Lh3tKzPj4z1WtTali4sLExISNJatsiP0BR05coTbt29n/x6dyGA/lpLl58iRI3MsW2VHcBx+8eIFx48fz2Vzp7FlFUsO69+D69ev56lTp/I0FRWWW2JjY9m4cWOeO7CNzStb0LlGVV67di3HslV2Lly4wNq1azMhIYGlS5dmwN3TbFxBVbchISHs3bs3N23alGu8sNwSEBDAUnY2THhzk86lzVm+fHkmJSXR0dGRN27cyDVeUJg+c+YMG9WrTWWwHysWK8i2bduKon25eTVlZmaKZp5Lly7lxJGDyODfWcHaimTOZSsJiX8aacLyD9CnTx/xalomk3HChAns1KmThnmbNuRyOUuWLEl7e3vxatrKyopNmzZlx44dRcXN3PDz82O5cuU0rqatrKxYunRpuri48ODBg3nG+/j4sHHjxuKdHplMxoCAANrY2LB06dJ89uxZnvFubm7s1KmTeDUtk8l47tw5Vq9endbW1nkarQmqoB07dhSdj2UyGZctW8Y2bdqIipu5ITS01q9fX8MgsH///uzcuTMHDx6c59g/fPhAa2trlilTRryatrKyYvXq1dm6dWuuWrUqz/iLFy/S0dFRvJqWyWRio6dgaZAXK1euZJs2bUTnY5lMxsePH7Ns2bIazaK5MWjQIHbu3Fm8mpbJZNy3bx/r168vNgbnhtDQ2rp1a/FqWiaT0cPDgx07dmSLFi3ylG+PiYmhtbU1q1evLjofy2Qytm3blp06deKUKVPyHPuzZ89YunRpjQm5lZUVy5cvz8aNG4ty/Llx4MAB1q1bV7zTI5PJxLtu5cqVE9Wlc2PmzJns0KGD2Ecmk8l49epV2tvbs2TJkrmqNwt06NCBnTt3Fp2PZTIZ169fz5YtW+aq3iwgNLQ2adKEO3fuFONHjBjBzp07i+rSufHp0yeWLFmS5cuXF/vIrKys6OLiwnbt2onq0rlx48YNVq5cWWNCLphDqqtLS0h8D6QJy9/MrVu3NK6mZTIZAwMDqaenp/WWfnZ69OjBUqVKiY9lMhlPnDhBfX39PP1aBCpVqiQuDQnxU6dOZaFChb7qCJyZmcmCBQuKy0aCM2ujRo1YvXr1r352cHAw9fT0ePnyZY34YsWKcciQIV+NP3PmDPX19TVOnElJSTQyMvomV1sPDw+am5uLExuZTMYnT55QT09P3JmTF02aNKGjo6P4WCaTccuWLTQyMsrTZ0igRIkSHDhwoBhLqq6AS5Ys+dXY5ORkGhkZicsTQnzVqlXZrFmzr8Y/e/aMenp6fPr0qRivUChoZmaW63KKOjt27KCRkZGGi3hERAT19fXF5aa8GDx4MEuUKCE+lslk/O2336ivr/9VN2aSrFatGps0aaIR7+XlxYIFC+b5hU+qJlzm5uaiH5OQu1atWrFy5cpf/ezIyEjq6+uLX85CvK2tbZ53tgSuXr1KPT09DTfmtLQ05suXj+vXr/9q/IIFC1igQAHxOGUyGd+8eUM9Pb087woKtG3blhUrVhQfC5NVQ0PDXO9MqVOqVCl269ZNI/7AgQNs2bLlV88ZEhJ/J5I0/9+IUqnEhAkTRAl8gc2bN6Np06bYtGlTnvGxsbG4e/cu9PT08Pvvv4vPb926FY0aNcK2bdvyjH/+/DlSU1Px9OlTREZGAlA11x0/fhx2dnY4e/ZsnvFHjx5FxYoVceDAAWRmqhoAP336hHfv3iE6OvqrrrqCcNnmzZvF565fvw4zMzNcuXIlh2WAtvjGjRtj69at4nM+Pj6oU6cOdu7cmacjcXp6Onx9fVGqVCmcOnVKfH7jxo1o1qwZNm7cmOdnh4aG4u3bt/j8+bPoRk0SPj4+cHZ2xp49e/KMv3XrFgoWLIirV6+KzssJCQm4du0aChQogNu3b+cZv2fPHtSuXRu7du0Sj9Pf3x+xsbHw9/dHeHh4nvGbNm1C8+bNNY7z5MmTKFOmDI4dO5bDMkAdkti1axdq166N3bt3i88Lv48tW7bk+dmJiYm4cuUKChYsiBs3bojPb968GU2aNPlq/Nu3bxETE4M3b96I1ggkcfDgQVSsWBG+vr55xp85cwalSpWCr6+veJyCcF9ycvJXnbyFvy/1cd6/fx8GBga4c+cO4uLi8owX/r7V637v3r1wcnLCnj17clgGqJOZmYmDBw+icuXKGtYIQt1+7ZwRGRmJx48fIzU1Fc+ePQOgyt22bdtQt25d7Ny5M8/4Bw8eQE9PTxSwE+JnzJiBVatWaTQpS0j80PyNE6d/jH/yDovgfCwQ/DmJliVK0dbWlp8/f/7qerSgEXL27Fm61K3HD5EJNC9cnC4uLmKfQ25Xq+oaIUuWLOHwkaP5PjKR+c0sOGLECA0TOW0ISyrPnz9n3759uXLtBhYuY88+/QZw3bp13L17Nzt06JDr2D98+EAbGxtGR0ezWrVqPHXxKmWlKrFa9Rq8evWqhsO0NgSNEGHd/dHrD7SyKSe6MAsO07khaIQ8evSI5StU4NuwGFoUs2X58uUZExPDsmXLincftDFw4ECuXr2av/zyC9u0bc8PkYk0tSzMNm3aaJjIaUNdI2TatGmc6jGThcvYc8q0GfTw8NDQutGGukZI69atueuX/Sxcugpbt2nLffv2iVo3uSFohMTExLBcuXK8du8hZXYVWe5LI7O6w7Q2fv31V7Zs2ZKBgYG0trbmi49htCxZWtRJqVWrVp69V4JGyJUrV1i9hhPfy+NpXrgEq1evzqioKFHrJjcEjZC1a9ey34BBfB+ZyAKFLNm/f38NrRttpKWlsUKFCnzw4AGHDRvGRUuXs3AZew4dPpJLly7lwYMHRa0bbQgyA3K5nLVr1+bRU+coK1WJteu48Ny5cxoO09q4fv06HR0d+fnzZ9ra2vL3Z/60si0vNjKrO0xrQ3A+fvnyJcuUKcM3n6JoUdyWpUuXZkxMDCtWrJjnXZZRo0bR29ubR44cYZOmzfhenkAzq6Js0qSJuFyUW++Vumnn3LlzOW6iG99HJtLE1JwTJkzI9TMlJP4ppCWhvwn1plWlUkm3A49pO+0Ubaed4sClv5JUdfwLPQrZUdcISUrLYKWx22g77RRtJh/l6qOqpaQ1a9aISw7Z8fX1ZePGjalUKhkQHkNbVx/aTjvFkuP28crT9yTJoUOHcsWKFVrj582bJ2qEnL7/mjaTDtJ22inaue5iSHQCFQoFnZ2dxR6F7HTr1k3UCFmw9yJtp/rSdtopOozfxpT0TMbGxubaNJxdI6THgl/E3LWcuYsk+eLFi1ybhtU1QjIVStaa9CV3U4/TbdNxkjm1btS5d++euNvic2Iqy7hup+20U7SedIg/X1K5V3t6eoo9CtlR1wh5FBBG23Ffxj/uFz5+r9It6dy5s6h1k52JEydy7lyV6/TPFx/QdvIR2k47xbKu2xmTlCZq3Wj74squETJp03Haup+g7bRTrDVpGzMVyhxaN+oITauCRkiLmbvE3PdcqNr1lVfT8Pv372lra8u4uDimpGfSftxWVe6nHOOifaq+na1bt2po3ahz/vx51qlThwqFgsFR8bRzVX2+9YRfeea+akeZutZNdpYtWyZqhFx+HECbCb+q6nasDwPCY0Stm+PHj2uN79+/P9euXUuSXHn4Gm2nHKPttFOsNHYbk9Myc2jdqKNQKMSmVZIcsPRXMXdNPFT9KELTsDYn7c+fP9Pa2ppBQUFUKJSsO0VVdzbuJzhqjUp7KLvWjTpPnjwRxeziktNY3lVV99ZuR7j1tGrnkre3N0eNGqX12Pfv38/WrVU7wV4ERdJ23M+qc8bYn3nndbDWGAmJfxJpSehvYtGiRejduzfKlCmDOwHROPIwy3fkanQBfIpNQZMmTWBra6tx211g8uTJWLhwIfLnz4/994ORnL8YAEBH3xDbn6icUUePHg0/Pz+N5SJApcXh7u6O1atXQ0dHB5uuBwIFVF4feiam2HhLtZywcOFCrF69GnK5XCM+JCQE27Ztw9y5cwEAm+9FQsdQpbfBAjJsufERurq6WLNmDdzc3MTlIoFr164hICAAgwcPhkJJ/PwqA9BVLYnF5yuGIw9DYGZmhtmzZ8Pd3T3HsW/ZsgXVq1dHnTp18E6eiHsJ5uJrrzNleBAYg8qVK6Nt27ZYsWJFjvjZs2eLXk3nnodDbvgld7p68A3SR0JqBrp06QKFQoETJ05oxPKLI/DKlSthYGCAXbc+IrNAUQCArmE+bH2gWg5wd3eHr6+vuFwkEB8fDy8vLyxbtgwAsOFmCGDyZfwm5lh/IxgAsHz5cnh5eYnLReLxvX6NkydPYupUlTHeloexgL5KPyOjQFHsvPkBBgYGWLlypVYn7ePHj4MkOnfujPjUDBwP0gd0VH+6csNiOP8iHEWLFsXYsWMxe/bsHLlbvnw52rdvj0qVKuFBYAz8M2Xia3fjzfA+MhEuLi6oWrWqxlKdgLu7Ozw9PWFqaoojD0OQYKIydtTRM8Dul+lQKokhQ4bg7du3GstFgEoHxc3NTXQE3nIjECyg+nxd4wLYdE+1rOnl5YUtW7bg0ydNL6KIiAisXbsWCxYsAABsuhMBHWOV1gnzW2HzjUDRSdvd3R1paWka8ffu3cPDhw8xatQoAMDOZymAnkqIJTl/Mey7H4T8+fNj/vz5mDx5co5j9/HxQenSpdG4cWOExCTjWnSWzsp7Fsbtd1EoW7YsevbsCW9v7xzxXl5eGDZsGKytrXHFX45Peqq609HRxbkwY0QlpqFNmzYwNTXFgQMHNGJJYuLEiVi6dCmMjY3x890gpBVQ1b2ugRG2PVLV2cSJE/Hbb7/h6dOnGvHJycmYOXMmVq5cqcrdzWDARKVHo5e/EDbczOb7JCHxgyMJx30jAQEBaNasGZ49e4aCBQviyN03mOyr2e+RfNgDiI/Q6kiclpaG5ORk0VlV1741jJ17iLHMTEfKnpEAcrqwAjkdgfUbjoBhWRcxPlP+Humn5mt9L6ApvEYSRp0XQN+ipPh6uv81ZN7yyfFeIKcjMHV0YTJwG3TUhOlS7+yF8tUlrY7EOVyGC5WESef5GrlLObMEDH+t1ZE4uyOwTmkX5Gs8QjP3X5yws78XyOkIrOfUHUaObcRYZVIMUg+4aX0vkNMR2OAnNxhYO4ivZwQ/Q8bFlVrfC2g6ApNEvt6roStMeACkPTkDxYNDOd4r5F7dEZhGBZC/7zqNY0+9uhXK93e0Omlnr0WdohWRr800zdwf8wRjgrXWbfZa1K3UHMYufcVYKpVI2TMCUCq01m12MTv9eoNhWKGhGK/4HII039la3wtoCq+RhFF7T+gXLi2+nv7uDjKvb83xXiF3GnVLwmTgVujoZwnbpf1+CIpnZ76tbk2LwqSb5qQk5fxK8NOzXOtW3R1bx9YJ+ZqN1YhP/tUNSI7R6qSd3R1br1pHGNXoJMYq05KQunes1vcCOd2xDZqMhUEpJzG+ll0hHBpVFxIS3xPJrflvYMqUKZg7dy6MjIywYsUKTOrdGiapkeLrhZICYaJIxIoVKxAZGQkPDw8MHTpUwxH4zp07ePv2Lfr164d8Ec+gl57VoFo09jmKFi2K/fv3IzY2Fq1atRLvlDx9+hQWFhYICgqCn58fmjZtCouop0CmqvmQSgWKxDxH1apVcfnyZURHR8PGxgbnz5+HXC6Hr68vypUrh5iYGJw/fx6VKlVCsdjnoNAomJkG04jHaNWqFR4/foyAgAAUKlQIr169glwux8KFC9GlSxfExsZi9+7dkFlaoGhcVpOjfno8jMOfYejQoXj//j0uX76MUqVKISwsDHK5HL1798a8efMgl8vh7e0Nk7QYmCVn3Z0qkBIBo/hgzJ49G2FhYVi3bh1at24tOgI7ODjg2LFjCAoKwrhx42AU+QpGaVmOxFbxb2FmpItNmzYhOjoaw4YNw5QpUyCXy/H+/XtYWlri2bNnePHiBbp06YICEY+hq+YGXSzuOezs7HD8+HHExcWhZs2a8PHxgVwux61bt1CkSBFERETg1q1bqF27NmSfn6mMLwFAkQmr6CdwcXHB7du3ERERgSJFiuDOnTuQy+Xw8fFBrVq1EBcXB19fX9jZ2aF47HPxs3UzUlAg4jG6du2KFy9e4OnTp7CyshLdjSdPnowRI0YgOjoamzZtgrmxHqzisybKRmkxMIx8hXHjxiEoKAhHjhxB1apVRUfili1bYv369QgLC8OsWbNgFB+M/CkRYrxZcgjypX3G4sWLERkZCS8vL/Tp00d0BLazs8OVK1fw/v17DBkyBMYRz6GfHp9Vt3EvILO0wJ49exAbG4vOnTvD29sbcrkcL1++RKFChfD+/Xs8evQIrVq1gnnkEyAz7UvdKlE09jkqVqyI8+fPIyYmBuXKlcPx48chl8tV7tG2tvj8+TN+++03VK1aFUXjXoCCo3FmOszlj9GsWTP4+fkhMDAQhQoVwtOnTyGXy7Fy5Uq0bt0asbGx2LdvH4oWLYqisVl1q5eeCOPwpxgwYADevXuH27dvo0SJEvj06RPkcjmGDBmC6dOnIzIyEsuXL4eJIgGFkrJc1E1SI2EU+xEeHh4IDQ3F9u3b0bhxY7Fua9Wqhf379yM4OBhubm4win4H49RoMd4i8T0K6mVi7dq1iI6Oxvjx4+Hq6gq5XI6goCAULlwYDx48gL+/P3r27AmT8CfQzUjKqtvY5yhZsiQOHz6M2NhYNGjQAFu2bIFcLoefnx8sLS3x6dMn3L17Fw0aNIDl52eig7y+rg6GNcia+ElI/BuQJix5ER8KXJiNwG0DkBH1ARYWFnB0dMSrV69w8dwZJB6fj/mtbDG1dgFkXtuCs2fO4NChQ6hbty6aN2+OZxf3IfbXUXiwvBsa1amBhw8fio68+3dshO7FJVjRtQr6F4+CXcJzbN68GR4eHujcuTMmTJiAC5umIeP4RFzx7o5xrmOwYcMGNGjQAE2aNMGMEb1Q9t0BrOlVDY3S7qKzkzXGjBmDzp07w83NDZ6enjjr3R/KU5NxdukQzJkzB6NHj0bv3r3h7u6O5mUKoIXOY6zpWQ0lnu7CoimjUKtWLdSpUwe7d+/G8CGDcH1xN6QdG48rO+di5MiRaNu2LebPn6+atHy6iSGlErG8S2UozizE0f2qJbCqVasiICAA1SuWwpNV3RG9dwTe3TmF2rVri468586dRerFNZjRwAJzmhVH4ilv/HbxAvz8/FC9enWUKlUK0e8eIHTXYPhv6IWiBVXS5w4ODoiKisKZ40eRcnweFncoh7H2gPHTwzhy5Ag2btyIpk2bomfPnrhzcA2SDrviztJu6N6pHU6fPg0nJyeUKlUKm5Z6oeCttVjd0xGdC7xDjfxxWLRoEUaMGIH+/ftjxowZOLvKFYqTbrjk3RvT3N0xb948tGjRAj179sSwti6oEXkea3pVQ3X5OYxoXx/dunXDTz/9hPnz52OauzsueveG4uQknFk5BjNmzEC/fv0watQoLF68GNVMYtDF9D1W93REgZtrsWX5fNh9cfI+e/YsunVsi7tLuyHpsCvuHlqLHj16oEmTJti0aROOHj0KwyeHMM5BB4s7lEPK8Xk4e+IYIiMj4eDggLS0NMhMAP8NvfFp5yDEfngMW1tbVK9eHQ8ePMClC+eRdHIR5jYvAY96hZB6cQ3Onz+HM2fOoFatWnBxccHbWycQvXcEHq/qjhqVy+Dt27dwcHCArq4ujuzdBcWZhVjepTKG2CWgSNht+Pj4YN68eWjbti1GjhyJ37Z7Is13Aq4v7o4RQwdj165dcHFxgbOzMxa4jUDJ53uwpmc1tMAjtChniqlTp6JXr14YM2YMPD09cWbJYFXdeveHp6cnJk2ahC5dusDV1RUdHIujcdo9rO7piNJv9mPWqD5o1KgRGjRogI0bN2LsmNG44t0D6ccn4tJmD4wfPx6dOnXCjBkzsHXrVtjEPUH/EtFY0bUKdC4sxq87N8HExARVq1bF48eP0cC5Gh6u6IaY/aPw/NJ+NG3aFC4uLjh69CjOnT2LjKubMbVOQcxraYOkEwtw6fxZ0cnbysoKafIABG0fiPeb+8JEEQ99fX1UrVoVQUFBOH/6BJJPzMeitqUxsbohdO7uxokTJ+Dj44MGDRqgQ4cO8DuxDQkHx+D+sq5o07wxrl+/jmrVqqFIkSLYtX45jK6swKruDuhhGYJKDMLq1asxYcIE9OzZE+7u7ji3diIyT0zCb4t6YrLbJCxbtgxNmzZFu3btMKFXK1QJPo41varh9PgGaFml6Hc+wUpI/EH++haaf56/pek2NYFc5ZBlFOZuwVaNXfjggapBc8KECfTy8hLfri7Lfv78ebauXZ5JM82zHInHWrFHj+78+PEjlUolmzRpwmPHjpFUaaNUr16d169fp0KhoI+PDwfULS5K33OOKff2knHixIn8/Pmz2ET56tUrkmR0dLQoJJeSksKFCxdyfqssJ2jOMeXMFoW5bNkypqamMiAgQGyiJDVl2aOioujq6sqj/bLiMz1N2atOSe7du5dKpVK1w8nFRWwSVJdlf/fuHbt06sjn463E+PgZ5mxVp7LYuLhs2TKOGDFCzN20adNEIbm7d++yZX0nRnkUEuM/TLZku1bNRZ2V/v37c926dWJ869atuX//fiqVSh47dowdne2YNttMjL88TMbBgwczNDRUzPXVqyrDP3VZ9oyMDG7YsIGujYpo5G5dJxlnzpzJhIQEMdeCHkdwcLAoJJeQkMCZM2dyfWfN3Ls2KiI68mrYM5C8cuWK2KQtOHlfGZYVnzbbjB2c7URHXnV7BpJcu3atKCT3/Plztm3ZjB8mW2YZG3oUYsv6TqK0vIeHBz08PMR4dVn2y5cvs2XtyoyfkVW3z8dbsWvnTqIZZdu2ql1NpKohtU6dOjx//rzo5N2rTklmqtXtkX4yurq6MioqSrRnePz4Mcksy4D3798zNTWVS5cu5cwWhTVyN7+VjIsWLWJKSoqmPQMp7rpJSkoSnbz39s7KncLTlAPqFqePjw8VCgWvXr3K6tWri1ooR44cYdOmTalUKvnhwwd2796Nj8Zm1W3STHO2qVNBbEJfv349+/fvL+Zu7ty5YpO2n58fWzWqw3D3LHPFkKmWbN2soShSqG7PQJJdunThzp07qVQqeerUKbZzLsOUWVl1e3uUFfv168fg4GAqlUrWqVOH586dI6myDKhcuTLv378vOnkPr19UI3fbu8no7u7OuLg4TXsGCYkfCGmX0F9B4N0czqrKgCsks3azCAJcJHOcTDPvbMkRz0SVmubRo0dz7Ga5du2axsk07ehYjdgM7yyhOfUTpcD69etFrxuSTN3URCM+dXvWl5xwolQn+8k0c34xjfi0UyrBLvUTpUB2rxvGBOY4dsWDX0hmeauo72bJ7tCseHU6Z+5DVV9y2ryaNLxuSGZcXqwZO8eMzFS9X5tXk7rXDUmm/tJH89hXVhPfO27cOM6fP18jft68eRpbRNNWVtPM/d6+Yp4aN26cYzdLt27duGPHji+JT1eNV/13f3kJSWr1asrudaP89Chn7l+pnLO1eTVpeN2QzPTbk7NuY4JIqkT/su9muXfvHqtUqSI6NKefnKoRm7mguPjeJUuW5NjNsmPHDtHrhiRTt7XWzN2mLKE5bV5N2S8cMrztNH93x1S74rR5NWW/cGCCPMexZ95V7YoTtm6rezUJDs3ChYPy3ZWcdRuo+r1o82rKfuGQcWNNztynqnYeafNqOnfuHOvUqZNVtweGasSmL6skvtfd3V28KJCQ+JGQ3Jr/CmKDgbXVAaVqzTdTCdTbZ4gP8TqIjY1Fvnz5cjgCqzu2NrZW4mD7LFfcz6kqZ9ZMpY5WZ1XhOATH1jHVMjFXzc35fpgO2h0zzNURGNB0bF3XNAM9K2aJWfk814X7dYNcHYGFnys0XP7WPR0OsqzScL+mD58XehruteqoOxKb6BNPB6bDVC097Y8a4F64yhFYX18/h5N1amoq0tPTYWpqikoWSlzukQG9LwuWKZkqJ+zIFB2tTtaAqtlVR0cH+fPnR6eyCmxVc3MOigdq/mKUq5M1AI3f6YzamZjolJX78x910f9MliOwpaUlshMdHS02XP7SJgMt7LJyv+qBHrzv5e4InP13+qB/GqzV0jv8gj6Ov9PL0UQpoO6kLctH+PVPR74vpaVQAk0OGuD1Z90cDb0C6k3atYspcVLNzTk+DXDYbYiUzNzrVv13mt3N+WmkDpofyrtu1X+nyxplYKCam/Ovr3Ux/rKqbhMSEnK4iGf/nZ7uko5aam7Onrf0sPmJvkZ9qaNetwa6xPNB6Siklp7uJwxwLUQXiYmJ0NXVzeFkre6kXcpMiVu9M6D/pbTSFYDzXkOEJupoOLWro+6k3cpOgT1tsnInT1adM0hodbIGNJ203Zwy4VE7q25RujEw4DjevXuHn376Cc+ePctROxIS3xvJrfmv4tkRcqU9g91MyccqnZWTJ0+yfv36WjUT1IXZSJLXlpLLytF/vBn58TZJctGiRRwzZozWjxOE2WJjY1V3BHxdySWleX+kGRmtuvvQq1cvbt68WWv8xYsX6ezsrNKASYomf+7KSHdTcl8vMiWWGRkZrFq1Km/evKk1fsWKFVny+nJ/cktjyqeakicnkQqF6IMUGhqqNX7QoEFcvXq16kHAVXJtDYZNMSVvqZZv8hK2UxdmU73Zh1xekR8nmpKvVHLqu3fvztWrSdC7EP14Lswml5blc1cz8svdmcmTJ+cqbPf06VOWLVtWJc+flkQeGkwuKc3rQ83IuFDRByk3YbsDBw5k+fHEhZK72qpyd2gwmZ7M5ORkli1bNlevJkGYjST56RG5sS4jppqqjoP8qrBd+/btuWfPHtWDV6fIVQ78NNlUlUeqaiM3YTvB60ZY7uStteSy8nw73kz1eyTzFLb79OmTKEBHRaaqXpaW4YNRZmTkG5IqWf/cvJpu3LiR5ceTHKOq1yWleHGQOZkULdZGbl5NGzduZO/evVUPogPIbc1Uufd1JTMzRFPR3ITtRo8eTW9vb9WDj7fIdTVVdXttGUnmKWynLsxGkny8n1xRmYGTTFXnD5IHDx7M1atJuLv45o0qT/xtAbm0LF+ONSODVZo8s2bNylXYzt/fP0sDJiOVPDKCXFKad4abiXfGviZsJyHxPZGWhP5iBN8RdcXN3Dh06FAO1U0hXjix5+UXpE11U4gXFDfz8l3JfnISYslsJ3YtCF9c6uJl6vGC4mZuaHM8FuJznNi1cOvWLVatWlVjuUeIF07sb9++zTV+8+bNOXxhhPjXr1/Tzs6OiYmJucaPGTOGCxcu1Bp/4sQJNmzYMFc1VcFI7uTJkzliSZWXzNixY3P97ISEBM0vrmzxPXr04NatW3ONf/PmTQ7xMiFeEO27fft2rvGnTp3KMREX4gUF5rCwsFzjtU3Ehfj79++zUqVK4rKRNrRNxIX47OrS2REm4uoK0+q5mzRpEj09PXON1+Z4rF63grp0bmibiAvxwkVMXj5X2hSmhXiNi5hc0DYRF+IFdem8TEUlJL4n0oTlL0b441dX3MwNbaqb6iZ5guJmbmhT3RRM7tQVN3NDUN0U+hSEz1ZX3MyL7KqbQry64mZeZFfdFOLVFTfzok+fPty4cWOO+OnTp4vGd7mRmZlJR0dHjT4FIb5t27b85Zdf8oyPiorS+sWVmprKChUq8NGjR3nGP3z4kBUqVBC/uITPFqThhf6m3Pj555/Zvn37HGO/du0aq1Wr9lWDwKlTp2r0KQjx69evZ9++ffOMVSqVbNmyJX/99dcc8SNHjuSSJUvyjBeal9WtEQRH4Lp1637VXDEwMFBsXlaPV1eXzovffvtNQ2FaGPurV69Edem8WL16tYbCtBCvri6dF9kVpoV4dXXp3NCmMC3Eq6tL54Y2hWmZTJZDXVpC4kfkh5iwrF+/nra2tjQyMqKzszPv3buX5/sPHjzIChUq0MjIiPb29nleiWfnn5iwZG9OzIvsDXYymSxHc2Je7N27V6PBTiaTcceOHRpuq3kxbdo00b1XOPFlb07MC2HXjRCfozkxD9R33Qjx2Xc15YX6rhshPntzYl5cuXKFNWrU0HDFzb6rKS/Ud90I8UuXLtXY1ZQXw4cPF3fdCLnv37//Nzn6qu+6EeKz72rKC/VdN0J89l1NeaG+60aIz76rKS+OHj0q7roR4vft28e2bdt+NZZUNZNPnDhRfCyTyXLsasoL9WZyIfdt2rQRdzXlRfZmcmGiqr6rKS+E80NERIQYn70RPy+yN5PLZLIcu5ryInszuUwm47p16zR2NUlI/Ih89wnLr7/+SkNDQ+7cuZMvXrzg8OHDaW5uLv4xZ+fWrVvU09Pj0qVL+fLlS86aNYsGBga5rvdn55+YsAwbNozLli375hj1XTdWVlasXbu2+EX0NbLvurG0tKStra1Wjx5tCFelAQEBlMlkfPHihcYumq8hXJUmJSVRJpNpbP/8FtR33chkshxfRF/Dy8tL3HUjk8m07mrKi65du3L79u0kVbnPvqspL7LvurG0tNT4Ivoa6p5HMplM666mvFCf2MpkMq27mvJi+/bt4q4bmUzGcePGcd68ed8crz6xtbKyYuPGjenr6/tNsdkntlZWVjl2NeVFds8jCwsL2traauxqygv1ia1MJuPp06dZt27db65b9V03MpmMS5Ys4ciRI78plqTGxFYmk2nd1ZQX/fr1E7frW1lZ5djVlBfZJ7ZC3arvapKQ+BH57hMWZ2dnurq6io8VCgWLFy+ea/9Djx49clyF1a5d+5tPFn/XhCUxNYM/3/nIwnW7snyVqrm6IGtDLpfTurw9V595QsuabdiufYevB6lx//59VqzdhFuuvqVZ5QacOXPmH4rfuXMnm/cZzaKN+7J+54Eat/q/hYkTJ3LQrNUs2qgPy1Svm6cLcnaUSiWbNv+J0zYfY5EGPWlTvorGrf6vkZSUxNIV7bn4yB3K6nSik3OdP7QG//79e9pUqs71F16wULWfOCAXM8ncOHfuHGs068gt197RtHztXM0kc2P58uXsPHo6izbuy+pNO+bpgqyN/gMGcPTiHSzasDdtKlX/5okq+eWLq6YzPXdfYOF63Vm6on2uLsja+Pz5M23KV+HKUw9pVas9mzXX3iyaG0+ePGHZ6vW46bI/ze0b0c3N7ZtjSdXSYYMug7j12jsWKFUtVzPJ3Jg+fTr7ui9m0UZ9WL5W4zxdkLXRtl17uq07wKINe9G6vH2uLsjaSE1NZfkqVbno4A0WdulC+2o1vnmiSn5ZOqxQlWvPP6NFjZbsnouZZG5cu3aN9g1accvVtzSt6JKrmaSExI/EH/n+1te+d+jPk56ejgcPHmD69Onic7q6umjevDnu3LmjNebOnTtwc3PTeK5ly5bw9fX9q4f3zaRlKtB72108DYlDvgaDYWVCKHX0vh74BRoVRMGuC7DqWjAKNBsDM7s/tp3QoGg5pDWaiEVn/WHefhpM69r+oXizqs3x9rUMRtY6CKYSBSo5fT1IPb7hABy7FwqjOmVBZkLP8o99fqH2Hvj1QwqM6/aHqV4maJj/m2OVeoaw7LEIm+5Hw6TRMFhY6EHJb5dl1jUtDKMOc7Dstw8wbTkB5vY5tyHnRf7SToh2GoJFZ16jUOfZMK1Z4Q/Fm9XqiIeR/jCqXQ+fqYSxbbU/Ft98NE6+iIaRS18YIhM6BWVfD/oCoQOrbl7Y/TId+eoPhKWxEkpdg68HCvGG+WHWbSHW3AhF/qYjYV4839eD1NC3soPyp6lYfP4tzNpOhWmdEn8ovmDlhggqmx8Lz7yGRfd5MHWo9ofizer1xs0bQTCqY48MKmBQpOwfijdv44YjgUkwcumH/LqZoFHBrwd9QamjD8seC7HlQRzyNRwCS1MdKKCDbz7J5reASWcvrLgciII/jYNZebOvx6hhbG2PRJfRWHTWH4U6zoRZ7TJ/KF5C4kfnL5fmj4qKgkKhQJEiRTSeL1KkCMLDw7XGhIeH/6H3p6WlIT4+XuPfX82L0Hg8DYkTH39K1sHDoJg8IjS59EqOJGXWqermx0TEJKV/c/zRhyEaE6TDj7TnIjd+9QsBBL0LHV0c8AvJOyD75z/JcntW6Ojj+ONvd3YNi0uFX2iWV0+8Qh/X3sjziNDk9w+fIU/LKs03nxV4E5GYR4Qmp5+FIV3ta+LUy8/IVCjziNDkoF8woJb7Qw9CvzkWAA4+UMuVjq7q530jmQolTr/M8ptJhz5OPwv75vg3EYl4E5OlxSFP1cX9D5+/Of6qvxzxiqzc+YWmIDw+9ZvjfR9/gkInK/7I44g83p2TA34hohO1jo6uqo7/AOqfp9TRw9GH3x7/OSkdNwOzvHqSlPr47fW31+2j4BiEJmdpzHyMJ16Efvu56fzzcKQya3J58U0cUtIVeURocvhBMKhet4++vW4kJP4N/OV3WP4JvL294eXl9bd+hnk+A+joAOqyep3btABjvu0EqGfrBCM1Z1ZmpqNCWbss07yvYFC9IwyqdxIfhwe+Q+HCfb4pFgAMm46Fvl3WXZXLZ06gsEe7b4437rYYuqZZk8h1KxZj1aCz3xZskA/5+qyBjl7WyXf00IEYGfLsm8J1ZaVh3H62+JhKJZrUcwaTvu2LV698QxjVHyw+zkyOR/Fi3+6bYlCnLwwqNxcfv3z8OwoX7vbN8Uatp0GvWEXx8ZF9u/HrhJbfHJ+vzzroGGfdkZs/ywNz31z/plid/BYw7r5Mw0m7d5f2UEZ9+KZ43ZJVYdxikviYigw4Vq4IqJlF5oW+QxsY1uouPo6N+ITChQt/UywAGDYaAf0yWS7kt69cQOHZHb853rjTfOiquZBv27AGm4Yf/7ZgPQPk67tew83ZzXUkJgQ++KZwnUIlkU/NhZxUonXThmD8t03a9Mq4wKhRlgs5M1Jga11c8ySUBwY1u8OgapYLeSETwzzeLSHx7+MvV7pNT0+HiYkJDh8+jE6dOonPDxw4ELGxsTh+POfJw8bGBm5ubpg4caL43Jw5c+Dr64snT57keH9aWhrS0tLEx/Hx8bC2tv5rlW4BbL0egCXn/EESbj+Vx9im5b45liSmHXmKg34hyGegh+XdHdG2arFvjk9Ky8TQ3b/j7vvPkBU0wvYBNeFobf7N8cGfkzFw1328j0xC+SIFsHuIM4qZffvt/d8/fsbInx/gc1I6GpSzwrYBNWFs8O1LYscehWDakWdIz1RigIst5nW0/+ZYAFh+3h8brr6Dno4OZrerjIF17b45NlOhxLj9j3D2eTgKGuljXZ/qaFzh2780PyelY/Cu+3gSEocS5vngM7gWyhX59qWBtxEJGLTrd3yKTYGjtTl8BtVCofzf/uVx1V+OcfseISEtE63ti2Jd7+rQ1/v2m6G7b3/E/FMvoSDh2rgsprT8Y0tas32f4+e7gTDS18Xirg7oXL3k14O+kJqhwPA9frjxNgoW+Q2xtb8TatpZfD3wC2FxKRi48z7eRCSitCw/dg92hrWFydcDv/A4OBbDdvshKjENdUpbYMfAWshv9O3XZaeehmLKoSdIzVCiZ01rLO7qkEOZNy/W/fYWqy69gY6ODjxaVcTwht/uiKxUEpMOPsbxx6HIb6iH1b2q46fKRb4e+IW4lAwM8fkdDwJjUNTUGDsH1ULl4n/d+VBC4u/gjyjd/i3S/IIz77p16wCopMdtbGwwduxYeHh45Hh/z549kZycjJMnT4rP1a1bF1WrVsXmzZu/+nl/izT/F9IyFSDxh76s1UlJV8BAT+cPfeGok5iWifyGen/opKlOQmoGChp/ew+DOkolkZKh+EMnfHUyFUpkKIh8hn8ud6kZCujq6MBQ/8/lLjk9E0b6etDT/XO5+19yTxJJ6QoU+JO5UyiJ1P8h9+mZSijJ71a3SWmZyGegB90/mfv/pW7/19z/FXWrowMY6f+5+O9ZtxIS/zR/5Pv7b1kScnNzw8CBA1GzZk04Oztj9erVSEpKwuDBqtv0AwYMQIkSJeDt7Q0AmDBhAho1aoQVK1agbdu2+PXXX+Hn54etW7f+HcP7Q/zZk47Anz3pCfzZk67Anz3pA4Curs6f/sIEAH09Xfwv6fuzX7YCJob/W+7+l9zr6Oj8T/F6/2Pu/+wkT+B/rdv/ZezA/1a3/2vu/z/XrYTEj8zfUtk9e/ZEZGQkPD09ER4ejmrVquHcuXNiY21QUJCG+VzdunWxb98+zJo1CzNmzEC5cuXg6+sLe/s/towgISEhISEh8d9EcmuWkJCQkJCQ+C78ke/vv3xbs4SEhISEhITEX400YZGQkJCQkJD44ZEmLBISEhISEhI/PNKERUJCQkJCQuKHR5qwSEhISEhISPzwSBMWCQkJCQkJiR+e/4TCkLAz++8wQZSQkJCQkJD4exC+t79FYeU/MWFJSEgAAFhbW3/nkUhISEhISEj8URISEmBmZpbne/4TwnFKpRKhoaEoWLBgDv8MwRgxODhYEpX7g0i5+/NIufvfkPL355Fy9+eRcvfn+bO5I4mEhAQUL15cQwFfG/+JOyy6urooWTJvR1lTU1OpAP8kUu7+PFLu/jek/P15pNz9eaTc/Xn+TO6+dmdFQGq6lZCQkJCQkPjhkSYsEhISEhISEj88//kJi5GREebMmQMjI6PvPZR/HVLu/jxS7v43pPz9eaTc/Xmk3P15/onc/SeabiUkJCQkJCT+2/zn77BISEhISEhI/PuRJiwSEhISEhISPzzShEVCQkJCQkLih0easEhISEhISEj88PznJywbNmyAnZ0djI2NUbt2bdy/f/97D+mHZ+7cudDR0dH4V7Fixe89rB+S69evo3379ihevDh0dHTg6+ur8TpJeHp6olixYsiXLx+aN2+Ot2/ffp/B/mB8LXeDBg3KUYetWrX6PoP9wfD29katWrVQsGBBFC5cGJ06dYK/v7/Ge1JTU+Hq6gpLS0sUKFAAXbt2RURExHca8Y/Dt+SucePGOWpv1KhR32nEPw6bNm1C1apVRXE4FxcXnD17Vnz97665//SE5cCBA3Bzc8OcOXPw8OFDODo6omXLlpDL5d97aD88VapUQVhYmPjv5s2b33tIPyRJSUlwdHTEhg0btL6+dOlSrF27Fps3b8a9e/eQP39+tGzZEqmpqf/wSH88vpY7AGjVqpVGHe7fv/8fHOGPy7Vr1+Dq6oq7d+/i4sWLyMjIQIsWLZCUlCS+Z9KkSTh58iQOHTqEa9euITQ0FF26dPmOo/4x+JbcAcDw4cM1am/p0qXfacQ/DiVLlsTixYvx4MED+Pn5oWnTpujYsSNevHgB4B+oOf6HcXZ2pqurq/hYoVCwePHi9Pb2/o6j+vGZM2cOHR0dv/cw/nUA4LFjx8THSqWSRYsW5bJly8TnYmNjaWRkxP3793+HEf64ZM8dSQ4cOJAdO3b8LuP5tyGXywmA165dI6mqMwMDAx46dEh8z6tXrwiAd+7c+V7D/CHJnjuSbNSoESdMmPD9BvUvolChQty+ffs/UnP/2Tss6enpePDgAZo3by4+p6uri+bNm+POnTvfcWT/Dt6+fYvixYujdOnS6Nu3L4KCgr73kP51fPjwAeHh4Ro1aGZmhtq1a0s1+I1cvXoVhQsXRoUKFTB69GhER0d/7yH9kMTFxQEALCwsAAAPHjxARkaGRu1VrFgRNjY2Uu1lI3vuBPbu3QsrKyvY29tj+vTpSE5O/h7D+2FRKBT49ddfkZSUBBcXl3+k5v4T5ofaiIqKgkKhQJEiRTSeL1KkCF6/fv2dRvXvoHbt2vDx8UGFChUQFhYGLy8vNGjQAM+fP0fBggW/9/D+NYSHhwOA1hoUXpPInVatWqFLly4oVaoUAgICMGPGDLRu3Rp37tyBnp7e9x7eD4NSqcTEiRNRr1492NvbA1DVnqGhIczNzTXeK9WeJtpyBwB9+vSBra0tihcvjqdPn2LatGnw9/fH0aNHv+NofwyePXsGFxcXpKamokCBAjh27BgqV66Mx48f/+0195+dsEj8eVq3bi3+v2rVqqhduzZsbW1x8OBBDB069DuOTOL/E7169RL/7+DggKpVq6JMmTK4evUqmjVr9h1H9mPh6uqK58+fS31mf4LccjdixAjx/w4ODihWrBiaNWuGgIAAlClT5p8e5g9FhQoV8PjxY8TFxeHw4cMYOHAgrl279o989n92ScjKygp6eno5OpQjIiJQtGjR7zSqfyfm5uYoX7483r17972H8q9CqDOpBv8aSpcuDSsrK6kO1Rg7dixOnTqFK1euoGTJkuLzRYsWRXp6OmJjYzXeL9VeFrnlThu1a9cGAKn2ABgaGqJs2bJwcnKCt7c3HB0dsWbNmn+k5v6zExZDQ0M4OTnht99+E59TKpX47bff4OLi8h1H9u8jMTERAQEBKFas2Pceyr+KUqVKoWjRoho1GB8fj3v37kk1+CcICQlBdHS0VIdQbZcfO3Ysjh07hsuXL6NUqVIarzs5OcHAwECj9vz9/REUFPT/vva+ljttPH78GACk2tOCUqlEWlraP1Nzf0nr7g/Kr7/+SiMjI/r4+PDly5ccMWIEzc3NGR4e/r2H9kMzefJkXr16lR8+fOCtW7fYvHlzWllZUS6Xf++h/XAkJCTw0aNHfPToEQFw5cqVfPToEQMDA0mSixcvprm5OY8fP86nT5+yY8eOLFWqFFNSUr7zyL8/eeUuISGBU6ZM4Z07d/jhwwdeunSJNWrUYLly5Ziamvq9h/7dGT16NM3MzHj16lWGhYWJ/5KTk8X3jBo1ijY2Nrx8+TL9/Pzo4uJCFxeX7zjqH4Ov5e7du3ecN28e/fz8+OHDBx4/fpylS5dmw4YNv/PIvz8eHh68du0aP3z4wKdPn9LDw4M6Ojq8cOECyb+/5v7TExaSXLduHW1sbGhoaEhnZ2fevXv3ew/ph6dnz54sVqwYDQ0NWaJECfbs2ZPv3r373sP6Ibly5QoB5Pg3cOBAkqqtzbNnz2aRIkVoZGTEZs2a0d/f//sO+gchr9wlJyezRYsWlMlkNDAwoK2tLYcPHy5dbHxBW94AcNeuXeJ7UlJSOGbMGBYqVIgmJibs3Lkzw8LCvt+gfxC+lrugoCA2bNiQFhYWNDIyYtmyZTl16lTGxcV934H/AAwZMoS2trY0NDSkTCZjs2bNxMkK+ffXnA5J/jX3aiQkJCQkJCQk/h7+sz0sEhISEhISEv8dpAmLhISEhISExA+PNGGRkJCQkJCQ+OGRJiwSEhISEhISPzzShEVCQkJCQkLih0easEhISEhISEj88EgTFgkJCQkJCYkfHmnCIiEhISEhIfHDI01YJCQkJCQkJH54pAmLhISEhISExA+PNGGRkJCQkJCQ+OGRJiwSEhISEhISPzz/B6RY1u7Ifb+MAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "kwant.plot(fsyst);" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "550fe914-b5ca-4ffe-811d-0acd6a0a509e", + "metadata": {}, + "outputs": [], + "source": [ + "num_vectors = 10\n", + "vector_factory = kwant.kpm.RandomVectors(fsyst)\n", + "\n", + "init_vectors = [next(vector_factory) for _ in range(num_vectors)]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "1b9a6582-cb15-4be2-a337-0a6678ebe21f", + "metadata": {}, + "outputs": [], + "source": [ + "p_op = kpm_tools.kpm_generator.GeneralVectorExpansion(\n", + " fsyst,\n", + " params={},\n", + " vector_factory=init_vectors,\n", + " coef_function=kpm_tools.kpm_funcs.coef_projector_function,\n", + ")\n", + "\n", + "e_F = 0.2\n", + "p_op_vectors = p_op(e_F)[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "bd8cedbf-68a1-465c-a928-421a4177e5b6", + "metadata": {}, + "outputs": [], + "source": [ + "spectrum_full = kpm_tools.kpm_generator.SpectralDensityIterator(\n", + " fsyst, params={}, vector_factory=init_vectors\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a8db9dde-9efb-492c-a933-6c507fe922a1", + "metadata": {}, + "outputs": [], + "source": [ + "spectrum_projected = kpm_tools.kpm_generator.SpectralDensityIterator(\n", + " fsyst, params={}, vector_factory=p_op_vectors\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "32091904-63ad-4158-b502-a6afc7542652", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + ":Overlay\n", + " .Area.I :Area [x] (y)\n", + " .Area.II :Area [x] (y)" + ] + }, + "execution_count": 9, + "metadata": { + "application/vnd.holoviews_exec.v0+json": {} + }, + "output_type": "execute_result" + } + ], + "source": [ + "(\n", + " hv.Area(\n", + " (spectrum_full.energies,\n", + " spectrum_full.densities.real)\n", + " )\n", + " *\n", + " hv.Area(\n", + " (spectrum_projected.energies,\n", + " spectrum_projected.densities.real)\n", + " ).opts(alpha=0.8)\n", + ").opts(\n", + " xlabel=\"E[t]\",\n", + " ylabel=\"DoS[a.u.]\",\n", + ")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "kt", + "language": "python", + "name": "kt" + }, + "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.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/tutorials/tutorial_tiles.ipynb b/docs/tutorials/tutorial_tiles.ipynb new file mode 100644 index 0000000..ad3fba9 --- /dev/null +++ b/docs/tutorials/tutorial_tiles.ipynb @@ -0,0 +1,1374 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "457fb52c-7f5c-4895-9e1c-de0b3ba559ef", + "metadata": {}, + "source": [ + "# Tutorila Tiles\n", + "\n", + "Tiles is a module to compute vectors that respect a certain symmetry, the symmetry of a superlattice.\n", + "The only requirement for computations to make sense, is that the system is closed and has periodic boundaries, in which case it constitutes a superlattice.\n", + "\n", + "These vectors are used to compute momentum-resolved spectral densities, or expectation values of any operator acting on the closed system.\n", + "\n", + "The advantage of using `tiles` instad of local vectors, is that we can do Brillouin zone-unfolding; a procedure to compute the unfolded bands of superlattices.\n", + "\n", + "Another benefit is that we can compute momentum-resolved spectral densities, even when the translation symmetry is broken or the system is disordered.\n", + "\n", + "For example, if we would like to simulate the ARPES measurement of a non-pristine crystalline surface, the momentum components of a moire superlattice, then can use `tiles` to compute them.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b6bfe28c-e8c4-4b16-adbb-0e63802854fc", + "metadata": {}, + "outputs": [], + "source": [ + "from kpm_tools.tiles import (\n", + " tile_random_kvectors, TileKVectors,\n", + " momentum_to_ts\n", + ")\n", + "from kpm_tools.kpm_generator import SpectralDensityIterator" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "675c9792-2f13-4995-b83d-d6af25219e3c", + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " var force = true;\n", + " var py_version = '3.3.1'.replace('rc', '-rc.').replace('.dev', '-dev.');\n", + " var reloading = false;\n", + " var Bokeh = root.Bokeh;\n", + "\n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks;\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + " if (js_modules == null) js_modules = [];\n", + " if (js_exports == null) js_exports = {};\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + "\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " if (!reloading) {\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " }\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + " window._bokeh_on_load = on_load\n", + "\n", + " function on_error() {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " var skip = [];\n", + " if (window.requirejs) {\n", + " window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n", + " require([\"jspanel\"], function(jsPanel) {\n", + "\twindow.jsPanel = jsPanel\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-modal\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-tooltip\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-hint\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-layout\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-contextmenu\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-dock\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"gridstack\"], function(GridStack) {\n", + "\twindow.GridStack = GridStack\n", + "\ton_load()\n", + " })\n", + " require([\"notyf\"], function() {\n", + "\ton_load()\n", + " })\n", + " root._bokeh_is_loading = css_urls.length + 9;\n", + " } else {\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n", + " }\n", + "\n", + " var existing_stylesheets = []\n", + " var links = document.getElementsByTagName('link')\n", + " for (var i = 0; i < links.length; i++) {\n", + " var link = links[i]\n", + " if (link.href != null) {\n", + "\texisting_stylesheets.push(link.href)\n", + " }\n", + " }\n", + " for (var i = 0; i < css_urls.length; i++) {\n", + " var url = css_urls[i];\n", + " if (existing_stylesheets.indexOf(url) !== -1) {\n", + "\ton_load()\n", + "\tcontinue;\n", + " }\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } var existing_scripts = []\n", + " var scripts = document.getElementsByTagName('script')\n", + " for (var i = 0; i < scripts.length; i++) {\n", + " var script = scripts[i]\n", + " if (script.src != null) {\n", + "\texisting_scripts.push(script.src)\n", + " }\n", + " }\n", + " for (var i = 0; i < js_urls.length; i++) {\n", + " var url = js_urls[i];\n", + " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " for (var i = 0; i < js_modules.length; i++) {\n", + " var url = js_modules[i];\n", + " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " element.type = \"module\";\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " for (const name in js_exports) {\n", + " var url = js_exports[name];\n", + " if (skip.indexOf(url) >= 0 || root[name] != null) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.type = \"module\";\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " element.textContent = `\n", + " import ${name} from \"${url}\"\n", + " window.${name} = ${name}\n", + " window._bokeh_on_load()\n", + " `\n", + " document.head.appendChild(element);\n", + " }\n", + " if (!js_urls.length && !js_modules.length) {\n", + " on_load()\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.1.min.js\", \"https://cdn.holoviz.org/panel/1.3.2/dist/panel.min.js\"];\n", + " var js_modules = [];\n", + " var js_exports = {};\n", + " var css_urls = [];\n", + " var inline_js = [ function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + "function(Bokeh) {} // ensure no trailing comma for IE\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " if ((root.Bokeh !== undefined) || (force === true)) {\n", + " for (var i = 0; i < inline_js.length; i++) {\n", + "\ttry {\n", + " inline_js[i].call(root, root.Bokeh);\n", + "\t} catch(e) {\n", + "\t if (!reloading) {\n", + "\t throw e;\n", + "\t }\n", + "\t}\n", + " }\n", + " // Cache old bokeh versions\n", + " if (Bokeh != undefined && !reloading) {\n", + "\tvar NewBokeh = root.Bokeh;\n", + "\tif (Bokeh.versions === undefined) {\n", + "\t Bokeh.versions = new Map();\n", + "\t}\n", + "\tif (NewBokeh.version !== Bokeh.version) {\n", + "\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n", + "\t}\n", + "\troot.Bokeh = Bokeh;\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " }\n", + " root._bokeh_is_initializing = false\n", + " }\n", + "\n", + " function load_or_wait() {\n", + " // Implement a backoff loop that tries to ensure we do not load multiple\n", + " // versions of Bokeh and its dependencies at the same time.\n", + " // In recent versions we use the root._bokeh_is_initializing flag\n", + " // to determine whether there is an ongoing attempt to initialize\n", + " // bokeh, however for backward compatibility we also try to ensure\n", + " // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n", + " // before older versions are fully initialized.\n", + " if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n", + " root._bokeh_is_initializing = false;\n", + " root._bokeh_onload_callbacks = undefined;\n", + " console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n", + " load_or_wait();\n", + " } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n", + " setTimeout(load_or_wait, 100);\n", + " } else {\n", + " root._bokeh_is_initializing = true\n", + " root._bokeh_onload_callbacks = []\n", + " var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n", + " if (!reloading && !bokeh_loaded) {\n", + "\troot.Bokeh = undefined;\n", + " }\n", + " load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n", + "\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + "\trun_inline_js();\n", + " });\n", + " }\n", + " }\n", + " // Give older versions of the autoload script a head-start to ensure\n", + " // they initialize before we start loading newer version.\n", + " setTimeout(load_or_wait, 100)\n", + "}(window));" + ], + "application/vnd.holoviews_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n var py_version = '3.3.1'.replace('rc', '-rc.').replace('.dev', '-dev.');\n var reloading = false;\n var Bokeh = root.Bokeh;\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n run_callbacks();\n return null;\n }\n if (!reloading) {\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n require([\"jspanel\"], function(jsPanel) {\n\twindow.jsPanel = jsPanel\n\ton_load()\n })\n require([\"jspanel-modal\"], function() {\n\ton_load()\n })\n require([\"jspanel-tooltip\"], function() {\n\ton_load()\n })\n require([\"jspanel-hint\"], function() {\n\ton_load()\n })\n require([\"jspanel-layout\"], function() {\n\ton_load()\n })\n require([\"jspanel-contextmenu\"], function() {\n\ton_load()\n })\n require([\"jspanel-dock\"], function() {\n\ton_load()\n })\n require([\"gridstack\"], function(GridStack) {\n\twindow.GridStack = GridStack\n\ton_load()\n })\n require([\"notyf\"], function() {\n\ton_load()\n })\n root._bokeh_is_loading = css_urls.length + 9;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n var existing_stylesheets = []\n var links = document.getElementsByTagName('link')\n for (var i = 0; i < links.length; i++) {\n var link = links[i]\n if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n }\n }\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.3.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.2/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } var existing_scripts = []\n var scripts = document.getElementsByTagName('script')\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n\texisting_scripts.push(script.src)\n }\n }\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n var url = js_exports[name];\n if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.1.min.js\", \"https://cdn.holoviz.org/panel/1.3.2/dist/panel.min.js\"];\n var js_modules = [];\n var js_exports = {};\n var css_urls = [];\n var inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n\ttry {\n inline_js[i].call(root, root.Bokeh);\n\t} catch(e) {\n\t if (!reloading) {\n\t throw e;\n\t }\n\t}\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n if (!reloading && !bokeh_loaded) {\n\troot.Bokeh = undefined;\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n", + " window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n", + "}\n", + "\n", + "\n", + " function JupyterCommManager() {\n", + " }\n", + "\n", + " JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n", + " if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", + " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", + " comm_manager.register_target(comm_id, function(comm) {\n", + " comm.on_msg(msg_handler);\n", + " });\n", + " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", + " window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n", + " comm.onMsg = msg_handler;\n", + " });\n", + " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", + " google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n", + " var messages = comm.messages[Symbol.asyncIterator]();\n", + " function processIteratorResult(result) {\n", + " var message = result.value;\n", + " console.log(message)\n", + " var content = {data: message.data, comm_id};\n", + " var buffers = []\n", + " for (var buffer of message.buffers || []) {\n", + " buffers.push(new DataView(buffer))\n", + " }\n", + " var metadata = message.metadata || {};\n", + " var msg = {content, buffers, metadata}\n", + " msg_handler(msg);\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " return messages.next().then(processIteratorResult);\n", + " })\n", + " }\n", + " }\n", + "\n", + " JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n", + " if (comm_id in window.PyViz.comms) {\n", + " return window.PyViz.comms[comm_id];\n", + " } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", + " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", + " var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n", + " if (msg_handler) {\n", + " comm.on_msg(msg_handler);\n", + " }\n", + " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", + " var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n", + " comm.open();\n", + " if (msg_handler) {\n", + " comm.onMsg = msg_handler;\n", + " }\n", + " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", + " var comm_promise = google.colab.kernel.comms.open(comm_id)\n", + " comm_promise.then((comm) => {\n", + " window.PyViz.comms[comm_id] = comm;\n", + " if (msg_handler) {\n", + " var messages = comm.messages[Symbol.asyncIterator]();\n", + " function processIteratorResult(result) {\n", + " var message = result.value;\n", + " var content = {data: message.data};\n", + " var metadata = message.metadata || {comm_id};\n", + " var msg = {content, metadata}\n", + " msg_handler(msg);\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " }) \n", + " var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n", + " return comm_promise.then((comm) => {\n", + " comm.send(data, metadata, buffers, disposeOnDone);\n", + " });\n", + " };\n", + " var comm = {\n", + " send: sendClosure\n", + " };\n", + " }\n", + " window.PyViz.comms[comm_id] = comm;\n", + " return comm;\n", + " }\n", + " window.PyViz.comm_manager = new JupyterCommManager();\n", + " \n", + "\n", + "\n", + "var JS_MIME_TYPE = 'application/javascript';\n", + "var HTML_MIME_TYPE = 'text/html';\n", + "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n", + "var CLASS_NAME = 'output';\n", + "\n", + "/**\n", + " * Render data to the DOM node\n", + " */\n", + "function render(props, node) {\n", + " var div = document.createElement(\"div\");\n", + " var script = document.createElement(\"script\");\n", + " node.appendChild(div);\n", + " node.appendChild(script);\n", + "}\n", + "\n", + "/**\n", + " * Handle when a new output is added\n", + " */\n", + "function handle_add_output(event, handle) {\n", + " var output_area = handle.output_area;\n", + " var output = handle.output;\n", + " if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + " var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + " if (id !== undefined) {\n", + " var nchildren = toinsert.length;\n", + " var html_node = toinsert[nchildren-1].children[0];\n", + " html_node.innerHTML = output.data[HTML_MIME_TYPE];\n", + " var scripts = [];\n", + " var nodelist = html_node.querySelectorAll(\"script\");\n", + " for (var i in nodelist) {\n", + " if (nodelist.hasOwnProperty(i)) {\n", + " scripts.push(nodelist[i])\n", + " }\n", + " }\n", + "\n", + " scripts.forEach( function (oldScript) {\n", + " var newScript = document.createElement(\"script\");\n", + " var attrs = [];\n", + " var nodemap = oldScript.attributes;\n", + " for (var j in nodemap) {\n", + " if (nodemap.hasOwnProperty(j)) {\n", + " attrs.push(nodemap[j])\n", + " }\n", + " }\n", + " attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n", + " newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n", + " oldScript.parentNode.replaceChild(newScript, oldScript);\n", + " });\n", + " if (JS_MIME_TYPE in output.data) {\n", + " toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n", + " }\n", + " output_area._hv_plot_id = id;\n", + " if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n", + " window.PyViz.plot_index[id] = Bokeh.index[id];\n", + " } else {\n", + " window.PyViz.plot_index[id] = null;\n", + " }\n", + " } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " var bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " var script_attrs = bk_div.children[0].attributes;\n", + " for (var i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + "}\n", + "\n", + "/**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + "function handle_clear_output(event, handle) {\n", + " var id = handle.cell.output_area._hv_plot_id;\n", + " var server_id = handle.cell.output_area._bokeh_server_id;\n", + " if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n", + " var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n", + " if (server_id !== null) {\n", + " comm.send({event_type: 'server_delete', 'id': server_id});\n", + " return;\n", + " } else if (comm !== null) {\n", + " comm.send({event_type: 'delete', 'id': id});\n", + " }\n", + " delete PyViz.plot_index[id];\n", + " if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n", + " var doc = window.Bokeh.index[id].model.document\n", + " doc.clear();\n", + " const i = window.Bokeh.documents.indexOf(doc);\n", + " if (i > -1) {\n", + " window.Bokeh.documents.splice(i, 1);\n", + " }\n", + " }\n", + "}\n", + "\n", + "/**\n", + " * Handle kernel restart event\n", + " */\n", + "function handle_kernel_cleanup(event, handle) {\n", + " delete PyViz.comms[\"hv-extension-comm\"];\n", + " window.PyViz.plot_index = {}\n", + "}\n", + "\n", + "/**\n", + " * Handle update_display_data messages\n", + " */\n", + "function handle_update_output(event, handle) {\n", + " handle_clear_output(event, {cell: {output_area: handle.output_area}})\n", + " handle_add_output(event, handle)\n", + "}\n", + "\n", + "function register_renderer(events, OutputArea) {\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " var toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[0]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " events.on('output_added.OutputArea', handle_add_output);\n", + " events.on('output_updated.OutputArea', handle_update_output);\n", + " events.on('clear_output.CodeCell', handle_clear_output);\n", + " events.on('delete.Cell', handle_clear_output);\n", + " events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n", + "\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " safe: true,\n", + " index: 0\n", + " });\n", + "}\n", + "\n", + "if (window.Jupyter !== undefined) {\n", + " try {\n", + " var events = require('base/js/events');\n", + " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " } catch(err) {\n", + " }\n", + "}\n" + ], + "application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n console.log(message)\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n })\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n comm.open();\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n }) \n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\n \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "
\n", + "
\n", + "" + ] + }, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "p1002" + } + }, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot, matplotlib.backends\n", + "import holoviews as hv\n", + "hv.extension()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "bb7583fb-dd34-46a3-a6e8-09d7264e2ab8", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5c0635bc-dceb-41d3-9c0f-27156f90fbfe", + "metadata": {}, + "outputs": [], + "source": [ + "import kwant\n", + "from concurrent.futures import ProcessPoolExecutor\n", + "from kpm_tools.kpm_generator import _BaseKPM" + ] + }, + { + "cell_type": "markdown", + "id": "d2058ba6-3d20-4156-80b0-e20d8fe6e9b3", + "metadata": {}, + "source": [ + "We define globally the `honeycomb` lattice, in part to define a `tile`:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "2ec765b7-b2f9-4d4a-9c1d-d329de20226f", + "metadata": {}, + "outputs": [], + "source": [ + "honeycomb = kwant.lattice.honeycomb(norbs=1, name=[\"a\", \"b\"])" + ] + }, + { + "cell_type": "markdown", + "id": "771661d6-0349-4abc-b5d1-43b5cb0a7964", + "metadata": {}, + "source": [ + "However, we don't need to restrict the tiles to one unitcell of the lattice, it could span several unitcells, as long as it's commensurate with the superlattice plus the periodic boundary conditions." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "f211dbd7-57f2-485b-bac3-e4cd0a78dccc", + "metadata": {}, + "outputs": [], + "source": [ + "def make_superlattice(tags_1=[1, 0], tags_2=[0, 1], disorder=0):\n", + " def disorder_onsite(site, disorder):\n", + " return disorder * kwant.digest.uniform(bytes(str(site), \"UTF8\"))\n", + " period_1 = honeycomb.prim_vecs.T @ tags_1\n", + " period_2 = honeycomb.prim_vecs.T @ tags_2\n", + " symm = kwant.TranslationalSymmetry(period_1, period_2)\n", + " builder = kwant.Builder(symmetry=symm)\n", + " \n", + " builder[honeycomb.shape(lambda s: True, (0, 0))] = disorder_onsite\n", + " \n", + " builder[honeycomb.neighbors()] = 1\n", + " \n", + " return kwant.wraparound.wraparound(builder).finalized()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "58d1c852-9565-4973-9cab-b63a377dab40", + "metadata": {}, + "outputs": [], + "source": [ + "fsyst = make_superlattice(tags_1=[3, 0], tags_2=[0, 1], disorder=0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "4738437a-e74c-46a0-b197-18a3081e3560", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "kwant.plot(fsyst);" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "ce2b9a9b-7e6d-49ef-bc36-5918e19f748a", + "metadata": {}, + "outputs": [], + "source": [ + "params = {'k_x': 0, 'k_y': 0, 'disorder': 0}" + ] + }, + { + "cell_type": "markdown", + "id": "fc77edbe-0e11-4694-b061-f33cf9b3c0b9", + "metadata": {}, + "source": [ + "The bounds should be fixed, since we will iterate in reciprocal space" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "524a0c3c-6328-49b9-8ae9-db6d25296739", + "metadata": {}, + "outputs": [], + "source": [ + "def init_kpm_params(fsyst, params):\n", + " num_moments = 300\n", + " kpm_params = {\n", + " \"num_moments\": num_moments,\n", + " \"num_vectors\": 8,\n", + " \"rng\": 0,\n", + " }\n", + " \n", + " bounds = _BaseKPM(\n", + " fsyst,\n", + " params=params,\n", + " num_vectors=1,\n", + " num_moments=2,\n", + " ).bounds\n", + " \n", + " kpm_params[\"bounds\"] = bounds\n", + " \n", + " \n", + " energies = (\n", + " kwant.kpm._chebyshev_nodes(2 * num_moments) * (bounds[1] - bounds[0]) / 2\n", + " + (bounds[1] + bounds[0]) / 2\n", + " )\n", + " return kpm_params, energies" + ] + }, + { + "cell_type": "markdown", + "id": "9da2a896-dcab-4454-9bee-32e45a601728", + "metadata": {}, + "source": [ + "### Define the k-path" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "0b8bb1e8-eeb7-42af-b5ce-f3cb6db233d3", + "metadata": {}, + "outputs": [], + "source": [ + "def make_path_segment(p1, p2, num_k):\n", + " return (\n", + " p1[np.newaxis] \n", + " + np.linspace(0, 1, num_k, endpoint=False)[:, np.newaxis]\n", + " * (p2 - p1)[np.newaxis]\n", + " )\n", + "\n", + "def make_path(points, num_k):\n", + " k_path = np.zeros((0, *points[0].shape))\n", + " for idx in range(len(points)-1):\n", + " p1 = points[idx]\n", + " p2 = points[idx+1]\n", + " k_path = np.concatenate([k_path, make_path_segment(p1, p2, num_k)], axis=0)\n", + " return k_path" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "045e02ab-e776-4f8c-a625-d8b7a7d19722", + "metadata": {}, + "outputs": [], + "source": [ + "p_gamma = np.array([0 ,0])\n", + "p_m = np.array([1/2,-1/(2*np.sqrt(3))])\n", + "p_K = np.array([2/3, 0])\n", + "p_Kp = p_K + 2 * (p_m - p_K)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "2e523a23-013c-4bac-9bd9-2069a17b958b", + "metadata": {}, + "outputs": [], + "source": [ + "points = np.array([p_gamma, p_m, p_K, p_gamma, p_Kp]) * 2 * np.pi\n", + "num_k = 50\n", + "\n", + "points = points\n", + "\n", + "k_path = make_path(points, num_k)\n", + "num_k_full = len(k_path)\n", + "\n", + "k_path_lengths = np.cumsum(np.append(0, np.linalg.norm(np.diff(k_path, axis=0), axis=1)))\n", + "\n", + "xticks = [(k_path_lengths[num_k * 0], '$\\Gamma$'),\n", + " (k_path_lengths[num_k * 1], '$M$'),\n", + " (k_path_lengths[num_k * 2], '$K$'),\n", + " (k_path_lengths[num_k * 3], '$\\Gamma$'),\n", + " (k_path_lengths[num_k * 4-1], \"$K'$\"),\n", + " ]" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "8996547d-f0fa-4442-8aab-d2b072e9695b", + "metadata": {}, + "outputs": [], + "source": [ + "def density_in_k(k, tile):\n", + " kvecs = tile_random_kvectors(k, tile, fsyst)\n", + "\n", + " # update boundary conditions to be periodic like `k`\n", + " k_in_ts = momentum_to_ts(k, fsyst._wrapped_symmetry)\n", + " params.update(dict(zip(fsyst._momentum_names, k_in_ts)))\n", + " \n", + " spectrum_k = SpectralDensityIterator(\n", + " fsyst,\n", + " params=params,\n", + " vector_factory=kvecs,\n", + " **kpm_params,\n", + " )\n", + " \n", + " return spectrum_k.densities" + ] + }, + { + "cell_type": "markdown", + "id": "807a4c8a-a6f6-4d58-940d-e8023eae3d91", + "metadata": {}, + "source": [ + "### Typical k-path plot\n", + "Here, we obtain the Brillouin zone-unfolded typical k-path for graphene or the honeycomb lattice.\n", + "\n", + "Notice that the `tile` controls the translational symmetry of the KPM vectors used in the expansion, and it has no effect that the superlattice is skewed, since the periodic boundaries are take periodic in `k`, just like the vectors." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "9cef7201-f90c-4ef0-bac6-1491b7ee9713", + "metadata": {}, + "outputs": [], + "source": [ + "params[\"disorder\"] = 0" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "bb89c79f-8d64-4332-bee6-7f3abcf95851", + "metadata": {}, + "outputs": [], + "source": [ + "kpm_params, energies = init_kpm_params(fsyst, params)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "1fb80ad3-cb3d-404e-8fb9-f29afbce0797", + "metadata": {}, + "outputs": [], + "source": [ + "tile = kwant.TranslationalSymmetry(*honeycomb.prim_vecs)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "d56aab9a-723d-423d-8ee3-dfbaac7bd039", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 117 ms, sys: 37 ms, total: 154 ms\n", + "Wall time: 20.6 s\n" + ] + } + ], + "source": [ + "%%time\n", + "with ProcessPoolExecutor() as executor:\n", + " densities_unfolded = np.array(list(executor.map(\n", + " density_in_k,\n", + " k_path,\n", + " [tile] * num_k_full,\n", + " )))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "91a4c605-d275-48ba-b966-bc71337e2942", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 147 ms, sys: 42.3 ms, total: 189 ms\n", + "Wall time: 21.2 s\n" + ] + } + ], + "source": [ + "%%time\n", + "with ProcessPoolExecutor() as executor:\n", + " densities_folded = np.array(list(executor.map(\n", + " density_in_k,\n", + " k_path,\n", + " [fsyst._wrapped_symmetry] * num_k_full,\n", + " )))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "c1901035-50aa-43be-b92e-1a7cacc910bf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + ":Layout\n", + " .QuadMesh.I :QuadMesh [$k$,$\\epsilon$] ($\\rho(\\epsilon, k)$)\n", + " .QuadMesh.II :QuadMesh [$k$,$\\epsilon$] ($\\rho(\\epsilon, k)$)" + ] + }, + "execution_count": 20, + "metadata": { + "application/vnd.holoviews_exec.v0+json": {} + }, + "output_type": "execute_result" + } + ], + "source": [ + "plot_kpath_unfolded = hv.QuadMesh(\n", + " (k_path_lengths, energies, densities_unfolded.T.real),\n", + " kdims=[r'$k$', r'$\\epsilon$'],\n", + " vdims=hv.Dimension(r'$\\rho(\\epsilon, k)$', range=(0, 50)),\n", + ").opts(\n", + " xticks=xticks,\n", + " colorbar=True,\n", + " cmap='bone_r',\n", + " title=\"k-path unfolded\",\n", + ")\n", + "\n", + "plot_kpath_folded = hv.QuadMesh(\n", + " (k_path_lengths, energies, densities_folded.T.real),\n", + " kdims=[r'$k$', r'$\\epsilon$'],\n", + " vdims=hv.Dimension(r'$\\rho(\\epsilon, k)$', range=(0, 50)),\n", + ").opts(\n", + " xticks=xticks,\n", + " colorbar=True,\n", + " cmap='bone_r',\n", + " title=\"k-path folded\",\n", + ")\n", + "\n", + "plot_kpath_folded + plot_kpath_unfolded" + ] + }, + { + "cell_type": "markdown", + "id": "852d4b7b-a921-40b6-9b71-6124aa100635", + "metadata": {}, + "source": [ + "### Zone-unfolded k-path plot\n", + "Now we can add noise to the system. This will break the translational symmetry of the lattice, and only the translational symmetry of the superlattice will remain unbroken.\n", + "\n", + "In this case, we expect to see some avoided crossing evidencing the zone-unfolding procedure." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "34ea44ad-63b8-43b8-89a6-d8452127a743", + "metadata": {}, + "outputs": [], + "source": [ + "params[\"disorder\"] = 1" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "2c1e9291-7f0e-47f5-a8ac-2f5cfcb49947", + "metadata": {}, + "outputs": [], + "source": [ + "kpm_params, energies = init_kpm_params(fsyst, params)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "e72537f8-8629-42f2-989d-5a586bbb159a", + "metadata": {}, + "outputs": [], + "source": [ + "tile = kwant.TranslationalSymmetry(*honeycomb.prim_vecs)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "f1e03450-3e0d-4de8-8233-8173f0076a84", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 119 ms, sys: 55.9 ms, total: 175 ms\n", + "Wall time: 24.3 s\n" + ] + } + ], + "source": [ + "%%time\n", + "with ProcessPoolExecutor() as executor:\n", + " densities_unfolded = np.array(list(executor.map(\n", + " density_in_k,\n", + " k_path,\n", + " [tile] * num_k_full,\n", + " )))" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "3b8f3141-b8b1-4e0b-87f0-aecba03ef934", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 134 ms, sys: 55.6 ms, total: 190 ms\n", + "Wall time: 21.2 s\n" + ] + } + ], + "source": [ + "%%time\n", + "with ProcessPoolExecutor() as executor:\n", + " densities_folded = np.array(list(executor.map(\n", + " density_in_k,\n", + " k_path,\n", + " [fsyst._wrapped_symmetry] * num_k_full,\n", + " )))" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "c926d1ec-8450-463c-806c-9b04f9c7a517", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + ":Layout\n", + " .QuadMesh.I :QuadMesh [$k$,$\\epsilon$] ($\\rho(\\epsilon, k)$)\n", + " .QuadMesh.II :QuadMesh [$k$,$\\epsilon$] ($\\rho(\\epsilon, k)$)" + ] + }, + "execution_count": 26, + "metadata": { + "application/vnd.holoviews_exec.v0+json": {} + }, + "output_type": "execute_result" + } + ], + "source": [ + "plot_kpath_unfolded = hv.QuadMesh(\n", + " (k_path_lengths, energies, densities_unfolded.T.real),\n", + " kdims=[r'$k$', r'$\\epsilon$'],\n", + " vdims=hv.Dimension(r'$\\rho(\\epsilon, k)$', range=(0, 50)),\n", + ").opts(\n", + " xticks=xticks,\n", + " colorbar=True,\n", + " cmap='bone_r',\n", + " title=\"k-path unfolded\",\n", + ")\n", + "\n", + "plot_kpath_folded = hv.QuadMesh(\n", + " (k_path_lengths, energies, densities_folded.T.real),\n", + " kdims=[r'$k$', r'$\\epsilon$'],\n", + " vdims=hv.Dimension(r'$\\rho(\\epsilon, k)$', range=(0, 50)),\n", + ").opts(\n", + " xticks=xticks,\n", + " colorbar=True,\n", + " cmap='bone_r',\n", + " title=\"k-path folded\",\n", + ")\n", + "\n", + "plot_kpath_folded + plot_kpath_unfolded" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "kt", + "language": "python", + "name": "kt" + }, + "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.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/poetry.lock b/poetry.lock index ffa6612..cbb18cf 100644 --- a/poetry.lock +++ b/poetry.lock @@ -926,13 +926,13 @@ flake8 = ">=5.0.0" [[package]] name = "flake8-bugbear" -version = "23.9.16" +version = "23.11.26" description = "A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle." optional = false python-versions = ">=3.8.1" files = [ - {file = "flake8-bugbear-23.9.16.tar.gz", hash = "sha256:90cf04b19ca02a682feb5aac67cae8de742af70538590509941ab10ae8351f71"}, - {file = "flake8_bugbear-23.9.16-py3-none-any.whl", hash = "sha256:b182cf96ea8f7a8595b2f87321d7d9b28728f4d9c3318012d896543d19742cb5"}, + {file = "flake8-bugbear-23.11.26.tar.gz", hash = "sha256:8e36119071bab626b6dab834fadd6d03c06090e9b189e67b4905821df8212fee"}, + {file = "flake8_bugbear-23.11.26-py3-none-any.whl", hash = "sha256:55d00c8a3c48c995c1f0ec0df54f8c9cf530c06035ce53975a03517d2e7f53e5"}, ] [package.dependencies] @@ -1153,13 +1153,13 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.5" +version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.5-py3-none-any.whl", hash = "sha256:79b8f0ac92d2351be5f6122356c9a592c96d81c9a79e4b488bf2a6a15f88057a"}, - {file = "idna-3.5.tar.gz", hash = "sha256:27009fe2735bf8723353582d48575b23c533cc2c2de7b5a68908d91b5eb18d08"}, + {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, + {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, ] [[package]] @@ -1256,13 +1256,13 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio" [[package]] name = "ipython" -version = "8.18.0" +version = "8.18.1" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.9" files = [ - {file = "ipython-8.18.0-py3-none-any.whl", hash = "sha256:d538a7a98ad9b7e018926447a5f35856113a85d08fd68a165d7871ab5175f6e0"}, - {file = "ipython-8.18.0.tar.gz", hash = "sha256:4feb61210160f75e229ce932dbf8b719bff37af123c0b985fd038b14233daa16"}, + {file = "ipython-8.18.1-py3-none-any.whl", hash = "sha256:e8267419d72d81955ec1177f8a29aaa90ac80ad647499201119e2f05e99aa397"}, + {file = "ipython-8.18.1.tar.gz", hash = "sha256:ca6f079bb33457c66e233e4580ebfc4128855b4cf6370dddd73842a9563e8a27"}, ] [package.dependencies] @@ -1272,7 +1272,7 @@ exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} jedi = ">=0.16" matplotlib-inline = "*" pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} -prompt-toolkit = ">=3.0.30,<3.0.37 || >3.0.37,<3.1.0" +prompt-toolkit = ">=3.0.41,<3.1.0" pygments = ">=2.4.0" stack-data = "*" traitlets = ">=5" @@ -1561,13 +1561,13 @@ test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "p [[package]] name = "jupyter-lsp" -version = "2.2.0" +version = "2.2.1" description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter-lsp-2.2.0.tar.gz", hash = "sha256:8ebbcb533adb41e5d635eb8fe82956b0aafbf0fd443b6c4bfa906edeeb8635a1"}, - {file = "jupyter_lsp-2.2.0-py3-none-any.whl", hash = "sha256:9e06b8b4f7dd50300b70dd1a78c0c3b0c3d8fa68e0f2d8a5d1fbab62072aca3f"}, + {file = "jupyter-lsp-2.2.1.tar.gz", hash = "sha256:b17fab6d70fe83c8896b0cff59237640038247c196056b43684a0902b6a9e0fb"}, + {file = "jupyter_lsp-2.2.1-py3-none-any.whl", hash = "sha256:17a689910c5e4ae5e7d334b02f31d08ffbe98108f6f658fb05e4304b4345368b"}, ] [package.dependencies] @@ -4132,18 +4132,18 @@ telegram = ["requests"] [[package]] name = "traitlets" -version = "5.13.0" +version = "5.14.0" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" files = [ - {file = "traitlets-5.13.0-py3-none-any.whl", hash = "sha256:baf991e61542da48fe8aef8b779a9ea0aa38d8a54166ee250d5af5ecf4486619"}, - {file = "traitlets-5.13.0.tar.gz", hash = "sha256:9b232b9430c8f57288c1024b34a8f0251ddcc47268927367a0dd3eeaca40deb5"}, + {file = "traitlets-5.14.0-py3-none-any.whl", hash = "sha256:f14949d23829023013c47df20b4a76ccd1a85effb786dc060f34de7948361b33"}, + {file = "traitlets-5.14.0.tar.gz", hash = "sha256:fcdaa8ac49c04dfa0ed3ee3384ef6dfdb5d6f3741502be247279407679296772"}, ] [package.extras] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.6.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"] [[package]] name = "typeguard" diff --git a/pyproject.toml b/pyproject.toml index 40f0450..f693521 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "kpm-tools" -version = "0.0.4" +version = "0.0.5" description = "KPM Tools" authors = ["Pablo Piskunow "] license = "BSD 2-Clause" diff --git a/src/kpm_tools/kpm_funcs.py b/src/kpm_tools/kpm_funcs.py index 440452a..5179a50 100644 --- a/src/kpm_tools/kpm_funcs.py +++ b/src/kpm_tools/kpm_funcs.py @@ -8,7 +8,7 @@ def greens_function(syst, params, **kwargs): - """Build a Green's function operator using KPM. + """Build the retarded Green's function operator using KPM. Returns a function that takes an energy or a list of energies, and returns the Green's function with that energy acting on `vectors`. @@ -38,15 +38,17 @@ def greens_function(syst, params, **kwargs): acting on the vectors, for those energies. """ - return general_function(syst, params, coef_function=coef_greens_function, **kwargs) + return general_function( + syst, params, coef_function=coef_greens_function_r, **kwargs + ) def delta_function(syst, params, **kwargs): - """Build a projector over the occupied energies. + """Build a projector onto the Fermi energy. Returns a function that takes a Fermi energy, and returns the - projection of the `vectors` over the occupied energies of the - Hamiltonian. + projection of the `vectors` onto the states that have the + same Fermi energy. Parameters ----------