{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Integrators" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ultimately what we are trying to do is to arrive at a generalized integrator of systems of derivatives that will allow us to inject our own callback functions at the relevant times.\n", "\n", "But equivalently, we don't want to have to copy our code multiple different places to implement a different integrator. Thus our goal is to have generalized code. It is here that object oriented code shines.\n", "\n", "The approach is this:\n", "\n", "* Write a generalized abstract base class for an integrator that defines the callbacks that MUST be implemented\n", "* Generate implementations for different integrators (still abstract since no implementation of callbacks is provided)\n", "* Finalize the integrator by merging with a class that finally defines the callback functions\n", "* Generate concrete classes for each integrator" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2026-06-11T00:10:54.192714Z", "iopub.status.busy": "2026-06-11T00:10:54.192579Z", "iopub.status.idle": "2026-06-11T00:10:55.646516Z", "shell.execute_reply": "2026-06-11T00:10:55.645159Z" } }, "outputs": [], "source": [ "# IMPORTS\n", "from __future__ import division, print_function\n", "import matplotlib.pyplot as plt, numpy as np\n", "%matplotlib inline\n", "import PDSim.core.integrators as integrators # The abstract integrators with callback functions\n", "from PDSim.misc.datatypes import arraym # An optimized list-like object with rapid element-wise operators" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2026-06-11T00:10:55.648534Z", "iopub.status.busy": "2026-06-11T00:10:55.648236Z", "iopub.status.idle": "2026-06-11T00:10:55.653300Z", "shell.execute_reply": "2026-06-11T00:10:55.652537Z" } }, "outputs": [], "source": [ "class TestIntegrator(object):\n", " \"\"\"\n", " Implements the functions needed to satisfy the abstract base class requirements\n", " \"\"\"\n", "\n", " def __init__(self):\n", " self.x, self.y = [], []\n", "\n", " def post_deriv_callback(self): \n", " \"\"\" Don't do anything after the first call is made to deriv function \"\"\"\n", " pass\n", "\n", " def premature_termination(self): \n", " \"\"\" Don't ever stop prematurely \"\"\"\n", " return False\n", "\n", " def get_initial_array(self):\n", " \"\"\" The array of initial values\"\"\"\n", " return arraym([1.0])\n", "\n", " def pre_step_callback(self): \n", " if self.Itheta == 0:\n", " self.x.append(self.t0)\n", " self.y.append(self.xold[0])\n", "\n", " def post_step_callback(self): \n", " self.x.append(self.t0)\n", " self.y.append(self.xold[0])\n", "\n", " def derivs(self, t0, xold):\n", " return arraym([xold[0]])\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And now we define the actual concrete implementations of the integrators, which are formed of the common functions and the abstract integrator" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true, "execution": { "iopub.execute_input": "2026-06-11T00:10:55.654908Z", "iopub.status.busy": "2026-06-11T00:10:55.654742Z", "iopub.status.idle": "2026-06-11T00:10:55.658625Z", "shell.execute_reply": "2026-06-11T00:10:55.657728Z" } }, "outputs": [], "source": [ "class TestEulerIntegrator(TestIntegrator, integrators.AbstractSimpleEulerODEIntegrator):\n", " \"\"\" Mixin class using the functions defined in TestIntegrator \"\"\"\n", " pass\n", "\n", "class TestHeunIntegrator(TestIntegrator, integrators.AbstractHeunODEIntegrator):\n", " \"\"\" Mixin class using the functions defined in TestIntegrator \"\"\"\n", " pass\n", "\n", "class TestRK45Integrator(TestIntegrator, integrators.AbstractRK45ODEIntegrator):\n", " \"\"\" Mixin class using the functions defined in TestIntegrator \"\"\"\n", " pass\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And now we actually implement the integrators, for a few different levels of precision. Look how nicely RK45 fares!" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2026-06-11T00:10:55.660235Z", "iopub.status.busy": "2026-06-11T00:10:55.660055Z", "iopub.status.idle": "2026-06-11T00:10:55.807813Z", "shell.execute_reply": "2026-06-11T00:10:55.807099Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh8AAAGdCAYAAACyzRGfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAp9xJREFUeJzs3Qd8U9UXB/Bf0qR7703LaBlllSkbZIniQkUQBVwooCAOnH/FwVBkiSKiMgRENgjIhtICZbRA9957N93N+n/uTZvu0pa2dJyvn3zy8t7LS9rwMafnnnuuQKlUKkEIIYQQ0kqErfVChBBCCCEUfBBCCCGk1VHmgxBCCCGtioIPQgghhLQqCj4IIYQQ0qoo+CCEEEJIq6LggxBCCCGtioIPQgghhLQqEdoYhUKBpKQkGBgYQCAQPOy3QwghhJAGYD1L8/LyYGtrC6FQ2L6CDxZ4ODg4POy3QQghhJAmiI+Ph729ffsKPljGo/zNGxoaPuy3QwghhJAGkEgkPHlQ/j3eroKP8qEWFnhQ8EEIIYS0Lw0pmaCCU0IIIYS0Kgo+CCGEENKqKPgghBBCSKtqczUfDZ3OI5PJIJfLH/ZbIY2koaEBkUhE06gJIaQTa3fBR2lpKZKTk1FYWPiw3wppIl1dXdjY2EBTU5N+h4QQ0gm1q+CDNSCLjo7mfz2zJibsy4sakbWvjBULHtPT0/nn2KNHj/s2oiGEENLxtKvgg31xsQCEzSNmfz2T9kdHRwdisRixsbH889TW1n7Yb4kQQkgra5d/dtJfy+0bfX6EENK5tcvggxBCCCHtFwUfhBBCSCcS63cX25e9ze8flk4bfMgVSlyPzMSxu4n8nj1u6y5fvswLbHNych72WyGEENJOC/899+1EVmI8v2ePH4ZOGXycDkjGqDUXMWubN5bsu8vv2WO2v6XMmzePBw7Vb1OnTkVbFxERwRcKMjY2fthvhRBCyAOIveeL1Mhwvs3u2eOHodMFHyzAeHu3L5Jzi6vsT8kt5vtbMgBhgQbrUVL59vfff6M1sRkmjSGVSjFr1iyMHj26xd4TIYSQlseyHF7/7EZidi7yi0sgEArhtX/3Q8l+tPvgg/3SCktlDbrlFUvx5fFA1PZrLt/31fEgfl5DrtfYD0xLSwvW1tZVbiYmJvxYTEwMz4TcvVsxBseGV9g+NtxSl2vXrmHMmDF8Ciubgvzuu++ioKBAfdzJyQnffvstz7wYGRnhjTfeaNR7/vzzz9GzZ0+88MILjXoeIYSQNpj1iArHvpv3cPROEJQKxUPLfrSrPh+1KZLK0ft/Z5rlWiyUSJEUo+9XZxt0ftDXU6Cr+fB+hf7+/pgyZQq++eYb/PHHH7x51+LFi/lt+/bt6vN++OEHfPHFFzyQKMeCGnYOC0rqcvHiRRw4cIAHRIcPH27xn4cQQkgLZj3270Z6XgGSc/MwuY8L31+e/ejS371Vm3a2+8xHe3LixAno6+tXubHAoalYUDF79mwsXbqUdwsdMWIENm3ahF27dqG4uGJYacKECfjggw/QvXt3fmNcXV15JqQumZmZPDDZsWMHDA0Nm/weCSGEtJ1aj3vxSdASaaCntQXf/7CyH+0+86Ej1uAZiIa4GZ2Fedtv3fe8HfOHYKizaYNeuzHGjx+PLVu2VNlnanr/16mLj48PLwbds2dPlei2vA19r169+L7BgwfXeG5ISEi912bDMyywYUM6hBBC2n/WAxDgXnwyetlYQSyq9P0lELR69qPdBx/sF9XQoY/RPSxgY6TNi0trq9Zgv3JrI21+noaw+T8APT09deahrq6fletIWLFnfViQsWDBAl7nUZ2jo2OV120sNuRy/PhxrF27Vv2+2OuxFWl/++03vPrqq42+JiGEkNYnl8mQl5GO9Ly8KkMuakol8jIy+HkisbhV3lO7Dz4agwUUX07vzWe1sNCicgBSHmqw4y0ReNyPhYUqBcZmwAwcOJBvVy4+rY27uzsCAwPrDGgexPXr1yGXy9WPjx07hjVr1vACVzs7u2Z/PUIIIS2DBRSzvvkBcx6bzIdc3vr4Mzj36VvlHF0j41YLPPh7Qicz1c0GW+a4Y8W/QVWm27KMBws82PGWUlJSgpSUlCr7WCbB3Nycz1YZPnw4Vq9ezWeoZGRkVCkQrc3y5cv5cxYtWsSHSViGIzg4GOfOncNPP/1U73PZDJZVq1bhmWeeqfV4+ZBNudu3b/PsjJubW4N/XkIIIW1DZkI8fKNi0beLPYY+/iSEwsaVDTS3Thd8MCzAmNTbmteApOUVw9JAm9d4tHTG4/Tp07CxqRrcsMLP8vqLP//8kw9nsBoNtv/777/H5MmT67xev3794OHhgc8++4z34WBDI926dcPMmTPv+15CQ0ORm5vbDD8VIYSQtu7CkYN8yOWtV+Y89MCDESgfVm/VOkgkEj4Lg30xVp9lwWZwsEJKZ2dnWoq9HaPPkRBCWk9pcRGeGT4Y5wNDEXLHF85u/Vr9+7s6mmpLCCGEdGCRt2/AJzoOA7s5walarcfDQsEHIYQQ0oGdObQfqZJ8PPvU063aSKw+FHwQQgghHVShJBcnz56HjqYYL7/1NtoKCj4IIYSQDir0uhfuxCZiaE8X2Dh3Q1tBwQchhBDSQZ08sA+ZBYV44fnn0JZQ8EEIIYR0QJL0NJzzvAoDbS3MfrPtDLkwFHwQQgghHVCg5yXcjU/CyH5uMLa0QltCwQchhBDSAf27fx8kRSWYPecltDUUfLQjly9f5tOkcnJyHvZbIYQQ0oZlxMXg0i1fmOjpYMa819DWdN7gQyEHoj0B/4Oqe/a4Bc2bN48HDtVvU6dORVvtQsrec9++ffn6M08//XSNc9gieLNnz+at4Nm6L0uXLn0o75UQQkhVAVcuwi8hGeOGDIKuQf3dRh+GTrm2C4KOA6eXA5Kkin2GtsDUNUDvJ1vsZVmgsX379ir7tLS00JpKS0uhqal53/PYirZssbt3330Xhw4dqnOhPLYaL1tbZv369S3wbgkhhDQWWzXl8D/7UFgqxctz59U4nhYrwbVDERgxozssuzycwETYKQOP/a9UDTwYSbJqPzveQligYW1tXeVmYmLCj8XExPBMyN27d9Xns+EVto8Nt9SFLXE/ZswYHig4ODjwYKGgoEB9nK2Q++233/IsBuu5z1a/bQi2Qu6WLVv4+ex91oZde+PGjXjllVf4tQkhhDx8yeEhuOYfBCtDAzz+4uwax0O8U5AYloNQ76qrrLem9h98sHXxSgsadiuWAP99xJ5U24VUdywjws5ryPUe8pp8/v7+mDJlCp599ln4+fnhn3/+gZeXFxYvXlzlvB9++AFubm7w8fHBF198wfexoGbHjh0P6Z0TQghpKfcunUdAYiomjnwEmto6fJ8ks4hnPNLj8hB6PZnvC7+dyh+z/ex4a2r/wy7SQmClbTNdTKnKiKx2aNjpnyYBmnoNvvqJEyegr69fZd/y5cvVAUFjsaCC1VyU11r06NEDmzZtwtixY3nWQltbm++fMGECPvjggyrPZXUalK0ghJCORSGX48iBAyiRyTC/Uqb7r8+u1zi3KE+K/StvqR8v+nVCq73P9h98tCPjx4/nQUFlpqamTb4ey2RERERgz549Vcb6FAoFoqOj0atXL75v8ODBNZ4bEhLS5NclhBDSNsX538WN0Ag4mJlg3PSKiQIT5/fGhZ3BUCpqZuwFQgEenav6vmgt7T/4EOuqMhANEXsN2NOAFrMvHQS6jGjYazcCq6Po3r17rcfYbJHy4KGcVCqt93osyFiwYAGv86jO0dGxyusSQgjp+HzOn0FQcirmPf0kNEQVX/Guw6xhZKmDQ2t8ajzn+Y8Hw8LRoO3WfHz11Vc1popWLkZkX5zsHFtbW14AOW7cOAQGBqJFseWB2dBHQ27dJqhmtaCuJYUFgKGd6ryGXK8ZlyZms0bKp6+Wq1x8Wht3d3f++2UBTfVbQ2a0EEII6TikpSU4dPgw5HIF3lz8To3jCcFZVXc031dYyxec9unTh39Blt9Y0WO577//HuvWrcPmzZtx69YtHphMmjQJeXl5aBOEGqrptLX+1sseT12tOq8FsKmpKSkpVW4ZGRn8GAvWhg8fjtWrVyMoKAhXrlzB559/Xu/1WL3I9evXsWjRIh6ohIeH4/jx43jnnZr/6Krr2bMnjhw5Uu857H2w62ZlZSE3N5dvVw+Iyvfl5+cjPT2db7PnEUIIaV1RPrdwMzIGrvY2GDx2fI3jkXfS+b2ekSbGznaFpaMBdA01oWMgbvWPqtHDLqzhVG1TL1nWY8OGDbznA5t9wezcuRNWVlbYu3cvHx5oE1gfjxd21dHnY3WL9vk4ffo0bGxsahR+ltdf/Pnnn3j11Vd5jQbbz4K5yZMn13m9fv36wcPDg//OR48ezT+Dbt26YebMmfd9L6GhoTygqM+0adMQGxurfjxw4MAaQ0Pl+8prUNhn3aVLFz51mBBCSOvxPHkMUWmZ+Pit1/nIRGVsRktGfD4EGsDznw6BnpEW+oy2hUKmhIa49Se+CpSVv0nugw2psBkWbJYE61kxbNgwrFy5El27dkVUVBT/4vP19a3yhfTUU0/B2NiYByJ1ZQPYrZxEIuH9KtgXo6GhYY2um6yQ0tnZWT2To8lYR1NWA5KfCuhbqWo8WijjQdBynyMhhBAU5+fjuVFDcTYgFGF+9+DU263Kb+X8jiDe18NlmBUmze/TIr8x9v3N4oPavr8fKPPBgo1du3bBxcUFqampvHnViBEjeN0BG0JgWKajMva48l/P1a1atQorVqxAq2OBhvPo1n9dQgghpJmFenvhdnQ8BvXoViPwKJSU8p4eTL9xDWwl0cIalWt57LHHMGPGDL7ex8SJE3Hy5Em+v3JWo3qqhyVWqu+r7JNPPuFRUvktPj6+8T8FIYQQ0on9d3A/UiX5eOG5mjM6g7wS+fCKlbMhv7UFDzTQw6ZwskCEFTqW14GUZ0DKpaWl1ciGVMaGb1h6pvKNEEIIIQ2Tl5WBU5cuw0BbC6+8vajKMTbzJcAjkW/3HWePtuKBgg9WqxEcHMyLKNn4PQtAzp07V2URM1YQyYZmCCGEENL8Aj0v425cEkb1d4OZrV2VY1F30lGQWwodQ010H2TZZn79jar5YC26p0+fzhtYsYwGq/lgBSZz587lQyuszTcrQGVtvtmNbevq6vIW4IQQQghpfof37kZecQlenvNyjWP+lxP4PZvZoiESts/gIyEhAbNmzeK9KVhTLNaXwtvbm0+tZD766CMUFRVh4cKFyM7O5gWqZ8+ehYFB63ZOI4QQQjqDrKQEnPe+BStDfTz58twqx9Lj85AckQuhUAC30VUzIu0q+Ni3b1+9x1n2g03HZTdCCCGEtCyf86cRkJiCFx4dBz0j4yrH/C+psh7d3C2gZ6zVpj6KtpODIYQQQkiDsdmk+3bvhlSuwLxKK9gyRfmlCLulml7bd3zbmF5bGQUfhBBCSDuUGhUBz3sB6G5ljjGPV+3OHeSVBLlUwReMs+7a9maRUvDRjly+fJkPbeXk5Dzst0IIIeQh8/z3CCLSMjFt/Fho6lSssq6oNL2233j7enttPSydNviQK+S4lXILp6JO8Xv2uCXNmzevxorA7DZ16lS01UCHtcZn06hZP5cBAwZgz549Vc5hCwuymUxsHRqhUMhnOxFCCGl50fd8sHPHDmhoCDFvwdtVj/llID+7BNr6YnQf3Ham1z7QwnIdwfnY81h9czVSC1XjYYyVrhU+HvoxJnaZ2GKvywKN7du312iy1ppY7xVNTc37nnft2jW+cB1bOZc1iWPdbF955RXeBI5Nty7v88JmPbGF7davX98K754QQohSqcTFP7fiZlQc+tnboO/I0bUWmvYZZQuRuG2uWSbsjIHHssvLqgQeTFphGt/PjrcUFmiwRmyVbyYmJvwYWwWWZUIqL1nPhlfYPpaFqC9IGDNmDHR0dPiCfO+++y4KCgrUx52cnHg/FpZ5YQv+vFGtKKkun376Kb755hveII4tGMiuy4KnI0eOVLn2xo0beVDCrk0IIaTlxd7zxd2AAKTnFWCIkz0SAv3VxzIT85EYlgMBm147tm1Nr+1QwQeLAAulhQ265ZXkYdXNVVCi5kK+yrL/WEaEndeQ6zViQeAW4e/vjylTpuDZZ5+Fn58f/vnnH3h5eWHx4sVVzmMrEbu5ufEl77/44gu+jwU1O3bsaNTrsbV3TE1Nm/VnIIQQ0nDse8dr31+4GZ0AE10dXmzqtX+3+vvIr6ypWNcB5tA3aburhrf7YZciWRGG7R3WbNdjGZER+xrWDv7G7BvQFVcU+dzPiRMnoK+vX2UfG9YoDwgaiwUVrOaivNaCdZXdtGkTxo4diy1btqiXq58wYQLvTlsZq9NoTLbi4MGDuHXrFrZu3dqk90oIIaR5sh5x4SG4F5+EMS5dwUpJUyPD+X7rHv0QdiNFXWjalrX74KM9GT9+PA8KKnuQTALLZERERFQpBGXRr0KhQHR0NHr16sX3DR48uMZzQ0JCGvw6bNiHDdts27YNffr0afL7JYQQ0nQ86/HPbvgnpKBEJscQZ1WAIRAKefaj97ilkJUqYGanD5vuVRuOtTXtPvjQEenwDERD+KT6YOGFhfc975dHf8Egq0ENeu3GYLNGunfvXusxNluEqTyUI5VK670eCzIWLFjA6zGqY+vvVH7dpmILA7IC03Xr1vHaDkIIIQ9H7D1fpEaF42Z0PLpbmsFUT5V5VyoUPPtRXOgJwLbNTq/tUMEH+wU3dOhjhO0IPquFFZfWVvchgIAfZ+dpCFu3QpjNGimfvjpw4EC+Xbn4tDbu7u4IDAysM6B5UCzj8cQTT2DNmjV48803W+Q1CCGENDDrsX83MvMLEZWehVnD+lc7QwBJ2iUYWL+CHkOt0Na1+4LTxmABBZtOWx5oVFb+ePnQ5S0WeLCpqSkpKVVubJE+hs1WYQv1rV69GkFBQbhy5Qo+//zzeq/H6kWuX7+ORYsW8UAlPDwcx48fxzvvvHPf99KzZ88qM1dqCzwef/xxnlWZMWOG+v1mZWVVOY+9Lrvl5+cjPT2db7P3TwghpPnIZTJI0lJxKyYe2mIR+trZVDtDCaUiD70esYJYs21Or+1QmY/GYn081o1bV2ufDxZ4tGSfj9OnT/OmXdULP8vrL/7880+8+uqrvEaD7f/+++8xefLkOq/H+nCwYRHWZ2P06NE8MmbTYmfOnHnf9xIaGspnr9SFzYQpLCzEqlWr+K0cK2atPPW3PEtTXoOyd+9evsoxmzpMCCGkeYjEYvQYMRq3/z6C4b1d8eoPP6mP5WYU4cxvARBq6KLfBNUq822dQPmw54tWI5FI+CwM9sXIGlpVVlxczAspnZ2d1TM5mop1NPVN80V6YTosdC3gbune6kMtnVVzfo6EENIZyKRSLHtqKn767yL+2fYrXnh9gfqYx9+hvJ26c39zTHu7X5v8/kZnz3yUY4HGEOshD/ttEEIIIfcVdt0TngEhsDYxwrNzX1XvLymSIcS7fUyv7bQ1H4QQQkh75HXkAAISUzDjiSf4EEy5kGvJkJXIYWqrBztXVcfs9oCCD0IIIaQNSw4PxZkrXlAolVj2eUVTSqVCCf+yjqZ9x7X96bWVUfBBCCGEtGG+/x3nvT2GuPVGVxdX9f7YwEzkphdBU0cEl3YwvbYyCj4IIYSQNqogJxsXTp1EQnYuFlVro1Ce9eg10gaa2u2rhJOCD0IIIaSNunfuP1wPj4aJgT5mzX9NvT8ntRBxgVmsSRX6jm0/hablKPgghBBC2iC5TIqb/x3HnbhEzH5uBkQiUY2sh5ObGYwsGrfUR1tAwQchhBDSBoV5X8VVvyCUyhV4//P/qfeXFssQfD2Zb/dtR9NrK6PggxBCCGmD7pz+F95RcXhk4AA4d+2q3h/qnQJpsRzGVrpw6Nn0ldEfpvZVoUIIIYR0AikRYbh18yYvNP1x8wfq/awpeZXptcL2M722Msp8tJJ58+bh6aefrrGfrZPC5mbn5OSgLYuIiICBgQGMjY0f9lshhJBOkfW4ERUHM2MjPPvCC+r9CcHZyE4phFhbAz0fsUZ71amDjyL/AMTOncfvSd2kUilmzZrFF68jhBDS8tNr73lcgm9sEubOmVOl0NTvUjy/7/lI+5teW1mnDj5yjx1D4Y0byD1+HG3JtWvXMGbMGOjo6MDBwYEva19QUKA+zjIlR48erfIclpFgK9EybEVZds7hw4cxfvx46Orqon///rh+/XqT3s/nn3+Onj174oVK0TchhJCW4XfhNHxj4lAqk2HJhx+p97OGYjEBmXy737j2WWjaYYIPNv6lKCxs8K0kIhKFt31Q6OMDycmT/BqSkyf4Y7afHW/otVpiQWB/f39MmTIFzz77LPz8/PDPP//Ay8sLixcvbvS1PvvsM3zwwQe4e/cuXFxcePZCJpOpj7MApTxgqcvFixdx4MAB/Pzzz036eQghhDScXCbjvT1Yoeno4cPg6OioPubvkQAoAcc+przYtD1rvzmbMsqiIoS6D3qga8izshH70pxGP8/V1wcC3Yb/Azhx4gT09fWrvrZcXuXxDz/8gNmzZ2Pp0qX8cY8ePbBp0yaMHTsWW7ZsadQS9CzwePzxx/n2ihUr0KdPH167wbIY/P27uvLlj+uSmZnJa1V279593+WRCSGEPLjwG1cRFhWN+KxcbPzwQ/V+aYmcLyJXXmja3rX74KM9YUMgLICo7MaNG5gzpyLw8fHx4QHCnj17qmZ3FApER0ejV69eDX69fv36qbdtbGz4fVpamjr4CAkJqff5b7zxBg+E2BAQIYSQlnfn9Ame9TAzMcb0J59S7w+9kYKSQhlvKNalj1m7/yjaffAh0NHhGYjGKA4OrjXT0WXPbmg34sudvXZj6OnpoXv37lX2JSSopkyVY0HGggULeJ1HdeXpNzZcUn3IhxWFVieutOxy+WqH7PoNxYZcjh8/jrVr11YJgljx02+//YZXX321wdcihBBSv9SoCEQH+fNC0yVLlqgLTTvK9NqOFXwIBI0a+uDPKR+6YF/I7Eu87J7tFzbyWs3N3d0dgYGBNYKUyiwsLJCcrEq/MeHh4SgsLGz298IKVCsPCx07dgxr1qzhBbF2dnbN/nqEENLZp9feiU2CVC7HwkqLyCWG5SArqQAiLQ30HKHKYrd37b7gtClEZmbQMDeHdp8+sP7qK37PHrP9D9vy5cv5l/6iRYt4oSgLLFj24Z1K/xAnTJiAzZs3w9fXF7dv38Zbb71VJcvRUGz45ciRI3UeZ0M8bm5u6hsLOIRCId82MTFp8s9ICCGkqkJJLoKveuBqRAwmjh+PLl26qI/5XSybXjvMGlo67T5nwHWMn6KRxNbW6H7xAgRiMc+cGM98AUqpFEJNzYf91nidhoeHB5+pwvpqsHRbt27dMHPmTPU5P/74I+bPn89rMWxtbbFx40ZeK9JYoaGhyM3NbeafgBBCSGP5XziDiOQ0JOfmYftHFdNrJZlFiPHL6DCFpuUEypaYL/oAJBIJn4HBvhSrz7AoLi7mRZfOzs6NmvVB2hb6HAkhpOr02t/feQ2/njyHHGggMiaWZ5mZa4cjcOdsHOx7muCppQPRltX3/V1dpxx2IYQQQtqKiFveSEpMhF9CCt5Z+p468JCVyhF0NYlv92unq9fWhYIPQgghpA2sXqupKa4yizDsVipKCmQwMNNGl77mHeozouCDEEIIeUjSYqIQF+TPg49ZL76oXryTVUT4XSqbXjvWHsIOML22Mgo+CCGEkIeY9QhITIWkqARLl72v3p8ckYvMhHyIxEL0GtkxptdWRsEHIYQQ8pCm14Z4qabXDhs8qEpX6vKsh8swa2jrNb6VQlvXKafaEkIIIQ+b/8WziE/PQFR6Fr7bVLF4Z15WMaLupnfIQtNylPkghBBCWplCLse9s6dwLTIW5qamfCXzcoFXEqFUKGHbwxhmdlUXI+0oKPgghBBCWlnk7RtIS06CT2wS3l64EJplTS5lUjkCvTrm9NrKKPgghBBCWpnv6ePwiU2AXKnEW2+/rd4fcTsNxflS6Jtowbl/x5peWxkFH4QQQkgrSo+NRlygP7zCY/HUE0/wZTKqT691G2sHoUbH/YruuD9ZGzNv3jw8/fTTNfZfvnyZry+Tk5ODttgGnb3vvn378qWda3v/bHXd2bNnw9XVlXflW7p06UN5r4QQ0l7cOXMCwclpyMgvwIcff6zenxotQXpcHjREQvQepQpIOqpOHXykxUpwdJ0vvyc1yeVy6Ojo4N1338XEiRNr/RWVlJTAwsKCL4TXv39/+jUSQkg9ivLzEOx5GZ5h0RjYrx+GDx+uPlae9egx1Ao6+g9/odOW1KmDjxDvFCSG5SDUOwVtybVr1/iKteyL38HBgX/5FxQUqI+zTMnRo0erPId1xduxYwffjomJ4eccPnwY48ePh66uLg8Mrl+/3qj3oaenhy1btuCNN96AtbV1rec4OTnxVXVfeeUVvqAQIYSQugVcPIu4tHREpGXio08+Ue8vyClBpE8a3+7XgVav7bDBBxsjk5bIG3zLSi5AUkQOkiNyEH4rVd0/nz1m+9nxhl6rJRYE9vf3x5QpU/i0Kz8/P/zzzz/w8vLC4sWLG30tlo344IMPcPfuXbi4uGDWrFmQyWTq4yxAKQ9YCCGEtCyFQo67Z0/yrIeVhTlmzJihPhbgmQiFQgmbbkawcDTo8B9Fu28yJitV4LclHg90DVZZfHitb6Of9+bGsRBraTT4/BMnTkBfX7/G0EZlP/zwA6+hKK+d6NGjBzZt2oSxY8fyLIS2tnaDX48FHo8//jjfXrFiBfr06YOIiAj07NmT72N1GpStIISQ1hHpcxOJ8fG4E5eEr7/5BmKxqnOpXKZAoKdqem3fDjy9tkMFH+0JGwJhAURlN27cwJw5c9SPfXx8eICwZ88e9T6WYVEoFIiOjkavXr0a/HqVW/Xa2KjWBkhLS1MHHyEhIQ/08xBCCGm4u6f/xbWIWIjEoqrTa33SUCQphZ6RJroOtOgUv9J2H3yINIU8A9EYGfF5tWY6nv3AHeYOBo167cbWUHTv3r3KvoQEVYFRORZkLFiwgNd5VOfo6KgeLqk+5COVSmucXx5Vlz+n/PqEEEJaV0ZcDCLv3cH1yFjMmf0STExM1Mf8L1dMr9XowNNrK3ugn3LVqlX8S63y9Er2pfjVV1/xecusYHLcuHEIDAxES2Gvz4Y+GnMTaZYNlZSvUFx2z/Y35jrlX+jNyd3dnf++WJBS/VbeAY/NLmFTXMuFh4ejsLCw2d8LIYSQ5ptey4Zb8ktK8cHy5er9qTESPsVWKBKg9yi7TvPrbnLwcevWLfz2229VUvvM999/j3Xr1mHz5s38HDZLYtKkScjLy0NboWMghq6hJiwdDTB2tiu/Z4/Z/odt+fLlfFbKokWLeKEoCyyOHz+Od955R33OhAkT+O/X19cXt2/fxltvvVUly9FQbPjlyJEj9Z4TFBTE30dWVhZyc3P5NrtVVr4vPz8f6enpfJs9jxBCCKsrzEfglYu80HTC2DG83q6cf/n02kFW/Huos2jSsAv7knnppZewbds2fPvtt1WyHhs2bOCzLMoXydm5cyesrKywd+9ePpzQFuibaOOV70bwSJNlL/qMtoVCpoSG+OGnu1gw5+HhwX+Ho0eP5r/Tbt26YebMmepzfvzxR8yfP59Px2UZJjbVldWKNFZoaCgPKOozbdo0xMbGqh8PHDiQ31ce9infx7D3wT7rLl268Cm/hBDS2QVcOouQ+CQk5+Zh52efq/cXSkoR7pPaqQpNHyj4YH+Vs1kUrPFU5eCDFUSmpKRg8uTJ6n1aWlp8pgbrXVFb8MGaVLFbOYmkdRp+VQ40WACiIW7+IZTK6prSyoalqtdvDBkyBGfPnq3zWizgOHPmTJV9lTukst4b1a/J+oBU39eQqcINCSBaYsoxIYR0qOm14dHo7uRUpWFjkFci/8PXytkQVk6G6EwaHXzs27ePp/vZkEp1LPBgWKajMva48l/P1etG2DRQQgghpKOJvnMb4RGRCE5Kw69btqhrBeVyBQI8Evl2307QVKy6Ro0zxMfHY8mSJdi9e3e9/SaqF2Kyv4zrKs785JNPeOq//MZegxBCCOkIfP/7Fx6hUTAxMsLc+fPV+6PupKMgtxQ6hproPsgSnU2jgg82ns/6RAwaNIgvNMZurD6BNcFi2+UZj/IMSDn2nOrZkMrDMoaGhlVuhBBCSHuXmRCPgJveuB2biHffeYd/31UvNO0z2pYvJNda5Ao5fC7/A98XpvN79vhhaNRP/Oijj/L23+WzG9ht8ODBvPiUbXft2pXPbjl37pz6OaWlpTxAGTFiREu8f0IIIaTNTq/1Co+BpliMJe+/r96fHpeH5MhcCIUCuI1pvem152PPY8qhKfDYtgI6fhG4/PsK/pjtb9M1HwYGBnBzc6vROMvMzEy9n/X8WLlyJW8Lzm5smy1sxlqGE0IIIZ1BSWEBfM+dxrXIWLzy0ku86L+cX1lTsW6DLKFnVJENaUmXbu7HTxe/ga5AiTEBqkkCI4KUuNI3FT9FvgeNCV9g/NAX0G47nH700UcoKirCwoULkZ2djWHDhvGZGyxwIYQQQjqDgEvn4RkSDqlcgc+//ka9vyi/FOE3VdNr+7XS9Fo2tGL9ypdYXfa4fH6iUSGwenvZYqM7voQ8aAY0hA1fr+yhBh+XL1+u8pgVlrIOp+xGCCGEdDZKhQK3Tx3jTcUenzgBDg4O6mNBXkl8ITm2ci2bYtsafNN88ed0IRadVEBDUaO5N2RC4JfHhXg1zRdDrIe0ynt6+F21CCGEkA4k+q4PLt32RW5RMVasWqPer6g0vbbfePsWWaKjNumF6fDqI8A9p9qPfzZXA15uQn5ea6HggxBCCGlGPqeO43JIJB4Z0A8D3N3V+6PvZSA/uwTa+mJ0H9x602stdC0w6Y4S7lGqx+XLiypqOa+1tPtVbQkhhJC2IispAafPnEaqJB/bqzXQ9CufXjvKFiJx69RWML3TNDHvvCrUKNIEEs2Ai/2FmHBPATMJINEVwFrXGu6WFYFSS6PMRyuZN28eT7GxG+uJ4ujoiLfffpsX5VZui87WxqncnO3999/nxboXL16scU3Wrp5dr/Jzylu2l79W+e3FF19s4Z+QEELIndMncDk0Ci6O9pg6/Sn1LyQjIR9J4TkQsOm1Y1tveq08JwfJS5dBLAduugjw2rtCfDpXA+cHqu4XLxQhy1CA5UOXt1qxKTp78BHrdxfbl73N71vD1KlTkZyczNdL+f333/Hvv//yWUG1kcvleO2117Br1y4eeLCVbCs7evQobty4wdd5qc0bb7zBX6v8tnXr1hb5mQghhKiUFBbi5MH9iErPwvvvLatS0+FfNr226wBzvrhpaxW+Ji3/GNKkJGSYinlRqZauAZsZojpBIICZoTXWjVuHiV0q1pxpDZ122IVlFTz37URWYjy/d+zbv8WLf1h3O9aEjbG3t+cr1da24BxbaG/WrFl8/ZwrV66gV69eVY4nJiZi8eLFfHE5tsBfbVhvlfLXIoQQ0vICPS7g7L0gWJsY47V33lXvLy6QIuyGqvN3v/EVM19aWuZv25Dv4QGFpghrnlZA29gMx586jrCcMF5cymo82FBLa2Y8OkzwwYIIWaVVcRsq1v8uUiPD+Ta7j7x9A136DmjUNURaWk0OWKKionD69GmIxeIq+/Pz83lAwda4uXr1Kh+eqUyhUODll1/Ghx9+iD59+tR5/T179vA1eFhb+8ceewxffvkl9VohhJAWzDL8u3sHApNS8fUHy6ChUfGFHnw1GTKpAmb2+rDpbtQqn0GBtzfSN23i27sf00GsVRE+7f8WjLSNWm06bYcOPljgsWnucw98nWNrv230c97deRDiehbYq+7EiRPQ19fnQyrFxcV837p166qc88033/AgISgoCJaWNauh16xZw2tG3n23IqqujrW7d3Z25pmPgIAAvnjfvXv3qrS9J4QQ0nxi/O7giOd1mOnrYdn/vlTvVyiU8PdIaNXptdLUVCS+/wF7cSSN7YkTvSPQxbALnnN58O/K5tLug4/2ZPz48diyZQsKCwt5zUdYWBjeeeedKudMnjwZ58+f523pqxeSsoX9Nm7cCF9f33r/AbN6j3Ks7T1rc8/W4GHPc6807YsQQkjzOPHXdvjFJ+O9eXOgZ1DRPCzGLwN5mcXQ0hPBZUjtC6w2J6VUisRl70OemQmNHt3wxXDVSvFL3ZdCLKyaaX+Y2n3wwYY+WAaiMcM0/6z4GOmx0TxNVk4gFMKiizNmfrm6wZEpe+3GYOvgdO/enW+zlYBZMLJixQqe7ai8eB/Lajz11FM8Q/LTTz+pj3l6evIVgisPxbBz2IwYFqiwQtbasICDDe+Eh4dT8EEIIc0s4PJ57Dp8DIY62vjoq4r/n1cuNO090hYizZavrUhbvwFFPj4Q6uvj2KsuyJPEYqDlQDzq+CjaknYffLBAoTFDHzF3fZAWHVljPwtE2P6k0CA4DRiE1sDqMFg9BptyW3nWyqRJk/gQzfTp03mNx+bNm/nPyWo9Jk6sWpE8ZcoUvn/+/Pl1vk5gYCCkUilsbGxa9OchhJDOhv1Be+TXzfCNTcTTQ/rD0rGL+lhWUgESQrL55JLWmF4rOXcOWX/+qXrw2TvYnfcj31w2qOrMm7ZA2Nn+kXjt310xzag6gYAfZ+e1BtaPgxWNsiGW6tjU2pMnT2Lnzp1YtGgRf0/lqwdXvrGMBqvtcHV15c+LjIzE119/jdu3b/NMyKlTp/D8889j4MCBGDlyZKv8XIQQ0llE3LqOU7fuQEdTjMH21oi951sj6+HUzxyGZjot+j5KY2OR/MmnfNt0/nxsMLgOhVKBSV0mYYBl4yZTtIZOFXzIZTLkZaSzKKT2E5RK5GVk8PNay7Jly7Bt2zY+u6W24IQFD3/99RfPjjQkKNLU1MSFCxd4RoQFJGwIp7yOpHL1NSGEkAfD/p986Kd1uBWTgLEuXaGlKVb/AVtSJEOIenpty65eqyguRsKSpVDk50Nn0CBEzx4Br0QviIQiXuvRFrX7YZfGEInFeGnlehRJcus8R9fImJ/X3Grr58HMnj2b35jaajbGjBmDvLy8Oq9b/Tls9UQPD48Hfr+EEELqF3rdC6du+EBTpIER3R358D1r3cCyH7mZlpCVyGFqqwc7V5MW/VWmfPMNSkJCoGFmBtt1a/HRTdVsyJmuM+FoWLVdQ1vRqYIPxtDcgt8IIYSQpmLZjaM/r4d3VBzGuXaDdtkfrWzygtc/u6HUeJ4/7juuZafX5hw6hNxDhwGhEHY/rsWZ/FsIzgqGvlgfC/otQFvVqYZdCCGEkOYQcOkszvr6QSgQYHSPirXqefYjKhzZySHQ0hXBdVjLdZouDg5Gyteq2TUW774L0ZCB+OmOaobka31fg4l2y2ZcHgQFH4QQQkgjsx4nt23BtYgYjOjuBF0tzRrnyIquwvURa4i1WqbWTp6Xx+s8lCUl0B87FmZvvoE9wXuQXJAMaz1rzOk1B20ZBR+EEEJII8T63cHZuwF8e5xr11rPUSry0GekdYsFP0mffAJpXBzEtrawXbMauaUS/O73Oz/+zsB3oC1qncXrmqrT1XwQQgghTcWGVU7+vgVe4TF4evxoLFj3CwpyS1BSKOO1HRd2BUMhU0Ao0oNcJkBarATa+uJmnWqbtX0H8s9fgEAsht3GjdAwNsbWm2uQJ82Dq4krnuj6RJv/gNtl8MEab5H2iz4/Qkh7FeR5CQfOXoBQKMC6bdth5eSEn9+6WOkMCwjLvln3r7yl3rvo1wnN8vqFt28j7UdV8zCrTz+BTl83xEvisS90H9+3bPAyCAVtf1CjXQUfrIeFUChEUlISLCws+OO21rWN1J8qLC0tRXp6Ov8c2edHCCHthbSkGCf/+BVXI2Mx97lnYe+kKjSdOL83LuwMhlJRsxeTQCjAo3N7NcvryzIykPjeMrauBgynT4fxiy/y/RvvbIRMIcNI25EYYTsC7UG7Cj7YFxZbrTU5OZkHIKR90tXV5evTsM+TEELaC58TR3HC+zbEGiKs3vSzej+b0aKQK3FxV3CN5zz/8WBYOBo88Gsr5XK+Uq0sPR2a3bvBZsVX/I9vv3Q/nIk5AwEEeG/Qe2gv2lXwwbC/ltkXl0wm44uqkfaFdVkViUSUsSKEtCsFOdk4+/dfuB4Zh7dfnQdzS0v1MYVcAZ/T1ZpEsqR8M67Ukb7pJxTeuAGBri7sN22CUFeXZ5N/vK0agnmq+1NwNVUts9EetLvgQ72YnFjMb4QQQkhLu7Z/D87cC+Qt1L9Zu67KMf/LichNK+Lb5vb66DPGDsFXk5CfXQIdgwf/nsq7fBmZW7fybZtvvoZWV9UMm4vxF+Gb5gttDW0sGrAI7Um7DD4IIYSQ1pIRF4Mr/x7Fjah4fLjkXRgZGamPFeSU4Ma/UXx7zIs94DZW1dG0z2hbKGRKaIgfbHi5NCERScs/5tsmL70Eo8cf59tShRQbfDbw7Zd7v8x7e7QnFHwQQggh9fDYsx3ng8Khp6ONT1d8XeXY1YPhkBbLYeVsCLcxFa3U2b2G+MEmRChKS5G4ZAkUubnQ7t8PVss/Uh87HHYYMZIYmGqb4lW3V9vd50cVf4QQQkgdYu75wveqJ25Gx+P9ZctgYFBRPBofnIXw22lg8cbYWa58ZktzSl25EsWBgbyPh/369RCUzRAskBbgl3u/8O23+r8FfU39dvf5UfBBCCGE1EKhkMNj9584ExAGY0MDvF82/MHIpQpc2RemXjyuOWa0VJZ7/Dhy9v3DUiiw/eF73sm03J8BfyKrOAtOhk54zuU5tEc07EIIIYTUIuDSefj7+8M3NhHr16+Dnp6e+tidc3HISS2ErqEmhj5Ze4v1pioJD0fyl1/xbfO334b+6NHqY6kFqdgVuItvL3VfCrGwfU68oMwHIYQQUk1pcRGu7d+N//xDYGdjjYWLFquPSTKKcPs/1dTakc93h5ZO8/0dL88vQMK7S6AsKoLeiBEwX7SwynE23FIsL8ZAy4GY4Ng8XVMfBsp8EEIIIdXcOn4IARGRCEpKw+6/dqlbO7DeGlf+CePDLnauJugx2KrZfndKpRLJX3yO0uhoiKysYLv2Bwg0KlbFDc8Ox9GIo3x72aBl7bpfEmU+CCGEkEryMjNw6/hhnPILQS+XHpg1+yX1seh7GYj1z4RQQ4Cxs1yaNQDI3r0Hef+dBkQi2G1YD5GpaZXj63zWQaFUYFKXSRhgOaBdf2aU+SCEEEIqufrPX/CPjUd0RjZO7dqjXgpCWiKH535VkenASY4wsa6oAXlQRXfvIvX77/m21UcfQnfgwCrHvZO94ZXoBZFQxGs92jvKfBBCCCFlUqMj4e9xAf/5h+KRoUMxdepU9e/m9qkY5GeVwMBUG4OmqRaVaw6y7GwksAXjpFIYTJkCk5dfrnKcZTvW3VZ1VZ3pOhOOho7t/vOizAchhBBSVnPh8dcfuBubiOTcPBzeuFE9rJKVVIC75+L49ugXXSDWrKjFeNAF45I+/Aiy5GRoOjnB5rtv+WvKFXLeOj29MJ3XegRnBUNfrI8F/RZ0iM+Kgg9CCCEEQJTvTUT73cXpwDA88dhjGD58eEWR6b5QKBRKOPUzh3M/82b7fWX8+isKvLwg0NaG3caN0NDXx/nY81h9czVSC1OrnDvWfixMtE06xGdFwy6EEEI6PblMBo/d2+EdFYecgiKsWbtW/TsJu5mKxLAciMRCjH6hR7P9rvK9riJj88982/qrL6Ht6sIDj2WXl9UIPJiT0Sf58Y6Agg9CCCGdnt+F00iKicb54AjMmTMHvXv35r+TkkIprh6K4NuDH3eCoblOs/yupMnJSPrgA5ZWgfELL8D46af5UAvLeCihrPU5Agiw5uYafl57R8EHIYSQTq2ksADXD+zFxZBIyJTAylWr1MduHI9GkaQUJta6GDCxeQo9lWzBuKXvQZ6TA63evWD12ad8P6vxqC3joX4elEgpTOHntXcUfBBCCOnUbhzZj8SUFHiGR+Ojjz6CnZ0d358WK0GARwLfHvOiCzREzfOVmbp2LYru3YPQ0BD2GzdCqKXF97Pi0oZo6HltGQUfhBBCOq3ctFT4njqGU36hMDUxxUfLl/P9rLjUY28oGxVBjyFWsO9ZteFXU0lOn0b2rr/4tu3qVdB0cFAfs9C1aNA1GnpeW0azXQghhHRann/vRFRqOu7GJ+H3339XLx4X5JWEtNg8aGprYORz3ZvltUqiopH86Wd82+yN12EwoeraLO6W7rDStapz6IXVfLDj7Lz2jjIfhBBCOqXk8FCEXPXAv3eD0btnT8ybN4/vL5SUwvtoJN8e9lRX6BmphkUehKKwEIlL3uX3ukOGwGLJkhrnaAg18GLPF+sMPJjlQ5fz89o7ynwQQgjpdFjvjsu7fodfQgpiMrNxbt9+aJQt4nb9SARKCmUwd9CH2xi7ZnmtlBUrUBIeAQ0Lc9it+xECUc2v31J5Kf6N/Jdva2to89Vry7GMBws8JnaZiI6Agg9CCCGdTviNq4gLDsAp/1BMnjQREyeqvtSTwnMQcj2FpRowdrYrhBoPPkCQs/8Aco8dBzQ0YL9uHUQWtddsbPXbiqjcKJhpm+Hwk4cRmRvJi0tZjQcbaukIGY9yFHwQQgjpVGRSKa7s3QGviFjkFBZh/YaNfL9croDH36F8u/coW1g7Gz3waxUFBCL122/5tuV7S/mQS21CskLwh/8ffPuz4Z/BVMeU3zoqqvkghBDSqdw9cwJJcXG4EByJ115/Td1QzO9iAl/DRVtfjEee6vbAryPPzUXikiVQSqXQnzABpq+9Vut5UoUU/7v6P8iVckzqMonfOjoKPgghhHQaRXkSeB/eh9MBoRCJxfjmG1VWIj+7GDdPRPPtEc924wHIg1AqFEha/jGkiYkQ29vzabXli9RVtyNgB184zkjLCJ8OUzUc6+ho2IUQQkin4X1oH6ISkuAdGYd169fB0tKS7/c6EA5ZiRw23YzQc7jNA79O5u9/IP/yZQg0NWG/aSM0DA1rPS8yJxJb7m3h28uHLIe5TvMtWteWUfBBCCGkU8hOTsSdMydw9E4gunftikWLFvP9sYGZiPRNh0AowJhZrvz+QRTcuIn0DRv4ttUXn0O7bFinOrlCjv9d+x8fdhljPwZPdH0CLY6tCxN7DchPBfStgC4jgIdQyErBByGEkE7Bc+9O+ETHIzojG+f+3g+xWAyZVI4r+8L48X4T7GFur/9AryFNS0Pi+++zFqkwevppGD/3XJ3n7gneA790P+iL9fHF8C/qHJZpNkHHgdPLAUlSxT5DW2DqGqD3k2hNVPNBCCGkw0sIDkDA1Ss44ReCxx+bqp5a63smDpL0IugZaWLoE84P9BpKmQyJy5ZBnpEBLRcXWH/5vzoDijhJHH668xPffn/w+7DWs0aLBx77X6kaeDCSZNV+drytBh9btmxBv379YGhoyG+PPPII/vvvvyqNVL766ivY2tpCR0cH48aNQ2BgYEu8b0IIIaTBxZ8ef/2BC8ERKJbJsfkXVY1FTlohfE/H8u1RL7hAU/vBBgPYUEvRbR8I9fRgt3EDhDo6tZ6nUCrw1fWveBOxYTbDMKPHjJYfamEZDyhrOVi27/THqvPaYvBhb2+P1atX4/bt2/w2YcIEPPXUU+oA4/vvv8e6deuwefNm3Lp1C9bW1pg0aRLy8vJa6v0TQggh9Qq5dgUBd+/CIywa7y97D05OTvyPZc99YZDLFHDobYpu7g+2WFvehQu8yJSx+e47aDnXnUU5GHYQt1JuQUekg68e+arlh1tYjUf1jEcVSkCSqDqvLQYf06dPx7Rp0+Di4sJv3333HfT19eHt7c0/yA0bNuCzzz7Ds88+Czc3N+zcuROFhYXYu3dvy/0EhBBCSB2kpSV88bjj94JgYWqKz//3Jd8fdScdcUFZEIoEGDPT5YECgNK4OCR9/AnfNp07F4ZTp9R5bnJ+Mn68/SPfXuK+BPYG9i3/2bHi0uY872HWfMjlcuzbtw8FBQV8+CU6OhopKSmYPHmy+hwtLS2MHTsW167VHU2VlJRAIpFUuRFCCCHNwffUcdz0D0RQUhrW/7QJurq6KC2WwXN/OD/uPqULjK10m3x9RXExEpYshSIvDzoDB8Lyg/frPJf9kb7CewUKZYUYaDkQs3rOQqtgs1qa87yHEXz4+/vzbAcLLN566y0cOXKEd4djgQdjZVX1zbPH5cdqs2rVKhgZGalvDg4OTfk5CCGEkCoKc3PgdfBvPrV2mPtAzJypWjH21skYFOSUwNBcG4OmdHmg31rqd9+hJDgYGiYmsFu/DgJx3c3Jjkcex9XEq9AUamLFiBUQClppzofDcECkXc8JAsDQTjXttpU0+id3dXXF3bt3+VDL22+/jblz5yIoKEh9vHrqikV69aWzPvnkE+Tm5qpv8fHxjX1LhBBCSA3XDuzF6Tv+yC0qwY7de/h3UWZiPu5dUH3PjHnRFSLNpve4yDl8BDkHDrIvPtj9uBZi67pnrLAF4tbcWsO3Fw5YCGejB5tZ0yhe6wBZxQq5VZV9P09d3ar9Phpd2qupqYnu3bvz7cGDB/PC0o0bN2L5clZJC57lsLGp6A6XlpZWIxtSGcugsBshhBDSXDIT4nH+yEFcConCojdeR89evfgfw2zhOKVCia4DLdDFzazJ1y8OCUHKihV82/ydxdAbUXfWgL3ut97fIq80D73NemNun7loNSEngcsrVdtD3gBCT9bS52N1q/f5eOAmY+yXyuo2nJ2d+eyWc+fOYeDAgfxYaWkpPDw8sGaNKtojhBBCWoPH7j9w6LYfzI2NsHq9qttoqHcKkiNyIdLSwKjnezT52vK8PCSwBeNKSqA3ZjTM33qr3vPPxJ7BxfiLEAlE+HrE1xAJW6m/Z1oIcPhN1fbQBcC074HH1rS/DqeffvopHnvsMV6XwabPsoLTy5cv4/Tp0zydtXTpUqxcuRI9evTgN7bNintmz57dcj8BIYQQUkms/10cOnoMEWmZ2L/7L953qrhAimuHI/jxIY87wcC0vhqI+v/gTv70M0hj4yCysYHtmjUQCOuuYMguzsaqG6v49hv93oCrqWvrfFZF2cC+WUBpPuA0GpjynWo/CzScR+Nha1TwkZqaipdffhnJycm8OJQ1HGOBB+vlwXz00UcoKirCwoULkZ2djWHDhuHs2bMwMDBoqfdPCCGEqCkUcpza9jOO3w3C2MHueP6lOXy/97EoFOVJYWKjh/6PNn1iQ9bOncg7dw4Qi2G/cQNEJib1nr/65mpkFWehu3F3vNH3jdb5pBRy4OBrQFYUYOQIPL8T0HiwVXqbm0DJwrg2hE21ZYENKz5lXVQJIYSQhgq4dA5vvvE6fGOTEODvh+49eyE1WoKD39/mvbSeeX8gbHvUHzDUpdDXF7GvzAVkMr5gnOlLL9V7/uX4y3jn4jt8VsueaXvgZu7WOh/k2S+Aa5sAkQ7w2lnApl+b+/6mtV0IIYR0CNLiYuz+aT28I+OwaN7LPPBQKFRFpizwcB1u3eTAQ5aZicSl7/HAw3DaNJjcp5xAUirBN9e/4duswLTVAg+/A6rAg3n651YLPBqLgg9CCCEdwvWjB7D70lXYm5viu00/832BVxKRHpcHLV0RRjyrmqnZWEq5HIkffABZWho0u3WDzTdf37cjKutimlaUBidDJyzsvxCtIukucHyxanvUe4BbC68Z8wBaqeSWEEIIaRmxfndx/o9fcPTKNSTlSvDPtl+hraODgtwSXuvBDH+qK3QNNZt0/fTNm1F43RsCHR1e58EWjqvPtaRrOBx+GAIIeDMx7XobfDWT/HRg30uqfh7dJwETvkBbRpkPQggh7ZZqgbidCA8Px2n/YEwZ4o7nXlVNL2WzW0qLZLDsYoDeo+2adP38K1eQueVXvm3z9dfQKutzVZdCaSFWXFP1/2Dt092t3NHi5FLgwFxAkgCYdQdm/P5Qps82BmU+CCGEtFux93yRHBGGA7f9YKithc8++pAPiSSGZiPsRipv4Dl2tiuEwsYvHCdNTETShx/xbZPZs2A0/Ylaz5Mr5PBN8+VdTM/EnEFSQRLs9O34wnGt4vTHQOxVQMsQePFvQMcYbR0FH4QQQtpt1sNr31+4GRWPqPQsvDl2GGJ8bmD4k8+rikwBuI2xg2WXxs+cVJSWImHpe5Dn5kK7b19Yfvxxreedjz3Pp9OmFlZdEXZ61+nQFTd9wboG89kJ3Ppd1Sb92W2AhQvaAxp2IYQQ0m6zHmGBATjhF4whTvZwsTJHamQ4Lu06i+yUQugYiDHsya5Nunba6tUo9veH0MgI9hvWQ6ipWWvgsezyshqBB7PVbys/3qLibgAny1bRnfAZ4DoV7QUFH4QQQtpl1uP8H1tw2DcAYg0NTB/Qm+8XCIQIuHiQHx85ozu09RrfXCv33xPI3vs337b7fg3Edna1DrWwjIeSzeGtw5qba/h5LUKSBOx/GVBIgd5PAaM/QHtCwQchhJB2J+jKBXj4+CIwKRXPuPeBrqYqyFAqFVDIUmFimQGXYXWvMluXkogIJH/5Jd82e/st6I8dW+t5rMajtoxHORaUpBSm8POanbRYNbOFrc9i2Qd46he+sm57QsEHIYSQdkUmLcWxXzbiqG8g3Oys0M++YiX1ctKiq42+rqKgAAlLlkJZWAjd4cNhsbisZ0YtWHFpQzT0vAZjTclPvAck+QI6JsCsvYCWPtobCj4IIYS0K1f27MBBb1/IFAo8415759AiSTbkMlnjFoz74n8ojYyEyNISdj+uhUCj7umqFroWDbpuQ89rsBu/Avf2AgIN4PkdgIkT2iOa7UIIIaTdiPS5iV3btuJOXBJWvPcuFix+h+8PuJKIIK8k3khsyptuMLIwg0jc8HqP7L17ITl1CtDQgN2G9RCZmdV7vrulO3REOiiSFdV6nDUYs9K14uc1m6jLwJnPVNuTvwW6jkN7RcEHIYSQdkGSkY4DP67CQZ8AjHQfgC9+3MB7emSnFCDsdjyEIiuMf7kv7Hs2LttQ5OeH1NVr+LblBx9A1/3+AcO/Uf/WG3gwy4cuh0ZzNfvKigYOzGO93oH+s4Hhb6M9o2EXQgghbZ5CLseJjd9j7xVvCIRC/HPsXx54sOGSK/vCoJAp0cXNDM4DzBt1XVl2NhKWLgWkUhhMmgTTeXPv+5zgzGB86/0t357qNJVnOCpjj9eNW4eJXSaiWZTkqwpMi7IBW3fgifXtrsC0Osp8EEIIafOuHdiDk+fOwz8xBTu2/QY7e3u+P8InDQkh2dAQCzF6pst9F3yrTKlQIOmj5ZAlJUPcxRE2K7+77/NzS3Lx3uX3UCIvwRj7MVgzZg0PgMo7nLIaDzbU0mwZD6USOLYQSAsE9CyBmbsBcSusFdPCKPgghBDSpsXc88XZv//CkTuBmDbxUcx9/Q2+n63b4nUgnG8PmtoFRhY6jbpu5tatKPD0hEBLC/YbN0LDwKDe8xVKBT7x/ASJ+Ymw17fHylErIRQIeXPRIdZD0CI81wJBxwChWBV4GDVtjZq2hoZdCCGEtFn52Vk4+dNaHLzlBx0dHeza94/62M1/o1GYWwojSx0MnOzYqOsWXLuG9E0/8W3rL7+Eds+e930O61rqmegJLQ0trB+/HkZaRmhRoaeBi9+pth9fCzgOQ0dBmQ9CCCFtkkIhx6mf1uLKvUAEJ6fhyOHDMCubhZIenwe/S/F8e+yLrhCJGz7MIU1JQeL7H/AhDaPnZsD42Wfu+xyvRC9subuFb//vkf+hp+n9g5UHkh4GHHqdtyvD4NeAQfPQkVDmgxBCSJvkfegf3L3hjWP3gjDrhefx9DOqIEGpUMJjbygvh+g+2BIOvU0bfE2lVIrE95ZBnp0NrV69YP355/d9TkJeApZfWc67lr7g8gKe7PYkWlRRDrBvFlCaBziOAKauRkdDwQchhJA2Jy7AD14H9mDvjTuwtLDAr9vYyq0qwdeSkRotgVhbA6Oe69Go66at/RFFd+5AaGAA+40bINSuv3iTFZayxeMkpRL0Ne/Lp8+2KIUcOPwGkBkBGNoDL+wCRDUXtWvvaNiFEEJIm1KYm4NTm9fifGA44rMl8PI6BUNDQ6TFSuC5PxyZifn8vGHTu0LPWKvB15WcOYusnTv5tu2qldB0vH+dyMobKxGcFQwTLRM+fVZTo4UDgYvfAuFnAZE28OJuQL+ZO6S2ERR8EEIIaTPY9Nf/fl6HwPAInA+OwBeff45HHnmEHwvxTkFKZC7fNrPTR99xDZ/5URIdjeRPP+Xbpq+9CoOJ9+/BcSjsEA6HH+YzWr4f+z2s9Rq/UF2jBBwGvNaptp/cDNgOREdFwQchhJA24+bxQwi5fQN7b9zDYHd3LFn0Ic94sP4bYTdS1Of1e9QBGQn50NYXw9Cs/im2iqIiJC5ZyheO0xk8CJbvvXff9xGYEYjvbqhmmrwz8B0MtxmOFpXiDxxbpNoe8Q7Q73l0ZBR8EEIIaRMSQ4Jw9Z+/cMQ3ECVK4J8DB/D3l7dqPffSrmD19qJfJ9R5TdYALGXF1ygJC4OGuTns1q2DQFT/V192cTZvJCZVSDHeYTxedXsVLaogE/h7NiAtBLpNACauQEdHBaeEEEIeuqI8CU5u+gG+MfHwiU3Ell9/hbOzMybO7w2BsPauo2w/O16fnIMHkXv0KCAUwm7tWogtLes9X66Q42PPj5FckAxHA0d8N+o7VSOxliKXAgfmArlxgIkz8NyfQHN1R23DKPgghBDyULHsxOktGxAbF4vDvkGY+cLzmDNnDj/mOswaLkOqrp1S7vmPB/PjdSkKDETqN6o1WCyWLIHe8Ps36dpybwuuJV2DtoY2byRmoFl/19MHdvZzIMYT0NQHZv0N6JigM6DggxBCyEPle+oYwm56Y4/3XZhbWuLXrb+p11gJ8EhAaKVaD64By7fIc3N5nYeytBT648bB7A3WsKt+HvEevIsp8+WIL+Fi4oIWdWc3cONX1fYzWwHLXugsqOaDEELIQ5McEYore3bgP/8QJObm4eqp0zA2NubHYvwy+Iq1jFhLAybWuug10hbBV5OQn10CHQNxnZmUpE8+hTQhAWI7O9iuWc1Xwq1PvCSer9vCzOo5C090faLZf9aqL3gLOFFW+Dr2Y6BXC79eG0PBByGEkIeiuCAfJzd+j4D4RHiERePHH3/E0KFD+TE2w+XM7wG8i2mvkTYYM9OFr1zLMiJ9RttCIVPyx7XJ+uMP5F+8CIFYDDu2YJxR/WuwFMmKeIFpnjQP/S3648PBH6JFSZKBf+YA8lKg5xPA2BZuXNYGUfBBCCGk1bHsxNmtmxAbE4N/bvnjicen4b2yKbCSjCKc/NkPslIFb50+drYrNDQqAg0WgGiIax97Kbh5E2nrN/Btq88+g45bn/u+j2+9v0VodihMtU3x49gfIdaoPaPSLGQlwP6XgfwUwKIX8MyvvBi2s+l8PzEhhJCH7t7ZUwi57oXd3ndhZGqKnbv+4kFFcYEUJzbfQ6GklDcSm/qGW5XAoz7StDQkvv8+IJfD8MnpMJ75wn2fcyDsAI5HHoeGQANrx66FlV7txa3NgqVxTi4DEm4B2kbAi3sArRYuaG2jKPNBCCGkVaXFROHyrm04ExCG+KwcXPH0hKmpKeRSBU5v9Ud2SiFvm/7E4n7Q1GnY15RSJkPS+x9Anp4BrR7dYfPVV+qi1epTaX3TfJFemM7Xa1l9U7Vo21L3pRhiPQQt6uY2VZGpQAg8tx0w64bOioIPQgghraa0qBAnNqxGYHwSLoZEYvXq1RgxYgQf/ri4OxiJYTl8wTgWeOib1L/oW2XpGzei8NYtCHV1YbdxE7+v7nzseR5spBamVtnfz6If5vaZixYV7Qmc/li1PXEF0P1RdGY07EIIIaRVsADj3LafERkRgb9v+mHK5Mn48ENVcefNf6MRdiOVNw6b+qYbzO0bPhyRd/EiMstWvbX57ltodXWuNfBgq9NWDzwYv3Q/XIi7gBaTE6dqJKaUA31fULVP7+Qo+CCEENIqAi6dg/+Vi9h1zRdmFhbY+/ffEAqFCLqahNunYvg5415yhWNvswZfszQ+Hkkfq6bImrz8Mgwfe6zWoRaW8VBCWes1BBBgzc01/LxmV1oI7JsNFGYCNv2BJzexill0dhR8EEIIaXEZcTG4uH0rX7clvaAQR48f53UecUGZuLwnlJ8zeJoTeo+0bfA1FSUlqgXjJBLo9O8Pqw8/qPU8VuNRW8ajHAtKUgpT+HnNXmDKFotji8bpmgMz9wDi+hfB6yyo5oMQQkiLkhYX48TG7+EVHI6b0fHY/uefGDhwIDIS8nD6twAoFUq4DLPC0Ok1h0vqk/rdShQHBUHD2Bh2G9ZDoKlZ63msuLQhGnpenVjmJPYakJ8K6FsBCTeBwMOAUATM/Aswdniw63cgFHwQQghpURe2/4o7fn44eicQr786H/Pmz0d+djFObPaDtFgOOxdjTHi5V62zU+qSc/Qocvbv50MYtmzBOBubOs+10LVo0DUbel6tgo4Dp5cDkqSaxx5bA3QZ0fRrd0AUfBBCCGkxQVcu4sbpk9h1zQd93fpg8y9bUFok44FHQU4Jb5k+dUFfaIgaXgVQHBqGlK9Uy86bL1oE/VEj6z2fLQ7H6jrqq/mw0rWCu6U7mhx47H+FD+DUSu8BgpoOimo+CCGEtIispASc+W0z9njfAUSaOH7yFEQiMU5vC0BmYj50DDXxxOL+0NZreEdReX4+Et99F8riYuiNHAnzt9+q9/yEvAQsPL+w3sCDWT50OTSaspQ9G2phGY+6Ag92/dOfqM4jahR8EEIIaXbS0hKcWL8aR2/dRWRGFg4ePgQ7Ozt47A1FfFAWRJpCPLGoHwzNdRo1VTf5s89RGhsLkbU1bNf+AIFG3QFDRlEG3jz3JtKL0tHduDu+G/kdz3BUxh6vG7cOE7tMbNoPymo8ahtqqXjXgCRRdR5Ro2EXQgghzc5j1+846eGJK2HRWLtmNR59dCKfTht8NZnPNJ3yuhssuxg26prZf/2FvDNnAJEI9hvWQ2RiUue5rHvpgnMLEJ8XDzt9O2ydtBWWupZ4vOvj6g6nrMaDDbU0KeNRjhWXNud5nQQFH4QQQppV6HVPHPt7Dw75BODFGc9g2YcfIfRGCm4cj+LHR890gVM/80Zds9D3DlK//4FvW330EXQGDKj7XGkhFp1fhLDsMJjrmGPbpG088GBYoNGsbdTZrJbmPK+ToGEXQgghzSYnJRn/rFuDndd84ebSHTv37uMt0y/uCubHB0xyRN9x9o26piwrC4lsxVuZDAaPTYXJy3PqPFcql2KZxzLcTb/LC01ZxsPBsAWnuBrZq6bS1kkAGNrRbJdqKPgghBDSLGRSKQ6t/Ra/nfeElpYWzlzyQH6GFP/96g+FXIlu7pYY8UzjFlNTyuVI+uADyFJToensDJtvvq1zSi7rUPqp16e4mngVOiId/PLoL3AxcWm5Tzc1ENj+GKCQ1XFC2fucuhp4kKGdDoiCD0IIIc3iyu4/8dP+I0jPL8DRo0ehr2OCE5vv8am11l2NMHF+L752S2Nk/PwLCq5dh0BHB/abNkJDX6/OYtSVN1bidMxpiIQirB+3HgMs6x6aeWCsgPTPx4C8ZMCyNzB9I2BYrTsre/zCLqD3ky33PtopqvkghBDSZLF+d3Fxx1a4jhiNNT+uw734ZPz8/WoMGT4aR9fdQV5WMYwsdTBtYV+IxI376z/f0xMZW7bwbZuvvoRWjx51nvvTnZ+wP2w/nzq7avQqjLSrv/fHAwk5CRx8FZAVAw7Dgdn7AB0TYODLVTucssZilPGoFQUfhBBCmoRlGzz37URWYjx+/nEtzgaG4dUZT+OtZR/yoZb0uDxo64sx/Z3+0NGvvfV5XaRJSUj64EO+PorxzJkweuqpOs/dGbgT2/y38e0vHvkCU52mttwn6rMTOLEUUCoA12nAc39WrNfCAg3n0S332h0IDbsQQghpkth7vkiNDEdkeib+uXkPI3u54Ne9++C5Pxwx/pnQEAvx+MJ+MLLQbdR1laWlSFj6HuS5udDu0wdWn6pWra3NkfAjWHt7Ld9e4r4Ez7s83zKfJlsk7soPwL/vqgIPluV44S9aKK6JKPNBCCGkSVkPr/27kSYpwI6rPnA2N8H8qRPgfykFAR6JvNZy0qu9ea1HY6Wu+R7Ffn4QGhnBbuMGCLW0aj3vQuwFfHX9K749r888vOb2Wst8kryL6cfAzd9Uj0d/AEz4nK8rQ5qGgg9CCCFNynpEBgbgD6+bMNDWwtwRg5CTGA+v/RegIXbCyBnd0W2gqrdGY+SePInsPXv4tu3qVdC0r31arneyNz688iEUSgWe7fEslg1a1qiF6RpMVgIcWQAEHlHNXmGLxA1b0Pyv08k0athl1apVGDJkCAwMDGBpaYmnn34aoaGhNaLhr776Cra2ttDR0cG4ceMQGBjY3O+bEELIQ8L+P//v5nU841EileG1UUOgo8nWZxFAVnQVbuPs0P/RxvfWKImMRPIX/+PbZm++CYPx42s9zz/dH+9efBdShRSTukzC/4b/r2UCj2IJsOc5VeAhFAPP/UGBx8MIPjw8PLBo0SJ4e3vj3LlzkMlkmDx5MgoKCtTnfP/991i3bh02b96MW7duwdraGpMmTUJeXl5zvWdCCCEPMfA4uekH/Hn2EhJycjF/1GCY6ZfXdCihlKfCwTW/0cGAoqAACe8ugbKwELrDhsHi3XdqPS8yJxJvX3gbRbIiDLcZjtWjVz9Ye/S65KcBOx4Hoq8AmvrASwcAtxnN/zqdlEDJ/iU1UXp6Os+AsKBkzJgx/B8ly3gsXboUy5ezVf6AkpISWFlZYc2aNViw4P6pKolEAiMjI+Tm5sLQsHF9/wkhhLRwnce+Xfjsy6/gFR6DV0a4o6+9TdWTBAJYde2Ol75b1+AAhF036aPlkPz7L0QWFnA+fIjfV5eYn4hXTr2CtKI09DPvh22Tt0FX3Lhi1gbJigL+ehbIjgZ0zYE5BwHbgc3/Oh1MY76/H6jmg70AY2pqyu+jo6ORkpLCsyHlWJe7sWPH4tq1a7UGHyw4YbfKb54QQkjbwgKEq//8hdWrVsMzPAbPurvVDDxUJyIvIwNymQwiMRuKub+cfft44AENDditX8cDD9attPICcI4Gjnjz7Js88Ohm1A0/P/pzywQeyfeA3TOAgnTAuAvw8hHArHFdWcn9iR7kH+KyZcswatQouLm58X0s8GBYpqMy9jg2NrbOOpIVK1Y09W0QQghpjX4ef+/ELxvW45R/COY/9wy+W70G149EIjEkG5raGpgwtxcMzVT9LnSNjBsceBT5+yN15Sq+bblsGXQHD8b52PNYfXM1UgsrVoIVCUSQKWXqFWqNtY2b/weN8gD2vQSU5gFWfYE5hwADWhCuTQUfixcvhp+fH7y8vGocq55qY/9w60q/ffLJJzyIqZz5cHBowUWACCGENBj7//eVPduxa+sWHLjtj2cfm4I/9h/C1YMRSI7QhEjbGtOXDIBtj7qXt6+LLDsbiUuWQimVQn/iozB9dT4PPJZdXsaqR6qeq1StnzK391xY6bVAQMCKSg+/CchLAafRwIt7AO3GTxMmLdhk7J133sHx48dx6dIl2FeaBsWKSytnQMqlpaXVyIZUHpZhY0OVb4QQQtpG4OHx1x84uP0P/HXdF2MfGYZ/jp+A/+UE3LsQz895dG6vJgUeSoUCSR9/zDuZih0dYbtyJZ82yzIe1QOPyv4M+JMPyTSrm9uAA/NVgUfvp4CXDlLg0ZaCD/YPkWU8Dh8+jIsXL8LZ2bnKcfaYBSBsJky50tJSXpA6YsSI5nvXhBBCWhT7//3lndtwcu9f+NPrFvr26oWT5y8iLiCbdzBlhj/dFS5DVH90Nlbmb9tQ4HEFAk1N2G/cAA1DQ17jUXmopTYphSn8vGbB5ltc/BY49QGfqYPBrwHPbQfE2s1zfdI8wy5smu3evXtx7Ngx3uujPMPBqltZTw82tMJmuqxcuRI9evTgN7atq6uL2bNnN+alCCGEPMTA49KO33Du4D785nEDdnZ2OH/FE5IUKc79Eci/p3uPsoX7lC5Nun7B9etI37SJb1v/7wto9+rFt1lxaUM09Lx6yWXAyWWA707V43GfAmM/oq6lbTH42FK2uiBrHFbZ9u3bMW/ePL790UcfoaioCAsXLkR2djaGDRuGs2fP8mCFEEJI2w88Lvz5KzyOHsRWjxswMTOH53VvaMi1cfKX25BJFXDsY4qxs1ya1NhLmpqKRLZgnEIBo2efhfFzz6mPsVktDdHQ8+p+E0XAodeBkBOAQAg8/iMw+NUHuyZpvT4fLYH6fBBCyMPB6jAu/LkFXv8exS+XrkOkowfvW7dgaWaDQ9/7ICe1EOYO+njmfXdoajd+vgIrLI2dOw9Fvr7QcnWF076/IdQpWxEWQHxePKYfmQ65svaaDgEEsNK1wukZp5veWKwoB/h7FhB3DdDQAmb8DvR+smnXIg+nzwchhJCOE3ic+/1n3PjvBLZduQmlWAtXrl6FnY09jm+6ywMPfRMtPLGof5MCDyZt3XoeeAj19XmdR+XAIyw7DG+fe7vewINZPnR50wMPSbKqh0daIKBlCMz6G3Aa1bRrkdaf7UIIIaRjBR5nf9uM26dP4g/PWyhQAJc8PNCtazdc2BWMpPAc3svjicX9oWdc+wqz9yM5exZZ27fzbZuV30HTyUl9zCfVB/P+m8cbiHU37o7/PfI/nuGojD1eN24dJnaZ2LQfMiMc+GOyKvDQtwLmn6LA4yGizAchhHRiCoUcZ7f+hDvnz2D71dvIKCrBZQ8P3jzy+tFIhN9KhVAowNS3+sLMTr9Jr1EaE4PkTz/j26bz5sGwUhfsC3EX8JHHRyhVlGKg5UD8NOEnGGkZ4dnuz1bpcOpu6d70jEeCj2qBuKIswLQb8PJhwKQi+CGtj4IPQgjpxIHHmS0bcffiOT6dNimvAGfOnsPgwYMR6JkI39OqztTjX+4Jh56mTXuN4mIkLFkKRX4+dNzdYfl+RVPJA2EH8K33t7y/xziHcfhhzA/QFqmmubJAY4j1kAf/ISPOA/+8AkgLVOuzsB4eeuYPfl3yQCj4IISQThp4nP5lA+5dOl8WeBTywIMtmREbkAmPv8P4eUMed0LPR2pZw6WBUr7+BiWhodAwM+PrtgjEYj6jZqvfVvx892d+zoweM/D58M8hEjbzV5LffuDo24BCBnQdD8z8C9CimZdtAQUfhBDSySjkcvz38zr4eVzEn163eeCxb9cRZNzURag4BZf3hkKpUKLncGsMeaJqM8nGyDl0CLmHDwNCIezW/gCxlRXvTrrq5ir8E/oPP+fNfm9i8YDFTZq2W6/rPwNnPlVtuz0HPL0FEGk272uQJqPggxBCOlngcWrzj/C/cqks8GBDLWehSLSEf1gCUmMkkJUqYOdqgnFzejY5KCgODuZZD8bi3Xeg98gjKJGX4BPPT3Au9hyfvfLJsE8wq+es5v0BWfeI818CVzeqHg97G5iykgdApO2gT4MQQjoJtsz9yZ/WqgOPREkBz3i4OvbnhaUMCzwMzbUxZFoXFOSWNO11JBJe56EsKYHe2DEwe/NN5JXm4e3zb/PAQywU44exPzR/4CGXAkcXVgQej34JTF1FgUcbRE3GCCGkswQem75HwNUr2HHVhwceCyatQjebvvU+b9GvExr1OqyeI+Gdd5B//gLEtrZwPnwIWZpSHniEZodCT6yHjeM3YpjNMDSr0gLgwDwg/Cwg0ACe3AQMnNO8r0HqRU3GCCGEqMllUpzY8D38r17BH163kV5YjNNnzsBSswcu7AyCUlHzlyUQCviKtY2V9ed2HniwwlK7jRuQIMzFgv8WIDE/EWbaZtgycQt6mTX+uvUqzAL2vgAk3AJEOsDzOwDXqc37GqRZUc0HIYR08MDj3/VrcM/LA9s8byFfrsTFS5cwdOhQxPhlQEMk5EMt1T3/8WBYODZuZkjh7dtIW7eOb1t9+gmibIRY+N8ryCrOgoOBA7ZO2srvm1VOPLD7WSAjDNA2BmbvBxybOatCmh0FH4QQ0kHJpCzwWAVfTw/8duUmFGIteHpcglsfN9w+FY0b/0bzFWo5VleqrHTf2NdKT0fie8sAuRyGTzyB4DGOWHpmPopkRehl2gu/TPwF5jrN3F8jLRj461kgLwkwtAPmHAIsmzmrQloEBR+EENJRA491K3HrigdfnVbb0BCXPa6gi4MzTv8WgKi7qmXpXYdZIy44EwYm2ug10hbBV5OQn10CHQNxw1+rtATB7y6AKD0dii62uDtvOD6/uBgyhQzDbYZjw/gNvNbjgSjkQOw1ID9V1R6drUa7bxZQnAuYu6q6lhrZP9hrkFZDwQchhHQwstJSHP/xO1z3uMwzHmaWlrh8xROGWuY4uMYH2ckFEIoEGPuiK3qPsoVcquCP2bTaPqNtoZApoSFu2GTI87HnEfjdJ5h8Jx/FYuCTyalI9PmKH3vM6TF8N+o7iDUaHsjUKug4cHo5IEmqecx+iGqoRbdpHVg7G7lCiZvRWUjLK4algTaGOptCQ9jMPVYagIIPQgjpQKSlJTi+9jt4XrqI3z1vwcGxCy57eqI4XYQDf9xGaZEMukaaeGxBX1h3NeLPqRxosABEQyxocOCxe9tSLL+iWon212lCJJpXPJctAtcsgcf+V+oeCxq6gAKPBjodkIwV/wYhObdYvc/GSBtfTu+NqW5N72LbFNTngxBCOlDgceyHb3H69GlsuewNF1dXeF2/joQ7RTjx8z0eeFh3NcQLnw5RBx5NxTqVbjvzLRadUAUe/w0S4FrvSkEMBPjh1g/8vCZjz2UZjzqLUASqhmIP8hqdKPB4e7dvlcCDSckt5vvZ8dZEwQchhHQA0pJiHF3zNQ4e/5c3EBszahQuXPTErUNJ8D4axb+/e4+2xdPvuUPPSOuBX8833hsv702FfjEQbgP8NaHq14kSSqQUpvCVaZuM1XjUNtRS6VUgSVSdR+odamEZj9pCuPJ97Dg7r7XQsAshhLRz0uJiHF6zAjsPHcF//qGY9dwM/LTpT5z+ORhZSQUQaggweqYL3MbYPfBrFfkHIG3tWkCjEN1SgDxtYP0zGpCJah+qSS9UFbY2SV4D/xpnRaikTqzGo3rGozIWcrDj7LxHupmhNVDwQQgh7TzwOLjqf9i8Zz+uRcbivUULseStFTjyw12UFMqga6iJqW+6waa7cbO8Xu6xYyi8cQP6bFQEwKYnhcgwqrtGxELXomkvlBlZ0Sb9ftjsF1InVlzanOc1Bwo+CCGknSotLsK+bz7H2p17EZCUgtVff4VJQ+fh5M9+fH01K2dDTH2zL/RNHmyYRZqYCFl2Di+xyDl+XL3/Yn9AoiuAea6yRgDCaj6sdK3gbuneuBdTKICbvwHnvwJkRfdpPCIADG2BLiOa8mN1eEqlEh5h6fjdM6pB57PZL62Fgg9CCGlHYv3u4uKOrRg9ey4u7NuNNTv3IiFbgm2bNsNeeyyuH4nk5/UaYYOxs1wbPGW2PhGPTlRvV+5DNvEeu6mKPV/4RFQl8GCWD10ODaFG47IdxxYDcWU1HE6jgT5PAyc/qPTqFa/CTV0NNOY1OoFiqRxH7iTiT69ohKfl3/d89pu0NlJNu20tFHwQQkg7+kvWc99OZCXG489v/offLlxFqVyOvb/vgCzeBRGJaRAKBRj1Qg+4jbXj02YflKKoCAbTpkFy6hT/kiq/Yvm9UkOIXc+wmTN56uewjAcLPNhU24a9iAK48Stw4WtVtkNTH5j0NTBovmpFWj3Lmn0+WMaDBR69n3zgn7GjSM8rwV/esdjtHYusglK+T19LhBeHOMDJXA9fHA2oK4Tj021bs98HBR+EENJOxN7zRWpkOMJS0rHrui9M9HSxa+s+JPkaoaQgn3clZcMstj0evL5DWVqK7IMHkb5lCxTpGeovqeqc9+/Hd716YkaaLy8uZTUebKilwRkPnu1YBMRdL7vgWODJnwCTLhXnsACj5+NVO5yyoRbKeHChKXn4wysKR+8koVSuWqfHzlgH80c6YeYQBxhoq3qtmOtr1ujzYf2Q+nxQ8EEIIe0k63F595+4FhGLo3cC4WJljjenPoZoT13W0xSWXQwwdUFfGJg+2Li9Ui5H7vF/kbF5M6/1YNKMAM9+IszwlLEuZOzNVNyzJmVCDQyxHtK4F2K9OdTZjmJVtmPyN6psR20ZGxZoOI9+oJ+to/17uBKewes5PMMz1PsHOhrj9VFdMaWPFUQaVYfcWIAxqbc1dTglhBDSsC+a89t/xZ/H/4NneDRG9XDC9P69oCjMhFwYiz6jh2PsS64QiZte+6BUKJB39hzSN21CaZSqQDFbDzg8UojQUY74vu+n0Aj+FGJraxg/9xxyDh6ENCUFIrMmTM3MiACOLQTib6gedx2nynYYOzb5/Xemeo6jdxLxR6V6DjZa8pibDV4d5YxBXUzqfT4bWmmt6bT1ocwHIYS0YYWSXBxe/z1Wbv0doSnpeMa9D0Z2dyo7KoCOjg/GvzIPQlYb0cTApsDTE2kbNqAkKJjvK9YT4+BQOU4PEmB0t4nYO/IbGGgaQHHxAgRiMa8lMZ75ApRSKYSamo3LdnhvAS5+U5btMACmfAu4z60920HUMvJL8Nd1VT1HZqV6DjasMm+EExxMWQas/aDggxBC2qiYe77YsfIr/PLfReQVl+C10UPgal25b4YSkvRYxPndgdOAQY2+fuGtW0hbvwFFvmVdSHW1cW64Dnb3l0Cqo4llg5dhTq856sLVyoEG2ydoTOCREQ4cXQgk3FQ97jq+LNvh0Oj33ZmEpebhD89oHLmbiFJZ1XqOF4Y4wLCsnqO9oeCDEELa4Kq0nn/vxK5tW/H3jXsw1tPBkomjYGFQy7L0AgG89u9Gl/7uDZ7dwrqUpm/YgIKrV1WX0NJCxrSh+NzZB5laebDStcbasWsxwHLAg/8wLNtx/Wfg0neVsh3fAe6vULajvllNrJ7DKxpXwio6xA5wMMYbo2uv52hvKPgghJA2JCMuBv9u+gF7/zuL80ERGDmwP6a7dINIWVL7E5RK5GVkQC6TQSSu/6/gwtBQRK79BiJPH9UOkQgGM57BriGF+DvzDN810m4kVo1aBRPt+msHGiQ9TFXbkXBL9bjbo8D0jZTtqKee4/jdJPzuFYWw1Ip6jqlu1nhtVNf71nO0JxR8EEJIG/lr987pEzizfSv+8rqFkOQ0vPv6mxjh9BrSY9kaJ0Xo/6gDegyxVDfxKqdrZFxv4FEaFwf/NZ9D++ItiJSqtuiebgKcf9QIEgtvJGcmQygQYtGARXi97+t8+8GzHZuBi98B8hJAy1CV7Rj4MmU76qjn2F3WnyMjX1XPoaepgZlDHPnwSnur52gICj4IIeQhK8jJxuktG+DtcRk7r/mgQCrDtk1/QhDXHRnxrH+HKSa/0QcOPRvXgVKamoqMX7Yg++AB6Jb1f/B2FeCfMUIkmrMAJhcoyIW+WB8bx2/EUJuhD/7DpIeqajsSb6sed5+oynYY2T/4tTuYcFbP4RWNw3cq6jlsjbQxf6QzZg5tv/UcDUHBByGEPESRPjdwZstGXPEPwhGfADjY2+H3r/9CorccCoUUZvb6mPZWXxia6zT4mrKsLGT+tg3Ze/fyZmEszLjTVYB9Y4SItqlZF6Ij0sEgq8YXrFYhl6myHZdWVmQ7pq4CBrxE2Y5qGS6vCNafI5qvu1KuvwPrz+GMx9ys2309R0NQ8EEIIQ+BtKQYHn/9gVv/ncDROwG4GZ2Amc/NwJzJnyD2Wi4/p8dgS4x/pRfEmg3r3yHPy0PW9u3I2rETisJC1b6+LljRPxIhDnUXo6YXpcM3zbfxjcLKpYWoajsSy2pJuk8qy3bYNe16Hbieg2U6QlPz1PUcU/pY4/XRznB3NGmWdvjtBQUfhBDSylKjInDqp7UICQnBX9d9kVVUgs0bfoFl0RDE+uTylhePPNMdAyY5NOgLiQUaWXv2IPP3P6DIVQUu2r17w+K9pbhiK0GI18f3vQZrjd6kbMe1TcDlVYC8FNAyKst2zKZsR5lMXs8Rh7+8Y6rUc7wwxAHzRzjD0azj1XM0BAUfhBDSSlgX0Vv/HsbVf3bDJzoWB30CYGdnj1N79yDmsgJpEgm0dEWY8robHHrfv75DUVqKnP0HkPHrr5BnqFpsa3brBot334XB5Ek8cEkL2NGg98bWZGmUtGBVbUdSWY+QHpNV2Q624Bvh9Rx/Xo3GId+q9Rzz+HorjjDS6bj1HA1BwQchhLSCvMwM/PfzOkTeu4Pjd4PgHRWHF55/Hu+/+i18jidCoVDCzE4Pj73VD0YW9dd3KGUy5B47jvSfN0OWxGbCAGJ7e5gvXgSj6dMh0NBATnEOfrj9A45HHq/3WmzmDFuFli0G1/Bsx0bg8uqKbMdjq4H+szp9tqO8noMNrVwOrVTPYW+E10Z35fUc4k5Qz9EQFHwQQkgLC73uhfPbNiMyIRF7btyDpKQUv/y8Ba76Y3DraAI/p5u7JR6d2wtiLY361185cwbpm35CaXS06n/iFhYwX/g2jGfM4B1H2RfgqahTWHNrDbKKs3hwwXp3eCV68W1lpQXVy6fsLh+6vGGr0KYGqWo7ku6oHveYAkzf0OmzHSUyOY7dTcKfXtEISVHVc7DRsim9VfUcrD9HZ6rnaAgKPgghpIWUFhXi4o7f4H/pHK6EReM//1D07tULp/7Yg+jLUgT7pbAIAI883Q0DJzvW+QXFAop8Dw+kb9iIkpAQvk/D2Bhmb7wBk5dmQ6itWsk2OT8Z33h/A89ET/64m1E3fDXiK96p9Hzseay+uRqphanq67KMBws8JnaZeP9sx9UNgMcaVbZDm2U7vgf6zezU2Q5Wz7HnRhx2XWf9OVRN4HRZPcdgB96fo4tZLR1pCUfBByGEtICksBD8t/lHxMZEY9/NewhPzcBbry3Cx+//Dxe3h6FQUsrrOya91gdd+tS9ymiB9w3eCr3o7l3+WKinB9NX58N07lxo6OvzfXKFHPtC92Gj70YUyYogForxRr838Lrb6xBrqGoLWIAx3mE8n9XCiktZjQcbarlvxiM1UFXbkax6fbhMBZ5g2Q4bdFYRaaw/RwwO+yagpKyew4bVc4xwwotDqZ6jISj4IISQZqSQy3HjyH5cP/Q3/OOTcMAnAFqaelj0+BpM7DMRpzYHQiFXwtSW1Xf0hbFl7bMdivz8VOuvXLvOHwu0tWE65yWYvvYaRCYVbbbDssOw4toK+GX48ccsoPjykS/R1bhrjWuyQKPW6bSsI2nsNSA/FdC3ArqMYGM8gFdZtkMhBbSNy7IdL3TKbAfLPl2LzMTvnlG4VKmeox+r5xjljGl9baieoxEo+CCEkGaSm5aCUz/9iMgAPxy7G4TbMQmY8ugUPOayCCKFHhJDc/h5dq7GGD3TpdbAozg0DOmbNiH/wgXVDrEYJs8/D7O3FkBsaak+r0Regq33tmJ7wHbIlDLepfS9Qe/hOZfnGtcePeg4cHo5IEmq2KdnAYh1gZxY1WPXacAT6wEDa3TGeo7y/hyV6zkm97bi660McaJ6jqYQKFk414ZIJBIYGRkhNzcXhoaGD/vtEELIfbH/jQZ7XcaFP36Bf3QcDtz2R5FUiedGLMZw16l11nIs+nWCers0JgbpP22G5NQpvlgchEIYPfUUzBctgqZ91WZdt1NuY8X1FYiRxPDHExwm4NNhn8JKz6pxnxYLPPa/wn6C2o+zAIRNn+37fKfLdmQVlGKPdyx2Uj1Hi3x/U+aDEEIeQHFBPs7//gvueVzEiXvBfArtuDFjsPytNYj0UHUZrU4gFPCZLYw0ORkZv/yCnMNHALmc7zOYOhWmi95GoEEu7hbeg0VKEh9OKZAVYL3PehwMO8jPM9cxx2fDPrt/wWht2FALy3jUFXgwrLDUbUanCjwi0vJV/Tl8Kuo5rA1V/Tlmsf4cup27P0dzoeCDEEKaKCEoAKd+/hF3gkKw/9Y9FMkV2Lh+E4Y6T8Pd8/F1Pu/5jwfDRK8UKStXIufvfVBKpXy/3tgxsFyyBF56SVh9c2GVmSlGWkY8wyIplfDHM3rMwLLBy2Co2cQMMavxqDzUUpu8ZNV5zqPRkbHf63VWz+EVjYshaer9fe2M+FRZqudofhR8EEJII8llMlw/uBeX9+/Ff34huBYZi2FDBmPFB5uQdFsOnxBVrYS5vT4yEvL5dFqeYCi7z9qzF5kHfoOybP0V3cGDYbHsPei6u/MpscsuL6vSj4PJLVG1TbfQscCaMWuavg5LufgbDTuPFaF24HqOf+8l8yLSyvUck3pZ4fXRVM/Rkij4IISQRshKSuTrslzw9MRh3wCUKpT44sMV6Kk3GREXVcGEoYUORjzbDZZdDHBwtQ/0TbTQc4gZ/E+GoEAiReG+HdAuKYS2mxssli6F3sgRvC6ETZllvTiqBx6VsWLSBncjrU38TeDKD0D42Yadz2a/dDDZrJ7jhqqeIz1P1Z9DR8z6c9jz5eydzKk/R0uj4IMQQhqYmve/eBZHt2zEQe878E9MwaghwzB/+lcoStREtqSQ9+0YPM0JfcfZQ0OkmnEy58tBkBw8gMwvf8OAzEwoBSLodHeC+btfw2DixCrFqKwHR+Whltqw401agTbGC/D4Hoj2KNshBMRagLSojicIVJ1L2bTbDiIyPZ93IT3km4Biqaqew8pQC/NGOGM2689B9RythoIPQgi5j6I8CU5v2Yjd/+zHKf8QaGlq4bO3voUNHkFRIpuYIoDbODsMmeYMbX2xev2VnCNHkPHLFsiSVeuvaDo6wuKdxTCcNo2vv1Ld7dTbDfosGrwCLZs1E3UJ8PgBiLum2icUqdZhGb0MSAkom+3CT670xLKAaOpqoCFt19t6PUdUJv7wjMaFSvUcbnaGeH1UV17PoVkWKJLWQ8EHIYRUE+t3Fxd3bMWEeQv4EMj2777EXxe9EJ2RjYlDR2HagI+gqVSl5p37m2PEs91hbKWrXn9Fcuo/ZPz0E0pjVbUfIisrmC9cCONnn4FAXHO2RFROFO9OejH+YvOsQMuCjrAzquGVxLKARkMTGPgyMGopYOyo2mfaFXhhV80+HyzjwQKP3k+2238bbCXZf+8l8SLS4GRVkS5LMk1k9RyjnDHU2ZTWW3mIqM8HIYRU+0t5z2fLkBoZDqGOHo5534ZnWDTMDQ3wypT34WQyip9n7qCPUc/1gJ2rScX6K5cuIX3jJpSEhvJ9GiYmMFvwJkxmzYJQS6vG7zmlIAVb7m3B0YijUCgVfKE3LQ0tFMuL612B9vSM07W3RVcogJATqqAjRdXxFCIdYPB8YMS7dbdEr63DaTvNeLB6jr0347DzWgzSKtVzPF9Wz+FM9Rwthvp8EEJIE8Xe80VKRBjuxCXxvh1FUimmDx2HsX3eg6ZYD3pGmhj+dDe4DrPm/TqYguvXkbZhA4rvqb7whQYGMHt1PkxefgUa+jWLF9nMlT8C/sDe4L28UynD1l1Z4r4E0bnRfLYL0+AVaFnwEHgEuLIWSA9W7RPrAUNfBx5ZDOhXdEatFbteO59OG8XqOa5G46BP1XqOuSOceD2Hsa7mw36LpBIadiGEkDKZiQnY9vXn2Od1E1HpWehrb43pA4fBxuYdvtT9wMldMHCSo3rZ+8I7d/hKs4U3VNNWBTo6MJ0zB2avvcpXna2uWFaMvSF78bv/78grVU3tZDNXWFt0tvIs0824G9aNW9ewFWjlUsD/AOD5I5AZodqnZQgMWwAMXwjomnboz7a8noMVkZ4Prqjn6GNryPtzPN7Xluo5OkrwceXKFfzwww/w8fFBcnIyjhw5gqeffrrKP4YVK1bgt99+Q3Z2NoYNG4aff/4Zffr0ae73TgghzSIzIR4X9mzH5j924GpEDMz0dfHGmKFwtWa1FTLYueRh8muPQc9YNXRSHBLCg478y5f5Y1bHYTxzJswXvAmRRc16DJlChmMRx/DLvV+QVqj6kuxu3J0HHaPtRteoPbjvCrSyUuDeXsBzXcX6KzomwPBFwNA3AJ2agU9Hwuo5Tvgl4XfPaARVqud4tCdbb8UZw7tSPUeHCz4KCgrQv39/zJ8/HzNmzKhx/Pvvv8e6deuwY8cOuLi44Ntvv8WkSZMQGhoKAwOD5nrfhBDywDLiY3F1/x7s+nsfzgaEolQux1Q3V4xxcYZIQzUDQiAQoiDTA7pGT6EkOpoXkrKCUk4ohOHTTyH5hdGIMlTCQh4Dd4WpOkhgf4xdjLuIjXc28uEUxkbPBosHLsbjzo/Xu5x9rSvQSosB313A1Q2AJLFiETg2tDLkNUCrY/8/NqeQ9eeoWs+hLRbi+UEOmD/SCV0t9B/2WyStUXDKovXKmQ92KVtbWyxduhTLl7M1A4CSkhJYWVlhzZo1WLBgwX2vSQvLEUJaWnpsNK4f/BvHjx3ldR2pknwM6eaCKb3sYayrU+tzxtk4Q/fcJfX6K4bTHkP4s4PwbfL2GsMjHw/9mLdD3+C7AX7pqjoQYy1jvNH3DczsOZMXlTZKaQFweztwbVNFx1F9a2DkEmDQPECz5uq4HQmr59h+NYbXcxRJVb9/S4OKeg4TParn6NQFp9HR0UhJScHkyZPV+7S0tDB27Fhcu3at1uCDBSfsVvnNE0JIS0iLieJBx5VzZ3jQEZaagR62Dnh53Mew0YuCUl5Hgy+lEncigzFCLofBuHGwWPIuvHQTa22DzgKR9y6/p36sI9LBy71fxrw+82Cg2cjMRLEEuPU7cH0zUJip2mfkoJouO2AOINZGR8X+mL0RncWHVi6EpPLZw0xvG1U9xxP9qJ6jPWvW4IMFHgzLdFTGHseWzXevbtWqVbxGhBBCWkpqVASuH9qHO56XcTogDLdi4mFpZII3Jn2Afs5TIdRQQJYfgLI/qmsSCFCsqwOHv3bBYMgQVRv0Q+/U2waded7leSwcsJCvPtsoRdnAja2A9xagOEe1z8QJGP0+0O9FQKTZoes5Tvon4Q+vaAQkVvwxOrGXJV4d5YxHuppRf44OoEVmu1QvnmIRbPV95T755BMsW6aaVlae+XBwcGiJt0UI6WTYlNnrh/5GoPc1XA6Ngmd4NMQiTTw3Yj5G9poJkYYY3dwt8Mgz3SAQDEBBagokJ08i99hxKAoL+DU0XXrAdPZsmI0aAwMz8wa3QWcec36scYFHQSbg/TNwcxtQUvbFa9YDGPMB4PYcoCHq0PUc5f05UiUV9RzPDVL15+hG9RwdSrP+S7a2tlZnQGxsKprZpKWl1ciGVB6WYTdCCGkuSWEh8D70N0Jv34RXeDQuhURBrgQmDHwKE/q8Al0tA77o28jne8C2uzEUJSXI/vsk8n7bBkVWFtjgiJaLCyyWLoH++PE1/nhqaHvzBrdBz0sFrv8E3PoTkKqCHlj2VgUdvZ9utw2/GiI6owDbr0bjwO2Keg4LA7beCtVzdGTNGnw4OzvzAOTcuXMYOHAg31daWgoPDw9ecEoIIS0pMSSIZzoi7/jgRlQczgdHoEgqw3j3aRjn+jKM9Mz4CrOsSZjLECtALkP2P/uRsWULZGXDxuIubP2Vd3lBqUBYdc0PNtzCWqBv9dva8Dbo9XUPzU0Erm4EfHcCsrKupjb9gTEfAa7T+Gyajohlw2+yeg7en6OinqMXq+cY5Ywn+ttAS9RxAy7ShOAjPz8fERERVYpM7969C1NTUzg6OvKZLitXrkSPHj34jW3r6upi9uzZ9PsmhLSIhKAAHnTE+N2Fb1wizgaGIbuwGOMGTcLYHq/A3NCGNwZzn9oFAx51AFvTTXLyBNJ/2gxpXBy/hsjGBuYL34bx00/XWH+lUFqIIxFHsDtoNxLyE+77fsrboLtnJgJ7X6m5bgqr3UjxB+7sARRS1X77Iaqgo8ckVdOKDkgqV+CkXzJ+94qqUs/xaE9LvDaa6jk6k0YHH7dv38b48ePVj8vrNebOnct7e3z00UcoKirCwoUL1U3Gzp49Sz0+CCHNLj7QDx67dyMpIgC+cUm4GByB9LwCjHIfi3Eur8DayIl/j/caZYuhTzhD11AT+RcuqNZfCQ/n19AwM+PNwViTsOrrr7BhE9aRdH/ofkhKVV+WbArtTNeZsNO3w1fXvqq7DbrNBGgcmFdttVhW2JYEnHy/4nGXkcCYD4Gu4zps0JFbKFXXc6RIitX1HDPcVfUc3S2pP0dnQwvLEULaXco+LuAevA/tQ2ygH3xiEnEhOAKZBYUYM3QcxvR4Cdb6Xfm5Dr1MMPK5HjC11UPBtWu8K2mxvz8/JjQ0hNmrr8L05TkQ6lVdfyU8Oxw7A3fiZPRJ3p2UcTRwxCu9X8GT3Z/k02eZ87Hna7RBt9a1xvIhH2Li4SVVMx7VsV4fLx0Euo5BRxVTVs+xv1o9x9xHumD2sC4wpf4cHQotLEcI6ZBBR6zfHT5lNi7IH7dZ0BESgeyCIgxwfgRvDJoHe7Pu/FxDCx2MmekCxz6mKLpzB3Efb0DhrVuq62hrIfepURDNeQ7du42GsFI30uvJ17ErcBeuJl1Vvy5ra/5Kn1cwzn5cjY6kdbZBZzUe9QUeDFtQrgNmOsrrOdhU2XOV6jl6Whvg9dFdMZ3qOQgtLEcIaQ9fZjF3fVQ1HcGBuBkVD4+waOQWFmFg11F4e9A82Jo6V3mOJL0IVsJUxL/1KQo8rqiuIxbh8mAt7B1SjFw9D+CaB6zuWuGDwR+gVFHKMx1h2WH8XKFAiImOEzG3z1z0s+hX7/ur0gadNQW7tw+49lPDfrjybqXthFyhCizS8ophaaCNoc6slbxAXc9xyj+ZNwXzT8xVP2dCT0teRPpIN+rPQSp03EnjhJB2H3RE+d7iU2bDAwNwNTwG1yJjUSyTY1T/RzGmxyxYm3Sp8TyBEBio4YvoZ/9Q7dDQQMGkofiw6y1kGLH+ERXZBjZc8uGVD9WP2XDKsz2exZxec2BvYN+wN8oWeYs4D/jvB0L/q5i10hBs9ks7cTogGSv+DUJybsXPZ2OkjQ8muyI9v4TXc5Qf0xIJMWOQPV6leg5SBwo+CCFtLuiIvH2DZzqC/PzgERaF2zEJ0NAQYfyg6XjE+TmYGtT9pT349hoYSOL4kIbhtGkwXbQQ033eREZh3a8phBCLBi7ihaSsoLQBbxKIvwH47QcCD6s6kpYzdwH6Pgfc+gPIZyvY1tYFVaCa9cKm3baTwOPt3b41fhIWbLx/4J76sbm+qp7jpeFUz0HqR8EHIaRNUCoUiLjlzYOO276+vCNpQEIKDHT18djglzCy57PQ0zaEUCiAU39z2PUwhuf+cFUig30rKhWqtIdCCf0JE/j6K9qurriVcuu+3UgVUGCg5cD7Bx7pYYDfP4D/gYql7MszGH2fV91Ynw5Wy2HRC9j/SlmmpfLXdlnmZerqdtE8jA21sIxHfY3kRUIBvnvGDU8PtKP+HKRBKPgghDz0oCP85jV47d+Dy96qjqTRGdmwNDLDzFGLMMz1Cd4S3chSB71H2sJ1uDX0jLSQE5MKbQ0pxLnJsE28iiSbR1BqYIWuG1fDfKQ7z6AEZATgN7/fHqwbaV4KEHBIFXQkV/yVD019oNeTQL/nAeexNQOJ3k8CL+wCTi+v2eeDBR7seBtfYyU4WYLDvglVhlpqI1Mo4WiqR4EHaTAKPgghrSLW7y4u7tiKCfMWoEu/AVAo5Ajzvoqzf23Haa/rvJ4jt6gY3ayc8NrEt9HfeRzEmqq1V3qPsoVtD2Pe5lyeX4D0n39H1vYdGF5QDIFSBt0BAzD8nd7QGTwU2bIsXjx6NOIoInIqGiI2qBtpuZI8IPiEKuCI9lBlVRihCOg+Eej3AuDy2P2XsmcBRs/H6+5w2oakSYrhG5eDO3HZ8I3Lhl9CLkpkioY/P68RtS6k06PggxDS4lgWwnPfTmQlxsPz7x0oyH0K+3/9GSev3cDduCQ+EjHIeSDG9ZsLB4s+MLPT4wGHy1BraOupuo0qiouRtfdvZG7bBnm2qsZCp2dPPryiNXokPJM8cdRzCbwSvCBTqnpzaGloYYLDBHgneyOnJKfWVWjV3UjN+gKhp1WFoyGnAFlRxUn2Q1UBR59nAT2zxv3wLNBwHo22hM1MCUqS8CCDBRy+sdlIzKn085Yx1hXDyUwXd+MrZq/Uhc1+IaShKPgghLS42Hu+SI0Mh0wux+nLV/DF77sQk5ENY10dTB0wEaP6zIeJiQ16DLHiQytmjrq4k34HF1P9YSE2QVfPaGT9uhWyNFbACWg6OcHi3XeQNNQZv0Qdx6lDXyGrOEv9ev3M++Gp7k9hqvNUGGoa8mZgyy4v44FGzW6kSizXsILG+t5AYWbFm2Y9Q/rNVBWPmqqalrVXLCvhG1t/VoOVqbhaGWCgowncHY3h3sUEXc31WAkNRq25iJTc4rpKZ2FtpJp2S0hDUYdTQkiLUcjliAv0w/avv4CHfxBuxyaioKQUXS1MMbb3VPTvMQt23a15lqP7IEtoaovUXUPT8lMwKlCJF7wUsMpRXU9kawP9N1/FJTfgaPRxBGcFq1+LLV0/vet0HnR0M+5W473U2o1UASxPT8fEwrK/+vUsVcEGKxy1Hdgum4CxrAar1WDZDJ7ViMtGQnbNrIaRjhgDWZDBgw0T9HcwgoF21TVtqs92Qe2ls9gyxx1T3SpWMiedk0QigZGREXJzc2FoaFjvuRR8EEKaPeCID/JHwJVLOHjwAK4EhiIqPQu6mmIMdrLHsK4OsDI0gMvINzFixgSY2VWs68EzFJfew5AwBWZeUcAhQ7U/Rw84PEKItEn94Z8bAmnZYmwioQjjTN3wtFEvjLQdAZHT6LrrKfLTIPc/AN+AvUjPiYKFXA734hJoiPWAXtPLCkfHARqidpvVuBOXA7/EHBRLa2Y1XCwN4N7FuCyzocpqsJlDD9rn48vpvSnwIBwFH4SQhxJwhF33wpUz/+FKQDDvzVFYKkU3CzMM7+YANztriNlysrwRmBCWzt3w0nfreBEpI5PLsHTNOEw9m4luqtXtka8NHBsuxOlBApRoVnxR9jTtiaf1u2Ha3WMwya0+k2RNxUySknwghBWO7geiLlUUjgo0gO6PqoZVXFnhaNW1XTpaVqOfgxEM68hqNFeHU0Ikjch8tK8QnxDStgKOQH+EeXvhzpVL8A4Kxe3YBMRn5UJPSxPDug/EcJdRMNMMrXV6LasBYbUgTgMGofD2bUR9/y0W+alqLoo0gZNDBDgxVIhC7apfbl898hVmyMRlPTSqrxibrNrPlqzPjgFCTwHSSt3F7AarAo4+zwD6lWa3tFHpeSVlRaHZuBPbclmNhmKBBmuTTsiDouCDENKkgCPE2wu+YRE8wxGcnMabfva264aJA15Cv67T0K2fHdIi/0BOikDVEbQ6gQBXdmyDIH8LCr2uguVESjWAM4MEOPqIEHm6tX956rDVYE+wlui1lT+W7fNcW7HLtJtqpgqr4zCrWQvSlrIaIcl56mCD3eKzamY1DLVF6iCDBRz9HYybJatBSGui4IMQUqe0WAmuHgxF1/6lSIu6g7AbVxERn8ADjjtxSbx41M7ECk8OeRFDXJ6Grb0dn63S8xEb6BhoYNui7NoDD0aphCQuBnnBsVAKgUv9BTg0Qogsw/r/YreQpN5/xViG1XGMfA+wc2+ThaMsq6GafaIaPvFLqDuroR5C6WKMrub6LZLVIKQ1UfBBCKkzw+Gx5wTSY+/h2rk03I1Pwr34ZKTnFcBQRw/DekzAsJ7PwMGiB4x6akCzTyEce4nhbu2oXnr+pZXrkRcZAbkkDyWSbKT/uA7CItWUTfb1KZbJcbs7cHCyHnq4jYY85RZQWntPCd6PQ8sE7uGeDfvEej8N2A9qE58uZTUIqYqCD0JIlYAjwOMyou/cQGJqCu7FJfOgIzk3DzqaWujXZQieHzUNrvaDYWZjAHGffOyQrke8LBpIAL+xhl2f9FmC4RIL5N/1gWTDZvVv2KSW3/WwcODFI17QFmmr+3EwVftxqNZuWR4XCo3Cu21+xdiM/JIqRaF1ZTV6WOqri0Ipq0E6Ewo+COnEKtdwsPVVklNTcTc+mXcdTcjOhaZIjL6OgzB92GPo5TgUYg1N/rxn3ndHoPg23vdYBpFMge6pQLdkJbonK9EtORG2mR8hriFvQEMDtqtX8cCDmWjcC+u6PIPVcSeQqixVn2Ylk2F5ZjYmysWAy3gg7ipQXFfXzdZdMVbGajVSymo1ygKOuKyaS+gaqGs1VEMoAxypVoN0XhR8ENLJA47YxCQEJKbAPzEV8Vk5EGlooLf9AEwe9BjcHB+BpriibbZAKMCYKSbQvnce0cdWY2W8FF3SAFEtS4CkGQGRNgJkOZuii01vuP1Zc7jEadc26OikAyeWqdZQyYzARADjAfhqayFdrA0Lcxe4d58MjSkTAJsBqj4cQcfLZrug1VeMrZzVuFPWLbRIKq9xnjqr0UUVbHSzoFoNQspRkzFCOlnAwYpGw+Pi1QFHmiSfZzh62fdDf+eJ6Os0Ejp19L0YErABBhnhNfZLdIAIWwEibYAIG3YvgERPgG9GfoOnuj2F4qAgxMx4TjXWwApQy1aZd5qcDh1TVcMwTiBUdRZlq8R2HQs4DAPEOrX/UCwAqbFirF2zrhjb1KwGm4HCem0Q0plIqM8HIaQ84Aj19kSo91UERccgICEVAUkpyCkshq6mNtwcB+Gp4ZPRy2EITM31YWMqhUVpHJRx3rgufFTVlIsFBOX3xcUo1RQi3FpZJdBINyorYqhGExoQxN+EKPwUNPQ0INYqhnHXAuRE6UJaqAGRthwwd1UFGl3HAV1GAjrGDfvwWmDF2EyW1Sir02DBBmU1CGkZNOxCSDtfmr6ugOOOxyXciYhCcFIawlLTUSyVwVjXAH27jET/rlPQy3EAbAyKYVYQBcPwP6DpFaheq6NYyxia7oOhVZoD/cKbSDIbCrnIGKueK0SklQBKobBB79Xi6DtAfjZYDqD7NFX8IjCyh/GMMVA6jILQZQJg+ABrgjzAirHlWY3K011jM2vPagxwKJ/qasK3KatByIOh4IOQ9ro0/b6dcOzbn3cLZQFH8FUPXPzvFO5FRfOmXwlZqoJMBzMbjHd7Am5Ok+BoogOz7BA4JHnCJHInhMpKtQoCAUrsLRBvr4XbRhnws1yBGEsZZGI2VOIFc7kGhlj2wSs938cQ6yGYd3oe0grTal+mXqmEFVs7JT8b0DEBnMdAyIdSxvEVYllL9dbuVNGYrEZFXw0TdKdaDUKaHQUfhLTDpekZdv/nJ+/D89p1BMUnICQlHXnFJdAWi9HTthvG9HkOAx1GwakwCaaZQTAN3w5Nab76WumGqoJQWU9nBFqW4JpBCoq0Kpal11YoMKy4BI9IijG8uBg9SmUQxscA9tOA2Bv4WGCBZcpU1SL1lYZcWODBApnl9lOg8dg8wLof0MBMSXNpcFZDS8RnnVBWg5DWRQWnhLQDLLuRmRiPf779An4hoQhLzeC3pBwJP25tZIhedr3Qt8toDNK1hVVOBEyzg6FXkMwzDKwglAUaETaq+0hbAXL1quYehAIh+pj2xvB4PzySm47+xSVQTayt23ldHaw2M0WqqKLOwlrXCsuHfoyJXdi8ldbLarAVXcvbkrOsRmFpzaxGdz4DhbIahLQEKjglpJ0rkOTCy+cUEkNCEHUzFPfuBSI0MRnRGdmQKRQw1NZCDytzjHVxRj+bMehdqseHU4xizkCkLYZ2796QjR2J2yY5+E1+qc6C0HKL+i/CrF6zYBR/G7j97P3foIkT4Po4JnYdh/EOQ+GbG470wnRY6FrA3dJd3eG0pbIaoalsBkoO7vAZKNmIqSerUT4LZaCDCYx0aQYKIW0BZT4IeYjrplw7FIHhz3SFhjAbyeGhSAgJwhXPCwgJi0Fkeiai0rP4svSaIg10tTCFi5UFXKzMYWWor1qKXqmEMYSY7Nofmc6mCLYqhbdWIu5m+iGruGII5X7W6LhgWkYSkBZcx4Jt1cz4A+j7XKssx55VUFo2zTWbZzfuJeTUm9UoX3SN1W7QGiiEtB7KfBDShhVKcpEcHoIbx64jKTwYV86EIzw1BVHpmYhOz0KRVAaRUAhHM3OMdB2EnjYD0NNAD0UaITUvJhAgB0osMD6PeI0CIKPikFgohqOBIyJzI+/7niyiPIHikob/EI1sXX46IBkr/g1Ccm6xep+NkTa+nN4bU90qZrtQVoOQzoEKTglpQXKZDBlxMUgKD0FyWAii/P0RFBGG2IxsntVgwyglMhnEGhpwMrfG2N6j0cN2EHobdYdxSQLyRSGINfFGerE59Io1+eJq1bHZJv1DDVBsr4sBlv3RX98B/ZVi9JZkQiMlAFPkSqSxVh21DLvwWSkCTbgPew+wHQBY9gG2TwEkyXVkQBrfupwFHm/v9q1xtZTcYr7/7XHd+IiQb2zdWY1uFnrqolB2z7IcDcmaEELaJgo+CGlG+dlZPKuRFKa6BfvdQ1RqOmIzsxGTkc0LRBVKJbREIjhZ2GNivyHoYTsMXayGQCzS4te4Z/I/7Lb/D7n6qi9XoRx4/pKo1sCDYfvtS3Txdb4M4uhDNdY8+VhXB8sszSFQsgCk8vNUHUWXj/seGpWLQ6euKWtdXtaG9AFal7OhFpbxqC2MKd/3y+WqmRl9rfK+GsYY2MUEAx2MYax7v9JXQkh7QjUfhDSRTCpFSnQ4bvleQHpEJPKjkhEdm6AKNDLZ1M5sSIpUQxnm+kZwsnSGs3VfdLUeCjszVwirfYErBHJc6rYH4RY+NV5Lt0gD2qWq82do2uDpgiJoZUUBMtX1dUVSGIjLFmJji79Z9gJs+qumudr0x/nSNKz23YDUwlT1Na11rbF86PLaZ6U0onV5fokMKblFSMop5tmMpNyisvtiRKXnISG7YqilLmNczDG1jw1fB6WHpQFlNQjp4DUfFHwQ0sDmXnmZGeqsRvQ9PwQG+SE+MxvxWbl8BdjkXAn/S58tzNbFzBZOlq7oauOO3uaucDDXhoZ5KXIMIxFR5Aub2PdrvMbBvj8gQ5+tS1+/P5NTMaS8PkNTH7Duqw4yYNNP1a5cVDNTIFfI4Zvm2/BZKQo5iiI8kZsejzSlMUI1+yJJIkVybhGv3Si/zyuWPfC/oY0vDsBTA+we+DqEkIeHCk4JeYAW5Yy0tASpURFICglB9F0/+N25hciUJCRk5fBAIzFHwosjWa2ClaEZHM27YbhLT7iYdYW1mSYMbcQodQbuWcfiSMnOKjNPzMX2YPNElFBAAKH6fmlWNjZoy5GpIaynPkMMd/e3AFsWaAwATJwb3MCLBRqsM2m5ghIZknPzVIFEDgsmipEiqZrBUAUWpmXPCKzz2qwFOSsgtTHSqXKfU1SKladqKZSths1+IYR0HlTzQTr0NNYRM7rDsothlb/80wrSkLDrGPITk3iLcge3fpCkpyE+KBChN33h430NEfFRSMrJRVKuhNdplMpURZAWBkZwNLeHu/M49DB2gI2pHgqNMxBtHo8A+0CE6PpVfSNl5RdCCNBVZADXnGS45CdAKsyBoUY6+uqcR3DhROQrzPFoaRr0MgvL6jOqdQ1V12f8ULU+ow6qwKIiO8GCi9oDi/srDyysjXRgy++1YWuko7o3Vu1ndRq1YZmg7Vdj+GvWUb7Kr8Om3RJCOg8adiEd0pV/wuB/KQH9xttj9EwXnI89j9U3VyMtPxXdEvUw0s+M12Mk5uQiJbcQiTmqYtCMvAL+JSkUCGBhYABbE2s4mjrB1dgBPa1soGFRilDTKHiahyDboP73MF4uxpg8CXoW5KK7VApt1na8jFwpghAy9QrzCoigIVAFA+fHLMbqzBt11mcUlspq1FdUDjLYtqShgYWWCDbGdQcWVobaMNB+sMZc5bNdUHv5KrbMca8y3ZYQ0j5RzQfplCSZRSjOl0JRWox/N3mgqCAHIlEOSk2TcC/gLnLTc5GenY2U3DweaLDmXYy2mP1lbwg7U2s4mDigu74NnI2NUWyUgxDTKATaZCLVtP4OobVZk5aBaQVlnTcNbABdMyA14L7PS3zqACL1+sM7+TYSJKkoKtJDaUEXpOaWIimnaYGFjaE23648JMICjAcNLJq7zwchpP2i4IO0a/UVRhb5ByBt7VoYv7MYxWYmyE1NRnZKMrKTk3D7wh0kZ8cjJScNaZJ8pEjykCrJ54utoSx2MNfX491BbY0N1TcTXR2INESIs0pBmG0B4i0ARaUeErpKwFkqg3NpCbqWSsEGYH42Nb7vz/Fnz9cxxGmiqhW5ph4K2VopP/WHRkEKX4ytOgXrfaE0w6iSjVBAeN/AggUPNsYPP7Bo6Q6nhJD2gYIP0m6VD4+kFqRCSyqEYYEI9nIzTDYcA6N8LaT4+iIuPRUphflIzytAen4BDzBSc/OQX6KaasqGTFiQYW1sBisja1ibOMDGpCu6inVQIrgLqbBq5kABJbKMSuE9LBHOUim6SqX83rlUxrfZ0vDlNRcwcoDcxBlThIlIU5TU2YhcT8MM43Q2IlVSUlZ7UYzcIimmCG9ii3hD2fus9B7KLvS2dCmuiUdUCSwq11bYttHAghBCJDTVlrSWRk/frLZSa35OFnJSkpGTmow7IddxJ+g6DPJFkGeXICs3n9dgsACD3+flI7OgkP8FzbAW5OYGRrAysoC1sR1sjR3gqG8LY+uhEIkMVWuflLlrtgZpupkY42dd5/uZ4eAPJ4M8wKQLYNpVfSsxdEKqyAYJSgsk5il4jYVPxhX4FKmCiMq9v8rLOooT50CW51bjNVhh5vO6vlhc+jvM5BW90It1bZA1egUMBj5LgQUhpF2iqbak5SjkSPP2wrULxRANisWGgv1VCiOtdK3wcaXl1BVyOSQZ6chJSfp/e3ceHFWV7wH823vf293p7qSTTgghhOWxyOCwCjEIEgSRUXn/PMviMdRY5YiFCqZ8DsurssqZERkdXEZBKJf5Y+YJjizuI5knizygxICCIoIsSYBsna07vS/31TmdztqBJCQx9+b3qbrcpPt0p09+If3LOb9zLhqqKuEqv4Laq1dRd+0qrl4rg8vtRp3Xxw9Xk4+PZriavC2rS1gCkWqyICPFgfHZo5BlcSJHSMMovQU5iMIUrIPodyEquVAqHEdp5nDodHfx5assK0gsY/0pS41Zp+x8K/Kudgr9JLgQ0sIncc0bRUWDHxXnWkcsgKvNR0ImtJb/hMH5EdS61h1FNTEbRuBBTBxX0G7EIj4lkhixWATEngZKjwBNVfw6KcbcfAzrxyvBEkLIYEJLbYeI7o5QXHf/i+ZdL89eWYyrvl/hdPQKqkZWQhNTwezXwuLVweoNYO+RP+Fc7B9wV9fhWk0Fapu8zQmGn49csI8bfQG+zTjDUgGraIbDkoqR6eOQPzIdOYIdo3Ui8tQSLMF6CP4aGIN10LjrAXfrS4qpJJTfFoRmgh+/jEYwLxjEP2vqYVa7MEH8F874FqBclYGQxgOT39Jl4sHU1jbgr//7E2Kqzt8Xk14Tnwaxtq2t+AWc1hWoj/4ISePGCGtm90d+WJu8OTduRwghCkRLbYdSHcV1RigSu3j+fUMRqi6ch3P0WCz742Y+8hALBFDz+buo+mw7PEEtvoktgD/chHpvOerdV9Hg96DBF0CDz8/PiUQjHG29QJioNyDNbEWaxYF0UxoyBTuG683I0xgwAiGYwnUIq2rh07vhFlXwiIBbBBpFFT8LQQkrvuhcYXGqcAwq0nNw+3AdZlz5a9JlrMWiBU85bXyLckO4Tb7d/HRS3RI4tJNgS7XD4cxo3SirOdlgIxgpVGNBCCHXRTUfchWL8qH4qKcCJ6Ie1KQ4kW5y9qiOIlniUXSgiE83JOjCEqw+FVJ8wFNjHsYkTQ48FdX46eIFnCw/g1hM4itEAj4Van0+uPxu1Pu88eTCH08wmgLtiy0FvQ420Qy7aOMJRoYpFU7BBqcoIs2kgsbYBK+uBo1CPaLGALSGKAyGGMz6KKy6MNwGNbanWrvsR16lhE3vRPlkClsHktgb9LF5a3DBNhxqxHDY8AQyUdeukDNhnyjg+TQHarStd6YZM1A07b9w35i7e/W9JYQQ0opqPmRQbNlJ85TGx14bjrt/jS9HfoQac3mXoxRtxYJBROvqEKmtQ7SenWvhq6qCp7oKF344gMcCWdDEBEiSDu5gBLXhIOqCftQHvXjOvw2NAS/c/gDcgSA/s8QjMSXCsMu920Qj7KIJWTYnJmSnwW52ItWSjVTLCNgsufBYzuKK9SSqLC5UpzTiR+MVpPp/QnYggNSoBoaoCeqoFf7QMFRH7KiQ7CiP2lHls6NKsqMaVugtf4ZK25h0O40GAagXVajWZ+Pz3NuwqPQrpPsb0Ggw8/tn5jnwtfV3uPfsWp4UtV/KqsJCXwCFS/6AE2nZfRMvQgghvTZkpl1CoSD2HtyGancZMlJGYOncR6DXxy9h3hOJmgjbPTPwev3/3HAqo9uJx3u/xr9EI973PYJfVM7F+dQDuGjdjRSvBKsXfKRikbUAtpARnoYmeHwBvoW2LxKBW4qhPhJEfSgAd8gfTyYCfr6DpzsQaDk3BULtkgrGbNAjRWDTCgakCAZYjEZ+Zntf2EQBqswsNGYbEUrxwSIZMaH0N92+IJqt7N9R550ML4Sk3WYjFKwAk60AYVt4QzyFq/pt7VaPMImXHCl7EAHv5PiGHZIEXSyKsCY+jfLuw7Mwe3Raj67GSgghpO/QtEsH2z/YgHddezHrqxFwNGjgskVxbGYZHnQsxW/v/2O3v7FtayJc1iA+zq9s90aZKGbcPG9zuwSkZWSirg7RunpEal0I1NTAW10Fb20Nan86Dbckol6lR2PKOIRiAXh9LviaKnky4Q564QkG+VSHNxji+1k08c/j53CUTUa0eR0qllQYkMISCdGEFMEEi2iG2WSGYBGgswlQpWoRS9PAawrArGvAhB/00Hr1HQoyJcCoRuZwYJnuEGrCo/Be7Z+bt8NqvSBasuSD7XPx8Mg3eVLDEguzQRc/G7V8gyx2FnSadsthu6pPUUVs8FX+KunS1cS1QQ7/bn7rhlXN01eJlSTIzY8XeBJCCOk3NO3SIfF4rf4DvsCSJR4MO9dCxW/HB+h2AlL67QmeePDnaDRg6nkDolo/UprYyIQBKT4R5qCA0o9fw27Nu/AHQ3CHgmgIB+COhOCO+OEJBdAU8sEXCvHDGwrHPw7Gz03BjxAId94+26DV8ITCbBRgNpowzJ4Gk2iCIIowmAWorXroU7QQ7IDJGoJa9MGj9+Erqw9elQQv2HLR+uajvULXA9B5jyXpsQoISMic+xQi356H0e2GqI6vJFHZDuK0/y6YQ3b4dZ42j4gnAH+Y899YkDsGPcWStjtz7mw3nVVTk4VVf/+WP3Oya4OwLbrb7ZRJK0kIIWRQU/S0C5tq+c1L86EKWJBzVQVHY+tfvy5rFOXZEiSjB2+v+idUbBvu8gpUXbwEV3k5PC4XfG4vgr4QfLweIoCacCV8IT/8kQgC4TD8oSjYFhD8thCbBmlOJHhCEf84sSFWW2wHTpNBz4s0TXoBokGAyWCCyWCGSbDCIthgEdJgER0wC+lwZVeiPOsymowejImGkC1pYdCI0GtTYdSlQzA6YRSHQWt2QGN2QLDYYTYaIBpUKDr6H6gNVCf9/rBEwSk4seLkLai6dKF1fqNdIxWco8Zg2bJ5UP1jRfNKkjAfXSkWBLyQmo4KPZJeAK0v0bVBCCFkcKNpl2bvFb+Kml2TEI1GEXa/wnfJbPAH4olDOIJAyIBAJAh/yAd/KIhAOAQ/vy/MRx/8ofi5Y51E2ySCXZRM1Osg6vUQDXqIepZICBCMIgSjEUbRCIPJCINFD9FsgJCig8GshU5UQW9Uw672YpznKMpi2Wi48vtOX6PjlMbbi97GjMwZPV7twrRd8ZIYoXix4E+4sOlv8DU2dPkcotWOh19/G9rzn3Wqp4imZONE/m9Rk/Fv/V7ESdcGIYSQwYumXZqx4tIrxhI4XRn8849P/YDvrrbWEug0agg6HU8g2CiEUceKH/VwmC0wsmRCb4SgN8DA7tNEIeji7flj9Fq+CqRJlHD4l01wiz4EdEGE1AC7wsjvC/6EO/LuhEp9/QuE8fqElyehstaPXTxBSCwijZ/bjVKI8WW3PcFGIFgNSrJ9PhIjFO7npsHvbt2lsyPRaoNWp4sXbI5f0q6eQpObjxkDVE/BplZ4USkhhBBZU/QOp2xVy7bJn2PF5yP4m/e9t07EkskTIOi0PNHQaNQ4mwtMSB2GWybPQ8aw4cgenod0+zCoNa1vqJe/KcGujc8k/RopfhW0ET8ChmC7JKEgb96NEw+GvXHfvQnmd5+ERtOACmMjzmYcxfjq2S31FIlqBpYs9GZUIVkdRdsRihRHOj+6heopCCGE3CRFJx9sOe2Rp3e1TDGkmcVObcwhDx4v+kuXy25ZSczh9/7Wsryz0/2QMPWcDdcclS0rN3qcJEy8D+YHgYc/3YAvojX4P4cdu51HoZY0iKmjfVJHwV5PT6ZrCCGEENklH1u2bMELL7yAiooK3HLLLXj55ZcxZ87AXstCo9Eip8LS5cXE2O3sftauK9FIBB5XTfJizOaRDjGggToGZFhapzJ6bOJ90IxfgrtKj2B+H+5wSgghhAyJ5GPnzp1Ys2YNT0Buv/12bNu2DYsXL8aZM2cwYsQIDJRAUxM/d3UxscTtrJ3Jmnxrb1brsOy5l5LWRMSkGH6oOwuPNoC7s/JuPklontJgz0BjFIQQQpSqX5ba3nbbbZg6dSq2bt3actuECROwdOlSbNy4cUB3OD1//BhcZZf5Vug/XDoOb7ABJoMNE/Jm8EQhY+QojJ4286a/DiGEEDKUuXvw/t3nIx+hUAglJSVYu3Ztu9sXLlyII0eOdGofDAb50fbF96WxM2bxgynAsj59bkIIIYT0XDeWY/SMy+Xi+2o4nc52t7PPKysrO7VnIyEsU0ocOTk5ff2SCCGEEKLk5COh4zU72OxOx9uYdevW8SGaxFFeHr+SKyGEEEKUqc+nXRwOBzQaTadRjurq6k6jIYzBYOAHIYQQQoaGPh/50Ov1mDZtGoqLi9vdzj7Pz8/v6y9HCCGEEJnpl6W2RUVFWL58OaZPn47Zs2dj+/btKCsrw8qVK/vjyxFCCCFkqCcfDzzwAGpra/Hss8/yTcYmTZqETz/9FLm5uf3x5QghhBAy1Pf5uBl9vc8HIYQQQgbX+3e/rXYhhBBCCEmGkg9CCCGEDO2r2iZmgfp6p1NCCCGE9J/E+3Z3qjkGXfLh8Xj4mXY6JYQQQuSHvY+z2g9ZFZzGYjFcu3YNFosl6Y6oN5uVsaSG7aKqxGJWpfdvKPSR+id/FEP5oxj2DksnWOIxbNgwqNVqeY18sBc8fPjwfv0a7E1LiW9cQ6V/Q6GP1D/5oxjKH8Ww52404pFABaeEEEIIGVCUfBBCCCFkQA2p5INdwO6ZZ55R7IXslN6/odBH6p/8UQzlj2LY/wZdwSkhhBBClG1IjXwQQggh5OdHyQchhBBCBhQlH4QQQggZUJR8EEIIIWRAKS752LJlC/Ly8mA0GjFt2jR8+eWX121/8OBB3o61HzVqFN544w0opX8HDhzgu8R2PM6ePYvB6NChQ7j33nv57njsde7du/eGj5Fb/HraRznFcOPGjZgxYwbfnTgjIwNLly7Fjz/+qKgY9qaPcorh1q1bMXny5JbNtWbPno3PPvtMMfHrTR/lFL+ufmbZ612zZg0GUxwVlXzs3LmTf4M3bNiAkydPYs6cOVi8eDHKysqStr906RLuuece3o61X79+PZ544gns2rULSuhfAvvlWFFR0XKMHTsWg5HX68Wtt96K1157rVvt5Ra/3vRRTjFkv7xWrVqFY8eOobi4GJFIBAsXLuR9VkoMe9NHOcWQ7S79/PPP4+uvv+bH/Pnzcf/99+P7779XRPx600c5xa+j48ePY/v27TzZup6fJY6SgsycOVNauXJlu9vGjx8vrV27Nmn7p59+mt/f1iOPPCLNmjVLUkL/9u/fz5ZRS/X19ZLcsNe9Z8+e67aRW/x600c5x7C6upq/9oMHDyo2ht3po5xjyNjtdunNN99UZPy600e5xs/j8Uhjx46ViouLpblz50qrV6/usu3PEUfFjHyEQiGUlJTwv0LaYp8fOXIk6WOOHj3aqf2iRYt4NhwOhyH3/iVMmTIFWVlZKCwsxP79+6EUcorfzZJjDBsbG/k5NTVVsTHsTh/lGsNoNIodO3bwUR02NaHE+HWnj3KN36pVq7BkyRIsWLDghm1/jjgqJvlwuVz8B8npdLa7nX1eWVmZ9DHs9mTt2VAqez6594/9R2FDbmzobPfu3Rg3bhz/j8PqDpRATvHrLbnGkA3sFBUVoaCgAJMmTVJkDLvbR7nF8PTp0zCbzXyXz5UrV2LPnj2YOHGiouLXkz7KLX4MS6hOnDjB6z264+eI46C7qu3NYoU1HX9BdLztRu2T3S7H/rH/JOxIYJk9uxT9iy++iDvuuANKILf49ZRcY/jYY4/h1KlTOHz4sGJj2N0+yi2G7LV+8803aGho4G+4K1as4LUuXb05yzF+Pemj3OJXXl6O1atXY9++fbx4tLsGOo6KGflwOBzQaDSdRgGqq6s7ZXQJmZmZSdtrtVqkpaVB7v1LZtasWTh//jyUQE7x60uDPYaPP/44PvzwQz40zYr7lBjDnvRRbjHU6/UYM2YMpk+fzv9yZgXSr7zyiqLi15M+yi1+JSUlPAZs5QqLAztYYvXqq6/yj9kI+mCIo2KSD/bDxL7ZrAK9LfZ5fn5+0sewDLZje5Ytsh9InU4HufcvGVbJzIYRlUBO8etLgzWG7C8lNhrAhqa/+OILviRcaTHsTR/lFMOu+hwMBhURv970UW7xKyws5NNKbGQncbB4LFu2jH/M/ogdFHGUFGTHjh2STqeT3nrrLenMmTPSmjVrJJPJJF2+fJnfz1aFLF++vKX9xYsXJVEUpSeffJK3Z49jj3///fclJfTvpZde4qspzp07J3333Xf8fhbyXbt2SYO1OvvkyZP8YK9z8+bN/OPS0lJFxK83fZRTDB999FHJarVKBw4ckCoqKloOn8/X0kbuMexNH+UUw3Xr1kmHDh2SLl26JJ06dUpav369pFarpX379ikifr3po5zi15WOq10GQxwVlXwwr7/+upSbmyvp9Xpp6tSp7ZbArVixggehLfZLZMqUKbz9yJEjpa1bt0pK6d+mTZuk0aNHS0ajkS8lKygokD755BNpsEosaet4sH4pJX497aOcYpisX+x45513WtrIPYa96aOcYvjQQw+1/H5JT0+XCgsLW96UlRC/3vRRTvHrbvIxGOKoYv/0z5gKIYQQQoiCaz4IIYQQIg+UfBBCCCFkQFHyQQghhJABRckHIYQQQgYUJR+EEEIIGVCUfBBCCCFkQFHyQQghhJABRckHIYQQQgYUJR+EEEIIGVCUfBBCCCFkQFHyQQghhJABRckHIYQQQjCQ/h/RyFAcHaLlGQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for N in [4, 11, 21]:\n", " TEI = TestEulerIntegrator()\n", " TEI.do_integration(N, 0.0, 4.0)\n", " plt.plot(TEI.x, TEI.y, 'o-', label = 'Euler: ' + str(N))\n", "\n", "for N in [4, 11]:\n", " THI = TestHeunIntegrator()\n", " THI.do_integration(N, 0.0, 4.0)\n", " plt.plot(THI.x, THI.y, '*-', label = 'Heun: ' + str(N))\n", "\n", "TRKI = TestRK45Integrator()\n", "TRKI.do_integration(0.0, 4.0, eps_allowed = 1e-5)\n", "plt.plot(TRKI.x, TRKI.y, '^-', label = 'RK45')\n", "\n", "t = np.linspace(0, 4, 500)\n", "plt.plot(t, np.exp(t), 'k', lw = 1)\n", "lgnd = plt.legend(loc='best')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.13" } }, "nbformat": 4, "nbformat_minor": 1 }