Skip to content

Instantly share code, notes, and snippets.

@AllanLRH
Last active April 12, 2017 10:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AllanLRH/7a1d7de681323b05ad06973406c4cc9a to your computer and use it in GitHub Desktop.
Save AllanLRH/7a1d7de681323b05ad06973406c4cc9a to your computer and use it in GitHub Desktop.
DR 'kontanthjælps' plot
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/allan/homeInstalled/miniconda3/envs/py36/lib/python3.6/site-packages/matplotlib/__init__.py:913: UserWarning: axes.color_cycle is deprecated and replaced with axes.prop_cycle; please use the latter.\n",
" warnings.warn(self.msg_depr % (key, alt_key))\n"
]
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib as mpl\n",
"import matplotlib.pyplot as plt\n",
"from io import StringIO\n",
"from IPython.display import display as disp\n",
"from IPython.display import display_markdown as mdisp\n",
"mpl.style.use('fivethirtyeight') \n",
"%matplotlib inline\n",
"mpl.rcParams['figure.figsize'] = [12, 7] "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Redoing the DR 'kontanthjælps' bar chart"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The raw data\n",
"\n",
"Data from online service, allowing people to upload an image, identify the y-axis and extract the data form a bar chart by clicking the top of the bars on the image."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"Draw 10 rows at random to inspect the data"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>guess</th>\n",
" <th>freq_raw</th>\n",
" </tr>\n",
" <tr>\n",
" <th>guess</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>90</th>\n",
" <td>90.0</td>\n",
" <td>1.170755</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>60.0</td>\n",
" <td>6.726687</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>84</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>16.0</td>\n",
" <td>3.315118</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" guess freq_raw\n",
"guess \n",
"24 NaN NaN\n",
"90 90.0 1.170755\n",
"60 60.0 6.726687\n",
"29 NaN NaN\n",
"67 NaN NaN\n",
"84 NaN NaN\n",
"33 NaN NaN\n",
"44 NaN NaN\n",
"70 NaN NaN\n",
"16 16.0 3.315118"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = StringIO(\"\"\"\n",
"1, 17.165215017616937\n",
"2, 47.10955864139803\n",
"3, 46.147780063795054\n",
"4, 28.0168435100419\n",
"5, 115.00396823390844\n",
"6, 24.949221771197195\n",
"7, 26.08600704677462\n",
"8, 56.221735811668125\n",
"9, 4.70394953013078\n",
"10, 93.40838434746563\n",
"11, 1.6357211822809588\n",
"12, 32.72534260771102\n",
"13, 7.916854125699499\n",
"14, 5.81070765995521\n",
"15, 53.87901183393068\n",
"16, 3.3151182129298666\n",
"18, 19.325652989318623\n",
"19, 3.4831489073455244\n",
"20, 57.27480904454027\n",
"21, 3.2775084546130047\n",
"22, 0.9802801522588533\n",
"23, 1.1631727672997416\n",
"25, 14.892251075467227\n",
"26, 2.1015968982059583\n",
"27, 12.39635832393933\n",
"30, 28.025032731610896\n",
"31, 1.3084556240237488\n",
"32, 1.30056970695731\n",
"34, 3.2010757199690594\n",
"35, 8.917152375127005\n",
"40, 6.986922520864831\n",
"42, 2.590523756325164\n",
"45, 1.4382699511174335\n",
"47, 1.2399088064462425\n",
"50, 5.8110109644577665\n",
"51, 1.7967758731378436\n",
"54, 1.979971792681268\n",
"55, 1.2095783561907085\n",
"60, 6.726687257672351\n",
"75, 3.6666481313915233\n",
"85, 3.8501473554375036\n",
"90, 1.1707553798636252\n",
"\"\"\")\n",
"\n",
"df = pd.DataFrame(np.loadtxt(data, delimiter=', '), columns = ['guess', 'freq_raw']) \n",
"df['guess'] = df.guess.astype(int) \n",
"df = df.set_index('guess', drop=False)\n",
"df = df.reindex(np.arange(df.index.min(), df.index.max()+1))\n",
"mdisp(\"Draw 10 rows at random to inspect the data\", raw=True)\n",
"df.sample(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a new column with the rounded-off frequency, and a column with the differnece between the rounded and the importet data. Examine the data."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>guess</th>\n",
" <th>freq_raw</th>\n",
" <th>frequency</th>\n",
" <th>error</th>\n",
" </tr>\n",
" <tr>\n",
" <th>guess</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1.0</td>\n",
" <td>17.165215</td>\n",
" <td>17.0</td>\n",
" <td>-0.165215</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2.0</td>\n",
" <td>47.109559</td>\n",
" <td>47.0</td>\n",
" <td>-0.109559</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3.0</td>\n",
" <td>46.147780</td>\n",
" <td>46.0</td>\n",
" <td>-0.147780</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4.0</td>\n",
" <td>28.016844</td>\n",
" <td>28.0</td>\n",
" <td>-0.016844</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>5.0</td>\n",
" <td>115.003968</td>\n",
" <td>115.0</td>\n",
" <td>-0.003968</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" guess freq_raw frequency error\n",
"guess \n",
"1 1.0 17.165215 17.0 -0.165215\n",
"2 2.0 47.109559 47.0 -0.109559\n",
"3 3.0 46.147780 46.0 -0.147780\n",
"4 4.0 28.016844 28.0 -0.016844\n",
"5 5.0 115.003968 115.0 -0.003968"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['frequency'] = df.freq_raw.round() # Still stored as float: http://stackoverflow.com/a/11548224/1623829\n",
"df['error'] = df.frequency - df.freq_raw\n",
"df.head() "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>error</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>42.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>-0.052612</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>0.238455</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-0.483149</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-0.235366</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>-0.055520</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>0.117678</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>0.409476</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" error\n",
"count 42.000000\n",
"mean -0.052612\n",
"std 0.238455\n",
"min -0.483149\n",
"25% -0.235366\n",
"50% -0.055520\n",
"75% 0.117678\n",
"max 0.409476"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.describe()[['error']]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The most extreme deviations are almost 0.5, which means that simply rounding the value might be off by 1.\n",
"The questionable guesses are"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>guess</th>\n",
" <th>freq_raw</th>\n",
" <th>frequency</th>\n",
" <th>error</th>\n",
" </tr>\n",
" <tr>\n",
" <th>guess</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>19.0</td>\n",
" <td>3.483149</td>\n",
" <td>3.0</td>\n",
" <td>-0.483149</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>42.0</td>\n",
" <td>2.590524</td>\n",
" <td>3.0</td>\n",
" <td>0.409476</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" guess freq_raw frequency error\n",
"guess \n",
"19 19.0 3.483149 3.0 -0.483149\n",
"42 42.0 2.590524 3.0 0.409476"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.loc[[df.error.argmin(), df.error.argmax()]]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Only three people guessed on theese percentages (the index column, guess), so it's a one off error is quite a lot... but I'm too lazy to do all the mouse-clicking again.\n",
"\n",
"Plotting the errors, just to bare sure that there isn't a lot of values around 0.5:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAyIAAAGYCAYAAAC+g1ZkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XeYnGW5+PHvvT11N41AEjpLEwWVqiChhyJgVxDFS1SO\nYtcDevRwPB6PeM5PPSoiFooFRVEERJp0EZAoIlVcekJJ2+ymb7Y8vz9mEnZnd5OdZPad2c33c11z\n7Vvveead2Zm552mRUkKSJEmSslRV7gJIkiRJ2vKYiEiSJEnKnImIJEmSpMyZiEiSJEnKnImIJEmS\npMzVlLsAxWhvb3eIL0mSJGmEaWxsjMJt1ohIkiRJypyJiCRJkqTMjcpEpKWlpWLiVFJZjGOccscw\njnHKHcM4xqmEOJVUFuMYp5wxRmUiIkmSJKmymYhIkiRJypyJiCRJkqTMZZaIRMSciHg8Ip6IiHM2\ncNx+EdEVEW/NqmySJEmSspVJIhIR1cB3gWOBPYF3RcSegxz3NeCmLMolSZIkqTyymtBwf+CJlNJT\nABFxOXAS8GjBcR8FfgPsl1G5JEmShlVTU9NGj2lra8ugJFJlyapp1kxgXq/1+flt60XETOBNwPcy\nKpMkSZKkMomU0vDfSa6/x5yU0hn59dOAA1JKZ/U65grg6ymleyPiUuDalNKve8dpb29fX9hSjaEs\nSZI0nPbbb+MNPebOnZtBSaRsNTc3r19ubGyMwv1ZNc16Hti21/qs/Lbe9gUujwiAqcBxEdGVUrpq\noIC9H1ihlpaWDe4fqlLEqaSyGMc45Y5hHOOUO4ZxjFMpcQptSsxKe0zG2fLibG6MrBKRuUBzROxI\nLgF5J3BK7wNSSjuuW+5VIzJgEiJJkiRpZMskEUkpdUXEWcCNQDVwcUrpkYg4M7//wizKIUmSJKky\nZFUjQkrpOuC6gm0DJiAppdOzKJMkSZKk8nBmdUmSJEmZy6xGRNKGOc68JEnaklgjIkmSJClzJiKS\nJEmSMmciIkmSJClzJiKSJEmSMmciIkmSJClzjpolSZIkVaDRPqKmNSKSJEmSMmciIkmSJClzJiKS\nJEmSMmciIkmSJClzJiKSJEmSMmciIkmSJClzDt+rLdZoHxJPkiSpklkjIkmSJClzJiKSJEmSMmci\nIkmSJClz9hGRRhn7vkiSVF5+Fg+NNSKSJEmSMmciIkmSJClzJiKSJEmSMmciIkmSJClzJiKSJEmS\nMmciIkmSJClzJiKSJEmSMmciIkmSJClzJiKSJEmSMpdZIhIRcyLi8Yh4IiLOGWD/qRHxYEQ8FBF3\nR8TeWZVNkiRJUrYySUQiohr4LnAssCfwrojYs+Cwp4FDU0qvBL4M/CCLskmSJEnKXlY1IvsDT6SU\nnkoprQUuB07qfUBK6e6U0tL86r3ArIzKJkmSJCljNRndz0xgXq/1+cABGzj+/cD1w1oiSZIklV1T\nU9NGj2lra8ugJMpapJSG/04i3grMSSmdkV8/DTggpXTWAMceBlwAHJxSWtJ7X3t7+/rCtrS0DG+h\nNertt99+Gz1m7ty5GZQkp1TlqbTHJUlbOt+XN2w0Xh8/03Oam5vXLzc2Nkbh/qxqRJ4Htu21Piu/\nrY+IeBXwI+DYwiSkUO8HVqilpWWD+4eqFHEqqSzGKd6mxqy08pQiTqU9V8bZ8uJUUlmMY5xS8315\nw0bD9SlUzs90qIz35awSkblAc0TsSC4BeSdwSu8DImI74ErgtJTSPzMql6RhZpW7JI1Ovr9rc2WS\niKSUuiLiLOBGoBq4OKX0SEScmd9/IfDvwBTggogA6Eop7ZtF+SRJkiRlK6saEVJK1wHXFWy7sNfy\nGcAZWZVHkiRJUvk4s7okSZKkzJmISJIkScqciYgkSZKkzJmISJIkScpcZp3VJUmSJGWvUodatkZE\nkiRJUuZMRCRJkiRlzkREkiRJUuZMRCRJkiRlzs7qkkaESu1oJ0mSNo01IpIkSZIyZyIiSZIkKXM2\nzZIkjWo265OkymSNiCRJkqTMmYhIkiRJypyJiCRJkqTM2UdE0oBsVy9ppPL9SxoZrBGRJEmSlDkT\nEUmSJEmZMxGRJEmSlDkTEUmSJEmZMxGRJEmSlDlHzdKQOAKJJEmSSskaEUmSJEmZMxGRJEmSlDkT\nEUmSJEmZMxGRJEmSlDkTEUmSJEmZy2zUrIiYA3wLqAZ+lFI6r2B/5PcfB6wCTk8p3Z9V+SRJpeEo\ne5Ky5vvOyJRJIhIR1cB3gaOA+cDciLgmpfRor8OOBZrztwOA7+X/SpIkZc4vt9Lwyqpp1v7AEyml\np1JKa4HLgZMKjjkJ+EnKuRdoiohtMiqfJEmSpAxllYjMBOb1Wp+f31bsMZIkSZJGgUgpDf+dRLwV\nmJNSOiO/fhpwQErprF7HXAucl1K6K79+C3B2Sukv645pb29fX9iWlhYA9ttvv43e/9y5czd6zGiN\nU2lK8bgq7dpUWnm0YVn9j47E94tKey2P1vJUUpxKKksp44xWXufh57XZsGKvT3Nz8/rlxsbGKDw2\nq87qzwPb9lqfld9W7DHr9X5gG1PMsaM9TktLS0nuv1RxBlKKuJsaY7geV7nLU4o4lVSWUsYZSDlf\ng6M1TiX9b1X6a6fS4lRSWTYnTiW994zW12AlXeNSxik0Gl6DpYxTqJiYWTXNmgs0R8SOEVEHvBO4\npuCYa4D3RM6BQHtK6cWMyidJkiQpQ5nUiKSUuiLiLOBGcsP3XpxSeiQizszvvxC4jtzQvU+QG773\nfVmUrVIVjsIxnL+eSJIkSVnLbB6RlNJ15JKN3tsu7LWcgI9kVR5JkkYyf7CSNNI5s7okSZKkzJmI\nSJIkScqciYgkSZKkzJmISJIkScqciYgkSZKkzJmISJIkScqciYgkSZKkzJmISJIkScqciYgkSZKk\nzJmISJIkScpcTbkLoC1LW1tbn/WWlhaam5vLVBpJkiSVizUikiRJkjJnIiJJkiQpczbNkiRpCGxa\nKkmlZY2IJEmSpMxZI5JX+EsX+GuXJEmSNFysEZEkSZKUORMRSZIkSZkzEZEkSZKUORMRSZIkSZkz\nEZEkSZKUORMRSZIkSZlz+N4Sc8IrSZIkaeOsEZEkSZKUORMRSZIkSZkb8U2znBFdkkYnm7pK0ug2\n4hMRSZIkScOv1D8Q2TRLkiRJUuaGPRGJiMkR8YeIaMn/nTTAMdtGxG0R8WhEPBIRHx/uckmSJEkq\nnyxqRM4BbkkpNQO35NcLdQGfTintCRwIfCQi9sygbJIkSZLKIItE5CTgx/nlHwMnFx6QUnoxpXR/\nfnk58BgwM4OySZIkSSqDSCkN7x1EtKWUmvLLASxdtz7I8TsAdwJ7pZSW9d7X3t6+vrAtLS3DUl5V\nvv3222+jx8ydOzeDkuRUWnm0YaV6vjYWpxQxRmocbVglXedKe+1U0rWpRF7n4ee1Ka3eHdkbGxuj\ncH9JEpGIuBnYeoBd/wb8uHfiERFLU0r9+onk940H7gC+klK6snB/70RkQ0o1xGMp4lRSWUZLnKam\nQfPY9QYa1nlLKc9wxamksmxOnFI9XxuLU4oYIzXOQHwNvmy4rnM5378q/bVTaXHK/dqppNdgpcXx\ntTx8MQZKREoyfG9K6cjB9kXEgojYJqX0YkRsAywc5Lha4DfAZQMlIZIkSdJwcn66bGXRR+Qa4L35\n5fcCVxcekG+ydRHwWErpGxmUSZIkSVIZZZGInAccFREtwJH5dSJiRkRclz/m9cBpwOER8UD+dlwG\nZZMkSZJUBsM+s3pKaQlwxADbXwCOyy/fBfRrNyYNxGpTSZKkkc+Z1SVJkiRlzkREkiRJUuaGvWmW\nJEmSKkdhE2ebN6tcrBGRJEmSlDkTEUmSJEmZMxGRJEmSlDkTEUmSJEmZMxGRJEmSlDlHzZKkEc5J\nPiVJI5GJiCQJMKGRJGXLplmSJEmSMmciIkmSJClzJiKSJEmSMmcfEUmStFnsXyRpU1gjIkmSJClz\n1ohIkrSFsiZDUjmZiEjaohR+8fJLlyRJ5WHTLEmSJEmZs0ZEkjaBNSuSJG0ea0QkSZIkZc5ERJIk\nSVLmTEQkSZIkZc5ERJIkSVLmTEQkSZIkZc5ERJIkSVLmTEQkSZIkZc5ERJIkSVLmTEQkSZIkZW7Y\nE5GImBwRf4iIlvzfSRs4tjoi/hYR1w53uSRJkiSVTxY1IucAt6SUmoFb8uuD+TjwWAZlkiRJklRG\nWSQiJwE/zi//GDh5oIMiYhZwPPCjDMokSZIkqYwipTS8dxDRllJqyi8HsHTdesFxvwa+CkwAPpNS\nOqHwmPb29vWFbWlpGb5CS0XYb7/9NnrM3LlzMyiJRhpfO5KK4XuGRprm5ub1y42NjVG4v6YUdxIR\nNwNbD7Dr33qvpJRSRPTLfCLiBGBhSumvETF7KPfZ+4EVamlp2eD+oSpFnEoqi3Gyi1NoU2NW0uOq\npLKM5jiFRsNrp1RxKqksxjFOuWMMZlPiVtK1Mc7IirO5MUqSiKSUjhxsX0QsiIhtUkovRsQ2wMIB\nDns9cGJEHAc0ABMj4mcppXeXonzScGpra+u3bTg/ZCRJkkaDLPqIXAO8N7/8XuDqwgNSSp9LKc1K\nKe0AvBO41SREkiRJGr2ySETOA46KiBbgyPw6ETEjIq7L4P4lSZIkVZiSNM3akJTSEuCIAba/ABw3\nwPbbgduHu1ySJEmSyseZ1SVJkiRlbthrRCRJkrT5CgdHcWAUjXTWiEiSJEnKnImIJEmSpMyZiEiS\nJEnKnImIJEmSpMyZiEiSJEnKnImIJEmSpMyZiEiSJEnKXKSUyl2GIWtvbx85hZUkSZIEQGNjYxRu\ns0ZEkiRJUuZMRCRJkiRlbkQ1zZIkSZI0OlgjIkmSJClzJiKSJEmSMmcikhcRu0fEERExvmD7nCLj\n7B8R++WX94yIT0XEcSUo309KEOPgfHmOLvK8AyJiYn55TER8KSJ+FxFfi4jGIuJ8LCK2LbbcA8Sp\ni4j3RMSR+fVTIuL8iPhIRNQWEWeniPhMRHwrIr4REWeue5yStDERMaXcZdgSRMRW5S6DRiZfO5Vv\nVCciEfG+IR73MeBq4KPAwxFxUq/d/13E/Z0LfBv4XkR8FTgfGAecExH/VkScawpuvwPevG69iDj3\n9Vr+QL48E4BzI+KcocYBLgZW5Ze/BTQCX8tvu6SIOF8G/hwRf4yID0fEtCLO7e0S4Hjg4xHxU+Bt\nwJ+B/YAfDSVA/jm/EGjIn1cPbAvcGxGzN7FcGoJK+2AYDV8mI6IxIs6LiH9ERGtELImIx/LbmkoQ\n//oijp0YEV+NiJ9GxCkF+y4oIs7WEfG9iPhuREyJiP+IiIci4lcRsU0Rceb0Wm6MiIsi4sGI+HlE\nTC8iznkRMTW/vG9EPEXu/ezZiDi0iDj3R8QXImLnoZ4zSJxhfc7z91GO531ywW0KcF9ETIqIyUOM\nUarnvCTXuITXplSPa7S+Bjf7tZOPs9nXuYSvnVI95xX1P9FHSmnU3oDnhnjcQ8D4/PIOwF+Aj+fX\n/1bE/T0EVANjgWXAxPz2McCDRcS5H/gZMBs4NP/3xfzyoUXE+Vuv5bnAtPzyOOChIuI81rtsBfse\nKKY85JLfo4GLgEXADcB7gQlFxHkw/7cGWABU59djqNd53XOVXx4L3J5f3q6Y5zx/TiNwHvAPoBVY\nAjyW39ZUotfy9UUcOxH4KvBT4JSCfRcUEWdr4HvAd4EpwH/kr9uvgG2GGGNywW0K8AwwCZhcRFnm\nFFzvi4AHgZ8D04uIcx4wNb+8L/AU8ATwbJH/W/sCt+X/T7cF/gC05//PXl1EnPHAfwKP5M9fBNwL\nnF7k6+NG4Gxg64Ln72zgpiHGeM0gt9cCLxZRlt/kr/PJwDX59fr8vvuLiHMDuR+Hzsk/12fnr/VH\ngauLiHN/r+UfAf8FbA98EriqiDgP9Vq+Ddgvv7wr8Jci4jwN/D/gOeC+fDlmFPN8l+o5r9DnvSd/\njXrfOvN/n8r4OS/VNS7VtSnV4xqtr8HNfu2U6jqX8NqU6jmvqP+JPjE35aRKupH7gBro9hDQMcQY\njxSsjyf3IfgNivyiPdByfr2YOFX5F8cfgH3y24b8T9Qrzt/JfeGbUvhmV1i+jcS5AnhffvkSYN/8\n8q7A3CLiFJahFjgR+AWwqIg4DwN1+ce2nPwXWnK1G48NMcZDvPxBMIleXySAh4u8zpX2ZlwxXwSp\noA+Gdc97r+XN+TJ5H3As8C5gHvDW/PYjgHuKiHM1cDowC/gU8EWgGfgx8N9FxHl8U/YVHNcN3Jq/\nLoW31UWU5YGC9X8D/sQA70MbidP7/fS5Dd1HEa+dwrIVE+cxoCa/fO9gr6siy3MIcAHwUv46fzDL\n57xCn/dP5997Xtlr29NDPb/Ez3mprnGprk2pHtdofQ1u9munVNe5hNdmOJ7zsv9P9DlvU06qpBu5\nX8T3IfelpPdtB+CFIca4lfwX/l7baoCfAN1FlOXPwNj8clWv7Y3FvNn0Om8WuSTgfIZYu1Nw/jPk\nfvF9Ov93m/z28UW+8BqBS4En84+xMx/vDmDvIuIMmvysu25DjPPJ/P0/C3wMuAX4Ibnk4twhxvg4\nuS/XPyRXk7Eu0ZoG3Fnkda60N+OK+SJIBX0w5I8t1ZfJDV2bYpL8vxesz83/rQL+UUScm4B/pVft\nEDCdXPJ48xBjPAw0D7JvXpHXuKpg2+nkan2e3ZRrA/zXZjxX88kleZ/OvxdGr33F1FR/NH+dDydX\nO/gtcrXUXwJ+WkScfv+D5GrS5wCXZPmcV+Lznj9v3WffN8g1Jy7qh7gSPuelusal+p8o1eMala/B\nUrx2SnWdS3htSvWcV9T/RO9bDSPfteSaVT1QuCMibh9ijPcAXb03pJS6gPdExPeLKMsbUkod+fN7\nem2vJdf8qCgppfnA2yLieHJNvYo9f4dBdvUAbyoiTjtweuQ6cu9ILkmbn1JaUGSR3rGB+1g12L4B\njv1mRPwyv/xC5DryHwn8MKV034bPXh/jWxFxM7AH8PWU0j/y2xcBbxhqWfKejYh/BX687prk21ye\nTu7X8qF6DPhQSqmlcEdEFBOnPiKq1r0GU0pfiYjngTvJJaFD1bsPWeFgCdVDCZBS+nr+ufpm/jGc\nC6QiyrDOVhHxKXLN7xojIlL+HZDi+rpdAFwXEecBN0TEt4AryX257PcesgFrIjfoQyOQIuLklNJV\n+b4C3UXEWRkRB6eU7oqIE8k17SOl1BMRUUScd5Cruboj/9pL5H6kuQZ4+xBj/AeDX8uPFlGW35G7\nnjev25BSujQiXgK+U0ScqyNifEppRUrpC+s2RsQuwONFxPkhuS8kkPtBZSqwKCK2pojnPKX0nYh4\nCPgXcjVoNeRqr64iV0M3VP8cIHY3uYT9hiLilOI5h8p73nt/9p1IrmXA2GLOp0TPOf2vMeRqDn5H\ncde4VNemVI9rtL4GS/HagdJc51Jdm1I956X+n7i91//Epjyul21K9uLNm7eXb+Sadn2Nl/uItJJL\nKr4GTCoizluB3QbZd3IRcf4HOHKA7XOAliLi/Cf5vlMF23cBfr0J1+lEcv0fXtqEc88tuK3r77Q1\n8JMiY80Gfkmuz9JDwHXAB8nXlAwxxt7kmuRdD+xO7tfxNnK/cL6uiDivItfMaylwF7Brfvs04GNF\nPq7dySXk4wu2zykyxhGbE2MjcY4tUZxSlWekx9mfl5sXvoLcr53HFRNjgDh7kvvltFLivBL4QrFx\nSlWWAeIOufZrI3GKet8aCXHINfP6NHD0ZsY5OP98bW6cQ/KvnczLAxwANOaXx5L7PL2W3PeCxiLi\nfAzYtgTPTT25H8SPzK+fQq61zUeA2iJj7Qx8ltzgTN8EziTfJ3pTbs6sLg2jiHhfSukS46w/bwyw\nc0rp4XKXZTTFidwocB8hlwDvQ26wjavz++5PKb0mixj5Yz8KnDUK41Ta9TmXXD+lGnK//O4P3A4c\nBdyYUvrKJsY5gFxz0EqJU/TjKuG1GWiUysPJNaElpXTiJsYJ4LASxCl3ee5LKe2fXz6D3P/HVeQG\npPldSum8TYjzgXyc35YgzofLVZ6IeIRc0/WuiPgBsJJcf80j8tvfPMSytOfPfZJcf9orUq7lRlEi\n4jJy/w9jyf1oNp5ca4AjAFJKpw8xzseAE8i1sDiO3A96beRa2Xw4pXR7sWXbrAzLmzdvG76xCX17\ntpQ4lVSWkR6HEoz8V4oYxsk8TilGaRx1cUpYlpKNYDla4/Ra3pyROUddHEbhaKP540s24ui622jo\nIyKVVUQ8ONgucp24ttg4lVSW0RyHXEfYFQAppWciNxfOryNi+3ysrGIYJ7s4XSnXrn9VRDyZUlqW\nj7k6Ino2cu5oj1OqsuxLbmCTfwM+m1J6ICJWp5TuKCIG5EY+HI1xqiJiErkvytUp/0t9SmllRHRt\n+NRRH6d3rf/fI2LflNJfImJXcgP+DFVKuf6eNwE3RW7S5nUjNv4/cs14h/qY6sglU2PJ9W9sJddk\na8gTQefVkOsLWU++32lK6bkoYkLpwmCSNs904Bhy7fx7C+DuLTxOJZVlNMdZEBH7pPygHSmlFRFx\nArnJSF+ZYQzjZBdnbUSMTbmBPl67bmNENJIbkGRLjlOSsuS/AH4zIq7I/13AJnxvGq1xyH2Z/Su5\n96sUEduklF6MiPEUl1SPxjhnAN+KiC8Ai4F7Ijdgy7z8vqHqc38ppU5yHcOviYhiOuJfRK4fazW5\nBPSKyE3KeiBweRFxfgTMjYg/k+uD8zWAyE1Q3VpEnJdtSjWKN2/eXr7l/8EPHmTfz7fkOJVUllEe\nZxa95rEp2Pf6rGIYJ9M49YNsn0qv4bK3xDilKssA5x9PEfP7bGlxesUbC+xonAS5CYb3JpcQD3ny\n3V7n71rC52UG+YkrgSZyA+TsvwlxXpE/d/dSlMvO6pIkSZIyV8z4+5IkSZJUEiYikiRJkjJnIiJJ\nkiQpcyYikiRJkjJnIiJJkiQpcyYikqTNFhGviYi/RcTyiLgiIn4ZEf8VEadHxF0Fx6aI2CW/XB8R\n/y8inouIBRFxYUSMye+bGhHXRkRbRLRGxB8joiq/7+yIeD5/f49HxBHZP2pJ0uYwEZEkbZb8jL2/\nBS4FJgO/AN40xNPPA3YF9gF2AWYC/57f92lgPrnZg6cDnyc3wdhuwFnAfimlCeQmhXymBA9FkpQh\nExFJ0uY6kNzMzN9OKXWmlK4E7tvYSRERwAeBT6aUWlNKy4H/Bt6ZP6QT2AbYPh/3jyk3+VU3UA/s\nGRG1KaVnUkpPDsPjkiQNIxMRSdLmmgE8n/rOkDtvCOdNIzdb8V/zza/agBvy2wH+F3gCuCkinoqI\ncwBSSk8AnwD+A1gYEZdHxIzSPBRJUlZMRCRJm+tFYGa+hmOdbfN/V5JLNgCIiK17HbMYWA28IqXU\nlL81ppTGA6SUlqeUPp1S2gk4EfjUur4gKaWfp5QOBrYHEvC14XpwkqThYSIiSdpc95BrLnVWRNRE\nxEnA/vl9fwdeERH7REQDuVoMAFJKPcAPgW9GxFYAETEzIo7JL58QEbvkE5z2/H30RMRuEXF4RNQD\na8glMz2ZPFJJUsmYiEiSNktKaS3wZuD9QBvwbuBaoCOl9E/gP4GbgRbgroLTzybX/OreiFiWP263\n/L7m/PoKcsnOBSml28j1DzmPXI3KS8BWwOeG6/FJkoZH9G3SK0nS5ouIPwMXppQuKXdZJEmVKZMa\nkYi4OCIWRsTDGzluv4joioi3ZlEuSVJpRMShEbF1vmnWe4FXket4LknSgLJqmnUpMGdDB0RENbnO\nhjdlUSBJUkntRq4/SBu5+T/emlJ6sbxFkiRVssyaZkXEDsC1KaW9Btn/CXJjxu+XP+7Xhce0t7fb\njkySJEkaYRobG6NwW0V0Vo+ImeRm4f1eucsiSZIkafhVRCIC/B9wdn4oR0mSJEmjXKUkIvsCl0fE\nM8BbgQsi4uRig7S0tJS6XCqC1798vPbl5fUvL69/+Xjty8vrX15e/81XU+4CAKSUdly3HBGXkusj\nclX5SiRJkiRpOGWSiETEL4DZwNSImA+cC9QCpJQuzKIMkiRJkipHJolISuldRRx7+jAWRZIkSVIF\nqIimWZIk6EmJF1Z28/zKbl5Ylfv74qoe2tf2sKIzsaIz97e7YNj1mqpgfE0wrraKcbXBuJpgUn0V\nW42pYmpDNdMaqpg2poppDdU01gUR/UZQlCQpcyYiklQG3T2Jh5d28ucFa3motZPH2jr5x9IuVnQN\n73RJE2qDbcdVM2t8NduOr2HWuGpmjatm2/z6NmOrqDJRkSRlwEREkjKQUuKJZV3cMG8Ntz7fwdyF\na4c96RjI8s7Eo21dPNrWBXT0219XBbPGVbP9hBq2G1/NduNr2H5CNduNr2b78TVsNabKGhVJUkmY\niEjSMHqotZNfPbmK3z+7mqeWd5e7OBu1tgeeWt49aFkbqmHb8TVsX5CkrFueUm+iIkkaGhMRSSqx\nJWu6+XnLKn7x5CoeXdpV1LkT64IdJ9QwY2yuydQ243Jf7sfXBuNrc39re80AlVIueVjZ1cOqzsSK\nrsTyzkTrmm4Wrelh0eoeFueXX1zVTcdm5kJruqGlvYuW9oFrVMbVRD4xySUn203IJynjc7UsTfZR\nkSTlmYhIUok8uGQt339sJb9+atWQvvBPqa/igOl1HLBVHXtNrmWPplq2GTt8NQopJRav6WH+ym6e\nW9HN/JXdzF/RxbwV3cxb2c1zK7pY2rF5zcVWdiUea+visUGafk2oDWbm+6X0+ZvvrzJjbDUNNSYq\nkrQlMBGRpM10f3sVn75hMXe+2P+Ld2+1VXDw1vUcPauBI2fVs8vEmkxrByKCaWOqmTammldPHfiY\nZWt7mLeim2dXdPHcim6eXZ7/u6Kb55Z3saxz8xKV5Z2Jf7R18Y+2wWuKpjVUMWt8NTPH5jrVr0tY\nZo2rYea4aqaPqaK6ymRFkkY6ExFJ2kR3v9TBeQ8s584XGxjo13+A6oDDZ9Tz9p3HMme7Bib0bldV\ngSbWVfGKyVW8YnLtgPvbOnoGTFLmLe/i2RXdrCxBB/xFa3pYtKaHv9E54P6agG3WJyfVjFtby/6s\nZLemWnb1wHRwAAAgAElEQVRprKGxrrKvsSQpx0REkor0ZHsXX5jbzvXz1gx6zHbjq/nA7uN4xy5j\n2WpMdYalG15N9VU01dex95T++1JKtHb05JOUXFOvdTUpz67Ira8pQX/9rkSuOdmKdcFquXR+2/r9\nW4+pYtemWnZtrOGVk2vZe0ote0yqpb7aWhRJqiQmIpI0RG0dPfzv35fzg8dW0Nkz8DEHb13Hv+w5\nnjnbNmxxzYcigikN1UxpGLjpV0qJJR09zF/XPyU/eeP8Ffm/K7t4aXUPPZtZqfLS6h5eWt3Rp6lc\nTcAek3JJyWum1nHQ9Dp2a6pxzhRJKiMTEUnaiJQS1zy7hs/e28bC1QNnILNn1HP2PhM4aHp9xqUb\nOSKCqQ3VTG2oZp9B+qh09iReXNU3QXl+Za4z/bpkZVM61Hel3FDKD7V28rOWVQBMqg8Oml7PQdPr\neP30evaeUrvFJY+SVE4mIpK0AS+s7OYz97Zx3XMDN8Paf1odZ2y9jLfvOzPjko1OtVWRG/Z3fA1M\nH/iYlZ09fRKU+59dxOKqCbS0d/Hksi6G2k1laUfiuufWrH9um+qCw2c2cOTMeo6c1TCqmtRJUiUy\nEZGkQVzx5Co+fU/bgCNFzRpXzZf2ncibdxzDE0+0DXC2hsu42ip2bcr1AwE4KF6guTnXaaWzJ/HM\n8i7+2dbFI0s7eXBJJw8s6WT+yo13Tmlbm7jy6dVc+fRqAPaZUssbtx/DyTuMYedGPy4lqdR8Z5Wk\nAsvW9vCZe9v41ZOr++2rrYJPvHICn3rVBMY430XFqa0KmhtraW6s5fjtx6zfvmRNNw8u6eRvSzq5\nd0EH9y5Yu9GhiB/IJzFfvn8Ze02u5eQdxvAmkxJJKplM3k0j4mLgBGBhSmmvAfafCpwNBLAc+JeU\n0t+zKJsk9Xbfwg4+cMdSnl3R/xf0/abV8u3XT2KPSQMPbavKNaWhmsNmVnPYzAZgAt09iUeWdnL3\ngrXc/VKuY3vb2sETk4dbO3m4tZP/un8Z+0+r49TmsbxpxzFMdKhgSdpkWf2scylwPvCTQfY/DRya\nUloaEccCPwAOyKhskkRKifMfWcF//GUZ3QXfRxuq4dzXNvLBPcbZmXmUqK4KXjWljldNqePMPcfT\n3ZP46+K13DS/g5vnr+GBJQPPYQJw36K13LdoLef8uZ037tDAac3jOHjrukwnp5Sk0SCTRCSldGdE\n7LCB/Xf3Wr0XmDXcZZKkdVZ29vCxP7Xxm6f7N8Xas6mGH82ezJ7Wgoxq1VXB/lvVs/9W9XzhNRNZ\nsKqba59bzVVPr+ZPC9YOOKTw6u7Er55cza+eXM2eTTV8YI/xvH3nMYyr8EkrJalSVGJD1/cD15e7\nEJK2DM8s7+LUW5bwyNKufvs+tMc4vrRvIw32BdniTB9bzft3H8/7dx/PwtXdXPvsGn791CruXrB2\nwOMfbevik/e0ce5f23l381g+uMd4dphQiR+xklQ5IqXNnDlqqHeUqxG5dqA+Ir2OOQy4ADg4pbSk\ncH97e/v6wra0tAxDKSVtSe5rq+Jz/6hnWVffRGNCdeJLu3VwyORBZi3UFmv+6uDahTX8fmE1L3UM\nXvNRReKoad28d1YnzeOy+ZyVpErT3Ny8frmxsbHfr3oVk4hExKuA3wLHppT+OdAxvRORgbS0tPR5\nwMqW1798vPbFu6xlJR//U1u/OSf2bKrhZ0dMYaeJQ/812+tfXuW4/j0pceeLHVzy+EqufXZNv35F\nvR0zq55PvmoCB47CyS597ZeX17+8vP7FGSgRqYh644jYDrgSOG2wJESSSiGlxHkPLOdrDyzvt+/k\nHcZw/sFNjLeNvzaiKoLZMxqYPaOB+Su6uOTxlVz6+CqWdPSvRbtxfgc3zu/goOl1nLPPRA6dMfoS\nEknaFJl82kbEL4B7gN0iYn5EvD8izoyIM/OH/DswBbggIh6IiL9kUS5JW5a13YkP39U2YBJy7msn\ncsnsSSYhKtqs8TV88bWNPPL2rbng4Cb2aBr4N757FqzlpBsXc+INi5m7cOC+JpK0Jclq1Kx3bWT/\nGcAZWZRF0pZpZWcPp93ayq0vdPTZXl8N3z9kMifvOGaQM6WhaagJTmkexzt3GcsN89bwzQeXM3dR\n/2GA73yxg6N+v4hjZtXz+ddMZO8pdWUorSSVnz/9SRr12jp6eMtNS/olIZPrq7j6mKkmISqpqgiO\n224MNx0/jWuPncoRMwduinXj/A4OvWYR77utlWeW9x+1TZJGOxMRSaPa4jXdnHjDYu4taAqz44Rq\n/nD8tFHZgViVISI4eOt6fnP0VG4+YRqzB+kb8ttnVrP/lQv497nttA3Qx0SSRisTEUmj1vMruznu\nusU82Nq3ecwrJ9dy0/HT2LmxIsbr0BZg32l1XHXMVH43ZyoHbNW/KdbaHvj2wyt47W8W8MPHVtA5\n0AyKkjTKmIhIGpXmr+ji+OsX8c/2vk1eDtyqjt/Nmcq0MdVlKpm2ZIdsU88Nx03liqOm8KrJtf32\nL+no4bP3tvP6qxZy47w1ZSihJGXHRETSqPP8ym7eeMNinlne3Wf7YTPq+c3RU2iq961P5RMRHDWr\ngdtPnMaFh0xixtj+r8d/tnfxjpuX8M6bl9h/RNKo5aexpFHlxVXdnHjDIp4uSEJO2K6By4+cwjiH\n51WFqIrgnbuM5S9vmc7nXz2BcTX95vrihnlrOPC3C/jaA8tYUzj7piSNcH4iSxo1XlqV65j+5LK+\nSciJ2zdwyWGTqa/u/0VPKrexNVX86z4T+etbpnNa81gKX6VruuGrf1vOgVct4Caba0kaRUxEJI0K\nC1fnkpCWgj4hJ2zXwEWzJ1NbZRKiyrb12Gq+c/Ak7jhx2oAd2p9Z3s3bb17CKbcs4Vmba0kaBUxE\nJI14bR09nHzj4n4d04/broGLTUI0wrxqSh3XHzeVCw5uYmpD/4/p655bw0FXLeQ7Dy+ny9G1JI1g\nJiKSRrSVnT284+YlPLq0bxJyzLYNXDp7MnU2x9IIVBW5Wdr/8ubpfGCPcRTm0qu6El+cu4wjr13E\n35esHTiIJFU4ExFJI9ba7sR7bmvlzwWTFR41s56fHGYSopGvqb6K/z2widveOI39p/VvrvXAkk4O\n/90i/n1uO6u6nAxR0shiIiJpROruSZz5x6Xc8nxHn+0HTa/jx4fbMV2jy95T6rjh+Kl8+/VNNNb1\nfW13p9xkiK+7aiG3v2Bndkkjh4mIpBEnpcRn7m3jyqdX99n+ysm1XH7kFMbW+Nam0acqgvfsOo77\n3jSdN+0wpt/+Z5Z3c/KNSzjzzlZa13QPEEGSKouf1pJGnK8+sJxLHl/VZ9vOE6u58ugpNNb5tqbR\nbfrYai45bDKXHzmZmWOr++2//MnVHHjVQn7/7OoBzpakyuEntqQR5Sf/XMn/PLC8z7YZY6v47TFT\nmTam/5cyabSas+0Y7n3zVnxwj3H95h5ZuLqHU29t5YN3trK0w74jkipTJolIRFwcEQsj4uFB9kdE\nfDsinoiIByPiNVmUS9LI8of5a/jk3W19tk2uzyUh242vKVOppPKZUFvF/xzYxE3HT2PPpv7/A796\ncjUH/nYB1z9n7YikypNVjcilwJwN7D8WaM7fPgh8L4MySRpBHli8ltNva6W717QJDdVw+ZGT2a2p\ntnwFkyrAflvVcfuJW3H2PhOoKageWbC6h3fd0sqH7mylzdoRSRUkk0QkpXQn0LqBQ04CfpJy7gWa\nImKbLMomqfI9u7yLd9y8hJVdL2chAfzw0Mnsv1V9+QomVZC66uBzr57ILW+cxism9a8d+WW+duSG\nedaOSKoMkVI2s7JGxA7AtSmlvQbYdy1wXkrprvz6LcDZKaW/9D6uvb19fWFbWlqGtbySKkN7J3zg\nwQaeXt33d5NP77SWd87oGuQsacvW2QMXzavl0nk1dPfrQQLHb9XFp3daywRbNEoaRs3NzeuXGxsb\n+70Zjdi3oN4PbJ2WlpYBtysbXv/yGa3Xfm134uQbF/P06r4TFn7kFeP54v6NZSpVf6P1+o8UXv+B\nfX03OG3xWj5811IeXdo3af/9whr+vrKe7x0yiUO22fRaRa99eXn9y8vrv/kqZdSs54Fte63Pym+T\ntIVKKfHJe9q4e0HfJOTkHcbw5f0mlqlU0siyz9Q6bn/jVnxm7wkUzvE5f2U3J96wmC/ObaejO5vW\nEZLUW6UkItcA78mPnnUg0J5SerHchZJUPuc/vILLWvrOFXLQ9DouPGQSVeGs6dJQ1VUHX3jNRG4+\nYRp7FIyslYDvPLyCw3+3kEdaO8tTQElbrKyG7/0FcA+wW0TMj4j3R8SZEXFm/pDrgKeAJ4AfAh/O\nolySKtP1z63m3/+yrM+2HSdUc9nhk2koHBJI0pC8empuZK2P7jW+X6+RR5Z2cdjvFnL+w8vpyajv\nqCRl0kckpfSujexPwEeyKIukyvZwaycfuGMpvb8KTawLfnnkFCY3OGGhtDnqq4Mv79fI0bMa+Jc/\nLmX+yu71+9b2wBfmLuPGeWv43iGTmOXcPJKGWaU0zZIkFq7u5p03L2FFr2F6qwN+PHsyuzpXiFQy\nh2xTz10nbcXbdx7Tb98fX1rL665eyBVPrhrgTEkqHRMRSRVhTVfi3be09vmFFuC8Axo5bGZDmUol\njV5N9VX84A2TuWT2JJrq+jbWWrY28YE7l/KhO1tZ3ukkiJKGh4mIpLJLKfGxPy3lvkV9R8g6Y/dx\nfGCP8WUqlbRleNOOY7n75OnMntF/GN9fPrmaQ69eyN8Wrx3gTEnaPCYiksrumw+t4FdP9Z3tefaM\nes47oHLmCpFGsxnjqrny6Cmcd0Aj9QVdsZ5a3s3Rv1/Ed+zILqnETEQkldVN89bw5b/2HSGrubGG\nS2dPpqbKEbKkrFRFcOae47n9jVuxZ8Ewv5098MW5y3j7H5awcHX3IBEkqTgmIpLK5qllXZxxZ2uf\nEbKa8iNkNdX79iSVwx6TarnljVtxxu7j+u27+fkODr56Ibc+v6YMJZM02vhJL6ksVnT2cOotS1i2\n9uU0pCrgx4dNZqeJDhsqldOYmuD/HdTETw+f3K8j+8LVPbz5piWcO7cd+7FL2hwmIpIyl1LiI3ct\n5bG2rj7b/3PfiRw6wxGypErxxu3HcNdJW3HQ9Lp++7718ArOeLCeZ5Z3DXCmJG2ciYikzP3fQyu4\n+pm+TTveutMYPvIKR8iSKs2s8TX8bs5UztlnAoXdth5dUc2h1yzk+udWD3yyJG2AiYikTN08fw3/\nWdA5fa/JtXz79U1E2DldqkQ1VcE5r57ItXOmMnNs32G12tcm3nVLa76plqNqSRo6ExFJmXl6WRfv\nv6Nv5/RJ9cHPDp/M2BrfjqRK97qt67nr5K04brv+TSi/9fAKTrxhMS+sdFQtSUPjJ7+kTKzs7OHU\nW5fQXtA5/eJDJ7PDBDunSyPFpPoqLjt8Mv+130Sqo28NyD0L1vKGaxZy+wuOqiVp40xEJA27lBIf\n/VMbjy7t26n13NdO5LCZdk6XRpqI4Ky9JvD9V3YwY2zfrxKL1/TwphuXcN7fltFtUy1JG2AiImnY\nnf/wCq58um9n1pN3GMPH9rJzujSS7T2xhztP2orDZ9T32Z6A8x5Yztv+sITFa2yqJWlgQ05EIuKk\niNjk9hMRMSciHo+IJyLinAH2N0bE7yLi7xHxSES8b1PvS1LluP2FNZxb0Dl9z0k1nH+wndOl0WBq\nQzVXHDWFz716AoX/0be+0MHsaxbxwOK1ZSmbpMpWTI3IfwIvRsT5EXFAMXcSEdXAd4FjgT2Bd0XE\nngWHfQR4NKW0NzAb+HpE9B+4XNKI8czyLt53eyu9W2c01gWXHT6F8bVWyEqjRXVVcPY+E/ntMVOY\n2tD3f3v+ym7mXLeIy59YVabSSapUQ/4mkE8QjgRWA7/J1258ISJ2GMLp+wNPpJSeSimtBS4HTiq8\nC2BC5H4iHQ+0As6SJI1Qq7p6OO3WVpZ2vJyFBHDRoZPZ0ZnTpVFp9owG7jyx/wSIa7rhzD8u5Zw/\ntznEr6T1ivpJMqX095TSZ4FtydVgvA14MiLujIhTI2KweDOBeb3W5+e39XY+sAfwAvAQ8PGUUk8x\n5ZNUGVJKfOJPbTzU2tln+xdfO5EjZ9k5XRrNZoyr5po5U/ngHuP67bvw0ZWcfONiFq2234gkiJSK\n+2UiInYG3p2/9QA/AZ4DPgy8mFJ68wDnvBWYk1I6I79+GnBASumsgmNeD3wK2Bn4A7B3Sml94/L2\n9vb1hW1paSmq3JKy8/Pna/jm031/ET18Shfn7b4Wu4VIW47fL6jmq0/W0dHT9x9/q7oe/nePtew5\nwd8bpdGsubl5/XJjY2O/bwBDbh8RER8BTgOagV8Cp6WU7u21/zfAwkFOf55cLco6s/LbensfcF7K\nZUZPRMTTwO7AfQMF7P3A1mlpaRlwu7Lh9S+fSrr2d77YwbefWdxn2+5NNfz42G2YMEr7hVTS9d8S\nef3LZ2PX/hPNMHv3tbz71lbm95rocOHaKj74cAPfOKiJU5v715xoaHztl5fXf/MV863gWODrwIyU\n0od7JyEAKaVVQL/akLy5QHNE7JjvgP5O4JqCY54DjgCIiOnAbsBTRZRPUpnNW9HF+25rpbtXRevE\nfOf00ZqESNqwfabWcfuJ0zhk6761pB3d8JG72vji3HbnG5G2UMV8M7g9pXRFSqmj98aI+NS65ZTS\nTQOdmFLqAs4CbgQeA36VUnokIs6MiDPzh30ZeF1EPATcApydUlo8UDxJlWd1V+K0W1tZ0vFyU4sA\nfviGyezcaOd0aUs2taGa3x4zlQ+/on/tx3ceXsEpt7aybK3NtKQtTTGJyL8Psv0LQzk5pXRdSmnX\nlNLOKaWv5LddmFK6ML/8Qkrp6JTSK1NKe6WUflZE2SSVUUqJT969lAeW9O2c/rlXT+CYbe2cLglq\nqoL/3r+JH75hEg3VfffdOG8Nc36/iGeXO1imtCXZ6M+UEXH4umMj4jDoM1/RTsDy4SiYpJHjB4+t\n5PIn+86cftx2DXxm7wllKpGkSvW2nceyS2MNp9yyhBdXvVwL8mhbF0dcu4ifHj6Zg6bXbyCCpNFi\nKO0lLsr/rQcu7rU9AS8BHy11oSSNHHe91MHn72vvs625sYYLD5lElUNkSRrAq6fWccsJW3HKLUv6\n1KQuXtPDSTcs5v9e18QpdmKXRr2NNs1KKe2YUtoRuGzdcv62U0rpdSmlwk7nkrYQ81d0cXpB5/QJ\ntcFlh09mYp2d0yUNbsa4aq47bion7zCmz/a1PfDhu9o4107s0qhXzMzq7xnOgkgaWdZ0Jd5zWyuL\n1/TtYHrhIZPYtam2TKWSNJKMrani4tmTOHuf/s04v/XwCt57WyuruuzELo1WG0xEIuKxXsvzIuK5\ngW7DX0xJlSSlxKfvbeP+xX07p//rPhM4fvsxg5wlSf1VRfC5V0/kokP7d2K/9rk1nHjDYhavcSZ2\naTTaWB+RD/RafvdwFkTSyHHx4yu5rGVVn23HbNvAOQP8qilJQ/GWncayw4QaTr1lCS+tfrkW5C+L\nOjnq2kVccdQUdmm0tlUaTTaYiKSU7uq1fMfwF0dSpbtnQQdn39u3c/ouE2v4wRvsnC5p87x2Wh03\nnzCNt9+8hEeXvjyU79PLuzn694v5xRGTOcARtaRRY8h9RCLiUxGxT375wHyzrKcj4qDhK56kSvL8\nym7ee1srXb36j46vCX52xGQa7ZwuqQRmja/h+uOmMXtG34SjtaOHE29czNXPrB7kTEkjTTHfHD4J\nPJ1f/irwDeC/gP8rdaEkVZ41XYn33LqEhav7dhy94JBJ7G7ndEkl1FhXxa+OnMK7dhnbZ3tHN5x+\nWyvffWQFKTmiljTSFZOINKaU2iNiArA38J2U0kXAbsNTNEmVIqXEZ+5t468FndM/s/cETtzBzumS\nSq+uOrjg4KZ+I2ol4N/ua+fsPzu8rzTSFZOIzIuI1wHvBO5MKXVHxETAoSykUe6if6zkZ4Wd02fV\n8/lX2zld0vCJ/Iha5x/cRE1BF7QfPLaSM+5YSke3yYg0Ug1lZvV1Pgv8GlgLvCW/7QTgvlIXSlLl\nuPulDs75c9/O6TtPrOb7b5hs53RJmXh38zhmjq3mPbe1srzz5cTjt8+sprWjh58dMZkJtfZTk0aa\nYiY0vC6lNCOltENK6a/5zVcAJw5P0SSV2/wVXQN2Tr/siCk01fuhLyk7h81s4PrjprHN2L7vPXe8\n2MEbr1/MotU20JBGmqK+SUREY0TsHxGHR8ThwCH5m6RRZt3M6YsKZ05/g53TJZXHXpNrufH4aTQ3\n9m3Q8cCSTuZct4hnlncNcqakSlTM8L2nAy8AvwMu6nX70bCUTFLZpJT41D39Z07/7N4TOMGZ0yWV\n0Xbja7jhuKm8ZmrfH0SeXNbNnN8v4uHWzkHOlFRpiqkR+Qrw1pTS9JTSjr1uOw3l5IiYExGPR8QT\nEXHOIMfMjogHIuKRiHACRalMfvjYSn7+RP+Z0z9n53RJFWBKQzXXzJnK4QVzjby0uofjrl/E3S91\nlKlkkopRTCJSA9y0KXcSEdXAd4FjgT2Bd0XEngXHNAEXACemlF4BvG1T7kvS5vnTSx18/j5nTpdU\n2cbXVnH5kVN46059a2mXrU286abF/P5ZJz6UKl0xicjXgC9ExKb0UN0feCKl9FRKaS1wOXBSwTGn\nAFemlJ4DSCkt3IT7kbQZ5q3o4vSCzukTaoPLnDldUgWqqw5+8IZJfGiPcX22d3TDabe1clnLyjKV\nTNJQFDuz+heA5RHxXO/bEM6dCczrtT4/v623XYFJEXF7RPw1It5TRNkkbaaVnT2ccssAndMPmcRu\ndk6XVKGqIjjvgEa++JqJfbb3JPjIXW18/9EVZSqZpI2JlIY2EVBEHDrYvpTSBvtzRMRbgTkppTPy\n66cBB6SUzup1zPnAvsARwBjgHuD4lNI/1x3T3t6+vrAtLS1DKrekjetJ8Ll/1HHrkr4j0ZyxbScf\n2t6On5JGhqtequarT9TRQ99mpP+y/VreN6sLW5dK2Wpubl6/3NjY2O8/cMgTGm4s2diI54Fte63P\nym/rbT6wJKW0ElgZEXcCewP/ZAC9H9g6LS0tA25XNrz+5bO51/6//7aMW5cs77Pt+O0a+J/DZ9gv\nZAh87ZeX1798Ku3af7YZdtt2Ne+/o5XOXpW733u2jtoJk/nSvhOJUfSeVmnXf0vj9d98xQzfWx8R\nX4mIpyKiPb/t6Ig4a2PnAnOB5ojYMSLqgHcC1xQcczVwcETURMRY4ADgsaGWT9KmufKpVfzPA32T\nkFdMquH7dk6XNAKduMMYLj9yCmOq+75/ffvhFXzqnja6e4bWEkTS8Cumj8g3gb2AU4F1/8WPAP+y\nsRNTSl3AWcCN5JKLX6WUHomIMyPizPwxjwE3AA8C9wE/Sik9XET5JBXpb4vX8uG7lvbZNrWhil8c\nOYXxtXZOlzQyHTGzgSuPmcLE2r7JyCWPr+JDf1xKp8mIVBGG3DQLeBOwS0ppZUT0AKSUno+Iwk7n\nA0opXQdcV7DtwoL1/wX+t4gySdpEL67q5pRblrCm++VttVXws8Mns934Yt4aJKnyHDS9nmvmTOUt\nNy1hScfL7bR+/dRqVnQmLp09mYYaa32lcirmJ8+1FCQuETENWFLSEkkadqu7EqfesoQXV/UdIev/\nXtfEgdPrBzlLkkaWfabWcd1xU5kxtu/XnRvmreFtf1jM8s6eQc6UlIViEpErgB9HxI4AEbENcD65\nOUEkjRApJT72p6Xcv7jvaFhnvWI8pzaPG+QsSRqZdmuq5brjprHDhOo+2//40lredONilnaYjEjl\nUkwi8nngKeAhoAloAV4EvjQM5ZI0TL7x4AqueKrvjMNHzaznS/tOHOQMSRrZdphQw/XHTWOPpr7N\nTv+yqJPjr1/EglXdg5wpaTgVk4jsAjwO/DdwLnBQSukT+ZnSJY0Av3lqFV++f1mfbbs11vCj2ZOp\nrrKttKTRa5ux1fz+2Km8emrfCVofXdrFcdcv4rkVXWUqmbTl2mgiEjkXk6sJ+TzwRuADwN8i4pIY\nTQNyS6PYvQs6+o2Q1VQX/OLIKTTWOUKWpNFvckM1Vx8zlddNr+uz/cll3Rx33WKeaHcCVylLQ/n2\n8UFgNnBgSmn7lNJBKaXtgIOAQ4APDWP5JJXAU8u6OOWWVjoKRsj66eFT2GmiI2RJ2nJMrKvi10dP\n4aiZfQfmmL+ym2OvW8xDrSYjUlaGkoicBnwspTS398b8+ify+yVVqNY13bztD4tpLeiQ+e3XT+KQ\nbRwhS9KWZ2xNFZcdMYWTdxjTZ/uiNT2ccP0i5i601bmUhaEkInsCdwyy7478fkkVaE1X4tRbW3ly\nWd+OmGfvM4F37TK2TKWSpPKrqw4uOnQS727u+17YvjZx8o2LueOFjjKVTNpyDCURqU4pLR9oR367\njculCtSTEmf9aSn3LOj7y947dh7DOftMKFOpJKlyVFcF3359E2fu2Xfo8pVdibffvJjrn1s9yJmS\nSmEojcNrI+IwYLBO6TYwlyrQV+5fxq8Lhul9/dZ1fPv1k3CMCUnKqYrgq/s3MrGuiv954OXfXTu6\n4bRbW/n+Gybxlp2sQZaGw1CSiIXAxRvZL6mC/PCxFXz9wRV9tjU31nDZ4VOorzYJkaTeIoLPv3oi\nE2qDL859eYjzrgRn3LGU5Z2J03dzwlep1DaaiKSUdsigHJJK5KqnV/Ov97b32Ta1oYorjppCU70t\nKSVpMB/dawL/v737DpOjOvM9/n07TY6aUUAZGJKECUYiJ5MkGRAYbGBt1rAGG3uB9d21r/HdtR/v\ng9c478Vegtd4FxavV5ckkCVhJYIwyYCQQAExkgAFQJoZTdKEjuf+0SXRPXk0o+4Jv8/z1NNVp6pm\nTr9TU91v1TmnioI+/tdLDTivzAHffKmB5miC22aqWavIYNK3EpERZPVHYb66eu+BD1CA/ICx4MIx\nTEIfltoAABnfSURBVCtSK0oRkd7ccHQBvz23jECHm8ffe62JH73ZhHOu6x1FpN+UiIiMEG/vjfKl\nVXVEUkbp9Rs8dH45p1SGut9RRETSXH14Pg9/ppwcf3r5T9c283/+0qhkRGSQKBERGQF2tRtXL6+l\nKZr+4fhvZ5Vx0aTcLNVKRGT4mjslj0curKCgw62R+za2cPuLDcQTSkZEBipjiYiZzTGzzWa2xczu\n6GG7WWYWM7OrM1U3keGspi3O7etz2N2W/sDCfz6lWM8KEREZgHMPy+HJSyooCaUnIw9Xt3LT8/VE\n4kpGRAYiI4mImfmBe4C5JB+AeJ2ZdXoQorfdT4DlmaiXyHDXEE5w5fI6tren/yt/Y0YBt88szFKt\nRERGjlljQyyZW0llbvp5duH7bXxxVR1tMSUjIgcrU3dEZgNbnHPbnHMRYAEwv4vtbgMeR0MCi/Sq\nOZrg6hW1rN8bTSv//OF5/HBWiZ4VIiIySGaWB3l6XgWTCtI7jazYFebqFbU0RRLd7CkiPbFMdLjy\nmlnNcc7d5C1fD5zqnLs1ZZuJwB+A80k+t2Sxc+6x1J/T2Nh4oLLV1dWHvN4iQ1V7HP5uQw5rmtI/\nFE8vi/OLY8ME1ftLRGTQfdxufGN9Djs63IU+rjDO3TPClAazVDGRIaqqqurAfElJSacrpENpPM//\nC3zHOZfoy5Xc1De2X3V1dZflkhmKf2aE444vrqpjTVM4rfzM8SEevWgM+QFlIZmmYz+7FP/sGW2x\nrwJWHhHnyuW1bKyPHSjfuM/Pre8U8/jFY5hUmLmvVqMt/kON4j9wmfrGsguYnLI8yStLdQqwwMze\nB64G7jWzKzJTPZHhIZZwfOW5vazclZ6EzCyKs+BCJSEiIofauHw/S+ZWckpl+u2PzY0xLl5Sw8b6\naDd7ikhHmfrW8hpQZWbTzSwEXAssSt3AOTfdOTfNe5L7Y8A3nHNPZqh+IkNeLOH4+gv1LN7enlY+\nszzI3TPCFKk9lohIRpTl+Fh4SQVnj09/RtOHrQnmLq3hxY/D3ewpIqky8s3FORcDbgWWAZuAR5xz\nG8zsFjO7JRN1EBnOYgnH11bX8+i2trTyqpIACy8eQ/FQamQpIjIKFAV9PHpRBZdPTX9WU2PE8bnl\ntSx6v62bPUVkv4xdQnXOLXXOHeWcO8I59y9e2f3Oufu72PaGjh3VRUaraMJx8/P1PP5e+ofalEI/\nT15SQWWev5s9RUTkUMoNGP95Xjk3H1OQVh6Ow5ef3cvv3tmXpZqJDA9qyyEyhEW9PiELO1xZm1zo\nZ9GcCiYWKAkREckmv8/46WklfO/k4rRyB/zDy438cE0TmRihVGQ4UiIiMkRF4o4bn93Log/S+4RM\nKfSzeE4F04rUHktEZCgwM/7hhCJ+fWYp/g4Df/58XTO3v9hANKFkRKQjJSIiQ1BrLMGXnqnr1DF9\naqGfJXMrmKokRERkyLn+qAL+cMEY8jpkIw9Xt/KFFXU0hPXgQ5FUSkREhpjGSIKrltexfGf6qCvT\ni5JJyOQMjlEvIiL9c8nkXBbNqaAsJz0ZefbDMJcsqeH95lg3e4qMPkpERIaQPW1xLn26lpd3R9LK\nDy/ys3huZUYflCUiIgdn1tgQy+ZVMrkwvR/f5sYYFy6u4dXdGt5XBJSIiAwZ2/fFmLu0hrf3pj8M\na0ZZgKfnVapjuojIMHJUaZBVl1Yyq8ODD2vbE1y+rJbHtrVmqWYiQ4cSEZEhYGN9lLlLatnaFE8r\nP3VsiCVzKxmXryRERGS4GZvnZ9GcSj43PS+tPByHm56v5ydrNaKWjG5KRESy7LkP25mzpIZdrelJ\nyIUTc3ji4jGU5ujfVERkuMoLGA+cW8a3TijqtO6uN5u58bl69kXViV1GJ33DEcmi31e3cPXyOpqi\n6VfEPjc9jz9cMIaCoP5FRUSGO58Z/3RyMfedXUbH0/qT77dx8eIatjWpE7uMPvqWI5IFzjl+uKaJ\nW//cQKzDXfmbjingt+eUEeo4GL2IiAxr1x2Zz1OXVFDe4U73xoYY5/9xDyt2tnezp8jIpEREJMPa\nYo6vrq7n5+ua08oNuHNWMT87rQS/T0mIiMhIdMb4HJ65rJIZZemjIDZGHF9YUccv1jWr34iMGkpE\nRDJox74Yc5bW8Oi2trTyXD88eH45t80swkxJiIjISDatKMDyz1ZyVYdO7A64c00TX3pmrx5+KKOC\nEhGRDHnhozDnLaphXV368LwVuT7+OKeS+dPyutlTRERGmoKgjwfOLePOWcV0vAm+ZHs7Zy/aw+s1\nka53FhkhlIiIHGLOOe7bsI8rltVS1+EK11ElAVZ8tpJZY0NZqp2IiGSLmXHbzCKeuHhMp34jO/bF\nmbOkhl+vV1MtGbkyloiY2Rwz22xmW8zsji7Wf9HM3jKzt83sJTM7IVN1EzlUmqMJvra6nu/+pZF4\nh8+ReVNyWXlpJdOL9bR0EZHR7LzDcnn2skpOqkh/+GHMwfdea+LaVXupa493s7fI8JWRRMTM/MA9\nwFzgOOA6Mzuuw2bvAec6544H7gT+PRN1EzlU1tVFOG/RHh7p0B8E4LsnFfH7z5RTHNJNSRERgalF\nAf40r5KvH1fQad2yHe2c/uQelu3QqFoysmTqW9BsYItzbptzLgIsAOanbuCce8k5V+8tvgJMylDd\nRAaVc47fbNzHRYtrOj0pvThoLLiwnO+cWIxPndJFRCRFjt+469RS/vsz5ZSE0j8j9rQluGZlHd98\nUQ9AlJEjU4nIRGBHyvJOr6w7XwGePqQ1EjkE9rTF+atVe/nOq41EOnxOHFsaYNVllcyZrE7pIiLS\nvc9OzeOF+WOZVRnstO7Bd1s566k9vLI7nIWaiQwuy0QHKDO7GpjjnLvJW74eONU5d2sX254P3Auc\n5ZyrS13X2Nh4oLLV1dWHttIi/bSy1s+Pt4RojHW+03Hl+Ch/Pz1Krj8LFRMRkWEploDf7QjynzsC\nxEn/bDEcX5gQ4+tToxSoq6EMUVVVVQfmS0pKOn1BytShuwuYnLI8yStLY2afAh4A5nZMQjpKfWP7\nVVdXd1kumTFa47+3Pc63X2nk8fc69wUpDhp3n1nKldPzD2kdRmvshwrFP7sU/+xR7A+9nx8N19VE\n+NrqerY0xQ6UO4z/91GQF5ty+cXppVwyOTeLtRyddPwPXKaaZr0GVJnZdDMLAdcCi1I3MLMpwBPA\n9c65dzNUL5GD5pzj0a2tnLpwT5dJyKzKIKvnjz3kSYiIiIxsn64MsXp+JTcf27kj+86WONesrOPG\nZ/eyu1Uja8nwkpFExDkXA24FlgGbgEeccxvM7BYzu8Xb7PvAGOBeM1trZq9nom4iB2NbU4wrl9dx\n8+p6atrTO4OEfPCDTxfzp3mVTCvS/XIRERm4/ICPn51WysKLxzClsHM734XvtzHrid38en0zkY7j\nxYsMURn7luScWwos7VB2f8r8TcBNmaqPyMFojSX49fp9/PKtZsJdXHg6vjzI/WeXMaO8cwdDERGR\ngTp/Yi4vXzGWH69t5p71zSRS+o40RR3fe62JBze38C+zS7hkUi6mERplCNNDDET6IOEcj2xtZdbj\ne7jrzc5JSMgHd5xYxKpLK5WEiIjIIVUQ9HHnrBIeOrGdE8Z0/szZ2hTn2pV7uXpFHRvro1mooUjf\nqN2ISC9e+jjMP73WyJrark/m50zI4Zenl3BkiRIQERHJnGMKHasureTfN7Xw47VNNEXSm2St2hXm\nmV17+PzheXznxGKOKNHXPhladEdEpBtv1ES4ankt856u7TIJqcj18ZtzynjqkjFKQkREJCsCPuMb\nMwpZc9U4bjw6H1+HllgOeGRbG7MX7ua2P9ezfV+sy58jkg1KREQ6WFsb4ZqVdVywuIZVuzo/MCro\ng1tnFPL658ZxzRH5an8rIiJZV5Hr51/PKOP5y8dy1vhQp/VxBw9Xt/Lpx5MJybsNarIl2ad7dCIk\nh+J99sMwv1q/j+c+7P5ptZdPzeWfTylherH+dUREZOg5vjzIH+dUsGR7Oz9a08TGhvQ7INFEMiF5\nuLqVeVNyuX1mIaeNy8lSbWW007cpGdXaY46F77fxb+ub2VDf/e3q08eF+N7JxZwxXidrEREZ2syM\nS6fmMW9KLgvfa+OuN5vTHoa439Lt7Szd3s7syhBfObaA+VPzyA3oLr9kjhIRGZXeaYjy0OYWFmxt\npT7c/XjrsytD/OPJRZwzIUdNsEREZFjxmXHV4fnMn5bHgq2t/GxtMx/s6zz2/F9qIvylJsIdOQ1c\nd2Q+NxxVwFGl6vsoh54SERk1GiMJFn/Qxu+rW3l5d6THbc8YF+LvP1XEBROVgIiIyPAW8Blfqirg\n2iPy+eMHbdz99j7W1nXuI1Ifdty7oYV7N7Rw+rgQnz88n/nTchmT2/kBiiKDQYmIjGgt0QTLdrTz\n+HttrNjZTiTR/bY+g8um5nLbzCJOqezc0U9ERGQ4C/iMK6fnc8W0PF74OMKv3m5mZReDsgC8vDvC\ny7sj/O9X4DMTc7jq8HzmTs6lOKRxjmTwKBGREWd3a5zlO9tZvrOdZ3aFaYl13/QKoCzHuO7IfG4+\nplCd0EVEZMQzM86ZkMM5E3J4tyHKg++28D9bum6qHHOwfGeY5TvDBH1w5vgc5kzOZc7kXKYV6TNT\nBkZHkAx77THHG7URnv8ozPId7V3ebu7KGeNC3Hh0AZepc56IiIxSR5UG+dHsUr5/cglPfdDGg5tb\num2+HE3Acx+Gee7DMHe82sixpQHOPSyHs8fncOb4HEpzdLdE+keJiAw7DeEE6+oivLQ7wp8/DvN6\nTYRw5753XZpW5Oeq6Xlcc0S+OuKJiIh4cgPGNUfkc80R+bzXFOOxba08tq2NzY3djyi5qSHGpoYY\n929swYBPjQly1vgcZlWGOKkiyJRCv/pZSo+UiMiQ1hBOsKE+ypu1EdbWJV+3NvUx6/BMzPdzxfQ8\nrpqex0kVQZ0URUREejC9OMC3TyzmWycUsb4+xuPbWln8QXuXQwDv54B1dVHWpbRKqMj18emKICdX\nhji+PMixpUGmFvnx6XNYPEpEJOsicceuljjb98WoboyxuSHGOw1R3m2Msbuth97lPTi5IsjFk3K5\nZHIuJ4wJ6qQnIiLST2bG8eVBji8v4QenlLClMcrTO9r50452XtkdId5zF0xq2xMs2xlm2c5POsTn\nB4yjSgIcWxbk6JIA04oCTCvyM60ooKZdo5ASETlknHM0Rx172uLsaUt4U3J+R0uM7fvi7NgX58PW\nOIleTma9mVTg58zxIc6ZkMOFE3MZl6+hBkVERAbTkSVBbisJctvMIhrCCV74OMwLH4X580fhTk9w\n705rzLG2Ltplf86SkDGtKMCUQj/j8/2Mz/MzLt/HhHw/4/L8jM/3UZ7j08XFESRjiYiZzQHuBvzA\nA865H3dYb976eUArcINzbk2m6idJzjnCcWiPO9rijrZYcmqPO1pTXluiCZqijsZIwpscu/aGSGyt\npTGSYG84QU1bnPb+taLqE5/BMSUBTqoMcca4EGeNz2GqRu4QERHJmNIcH5dNzeOyqXkA1LTFeWl3\nhNdrIrxRk2xO3drLqJUdNUZcp+ZdHfkMSkM+ynKMshwfZSEfZTk+Sr2pMGAUBI38gI/8gFEYNPID\nyakw4CM/aOT5jZAfQj7Db6jJdhZl5NubmfmBe4CLgJ3Aa2a2yDm3MWWzuUCVN50K3Oe9Djm17XF+\ntrYZR7JNJI5P5gHnwOG8147l3uRSy10vPyt1X9dNeVLCQTzhiDqIJRxxB9GEI5ZIDsEXOzDvvSYc\nMW+baALaYu7Az+q/AND1eOQHK+iDI4sDHF8e5KSKZOe348uDFAR1+1ZERGSoqMzzM39aHvOnJROT\nWMKxuSHGG7UR1tVF2VQfZVNDtMshgvsj4WBvOMHeMMDAr3YaEPJDjs8I+pIJStBn5PiNoO+TZMVv\nhs84MPnNaG/Loei9Wq/MvPJP1h/YHg7cxdmf8xgdXnst73l/uij/25mFTCkc2hdqM1W72cAW59w2\nADNbAMwHUhOR+cB/Oecc8IqZlZrZBOfcRxmqY581RRy/2dSS7WqMKBPyfUwpDDC1yM/RJUGOLg1w\ndGmA6UUBAj5dqRARERlOAj5jRnmQGeWfjFDpnGNPW4JNDVE21cfY1hzjg+YYHzTHeX9frM8jYA4m\nB4TjEI6nXtbtKz80DO4F2MH0hSPymVKY7Vr0LFOJyERgR8ryTjrf7ehqm4lAl4lIdXV1l7+ou/LB\ntLPNgLxD/ntGghyfY0zQUR5KfYXKkOOw3AQTch3jcxyd+qdFgD3w3p5s1Hp4ysSxL91T/LNL8c8e\nxT67hmP8JwITQ8AYbyJ5p6MuYuxsN/ZEjNqIUeO91qXMt8R1cbKvduzYQXHDwQ36M1iqqqp6XD+0\n79f0oKs3Vl1d3esbHgzB5hi8sfuQ/55sCfmS44nn+Y087zU3YOT6k20sc/1GQcAoCfm8ySjJ8dFS\nt5tjphx2oLwyz0dR0NT2MgMydexL1xT/7FL8s0exz67RGP9I3NEQSVAfTk7JeXdgviXqaI0laIk5\nbz457YsmDsy3xR3ROES8Juwj1ZTJk6mqDGW7Gj3KVCKyC5icsjzJK+vvNkNCWY6Pu2aXAMm2eoY3\nWXqbPvNa9HUsp6vtSXaW6ro8/Xcky63Ln2Uk2zYGfMnbogH7ZNmfMh+wT7YJpizn+Q3/QTaFqq6O\nUzUx96D2FREREelNyG+MzfMzNm9wRseMJxyRRDIpiSaSA/ZEE45I3CuPJ5OVhPNegXgi2Wd3+85d\nTDhsInHnkn10XfLOTiJlOTl90r8XOjcA61jeaZmu9++8XXr5xIKhP4JophKR14AqM5tOMrm4Fvir\nDtssAm71+o+cCjQOxf4hACUhH1+fMcQb3YmIiIhIj/w+I88HefT/Imx1S4KqSboAOxAZSUScczEz\nuxVYRnL43v9wzm0ws1u89fcDS0kO3buF5PC9N2aibiIiIiIiknkZ6yPinFtKMtlILbs/Zd4Bf5up\n+oiIiIiISPboYQwiIiIiIpJx5tzwGS6gsbFx+FRWREREREQAKCkp6dQRR3dEREREREQk45SIiIiI\niIhIxg2rplkiIiIiIjIy6I6IiIiIiIhk3LBLRMzs82a2wcwSZnZKD9vNMbPNZrbFzO5IKS83sxVm\nVu29lmWm5sNfX2JnZkeb2dqUqcnMvumt+4GZ7UpZNy/z72L46uuxa2bvm9nbXoxf7+/+0rU+Hv+T\nzexZM9vonaf+LmWdjv9+6u48nrLezOxX3vq3zOzkvu4rvetD/L/oxf1tM3vJzE5IWdfleUj6pg+x\nP8/MGlPOJ9/v677Suz7E/9spsV9vZnEzK/fW6djvD+fcsJqAY4GjgeeAU7rZxg9sBQ4HQsA64Dhv\n3U+BO7z5O4CfZPs9DZepv7Hz/g4fA1O95R8A38r2+xiuU1/jD7wPVAz076ep//EDJgAne/NFwLsp\n5x4d//2Ld7fn8ZRt5gFPAwacBrza1301DUr8zwDKvPm5++PvLXd5HtI0aLE/D1h8MPtqGnj8O2x/\nGfBMyrKO/X5Mw+6OiHNuk3Nucy+bzQa2OOe2OeciwAJgvrduPvCQN/8QcMWhqemI1N/YXQBsdc59\ncEhrNXoM9NjVsT8wvcbPOfeRc26NN98MbAImZqyGI0tP5/H95gP/5ZJeAUrNbEIf95We9RpD59xL\nzrl6b/EVYFKG6zhSDeT41bE/cP2N4XXA/2SkZiPQsEtE+mgisCNleSeffBkY55z7yJv/GBiXyYoN\nc/2N3bV0/ue8zbuV/x9qGtRvfY2/A1aa2Rtm9tWD2F+61q/4mdk04CTg1ZRiHf9919N5vLdt+rKv\n9Ky/MfwKybtT+3V3HpLe9TX2Z3jnk6fNbEY/95Xu9TmGZpYPzAEeTynWsd8PgWxXoCtmthIY38Wq\nf3TOPTVYv8c558xMw4al6Cn2qQu9xc7MQsDlwHdTiu8D7iT5T3on8AvgbwZa55FkkOJ/lnNul5mN\nBVaY2TvOudX92H/UGsTjv5DkB9M3nXNNXrGOfxmRzOx8konIWSnFvZ6HZEDWAFOcc/u8/mZPAlVZ\nrtNodBnwonNub0qZjv1+GJKJiHPuwgH+iF3A5JTlSV4ZwG4zm+Cc+8i7hb9ngL9rROkp9mbWn9jN\nBdY453an/OwD82b2W2DxYNR5JBmM+Dvndnmve8xsIcnbzKvRsd+rwYi/mQVJJiH/7Zx7IuVn6/jv\nn57O471tE+zDvtKzvsQfM/sU8AAw1zlXt7+8h/OQ9K7X2Kdc4MA5t9TM7jWzir7sK73qTww7tfzQ\nsd8/I7Vp1mtAlZlN967MXwss8tYtAr7szX8ZGLQ7LKNAf2LXqc2k9+VtvyuB9YNau5Gv1/ibWYGZ\nFe2fBy7mkzjr2B+YvsTfgN8Bm5xzv+ywTsd///R0Ht9vEfDX3uhZpwGNXvO5vuwrPes1hmY2BXgC\nuN45925KeU/nIeldX2I/3jvfYGazSX6fq+vLvtKrPsXQzEqAc0n5LNCxfxCy3Vu+vxPJD/CdQBjY\nDSzzyg8DlqZsN4/kiDVbSTbp2l8+BlgFVAMrgfJsv6fhMnUXuy5iX0DyhFjSYf+HgbeBt0j+U0/I\n9nsaTlNf4k9ylI913rRBx37G438WyaZXbwFrvWmet07Hf/9j3uk8DtwC3OLNG3CPt/5tUkZS7O4z\nQNOgxv8BoD7lWH/dK+/2PKRp0GJ/qxfbdSQHCjijp301DW78veUbgAUd9tOx389JT1YXEREREZGM\nG6lNs0REREREZAhTIiIiIiIiIhmnRERERERERDJOiYiIiIiIiGScEhEREREREck4JSIiIiIiIpJx\nSkRERERERCTjlIiIiIiIiEjG/X/jo9v/wlhnRgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x114b004a8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, (ax0, ax1) = plt.subplots(2, 1)\n",
"df.error.dropna().plot.bar(color='k', ax=ax0) \n",
"df.error.plot.kde(ax=ax1);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I think it's ok to go forward."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"df = df.drop(['freq_raw', 'error'], axis=1) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Doing the barchart again...\n",
"\n",
"...but including the zero-counts on the x-axis, as to not de-emphasize the sparsity of the higher valued guesses:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def drawLine (x, color, label, ax=None, yDisplacement=0):\n",
" \"\"\"Function for drawing the vertical lines on the plot\"\"\"\n",
" if ax is None:\n",
" ax = plt.gca()\n",
" labelOffset = ax.get_xticklabels()[0]._x - float(ax.get_xticklabels()[0]._text)\n",
" yPos = ax.get_yticks()[-2:].mean()\n",
" ax.axvline(x+labelOffset, linewidth=1.5, color=color, linestyle='--')\n",
" ax.text(x, yPos+yDisplacement, label + ' ({:.1f})'.format(x),\n",
" fontdict={'color': 'k', 'weight': 'normal'},\n",
" bbox={'facecolor': color, 'alpha': 0.6, 'pad': 0, 'boxstyle': 'round, pad=0.2'}) "
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def weightedMedian(df):\n",
" \"\"\"Reconstruct the original data making up the histogram, and compute the median of that dataset\"\"\"\n",
" tmp = list()\n",
" for guess, freq in df.dropna().values:\n",
" tmp += [guess]*int(freq)\n",
" return np.median(tmp) "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x118e1dba8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots() \n",
"df.frequency.plot.bar(ax=ax, rot=0)\n",
"drawLine((df.guess*df.frequency).sum() / df.frequency.sum(), '#fc4f30', label='mean', yDisplacement=-15)\n",
"drawLine(df.frequency.median(), '#e5ae38', label='median', yDisplacement=-22) \n",
"drawLine(weightedMedian(df), '#6d904f', label='weighted median', yDisplacement=-29) \n",
"[label.set_visible(False) for label in ax.xaxis.get_ticklabels()[::2]]\n",
"fig.savefig('DR_plot_rettet', dpi=200)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And finally exporting the data as CSV for people to play with :)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"ex = df.fillna(0)\n",
"ex['frequency'] = ex.frequency.astype(int)\n",
"ex.to_csv('drKontanthjaelpsData.csv') "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Number of people guessing above 10 %: "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"300.0"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.loc[df.guess > 10].frequency.sum() "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Number of people participating people:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"758.0"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.frequency.sum() "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Percentage of people guessing above 10 %:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"39.577836411609496"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.loc[df.guess > 10].frequency.sum() / df.frequency.sum() * 100"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>guess</th>\n",
" <th>frequency</th>\n",
" </tr>\n",
" <tr>\n",
" <th>guess</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1.0</td>\n",
" <td>17.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2.0</td>\n",
" <td>47.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3.0</td>\n",
" <td>46.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4.0</td>\n",
" <td>28.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>5.0</td>\n",
" <td>115.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" guess frequency\n",
"guess \n",
"1 1.0 17.0\n",
"2 2.0 47.0\n",
"3 3.0 46.0\n",
"4 4.0 28.0\n",
"5 5.0 115.0"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head() "
]
}
],
"metadata": {
"anaconda-cloud": {},
"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.1"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
guess frequency
1 17
2 47
3 46
4 28
5 115
6 25
7 26
8 56
9 5
10 93
11 2
12 33
13 8
14 6
15 54
16 3
17 0
18 19
19 3
20 57
21 3
22 1
23 1
24 0
25 15
26 2
27 12
28 0
29 0
30 28
31 1
32 1
33 0
34 3
35 9
36 0
37 0
38 0
39 0
40 7
41 0
42 3
43 0
44 0
45 1
46 0
47 1
48 0
49 0
50 6
51 2
52 0
53 0
54 2
55 1
56 0
57 0
58 0
59 0
60 7
61 0
62 0
63 0
64 0
65 0
66 0
67 0
68 0
69 0
70 0
71 0
72 0
73 0
74 0
75 4
76 0
77 0
78 0
79 0
80 0
81 0
82 0
83 0
84 0
85 4
86 0
87 0
88 0
89 0
90 1
@AllanLRH
Copy link
Author

AllanLRH commented Apr 11, 2017

High resolution version of the plot, produced by the code in the notebook above.
dr_plot_rettet

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment