Skip to content

Instantly share code, notes, and snippets.

@Lawrence-Krukrubo
Forked from WetHat/PY-Drawing3D.ipynb
Created December 11, 2020 01:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Lawrence-Krukrubo/b376066b34bd4ca8a4112efdc5ea802f to your computer and use it in GitHub Desktop.
Save Lawrence-Krukrubo/b376066b34bd4ca8a4112efdc5ea802f to your computer and use it in GitHub Desktop.
Matplotlib: 3D Arrows and 3D Annotations
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Extending the _matplotlib_ 3D Drawing Tools\n",
"\n",
"In this gist we extend the\n",
"[Axes3D](https://matplotlib.org/3.1.1/api/_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html)\n",
"class by adding additional methods for plotting:\n",
"* 3D annotations\n",
"* 3D vectors\n",
"\n",
"We will be subclassing the 2D\n",
"[artist](https://matplotlib.org/3.1.1/tutorials/intermediate/artists.html)\n",
"classes to derive the corresponding 3D counterparts. The motivation for that is\n",
"to re-use most of the rich functionality of the 2D artists by mapping 3D to 2D. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## About this Jupyter Notebook\n",
"\n",
"This _Gist_ was created using:\n",
"* the [Jupyter Lab](https://jupyter.org/) computational notebook.\n",
"* the _python3_ kernel\n",
"* [matplotlib 3.1.1](https://matplotlib.org/) - Python plotting library."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Initializing the session"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": [
"CodeExport"
]
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"from mpl_toolkits.mplot3d.proj3d import proj_transform\n",
"from mpl_toolkits.mplot3d.axes3d import Axes3D"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Class Annotation3D - 3D Annotations\n",
"The implementation of the `Annotation3D` artist was ispired by the question\n",
"[Matplotlib: Annotating a 3D scatter plot](https://stackoverflow.com/questions/10374930/matplotlib-annotating-a-3d-scatter-plot). The implementation intercepts the 3D geometry parameters. All other parameters are passed through to the [Annotation](https://matplotlib.org/3.1.0/api/text_api.html#matplotlib.text.Annotation) 2D artist."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"tags": [
"CodeExport"
]
},
"outputs": [],
"source": [
"from matplotlib.text import Annotation"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"tags": [
"CodeExport"
]
},
"outputs": [],
"source": [
"class Annotation3D(Annotation):\n",
" def __init__(self, text, xyz, *args, **kwargs):\n",
" super().__init__(text, xy=(0,0), *args, **kwargs)\n",
" self._xyz = xyz\n",
"\n",
" def draw(self, renderer):\n",
" x2, y2, z2 = proj_transform(*self._xyz, renderer.M)\n",
" self.xy=(x2,y2)\n",
" super().draw(renderer)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For seamless integration we add the `annotate3D` method to the\n",
"[Axes3D](https://matplotlib.org/3.1.1/api/_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html) class."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"tags": [
"CodeExport"
]
},
"outputs": [],
"source": [
"def _annotate3D(ax,text, xyz, *args, **kwargs):\n",
" '''Add anotation `text` to an `Axes3d` instance.'''\n",
"\n",
" annotation= Annotation3D(text, xyz, *args, **kwargs)\n",
" ax.add_artist(annotation)\n",
"\n",
"setattr(Axes3D,'annotate3D',_annotate3D)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOy9eXhb5Zn3/9VuyZb3OI4tx5vsJDbZY0ga9pYyzaRpS1uasJNhOmGZFxig0JfCAENZ+qP8oA2QgXQgUJK0w5SyU2ggDDOAQ1K2BBLbWmxLsrxI1r5L5/0j13M42rdzrGP7fK4rVxLp6JxH0tHzfe77uRcRRVEQEBAQEBDgG+JSD0BAQEBAQCAVgkAJCAgICPASQaAEBAQEBHiJIFACAgICArxEECgBAQEBAV4izfK8EOInICAgIMA1olQPChaUgICAgAAvEQRKQEBAQICXCAIlICAgIMBLBIESEBAQEOAlgkAJCAgICPASQaAEBAQEBHiJIFACAjPA888/j29/+9ulHoaAwKxCECgBTrjkkkuwaNEiVFZWoru7G7t376afO3jwIMRiMSoqKlBRUQGNRoMLL7wQH3/8cdbzer1eVFRUYNOmTVwOP45nnnkGp59+es7HG41GiEQiRCIR+rGLL74Yb731FutjK+azFBDgO4JACXDCz3/+cxiNRrhcLrz88sv4xS9+gSNHjtDPNzU1wePxwO1246OPPsLSpUtxxhln4MCBAxnP+8ILL0ChUOCtt97C2NgY129jVlDoZykgwHcEgRLghN7eXigUCgCASCSCSCSCTqdLOk4kEkGj0eCee+7BVVddhVtvvTXjeffs2YMdO3ZgxYoVeP755+Oea2trw0MPPYQVK1agqqoKP/nJTxAIBACctDQ0Gg1+/etfo6GhAYsWLcLTTz9Nv9bpdOKyyy7DggUL0NrainvvvRexWAxfffUVduzYgQ8//BAVFRWorq4GALz22mtYvXo1Kisr0dLSgrvuuos+15lnngkAqK6uRkVFBT788MMkK+yDDz5AX18fqqqq0NfXhw8++IB+7uyzz8Ydd9yBjRs3Qq1W49vf/jampqayfuaZPsvjx4/jvPPOQ21tLZYsWYI//vGP9HNXXHEFrrnmGnznO99BRUUFNm7cCKvVihtuuAE1NTVYunQpPvnkE/r4r776CmeffTaqq6vR29uLl19+OevYBAQKgqKoTH8EBArm6quvppRKJQWAWr16NeV2uymKoqh3332Xam5uTjr+wIEDlEgkojweT8rzDQ8PUyKRiDp27Bj10EMPUcuXL497vrW1lerr66PMZjNls9mopUuXUk888QR9TYlEQt1xxx1UKBSiXnvtNUqpVFJ2u52iKIq69NJLqS1btlAul4syGAxUV1cXtXv3boqiKOrpp5+mNm7cGHetd999l/r888+paDRKffbZZ1RDQwP14osvUhRFUQaDgQJAhcNh+njmOWw2G1VdXU09++yzVDgcpvbu3UtVV1dTU1NTFEVR1FlnnUV1dHRQJ06coHw+H3XWWWdRt956a8rPJJfP0uPxUBqNhvqP//gPKhwOU0eOHKHq6uqoo0ePUhRFUZdffjlVV1dHHT58mPL7/dQ555xDtbW1UXv27KEikQh1++23U2effTZFURQVCoWozs5O6pe//CUVDAapAwcOUBUVFdTx48dTjk9AIEdSapBgQQlwxuOPPw632433338fF1xwAW1RpaOpqQkURcHhcKR8/tlnn8WKFSvQ09ODbdu24dixY3ErewD4P//n/6CpqQm1tbX47ne/i08//ZR+TiaT4c4774RMJsOmTZtQUVGBEydOIBqN4g9/+APuv/9+qNVqtLW14aabbsJzzz2Xdqxnn302li9fDrFYjBUrVmDbtm147733cvpcXnvtNXR1deHSSy+FVCrFtm3bsHTpUrzyyiv0MVdeeSW6u7uhVCpx4YUXxr2PXGB+lq+++ira2tpw5ZVXQiqVYs2aNfjhD3+IF154gT7+Bz/4AdauXYuysjL84Ac/QFlZGS677DJIJBL85Cc/oT/njz76CB6PB7fddhvkcjnOPfdcbN68Gfv27ctrfAICuSAIlACnSCQSnH766TCZTHjiiScyHms2myESiWg3WiLPPvssLr74YgAnJ+CzzjoLe/bsiTumsbGR/rdKpYLH46H/X1dXB6lUmvT81NQUQqEQWltb6edaW1thNpvTjrW/vx/nnHMOFixYgKqqKuzatSsnNxwAWCyWuGulul6m95ELzM9yeHgY/f39qK6upv88//zzsFqt9PELFy6k/61UKpP+T65vsVjQ0tICsfjrqSPbZyUgUCiCQAnMCJFIJOUeFJMXX3wRa9asQXl5edJzH3zwAQYHB3H//fej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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure()\n",
"ax = fig.add_subplot(111, projection='3d')\n",
"\n",
"# adding a few 3d points to annotate\n",
"ax.scatter([0,0,0],[0,0,1],[0,1,0],\n",
" s=30,\n",
" marker='o',\n",
" color='green')\n",
"ax.annotate3D('point 1',(0,0,0),\n",
" xytext=(3,3),\n",
" textcoords='offset points')\n",
"ax.annotate3D('point 2',(0,1,0),\n",
" xytext=(-30,-30),\n",
" textcoords='offset points',\n",
" arrowprops = dict(ec='black', fc='white',shrink=2.5 ))\n",
"ax.annotate3D('point 3',(0,0,1),\n",
" xytext=(30,-30),\n",
" textcoords='offset points',\n",
" bbox=dict(boxstyle=\"round\", fc=\"lightyellow\"),\n",
" arrowprops = dict(arrowstyle=\"-|>\",ec='black', fc='white', lw=5))\n",
"ax.set_title('3D Annotation Demo')\n",
"ax.set_xlabel('x')\n",
"ax.set_ylabel('y')\n",
"ax.set_zlabel('z')\n",
"fig.tight_layout()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Class Arrow3D - Drawing 3d Arrows\n",
"\n",
"Actually there is already a way to draw 3D arrows in _matplotlib_ by the\n",
"[Axes3D.quiver](https://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html?highlight=quiver#quiver).\n",
"However, this class is designed to draw vector fields and lacks most of the styling capabilities\n",
"of the `arrow` method.\n",
"\n",
"The implementation of the `Arrow3D` artist was ispired by the stack**overflow** question\n",
"[Plotting a 3d cube, a sphere and a vector in Matplotlib](https://stackoverflow.com/questions/11140163/plotting-a-3d-cube-a-sphere-and-a-vector-in-matplotlib).\n",
"The implementation intercepts the 3D geometry parameters. All other parameters are passed through to the\n",
"[Arrow](https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.patches.Arrow.html#matplotlib.patches.Arrow)\n",
"2D artist."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"tags": [
"CodeExport"
]
},
"outputs": [],
"source": [
"from matplotlib.patches import FancyArrowPatch"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"tags": [
"CodeExport"
]
},
"outputs": [],
"source": [
"class Arrow3D(FancyArrowPatch):\n",
" def __init__(self, x, y, z, dx, dy, dz, *args, **kwargs):\n",
" super().__init__((0,0), (0,0), *args, **kwargs)\n",
" self._xyz = (x,y,z)\n",
" self._dxdydz = (dx,dy,dz)\n",
"\n",
" def draw(self, renderer):\n",
" x1,y1,z1 = self._xyz\n",
" dx,dy,dz = self._dxdydz\n",
" x2,y2,z2 = (x1+dx,y1+dy,z1+dz)\n",
"\n",
" xs, ys, zs = proj_transform((x1,x2),(y1,y2),(z1,z2), renderer.M)\n",
" self.set_positions((xs[0],ys[0]),(xs[1],ys[1]))\n",
" super().draw(renderer)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For seamless integration we add the `arrow3D` method to the\n",
"[Axes3D](https://matplotlib.org/3.1.1/api/_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html) class."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"tags": [
"CodeExport"
]
},
"outputs": [],
"source": [
"def _arrow3D(ax, x, y, z, dx, dy, dz, *args, **kwargs):\n",
" '''Add an 3d arrow to an `Axes3D` instance.'''\n",
"\n",
" arrow = Arrow3D(x, y, z, dx, dy, dz, *args, **kwargs)\n",
" ax.add_artist(arrow)\n",
"\n",
"setattr(Axes3D,'arrow3D',_arrow3D)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOydeXhTZfr+7+xN0tINSulC6UIplH2t/ERQx8FBBRcEioAIqKgojsuIo47L1w0FdWaQYdRBZJDFDQFBBNlEkZZNUGRp0y1N9yX7npzfH8w5PUmTNMs5aVLO57q8ZkjS95yT5b3P877P89w8giDAwcHBwcERafC7+wQ4ODg4ODg8wQkUBwcHB0dEwgkUBwcHB0dEwgkUBwcHB0dEwgkUBwcHB0dEIuzieS7Fj4ODg4ODbXieHuQiKA4ODg6OiIQTKA4ODg6OiIQTKA4ODg6OiIQTKA4ODg6OiIQTKA4ODg6OiIQTKA4ODg6OiIQTKA4ODg6OiIQTKI6IYN68eejXrx969eqF/Px8fPTRR9Rzhw8fBp/PR2xsLGJjY5GRkYFZs2bhxIkTXY5rMBgQGxuLadOmsXn6jPHSSy9BJBIhLi4OcXFxyM/Px7Jly1BfX9/dp8bBEXY4geKICJ599llUVVVBq9Vi586deP7553Hq1Cnq+bS0NOj1euh0Ohw/fhwFBQWYNGkSDhw44HPcL774AhKJBPv27fM5ydvtdr8eCwezZ8+GTqdDW1sbtm/fjoaGBowZM4YTKY6rDk6gOCKCwsJCSCQSAACPxwOPx4NCoej0Oh6Ph4yMDLzyyitYsmQJnnnmGZ/jfvLJJ1i6dCmGDx+OTz/91OW5AQMGYOXKlRg+fDjkcjnsdrvHxy5cuIApU6YgISEBhYWF2LlzJwCgsrISCQkJcDqdAIAlS5YgJSWFGn/evHl47733AAAbNmxATk4O4uLikJ2d3elcPCESiVBYWIht27ahT58+WL16NfXcN998g5EjRyIhIQETJ07EuXPnXK7r7bffpq5h8eLFaGxsxJ/+9CfExcXhD3/4A9rb26nX79y5E4WFhUhISMCUKVNw4cKFLs+NgyMsEATh6z8OjrDx0EMPEVKplABAjBo1itDpdARBEMShQ4eI9PT0Tq8/cOAAwePxCL1e73G86upqgsfjEefPnydWrVpFDBs2zOX5rKwsYsSIEURNTQ1hNBo9Pma1Wonc3FzitddeIywWC3HgwAEiNjaWuHjxIkEQBJGZmUmcPHmSIAiCyM/PJ7Kzs4nff/+deu706dOEXq8n4uLiqL+pq6sjfvvtN4/n/OKLLxL33HNPp8dfeOEFYvz48QRBEMSpU6eIPn36EMePHyfsdjuxYcMGIisrizCbzdQ1TJgwgWhoaCBqa2uJPn36EKNGjSJOnz5NmM1m4vrrrydeeuklgiAI4tKlS4RMJiP27dtHWK1WYuXKlURubi5hsVi8fUwcHGzgUYO4CIojYli7di10Oh2OHj2KO++8k4qovJGWlgaCIKBWqz0+v3HjRgwfPhxDhgxBcXExzp8/jzNnzri85rHHHkNmZiakUqnHx44fPw69Xo8VK1ZALBbjhhtuwK233ootW7YAACZPnowjR46goaEBADBz5kwcOXIElZWV0Gq1GDFiBACAz+fjt99+g8lkQr9+/VBYWBjQe5OWloa2tjYAwIcffogHH3wQEyZMgEAgwL333guJRILjx49Tr3/00UfRt29fpKenY9KkSZgwYQJGjRoFiUSCO+64g3oftm3bhltuuQU33XQTRCIRnnrqKZhMJhw7diyg8+PgYANOoDgiCoFAgGuvvRa1tbX417/+5fO1KpUKPB4PCQkJHp/fuHEj7rnnHgBXJvjJkyfjk08+cXlNZmZmp7+jP1ZXV4fMzEzw+R0/laysLKhUKgBXBOrw4cP44YcfcN1112HKlCk4cuQIjhw5gkmTJoHP50Mul2Pbtm1Yt24d+vXrh1tuuQUXL1707w2hXWtSUhIAoLq6GqtXr0ZCQgL1n1KpRF1dHfX6vn37Uv9fKpV2+rder6euLysri3qOz+cjMzOTuj4Oju6EEyiOiMRut3vcg6Kzfft2jB49GnK5vNNzx44dQ1lZGd544w2kpqYiNTUVJSUl2LJli0vyA4/XuYky/bG0tDQolUpqnwkAampqkJ6eDuCKQB09ehSHDx/G5MmTce211+Knn37CkSNHMHnyZOpvpk6div3796O+vh4FBQW4//77/X4vnE4ndu3ahUmTJgG4IqDPPfcc1Go19Z/RaERxcbHfY9Kvr7q6mvo3QRBQKpXU9XFwdCecQHF0O01NTdi6dSv0ej0cDge+++47bNmyBTfccEOn1xIEAZVKhZdffhkfffQRXn/9dY9jfvLJJ7jpppvw+++/45dffsEvv/yC3377DUajEd9++63f5zZhwgTI5XK89dZbsNlsOHz4MHbt2oU5c+YAAAYOHAipVIpNmzbhuuuuQ69evdC3b198+eWXlEA1NjZi586dMBgMkEgkiI2NhUAg6PLYNpsNFy5cQHFxMRoaGvDEE08AAO6//36sW7cOJSUlIAgCBoMBu3fvhk6n8/u6SGbNmoXdu3fjwIEDsNlsWL16NSQSCSZOnBjwWBwcTMMJFEe3w+Px8K9//QsZGRlITEzEU089hffeew8zZsygXlNXV0fVQY0bNw6//vorDh8+jD/+8Y+dxjObzfjss8/w6KOPUtFTamoqsrOzMX/+/E7LfL4Qi8XYuXMnvv32W/Tu3RsPP/wwNm7ciIKCAuo1kydPRnJyMvr370/9myAIjBo1CsCVCGj16tVIS0tDUlISjhw5grVr13o95rZt2xAbG4uEhARMnz4dycnJOHXqFNLS0gAAY8eOxYcffohly5YhMTEReXl52LBhg9/XRGfQoEHYtGkTHn30UfTu3Ru7du3Crl27IBaLgxqPg4NJeATh05OQMyzkiFgIgoDD4YDFYoFQKIRAIACfz6fS1Dk4OKIGjz9YTqA4og6CIGAymQBcib7MZjMlSO3t7RAKhUhISIBAIKBESyAQcMLFwRG5ePxhdmX5zsERMRAEAbvdDrvdjosXLyItLQ3x8fGU+ACA0WiESCRCr1694HA4QBCEiyiRYkUXLzLq4uDgiCw4geKIeJxOJxwOB5V9x+PxwOfzodPpoFAoYDKZIBKJIJfLYbVaIZVKYbPZIBaLXYSHLP6z2WywWq2ccHFwRDjcEh9HxOJ0OmG32+FwOAB0pH+3tLTg/PnzkMlkyM/Ph1Qqhd1uh9FoRG1tLSU+VqsVAoEAcrkccrkcMpkMcrkcEomkk3CR/+v+e+CEi4MjLHB7UByRDz3KIWuPSDFobGxEZWUl4uLiAACpqalITk52iYbIAlOyjocULoPBQP1nsVioAlq6cMXExPgULrVaDbPZjNTUVEqo6MkZnHBxcAQNtwfFEbkQBEFFTHRhIuueampqkJiYiFGjRiEmJgaXL1/uFO2Qf0MvqhUKhejVqxd69erl8jqHw0EJl0ajQV1dHcxmM/h8PmQyGSVacrkcUqkUfD4fTqcTVquV6ipBLjuS+1wEQVARl1AopESLyyzk4AgOTqA4uhVvwuR0OlFTUwOVSoWUlBSMHTvWpTaHFARvY3aFQCCgPJfoOBwOmEwmGAwG6HQ6NDQ0wGQyUftePB4PsbGxkMlkkEqlLgW35HHp+2X08/W2VMgJFweHZziB4ugWyBomegTC4/Fgt9tRU1OD+vp6pKenY8KECRAKO39NyYjGnVAne4FAQBUE03E6nVCpVNBoNNDr9WhsbKRS3aVSqctyoUwmC0i4PEVdnHBxcHACxRFmPAkTn8+HxWJBVVUVWlpakJmZiWuuucZnOyBvEZSvyCoU+Hw+lR2YnZ1NPe50OmE2m6n9rebmZhiNRhAEQQkXuVzoLlxARwTpcDhQUlJCdZ8A4BJxcUXIHFcjnEBxhAWyholem8Tn82E0GlFVVQW1Wo0BAwZg4MCBLp3DveFLoDxFVmxB37Pq06cP9ThBEC7C1dbWBqPRCKfTiZiYGBfhksvlEAgEIAiCEjC6cNHH9LZUyCVocPREOIHiYBV6cS3QsaSl1+tRUVEBo9GI7OxsDB48OKAJ1pdARQI8Hg9SqRRSqRS9e/emHieFi0zQUKlUMBgMcDqdMJlMKC8vdxEu9+VNunBxRcgcPR1OoDhYgZxEq6qqkJGRQS1NaTQaKBQKOBwO5OTkICkpKagJNNxLfEyNTReu5ORk6nGCIFBaWoqkpCQYDAbU19fDYDDA4XBALBZTEReZoCESiVzG7aoImXz/JRIJJ1wcUQMnUByM4l5cW1tbi8zMTLS1taGiogJCoRC5ubmIj48P6Ti+kiTYEig2ISPLpKQkypgQACU65FJhQ0MDDAYD7HY71T2Dvlzo3oWcfC8aGxthMBg6mRNyERdHJMMJFEfI+CqutdlsKC0thVQqRUFBQae07mDxttcUrQLlDR6PB7FYDLFYjMTERJfnrFYrtVTY3NyMqqoq2Gw2CIXCTsIFdAgS0CFcdrsdNpvNZVyuCJkjUuAEiiNofBXX1tfXo6qqCna7HcOGDYNMJmP02NG6xMckpHC5W97bbDZKuFpbW1FTUwOj0QjgileWe9snelKKe0o8V4TM0Z1wAsURMO7CRE5QTqcTtbW1UCqV6N27N8aMGYNTp04xLk5A9whUtCASiRAfH++yjNrQ0ACz2UztcbW3t6O2ttZn2ydfwkWHrF8TiUTU33HCxcEEnEBx+I234lqHwwGlUgmVSoV+/fph/PjxnTbxmYbP53MCFQBkCnswbZ/o4kW2faKPCwD19fUQiUTo27cv9RxXhMwRKpxAcXSJt+Jaq9WK6upqNDU1IT09HUVFRR67PrABt8QXGO4p6XT8afuk1WpRX18Ps9kMAJ2EixRA9w4aZDan1WrtdEyuCJmjKziB4vCKt+Jas9mMyspKtLe3o3///rjmmmv8Kq5lkqslSYIpfAmUN3y1fSKFi2z7pFarIRAI0Nzc7LPtE3ku7kXI9GNyRcgcJJxAcXTCW3GtwWBAZWUldDodsrOzUVBQ4NfEEczk2BV0IaKPzQmUZ5j8DOh7ViQVFRWIi4uDXC5npO2T+/mSYkZ23eCE6+qAEygOCk/OtTweD1qtFhUVFbBarcjOzkZhYaHfEwNZr+Srr14wcEt8gcPmZE5+xt7aPplMJmqfy5+2T3QIgkBrayv0ej369+/Pdc+4iuAEisOjcy2Px0N7ezsqKioAADk5OZ3qcPzBWzJDqHBZfIERagSl1Wrx888/49jxEuz8ZjcGDxqEzZs2+jU+j8ejhMvftk8SiYQSLLlcDrvdTiVb0P8e8F7LxQlX9MMJ1FUKWVxrNptRU1ODrKwsF0v1yspKiMViDBw4sFPWVyB46/gQKnTho0+ObEdQ0UogAuV0OnHp0iWUlJTgyE8/I7F/AX4vr8Ll82dhS84DP6EAK1e+0Wn8QPchfbV9slqt1FJhXV0d2tvb4XA40N7e7iJc3to+AVwRck+AE6irDPcaJqfTicbGRgwYMMDFUr2wsNBljyFY2BKoUA0LgyVao7NABOqmm6fh1/MXEJs7Bs6UfEiTsiDMHwN5/l2wa5vQvunPSOmd7PI3ZD0cE5A9AyUSCdX2SaVSgSAIpKSkhNz2yVsRstFoREJCAmcoGUFwAnWV4K24lszK+/nnn10s1ZmCLfsLX1l80QjbwheIQK35+7u44eZbIZk4H8I4VyEyn/kG8+fPg0QicXmcSYHyhNPphFAo9Nn2yWAwwGg0dtn2SSwWe6zl+v333zFmzBiXccnfiKeIK1q/a9EEJ1A9HF/FtbW1tVCpVHA6nZ0s1ZmC7QiKvB56Gjy3xNeZQARq8ODBWLb0Aaz79E3E3/0aeMIr3wunxQDDb9/jsf/87HF8NksNHA5HJ1Gk4024PLV9slqtEAgELkuFcrncxY+LvCbgijhaLBaXcbki5PDACVQPxVtxrc1m62SpXlpayoo4AeFZ4nM4HC4TA7fE15lAz3vFX57Cl199hfo976L39GcAAPaGMsy4/XZkZmZ6HJ/tCCoYAfTU9gm4sj9FzypUKpUwmUw4efJkpz0u97ZPAFeEHC44gepheCuuDdRSnSnYzOKz2Ww4d+4ctFotgCsTg1QqhclkQltbG2JjY1kTXqYJh/D5O0E6HA4sWLAAib1iMTx/IH6BE3aHE4PkJnz47hqPfxOsgPgL0+MLhUKXtk8OhwO//PILRo4cSQmXWq2GSqXyu+0T4LuWi0xMksvlXBGyn3AC1UPwVlxLWqprNBpkZWX5banOFGxEUHq9HpcuXYJarcbIkSMxaNAgAFcmGY1GA61Wi9bWVlRXV7vsQ8TGxlITTDC9AtlOYWdzovI3wlEqlVCr1SgqKsIDDzwAiUSCkROuRZu4H3pLtACeCWn8YGFbAB0OBxXxhNr2SSqVeqzlamtrQ2trK3JycrhaLj/hBCrK8VZcS7dUz8nJCdhSnSmYFCidTgeFQgGbzUa59CYnJ8NqtYIgCAiFQsTHx1Pp8SR0wz/SuI/M/KKLlieL9Z6CPwJy5MgRLF68GKtXr8ajjz5KPb723bdwyy234pnNn3r922iLoNwhBcobvto+GY1GGI1Gqu2TyWQCAKp7Bilc5HfOvZbLlxPy1S5cPfPXeBXgrbg2WEt1tu6Amcji02q11DXl5uYiMTERZrMZdXV1Ho/nHuWIRCIkJCR08k2yWq3Q6/WdLNbdi0Q9dTeINnx9vgRB4IMPPsDbb7+N//znP5g8ebLL8xMnTsSvv55Denp6UOMzQaQKIJ/P99mvkG4oqdFoQBAE9Ho9JVqxsbFeIy6AK0LmBCqK8OVcG4qlukAggMPhYCV6CCWC0mg0KC8vBwDk5ua6CAwTnSTEYrFHi3W6cNG7GwiFQthsNjQ0NCA2NhYymYyxSTMcaebeUCqV+OKLL7B//35kZ2d7fE1GRobP8SNVQPylqwgqUOj9Csm2T7W1teDxeEhMTPTZ9okedQUiXORcwOfzKSNKgUAQ1cLFCVQU4M25FgCamppQVVUFqVSKwYMHd7qT8we2Mu2CHbu9vR0KhQJ8Ph95eXkexZatVkf0IlH37gZtbW2orq6GxWJBW1sbDAaDSyNUcrnQ0+a5v8dmE/fxm5qacO+99+K+++7D/v37Qxo72iMopgXK2zFiYmL8avvU3t4Oo9HoMaKXyWSdbibJ73xjYyOMRiPVs7ChoQHvvfce1q1bx+q1sQUnUBEMmSre1NSExMREl5of0lI9ISEhZEt1gUDAqkD5KxhtbW1QKBQQCoXIz8/32WKJLnzeOpszCSlcMTExyMrKoh4nG6GS1hNNTU2d9iDowtVdd7PuAvLLL7/gnnvuwdy5czFz5kxGjhHtAsV28pAvEQyk7RO5FC0WizsJl9PphFgspgRMo9FAo9Gwel1swglUBOJew3Tp0iUUFRXB6XRCpVK5WKr7Kl70Fz6f79Gbhwm6iqDIyEShUEAsFqOgoKBTBpUnuqMprKdj0huh0jt40z2TdDodGhoaYDKZwOPxOu1vMdm5wxt0gfr1119xxx134N1338Xtt9/O+rGZIBxLiGxHUGTD20Dw1PYJcBUuo9FItX0yGo0QiUQwGo3Yv38/+Hx+0N+vRYsW4ZtvvkFKSgp+++23Ts8TBIHly5djz549kMlk2LBhA0aPHh3UsbzBCVQE4a24lsfjobKyEvX19axYqrMZQXlLkiAtFBQKBaRSKYYMGRLQ8mSkdy2n70GkpKRQj3uzV+fxeFTjXjLqEovFjEUl5P7lu+++i4kTJ+KHH37wWHAbqfSUJT6m9nm9CVdFRQVkMhnEYjEsFgtKSkpw4cIFjBw5EgkJCSgqKsKbb77p1zEWLlyIZcuWYcGCBR6f//bbb1FWVoaysjKUlJTgoYceQklJCSPXR8IJVATgrYaJtFTX6/VISUlhrbiW7QiKvplLEASam5tRUVEBuVyOoUOHBtWUNtIFyhve6mwsFgvOnj0LkUiE9vZ21NbWwmKxuLTkIZcKgyk+1uv1uO+++2A2m7Fw4cKgrFO6k3C0UurOJb5gaDW14kT9CYj4Itw44EYAV6K0mJgYJCQk4IknnsDWrVtx3XXXYcWKFdT3yl+uu+46VFVVeX1+x44dWLBgAXg8HoqKiqBWq6mbaKbgBKob8SRM5J003VI9OTkZ/fr1Y+0OLxxJEgRBoKmpiXJeHT58eEj7Zt2xl8OmKJI93dx/3Ha7ndp/aGlp6dQE1Z/iY6VSicWLF2PKlClYvXo1o9E3STTeLNAh927YxG63Bx1BOQknLrVeQkldCUoUh3Ci9jjqLS0Q2Qn8MX+ai0DRj6HRaKjs18TEREZvTFQqlUsUnpGRAZVKxQlUtOOtuNabpXpbWxtrEQ7QkWbOBjzeFUfe48ePIz4+HiNHjoRUKmXlWD0RsvjYPZORLD4mi0O9FR9XVVVBp9Nh/vz5ePjhh1kRp55AuJb4/D2G1qLFqYZTKKn9GaWXD+BE+69ItggwsYbA/7tkxNNKoKAFyH9GiqUTn6D+zl2gtFptlyUCweIti5ZJOIEKI96Ka7uyVGdTQMjxmY6gCIJAQ0MDysrKIBKJGLfxuNrxVHxM1sjp9Xro9XqsWrUK//3vf7FmzRpcc801qKmpQUJCAivFx9FcawOER6D83UezO+0Ysi4fmRpg2m9WLKu045paIMXg+rpthUBG7zyMTu1ITPAVQTFNRkYGlEol9e/a2lqkpaUxegxOoFjGW3Etj+e/pTrbAsXkHpTT6URDQwOqqqqQlJSEgQMHQqvV9ghxYnOJj4lxeTwexGIxZDIZnn32WZw/f55Khjh79iwSEhJgs9lcio/pxaGhFB/3hCW+cPSo9EfIhXwh/vb/XsTHe17GCwftiLN2fg0BYNUf5Xhyyl9dHncXWjYFavr06VizZg3mzJmDkpISxMfHM7q8B3ACxRq+imsDtVQPh0CFGkE5nU7U1dWhpqYGycnJVAp8W1sba/tbJNF+907C1HVs3LgRNpsN3333HZWAwufzkZiY6HKjQBaHkntcra2tMBqNARcfR7s4AeGJoALh/jFL8VP1ETx6x0Fs2Gbu9PyP/QF17zj8KfdPnZ6jf4+0Wm3QAlVcXIzDhw+jpaUFGRkZePnll6mEp6VLl2LatGnYs2cP8vLyIJPJ8PHHHwd1HF9wAsUw3gwCAQRtqS4UCiN2D4qszaqpqUGfPn06GR+ymYDB4cqJEyewdOlSHDx4EA888IDLc546PdCLQ927GvgqPqbvcUmlUtYz7MIhgJEmUJ9f+AxHKw9h/ZnO4gQAq/4gw8PXPgU+z/f7rtFogk6M2LJli8/neTwe3n///aDG9hdOoBjCmzARBEFFFsFaqocjgnLv69UVTqcTtbW1UCqVSElJ8Vqb1ZMEKpJT2zdv3oznnnsO77//vsfWUIG0Iuqq+Fiv13cqPjabzaiurnYpPmYqIgzH8hvbhbpOp9Ov98PhdODlg3/FjtINOLjehGFNnV9TlgT8nMXHB0PnuTzu6bvJ5hJfOOAEKkS8GQTa7XbKUj0lJSUkS3WBQBCwgAQ6vr8C6HA4oFQqoVKpkJqa2mXRMJsW7HTY7gXHNqG8R2vXrsW///1v7NmzB4MHD/Y6fqjvD734mI7VasXZs2chkUhcio/prw+l+DgcAsV2HZQ/EZrGosHiL4phPXcapZ+Y0Nt45XECwH9GA0W1wNAm4J0pEtw7cjFkItcyDU/HsNvtUWPa6QlOoIKEFKbm5maYzWakpaV5tVQPtXpcIBBQ5mhs4E+UY7fbKWFKS0vz+7p6WgQVSeO3t7fj/fffx+zZs1FcXOxzKYftmwSRSITU1FSXxxwOB7W/5an4mL5U6GsSDZdAsRlBdTV+WXsZ5m6egRtLmvDeTitE//vJmITA/XfH4PiIJNg17dj7oQlbhwEnxi/rNIZ7Bl+kRvuBwAlUgLgX15I/QqvVypqlejjSzL2Nb7fbUVNTg7q6OqSnp6OoqCggwe1JAgVEzo/+0qVLmDNnDm6++WYXc0ZfsCWw3qIzgUDgYqtOQi8+bm5udik+djeQFIlEYVviY/MGxFcfvgNV3+PBrxbglW8MePBkx/dLFQfcvkiGASOm4KcZ67H6xzcxnv8PzMi9FX3lfT0ew9NvM5pXFjiB8hNvxbVOpxNNTU1oaWnBgAEDWLFU744sPnokmJGREbTgMmFYGAzRvuTni++//x4PPPAAXnnlFcybN6/rPwC770egAhJo8TG5ZF5XV8eq8zGb3xdPffgIgsD7pX/HP468ji82mjGppuO54xnAXfdKcf+1j+OJic+Ax+PhuSkvweK0YOHo+z0ew12gzGZz1Jd3cALVBd6Ka0lLdb1eD7FYjHHjxrH2BQ9nBGWz2VBdXY3GxkZGIkG2IyhfnlBMfx5sTmD+nC9BEFRzzi1btmDChAmMjh8sTI3trfi4vb0dNTU1cDgcXp2PyRquSMrEo+O+xGe2m7F814O48Mt3OL7ejCyaI8aGkcBfbpdjzYz1LmnkfB4fr9640usx3AVKrVYHZFwaiXAC5QFfxbVqtRoVFRWUpXpMTAwuX77M6uQVjgjKbrejrKwMTU1N6N+/P6655hpGIkE2BcqbEEV6QW0wGI1GLFu2DE1NTfjmm28C/vtIiqACgcfjQSAQQCqVuvR9IwgCFouFWiqsra1lvPiYSehLfPX6eszbcjuyfqnEj1vNkP8v/8nOB/4yTYydE5Owu3gnCpILAj5GuLpIhAtOoGj4Kq71ZqlutVqpZT+2YLMOitw7a2trozqmM/ljZjOLjy1X3UijtrYWc+fORX5+Pj7//PPuPp1OdIebLo/HQ0xMDGJiYjoZ/JHFx3q93q/i43DVWQmFQpxqOIV52+7E0oM6PHfIDvJda48BZi+Qwj58GA7c/RmSpEk+x/OEJ4HiIqgegK/i2q4s1YVCIesCxUYEZbFYUFlZiba2NqSnp6NXr16sNJVkUyx4PB4sFguUSiUsFgtiY2MRGxtLRcBsHK87hO/hhx/GXXfdhcceeywkIYjGCCrQ8YMtPrbZbGhubmbN+djhcGB39S68ffxlfLjNhBmXOp670BuYsUiKm8bOxat/fBtCfhxcTd0AACAASURBVHDTst1ud3EI4AQqyvFmEEjvJ9eVpXo47sAEAgFjIki38hgwYAAGDRpEXW80YbPZYDKZcPr0afTv3x8JCQkwGo1oamqCwWDA6dOnIZFIqLtl8n+7e6nHF+6T4saNG/HDDz9gx44dEZ3w0R0RVKD4Kj7WarWdnI/5fD5kMlkn5+NgrtPhdODtkldx+OJXOPixGUNpxbd7BgILi6V4+Y9vYd7we0O6Rm6Jr4fgrbjW4XCwYqkeKkyIoMlkQmVlJTQajYuVBzk+m3tcTEJP4hAIBBg7dixEIhFsNhtVB2QymTBo0CAqmcVgMECpVPpc6uluAaB/vjabDX/9619x8OBBbN26tdvPrSui2e2Wz+dDKpUiJiYGOTk5Lsf05HxMLz6mG0h6+4zUZjWWfFEM69lTOLHRjOQrQRsIACuvE+Aff4jF5llfYEKa/wkv3uAEKsrx5lxLFqHW1dX51R0hmjAajaioqIBOp0NOTg4GDx7sMakg0rHb7aiurkZDQwOVXXjmzBmPryWXaElLbPc9CnLicb9jpk86ZNcD93HDscRXXFwMp9OJAwcORMUEEw0RlC88CaA352N68XFbWxu1vOyp+LjaUI3izdPxx+PNeGeXa/Ht4lkxuDi6Pw4W70B6XDoj1+FJoPLz8xkZu7u4KgTKm3Mtaane1NSEjIwMFBUVBX2nFml1NwaDARUVFTAYDMjJyenkMRUtkIXCZD0W/TPylSThLXOQx+NRE0hKSgr1ODnxkBvr1dXVsNlsLgaAZGNUtqioqEBZWRkeffRRXHvttRGbMu1OTxQob/hbfLzt5Fa8+cuLeHOPBfef6vjO1Pa6UnybM/x67J2xHlIRc+adXAQVZXirYXK3VA81c41MYmCjeDBQyPosk8mEnJwc9O7dOyqFyeFwoKamBiqVyuvNg6+IJlAh8TbxWK1Wapmwvr4eer0epaWlnZYJZTJZSO/z7t278ec//xlr1qzB5MmTgx6nOwhHkgSbvy0mGsWSxce9evXCP4+/g/fPvIUdG824llZ8+3MGcOd8CW7LnYV5ufehtqrWZY8r1Gt071bBCVQEQq9hUigU6NOnD+Li4nxaqocKmcnHtkD5ulPV6XSoqKiAxWJBbm4ukpKSolaYlEolamtru2yt5KsOiinEYjGSkpKQlJQEh8MBk8mE0aNHw2w2U8619IwwT8uEXZ3PypUr8fHHH2PVqlWYPn06Y+ceLthuExSOCIqJ8c12Mx7buQSXzn6P4+tN6E8rvl0/iodnZkixdsYGTM2ZSjkfkzc+TBQfEwTRSaC4LL4IxGq1UiJls9moydubpXqohDPV3H2y1ul0KC8vh91up4QpEulqGYhu39GvXz+/ev55Sx5he6+InspMzwgjN9b1er1Lc1R6jznyf4VCIUwmE9RqNZRKJfbu3QudTsfaObMJ235QkbTE5416fT3u2TIDOWeq8OM2M2S04tunbhVj+5g47J6/B4N7X+k2T7/xIWG6+Fir1QbtBRUp9DiBIhMfyH2nS5cuQSKR+LRUD5XuECiNRgOFQgGn04nc3FxGro2tvQRfrYfowpSamhpQ9/dIK9T1trFO7zHX0NAAvV4PlUqFF198EdOnT8fzzz8PkUgErVYb9nNmgqtpD8oTJ+pPYP62u/DwQR3+ethBFd+2SYHZ86UgRozAP3JXUOLkjWCLj8mbHofD4fJecUt8EUpzczMqKipgt9vRp08fv7s9BwvbjrdAh0Cp1WooFAoAQG5uLmNfQLL+i42NeXJs+iRDWsRXV1f7NDz0hbdkCLYEKthx3XvMHT16FE888QQee+wxFBcXU/VbarUaJ06coOpvyImHSfM/NoikQt1wj7/5t0/xwt4n8J+tJtx2uePxC72B6YuluHnsPLxy00qcOeU549Qf/Ck+1ul0sFqtOHXqFHbv3o1ff/0VRqMR+/fvx9ChQ5Gdne33Ne7duxfLly+Hw+HAkiVLsGLFCpfnNRoN5s2bh5qaGtjtdjz11FO47777gr4+X/RIgbJarSgsLIRGo4HFYmH9eOGIoBwOB86dOwexWIy8vDzG15ZJAWRLoMiJ3el0or6+HlVVVejTpw/GjRsXtKFapEVQ/tDc3IyFCxfio48+wvXXX089TpYDDBkyxGP9jXsac2xsbMSUQvSECCrQ/WOH04G/ff8M9pz4Lw6tN6GwueO5b/KBRXOkeGXqatwzzL9u88FALz5OSEiARqPBqFGjMGzYMJw/fx7Lli3DqVOnsHHjRlRVVeGDDz7AmDFjfF+Xw4FHHnkE+/fvR0ZGBsaNG4fp06djyJAh1Gvef/99DBkyBLt27UJzczMGDRqEe+65hxVjxB4pUBkZGXA6ndQPnW2Y7PTgTltbGxQKBYxGI/Ly8pCezkzNhDtsNnUlC4FJ75/k5OSQhIkkmgTKarXiueeew9ixY3Hx4kWv4sLn86mWTX37dnj+kGnMer0ezc3NqKyspNxS6aLVHR29e0KSRCAF+WqzGos/nwPHuTMo3WhCEq349s3JAvzzxjhsmfUFxqeNZ+eEPUD6aQFATEwMRo8eDaFQiFdeeSWgcUpLS5GXl0cVLc+ZMwc7duxwESgejwedTgeCIKDX65GUlMRagliPFCjyxyIUClm1SidhOoIiCIISJolEgoKCAqhUKla9XdjqmE4QBKxWK06ePMl4d45wC1Sw4zY3N2P+/PmIj4/HCy+8EFTk48lDiXxv3btlOJ3OTsuEbAp2T0iS8Hf8srYyzNl8G24uacE7u6wQ/u+ezii6Unx7eVQWDhXvQFpcGvU3bAs40DkKtFgsQd0AqlQql67xGRkZKCkpcXnNsmXLMH36dKSlpUGn02Hbtm2sfT49UqBIyBY4bCMUChlZSiQIAi0tLaioqIBUKsWQIUOo5rRs73MxHUERBIHGxkZqL3DYsGGMJ6nQlw7pE0AkRVAqlQpTp07FrFmz8Pzzz3v9IQdzvr66ZZhMJuj1eqpbhtFoxMmTJ7vslhEM4dgjYjMq9Hf87yq+w8NfL8QbO41YfLrj81L+r/h24Igb8e30jzoV3/py02UKegQFXNkncq/p8wdvN3x0vvvuO4wcORIHDx6EQqHATTfdhEmTJgV1vK7okQJFj6DY3hti4jgEQVCJHXK5HEOHDoVcLnd5DZvLiOT4TAgUQRBoampCRUUF4uPjMXr0aFy+fJk1B9RwJ0kEwr59+xAfH4/333/fr+Jbpu6y6XsTZLeMEydOYNSoUV12yyD/N5AJtSfsQfm6XoIg8Pfjq7Duh1X4eqMJE5Udzx3LBGbeK8VDk57E8qKnPL4P4Sjidz+GVqsNKoEqIyMDSmXHBdbW1iItLc3lNR9//DFWrFgBHo+HvLw8ZGdn4+LFixg/nvklzR4pUCThjKCCEQ/6ZB4XF4fhw4d77ZoeDtPCUMani2xcXBxGjhwJqVRKjc3G/hZdiOiTZHdHUE6nE6+++iq2bduGnTt3Ijc3t9vOBei4K/bVLYMULpVK5VJ7Q+6H0f2TPI0f7QLlbXyTzYTHdi5B+dkDOL7ehExaJcB/RvPw7HQZ1t5+pfjW1/hsR1BMeUGNGzcOZWVlqKysRHp6OrZu3YrNmze7vKZ///44cOAAJk2ahMbGRly6dMml0S6T9GiBYttunCTQ5Tdy+auyshLx8fEuk7k3BAIBq2IbrACSy5IKhQKxsbEeRZYtSxK6EEXKEp9Op8P999+P9vZ2HD582KWQt7voSkDEYjHEYrHLEixZe0Pub7l3yyCjrdjYWMY6MXgjHEkYngSkTleHuVtmYOCZavzwmWvx7RO3ibF3Qm98O3cn8pN8N2QNR5cZT3bvwURQQqEQa9aswdSpU+FwOLBo0SIUFhZi3bp1AIClS5fihRdewMKFCzFs2DAQBIGVK1e6pL8zSY8UKPqddDjwN4IiCIJKsU5MTMSoUaP8TnwQCAQwm82hnqpXAhVzMpGjvLwcMpnMZ/Tnq3lrKHSH5bsvNBoNzp07h9zcXLz44ouspN0GQzARjrduGU6nk+p0QHbL0Gq11B07PeJialJmOwnDU4RTWleK+Z/NxKMHdFhxxLX4dtYCKXjDR+LA3duQENO1CIQrgqLPJaEU6U6bNg3Tpk1zeWzp0qXU/09LS8O+ffuCO9EA6ZECFW66Eiiy9qe6uhpJSUlBZbKxvcQXyB4UKUwxMTEe98vcYSuS7a5WR544dOgQ7r//fuzcuROvvfZawH/P5jIZk2Pz+fxO3TIuXLiA1NRUyn+L7JZBpm+7p8FHmmmku4B8+usm/O27J7F+qwm30opvz/e54nw7bdx8vPKHlRDw/ROd7lrii/YuEkAPFSj35R6217C9JTDQuyWEmmIdjiy+rsZvb29HeXk5RCKRS4ahP2OzFUGFYwnXFwRB4F//+hfeffddbNiwwaVe5GqBIAgq0YI+KZK95chlQrJFD4CI6pZBzg92px1/2/8M9p7chMPrTRhCK77dlQ8sniPF/938DuYOvSeg8btjiY80Jo12eqRA0SETJdh0xnX/YTmdTqhUKtTU1CAlJYWRotTujKDUajXKy8shEAhQUFDQqddcV4QjSSIcx/PE5s2bsWnTJnz//ffIysoKyzEDpbuSGOi95eh7FE6nk0qDj5RuGWqLGos+nw2cO4sSt+Lb16cIsPaGOGyd/SXG9RsX8NjhyOLjIqgohVx+C4d1O90yvm/fvow687KdZs7n8zslYWg0GpSXl4PH4yE/Pz/oOodwJEn48ziTNDQ04Mknn8Sbb76JWbNmRUzbIU+wLVCBjk+3TfenW4bJZEJZWRm1v8V0t4xqYzUe/GgebjneilXfuBbf3jc7BopRA3CoeAf6xfYLavxAO1UEg7tABZtmHmn0SIGi/1jCkWrucDhgsVhw/Phx1izjw5FmTkYdWq0W5eXlIAiCkb5/bCdJhJtTp05h3rx5WLhwITIyMhiZ/Nnu9BANaeDeumWUlpYiOTkZer3epVsG2cmbngYf6HXuVezFU6UP4+1vzFhE6+daE3+l+HbQiD9gz20fhuR8G45CXS6CijLIyYvNYl273Q6lUom6ujrweDxGlvK8EY4lPpPJhDNnzlAWHkx3SmcaT1EfwK5wHT9+HO+88w7++c9/4tZbb2V07GhIkuiO8fl8vkfvJHKZkEzMMJlMLtEZKV6efpMEQeC9n9/Gv4+uxjefmHFNbcdzP/a/kqn3yKSn8WjREyFfW7jctunnqdFoot4LCujBAkXCRgRlt9tRU1OD+vp6pKWlYcKECThz5gyrP1I2BYo0dDSZTBgxYgQrLYnYOHcyMlOpVGhoaKAmJavVyviNgsPhwFdffQWpVIpvv/0WBQUFjI7PJtESQQUyNr1bBh2Hw0Glwbt3yyC/H3wJH389+GdU/noIJetNyKAV3344hofnbpNh3R0bcVP2TYxcQziy+NzhBCrCIe+imRQom82GmpoaNDQ0ICMjA0VFRdQXj9wjYmsvgo19HL1eD4VCAYvFgn79+kGn07HypfYW6YQCQRDQaDRoaGhAWloacnNzYTabodPp0NbWBovFgoaGBshkMsTFxYXUe06tVmPx4sVUR/JoEieA3eVDcny2BDBQ8euqW0Z5Uzke+2oRhv5aj6OfWyH93+KK7X/Ft98V9cHe4p0YmMSchxzbS3yePl+z2dxl8X800GMFioS01g4Fm82GqqoqNDU1ITMz00WY6McJR98/JjAYDFAoFDCbzcjNzUVycjJVbMkGTC7x0TtXCIVCpKWlIT8/H1arFXK5HMnJyZBIJLDb7UhLS6Ms2Ol306RFBX3T3dskWFZWhtmzZ+PGG2/E66+/jl9++YWR6/B0XWzCdgQVKQLlDbFYjDMtZ7Dg25lY/r0ef/mho/i2VQrMXBADa14BVg1/GWqFGufrz7vsb0kkkqCvke0lPvf3iCAI1qPmcNFjBYr8cEKx0rZaraiqqkJzczP69++Pa665xuuPJRoEymg0Ut5SpDCR7xObS4hMRX/t7e0oKytDTEwMhg8fDr1e7/GzJaNnTxbsdIsKun02AJd9C7KFz+eff47HH38cCxYsCPn8uyJa96AA9s6dKYHadO4TvLjvL/h4iwm3lHU8/lsKcNtCCWZMWIiXbnwDAr6A8pLT6/VUtwyLxQKhUNgpDd4f4WF7ic9bnRUnUFGASCQKWDgsFguqqqrQ0tKCrKwsn8JEEskCZTKZoFAooNfrkZubi969e3f68rJZOxRqFp9Wq0VZWRn4fL5LgbDBYAg4zdybRQV9UmptbcXKlSuxe/dubNy4EXFxcaivr0dsbGzE2HgEwtUsUHanHc/vexr7T27GkfUmDG7peG7HIGDJbCkeGfYUnrzpaepxumkkHZvNRu1v0a1kJBKJy82Ne0TOdqsmd4EKR2FwuOgZV+GDQEwLzWYzqqqq0NbWhgEDBmDgwIF+f7HY7vRAEshkYzaboVAooNVqkZubi8LCQq9/y3YEFYxA6fV6lJeXw263Y+DAgZ3S3Zm02yAnJYFAgOeffx6XL1/G3r17kZKSQkVbZIrziRMnIJPJXKItsVgcsXes0bzcE4pAtZnasOjz2RCcO4eSjSYk/q+VJQHgteuFWHdDHD6+ZSP62vv6HIdEJBIhISHBY7cMuo0JGZGTafBkLRdb3TKY6mQeifRYgaIv8XUV2ZjNZlRWVqK9vR3Z2dkYNGhQwF+kcERQpIh0dXdkNptRUVEBjUaDnJwcDBkypMvrYdvyPZCxTSYTysvLYTQaMXDgQJf0YjpsFOo+8MADEAqF2Lt3L5UhRk9xNhgMGDNmjMclILLdT7AFpdG6xMdmVBmsWeHF1oso3jId04+14a09HcW3BhFw35wYVI7MxsHirxFji0FLS4vvwXxA75bhHpGTafAOhwNlZWUu3TLoEVeoiVU9tQYK6MECReIrgjKZTKisrKT6VhUUFAT9QxYKhbBaraGcapd0JVAWiwUVFRVob29HTk4OBg8e7Pf1REIERZ6/Wq1GXl6ex6VIOkwKVElJCbZv3453333XZW/OE96WgOi+SrW1tdQSJL2gNDY21uOGezQX6rJJMFYe35bvwbKdi/HW1wYspOW01MQDMxbJMHjkH7Hntg8QI7wiTmzsD5H1WDKZDDU1NRg+fDiAjm4ZBoPBpVsG/eaGFDB/z4uLoKIQ8gfpaYPeaDSioqICOp0u4IncG2y3IiKP4UlErFYrKisr0draGrTQsl1o6WsCttlsqKysREtLS0Dnz5Qf1KZNm/C3v/0Na9euDcnXxpOvknvfOZVKRW2400Wru5vehkKk1FgRBIF3jq3ERz++i52fmFBEK7492h+YtSAGj01egUfGL6fOORx29fTxvXXLsNls1FIy3TSSvLkhIy5P3TI8eUFxAhWFGAwGVFRUwGAwdLknEyjhXOIjIbMMW1paMGDAAOTn50fknbK3vSJ6wXNWVhaKiooCmiyYsNt46aWXsGPHDnz77bcYNGiQ38f2F29958gJyWAwQKVSQavVwmq1wmazQS6XU7VbTOxbRPsSnz/fCaPNiGU7FqHq7GGUrDchXdfx3AdjeHj+Nhn+fcdG/MGt+JbtDDt/xufxeBCLxT67ZZCJGWS3DPoeqNlsdrG84Zb4ogyHw4GzZ8+61P0w/YMNh0CRx6DXZQUzsYcb9yU+p9MJpVKJ2tpapKen+5Ul6YlQlvja2tpw8eJFZGVl4eDBg2GvuheJREhMTKSOSxYdZ2ZmUunz9C7f9GgrUDPAaF7i80eganW1mLt5BgpPK/HD52aX4tvHp4vx/YQ+2Dt3JwYmdi6+7a4UcH/w1S2DnnHa3HzFF6Sqqgrr16+HRCJBQkIC9Hq935Y4JHv37sXy5cvhcDiwZMkSrFixotNrDh8+jMcffxw2mw29e/fGkSNHgro+f+ixAsXj8aDT6ahOCWlpaV3uaYRCOASKx+NBqVRCp9N1WZcVSZACRffHSk1NxYQJE0JKh6VHZvRJuCuBunDhAubMmYMFCxbgySefDPr4TEKePzkhpaSkUM/Z7XZq+ae+vh4GgwEOh6PT3pa3aIttgerOJb6SuhLM/2wm/rxfj6ePdhTftsiAu++VQTx8NA7M3IJ4ieclL6fTyWpKNhsC6F7f53Q6kZqaCpFIhNtvvx1ffvklqqqqMHXqVBgMBtx999147rnn/DrXRx55BPv370dGRgbGjRuH6dOnu3icqdVqPPzww9i7dy/69++PpqYmRq/NnR4rUHa7HZcvX0Z2djYcDgfi4uJY/SGxmWZut9tRXV2N+vp69O3bN2qEiYTH48FkMuH48ePo3bs3Y93efUVQ3tizZw+WLVuGV199FXPnzg35HMKBUCj0mN5sMpmopAyyWSoZbdGzxNh262UTXwL137Mb8NL+Z7BhiwnTaMW3v6Zccb69ffxC/O2G13w630bCEl+okFGaTCbDtGnTcOrUKdxzzz2YMWMGCIKATqfrehAApaWlyMvLQ05ODgBgzpw52LFjh4tAbd68GXfeeSf69+8PAC43UmzQYwVKJBJhzJgxAIDa2tqwLb8xCX2PJiMjA1lZWZBKpayKE5OTGdmWqLy8HDabDRMnTmTUF8ddoMhz9yZcdrsda9aswWeffYaxY8cydh7dAT3a6tOnD/U43VOpsbGRWkEg3xdStIKxpvAEm22OyPHdIxy7046/fvckDp7aih/Wm1BAyxL/ugC4f5YUb/zpPcwuLO5y/HAs8XWn1QaPx/Pbx02lUiEzM5P6d0ZGBkpKSlxec/nyZdhsNkyZMgU6nQ7Lly9ntctKjxUowNVyg21PKCY7djscDtTU1KCurg7p6elU77+ampqweEIx8YNqa2tDeXk5pFIphg8fjl9//ZVx0zby83UXJXeBMhgMeOSRR5CZmYk9e/Yweg5MwVQk4ilLrKmpCe3t7YiLi6OEi9xsd9/bCjSyZbtLgnsE1WpqxX2fzYL43G8o+a8JCbTi2/+7QYgPro/D57O/wpjUMX6NH44IKlrcdP1ZjbDb7Th16hQOHDgAk8mEa665BkVFRcjPzw/8xP2gRwsUSThMC5m4i3Q4HC7JA+5NaQUCAavXwYRAkS68AoGAaktEEARrflDeJnby8ZqaGsydOxdDhw71ax2+O2ErEiGzxPr06eMSbZHWFHq9Hk1NTdDr9VTrHveCY2/nFk4rjwstF1C8ZTruONaGlXtsEPzvozeIgHuLY6AcmYNDc75GamxqUOOzQTiW+NyvIViBysjIgFKppP5dW1uLtLS0Tq/p3bs3lZl63XXX4ezZs5xABUM4TAuZgJ7V1q9fPxQVFXm86xIIBDCbzaydB5nGHsz+ENmWyOFwdHLhZXPi9dXqSKvV4sYbb8Ty5cvxyCOPRG0mW6h4ExFP1hRk6x4yKaO5uRkmkwk8Hq9TM12RSBS2OqI95bvx6M7FWLXdiAVnO56vjgdmLJZh6Mib8c2t6xAjjAlo/HAs8bFlwUPi/vkG6wU1btw4lJWVobKyEunp6di6dSs2b97s8poZM2Zg2bJlsNvtsFqtKCkpwZ///OeQr8EbPVqgSMIRQQWD0+lEbW0tlEqlX1ltbAttMO2OyLZEJpMJeXl5XtsSsYGvJImdO3diyJAh+P7775GVlRW2c4pEAoly6K176EXL9GirpaWF6oAgFAop762urEuCweFwYO3pv+PTU+vwzQYTxqs6nvshC5g9X4rHJj+LR8Y/FtQNSDiW+MLty2Q0Gl3qovxFKBRizZo1mDp1KhwOBxYtWoTCwkKsW7cOALB06VIMHjwYN998M4YPHw4+n48lS5Zg6NChTF9CxzmxNnIEIRKJYLFYWD8OOcF39QOlp1v37dvX76y2cNi++zu+xWKBQqGARqPxqy0RG3gSKJvNhhUrVuDIkSPYsWNH1IhTpLc68hZtaTQaKhHDl3VJMEaRRpsRzx17Au2Kkyj92IQ0WjLaunE8vHiLHP++cyNuHPCHoK8rmFZKgY7Ptlkh/bMlv0fBXtO0adMwbdo0l8eWLl3q8u+nn34aTz/9NEJh3bp1lPBpNBpUVVUdIgjievfX9WiBIj+4cCRJkMex2+1ef4xOpxP19fWoqqpCSkpKwOnWbAuUPxEUvS0RU22igsVdoPR6PWbPng2pVIoPPvgA2dnZ3XJewRJtzWJ5PB5EIhFiYmJcbgScTqdLd+9gjCKVWiXmbpmBoSdrsONLK2JoxbePzRDj8IS+2Fu8A3mJeSFdA1NJQd5g2/oiWr2gli5diqVLl8Jms+GGG25AVVXVO55e16MFiiRcS3xkPz53gSIIghKm5ORkjBs3Lqg7yu6MoMharIaGhojpXkFPkigvL4dOp8Ntt92GBQsWQKFQdOu5RRJsW7J78hZzN4oEQO1tGQwG1NTUwGAwAEAnE8DTLadx7+ez8OQ+PZ780bX4dua9MsQMH4PvZ25BL4l/6dNdnX80R1DuAsV2RMg0y5cvxw033ICjR4/u8vR8jxYoegQVjiQJ9+MQBIGGhgZUVlYiKSkJY8aMCSnVujsiKKfTiZqaGqhUKmRkZERUkTCZJLF9+3YsW7YMn376KR566CFYLJaoNBaMRgJJM+/KKLK9vR3/OrYG/7mwBpu2WnBzecffnusL3H6fFHdMuA8vXP+qz+LbSCLcAqXVajvdGEQqGzZsQHV1NdasWeP1NT1aoEjCFUGRAkUQBOW4mZiYGLIw0cdnO4IiBYq+T9avX7+Q2xKxAUEQ2LBhAw4dOoSvv/6asjQIxQ+qJ8J2J4lQbljIWiyJVIJVp1/DkbOf46f/WDCoteM1Xw0G7r9LgoeGPI5bU6ejVlkbFUaRQPiX+NRqdVQ0ij116hRWrVqFo0eP+vz+RNaMwxLhiqAEAgFaWlpw6dIlxMfHY/To0YiJCSzttavx2Y6g7HY76uvrUVlZyWhbIoD5ifLnn3/G+fPn8eOPPyImJgZWq5XyWoo2gYpkEfEFE50kWk2tuHfbTMjO/Y7jmzqKb5084OUbBFg/BvdoMwAAIABJREFUJR5fzf4KI1NGwmQyQafTQa1WU0aR7tYlgXgpsU24O1VESyfzNWvWoK2tDddffyUv4uzZsx8RBLHE/XU9WqDozUPZhCAINDc3o66uDnK5HCNHjmQltZTNiZcgCBiNRiiVSqSkpDAW9ZGQ+0VMfBYVFRUoLi7Ge++9h5UrV6K+vp7K0rTZbBCJRDAajWhsbOyy0PRqINx7UIHwe8vvKN4yAzN/asMb33YU3+rFwL3FUpTl98PB+/ZSxbdkgSgdT15K/hhFhusmhs3vnnudlVarjQovqI8//tj9oU7iBPRwgWIbstecQqFAbGwsMjMzIRKJwl73ECptbW0oKysDQRBIT09HXl5omVGe8DcFvysOHTqEhQsX4umnn0avXr1QV1eHwYMHo1evXtTypMlkwrlz52AymdDc3Ayj0UgtJcXFxQVlWRHNRGp0trv8Gzy6Ywne2W7E/HMdj1clANMXyTBi1DS8lbq4y84Q7tYl5HmRe1sajYayLqFHWz3hxiVaIyh/6dG/UE+22kx8IQmCQGtrKxQKBWQyGYYPHw6ZTIb6+npWOz0wjUajQVlZGYRCIQoLCynTPDbw1vUhEPbv34/Fixfj9ddfR05ODpKTk6FWq5GcnEztMZKFpkKhEAMGDKD+lt5Etb6+Hnq9Hk6n08X4LS4uLuL3NIIh0mqsCILA2z++jg0//QN7Npgwrq7juSNZwJz5Ujw+5a94aNyjOHnyZFDnRXa+8GQUSX4P6urqYDQaUVpa6rd1SaRht9tdthE4gYpSyH2oUPdTyCaoMTExGDp0qMtyQzhs35lAr9ejrKwMTqcT+fn5VPGlXq9nbY8rmC4VJBaLBW+88QYmTpyINWvWYOTIkcjIyACfz0dFRUWn13taCvVmtU2/yybt2EUikUu0xXR3BE9EapTTFYFGxQabAQ9vXwjVuaMoXW9CP33Hc2vH8/DyNDk+uPO/uGHAjSyc7ZVoi7QuMZvNsNvtGDZsGOVcq9PpqBtNJowi2cY9glKr1ejXrx/rxw0XPVqg6D94kUgUkkC1t7ejvLwcYrGYaoLqTriSMYKdzIxGI8rLy2E2mzFw4MBO/bpCEZGuCHbs+vp6zJw5E1KpFLNmzUJ+fj5jS3Pe7rKtViu1p1FdXQ2j0Ui91mq1or29nepFd7UTyHexRluDuVtmYOTJWhz50kIV31oFV4pvj4zvi++KdyI3MZfFM+6AFFdfRpEGgwE6nQ4NDQ3UDZxUKoVcLkdcXBzkcrlX65Jw1CR52oMaNGgQq8cMJz1aoOiQ3SQC3R8ihUkkEqGgoMBnjUE4BIrM5AtkkjabzaioqIBWq0Vubq7XtkRsZgkGI1BHjx7FPffcgzvuuAMrV670OyMy1EhELBYjKSnJpa8g2Yuura0NTU1NqKiogMPhQExMjEu0FYlLQ2wnSfgzCR+rPYaFn8/C0/v0+PNPTqr4tlkG3LVQhtjh4/D9XZ8yUnzrL11l2HmLus1mM3UDQzeKdG/vFC6rDfc9qGAaxUYqPV6ggu1oTtpG8Pn8LoWJJBwCRR7Dny++1WpFZWUlWltb/WpLxHYE5e+Sh0ajwe7du9HW1oZ33nkHM2fO7PJv2BYFshedRCLBwIEDqeshJyv60hB9Iz4uLg4ymaxb057ZXj7sauyPf/kIr+1/Dhs3mzCV1uDjbF/g9kVSzJywGM9f/3/g88JbAB5MCjiPx4NUKoVUKu3SKNJms8Fut6OiooJxo0j6cZnwgopUerxAkfhbrKvValFWdsU/2t02oivCGUH5gt6WaMCAAdSEysTYweKP+BmNRly4cAFr167F0aNHcebMmaC6MocLb5MVPe25trYWev2VjRaZTEZFWu4NVCMtkcFffPWyszlseGbvcvx4+iscXW9CPq349svBwNJZUrw1bQ1mDr7b69hswuQSnKdoS6PRoKamBr169YJOp0NTU5NP65Jgr8G9kwQXQUURZATVlUDpdDqUl5fD6XQGLEwk3S1QpOFhsG2J2IygfGXxkZ3R6+rq8M4778But+PYsWMRLU6+8JT2TLb00el0Lg1USXNAp9MJgiBYEZPuSMBoNbViwba7EHf2Ao5vMiH+f2YCTh7w8o1CfDw5Hl/N2Y6RfUcGPDZTsN0o1ul0UrYl3qxLmpubKesSd6NIqVTqlzOCu1khJ1BRiLeO5jqdjgrH8/LyQvpwA1nGChZPAsVUW6JwR1B2ux1VVVVobGxETk4O/vvf/2LQoEF46623grqjZNvdFQi+WJpur05CNwdsbGyETqfDiRMnOmWPxcbGhjSRsvmd9LQHdb75PIq3zsCsH9vx+l7X4tv5c2PQMCIPh+Z8jRR5iocRfY/NJOHwgvI0PhNGkd7Q6/UeE7iilR4vUOSERXYXINHr9VAoFLBarcjNzQ2r0V4o0EWE3oy2T58+IbclClcWH91BODMzE3q9HnfeeSd++umnoCakaGtrREI3ByQIAjKZDNnZ2S7ZY55qtshlwkBqtsK1B7WrbCeW73wAf//KiLm/dryuMgGYvliG0aNuxYfT3odE2HWXErYjHLaz7ALpw+fLKJIshWhpaUFVVRUVecvlcmo5mSyFYPs9Czc9XqBIyDRzg8EAhUIBs9mM3Nxcl87K0QBZa9XU1ASFQoGEhATG2hKFI4Kqr69HRUUFZdT4/vvv4+9//zs2bdoU1GQRjX33uqKrmi21Wg2lUgmr1QqRSOSyr+WpZiscrY6chBNvHX0NG4+twbcbTBhLK749PACYMz8GT055AQ+Ofdjvc2FbQJxOJ6tZdkxEaAKBoJN1CUEQsFqt0Gq1aGxsRHV1NdavX48ffvgBFosFq1evxogRIzBixAiXtHlf7N27F8uXL4fD4cCSJUuwYsUKj687ceIEioqKsG3bNr+Sl0LlqhEoclInU62Tk5OjziAOuLJfU19fj8TERMZ7/rEZQZnNZtTV1aF3794YO3YsJBIJnn32WRw6dAhHjhxB//79gxo3HMuqdNgSxK6+M75qtnQ6HWUOSK/ZIqMth8PB6nfd7DDj3s/uRsO5n1D6cUfxLYErxbev3CLHR3d+iilZnQxTfRKOJT4m+016Gj8Y37eu4PF4kEgkiI+Ph1wuR2FhIVavXg29Xo+bbroJKSkp+O677/D2229j8+bNLhGZt/N85JFHsH//fmRkZGDcuHGYPn06hgwZ0ul1zzzzDKZOncr4NXmjxwuU2WzGpUuXoNVqIRaLMX78eFb3KYKpU/IHsi2R1WpFamoqBg4cyOj4ADuTvVarxeXLl2GxWJCZmYns7GzU1dVh27ZtmDNnDl544QXIZLKgxyeTLyKt9ihciMViJCcnu6wE0Dfhm5qa0NraCrVa3Wlfi4marTpDHZ7Ztwxjz9Rj2xcWSP4XgFsFwLLbJfhxXF/sm7sTOQk5AY8d7XtQdrs9pO+2P+PT5xm73Y6kpCQsWLAgoHFKS0uRl5eHnJwrn9GcOXOwY8eOTgL1z3/+E3fddRdOnDgR+sn7yVUhUCkpKRg0aBBOnz7N+kQWSJ2SP7i3JdLr9VTn7kjGaDRSgpqfnw+1Wg2BQIDS0lIUFxdj2bJlGDFiRMjHISOaSDFRjATcN+EdDgfS09MhEomg0+l81mzJ5XK/38ufan/Cfd/PxrP7TXj8WEfxbZP8SvFtr+Hjsf/OTUEX37ItUD1BAN1roILJPlapVMjMzKT+nZGRgZKSkk6v2b59Ow4ePMgJFJMkJSXBZrOBIAhWvZRImEo199aWyGQyheU6gsVqtUKhUECtVmPgwIHU8oJWq8XXX3+NlStXYt26dbjlllsYOV6496Cicc+LFHCyZou+L0Gv2VIqlZ1s2D3VbAHAf05/gDcOvIBNm034I6349pfUK863s4rux3NTXg6p+DbaBSRaBMrT99n9Rv7xxx/HypUrw56A0eMFiiRcS0ChJhrQ2xLl5eV12itj27QwWOjFwTk5OSgoKKDO2263Q6VSQaFQYN++fRg8eDBjxw33HhRbsF2r5I1Aa7YkMgn+fnYlTv2+Bz+uN2FgW8dYnw8BHr5bilW3rMWdBXeFfN7RLlDubYjYGJ8JN92MjAwolUrq37W1tUhLS3N5zcmTJzFnzhwAQEtLC/bs2QOhUIjbb789yLP3jx4vUOHemwg2gvK3LVGkCZTT6URtbS2USqXH4uD29nbMnz8f8fHxePXVV5Gdnc3o8aMxoukOAvkdeKvZUqlVWPTFbCT9VoaSzWb0ohXfvvgHITZM6oUvZ2/HqH6jGDnnnrDEF06792AjqHHjxqGsrAyVlZVIT0/H1q1bsXnzZpfXVFZWUv9/4cKFuPXWW1kXJ+AqECg65IY6m1/KQAWKXqw6YMAA5Ofn+5xMwiFQ/tzNEwSBxsZGVFRUoE+fPh6Lgy9evIi77roLt9xyC5YvX86KV5avDhVsRCXRKIhMvA/nW86jeMsMFP+oxqvfdRTf6sTAvOIYqAoH4MNr3oVD5UCpsjSkmi2SaI+gwhGh0ZdetVptUBGUUCjEmjVrMHXqVDgcDixatAiFhYVYt24dAGDp0qWMnXPA59ZtR+4GSPFgI/XT/RhdQW9LlJmZ6XdbIrYFipyAfU0mra2tKCsrQ69evbzWYBEEgVmzZuGZZ57BggUL0NTU5FIozfT5ens8WrL7uruhqy92Xt6Bx3c9iH98aUTxbx2PVyQCty2MweiRt2D99H9DLLjyu3I6nZS/Unt7O1WzJRaLXfa1uvLZ4gTKN+5Zgmq1usuUcm9MmzYN06ZNc3nMmzBt2LAhqGMEQ48XKE+eUN0pUE6nEyqVCjU1NejXrx+KiooC+hILhUJWBYoUQE8TA9lIVyAQYNiwYR575REEgbfffhtarRZnz56l3n+2aqy6Eig2jhdtBCtQTsKJN3/4P3z681rs/diEMfUdzx0aABTPl2Ju/hL89ea/UeIEXPmsPdVs0Vv5uNds0YuNyUg82pf4AHa/L+5LfGSNZ0+ixwsU4Gq54U9H81AQCoUe08CZakvEtmuvQCDoJCRkRqHFYkF+fr7XdW6j0YgHH3wQlZWV2LZtm8uPky2B8pYkwebEcDUs8emteizdvgDNZ4+hdIMJqbTi2zVFfLz2Jzk+umszerX28nuSl0gkkEgkHmu2dDodZVNBmgI6HA7I5XKYzWZIJJKoaqIbDjwJVE9qFAtcJQJF4q/lRii4L8ERBIHm5mbG2hKxvcTH5/Op8ekp43l5eV6NDsnX3njjjSgoKMD+/fs7dbhgK9uOvPlwOp2wWq0upobRJiRsEshEXKWpwtwtMzDuZB0++9K1+PbhOyQ4Ni4V+4p3IjshG6ea/z97Vx7fVJW2n7RJs3Tf6b6mC0uB0gIy6Mx86qCouEsRRTYZVAZkFEXFEVcG9dMZ5BtwFGEGAVEcRRFwUATUgZZVFLuk+5LubfY9ud8fnXN6k6Ztkia3Qvv8fv5moGnuTUjOe973PMvZIS3y/Rmn6vV6VFdXw2AwoKKigmq22J2WO5qtKxFXehYUMEIKlKehhZ6AfY3Ozk5UVlYiMDDQa7ZEvt7x+fn5wWw2o6qqCi0tLUhLS7OjjDvDqVOnoFar8cILL+C6665z+lhf2ii1traira2NvvcikQgGgwHt7e0ICwvzasrtcFDBuXzu7xq+w6J9c/HUYS1WnrQX396xUIKwvGn46s73ERwQTJ/b20WCHcEeEhJCz1WIZkutVver2QoODh6SYbK3wMXmaLRAXWHgooPi8/nQ6XQ4ffo0AgICMH78+Msm14gcbv/www9ITk52ibixbds2rF+/Hrt378bVV1/d7+N8UaA6OjrQ2tqKiIgIFBYW0pGNwWDATz/9RGMLDAYDBAKBHatssAP6geCrxWe4SRLvnnsbf/76WezaZcB11b1/f/6/4tuiq5bh6V+vtxPfchkn359mi9g6dXZ2ora2lmYrsbstbyfZDgZfEyScXWO0QF3mEAgEPqE6E6jVaur7V1BQYDe2+CWDTRkHgNzcXLuEWGewWq147LHHcPToURw9enRQb8CB6ODuQq1Wo6KiAnw+H9HR0YiLi4Ofnx89+xMIBBAIBEhMTKRdq8lkorvvjo4O6HQ6+Pn50UWM2PxcSVEFBIMVEZPVhCcOrcSpc5/iP9sMyOju/dmH44BH7hLjf2/agttz7nD7uYcCV6IjyL+ho9s3IWSQsy29Xt8nZ8uX8KbdWX9wfO9VKpVHOqhfMkZEgSL/iL4iSbBJBGlpaaiurr5silNXVxdkMhmCgoKQn5+Purq6QRccErBnNBrx7bffuvSl8EYHZTAYUFlZCZ1OR8kaFRUVaG5uhtlspu95Q0MDjEYjeDwe/ffm8XgIDQ1FWFgY3ZWzc5eampqg1WrBMIydE7hjQNyVpoPq0HXgvg9uR8TFCpzcpbcT3/7pej52XhOGT4s+RV5MHod33ANP4zb6y1ayWCyURdjU1AS9Xo/Tp09DLBbbdVvecDjnooNyhK/jQ4YDV9arGQSEZu4tGAwGVFVVQa1WU1siAJDJZF67hjN4Q3BMuhA/Pz+7MeRgheSnn37CXXfdhZdffhlbtmxx+XpDKVBEzNzW1oaMjAxER0eDYRhYLBYkJSWhs7MT3d3dqKyshF6vp35zJF2UFBhCpmAHPpJCxL5HZ3HcYrEYQUFBMBqNMBqNXj3X8jX6K1A/tv+Ie/fchvnfKvDiv83wY4tv54vRPlGKb4o+QbRk4G7aV/A2DZzP5yMsLAxhYWEwmUwwmUzIy8uDXq+HWq3uV7MVHBzsUvw6G74uUI7/ppfbpslVjIgC5e0Oim1LlJGRgbFjx3L6YRlIqzQY9Ho9ZDIZDAYDsrKy+sysB2IJfvrpp1ixYgVef/113Hmne15rnrD4GIZBU1MT6urqkJiYiGnTplGWIfmCCoVCiMViNDU1ISIiAmlpabDZbFCpVFCr1ZDL5TAYDAgICEBISAhdcIRCIRiGoUULAH3dYrGYanjIfRPhaUtLC6qrq6mejjwfWcQ8LVpce/F9Wv4J/nhgOTbv02Pupd6/rwoHbl0iwdTJt+K92W/Z6ZucwZdF2pc6JVJA2JotNtiarY6ODhq/7hhZ0l/H4usRn2MBJJ+fy2XT5CpGRIEiGCpJgm1LlJaWNqgtka9Aiog7bCWTyYTq6mp0d3cPSBnvr9O5cOECHn/8cezfvx9Tpkxx+57d7aA6Ojogk8kQERGBqVOngs/nw2azwWKx0C8iKbYMw2Ds2LF2i4xYLO4jEiVRE21tbfRMghQXQpwAYOd8T/6X5C61trYiIyMDEomEPifJXWI/pyfxFb4E+be2MTZsOP489pzaii+365HPEt9+nQbce58IT/7PeizN/71Ln21fbsa4KFD9wV3NFnskLBQKOXcy12q1Pj9XGw6MiAJFvmiejvisVivq6+shl8vdsiXyFdzRQlmtVtTV1aG5uRmpqanIzs52y+tPo9Hg0Ucfxf3334+ff/7ZYxcOV0kShGgiEAgwadIkiEQiWpjI81gsFlRXV0OpVCIzMxMRERGDPi9ZcNhnEmazmRYtNm05KCgIISEh9CyKnDsplUpoNBoaue3v74/w8HBERETYnWuRouX4nOxFjOuzAh6PB41Jg9//6350XjyJku16xPbcGhgAb033wys3BuK9O/fgmuRrOL23/jCcBcoZBtJsaTQaqFQqNDU1wWg0wmazQSAQQCQS+USz5czJ/HI593YHI6JAEbi7i2fbEsXHx7tlS+TLkY0rBYp97wkJCS7fO9FBAT0Oxvfccw/y8/Mxffr0IVlEDTbiYxMgsrOzERIS0qcwMQxDNwquGOsOBoFAgIiICLsCZ7Va7dhflZWVsFgsdKSakpKCgIAA+Pv7Ox0PAkBISAhCQ0PpgtTfzpttqGqxWHy66alV1mLe7jmYdqYZH/2rV3xr9AcevkOIUwVjcOTez5EamurW816uIz5vPTdbs8XO2aqrq4PRaITZbO6j2WITMjzVbI0EDRQwwgqUq2AYBs3NzaitrfXIlogIRn0lGByoQDEMg7a2NlRVVSEqKsrte/f396c6optuuglPPPEEHn74YZ8tRBaLBTU1NWhvb6ejRzJiYxf5trY21NTUIDY2FlOnTvXZ+MTf3x+hoaEIDQ2F1Wql5IzU1FTw+XyoVCr89NNPMJvNfdhfA5ExSDcG9BZrkrnU3d2Njo4OWK1WdHZ22o0IvUHGOK84j9feex5PH9LiD6d6xbetgcDtiySIyrsKX92xE0EB7o+IrtQRnzcQGhpqN2buj4BDuix3NFvOOqgrjWIOjJAC5eoXnG1LFB4ejoKCAo+6Bi4KlLNRZXd3NyoqKhAYGIj8/Hw72x9XwePxcPjwYRQUFODDDz/EtGnTvHHLfcAwDBobG1FfX4+kpCSnBAg/Pz8olUrIZDIEBgZi8uTJXqEAu3Jvzc3NqKurQ0JCAr03AIiLi6OPMRgMQyJjCIVCiEQixMTEQCwWg2EYREVF0bFjS0tLH4uf4OBgl0XGDMPgnbNbsfHcn7BntxHX9kb64FwccPsiMe696iGsveZZj5JvuWCO+Wpj5CnJyJ3ndyyAbM2W4+eIEDIcNVvk391RozfaQV2hIIug44eHbUs0efJkjxZ3Al9bKjk6mqvVashkMvB4PIwbN87jw1KTyYSnn34ap06dwvHjxz227h8IDMOgo6MDlZWViIyM7JcAYTAYIJPJYLVakZOTw9kBsEKhoFEiBQUF/W4yeDwejVAfChnDZrOBYRhoNBpIJBLw+XxEREQgMjKSLqDss7K6ujrqAs5ewIKCguw+0yarCY8fXIHT5z/DqW1GpLPEt3vHASvuEuPNm7fi1uzbPX6vfGFzxBVcEQEPBa6m6bI/R2xxvKNmi2j0yFjYYDDYWaeNFqjLGM4iN8iHhyxI3rQl4ioSQ6/XU+2PVCodkpNxW1sbioqKEBwcjB07dvikOFmtVpw5cwZCoXBAAkRNTQ0UCgUyMjLsWFS+BGEEWq3WPoxAd+AuGUMgEKCzsxMhISG00Dl2Ws5ExuyzMrlcbreAmQQmrDn2MMZcqsbJXXoEm3ruw8YD1v1OgN1Xh2H/vE8xIXqCR6+R4HJ2A+ciC2ooRBi2ZovAZrNBp9NR6rtCoUBtbS1efPFFREREID4+HmVlZZBKpS6/tsOHD2PVqlWwWq1YunQp1q5da/fzXbt2YePGjQB6Pq9btmzBxIkTPX5d7mJEFCg2iBbKZDJRQW1OTo6dVcpQ4etIDACQy+Wor6+nwtWhLBRKpRLHjx/Htddei4cffhhNTU1evFPQbshgMCAvL69fAgQJcExOToZUKuVk8SPSgc7OTjuxtTfhjIyh0+lQXl4OpVKJoKAgaLVa/PDDD30O0R3JGKTLBOBUZFxSX4LFnxZhwbdKvPiVlYpvVULg3ntF6M7LxtGifyE6cOjiWy7ylHwFX8ex+6IA+vn50c+FRqNBREQEwsLC8O677+KNN96ATqfD+vXrUVFRgXnz5mHNmjWD3uMjjzyCI0eOIDExEYWFhZgzZw7Gjh1LH5OWlobjx48jPDwchw4dwrJly1BcXOzV1zUQRkyBYlvUlJWVgWEYSKVSn7TFvhrxEbp7XV0dwsLCUFBQMORF/KOPPsLq1atx4cIF3H333dBoNF7r/hwJECqVCkFBQX0IEO3t7TQ63pcECDYYhqFFPikpCYWFhZwstjabDfX19WhpaUF6errd5oLskNVqNTU+dSRjBAcH0/fH8Vzr0/JP8OSXf8DfPtLj7p97r1kZAcxZJMb4rOvwWM5q1FyqQaOgsc/Y0d3P0mgH1T98LdQlz0+YpYGBgZg7dy5mzZoFwLXzwZKSEmRmZiI9PR0AUFRUhP3799sVqBkzZtD/P336dDQ2Nnr5lQyMEVOgCI25q6sLycnJPk2e9HaBYjsqxMfHIzs7G1qtdkiLg81mw3PPPYe9e/fiiy++oCMpb3jm2Ww2NDY2oqGhwY4AUV1djbKyMgQHB1OWXGVlJUQiER35cYGuri5UVlbSIs9VPAMh4MTGxqKwsNDpITrZIbtKxggMDERgUCDeKN6Ij4r/jn9v12NyS+9zfpUOzJsXgLXX9ohvSRE2mUx07Nje3g6dTmd3MO+KyPhy7qB8fQbFdQFUqVR2m21X1oampiYkJSXRPycmJg7YHW3btg033nijh3fsGUZMgaqtrUVUVBTEYrHPF0JvWSoRViGbUCAQCCgleSjYsGEDTp48ie+//97ucHYogYjs+42Ojsa0adNoQq/FYsGkSZOgUqnQ3d2N6upq2h1IJBI7erWvFj2dTkfHuuPHj6dkBV9Dq9WioqLCTnzsKgYjY7R0tWDpZ/fCVHkRJf80IoYlvv3rVX54+XoRXvnVX3DnxDthtVrpv62fnx/CwsIQHh5uJzLuL2+J3W2RhdHXTua+7M58XUB8Xby9weJzJ4n6m2++wbZt2/Ddd9+5d6NDxIgpULm5ubDZbGhoaOAktFCv1w/pOQaijA+liFRWVuKZZ57B22+/jSeffLLPGMLTDkqlUqG8vBwikQj5+fkQCoV9zpl4PB66u7vR2dmJ3NxcREZGwmq10p18fX097QzJTp5QtoeymJBRI7F5csV5whswm82orq6GSqXy+jhZKBRCrpdj0b/vwYzTLfi/T4wIYIlvf3+7AN9NiMQb+a8iJzwHbW1tdo4GNpvNKRmDvOdkcSXaHWci44CAAGq6OhQRtzP4eoH3Nc0c8K2I2ZElqFQq3SZJJSYmoqGhgf65sbER8fHxfR538eJFLF26FIcOHeKMtEQwYgoU2+6I7Ax9haGw+DQaDSoqKgCgX8q4pyPEI0eOYMmSJXj22Wf7XSzdLX6E/WY0GpGdnY3g4GCnBIimpiY68mOf9/D5/D4hdIShRqxj1Go1APQpWoPN+NnXTU5ORmZmJidnJuzrpqSk+MSz8VjdMSz+qAjrDmrxSHGv+LYlCLh1gRAR46bh+3kfQsKX2DljqNVq2Gw2mlbrSMZwJjK4RB6MAAAgAElEQVSWSCQIDAzEmDFj7ETGHR0d6O7uxqVLl2A2myEUCu1GhEMRGfu6QPl6xOdrjZjj/TuO+FxBYWEhZDIZampqkJCQgA8++AC7d++2e0x9fT3uuOMO7Ny5E1lZWV65d3cwYgoUgbcjN5zBkwJCzsi0Wi2ysrIG3A150kHt2LED69evx/vvv49rrunfa83VvCPih9fR0QGpVIrIyEinDhCdnZ2oqqpCZGQkCgsLXTo4Zrs5ENhsNlq0mpub6UIbGBiIkJAQuiiS8ySSc0XSdrnyvuvu7oZMJkN4eLhPrsswDLae/j+8dnQ9dr+vx/+wxLdn44BbF4qwYMYjePq3vcm3zt5LV8gY7FEeu9tiGAZCoRBhYWHQ6XTIzc3tExI4VJExFx3UlRRO6a55NNCzTm3evBmzZs2C1WrF4sWLMW7cOGzduhUAsHz5crzwwgvo7OzEww8/TH/nzJkzXr//fu+Rsyv9QuCr0EI23KGZkzEQoTm7Qhl3p0AZDAYcPnwYsbGxOHbsGFJTUwd8/GDXJgSI+vp6pKSk9OsAQcTDAQEBmDhx4pDP/fz8/PoYdZKFVqVSUXsnk8lEv6wpKSmIioripDixhcXjxo3zip7OESarCas/X44z5z7Hf97T24lv94wH/nCnGG/d+i5uzb5twOfxhIxBHk/+HU0mExobGyEUCun3iXTDbPNcogHTaDR9RMZsobFjsbicC5Svz88cQTpfTzB79mzMnj3b7u+WL19O//+7776Ld999d0j3NxSMmAI1VEdzd+BKB8V2SE9JSYFUKnX5C+lqgWpubsbcuXORkZGB7du3u/Tc/cGRAEHMZx0dIIxGI6qqqmAwGCCVSn3qsMxeaKOjo1FdXQ2FQkFps2ShJd0B6bRCQkK8ZplE3OLb2tqol6Av0KptxfzdtyHmggz/2d0rvrXygGdmCfDB1WH44t7PMSHGM/Gtq84YOp0ONpsNZrMZ0dHRiI2N7Zf2Tpwm+hMZazQaNDc3U4d4iURiR5Tx9YjPlz5/vtwUOd47KU6XK+V/IIyYAkXARQc1UIEi+pva2lrExcW55ZBO4EqBOnPmDObOnYslS5bgqaeecuv5HaFUKlFeXg6xWNwvAcJms6G2thbt7e199D2+BHFtb2xs7HPew+4OSGqqQqGgkfAikYgWLHfPTIgpb3V1NeLj4zF16lSfLXjnW89j3u5bsfC4Euu/stiJb+fdJ4Z6Yi5OzPsEURLvF0e2M4ZGo6Gfg+joaOh0OjQ2Nto5Yzh6x/Xn+E4em5CQAKDv2FGhUECv1+PixYt2I0KhUOiVz9XlbETrSJDQ6/WcMVK5xogpUOxUXV93UM4KCNuIlpyLDCVbaSAYjUZs27YNf/nLX3DLLbd4dA2g54NfUVEBs9mM3NxcBAUF9SlMQK+rRUJCgk8Xakd0dHS4dL7FjkQg3QE5MyEjraamJhgMBgiFQrui5cxZWq1Wo6KiAmKxGFOmTPE6g42NfT9/hMcOPIQtH+lxF0t8K4voSb69espdeHX2Jgj8faflYudvkSgURzjGlDiSMYibO5/P75eMQSQHsbGxUKlUaG1tRXJyMu3g5HI5jEYjBAJBn3OtX1L34KoP31CefyQ4mQMjqEAReBI97i4cvywKhYIuaJMmTbIzefQmrFYr1q1bh4sXL+KLL77w+HkYhkF5eTm6urro2IosJuxoaWKwS5zfuRK8El0Rn89HXl6eR+8nj8eDSCSibuIEZKSlUqnQ0tICnU4HgUCAkJAQiMVidHd3U8aiL8eXNsaGF48+i70n38aR7XpMYolv/50B3H+vGOuufxlLpizz2T2wu8SkpKQB7af6I7aQrqirqwt1dXVOyRgCgaCP4zuRGwgEAkRFRSEqKsqpyLijo6OPyNiZ+zeX8PWIb6Q4mQMjqEANxw5Lo9FAJpPBZrMhNzfXq35/jlAoFFiwYAFMJhN27drl0XMQnZhWq7Xzw3MkQJDX5e/v73GB8AQktl6tVvvMpsqZ2avRaER1dTWqq6shFothtVpRXl5u12l5MzFVZVRh6Uf3QnWxGCU79Hbi2zd/5YfXfheEnXM/wsykmV65njNotVqqa/O0S3SXjEG6oa6uLroJIJ8/oHdEOJjIuKmpCRqNBoB9QCCbmehLDIeLxGgHdYXBlyp4g8EAvV6PS5cuQSqVciIMvemmmzB9+nRs3LjR7S8hO+QwJiYGISEhGDNmDKWNk46JFAiNRoOsrCzOvhSEOdjU1ORSbL03QbrEqKgozJw5ky48jhEYGo3GLu+HMN/cLVrV3dW4Z9dNuLqkBf/61GQnvl1+lxBnpyTg6H0HkBKa4u2XCqBnca2pqUFXVxeysrK8vgnoj4xhMBjQ0NCAqqoq6nJPNgH9xZSQ+yVkjIFExsTv0Wq1QiwWw2QyoaOjg55reROjIz7vYUQWKHJG5O3dlNlsRk1NDTo6OiAQCFBQUOCzDyohJhw5cgQXL17Evn376C7VHZDxo0QioQQIhUJBDWmDg4PB4/FQX1+P1tZWpKWlIScnhzPBKzlniomJ4cxIFui1ReLxeE67xP7i4sl4sKGhge7ig4KC7LRa/b2Gb2qPYvG+eXjuCy0eLukdQzcHAXcslmBM3kx8fef7CAzwPoWdnJFWV1cjISEBhYWFnG0CdDodysrKIBKJMGPGDDoqNpvNVPvmGFPiKhmDiIxJ0SLZWz/99BMUCgUaGxthNBrp2SN5XldSbfvD6IjPexgxBcpZJpS3PkTEoZpERUyfPh1nz571aavv5+eH119/HVu3bsWePXvcLk5kAbZYLH0IEFlZWejq6oJcLqdnLkFBQYiPj6e7W18XCuKoERAQwKmR7FBskfz9/ftk+DjmNmk0GthsNruiFRQUhL+f24LXjz6Pve8b8Jva3uc8HQ/csVCMRTNX4olrnvEo+XYwkOgPgUDAWWoxADvmZ3Z2dp9FViAQ9OsyMhQyhkAggFAoRHp6Oj2TZp9rkVRbPp/fpxi60hFzMeJjn/eOFqgrBMQlgVDNh7roDUQZJ2xBXzC8GIbBhg0b0NLSghMnTiAxMdHl3yXC4K6uLuoA4UiACAwMhNFoRHNzM6Kjo5GSkkIZb47WQ0Q8O1S/PAKTyYSqqipotVpIpVLORhfsmPekpCSv2SL1Rx7QarU9nYG8AS/+5xnU1n6PUzuMSFP0/u7uCcCqOyV469Z3MSfr1iHfiyOsVitqa2vR0dExqHuJt9HV1YWKigqMGTPGraiToZIxiE6PxL6QwuXv7+9UZEyKYX19PRUZO5rnOn7uLRaLT2nfFoulT5quMw+9KwEjqkARCASCIWmh2LHlxNLGsRD5is4ul8vR0tKCnJwcvPvuuy4LQ9ldHhEGOyNAaLVaOtpiO36LRCK7RWEgvzxPiha5v+bmZk7HiEDPF7yiomLQmHdvgZyXqGwqPPyvB5B8qQ7Fe40IYolv187iY8/0YLx51SZMEOSho6MDISEhXtvwkM9vXFwcZ1lYQM8GpKKiAhaLBRMnTvQKwcZVMoZarYbFYqFBf6SIOTII2ea5ISEhCA0NtRMZk3MtIjImHRwpWiaTyaeEqNER3xUKdgflafEgixmJLe/vC+aL2PeTJ09i/vz5eP7553Hfffe5tFgxDIPW1lZUV1cjNjYW06dPp27WbAIE6azUajUyMzMH3U33t5MlZzCuFi322UdsbCyn50xGoxGVlZUwGo10zMkFGIbBV5e+wvKDC/D773T409Fe8a1SCMy7XwzdxHH4fu4+SCCBWq1Gd3c36urqYDKZaGdARoTuiFeJto3H43E6OmUb6GZkZNhR+30BNhkjODgYpaWliImJQVJSEhVtt7W1Qa/Xw9/f3ykZoz/HdzJGdBQZazQadHZ2or29HZ2dnfRx5HmHYp7LxmiBusLhSQdFOgur1epSRLy3O6gdO3bg2WefxTvvvIMbbrgBpaWlgz6/QqFAeXk5goKCKFXYmQNEQ0MDmpubh8yQI7Y2zooWof+yi1ZAQAC6uroQGBjI+dlHf6m2voZarcbfjv8fNv/0Gv6+z4A7S3t/VhEJ3LpYgl8X3I2NN/6Vim+Jkzhg3xkolUrqiiEUCu2snBwXQ5vNhrq6OrS2ttLRLldQq9UoKytDaGgop8a95DW3tbXZnXEFBgbaTR7YozxCbmFHvrDPn9idFrH4AkBFxjExMTCbzUhKSgKfz7c7fyQiY7bjuyci48HCCq8kjBaoQUB22RqNxi3KuDcLVGdnJ3bs2IGvvvoK2dnZAAa2O9LpdKioqLAzLnXmANHa2oqamhqMGTPGZ52Ls6Kl1+tRXl4OhUKBwMBA6HQ6XLhwwWW2m6dgswJJt8bVaMtsNkNWKcOmc6/jRPVnOLrdgImtvT//MgO4f74If7r+FSzOf7Df53FG0yauGKR7bW5uhl6vp0avPB4PbW1t9N+Zq9fMdqBwZVPnTZDNWUxMzKAjTE/JGOQzyh4Rkm6KkDEiIyMRGRnZR2Ss0WioyJiMfEnhGkxkPFqgrlCw7Y4GCxQkbC7iLTd27Fi3djruOJr3h87OTixYsAC33HILjh071uf5HQsU0Sl1d3cjKysLERERTh0gFAoFZDIZgoODfW7VwwYxyCV09ZiYGPqesuM0yHkBYJ8BNZSiRYSnAQEBnHZrZLRVVlOGTRUbYCm7iNM79IjW/ffnAN74lR9enxWEXXP34VeJv3L7GmxXDHY6MgmRJISg1tZWdHV19REY+6J7JLq6wRwovA2z2YzKykrodDqMHz/eY1d5T8gYPB4PLS0tiI2NRWBgoNP4mYFExhqNBk1NTdBqtWAYps+IkJyNOtLYR0d8VxgG6qCcUcY92XHy+XwYjUaP7/HSpUu46667cNttt+HBB/vuqNkFin3PZEwHoA8BQqfTobKyEjabDWPHjvVJJIQzECEwu1tzfE/7i9NgFy3ieu1O0WKn2nIpLgZ6TXZVfBWeuPAIflvSjk2fGiH4b2CxgQ/8/i4hfpiSiG/mH0ByaLJXrsse2zo6rBOBsUqlQnt7O93Bs8eDQ3HFIN0xn8+nujquQIpiSkqKT0g2/ZExiLOKVquFWCxGW1sbFApFH13VQGQMd0TGRqMRnZ2dEIlEkEgkMJlMnJ0lcg3eIL50vjWt4xhWqxUWiwVqtRq1tbWYMKE3moDQjMkimpKSMqRZeVtbG5RKJaRSqdu/W1VVhV//+tfYuHEj5s+f7/QxDQ0NsNlsEAqFqKqqwpgxY5CamtonzpvH49mNWriMPAd6dvFECJyZmTnkbo1dtFQqFWVRsR0cgoOD4efnZ5dqGxcXx9ku3mQy0ZThFkkzHjmwGOsPaPHQ6d6vkzwYuGORBAkTr8HWO/7pNfFtd3c3KioqEBUVhdTUVJc6TvKdIIWLuGI4arUGei72uR7p3rmCwWBAWVkZ+Hw+srKyOJsIAD1sSJlMhuTkZMTHx9PPGDumRK1WU79A8jkNDAykG0SbzdbHH5RMO8jmEuh15T9//jzGjBmDPXv2YN++fTAYDLj//vuRn5+PyZMnIyMjw6UNxuHDh7Fq1SpYrVYsXboUa9eutfs5wzBYtWoVDh48CIlEgh07diA/P98bb5szOP1yjsgCpdfrUVpaivz8fDAMg87OTshkMoSFhSEjI8MrH/Curi60trYiNzfX5d9hGAabNm3CpEmTkJKSMmC4oEwmg1wuR3R0NL1nx8LEMAy1COJ6kTYYDDQXKisry6fnD45FS6FQwGAwQCQSIT4+njpi+JodyLZkSk9Px0c1e/DmNy/hg516/Lqu93Gn44E7FomxeOYqPHH1Oq/8mxiNRshkMpjNZmRnZw9Zh0NcMdhFC3A+ciXnPdHR0XSTxAUYhkFDQwPkcjnnxA9ClyekKVc6RTYZg7ynA5ExHIMIiaXTuXPnUFBQQB83Y8YMvPrqqzh//jzOnz+PHTt2DMpItVqtyMrKwpEjR5CYmIjCwkLs2bMHY8eOpY85ePAg3nrrLRw8eBDFxcVYtWoViouLPX/TBobTL8GIGvE5hhayKeMTJ070qrjOXZq5VqvFgw8+iMbGRsybN69fGi5R/RsMBkRFRSE3N9cpAYKM1Li2CGIH+GVkZCAqKsrnRZGMqAQCAbq6uiCRSJCXlwebzWY3HmQ7OAz1TMsRJGI+KioKE/MnYvUXy3HxwiGc3KZHKkt8uzMPeOwOCTbf9h5ulnoehUJANiGNjY3IyMjwGiPRmSsGeyPQ3NyM8vJy6PV68Hg8uhGwWq2cFCjCDAwLC0NhYSFnn28i26ipqUF6erqdn+BgcJeMwSZOkDPt6upqSCQSKjImRc5ZMu5AKCkpQWZmJg33LCoqwv79++0K1P79+7FgwQLweDxMnz4dCoUCzc3NHlmqeYoRVaAICE23srLSZ7EJ7rD4WlpaMGfOHOTl5eHf//6303kycVggY0OiH3IkQCiVSshkMkgkEs7JAOSL6+sAP0ewHREyMzPtdtKDnWkNtWgZDAZUVFTAZrNhwoQJUNlUuPkfv0XC+Up8/4HBXnw7W4CPZ0Tgi/mfY1z0uCG/buKjGBERwckmhH1W1dzcDIVCgezsbAQGBkKj0dAzIKvVStluZKTlrbGb1WqlyclcMwPJKJH4bHpD0O0qGcNgMMBkMiEsLAx6vR719fUwGo34wx/+gIyMDLev29TUhKSkJPrnxMTEPt2Rs8c0NTWNFihfwWQyobS0FCqVCgEBAZgyZYrPruUqi+/SpUtQq9V46KGHsHDhwj67X6LlkMvl1GEB6Om4urq6cPr0aap76e7uhs1mQ05ODmeiU6BXvMw1K5BdFInB6UBF0VUihitFi60rIkSEcy3nMG/3rVh6TIVnWeJbhagn+dYwcTyOz/sYkeKhjaJMJhMqKythMBiojIAraLValJWVQSKR2C3SISEh1G6HYRjodDqoVCp0dHSgpqYGZrOZdgVsgbE7IKP4+Ph4FBQUcDauZo/KuRglsskYMTExqKysBACMHTsWZrMZu3btwr59+1BXV4esrCxkZWVh7969mDt3rsvXcHa04/h+uvIYX2NEFSg/Pz9EREQgNzcXJ0+e9Om1XOmg3nnnHbz44os4cuQIFi1aZPczhmHQ0tKC6upq6vPHJkAIhUJMmzYNBoMBlZWVaGtrg0QigcViQVlZGV0IQkJCfJY4Sq5tMpk4dWIAelNtJRLJkIriYEWrubmZdkikaNlsNjQ3N9sxEvde+gBPfLECf9+rx+1lvc9fHgnMWSLGtQVF2HDDm0NKvmW7MaSnp9vR9H0NdgxHdnb2gGxI4rYQGBhox3YjDg5sVwyRSGTHIHTmisG2R+LS/QLoKcilpaUIDg7mdJQI9BBeysvLkZCQgKysLPB4PFy6dAkHDhzAnDlz8Mwzz0CpVOL8+fOorq5267kTExPR0NBA/9zY2NjHz8+Vx/gaI6pACQQCqsgHfJsJRYqJM5hMJjz22GP49ttvcfToUWRmZtr9nDCxyJdCIBD0OWdinz0kJSVh/Pjx9LWYzWZKGGhra4NOp6OiTfLfUGxXyEitvb29D43Z1yDdg06nQ3Z2tk9GPP0VLZINRXQora2tUGlU2C7biiOXPsLR9/SY0Nb7PIcygQfuFWP97zZi4eQlQ7onomni2o0B6PXtI52LJ6NbHo8HiURCI92BXlcMtj2WwWCwi74wGAyQy+XIzMz0uT0SG2wXipycHE7lCRaLhX7GiV+h2WzGG2+8gcOHD2PLli2UTRcTE4NZs2a5fY3CwkLIZDI6ffjggw+we/duu8fMmTMHmzdvRlFREYqLixEaGsrpeA8YYQXKWeSGr4xBB1r8P/74Y7S3t+PEiRN2iyCJMmcYZkAHCOKGEB0d7XSxYivYCUwmEy1axGmA2OOQ/wbzdGM7fickJHB6zuTIkMvNzeW0eyBnXNnZ2ZRC3a3vxqK998D443mc/qceUSzx7esz/fDG9UHYefeHuDrlao+vbTabqbs7112q0WhEeXk5GIbxSefCdsVgFx+j0Yj29nZUVlaCYRj4+/ujoaGBaot8ORUAejYDZWVliIqK4tRIF+h1eU9MTKS2Yz/++CNWrlyJG2+8Ed9++61XRuh8Ph+bN2/GrFmzYLVasXjxYowbNw5bt24FACxfvhyzZ8/GwYMHkZmZCYlEgu3btw/5uu5iRNHMgZ6FmmEYnD9/3it03IHwn//8BzNmzKB//uGHH3D//ffj4MGDdhEZpCsgYtLw8HCqjWATIFQqFWQyGUQiETIyMoa8YLB3ryqVilKzHYsWAOo+ERISgvT0dJ87frPBTrV1VdvjDRAiSlVVFRISEpCYmEgXq8ruStzz/k34n+J2/HW/vfh26d1C/JAXhz/P3IxAS2Cf/CdXosfZm4HU1FSMGTOG0zOXhoYGNDU1ITMz086dwtfozz+PWAQRd3KiK2KPByUSyZCKCZuAwfVmwGKxoKKighoXi0QimEwmvP766/j666+xZcsWTJo0ibP7GQaM0szZIB2Ur0EKzMcff4xVq1bhL3/5Cy1OxPpHLpfTroD8PdsBgpz1GI1Gr2qKHO1xiKcb0RLV19fDYDDQALbU1FRER0dzVpyIp6Cfn5/TVFtfglgjCYXCPmdcX9V8hQf3zccLB7T4/Rl78e1tiyVInvhrfHPHPyER9Lpik/ynlpYWyGQyWrTYpAFStNRqNTX55SL+gw3SPYSHh3MqTwAG9s8LCAjoMxVgu2LU1NRAq9XaRb8TmrYrRYuc93BNwAB6NmAVFRV2WsUffvgBq1atwi233IITJ05w+hn4JWHEdlBlZWWIjo72KSOnuLgYBQUF2LVrF1566SV8+OGHmDRpkp1rRXx8PJKTk506QLBHS1xpiggsFgu9Nrk/0mmRQDY2y82bXyB2qq1UKuU0SI9oTQiFmn32wDAMNhf/BX/55mXs3anHNSzxbXECcOdCMR68+o94fOZTg/47sYsW6QqsViv9DBCNDVdnTeTcQ6PRcM4CJdfWarXIyckZEiuR+NqxnUaIlRApXGxXDIvFAplMBr1ej9zcXE43QWazGRUVFTCbzcjJyYFIJILRaMRrr72GY8eOYevWrcjLy+PsfoYZo04SQM+Hwmazoaqqyi7GwBc4ceIEDh8+jIULF9LdH5kxh4aGIiMjgxIg2IUJAGVrJSYmIiEhgVN1vlwuR319PZKSkhAfH9/n2mwaMfnParUiMDDQrmi5u7g6ptomJCRwOtZqaWlBbW2t02sbLAas3P8gfrpwGPu36ZCi7P3df0wEHr9dgr/dth03SW/26NrszC6hUEhdHAbqtLwB4pNYXV3dx66HC7D983zldMIO1yRO4uRsS6vVIj4+HqmpqZx2KeSMjT2+PX/+PB599FHcfvvtWLNmzUjrmkYLFNBboOrq6uDv7+9WXLo7qKqqwi233IKrr74aW7dupQQIHo+HrKwsSCSSPoWJx+NRAkRERATnX5ru7m5q+ZSWlubWtRmGsesIVCqVWyJYdqot12dc7JEa2TSw0axpxrxdc5ByoQY79ugR+F+fYYsf8ORsAT6dEYm98z/H2KixTp59YBBdkVgshlQq7XNtZ52WzWYb8mYA6HUlCQgIgFQq5dTDbjj984ge0mKxICoqiopiyfvK3gx4+3NoNptRXl5uZ5FkNBrx5z//Gd999x3efvttjB8/3qvXvEwwWqCAnpbearXSALG0tDSvX+Pbb7/F/PnzsWjRIqxYsQLt7e1Qq9XIyspCWFiYUwKEWq2GTCaDQCBAZmYmp6MGnU4HmUwGAJBKpV4jjpDFValU0nELcSMni2tAQACqqqpgMpmQlZXF6WiJMOQ0Gk2/lPWzzWcxb8+t+P03aqw7aqHfom4RUHS/GOaJE/DPoo8RIXbPHJUcyHd3dw+qK3IEu2iRMxh3ihabiEBIOVxhOP3z2B26s1Rf4uDAfl8tFkufouVpMSXdYlpaGmJjY8Hj8XD27FmsXr0ad911Fx5//HFO5QO/MIwWKKC3QLW3t0OhUHjkNt4fGIbBzz//jDNnziA5ORlisRgmkwlSqZSOEh2tiYxGI6qqqqDT6SCVSjnXW5CzHq5czknCrlKphFwuh1arhUgkQnh4OEJDQ4cc9+AK2ILXgRhyH/y0G09+sRLvfKjHbSzxbVkUMGexGNcVzsOfb3gTfD/XFxX2SC0xMRGJiYleGWu5WrSIu3xsbCxSUlI4pVCz/fPS09M5JWAQg2iRSOS0U+0PZJzNZhCaTCaIxeI+AuP+YDKZKF0/JycHAQEBMBgM2LBhA06dOoW3337bzgNvhGKUxccGn893O/Z9IBiNRqxcuRI//vgjPvroI9TW1sLf3x9ZWVmIjY3tM85j72K5jh1nL9DJycnIzMzk7NqkKMvlcowZMwbJyclgGIYuAHV1dTTugU1391awHsloIiajznasVpsVz331FPYXv4dv3tNjPEt8e1AKLJwnxvOzXsMDkxb1+d2BwB6pedsSirDX2F0gO1NILpejvb0dNpsNERER8PPzg0KhQEhIiM937cPpn8fu2DyJAWG7YpBNJhEYq1QqKJVKNDQ0wGg0QiQS2XVaIpGIbkbYxrJnzpzB6tWrUVRUhG+++WYkd02DYsR1UCRyQ6PRoLq62issmZaWFhQVFSEiIgIrVqxAXFwcMjIy0NTUBD6fTz/YZIFli13Z2houQFy3IyIikJaWxumXQ6PRUPf4zMzMAXedJKOInL1otVqqe/HEwomd0UQMTp1BaVRi0d65MF08i4926BD53+BlBsCr1/jjr9cFYefcj3FV4lUuv27Cxuzs7KRjXq7AJr2kp6fbnbmw2YOk0yILrLc+F2z/vKSkJE4JGBqNBqWlpZx0bGyJBpkQKJVK+Pn5ITw8HKdPn8akSZPwySef4OzZs3j77bepr6a3sXjxYhw4cAAxMTH46aefnN4rhzlPrmJ0xAf0FiiDwYBLly55xTB27ty5iIqKwpIlS5CTkwOxWAybzUbdpglZgM/no6urC5GRkXZNbG8AACAASURBVJwTAbRaLWQyGfz8/CCVSjmn03oj1ZZt4aRSqaDT6SAQCOho0JmFE9uBYrA4ClmXDPe8fxOuL27Hm5+ZqPhWzwcevEeEn/OT8MH8A0gMcZ1YQ4S+8fHxnG9GNBoN9WXMyMgY8EyKzcpkFy22p6M7RYvtn0co1FzBZrNRiUROTo5P0gr6A9vAOCMjA6GhoWhubsbGjRtRUlIClUoFqVSKKVOm4K677sJVV7m+0XEVJ06cQFBQEBYsWOC0QHGc8+QqRkd8gH0m1FBHfO+//z527NiBl19+2Y4AQc6ZQkNDMXXqVLqTs1qtCAoKgkKhwLlz5xAcHOzzcxdSHEhMB9cH4uxUW2J46SnctXDi8Xhoa2tDdHT0oKLTI9VHsOzj+/Di51osO9u7L2v6r/g2bdJv8e/bd1Dx7WAg0ef+/v6cxp4A9iM1V+Jk2O7ZxAyUXbTYMRqDFa3BiAi+hlKpRFlZGWJiYjz2DfQURqORMhOJwFqv1+Odd95BbW0tPv30U2RnZ6OzsxPnz5/3GXPxmmuuQW1tbb8//yXkPLmKEVegCAYycx0MJpMJjz76KA4dOoTt27dj6tSpAPo6QJAMJ41GA6lUajfaIYmlKpUKtbW1fUZYoaGhEIvFHi/oNpsNTU1NaGxs9EpxcBeEsh4eHu5Tc9OAgABERUXZGdYSY1WTyQShUEhZlM4snBiGwVun3sSmY6/g43/qMbO+97lPJQJ3PiDGsqv/iMdnrnXp/SO7d8KQ4zL6HOjV1yQmJg7JEcGToiUUCtHY2DgsDhhWqxWVlZVQq9UYP348pxEkbA2dVCqln8WTJ09izZo1WLBgAV5//XW6QYqMjMR1113H2f054peQ8+QqRlyBIl9YT764ZJ6/ZMkS6HQ6FBcXIzo62ikBor6+Hq2trUhNTUVOTk6f6zlLLO3PhdxxhDUYiJYqMjKSc+drvV5PrXzGjx/vU69DRzjLaALszwfYh9p+AX7466U/o7biW5x6T49klvh2xyRgzW0SbLl9B2Zn3uTS9cl5CzuGgysYDAaUl5fDz88P+fn5PunYnBUtQnCpqamBQqFAQEAAlEolSktLfeY04gjyvrNjKbiCwWBAaWkphEIhLco6nQ4vvPACfvzxR+zdu9erTGFv4JeQ8+QqRlyB8hSdnZ34+uuvUV1djaeffhrTp0+3CyUk/8BkJxUXF+f2IuVshMVeWBsbG2E0GinFlRQu8uUnYmA+n8+5d91AqbZcgERCOCsOPB6P+g6SkZNcLUfR+7cg/UItvt9rsBPfPj5bgM+mR+DAvP2YMGbCoNcmqbq+cv0eCDabDQ0NDWhubuZcVwT0siJjYmIwYcIE+Pn52Ym2naXseqtoEasgk8nE+fvOJp9kZWUhMjISDMPg+++/xxNPPIHFixfjzTff5JRK7yp+CTlPrmJEFyjS7QxUREgwXklJCV5++WW8+uqr+NWvfkW7JqJnIiOtkJAQr1KIhUIhoqOj7Qxd9Xo9VCoVOjs7aVopuZ/U1FTEx8dz6vjtTqqtt0EMZf39/V1epM40n8G9e27DQ0fVePobe/HtPQvEMOTm4L2r3oChwYBTtaf6FcCSTrmlpYXzXCygtziQTpnLxZDtn+c4UuPxeE47LW8WLWINxRa9cgXSNYlEIjqh0Gq1WL9+PcrKyrBv3z6PYti5wi8h58lVjDgWH9DTlQA9eoS8vDynxcRoNEImk0Gr1eLYsWPYsmULdu7ciauuuspOaKvVamlujVQq5XT2TRhqjY2NiIuLQ0BAAGVhEccG0mW56ursDojoMzAwEBkZGZza1bA7NqlU6vJZz+4f38fTBx/Fu3v1mFPe+/elUT3Jt7MK5+OVWf9Lxbf9WTgJBAJotVpERUW5Jfz0BsxmMw20G6q5qifwln8e+70l57GDFS1CRCAaQy4/c4T009jYSM8XGYbBd999hyeffBIPPvggHnroIU43aM4wb948HDt2DB0dHYiNjcXzzz9PCWHLly8HwzBYsWIFDh8+THOeCgoKhvWeMUoz7wVxNL9w4UKfokJcvNva2pCQkAA+n4+NGzdi9erVVPXP4/Hs2HFcuTAQMAxDz5liYmKQkpLSZ/dMHBvIeNBR/BoaGupx6BvJr9Lr9V6N/3AFbCcGd3RkVpsVzx55Ap+X/AOfbdNjXHvvz76QAovmifHCDf+LBRMfGPB5SIifyWRCZGQkzdRytHAKDg72+kLFPoznOiMK6D3n8mVxcFa0iN0QwzCUpu1Lk2dnIE4UEokEUqkU/v7+0Gg0eO655yCTyfDOO+/4xDZtBGG0QBGQAnXp0iUkJCQgLCyM7o7q6uroojd37lxcf/31WLduHYDeqHWiTB+ORYKIXQMCApCZmenW3N1isdh1AlqtdlAdERvkvIPkV8XExHD62tkZTe6YmyoMCizcew+sF8/jw3/Yi283/tofb10bjPeL/oVpCdP6fQ7Srcrlcqqncvw5W1hMYh5I0QoNDR2SlICYykokEmRmZnLasTEMQ7Vkw3HOpdVqcenSJfj7+0MikUCj0dh1WoT27ov3hP3as7OzER4eDoZh8O2332Lt2rVYvnw5li1bNuxd0xWA0QJFQM5syPweAHVXSE9Px9mzZzFv3jwsW7YMjz32GP3wtbW1oaamBrGxsUhOTuZ05k8o61qt1quefURHRAxd2am6pHAFBARQEkJ/HZsvMVBG02Co6KrAPe/fhBtOdeCNz03gs8S3S+aKUD45GR/cdwAJwQn9PgcRXBP3DVdfO1tKQIqWuxZOw+lCAQyvfx7DMKivr0dzczNycnLsXjvptNjvL+m0vFW0dDodSktLERQUhMzMTPj7+0OtVuPZZ59FbW0t/v73vyM1NdULr3QUGC1QvSAFqrS0FF1dXQgKCqLuCmq1Gnl5edi0aRNmz54NHo9H486DgoKQnp7OqeiSHMQ3NzdzciDM9hlTqVTo6uqinVZcXBwiIiI48W8j90JGWp5kFX1Z9SV+/6/78cpnOiw91/tRbgzpEd9mTLoWf7ttO8QC52xHV+2R3IE7Fk6EPh0XF4ekpCROd+nD6Z8H9BTG0tJSuml05bV7q2ixpySkMDIMg2PHjuHpp5/GI488gqVLl452Td7FaIEiIMy87u5uxMTEICsryy4Cw2azgc/nU02P1WqFVCrlNAqCYRi0t7fTEDuuOzZHp3OhUEi7LHbWE+myvH3mMlhG00BgGAZ/Pfm/2Hz8z/joH3r8qpdRi5OJwF0PiLH8mjX446+ecFrwyFinsbGRk1EmO7qcdFpmsxn+/v5ISUlBZGTkkETb7mI4/fNsNhuqq6vR1dWF3NzcIRdGZ+GajhEajlKN0tJShIaG0o5RpVJh3bp1aGpqwttvv43k5GRvvNRR2GO0QBFUVlYiICAAVqsVer0eKSkpdsw8s9lstzhzPXMnBVQkEg1qquptuJpqa7PZaEopIWGQaG32mYu7ixthqGm12n4zmgaCwWLAI58uRvmFI/j0PZ2d+Pa9yTysvbVHfHtj5mynv0+o2+Hh4cMy0iKFMSUlxW5ToNfrERAQYNdpDXRe6AmG0z8P6BmllpWVIS4uDsnJyT4rjI5FS61WU5ab2WxGUlISgoKCEBUVhaNHj2LdunVYuXIlFi1a5LOu6fDhw1i1ahWsViuWLl2KtWvX2v1cqVTivvvuQ319PSwWCx5//HEsWuSem/4vHKMFisBiscBisUChUODixYuIiIhAaGgogoOD0d3dDblcPizx1yQbSq/XQyqVcmpyCYCOMj1NtbVarX1IGP7+/nYkjP46AVczmgaCXC1H0a5bkHG+Ftv3GiBhiW8fuzkAB6dHYu99B5AT2ddFmk3dzs7O5rRbBlw76yGibfIf+7zQ0cLJHbA3JcNBfmFrqnJzczl1HwF6iEc///wzgoKCEBYWhpqaGqxZswadnZ2wWCxYuHAhrr32WhQUFPjkDNBqtSIrKwtHjhxBYmIiCgsLsWfPHruMqFdeeQVKpRIbN25Ee3s7srOz0dLSwinN3scYNYsl2LlzJxXUTps2DWq1Gj/++CMV7UokEuh0OrS3t7tsLzQUWK1Wao2UlpbG+QJhMBhQWVkJk8mEsWPHenzW4u/vj/DwcDtDWmLfpFQq0dLSYmfmSgqXXq9HRUXFkHz7TstPY/4Ht+Phr1V46piVftq7xMA9CyTg5U3EsaKPEC6yN8tlOwL0Z0vlS1gsFlRVVUGlUg161uNMtO3Mwok4jbBTi/uDTqejkfNc++cBPQ4gMpkMycnJyM7O5nycSDLZcnNzERISQtm9NpsNzz//PK666iqcP38ehw4dQlNTEx54YGAZgicoKSlBZmYm0tPTAQBFRUXYv3+/XYEiqdsMw0Cj0SAiImJE5Ehd+a/QCaKjo3Hs2DFs2rQJcrkcVqsV6enpePLJJzF58mQ6d1apVHb2QqGhoXRR9caHg2h6ampqhsW/jV0YMzIyEBUV5fUFwpl9EyFhdHZ2orS0FBaLBaGhoeDz+VAqlW6zr3b9uBPPHFyNbR/ocUtF79//HA3culiMG6feh5d+91qf5FvStYSEhHDuWcjWcyUlJXnkIefMwolNcunu7kZdXR1MJpOd+DUkJAT+/v50cc7OzuacHUjGiVar1WfegQOBdE3EhYMEOD711FPo6urCoUOHkJDQw+zMzc3Fvffe67N7cWbe6hh/sWLFCsyZMwfx8fFQq9XYu3fviCBpjMgCdfPNN+N3v/sdlixZApFIhKVLl6K7uxsffvghnn76aQDApEmTMGXKFBQUFCAvLw8mkwlKpZLm+1itVrvzFnedGogLg0QiQX5+PueKeELAGI7CSCKvCUMsKioKBoMBSqUSHR0dqK6upi7ZbBKG49jLYrNg3b/X4GDJThx7T4+xLPHt51nA4iIxXr7xDdyXt8Du94jIWq1WDwtDTa/Xo6ysDAKBwOvJujweD2KxGGKxmCa4ss9cSMei1WohkUgwZswY2Gw2WCwWzpiZxBqLnTLLFdhZUYSEwTAMDh8+jPXr1+Pxxx/Hfffdx+n3wRXz1i+//BKTJk3C0aNHUVVVheuvvx5XX30158cAXGNEFiigZ5H8wx/+gMLCQvphWLZsGaWqnj17FsXFxdi4cSPVS02ZMgVTpkzB1KlTERMTA61WS0crarXapbgMg8GAqqoqGAwGj0gAQwU71ZbrnCKgN9E3KirKzj9OIpFAIpFQTzASV65SqSCXy6FWqwGAbgoYEYMVBxaBufgDSv6pRwRLfLvhN/74v/8JxkfzPsHU+Kn02mza+nBEkLDd1rmM4iCx5YR0IRAIMG1ajyjZ0RvP0Q3DmyQRg8FAC/NwjBMJdT0qKopmRXV3d2Pt2rVQq9U4fPjwsJimumLeun37dqxd2xP5kpmZibS0NJSVldGonysVI5Ik4S7Irq+kpASnTp3C6dOn0dLSgvT0dBQUFKCgoAD5+fkQiUQ07pkkvgqFQtphkbGWr8ZpA8FsNqOqqgpqtXpIqbaegu34nZWV5ZHTOhG+Xmi8gIe/XIg5Jd1446CFim91AmDxXBFkk1Owd/4BxAf3fsk1Gg3Ky8uHxYkB6MnHqqioQHR0NFJTUzkfz7jin8feFBB2m81ms6NjBwUFuV20htuJwmazoaamhlLXg4KCwDAMDh06hBdeeAFPPvkk5s2bN2wjM4vFgqysLHz99dfUcHn37t0YN24cfcxDDz2E2NhYrF+/Hq2trcjPz8cPP/zAuUGxDzHK4vMmbDYbKioqUFxcjOLiYpw/fx5GoxHjx4+nRWvcuHEwm804evQojXz39/enoyvCHPQllZlNXR4Oa6b+Mpo8xeGqw1j+rwXY8JkOS1ji24YQYM5CEaJTC/DE5OcQHR5N/QabmpqgUqlcSpf1Nthi35ycHM4ZakP1z2PLCUjRAtCnaPW3uBNdUXBwMHVj4BIqlQqlpaVUS+jn54euri488cQTMBgM+Nvf/sa5r58zHDx4EI8++iisVisWL16MZ555Blu3bgXQY/Aql8uxcOFCNDc3g2EYrF27Fvfdd98w37VXMVqgfA2j0Yjz58+juLgYJSUlKCkpodZEixYtQmFhIZKTk2lcBum0AND4d0/1Q85AxmmRkZFITU3lnPXDzmgii4OnYBgGb/7nNWw5/io++qceM1ji2++TgLsfEOPha57A6hlr6Hlhc3MzOjs7wefz6fvrCrPNGxhu6rYvu5b+LJzYRUssFqOhoQFtbW3IycnhvGMngt/u7m7KTGUYBgcOHMDLL7+Mp556CkVFRb/YoL4RiNECxRUYhsGyZcvQ1NSEdevWQaVS0aJVX19P47gLCgowZcoUhISEQKPR0IKl1WrB5/PpghoaGgqhUOjyl4nQtgFAKpVyvmtnZzRJpdIh0/T1Zj1WfLoYsgtf4ZP3dEhS9f7s3Xwenp4jwdY7/okbMm4A0NdUViAQUBIGWVTNZrMdCYMw27wBjUaDsrIy6uHG9cZgOPzz2BZOnZ2d6O7uRkBAAKKjo+l77Kl7vrtQKpUoKyujGyMej4eOjg6sWbMGNpsNmzdv5pycMYpBMVqguERlZSUyMzP7/D0ZeZ06dQolJSU4c+YMZZNNmTIFhYWFyMvLg5+fXx8TV0J1d7RnIbBaraipqUFnZ+ewOGCwr5+VlWWnh/IUcrUcc3fdDOm5Orz3ob34dvUtATg8PQofzj+A7Mhsev2urq5BjVXZsQ5KpbLPeYsnzEz29d01tfUGhts/j3393NxcCIVCu05Lp9OBz+fb0d29aeFktVqppiw3N5d2TZ999hleeeUVrFu3Dvfcc89o1/TLxGiB+qXCbDbjp59+okXr4sWL4PP5mDx5MvLz81FQUIDMzMw+zuNs1pXFYkFLSwsSExNdzkjyFjzNaBoMJfISzN9zO1Z8rcba473i204xMPcBCXh5k7Bj7ocIF4XT6w/FP84xMkOtVrvsPk7GmcPhXwcMr38e0EMCKS8vH/T6JpOpT9HyhoUTsUliX7+9vR2PP/44/P39sWnTJqoVG8UvEqMF6nIBwzBQq9U4e/YsZQ1WVlYiOjqaarMKCgoQHR2N77//Hnq9nu72CdWdq7EKoa0T30Bvne3svPhPPHvoj3jvAz1uZolvL0UDty4R46apC/DS9a/BaOgJEBQIBJBKpV6nzZPRFXv8KhAI7EavtbW18PPzQ1ZWFuf+dcPtn2c2myGTyWAwGJCbm+sRO9OZhRNxG2EXLWewWq2orKyERqOhNkkMw+CTTz7Bxo0b8dxzz+HOO+8c7Zp++RgtUJcziCVPSUkJiouL8d1330EmkyE8PBy33347fvOb31BdkzOqO1lQQ0NDvVJESEaTUqn0Km3dYrPgmS8fx+HT7+OzbXrkdvT+7LNsYMlcMV6Z/SaKxt5LBZfeGie6CkLCaGhogEKhgEAgsNMPees9HgjDTcIAgPb2dlRWVg45+t0RbAsn8p/RaOyTU0bOGknXzuPx0NbWhsceewxCoRCbNm3yGQ17MHNXADh27BgeffRRmM1mREVF4fjx4z65lysEowXqSsFnn32GP/3pT3jmmWeQm5tLGYPnz5+H1WrFhAkTaJeVm5tLk3RJ0TKZTB4TBIaa0TQQug3deOCDu8C7eBEf/kOHcMN/rwng5d/ysfV/grGr6BOkBaShsrJyWHKSgF7HcxJg6OfnB6PRaEfCIPZC7PfYW2QJtn/ecGi6TCYTysrKAAA5OTmcuKCwLZwUCgVaW1thsVgQFhaG06dPIyYmBkqlElu2bMHzzz+P22+/3WcF2xVzV4VCgRkzZuDw4cNITk5GW1vb6IhxYIwWqCsFra2t9ICZDYZhoNfrce7cOVq0ysrKEBwcTEeDhYWFiI+Pt6O6ExNKNhU7KCiozxd8KBlNg6Gsswz3vH8zbjnZide+MNmJbxfNFaFqcir+cdc+qJpU4PF4wzJOI2JnEgUykOM5216IvMfsM0NCwnCHYcc2Nx0O/zx215aZmdkn9p4LdHV1oaKiAomJiYiPj4fBYMD777+Pffv2oaamBuHh4Rg/fjwKCwvxxz/+0SdF6uTJk1i/fj2+/PJLAMCGDRsAAE899RR9zN/+9jfI5XK89NJLXr/+FYpRN/MrBf1RZHk8HiQSCWbOnImZM2cC6FlUOjo66Ghw165dNG+IFK0pU6YgKCiICjJra2sp1Z0QA7q6umAwGHzCDjvXcg537LwBGz/VYtGF3r+vD+1Jvs2eeD3envwsWitbh8WJgO0fl5KS4pLrNrEXCgwMtLNvIu9xU1OTneh1oI0B0LMjLy8vR0xMDDU35RJ6vR6lpaXD5npusVjoWdekSZMgEolgs9nw+eefY9u2bXjppZcwZ84cKqC/dOmSzzooV8xdKyoqYDab8Zvf/AZqtRqrVq3CggULHJ9qFIPgsi9Qg82CGYbBqlWrcPDgQUgkEuzYsQP5+fku/e6VAB6Ph+joaNx000246aabAPSKGIuLi3HkyBFs2LABer0eY8eOpUVr8uTJsNlsOHToECIjIyEUCsEwDKqqquzOAbyxUIUKe86vsjp7/+67ZODuBSIsKfwDfht4PUT+ImRPzeZ8YSbjNJFINGRjVzYjkICIXpVKJd0YsD0dg4KC0NjYCJ1Oh/Hjx3sldt4dsOPPufQPZKOzsxMVFRVISUmhcSgtLS149NFHERYWhuPHj9P78vf3R25uLnJzc312P66Yu1osFpw9exZff/019Ho9rrrqKkyfPh1ZWVk+u68rEZd1gbJarXjkkUfsZsFz5syxmwUfOnQIMpkMMpkMxcXFeOihh1BcXOzS716p8PPzQ2ZmJjIzMzF//nwAPecKFy9eRHFxMd59910UFxdDqVRi3LhxKCoqwtSpU5Genk4JAmzX8aFGv2eEZ+DtO3bibst8FG/S45CUh2dukeDpyS9gevRVHnv3DQXE9ZqEw/lqnObv74+wsDC75ycZWnK5HKWlpeDz+QgMDERzc7Mde9DX0Gg0KC0tRVhYmJ2xL1cwm820E5k8eTLtmvbs2YO//vWveOWVV3DzzTdzTg5xxdw1MTERUVFRtIu+5ppr8MMPP4wWKDdxWRcoV4K+9u/fjwULFoDH42H69OlQKBRobm5GbW3toL87khAQEECJFZcuXUJGRgZeeOEFKBQKFBcX409/+hOqq6sRFxeH/Px8FBYWYsqUKYiMjIROp4NSqURjY6OddsgdqvusjFl45NdPYortZQRLIvD6xI34bd5vh8UMk5xzjBkzZljGaVarFY2NjfD398fMmTMREBBgR8JwzCjrT7jtKdiRFDk5OcMS6UAYgmz/yObmZqxatQrR0dE4ceIEp8xNNgoLCyGTyVBTU4OEhAR88MEH2L17t91jbr31VqxYsQIWiwUmkwnFxcVYvXr1sNzv5YzLukC5Mgt29pimpiaXfnekYvXq1cjMzKRF5brrrgPQO+4pLi7GqVOn8NZbb1HXBuKCMWnSJAgEAirGJDHqjim6zjqAB3KWQNNhwM3Sm5GXlcf5jp2tKZo4cSLnXdtA/nlCoRAxMTF2wYSE6OKYoUXeZ0+MiIlNUExMDI2k4BJmsxnl5eV2QYY2mw27du3C5s2bsWHDBsyePXtYdU18Ph+bN2/GrFmzqLnruHHj7Mxdc3NzccMNN1BXmKVLl2L8+PHDds+XKy7rAuXKLLi/x7jyuyMVUqnU6d/zeDwkJycjOTkZd999N4CeWXtpaSlOnTpFAx8ZhsHEiRPtmINWqxVKpRJKpRL19fWU6k46rJaWFlitVjx23WOcewcyDIOmpiY0NDQgIyMD0dHRnH8W2P55rozTCCGGhA4C9nEZzc3NKC8vB+Ca8zgRvKrV6mE56wJ6I0HS0tIQGxsLHo8HuVyOlStXIi4uDidOnOCcudgfZs+ejdmzZ9v93fLly+3+vGbNGqxZs4bL27ricFkXKFdnwc4eYzKZBv3dwUgUu3btwsaNGwEAQUFB2LJlCyZOnAgASE1NpTtYPp+PM2fOeOdF/8LA5/MxYcIETJgwAQ8++CClV5PAx1dffRUVFRUIDw+ngY+FhYWIi4uDWq3GqVOnIBQKIRAIwOfzUVtbSzuAwMBAn+/gSWEIDQ3lPPYd6PXv6+7uHjJDkjiKBwcH07hyq9VKjYjr6+up8zi7m9Xr9aisrERiYiLnIY5AT+daXl4OhmEoEcVms2Hnzp3YsmULNm7ciFmzZo1uIEcgLmsdlCtBX1988QU2b96MgwcPori4GCtXrkRJScmgv+uKGO8///kPcnNzER4ejkOHDmH9+vV0TJiamoozZ85cSYFiHoN49RGqe0lJCaqqqmAymZCfn49ly5ZhypQpkEgkNKVYqVRSRhtxwPDUp80ZiLGoUqkcFmNVYPj884hwu7u7G3K5HGazGUFBQQgPD/fIPX8oaG1tRXV1tV38e2NjI1auXInk5GS89tprnJvujmJYcOXpoFyZBc+ePRsHDx5EZmYmJBIJtm/fPuDvErhCwJgxYwb9/9OnT0djYyMXL/uyA4/HQ2xsLG655RbMnj0bDz/8MBiGwerVq9HR0YFDhw7h5ZdfhsFgwLhx42iXlZ+fDx6PR8WucrkcBoMBIpHIrmi5Sw4go6SkpCRIpdJh6RjIWRfR9HAJPp8Ps9mMtrb/b+/sg6I6zz58HVkN4FrEWByQBKFQpRhABMWiqcbBSZQxoE4bbbXGOpqaiv6TcfpaTWOmEzMSM2IMMZXGIWNcJ75JjBSw7SsYobKsFiQqmEUF/AIFKggisst5/yB7ssvnQdldPp5rxhl49pyzDyuH+zz387t/9x2CgoKYMGECra2tigjD+nO2Xmn1p2OExY1CkiSbVVNaWhr79+9n165dxMbGilXTMGdQr6DsydGjR8nKyuLAgQMAfPrpp+j1ej744IMuj09KSqK0tFQ53t/fH09PTyRJYv369axbt85hcx/onDlzhujo6E5/fFpaWigqKkKv12MwGLhw4QJubm5EREQoQcvPz0+R4STQAAAAEkVJREFUulsCV0eHhu6k7s3NzVy+fBmNRmMXY9neGAj+eS0tLZSWlvbaYdfaWsjyWVt6aFmbuPY1JWpd9GztRnH9+nU2btxIQEAAu3btcsqKVuBUht4Kyp70RUSRnZ1Namoqubm5ylheXh4+Pj7cuXOH2NhYpkyZwvPPP2+3+Q4mZs2a1eX4U089xcyZM5k5cybQ/n9w7949DAYD+fn5fPHFF5SXlzNx4kQbV/exY8cqUneLQ4MkScof0TFjxlBTU0N1dbXTik2t/fOc4cRgMRuurKwkKCio19SzJEm4ubnh5uampN6se2jduXOHsrIymx5avdXBWYKjRqNRPoO2tjY++eQTUlNTSUpKYv78+WLVJFAQAaob1AgwAIqLi1m7dq3iuGDBcqyXlxcJCQkUFBR0ClC9iTBycnJ4+eWX8ff3B2DJkiVs375d1blDAUmS8PT0ZMGCBSxYsABoV6pVVlai1+s5ffo0u3fvpqGhQWn4GBkZSVhYmCJ1NxqNNDU1MWLECLRaLXV1dZhMJocVuzrbPw/ag2NJSQmjR49+IiGIJElotVq0Wq3y+22xb+pYB2dt3+Tu7k51dTXl5eU2wbGiooKNGzcyefJkcnNze/Q2fFLU3i8Gg4Ho6GiOHDnCsmXL7DYfgTpEiq8b1AgwKisreeGFF0hLS7PZj2pqalKeLJuamoiNjWX79u28+OKLyjFqRBg5OTkkJSWRnp5uMzc15w4nTCYTFy5cUAQY58+fx2w24+LigizL7N27l+eee87G1b2+vt6ujuNgW1Pk5+fn8JoiWZapqKigqqqKKVOmOCw4Wrd//+9//0tdXR0uLi54eXmRn5/PzJkzyc3N5eDBg7z//vvMnTvXrqsmtfeL2WwmNjYWV1dX1qxZIwKUYxEpvr6gRoCxY8cOamtr2bBhg3LO2bNnqa6uJiEhAWi/WVesWGETnECdCKM7nuTcoYhGoyE8PJzw8HDWr1/PoUOH2LlzJ3FxcYwePZr33nsPo9HI+PHjbWqzvLy8aG5upr6+XklZybKsWDc9rtTdZDJRVlZGU1OT02qKLPJ5T09PZsyY4dDgqNFoGDt2LM3NzTQ3NxMWFsaYMWO4e/cuhYWFpKSkUFVVRUREBNnZ2QDMmzfPbvNRe7/s3buXpUuXYjAY7DYXQd8QAaoHeivGO3DggCKKsCYgIIDz58/3eG21ThZnzpwhLCwMHx8fkpKSCAkJES4YveDq6srp06dtVgyWPlZ6vR69Xs/HH3/MnTt3CAwMtDHIdXd3V1JWFRUVNDY22nQp9vDw6FHqblEIqnU9728sRsB1dXUEBwc7RWzw8OFDSkpKcHV1VVKKZrOZ9PR0zp07x759+5gzZw63bt3CYDBw+/Ztu85HrePMl19+ycmTJ/stQG3bto3x48ezadMmALZu3cqECRNITEzsl+sPB0SAchJqRBgRERFUVFSg1WrJyMggPj4eo9EoXDB6YenSpZ3GJEnC29ub+Ph44uPjgfaUznfffUd+fj7Hjh3jzTffpLW1ldDQUEU1OH36dAAlNXj79m0bqbslcJnNZi5fvoyLi8sTu54/Lvfu3aO0tBRvb2+ioqIc/jthceS4ceOGjRjlypUrJCYmEhYWRl5enuIU4uvri6+vr0Pm1ZGOn83mzZt59913+9Ve63e/+x1Llixh06ZNtLW1odPpKCgo6LfrDwdEgHISakQY1iadlvqhmpoaVef2tim8a9cuDh06BPxgV3T37l3GjRs3bFwwrFszvPrqq0C7FL2wsBC9Xk9ycjKXLl1Cq9XaqAZ9fX159OiR4oNXWlpKS0sLHh4eeHp68uDBA1xcXBzmJWidUgwNDXW4VRT80C/K3d1dsWoym83s37+fzz77jD179jBnzhyHzwvU3Wtnz57llVdeAaCmpoaMjAw0Go3yMPM4TJo0iaeffprCwkKqq6uZNm2aw3uZDXaESMJJqBFhVFVVKZ5kBQUFLFu2jIqKCmXT90lcMKw5fvw477//PidPngSEC4Y1sixTW1urSN0NBgPXr1/nmWeewd/fn5ycHBITE/nVr35l4zhukbpb1GweHh6qXN37Sk1NDUajkWeffRYfHx+nrJosBreTJ09WHMaNRiOJiYlERkby9ttvOyVoWlBzr1mzevVq4uLi+kUkceTIEf79739TVVXFb3/7205bBgIFIZIYSKgRYRw9epSUlBQ0Gg1ubm7odDokSeoXFwxrDh8+zPLly+3/Qw9CJEli/PjxvPTSS7z00ktAu0rzjTfe4F//+hcxMTGkpaWRkpJCcHCwssoKDw9Ho9EoqUFLq/hRo0bZ7Gc9rtTd4kZh7frtaCzyda1Wa7NqSklJ4ciRIyQnJxMTE+PweXVEzb1mLxISEti+fTutra2dWnIIekesoIYgfXHBePDgAb6+vpSVlSl7BsIFo2dyc3MpLCxkw4YNShqvtbVVafhYUFDAt99+i0ajYdq0aUrQCgwMVJoRWlZaLS0tfZK6WzsxWPvXORLrLrvW8vXLly+TmJhIdHQ0O3bscHi7koHKa6+9xtixY9m5c6ezpzKQESuo4UJfRBTHjx8nJibGxl1BuGD0zOzZs5k9e7bN2MiRIxW3dovXYENDA2fPnkWv1/PWW29x5coVJkyYoDR8jIyMZPz48Upfp47uDJagZWmRYVHHWZpLOtqNAtpXjyUlJYr7u4uLCyaTiX379nH06FH27dtHdHS0w+c1UGlrayM/P5/PP//c2VMZlIgANQRR64IBoNPpOqX31LhgCHpGkiQ8PDyYP38+8+fPB35QuVmk7vv27aO2tpagoCAiIyOZPn260tq8sbGRhoYGpUWGyWTCZDIxceJEfH19Hd4WRJZlKisrlaJfi8N4aWkpiYmJzJ49m7y8PIcb3w5kLl26RFxcHAkJCd32WBP0jEjxDUHUbgrX19fj7+/P9evXlWJSNS4YAGvWrCE9PR0vLy8uXLjQaQ6yLLNp0yYyMjJwd3fn4MGDREREAMPDpkktZrNZafhoMBgoLCxElmVF6j5u3Dj++te/8pe//AVvb2+lRqu5udmubuPWNDU1cenSJTw9PQkICGDEiBGYTCaSk5P56quv+PDDD5kxY4Zd3lswbOgyxSMC1BAlIyODzZs3K5vCW7du7bQpfPDgQbKystDpdMp5V69e7eSCsXXr1k7X/+abb9BqtaxatarLAJWRkcHevXuVPlybNm1Cr9cLm6ZesDR8LCgoICkpCYPBQGBgoE0KMSoqSmm6abFtsriNW1wwLMatTyJ1t/gI3r17lylTpihlD5cuXSIxMZG5c+fy5ptvOkWgIRhyiAAl6F/Ky8uJi4vrMkCtX7+euXPnKunDyZMnk5OTQ3l5OX/+8585ceIEAO+88w4Af/zjHx038UHAli1b0Gq1bNmyhZEjR1JTU6OkBgsKCrh16xaTJk2y6Z1lWfVaRBgdpe4/+tGPGD16tCopemNjIyUlJYwbNw5/f39GjBhBa2sre/bsIT09nQ8//JDIyEgHfBKCYYIQSQgcR1f2Mjdv3hQ2TSrZuXOnTSD58Y9/TFxcHHFxcUD76ubKlSvk5+eTlZWlNHz82c9+pgStadOm4eLiQkNDAw0NDVy9erWT1N3SpdhCW1sb5eXl1NTU2FglXbx4kY0bNxIbG8vp06ftumrqLQV86NAh3n33XQC0Wi0pKSmEhYXZbT4C5yEClMAudKckFDZN6ujtMxkxYgRBQUEEBQWxcuVKoL026vz58+Tn57N//34uXryIq6sr06ZNU4LW1KlTMZlMSmrwxo0bitT9qaeeoq6uDi8vLyIjI5VV0+7du8nMzOSjjz5S9hHthdls5vXXX7dJAS9evNgmBezv78+pU6fw9PQkMzOTdevWiYecIYoIUAK70J2S8NGjR6oUhr2JMHp6ih4uVk0dGTVqFFFRUURFRQE/NHw8e/Ys+fn5fPXVV1y7dg0fHx8b6yZ3d3c++eQTwsLC8PDwoLa2lpUrVzJhwgTKy8uZN28e2dnZDnFlV1Nkbt3aJjo6mhs3bth9XgLn4NgGNYJhw+LFi0lLS0OWZfLz8/Hw8FBMTI1GI9euXePRo0fodDoWL17c6fzVq1eTlZXV7fUtT9HFxcVs27atUzFxdnY2RUVFwyY4dYWl4WNsbCzbtm3j66+/pri4mI8//pjw8HDy8vKIj49nypQpnDhxgnPnztHY2EhwcDCLFi2ipaWFpUuX0tLSwpw5c1iyZInd59xdarg7UlNTFYcPwdBDrKAEj8Xy5cvJyclRzGvfeustWltbgXaV4MKFC8nIyCAwMFB5QofubWc68vzzz1NeXt7t+4un6MdDkiT8/Pzw8/Pj5s2baLVacnJyMJvN6PV6dDodf//731m2bBn//Oc/baTrDx8+tPv8+pICzs7OJjU1ldzcXHtPS+AkhIpPMGDpSSVoTVJSEqWlpYq1k7BqUsfVq1fx8/PrJEWXZdlp+4JnzpxRpfIsLi4mISGBzMxMfvrTnzp8noJ+R6j4BEOPrp6ihVWTOiz7PB1xpmjFOgU8ceJEdDpdJ5PVyspKlixZwqeffiqC0xBH7EEJBi3FxcWsXbuWY8eO2fTZ6cqqqSNr1qzBy8uLqVOndnntnJwcPDw8lFbyO3bsUF7Lyspi8uTJBAYGCgPQfsY6BRwcHMwvf/lLxXncUmi+Y8cOamtr2bBhA+Hh4aIeaygjy3JP/wQCp3Ht2jU5JCSky9cqKirkn/zkJ3JeXp7NeGNjo9zQ0KB8PWvWLDkzM7PT+adOnZLPnTvX7fWzs7PlRYsWdRo3mUxyQECAfOXKFbmlpUUODQ2VL1682NcfTSAQ2NJlDBIrKEGfMBgMhIaG8vDhQ5qamggJCel1j+hxWL58ObNmzeLy5cv4+vqSmpqq6im6urqa2bNnExYWxowZM1i0aFEnH0FoF2FYO7irxVoGPWrUKEUGLRAI+h+xByXoE5bCyT/96U80Nzfzm9/8pts02ZNw+PDhHl8/cOCAIoqwJiAggPPnz/fLHM6cOUNYWBg+Pj4kJSUREhIinDAEAgciApSgz2zfvp2oqChcXV1JTk529nTsQkREBBUVFWi1WjIyMoiPj8doNAonDIHAgYgUn6DP1NXV0djYyP379x1SG+MMLI0CARYuXEhra6tS86W211ZvQoxdu3YpIoypU6fi4uJCXV0d0O6G8dxzzwkRgGBYIwKUoM+sW7eOt99+m1//+tds2bLF2dOxC1VVVcpqqaCggLa2Np5++mnVThjQuxvGG2+8QVFREUVFRbzzzjv84he/sNkXE24YguGOSPEJ+kRaWhoajYYVK1ZgNpv5+c9/zsmTJ3nhhRecPbU+0ZsTxtGjR0lJSUGj0eDm5oZOp0OSJNVOGNC7G4Y1hw8f7tTZWCAY7ggnCYHAjqhxw3jw4AG+vr6UlZUpK6jB4IbRW1sMuYeuygJBB4SThEAwEDl+/DgxMTE26b2B7oahpi1GZmYmRqMRo9GIXq/n97//vVA8CvqE2IMSCJyMTqfrlN5T44bhTNTUgx07doxVq1YhSRLR0dHcu3eP27dvO2nGgsGICFACgROpr6/n1KlTvPzyy8pYU1MT9+/fV77+xz/+0aUS8Pr168ybN4/g4GBCQkLYs2dPp2NkWSYxMZHAwEBCQ0P5z3/+o7z2JJZNatpi9LV1hkDQEZHiEwjsRG9CDIAvv/ySBQsW2DQDrK6uJiEhAQCTycSKFSu6dMPQaDS89957REREcP/+faZPn05sbKyqNJuaFF1PqKkHEzVjgidFBCiBwE705oYB7VL01atX24ypdcPw9vbG29sbgDFjxhAcHMzNmzdtgkx3abby8vJeO9f2hJp6sL7UjAkEXdGbik8gEAwCJEmaBHwDTJVlucFqPB3YKcty7vff/x+wBZgEvCjL8trvx1cCM2VZ/oPK99MA3wHzgZuAAVghy/JFq2MWAX8AFgIzgWRZlmc80Q8qGFaIFZRAMMiRJEkL/C+w2To4WV7u4hS5h3FVyLJskiTpD8AJwAX4myzLFyVJeu371z8CMmgPTmXAA+BVtdcXCEAEKIFgUCNJ0kjag9MhWZa/6OKQG8AzVt/7AreAUd2Mq0aW5Qzag5D12EdWX8vA6325pkBgjVDxCQSDFKldcZAKlMiyvLubw74GVkntRAP1sizfpj0lFyRJkr8kSaOAV74/ViAYMIgVlEAweIkBVgLfSpJU9P3Y/wDPQs9ptu5SdI6dvkDQM0IkIRAIBIIBiUjxCQQCgWBA8v/NKJL8HJO0nwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure()\n",
"ax = fig.add_subplot(111, projection='3d')\n",
"ax.set_xlim(0,2)\n",
"ax.arrow3D(0,0,0,\n",
" 1,1,1,\n",
" mutation_scale=20,\n",
" arrowstyle=\"-|>\",\n",
" linestyle='dashed')\n",
"ax.arrow3D(1,0,0,\n",
" 1,1,1,\n",
" mutation_scale=20,\n",
" ec ='green',\n",
" fc='red')\n",
"ax.set_title('3D Arrows Demo')\n",
"ax.set_xlabel('x')\n",
"ax.set_ylabel('y')\n",
"ax.set_zlabel('z')\n",
"fig.tight_layout()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.1"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment