{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "

ING3 GEE: Devoir Maison

\n", "\n", "

Gradient descent optimization with LASSO and autonomous driving

\n", " \n", "
Given date: Tuesday Nov 22
\n", "\n", "
Due date: Friday December 13
\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Question 1. (5pts) Local vs global minimas and gradient descent\n", "\n", "We consider the following function.\n", "\n", "\\begin{align}\n", "F(x_1, x_2) = 3(1-x_1)^2\\exp(-(x_1^2) - (x_2+1)^2)\\\\ \n", " - 10(x_1/5 - x_1^3 - x_2^5)\\exp(-x_1^2-x_2^2)\\\\\n", " - (1/3)\\exp(-(x_1+1)^2 - x_2^2)\n", "\\end{align}\n", "\n", "The surface plot of this function is given below together with its contour plot. The function has a single global minimum located near $(0.23, -1.62)$ and shown in red in the contour plot.\n", "\n", "We want to implement gradient descent iterations on that function. Starting from a random initial point $(x_1, x_2)$, code the following updates \n", "\n", "\\begin{align}\n", "x_1^{(k+1)} = x_1^{(k)} - \\eta * \\text{grad}_{x_1} F(x_1, x_2)\\\\\n", "x_2^{(k+1)} = x_2^{(k)} - \\eta * \\text{grad}_{x_2} F(x_1, x_2)\n", "\\end{align}\n", "\n", "where $\\text{grad}_{x_i}$ represents the gradient of $F(x_1, x_2)$ with respect to $x_i$. Choose a sufficiently small learning rate and plot the iterates (in white) on the contour plot. Repeat your experiments for various initial iterates. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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aT7zOQ1FUXj77bfZuXNntid+y5YtXH311aM2kWiywx6PZ8gDqdXT+3y+U5pTJoPJ1IpPFprKzZEjR7Klq2N1zfl8PrZt28Z99913RvLgO3bs4M9//jO/+tWvAPjtb3/L22+/zc9//vNpv/comNk++WC0trZy3XXXTXdhwQcaWk/8jh07eP7556msrGTTpk1ce+212X5orVOtvLx8TLmm4XLVGuHHsxS0dk6LxcL8+fOnxYUaXEgzuNFHk1vWNqaenh62bdvG9773Pa655pqcr2MkvPHGG9x77738+c9/BjKHD8A3vvGNM3L/ETCzSX706FEWLlwIwM9//nNefvlldu7cOalrfPWrX+WZZ57BaDRSXV3Nf/3Xf01p1tgHDZo4wo4dO/jjH/+Ix+Phyiuv5I9//CO//OUvJ5WF0OSqvV4v6XR6SHntYGiddna7fdx+7amipaWFUCg0YhpRa/Q5duwYX//611FVlTvvvJN/+qd/mpa1jARJkli0aBEvvfQS5eXlrFmzhscff5zly5efsTUMw8wm+bZt22hqakIURebOnctDDz006eaCF154gfXr16PX6/na174GMNKM5xkNVVV59dVXueWWW6isrMRut7Np0yauv/76SffEa3LVXq93SMrLZrNx4MCBCUkqTRUTrXXv7+/nxhtvpLa2lvb2djweT9Z8PhP44x//yBe/+EVkWea2227jW9/61hm79wiY2STPNZ588kl27tzJY489draXknPcd999rF27lksuuWRIT7zJZGLjxo0T6okfDi3l1d3dTV9fHw6HgwULFuB0OnNupre1tREIBMYleDgc5oYbbuCOO+5g+/btQGaTO9cyL5PALMkHY+PGjWzfvp1PfOITZ3spZwSDe+KffPJJAK6//voRe+JHgzZayOVyYbPZ8Hq9Q4Y2TqX9dDgm2o4ajUa58cYbue222/jkJz95Wvc8h/DhIPlEIvQ/+MEPePfdd3niiSc+lLv+4J74J554gkQiwfXXX8/mzZuZN2/eiJ+Jpic3fLTQSHLVxcXFU6qn1wQlxmviicfj3HjjjXz84x/ntttum9Q9poIdO3Zw7733cujQId5++23OP//8ab/nFPHhIPl4ePTRR3nooYd46aWXci6NPBOhqmq2J/6JJ54gGAxy7bXXsnnz5mxVnJaGKyoqGnc4oCYFrclVFxcXT0gKuqOj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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from mpl_toolkits.mplot3d import Axes3D \n", "\n", "import matplotlib.pyplot as plt\n", "from matplotlib import cm\n", "from matplotlib.ticker import LinearLocator, FormatStrFormatter\n", "import numpy as np\n", "\n", "\n", "fig = plt.figure()\n", "ax = fig.gca(projection='3d')\n", "\n", "# Make data.\n", "x = np.linspace(-3, 3, 100)\n", "y = np.linspace(-3, 3, 100)\n", "x1, x2 = np.meshgrid(x, y)\n", "F = 3*(1-x1)**2 * np.exp(-(x1**2) - (x2+1)**2)\\\n", " - 10*(np.true_divide(x1,5) - x1**3 - x2**5)*np.exp(-x1**2 - x2**2)\\\n", " - np.true_divide(1,3)*np.exp(-(x1+1)**2 - x2**2)\n", "\n", "# Plot the surface.\n", "surf = ax.plot_surface(x1, x2, F, linewidth=0, alpha=1, cmap = 'viridis')\n", "plt.show()\n", "\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig1, ax = plt.subplots(constrained_layout=True)\n", "contour = ax.contourf(x1, x2, F,cmap = 'viridis')\n", "plt.scatter(0.23, -1.62,c='r',marker='X')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# put your solution here\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Question 2. Solving LASSO (10pts)\n", "\n", "Learning a model through the OLS loss can be done very efficiently through either gradient descent or even through the Normal equations. The same is true for ridge regression. For LASSO however, the non differentiability of the absolute value at $0$ makes the learning more tricky.\n", "\n", "\n", "One approach, known as _ISTA (Iterative Shrinkage-Thresholding Algorithm)_ consists in combining traditional gradient descent steps with a projection onto the $\\ell_1$ norm ball. Concretely, for LASSO \n", "\n", "\\begin{align}\n", "\\ell(\\boldsymbol \\beta) = \\|\\boldsymbol X\\boldsymbol \\beta - \\boldsymbol t\\|^2_2 + \\lambda \\|\\boldsymbol \\beta\\|_1\n", "\\end{align}\n", "\n", "where the data has centered so that $\\beta_0 = 0$. I.e.\n", "\\begin{align}\n", " \\mathbf{x}^{(i)} \\leftarrow \\mathbf{x}^{(i)}- \\frac{1}{N}\\sum_{i=1}^{N} \\mathbf{x}^{(i)}\\\\\n", "t^{(i)} \\leftarrow t^{(i)} - \\frac{1}{N}\\sum_{i=1}^N t^{(i)}\n", "\\end{align}\n", "\n", "The ISTA update takes the form \n", "\n", "\\begin{align}\n", "\\boldsymbol \\beta^{k+1} \\leftarrow \\mathcal{T}_{\\lambda \\eta} (\\boldsymbol \\beta^{k} - 2\\eta \\mathbf{X}^T(\\mathbf{X}\\mathbf{\\beta} - \\mathbf{t}))\n", "\\end{align}\n", "\n", "where $\\mathcal{T}_{\\lambda \\eta}(\\mathbf{x})_i$ is the thresholding operator defined component-wise as\n", "\n", "\\begin{align}\n", "\\mathcal{T}_{\\lambda \\eta}(\\mathbf{\\beta})_i = (|\\beta_i| - \\lambda \\eta)_+ \\text{sign}(\\beta_i)\n", "\\end{align}\n", "\n", "In the equations above, $\\eta$ is an appropriate step size and $(x)_+ = \\max(x, 0)$ \n", "\n", "##### Question 2.2. (6pts)\n", "\n", "Complete the function 'ISTA' below which must return a final estimate for the regression vector $\\mathbf{\\beta}$ given a feature matrix $\\mathbf{X}$, a target vector $\\mathbf{t}$ (the function should include the centering steps for $\\mathbf{x}_i$ and $t_i$) regularization weight $\\lambda$, and the choice for the learning rate $\\eta$. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "def ISTA(beta_init, X, t, lbda, eta): \n", " \n", " '''The function takes as input an initial guess for beta, a set \n", " of feature vectors stored in X and their corresponding \n", " targets stored in t, a regularization weight lbda, \n", " step size parameter eta and must return the \n", " regression vector following from the minimization of \n", " the LASSO objective''' \n", " \n", " \n", " return beta " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##### Question 2.2. (4pts)\n", "\n", "Apply your algorithm to the data (in red) given below for polynomial features up to degree 6 and for various values of $\\lambda$. Display the result on top of the true model (in blue). Note that for $\\beta_0$ to be identically zero in the model including the higher degree features, the centering should be done after generating those features." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np \n", "import matplotlib.pyplot as plt \n", "from math import sqrt\n", "import numpy as np\n", "from scipy import linalg\n", " \n", "x = np.linspace(0,1,10) \n", "xtrue = np.linspace(0,1,100) \n", "t_true = 0.1 + 1.3*xtrue \n", " \n", "t = 0.1 + 1.3*x \n", " \n", "tnoisy = t+np.random.normal(0,.1,len(x)) \n", " \n", "\n", "plt.scatter(x, tnoisy, c='r') \n", "plt.plot(xtrue, t_true) \n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Question 3: Convolutional Neural Network and Autonomous Driving (10pts)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this third part, we will use [the Keras API](https://keras.io/) to build and train a convolutional neural network to discriminate between four types of road signs. To simplify we will consider the detection of 4 different signs: \n", "\n", "- A '30 km/h' sign (folder 1)\n", "- A 'Stop' sign \n", "- A 'Go straight' sign\n", "- A 'Keep left' sign \n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An example of each sign is given below." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAABZCAYAAACdbvcVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAACbXklEQVR4nOz9eaxlWZbeh/3W3me405vivZgjh4jMrKzMrLmyu6p6qB4pEq0W2TQBUiINQoKkpgdJNmDZkGFAsmHAgiwYtv6wYMCCDcmkLFuwTHax3exuVk/sruqah5znjHl68aY7nWHvvfzH3ufeG5GZkVURxRYM5068jDfce885++yz9re+9a21RFX5aHw0PhofjY/GX8ww/22fwEfjo/HR+Gj8/9P4yOh+ND4aH42Pxl/g+MjofjQ+Gh+Nj8Zf4PjI6H40PhofjY/GX+D4yOh+ND4aH42Pxl/g+MjofjQ+Gh+Nj8Zf4Mj+2z6Bj8ZH46Px/1vjv/zN39D/0zfeZgpMphVu7QL/yb//H/HZz28xmbVcu3EJLQ0/+9TT/Kf/6X/Ouc+c5JcfWefK9Td5azrgl3/lX2Vzq8+NP/6H/Hf/rf8Fhxsj8oMpN6Zzvvwv/U3+s//Dv8elr/8+3/n9P+d//X/7r9mvlABEdasi6XsVQEFk5eQ6CawIiDDceob/6L/++/zVZ08lY6f8k3/8D/h3/yf/S6pswLY1XN/bQ42l7PU4c/oYv/L8x2haD1jG9YyyN6DIDb5pWM8teW64+uZVvvLNl6m9EkJARFBAVVCBG9eurJ7VXeO+Rvff+w/+Y81y+PxPfYFHP/lJqv4WL738Lj/4nT8k37tE8IcYMRhjASVowHuHscrGxgaPPnoBKQaYogdiUQQBrBEQRVXBCEYknniW4VTwredwb4+2rrDWMJ5OafoDnv7Sp/mrX/oMf/YPf5d5JQTJ0DS5QZSmqTE2IwMkKD7AjVvXuXPnFtVsjKvmiAZykwGCoNhMUA0E9aiGeL8QNIACxhgQQUUwxiBACD7dYPjf/x//dx84uR82/tG3XtUnn3yKrS1LD+gBefr65z5U0Wtv8u/9b/8DvvbKZara4ELAty3qPZIXnDhzln/73/w3+Wt/+S/9JA8cvzSgwRNUCRhym6MHu/yf//P/jI8992nyozmfOnuatS/+zAPP70fjn8/o97bwQam9oygLdBT4b/7wH/PCC0JWGLwqO8d2+KlnP0M96nNi6zjl9klO97cw/Ufobw1BYNQ/Td/k7DcZQTJQZe/KPuPDPYKpaQtDGR/VuGxINkPSLxYpBrLy/eKlCMqsOeQH1RF/uVqj9oGyN+D4VsEwF+beo3mWPksRFO+UzFrEB6rGU4hBVchtARa8sVj12F6P3Bjq4LHWEkIABBHBcP/chw9BukIIiqggQTAKuQi5MQgKEjB5TrRVJm4yYkCVkH4nEn+fGYs1hqAa50wg7l/dBEl8nw8c7O9z49pVjg72UO9w3lOL4a03v0792pOMZJusOIVIhmo0uoJgxaZjKwQlTmO8DiMGEdKDLgiWLDN0m0XcIOP1WmuQTNDgURQRGz9JPSTj6106zkOM3ApFbknTsfj6Cxv9HmqEzIBoQDRuiwFBQyD4QFP7n/BB0xWKRazBAt0MyNZxfvN//D//CR/vo/GTHpr1kX7GM2cv8JlHzjMb7WCzNcSMMbZms9/n2Y2M3CpTmVG1R4xfu8iffPttnvq1f5f8sbgGdGOTNs9wThFjUFVefffbfPXtF3i+UFwe6GeSVkxEuAtYm4xbUEVVVu1yWmLxG99O2T3Y441vX+RbL7zGL/3Vv86Z42ts5ZbbjRKMSbZIUYVp3dCEhlGWMZlOyHol3rccTmB9ULK2vk6oDpEiIzfR7oh0EE7pjny/cV+jK2LwvsWHgIaARSmMJTMlHgEBFxxCNEret6ABEnpUDVib4UXIrMF0rgHRCzB0k6UEERQD6jg82GM2PSL4CvUtxnsKDfTV8eYP3+CZpzfI8m7XAxBUPZk1qFcQQxBPSC6ImORtQPxdQrSajIwsTJ0gEo01ItisQINijEE7dJum1Fow5uFM5KBfUuTdkf+CDS5AWYK1aAiggqhH8IgoPni89zRN+8/p4LrwfP55XPl1RdOKikMED3hiIGP1iN333brsfnlvsqZIeq8qDhbnLyt/7z6je6tZfJwSFMQIVuNz4EJ8gWr84O49duUzumP6CKQwsnK+Ci7o4nUiERiZ7jzS8+aTy9thhM5uPSoPNvFX5xO+9HN/hX/xM48zGg2wgz7rgyGjQgnOU9s+xze3yLRF3B2uvhvoudu8e3PM1qTFA6KgO9u4QUF7qPEiVRlPPdfHE0bbhl4eWM9NBDvpxGXFssb/Cyu3LD7v3e9UUN9Q3b6BOzliuruHG09Y2zzL2f6A18cV3mQLwKcKtQ80kpNnOdYaqtkch8GUQpaVFAZ8XlL2+/H513hfleUNeyiji1gMAQmKJRovayxiCkIiVELwcWEYg1hYAa/pZCLKDBow1iDp4iIhExGzSESanV3rFZbSBhBHVoA1Ga1r8d7gmwzvTETXogvXQ0PAGPCqCdWaeDKJGoiLUNLNUgQfUbyJtIeKoKvIVSU+DEDwcQMR6VZ0dHGMPJyx2On36Ns4TyLxYfsLjWyWJRQFcxSsoUjzFFBmYhh7z6RufsIH7czBEpSoKvKQc3nvSAxW2tzj/LrF0ZceqxDnPRANMunnbol298SzWNqLyzAm/s2sfG73vmQjCenzCJo2cIsCzgVUFYvFmOV7WTmOrPxs0sLogEQG2AQo2qB4VaxYjGi8bpFolNNc2BWPvDNODzp6I+XC1nGevHAG9S2TpqVpjpi2Flrl9uyA125e54mNDTbMmKObBf7kkHOnlLHsc3A05Kgp2ckzilJonccW6fp8g5u09E9usFkajpU5Ih5DovZW1g4YkAjm0BCvTZd/VRQNLX73JvbRbawId2ZTLuyc5fRwA9UZHsUI+GTMvXNc2WsohoHJfE5v0Ke0OR7LeDxP1F/AWKGfZYCjK6UgCdl92NR+CL2gZMZgVbECxgrGWpAeSHyrJJfcGFm485FUTl8KRgSfjK1Ji2GBUCUZSU07vhrKrGCQl5Rln6KIS7puW2bVnMz2MMkhXboRihFZGn8iSpdkHBe3QRJUICKOxbs7VJMYemtsRBqqKGFhqrvDdZTFXQ/hAww/nlEamMECofyFol2ZIb0jts8OuH1xn0IUYwLG1lTacP4TX0DznzzDHNFgICSkeOvNq5x48pF7IiLpFB/wGI64Djskalb+XTWU3e9Yec29XseqEUxEyOJe3Yua7900u/dkYjB2uQ5tZtGw9PxW35v8sIUXsPp3F+JCWRhNEYxZQtawWOwJGLD08iTtQJJ+/6BjWHr+9OXvM6tusHdwyJVrtzic7eNrj/FznAzIzp3m3/74c5xbb5jPNxiMhK05HLR7zC7PeWd3m53PrbMx8ATvEBM3XuMd1W5D/kmhbw1b/RG2sJx7+hmeK5RvvvhDbjfRX7E2p8gL0Bb1jtY5VE303DpnXwPmYJ9BWdDvD9nzOaboIf1RjEGhWBFaTcY8gJE+w60R68e22OpnOFHUZJQYskwphuscjj3D0SuYebvw2DvOOXxIPZv7Gl3VaEwluUMYsNZiTA8jWdrNLV4j7xlC3L1NWtadqyUSv4/I0iQIAhCSYUtOvhqsCLnt08tHKEJRWlQ9SE3TKtbkWJNFwy4JzhCWxtzEZSwIBElIN92CuPKIXLNN00TaqTRSC4lzNoBLwR7TwSY6A25Au8f2wcfxC+c5aoEc3Ao6+gsxvAKYOV/+4nkm4wOe3vkYOVAUBWXRsvPIMdriPM8/99xP/tiqzKsZ87rh+ttvc3ijYcxpTj+Z3eXqB2DtARGwIxnXhFZhObfvZ1wXP8vdKLg7j7uMq9xtxFdHt8Q6UKDE49v0uZ7O8IK1ctfvVjcC1QgkuuMvjGoI8RlaWSXdOaMJsWvAIDFgvXJtIXiMse/ZKH7csTm0fOvrf8j/559lbG2d5MlHj9M7fppjA8sjI4s0OUfWIG7OE5uB77HN6VMZ44Mx7fSQwcfOMzg8YG4GnD9m+KY6RGz0plWZ3G6g3GCt7LM5GGJKRWvPu21D/9RZHs1LRsN1+r0eeWYJBDQo3nl8W+Pqmtl8zmQ2YTIfM5hPWSuj117duIz55FP47WPp/kT6EDw+KHlWcu7Ck/zGr30JqxUZDbenNb3BkK2NdcRWFL1jzPem/Pk//RMu7e8nWBZtWgiajP4Hjw+VjIUQCKq4kIBIMrpWskSgxF3TqGAQAiZBRxYEl8gK4awr0D8ZXq8g5FEJoVDmA/JySKseDBhTQBswWYExNnE2ghdJD0QKAKkQCJESSWiVhHbiIl6aSVVJQVBNiDg6Lgp478ltRnRm4vlZMQm5L7mkh7WOf/idl/j0Z54jU+iXsni4f1LjQ7cE2eLX/tJ/j1/75QLvcrIsgywDWqABNkAHiw/qOMLl+x90AhqcO+CVV6/w9kuXWcsHzMrX+OY7RwQ/xrmWxrUcjMf8z/7u332gIxSs3GvuRqsf5MavuvisvKa7L6v3xtzzu9VjWTS6oSvr714KYnXmXPpaPZbKMgbebRqBCHq6c17dPBbnL4I1ZvGsdbSNAtZmy41ioQL48cfWRp8eELzHN3PaWYU4xy1pmJV9tjc2KY/tgM/ZWS+48c4hTs5QFAXZ/IB8OCLbmNLmgVMbFtTFzSCd8+FBizMjnG7gt5/gUZmwubZBXhbsWEvwjtorrnXMg+JCpBayvEDyPsXIMspzTqM0zYzsqObrX/sOu/OWHgYtCsKxjQU9mIkB8YTgCa7hnYuv8eKrQ05sDji4tc93Lt9kczQiD55qNiEve5hWuX3nDvOqRqWLC3U27f7jQwJpknZOkmEENZFiMFhUs0gtEHBNlVZTjCaqBkJwQLyYzGSRlRES/I4Gm/Q6EYMVi2s9edZDTEYQJYji2paAJ8sNRpT5bIIdbOBtjoohI/E6Ce0GVdQ7VCMCNmIWu5BADIrZyAdJYGHEIwdtCMGmiYyIOCLd9PMK/ukCcg86vv3n3+LoqOWpZ5+k2F5jY/0h7Ng9Q1mqN1b2v/Q3km+xiWETsTEw2Hmld42Q4FMDvqkiNyhAWUBpHpCLbbj8zgu889pt7lwL6KDi7XffYm92SD0/Yl5NmdcVVT2FBzS6cctcosj340lX7153WavI8v1QbDeXGdEYvsfoAblCT360DTQQDW6bvrrz7XDL6utWud1VhN4Z3+74Xbhj1bLrynsfdozWNuhbi4iyd7TPVDL+3r/yt/jiU0OODYYMyxLnA1vra2T7x5nfOeQgv0B/vWQtD+RZThUyvLWc394mD7vYxM+C4bXrd/j7X32Zqy9d4nox4vjWgMm04ub+Pk0jTCcV08bjnYvIEiXPPMfXhxxNGypvKIuCfr+gN7DM3C6X9w/pl5abxTafeeoSuWtjjMZH9I82EaG2NRfffpMXT/Q4/9gjTC5d586dMa4/pq0b5r5lo8wJGsiSpxJSMNN0UrYPGfc1ulZMJDk06latQm4NeZbTiAUyBBeNUpZBCATnEg+qmOCxsiS5fYLgC/0yYK3B2gwVi3eBYDNmVUXrAoQArsa0DYVAXhiKPGM2nzK9dg3NSowtKfKCMrfYMsf2CiR4RAOZMRTWYI1N16AQOmcgIDbHR2webYsqSI4PBm+6qHBCFtKFVARjPN43D0kuwNf/2e/wnR98jZ/71b/K9q/8OpsIm+sLNuq94x4D937mrvMjWHgUyyCQS79uHQQHrm2jLjcErCrqHOpaQtvgXUtwHnUebT3iAtpUmLZmtneb7NgGozNnOffsxxaM1och/4VRr2Zce/d1Jnd2uXNjlzvzOVVVMRz22Rj2GBzrUfbXyfKHy91ZdaPvRZer6LP7edXVX6Ui7jVq3YhPwHuNq0no9kfxhISl8c5WPr/bMDzLAOC91NO9W37niZjkfarE99+7gUR648F3941ySD/LEGkTuxcoByXba2sMy5IiMxTOY9uarDiNs3v0zzzBo4+d5Uw1J88yWhqcKzm39iQ5ryK2oNw6zvGd04zaXb76ewfMxhW396bsH06paw/iOLa+SVUH6sYnsB6vo3XK3tGMxhm8elzjmE7nIHA9yxj0LZsbA+6Mv8V//PYbyHzO4+fOcFTXNPNZx78QgjKtAuPxlMOjiswIa0WO+vjs9HtDJsGxkRcU/UGa3cTCL7Ww9x0/wqqOCDBx02TGUhQl4xASmaBgoVZP0zhEA2UmWAlYSS69BkJCotZGdBk8qFfa1tOElv3xHUIIzOcNbu4wbk4mAZoGP52ieU6rgbkGkApjDjEmx9oMkzje1gjl+ho9Kwwzy9r2MSwNEiqEBmMC3ncRZEPjHCCoicHAoEpmwIUWyFaoCBZcrxCj0IjB2oeDDtXBVcpizvT2Lb73vbcZ/fQFDmvIbIuxLVlmMdZgrKEwhtLCnBh4WxNhdM/nRaMQeWnrWvCK3T/EHcxoaqWuW0LrCa2jrmrqqsLVDa5pcHVNaGpcU+OaOa6p8E1LXTW0dYVrGnxbJVlZy/YTj3LyqU/Q0yE7z559f8OrSzlTJ4Ga3NpjrZhxemedW7u3WH+6DxNLnh2nyHKGgwHDQT9GqcXyMONeFLr67yqyXTXIcs/X+xnuzlBaYiJL0slQtRAsNE30HOZzYmaTGpz3iRpQ8txQFvHzigIaD0UeKZFClpuBJ6LfVeO/avjv3Ugg8cn3IFx47zw8lPq6WKPMcwS3eB4OGo/JLJmJMj01BnyLDh5BygkjO+DOxVd58e1b/MK/9DlKnVLUwvrms2T9r9LbOM354yewWc7hwZh3bx5xMK1pXQR+UVgk3Nyf0jmY3XVGfFEwb3TxB027ngbQxjNuHJNxw42bR1zaPODsiQ22zz3FST/npnmTSVXRJEWJax111VAYQ9EbIodzPI6syGjb6EF7CWiZYyWxAJ1t0A/Huvc3uhp1cVYFE4iuuEZU6DWAejKBoAEhBsEkOetBfaQH0imIerQNtA6QjOANvna4asZkOmY83sPVU9qmRV2A0CK+wvgGnMep0KqPyDircYsEjMSniEHykvroDr7fQ3sFdTWmWBuwvTnA+jnjgxY1lni2Jj0s0TDYLGWyIVibE9FiCgD6sFBFQEyesGIQ+3BGoVADVeDGO6/TTjzff+Gf0is1SpEs2MxisgyMYWgtzdEtLk5uc+H5n+Ff+yu/zjAJQ+96yBSqxjCoCt748z/ijT//KsO5o547fNNgWodpHc45XOtQ58C14B0SkifiWyQ4jIISdaWoYkUJAraw3Ny/CpOKaeW4Uz3D0899HMkEFhlEivqKeT2hP+hz6/ZNto+f5PD229SzG9AEPv3ZT3PlxRc4fuI4ZT5kUPbo9wYMegPK/pC87D/w3N5rXC3vNbyrr11FjR16vRfpdmjU3vN7DxzM4NXrDbe8Y/fIYzPY3xNmU0/QgqqqIudoHKO+ZX0tPhuDNZhJzqOne3xsIJwqYGiWRn0VAStLtv3ec05P2WItdH/L7vr7+yP2H3eY3iZl0QU9BfWB/aqNlEgIBCNkxiA06PARJge/y6Xv/hE3Lr7NfrVDNRceP7HOyFoOjj/Kkx//DLXtMZkGbt68xt64pvURPKh6ljqODB+677vrCGlH0eVzkHZ67X6XDKEGaJvA3u1Djg6nHDs24syJdU489gzlYI2Lly5T+4CEgFEb8xMkcGJnnaOjGZMWEIeGwKytkdAuPBpN1KoR88Ge6j335IOmNy6s5K4b1RSZjU96CIqXeOkSfHJh0oOLSTg4pgVm0VKjAkfzCdPxDDebo/WUtprQzMa082k8RjTbEGJqroUY2FIDLmA17jaSErDjAyGoa6A2zKYWV1i0yMnX16LhcoEyixy0Y5F3FY2DWnzMmiAzkSPyIXLTxkSkHlmWmOYXLY9JqX8PPoSMtlL2b16lmhzRG/YwEjAmB+zSUxFDoVBywBt33uLN3T3+Oz/zSxxfH93tcqpi65qBL3nxt7/HN37r/45OXkemDYLFimDReNPTlhwNS4j3FxuldgKojzOky0BMt4u3VcCEjJsv/4BpG6ibloHLeOSTTyZSM+38WWCQAUw5caIPTHjkE48CpzlOA9rwyU8/DSEDU4LpcGOXDP2TQbrvF3BKjttdr9X3ee0qhdCdGQqTAOMW7txqmNVw9Y7ww8stb49bxo2n9YqoIeZNRSmTCy0qSiYeS0BFCUbw/cCFs5abx5UnNoQnThcUBvIM+hb6K+ezykl7Tddxzx9Xjeq9gT7u+f2DjKrcJO9bEF1keR7MZ6gYjMkxEhUBBgPDHap5w7Wb++zPPLlpcdMpx89e4ODKVf7g1csMRxvcuHyTa7tTmjZmeoaFHVlBtIsrXzWoZgVhRg80ZVDE90s3Lcv8VFVwtePWzQMOj2acPrnOueOP8fHBOtevX2HmW7xr2ZvMOL25Sa6BvHbRhTGWnKQMsdnyIAmkiZGHk4yJRCWC7zK4ACTysGIMEiwaGozVKMaWyIuGlFggqd6CweDbQPCe2XzO+OiI2XiMn0/x1ZjQzghNDaoL/axA0u5qgu+BvCM0XAwrGFhOMDFdmRD1j21o8O2cuqmweY88L+jlBYjBBY/3LhWqgGR26BQJQQNiM4KLN9ZmBttFkJSUSBF1yw8zgipaV8zHR6j3TCcxvtcld/gQ4vaMoRTLZO8Kbx5c45c+86scHtSE9dHyoVJoaqFoSt74yj/hha/8v9kZX6cazzDaOcCdQYnvMt0vNGmRJUn4NCVoJwSxJGNZLFwzrynCmINXfwC+5WIzZz4/4MJzz5ENSxgYkLI7AHKXIC6xlZK+zL3Y0RDN3YM7wavq4nsphC4o9X7cbWeQu9/nQLnyXhtgMoPvTuC7NxreeWVMUxlmTc6szalDide4pZskl9FuXZtlXFKVlD0JvvFcmrUcvNvwzYHnscdyRn3Dye2C58/lnM9lsf0s6AxVPBH1+gWyu/t6uedaVn9+GLb8KOtT9JZIN4TA4WxCCAGTGyxKMDEln15GPd3n3YM5A/VMZrf5x//o/8qlqXK0t8eNq/u8fuk2uwczfOgUQkuj1WWLLSAlLDP/YPH8dvJTs6JylpX3xASpEEsapHWtQaimDe9e3GU8Xef8qU0ee7zPnb3rTHxgNp1Qntzi9l6Dz/oUhU9lBzJKE8jznMX6juhs4dnfb9x37gNRp+tCTHVDYvKBzSKHakysydA9m/Er7kIhpc6IWuq6pqkr6qqmmkypJmPayRhfzRBfQWjBR2JcbcwPMiKgssjWEucobJSLeQ1dEaHlYRNqhfgHDRFna6gJrcflDtPvkRGTH4LNqV0D3t+1q7oQUPXRtU/ZPUi6nk6rGxK/+zA+GuBDwLkWH5TZbJZUEkt+CLocOouvWnw9YYc+42++yJuP/5DnH/2lxdxLDUWtvP57b/LiH/8x4fAV2mmNVbNAtN03QQOy0CatoCDVqHnEQkL16t1iM4IuIyqelWvmGG3ZfeX7aNsgLtCTPo9+5lm0AnoWkcGHzsNdD9ld+1j9wHPb0Qmdce1QbJqFu8a9CRPd+ztka4nBrMrBOxc971yZ8615n+9ed1RHJVYtiF1QbJ073KmyQqLmEMEu5jx6UlFeZtEW9lvD7tTxzoEyGggbwwlNvY48mTHysFNE3XFHN3TX0wXa3pM1x92byqqC42GQ7kEQ+n2b8owU1cBsNqNtAyFXtLB4r/imIRfHZs9R5AWFU6pGeefydW4ceW7eHvPOldscTh0hkNRAcg9fFpL7nozbYnNZJgALukz/7SZ9NVqfAJl2CHl1JSioC9y5dUhTtzx+bpudM4+xvTPkiVM7zKspk+mM9fUNzhxbw6llNp/h6xm9PI+IN8UurLU/AXohIdyo1U1ISSRqZU3kciBNyIrNi5OkhCC0dWA2nzCfHTCbTvGzOX4+I8xnaNtEdQMRffkQCKILBNbpZmMRnbTLpAnrcs3j8XVpbyHpEzUldQS8c/gQaNRFY2r72KIHmaGhwoVIVkcX2ieIHVIdBiAIXlL+lCRDKAZ9yNoLKtA081gdDRMXsYmY0Iokl19pmwp1DYVt2ckc//7f/Ct87m/9UvoQoAVtlHf++M948+u/S7j9BjquyLELF3SxYJWuAAWiZokglBTwDHR5qerDMqsvdC/rsHL8rnSeXqg4eP0lrA80rWPsJpx/9lnytT75KH/fQPmqob30zqu8886LPHHh4zxy/mmWJu/B8VhnKDuDe6/BWUW0q9zsKrmxqkyYePjOG4E/+O4hl4+UcciYNxlQ4OI2lZIZNBnatHnbQGYDIRgIFqNC6BBDCAsKKVbZsqAF2sJsrMyOan5rfsBLhwO+dLzPT68LJ7dT5qIIWdpMM4lc7yrC7YxtxwvD3Yb2YYixYDJGfUsGtAKCp5lNUSxePVZTZCdAZlrO7UBO5Eknsxk3jwJXr+3z9tUDprVnsSQhrnlZJlYtOYJl1tfCQxONwEpjnoDetdCSliOh5FUG5m69eXwWgleODme86QPu0R3Wtgp0Y5tnHz/Hp62QD9fZ2VxjMj5g7/ZtNvolO67hOy++ia+aqHZLNvDDaMcPTQMOIUq3gg8ru048/ZDc0u5gXRhNJKACrfPU4wn1/JD5eJd2PsdXFVrX4Nuo+UzLQ8SkzBBdLMQF6hNFLBGFpRvRGdm7K4l17kfa07qcaALqA27eIkWGGsGGgrI0mCyn9o62c607o74w+SvJEOla4znqYiN60GEFQnDUdUuGjSgoHS2oYAhMfMtUa55cK3lqLeNv/2v/Mp/7W39leS4NqFNufHeXd773Z4yv/TH17UNKhiklMSyMiSGiayGuY7/gviIPFX8vi1xSSXy9qsYCR936V13I/yCujxzP3psvU3uP9y1Zqzz2qU9gNcOsLTdIiAb37TdvMjnc4/b+Hb76h/8VF84POXVmB7jA0lw8uNHVe/691+7LyldnjDpSIycqCURh38GRhe+9Gvhn3zrg4kGfCRZVg1FDiussdLEhhbKNEY5bw7nCs7mWsbdXc9vn7Au0Kvi0wQqJalBS4o3GJCMP6gfc3AvcfgH0DEzWa55+vODCWWEgUQvcGdXuHt+7kax+6cq/D+OkPZIF+qVNqffx03w9iwBKIvI1WFrvMKbl48eFiQaOpo4b48Dlq3u8eWV/qTZA4plrBwziZxpkMScigVjcxWOkIhcoj22zUwrjwz0mVaDyRUrO0rvuf3fN0JnsLkVYWNRsAAjKfFzxzsU7IJbBxi5Pnn+MJ09sIXlOL7PkGAabI5rK8+iZk5wcDtirKtRHwx26mrD3GR++qrsVEdwizTdoTHhQlYUgOD5TYWUFeaazQ0JrqCZ7NNN9xHtCVcXoIND56NJ9K92EJFPaUQgSEnMRgzyxCtOCFk+ZZss8e0mf6UOgK/1okrEMdYOx4LxHQkk+GBAywbcVrW/jw2QyRAzO1RghbQYm5axL8l4Czj2c0dW0vQvg2gaVxK2qx0ggMxXezPm7/8P/Kc/4gt/80ufhS58DhkuD2yq3Xn6Zt777B+y//X1m1w9ZI8NoTEeMOXXpQVv1CJJtlXT/gga6BJDuvltZzrGmz0E7xy7+xRCRlnWOIsw5eOMl8A0X24rJfMLjz32GYbNBb7tYcGngefetb3D13Xd59d13uL53gFf4F3/9UaK5e7gAGtztan+QznbVOHXod2FwASbwVgW/c0X54Xd2mR/mOEp8MgxBQU1UtqARgYa0Sdms5elBy9++MGDwcUP9kvD/eOOQb7sC5wpCiEftqpXFokvJq1gAkZwCg849L74758qw4cW9ii+263zpvNBnaVTejyK51+iuzsHDrNz1MmdnmK9k3QVCVTGrHaMcEKFXlORZRpYJTx07xp9cCrx24Lh0/ZC3rh1QtZH/XCyJFbqg2wY1BRshrl2hxWYztjdKhnnO6PQWJ0YZA/sIuzev88almxzMctrF1UJXf0M7xMCyboWQ1nw0LkCk3uaTincv3SHLDaVV5h87RTU+osIwOdgnswXTegKzCXVT41uXSkzqApjcb9y/9gKSQE9YGDINgeDaRRYGYgihjSdvFO9dlLuox83GuMrRHN0h+Br1UXreEdwxcyakBWdWorAGjGIsZLnF5hnWSuSSjcGagrYNqI9ZKW3r8M5FZUXKWc8kJnd0GSvxoCmDSj34Ge3cYdRQDApskTHHUTWKqEVEyLOSEBpE4rnEwjzLspXykKSuV8UExdQ1RgQrMNHAhJZnNgY8s2n5xX/5r/HX/t6/wSanV28M2gKq7L+1z/WX/pxbr/wjxu9cpwyDFCmPpnYRSNF73E/tqlGlB12Wn91tiNHtS+8QWaRwC5oy/RIq0cipERwFnv23X6Npa5pZQ97kPPKpT0DYpnc83QamfPGnzzN5Ygv5/QOuvfEmxeYTbG4+yk+qhHtnjOw9P68annvd8Y5SEODGAbxzA75+Q/na62Pq8QaZ2hggttEjMNIh/xTYCvEhH1nYKSo+fWHAY581ZCNBf8ry89kQfWvCxbrPpSrg0/O1fEaXNA4hojKjQLBUruS2Mzhvmf9gDGGdLzwB68CAJYfdGWC/cm2r4/2ohh93ZOIYbAwXH6YK1cxxUAVOjAyZzckzQ55nqB+yM3iMt67f5vKtQ965tse8TkVhgq4YqHjmC0pBVv5deAAVO+sFfesJZJza2qBvIjdero24cC7w5qVd9ud5rIfQGey7rpxEjqW6BqqwAvYggqHZeMbFy3foZdDs7bExzNgc9pmMJ/QGPUaZxftAe49SYTV494Hzd78/OlWsRp2qaCcPUbz3i48NSpRbpf06z3Nym2GxtNMJfjbDuobQNouJTbg1caYp3qeKGmWwtkZellEDa6IEQ6ywyD8VIYilGGZIiIY3BB/55aC0KVjnQ5OE/PF9XcQYhWzBYjjcfIxqj3zQZ1CsEXwV6wJjsBLJ8UWxdYk0SPC6gvIffAT1WDxbpeB9hbUZU2v523/v3+HzecG/8VPPwU9/AlhbvEeVyOG2ys2rb7P/1re5+N0/ZffV6xwPeUrZ1oW/EJF/xwmldGcCRqMR7UoF0i0WhU4KFM+xW5ywhMkk+eCSftFkwEsViuCprlzCB8MV76maQ8584jP0/A47p4aIrDPcepyBjvnF53Ouv3BIE0aI5Mu4AB+2dD98rGogOlsGK6m2K18dlysADbyxB7/19py3Lja4KsdqEaVMIT4LamLSSmIfUVFcUPK8YauY80tPjvjCZ3PsKM4XQ+Fzn895oljn//nWhGlWsjd2ODIgW0ieVBX1iXVMLqB4icocyTiaC/M7QvX9A450k199cml0O2PbJVWsov2VaX3oec2MZaPYSFrcWFynnTfsNwrWYq0ltzmFCfjbh+wdneDg8ArvXL7DeOYSymdBJSwCYWmZRTVNQv4pgGa0pTcoya1wuH8L01vj6n7FIye3ONy7xrA3YoRyamvKrKmpfBd1YPFvJxNdVFm+x+2RtINGIBE4Ophy6VpOkW1hspztERgJHFtfx9QT5hjK3C4KE6HctX4/cP7u+9f0RIagONciISZDkFCT9wGbGYzEohWZQCZCpgZpFVfNCG4OzqWglkWxUWolAR9aAkpW5OS9kqLXo+gPEFMQ2/uYpJqI7raI7YRikTtTRcRg8wxTGDQoRW9I3hvh6yl1PaGtY051ZJuT25IWOMETJOArpfVCVvYY5CWN1LQ+1oOIaz9p7zTRKz6dy8MBXYx6TJ6xsW45Xvb41GMXOPXTX+Q3/q3/EduU73m9KngXDzq7PaG6/DKv/9l/wdXvvckorN8VNFvKwbp/9K5FpgLhnnTVZD4W/K4xkmiIiIa9EhUdsCjyEZTIQSaDgfeIUawGDq68Rc9VuHaO8cpZ/RwTHTA6DSLrcGyNmz+8Re/kx/GVpSeKb0CLZDB/BNTwQaN7l1v5edXodEgv426Ee+jgZg3fvgivvDWjbjbj5pXmLrOGLIMmcTZdpmKWCwXCetHw+SeHfPlzOVudwSUalF5fyD9t+dl8SHGp5Q2Tc3HsqUNKeEgKB5NFTrejc3yqISJYgoOm6nP7AP78hwecNZvsXFief4fsV5Huvaj+YUde9jm9tk1hLF3RYt84xs5QFj1GvZwsz7DW8P1v/Sn/r++9xBtXd7kzaRcBs7gLJHefsLzLHfLUTl4TYxsinrXSEKopqMNVU66+8wqj4gKnt4/hxodcOdijP8wY5nPqBIzi3Hfa3pX70f0/1WWJP0aLudAFt4E7t48YDgt6BVjTsFGC1mMOpzVKLEsQ3yqLRKuHQrpWBNThgxB8STXLmE8rhCOCzvHegc3JRDAmJxfIFExCnsG1sTz+4u77iIsCYAImE4rekKI3wJY5WVHEKG7HtAkLeZJio2sfEvISu0DIwSvWxPRe7wPkOWIGFGUO8znNfE5oWgpRfKrj2u1/0Tv2UbrmFGsKcpPjtZN+RKtlWIQJyYxJZSXvO7cfOsR7siyjdoGPP/Fx/vt/7a9z7G/8jfe9LaqAV5wL7B9ch903eeVP/ilvfP0NzskgZpMt1BzxPaZjBrpEEqKR6LTc3esl/Z7EsoXETVmEEFjs5BGJLD/Hawz4xdu1DFwahVKEwnum1y5jQ+BqW1PPx+w8+1n61RkePb8FwJmnTvJc/Szf/dPv8sIf/A7P/NyT3J4atLWcPXmSiON+/GFYVu9azSJbBSKdPqJgaYQPLXzlDfijF25Tt32cjxDMEt8cVGkaRQ2IMXFjMiA0FBzxufMjfuX5ghNrkeK6awiYUvjUc4bHyoLfu9QihfLO7UMcfYLJk8cbH+CoEY+bfmfgSfGQqoKbB/DD18Y82l/j8dNLw7saROuCa++HeB90FD3L9rF1ilQICpTWzTloJxTlKaQoMbbgYPc2f/bCO7xy9YDr+1NcWKJPFpt3p4DSRdCczvVPZ6wooi2hamg0EExBWfQwbsbFN17BnX2Uk/3A1toxrEIvmy49NxYfk2i2hKBXzaOwaMrQZVPE0wq0TcvNm4f0C8Naf41RLlzePUTEMrI5Nlvm/HXxkQ8b90+OMDEf0avh6LClLVv8vKEwM0TrSD2FECkAsYs7rc7h2yoWvwnxc5KnlHLqFckkotvBkKwYYIu8Ix2IJq7zrhSwiZNM+D1tgkYMpIwxr+Ccp+tCYIoSozk2K8jzkmY6JdTzRTAnfn7kaCO/2aJecc4gxRBjbUyg8G0UtksE/p2sS1DkIWsvhKC0waEmpyy2OfbX/xXe75FIIBsfQCczir13+f5X/y+8+gffZI3thA5CSkyJSCEu3a5+GouABKQkEpEFgjUiEFza6OMj2xnfGDqM0pyO119cddoQozEOiJiFgWi9QxEyI8xuXqEMDbe9w7vATuu46QpOPjVkZ6fHF770HP1C+NQvX0C5yAmOYdggVpp4MKMLdyPaVclY9/V+lcLefgG++c2bNO0OMduJxXPUISWxsljPkaSCWuc8c2HArzzf48y6LOrnvuecBLJCWH8SPlsUDG7BVmZ485Zn3+fMQyxM1L05eBYqhzwDHyxZHtdCVRW8M+vzzX3I1+Dx0fIaO6rErcxD97Gr1/tA8zrapLe9TZ4Lpuqy4wSb91jbPk7RKxHvee3bP+DVq4dcunHIrFlF2ytrkbShm1TL+i5/pKOvYiymHJRkKkyCsnP6HKNcmRwdMZ4r66NtBkXG7Vu7NL6rBhjL/XRlXGUR2OhSh5dNF8rcEtTj2uQjxIcGQahmDftHNfNqDbtRIibD4smAXmEWtM6PwufChxndzCRwrxwdHLA7HrO3d4u922+joVooF0LwSBZzZZxzhLYlNDUSohE0KTNtIb3PLUW/TzEYYPIeZDkhBb1YnHy6KWkH6qjFDvcuIw5xHkPHp7CwG+kaLHmvhxWoRWnqCosmQ7NEg6Rov+IR8VhjcG3X22DZ7SK61auFEx98NE2LNRBwlIWiv/3H8Ou/yGIX7nS1Gnnz8WSf/mSX7/zjf8L3v/INzjGgI5I0vUZRTKcvpkMQKUsw/bwIgCXDG8tzpi6morgu9TdZ+2hMI/Lt0OyCJ1u4a6s9ULvXKLnGFPDZzRtYr9xuKkIzo6nnHPkdzp8/yWDQ40u/9DPAFOEcGX3uTn59sLFqbLpzu1cetrJU4GV48xu3qKYFhOXcQ1pTEJULxJq5qgGhxZsJO4/3+fwXBjy+JYw+7LST4f3YeXh0C85tWPqm4rvXp1S+D1pixK643Ekv72PAs3bxwXXe8P0bE6rtnE883rvrursHu8vpW1U1dCqHBx3Z1jGKUUYvizJPo8LjTz/Fb3zh8/TPngETOLr4Jt9/6wqXbx2wP25in7Zu1SwuTCJFCIvkh25dirDQ4MaVZHE+pud7awjqycsR/Q3LRjHEKrx7+W3mdWDqNBlas+SMtROAdicgINEWbR0b8sjOBkf7Yy7e2MP5zuQnuWQLd/ZmXD82Z3MzY2dUsGYtpvUMB/0IEReNGXRhhz5w/u73xyI35HkfY5TJ0S774yPu3LnGbP8m6qtlixyJXJe2gmscvm4Q78hIxVskpioqimSQ93sUgxGm6KOphmanx1vck04/l9DTaj6zmO5GhPS+FCgTg0hMsEBjg0WLYHKLNX3EGHyA0C43DOmyzLoCpqFFtKLI+7gUGV09N3SpX31Yo5vlBbGCUovurLF3/HFufEO5JTfo2Vt88flPp6JB4CYz+tN9vv1bf5+Xfvt32dDtVOEoIsquYPXqhqVpMn1nOBIy7aQ6kjjxuAC7raQTh6V7a5ai8xWRXle5gi7Dx0NKtUxuVtKqqgacgtXAfPc61s+57Rpqga3iY5w8vsYkVKwP11kbDuE9tdMebKy619zzPSyNbkcbvPaW8kff2uXF6TEan/yDZHRD2vzjulRMRztaw1QdF84U/MZPDfjcjtD7AIT7nvMTEAvlFjw9NGxsrnHq21NevCq8FSyHfoUmygTvY7aktWbx+ZaSzGdce/eIf3aixD4D50TYXLnmTtWwmlAd7vn5xx7aUtcz6q7INgbZ2Gbn+DG0rSA0XHnpZV67ssv13SmNlwQeO9qg+0pmMM2ZdlKQzngtFrPgKdg7OKK0ERjd8Q1rjz/OzrHjTA9u8+bbF5l5ocDifJEAxnIiunvXfaIa6A9Lzp0+xqntIYWBYW44Gs/YHVeJZggLz62e1dzam3Hu+JALp9d4dL1kOpmwMeiTGaF2SdUEC2DyQeO+Rrc0yiDPCc2MeTWhmU+xbkIhsU2xmAxEybNYTKVpWrRuMM4l47QMxgCINZSDknI4RPIenoyuNkPciSMDFSPEifxOXK2kEmdhQS4uGNdILWhE3AEP2iISKDLB2uREZhm5zSkdVONYDze6iJ1BSfxB26A2UJQlZZHTOB87sXbNp4ImDk8xH7alfcgI6mLTziD8F7/9e/yD3/0mLtti4/RTPHXmY3zx+U/hVblzOGU0bfjGP/wKL33ldzjrNXXwjV+BTj+8bNvXnVq3NYiGeLMloV8iV4tJiQ/YhKzjokaTRC51X7TGIMHhQ+pDhY01OQSKMqcse9jCYgsLJs51aBuCa6hmU5hNKYJltrtHTwbcevVVTj19nvmsZlYU5G7O2lIh+xMdq4i2e9Q7o9uxLt+9esif+h63QqJlOq8quZlBddm4VGMX7GDm9E8KX/jCOl8+KZz8cU9dYvLfsCc8cRYumCGnvjlm9+o+R+0ArzGY7Nq0iVlDlgne66K/Wg/BTQz/6Nu77OWb/N0nczbTeXTXGFhm58HDG111FRLyZTdsCVSHu9yZtmwMejQHY7738iUu7U45nDoSeCU2e02IUxK5IJGaika5c/dXniuJ6zQEi6NPUSijHmRFj6xcY3znJpdv3SDIgNwa9ictbTALVL0w3Nod02ALw7HtdR45tcnWMEvPM/QGGadPrDOpHFXr6ZonRjlk4HB/ys39NSoHg7V1Rpkw6BepAmEHj5dp4B807l97oZ4ynraM/R18AGMzesbg1UTeCY9qLGbjXI2rZ4hrsGF5S6OH6lECg+E6/bURmhU4bEyHNCa21vGerqmbgYWoGQ1471BMcotDOnZyadXQ+sCsrmjaGueaqBXOlEFp6Wc98qyPzXrYzNIbDRFtmR7tL8v9pWSOTufbzDw2dxTlCE9LaN0ix1oSj/Fw5rabnIALAR+UzBZYmUCvZtw8yfM/+5vUqshswvBowre/8vt85x9+hU0XWydFlzOk7hqxmluMAUQT2tFWAUMQxRuhsoZWlDbpmLNUnlJsQdF4irZm2npaEYphQTkYUp44yfDEcdx0gp8dUe/eYH5nTKZgCbTDPsPzF3j02U8wOrVNXgpZOcTNG1w1Z//SuxxcfpfZzWvMb44Rb5nv7cPWKVzroHbMjg7YOHmMKI17OJ68G13se5VeWHWrZeVfDdA3G9TzCSHIQjUApEAii27X3keRY2VhZ1v4jZ/e4OfORXz+INvFqupQzgjPfH6dfyEc8Z0bwmutZRYipaAiGKv4WN0GY2IdB+cVDeswb7nxxoTDrS3YufsYq/RKh34fZpYl26TcOsH69ogTw3XWT6/zU5+7wPT2Da7ODDfffYsfXD1groZezzBrUnnGjtZKHiqwrAKWjDDa4d/4h16/x1opHB5W1L5kNm9QYzg+GlAdHTCfjbFSMguG6dhR+WJh9BaGN125GKE/6nHm9BYntgb0c0lUXKpqaGHr2Ijtgzk37oxj1uUKKKvmDXcOp9yYOnqnH+N4e0BZ9snyDBPCgo76MDB2f6PbzLHGUJRm0ca8aSxiSwJTrEBuMnKxuHqOqEPEp6BN5B0UYjm7siAfDFHbQ2yOMQYXlDYodRN7LMUkCcitpchja+pFpuqKAE6SaQlqqRvHZDxlNj0EjZVGA0rQGvoZjanJMxgNCtZGOUGgXFvDBUc9ndJ1kojIRiC1/6FyxF6hCeWp4l1E3zZL5vphQZnE6Hfe7zHIe4RmjtoRX/7LX+Cnfk7Zn8J2VfHWn/wB3/1H/yUnXY20muiCECuSWaE/WKM/WKdtZ6ib0cyntPMJRTEEm3H85CmGJ0/gyh6uLMk3NsA5BkVJUfRo25b1quKFr/4u86bm+PlPsXHySc5//DyPf+EzXKkq7HzG7sU3mFx8k/G773Ln3XcpfcF8eIqNT32Rx371VznMLSbPaEMgU8UdTjj9yHMUL3+X3Ze/S5hfIhxMKTUwbxvaukFaz0AF2vYhJ/PuEVjSB5129d6gmRAdmKM3lRuvjWnmMWCjSTAaFXABYw1WNKmZFJGKckt49hMb/OxJeObeY3eGQ+4+HqT9feX490q9Tz0Cf8OvU35jn909i2sGNBp7Kbk2bvYmLtPYASTx/lIF7Fxjg4B7rhGWacKrtRgedASfs/bU5/lf/Yf/IVm+Q39YksUsDnxb8cabV7l6Z87Ng4pqoatMplSWz3KXYN/xud35qggmy9jaWefRExtUBwccHswBQ5Ae05mnqQ65bY6AWDWw1RKloNPUx3vVxS4gKy3bxzd45MQ6o0FGZtKGnM7P2Bh3KkrDyZ019o8qZq2LMY1ui/Keo8MJt/YmSJazPdrhsTNnOHX6Ivn+lKZpaZqa6kMyVe9rdNcHQ7oCHhF+xub0JmtQk2EkUBhLYXNCNaP1HtGYPhrPMeCAvCix/T6a5bGZpHM0Xpk4x+F8RnV4QC/dgpD0n6N+j/W1AYNeGdvtiGFZRyJGNI+qGeOjMe1sSoaLplgkNmgXS1s7nGkIbkqmSs+OsGVOo0Ix2gCEajoBf7dOMDNgXEVmyqj3c7H2REqiiYFDI+95YH78ETWCofVUviGzBa6xTG6/wezoTea9LQ52b/Hdf/YH0BzEkpYakWuTZ7S54fxnPsH5z3yBulLKIrB/6TX2L79Ntn+T6e6YT/78L/LJn/8F3HCEG67hTIYzll6e08t6mKaFpuKN3/8n5IVh2Buxdf5ZPvb8X+fx558Cv8f54KmdY+vkaW6tb3Ary5mP92G3QRmRF5uolpT5CH80wRwdEtRTUBDYYvvjn2M+2edw94hmMsM6j/c+aqjV4BWq+sErir3fWJWJrcqluq27Q3rXbsIf/vAOr4xH1CGuz2gI4oPbpfi2Lrm9RlnrB750dsjPbcGJezOWFa7XyvUMTlo423lsaQSUd6bKvAdnxLB9VyQvjcfh+bAF3zrkG7vwAw91SEY/nZ9LRb6TWwjesLuvfHc30NsWzlphwN2yuFU29WGGycEc2+Hj6xtoG4vfqy2QLDC/eom9g1gk/GD3KD4/HfLU1cB0JMY7UNVtUGosg1GPs6c3OXlsjUJbLt6oU52X7uwtPmTMOoMuRYprRPG0SldJLGYPjkY9zp7e4vjWkDITjHhSqZz4Xwooq1eqWcXuwWTR7HJxUzWWOJjOWu7sHvHKK29w4vQWt/YPGPV66EiZTudMgqP1D2F0s7IXjVgqNhPIcSoYW2NNjogjzwp83eKqBpMM7oI3sxajYExGrxwgWUGrQh08s7phPJ0ym02wrBRQSZXEJtMp3lWEtSFro/WYoSbR/Vegqmqm4yPaakYmnlwCZZHT6/VxLuC8p/WOxgdqV4EoMhfWig2yvAR1kLLKYqSUSBtoTOd0ocU3Qn+wyUxjkA7VtEgiGirKh09ZDSEQ2pqGFpvnkZQ/PGR+NMNtb3Bw+yaPnzjBD178IRZLEMiyknq4xhd+7S/zqV/7F7iVlRy3OdPDQ9af+gTDV77LjVe+A+Y27eYZ3moLTpx6ir20yMTmTE1OU88Z+Za9t1/HhQmtDwyOP8bJp5/i8S88zTsHl+hVt7n0/ZdYe+QCbIx47LnPMp2MGV5+h/n+DWIX1di2pZ4fsPf69zl89RUuXr3C+ac+xdaF5xicXmfziaeY7O6zd+MWwUX+XV27oFjqphM3/WTGaveHbryf0b1Tw8uV4ZIj5uzL4vm6ZygqgSzznNyEnz3m+fJmFkUW3b1UCA28fivwtVDxi2f7nMnkrpMIAb5/Zcxr84Zfv3CcYQ9snrIkV8731OPw67f6HB15XporrWSwKlGUWGC/ddGkWTEcTuH3Xz5E1kb82rmcobx/icvV4zzQmE/QeoxvHJmkurk6AyNcf/ciF29X7B81xKz/FQ9Vunk1CwnXatakLXKO7WzwyOlNNgY5RpVqFphUHr+4Y0lmpsv3dmiWFbOMUWyRcfz4OudObLLWNylJwhA0lm2NWvss0pp1YPfOhCs39zma1ovmuaqxGW4cFlcFxkdz3rm6i1y/ym/90de5MZmjIS4cZYmeP2h8iGSsIEv1baPGLQMbs9BizdvIK7qmxmjAdMYrLd4QPMZAv1dS9nu0RC74qHYcTScJoXqM8YyGWzRVC76NSReitG1gPJ5hJWO0nqdJErz31HWFbx2EENMSRyPWRlFfa4yhqVumjWM8n1M1FXPXYn1LPzgsGZk1lEWJr+Z0GTGdqCUkmZxvPMP0UC1TKhVrIonR+oc3EsF72saBGHxweDyTwyNco+ADxii3dm+nIKPQiODzPp//tb/BZ//6ryMmcMYI9WyCpYeO1nnkc0Na19DWb5G5gq0jz5Wvv8gtX7P1+Dm2HnuSsD/j4M3XuX75LeorL+L33qb1gaef/0We+vLP01Q3GU2u8YM/+grXXrrIxjPPc+y55zg5Wmf90fPceXWHOruN9028915p6kNuv/U93vnjf0oxHHHpaEK5cYLNJ0+hozXIcnwnEXIOcY7gHU6V/CeCwe4enbGBu1He4igBjg49B1Oh1iiz8Y6F+C2sWigRrFXODi2fPB44+2jGQiaQxkThild+sBu4XM+ZbPTQe14jImwx4PYLV/m98RZvPGL52Bpc2BL6dqXUTwNsFsjII3WLuhi07k5eNfZhM74zNAbMCE/GeAZNS4S36fQzlmt4dV4eaIwP8NU0VkLLs8i05RlaOa5c3eXdG2MOZ6l9T+JpF/RBQmRxA1jJBrOGYye2ePLcJv0ikiAiim89dePSy3QRqFoEjNP1aeJzoirEMNoYcvb0MXbWCjJrMCbRBMnw+wSg1Cvzac3VG3vc2ktKCxbq9mRw01FE8T4wnjTcOZhwYQusi58ROj6KD9c03T8jLSuWF7IQyrt439VjjSIaC3F3LHKXqx/F9QGTZxSDXuxqKkJVt9TzilA3WFVKqwyGJevra1R5oMyVeXXEbF7RttA4ZTKdk/f7FGWUgrgQaNqW4KP42ZiMohgitk9R5iiewvaoaDGtpoe7oanmVPPYPTgglP0BwbXU0wnq20T0d2JqS/AgKuRZhnee4JMiw3aJBT/OSn3v0BDTOzW4yAN6QxsC9WyObyMKtFY4cfIk13kJVcUZw9mPPcVzv/wLXDGOk6Hmu1/5LW7cvMqJ009x7rmfRjYGHH/688yPHC9/60+48rU/5JpTTn7qc+RFDqMBW5N9xi99g9f+5I/ZaifUfkp/dAazscMtCWzXB7z9p3/My1/9Y04UG7z13W9Tr4144vHz6Po6g+0tDiReg7YtRiGXjE1TcpqCO7cOGZ3aYb53QNXUbI76ZL1iEdAS72OZz+jDL2R4P8mhK1/vMbgKzOHgxozxPNCmiE7wUVFijFlE+LtAj5GGkwPDF57qc/bke49zp4HffbXhqz84YHQmoyzlPUvECDyyJYzagq+/OuYHk3V+Zhv0UcPjO8IwT7xrCazD2M+jcQt56j6RmgoEhRB1qJmJlFzbwt7BnHllsHaZVNIhe2WpWniYmQ7zOeo0NXR1QI61BjeZcOfOHlYczsVnsysuE6mRRPasUC6LGiHWMhwNKLJULjKhxmpe4TrN44oxXJ39BeIVyHs5J06sc+bEJsNSFihVuuLiXZRUwdctu7tHXLk15mjeLmpCLD5/ETBPSD1tFrN5y+F4Rrs1orDZ0vDfNeMfPO5vdG2e3q8x4KSStKCxwpI1QvAt3jWx51NHhMWrjC20i4xgYxMNFwJ1PSM0M6y2WBMidzsa0isKyixDxGMypVWhDTXeB+q2pmkqstyiJqJQlwqTG6IRjLneseNBwKDWkpVgmwzTxg7EuNR7XOOtdhpi9N4Y1Hfl9bp5l1gFyXvyvKRVxXXvTbMcHg4vxFKZqVym9z5WWlOYzyua1uFVGVhhsr8X01qD4oqMUx97CilzCqNc+uG3+fZv/VdsHFtj+u4VttZ3OHf8p2nMBv0sp5rcwu0fYgdD9t54meMf+ySH+zc4N/K089tYrQitR+lRlOuolMQGe3NcM6dHRrt/QC4lRVXRyzKkv0ZWZFGH6z04HwvQmwyVHGN6SHCEyhOcUrsWY5Q8abaRWFrTp4iTtYIxHf56+LKOcLdqYTWotIpyGSsDNyAzGV19hSyLlFFI6GxpsJXMONa3+mye8PiV8/TA4Ry+92rLD184wrebhLqmnoHe01tTFeZOyIZbmDvr3LxY892jjMNJy+cu5Dx31nKigMIDAyjWSszenJ41WCM4iYGmaL+SJtrEZS1kUDUc3W6opoNYgmzlursZ7njeBx3etWS2SOVoG8Qq6oTpdMKtwzmTukkdWEjx5lUjdLdBivZEyfKMfi+WVNWOTw2B6byiXQjNl4avC8pF8CuINaxvrfHY6U2OrRWxGFEX0E/PbHy2A3hlPK64en2POwezqLElBfZW7NfKztCx0ghK0zgms4pZW0Z3Q4VFw4MfQdn0IT3SokuzFLyni02TZa3QzmtCaLGJDxVZ6tTECFmegmcqBPWI1lgarPEUuWU0GNArR6BCnllUIS/65IXD1A7vanwItG5O0B4dUxe67gfEBAybRUlPUJ8kNgGbRWG5MUlIlbLORLpzVYw1aReMbpAurW5MvW0dWdFL9yAuWw0RnZmfgLqp0y2GoBjjaF2Fc3Na1+ICZDYW4YkFog0u6zHLCkxR0MzHXH7xBU4Fw523rrF9YsD44g3eMt/hmTPHmR/t00wqemoI84ZjWLLKcfzEWUbhgFE5iAGntCIjeo+ukjGGMsvpi2GkwqxqWVMorWUmQlGWWDHgPb6u8d7hrWG0vskdAQk14iqCqzFZTkaP3ORkxqKaAmlti6pixSQa6ydLL3TjfT9VoT50zO84XCtRi714MLnrgVPiwx68cmtc8c5+jxPDpdGdzuE7r7Z8/Ycz9o+K2LF3WlPmw/ccWwS21gzHNwaUu0BjePd2y52JZ28aaELJ849YtgvIB9CEOnqVouTmHtdV4/pxoasJC+Li1/s9+au+xEMt3eTlCSG22RHBtIFmXnE4bwhAkWdUrl1BgJ217OzI8gRjfKSgX6QsPInX41tPNfdLmkc71Cp0dULEGIp+yamTG5w9vsGwtFhxeI2ytFhrO77PBGhrz+7uIZdvHDCZuUUbsnh6XeI8aSGExfl3qcSaJKxV3VI5FlTrqkjjw0q+fsiGFw1RrD2gyfpHTaiIibIVv2yKIp1RFklRfiXL8zhJCmigV2QYnyEYyl6PojcAE8vmafAxmUJzrMkxYvHEdEvv2uWNExMDCSx38WgAuzKRpACZTz0PU9FplNY5Yqossd6nKk1mCbUk5LD4lMgfeQ8pKrrk0wIGQ/6Q8gXp0JUYbFHg/Yxj60U0Vm2bCi2VkEdUkRmLaEaRFbR1TeUqvDWMyTB2RLU/4/C1dxkc3uTVF6e8+fVv0HOxuhtqMJKTFwO2T5xFdxtMb7hoOmrFYFRpmzreKhHIssQDGlBL1mmlRZYeQht7YQXnMaXl5mTKrhUOBzlHvubJXk6RFUgFWRvwTYtXwbnY/t37gJosLdqfnNFdpRbuTYwAwMP+YcXB3BDoYcTguwcuwamYbRnPyaS1d9QvmJwpOASOAczh8msNf/LClHeP+jQhegCudrQV6Pq99xzKmWfzxj4bnOQmORJKqirw9o2a2s/Z931+7nHLowr9osTgqHwEEnVIeEs1KWgitdBxlaKG8aFjMvGwETeG1WSIbmt7GB/NZBYf6qgXN4YiyzEo9XTKdF4TyDgxHDCrjmiURCd0STq6zDyDREVC0cvJM0U09UoUg2tb5lWTglrLDMtOamazjPXNdc6d3mR7oyCzstwI6FJ/0/bilKOjGVev73PrMFIWuqija5afn86p24G1m63VTdhD0yhNMORFntZVV45zmSr/QeP+SJcov1jkQ1tLlwNpswxjQrR2i9WcTl41Fhu3Nqa6mqgzzIwl6w1Z6/VjlX0RMFn8vPQxIRVv9j7V8UVi7YbECXWLxSS+qKPUQwhYwmKilgG9jngX0KhqINEjBMjyHJvlYCqC99iUdrzQasa+KSCaOiADqR19DM8++BAjMa3TQ16WjNZGmKwlI6CujVdoc0zRi8f2AYtnfHBE20CWl6xvn+DkE+e59uKL9HXC0Rtf5/C1Bh9qyiDJ9YmVFdqmoSgLatcyyHPIY/1dQ6ychve41qFiUVNii15Kr1YER2gaDBkBg7GWLMvQuY9NRb1GCeFmyc6zn+DyS6/zM7/wKzzxhefxkiOu5PalG4SmJUiBdw51Ae+JRvchqZoPnON7vu9+bgVue8+tRmn88oHuRkQ3YKWr/xETEW7WjqstfLKAuoLrb7R8/4WKiwcZY02aCY10XJ69dxsR4FghXMgtP6TLDIzrflxnvH7DsVtXmLaHH1lujz0uWNoQg2OB5SEWCWEQn08Tn4i6EcaNUrGIpS1et9QAPMycBtpqxtwpPs8ZqKHX6xF8nKOD/THX9io8BiOp717nSSYXvwtaq0aV03BQxup9xAkRDVRV1Lx2SLkDdSpCOSg4deoYZ3bWKCyx7Xv3mckeRWTqcXXg9u4hV28eMp7H7jBLLbMs6kLHrMxuplKxnO410j1LAULAtZ7Wa4yRdCtLljUe7jfu3zki3dxF7r2xRMlshrU5hgat6+iehuXBujIG1maIycFYJKT3mwzb8WWqiXaIjS/jDpFR14Gm9oQuGcEasrxH7JEU6wXE5pgGAmgQfPBkqdDzqmKjK8e4IPJV76o5CoIaGzcGE90JawxGDG20/MhC3RCXbZRKCmIejn+MdX41tZ33nDp9hp1jfa5cGkc5VeKnsyLW1lUNsSD8wRH7V28xevIk/tHzjA/2ODW0zK9epzka04491mWxB8NCK6SEtqWt4+aiqmRZjrEZSuTHvQ/41pFLLKzdGXsrioYW17bUjYeBQTKL5pY6NNQ+0Cp4Caw9soPYAZ889xyf/IWfp2+FwpS8/K1X2L18A6th4fl4Fxs2irHEWsX8BLTPccjKVxe17zLSBGgV9suSW7kw11W3fVnyE2IG2qKGtDEEzalm0A9w682Wr7ww4weHOQfax3eupZhFz6z3G1bhVJkzNILpkCsGgsHVGbduTPn9esbrGxnXJhm1xgqpXemyxVpMAEy6HULjZ02dcM3Do8BxlhXHPHdzuw86fFtx6/Vv87/5+1/hKAzZXB+ysbFBlve5OW2Sd9jhP1nyM6qopqyETkcLmCyn34slYrvZQKGaJ82rSDRGgMkyNrbWeOTMFpujHEOKDUgW6UvJIvAKUXc7Pppy9cYhe0cVjY+AjsU6W5AHrIjXWN2SRFYK2Ei3LmJSV6NCVmYxTVnDjzyp96cXJHb3BIlyGk0tdkxshZ6JIUukd5Y6O3jVaMyMwRYl2Cwh33iy0T53TSC7yUoaR2BWTWmrFtfMkOCxxjLoDej1ht3jgEFjlhiRhwFN2kp71xQiNhnGpW9giCikKxsV0Hg/rUQ+TONDpj5G5NW3iAaska5JLhLirug+4KH6UUenBzE2ov3B4BTPfOyzHFz/GsEpXhUkpKLvMb/buobJtcscXLnMtBROP/YpdOMEcnCd6tp1ZtdvcHjxHQ4uvouZVNTTCptKFIp3tPU8UjUa62IYa/CaOkiEgG9bfBO7fASTai+km+NdlOoxzDF55C5bVSrX4Alg+6yde46Nc33OUHKIZUNyXvu93+Ltb/8hMj8kVxtpHPUE16YU8aiHVOeR/CcTSIO7De+Chkp/a4E9r+yHWDmsY4/uiQUvEHD0kjOoYHwTXpx7xq84frCbcyUUSymWkvjIgHfvjyjFCGtlTm7B+BggXYhhFFR7XNtzXNtNHyp5fKYSPOv6t4agC5358rxj/KQNy3oL95qS1Yy1BxnW5mRmxFtv3eCNvTp5p8LGmSf42BMX0ibXCbu6iZXFhIouz0hEyHNLr4wKFpPcedc65vNEYcCibsvJU8c4fWzIoLBYawgqZIm+iPV34kS0Vcutm/tc3R1T1ZqqnMldp9IBv2VCXEdfriyAjhhJFMddGzJCv8hZlIxMUP7D5va+RtdgyEy8GFTJVPCaqn4hOB9iQEu6qund7Yy8hkupvZ1Kozu5RbdPY8AY2sazd3iId46mmqWdMk5RlhUMBmspGSOuLitdq5xUoCWy+cAygQJiwfOMWNO1SzINwUeEaexiEo2JdINLCyR0qcGwCLyF1BctHsDclbr4wEMkJV0YvA9k+Q7f+O5NmnyHSeNjPdsMyOJmYoBcHQfXrnD9xR9wLi+ZMeTco+dgYwPz2McZ37jB5Px5rv3gG1z9/kv4usGkUnfOe5xrF0hXunYrSQ4YgtLUNa5pIYv3RyWiQucVfKCpG5CCrn6mhIB1LeoajGxROqFoHUx2kYnjpR+8zhtf/11MdQmtakwoCBKlhuId6j2ignfxQSvy4v5z9iOODtnKyr93PQwGTG6iN9dZVU2cfvfsJWPWKYkMFjlU3vrWhKtVoBlbDl1Bq8R6sCa+NurVBd/1Rb/3KcwE6RW0oQXN6J7pToeuGLzmsX+gxs1eUhDNhwB2SY91ICOkiJABjA+0ew0yFcxKwK+bi/c7pR9nqGYUwyGjMlFx6cn3IXmP3TMu90K/5NUtDFO83qJXUGax9ZFRxQt455jNXSzmlBu2djY4e3Kd9WFGZiTaDonFsuJjGNsGBec53Jtw5doud8Z1KkJvlkh7cQ0LH5iu8A4LaZss7oms7tid6098TQDW+mUiOdMcS3cvPnjcn9PVrlxgJyT24KNOt6vD2t2+RfIJHTpIFADxBpiU8tdVuOr8SA0BHzytb5mND8gXqz3eEBHF+5Ze1uuuioDFmizuW6oQPJrOa7mzBtS7+Puu+zCy6MC7uEaRdG5msRpDh4jTAySS6JMkqE7Pxof2t/+wEW9QIHhHCJ5vffuPMOU6WydOMW3n+OCweQ5ZFueCQK4C7YxrL3yTdrLPnQsfo7x0nNHZ45itHc6cfRJjMx7NMppxy7tH36NY3LMQ6x0nfXNdNxhiwW1D1Fw29ZS2qZAsj6oOiR1rvXf4pqFtWpqmjTSRMZjgkKZGXUvrpmST27zxne9y/TvfIb89Ybo7JQ9jQqiwIfabUwWjPhaVDw4NkWufTCYcGzx40fL7jXuz04yHXuVY84ZcUruc9LfFA6QLh4iIoXKaaeD2XFDRlNlkkn62W0txzdgsp6o+2LSZQY7JfNzRlOWXrHyfuISOchHi+RhDoutkAc40PQsqMXW534+deOHuj7/3Gh9omAw7GLDZtx12jOYrtdixyRNWNYtssRjRXxqtxayKMBgUlJmNz3H6vKaumblAb73PmVPHOL7Vp8hiwLcDW5Ke57g5Ks2s4vqNfa7dGjOtfbpGueeCFxzB0pNZ/NncQyesnGu6NyKCzSR2qsmE/jDFW4JfJEh82Nze1+j6FfmXDwHvAq1zONeyyJ02luAcNomPF3VvF/KszoCmPVaIgZ00USRxtxVlUGaIC/gQaYqA0jjH0XQK1rA2GiYsbRBJtIGCaiD49q6dVQgYUWxqlNet5q51u6oSJL5lIU7oOgUQ7q5+lHrZh2SwYzHE8ND8o4EYpDLEAj+2JssOCW1MU1Z8lKblOVgb88NRtJ2Cn3Pj1Ql3rl0k39xg8/wFZPMEzdOf4tzHH8Oocuypj3PlzdehPgCNKKKualxQvDGMjm3jjI1NDDVg1WMl4Ooa38vwJuqiVePf62R0fRPpCbU2ehptg29q1M+oj67w2rf/AL15A3NrSqYJCWhcaprkNRo8oanRtkFUcV5Z29x6uAldGavI9v1uUz+DE6HhlM95F2XK0v3sOMVurWp6mAQTKbZgF8Yt1aJZuKsmgRGvlsnsPTYmjlwIA6XyDaoZi2JOmspHaoxbdKmuCtG4mHTM9KG6YjE6RaeIRkqwp1B2bTMj8l9NBX4Yo3swmxCMsj0sMDJbWC91LUrA2pjJFRO7UwykUyAsdzHQ6HH2exmZaPKg48m1CpsnNji+vRF7rpmUg9Z5sgpdKdi2Vcb7Yy5fu8P+uEq1D5blCEjgMX7bwdeOArHdDC+8jYVsTJbzbJL96uWGx89uM1gfMRoO2NpapzCGSn26FfL+C25l3NfoznzSpAZP8J6mbqjnc9p2Cqm4zOKiNJ5kpyYQNEVXNZZuTJ/Z7b2dwTUIuRE2RiNMv0AbR9V45q2jdo4mBELbYqZTRv1+3Cy7IuKii0aJwXet+LqdTVMPKwWxiRKIE+t8NPSRS9bUSThg0Chp6RrUmc7rTI+wxsXf/ReN+YOPLhAoRsiyPCkpCnr5EJO6xIpRbJFjsojiVSXWuFAPvkLu3MDs3ebyxXfYuvAEb872yU/9ZZ44eQo9doxsfUi4vR/pGF9TVfvMmwm+n9EQcEaoU9857xxt3UTtbQiR07UG1VggpK7nuLaC0EeTGwiK+IBvPEJOM645u3GC1158k2Ma+8ok1h1jU587iMVJWoc6sJLThJrJrGIzSXAedtx7Z+6lF7IWdlrhhEDR0VHdaxMYWgS1V1BnR52R3MsOQXfPsiZJnfeG6ez9jZsAMhKyfo7UMSsxpM8VSY0pQ0x4AO4K0AgssoG78+w8L5MMxqCfsVnG/hvvV3/i/ebnxxnVtKKQnGOjIcLhYoq8bwnBJ+2qYrRLNurMfBc88wnUCLYo6PfLWDqVrimqYX1jjfXNmAsQuzDHxzg+98lrDp75dM71G3tc351SN2lDT4g1GafVmVsApcQ2p9uaIG+XTIFgJCy8B0FSyVmlcYFLewecX+8zGg446dbJpDPbCfV/yI52X6M7mdfgPLgW1zZU8ylNPYvV4VMtXSUhQJPoiMWhI9IlBExmUn3XtFq6m5C2aiOGUb+PCSWh8OStI28d0/mcyXyOD4G6bvDOI3mUF4kJaWLi5HmNPGWUm0BUKQjWmCgDUxNRGSZWDMuXO19IWWGLhQxL90VNDNDpEvF22kJWd+0HGtEDELFgSyTr4YJg8yHzyiNYvDpskSMmmi6PwYswF6USGKhnEDw2KHde/yFnzm4w2b9Nu7HF8NgWZIJqLOwXfE0vc2g9RfprtCStp0a3zntPU9UY7/HB0xjBWYOK0mpg1lQxYKaBzES+H/V4H2ibQEZGbnqxHjG9patlIobRLmAHSAiIC6gDJMOrwRTl6rb5UKMr3r1qGO8aBZzcKDhdQD5tkZCDNUtPbUHmJXdTFQ3dQxs5BIXULl27W5mUKKBBONifozp879FzCP3AtJpgpEcwEj8nHTuWLY2ozmhUUPgQyAqbUG2SOa3QXRhDuosU1rFtlHWWgcPVDD3DwxndQpSps7jBFvlwHykK1gdrHN/cYa0wNGW2yJiLlIcsaYhF5laclqyX0ytSxa9kAIUoI+seyMxqqjC4pDHUefbvjLl0dY/9aY2PGVELQ9nNeRff6TaoaJmEmHVpVn7uzjBW8lu8f8FBdNLU2CYpL3KG/R5rzTB1rU5qX13R+X/AuK/RPRqPCfM5xntcXdNUM4KfYYwnMzb23ZIU/V6F80QDq8HHMoiyuLS7L6TbqTW5TQZMbiltRpZ5JGjkEJ2LTeOcoyhiarJN3JZP6CKwbEPDwoAKNihWSbtVPH6HKEgk/MKlS7xc5G+jnMnYWCg9puyCaCTxvQb0IVPS0rMcU6SbhiYlkxxNDqnqGSE41CrYqMIwEjs2DLZOkK3t8NSzTxJuXubwzdex00PWQsvRtYs8RsD5QGtyJB+whOyBejbFegF6BFskbWdsLKgKbVXTTOb4jXUoc3zu6A1b2sk+o42CgMH7jMJs0lYxINa2La51ZCFQWEMh0BXXiunf0aBYs2yGKRqwvkV9S/ANAUftW4YUD5cttTLSHb4HZ6XhwJQ97Dpw2CAhFjIKQTCRXlxEta0Bf09xo0VMNRmGDm126z8EoTY9dol1cQbdsdNJ2Q3D2uYIc6tdINllAgEpk6oDBmBM3Pg72Vt0tZcHXGAZUfp9GPbswrAu8dvy+rsuyQ8yqtmUWaU8/1N/iSeec4ypKMuCdWN46a3LfH9ckVtoU60Suo1WVq4HIYjQ7+X0shQYjDt0zA0IqXaDxI0wKjbiM1xN51y7dsCN3aNlh4cOyRKNfGdgF25I6vXXpXfTKbHSBIoxoJKaturipDXFlSDW1MYIZZ7Ry2Ny1KA3JLMZQr3Ibvsw0HB/o3u4x/xgl1Ithsi7ZCbG6rrOs9ZaGo3Vd1KiWJxcMbE3mm8xqyuY5K5LhxqSXMaHaANtJNslBDIVCpundNGAa1sKBrFqfhYLgHcKALUZIXTV7+KOaCAWxnFuAVyEsOjUGqVKcYfsJiqkGwRRelPkMfW4oybQTl/cyVseciTuu/UhFuZxDaKWup7h1KPWxDkxMQuwwbBx7ByPfvYXePxLn+Cdr/0et2/e4Gh+RBYcp87s4ERRsRiT07SKwSQttNIrCsQLR0ctwZZ4iQx13PwEN6vQaYVvlKyXc/zpR7k8vcaJp85Rb+RkgxHG51x9ZxdXeawGcA7fuhgUFHBmuaCXwLHjF+ODEAg03lHVc/LQkpkAvl1x8uFhMO+qoemKmN/1aQWYE4Z5f4ajwUhOSEhWu2QJEseaAmQhIXeRqIwx2ftg6OQRBeDqwYTruoHlnp7GEjnyyWwClItfLrKousphyTPACEUeS4f44KNO3UYKIiYrJeOhiojnxHE4ti2rh1vMh0lz4YAeDzb+wR/+GVo5xi6Qu5b98ZhWMwojVEEoen16mWXedh0joPO5u5QmEtAa9AvyLr9KBKMQVBLAkNiphVi4P7SBgztHXLyxx3jaxtRtUseUrnPtyka1iLmkfwOynIxuNXb0jIakJOoSrLqbSXz2Fi+ErLCIAVfNsSIUWbbsxM2HB9jva3Tbwz2M1thyHddEhy3DgPqEYgSTp5KLKSVxcZUKzrVIU1H0Bgg27dzpdZI41aTwVjxWhNxanAtkRS+qFFq3cBFdG2vgWjHkmUWsJSA0zjOZTCmLkrXRYOGieAWfxYCQ0xT1NZFrlhCwJqOp25SEke5Ugh0xKy3D5CVeDSG1IOou0XQBwp/A8K6N2llv8M5gJKNuJlSuBTvEln0w0XC2IhTbm5z/qc8yHgmjJ86ydfsMV/be5LEzF7iyZ3j62CMEyZnNYg0HG2ISCl65fWuP/OYVzNY6XhpCKiAUjX+Dnx1w5/IVzpw9T29wghNPf4kTjz/DQX1ItvYxbH+LdnwDra4xO7qFVUFbR3Ae73OCbFCMdghpAa96PwueNJFQjXO0TU2mDZl1tPUUdJSScWRxHx52CO/TMUFAtoS1RwasXQvsjyNHfTeP251ren1SC0T0KykQGl8VZYaCZGn1qcBgjdvA1vuck7WGjY01zLRZbA4Ls5R+6FKjO6StHVoLuqAxOj6yo9na3HDYBqYV7AzjsbpVvboRPQy9MJl72qahQjCupU4ofOYdLlhMXtLvFezPq+WbuuBfJ98Sg81z+v0y9UBL+mPRRAlATL6O62h+NOPGjT1uHkyo2qSHhhU6oZvAFXoocQoLSSBhGRjtCp13L5NISy6pkAgO471YGnSxsL5WUvqKN199mZB55k1N7VIvOEgqjg8e929M6R2NBFr1uLQTGIn9zAwezTVKmrpU4A5aS3TP8dDWNUUIIFks3OUdTVMR1Eeu0ubktkwIQXF1S/DKvKqYzufM6zqaQRHKIostgUKsm5AXOVQG71qCeoKvaeeGshzQ1DVa5BzNK47qOR5HLrGbamaje6s+9nXzro7+ZJzWJdkuAcmSUeoQfFIQiAjq3ftP3I86ZEl5BO9R39Jay6yZ09pA7VpaNWS9PpJ2U1GPmxxx5+pFzjzyNIenNjGP7fDkxheZHQz47E//NbaOPUo2OWIwm1Pv3aGvMZVVgiCNMr51jWcfWaPZremb6JL5VNS92r/F7PJVrm2+w5lnHufYk1tI1qBMUT3O7pUxRdjjyqt/RjPZxZo1tPVk0zknQsHN6zNMFYNrgQ4cyEojxFjsr1XlyDlCFjOJih40bsad8QGjtY20cRp6DygRWTVkH0hXGJi3h6A1QhHRSnpnCCF5UiwyLJFYDa3zPoNPKhfbuXh0QXqMMVza3eOmbnP2fTaOEALTyRFCmWIhsLANRO1497x7r3RFVLIsIsGIznRBpYHipSFbM2yeG1GuQOvV2gsd2n0YCmfYz/E2IM5j7IB+2aKmIISWat5wWCtrayXZYUUbkucqiyTdRAIEsiJmoi2np/smoUqNCiFXew4OxuzPa5zGd3eGWVZeH4PzkrjhJdG53EDDiuJDljxN+jk+113xq4BIWHjl8RBKnmcMyox2OuHt3SPebVsOkppnufndf3bvT+uojyS2uPgISNRu+tS8zzlHP8vIstSYLVHIsjgDRduGXOMO51HUCJN6xmw+xlqlmgc214+zvbUJxNRaFzxtltGI0HiHFSHLLFmRRxG6OoxkiVvJqIPDh5bJ9IjJ0Yx+32ON0M4qZrMp2rbkBAqjDAcFaYMD7/DNDHV1FOvD0hCKEqyiRUZVu0VhmMX9006d8eAjJlwk51dju6G5azhx4TzX9++Q9wqcehyKyWKFfqOB6Z1b3L7yNu71Po88/SmeWD/DfHabQe84vXKH6eQOo3bGW9/4GvX+EYMkBM/wSHPIml1jZ/QM7+6/S9/2qENCSyFQH+wxufga1zLhaHaTnSeeQIcZx4ZrHNy4QrW7y+svfotrr13lFHlE3/MJdnLAy//0txn5mt1Lb2N8jCQbMZCyFuP6VYzWOBwbp3YIWR9kxJ39ffRoD719i1kbI/f7d+7wd379rz7UHN+FtLkb7QE8emqD8xv7TGbQhChVinS/LEBEp3ZUha4TS4czFZCgZBkLoyskrezWNvsizN7nvKw1bG1uYI8qlFhUW2M0On62QkcS5jYF1jRmXmYJcVsTDXB06wKjEp4+N+CpDbCexdO9Wm+h24QeZumOmzmGDFNYTBAwOWVmUG9YLyz2sOFwrU8vH+PqRDRpZxjT/Bmh6JWUeYyRyEryUQzQx4kOqmSl4fQj22yfOUY1a5lMKo4mcyazmqpucS4saCDogotmwQ7Ea4+0gSwmNxlSklfbvbK7gbCkRhLIKkpha71kWBrEu1j4R8FmWfLyOzptlSJ77/jQgjfWgvMNqlFSpD5bwO+mbelnGXlWQFPddbDuxvrW00wm9NaLaHQFpChwlTCbzrGaMTk8pASGa2uM5xWtwKRpmM3neO8ojZJnGcbGOgxeIxLoFz3a0uMdtL5iMptjgmVW+dTlUwkErAR6ecbm+jpra+sgBUJGNZ3g6hoTfJLbdCdvwAohs8yDp3bNQqNruhsDEB6ymWISCBuBfhk3rsd7OSf2b/Plxx7leL9HkZxDk1QEmSrzO7fYe/0l8nLE7XaNE0+cplhfp7CW0FSom/K93/lvePsbX6OX+MGI0B07W31OjE7ywz98m15VUO2NUY27UCBQaODw0uv4+hB35ybu8g3saMBBcFx79wUObr7B0a0jRtpLe7riZhO++bu/jc88Wh2hVYVNqehedWG8QGkFZjRsPn6c/ukTHDt+lsys8fLb7/DNF/6IW9dfYvfGfkSA6AMb3VVj233/fkbnY48JX7y1wY09x+7M45JSJb5RulhrfEZDVLoYaxY6/84+d+5xl/oaFN66foMnm1PM7mnZE299oKmmmORZJYZxYWsziesi+BDTWzv6bgVhd/K0GIn3mHDIcZ1zfnSMQeIPlo76kmbo0O6DjvW1LVyrBMnIc8GYQI/AuG2oKzCFMugL68OCaTNPcZLubJJxEsOgl9GzkaYJq1ljAiJZ2qxTnqu1FEYo1zM21vuc0k2CV6qqYTxNRnhSU1cNTRuzThFJ4ZllEH9BcyzOZXWWEjDQ5SuWqwYclrzfp19Y+pTQy2iqhl5mF/cwytkewugaYtSwbhtym1PYEjSnbQNClAoFhbzsUbcNketNEwfxohGq+ZysV2OLHBXoZTlt2QfnaetA6z37h4ccTSuUgFNPHWIzyEKgNEK/zDGdq592qTwvGfQNIVjqOhr4GIX3uBBiJ+MMysIyHPYYjUYYUyBS0Exq2ioK882SxUm8Y7zRxXAQkwZEIyINxChn5/I+JNJdsEfGMCwHGNfjb3zm8/wPvvyLZL/5r7N7OIGjA7IMrK0R48mDwYaW3ddfRJuWev8O19/Z5PwjZ7lx+W22BgWvfO9bXPneN9lwfpEirUDr4eKbF7ntv8r8xhQOrlAfHtB1ehOFEsUGhZu3mN7aZ2JfxmuIgQo3o/RzTkqU7XVce5gdkTEjJ9I8C5dOuvTwrjOvYy7K+rlnGZ7/FGef+1m2j2/z9qUXuXn1m9y4+SZX3nidnf4Gw8GAQe/Bs9P0fb6Xla9utBNYr+acKUvengeaYLtTj0Yq1dfoAsSxyHZEVckDXjycIUjKYIzUyMnjp8BLZK7uIZWtNWyuDTA3o+E1K0a8O2ExMd09y5blQrxnwYEujIJAI8rJrZxPX9jibAnFile9OherqPdBl2/RK8mKFiTHWIv3LVXryWwfU5ZYXzOuJhzbGrJ7WFEFWNaY1UUBreBjfQXTK7BWFs+dSVXGuqqCcSOL6eJdGrERsDaQFyXDUY9TJzbwAeZVw2RWMT2ac3Q452japHhMd8Um0oZE6yqpbm5KKVyZk44WYWHPisyy1i/oWWVnbZ0sg3ZWc3GtT1HXILHyXm4fgl4wCLk1SONQdXhtkJVlG0LAB6Uoe/hmjmscXVe/AJg4g3jf4to5uVUym9MzllD00QBBK3ztaNoAziMrpeByYxhkGev9kuH6OqTOCvH2xZtSljlWBrSF0jpLXXtap1HhYAy93NDr5ZS9EmMLBItrakJbgWsW0qaFu6iRJsmzHmXR56h1EDQWaSeS5EG7whkPJ26KBZRik7xZZmiyEae+/Ovkv/m30LHjaDJnzQcGmXLi3DYX371CJgWEBuqWm6//gDtX3yUbHeMtn0GY0Mx2aWZTeqrLfmSaRONimF6/zY3rX6VQpSdxAUQjk/KxkgY5eI/Hg68xInjv0KAY6aLtuggYKAEk9dHrAoyqdFtkQHCAw5MfG1GcfJLHPvkbPP7sc7z6zou8celFLl/7Joe3LnPh/OPsbB7HSY4z5ftN2488Vo0tvD+666/B554Y8fLFW/QmGTO/Fl+ZpJCa5G6IkOVL46ghKVyCYnNDV8FuEUwJsHt7n8P9Leza+5s3K44kF0/td6J2VFURKzEzMwRSJ6lYYZRlroQgtN5hrUELxyMXejz3mLC1cI/f6+i+F9v9+GM0XEPwuBCpADSnLaJMMbiawirrTc7GRp/1QUEzjh6hLjp+CvjAret3ONw9oN/PGQ5LRsOSteGAssywRshSycaYMJFIgNQo0qSdMRYqj4Y8M4a1Yc6oX9L0Si6HwKRqIwWDSYdO8RhV0I5n7BJTQFMlhfh8LzdCscJovcewB66esRcsWS5kGM5eeJzjjwUGZUmW5/Ty+zesvb/Rlci1ROlKiIVKZCmzQAQXQnT9swxp0+vT7kBHaAePa2ZYazBYMrH08h4hybRrnRKaNjkSIRa0yGJx5FFZsjYYkpU92hXDF3kWyKzFlhlF1sd5S1l6WhcQY8jEUuY2UROp5JsqvqlwzSQaFLpz7QxOuoFliYrFuyaijC4vm+RiGnjY5IjW1eBbBr2MaWb52M9+kf2dPiqCW8vouT7sjzEu49S5T6Ofyrjy0ktIo+ROKVHM0R5mfIiSEbQh15Yhy7XduUmdYHuIMkxOm0kavxB87NqcPBMflvUxjKYiJCniF2976qKskZIwiT9YeJCqCwF+DKbFbbS3fg7ZPs8Tz/88j3/ycd689kNeu/Jt3rj6Drt7jrM7j7C+cYwQAl/9xp/SP/nIA8/tqplbOrXv/RsAZ+FTz5/g7a/d4bV94aaPHKqVpF/u5GGyvPZF6rjRpKOle1TTFBjWh1vMxkI94x7NWERza72MnqnISH3OjMRqbotsNF0Udoo8cecdLz3JzGYUxnHuWJ+n1kAq7upQ3F3/+33/oGM6naeu3DHpSU1sNSViKPIepijZVmV/UrOzPeRotk/t4/x0mn2jgvpAE5SmdhwdzkAgsxm9Xs5gmLM1GjIYlhS9PPZOI7kWJPQbhGVHYUFw+NZzsHfE5Rt7HExqfJDlXek2o+SpLAt0QdfaPqLacJeCBrHkhWFrvWCtbxnYEhFDnueUec6jm2vJWxZCp/C6z7h/IM1YgsZSSSISy+6piV0CiCfeBo/17SJbQULH0bDUMwJtNcfYnFwyJM/JbcZADLm11EZoqmrhLmWZIcsyyjynX5bkRYnrtHPJ/Y8LUkFSBDmz5LYgz+kqI2AxZCmpIEacfezp1ta01QSb+pJ1xXWUhF4zQYuSug14pywLMcQTEGIFLnlIo7s3n3J6vceJjQFnnn6SM2eO8fwzj4Iqd25M2L3xLqMS1p94jlZGbNsSZ2puvfxOPN/GoepRdSg1C+WFLpOxIf5jVsyOIaY6W0JE2yvsVVgEJMBol+2nS+VGfMpiEXci7RASDQXLEp0qqQiSRI4u9HPqzUf41M/+bR7//Cd59+Ayb9x4EfQq57dGhPGj2CJje2ON/dvXObPW4/K7bz7U/K4a2g9zpz/+JPz05R77k4ZbziCUUTWARiSZrq37wEX6b/pQnwqvJPUkgjA5mlKNhwx63dkshxFY6yslAZPSzzrhfsdehcXOqSmYt/wMVZIuPpCZMad7ymdPb7P1IQZXeTg+F6B2nlwM0OKDosEQQqQXa021J1xLv7Ac21zjzt6M20c1nYQrKgySMeygZIiGsfWepvWMJzW3b08xBooyY31QMhz2GQ4L+v2CIjNYGykxUcAHqtmcGzf3uXZnyry5W7YlCyTL4llfkAmdg7YwzJ3fG9evWMPmsREntoacPrHFsUGBpsqEqqDe47yj9ZFylYepMoaxhJAq+WSKxxM0IVL1YJQ2tFjx9POMYLNUljFV8tS0OIPiakctMzBCZnqILSiSoeznGayNYtCFiLisEayNBnO1jM1yqpYJx4tk9BApBZGoy9WQAjlEtKauSQZ3jmvaVLEouRvJNRZrkdzibUY996lAsV8sDkmdYrtMmYcZn/ri00wvvcbf+1d/k7/5r/87LOr8K5w8MeTtF67y52+9ytqJ83zpkz9NqcopU5DLJhdf+D49BF+H1F3GpFmRRTp2V8VeV2YrviZuhHHa5K7F12XrLZdl5y93RjcZ27Q4TbfHJ9Cg6f4l0gEVIS82mA+O89wv/DJP/cyzXJy8yuWjVzj22DGe3flV3vra95mOPTNjOLVzghHwUvt9jpv7u2k/ypD3+f79EG9o4Imdkse3hbevz5n5giwX8DHi3pU3JSSj1QGhbpPp3NCUTmaNYa0/RGct9biAjbvPy0gsulMSS5US30ZaZIvAbbdxBBe7WCh0jVhAApV1DI8Jn//UMZ7cvrtTxL3z8KAc7r2jmc+YuYDzbkn5pZKpPnjUFuQ4ssyAUTY2hxzNa+qmo7JWCsqkBdqFvRfbmUbZnvdC27ZMJzUiR4gIZS9nOCgZDQtGw5JhnjOdzLl284CDSYXz8fMW91t15dq7lR3VQxGoJJCiKZhHOqdkE3qjglPHhmyMSvqFxbmWNnQZt9A2Fc5HOZpHPrR34n2NbjAWr4ZWlQyNhjYhI8WlfkaKFAWmzMnCECfgmoAGR5YWUEyvizcL8YiJbc1jWbwogA4aUvqEsJLaFhtKpomwpAyyDp0mx3nRMUji3zR0Odopiyg4jHpwNfVsjK8rRCyaMtq6pI54Eyx52UdtRqtuAV2kM2AS0bCmXPCHGb/4xaf51N/5Mp9+6qf4wfdeYV7B7t6M3b13yc2UzAgvvvUaXJ9S1Wt89pknKJ3llFiczLny4uux0HoVJX1WlgsKOo8gLcBE+SzBWqeXhO5Bhy79VFdesyzg0aETILZaUhaFWjp0tzpUYJ5ntOUxPvurf4dnvvxF3q1u8ub0dZ551vDxJ55hfgd62zsMDuZYLGubxyjFUBQDcvuQ6pA0fhRj0xvCU49knLt6xNkxXD70jL1dUFKqxKBLeoCDEluQd14g0fAaiY1QRSA0Hj+tWBu81xRaC8c3lSK4lO1kllXspKMRZOGluNYtkFhQiWvXjBluOj7z/DbPXlg0/33fVdmti3s3ngcZVduizlO7WPc6qNK0jtzE6mvq5jQaIAij0mCOr1NXNVd3Z/i4e9EldcST6TQfCdV319+5tkCXyh4CzGcN81nD7dsBY6K37EOINZ87b2FxtiFxuEtqLNqOmOAVD9RRR50uN26eKpDlGSe2R2wODYV4ZkeHsfJelxYsRF45y8htBjbr0mI/cHyI0c3xmlP2N0BiwXJJGWSszMfs/9vemf1Kdl3n/bf2cM6p6Y7dfXtgt0g2RXOmRJHUrGiiZERG5OTBSAJkQoL4JUHylr/A70GA6CFAjMAPSYC8JI5tGEkcxYYty5ooarY4s9ns+U5Vt6rOOXvIw96n6qopdlPdop7uAi769r1Vt6r22Wfttb71rW/NamJU9MoSIxWehjCv84NU1kQQLIpm1uKYUPhAVZQYU6Fslf4uKbJE5wkQ2RHEHJl12GEIAReS7KFALvCkD+rz6GclGmUM3rvUNFHPaWcz2tkcTeJRJu2slDJHCQnSGPSJvSHXpzNccAtdJBG92GAxpgPgbjvSLr26zWs/fJn/7r6DhD4ajRdDMegxGPT55Cc/wA9f+Ta1usD2eMZufY3PP/k4Lk45VxiUWeHNF76DFWhnDYhJFd58o6bgbHl7dQWEhCAsHW235TtpQw4dMEm34hBY0cnddddHgCx8tAjN8u+ULqhtjyee+yyPf/7DXKhf4c3mZfoPnOPMAw/QQ1NtCmtntuhd30E7WF1dZY6nKPRtq8B3au941Y7Ds4+tYKe7/HkdeGHm8VLi8qEUWTYtdBVdlQ/tbp1lcW+kdlc3a5hNeFtbmkSwTWRdIpXIsuU3O41IgugIoFVEtMnj61PWOY4t/dXAb374GJ97P2x1L0sXivysk02SR8v/383OPRjPEgNAEoxXGpva8hdMgIBzSUtlODSomefU1hoHs4btcbPMvmIXZHUFSLWMpWLnLDvvcThWzRzcmEdM+WU+18Fgi2siXbN+dpD51Q+75UVOF7v7Ie94rVjbHLK10Welb+hZhUkjxrFpBkJS48vBo80DVm/H37+Nnq7FO4NvZ8Q8/GMxfTS/ve7fpmkwQGUUdtCjEU8zbxfal91iqZg2YnQtqtfD9DUxFigrIBoW+FnIi5ew2+UHiTifIiCVFbrSQxNFTOskToOPtLM5bTPHtwe4ekYzazGqyPhY2hwxptle2ipsv0LKiumsJdRNknoUlYjgkvGdQ+nHXQa61JcOCEUPigLTU9jSoqzBFkMqu8rasOSR+9f5gz/+BmEGrT9gbVDyxP33g6k4/aRCtOOtH/wIjOCnLRHVtePnk32Z+kI85ITT7u4i3UVJIS5/231z+PmwpPx0KiXd87rt7CLMjGZuSj7wxS/z2HOf5c2wzyvtq5x935j77j3LgHPAHrDL/GCftWGPpoXV0YCSlqLQWSLwl2vxpu+7r84hnb0PzoY1Dv5yh+uXPLuxZNenmzTh1Uvn2LEMVD7EwmI905r5xuOblv5NOCukYGh9BAOJqBByhV0WEE2IMXHFfczjoWLm5UKUGaNRywef3ODj98JDP+czdu/jZ5quWEa8d2MfevwxZs2cnf0bTA+muUs2TW2IkhTGjAn50FZY7fABzp1ap2mvM5lnuI5O5LzDWw+9U0UX7qek95B2V4LAdKqphJvFymMuCGeOnSxBydRrkrv5YBEM/owWYxeIaGG4WnHmxIDVPgzLxPkLwacaVUi1DHKHsNIGHwKtS1nMrezWka7RhBqGVY+i6BYlpf7jyTjvjrC4sb2LiR+LwdoRMcxxzTxf9RR7dQoMtIHGzYgN6LLFlJZqNExYbF7EdLALZAGRLBqPNnqBLXbRRocD+daDD9SzGfPpjOhbom+IzmEliaUnTYD0/CigiwpT9XG64GDuaJoMjZBeR6lDF+WQcM/ddqQ9sLHGyr0nuNo0zJxj0njmrafqDegVIzbXTlBRMsLy2ssvURcV33nlZR546hH6ukSrLd5XfQZTjHjj+a9TKkUzrYlBIKoU9dIpOC3f8yIa6iL1nHKlGzLHFdJt9hzDdlDFIkpeYm8c2vZBBFEw1cKTv/5FHv/iF7kcr3EpbhPP3sOZcx/mBMfyCqQ13lxdZ34QQSwrgxW0bygKg9Z36x5+1rqrGA59OaAJDhtm9KWfxjidh0+yzurXtvnq1RnfiwZCagry4e3OusMEFlFlSMQjZSyuDcxnvE1dJkQS22alD7Usbl7vOmQta9Eqldu/I4qWOY5yxfHrj6zxxXNw6qbPKLy94yyt8jICvtuOtC997mPsjff44Y1LFE2Nai2Xt2/w2vXrjJTFNVMmB3Ue7BooS8PKMBBin6Zd55WL28ybsGDYLA+CtKKL7boIECIxajp5gWXkmjapECBqkGVxK7tZpCNIy7I5t8vbOv3hxWHUZRICvWHFuZNrbA41PcMiok4v6RZQhc/Snlq1KKVolw7sHe2WTrcwhqI/ol8ECptxQVH4AJPpQRL/7iwKbYiASYwBIsaCDw7nQpJEzKuZGk8UQQTXtDg3pp4JwXuKfi+JXSuVAW4BTAIfnEOpxMEFEmG/048STWgCoXXU85p6dkBwTW4OCIsEJUaPUsuoRVuD6fUJakDdQuPqpCAmhjQ32C85fDHFdaqbAnyXPqHaWMX2FRdeeYkg8PqFqzz66AcZ9fqsDzdZWzvOsY1TWDFUEXYuXODkpz/L/aslsSyYmy18cYL3PW1QpubC8y8QcLj9Gh0NqTM1bS4fD6dfYeF0FEmoqmPc3hwJatJnzyS9xQ3STTvo5AUlC9jPlDBWiie/8HmefO45bohmO95gY/gWJzYfYJUHD/315CI0mv5wFV0NKYcreD9DmyRqdKd2OM1W+QfOQd3AZJI40LvjPXYmO2yP3+DEynXqGxucuvdznH+kz5nzcEbW2f/LXfauzrnRrLGbJ9OGjBF2UdGCQkluYpAOOwR8pHcoYO+Kci0wVRrX79NKdxjmCC0fgD4LJigRPJE2jjl2TPHIIwM+dg6eGEYou3U8nH6/fWt2if9dJmcATOoJpdrn8TPvQ9keJjgeDoGDdkYhDuUL9g8OuDbe49q1G0x2Z0zqmvHuLoWGxntef2uHpl2+my7FT99nyAGIsaunxMVCx276Z5eVRXXoL6hEUYyQ5BuXxbIOxli8YoYvFgFeegrVsOTsqQ02VwyjStOzWVFBuhblLuNPgrIiCufTwZbU6G69frd0usN+D7ymXyiqMo21iDGpeolsE6Ijhk5xi0SZIOlMlgJGWZTtIzSEtsnTOpcmMUk4Jjk7qMd7hGaOMgViDMom/m+6uVMnSSRxRiXGNB4kj35vGo+ft4gPtK0nhm4q4GHqSEqvg484IqYs0WVFEzVt29C6SEhCh0sqS5eIZEpL7Ip8ZIW0u7DBsS3KoWV1/Qwv/vRlRr3jFGrE+miVjdXEUTx5YpOeUUybiPINp/qWM/0B7eAM1+2U7eYKgTXOPfVZlBpx4fm/wsiY+f4BRJ02SVcJz3hkF+EuUlBhWShcrtQCZ1M5pe7S6u56L1Y1n0hKWuY68Pjnv8wTz/1tdkxgR66yzYgN9RQPFOdu8gap+UHH1FUUqiHVcAXfjtFGL3D6O7HJ/g12ZlNagb/+/veoJw17ey2TibB3w7N9Y8y1G1fZ3n2L3f0fcmprhytvrXD8oQm/8U8/wZefPcP6fYpP6zVOfWPCH1844Hso6mBxWf1qsUUWFL1DawIEF4itIe4A00A8pfAe9hq4sB352k8Dz+94xtEk6lUeXb6IxEgtv+iWuWnony74jaeHfOqEcKLqlq973dtHAD8vCr4T69khrXHEaAixpFZzTFOjXUtrhP5owD3rK6z5Yzx8/h6aBpQqme5t861vfBvkNSDyxqV96naZOqRPEiDPP4zRL7GthdIXLKZydnnGAvL82euwxIK7vbzMytJrdoBQargQpeiNepw7vcHWSBhWCS5N8E96/bb16QD0nhganA/J6buIb1vmTUvT1NzKbu10BxXBCYOqorAWYsKawnyeIsv85vOMhYR3dZEhgogBNcAUijbmJoOwXJ7F0kRAIqGtab0DXROVRoxOTQ0qp7MqUlhD61okBPCJphJi0oGIbSL5d1Mquog4dkcYELv3ZzWq7BFUResDrXc5os1pdC7sdf4lpdoLgOiQ7u6d2+DYFmVfI+FNrFmnKPtU/WP0V9aRQlEOKzaPrVNZjRYIoaVxU+gP0M5waqukiGO2r1ii2uTc0yXKBC597wW0idTbMywmcWqlq8J3mzilWx29K2VksoAWYj5g46ErJfmETwhbh62l/++LMBXHY59+lie/8AVm1Sa1uoo+eJXz1YOcHnz0Jj6TEGPB3tVtgpRYqyhGKxS2QAYDyrJIE1/v0C7++Nvsh4bt+YSv/dH/4K0XL3Nxt2V3CtEpCKluEHDEOOXFG3so8bz5rf/IxfYSVfiXfO5jihPnhONqyI4ZU1+uud4Yrs48LqaBnYttkL3Z4i3niMw3fV58A+rrE4pfG3Ftf0qj+/z0YsNr+4ZL04KZz9q4hyAcSM0ZViKV7HPf2ZLHPjLio2fgIR2RjqP3C7Buf14EfCe2sTFiexqQpsaEGcpEpjpQiuEggJaAmtbEmWfPeIgtldL4fp8nnnkya98GjNa8/tYO0zpNU0vZQx7Fswxjl+BVh/F2n0SgW/jY5Qnd4h1SB0tbvluvJSzRPVQEotYMVgecO7XOsWFAxzluppnOGoIolIQ8jigV8ueupW5b5m1D2/qsWRWovb9tff2WTrdflXgvlFUPpVJHFyEQGkdUBhc6IW9FagNNi+SCS3ONjMaIpVAWigLnA752aOKSWBzj4k0KId0MIRJoiTXETuij444WlqZpEpYMdJV2yayCKN07ynKGhyLTNMEVlDGYfp9oSpxX+BCyQ0lXwedDIEa/2ARdyrhoEgiB2w5Duo2NTpzFKsfm+hZvvnmDouhR9YeookKKEq8Nm8c2GVQVeuIJaF5/8xpIkVTHQsP65jkCu1wLl3Gqz73PfBat+1x44ZsYtcv8xg4WhWBSJTgfiGq5lTnM8Y05yhellts5dt1qnUU6Wl8goqRmIi3nP/VZfu0zv86kVxGqAy5fb9ho7+Hp0+fg9M2fPiLSsnpihdn+NlEM2liKwmJ80mPlLjIJc+0yfSt41/Dlhx/hJzfm/J/rbzBrWxxp4KZVaUSRj4LEFSQG1vwlJi/8Kf/+K8d42T/Fb3/yUY4dFz7x0RHnXm347rblR3stP31zzNQXuGhAcqVCltCLaMGgEV/xP39QU7Wecqdmb9ZiizkHB4EGzdwtMUbymsfYEsMcjWO9CDx5ruIzHx1y3xlhdChY+eW50V/Mdva3k5MJDhVbbAueHr1ejw1XM5s2BKMZmnTPjEVTGKHvLbvrp/jMp/pUheGr5hV6peWVizfYn7RZXVUSM6IboSUkmE9ipiZ2E8a7NVAJgpBlaJD+Rj4NOxgsX5y3U9EEsYa1jRH3nlxhbaAYlQValShJAVrdtNQ+4jpKX4wUuqC0JWvGEBVpOECGK263a2+N6VpDtEksXA4PclRCVCq3SgpBlgeLIj0mQQ1z+ipgCehiQPQt3k06r3YIKCdHBml5tHRV19T7nn6dRDC8axGfx79nvQCdhUEcKdVQMaGxLED3xB+km7w7GCDViEnjCKFdkqcPXwzS9yH/rpu7JtL13y87h+7UNrbOEZsJw+Ea1lYUZS99FRVaaazWrK+t0u9VCAcIhqu7c8ZRU4qmUBah5PhJjZFtdi4rQlzl9Ac+Aka4+P3nsbpldm2CCWAlC7Z0IGR32MWcKishhjatbbfmcvi2FnzX+CsQFUwRpjTc9/SDPPSRj6FW7iP2PPOdl1gdr/DAg1+A+99pBVpgStkrCN5SGosyGqlKTGHuan3HBzUTV9NgOaaPc/rMvdhXL6DF4yNZU0GQ6JfYN0IBjLjMxR//Hv/5K3/B/dO/z28+8wzHtvqsDQpW9uCBxvC1b8Drl2fs+CF7LtCIXmyfkKGBdHZbrk09yADZF2CAagB/uH01fVAfAkZBqRtOHRO21ixnRvCJx/rcdyKP/JEuRX5nvPvmUOCX7ZbHBzWDqqRnBuzXU0rbZ60q8BLAFKyPVikUzGdTVtrAyGjERGys6YlBVo/zyWefwpZD/uTbP6I3KHj94g5Xr49pO20a5KY33jnWLlhYNv908MHhx0u3QSWzHhZ0sPx4ACWUvZJjx1c4fazPqAfDQihNGlpgtCGGQCwEE1PjlBaILvUaeNKEC+/qdJ+odE3tbTK0W0s76lTMShNhu7w99+13bbAxkgZK+SyJmD5wKpqlab5RGazqoayhUIFQ1wQXUEFQh06GKHrRChkzeH54MFwnmaa1yXBrXNBJgNRhtkgdMpUkU1IQAS2Yfg/pD6kblaeMOtKEWrVUtV+csEuGgs6fNcTuxJXcCnvnZvoDqn5JfzDC2DQNuKqqdMELw3QyZmNtjZXhACUzgvdc29tn20U2rVCKINoAPda3HqSM17gYrjI3fc596JNoW3Lx+9/EmmtMLl3FRp2iBrr+n+QcrMoj72OSLRRJtK8l8b/b0YkmE1THV22YS8OZJz7M/c98GrN5DrXS49UrN9BXKz7/6MMs6mY/1zSQ8PtCaTQRbQxBLLa0d1VI+9YrbzKrp3ivsU1gvH2DWVkiRUucN6mFHIOSCqssRiv6lWXULzi2scHHNzdZOXkPJ2JkWk/oSx89FM714DSa83bIGy/XvLAf+dH2nNe3a+pgCFHhoyJ6nVZXNFqbhB/GZXCCpEEAnY4y0mJNTV/PefjMiM98cI371zWDAtZ6kmkNOmfTt3ej3T31XjCdVwcb7EwvUZSrDAYV42aObj1BeayzTK5fxYhhTppast80jOMBztXszTyn9Qgzj2ydej9f/NiQ7/7kJ/R6hvWNAZff2mFnv8blQljX8s+CoRQXnWIpdujcbsrStCxbjFEQgmQ/sRR0QgRjNWtrA7Y2B/QKWO0LK/2SQkMMgULrxE4QsMYmbruS1HWgc1dqyBCdrpAQiZLuHy233re3drq58avNZ7ISvcRRFqRjKLQGH/C54BIzN1cQWqCNgaERTFFhigJva9x0RpjPM4XME6KCqOhiU7qFy0uqDkXGMeYNuIAlFtJP+frk4XYElLYok77EKmTQ48a0pp21VMYsqGeRZTeKcy3WWBJ9JbMflFqQpwGMyG11M29nVa+fxhmVFVEpVFEQJA1v9DGwfzDmRFmwMhqhZZsQIuODKfPWERZKRgKUiBT0Twon2WX7SkuQEScff5qoPG/94HlE5ly5vE8VLVWEoCAqQxuhjYIYldWaAojGIThipjcoRGuU0TnL0WlcvJ1z7/u3WD/7LL0TT7G+ucal136MvyI89oEvwWO3cw4asBhT4Ns0x04pjTYFhdWUd8HT/c53f0TIhVaaFl8f4AJsrK6yerKk7Amycpx7zj3Lw+cf4cTxDVbWLUWhKKsCWxRUvT5lr4ctExgtAoVJ0HT/tObYesVZB+cva773YuBgZtjdntHTA/zMMxHLNZ8mJxNYTKLIBBLWNVSxRfcFsY5HHl3jnuOeY/2CUyuaNZPaq+tZjTH2F/Kg7yXo4Hb2aHfHvDa+wIyaxoA0hhvzAzbLNTajZmW4QZAZg94qqhqilOHEep8tNBulxksEsdzfbnH+wXt4/vsv8PUXXmF9WHF9e8qlq/uMD+Z4l4KBrBhCV3FLQVcXvabMq8NvWUCBHiQuONAioEvL6sqA45sDVoeangmsVAWDXoHkqdlYnSE2waIzayE5dZWdcYxguwAx5CaJGLBGL9lN72C3HQiaYsCuHyyF00bbHPnl+KfjJWZKRlw4PlkujESKsod3EZESa/tIbw7tFBXnqbcahckRZlgsbla56iCAQxhth9X4DsNZFLsERFOUBWWvjzI9WjE0IXAwqWmaJhem/CK5EyJBRaJSGGuyg81YsnRTJTrck9y2fHemrEGCStKdKqZZLCqRrH30ND5SVkNGw5U0LdlHJgcTLl+7xsn3vQ0kRaRkdPJBhrLNG1e2GVNy+okPgxamxnHf+UfZeeUSx7UmGoMUBb6s0KNVXOMorUUXBbookbIiWk0sDBQlqiiRPCJJaUvUFlNGbAW6OElRrPDSy2/QXN7hbz79Ufjgu7ntBdCU5YDWzymLKukVEymL22k13dpOrKxx/PhxTp+8h9ObJznY22E/Ot732INsrJS8/pNv8OP9OR/4yKd5/P0Pp8+u5fDWurXpSDH0nEbYGBieOjPEB/DjAjVVxMueb169waW1dd688BriPRIjhTGo0rK1dYKzoeHRe4bIFiA9BgNLaduUQcUsX6iEomeXXPR36U3fS6d7xXvKlVXOr5/Cx5bWgrQORyBoRakCK8NNojhs8KgWVtUgBT2uoW3B2AGNn6FUxfG1NR5/+CGOnz7HKz99je/9+CWObYzY2ZtxZXvMZDxjXieJxtiN6wEOa4AsiOU5E43iGPYE7zVNUBRVyepaxcbagNVKUVpFZaFXFDmqVVkXJrG0km52BMmBHBpFQLTQ1XlCiLjgCT5BrhqVpBHCrVf/1k63E4SJHT8hpepZOD/jYF0KnkJ+yR86xIjkCrEx+XQQTRsjtfO0dU1s5ozKIolVmwY3b1He4bxDq5wG50m+i4UWMk8idaVEZNFy6gP0+lXmPLb0BxW9wYioe4wbz3Q8pvYhtSvGiDI5Wu9690Rl1aSIyeTO7gARWEAOIUMXtxtAdzsrrEWiQalIWWhKazAqKVb3yoIYoCr6rI5Ws7ZBRJqa+dUrlG9zusuIly3LZpwRLjVEvc7Zp55h4/1bzMaeRz81pK80YizKWpwSnDIoZVDK4qIkzFMb0OCiw6NpfdpghUApBu+FENp0Bqoeu2+9gbu+z1PPPgcf2vp5H/ftFhU0De3BnCgGMxjQxTS2MMsK9h3Yv/qd38EYg1EWu6Ood3dpj61SnSypVMtE7bNy4U1Wt9Yp+8UdjCMPEGuCcxSxR29QJtGfgUpQ9Vnhc36DXa1p2zOoHDSkzkaFNoY10ihvDBA0uDnM9yAqol4Dm1t0bmqHjqSmjm1gCAxuemfvdWnt3Nlz7E0usVlE/LxiphSuqsEJURV4P0Wahl6vwoeGUERkPuXadkRVnoFRrBcVB3sX2R7PqOw6pWs4Phqx+ui9rPU1X/v+K1jdsLKyiWsD+9M5u+OGZu6o65bGe4gNg35JXQeariApGq01VaFYGyiqfklZFvR7JYWFysKgNAyr/oLyWerEv1VaklPNsIHkCyYRXIhIVAmuICSd35D8iM6i3EZpVGQhg/pOdhunayE2CQWMfnG+JL6q5Kq3J+axd11BKumQdt38WeErBDr5fO/bpHkbIrPG40JEK00xKKm00LiWxju8c6CE4FuUTvSx1jt8CGit0RkCiGhsMaB1UAx6SHRY5RmMegxXNmgpmO1PScMVVX5OYEmOTuleANLo+K4MkotoHK7cJ7ihE1a+G1MKiqJImg9FkYWbUztlPW/wziNFwcpwiM5FLdXOee17L/DcMx9858smltHJexlymZcuX2FPG8LqGVitmFJxED2RQOsczgdciLQ+UNc1rRdq53E+0LQ13tW0TU3bzokIK0oxpMYwo9QRrQPEddbiGs996LF373AhRRKFpdKKeYRpCPR0ahW3RW9R0LsT2zhxIn0TIVaOg92Gv3rpJzxy9mk2cbhSmKiGafR3yJEQwKJV4mjSNEynU2xZYXsliKMvs9SI1hPSraZYjlyPqNASmpbQRExRwWyWOlVmM2TYhxe+C+ur+FdfQtZGvFXPaOop167e4M929lj9yBf58ocefZvTfa/N4CgKxcQ7bKyJTlHYEuen+GlDKIAqomLLfLrPrA3UkxntZMb+vOGn13dolKWN19nbnVCoPt4LU1dTNzUuRFYGBb1ixP7BnOnMUdmS0aDEaMGTKHuhcSlIirJgFmkD1moKrbCSAiSjhV5lKMuSXpEmjneZeyqOHerXE8EYWbQXB7HE4JAFlMGSs45LdZFFhA0uQ5G3Xr9bWMzFqxTlpQp394JxUb46pMa64MgtcReFJE5tR+1KoSVdMccFj3cRYwTnW8reGrpQKO8Q1yCuhnaOqWzqBAoBFWPGyRKLQcSCsdiiAFNglSBugrVFwuOiRZtuYfPK5bcb8qnWYchqCRglyb38wEW3qwhambTQt5lvfzsLonCRfHiQtSOE1jkETXSplDscjXKXnmfuG2KvxPFO9et8g4uGk1ts6Tlc3WXvoGV/d4/WH9CGOa2f4wNUCD3g+6+/xgtvXCLWkVA3zOYN0/mUuq2p2wkbaz0214/x3Mc+yac/9gS94YzesKAsgfI8cOYOViBtdFEK8REdQo7qhMLe3dSIn1kRUQzuOcbDD9zDDPAE1oeGUxWMfHOHMJGkrEJBzPzjXrFyCPqawcFF/GyGqfpIfx2konWWr/+fXZ59usfVN77J7pXrGXNumB5MmU4POJjMqA8a/N4u42bK7mwfVwptqdjaWmfr+Gn685qd//c8r+pHGXwgufK7F8J8d3b54mu8tXsBHSvWR6sctGPmTU01nzHebplNa3b2brDbzri6P2beQqSgEAVorNJ45enoiegGbUtUrIk+EEKqa4QYqcqC0hZACga8b5i7iD71azxx/zluXLrExZdfZDqdpMzbKGwRcMGxOhwljNUKlU60ScmF8kCe9hwjjpDhxsRuiirVrNJknJDgA5Kym4ohj3CK6TEuEHUabBB8eFfSALedBty1ewKHIjvJeVJWHMsCzJK5dMkXCQtP1QUsksBpURm1lTzzMyReng8RMRVa9bEEYqgRN4XWoEziVNoiTR8O3tPWDTEGRDQojSkqxJapEBWmeARRCi3JmXUNE6mK3MHyKuO2KW0ghCwrYBZwSeiKbIfWIaIWp9+dWtQFrvWItkQy9U3lVEcU0QtQMRyuonRKYWbecWlvj5ZlzPROJmJZOf4+RuUxJitjRg+tQH+UimUKRBui1lz7sz/hd//L7/LTRnHlxdcZxBS8+RhwMWJ7FfVejy984nP8w3/0j2H7TdisSC3YnqWo4C9qmR+sLTo4CqXzTwKFTVNwfylmhZ1a+KNv/JiPf+kJPHBsZYWzVY+Bc78AdhzJ0uzL/0/GCVaYzdIh/NKLMBhwfXqVi1de5tK1y1y6fpWdacNs6qhnDzKbnOUPfu/HVO5VNoqS06MRZ7ZOcu6RRzj24MOILVDnH4DdXThxnFikdnQkjbMSsUQfmf3FS/z+t/6Ekw9/juPlr87p7ty4RDM+IMy32X3jCi9eu8r+zg32ZzXTJhCjTnvZWirbpyoNikjjGkLu5/O5RtuEmB3ZDGKag9Z6Twg66QcHR1CCsX36NqBVQdAF93zwCf7Zb3wBd+Ma/+kr/46v/uAKUVtWywH9osQHR6/q0bOpaKwJmfaZQAWjVLrXvEu4rNKZl6twLgVkqpMu0BrnPQsBGEm8fp/hUxy0vl1qbtzGL9wGyspO9FDbZ0eV66YmqEw9StQ6yT39mXZF14ueaVuZaqY7zJtlL3QIIUsuGlTRRxSEaBAnBC04PyeElqI0lFWFax3OR4JrSbrRadqEtgVN7XAomtiJUQhaJ4dmlE5yj3JIsLAT5M2B6wJEWXQoLtsLUyNQ18H1brboLRZfa0I0WFMmeEEnRoZWmhAFHzRQMhiuYIxKXOkQ2N/f59BJ9g5/PaW/iEVW+4xWj//Mbxbfx8jxk8cppWb71TeoVJWuXQioLAxUT+fEwTqbW2cSHWfzzsfoHH5/MQJtIGqD9pGi6yAkUBRq0VF4ly8DCKG0zNrN7DKFvi1ZQ2Gcv+1lDD7yrf97meGxOfbgJTiYcGUyYW8yRnZ3qffG7O6PaaZT1OyAvdBynYb+asnKep9TZ45z/uw57r33Pk6c+RJ/8dUZf+NLvcMhzKGDP/9MBDY3Dz3gJjPQfuQR5hf+iFk9I5Y/R8rsPbLf/99/zmxeM4uBFdvD5TllSEmRea6t91n8KCT8FRadvE6n+1yjGVgIPgV3XsA3Ld6D1jHdDwhGKwqVomQk4IhYf4BVYEvLoMy5itbYsqIsDW0DEj1KDEQWcw2XFEiFd47gPSGCp8WYJDWQhihYYo64k3Z4mrKSWFOCxHQ/miJlvdqp3Brsbws73mYEe6fJuhQBTvqWJDWmmDDd7tHZHycmQZ5CC2nygohPHSxKo7pRFwiLaXsk3m8MDmMC6ExXNwU+tgTfkOTcBKUURVnSukBTJ10EpRKegwqgIRiVKWwBI8nBGW3wKhBE0J3Y+WGGBUs8N/iYnWvmBOZPmQZepuf4uyykSUzFmBhaisJmOcuQL3Sg9QGwDIcjbBbwDCEwHu/BAmC4y2iblE5VSrNhDE3QCY936UA0dBKaiu3xBMcvL6ISEfJ8JYyPULep0oFQltVtn/+LWMTThn1af4aoNdh1ClYw7nZPjISv/zVf+8M/5I3JG5yaXeaB0YjRg+/nqWeeRu3tceL8+6EsYWMD9nbh+CaxKhAcSJcNdJmS5rN/a3jXWRISiSoyL2dM633eNhjtPbTx3BGjRUJg5lIKLiKI0ovAAGUpjKLIRcAYIVqb6VQpgvUEJKiU0vvklLVRiNELxpCKEH3Eh4CN4HXiivt6npZBa2yvQmuNQ4HSaK1wKhUsQ/fizjNzjqigVAovjhhDqggZDVGnpi0lmd8bCM5D1wFHmgaCCLFtqRNxF1GaqAJKawypJ0Fukzvd0ukapXHBI6JxLjcGdMwVpTIym8Lt4GMa2XEIB0aSww4EvK8hNEBXlV5Kb4gkR50EWRxCk7Cd6CB66rYlhISlgqBVJ7moEaVTK2dwKQxVEWUE8ZI6rOi4e6mRIOkCHyqUyRI0iCQcp+MZp3QuQSmLMWkieWO5u5Z29HiUjbjQpDWlw8KX6QsYquEIZTsxeJiN9xKxPqPQd2tRKXRuzgjeJEglJPEViaBQuADY4i4lfn6eCZSW2Dgol+68KIq7TSTk8Henjvf5N3/n4fyDEsxZTn/sXUTsIpiPP8S//vjNqrXvYGvHbnrx98qEQW/Av/h7/+A9f6WbbV67RGGUJNVaFIZO5D/t24CXFnGKmZPUxUWiYWmdIkZNOnSVTlio8ylQ8yqphOEjoW2Tbq1EfBExuUFJSSpexgBiDLbfT0MLcqNW9ArvA3U9x4jBKp0OguhpW58PhywMr3TKfkJAeVKnotYILTGAy/UolwNGazRaBBf9om4ViXhiglnfhV+4tZ6ucyjRuXMrpwgZqvXpvFlGgKLSKRYDMbrMCkjMghAUwZMl2DSITmmqkIf+pb+iRYjeowEjihhViibzPDIjS40ARKMkiY+GmAtqShFFo62CNoX/XSDb0RzJkXIMPnepJCGMjgKWfSyL20ZShTOGkPqqQyB0ePadF9fTn7YWHQts1UeUpSgqlAjGGCBgigJQ2ekaooCSyHwy+aV1GglZi6Io0NpgxODapA0qqdKYUr/gOWjqRV7zy7OYhIskpDG4Jh2IVWnv+lA7svfGonM0kiLKmWupCoXgFhoqrXOpucgWi/Q9SkyZqCRoUgFR3AKqLDREbYlK0bqWoBS6rOjr1HYfIjTOp+g0gpt5nIsURlNUJUrplJFnAayk+uqRkODExnucbzFaYTRoNHXdMvMRpyJWKVRMgU1oWpAU1Gmt8cHjQ8RajbU2BXEu0VaDd4iPCaoQQKkUEd/C5PA4lyM7siM7stvZb/3d34pRG6xWSPAoSY4mispqhB5RBmOg0DZh8wpAo3QX4gjRJDhPfBqcZSQVT+vgiSIYkdRooCRLKKasOYqwfvIhfvuf/xPWq8j/+m+/x3/9gz9l4mBldcjaoIerZ0QC1qTpMirTx3zQuQoVks53xjYSDCGZteATRVUZtBUKY9B5XFLwEZRGQs6uM48reI+LkehSlP5vv/If3jFkOHK6R3ZkR3Zkv0J7L/QwjuzIjuzIjuwd7MjpHtmRHdmR/QrtyOke2ZEd2ZH9Cu3I6R7ZkR3Zkf0K7cjpHtmRHdmR/QrtyOke2ZEd2ZH9Cu3/A0VU/zql/3NUAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import matplotlib.image as mpimg\n", "\n", "img1 = mpimg.imread('1/00001_00000_00012.png')\n", "plt.subplot(141)\n", "plt.imshow(img1)\n", "plt.axis('off')\n", "plt.subplot(142)\n", "img2 = mpimg.imread('2/00014_00001_00019.png')\n", "plt.imshow(img2)\n", "plt.axis('off')\n", "plt.subplot(143)\n", "img3 = mpimg.imread('3/00035_00008_00023.png')\n", "plt.imshow(img3)\n", "plt.axis('off')\n", "plt.subplot(144)\n", "img4 = mpimg.imread('4/00039_00000_00029.png')\n", "plt.imshow(img4)\n", "plt.axis('off')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Question 3.1 (5pts) \n", " \n", "- Before building the network, you should start by cropping the images so that they all have a common predefined size (take the smallest size across all images) \n", "\n", "- We will use a __Sequential model__ from Keras but it will be up to you to define the structure of the convolution net. Initialization of the sequential model can be done with the following line " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model = Sequential()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 3.1.a. Convolutions. \n", "\n", "- We will use a __convolutional__ architecture. you can add convolutional layers to the model by using the following lines " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model.add(Conv2D(num_units, (filter_size1, filter_size2), padding='same',\n", " input_shape=(IMG_SIZE, IMG_SIZE,3),\n", " activation='relu'))\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "for the first layer and " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model.add(Conv2D(filters, filter_size, activation, input_shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "for all the others. 'filters' indicate the number of filters you want to use in the convolutional layer. filter_size is the size of each filter and activation is the usual activation that comes on top of the convolution, i.e.\n", "$x_{\\text{out}} = \\sigma(\\text{filter}*\\text{input})$. Finally input_shape indicates the size of your input. Note that only the input layer should be given the input size. Subsequent layers will automatically compute the size of their inputs based on previous layers. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 3.1.b Pooling Layers \n", "\n", "On top of the convolutional layers, convolutional neural networks (CNN) also often rely on __Pooling layers__. The addition of such a layer can be done through the following line " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ " model.add(MaxPooling2D(pool_size=(filter_sz1, filter_sz2),strides=None))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The _pooling layers_ usually come with two parameters: the 'pool size' and the 'stride' parameter. The basic choice for the pool size is (2,2) and the stride is usually set to None (which means it will split the image into non overlapping regions such as in the Figure below). You should however feel free to play a little with those parameters. The __MaxPool operator__ considers a mask of size 'pool_size' which is slided over the image by a number of pixels equal to the stride parameters (in x and y, there are hence two translation parameters). for each position of the mask, the output only retains the max of the pixels appearing in the mask (This idea is illustrated below). One way to understand the effect of the pooling operator is that if the filter detects an edge in a subregion of the image (thus returning at least one large value), although a MaxPooling will reduce the number of parameters, it will keep track of this information. \n", "\n", "Adding 'Maxpooling' layers is known to work well in practice. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Although it is a little bit up to you to decide how you want to structure the network, a good start is to add a couple (definitely not exceeding 4) combinations (convolution, convolution, Pooling) with increasing number of units (you do every power of two like 16, 32, 128,...). " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 3.1.c. Flattening and Fully connected layers\n", "\n", "Once you have stacked the convolutional and pooling layers, you should flatten the output through a line of the form" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model.add(Flatten())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And add a couple (no need to put more than 2,3) dense fully connected layers through lines of the form" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model.add(Dense(num_units, activation='relu'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 3.1.d. Concluding \n", "\n", "Since there are four possible signs, you need to __finish your network with a dense layer with 4 units__. Each of those units should output four number between 0 and 1 representing the likelihood that any of the four signs is detected and such that $p_1 + p_2 + p_3 + p_4 = 1$ (hopefully with one probability much larger than the others). For this reason, a good choice for the __final activation function__ of those four units is the __softmax__ (Why?). \n", "\n", "\n", "Build your model below. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model = Sequential()\n", "\n", "# construct the model using convolutional layers, dense fully connected layers and \n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Question 3.2 (3pts). Setting up the optimizer\n", "\n", "Once you have found a good architecture for your network, split the dataset, by retaining about 90% of the images for training and 10% of each folder for test. To train your network in Keras, we need two more steps. The first step is to set up the optimizer. Here again it is a little bit up to you to decide how you want to set up the optimization. Two popular approaches are __SGD and ADAM__. You will get to choose the learning rate. This rate should however be between 1e-3 and 1e-2. Once you have set up the optimizer, we need to set up the optimization parameters. This includes the loss (we will take it to be the __categorical cross entropy__ which is the extension of the log loss to the multiclass problem)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from tensorflow.keras.optimizers import SGD\n", "from tensorflow.keras.optimizers import Adam\n", "\n", "# set up the optimize here\n", "# Myoptimizer = SGD\n", "# Myoptimizer = Adam\n", "\n", "model.compile(loss='categorical_crossentropy',\n", " optimizer=Myoptimizer,\n", " metrics=['accuracy'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Question 3.3 (2pts). Optimization\n", "\n", "The last step is to fit the network to your data. Just as any function in scikit-learn, we use a call to the function 'fit'. The training of neural networks can be done by splitting the dataset into minibatches and using a different batch at each SGD step. This process is repeated over the whole dataset. A complete screening of the dataset is called an epoch. We can then repeat this idea several times. In keras the number of epochs is stored in the 'epochs' parameter and the batch size is stored in the 'batch_size' parameter. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "batch_size = '''set the size of the batch here'''\n", "epochs = '''set number of epochs here'''\n", "\n", "model.fit(X, t,batch_size=batch_size,epochs=epochs, validation_split=0.2)" ] } ], "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.5" } }, "nbformat": 4, "nbformat_minor": 4 }