AIM-PIbd-31-Alekseev-I-S/Lab_4/Lab4.ipynb
Иван Алексеев 9320d0ab41 капец....x2
2024-11-09 12:24:47 +04:00

4115 lines
430 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Начало 4-й лабораторной\n",
"#### Ближайшие объекты к Земле"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['id', 'name', 'est_diameter_min', 'est_diameter_max',\n",
" 'relative_velocity', 'miss_distance', 'orbiting_body', 'sentry_object',\n",
" 'absolute_magnitude', 'hazardous'],\n",
" dtype='object')\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>name</th>\n",
" <th>est_diameter_min</th>\n",
" <th>est_diameter_max</th>\n",
" <th>relative_velocity</th>\n",
" <th>miss_distance</th>\n",
" <th>orbiting_body</th>\n",
" <th>sentry_object</th>\n",
" <th>absolute_magnitude</th>\n",
" <th>hazardous</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2162635</td>\n",
" <td>162635 (2000 SS164)</td>\n",
" <td>1.198271</td>\n",
" <td>2.679415</td>\n",
" <td>13569.249224</td>\n",
" <td>5.483974e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>16.73</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2277475</td>\n",
" <td>277475 (2005 WK4)</td>\n",
" <td>0.265800</td>\n",
" <td>0.594347</td>\n",
" <td>73588.726663</td>\n",
" <td>6.143813e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>20.00</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2512244</td>\n",
" <td>512244 (2015 YE18)</td>\n",
" <td>0.722030</td>\n",
" <td>1.614507</td>\n",
" <td>114258.692129</td>\n",
" <td>4.979872e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>17.83</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3596030</td>\n",
" <td>(2012 BV13)</td>\n",
" <td>0.096506</td>\n",
" <td>0.215794</td>\n",
" <td>24764.303138</td>\n",
" <td>2.543497e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>22.20</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>3667127</td>\n",
" <td>(2014 GE35)</td>\n",
" <td>0.255009</td>\n",
" <td>0.570217</td>\n",
" <td>42737.733765</td>\n",
" <td>4.627557e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>20.09</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>90831</th>\n",
" <td>3763337</td>\n",
" <td>(2016 VX1)</td>\n",
" <td>0.026580</td>\n",
" <td>0.059435</td>\n",
" <td>52078.886692</td>\n",
" <td>1.230039e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>25.00</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>90832</th>\n",
" <td>3837603</td>\n",
" <td>(2019 AD3)</td>\n",
" <td>0.016771</td>\n",
" <td>0.037501</td>\n",
" <td>46114.605073</td>\n",
" <td>5.432121e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>26.00</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>90833</th>\n",
" <td>54017201</td>\n",
" <td>(2020 JP3)</td>\n",
" <td>0.031956</td>\n",
" <td>0.071456</td>\n",
" <td>7566.807732</td>\n",
" <td>2.840077e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>24.60</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>90834</th>\n",
" <td>54115824</td>\n",
" <td>(2021 CN5)</td>\n",
" <td>0.007321</td>\n",
" <td>0.016370</td>\n",
" <td>69199.154484</td>\n",
" <td>6.869206e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>27.80</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>90835</th>\n",
" <td>54205447</td>\n",
" <td>(2021 TW7)</td>\n",
" <td>0.039862</td>\n",
" <td>0.089133</td>\n",
" <td>27024.455553</td>\n",
" <td>5.977213e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>24.12</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>90836 rows × 10 columns</p>\n",
"</div>"
],
"text/plain": [
" id name est_diameter_min est_diameter_max \\\n",
"0 2162635 162635 (2000 SS164) 1.198271 2.679415 \n",
"1 2277475 277475 (2005 WK4) 0.265800 0.594347 \n",
"2 2512244 512244 (2015 YE18) 0.722030 1.614507 \n",
"3 3596030 (2012 BV13) 0.096506 0.215794 \n",
"4 3667127 (2014 GE35) 0.255009 0.570217 \n",
"... ... ... ... ... \n",
"90831 3763337 (2016 VX1) 0.026580 0.059435 \n",
"90832 3837603 (2019 AD3) 0.016771 0.037501 \n",
"90833 54017201 (2020 JP3) 0.031956 0.071456 \n",
"90834 54115824 (2021 CN5) 0.007321 0.016370 \n",
"90835 54205447 (2021 TW7) 0.039862 0.089133 \n",
"\n",
" relative_velocity miss_distance orbiting_body sentry_object \\\n",
"0 13569.249224 5.483974e+07 Earth False \n",
"1 73588.726663 6.143813e+07 Earth False \n",
"2 114258.692129 4.979872e+07 Earth False \n",
"3 24764.303138 2.543497e+07 Earth False \n",
"4 42737.733765 4.627557e+07 Earth False \n",
"... ... ... ... ... \n",
"90831 52078.886692 1.230039e+07 Earth False \n",
"90832 46114.605073 5.432121e+07 Earth False \n",
"90833 7566.807732 2.840077e+07 Earth False \n",
"90834 69199.154484 6.869206e+07 Earth False \n",
"90835 27024.455553 5.977213e+07 Earth False \n",
"\n",
" absolute_magnitude hazardous \n",
"0 16.73 False \n",
"1 20.00 True \n",
"2 17.83 False \n",
"3 22.20 False \n",
"4 20.09 True \n",
"... ... ... \n",
"90831 25.00 False \n",
"90832 26.00 False \n",
"90833 24.60 False \n",
"90834 27.80 False \n",
"90835 24.12 False \n",
"\n",
"[90836 rows x 10 columns]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn import set_config\n",
"\n",
"set_config(transform_output=\"pandas\")\n",
"df = pd.read_csv(\".//static//csv//neo.csv\")\n",
"print(df.columns)\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Бизнес-цели:\n",
"\n",
"1. Идентификация потенциально опасных объектов\n",
"\n",
"Описание: классифицировать астероиды как потенциально опасные или безопасные (используя целевой признак \"hazardous\"). Эта задача актуальна для оценки рисков и подготовки соответствующих действий по защите Земли.\n",
"\n",
"2. Прогнозирование минимального расстояния до Земли\n",
"\n",
"Описание: предсказать минимальное расстояние до Земли для новых объектов на основе характеристик астероида (скорости, размера и других параметров). Это позволит планировать исследования и наблюдения в зависимости от опасности. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Определение достижимого уровня качества модели для первой задачи "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Разделение набора данных на обучающую и тестовые выборки (80/20) для задачи классификации\n",
"\n",
"Целевой признак -- hazardous"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'X_train'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>name</th>\n",
" <th>est_diameter_min</th>\n",
" <th>est_diameter_max</th>\n",
" <th>relative_velocity</th>\n",
" <th>miss_distance</th>\n",
" <th>orbiting_body</th>\n",
" <th>sentry_object</th>\n",
" <th>absolute_magnitude</th>\n",
" <th>hazardous</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2639</th>\n",
" <td>3634614</td>\n",
" <td>(2013 GT66)</td>\n",
" <td>0.024241</td>\n",
" <td>0.054205</td>\n",
" <td>43303.999094</td>\n",
" <td>4.814117e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>25.20</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29138</th>\n",
" <td>54143560</td>\n",
" <td>(2021 JU1)</td>\n",
" <td>0.030238</td>\n",
" <td>0.067615</td>\n",
" <td>21770.790211</td>\n",
" <td>5.646643e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>24.72</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36927</th>\n",
" <td>3836085</td>\n",
" <td>(2018 VQ3)</td>\n",
" <td>0.201630</td>\n",
" <td>0.450858</td>\n",
" <td>109358.123029</td>\n",
" <td>6.435051e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>20.60</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61855</th>\n",
" <td>3769804</td>\n",
" <td>(2017 DJ34)</td>\n",
" <td>0.160160</td>\n",
" <td>0.358129</td>\n",
" <td>78494.609756</td>\n",
" <td>5.595780e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>21.10</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15916</th>\n",
" <td>3824978</td>\n",
" <td>(2018 KS)</td>\n",
" <td>0.006991</td>\n",
" <td>0.015633</td>\n",
" <td>19077.749486</td>\n",
" <td>3.834648e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>27.90</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29491</th>\n",
" <td>3827304</td>\n",
" <td>(2018 RR1)</td>\n",
" <td>0.002658</td>\n",
" <td>0.005943</td>\n",
" <td>19826.895880</td>\n",
" <td>3.852881e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>30.00</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18373</th>\n",
" <td>3735468</td>\n",
" <td>(2015 WY1)</td>\n",
" <td>0.103408</td>\n",
" <td>0.231228</td>\n",
" <td>82856.544926</td>\n",
" <td>7.314334e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>22.05</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25031</th>\n",
" <td>3802041</td>\n",
" <td>(2018 FE3)</td>\n",
" <td>0.009651</td>\n",
" <td>0.021579</td>\n",
" <td>34243.774201</td>\n",
" <td>4.257719e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>27.20</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35456</th>\n",
" <td>3430406</td>\n",
" <td>(2008 TR10)</td>\n",
" <td>0.221083</td>\n",
" <td>0.494356</td>\n",
" <td>19557.289783</td>\n",
" <td>2.152970e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>20.40</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14305</th>\n",
" <td>3285300</td>\n",
" <td>(2005 OG3)</td>\n",
" <td>0.298233</td>\n",
" <td>0.666868</td>\n",
" <td>20309.404706</td>\n",
" <td>1.770015e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>19.75</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>72668 rows × 10 columns</p>\n",
"</div>"
],
"text/plain": [
" id name est_diameter_min est_diameter_max \\\n",
"2639 3634614 (2013 GT66) 0.024241 0.054205 \n",
"29138 54143560 (2021 JU1) 0.030238 0.067615 \n",
"36927 3836085 (2018 VQ3) 0.201630 0.450858 \n",
"61855 3769804 (2017 DJ34) 0.160160 0.358129 \n",
"15916 3824978 (2018 KS) 0.006991 0.015633 \n",
"... ... ... ... ... \n",
"29491 3827304 (2018 RR1) 0.002658 0.005943 \n",
"18373 3735468 (2015 WY1) 0.103408 0.231228 \n",
"25031 3802041 (2018 FE3) 0.009651 0.021579 \n",
"35456 3430406 (2008 TR10) 0.221083 0.494356 \n",
"14305 3285300 (2005 OG3) 0.298233 0.666868 \n",
"\n",
" relative_velocity miss_distance orbiting_body sentry_object \\\n",
"2639 43303.999094 4.814117e+07 Earth False \n",
"29138 21770.790211 5.646643e+07 Earth False \n",
"36927 109358.123029 6.435051e+07 Earth False \n",
"61855 78494.609756 5.595780e+07 Earth False \n",
"15916 19077.749486 3.834648e+07 Earth False \n",
"... ... ... ... ... \n",
"29491 19826.895880 3.852881e+07 Earth False \n",
"18373 82856.544926 7.314334e+07 Earth False \n",
"25031 34243.774201 4.257719e+07 Earth False \n",
"35456 19557.289783 2.152970e+07 Earth False \n",
"14305 20309.404706 1.770015e+07 Earth False \n",
"\n",
" absolute_magnitude hazardous \n",
"2639 25.20 False \n",
"29138 24.72 False \n",
"36927 20.60 False \n",
"61855 21.10 False \n",
"15916 27.90 False \n",
"... ... ... \n",
"29491 30.00 False \n",
"18373 22.05 False \n",
"25031 27.20 False \n",
"35456 20.40 False \n",
"14305 19.75 False \n",
"\n",
"[72668 rows x 10 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'y_train'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>hazardous</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2639</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29138</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36927</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61855</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15916</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29491</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18373</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25031</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35456</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14305</th>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>72668 rows × 1 columns</p>\n",
"</div>"
],
"text/plain": [
" hazardous\n",
"2639 False\n",
"29138 False\n",
"36927 False\n",
"61855 False\n",
"15916 False\n",
"... ...\n",
"29491 False\n",
"18373 False\n",
"25031 False\n",
"35456 False\n",
"14305 False\n",
"\n",
"[72668 rows x 1 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'X_test'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>name</th>\n",
" <th>est_diameter_min</th>\n",
" <th>est_diameter_max</th>\n",
" <th>relative_velocity</th>\n",
" <th>miss_distance</th>\n",
" <th>orbiting_body</th>\n",
" <th>sentry_object</th>\n",
" <th>absolute_magnitude</th>\n",
" <th>hazardous</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>9040</th>\n",
" <td>2474532</td>\n",
" <td>474532 (2003 VG1)</td>\n",
" <td>0.472667</td>\n",
" <td>1.056915</td>\n",
" <td>21779.237137</td>\n",
" <td>3.443050e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>18.75</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67305</th>\n",
" <td>3774018</td>\n",
" <td>(2017 HF1)</td>\n",
" <td>0.084053</td>\n",
" <td>0.187949</td>\n",
" <td>53291.016226</td>\n",
" <td>6.862591e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>22.50</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>77741</th>\n",
" <td>54269585</td>\n",
" <td>(2022 GQ2)</td>\n",
" <td>0.018220</td>\n",
" <td>0.040742</td>\n",
" <td>43089.046433</td>\n",
" <td>2.592726e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>25.82</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81520</th>\n",
" <td>54097970</td>\n",
" <td>(2020 XS)</td>\n",
" <td>0.152952</td>\n",
" <td>0.342011</td>\n",
" <td>93246.455599</td>\n",
" <td>4.709054e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>21.20</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>508</th>\n",
" <td>3730802</td>\n",
" <td>(2015 TT238)</td>\n",
" <td>0.031956</td>\n",
" <td>0.071456</td>\n",
" <td>37708.258544</td>\n",
" <td>4.232149e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>24.60</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28261</th>\n",
" <td>3532365</td>\n",
" <td>(2010 MH1)</td>\n",
" <td>0.139494</td>\n",
" <td>0.311918</td>\n",
" <td>37604.980238</td>\n",
" <td>7.369507e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>21.40</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1159</th>\n",
" <td>54073345</td>\n",
" <td>(2020 UE)</td>\n",
" <td>0.020728</td>\n",
" <td>0.046349</td>\n",
" <td>36720.077728</td>\n",
" <td>3.366114e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>25.54</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48095</th>\n",
" <td>3836195</td>\n",
" <td>(2018 VT7)</td>\n",
" <td>0.006991</td>\n",
" <td>0.015633</td>\n",
" <td>7616.496535</td>\n",
" <td>6.376350e+06</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>27.90</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>90234</th>\n",
" <td>3752902</td>\n",
" <td>(2016 JG12)</td>\n",
" <td>0.084053</td>\n",
" <td>0.187949</td>\n",
" <td>21894.554692</td>\n",
" <td>5.736984e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>22.50</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12013</th>\n",
" <td>3445077</td>\n",
" <td>(2009 BM58)</td>\n",
" <td>0.038420</td>\n",
" <td>0.085909</td>\n",
" <td>49828.611609</td>\n",
" <td>4.305599e+07</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>24.20</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>18168 rows × 10 columns</p>\n",
"</div>"
],
"text/plain": [
" id name est_diameter_min est_diameter_max \\\n",
"9040 2474532 474532 (2003 VG1) 0.472667 1.056915 \n",
"67305 3774018 (2017 HF1) 0.084053 0.187949 \n",
"77741 54269585 (2022 GQ2) 0.018220 0.040742 \n",
"81520 54097970 (2020 XS) 0.152952 0.342011 \n",
"508 3730802 (2015 TT238) 0.031956 0.071456 \n",
"... ... ... ... ... \n",
"28261 3532365 (2010 MH1) 0.139494 0.311918 \n",
"1159 54073345 (2020 UE) 0.020728 0.046349 \n",
"48095 3836195 (2018 VT7) 0.006991 0.015633 \n",
"90234 3752902 (2016 JG12) 0.084053 0.187949 \n",
"12013 3445077 (2009 BM58) 0.038420 0.085909 \n",
"\n",
" relative_velocity miss_distance orbiting_body sentry_object \\\n",
"9040 21779.237137 3.443050e+07 Earth False \n",
"67305 53291.016226 6.862591e+07 Earth False \n",
"77741 43089.046433 2.592726e+07 Earth False \n",
"81520 93246.455599 4.709054e+07 Earth False \n",
"508 37708.258544 4.232149e+07 Earth False \n",
"... ... ... ... ... \n",
"28261 37604.980238 7.369507e+07 Earth False \n",
"1159 36720.077728 3.366114e+07 Earth False \n",
"48095 7616.496535 6.376350e+06 Earth False \n",
"90234 21894.554692 5.736984e+07 Earth False \n",
"12013 49828.611609 4.305599e+07 Earth False \n",
"\n",
" absolute_magnitude hazardous \n",
"9040 18.75 False \n",
"67305 22.50 False \n",
"77741 25.82 False \n",
"81520 21.20 False \n",
"508 24.60 False \n",
"... ... ... \n",
"28261 21.40 False \n",
"1159 25.54 False \n",
"48095 27.90 False \n",
"90234 22.50 False \n",
"12013 24.20 False \n",
"\n",
"[18168 rows x 10 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'y_test'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>hazardous</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>9040</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67305</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>77741</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81520</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>508</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28261</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1159</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48095</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>90234</th>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12013</th>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>18168 rows × 1 columns</p>\n",
"</div>"
],
"text/plain": [
" hazardous\n",
"9040 False\n",
"67305 False\n",
"77741 False\n",
"81520 False\n",
"508 False\n",
"... ...\n",
"28261 False\n",
"1159 False\n",
"48095 False\n",
"90234 False\n",
"12013 False\n",
"\n",
"[18168 rows x 1 columns]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from typing import Tuple\n",
"import pandas as pd\n",
"from pandas import DataFrame\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"# Устанавливаем случайное состояние\n",
"random_state = 42\n",
"\n",
"def split_stratified_into_train_val_test(\n",
" df_input,\n",
" stratify_colname=\"y\",\n",
" frac_train=0.6,\n",
" frac_val=0.15,\n",
" frac_test=0.25,\n",
" random_state=None,\n",
") -> Tuple[DataFrame, DataFrame, DataFrame, DataFrame, DataFrame, DataFrame]:\n",
" \n",
" if frac_train + frac_val + frac_test != 1.0:\n",
" raise ValueError(\n",
" \"fractions %f, %f, %f do not add up to 1.0\"\n",
" % (frac_train, frac_val, frac_test)\n",
" )\n",
" if stratify_colname not in df_input.columns:\n",
" raise ValueError(\"%s is not a column in the dataframe\" % (stratify_colname))\n",
" X = df_input # Contains all columns.\n",
" y = df_input[\n",
" [stratify_colname]\n",
" ] # Dataframe of just the column on which to stratify.\n",
" # Split original dataframe into train and temp dataframes.\n",
" df_train, df_temp, y_train, y_temp = train_test_split(\n",
" X, y, stratify=y, test_size=(1.0 - frac_train), random_state=random_state\n",
" )\n",
" if frac_val <= 0:\n",
" assert len(df_input) == len(df_train) + len(df_temp)\n",
" return df_train, pd.DataFrame(), df_temp, y_train, pd.DataFrame(), y_temp\n",
" # Split the temp dataframe into val and test dataframes.\n",
" relative_frac_test = frac_test / (frac_val + frac_test)\n",
" df_val, df_test, y_val, y_test = train_test_split(\n",
" df_temp,\n",
" y_temp,\n",
" stratify=y_temp,\n",
" test_size=relative_frac_test,\n",
" random_state=random_state,\n",
" )\n",
" assert len(df_input) == len(df_train) + len(df_val) + len(df_test)\n",
" return df_train, df_val, df_test, y_train, y_val, y_test\n",
"\n",
"X_train, X_val, X_test, y_train, y_val, y_test = split_stratified_into_train_val_test(\n",
" df, stratify_colname=\"hazardous\", frac_train=0.80, frac_val=0, frac_test=0.20, random_state=random_state\n",
")\n",
"\n",
"display(\"X_train\", X_train)\n",
"display(\"y_train\", y_train)\n",
"\n",
"display(\"X_test\", X_test)\n",
"display(\"y_test\", y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Формирование конвейера для классификации данных\n",
"preprocessing_num -- конвейер для обработки числовых данных: заполнение пропущенных значений и стандартизация\n",
"\n",
"preprocessing_cat -- конвейер для обработки категориальных данных: заполнение пропущенных данных и унитарное кодирование\n",
"\n",
"features_preprocessing -- трансформер для предобработки признаков\n",
"\n",
"features_engineering -- трансформер для конструирования признаков\n",
"\n",
"drop_columns -- трансформер для удаления колонок\n",
"\n",
"pipeline_end -- основной конвейер предобработки данных и конструирования признаков"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from sklearn.base import BaseEstimator, TransformerMixin\n",
"from sklearn.compose import ColumnTransformer\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.impute import SimpleImputer\n",
"from sklearn.pipeline import Pipeline\n",
"from sklearn.preprocessing import OneHotEncoder\n",
"from sklearn.ensemble import RandomForestRegressor # Пример регрессионной модели\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.pipeline import make_pipeline\n",
"\n",
"class StarbucksFeatures(BaseEstimator, TransformerMixin):\n",
" def __init__(self):\n",
" pass\n",
" \n",
" def fit(self, X, y=None):\n",
" return self\n",
"\n",
" def transform(self, X, y=None):\n",
" # Преобразование категориальных столбцов в числовые 1/0\n",
" X[\"hazardous\"] = X[\"hazardous\"].astype(int)\n",
" X[\"sentry_object\"] = X[\"sentry_object\"].astype(int)\n",
" X[\"Length_to_Width_Ratio\"] = X[\"x\"] / X[\"y\"]\n",
" return X\n",
"\n",
" def get_feature_names_out(self, features_in):\n",
" return np.append(features_in, [\"Length_to_Width_Ratio\"], axis=0)\n",
"\n",
"# Указываем столбцы, которые нужно удалить и обрабатывать\n",
"columns_to_drop = [\"name\", \"orbiting_body\"]\n",
"num_columns = [\"est_diameter_min\", \"est_diameter_max\",\n",
" \"relative_velocity\", \"miss_distance\", \"sentry_object\",\n",
" \"absolute_magnitude\", \"hazardous\"]\n",
"cat_columns = [\"sentry_object\", \"hazardous\"]\n",
" \n",
"\n",
"# Определяем предобработку для численных данных\n",
"num_imputer = SimpleImputer(strategy=\"median\")\n",
"num_scaler = StandardScaler()\n",
"preprocessing_num = Pipeline(\n",
" [\n",
" (\"imputer\", num_imputer),\n",
" (\"scaler\", num_scaler),\n",
" ]\n",
")\n",
"\n",
"# Определяем предобработку для категориальных данных\n",
"cat_imputer = SimpleImputer(strategy=\"constant\", fill_value=\"unknown\")\n",
"cat_encoder = OneHotEncoder(handle_unknown=\"ignore\", sparse_output=False, drop=\"first\")\n",
"preprocessing_cat = Pipeline(\n",
" [\n",
" (\"imputer\", cat_imputer),\n",
" (\"encoder\", cat_encoder),\n",
" ]\n",
")\n",
"\n",
"# Подготовка признаков с использованием ColumnTransformer\n",
"features_preprocessing = ColumnTransformer(\n",
" verbose_feature_names_out=False,\n",
" transformers=[\n",
" (\"preprocessing_num\", preprocessing_num, num_columns),\n",
" (\"preprocessing_cat\", preprocessing_cat, cat_columns),\n",
" ],\n",
" remainder=\"passthrough\"\n",
")\n",
"\n",
"# Удаление нежелательных столбцов\n",
"drop_columns = ColumnTransformer(\n",
" verbose_feature_names_out=False,\n",
" transformers=[\n",
" (\"drop_columns\", \"drop\", columns_to_drop),\n",
" ],\n",
" remainder=\"passthrough\",\n",
")\n",
"\n",
"# Постобработка признаков\n",
"features_postprocessing = ColumnTransformer(\n",
" verbose_feature_names_out=False,\n",
" transformers=[\n",
" (\"preprocessing_cat\", preprocessing_cat, [\"Cabin_type\"]), \n",
" ],\n",
" remainder=\"passthrough\",\n",
")\n",
"\n",
"# Создание окончательного конвейера\n",
"pipeline = Pipeline(\n",
" [\n",
" (\"features_preprocessing\", features_preprocessing),\n",
" (\"drop_columns\", drop_columns),\n",
" (\"model\", RandomForestRegressor()) # Выбор модели для обучения\n",
" ]\n",
")\n",
"\n",
"# Использование конвейера\n",
"def train_pipeline(X, y):\n",
" pipeline.fit(X, y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Демонстрация работы конвейера"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>est_diameter_min</th>\n",
" <th>est_diameter_max</th>\n",
" <th>relative_velocity</th>\n",
" <th>miss_distance</th>\n",
" <th>sentry_object</th>\n",
" <th>absolute_magnitude</th>\n",
" <th>hazardous</th>\n",
" <th>id</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2639</th>\n",
" <td>-0.331616</td>\n",
" <td>-0.331616</td>\n",
" <td>-0.188160</td>\n",
" <td>0.494297</td>\n",
" <td>0.0</td>\n",
" <td>0.577785</td>\n",
" <td>-0.328347</td>\n",
" <td>3634614</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29138</th>\n",
" <td>-0.312486</td>\n",
" <td>-0.312486</td>\n",
" <td>-1.040729</td>\n",
" <td>0.866716</td>\n",
" <td>0.0</td>\n",
" <td>0.412170</td>\n",
" <td>-0.328347</td>\n",
" <td>54143560</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36927</th>\n",
" <td>0.234246</td>\n",
" <td>0.234246</td>\n",
" <td>2.427134</td>\n",
" <td>1.219399</td>\n",
" <td>0.0</td>\n",
" <td>-1.009355</td>\n",
" <td>-0.328347</td>\n",
" <td>3836085</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61855</th>\n",
" <td>0.101960</td>\n",
" <td>0.101960</td>\n",
" <td>1.205148</td>\n",
" <td>0.843963</td>\n",
" <td>0.0</td>\n",
" <td>-0.836840</td>\n",
" <td>-0.328347</td>\n",
" <td>3769804</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15916</th>\n",
" <td>-0.386643</td>\n",
" <td>-0.386643</td>\n",
" <td>-1.147355</td>\n",
" <td>0.056145</td>\n",
" <td>0.0</td>\n",
" <td>1.509367</td>\n",
" <td>-0.328347</td>\n",
" <td>3824978</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29491</th>\n",
" <td>-0.400466</td>\n",
" <td>-0.400466</td>\n",
" <td>-1.117694</td>\n",
" <td>0.064301</td>\n",
" <td>0.0</td>\n",
" <td>2.233931</td>\n",
" <td>-0.328347</td>\n",
" <td>3827304</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18373</th>\n",
" <td>-0.079077</td>\n",
" <td>-0.079077</td>\n",
" <td>1.377851</td>\n",
" <td>1.612734</td>\n",
" <td>0.0</td>\n",
" <td>-0.509061</td>\n",
" <td>-0.328347</td>\n",
" <td>3735468</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25031</th>\n",
" <td>-0.378159</td>\n",
" <td>-0.378159</td>\n",
" <td>-0.546884</td>\n",
" <td>0.245400</td>\n",
" <td>0.0</td>\n",
" <td>1.267846</td>\n",
" <td>-0.328347</td>\n",
" <td>3802041</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35456</th>\n",
" <td>0.296300</td>\n",
" <td>0.296300</td>\n",
" <td>-1.128369</td>\n",
" <td>-0.696130</td>\n",
" <td>0.0</td>\n",
" <td>-1.078361</td>\n",
" <td>-0.328347</td>\n",
" <td>3430406</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14305</th>\n",
" <td>0.542404</td>\n",
" <td>0.542404</td>\n",
" <td>-1.098590</td>\n",
" <td>-0.867440</td>\n",
" <td>0.0</td>\n",
" <td>-1.302631</td>\n",
" <td>-0.328347</td>\n",
" <td>3285300</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>72668 rows × 8 columns</p>\n",
"</div>"
],
"text/plain": [
" est_diameter_min est_diameter_max relative_velocity miss_distance \\\n",
"2639 -0.331616 -0.331616 -0.188160 0.494297 \n",
"29138 -0.312486 -0.312486 -1.040729 0.866716 \n",
"36927 0.234246 0.234246 2.427134 1.219399 \n",
"61855 0.101960 0.101960 1.205148 0.843963 \n",
"15916 -0.386643 -0.386643 -1.147355 0.056145 \n",
"... ... ... ... ... \n",
"29491 -0.400466 -0.400466 -1.117694 0.064301 \n",
"18373 -0.079077 -0.079077 1.377851 1.612734 \n",
"25031 -0.378159 -0.378159 -0.546884 0.245400 \n",
"35456 0.296300 0.296300 -1.128369 -0.696130 \n",
"14305 0.542404 0.542404 -1.098590 -0.867440 \n",
"\n",
" sentry_object absolute_magnitude hazardous id \n",
"2639 0.0 0.577785 -0.328347 3634614 \n",
"29138 0.0 0.412170 -0.328347 54143560 \n",
"36927 0.0 -1.009355 -0.328347 3836085 \n",
"61855 0.0 -0.836840 -0.328347 3769804 \n",
"15916 0.0 1.509367 -0.328347 3824978 \n",
"... ... ... ... ... \n",
"29491 0.0 2.233931 -0.328347 3827304 \n",
"18373 0.0 -0.509061 -0.328347 3735468 \n",
"25031 0.0 1.267846 -0.328347 3802041 \n",
"35456 0.0 -1.078361 -0.328347 3430406 \n",
"14305 0.0 -1.302631 -0.328347 3285300 \n",
"\n",
"[72668 rows x 8 columns]"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"preprocessing_result = pipeline_end.fit_transform(X_train)\n",
"preprocessed_df = pd.DataFrame(\n",
" preprocessing_result,\n",
" columns=pipeline_end.get_feature_names_out(),\n",
")\n",
"\n",
"preprocessed_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Формирование набора моделей для классификации\n",
" logistic -- логистическая регрессия\n",
"\n",
"ridge -- гребневая регрессия\n",
"\n",
"decision_tree -- дерево решений\n",
"\n",
"knn -- k-ближайших соседей\n",
"\n",
"naive_bayes -- наивный Байесовский классификатор\n",
"\n",
"gradient_boosting -- метод градиентного бустинга (набор деревьев решений)\n",
"\n",
"random_forest -- метод случайного леса (набор деревьев решений)\n",
"\n",
"mlp -- многослойный персептрон (нейронная сеть)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"from sklearn import ensemble, linear_model, naive_bayes, neighbors, neural_network, tree\n",
"\n",
"class_models = {\n",
" \"logistic\": {\"model\": linear_model.LogisticRegression()},\n",
" # \"ridge\": {\"model\": linear_model.RidgeClassifierCV(cv=5, class_weight=\"balanced\")},\n",
" \"ridge\": {\"model\": linear_model.LogisticRegression(penalty=\"l2\", class_weight=\"balanced\")},\n",
" \"decision_tree\": {\n",
" \"model\": tree.DecisionTreeClassifier(max_depth=7, random_state=random_state)\n",
" },\n",
" \"knn\": {\"model\": neighbors.KNeighborsClassifier(n_neighbors=7)},\n",
" \"naive_bayes\": {\"model\": naive_bayes.GaussianNB()},\n",
" \"gradient_boosting\": {\n",
" \"model\": ensemble.GradientBoostingClassifier(n_estimators=210)\n",
" },\n",
" \"random_forest\": {\n",
" \"model\": ensemble.RandomForestClassifier(\n",
" max_depth=11, class_weight=\"balanced\", random_state=random_state\n",
" )\n",
" },\n",
" \"mlp\": {\n",
" \"model\": neural_network.MLPClassifier(\n",
" hidden_layer_sizes=(7,),\n",
" max_iter=500,\n",
" early_stopping=True,\n",
" random_state=random_state,\n",
" )\n",
" },\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Обучение моделей на обучающем наборе данных и оценка на тестовом"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: logistic\n",
"Model: ridge\n",
"Model: decision_tree\n",
"Model: knn\n",
"Model: naive_bayes\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1531: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 due to no predicted samples. Use `zero_division` parameter to control this behavior.\n",
" _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n",
"c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1531: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 due to no predicted samples. Use `zero_division` parameter to control this behavior.\n",
" _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: gradient_boosting\n",
"Model: random_forest\n",
"Model: mlp\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1531: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 due to no predicted samples. Use `zero_division` parameter to control this behavior.\n",
" _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n",
"c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1531: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 due to no predicted samples. Use `zero_division` parameter to control this behavior.\n",
" _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n"
]
}
],
"source": [
"import numpy as np\n",
"from sklearn import metrics\n",
"\n",
"for model_name in class_models.keys():\n",
" print(f\"Model: {model_name}\")\n",
" model = class_models[model_name][\"model\"]\n",
"\n",
" model_pipeline = Pipeline([(\"pipeline\", pipeline_end), (\"model\", model)])\n",
" model_pipeline = model_pipeline.fit(X_train, y_train.values.ravel())\n",
"\n",
" y_train_predict = model_pipeline.predict(X_train)\n",
" y_test_probs = model_pipeline.predict_proba(X_test)[:, 1]\n",
" y_test_predict = np.where(y_test_probs > 0.5, 1, 0)\n",
"\n",
" class_models[model_name][\"pipeline\"] = model_pipeline\n",
" class_models[model_name][\"probs\"] = y_test_probs\n",
" class_models[model_name][\"preds\"] = y_test_predict\n",
"\n",
" class_models[model_name][\"Precision_train\"] = metrics.precision_score(\n",
" y_train, y_train_predict\n",
" )\n",
" class_models[model_name][\"Precision_test\"] = metrics.precision_score(\n",
" y_test, y_test_predict\n",
" )\n",
" class_models[model_name][\"Recall_train\"] = metrics.recall_score(\n",
" y_train, y_train_predict\n",
" )\n",
" class_models[model_name][\"Recall_test\"] = metrics.recall_score(\n",
" y_test, y_test_predict\n",
" )\n",
" class_models[model_name][\"Accuracy_train\"] = metrics.accuracy_score(\n",
" y_train, y_train_predict\n",
" )\n",
" class_models[model_name][\"Accuracy_test\"] = metrics.accuracy_score(\n",
" y_test, y_test_predict\n",
" )\n",
" class_models[model_name][\"ROC_AUC_test\"] = metrics.roc_auc_score(\n",
" y_test, y_test_probs\n",
" )\n",
" class_models[model_name][\"F1_train\"] = metrics.f1_score(y_train, y_train_predict)\n",
" class_models[model_name][\"F1_test\"] = metrics.f1_score(y_test, y_test_predict)\n",
" class_models[model_name][\"MCC_test\"] = metrics.matthews_corrcoef(\n",
" y_test, y_test_predict\n",
" )\n",
" class_models[model_name][\"Cohen_kappa_test\"] = metrics.cohen_kappa_score(\n",
" y_test, y_test_predict\n",
" )\n",
" class_models[model_name][\"Confusion_matrix\"] = metrics.confusion_matrix(\n",
" y_test, y_test_predict\n",
" )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Сводная таблица оценок качества для использованных моделей классификации"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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ubm5KmX16tWDlZUV8vLyxDILCwu1r1j4r2bNmsHT0xOLFi0q1v7f10BERKRvlPPjlixZolK+aNEilc+GhoYIDg7Grl27cO/ePbH85s2b2Ldvn0rbbt26wdDQEBEREcXirCAIePjwYTleAVHF4lBMqrEcHBwwefJkREREICwsDO+++y7i4+OxYsUKvPbaa/jwww8BFM25Cw8Px2effYZ27dqhZ8+eSExMxPr161GvXj2tT9v++usvtG/fHj179oSvry+MjIywc+dOpKWloVevXmK7gIAArFy5El999RW8vLzg6OiIdu3aFTuegYEBVq5cic6dO6Np06YYOHAgXFxccP36dcTGxuLAgQPl/0URERFVA02bNkXv3r2xYsUKPHr0CG+++SYOHz6s9slceHg4Dh48iJYtW+KTTz6BXC7HsmXL0LhxY8TExIjt6tWrh6+++gqTJ08WX3VkZWWFhIQE7Ny5E8OGDcO4ceMq8SqJXhwTO6rRwsPD4eDggGXLlmHMmDGws7PDsGHDMHv2bJUJ0SNHjoQgCJg/fz7GjRuHJk2aYPfu3fj8889hamqq8fhubm7o3bs3Dh8+jB9//BFGRkZo0KABtm3bhu7du4vtpk2bhjt37mDevHl4/Pgx2rZtqzaxA4DQ0FAcPXoUERERmD9/PhQKBerVq4ehQ4eW3xdDRERUDa1duxYODg7YtGkTdu3ahXbt2uH333+Hm5ubSruAgADs27cP48aNw9SpU+Hm5oYZM2YgLi4O169fV2k7adIk1K9fHwsXLkRERASAovgeEhKCd999t9KujehlSQSO7yJSS6FQwMHBAd26dcMPP/yg6+4QERHRS+ratStiY2Nx48YNXXeFqNxxjh0RgNzc3GJj6zdu3IiMjAwEBQXpplNERET0wp49e6by+caNG9i7dy/jOtVYfGJHBODYsWMYM2YMevToAXt7e1y4cAFr1qxBw4YNER0dDalUqusuEhERURm4uLhgwIAB4rtrV65ciby8PFy8eFHje+uIqjPOsSMC4OHhATc3NyxZsgQZGRmws7NDv3798PXXXzOpIyIiqobCwsLw888/IzU1FSYmJggMDMTs2bOZ1FGNxSd2RERERERE1Rzn2BEREREREVVzTOyIiIiIiIiqOc6xq6YUCgXu3bsHKysrrS/QJqqpBEHA48eP4erqCgOD8r1HlZubi/z8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b98ehYWFmDhxIhwcHAxuLzw8HKGhoejbty/mzp2LgIAAXL16Fd9//z3+/ve/o3379rV0ZKazbVVDbFvV0NTdsHi/JLujV9jfDbbZvb0pdm9vqrderbbCV5+H4KvPK565LXfmVCOcOSWzx4FrRNmir46ITIrZrBtzwXLxbyMjGMrm8noZ48DOCCqVCocOHcLChQtRWFgIX19fzJs3Dz179oSnpydGjhyJtm3bwsfHB7NmzcKECRMMbk+hUGDnzp14//33MXToUFy/fh2enp7o0qULPDz4EkoisyD+t+irIyKTYjYTyZChbEYldTKgEELmdxlaqMLCQri4uKAromCj4GV6U7D2b2bqLshaqfoB9qYvwu3bt6FSqaptu+U/Wx27x8HGRveUotLS+zi6N67a901Elq/8d0j3p8bAxtp87r2TE/XFy6bugmyVihIcwHcmyWaA+cwrdkREOvDhKUREROaFD08xjAM7IiJdOBWTiIjIvHAqpkEc2BER6aBQCyj0nPpTqGWeHERERCZgKJvL6+WMAzsiIh0UQkCh5xZkfeVERERUcwxlc3m9nHFgR0SkC6diEhERmRdOxTSIAzsiIh0UGgGFnvfh6CsnIiKimmMom8vr5YwDOyIiXYQoW/TVERERUe0ylM3l9TLGgR0RkQ4KTdmir46IiIhql6FsLq+XMw7siIh00YiyRV8dERER1S5D2VxeL2Mc2BER6cCnYhIREZkXPhXTMA7siIh04T12RERE5oX32BnEgR0RkQ4KjdD7olO5P3WLiIjIFAxlc3m9nHFgR0Ski4CBK3a12hMiIiICDGdzeb2McWBHRKQLp2ISERGZF07FNIgDOyIiHRRqAYWeU3+GpoEQERFRzTCUzeX1csaBHRGRLrxiR0REZF54xc4gDuyIiHThwI6IiMi8cGBnEAd2RES6qAX03oUt86keREREJmEom6V6+eLAjohIB76gnIiIyLzwBeWGcWBHRKQLp2ISERGZF07FNIgDOyIiXdQaABoDdURERFSrDGWzVC9fHNgREelk6KygvM8IEhERmUYlV+xkns8c2BER6cKpmEREROaFUzEN4sCOiEgXtRoQat11Gj3lREREVHMMZTMg+3zmwI6ISBdesSMiIjIvvGJnEAd2RES6aAy8K0cj7+AgIiIyCUPZLNXLFwd2RES6aAT0PnlL5sFBRERkEoay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iCVLljzmN2p6ho7r9OnTon379sLe3l74+/uLb775psL3+vAN2kIIUVhYKN555x3h7e0tbG1thY+Pj4iOjta6QZ6IiKoHs5nZzGymx6UQwsKfJUtERERERCRznIpJRERERERk4TiwIyIiIiIisnAc2BEREREREVk4DuyIiIiIiIgsHAd2REREREREFo4DOyIiIiIiIgvHgR0REREREZGF48COiIiIiIjIwnFgR3VabGws+vbtK33u2rUrxo4dW+v9OHDgABQKBQoKCvS2USgU2Lp1q9HbjIuLQ5s2bR6rX5mZmVAoFEhOTn6s7RARERmL2WwYs5keFQd2VOtiY2OhUCigUChgZ2cHPz8/zJw5E6WlpTW+7y1btuCDDz4wqq0xv/CJiIjqAmYzkeWzMXUHSJ4iIyOxatUqPHjwADt37sTbb78NW1tbTJkypULb4uJi2NnZVct+69evXy3bISIiqmuYzUSWjVfsyCSUSiU8PT3h6+uLt956C+Hh4di2bRuAP6dofPTRR/D29kZgYCAAIDs7GwMGDICrqyvq16+PqKgoZGZmSttUq9UYP348XF1d0aBBA0yaNAlCCK39Pjzd48GDB5g8eTJ8fHygVCrh5+eHr776CpmZmXj++ecBAG5ublAoFIiNjQUAaDQazJ49G02bNoWDgwNat26NTZs2ae1n586dCAgIgIODA55//nmtfhpr8uTJCAgIQL169dCsWTNMnToVJSUlFdotX74cPj4+qFevHgYMGIDbt29r1X/55ZcICgqCvb09mjdvjqVLl1a5L0REVPcxmyvHbCZzxoEdmQUHBwcUFxdLn/fu3Yu0tDQkJCRgx44dKCkpQUREBJydnXH48GEcPXoUTk5OiIyMlNabN28eVq9ejZUrV+LIkSPIz8/Ht99+a3C/Q4YMwX//+18sXrwYqampWL58OZycnODj44PNmzcDANLS0pCTk4NFixYBAGbPno34+HgsW7YMKSkpGDduHF599VUcPHgQQFnI9evXD71790ZycjKGDx+O9957r8rfibOzM1avXo3z589j0aJFWLFiBRYsWKDV5tKlS9i4cSO2b9+O3bt348yZMxg1apRUv27dOkybNg0fffQRUlNTMWvWLEydOhVr1qypcn+IiEhemM0VMZvJrAmiWhYTEyOioqKEEEJoNBqRkJAglEqlmDBhglTv4eEhHjx4IK2zdu1aERgYKDQajVT24MED4eDgIH744QchhBBeXl5i7ty5Un1JSYlo3LixtC8hhAgLCxNjxowRQgiRlpYmAIiEhASd/dy/f78AIG7duiWV3b9/X9SrV08cO3ZMq+2wYcPEoEGDhBBCTJkyRQQHB2vVT548ucK2HgZAfPvtt3rrP/nkE9GuXTvp8/Tp04W1tbW4cuWKVLZr1y5hZWUlcnJyhBBCPPXUU2L9+vVa2/nggw9EaGioEEKIjIwMAUCcOXNG736JiKjuYzbrxmwmS8J77MgkduzYAScnJ5SUlECj0WDw4MGIi4uT6kNCQrTm7p89exaXLl2Cs7Oz1nbu37+P9PR03L59Gzk5OejQoYNUZ2Njg/bt21eY8lEuOTkZ1tbWCAsLM7rfly5dwr179/DCCy9olRcXF+Ppp58GAKSmpmr1AwBCQ0ON3ke5DRs2YPHixUhPT0dRURFKS0uhUqm02jz55JN44okntPaj0WiQlpYGZ2dnpKenY9iwYRgxYoTUprS0FC4uLlXuDxER1W3M5soxm8mccWBHJvH888/j888/h52dHby9vWFjo/2/oqOjo9bnoqIitGvXDuvWrauwLXd390fqg4ODQ5XXKSoqAgB8//33Wr+0gbJ7E6rL8ePHER0djRkzZiAiIgIuLi74+uuvMW/evCr3dcWKFRXCzNrautr6SkREdQOz2TBmM5k7DuzIJBwdHeHn52d0+7Zt22LDhg1o1KhRhTNj5by8vJCYmIguXboAKDv7lZSUhLZt2+psHxISAo1Gg4MHDyI8PLxCfflZSbVaLZUFBwdDqVQiKytL79nEoKAg6WbzcidOnKj8IP/i2LFj8PX1xfvvvy+V/fbbbxXaZWVl4erVq/D29pb2Y2VlhcDAQHh4eMDb2xuXL19GdHR0lfZPRETyw2w2jNlM5o4PTyGLEB0djYYNGyIqKgqHDx9GRkYGDhw4gHfffRdXrlwBAIwZMwZz5szB1q1bceHCBYwaNcrge26aNGmCmJgYvP7669i6dau0zY0bNwIAfH19oVAosGPHDly/fh1FRUVwdnbGhAkTMG7cOKxZswbp6ek4ffo0lixZIt30/Oabb+LixYuYOHEi0tLSsH79eqxevbpKx+vv74+srCx8/fXXSE9Px+LFi3XebG5vb4+YmBicPXsWhw8fxrvvvosBAwbA09MTADBjxgzMnj0bixcvxq+//opffvkFq1atwvz586vUHyIioocxm5nNZGZMfZMfyc9fb9CuSn1OTo4YMmSIaNiwoVAqlaJZs2ZixIgR4vbt20KIshuyx4wZI1QqlXB1dRXjx48XQ4YM0XuDthBC/PHHH2LcuHHCy8tL2NnZCT8/P7Fy5UqpfubMmcLT01MoFAoRExMjhCi7qXzhwoUiMDBQ2NraCnd3dxERESEOHjworbd9+3bh5+cnlEql6Ny5s1i5cmWVb9CeOHGiaNCggXBychKvvPKKWLBggXBxcZHqp0+fLlq3bi2WLl0qvL29hb29vfjHP/4h8vPztba7bt060aZNG2FnZyfc3NxEly5dxJYtW4QQvEGbiIjKMJt1YzaTJVEIoefuVSIiIiIiIrIInIpJRERERERk4TiwIyIiIiIisnAc2BEREREREVk4DuyIiIiIiIgsHAd2REREREREFo4DOyIiIiIiIgvHgR0REREREZGF48COiIiIiIjIwnFgR0REREREZOE4sCMiIiIiIrJwHNgRERERERFZuP8HGno91SjzL5MAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 1200x1000 with 16 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from sklearn.metrics import ConfusionMatrixDisplay\n",
"import matplotlib.pyplot as plt\n",
"\n",
"_, ax = plt.subplots(int(len(class_models) / 2), 2, figsize=(12, 10), sharex=False, sharey=False)\n",
"for index, key in enumerate(class_models.keys()):\n",
" c_matrix = class_models[key][\"Confusion_matrix\"]\n",
" disp = ConfusionMatrixDisplay(\n",
" confusion_matrix=c_matrix, display_labels=[\"hazardous\", \"safe\"]\n",
" ).plot(ax=ax.flat[index])\n",
" disp.ax_.set_title(key)\n",
"\n",
"plt.subplots_adjust(top=1, bottom=0, hspace=0.4, wspace=0.1)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"16400 - количество истинных положительных диагнозов (True Positives), где модель правильно определила объекты как \"hazardous\".\n",
"\n",
"1768 в некоторых моделях - количество ложных отрицательных диагнозов (False Negatives), где модель неправильно определила объекты, которые на самом деле принадлежат к классу \"hazardous\", но были отнесены к классу \"safe\". \n",
"\n",
"Исходя из значений True Positives и False Negatives, можно сказать, что модель имеет высокую точность при предсказании класса \"hazardous\". В принципе, уровень ложных отрицательных результатов в некоторых моделях (1768) говорит нам о том, что существует некотрое небольшое количество примеров, которые модель пропускает.\n",
"\n",
"Точность, полнота, верность (аккуратность), F-мера"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\">\n",
"#T_a22cf_row0_col0, #T_a22cf_row0_col1, #T_a22cf_row0_col2, #T_a22cf_row0_col3, #T_a22cf_row1_col0, #T_a22cf_row1_col1, #T_a22cf_row1_col2, #T_a22cf_row1_col3, #T_a22cf_row2_col0, #T_a22cf_row2_col1, #T_a22cf_row2_col2, #T_a22cf_row2_col3, #T_a22cf_row3_col0, #T_a22cf_row3_col1, #T_a22cf_row3_col2, #T_a22cf_row3_col3, #T_a22cf_row7_col2, #T_a22cf_row7_col3 {\n",
" background-color: #a8db34;\n",
" color: #000000;\n",
"}\n",
"#T_a22cf_row0_col4, #T_a22cf_row0_col5, #T_a22cf_row0_col6, #T_a22cf_row0_col7, #T_a22cf_row1_col4, #T_a22cf_row1_col5, #T_a22cf_row1_col6, #T_a22cf_row1_col7, #T_a22cf_row2_col4, #T_a22cf_row2_col5, #T_a22cf_row2_col6, #T_a22cf_row2_col7, #T_a22cf_row3_col4, #T_a22cf_row3_col5, #T_a22cf_row3_col6, #T_a22cf_row3_col7 {\n",
" background-color: #da5a6a;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_a22cf_row4_col0 {\n",
" background-color: #86d549;\n",
" color: #000000;\n",
"}\n",
"#T_a22cf_row4_col1 {\n",
" background-color: #77d153;\n",
" color: #000000;\n",
"}\n",
"#T_a22cf_row4_col2 {\n",
" background-color: #63cb5f;\n",
" color: #000000;\n",
"}\n",
"#T_a22cf_row4_col3 {\n",
" background-color: #4ac16d;\n",
" color: #000000;\n",
"}\n",
"#T_a22cf_row4_col4 {\n",
" background-color: #c03a83;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_a22cf_row4_col5 {\n",
" background-color: #b32c8e;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_a22cf_row4_col6 {\n",
" background-color: #c7427c;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_a22cf_row4_col7 {\n",
" background-color: #bd3786;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_a22cf_row5_col0, #T_a22cf_row5_col1, #T_a22cf_row5_col2, #T_a22cf_row5_col3, #T_a22cf_row6_col0, #T_a22cf_row6_col1, #T_a22cf_row6_col2, #T_a22cf_row6_col3 {\n",
" background-color: #26818e;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_a22cf_row5_col4, #T_a22cf_row6_col4 {\n",
" background-color: #8004a8;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_a22cf_row5_col5, #T_a22cf_row6_col5 {\n",
" background-color: #7d03a8;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_a22cf_row5_col6, #T_a22cf_row5_col7, #T_a22cf_row6_col6, #T_a22cf_row6_col7, #T_a22cf_row7_col4, #T_a22cf_row7_col5 {\n",
" background-color: #4e02a2;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_a22cf_row7_col0 {\n",
" background-color: #25ac82;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_a22cf_row7_col1 {\n",
" background-color: #26ad81;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_a22cf_row7_col6 {\n",
" background-color: #ac2694;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_a22cf_row7_col7 {\n",
" background-color: #ad2793;\n",
" color: #f1f1f1;\n",
"}\n",
"</style>\n",
"<table id=\"T_a22cf\">\n",
" <thead>\n",
" <tr>\n",
" <th class=\"blank level0\" >&nbsp;</th>\n",
" <th id=\"T_a22cf_level0_col0\" class=\"col_heading level0 col0\" >Precision_train</th>\n",
" <th id=\"T_a22cf_level0_col1\" class=\"col_heading level0 col1\" >Precision_test</th>\n",
" <th id=\"T_a22cf_level0_col2\" class=\"col_heading level0 col2\" >Recall_train</th>\n",
" <th id=\"T_a22cf_level0_col3\" class=\"col_heading level0 col3\" >Recall_test</th>\n",
" <th id=\"T_a22cf_level0_col4\" class=\"col_heading level0 col4\" >Accuracy_train</th>\n",
" <th id=\"T_a22cf_level0_col5\" class=\"col_heading level0 col5\" >Accuracy_test</th>\n",
" <th id=\"T_a22cf_level0_col6\" class=\"col_heading level0 col6\" >F1_train</th>\n",
" <th id=\"T_a22cf_level0_col7\" class=\"col_heading level0 col7\" >F1_test</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th id=\"T_a22cf_level0_row0\" class=\"row_heading level0 row0\" >logistic</th>\n",
" <td id=\"T_a22cf_row0_col0\" class=\"data row0 col0\" >1.000000</td>\n",
" <td id=\"T_a22cf_row0_col1\" class=\"data row0 col1\" >1.000000</td>\n",
" <td id=\"T_a22cf_row0_col2\" class=\"data row0 col2\" >1.000000</td>\n",
" <td id=\"T_a22cf_row0_col3\" class=\"data row0 col3\" >1.000000</td>\n",
" <td id=\"T_a22cf_row0_col4\" class=\"data row0 col4\" >1.000000</td>\n",
" <td id=\"T_a22cf_row0_col5\" class=\"data row0 col5\" >1.000000</td>\n",
" <td id=\"T_a22cf_row0_col6\" class=\"data row0 col6\" >1.000000</td>\n",
" <td id=\"T_a22cf_row0_col7\" class=\"data row0 col7\" >1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_a22cf_level0_row1\" class=\"row_heading level0 row1\" >decision_tree</th>\n",
" <td id=\"T_a22cf_row1_col0\" class=\"data row1 col0\" >1.000000</td>\n",
" <td id=\"T_a22cf_row1_col1\" class=\"data row1 col1\" >1.000000</td>\n",
" <td id=\"T_a22cf_row1_col2\" class=\"data row1 col2\" >1.000000</td>\n",
" <td id=\"T_a22cf_row1_col3\" class=\"data row1 col3\" >1.000000</td>\n",
" <td id=\"T_a22cf_row1_col4\" class=\"data row1 col4\" >1.000000</td>\n",
" <td id=\"T_a22cf_row1_col5\" class=\"data row1 col5\" >1.000000</td>\n",
" <td id=\"T_a22cf_row1_col6\" class=\"data row1 col6\" >1.000000</td>\n",
" <td id=\"T_a22cf_row1_col7\" class=\"data row1 col7\" >1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_a22cf_level0_row2\" class=\"row_heading level0 row2\" >random_forest</th>\n",
" <td id=\"T_a22cf_row2_col0\" class=\"data row2 col0\" >1.000000</td>\n",
" <td id=\"T_a22cf_row2_col1\" class=\"data row2 col1\" >1.000000</td>\n",
" <td id=\"T_a22cf_row2_col2\" class=\"data row2 col2\" >1.000000</td>\n",
" <td id=\"T_a22cf_row2_col3\" class=\"data row2 col3\" >1.000000</td>\n",
" <td id=\"T_a22cf_row2_col4\" class=\"data row2 col4\" >1.000000</td>\n",
" <td id=\"T_a22cf_row2_col5\" class=\"data row2 col5\" >1.000000</td>\n",
" <td id=\"T_a22cf_row2_col6\" class=\"data row2 col6\" >1.000000</td>\n",
" <td id=\"T_a22cf_row2_col7\" class=\"data row2 col7\" >1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_a22cf_level0_row3\" class=\"row_heading level0 row3\" >gradient_boosting</th>\n",
" <td id=\"T_a22cf_row3_col0\" class=\"data row3 col0\" >1.000000</td>\n",
" <td id=\"T_a22cf_row3_col1\" class=\"data row3 col1\" >1.000000</td>\n",
" <td id=\"T_a22cf_row3_col2\" class=\"data row3 col2\" >1.000000</td>\n",
" <td id=\"T_a22cf_row3_col3\" class=\"data row3 col3\" >1.000000</td>\n",
" <td id=\"T_a22cf_row3_col4\" class=\"data row3 col4\" >1.000000</td>\n",
" <td id=\"T_a22cf_row3_col5\" class=\"data row3 col5\" >1.000000</td>\n",
" <td id=\"T_a22cf_row3_col6\" class=\"data row3 col6\" >1.000000</td>\n",
" <td id=\"T_a22cf_row3_col7\" class=\"data row3 col7\" >1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_a22cf_level0_row4\" class=\"row_heading level0 row4\" >knn</th>\n",
" <td id=\"T_a22cf_row4_col0\" class=\"data row4 col0\" >0.884596</td>\n",
" <td id=\"T_a22cf_row4_col1\" class=\"data row4 col1\" >0.826374</td>\n",
" <td id=\"T_a22cf_row4_col2\" class=\"data row4 col2\" >0.744627</td>\n",
" <td id=\"T_a22cf_row4_col3\" class=\"data row4 col3\" >0.638009</td>\n",
" <td id=\"T_a22cf_row4_col4\" class=\"data row4 col4\" >0.965693</td>\n",
" <td id=\"T_a22cf_row4_col5\" class=\"data row4 col5\" >0.951728</td>\n",
" <td id=\"T_a22cf_row4_col6\" class=\"data row4 col6\" >0.808599</td>\n",
" <td id=\"T_a22cf_row4_col7\" class=\"data row4 col7\" >0.720077</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_a22cf_level0_row5\" class=\"row_heading level0 row5\" >naive_bayes</th>\n",
" <td id=\"T_a22cf_row5_col0\" class=\"data row5 col0\" >0.000000</td>\n",
" <td id=\"T_a22cf_row5_col1\" class=\"data row5 col1\" >0.000000</td>\n",
" <td id=\"T_a22cf_row5_col2\" class=\"data row5 col2\" >0.000000</td>\n",
" <td id=\"T_a22cf_row5_col3\" class=\"data row5 col3\" >0.000000</td>\n",
" <td id=\"T_a22cf_row5_col4\" class=\"data row5 col4\" >0.902681</td>\n",
" <td id=\"T_a22cf_row5_col5\" class=\"data row5 col5\" >0.902686</td>\n",
" <td id=\"T_a22cf_row5_col6\" class=\"data row5 col6\" >0.000000</td>\n",
" <td id=\"T_a22cf_row5_col7\" class=\"data row5 col7\" >0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_a22cf_level0_row6\" class=\"row_heading level0 row6\" >mlp</th>\n",
" <td id=\"T_a22cf_row6_col0\" class=\"data row6 col0\" >0.000000</td>\n",
" <td id=\"T_a22cf_row6_col1\" class=\"data row6 col1\" >0.000000</td>\n",
" <td id=\"T_a22cf_row6_col2\" class=\"data row6 col2\" >0.000000</td>\n",
" <td id=\"T_a22cf_row6_col3\" class=\"data row6 col3\" >0.000000</td>\n",
" <td id=\"T_a22cf_row6_col4\" class=\"data row6 col4\" >0.902681</td>\n",
" <td id=\"T_a22cf_row6_col5\" class=\"data row6 col5\" >0.902686</td>\n",
" <td id=\"T_a22cf_row6_col6\" class=\"data row6 col6\" >0.000000</td>\n",
" <td id=\"T_a22cf_row6_col7\" class=\"data row6 col7\" >0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_a22cf_level0_row7\" class=\"row_heading level0 row7\" >ridge</th>\n",
" <td id=\"T_a22cf_row7_col0\" class=\"data row7 col0\" >0.415780</td>\n",
" <td id=\"T_a22cf_row7_col1\" class=\"data row7 col1\" >0.421253</td>\n",
" <td id=\"T_a22cf_row7_col2\" class=\"data row7 col2\" >1.000000</td>\n",
" <td id=\"T_a22cf_row7_col3\" class=\"data row7 col3\" >1.000000</td>\n",
" <td id=\"T_a22cf_row7_col4\" class=\"data row7 col4\" >0.863255</td>\n",
" <td id=\"T_a22cf_row7_col5\" class=\"data row7 col5\" >0.866303</td>\n",
" <td id=\"T_a22cf_row7_col6\" class=\"data row7 col6\" >0.587351</td>\n",
" <td id=\"T_a22cf_row7_col7\" class=\"data row7 col7\" >0.592791</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x1b3e1e74950>"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class_metrics = pd.DataFrame.from_dict(class_models, \"index\")[\n",
" [\n",
" \"Precision_train\",\n",
" \"Precision_test\",\n",
" \"Recall_train\",\n",
" \"Recall_test\",\n",
" \"Accuracy_train\",\n",
" \"Accuracy_test\",\n",
" \"F1_train\",\n",
" \"F1_test\",\n",
" ]\n",
"]\n",
"class_metrics.sort_values(\n",
" by=\"Accuracy_test\", ascending=False\n",
").style.background_gradient(\n",
" cmap=\"plasma\",\n",
" low=0.3,\n",
" high=1,\n",
" subset=[\"Accuracy_train\", \"Accuracy_test\", \"F1_train\", \"F1_test\"],\n",
").background_gradient(\n",
" cmap=\"viridis\",\n",
" low=1,\n",
" high=0.3,\n",
" subset=[\n",
" \"Precision_train\",\n",
" \"Precision_test\",\n",
" \"Recall_train\",\n",
" \"Recall_test\",\n",
" ],\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Все модели в данной выборке, а именно логистическая регрессия, ридж-регрессия, дерево решений, KNN, наивный байесовский классификатор, градиентный бустинг, случайный лес и многослойный перцептрон (MLP) демонстрируют неплохие значения по всем метрикам на обучающих и тестовых наборах данных.\n",
"\n",
"Модели Naive Bayes и MLP не так эффективны по сравнению с другими, но в некоторых метриках показывают высокие результаты. \n",
"ROC-кривая, каппа Коэна, коэффициент корреляции Мэтьюса"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\">\n",
"#T_46430_row0_col0, #T_46430_row0_col1, #T_46430_row1_col0, #T_46430_row1_col1, #T_46430_row2_col0, #T_46430_row2_col1, #T_46430_row3_col0, #T_46430_row3_col1 {\n",
" background-color: #a8db34;\n",
" color: #000000;\n",
"}\n",
"#T_46430_row0_col2, #T_46430_row0_col3, #T_46430_row0_col4, #T_46430_row1_col2, #T_46430_row1_col3, #T_46430_row1_col4, #T_46430_row2_col2, #T_46430_row2_col3, #T_46430_row2_col4, #T_46430_row3_col2, #T_46430_row3_col3, #T_46430_row3_col4 {\n",
" background-color: #da5a6a;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_46430_row4_col0, #T_46430_row6_col1, #T_46430_row7_col1 {\n",
" background-color: #26818e;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_46430_row4_col1 {\n",
" background-color: #40bd72;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_46430_row4_col2 {\n",
" background-color: #d9586a;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_46430_row4_col3, #T_46430_row6_col2 {\n",
" background-color: #a51f99;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_46430_row4_col4 {\n",
" background-color: #ae2892;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_46430_row5_col0 {\n",
" background-color: #4ac16d;\n",
" color: #000000;\n",
"}\n",
"#T_46430_row5_col1 {\n",
" background-color: #5cc863;\n",
" color: #000000;\n",
"}\n",
"#T_46430_row5_col2 {\n",
" background-color: #d14e72;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_46430_row5_col3 {\n",
" background-color: #ba3388;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_46430_row5_col4 {\n",
" background-color: #bb3488;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_46430_row6_col0, #T_46430_row7_col0 {\n",
" background-color: #1e9d89;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_46430_row6_col3, #T_46430_row6_col4, #T_46430_row7_col2, #T_46430_row7_col3, #T_46430_row7_col4 {\n",
" background-color: #4e02a2;\n",
" color: #f1f1f1;\n",
"}\n",
"</style>\n",
"<table id=\"T_46430\">\n",
" <thead>\n",
" <tr>\n",
" <th class=\"blank level0\" >&nbsp;</th>\n",
" <th id=\"T_46430_level0_col0\" class=\"col_heading level0 col0\" >Accuracy_test</th>\n",
" <th id=\"T_46430_level0_col1\" class=\"col_heading level0 col1\" >F1_test</th>\n",
" <th id=\"T_46430_level0_col2\" class=\"col_heading level0 col2\" >ROC_AUC_test</th>\n",
" <th id=\"T_46430_level0_col3\" class=\"col_heading level0 col3\" >Cohen_kappa_test</th>\n",
" <th id=\"T_46430_level0_col4\" class=\"col_heading level0 col4\" >MCC_test</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th id=\"T_46430_level0_row0\" class=\"row_heading level0 row0\" >logistic</th>\n",
" <td id=\"T_46430_row0_col0\" class=\"data row0 col0\" >1.000000</td>\n",
" <td id=\"T_46430_row0_col1\" class=\"data row0 col1\" >1.000000</td>\n",
" <td id=\"T_46430_row0_col2\" class=\"data row0 col2\" >1.000000</td>\n",
" <td id=\"T_46430_row0_col3\" class=\"data row0 col3\" >1.000000</td>\n",
" <td id=\"T_46430_row0_col4\" class=\"data row0 col4\" >1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_46430_level0_row1\" class=\"row_heading level0 row1\" >decision_tree</th>\n",
" <td id=\"T_46430_row1_col0\" class=\"data row1 col0\" >1.000000</td>\n",
" <td id=\"T_46430_row1_col1\" class=\"data row1 col1\" >1.000000</td>\n",
" <td id=\"T_46430_row1_col2\" class=\"data row1 col2\" >1.000000</td>\n",
" <td id=\"T_46430_row1_col3\" class=\"data row1 col3\" >1.000000</td>\n",
" <td id=\"T_46430_row1_col4\" class=\"data row1 col4\" >1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_46430_level0_row2\" class=\"row_heading level0 row2\" >random_forest</th>\n",
" <td id=\"T_46430_row2_col0\" class=\"data row2 col0\" >1.000000</td>\n",
" <td id=\"T_46430_row2_col1\" class=\"data row2 col1\" >1.000000</td>\n",
" <td id=\"T_46430_row2_col2\" class=\"data row2 col2\" >1.000000</td>\n",
" <td id=\"T_46430_row2_col3\" class=\"data row2 col3\" >1.000000</td>\n",
" <td id=\"T_46430_row2_col4\" class=\"data row2 col4\" >1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_46430_level0_row3\" class=\"row_heading level0 row3\" >gradient_boosting</th>\n",
" <td id=\"T_46430_row3_col0\" class=\"data row3 col0\" >1.000000</td>\n",
" <td id=\"T_46430_row3_col1\" class=\"data row3 col1\" >1.000000</td>\n",
" <td id=\"T_46430_row3_col2\" class=\"data row3 col2\" >1.000000</td>\n",
" <td id=\"T_46430_row3_col3\" class=\"data row3 col3\" >1.000000</td>\n",
" <td id=\"T_46430_row3_col4\" class=\"data row3 col4\" >1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_46430_level0_row4\" class=\"row_heading level0 row4\" >ridge</th>\n",
" <td id=\"T_46430_row4_col0\" class=\"data row4 col0\" >0.866303</td>\n",
" <td id=\"T_46430_row4_col1\" class=\"data row4 col1\" >0.592791</td>\n",
" <td id=\"T_46430_row4_col2\" class=\"data row4 col2\" >0.995675</td>\n",
" <td id=\"T_46430_row4_col3\" class=\"data row4 col3\" >0.528180</td>\n",
" <td id=\"T_46430_row4_col4\" class=\"data row4 col4\" >0.599051</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_46430_level0_row5\" class=\"row_heading level0 row5\" >knn</th>\n",
" <td id=\"T_46430_row5_col0\" class=\"data row5 col0\" >0.951728</td>\n",
" <td id=\"T_46430_row5_col1\" class=\"data row5 col1\" >0.720077</td>\n",
" <td id=\"T_46430_row5_col2\" class=\"data row5 col2\" >0.953405</td>\n",
" <td id=\"T_46430_row5_col3\" class=\"data row5 col3\" >0.694141</td>\n",
" <td id=\"T_46430_row5_col4\" class=\"data row5 col4\" >0.701100</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_46430_level0_row6\" class=\"row_heading level0 row6\" >naive_bayes</th>\n",
" <td id=\"T_46430_row6_col0\" class=\"data row6 col0\" >0.902686</td>\n",
" <td id=\"T_46430_row6_col1\" class=\"data row6 col1\" >0.000000</td>\n",
" <td id=\"T_46430_row6_col2\" class=\"data row6 col2\" >0.766341</td>\n",
" <td id=\"T_46430_row6_col3\" class=\"data row6 col3\" >0.000000</td>\n",
" <td id=\"T_46430_row6_col4\" class=\"data row6 col4\" >0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_46430_level0_row7\" class=\"row_heading level0 row7\" >mlp</th>\n",
" <td id=\"T_46430_row7_col0\" class=\"data row7 col0\" >0.902686</td>\n",
" <td id=\"T_46430_row7_col1\" class=\"data row7 col1\" >0.000000</td>\n",
" <td id=\"T_46430_row7_col2\" class=\"data row7 col2\" >0.500000</td>\n",
" <td id=\"T_46430_row7_col3\" class=\"data row7 col3\" >0.000000</td>\n",
" <td id=\"T_46430_row7_col4\" class=\"data row7 col4\" >0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x1b3dda0e660>"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"class_metrics = pd.DataFrame.from_dict(class_models, \"index\")[\n",
" [\n",
" \"Accuracy_test\",\n",
" \"F1_test\",\n",
" \"ROC_AUC_test\",\n",
" \"Cohen_kappa_test\",\n",
" \"MCC_test\",\n",
" ]\n",
"]\n",
"class_metrics.sort_values(by=\"ROC_AUC_test\", ascending=False).style.background_gradient(\n",
" cmap=\"plasma\",\n",
" low=0.3,\n",
" high=1,\n",
" subset=[\n",
" \"ROC_AUC_test\",\n",
" \"MCC_test\",\n",
" \"Cohen_kappa_test\",\n",
" ],\n",
").background_gradient(\n",
" cmap=\"viridis\",\n",
" low=1,\n",
" high=0.3,\n",
" subset=[\n",
" \"Accuracy_test\",\n",
" \"F1_test\",\n",
" ],\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Схожий вывод можно сделать и для следующих метрик: Accuracy, F1, ROC AUC, Cohen's Kappa и MCC. Все модели, кроме Naive Bayes и MLP, указывают на хорошо-развитую способность к выделению классов"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'logistic'"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"best_model = str(class_metrics.sort_values(by=\"MCC_test\", ascending=False).iloc[0].name)\n",
"\n",
"display(best_model)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Вывод данных с ошибкой предсказания для оценки"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Error items count: 0'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>Predicted</th>\n",
" <th>name</th>\n",
" <th>est_diameter_min</th>\n",
" <th>est_diameter_max</th>\n",
" <th>relative_velocity</th>\n",
" <th>miss_distance</th>\n",
" <th>orbiting_body</th>\n",
" <th>sentry_object</th>\n",
" <th>absolute_magnitude</th>\n",
" <th>hazardous</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [id, Predicted, name, est_diameter_min, est_diameter_max, relative_velocity, miss_distance, orbiting_body, sentry_object, absolute_magnitude, hazardous]\n",
"Index: []"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"preprocessing_result = pipeline_end.transform(X_test)\n",
"preprocessed_df = pd.DataFrame(\n",
" preprocessing_result,\n",
" columns=pipeline_end.get_feature_names_out(),\n",
")\n",
"\n",
"y_pred = class_models[best_model][\"preds\"]\n",
"\n",
"error_index = y_test[y_test[\"hazardous\"] != y_pred].index.tolist()\n",
"display(f\"Error items count: {len(error_index)}\")\n",
"\n",
"error_predicted = pd.Series(y_pred, index=y_test.index).loc[error_index]\n",
"error_df = X_test.loc[error_index].copy()\n",
"error_df.insert(loc=1, column=\"Predicted\", value=error_predicted)\n",
"error_df.sort_index()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Пример использования обученной модели (конвейера) для предсказания\n"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>name</th>\n",
" <th>est_diameter_min</th>\n",
" <th>est_diameter_max</th>\n",
" <th>relative_velocity</th>\n",
" <th>miss_distance</th>\n",
" <th>orbiting_body</th>\n",
" <th>sentry_object</th>\n",
" <th>absolute_magnitude</th>\n",
" <th>hazardous</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>67305</th>\n",
" <td>3774018</td>\n",
" <td>(2017 HF1)</td>\n",
" <td>0.084053</td>\n",
" <td>0.187949</td>\n",
" <td>53291.016226</td>\n",
" <td>68625911.198806</td>\n",
" <td>Earth</td>\n",
" <td>False</td>\n",
" <td>22.5</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id name est_diameter_min est_diameter_max \\\n",
"67305 3774018 (2017 HF1) 0.084053 0.187949 \n",
"\n",
" relative_velocity miss_distance orbiting_body sentry_object \\\n",
"67305 53291.016226 68625911.198806 Earth False \n",
"\n",
" absolute_magnitude hazardous \n",
"67305 22.5 False "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>est_diameter_min</th>\n",
" <th>est_diameter_max</th>\n",
" <th>relative_velocity</th>\n",
" <th>miss_distance</th>\n",
" <th>sentry_object</th>\n",
" <th>absolute_magnitude</th>\n",
" <th>hazardous</th>\n",
" <th>id</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>67305</th>\n",
" <td>-0.140818</td>\n",
" <td>-0.140818</td>\n",
" <td>0.207258</td>\n",
" <td>1.410653</td>\n",
" <td>0.0</td>\n",
" <td>-0.353797</td>\n",
" <td>-0.328347</td>\n",
" <td>3774018.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" est_diameter_min est_diameter_max relative_velocity miss_distance \\\n",
"67305 -0.140818 -0.140818 0.207258 1.410653 \n",
"\n",
" sentry_object absolute_magnitude hazardous id \n",
"67305 0.0 -0.353797 -0.328347 3774018.0 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'predicted: False (proba: [9.99855425e-01 1.44575476e-04])'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'real: 0'"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model = class_models[best_model][\"pipeline\"]\n",
"\n",
"example_id = 67305\n",
"test = pd.DataFrame(X_test.loc[example_id, :]).T\n",
"test_preprocessed = pd.DataFrame(preprocessed_df.loc[example_id, :]).T\n",
"display(test)\n",
"display(test_preprocessed)\n",
"result_proba = model.predict_proba(test)[0]\n",
"result = model.predict(test)[0]\n",
"real = int(y_test.loc[example_id].values[0])\n",
"display(f\"predicted: {result} (proba: {result_proba})\")\n",
"display(f\"real: {real}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Подбор гиперпараметров методом поиска по сетке "
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\numpy\\ma\\core.py:2881: RuntimeWarning: invalid value encountered in cast\n",
" _data = np.array(data, dtype=dtype, copy=copy,\n"
]
},
{
"data": {
"text/plain": [
"{'model__criterion': 'gini',\n",
" 'model__max_depth': 5,\n",
" 'model__max_features': 'sqrt',\n",
" 'model__n_estimators': 50}"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.model_selection import GridSearchCV\n",
"\n",
"optimized_model_type = \"random_forest\"\n",
"\n",
"random_forest_model = class_models[optimized_model_type][\"pipeline\"]\n",
"\n",
"param_grid = {\n",
" \"model__n_estimators\": [10, 50, 100],\n",
" \"model__max_features\": [\"sqrt\", \"log2\"],\n",
" \"model__max_depth\": [5, 7, 10],\n",
" \"model__criterion\": [\"gini\", \"entropy\"],\n",
"}\n",
"\n",
"gs_optomizer = GridSearchCV(\n",
" estimator=random_forest_model, param_grid=param_grid, n_jobs=-1\n",
")\n",
"gs_optomizer.fit(X_train, y_train.values.ravel())\n",
"gs_optomizer.best_params_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Обучение модели с новыми гиперпараметрами"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.pipeline import Pipeline\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.compose import ColumnTransformer\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"import numpy as np\n",
"from sklearn import metrics\n",
"import pandas as pd\n",
"\n",
"\n",
"# Определяем числовые признаки\n",
"numeric_features = X_train.select_dtypes(include=['float64', 'int64']).columns.tolist()\n",
"\n",
"# Установка random_state\n",
"random_state = 42\n",
"\n",
"# Определение трансформера\n",
"pipeline_end = ColumnTransformer([\n",
" ('numeric', StandardScaler(), numeric_features),\n",
" # Добавьте другие трансформеры, если требуется\n",
"])\n",
"\n",
"# Объявление модели\n",
"optimized_model = RandomForestClassifier(\n",
" random_state=random_state,\n",
" criterion=\"gini\",\n",
" max_depth=5,\n",
" max_features=\"sqrt\",\n",
" n_estimators=50,\n",
")\n",
"\n",
"# Создание пайплайна с корректными шагами\n",
"result = {}\n",
"\n",
"# Обучение модели\n",
"result[\"pipeline\"] = Pipeline([\n",
" (\"pipeline\", pipeline_end),\n",
" (\"model\", optimized_model)\n",
"]).fit(X_train, y_train.values.ravel())\n",
"\n",
"# Прогнозирование и расчет метрик\n",
"result[\"train_preds\"] = result[\"pipeline\"].predict(X_train)\n",
"result[\"probs\"] = result[\"pipeline\"].predict_proba(X_test)[:, 1]\n",
"result[\"preds\"] = np.where(result[\"probs\"] > 0.5, 1, 0)\n",
"\n",
"# Метрики для оценки модели\n",
"result[\"Precision_train\"] = metrics.precision_score(y_train, result[\"train_preds\"])\n",
"result[\"Precision_test\"] = metrics.precision_score(y_test, result[\"preds\"])\n",
"result[\"Recall_train\"] = metrics.recall_score(y_train, result[\"train_preds\"])\n",
"result[\"Recall_test\"] = metrics.recall_score(y_test, result[\"preds\"])\n",
"result[\"Accuracy_train\"] = metrics.accuracy_score(y_train, result[\"train_preds\"])\n",
"result[\"Accuracy_test\"] = metrics.accuracy_score(y_test, result[\"preds\"])\n",
"result[\"ROC_AUC_test\"] = metrics.roc_auc_score(y_test, result[\"probs\"])\n",
"result[\"F1_train\"] = metrics.f1_score(y_train, result[\"train_preds\"])\n",
"result[\"F1_test\"] = metrics.f1_score(y_test, result[\"preds\"])\n",
"result[\"MCC_test\"] = metrics.matthews_corrcoef(y_test, result[\"preds\"])\n",
"result[\"Cohen_kappa_test\"] = metrics.cohen_kappa_score(y_test, result[\"preds\"])\n",
"result[\"Confusion_matrix\"] = metrics.confusion_matrix(y_test, result[\"preds\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Формирование данных для оценки старой и новой версии модели"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"optimized_metrics = pd.DataFrame(columns=list(result.keys()))\n",
"optimized_metrics.loc[len(optimized_metrics)] = pd.Series(\n",
" data=class_models[optimized_model_type]\n",
")\n",
"optimized_metrics.loc[len(optimized_metrics)] = pd.Series(\n",
" data=result\n",
")\n",
"optimized_metrics.insert(loc=0, column=\"Name\", value=[\"Old\", \"New\"])\n",
"optimized_metrics = optimized_metrics.set_index(\"Name\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Оценка параметров старой и новой модели"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\">\n",
"#T_55496_row0_col0, #T_55496_row0_col1, #T_55496_row0_col2, #T_55496_row0_col3 {\n",
" background-color: #a8db34;\n",
" color: #000000;\n",
"}\n",
"#T_55496_row0_col4, #T_55496_row0_col5, #T_55496_row0_col6, #T_55496_row0_col7 {\n",
" background-color: #da5a6a;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_55496_row1_col0, #T_55496_row1_col1, #T_55496_row1_col2, #T_55496_row1_col3 {\n",
" background-color: #26818e;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_55496_row1_col4, #T_55496_row1_col5, #T_55496_row1_col6, #T_55496_row1_col7 {\n",
" background-color: #4e02a2;\n",
" color: #f1f1f1;\n",
"}\n",
"</style>\n",
"<table id=\"T_55496\">\n",
" <thead>\n",
" <tr>\n",
" <th class=\"blank level0\" >&nbsp;</th>\n",
" <th id=\"T_55496_level0_col0\" class=\"col_heading level0 col0\" >Precision_train</th>\n",
" <th id=\"T_55496_level0_col1\" class=\"col_heading level0 col1\" >Precision_test</th>\n",
" <th id=\"T_55496_level0_col2\" class=\"col_heading level0 col2\" >Recall_train</th>\n",
" <th id=\"T_55496_level0_col3\" class=\"col_heading level0 col3\" >Recall_test</th>\n",
" <th id=\"T_55496_level0_col4\" class=\"col_heading level0 col4\" >Accuracy_train</th>\n",
" <th id=\"T_55496_level0_col5\" class=\"col_heading level0 col5\" >Accuracy_test</th>\n",
" <th id=\"T_55496_level0_col6\" class=\"col_heading level0 col6\" >F1_train</th>\n",
" <th id=\"T_55496_level0_col7\" class=\"col_heading level0 col7\" >F1_test</th>\n",
" </tr>\n",
" <tr>\n",
" <th class=\"index_name level0\" >Name</th>\n",
" <th class=\"blank col0\" >&nbsp;</th>\n",
" <th class=\"blank col1\" >&nbsp;</th>\n",
" <th class=\"blank col2\" >&nbsp;</th>\n",
" <th class=\"blank col3\" >&nbsp;</th>\n",
" <th class=\"blank col4\" >&nbsp;</th>\n",
" <th class=\"blank col5\" >&nbsp;</th>\n",
" <th class=\"blank col6\" >&nbsp;</th>\n",
" <th class=\"blank col7\" >&nbsp;</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th id=\"T_55496_level0_row0\" class=\"row_heading level0 row0\" >Old</th>\n",
" <td id=\"T_55496_row0_col0\" class=\"data row0 col0\" >1.000000</td>\n",
" <td id=\"T_55496_row0_col1\" class=\"data row0 col1\" >1.000000</td>\n",
" <td id=\"T_55496_row0_col2\" class=\"data row0 col2\" >1.000000</td>\n",
" <td id=\"T_55496_row0_col3\" class=\"data row0 col3\" >1.000000</td>\n",
" <td id=\"T_55496_row0_col4\" class=\"data row0 col4\" >1.000000</td>\n",
" <td id=\"T_55496_row0_col5\" class=\"data row0 col5\" >1.000000</td>\n",
" <td id=\"T_55496_row0_col6\" class=\"data row0 col6\" >1.000000</td>\n",
" <td id=\"T_55496_row0_col7\" class=\"data row0 col7\" >1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_55496_level0_row1\" class=\"row_heading level0 row1\" >New</th>\n",
" <td id=\"T_55496_row1_col0\" class=\"data row1 col0\" >0.833191</td>\n",
" <td id=\"T_55496_row1_col1\" class=\"data row1 col1\" >0.862500</td>\n",
" <td id=\"T_55496_row1_col2\" class=\"data row1 col2\" >0.138433</td>\n",
" <td id=\"T_55496_row1_col3\" class=\"data row1 col3\" >0.156109</td>\n",
" <td id=\"T_55496_row1_col4\" class=\"data row1 col4\" >0.913456</td>\n",
" <td id=\"T_55496_row1_col5\" class=\"data row1 col5\" >0.915456</td>\n",
" <td id=\"T_55496_row1_col6\" class=\"data row1 col6\" >0.237420</td>\n",
" <td id=\"T_55496_row1_col7\" class=\"data row1 col7\" >0.264368</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x1b3e1be0920>"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"optimized_metrics[\n",
" [\n",
" \"Precision_train\",\n",
" \"Precision_test\",\n",
" \"Recall_train\",\n",
" \"Recall_test\",\n",
" \"Accuracy_train\",\n",
" \"Accuracy_test\",\n",
" \"F1_train\",\n",
" \"F1_test\",\n",
" ]\n",
"].style.background_gradient(\n",
" cmap=\"plasma\",\n",
" low=0.3,\n",
" high=1,\n",
" subset=[\"Accuracy_train\", \"Accuracy_test\", \"F1_train\", \"F1_test\"],\n",
").background_gradient(\n",
" cmap=\"viridis\",\n",
" low=1,\n",
" high=0.3,\n",
" subset=[\n",
" \"Precision_train\",\n",
" \"Precision_test\",\n",
" \"Recall_train\",\n",
" \"Recall_test\",\n",
" ],\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\">\n",
"#T_36483_row0_col0, #T_36483_row0_col1 {\n",
" background-color: #a8db34;\n",
" color: #000000;\n",
"}\n",
"#T_36483_row0_col2, #T_36483_row0_col3, #T_36483_row0_col4 {\n",
" background-color: #da5a6a;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_36483_row1_col0, #T_36483_row1_col1 {\n",
" background-color: #26818e;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_36483_row1_col2, #T_36483_row1_col3, #T_36483_row1_col4 {\n",
" background-color: #4e02a2;\n",
" color: #f1f1f1;\n",
"}\n",
"</style>\n",
"<table id=\"T_36483\">\n",
" <thead>\n",
" <tr>\n",
" <th class=\"blank level0\" >&nbsp;</th>\n",
" <th id=\"T_36483_level0_col0\" class=\"col_heading level0 col0\" >Accuracy_test</th>\n",
" <th id=\"T_36483_level0_col1\" class=\"col_heading level0 col1\" >F1_test</th>\n",
" <th id=\"T_36483_level0_col2\" class=\"col_heading level0 col2\" >ROC_AUC_test</th>\n",
" <th id=\"T_36483_level0_col3\" class=\"col_heading level0 col3\" >Cohen_kappa_test</th>\n",
" <th id=\"T_36483_level0_col4\" class=\"col_heading level0 col4\" >MCC_test</th>\n",
" </tr>\n",
" <tr>\n",
" <th class=\"index_name level0\" >Name</th>\n",
" <th class=\"blank col0\" >&nbsp;</th>\n",
" <th class=\"blank col1\" >&nbsp;</th>\n",
" <th class=\"blank col2\" >&nbsp;</th>\n",
" <th class=\"blank col3\" >&nbsp;</th>\n",
" <th class=\"blank col4\" >&nbsp;</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th id=\"T_36483_level0_row0\" class=\"row_heading level0 row0\" >Old</th>\n",
" <td id=\"T_36483_row0_col0\" class=\"data row0 col0\" >1.000000</td>\n",
" <td id=\"T_36483_row0_col1\" class=\"data row0 col1\" >1.000000</td>\n",
" <td id=\"T_36483_row0_col2\" class=\"data row0 col2\" >1.000000</td>\n",
" <td id=\"T_36483_row0_col3\" class=\"data row0 col3\" >1.000000</td>\n",
" <td id=\"T_36483_row0_col4\" class=\"data row0 col4\" >1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_36483_level0_row1\" class=\"row_heading level0 row1\" >New</th>\n",
" <td id=\"T_36483_row1_col0\" class=\"data row1 col0\" >0.915456</td>\n",
" <td id=\"T_36483_row1_col1\" class=\"data row1 col1\" >0.264368</td>\n",
" <td id=\"T_36483_row1_col2\" class=\"data row1 col2\" >0.927493</td>\n",
" <td id=\"T_36483_row1_col3\" class=\"data row1 col3\" >0.241751</td>\n",
" <td id=\"T_36483_row1_col4\" class=\"data row1 col4\" >0.345694</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x1b3e1be2de0>"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"optimized_metrics[\n",
" [\n",
" \"Accuracy_test\",\n",
" \"F1_test\",\n",
" \"ROC_AUC_test\",\n",
" \"Cohen_kappa_test\",\n",
" \"MCC_test\",\n",
" ]\n",
"].style.background_gradient(\n",
" cmap=\"plasma\",\n",
" low=0.3,\n",
" high=1,\n",
" subset=[\n",
" \"ROC_AUC_test\",\n",
" \"MCC_test\",\n",
" \"Cohen_kappa_test\",\n",
" ],\n",
").background_gradient(\n",
" cmap=\"viridis\",\n",
" low=1,\n",
" high=0.3,\n",
" subset=[\n",
" \"Accuracy_test\",\n",
" \"F1_test\",\n",
" ],\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA5cAAAGsCAYAAABJt1OiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABwNElEQVR4nO3deVxU5eLH8e8AsogOuAGSqJi7oqZ2jRZXEpdK0+xaXpfcbiWVWlrd1NzKstzTrCzNm/601dTMJM2l3BLDPSs3SAUzBERDlpnfH1xGJ1EZ5+jA8Hm/Xuf1a855zjPPmZ/Xr895nvMck9VqtQoAAAAAACd4uLoBAAAAAIDij84lAAAAAMBpdC4BAAAAAE6jcwkAAAAAcBqdSwAAAACA0+hcAgAAAACcRucSAAAAAOA0OpcAAAAAAKd5uboBAIDiJTMzU1lZWYbV5+3tLV9fX8PqAwDAEeSacehcAgAKLTMzU+HVyijpVK5hdYaEhOjIkSMlNogBAK5DrhmLziUAoNCysrKUdCpXR+KqyVzW+Scr0s9aFN7smLKyskpkCAMAXItcMxadSwCAw8xlPQwJYQAAigJyzRh0LgEADsu1WpRrNaYeAABcjVwzBt1zAIDDLLIatgEA4GquyrWNGzfq/vvvV2hoqEwmk5YtW3ZZmQMHDuiBBx5QQECA/P39dfvttyshIcF2PDMzU0OGDFGFChVUpkwZde/eXcnJyXZ1JCQkqHPnzipdurSCgoI0YsQI5eTk2JVZv369mjZtKh8fH9WsWVMLFixw6FokOpcAgGLE3UIYAFCynTt3To0bN9bs2bMLPH7o0CHdfffdqlu3rtavX6/du3dr9OjRds9zDhs2TCtWrNAnn3yiDRs26MSJE+rWrZvteG5urjp37qysrCxt3rxZH374oRYsWKAxY8bYyhw5ckSdO3dWmzZtFB8fr6FDh2rgwIH65ptvHLoepsUCABxmkUVGTPxxtJb8EO7fv79dcObLD+EBAwZo3LhxMpvN2rdv32Uh/NVXX+mTTz5RQECAYmJi1K1bN/3www+SLoZwSEiINm/erJMnT6pPnz4qVaqUXn31VUkXQ/jxxx/XokWLtHbtWg0cOFCVK1dWdHS0E78IAMAVXJVrHTt2VMeOHa94/KWXXlKnTp00efJk275bb73V9t9paWl6//33tXjxYrVt21aSNH/+fNWrV09bt27VHXfcoTVr1mj//v369ttvFRwcrCZNmmjChAl6/vnnNXbsWHl7e2vu3LkKDw/XlClTJEn16tXT999/r2nTpjmUa4xcAgAclmu1GrY5omPHjpo4caIefPDBAo9fGsK33Xabbr31Vj3wwAMKCgqSdDGEp06dqrZt26pZs2aaP3++Nm/erK1bt0qSLYQ/+ugjNWnSRB07dtSECRM0e/Zs23vQLg3hevXqKSYmRg899JCmTZvmxK8KAHAVo3MtPT3dbrtw4YLDbbJYLPrqq69Uu3ZtRUdHKygoSC1atLCbtRMXF6fs7GxFRUXZ9tWtW1dVq1bVli1bJElbtmxRRESEgoODbWWio6OVnp6uffv22cpcWkd+mfw6CovOJQDA5UpqCAMA3FNYWJgCAgJs26RJkxyu49SpU8rIyNBrr72mDh06aM2aNXrwwQfVrVs3bdiwQZKUlJQkb29vBQYG2p0bHByspKQkW5lLMy3/eP6xq5VJT0/XX3/9Veg207kEADjM6IUPSmoIAwCKBqNzLTExUWlpabbtxRdfdLxNlrwptl26dNGwYcPUpEkTvfDCC7rvvvs0d+5cQ6/fKDxzCQBwmEVW5Rqw0uulIWw2m237fXx8HK/rbyEsSU2aNNHmzZs1d+5ctWrVyun2AgDck9G5Zjab7XLtelSsWFFeXl6qX7++3f785yElKSQkRFlZWUpNTbW7cZqcnKyQkBBbme3bt9vVkb+Q3aVl/r64XXJyssxms/z8/ArdZkYuAQAulx/C+dv1dC6vFsL5q8VeGsKX+nsIFxSw+ceuVsbREAYA4Eq8vb11++236+DBg3b7f/nlF1WrVk2S1KxZM5UqVUpr1661HT948KASEhIUGRkpSYqMjNSePXt06tQpW5nY2FiZzWZbZkZGRtrVkV8mv47ConMJAHBYUXzPZXEMYQBA0eCqXMvIyFB8fLzi4+Ml5a1GHh8fb7spOmLECC1dulTvvfeefvvtN7311ltasWKFnnzySUlSQECABgwYoOHDh+u7775TXFycHnvsMUVGRuqOO+6QJLVv317169dX7969tWvXLn3zzTcaNWqUhgwZYruZ+/jjj+vw4cMaOXKkfv75Z82ZM0cff/yxbSZQYTEtFgBQbGRkZOi3336zfc4P4fLly6tq1aoaMWKE/vnPf6ply5Zq06aNVq9erRUrVmj9+vWS7EO4fPnyMpvNeuqpp64YwpMnT1ZSUlKBIfzWW29p5MiR6t+/v9atW6ePP/5YX3311U3/TQAAxdeOHTvUpk0b2+fhw4dLkvr27asFCxbowQcf1Ny5czVp0iQ9/fTTqlOnjj777DPdfffdtnOmTZsmDw8Pde/eXRcuXFB0dLTmzJljO+7p6amVK1fqiSeeUGRkpPz9/dW3b1+NHz/eViY8PFxfffWVhg0bphkzZqhKlSqaN2+ew6/XMlmtDq4DDwAosdLT0xUQEKBfDgSrbFnnJ7+cPWtR7XrJSktLK9SzKevXr7cL4Xz5ISxJH3zwgSZNmqTff/9dderU0bhx49SlSxdb2czMTD377LP6v//7P7sQzp/yKknHjh3TE088ofXr19tC+LXXXpOX18V7suvXr9ewYcO0f/9+ValSRaNHj1a/fv2u/8cAANx0rs41d0PnEgBQaPkh/LOBIVy3BIcwAMC1yDVj8cwlAAAAAMBpPHMJAHBYrkFLthtRBwAAziLXjEHnEgDgsFxr3mZEPQAAuBq5ZgymxQIAAAAAnMbIJQDAYZb/bUbUAwCAq5FrxqBzCQBwmEUm5cpkSD0AALgauWYMpsUCAAAAAJzGyCUAwGEWa95mRD0AALgauWYMRi4BAAAAAE5j5BIA4LBcg55NMaIOAACcRa4Zg84lAMBhhDAAwJ2Qa8ZgWiwAAAAAwGmMXAIAHGaxmmSxGrBkuwF1AADgLHLNGHQuAQAOY/oQAMCdkGvGYFosAAAAAMBpjFwCAByWKw/lGnB/MteAtgAA4CxyzRh0LgEADrMa9GyKtYQ/mwIAKBrINWMwLRYAAAAA4DRGLgEADmPhAwCAOyHXjEHnEgDgsFyrh3KtBjybYjWgMQAAOIlcMwbTYgEAAAAATmPkEgDgMItMshhwf9KiEn6LFwBQJJBrxmDkEgAAAADgNEYuAQAOY+EDAIA7IdeMQecSAOAw4xY+KNnThwAARQO5ZgymxQIAAAAAnMbIJQDAYXkLHzg/9ceIOgAAcBa5Zgw6lwAAh1nkoVxW1QMAuAlyzRhMiwUAAAAAOI2RSwCAw1j4AADgTsg1Y9C5BAA4zCIPXjYNAHAb5JoxmBYLAAAAAHAaI5cAAIflWk3KtRrwsmkD6gAAwFnkmjEYuQQAAAAAOI2RSwCAw3INWrI9t4Q/mwIAKBrINWPQuQQAOMxi9ZDFgFX1LCV8VT0AQNFArhmDabEAAAAAAKfRuQQAOCx/+pARGwAAruaqXNu4caPuv/9+hYaGymQyadmyZVcs+/jjj8tkMmn69Ol2+1NSUtSrVy+ZzWYFBgZqwIABysjIsCuze/du3XPPPfL19VVYWJgmT558Wf2ffPKJ6tatK19fX0VERGjVqlUOXYtE5xIAcB0suriynjObxcHvdbcQBgAUDa7KtXPnzqlx48aaPXv2Vct98cUX2rp1q0JDQy871qtXL+3bt0+xsbFauXKlNm7cqMGDB9uOp6enq3379qpWrZri4uL0xhtvaOzYsXr33XdtZTZv3qxHHnlEAwYM0E8//aSuXbuqa9eu2rt3r0PXQ+cSAFBsuFsIAwBKto4dO2rixIl68MEHr1jm+PHjeuqpp7Ro0SKVKlXK7tiBAwe0evVqzZs3Ty1atNDdd9+tWbNmacmSJTpx4oQkadGiRcrKytIHH3ygBg0aqGfPnnr66ac1depUWz0zZsxQhw4dNGLECNWrV08TJkxQ06ZN9dZbbzl0PXQuAQAOs8jDsM0R7hbCAICiwehcS09Pt9suXLhwfe2yWNS7d2+NGDFCDRo0uOz4li1bFBgYqObNm9v2RUVFycPDQ9u2bbOVadmypby9vW1loqOjdfDgQZ05c8ZWJioqyq7u6OhobdmyxaH20rkEADgs1+ph2CaV3BAGABQNRudaWFiYAgICbNukSZOuq12vv/66vLy89PTTTxd4PCkpSUFBQXb7vLy8VL58eSUlJdnKBAcH25XJ/3ytMvnHC4tXkQAAXC4sLMzu88svv6yxY8c6XI9RIRweHm5X5tIQLleunGEhDABwT4mJiTKbzbbPPj4+DtcRFxenGTNmaOfOnTKZTEY274ahcwkAcJhFJlnkfNDl11FSQxgAUDQYnWtms9ku167Hpk2bdOrUKVWtWtW2Lzc3V88++6ymT5+uo0ePKiQkRKdOnbI7LycnRykpKQoJCZEkhYSEKDk52a5M/udrlck/XlhMiwUAOMzo6UP5IZy/XU/n8tIQ9vLykpeXl44dO6Znn31W1atXl6QiF8IAgKLB6FwzQu/evbV7927Fx8fbttDQUI0YMULffPONJCkyMlKpqamKi4uznbdu3TpZLBa1aNHCVmbjxo3Kzs62lYmNjVWdOnVUrlw5W5m1a9fafX9sbKwiIyMdajOdSwCAWyiOIQwAKNkyMjJsmSVJR44cUXx8vBISElShQgU1bNjQbitVqpRCQkJUp04dSVK9evXUoUMHDRo0SNu3b9cPP/ygmJgY9ezZ07Zi+qOPPipvb28NGDBA+/bt09KlSzVjxgwNHz7c1o5nnnlGq1ev1pQpU/Tzzz9r7Nix2rFjh2JiYhy6HqbFAgAcdj0vir5SPY7IyMjQb7/9ZvucH8Lly5dX1apVVaFCBbvyVwvhuXPnKjs7u8AQHjdunAYMGKDnn39ee/fu1YwZMzRt2jRbvc8884xatWqlKVOmqHPnzlqyZIl27Nhh97oSAEDx4apc27Fjh9q0aWP7nN/h69u3rxYsWFCoOhYtWqSYmBi1a9dOHh4e6t69u2bOnGk7HhAQoDVr1mjIkCFq1qyZKlasqDFjxti9huvOO+/U4sWLNWrUKP3nP/9RrVq1tGzZMjVs2NCh6zFZrVarQ2cAAEqs9PR0BQQE6M0dd8uvjPP3J//KyNFzzb9XWlpaoZ5NWb9+vV0I57tSCFevXl1Dhw7V0KFDbftSUlIUExOjFStW2IVwmTJlbGV2796tIUOG6Mcff1TFihX11FNP6fnnn7er+5NPPtGoUaN09OhR1apVS5MnT1anTp0Kf/EAAJdzda65GzqXxZTFYtGJEydUtmxZFq4AUChWq1Vnz55VaGioPDyu7+5sfghP/vEew0J45O2bSmwI4yJyDYCjyLWih2mxxdSJEycuW7ofAAojMTFRVapUcaoOi0HThyw8+o//IdcAXC9yreigc1lMlS1bVpJ0bGd1mcuU7D/EuNyDtSNc3QQUQTnK1vdaZfv7AyhKyDVcDbmGgpBrRQ+dy2Iqf8qQuYyHzGUJYdjzMpVydRNQFP3vIQgjphxarB6yGLDcuhF1wD2Qa7gacg0FIteKHDqXAACH5cqkXANeNm1EHQAAOItcM0bJ7loDAAAAAAzByCUAwGFMHwIAuBNyzRh0LgEADsuVMVN/cp1vCgAATiPXjFGyu9YAAAAAAEMwcgkAcBjThwAA7oRcM0bJvnoAAAAAgCEYuQQAOCzX6qFcA+7OGlEHAADOIteMQecSAOAwq0yyGLDwgbWEvw8MAFA0kGvGKNldawAAAACAIRi5BAA4jOlDAAB3Qq4Zg84lAMBhFqtJFqvzU3+MqAMAAGeRa8Yo2V1rAAAAAIAhGLkEADgsVx7KNeD+pBF1AADgLHLNGHQuAQAOY/oQAMCdkGvGKNldawAAAACAIRi5BAA4zCIPWQy4P2lEHQAAOItcMwadSwCAw3KtJuUaMPXHiDoAAHAWuWaMkt21BgAAAAAYgpFLAIDDWPgAAOBOyDVjMHIJAAAAAHAaI5cAAIdZrR6yWJ2/P2k1oA4AAJxFrhmDziUAwGG5MilXBix8YEAdAAA4i1wzRsnuWgMAAAAADMHIJQDAYRarMYsWWKwGNAYAACeRa8agcwkAcJjFoGdTjKgDAABnkWvGKNlXDwAAAAAwBCOXAACHWWSSxYBFC4yoAwAAZ5FrxqBzCQBwWK7VpFwDnk0xog4AAJxFrhmDabEAAAAAAKcxcgkAcBgLHwAA3Am5ZoySffUAAAAAAEMwcgkAcJhFJmPeB1bCFz4AABQN5Jox6FwCABxmNWhVPWsJD2EAQNFArhmDabEAAAAA4AIbN27U/fffr9DQUJlMJi1btsx2LDs7W88//7wiIiLk7++v0NBQ9enTRydOnLCrIyUlRb169ZLZbFZgYKAGDBigjIwMuzK7d+/WPffcI19fX4WFhWny5MmXteWTTz5R3bp15evrq4iICK1atcrh66FzCQBwmMVqMmxzhLuFMACgaHBVrp07d06NGzfW7NmzLzt2/vx57dy5U6NHj9bOnTv1+eef6+DBg3rggQfsyvXq1Uv79u1TbGysVq5cqY0bN2rw4MG24+np6Wrfvr2qVaumuLg4vfHGGxo7dqzeffddW5nNmzfrkUce0YABA/TTTz+pa9eu6tq1q/bu3evQ9TAtFgDgMFetqpcfwv3791e3bt3sjl0awo0bN9aZM2f0zDPP6IEHHtCOHTts5Xr16qWTJ08qNjZW2dnZeuyxxzR48GAtXrxY0sUQjoqK0ty5c7Vnzx71799fgYGBtrDOD+FJkybpvvvu0+LFi9W1a1ft3LlTDRs2dPJXAQDcbK7KtY4dO6pjx44FHgsICFBsbKzdvrfeekv/+Mc/lJCQoKpVq+rAgQNavXq1fvzxRzVv3lySNGvWLHXq1ElvvvmmQkNDtWjRImVlZemDDz6Qt7e3GjRooPj4eE2dOtWWazNmzFCHDh00YsQISdKECRMUGxurt956S3Pnzi309dC5BAAUG+4WwgAA95Senm732cfHRz4+Pk7Xm5aWJpPJpMDAQEnSli1bFBgYaMs0SYqKipKHh4e2bdumBx98UFu2bFHLli3l7e1tKxMdHa3XX39dZ86cUbly5bRlyxYNHz7c7ruio6PtZggVBtNiAQAOM3r6UHp6ut124cIFQ9rpaAjnlykohA8ePKgzZ87YykRFRdl9V3R0tLZs2WJIuwEAN5fRuRYWFqaAgADbNmnSJKfbmJmZqeeff16PPPKIzGazJCkpKUlBQUF25by8vFS+fHklJSXZygQHB9uVyf98rTL5xwuLkUsAgMMsBq2ql19HWFiY3f6XX35ZY8eOdapuZ0I4PDzcrsylIVyuXDnDQhgAUDQYnWuJiYm27JHk9Khldna2Hn74YVmtVr399ttO1XUj0bkEALhcSQ1hAIB7MpvNdrnmjPxMO3bsmNatW2dXb0hIiE6dOmVXPicnRykpKQoJCbGVSU5OtiuT//laZfKPFxbTYgEADjN6+lB+COdvznQuLw3h2NjYIh3CAICiwVWrxV5Lfqb9+uuv+vbbb1WhQgW745GRkUpNTVVcXJxt37p162SxWNSiRQtbmY0bNyo7O9tWJjY2VnXq1FG5cuVsZdauXWtXd2xsrCIjIx1qL51LAIDDCGFjQhgAUDS4KtcyMjIUHx+v+Ph4SdKRI0cUHx+vhIQEZWdn66GHHtKOHTu0aNEi5ebmKikpSUlJScrKypIk1atXTx06dNCgQYO0fft2/fDDD4qJiVHPnj0VGhoqSXr00Ufl7e2tAQMGaN++fVq6dKlmzJhht4DPM888o9WrV2vKlCn6+eefNXbsWO3YsUMxMTEOXQ+dSwBAseFuIQwAKNl27Nih2267Tbfddpskafjw4brttts0ZswYHT9+XMuXL9fvv/+uJk2aqHLlyrZt8+bNtjoWLVqkunXrql27durUqZPuvvtuu3dYBgQEaM2aNTpy5IiaNWumZ599VmPGjLF7F+add96pxYsX691331Xjxo316aefatmyZQ6/XotnLgEADjNq1NHROnbs2KE2bdrYPud3+Pr27auxY8dq+fLlkqQmTZrYnffdd9+pdevWkvJCOCYmRu3atZOHh4e6d++umTNn2srmh/CQIUPUrFkzVaxY8YohPGrUKP3nP/9RrVq1riuEAQBFg6tyrXXr1rJarVc8frVj+cqXL297V/OVNGrUSJs2bbpqmR49eqhHjx7X/L6roXMJACg23C2EAQBwJ3QuAQAOc9UdXgAAbgRyzRh0LgEADrNKhrwP7NrjjAAA3HjkmjFY0AcAAAAA4DRGLgEADmP6EADAnZBrxqBzCQBwGCEMAHAn5JoxmBYLAAAAAHAaI5cAAIdxhxcA4E7INWPQuQQAOIwQBgC4E3LNGEyLBQAAAAA4jZFLAIDDrFaTrAbcnTWiDgAAnEWuGYORSwAAAACA0xi5BAA4zCKTLDLg2RQD6gAAwFnkmjHoXAIAHMbCBwAAd0KuGcOl02Jbt26toUOHurIJhVa9enVNnz7d1c1wG3u2+mtMn3A9clsDRYc20eavAy4rk/Crj17uG64H60TogVsj9FTH2jr1e6nLylmt0ku9ahRYz6nfS2l073A9UKORHo5ooPfGhyo3x/78XZvLaEj72rqveiP1u7Oe1iwtb+i1wnXu73daH27brxWHd2vGyl9Vp8l5VzcJbo5cK7mMyLUZI6uoX2Q93V+jkR5u2FAv9wtXwq8+dnVEhza5bFu/LNCuTNYFk+a/FqLet9fXfdUbqc8/6uub/yPbirOHY5L1zYldenzc8QKOWjXxo8P65sQuRXZIu+ltAy7FyCVcIvO8h2o0+EvRj6Ro/IDwy46fOOqt4V1rqUPPP9X7uSSVLpurYwd95e1rvazsF+9VkqmAm0S5udLoPjVUrlKOpi3/VSmnvPTG09XkWcqq/i+elCQlJXhrdO9wde7zp56ffUw/bSqrac+FqXxwtpq3Pmv4dePmafXAGQ1++YRmvVBFP+8srQcH/aFXFh/WgHvqKO3Py29SwDEsfADYMyLXajX6S227nVGlW7J19oynPpoSov88cqs+3LZfnp4X63p2WoKat0m3fS5jzrX7rlf+XV2pp700bEqCQsOzlJLsJauF/60VV7Ubn1fnf6Xo8D7fAo8/OOi0rJf/8wgOIteMQefyErm5uTKZTPLwYJ2jG+32tmd1e9srd94WvFZZ/2ibroGjT9r2hVbPuqzcob1++uydSpr19S96pElDu2M7N5RVwi++em3pPpWrlKNbJfUZeVLvvxKq3s8mqZS3VSsXVlBI1Sz9++UTkqSqtS5o33Z/ff5uJTqXxVy3wae1enF520j0zOer6B/t0hX9SIo+fivYxa0r/pg+VDyQazePEbnW6V9/2v47JEzq+/xJPRFVV8mJ3nZly5hzVT7ob9Nw/ufH78pqz9YyWrBlv8zlcv9X1+X5ieLBt3Sunn/rmKaPqKJHnkm+7HiNBn+p+7//0FMda2nJrv0uaKH7INeM4fK0sVgsGjlypMqXL6+QkBCNHTvWdmzq1KmKiIiQv7+/wsLC9OSTTyojI8N2vHXr1jKZTJdtR48eLdT5CxYsUGBgoJYvX6769evLx8dHCQkJOnXqlO6//375+fkpPDxcixYtuqzdCQkJ6tKli8qUKSOz2ayHH35YyckX/0ffr18/de3a1e6coUOHqnXr1rbPn376qSIiIuTn56cKFSooKipK586dc+4HdQMWi7R9rVm31Lig/zxSQw9HNNDTnWtdNsUo87xJrw2ppiGv/F5gyO7f4a/qdTNVrtLFY81bn9X5s546djDv7t+BOH/ddk+G3XnNWp/VgTj/G3BluFm8SllUq9F57dxU1rbPajXpp01lVb8ZU2NxY5Fr5NrfFTbXLpV53kNrlpZXSNULqhSabXfsrZduUY8GDfVUp1r65v/K241abV0ToFqNzuuTOUF6tGl99b+7rt4dF6oLf5Xsf/AWVzGvHtf2tWb9dEme5fPxs+iF2cc0+6VbdOYPZuSgaHB55/LDDz+Uv7+/tm3bpsmTJ2v8+PGKjY2VJHl4eGjmzJnat2+fPvzwQ61bt04jR460nfv555/r5MmTtq1bt26qU6eOgoODC3W+JJ0/f16vv/665s2bp3379ikoKEj9+vVTYmKivvvuO3366aeaM2eOTp06ZTvHYrGoS5cuSklJ0YYNGxQbG6vDhw/rn//8Z6Gv++TJk3rkkUfUv39/HThwQOvXr1e3bt1kvcK8hgsXLig9Pd1uc1epp7301zlPLX0rSM3bnNWk/zusuzqkafzA6tq95WKn752xt6h+83O6s0PBv8WZP7xUrpJ9IAdWzLYdu1KZcpWydf6sJ0FcjJnL58rTS0r9w35yxpnTXnY3G3D98qcPGbG5G3KNXPu7wuaaJK1YUEFdakaoS81G+nGdWZOWHFIp74u/YZ8RJ/XS3GOatOSQ7u6Upln/qaIv369oO37ymLf2/eivowd9Neb9o3p83HF9/1WgZr1Y5aZdL4zRqssZ1Yz4Sx9Mqlzg8X+PPa79O/y15Zsr36RA4ZFrxnD5tNhGjRrp5ZdfliTVqlVLb731ltauXat7773XblGE6tWra+LEiXr88cc1Z84cSVL58hcfTp82bZrWrVunbdu2yc/PT5Kueb4kZWdna86cOWrcuLEk6ZdfftHXX3+t7du36/bbb5ckvf/++6pXr57tnLVr12rPnj06cuSIwsLCJEkLFy5UgwYN9OOPP9rOu5qTJ08qJydH3bp1U7Vq1SRJERERVyw/adIkjRs37pr1ugOrJe//Rkanq9vgPyRJtzb8S/t3+OurhRXVKPKctnxjVvwPZTVnzUEXthQouawGTR9yxxAm18i1vytMruVr2+2MmrY8q5RTpfTp20F65d/VNe3LX23PZvYadnE0uWbEX8o876FP3g5S14Gnbd9lMkkvvHVM/ua8Lx489rgmDqqupyb9Lh8/Hs4rDiqFZumJ8Sf0Ys8ayr5w+VjQHe3T1OSuDD3ZvrYLWueeyDVjuHzkslGjRnafK1eubLub+u2336pdu3a65ZZbVLZsWfXu3Vt//vmnzp+3n9b29ddf64UXXtDSpUtVu/bF/5EV5nxvb2+7Nhw4cEBeXl5q1qyZbV/dunUVGBhoVyYsLMwWwJJUv359BQYG6sCBA4W67saNG6tdu3aKiIhQjx499N577+nMmTNXLP/iiy8qLS3NtiUmJhbqe4qjvFEnq6rVzrTbH1YrU6eO5037iP+hrE4e9Va3uhHqGNZYHcPy/hE1YVB1jeheU5JUrlLOZdNEUk+Xsh27Upkzf5RS6bK5BHAxlp7iqdwcKfBvo5TlKubYRq2BG4VcI9f+rjC5ls/fbNEtNbIUccc5jXrvqBJ/89EPV5k+W7fpeZ0+6a2sC3n/oC0fnKMKIdm2jqUkVa2VKavVpNMnmTpZXNRs9JfKVcrR7G9+0aqEXVqVsEuN7zynLgNOa1XCLjVteVaVq2fp85/32o5L0uj3jmryp7+5uPUoyVzeuSxVyv4vOpPJJIvFoqNHj+q+++5To0aN9NlnnykuLk6zZ8+WJGVlXXwwff/+/erZs6dee+01tW/f3ra/sOf7+fnJVNBSo07y8PC4bCpQdvbF6Zeenp6KjY3V119/rfr162vWrFmqU6eOjhw5UmB9Pj4+MpvNdpu7KuVtVe3G5/X7Ifvl148f9lFQlbzf8J8xyZq79qDejr24SXlTRJ6dliBJqt/8nI7+7KvU0xc7Ezs3llXpsrmq+r+Ar9fsnOK/L2P3PTs3llW9ZjwjVJzlZHvo192lddvdFxfXMJmsanJ3hvbHlXZhy9yHVXmvAXJ6c/WF3ADkGrn2d4XJtYJYrZKsJmVnXfmfa4f2+alMYI68ffL+f9Pg9nNKSSqlv85dPOf3Qz7y8LCqYuUrfxeKlvhNZTS4TW09ce/F7WC8n9Z9Xk5P3Ftb/zcjWI+3sz8uSe+MDdWUYWHXqB0FIdeM4fLO5ZXExcXJYrFoypQpuuOOO1S7dm2dOHHCrszp06d1//33q3v37ho2bJjD5xekbt26ysnJUVxcnG3fwYMHlZqaavtcr149JSYm2t1l3b9/v1JTU1W/fn1JUqVKlXTy5MUV4SQpPj7e7rPJZNJdd92lcePG6aeffpK3t7e++OKLa7bRHfx1zkOH9vrp0N68qV5Jid46tNfP9r6vHk+e0oblgVq1qLyOH/HWlx9U1NbYAN3fN2/aT/mgHFWvm2m3SVLQLdkKqZr3j6ymrc6qau1MTX6qqg7t89WO9WW14PUQ3d/vtC2E7+vzp04e89a8CZWV8KuPViyooI0rAm3TllB8ff5uRXV8NEVRPVIUVjNTT732u3xLW7RmCe96M4JFJsO2koJcc2/O5trJY95aMitIv+7OO2ffj6X1yuDq8vaz6B/t8p5H3brGrK8XldfRn311/Ii3VnxYQUtmBqnLY6dt7Wjz4BmVLZejKcOq6tgvPtqz1V/zJoaqfc8UZuQUI3+d89Sxg352W+Z5D509k7f/zB+lLjsuSaeOeys50ecataMg5Joxiuz8sJo1ayo7O1uzZs3S/fffrx9++EFz5861K9O9e3eVLl1aY8eOVVJSkm1/pUqVCnV+QerUqaMOHTro3//+t95++215eXlp6NChtuddJCkqKkoRERHq1auXpk+frpycHD355JNq1aqVmjdvLklq27at3njjDS1cuFCRkZH66KOPtHfvXt12222SpG3btmnt2rVq3769goKCtG3bNv3xxx92z8C4s192ldbIh2raPr8z9hZJ0r0Pp+i56Qm6q2Oann7tdy15K1hvj66iKjUuaPR7R9SwReFHFD09pfELD2vWC2Eadn9t+Za2KKpHivqOuPiPo5CqWZrw3yN65+VQLXu/kipWztawNxN5DYkb2LC8nAIq5KrPiCSVq5Sjw/v89FKvcNvUaOBmI9fcm7O55u1j0d5tZfTFe5WUkeapwIo5irgjQ9O+/FWBFfOm+HuWsmrFgop6Z6yPrNa8V5n8e+wJdex18RUmfv4WTVpySHNGVdFTHeqobLkctXwgVf1G2t8YAIAboch2Lhs3bqypU6fq9ddf14svvqiWLVtq0qRJ6tOnj63Mxo0bJcm2cEC+I0eOFOr8K5k/f74GDhyoVq1aKTg4WBMnTtTo0aNtx00mk7788ks99dRTatmypTw8PNShQwfNmjXLViY6OlqjR4/WyJEjlZmZqf79+6tPnz7as2ePJMlsNmvjxo2aPn260tPTVa1aNU2ZMkUdO3Z06ncrLhrfmaFvTsRftUz0IymKfiSl0HUWVF9wlWxN/OjwNdsyJ/aXQn8Pio/l8ytq+fyK1y4Ih/GyaceRa+7N2VyrEJJzzby6vc1Z3d7m2jc/q9a6oNeWHrpmORQvl968KEh0aOOb1BL3RK4Zw2S90hrhKNLS09MVEBCgM7/UkLlskZ3dDBeJDm3i6iagCMqxZmu9vlRaWtp1P9+W/3dPo0+ek2dp56de5Z6/oN093nSqTXAP5BquhlxDQci1oqfIjlwCAIoui9UkkwF3Z41Y9h0AAGeRa8agcwkAcFj+qnhG1AMAgKuRa8Zg3gkAAAAAwGmMXAIAHMbCBwAAd0KuGYPOJQDAYYQwAMCdkGvGYFosAAAAAMBpjFwCABzGqnoAAHdCrhmDziUAwGGsqgcAcCfkmjGYFgsAAAAAcBojlwAAh+Xd4TVi4QMDGgMAgJPINWMwcgkAAAAAcBojlwAAh7FkOwDAnZBrxmDkEgDgMKuBGwAAruaqXNu4caPuv/9+hYaGymQyadmyZfbtslo1ZswYVa5cWX5+foqKitKvv/5qVyYlJUW9evWS2WxWYGCgBgwYoIyMDLsyu3fv1j333CNfX1+FhYVp8uTJl7Xlk08+Ud26deXr66uIiAitWrXKwauhcwkAKEbcLYQBACXbuXPn1LhxY82ePbvA45MnT9bMmTM1d+5cbdu2Tf7+/oqOjlZmZqatTK9evbRv3z7FxsZq5cqV2rhxowYPHmw7np6ervbt26tatWqKi4vTG2+8obFjx+rdd9+1ldm8ebMeeeQRDRgwQD/99JO6du2qrl27au/evQ5dD51LAIDD8qcPGbE5wt1CGABQNLgq1zp27KiJEyfqwQcfLKBNVk2fPl2jRo1Sly5d1KhRIy1cuFAnTpyw3Vw9cOCAVq9erXnz5qlFixa6++67NWvWLC1ZskQnTpyQJC1atEhZWVn64IMP1KBBA/Xs2VNPP/20pk6davuuGTNmqEOHDhoxYoTq1aunCRMmqGnTpnrrrbccuh46lwAAx7lo/pC7hTAAoIgwONfS09PttgsXLjjcpCNHjigpKUlRUVG2fQEBAWrRooW2bNkiSdqyZYsCAwPVvHlzW5moqCh5eHho27ZttjItW7aUt7e3rUx0dLQOHjyoM2fO2Mpc+j35ZfK/p7DoXAIAXK6khjAAwD2FhYUpICDAtk2aNMnhOpKSkiRJwcHBdvuDg4Ntx5KSkhQUFGR33MvLS+XLl7crU1Adl37HlcrkHy8sVosFADjOoFX19L86wsLC7Ha//PLLGjt2rENVGRnC4eHhl9WRf6xcuXKGhTAAoIgwONcSExNlNpttu318fJyvuxigcwkAcFjey6aNqUcquSEMACgajM41s9lsl2vXIyQkRJKUnJysypUr2/YnJyerSZMmtjKnTp2yOy8nJ0cpKSm280NCQpScnGxXJv/ztcrkHy8spsUCAFwuP4Tzt+vpXF4awpe6NByLWggDAHAl4eHhCgkJ0dq1a2370tPTtW3bNkVGRkqSIiMjlZqaqri4OFuZdevWyWKxqEWLFrYyGzduVHZ2tq1MbGys6tSpo3LlytnKXPo9+WXyv6ew6FwCABzmqlX1rqY4hjAAoGhwVa5lZGQoPj5e8fHxkvLWD4iPj1dCQoJMJpOGDh2qiRMnavny5dqzZ4/69Omj0NBQde3aVZJUr149dejQQYMGDdL27dv1ww8/KCYmRj179lRoaKgk6dFHH5W3t7cGDBigffv2aenSpZoxY4aGDx9ua8czzzyj1atXa8qUKfr55581duxY7dixQzExMQ5dD9NiAQCOs5psz5U4XY8DMjIy9Ntvv9k+54dw+fLlVbVqVVsI16pVS+Hh4Ro9evQVQ3ju3LnKzs4uMITHjRunAQMG6Pnnn9fevXs1Y8YMTZs2zfa9zzzzjFq1aqUpU6aoc+fOWrJkiXbs2GH3uhIAQDHiolzbsWOH2rRpY/uc3+Hr27evFixYoJEjR+rcuXMaPHiwUlNTdffdd2v16tXy9fW1nbNo0SLFxMSoXbt28vDwUPfu3TVz5kzb8YCAAK1Zs0ZDhgxRs2bNVLFiRY0ZM8buNVx33nmnFi9erFGjRuk///mPatWqpWXLlqlhw4YOXY/JajVidjFutvT0dAUEBOjMLzVkLssANOxFhzZxdRNQBOVYs7VeXyotLe26nwPJ/7un+vuj5VHa99onXIPlfKaODphQ6DatX7/eLoTz5Yew1WrVyy+/rHfffdcWwnPmzFHt2rVtZVNSUhQTE6MVK1bYhXCZMmVsZXbv3q0hQ4boxx9/VMWKFfXUU0/p+eeft/vOTz75RKNGjdLRo0dVq1YtTZ48WZ06dXLi1yjZyDVcDbmGgrhDrrkbRi4BAA4zeuGDwmrdurWudk/UZDJp/PjxGj9+/BXLlC9fXosXL77q9zRq1EibNm26apkePXqoR48eV28wAKBYcFWuuRtuDQIAAAAAnMbIJQDAcdb/bUbUAwCAq5FrhqBzCQBwmFErvRq5WiwAANeLXDMG02IBAAAAAE5j5BIAcH1K+NQfAICbIdecVqjO5fLlywtd4QMPPHDdjQEAFA/FffoQuQYAuFRxz7WiolCdy/yXT1+LyWRSbm6uM+0BAOCGI9cAADBeoTqXFovlRrcDAFCcFPNV9cg1AICdYp5rRYVTC/pkZmYa1Q4AQLFiMnArOsg1ACip3DPXbjaHO5e5ubmaMGGCbrnlFpUpU0aHDx+WJI0ePVrvv/++4Q0EAOBGItcAADCGw53LV155RQsWLNDkyZPl7e1t29+wYUPNmzfP0MYBAIooq4Gbi5FrAAB3yjVXcrhzuXDhQr377rvq1auXPD09bfsbN26sn3/+2dDGAQBwo5FrAAAYw+H3XB4/flw1a9a8bL/FYlF2drYhjQIAFHFutPABuQYAcKdccyWHRy7r16+vTZs2Xbb/008/1W233WZIowAARZzVZNzmYuQaAMCdcs2VHB65HDNmjPr27avjx4/LYrHo888/18GDB7Vw4UKtXLnyRrQRAIAbhlwDAMAYDo9cdunSRStWrNC3334rf39/jRkzRgcOHNCKFSt077333og2AgCKGKvVuM3VyDUAgDvlmis5PHIpSffcc49iY2ONbgsAoLhws2dTyDUAKOHcLNdc5bo6l5K0Y8cOHThwQFLe8yrNmjUzrFEAANxs5BoAAM5xuHP5+++/65FHHtEPP/ygwMBASVJqaqruvPNOLVmyRFWqVDG6jQCAosaoRQuKwMIH5BoAwJ1yzZUcfuZy4MCBys7O1oEDB5SSkqKUlBQdOHBAFotFAwcOvBFtBAAUMSarcZurkWsAAHfKNVdyeORyw4YN2rx5s+rUqWPbV6dOHc2aNUv33HOPoY0DAOBGI9cAADCGw53LsLCwAl8qnZubq9DQUEMaBQAo4txo4QNyDQDgTrnmSg5Pi33jjTf01FNPaceOHbZ9O3bs0DPPPKM333zT0MYBAIooN3rZNLkGAHCnXHOlQo1clitXTibTxR/q3LlzatGihby88k7PycmRl5eX+vfvr65du96QhgIAYBRyDQAA4xWqczl9+vQb3AwAQLFSzKcPkWsAADvFPNeKikJ1Lvv27Xuj2wEAwE1DrgEAYDyHF/S5VGZmprKysuz2mc1mpxoEACgG3PQOL7kGACWUm+bazebwgj7nzp1TTEyMgoKC5O/vr3LlytltAIASwGrg5mLkGgDAnXLNlRzuXI4cOVLr1q3T22+/LR8fH82bN0/jxo1TaGioFi5ceCPaCADADUOuAQBgDIenxa5YsUILFy5U69at9dhjj+mee+5RzZo1Va1aNS1atEi9evW6Ee0EABQlRi23XgSWbCfXAADulGuu5PDIZUpKimrUqCEp7zmUlJQUSdLdd9+tjRs3Gts6AECRZLIat7kauQYAcKdccyWHO5c1atTQkSNHJEl169bVxx9/LCnvzm9gYKChjQMA4EYj1wAAMIbDncvHHntMu3btkiS98MILmj17tnx9fTVs2DCNGDHC8AYCAIogN1r4gFwDALhTrrmSw89cDhs2zPbfUVFR+vnnnxUXF6eaNWuqUaNGhjYOAIAbjVwDAMAYTr3nUpKqVaumatWqGdEWAABcjlwDAOD6FKpzOXPmzEJX+PTTT193YwAAxYNJxixa4Ko19cg1AMClinuuFRWF6lxOmzatUJWZTCZC+CZ7sHaEvEylXN0MFDGetWq4ugkogqy5F6RDrm5F0UCuFV09ojrIy8PH1c1AEWPyOunqJqAIMlmtUo6rW4FLFWpBnyNHjhRqO3z48I1uLwCgKMh/H5gRmwNyc3M1evRohYeHy8/PT7feeqsmTJggq/Xi7War1aoxY8aocuXK8vPzU1RUlH799Ve7euLi4nTnnXfqzz//1JkzZ9S2bVvt2bPHLtO+/PJL3XLLLfL19VVYWJgmT55syE8HACiCinmupaSkqFevXjKbzQoMDNSAAQOUkZFhV2b37t265557bmiuObxaLAAArlpV7/XXX9fbb7+tt956SwcOHNDrr7+uyZMna9asWbYykydP1syZMzV37lxt27ZN/v7+io6OVmZmpq1Mr169tG/fPsXGxmrlypXauHGjBg8ebDuenp6u9u3bq1q1aoqLi9Mbb7yhsWPH6t1333XwhwIAFAvkmiGcXtAHAICbZfPmzerSpYs6d+4sSapevbr+7//+T9u3b5eUd3d3+vTpGjVqlLp06SJJWrhwoYKDg7Vs2TL17NlTBw4c0OrVq/Xjjz+qefPmkqRZs2apU6dOevPNNxUaGqpFixYpKytLH3zwgby9vdWgQQPFx8dr6tSpdmENAIAz3C3XGLkEADjO4Du86enpdtuFCxcK/No777xTa9eu1S+//CJJ2rVrl77//nt17NhRUt5jHElJSYqKirKdExAQoBYtWmjLli2SpC1btigwMNAWwFLeK0g8PDy0bds2W5mWLVvK29vbViY6OloHDx7UmTNnrvdXAwAUVeSaIRi5BAA4zGQ1aFW9/9URFhZmt//ll1/W2LFjLyv/wgsvKD09XXXr1pWnp6dyc3P1yiuvqFevXpKkpKQkSVJwcLDdecHBwbZjSUlJCgoKsjvu5eWl8uXL25UJDw+/rI78Y+XKlbuOqwUAFFXkmjG5RucSAOByiYmJMpvNts8+PgWvFvrxxx9r0aJFWrx4sW1Kz9ChQxUaGqq+ffverOYCAHBVJTXXrmta7KZNm/Svf/1LkZGROn78uCTpv//9r77//ntDGwcAKKIMnj5kNpvttiuF8IgRI/TCCy+oZ8+eioiIUO/evTVs2DBNmjRJkhQSEiJJSk5OtjsvOTnZdiwkJESnTp2yO/7dd9/p9OnTmj59uo4fP66QkBDt2LHDLtfy68yvBwDgRtws13JycpSSkmJXpqA6Lv0OIzjcufzss88UHR0tPz8//fTTT7b5w2lpaXr11VcNaxgAoAhz0ap658+fl4eHfXR5enrKYrFIksLDwxUSEqK1a9fajqenp2vbtm2KjIyUJEVGRio1NVVxcXGS8nKtQ4cOslqtOnr0qC5cuKDIyEj9/PPPmjhxoq2e2NhY1alThymxAOCO3CjXJGndunWyWCxq0aKFrczGjRuVnZ1tK3Mjcs3hzuXEiRM1d+5cvffeeypVqpRt/1133aWdO3ca1jAAAP7u/vvv1yuvvKKvvvpKR48e1RdffKGpU6fqwQcflCSZTCYNHTpUEydO1PLly7Vnzx716dNHoaGh6tq1qySpXr166tChgwYNGqTt27frhRdeULly5fTII4/YFjp49NFH5efnpw0bNmjfvn1aunSpZsyYoeHDh7vq0gEAbuhG5NoPP/ygmJgY9ezZU6GhoZLycs3b21sDBgy4obnm8DOXBw8eVMuWLS/bHxAQoNTUVCPaBAAo4oxe+KCwZs2apdGjR+vJJ5/UqVOnFBoaqn//+98aM2aMrczIkSN17tw5DR48WKmpqbr77ru1evVq+fr62sosWrRIMTExateunTIyMtSjRw+9++67qly5sqS8TFu4cKHuu+8+NWvWTBUrVtSYMWN4DQkAuCl3yjUPDw91795dM2fOtB0PCAjQmjVrNGTIkBuaaw53LkNCQvTbb7+pevXqdvu///571ahRw6h2AQCKMqspbzOiHgeULVtW06dP1/Tp069YxmQyafz48Ro/fvwVy5QvX16LFy+WJNWoUUODBw9WmTJl7MqcPn1adevW1f79+x1qIwCgGHKjXLuSRo0aadOmTQ61z1EOT4sdNGiQnnnmGW3btk0mk0knTpzQokWL9Nxzz+mJJ564EW0EAOCGIdcAADCGwyOXL7zwgiwWi9q1a6fz58+rZcuW8vHx0XPPPaennnrqRrQRAFDUXMeiBVesx8XINQCAO+WaKzncuTSZTHrppZc0YsQI/fbbb8rIyFD9+vUvm04EAEBxQK4BAGAMhzuX+by9vVW/fn0j2wIAKCZctfDBjUSuAUDJ5Y655goOdy7btGkjk+nKD6quW7fOqQYBAIoBN5o+RK4BANwp11zJ4c5lkyZN7D5nZ2crPj5ee/fuVd++fY1qFwAANwW5BgCAMRzuXE6bNq3A/WPHjlVGRobTDQIAFAMGTR8qCnd4yTUAgDvlmis5/CqSK/nXv/6lDz74wKjqAABFmdXArYgi1wCgBCkBuXYzGNa53LJli3x9fY2qDgAAlyLXAABwjMPTYrt162b32Wq16uTJk9qxY4dGjx5tWMMAAEWYGy18QK4BANwp11zJ4c5lQECA3WcPDw/VqVNH48ePV/v27Q1rGACg6HKnJdvJNQCAO+WaKznUuczNzdVjjz2miIgIlStX7ka1CQCAm4JcAwDAOA49c+np6an27dsrNTX1BjUHAICbh1wDAMA4Di/o07BhQx0+fPhGtAUAgJuOXAMAwBgOdy4nTpyo5557TitXrtTJkyeVnp5utwEASgA3WrKdXAMAuFOuuVKhn7kcP368nn32WXXq1EmS9MADD8hkMtmOW61WmUwm5ebmGt9KAECR4g4LH5BrAIB87pBrRUGhO5fjxo3T448/ru++++5GtgcAgJuCXAMAwFiF7lxarXnd8FatWt2wxgAAipFifneWXAMA2CnmuVYUOPQqkkunCwEASjA3edk0uQYAkOQ2ueZqDnUua9eufc0gTklJcapBAADcLOQaAADGcahzOW7cOAUEBNyotgAAigl3WfiAXAMASO6Ta67mUOeyZ8+eCgoKulFtAQAUF24yfYhcAwBIcptcc7VCv+eS51IAAO6EXAMAwFgOrxYLAIA7TB8i1wAA+dwh14qCQncuLRbLjWwHAKA4cYPpQ+QaAMDGDXKtKCj0tFgAAAAAAK7EoQV9AACQxB1eAIB7IdcMwcglAAAAAMBpjFwCABzGwgcAAHdCrhmDziUAwHFMHwIAuBNyzRBMiwUAAAAAOI2RSwCA47jDCwBwJ+SaIehcAgAcxrMpAAB3Qq4Zg2mxAAAAAACnMXIJAHAc04cAAO6EXDMEnUsAgMOYPgQAcCfkmjGYFgsAAAAAcBojlwAAxzF9CADgTsg1QzByCQAoVo4fP65//etfqlChgvz8/BQREaEdO3bYjlutVo0ZM0aVK1eWn5+foqKi9Ouvv9rVkZKSol69eslsNiswMFADBgxQRkaGXZndu3frnnvuka+vr8LCwjR58uSbcn0AgJLFnXKNziUAwHFWAzcHnDlzRnfddZdKlSqlr7/+Wvv379eUKVNUrlw5W5nJkydr5syZmjt3rrZt2yZ/f39FR0crMzPTVqZXr17at2+fYmNjtXLlSm3cuFGDBw+2HU9PT1f79u1VrVo1xcXF6Y033tDYsWP17rvvOvhDAQCKBXLNEEyLBQA4zPS/zYh6HPH6668rLCxM8+fPt+0LDw+3/bfVatX06dM1atQodenSRZK0cOFCBQcHa9myZerZs6cOHDig1atX68cff1Tz5s0lSbNmzVKnTp305ptvKjQ0VIsWLVJWVpY++OADeXt7q0GDBoqPj9fUqVPtwhoA4B7INWMwcgkAcLn09HS77cKFCwWWW758uZo3b64ePXooKChIt912m9577z3b8SNHjigpKUlRUVG2fQEBAWrRooW2bNkiSdqyZYsCAwNtASxJUVFR8vDw0LZt22xlWrZsKW9vb1uZ6OhoHTx4UGfOnDH02gEA7qek5hqdSwCA4wyePhQWFqaAgADbNmnSpAK/9vDhw3r77bdVq1YtffPNN3riiSf09NNP68MPP5QkJSUlSZKCg4PtzgsODrYdS0pKUlBQkN1xLy8vlS9f3q5MQXVc+h0AADdCrhmCabEAAIcZ/T6wxMREmc1m234fH58Cy1ssFjVv3lyvvvqqJOm2227T3r17NXfuXPXt29f5BgEASiRyzRiMXAIAXM5sNtttVwrhypUrq379+nb76tWrp4SEBElSSEiIJCk5OdmuTHJysu1YSEiITp06ZXc8JydHKSkpdmUKquPS7wAA4EpKaq7RuQQAOM5Fq+rdddddOnjwoN2+X375RdWqVZOUtwhCSEiI1q5dazuenp6ubdu2KTIyUpIUGRmp1NRUxcXF2cqsW7dOFotFLVq0sJXZuHGjsrOzbWViY2NVp04duxX8AABuglwzBJ1LAMD1uckBLEnDhg3T1q1b9eqrr+q3337T4sWL9e6772rIkCGSJJPJpKFDh2rixIlavny59uzZoz59+ig0NFRdu3aVlHdHuEOHDho0aJC2b9+uH374QTExMerZs6dCQ0MlSY8++qi8vb01YMAA7du3T0uXLtWMGTM0fPjw6/21AABFHbnmNJ65BAAUG7fffru++OILvfjiixo/frzCw8M1ffp09erVy1Zm5MiROnfunAYPHqzU1FTdfffdWr16tXx9fW1lFi1apJiYGLVr104eHh7q3r27Zs6caTseEBCgNWvWaMiQIWrWrJkqVqyoMWPG8BoSAICh3C3XTFar1YBHV3GzpaenKyAgQK3VRV6mUq5uDooYz1o1XN0EFEE5uRe09tAMpaWl2S0y4Ij8v3saDn5Vnt6+1z7hGnKzMrX33f841Sa4h/w/W1FVn5SXR8HPJqHkyj1+0tVNQBGUY83WdzmfkWtFCCOXAADHXef0nwLrAQDA1cg1Q9C5RLF3f7/TeuiJUypfKUeH9/tpzqhbdDC+tKubBYM0bHRa3R/5VTVrp6pCxUxNeKmFtnwfaju+asMXBZ73/tsN9NmS2rbPt9+RpEf7/qzqt6YpK8tTe+MrasKoO2zHa9U9o8cG71PN2qmySvrlQDl9MLehjhwKuGHXBsC9NWjyp7r3OqSaddJUodIFTXi+ubZuLHhVxiEjd6vTgwl6d3p9fbn04uyTW2un6bEhB1SrXqosFpM2f1dZ782sr8y/8v4JF14zXT16/6b6jVNkDszSqZOlteqLqlr+MTNYiot/DjmpuzqkqsqtmcrK9ND+OH99MKmKfj+cN4oWXOWCPty8t8BzX3mihjZ9dXExlnsfOq1ug07plvBMnc/w1Kavymn26Ko35ToAic7lTZGUlKTevXtr8+bNKlWqlFJTU13dJLfR6oEzGvzyCc16oYp+3llaDw76Q68sPqwB99RR2p9MF3YHvn45OvJbgNasqqbRE7dddrzXgx3tPjdvkaxnRu7UDxtuse27q+VxPT3iJ334XgPt2llRHp5WVa+RbvcdEyb/oG2bK2v2tMby9LTqX48d0IQ3flDfHh2Um8vaZ39n9PvAULyQa4Xj65urI7+aFbsyTKNei7tiuchWJ1W3QapO/2E/Hbh8xUy9MmurNn4bqrenNFRp/xwNHrpPw0bFa9JLzSVJNeumKvWMt94cd5tOJ/uqXsQZxbywWxaLSSs/Db+h1wdjRLTI0IoPK+mX3f7y8LTqsZHH9cpHv2pwu/q68Jen/jjhrUeaNbI7p+Ojf+ihfyfrx+8uTrvsNjBZ3QYna94rVXQw3l++frkKDsu62ZdTbJFrxqBzeRNMmzZNJ0+eVHx8vAICGAUxUrfBp7V6cXmtWVpekjTz+Sr6R7t0RT+Soo/fCnZx62CEHdtCtGPbld+/dCbF/vmIO+46qd0/VVLSSX9JkoenRf9+arfef7uh1qyqbiuXeOxiIIdVPStzQLb++349nf4jb9R78Yd1NWf+OgWFnNfJ42UMvCKg+CPXCidua5DitgZdtUyFSn/p8eH7NHpoC42dst3u2D/uSlZOjklvv9lQVqtJkvTW5AjN+WijKlc5p5O/+yt2pf2oVNIJf9WNOKM7WyXRuSwmRvWpZfd5yrPVtTR+t2pFnNfe7WVlsZh05g/7G+Z3Rqdq08pyyjzvKUkqE5CjPiOOa2z/mor/4WK+HfmZmVy4ubgdfxMcOnRIzZo1U61atRQUdPWQQeF5lbKoVqPz2rmprG2f1WrST5vKqn6z8y5sGVwlsFymbo9M0ppV1Wz7atZKVcWgTFmtJs2at04ffb5K4ydvVrXwiyOXvyeUUVqqt6I7H5OXl0Xe3rlq3+mYEo6WVXISwVwgF70PDEUDuWYMk8mqZ8fE67NFNZRwpOxlx0uVsign28PWsZSkrAt5nYkGjVKuWK+/f47OpjN7p7gqXTZXknQ2teAxoJoR51Sz4V9avbSibd9t96TLwyRVCMnWu2v36b/bdus/cw6rYmVGLguNXDMEnctC+vTTTxURESE/Pz9VqFBBUVFROnfunH788Ufde++9qlixogICAtSqVSvt3LnTdl716tX12WefaeHChTKZTOrXr58kKTU1VQMHDlSlSpVkNpvVtm1b7dq1y0VXVzyZy+fK00tK/cP+L98zp71UrlKOi1oFV4rqkKC/znvph40Xn8kMCc270dCr3wEtWVhHY1+IVMbZUnpt+iaVKZsXun/9VUovDL1Hbe5N1BdrvtRnq5er2T+SNWbknbIwJbZA+dOHjNjgGuSa6z3U+5Byc01a/nHBI4y74iqqXIUL6tbrkLy8LCpTNkv9njggSSpX8UKB59SLSNE9USe0+stqBR5H0WYyWfX42N+170d/HfvFr8Ay0f/8U8d+9dWBuIuzaipXzZLJQ+o55KTeGVdFrzxeQ2UDczRp0S/yKmW5Wc0v1sg1Y/CvpkI4efKkHnnkEfXv318HDhzQ+vXr1a1bN1mtVp09e1Z9+/bV999/r61bt6pWrVrq1KmTzp49K0n68ccf1aFDBz388MM6efKkZsyYIUnq0aOHTp06pa+//lpxcXFq2rSp2rVrp5SUgu9EXrhwQenp6XYbAHv3djym774NU3aWp22fh0fe3/JLPqqjHzbeot9+KaeprzWVJN3T+rgkyds7V0NH7tT+veU1/MnWei6mlY4dMWvsa5vl7Z178y8EuMHINderWSdVXR4+omkTm0gyFVgm4UhZTZ3QRN0eOazPv/taH638VsknS+vMnz6yFtBfqFYjXaNf36HF79fWT9sr3dD248YYMjFB1Wv/pUlDCl6QydvHojZdUvTNkop2+00mq0p5W/X2y1UVtzFAP/9URq/FhCs0/IIaR569GU0HJPHMZaGcPHlSOTk56tatm6pVy7sTGBERIUlq27atXdl3331XgYGB2rBhg+677z5VqlRJPj4+8vPzU0hI3nNj33//vbZv365Tp07Jxyfv4f0333xTy5Yt06efflrgy0wnTZqkcePG3cjLLHbSUzyVmyMF/m2UslzFHJ35gz/aJU2DRqcVVi1Dr437h93+lD/znslMOHpxyllOtqeSTvirUnDeqGbrqEQFhZzX8Cdb2aafTZ5wuz5euVJ33H1SG9dVuUlXUYywZHuxRq65XoMmKQood0ELvlhr2+fpZdWAp/aryz+PqH+3dpKkDWtu0YY1tyiw3AVlZnrKapW69jyspBP2U/bDqp/VK7O2avWXVbV0gf0zfCgenhyfoBbt0vRcjzo6neRdYJl7Op+Rj59Faz8rb7c/5VTeNOiEXy+uQ5CWUkrpKV6qdAtTYwuFXDMEI5eF0LhxY7Vr104RERHq0aOH3nvvPZ05c0aSlJycrEGDBqlWrVoKCAiQ2WxWRkaGEhISrljfrl27lJGRoQoVKqhMmTK27ciRIzp06FCB57z44otKS0uzbYmJiTfkWouTnGwP/bq7tG67++IdOZPJqiZ3Z2h/HM/JlTTtOx3Trz8HXvbqkF8PBirrgoeqhGXY9nl6WhQUcl6nkvP+nPj45spqlayXBILlf5/zRz7xNzybUqyRa6637usqiundUk/1vce2nf7DR58vulWjh7a4rHzqGR9l/uWlllEnlJ3laTcyWTX8rCbN3qK1q6po4Tt1b+ZlwBBWPTk+QXd2SNXzPWsrOdHniiWj/3laW78NUFqK/TO1+3fkTZGtcmumbV+ZgByZy+fo1O9Xrg+XINcMwfBOIXh6eio2NlabN2/WmjVrNGvWLL300kvatm2bnnjiCf3555+aMWOGqlWrJh8fH0VGRior68p3iTIyMlS5cmWtX7/+smOBgYEFnuPj42O7G4yLPn+3op6bnqhfdpXWwZ/yXkXiW9qiNUvKX/tkFAu+fjkKveVixzC48nnVqJmqs+ne+uNUXufQr3S27ml9XPPmRFx2/l/nS2nV8nD967ED+uOUn04ll9ZDPX+VJH3/Xd7rSn7aEaQBj+/Vk8N2acXnNWQySQ/3+kW5uR7atZOpZXA/5NrN4euXo9Aq52yfQ0LPq0attLy/v5L9dDbdfnQqN8dDZ1J8dDzh4rN09z10RAd2l9dff3nqtn+cVv+Y/Vowp57OZeR1LqrVSNers7Zq57ZKWvZ/NVSufF7nItdiUnqqe/++7mLIxES16ZKicQNv1V/nPFWuUrYk6Vy6p7IuXBwHqlwtUw1bZGh035qX1XH8iK82fxOgx8cmasYL1XT+rKcee+G4fj/kq11bLl8sCrhR6FwWkslk0l133aW77rpLY8aMUbVq1fTFF1/ohx9+0Jw5c9SpUydJUmJiok6fPn3Vupo2baqkpCR5eXmpevXqN6H17mvD8nIKqJCrPiOSVK5Sjg7v89NLvcKVeppV8txFrTpn9PqM722fB8fskSTFfl1V015rJklq1e53ySStX1vw9NX3326o3FyTnnspTj4+uTp4oJxeHHa3MjLy/mH3e0JZjftPpB7te0BTZm+U1Sod+jVQo0feedmrTpCH94EVf+TajVerbqpem7PV9nnQM/slSd9+VeV/z1peW+36qeo18Bf5+eUq8Zi/3nq9kb5bffHvurvanFRg+Sy17XhcbTset+1PPulnm1qLou3+Pn9Ikt745Be7/VOGV1PspxefrYz+5586fbKUdm40qyBvDgvXv8ckavyC32S1SHu2ltVLvWspN6fgZ3phj1wzBp3LQti2bZvWrl2r9u3bKygoSNu2bdMff/yhevXqqVatWvrvf/+r5s2bKz09XSNGjJCfX8Gre+WLiopSZGSkunbtqsmTJ6t27do6ceKEvvrqKz344INq3rz5Tboy97B8fkUtn1/x2gVRLO2Jr6ROrR68apnVK8K1esWV3+eWm+uh99+O0PtvXz6yme+nHUH6aQevVCg0nk0p1si1m2PPTxXVOfK+QpcvqDM4dfxtVz1n8ft1tPj9Og63DUVHh6rNClVuweRbtGDyLVc8fj7DU9NGVte0kUa1rIQh1wxB57IQzGazNm7cqOnTpys9PV3VqlXTlClT1LFjR4WEhGjw4MFq2rSpwsLC9Oqrr+q55567an0mk0mrVq3SSy+9pMcee0x//PGHQkJC1LJlSwUHB9+kqwIAlFTkGgDgRjBZrdYS3r8untLT0xUQEKDW6iIvE1NAYc+zVsFLmKNky8m9oLWHZigtLU1mc8HTqq4l/++eJr1fkae381OGc7MyFf/fl5xqE9xD/p+tqKpPysuDZwVhL/f4SVc3AUVQjjVb3+V8Rq4VIawWCwAAAABwGtNiAQCO49kUAIA7IdcMQecSAOAwVtUDALgTcs0YTIsFAAAAADiNkUsAgOOYPgQAcCfkmiHoXAIAHMb0IQCAOyHXjMG0WAAAAACA0xi5BAA4julDAAB3Qq4Zgs4lAMBhTB8CALgTcs0YTIsFAAAAADiNkUsAgOOYPgQAcCfkmiHoXAIArktJn/oDAHAv5JrzmBYLAAAAAHAaI5cAAMdZrXmbEfUAAOBq5JohGLkEAAAAADiNkUsAgMNYsh0A4E7INWPQuQQAOI5V9QAA7oRcMwTTYgEAAAAATmPkEgDgMJMlbzOiHgAAXI1cMwadSwCA45g+BABwJ+SaIZgWCwAAAABwGiOXAACHsaoeAMCdkGvGoHMJAHAcL5sGALgTcs0QTIsFAAAAADiNziUAwGH504eM2K7Xa6+9JpPJpKFDh9r2ZWZmasiQIapQoYLKlCmj7t27Kzk52e68hIQEde7cWaVLl1ZQUJBGjBihnJwcuzLr169X06ZN5ePjo5o1a2rBggXX31AAQJFHrhmDziUAoNj58ccf9c4776hRo0Z2+4cNG6YVK1bok08+0YYNG3TixAl169bNdjw3N1edO3dWVlaWNm/erA8//FALFizQmDFjbGWOHDmizp07q02bNoqPj9fQoUM1cOBAffPNNzft+gAAJYu75BqdSwCA46wGbg7KyMhQr1699N5776lcuXK2/WlpaXr//fc1depUtW3bVs2aNdP8+fO1efNmbd26VZK0Zs0a7d+/Xx999JGaNGmijh07asKECZo9e7aysrIkSXPnzlV4eLimTJmievXqKSYmRg899JCmTZt2HT8UAKBYINcMQecSAOAwo6cPpaen220XLly44ncPGTJEnTt3VlRUlN3+uLg4ZWdn2+2vW7euqlatqi1btkiStmzZooiICAUHB9vKREdHKz09Xfv27bOV+Xvd0dHRtjoAAO6HXDMGnUsAgMuFhYUpICDAtk2aNKnAckuWLNHOnTsLPJ6UlCRvb28FBgba7Q8ODlZSUpKtzKUBnH88/9jVyqSnp+uvv/66rusDAJQsJTXXeBUJAMBxBi/ZnpiYKLPZbNvt4+NzWdHExEQ988wzio2Nla+vr/PfDQBAPnLNEIxcAgAcZvT0IbPZbLcVFMJxcXE6deqUmjZtKi8vL3l5eWnDhg2aOXOmvLy8FBwcrKysLKWmptqdl5ycrJCQEElSSEjIZavs5X++Vhmz2Sw/Pz8jfj4AQBFDrhmDziUAoFho166d9uzZo/j4eNvWvHlz9erVy/bfpUqV0tq1a23nHDx4UAkJCYqMjJQkRUZGas+ePTp16pStTGxsrMxms+rXr28rc2kd+WXy6wAAwAjumGtMiwUAOO46V8QrsJ5CKlu2rBo2bGi3z9/fXxUqVLDtHzBggIYPH67y5cvLbDbrqaeeUmRkpO644w5JUvv27VW/fn317t1bkydPVlJSkkaNGqUhQ4bY7io//vjjeuuttzRy5Ej1799f69at08cff6yvvvrKgAsGABRJ5Joh6FwCABzm7IuiL63HSNOmTZOHh4e6d++uCxcuKDo6WnPmzLEd9/T01MqVK/XEE08oMjJS/v7+6tu3r8aPH28rEx4erq+++krDhg3TjBkzVKVKFc2bN0/R0dHGNhYAUGSQa8YwWa1GPLmKmy09PV0BAQFqrS7yMpVydXNQxHjWquHqJqAIysm9oLWHZigtLc1ukQFH5P/dc2f0eHmVcn7xgZzsTG3+ZoxTbYJ7yP+zFVX1SXl5XP5sEkq23OMnXd0EFEE51mx9l/MZuVaEMHIJAHCcxZq3GVEPAACuRq4Zgs4lAMBxLng2BQCAG4ZcMwSrxQIAAAAAnMbIJQDAYSYZtPCB81UAAOA0cs0YjFwCAAAAAJzGyCUAwHFWa95mRD0AALgauWYIOpcAAIcV1feBAQBwPcg1YzAtFgAAAADgNEYuAQCOY8l2AIA7IdcMQecSAOAwk9UqkwHPlRhRBwAAziLXjMG0WAAAAACA0xi5BAA4zvK/zYh6AABwNXLNEHQuAQAOY/oQAMCdkGvGYFosAAAAAMBpjFwCABzHqnoAAHdCrhmCkUsAAAAAgNMYuQQAOM5qzduMqAcAAFcj1wxB5xIA4DCTNW8zoh4AAFyNXDMG02IBAAAAAE5j5BIA4DimDwEA3Am5Zgg6lwAAh5kseZsR9QAA4GrkmjGYFgsAAAAAcBojlwAAxzF9CADgTsg1Q9C5BAA4jpdNAwDcCblmCDqXxZT1f3dFcpRd4v8Q43LW3AuubgKKoBxL3p8Lawm/q4qiyZZrliwXtwRFUa4129VNQBGU878/F+Ra0UHnspg6e/asJOl7rXJxS1AkHXJ1A1CUnT17VgEBAU7VYbJaZTIgzI2oA+4hP9fW/z7PxS0BUNyQa0UHnctiKjQ0VImJiSpbtqxMJpOrm+Ny6enpCgsLU2Jiosxms6ubgyKEPxsXWa1WnT17VqGhoUZUxrMpMBS5Zo+/u3Al/Nm4iFwreuhcFlMeHh6qUqWKq5tR5JjN5hL/Fy0Kxp+NPM7e2QVuFHKtYPzdhSvhz0Yecq1ooXMJAHCcVZIR7/Iq2Td4AQBFBblmCN5zCQAAAABwGiOXcAs+Pj56+eWX5ePj4+qmoIjhz8aNwcIHwI3F3124Ev5s3BjkmjFMVtbuBQAUUnp6ugICAtS2yQvy8nT+HzY5uRe0Lv41paWl8ewQAOCmI9eMxbRYAAAAAIDTmBYLAHAcS7YDANwJuWYIOpcAAMdZJBnxKkIjVuYDAMBZ5JohmBYLAAAAAHAanUs4pXXr1ho6dKirm1Eo1atX1/Tp013dDLhQUlKS7r33Xvn7+yswMNDVzSnW8lfVM2IDihJyDcUJuWYccs0YTIsFUGJMmzZNJ0+eVHx8vAICAlzdnOKNZ1MAwOXINQORa4Zg5BJuJTc3VxZLCZ/sjis6dOiQmjVrplq1aikoKMjVzcF1mDRpkm6//XaVLVtWQUFB6tq1qw4ePGhXJjMzU0OGDFGFChVUpkwZde/eXcnJyXZlEhIS1LlzZ5UuXVpBQUEaMWKEcnJy7MqsX79eTZs2lY+Pj2rWrKkFCxbc6MsDLkOu4WrINRQ1dC7hNIvFopEjR6p8+fIKCQnR2LFjbcemTp2qiIgI+fv7KywsTE8++aQyMjJsx1u3bi2TyXTZdvTo0UKdv2DBAgUGBmr58uWqX7++fHx8lJCQoFOnTun++++Xn5+fwsPDtWjRosvanZCQoC5duqhMmTIym816+OGH7f4B2q9fP3Xt2tXunKFDh6p169a2z59++qkiIiLk5+enChUqKCoqSufOnXPuB8VVXek3//HHH3XvvfeqYsWKCggIUKtWrbRz507bedWrV9dnn32mhQsXymQyqV+/fpKk1NRUDRw4UJUqVZLZbFbbtm21a9cuF11dMZJ/h9eIzQEbNmzQkCFDtHXrVsXGxio7O1vt27e3+9/dsGHDtGLFCn3yySfasGGDTpw4oW7dutmO5+bmqnPnzsrKytLmzZv14YcfasGCBRozZoytzJEjR9S5c2e1adNG8fHxGjp0qAYOHKhvvvnG+d8ORR65Rq7dTORaEeGiXHO3m6Z0LuG0Dz/8UP7+/tq2bZsmT56s8ePHKzY2VpLk4eGhmTNnat++ffrwww+1bt06jRw50nbu559/rpMnT9q2bt26qU6dOgoODi7U+ZJ0/vx5vf7665o3b5727dunoKAg9evXT4mJifruu+/06aefas6cOTp16pTtHIvFoi5duiglJUUbNmxQbGysDh8+rH/+85+Fvu6TJ0/qkUceUf/+/XXgwAGtX79e3bp1k7WET4e4ka72m589e1Z9+/bV999/r61bt6pWrVrq1KmTzp49K0n68ccf1aFDBz388MM6efKkZsyYIUnq0aOHTp06pa+//lpxcXFq2rSp2rVrp5SUFFdeKq5g9erV6tevnxo0aKDGjRtrwYIFSkhIUFxcnCQpLS1N77//vqZOnaq2bduqWbNmmj9/vjZv3qytW7dKktasWaP9+/fro48+UpMmTdSxY0dNmDBBs2fPVlZWliRp7ty5Cg8P15QpU1SvXj3FxMTooYce0rRp01x27bh5yDVy7WYh1+B2N02tgBNatWplvfvuu+323X777dbnn3++wPKffPKJtUKFCgUemzp1qjUwMNB68ODBK37f38+fP3++VZI1Pj7etu/gwYNWSdbt27fb9h04cMAqyTpt2jSr1Wq1rlmzxurp6WlNSEiwldm3b5/deX379rV26dLF7vufeeYZa6tWraxWq9UaFxdnlWQ9evToFdsLYznym+fm5lrLli1rXbFihW1fly5drH379rV93rRpk9VsNlszMzPtzr311lut77zzjmHtdidpaWlWSdZ29Z61Rjf8j9Nbu3rPWiVZExMTrWlpabbt7/8/uZJff/3VKsm6Z88eq9Vqta5du9YqyXrmzBm7clWrVrVOnTrVarVaraNHj7Y2btzY7vjhw4etkqw7d+60Wq1W6z333GN95pln7Mp88MEHVrPZ7PiPhmKFXCPXbiZyzfVuVK6lpaVdV3tOnTpllWTdsGGD1Wq1WlNTU62lSpWyfvLJJ7Yy+f/737Jli9VqtVpXrVpl9fDwsCYlJdnKvP3221az2Wy9cOGC1Wq1WkeOHGlt0KCB3Xf985//tEZHR19XO6+EkUs4rVGjRnafK1eubLub+u2336pdu3a65ZZbVLZsWfXu3Vt//vmnzp8/b3fO119/rRdeeEFLly5V7dq1bfsLc763t7ddGw4cOCAvLy81a9bMtq9u3bp2q6gdOHBAYWFhCgsLs+2rX7++AgMDdeDAgUJdd+PGjdWuXTtFRESoR48eeu+993TmzJlCnYvrc7XfPDk5WYMGDVKtWrUUEBAgs9msjIwMJSQkXLG+Xbt2KSMjwzbNJH87cuSIDh06dLMuq3iyGLhJCgsLU0BAgG2bNGnStZtgsWjo0KG666671LBhQ0l5Kyd6e3tftmpicHCwkpKSbGXyR5EuPZ5/7Gpl0tPT9ddff12zbSjeyDVy7WYh14oQg3MtPT3dbrtw4UKhmpGWliZJKl++vCQpLi5O2dnZioqKspWpW7euqlatqi1btkiStmzZooiICLvcio6OVnp6uvbt22crc2kd+WXy6zAKnUs4rVSpUnafTSaTLBaLjh49qvvuu0+NGjXSZ599pri4OM2ePVuSbFPPJGn//v3q2bOnXnvtNbVv3962v7Dn+/n5yWQy4q239jw8PC6bCpSdnW37b09PT8XGxurrr79W/fr1NWvWLNWpU0dHjhwxvC3Ic7XfvG/fvoqPj9eMGTO0efNmxcfHq0KFCnZ/Vv4uIyNDlStXVnx8vN128OBBjRgx4iZeGRITE5WWlmbbXnzxxWueM2TIEO3du1dLliy5CS1ESUKukWs3C7nmvkrqTVNeRYIbJi4uThaLRVOmTJGHR959jI8//tiuzOnTp3X//fere/fuGjZsmMPnF6Ru3brKyclRXFycbr/9dknSwYMHlZqaaitTr149JSYmKjEx0XaXd//+/UpNTVX9+vUlSZUqVdLevXvt6o6Pj7f7R4fJZNJdd92lu+66S2PGjFG1atX0xRdfaPjw4YX5iXAdrvSb//DDD5ozZ446deokKa+zcvr06avW1bRpUyUlJcnLy0vVq1e/Ca13H0a9yyu/DrPZLLPZXOjzYmJitHLlSm3cuFFVqlSx7Q8JCVFWVpZSU1Ptgjg5OVkhISG2Mtu3b7erL39hhEvL/H2xhOTkZJnNZvn5+RX+AuFWyDXcCORa0WB0riUmJtrlmo+PzzXPzb9p+v333zvdDldh5BI3TM2aNZWdna1Zs2bp8OHD+u9//6u5c+falenevbtKly6tsWPHKikpybbl5uYW6vyC1KlTRx06dNC///1vbdu2TXFxcRo4cKDdPwijoqIUERGhXr16aefOndq+fbv69OmjVq1aqXnz5pKktm3baseOHVq4cKF+/fVXvfzyy3ahvG3bNr366qvasWOHEhIS9Pnnn+uPP/5QvXr1DPoF8XdX+81r1aql//73vzpw4IC2bdumXr16XbMTEBUVpcjISHXt2lVr1qzR0aNHtXnzZr300kvasWPHTbqqYspFq+pZrVbFxMToiy++0Lp16xQeHm53vFmzZipVqpTWrl1r23fw4EElJCQoMjJSkhQZGak9e/bYLYYSGxsrs9ls+0d4ZGSkXR35ZfLrQMlErsFo5FoRYnCu5d80zd+u1bnMv2n63XffXfGm6aX+ftO0oBui+ceuVsbom6Z0LnHDNG7cWFOnTtXrr7+uhg0batGiRZdNCdi4caP27t2ratWqqXLlyrYtMTGxUOdfyfz58xUaGqpWrVqpW7duGjx4sN37n0wmk7788kuVK1dOLVu2VFRUlGrUqKGlS5faykRHR2v06NEaOXKkbr/9dp09e1Z9+vSxHTebzdq4caM6deqk2rVra9SoUZoyZYo6duzo5C+HK7nab/7+++/rzJkzatq0qXr37q2nn376mu/8MplMWrVqlVq2bKnHHntMtWvXVs+ePXXs2LHLpo6gaBgyZIg++ugjLV68WGXLlrX9wz1/Sk9AQIAGDBig4cOH67vvvlNcXJwee+wxRUZG6o477pAktW/fXvXr11fv3r21a9cuffPNNxo1apSGDBliC//HH39chw8f1siRI/Xzzz9rzpw5+vjjjy8biULJQq7BaOQa3O2mqcn698n3AABcQXp6ugICAhR161B5eV57is+15ORe0LeHpistLa1Q02Kv9Bza/Pnzbe94y8zM1LPPPqv/+7//04ULFxQdHa05c+bY7t5K0rFjx/TEE09o/fr18vf3V9++ffXaa6/Jy+vi0yLr16/XsGHDtH//flWpUkWjR4+2fQcAwD24OteefPJJLV68WF9++aXq1Klj2x8QEGAbUXziiSe0atUqLViwQGazWU899ZQkafPmzZLyXkXSpEkThYaGavLkyUpKSlLv3r01cOBAvfrqq5LyXkXSsGFDDRkyRP3799e6dev09NNP66uvvlJ0dLTT152PziUAoNBsIVzjGeNC+PCMQocwAABGcnWuudtNUzqXAIBCc3UIAwBgJHLNWKwWCwC4Do4vxnPFegAAcDlyzQh0LgEAjruOlV6vWA8AAK5GrhmC1WIBAAAAAE5j5BIA4DiLVYZM/bGU7Du8AIAiglwzBCOXAAAAAACn0bkEXKBfv37q2rWr7XPr1q01dOjQm96O9evXy2QyKTU19YplTCaTli1bVug6x44dqyZNmjjVrqNHj8pkMik+Pt6penADWS3GbQCKPXLt6si1YoBcMwSdS+B/+vXrJ5PJJJPJJG9vb9WsWVPjx49XTk7ODf/uzz//XBMmTChU2cIEJ3DD5S98YMQG4IYg1wAHkGuG4JlL4BIdOnTQ/PnzdeHCBa1atUpDhgxRqVKl9OKLL15WNisrS97e3oZ8b/ny5Q2pBwCAS5FrAG4mRi6BS/j4+CgkJETVqlXTE088oaioKC1fvlzSxSk/r7zyikJDQ1WnTh1JUmJioh5++GEFBgaqfPny6tKli44ePWqrMzc3V8OHD1dgYKAqVKigkSNHyvq3u1p/nz504cIFPf/88woLC5OPj49q1qyp999/X0ePHlWbNm0kSeXKlZPJZFK/fv0kSRaLRZMmTVJ4eLj8/PzUuHFjffrpp3bfs2rVKtWuXVt+fn5q06aNXTsL6/nnn1ft2rVVunRp1ahRQ6NHj1Z2dvZl5d555x2FhYWpdOnSevjhh5WWlmZ3fN68eapXr558fX1Vt25dzZkzx+G2wIUsVuM2ADcMuXZt5BokkWsGYeQSuAo/Pz/9+eefts9r166V2WxWbGysJCk7O1vR0dGKjIzUpk2b5OXlpYkTJ6pDhw7avXu3vL29NWXKFC1YsEAffPCB6tWrpylTpuiLL75Q27Ztr/i9ffr00ZYtWzRz5kw1btxYR44c0enTpxUWFqbPPvtM3bt318GDB2U2m+Xn5ydJmjRpkj766CPNnTtXtWrV0saNG/Wvf/1LlSpVUqtWrZSYmKhu3bppyJAhGjx4sHbs2KFnn33W4d+kbNmyWrBggUJDQ7Vnzx4NGjRIZcuW1ciRI21lfvvtN3388cdasWKF0tPTNWDAAD355JNatGiRJGnRokUaM2aM3nrrLd1222366aefNGjQIPn7+6tv374OtwkuwPvAgGKJXLscuQZJ5JpB6FwCBbBarVq7dq2++eYbPfXUU7b9/v7+mjdvnm3a0EcffSSLxaJ58+bJZDJJkubPn6/AwECtX79e7du31/Tp0/Xiiy+qW7dukqS5c+fqm2++ueJ3//LLL/r4448VGxurqKgoSVKNGjVsx/OnGgUFBSkwMFBS3h3hV199Vd9++60iIyNt53z//fd655131KpVK7399tu69dZbNWXKFElSnTp1tGfPHr3++usO/TajRo2y/Xf16tX13HPPacmSJXYhnJmZqYULF+qWW26RJM2aNUudO3fWlClTFBISopdffllTpkyx/Sbh4eHav3+/3nnnHUIYAG4Acu3KyDXAOHQugUusXLlSZcqUUXZ2tiwWix599FGNHTvWdjwiIsLueZRdu3bpt99+U9myZe3qyczM1KFDh5SWlqaTJ0+qRYsWtmNeXl5q3rz5ZVOI8sXHx8vT01OtWrUqdLt/++03nT9/Xvfee6/d/qysLN12222SpAMHDti1Q5ItsB2xdOlSzZw5U4cOHVJGRoZycnJkNpvtylStWtUWwPnfY7FYdPDgQZUtW1aHDh3SgAEDNGjQIFuZnJwcBQQEONweuIhVBt3hdb4KAFdGrl0buQZJ5JpB6FwCl2jTpo3efvtteXt7KzQ0VF5e9v8T8ff3t/uckZGhZs2a2abFXKpSpUrX1Yb86UCOyMjIkCR99dVXduEn5T1vY5QtW7aoV69eGjdunKKjoxUQEKAlS5bY7ho70tb33nvvsn8UeHp6GtZW3GBMHwKKBXLt6sg12JBrhqBzCVzC399fNWvWLHT5pk2baunSpQoKCrrsLme+ypUra9u2bWrZsqWkvDuZcXFxatq0aYHlIyIiZLFYtGHDBtv0oUvl32HOzc217atfv758fHyUkJBwxTvD9erVsy3ikG/r1q3XvshLbN68WdWqVdNLL71k23fs2LHLyiUkJOjEiRMKDQ21fY+Hh4fq1Kmj4OBghYaG6vDhw+rVq5dD3w8AcAy5dnXkGmAsVosFnNCrVy9VrFhRXbp00aZNm3TkyBGtX79eTz/9tH7//XdJ0jPPPKPXXntNy5Yt088//6wnn3zyqu/yql69uvr27av+/ftr2bJltjo//vhjSVK1atVkMpm0cuVK/fHHH8rIyFDZsmX13HPPadiwYfrwww916NAh7dy5U7NmzdKHH34oSXr88cf166+/asSIETp48KAWL16sBQsWOHS9tWrVUkJCgpYsWaJDhw5p5syZ+uKLLy4r5+vrq759+2rXrl3atGmTnn76aT388MMKCQmRJI0bN06TJk3SzJkz9csvv2jPnj2aP3++pk6d6lB74EIWi3EbgCKDXCPXSixyzRB0LgEnlC5dWhs3blTVqlXVrVs31atXTwMGDFBmZqbtju+zzz6r3r17q2/fvoqMjFTZsmX14IMPXrXet99+Ww899JCefPJJ1a1bV4MGDdK5c+ckSbfccovGjRunF154QcHBwYqJiZEkTZgwQaNHj9akSZNUr149dejQQV999ZXCw8Ml5T0v8tlnn2nZsmVq3Lix5s6dq1dffdWh633ggQc0bNgwxcTEqEmTJtq8ebNGjx59WbmaNWuqW7du6tSpk9q3b69GjRrZLck+cOBAzZs3T/Pnz1dERIRatWqlBQsW2NoKAHANco1cA5xhsl7p6WsAAP4mPT1dAQEBiqo0QF4ezr9sPceSpW//eF9paWlXnIIHAMCNQq4Zi2cuAQCOY+EDAIA7IdcMwbRYAAAAAIDTGLkEADjOYpUhL/OylOw7vACAIoJcMwSdSwCAw6xWi6xW51fEM6IOAACcRa4Zg2mxAAAAAACnMXIJAHCc1WrM1J8SvvABAKCIINcMQecSAOA4q0HPppTwEAYAFBHkmiGYFgsAAAAAcBojlwAAx1ksksmARQtK+MIHAIAiglwzBJ1LAIDjmD4EAHAn5JohmBYLAAAAAHAaI5cAAIdZLRZZDZg+VNLfBwYAKBrINWMwcgkAAAAAcBojlwAAx/FsCgDAnZBrhqBzCQBwnMUqmQhhAICbINcMwbRYAAAAAIDTGLkEADjOapVkxPvASvYdXgBAEUGuGYLOJQDAYVaLVVYDpg9ZS3gIAwCKBnLNGEyLBQAAAAA4jc4lAMBxVotxm4Nmz56t6tWry9fXVy1atND27dtvwAUCAEoUF+aaO6FzCQBwmNViNWxzxNKlSzV8+HC9/PLL2rlzpxo3bqzo6GidOnXqBl0pAKAkcFWuuRs6lwCAYmPq1KkaNGiQHnvsMdWvX19z585V6dKl9cEHH7i6aQAAlHh0LgEAjnPB9KGsrCzFxcUpKirKts/Dw0NRUVHasmXLjbhKAEBJwbRYQ7BaLADAYTnKlgyY+ZOjbElSenq63X4fHx/5+PjY7Tt9+rRyc3MVHBxstz84OFg///yz840BAJRYRudaSUXnEgBQaN7e3goJCdH3SasMq7NMmTIKCwuz2/fyyy9r7Nixhn0HAAAFuRG5FhISIm9vb8PqK07oXAIACs3X11dHjhxRVlaWYXVarVaZTCa7fX8ftZSkihUrytPTU8nJyXb7k5OTFRISYlh7AAAlx43INW9vb/n6+hpWX3FC5xIA4BBfX1+XhKa3t7eaNWumtWvXqmvXrpIki8WitWvXKiYm5qa3BwDgHlyVa+6IziUAoNgYPny4+vbtq+bNm+sf//iHpk+frnPnzumxxx5zddMAACjx6FwCAIqNf/7zn/rjjz80ZswYJSUlqUmTJlq9evVli/wAAICbz2S1Wkv2mz4BAAAAAE7jPZcAAAAAAKfRuQQAAAAAOI3OJQAAAADAaXQuAQAAAABOo3MJAAAAAHAanUsAAAAAgNPoXAIAAAAAnEbnEgAAAADgNDqXAAAAAACn0bkEAAAAADiNziUAAAAAwGl0LgEAAAAATvt/DJNzjp32epMAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 1000x400 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"_, ax = plt.subplots(1, 2, figsize=(10, 4), sharex=False, sharey=False\n",
")\n",
"\n",
"for index in range(0, len(optimized_metrics)):\n",
" c_matrix = optimized_metrics.iloc[index][\"Confusion_matrix\"]\n",
" disp = ConfusionMatrixDisplay(\n",
" confusion_matrix=c_matrix, display_labels=[\"hazardous\", \"safe\"]\n",
" ).plot(ax=ax.flat[index])\n",
"\n",
"plt.subplots_adjust(top=1, bottom=0, hspace=0.4, wspace=0.3)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"В желтых квадрате мы наблюдаем значение 16400, что обозначает количество правильно классифицированных объектов, отнесенных к классу \"hazardsous\". Это свидетельствует о том, что модель успешно идентифицирует объекты этого класса, минимизируя количество ложных положительных срабатываний.\n",
"\n",
"В фиолетвом квадрате значение 276 указывает на количество правильно классифицированных объектов, отнесенных к классу \"More\". Это является показателем не такой высокой точности модели в определении объектов данного класса."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Определение достижимого уровня качества модели для второй задачи (задача регрессии)"
]
},
{
"cell_type": "code",
"execution_count": 201,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(5000, 6)\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>est_diameter_min</th>\n",
" <th>est_diameter_max</th>\n",
" <th>relative_velocity</th>\n",
" <th>miss_distance</th>\n",
" <th>absolute_magnitude</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3943344</td>\n",
" <td>0.024241</td>\n",
" <td>0.054205</td>\n",
" <td>22148.962596</td>\n",
" <td>5.028574e+07</td>\n",
" <td>25.20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>3879239</td>\n",
" <td>0.012722</td>\n",
" <td>0.028447</td>\n",
" <td>26477.211836</td>\n",
" <td>1.683201e+06</td>\n",
" <td>26.60</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3879244</td>\n",
" <td>0.013322</td>\n",
" <td>0.029788</td>\n",
" <td>33770.201397</td>\n",
" <td>3.943220e+06</td>\n",
" <td>26.50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2481965</td>\n",
" <td>0.193444</td>\n",
" <td>0.432554</td>\n",
" <td>43599.575296</td>\n",
" <td>7.346837e+07</td>\n",
" <td>20.69</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>3789471</td>\n",
" <td>0.044112</td>\n",
" <td>0.098637</td>\n",
" <td>36398.080883</td>\n",
" <td>6.352916e+07</td>\n",
" <td>23.90</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4995</th>\n",
" <td>3468663</td>\n",
" <td>0.006677</td>\n",
" <td>0.014929</td>\n",
" <td>20300.398051</td>\n",
" <td>1.700006e+06</td>\n",
" <td>28.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4996</th>\n",
" <td>3620670</td>\n",
" <td>0.105817</td>\n",
" <td>0.236614</td>\n",
" <td>36514.062162</td>\n",
" <td>6.945396e+07</td>\n",
" <td>22.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4997</th>\n",
" <td>3562321</td>\n",
" <td>0.192555</td>\n",
" <td>0.430566</td>\n",
" <td>68895.907750</td>\n",
" <td>5.209557e+07</td>\n",
" <td>20.70</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4998</th>\n",
" <td>3440771</td>\n",
" <td>0.253837</td>\n",
" <td>0.567597</td>\n",
" <td>61336.513568</td>\n",
" <td>5.037204e+07</td>\n",
" <td>20.10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4999</th>\n",
" <td>54065901</td>\n",
" <td>0.015295</td>\n",
" <td>0.034201</td>\n",
" <td>18389.028188</td>\n",
" <td>5.627145e+07</td>\n",
" <td>26.20</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5000 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
" id est_diameter_min est_diameter_max relative_velocity \\\n",
"0 3943344 0.024241 0.054205 22148.962596 \n",
"1 3879239 0.012722 0.028447 26477.211836 \n",
"2 3879244 0.013322 0.029788 33770.201397 \n",
"3 2481965 0.193444 0.432554 43599.575296 \n",
"4 3789471 0.044112 0.098637 36398.080883 \n",
"... ... ... ... ... \n",
"4995 3468663 0.006677 0.014929 20300.398051 \n",
"4996 3620670 0.105817 0.236614 36514.062162 \n",
"4997 3562321 0.192555 0.430566 68895.907750 \n",
"4998 3440771 0.253837 0.567597 61336.513568 \n",
"4999 54065901 0.015295 0.034201 18389.028188 \n",
"\n",
" miss_distance absolute_magnitude \n",
"0 5.028574e+07 25.20 \n",
"1 1.683201e+06 26.60 \n",
"2 3.943220e+06 26.50 \n",
"3 7.346837e+07 20.69 \n",
"4 6.352916e+07 23.90 \n",
"... ... ... \n",
"4995 1.700006e+06 28.00 \n",
"4996 6.945396e+07 22.00 \n",
"4997 5.209557e+07 20.70 \n",
"4998 5.037204e+07 20.10 \n",
"4999 5.627145e+07 26.20 \n",
"\n",
"[5000 rows x 6 columns]"
]
},
"execution_count": 201,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn import set_config\n",
"\n",
"random_state=42\n",
"set_config(transform_output=\"pandas\")\n",
"df = pd.read_csv(\".//static//csv//neo.csv\")\n",
"# Удаление столбцов \"sentry_object\" и \"hazardous\"\n",
"df = df.drop(columns=[\"sentry_object\", \"hazardous\", \"orbiting_body\", \"name\"])\n",
"\n",
"# Ограничение количества записей до 5,000\n",
"df = df.sample(n=5000, random_state=random_state).reset_index(drop=True)\n",
"\n",
"# Проверка итогового DataFrame\n",
"print(df.shape) # Убедитесь, что размер 5,000 строк\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 202,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" est_diameter_min est_diameter_max relative_velocity miss_distance \\\n",
"0 1.198271 2.679415 13569.249224 5.483974e+07 \n",
"1 0.265800 0.594347 73588.726663 6.143813e+07 \n",
"2 0.722030 1.614507 114258.692129 4.979872e+07 \n",
"3 0.096506 0.215794 24764.303138 2.543497e+07 \n",
"4 0.255009 0.570217 42737.733765 4.627557e+07 \n",
"\n",
" impact_damage_index \n",
"0 0.000480 \n",
"1 0.000515 \n",
"2 0.002680 \n",
"3 0.000152 \n",
"4 0.000381 \n"
]
}
],
"source": [
"import pandas as pd\n",
"\n",
"# Загрузка данных (замените путь на актуальный, если требуется)\n",
"df = pd.read_csv(\".//static//csv//neo.csv\")\n",
"\n",
"# Убедитесь, что столбцы в данных содержат необходимые характеристики\n",
"required_columns = [\"est_diameter_min\", \"est_diameter_max\", \"relative_velocity\", \"miss_distance\"]\n",
"missing_columns = [col for col in required_columns if col not in df.columns]\n",
"if missing_columns:\n",
" raise ValueError(f\"Отсутствуют столбцы: {missing_columns}\")\n",
"\n",
"# Создание переменной \"impact_damage_index\"\n",
"# Формула, используемая ниже, условная и может быть скорректирована в зависимости от анализа\n",
"# Пример: чем больше средний диаметр и скорость, тем выше ущерб. Чем больше расстояние, тем ниже ущерб.\n",
"df[\"impact_damage_index\"] = (\n",
" (df[\"est_diameter_min\"] + df[\"est_diameter_max\"]) / 2 # Средний диаметр\n",
" * df[\"relative_velocity\"] # Скорость\n",
" / df[\"miss_distance\"] # Обратная зависимость от расстояния\n",
")\n",
"\n",
"# Проверка новых данных\n",
"print(df[[\"est_diameter_min\", \"est_diameter_max\", \"relative_velocity\", \"miss_distance\", \"impact_damage_index\"]].head())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Разделение набора данных на обучающую и тестовые выборки (80/20) для задачи регрессии "
]
},
{
"cell_type": "code",
"execution_count": 203,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'X_train'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>est_diameter_min</th>\n",
" <th>est_diameter_max</th>\n",
" <th>relative_velocity</th>\n",
" <th>miss_distance</th>\n",
" <th>absolute_magnitude</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>35538</th>\n",
" <td>3826685</td>\n",
" <td>0.038420</td>\n",
" <td>0.085909</td>\n",
" <td>91103.489666</td>\n",
" <td>6.350550e+07</td>\n",
" <td>24.20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40393</th>\n",
" <td>2277830</td>\n",
" <td>0.192555</td>\n",
" <td>0.430566</td>\n",
" <td>28359.611312</td>\n",
" <td>2.868167e+07</td>\n",
" <td>20.70</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58540</th>\n",
" <td>3638201</td>\n",
" <td>0.004619</td>\n",
" <td>0.010329</td>\n",
" <td>107351.426865</td>\n",
" <td>5.388098e+04</td>\n",
" <td>28.80</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61670</th>\n",
" <td>3836282</td>\n",
" <td>0.015295</td>\n",
" <td>0.034201</td>\n",
" <td>21423.536884</td>\n",
" <td>5.103884e+07</td>\n",
" <td>26.20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11435</th>\n",
" <td>3802002</td>\n",
" <td>0.011603</td>\n",
" <td>0.025944</td>\n",
" <td>69856.053840</td>\n",
" <td>7.360836e+07</td>\n",
" <td>26.80</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6265</th>\n",
" <td>2530151</td>\n",
" <td>0.211132</td>\n",
" <td>0.472106</td>\n",
" <td>88209.754856</td>\n",
" <td>4.034289e+07</td>\n",
" <td>20.50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54886</th>\n",
" <td>3831736</td>\n",
" <td>0.035039</td>\n",
" <td>0.078350</td>\n",
" <td>58758.452153</td>\n",
" <td>4.389994e+06</td>\n",
" <td>24.40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>76820</th>\n",
" <td>2512234</td>\n",
" <td>0.211132</td>\n",
" <td>0.472106</td>\n",
" <td>52355.509176</td>\n",
" <td>4.380532e+07</td>\n",
" <td>20.50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>860</th>\n",
" <td>54054466</td>\n",
" <td>0.282199</td>\n",
" <td>0.631015</td>\n",
" <td>50527.379563</td>\n",
" <td>5.837007e+07</td>\n",
" <td>19.87</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15795</th>\n",
" <td>3773929</td>\n",
" <td>0.075258</td>\n",
" <td>0.168283</td>\n",
" <td>22527.647871</td>\n",
" <td>2.281469e+07</td>\n",
" <td>22.74</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>72668 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
" id est_diameter_min est_diameter_max relative_velocity \\\n",
"35538 3826685 0.038420 0.085909 91103.489666 \n",
"40393 2277830 0.192555 0.430566 28359.611312 \n",
"58540 3638201 0.004619 0.010329 107351.426865 \n",
"61670 3836282 0.015295 0.034201 21423.536884 \n",
"11435 3802002 0.011603 0.025944 69856.053840 \n",
"... ... ... ... ... \n",
"6265 2530151 0.211132 0.472106 88209.754856 \n",
"54886 3831736 0.035039 0.078350 58758.452153 \n",
"76820 2512234 0.211132 0.472106 52355.509176 \n",
"860 54054466 0.282199 0.631015 50527.379563 \n",
"15795 3773929 0.075258 0.168283 22527.647871 \n",
"\n",
" miss_distance absolute_magnitude \n",
"35538 6.350550e+07 24.20 \n",
"40393 2.868167e+07 20.70 \n",
"58540 5.388098e+04 28.80 \n",
"61670 5.103884e+07 26.20 \n",
"11435 7.360836e+07 26.80 \n",
"... ... ... \n",
"6265 4.034289e+07 20.50 \n",
"54886 4.389994e+06 24.40 \n",
"76820 4.380532e+07 20.50 \n",
"860 5.837007e+07 19.87 \n",
"15795 2.281469e+07 22.74 \n",
"\n",
"[72668 rows x 6 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'y_train'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>impact_damage_index</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>35538</th>\n",
" <td>0.000089</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40393</th>\n",
" <td>0.000308</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58540</th>\n",
" <td>0.014891</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61670</th>\n",
" <td>0.000010</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11435</th>\n",
" <td>0.000018</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6265</th>\n",
" <td>0.000747</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54886</th>\n",
" <td>0.000759</td>\n",
" </tr>\n",
" <tr>\n",
" <th>76820</th>\n",
" <td>0.000408</td>\n",
" </tr>\n",
" <tr>\n",
" <th>860</th>\n",
" <td>0.000395</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15795</th>\n",
" <td>0.000120</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>72668 rows × 1 columns</p>\n",
"</div>"
],
"text/plain": [
" impact_damage_index\n",
"35538 0.000089\n",
"40393 0.000308\n",
"58540 0.014891\n",
"61670 0.000010\n",
"11435 0.000018\n",
"... ...\n",
"6265 0.000747\n",
"54886 0.000759\n",
"76820 0.000408\n",
"860 0.000395\n",
"15795 0.000120\n",
"\n",
"[72668 rows x 1 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'X_test'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>est_diameter_min</th>\n",
" <th>est_diameter_max</th>\n",
" <th>relative_velocity</th>\n",
" <th>miss_distance</th>\n",
" <th>absolute_magnitude</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>20406</th>\n",
" <td>3943344</td>\n",
" <td>0.024241</td>\n",
" <td>0.054205</td>\n",
" <td>22148.962596</td>\n",
" <td>5.028574e+07</td>\n",
" <td>25.20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74443</th>\n",
" <td>3879239</td>\n",
" <td>0.012722</td>\n",
" <td>0.028447</td>\n",
" <td>26477.211836</td>\n",
" <td>1.683201e+06</td>\n",
" <td>26.60</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74306</th>\n",
" <td>3879244</td>\n",
" <td>0.013322</td>\n",
" <td>0.029788</td>\n",
" <td>33770.201397</td>\n",
" <td>3.943220e+06</td>\n",
" <td>26.50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45943</th>\n",
" <td>2481965</td>\n",
" <td>0.193444</td>\n",
" <td>0.432554</td>\n",
" <td>43599.575296</td>\n",
" <td>7.346837e+07</td>\n",
" <td>20.69</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62859</th>\n",
" <td>3789471</td>\n",
" <td>0.044112</td>\n",
" <td>0.098637</td>\n",
" <td>36398.080883</td>\n",
" <td>6.352916e+07</td>\n",
" <td>23.90</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51634</th>\n",
" <td>3694131</td>\n",
" <td>0.008801</td>\n",
" <td>0.019681</td>\n",
" <td>57414.305699</td>\n",
" <td>1.987273e+07</td>\n",
" <td>27.40</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85083</th>\n",
" <td>54235475</td>\n",
" <td>0.024920</td>\n",
" <td>0.055724</td>\n",
" <td>50882.935767</td>\n",
" <td>3.119646e+07</td>\n",
" <td>25.14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38905</th>\n",
" <td>3775176</td>\n",
" <td>0.008405</td>\n",
" <td>0.018795</td>\n",
" <td>24954.754212</td>\n",
" <td>1.111942e+07</td>\n",
" <td>27.50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16144</th>\n",
" <td>2434734</td>\n",
" <td>0.265800</td>\n",
" <td>0.594347</td>\n",
" <td>57455.404666</td>\n",
" <td>8.501684e+06</td>\n",
" <td>20.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54508</th>\n",
" <td>3170208</td>\n",
" <td>0.023150</td>\n",
" <td>0.051765</td>\n",
" <td>72602.093427</td>\n",
" <td>4.624727e+07</td>\n",
" <td>25.30</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>18168 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
" id est_diameter_min est_diameter_max relative_velocity \\\n",
"20406 3943344 0.024241 0.054205 22148.962596 \n",
"74443 3879239 0.012722 0.028447 26477.211836 \n",
"74306 3879244 0.013322 0.029788 33770.201397 \n",
"45943 2481965 0.193444 0.432554 43599.575296 \n",
"62859 3789471 0.044112 0.098637 36398.080883 \n",
"... ... ... ... ... \n",
"51634 3694131 0.008801 0.019681 57414.305699 \n",
"85083 54235475 0.024920 0.055724 50882.935767 \n",
"38905 3775176 0.008405 0.018795 24954.754212 \n",
"16144 2434734 0.265800 0.594347 57455.404666 \n",
"54508 3170208 0.023150 0.051765 72602.093427 \n",
"\n",
" miss_distance absolute_magnitude \n",
"20406 5.028574e+07 25.20 \n",
"74443 1.683201e+06 26.60 \n",
"74306 3.943220e+06 26.50 \n",
"45943 7.346837e+07 20.69 \n",
"62859 6.352916e+07 23.90 \n",
"... ... ... \n",
"51634 1.987273e+07 27.40 \n",
"85083 3.119646e+07 25.14 \n",
"38905 1.111942e+07 27.50 \n",
"16144 8.501684e+06 20.00 \n",
"54508 4.624727e+07 25.30 \n",
"\n",
"[18168 rows x 6 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"'y_test'"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>impact_damage_index</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>20406</th>\n",
" <td>0.000017</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74443</th>\n",
" <td>0.000324</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74306</th>\n",
" <td>0.000185</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45943</th>\n",
" <td>0.000186</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62859</th>\n",
" <td>0.000041</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51634</th>\n",
" <td>0.000041</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85083</th>\n",
" <td>0.000066</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38905</th>\n",
" <td>0.000031</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16144</th>\n",
" <td>0.002906</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54508</th>\n",
" <td>0.000059</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>18168 rows × 1 columns</p>\n",
"</div>"
],
"text/plain": [
" impact_damage_index\n",
"20406 0.000017\n",
"74443 0.000324\n",
"74306 0.000185\n",
"45943 0.000186\n",
"62859 0.000041\n",
"... ...\n",
"51634 0.000041\n",
"85083 0.000066\n",
"38905 0.000031\n",
"16144 0.002906\n",
"54508 0.000059\n",
"\n",
"[18168 rows x 1 columns]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from typing import Tuple\n",
"import pandas as pd\n",
"from pandas import DataFrame\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"def split_into_train_test(\n",
" df_input: DataFrame,\n",
" target_colname: str = \"impact_damage_index\",\n",
" frac_train: float = 0.8,\n",
" random_state: int = None,\n",
") -> Tuple[DataFrame, DataFrame, DataFrame, DataFrame]:\n",
" \n",
" if not (0 < frac_train < 1):\n",
" raise ValueError(\"Fraction must be between 0 and 1.\")\n",
" \n",
" # Проверка наличия целевого признака\n",
" if target_colname not in df_input.columns:\n",
" raise ValueError(f\"{target_colname} is not a column in the DataFrame.\")\n",
" \n",
" # Разделяем данные на признаки и целевую переменную\n",
" X = df_input.drop(columns=[target_colname]) # Признаки\n",
" y = df_input[[target_colname]] # Целевая переменная\n",
"\n",
" # Удаляем указанные столбцы из X\n",
" columns_to_remove = [\"sentry_object\", \"hazardous\", \"orbiting_body\", \"name\"]\n",
" X = X.drop(columns=columns_to_remove, errors='ignore') # Игнорировать ошибку, если столбцы не найдены\n",
"\n",
" # Разделяем данные на обучающую и тестовую выборки\n",
" X_train, X_test, y_train, y_test = train_test_split(\n",
" X, y,\n",
" test_size=(1.0 - frac_train),\n",
" random_state=random_state\n",
" )\n",
" \n",
" return X_train, X_test, y_train, y_test\n",
"\n",
"# Применение функции для разделения данных\n",
"X_train, X_test, y_train, y_test = split_into_train_test(\n",
" df, \n",
" target_colname=\"impact_damage_index\", \n",
" frac_train=0.8, \n",
" random_state=42\n",
")\n",
"\n",
"# Для отображения результатов\n",
"display(\"X_train\", X_train)\n",
"display(\"y_train\", y_train)\n",
"\n",
"display(\"X_test\", X_test)\n",
"display(\"y_test\", y_test)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Определение перечня алгоритмов решения задачи аппроксимации (регрессии)"
]
},
{
"cell_type": "code",
"execution_count": 204,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.pipeline import make_pipeline\n",
"from sklearn.preprocessing import PolynomialFeatures\n",
"from sklearn import linear_model, tree, neighbors, ensemble, neural_network\n",
"\n",
"random_state = 9\n",
"\n",
"models = {\n",
" \"linear\": {\"model\": linear_model.LinearRegression(n_jobs=-1)},\n",
" \"linear_poly\": {\n",
" \"model\": make_pipeline(\n",
" PolynomialFeatures(degree=2),\n",
" linear_model.LinearRegression(fit_intercept=False, n_jobs=-1),\n",
" )\n",
" },\n",
" \"linear_interact\": {\n",
" \"model\": make_pipeline(\n",
" PolynomialFeatures(interaction_only=True),\n",
" linear_model.LinearRegression(fit_intercept=False, n_jobs=-1),\n",
" )\n",
" },\n",
" \"ridge\": {\"model\": linear_model.RidgeCV()},\n",
" \"decision_tree\": {\n",
" \"model\": tree.DecisionTreeRegressor(max_depth=7, random_state=random_state)\n",
" },\n",
" \"knn\": {\"model\": neighbors.KNeighborsRegressor(n_neighbors=7, n_jobs=-1)},\n",
" \"random_forest\": {\n",
" \"model\": ensemble.RandomForestRegressor(\n",
" max_depth=7, random_state=random_state, n_jobs=-1\n",
" )\n",
" },\n",
" \"mlp\": {\n",
" \"model\": neural_network.MLPRegressor(\n",
" activation=\"tanh\",\n",
" hidden_layer_sizes=(3,),\n",
" max_iter=500,\n",
" early_stopping=True,\n",
" random_state=random_state,\n",
" )\n",
" },\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Формирование набора моделей для регрессии"
]
},
{
"cell_type": "code",
"execution_count": 205,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: linear\n",
"Model: linear_poly\n",
"Model: linear_interact\n",
"Model: ridge\n",
"Model: decision_tree\n",
"Model: knn\n",
"Model: random_forest\n",
"Model: mlp\n"
]
}
],
"source": [
"import math\n",
"from pandas import DataFrame\n",
"from sklearn import metrics\n",
"\n",
"for model_name in models.keys():\n",
" print(f\"Model: {model_name}\")\n",
"\n",
" fitted_model = models[model_name][\"model\"].fit(\n",
" X_train.values, y_train.values.ravel()\n",
" )\n",
" y_train_pred = fitted_model.predict(X_train.values)\n",
" y_test_pred = fitted_model.predict(X_test.values)\n",
" models[model_name][\"fitted\"] = fitted_model\n",
" models[model_name][\"train_preds\"] = y_train_pred\n",
" models[model_name][\"preds\"] = y_test_pred\n",
" models[model_name][\"RMSE_train\"] = math.sqrt(\n",
" metrics.mean_squared_error(y_train, y_train_pred)\n",
" )\n",
" models[model_name][\"RMSE_test\"] = math.sqrt(\n",
" metrics.mean_squared_error(y_test, y_test_pred)\n",
" )\n",
" models[model_name][\"RMAE_test\"] = math.sqrt(\n",
" metrics.mean_absolute_error(y_test, y_test_pred)\n",
" )\n",
" models[model_name][\"R2_test\"] = metrics.r2_score(y_test, y_test_pred)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Вывод результатов оценки"
]
},
{
"cell_type": "code",
"execution_count": 206,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\">\n",
"#T_38ff3_row0_col0, #T_38ff3_row0_col1, #T_38ff3_row1_col0, #T_38ff3_row1_col1, #T_38ff3_row2_col0, #T_38ff3_row2_col1, #T_38ff3_row3_col0, #T_38ff3_row3_col1, #T_38ff3_row4_col0, #T_38ff3_row4_col1, #T_38ff3_row5_col0, #T_38ff3_row5_col1, #T_38ff3_row6_col0, #T_38ff3_row6_col1 {\n",
" background-color: #26818e;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_38ff3_row0_col2, #T_38ff3_row1_col2, #T_38ff3_row2_col2, #T_38ff3_row3_col2, #T_38ff3_row4_col2, #T_38ff3_row5_col2, #T_38ff3_row7_col3 {\n",
" background-color: #4e02a2;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_38ff3_row0_col3, #T_38ff3_row1_col3, #T_38ff3_row2_col3, #T_38ff3_row3_col3, #T_38ff3_row4_col3, #T_38ff3_row5_col3, #T_38ff3_row6_col3, #T_38ff3_row7_col2 {\n",
" background-color: #da5a6a;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_38ff3_row6_col2 {\n",
" background-color: #5002a2;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_38ff3_row7_col0, #T_38ff3_row7_col1 {\n",
" background-color: #a8db34;\n",
" color: #000000;\n",
"}\n",
"</style>\n",
"<table id=\"T_38ff3\">\n",
" <thead>\n",
" <tr>\n",
" <th class=\"blank level0\" >&nbsp;</th>\n",
" <th id=\"T_38ff3_level0_col0\" class=\"col_heading level0 col0\" >RMSE_train</th>\n",
" <th id=\"T_38ff3_level0_col1\" class=\"col_heading level0 col1\" >RMSE_test</th>\n",
" <th id=\"T_38ff3_level0_col2\" class=\"col_heading level0 col2\" >RMAE_test</th>\n",
" <th id=\"T_38ff3_level0_col3\" class=\"col_heading level0 col3\" >R2_test</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th id=\"T_38ff3_level0_row0\" class=\"row_heading level0 row0\" >random_forest</th>\n",
" <td id=\"T_38ff3_row0_col0\" class=\"data row0 col0\" >0.000409</td>\n",
" <td id=\"T_38ff3_row0_col1\" class=\"data row0 col1\" >0.000711</td>\n",
" <td id=\"T_38ff3_row0_col2\" class=\"data row0 col2\" >0.012593</td>\n",
" <td id=\"T_38ff3_row0_col3\" class=\"data row0 col3\" >0.852564</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_38ff3_level0_row1\" class=\"row_heading level0 row1\" >decision_tree</th>\n",
" <td id=\"T_38ff3_row1_col0\" class=\"data row1 col0\" >0.000511</td>\n",
" <td id=\"T_38ff3_row1_col1\" class=\"data row1 col1\" >0.001031</td>\n",
" <td id=\"T_38ff3_row1_col2\" class=\"data row1 col2\" >0.015170</td>\n",
" <td id=\"T_38ff3_row1_col3\" class=\"data row1 col3\" >0.689858</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_38ff3_level0_row2\" class=\"row_heading level0 row2\" >linear_poly</th>\n",
" <td id=\"T_38ff3_row2_col0\" class=\"data row2 col0\" >0.001217</td>\n",
" <td id=\"T_38ff3_row2_col1\" class=\"data row2 col1\" >0.001476</td>\n",
" <td id=\"T_38ff3_row2_col2\" class=\"data row2 col2\" >0.018001</td>\n",
" <td id=\"T_38ff3_row2_col3\" class=\"data row2 col3\" >0.364795</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_38ff3_level0_row3\" class=\"row_heading level0 row3\" >linear_interact</th>\n",
" <td id=\"T_38ff3_row3_col0\" class=\"data row3 col0\" >0.001263</td>\n",
" <td id=\"T_38ff3_row3_col1\" class=\"data row3 col1\" >0.001500</td>\n",
" <td id=\"T_38ff3_row3_col2\" class=\"data row3 col2\" >0.018235</td>\n",
" <td id=\"T_38ff3_row3_col3\" class=\"data row3 col3\" >0.343354</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_38ff3_level0_row4\" class=\"row_heading level0 row4\" >knn</th>\n",
" <td id=\"T_38ff3_row4_col0\" class=\"data row4 col0\" >0.001206</td>\n",
" <td id=\"T_38ff3_row4_col1\" class=\"data row4 col1\" >0.001611</td>\n",
" <td id=\"T_38ff3_row4_col2\" class=\"data row4 col2\" >0.019245</td>\n",
" <td id=\"T_38ff3_row4_col3\" class=\"data row4 col3\" >0.243014</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_38ff3_level0_row5\" class=\"row_heading level0 row5\" >linear</th>\n",
" <td id=\"T_38ff3_row5_col0\" class=\"data row5 col0\" >0.001382</td>\n",
" <td id=\"T_38ff3_row5_col1\" class=\"data row5 col1\" >0.001629</td>\n",
" <td id=\"T_38ff3_row5_col2\" class=\"data row5 col2\" >0.019724</td>\n",
" <td id=\"T_38ff3_row5_col3\" class=\"data row5 col3\" >0.225851</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_38ff3_level0_row6\" class=\"row_heading level0 row6\" >mlp</th>\n",
" <td id=\"T_38ff3_row6_col0\" class=\"data row6 col0\" >0.001610</td>\n",
" <td id=\"T_38ff3_row6_col1\" class=\"data row6 col1\" >0.001852</td>\n",
" <td id=\"T_38ff3_row6_col2\" class=\"data row6 col2\" >0.023283</td>\n",
" <td id=\"T_38ff3_row6_col3\" class=\"data row6 col3\" >-0.000074</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_38ff3_level0_row7\" class=\"row_heading level0 row7\" >ridge</th>\n",
" <td id=\"T_38ff3_row7_col0\" class=\"data row7 col0\" >2.251826</td>\n",
" <td id=\"T_38ff3_row7_col1\" class=\"data row7 col1\" >2.248301</td>\n",
" <td id=\"T_38ff3_row7_col2\" class=\"data row7 col2\" >1.349327</td>\n",
" <td id=\"T_38ff3_row7_col3\" class=\"data row7 col3\" >-1474534.430780</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x1b4c88a89e0>"
]
},
"execution_count": 206,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reg_metrics = pd.DataFrame.from_dict(models, \"index\")[\n",
" [\"RMSE_train\", \"RMSE_test\", \"RMAE_test\", \"R2_test\"]\n",
"]\n",
"reg_metrics.sort_values(by=\"RMSE_test\").style.background_gradient(\n",
" cmap=\"viridis\", low=1, high=0.3, subset=[\"RMSE_train\", \"RMSE_test\"]\n",
").background_gradient(cmap=\"plasma\", low=0.3, high=1, subset=[\"RMAE_test\", \"R2_test\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Вывод реального и \"спрогнозированного\" результата для обучающей и тестовой выборок\n",
"\n",
"Получение лучшей модели"
]
},
{
"cell_type": "code",
"execution_count": 207,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'random_forest'"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"best_model = str(reg_metrics.sort_values(by=\"RMSE_test\").iloc[0].name)\n",
"\n",
"display(best_model)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Подбор гиперпараметров методом поиска по сетке"
]
},
{
"cell_type": "code",
"execution_count": 209,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fitting 3 folds for each of 8 candidates, totalling 24 fits\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
" return fit_method(estimator, *args, **kwargs)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Лучшие параметры: {'max_depth': 10, 'min_samples_split': 5, 'n_estimators': 50}\n",
"Лучший результат (MSE): 5.418559949534169e-07\n"
]
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from sklearn import metrics\n",
"from sklearn.pipeline import Pipeline\n",
"from sklearn.model_selection import train_test_split, GridSearchCV\n",
"from sklearn.ensemble import RandomForestRegressor # Используем регрессор\n",
"from sklearn.preprocessing import StandardScaler\n",
"\n",
"\n",
"df.dropna(inplace=True) \n",
"# Предикторы и целевая переменная\n",
"X = df[[\"est_diameter_min\", \"est_diameter_max\", \"relative_velocity\", \"miss_distance\", \"absolute_magnitude\"]]\n",
"y = df['impact_damage_index'] # Целевая переменная для регрессии\n",
"\n",
"\n",
"model = RandomForestRegressor() \n",
"\n",
"param_grid = {\n",
" 'n_estimators': [50, 100], \n",
" 'max_depth': [10, 20], \n",
" 'min_samples_split': [5, 10] \n",
"}\n",
"\n",
"# 3. Подбор гиперпараметров с помощью Grid Search\n",
"grid_search = GridSearchCV(estimator=model, param_grid=param_grid,\n",
" scoring='neg_mean_squared_error', cv=3, n_jobs=-1, verbose=2)\n",
"\n",
"# Обучение модели на тренировочных данных\n",
"grid_search.fit(X_train, y_train)\n",
"\n",
"# 4. Результаты подбора гиперпараметров\n",
"print(\"Лучшие параметры:\", grid_search.best_params_)\n",
"print(\"Лучший результат (MSE):\", -grid_search.best_score_)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Обучение модели с новыми гиперпараметрами и сравнение новых и старых данных"
]
},
{
"cell_type": "code",
"execution_count": 210,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fitting 3 folds for each of 8 candidates, totalling 24 fits\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
" return fit_method(estimator, *args, **kwargs)\n",
"c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
" return fit_method(estimator, *args, **kwargs)\n",
"c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
" return fit_method(estimator, *args, **kwargs)\n",
"c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
" return fit_method(estimator, *args, **kwargs)\n",
"c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
" return fit_method(estimator, *args, **kwargs)\n",
"c:\\Users\\Admin\\StudioProjects\\AIM-PIbd-31-Alekseev-I-S\\aimenv\\Lib\\site-packages\\sklearn\\base.py:1473: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n",
" return fit_method(estimator, *args, **kwargs)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Старые параметры: {'max_depth': 20, 'min_samples_split': 5, 'n_estimators': 50}\n",
"Лучший результат (MSE) на старых параметрах: 5.299415148966497e-07\n",
"\n",
"Новые параметры: {'max_depth': 20, 'min_samples_split': 10, 'n_estimators': 100}\n",
"Лучший результат (MSE) на новых параметрах: 5.355742455463778e-07\n",
"Среднеквадратическая ошибка (MSE) на тестовых данных: 4.772832137780905e-07\n",
"Корень среднеквадратичной ошибки (RMSE) на тестовых данных: 0.0006908568692414446\n"
]
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from sklearn import metrics\n",
"from sklearn.ensemble import RandomForestRegressor\n",
"from sklearn.model_selection import train_test_split, GridSearchCV\n",
"import matplotlib.pyplot as plt\n",
"\n",
"\n",
"old_param_grid = {\n",
" 'n_estimators': [50, 100], # Количество деревьев\n",
" 'max_depth': [ 10, 20], # Максимальная глубина дерева\n",
" 'min_samples_split': [5, 10] # Минимальное количество образцов для разбиения узла\n",
"}\n",
"\n",
"old_grid_search = GridSearchCV(estimator=RandomForestRegressor(), \n",
" param_grid=old_param_grid,\n",
" scoring='neg_mean_squared_error', cv=3, n_jobs=-1, verbose=2)\n",
"\n",
"old_grid_search.fit(X_train, y_train)\n",
"\n",
"old_best_params = old_grid_search.best_params_\n",
"old_best_mse = -old_grid_search.best_score_ # Меняем знак, так как берем отрицательное значение MSE\n",
"\n",
"new_param_grid = {\n",
" 'n_estimators': [100],\n",
" 'max_depth': [20],\n",
" 'min_samples_split': [10]\n",
"}\n",
"\n",
"new_grid_search = GridSearchCV(estimator=RandomForestRegressor(), \n",
" param_grid=new_param_grid,\n",
" scoring='neg_mean_squared_error', cv=2)\n",
"\n",
"new_grid_search.fit(X_train, y_train)\n",
"\n",
"new_best_params = new_grid_search.best_params_\n",
"new_best_mse = -new_grid_search.best_score_ # Меняем знак, так как берем отрицательное значение MSE\n",
"\n",
"model_best = RandomForestRegressor(**new_best_params)\n",
"model_best.fit(X_train, y_train)\n",
"\n",
"model_oldbest = RandomForestRegressor(**old_best_params)\n",
"model_oldbest.fit(X_train, y_train)\n",
"\n",
"y_pred = model_best.predict(X_test)\n",
"y_oldpred = model_oldbest.predict(X_test)\n",
"\n",
"mse = metrics.mean_squared_error(y_test, y_pred)\n",
"rmse = np.sqrt(mse)\n",
"\n",
"print(\"Старые параметры:\", old_best_params)\n",
"print(\"Лучший результат (MSE) на старых параметрах:\", old_best_mse)\n",
"print(\"\\nНовые параметры:\", new_best_params)\n",
"print(\"Лучший результат (MSE) на новых параметрах:\", new_best_mse)\n",
"print(\"Среднеквадратическая ошибка (MSE) на тестовых данных:\", mse)\n",
"print(\"Корень среднеквадратичной ошибки (RMSE) на тестовых данных:\", rmse)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Попробуем визуализировать"
]
},
{
"cell_type": "code",
"execution_count": 212,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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i2PHjmH06NGllmndujX27dtn0oXrQaNHj8arr76Kfv36ISQkBDExMYiIiACgT97QrVs3vPbaa8by5loC6tati7p16yIoKAjbt2/Hjz/+iKeeesri7aVSqcmx1q9fv0QZR0dHkzIpKSklyojFYmOZgIAAPPvsszh9+nSJ4Co0NBQJCQllnt927dohISHBZJkl57M06enpuHjxIr788kt0794dgD6phjlHjhwxds8sLCzEyZMnTcaDAfpub+7u7mjevDmGDh2KuLi4EvsJDQ3Fjz/+CH9/f6tmq7P0dT1z5gzu379vDEqPHDkCV1dX+Pr6lut8AMDEiRPRtm1b1K1bF88++6xJcOXl5YWGDRvi6tWrGDVq1CMdm7XOvcH58+fxwgsvPFKdHobdAomIiKhyiMX6dOseHkBCApCZCRQW6v9NSNAvDw/Xl7MhBwcHTJkyBUePHsXJkycRGRmJLl26GIOtefPm4dtvv8WCBQtw4cIFKJVKbN68Ge+++y4A/Z36efPmAQCefPJJpKWlIS0tDffv30deXp6xm9Ls2bNx/PhxvPbaazh79iwSExOxZs0ak2xxhmyGjRs3xtKlS/Gf//zHOIA/ICAAJ06cwO+//45Lly5h7ty5OH78uMmxrF69GhcuXEBSUhI2btyIvXv3ol27dhZvb225ubm4f/8+Tp48iYMHD5qM3TGYNWsWDh8+jMmTJ+P06dO4fPkyfvrpJ5OL6LCwMMTFxZkk/7DkfJamTp06qFevHtauXYsrV67gzz//xPTp082W/eyzzxATE4PExES8/vrruHfvHl5++WWTMnl5ecjNzUViYiJ+++03s8f5+uuv4+7duxg5ciSOHz+Of//9F7///jvGjRtnNqmJpSx9XfPz8zF+/HgkJCTg119/xfz58zF58mSIxeJynQ9AH9B88skn+PzzzyE28/ldsGABlixZgujoaFy6dAnnzp3D+vXryz3PlLXOPaDPdpiamloiuLc2BldERERUeRQKICoKaNcOSE8HLl3S/xsaql9eifNcWcrFxQWzZs3Ciy++iCeeeAKurq7YsmWLcX1YWBh27dqFPXv2oGPHjujSpQs+/fRTNG7cGADw8ccfY+nSpdBoNGjevDkaNGiABg0aYOvWrdi9ezfeeOMNAECLFi2wZ88enDlzBp06dULXrl3x008/ldqKMWnSJISEhGDKlCnGx4MHD8bw4cPRuXNnpKenm7RWAMAvv/yCXr16ISgoCAsWLMCcOXOMF6OWbG9NmZmZcHZ2hlQqxcCBAxEREWH2gr1169b466+/cOnSJXTv3h3t2rXDvHnz0LBhQ2OZfv36wd7eHn/88YdxWXnPZ3FisRibN2/GyZMnERISgmnTpmHp0qVmy3744Yf48MMP0aZNGxw8eBA7d+6Eh4eHSRlvb284Ozuje/fuaNOmDZYsWVJiPw0bNsShQ4dQVFSEPn36oFWrVpg6dSrc3d3NBiiWsvR1feaZZxAQEIAePXpg+PDheO655/Dee++V+3wYjB8/HmFhYWbXTZgwAevWrcP69evRqlUr9OzZExs2bCiz26w51jr3APDDDz+gT58+xs9tZREJgiBU6jNUQ1lZWZDL5cjMzCxzYCoREVFNlpubi2vXrqFJkyYlkgmUm06nzwqo0ejHWPn52bzFCtDPIzR16lSzc+VYynCBavi3uNjYWMTGxmLDhg0V3j/pffbZZ9i5cyd+//33x/J8SUlJaNKkCeLj40vM61XdREZGIiMjA7GxsbauikWsfe7z8/MREBCA77//Hk888YTZMmV935UnNuCYKyIiIqp8YrFN061XJldX11LXSSQSY0pwejSTJk1CRkYGNBoNZFU8CQpVLSqVCnPmzCk1sLImBldEREREj2DGjBmlruvbty/69u37GGtTc9nb2+Odd96xdTWoGmrevHmZCVOsid0CzWC3QCIiIit3CyQiqsKs1S3Q9p2diYiIiIiIagAGV0RERFQmdnIhoprOWt9zDK6IiIjILAcHBwBATk6OjWtCRFS5DN9zhu+9imJCCyIiIjLLzs4O7u7uuH37NgD9fFAikcjGtSIish5BEJCTk4Pbt2/D3d0ddnZ2j7Q/BldERERUKm9vbwAwBlhERDWRu7u78fvuUTC4IiIiolKJRCI0aNAA9evXR0FBga2rQ0RkdQ4ODo/cYmXA4IqIiIgeys7OzmoXH0RENRUTWhAREREREVkBgysiIiIiIiIrYHBFRERERERkBQyuiIiIiIiIrIDBFRERERERkRUwuCIiIiIiIrICBldERERERERWwOCKiIiIiIjIChhcERERERERWQGDKyIiIiIiIitgcEVERERERGQFDK6IiIiIiIisgMEVERERERGRFTC4IiIiIiIisgIGV0RERERERFbA4IqIiIiIiMgKGFwRERERERFZAYMrIiIiIiIiK2BwRUREREREZAUMroiIiIiIiKyAwRUREREREZEVMLgiIiIiIiKyAgZXREREREREVsDgioiIiIiIyAoYXBEREREREVkBgysiIiIiIiIrYHBFRERERERkBQyuiIiIiIiIrIDBFRERERERkRUwuCIiIiIiIrICmwdXn332Gfz9/SGRSNC5c2ccO3aszPLbtm1DUFAQJBIJWrVqhV9//dVkfXZ2NiZPngwfHx84OzsjODgYn3/+eWUeAhERERERkW2Dqy1btmD69OmYP38+Tp06hTZt2iAsLAy3b982W/7w4cMYOXIkxo8fj/j4eISHhyM8PBznz583lpk+fTp2796NjRs3QqlUYurUqZg8eTJ27tz5uA6LiIiIiIhqIZEgCIKtnrxz587o2LEjVq1aBQDQ6XTw9fXFlClT8Pbbb5coP3z4cGi1Wuzatcu4rEuXLmjbtq2xdSokJATDhw/H3LlzjWXat2+Pfv364f3337eoXllZWZDL5cjMzISbm9ujHCIREREREVVj5YkNbNZylZ+fj5MnT6J3797/q4xYjN69eyMuLs7sNnFxcSblASAsLMykfLdu3bBz506kpqZCEATs378fly5dQp8+fUqtS15eHrKyskz+iIiIiIiIysNmwZVarUZRURG8vLxMlnt5eSEtLc3sNmlpaQ8tv3LlSgQHB8PHxweOjo7o27cvPvvsM/To0aPUuixZsgRyudz45+vr+whHRkREREREtZHNE1pY28qVK3HkyBHs3LkTJ0+exLJly/D666/jjz/+KHWb2bNnIzMz0/iXnJz8GGtMREREREQ1gb2tntjDwwN2dna4deuWyfJbt27B29vb7Dbe3t5llr9//z7mzJmDmJgYDBgwAADQunVrnD59Gh9//HGJLoUGTk5OcHJyetRDIiIiIiKiWsxmLVeOjo5o37499u3bZ1ym0+mwb98+dO3a1ew2Xbt2NSkPAHv37jWWLygoQEFBAcRi08Oys7ODTqez8hEQERERERH9j81argB92vSxY8eiQ4cO6NSpE5YvXw6tVotx48YBAMaMGYNGjRphyZIlAIA33ngDPXv2xLJlyzBgwABs3rwZJ06cwNq1awEAbm5u6NmzJ2bOnAlnZ2c0btwYf/31F7799lt88sknNjtOIiIiIiKq+WwaXA0fPhx3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6K6qFAZXRBWk0wEffgjExwPBwUDxCY0FQZ8yMDQUmDWLA7CIiIioWihPbFChboEGfn5+lZ7amYiqEZVK3xXQ19c0sAL0j3189C1bKhVg666LRERERFZWoeBq+vTpZa7/5JNPKlQZIqrmNBr9GCup1Px6qRRITdWXIyIiIqphKhRcxcfHmzw+ePAg2rdvD2dnZ4gevFtNRLWHTKZPXqHVAuaazbVa/XqZ7PHXjYiIiKiSVSi42r9/v8ljmUyG77//Hk2bNrVKpYiomvLz02cFLG3MVUqKfswVuxMTERFRDWSVEeWPkBODiGoSsVifbt3DQ5+8IjMTKCzU/5uQoF8eHs5kFkRERFQjPfIVzo4dO5Cbm4v69etboz5EVN0pFPp06+3aAenpwKVL+n9DQ5mGnYiIiGq0CnULrFOnDkQiEXJzc5GXl4dZs2bB1dXV2nUjoupKoQACA/VZATUa/RgrPz+2WBEREVGNVqHgavny5QAAZ2dntGzZEi1btrRmnYioJhCLmW6diIiIapUKBVdjx461dj2IiIiIiIiqtUeaRDghIQEqlQr5+fkmy5977rlHqhQREREREVF1U6Hg6urVq4iIiMC5c+cgEomM2QINc1wVFRVZr4ZERERERETVQIVGl7/xxhto0qQJbt++DRcXF1y4cAF///03OnTogAMHDli5ikRERERERFVfhVqu4uLi8Oeff8LDwwNisRhisRhPPvkklixZgqioKMTHx1u7nkRERERERFVahVquioqKIJPJAAAeHh64ceMGAKBx48a4ePGi9WpHRERERERUTVSo5SokJARnzpxBkyZN0LlzZ/zf//0fHB0dsXbtWjRt2tTadSQiIiIiIqryKhRcvfvuu9BqtQCAhQsXYuDAgejevTvq1auHLVu2WLWCRERERERE1YFIMKT6e0R3795FnTp1jBkDq7OsrCzI5XJkZmbCzc3N1tUhIiIiIiIbKU9s8EjzXBVXt25da+2KiIiIiIio2qlQcDV48OAy1+/YsaNClSEiIiIiIqquKpQtUC6XG/9++eUXiMVik2VERERERES1zSOPuZLJZDhz5kyNyhLIMVdERERERASULzaoUMsVERERERERmWJwRUREREREZAUVSmgRHR1t/H9hYSE2bNgADw8P47KoqKhHrxkREREREVE1UqExV02aNCl9hyIRrl69+kiVsjWOuSIiIiIiIuAxzHN17dq1ClWMiIiIiIiopir3mKu1a9fipZdewqZNm4yPW7RogebNm2PZsmVWryAREREREVF1UK6Wq02bNuHNN99Enz59MHPmTFy5cgXLly/HjBkzoNPpsHDhQjRp0uShkwwTERERERHVNOUKrlavXo01a9bgpZdewsmTJ9G5c2esWbMGEydOBAA0bNgQK1euZHBFRERERES1Trm6BSqVSnTt2hUA0L59e4jFYnTu3Nm4vkePHjh37px1a0hERERERFQNlCu4ysvLg4uLi/Gxk5MTXF1djY+dnZ1RVFRkvdoRERERERFVE+UKrho1aoQrV64YH2/cuBENGjQwPr548SL8/f2tVjkiIiIiIqLqolzBVc+ePfHrr78aHz///PNwdnY2Pl67di26detmvdoRERERERFVExWaRLg0Go0GEokEDg4O1tqlTXASYSIiIiIiAh7DJMKlkclk1twdERERERFRtVHuSYSJiIiIiIioJAZXREREREREVsDgioiIiIiIyAoYXBEREREREVkBgysiIiIiIiIrqBLB1WeffQZ/f39IJBJ07twZx44dK7P8tm3bEBQUBIlEglatWpnMvfWgV199FSKRCMuXL7dyrYmIiIiIiP7H5sHVli1bMH36dMyfPx+nTp1CmzZtEBYWhtu3b5stf/jwYYwcORLjx49HfHw8wsPDER4ejvPnz5coGxMTgyNHjqBhw4aVfRhERERERFTL2Ty4+uSTTzBx4kSMGzcOwcHB+Pzzz+Hi4oKvv/7abPkVK1agb9++mDlzJhQKBRYtWoTQ0FCsWrXKpFxqaiqmTJmCTZs2VftJjYmIiIiIqOqzaXCVn5+PkydPonfv3sZlYrEYvXv3RlxcnNlt4uLiTMoDQFhYmEl5nU6H0aNHY+bMmWjZsuVD65GXl4esrCyTPyIiIiIiovKwaXClVqtRVFQELy8vk+VeXl5IS0szu01aWtpDy3/00Uewt7dHVFSURfVYsmQJ5HK58c/X17ecR0JERERERLWdzbsFWtvJkyexYsUKbNiwASKRyKJtZs+ejczMTONfcnJyJdeSiIiIiIhqGpsGVx4eHrCzs8OtW7dMlt+6dQve3t5mt/H29i6z/D///IPbt2/Dz88P9vb2sLe3x/Xr1/Hmm2/C39/f7D6dnJzg5uZm8kdERERERFQeNg2uHB0d0b59e+zbt8+4TKfTYd++fejatavZbbp27WpSHgD27t1rLD969GicPXsWp0+fNv41bNgQM2fOxO+//155B0NERERERLWava0rMH36dIwdOxYdOnRAp06dsHz5cmi1WowbNw4AMGbMGDRq1AhLliwBALzxxhvo2bMnli1bhgEDBmDz5s04ceIE1q5dCwCoV68e6tWrZ/IcDg4O8Pb2RmBg4OM9OCIiIiIiqjVsHlwNHz4cd+7cwbx585CWloa2bdti9+7dxqQVKpUKYvH/Gti6deuG77//Hu+++y7mzJmDgIAAxMbGIiQkxFaHQEREREREBJEgCIKtK1HVZGVlQS6XIzMzk+OviKo6nQ5QqQCNBpDJAD8/QFzjcvUQERGRjZQnNrB5yxURUYUplUBMDJCYCOTmAhIJEBQEREQACoWta0dERES1DIMrIqqelEogOhpQqwFfX0AqBbRaID4eSE4GoqIYYBEREdFjxb4zRFT96HT6Fiu1GggOBtzcADs7/b/BwfrlsbH6ckRERESPCYMrIqp+VCp9V0BfX+DBycJFIsDHR9+ypVLZpn5ERERUKzG4IqLqR6PRj7GSSs2vl0r16zWax1svIiIiqtUYXBFR9SOT6ZNXaLXm12u1+vUy2eOtFxEREdVqDK6IqPrx89NnBUxOBh6cTUIQgJQUfTILPz/b1I+IiIhqJQZXRFT9iMX6dOseHkBCApCZCRQW6v9NSNAvDw/nfFdERET0WPHKg4iqJ4VCn269XTsgPR24dEn/b2go07ATERGRTXCeKyKqvhQKIDBQnxVQo9GPsfLzY4sVERER2QSDKyKq3sRiwN/f1rUgIiIiYrdAIiIiIiIia2BwRUREREREZAUMroiIiIiIiKyAY66IqFrT6ZjPgoiIiKoGBldEVG0plUBMDJCYCOTmAhKJfm7hiAhmYiciIqLHj8EVEVVLSiUQHQ2o1YCvLyCVAlotEB8PJCdzqisiIiJ6/Nh5hsgGdDodkpKScO7cOSQlJUGn09m6StWKTqdvsVKrgeBgwM0NsLPT/xscrF8eG6svR0RERPS4sOWK6DFTKpWIiYlBYmIicnNzIZFIEBQUhIiICCjY1GIRlUrfFdDXFxCJTNeJRICPj75lS6XiFFhERET0+DC4InqMlEoloqOjoVar4evrC6lUCq1Wi/j4eCQnJyMqKooBlgU0Gv0YK6nU/HqpFEhN1ZcjIiIielzYLZAeq9rcHU6n0yEmJgZqtRrBwcFwc3ODnZ0d3NzcEBwcDLVajdjY2Fp1TipKJtMnr9Bqza/XavXrZbLHWy8iIiKq3dhyRY9Nbe8Op1KpkJiYCF9fX4ge6MsmEong4+MDpVIJlUoFf/ZlK5Ofnz4rYHy8foxV8dMpCEBKChAaqi9HRERE9LgwuKLHgt3hAI1Gg9zcXEhL6csmlUqRmpoKDfuyPZRYrE+3npwMJCTox1gZsgWmpAAeHkB4OOe7IiIioseLlx5U6dgdTk8mk0EikUBbSl82rVYLiUQCGfuyWUSh0Kdbb9cOSE8HLl3S/xsayjTsREREZBtsuaJKx+5wen5+fggKCkJ8fDyCg4NNzoUgCEhJSUFoaCj82JfNYgoFEBiozwqo0ejHWPn5scWKiIiIbIPBFVU6dofTE4vFiIiIQHJyMhISEuDj42PsHpmSkgIPDw+Eh4dDzMigXMRiplsnIiKiqoFXcVTp2B3ufxQKBaKiotCuXTukp6fj0qVLSE9PR2hoaK0Yd0ZERERUk7Hliiodu8OZUigUCAwMhEqlgkajgUwmg5+fH1usiIiIiKo5BldU6dgdriSxWFyjx5cRERER1UYiQRAEW1eiqsnKyoJcLkdmZibc3NxsXZ0aw9w8VwqFAuHh4ewOR0RERERVUnliA7Zc0WPD7nBERERUm+h0Ol731DIMruixYnc4IiIiqg3M9dgJCgpCREQEe+zUYAyuiIiIiIisSKlUIjo6Gmq1Gr6+vsax5vHx8UhOTmaG4BqM7ZK1gE6nQ1JSEs6dO4ekpCTodDpbV4mIiIioRtLpdIiJiYFarUZwcDDc3NxgZ2cHNzc3BAcHQ61WIzY2ltdjNRRbrmo4NkkTERERPT4qlQqJiYnw9fU1mX4GAEQiEXx8fKBUKqFSqThUogZicFWDsUmaiIiI6PHSaDTIzc2FVCo1u14qlSI1NRUajeYx14weB3YLrKHYJE1ERET0+MlkMkgkEmi1WrPrtVotJBIJZDLZY64ZPQ4Mrmqo8jRJU/Wl0wFJScC5c/p/GSs/PhzLSERE5vj5+SEoKAjJycl4cDpZQRCQkpIChUIBPz8/G9WQKhO7BdZQbJKu+ZRKICYGSEwEcnMBiQQICgIiIgD29qxcHMtIRESlEYvFiIiIQHJyMhISEuDj42McmpGSkgIPDw+Eh4dzvqsaisFVDVW8SdrcTNJskq7elEogOhpQqwFfX0AqBbRaID4eSE4GoqIqGGDpdIBKBWg0gEwG+PkB/PI3wbGMRJbjBKpUWykUCkRFRRlvxKWmpkIikSA0NBTh4eFV/3eC1wMVxuCqhjI0ScfHxyM4ONika6ChSTo0NJRN0tWQTqdvsVKrgeBgwPDSurnpHyckALGxQGBgOb8H2RT2UA+OZTR8rgxjGRMSEhAbG4vAwEBeQFKtxxZequ0UCgUCAwOr3w0GXg88EgZXNRSbpGsulUr/fefr+7/AykAkAnx89N+LKhVgcYbX/zaF6e7cgUYuR65EAklREWSnTkH8SE1hNQvT6xJZxtDCm37nDlrJ5ajj7Ix7hYU4feoUW3ipVhGLxdXr96DSusbUHgyuarBq3yRNZmk0+htJpQyng1QKpKbqy1nkv01hWVev4kxBAdSXL6OwsBD29vbwqFcPbTQauFWoKazmqcyxjOyBQTWFoYXX6epVvFJQAI/Ll+FQWIgCe3t0rVcPuzQatvASVUXFusYICgUys7KQp1bDyckJcoUCIqWygl1jahcGVzVcVWuS5gXko5PJ9C30Wq2+K+CDtFr9eouH06lUyDh6FCdu3sTdwkLI5XI4ODigoKAAN9PSkGdvjw5HjsC9XE1hNVNljWVkDwyqSVQqFbKOHsXQmzfhXliI2071kePkDBfhPhqkpWGovT1+PnKELbxEVc1/u8aku7gg4dAhqNXq/91s9fBAcKNGqFfurjG1D4OrWkEMwN/WleAFZHGPEGX6+enPW3y86ZgrABAEICUFCA3Vl7OoKpmZuHn1KjIKC+FZv76xu5uTkxM8PT2RfusWbl69CrfMzFo/d8ODYxkBIDMzE3l5eXB0dERqairat29frrGM7IFBNY0mMxOtr16FRGuHE7r2yEmXQqcTQyzWQeXsixDxWbS+ehWazExbV5WoSqgyiV80GmTdvo0jt29Dm5trerP15k1o7t3Dk/Xrw42ZpsvE4KqGqyoBDS8gi3nEF0Us1hdNTgaUF3QIcVOhjr0G9wplOJ/lBw9PMcLDLW8RvKHRIF2rhYe7e4lBXCKRCB7OzkjPzMQNjQY+5T/aGqX4WMYjR44gOzsbWVlZyMvLQ15eHry9vREZGWnxj2KlJSchsqE6Gg28MwRcuB+IbJEMTk55sLMrQlGRHbK1MlwQAuFTkIA6vEAjqlKJX3RSKa7fugVddjY8GzYscbM1+8YNXBcEtJRKa/3N1rIwuKrBqkpAwwvIYqz0oigUwIwBSqiiY+BwKhHiglzoHCToERAE38gINCvHC3tPJoNKKkXr+/ehlslKNIV55ObirFQKuUxW64MrQN/VdsCAAVi4cCFu3boFJycn4w+Pq6srfvnlFzRr1syiH8VKSU5CZGPeUhn+zffA3TxnyOtqjRdo9vZFsLPT4t5dFzS294C3lFOBUO1W1ab2UAFQAggUiXDvgXUiAL7/XS9DVegPVXUxuKqhqlJAwwvI/7Lmi6JUotkv0WjipobmKV/k2kkhKdJClhkP8S/JQDPLI2eZXI6zTZui8bVr8LxzB1lubsh3dIRjfj7csrKQ4eCAs02aoJtc/mjHX0PodDqcPXsWfn5+6Nq1K/Lz8/WDff97fsqTjt3qyUmIqoA0rRxFjt6oW6SBJkcMJycn2NnZoaioCHl5eajjpEORgzfStHLesKGar5RhAFVxag+NVos4Ly/437lj9nog280NcZ6eUGi1j6U+1RWDqxqqKgU0vID8L2u9KMWCNHHLYMhFIugv690An/JHzn5+fnDr3BnbcnMxoKAQ8ptZcM3PRpGjHW40aIBfHOzh1aUL50T7L0M6dj8/P7NJLcqTjr205CSCICAzMxPp6QUoLHSGVOoCsBMGVRP3ZH5Ic2+Nlg5xOK+rh5z795GXlwexWAxXqRQtxem4KO0AT5kfgyuq2coYBqBydq5yU3vIZDKk16+PP7280CElBR5qNWQaDQrt7XGzQQMc9/FBuiCUO2lTbcPgqoaqSgGN1bPbVVfWelGsHDkbxhEtOFuA6eeaoX6+DFJdIbT59rh9S4OWrf7FJM6JZmTNdOzmkpPcuXMHiYmJuHNHjXv3vOHhkYzvv7+CIUM48SpVDzK5GGebRqDxtWR0KLyDO3XqI0fkCBchH555t5Fh74OzTcLRTc7vFKrBHjIMIL9v30qb2qOiDEmbTsbHI/eJJ+CelQXHvDzkOzkhw80NF5RKhIaG8mbrQ/CbrYYqHtCY8zgDGsMFZHKyPptdcYbsdgqF5dntqi1rvSiWBGm5ueWMnBUApkAQtccNR0dccRZww9ERgqg9gCn/XU+AaTp2c8qTjt2QnMTDQ9/gePVqOuLijuP69QxoNIGQyVzRtGk6Tp8+jejoaCiVSmsfDpHV+fkBbp0V2NYgCje9Q+Guy4Zf3g2467Jxo0F7bGsQBXkXRc3/zqfa68FhAG5ugJ3d/4YBqNXwPHQIzk5OVvktsRbDzVYPDw9cUCpxXSTCjXr1cF0kwgWlEh4eHgjnzdaHYstVDWXtdN2Ponh2u4QEfcOK4QZOSor+wrI82e2qLWu9KFZuCjT8BhQV1cXgwXWQldUAeXl5cHJygpubHEqlqPYkHLHAg+nYi3fnEAQBKSkp5bqzp1Do85js2KHD9u03cONGA4hEXgAAOzstrlzpinr1AqDR7OLEq1QtGL7zo5MVWHsnECH+phlN65UzoylRtWNBDxP3mzfRydsbB5KSrPJbYi0KhQJRUVH48ccYnDqlhlZ7H1KpCO3bh2Lw4HD2oLAAg6saqqoFNIYLSEPX49RU/fV/aKi+HrXisyoWA88/r39B4uL0X7re3kBOTvleFCtHzsV/A8RiEdzd3U3W15qEIxYqno49ISEBPj4+xgxPKSkpFbqzp1AAI0eqsH//L9Bq+wK6LLSUJUAuzkSmTo5LNwNg5zAUR478zIlXqVr433e+GImJ/sjN1n/nt2tf9b/zq8ycQ1R9WdDDRJSain5PPonz2dlW+y2xHgVEokAAORCEQujDBY79tVSVCK4+++wzLF26FGlpaWjTpg1WrlyJTp06lVp+27ZtmDt3LpKSkhAQEICPPvoI/fv3BwAUFBTg3Xffxa+//oqrV69CLpejd+/e+PDDD9GwYcPHdUhVQlULaBQKfetHBefOrf6USuCnn/QHf/MmcOWK/ou3aVOgSxfLXxQrR85VaXxedWG4s2eYmyQ1NRUSiQShoaEID6/YnT2NRoNbt/wQUKjC88JONL6hgqMuH/liR1x38cNPec/h6tXWyMzkC0HVQ3X8zq9Kcw5RNWZhD5OmbdogqkULq/6WPKr/DRUTw9/f1Xh5cfq0/hKjVs1LWkE2D662bNmC6dOn4/PPP0fnzp2xfPlyhIWF4eLFi6hfv36J8ocPH8bIkSOxZMkSDBw4EN9//z3Cw8Nx6tQphISEICcnB6dOncLcuXPRpk0b3Lt3D2+88Qaee+45nDhxwgZHaFtV7cdNLK6lrR///bbS3VFD49EMufVbwTnzJlzvJUPs6go891z5vq2sGDkz4UjFKBQKBAQE4siRG7h1KwdeXi7o0qUh7O0r9uHKzJTDU52Pl3I/R31RFtTO3sizd4akKBctsi8jUliHtfnDoNHUsfKREFWeqvadX0pWbABVb84hqsbK0cNEIRYjMDCwSrSWVqVpfKozkSA8mGLg8ercuTM6duyIVatWAdA3x/v6+mLKlCl4++23S5QfPnw4tFotdu3aZVzWpUsXtG3bFp9//rnZ5zh+/Dg6deqE69evW9R3NSsrC3K5HJmZmWZTLROVi04HfPghsv6Kx5mCYKjTRSgsBOztAY96Ato4JMCtVygwa1b5v63KulIoX/VK/Q1ISND/BlSkejVZGRl2y31XT6lUYvWqA/D46hhaF57CFcdGcHB0hIuLCxwdHSHodGhw7zISpV3w1G9L0aadze+LEVU7SqV+bOPJkznIzi6Eq6s92rd3weDBYgQG6vDhhx+WOpYyISEBoaGhmDVrFrsIkmWK31SV+xSbjzIFYk+PKtkElJQEzJun7wBj7vI3MxNITwcWLqxaN00eh/LEBjb9hc7Pz8fJkycxe/Zs4zKxWIzevXsjLi7O7DZxcXGYPn26ybKwsDDExsaW+jyZmZkQiUqOJTHIy8tDXl6e8XFWVpblB0G13kPjG5UKGUcTceKmL+4WiiCXAw4OQEEBcDNNhDx7H3Q4ooR7RQY1WeG2cFUbn1cdPCTDbrl+Mw13y+8rNXjKQY00UUPoBAF5eXkoLCyEVCqFTqfDbaeGaO1wE/W0KQD8K/PwiGocpRJYsOAuzp+/haKiJIhEWgiCFJcu+ePcOS9MmHC/ys05RNWcQoF/B0RBFR0Dh1OJEBekQucgQUFAKPwiw9HMzI+Ercf7cZiAddg0uFKr1SgqKoKXl5fJci8vLyQmJprdJi0tzWz5tLQ0s+Vzc3Mxa9YsjBw5stRIc8mSJViwYEEFjoCqMys0+pR5J9TwvanL1ODm1VxkFErhWV9/0ZyTUwh7e3t4ejoh/ZYUN6+mwi1TY7OholVtfF5VZs1uEzqdDjExMVCr1egZ6IG6CclIzQ+AE9QoKChAQUEBtFotPD09YSfyQAPpdTSU8VeNqDx0OuCLL27j2LFkODn9C3d3ORwc6qKgoAAZGedw7FgOHByckZubV6XmHKLqTakEon9RIN0tEK2e+l/GzHOZfqj3ixhRzYr9tup0uPLnn9i/cyeUKSlItbODk7PzYx/vx2EC1lGj+5YUFBRg2LBhEAQBa9asKbXc7NmzTVrDsrKy4Ovr+ziqSDZijS5dD7sTOn9+XSgUwA2NDOlaCaROaqhUucjJyYFOp4MgOMHJyQVeznZQ50sg08jgU7mHXaaqNj6vqjLJrggd5BkqOOZpkO8kQ6bcDz4+YouzK6pUKuPd8kKdDs517qNuRg4ydA0hkeRAp8tFYaEIdnYN4OVyHw2aSCCW81eNqDySknT4669bsLO7gfr1PY0tU05OTqhf3xM3btzAqVMN0aJFQ2i1WshkcmRmypGX5wgnp3zI5Zk2mXOIqi+Tm3AtxSgS+UP933UKnwduwl1U4vYXX0D9669omZODlhIJbtWpg5N+fjh16tRjHe9Xlabxqc5sGlx5eHjAzs4Ot27dMll+69YteHt7m93G29vbovKGwOr69ev4888/y+wf6eTkBCcnpwoeBVU31ujSZcmd0LVrC7BsmRfuyfxw2d4fPjf/RLa9N+zs3VBQ4Ir8fHtosnSoj8s46tYFd+/42TS4Aqre4POqyNBtwv++EsFnYuChToRDYS4K7CVQewThQkAEUnMVFnWb0Gg0yM3NhVQqRaZYDI2PDIpCJc4VhSDnvhSC4IyiovuoVzcXneqkwK0Lf9WIyuvSpZu4ezcH3t5OZrv81anjiFu3CiCX++DChWQUFDyB9HQPFBY6wN6+APXqqeHgsAu9eike+5xDtZE1epXYmgXTXEGpBG7+qUSD7SuQfvAgUvPykGNvDyEjA163b6P11atIad4cVzWaxzbHIYcJWIdNgytHR0e0b98e+/btQ3h4OAB9N5l9+/Zh8uTJZrfp2rUr9u3bh6lTpxqX7d27F127djU+NgRWly9fxv79+1GvXr3KPAyqRqzVpav4nVAvz3rwzr8D55wc3Ld3gZOnJ1Jv3sCBA45ISvKEVAb8bNceLwjHEVh0F1fv10GRzg7udlloZJ+KtKK62JoXhoDtQIsgdsGr6mQyoGmeEu0PRcO9UI0suS8yHaRwLNCiwc14ON9Jxs0mUZDJHv5CymQySCQSaLVauLm5ITEoCJ0zj6JDzkncqeOJjAJ7iHPvoXs9b7j6Ny7zV83WffWJqi4NgFwAUgAFJdaKRK4A8tCkSRccP94RmZkO8PS8hzp19BeVly5JIZcPRqtWjfiZqmTWTBRkS5aMXbqRooP45xjkqFQ4nV+AdK0Diors4OQkQapzDvxztGh97Rrivbxw5MiRxzbej8MEHp3NuwVOnz4dY8eORYcOHdCpUycsX74cWq0W48aNAwCMGTMGjRo1wpIlSwAAb7zxBnr27Illy5ZhwIAB2Lx5M06cOIG1a9cC0AdWL7zwAk6dOoVdu3ahqKjIOB6rbt26cHR0tM2BUpVg6d2kh3XpMtwJ7SK/hWeSj6BxjumcRH+4dsbRu/Vx6dJNtGhRgGuSPHzr/gqezjqExoUqNLS7gTzBCeccWyFWGIjrEinq3c1BbKwrU5xWcX4+OoTdj4H4rhq3mwZDJNa/kfKc3HDbIxiSqwno2yAWfj6BeNiEi35+fggKCkJ8fDxaKhQodHDAlebN4adSwT37Hhwz7kLm6QmX7k+WeXXBuXmISteihQR1697CvXuBcHZKh3f+bTgX6m+GpTnWx927UtSpcwkazbPw8bGDl9cZpKdn4N49/djYFi084ODQFufOuaF/f34/VxZrJgqyNUvGLjUqUkGWnIibdvWRekOHggJ32Nk5IT+/CA4OmbjpdAXBuAuPnBxcvXoVmZmZj63+HCbwaGweXA0fPhx37tzBvHnzkJaWhrZt22L37t3GpBUqlcrkTlG3bt3w/fff4913/5+9Pw2M67zPu+Hf2eac2QfADHaAIAgSADeJpBZKoixbdmzHlm0tkZK8j982XWynTSynSVonTvu6edImqVOnsZzNdpwmaZLGi0TJkmJJ3mRLlEiR4k4OCJAAONgxM5h95uzn/QAS4k6QBClS5vWNBDAz95lzn/u/XP/r+s987nOfY+XKlTz99NOsXbsWgImJCb7zne8AcOutt572Xj/60Y9497vffU3WdRPnwdvc7186JZwSPdYRHpt+jgYvx6zaiC5pC55EDZUMWVkFolQqFk1NrzNu/Ut+P3cfKyND1Mk5il6EYbsbSbEJBw8SjzeSTIYWNatzI+Cd2kkRx1Ns8A+wq76DuYxAJAI+H5gmFIsC9fXt3KYlEccv/kWKoshDDz2EtX8/K596ipWOgwbonsdx12Vy7Vp+5jd/E/H++8+7T25689zEDYdrfA50dXVy330vcvjJnfzswAF63UE0auj4OSKu4rvqWtrvDTIzE2PNGoFweAuFQgHDMFBVlWg0SrEoLHqW8iYuHe80f6XFzC59oKOEM6CzZ7QVw7Dw+WrIsoHnyZhmA2lbo9H3BvWKwkilcs3FVG6OCVw+3vbkCuBXf/VXz0sDfPnll8/6v0cffZRHH330nL/f1dXF22zddRPnw3XQ718qJZxVPT4e9L5LoFphpL5roXtRlYOMiF00z03wsfB3WdWzBVHWaGzM4vO9yexsC8dZxqi9HFF0CYarRCITQI1oVGF29p0hcfqO7qSUSsRUnVvuDjIwNB8MlErzvmUtLdC3MkhsbvFatf3Ap4EZYBSoCAJBYJXPx72xGPVtbRekAp5UG1zT30+sWMSXyWCqKpH+fg4lk9eMq38TN7EovA3ngCiKfPp9bQw/919xCxKT0gp0qQPNKbPG2s7ayDbEjb/PV34iEAxyTuuWmxLUVxdLKRR0PWAxs0vv+nCY1E80xJqJouRPxK4KomihKHlUQ6FIC3NWhmAweFNM5QbCdZFc3cRPAa6Tfv9SKeF0iXBnbIQD1Vb0WhBVNZAkB8eRMAyVSSnMXbERusT5N+3r6+PVV9+kuXkTkuQiSQ6y7KCqOun0LC0tLchy9B0hcfqO76ScyNAT/jLxtR6lrIGJitwQJRoTEIqXoFV7olxb7zjUPfwwLcXiW9XySAQhmbxgufak2uCmQIDbtm0jnsmg2DaWLJOJx1FvevPcxPWEBVPVNKVoFF3T0ByH8O7diFfzHHBdVuzfT2JFA3s7LALTI8jmfMdZaw5yq0/BSb2JX30flYpINOwSLZwe3Fcq4jvi+Xy9YimFgq4XXGx2yad2spc+los7mNJUdMPAsixkWUYA2knxpr2KSTnKqm6NaDT6di/pJhaJm8nVTVx9XEf9/qVSwhErFfqWxRgTMsxkBHS9HkHw4Xk2ojhNXVuW3s4YYqUCJ6hfqdSXSaUOU6utprk5j2WZpNNFAoEAvb19TEwIlyxxer1R707tpKxevXpBmSsSibB69WoOHz5843dSOjuhvh6+9z0EUSTiOPNtq3h8/h5OpxevVXtKuVYQxbONzi8yBFgqlWiYneX+dJpgrcas2khV9RPwarRMTXF/LsdsY+NNb56bePtx4hwoDg+zz7LIDA1h2/MzTfGGBm4plYhcrXPgxD6LrFnDveHwWZQ/oVjEm0pyR3OKof017rG2Es+eEtw39PGc8hD97+6/KdZ5lbCUQkHXEy40u3TggMjrTQ+xTEixvjrAUUelig/FLNPi5siIEb7nfx91Da+xeXPXTaXKGwg3k6ubWDKcN9BfKhWJJcKSKOGEw0QaG3l3k8ChsXGmpiYxT1RCW1oCrGnvInLi9+bfs5/PfObTaNpP+Od/zjI6GiAUMmlubqWjo590uuGSJU6vR+rdqb5N55I8br/BOymubTP7T/9E4I038M/N4fmCWOF6JEBNpRBGRuCOOxb/RV7hEGA4GOSumRmYs9klbKKaDeK6IqLokvJ30F/Zw13eDOHzvf5PKa63osRPBVIp8jt2sGtqijnbJhqNoigKlmUxNT2NIcvctn07satxDpyyz85F+SMYRJiY4KPL9jHyzy+gFDLkEh1QN195Cw7u4eHoGG3rHkcUb6zg/kbBUgoFXW843+xSOAzZxn5+1PQZ+n1/T9PQ60hWEduvMepfx0v+exm3lrFl+SAPPvjgzWfUDYSbydU7EGfNCre788P1V3F4+IKBvm0vlYrEkuGKlXBO8Asb9uzh3i33UDgXneuM7kV/fz9//Me9PPDAFM8+KzI2FkaSgoBwyRKn1yv17lTfpnMhGAwyMTFxQ3ZSjj33HKkvfYmuXbuQahZZN4yEjqDMISg+FM1PNOyhtbTM31yLwRUOAXYCs7rKgfxydF/4NHpquRLmgLmK9YFJbtY738L1WJT4aYBbKDA1PEzetkk0Np5m5JtIJMjOzDA1PEykUFj60Hkx+0xV6Tj+KtH2DPuaVpPPCtg5kOUI8VWruVU5TOTA0/ChG0RR4QbDUgoF3Sg4Oabw5p5+9Pf/Hs7KPUwNHmCiaJAiRrnaRV9fjc997uM3n003GG4mV+8wnDkr3G0k+UBtKxv8A8TUqzM8fLFA/zceeYSepVCRWGJckRLOKfxCIZkk1t4ODQ3za0kmz8svFEWR972vjfvvv/zE7nqm3p3p23QmKpUKmqZdcDD3euwqHHvuOSY++1mi2Sw+V2FKbMVBIuTM4TkW2cRasvIyNA1uG84uvvp+pUOApQqK3UhVqEPw0oAKSICB5xWpCXXIjg2lypVfhHcATj6rsuk066JR6vx+crbN3t273xnzgNcxJkslspUK8VjsLAaDIAjE/X6yhQKTpdLSm6kvZp8tXw5TU0TWdLAlLFAogGGAqkI0KiAUry3D4qcOSywUdCPg1DGFQ0mR9vZNNLXfirr/MA3jFQIdQT79hU2sWXMzVL/RcPMbewfhTM2Irto8f1mcy7CrvoNb7g6SCCytiMRiAv1v7djBZ3t7EffuvTIViesNV8AvvJLE7mpS7640sTnVt+nU+wHA8zzGx8fZuHHjebnjyWSSrU8+SWb3boRKBS8YJL5xIw898sjbFvS6tk3qiSfQCgXstnasgTSGpyGrDmUaCOtZfIUUwXXryM66TA1PEimUFld9v8IhwMlSmIoTo6fFx6weolqtYhgGoigSDodo0hQqRozJUnjpA9YbDCefVerwMJ+wbKKHjiOZDo5PYnNLhOdLpRt/HvA6Ri4cJhUMsr5WIxMOn3UOxHWd/cEg0fBVuFcXs8/uuQf+4R9OUAfhTObgTbnAq4yTQkGBCvEtkTOSWy5NKOgMvM0OMBfEqWHExPeTdB3eyqbyAEFJR5nTyPzHPo49/hArHrhZ9LmRcDO5eofgTM0IEZfV+7YSs+f5y3MZgYEhiG+JICyhiMSpgb4IRPN5fIaBqaoUotH5QP/IEab+xb+gbXz8ylQkrkcskdPepSQ1V4t6txR0qZO+TWNjYxw+fJj29vaFTub4+DjxePy83PFkMsk3f/d36Tl4iHfrEj5XwBQ9RgaH+ObBgzz2+c+/LQnW5PbtKEePYjQ2ghNEt0soooXryQiCS00JEaplKZfSxP0a2YJ2acnMFSTpuXAnqWAf6+09aB39GKa5IBKg+nwk0kn2BzcSDXf+1CdXqVSK4o4dfHQ0j5RTGXB7qRAkSIVl2RQfrSvz0vbtN+w84PWOcDTK/u5ulo2MkEinKUYimD4fPtMkUiySVxT2L1/O3VdLEe1i+8zvhyefvO4YFj81OKW7KKxeTSy2NEXYS1H+f7tYE/39IA8lOf6/n8DnZagt68BXF0SoVlAP72His2PA4++oBOt6TniXAjeTq3cIztSMiOZTxDMDFKMdCOI8fzmTgUKB+YfWEolInAz0u2o1Vu/dR2SquFANLrZEOLRqJRO6zlxTE21XrCKxxFiq3X2FTnuXmtQsBfXuXJ9hqWa4+vv7efzxxxfWNDExgaZpbNy4kQcffPCcr+O6Lj/5ylfYtO0wIb2Oo17nQuDbKaSIFg7zyle/Su8Xv3jNuwrVmRlEy6JCgsnZNrA9mpkmazUgyS6eDH6vDEaVuJe5vGTmAkn6hW7TcFRkf/dDLBsZozGTpBhpxwwE8ZkVIplj5JU4+5c/yN3R6/jUukanbKlQoDeZwU0HSUq9qJqJJhmYjspBfQ2rZo6wystQKhSW/L1vYr6rHbnzTr6l63zYsolOFQmZZRyfxGRLC88rMk2bN19dRbQLFcNcd2l8Om7i8nBKd9E9dGheql+S5qX6CwXEROKSi7CX4gDzds5iurbL+J9uJVjLoK/qRysXIZcBn4q+vB9tJMnYl59m+Qd7EeXr+Fm+SFwHlqdXHTeTq3cIzhQd8xklFFunoMz/h883/zuGceIPlojiEA6H6TYM1v5w9zmrwesm9jDV1zwf6Hd1LUmXZ0lwnezuy0lqrpR6dyauxgxXf38/vStXMrl9O9WZGQJNTbRu3owon/uRkxodxf/iHnzFBg4pfacFvof0NawsDqC9sJvUp0fp6u5e1GdYKgSamtCJkk3FqLlBjio9xJw8CS9DwY7gWeBJIonqJLlIz+UnM+dI0i92m3Z2QuTOfr6lP84DJ+Sjw6UJbFljsmUjz8sP0rT5OpaPTiZxn9pK9c0B7LKOHNIIbOpDfHjp92G0UCKekUjRSiBYW4idZdlBCtYYK7TSMDNJdk+N0eg7r5L6duNkV/t391v8+oEVNJphgq5NxZSZnSmxZt0xPnUtFNHOVwxbKp+Om7h89Pdz7MMfJvXEEyi7dyNaFq6iYK1cSecv/RIrLuGZcCkOMEeOvL0CUZPbUyhHB7B9AaIHtxGsZZA8G0eQqfjjVOrakIeSTG5P0b6l66p9jmuB68Ty9KrjZnL1DkEw6GLbVUZHazQ0KER9ISxZw2dVMNQIpjk/GKqqJ/5giSgOne3tbEkL6BM+RrQ1Z1WDl08cZEtcpLP9RB3/Crs8S4LrZHdfblJzJdS7c+GqzHAlk/DUVmJvDhA6ETSz6SdwnqC5OjBIbMplQlx2zsB3sthB/dQI1YFBuMbJVfMdm3lJ3UxjZhg7rlJ069il30YfA9Q7c0ScAnmpnqnl7+Z538NLlsycvE2zaZd10RR1/hI5O8ze3Z2MjYkLt+lDD8ETY/18Nd3L2q4UdfL87x0sdtKQEK/feDCZZO53n2DmYIZRp4OKECToVega3EPTgTHqP7+0+1CohFFdjapgEkQC3rrXLUumqGvUuRG++fUA5R++8yqp1wf6gU/jCTNM+kYRBAvP8yEJm4APAfVv88dbCp+Om7hcJJNJnnj+ebKRCOve8x7qZJmcbXOgUKDh+ed5fMWKRSc5i3WAGR196xzu719DsRgjk/Ghqib9/RGSyUNXfRazOlNCLc4SrMzic3VqShRHUpAci0h1Ck3PUQk2Up25sef9riPL06uOm8nVOwDJZJInn9zKyEgPmUwHdXXTNMbr6fZ30FMYZDa+mmJRoKVlfjB0SSkOqXEacz4OSB14ZDhNrYwiU1IH6+dsSI1Dd9cVr/WKcR3t7itJai6Henc+LPkM12UEzXpaQrJk7LCHco6D0PR5SGUFPS0tel0LuELa2fikzJudn+Bdud+jtTCI7OskKzWz315DD4NUfSv4dt2vkNM+SGfX0iQzJ29TdTjJJ62txIfeMjS9q6GP50oP8fTT/fT2nhoPigwMdKGX5+PBDZuu43jQdZn9ylbG3shwTF1NNCZQr4BlRTiQX031jcNYX32api8u3T6sCFHEQAMxu0ah6qGqKpIkoesihUKAsKdjywG8kIOiFNi9O3xaEnsTV4aT97Tj1PPww3UUiy0L9hWRSJRkUrg+AqslmqO9iUvDacXGNWtwBIHMiZ/1t7dfMoNisRaCg4NTDAwMEAhsYtu228hk4ti2gixbxOMZ2tvVq+7NqDUEcSozaHaZfKB1IR5wZJWSlCBWnUSoeGgNN7Zf4XVmeXpVcTO5usFxKq1s/XqRgwe7KJW6OT6W4u+UDv69PUlg+DD19e30rQzOK+4sIcVharCEV4WGzhYK5bmz1MpioTrc4jhTgyXarm3D4dy4wO72EChG2nFfS1J5LUXr3V1X9Ty90qSmv7+f3t7eKx7APXOGy/MECoUohjFfvYPU4me4LjNo1hIrcJQIspHDUxvOojr6zByOEkZLrLiktS0F/bNUgnT8TpLv+23ad/0tjXODNAjTVIQYO9Ut/LjuUY6It/LgKvjlX16aQDyVguKOJI9OPUHMzlCMdlBQgvisCi3Te3hUHuPZ7Y+TSvXT1XXjxYPuaIqZHw8wKXWQaBQWtqKqQqJRYHKyHd/LSRKjKcQlKspoqzqZa1rHqrntJIUg1VoNwzCo1RIIyHQI4+xx1/GDoXH8k6M0NMQplW7h6acjb3/A/w7AqY9eUTzbyPe6CqyuB4bFTxmWmkGxWAtBKDE720A6fT+1WpBotIiiFLAsH1NTLeRy99PYOHttvBkFATxObarP//sdgsUmvO8EQc6bydUNjLNpZTqh0BsMDPSRTnewY64BL9zCp1cf5Db/kXmPiCWmOJQIo6ORCHhE6zsxDOMttTJVxacX0YsaJa4ThaXz7O50ev7gn5sNkshP8Nz/KBG66+rSgpZCmEIUxSuupp06w5VIvIvBgV6UKRvVNNAVlQkpzvveX13UDNflBs2Bvi7yLbfQNvkyQxUNVdOQJAnHcTB0nZVukenW9xDou4S1nuDVubNppuQ6Cm6IqGHR8uZuxEugf548pIvxexjv3czk+CGE8hxusJ5ceA1NOYlQBT7zmaVjLJYKLuuHtxK1M6Qb3+qwGmqEdGI18dnDrB9+mlKhF06Ivt9I8eDUYInqnI7aHDxnBdNXF6Q6M7GkRZnOLpEX73uI2LNj3KamSdc1kjNV5sZNElaSWbeBgVg/d0dnKbgyg1MGkmKwffttpFKxG+baXq/4aQqsbuLSsdQMilOtzdb0u8SKKXxGCVMNk490Mj4usnEj9PRozMzcRaWi0tKSPuXMMkgk0kxOxvC8uwgGr14Mo2crlINNeNU0YSNNTYngiD4k18RvFakpESqBBFL2xvYrXGzC+04Q5LyZXN3AOLXSAyL5fBTXFVm3Zj91pTx6usScVWTZl3+bmE++KiVtbVUnM/V99Ob2kGtZjTZfCpqH5xGcG2ewfiPLVl0nE/Xn2N3pNOzYAdWqR1SYQ9DA9nvs3u1eVVrQUgtTXC5OznDt329x9Fk/H6w+S78whOpWKVkyR+V+po58nCNHxIteh8sNmju7RGof+EXMJydYox8jpYepoBDEokcoUY6sRP/gL9DZtWinZdi6lcn9o/xgKsFczsFxXCTJo74uwHtbRmldJAfpdP9RCbdz/cLPoh5MTMHtty9tYlNXStFZGSATOzd/IqO101lIUldKAUv4xtcIJ4syQSpYnH3KhoQKOktblBFFeNen+vnm9OOsPLiVlfoAQSODoQsc99rw+eDj7jcJpKqYoo/jgU6e1tcyPNxGoRCBxTmXXRW8E2SLf5oCq5u4dCy1Cu5JfRJrf5KVT21lpTOAho6OxpDUh7D2IR58sB9R7ARKeN4ogheg2Ujjt6vU5ADTvgQwxvys4NU7hwNNYWYjjdQiTYRy4wRrGUSvhCvIFAItVOvaEfAINN3Ym2MxXt7vFEHOm8nVDYyTlZ5arYv9e/tQpmxWlI9xi76PNmmChmCGsp3D/2eheb7SunVL/hlOVoNnnh2jLX14Xgrad0IKujjOuBsn/+4HFx8UX22csbs9BAYGIJczcJ0pYrlBtmtdvDQwRH28cFVpQacJUxw8TJfYTsjTKAs6o+448cZLE6a4EvT29nOL770sr/wp9U6KSakOQ26kPihyvy9F9sjf8cpXY/R+sf+C1+Fyg+a3At/fpOfgU/ToB/G5FUwxxLB2F8fWPsRjn7zwe5+GVIqx7+/kB8kwc7ZCMOigKB6WJZDOKHwvH+Z+9Q06fvHiHKS3Q0SsNVyiFNQ5VAvScLbfKtlakDXBCVrDN2aZ/7SijHb2KXu1ijL9/fDY5/vZ+mQvu3anyI/NMjs5ymPS07T6ppnzN5CVGtAcnVXlIf6VN8tXrTilUhjeJqewZBK2PumS2Z1CqJTwgmHiGzt56JGLFzuuBEvt+fPTFFjdxOJxsnBQKHTS1HQnIyM/Zs2a/iUpNvaT5NM8wbSX5qjVTMltIizW2CDt5oOMUc/jHKj009S0jG5jG1sGfkyvO4uGjY7MEbGRV+P3UWm6j0rl6p3DrZs7GerpQzu8h8LaeyiVi2Aa4FNxQxG0kSTGmo20br6xN8dPkyDnzeTqBkY4HMYwupn8QQMfzj/PRms3K2rHkDyXSbGFo2YXakwhPDQ0Lzt2FVowZ1WDCwOEhAl0T2OvvJGjtz94aUHx1cYZu7sYaWcyJeEVRmgyxnHVILPxfpZLZQanrKtOC+rv7+fn1z/I8Be/RWw6ieKYWJKP/pZ2un/90oQprgSpUZcVB37Cqgab6fp7iTvOArWzBDROHib/8tOkRnvp6j7/l3klQfNbge9v8+YpgWRiUyePPXxpgaSdKzB8KEfe6qKu3j5xUAuoKiiKzVw2wuC+UbxDBdoX0QW41iJiYjRMS7fGxEiFdDpCJDJvp2CaUCxCva9Cy3INMXpjVjLfzqJMfz/0fk4klepi5w6dsV95lkYzw1h43hMQoCoHGRG7aMlP8WH5OcLBdbwdyVUyCd/83SQrD27lZ9wB/OjU0Bga7OMbBz7Glk/EaGqaW3LD06vh+fPTFFjdxOKQTMJTT7m8+WaVctnG8x6iUGijVHqZ1auFK1LBPclekHPDpBMmhbERTAtcH8zGI7TlSvD004R/vpdb1Qne7+xAYorjhKngI4jJRqZYb+/ge+p9hMPnaLcuEURZpPPxh5j47Nh8IpVox6trQKhU0EaSmNE4HZ9+8B3hcfXTIsh5M7m6gdHe3kk83cd9E9+mQ8tS5+awRZmCFKTemaOvVON4sI/ApvUwkLxqKnhnVoOvJCi+JjhldzuvJ4nOppGdLGEFLM/g/bM/4N3XiBZ07Lkk4p8+TZ+ep7SsG8unEjQNmguz2H/6NMc6Oq+JK7s+mKJpboBKcyea33/Wzyv17TRNJ9EHUxdUfbzSoPnUwPdKKFB7jlbJVjTigQq28BaH3zQVqtUAqlNjulDP331BoXff4mbrziUa0dpss+/ZnXzvuxliHXE2fOx2ZN8SPFY7O4nd2ccd+h72mv1MTduYpovPJ9LaInOLMk5k83VS5r8MztqpRZmeg0+xPHOQoFvBFIPs0TZw7PbFdSpd2160l9qZ79/VBfJ4hgb/HsZZQ7UWRFUNJMnBcSQMQ2XWF2O9cpCGyrXpEJ7aLQoGw/z4LyvctfNPaVPnRU2yJ0RNemdfR/zefv58/x1Ia3fg96tLZni6WO+9y+lsXS+B1TuBZnmjI5mE3/3dOQ4enMFxRhGECp4XxLa70PVH0bRnUdXBy1bBJZUiv2MH20ZHOZ7L4XnzyhC6DocOC5Tr6rhn+3Y6Hx3lA7WtaJUyet+7aDTNhblx1+cjMJzkg/rTdLa/Nd96NTB/zj9O6omtKEcHEDMTuIqGsWYjHZ9+8JrEAdcKN5oA0+XgZnJ1A2M8BfflhmmWs4y5QdqtccpSEFNQqBCkQaywrJajWBSIXWUppqUKiq8ZTuzuY0/u4Kk3XuZB6wfUJJNZtQld0q6YFrSYw9u1XVJPbEUrZNC716CKAidtyIyGBNrw4Wvmyh6mRAGdghcgoueRbANHVtHVKAgCZS9IjAnCXDjIXIpO5lIIM6SoY0haxh3OACmvCwQB01QolcI4tsgKjrJLWstcqOmS7M1O/Wwv/8WL/PCL3yI2PY7imIxJPg40t9P9G4/y7n/3gStbwIkyv71/P/EDT5G3fNiegt+yaJgxsdetvT7K/FegxtjfD5s+7uPLX9pMdWAVmqWjKxrB7np+9eO+i34Xx557bt5s9OjRBbPRoZ4eOh9/nBUPPLCoj98aDlOKCUwpI4Q8lWo1gGGoiKJLKFRCEkZpCUBrsQgHDlzVB1symeTJbz1J6tVhjEyFshfl3nGZaGCC2bZbMUwTu1rDshzS1RAdZoq7ZhvZI30QRRln9+69V2x4uljvPdd1eeaZZy6rs/V2B1bXiX/8TzVcF77ylVneeGMMVRmizTHnDaXFKhNSgXJ5JfH4v+Hxx3Wi0cvryrqFAiOHDzOcTiPKMg2yjCYI6J5H1rYZmZmh1fO4ZXCADf4BdtV3MJcRiUQ0AoF5lkA6A/X17dymJRHHr76M5YoH+ln+wV4mt6eozpQINIVp3dz5juhYnYkbSYDpcnAzubqBoQ+mWFYdxVq2mmh2GiomFUdBkGx8Ph+C6ieq57GzBegKXXUppvNtluu2SiiK+HoCrBH2ItoiI6HlS0ILWuzhfdKV3Wh8i450EoIoYCTar5kre8uqMJWAQeTYj6iTy4iujSvKVANx0vE+SnkfgXqNllUXp6FdD53MRFOAPwvcxTJ9jI7SMbL+ZkqVJgJWhU5xjLRQzwvy+1nTpNDRcen2Zi//xYtM/86f01grkQ83YKsqsmHQODHM9O/8OS/DFSdYSeCbwEoBVvp0lqOjA3tEiaPAY8yPWS85FrthT6oxpjOUoh3oWhDNqRDevWdRaozJZJLnn3+CcDRL+/vXIct12PYohcIBnn++gRUrzp8kHHvuOSY++1nUQpFStB0rGkUxC4QPJ5n47GcBFpVgidEoLd3dNI2MMGe/SSzWiChquK6OYczSblt02SJz/+PL6BYokSDxLRuQHnl4SSPxZDLJ137jz2jdMcl7ywV8roXgTrDMzZJUGinoR4D55KdWq+E4Kggr6C2McOjlW5ms24TZfCel0j9fkeHpYuSwt2/fzqFDhzAM44KdrQvh7QqsThpzp9Mu0WgJTdNxHO2yPc2u27NtibHU6xwddfnxj2doL+3hfaW9dFvjaJ6BLqgMK+18P1xm9+47CYfX0HWZ1ODxQoHxbJZW12WZbROr1ZA8D0cQyCsKxx2H8UyG5pkZWlSdW+4OMjA0b4FZKoEsQ0sL9K0MzistXyMZS1EWr/p5fxNXHzeTqxsYJ7sNOS+BLcgIeES8KoarAj5Mz0cIHR8GVITLlmK6ksHm671K2FApsU45xLhvaWhBJw/vTGbez+XkTMG5uiPVmRKipeMFggjneC0vGETMTFwTV3axVqFdmcbQJ5iW20H1oQkWgcIU8VyeUDhO/IF3I3Ytjob2dnYyk8kkL7/8JEmifKH2EX5OeoFVepoO28CSfRzwreXb1gfJJbppbw9fsnmhbdoMf/FbNNZKpBPtCCcWZQdk0pqfRHqc4T/+Nlv+zXsvmyJ4soNw0HHwHn6Y2WIRn2Fgqir5SIRDySS+Kwiiz4vFbtgT8wzF4cw8bfGQjWla+HwaLc393FpKErlAtnpqh2TNmtUIggMnLEPb2/svaBjq2japJ55AypgM+d9NNRPEdUVE0SXg72F5ZjtjX/4yyz/4wYtTBDs7id15J3foOvssi0w2i2nOU4K6wyF6jo0xpav8aDJMyQsQFmus3PMSndsO0fXH/2VJHmKu6/L0H3yDW39yjIhZYVL0Y6gBWq0ycTPPKgt2ZkSIN+Lz+SiVXKKmwipvkG7GSVRnyTn1HMmu4uXYHWzXDly24enF5LADgQDDw8O0tLRw1113nbezteT35RLgpInx8HARy9rH0FBmgf51OZ5m1/vZtlS4GuscHJzCP3qEj5e+R4NbYFJKUBUSBDydNeZRmnNp/saOMThYT3d322W9x+FymRnL4oOmiSVJlEU/liCjYNNg1mh2HL4LDAItmkYiUCG+JUKhAIYxbx8SjTLvDXpTxnLp8Q6vTNxMrm5gtKwKMxEAe2SANmeUqFvD7xrogkLNKVKqRhEiPsL1vsuWYrqSweZLSTTeDrgueKUwdZrGmDBNSDoPLSgo0LqIB+vJwzuTOcVXIzPvqxHp7+RQUjytOxJoCuMqGkL13NrEQqWCq2hXX37VdeGZZ3DDMUpBB1+xSL4WoYAPvxSmU5pArZMJ/NuPXtLD7+2oTp86L3LHHSt47bXb+MPqJ+kUxtHoxPH5GXGW4wt4/MydEcQTHcNL8djZ88xOYtPj5MMNC4nVSQiiSC7UQGxqjD3P7OT2R++6rHWcZrMgiuRPGK56nkehUEDTNHbu3Mno6CjdS2WudSkbNpUiv2OAbaMJjueyuG4eQbDwPIVsNkapLs4925PEzpOtnq9DMm9gHUPTbmfnzmlGR1N0nzHjN7l9O15yklFnI+VK+LSCSLkSZtTbQPvhw0xu3077li0XXvMJ+mVkbIx70mlKy5ejSxKabcP3X6VQhJ/IG7DDASKKh2X52VVeQW3bMLU//Dr9//sLVxwQjA6PEvzeEaJmhSNSEMXnQxAEyoJMzgwQRmelW+BALUwgGCJmw+0cIkyJiqAwEWrDFSU2GHtpTk/zf73bKBQuryBzMTnsqakpKpXKkhm9XkukUrBjR56pqV04VoZVmkFUsyi4yiV7ml3vZ9tS4eQ6s2mXddEUdf4SOTvM3t2dl9zps22X7dsnmZmpcnQwzXtLr9LgFhmUOxeeoxWCDAp+Vtnj3F96FdvsAy4vuToJ11OwzBAGMUx8uJio5JHEMggCtURiQcZSWL2aWOymjOVVx09BZeJmcnUjo7OdqprlNj2J7oWYppk4WVTXJOiahJmiJNTjTYwjNDZe8ozGYgebz4VTE41TZXcjEejv99i1q8Jf/mWJz3zGoKtr6VSuFouT8sbOKyXel0/gN2QyapmGeJZAwF2gBdXLEi3LuxGj0Yu+Zio1/6zYFEhy27atxDMDKLaOJWtk4n2o7Q+RTPYvdEdOlV/VQ6tPowZ6roeWHr828qsnAuVdpTVYYYNudYCmWgbsEqYjkwkuoykeP7/753WCc82LBAKHeeONVsbS3VT0PhTdpK3N5c47o6xaVb+QrGSzFrbtJxgMcLGh5fxYBsUxsVX1nD93NBWlnCU/lrnstZyrg5BOpxkYGCCTyWCaJtVqlS996Uv88i//8pWrSp6yYb3+1RSKAkYGVDVCtH81QvJ03qRbKDFyOM9wWkGQi2iaiiT5cRwHXZ9lZCZCq5fnlkLpnFfz3OuLMzDQRyYTxzQlqtU5vvQllV/+5dPP28r0DFYxSFmOEQhWF54tsuwgSVXK5TrMYojK9Mzi1n5CZUHcupXowADRUgnXsjiW89gj3YKXCKMKcFJt0udzOJ5tQvzeflYOjyL3XCC5XUR1dmzbCC2FDBNSAFlRFpKWAhoZQaHdq5GgiqrbWIrEamcSPzoOIrNSgLzgR5YVRqUu2gqjbMkcpVS4+PPqXFiM914wGKSlpeWcf3+pRq/XEoWCy/DwFJ2Vg3zMO8iyuRQ+17xkT7MLnW2rV89TjLdudVHVFJXK0sjYvx04uU51OMknrK1ED+1HMqs4vgCbW9bzfOkhnn66f1GdvueeO8YTT6Q4elTBskQSlQk+40yQoh0QiHolfJ6JKfjIE2KcFnrdYbzjx4C1l/X5V4dC6GIdr3jL6BAqNJAlQgkLmSlaGfeCJITjrI5EcD/2EOXDY3ivH4aOdiLNwfmi500Zy6XHT0ll4mZydQMjlUpRKBYQBRHB9dBF/4kEK03EKyHj4NUqFLq7qfvX//qSbtjFDjafj/5xMtHo6AARl2h+3h19qmzy+kSZiakahw75GRt7httuiy+JytXZazh3XHNS3rjn4FMsrx2gwx5hhV1i2G7nqNVMIT5DMFijpbmJWxSFyObNi6palUrQMJvk/vQTBGvz6l6FE+peLVN7uD83xmzj45RK8+s8TX51+PC8/GowOC+/mh6/ZvKrbqHE1LBO3g7S0B5hijiaUUCyDWxJZSIfZE16iNApgfL12NE/tRsiAtF8nntjBrd/eI6DxXFe2+6QyyX48M920S0XqQwc4FBqhkMlibl8K/H4GP/4j0d55JEL34uxjjhjkg8qVUxNQxRFJEla2COSbmBJPpo74qf/4SVctDM7COl0mh07dlCtVolGo6gnEruhoSGeeOKJKxIxOHHxYGCAbKCDw9sEMhmw7fm5g3hcYHVbOw2n8CbHC0HGsx5BMgjB2MLaZVkmGJTwCmnGMx4NheA5rTfPXl+cHTvupFoNEI0WUdUi4DI0FD7LRaLotVJx6oioc6cpQcJ8oBsW56g6MYpe6+LXf4bKwuGX9nH8pTyFaBzlHB0agj7Mgs3+bcfYeL7kapHVWanqobo2FSTkU5MZYFCsJ+ZOkPByxBwTXXdoIYOMTkX2cVSqxz2hguYBE0KYPm+a+rK9+LWfgtO89w4fpr29/TQ57EQigd/vp1qtLonR67VEqTRJc+5Nfkn/IQmhwKzaeFniRaeebecySvf7s3zrG+MMvPC3+O0MhBU67lnOI48+srBHl9pD7GoglYLijiQfHf0CUm6EAfekRHmFZdmX+EhsiO9p/4lUqv+Cnb7nnjvGZz87QTHvY31sjIZoBcwcfnQ0TG6xjpIQMsjY2MhkaGDQaycglVDNcxHmF4fWcJQhuZOk18aEUqBeqkfFwUBizlFwrSi3Kx612TCffbaZ8vi/ZPPUC3QfHaYhOEFrt0Zs8ztMH/wa4pzHHYuoTFwlVetrjZvJ1Q2M6sAgwpyfXYFNdApjxMwCouuiC35ySh1pN4ErVmi77z3UXeLDYTGDzReif5RK8/FEVy3J6n3zXRy3UmAyV6JeamJ783s5ELyTUKiFPXveuGKVqzNxvrjmYx+DV7+WZNO2/0lIP8ZRL8xxr4ON7iDd3jBxs8i0djtrNylEigXERGLRVatw0OWuma2olQyzzf0USyXM4hw+nw893k/dVJK7vKcJB9+SdD2X/KqjaOS7+/E9dhfSWj+u617Vg3eyFJ6XLY9VQIjgeZBHw0ZGFmTigQrZgsZkKUz7Ba7t293RP9kN6arVWL1vH/FMBsW2sWSZ9fE4nbcYvPbaCm594RlWuUeozk2y2lHYpK7htcYthNaPsG/fHiYmLnwvaqtCDPsCLC9kGKrEESXw+TwCAT+KLFNXzjLbvoKPfuz2t/7oEi/aqR2E/v5+BgYGqFarJBIJYL6L1draym233UYymbzyOZdSieKszvbZIBXdQ1UNNM3GdWWmplRKuSBbGieInOhIHC4rHHbbuU08yBix015KADqEHLvcdShl5ZzJ1enrW8PAQB/VaoB4fBbD0JmenqK+vp4VK0ymplyeflpcOG99PbczFuqjt7qDKW3ladRMz3VJ6OMMhDazouf2c7zzBXAKj3Xs1TQ1TyMs1tAJnfWrUalGzVOZqUrnfq1LEPvoXNNNVg2gVQ0sz7fwvBUEgawQ5BDNrGWWem2QxuAkYaPMCHUcERuYE0PUCQK2bWMYBrISpV6uEhUrl7b2U9Df38/jjz/O1iefJLN7N7VKBSEYZOOmTXz0wQd55plnLtjZulSj12uFcDDLA/azhE2dkVjXZYsXnTzbztXIT6fTzG37Lg9OHGSdfJSAaGAIEiN7y3xt+zSf+OKvACy5h9jVQKng0pv8vzizQyTlZlRNQ5MkTMfhoK6yanaIVfwTpcLnOV+nz7ZdnngiRSIzzeP+H7Bs9jgBo4RgWDSTxkHCQaLkhbBQULBoEiZJiJNMyK3UdSYu+/NPV6IIgXaaXJ2sKTLn+hZ+JogCTaEaOi38h//fLIfLOsulw8xKURKBeyC0loZQGx//aCf9/Td2kP924HzH3WN3pOi5UGXiKqtaX0vcTK5uYOhpCcmSmQlHKKrrCDkVZNfCFpV5SXbdpa08gZ5VLvm1T6PtuB7iuIdQdvBCEm67cFH6RzgM3UaSTdueIGZnKETaOVYAx7PZ4E7QP/lNvhsq0SCXcPv7ObQUAeIJLHSdZ22WS4cJunNU9Hr2vLmawwdF3r39n/AVhzikNKJqGo5UzwFVo600wjJrlvbjbyKv3Ih4x6ZLqlp1kqLEAAdLdcymD1Cr1fA8D0EQ8Pv9NGkJ1oSSdJICuhb+7lT51cE3k2w/tJOB6lH0nwygvXHlB+/FGia5cCepYB/ra3s4Li4jk81SrVbnkzpBoN+bZbDuPqLhTkpLyMFfaoTDYboNg03bthGzbYrRKAVFwWdZtExN8dGxJ3mvKxERV7G/ECHrrKDOZ7PBO8B6M8ku73Zq/WtIJg+d915MJpP89z94irR2H48V3qDHLDApJqgYHnI1SxNFyqEY3b/+c2+JWVyGqt6pHYRdu3YxOTlJJBLBMAyKxSKBQIC+vj5EUVySORc3GOb4jIY+N0dNrJLNVheS+kAggFQJcNzTWBMMz4dRYoWXAnfRY0/RVR09rQvQaMyS9TXwPWkzt54nyD99fbNMTkZRlCkGB4+Sz+dxXZdcLsf09DQtLX1Y1q0LszDROpnB1b9I876jtOQHyQVaFrzU6qpTFHwJhlb/Ag/WXf7xFl7Tw0G1k1urA0wowbPMsOurafaofdy9puccF/MtsY991moyQ8KJLmCEeMNqbikdXhD7cBGxW7uoLb+V9kOvkazpqJqKKIrzvjyeRwCJ7/hWcWRdiQ90L2f5945z1OxkziogigKmaSKKIqFQiJAbIFovLUrV80LoB3oFgSpgex5GVcSdBndK5GMfm//ekocOsTYSoU6Wydk2B4tF4onEpRm9XkO8JV60llI5gqJYyLINeJjm4sWLwuH5YLFSgWjYJVqYZ2UYvhADr7zBQ2MvUe+VKIfDlPxRFMuirzJH4tUKf/tbXyXfUiObzV620uK1QrQwSjyzhzEaCASDp3WnpWCQsUI9icxuooVR4Nzd2+3bJ/EOT/ArzjdpSU8h6RYht4qKQTuziDgcYRmWaCEIJo7gURB8dNo5akGLDR/ZdNmfPxfuZDq2nluU1znoJiiVyziOgyRJhEMhVjnTvJTppzRd5j8F/4nuygSKo1O2YSzYxV7x0zz9nS56+2/4Jso1xYXm9Jy9JT5T1IksO8+IwaUMP1/nuJlc3cDQEitwlAiykcNTGyjLb1VYPc/DZ+ZwlDBaYsUlv/ZJ2o61v8Kyg3ka52bxORampDBb38jRtVG06PnpH53tLh+obUWcyzDbvRrDNCjXDBKKSMgosbIyxKraEMVdYTLHE6hLNAh9kidu7d/JB6a+RmNuEJ9jYEoqq+pWsU97gMhkkgl/5LQDo+xvYECtYyI/ToPnYX30E6z8l1suTcChUsIvpBjP1WPYflRVQJJcHEekVNKwamlua80hnuPwFmWRUkONbw18h0zu0mfczofFNEzCUZH93Q/RPDCEeux1EGKo/gghHOL6NBN2iG+Z/bTPDLNrV8+ScPCvBjrb2/lArYY4N8dsd/dCR8NQVWYbGujev592TUN+fycDP9hFk5ugWo1zxOile3aEwEsVfrD6PbR1qOe8F13X5Stf+Qk7d96FFm3hdVHgjtnXaLfGsVGpuTJvKnUYW7r4pXd3nvyjRQfaZ160kx2Ev/iLv+DQoUMIgoAiKfRpPayILyNcq8N1vSWZc0nRyR69i+b8y0yfKDpIkoTjOJRLJVqsY+wJvIcwnXQBq1ZpzDVp/FXuX/KQ8DzLqikSRhpT9HEktIqt7s8yV2+zapV23vd8a32vsnevQal0EFMv0yWWaAkr1GSBo4bEyMhBMhmVffua6OrqprMT2t53J98zPs/mE3u8rjqNKamMxW9hR8u/ZcXP3H5F8+eb727nf/ffRdO+WZZVRklrbyWPCX2WlF3P4C138+t3n6PDcXKGcaqDORtUVX+rCzitYsjt3LY9SeaHKb75RhcDAyJq6OPc65umV59gouqgyQUink09NsfFID+Klehc1cPRjg4C7Rmah8Yo+fpobgkSCMi4royh++gykjS+e+OiVT3PiRPRkZjJYIS7SOaClKYrxA7tpfriOEc/9Dg/v/5B3Ke+iPDGYUTDxlVl7u3roPOXfokV10lycCZaw2HSmsrhsodp+ahUggiChyzbxGJ5JN/ixIs6O+efobM/TnKPtZV4dn62tuII3Do8huNoHAytJRooIghgqhJTSgvNcxOEfzjE9g1l+lb3LRQvrlelRaEyiOpmqIlrCWCd+VNqQhOqexChMsj5kquZqTLvLb1Csz2Fv1bF7xmUhAC6pxAnR5AqPYwzTBuGqiG5LgHLpOwL09ETRZ6evOwOxslzbdnIGLfZadJ1jVQFHwHPJGHMcjgdZr+7msfFfyShZ5iUG6hKdQQUk57yIG3H/oDtr/83UqnV110T5Xqk5Z/8XBea03vdvoPjJY215QpC9GxaMZV5ZUY3GCY1ev2t71JwM7m6gRHo6yLfcgttky8zVNFOC4gMXWelW2S69T0E+rou+bU7Ozvpp5vOH+2iAZO5YD2WoqBYFu3pcfw/miX60O3npX+I46lTjPkEZNkhYhRYbY3isy2KcoSwWsKVYrRMTXF/LsdsY+MVD0KnUjDx/R38zMDvEbUyzAVbsZQAilWlPbOfZmcQnymQDS1Dw8O27YVDTpIk5vxt+MsTlETjknez7fczMnWEkCChBG9FMzQUW8ASBJRgAc3cx8iUS5fff9bGu9IZt3NhsUpPnZ0QvqOXPzn8CO+R/4F+MYtqTmGKPoYifTwrfoTxQImXXnoJadDko6N/dEUc/KsFcXycDX4/u+rrmctkiEQi+Hw+TNPEzmRQRJFIMEg5n8OyPCqVJmxLpkHOggbrzX08d/xDHMjfT2Pj7Fn34uhoih//uI5VToWH9C/RVhvGEfJ4okdVrGcHd7JNC9FqbHtrDsrvX1SgfT5Vvf7+fn7t136N8fFxmnP1rD9m0lqaw3d0cNGFjsWgUIJv23fwi+J21ghpZmlERyOIQaOQZlLQ+LZ9O7ecuCRdXZ3cd9+LPPvscr7k+wyrYkNExQIFN8qgvhLdnOSj7z5O10WC/PkEayXf//5e2ktlHpC3s0acQ61ZGIKPo0ozT7mbOFKa5dVXd/ORj/y7E10veGLsdl5s3vBWd1qsZ8RZTbxRvuL5c1kWeehz9/KVXxO5J/0aa9xhGsQ0VdfHdmc1rzXfxad++x7kc8xDnpxhnKnI1MxJajUDz7NRFIdAIMCMEGckqfPsV0oc4MRM97J+Djf8Jqte/jPeVf4x9VYWcCn5ArjLFT5wew9J4MjQEFanxkccnftq00zTQ6WqEaTCKukYTXfEqf/kFSz+FLWG2fhqXnlVoFCAYDCC17ya1vxhqs9/FevZGnEhwpjvfkqyn7BYo2dimrq/fx5WrHj72tcXiDqH01FKVg9+RyIoDRFQBUyCZO0YlYpJS1Ckpfvi4kWiCD+/PsnEPzyBUsiQS3RAXRArNUyvlaIshplT66kKbxU7BVFgWg7RWcyiD9Z4JfsKsiwTj8fp6+sjkUhcd0qLFQHEQJ6oXaFQjZ1lUxJV5hDlPJULjEV1kgN7FKlm4fcMskIEQRQJeDUcVyJHhCgVGt0cOSOKK0pUIvXU3dFLY8ji4LdfYUo8QKwjzoaP3X5J1hadnRC5s59v6Y/zwIkkOG7r2LLGcGwNfzp7C++T3qDOmWGv24BVNfA8nZwgMC0m6C9P0j/4LUqF/8LFRI6uJa5XWj5cfE7vnuggE3I9y4+MEbp99VmMAMbHmWnfyNf/vp3M3tEFj8z4xk4eeuTaeGQuFW4mVzcwOrtEah/4RcwnJ1ijHyOlh6mgEMSiRyhRjqxE/+Av0Hk5JnwurDtqIjo6R7UYmiQjCSJVSWZOidCt54keNcHl3M+dUonYKcZ8kxMyy/QMPs+grIXRVB3R8qg6AQrxCHVTk9zleYSvUJGukLNZdfj/ErWyTMVWLXQvTDXClBJiWXo/dZ7JaK2dgl3CsqwF6p6iKIS9AI5ioSWci1+iM4aSU+Pj7NV17pJ8CPoQUdtG8lwcQaTgyXiyyWs1C//kJFt6TqcTnUuM4aSvUSEaveSD99QK0ietrcSH3lIuvKuhj+fO6DLdeecUf/u3fo7E/hOrQyOnBcr+oM7GNYcYHCjywKG/x8ldPgf/qqJUIqaq3HL33SQHh5iaqp7wXhJYUd9AveehqSqGB+VyByG9SB9DxGoFZM9Gc3Q+5f8qf2V/nBnvLoLB05OVwUGd+hmdf2v/Iw1ejqOWBl49a0hzq53kLo7ygdJKMrviHBmt8LT7bXo+8cBCoG17qbPodjNCnKlhnch5VPUAurq6uD20ns7vX16hY3GXbpKDToxvt/w/fKD2ymmdqMHQKl7QtnDQiFEqTQLtiKLIpz71Lqanv8nBgysZ0FciCCvxPB1Z3s/ttxzlk598bFGFAFEcZ4X5Az5mvE6TNM20GKdCGL9rstqYJO6afD1Q4OjRo6RSH6arq+ukwB9bt8oMDKxfCDI29i/d/PkDD8x3/L/8pTaeH5hDs3R0RSPY38CvPr5s4ednYrIUJpWWKBXSuI5AUBCwpSAVW8U089SJwxy3NYbTYda86y3LhmB0hu42i/zxdoaF9bjhIL6AQo84wx1GgNonfo65pibC4TDtpRLFv/07EnsGES2XUEOM4O0bER+6wsWfUGvI+Dt49jmB9KxHxM0T8DKURY9jfpVbvR+Sslt5PXgH3SsEWnxgWUEO5huovXEY66tP0/TFt6F9fYGo0+3t55vbO1mvtPBB+QV0w8LTTWxE8kqEEXEtbW6CyJ2LEC9yXVbs30qiPcO+ptXkswJ2DnxOgKrgR5OqrDCHOeBftxA8mqZJUa/R6TnE1RhqvZ/6chl3ZITU7CzCvfcSq6+/rpQWtVWrmGvSWDV3gKRwK9Va8C2bkmCJVd5BRus1elatOu9rbOgJoEsFgp5BkcDCeewg4iJgo1BFoypqmGv6qF/VSm9fGxPbDnDsxQOM/3May5MYk3wcaG6n+zceXbQ5+wmXBZ4Y6+er6V7WdqWok+cLjNvGoli+l1hdO8SQHkJ1a8REAUuUKIkituNwzA6zMr+futLpNP63E0ttgr3UuOicXvooldh6jGADocOH52esTqoFjo8zJ8X59pF1dKW+wM+4A/jRqaExNNjHNw8+xGOf779hEqybydUNipMFuub39POTY7/JLcNP0WMcxOdWMMUQw9pdHFv7EI99sn9RZ9yZiYKYcolNj1PqXElY16lWqxiGgSiKhCNhxMY4kakxJrenzu0mfoKYftKYr5iqUs5MkzMAQcAoaxQdgdHJLpySxJxbpB/OOfx+KTCP7qSjPEAmMG/u6nkejuMsBLRjWhd1+gGWGYfZbfWh+HRkeb4aV6tqLOcYM+2wvu/8Bwac2//Ltm1cu4WP6CXC7hxZKUhFUNBcly4rR9Hxs09pZkU6fdbrXUiMIROPc2jlSiZ0fdEH78kK0qNTTxCz08yqjVTVBgKeQcv0bh6Vx3h2++MLXaampjm6u5/DMD7EwHQfpunD5zNpbZ2kr2+AuroKwvExGufmGBMun4N/VXHinhNrAWALYHEy+3ekCngvzVfHfA3E7BlW13YRliyqchDT8+F50Fab4F84X+PbgV/mrLvRDfL+6uvExCxH/Z1QnGWDPY0fg2khTtybYz1HEOcGeM+czODoKD94PU1oqoLDMcqCiKqqb9HtymXCXpEpSyF8QizknLhAoSMjBek2Cqw8VMS1XUTf5QW04XCOYDDFYXsT2Y4Oms1Z/HaVmhxg2tfITLqRYHA/4XCUk8P+/f39fP7zj/Hkk1vZvXsXlYpAMOixaVOChx9+bNEU1kqpwIetbxFH4pB7K56hEHZ18BxG3EY6xON8xH2ZH1eip93/Zwj8XRX6yAMPrOCDH1y+4M/T1BRg8+bWc3asTmLnTDtT+Sj3mT8CUUARHCxXJmvFOSZ3Uy9k2eXeR1OozJZtfzhv2WDVCM8exaxYbFfeRd7XSHcHSBIczMep7TxMe+tO1vzRf+SHL7/Mn3znO+gDA7SbNVSfj0D3Ku7/2EevfF7nhLDJ948FsafT3O++Sac3iuZVEB2wLREFmwGxBUez8RsVAraBI6v4ElEmp9rxvZwkMZpCPMOf7KriIvLOU488TnEntArT+D0TRREoaPXIwHKnRI+7g6PWHUzd8SBtF7uBTiSgkTUdbAkLC6azVjpA5TmBmicRtQqEnAplOYTneVSrVXy2jSlIrPNybBqeptEwcIBiNkv6xReZvftubNtmYmJiSRUEF6NM6Nouk9tTVGdKBJrCtG7upLOrixfvu4/Ys89ym/om6boEVcFPwKuRMNKMGwb5d/8MnRco9sl1URqaZOSSToEQwgllS93zUSFIlCKeIOAKEoHmGG1rOhh9Ywjx1R3YnkYmlsDWNGTDoHFimOnf+XNehkUnWG8VYUQGBrrQy/M59y0bclTNl6jbnqLe1GiggIyDLUjMiWGOKfWk3XoUZ5LmYOEyr/zSYslMsJeIU7hwXxUK1JVKtIbD1A8USKQvMqdXHMP4yKdhfNd8IWRiYp4KuGEj3xtYx8ojz9Omzscss8J8zHKLsZv4zjFe+erj9H5xcTHt242bydUNiJMeTZndKYRKiaIb5v+0fJYOYZyION9GTWzq5LGHF9dGTSaTPPmtJxnbNgIlC8IKy+ra2FItobUuo1MSMQxjYSOrqgqOg3h8kOrMeYL9k8T0E8Z8Uc1EDPiZrPixDZFGcY6cv4GKLFHJKlR967irI4NYuXyVK4CIMElQyjHtLEM2S1Sr1dO6U6Jbz6wgUhWPs16GMaeTihMiRIUOeYBZb4odLcv5VxeoXi74f81mWC51EPQ0KrrOG5O7ubfawjgamlKjzqkRcRwsz8cRoQfbUVhe7qVSOvu1zxRjmE+G5g+ylqkp/Ok0U8uXL5r6VSq4rB/eilYZZ6ddjzs+huzYzEgyx2P1rJPHWT/8NKXCvHJhOBxGVVVKBZ1WcwKfaWLiA3f+MKxUKkTFaTSvRE1af9kc/KuKzk5m6/sY+84eptXVxGI+FAUsC47nZNpzEg1x0JUIve5egoJJ2gsiexJ1TpGMUsduoZ1VwgwPOLspFT7M6OhbQUlfwMYSxznu1uM4LquseTnhLFH8GAQx0DAYoQ0Vk7BZID+YRLWydPkEjiXWLFRuZVlGEkUac0Ps4XbmJmvcNjq6EPicGuzUpgvEpsdOK3RUq1VM0wRgWg5SP3CIL/zq7/PQf3j0sgLsaDRMd/d+RkaWMZtpQo/48QVMTNNHMRNBUfIsX76faPTu0/6uv7+fz32u94pkpetKJXq9WYZ8MeqMKiudceLevDSzIwiUUfFVfRystJx1/18Lo2pZFtmy5fzqcafCdWHPP+1mnT1NUKjhIpIjigC0e2N0mGPskddzgFX8ytD/okkqUox2oNsWweohJMfiNukNdrt34roJAgFINApMTrbjvrCHv5z7JIMvvMl9xRydYg01AEokQmpmhm9OTPDY5z9/RQmWGwwzOq2hTKe419lFC5MI3nwXX8LGj4WIw13u63Tkx4i6An7FwxVlCr44Y9pKirM6E0dKdFyrR8AFjKe8/n4qu3Yx99dfo38gjGdX+ElgPc2FY8RqeWRcSrIPzaeQUVoIJnovbll7ilygIMAJf2+8RIzBHU1o02N4poVg1fCkIIZhUKtWuZ08ETnHPdPjBBCoSioZKUBJCdA2M0vg2WfZ1dLC17/+dfx+/5IoCJ55tnshmei6Bra8awu33HILnZ2djPzzkbfUai0dV9EY6umj8/GHeNenPsU3p6dZefAgK/VZGgQB3fPYK8scvf12HvvkJy+81zs7Cd++FoaPoro6hufH8wQEwSMnhKkX8ngIOIJIIKjizuXwfvIariuQTKzDVueplXZAJq35SaTHGf7jb7Pl37z3NIrguZLDkxYm5yrCtLdH+V8fFmk304BKhSA2MoLn0ujkCTkGQz4X1BzTldJ5C19XRVL/PMnPqSbYtj1HNBpFURQsy2J6egpZPt0E+5yf7cgRnCefIvPqHqxiBSUSJL5lA9IjD19Sy+vkfWW9uIdbx4ZJ6AazET+JkEZvbYyiegcGZ/JF34oRnIQLH/+t09aZstsRHv0CMXuCXU491Wx2oSie8ofo8yaIvfw0qdFeurqv/+zqZnJ1g+GkR9PKg1tPa5sOin3s7XqILZ9Yxy23LL4YkUwm+dpv/Bmdb6b5kF5C9RwMQWJWnEM3cjjZDP6mJjTtjMH0SgVX0Qg0vRXsuLZL6ifDDD6/E9Mw6Fi+jLV1xxEOHaIsiJQqMhHRQxVylD2ZQTGB6xk0NEiE3DDZCjSfVCO7TASbm1AiFbRyltm5AIIwH8iCD9sOoNnTpIUsL9T72OSM0eOkUT0RQ3A5Ihn8uC4K8Tjj4+PnpN+dnI2y9lf4wFT4hGDGvNDHOq2FqDfCQaI4Sg+aq6EINppYQfdkZM+hz83xxlP13H7n6c+yk2IMzkyNXf7NVLNBXFdEFF1S/g6W17bzwRadzvbFBXl1pRTN+f2MzJksqx2i3iuh4GIhMlcOM+JvoLl+3wLloVRopflgKx+e/Bu6fbOIioiuBzhyaBWvztxDOj7HhrpNoL1IlMvn4F9NuIhs5SGWC2OsEQ5T9NoxCeL3KrSL44yE1lLww7Ijb9LozFILxglaBpqRpyL6OKa0EIpEcLQEXeUjPP/n/41Mdj9CpYIXDNLb0sqtYYvRQhuByiz1XokiARA86r0CEi4mMp4gUCJI2NM5JPiR3TBxO8fy6iizahNlQqi2TkKfYNIJ8Y/VHiJ/8QXan7Vpbm7mVrWfuh+P4D9+FNGoodgmjeUxap330NDQiaYVyWTG8SkKjaqHhkW0WOH4/sv3vOrs7OTOOyPo+rewrAfIZuf9fmTZpqVlEll+ns2bm85JPRRF8YpmRFrDYQrhCKOzIW5xdxEUa5SEIFVBQcGg3p6lyRHpqTxIe/v1J/F9KlKjLisOPIsiVHnBu49ed4AGL4+MQ0XwIQkw4baxXtxLsDZLevlGEATkygy2I1DyNRN1snSbA+SlOCAgCOBqApWhcfqOefyinSaIRYkAs3qAWd2lN1EjvnMnr3z1q/R+8YuXHeCl6GS/uYrb9f9LnTeLh4eEi4g7H3ziouASoUyPd4yU0Ynhb8IqWwTzx1nhjjEmLuOvvxHksa5rRFE6xXjKQ6CQn+8kVSpzjI8fojo1SXhugESxjZ1CCEOVyUTXE0VHtHUqlgeCRrs+tTgK2Klygad4fQmiQGLLekrfnUOu5HB1m5pdxmdZ3O5mWSZmCPlK6Iafo04TPlcmbFaQago73F7a1OM8LDbwat29WE6B3bv3XpGC4Jlnu2yblG2PgZ9M8Cf/sI3InQk2Rzdw22vHCelljMYOvMC8ea52eA8Tnx2j7X88zmOf/zxbn3ySXbt3LzwLE5s28XMPPojf7+fAgQPnTyxEkZbP/gpDz79Me3majC+OKSj4sIlSYc5rAMsBzUeLWCG7b4aKqTAcWUVRrTvtpQRRJBdqIDY1xp5ndnL7o3cBcOy5JKknnoKBQ4hGFVcNMNS3hs7HHz5hdXJ2Eca1Ydl0AAGBCHkizNOyXUSqaKgYbBKK7IqFSYTPzSo4F3vlUhPisxKgSgWefobqmwPYZR05pBHY1If48EMUzF6Gh6ew7TxNiQaazTT+6gl2QTzB9GyO4eEpCoUIyeSRsz7bPfX13PPmMHODBYb0ZkpuE2GxSveu7xJ/YTv1//UztNx//0WfHSfvq1t2HOPe4mFUx6LohZjN+JhQfGywa2xkH7uLt1ENBs4fI5zxpegvjFI/c4BBW6TsVU5neVQqDAkizTP70QdTcC274peJm8nVDQTXhZ98JcldO584q216q7GbRHKM0Zcfp/Mji6cCPv0H32DTq6MLsxz5E7McHeUs9UaO6vGDOInEGV4yHlp6HGPNRlo3zwc7x55LMvibf0Lr0W30OjkkXCoE+X6wHa/dRK3kaCkahMkyHWwn17SGSLiJoKMgiQpN2SSH2bigRna5aN28mcG+Flpef42suBaERhxHQhAcVF+GLvbwplthqGMFU6EQvulpVNPE8PmxWnroWbWKubm589LvUqkUE98f5mcGikSt6mnzL135FG3eFJN0ka4FCXgWPd4gDeTnq/BIiCjsP7KTp59eQW/vydcEfWCc9nKYbdYG5mo+AoEafj+YJmTnfCBv4H7LQhwfX1SpvjlY4Hj+GMurNfzolIQAJWQUbJq8PJGqji7O0RwsMPSd5zjyq3/Df5zYieaWKOkqGTlMMdjKGm8fkaEMz41/iGJPC8eNFN1MoIc0LMt3yRz8q4lUCrbN9ZPb8jji+Ly3Wrg0gS1rTDbdyuuJtdTSFT6uf4dmt4qtCwRDCsVoN5loN7FQEz6fythoge5cktUvbSehxFBdAVP0mD14CNGGtlgb1bkwCi4FRHyeTQADCwkJB0eQsDyJMC5hVWDAaGW5o5GhmWi+QLuZwvIE9nsr+XvxIUaDs7yvocLw8ATHXxhiVf5NAp7JqBLCUf00mBJtZp6Ooy8zFLyVghtGc0XWKWPUmzl8jongejxmyjw77LssxbG3pNGfID3zVfq0PjQrgK5UmdUGSDQ1XDWJbTEapa6lh7VHjxLxChQ9FUEy8VCouQIOKq1ijVvKGcZT0PU2NEUXC30wRVPuCEcFiRwhMsJdxMQ8PkwMT8HzZJa5KXqUMhPSOuoAQ9dxai4NnoQiWBSJkCCDRwGDGJ7nIU0dodWYogUHURQY9dqRgbhbIVBWOeB20R+fIPbyy6RGR+nqvryLVKqIHPBv5l3eX6FRxUNAwsVGnKdNISHiIWMj4RAySuTyYWL2HAGvQtAtEfDKjLz2j3zzdx+5NjMSJzpJ6WqQgX3zDaxKxSCXqyJJMdqaPLoDo9iFLHNmKz6xgut5VHxhUMJ4mkdxTmCZMro4CtgprIzTOmVA/ao4vlQ7MzNtJMx6Gk0dy6cS8GwMxQd6PTk3iu2p2I5DTVCJe7OsIswgH6Z5LMexH/UxG2ikoeEuSqXnFrefz+h2uO3tp53ts74wGVtE9Uw2OwXWZhWef1PAbx7GqsyR7bsVWZGx9RqO5yE2dhKbHCb15a3c9/xv8Vuf+9xpSUClUuGZZ55ZVGIh37KO0md+A+uP/hf15hyOLGNLPnKEKXhBpsNNdP3GI6z82EYGvrGDwhv/wFzw3P5WjqailLPkxzLAfNwx/GtfwJ2dZFIKoEsyWqlG6/afMDx8FPhPCwnWqZjcnqJt8iie4EPxyni41FDxEIhSRMalaIc4El3F3ecQOFlgr2QuX9n3zOSs2zD4yEiOQDXKGMtOJD81eo7spvnAGPYDj1GpKGzQKnxg7AWWVVP4XBNT9HE80MkL2r3srWQ5cOA1tm37h9M+W7VcxnvqFY5NSQzK/USi4MckV3J4rdLB6u3HmP7Xv8XAx+7iIx/7GPefJ8laiBlfGWGTcQzXlTgutKCIJk1ulpDpY1JopMNOs9Ie5E3rtkXHCEGvgFvNkhdiBCP+0ymFkkShWKPRnCPoXR80zYvhZnJ1AyE16lL3460XbZuODq9ElMcv2qoeHR4l9L0j1LsGU/WtC6aK89KxrfitKkGzSO3IfpzW5XjBIEKlgpYex4zGaf33H+W17ZMMPz9A4i++xKrCfiRswEXFIEKRlso0I0daeGbZvcw03cpH9KcRzArTaR2nLCJWKzRa4wzJCf5J+RjaAfGKgidRltF+4ReY3vkbrLVfI+NvQpfmfYUSRpq8X2ZbIEGxXGbz3Xcj3HILhmGgqirRaJRisYimnV95rZArsOpwiahVZSrWcto1Gw+3sUxPsV4oss/Tuc3bS4AaRQLYhAgJBjGKbJn6a1783nJ+ePudvLF9nt7ZMvUmdx7SqUjrCIfnsO0ytdr8d9vQEEAWllFOH8e9gPDBSdimzY+2vkZHZRIfIuO0IAge4GGikvH8NDODXC2z55+fJ/2V5+gfzwAiI6xAxqTeLuIvTDDESjYLb3KHfpByehkGWSK1HEHPoNAaxQsIl8TBv5o4ydap9Pazrat3wX9mLjmEtvc1ekr/B8VxmCCPXxAYk5tJWesINcWIxgRqhSrHjqbpKO6i0z6GYDZzQOrG1uqJSDqdHCdsDdEfe53ZFe/FO6ChuiKS5yKesMOsEKTmKajYuKKCqyiYSg3d9PFC8b1sdrexys0heA6NZPmw92O+a3Sxf7+BLOb4eK2bemeOQ4IfBQHBlKjaQWwkOkhRX8lQEEIE0DEtjYIvTNCGij9Ac22GR6dknt2+/bIUx/r7+/n59Q8y/MVvEZt+A8UxsSQf+ZZ2un/mwavnv9PZiRqup88Zw8Ij6um4NtQEmZwYJqpCLdpNgzV33VUtz6w8B5wcopGnJmrIQgHHbsJxgjj4cFEoIxPgMC11VQb8GslkBtct4NguQSdMczWD7mvA77ORHQMD0Ks1unNDgIiJS9VL4KDiCg5ZIUyDW6SzVuRIqZ9W6yD64CBuV/dljVWEw6BHG5mkkQA5guh4iEh4mPgwUJAp4+Eg4BH2yqjGGD7RBqBMGFvRuMt9jZadE/zkL/89wUcK6OkZAk1NtG7ejChffthh2+7Z82/hMHlDY99rFebsCJGIR6Ewg+fV8LwmyrM+Cr5pdDlHnVAlb8Uolw1iMR+uO19Rr1MzOErmghSwBZxUShgbg3MM5YfWdxP497+KWghSnSkRtHNMfP4/MjgeZ7UxjoUPn8/F88BxNIpenAQ1hmyFsFfiDnkHh8U1DE6tRFIeZftrz/Dmk08SFcVzX8NzCHnkE410fPcw9a7FVH0LhWKRsGWw0s1T75Soo0jvxDSu6CPpa2V6+BiiKFKr1gg5FqoAJUkktH0b3/vdv2D5+kbCQGdPD8NHj/Jn3/426Uvw6rrj//0ELze1M/BHf0P97Di4HkU5TL6tk+5f/zk2n5ih0gbKpCUV2TCwA2ffJ5JuYEk+mjviuLZL8vf/D+LUGMNaDM0/L57gOA5DNYnuqTGSf/D3LP/g7y1QBE+iMlkgXjyOJyiMCu00UMDv6Yi4ON68sXHNUVE71pzVrT+Xsq/nCbhuJw0NKzh+/BBPPfU0v/3b50+ITyZn2XSaddEodZrG8m0D5IdtXvViaP4MsuyS8xTGhUY2bJsgIj/HOqmRn5vaTYs8fZq34KryEOF8CTu+iTfemDxLdbjN8WjMKow6TSiBPIIQoFQq4To2cWWOih6gZWKWv/3Gt/juiy/yoQ99iE996lNnfY8nY8Y2p4DricwRw8HGdqFGiDhFCp6PrBei3UxRTtgUAg1EZYdGcz5GmLv3fYjjMLjnwGkUTi9YwhB1Ap4PzkEp9Hs+DLGGF7w+BF8uhpvJ1Q0EfTB10bZpw8Sb/N1/+yOG3eRFK0pj20ZoLc6RC9cvJAknIYgCE7E26nPTuIk2IoUsYmYCV9HQ12xgoLeXz/3hUbyRMv9P+kXucJO4CGg4KFjoqFTQCFGjixk+mNrF5zse4m/aP8G96Z9QNztFqHAQn2QzJjbyXbbwymwL7tfyrFoVu6JqZ/iOO/jR2rXcMTlJ01yW9koBV5CZirZxbMutlFIecyNzjI6209ISQtMMotEC4DI+Ps7GjRvPq7xmHq3SUS6QCUTPuma65mdKbqTNnkEUZUIYzIlxBFFEFgT8dpWU3InPK7F837d4/gsBbpv8DvfpB1AKMzRVR/BLcwzLG/C1dp8wuZyfcROKBaazMrN7Z1kWHT1vwvzyX7zI8Be/ReL4EZq8EiIO4JF1G6gJ89ROUbQQPQPPVRn56gs0zLo4nkIGDU/wML0AacK0McEW9lLzVBzLYbAAjhRhOTki1QLBWY+6phI6l8DBv4o4na0jko91UXrjddbueIqolafshmkhTYswQb2XJWFlCJdKHE7dQS4fxVccZoN+gNXWKAIyRcuj3x1gWGiiEu7gkLMWxTGIF8fZ2DdEujFCIJeh5rj4LBMdhYwQRRQEouhklDhWIEi0mkE1dR60n0RF55iwgpKnEBJybPB+SIcR529m1tLY4bC6lqPsiUQFD1OSCeoeG9x9gEMFDR8GYc8lgEHNs3F1kYIY5bDUj1OTWGvsZ/3wMKXCpVf3jj2XRPzTp+mr5Zlr7UCXJDTHoa+Sw/7TpznW0XnOKvBicMEZ6iNHqA4eQ3MsQMFk/j6NeDoNQp5qqIOhxAa04hxhlv5gvdz57nPNqna2y6zxKkSkJjzDZpW7nThzC12fIhFqnogUCeB3tgGtCEI9kixzzNdDxCwRd1IIbgBXlFD1AtGJ/ciuwzFfF13WMKanIIj2iYaJQEkI0ODNMaIvw3VjzB2X+YP/bpN69QheMY8QidG5pZeHf06+6HO1sxMaV3jMvlJPI1EkoIq20KtSTsxa2si4CPgwkbx51deaEKTka6DeX6MQ7aRpaoDQX3+K4a05fF4ZV1EY6umh8/HHWfHAA5f8PT333DG+/KVRqqcoNwb66vmVX+kkXOsjOLcH6YSnYq1WIRBQkIQy7blxjrKcqm+Gld4+9ttrMc0o5bKKogiEgiXWiEc4EhTOSwE7C28pJZw2lM/GjfDgg4j9/Quv4+47wKzTRN4LYnmTqJKOhQ9BAEGwMAkQp8g9vEbYLuOf0nmX+grHA53smFtL9/Ah5nZupeoJuKrMYG87yz4zfw3dQ0nKf/AEznSaWbUexx8ialjIP97BXbkRkrF1OK5LqFZhgz2F5pkYqOSIEaGA6haxdI+c1Ywkiqy18zR4ZWRsZGzCtTKTf/gGslpD8CSm1BDFUJh7Igpz77qX7Ala5GIsQ979Kz+L/YmfYc8zO8mPZejoiPPRj2ya97I6cADCYTZ8ZBMHmttpnBgmrfnPYMy41JWzzLav4KMfu53x10bxBg4wrQQJhk4XTwiGgkw7JonkfsZfG6XzXadXbPV0iZhTpSRH0D0f464fVTARPQfLAwWbKDWq03mOHDlyWux0qrKv4EHxQIiZwUa8okBVCmCI7Tw5WePOO6d43/vOnuA7mZypw8N8wrKJHjqOv1IlNj3HuFNPnThM2WkgEqnDcRx0Pc3hYpD+14/yL3mVkBvgkLcaFRMJhyIR0l6cle4AH/W28t2xZpYtX75wPQByKYvlhojl8/Asm3K5TNQqsMqdJWaVUfDwuxa/6oT4e8Pg+9//Prqu85nPfOa0tR9/5RjNhQw5OUiTPovhgSe4C+9VIkDAM9jvNrLRrKFNjiIqw1Q1jR2xGLNtd7Jml59jT//nExROP/uX9aD+/N1Y3R7pBpvOzCRHKr2omvkWpVD30SscIRV3KESvzCD9WuFmcnUD4WJt00zWIGjMcPzgMA33JgiFAhesKElVD9WzyYsS0jneryZK2JJC9Jc/Rtetq6jOlJitZfnf//wqua8d5BfN/axihNXuBCGqeIi4iJQIcLLyUEPDxaDFm+VD6af5C/+v8ap3C+uEnXzIe55uIUebMMcvWN/hNm8nP977Lr761Xv54hebLlsRJhwOY3R3M9ywCf/OMYLWLKIHwVI9ge+10EE/VilB+QWPQ1oIuV7AaqkSDP+Q7u74BelPESFAUIJpx8N/QiRjAQIMqU202DN0uilmhDiSKKB4NkGnjC76mYy2YXgC/fm9rHlzBJ83wwFdJW+G2eLU0+UcQ85WOCZuJtbXiiBApVwmOL6X1/W1vPY/Xqf5z5+na12Mhz7zCGvWrVl4+5f/4kWmf+fPaayVqCkaWTtKiDIN5AhQY0qox5UEwl6Ziuej4ASpm6mSl1ppIYtJBM/zAaBRJUSNAGUmWUmIGpqsUgpE2O+pdNcmGbe6OBgHNWGR2LSJxx5++Op1NxaBM9k6uA7N258iZuXIiM1scPYQFCqUpTCjrkqXm6LHGSBm6xwrNdJdO0DMrCEiM0UTNhpNbpWwMcpBScSpb2fI6cOwHWLNzcQtFX3XNAHXpEAIBwVPUIhToiZoTEZa8TxocXQUqjjkGPYvx/VKeEaVsmByhDp63Rl+sRxAG4Jb3eNUUbFcmblqBL9noVFmgjgBwixjCj/zYiMqFmU8jkRXogf8GBWVQ14v7dZh6i5Rztm1XVJPbEXKTDHkj1EtFBe64ll/iOWZKca+/DTLP9h7VhX4YrigL0uvy8AffJ2Z4wY1mvGjzwc5uFiegmN7FFyNvK6xrF6jZdXSHqxnigMt1lPlfLOqQ6LKjFlgpTNK1C0REEoUvAAWCjIuXaSYFuPsy3fTKe0l0OfDMCvYtoRlKQxNrOKW/G4MSyBQmkHHzxC91Ikuaa2edmsChfng/OQz1kIihEOTM4lgBvjhnxwjlH2WnzUOonlVdCHA6N51fO31n+cTX7zrgusSRVj7IZXD3+ikrzSEgMd8X3b+O/cQEHFwEMkTJUiNaVopS1EMVAIY2C7Icymi2UESlsnh+h7KDctQzALhw0kmPvtZgEtKsJ577hhf+bVtvCf9GmulYQKiSdX0cfCNbv588N00N7+fT9SP0Zg5zJRcB45Fm5ejtzKEaLt4xXYsMUCzMEdYeZ1DUpho03IaNEgYaWbdIK80bKCz1IDrLlI8bZFylZOlMBUnRn1jkNxEnEZ3kqxTB4IwX4RzSsQoEHbLDIvLSWq9ROQya7O7ubfyImNeB8eF27HVMP5yiZYdxxj+tf/K2HEJ7+nd+HcfY6DSQsXxKIkKPtWmQ6nnbvcITcYkk3KUHqtA1Ksg4tBADgkHHxYmCo3k2OxYSA5IeJSEILIn0EGGIDVU20fBCTMrRfHVqsi5GsvDKh0v7+Ng33qycj1eSMJtFy5qGSL75IVZKZJJnP/5R8ycIa6w9v9zJ8N/miaRHicXasDRVCTdoK6cpewP0/3rP4fsk0kdGkbQq3ixJkThjOKwIOAGggj5WVKHhs9KrrREGEMOorkGhi+EYZpULAmQTsxhGehCgFk9f9Yc60ll3+ikRmLbNHfMvEGnfZwgFXRRZUJrYldmDc//z2W0tbWdtd9SqRTFHTv46GgeKacy4PaimCabrF1EqXKHoLPbknGcyHyiGJSoFmvY6Ry9iSoDMZOQWKFaDbxFuQuXKbl51is6u406gmdY2sxZKrqn0UKJmiUStKr0uzP4HIcCDYi4yBRZUVT4Vcfhr3wGqVTqtEQ5mUzyg6dfZINRY9oK0O0JyBjYgrYQB1meRD01+qnhw8NxQ5iOzqhhcMhs4n1DDr7KbkalAGUPpMIcLZM/Ir17Jz9e30BezvGJqMba6iGO651UCBKkwkpxCLvBYLCvmfsv4kN3veBmcnUD4XxtU9NUqFY0IpUMMlCZ3EBqbw99qwdJJDLnrSh1rukmpwUQqhU8RTktUfA8b/7/tQDL1vfQvqVrvlL7H77N7T+Y5f32LgJUsVDwYyDgoaKfqG5qWCfStZOHsoNEtzFIszmNklF50PlnEkKWlLiMCjHCconNvoN0l4b49gsKo5/+CN2XqQhzpgHyTKSdKgGCc2V+tvJdHvW+jSXIKJ5DpeRntNLB/sxq9i5/Fx/+9K3095/bvwYg2BxFicQI1SxK1epp3UPDMAjICil5PsEKeDWCVhVDUEkrDUxF26j4Q1TyGhuc/cxV0rzmNSOIIpKqcNDox+/oNHrT6JndzGZDhKQK8sgAmVqIFqfIvztyFBGb/Jshvv/cKOnP/zzv/ncfwDZthr/4LRprJdKJdny1KpVagBIaMcrUUabVzZAVQ8xKMVJOjKjgELZtJKFywnFEQKZGA1nClAlRATw6maBAhIIeAk0mEFTJYNPsVln2i7/G6g+tWDLZ4CvBmWydxuph+srDTEmt9JlDBKiSIYLnOIDKcVpo9OaIVMe50zuGhAvMVy3bmELHT9ELoXiwTJ9hyG7GknxU9Hr2rv04P/P5Hgr/vI/xb7xC+c2dLK+NknDnmCBOUmrDKbu0l6eoISKIEhl/HM/T8TwXQbCQJAlJFBF0Hx/1djJj1lNFpYiGh0i7l6aOImPMdz8dT2HOi6Bik6UOERsJ8GQRWXaQpAq5uQDL5DjNwUtLQia3p/CS+xl1JMqV07vipVKZKdOgZfuPePn3+3nXbz2waDPPiyhk85mPjTL2vf2MeMvwh2y8WoEZrxlFtHEEEcsWCeWrLAseofGBdyFexJT4UnA+caDzearYps2eZ3aSS6XZ/swP2LRnhAbBOm1WdXUxjaNrtJMiKlQZEzpwxfknYlQok5diVEUfpbKK2dZEYyZNMRLBDPjwmSZq1CAp9fKk8H4i8bvREk0kGmz6v/mbGI5HVozT5E6SduWFID7sVainSMwsUyXMsoEvYEsCQ+GVzIRbUKwqfZXtxF8d4+k//DV6//e9F0webtmg8dJtLsNvdhAvZolSokgIEPBTwUNY6Fw5KJiyBp6J59lEjAyO6dBSfI2AZ+IhkZipcKjURUHpIuDvYXlmO2Nf/jLLP/jBRVEEbdtl6++/wqNTz9DhnyOtNTJ3gg51p56keTbLX5U/w86f+zRrjz5NZHI/64wR2s0Muudnj3grKWcZYTqQnD00OGmWK3li9iRmtY7XzDv5frGPcnU5f/f/5vnxvc2L6vIBZw3luy6kRk/PtXLhTlLBPvprexgIraVBr9DilqnIUSxXpt2aRMFmXGgnqawBWaIi+nF0i5BrIiNi+0NofgPb8XNU38iyyQEK//lrrDOP4taq3OGN4IoyWS/OkLmCrBmm6EWIVHMk5AKtXpYgZSQcDHwnZucc/FSJUCRBFhMfRQJ4nkuYMioWBhoSLp6nkLMjgJ84s4gli8SRNPcd+zFjajum5GO2vhFua2LCe8sy5Jw0TlmEZJLRX/89UrsnThFXqLFyz0t0bmyDX32Ag/+4g9j0OEo5iyX5mG1fQfev/9yCDLsTEDAEGb/rYJ7jq/G7DoYg4wTOVlgKtkaZiHUTyR0jWJvF9jRsRFQcwtSwBYUZfwtt/cs4mBk4LXYKh8MkMhH69h4mUc6TcGaRqZH3AqiOSWNlhjvkIsV9NV75auws6fBSoUBvMoObDpKU5js0gmdQQ6WGRtQt0m1lGXRaQZYRBIE61cIoeIQDYTRFx9HfJBZrRBQ1XFfHMGbxayrLwo3EJGle3TccJloo4DMMyMnEnRorneNUUKmnhIjHcVqQsehkCgcZ25ZoK9b4D0aV7/ZJC4lyrVbjiSeeoJovsk5WsR2JDHU0M0PGVRDF+Xgv7JWpo0gIiaN08arTR1Sq0MMUm6emmfN0kpEuPDxKpRKO45Bxw6yuVVi+P8jfNjn8sZ3mV5ar9BWPIJkOjk+i0BLhecVP0+bNV+TneC1xM7m6QWCbNm9sT2GIOt21YQ6V16P6LRxbIJKdY709Qjvj5FB4OPN/OFZYy47xd8H7IZHInLOi1H53F/v71tG87w2GywqaX1sIqPSaTrdVxb31Ttrv7loYZLz1J6NstI8i4nBcaCHo6cTJoWACAiIeAWoUmJdQnQ9YBWqoiFi0BHZyj5sh7hU4LKzGJyj4fA5CAMaVDtqLw9wx9SKDAxvp7u64vIt1hi+QKsr4iia99hE0r0aMPBYqc1o7fqdGtztFg+ixsWxw/AercT90/spl6+ZOhvrX07XvDUb8Yaq12oL/l0/x0VUYR/Tmw475yqCPkqcxSARTCOBWAzR5EwS8ErvdekRZQpFlIl4JRIEBrxfDlWl2Z3HG36AgR8jXEqyzB4iwH9MTMfARIULD7ByTv/01htrayRtFYtPj5MMNCKKI6Q+QEyMk3BwpGskTIYDBHnEZE/i51c7iF2xanSxNToYwVRLkcZCQcXBPJO8uIiEqOIgEajqGo2GLMnmhk7g3RHPQXaSp8VWQrD0HTmXrDD1VwufYSLJLnAwGAn6viitImIJCiRABT0f1TIJU0VFxERHQEfHQMBBxMVFotiUGcyIBq4Lkyfxgq8qbRicPPdJF5L4evvQJD/bcyf3mGC3kaHZs5mohXhPWMRkL8WDlFaRIC3XivOdauVwmrNfoMbL0cZwIZUwkJDziWEzQQIEgjWSJUqXshQh7FbLEiIgmlitiEaCeIpJTxbZlDMOgTnVxlGamK9Fz05vOw4GrTBewinnKcohAMLBQaAlWy/QUJ6l38tRR5vB//xO+9lcvkfjEIzz8O+/Fte0Fmk+sI86Gj92+kHidqpC9pv8ts1xTDRPp7+RQUuQbX5/mtqKFEPYxIbUTcitEzCIFL4rlKfgEg6iXw27poemTDy6ZidWFxIHO5alykm4bmx5HtnQ+Yk7jE1z2RVdjqvM0RsEoEdCL9DBOmHmF0HYvhS5pGLKPvC/CEAnqXIO+2jBJsQu7KU98Lku4VMKWZTJdcY73dJEbP8pD//rDbNrURXurywuHVtOydxeDwnKiYp5Gt0DBDSDisIwpRGBS7qBo+2kQMoiuwrLyJIYSpBqYN1BvnjvG3EvfZnT4Lrp7zn/0d3Z20va+br4rj+MfWs3a1GHq3Dw2UENlhHbqKBKmioRLm30c8JBw8ICCF0VEpEIYGZuQmWc9uxmIrWWm0sSot4H2w4eZ3L6d9i1bLnpvbn9tnL7k67QocxwPdi0ISFTlIMeDXTSbY7y39F225/4ThS2/RSQ3Qss3P0e1FmaPtAlBBFHycP0B3ijdwSozSSFUYeyWBxje3sjy9EEe9J4hojtYO0KM7jt/l+9kgn2u+/18XdA7Novs736IZSNjtBYzDCnr6BRS1JvTBK0cPmyOspyd4gYqSoiYWMRXyxG1aqSJkxDnmPLKVKwgoujhD9QoFePcVXsNDZ1R2rCQ8Hk2Td4EYavIAf9aZs043e4oQnk+4BVwqOIHBMKUkXEwUJFxUU4ILsXJkyCHgIeJjItMhQABamgYGIKG5YXoYZKSG8a0fZTrQ5j4aJuZJPBikbHVy/D7g3z966/x13+VxjteJeDYGL55GuenP91Jz7e/zvFtkxzyVhAMuUQUD8vys6u8gtq2YTobj/AvDv45e559k/xYhuaOOB895VoDdNyznP2RenpKGaZ9rafR9D3Xo648x1AkwYZ7lp91j7du7mRv9xpqu9MIWNR5RcInhFvyzKsIjgUa8NoE2iunx07tre1sSkGgUkJyLSRPZ9aLIYgiZQI0uAUERyZQGUZ74Z9IffrztHeykGT6JkeJpyVStBII1hAEKIkaWaK0CGmKXpgGt0zEq6GjgufRaOQ4IrXQGciwtr2F47kc2WwW05y3x2lpaWZ1Wxt1nkfI72dm+3be40FT3sSXs4hkczgI6PjwYeDDAgSWM4aKhYfIBAmyRKl5QZbrs3x4f4qn+i0KhQLPP//8/BzXu1aTHRZpnxplgCailEmQp+gGMZFoI42CwyTNTJAgJmcpeipHax302uPUBBlJEsnl8ziOCl4DURyqnsrqaplQ5l9xIPAS/6U8y6N33UmdLJOzbQ4WizQkEldNVOlq4GZydQPg5MEemUqRqFp0Mk57bYzj+Q5Cbo2VjKCho+NjnAZcZNZau2hOTfG9Vz9A/EGBYDB4lvu7KIv0f+7/y/CvTbFydpIp16EqigRcl5VOFaGlkxW//XFEWWT46PCJQcY8LjAnREGUKLt+Ml6MVmaRsKmhomAtzBioGHiIZAmRE1TqlQFWC2NMyQH8aoZIJIAsOwvzA7NqCytLx/CnB4HLS64mt6dOM0AuFU1WVkcIuGUkPFxkPE/AElRqaoSImQbbpd7NULiIj4Ioi3Q+/hATnx1jZSFNKd6I7fMhmyb+kf3EnSwZJUERPxGnRI0AMarcYk6xtxBEaXZpN/ZTExRmhAYahQo95jR1ThXJBdP1M0eMMTT+XrqHdLWH37a/Qh1zTNCAJcj4sKlnDtXToeiy73f/msgv3ofimNiqCszL1k5F2wjnqyS8CiVUfNgIDmxws7SSZ0qIM+0lqGOOWero5TgKFhYKHuDDwkakhIaGwXv5IQU7giPIFNwoeSlIWj8XofR0nGs2peOe5Tzy6CNXhUZ4kq3z3ahM9bBDlzdME9N4MC+36wnUPD9F/ITQMU90WT3mJdRF5id/BFyEE0FjA3luqR2gWUhTkaKEJv6csX/6Cd848CDD6kHmJvq5XztA0K4huQYOArNEeV56Nz5Z4QPsxyt5+DUdybZocAy67EkiXgUfNhU0qvgJUSVClTYESvgxkYlQwfXmyBNkQF3GCidHszBF3gnhAFXbwLIsQsEga8QsR4K3kQh3np1cJZO4Tz1F9c03sctl5FCIwKZNiA8/TNGrUnEgogrYJ4JXtZhnVf4ofm/+2ZIjSsmO0DN2iOzvTvM73xhlWXEXjXMjKI7JmOTjQHM73b/xKO/+dx9YUMjeFEiy6ZUnqRvegWyUsdUQue47UTsfYe9AiH43SFisUVBiHIn10lFJETOLiK6DgMucEyb/gYfousx75Vwx+8XEgVZax1G/+3957aF/i3ngELP/5S9prJXIhxvAUlHNMWTPobcwxKCwCsd1WVU8it8zKBIgRJVJmghSw3Ik9tGCZFlsdg9RTxkVk+XJMYaPxXn9llV4d7diqiqFaJR8sUhDQ5ZNm3wnmiLzz+lj///2zju8jupO2O/M7f2qd7k3bGO6MZ3gxJCEhJBdSMIXIEtIIwsJWULIZkPK7sKmkE0ljUCWLCUQSkJdimnGNmDcLfciyerl9jJ3Zs73x8y9lmTJBWRkwnmfR4+kmTMzZ86ZU37l/M51ndTu7WOTMYcmdQ/VRh+19KFists3ly3mNGbqa0krfoTiJGQkqU90sN03ww5jXU1DYhtty95g6vRTxyyvYuTIn7W18ctwLydNm828De1E4gOkdQ95I8wUtR2/yBA2+wiQttuJiUAtWTuww8XvFbVU5ftpSOwi7weRUSHtJt7Wse8bPcC3mdzYyZR8K/3RqmGR+QBQFGKBcmZnN7NuWyvG7Hm0tu2lIZZlozGNvJlA0QO4XGkcjjQ+v0ZXdhL1+S6WLhec2bOUarWTeLiRPn8El5ZmQeJlpi5t4bGvXM2Mv12M096Y+4VfPkmPHZBBNQVtzhDra5uY+rV/pOacJWNaQV9Z/zFyU+bwQO5azvE/jHPbZrq1SuKeMrSAj+BgOy9zOi5vHrerl2w2izMjcKKQJIjPjOFJ5MkrbgqKi4QjwjRjG2404oSKlYaGmx7hokrEmJzfQ5+/krpMD/UihYc8GTw47GBTTnR0HGTx4aKAmwJOChi47KBUYOAsXadi4lQMNApEyODCYAA/PmFiaA569GqSepCpme0sWF3JJRdtp27bWj6pr6BZaUd1C3RniE3L53DvujlckttIt1lLWYVhK3IUPB5wuw329NegPrOOGe3t+1wIR2Hy1Mmk3j+LgUeS1MU6GfSXobktC3BZZpA+1Uv6A7OZPFoAHBXWT3fTvKGcMkeWPYUQIQwm6X00iAF04WAw3olxTwhOHm6N63qtncn5FH0eP83JvSTwl9aGCSFIKn6qlCybRCXRzjW88D+vcu+yfGmtYI0+wMVJPzGPSRkCUHC5BVvVBirNGFX0oQjw6CaqnqY83Ulrtpy7XY0EYuuY07UDpk5lwYIFBAIBKxhXOExy5UpeBDo0jbPXtWHko7zhmMbcQjd+M4GOwMRBniCVJDGBCBkAUgQpJ2bv2xgmRQSlz8vxe7Ik4/F9a8wUSMyqpam/g6m5HjaKqTTRTS29REniRSNOBDc689mBoTkYcIToFV7yeAiJAo5UH4YRoML0M4stVNKPCw0/Ba7OhPiT+hEGjZdYE4vhdDrxer0cf+KJXHTREQyqdASQwtVRztB1NDmHGxcKBg5qxABNohOBSgEn3USJESJEgZmFQVY7m6iim/k7VtM7OBfF0T5qFLxpH5yFs/syun//KOE9e9AMgenxw5yTaf7nj5UWsBeDX6S8Qeq1LntdFaAo9IsIIVJ247Im5C4KeG0LwF7KSONmE07aYsvxCC9pZT5lIXC5jFJehIDBfIQZrjamVo/cpPbQyXQnUQu5fRsgd/dQk0xiOkMEtE7yig+X0MAoYCgu0o4Q0UI/vZ4pVA+08MZDq1g1JTLcjWFomX14DnAtrT97mMD2zaiJHHkcGIZJ0hHAIQbwmxmiZCgnRQIvXnzMLWTQs2m0qJu9hQj1eo65WiteQxAT5RTsUOn1WPvL9GZrODO3mlq6aKcCBQOvKGCgEMdHJQlMoZDYtBE1dQYFh3tYlKV8OMpWZlCX6KDa6MdPnrBiojocdFPBzsopOGImC3IbqWAABYEAHLblysAa9PzkyOPBpEDC9GDgpJlduKnixZU+3n/12AaFsdam7FqT4ncrurj6x9e89T1BDmD9UlVYcvUJPPjvQWZ3rbYnCX5yOHFgEiBNGTE0XOQIoiIo4AQUMvgI2Qu63WgYeAiRsdbLiBreUI/BmU7RnHmGQP9WduRO4grzJaJ6ij3uSfQ46vEaaWaau/lnHuAu/WJiapgzUisxUgpOCpSTQEXQSxlOdOKESOIjiQ+X5WyF1w5HEiZLB9VsddSR9ofZmionZCZoVLrpcEUpa5xG1A1V+R5izkbWTbmI0yIjyqWlhYHvfpeu9RvYnneTNF2E1D6mb9lKzZq19DefzCAOpiS72OOZAgrUJTrwiRx9RKmjDwWYabbgROcYo4XTNq5kizKd9kgDSpmKM5+neu9Ouv71V7wAVJyxhIqeFs7c+E0qujeCbkVI8yoQ7NyCf/sqttT+Kzvdkzkxs569rgBxV5R4JELQSOM0NCrS3SxXF3Da4vMO6RvZ//uDhx7U2fPyZhJ7+8i5AlSfNI2PnRgbNThQLpeju6eXpG5Q2beKX96Q48Rt25mZidNb3YyiqviSBUClmxAVIkX14B5AxUueHsL4yAGgoNBBGVUkOcbooZ5+PGi2DcASVqdoA1StWs1fvUGy75uBEGLUoDpWn/N1Nv3nQ3jXtTCoNWE6oqi6hx2e2WxgGpMKW6mlG2FaHgQKgkA+zUCsjKTbh5I3CRUGMQc72L37wAE85syZw5e//GXuuusuXt68mRePd9FgHEuNdyZNL3VDzkN73sX7WIWTXhTARQEFgygJFAQJ/PQTQlEN8qabydk2otkYDlthseyrf6E3FuGcc5rH/DZr16+necH72a3k6DArcY1SxwnTR52ziwp3L/feu5aKjtc5LZ/HRY5qFArkSBpJ4nGNSCRCZXUVZYMm56Y6qHYP0lMxH0VV8adTNCS7iBQyzDDX0fzs9/i/c1uYddM/0P/aK5T98DZm5PswcKCpbpJqiHh7jK5v9rLq+AEW7XmJBk8fiUgT/a4A7kKaBfHVVL7RxqozrmXPlDnc0zeLpoZWBluT7BkIkUmZ/IvnO9T7chAOYRgqyQSohU4cKFTRR4gUx+rrQIUCTpJaiEqzh0EixIlQpgzSJ6KgKCiKQkL4KdP7UH0mz3sXUV3uYsbeXQTIkcVDDi8udBwIoiTw2N9rARdpAlYUSNLk8eImSZA0WfwYqHjQCZAhjwsvOg4h8CXSHC/epEL04iXP7NxWFm1cQSWDONFI4ac7W0a74uMkdQMnpjfiJc9O/1QCBQ23e99YrygKBNxocZ11y3ZwwvSxQwerqspFN13K7/r6aF7Vy+RskmjGGl82+8toPaGKq79xyahjRGtrKy3sJH7uTCav7qNx73Zmmx04MWinhi2uOrKKwtSeVkLPDtC7oLI0d8p0J/FiEi4L4UrqJPAhhCjlyVQ8OM08QvUhckmW/eoVDcRC+AAAT71JREFUzs3vLq0V1PNQZfSTynroG/QTDjsIZJLUmpZ7aIgMHvLMHVjPbm89y8zZ/E2ZSnXTSpxz5+NYvx7Xtm3s7O9nwWmnEVUUEitXsrq9nb82NHB2zE1YncYaRzMBvYeoOUA/IQqKjyoGSAo//ZRTyQBgLdmwgtYoBEjbnkcR9hh1VPcnia3bQH9/P1PzDTS+0Ub1QA9hoREhRi1xeqikhRmESbGALWTwMoifAioeRVBjxChHwUTgRqBqJpNMnRN4Ew95+gjiBTwYzBObuCqV4S+50/nsZ0+kqanhiHq6HEmkcHUUo2s6O370Z5pTvWRUH7PSu3Bg0EcYByY19OPAJIeHXirJ4MdLgUoGmaP38SaTmWzupWdPFXvdo0TBa2nB+MtDeF9ZTZ1IoTSpuKdOw/zQR6n+xPuGLVwvBr9Iuf0YqorDFOh2QIec6mW3Wc802vGRx4WBjywp/HRSRgo/cdysdeXoz6bRnUkiapJCoQlVHb4RrdfspKxe0DDrre+V5K8JYbq8KBlrk8egG1yKSV512wvlrUDCuYJBXs+RF1BOjv7BHEoszgvffZyE8BP3hMkumMq110/jwx8evg5r2ofnMOX8WaVd4bev2oj6459SpQ/iQGGQWhJUUkUfEZJADpeZZ13VbMquu5Ltt9zBqbu3oQg3PZSjqNZ6H830oKMiFIMPeR6nIa9hCkENvfjRcFHAg44C6DgoJ0E4l2bp8tV4RomylA9H2ekPofVspydUj/eyC8j9/n76cSIG+1ENJy1M5Wz6rbLBhQoMEiFGkHp68JFDs1dk+SjgVNJ0Cy9JRaFy+VO07l44qqXvQPuozU4PUPVKmkdu/TOz7vy3Q9q48HCtX6qq4vP50FHJ4cKDhjaky1PsECxONDRcqFjh6gs4SBLCTwYvWUL22rO91LJVmUKePHFNYVCNMj21k0/n96D7PGww56OoBYxCDpeRp0sEaBI7+YfBR6hQ+vGSxUSQJoATAwc6jXQhUMg5o4QwiepW+GsnGqCi2PazSgZYYOjEB/voo5IUbgzVT9YfYbroJZNzsDU8i6c8H2PSwlk0Nw9Z79CZYuoD/01u+TpW52YjqABcDJoa2eR2PC0vMUl5DdWsooE+avZ2s8tdT4URJ4+LenuCl8RHVglREA4iZChnkBrRRXu+Hpczh6oXiPnLiKT72XnbgzSeey6nb/g59R2ryAo3cbyWu6Uo4C/kqWt/gw+af+Bv006nfsteJqV30+u1wgubKEQKcXaa9WydfzrXn3bgGG66pvPGg8vZ8dRqFGDq+ScQmHsqd970OjWv3s/ZyW1EzRQmDrasm8U995/AJXqMmDdUCg6kaRrJpImWb8Bv5imjlaotYWrjBdrdIcrycXwOEGaeAgoBMhRQaKYfUEnjx4uCiZsMHgJkSBAiiZ857EQBBijDT5YUXgYI00+UaWY7J69Yz98WVNLe1UFl5f5BdUzdxBP1MfMrH2b3+rN5c3uI2KZOTt/8O7aYjZSJDuaIrXjQyOCzlQgGUZKckniNOCEUwEGBZ7/9GI/f5UTUTBkzgEdLSwsP/+Vh4mv7Ke/zkySLNs9kwbFTUJ9fw/Z8GfPZgo6TVuqZRAduNCz7L7Z7sUkGN34zRzUD+MnRSxkCjV6qKRvsp+ubv2TN8W6y2zYN+zZjFGinn+OXrWOaz09H2IlIFhAedb+1waQ1nEEDd8VfSeyezEzdYDp7OY7NqEJHR9BlBmk3asgOODDSKdK6RpUZJ15eVxKsZsa24jayJISPDGUEzTTeN5+h6wurqO16k0pjkDwu3Jh4jQKhbBq/I4QZN5j+wn/h9gu6ymehBRwYhSxOp5tc5RyqO1uYtu4RTv6vWax4TeXNNyeTKgNnOZw8w2RBZjasXsbftk+nMtXDKWwnQpxyeomQtCxSZhVpxY9HLVAjOqlkgI3MYg0zOUO8Tj3dxIWfNH4UoIwY7aKOv5RfwHdvnczmL26mItWLqggMIeyJtSit3LYUota4nSSIgYoTjTxu/ORIEEZTXPjMHD6yFHDRQC86Dk7TV2Ci0uOoJkWACjHAbOIY9robQ1FpEH1ME3tJGx7CpPBg4MxobDaPQSvzDBOwIo4sWeGhO3Nwr4g5c+Zw9Y+v4S8P/IUnh0btPGMqV//D2AGWikEpXMcGWFfTTP6PENFMWmlEw4NWcGEoCpucXmakt3FiWxWN9VYfVJxfeBUD06HiEQq6w1n6Lt2igK44wHDgKORZkniOiqBWWivodBZoynRxhrma53MLcYkEM1O78ZMji4s4AVLU0iMq6c1GWedyc1nkXk7KqfjfdOISTiJuD46+PvqWLaPiuONYBTza2EjzjNlUvrGGQbOM5kgeci6cCWvvRZcLUkaYSqOfCgYJkLFHF5MwaZIEyOCljARJAnSZDqrjGZ77yVL8Azmm5FZRpRhkXH463VG6HEGimQEEWZK4mC16CJABTJzoDCgRcqqXPhGmwozhIY8bgzlGP1Ow0mo4qCCBE50sXqKmj4VsRusKEg5+mvnz3x3rq0ZDCldHMQ9+6becuPNV3OQpJ4EHjUHCFHDgRyOHhyBZnBjUMUCBBH6ytmZ8EBWduBFi9/pW6peMGLBbWtj91e/R/cZO9uaiDBpBvCLPlI3LiWzeRuX8GtQF80t5KQa/yGgKaW+QSDZOr1mBqlprqgyctFJHDnCiEyOCC5MwOcLk0VQPV6pRel3nYZa9ydTMGrbjJJerRFHcCKGjKp0cE95C8/lLUN/GXkn1pzazdepMfG++TCJah6oWwOkA3cRUFLwiS4IQBdWNqig4DZ2CCb7eNuaxleMLqyyf87SbHUubuGf9RXDnxfsJWKpTpfEMK5/dXR2UF7pRhEqvUoWimKA4aRWNuIVOFb0UUAld/a+cetX57HhlGe49uxFCwaPkKQgXLgpElD4yCrQo05hNFq8YsCf3lktbgBwOLGuf215YXkaC8qUvoV18IamB/aMsVab6GQhWU/+dz9K+ooVp2R4aMfGj4bPXFfnI2pYdj629q8NAUEUMEHjRUDHwqCk61SA7nbX4ndDc/hKFF1/BbD6N1vbhe6sdeB+1OmoH9tL/f5vZvXM3U0doKIe6cnV3b+eJH/+K5jd7Dsn6VbRw7Vq6Dfp7eM09iylaB9PppIwElk7bSwYPVQwSw0sv5fjJ2VY6FwUcZPHgsERdCramdr7Yhq6p9OtBtjtr6dUrOVe8zpuZBXiVLC6RYpaymSoGcaKDMDmW7ewQzTzvPJs56lpqCn24RZ4cVmRGDR9+8pQZgzgpkMeNikHArpE0PnrwUcsAk+nAYBvt1POMeTqvqnNRCWHEDXp7aij4duPrep3f/GYOjzxkkNk8QHO2jUtjm9gtTkAPRAiHc/jTHUyL7WIabZZ1TqQtt0NqmSb6mZffjgeNPsoASOKjnxBOjFII4BweoiQ4M7ucTNZruwKrpBQfzj2biT/5CLN6llIQTtK4qbH7JxUTExUHBsd2Pk3kWx/nFz/+GKf3vspccycVai8Z080K4xherV3E5286fT/r8VBeuP1p2r79O+b1beR0O1T74N0hNrpmcrrIE9ITBMgRJomXPMeKFs5LvcgAZbjUSkBBCEE87iSYdbOAtdTSjZsc4USSOrqIaQGcfRpu1UTR85STxoWJjhM/GRSs9UgF3JiodFCNqeSppg9DKPjQrDV+ZNBx0E/Y8nATJj2UM6kwACt2ccLFi/Zzf9nxWAutP3sINm9EzWdwe/wsnDkX/fyTyewyKBNtzNI6cIgCAwQJkkfDhRMDFRM/WfK4SeMlRZjTk6/yvrVLyZVVo/mj7Fozmz+v+yyXfHc+c+YMtzafn4nj0HJkTIWtm/L87a9/4MJMHgcNVJKggJMqBuwpmopiKygAgmSYzl50XHjIk8eFjxwJJcgm5zHoEYUZ8S04Xulmk/d4hKcWjyePw5GxlW21bEqAY9kGKpvq8azbycbO6RghPy63QNfzZNJO5qmdJBp97BFbWBh+ki9kCtRrg/jIo+FAEYJ6MchxdBLXI6i6QSuNJHGSNOtwm4K6RDtuPUMfIRRVRREuhNBoVzyctfd1auklRYA8HhQETgxc6NQZPdTRjY8C+bSLxvQuBtuCrPVMpS3SgN/vxwiVUzPQQn53K5iNhPq34o8lcETDVFfP5HV9IZEHn+XDqUepJIbDdtmzXOoVQFBDN+1GHbppogvLw6CcGItYTZQ0PrKU2fWRJEgfYf7guBB1biOnXHIq2//vDLoefAUzp3AM23Bi2I6ATlRMcrhR7ND6QVJk8QAKrlIeTIIiRRlxXOgoCFIEKODCTw4FQYUxAJg4EOTwoCIoJ06/KMNPjiBpTKCdGprpZiq78eZyrI8fi6hw4dMsl+nqbAcb1ek09AnaX9ld2gdpLObMmcM3v/XNA3o1jPR6CAQCeL1e2vb4qXwmzxJtBV4yzGR7yTV+UETpyNTQ5aylIZmi67V2Gs+YbK27nj4b59rXSLj8lGtJknoIh6JjYO372KtWEzb7cYgsLjfsCUwrubTmPQ5e853EWZmXWVRYS8oMUk4Sj6LRIKz1zQYO3Eofk0Qf3zDWk9Dr2JWYWoqeN0nZgyuU5KmKKDtPPZXfPPkkk/ONNDzYwbTYTjL4MHJOUorXWjknrPWQTqFRxQBOdGudnt1WnRSIkEDDTRYvKibn6puJijQX7HVTrvXgF1nSeAlk83Z/5yaLmzr6mUwfJip9RAmSJUgaryjQYVaSFk5yOKi2+8kpdOGxl5AESdvLD5wM2uv0A2icl3+dTfe/BGf9vzHr/WhHCldHKS/c/jT+ex6kghh9hLGCQlj7RkVI4SOHsHcf8ZEjQJY0PlIEyOEiSJZ6eqhgkGD6eL70pc/tG7BNk53f+AH60pUECirH0Y5P5AGFdD6Aa00nr53xT2i3fo9zrrkAGB78YoerkmONFDVaHzEzhIaTMuKoqkKmvoa/VFexdVuKT2UMcnhp9VZAMERAgcnxbky1Fqcnz+mRjbQlfWQ1Jz63ztRyndpjj6X8c597ywvXTdPkoVvuI7t2DQtj22gcXE8aP05Vw4MAYU0DUkoQn8ijGw5CpMgKBwtZjYJgJ01kFA9+kWcO27mh77f8+lqd88+/EUzTihi2uxtntoe6WVFCDfX4tRg+UWCQMIqi79OuKqAJBzEzSpQEITWDqqpMP+Mf2fvnTShagnL6cQGGotCFl22OarRABdOUXkIihQNw21M31XbdEygoCNz22qCmQj+bn1tOzbc+S/uvHt0vylLN4kXw11VMeulx5rMDxZ4YCpTSN2TgQMUkg2U5cCIwURgkTDlx9ihlLHfPxOtUmEs/4XySkJ4iecvXeeFPIV5XoUdVEYEAlSecwGS1eb991IRp4s5mUPUCadVL/WAvm//wGvqJ6dKGghs3mtx36wbyG3agKA76Bvo5s7eXWlecWCh6QOtXycL18g7q13fzvkQbXc46nuEk9tLBXHZQSYwwKbDXVDmBTqJU2tG0/KVpcoEkAaIk0XCRVLxoihM3BjVmnCothYGgggHms5bZYgtB0uSFh34lQgGVABma6KGGbtqMenqcdehOL66Cg6QaRFM8hI04YT2FjwxJgnbkzTwmDgZtB8UKNBKE6KICPxqDBJittDJjoJWugWq8qqBCGYSkzrbfl/O82clZzi4WuHdTofdRb3QSxGBrehIuM8+s9FYa6EFBMEiYABmqSeBCsIwGjqWHahK0UsY0uvCRZxJpVCFsYdyy9vnIEyJNkgYSSggXOmUiSXVhkDV/eIxTCgMMUEY9g3htC6iGG4FiucCKLnY+8xyf/++r+PlPG3h8yB5GgTkVfPnaSfspNYZOlFoeXEPkll9zTmEnBZz02MJglCSLCy+i4WaAKA5FJ6kESRDCKQrUiy4qGETkFLak5yPQacj0cSYrCZLCba8VDYs0fjLUodJvltFvhqkijdveNNqLhoKOCgTRMcmh4yRIkDfEdBrd7UzW+lAwMTFJE6CPCBk8eEUBp2JiCqssjq09jituvHHYpHDHYy3s/MoPMHs66HD4yTmceJNZ6l97CX1LCwOqi8nZHiJanAR+MooHj+jFb21njcBaZB8hablyqTo+sgTNBMZggkzCSy2rmdG5lJfzNzDjL5fx8L/fy5kvbqHCSLNH+OjGQ42a40y9j+PiKqAQpRMXmj32ZHDa+19ZzogKeTx4yBEhjYETBYM8QVqppkM0YxpZlESCflNlup5Dcbnx+zOlJVVW9MsMatqBf3sfMUeBSXo3M9lF70A56ziGPoLMdG0kW57k/pyC0zmdi/t7mZszSBJB4MKNhpccLgqo5PCSJUOQWnqow6RvoBK1wke0ECNB0eKv4BIGpgIRL4SyKVRMdBwESdv3MlHtQBACS6SwYqQJaohxVn49y5IO2s1qdqTdzCTDit8uI9z6Oh/NrsVjZsirfva0LOBxbT4XZ91ESONAJ28LPCqCDH5SBAiRoolOukUZfVQSJcVU9tjPtuKGpgjamzzrvMA81lXO47Z/bsLpdjL7pqvw9nbQ9so24qkAlPqYoluYDxMHAdsNXMNLP+V4yOJBI02AsEjhRidvuxZ2UUUtfWQtB0GCpAiQZRAromkBByGSOCngokCCAB50QCVJ0A4D38OxmbXk9BAVej9RM4aKSTWDxH7cxbbfVbNt9lyar734oHvs6ZrOlqc3UujP8EYW/NURsr0J0mqBlvat9A8MoKR1CLloWDSJulgFU57dwPnZl6ihB4aUhYpJlDguCpTpcZKJepLtcVpf2k3rxiTpY07Bu3MP4cHdlJv91LMXhCUI5/AREw40p4JTjZAM1pYEq+L4h0OwzjmX6YUdNBnt+MmCUIgRoYcqdBSqxSBlDGKaHtbrUzEDHryOPJrhYUNuHtP6WtDj3Xw/8yLKFhefyrTQaMbQhANNcaAKS+D12grZHsNNhdmPgmnXoZtKBkpzCiuoiZMYYaroJyCy7HRMoStQw/T8dirpQ0WU3JrduKgnh9PemqGAix4qcNJr9/I5akSf5YVgr8dK4be/lQxejJKQ78CkiW5ydqRpLwk23/0n9J984pAj0x5tvDtz/XdOMax2o251VCrY2iVLGxTB2hw2jwsdtdTRu+3JN1ibPBZwoKuCBVqW+OC+tVb6/z2L+tQzoDnR8eAhiR/Ntj8V6KWChlQH6755Gy+oKud8ccmw4BeVPR1sdzdTq3RSURgkYmRwYDCgRMn3wgl9Od6XT1sbY1ZOw+myTOYa0Omqoy7WyUC6AX8+zvx0N05TR1ed9BQa2D7zPE55i4sWW1pa+OPXf81xT62hzsiwUamjXMlTI+J4zCw+8qTxoCoKzaIdU1fscnVRhY4Dg800kVP9CKGSVNwkRZAptPPh3Y9xx1cn43ryORraN9GgdeAXOXKqi51hH9mqMkI48KGRNr2gilK+hGniI09G8ZNSrCYXrp1Ft6eSnHATL0RIAzHVQ9oVwucvp9bvItGfogIHqj3Rd9h1a3fTAJiAnzwz2EtNX5xlP3DQfNPlROrLS1GW5jmD7LnhNvKdbYS1NBpOu3PLQSmgN/YXY1jaNyWG5UauE6GAhpMWdyNloQBzkttw5gtkRAANJ9u3C+bsWM+nPDrxskriukr7q1vZ4Z/MPEMr7aPmScSoS3RQbsTtOFQFQqTZ898/pzNUhenxs8oRIdfZxz9qmykTg4CJC4MUQZapZ1BQ3LjVwqjWr3whz+++9kvmvbqZC5O7qDATREkzR28jjQ8DlagtQKXxEyNsDwI69fSRxUcBD2kC+O11BR5yGKh0UkVesTb+zAsVBT/T2IOwJ11JgpQTJ0ySFCaqiGAqit06FWrp42PiKcycakdiVAibSVqVBhRb06vhwIOOjzQqggHC9FBGFYOEyFh5UN1gpphCBxnRT41tNRgwI2i4UQyYV9jMP/ASu/QaWiNziGd9RIjTxF7CZgI97SJMGmt9meWqp+OinyjlJDiPHWi2y+kpJAmQszcF91saVfKE7XLMWI6i9oayuu2m7MJHFu+OPQgENQwQJomCwEcO014nqqPixEA8tYwP/Ok7nH/+lFHDNg+N0JZScmxIbGbbjm3oa9NcuW43J7MdFZMsHiqxgu0MihDV9OMliQODbUwCxRJaCoqHDqOGRnqoNLtBV+lOVnIuy4iQQMUsRb5TyNu1ZRIhTpgEBk7S+CgjUVr8D5Q2nVBwUEMvkwiz1phCEJ0IObqpYIAIPjSa6MdPDlWYdiAIgZr37ecK2PKfd6N2trHTG8Xr8+K1o7luTvlo7uxHESGEsNxG26gnh5c+TOrptuvCiZsCBRzkCBAUKTwii2r3IP1GFagK9fkOTn7qBzx0ZTeLHnyGaVo7KTxUo+NCQwcMYCoF8rjoogwvGarpt+28AhOBA0tlodguxtiBLvbQyDYmEyLLsWzFZWroeZW0vf9XRAyQVOqH9efeZIy52RbKyCB0d8n6UcEAM9jFXmpY6j2T5VPrWLnnz8xtaeG4BOSNMjqow0+Wmey03RWLTnAKnfZKrGrinGxsYHniJBzCQMeHlwKqKQgTp8sVReTBhYFAIUTadqMCh/2tK3a9CwRh0nZrF0TIc2Z2NU+5zialqxTMOPM2/Q8OvZuE4iWBEwdZJmdeZpH5AobDTbdSiS6whfMsNfQhsNZC7WQSAXLsVKYzTewgRMa2AFvP92DgZpAcHgYJ4VA7ueq8Tjxb87z+QA/Hf/RkjGs+RXrVzVSmBlEx8FLAAAr2nnlpHPZ34mELU9jtnEZAT7CNZh72nsc0M8Yl2iNoOJlMK2UM4rK/BycGTqxv2YVmC/aWAtBPlgRBTByoaPaemIKtNDOJTqazm7zmJYPX7hdcONDwJjrZqzsJLn+BnWtXsfHDF1B3/jyO/+jJAMP6hBXPvEzT0m3MzXVRRxy/LVAXcJLDw0k40BQ3g+5yEp4I/Sv7KM9lmJ5vQyDQcdo9kkmALEn8tvIA3OQIZlO0fOU2fIPdeIwsLkcQxcjSZHTaArdu14eCmwLNps4yrZGZTheDWhAHLvyZQRpTrZQbMXxoCKztaxyYxAnTSR053HjR7EiOQXz0UaCA35Eg5yy3xmmngemOsy1eTV3KxUktk7gy9RiT6ELDQZgMTmGQFV403LZ90gCjnwgJkvhx2x4IMaK40WxBW8FNjknsxYHBbprY5ptFRb6bKjtwTnHsKuAiQNb29HATJEOMKE4MBogSIUmAFFUMkMdNBh8KCl1UEyBZ8n4AgavUhxZK0XlVTOYnN/LAl37NJ3//5YNP/o5CpHB1FLL60deJdrXTHa7HHTNoMLptTUoCH3kc9pobLxo53Hhs7VkxDLplVlZJOZy0hacwNddGcuN2OKsZTJM13/sDtZpOK7XMYA8VxOyl8woBsgRs3/hgNsHO2x7kjKvOw+l2lhZVt/7sIdybN6LlgwzmBimku4grAXZGp6J7vfjjA8zIdZAoBOnO1ZJ379v0TVEVUqbK/Ewrrc5aOiPHo7gUREHgSmdJ/eIxMnXNnPPFJaMGMDB1c9RQuOvXrueuT9/GP6xfRRM9JAiiCyf9BHjT2YDpncmc1Haq6SYvTNvqZ6KhYgW1ztNONWmCYFr70vjIAxAjwmyxC/3Xv8WnpKg2evAKkxxBXKZOJOZAien40NAxqSXGgBmhYHe0ISWLoThpd9biC9Xywu1Ps+ebd7A4/iYREug4yeKlVdSzQWlCizuJ9G2jn3Jm2O4nRcFqJJae1dJfujCY0b2Frm/+FP7zOt5//YWYuskTZ30LtbONDjzUky+5ZCmlEBYmBg5ctnOPF40m0Y81HbG60y1MYje1nJFsRc0ZdFNNFX0kEEyiD2EGMLI5fNkMKm4mkeJk+sjjJzvowPQFS5Hnkoofh9CZQi8+clRm23mVEJ5EmlNzLxIlQVyJ0OuswKlrTKYNH1kW5lfyRvJkjHIHCEsDmFMcTB3oYNvTm1h5/zN8cPlKZuptduTMOlQsC0WIFAWcaHhsDWqBWvrYzGQ2OCpYZOzBgWkJlmTI4KVHLaPMjJHAg0fREGbIEpqFoIJYSduXwk0NffjIk8ODC50KYrSLWmrYg49sqf6K7lMmKh40pondxAmTx01crSIqkqSEHwc67UoVLqHjQUPHgQOTsJmkjr6S+6+JFUiggjhpvPRSRgiTMCmaDAc70xoJdwVdVFOndBMRMcLkiGFZmXRU/ORIEcBDnigJXBTYSQP9hIkSx00BYVvOsa2lGi48lvoGA4UqYrhFoaTkGSSEJ5vAg0kVA7a1tRhmATzkStaAedntvDDvc8z85wsJuRWyOSceswrMWl64/Zl9IdD1PFlDoLr8TCkLc07nLuaxCxAkCODEJEqSgMjRSwQTBQcmTgyCwnI1M+ww/AXFQ0r4ieEnpRQ4z3yRCmKl793E2vLAYwdpcCBQ0WwBKm9PtClZka36MVDt8nGjcSKbmGp0YNkkvTTRi4lKBUlc6PYKBJVyYqQJULNlGzseaylp6Ntf3Y3YvJ4uV4BAMFCyhpumj0A2R5PRzon00m/X3WTayAq/HdkxigfdLgMrNE0tXejCWguVJICfPAoFsvjZSwMN2l5C9/wMv8gxQJgsDpqw3Osy+GinliwGtfQxiT7K7KiHxV5in7BhCdG6Pa3TcdBGIw30Whut2sc8FKizx7Ta/F4SZu2+qGumSV3cCg7txKSJvQgU+oha7YAklQzSmOygf80SqpyVzB34GxVGnDbKUOw6KAYXKa4ucmDiJU87lfjIU0acqYUtuNGYRBdeM48Ha02dhhczk0RFR7GFBoFq17tSWq+0777ZYcciJFmcWMZORzMp4SRMBpeiM41BnMJa55Q03TQxSI9Rabva+qggZoe3yQJYIdBxowP1op0GOnGi21YnV8kVU8XEg0YeL2eJvXT88XfkFDdtDjfrahvYW+HjmESENH4S+HBhBbQYaqnX7TZaTzdNeied1HCP7xP0NcxC7W4hr8EOp4eku565BYWyQowAGXScttLOIGy3jaJFREXY1k0dLxoNdJHHyTFsptIWTGK48ZLHgUknAdJ4CYsczdku0qaDqalNJO/cyNb7J7PZFwJhUp4awKtnqTEyXEOf/Q5aSUiyIle6CJNCoBATIcy8wqArxKLMFgJmiixu0riptS3R1phqloJ8WH2BQAXqu++3FQZgGpaLvgJkbHHIjYHTdpksJ8vl+b3swEGfphFkkNnC2mvRbY2KtgCYRwVS+Clu022Vg2H3tQWrbgsFXOkUDr2A4XQxkHPg1+F0NvGR1CsE7PxS6pNU/GTRcdhzxRy6/e1m8aGSxYFCN1FqiNnBaEy7ZRp263ER1vtYkFuHGw0TBRUr6IWBim5bWK3+xXI/tvZLc9r9gcDAyR6aCGApdPI4qbIFq+L3UZobQqnu8rjxkSP5v3/jwVmVRByB/bY+ONpRRDHMiaREIpEgEokQj8cJh8Pv+POfue1v5P71J/RX1uNJp5g/uIGptJc+fNi3hXAxots+F68CGXy0KVXsCE6lx1tHQ7qDul/dxAlXvB99+06WnnAF9ckugiRppLs0SShO0xWsqETLHSeQcXiIX/pxZlx4MgsuPJGOrg7ig3GyG2PknnsD/YFH8eZS7AlPQjUMHLpGREszS9+JAHopY7d/MprqwXA4cDlNZvRvpoFelpWfRjq0T/AyDZOKrja6ArX0f+BUcj27yPUnMEyDVJ2T2oyPmVs7KUsPYKBQcLiJ1TbiOmkO+cef59zUWmoZQLM1y0mCCEBHoYUIs+mihixbaCKFk6xtHm8gz0I20UkFfVTTSCcRErb22po4OdHZzAwKKkwyuxFYEblMVJwUSOMjbOv+0gTAdo3RcDPoDJNTHawtP536L3wI13/9F/Oy23AgSi4rVnAFg4LtBa3a2rRy+u2J3f4U68oSj6xtgLuoBgQ7nI1w27eZsWA2ay+6jo6ci3BO40zxBuXESoOPwx4MrM2fDbtjc7GVyTgpUMUgDnS2qrW0izoWiDY0PDjQyCoCDZUwCmkRoIkuPPa+KymC1NBDiDQZfPQSIUyOfiWMV+SZxl6CpO2h0EmMEHGC1NOLmwIDlNGuVOETeZrpwtINK+xyTKbbHaYm34/ftIKnhEnSau+5UU8vAoVBIvQTpZY+Kux3sFwaPLbLkjVobWcSTzunElE16gpJ2s9/P/WzppAiy96/Pc/iHRvIolBNHCcOMvgxcTCJvXjs1Vkmqr0OwaqHgq3LN7GCHgxdlm3gKLW2oktPjCh5PGQUP32uKnpdZUxLb8NExU2BenrRUcnipZwYXjQsm2VxnQvECdrHiyGxrcnfZqbwRt0izF6N0/WV1NNNkAw5XPjt9Iath3fYWncThRhhMrYwVY61Zsl6J0cp736yWPvhWJrJvK0lxW4z1hSpgLvkOqVgAs4hFtiCPQ3O47UmKoqHpCNAu6uerkAtkfQgqhAMBsrIJVNM1vqYQxvlJOzJgIGCsL9cZ0lxkMODgrWW0EQlZ0c7K+Akg5ckQVQKDOAjjY9T2EqEpF2idn80pD8sTgSUIX3vaO1xJIOEeV45FqdwcC5v2OuAXKTx4cTAR54sXp7hLGrKFdSTFnLG326gvaOdlb9/Ef+P/0hPWQ0Ot7XFghAQ6uzj1MIqgqRRMeikkoAtGBt2br12uG0NVykamJccTltLbrV3nVal1rI0ihxz2IUDy104jdfaugFBBq8tgPvpo9xaT0EePxl7za9eqs+hZVHARR43/ZRhbVprCQAhUraS0AS7nxskzB5fPX3eGgqmir+Q4vjMRkJkbLFCDBPWvLa2XcNFnAjdVGKgMpsdDBImjZ8aeomQstVISsmqpOGil0oGCVBBgh3lNcwZ2EWAgv1mHlz2mkeXXYL7xkjsXDtKQqsY8s5DKQYdihNiBzUESBOyPVBM21kuQpwoCfqJIFAJkrX7FEoWEcV+d8sW4KeagVJwnrxteS46ZLptd+IUftYE57A3MgWnphGO91Cr9aMpLirFII302Pnfl/ui8iONl37KSOMnRZCtahWvNTbhT8S4MLaVTleEbEUNekHnuP61NGAJKY104UUr+VlYgq3VagxUHFhrLVP4GaCMcmKESGGg0kM5VfZ6M2E7cBYt+T1U2FFUTVq99czPbSFAhkHCgKCeXpz2up19VkVh15MlBOTwkMJPCj8JJUSQPGWinzBpCjgIkyqpGke2cTHkf6t/d6Laljph92nC/r7FkP4Xe36g2Tb9YvpiWViWNdW2Yu1bs2jYwomCicdOs4vJtspckMFDGh+NdFJDn61gtQJi7eu7rP8sq5EXP1l20UCGID0EKCBoIkajvS9VDjdRErixlofE7bIVqJYXAnkURKlsrI0WnPa3Z2LioofykveCiSBKEgH0U0GKQGl/rYitwBvZrop/F3CRxYOJQj9RdlJD3h1Ad3mJDdnqYyI4HNlAClejMNHC1esPLKftM98l4w9R8PqY076GWWI3QdJ2w7Uo4LIn5pDET3FfigHKSBKw3ZUCaGEvZ676E87pU3nzj8/Q/rn/pFrr50Q22g0Bis1SsTtpHcuHPIWfdqWGpMPPLmeY3dEgTel+FqX3UG0mqLTD7pr2VMdha4Cc9oQKe/JUNPfrOEoalT3qJNp8dSR8YeIEcAzmOMHYTAOd6LgIYfm6F2yHA7dtdUkSoEetoj1QTzg7SK3eaw+GOSLEbW2KieWy5cJla4Gc9uBq6VmsnGbtwAY1pUXZyrCJstXhWZO4XsrxoGPYE13Dtj4UQw/3UmGHrXXiQceFtX5JR2UvtTx90peo73+NU3e9gopJH1F86LZlJVlyncrhpYdKwGQKbaMKViMRQB4XccL0U0aADKv9c8l++AKqHvwLITPNVNooY7D0DVmTaieKXU7WtEXHcp0pJ46bPjyEgXLS+MkTIUMWNwOE2KzW0GwmMPBQaUcDM1DowgoSYIUUt7yoA+TZTT1WhLxuQqTRcZDDi+Wcak30i1sLaHjYrjQBCs2iExUDPxkYMghZXtxuovYA6cKwJ9JePOTtWhbkcZU0hUMpan43MoXXlWbKKTDwpc8zY06Mga//N2dkrGG9qF+z8uZC2NpFK2z9PvfMkbGthg7KQ48VBXPsb6yVWrYyiwri7FQm4RU5jmctEZIUUK19rlDRcNrWBtMefC2h2wT7i1cpWl40nPag6WW5awGDopL5+mbq6SBsB30oDpT7LC+WRdfyhHeQwU2GACl8NNBtW+a8JAhgxVNLlt6vYAvJBZwIVLxkbYsXtpgnhpVF8e9i+IPitUlbCLKczKwdeNZ7Z1KX72GKaCdKsmS5N7B6LXXIvXRbJ1rUIBdF2aKmVbffzURhNzWoCuhCYTZ78Nt1qgzJYzF/yoh8j8VITWwGD1uYzEqaOItdzGbnkAmtpRxLE2QPDexQJuOJBlj1kWPoenMX4Vadc+M7Sat+nG6VgttH1nRxdmoFYVKk8aICA0Spp8sOLGDYIoxiT8asMsngw4FhuS3jo4CLFH72KlWERIrJdBEgTRYXBh7AJEiGYpssCp3FsjNwkMNNHhc19O83ITXtd7PWDUZsV7fMkMlvsbcVZPFh4CgJglZfXSBKyi5HYfdTAhcajiEt0rJOeOiljCR+mui2A4wI+1mmnXKfM3XBfk7KdnPtnHsq+rY9hLS0tS6WlC0eDPcYKH4PY/0emq5IAWyLr4qKsEdAo/T9arbnSRYXGUKUEcMKWa2X3qGYbwMHBdvNEyCHB4N9wektDwzLQpDFQ5erhpi/glZ/M8ZgmvNyryEwCdiCt6VssIREt620zeMiRrQ0ZoNJhKRd3x4idp1soZFdSjmTRR8z6CgJhQXbQdByL7eURz7bOlP83vepLyyrqqUmUkrj0tB3BoVeytlLDV7y6DiYRCdOCsQJYaBSzQCWZXHIti4j6qK4zUacUMliHCBDmCQFrEiyluLH3O9bHnq/Yl9VtLwMxSrLom1+eN2N/EYECjk89jr6lF3fRSWpkzxuivuPFbcJSRK0+y/sEPqWJX0spY+VV5UkIby225+lHLPG9wweGunDjYafbKnOwIGG0+7JLQVzsc89kNDZQQ1xgkRJUcEAXrRSe0sSxIFuK4SKQuj+9yuWrzW2Wq7FnVTRSiX9gRq8hkbKF6L2P740IQKWFK7eJhMtXOmazv8c8wWq9+6kx1nOiamNVDJIlEF7AbWFYU+FrQmkx/av1emgmiQBDBw00kWvu5yB//oBkYYK3rxnGVMf/QvTRRvN7B1zslDsOlIE6aaCEGkqiJdMwJbfrWp3yuawCQ7sP0EpUrA1PFm8FENhpwiSxE+EtL1UNlfquARiSFe8r/GZKKQI0E/U3n1e4EAnTNpu9Oawxju8Ixh+PIMbFWwNkvU2xUG+uJ4NsH2BoY+y0nQxYHeR1roGF8LWOBUnD5YA5yOFj1bqsDakTZDEh1nSqnmZyl7Cdodp4KCPMHX0lQa9QyGPCwVr0B0gxA6lmQ61gXONFUSII7DcA0bes2gLtQQTN6DyijKLXaqfRiPHGWwjQIakvSahuFeKtQ7FigBV7EhVLEvI0AlkL2V2lD4nITK2tWHo92LtgaGyTysGCoNE6aacagaI2pZEKOpoh6ZXSeLHT640kbaGT+s5uj0EOUvf1L7vCft8L+VsYTrPNv4DS9rv5gS2oZZcM/TSgFnUnAfstTiHw2gdbXFBuYbbVkoYpbcz7SmYA0rf4NB2NrwMh7/TPi27SpwQmj1Yg7CFKwUNpx0FUux3vWFPfRUslxVrCwBrfUVxIb+KKNWX5S6jlAQca6NSc9gEdOj9RyuTkcKoNTA7yePBCoCh2ZPTff3NaIws5/3/t4TJXqKk8BMlZU/Q9udw63i0vBRwkiCEimGv6Rqer6KGPY+HJD4GKSNMhiBJ253GcpPJ46H4PVpBAwqk7DYZJYa7ZAHfN1Epvq9p/10UTGJE6KOMCAnK7VDIQ63gxbqldK+ipR67nRfTjr62YLhQALqtt3ZgUgzZji2k7bMqe2mnhh3UcSotlDE45rgylAJOtjPZDmDdX1I4jiYoF2wBRbUn8mn87FAa6FaqwcxyDhvxk6Ho4jjWM0dq2w/0nRTPF5Ugwq4RB8PHx9HGzuLx4rhUXNFWXH+t232tA90WCC1yuEgSRkcho3hBKNTYXgHWOlu1ZF8vPmtoHnWKbrGarbRS2EEzeRxMohs3Gjou4gTRUai3LSBFgVrDZdu5ddvVq/guiq2I2mclGll+I8tSs612OgoRMrYQ4CgJI6qtzHWUnrH/vYa3NUuplsVjuxFayipHyf9ndIptaJ81ezj77IfDPU2K6+JG6/ssoU+UBEPD7nMNuw6Ka62teYoP3bYIFtcpDRWuRmPfeyul5znscSxOiCBpPBSwArNYlrah3/7Q9yr2CUPLt/huBioJe0NrK+S6NsQQoNgKFOy1gvvmYCMVMjC8TeTwsIcGBJBTvGyJzCCcS9DTOI3LN97+jrsISuHqbTLRwhVghRe+4Xampts4lpaSwDFUQDBRh5mEixPJFMFSB5bATx9lxJQwqmrSYPRQQz9+0vtp2kdDw0UPUSpJ2vqMomZcxY1Z6pCLzx9LizfaxGnkebAGYseIcyOxbCtKaQJvubxoJW3+wQbGoRQnCJZ7n1k6ZtiaxpHaKev5+7phN1ppGlycmGB3sEqpM1Ipum4UBTfLOuO2NX2q7V5TwGuv8xpNE3Ww9yhOGlRMDJy0U21bxKwBSdjTo2J3NNakIY+L1UynmjjNdJXKZaRQOlwYGnoPlbz9FKc9MLvRMcDWHw5/XpGR30KxborPGev7MbAGJdcYA+NoHdxo6fK2VTRqa9eKzh0jJ6vqAe5xMEabUAwd+Ie2oaFlfLAJ3MhnFPNXVB4UrdoO+9soTmqdthrlQOVW7F2GCszFScRIl0drsr3PdXlof/BWBZXiBB3YT9t5MAxGb0tFITBvrx0rRmcbme7tClfFZ42lXR6Zrvi76Do0NH3GXgNWFESypQBHVuTLkUqoA30zxUl08b2H5m+0+hrZhg4l3ch8WO3UZadT7DUbeklhKNj/uz+U/ttyAw7ipWCHL1dL3+Bo+R2tHIpWB6ftgngoY+PhtMmh1xTzc7jXFezRrRjVrajEG0rxPYvjV7F8ipblABnbnsmw72tkf1RUYhZdORUEA5TRwiSixJlFK8UocZbLW9Ea57D7TsXeysK0xWpjRN72H6PHKpuRfW9xXGDIsUMpz5H1ZWJN3h0lu/bYlpmhx0bL42jPGW1sGy1t0SV/tDnRwQT7Q2W0+ddQy78Yke5wv08rMIq17qw45nhtn6Pi+aFeBkPzAfuXV7F+dayNrdupwoVBj6OCtmgzgVyKpjtv5uR/XHSYOX17SOHqbXI0CFe6bnJn4FL+n/YoXgr7nT+Ujqj4f9HsXnSnGmnVGYt911oM1VK+lYFl6H3HY9JSZGgei7yVwas4qI92bug9LWuDJS65hwhkQ9OP1JiOvJ8+xB7htDWOb6dMhtZ7UeAZql0brRM7UIc/Wic7cgA+0CBwoE7l7QwKbzfd4dxnvL/TsZ5zpDnUScKh5Gm0QbrYbt6uEHWkOFQhgFHSTRRjCTNjaXrhwO93oOccbnscK09jlfNYfcnI46MpHsYrTyPzBe9sGxwvxIjfYykRrcmzVRpDLTqH206HjynWWkxrDY42ar0N/b+AtR50pKX5QM8/0LymeHw8622osPfWNn859OeMZzs82hg599CHKKvH+kZHXjtamuI5HSf9lBEnyKqyBYSzcbz/8VXef/2F45D7Q+dwZIN3R9iN9yC/O+Eb/JP2yJAwlcMZ60MdTeuwbwn6obuYFe81VHPuGHHurTLench4dIoH0taMJrg5Ga5VHtrpH0zQU8B2zTu8+hiLoVq9IiM1ryPzeiAORXN1sPuNVx0f6n2OxPOO5GD3Tg6kh1o/h5Kn0b7lgw2eE82hvOvRlvdDyfOB+r0j1W4OVG4HyvOBvpuDpT3cfB1qGz5cxcLRwKF+t9YYJfY7dqBrDvY8FUEZ8THvMfL+bkb6NBz8+YcyBo9nPRWFvyPN4Yyn70aGfyfYkYcP/9qxzrnQqaKPIBl2p/vIuALUNlW+pby+UxxJYV3yFsnEMvzD+t+WFjlOJEM7zInOy9HCWGUxUeXzTtWNrH+JRHK4HOl+Yzzu/27r2yZqPD4U5eG7DTm3GX+ORHk6EPhJM0vbzWBtQ2m/s6MVKVwdhTz06f+m3NYQSSQSiUQikUgk72UUIEwS/5nHHfX7XUnh6ijEs/RFWTESiUQikUgkEgmWcOUlizCO/lARR8Uc/pe//CWTJ0/G6/WycOFCXnvttQOmf+CBB5g9ezZer5f58+fzxBNPDDsvhODb3/42dXV1+Hw+Fi9ezLZt247kK4wr5enuic6CRCKRSCQSiURy1OBDI7v0wDLC0cCEC1f3338/119/PTfffDNvvvkmCxYsYMmSJfT09Iya/tVXX+WTn/wkV111FatXr+aiiy7ioosuYsOGDaU0P/jBD/jZz37Gr3/9a1auXEkgEGDJkiXkcrlR73k0kUvlOJl1E50NiUQikUgkEonkqEEBPtL+N3Kpo3s+P+Gh2BcuXMjJJ5/ML37xCwBM06SpqYl//ud/5hvf+MZ+6S+99FLS6TSPPfZY6dipp57Kcccdx69//WuEENTX1/O1r32Nf/mXfwEgHo9TU1PDXXfdxSc+8YmD5mkiQ7H/8cqf8v/++JWJl3olEolEIpFIJJKjCAH8z+W3ceUfv/qOPvdwZIMJncNrmsaqVatYvHhx6ZiqqixevJjly5ePes3y5cuHpQdYsmRJKf2uXbvo6uoaliYSibBw4cIx75nP50kkEsN+JorQfY9IwUoikUgkEolEIhmBAkTu/+tEZ+OATOg8vq+vD8MwqKmpGXa8pqaGrq6uUa/p6uo6YPri78O55y233EIkEin9NDU1vaX3GQ8CxtFt6pRIJBKJRCKRSCYKv350z5WlkQS46aabiMfjpZ+2trYJy0tb7bQJe7ZEIpFIJBKJRHI0015/dM+VJ1S4qqysxOFw0N09PDped3c3tbW1o15TW1t7wPTF34dzT4/HQzgcHvYzUVy07L/JYfmUHv3BJiUSiUQikUgkkiOPAHK4+Ogr/z3RWTkgEypcud1uTjzxRJ577rnSMdM0ee6551i0aNGo1yxatGhYeoBnnnmmlH7KlCnU1tYOS5NIJFi5cuWY9zyaqGyu5OHoR6RgJZFIJBKJRCKRsM/g8HD0AiqbKyc0Lwdjwt0Cr7/+en73u9/xxz/+kZaWFr74xS+STqf5zGc+A8Dll1/OTTfdVEp/3XXX8dRTT/HjH/+YzZs3853vfIc33niDL3/5ywAoisJXvvIV/v3f/52//vWvrF+/nssvv5z6+nouuuiiiXjFw+ZTg49yf/Qj6EjrlUQikUgkEolEcl/0I3xq8NGJzsZBcU50Bi699FJ6e3v59re/TVdXF8cddxxPPfVUKSBFa2srqrpPBjzttNO45557+Na3vsU3v/lNZsyYwSOPPMK8efNKab7+9a+TTqf53Oc+RywW44wzzuCpp57C6/W+4+/3VvnU4KP0tfbx5wVf4P2xx2kmN0wSFlgRU8aLkfczGV3yLgp7B3v2aNcPfYZp/z6YdH+gdEPPHaw8TPu8Msb/ozEeZTzac8d6lwPlZ2i5m0OOq0POH05eh+ZjtGuHlu1oeR7rPQ43zcGuH61MhuZ3qPusOuT/oc89UD5GK8uxnn8473Oo3/fIa9RR/ob9285Y38qBnlssm5HXHuibLNb/werhUDnUMjzc8hsrj0PfgTHSHE7+DqUtHEq5FPM78lsdjbdazgd71yPBweptaL5GtuNDyasY8vtQ6rJ4vthvHm5/NNY4NrQ/HjmmjVavQ+v7UOtlZN9WPHawMWu0vB0qhzq+jydvpc0NPQf7ypYR/4/8zkb+P14MLbex7j9W2xj5fm9l7BjrXiMZbXwceX2Rscaiofc6lHI82PsU73OgdFk8PBBewkfX38GnjnKLVZEJ3+fqaGQi97mSSCQSiUQikUgkRw/vmn2uJBKJRCKRSCQSieTvBSlcSSQSiUQikUgkEsk4IIUriUQikUgkEolEIhkHpHAlkUgkEolEIpFIJOOAFK4kEolEIpFIJBKJZByQwpVEIpFIJBKJRCKRjANSuJJIJBKJRCKRSCSScUAKVxKJRCKRSCQSiUQyDkjhSiKRSCQSiUQikUjGASlcSSQSiUQikUgkEsk44JzoDByNCCEASCQSE5wTiUQikUgkEolEMpEUZYKijHAgpHA1CslkEoCmpqYJzolEIpFIJBKJRCI5Gkgmk0QikQOmUcShiGDvMUzTpKOjg1AohKIoE5qXRCJBU1MTbW1thMPhCc3LexVZBxOPrIOJR9bBxCPrYOKRdTDxyDqYeN6LdSCEIJlMUl9fj6oeeFWVtFyNgqqqNDY2TnQ2hhEOh98zH/DRiqyDiUfWwcQj62DikXUw8cg6mHhkHUw877U6OJjFqogMaCGRSCQSiUQikUgk44AUriQSiUQikUgkEolkHJDC1VGOx+Ph5ptvxuPxTHRW3rPIOph4ZB1MPLIOJh5ZBxOPrIOJR9bBxCPr4MDIgBYSiUQikUgkEolEMg5Iy5VEIpFIJBKJRCKRjANSuJJIJBKJRCKRSCSScUAKVxKJRCKRSCQSiUQyDkjhSiKRSCQSiUQikUjGASlcHeX88pe/ZPLkyXi9XhYuXMhrr7020Vl6V3LLLbdw8sknEwqFqK6u5qKLLmLLli3D0pxzzjkoijLs5wtf+MKwNK2trXzoQx/C7/dTXV3NDTfcgK7rw9K88MILnHDCCXg8HqZPn85dd911pF/vXcF3vvOd/cp39uzZpfO5XI5rrrmGiooKgsEgH//4x+nu7h52D1n+b4/JkyfvVweKonDNNdcAsg0cCV566SUuvPBC6uvrURSFRx55ZNh5IQTf/va3qaurw+fzsXjxYrZt2zYszcDAAJdddhnhcJhoNMpVV11FKpUalmbdunWceeaZeL1empqa+MEPfrBfXh544AFmz56N1+tl/vz5PPHEE+P+vkcjB6qDQqHAjTfeyPz58wkEAtTX13P55ZfT0dEx7B6jtZ1bb711WBpZB2NzsHZw5ZVX7le+559//rA0sh28PQ5WB6ONDYqi8MMf/rCURraDQ0RIjlruu+8+4Xa7xR/+8AexceNGcfXVV4toNCq6u7snOmvvOpYsWSLuvPNOsWHDBrFmzRrxwQ9+UDQ3N4tUKlVKc/bZZ4urr75adHZ2ln7i8XjpvK7rYt68eWLx4sVi9erV4oknnhCVlZXipptuKqXZuXOn8Pv94vrrrxebNm0SP//5z4XD4RBPPfXUO/q+RyM333yzmDt37rDy7e3tLZ3/whe+IJqamsRzzz0n3njjDXHqqaeK0047rXRelv/bp6enZ1j5P/PMMwIQS5cuFULINnAkeOKJJ8S//uu/ioceekgA4uGHHx52/tZbbxWRSEQ88sgjYu3ateIjH/mImDJlishms6U0559/vliwYIFYsWKFePnll8X06dPFJz/5ydL5eDwuampqxGWXXSY2bNgg7r33XuHz+cRvfvObUpply5YJh8MhfvCDH4hNmzaJb33rW8Llcon169cf8TKYaA5UB7FYTCxevFjcf//9YvPmzWL58uXilFNOESeeeOKwe0yaNEl873vfG9Y2ho4fsg4OzMHawRVXXCHOP//8YeU7MDAwLI1sB2+Pg9XB0LLv7OwUf/jDH4SiKGLHjh2lNLIdHBpSuDqKOeWUU8Q111xT+t8wDFFfXy9uueWWCczV3wc9PT0CEC+++GLp2Nlnny2uu+66Ma954oknhKqqoqurq3Ts9ttvF+FwWOTzeSGEEF//+tfF3Llzh1136aWXiiVLlozvC7wLufnmm8WCBQtGPReLxYTL5RIPPPBA6VhLS4sAxPLly4UQsvyPBNddd52YNm2aME1TCCHbwJFm5ITGNE1RW1srfvjDH5aOxWIx4fF4xL333iuEEGLTpk0CEK+//nopzZNPPikURRF79+4VQgjxq1/9SpSVlZXqQAghbrzxRjFr1qzS/5dccon40Ic+NCw/CxcuFJ///OfH9R2PdkabVI7ktddeE4DYs2dP6dikSZPET37ykzGvkXVw6IwlXH30ox8d8xrZDsaXQ2kHH/3oR8X73ve+YcdkOzg0pFvgUYqmaaxatYrFixeXjqmqyuLFi1m+fPkE5uzvg3g8DkB5efmw4//7v/9LZWUl8+bN46abbiKTyZTOLV++nPnz51NTU1M6tmTJEhKJBBs3biylGVpnxTSyziy2bdtGfX09U6dO5bLLLqO1tRWAVatWUSgUhpXd7NmzaW5uLpWdLP/xRdM0/vSnP/FP//RPKIpSOi7bwDvHrl276OrqGlZekUiEhQsXDvvuo9EoJ510UinN4sWLUVWVlStXltKcddZZuN3uUpolS5awZcsWBgcHS2lkvRwa8XgcRVGIRqPDjt96661UVFRw/PHH88Mf/nCYO6ysg7fPCy+8QHV1NbNmzeKLX/wi/f39pXOyHbyzdHd38/jjj3PVVVftd062g4PjnOgMSEanr68PwzCGTWIAampq2Lx58wTl6u8D0zT5yle+wumnn868efNKxz/1qU8xadIk6uvrWbduHTfeeCNbtmzhoYceAqCrq2vU+iieO1CaRCJBNpvF5/MdyVc7qlm4cCF33XUXs2bNorOzk+9+97uceeaZbNiwga6uLtxu936TmZqamoOWbfHcgdLI8t+fRx55hFgsxpVXXlk6JtvAO0uxzEYrr6HlWV1dPey80+mkvLx8WJopU6bsd4/iubKysjHrpXgPiUUul+PGG2/kk5/8JOFwuHT82muv5YQTTqC8vJxXX32Vm266ic7OTm677TZA1sHb5fzzz+fiiy9mypQp7Nixg29+85tccMEFLF++HIfDIdvBO8wf//hHQqEQF1988bDjsh0cGlK4krznuOaaa9iwYQOvvPLKsOOf+9znSn/Pnz+furo6zjvvPHbs2MG0adPe6Wz+3XHBBReU/j722GNZuHAhkyZN4s9//rOccE8Ad9xxBxdccAH19fWlY7INSN7LFAoFLrnkEoQQ3H777cPOXX/99aW/jz32WNxuN5///Oe55ZZb8Hg873RW/+74xCc+Ufp7/vz5HHvssUybNo0XXniB8847bwJz9t7kD3/4A5dddhler3fYcdkODg3pFniUUllZicPh2C9aWnd3N7W1tROUq3c/X/7yl3nsscdYunQpjY2NB0y7cOFCALZv3w5AbW3tqPVRPHegNOFwWAoQI4hGo8ycOZPt27dTW1uLpmnEYrFhaYZ+77L8x489e/bw7LPP8tnPfvaA6WQbOLIUy+xA/XxtbS09PT3Dzuu6zsDAwLi0DTmeWBQFqz179vDMM88Ms1qNxsKFC9F1nd27dwOyDsabqVOnUllZOazvke3gneHll19my5YtBx0fQLaDsZDC1VGK2+3mxBNP5LnnnisdM02T5557jkWLFk1gzt6dCCH48pe/zMMPP8zzzz+/n9l6NNasWQNAXV0dAIsWLWL9+vXDOvjiIHzMMceU0gyts2IaWWf7k0ql2LFjB3V1dZx44om4XK5hZbdlyxZaW1tLZSfLf/y48847qa6u5kMf+tAB08k2cGSZMmUKtbW1w8orkUiwcuXKYd99LBZj1apVpTTPP/88pmmWhN9Fixbx0ksvUSgUSmmeeeYZZs2aRVlZWSmNrJfRKQpW27Zt49lnn6WiouKg16xZswZVVUuuarIOxpf29nb6+/uH9T2yHbwz3HHHHZx44oksWLDgoGllOxiDiY6oIRmb++67T3g8HnHXXXeJTZs2ic997nMiGo0Oi9QlOTS++MUvikgkIl544YVhIUQzmYwQQojt27eL733ve+KNN94Qu3btEo8++qiYOnWqOOuss0r3KIah/sAHPiDWrFkjnnrqKVFVVTVqGOobbrhBtLS0iF/+8pfv6TDUQ/na174mXnjhBbFr1y6xbNkysXjxYlFZWSl6enqEEFYo9ubmZvH888+LN954QyxatEgsWrSodL0s//HBMAzR3NwsbrzxxmHHZRs4MiSTSbF69WqxevVq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",
"text/plain": [
"<Figure size 1000x500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(10, 5))\n",
"plt.scatter(range(len(y_test)), y_test, label=\"Актуалочка\", color=\"black\", alpha=0.5)\n",
"plt.scatter(range(len(y_test)), y_pred, label=\"Предсказанные(новые параметры)\", color=\"blue\", alpha=0.5)\n",
"plt.scatter(range(len(y_test)), y_oldpred, label=\"Предсказанные(старые параметры)\", color=\"red\", alpha=0.5)\n",
"plt.xlabel(\"Выборка\")\n",
"plt.ylabel(\"Значения\")\n",
"plt.legend()\n",
"plt.title(\"Актуалочка vs Предсказанных значений (Новые and Старые Параметры)\")\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "aimenv",
"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.12.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}