{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Scikit Learn Machine Learning Library\n", "![ScikitLog](scikit-learn-logo-small.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![Scikit](http://scikit-learn.org/stable/_images/sphx_glr_plot_classifier_comparison_001_carousel.png)\n", "http://scikit-learn.org/stable/index.html" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Preprocessing\n", "### Feature extraction and normalization.\n", "\n", "* Application: Transforming input data such as text for use with machine learning algorithms.\n", "* Modules: preprocessing, feature extraction." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Model selection\n", "### Comparing, validating and choosing parameters and models.\n", "\n", "* Goal: Improved accuracy via parameter tuning\n", "* Modules: grid search, cross validation, metrics." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Regression\n", "### Predicting a continuous-valued attribute associated with an object.\n", "\n", "* Applications: Drug response, Stock prices.\n", "* Algorithms: SVR, ridge regression, Lasso" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Classification\n", "### Identifying to which category an object belongs to.\n", "\n", "* Applications: Spam detection, Image recognition.\n", "* Algorithms: SVM, nearest neighbors, random forest" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Clustering\n", "### Automatic grouping of similar objects into sets.\n", "\n", "* Applications: Customer segmentation, Grouping experiment outcomes\n", "* Algorithms: k-Means, spectral clustering, mean-shift" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Dimensionality reduction\n", "*** Reducing the number of random variables to consider.\n", "\n", "* Applications: Visualization, Increased efficiency\n", "* Algorithms: PCA, feature selection, non-negative matrix factorization" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from sklearn import datasets" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "iris = datasets.load_iris()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "sklearn.utils.Bunch" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(iris)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[5.1 3.5 1.4 0.2]\n", " [4.9 3. 1.4 0.2]\n", " [4.7 3.2 1.3 0.2]\n", " [4.6 3.1 1.5 0.2]\n", " [5. 3.6 1.4 0.2]\n", " [5.4 3.9 1.7 0.4]\n", " [4.6 3.4 1.4 0.3]\n", " [5. 3.4 1.5 0.2]\n", " [4.4 2.9 1.4 0.2]\n", " [4.9 3.1 1.5 0.1]\n", " [5.4 3.7 1.5 0.2]\n", " [4.8 3.4 1.6 0.2]\n", " [4.8 3. 1.4 0.1]\n", " [4.3 3. 1.1 0.1]\n", " [5.8 4. 1.2 0.2]\n", " [5.7 4.4 1.5 0.4]\n", " [5.4 3.9 1.3 0.4]\n", " [5.1 3.5 1.4 0.3]\n", " [5.7 3.8 1.7 0.3]\n", " [5.1 3.8 1.5 0.3]\n", " [5.4 3.4 1.7 0.2]\n", " [5.1 3.7 1.5 0.4]\n", " [4.6 3.6 1. 0.2]\n", " [5.1 3.3 1.7 0.5]\n", " [4.8 3.4 1.9 0.2]\n", " [5. 3. 1.6 0.2]\n", " [5. 3.4 1.6 0.4]\n", " [5.2 3.5 1.5 0.2]\n", " [5.2 3.4 1.4 0.2]\n", " [4.7 3.2 1.6 0.2]\n", " [4.8 3.1 1.6 0.2]\n", " [5.4 3.4 1.5 0.4]\n", " [5.2 4.1 1.5 0.1]\n", " [5.5 4.2 1.4 0.2]\n", " [4.9 3.1 1.5 0.1]\n", " [5. 3.2 1.2 0.2]\n", " [5.5 3.5 1.3 0.2]\n", " [4.9 3.1 1.5 0.1]\n", " [4.4 3. 1.3 0.2]\n", " [5.1 3.4 1.5 0.2]\n", " [5. 3.5 1.3 0.3]\n", " [4.5 2.3 1.3 0.3]\n", " [4.4 3.2 1.3 0.2]\n", " [5. 3.5 1.6 0.6]\n", " [5.1 3.8 1.9 0.4]\n", " [4.8 3. 1.4 0.3]\n", " [5.1 3.8 1.6 0.2]\n", " [4.6 3.2 1.4 0.2]\n", " [5.3 3.7 1.5 0.2]\n", " [5. 3.3 1.4 0.2]\n", " [7. 3.2 4.7 1.4]\n", " [6.4 3.2 4.5 1.5]\n", " [6.9 3.1 4.9 1.5]\n", " [5.5 2.3 4. 1.3]\n", " [6.5 2.8 4.6 1.5]\n", " [5.7 2.8 4.5 1.3]\n", " [6.3 3.3 4.7 1.6]\n", " [4.9 2.4 3.3 1. ]\n", " [6.6 2.9 4.6 1.3]\n", " [5.2 2.7 3.9 1.4]\n", " [5. 2. 3.5 1. ]\n", " [5.9 3. 4.2 1.5]\n", " [6. 2.2 4. 1. ]\n", " [6.1 2.9 4.7 1.4]\n", " [5.6 2.9 3.6 1.3]\n", " [6.7 3.1 4.4 1.4]\n", " [5.6 3. 4.5 1.5]\n", " [5.8 2.7 4.1 1. ]\n", " [6.2 2.2 4.5 1.5]\n", " [5.6 2.5 3.9 1.1]\n", " [5.9 3.2 4.8 1.8]\n", " [6.1 2.8 4. 1.3]\n", " [6.3 2.5 4.9 1.5]\n", " [6.1 2.8 4.7 1.2]\n", " [6.4 2.9 4.3 1.3]\n", " [6.6 3. 4.4 1.4]\n", " [6.8 2.8 4.8 1.4]\n", " [6.7 3. 5. 1.7]\n", " [6. 2.9 4.5 1.5]\n", " [5.7 2.6 3.5 1. ]\n", " [5.5 2.4 3.8 1.1]\n", " [5.5 2.4 3.7 1. ]\n", " [5.8 2.7 3.9 1.2]\n", " [6. 2.7 5.1 1.6]\n", " [5.4 3. 4.5 1.5]\n", " [6. 3.4 4.5 1.6]\n", " [6.7 3.1 4.7 1.5]\n", " [6.3 2.3 4.4 1.3]\n", " [5.6 3. 4.1 1.3]\n", " [5.5 2.5 4. 1.3]\n", " [5.5 2.6 4.4 1.2]\n", " [6.1 3. 4.6 1.4]\n", " [5.8 2.6 4. 1.2]\n", " [5. 2.3 3.3 1. ]\n", " [5.6 2.7 4.2 1.3]\n", " [5.7 3. 4.2 1.2]\n", " [5.7 2.9 4.2 1.3]\n", " [6.2 2.9 4.3 1.3]\n", " [5.1 2.5 3. 1.1]\n", " [5.7 2.8 4.1 1.3]\n", " [6.3 3.3 6. 2.5]\n", " [5.8 2.7 5.1 1.9]\n", " [7.1 3. 5.9 2.1]\n", " [6.3 2.9 5.6 1.8]\n", " [6.5 3. 5.8 2.2]\n", " [7.6 3. 6.6 2.1]\n", " [4.9 2.5 4.5 1.7]\n", " [7.3 2.9 6.3 1.8]\n", " [6.7 2.5 5.8 1.8]\n", " [7.2 3.6 6.1 2.5]\n", " [6.5 3.2 5.1 2. ]\n", " [6.4 2.7 5.3 1.9]\n", " [6.8 3. 5.5 2.1]\n", " [5.7 2.5 5. 2. ]\n", " [5.8 2.8 5.1 2.4]\n", " [6.4 3.2 5.3 2.3]\n", " [6.5 3. 5.5 1.8]\n", " [7.7 3.8 6.7 2.2]\n", " [7.7 2.6 6.9 2.3]\n", " [6. 2.2 5. 1.5]\n", " [6.9 3.2 5.7 2.3]\n", " [5.6 2.8 4.9 2. ]\n", " [7.7 2.8 6.7 2. ]\n", " [6.3 2.7 4.9 1.8]\n", " [6.7 3.3 5.7 2.1]\n", " [7.2 3.2 6. 1.8]\n", " [6.2 2.8 4.8 1.8]\n", " [6.1 3. 4.9 1.8]\n", " [6.4 2.8 5.6 2.1]\n", " [7.2 3. 5.8 1.6]\n", " [7.4 2.8 6.1 1.9]\n", " [7.9 3.8 6.4 2. ]\n", " [6.4 2.8 5.6 2.2]\n", " [6.3 2.8 5.1 1.5]\n", " [6.1 2.6 5.6 1.4]\n", " [7.7 3. 6.1 2.3]\n", " [6.3 3.4 5.6 2.4]\n", " [6.4 3.1 5.5 1.8]\n", " [6. 3. 4.8 1.8]\n", " [6.9 3.1 5.4 2.1]\n", " [6.7 3.1 5.6 2.4]\n", " [6.9 3.1 5.1 2.3]\n", " [5.8 2.7 5.1 1.9]\n", " [6.8 3.2 5.9 2.3]\n", " [6.7 3.3 5.7 2.5]\n", " [6.7 3. 5.2 2.3]\n", " [6.3 2.5 5. 1.9]\n", " [6.5 3. 5.2 2. ]\n", " [6.2 3.4 5.4 2.3]\n", " [5.9 3. 5.1 1.8]]\n" ] } ], "source": [ "print(iris.data)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "numpy.ndarray" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(iris.data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Loading from external datasets\n", "http://scikit-learn.org/stable/datasets/index.html#external-datasets" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from sklearn import svm\n", "clf = svm.SVC()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,\n", " decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',\n", " max_iter=-1, probability=False, random_state=None, shrinking=True,\n", " tol=0.001, verbose=False)" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X, y = iris.data, iris.target\n", "clf.fit(X, y) " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "150" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(iris.data)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Persistent Models using pickle\n", "import pickle\n", "s = pickle.dumps(clf)\n", "clf2 = pickle.loads(s)\n", "clf2.predict(X[0:1])" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "sklearn.svm.classes.SVC" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(clf2)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Big data pickle\n", "In the specific case of the scikit, it may be more interesting to use joblib’s replacement of pickle (joblib.dump & joblib.load), which is more efficient on big data, but can only pickle to the disk and not to a string:\n", "\n", "\n", "` from sklearn.externals import joblib`\n", "\n", "` joblib.dump(clf, 'filename.pkl') `" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Full Scikit learn process" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Define Problem.\n", "2. Prepare Data.\n", "3. Evaluate Algorithms.\n", "4. Improve Results.\n", "5. Present Results.\n", "\n", "from https://machinelearningmastery.com/machine-learning-in-python-step-by-step/" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# Library setup/import\n", "import pandas as pd\n", "from pandas.plotting import scatter_matrix\n", "import matplotlib.pyplot as plt\n", "from sklearn import model_selection\n", "from sklearn.metrics import classification_report\n", "from sklearn.metrics import confusion_matrix\n", "from sklearn.metrics import accuracy_score\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.tree import DecisionTreeClassifier\n", "from sklearn.neighbors import KNeighborsClassifier\n", "from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n", "from sklearn.naive_bayes import GaussianNB\n", "from sklearn.svm import SVC" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "# Load dataset\n", "url = \"https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data\" #UCI ml archive\n", "names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']\n", "dataset = pd.read_csv(url, names=names)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(150, 5)\n" ] } ], "source": [ "# Summarizing data\n", "\n", "# shape\n", "print(dataset.shape)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sepal-lengthsepal-widthpetal-lengthpetal-widthclass
05.13.51.40.2Iris-setosa
14.93.01.40.2Iris-setosa
24.73.21.30.2Iris-setosa
34.63.11.50.2Iris-setosa
45.03.61.40.2Iris-setosa
\n", "
" ], "text/plain": [ " sepal-length sepal-width petal-length petal-width class\n", "0 5.1 3.5 1.4 0.2 Iris-setosa\n", "1 4.9 3.0 1.4 0.2 Iris-setosa\n", "2 4.7 3.2 1.3 0.2 Iris-setosa\n", "3 4.6 3.1 1.5 0.2 Iris-setosa\n", "4 5.0 3.6 1.4 0.2 Iris-setosa" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dataset.head()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sepal-lengthsepal-widthpetal-lengthpetal-width
count150.000000150.000000150.000000150.000000
mean5.8433333.0540003.7586671.198667
std0.8280660.4335941.7644200.763161
min4.3000002.0000001.0000000.100000
25%5.1000002.8000001.6000000.300000
50%5.8000003.0000004.3500001.300000
75%6.4000003.3000005.1000001.800000
max7.9000004.4000006.9000002.500000
\n", "
" ], "text/plain": [ " sepal-length sepal-width petal-length petal-width\n", "count 150.000000 150.000000 150.000000 150.000000\n", "mean 5.843333 3.054000 3.758667 1.198667\n", "std 0.828066 0.433594 1.764420 0.763161\n", "min 4.300000 2.000000 1.000000 0.100000\n", "25% 5.100000 2.800000 1.600000 0.300000\n", "50% 5.800000 3.000000 4.350000 1.300000\n", "75% 6.400000 3.300000 5.100000 1.800000\n", "max 7.900000 4.400000 6.900000 2.500000" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Stat summary\n", "dataset.describe()" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "class\n", "Iris-setosa 50\n", "Iris-versicolor 50\n", "Iris-virginica 50\n", "dtype: int64\n" ] } ], "source": [ "# Class Distribution\n", "print(dataset.groupby('class').size()) # notice aggregration similar to SQL" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Visualization\n", "# univariate plots, that is, plots of each individual variable.\n", "# box and whisker plots\n", "dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEICAYAAABPgw/pAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAHo9JREFUeJzt3X+0XGV97/H3hwQkJGDAxJiQyMFCETQVMAJeuiCFoAhUuL3olSKLULipvVKhpEuC7V1VL7RxLbV6lxYaQQgtEiPCEsHbYjEniOWHJID8CD9DhEBCAInhRK9y4Hv/2M+RyZw55+wzZ+bsPXs+r7VmZfav2d+Zec43zzz72c+jiMDMzDrfTkUHYGZmreGEbmZWEU7oZmYV4YRuZlYRTuhmZhXhhG5mVhFO6ONE0lWSLh5m+wZJC8YzpnTeHkkhaeJ4n9u6x0jlfxSv0yfpHUNsWyjp9mGOnS9p41hjKDMn9CYVlYDHqlPjtnIpqhxFxJSIWJ9n31RR2a/dMZWJE7qZWUV0fUJPNY2LJD0s6WVJV0raNW07SdJ9krZK+k9Jf5DW/wvwduD76Sfgp9P670jaLOmXkm6T9K4mY9pJ0hJJT0p6SdJKSXulbQNNJGdKelrSi5L+pubYSZKWp/eyTtKnB35mDhV3cnqj17NqK0P5l3SWpO/XLD8haWXN8jOSDk7Pf1frlvQWSTdK2ibpbuD3ao65LT29P8X432u2LZa0RdImSWc198mVVER09QPYADwIzAH2An4CXAwcCmwBDgcmAGemfd9Uc9yCutf6M2B34E3AV4D7arZdBVw8QhwL0vPzgTuB2em1/hm4Nm3rAQL4BjAJeA/wG+DAtH0psBrYMx3/M2Bjo/PkeT0/qv0oQ/kH3gFsJatgzgR+Djxbs+1lYKe0HMB+6fkKYCUwGXg38Cxwe83r/m7ftDwf6Ac+D+wMnAD8Ctiz6O+hZd9n0QEU/UgF8xM1yycATwKXAv+7bt9HgaNrjlswzOtOTQXqzWl5NAl9HXBszbaZwKvAxJoEPLtm+93Ax9Lz9cAHa7adkzOhN3w9P6r9KFH5f4bsP5GPActSGXwncBZwY81+AexH9p/Mq8A7a7b9fY6E/mtgYs26LcARRX8PrXp0fZNL8kzN858Ds4B9gMXp5+ZWSVvJajGzGr2ApAmSlqZmkm1kBR5gWoN9/2/6Gdgn6fQGL7cPcEPNedcBrwEzavbZXPP8V8CU9HxW3fupfT6coV7Pqq8M5X81WcI9Kj3vBY5Oj9UNTjmdrIJTH/tIXoqI/prlSpV1d1XLzKl5/nbgObKCcklEXDLEMfXDVP4pcDKwgKwwv5nsp6IGHRjxoRHieQb4s4j4Sf0GST0jHLuJrKnl4bQ8p267h9e0emUo/6uBPwb2JatpbwVOB94PfK3B/i+QNZ/MAR6pib2ruYae+aSk2enC42eAb5O1KX9C0uHKTJZ0oqTd0zHPk7XvDdidrO35JWA3skLZrMuASyTtAyBpuqSTcx67ErhI0p6S9gbOrdteH7dZGcr/auCPgEkRsRH4MXA88Bbg3vqdI+I14Hrgs5J2k3QQWTt/ra4r607omW8Bt5C1P68na+u7B/gfZLWDl4EngIU1x/wD8Lfp5+hfA1eTLuaQ1Y7vHEM8XwVuBG6R9Ep6rcNzHvt5YCPwFPAfwHVkf2hDxW1WePmPiMeAPrJETkRsS7H8JCXvRs4lay7ZTNZGf2Xd9s8Cy1OMHx1NPJ1K6cJA15K0ATgnIv6j6FjaQdJfkF3gPLroWKx8ql7+u41r6BUjaaakI5X1ZT8AWAzcUHRcZtZ+vihaPbuQ9Vvfl+zC0grgnwqNyMzGRdc3uZiZVYWbXMzMKmJcm1ymTZsWPT0943lKtm/fzuTJk8f1nGPlmIe2Zs2aFyNiettP1CLTpk2L6dOnd9z3mVcnltW8yvTe8pb7cU3oPT093HPPPeN5Snp7e5k/f/64nnOsHPPQJOW5G7A0enp6+OIXv9hx32denVhW8yrTe8tb7t3kYmZWEU7oZmYV4YRuNoQ04NS9km5Ky/tKukvS45K+LWmXomM0q1WKfug9S25u6rgNS09scSRmOziPbKTLPdLyF4B/jIgVki4DziYbZrYpzZR7l3kbjmvoZg1Img2cCFyelgUcQzY2DsBy4JRiojNrrBQ1dLMS+grwabJRBCEb9W9rzVjaG4G9Gx0oaRGwCGDGjBn09fXR29s7aL/Fc/sHrRtJo9cp0lDvrQo68b05oZvVkXQSsCUi1kiaP7C6wa4Nb7OOiGVks+4wb968mDJlSsPubwubaXI5ffDrFKlMXftarRPfmxO62WBHAh+WdAKwK1kb+leAqZImplr6bLKJIMxKw23oZnUi4qKImB0RPWRzXP4oIk4HVgGnpt3OBL5XUIhmDTmhm+V3IXCBpCfI2tSvKDgesx24ycVsGBHRSzZhMRGxHjisyHjMhuMauplZRTihm5lVhBO6mVlFOKGbmVWEE7qZWUU4oZuZVcSICV3SrpLulnS/pIckfS6t91CiZmYlkqeG/hvgmIh4D3AwcLykI3hjKNH9gZfJhhI1M7OCjJjQI9OXFndOj8BDiZqZlUquO0UlTQDWAPsBXweepMmhRFs1jCjkG0q0E4fAdMzWTTzRR+vkSugR8RpwsKSpwA3AgY12G+LYHYYSbdUwopBvKNFOHALTMZtZM0Y1lktEbJXUCxyBhxItDddwzAzy9XKZnmrmSJoELCCbZ9FDiZqZlUieGvpMYHlqR98JWBkRN0l6GFgh6WLgXjyUqJlZoUZM6BHxM+CQBus9lKiZWYn4TlEzs4pwQjczqwgndDOzinBCNzOrCM8pWjI9S25m8dz+pm+2MrPu5Rq6mVlFOKGbmVWEE7qZWUU4oZuZVYQTuplZRTihm5lVhBO6mVlFOKGbmVWEE7qZWUU4oZuZVUSeGYvmSFolaZ2khySdl9bvJemHkh5P/+7Z/nDNzGwoecZy6QcWR8RaSbsDayT9EFgI3BoRSyUtAZYAF7YvVDOz5o127t2BMZU6af7dEWvoEbEpItam56+QzSe6N3AysDztthw4pV1BmpnZyEY12qKkHrLp6O4CZkTEJsiSvqS3DnHMImARwIwZM+jt7R20z+K5/aMJ43cavVa9vr6+XPuVxeK5/cyY1PxnklerP5NO+5zNqih3Qpc0BfgucH5EbJOU67iIWAYsA5g3b17Mnz9/0D7NDhW74fTBr1Wvt7eXRucsq4Vp+NwvPdDekY3zfHaj0Wmfs1kV5erlImlnsmR+TURcn1Y/L2lm2j4T2NKeEM3GlzsCWKfK08tFwBXAuoj4cs2mG4Ez0/Mzge+1PjyzQgx0BDgQOAL4pKSDyC783xoR+wO3pmWz0shTQz8SOAM4RtJ96XECsBQ4TtLjwHFp2azjuSOAdaoRG2oj4nZgqAbzY1sbjo2X0XbhAjqq+1artKIjwFAXjJu58F22C8+tuBg+Xp/DaM8z0DmhbJ/5cDynqNkQWtURYMqUKQ0vGDfTGaDVF7PHqhUXw8frcxjteQY6J5TtMx+Ob/03a8AdAawTOaGb1XFHAOtUbnIxG2ygI8ADku5L6z5DduF/paSzgaeBjxQUn1lDTuhmddwRwDqVm1zMzCrCCd3MrCKc0M3MKsIJ3cysIpzQzcwqwgndzKwiOrrbYp7xSAamkRrQjeORmFl36OiEbmZWRkUNfucmFzOzinBCNzOriDwzFn1T0hZJD9as81RcZmYlk6cN/Srga8DVNesGpuJaKmlJWr6w9eFZmQzXLlh/8bmWL0SbjY8Ra+gRcRvwi7rVnorLzKxkmm1D32EqLqDhVFxmZjZ+2t5tsX5+xVbNrZjXwLyAA8o+P+Diuf2DYu4Ew8Vc9s/crCqaTejPS5qZJsoddiqu+vkVWzW3Yl4D8wIOKPv8gAuX3Dwo5k4wXMxl/8zNqqLZJhdPxWVmVjJ5ui1eC9wBHCBpY5p+aylwnKTHgePSspmZFWjE3/URcdoQmzwV1zCaufXXzMqnk/6WfaeomVlFdNaVN7MuV9SgT3l1Um22ilxDNzOrCCd0M7OKcJOLmQ2St+lkuDF8bPy5hm5mVhGuoZtZx/HF18ac0K3tyt4zw6wq3ORiZlYRTuhmZhXhhG5mVhFO6GZmFeGLojn4irqZdQLX0M3MKsIJ3cysIpzQzcwqYkwJXdLxkh6V9ISkJa0KyqysXOatzJq+KCppAvB1sinoNgI/lXRjRDzcquDMyqRTy7wv6nePsdTQDwOeiIj1EfFbYAVwcmvCMisll3krNUVEcwdKpwLHR8Q5afkM4PCIOLduv0XAorR4APBo8+E2ZRrw4jifc6wc89D2iYjp43CeQcZQ5l+i877PvDqxrOZVpveWq9yPpR+6Gqwb9L9DRCwDlo3hPGMi6Z6ImFfU+ZvhmEurqTJf5c/G761cxtLkshGYU7M8G3hubOGYlZrLvJXaWBL6T4H9Je0raRfgY8CNrQnLrJRc5q3Umm5yiYh+SecC/w5MAL4ZEQ+1LLLWKay5ZwwccwmNocxX+bPxeyuRpi+KmplZufhOUTOzinBCNzOriEomdElzJK2StE7SQ5LOKzqmvCRNkHSvpJuKjiUPSVMlXSfpkfR5v7/omMqkqkMFSPqmpC2SHiw6llbr6PxRxTZ0STOBmRGxVtLuwBrglLLfog0g6QJgHrBHRJxUdDwjkbQc+HFEXJ56fuwWEVuLjqsM0lABj1EzVABwWieUw5FIOgroA66OiHcXHU8rdXL+qGQNPSI2RcTa9PwVYB2wd7FRjUzSbOBE4PKiY8lD0h7AUcAVABHxWyfzHVR2qICIuA34RdFxtEOn5g+oaEKvJakHOAS4q9hIcvkK8Gng9aIDyekdwAvAlamZ6HJJk4sOqkT2Bp6pWd5IhyQGy3RY/qh2Qpc0BfgucH5EbCs6nuFIOgnYEhFrio5lFCYChwKXRsQhwHagMu3ELZBrqAArp07KHwMqm9Al7Uz2ZVwTEdcXHc8ASSFpvwabjgQ+Iqmf7Kf5MZL+dRzj+mwT59sIbIyIgdrLdWQJ3jIeKqDOMOV/NK9xuqRbhtneK+mcYbZfJeniEc5RyvwxkkomdEkia9ddFxFfLjqePCLiIuAjwGayW8p/FBEfb8e5JM2XtHGsrxMRm4FnJB2QVh0LlP7C0TjyUAFtEBHXRMQH8uwraaGk20fz+p2YPwZUMqGT1XbPIKvl3pceJxQdVEX9JXCNpJ8BBwN/X3A8pRER/cDAUAHrgJUlHR5j1CRdC9wBHCBpo6Szi46phTo3f0REVz+AC4FngVfIxmo/luw/uiXAk2RjWa8E9kr795C1gy4i+/m8CVhc83qHkRX0rWnb14BdarYHsN8Qscwna8IYWJ5F9rPvBeAp4FM12z6b4ro6xf4QMK9m+6HAvWnbd4BvAxcDk4Ffk1147UuPWSO9nh/VfJSs/K8G/lt6/odp3xPS8gLgvvR8IXB7zXHHAY8Av0znWw2cAxwI/D/gtVTOt6b9ryKbeerm9L7vAn6v6O+iFY+q1tBzSU0F5wLvi4jdgQ8CG4BPAacAR5Mlu5fJCkCtPwL2Bz4ALJG0IK1/DfgrssHx30/2B/I/m4htJ+D7wP1kPSOOBc6X9MGa3T5M1t4+leyn/NfSsbsAN5AV3L2Aa4H/ChAR24EPAc9FxJT0eG6417NqKmH5X01WqYGsO+z6FMPA8uoG72EaWaXnb9M5nySrYRMR64BPAHekcj615tDTgM8BewJPAJfkjLHUujqhkxW+NwEHSdo5IjZExJPAnwN/ExEbI+I3ZLXXUyXVjk75uYjYHhEPAFeSFRAiYk1E3BkR/RGxAfhn3iiUo/E+YHpEfD6y/t3rgW+QtcMOuD0ifhARrwH/ArwnrT+CrAfK/4mIVyO7qHN3jnMO9XpWTWUr/6vZMYH/Q83y0TRI6MAJwMMRcV1EvErW9XdzjnNdHxF3R9Ysdg1Zc2HH6+qEHhFPAOeTFdgtklZImgXsA9wgaaukrWTtn68BM2oOr+1f/HOymgySfl/STZI2S9pG1qY8rf7ckt4uqW/g0SC8fYBZAzGkOD5TF0Ntwf0VsGv6o5sFPBvp92WDeIcy1OtZBZWw/N8B/L6kGWQJ9mpgTqqFHwbc1uBtzKqNJZX5Zsr6lBzHlF5XJ3SAiPhWRPwhWSEO4AtkBeJDETG15rFrRDxbc2htd7S380Z3tEvJ2vP2j4g9yJLwoP7IEfF0TZNHo8L0DPBUXQy7R0SeizObgL3T1fpG8bovtAHlKv8R8Suy2+zPAx6M7O7a/wQuAJ6MiEbze26qjSWV+a4t612d0CUdIOkYSW8iu3jya7KayGXAJZL2SftNl1R/y/b/krSbpHcBZ5FddATYHdgG9El6J/AXTYZ3N7BN0oWSJikbtOvdkt6X49g70vs4V9LEFPthNdufB94i6c1NxmYVUNLyv5qsXX+geaW3brnezcC7JP1J+jX5KeBtNdufB2an60qV19UJnaz9cCnZzN6bgbeS1Si+SnZR8BZJrwB3AofXHbua7GLKrcAXI2LgRoe/Bv6U7Or5N3ijoI9Kasf+Y7Kfnk+lGC8HRkzCqWbzJ8DZZL0NPg7cBPwmbX+E7ELp+vSzelYzMVrHK2P5X032n8JtQyzvINXaP5Lex0tkF2p/UrPLj8h6bG2W1KiGXymVHG2xndLYDk8BO6cLKh1B0l3AZRFxZdGxWOfq1PLfLbq9hl5Zko6W9LbU5HIm8AfAvxUdl5m1jxN6dR1A1of9l8Bi4NSI2FRsSJ1FdZONpFv475L0uKRvd0u7rHUON7mYDUF1k41IWknWf3mFpMuA+yPi0mKjNHuDa+hmDahuspHUHe4YshElAZaT3U1pVhrjetPItGnToqenZzxPuYPt27czeXK55l9wTCOrjWfNmjUvRsT0cTjtwGQju6flt5CNBTJwIXDIySokLSIb64RJkya9d86cOY124/XXX2ennapZp/J7a63HHnssX7kfz4Fj3vve90aRVq1aVej5G3FMI6uNB7gn2j9g1UnAP6Xn88m6fE4nm05uYJ85wAMjvdZwZb5sn3Mr+b21Vt5y79u6zQY7EvhwGjJ1V2APshr7VEkTI6uld/1kFVY+1fxNZDYGEXFRRMyOiB7emGzkdGAVcGra7UzgewWFaNaQE7pZfhcCF0h6gqxN/YqC4zHbgZtccuhZcvOoj9mw9MQ2RGLjLSJ6ycYTIbIhjA8bbv9uN/C3snhuPwtz/t34b6V1XEM3M6sIJ3Qzs4pwk0vJuHnHzJrlGrqZWUU4oZuZVYQTuplZRTihm5lVhBO6mVlFOKGbmVWEE7qZWUU4oZuZVYQTuplZRXT0naKjvaty8dx+5rcnFDOzwrmGbmZWEU7oZmYV0dFNLmbtIGlX4DbgTWR/I9dFxN9J2hdYAewFrAXOiIjfFhdpNXhAutZxDd1ssN8Ax0TEe4CDgeMlHQF8AfjHiNgfeBk4u8AYzQZxQjerkyZa70uLO6dHAMcA16X1y4FTCgjPbEhucjFrQNIEYA2wH/B14Elga0T0p102AnsPcewiYBHAjBkz6O3tbXiOvr6+Ibd1qsVzs49nxqQ3nrdDkZ9bmb+3ERO6pDnA1cDbgNeBZRHxVUl7Ad8GeoANwEcj4uX2hWo2fiLiNeBgSVOBG4ADG+02xLHLgGUA8+bNi/nz5zc8R29vL0Nt61QLa+YU/dID7asvbjh9ftteeyRl/t7yNLn0A4sj4kDgCOCTkg4ClgC3pvbEW9OyWaVExFaySaKPAKZKGshSs4HniorLrJERE3pEbIqIten5K8A6sp+aJ5O1I4LbE61CJE1PNXMkTQIWkJX7VcCpabczge8VE6FZY6P6TSSpBzgEuAuYERGbIEv6kt46xDG52hObMdo2uhmTmmt7a6YtMO956tvj2nmuvMrWRlhAPDOB5akdfSdgZUTcJOlhYIWki4F7gSvGMyizkeRO6JKmAN8Fzo+IbZJyHZe3PbEZC5u49f+jTZx/tOeB/G189e1x7TxXXmVrIxzveCLiZ2QVl/r164HDxi0Qs1HK1W1R0s5kyfyaiLg+rX5e0sy0fSawpT0hmplZHiMmdGVV8SuAdRHx5ZpNN5K1I4LbE83MCpenyeVI4AzgAUn3pXWfAZYCKyWdDTwNfKQ9IZqZWR4jJvSIuB0YqsH82NaGY2ZmzfKt/2ZmFeFb/yvAo9WZGbiGbmZWGU7oZmYV4SYXMxukmWY8K55r6GZmFeGEbmZWEW5yaZO8P1kXz+1vavwWM7N6rqGbmVWEa+hmFecLnN3DNXSzOpLmSFolaZ2khySdl9bvJemHkh5P/+5ZdKxmtZzQzQbztIvWkZzQzep42kXrVG5DNxtGO6ddHK+p9ZqZ1nCsZkxq73mLnCKxbFM01uq6hO4LRJZXu6ddHK+p9YroFrt4bj9feqB96aXV0y6ORtmmaKzlJhezBjztonUiJ3SzOp520TpV1zW5mOXgaRetIzmhm9XxtIvWqdzkYmZWEU7oZmYV4YRuZlYRTuhmZhXhhG5mVhEjJnRJ35S0RdKDNes86pyZWcnkqaFfBRxft86jzpmZlcyICT0ibgN+Ubfao86ZmZVMszcW5Rp1DvKPPNeM0Y7m1u4R4JpRVEzDfQ9lG02ubPGYlVXb7xTNO/JcM0Y7ily7R4BrRlExDTdaXdlGkytbPGZl1WwvF486Z2ZWMs0mdI86Z2ZWMiP+1pd0LTAfmCZpI/B3tHjUOU86YWY2diMm9Ig4bYhNHnXOzKxEfKeomVlFOKGbNeA7pK0TlasPn1l5XAV8Dbi6Zt3AHdJLJS1JyxcWEJs1odlrdRuWntjiSNrHNXSzBnyHtHUi19DN8st1h3Teu6PH6w7YIu5Ebvcd0M18bs3GU3+uMt+57IRu1mJ5744erztgR3tHdSu0+w7o4e50Hkqzn0P9ucp857ITull+z0uamWrnvkO6QL53pTG3oZvl5zukrdRcQ+9Sw9VwFs/tb/jztNmr/c3UporuWTAed0ibtZoTulkDvkPaOpGbXMzMKsI1dMvNF6KK5+/AhuMauplZRTihm5lVhBO6mVlFOKGbmVWEE7qZWUU4oZuZVYS7LZoV5IFnf1nIwFlWXa6hm5lVhBO6mVlFOKGbmVWEE7qZWUX4oqiZ2TDqx88ZanjpsWrFkNGuoZuZVcSYErqk4yU9KukJSUtaFZRZWbnMW5k1ndAlTQC+DnwIOAg4TdJBrQrMrGxc5q3sxlJDPwx4IiLWR8RvgRXAya0Jy6yUXOat1MZyUXRv4Jma5Y3A4fU7SVoELEqLfZIeHcM5x+RTMA14sajzN+KYGtMXdlisjWefcQ/mDa0u84V/zu1ShjLULu16b3Vlvl6ucj+WhK4G62LQiohlwLIxnKdlJN0TEfOKjqOWYxpZieJpaZkv0ftqOb+3YoylyWUjMKdmeTbw3NjCMSs1l3krtbEk9J8C+0vaV9IuwMeAG1sTllkpucxbqTXd5BIR/ZLOBf4dmAB8MyIeallk7VGKpp86jmlkpYinDWW+FO+rTfzeCqCIQU2AZmbWgXynqJlZRTihm5lVRNckdEkbJD0g6T5J95QgnqmSrpP0iKR1kt5fcDwHpM9m4LFN0vlFxpTi+itJD0l6UNK1knYtOqaxkDRH0qr0nT8k6byiY2oVSbtKulvS/em9fa7omFpN0gRJ90q6qehYGumaNnRJG4B5EVGKmx0kLQd+HBGXpx4Tu0XE1qLjgt/d4v4scHhE/LzAOPYGbgcOiohfS1oJ/CAirioqprGSNBOYGRFrJe0OrAFOiYiHCw5tzCQJmBwRfZJ2JvvuzouIOwsOrWUkXQDMA/aIiJOKjqde19TQy0TSHsBRwBUAEfHbsiTz5FjgySKTeY2JwCRJE4Hd6PB+3xGxKSLWpuevAOvI7kDteJHpS4s7p0dlaoySZgMnApcXHctQuimhB3CLpDXp1uwivQN4Abgy/Xy7XNLkgmOq9THg2qKDiIhngS8CTwObgF9GxC3FRtU6knqAQ4C7io2kdVKTxH3AFuCHEVGZ9wZ8Bfg08HrRgQylmxL6kRFxKNlIeZ+UdFSBsUwEDgUujYhDgO1AKYZiTc0/Hwa+U4JY9iQb/GpfYBYwWdLHi42qNSRNAb4LnB8R24qOp1Ui4rWIOJjsLtrDJL276JhaQdJJwJaIWFN0LMPpmoQeEc+lf7cAN5CNnFeUjcDGmtrLdWQJvgw+BKyNiOeLDgRYADwVES9ExKvA9cB/KTimMUvty98FromI64uOpx1SE2IvcHzBobTKkcCH07W4FcAxkv612JAG64qELmlyugBFatr4APBgUfFExGbgGUkHpFXHAmW5KHYaJWhuSZ4GjpC0W7rgdixZm3PHSu/jCmBdRHy56HhaSdJ0SVPT80lk/yE/UmxUrRERF0XE7IjoIWuS/FFElO7XYrfMKToDuCH7W2Ii8K2I+LdiQ+IvgWtSE8d64KyC40HSbsBxwJ8XHQtARNwl6TpgLdAP3EuJb7vO6UjgDOCB1NYM8JmI+EGBMbXKTGB56iW1E7AyIkrZva+quqbboplZ1XVFk4uZWTdwQjczqwgndDOzinBCNzOrCCd0M7OKcEI3M6sIJ3Qzs4r4/9syAOvlNS70AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# histograms\n", "dataset.hist()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Multivariate Plots" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAENCAYAAAACHGKEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzsvXeUHNd95/u51dU5TU/OETkQAAkQiUFUJKlASZYpWdGSbVmO66d9e5zWR7vrsw7vad8+P5/1Wl7bsteWFRxE5UBJzCKRQQBEGACT83TOXV1V9/1RjcYMZgDMYHoQ+3MOzmCmq27drr5dv3t/9/f7/oSUkipVqlSpcu+i3OoOVKlSpUqVW0vVEFSpUqXKPU7VEFSpUqXKPU7VEFSpUqXKPU7VEFSpUqXKPU7VEFSpUqXKPU7VEFSpUqXKPU7VEFSpUqXKPY5aiUaEEPuA7rntSSn/dyXarlKlSpUqq8uKDYEQ4h+APuA4YJT+LIGqIahSpUqVOwCxUokJIcQZYJNcRa2K+vp62d3dvVrN33MMDQ1xL93PmVQBKSWqolDnc1S07XvtXt4IhikJpwsAOFUbNR77VY+9l++nppvEshoAHoeK37Vyh82RI0fCUsqG6x1XCdfQKaAZmKxAW4vS3d3N4cOHV6v5e46dO3feM/fTNCV/8/Ig6YJOW42bp3d1VLT9e+le3ihZTeeLrwyh6SYbW/w8vqXlqsfey/dzJpnnnw6OICXs66tjd2/ditsUQgwv5bgbNgRCiG9huYD8wGkhxEGgcOl1KeV7brTtW0X373znmq8P/ck7b1JP7ixGo1mOjcZZ1+RjQ3Ng3muvDUSIpDUeWlNPcM5MMF3Qeal/Fp9L5aE19QghVqVviiLY0VnDoaEo93fWrMo1qizk4GCUmVSefX311HodfGhXBzOpAmsafQB8/eg4r4/FeWp7K/FskaJh8si6605c72oa/E566rxEMgU2tvjnvZbIFnn5Qphar4NdXSG+8NIAyZzGLzzUS2PAteJrr2RF8PkVX73KXcEPT0+TzBUZnM2wpsGHarOC0SbiOV69GAFACHhy6+WZ4MHBCIeHY9gVQVuNm94G36r0TTdMXrkQwZSSF86HWdPkv/5JVVbETDLPKxfCgOUWemp7G3U+J3U+JwBnpxL844FhVEUwFMmwrd0y0H7X1V1G9wKD4QwD4QwAh4ZiPLS2nplkgeagi59eDNM/nQJgJJrhxf5ZAL52eJRff/PaFV/7hg2BlPIFACHEn0opf3vua0KIPwVeWGHf7jju1RVFvc9BMlck5LVjUy7P7P0uFYeqoOkmdd75vvloWuPUeAJVEXzggfZV65tNEYS8diJpjfoK7w9UWRyvU8Vlt5EvGjSUHv6XGApn+ObxSWIZDb9LZW2TD0UITCnv+c+nxuPAbhMUDUmdz8m/HBljJlmgo9ZDZ60HSOFQFfoafKiKQDclHbWeily7EnsEbwN++4q/PbHI36rcpbxzawuTiTwNfuc8F4/fZefje7tI5XVaa9zzzqn1OdjSGkS1CRRlddxCAEIInt7ZwWyqQEtw5UvoKtfH61T52N4uErkibVd87tGsht2m8JaNjXTVefjQzk6SBR3dNGn039ufT63Xwcf2dpPTDJoCTl4qzfoj6QIfeKCd9pAbn0sl4LLzR+/fSiqvs6UtWJFrr2SP4FeAXwV6hRAn5rzkB15Zaceq3DmoNuWqM5OsZpDMF2kyXfNWCw/21FEomvhddnrqvavaP5fdVrGZU5WlkdV0krkizYH5n/uW1iCxjIaU8Mi6BlRVoVa9d1cCpik5P5Mm4FZpCboJuu0E3ZaL7ImtzZyeTHFf6WE/dzLVVVfZ78xKVgT/BHwP+GPgd+b8PSWljK6oV1XuCmIZja8eGsUwJdNdBR6dsxnoc6o8sfXq0SNV7lyS+SJfPTiKbkomEznevKGp/JpDVXjLxqZrnH1v8dpghAMDURQh+PDuThr8l11paxr9rGm8OXtaK9kjSAAJIcSvXfmaEMIupSyuqGdV7ng0w8QwrfSSfNHgwECEIyMxNrcG5xmFKncXRd1EL33uM8kCf/vyIHab4L072u75DWGAn14Ic3wszrb2Ggq6lYNrSln+/62gElpDR4FZoB84X/r/oBDiqBDigQq0X+UOpSng4h2bm9nZHeKRtQ0cHYlTKJocG4mh6QZHhqOcm0otOC+cLvDqxUg5CWkpFHSDQ0NRLs6mK/kWqiyRCzMpDg1FyRZ0hiJZajx2fE6VGredRK5IOK0xMJu51d28aRQNkyPDUc5OJRe89vKFWS7OpHnp/Cz7+urZ1V3LWzc20R5aufsyXzQ4OBhlYJnfg0psFn8f+LqU8gcAQoi3A48DXwP+AthdgWssiXs1aud2ZlPr5byCza0Bjo7E2NQS4OBgjAODEQTgcXTM8+E/c2ycVF7njYkEv/hw75Ku82J/mFPjCYSAj+zumrfErrK6zCTzfOt1K5/0tYsR0gWd46Nx1jf7CbhU3A4bqiLorrBf+3bmwECUQ0OWh9zrUOeN72i2yFgsh00RuOw2Hlpbf9V2CrqBU7Ut+brPn5vlzGQSIeDje7uXfF4lDMFOKeVnLv0ipfyhEOKPpJSfFUIs+m0UQjzO5X2F9cCvSCmfqUBfqtzGPLKugYfXWslj/3JklENDUew2hXdvb513nFKKPFKWkWRmm7O2XcUgpCqLIIRACBiYTRPNFHGqCgLr8wt5HTy9q2PVEgZvV5S54/GKAbm+yU+T30nAfe1N8u+cmKR/OsXWtiBv3bS0fZVLG/MCsazvQSUMQVQI8dvAV0q/fxCICSFsgLnYCVLK72OtJBBCHAB+VIF+VLkDuPRA8DvtdNd5cZQeGnPZ01vLC/2z7OmtXXK7D69toM7rpNbrKCcuVVkeZ6eSjESyPNAVWtY9bPA7ef+Odv7mlQE6Qx6iWY13bu3B61LZ1BK4q43A8dE4kXSBB3tq5+1/7O6pw++043OpC0Jo37+jnYvhNL3XiJaTUnJhxnLv9M+klmwIHl3XQIPfSb3PQY1n6dFYlTAEHwY+BzwDCODl0t9swNPXOlEI0QtMSymrjt17jB2dNUyn8vhdKp21XsZjOWZTebZ3hnju3CyxjMZz52bZ1Lq0OGm7TWFbR1VC4kZJF3S+f2oKKSGeK/LElmZMCUG3nXC6gK+UJAYQzWh4HLby77GMRr3fwXu3t3F0JM7+tQ3s7Vu5Ts7tzlQiz3NnZwBLMO4dm5uJZDRCHjuqTWFr++JjN+ixc39n6JptCyHY2R3i8HCMXd0LJ0QzyTy5orEgjNShKmy/ge/Big2BlDIM/MZVXr5wndPfD3x9sReEEJ8GPg3Q2dl5w/2rcnvSGHCVfZjnppJ85h+PoukGP/tAO6OxHGOxHO0h97UbqVIx7DbLX53TDAzD5IuvDCEldNV5GAxn8JWSxE5PJnnh3Cxuh42P7uliKJzh2dPTOO0KH3mwix3XecDdTbgdtnImsN9l59snJ7k4k6a1xsUHd638mTUez2Gakol4bt7fL0yn+M/fPk3RMPnEvm6euIaI31JZcdSQEGKdEOKvhBA/FEL85NK/JZ7+buCbi70gpfwrKeVOKeXOhoZqqOGdiJSSF/pn+fqxMSJXRAAlckW+cXycH5+Z5uR4Aq0UOnd6MoXbYcMmBG7H0jfJqqwMp2rjw7s72dNby0Q8z0gkiykl52esqK50wUoQm4znkVJyeiLBPx8eLUdpFYomR0ei/MuRMU6NJ27lW7lpBFwqPfU+vE4bG5p9TJYe2FOJAqa5MlV+KSUnxhKcnkxyYmz+/eyfTjOdyDObKnByLL6i61yiEuGj/wwcA/4j8B/m/LsmQohmQJNSRirQhyo3mXhWYzCcueaAH4/nODocYyic5dWB+R/zocEoL/bP8tzZGTa3BOit9+K22/jlh3uwCYHXaRkD0zT56YUwF6YXhplWWRmJbHHBZ3hkOIYhTXJFnVqPnT29dbSF3Kxt9FHQTfb01uJ2qAghmE3mmU7myReLuOwKrw1EGY1m+PGZmRU/CO8EJhJ5TozFGY/leHUgykNr6nGogv1r6hZsEEczGsORDFJK8kWDi7Np8sVr5w3ohkkmr2OY87da20MuazWiKPQ2+MhqOhdn02i6iZSSwXCGeKmuwVKpxB6BLqX8nzdw3lPANypw/So3mXRB50sHRtB0k/u7QldNDqvxOHA7LHdDS3C+m+fYaIzXBiLYFIUNLT6Go1kMU/Ktk5Pc115DjcdBZ62Hv391mO+fmkJVBP/lvVvoWyWV0nuNrKbzpYPDFIom2zqC7F9Tz5cPjHBhJk3RkGzvCJHTTQ4Pxaj1OpiI5zg/k+Ztm5r4uQc7+NKBEQ4PRUnni0ynCpYbqdZDU9DFru7aVdWPul1QBJyZTFLQTbrrveQ0A02XvDGRZOccv34so/Gl14bRTcnevjoGZjNMJy1tro/u6Vq0bSEE+aKBISX54nxD4FBtpT0biaoIvnpolHi2SEeth0a/kyPDMRyqwsf3Lt72YlTCEHxLCPGrWL7+ufUIrikzIaX8QgWuXeUWYA14a3Amc1dPIPc5VT6xt5usplPnc3JsJMaxkTibWwNouokiBDYB47F8OQN5JqXx1PZWolmNOq+T/+fZfgB0UxJJF6qGoELkNIM3xpOkCzqqTTASyXJoKMraJj/1Xgc/u7OdL75i1TSZTRewlSJ/krkiNW1Bfn5fdyl5KULRkCgC6v0OdvfW8f4dbbfyra0qkXSB752awm23saOzBpfdhm5I7Iogmbe+C6l8EdOUZWOY0fRypnUyVywfd+nnYkgp6W3wUe93LlBwVW2CbR01GKakxuNgNJort+2yW04eTTfJXWfFMa/NJR95dT5R+jnXHSSBpWUC3UPcLQlvDX4nb97QyEzKCpu7FuF0gVhWI+C289pAlHzR4NWBCL11Xkwpcag23rejFUPCZDzHv3/7OjIFg/FYDqfNxif2dmET0BR08WDP3R+JcrMwpCTgUhHCcltMJfI4VYWAy857d7QRcDt4cmsz/dMp3HYbg+EMqu1yRMpsqsC29hraQ25OTyTJF03WNfl4+6amcj2Ku5GT4wlmU9Z8t9brIOSx41QVHKrCrp5anjs7w57e+a6h9pCHR9bVE88W2dNbR3vIzYv9YR5eJJHspxfCzKQKPLm1hfdsa+XcdIrNrQF0w+T0ZJKQx0Ffg49H1jWQ0wz29NbRWevh/Eya+9qDeBwqTtVGo9+5LDXXSkQN9ay0jSp3HtcK1ZRSIoQgki7wr0fHMAyTSFpjbaOPE2Nx1jT6+eEbUyRzRVJ5nf7pDL/35MbyeX/78iDxbIFjnjifeqiHz759/U18Z/cGIY+DTW1BIukCAZeNH52xJI93dNSUcwjWNvkZCGd4oX+Wc9MptnfU8MZEgraQh68fG0dKyYM9Id68oYkvHRgmmdd5fSxxV+tI9dR7OTmWwGlX2NwaYDiSIZ4rsqWthoNDMXJFg0NDMbZ11MzLn3ig6/KE6cBglKymc2Awyua2YHncvz4a489+fB6A2VSeX3qkj646D0IInjs3w7HhGIoi+NieLvb01pXP623wzSvs9LYl5hzMZcWGQAjhAT4LdEopPy2EWAusl1J+e6VtV7nzGI/n+Mbxcdx2G7u6avneqSmyBR0QPNhbi8SShXY7bOUEnKJh8g+vDZPMFXlyawvPn5thYDZDb4OXTz1UnWdUmqlEnq8fG8duE2xtC/Kj0zP4XCrrG3343fMfCYYpkRKkhFcvRnipP8z+NbX0T2e4MJvmuycnecvGpnJOwZUbm3cbl1Y7NkXB41T5+N5uiqaJU7XxlYMj9E+nFtTeuJJzUymGwhm66rwMhTN85+QkAZdKX8PlnICiKfnR6WnemEiyo7OGsWiWQ0Mx3HYb4S0FvvX6BNmiwXu2tVZEo6gSrqEvAkeAfaXfx7AiiaqG4A4nmtE4OZ6gp85LZ938wfaDU1NcDKf5wP3t82qmnp5IcHEmjaoo+JwqpikRQDid57WBKOOxLFlN5/ee3MD/+MlFmoIutneGeObYOGDlFOQ0A59LJacZJLIaXzk0SnPQxVPb2zgxFied13mgO7QsDZYqlzk/kyJfNBiPFTg2EqMj5MEs+aTDqQKRTIHvn5piOpGnp95Lrc/B2+qa+LejY/icKq+PJVjT6Of4WJysZtWl/vzPbiOWLbKpxc+rFyO4HbYbSmy63Tk9mWAokkFVFEYiWTa1BnAq1jgsmlbtjUbDSb5ocGw0js+pcl/7/PtgmJJkvkjRNDk5HufCTBqXqrB/TT0/v7+b2VSBn7m/jf/10iBSwqmJBC1BF20hN267wmQiTyxr7S+cn7bCdy/OZtjcGsDjsHFkOEaj38X65qVLWFfCEPRJKT8ohPg5ACllTtylOeXX8/HfDeiGSV438TlVvndqkplkgROjcX750T4cqjUbujCd4m9fGQQgktb4g3dtKp9fKJrMpAqoiiDkVlFtgoIOTQE3kUyBibglthV0O/j90nkF3aC1xkU8W2Rza5C3bGzilYth9vfV87evDPLagBV3oNoUzkwkMaWkaMq72gWxmqxv9nNoMMpoNEu938lQNMPbNzYxEs0yFMnynZOTDMymmUoUCHrsNAVc3Nce5OG1DZyeTLKvrw6/y873Tk6h6Qbpgs7aUi3on14Ic2DQ+rz8LvWu29zXiiaTiTx2RWDK+aufCzMZ4tkiF8MZDgxEODZqxf8H3fZ5GcD900niuSIXplPs7qllNpUvr6jmJoft6AxxajzBjo4QLUEX08kCtV4HOzpCDEcypPMG65r8PHN8HE03GQpnaPA7y4q+dcso/VkJQ6AJIdxYG8QIIfqYEz1U5c5B002+fHCEaEbjobX1uEozbruqzBOwcpbUJHVT4r0i6aulxlVOn6/1u2j0O8m77IQ8DmZSeYQQGKac5z91qrZ5mZifeVMfn3lTHwBfeOEiYAmY2RVL20U3zGvqtFS5NjnNwJSWEFhW01EVhbRmYFMEI+EMQ5EM4VQBhCVZoCoCmxD82pvXMBLJ8qMz09iLBg9015DM6fNqDTvtl8eDU737No1NaVUV02FRDSUhLJ0dt0Mt/37lylURAlE6vyPk4YGuWoRgQa2GR9c1zJvsfOZR6zsRz2pkNavmQ07TcdisuuBOVSlHDamKwL6MTftKGILPYQnIdQghvgTsB37+eicJIT6OFXFkAz4ipRyvQF+qrIBErkg0YyWiDIUzvHtbKxdn07TVuOdFgnSEPPz+OzcyMJvhrRsbGY1mOT4aZ12Tn/s7QwRc9vIMp1A0SOR0DGnistvK0rtTiRxffGWQWq+TX3q4B0VZfND+wv4eOus8tAZdeJ0q65p8aLpJ0FMtcLJUMgWdl86H8Tpt7O+rZzRqrco2NPuJZ4s0+JwcGozidtg4P51ifYsfh01hXZOfd29rQVVstIZcBFx2hiIZpIRUXufd21o5MhTjnfddnsXe31lDwGXpElXCd307cGl8r23y4bAJnHbFerhL+E/fPMVoNMe/f9s69vTW0T+doi3kZmdXiJDXgcdho/mKWtkbmgOYMsn6Jh97euuo9TkIuOxLlk6fSubLyWijsRxP7+pgNJqlr8GH3SZoCbqp8zrKJS+XQiWihp4VQhwF9mAZw39X0h+6KkKINuBRKeVbVnr9KpWj3uegp8HD2YkUD3aHcNltbL6K6Num1mBZEO7Z06MkckUGZjP0NfQR9Nhx2mxcmE0RyRTRDZPzM2mcNgUpJaaU/NPBEQ4OxlAEbGj28+j6xkWvo6pKeblcNEw2tgSIZbXrinZVuczBoSiHh6KoNkFL0MXW9iATiRxOVaGn3stfvzhAVtM5OmJtRh4ZirGxNYDPpTKdLHBfew3e0gx3V3ctyZxOrdfBhZkUNR4Hh4dj5dBeIUTZTXSnMZsqYLeJBaqdz56eLo/v3kYPdpuCIgSvDYZ59vQ0AJ9/tp9ff2wN+aLBo+sasNkUdMNEsnAfy6YIPA4biqKgKIINzYEFx1yL3nofaxqtjOLtHTVWneM5Rew3tiyvPVhZ8fr7r/jTZOlnpxCiU0p59BqnvwOwCSF+DJwGfktKuep12u4FH/9KSOSKfOPYBNnSZu2vv3ntks6r8zlI5IrUeOycnUry7OkZVEXw6Pp6moMuNN1kbaOf/ukUpoR80URKmEnlsSkCn3NpwzCV15lO5ikakvF4rio3vUTipU1/myJ43442gm47T+/sAOCPv3uGoWiWVF5HtSkYpiWglszqnMjGOTuV4julbO+P7+2iKeDiw7stN96XD1r5B3XeO7/4fP90iu+cmEQRgqd3tc/LhJ87vnvqvGxuDWJTBFtag9htCkXDpK3Gxb8cGeXibIbpZIHpZJ6vHR5DVQT/+T2bWTPHOOZ1yzVXNG4swsqhKrx7W+v1D1wGK1kR/LdrvCaBN1/j9SbAIaV8ixDiT7HkJv5t7gFV9dGbTzhVIKtZ9ng8lrvO0Zd559YWJhNWyvyljULdlLjsKn/yM1uZShR4oCvEXzx/AbfdRsBtLYPtNgWvw4bnin2Gk2MJTozHua+tZp6UbyyrUTSsDM3llLG816nxOtjSGkS1CUajOY4Mx1nX5GNndy2TiTxuu7Xn87tPrufrRyeYTORxqApNfidD0SyjkSyqopDKF/E4Lj8yfub+dqaTeZoCS09cul25NJ5MKYmktXmGYO74dtltNPhdOGwKIa+DL3zsAQbDWR7f0szTf/kqM6k8WU2nq9Y6XzclI7HcPEOQ0QxmUwVqluG6WW1WUrz+sRVcNwG8UPr/T4Cdi7T/V8BfAezcufPuV7C6DVjT5Oc921s5P53mQ7s6lnyebkrSBZ2gx872Nj9fOzRCg9/JmgYf4XQBv8sKI31iSwsnxuJsbAnwL6XZkm5KxhN5Ns5xQb3QP0PRkLyQmZlnCHrqvOzsDpHK64tqtN8Io9EsmmFWLLplNJpFNyU9t8lmdlbT8TtVGvwOXHYbBwYjuOw2ppN5tnXU8Mn93TxzfILt7TXs6q7n2HCCaKZIwK3yxNYWvnpohPFojmROQ1xRQsihKvNKMK4G8azGZCJPb4N3VcOF7+8McX46jcduY8MVYZfpgs7JsQTbOoO01XjmGb71zQHWl1w7vQ1e8rpBZ62bD+/uIq+b1HgcPLJmfgbxTLKAEDCTKqDrJs/3z9AYcC0IM10qyXyR8ViOnnpveW9uuVRis7iMEOKvpJSfXsKhPwV+qfT/7cBgJftR5cb5yO6lC1Vd4pvHJxiP5/C7VE6OJ3ixfxYhBG0hj6Vvb0oe6ArxyLqG8gPyga4QJ8bjuOy2BfHOHbUeBmYzCx4yiiJ4eG3lQkZHIln+9egYAG/Z2HjDX8RLDIYz5XyIt21qYkvb0orqrCb/dnSc10fjjMdzSAkehw2fS2V/Xz2qItjRGZpXQ2BLe5CMZlDnc7Czu5b/78cXmEnliWY1wqnCvJyR1UbTTb5yaJScZtDb4OWp7aunYXR+Ok00oxHFSoqcG+75X797hpFIFt9RlS989AHUq0RDPbqugaaAi85aDy01bn7/nZsWPW5LW5Czk0nWNfn54quD/Oj0DIoQfO7dm9iwTP++lJKvHRollddXVAehooaARWb2iyGlPC6EyAkhngfCwH+vcD+qrCK6YfLtE5PMpPK8ZWMT56ZTnJ1K0uR3kchZUUdSSsZjWQ4PxcgUdBRhZRRfKl6/tT3I7p46Qh77AlGtd9/XSiqv43dVZng+d3aGc9MpdnXX8kDX5YfeXFGunLa0LSopJT94Y5qhSIaHrpjpzW0jXzTIajrPHJsgVzS4v6OGw8MxQl4H79nWWs7JqBT5osHXj42T1QzeubWlHKmSLxoUDRNNN4hmiuimiaooZemCk2MJXrkYpqfey9s3NbGvr57NrUG8DhvPnZtluuQmctlt5PWbmzVsSlkWN8xpBmenrKI47SEP+/rq+NaJCaSEp7a3Lqss42JMJfMcH42jCHh0ff08QzAeyzJRmug8f36a//v7/bjtKn/+4e101F4+7vEtzezrq7/uuP2DJzcymcjTEnTx58+dL7/XaLbA1w6NksxbGfbXy1C2zqMcQbTUMbwYlTYEM0s9UEr5f1b42lVuErNpKyM1qxnUuB34nCr1XicBt53feutafuurxwl57Dy5tYVXLoTRTclkIs/L52eZiOeIpjVSOWsD0+Ow8dDaetY0Xl4VKIqoWHho0TA5PmoV7zg2EptnCNY1+UgX6imU5LSXQrqgc2YyabU3Or8oyIZmP1lNL8k411gFRJJ5AJ49M43dppAu6Ewl8gsytVfKcCTLVMLyT3/92Bgf2tVJyOvg4bX15Is6fQ0+XhuI8MZkEpeq8FJ/mE8/3MerA2EuTKeZSeZ5aE09XqdKwKVydCTOj85Ms39NHSfGE7x7W+uS71GlcNltvHtbK0ORDNvba/jBG1NkNYP+6RQeh0IkbU06+qfT1xU/vB52m6DO50BVBKqiMBTOMJsusLUtyObWIKaEtho3Xz9irX4VIfjOiUk+86Y15Tbi2SL90yl6GrzXFHxTVYWO0uf/yf09OO02mkoicd89MYVmmLTWuJdkCGyK4KntbVyYTbO5dfnRQuU+3fCZiyClfLyS7VW59Wi6WZ695jUdRVGwCcFoLEumYLC+2cfunlpMKdnYEmAikS+7bwq6gRACiRWaGs1ojMZySOD18QT90ylsQjCVyM8zBDfav8Ww2xTWN1sRS5uuWHYLIeaJgS3Wtt0m5iUOeR0q3fUehiNZNrXM77OiiLIOvaabNAed+F0qBd1kV3eIYyNxajx2GgOVj3ZqC7kJuu0cH43RU+/jX4+O8fN7u3mxP0zRgIJWxKEqCKyVkM0mcNmth+loLEtd0cGlVJFz0yle7J8hkdWo8Tj4/XduWvGD9kbpqnXT4HPic6lsbAkwnSzQWuNic2uQ/uk0EiqyH7OhOcCp8QQOVaHGbbfEEk0rgOKx9Y247DY2NAf458OWqwoBRWP+DPybr08QzWgcG43zy4/0LppwdiU1Hge/WjImF2ZSjMayaLpJVtOX3PeOWs+K92pWEj76LUrZxIshpXzPjbZd5fbgklxAV52HjpCHP/txP3abwm+8eQ1IgZQSiaBY0hMqGlbGWtewAAAgAElEQVSNgUsEnA6e3NqCYUh2dNUwFstR63Xgc6kIoDXoQgiBd4nho1fynROT9E+n2NYR5M0brq64+OTWFh7f3LysYimvj8Z57twMDX4nT+/sKGdpKorgfTva5+nNz0VKyTPHxzk4GKWgm+zoDPGxPV047Tb29dWvWsEWn1PlUw/1oBsmo7EcL/bPcmgwSq5oYLcp9M+ksCsKG5v9hDx2NrYF+fKhEQbDGbrrPHTWecsPLuszFKxvDvDY+ga236KcDV03+b1nTjIcyfKOzc186qEetrYFy/fw049YSveVULQxpPUoM6VlxE+OJ8kUdAIuO94Wa7zqponbYUNwKRdg/ri99NHe6Efscahs7wgBckEhp9VmJSuCz1esF1VuS86VykMOR7KMxbIUDUnRMDgxlqCrzkNW06lx2+mfSiGEYGA2w+Obm3GX1EXXNPoIeR1EsxqbWwNkNYMLM2l66r2oimAmVaDJ71xWwfN/fHWISFbj43u6yvV0z02l5xkCKSWHhmJkNZ09vXW47Lbyw2M8nuWrB0fpqffxvvuvvvnYP52ych2SBSv79oqsz6s90Au6ybGROGcnUzjtCpF0gbFohg/t6uSZ4+O0hTzlGP7V4AM7O/jywRGKhslgOENPvZfhSIYGnxPDlDzYU8vevnqCHksrqK3GxUxKY2fXZRG/dU1+5FbrwXflKupmEslqHB+Jky7ovNA/y6ce6inf93RO479+9ywAv//kBnzule0RDM5myuN7LJajq9Ya30GPSv/05fHdU29VYVNtCk2B+Q/rB3vqeO7sDA92196QcWqtcfPU9lbSBf2qiZyrxUrCR1+4/lFV7mR2ddfy2kCENY0+OkrFL1yqjSe2NnNoKMZM0ipME88WOTQUZX2zH6fdNi/ks7POU/aHB91K2Uf/3LkZPA6VVMFgKJyhewnL+5fPz/KtE5Pl3x/sqeX0RHKBIbk4m+b5czMYpkRVFB6aUwDkf704yJnJJAcGo2xs8V81SuOBrhDJvE5r0LWshCkhrMQ3myJI5DQKRZNUrsjro4nS8jnK2kbfsozfcqj1Onjfjja+d2oSmyLorffy5NZmvnJoFL/Lzif39xD0ODBNyWBzhm+fmKTO5+C1gSjbOmrK4YfLUa5cLeyKQqagk9b0kpT5Zf7ypUFePG/VUKh5wcFvP75hRdfa1BpgMJLBYRPs7A6R0Qymk3l299SRzBc5OGiN76aAi+FIFo9TnTeuAF46P0uuaPDyhTD3tdfc0Oqv9xaJ9FWiHsFa4I+BTUB5h0RKWfEKZdXM4JvLlrbgvBDIP/+5y8nk77rv8myoq+7ahWoWw19yBylC4HEuLfa51udAEQJTSup9Tvb11bOvb2GVJ620QWyYcsHMKuS1NqEdqnJNLZYri30sFVWxCpZ01nrIFXW+d3KK6ZTGmgYved1EVQS1q5yJ21rj5hcemv/1e2TdfAkPRRE8sbWFoim5OJPG7VCw3WZ1hu2qwOtSQUDgis+qZU4Ya2tw5SGttV4HH5tTP3iufhIwL7T4f3zkgUXb8LtUUnkdr1O942o2V6oeweewQkAfAz4J3Fl3oUrFSOWLPH9uFrfdxmMbGq/6cNnZXUu9z4nHaVtySb0NTQHesbmJ2VSBd93XyumJJGcmk2zrCM6POhKCTS0BdNMkcEWhlV97dA3b2mvoKsV6z+X4aJyLM2l2ddfecFSPTRF8cFcHZyeTvNgfRlHAoSi8d0crtV4nLTXueaGJq8356RQnxhJsag0sqkHzxJZmhiMZGgOuZalVrhZSwvdPTWGYkt09tTT4LG3/9tD8z+oje7qo8zmRUvLE1partLbafZW8fCFMJK3x8Np6ntrexlgsu6Ron9uNShgCt5Tyx0IIIaUcBv6TEOIlLONQ5S4lkS0Sy2rlePRLHB2xCm2AFc1wLRfDUtxBYCV++VwqsazGeDxH0ZAcGoxwdCTORDzHeDzLb77l8nXWNPhY3+wnlS9yf1eI0WiGn16I8PZNzYR8Dt60iMBdvmjw/LkZpLRCRD+xr3uJd2IhfpedsViO1wbChFMFXHYbR4bjfGJfN/WlB9tEPEdrjXvZmaDpgs5sqkBHyL2k2sA/OjNTvt6GZv8C37XdptxwxNZqkC8a5fBcm7CqqeUKBkORNJpucmAwQm+Dl7YaD601lycQqXyRcFqjs9ZTkZXN1cb3XCYTeQ4PxQCroPy77mu9re7lcqiEIcgLIRTgvBDi14FxYHEpyRJCiG7gAHAG0KSUb69AP6rcJNIFnX88MIxWir+fq5neFHAihKWHvpzCGFfj4GCUVy6EURXBvr46Tk8m0Q3J5tYAL52fJZqxJAh+c46ObTitMRHPY0rJxekkv/tvb5AqFHnm+Dhf/vTeRa/jsCnUeR2E01pFtHNeG4hwbjpFRjPJFU2ePzfDdLLAto4gLruNVF6nMeBcViZ30TD58oER0gWddU3+Be6LxWgOOhkKZ2kKuCoSXbPaqDaBTbHcf3VelalUnqJuMhzO8f/+qJ8jwzHcDhtP72zn7386DMCn9vcwFMmQ1Qw2tgR4fEvzivpwrfE9l6DbjtthI6cZNN/hekuVMAS/BXiA3wT+EEts7hNLOO9ZKeVHK3D9KsskXzT5u1cG6ar38thV5J8Bzkwmy5vFc6UdsppezvhM5orzztnQHKDR78KhKtdUFZ1J5fnBG9P4nSpPbm2ZlwtwZDjKibEE97UHGYpkeH0sjku1NGDiGY2cbpAtFEnli6QLVjnL8XiOH5+Zps7rpK/Bi1kKB5xNF8mUYrIvlfdbDEURfHBXJ/GsRv0NqppmNZ1vn5jk7GSSoyNx8kXrHpnSylxVFIVNrQEymobDppDIXb0/i6EbsvxeLp37yoUw/aXC8kORDJmCweNbmsvv4T3b2oikC6u+L1Ep7DaFn9/fjWlKMgWDQtFANyGR0xgIp5lK5HHZFfqnU8ykrGS9wUi6fK+T+SLnp1O8ciF83fE9l+FIhv/+7HmcdoVf3N9THt/X+oy8TpVP7O0mXdCXXEvgdqUS9QgOAZRWBb8ppUwt8dTHSi6kf5NSViUmuP5m+NCfvLMi52c0nVi2SGwkzs6u0ILKSJd4bSBCPFvk8FCMnV0hhiJZHKpCX4OPLW1BBsJp9vbWLThvKQ+d4yNxTk8kcKoKW9oCnJlIMhTJ8osP9/LTCxF0U/LqxQjtIQ9+p1XoZCaVx5TWhuxoLIfLruKxm7gcKkeHY0TSGpG0xta2ALt7a8kXDfb11fOZR/t4vn+Gpx+4dtimQ1VWpKXTP51mOJzhjYkkOU0vV6uSWA+4nGbwyLp6GnwuTk8m2NSyvBBBt8PG41uaGQpnub+rBk03eaF/lkSuyGg0W/4cT4zFy+G0NkVc8z3lSpm6rTXu2+Zh9o1j4xR0k80tPsxSplJeN9nUEmQ2WaDB72Rjc4CDgSgS2NwaoNbrZDSaY1d3iO+dmlrS+J7Ld09OcnHWChM9NZHksQ2NTCfz7OlZOL7n4nZYodLXYzSaJZErsrElcNttykNlooZ2Ym0Y+0u/J4BPSSmPXOO0SWAdVknLbwghfiylPHFFu1UZ6lXiUgnB1hpXueDIYqxp9HF4KEZHrYczk0le6LfqDb1lYyNnJpMYpuTYaJy3bbp6MtfVSOSLDIYz2BWFYyNR/uzHF5FSMhrL8tj6Rs5OpegrRe4MR7J4nTb29tbzk7NWiN6+NQ0UTTg7mWRndy29DV4uzqYJuu00Blx0ztmQ/cieLj6yZ/liesulPeTG47QR8thJ5e3EskU0jHLkxIM9teVM5hvdjN7QHCgXMjFMyUQ8x2yqQF+Dl+agi3zRpKd+6dFO3zs1yXAka82EH+qtuAbScolkNP6yVJ70nVubcKoKBd2kKeBiX18dhilpDDjZ2h5kf2mVuq4pQFPAVY4Q62vwMZsqXHd8zyXgthPPFlGEoNZjZ/syo+CuxWyqwL8eHUNKiGY0HrkNa21XwjX0t8CvSilfAhBCPIRlGO672glSygKlusZCiG8DW4ATVxxTlaG+gkqFz/qcKr/ypj6cqnJNv/HDaxvY1V2LU1U4PBwr/13TzbLrRb/B4hqxjOXOcaqKpT2UL2KWviiPb2nmTesbcdmt/nXVWVWhEtkidlWQK4LXYeNz79pIPKtTW9qLsEr13bowyHqfk08/0odpSv6v759lIpZDEWBXrP5u77AeVM+fm+H10QTbOoKLblwvFSklG5r9dNZ6aK1x86FdHRhSLkuuWS/VdzAMWf5MbyWGYZLKW+6vdN6gzmMnmtXoLkksSylxqzaaA+5yZvGV0U57++rY0VmDw6YsOYxzfZOfd93XigK0hCob9WOYkku3VjdvrnDfUqmEIUhdMgIAUsqXhRDXdA8JIfxzXEj7gT+vQD+qLIOlRqtcOu7+zhCKAIfNShgLeR3MJAs3PHOKZTR8ThVVEfjdDra1B0nkdN6+qZE3JpK80D/Lo+sa2NIWLPfh2GiMWMby2b54PszuUr3X5b6n1cRuUxhNZLkwm6Eh4MKR09CKJiGPnefPzfJLj/RxajyBKSUnxxIrMgSqTeH997czFM6wsSWAalOW/YV+x5Zm3phI0BHy3Bb375KmkG6abO2o4XunpgHBaDTLqfEEQgiGS26W0DVckMt9Lzs6Q4jS+F7bWNmkruagiye3thDPamzvrNxKo5JUwhAcFEJ8Afgyljv0g8Dzl0pZXqVk5cNCiD/EWhW8LKU8UIF+VFlFbMp8gba+Bt+Kirm8ZWMTZ6dSBN0O3rqxqbxs3tPbwOe+eZJk3uDwUIQvfnJ3+ZwHukI0BZzEszqPrV+4vM5qOg6bsqSwykpimJJc0cDnVNF0k2eOjRN02xmOWlLVY7EsU8kCvpI88faOEK+PxbmvfeUyAktVqbwaQbd90aS8W4VTtfHk1haKhsnOjiCmNCkaJg6b4L72GqYSU3TVe5dVmH0pXDm+K83tkKl9LSphCLaXfl6ZN7CPq5SslFJ+F/huBa5d5Q5lZ3ctX/zkgwBkCjpZzcCQsryRPZsqYJgL9X02twbJF80FD4JT4wl+dGYan1PlI7u7lrSBVym+cmiEmWSB3T21PNhTi11VyBZ0pAknxxM0+Jw8tr6xXMnqobX1C+QJqljYFFHO4YimCpjSEpXTdEkqX0RihXeaUqJU81YrRiWihlZSsrLKbcxEPMexkTi9Dd5Fs1IrxWyqQLqkJTMcybC7p46hSIbuKzJwZ5L5ck3loUiWtXPqwA6GM0hp6fyE04VVL6F4CUNKZpJWvdvBSIZ9a+rZ0VHD909N4lQFGc2gOeiip97LU9srW3D8bieeL+J22FBtCnZV4eR4nPPTKaaTeVJbW67pGqqyPCoRNdQE/BHQKqV8QgixCdgrpfybFfeuyi3lR2emiaQ1LsykK1IzVjdMZlIF6n1OHKrCTCqPy26jPeRmfbOfeNbKBK73OXl1ILIgNLWrzsvaJh+pvM6OK3ytu7prSeaL1HmdtN3EFH+bEDzQFWI4mmVvbx0F3cpQrvM6yBR01jX72dUd4vEtrTcst32v0ttg1bp4fSzBhx7sIKcZlqy2uvRN4CpLoxIj8++wooR+v/R7P/BVoGoI7nBqvQ4iaQ2/S0VVVu53/+brEwxHrCzXLW0BfnxmBrtN8OHdXTw5Ry/m+bOz6IZkIJwpF3oBayP2XfctPqtuDrpuqN5yJZgbDljQDJ7vn2UmWcDvUtndU8dTO9oXaNdXuT7pnMb56QyGKXntYpSf3dlOvmjiddpw2W+9LtLdRCVGZ72U8mtCiN8FkFLqQogbL55Z5bbh8c3N3NeWp8HvrEhI5mzKcqGE0wUGZtOcnrAqQoVT+XlJaLPpwrzj7wRGo1leuRCmxmPH51TJOC0p6pxmkM7rVUOwRKS0JgyGabKpOUCqYEWJTcRzPLa+kXVNfmq9jhWvTqvMpxKjMyOEqKNUrUwIsQdIVKDdKrcY1aZUtLbu2zY1cXI8wYbmAP1TKew2xYoBvyKX4R2bm3hjIrmiGqw3m1cvRphM5JlM5Hlqexuvj8ZprbGSoFaSrXyvkSsaXCyJFjYH3PzM/e0cHYnzib1dKIq4aXs/9xqVMASfBb4J9AkhXgEagA9UoN0qdxlzNf4lkothP07VtkDkbU2j/45TcWyvdTMezxHy2Hl6ZwcfvQmZzHcj1uRAlIvFf/bt6291l+4JhFxhNqEQ4meBHwAdwM8Au4E/uEr+wA1RX18vu7u7K9XcsijoJvGshhCCkMeB3Xbnb1INDQ1xq+7n3ca17qVuSqIZDSklQbej6tdeAksdm5puEi+JCNZ47LdcGuN25ciRI1JKed2bU4kVwR9IKf9ZCBEC3gr8N+B/YhmEitDd3c3hw4cr1dyy+OnFMAcGooDl2phbsetOZefOnbfsft5tXOtenp1K8r2TU4CVDHc7aszcbix1bB4ZjvFiv1Wq8uG19fOCCqpcRgixpAl5JQyBTwhxHmtFYAL/iCVLfVewvaOGWKaI3SZu++zAKrcXaxp8bG0Lkisa3N+1OjWK71U2twaYTeWRkrticnarqYQhaAK+DSjAA0AOOFiBdm8LPA51SQVAqiyflcpu3+6oNoW33oAya5Xr47LbeHxL9XtZKSrhWDuBlTfwuJQyDtQC/6EC7d4SDg9F+euXBjgwELnVXalyBzMcyfA3Lw/y7RMTGOatV/W8U/nxmWn++qWBcvnKKqvDDa8IhBDvL/33IJbQnFMIsbUivbqFHBiMlmqjRtm9SNGVKlWWwtGRGMlckWSuyM6uAs3BagjpckkXdE6MWZHoh4eiqypzcq+zkhXBu0v/AkAWePucv71r5V1bPZL5It98fYKfnJ1eMFtbV9KvWddU3Q+ocuOsbfQjpSScLvDqxXBZS6nKtZESfvDGFN85MYmQlPMGqt/H1eWGVwRSyk8CCCH2SylfmfuaEGL/UtoQQnwWeL+U8qEb7ceNcGQoVk5a6az1zItZf9umJh5d11ANR6uyIqwNTMkP35hmKJLl6HCsGjW0BPJFg9MTlhuozufgAw+0UzTMBcVnqlSWStzdxYrKXLfQjBDCCWyrwPWXTWPAkjd2qAq13oV1Wq9mBF4fjfPS+VnyxaqCRpWFmKbk0FCUVy9G0A2TpoAbh6ogBAuS5qosjmoT2BSBENDodzIwm+blC2FiGe1Wd+2uZiV7BHuxag40lGb2lwgASxEC+UXg74H/cqN9uFE2twZpDrhw2m34lqgIORrN8pOzM4CVKPTYCipLVbk7OTuV4uXzVl1nu02ws7uWT+zrpmjIeVpKVa6O3abw8/u7MU2Jy27jCy8MYErJdCLPhx6s1i5fLVayInAAPixj4p/zL8l1JCaEEHbgUSnlT65xzKeFEIeFEIdnZ2dX0M3FqfM55xmBU+MJ/vXIKKl8cdHjnXYFpaSJ474NSvpVuf24VAwnq+mMxrJkNR2/y06t14FumJwaTzAWy97iXt7+BFx2ajwOFCFwlrKxFys09KPTU/zwjamb3b27kpXsEbwAvCCE+Dsp5fAyT/8Y8E/Xaf+mFa+fSeb54++eQTclZ6ZS/Md3blpwTKPfxQd3dZAuFFdUorHK3UtPvZf37mjlywdGGQpn+faJSZ7e2QHAyxfCHBuJIwR8dE8X9b6FLskq83GoCh/a1cFkIr/gO/e9U5P83StDgCU38a5t1aI/K2ElrqFvcVlxdMHrUsr3XOP09cB2IcRngM1CiN+QUq56AXtNM/jB6Sm2d9bQUXu5+lXRNLkUPKTp5oLzZpJ5bIoohQDe/r7eZN4KW2wPWREXpikZj+eo8znuKDnkayWc3a7JZm01HgJulaIhMUxJLKORzBeZjOeJZzXcdhv5osFo1KrLcK8EJWQKOtGMRnvIjRCCrKYTSWu01rivKXHuVC33rU0R6LrJ0dEY3XVeCkWrljFAQb979uziWY1c0aAluLC40ng8h8+pVrxeM6wss/jzpZ/vB5qxpCUAfg4YutaJUsrfvvR/IcTLN8MIAPzmV49zcjyOx6HytU/vJeSz/LZtNR5+7bE+zkwleWpb27xz+qdTfOfEJIoQfGBn+02tfnUjpPJF/uHVYTTdZHdvLfv66nn2zDSnJ5L4XSof39t9q7t4V+NQFd53fzvD4QwNfif/8NowR0diKEAyr7O1Pcizp6eJZ4u0BF33hN87XzT4x9eGyWoG2ztqeGhtPf90YIRUXmdjS4DHtzQvep5umHzpwHDpOD+nJ5IcGIziddr4d29eW9532dZWs+j5dxqRdIF/OjCCbkretL6BHZ2XZUkODET46cUIDlXho3u6Km4MVuoaQgjxh1LKR+a89C0hxIvLaOemhY5OJfOYErKaQSynEfI50HQTU0r29tWzozO0oJxgJG1FK5jSmt3d7oYgUzDKq5poKdLi0s90QUczFq54qlSWtho3bTVuzk2lSOWKJLMaqqrgdtgIuOxMJfO4VBuReyQSJl80yrWmIxkNTTfLeRXRa9wDzTBJ5opkNINIRmMymQesMT6ZyJe1vxKFxff17jSSeR295Jq48r5c+v3SvbttDMEcGoQQvVLKAQAhRA9WTYLbjse3NPHlgyOsafDTVeclmtH46qFR8kUDgUQieGhtPbvmKBnu6KwhXdCx2wQb7gDRueagi/1r6gmnC+zrszKj37KhkYNDUbpqvUuOkqqycvJFnW+dmCSvG7x5fQPbO0Ksa/bT6HdyejLJpnskU7bG4+CxDY2Mx3Ls7q3F61R568YmhiKZed+1K3EoCifHE4xGs7jUZn5hfw//fGSMjc1+NrcF+eGZaaSUNPjvjv2W7joPu3tqSeb1BaoG+9bUA1b52NWYjFbiqfB/AM8LIQZKv3cDv1yBdiuO32XnvdvbAchoOpOJHPmiQU7TmUkV6KrzMjg7f3C67DbedocJhz3YM//L1RhwXbXWb5XV49WLEWwKeB02JIKP7+suv9Z7jwUcbO+oYXvHZRfOlrbgdVVDI1mNrGZQ53MyHM2yoSXAH7zLCuQ4Mhylo7QHNp0s0Dlnz+9ORQhRfuBfSdBt54mtqyeyt2JDIKX8vhBiLbCh9KezUsqbVmz2yHCU1wairGvyX/WB/dzZGU5PJmmrcVPvk3TVeQm47PQ1+OipT5MvGmxtryGeK7K79/bTNc8XDb5+bJxUvsiTW1vKm8BVbg++c2KS4WiGR9Y2lB9uF2bSpDSrVrHXaeMTe++dimW6YfKN4xPMpAq8bVMTaxpvzOg1+BxIKRkIZ9hyRdnSDc0BBsNZpJRVDaI5XJhJ8+zpaRr9Tp7avvTJ30qiht4spfzJHPG5S/QJIZBS/tuNtr0cjo3E0XQrRvuRdfULilobpuT4aByAmVSeTz/SV37NZbfx3h3zN4dvR8ZiOaYSln/0jYlk1RDcRhimpH86BcDx0XjZEJwcj6MKhSe3tvBzD3beU6Jzs+kCI1ErX+LUeOKGDcFs2qoM2NfgYzo1f27pdap84IH2Fff1buPUeIJ80WAkmmUmtfT5+EpWBI8CP8ESmbsSCdwUQ7ClLciBgSjrmnwLjACATRHEMhqHhqJsag3w2a8ep7veQ2uNB6/Dcvuoc3RM3phIcGIswZbWIFvbb4+CF9ZKxkEyr98R+xT3EjZF0FPvZSSaLRuB//3qEN96fYLJeI5anwPdMKjzudi3po4NzXf/7LXe56S1xsVMsrCi2XqDz0EipzEWy/H45mYODkb4ysFR1jX5+cyb+q563nAkw6sXI3TVednbd28pCG9qDTAazdIYcC5r72QlUUOfK/385I22UQn29Nax5xpy0Zpu0j+TIuC28/KFMN11Xk5NJHhoTT1+l501jT7WzlE2fP7cLJpuEk4VbhtD4HbY+Fg17PO2Ze6qMpHVLFdRJEO+aEWkvXA+zJoGH7pp3hOGwG5T+OCulYfFjkSzpPJWhMy56RRfPTTKeDzHeDzHOzY30XOVfZaXzoeZTRWYTOTZ0hbA76p83P3tyrom/w0pta54j0AIcRF4DXgJeFFKeXqlbS6HqUSe46Nx1jT6WNPoI6/p/O1Ph5ASPrm/G49DxW4TXJhOE3TZiWY0fE4bM8k82aJBfSmX4Jlj45ybSlFfCim9JH+7nGvrhsmrAxGkBLddIZ7T2d1bS+AeGoj3Ol6HSmuNm/FYllSuSFS3QifzmgHCqrXb4LscNdRZd2vdfDOpPMdG4nTXeZdUijWVL/LaQJRar6P8Pja3Bpb0fVkuTQE3qbxOOq9T47bTUevhxFiCpoCToFvlL56/MO97fonOWg+zqQL1fuctS6DMaQavDoTxOlQe7KldNOn2RpFScmAwSlbT2ddXz3g8x/npNPe1B2m9wYiiStylTViF6h8GPi+E2AC8LqV8XwXavi4/eGOKaEajfzrFr7ypj2+fmOSFc5Y2Uchjydjqukmj30lBN9nTV0ckrdEUcOK024hmi6TzBl8+OAJAT52H33ly45Ie3lde+/REksNDMTIFnWS+SEvQjaab92ypy+uVorwbUVWFP/2Z+/jtf32dVy/MEskUSeV1dNPEGJF01c6iGSYOm8JA+P9n7z3DI8nO+97fqaquzgGNnIHBREzaMJtm82xm0IqkRFkUSYm8Fq8tWcm2rGvL19Jzpatr3WtbluQPFpUsiRJFabkUc1guVxu4cfLMTg7IsdHo3F3x3A/V6AEGwAxmBhNWi9888yB0dVV1oeq857zh/xb4uUfW39Tz/f6xKSZzFU6M5+lKhpbU9JnPD8+kOD7uxURMx0FXVQZmivyLh5d31Vwtx8ayFAwbCZxLleioC3F/Xz0hv8bXD0/UnvNkWOcn5xXmPbSxkR0d8VpF8s3gzfMzHBr2muo0Rv2rmiV2drrAG2e9DoqKEBwZyWK7krFMmc8+0HtV+1yN+nYHsKpfXWASmFqF/a6IWNCzZWG/hioEzfOCcs0xP5oCQb+G6Uoifo2i4eDXFAI+DV1Vifo1okGNQFVIriEa8ASvVnADXXzsWB0vasYAACAASURBVLXIQ1MF2ZLFkdEMPnX5/Xz76Dh/t3cYewlZizXeu+iaQncyhKaqCCHQFFGLX+XKFvXVitjrIRVwpczdwyFdZSpf4Z0Bb6a57PbVCZJPFSRDfmzH5eREjhePTwIXkjNOTuSv+dyaYzpzj2HQpxALaMRDOrGgj7bE/Oc8wGimvODcEyF9QezvRhPRVSayZWZLJpHA1c23UwWDt8+nyZQWFpdFA76aAGYi6KvtPxb0ka9YfOGNAV4/k7qiY63GiiAHHAH+G/DHUsob2uz3g9vbGJ4t0RoPoCiCBzc0Eg/6kFKys7MO15Vsa4sTDfhwXLda3anx7G1t1IX1mvjXb39kGwOpIvf1rjy4dPGxexvC/OTdXZyfLrB3II3leA/Fk1sXl9C/fHKqJppVsZz3pPTD+3HGv1I2tUS5qzdJ2XS4u7eObNlmOm+gawpPbWvGtOUtUaX+9NYW+ltLxAI+vvi2J28wMlviI7cvnZFzX189bYkg8aCPoK7yX757gpF0mc+/co5k2HOrvl6drfo1hZ6Gq8/vb4gGefa2No6N5fnYnW08tsVLRW2I+okFfDRVg6EbmqP86avnsV3J6Gz5lsgENB1JsOqWNqyrm+g9v3+EouFwbCzLz9x/YabfHAvwiXu6qFgOnckQG1uijGcrdNaF+L0XTrF/aBYhoPUKMtVWwxD8JPAA8HPAPxdCvI4XK3hxFfa9iOm8QdGwF9xgUkocx+XV09O0xgLs6FioPeJTvdlEwbCpC+n4VEFnMlRbBQB01oVqBSqXI1+xmMwZdNeHFqkitsQDFE0bTVVQFTAshxePT3JHV4KZokVTzLuJ5684DMvh7HSBlliA8WyZ1liQiXyF+rBOIqQv+7nXuPUYz5aZzFU4MpojoKk0xwI8va2Vl05MY7sSn6oQ0DQ6626NalgJuNKTUKnYLpmSiV8TZMsW8aAP15WcnylSH9bRNYWxTJnOZKi2wmmIBDCdWVQpsFyX0UyZVMEg6FNZDbe4pij4VAWB17BmvotlZ6enxTN/BbOKrvgVkS6aZEomvQ1hDNtlZLZEWyKI4MKK7+JzypRM9g3OcntnHcnIwj4VSz3nS8UXTk7mmMmbdCZDhHStNg7NbSq4sguxGgVlXwW+Wo0NPAP8MvDvgFWf7qQKBl98ewjHlTUpiG8cHmNwpsS7Y1lyZQufqvA7H91Od713IYXw/lcsl61tcW7vStCWCC4wAleC5bh88e0hiobD+qYIH15C/ravMcIvP7aRc9N5fnBymqOvnEMVcFdvPSFd5TP39/LghkbKpkO6aJAqmHzt4BjpokkyrNe+6prCz+zuoWw5iz73GrceQzMl/m7vEN88MoHrumiKwp4tTXzt0BhFw0EAP3pb+y0lifCdoxOcmSrg9yk4rsv5VJGZgoF4a4jP3N/DG+dmODjkuThVRaFiOXTUBfnxqrz29o44ewfSRIM+joxkOTWR5/RUgW1t8WtWVs2UDL56aAzbcZkuVPjfHlw6DhHSNT52Zwfj2TL9rTcu0y9btvibtwaxHMldPUnGqhlNdSEfn7qvh7BfI+zXFtX9/MbX3mUiW6Ep5ucPf/KO2u+n857onCslD25o4GN3dHA+VWRD08Ig/ksnJvk/v/ouUkpOTxf4t09uqr02FyftrQ8vm1W1FKuRNfRl4DbgDPAa8GngrWvd71IUDbvWbH6ugUyubFG2HDIlCyG87mGe5LIfw3IYmS0hJbQlgihCcGf3tQ2ijispm271HJb3pd7bV8+u7jq+cXgcy3HJV9tbli0Hy3HRNYUtrVEmcz7Gs95SOl0wMGyHfNmsLbMN213yc69x65GrWDiuxHJcpCvx+wQVy+HEeI6maJCmmP+WWtGZtstkdk7IzUbgrZ5tV1KoWMyWTPIVu3rPCqS00TWVqZxBtmTiSEgVKvS3xRBCkC6amI7Er6kkQj4KFRuuYlweSBWwHYlhX5CHr5iXdq+0JYJXnTFztXjyNA62K8lXLDIlg9miiRASRcDOzqVVUTMlE8txF/n+i4aNK+eec5tESGddoyB6UYxhLFOpjgeSqVwF23HJVWzqQj6iAd+CwPlKWQ3X0H8G9kspr7soeHd9mIc2NpAr27XagaCuMpYpc0dXgoCuEtZV9g3M8uLxSb5/fArbcXlwQyN7NjetSl1AwKfyge0tDMyUFminLIWmKfS3xzk4lGHP5ia2tcfpSoYI+zXeOj/Dv3vuMI4reXZnG7d31fHKqSkGz5VorwvxsTvjtMQDJMM6ybC+6HOvceuxpTVGrmIR1FVmSxYVw+IrB8awHJfOuuACP+/NxrAdvvDmEJP5CvGgzjPbWvjaoTECmkJj1E++YvN374zQEvMzninTHAvwY3d28PKpaYbTJX7pSwdRhaAh4ice8vFkfzNtiSAHhmYpGDY99eGrqijOV2w+/Wdv40r4xT3raYn6mcob7Oq99aSmowGNYnVV/+CGBs5MFzkw5KWTXypddGdHgtfPzrDzIhd2T0OYBzc0kK94z/lXDowynC4t8jw82d/Elw+MUDRsPnJbO1/eP8JYpsLmluhV6xGthmvonbnvhRCfl1J+7lr3ucxxENUZ/dz3AAXDqfnHfv7R9RwZzfLyyUkmsmWKho1fUxjLlnmiv/myubzz9wvgui6Koiz6/YbmKH2N4QWvzW07H6eaqXT/+gYifo09mxpQVRUpJfsG09iOi+tKJvMGj21p4re/eYygrpItmzxe1U1a7nMvd/7g+RQvt+0aq48iYHdfA7v7GpBS8ltfPwpIpJQYtnPJbJwbhZTe+eTKNrmyRdCn0hzVaYkH0BTB5tYYpu2gayqO6zKYLtHbEEYIQSKo0V4XZGS2RNl0MG2HkK7SVR9iV08S13X5wPbW2n03dz8udQ6wtO+7ZHqrXynh7fNpWhNBmmN+Aj6t9t6bcV/PP+7c97MlL44S9XuGfzpvkAhqZEoWtu2iqmLBuc69z+9Tube3bkklhF09ydr1GcuUkdJlZLa84P3pks2D6xuR0qVkepLc4DWuuVpWu9pi1yrvDwDLkfzPl88BEoHAdl0+tKONnoYwD29sZN9gmg3NUXRNIehTePHENI7jkghqlC2X7mSI33/xNLu6kzywYbG6n+NKvrx/hPFMpbZy+NqhUf727WESQR9bWqMEdY0fv7OTaEDlN752jNNTefpbY8SCPgzb5fBwhmRE57ef3Ua8GuBVFcGjm5o4MZFj/9AsD/+Xl2mM+Hl0UwNF06Fiudiui18V/MGLZ3hkYyOHR7M8tqUJgMlchef3jy75uS8mXTR5bt8wtiNRFYFpuzy1reWqqgzXuHKOjGT5wYkpWuNefcpz+0Y4NpbDcT310eZYYNES/0Zi2A7P7Rvhe+9OMFuy2NVdh6IIXjudwnZcvvjOMJtbooR0jbxhcXqyAFJSH/YzWTCqAc40n31gHT0NYV4/O4NpO+xoT3BXdx2/8MX9nJ0qsKE5ylNbW8iWvYHxya3NC6qpZwoGz+0bAeBjd3YsatkZDWhULAdHwhNbGvnd755mIlehOebn8EiGl05M014X5CO3t9+wGoHXz6Z4+7wnbLmzM8E/HBgl6FN5emszb52fIVUw6G4IUbEc3h3Ps64xzFi2wtcPjxHWVT68s41vHRknW7Z4Znsr3zk6zumpAusaIvzCYxtqxymZNn+/d4SCYfOhHa28dT7NsbEsd3bXcWaqiW8fmaAurLN7fZKXT05Rshxu76rjkU1NnJzIcce8RjZXymrfmdelfsCwHSqWQ7ro+daaYwFOTubpaQjXqnrnODCcIeLXMGyHeDDIjo44pyfzJMN+jo1nlzQEmZLJaNXqHh/Psb0jzhtnZnBcT/kwEfLRGA0wmC7SEgvURMbeODfDk/0tvHl2Bk0VTOUMjo/nuXeevsnOzgQ7OxP89ZtDSCkZTBeZyEWZKZq0JQL4VIVzqSIN0QD9bXF+89lttfeemSos+7kv5nyqQNFwyFW8Aqb2RJDj47k1Q3CDODaexZWSwZkSlis5nypgOy51IR+7eurobYiQK9+8FcF03mAqZzCULqMIT6zx3nX1OK6kaDqULYc7uurwqQpIUIXAAWbLFpbtettVUxk3t0RrA3gk6MN2JVM5g3zFZmimxN6BNBG/hhCCE+P5BYbgfKpYa1JzPlVcZAgM22V7NTh6cCSHYTvUhXwMzJQ5NpbDlZLhdIlc2aIuvDDj5npxbCyHlHByIo9P9SZZpu3yw6qKQH3Yz5HRPJM5g7qQj0zJ4thotrbdkZEsqWqDq1MTeYbTJXyKYGS2tOA4Y5lyrQHN8bEsgzNFQrrKmekCJyby2K5kOm/ww9Mz+H0qfp/KoZEsv/z4xsu6qS/HqlZcSCmfXs39zRHwqcSDPrrqg1iu5OREftkc2YfWN9IQ0WmJBdjdlyTi13hkUxMBn7qg9dt86kI665siBHW1FuDZ2ZUgXTSJ+TUyZYvh2RItsQANEZ07uuoI+FRu60zw7liWjmSQbNmrgDw5meNv3x7i+f0j/NUbA3zz8Bh/8foAt3fF0TWVDU0RUvkKfk2hoy5EfcTPw5saFxx7jk0tUeJBH72NYba0RqsFcTZ/8fpAzRjNsb4xSn1EpyMRZGdHnJCuLkqjXeP6sbMzQVBX2dwaY1d3HesaIiAgFtB4ur+FgE/lju6rn7GtlL0Daf7i9QEOVRV352iOBehKhmiNBSgbDqmCwaGRTE1iRUo4OpqhYFgEdJXexjDrGyNsaomyoyNOc/Xe37Olibt6krQngjhSYtoOIOmuD9EY9bO5JcoDGxrpbQwT0lV6G8J86Z0hnts3Qtl02NAUrcW9NiwRQ4j4NRqjfupCPn50ZystsSAVy+XO7iS3dXnXeENz5IYW491efd53dsaZyFb4/Ctn+bPXztOXDOFTPRfRnV0JtrbHqFgufY1hdnYniAY0WuMB7uiuo70uSMSvsa09Tms8QMV2aY0tHMM66kK0JbyV4/bOOnb31aNrKg9taGR7e5ywX6UzGeLJrS20xoPEAhp7NjetymcUy/nxLvvGec3rl+IyzeuviF27dsm9e/dyZqrA1w+NAbC1LbZkodZq8eV9IwylSwylS9SHdcJ+jce2NC0YXP/k1XPkKzanJ/Osa4wwmasQ9msI4QW92uIBTk0W2NQSJexX+dxDfbx4fJLDI17p+Qd3tF7RjL1o2Hz+Fa//T31Ev+oitF27drF3796reu98bmZB2a3SvH65a/mVAyMMpLwZ342SoZZS8gcvnsGVEr9PWVK+4k9ePcdLJyYZmPHy3buSIQTe7FwIwbrGMLd11vGJey6fefIHL57GcSW6pvDzjy4tlfH6mRRvnU8DsGdz07KZNHPMv54Fw+aPq/d7Q0S/JYQXn/n9Vzg7VQDg0U2NbK6mq/Y1RRjLlCmbDkLAL+7ZsKw6wSf/5E0sR6Ipgr/+2Xuv6/kKIfZJKS/rsl+N5vU3jJZ4gIhfo2Q69F7nNLz6iM73j0/i1wQHhzPoqqC3McjobJkHNnjKpX2NEQ4OZ2iJB3jtzDQRXSMZ0ZGATxGcmS4gcfnHk1Pc15fk64fGUBVPHySoK7XBYf/QLKOzZe5dV3/JHPOgT6UtEWAsUyHq9/G1Q2NsaIoskvp969wMqYLJ/evrawVpa9xY1jVEGJwpkQj6qAvfmNmrEILexjBnpwoLCh2Lhs2rp6cZmimRLprUh/1M5U1Cusbmliivnk6RN2yklJydgslshVOTOXb3NdBeF+DL+0ZZ1xDmkxcNxGXT4fWzKR5cwt369vk0U/kKPfXerFlRBO11F9I7D49kGJgpcXdPclkjGfKptMYDjGcrN7Wj23C6xIHhDBuaIuzsiHNyPA8Cnupv5uBojlTB4N51Sc5PF/jHk1Ps6kleUqKmJR7g4FCGnZ0JchWL106niAd93Ntbxx+/OsBM0eCz9/dSMGyOT+TZ3h4nGdJ57UyKZFhfJK19ciLPyck8t3UkrlrE8Jqb199IIn6Nz9zfg+3Kqy4IWymZksW6hjCHR7LYrothS75zZJJNLTF8qsLj/c08urmJe9Yl+e8vnMSnKqRLJs1xb2lXMGy6kiFePD5JPKjz8qkUfs273J++r5t40IemKswWzZp4lmG7l2y2oSiCH7+zk4rt8KV3hsmULM5PF+lrjNSKdyaylVqJv0Sutai8SezsTLCxmsBwI4XPPryjlbLlEJz3fLw9kObt82neHcuxsTnCw5ub+O2PbENTFZ7fP0p9WCdXsVCEYKZYYTwrOTNdQEgYy1bIlC3eHcuxqyfJ5nmTDk9LS6mtcOeYylX4YVXrxnElP/vQOgSido8WDZsfnJhCSihU7GVXH4oi+Pgu736/WSqiAC8cmyRb9p4105E0RHUEMDRbIRH0EQ1opIsWh0ey+FSFY2NZbNtFW6agrrchTF1VM+nNszM1XabR2RIvnfTCrH/z1iC6pmK7kvFMma5kqOYO7qoP1eRJHFfynaMTuNKrKfjnD667qs94zTECIcQGIcRzQohjQohzc/+vdb/LoanKNRsB03Z569wMR0ezy24T8auMZysEdRVNUfBrKudTJb5+eAxZ9YjNFk32D2aIVEWgQn6NeNDn3bRSMJU3CPk9o5Co+jSjAY1Y1QiAVwcR9nufpz5y+dm7oghCukZ9NciWCPkWCNtFAhp+n7fv+vCtU8H6fiSoqzdc/VII7/6YS1s8MZ7j5RPT5MoWluMyka0wmS2TN7zBtSGiE60OZiFdJR7U0TWBlF6gOB7UOD9dIF00sV3Ja6dTzBS8zldN0QCqImi+yNcd9l8QcWyM+PFr6oIqY11TiPi9gf1y9/zc/X69sR2XdwbSHBrOLEp79fuUasc1SW99yCtyE4KtrVEKhs14tkI0oNEc86MqgsZoABeWHWP8mkqqYOLXFDRV8NKJSQ4MzbKhOVp7ljvrw7VnvD7ir32va8qC7DNFQLK64ryWivXVuMJ/DvwG8HvAo8Bn4AqFLm4wb59P886A57eMBrSaHMV8ypZDPOSjJR7g0U1NvHZ6ij99bQAJ/PkPB3iiv4VvHBknVRUS+7WnN9EaD6JrCqmCyVcOjGBYDm3xIBFdY2NzhGd2tFIf9nuZGVUCPpVP3tvNbMmi7Qr8yB/c3sp4tkxDxL8gVzni1/jUvd1ejOIWEDVb4+byX793klzFy83f2ZHg+ESOd8fySEb53x9ax5P9LQuayEspeetcmkMjGQI+lX2DaVy8iva/fXuI+oifs9MFfnp3D//Xs9s4MZGj/6J+wmG/xqfu6yZXtpa8B32qwk/d081M0aAtfmvcoweGM7x22lvFBHV1QezOsl0SIR8SL3B8brpIwKeQiHgyMImgj7Ll8B8/1M+xsRybWqK8dX6GvQOzgKfYOt9lYzuSRNCH48pab+fpgsFkzuD/+dgOsiWLbe1xTNtlKl+hOeZlF3YmvYDz/EY7Qgg+flcn03mDltjVx6FWwxAEpZQvCiGElHIQ+E0hxKt4xuGWZP4M2neRVG3RsBmYKeJK7w+oKQK/TyEW1EF4D0qwOuP2V9+rCm9AF0JQH/FmBUGfhl9TKJkuLfEA4YBv2V7DIV274lmPqohl91c2vTTSZjdw0/TY17jxzBV6za9s9ftUZNmTX1EUQdivoSmeNPZM0SRdNNnQFFkg2WzYLsPVdOpA9T5WhCCge9vUZvfCGzTdJVJGIn6tNutfiqCu0qF79+/QTAnLdRcJON5IdFUhXTRRFbFoTHBcyUSmQkDzPANd1YljyKfhuN710qorl11VHbC5fQgBPm3hMxjUVWJBHwGfSsjnrRqFEEQCalX8snpO1czCOVrnGc35f2u/pl5zH/PVMAQVIYQCnBZC/CtgFFidnKbrxF09SWJBHxG/tmjG8vz+EVIFk1hA44n+ZlJ5gxePT1E0bLa2xTAsl0/d2w3Ah3a2cnaqyMhsie++O4kiBJ+6r5tkWOfjd3UwUzBpjXvB3XWNN0ZjJluy+Nt3hnFcyXhXhUc33dJ/iuvG5TKabpWso9ViLFPmuX0jSAkPbmioDUi//oEt/M1bQxRMT0vo43d20BwL0Bj18/d7h7EcyfBFGXjrm6I8e5vAcSWffaCHv3x9kB0dcXZ2JhhOl2v38nN7h5ktWdeUwTaQKvKVA6MAPL6l+ZquwbUhvX8SLp47HRnLMjxbomDa/OvHNxINagSrKe0ga/pA87m7J0m8Osa0XrTq+egd7QykSnQ3hAgoCn/2+nm668M8sL5xRWc6Ou9v/dDGhmvWT4PVMQS/DISAXwR+C9gD/PQq7PeaKRo2RcOmqbpkklIymTNIhHzLNtUumg4Fw0Kvaq5kShZl06Fo2qxv8gppZHW2FdI1tnfEmch5Jd6ulJjVJjOqEChioX/vYrJlC9txl339ajAcpyZQZ1jXXf5pjRtMpSqw2BT1L5Qyt13mxqPKPP37xqif9c0RDo9k0FTBxpYYvQ1hMiXP5y+lZCJXoWI5C2Jv9WE/ubLFQKrIv3y4rxb4nJ+FVqne6xXLoWDYlEybpuiVuScqtrPk9zcaw5a1mFrFckkVKkxkDba1x7Fsl7Bf8+TupaQx4seneUqsc6t5y5FVlVSD+rC/Kip5YYyZf32CPpWGqE7Qp+JTFT56Z0fNI5CvWFQs95L+fsNylvxbXwurpjVUXRX8opTy2lsTrQJFw+Yv3xikYjns7qvnnnX1/ODEFIdHssSCPj59X/eiJSB4S7pUwaRkOvzNW0OUDItU0cKvKTzW34RfU7nzosKgB9Y3EPSp1IW9mMJUrsKvPneYiuXw9LYWPrOE2NhUrsKX3hnGdiUf2N66on6xK6EpGuDpbS2kCsai81zjvY1dlUDPlKxFdTS9DWEe3dxEybBrqwGArx0a481zM5yZKrClNUqsGmhMhHQ+uL2VbxweZzxb4YtvD/Hp+3pQFcFopszfvj3Et49OENJV7luX5N9/oH/R+Tx7WxsnJ/K01wX5yzcGMCyXhzY2XtF9t6k5StHwFHlvv8bq2Gvhjq5ErSaiIazzb//+ECXT4fH+Jn7p8Y185+gE9/QmOT9T4jtHJ9AUwU/c3clTW1uYKRrs6k7yjcPjnE8Va41j5siWLb7w5iCm7fLwpkbOThUYmS3TXhdkY3OUl05MoWsKH9reyjeOjGPa7qKapfmsa4ws+be+FlZDhnoXXsA4Wv05C3xWSrnvWvd9LeQqFmXTxpUwlfeyHCZz3tdc2aJiOUsaAsN2aI0FGJot0RQNMFO0aIjohHSNpmhgQWBtjqCuLpCuGM+WqVRn44MzpUXbA6QK3owMvAbiq2UIgGVXO/+UeD92RzMdl0zJkyGfu6c9QTu3Vule29Z2UfAkiyuWi19TaIj4vTqCyIXOXg3RNKm8QaZkYVTTNFN5A7MqsexJISwtZtYaD9IaDzKcLtW6cE1VV8crxRNUvPkTFk1V2NkZR1MUzkzlKVZ7JQ+mSmx8MFoLHr9yykv1tl1JumguCJRP5b3PnioYuK6srdiyJavmKZjKGbW/3VSuUquQNm2XoXRpwXaX4lolJS5mNVxDfwb8nJTyVQAhxAN4hmHHKuz7qqkL6WTLFpN5g93rvQKMRzY18vb5NF31oQWR9/kMzZR4ZyDNltYo6xrD3NmdoGg4aKqy4sF6Z2cdj29pYni2zKfu615ym43NEcazcSqWe01iUWu8fwjpGo9ubmIgVeSuXm8m+A8HRxlIlbiju46HN3o+5tOTeb56cJRTkwUaIjrrGkNsa4+zoSmyKCD76KZG9g7M0tMQrrkntrTGmMxVMByvH8ZHLtP6saMuyK6eOmZL1qJip/cKewfS/Pfvn0JTFf7DM1tIRnTGMpUFumEAd3bXka/YBHVlUcOYx7Y0c3gkw+aW2AK3XWdy3vVZV09fY5ijY1m2tsVpjgYwbJd40MfuvnocKclXbO5ed2ObT62GIcjPGQEAKeVrQoib7h6aKZokQl6rx+mqBW5LBC/bz3Q0U67OnCyeve3qe5/+7ENLd1OaQ1MVHrupwbE13ovc1pmozQZN263JWJyezNcMwdnpAvmKTbZs0RIPsLklxtPbltap76gLLco40TWFJ7e2rFjCRQivV/h7mb0Ds1iOxHIcXj+TYlNzjE3NsdoMfY6wX+ODO5a+ln2Niw0tLL4+8ZCPDfPSU39kXq+BR25ScsdqGIK3hRB/BHwRT3voJ4B/FELcASCl3L8Kx1jE949Ncj5V5L6++iXdNS2xABuaI6TyBo4r+fwrZ9nVk7zs7HtzS4yXT02x+xoawNiOyzePjHsyvP0tV132fbN5P7pfVoOXTkxxZqrAvevqV6UZ0nLomoKuKRwYmuWZeQP9zs4EY5kKroSe+jAddUH+/IfnCfs1fmRnGwGfiutKvn10gvFsmUc3N93U1M2Vcmoyz8snp+lMBnlqa8uq9iW4p7eObx4ZR9cEezY3cXQ8x2SusshtdWI8x++/eJqQrvLrH+hf1HP4vcpqGILbql8vrhvYjWcY9qzCMRZQNGyOVCv29g/NLmkIVEXwoR1tOK7kD148DXjLv8sZgkTIxzPbWq8p/34yb3BuugjAgeHZ96whWOPKqVgOB6vKn3sH09fVEMzJHG9tizM7r+1hazzIZx+4kKDw4vFJMiWLTMlicKbEppYoqaJRkyw4MJR5TxiC/YNe97Pj43nu6a1fVRnqounWlDyzFZsPLNPp67vHJkgXTdJFr0/Bh5boWf5e5JolJqSUj17i/6obAYCQrtJdHVw3XUa9U1VELdCzqeXyQdTNLXPbXj4e8OrpaX7ty4d5bu8w4A0C3zoyzjvn08SDnuzEagaB17j18WtKLc/+ev/tdU2hryrlvPkS93ZLPMCZqTzj2XJN4K0upNMcC5CvWIzMltg3OLvoffuHZnlu3wiDM8Xr8wGukE0tUYSA9kSQ2CrLULfE/ZybLnhy8/HlUzfvW1dfk3m4vXthwPbF45P82pcP89WDo6t6bjeC1cgaagZ+B2iThsU3KwAAIABJREFUUj4jhOgH7pNS/uk1n93yx+Sjd3RgO+6Cisjl+OCOVp5ymle07WNbmnl4Y+OKtv3CG4NkyhaDM0We3tbKqal8TUDqgQ0N3NFVt1bZ+z5DCMGzt7Wv+N68Vn5kZ9tljzWVM+hrjCDEhUwVn6rwiXu6+Is3BkgXTF45Nc2W1mgtYFyxnJoYYtGw+endN6Yg8lLc3lXH9vb4dbmuUzmjpmg8mTNoXKYe4u7eev70p+vQFBa1pv3Cm4OUTIehmRIf3Na6rOjcrchquIb+F16W0K9Xfz4FfAm4boZgjiu5Ia7Htl31ITIjWZpjAUK6QlPUk5eQEpqjt768w1oM4PpxI4zASo/VEg+gVKUTLi5ebI8HSRdM6iP6gh66uqrQENFJVavjbxWu13Vtrl4jVQiaLiPepi8zwHfVhzkxnqMtEXhPGQFYHUPQIKX8OyHEvweQUtpCiEuWCAoh7sETqXOAvVLKX1mF87jh/NpTmzk1naen3mtk31EX4mfu70FKbmgHpTXWuBRbWmO0xALomkL4Iv2fx7Y0saMzTiKoL5i4KIrgJ+7qIlM2aVzFyvdblb7GCJ/Z3YuqiktqJF2KX//AFs5M51m3hIjlrc5qmK2iEKKearcyIcS9wPL6zh6DwB4p5YNAkxBi+yqcx7KkiyYHhmbJV6xV3a+mKfS3xhcIxsUCvjUjsMZN4dx0gaOjWdwlVODqql32LkYIQVM0sOQsV9cUmqKBVc3OuVWRUjKaKTORXbp4biXo1fEgcBN7J1wtq3HG/xr4GtAnhPgh0Aj82KXeIKWcmPejjbcyuC5IKfn7vcOUTIdj4zl+6p6lC7zWeH9xrW6xW020bjhd4qsHvTauRcPmnmtIf34/cnA4wz9WYyLP3iZuake0m8FqrAj6gGfw0kW/C5xmhQZGCLEDz7V0bInXPieE2CuE2Ds9PX3VJyclOFWFJmcpvdw11vgnwHwFzLX7/Mp5v1+/FTWvF0J8FPhdPHlpUf0vpZQxIcRhKeWOqrTE7wD/FfgPUsp7LrPPJPAPwMcvWiEsoqGhQfb09Kzk86yBp6VkuZJYQFtST2lgYIDVvJ5ly6FkOAR8i33Q/9RZ7Wv5fmftel4eKT0hO1dKr9vhJZJS9u3bJ6WUl53wr/Sp/X+BD0spjy/x2pxb54PA/5RSflUI8ZuX2pkQQgO+APzq5YwAQE9PD3v37l3hqb6/Gc2U+eJbg1iOS39bfEmZjF27dq3q9fyTV8+Rr9gA/Ks96xcYH8eVWI573XtMXwopJWXr+vS9Xe1r+X7n/X49bcddtid7xXLQFMGZ6QLfPuINm7d1Jnh08/KyFEKIFSk7rPTJmFzGCACMViUmHgd+Vwjh5/Iupx8H7qpuD/DvpZRvrPBc1liGbMmiUDb5/vEpCoZNxH9jgtbrGsMcGs7SXR9aYATKpsMX3x4iV7F4fEvzogrwVMEg4FOvOktjpXzlwCiDMyV2dsbZs3lN32mNWxOvHagXz/zgjha668PMFEwaIjonJ/O8cGySaMDHB7e3EtJVDNutFdZeK5d8AqsuIYC9Qogv4blyavqoUsrngY8DTwP/RUqZEUK0Ar96qf1KKb+Ip020xioxnC7x/P5RxjJldE3Q4g8wXbi0lO1qsWdzM/f01hPSF85iUgWDbNnL1DqfKi4wBEdHs7xwbBJdU/jE3V2rKhcwH8txa1Lg56aL7Nl8XQ7zvuuItsbqM5kzKBjeyvp8yqv2HstU6GnwJlhSVt2+jstnH+jFWWblcDVcbir24Xnfl4An5/0sgeellCXg+dovpRwHxlfl7NZYMdMFA1dKmqI6ZSuMK6m5hUqmzfHxHG2J4KK2eavFUrGBtkSQTS1RZormIvGuyapuvWm7pEvmdTMEPlVhc0uUvYOz7H6PSiSv8f6guz5EJKCRLhpsbYvy3L4c4BmIZ29r89qChnXaEsFqb+XVO/YlDYGU8jMAQoj7pZQ/nP+aEOL+1TuNNVbKuekCg+kSOzsSJOcNnlvbYtVmFpKf37NhwUzhu+9OMJAq4VMF//zBdTfsXFVFLBDvmsxVODaWY0NzhLt6k5RMh0hAo/c6FuC4rmRgpkTEr3FmurCWVrnGTWc8W+bEeJ5NLdEFPdOn8waFio2uqpxPlXhyazPHx3Nsb0/QGg/WeqVfD1bqnP1D4I4V/G6N60jFcvjG4XEcVzKRrfCTd19oh+fXVJ7etrR+/FximJQXvr8ZfP3QGPmKzbHxHD/3SB8fvkHKjdKrdbypn32NNeb42sExSqbDyck8/+LhC31L5t+eUnpCgpcSE1xNLhcjuA+vPqBRCPGv570UA25eGsj7DNtx+e67k8yWTCzHRRGCTMnkr94cZGNTZMEs13UlLxyfJFUw2LO5ida4p93+7liO9rogQf3G/dlcV/K9Y5OkiyZ7NjcR0jWvu5NPJV00eeHYJJGAxlNbW5ZMc70SJrIVfnBiimRY58n+5lqHKEUR/NgdHQxU5ZfXWONmE9JVSqZDSFeZyld48fgU8aCPJ/ub+fDOVnIVmx1LSOvPYdou33l3grJp82R/ywK36limzEsnp2iM+Hn8ChpfXW5FoAOR6nbzn6Icl6kefj9jOS5fPThGqmDwZH/zZasUXVdiLpNiaTkuJ8dzPL9/BMP2NNN3r6/nlVPTpPIGqbzB7V11NYmA8ar7BeDt82meva2dsF/j7t4b2/oOvFTW4+PeubwzkOYjt7czmC7SURfijbMzjMyWUYQn/b1+Xtu/106n2DuYZld3ku76EN86Mk4i5ONHb29fIIw2n3cG0kzmKkzmKmxti9GZvJBN0RQL0BS7dYTT1nh/05YIcna6yLb2GPsHM0xkK0xkK2xpjS14Dub3o57PuVSB05N5pPQqouenj3790BivnJom7NfY0rryic/lYgQvAy8LIf6XlHJwxXt9nzOVNxhOe5kqR0azrGuMIKVkumAQD/pqg1nBsCmbNt87NslUzuChjY0LgqojsyX+4cAoU3mjVkAi8JaMo7NlDo9kaa8L4lMvFJTUh3ViQR+5slWT1b0eVCyHgmHTcAlBsoaIn2hAo2DY9DaECepqbamrKPDamRQRv8Y/u7tzwfv+7p0hr7nPVIFntrdSMh1KpsNYprLsZ+qpD3N2ukDEr13ynNZY40YxWzSXFPp7dyyHpgreHc3x1LYWTkzkCOsajRepnn7zyDinJwtsa4/zRH8zMwWDkK4R0lWOjmYxLHfRBK9iOdiurH1dKSuNEfwPIcTFe80Ce4E/klJWVnzE9wGNET8t8QAzBYP+Vm/g+8eT0xwczpAI+fjUvd2kSyZ/+OJpMmWLRNBHMuznxHiOeNBHR12QgE9lcKaE5Ug0RSAE+BSFjqQXXHpsSzN39yYJ69oCUbCAT+XT93Vj2u51q/Itmw5/9eYARcNhd1/9sgHYoK7y07t7ljyXN87MMJkrM6MonJ7M05a4MIMXQlCxHIQQbGyO8IMTU7TGA5eUQ97eEWddYxhdU67ZzbTGGtfKu2NZvvfu0unR+YrF0ZEsW9vjbGmN1epv5t+3UkpOjOfJli2Oj2dJhnVeOTVNUFe5uzdJb0MY03YXyWE8ta2F6bxBT/3iXtSXYqUjxTk8Mbm53P+fACaBjcAfA59a8RH/CWI7LsfGc9SFdDqTIa9zVGMYTYBpe0VVmaLXSjBTsihbDq+emuZ7707iSskdXXX0NUaYKZh8/dAYDVE/n7q3m61tMQZnSuiawt09yaoW+4VBPxpYumDs4ptqtclVLIqGV1A+katQMGxOTebpToYW6d3vH5xlOF3iAztasV3JmakCvfVhJF6AW1UEhi0ZnCmSLVv0t8ZoivmZLZk0xfy8cjrFULrIaKbMaKaMIgSFik1/W2xRv4f3m7zFGjef4XSJdNGkvy224JmbyF5Ij54pGgsMQdCn0pkMEvB52y9V8S6EIF00ODaW487uOkZny0zkKgR9KpbtMpqpYNoOQsCZyTzvDM7yyMZGJnMG9REdw/FWBStlpU/O7VLKh+b9/HUhxCtSyoeEEO+u+Gj/RHn1TIqDQxmEgJ+6p5tCxeL3XjiN47qMfb9MOKBRH9HZ2hZne3ucaMBHvmJjOS4SUFVP7fDg8CxIanLZiZDOJ+7pwnUl/3hqilzZ5u6eG+/rv5jmWIC7epJM5Svc11fP1w6OMZmrENRVPvfgulqg9sxknt/7/imkhJFMmWRYZ6Zgss8/y4/f2cHB4VmSIZ1tbTH+x0tnqVgOH9jRSjLs5/YujYBPJVUwAYHjSk6O5zg5WQAgb1js7mu4iVdhjfc76aLJ8/tHcaVkpmgsqFrf1ZOsVvdr9DYsjBGOZkocHM6y/RIBYSkl51NFypbD2ekCOzoTZEomhq4hxIWWuhLJb3/rOGXT4c1zMzzR3wwITNulfB0MQaMQoktKOQQghOgC5p5Cc/m3vT+Y03+3Hcmrp6fJV2wc6SKlJG/YSAH5is1dPfWcT5UomTa7++r5wYkpypaDTxXsG5zFclwsx+WunoXaIYoibjlphAc2XBiE56u7zl+ozvdRWo6sLWMd6WU2aYpCrmLz4vFJ9g/NYrsuzXE/n7i7m+PjOba0xvBrCpoCzbEg29rjvHB8CtN22dZ2/ZrCr7HGSnClrKUmO+7C1+JB35I6XwCHhnNULIcjI5du21IwbLJli1jAR1jXavG1rmSIQ/4M2YrN1pZYTTnVcSUPbWwkoKk0xfw0LdNucylWagj+DfCaEOIsnm+iF/g5IUQY+IsVH+2fKA9saCAW9DGRLXNmymv0/cSWZnyqgjg6zvnpIp11nm/fpwlURbCxJcavPbOZbMli39AstiMZz5bpSoY5NJJZMNDe6nx4RyvHx/OsawyTr1i8cGySoK7yZH8Ln3uoj+F0iY/e0Y7lSE5O5OlrCvPNw17xuRCeS0dXFRThtUicLZlMFwxaSxbbO+L8yhObAK+YLqyraIpgoclZ41pZk8i4choifj68s42ZgsmOjpVPTHoaQozOlmlLBEkVDF48Pkk86OOJ/pYF7s6o34ftSCIBjQc3emNMMqyTLpkcGMpgOi57B2f5d09t5q1zMzze30ws4OPx/iufNK7IEEgpvyWE2ABsxjMEJ+YFiP/7Uu8RQvQAbwHHAVNK+eS819rw1EcDwH+SUn7/is/8JmCaDmXHIRbwYTkSXVMwbRe/pnJXT5LBmSJnpz1DsGdzEy3xIN84MkZzLIAUkCmZbG2LoasKRcPm4HAGw3J5or8Z14VDIxlGZ8sLKobfCyRCOvdV5RteOjnFuakCqiJY3xThkY0NVGy35ged225He4yv7B8hGdbZ1VvHiYk8hYrNA+sbeeXUNBXLYbZosn3eAxYP+miOBbBdSfNaOugatwB9jRH6Gi/8bNpuLZXbclxUIWqu0jn+749s54dnprl/fSN7B2YZnCmhCuhtCHNgKEOuYvGhHW081t/E2akCW9vj+DW1liH00olJjo/ncFzJmekCH9jRxsbm6LK9lFfClUTX7gR6qu/ZIYRASvmXl3nPC1LKTy7x+/8D+I/AYeAbwC1tCHIVi5F0iV/50kGKhs29ffW0J0KEdIVUwWRLa4yP3tFBd32YT97bjWE7fOfoBNM5k2RIJytsypbNiYk8o5kyT/a3MJIpMzpbxpWSyZzBwxsbGZwpcmoif93VOC+FYTsUDeeyxihbMkkVTfouqpE4PZHnr98ewqcq7Oqp4w9ePM1s0eLTu7t5ZtsFuYnnD4yRKpjMliz2DWRIhHQkUBf2MVuyODqaXaRWWh/x8+n7eihbDi23UEP1NdYA+P6xSd46P8O29jg7OhJ849AYQV3ln93dhaZ4mXCJkM6h4QyDM2VCeoaJnJciHvKrbG2P8/VDYxi2S9Cn8sl7u5nKGYvudSHAciWO46WTf+3QGGenCtzeleCRTctLUl+KlXYS+yu8TmQHudB/QAKXMwSPCiFexROn+715v98B/JKUUgoh8kKIqJQyf4Xnfl1xXclQukS+YvGDE9McHpklW7YQAg4MZWhPhPj20Qn8msqZqQLb22M0RAI0RPycmSrw7SPjFAyHJzY38fG7uvjLN85zeDSHIgRSQFjXODaew3JcHtroTSlOTuZxpeT05M25FIbt8IU3h8iVLe5Zl1w2GJsumPzylw6QLVt87I52Pr27t/basYkcAZ+CQPDi8SkmsxVsV/LWuZkFhkARnoHVVIWK5flCbcfLKooHNG7rTBBeogo6HvIRZ60n9Bq3Hs8fGOHcdIHTkwWCPhXbleQrNmcm87x5Pk3ZdHhsSxOHRzKMZsrYjst4towEKpbL8bEsw7MlTNtlIlvBr6kLCiPniAV99NSHsBxJY9TP2SkvgeL0ZOH6GgJgF9AvV9LO7ALjeOmlBvBVIcSLUsrD1dfUefvKAnXAgtFPCPE54HMAXV1d3GhePj3NwaEMk7kKybBOX2OUqbyB7UoeWN9AvmLRFg8yVm12/dWD4wR8Crv76hlIFTmfKmE7Lscn83TWh/ixXV00xaboaYiQCPoYy5TZ2ZFASkmqYHB4JEOxYnMuVWRj882RQshXbHJV2eixzPKlIaem8pxLFZFS8vKp1AJDsKu7jh+eTqFpgie2NvHm+RmyZYsPxBfqIMUCPiK6iu5TiQV9DKdnKJoOd/Um2d6R4NXT02zvWBOIWy2utUfzGkszmikzWzTZ3BLl5ESeVN4gX7HZ0RFnPFsh4tcI+zXKpjd/HsuUef3sDGem8qxriPD09hYOj2QJ6iqt8aCXgipBXMLL09/qNZwqmTZ7tjRzaqLAiYkcu64ho3ClhuAo0MIVyEtLKQ2qvQuEEN8AtuG5gmBhs/oYkFni/Z8HPg+wa9euGx4ZnBsQk2Gd9kSQZFjn3z7lBS3/5LVzGJZnzRsifsqmw8HhNEIozBRNyqaNrgl0TSMZ8vLqN7VEF2jdbGiK8OqpaWZLFifGcpydKjJdMLijqw4B/PBMiuaYf0HJ+fWmIeLn7t4kY5ky969ffhDuqQ/SVRckW7a5s2ehvHR3fZhP3OOpJE7lTHJlG8eFg8NZpvMGJyZyrG+KoCqCkN9rs2e7Xpwh4PNuiyOjWWZLJkdHs9zXV8/+oVkSQZ3+thsjwLXGGvNJF03eHcvS2xBeUKSVLpr8528dJ1My+fhdncSDPoqGQyygEfP72NQSJeLX6GuMsLMzzmzR4u7eev7N3x3CclxOTRX4811dNEYCJEI+uupD/PDsDIbtsvESz33Ap/Ljuy5U4zdFA9ecXLJSQ9AAHBNCvM3CxjQ/stwbLnL33I+nVjrH4aqg3WEgJqXMXdlpX38e3thIwKfSEguwszNR+33FcnAczy4FfCobm8O8cmqa8WwZIaA9ESQa8NGRCCIR3FZ971S+wt6BWZqiftJFk2y1sEwImC6YtCWC7OhI0JYIMJap8Pb5NELAz+z2kwjduODx/esvf0O1xEP86tObmcob3Nu70GDc1ZPEtF2CuorjuFRsB8eVlE2Hv3h9gHPTBdoSQXZ2xqkP695MKOavpc5K4NDwLAXDIVe2eP1sikPDXppdIuRbINu7xho3gm8e9uJZh0eyfPrebt48nyboU0G4vHFuBteV/MOBMdY1hJktmXQnw7wzmGb/kDe/jQV8C9K/60I+MiWLWNBHXVjnY3d2AF7twCfv7SZfsdl9iYnY9WClhuA3r2LfDwohfgvPcLwmpXxLCPGHUspfwOuB/JdAEPiNq9j3ZZFS8tLJKVJ5k0c2NV5WdOy10ylGMyXuX99AR12IsuWQKXklEucOjOBTFZ7obybgU/nR29sZTpdoifn55pEJypaDqgikK7EdF1UR3LOuHlVRKFk2f/v2EJO5Cq70egO0JYKUTW+ATIZ1HtnUSF1YZ2dHgrBf43vvTpAtW6hCLKqevd7MGbUHNjTSvsygK6UkU7Zqxmy+zz7gU3msqnp4dDRDWNeo2A6tiQAHhtKMZStM5Cp0Jb0OanO+1Pa6IFJCIuijLRHg6GietuYwuurFCYTw/n/n6AQFw+axzU3XrZnNGmvMZy4bR1MEr55J8Q8HRtFUwcMbGlCFAAG6Jnjj3AwT2Qq5ss2P3dnJsfEcfk1BCpcXjnnqwXs2N/H//dhOvnF4jGd2tC44jhDipvXLWGn66MtCiG5gg5Ty+0KIEJeRoZZSfgv41kW/+4Xq1xFgz9Wd8soYz1ZqM8k3z6f5kUto36eLJu8MpAH46zeHapkruqrw1rk0ybBO2K/RnQyzvSNOZzJEZzLE/3p9AMtxAUl/awwhBMmwjiYERdNBES6zRZN40MdYtkxHXYiApnB0NIuuejIUluNwV09ygaF6dHMTbYkgTVH/sjIS14NUwWDf4CwAb5ydYVNzlDfOpVjfFFkwo5nMGRysznbePDdDd32IdwbSbGqJ8fDGC7l0mqrQmghgWC71YT8zBZOAZhL2a7x1bpZ00URRBENpr3HMZN6gqz5EIuRncwskQn5299WTDOvEQ96ye07NdN/g7FXlS6+xxpXSXR/ixHiejc0Rzk4VOD6eRRWCxzc3EQv6yJZNdnbW8cKxSVzppYlXTJumqB9dVRhMlTg66o1F75xP88z2Vu5bwcr7RrKixFMhxM8CzwF/VP1VO17/4luWupBeS8PsqLu0OyHi10iEvAF3pmhQNBxmCiYVy6Ep5sdxJKbt0Bz3/P224w3wc6mT/a1x/tOH+vnsAz0cn8jz1kCakumVl5+dLvD2QJrWWICP3dHBQxsb2dDkBYxLpoNPVTk+sTBLyKcqbGuP33Dp5GhAIx70rkNHXZC9g2mKhsOh4ewC3ZJEyEc0cOHa7h2YpWg47K9WR+crFhXLobMuxMMbm7irJ8nj/c0oAlIFEyklnfWeJlPIp6AqgnzFJuRTeXc0S19jhKZYgL7GCIoi6G+L0Z4I0hjxE/CpCEFNfG+NNa43R0ay+DSFExN5MiWTmaLJTMlkKF0iFtC8pJFMmZZYAFXxno/1rVEao34aY37WN0Zr/byXygK6FVipa+jngbvxCsSQUp4WQlxdntINIqirfHp3NxXTJR669Kxa1xR+6p5uSqbNvsFZDo9k6Up6f1zTdjk1WUDXFB7d3IRhubx8aprpvMGu7gQf39VBazxAQNeYKhhsb4/juBLb9XJ8u+tDRAM+okEvGCTxNETqI36klAgh6Gu8fnLRV4Jf83KXS6bt5fVLb8a/rjGMf16xiqdw2kPZdIiHfFQsl3cG0qxvijCQKvKld4YJ+FQ++0AvP3l3J9MFk/7WGIPpEqoiGMtW2LO5EUUIVFVhY3OUouGQq9isb4qyriFMtmzVjNIc8ZCPz9zfg+m4xG7gSmmN9wcT2QqaKhbJmBcMh0PDGdY1hpnOGZi2i8CTmGhNBJkpmNzf18COjhg/OD7FPX31bG6J0ZYIoqsKAZ+nwmvY7qJ7+lZhpYbAkFKac3LHQggNbv0af7+mLtvI5GJ0TUHXdPpbY8wWLfYPpTk7XWRopoQrJYoi+G/fO0lXfRgpJW2JEAMzJZpiQYqmw7lUiajfC2ZK4Ed2tBEJaLx+NsXx8Rx3dnupXd31Yf7lI+uZc/1LyaLKw5tJpmQylTcI+71c/qBPpbs+tEDqGjx3WqpgEPZHuaM7QcSv0tMQ5qsHxzgymkUAt3XG/3/23js8jvO+9/28M9srgF30XtibKBaRFNVtybbkbilusZ3EsZ2Tcm5ycnIS597cHJ886fG5afc6sZ08josclzi25CbZsi1ZnZ1iJ0EUomN73ynv/WOWS4AkCskFCYr7eR48AHZnZl/MDOb3lt/v++XVwRipnMbDG1tor/WQKxq0Bl0cHUliUwSmKTk7neXDu7owJeU1kbnm/1129bIGPlWqXAvHxhJ8+eUh7IrCR+/umbU+5rIrdIU8BFx2BqbSGKZVB4OEf3j/7eVq4n/62RlWNFrPD9OUszory/2+XWwg+JkQ4pOAWwjxRuC/AE8sXbOWFs0w2T8Ux+tUWXeReNmffPdoqeK1iM9pI+SzY5igmyYTqQKJnM761iDNQReRTJEfHZtgPJGnMeBEVRQ+uKNjlhTzXSvquWtF/azPmLkALJZPDCBd0PnanmE0Q3IuliNd0BmOZnE7VD66u7skgw2JnMZnfnaGVF7jgdWNJPMaY4k83oEo9T4HyZyGw66Q1wwODsWRwAtnpvntN67k4HCcNc0Bjo4mODaRxmVTWd3kRwiBuozORZVbi72DcU6VlG2PjlpToZPJAre115DM6ZycSNNT7yVd1BFYHbhUQefURIpIpsht7TXcs6qeA0PW/b2cOneLYbGB4PeBXwEOAx/HWgT+3FI1aql5uT9aXhz2OW10hi5MzcSzGtFMEd00aQq68Dhs3L0izEQyzzf3nkM3JU1BF+/d3sEXXxpkOlWgoBtIrKGiZiz7gdKcGIYsK4YWDZOibkkq6oZJrmiwZ3Aah02hwe/k+HgSKWH/cKw876kZkpFEDsOUFDQTQ0ra6qxRwIoGH2uaA6wpGfX0NfgI+Zz4XLaql3CVG0532EtDwIkqBH6nnc8+20+6oDMSyzIcszxBJlMFehu8nJ3KIhRBQ8DJkyXxxGRO48F1TdfNbL7SLDZryMQyoPns0jbn+mCb0fW0XWTgEvY7GU/mCXkcrGjwY1ME965uIFswOBvJUtAMtpbsJB/e0MyR0QRv29TMRKpAnddxU2vgBD12HtnYwkQyz6b2GjTd5Mhoks6Qh1cGonxtzzCqIvjgHZ2savSTzOtsaqthZ2+Io2NJeup9/PjYRHlapzno5qN3dRNNF7m9c3bhmddp48F1TZdrRpUq1511LQG6Q15cDpVaj42BSAYp4fh4is3tNRweSdBc4+Zjd3VT4z5FjdvOL2zr5IsvDmJKedO74s0bCIQQh5lnLUBKubHiLVoiTFOWh2vbu+rwu2z4nLZLcuXzmkHY50QAmYJOT70Xr13F77Txa/f0kshp5V5tnddRnvbpvY4VwJVg5vmYSV+Dj76ZsZZEAAAgAElEQVSGkpCc84LvwLMnp4hnrWrrgm7y8Xt6iaSLrG72Y1cV7uwNoyiC92/roM7joMZjZ/tFxWZ7B2PsH4qxtiVQNZWpsqw4MmqlJeeLBom8wW3tNSSyGrv6QtzRHWLrZJr2Og+GlPTU+3DZVTwOlfdsbStLTNzMLDQieOS6tGKJ+cFrYxwfT7G1s47dK6wH1sVrA+d5w5pGXhtJkC0aeJ02zkxm+PSPTlLrcfDolvZlm/51JWSLOn/3zCk6Qx7evql1UfOZO3pD9E9nsKuCda0BGvyucpXvC6eneWUgyspGP2/Z0Mwjc9RsvHI2Sl4zeOVslJ09oUsWoKssX17vfgXJnMa3D45iUwT3rWrg1+7tI5YplhMlzqsL/OTEJJF0qdB0KlNObb7ZmXc8I6UcvPgL2DDj52VNKq8xFM1y+FyCRFbjtZFLJI0u4V23t/GbD6zgA3d0IgSYSBRh5bkPRjPXodVLT04zkRIGprNkivqc2xmmZDiaJa8Z9Nb7eP/2dj64o/MS56Mjo9Z6wYnxVKnA7vKsarJGGisa/NUgUGVZMRjJ4nGouGwKA5EsQbedrrD3kvu0r96HXRXWbMIC9Uk3E1cjfP8pLA+BZU0qr/HFlwYpaJa4U7aol4ug5kNVrDzisM/JutYAiWyRJw6NYVcVei7S3r9Z8ThU3A6VrpB3Xu+DH7w2zsmJVGmap46njkygCMFj29poDl74J7i9s9aqLG70zztXev/qRnb31V+TgUaVKkuB06YwnsijCIHfNXeaZ3udh0/c04tyGcOZm5mrCQQ3xV+fKRgUNBNTShyqwtrOukUFgpnYVYWw38Uv3dm98MY3EW67yifu6V1wu0jG0hdM5DSmktbPppTEMtqsQLCls5YtFy0Gz0U1CFRZjujSLMu/Zxcwfb84weT1wNUEgo9XvBVLQFPQxZ19YabTlvvXWCJPZ52Hp46M0xHy3LRpXteTB9Y0sm8wRm+9j556L0XDKpxZ1eTn0Lk4k8kC27rrlm21ZJUqi+XRLe3EMhouu8qb1jXfcvf3QllD75rj9TYAKeV/LEWjKsV5j8/z/PurQ4zG8xwdS9Je68F7Ay0hbwZaa9yzFsLOp3tOpQr8+NgkADnN4K3zCPpVqXIzUONx8HtvWg1QMpS37u+sZswrWPl6YaEn4VvneU8CyzoQXIyl5JnHbVdv+rzfG4nLruCwKRR184qn26pUWe647Gr5/g7cIvf3vH+llPKXrvbAQog7gP+N5Ua2R0r52zPe+2PgnUAM+I6U8tNX+zlXwoNrG1nVZKkCVueqrx6/y877t3cQyxbpCi0Pwbzlzus9/fL1hM9p4wN3dBDN3Dr396LDnRDiYWAdUM4dlFJ+ap5dBoH7pZR5IcSXhRAbpJSHZ7z/36SUP7riFl8DNlUpS0dXuTZqvY6qMUyV1y01Hsd1dQa80SwqEAghPgN4gPuwNIbeA7wy3z5SyvEZv+rM9ikG+AshRAz4XSnlgUW3uEqVKsuO6ojn5max8yO7pJQfAmJSyv8J7ATaF9gHACHERiAspTw64+W/k1JuAX6N2V7GM/f7mBBijxBiz9TU1CKbWaVKlSpVrpTFBoJc6XtWCNECaMCCyfVCiDrgH7CUS8tIKaOl76fm2ldK+c9Syq1Syq319fVzbValSpUqVa6Rxa4RPCmEqAH+CtiHlTE0rwx1ybzmS8B/v2iaCCFEQEqZFEKEr6ANVapUqVJlCVjsQ/gvpZQF4JtCiCexFozzC+zzKLANay0A4A+A95cM7P9KCLEea0Ty+1fV8ipVqpRZaI6+SpX5WGwgeBG4HaAUEApCiH3nX7scUsrHgccvcxyklEtWnRzLFPmP/SNIKXnn5tZZbmGHzsV59uQUHSEvb93YXBU+u8nIFQ2+se8c6bzOIxubF60E+9SRcU6Mp9jeXccdPaGFd6iyLJBS8t3DYwxMZ7izL8zmjgsyJjP/z991ext11Qy2a2LeNQIhRJMQYguWReVmIcTtpa97sbKIlh3902mSOY1UXuf0ZHrWe4fOxYllNU6MJ0nmZ6tuxrNFXhtJYJqXqmdGM0USOW1J211lbqZSBcstKp5lNJYlmilwfDy1qH01w+TQuQTxnMaBYUt9djKZJzuP6mqV5UGmaHBsLEksq3H4XAIpJRPJPHnN4MxUmslknqlUgdOTafKawXgij5Q3r0PgjWShEcFDwEeANmBm0VcS+OQStemqkFJyZipDjdtOIlvElLCiJCLVP5Xm2ZNTRDMF9gxEaa/14LZfiIGpvMbvfv0gqbzO3Svr+fX7+srvnZ5M8+ShURQheHTrbNXNKlePlJKz0xl8ThsNAReTqTypvE5P2EteMxmOZWmv9XB8PMlPT0zhsCm8cU0D+4bipPIad3TVkinojMRzdNR55jQGtymCiVSek+MpdveFefFMhJf6I3gcKr+4sxOPo7pEtVxxqoIDQzFOTqR4bEsHPzs5xf6hOH6XjS2dtRwYjiMlPLiukS+/PEQyp3Fbew27V4Q5O52hMeC6JXSCKsFClcVfAL4ghHi3lPKb16lNV0Qqr3FiPMV4Ms+piTRD0SyDkQx2VeEfnzmFTYUfHpkkXdDRDRO3XSWvG3zl5UE6Qj7aat30T6YZiWXJaSanJmb3NCcSeSaSljxtJF2sBoIKsXcwxnOnplGE4E3rG/nUE0eJZov8zhtWMp4qMJ0qEPY7qS9N7RV1k1fORjkxnkQ3JU8dn+D4RJrBSJY1zQF+effsJLZ/e+Es0UyRX76zm+FoFs0w6Z/OsLLkJJUtGqTy+qxAMJnMMxTNsro5MK8893giz0g8WxUuXCL+5Ikj5HWTD2xv5YUzUSTwry/001zjZjSew++y4bYJRuNZAI6OxEnmrBHeRDLPD4+Mc2oijduh8st3dldVBBbBYrtDzwshPg+0SCnfLIRYC+yUUn5+Cdt2WQ4Mx0nmNLZ31+Gyq3z2uX5e7o9iU2FLRx2pXJGJRB7dlBwZTWBXBMm8jqoIioYkldeZShf5wosDKEJhc0cNNW4H8ZyOYZqk8zo/OT7JyiY/rTVuVAUSWQ1VEVTvp2tjPJHn2FiSvgYf56JZnj46jtdpQ9MNXh2MgZR8+ukT3Le6kXOxHJph8sY1jRw8F6fR72QylSdR+oc/MBDn5HiaqVSB4ViW925v59WBGCGvg1MTKf7p2X4AIpkiBc2koJvkNYM7+yyLzHq/k8bABYMdzTD5+t5zFHWT/qkMb9rQxN7BGM1B16wHfl4z+OY+a7uB6ex1PHs3N4stOBtP5vnyK0MAnBhLlH1ys5pkNJ7juVNTtNS4yRY0plKWU9iR0TSPbmtjOJrjjp46nj1p1R0VNBPdNHEsOkv+1mWxgeBfS19/WPr9JPDvwHUNBANTaf7y+8fIaSZ3rwjT0+DjB6+NkynoIGFVg9WTU1VBQTfQDFmeMzx/QwlhOW+l8zqi5DwWdNlx2RUUoTIcy/LVV4doq/Xwfz2yFoddLU8xqcqtdUMNR7PsG7JkqNe3Xt7a80p48tAoqbzO0bEkr52LMxTNogjBigYfNgFSCIJuOwPTGY6OJdENkyOjCRyqQixrrfsowrqWqmK1L10wMEzJsyenOTZm+c7Wei5MBwgBW7tqGU/mWdscQABCCJR5EgUkkp8cn6R/KsNBAU0B1yy5gYvvqSqVQzdMDNM6s5FcYdZ7TxwaIZIuEs9prGy0nMIAGgJOtnTWsaXT2u6Na5vYPxSjM+SpTv0tksWepbCU8mtCiD8AkFLqQoj53RuWgMOjCQajWUwJTx2d4EEh8NhVVEUgJXidKtMZQZ3HQb3PiWGagOTsdB7dNHGq4HOpOFVBd72fgMvOY9s6kFISzxaJZjXGEjniWQ3NsGwpb2urwaYIBHByIs2ewRhvWNNIvd85b1tfDzxzfJJopsjZ6Qx9Db455+EXi8dhI5XXcdtVdCkRWA/T29praAq66J/K8H8+soZ3/MPzpAo6h87F+eBO679bEYIH1zbxzIkpCprBOza38v/97CyKAMO0XNfAcph7x+ZWTAnRbJFfv7ePVEFjYDrLqiY/Pz1hPeDPTKZpqXGxbzBOUTd5aF0T79nSZk0NNfl58UwEsMyJZirVuuwq797SxrlYjrXNAf78ms7I4rlV0kPr/S56mwNopuRNa+v5mx+dKb+nGxKJxDRhQ4ufwYg1ItvdNzsTrM7r4IE1jde13Tc7iw0EGSFEiFInSAixA0gsWasuQjcln3uun1Reoynooqib9IQt8bgP7epCVcCuCE5MZFjV5Ocdm1tw2aye/HS6wP964ghT6QJdYS/vur2NNU1+dNMKHM1BN3nN4Ph4inRBp6POg25KVpVGAYoi2NhWw5mpNCdL6wf7h2Jlbf7XM/V+J9FMkRq3HUcFZLvfubmVwWiGtloPbTVO+qfS+F0O7lpRT/MM3wOfy07RMAm47OzsCdHgdxJw2WkIuPj7921mOl3k3pVh9g8nOTOVYkNrDbv7woS8DkJ+Syxs5pqB26GWfZbrfU76pzK4HSqTyQJnp62Af3gkwe4V4fJ00f2rG+gMeQn7HJf4VjQH3dW1oiXCpgjuXd2AZpjs6AkDViDw2gXv3NzKk4fHaPQ72dwRZjpjIJE0BKrX4lpZbCD4HeA7QI8Q4nmgHkt47rqQ16yFPRD8+n29NAXc9NT7iGaKHB9PcnA4QWfIw/vv6MDrtM1a6Kv3O3n75lZOjKfY1lXHm9c3X3J8l13lgzs6ieeKhLwOptPFS3r8DX4nXqdKtmjQeYtI075pXRO3tddQ53VUxJ/V7VDL8+1CUblvVSM2VZC5KJXzV+/q4eWzEXb0hBBC0NfgL7+3sa2m/PNfP7qJU5Mp1jT5OT6e4uljEwTddt63vWPO0cuuvjA99T78Lht5zeCVgSi6IWmvm/0wsamWE1uV60tBN5ESbIpCRjdY2+JjJJrnjWvq+d2HVvHQ+ibaa73U+Rw017iQUK0hqACLDQRHgW8BWSAF/CfWOsF1wWVT8ThUbKrCls5QOSWspcbN9w6PATAYyfLwRjtO26UPgEe3tJMp6vNmgrgdKm6Hu3zci/G77PzSnd1ohnnLzDsqirjsuagEq5v8nJpM4XfaaK2ZXZLyrttbeXBd47zXC8DnspWLjM5MpZES4lmNqVRh3mKzpqDV6/c6bfzK7m6k5JqnvapUBqdNIeC2oxsmnXVe7l/VSE4z6Qp5UBSFTe0XisqqMuiVY7FPtH/Dqh3409Lv7wO+iCUjseTYVMHH5zBb39ET4tWBKCsb/ZcNAmA90Cx3smvj4vniKldPe52H/3Jv32XfE+LKr9ftnbXEskXqvI4rCl5z3TNVbgyqIviVGdN6W7vqODudYXt3tSJ8KRGLqcQTQhyUUm5a6LWlIhwOy66uruvxURVBNyWRtJXx4LarBC5T1FLQTeJZK/3N57LhnWeUoRkm0Yy1rddhw3eN9nkDAwPcLOdzMlUgXaoCbw66cDsu/+BO5jVyRSt/IeRzYqvAVNZiuJnO5VKQLuhW1h7WFE1RN0nmdXJFA5ddwee0Xfb+n4tb/XxWmr1790op5YK918U+UfYLIXZIKV+Csg3l89fSwCuhq6uLPXv2XK+Pm5PJVJ5MwaAr5JlXpyiaKfKZn50mXzTZvSJ82YXls9MZvvTSIIZp8sjGFrZ21c15vLFEjq++MgzAtq46dq8IX9PfsXXr1ut2PiPpAvGcRk/YO+85m0oVSOU1ui/a7h+eOcVzp6YRAv7okbWE/U4yBYPu8Ox1mh8fm+DQuQRCwAd3dBL2XZ+srut5Lm8Epinpn84QuowjXTRd5EsvDZAuGLgdKu/d3s5wNMePj01wcDjO6mY/O3vDPHQFiRWv9/N5vSlpwi3IYgPBHcCHhBBDpd87gGNCiMNYmUQPAL8KdM08ppTylxfb4OXOVKrA4y8PY0rJ7hVhts3z4FYVgWlCQTfmnEqyq4JiqdZhoemm5qCbt9/WQiqvs67l5qlmTWQ1vvLyELop5w1gkXSBx18ZwjAlO3tD7JghDPfR3d00BFy0BF2E/c7yNbh7ZZgtnReuwd0r66nzOgh5ndctCNwK/OzkFAeG4zhsCh/e1TVr3eb/fuI1JhJ5XA6VP37rOpqDbhr9Ltx2lbtWhPE4bVd9v1Ydz64viw0Eb1rg/W8DzwE/4lJLytcF2aKOWZpGS+XnFqBLF3Qi6QJepw2v00a6oDGdLlDnmZ15kykY+F12TLNUw5ApEnDa6I9k6Ap5LymL77kCr+VE6Xjd18mfWUpJpJRmapsR1HKagV4qDkoXLj1nw5EsXqeNbNGgUNo2XZpWODQSZ2NrDW6Hjce2WmZ4A9MZCrpVQHaxaKBdVWapU1apDKmCdT1yms54IkuNx4nAWmhP5DSEEJimpDnoxjQl0WyRNc1+dFOSKxqLWoPJFHQMKQlUYB2vytWxqEAgpRyc730hhEdK+T8q06TlSWfIy90r60nmNXbMsXA1Es/xzb3nAFjfGkBVBMPRLF98cZBVTX7esuFC6mqtx040UyRbNHj+zDT7huIcGU2Uhdf+7N0br6qd0+k8v/eNQ2QKBm+/rZX339FxVce5En7w2jjHx1M0BV28b/uFz2sKurh/dQORTOGSxb4nD47ypZcHcdgUfv9Nq0nkNVI5naDHxq984VUGIxk6Q16+8qs7yvvUeOwkchrpgk5tVUzsuuBzqgxG0kxnNE5PpnGoKooCm9pq+Ojubp48NIY04V9fOEvY52QklqPe7yRXNEgX9AVHz5PJPF/bM4xhwttua7mOf1mVmVQqBeZJIcRbKnSsZcuWzlruW9Uw54LleCKPYUoMU1LjcXDPygZiWQ0pJSOxHKZ5YWF+Kl2gMeCiKehiMmktLJ+vlByKXr2GzXA0R6ZgIKXkxMTipJqvlZG45WQ6kcyjG7NlvDe113DvyoZLUkGPj6cwTUlBMzk4nCDkddIV9hJJa4zEsrOOe57pdJGwz0lXyMt0unhFbZx57qssnkROI+RzoQorNTeSKZDK6WSLBj31Pu5f3UBLrZvCDMHGwUimPGoevegazsQ0JRPJApohMaVkbJ5tqywt15R+IoRIYa0RCOCTQogClp+xAKSU8uaZ0K4A61oCjCVySAnrW4KoisBlU9g7GGdFo4+/e+YU7bUe3rm5lZWNfoajWfKayfauWmJZjQ/v7OLguTh3rbz6xeDVTT58ThsTqTw7uufuiVWSe1c1sG8wxsom/6ypoYJu8LU954hlirx5fVNZswlgV68lDhZ023loXSP7h+PEs5aY4Pu2d/CjY5O8YU3DrM/pDntZ3xokldfY2rX4aaDvHhrj1KRVUHhedK7K4tjVG6agmYT9DlQhSutZkjXNQY6NJtk/FKegGxR1E1URBNx23rqphXhWYyKZZ+dljIBMU/KfB0YYimbZ0VPHqiY/mmGyqb3m0gZUuS5cUyCQUlZLL2fgsqs8svHC8NYwJTnNZG1LgBPjKVY1+RmKZkkVdIJuO2+6TJXzB+m8pjZEszrrW4OsJ0jRuNRkZynoa/DR13DpesRk0pKTBmsEMDMQZIom961uKLW5OEsb5hP39vGJy9QYqIrgjWuvTENGM8yyNMixsWQ1EFwhjQEX791++enFv/vxKVx2FcOUBP1WRlFP2Der+vtyZIp6efR7ajLDL+64tnu+yrVTkRJZIcSPpZQPLPTarYaqCDwOlVcHoqxvDeK2q3SGPARK8gbfPTRGXjfw2G0k8xphn4OpVIENbUG2dNaRyGp877Ux7KrCwxua55ySAmuR+nuHxtBNk8aAlWK5aYF/yKWm3u8kli0ymcxz50XCYLmiztf2DON1qjy2tZXvHBwlkdN4cG3jLHnoiWSep45a0hFvWd80a8SxGOyqwm0dNZwYT1UXkyvAaDzHD4+MMxjJMpnME8kUCXnt1Hqd2BXByYkk4X7HnJag5+/TWKZIyOdgc3UUsCy41qkhF+AFwkKIWqwpIYAAMOfKT6kO4X9jZRjtkVL+9rW0Y7limJJs0WBdSxCPQ+Vjd1+ojj49aZno5Io6k6kCnSEvL56JsKrJz/OnI2zprOO10QTjiTwApyZT8/a0Towny3Pqd/aF2X6dpoXmYypVoNbjoNbjYCI5W1L4B0cmUITlQ/z1PeeQpVtn/1Bs1khp/1CM6ZJRzblYjq7wles83beqgftWNSy8YZUF2TcUo38qzcmJNEXdxKYIYjmdFY2Bkv2n4MX+CNu66i6rT3V8LMloIk+t18GuvnBF5M2rXDvXOiL4OPB/YD30ZxYuJIF/nGe/QeB+KWVeCPFlIcQGKeXha2xLRZlOF3jhTISQ10Eqr+OwCe5eUX9FPVJVEXSHvZydzqAKhT/69musbw3y2NZ22mrduB0qQkCPy45hSja0BSjqkt5S2mdnyMP+oRiqotC6gGxCe62nnHI6lSrwxMFRdveFqfU6GE/keflshM6Ql9sq1AN7uT/CZKrAnX3hOUW/6v1Ojo4lmE4V2dA6e7loS0cNL/VHcNkU7lvdwKsDsVKhmI/Tk2mOjCZY1xKkO+zjxHgar1OlIXB19QHHxpKcnEixub2WjtCytNpeVmiGybMnp+ifymBXBRLLIa4z5KEl6MbvshNw2bGpArsqMCX4XTb6Gqxr1x32XhIE9g7GGInn6Ku3UqPHEjmOjSVpq60quS4HrnWN4G+BvxVC/KaU8u+vYL/xGb/qLMPag+dOTTEwneVnsSx1Xgceh40Gv+uKezBvv62FvGbyyW8dZjSe48R4irv6wjTXuPmV3d2YUmJXFIqGicuulkvzAdpqPXzs7l6EYMGis4aAi4/d3cNYPMc3940AlinLIxtb+MmJScYTefqnMvTWX7ty6mQyzwslvX5TSt5+W+tltzsymiSR1bApghf7o7xh7YUK0+56L+/a3IJdVfDNEPRz2VX+8SenKeom52I5fv2+PjpDHuyqgnoVshG6YfLUkQlMKZlOF2fp2FS5PEdHk+wbirFnIIYpJVJanZoNbUHuXdnAbz2wAgGluhrLVcKuKthUZdb9e55YpjjDNczg/ds7+PzPzxJJF3nm+CQfuKO6RnCjudapoXeVfhyZ8XMZKeV/LLD/RizTm6OXee9jwMcAOjqWPhf+YsI+JwPTVhBw2BQUIdgzEOXl/giPbWtfUBTtxHiKSLpAU9DFSDxHjcfOaDxHwGUjWHLQmmV4oljz/xevA8zltxrNFDkymqA77KWt1lM+Xp3PidOuWJkepQrbsM/JeCKP32WriMqmVSinE80U2dQ2OzAmckX+5qmT1Hns/MK2DgwpyRQMmoOuWduFfU68Tjt2VVDrcaAqArV0Dup9TkbiubJf8bW0WVUEdV57KfW0qla5GEI+B3ZFQWJN3WUKOm6nSlE3GIpmWNPsJzRH9fb5+/fURIrJVIHNHTW4HSpep0qmYBD2O/G5bNR6HSRzWvka32y83iqfr3Vq6K2l7w3ALuCZ0u/3AT8F5gwEQog64B+Axy73vpTyn4F/Bti6det1TwLf3Remr8FHwGUnpxkcGo6XfXAzRYPfemDFnPtOpQp87/AYUkoGo1m6Ql7aa908srGF7pC3IjLW3z08xnSqwMHhOJ+4p7c8ZeVz2vjQzi5Sea085H5gdQNrWwLUeRwVUU/NawYum0Kd105en52Z9JffP85PS70/r9PG5vbasuHPTDa21dAUcOG0q2VZ8fO88/ZWJlMFGirgAieE4LFt7UynizQFXAvvUIW2Wg/v295Bpqjz/OlpdEPiUBR0AyaSBZ48NMaHd3XNuX8kXeC7h8eQ0qpDeMuGZsvvI6vRHHQhhOADd3QQyRRprl6TZcG1Tg39EoAQ4klgrZRyrPR7M/OsEQghbMCXgP9+0TTRskEIUX6Qep02GgIuhAAprV7Sdw6OsL2rjul0kZYaNxPJPLUeBznNIJEtMp0uEMsUsamCyVSegMuHy64gZzjdDkWyFHSDvgbfvIJsYBVXpfM6YZ+D8WS+XAloV5VL9vVdZM6jKGLBNYYrwaYqJQkBE/WiZnudNjTDRGD5D0+mCqiKwKYqTCbzvNgfYWtXLY0+B//y87N0hLy8/44ORuM5knmNlQ1+plMF9gxE2dETmpVBdLU4bWpF//7XM7F0kcf3DKIiiGc1PA6VRE7DpliBH6xR6p6BKMPRLL31Xnoa/KTyGomcxop6H0ORLKm85f/htCmcnkxjV8UsQyeXvXpNlhOVcljpOh8ESkwAK+fZ/lFgG/AXpYfYH0gpX6xQW5aE9a1BfvfBVQxGMnz7wCj7hmJ85aUh7ugJMZHMU+93kshpOG0KmmGyfyiGAAJuG16nj2NjSZJ5HYdN4Vd2dzOZLPDNfZYcxb2r6udNbZxM5vn6nmF0w5K3bgi4aKlx8ca1jbTVuq9q7vyaKcWzi4PQG9Y0cHw8hdehsq41yMkJyzAGKfmT7x5jIpnnu4fGUAQ8f3oaIQQF3SCZs7ScIt1FvvzyIJF0kR8eGef//cCW6/+33cL8t28c5MBQjEzRYEW9l+56H7VeB00BF+/d1kE8p5Et6vz1UycYi+foCvnY0VtHUbeqg19w20jkLB2o29qD1HmdPHFwFLDWy65EM6vK9aNSgeCnQogfAo9jPSLeC/xkro2llI+Xtl1SMgWddEGvSK8SLJOMFQ2+8mJsXjMufJeg6SZ2RUEzJEIIvA4V3YQGv4uBiOWNq5fK6Qu6JbRmSElBn7/w67x9n0SWp2Kk5Ial3umGiaoK3A61LCpXfs+kHNQyBb0svqeZ8sL50g0Mw8SUIJDEMsVyQCnoRtlX4Pz2VZYO05RMpKzRrJWsoFOK2yAEQsCapgCKIvA4bbTVeXjpTAQpwZSgGQbZglHOEsoUrGvmc9roCHmJZS5IgSx0n1e5cVQkEEgpf6O0WHxX6aV/llJ+qxLHvlrSBZ0vvjhIXjPY1Ruas8DlSgl6HPzGfX3sH45zZ2+IZF7nrZuamUgWqHFb6wkS2NUbYnsUBu4AACAASURBVDia464VYSKZIm+/rYVzsRztdR48Dht+l41EXqOom/gXsGRsr/PwxrWN1uKa38lYIs/GthuXf+12qBR0yyzn4gyRbd11CGEV0m1qr8HvshNJF9nSWUt7nZufHJ9iV2+IeLbIp544it9t5yN3dltTQzmN2ztrCfucPHtyinuruf9LztPHJjg6mqTGY+cXd3Tyx29bxz8/ewbNsB7yjQEXCHh4Q3M5TXhHb4j3JjoYiKRZ0xxgc0ctkXSRWLbIxrYgr40kcTtUeut96HUmhimxqQqrqx7Qy5aKme+WMoTmzRK6nqTyWrlHOZkqLLD1lbGrL8yuklRBPFsk4LLNMlgHq6elmeYsGd6Zw+JYVqPB7yr/vBBrmgPopePNlGq4EaRL878+p43UZeSgt3TWcn62ak3zhfqBtc1B1jZbAezHxyZ4eGMLQkAsW5w1utnYVjOreK6gG9gUK330vKjfXNlUVa6MqVQB3TRJZDUKukFnyMvfPLaZvGbwmZ+dQUprerP3oimdd94+O2U47HOW78+dvRc6XTZVqVgnrMrSca3poz+XUu6eIT5XfosbLDrXHHRzR4+1mLtU+jLn3bN667386bsuyEbnNYOvvjJEPKfxxrWNrGu5tPe+osHHWHuQgmZye+f8RV7pgs5XXxkiUzB4eGPTJUHnetMQcLGz11ob2X3RuR2YzvDEwVGcdoVf2NZxSUbQeer9Ts5OZwi4bYTnMSE/OZHi+4fH8blsvHVjM985OEq2aPDwxuZLHk5VrpyA28Zzp9KsaPDx7QOjTCQL5cr0B1Y38pMTk4zEcnz55UF+YVvHZQNwrmjw+CtDpPI6D61vZHXTLaU1+brgWrOGdpe+L8sx367epRUYOzgcB+DMlCW7e762IJIplnv5pyfTlw0ENlXh/tWLE1AbT+TLPe8zU5kbHgiAWS5iMzkbyaCbEr1gMBrPzRkIJpKFslDdVLpA0HP5YNA/lcaUkmRO4+hYsnwerOK4aiC4VuJZjdVNAQqawXA0h6OU5bO9u44NbUFOTaYwTKsYL5YtXna9bTKVJ5Gz7vczk5lqILgJqZTo3KeAZ4EXpZSZShzzemKaku+/Ns5IPMt9qxpY0ejnzFSaZ45N0hR08fCG5lkl808fneDsdBoh4MxUmjXNfvwuO8m8xrcPjFIoGrxyNkI0U+T+1Q2MJ/KE/U4i6QIddV4eWtdITjP49oFR8prBIxtbqPc7ebk/woHhOBvagrOCWGfIQ0+9l2ROW1KRLl03+dPvH2MwkuX9d3TMUgSdiWFKnjw0ymSywBvWNs7yD97QGmQklsNtV2kJOPnDbx1mIpnno7t7UFXBvsEY61qCZPIaj78yhNep8sjGRv7HNw8RTRf4xL19FHWTQ+fibGyr4bb2WiZTBYJuO9u76ohnNVJ5jU3tVY2aq2H/UIxXzkZZ1eTn3lUNPH10nJfORHHZFDZ31aIIwZvXN/Jbj+9nNJ6lIeAimi6yrtWqQ7kcrTVueht8xLPFBUe3VZYnlVojGADeD/x9aZroOeBZKeW3K3T8JSWWLZalivcPxVnR6OfAUJx0Qef0ZJrpUsomWJkwr40kAMtAprfeR1GXpPIapyZSTKcKjCZyxHMaQbed589EuG9VA08fGWdVU4BjY0l29oYYjmbLgnJHx5Lc469nz2CMom6yZyA2KxDYVWVOGYdKcnoqzZHRJAA/PDI+ZyCYTFlyFQAHhmOzAkHY5+SDJVnhV85GOD2ZBuAHR8ZpDLjIawZ7BqOcGE+VfJtNvvTSEAPT1vGeOjKGz2lHNyV7BqLs7A3xoZ1d5eO/Y/PSn4fXM3sHY2SLBvuH4uzqDXNgOIFEki4aTKcKrG8N8nJ/jNF4jrHSSLQp6MLntBOdY0RgUxXetqnqLnYzU5EVNynlv5SM6u/DKhR7tPR9WZLIafzn/hGePjphaam77bTUWAVjq5utaZdVTX4UIWgKuqidMYftcah0ha0q2W1d1vRIrdfOx/5tD5977iwOFVpqXKX8foU7SjZ927rqEMJ6UP742AQnJ5Kci2Y5PZlmMpnjG3vP0VgSVWsKuvjG3nM8f3r6ep4WukIeWmvcCAE7e+aeVgt5nTQEnChCsKoxwJmpNF/bM8yhc/HSqGiEp46M0xP2WH7G6SLrWwP4XTaOjCbw2FU2twdJ5DRymslb1jejG1YW0vrWGnyl7XyuiuUy3LKcGE/xtT3DHBm1Oi/nF+/7Gnx84YWzuGwKpgkOVRDPFnllIEq6oKEZBj6Xje6wlwa/i8aA6xJxwWNjSb62Z5jj48nr/ndVqSyVmhr6HLAWq5DsOeA9zFYjXVbsHYxyttQD7Qp5WNHot3RxTFkuzlrfGmRNc+CSYi0hBO/c3Fbetqib/NqX9jIUzTIUzfLmdY08sqkVpfSew6aUtzVMyc9OTnJwOMFUqoDLrlDndfDCmQgddV5aa9381gMr+PaBEQYjWYajWVY0+srZRUuNy2Hj079wW7ndc+GwKXzgjs7y3/W55/pJ5XVG4zk2tAbLowWnXWFnbxjDtMTkptNF1jQHyGkmmmGwpimAENa6wu4V9ZimiV1VyBYN1jQHyBardQTXyjPHJ8lrBuOJPGubA9zZF2ZHT4gzU2m+9NIgPfU+1jYLuut9PHVkgnzRYCia48G1jXxoRye1JS2gyxUt/vjYBJohmUoVqusCNzmV6nKFABWIA1FgWkqpz7/LjaM56ObQuQR2VSkLs4F1s+8djPGzE5N0hb389MQkPWEf44k8LofCJ9+0BkdJVOv8P4bDptBT7+XAcAynTUUzJS/1R/A4bMSyRZqCTkbjeda3BmkMuAh5nQxGsyhC0hRwoyjQZLMe9K01VpVwc9DNYCSL32UjsIC43VJwPggcH0vyvcNjbOms5Z6LcvpfG7GC2dauWlpq3JwYT9Hgd9HgdzEUHcVlV+kOefjss/1MpQusaQ5wbCzOs6emub29lrdsbObpoxO47CobWmuIZafJa9ZoKltysLpYqK7KwgxHs5ycSLG2JUBz0E1LjYtD52IcGE6wbyhGc8CJTVFIFXTGkzlUoLvez3AshxDgsavUeOzUeBwESmKAc9EcdDMUzdJSU71OV8pyE62rVEHZOwGEEGuAh4CfCCFUKWVbJY5fadY0B2gOunDYlEsE4P7xJ6fIFAz+7cVBvE6VHx+bxO1QcdoUmgKuy1oobu2qI5HTKGgGR0aTHBtLkcxrNAWsiuLusI/BSJZf3t1NPKfR6HeiKoKHNzTTVuvB5VBI5/WyouPO3hArG314nZVRC71a/vGnp5lMFtgzGOP2ztpyVtR0usDTRycAy3bwLeub2dZVR63Hzkv9URr9LhRF8PPT0/RPZTCl5VH7wukIRd3k+dMR3ru1jR09IRw2Ba/Txkd2dZHXDGq9Dta1BIlminP6HFS5PFJKvnNwlKJucnY6w0fv6uGRjS08fXSCweksybyGTRWoioKUEp9Dxe+2ky7oGKbJG9Y0sq2rjh29Ifwu24K1Gu/Y3Fq9Tq8TKjU19AhWVfHdQC2WCulzlTj2UlEzRwaE06YynijgLFXM2hRhFYcZJsmcxjf3DvPWTa2z/klcdkv4zaYoJRE4cNst0xlf6eF5XgTO51Rxld4L+51lSWqnb/YDfy6Z3+tJ0GVnMlnAbVdnFcY5bQp2VaAZEq/TxkQyz09PTrGts9YSKctrOFSFppJon2FKAm47jpIOk00VBDxOCrppVSE7VdwOtSxhrCqC+gooj95qnJc1Keom3tL9li7oqEKgmVbFu6ooIC0JFEpm9E5VYKoqimKZ0FhicQt3QKrX6fVDpaaG3oyVPvq3UsrRCh3zhrC+JYiqCO5fXU9jwIVdVXjmxATZvMHPT0fYOxRnOl3k4/dcsJ00TYlDVQi67Dy8sZlajwOPQy1VDzsZT+bLMsxbOuuo8zrxONSKaSAtFb//5jW8cGaada2BWYHP77Lzvu0dxLJFesI+fudrBxlLWF62H7u7xzIpURRCJTvCSLrAg2sa+djubv71hQEe3dJOXjdw2BRsikA3rrvK+OuWR7e2MxLPle+3/9w/gk0VNPhdtNd68DptGKalDuuwKbgd1oLwlq4avn94nNOT6XnNhqq8PqnU1NCvn/9ZCPGIlPLJShy30himZDiatcwx5tD3sdkEoZIj2d0r6xmKZlnTFGQskSMxZqWYXiy0ZkrKw+OmgKucanq+Vx+4qKiq+yp8d28EPpeNB9ddcBUbjeewqwr1fidZzWA6VaQnLDGkJSZmSomhS2pLoy3DhLZad2ntQ2FVc5A/f/cmAH5+arq8neV0VWUxZAo6U6kC7XWey87fe502VpYkSGKZIhOpPKm8Rr3fxYa2GivwmhJ5flQANNe4WN0U4PlTEXRTVq/HLchS5Od9ClgwEAghWkrbrQV812Nx+emjExwbS+J1qnxkV/dl50BVIUgXdHKRDP+xbwSHTbCjpw6/y3IYm0zmedeW2Usfu1eECbjt1Hoc5SDweuPoaJIfHhlHEYJ7V4X566dOUtRN7llVz+89uJqnj02wvbuO1U1+PC4bHofKmuYAQY+daKZ4iUjeHT11uB0KPqe97LBWZX40wyxLOaxq8vOWDc1zbhvLFPnSS4O8ds5KG+0N+3jzhiaaA26OjSfpDnvL2UQb2ywXsXdsbmU0nqsayt+CLEUgWKw4fhR4AFgylVLNMMlrBm6bylgqTyxjic9liwZF4/IpkpphUu9zMhTNQhCKuqS91kPY72RFow/NkOUFZiklyZIA27ZSvcDNQiKn4XPaLulV6oZJVjPK2Urnt4vnimSLOoqA4ViWYklSeCJZoK3Ozbu3tOF32lAUweomP7aSY01vvY/e+ks/3xKnu7nO2Y1GNyTpgtVfipckTIq6yUQqT2vQRaZoSXg3BFxMJPMUdBNTWiO0Op+D1lJ2z0x5kJlmMe11HtrrqkH5VmQpAsHHF7ORlDIP5Bdy5rpackWDL788SCqvc3QsSTKnsbLRx67eMB0hz5xTQy67ymuxBKua/Kwq5Ub/x/4RdNMEabl9vWl9E6ubAvz42CSHRxK01rh5dGvbgi5jy4V0Xudffn6WhoCT927rKAeDom7ylZcHiWU17uwLkynoHBiO0xx0Ue938NypaWyq4J23t/GOza0MTGf44B2dPH10giOjSVpr3dzeUct3D43hsCm8d1v7rGK8KteG26Hy0LomBqYzbOmsxTRN/vBbhxmKZlnR4GM4lqOomzy0rpF4TiOeLXL/qgYKhsG5WJ7/+tWDrGzw8eYNzWxaQqmSKjcflTKvv/j1NljYvH6BY1+TeX00WySV19FNK5Uu5HUwEs/x5nmG02CNFvoa/AhhPfBfOD2NYUriWcs7oDHgYiiSZXVTgMFoFrBsJDVD4rDdHIGgYFi9+clkgZxmlINiIqeVxfIGIxkypd7nWCLPVEnvB+D4WIr3bb9wTX541HIbHYnlqPM6MKVlQjORylcDQYVZ0xwoVwen87o1cgUOjSRwl1KNXx2I0tdgGczfv6aR/uk0k6miZdRU1BmMZquBoMosKmVefzkk1+BPcK3m9c0BF+tbg0ynC7zn9jaOjSd5aG3Tgvvds7Keg+firC8phq5vCzKayNMVshbncprBlk7LgWt3X5g9g1FWNvpvKn18n9NGQ8BJd8g7a2QU9jm4raOGsXieHT0hCrrBy2ej9NX7aKl1cy6ew2VXeWDN7OKy3SvC7B2MsarRT1+Dj2imiMeh0hOuqoMuJT6XjYc3NrN3MMYDq+o5OJIkmdd479Z2Tk+lCbrttNd5LO/oZAGHqtBe52H7TTaNWWXpqYh5/XJEUQRvXLs4meeZrG8NzlosC7jsvGfL5evirOmjGy8JfaU4SxIRFyOE4L6LKohnSl7/xbs3XrwLAKubArMkBh7b2l6hllZZiA/t7CqL8r1t84XXt8x42Nd6Hbx3+5WPqqvcOlRsjUAI8TCwDiinzUgpPzXP9nbg+8Am4IdCiE9KKV+uVHuqVKlS5fVKpSUqKlVZ/BnAg6U++jks0blX5ttHSqkBb6jE51epUqVKlaunUhPbu6SUHwJiUsr/CewEqvMDVapUqXITUKlAkCt9z5YKxTSgu0LHrlKlSpUqS0ilAsGTQoga4K+wfAgGgK9W6NjXzGQyz4tnIsQyxRvdlCoVZDJlXdfoMr+u1fuvynKnUovFfymlLADfFEI8ibVgnK/Qsa8J05R8Y985CprJqcnULNvDKjcvUkr+Y98IuaLBifEkH7lzeQ5ApZR8c98Iec3g5ESKD+/qutFNqlLlEio1Injx/A9SyoKUMjHztRuJEJZ+EICUcHIiRaJUNFVl+SOl5MxUmsnU7H6FEKJ8XeczT1kOKML6OyKZIlOpwo1uTpUql3CtlcVNQCvgFkJs5oLOUAAri+iGI4Tg0a3tDEQy9E9l+O6hMVx2lV/e3bUozfUqN5aX+qO81B9BVQQfuKNjlk/De7a0cTaSoa9h+Raunb//vnNwhPFEnsdfGeIXd3RWK66rzMtC6aGV5lqnhh4CPgK0AZ+e8XoS+OQ1HrtiBFw22ms9HB9LMJ0uUOO2oxuSmXJDkXSB01Np7ugOXbJ/IqehKmJOfaIqS8d5mQvDlOQ0g+l0nlROp7veR63XMecDNVPQ0QyTGo8DzTCJZzVCXgeKIjg9kSLsd85pTrQQRd0kkdMI+y6///nPC/scDEYyJHMaXocNw5QUNINMUUc3JXXe+a0gq8zNUls9Xu8H8Y3mWiuLvwB8QQjxbinlNyvUporzjb3nGEvkOTqWYDCSpcHvQp3x/xdJF3j/Z18iXdC5q6+eP3/PhQra/qk03zk4iioEj21rX/ZmMq837uwLY1MFNR4Hhin57X8/SFE3+cCODt626fLmKZF0ga++OoxmmLxpXRP7huJMJPOsavIzkczzg9fG8TpV/vo9t1E3x8N8LvSSFHQ0U2RT+6VyzaYp+eqrw0ynCthVwdf3DJPM67TXuXEoKuvaAjx7coqJZIHOkId33b4s3Vxf99xqD/qFqFQX93khxOeBFinlm4UQa4GdUsrPV+j4l8UwJaoiyt/PY5aMY5TSe+PJPKaUjMbzBN12NMMkltVoLslJD0ayZXnf09PpWZ8xnshjmhITyWSycMsFgovPbaWPrQjmVW11O1TuLclePHN8kqJuICWcnrCuU1G/VE58Kl0oy2SPxHNMpvIYpmQ0nmMwYom0ZQoGo4ncFQeCvG6Ws5RG45fmQxQNk+lUAd00OXwuiWaY6IZJJFWkq95L0GXn7HQGj8PGWGJZ5FNUWQJutkBTqUDwr6WvPyz9fhL4d2BJAoGUkm/tH2EwksXvspHK6/Q2+Hjbpham0wW+sfccUsK7t7TS4HfhtKnsG4xS53FwfCJJW42H+hlzzbd31nL/6gZOTKT5+N2zs08aAy76pzM4bAqNgVvLn/XFMxFe6o/QU+/lbZtaKiqzPTCd4YmDo3idNn5hW3vZY3c+NrfXYLeppHIaO3tC/Nn3jnJgOMGuvhD/9YGV5e366n2sawmQ0wy2d9fxrf0jHB1N8sDqBt53RztffGGQ9pDnqgxYfE4bd60Ic3Y6w46eEP/PRe87VMHJiSQv9Uco6ia6CUG3jds7a4hldaLZIo9uaePkRLpqAFNl2VCpQBCWUn5NCPEHAFJKXQhhVOjYl5AtGuWe3Z6BKKuaApyZTFPQDQYjGXJF66MHprOEvE7ymsHaliBPH50oK2KOpfK0z3DG+l/v2HDZzxpP5umt95V/fr06kF2O4+NJAPqnMhR0E5e9covrpybT6KYkkdMYS+RmidvNRSRTYEuHpfyazGscLLlv7RuMz9rOpipli81s0bJ2rPc7ORvJsLY5yJ/NIZ63WLZ21bF1DgXPZF4nmtEwTIlmSJw2hR09IdpqPfTUWyOXWo+TR7fWXlMbqlSpJJUKBBkhRAhLehohxA4gUaFjl4mli/zG4/uI54q8cU0jHqcNAXzllUFag25OTaYQwIHhOAJQFDg6muA/91trBH6XjcGISZ3Xzp9/7xhep8qGVkuXvX8qw1giR3PQxWg8z50rwnxoZxerm/ycnkwjhGXXeGA4zkPrmm6JKaItnbW81B+hr8FXkSCwfyjG/qF4qbeu8++vDuF12nj7bc380bdfI5Iu8PF7evmL7x/nwHCc29pr+JvHbuOpo+ME3Xb66j3807Nn0A3JJ+7upqibnJhIcXtHDXsHY3z+5/00+F38xn29/M1TJ0kXdX7z/hW013k4OBxje/fsh3euaPDkoVEKusnDG5pnLTyfnc7w0xOTNAfdPLSucd7R0DPHJxiYzrK+NcDX95zj8Lk4Wc2amioaBt85OIZNQI3HwZs3NHEuluFHxybY2BacM6BUqXI9qVQg+B3gO0CPEOJ5oB5LeK6ifO+1MQYiGQCOj6f5zC9u4cFP/wyHqnBqMo1QYCyeRzMkNlXwzLFJtvfUci6WQ1UE0YxGS42LWFZjMJoBKcgWTWo9dl45G6XG42DfUJzusJcfvDbOh3Z2EfI5+fCuLk5Ppnni4ChAORi83tnYVsPGtsoZmLzUHyWvGbzYH+HEeApVEeQ1gy+8MMiJ8RQA3z00yp7BGFJK9gzGODAcI5IuEkkX+db+kfLc/9f2nsNhU6lx2zkXy/PEwdHydl9+eYj+aes+efLQKK01blpr3Phds2/3M1NpzsUsdZTXRhPcteKCp+aegSjxrEY8q7Gls5Z6/+WnBQ1TcnDY6vM8/soQ/ZNp8qU2zkSXEM9p1HmdPHN8Cq/TxotnItVAUGVZUKmCsqNY3sOvAhPAZ7HWCSqCKeH7h8eQWH7BihDc2WeleW4omaK31rpx2Wy01LgRwlowThc0fvjaBF6n1ZsNuq0HQYPfRb5gIJF01Hmo8zjKXq1rSv4Ca1sCs9rQFHThd1kev731XqpcOStK+f699T42tAVI5HRymslD6+oZjmY5Pp6k3u+kKWg9dP//9s49yqrqvuOf79x7hxnmwQzMDIqvGYFowAep4xOCaClo1lJDmqjJSpa2McaaVRdd1VbblJK0xSY+amxq1LgsSYx2xSQaH0uQLkRARUSiIwpG6gvFFUCBAUEGhl//2PvCYZwX3HvPfe3PWnfdffY957d/d5999m8/fnufw4YN4djmWiok6qtTfO3UI0lWCElMHNO0b8hu3OH1tB/TiASNQ1NM/WwLNUMSJCvEGW0jaGty92t0j/UGRzRUU12ZIJUQrSNqeOW9rTz8+/dZ99GOfWsTmuuG0DA01ed/SlSIUQ1VfLxrD0Mrk+w1NxzUG/XVSYZVp/aV2bEjC3f9Q6C8yFaP4Oe4tQNz/PFXgV8AX8mG8B1de1jjW4xzZpzImOZaGr23xy0XT2BD505G1FSyY/de1nzQycLVG3hr03ZWvLOFymQFJx0xjNkXjWdMSz0bOnfSsW4LL767lUSFuODkwzm2uZaE4OOubuqqUmzd0cWwHj7mtUOS/MXENrr3WlG9jayQmDpuJJPGNlGVSnDrk68zdmQNCWDR65sAGFqZZMXbW3j6unNZu6GTMS3OGLeOqCFZISoqxLIbmujc2UWrNwIbOnfSUl8NwNnHNVOdTJBMVnDn19vp2rOX2qokZtbrHEdjTSVXTGrDcC3736x0TgZbd+7msrNaGTeqnlRFBRUDeE1d3H4U9y9/lw2du5g8toU7vjaK+as38qvl7/KHjTuorHANlvuvPHOfvE92d2d1ziUQyIRsGYLjzOzkyPFTkl7OkmxSiQokqJA4cnj1PiOQJl0R1CUSHDasmqrKJC311VRVbsPMGDOybl+l0lJfzWENXVSu30YqIZpqh5BKuIq9rsp99zQCaRIVCguAMiRd+bU11fL8Wx+RSohTjh7Ok69tYHf3Xka3uNZ7+n4BBxje4bWVB7h8pu89QF1V6oBr0tdJ6rPSTfp7n5DROLSSjz7uosUPAw125bkkjmioZkPnLhprK2lpqGHcqC5Gj6zjnc2fkEqIzx3VeIC8YARyS7G5b+YbmR3064A/LUSaC9xpZsv88enAZWZ2dcbCnbyNwDsZimkCNmVBnThl50run+B2ic1lnhQTmeRDOi9zQSHcn7h1yGV+DoZSy/NjzKx5oJOyZQhWA8cB7/qoo4HVwF7AzCwzf70sIGmFmbUXk+xcy81lnhQThZoPhaBXIegQJ4Xwf/OhQ7aGhs7LkpxAIBAIxExWDIGZZTpsEwgEAoE8UU7uL3cXoexcy81lnhQThZoPhaBXIegQJ4Xwf2PXIStzBIFAIBAoXsqpRxAIBAKBXgiGIBAIBMqcYAgCgUCgzCkLQyDpBEmXSjo1C7IO99+S9EVJN3jZmb7/+UJJWX/Ps6SUpAsknSVpvKTrJH1HUoP//fRsp1lsSPpOvnUoNCTVSDpSUtltiJSNeuIg0xsv6fgecbE+lyU7WSxpnpmdJ2km8KfA48BE4H0zuz4DuQvN7FxJPwJ2AguBCUC7mV2cgdz1uNXTf8Rt4PeImW0+VHkRuenNAL8IHAW8h3Mb3uz/x0IzOzfTdIoFSUvw26UD6f1CxgOrzGxyfrQCSTPN7DZJJwP/idMxCVxvZkti1ONc4J9we4d1AvVAHTDHzP43Lj3iQFJvDWEB88zsz2LS4RZgJLAHGAH8pZltjPu5LOW3sac3pJkBnGNme4E7JS3NUG56j+HxZjbVh5+U9FSGcl83s3MktQFfAh6StAv4nZndkYHcBjObI2k68KGZnSrpJODpuFs+BcJDwEnAXDNbBCDpCTM7P69awYXAbcBNuMpgraQm4He4BkxcfB+YZmY70hGSaoAngZIyBMB2YBmu8o82DuLcCaHdzM4G8M/lg5KuizF9oLQNwThJPwdGA0NwrXeATN8o8zNJ9wDrJN0HPI0rOCsylAuAmb0F3ALcImkkcFGGIj+W9F3gWOB1SX8LfAS8CMzGtYbLBjO7VVIlcIWkq4D7862TZ7hvjQ83s7UAZrZJ/PMc8QAACD5JREFUUtxd9l3AicDzkbgTgVJ8wfJqYIaZHfASLUkLYtQhKanSzLrMrEPSDOA+Yn4uS3lo6JjI4Xoz2+3HOz9vZk9kKHsUMB3XpdsKPGtmGe22Kmm6mc3PREYfcqtxW4BUA0uBL+BaPffjWkRfMbP/yXa6xYCf1/kGbvfcQx4uzJIu/xw5/JGZbZFUB9xkZlfFqMfhwPW4xk0F0A10eD3ej0uPOPD/9UMz6+oRnzSzPTHpcBrwtpltiMQliPm5LFlDEAgEAoHBURZeQ4FAseKdEvKOpNvzrUMgd4QeQSBQIEgaD3Sb2ZpI3Bnp93zkQZ8TgBOA/zOzF/KhQyAeQo/gIJA0RdJjffy2SFJW9xCX1CDp6shxn+kXM5n8L0nflzS1l/h9Mn34rMhvcyV9+dA1zj7ejfAG4HpJj0pKv0xkTj+X5UKPef57JnAj0ABcI+nGOPWIA0mX+/m+gc475PIi6dmBZEqaGV1DJGn7oaSVCaXsNVQKNABXA5m4j5Y0ZjZrEKdNwU2M9/pQFggF4UZI7tyuC5HLgVXA+lwlYGZnDXwWM3GeQjsGOjFXlFyPwK+IfFzSy5JWSbpE0imSnpb0oqT52r86eJGk2yQ96889zcef5uN+77+PO0gdpkl6TtJKSQ+mV2dKelvS93z8K/KrCSU1S1rg4++S9I73If93YLSklyTd5MXXSvq1pDWSfikplpco5yNf/fm/9eGLJO2UVCmpStKbPj7asjrP58tS3FoMJLUCVwF/4/Px8178ZK/DmwXSO0jKubViZh24ing28bv39nS7TpOp23XOkdTq7//PJHX452Rob+XU3/N24Je+XFRLmiXpBV9m7x7o2ZJ0h6QLffghSff68Dcl/asPb/ffkvRjSa9Jehxo8fHXAKNw73l/KiL73/yztkzOjTy3mFlJfYA/B34aOR6Gawk2++NLgHt9eFH6XGAybnUpuNWUSR+eCvzGh6cAj/WR7iJcwWoCFgM1Pv7vgVk+/Dbw1z58NXCPD/8YuMGHz8MtbmkCWtM6RdLfChyJM+LPAZNKNV9xPda3fPhm3ArpicDZwAM+fi7wZVxFtQ4Yi3OP/VVaJq5CvTYidy7woM/DccDaAii3pwEtPeISwKUx63FM5JPycbXA+fnOo0Ho3uqfnYn++F7gugHKaXvk+uGR8C+AC6JlrJf0LsW51QIsB5b58H8D0314u//+ErDA39NRwJa0TFy90BSRa5G0fwh8N9d5V4pDQ68AN0v6AfAYsBk34bXAG/gE8EHk/AcAzGyxpHq5PXjqcAvHxuJuSuog0j8DV7k849OrxFXYaX7rv1/Et1qBSbgWIGY2T1J/W0ssN7P3ACS9hCv8cXTbY89XM9sjaa2kz+IqyltxhiUB9Nx24Xic0XgDQG6x35X9iH/Y3LDHa7G0uAbAzJb3EtcNxLrGw3p526CZbQcyWnsTI+vM7Bkfvg/4B/ovp1HOkfR3wFBgOPAq8Gg/aS0BZkoaB7wGNPpe8ZnANT3OnYxrvHQD6yUt7EduF+4ZA1dP5Hy7i5IzBGb2B0mn4BZO3Yizwq+a2Zl9XdLL8b8AT5nZDD+0sKjnRZLm4xaUrTCzK6I/AQvM7Kt9pLfLf3ezP/8PZnhnVyQclZFT8pivS4Dzgd24LQ7m4h7maweRZn9E8zGW4bVALPQsA9vov5wCIKkKNxfXbmbrJM2mx3CY3EZwd/nDWWb2iKRGXC9+Mc54XIzrBWwbhG59sdt8d4CYnvFSnCMYBewws/twwwmnA82SzvS/p+Tc9NJc4uMnAVvNLTcfBqRXUV7eWzpmNt3MJvQwAuD2LpkoaYyXO1TSZwZQeymuACFpGtDo47fhWtF5J4/5uhg3mfacmW3Ebcx1PK61FmUN0CZptD+OGuKCycdAzjk6XSZxZWAZfZfTaLlIV/qb5Ob0PjVvZGbP+7I5wcwe8dHP4crnYlyj5Vo+3VvF/36ppITvNZwT+S3v5bPkDAFuX5TlftjkH4FZuJv6A0kvAy8B0Zn8zXIuXncC3/RxPwRulPQMrvU5aHxldTnwgKQOXEE8vt+L4HvANEkrca3fD4BtZvYhbohplfZPFueLfOXr87gewmJ/3AF0RFpMAJjZJ7ihoMf9ZHF0iONRYEaPyeKiQRm6OfpJ1FU50KsQ3XJXA5f5Z284bifXvsrpXJxH1Eu4HuJPcUOgD+PmowbDEty811pgpU+zN0PwEPCGl/8T3B5lae4GnlDmG1ceMmW9oEzSItwkYlY2jMtAjyG4hUR7fMvlJ2Y2IZ86ZUKh5GupMNj8lDQXN0H+6x7xrT7+hCzrNRs3DHJzf+nHRa7+ZzlQij2CYuRo4AXfYrkd+Fae9QnkEMXs5tgj7YSkm/z1HZK+7eOnyLn9fso1WdIXfNxSSbdLekzF45YbGAy5dksKn/AJnwM/xO/m2Mp+F94r8e6IuHUCK4A2+nBNZr9bbpu/5gGKyC03fAb3KTmvoUCgSIjTzTHKNOCkSGt9GG7tRRe9uyZvB940954McIagaNxyA4MjGIJAID/E5uaIm2Df9zNuUeP8HtdMoXfX5IN1rQ1uuUVImCMIBPJD3G6OaeYDfyUp5dP5jNyrKPtiDXCsnxMA7xbci16BIiYYgkAgP8Tt5pjmHtwq2JXepfQu+hkZMLOduO1Q5nm33D/i5hKgyN1yA/spa/fRQCAfFJubo6RaM9vuvYj+C3jDzP4j33oFskfoEQQCgYH4lu+NvIqbXL5rgPMDRUboEQQCgUCZE3oEgUAgUOYEQxAIBAJlTjAEgUAgUOYEQxAIBAJlTjAEgUAgUOYEQxAIBAJlzv8D2CFd4EpuE34AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# scatter plot matrix\n", "scatter_matrix(dataset)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "# Note the diagonal grouping of some pairs of attributes. This suggests a high correlation and a predictable relationship." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Algorithm Evaluation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Create a Validation Dataset" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "# Split-out validation dataset\n", "# We will split the loaded dataset into two, \n", "# 80% of which we will use to train our models and \n", "# 20% that we will hold back as a validation dataset.\n", "array = dataset.values\n", "X = array[:,0:4] # our attributes\n", "Y = array[:,4] # our Class\n", "validation_size = 0.20\n", "seed = 7\n", "X_train, X_validation, Y_train, Y_validation = model_selection.train_test_split(X, Y, test_size=validation_size, random_state=seed)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# WE have now have training data in the X_train and Y_train for preparing models and a X_validation and Y_validation sets that we can use later." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Test Harness\n", "We will use 10-fold cross validation to estimate accuracy." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "# Test options and evaluation metric\n", "seed = 7 # just to have a consistent pseudo random numers, could be any constant\n", "scoring = 'accuracy'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Build Models" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Let’s evaluate 6 different algorithms:\n", "\n", "* Logistic Regression (LR)\n", "* Linear Discriminant Analysis (LDA)\n", "* K-Nearest Neighbors (KNN).\n", "* Classification and Regression Trees (CART).\n", "* Gaussian Naive Bayes (NB).\n", "* Support Vector Machines (SVM)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "LR: 0.966667 (0.040825)\n", "LDA: 0.975000 (0.038188)\n", "KNN: 0.983333 (0.033333)\n", "CART: 0.966667 (0.040825)\n", "NB: 0.975000 (0.053359)\n", "SVM: 0.991667 (0.025000)\n" ] } ], "source": [ "# Spot Check Algorithms\n", "models = []\n", "models.append(('LR', LogisticRegression()))\n", "models.append(('LDA', LinearDiscriminantAnalysis()))\n", "models.append(('KNN', KNeighborsClassifier()))\n", "models.append(('CART', DecisionTreeClassifier()))\n", "models.append(('NB', GaussianNB()))\n", "models.append(('SVM', SVC()))\n", "# evaluate each model in turn\n", "results = []\n", "names = []\n", "for name, model in models:\n", "\tkfold = model_selection.KFold(n_splits=10, random_state=seed)\n", "\tcv_results = model_selection.cross_val_score(model, X_train, Y_train, cv=kfold, scoring=scoring)\n", "\tresults.append(cv_results)\n", "\tnames.append(name)\n", "\tmsg = \"%s: %f (%f)\" % (name, cv_results.mean(), cv_results.std())\n", "\tprint(msg)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot comparison\n", "# Compare Algorithms\n", "fig = plt.figure()\n", "fig.suptitle('Algorithm Comparison')\n", "ax = fig.add_subplot(111)\n", "plt.boxplot(results)\n", "ax.set_xticklabels(names)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Make Predictions\n", "\n", "The KNN algorithm was the most accurate model that we tested. Now we want to get an idea of the accuracy of the model on our validation set.\n", "\n", "This will give us an independent final check on the accuracy of the best model. It is valuable to keep a validation set just in case you made a slip during training, such as overfitting to the training set or a data leak. Both will result in an overly optimistic result.\n", "\n", "We can run the KNN model directly on the validation set and summarize the results as a final accuracy score, a confusion matrix and a classification report." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.9\n", "[[ 7 0 0]\n", " [ 0 11 1]\n", " [ 0 2 9]]\n", " precision recall f1-score support\n", "\n", " Iris-setosa 1.00 1.00 1.00 7\n", "Iris-versicolor 0.85 0.92 0.88 12\n", " Iris-virginica 0.90 0.82 0.86 11\n", "\n", " avg / total 0.90 0.90 0.90 30\n", "\n" ] } ], "source": [ "# Make predictions on validation dataset\n", "knn = KNeighborsClassifier()\n", "knn.fit(X_train, Y_train)\n", "predictions = knn.predict(X_validation)\n", "print(accuracy_score(Y_validation, predictions))\n", "print(confusion_matrix(Y_validation, predictions))\n", "print(classification_report(Y_validation, predictions))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that the accuracy is 0.9 or 90%. The confusion matrix provides an indication of the three errors made. Finally, the classification report provides a breakdown of each class by precision, recall, f1-score and support showing excellent results (granted the validation dataset was small)." ] } ], "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.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }