Created
October 2, 2019 11:40
-
-
Save Gijs-Koot/c5ad698b89299a64902a2621af59df45 to your computer and use it in GitHub Desktop.
density based clustering
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 218, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Populating the interactive namespace from numpy and matplotlib\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"C:\\Users\\gijs.koot\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\IPython\\core\\magics\\pylab.py:160: UserWarning: pylab import has clobbered these variables: ['cov', 'dist', 'cholesky']\n", | |
"`%matplotlib` prevents importing * from pylab and numpy\n", | |
" \"\\n`%matplotlib` prevents importing * from pylab and numpy\"\n" | |
] | |
} | |
], | |
"source": [ | |
"%pylab inline\n", | |
"\n", | |
"from scipy import stats\n", | |
"import pandas as pd\n", | |
"from scipy.linalg import cholesky" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 231, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"## introduction: what is likelihood, when and why do you take logarithms" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 236, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"## basic idea: we observe some random variables\n", | |
"\n", | |
"observed = [3., 5., 1., 7., 3, 9., 11.]\n", | |
"\n", | |
"## which ones are the outliers?" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 238, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([0.77174363, 0.17149859, 1.37198868, 0.42874646, 0.77174363,\n", | |
" 1.02899151, 1.62923656])" | |
] | |
}, | |
"execution_count": 238, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"## you can standardise and use absolute value as a measure\n", | |
"\n", | |
"std = np.std(observed)\n", | |
"mean = np.mean(observed)\n", | |
"\n", | |
"standardised = (observed - mean) / std\n", | |
"np.abs(standardised)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 247, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>observed</th>\n", | |
" <th>sd</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>6</th>\n", | |
" <td>11.0</td>\n", | |
" <td>1.629237</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>1.0</td>\n", | |
" <td>1.371989</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>5</th>\n", | |
" <td>9.0</td>\n", | |
" <td>1.028992</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>3.0</td>\n", | |
" <td>0.771744</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>3.0</td>\n", | |
" <td>0.771744</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>7.0</td>\n", | |
" <td>0.428746</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>5.0</td>\n", | |
" <td>0.171499</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" observed sd\n", | |
"6 11.0 1.629237\n", | |
"2 1.0 1.371989\n", | |
"5 9.0 1.028992\n", | |
"0 3.0 0.771744\n", | |
"4 3.0 0.771744\n", | |
"3 7.0 0.428746\n", | |
"1 5.0 0.171499" | |
] | |
}, | |
"execution_count": 247, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"## based on this, we \n", | |
"\n", | |
"df = pd.DataFrame({\"observed\": observed, \"sd\": np.abs(standardised)}).sort_values(\"sd\", ascending = False)\n", | |
"df" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 242, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"## instead of this standardised value, we can also use the likelihood, or better, the log likelihood. this is equivalent \n", | |
"## for the normal distribution, but the concept generalises a bit easier, as shown below" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 246, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"Text(0.5, 1.0, 'Density of estimated normal distribution')" | |
] | |
}, | |
"execution_count": 246, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"dist = stats.norm(mean, std)\n", | |
"\n", | |
"x = np.arange(-5, 15, .1)\n", | |
"y = np.exp(dist.logpdf(x))\n", | |
"\n", | |
"plt.plot(x, y)\n", | |
"\n", | |
"plt.title(\"Density of estimated normal distribution\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 251, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>observed</th>\n", | |
" <th>sd</th>\n", | |
" <th>likelihood</th>\n", | |
" <th>log_likelihood</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>6</th>\n", | |
" <td>11.0</td>\n", | |
" <td>1.629237</td>\n", | |
" <td>0.031755</td>\n", | |
" <td>-3.449709</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>1.0</td>\n", | |
" <td>1.371989</td>\n", | |
" <td>0.046715</td>\n", | |
" <td>-3.063679</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>5</th>\n", | |
" <td>9.0</td>\n", | |
" <td>1.028992</td>\n", | |
" <td>0.070516</td>\n", | |
" <td>-2.651915</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>3.0</td>\n", | |
" <td>0.771744</td>\n", | |
" <td>0.088895</td>\n", | |
" <td>-2.420297</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>3.0</td>\n", | |
" <td>0.771744</td>\n", | |
" <td>0.088895</td>\n", | |
" <td>-2.420297</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>7.0</td>\n", | |
" <td>0.428746</td>\n", | |
" <td>0.109217</td>\n", | |
" <td>-2.214415</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>5.0</td>\n", | |
" <td>0.171499</td>\n", | |
" <td>0.117984</td>\n", | |
" <td>-2.137209</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" observed sd likelihood log_likelihood\n", | |
"6 11.0 1.629237 0.031755 -3.449709\n", | |
"2 1.0 1.371989 0.046715 -3.063679\n", | |
"5 9.0 1.028992 0.070516 -2.651915\n", | |
"0 3.0 0.771744 0.088895 -2.420297\n", | |
"4 3.0 0.771744 0.088895 -2.420297\n", | |
"3 7.0 0.428746 0.109217 -2.214415\n", | |
"1 5.0 0.171499 0.117984 -2.137209" | |
] | |
}, | |
"execution_count": 251, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"## idea is the same, lower likelihood is the least likely example, that's the anomaly\n", | |
"\n", | |
"df[\"likelihood\"] = np.exp(dist.logpdf(df.observed))\n", | |
"df[\"log_likelihood\"] = dist.logpdf(df.observed)\n", | |
"df" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 252, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"## the reason you usually work with the log is that it's more numerically stable, and you can add it for multiple variables" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 258, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>gewicht</th>\n", | |
" <th>lengte</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>79.463161</td>\n", | |
" <td>178.173208</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>79.751925</td>\n", | |
" <td>166.646161</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>86.754299</td>\n", | |
" <td>177.460175</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>89.275470</td>\n", | |
" <td>172.869358</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>83.058364</td>\n", | |
" <td>191.956237</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" gewicht lengte\n", | |
"0 79.463161 178.173208\n", | |
"1 79.751925 166.646161\n", | |
"2 86.754299 177.460175\n", | |
"3 89.275470 172.869358\n", | |
"4 83.058364 191.956237" | |
] | |
}, | |
"execution_count": 258, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"## \n", | |
"\n", | |
"gewicht = stats.norm(80, 10)\n", | |
"\n", | |
"lengte = stats.norm(180, 15)\n", | |
"\n", | |
"\n", | |
"df = pd.DataFrame({\"gewicht\": gewicht.rvs(100), \"lengte\": lengte.rvs(100)})\n", | |
"\n", | |
"df.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 260, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.axes._subplots.AxesSubplot at 0x2760f270748>" | |
] | |
}, | |
"execution_count": 260, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 2 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"df[\"log_likelihood_gewicht\"] = gewicht.logpdf(df.gewicht)\n", | |
"df[\"log_likelihood_lengte\"] = lengte.logpdf(df.lengte)\n", | |
"\n", | |
"df[\"sum_log_likelihood\"] = df.log_likelihood_gewicht + df.log_likelihood_lengte\n", | |
"\n", | |
"df.plot.scatter(\"gewicht\", \"lengte\", c = df.sum_log_likelihood, cmap = plt.cm.GnBu)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 261, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.collections.PathCollection at 0x2760f3506a0>" | |
] | |
}, | |
"execution_count": 261, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"## generate some data from a multivariate normal distribution\n", | |
"## first question: what are the outliers?\n", | |
"\n", | |
"cov = np.array([[4, 2], [5, 10]])\n", | |
"ch = cholesky(cov + cov.T)\n", | |
"x = ch @ stats.norm().rvs((2, 100))\n", | |
"\n", | |
"plt.scatter(x[0,:], x[1,:])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 263, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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80V+9913s337dv766y+aN29Oq1atHMY7cuRIADp16kRsbCwAGzZs4NVXXyUyMpLo6GiysrI4e1ZzAXzrrbdSu3ZtPD09adeuHWfOFG5CZPfu3URHR+Pv74/BYGDixInFGp45ffo0kZGR9OzZkyFDhnD77bcXGj4nJ4d169Zx55134ufnR9euXdmwYUOR6SiqPiazhROX08gyWrBIiX3bPXcY50JSJtfScwqNJz278JZ/fjKNZozmmjfXVP7G4D755Fxxg545cqRTu3btylIagDzW92bPns2QIUNYt24d3bp145dffin0XilliWfjPTw8ANDpdLb/c49z5yHyxymEKHKyKjcuvV5vi0dKyddff03r1q3zhP3tt9/ypG1/jzOKSt8ZuXMA9rRv354tW7Y4DP/jjz+SnJxMWFgYABkZGXh7ezNkyJBSpa+oOlxKycJkkeSt+vOSqwT8vNzQ6xx/e6YSLhzQoSkfN33NahPXrKctBidPniQsLIxZs2YRFRXFsWPH8PX1JTU11WH42267jU8++cQ2Rn/16lVq165NnTp12LZtGwDLli2z9QaKy9mzZ9m1axegjbv36tWLNm3aEBsby4kTJ4od78CBA3n33Xdtlfeff/5ZZNpubm4YjQXHRLt27cqWLVtISEjAbDazfPnyEj9XLhMmTGDnzp388MMPtnM//vgjBw8eZPny5Xz00UfExsYSGxvL6dOn2bBhgy2PFdUTs0VyLcNY7IZGUobzXoAQgpI0yySuWVZZ1VAKIB/z588nNDSUiIgIvLy8uP322wkPD8dgMBAREVFgEnjQoEEMGzaMqKgoIiMjefPNNwFYtGgRTz31FOHh4ezbt4/nn3++RHK0bduWpUuXEh4eztWrV5k2bRqenp4sXryYMWPGEBYWhk6n4+GHHy40nueeew6j0Uh4eDihoaE899xzRaY9depUwsPDC0wCBwYG8u9//5t+/foRERFBx44dGT58eImeKxcvLy/Wrl3Lu+++S0hICO3atWPJkiX4+fnx008/5Wnt+/j40KtXL77//vtSpaWoGmTmmItdaVukJLmQiVtvdz0l6QMIAe6GmlcdlostoP3798dGREQklPS+I+U0BFQW3Mj29tjYWIYOHcqhQ4dcLFXFoLb650XlR15y8yMl08i5axmYi7nSx8tdT0hD5/kYm5BOSlbRq3uEEPjX8qBR7Yq3R1TSd+Po0aPkN5dTEltANU/lKRSKSombXlCS9qh7EeP1jWp7FrnTVwB6IWhQy734CVcjlAKohAQHB1eb1r9CUVw83fROJ3XzoxOCej6FV9qebnqaN/BBL4RDRaATAoNeR8uGPhhq2ORvLjXzqRUKRaVDCEFDX49itdoNOkEtj6IXMfp4GGjdyJcAPw/bCh8BeBj0NK7jResAXzwMehdIXzWp1D6BFQpFzaKejzsZOWaSM40O1/ELQKcTNG/gU+xVOwa9Dn9fT/x9PW0rjGriih9HKAWgUCgqDUIImtb1wstdz5XUbMwWaVsZZAH8PA0E1vYq9YodVfHnRSkAhUJRqRBC0KCWB/WtvQGj2YJOCLzd9TV2rL6sULmpKDM++OCDYu07AHj66af5+OOPy1iiglQFGWsqQgh8PAzU8XbHz8tNVf5lQKXN0SyjWVzNNJFtMrskvvPnzzN8+HBCQkJo2bIlM2fOJCdH20lobx20IlmzZg1HjhyxHT///PNFmqIoSwYPHkxSUhJJSUm8//77tvMxMTEMHTq0yPunTp1KYmIiu3fvLjLsK6+8wk8//cTp06dvSGZnTJ48mVWrVhU4nyvjb7/9VmQcrpbRmUzlxaJFi/j0008rLP0b5YUXXrBtvHTlt2Lv22LPnj3MmDGj2Pfm/1YqO5VuCOj8tQy3F78/0iTmr8v1BCBWX2BwWCCzb29DgF/pNmpIKRk5ciTTpk3j22+/xWw2M3XqVJ555hneeOMN1z6AlaLs6jhizZo1DB06lNzNby+99JKrxSoR69atA7SNae+//z6PPPJIieN4//33nZrRsEen0/Hll1+WOH5XUNwPtiJlLAuK2kVemTCbzTaDjY5w5beS69si17lRVFTBPVUmk8mhochcBVCab6UiqFQ9gPPXMtyGLtjebtPRS/WMZilyzJJsk4Xv9l9gyIJtXEopneOGTZs24enpyZQpUwDN8Nnbb7+dx4bPuXPnGDRoEK1bt+bFF18ENFv6Q4YMISIigtDQUFauXAnA3r176du3L506dWLgwIFcvHgR0Gz9/+tf/6Jv37688cYbBAcH27xZZWRkEBQUhNFo5MMPP6Rz585EREQwatQoMjIy2LlzJ9999x1PPfUUkZGRnDx5Mk8LsaR+ABz5NbDn9ddfZ8GCBQA8/vjj3HLLLbZ07r77blvcCQkJzJ49m5MnTxIZGWmz95+Wlsbo0aNp06YNEydOLJb9FpPJROfOnYmJiQG0IZVnnnmmWGXoKM9Aa0XPmDGDHj160KJFC1t+SSmZPn067dq1Y8iQIVy+fLlY6Zw8eZKOHTvajv/++286depU5H1Hjx6lS5cutuPY2FjCw8MBrXLq3LkzoaGhTJ061WFe5eY1wJ49e4iOjgac+3M4fPgwXbp0ITIykvDwcP7+++9C5Zs9ezbt2rUjPDycJ598Erjego6Li7O9K5GRkej1es6cOcOVK1cYNWoUnTt3pnPnzuzYsaNAvLGxsfTu3ZuOHTvSsWNHdu7cabvmyE/GiRMn6N+/v82UyMmTJ5FS8tRTTxEaGkpYWJjtO4uJiaFfv35MmDDBZhjwlVdeoXXr1vTv35+//vrLlpb9t+Lsm7hy5QoDBgygY8eOPPTQQzRr1syW57nk921h39t94YUXmDp1Krfddhv33nuvwzJw9K3Y55UzPx+7d++mR48e9OjRgy5dupCamlpo3rqM4tqNvpFfHn8AhfweXLo7ocXstZZms9bK/L8WT6+Vj6/4s0S2snN555135GOPPVbgfGRkpNy/f79cvHixbNSokUxISJAZGRmyffv2cvfu3XLVqlXygQcesIVPSkqSOTk5snv37vLy5ctSSilXrFghp0yZIqXUbOJPmzZNSqnZ9R42bJjctGmTLVyujf6EhARbnM8884zNjv+kSZPkV199ZbuWe1waPwCO/BrYs2vXLjl69GgppZS9evWSnTt3ljk5OfKFF16QixYtssV95coVefr0adm+fXvbvZs3b5Z+fn7y3Llz0mw2y27duslt27Y5zX97G+eHDh2Sbdq0kRs2bJCRkZEyO7to2+5F5dno0aOl2WyWhw8fli1btpRSSvn111/L/v37S5PJJC9cuCBr166dJ28LIzo6Wv75p/auPf3007a0iiIiIkKePHlSSinlq6++KufOnSulvO4jQkop7777brly5Uqb7Lky2fur2L17t+zbt68tfUf+HKZPny4/++wzKaWU2dnZMiMjw6lciYmJslWrVtJisdjikVLKOXPmyDfeeCNP2IULF8oxY8ZIKaUcP368rVzPnDkj27RpUyDu9PR0mZmZKaWU8vjx47JTp05SSud+Mrp06SK/+eYbKaWUmZmZMj09XS5btsxWVvHx8TIoKEjGxcXJzZs3S29vb3nq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\n", | |
"text/plain": [ | |
"<Figure size 432x432 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# fit pca and plot magnitude of first component\n", | |
"# note that this size doesn't really reflect the anomalies too well except in one direction\n", | |
"\n", | |
"from sklearn.decomposition import PCA\n", | |
"\n", | |
"pca = PCA(n_components = 1)\n", | |
"pca_vals = pca.fit_transform(x.T)\n", | |
"\n", | |
"plt.figure(figsize = (6, 6))\n", | |
"plt.scatter(x[0,:], x[1,:], s = np.abs(pca_vals) * 10, label = \"Observations with `x` and `y` values, size according first pca\")\n", | |
"plt.title(\"Scatterplot with size according to PCA component\")\n", | |
"\n", | |
"a, b = pca.components_.tolist()[0]\n", | |
"slope = b / a\n", | |
"\n", | |
"ax = np.arange(-10, 10, .1)\n", | |
"y = slope * ax\n", | |
"\n", | |
"plt.plot(ax, y, color = \"red\", label = \"first component of PCA\")\n", | |
"\n", | |
"plt.legend()\n", | |
"plt.grid(True)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 273, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 2 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# now with size according to probability density\n", | |
"# probability density is known in advance here but could be fitted on data\n", | |
"\n", | |
"dist = stats.multivariate_normal(cov = (cov + cov.T) / 2)\n", | |
"\n", | |
"x = dist.rvs(100)\n", | |
"plt.scatter(x[:,0], x[:,1], c = dist.logpdf(x), cmap = plt.cm.CMRmap_r)\n", | |
"\n", | |
"plt.title(\"Likelihood based anomalies, smaller means less likely\")\n", | |
"plt.colorbar();" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 283, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"C:\\Users\\gijs.koot\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\scipy\\stats\\stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", | |
" return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"Text(0.5, 1.0, 'Local outliers with n = 20')" | |
] | |
}, | |
"execution_count": 283, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# the lof algoritm selects points that are outside more dense areas\n", | |
"\n", | |
"from sklearn.neighbors import LocalOutlierFactor\n", | |
"\n", | |
"lof = LocalOutlierFactor(n_neighbors=20)\n", | |
"\n", | |
"outliers = lof.fit_predict(x)\n", | |
"\n", | |
"plt.scatter(x[:,0], x[:,1], c = np.array([\"red\", \"blue\"])[np.array(np.floor((outliers + 1) / 2), dtype = \"int\")])\n", | |
"plt.title(\"Local outliers with n = 20\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 279, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", | |
" 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n", | |
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0,\n", | |
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n", | |
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])" | |
] | |
}, | |
"execution_count": 279, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 285, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"C:\\Users\\gijs.koot\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\scipy\\stats\\stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.\n", | |
" return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"Text(0.5, 1.0, 'Local outliers with n = 4, the red ones are the outliers')" | |
] | |
}, | |
"execution_count": 285, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAEICAYAAABLdt/UAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJztnXecE9UWx39nazZbQDrSUaSoKIKiIsITUAEVfaKCoigqKqKiIgiiYsVn7wV7R+yI8KSJDVBWilIFxKXDIgLL9t2c98dJ3maTmd1sMskk2fP9fOazm8nMvWcmM2funHsKMTMURVGU+CHBbgEURVEUa1HFriiKEmeoYlcURYkzVLEriqLEGarYFUVR4gxV7IqiKHFGrVXsRMREdGQE+mnt7ivJ/Xk2EQ0Pd7+BQkSriah3Fd8vJKJrIihSxInUtRAIRDSZiN6zW45ogYh6E9E2u+UwwvveIKLLiGiO3TJ5iBrFTkR/EVFfu+UIleqOg5n7M/PbkZSpKpj5aGZeCMSeUiGidkRUVBOZa8ODKpaJpoesN9XdG8z8PjOfGUmZqiJqFLtSNZ4Rv1KJFwAstVsIM2r7b1bbjz9QiCjR6jZjQrET0bVEtJGI9hHRDCI63Ou7o4lorvu73UQ00b3+JCJaTET7iWgnET1PRCkB9ne4u5997n6v9fruLSJ60Ovz/18ViehdAC0BfEVEh4honEHblUaMRDSCiNYS0T9E9A0RtfL6jonoRiLaAGADCU8R0R4iOkBEvxHRMQZ9/IuIfvf6PI+IfvH6/CMRne/+/y8i6ktEZwOYCOASt+wrvZpsRUQ/EVEeEc0hogYm5603EW0jotvdMu4koquqPtvBQURDAOwHML8G+zwEoCeA593H+LzX132JaIP7d3iBiMhrP9PfyKd9j9ntaiLaAmCBe/3JRLTIfS2u9DZ9EVEbIvrOfW7nAjA8t17bV3UvMBFdX9PjCPS6cm97lbuNPCL6k4iu8/rO8/uPJ6JdAN50rz+HiFa4j38REXU2aft7978r3b/PJV7fGV5TRJRKRI8T0RaS+/9lIkozaT+BiCYRUY67rXeIqI637D7bB3JveLa9koh+9PrcgSr00noiutjru7eI6CUimkVE+QD+RUQDiGiN+7xuJ6KxRscQMMwcFQuAvwD0NVh/BoC9AE4AkArgOQDfu7/LBLATwO0AHO7P3d3fdQVwMoAkAK0BrAUwxqtdBnCkiSzfAXjR3ebxAHIB9HF/9xaAB7227Q1gm9lxuPtmAEnuzwsBXOP+/3wAGwF0dMs5CcAiHxnnAqgHIA3AWQB+BVAXALn3a2ogvwNAIURJJAHYBWCH+/ykub+r7ysvgMkA3vNpayGATQCOcu+7EMAjJuetN4AyAPcDSAYwAEABgMNMtn8RopyNlt+quFayAPwBoIWRzNVcZ/8//z7neab7vLZ0/95nB/Ib+bTj+a3fAZDuPl/NAPztPhcJAPq5Pzd077MYwJOQa/t0AHlmx4Mq7oVQjiPQ68q97UAAR7i36+X+fU/w+f3/45YvzS3rHgDdASQCGO6+5lJN2q90X1Z3TQF4GsAMyD2SCeArAFNM2h7hPgdtAWQA+AzAu0b3cQ3uDc+9fCWAH93/pwPYCuAq97k+wf27He2lQw4A6OG+JhwQPdbT/f1hnnMatD4NZWcrF5gr9tcBPOr1OQNAKeQmGgpgeYDtjwHwudkF5LW+BYByAJle66YAeMvrR7FKsc8GcLXXtgnui7aVl4xn+NzYf0AeWAnVHO8PAP7t3nYOgOkAzgbwL3gpzQAv3klen0cB+K9Jn70hD40kr3V7AJxs8bXyDIDxZjJXs+//z7/PtXCa1+fpAO4M5DfyacfzW7f1WjcebuXhte4biIJrCVFa6V7ffWB2PKjiXgjlOGpyXRnI9AWAW7x+/xIADq/vXwLwgM8+6wH0MmnPSLEbXlOQh0s+gCO8vjsFwGaTtucDGOX1ub37/CXBWsV+CYAffLZ9BcC97v/fAvCOz/dbAFwHIMuKeyQWTDGHA8jxfGDmQ5ARTzOIEt5ktBMRHUVEM4loFxEdBPAwqnnN9epvHzPnea3LcfdnNa0APON+Rd0PYB/kYvXua6vnH2ZeAOB5iG15NxFNJaIsk7a/g1ysp7v/XwgZYfVyf64Ju7z+L4AoFDP+ZuayGmxfI4joeAB9ATxlVZtuzI4xkN/Il61e/7cCcJFnf3cbpwFoCrnW/mHmfK/tc2BOVfdC0MdRk+uKiPoT0RK3iWE/ZATtfV/lMnORz/Hf7nP8LdzHEihm11RDAE4Av3q1/V/3eiMqnT/3/0kAGtdAlkBoBaC7zzFfBqCJ1zZbffa5EHIuc9ymuVNCESAWFPsOyIkCABBROoD6ALZDTs4RJvu9BGAdgHbMnAWxkZHJtr791SOiTK91Ld39ATJCcHp95/1jATLiCJStAK5j5rpeSxozLzJrj5mfZeauAI6GmEfuMGnbV7F/h+oVe01kDxm3PfSQybLaZLfekJHxFrcddyyAC4loWYDd1vQYA/mNqupjK2TE7r1/OjM/Ann9Psx9TXtoWUW7Vd0LIR1HINcVEaUC+BTA4wAaM3NdALNQ+b7yPb9bATzk06+TmT8MQObq2AsZzR/t1XYdZjYbSFQ6f6h4Y9oNn/uaZELT+wFR0/v6O59jzmDmG8zaY+alzDwIQCPIW9D0GvTnR7Qp9mQicngtSZBX06uI6Hj3hfUwgJ+Z+S+IPbEJEY1xT6JkElF3d1uZAA4COEREHQDcYNCfH8y8FcAiAFPcMnQGcDWA992brAAwgIjqEVETiInHm90QG14gvAxgAhEdDQBEVIeILjLbmIhOJKLuRJQMuRCLIGYjIxZBXjVPAvALM6+GeyQB4HuTfXYDaE1EEbkumPl69wVvtBxtsttUyMP8ePfyMoCvIXZi7wnM1ib71+T3AWr4GxnwHoBziegsIkp0X1O9iag5M+cAyAZwHxGlENFpAM6toq2q7oWgj6MG11UKxHaeC6CMiPoDqM7F71UA17vbJyJKJ6KBPgMnbwL+fZjZ5W7/KSJq5D6WZkR0lskuHwK4lWTCOgNy/j5yvw38AcDhli0ZMgeR6iNXoPfGTABHEdHlRJTsXk4koo5GG7t/+8uIqA4zl0L0ltl9HRDRpthnQZ7AnmUyM88HcDdkpLATclMPAQC3uaQf5GbYBWADxIYMyEjuUshk1KsAPqqBHEMho8IdAD6H2Mbmur97F8BKiP1tjkG7UwBMcr+CVTmzzcyfQyaaprnNRasA9K9ilyz3sfwDeY38GzJ6Mmo7H8AyAKuZucS9ejGAHGbeY9L+x+6/f9dgBBxRmLmAmXd5FgCHABQxc657kxaQc2M2in0GwGASz5BnA+ivpr+R7/5bAQyCvDHmQkZzd6Di3rsU8rDdB+BeyMSrWVum90KIxxHQdeW+326GjCb/ccs+o5p+swFcCzH1/AOZvLyyil0mA3jbff9cXMV2Hsa721ziPq55kAGNEW9A7t/vAWyGPMBucst5ADJ/9Brk2skH4O0lE/C94T5PZ0J+mx0Q3eSZUDbjcgB/uY/hegDDquqjOshtuFeUuICIJkHsvK/YLYui2IUqdkVRlDgj2kwxiqIoSoioYlcURYkzVLEriqLEGbYk6WnQoAG3bt3ajq4VRVFill9//XUvM5sFYP0fWxR769atkZ2dbUfXiqIoMQsRVRWZ/H/UFKMoihJnqGJXFEWJM1SxK4qixBmq2BVFUeIMVeyKokQNLhdw8KD8VYJHFbuiKLbDDDz1FNCggSyNGgEvvGC3VLGLFptVFMV2XngBmDQJKCiQz3//DYwbB6SlASNG2CtbLKIjdkVRbOeBByqUuoeCAmDyZFvEiXlUsSuKYisuF7DHpELAzp2RlSVeUMWuKIqtJCQAZhlG2rWLqChxgyp2RVFs5/77AYej8rq0NOCxx+yRJ9ZRxa4oim2UlAAjR8pS7q7ySQQceSTw+efAwIH2yherWKLYiaguEX1CROuIaC0RnWJFu4oSy+zaBVxzjbjutWoFTJkClJbaLVV0MWYM8N57QFFRxblhBrZsAX780V7ZYhlLSuMR0dsAfmDm14goBYCTmfebbd+tWzfW7I5KPHPwINCxo0wKlpXJurQ04KyzZCSqAIWFQP368tcIhwNYvx5o2TKyckUzRPQrM3erbruQR+xElAXgdACvAwAzl1Sl1BWlNvD228D+/RVKHRAF9s03wNq19skVTezbV/X3CQnA3LmRkSXesMIU0xZALoA3iWg5Eb1GROm+GxHRSCLKJqLs3NxcC7pVlOjlxx/9/bIBICkJWL488vJEI02aAE6n+feJiUBWVuTkiSesUOxJAE4A8BIzdwGQD+BO342YeSozd2Pmbg0bVlsARFFimvbtgdRU//XM5q59tY3EROCJJ/y9YTwQ6eRpsFih2LcB2MbMP7s/fwJR9IpSa7nuOiA5ufK65GRR6qfY4FrADMyfL26FU6eKmSgaGD4c+Owz8YIB5I0mPR2oWxeYNavqEb1iTsiKnZl3AdhKRO3dq/oAWBNqu4oSyzRrJoq0Y0cgJUWWvn2BBQtkJGrG0qVAv34yqdilC/DFF6HLUlIC9OkDnH++hOjfdpt46SxdGnrbVtC/P7Bhg0w4f/qpKPrdu4EePeyWLHaxyivmeACvAUgB8CeAq5j5H7Pt1StGqU38/beYZTIyqt5u6VKgd+/KtnmnE3j2WeDqq4Pv/9lngQkT/G3+rVoBmzdX/aBRoouIecUAADOvcNvPOzPz+VUpdUWJBBs3AjfeCPTqJVkCt2+3T5b69atX6gBw553GibDuvLMieCcY3nzTeCJ3715g3brg21WiF03bq8QdS5aI2aO4WNwNlywRu/LPP8ukZrRi5i2TlyeugcH6HFQ1ItfRenyiKQWUuOO664D8/Aof8pISsd/efru9clVHixbG6xMTgTp1gm93xAjjSchGjaL7QacEjyp2Ja4oKgJWr/Zfzwx8+23k5akJkyf7K2CnExg1SiZfg+W664DTThNvk8RE+VunDvDJJzpij1fUFKPEFcnJ4jJnZJPOzIy8PDXhgguAp5+Wic78fIm8HDUKeOSR0NpNTgb++18JmvrxRwkMGjw4+s+HEjyq2JW4IjERuPzyisRSHpxOmUyNdq69Vkwne/eKL7dRkFMwEAE9e8qixD9qilHijmeeEbfBtDQxOTgcMhqeMMFuyQIjMRFo3Ng6pa7UPnTErsQdTicwe7a4PG7aBHTqZD4xqSjxiCp2JW458siKUHWldrFnjzzck5OBAQPErFWbUMWuKEpQuFzAnDnAsmVAmzZi7jJL6BVJXnlFCngkJcncQnk58P77klKhtmBJSoGaoikFFCW2OXQIOP10yfFSWCjzGenpwKJFQNu29sn1xx/A8cf7F+9ISwO2bQPq1bNHLquIaEoBRVFqF/fdB6xZIwq+vFz+5uYCV1xhr1wffGBcfjAhwZqEarGCKnZFUWrM++9LygZvXC7gl1+AAwfskQkQF1ejGAaXq7L7a7yjil1RrCQ/X5zoH3sM+OknCXmNQ6L1sM4/X8wuvjDXrqIdqtgVxSp+/138Km+4AZg4USpX9+9vbBuIcYYO9fezJwK6dg0tr02odO8ODBsm9n4iMcE4ncCkSZKmuLagk6eKYgXMklFrw4bK651OYMoU4Oab7ZErTBw8KPln/vpLsk9mZMhI+aefgHbt7JWNWVInfPSR5NgZNgw4IU5qugU6eaqKXVGsYONG4LjjjBOfd+4MrFwZeZnCTHm5lK/zuDsOHqyl7MJNoIpd/dgVxQpcLvPvQqmSEcUkJgLnniuLEl2ojV2JapiBGTOkDuiJJ0qmw7w8u6UyoF07SXDuS1oacOWVERdHqd2oYleimkmTgEsvBebNA7KzxX/6pJOMLR62QgRMny65cD32iIwMqUg9erS9stnIvHli33Y6gQ4dJAe8En4sM8UQUSKAbADbmfkcq9pVai+7dwNPPlnZ/7ioCNiyBXjnHeD66+2TzZATTwRycoBp04AdO4AePYAzzxTXjFrI3LnAoEEVUaDr1wPDh4tH6PDh9soW71h5xd0CYK2F7Sm1nMWLjSsHFRQAX38deXkC4rDDxN3xgQeAs8+utUodAMaP9w/t9xTnjlY/+HCxZo04Rg0eLMXFwx0sZclVR0TNAQwE8JoV7SkKIMWbjeYkExOBZs0iL0+k+PZbySffvLmMeFessFui4Fi3znh9bq6/wo9nPv4Y6NYNePFF4NNPgZtuEnNifn74+rRqOPE0gHEATF0DiGgkEWUTUXZubq5F3SrxzCmniHL3HfSmpEjJuHjks8+Ac84BvvsO2L4d+OorsegsXWq3ZDWnZUvj9VlZxtGh8UhxMXDNNfIg8zhH5eeLd+zLL4ev35AVOxGdA2APM/9a1XbMPJWZuzFzt4YNG4barVILSEgA5s+XSTenUxRCZibwxhviGh5vMAO33FJ5YphZPo8bZ59cwfLAA8bFuSdODE8R7bIy4NdfJQA4Wkw9y5cbry8slLn2cGHF5GkPAOcR0QAADgBZRPQeMw+zoG2lltOmDbBqlbzWHzwoKVnjtWRcXp5MGBsRi/F8F10ko9MJE6SGa2amKPXbb7e+r7lzJc1BSYmY7xo1Ar78Ejj2WOv7qgkZGeZhDFlZ4evX0shTIuoNYGx1XjEaeaoo/pSVSaUfI9vrkUf6ZyuIFTxvHWlp4ZlL3rZNsjn4usDWry/mLDsHAszyxrlhQ+W3iPR0yRVX0+Ifmo9dUaKAL76QibIWLSRnyaZN5tsmJYlDjZn5IlYhEkVWlVLfs0cmiYOZUHz7beNRcUmJ/d5TRMDMmTIRnpkpi8Mhc0SDBoWvX0tTCjDzQgALrWxTUWKVp58G7rqrYiT54Ydyky9fLiYmI6ZMEVe4114TRQ9IG/EavFpYKD7tM2bIyLq0VEw3kyYFboffscM/Nzwgyn7PHmvlDYZ27YDNm4HvvxePoB49wu/VpUnAFMvZu1cUU3a2BF6OHCneLbWJwkKx8x46VHl9YqIostdfr3r/Q4fE3t6sWXTUEc3NBZ5/XpTTUUcBt94qJoZQufJKycLo7dftdAJTpwKXXRZYG59/LpWbfM91Wppcg506hS5ntKDZHRVb2LhRcmIXFsricMiyeLE1iiBW+OUXqQlqNJKMNXv5li2SZz0vT44nMVFG1199BZxxRvDt5ueLHdzoHB1zjHi3BEJZmZzrlSsr3o7S0yUY6K23gpevpuzcKW8I7duH72GsNnbFFm66Cfjnn4oAlKIiKZUWr37nRhw6JPltjBQWEHsFH+66S35Tz/GUl4sCveaa0NwKDxwwt7ubeQcZkZQkQV2PPCJZHXr2lBH/G28EL1tNOHBA6qm0aSN9N2wIvPBCZPo2Q9P2KpayYIH/zc4sATfM4fFfjjZee03svkY4nWJDjiW++cZ4cnLHDhmhNm4cXLtNmojLn28UakKCjMBrQmqqDCpuuik4WUJh6FC57ktKKh5+48YBRxwhWSXsQEfsiqWYuZYZ5XyJV7780jxkftQooE+fyMoTKmb+1sxi8giWhASx23t7ASUmiu/3Qw8F324k2bWrQql7U1AA/Oc/9sgEqGJXLOaKK/zti6mp4upXG0brgEyaGh2r0ymju1jjllv8XTBTUiT1QUZGaG0PHixvBAMGiG16+HDxGmrfPrR2I0VurvmgxeytLRKoKUaxlEcflUx2P/8soy+XSzxjnnrKbskix003iVujd8BMQoL4snfpYp9cwXLjjRL9+847FS6JJ5xQvWdPoJx2mv3+5sFy1FHG65OS7H0zU68YJSysXAmsXg107BibyixUXnwRGDsWSE4W+3SLFsDs2UDr1ub77N0LbN0qttlwhpsHy44d8ru2bi2/qyK8/LKkSfA8yJOSgDp1JOCqeXNr+1KvGMVWjjtOPENCVeoul7isdesmyuTeeyVnjB3s2QNccomYmlJTJRfK7t0STTpggKzLypKCScOHy/ZffAH89JO8xZgp9eJiMVW1aCHpehs3js6c5YcfLt4fqtQrc/318jv36SMuvdddJw9Aq5V6TdARuxLVXH21BLB4Qs1TU8WtbNmyyKZ+LS2Vm3bLFvGbBmRk1rSpyLZ/f0Xu+NRU8eX/7rvA2h49WlzzvCdcnU7g8cclxYCieNARuxLzbNoEfPBB5fwhxcVirpg2LbKyfPWVTJR5lDog/+/ZI37r3gVBiosl4nHZsurbLS31V+qAvNY/9pg1siu1D1XsStSyeHFFvhRv8vMlTWskWbvWOEFVcbG/qxsgk6Vr1lTfbmGhKHcj9u6tmYyK4kEVuxK1NG1q7DaYnGxenSdcdOxo7LOdkmLs7uZJ11odmZnmtthTT62ZjIriQRW7ErX07g3Uq+cfdp6cLBNUkeTcc4EGDSq/QSQlic+601n5AZSaKhWeunatvl0i8aDxbsMTpPPoo9Yeg1J7UMWu2IbLBcybJ+5iixb5e4EkJgILF4qHTVqaKLvGjcUDwSztrVUwVw6jT04W09AFF1SM0s8/X2qRLlkiD6GEBPGYGTZMgm4CDcjq319ynZx3nrwZXHqplHiLx/J/SmRQrxjFFnJzJWHSjh0yCZmQIAp8zhxjk0dOjti4O3QITxUeD+XlwIMPSkDVgQMSAfnss8CZZ1a/r+dWqi0RtkrkUa8YJaq55hrxesnLkwnE/HzxIrn7buPtW7WSvNrhVOoAcMcdkuPjwAH5vH69jNIXL65+X6LIK/WcHOCqq8QHvls3cQ1VFB2xKxGnpETMKkbeIPXr2+cNcuiQ9G/k5dKvn7xNRBPbt4u55sCBCrNRejowfrz5A1KJbSI2YieiFkT0LRGtJaLVRHRLqG0q8Y3LVdnv2xsz179IsH17ZT91b5YujawsgfDoo/LG4z0XkJ8P3H+/vOG0bi0KPpg6ogokG9lHH0lujBjDihfbMgC3M3NHACcDuJGI4qgYlWI1DodEZvqaLZKSwlvgNxDMHjhG+cjtZuFC4wdhWZlEyObkSPRq797mx6UYcPCg+Jr27Alce61U7+jfv3L9vignZMXOzDuZeZn7/zwAawGEuVSrEuu8/rpxSoDRoyMvi4ekJPF+MaJevcjKEghVJRTzUFQErFsnXjpKgIweLRM++fkVk0ALFwL33GO3ZAFj6VQUEbUG0AXAzwbfjSSibCLKzs3NtbJbJQbJz/d3bywvlwLGdiW/attWEl35kpIiOWuijXHj/POkG3HokCQvO/544P33oy+5WFRRXi7mF9+6hkVF1uUpjgCWKXYiygDwKYAxzOyXf4+ZpzJzN2bu1rC2laxX/Hj+ef97h1kq0vzyiz0yEUkOmoyMireJjAzxxrntNntkqooePUTXNGggk6ZJSeL7b0RenmQcHDlSMmQqJrhc5hMtZmWxohBLFDsRJUOU+vvM/JkVbSr2UVYmCajatJG6lNdcIwrXSnbuNLb7JiTYmyPl5JPFDfOBB4CbbwbefFMeNKGUgAsnQ4bIb7NyJfDXX8Bhh1XtculJLrZ/f8REjC2Sk8Wm7ktCQmDBDNECM4e0ACAA7wB4OtB9unbtykr0cvHFzE4ns4yhmZOSmA8/nPnAAev6eO65yn14FoeDOTfXun4igcvF/N57zCecwNy6NfOoUcw7dtgjy7p1zF26MKemMhP5n1+AuU4d5p9+ske+mGDlSuasLDmJnouyfn3mP/+0WzIGkM0B6FgrRuw9AFwO4AwiWuFeBljQrmIDGzZIilrvsm5lZTLCe/NN6/rxBNV4T6CmpkqAUIMG1vUTCe68U3LXLFsmo+ZXX5UCI3a8ebRvL3Lk5AADBxqP3ouL7S0CEfV07iwzzuPHS3TaPfdIpFq481hYiAYoKZWYNk3ssHl5/t9dcAHwmYWGtn/+ETvx+vXyOTVVbNrffx9YZsRoYO9eeUD5esI5HKIXJk+2RSwAYkLq3buyaTg1FejVS71kYhVNKaAERevWxl4TKSnWK9v335eRpSdgqbBQFOWFF1rbTzhZudI4bW9RETB/fuTl8eakk4B3363IQJmaKqP4jz/233bbNplU7dtXSv5Nn25vsJgSGgZlDJTaTPfu4va3Zk1l54DkZKntaCVTp1Y2+QDyUNm8WZZYePM9/HBjJ4qEhOiQ/8IL5U1r61YpsFy3rv8233wjmSq93zo++ww46ijJkWO0jxLd6Ig93OTkSLmfnBy7JQkIIkml26+fjERTU4F27eQQrC5uYTYiJDL3OLOKn34CbrxRaop+/33wvt0dOwLHHusf2ORwALfeGrqcVpCQICkGjBR0aSkwdKi/KcnlkvkWO01JSggEMsNq9VIrvGKKipgvvFBm1OvUkb+DBzMXF9stWcAcOMC8Z494fYSDhx5iTkvz99po1Sp8fTIz33GHeOQQyZKeznzTTcG3t3cv85lnihNFejpzw4bMn39unbzhZNEi5owMY+8ZgLlxY7slVLxBBL1iFCPuuguYNUuGQgcOyN+vv46ptHtZWUDDhuFLRTtmDHD00TJhClQU05g2LXx9rl0rwVEFBRXqKz9fAn1WrAiuzfr1xZyxdavkjdq5U0wbsUByctVvK+FOk6yEB7Wxh4upU/0j1QoLgVdekYTfCpxOseHOnAn88IO44F1+eXjdHb/+2tjMU1ws3x1/fPBtN2woSyxxwgliojHKAJmcDFxxRc3b3LhRXGaTk4F//9s4TYMSXlSxhwPPMNCIQ4ciK0uUk5Qko9tIjXDT0qRPX/t+UpJxUrJ4JyEBmDED+Ne/xMXVM3pPShJf/Jq+YD74IPDQQ9JOQoLEJUydKg9sJXKoH3u46NFDCnn60rOnzNbFCczAzz9Ljc42bYCzzjLPVxIN7NolXj++L1NpacAff9TewJ3CQvGEWbhQRvD9+4uyr4lJbOVK4JRT/M+twyFphGPtbSYaCdSPXUfs4eL554HTT5d3/NJSeS9NTQWee85uySyjqEgUwNKl4kWRlCT25h9/BJpFaeLmJk2Ad94RE0OS++ovK5No0dqq1AF5sF12mSzBMm2acfWpxER5K4jGDJnxiir2cNGlC/Dbb1IVeflyMWbeemtgSbRjhIceApYsqewqV1Agr90LFtgnV3UMHizunLNnyxvH2WdQpcBCAAAgAElEQVRL8iwlNMrLjSdimbXQR6RRU4wSNM2bSzk5X5KTJYI0Kyv8MixaJCl1V66USdcJE8Q3PdJFpRUgO1vSFfgGnTkcEnDWpIk9csUTmlJAqRKXK/SCC1WFnIc7wAgQu36/fmLjLyqSsPg77pCan0rk6dZNUh2npYn5JTlZ/n/mGVXqkUYVey3jzz8lrbQnqvSSS4C//w6urQsvNM6T4nJJXvNXXw1vtZ577/WfqPPkG4+hmghxxZQp8qC9917Jab9qlSSVUyKLmmLCxeLFcmVv2CCJ++++W+LPbSQvDzjiCFHkHptncrKkDPj995oHo+zbJ4mmdu829uJMSRHzSNOmwPDhktrW6EEQLC1ayCjdl4wMmdY48kjr+lKUaEBNMXYycybQp4/Mzm3cKDUUTzop+NBGi3jvPRnRek9klZZKxGQwk5316smI7KWX5Jnl+2AoKQF27BCTyZ13ypuClZNo7dsbry8vl4dJbebrryWqNyVFHnAffmi3REokUcVuNcxS5dzbFuByyZB23Dj75AKwerVx3FRZWUVO9JricADDhslkZVVKu6BAFPycOcH1Y8S99/oXc3Y6JQtltJSyKyqSYOOzzhJXQqPQBquZNUtS765ZIw/uTZukvKGVhVKU6EYVu9UcPCjDVCOWLImsLD506WKs8BITgWOOCa3to46q3hPl0CHg229D68ebnj0lb/gRR8jbQlYWMHas2NijgaIiCdi57TZ5oH34oUz2hjuUYfx447mHiRPDO+ehRA+q2K3GUy7eiEaNIirK/v1S4au4WD4PGSLKzzsyNCVFlPLpp4fW14QJ1YfkOxzW5w0ZOFCsXYWFcrz33Rc9ka9vvy3RrB73P2b5f9w4yQsXLjZuNF6/Z0/FtaDEN6rYrSYpSd57fbVcenrETDFFRRJZ2aSJzNs2aAA8+aSIsHSpFF5ISwMyM4Err5RRdKh+3yedJFMJLVqYT5AmJQGXXhpaP2akpESf7/pnn/n7dAMi6+LF1ve3YgXw+efm8wv16oknlBL/WBJ5SkRnA3gGQCKA15j5ESvajVkef1xcUKZNk7u4tFTex6+9NiLd33gj8MknMjrzjNDuvluU7kUXGZdGs4JzzpER9N9/y6hxyBAJVCIST5Xp02tXvpAGDeTYfc0fLpdUM7KKf/6R6NlVq+ThWVgoby3l5RXbOJ1SkznaHn5KeAjZ3ZGIEgH8AaAfgG0AlgIYysxrzPapFe6OgNxx27dLdqwIzebl54tC8a2IA0hK2uXLIyIGAFFonhJ7xx4bmdzeixdLNsGDB+UhNnhwZcvYli1S5LlpU+DUU8Or6H76STyBvEftRPKA3bzZuvPx73+LF4x3npaUFDF95eXJ9XDPPfLAV8Ue20QyCdhJADYy85/ujqcBGATAVLHXGg47LOJJSPbvN795zeZ0wwWRuNzVlNJSMWN8840kE7v66sBS7Dz+eEXQErPsP3WqTFwmJoqz0htvVBSXaNpUCk63aFFzGQOhRw/JpzNhgihaZrkc5syxTqkXFPgrdUA+N20qb0y+ZfuU+McKxd4MwFavz9sAdPfdiIhGAhgJAC2tLp6p/J8mTeTlwNcrgkgUTaRhFuX5xRdi0x8+HOjQwXz7wkLxdlm/XrxoUlJkfuCTTySTpBl79gCTJlWeHMzPl9H555/LG8zbb8tfz9vMn39K9Owvv1hzrN5s2SLVms47T+YxPEWhu3e39s3F6M3MQ16eKvVaSyD186paAFwEsat7Pl8O4Lmq9qkVNU9t5N13paanp/hbQgJzZibzmjWRlaO8XMq8pqeLHElJUuP08ceZR4yQ2qCtWzM/8ghzaans88QTxnVQ69Wr2MaIjz6SYzSq2zlkCPOJJxp/53Awb9li3TGXlEh/3qVuzzmHuaDAuj58adnS/7gSE5kvvzx8fYZMaSnzwYPhLW4bhyCCNU+3AfB+mW0OIMIv/Yo3w4ZJ/uvevcWEMWSIeMNEOqPBrFkSfOsJiiorkxH52LGSEz03F/jrL0naNXSobPPhh8Z5XkpLJYOjGZmZxiaohAQZKR88aLxfUpKMbK3i/vuBL7+sXOp23jxJThYO7rhDUjp4k5goHjAPPxyePkOirEy8w+rWFSFbthS7m2ItgWj/qhaIOedPAG0ApABYCeDoqvbREXvtYNgw41Gy0ZKWxrxuHXPPnsbfp6czr1pl3ldxsYzqjdr99VfmiROZU1P9v2/YkLmszLpjrl/f/PisHpyuXWv8dpOUxDxnjrV9Wcbo0ZVfJwH5vGCB3ZLFBIjUiJ2ZywCMBvANgLUApjPz6lDbVaKPbdskXL9tW4morG6g5XAE7oWRlCR+2Dfc4O9ARCQTgZ06me+fkiKTkg0aSBBWVpb0//jjUuPkjjskf7wnBUFSkvz/1lvWBjSZlbQtKqrsfmgFs2cbp3FwuaSKVdSRnw+8/rq/c39BgUSWKZZhiR87M88CMMuKtpTogRnYuVOCmYqKJCXB/v3yNr15swRBrV8vXh9GXHUV8MEHxkE6Rn21aiWTi99+C7z7rijchATpf8aM6h8SXbuK589334mC7d1b3vgB+btypUygzp0rfY0aJVG3VtKzp0wWs48Xcdeu5gHJweJ0Gj+UkpIkbiBUvvhCJq737gXOPVcejg0ahNDgrl3mT9FNm0JoWPEjkGG91YuaYqKf779nbttWJv9SUmSCLiXF2MRw8KB5O/fdJ204nTK56XT6mw+Sk5k7d65sqvjjD+bXX2eeOVMmJCOBy8W8bRvz3r3Bt7F6NXNWVsW5Sk5mzshg/uUX6+T0kJtrbIpJS2POyQmt7cmTKya9ATme5s2Z9+0LodGiIjkZvgITMZ97bmgC1xIQoClGFXucsXYt85IlzIWFwbexeXPlm7qqJStL+quKLVuYX32V+cMPmfPymBcvZu7QQZRFSgrzwIGipOxk0SLmI4+seJD16sW8fXtwbW3Zwnz77TJfMHo086ZNlopaia++kt8qK0senGlpzB98EFqbf/8t58HIg+jBB0MUeMoU/4vL6WRevjzEhmsHqthrGTk5Mup1Oitu8nffDa6tO+6QkWYgit3hCH50mJtb9WjfQ3k588MPy0Snw8HctSvzsmXB9WnE5s3+iiwxkbldO+k72snLY/70U+bp05n37w+9vblzxVXT6Pc+7bQQG3e5mN94Q56iGRnyBA3H60ycooq9FuFyMbdvL8rIdyCUnV3z9s4/PzClnpLC3Lev9cfjy4AB/n0TibkoVBYtMjZnAKJ3vv029D6qYudOiS+oykc/0vz+u7/jiuecX3qp3dLVbgJV7JrdMQ7IzpaUNL5eF0VFwPPP17y9Xr38C1gAMimXlSUTc6mpQN++4Uso5mHtWuC///VfzyyTt6FQWCjRrFXVR92yJbQ+zNi7V85f69aSGbNx4/Cfy0A55hiJDvad7E1LA8aMsUcmpWaoYo8D9uwxDlN3uYxrglbHiBGS08Q7HN3plMLXe/dKsNPWrZKjxON1YiXMkhqAWRJpmVVm+uuv0FwIZ82quupTebmkPQ4H55wDfP+9HOehQ1I/9sor5SEdDcyaJQ8ch0OCv+rUkeLk4TofirWoYo8Dunf3TwIFiDI+99yat5eVJWXsrrlG/MfbtZMoxrffFmXfoUP40u9+8IEk5XI6xbWuqrzlSUmh5V05eNBcsScmAgMGhCdad9064LffJJrWm6Ii4KmnrO8vGBo3lofq+vXADz9IlHC4cukr1qOKPQ5o0ECKRXsH9jgckhlxxIjg2mzcGHjxRfEL/+MP4JZbwl+Z6MsvJWX99u2icPftq0hpb8QVV4SWhrZPH+MRP5GMnqdNC77tqtixw/iYXC55C4kmWrYEjjtOk4lVi8slrzkjR0rthd9/t1eeQAzxVi86eRoeZs5k7tdPvEYeeoj5wAG7JaoZxxxjPImZmenvpdGrl7hFh8qkSeJ9R8T/T13Qv394vWGqciecPDl8/SphorycedCgCh/9xESZkX/pJcu7QoCTpyEX2giGWlNoQ6kRmZnGIfnJyWLbX7NGTAP/+peMJK1i4ULgtdckQnbIEEnlG+63k7vvFrOLJ0FacrLkxFq1yjy6s7xc7PL790uEa0hRoIp1zJghdirPj+nB4ZDXz3r1LOsqkoU2FMUSOnQwnjysU0c8cU4+WRar6d1blkhy//1SVcoTsj9wIDBxormyXr0a6NdPHnxEMul6333A+PGRlVsx4OOP/ZU6IE/refOAiy+OuEiq2JWoYcoUYNCgyrllnE7gwQcjU1YvkhDJ/R7IPe9ySU3TnTsrr7//fknGdvrp4ZFRCRCnUy5Q35l4Iv+i9hEizm4XJZbp21eqHR13nPjJH3GElLa77jq7JZMJ5FmzgJycyPe9ZInkdvelsBB46aXIy6P4MGKEmF18IZLXLBvQEbsSVZx5pizRQn4+cMEFkgY3JUVMIIMGSfbJSHmKHDxo7P3DLJ5Dis107y6TJpMny0Xh+bFmzDBW+BFAR+yKUgU33SR+3IWFFRWRZswQs1GkOPVUf593QNxbbTDfKkbceacU0X3hBeDNNyVFsY02MvWKURQTyspk0ta7QLaHxo3l3o0Ur7wi7tFFRWLKTU+XwiM//CBmK6V2oF4xihIiZWWyGGFlndRAuO46Kdbx8sviRfPvf4trplnwllK7UcWuKCY4HJIQy7eINpFErUaabt3E315RqiMkxU5EjwE4F0AJgE0ArmLm/VYIpih2sG0b8NFH4nI5YICYQPr2FXNMaamYPdLSpJaqokQroY7Y5wKYwMxlRPQfABMAaMiEEpNMmyaeay6XmGAeeUTy0axYATz3nCTu6t4duPlmSY6mKNFKSIqdmed4fVwCYHBo4iiKPRw4IErdOzd7QYG4NV58MfD00/bJpig1xUp3xxEAZpt9SUQjiSibiLJzc3Mt7FZRQmfmTOP8MPn5wPvvR14eRQmFakfsRDQPQBODr+5i5i/d29wFoAyA6S3AzFMBTAXE3TEoaRXFYr77Dhg1Sio1GXn+EkUmnQGzyPLJJ2LDHzZMInAVJRiqVezM3Leq74loOIBzAPRhO5ziFSVIfv9dJki9c9P44lGy4YQZuPpqYPp0kYVI4lweeAC4/fbw9q3EJyGNRYjobMhk6XnMXMXtoSg1g1kC+I44QoJxTjlFKvpYySOPSMCPEUlJotSvvz78AYQ//CBKPT9fjtvlElv/pEmS9VVRakqoL5nPA8gEMJeIVhDRyxbIpAQKs7y7n3GGFKh84omqh58xxFNPAaNHS5R2QYEkwjrzTOCXX6zrY80a49J4DocEBGVnyykNN59+avyzJSYCs01nrRTFnFC9Yo60ShAlCG65BXjjjYpc0KtWAe+9J1owhuPMS0sl17ivsisokFHsnDkyyn3qKUllO3CgPARqWli7a1cxx/iWx2OWfE6RKmSRliZ2fF85iGzLIaXEOJoELFbJyZGy8d4J/gsLgQ0bJPF/DLNrl3ko/8qVEjR09tmS4nfJEuChh2Si8Z9/atbPnXf6p8t2OsXeHcnqRJdfbl4DNZhi5Iqiij1W+eEHMQT7kp8f8+/vDRuaf9e2rUwoeo/mi4qA3buBZ5+tWT9HHil2+z59RME3bSpvCs89F5zcwXL00WLvdzgk6VhmpjxgPv5YqkcpSk1RxR6rNGpknKQ7ORk4/PDIy2MhDoeYVpzOyuvT0oChQ439zYuLJZ1uTencWaqXFRQAO3YAY8faU63p5puBzZvlofLyy2JiGjAg8nIo8YEq9ljljDNkaOer3JOTgZEj7ZHJQh5+WJRsZqYo8hYtJAq0f3/j3OSApNKNZZo0Aa68UuoiZ2XZLY0Sy6hij1WSkoAFC8SekJ4umqBuXeCDD4B27eyWLmQSE8Ussn+/hPvn5AAXXiiH1qmTvxXK6QRuvdUeWSOFxwW0Uyd5Ybv4YmDjRrulUqIRLbQR6zBLCfuCAqBLl9DqteXnA/PnS5t9+ojBNwrxeMKsXy+HW1IiBa9vu81euZhlCZcp5667gGeeqZgvT0iQN5qVK4FWrcLTpxJdBFpoQ0fssQ6RJA0/6aTQlPrMmWLLuPxySWnYuDHw2WfWyWkhTZsCy5YBS5cCX34pE6d2KvXiYvE8zcyUN4kTTxTZrOTAAeDJJys7Qblc8jx/7DFr+1JiHy20oQC5ucAll/g7jg8bJu/6UToZ26mT3RIIQ4cC//1vRWbI7GyZAlmxQiJnrWDtWglN8I2ULS0VBylF8UZH7IpErxrhckmsu40sXizeIW3bAhddJAFF0UROjniXeqf7BUQBP/mkdf20aGFce5UoLqZUFIvREbsCHDpk7GpSWhr54p5ezJ4NDB5c8SKRkwPMmiVZELtVa2WMDBs2GI+ky8pkxF4deXkVwcKdOklOeCM//mbNJKXCnDmV+0pLA8aNC+0YlPhDR+yKhHEa2ecdDludqUePrmwd8tiUoynjYYcOxiPp5GSxtVfFzp2y/x13AO+8I15ARx4plZqM+OAD8QxKTZWf5vDDgQ8/lOkVRfFGFbsCHHsscNVV4jbpIT1djMddu0ZMDGaxJa9dKwo8J8d4O6snJkOheXPgggv8UxM4HNW7X44bB+zZUzEhWlgIHDwoKQ2MSE+X0f3ff0tytG3bgPPOC/0YlPhD3R0VgVlcHd95R/4fNkze/Y2iW8PAr7+K2WXPHumyfn2Z0/W1XQNib96yxX99Xp7kmWnRIrLJszxJy156SWTo0UPSGxx7bNX71a0r3i6+JCWJ/773c1ZRgMDdHVWxK7Zz8CDQsqW/kktJkUAlb+XudIp736hRFetKSyUk/623KgKX7roLGD8+Ys+loGjcWB5kviQnywMihhN0KmFC/diVmOHjj42zOXp8wh0O8RFPSxN/9RtuqLzd+PHA22/LpOKhQ7I88ICsi2auvtr/zSI5WYKvVKkroaCKXbGdXbuMTS6FhUC/fvL9kiVimnnggcqj8NJSSePru39BgeSbiWbuuUfMNk6nmF0yMoCjjgKmTrVbMiXWUXdHxXZOO02U26FDldc7nfJdnTrm6Wvz881zt+/ebY18CxbIQ2LzZuDUU0UhW+E77nBIZslly8QTpm1boGfP6DYfKbGBKnbFdk4/HTj5ZGDRogr3RqdT6pz26lX1vnXqiN+3UW3Q6twNA+H99yVZprcv/ZdfSom+Dh1Cbx8ATjhBFkWxCktMMUQ0loiYiCJYd0aJF4iAr78G/vMfyWPWpYsUnvj66+pHr0SSGMs7dzuRmDYefdR4n/nz5U2gcWOgb18x8xhRXg6MGVPZl768XN4SJk2q2TH6kp8PTJgg7pLNmokvu42xYEqcEbJXDBG1APAagA4AujLz3ur2Ua8YxWoWLgTuvx/YtElc7++7z9jd8IsvJN+5r6fN7Nny5uDNtm1i8zay/zduLLb/YHC55G3kt98qokhTU4H27cXt06gwlqIAkfWKeQrAOACR95tUFDe9e4stPCdHklKa+ZDfeqvxROvYsf7b1q0rStiIJk2Cl3XBAmDNmsqpAYqLJeho1qzg21UUDyEpdiI6D8B2Zl5pkTyKEjaKi40DmwDjMP6MDGDIEOOC1xMnBi9HdrZ/bhlAJo+jKapWiV2qfekjonkAjMYndwGYCODMQDoiopEARgJAy5YtayCiolhDSooo64MH/b8zG4G//LK4VH76qezvcgGTJ0v1omBp3VoeFr429fR0oE2b4NtVFA9B29iJ6FgA8wF4ppaaA9gB4CRmrtL6qDZ2xS4eeEAmZr0nRJ1O4OmngWuvNd9v3z5J2tW2rf8IvqYUFYlyz82tMPUQAfXqAX/9FbWFq5QoIOw2dmb+nZkbMXNrZm4NYBuAE6pT6opiJ3fdJZ4u6emi0DMzgXvvBa65pur96tUDjj46dKUOiP/6Tz9VFL1KSZEJ3x9/VKWuWINluWKI6C8A3dQrRokFiopkxNy4sShWu/jnH8m5Vq+efTIosUOgI3bLHKvco3ZFiQkcDskCaTeHHWa3BEo8oh6zih979sik4S+/AJ07AzfeKEE08ci+fUBCgrg2Kkq8oEnAlEps3Cih8lOmSOTnE08AHTsGVuYtllizRsrrNW0q5pjTTpNcMIoSD6hiVyoxZowUefD4WZeUiFve9dfbK5eVHDwoybaWLZPjKymRotk9esj/ihLrqGKPMkpKpBJP9+4yinzrLclPEikWLJDJPF+WLjWudx2LfPSRBCt5H6fLJQFCM2bYJ5eiWIXa2C2mvBx4913g1VdFEV5xhfhHB1I4weWSutI//1zhZ71ihYSZT58eXrk9pKUZ50ZJTpZqRvHAn39W1Bn1pqjIvM6qosQSOmK3mMsuA0aPlhS0S5dKdZ9+/QIbdc+bJ/t4B8/k54ut+9dfwyezN9de6++rnZoqx5UQJ1dLt27G/uKpqZo+V4kP4uRWjQ5WrAC++qryaLCgAFi+HPjmm+r3X7DAv9gEIIUkvvvOOjmr4r77JJVtWhqQlSVBPCefLKlx44XzzgNatar8FuVwAMccI8nEFCXWUcVuId9/bzwyP3RIlHZ1NG3qXwMTkACaRo1Cly8QUlPFzrx8OfDmm2IWWrgwviIik5Ml8nP0aDnnzZoBt98uedq1epESD6iN3UIaNRIlXFxceb3DIQqkOoYOlZB3XxITgQsusEbGQGnfXpZ4pU4d4PHHZVGUeENH7BYyaJBxkYTERGDYsOr3b9RI7OmNGkkOk4wMiY6cP19ym9SEbdvERfGII8S75ssva7a/oiixi47YLSQtDfj2W1Hwe/dWlGj76CMJggmEXr2AHTuAlSvlIXHssTU3D+zYARx/PHDggNjn//xTTCv33y8mB0VR4hvLkoDVhHhPAsYMrF4t7o6dO0feTXDMGODFF/39ztPTgd27az76VxQlOohkaTzFByLxsOjSxR7f7/nzjYOJEhOBtWsjL4+iKJFFFXscYpa1sKQktFqdiqLEBqrY45Dx48X/3JuUFLHfN29uvh+zefFmRVFiB1XscUivXsALL4hLX0aG+Kb36yeTuEaUlgJ33inbJyUBxx0H/PBDZGVWFMU6dPI0jikpATZtAho0ABo2NN9uxAhg2rTKOWKcTmDJEvHKURQlOtDJUwUpKZJLvSqlvncv8OGH/om/ioqAhx8232/PHhnld+wofvLz5lkjs6IooRM7fuybNwPPPgv8/rskLxk9WmcCLWDzZnkAePKve3C55FQbsXOneP3s21exrl8/Gfm//nr4ZFUUJTBCHrET0U1EtJ6IVhPRo1YI5YenRtsLL4gv3+OPA506SbmfGGfHDilD98orwK5dke//iCOMi0skJppnOnzwwcpK3cMbb0huGUVR7CUkxU5E/wIwCEBnZj4aQHgyb4wcKZm0PM7ZxcUSVhnjYZQvvyyK9bbbZGnTRgprRJJ69YCrrvL3onE4gAkTjPf54gvz9p54wjrZFEUJjlBH7DcAeISZiwGAmfeELpIPhYXAqlX+610uGb3HKH/+Cdx6q5hACgslvW9REXDDDcD27ZGV5bnnJPlYw4aS+fDUUyU1QseOxttXlekxLy88MiqKEjihKvajAPQkop+J6DsiOtFsQyIaSUTZRJSdm5sbeA/JycaZtYCYziX7ySfmxTc+/TSysiQmAhMnyoRoSYmktD3R9JeUSVMjEhKASy8Nj4yKogROtYqdiOYR0SqDZRBk8vUwACcDuAPAdCLjlFXMPJWZuzFzt4ZVuWn4kpQEDBniX1suLQ0YNSrwdqKMsjLjYCBm+S6aueoqmSz1JiFBEo9dcok9MimKUkG1ip2Z+zLzMQbLlwC2AfiMhV8AuAA0sFzK558Xn7q0NImicTiAc881NwLHAIMGiTeKL0TyXbQzZw4wcyZwxhny00ydKuUAjY5JUZTIEqq74xcAzgCwkIiOApACYG/IUvmSkSGO0uvWiSfMMccArVtb3k0kOfpoYOxYcfDxeKWkpAB33y0TqrHAwIGyKIoSXYQUeUpEKQDeAHA8gBIAY5m52iJwGnlawcqVwMcfy0j9kkvkmaUoimJEoJGnIY3YmbkEQAC1gRQzjjtOFkVRFKvQlAKKoihxRuykFFBsweWSidJVq4B27cSmbuZ9qihKdKC3qGLK/v3A6adLPpniYnFGatBAvF80TY+iRC9qilFMGT8eWL++IptDXh6wdatkeFAUJXpRxa6YMm2af4KwsjJg9uzoD6JSlNqMKnbFFLMyecyyKIoSnahiV0y54AJJ1eNNYqJEm/quVxQlelDFrpjyxBNS/NqTay0jQyZPp061Vy5FUapGvWIUUxo2BNauBT7/XCJk27cHLr7YP3e7oijRhSp2pUpSUyW55pAhdkuiKEqgqClGURQlzlDFriiKEmeoYlcURYkzVLEriqLEGarYFUVR4gxV7IqiKHGGKnYzNmwARowAOncGhg4FfvvNbokURVECQv3YjVixAujZEygsBMrLgdWrgRkzgFmzgF697JZOURSlSkIasRPR8US0hIhWEFE2EZ1klWC2cuutkqu2vFw+u1xAQQEwapS9cimKogRAqKaYRwHcx8zHA7jH/Tn2WbLEeP26dVJxQlEUJYoJVbEzgCz3/3UA7AixvejgsMOM1zscmtZQUZSoJ1TFPgbAY0S0FcDjACaELlIUMGaMf6artDQpHZSg882KokQ31U6eEtE8AEYVLu8C0AfArcz8KRFdDOB1AH1N2hkJYCQAtGzZMmiBI8LYscCWLcBrr8kovahIkpP/5z92S6YoilItxCGUwiGiAwDqMjMTEQE4wMxZ1e3XrVs3zs7ODrrfiLFvn7g9tmkDNGpktzSKotRyiOhXZu5W3Xah2hV2APD4/50BYEOI7UUX9eoB3burUlcUJaYI1Y/9WgDPEFESgCK4TS2KoiiKfYSk2Jn5RwBdLZJFURRFsQB18VAURYkzVLEriqLEGarYFUVR4oyQ3B2D7pQoF0BOxDu2hgYA9tothA3ocdceavOEDlwAAAK/SURBVOMxA7Fx3K2YuWF1G9mi2GMZIsoOxI803tDjrj3UxmMG4uu41RSjKIoSZ6hiVxRFiTNUsdecqXYLYBN63LWH2njMQBwdt9rYFUVR4gwdsSuKosQZqtgVRVHiDFXsIUBEY4mIiaiB3bJEAiJ6jIjWEdFvRPQ5EdW1W6ZwQURnE9F6ItpIRHfaLU8kIKIWRPQtEa0lotVEdIvdMkUSIkokouVENNNuWUJFFXuQEFELAP0AbLFblggyF8AxzNwZwB+Il4pZPhBRIoAXAPQH0AnAUCLqZK9UEaEMwO3M3BHAyQBurCXH7eEWAGvtFsIKVLEHz1MAxkHqvtYKmHkOM5e5Py4B0NxOecLISQA2MvOfzFwCYBqAQTbLFHaYeSczL3P/nwdRcs3slSoyEFFzAAMBvGa3LFagij0IiOg8ANuZeaXdstjICACz7RYiTDQDsNXr8zbUEgXngYhaA+gC4Gd7JYkYT0MGai67BbGCUAttxC3V1HqdCODMyEoUGao6bmb+0r3NXZDX9vcjKVsEIYN1tebNjIgyAHwKYAwzH7RbnnBDROcA2MPMvxJRb7vlsQJV7CYws1lR7mMBtAGwUsq8ojmAZUR0EjPviqCIYcHsuD0Q0XAA5wDow/EbBLENQAuvz80hZSDjHiJKhij195n5M7vliRA9AJxHRAMAOABkEdF7zDzMZrmCRgOUQoSI/gLQjZmjPStcyBDR2QCeBNCLmXPtlidcuEs9/gGgD4DtAJYCuJSZV9sqWJhxF6R/G8A+Zh5jtzx24B6xj2Xmc+yWJRTUxq7UhOcBZAKYS0QriOhluwUKB+4J4tEAvoFMIE6Pd6XupgeAywGc4f59V7hHsUqMoSN2RVGUOENH7IqiKHGGKnZFUZQ4QxW7oihKnKGKXVEUJc5Qxa4oihJnqGJXFEWJM1SxK4qixBn/A8/YAUMoEmizAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"## with different number of neighbors, results are different\n", | |
"\n", | |
"lof = LocalOutlierFactor(n_neighbors=4)\n", | |
"outliers = lof.fit_predict(x)\n", | |
"plt.scatter(x[:,0], x[:,1], c = np.array([\"red\", \"blue\"])[np.array(np.floor((outliers + 1) / 2), dtype = \"int\")])\n", | |
"plt.title(\"Local outliers with n = 4, the red ones are the outliers\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 225, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"Text(0.5, 1.0, 'Observed discrete data, A and B are independent Poisson distributed')" | |
] | |
}, | |
"execution_count": 225, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 2 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# probability density makes sense with discrete distributions as well\n", | |
"# here we use the density of a poisson distribution\n", | |
"\n", | |
"import seaborn as sns\n", | |
"\n", | |
"dista = stats.poisson(4)\n", | |
"distb = stats.poisson(2)\n", | |
"\n", | |
"df = pd.DataFrame({\"A\": dista.rvs(100), \"B\": distb.rvs(100)})\n", | |
"\n", | |
"ix = pd.MultiIndex.from_product([range(10), range(10)], names = [\"A\", \"B\"])\n", | |
"\n", | |
"df[\"likeli_a\"] = dista.logpmf(df.A)\n", | |
"df[\"likeli_b\"] = distb.logpmf(df.B)\n", | |
"\n", | |
"sns.heatmap(df.groupby([\"A\", \"B\"]).size().reindex(ix).fillna(0).astype(int).unstack(1), annot=True)\n", | |
"\n", | |
"plt.title(\"Observed discrete data, A and B are independent Poisson distributed\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 286, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"Text(0.5, 1.0, 'Combined likelihood for independent Poisson distribution, dark is an anomaly')" | |
] | |
}, | |
"execution_count": 286, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 2 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"## this is the likelihood of a point, which is equivalent to the (log)probability of a particular outcome of A and B\n", | |
"\n", | |
"df = pd.DataFrame(index = ix).reset_index()\n", | |
"\n", | |
"df[\"likelihood\"] = dista.logpmf(df.A) + distb.logpmf(df.B)\n", | |
"\n", | |
"sns.heatmap(df.set_index([\"A\", \"B\"]).unstack(1).likelihood)\n", | |
"\n", | |
"plt.title(\"Combined likelihood for independent Poisson distribution, dark is an anomaly\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 287, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"Text(0.5, 1.0, 'How to determine which points are anomalies?')" | |
] | |
}, | |
"execution_count": 287, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"## now if there are multiple clusters, the above doesnt really work because we cannot really write it as a \n", | |
"\n", | |
"cov = np.array([[4, 2], [2, 10]])\n", | |
"x = stats.multivariate_normal(mean = np.array([6, 8]), cov = cov).rvs(100)\n", | |
"\n", | |
"cov = np.array([[5, 2], [2, 18]])\n", | |
"y = stats.multivariate_normal(mean = np.array([-5, -10]), cov = cov).rvs(100)\n", | |
"\n", | |
"\n", | |
"df = pd.DataFrame(np.vstack([x, y]), columns = [\"A\", \"B\"])\n", | |
"\n", | |
"df.plot.scatter(\"A\", \"B\")\n", | |
"plt.title(\"How to determine which points are anomalies?\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 288, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlIAAAD7CAYAAAChU3p8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzsnXmcHFW1+L+nqnqZ7tkymewrSdgCyBYWETQRAogsbgi4AT5F8cdT38PlPXFHxB314QIqgk8FQR6yiLKIEWUPhDUQliRkn2Qmmb3Xqvv7o2pmenq6Z3qmZ8nMnO/nM0lX3Vv3nlt1q+6pc0+dK8YYFEVRFEVRlMFjjbUAiqIoiqIo4xVVpBRFURRFUYaIKlKKoiiKoihDRBUpRVEURVGUIaKKlKIoiqIoyhBRRUpRFEVRFGWIjCtFSkRWichHiqR9VUR+O9oy5clwgYj8axD5N4rISSMoz3wRaRcRe6TqGAoi8gUR+eUo1bVXnoMuhrvfBm1dNAzlXC8i3xgOmYYLETlBRNaNtRyFEJHlIrKln3QjIkuC3z8XkS+VctwAdXY/P3LvKRFZGNTnDKXcQcpQ9JmslEZufxjmcl8QkeXDXe5EYziedQMqUvmDvYicKyJ7ROQt5VSsjDzGmE3GmEpjjAtj89ArNFAYY75pjBkROfL7a/45mOgEbV0/mGMG+wIwWuQqHwDGmH8aY/YfobpGTXE0xnzcGHP5MJc5YveUMnwUutdGoj8E5R5kjFk13OUqfRmURUpEzgd+ArzdGPOPQR4rIjKuLGCKsrcyGtYGRRkP6NiijDUldz4RuQj4PnCKMebhnP3HisjDItIsIs/kmhIDC8gVIvIQ0AksCvZdLiIPiUibiNwrIvWllFcCURH5Q1DuUyJyaE65/yUirwVpa0XknTlpS0TkHyLSIiKNIvKHnLQDROQ+EdktIutE5L05aVNF5A4RaRWRx4HFA5zDD4rI6yLSJCKX5aVZOTI2icjNIlIXpHWZ6s8XkU2BjJflHHu0iKwO5GgQkR/kHeeIyBXACcDV4k//XC0iPxGR7+fJcaeIfLqI/P2di9OC89omIltF5DMiEgf+AswO6mwXkdmSM52VI+OFIrI5sHZ+XESOEpFng35wdU49i0XkgeAcNYrI70SkNkj7X2A+cGdQ1+ckb5ojqP+OoA2vishHc8r+anDefxO04wURWdbfNc07P2eJyNPBdXhNRE4dqM4CZZwZ1Nss/r1yYE7aRhH5vIg8C3RIAWVKek8h9bkmBfIfCPwceGNwzppzkqeIyJ+D4x8TkcU5xxXtCwXqqBGRX4nI9kCOb0gw1SpF7j0ReTA4/JlArnMkz7oZnI/PBv2kI6hjhoj8JZD5fhGZkpP/FhHZEdT1oIgcFOy/CHg/8LmgrjtzrtutIrJLRDaIyCdzyqoQ34q1R0TWAkcVa3+B81HU+iUinwyu2dxg+/SgTzWL/1x8Q5HjCk0Rv18KPy8iIvJDEdkW/P1QRCI56R8N+unuoN/OzklbKSIvBefwakAG0e5VwbV/uOs8i/8M/V1wzzwhIgtz8h8X7GsJ/j8ur6z8saVoPytyvore6yVc+xuCa/+i+M+Z3H5ZcKyRIvdabn8Iyjs9pywnuH5HBNslj4/Se+q34BhR4JgpInJX0O49we+5eee96Pg9nGXJwM/Csu/9AjI/LyJn5GyHgvN/WLHzDIAxpt8/YCNwK9AAHJqXNgdoAk7DV8pWBtvTgvRVwCbgIMABQsG+14D9gIpg+1uDKO8jReT8KpAB3hPU8xlgAxAK0s8GZgflngN0ALOCtBuBy4K0KHB8sD8ObAYuDOQ/AmgEDgrSbwJuDvIdDGwF/lVEvqVAO/BmIAL8AMgCJwXpnwYeBeYG6dcANwZpCwED/CI4Z4cCKeDAIP0R4IPB70rg2LzjnELnDzga2AZYwXY9/kNpRgH5BzoX24ETgt9TgCOC38uBLQWu1W/zZPx5cO5PBpLAn4DpQZ/YCbwlyL8k6BcRYBrwIPDDvP56Us52/jn4B/DToK7DgF3AiTlyJfH7nw1cCTw60D2Scy5bAtmsQO4DSqyz61zsh98vV+L34c8BrwLhnLY9DcwDKorIYYAl/V2TAsdcQF6/Ba4HdgftcoDfATeV0hcKlP8n/P4cD67p48DH+rv38ttSqC8F5+NRYEZOP3kKODzoHw8AX8nJ/2GgKkj7IfB0Xnu/kbNtAU8CXwbCwCJgPf6LJMC3gH8CdcH1eJ68ft7PdemuK7dNwJcC+bued0cEbToGvz+eH7Q5kt/XKXxPFXtefD04b9Px76GHgcuDtLcG1/KI4Dz9D/BgzvOhlZ5n7H/gP8MKPpMLnINV+P15MVADrAVeBk7C70e/AX4d5K0D9gAfDNLOC7an9jO2FO1nRcaLgvd6idf+H/j31FzgWXr3y/7GmgsofK919YcvA7/LSXs78FLwu9/xsUAbc/tHwTGiwDFTgXcDMfx75RbgT3nXsOD4PZxlUdqzcNjv/aCeP+SknQU8N2DfLqHzb8S/eW4nGHBz0j4P/G/evnuA83NO1NcL3ExfzNn+BPDXQZTXnyL1aM62Rc5AUiD/08BZwe/fANcCc/PynAP8M2/fNcBX8G++DMFgGaR9k+KK1JcJBqJgOw6k6enoLxIMrsH2rKB8h54H49yc9MeBc4PfDwJfA+rz6uw6rqAilVPvyuD3JcDdReQvei6C35uAjwHVeXmWU5oiNScnvQk4J2f7VuDTReR6B7Amr78WVKTwBzwXqMpJvxK4Pkeu+3PSlgKJge6RnHNxVYH9pdTZdS6+BNyc14e3Astz2vbhAeTIHbALXpMCx1xA4Yf7L3O2T6Pngd5vX8jbPwN/EK/I2Xce8Pf+7r38thTqS8H5eH9eP/lZzva/k/Pgziu7Nii/Jqe9uYrUMcCmvGP+m56Bfj1wak7aRQxdkdqK/2L1ry55grSfESg4OfvW0fNSsZH+Faliz4vXgNNy0k4BNga/fwV8JyetEv85tBD4EL2fsQJsYXCK1GU5298H/pKzfQbBAIevQD2ed/wjwAU5ZX09J63fflZAlq9S5F4v8dqfkpP2kQGufe5YcwH9K1JLgDYgFmz/Dvhy8Lvf8bFAvbn9o+AYUcI1OwzYk3cNC47fw1kWpT0Lh/3ex1eA2wiemcAfgc8N1LZSp/Y+jq8h/lJEck25C4CzA9Nbc2CqPB5fCehic4HyduT87sS/WUstrz+66zLGePg3+WwAEfmQ9JjIm/EtSF1mxM/hPxQeD0yJH86R55g8ed4PzMR/k3Py2vd6P7LNzpOvA19h6GIBcFtOPS/iD8AzcvIUO2//hn99XgpM4KdTOjcAHwh+fwD43yL5+jsX4L95nAa8Lv5UzRsHIQP4Fs8uEgW2KwFEZLqI3BSY7luB39JzHQdiNrDbGNOWs+91/DeaLvLPcVRK80eahz9ADaXO3LzdfSjow5vz8ha6n4pR7jXp7z7try/ksgD/jXJ7Tt5r8C0GUPzeK5VS+40tIt8Kplxa8R/EULzvLMCfks5t4xfouR973c/0f+8PRC2+InalMaYlT4ZL82SYF9RdCsWuX69+FvyeXSjNGNOO/5yaQ99nmGFw/RFKvF4FZOySs9i9MFA/K0Sxe32w177XORhgrOkXY8yr+M/+M0QkBpwJ/D6njUMdH0saI0QkJiLXiO+C0oqvgNVK7ynSYv1qOMsq5Vk47Pe+MWYb8BDwbvFdRt6Gr8z2S6kOqzuBE+mZorg42L8ZX0Mu6vOBr/mVSinl9ce8rh/iOx/OBbaJyAJ8M/eJwCPGGFdEniaY3zfG7AA+Ghx3PHC/+D4am4F/GGNW5lcUdIZsUOdLwe75/ci2Hcid443hmz672IxvbXioQF0L+2u0MeYV4Lygze8C/igiUwtlLbDvt8Dz4vuTHYhvHi9E0XMRyPAEcJaIhPAtWzfjn5vBXP9SuDIo8w3GmCYReQdwdU56f/VtA+pEpCpHsZmP/6ZTLpsp7CM3mDq3AYd0bQQvLfPy8pZ8Pvu5Jn2yllpmQL99oUDeFP6bcLaAjAXvvWBAGU7eh2+mPwn/QVqDP1XU9WKYfw42AxuMMfsWKW87/rl8Idju794fiD34LzE3i8g7c54Bm4ErjDFXlFF2IbbhD8q5sm/LSwNAfD/Hqfh9sKvNXWlC4f40nDLmMh/4a8527jXrt58NklKu/Vz8qUnofU76HWso7V67Ed+aZgFrc+6FIY+PxcaI4IU+l0uB/YFjjDE7At+gNTnyD4ZyyirlWVgqA937+dyAb2V08K/hgHWW7GweaGpvBU4VkauC3b/F15xPCbS+qPgOoXOLl9Qv5ZZ3pIi8K3ir+DT+jfUo/jSawfdNQUQuxH9LINg+O6eOPUFeF7gL2E98J/FQ8HeUiBxo/M/p/w/4aqB5L8X3YSjGH4HTReR4EQnj+ynknv+fA1cENyIiMk1Eziql0SLyARGZFmjtXc7ChT73b8Cf7+/GGLMFeALfEnWrMSZRpJqi50JEwiLyfhGpMcZk8KeCu+pvAKaKSE0pbSmBKnxfs2YRmQN8Ni+9Txu7MMZsxvcHuTLoW2/Af1Mb8I0Dup1Cry+S/CvgQhE5UfwPB+aIyAGDrPNm4O1BGSH8B1EqOH5QDHBN8mkA5gb9shSK9oX8jMaY7cC9wPdFpDo4N4slCJ/Sz73XJVfZMbECqvDPZRO+z8Y389Lz63ocaBXfub8ieB4dLCJdTuU3A/8tvkPtXPyphCFj/M/U349vlT4m2P0L4OMicoz4xEXk7SJSVU5d+AP1F4NnTD2+20GXo/rv8fvxYeI7oH8TeMwYsxH4M3BQzjP2k+RYIaXnw46FZcoHcDd+H3uf+A7X5+BPv91VKPNA/WyQDObaz8F/Semi37GG0u61m/B9RS+mxxoFZYyPgxgjqvCtOc3if+z0lYHK7odyyhq2ZyED3/v5/AnfR/BT+K4HAzKoT0aDQeGtwHtE5Mpg+yx8s+cufI35s4MtN6/8csq7Hd9/o8tJ8V3GmIwxZi3+fPwj+B35EHzzXRdHAY+JSDtwB/ApY8yGwIJwMnAuvoa8A/g2vsMa+DdQZbD/euDX/bTtBeD/4d8Y2wMZc+Mr/Sio+14RacNXAI/JL6cIpwIvBPL/CN8XIlkg34/wr90eEflxzv4b8M9JsWk9SjgXHwQ2im86/TjBdKEx5iX8B/d68c3RpU5LFONr+J28Bf/B/n956VfiDxLNUuArNfw3vYVBG27D9+u5r8S659G733RjjHkc3/n6qkC2f9DzRl1SncaYdfjn7X/wHX7PAM4wxqRLlC+fgtekAA/gWyd2iEjjQIWW0Bfy+RC+0+5a/H7/R3qmIwree0HaV4EbgmtZ9KvAEvkN/lTB1kCOR/PSfwUsDer6U/CidAa+X8cG/OvxS/y3WfD74etB2r30c++UStAnLgTuEJEjjTGr8a11V+Oft1fxfWzK5RvAanwn6efwnXS/EcjwN3z/lFvxn1OL8a8zxphGfEfqb+EPSvvS+36YR885LgtjTBNwOv4A2oQ/BXx6IEMx+utng6l7oGv/dfxn9wbg/qCeVHDsQGPNgPdaoBQ+AhwH/CFnfznjY6ljxA/xHb8b8e+RvxbIUypDLmuYn4UD3fv5dSfw+/8+9B1fCiKBQ5UyiRGRN+O/7SwM3liUPII3yGfwpxQzYy2PouxtiMgXgV3GmGvGWpbRREQuxldMhmL9UvZCROTLwH7GmGIvn73zqyI1uQnMpjcBzxhjvj7W8iiKouzNiMgs/GngR/Ctcn8GrjbG/HBMBVOGhWAacg1+uIgHB8oP42ytPWV4CXxamvHN3/oQUBRFGZgw/heBbfhTdbfjf4SljHPED5a8GT8sR0lKFKhFSlEURVEUZcioRUpRFEVRFGWIqCKlKIqiKIoyRHQFeWWvob6+3ixcuLBgWkdHB/F4fHQFGgO0nROPydLW0W7nk08+2WiMmVZOGTOrLZMuMXznnoS5xxhzajn1KRMTVaSUvYaFCxeyevXqgmmrVq1i+fLloyvQGKDtnHhMlraOdjtFpJxleQBIZ2HlAaUNgzevyZS6FJUyyVBFSlEURZmcCFjq4KKUiSpSiqIoyqREAFuGsoycovSgipSiKIoyabFUj1LKRI2aStmIyHUislNEns/Z91UR2SoiTwd/p42ljIqiKPmIgGOX9qcoxVBFShkOrsdfFDOfq4wxhwV/d4+yTIqiKP0i+BapUv4UpRg6taeUjTHmQRFZONZyKMpExBjD5XfdztV/vxcQPn3SKfz3285A1LdnWFAfKaVc1CKljCSXiMizwdTflLEWRlHGIz/9+/189567aGxvp7G9jW/efQe//OeqsRZrQiDBV3ul/ClKMXStPWVYCCxSdxljDg62ZwCNgAEuB2YZYz5c4LiLgIsAZsyYceRNN91UsPz29nYqKytHRPa9CW3nxKPctq5r2E57MtVrX1U0yn4zZpYr2rAy2td0xYoVTxpjlpVTxvQqy5x9eLikvD/9Z6rs+pSJiU7tKSOCMaah67eI/AK4q0i+a4FrAZYtW2aKBfTToIYTi8nSTii/rVddfRV3PbuGrldeEeFdhy/jonPOHRb5hovxek3V/0kpFzVYKiOCiMzK2Xwn8HyxvIoyWfCMR0siwWBmAq5459nEI1Ecy8KxLCojEb5+1rtGUMrJgwiEbCnpT1GKoRYppWxE5EZgOVAvIluArwDLReQw/Km9jcDHxkxARdkLeHjDa1x0y+9IZbJURiJcd96HOHzOvAGPO3jOXJ7+8je46fFHEYFzj34j+9SXtcScEtD11d6o1SfyGeC7wDRjTGOBdBd4LtjcZIw5c/SkU4aKKlJK2Rhjziuw+1ejLoii7KXs7uzgI3/4LZ2ZNAB7Ep2c/7vreew/Pk9FaGAfnUXTpvOFt+uYOhKMliIlIvOAlcCmfrIljDGHjY5EynChU3uKoigjzCu7dmLnjdiuMWzas2eMJFIgsEiN3ld7VwGfA/QLrwmGKlKKoigjzMyqatKu22tfxs1SH58cXy7utZQYjLNcq5WInAlsNcY8M0DWqIisFpFHReQd5dWqjBY6tacoijLCLKibykePPZ5fPfYQlgieZ7h0xUlMjcfHWrRJjcBgHMnrRWR1zva1wVfHflki9wOFYlJcBnwBOLmEOuYbY7aJyCLgARF5zhjzWqkCKmODKlKKoiijwGdWrGTl/geysamJfadNZ+nMWQMfpIw4g7A2NfYXR8oYc1Kh/SJyCLAP8EwQjX4u8JSIHG2M2ZFXxrbg//Uisgo4HFBFai9HFSlFUZRR4tDZczl09tyxFkMJkFFYR88Y8xwwvadO2Qgsy/9qL1j9odMYkxKReuBNwHdGVjplOFBFSlEURSmIZwyZdBrP87Bsm3AohIjgGUMimwEDUcfBHsdrqIxlQE4RWQZ83BjzEeBA4BoR8fD9l79ljFk7dtIppaKKlKIoyjDjeh7AuFYwjDEkk8nu4KFeNovxPELhMFvbW7vbKCLMraoeS1GHjCB9vqYcaYwxC3N+rwY+Evx+GDhkVIVRhgVVpBRFUYYJ1/O4/oWneGSbHyrojbPns3iMZRoqruf1icDueh7tyQTZQIkCX+FqTHSOtnjDhi4Ro5SLKlKKoijDxJ/Xr+OJ7VvwAgXkie1bqDfRMZPHGA832YTx0lihKuxw+ZajTI4S1UXW7btvPCACji7/opSJKlKKoijDxAuNDaS9nnhRac8l4WZHXQ43006mfRPGTYIx+DEgG3DicwjFZpRUhm1ZiEgvq5RtWVRYQjKb6RVVMuoMfSjZ0NTI4xvXUxeL89b9Dxzd6VABS01SSpmoIqUoijJM1FXEsJqb6LLPWIAzyn5Snpsk3fIqkGslEsAj27EFp2I6wWf43Rhj6GhYQ7L5FSyngqo5xxGqqKciGiWdTuMZg21ZhEIhIkDadWkPlrupcBzqKmJDkvWBdS/y/l9fiyWCAY6cv4DbLroEx7aHVN5g8SObqyKllIcqUoqiKMPE2fsfzNqmnd1RzMO2zRQZ3ak9L91Kr1VIRAKrFMF+g69C9NCy6e8kml7o3k61bWXa0vfhRGqIRCJ96pger6Q+KNOSoSsiH7/xN93rDwI8uWkjf3p2De85vGi4pmFGsMbxBwHK3oEqUoqiKGXQNfUlItRFY3zzhJN5bpcfZ/GQaTN54qGHR1cgKaYYCOLEkbx0Y0wvJQrAeBk6m16kevaxRaspR4HqYndHR6/tjOuyo7Wl7HJLxY8jpRYppTxUkVIURRki2zvbaUh0YICqUJh9qmqJh8IcO3v+sJTveVm8bBIRC8up6DMlVwg7PIWMtR28LN2WKREsp5Jw9aI++d10G8aYPmW76bbhaEK/HDp3Hms2b8I1PeEijpq/z4jXm4tapJRy0R6kKIoyBPakkuwMlCiA9kyaLe2tw1a+m0mQbN1EunMnqY4dpDq29wlHUAixbKK1B+JUzMCOTCVctYiK+iOI1O6HWH3fnS07gudlu8vu+j9as3DY2lKM317wUQ6YORPbsgjbNlec8S6O2aevsjdSiAiOY5X0pyjFUIuUoijKEGjLpHu5c5tg33CR6mwg19fJyyZxMx044coBjxXLIRSfXVI9lhMhNu0wWjb+A+NlsMMxKuoWEYrPJpNoxInUFlTAhoNZNbU8/JnL6EiliIZCYxLAVC1SSrmoIqUoijIEQpaF0Mutm9BwDsrGzd+B8YYeSsFNd7Ltqd+T2L2BiqmLmH3E+7BDFRjj0br5SVKtjRgvg1gO4aq5bF/zU0RsxLKYduC5hOMzy2tPP8QLOLSPBqLhD5RhQFVxRVGUITA9GiNk2VgIFmAhzKscvqVSLDtfuRAsZ2gKh/FcXrnnKzS98jc6dq2j6eX7eeWer2A8l45dL5Js3oTxMn4ttk2mYxsYF+Ol8bJJdr30xzJbs/diWVLSn6IUQy1SiqIoQ8C2LA6snUpLOoVnDFWhMOFhjH8Ujs8k1b6tW8EJReuwnYohlZVo3kyqdXt3WcbLkGrZSrJlG166s1c0BMsJ9zney3TgeRksKzSk+vdWRMMfKMOAKlJK2YjIdcDpwE5jzMHBvjrgD8BCYCPwXmPMnrGSUVFGAkuEGtuQSTQiXhRTUV/Sl3UAbibJjmduprNpA7Gp+zDz0Pdih3piTlmWQ7RqHhgPxCq53FyyqQ4sO0R/R1ZMXdJrftLLZvLDTGE5EUQm4HAhjFrwT2XiMgHvDGUMuB64GvhNzr7/Av5mjPmWiPxXsP35MZBNmSQ0trfz9LbN1FbEOHLu/CEpHoUwxvNDARgXKxTvNeWW7mig5fV7AH8plUjVXKrnrRiwbmM8Xr33ayT2bMS4GTp2vUR7w4vsd9oVdDZuZOfa+7CcMDMPeTuR6umDljmbaue5mz5J6+Y1GANzjjqXcOU0ki3+lJ1YISI1c4nWzkHEYv5xn2bbU9eRTeyh2xcrx/o0dclZw3Y+9yZ8i9TEa5cyuqgipZSNMeZBEVmYt/ssYHnw+wZgFapIKSPEmi2bOfeGXyAiuJ7Hm/ZZzHXnfajsaRtjPFKtGzBuz9d44ap52CH/y7nWzX/v5QCeattCuu11ItUL+y032bzV90tyg6k2N0Nn42usvv4jtG95GuN5iAiv//OXHPXxW6ioLe0LvC5e/vM3aN3yLCZY92/LE38AoGJKPXYoROWsJex7yle6g3PGpi5mycorcNPtbHnyxxg3jXFTIA7RmgVEa0c3ttOooc7myjAgpcQlUZSBCBSpu3Km9pqNMbU56XuMMVMKHHcRcBHAjBkzjrzpppsKlt/e3k5l5cCffY93tJ1D46WdO0hne75ys0SYWzuF2oqh+RR1Y9xuv6IeBAmsUtlkU59DLCeO5fRM0bW27MFKNSIIkarpOBXVGDdNsmVrztItYDC46TS9vwOEUGwK0ZpZgxK7Y+crPUpakTyxuvnYkb7XwHhZsqkW33JlR3Ai1fSZ6yvAaPfdFStWPGmMKWstmSUzIuY775tTUt53/3BD2fUpExO1SCljijHmWuBagGXLlpnly5cXzLdq1SqKpU0ktJ1D48OXX0Yq22MZsi2Lz644mXe8ubw6Mp07ySYb8/ZaVNQdAEDTK7fhpnJc/8ShdsFxhCt9xef1h67n2c4E0Rev9o8MRTnk3B9Rt/gEXrrrc6RatmK8LMbzyKRStG7diG33tqJNO3Alh5z1g+5tYwxNm9eS7mxl6vyDiMT6fin41HXX0brlGcBgjCH/fdkYQ7hqBid85m9DOi+FGJd9Vy1SyjCgnysoI0WDiMwCCP7fOcbyKBOYA6bPxM7x4YnYDm+YXZqloT+sUJx8a4wVinX/rl1wIlYojjG+j1R82hu6lSiAbU/9n+8sHuBlkmx7+nbEstnv1K9Tt+gt2NEpdLa2snPDq2SyWTwvJ79niM85tHvbeB53X/Uhbv7iidzx7bO54d/fQNOWl/rIvf8ZX8GJVmKH49jhWJ90gExi9Na023spLfSBKltKf6gipYwUdwDnB7/PB24fQ1mUCc6153yAObVTiDohQpbNx9/0Zt6yZL+yy7VDcZzYTLoelZYTJxzvUdCsUBUtmzbz8p9/zst/voZX7/sZmUTPGnV2OH9qUXACxcYOx5n/povZ95Sv07prF8Zz2dXYQtPuNrKuSzbrsr1hD0/e1zPdve6hW9j09H1kU52kO1tJtu/hzm+fg+f2Dt4Zn7aYo//fnex/5tc46N3fZe6xHwIIrFMGI0L1nIMA8NwMu166l21P/YG2HWvLPmfjCRFwHLukP0Uphk7tKWUjIjfiO5bXi8gW4CvAt4CbReTfgE3A2WMnoTLRmVs7hYc++Vl2tLVSHa2gchgjZYeiUwhFpxRc2HfHM39ixzN/6o5C3vL6av71gxM56qKbqJy2iMUnfoqGJ54Jcgt2uIL5b7qwVxkVtbN40ydu4tlbv8Tu1tVsb2hie0PPdGGVbOz+3bz9NTKpzpyjDS0NG7ju8ydzwZV344R62h2O1zF96ckATN3vzYhls+nh6wEhXr8Ph5z9PTw3y4u3/SeJ3a/juVks22HB8Z9g2tJTyz1t4wJBsETtCUp5qCKllI0x5rwiSSeOqiDKpMayLGbX1A6cMSDtZklls1gixELhAT/vL5TevOG13TIfAAAgAElEQVQxvEyyVx7xMqz+zSUsv/Rupi45jtiGFuYcfS6WHWHu0ecQm7qgO/+29S+w6o8/IZNJctzbP8WUpRtY9evPkg2UJcsJM3Pfo7rz1y84CCcS6043xpD1DNtfXcNjd17DYSeex1N//TXJjlYOOPZ05i09tvvYJSv/g8VvvQQ33YlTUYOIsPu1f5LYvQkvmwLAy7q8/q+fUn/gKRMy3EEhdNpOKRdVpBRFmXQkMml2J3xlRID2dIrp8apBKw+R6pkgVrcflDEGzzMkGjd257FDFRyw8kt9jt362vN87+K3kE51gjGsWXUbH7n8Jg44/mzWrvo9YllMnbeUEz/2o+5jFh99Jgc+t4pn7/sV6YzHzjaXTNZgW1k2v/goj9x6FYn23XjZLI/f9TPedemvqJsxl3t/dAEde3ZQPX0hp/7nb6mb6yuc2WQbJu+7Ps9NB0FAJ8F0ljqbK8OAKlKKokw6mpOJ7t8GyHoenZk08fDgpgTnHXchDc/9mUznbr8sA8lEsjvuU/OuraQS7bQ0bqOmvncsqAf+8KNuJQogk0pw968v53PX/IsTPngF2UyKWM20XsqdiLDiI1ex8ZW1PPP4P7pVoKwH61b/DctN4gVhD7KpBHf8+BPUV4e7/bZad27gjm+exQd/9Cx2KELV7IN7L7xsOVRO349ky3qaN63CeC5VM5dROfPICWmhEtAlYpSy0R6kKMqkwysQP6/QvoEIVdRw1MV/omLmIaRSLok0WOE4R37gf3j0LzfwjQ8cROPW17j8/Ut5/J7f9jq2rXUPbQmX5k6P9pSHMYZ0MsETf7+Dpx6+H0+cosrLG1ZeAHkKQCrR3q1EdZFsb8bkfAUI4KYTtO56HYCKKfNZcuqXCMXqEDtE1ayDmP+mf2PXS7eQbt9OpnMnezbeR9uO1YM+N+MC0a/2lPJRi5SiKJOOiO2QcnviTgkQcYb2OHQicY768PW07XiFdGcz1bP2J5Ho5I8//DSZdBLPc8mkk9z8g0tYeswpVNZOI5no4OnVj5LK+gaptAudaUPj8y/w7KVnIyJE41V85/ePMWPuoj51VtXNJByJkUq0d+9LuxC2e4I1GAOWbeNmUr2OdbMZopV13du184/i8Atu7N5ufPm2XtHajZehfftqqmcdRT5pN0vW83DGqVVHRLBDfRdpVpTBMD57v6IoShnUxWJEbF9xEhFqoxWE7dIUqWw6gZejhHURq1/Ii08/zu0/+y8evPVq8mOK206IPQ2bAXhpzUMkOtsxpncu43mBn5VHZ1sLP/3aRQVlWHzoCcxcuJRQ2I+gHo7GOPb0iwhFYr4CJRB2wBZIZ3qsVJYT5rDTP0lFdX3Bcv3QCAV8o6y++9pSSRo72mlOdNLY0T4ki97egNh2SX+KUgy1SCmKMumwxKI+PrjlTFIde/j71efT9PrTgPCGM/6TQ972KQA8z+NX/30Wr699lEwqgeWEyaR7W4LSqQR1sxYCvvKWP+VWiPUvrOaTb5tHKBTh3Z+4nONO9T+QtW2Hf//hvfzr9mtp3Poa+xz8Ro488RxePe5U/u/K9+KIG2hoBjebwZZAaTSGI99xacG6dr/2Nxpf/jPGuFhOmFCs0v8K0XKonfeWXnldz6M1ley9z3jjzzoVtE9RymEc9XhFUZSx4+HrP83uTf5CwMbL8vxf/octz94HwLbXnmHTi4+TSflO7F42jU3PUnrGgBWuIl7tT6lFK+KIl8Ee4AnsZpK07t5JU8Nmrv/mxTz/2P0AZDNpUh0tHHbCmTjpPbxw7y94+JbvMnPRIURCNoIfbFLEj47ueYEgIiRa85e8gfaG52hafw92JIQdifiLHZsQsfqDmHbgucSm7t9bLuMVXH3PK0E53LsQtUgpZaOquKIoSgnsem11L2fuZGc7d179abKuR1X9/F5LwQDYFiRSvhKVykBd3UwA0skEP/jPd2GMR38+zJZASDy6vJ7SqQRP/O1W3PZd3P7jTyDGYJHx041Hw/pnaNjwDLYTxsum80ozgOCEosRqpvepq3nLIzjRqG8pMwY7bMimOpm2/7sLyuYUmOoDcAbSDPcyRMAq0hZFKRVVpBRFGRGeeGktH/vBlTTsaeLEI47ip5/+PJUVhdd9Gw9U1Ewn3dkM+Fae7bvacd02sq5h59bXEXyfJNcE8aQM+EqQEI5WcM6nvw/Aru0bcQOFTEQI2wZjOUyZPpep0+eSanqNbPtOmjs93BzdzLJtMC53/M8luJkUPauWdIVP6GTdw3cwZeo0MqkOclcqDkXj2E6Yt3/2D1gFfMHcdGP3F4K+MgVOJFT0XFgiTI1V0tTZgcEg+MrVuIsSLhaWOpsrZTLOer2iKOOBTQ07eOulF7Pm1XVsa2rk5lV/471f+8JYizUgmUQrHTtfIZtq75P2xg99HycSx4nEyeJgELJul8LkY1tgib/PAPGIYFuwaN+lLDnkjQBUT5lONscBXESIhEN88Sd38ea3noKVacO2oCra21wVjlSw/0FHYNkOji1UVRRQdEQ4+2t3Uzd7PyzboWbGQt57+T2c++2HuPBn65i539EF223Z4bxihNjU/tcqjDgOs6qqg7+aglN944HRmNoTka+KyFYReTr4O61IvlNFZJ2IvCoi/1VWpcqooRYpRVGGnfuefKzHLwdIZdLcu/pRsm4Wp8Sv44aCMYbWTIqs51Fhh4iFiltV8tn5wl949d7vYNkOxnjsf8bl1C06rju9fp8jOOOrq9j5ymPs2bmZndd/HdNr3btgiRgBD4MtfqhLYwwNr6/lnhu+wekXXUFV7VTO+X+Xc8vPvoJl23iex8qzL2bWgv2462cPkUklsC2IhoSpcUhmDAic+M4PMnffQzGeSzzqEAnZdCYz3YYnEYs3nPQhps47gAt+/OSgzlvljMNp3foIxgsUPHGonvumAY8TEWTcqlC+/KM4tXeVMeZ7/chiAz8BVgJbgCdE5A5jzORaSXocooqUoijDTiwS7RPE0LZs7BEctIwxbGproSObDjyCYEaskqnRgacTU207ee2+72LcNK7r+xetu/NLHH3xndjhnuMtO8KmFx9l95Z1eOkkvcOCAyI44QpCZHr5U2XTSTa9+Hj39tve/ymWLlvO5tdeYOa8xSw55BgAps3bj1ef/ge4aYyBkCP+X6SCOYsOZt7SY3nDinPZ8MhN2DZMqY7S3pnB8ww1ddN528U/YijUzl8BWHTsehaxQkxZuJJo9bwhlTW+EGQEFftBcjTwqjFmPYCI3AScBagitZejU3uKogw7Z73pLcyqqycS+J/EolG+fP6/jegyIx3ZDJ3ZTLdeY4Adne2YEuIbJfZsLjCgCqnWhu6tVGcrN37+eJ6755dsfvYBYhEhmmPwsiybWPVUPvPrZzhy5XnYTrhX2p6NT3HdRYt44tZvYYxhwf6Hcvxp7+tWogBOOf+L1M1YgB2K4Z8qIRSNMWe/I1h26vmICGd+8mqWX/htLCeMbVnUVEaYVl/HcWd/xvejGgIiFlMWrGDusk8x54hPEKvbd0jljDtkUFN79SKyOuevcJCv4lwiIs+KyHUiMqVA+hxgc872lmCfspez16jiiqJMHGLRKKt/fgNX33YLWxobWHnkMbzzhBUjWqfreeQHwQR/6Rd7AAUuWjMHL9t7eRXjuYSrer5w2/DkX0h1NHdbmixLiEdtLHFxXZgyZxEXfPcBYtVTOeNjV7LxhUdpbdyGiIVjQ22FId3ZwjN3/4Ro1VQOOfmjfeSoqKzl0l88wYbnH6azdTciUDllOgsPOq6XknToyf9G7bQ5rL7127iZJAcs/xCHnPrxwZwuv43GkE2342UTiOUQitYi481hvCwEKd1K2miMWVa0JJH7gZkFki4DfgZcjt9BLwe+D3y4jzB9GZ9RTicZqkgpijIiVMcr+cIHLhy1+iqcUJ9RJ2zZWCVYwaI1MwnFp5Jq2da9z2TTuOkOnEgcAM/NYgqMa5YI4XiMI1Z+kFj1VABi1XVc+osn2PLyUzy15hnmTQ13W+OyqU7WP3Z7QUUKwAlH2PeIgZXOBYefyoLDTx0wX39kkrvJptroGq/dTAfRqjmTRpkaziVijDEnlVjnL4C7CiRtAXLnU+cC2wrkU/YyJsfdoijKhCds28yvqsUOlICo7bCwqrak6UQvm6azcUMvq5TxsjS+/GD39oJDT/RDB3SFCbBsPONHxl765nM4+p3/0atMJxRm4UHH4oQjSG60bxEiVXWMBsZzSbW8SqLxaVItr2GM25NmDNlUK7lGD+O5uJnEqMi2VyCjE5BTRGblbL4TeL5AtieAfUVkHxEJA+cCd5RVsTIqqEVKUZQJQ2UozAFTCq8j1y9i+cEZnVCP4mXZbHroGuYc+R4A4lNm8t7L/8aqX/0nu7e8QCweY8nhKzj4rC8Sq51VtOj4lFmEInHcjL+kSqyqhiWHHMH2NbdQv/9JhGKF3GXKxxhDsmkNXqYD8PDSzXjpZqL1RwRtLDZrNLlmkwYxtVcO3xGRw/BP7kbgYwAiMhv4pTHmNGNMVkQuAe4BbOA6Y8wLoyGcUh6qSCmKMunxsiksO9zLeiUiuKlOP82JADBlzn7MnFlHpVuFhUfLa//g4Z88w/LP3osTLvx1oB2K8N5v/YvXHv0TbrIRr+kpdq+7hz2WxfY1N3PwOT8nHJ9KR+M62naswXIqmLLwLYSitWW2qQMv6ytRPgYv00om0UA4NhMRC8upwMsmyVWebKeirHrHEyIyZAf9wWCM+WCR/duA03K27wbuHnGBlGFFp/aUEUVENorIc0EQutVjLY+iFMIOxxDb6fOFnwi9FrVNd+ymc9vThGxwHBvHFqxsK42vPNJv+VX18zjs9H8n4u3CuGnAw3hZsqkOdjxzKy1bn2DbU7+kdcujNG/8B68/9B2yyZbyGmW6gkD0JtvRgBeEeIjEp2OH4ojlYNkRolWzR8tCs5fgT82W8qcoxVBFShkNVhhjDuvvixdFGUtEhCWnfqGPP9W0pW/rpVhkk37U8dzlVARINK3vdZznZtj82HWsve1TpFq3k2j2v2p3070DeGJcssk2ml65uycYJh5eNknLlsf6ldl4GdLt20h3bMd42T7pViiOWHmO1GKDOBg3GchvEYlPo6J6HtGq2X0inE94Bhf+QFEKomq2oigKMOOgt1ExZT7rH7gKL5NixsFvZ85R5/bKE4rVBF+05ViuRKia0Tvu0uv//DEtW57EuGm8ygQv330ZS9/xI+oWH0/Dc3fgZVMAWE6EusUn0PRank+x8bqtRoXwMp20bLoPY7JgwHKiVM9f2UsRErGI1h9OYtdTYLIgDuLEAytb6RHfJzIi1rB9tadMXlSRUkYaA9wrIga4xhhz7VgLpCjFqJ59EId94JdF00MVtUzZ5xj2bHwCjAsIkappTNmnZw0747k0b3oMTM6Kw8alddvTzD3mQtxsiqaXH8CyQ8w5+nxqFxxNJrGN5k0PdVulxApRNfPQonJ07FqDcVN0KXRepoNE0/PEpx/RK59lR4jUHkimYytdYdjtaB3WJPKD6pfAIqUo5SClRP1VlKEiIrONMdtEZDpwH/DvxpgHc9IvAi4CmDFjxpE33XRTwXLa29uprKwcDZHHFG3neMCQat2Jm+7EcsJEqmf28SvKnerL2DWEvFbCldOww0GbjReEUeiZSsymWvAynSAWTqS228G9EG66NVDkehArhBUqdk6N7zOVV+dwMtrXdMWKFU+W6y5wyP6zzO0/v6CkvIvf+q2y61MmJmqRUkaU4KsUjDE7ReQ2/PWkHsxJvxa4FmDZsmVm+fLlBctZtWoVxdImEtrOicHW1ZtpXPdXvGyKHVWnMc99jAOXXwVi2Ln292QSTYChatbR1M5/66CXzuloeJJU64YeZUpsKur2p2Lq0uFvTImMy2uqFillGFBFShkxRCQOWMaYtuD3ycDXx1gsRRlxZh/5ASI1s2nbuobGzhoOeOv3sMMxdq69kUxnI10hCdp3PEmkcg6xqQcMWKYxBuOmEDtEbNqhuJk2sp27AEM4Ppto3cBlKL2RwS0RoygFUUVKGUlmALcFb9sO8HtjzF/HViRlMmKMIZNO4GbTiAihSAzbHjmHa5PtJD5lGo69H9YrLp27VlM5+zjSHdvoievkf3mXats6oCKVTbWyZ/2dQXBNqJpzPNVzl+O5KUAm39d2w4XouVPKRxUpZcQwxqwHinvMKsoIYoyhM50ilc0ixhAyaSzxXYVSiVaiFTX+ki9BXmDQU2yFcFPNdOx4GOO5fnlikU3som3rP7HD1UEATB+xHJwSAm82b7gbL91Ol3N529aHCVVMIxSbhjEeyd0vkk3uwnJiROsOUmfykhFE1CKllIcqUoqiTEjaUkmSma7YTIYMDjGTxQp0pWw2RciyyXQ2+M7bgB2pIVQxvSyFKtH0HBivVxmW7eAmd1O3+O3sXPt7upy/Q/EZVE4/rE8ZxhiSu9eSbH7Zz+ul6b10iyGT2EUoNo3OnU+STTSAcXFTe8h0bidSsw/h6iVYdnTI7Zgs9FoHUVGGgCpSiqJMOIwxOUoUdH367yJY3QqJkE024abbunO5qVbEChOKDn39O5MX/0m6/hUhHJ/F7MMvJtW2FcsOE6meH8Sl6k2qdQPJ5nXdzuRWKIrBw8t0BdIU7FAc47lkO7fTS8kyHm5nA6lMO9H6IzVmVD+IWqSUYUBVcUVRJiGCE4rgZjrIt/R0+SF17zEe2Uwn2XQHXoEI4vk4FdPJfbQafMUuNu3wbgUoVrcf0ZqFBZUowI/7lBPewF8TLuIrRZZDuGo+4ar5/QtiPNzU7gHlndSIv2hxKX+KUgy1SCmKMuEQESpCIRI5VilBCNsOlmURCldgWTYiDoZU72Nz1lUzxiPZvhOTE1wzEqvHdoo7KEfrlmK8NNnOHYEsDpWz30goNr1k+S27bwypUHwG8RkLsJwKQvFZgf+VjROb1dsqJRYygo70Ewu1SCnlo4qUoigTkspIFFssUm4WW4R4JIqd5w8Tik0j1ZYIFvgFxCJUUd+dnkm1Y/ICX6aTzVRUFleKxLKJTT8SY4xvSdq4alBKFEC07iAyHdv8uo0vV3zakdiRml75jPGwwjVYbhKTTSDiYEdrEc8P7GlH6gZV76RDBEuVTqVMVJFSFGVCIiLEIhFiFI8QbtlhotULgyk+f9otdxon1xLVs8/ts69Y/UPFDsWpnn8q6fbNgCEUn4MdiveVxU2C8XCiU3P3YoVihKv2AdFHfP8I6LSdUiZ6lymKMqkRy8HJs/R0YTsR3EwnuX5UdoFpt5HAcqJEa/cdKBe9fbz8femKeaxvbSNrPCK2zcLKWsIawbsPAjq1p5SNOpsrijLh2NLRyjNNDaxv3YNXxnqiTqgCJ1LVvW05EcIVA8d9Gi3EjiBOlJ718wTXjvN6RwfZwJqWcl3Wt+1B11UtgAhiWSX9KUox1CKlKMqE4qnGHaxracI1BluEje0trJi1YMCptqzn0ZZOYgxUhsOEg2Cd4UgVoWCx4eEI2DmciAiRqgVkk03B8jFR0lYl0tGGybFUZT2PrPEIqfWlD2qRUspFFSlFUSYMadflpeYmvECJcI1hZ6KDxlSCadFY0eMynsu2ttbu41rTSWbGq4g6viPy3qZA5SJiEaqY1r3tZDL0ne4Du0iohcmNrrWnlI8qUoqiTBgynov4sTe7EREybv8O4i2pZLcSRXD47mQnsysL+07tzcQch8pQmPZMurtFMyriWHuxMjhWiH61pwwDqkgpijJhqHBCVNghOrLpXjaZqdH+154r5EeVdl1ebG4k7oSYF6/eq61SuYgI8ytraM2kyXguFbZDPKQL8xZG40gp5aOKlKIoEwZLhJVzFvKvhs3sSaWIOQ7Hz5xHxO7/URcPhenMseAYY9iR6mRHshNbhK2dbRw7bc6QlKmM6/LAqy8zq7qaA6fPHEKrBo+IUBMena8Lxzs6taeUiypSiqJMKOKhMKfMXTzoY9xojOZUAmNge6qDHclOwPez2pXsZE86SV2kf8tWPn9dt5YNTY3c8OIasp7H2YcczudXrBxUGcoIImqRUspHvQ8VZYLQ0NLMD//6Z77z59t5tWH7WIsz7qiORJlfPYX6eCU7U4leaYKQ9foG5+yPjOty2T13YYyhPZ0mmc1yy3NP84Jem70LyyrtT1GKoBYpRZkAbG5q5IgvfZb2ZBLPGC7/0y38/b+/xrJFg7PMKBCzHSK2QyKb6Z7qE6A2HB1UOc2JRJ+P5xxL2N7aykEzZg2LrEp5+M7m6j+mlIeq2YoyAbjyzv+jubOTVDZLxnXpSKX4zI03jLVY4xIR4YQZ86gNR7FFqHLCHD9z3qAjg9fFYsTCvQfprOexX/20Ikcoo48/tVfKn6IUQy1SijIB2Nnaips39dTU3j5G0ox/Yk6I5bMWlFWGbVlc865z+eeDDxJxHDDwtZPfzvwpupDw3oRGLVfKRRUpZUQRkVOBHwE28EtjzLfGWKQJybuPOpa/Pvs0nekUALFwhHctO2aMpVKWzpjJzmnTufvUtzGlooKwo4/cvQt1NlfKR+9qZcQQ/wn1E2AlsAV4QkTuMMasHVvJJh7nvfF4tu3ZzTfvvI2s63L+CW/hy+98z1iLpQTMqKoaOJMy+gigEd+VMlFFShlJjgZeNcasBxCRm4CzAFWkRoBLTzuTS087c6zFUJRxhDAarsIi8lXgo8CuYNcXjDF3F8i3EWgDXCBrjFk24sIpZaOKlDKSzAE252xvAXS+SVGUvQQBGbVh8CpjzPdKyLfCGNM44tIow4YqUspIUigMdK8PwkXkIuAigBkzZrBq1aqCBbW3txdNm0iMZjvbUim2t7XgeobKcJg5NbWjth7bZLmeMHnaOm7bqVN7SpmoIqWMJFuAeTnbc4FtuRmMMdcC1wIsW7bMLF++vGBBq1atoljaRGK02rl25w4+d/NvSWazAIRtm2NZyNXvOHvE64bJcz1h8rR1/LZz1BSpS0TkQ8Bq4FJjzJ4CeQxwr4gY4Jrg+ajs5agipYwkTwD7isg+wFbgXOB9YyuSAvDYptd7RepOuy6Pbt44dgIpypggg7FI1YvI6pzta3MVHRG5Hyi0mOJlwM+Ay/EVpcuB7wMfLpD3TcaYbSIyHbhPRF4yxjxYqoDK2KCKlDJiGGOyInIJcA9++IPrjDEvjLFYClAdjRKyrF7KVFwXuVUmJSUrUo39OX8bY04qpRAR+QVwV5EytgX/7xSR2/A/2FFFai9HJ4eVEcUYc7cxZj9jzGJjzBVjLY/ic9r+S5ldXUPUCWGLRdRxuEwX01UmHYGzeSl/5dQikrsm0DuB5wvkiYtIVddv4ORC+ZS9D7VIKcokpCIU4sb3XcBdL75AazLJMfMX6PpvyuRj9OJIfUdEDsOf2tsIfAxARGbjByo+DZgB3Cb+Bx8O8HtjzF9HQzilPFSRUpRJStQJ8Z5DDhtrMRRlDBmdOFLGmA8W2b8NOC34vR44dMSFUYYdVaQUZRzSnEqwqbWFqnCEhdW1yCiFLVCUiYbRe0cpE1WkFGWc8dLuXVzz7BNYInjG8IZpM7lg6eEFlan2TJoHtm1kdypBfSTGW+csJOaERlS+B9e9yK2rH6OmIsYnTjyZmTW1I1qfopSHugor5aGKlKKMM657/knSntu9/dyuHazdvZODps7olS/refxxw4u0Z9IYoCOT5tYNL/L+JYeMWODNmx9/hAt/9XMS6TSOZfHzv9/Ps9/4jipTyl7KoMIfKEpBtAcpyjjCM4aObKb3Pgy7k4k+eRuTnSTdbHcoeQ/oyGRoTiVHTL7P3/x7Euk04CtyLYlOrnvw7yNWn6KUx+h8tadMbFSRUpRxhCXC9Ip4r7V3BGFeVU2fvI5lYUzvfQaDbY2cT0iXEtVFxnVpTY6c4qYo5WOV+KcohdHeoSjjjIsPPZqaiB9Q0xbhzMUHsLB6Sp98UyMVzIzFcYKpC0cs5sarqQ6NXODNc445jlg43L1dEQ7zriOPGrH6FKUsusIflPKnKEVQe6WijDOmxyq5/LiTaE2niDkOYbvwbSwinDl/P57e3UBjMsH0aIxDp84Y0S/8vnfO+7Eti5sff4TKaJTvn/sBjl60ZMTqU5TyGJ3wB8rERhUpRRmHWCLURqID5rMtiyPrRy/QZshx+MF5H+QH5xUMm6Moex9qbVLKRBUpRVEUZZKiFimlfFSRmqSISD3QZEy+O7IymfGMYW3zLrZ2tCEiLKmuY1GVhi5QJiqiX+QpZaOq+CRARI4VkVUi8n8icriIPI+/GGaDiJw61vIpew8vt+xmc3sbWWPIeB4vtzSxraNtrMVSlJFDnc2VMlFVfHJwNfAFoAZ4AHibMeZRETkAuBHQhTHHMcZ4uKkWAOxIDVLGQ39Hoh2PHiOlaww7Eh3MjleVLaei7I0YdIkYpTxUkZocOMaYewFE5OvGmEcBjDEv6Rpt4xc300E22UznrjW4ad9qZIerqVlwMpY9tGVgwpZNB70DfoZtu2xZFWVvxVPvBqVMVJGaHHg5v/NDYOtTZBzSvuNJWrb8Eyccx3Ii3SEN3HQznbueonLmMb3yGy+Lm2oCY7AjdYgdLlQsB9bW89iurd2Di2NZLKnqG6NKUSYCBnpZYBVlKKgiNTk4VERa8T9RqQh+E2wP/A29MipkUy14bpLE7heJ1CzCsgsHzswkmmjd+i8wLmJZveNCGY9sck+v/MZNk9i1GmOyYAyIRcW0I7GcWJ+yp0SiHD9jHg2JDiwRZscqiRSJU6Uo4x2DP32tKOWgT8hJgDFG52b2UvyPJg3ZRCPNr9+Ll6mgvWE1HbuepW7xmVhORZ9jssk9GCO46SRiJwhFnR6/KLFwor0tSOm2jRgvTbfx0XikWl6mYuphBWWqDIWpDBW2WCnKRMMbOIui9IsqUooyRqRaN9HR8ASYLJ6XBZP1E4yLcZN0Nr1AfPqRJJs34WWTROXlbEoAACAASURBVKcswHai2JEaOnZuIJNsQ8RmysJDcSJxxApjh6uJTTsCgHRHA6m2TbjJJpxQqJcTunHThUQaMts627h786t0ZjMsrKzl1LmL1bdKGQcY9ZFSykYVKWVEEJGvAh8FdgW7vmCMuXvsJNq7yKaa6Wh4HIwL+D5MvTF4mQSv/+sHdOx6GRELsR0WrbiMzqZXyaY6wRiMybJ7/ZNU1C1k/hsv6f5qr3P3yzRvvNcvXyws26Gyfr9AmbKwI8Pn99SSTvLbV58j4/nv9mubd5F0M7x30UHDVoeijATqI6UMB6pIKSPJVcaY7421EHsj2URj7x1idStV/rZNJtFGx651GDftP+qzwpbHryU+/cA+ileqbWevKb3WzX/vZeHyXEMm0Uw4VocdrSNcvXjY2rK+rZncl3rXGF5t3YNnDJZ+FarszRhQg5RSLqpIKcoY4DuS9ygZlhXCGAEEsULEph1Oy+an86bgDOn2nUzddyVih3vSxCJSPbtX+V7+1J0Bp3I+sRlHlhVnCiCRzfDorq20pFNEbJup4QpE6PX9pyWi0XmUcYFapJRy0XCtykhyicj/b+/OoyS7q8OOf+9bau19mZ7pmdFom9G+IEayMCAEZrOMwRAbExvjYMcy2MTHdhJsgpNDbGOT1XYMObGCOVmMkYmJQDHECAIDGAPaEVqGQRqNNPtM9/Ra61tu/njVS3VX9VY9vd7POXXU9d6rV79ft6b71u93f/cnT4jIJ0TE1tDP4rftTkaQxANxEcejffBVeJke+q7+WXK915LtvhScFFEQEJbLhOUy4mbo3Hs7HbsPIo6P42XwMl3sufWX6u6fbt9bX41ZHNId+1oOolSVvzt7grFqBQXKUcSZcoF2P41bG33yxeGVA5dgNcrMRqdAqLqkhzHNiG21ZlZKRL4M7Gxw6oPAt4Ehkt9VvwfsUtVfaHCPu4G7AQYGBl567733NnyvyclJ2traVqnlG4fGAWiMOElANbeflfFTxGF51iuEVNsO3FQejSMgRpxGxTeVqDJOHFUREdxUO9KknMKy2guMVSt1xwTIeh7VOCJWJeW4ZBYpmbBVf56NbJe+rnU/X/3qVz+iqgdbuccNL7lZ7z/0lSVde3lXb8vvZ7Ymm9ozK6aqr13KdSLyX4G/aXKPe4B7AA4ePKh33nlnw3scOnSIZufWisYRqiHi+Csa2Zk4+xgjR/8WjUPS7Xvpv+btuH59Lae5/TzyhX9Bcey5umvaO2/m8jvez9iJBwmKQ2Q6+2nbedOajADFqtz/4pG6yRBHhJf076Y/m1/yfTbCz3OtbJe+btZ+2liCaZUFUuaiEJFdqnq69vStJJskb1pB+QJh4TQgEJeBKBnpyQ3iZXctGsSUx4/Xgqhk+5XK5AmGvv8ZBq7/OUZf+DanH/sL4rBMNfsG4rCC4yWjR44/v46U62c58dB/oTRyFI2qiJuic+QoA9e+jag6weS5R5NyCZ2Xkenav6oBliPC9d39PD06NJ1M3pvO0peZX9zTmM3AcqRMqyyQMhfLvxWRm0lmg44Bv7y+zVk+VQWNieOgFkQpxBWIi8l5IJw4Bjj4uUYznDMq4y/Ur7TTmPL4cQpDRzjx4H+dThyPq0VOPPjnXPLDvwLArpvfwXNf+j3iqAIIjpem69LbOff0/5p+jUZVRo99ne5L72D02Oenj1cnTxEHRfI76gtvqipxFACK4y5/dO3Kjh66UhlGqmWyrsfuXLvlQ5lNSbG99kzrLJAyF4Wq/tx6t6EVQXmEsDScPBGXJBNIQecWsoyJymcXDaRcP4843vSIFIDrZZg4/b26lXlKzMTp704/z/fvZ/+P/h4Xjn4dEZeeK+8kqowh4tR9jhZxKI8+OydYCykMPVEXSKkqlcJwUgCUpFuZXB/OMreB6cvkbBTKbAlW2dy0ygIpY+aIghJh6cLMAY2S1XVahQaL+mUJi1/z/TcwcfphgtIwyedgpXf/mymcexZx/PoAa850XrZ7H7tfOhOXRtXOOe1w8DJdOF5m/hbUWv9nIqwWiGe9FwrV8iiZfN+ifTBmq1GFSC2UMq2xQMpsS2eKk5wuFlBgRzbH7lzb9PRUHJWZF5GIAyrgZCGaFYjg4LVdQlAaJigN4Wd68HP9895PHI+dN/4CxQuHiYMSmc59+Ll+Um27GTryRcLSGKoRgsPgS9+1YNvdVJ5LXvbrnHr8vxOWLpDu2M3gS94NIhTPP4bWKowjHpnuq+peG8+roA5xHM07djGpJttyqKpNCZp1Z2GUaZUFUmbbGSoVOVGYnE4yPVOcxBVhVy5Zui2Ox/RU3hRxSXddWStXEBGVk8oOXnYnheEjjL7wpWQKUCM6dr+Czj0vn/e+4rjk+2a2TRk5+i0mz36f7stfh+t7xEGZoTMZOnbfsmgf0h2DXHbHB+Yd7778x5k4/R00KpPuvJx8/0115103RRTUB4qO26h8wsXxzeef4+6/+gveu28//+w//AH/7Wf+ETcO7l6z9zemnu21Z1pngZTZdoYr5bqVOnHt2FQg5fptRN4EcViaviaV35lUI6/VYnJTnUAyDTgytacdyWjP+Im/I993HV6mq2kbnj/0UU49fC9xFOC4KXqueDlX/8QfIue/1lLf/GwfPZf/WNPzrp/FjapEQdI3cTzSC7RzNQ0XJvnFT/0PikEVRRkqTPLOv/hzHvzND5Dx1i6YM2ZKstfe2hCRfwK8j+QXxedV9f0Nrnkj8CeAC3xcVT+yRs0zLbBAymw7njN/OsmbNcUkIqTadiWBlMY4XqY2SjVfFEwgjotGs6bHHJewOj4dSJVGTnD+mS8C0H/NG/Ay7Zx88JNobYowjktceO7veOHv/hsTZ6p86UO/SeeeG9h104/TMXgNnbtnRrHisMLYiw8ThxXad99EKt+7rL6LCOlsF5ruQNFkM+Q502uqSikMCKIQVxzyqfSqTMF9/9xZXKc+nyyIIk6MjnBl346W72/MSqzFiJSIvBp4C3CjqlZEZN7/8CLiAh8DXgecAB4SkftV9emL3kDTEgukzLYzmGtnpFqZ/gXqIOzJt9ddIyLzimU24qUbjOZojJ9NApzC+ed44i9/mThMqoGffOhTXPWm301W8M3KtYoj5cgDf4xefTdRtcSFow8ycuwRxPW58jW/wuWv+iWiapFnPvubBIWp1YTCVW/6Q3J9y9+AWByn6V5445USpWCmbZUwpCeXbzmYGmjvIIjqc7SCKKIvv/WrfpuNSUk22V4D7wU+oqoVAFU91+Ca24BnVfUogIjcSxJ8WSC1wdlee2bbyXoeN3T3sTvXxmA2z3XdvbT5qRXdy3FT9F/1dsRNI46HOD59B96G6ydVvl/85seJg3Kyek5j4qDMmSc+h5fpgFmBSRhU5yWCaxwRB2We/X8fpTJxnnNP/Q3ViXPEYTl5BCVe+MZHV/6NaCCO47ogCiCMI4Ko9YT0K/r6edetLyPr+zgiZH2f3/qRN9KVtTIKZv3E6JIeLToAvFJEviMiXxORWxtcsxs4Puv5idoxs8HZiJTZltKux+45o1Arlencx56Dv0EUFGr1otzpc2F5nPoVgEph6BjnTx4jn0vhei6Zjl0M7H8Nx7753xve33F9KhNDVAvn68okAATFCw1fs1LN/lzoKlV//p3X38WPXnMdx598is+8+z1cv2twVe5rzEosc0SqT0QenvX8ntoWV8Cie496QDdwO3Ar8GkRuVzrN7ttNORrmfCbgAVSxqwCcVy8dMe84/3XvJ7JM4enNx4WN8WFE0cIq2XGqmXEcWn3B+j02nFT+bpRqll3J9d7CVH5ZoaPfGW6gKc4LrkdVzW4fuUcETzHIYxnp+AKLhBUSyCC56VWtNfglJfu3cfEc89bEGXWn+py6kgNLbRp8UJ7j4rIe4H/XQucHhSRGOgDzs+67ASwd9bzPcCppTbOrB+b2jPmIhq48c3sfdm78XPd+Llu8rtuolIqT5/XOGLs1GEe/9xHGD5/HnAYfMlP4KZyiOPhZzt56bvvwUvnSXcMUi2Mo7UaTEG5yND3D3H+6S+uWntFhJ5snrTr4YjgOy5d6RTV8jhBtUhQKVAujqFWxNBsAVNbxCzl0aLPAq8BEJEDQAoYmnPNQ8B+EblMRFLAO4D7W31jc/HZiJQxi1BV4uoYGldw/HYcb+k5PSLCnh96J3t+6J0AnHjs//Did/8fRLO3mlGiIElGj6KQzO6ree1P/gFheQIvM7OP3ZEv/D6V8WEqs0b7XT/N0a/8Rzr33Uoq39N6ZwHHcejO5aeflwojdedVY4JqmVTacpvM5hfFa/Kh4BPAJ0TkSaAK/LyqqogMkpQ5uEtVQxF5H/BFkvIHn1DVp9aicaY1FkgZswBVpTzyFFF5agReyXTfgJetr15emThNUBwm1b4LL93OxKkn0Tikbed1eOmZoGTwxh/l+W99itHj3wMgrBSpVGeSzFWV8sQwIoKfrZ8qLI/XNk6ua19cy6E6s2qB1Fza8NO4pW6YzS9WpboGgZSqVoF3Njh+Crhr1vMvAF+46A0yq8oCKbPtqCqRKq7Iokv6o8pIEkTpzKq18siT5DN3Tr926PDnGX7uAURc4qhKeXSMsDwBCI6X4rqf/E+k2wcAcFyPV7znf3LmmUNUCyM8962/5tyz32GqLKCIMHDgZQ3b0rn3Fs5PPlBXNiHZCDnE8VIUzh8m3b4LL9O57O9JHFWojh1BwxLipkh1XInj1wqUeimiWvkGAFRxHM+2eDFbQmzT1KZFFkiZbaUQVHlxcmw6CNjX1klugdIHGpUbHSQJfFwqE2cYfvYBNA5QAspjw1QnxpgasYnDMse+9qdc9abfZ/LsD3j6s/+S8tgZuva9hGve/K/ZdcPr+frH3sno8e+hrk+ue3BeIFU4/xzFC8fZc9s7qYyfYez4Y6AxXjqHl2mj/7rXcfzv/ygJqjRi8OA/pmPXzUv+nqgq1ZGn0bgy3efK6DNkem9GHJ9UOk9VNQmm4ioQUC0WcNw06fyOlhLPjVlPa1hHymxhFkiZbSOMY16cGJuuCaOqvDA5xoGuXtwmwYCT6mDuNJa4GZIixFAePYqf6ySsTBIHZeIgqL9eYyrjp6lODvPwx3+OsDIJKOcPf5XK+DnyO68lHHuBtvY8xBFBcYTy2Bkynckq6mPf+HOOfvU/I66HRiEH7vptrn/7nxAHJYLiCIhy/Nt/kgRytdIIpx7+OG13/dGS99DTuDqvrAJAHBRw0121aujtBJUkwX36fFShWrpAOte3pPcxZuNZ1qo9Yxqyj5Jm26hG0fxKLVo73oTrt5HqvJrkhYI4abK9LwFg/OS3KA49Trqjh7b+faTaenDTmboSBuL6tO28lpEXHqmtdKsFcVHA6PEnePHBv0LDClqr+B0HZf7+oz/JxJnDFIdf5OhXP0Yclokqk8RhmSNf+AM0Cki19ZHfsZ84LCIy9/OQElUmlvx9SYLCOZ/KVafrYakqQWmYsHgWohLM+gQfz57yM2aTmRqRWsrDmGZsRMpsG57jzEucVhR/VgHNRlL5QfzcTohDcHxEhLAyRuHcY6ARTu31mc5+wkqZTNcVjB9/BBDyO65i3yvey8ixR2iUKI6TTCvOzjWqFi/w+Cd/mUx7L47r1wUr4viURk/i55KtadLtu9A5FdFFvKRy+hKJ4+FmdxGVzpBMWTo4qQ7ES3KkgsJposrITPujENyk5lWzPQiN2RR0zVbtmS3MfguabSPluvRl8wyVCtMDU/3ZPJ6z+MCsiAPuTC5VHBQQcdFZSejipLj0jn9OKj9AWCmgcYiX6UhqM13+Q2R79lIcOkYcVnD8LLtu+DGOP3Lf/DdTRcMKQXEEN+UyFUfl+nbSMXgJx7/9x2Q697Dv5b9Bqm2AgRvfwdknPpWMLImw9/b3LTvASbVfQpRqJw4LiJvGTfchIklifmWmerpQq3KuETgpUtmLs1LQmLWgKIEFUqZFFkiZFRORnwI+BFwD3KaqD8869wHgF4EI+DVVXb2qkS3o8FMUq7WkapINi1fCy/QwL3fKcfBrgcXskgcAjpfi1n/8SY5/5y8pjZyg+9KDDNxwF70H7uDxT/4aqvF0SxzXxfV90IhUvpugXMXP5enYdUkS0GlMeewEx7/zX7jsVe+n+9JX0jF4C2FlHD/bg+OlV9QnN92Nm+6uOxYFk/OuEwQ33Y6f7bNEc7OpJVN7FkiZ1lggZVrxJPA24M9mHxSRa0mq8l4HDAJfFpEDOnv4Zp2cLU7WhT/j1TI53yfjLS0xe4rjZei+4scZOfp5NKrWnr8JcZrfx01lufSVv1h3bOe1P8LrPvQoR7/2cc498yUuuC757u5kqk8c2nbs59a77+Ps9/6aC0e/wnTwpjGV8ROMHnuAqDqGl+2jffCHcdyVBVGNxGGZYPIUU+NQ00TwMz0WRJlNT9VW7ZnWWSBlVkxVnwEa1RJ6C3CvqlaA50XkWeA24Ftr28J6zbZ6COKYzArul27fzcCNv4TGAVLLnVoJ10+z/7W/yhWv/mUeuP9e3FQWEQfHz3HF638bx0uR6b4Ecf3pffYQh66911GdPAkoUbVAWBmj54q3rFptp6g6wdS4XZI7pYCQ7rzCcqPMFmGr9kzr7LehuRh2A9+e9fxE7di6ckRwROqCqVi1pWRTEUHc5nWolsNxPTLde7jh5R8jCsvk+/fj+kmI13XJ7Ywc+waVseOA4KbzOH5mVqHQmKgyRhxM4qbaV6U9TI04iZDsWAGIu6qjXsasp6m99oxphQVSZkEi8mVgZ4NTH1TVzzV7WYNjDX9bicjdwN0AAwMDHDp0qOENJycnm55bjkhjonimKTo1yuIuvHJvrUxOTvLQ0yeTJ0eG55x9GXHu5iSfyvV48fj8/CXv3EMzAdA8U/1e4oiVxsRxUhdLpl7neIicXNrrF7BaP8/NYLv0dTP2U1UXLH9izFJYIGUWpKqvXcHLTgB7Zz3fA5xqcv97gHsADh48qHfeeWfDGx46dIhm55ZjpFxiqFSYF9Xt7+rdENudLLWfqjEjR/+GsDySjEqJS6ptD137XtPgWqU68QJxkGxbg7ikO6/AaTKSpnFIefJMre5VwnU8vHQHbqptpV2rs1o/z81gu/R1M/bTKpub1WCBlLkY7gf+UkT+I0my+X7gwfVtUiLjzf9fPuW4iwZRqkocFpK6UV6+YY5QHFWIg0nESa3e9FoTIg7dl91F4fwTRJVRvNwOcr3XNrw2qozUgihNHhoTTB4n3XlFw+srpQvMXRcgXnbVgihjNhLba8+0ygIps2Ii8lbgT4F+4PMi8riqvkFVnxKRTwNPAyHwqxthxR5A1vPpz+Y5VyoA4DsOu9sWLl6pGlMdPUIc1rZHESHddQ2ON5OiHpaHKQ09RjJtFuPn95DpvmbR9qjGRJVx4jjE9bPL6os4Hm0Dtyx6XTQdRM2IG+0hONWmRtvFNDhmzGZnI1JmNVggZVZMVe8DGlSUBFX9MPDhtW3R0nRlsnSmM8SqOCKLjkZF5aFkNGq69ABUJ56fDpRUldLQ47MSvyEonMTLDtTqTTWmGlMZPz4duESVsXkjQashjsJaJth08xcsXeC4aaK6auliCeZmi7LtX0zrLJAy25KI4C4xJyoOS8zb3iWatcecxqD127QAaFha8L5RUJizvYtCHKKqq5uvJR7gokwFaYL4nU0vT2V7KEdTmyArjpfBTy99yxljNoukjpRN7ZnWWCBlzCIcv42oPExSS6l2zMtNfy2OizhpNK4PrpzFcorW6JOwm2onjENmakG5eOnmgZSIQ6Zt5/TomMjiOWTGbEaKEtiqPdMiC6SMWYSb7iEOJmrBFIibJtVxWf01+T0EY0dqNZeEoDxKqjyGm2oesDheg5woceYFLWEcMVGpEKPk/dSyq7D7mW5ACavjgOBnuvH8/IKvERFEGv96iDWmUK0Sq5LxfNINEviN2RRs02KzCuw3oDGLEBFS7Zei+d1UJ08zefo7TJx5jHTHpbQP/jDiuJRHfkB18iTieMlIjiqFoSdId1zS9L6O65NqHyQonEM1wvGy87aYCeOIUxPj0xOLhWqVvlyenL/0IqAiQirbSyrbu+B1sSq6SN5YrMq5ycnp6ZBCtUJnJks+ZTlUZvNRLJAyrbNAypgliqqTjB57YDofqjj0FGF5lK7LXj99jc5J0l6M62VxO/fNOvL9uvMTlUpddpYCo+XSsgKpxagq4+USxSBJevcch958G06DYKoYVOtyShQYr5QtkDKbktLazgbGgAVSxixZZfwYaJTUlIqqaBxSGjlCefwFOva+imrh9MzKPXHJ99/Y8nvGDQrCx6ucWlUKAkrBTHmDMI4ZKxXpzs2f/tMGeV2NjhmzKShEkQVSpjUWSJlNJ1blkdMnOV8qcGlnN9f27ViT9xXHB3HQOKgbedKowtixBxDHx8/twMt0kuu7gXT7HuLaJsPNqogvJu+nKFSrdZu7tKVWbzQKoForj1B/rHECbsbzmaiU666fytmK4pgojnEdB9dpXl7BmI1CVamG81fcGrMcFkiZTUVV+eOHvskT584QxTGOI7z1wHX8xIH5Vb0rUUQpCsi4Hhm39f/VM11XUjj7KHFYaXhe44Bq4Syd+16Dn+ll4uTXCUvnAcXPD5LfefuC9Zsavqfn05fLM1ouEWsSRHWmM4u/cBm8BkFPs0DId116cnlGS6VasrlHVzbHZKXCRKU8PZnZmc2SbWH6cahY4PHTJ8n5KW7bsxfP2Rh7IZqtxXKkzGqwQMpsKs+ODPPEuTNUotqnyAj++vCTvPHy/XWr2c6VChwZH0EkqTJwWXsnu3OtbdvieBl6r/opxo5/jeLQM8wuhzBDqU6cICycqgVRyTVB8QzlkcNkexpv47KQnJ9a1ZyoufKpNKUgmPmDIkJXpnmV9Yzns7N95nudrCpMKqVPjVSNlkpkPH9FZRMOnz/Hr/7NZ6af7+3s5s/e/JO2OtCsOlXLkTKts99MZlOZqFbmJUG7IhSCYDqQCuOYI+MXkhCm9pf9+YkxetPZJY9MqSpB4RRR+RzipEl1Xo7jZnC8LN2XvRFx0xTOfbeumjkkNZgcL0dYOE5doKURYWlohb1uLNKYI2MjXKiUyHk+13T1rmjkTUToy7dRjZL8r5TnNUw0byaMY4S5JUthpFSkO5tbdjD1+1/70nTiO8CxkWHuP/wUP3X9Tcu6jzFLYYGUaZUFUmZTubyrpy65WYCOdJruWSMolThK/njPvk6gHIVLDjSq489RnXg+qVoOhKUz5Ha+YjrXqeuSV9O+8yDF4cOMn/xm7T0cvGwf2e79FIIRouoYM+GFg+uv7qa/jw6d5UKlRAyMB1VGKmXu2Lm34VTdYkRkxSM+nuM2SImHShgyWirRncs1ONvcUKFQf58o4vTE+IraZsxCbNWeWQ2WEWo2la5Mlt9+2avozmRxRNjT0cnvvPw1dSMomQZ/2FUh6y69kGV14th0EJW8PiIsna27xk21077rVnZc+7N07n0VXZe+nv6rfxpxXHJ9NyNuOtmeRTwcL0um9/qVdLmhII4YrgVRU0KNuVBZeFuai8FzHDoyjfO2KuHyNzu+fmAn/qxgMON53LRrcMXtM6YpnVkksdjDmGZsRMpsOlf19vOf3/CWpuddx+Hazl6eHhtOppxU2d/RTdpdRsLy3CX9qnWB1Wx+rh8/1193zPGydO77UYLiOUDxMn0rXrnXWLPpsvXZyiWfSqOqTFTmJOKvIEfqX975ev7p397P4fPJ9+5nbryFV116xeo01JhZYlWqgW0RY1pjgZTZknrSWW7vG6QSh6Qdb9nTXX5+F0Hx9EzwJA5edpllFkSI4xCNKkTBC7h+G35+16rsW+c7DgPZPOfKRWJVBEg5Lr3LXNEXxTGjlTJhHJP1PNpT6RW3L5dKT28dAzPTrsvVmcnw8Z94O4VqlZTr4i8nADZmmWy0ybTKAimzZXmOg+esbBQo3X0t4qQIS+cQN02666p5e+OpRgSTLxIH48n+e22XJdN5NUHxHBqVp59HQQGpjNb2vmvdTT07ODoxyoVKmZzncaCjZ1n1m2JVTk6OE9b+kBSDKkEc05tdXk7TFEeE/rZ2CpUKipJucR++/CrXyzJmLrW99swqsEDKbHtRGFCtlkAV10vhpzKIOKS7DpDuOtD0ddWx7xPXEso1LFAOJsj03ILUah7FYXnOK5Q4LAGrE0g5IlzZsfJ7FWeXPCBJix+rlOnJZFc8KuWI0D4rXypWRVHcZdbPMmYtrGWyuYj8E+B9QAh8XlXf3+CaY8AEEAGhqh5ck8aZllggZba1KAqplCenn4dBEvyk0s3rKEEy2hSHITh50AC0AhoTB2O46R4AxEmh8exka5m3KfF60oZr7Vbp3qr8YGKE8+Uk+b0nleGqzp5llVUwZi3EaxBIicirgbcAN6pqRUQWyhN4taqubq0Uc1HZx0SzLcWqnCtOcqEwPi+vPGpSuXxKWBlNim2KU3ukkofC7GRvP78DxCX5Z5YEUX62d1X7oRoTRyHaJBF+IdkGBTNzyyyiOVXQcO5+eyeLkwyXZ1YQjlbLvDBpJQzMxjL1/+8arNp7L/ARVa3U3vdcy403G4aNSJltabhUoBBUyQskEdDs4GHhQCKqjFNXflIESAIQJ9UxfdhxfDKdl9Wm8wTHW/mUWSNBUCaozNRcSqXb8PylJ3d7jsNgWwdDxQKhxmQ9f1n5UaUw4HxhsvbdE3bk89NFUceqlbrSDDEwFiwcoBqz1pa5116fiDw86/k9qnrPEl97AHiliHwYKAP/TFUfatQk4AERUeDPlnF/s44skDIrJiI/BXwIuAa4TVUfrh2/FHgG+H7t0m+r6nvWoYlNFWv1jUoKuaRGwnSQ46UWXvkmjfZ9c3zSXdciUn9OxMH186vS5tk0juuCKIBqZRLX85e1n1/KdRls71j8wjmiOJ4OoiCZJjxXmGRPRxeOp6ddZwAADFFJREFUCGnXRYL6aucZ2y/PbEBRtOTRpqGFcpZE5MvAzganPkjyt7YbuB24Ffi0iFyuc4dy4eWqeqo29fclETmsql9fagPN+rBAyrTiSeBtwJ81OPecqt68xu1ZMgchRomBC3ESTGUch2w6h+stnMfkZfuTquXT02lCuv3SNc1/ijWCqY1ZNJ5uSxRU8FLN87tUlSisohrjuB7uMoqUzhY2meoI44iU67GvrYORaoWw1i4H4bL2zhW9lzEXy2qu2lPV1zY7JyLvBf53LXB6UERioA84P+cep2r/PSci9wG3ARZIbXAWSJkVU9VngFWdrlorvdkc54rJiEoMFHHozrUvaXWZ46bIdO0nrIwmK/3SnTju8uslLVccR4RBFURwHY+ZIGpmaqJaHkUcB9eb3x5VpVyaQOOZAoR+Kou/yAhcI43KLChMf/98x+WWnh2MBhVUoSuVXtHWNcZcTGu4au+zwGuAQyJyAEgBdQnlIpIHHFWdqH39euB316JxpjUWSJmL5TIReQwYB35HVb+x3g2aLeen2NXWQSkIcERoS6VwljElliSO9y9+4SpJVhfOTOWFVPD8LGFlfgJ3UJlsGEhFUVAXRAEE1RKe37wIZxBFlIIqkFQvnwqgPMehI51hvDJT4qErk60LsFzHoXeR1Y/GrKu1qyP1CeATIvIkUAV+XlVVRAaBj6vqXcAAcF/t36IH/KWq/u1aNM60xgIps6CF5v1V9XNNXnYauERVh0XkpcBnReQ6VZ33V19E7gbuBhgYGODQoUMNbzg5Odn03GYwN519rliVSGPKhSJf+epX55UJUJ2/Mm5qY2al/g+BIIjT4J+2KnGD1X1Ok9wlJZmqm82fc62SjHSJyLI2p9nsP8/l2C593Yz9VJRg6cnmK38f1SrwzgbHTwF31b4+Ctx00RtjVp0FUmZBC837L/CaCjC1zPcREXmOZNXKww2uvQe4B+DgwYN65513NrznoUOHaHZuIxutlDhVmKgFGcLe9k7a/PqK3aUgYLg2zXj44Uc5cMvNdKQzdGRmRnNKxYl5JQ4c18N3XSqlkbrjfqYTPzV/9V0cR5SL9bGs47hkco2Tzc8XJqhG9YFUzvfpzraePL9Zf54rsV36uhn7qbo2daTM1mZJC2bViUi/1JavicjlwH7g6Pq2au0FccSpwsR0HlaMcnxibHovuimFaqVudZsChdp02pRGCfCe6+P6GVKZLsTxEMdrGkRBEjSlM23T03iO65HOtjW8thSGlBp8Uo8vXg1PY9aBEsfxkh7GNGMjUmbFROStwJ8C/cDnReRxVX0DcAfwuyISkmx18B5VvbCOTV0XlShCkHkVxIM4Iu3O/NNrlJ/kzJko82v1oZJk8+S5VxvZ8lLZBVfqzeZ6Plmva8FrqlHEYxfO0Ob6dHup6WlGISniacyWYSNSZhVYIGVWTFXvA+5rcPwzwGfWvkUXV6zKs+MjjFbL5FyfA509pNzmtZFSjjsviFJ03uq1jnSGUlCdvlKAzmx9YCQipFIZUitYYbdcw5USscJoWMUBOjwfBXoyOXK2kbDZQrQ2ImVMKyyQMmaJvjt8luFKmRhljAoXqiVevmNPw1IAkBS73JFt41xpcnpkajA/v8SC77rsbOtgslrBcYT+fDtpb2P807wQVrkQVhHgkhY2SDZmo7JAyrRqY/y2NmaN/WB0mEMnnkeBO3bv4+ruhUsZBHHEUKU0q5I3BHHMSLVMX6b5tip92RwdqTTVOCLtuvNWvU3xXJeubA5XnHUPonozWZ6fnMnlchB2ZvObsl6YMQtRVcI5CyqMWS4LpMy284PRYT7x9KMEtU+iz4+P8K6rb+aanotTFyrlugtOAW40Kcfllt4Bjk2MUYkjetMZdufa17tZxlwUNiJlWmWBlNl2vnby2HQQBcnI0qGTxxYMpHzHpTed5UJtak8A33HoXoOcpfWQcT2u7upd72YYc1FZ+QOzGiyQMgaAxdf139w7UJdsvr+zp2l+lDFmM7Bkc9M6C6TMtnPH7kt5buzC9KiU7zi8avdlDa8dKhe59wdPMlQu0pvJ8o4rr+dAZ89aNtcYc5HYiJRZDfZx2mw7B7p6efc1L2F/Zw9Xdvbwrqtv5toG03pBHHHP049wujhBNY44U5zknqcfmVft2xizWSWbFi/lYUwzNiJltqUD3X0c6O5b8JrzpSJBFNWt1AvjmHOlAnvaGm+rYozZPFQhXIO99szWZoGUMU1kXI9oznYukSqZDVLjyRjTKsuRMq2zqT1jmujJZLmxd4BULaHcdxxu6N2xYN0oY8zmMZUjZXvtmVbYR2tjFvAPLr+Gq7p6OVsqsCOb54aeHevdJGPMqrERKdM6C6SMWYCIcEPvADesd0OMMatOsVV7pnUWSBljjNmebIsYswoskDJblqry9aefZGhijB/afzV7ehdepWeM2V5sRMqsBgukzJYUxzFv/be/x1e+911cxyGKY/7PBz7EndffuN5NM8ZsFFaQ06wCW7VntqT7Hvx7vvLkdylUyoyXihQqZX7mj//NejfLGLOBaC3Z3FbtmVbYiJTZkl48f54grM99OD8+tk6tMcZsSDYiZVaBBVJmS7r1ygN4rkO1VrTYcRyuv2Tf+jbKGLPBKGqBlGmRTe2ZFRORfycih0XkCRG5T0S6Zp37gIg8KyLfF5E3rHXbXnHNdfz+O96F73qkfZ/L+gf47G/9q7VuhjFmI1MgCpf2MKYJG5EyrfgS8AFVDUXk3wAfAH5LRK4F3gFcBwwCXxaRA6q6puuMf/3H38p73vBjTJRK9HV0ICJr+fbGmA1PIdbFLzNmATYiZVZMVR9Q1amPat8G9tS+fgtwr6pWVPV54FngtvVoYyaVor+z04IoY0xjGi/tYUwTFkiZ1fILwP+tfb0bOD7r3InaMWOM2TiSQlJLexjThE3tmQWJyJeBnQ1OfVBVP1e75oNACHxy6mUNrm84fi4idwN3AwwMDHDo0KGG7ZicnGx6biuxfm4926Wvm7OfakGSaZkFUmZBqvrahc6LyM8DbwJ+RFWngqUTwN5Zl+0BTjW5/z3APQAHDx7UO++8s+H7HDp0iGbnthLr59azXfq6aftp03amRTa1Z1ZMRN4I/BbwZlUtzjp1P/AOEUmLyGXAfuDB9WijMcY0pQphtLSHMU3YiJRpxUeBNPClWjL3t1X1Par6lIh8GniaZMrvV9d6xd5aieOYrz76EOdHR7j9uhu5dNfgejfJGLMcazAiJSJ/BVxVe9oFjKrqzQ2ueyPwJ4ALfFxVP3LRG2daZoGUWTFVvXKBcx8GPryGzVlzcRzzpvf/Gt944lFEhCiO+dwf/hGvPXj7ejfNGLMUujY5Uqr601Nfi8h/AOZtsyAiLvAx4HUk6REPicj9qvr0RW+gaYlN7RmzQvd9/St8/YlHmSyVmCgWKZbL/OzvfnC9m2WMWY41XLUnydD924FPNTh9G/Csqh5V1SpwL0kpGbPBWSBlzAodP3eWMKyveDw8NspMzr0xZqNT1SU9VskrgbOq+oMG56xszCZlU3vGrNDt192A67hAAIDrONx4xQEr/mnMZqEK4ZK3f+kTkYdnPb+ntuoYWFqpGOAf0ng0CpZRNsZsLBZIGbNCt193I//uV36d3/jTf48CVwzu4XN/+Efr3SxjzJLpcpLNh1T1YNM7LV4qxgPeBry0ySVLLhtjNhYLpIxpwa+87ae5+83/gEK5RGdb+3o3xxizHFOVzdfGa4HDqnqiyfmHgP21kjEnSfYr/Zm1apxZOcuRMqZFnudZEGXMZqW6tEfr3sGcaT0RGRSRLyTN0BB4H/BF4Bng06r61Gq8sbm4bETKGGPMNrV2W8So6j9qcOwUcNes518AvrAmDTKrxgIpY4wx29PaTu2ZLcoCKWOMMduUQrTkVXvGNGSBlDHGmO1JgdgqDJjWWCBljDFm+1qDvfbM1iZWhdlsFCJyHnihyelLgBfXsDnrxfq59WyXvq51P/epan8rNxCRvwX6lnj5kKq+sZX3M1uTBVJmUxCR863+0twMrJ9bz3bp63bppzFzWR0ps1mMrncD1oj1c+vZLn3dLv00po4FUmazGFvvBqwR6+fWs136ul36aUwdC6TMZnHP4pdsCdbPrWe79HW79NOYOpYjZYwxxhizQjYiZYwxxhizQhZIGWOMMcaskAVSxhhjjDErZIGUMcYYY8wKWSBljDHGGLNC/x+0+QiL38FR2gAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 2 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"## in this case, we can estimate the density nonparametrically. this works well, at least visually, and will work with many centers and also take covariance into account\n", | |
"## this kerneldensity approach is powerful, it handles covariance and also multiple clusters\n", | |
"\n", | |
"from sklearn.neighbors import KernelDensity\n", | |
"\n", | |
"kde = KernelDensity()\n", | |
"\n", | |
"kde.fit(df)\n", | |
"df[\"density_estimate\"] = kde.score_samples(df)\n", | |
"df.plot.scatter(\"A\", \"B\", c = df.density_estimate, cmap = plt.cm.BrBG_r)\n", | |
"plt.title(\"Kernel based density estimation, color is the estimated likelihood, more negative is an anomaly\")\n", | |
"plt.grid(True)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 228, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"## the above approach can be combined, \n", | |
"## so you can add the kerneldensity estimated likelihood to the calculated likelihood of some estimates\n", | |
"## you assume independence in that case between the groups" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"## last problem, what if you know already a bit about some reasonable values for a column, but you don't see them always?\n", | |
"## so for example, you have a column where you see a lot of zeros, and a single one, \n", | |
"## but ones are actually not that strange normally\n", | |
"## in essence, you have prior information on the usual distribution\n", | |
"## and you want to let it be influenced by the sample at hand but not completely overtaken" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"## lets say for a column you know the incidents of 1's is roughly 10%, the rest are zero's\n", | |
"## and you look at a sample where you see 1 one in 100 observations" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 230, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(-4.605170185988091, -0.01005033585350145)" | |
] | |
}, | |
"execution_count": 230, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"## the likelihood if you only look at the observed data is 1/100 for the 1\n", | |
"## the difference is 4, which, if you compare this to the previous example, is pretty big and would overwhelm any outlying observed\n", | |
"## in the continuous variables\n", | |
"\n", | |
"np.log(1 / 100), np.log(99 / 100)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 232, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(-2.3025850929940455, -0.10536051565782628)" | |
] | |
}, | |
"execution_count": 232, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"## now if you calculate the likelihood based on the prior distribution, the difference is much smaller\n", | |
"\n", | |
"np.log(10 / 100), np.log(90 / 100)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 234, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(-2.659260036932778, -0.03735578654376886)" | |
] | |
}, | |
"execution_count": 234, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"## if you want to learn a bit from the data and a bit from the sample, imagine you have already seen 200 observations \n", | |
"## among which 20 ones, and calculate the likelihoods based on that\n", | |
"\n", | |
"np.log((20 + 1) / (300)), np.log((190 + 99) / (300))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"## similar tricks can be used to balance for categorical variables\n", | |
"## I don't know how to handle covariance between discrete and categorical variable\n", | |
"# perhaps you'd need something like this https://www.sciencedirect.com/science/article/pii/S0047259X02000258\n", | |
"## if you assume independence, in the end, you just add all the loglikelihoods for the samples\n", | |
"## the lowest value is the least likely example and that's the anomaly" | |
] | |
} | |
], | |
"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.7.0" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment