Last active
May 19, 2023 05:08
-
-
Save naturale0/3915e2def589553e91dce99e69d138cc to your computer and use it in GitHub Desktop.
python class for converting p-values to adjusted p-values (or q-values) for multiple comparison correction.
This file contains hidden or 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": 1, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import numpy as np\n", | |
"import matplotlib as mpl\n", | |
"import matplotlib.pyplot as plt\n", | |
"import seaborn.apionly as sns\n", | |
"import scipy as sp\n", | |
"import scipy.stats\n", | |
"import pandas as pd\n", | |
"import statsmodels as sms\n", | |
"%matplotlib inline" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def refine_plot(ax=None):\n", | |
" if ax is None:\n", | |
" ax = plt.gca()\n", | |
" ax.spines['right'].set_visible(False)\n", | |
" ax.spines['top'].set_visible(False)\n", | |
" ax.xaxis.set_ticks_position('bottom')\n", | |
" ax.yaxis.set_ticks_position('left')\n", | |
" return" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"trues = sp.stats.norm(0, 1).rvs(1000)\n", | |
"falses = sp.stats.norm(3, 1).rvs(1000)\n", | |
"total = np.append(trues, falses)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAD8CAYAAACb4nSYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd4nOWZ7/HvrZFGvRfLalZzk42xsWxjMBASignEEAKh\nhASyJJBNP7ubvZLNHrJp5ySbPZuELLsJAWcDxBBqcIIJoZnYxr3jqi6rWNXqGkkz85w/NPYKIVsj\naaR3yv25Ll3WzLzvzD229PMzz/sUMcaglFIqNIRZXYBSSqmZo6GvlFIhRENfKaVCiIa+UkqFEA19\npZQKIRr6SikVQjT0lVIqhGjoK6VUCNHQV0qpEBJudQGjrV271vz5z3+2ugyllAo04s1BftfSb21t\ntboEpZQKWn4X+koppaaPhr5SSoUQDX2llAohGvpKKRVCNPSVUiqEaOgrpVQI0dBXSqkQoqGvlFIh\nRENfKaVCiN8tw6CU8o0NO2s/cN/dq/IsqET5E23pK6VUCNHQV0qpEKKhr5RSIURDXymlQoiGvlJK\nhRANfaWUCiE6ZFP5HR1qOH3071ZpS18ppUKIhr5SSoUQDX2llAohGvpKKRVCNPSVUiqEaOgrpVQI\n0SGbSvk5HWapfElb+kopFUI09JVSKoRo6CulVAjR0FdKqRCioa+UUiFEQ18ppUKIV0M2RWQt8HPA\nBjxmjPnRqMf/Dvgc4ARagL8xxtR4HrsX+GfPoT8wxvzWR7UrFbJ0GKearHFb+iJiAx4BbgBKgLtE\npGTUYfuBUmPMEuB54F8956YA3wFWASuB74hIsu/KV0opNRHedO+sBMqNMZXGmEHgGeDmkQcYY942\nxvR5bu4AcjzfXw+8boxpN8acAV4H1vqmdKWUUhPlTehnA6dG3K7z3Hc+9wOvTvJcpZRS08inyzCI\nyD1AKXDVBM97AHgAIC9P+yWVUmq6eBP69UDuiNs5nvveR0SuAb4NXGWMGRhx7odGnbt59LnGmEeB\nRwFKS0uNFzWpEKMXLpXyDW+6d3YDc0WkQETswJ3AxpEHiMgy4FfAOmNM84iHXgOuE5FkzwXc6zz3\nKaWUssC4LX1jjFNEvsxwWNuA9caYIyLyPWCPMWYj8BMgDnhORABqjTHrjDHtIvJ9hv/jAPieMaZ9\nWt6JUkqpcXnVp2+M2QRsGnXfQyO+v+YC564H1k+2QKXU+FxuQ1OXg1kJUVaXovycrqevVIByG8PO\nyjYO13dS39HP/375PYrSY1m7OJPPrM63ujzlpzT0lQpArT0DvLC3jpr2PrISo1iRn8KH5qfzzskW\nfvlOJS/tq+eOFXmkx0daXaryMxr6SgWYypYefru9GluYcPvyHJbmJiEi3L0qjweuLOJIQyf3rt/F\no3+t4LOXF5CVFG11ycqP6IJrSgWQmrZentheQ3KMna99ZB7L8pLxDJ44Z1FWIs8+uJpwWxjrt1XR\nM+C0qFrljzT0lQoQ9Wf6+e93q4mPCuf+NQUkRkec99jC9DjuuyyfgSE3rx5unMEqlb/T7h1lqbEm\nXakP6h1w8tTOGqIjbNy/poD4qPMH/lmzEqK4Yl4am0+0cMmcZIrS42agUuXvtKWvlJ9zG8Oze07R\nM+DkU6vmkBRj9/rcq+dnkBpr5w/76xlyuaexShUoNPSVX+sdcNLQ0U/PgBO3Cc0VOt4+0UxZcw8f\nW5JFdvLELspG2MK4eWk2bb2D7KrSeZFKu3eUHzLG8F5DF3tr2ilv7sHtyfoIm1A6J4Ur56VfsD87\nmOyrPcNbx5pZmpvEivzJbUVRnBFHXkoM71a0sroolbBRF35VaNHQV37F5Tb88WADu6rbSYqO4Iq5\n6WQlRdPtGKL+TD87q9rYVd3OlXPTuGNFLraw4A0wx5CLbzx3kIToCNZdnPWBUToTsaY4jQ27ajna\n0MXi7EQfVqkCjYa+8huOIRdP76qlrLmHq+alc23JrA+0Sq9ZOIs3jjXx9okW7vvNLh6+cxnJsd73\ncQeSn75xkoqWXu67LJ+oCNu4x1/oonhJVgLJMRFsq2jV0A9x2qev/IIxhuf31lHR0sOty7K5flHm\nmN0QybF2bi/N5dZl2eysbGfdI1s51d43xjMGtgOnOvj1Xyu5c0Uu82bFT/n5wkRYXZRGTVsfdWeC\n7+9LeU9DX/mFXdXtHG3s4vpFmZTmp4x7fGl+Cr9/8FK6+p3c+eiOgAyyDTtrP/AF4HS5+fZLh0mP\nj+Sfblzos9crnZNMZHgY71a0+ew5VeDR0FeWO93l4JVDjczNiOPy4jSvz1uWl8xT96+i2zHEXb/e\nQUNH/zRWOXOe3FHDkYYu/vdNJSR4MR7fW1ERNi7OTeJIQycDTpfPnlcFFu3TV5ZyG8Pze04RGWHj\ntuU5Ex5ZclFOIk99bhWf+vVOPvub3dyxIvcD/d+BtMNWU5eD//eXk1wxN40bL5rt8+e/OCeJXVXt\nHG/s5uLcJJ8/v/J/2tJXljpc10lDp4MbL8r0apbpWJbkJPHLTy+noqWHDTtrcbkDdzz/D185xqDL\nzfdvXjyl0TrnMyc1hsToCA7Wdfj8uVVg0NBXlhlyuXnjWBOZCVEsyZlaq/Py4jT+z60XUd7Sw8sH\n6jEBOJGrqrWXjQcb+MJVReSnxU7La4SJcFF2ImVNPfQN6kJsoUi7d5RlnttTR1vvIJ++dI5PJgx9\nsjSXTYca2XyyhezkaFYVpHp9rtUbr7uN4ZVDDcxOjOJvryqa1tdakpPI1vJWjjR0scKLi+YquGhL\nX1nCMeTi4TfLyEuJYUHm1IcknnVNySzmzYrjTwcbqQ2goZz7as7Q0OngWx9dSLR9/DH5U5GdFE1q\nrF27eEKUtvSVJf6wv57TXQ7uX1Pg077rMBE+WZrLI2+Xs2FnDV+6uvgDx/jbyp6OIRevHW1iTkoM\nH1vi+4u3o4kIS3KS2HyimW7H0LS/nvIv2tJXM84YwxPba1iQGU/hNPRdx9jDuefSOfQPuXh61ym/\nX13yrePN9A04uWnJ1JZamIhFWQkY4GRT94y8nvIfGvpq2ow18QhgX20HRxu7+PTqOdMWcrMTo7ll\naTbVbb386NXj0/IavtDSPcC7Fa0sn5M84RU0p2J2YhQJUeEcP62hH2o09NWMe3J7NfGR4dyyNHta\nX2dZXjKri1J5fGsVLx+on9bXmqxNhxuJsIVxbcmsGX1dEWF+ZjzlzT0MOv37k5DyLQ19NaNaewbY\ndPg0n1ieQ2zk9F9S+uji2azIT+ZbLx6mvLln2l9vIk42dXOiqZsPL8iY9ByFqViQmcCA083ual1n\nP5Ro6KsZs2FnLd9+8TCDLjdJMREzckHVFib84q5LiIqw8aXf7aN/0D+WHxh0uvnToQZSY+2sLvJ+\naKkvFaXHER4mvHW82ZLXV9bQ0FczxhjD3toOCtJiyYiPmrHXzUyM4md3LOVkczcPvfzejL3uhfxm\nWxWtPYPctCSL8DBrfg3t4WEUpMXytoZ+SNHQVzOmsdNBa88AS6c4+3YyrpyXzleuLua5vXXsrbG2\nO6Opy8HDb5axIDOe+T6cozAZ8zPjqWztpbq119I61MzR0Fcz5sCpDmwiLMpOsOT1v3bNPFYXprLx\nYAOnuxyW1ADwo1ePM+Qy07Kg2kQtyBz+t9AuntChoa9mhNsYDtV1MG9WHDF2a+YE2sKEn9+1lMhw\nGxt21lqyvPCe6nZe2l/P568sIDUucsZff7SUWDsFabFsLW+1uhQ1Q3RGrpoR1a29dDmcfNSHy/lO\n5kJwRnwUd6zIZf3WKv6wv55PlubO2IQol9vwnY1HyEyI4osfKublAw0z8rrjuawolT/sr2fI5SbC\npu3AYKf/wmpGHKzrwG4LO9edYKWi9DiuKZnFwbpOds3gcMVndtdypKGLf7px4YwMV/XW5cVp9A66\nOKRr8YQEDX017ZxuN+/Vd1GSlYA93D9+5K6al87cjDheOdQ4IztudfQN8m+vnWBlQcqMrK8zEasL\nUxGBbeW6jWIo8I/fQBXUqlp76R9ycVF2otWlnHN2YbYYu40Nu2pxDE1v//4PXzlGl8PJv3xs0Yx1\nJ3krOdZOyewEtmm/fkjwn8+YKmgda+wiwiYUpcdZXcr7xEaGc9fKPH69pZIX9tVx98o8nwXyyOsN\nZU3dPLe3jqvmpXPgVAcHTp2/G8WqFUAvL07jv7dV0z/omvalnZW1tKWvppUxhmON3czNiPebrp2R\n5qTGcv2iTI40dLG90vfdGwNOFy8dqCctLpIPL8jw+fP7ymVFqQy6dEmGUOB/v4UqqDR0OOjsH2Lh\nbOsv4J7PmuI0FmTG8+rh09S0+XaS0p/fO01n3xCfuCTbr0fGrCxIIcImbKvQLp5gp907alodbexC\nwKe7Y03UeF0mIsLty3P5z83lPLmjhi9+qJiUWPuUX/e9+k52VrWzpjiNOanTs+etr8TYw1mWm8y7\nejE36HnV9BCRtSJyQkTKReSbYzx+pYjsExGniNw26jGXiBzwfG30VeEqMBxr7GJOaqxfDVEcS7Td\nxr2r8zEGnthePeULu209A7ywr46c5GiuWzSzyyZP1uqiVN5r6KRLd9MKauOGvojYgEeAG4AS4C4R\nKRl1WC1wH7BhjKfoN8Ys9Xytm2K9KoC09w5yustBSZb/du2MlBYfyd2r8mjtGeDJHTWTXpGzf9DF\n07trEYG7VuZZtqDaRK0qSMEY2FtzxupS1DTy5qdxJVBujKk0xgwCzwA3jzzAGFNtjDkE6G4M6pxj\njV0ALLR4UbGJKEqP47bluVS39vK5J3ZPuMU/4HTxwJN7aOxwcPvyXJJjpt5NNFOW5SUTHibsqtKL\nucHMm8/c2cCpEbfrgFUTeI0oEdkDOIEfGWP+MPoAEXkAeAAgLy9vAk+t/MVY/eYnm7pJj4v0izVm\nJmJpbhJuY3hhXx2f++0eHrn7EhJjxt/kZMjl5ssb9rOlrJVbl2X79cXrsUTbbVyUk8huDf2gNhOf\nO+cYY0qBu4GfiUjR6AOMMY8aY0qNMaXp6ekzUJKaboNON1Wtvcyb5V9j8711SV4yP7ntYnZUtnHT\nf2zhvfrOCx5/utPBvet38frRJr67bhGl+SkzVKlvrcxP4WBdx7RPVlPW8Sb064HcEbdzPPd5xRhT\n7/mzEtgMLJtAfSpAVbX24nQb5s0KnK6d0W5bnsPvH1yN02W49b/e5YevHKV+1JINfYNOnt9bx/U/\n+yv7azv419uWcO9l+dYU7AMrC1IYcpkLTiBTgc2b7p3dwFwRKWA47O9kuNU+LhFJBvqMMQMikgZc\nDvzrZItVgeNkUzcRNiE/zb+HKo5n+ZxkXvnqFXz3j0dYv62a9duqWZqbREqsHbfbsK2iFceQm4tz\nEvnpHUsp9LNZxxNVOicFEdhV1c6lhdZs46im17ihb4xxisiXgdcAG7DeGHNERL4H7DHGbBSRFcBL\nQDLwMRH5rjFmEbAQ+JWIuBn+VPEjY8zRaXs3ym+cbOqmMC3OryckeSsl1s7P71zGP65dwBPvVnPg\nVAen2vsYdLm5fXkuNyzOZFVhKrYw/1pTZzISYyKYPyteL+YGMa8GTxtjNgGbRt330IjvdzPc7TP6\nvHeBi6ZYowowbT0DtPUOWrbh93TJTormWx9daHUZ025VQQrP7a3T9fWDlP6LKp872dQNwPwA7s8P\nZSsKUugbdHGkocvqUtQ08O9pkiognWzqISXWHnBDNb0x1tDUu1cF1zDjlZ6RR796p4Ir5v7PaLpg\ne5+hSlv6yqecbjeVrT3MzQjsC5qhLCMhitRYO9Wtvl18TvkHDX3lU6fa+xlyGb9bO19NTH5aLNVt\nfbiNsboU5WMa+sqnKlp6EKAwPbCHaoa6gtRY+odcNHcPWF2K8jENfeVTlS09ZCVFE2PXy0WB7Oz8\nCu3iCT4a+spnBp1uTrX3U6St/ICXHBNBQlQ41T7eVEZZT0Nf+Ux1Wy8uo/35wUBkeDZ1dWsvRvv1\ng4qGvvKZiuYebGHi97tEKe/kp8bS5XBypk83VQkmGvrKZypaeshLifHLDdDVxBVov35Q0t9O5RN9\nA04aOx3anx9E0uMjiY6wUaWhH1R0iIXyiYrWXgxof34AOt/G8WFn+/X1Ym5Q0Za+8omKlh7s4WHk\nJMdYXYryofzUGNp6B+nWzdKDhoa+8omK5h4KUmODYnlh9T/yPRflq9v6LK5E+YqGvpqyho5+2noH\nKdL1doJOVlI0dluY9usHEQ19NWXbylsB9CJuELKFCXkpMdRov37Q0NBXU/ZuRRuxdhuzEqKsLkVN\ngzlpMZzudNDZr/36wUBDX02JMYZt5a0UpscRJtqfH4zyU2MxwN4a3UIxGGjoqympaOmhuXuAYh2q\nGbRyk2OwibCr6ozVpSgf0NBXU7KtvA1AL+IGMXt4GNnJ0eyu1pZ+MNDQV1OyrbyVnORoUmLtVpei\nplF+agyH6jpwDLmsLkVNkYa+mjSX27Cjso3Li9KsLkVNs/y0WIZchv21HVaXoqZIQ19N2pGGTroc\nTi4rTrW6FDXN5qTEIgK7qrSLJ9Bp6KtJO9uff5m29INetN3G/Fnx2q8fBDT01aS9W9HK/FnxpMdH\nWl2KmgGrClLYV3uGIZfb6lLUFOgqm2pSBpwudle3c9fKPKtLmTbnW31ysscFuhUFKfx2ew1HGrpY\nmptkdTlqkrSlryZlX00HjiG3du2EkJX5KQDs1n79gKYtfTUp71a0EiawqjDF6lLUDHnjWDOpsXZe\n3F9PbORwdNy9Kng/6QUrbemrSdlW3sqSnCQSoiKsLkXNoPzU4c3S3bpZesDS0FcT1u0Y4mBdJ5fr\nUM2Qk58WQ/+Qi5buAatLUZOkoa8mbGdlOy63YU1xutWlqBl2dlMVXV8/cGnoqwnbWt5KVEQYl8zR\nERyhJiXWTkJUuIZ+ANPQVxO2rbyVlQWpRIbbrC5FzTARoTA9jqrWXoz26wckDX01Iac7HZQ197BG\n+/NDVmFaLD0DTpq1Xz8g6ZBNNSFnt0bs6neGzKQk9X6Fnr0TKrWLJyBpS19NyLbyVmLtNjITdWvE\nUJUcE0FSdASVLT1Wl6ImwavQF5G1InJCRMpF5JtjPH6liOwTEaeI3DbqsXtFpMzzda+vClczzxjD\n1vJWijJ0a8RQNtyvH0tVay9ut/brB5pxQ19EbMAjwA1ACXCXiJSMOqwWuA/YMOrcFOA7wCpgJfAd\nEUmeetnKCuXNujWiGlaYFkffoIsTTd1Wl6ImyJuW/kqg3BhTaYwZBJ4Bbh55gDGm2hhzCBi9/N71\nwOvGmHZjzBngdWCtD+pWFthSNtyfr1sjqsL04fH62yvaLK5ETZQ3oZ8NnBpxu85znzemcq7yM9vK\nW8lPjSE5RrdGDHVJMXZSYu1sr9TQDzR+cSFXRB4QkT0isqelpcXqctQYhlxudlS2sWaurqqphhWm\nxbKjsg2X9usHFG9Cvx7IHXE7x3OfN7w61xjzqDGm1BhTmp6uU/v90cFTHfQOulhTrKGvhhVlxNHt\ncHKoTvfNDSTehP5uYK6IFIiIHbgT2Ojl878GXCciyZ4LuNd57lMBZmt5KyKwulBDXw0rTo9DBLZ6\nrvWowDBu6BtjnMCXGQ7rY8CzxpgjIvI9EVkHICIrRKQOuB34lYgc8ZzbDnyf4f84dgPf89ynAszW\nslaWZCeSGKNLKathsZHhLMpKYEu5hn4g8WpGrjFmE7Bp1H0Pjfh+N8NdN2Odux5YP4UalcW6HUPs\nP9XBg1cWWl2K8jNritN5fGslvQPOcxurKP/mFxdylX/bVeVZSlkv4qpRrpibxpDLsLNKR/EECg19\nNa5zSynn6bw69X7L5yQTGR52bg6H8n8a+mpcW8paWZGfQlSELqWs3i8qwsbKghS9mBtANPTVBdWd\n6aO8uYer5ulQWjW2K+amUdbcw+lOh9WlKC9o6KsL2nxieLLch+ZnWFyJ8ldXzB1uEPy1TCdWBgIN\nfXVBm0+0kJMcTZFnrRWlRluQGc+shEjeOaGhHwg09NV5DThdvFvRyofmpyO6lLI6DxHh6vkZ/LWs\nhSHX6DUXlb/R0FfntbvqDH2DLq7Wrh01jg/Nz6Db4WRfzRmrS1Hj0NBX57X5RDN2Wxiri3Q/XHVh\nlxenEmET3tYuHr+noa/Oa/PJFlYVphBj15mW6sLioyIonZPC5hPNVpeixqGhr8akQzXVRF29IJ3j\np7tp6Oi3uhR1ARr6akxvHhtusX14gfbnK++cvfazWbt4/JqGvhrTG8eaKEqPpVD3w1VeKs6IIzsp\nmreOaxePP9PQVx/Q5RhiR2Ub15TMsroUFUBEhGsWZrC1vIX+QZfV5ajz0NBXH/DXky0MuQzXLtTQ\nVxNzbUkmjiE3W3R2rt/SYRnqnA07awF4ds8pYuw2jp/upjQ/xeKqVCCpau0lKiKMX71TSWvPIAB3\nr8qzuCo1krb01fu43Ibjp7tYkJlAmM7CVRNkCxPmz4rn2Oku3EY3TPdHGvrqfWraenEMuVk4O97q\nUlSAKslKpG/QRU1bn9WlqDFo9456n2ONXYSHCcUZw6N2znb5KOWteRlx2MKEY41dFKTpQn3+Rlv6\n6hxjDO81dFGcEUdkuG6YoiYnMsJGUXosRxu7MNrF43c09NU5dWf66ewfYnF2otWlqABXMjuR9t5B\nTnfpxir+RkNfnfNefSc2ERZmJlhdigpwJVkJCMM/U8q/aOgr4GzXTifFGXFE27VrR01NXGQ4Bemx\nHK7XLh5/o6GvADhc38mZviEWZ2srX/nGRdmJtPYMcPx0t9WlqBE09BUAmw6fJkxg4WwNfeUbi7IS\nEWDT4UarS1Ej6JBNhTGGV99rpCg9TtfOVz5ztovn6V2nyEyIet+WmzpL1zra0lccrOukpq2Pi3TU\njvKxs108OorHf2izTvGH/fXYw8N0qKaasPEm7y3KSmTjgQYO13UyOzF6hqpSF6It/RA35HLzx4MN\nXLtwFlEROmpH+VZcZDjFGXEcrOvQUTx+QkM/xG0ta6Wtd5BblmVbXYoKUhfnJnGmb4jadl2Lxx9o\n6Ie4l/bXkxwToXvhqmmzaHYCETbhwKkOq0tRaOiHtJ4BJ385epqblmRhD9cfBTU9IiNsLJydwKG6\nTpxut9XlhDz9TQ9RG3bW8p2Xj+AYchNjt+lqmmpaLc1Jon/IRVlTj9WlhDwN/RC2p7qdtLhI8lJi\nrC5FBbm5s+KJsdu0i8cPaOiHqKYuBzXtfazIT37fpBmlpoMtTLgoO5FjjV26abrFNPRD1J7qdmwi\nLMtLtroUFSJK56TgdBsO1mlr30oa+iHIMeRiX20HJVkJxEXq/Dw1M7KSoshMiGJvzRmrSwlpXoW+\niKwVkRMiUi4i3xzj8UgR+b3n8Z0iku+5P19E+kXkgOfrl74tX03Ga0dO0z/kYkV+itWlqBAiIiyf\nk0x9Rz/HGrusLidkjRv6ImIDHgFuAEqAu0SkZNRh9wNnjDHFwE+BH494rMIYs9Tz9QUf1a2mYMPO\nWpJjIihM1/1L1cxampuETYTn9tRZXUrI8qalvxIoN8ZUGmMGgWeAm0cdczPwW8/3zwMfEb066JeO\nNnSxs6qdVQWphOk/kZphsZHhLJwdz0v76xh06ph9K3gT+tnAqRG36zz3jXmMMcYJdAKpnscKRGS/\niLwjIleM9QIi8oCI7BGRPS0tLRN6A2pifrOtihi7Tbt2lGVK81M40zfE60ebrC4lJE33hdxGIM8Y\nswz4O2CDiHxglw5jzKPGmFJjTGl6ui4HMF1augd4+UADty3P0S0RlWWKM+LITormqR01VpcSkrwJ\n/Xogd8TtHM99Yx4jIuFAItBmjBkwxrQBGGP2AhXAvKkWrSbndztrGHS5ufeyfKtLUSEsTIRPXZrH\n9so2ypt1K8WZ5k3o7wbmikiBiNiBO4GNo47ZCNzr+f424C1jjBGRdM+FYESkEJgLVPqmdDURA04X\nT+2o4er56RSlx1ldjgpxnyzNJcImPLVDl/+YaeOGvqeP/svAa8Ax4FljzBER+Z6IrPMc9jiQKiLl\nDHfjnB3WeSVwSEQOMHyB9wvGmHZfvwk1vhf21tPaM8j9awqtLkUp0uIiuWHxbF7YV0ffoNPqckKK\nVzNzjDGbgE2j7ntoxPcO4PYxznsBeGGKNaopGnK5+c/N5Vycm8Tlxanjn6DUDLjn0jlsPNjAHw82\ncMcK3TN3puh0zCA0esXMfTVnqDvTz3fXLdJ1dpTfWJGfzPxZ8fz3uzV8sjRXfzZniC7DEOTcxrD5\nZDMlsxP48IIMq8tR6hwR4f41BRxr7GJ7RZvV5YQMDf0gd7iuk9aeQb7y4WJtSSm/s25pFmlxdh7b\nWmV1KSFDQz+IudyGN441kREfyfWLMq0uR6kPiIqw8elL83nreDPlzbrBykzQ0A9iu6vbaesdZO2i\nTMLCtJWv/NM9l+ZhDw/jcW3tzwgN/SA14HTx1vFm8lNjmZ8Zb3U5Sp1Xalwkn7gkmxf31dHSPWB1\nOUFPQz9IbS1rpWfAydrFmdqXr/ze568oZMjl5rGtOndzumnoB6HO/iG2lLWyKCtB979VAaEwPY6P\nXZzFk9traO8dtLqcoKahH4Q2HW7EbQw3LJ5tdSlKee3LVxfTP+RivfbtTyudnBVktpW3cri+k48s\nzCAl1m51OUqNafQEQoC7V+Vxw+JMfvtuNZ+/spDE6AgLKgt+2tIPIoNONw+9/B4psXaunKtLVKvA\n8+Wr59I94OTxLdq3P1009IPIL9+poKKll48tmU2ETf9pVeApyUrgxiWz+fWWKpq7HFaXE5Q0GYLE\nscYufvFWGesuzmJ+5gf2qVEqYHzjuvkMudz87M0yq0sJShr6QWDI5eYfnjtIYrSd765bZHU5Sk1J\nflos91w6h9/vPqWzdKeBhn4QeOTtco40dPHDjy8mWS/eqiDwlQ8XEx1h48d/Pm51KUFHQz/A7a5u\n5+E3y7hlaZaur6OCRmpcJF+8uojXjzbx9vFmq8sJKhr6Aayjb5CvPr2f3JQYvn/LYqvLUcqnPrem\nkKL0WB7a+B79gy6rywkaGvoByhjDPzx3iNaeAX5x1zLio3RMswou9vAwvn/LYk619/PI2+VWlxM0\nNPQD1H+kDW42AAAKb0lEQVRuruCNY01884aFLMlJsrocpabFZUVpfHxZNr/6awUnm7qtLico6Izc\nAPTmsSb+7S8nWHdxFlHhYWPObhzNm2OU8jcbdtaycHYCfzlymnvX7+JvryriM5flW11WQNOWfoAp\nb+7ma88coGR2Aj/+xBJdQVMFvbjIcG69JIfGTgdvHGuyupyAp6EfQJq7Hdz3m91ERYTx6GdKibbb\nrC5JqRmxcHYCK/JT2FLWqvvpTpGGfoDodgzx2d/spq1nkMfvXUF2UrTVJSk1o268aDapcXa+8vR+\nGjv7rS4nYGmfvp8a2Qc/5HLz5PYaqtp6eezeUi7O1Qu3KviMd93JHh7Gp1bN4bEtlTz45F6efXA1\nURH6aXeitKXv55wuNxt21lLe0sOPP7GEq+dnWF2SUpaZlRDFz+5cxqG6Tr75wiGMMVaXFHA09P2Y\n0+1mw65aTjR1c8vSbG5bnmN1SUpZ7tqSWfzDdfP4w4EGfvDKMQ3+CdLuHT814HSxYWctZc09rLs4\ni5UFKVaXpJTf+NLVxbT2DPL41ipiI8P5u2vnWV1SwNDQ90PtvcM/zPVn+rl1WTal+Rr4So0kIjx0\nUwl9g04efrMMAb5+zVwdwuwFDX0/U9bUzeef2MPpTgf3XDqHhbP/Z218nWCl1Pt/D5bkJOE28PM3\ny2judvD9mxcTrhsIXZCGvh9542gTX//9AaIibNy/poA5qbFWl6SUXwsT4Se3LWFWQiSPvF1BU9cA\nP/3kUhJjdC2q89H/Ev3AgNPFD/50lM89sYeCtFj++JXLNfCV8pKI8I3rF/CDWxazpayFG3+xhUN1\nHVaX5bc09C124nQ3H3/kXR7bWsU9l+bx3BdWMztRJ14pNVH3XDqH3z+4GmPgtv/azsNvljHodFtd\nlt/R0LdI36CT//vqMW58eAunuxw89plSfnDLRTrZRKkpuCQvmT99ZQ3XLZrFv79+kpt+sYVdVe1W\nl+VXxN/GuJaWlpo9e/ZYXca0GXK5eX5vHQ+/WUZjp4NPluYwNyOe2Ei9vKLUZNy9Km/M+9863sQ/\nv/QeDZ0OrlmYwTeuX8D8zPgZrm5GeTV0SUN/hvQOOHlxfz2Pbamkpq2PZXlJfPujCynNT9FROUpN\nwflCH6B/0MX6bVX88p0Kuh1OPrIgg/uvKGB1YWowDu/U0LeaMYZ9tR1sPFDPi/vr6XY4WZKTyNev\nmcvV8zPO/dBp6Cs1vfoGnPQMOnlyew1tvYMUpsVy6yXZ3Lw0m9yUGKvL8xXfhb6IrAV+DtiAx4wx\nPxr1eCTwBLAcaAPuMMZUex77FnA/4AK+aox57UKvFeih39k/xK6qdt452czbx1uo7+jHHh7G9Ysy\nue+yfC7JS/pAC0NDX6npd/eqPBxDLjYebOD5vXXn+voXZMZzzcJZXFaUyrK85EBestw3oS8iNuAk\ncC1QB+wG7jLGHB1xzBeBJcaYL4jIncDHjTF3iEgJ8DSwEsgC3gDmGWPOu8txoIT+gNNFQ4eD2vY+\nypq6OX66m3dOttDSPQCA3RZGYXosi7MSKclKeN8F2tEfRzX0lZp57b2DHGno5PjpbmraenEbsImw\nMCueBZkJLMiMZ77nKz0uMhC6g7wq0JurhyuBcmNMJYCIPAPcDBwdcczNwL94vn8e+A8Z/hu6GXjG\nGDMAVIlIuef5tntTnC8YYzAG3Mbg9vx59rbLGAaG3DiGXAw4XfQPunE4XTiGXDiG3HT1D3Gmb5CO\nvuE/z/QN0tDhoL6j/1y4n5UeH0lKjJ2luUnkpcQwJyVGZwYq5cdSYu1cMTedK+am4xhyUdPWS1Vr\nLwbYfKKF5/fWnTs2KiKM2YnRZCZEMTsxilmJUSRFR5AQHUFCVASJ0RHERYVjt4VhDw8jMnz4z7O3\n7eFhhIkggAiW/gfiTehnA6dG3K4DVp3vGGOMU0Q6gVTP/TtGnZs96WovoK1ngMt//BZuMxz0IwN+\nqsIEkmLsJEVHMDspiqvnp5OdFEN2cjQ5ydHMmxVPSqxdW+xKBaioCBvzMxOYn5lw7pN4a88AJ053\nc+J0Nw0d/TR2OTjd6WBnVTtNXQ6c7smHi8hwszxM5Nx/AgIszU3i9w+u9s2bOg+/GCcoIg8AD3hu\n9ojICQvLSQNap/MFPjWdT/5+0/5eZoi+D/8S1O9jBn8/P+Ak8OwXJnza2ffxZ2PM2vEO9ib064Hc\nEbdzPPeNdUydiIQDiQxf0PXmXIwxjwKPelHLtBORPcaYUqvr8IVgeS/6PvyLvg//MtH34U2n825g\nrogUiIgduBPYOOqYjcC9nu9vA94yw1eINwJ3ikikiBQAc4Fd3hanlFLKt8Zt6Xv66L8MvMbwkM31\nxpgjIvI9YI8xZiPwOPCk50JtO8P/MeA57lmGL/o6gS9daOSOUkqp6eVVn74xZhOwadR9D4343gHc\nfp5zfwj8cAo1zjS/6GbykWB5L/o+/Iu+D/8yoffhdzNylVJKTR8dSK6UUiFEQ/8CROTvRcSISJrV\ntUyGiPxERI6LyCEReUlEkqyuaSJEZK2InBCRchH5ptX1TIaI5IrI2yJyVESOiMjXrK5pKkTEJiL7\nReRPVtcyWSKSJCLPe343jonI9A6MnyYi8r88P1PvicjTIhLlzXka+uchIrnAdUAgz7h6HVhsjFnC\n8BDgb1lcj9c8y388AtwAlAB3eZb1CDRO4O+NMSXApcCXAvR9nPU14JjVRUzRzxke074AuJgAfD8i\nkg18FSg1xixmeJDNnd6cq6F/fj8F/hEI2Isexpi/GGOcnps7GJ4nESjOLf9hjBkEzi7/EVCMMY3G\nmH2e77sZDphpmZU+3UQkB7gReMzqWiZLRBKBKxkecYgxZtAYE6h7K4YD0Z65UTFAgzcnaeiPQURu\nBuqNMQetrsWH/gZ41eoiJmCs5T8CMizPEpF8YBmw09pKJu1nDDeEAnkPwgKgBfiNp5vqMREJuA2p\njTH1wL8x3BPRCHQaY/7izbkhG/oi8oanL2z0183APwEPjfcc/mCc93H2mG8z3M3wO+sqDW0iEge8\nAHzdGNNldT0TJSI3Ac3GmL1W1zJF4cAlwH8ZY5YBvUDAXS8SkWSGP/kWMLyCcayI3OPNuX6x9o4V\njDHXjHW/iFzE8F/kQc9KeDnAPhFZaYw5PYMleuV87+MsEbkPuAn4iAms8bleLeERCEQkguHA/50x\n5kWr65mky4F1IvJRIApIEJGnjDFeBY0fqQPqjDFnP209TwCGPnANUGWMaQEQkReBy4CnxjsxZFv6\n52OMOWyMyTDG5Btj8hn+IbnEHwN/PJ7Nb/4RWGeM6bO6ngnyZvkPv+dZYvxx4Jgx5t+trmeyjDHf\nMsbkeH4n7mR4qZVAC3w8v8enRGS+566P8P5l4gNFLXCpiMR4fsY+gpcXpEO2pR8i/gOIBF73fGrZ\nYYyZ+Bp+Fjjf8h8WlzUZlwOfBg6LyAHPff/kmeWurPEV4HeexkQl8FmL65kwY8xOEXke2Mdw1+1+\nvJyZqzNylVIqhGj3jlJKhRANfaWUCiEa+kopFUI09JVSKoRo6CulVAjR0FdKqRCioa+UUiFEQ18p\npULI/wd+m2IhZvLz1AAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x10ade5050>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"sns.distplot(total, kde=True, bins=50)\n", | |
"refine_plot()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"def ztest_1samp(x, mu=0, sigma=1):\n", | |
" z = (x - mu)/ np.sqrt(sigma**2)\n", | |
" return z, 2 * sp.stats.norm().sf(np.abs(z))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"zs, ps = ztest_1samp(total)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"import pandas as pd\n", | |
"import numpy as np\n", | |
"import statsmodels as sms\n", | |
"\n", | |
"class MCPConverter(object):\n", | |
" \"\"\"\n", | |
" input: array of p-values.\n", | |
" * convert p-value into adjusted p-value (or q-value)\n", | |
" \"\"\"\n", | |
" def __init__(self, pvals, zscores=None):\n", | |
" self.pvals = pvals\n", | |
" self.zscores = zscores\n", | |
" self.len = len(pvals)\n", | |
" if zscores is not None:\n", | |
" srted = np.array(sorted(zip(pvals.copy(), zscores.copy())))\n", | |
" self.sorted_pvals = srted[:, 0]\n", | |
" self.sorted_zscores = srted[:, 1]\n", | |
" else:\n", | |
" self.sorted_pvals = np.array(sorted(pvals.copy()))\n", | |
" self.order = sorted(range(len(pvals)), key=lambda x: pvals[x])\n", | |
" \n", | |
" def adjust(self, method=\"holm\"):\n", | |
" \"\"\"\n", | |
" methods = [\"bonferroni\", \"holm\", \"bh\", \"lfdr\"]\n", | |
" (local FDR method needs 'statsmodels' package)\n", | |
" \"\"\"\n", | |
" if method is \"bonferroni\":\n", | |
" return [np.min([1, i]) for i in self.sorted_pvals * self.len]\n", | |
" elif method is \"holm\":\n", | |
" return [np.min([1, i]) for i in (self.sorted_pvals * (self.len - np.arange(1, self.len+1) + 1))]\n", | |
" elif method is \"bh\":\n", | |
" p_times_m_i = self.sorted_pvals * self.len / np.arange(1, self.len+1)\n", | |
" return [np.min([p, p_times_m_i[i+1]]) if i < self.len-1 else p for i, p in enumerate(p_times_m_i)]\n", | |
" elif method is \"lfdr\":\n", | |
" if self.zscores is None:\n", | |
" raise ValueError(\"Z-scores were not provided.\")\n", | |
" return sms.stats.multitest.local_fdr(abs(self.sorted_zscores))\n", | |
" else:\n", | |
" raise ValueError(\"invalid method entered: '{}'\".format(method))\n", | |
" \n", | |
" def adjust_many(self, methods=[\"bonferroni\", \"holm\", \"bh\", \"lfdr\"]):\n", | |
" if self.zscores is not None:\n", | |
" df = pd.DataFrame(np.c_[self.sorted_pvals, self.sorted_zscores], columns=[\"p_values\", \"z_scores\"])\n", | |
" for method in methods:\n", | |
" df[method] = self.adjust(method)\n", | |
" else:\n", | |
" df = pd.DataFrame(self.sorted_pvals, columns=[\"p_values\"])\n", | |
" for method in methods:\n", | |
" if method is not \"lfdr\":\n", | |
" df[method] = self.adjust(method)\n", | |
" return df" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"converter = MCPConverter(ps, zs)\n", | |
"df = converter.adjust_many()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nSUVORK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x10370ca90>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"df.sort_values(\"p_values\", inplace=True)\n", | |
"df.index = np.arange(1, 2001)\n", | |
"df[\"TF\"] = np.array([True]*1000 + [False]*1000)[converter.order]\n", | |
"\n", | |
"df.iloc[:, 2:-2].plot(markersize=1.25, logy=True, figsize=(8, 6),\n", | |
" linewidth=2, color=[\"grey\", \"#e76767\", \"#3c63ba\"])\n", | |
"plt.axhline(0.05, c=\"k\", ls=\"--\", linewidth=1.2, alpha=.8)\n", | |
"plt.axhline(0.01, c=\"k\", ls=\":\", linewidth=1.2, alpha=.8)\n", | |
"plt.xlabel(\"Index of hypothesis\")\n", | |
"plt.ylabel(\"Adjusted p-value\")\n", | |
"plt.text(1830, 0.06, \"$p^{adj}=0.05$\")\n", | |
"plt.text(1830, 0.011, \"$p^{adj}=0.01$\")\n", | |
"plt.ylim(0, 1.1)\n", | |
"refine_plot()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nxhqc6MqkqAshRCOcLjefbjoDwPQbOjIqPdngRKIlbdiwAYD09HQmTpxocBrfSPe7EEJcxsETZfz1\n7cPecfQxg6Sgtyb79u0jJycHIOAnxzUkRV0IIS7ybU4Zj/1pB7V2z9LM37u1G+OHtjU4lWgJ9YvM\n1K+HMnbsWNq3b29wKt9J93szau7tTht7PbPZzJAhQ7xf9TMz648PGDCAwYMH8+yzz3rXi6+/Lz09\nndtvv53S0tJG37e6upqJEydedrna5rZ48WLatWt3wQQUu93OhAkTcDqdTTxTCP84fqaS/1yym1q7\nm/FD2/LW78fyozlpWMzy5zLU1dTUsGLFCm9BHzp0KJMmTTI21FWS39IgFBkZ6V1TPisri27dul1w\n/Ntvv+Xzzz/n008/9W5FW3/fvn37SExMZOnSpY2+/ssvv8ycOXMwm/1/us6iRYtYs2bNBcesVis3\n3XQTb7/9tt/fX4iGzhRU8ZM/bKes0sGo9CSe/tEgOrWLMjqWaCGbN2/m2LFjKKWYO3cuM2fOxGIJ\nrg5tKep+8Nxzz5Genk56ejp/+ctfvMdfe+01Bg0axODBg1m4cKH3+OzZsxk+fDgDBgxg2bJlzZKh\nXbt2LFu2jOeff56LlwIeM2YMp0+fbvS5K1asYNasWQAsWLCAefPmMXLkSLp27crHH3/cLPnqTZgw\ngcTExEuOz549mxUrVjTrewnRlNxzNn74zDYqqpz06RrL0w8NwmKRP5GtRWlpKd988w0AM2fOZMCA\nAQYnujbB9RHEB+Mf+Nwvr7vxxak+PW7nzp0sX76crVu3orVm1KhR3gULnnnmGTZt2kRycjLFxcXe\n57z88sskJiZSXV3NiBEjuPPOO0lKSmr0Paqrq71bunbv3p3Vq1df9nE9evTA5XKRn5/vPeZyuVi3\nbh3333//ZZ9jt9vJycnxtv6zs7OZNWsWb7/9NpmZmTz++OPcdtttV/w5jB8/noqKikuO/+lPf2LK\nlClXfH56ejrbt2+/4uOEaA5f7zzPr/6+B4DEOCt/+OlQoiJC7s+jaMKnn36Ky+Wia9euDBo0yOg4\n10x+a5tZZmYmd9xxh3entTlz5rBx40aUUtx1110kJ3tm0DZsnS5ZssRbmE+dOsWRI0eaLOr1XelX\no/6DwOnTp+nXrx9Tp17+Q0phYaF3XeOamhoKCgq8e9T379+fkpISwLPF68MPP4zVamXSpEnce++9\nF7zOxo0bryrfxcxmM1arlYqKiqA4N1QEr8LSWm9B79etDb+4rz/J8eEGpxItKTs727tl9bRp0zCZ\ngreHJuSKuq8t6kDx1Vdf8cUXX7B582aioqKYNGkSNTU1zfLaOTk5mM1m2rVr5/0gUFVVxS233MLS\npUt59NFHL3lOZGSk9/337dtHWloaERERAOzatYvBgwcDsGrVKubOncvtt9/OvHnzLinq19tSB6it\nrfW+txD+UGt3sfi3WwDPTmtLfpFBRLgs/dpauN1u1q9fT2ZmJgAjR44MqpnulxNyRd1o48ePZ9Gi\nRTzxxBNorVm9ejWvv/46VquVO+64g8cff5ykpCSKi4tJTEykrKyMhIQEoqKiOHjwIFu2bGmWHAUF\nBTz00EM88sgjKPXdrn1RUVEsWbKE2bNn8/DDD18yCSQhIQGXy0VNTQ3Z2dnk5uZSU1ODy+Xiqaee\n4n/+538AyMvLY+DAgQCXnVB3vS31oqIikpOTCQsLu67XEaIpz604SEmFHYtZsfyp0VLQW5l169Z5\nd1+79dZbGTFihMGJrl/w9jEEqGHDhrFo0SJGjhzJqFGjeOCBBxg6dCgDBgzgySefZOLEiQwePJjH\nH38c8HT1OJ1O+vXrxxNPPMHo0aOv+b3ru9gHDBjAlClTuPnmm71d5w0NHTqUQYMGsXLlysu+zs03\n30xmZibZ2dnMmTOHUaNGMWLECH784x97F2FITU0lLy8PwHva3LVYsGABY8aM4dChQ6SmpvLSSy8B\nsH79ep/G7oW4Vss/OsYn35zBajHx3M+G0a1j856SKgJbSUkJmzZtQinFvHnzQqKgA6iLZ0YHuoyM\nDF1/DmG9AwcO0K9fP4MShZ5du3bx5z//mdzcXJYtW0afPn0ueYzNZuORRx4hIiKCcePGXdL9fr3m\nzJnDH/7wB3r37u3zc+T3QPjC7da8/slxXnz/GAD/9YMBTB/b0eBUoqVlZmaybt06+vfvz1133WV0\nnCtRV36Ih3S/i0sMGzaMG2+8kSeffJK0tLTLPiY6Oprly5f75f3tdjuzZ8++qoIuhC9Kyu38x192\ncSTXM9/jh7N7SkFvhWpra71DnfXzhEKFdL+Ly1q8eDFnz541ZBao1Wrlvvvua/H3FaFNa82v/p7N\nkdwKYiIt/O7Hg7hvRg+jYwkDfPTRR9hsNmJjY+nVq5fRcZqVtNSFEK3Clr2F7DlSisWs+OeTI+nS\nPtroSMIAVVVVHDx4EIC5c+cG9elrlyNFXQgR8k6cqeTpF/YB8OCcXlLQW6nKykpWrFiBy+Wie/fu\ndOnSxehIzU6KuhAipGmteeKvWVRWOxnYK567p3Y1OpIwgMvl4vXXXyc/P5/ExETvUtihRoq6ECKk\n7T1ayumCasAz091s8nkisQgh2dnZ5OfnExERwQ9+8INm31UzUITWYIIQQjRQVePkpQ9yAJickUJq\niuy41lrVz3afMGFCyBZ0kJa6ECJEVVY5+N7/s4miMjvWMBP3z+5pdCRhkMLCQgoKCjCbzYwcOdLo\nOH4lLXUhRMhxON089PvtFJXZUQr+59GhMjmuFdu7dy8AAwcOvOyy1qFEWupCiJBz6GQ5J8/ZsIaZ\n+P1PBjO8X+KVnyRCUmVlpbfrPZi3VPWVtNSbUXOP0zT2emazmSFDhni/Tpw4ccHxAQMGMHjwYJ59\n9lnvuuz196Wnp3P77bdTWlra6PtWV1czceJEXC5Xs34/vurWrRsDBw5kyJAhZGRkAJ5V5iZMmIDT\n6TQkkwgumbsLAJg6qj2j0pMNTiOMdODAAex2O127dqVbt25Gx/E7aakHocb2U294PD8/n3vuuYfy\n8nJ++9vfXnDf97//fZYuXcqTTz552dd/+eWXmTNnjqHdVOvXr/fuPQ+eVeZuuukm3n777WZfZ16E\nFrvDzYo1JwCYMjK4t9EU1ycnJ4cNGzYAnuVgG+5YGaqkpe4Hzz33HOnp6aSnp/OXv/zFe/y1115j\n0KBBDB48mIULF3qPz549m+HDhzNgwACWLVvWLBnatWvHsmXLeP7557l4054xY8Zw+vTpRp+7YsUK\n7zmcCxYsYN68eYwcOZKuXbvy8ccfN0u+azF79mxWrFhh2PuL4PDPVUcAaJsQLt3urdihQ4d4/fXX\nqayspGvXrq2i6x1CsKU+/vP3/PK6G6fO9elxO3fuZPny5WzduhWtNaNGjWLixIlYrVaeeeYZNm3a\nRHJyMsXFxd7nvPzyyyQmJlJdXc2IESO48847SUpKavQ96rdYBejevTurV6++7ON69OiBy+UiPz/f\ne8zlcrFu3Truv//+yz7HbreTk5Pj7abKzs5m1qxZvP3222RmZvL444/7tCXq+PHjqaiouOT4n/70\nJ6ZMmdLkc5VS3HzzzSil+NGPfsSDDz4IQHp6Otu3b7/ie4vWy+F0s3bzWQAeujOtVbTMxOXVT47r\n2bMn8+bNC/kJcvVCrqgbLTMzkzvuuIPoaM9M2zlz5rBx40aUUtx1113eLuXExO9aEEuWLPEW5lOn\nTnHkyJEmi3pj3e9Nqf8gcPr0afr168fUqVMv+7jCwkLi4+MBqKmpoaCgwLsne//+/SkpKQE8W68+\n/PDDWK1WJk2adEmX+MaNG68qX0OZmZl06tSJ/Px8pk6dSt++fZkwYQJmsxmr1UpFRQWxsbHX/Poi\ndG3KLqCs0kGPTjFMHSVd763V+fPn+fbbbwG47bbbCAsLMzhRywm5ou5rizpQfPXVV3zxxRds3ryZ\nqKgoJk2aRE1NTbO8dk5ODmazmXbt2nk/CFRVVXHLLbewdOlSHn300UueExkZ6X3/ffv2kZaWRkRE\nBODZZ71+m8JVq1Yxd+5cbr/9dubNm3dJUb+elnqnTp0AzxDCHXfcwbZt25gwYQLg2TKxPo8QDR0/\nU8mLH3j2SL91bEdppbdSWmvvMOHAgQNJSEgwOFHLkjH1ZjZ+/Hjef/99qqqqsNlsrF69mvHjxzN5\n8mTeffddioqKALzd72VlZSQkJBAVFcXBgwe9p15cr4KCAh566CEeeeSRC/64RUVFsWTJEp599tnL\nziRPSEjA5XJRU1NDdnY2ubm51NTUYLPZeOqpp/jZz34GQF5eHp07dwa4bLfWxo0bycrKuuTrSgXd\nZrN5PwzYbDY+++wz0tPTASgqKiI5OblVfeoWvsk5XckDv9vKiTM2oiLM3Dy6g9GRhEG2b9/OqVOn\niIyM9GmoMNSEXEvdaMOGDWPRokXeVYseeOABhg4dCsCTTz7JxIkTMZvNDB06lFdeeYVp06bxj3/8\ng379+tGnTx9Gjx59ze9d38XucDiwWCwsXLiQxx9//JLHDR06lEGDBrFy5coLJuzVu/nmm8nMzCQ7\nO5s5c+YwatQoHA4H//Vf/8XYsWMBSE1NJS8vjyFDhnhPm7sWt956Ky+++CIdO3YEPN1md9xxBwBO\np5N77rmHadOmAZ4Z8a3xH6m4spfeP4bd4SYm0sJf/28GCW2sRkcSBqiurubrr78GYOTIkYSHhxuc\nqOWpi2dGB7qMjAy9Y8eOC44dOHCAfv36GZQo9OzatYs///nP5ObmsmzZMvr06XPJY2w2G4888ggR\nERGMGzeuRU4zmzNnDn/4wx/o3bv3Ze+X34PWKfecje8/tRmnS/PeH8eRkhRpdCRhAK01y5cv59Sp\nUyQnJ/Pwww+H0hCMz9+ItNTFJYYNG8aNN97Ik08+SVpa2mUfEx0dzfLly1ssk91uZ/bs2Y0WdNF6\nvfj+MZwuzW3jOkpBb8U2btzIqVOnUEpx9913h1JBvyoypi4ua/HixZw9exaTKTB+RaxWK/fdd5/R\nMUQAOpbnmYMx96YuBicRRikqKuKrr74CYPr06bRt29bYQAYKjL/YQghxDSqqHOSeqwIgOb71jZ8K\nqKioYPny5Wit6du3r3dp6dZKiroQImjtOezZw8BqMREXI2dFtEaffvopNpsN8EyOa63d7vWkqAsh\ngta67ecAuHd6t1b/x7w1qqmpITc3F4CZM2fSvXt3gxMZL2SKerDN4hfNS/77tz5ut2bbt551H6aO\nltXjWqP6Vnrbtm29C2O1diFR1CMiIigqKpI/7K2U1pqioiJZaa6VOXnORlmlg+T4cFLbRRkdR7Sw\n4uJi9uzZA3hOdw2USb1GC4lT2uoXQikoKDA6ijBIREQEqampRscQLehf604BMCgtXrreW5ljx455\n98tISUkhJSXF4ESBIySKelhYmIylCNGK5J6z8e+NpzGbFPdO72Z0HNGC9u/fz7vvvgtAhw4dWLBg\ngXyoayAkiroQovXQWvPsGwdwuTVTR7Wnd5c2RkcSLWT//v2sWrUKgHHjxnHjjTdKt/tF/PrTUEpN\nU0odUkodVUo9cZn7uyil1iuldiul9iilbvVnHiFE8Ptww2l2HSwhLiaMR+6WFQZbi6KiIt577z1c\nLhfDhg1j8uTJUtAvw28/EaWUGVgKTAf6AwuUUv0vetivgHe01kOB+cDf/JVHCBH8KqscLFl5CIBH\n7u5NYpwsONNa7N69G6013bt3Z8aMGdLl3gh/fswZCRzVWudore3AW8Csix6jgfq+szjgjB/zCCGC\nXGZWAXanm/SecUy7oaPRcUQLqa2tJSsrC4BRo0ZJQW+CP4t6J+BUg9t5dcca+g3wPaVUHvAJ8NPL\nvZBS6kGl1A6l1A6Z4S5E61RUVsvz7xwGkILeyhw4cACbzUZKSkqjm0wJD6MHJBYAr2itU4FbgdeV\nUpdk0lov01pnaK0zWvNC/UK0Zp98c4aySgfD+iZy+/iL2wciVNntdjZs2AB4dpCUcfSm+fOncxro\n3OB2at2xhu4H3gHQWm8GIoBkP2YSQgSpPUc867xPG9MBk0m6X1uLf//735SUlNCmTRvS09ONjhPw\n/FnUtwNpSqnuSikrnolwH170mFzgJgClVD88RV3614UQFziWV8GWvYWEWRQjBiQZHUe0kPPnz7Nv\n3z4Avve97xEVJSsHXonfirrW2gk8AqwFDuCZ5f6tUupppdTMuof9B/BDpVQ2sBJYpGWtVyHERVav\n90zPmTqqg2yx2kqUl5fz+uuvo7UmPT29Ve+RfjX8uviM1voTPBPgGh77dYPr+4Gx/swghAhubrfm\nq535AIzon2hwGtFSduzYgc1mo3PnzsycOfPKTxCA8RPlhBCiSYdOllNW6cBsUkwaLmt8twZ2u51d\nu3YBnlPYwsLCDE4UPKSoCyEC2uY9hQDMGN8Ji0X+ZLUG27Ztw2azER4eTt++fY2OE1TkX4gQImC5\n3ZrPtpwFYMwgOTGmtdi/fz8Aw4cPx2w2G5wmuEhRF0IErFVfnuJ0QTUJsVYy+sl4emuQn5/P2bNn\nMZlMjBs3zug4QUd2aRNCBKyPNnqWtph/S1fCrdJiC3Xnzp3jjTfeAGDQoEFERkYanCj4SEtdCBGQ\n1mw+Q87pSiLDzcy9qYvRcYSfVVVV8eabb2Kz2ejSpQvTpk0zOlJQkpa6ECIgvft5LgDfn9Eda5i0\nP0JZSUkJL7zwAtXV1cTExLBw4UIsFilP10J+akKIgFNT6+LY6UpMCu64sfOVnyCCltvtZtWqVVRX\nVxMXF8ecOXOkoF8H+ckJIQLOgeNluFyanqkxREXIn6lQdu7cOfLy8gC4//77iY2NNThRcJM+LSFE\nwHn90xMAjE6X09hCXf122r1795aC3gykqAshAsruQ8Vs/7aIcKuJebd0NTqO8LP6ot6hQweDk4QG\nKepCiIDhdmv+9u4RACYMbUdCrNXgRMKfKisrvQvNyIYtzUMGq4QQAWP9jvMcPFEOwL3TuxkbRvhV\nUVERL7zwArW1tURERNCtWzejI4UEKepCiIBQa3fxt/c8rfTbxnWkZ6qMr4YqrTUff/wxtbW1xMfH\nc8899xAdHW10rJAgRV0IERC2fVtEfnENbRPC+cndvY2OI/zE5XLx0Ucfcfz4cSIiInjggQekoDcj\nGVMXQgSE3YdKALhtXCdio2SrzVD19ddfk52dDcD06dOloDczKepCiICQddhT1If0TjA4ifCnffv2\nAXD77bczaNAgg9OEHinqQgjDVdgcHD1VgcWsGNAjzug4wk9cLhfl5Z6JkOnp6QanCU1S1IUQhvvb\ne0fQGgb3TiAiXHZjC1U7duzA5XLRtm1brFY5XdEfpKgLIQx1/HQl/67bYvUHt/cwOI3wp6NHjwLI\nPul+dNUB6oIBAAAgAElEQVRFXSkVr5R60h9hhBCtzwdfe9b9Hjs4mcEynh7Szp8/D0DHjh0NThK6\nGi3qSqnOSqllSql/K6UeUEpFK6WeBQ4D7VouohAilG3ZWwjATSPbG5xE+NORI0eoqKjAYrGQmJho\ndJyQ1dR56q8BXwP/AqYBO4AsYJDW+lwLZBNChLjcczZOF1QDMHawLBMaqlwuF59//jkAw4cPx2SS\nkV9/aaqoJ2qtf1N3fa1S6i7gXq212/+xhBCtwfPvHAYgo1+ibLEawnJycigoKMBisTB27Fij44S0\nJv8VKaUSAFV3swiIU0opAK11sZ+zCSFCmNPlZvdBz5+RX9zXz+A0wl+01uzduxeAQYMGyfaqftZU\nUY8DdvJdUQfYVXepAZmmKoS4ZnuOlFJjd5PaLpKObaOMjiP8QGvNhg0b2Lt3L0opBg4caHSkkNdo\nUddad2vBHEKIVubDDZ5Z7yPTkw1OIvzB5XLxzjvvcPiwZ4hl+vTpshNbC7hS97sFmA70rTu0H1ir\ntXb6O5gQInQ5XW42ZXtmvd85ubPBaYQ/7N+/n8OHD2MymRg5ciTDhw83OlKr0GhRV0p1Ar4EzgK7\n8XTDzwCeU0rdqLU+0zIRhRChpqCklupaF8nx4XRpLxt6hBqn08nHH38MwK233ioFvQU11VL/b+Dv\nWuu/NDyolHoU+H+B7/szmBAidK349DgAqe1kLD0UFRUVUVtbC8DgwYMNTtO6NFXUR2utF118UGu9\nRCl1yH+RhBChrKTCzgdfe5aFnTmxk8FphD+UlpYC0KtXLywWOVWxJTW1AkB1E/dVNXcQIUTrcOJM\nJQDJ8eFMHdXB4DTCH+qLelyc7LjX0po8pU0pNecyxxXQxk95hBAhrrTCAUD/7vIHPxQVFRWxdetW\nAJKSkgxO0/o0VdQ3ALc3cZ8QQly1cpunqLeJCTM4iWhuDoeDV199lYqKCiIiIuS8dAM0dZ76ohbM\nIYRoJY7kVgDQLjHc4CSiueXl5VFRUUGbNm1YtGgRMTExRkdqdZrape2VBtdlprsQ4rq53JoNu/IB\nGDdYNnsMNQcPHgSgT58+JCTINrpGaGqiXMPzEB7zdxAhROjLL66hpMJOYhsrvTpLKy6UuFwudu7c\nCSArxxmoqaKuWyyFEKJVWL3+FACdU6Ko2xtKhIj169fjcrmwWq307t3b6DitVlMT5VKVUkvwzHav\nv+6ltX7Ur8mEECHlXFE1b392EoB7p3czNoxoVlVVVXzzzTcATJkyRc5NN1BTP/lfNLi+w99BhBCh\nbdWXp3BrGJ2exJhBbY2OI5qJ2+1m1apVAJhMJjIyMgxO1Lo1Nfv91ZYMIoQIXbsOFntb6QumdTM2\njGhW+/bt49ixY0RGRrJo0SIZVjFYU2PqQghx3bTWvLD6KG4Nt43ryLC+iUZHEs3o0CHPquHjxo2j\nXTs5o8FoUtSFEH6180Ax+46VERNl4eG5MoEqlHz22Wfs378fgLS0NIPTCJCiLoTws3XbzwMwc0Kq\nrCIXQs6dO8fmzZsBGDt2LG3byjyJQNDUfup/pYnT2mT2uxDiSg6eKOPfGz07so0eKOuAh5K9e/cC\n0Lt3b6ZMmWJwGlGvqdnvMuNdCHFdMrMKALhhUDJD+8hYeqj48ssv2bRpEwDDhw83OI1oSGa/CyH8\norC0hrfqZrzPmpRqcBrRXGpqasjMzARg8uTJMpYeYK64QoBSqi3wn0B/IKL+uNZ6sh9zCSGC3Bdb\nz1Frd5PRL5ExA5ONjiOaSU5ODlprOnXqxPjx442OIy7iy0S5FcABoDvwW+AEsN2PmYQQIeCzrecA\nmD0pVc5dDhGHDx/mww8/BDybtojA40tRT9JavwQ4tNZfa60XA9JKF0I0as+RUo7kVhATaWH0IGml\nBzutNXv27GHlypXU1tbSt29fxowZY3QscRm+LNDrqLs8q5S6DTgDyIwXIUSjdh0sBuDGESmEh5kN\nTiOu19q1a9m6dSsAQ4YMYebMmdL7EqB8KerPKKXigP8A/gq0AX7m11RCiKC252gpAIN6xRucRFyv\nyspKtm/3jLgOHz6cadOmSUEPYFcs6lrrf9ddLQNu9G8cIUSwyztfxfZviwDo1z3O4DTien355Ze4\n3W569erFjBkzjI4jruCKY+pKqVeVUvENbicopV72bywhRLB6+kXPoiQ9OsXQpX2UwWnE9Th+/Di7\nd+/GbDYzdepUo+MIH/gyUW6Q1rq0/obWugQY6r9IQohglV9cw4Hj5QD87seDpJs2iLndbtasWQPA\nhAkTZLOWIOFLUTcppRLqbyilEvFtLB6l1DSl1CGl1FGl1BONPOZupdR+pdS3Sqk3fYsthAhEJ8/a\nvNe7tI82MIm4Hlpr1q5dS35+PvHx8dxwww1GRxI+8qU4PwtsVkq9CyhgLvDfV3qSUsoMLAWmAnnA\ndqXUh1rr/Q0ekwb8EhirtS5RSslHQSGC2NmiagBuGdPB4CTienz55Zds27YNgFtuuQWLxad2nAgA\nvkyUe00ptQPPuekamNOwMDdhJHBUa50DoJR6C5gFNHzuD4GldV36aK3zrzK/ECKArK/bka17xxiD\nk4hrZbPZvOu6T5o0ib59+xqcSFwNX7deDcPTSld1133RCTjV4HZe3bGGegO9lVLfKKW2KKWm+fja\nQogAcyyvgh0HPOen9+vexuA04lrl5ubidruJjo5mwoQJRscRV8mX2e+P4VkqNhloB7yhlPppM72/\nBUgDJgELgBcazrRvkOFBpdQOpdSOgoKCZnprIURz+jjzDAA9U2MY3DvhCo8WgaiiooK1a9cCMGLE\nCJnoGIR8aanfD4zSWj+ltf41MBpPt/mVnAY6N7idWnesoTzgQ621Q2t9HDiMp8hfQGu9TGudobXO\naNu2rQ9vLYRoaZv3eD5w/3xhP8wmKQbBRmvN+++/T1lZGR06dJDJcUHKl6KuAFeD2666Y1eyHUhT\nSnVXSlmB+cCHFz3mfTytdJRSyXi643N8eG0hRAD5cEMeefnVWMyKtM6xRscR12D37t3k5ORgsVi4\n++67CQvzdaRVBBJfpjQuB7YqpVbX3Z4NvHSlJ2mtnUqpR4C1gBl4WWv9rVLqaWCH1vrDuvtuVkrt\nx/Nh4Rda66Jr+UaEEMapnyB3y5gOhFtlrfdgU1xczJdffgnAbbfdRny8LO8brHyZ/f6cUuorYFzd\noR9orXf78uJa60+ATy469usG1zXweN2XECII2R1udh8uAWDxzJ4GpxFXq6CggH/+85+4XC7i4uJI\nT083OpK4Do0W9bpFZuqdqPvy3qe1LvZfLCFEsCgsrcXl0rRLCKddYoTRccRV+uyzz7wFffHixXJO\nepBr6r/eTjznpdePn+u6S1V3vYcfcwkhgsT+42UAdEiONDiJuFqFhYUcO3YMgO9///u0aSOnIga7\nRou61rp7SwYRQgSn+h3ZRg9MNjiJuBrFxcUsW7YMrTVpaWkkJMhpiKHA18VnhBDiEueLa/h861mU\ngnFD5HTTYLJ+/XocDgedOnWSLVVDiBR1IcQ1+9e6XBxOzeQRKXSTpWGDRk1NDfv370cpxV133SXd\n7iFEiroQ4prV78o2OaO9wUnE1Th8+DBut5uuXbsSFxdndBzRjBot6kqpnUqp/63bPlWmtAohLlFa\n6QAgoY3V4CTiahw9ehRANmsJQU211EcBq/Gs+Pa1UuoTpdRjSqneLZJMCBHwSsrtACTESlEPJqWl\npQC0aye7XYeapma/O4Gv6r5QSnUEpgHPKKV6Alu11g+3QEYhRIAqLK0BID5WlhQNBlprtmzZwqlT\nng00pes99Pi8yoDW+gzwMvCyUsoEjPFbKiFEwNu4Ox+HU2MNMxEdKQuWBINDhw7x2WefAZCenk5i\nYuIVniGCzTX9S9Rau4FvmjmLECJIaK15c80JAGZNTJUtOgOc2+3miy++YNu2bQCkpKQwZ84cg1MJ\nf5CP10KIq3bqfBX7jpURHWnh/lmy3nugW7NmDdu3bwc8k+NmzpwpH8RClBR1IcRV27Hfs/XDqAFJ\n0vUewLTWbNiwwVvQZ82axZAhQwxOJfzpiuepK6V6K6XWKaX21d0epJT6lf+jCSEC1ZrNZwC4YbCs\nIhfI9u7dy1dffQXAxIkTpaC3Ar4sPvMC8EvAAaC13gPM92coIUTgslU7OXSiHLNZMXGYnBIVqFwu\nF6tXrwZgzJgxTJo0ydhAokX4UtSjtNbbLjrm9EcYIUTg+2zLWdwaeneJJSLcbHQc0YgPPvjAez0j\nI8PAJKIl+VLUC+vOS9cASqm5wFm/phJCBKSqGidL3z0MeGa9i8B05swZ9u7dC8D8+fPl1LVWxJcZ\nLj8BlgF9lVKngePA9/yaSggRkDZlF1Brd5PYxsr0GzoaHUdcRmlpKa+++ioAXbp0oU+fPgYnEi3p\nikVda50DTFFKRQMmrXWF/2MJIQLR8TOeDVxuGdMBk0lOiQo0NpuNlStXYrfb6dSpEwsXLjQ6kmhh\nVyzqSqlfX3QbAK31037KJIQIUEVltQCkpkQZnERcrKamhvfee4/8/HwiIyNZsGABFoucbtja+PJf\n3NbgegQwAzjgnzhCiEBWVOop6kltwg1OIhpyOp289NJLFBYWAnDPPfcQHR1tcCphBF+6359teFsp\n9Sdgrd8SCSECVlGZZ1e2pHjZlS2QrFu3jsLCQpRSzJ8/n9RUmcTYWvky+/1iUYD8xgjRyjicbk4X\nVAGQHB9hcBpRr6ioyLum+0033UTv3rI7dmvmy5j6XupOZwPMQFtAxtOFaGXOF9VQVeMiJTGC5Hjp\nfg8UmZmZuN1uUlJSGD16tNFxhMF8GVOf0eC6Ezhft9e6EKIVKav0dL0nxknXeyCora3lww8/ZP/+\n/QDMnDkTs1kWA2pJJfYa8qoqOV5ZztGKMnIqyyi21+DUmnfGTTckU6NFXSlVv1rBxaewtVFKobUu\n9l8sIUSgKa1wABAXI0U9EGzcuNFb0Lt27UrHjrJugD9orSm213K22sbZahtnqm3kVVWyu6SA8zVV\njT7P4XYTZrqWEe7r01RLfSeebvfLnYyqgR5+SSSECEildS31+Jgwg5OI48eP88033wAwffp0RowY\nYXCi4ORwuymoqaLC6aDCYafUXsv52mrOVds4V13F2RpPIbe73Zd9vtVkont0HF1jYukVE0ePmDja\nRUQRbw3HYtDWto0Wda1195YMIoQIbPklNQDEx0pL3Whr1qwBoHfv3owYMUL2Rm+g1uWiwmmnwuGg\nwmmn3G6nxF5Lfm0VBTXVlDlqKbXbKaitprC2GpfWV3zNuDAr7SOi6RAZRYfIaDpFxdAtOpa+bRIJ\nD7AhD59WJlBKJQBpeM5TB0BrvcFfoYQQgWff0TIAOrWLNDhJ6+N0uymx11JYW82uI4fYjR3VMZk+\no4fx1snDOLXG6Xbj0m4c2o3TrXFqN666S6d243C7cdU9znPMcx1AKTAphQnluWxw3awUCrzHzUph\nViYs9Zcmz6VZKSz1lyZT3eM8z/H8j7rrnkXM3Frj0p5M7rovV92XG8/t+ty1Lhd2txu724Xd7aLW\n7cbu+u56tdOBzeWk2unEoS/fqr4cBbSLiCQuLJxYSxhtwqy0i4iifWQUHSKi6RAZTfvIKKItwdM7\n5cvs9weAx/CcxpYFjAY2A5P9G00IEUjO1J3ONrh3gsFJQo/T7aagtppz1VWcq/GM2+baKjhdZaOw\ntpoSew0XlKpenQDYf3SvIXkDWZgyERsWRozFSmxYGLEWKwnh4bQLj/R2jcdarLSNiKRteGTAtbSv\nly8t9ceAEcAWrfWNSqm+wO/9G0sIEUjcbs35Yk/3e/skaalfi/oJV+drqjhbbeNctY2zNVWcqbax\nt6SQGrer0ecqIM4Shru0nHC7k6SoKNK698BqsWBRJsJMDVvOJsIatKAtddfDlAmzqe52XWvaopS3\n1exu0EJ2ay66XX8/3ta1s77lrxtcuj2tb2eDVrjW4MZzqfnutrlBy9+Ewmyqu1SqQa+AiXCTGavJ\nhNVsrrted9tkJtzsuR5lthBlCSPSbMFqMrXq4QhfinqN1rpGef7jh2utDyqlZNsfIVqR4vJaHE5N\nfGwYkbKHuk/O11SxtfAcWXWzpPOqKim21zb6+ERrBB0jPeO27SOj6RwVQ5eoWNpGRJJojWDbli18\nvieLAQMGMPf2uS34nYhg4ktRz1NKxQPvA58rpUqAk/6NJYQIJCfOeraA6CCt9EY53W52leTzTcFZ\ndhbnc9J26YaWMZYwzzhtRBQdI6NpX1fEO0fF0iU6ttHXttvtbNq0CYDu3WUOs2icL2u/31F39TdK\nqfVAHLDGr6mEEAFl14ESALp0kE1C6rm05nRVJduLzpNVUsDukgLKHHbv/ZFmCxmJ7RiZlELX6FhS\nIjwzp6+la3jbtm3YbDbat2/PkCFDmvPbECHGl4lyS4C3tNabtNZft0AmIUSAOZrnaXWOTk8yOImx\nnG43h8pL+PTMSdbn51HeoIgDdI2O5caUVEYmpdCvTSKWZlh8xOFwsHHjRgAmT54sq8aJJvnS/b4T\n+FXdOPpqPAV+h39jCSEChdPl5uDxcgB6dW68iziU1bicLDu6jw/yci5YiCTSbGFMcntGJqXQPy6R\nbtFtmn2SVkFBAXa7naSkJNLS0pr1tUXo8aX7/VXg1bplY+8E/qiU6qK1lt8uIVqB7MOllFTYaZcY\nQWpKlNFxWtzh8hJ+mb2J/JpqAFKjYhiT3J7xbTsxKCEZs59nWtcvBZuU1Lp7SYRvfFp8pk4voC/Q\nFTjgnzhCiEDzceZpAG4Z3QGLueXXsjbKofISNuaf5tXjBwFIjYzhl+kZDIpPbrEMDoeDLVu2AJCe\nnt5i7yuCly9j6v8D3AEcA94Gfqe1LvV3MCGE8c4UVPHl9vMATB/bweA0LeN4ZRkvHP2WjQVnvMcS\nrOEsHTGJxPCW3Ud+69atuFwuUlJSGDhwYIu+twhOvrTUjwFjtNaF/g4jhAgs73yei8utmZyRQueU\n0J357taaPaWFfHz6BGvOes7YtZpM3NyhK8MS2jIyKYU4a8vuIe9wOPjqq68ApKALn/kypv7P+utK\nqd9orX/j10RCiIBQU+viow2ervd7b+1mbBg/Oldt408HdrG1yNMjoYDbOnVnQdfeTZ477m85OTm4\nXC5iY2O54YYbDMshgsvVjKkDzAR+44ccQogA8/WufOxON706x9C7Sxuj4zQ7l9a8m3uEpYf3AGBR\nijs792Jax670io03NJvWmi+++AKAMWPGtOplT8XVudqiLr9ZQrQCDqeb1z8+DsD0GzoanKZ5VTjs\nbCk8x6vHD3hXfRuVlMJDaQMNL+b1zp07R2FhIWFhYWRkZBgdRwSRqy3qw/ySQggRUA6fLOfkORvJ\n8eHcPiHV6DjNwq01r+Yc4M0Th7ybpyRaI/hZ3yFMSgms73HHDs9SIEOGDCEsLHi2/RTG82X2ew/g\nf4ExgFsptRn4mdY6x9/hhBDG2LTHMy82vWdcSGzgUlhbzR++3eEdNx8Yn8TklFRmdOpOhPlq2zb+\nlZuby+7duwEYMGCAwWlEsPHlt/lNYCme09oA5gMrgVH+CiWEMFb2Ec9a7+OGtDM4yfU7VlHGj7d/\nSbXLRYwljJ/3G8bklNSAHKfWWrNmzRq01rRv357OnTsbHUkEGV+KepTW+vUGt99QSv3CX4GEEMYr\nq3QAkNYleJeFLayp5s2Th1h96hhOrekQEcVfMibSMTJwT837+OOPOXv2LAD33XcfpmZYO160Lr4U\n9U+VUk8AbwEamAd8UrdsLFrrYj/mE0IYoKraCUBURHB2vR+tKOXh7eupdnnGzjMS2/HM4DFEWwJ3\nfPr06dPs3LkTgLlz5xIZKdvciqvnS1G/u+7yRxcdn4+nyPdo1kRCCMNV1XiKYXREYI03+6LCYef/\n7NxAtctF56gYHkobyIR2nYyO1aTKykreeecdAPr37y9j6eKa+bL4TPeWCCKECAxOlxtbjaelHhlk\nLfVal4ufbP+KMoeduDArf82YRFILL+16tbTW/OMf/8Bms9GxY0fuuOOOKz9JiEYE38dwIYRfHT5Z\ngdaQGGcNqg1cTtrK+eeRfRy3lRNjCeOPQ8cGfEEHKCwsxGazAZ5ud4tF/iyLaye/PUKIC+zPKQMg\nwho8rfQXju7jtbrd1KwmE/87fAK92yQYnMo3WVlZAPTo0YOEhODILAKXFHUhxAXOl9QAMHVUe4OT\n+OaVnP3egj46uT0LuvYOmoJ+8uRJNm3aBCCnr4lm0WhRV0o1uXqc1npX88cRQhgtv8hT1Lu0D9xT\nv+oV1lbz0rH9APxyQAa3duxmbKCrUFRUxBtvvAFA165dGTNmjMGJRChoqqX+bN1lBJABZONZ+30Q\nsAPPCnNCiBCTX9dSb5cY+OPRr+V4Wug9Y+KCqqCXl5fz1ltv4XQ66dKlC/Pnzyc8vGW3dhWhqdGi\nrrW+EUAptQoYprXeW3c7HdmpTYiQdfSUZ5OTdgmBXdSPV5bzft4xAB7oGTyngBUWFvLGG29QVlZG\nVFQUc+fOJSIisH/WInj4MrW1T31BB9Ba7wP6+fLiSqlpSqlDSqmjdQvYNPa4O5VSWikl2xEJYaDl\nHx2jxu7GbFa0TQjcluNJWzm/2J2JBmZ06s64dsGxk1x1dTVvvfUWZWVlJCcns3jxYmJjg3fVPhF4\nfJkot0cp9SLwRt3te4E9V3qSUsqMZ834qUAesF0p9aHWev9Fj4sFHgO2Xk1wIUTzcrrcvPyBZ5+m\nOTd2JswSmKezbcg/zTP7tlHtctE1Opb7e/Y3OpJPSktL+dvf/obD4SAxMZEf/vCHWK1Wo2OJEOPL\nv9ofAN/iKbyPAfvrjl3JSOCo1jpHa23Hs8zsrMs87nfAH4EanxILIfzinc9zvdcfvivNwCSN25B/\nmiezN1PtcjGubUeez5hEcnjgL6dqt9t56aWXcDgcKKWYN2+eFHThF76sKFejlPoH8InW+tBVvHYn\n4FSD23lctLNb3Qz7zlrrj2WTGCGMU1BSwysfeVrpP7i9R0AuOrP27El+v287APO6pPFw70GYAnCn\ntcvZsGEDlZWVKKV49NFHiY+PNzqSCFFX/JerlJoJZAFr6m4PUUp9eL1vrJQyAc8B/+HDYx9USu1Q\nSu0oKCi43rcWQlzkg6/zqK51MaBHHD+YGXjbOeRVVfK/B7NwA3ek9uTHQVLQ3W43b775Jt988w0A\nM2bMkIIu/MqXj+NP4elKLwXQWmcBvqwHfxpouJpCat2xerFAOvCVUuoEMBr48HKT5bTWy7TWGVrr\njLZt2/rw1kIIX9XaXbz/VR4AC2/tHnD7jFc5nTyR9Q0VTgejklL4P32HYA6wjI358ssvOXLkCEop\nhg4dyqBBg4yOJEKcLxPlHFrrsov+oWsfnrcdSFNKdcdTzOcD93hfQOsyILn+tlLqK+DnWusdPry2\nEKKZ7DlSSlmlg/ZJEWQMSDQ6ziX+deooJ20VhJvMPNE/Iyha6AAVFRXeFvqcOXNIT083OJFoDXxp\nqX+rlLoHMCul0pRSfwU2XelJWmsn8AiwFjgAvKO1/lYp9XRdl74QIgCs/soz9WVInwTCwwJrvfdv\nCs7wwtF9ADzRfzjJEYE/Ka7e+++/D0BycrJspSpajC8t9Z8CTwK1wJt4ivTvfHlxrfUnwCcXHft1\nI4+d5MtrCiGaz4pPT7Bxt2eeSka/JIPTXGhXcT6/3rMFDUzr0JWb2gfP2ugnT54kJycHk8nEvHnz\nAm5IQ4QuX4r6bVrrJ/EUdgCUUncB7/otlRDC746fqeSfq44A8P0Z3bllTAeDE32n0uHgl1mbsLvd\n3JDcgScGZARNYdRa8/nnnwMwfvx4kpOTr/AMIZqPL93vv/TxmBAiiHy9Mx+tIa1zLPfP6ml0HC+X\n1vzjyF6qXE7SYuP53eDRQTMxDjyT406fPk10dDQ33HCD0XFEK9PULm3TgVuBTkqpJQ3uagM4/R1M\nCOFf9Ru33D6hU8C0gt1a80TWN2wpPIdFKX7aezBWU2CN8zflwIEDZGZmAnDzzTfLAjOixTXV/X4G\nz25sM4GdDY5XAD/zZyghhP/tzykDoH1SYGwmUuty8du9W9lSeA6An/YZzNDE4DmF9dSpU6xatQqA\nyZMny+lrwhBN7dKWDWQrpd7UWjsAlFIJeFaAK2mpgEII/zhXt296/x5xBifxePX4ATYWnEEBD/ZK\nZ07nXkZHuiqbNm3C6XTSo0cPxo0bZ3Qc0Ur5MlHu87pT0Cx4Wuz5SqlNWmtprQsRpJxON7ZqJyYF\nsVFhRsehxF7De7lHAfj/ho5jVHJ7gxNdncrKSk6ePAnAtGnTAmY4Q7Q+vkyUi9NalwNzgNe01qOA\nm/wbSwjhT6WVdgBio8MwmYwtQJUOB4/t2EC1y8mIpJSgK+jnzp1j2bJlVFdX06VLF5ntLgzlS1G3\nKKU6AHcD//ZzHiFEC3j3C8+CM107RBuaQ2vNQ9u/5LitnCRrBD/vN8zQPFfLZrOxcuVKKioqiImJ\n4e6775ZWujCUL0X9aTwLzhzVWm9XSvUAjvg3lhDCX84X1/D2Z56u4ltGG3tu+pJD2Zy0VQCwdMQk\nOkYa+yHjamit+eijjygvLyc+Pp4f/ehHREcHT34RmnzZevVdGiw0o7XOAe70ZyghhH/UOlz86L+3\n4nJrRqUnMXNiqmFZ9pQW8t4pzzj6Y32G0CkqxrAs12LlypUcOeJp38yaNYuYmODKL0LTFYu6Umo5\nl9nARWu92C+JhBB+c+B4OUVlnvH0h+/qbViOWpfLuzf6vd36MLdLcM1037Nnj7egT5kyhW7duhkb\nSIg6vsx+bziOHgHcgeccdiFEkNn+bREAsyel0qOTMS1LrTWv5OzndLWNrtGxLO7Z35Ac1yo/P5/V\nq1cD0KNHD8aOHWtwIiG+40v3+78a3lZKrQQy/ZZICOEXbrfmow2nARg5wLjNW3YW5/PGiUMAzErt\nESXsJA4AACAASURBVFQrxrndbr7++mvAs/va3XffbXAiIS7kS0v9YmlAu+YOIoTwr7z8Kkoq7ESG\nmxk3xLiV2naXeHaF69cmgTuDaIEZm83Giy++SGlpKWazmQULFhAeHm50LCEu4MuYegWeMXVVd3kO\n+E8/5xJCNLN9xzzLwg7vl2jYaVcOt5vMAs/o3V1d0jAF0elfX3zxBaWlpQDcddddJCYmGpxIiEv5\n0v0e2xJBhBD+tSm7roXcrY1hGV47/v+3d+fxUVV348c/JzPZExKSEAiBELaEfQ2bbC5sAgparaBY\naGtdqo+t+jyt3bSP/XV5XOpT69Jaqz5ScasiVJTFCsoiOwTCEhISCAkx+77PzPn9cW/GBFmSMJOZ\nCd/363Vfc+fMnXvOmXtnvnPvPfecY2RVVxIXFMK02N4eK0d7ORwO0tONSwYrVqygX79+Hi6REOd3\nsVHahmitjyulztcbhAZKtdan3Vc0IYQrZZ4x7gcfN7TzjzC11ryYcZi3T58A4LZ+SQRbOnL1zzMy\nMjKoq6sjKiqKhIQETxdHiAu62LfqEeAHwDMXeD1aKZWqtb7T9cUSQrjSqbPV5BXVARAfG9Kpedu1\n5g9H9rI+3zgGuCMxmZv7es/47ZficDjYvHkzACkpKdJjnPBqFxul7Qfm4zUXWkYptdEdhRJCuNar\na7MAmDwyhu7hnTfGt9aa59IPsj7/NBaluG/wSL6dMNinAuOxY8coKCggKCiIsWPHero4QlzUxU6/\n33yxN2qtP9Baz3F9kYQQrvTloSI27y0AYMUNAzo171WnT/DBmZMAPDFqMjNi4zs1f1coKTHu7R81\nahRBQd4x9rwQF3Kx0+83mI+xwFXAZ+bza4AdwAduLJcQwkXe/OQUAItmxjO8E8dO35Sfw18yDgPG\nKXdfDOgAeXnGvf2RkZEeLokQl3ax0+/fBecp9mFa63zzeRzweqeUTghxWRoa7aSfrgTg+4s7757w\n0zWVPHVsPwDLEpO5e9CITsvbVbTWbNq0iRMnjMZ93bt393CJhLi0tjQ/7dsc0E0FgDT/FMIHbE8t\nor7RQXK/8E69lv5ceip1dhtXxcRx96ARPnUNHcBut7Ny5UpOnzYa96WkpJCcnOzhUglxaW0J6v9W\nSm0A3jKfLwE+dV+RhBCusv5L4//4vCmdc0+41po/Hj/A7pIC/ICHh4z1uYAOcPjwYWdAnzdvHpMm\nTfJwiYRom7Z0PvOAUuomYIaZ9Fet9Wr3FksIcbm2Hyziy0PFWCyK6yb26pQ8dxTn82Gu0dL+3sEj\n6RncubfPuUJtbS0bNxo39ixevJjRo0d7uERCtJ1fWxbSWq/WWj+ktX4IKFZKveDmcgkhLoPN7uBP\nbxs9oF0zvifdu3XOqfeN+TkAjOkew9JE3ztdrbXm/fffp66ujv79+zNq1ChPF0mIdmlTl05KqbHA\nUuDbQDbS8l0Ir7b9YBH5xXX07hHML+/qnEZq6/Ky+awgF4CHhvjm/dz79+8nKyuLgIAAFi5c6JOX\nDsSV7WL3qSdhBPKlQDHwDqAu1hmNEMI77DLHTV8wtTcWP/cHpl3FXzlbu9+emMSAsM67dc5V8vPz\n2bBhAwAzZ86UAVuET7rYkfpxYCuwUGudCaCUeqhTSiWE6LAt+wqc46YPH+j+e6sb7HZ+k7Ybu9ZM\niu7JfYN975T18ePHeeeddwDo3bs3kydP9nCJhOiYi11TvxnIBzYrpf6mlLoOY/hVIYQXe2NdNgDT\nx/ZgbLL7763eXJBLRVMjYVZ/fjv6Krfn52paa9auXQsYAf3WW2/Fz69NzY2E8DoX3HO11h9qrZcA\nQ4DNwI+BWKXUS0op6R5WCC9UW28jI6cKi5/isbtG4ufmU+/FDXW8nnUUgPuTRhFosbg1P3dYv349\ndXXGYDd33HGH9BwnfNol/45qrWu01qu01jcAfYADwE/dXjIhRLtorfnP/z0AwKC+YQQFuj/A/i5t\nD3l1NQwMi2B2L9/rkyonJ4fdu3cDMGfOHEJCfO8WPCFaatc5Jq11mdb6Za31de4qkBCiYw5nVnA4\nsxyA+7+d5Pb87FqTWl4MwNNjp/ncUXpDQwMffGDcyDNq1CimTJni4RIJcfnkwpEQXcTz7xj3pQ/q\nG8bYZPe33P6iMI9Gh4MegcHEBAW7PT9X0lrz9ttvU1FRQc+ePbnhhhsu/SYhfECb7lMXQni3Qxll\nHDtlDNxy3y3uP0rPr6vhyaP7ABgRGe32/FyptraWNWvWcOrUKSwWC9/61rewWuWnUHQNsicL0QX8\nbbUxZvnM8bFMHO7eIKu15rn0VKptTYyOjOFnw1Pcmp8rFRYW8vrrr1NXV4fVauXb3/42PXr08HSx\nhHAZCepC+LiGJjsHT5QB8NPvDHN7fhu/ymFb0VlCrVZ+MWICwRbf+BlxOBy8++671NXVERMTIwFd\ndEm+8W0UQlzQ3iOlAPSJDSY81N+tee0u+Yr/l7YHgDsShxAXHOrW/Fxp//79lJSUEBwczHe/+11p\n6S66JGkoJ4SPO1NQA8DE4TFuz+uDHPM0f2w8d/jQgC3Z2dl8/PHHgDGUqgR00VVJUBfCx+UWGh2n\n9O3p/kB1vNI4zX/v4JH4+chgJ3a7nZUrV6K1ZtSoUYwcOdLTRRLCbSSoC+HDqmqbWPO5MTJavzj3\nngo/WVVBSWM9oVYrvX3otPuhQ4fQWgPGUbqMvCa6MrmmLoSPKi6v5/G/HgYgPMTKqMHu7d70kNnR\nzKToXj5zlH748GHnaff58+cTHOxb99ML0V4S1IXwQXaH5ufPp3LsVCXBgRb+8vOJBAa4t0e3dPPU\ne1I39w8S4wqffvop27dvByAxMZExY8Z4uERCuJ8EdSF8jM3u4NE/H3R2NvPHh8eR0Mu9p8O11nxZ\nnA/A4HDvHyu9qKjIGdCHDBnCLbfcgsXHurEVoiMkqAvhYw4cL2NXWgkAj/9gBCM6Ycz0UzVVlDY2\nEGb1Z0JUT7fnd7kOHjwIwLBhw7j11ls9XBohOo80lBPCxxzLrgDg5mv7MmtSXKfkuT7/FACTY3p5\nfUOzkpISduzYAcC4ceM8XBohOpcEdSF8zL7jRmczQxO7dUp+TQ4H6/JOAXBNzz6dkuflWLduHQA9\nevRg4MCBHi6NEJ1LgroQPuRsUS37jxsN1sYkd06Dtb9kHKaiqZHewaFM79G7U/LsqJycHLKzs7Fa\nrSxbtszTxRGi08k1dSF8SEFpPQAD4sPoFe3+27Pey8ng3ZwMLErxk2HjvfrUe2pqKp9++ikAV111\nFd26dc6ZDCG8iQR1IXzIv77IA9zf0QzA9qKzPJeeCsCPkscwPirW7Xl21K5du1i/fj0A4eHhTJ48\n2cMlEsIzJKgL4SOOnCxn066vAJgzuZdb88qoKuexQzsB+FbfQdzU13uvTRcXF7N582YAxo8fz3XX\nXSedzIgrlgR1IXzEUyuPATBiYATTxrj3qPnpY/tpdDgY0z2GB5JGuTWvy7VhwwYaGhpITk5mwYIF\nXn2JQAh3k4ZyQvgAm83BydxqAH73gHt7Rmt02DlaYbSw/6+h47H6ee/PRFNTE5mZmQDMnTtXArq4\n4nnvt1UI4VRW1QhAZLg/3cMD3JpXcYPRGC82KJiE0HC35nW50tLSnPMREd7f050Q7iZBXQgfsOeo\nceTcGS3ePzl7CsDrR2LTWrNt2zYAFi5ciJ8Xn1EQorO49VuglJqnlEpXSmUqpR49z+sPK6WOKqUO\nKaX+rZTq587yCOGLtNa8s/E0ANdNcH8XrYfLjS5oh3aLcntelyMtLY3S0lLCwsIYO3asp4sjhFdw\nW1BXSlmAF4DrgWHAUqXUsHMWOwCkaK1HAf8EnnRXeYTwRVprHv3zQbLyqgkPsbL46r5uzc/mcLCv\ntBCA2/oluTWvy3Hq1CnWrl0LwMSJE+UoXQiTO78JE4FMrXWW1roReBtY1HIBrfVmrXWt+XQn4P19\nUArRiUoqGtlxyBjH/HuLBhIU6L6RxhrsduZu/hAwTr1HBwa5La/LcezYMVatWoXNZmPkyJFMmzbN\n00USwmu4M6jHA2daPM810y7k+8AnbiyPED7nUIbRJezQ/t245boEt+VT0lDPD3b9m0aHA4AfDvbO\n29gKCgp47733aGpqYvTo0SxevFhavAvRglfcp66UWgakADMv8PrdwN0ACQnu+2ETwpuczq/hb6uN\n27UmDIt2Wz51dhuPHtxOdk0lAX5+/PfIyUyL9b4+3gsLC3n99dfRWjNixAgWLVokAV2Ic7gzqOcB\nLS8A9jHTWlFKzQJ+AczUWjecb0Va65eBlwFSUlK064sqhHfJyqvmu7/+EoeG2O6BLJnrnjakWmv+\nnJ7K8coyYgOD+XPKTHqHhLklr8vhcDjYtGkT9fX19O/fn4ULF0pAF+I83BnU9wCDlVL9MYL5EuD2\nlgsopcYCfwXmaa0L3VgWIXzK0yuP4dAQHmLl5V9OIjzE3+V55NfV8MThXaSZHc38MGmUVwZ0gG3b\ntpGZmYm/vz833ngjgYGBni6SEF7JbUFda21TSj0AbAAswKta6yNKqSeAvVrrtcBTQBjwnvmvO0dr\nfaO7yiSEL9h2sJDDmeUA/HT5MKIj3BPAXjxxiLSKUkKtVr43YDjXeulY6aWlpWzZsgWA66+/nsjI\nSM8WSAgv5tZr6lrrj4GPz0l7rMX8LHfmL4QvWrXeuCd94fR4po11Tx/vtTYbO4rzAXh23AyGRnjn\nPel2u51//etfaK3p168fY8a4t4tcIXyd3NwphBepb7BzNKsCgHu/NQiLn3uuG5+uqaTR4SAuKMRr\nA7rD4eD999/n1KlTBAYGcsMNN8h1dCEuQYK6EF6iyebgpfczsDs0g/qGERHmnj7e82qr+e2RPQCM\niHRfq/rLtW7dOo4dO4ZSiiVLlhAd7b1lFcJbeMUtbUJc6eoa7Dz0zD6OZFVgsSiWXd/fLfkcryjl\nB7s/AyDM6s/ticluyedyFRYWcuDAAQBuvfVWEhMTPVsgIXyEBHUhvMDz76RzJKuC2Kggnrh3FMMH\nuH7EsUaHnd8e2QtAj8BgXpp4DT2DQlyez+VKT0/n3XffRWvNmDFjGDp0qKeLJITPkKAuhIdV1Tax\naddXAPz2h6MYkuieIUQ3nM3hVE0l/sqPv026ziu7gT1w4ICzT/fY2Fjmz5/v4RIJ4VskqAvhQTab\ng1+8kEpdg51xQ6LcFtC11vz5RCoA9yeN8sqAnpGR4QzocXFxLFu2DH9/19+fL0RXJkFdCA/RWvPM\nm8c5kF5GWLCVH9/unuvbWmueOX6AOrsNgBv6uOd6/eWor69n/fr1AEyePJnZs2fLyGtCdIAEdSE8\nZP2OfD7amkeAvx/PPDSO/r3d05vbn0+ksiY3C4AHkkYR4Oe+kd46ory8nJUrV1JaWkpUVBSzZs2S\ngC5EB0lQF8ID0k6W87vXjgBw902DGOaGhnEAB0oLeS/HGBTm4SFjuanvQLfk01E1NTW89tprVFZW\nEhkZyZIlS7BYvOtPhxC+RIK6EB7w/DsnAAjw9+Oma/peYumO2VdayE8PbAdgxYChXhfQbTYbb775\nJpWVlQAsX75cuoAV4jJJUBeik23ZV8ARs9e4Zx8eR4C/6081H6so5ZH9W7FrzcjIaJb3977bwj76\n6CPy8/MJCQlhxYoVEtCFcAEJ6kJ0sn98nA3A3ClxjBrc3eXrP1xezC9Tv8SuNbN79eU/h47H6mXX\nqD/77DNSU1OxWCzceeed9OjRw9NFEqJLkKAuRCfafrCI9NNVANx3y2CXr7+ssYGH922l3mEnOiCI\nh4eMI8TqXV/z/Px8tm7dChgt3Xv16uXhEgnRdXjXt12ILuz1f2Xx9zUnAUgZGkVUN9f27Z5eWcZ/\n7t9GvcPOwLAI/jhuOmFeeJ/3vn37AOjTpw/XXXedh0sjRNciQV2ITrD1QKEzoN8+L5G7Fg906Yhj\nJ6squGvXvwFQwC9HTCDKyzqYsdvtbNq0iX379qGUYvbs2TLqmhAuJkFdCDcrLm/gN6+kATBvSpzL\nT7tXNTVy/97NzufvTrueXsGhLs3jcp0+fZrVq1dTUWE0EJwxYwYJCQkeLpUQXY8EdSHcqKSigXt+\nt5u6BjsRYf58b5HrbytbfeYkNTYb8cGhvDTxGroHeM8RutaaLVu28MUXXwAQHh7OwoULSUpK8nDJ\nhOiaJKgL4SYOh+ZHT+2jsLQegOf+K4W4mGCX5lHSUO/sLe67A4d5VUCvra3lrbfeIjc3F4BJkyYx\na9YsrF7WcE+IrkS+XUK4yeHMck5/VQPA8z9JYUC867qBbbDb+WvmYdbkZtHocNDNP4AZsfEuW//l\nqqys5I033qCkpITAwECuvfZaJkyYINfQhXAzCepCuElRmXGEPnN8LKOTXHc/enplGQ/s2UK9ww7A\n5Jhe/HDwKIIt3vF1zsrKYt26dc6+3JcvX063bt08XSwhrgje8SsgRBejtWbrwSIAorsFumy9Dq35\nS8Zh6h12Iv0DeXjoWK7p2cdl679cpaWlrFy5EoDQ0FDuvPNOCehCdCIJ6kK4wcp12Xy2pwCAicOj\nXbbezwvz2FtaiB/w2pRZxAS69hr95cjNzWXVqlWA0SDunnvuITTUu1rhC9HVSVAXwsXe/yyHv31o\n3JN+/7eTmDrGNV2gZldX8vsjewG4qkecVwX0nTt3smHDBgCio6NZtmyZBHQhPECCuhAutCutmOfe\nSgdg4fR4lszp55L1VjY1cu/uz6iz2wjw8+PHQ8a6ZL2ukJmZycaNGwEYMWIEixYtkhbuQniIfPOE\ncJE3P8nmL+8bY5cvm5/IPTe7rpOZjfk51NptRAUE8vdJs4gJ8o6j9L1797Ju3ToApkyZwpw5czxc\nIiGubBLUhXCBxiYH736aA8CMsbF830WdzGiteS3rKK9nHQPghvgBXhPQa2trnQH9qquukn7chfAC\nEtSFcIHP9xdQWtFIQq8QnrhvFBY/19yPvbkgl9fMgD45uhcrBnjHuOhZWVmsXr0agJCQEK699lr8\nvGx4VyGuRBLUhXCBD7cYvabdOivBJQH9bG01L2Yc5vPCPMAI6L8fc5XHx0Vvamris88+Y+fOnQAk\nJCSwYMECLBaLR8slhDBIUBfiMmiteXbVcQ5llBMcaGHO5LjLXmdGVTnf2/mp8/n1vfvx6LAU/Lyg\nN7YdO3Y4A/qkSZOYM2eOHKEL4UUkqAtxGT7efpbVm42j9B8tTSYk6PK+UhWNDTyyf6vz+V8nXsuw\niKjLWqerNDQ0OAP6jTfeyNix3tMCXwhhkKAuRAfV1tt4ebXR2n3WxF4smNbxvtermhp56/QJVp85\nSbWtid7Bobwy6TrC/QNcVdzLtmfPHurr6+nRowejR4/2dHGEcKkNGzZQWFhIRkYGTzzxhKeL02Fy\n3kyIDlq9+QylFY0APLxsSIfXU9xQx3/s/ZyV2ceptjURHxzKb0dP8aqAXlVVxeeffw5ASkqKnHIX\nPunXv/41P/rRj5xBu7GxkQceeICf//znPPnkk/Tr14+GhoYOr3/9+vUkJyczaNAg/vCHP7R7mcTE\nREaOHMmYMWNISUnpUBnkSF2Idko/VcmL/8xg//FSAP7jtiTCQ/zbvR671nx45iR/O5lGjc1GQkg4\n/zVsHKMjY7xqNLOcnBzWrVuHzWYjLi6OCRMmeLpIQrRbXl4eNpuNyMhItm/fDsBLL73E8uXLmTBh\nAtOmTaOqqqrDwdRut3P//fezadMm+vTpw4QJE7jxxhsZNmxYu5bZvHkzMTExHa6nBHUh2qGsqpEH\nn95Lbb0dPwUPLk3m5mv6tns9GVXl/DZtDyerKwAYHRnDb0ZP9qrx0EtKSvjkk084edLo8jYsLIwl\nS5Z41R8OIc5n6dKlOBwOsrOzKSgo4MUXX+T999/nT3/6E0VFRZw5cwaAAwcOcM8991BVVUVMTAx7\n9uxh+fLlHcpz9+7dDBo0iAEDBgCwZMkS1qxZ0ypgt2WZyyVBXYg2yvmqhp/86QC19XaS+4Xz2/vH\n0DOq/UH4UFkxj+zfSr3DjgJ+M2oKM2J7e1WwPHr0KKtXr8Zms+Hv78/48eOZOXMmQUHe86dDiAtJ\nTU1l0aJFvPPOO2zbto2HH36Y2267jaeffpqSkhJnI8+5c+dy7733EhISQlJSEtnZ2fTv37/VuqZP\nn05VVdU38nj66aeZNWuW83leXh59+379B79Pnz7s2rWr1XsutYxSijlz5qCU4p577uHuu+9ud90l\nqAtxCVprNu8t4Kk3jlFdZyPA349f3TWy3QHdoTVfFufz6MEdAAT4+fH3SbNIDPOuoUltNhvvvfce\nAElJSSxYsECGTxU+o76+nqKiIh5//HEAhg0bRllZGY888sg3ll26dClLly4F4IUXXiA8PPwby2zd\nuvUbae6ybds24uPjKSwsZPbs2QwZMoQZM2a0ax0S1IW4iL3HSnh1TRaHM8sBGBAfxpMPjqFndPu6\naj1UVsxTx/ZzqqbSmfavmTcQYm3/tXh3stvtrFmzBjB6irvtttukUZzwKWlpaQwePNh5Vmn//v1t\nulvj/vvvP296W4/U4+Pjnaf1wRiKOD6+9R0xl1qmeT42NpabbrqJ3bt3S1AXwlX2HivhoWf2AxAW\nYuU7C/rzrWsTCPBve5ArbajnrdPpvH06A4AgPws39R3I4r4DvSqgV1dXc+jQIfbs2UN5ufEHZvbs\n2RLQhc9JTU0lJyeH+vp67HY7jz/+OE8++WSH19fWI/UJEyaQkZFBdnY28fHxvP3226xatarNy9TU\n1OBwOAgPD6empoaNGzfy2GOPtbu8EtSFOMfJ3Cpe+1cWn+8rBGDckCh+/8Dodncsc7yilAf2fk6D\nww7AmO4x/H70VML8vSOYa63JzMzk6NGjHDx40JkeHh7OxIkTGTNmjAdLJ0THpKamcvPNNzNp0iSa\nmpr4+c9/ztSpU92er9Vq5fnnn2fu3LnY7Xa+973vMXz4cADmz5/PK6+8Qu/evS+4TEFBATfddBNg\nXAK7/fbbmTdvXrvLobTWrqtVJ0hJSdF79+71dDFEF+NwaFIzylj1ySl2HSlBa7BYFNem9OTRFcPb\ndXQOYHM4ePzwTr4oPAvAf4+cxLW92t9K3p02bdrEjh07nM/79OnD1KlTGTx4sPTlLnzWzJkzefnl\nl0lOTvZ0UVypza1o5UhdXPHOFNTwh9ePcijDOO0cYPVjwfTeLJnTj949Qtq9vqMVpTxxeBd5dTUA\nPDtuOinRPV1a5o5yOBzs27eP9PR0561qEyZMYOjQoSQmJnpVC3whOuLkyZMMHjzY08XwGAnq4oql\ntWbtF3k8++Zx7A5NZLg/C6bGs3RePyLC2t+b25dF+bx5Kp3U8mIAIvwDuHvQCK8J6BUVFaxatYrC\nwkJn2uTJk5k7d64HSyWEa+Xm5nq6CB4lQV1ccWx2B//6Io/News4kF4GwIRhUfz67lF0C+vY9e4D\npYX85KDRS1WQn4WbEwZyR+IQunlBV6/5+fns3LmTQ4cOAcY18xkzZjB06FBCQ0M9XDohhCv5XFDX\nWn/j9oLw8HAcDgc1NTWt0oODg7Farc5Whc2sVivBwcE0NjZ+o5/fsLAwwGgN3FJQUBD+/v7U1tZi\nt9ud6RaLhZCQEJqamqivr2/1ntDQUPz8/L5R3sDAQAICAqirq8NmsznT/fz8CA0NxWazUVdX1+o9\nISEhWCwWqquradkOwt/fn6CgIOrr62lqanKmK6UICwvDbrdTW1t72Z/LhT7jjnwuF/qMO/K5XOgz\nDggIIDAwsNXnkl9cS1pmJR98XsSps5XYbQ1YLIr7bx3Mwul9CAn2c5brfJ9xQ0MDjY2NrfMPC2N1\nTiYvH9mHramJGbG9+VHyGGK7RXh03wsODiY1NZW9e/eSk5PjrE9CQgJ33nknfn5+2Gw25+cm+557\n971LfS6X+ozPt+/J796Vs+9ZrW0P1T4X1Kurq3nmmWeczwMDA/nZz35GeXk5zz33XKtlly5dSnJy\nMm+99VarUzLDhw/n1ltv5eDBg3z88cet3vOrX/2KpqamVnkALFq0iLFjx/Lhhx9y4sQJZ3r//v1Z\nvnw56enp/POf/2z1nkceeYTw8HCeffbZVjvR7NmzmTp1Khs2bGjV6rhnz57cd9995OTk8MYbb7Ra\n13333UfPnj3561//2urLMnXqVGbPns3WrVud/RmDsTM+8sgjFBcX89JLL7Va13e+8x0GDBjAG2+8\nQUFBgTN9zJgxLF68mD179rBp0yZnup+fH4899hg1NTXf+FxuueUWRowYwXvvvUd2drYzPSkpidtv\nv520tDTnfc/NHn30Ufz9/b+xrvnz5zNx4kQ++ugjjhw54kzv06cPd911FydPnuStt95q9Z4HH3yQ\nqKgonn/++VZfyKuvvpqrr76azz77jG3bd7IzrZjMM1X4B4bTe/hN2BvKiGMn/XuGkb57P+m74a67\n7qJPnz68+uqrlJaWOtc1ceJE5s+fz5dffsmWLVuc6RZ/f4rmTmP36SzOfvgJfUPCCOzVl5c3bPXI\nvudwOCgvL6egoIDBgwfj7+/vLG9cXBy9e/dm5MiRhIaG8uGHH8q+14K79r3du3c706OionjwwQfJ\nz8/nlVdeabWu9u578rt3Ze177Wn053Ot38ePH69b7twg/1ivpH+s7Tlaslj8eWX1cT7ZfobC0nqs\nFsXkkT0YM7QXsybGEhLgaPWeth4tFdTV8O+CXNblZVNmUWiHg+W9B3JLwiCs5n3dnbnvNTQ0sGXL\nFnbv3u38fPz9/YmOjiYlJYUBAwY4T7PLvidH6vK753v7ntVqbXMLVp8L6nJLm7gYm93BrrQS9h0r\nZUdqEXlFxo9EbFQQv/vhaJITO97daU5NFWtys1ibm0W9ee95hH8AvxoxkUkxvVxS/rYqKCggLy+P\nr776iqysLEpKSgCIiYlh+PDhjBo1iqioqE4tkxDCbeSWNnFlKalo4GB6GR9sPuO8NQ0gtnsgArPQ\nZAAAEY5JREFUdy0exLUTehIY0P57r49WlLKr+Cu+LM7nWGWZM31mbDyzeyUwIbonIe243nU5tNaU\nlJSwefNmjh492uq1oKAgFixYwPDhw+W2NCGuYBLUhc+y2R1s2VvAvuNlfLorn/pG45Ra9/AAbpwZ\nz/ghUYwYFIm/te0dx9i15mRVOYfKS9hRnM+ekq+vvQX4+TGtR28WxCcyMbrzjsztdjtnz55l48aN\nra6RDh06lPj4eOLi4ujbty/+XtJTnRDCcySoC59zOr+GfcdKWf/lWY5lfz1AyqjBkYxN7s4N0+Pb\nPOCK1ppTNVVsLzrL/tJC0ipKqbN/fV3LqhQL4vszPiqWKTG9CLK4/yvjcDjIz8/n7Nmz5Ofnk5mZ\n2er65JAhQ7jqqqtaDeEohBAgQV34gKqaJo5mV7DnSAlpJys4klXhfC0izJ/b5yUyOqk7w/p3a9Op\n51pbE3tLCzlVXcmnX50hu8XIaQBxwaGMjoxhWEQUV8XE0TO4/b3KtYfNZnNeI8/Pz+f06dOUlZW1\nWiY8PJykpCSmTp1K9+7d3VoeIYTvkqAuvE5pRQPbUovYdbiE7LPVnC2qw+74ukFnaLCVySOjGZsc\nxYyxsXTvdvEOXkob6tmQf5pjlWXk19VwsqqCJv1169dQq5XpPeKZHNOL0d1jiAls37Cq7dXU1MTJ\nkyfJysoiNzeXgoKCVq1xwWgpO3DgQHr16kV8fDzx8fEyYpoQ4pIkqAuPK6lo4KOteWxPLaKwtJ7S\nykZa3pThp2D4gAjGDunO0ETjMTzk/NePa21NHC4v4UxtFTk11RwoK2o1hjkYzUhHRkaTFN6dEZHR\nTO/Rm0A3DWBSXV3N2bNnKSoq4vTp05SWljpbqrcUExNDfHw8vXv3Jjo6moSEBLlGLoRoNwnqwiNq\n6mxknqli4858Nu78upEbgNWiSBkWzbAB3Zg0PIYB8WEEBX4z6NbamjhUXsyp6irSq8rIq63mVE1V\nq2viAP7Kj/HRsVzbsw99QsJICAknIiDQLfWqqqoiNzeXwsJCzp4926rDjpaioqIYPnw4AwYMIC4u\njsBA95RHCHFlkaAu3KK+wU5+cR1ni+vILzIem4/Ci8rq+aqkdccME4ZHs3hmH5L7hRMdEYjVbLHe\nYLdT3FBHUVkdhfV15NZWOU+jn62taXUavdnQbt1JCu9O39AwBodHMioyxtkpjCvZ7XaKioo4c+aM\ncyovL//GctHR0QwYMIAePXqQkJBAREQEQUFBLi+PEEJIUBdtprWmutZGcUUD5ZWNlFWZU2UjVbU2\nKqob+aq4nvziOkorGy+6Ln+rIrF3GCMGRjBlShSNoTZyaks5UHSW0rx6ztRWU1hfS0XTxdcztFt3\nhkZEkRjajUHhEcQGhlx2wza73U5dXR21tbXU1tZSU1PjnCoqKigvL6e4uPgbvUyB0ZtYfHw8vXr1\nokePHvTq1Yu4uLjLKo8QQrSVW4O6Umoe8CfAAryitf7DOa8HAm8A44ES4Dat9Sl3lkmAw6Gpa7BT\nU2czpnrjsaK6yZwaLzjfZLtUD4QarGANh+iYAKKjA4iIshISYSEgVEGARlsd4K/Jr69lU3UBq082\nXXBtVqWICQwmOjCInkEh9AwKYWhEFH1DwugdHEqI9eLXnbXW1NXVOYNyc6BunpqDd8sgfm5XkRei\nlCIiIoK+ffs6p9jYWGnQJoTwGLcFdaWUBXgBmA3kAnuUUmu11i27wvo+UKa1HqSUWgL8D3Cbu8rk\n6+wOTV29jZp6O7UtgvHXwdlIr66zUVt/Tlp9E9WNTdQ22aiz2cGiwY+vH/208dfrfGnhGqI0+IMl\nAAKCFZZAhQowXtcWjcNPY8eBDQd2NDagwJyc6szpHOFWf4ZHRtM3OIyYgEDC/Kz09A+gu5+VYLvG\nbrNhs9loamrC1mCjKa+QUttZ8hsanH1iN5jzDQ0N1NfXO+fr6upob1fISimCg4MJCQkhODiYsLAw\nQkJCCAkJITIykoiICGJiYujWrW230AkhRGdx55H6RCBTa50FoJR6G1gEtAzqi4Bfm/P/BJ5XSind\nSR3S7zudx4mzpTi0A4fWODTG5NBoNA6MIz2HQ+PQGo35ujnf/Jod4z325klr7A6jdzK73YFdg01r\nbA6NzeEwXsNY1qaNddu1xoHGbq7fjlkemtdnvIZqDsa0CMTmY3MwDgSCNcTQOli7gJ3zxuVWLFoT\n6NAEODRWh8bfoQm0O/C3Owi0O7DaHFjtdoKa7HSra8BS14CtqYmypibKLrHujggKCiI0NNQ5BQcH\nO4N289TyeVBQkARrIYRPcmdQjwfOtHieC0y60DJaa5tSqgKIBordWC6np/fvJzesbadaz0thBExa\nPHorrbHYNX4OBxaHAz+Hxk8bz41HjTIfW6b5OTQWhwOr3YHF7sBit2OxG8+tdmNdFrvD+T6Lud62\nOveKucViwd/f3zkFBgY6561WK1ar1TnfPLpRYGCgcwoICCA4OJjAwECCgoIICgrC4qbb1YQQwtv4\nREM5pdTdwN3m02qlVLoLVx9DJ/2J6ARSF+/UVerSVeoBUhdv1FXqAa6vy3qt9by2LOjOoJ4HtOyc\nuo+Zdr5lcpVSViACo8FcK1rrl4GX3VFIpdRerXWKO9bd2aQu3qmr1KWr1AOkLt6oq9QDPFsXdzbT\n3QMMVkr1V0oFAEuAtecssxZYbs7fAnzWWdfThRBCiK7GbUfq5jXyB4ANGFecX9VaH1FKPQHs1Vqv\nBf4OrFRKZQKlGIFfCCGEEB3g1mvqWuuPgY/PSXusxXw9cKs7y9AGbjmt7yFSF+/UVerSVeoBUhdv\n1FXqAR6si5Kz3UIIIUTXIF1fCSGEEF3EFR3UlVLzlFLpSqlMpdSjni7PxSil+iqlNiuljiqljiil\nfmSm/1oplaeUOmhO81u852dm3dKVUnM9V/pvUkqdUkodNsu810yLUkptUkplmI/dzXSllHrOrMsh\npdQ4z5b+a0qp5Baf/UGlVKVS6se+sl2UUq8qpQqVUmkt0tq9HZRSy83lM5RSy8+Xlwfq8ZRS6rhZ\n1tVKqUgzPVEpVddi2/ylxXvGm/tlplnXTu+F6AJ1aff+5A2/bxeoyzst6nFKKXXQTPfa7XKR31/v\n+65ora/ICaPx3klgABAApALDPF2ui5Q3DhhnzocDJ4BhGD3y/ed5lh9m1ikQ6G/W1eLperQo3ykg\n5py0J4FHzflHgf8x5+cDn2B09zMZ2OXp8l9kn/oK6Ocr2wWYAYwD0jq6HYAoIMt87G7Od/eCeswB\nrOb8/7SoR2LL5c5Zz26zbsqs6/Vesk3atT95y+/b+epyzuvPAI95+3a5yO+v131XruQjdWc3tlrr\nRqC5G1uvpLXO11rvN+ergGMYPfJdyCLgba11g9Y6G8jEqLM3WwT8nzn/f8DiFulvaMNOIFIp5Y1D\nn10HnNRan77IMl61XbTWX2DcedJSe7fDXGCT1rpUa10GbALa1FGGq5yvHlrrjVprm/l0J0ZfGRdk\n1qWb1nqnNn6B3+DruneaC2yTC7nQ/uQVv28Xq4t5tP1t4K2LrcMbtstFfn+97rtyJQf183Vje7Eg\n6TWUUonAWGCXmfSAeYrn1ebTP3h//TSwUSm1Txk9BgL01Frnm/NfAT3NeW+vS7MltP6B8sXtAu3f\nDr5Qp+9hHDk166+UOqCU+lwpNd1Mi8coezNvq0d79idf2CbTgQKtdUaLNK/fLuf8/nrdd+VKDuo+\nSSkVBrwP/FhrXQm8BAwExgD5GKezfME0rfU44HrgfqXUjJYvmv/IfebWDGV0sHQj8J6Z5KvbpRVf\n2w7no5T6BWAD3jST8oEErfVY4GFglVKqm6fK10ZdYn86x1Ja/wn2+u1ynt9fJ2/5rlzJQb0t3dh6\nFaWUP8YO9abW+gMArXWB1tqutXYAf+PrU7leXT+tdZ75WAisxih3QfNpdfOx0Fzcq+tiuh7Yr7Uu\nAN/dLqb2bgevrZNSagWwELjD/NHFPFVdYs7vw7j2nIRR5pan6L2mHh3Yn7x2mwAoo1vwm4F3mtO8\nfbuc7/cXL/yuXMlBvS3d2HoN8/rT34FjWus/tkhveW35JqC5lelaYIlSKlAp1R8YjNHYxOOUUqFK\nqfDmeYwGTWm07jZ4ObDGnF8LfMdsUToZqGhxystbtDrq8MXt0kJ7t8MGYI5Sqrt5WniOmeZRSql5\nwE+AG7XWtS3SeyilLOb8AIxtkGXWpVIpNdn8vn2Hr+vuUR3Yn7z9920WcFxr7Tyt7s3b5UK/v3jj\nd8WVre58bcJooXgC4x/hLzxdnkuUdRrGqZ1DwEFzmg+sBA6b6WuBuBbv+YVZt3Q80Ir3InUZgNEa\nNxU40vzZYwy7+28gA/gUiDLTFfCCWZfDQIqn63BOfUIxBiKKaJHmE9sF449IPtCEcX3v+x3ZDhjX\nrDPN6bteUo9MjOuXzd+Xv5jLfsvc7w4C+4EbWqwnBSNgngSex+ygywvq0u79yRt+385XFzP9deDe\nc5b12u3ChX9/ve67Ij3KCSGEEF3ElXz6XQghhOhSJKgLIYQQXYQEdSGEEKKLkKAuhBBCdBES1IUQ\nQoguQoK6EJ1EKVXdzuWvVkp95K7ymHm8ZXY9+tA56a8rpW5xY76RSqkftnjukroqpW5UXj7iohDu\nZPV0AYQQnqGU6gVM0FoP8kD2kcAPgRdduVKt9Vq8q5MVITqVHKkL0cnMo9ItSql/KmO87zfNHqua\nx8A+rpTaj9GNZvN7Qs2BPHabA14sMtMfUkq9as6PVEqlKaVCzskvSCn1mjLGoz6glLrGfGkjEK+M\nsaun800zlFI7lFJZzUftSqk3lFKLW6z7TaXUIqXUCqXUGrNeGUqpx1ss87BZrjSl1I/N5D8AA828\nnzLTwi7wmYxXxgAf+5RSG1p0y/mgMsa3PqSUettMW6GUet6cv9XMM1Up9UUHNpUQvscTvQzJJNOV\nOAHV5uPVQAVGv89+wJcYPVYFYfSANhijR6p3gY/M9/wOWGbOR2L0FBZqvv8LjK5D9wJTz5PvI8Cr\n5vwQIMfMK5ELj1/9OsbgNH4Y40ZnmukzgQ/N+QggG+OM3wqMnsOigWCM3r9SgPEYPWqFAmEYPYaN\nPTfvi3wm/sAOoIe53G0t6nIWCGz+TMzHFcDz5vxhIL7l6zLJ1NUnOVIXwjN2a61ztTFAx0GMIDcE\nyNZaZ2itNfCPFsvPAR5VSh0EtmAE5QTz/SswuhH9XGu9/Tx5TWtel9b6OHAaY6CMS/lQa+3QWh/F\nHFJSa/05Rp/iPTD6u39ffz1m+SatdYnWug74wMx3GrBaa12jta420893VuBCn0kyMALYZNb9l3w9\nuMch4E2l1DKMUdjOtR14XSn1A8DShvoK4fPkmroQntHQYt7Opb+LCviW1jr9PK8NBqqB3i4qW7OW\nZVQt5t8AlmEMEvLdFunn9jnd3j6oz/eZKOCI1nrKeZZfAMwAbgB+oZQa2Spzre9VSk0yl9unlBqv\nzVHAhOiq5EhdCO9xHEhUSg00ny9t8doG4D9aXGceaz5GAM9hBLfoC7RY3wrcYS6fBCRgDP7RUa8D\nPwYwj+KbzVZKRSmlgoHFGEfKW4HFSqkQZYzId5OZVgWEtyGvdKCHUmqKWX5/pdRwpZQf0FdrvRn4\nKcalgLCWb1RKDdRa79JaPwYU0XrISyG6JDlSF8JLaK3rlVJ3A+uUUrUYwa858P0G+F/gkBnQsjHG\nCX8WeEFrfUIp9X1gs1LqC22MU9/sReAlpdRhjNPUK7TWDeb/g46Us0ApdQz48JyXdmOMN90H+IfW\nei8Yt8fx9fCyr2itD5jp25VSacAnwLoL5NVo/lF5zvwDYzU/hxPAP8w0BTyntS4/p05PKaWa2yf8\nG2NUQCG6NBmlTQjRLmbr+sPAOK11hZm2AmN4yQc8WTYhrnRy+l0I0WZKqVnAMeDPzQFdCOE95Ehd\nCCGE6CLkSF0IIYToIiSoCyGEEF2EBHUhhBCii5CgLoQQQnQREtSFEEKILkKCuhBCCNFF/H/rcoD+\nA1czqQAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x10b14ff10>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.figure(figsize=(8, 6))\n", | |
"df.p_values.plot(label=\"p-value\", c=\"grey\", linewidth=2)\n", | |
"df.lfdr.plot(label=\"local FDR ($p_0=1$)\", c=\"#3c63ba\", linewidth=2)\n", | |
"plt.plot(sms.stats.multitest.local_fdr(abs(converter.sorted_zscores), .5), \n", | |
" c=\"#3cbaab\", label=\"local FDR ($p_0=.5$)\", linewidth=2)\n", | |
"plt.axhline(0.05, c=\"k\", ls=\"--\", linewidth=1.2, alpha=.5)\n", | |
"plt.text(1830, 0.06, \"$p^{adj}=0.05$\")\n", | |
"plt.ylim(0, 1.01)\n", | |
"plt.xlabel(\"Index of hypothesis\")\n", | |
"plt.ylabel(\"Adjusted p-value / local FDR\")\n", | |
"plt.legend()\n", | |
"refine_plot();" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 2", | |
"language": "python", | |
"name": "python2" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 2 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython2", | |
"version": "2.7.12" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 1 | |
} |
This file contains hidden or 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
import pandas as pd | |
import numpy as np | |
import statsmodels as sms | |
class MCPConverter(object): | |
""" | |
input: array of p-values. | |
* convert p-value into adjusted p-value (or q-value) | |
""" | |
def __init__(self, pvals, zscores=None): | |
self.pvals = pvals | |
self.zscores = zscores | |
self.len = len(pvals) | |
if zscores is not None: | |
srted = np.array(sorted(zip(pvals.copy(), zscores.copy()))) | |
self.sorted_pvals = srted[:, 0] | |
self.sorted_zscores = srted[:, 1] | |
else: | |
self.sorted_pvals = np.array(sorted(pvals.copy())) | |
self.order = sorted(range(len(pvals)), key=lambda x: pvals[x]) | |
def adjust(self, method="holm"): | |
""" | |
methods = ["bonferroni", "holm", "bh", "lfdr"] | |
(local FDR method needs 'statsmodels' package) | |
""" | |
if method is "bonferroni": | |
return [np.min([1, i]) for i in self.sorted_pvals * self.len] | |
elif method is "holm": | |
return [np.min([1, i]) for i in (self.sorted_pvals * (self.len - np.arange(1, self.len+1) + 1))] | |
elif method is "bh": | |
p_times_m_i = self.sorted_pvals * self.len / np.arange(1, self.len+1) | |
return [np.min([p, p_times_m_i[i+1]]) if i < self.len-1 else p for i, p in enumerate(p_times_m_i)] | |
elif method is "lfdr": | |
if self.zscores is None: | |
raise ValueError("Z-scores were not provided.") | |
return sms.stats.multitest.local_fdr(abs(self.sorted_zscores)) | |
else: | |
raise ValueError("invalid method entered: '{}'".format(method)) | |
def adjust_many(self, methods=["bonferroni", "holm", "bh", "lfdr"]): | |
if self.zscores is not None: | |
df = pd.DataFrame(np.c_[self.sorted_pvals, self.sorted_zscores], columns=["p_values", "z_scores"]) | |
for method in methods: | |
df[method] = self.adjust(method) | |
else: | |
df = pd.DataFrame(self.sorted_pvals, columns=["p_values"]) | |
for method in methods: | |
if method is not "lfdr": | |
df[method] = self.adjust(method) | |
return df |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment