Last active
May 31, 2020 02:13
-
-
Save PatWalters/2cf6e95072e588244cf8eda624cc15db to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 29, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import pandas as pd\n", | |
"from tqdm.notebook import tqdm_notebook\n", | |
"from tqdm.notebook import tqdm\n", | |
"from rdkit import Chem\n", | |
"from rdkit.Chem.Descriptors import MolWt, MolLogP, NumHDonors, NumHAcceptors, NumRotatableBonds\n", | |
"import seaborn as sns\n", | |
"from ipyfilechooser import FileChooser" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Select a file" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/vnd.jupyter.widget-view+json": { | |
"model_id": "b8b26dcdd9d9426a9c1e37724d5d1a12", | |
"version_major": 2, | |
"version_minor": 0 | |
}, | |
"text/plain": [ | |
"FileChooser(path='.', filename='', show_hidden='False')" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"fc = FileChooser('.')\n", | |
"display(fc)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Read the data" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"df = pd.read_csv(fc.selected_filename)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"How many molecules in the database" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(6264, 6)" | |
] | |
}, | |
"execution_count": 6, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.shape" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"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>molregno</th>\n", | |
" <th>SMILES</th>\n", | |
" <th>pref_name</th>\n", | |
" <th>max_phase</th>\n", | |
" <th>clean_smiles</th>\n", | |
" <th>mw</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>97</td>\n", | |
" <td>COc1cc2nc(N3CCN(C(=O)c4ccco4)CC3)nc(N)c2cc1OC</td>\n", | |
" <td>PRAZOSIN</td>\n", | |
" <td>4</td>\n", | |
" <td>COc1cc2nc(N3CCN(C(=O)c4ccco4)CC3)nc(N)c2cc1OC</td>\n", | |
" <td>383.408</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>115</td>\n", | |
" <td>CN1CCC[C@H]1c1cccnc1</td>\n", | |
" <td>NICOTINE</td>\n", | |
" <td>4</td>\n", | |
" <td>CN1CCC[C@H]1c1cccnc1</td>\n", | |
" <td>162.236</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>146</td>\n", | |
" <td>CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23</td>\n", | |
" <td>OFLOXACIN</td>\n", | |
" <td>4</td>\n", | |
" <td>CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23</td>\n", | |
" <td>361.373</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>147</td>\n", | |
" <td>CCn1cc(C(=O)O)c(=O)c2ccc(C)nc21</td>\n", | |
" <td>NALIDIXIC ACID</td>\n", | |
" <td>4</td>\n", | |
" <td>CCn1cc(C(=O)O)c(=O)c2ccc(C)nc21</td>\n", | |
" <td>232.239</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>148</td>\n", | |
" <td>O=c1oc2c(O)c(O)cc3c(=O)oc4c(O)c(O)cc1c4c23</td>\n", | |
" <td>ELLAGIC ACID</td>\n", | |
" <td>2</td>\n", | |
" <td>O=c1oc2c(O)c(O)cc3c(=O)oc4c(O)c(O)cc1c4c23</td>\n", | |
" <td>302.194</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" molregno SMILES pref_name \\\n", | |
"0 97 COc1cc2nc(N3CCN(C(=O)c4ccco4)CC3)nc(N)c2cc1OC PRAZOSIN \n", | |
"1 115 CN1CCC[C@H]1c1cccnc1 NICOTINE \n", | |
"2 146 CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23 OFLOXACIN \n", | |
"3 147 CCn1cc(C(=O)O)c(=O)c2ccc(C)nc21 NALIDIXIC ACID \n", | |
"4 148 O=c1oc2c(O)c(O)cc3c(=O)oc4c(O)c(O)cc1c4c23 ELLAGIC ACID \n", | |
"\n", | |
" max_phase clean_smiles mw \n", | |
"0 4 COc1cc2nc(N3CCN(C(=O)c4ccco4)CC3)nc(N)c2cc1OC 383.408 \n", | |
"1 4 CN1CCC[C@H]1c1cccnc1 162.236 \n", | |
"2 4 CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23 361.373 \n", | |
"3 4 CCn1cc(C(=O)O)c(=O)c2ccc(C)nc21 232.239 \n", | |
"4 2 O=c1oc2c(O)c(O)cc3c(=O)oc4c(O)c(O)cc1c4c23 302.194 " | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 22, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/vnd.jupyter.widget-view+json": { | |
"model_id": "5ba2549d59684ca19ff125b5b86a9e9d", | |
"version_major": 2, | |
"version_minor": 0 | |
}, | |
"text/plain": [ | |
"HBox(children=(FloatProgress(value=0.0, max=4647.0), HTML(value='')))" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"RDKit WARNING: [20:52:20] WARNING: not removing hydrogen atom without neighbors\n" | |
] | |
} | |
], | |
"source": [ | |
"df['mol'] = [Chem.MolFromSmiles(x) for x in tqdm(df.SMILES)]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Remove rows with null values" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"df.dropna(inplace=True)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(6264, 7)" | |
] | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.shape" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Calculate properties" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 30, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/Users/pwalters/opt/anaconda3/envs/rdkit_2020_02/lib/python3.7/site-packages/tqdm/std.py:668: FutureWarning: The Panel class is removed from pandas. Accessing it from the top-level namespace will also be removed in the next version\n", | |
" from pandas import Panel\n" | |
] | |
}, | |
{ | |
"data": { | |
"application/vnd.jupyter.widget-view+json": { | |
"model_id": "14e4859018e0455cba4c904b5029e2a0", | |
"version_major": 2, | |
"version_minor": 0 | |
}, | |
"text/plain": [ | |
"HBox(children=(FloatProgress(value=0.0, max=4647.0), HTML(value='')))" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"data": { | |
"application/vnd.jupyter.widget-view+json": { | |
"model_id": "15ff593042994eb1882a3072e79f89ef", | |
"version_major": 2, | |
"version_minor": 0 | |
}, | |
"text/plain": [ | |
"HBox(children=(FloatProgress(value=0.0, max=4647.0), HTML(value='')))" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"data": { | |
"application/vnd.jupyter.widget-view+json": { | |
"model_id": "cd32e98257e14e4f85c9ca3693807068", | |
"version_major": 2, | |
"version_minor": 0 | |
}, | |
"text/plain": [ | |
"HBox(children=(FloatProgress(value=0.0, max=4647.0), HTML(value='')))" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"data": { | |
"application/vnd.jupyter.widget-view+json": { | |
"model_id": "8f3d4431bbe84af39afccb7dc076d2de", | |
"version_major": 2, | |
"version_minor": 0 | |
}, | |
"text/plain": [ | |
"HBox(children=(FloatProgress(value=0.0, max=4647.0), HTML(value='')))" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"\n" | |
] | |
}, | |
{ | |
"data": { | |
"application/vnd.jupyter.widget-view+json": { | |
"model_id": "8c47955a0d254e538cfa675f9408c25c", | |
"version_major": 2, | |
"version_minor": 0 | |
}, | |
"text/plain": [ | |
"HBox(children=(FloatProgress(value=0.0, max=4647.0), HTML(value='')))" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"tqdm_notebook.pandas()\n", | |
"df['MW'] = df.mol.progress_apply(MolWt)\n", | |
"df['LogP'] = df.mol.progress_apply(MolLogP)\n", | |
"df['HBD'] = df.mol.progress_apply(NumHDonors)\n", | |
"df['HBA'] = df.mol.progress_apply(NumHAcceptors)\n", | |
"df['Rotors'] = df.mol.progress_apply(NumRotatableBonds)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Remove molecule with MW > 500 - **May want to comment the line below out**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 31, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"df = df.query(\"MW <= 500\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 32, | |
"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>molregno</th>\n", | |
" <th>SMILES</th>\n", | |
" <th>pref_name</th>\n", | |
" <th>max_phase</th>\n", | |
" <th>clean_smiles</th>\n", | |
" <th>mw</th>\n", | |
" <th>mol</th>\n", | |
" <th>MW</th>\n", | |
" <th>LogP</th>\n", | |
" <th>HBD</th>\n", | |
" <th>HBA</th>\n", | |
" <th>Rotors</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>97</td>\n", | |
" <td>COc1cc2nc(N3CCN(C(=O)c4ccco4)CC3)nc(N)c2cc1OC</td>\n", | |
" <td>PRAZOSIN</td>\n", | |
" <td>4</td>\n", | |
" <td>COc1cc2nc(N3CCN(C(=O)c4ccco4)CC3)nc(N)c2cc1OC</td>\n", | |
" <td>383.4</td>\n", | |
" <td><rdkit.Chem.rdchem.Mol object at 0x1a238800d0></td>\n", | |
" <td>383.4</td>\n", | |
" <td>1.8</td>\n", | |
" <td>1</td>\n", | |
" <td>8</td>\n", | |
" <td>4</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>115</td>\n", | |
" <td>CN1CCC[C@H]1c1cccnc1</td>\n", | |
" <td>NICOTINE</td>\n", | |
" <td>4</td>\n", | |
" <td>CN1CCC[C@H]1c1cccnc1</td>\n", | |
" <td>162.2</td>\n", | |
" <td><rdkit.Chem.rdchem.Mol object at 0x1a23880cb0></td>\n", | |
" <td>162.2</td>\n", | |
" <td>1.8</td>\n", | |
" <td>0</td>\n", | |
" <td>2</td>\n", | |
" <td>1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>146</td>\n", | |
" <td>CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23</td>\n", | |
" <td>OFLOXACIN</td>\n", | |
" <td>4</td>\n", | |
" <td>CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23</td>\n", | |
" <td>361.4</td>\n", | |
" <td><rdkit.Chem.rdchem.Mol object at 0x1a23880030></td>\n", | |
" <td>361.4</td>\n", | |
" <td>1.5</td>\n", | |
" <td>1</td>\n", | |
" <td>6</td>\n", | |
" <td>2</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>147</td>\n", | |
" <td>CCn1cc(C(=O)O)c(=O)c2ccc(C)nc21</td>\n", | |
" <td>NALIDIXIC ACID</td>\n", | |
" <td>4</td>\n", | |
" <td>CCn1cc(C(=O)O)c(=O)c2ccc(C)nc21</td>\n", | |
" <td>232.2</td>\n", | |
" <td><rdkit.Chem.rdchem.Mol object at 0x1a23880440></td>\n", | |
" <td>232.2</td>\n", | |
" <td>1.4</td>\n", | |
" <td>1</td>\n", | |
" <td>4</td>\n", | |
" <td>2</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>148</td>\n", | |
" <td>O=c1oc2c(O)c(O)cc3c(=O)oc4c(O)c(O)cc1c4c23</td>\n", | |
" <td>ELLAGIC ACID</td>\n", | |
" <td>2</td>\n", | |
" <td>O=c1oc2c(O)c(O)cc3c(=O)oc4c(O)c(O)cc1c4c23</td>\n", | |
" <td>302.2</td>\n", | |
" <td><rdkit.Chem.rdchem.Mol object at 0x1a238801c0></td>\n", | |
" <td>302.2</td>\n", | |
" <td>1.3</td>\n", | |
" <td>4</td>\n", | |
" <td>8</td>\n", | |
" <td>0</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" molregno SMILES pref_name \\\n", | |
"0 97 COc1cc2nc(N3CCN(C(=O)c4ccco4)CC3)nc(N)c2cc1OC PRAZOSIN \n", | |
"1 115 CN1CCC[C@H]1c1cccnc1 NICOTINE \n", | |
"2 146 CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23 OFLOXACIN \n", | |
"3 147 CCn1cc(C(=O)O)c(=O)c2ccc(C)nc21 NALIDIXIC ACID \n", | |
"4 148 O=c1oc2c(O)c(O)cc3c(=O)oc4c(O)c(O)cc1c4c23 ELLAGIC ACID \n", | |
"\n", | |
" max_phase clean_smiles mw \\\n", | |
"0 4 COc1cc2nc(N3CCN(C(=O)c4ccco4)CC3)nc(N)c2cc1OC 383.4 \n", | |
"1 4 CN1CCC[C@H]1c1cccnc1 162.2 \n", | |
"2 4 CC1COc2c(N3CCN(C)CC3)c(F)cc3c(=O)c(C(=O)O)cn1c23 361.4 \n", | |
"3 4 CCn1cc(C(=O)O)c(=O)c2ccc(C)nc21 232.2 \n", | |
"4 2 O=c1oc2c(O)c(O)cc3c(=O)oc4c(O)c(O)cc1c4c23 302.2 \n", | |
"\n", | |
" mol MW LogP HBD HBA \\\n", | |
"0 <rdkit.Chem.rdchem.Mol object at 0x1a238800d0> 383.4 1.8 1 8 \n", | |
"1 <rdkit.Chem.rdchem.Mol object at 0x1a23880cb0> 162.2 1.8 0 2 \n", | |
"2 <rdkit.Chem.rdchem.Mol object at 0x1a23880030> 361.4 1.5 1 6 \n", | |
"3 <rdkit.Chem.rdchem.Mol object at 0x1a23880440> 232.2 1.4 1 4 \n", | |
"4 <rdkit.Chem.rdchem.Mol object at 0x1a238801c0> 302.2 1.3 4 8 \n", | |
"\n", | |
" Rotors \n", | |
"0 4 \n", | |
"1 1 \n", | |
"2 2 \n", | |
"3 2 \n", | |
"4 0 " | |
] | |
}, | |
"execution_count": 32, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"df.head()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 33, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"cols = ['MW','LogP','HBD','HBA','Rotors']\n", | |
"xlab_list = [\"Molecular Weight\",\"RDKit LogP\",\"# HB Donors\",\"# HB Acceptors\",\"# Rotatable Bonds\"]\n", | |
"df_melt = df[cols].melt()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 34, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAABDQAAADSCAYAAAC1vJD2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdd3gc1bn48e/ZJmnVe3PvNpjeQgkQCAEChOQmN4Ek8EtIJYRcApfiQAJJ4CaYkotpF4jBjWJsY8A2NjYuuPfe5S5LtmzLklbaOjPn98dKwkWWZVvS7Erv53n2MZ6ZnXllcaa8c857lNYaIYQQQgghhBBCiHjisDsAIYQQQgghhBBCiFMlCQ0hhBBCCCGEEELEHUloCCGEEEIIIYQQIu5IQkMIIYQQQgghhBBxRxIaQgghhBBCCCGEiDuS0BBCCCGEEEIIIUTckYSGEEIIIYQQQggh4o4kNGKMUmqnUiqslMo5ZvlKpZRWSn1NKeVTSjmPWPfmCZa93p6xCxFL6tvS9a24v/+nlDKVUrVKqRql1Cql1C2ttX8h4kVTbau+fcw7Yn2gvq0cVkpNVkp1PWLbd+qvc776zzql1P8opdLb+2cRIlacabs64jtP1t8vXtpesQtht2Pax77660xKC77X2MZE/JKERmzaAdzR8Bel1GDAW//Xg0R/bxccsf1VQOkxy74OfNm2YQrR6SzUWqcAGcC/gbFKqUybYxIiFt1a31YKgf3AsGPWP6u1TgVygZ8BlwHzlVLJ7RumEHGl2XallFLAXUBl/Z9CdCYN7eM84HzgsbY+oFLK1dbHECcnCY3YNIqjL0R3AyPr/zsCLCKasEAplQd4gLHHLOuHJDSEOI5S6pdKqRKlVKVS6hOlVNER625QSm1WSlUrpV5VSs1RSv3i2H1orS1gOJAE9G7H8IWIK1rrIDAOGHSi9VrrpcBtQDbR5IYQohnNtKuriCY77gd+pJTytHdsQthNa70PmEY0sYFSKl0pNVIpdUAptUsp9bhSyqGUGgi8DnytvmdHVXPb16/7f0qp+UqpF5VSh4AnlVJ96u8Xq5VSB5VSH9j0o3daktCITYuANKXUwPphJD8CRh+x/kvqkxf1f86r/xy5bIfWurSd4hUiLiilvgH8D/CfRG/6dgHv16/LIXqD+BjRB6vNwOUn2I8L+AVQC2xt88CFiFNKKS/wQ6LXtRPSWvuA6UQfyIQQzWimXd0NfEr0JRfAre0ZlxCxQCnVBbgJKKlfNAxIB3oBVxN9afwzrfVG4DfU977VWmc0t/0Rh7gU2A7kA08DfwM+BzKBLhzfI1G0MekmE7saemnMATYCe49YNwe4v75r4VXAXGAhMPqIZXPaN1wh4sKPgeFa6xUASqnHgMNKqR5EE4HrtdYT6te9BDx0zPcvq8/gG0QvlN/VWle3U+xCxJKJSinjiL97gBVNrE8GDgDfasE+y4ALWy9EIeLOaber+iTHD4C7tNYRpdQ4oveR49s+bCFiwkSllAZSgJnAX454MXxefeLcp5R6Hvgp0aHDR2nh9mVa64akhaGUigDdgaL6l8lSk6OdSQ+N2DUKuBP4f3w13KTBIqKN9WyiD2Fztda1wJ4jlslwEyGOV0S0VwYA9e3mEFBcv27PEes00do0R1qktc7QWudorS/TWs9oh5iFiEW317eFjPq3Wvc2tR5IBO4D5iilCk6yz2KiY/+F6KzOpF19l2iyfUr938cANymlctsjcCFiwO31tZmuAQYAOfUfN0fc+9X/d/EJ9tGS7fdwtIcBBSxRSq1XSv38dH8AcXokoRGjtNa7iBYHvRmYcMy6ILCUaFfCQq31pvpVc+uXnYMkNIRoShnRLDoA9QUIs4n2gCon2lWwYZ068u9CiFOntTbrez2ZwJUn2q6+Gv31RK9jQohmnKBd3U30ZddupdQ+4EOiD2Z32hOlEPbQWs8B3gGeIzqZQkMPigbd+Krnuz7m6yfb/rjvaK33aa1/qbUuAn4NvKqU6nOGP4Y4BZLQiG33AN/QWtc1se5L4A/AgiOWzatfVq613tYO8QkR69xKqcSGD/Ae8DOl1HlKqQTgGWCx1nonMBkYrJS6vb5Gxu+Ak71RFkI0Q0V9h+jY4o1NrE9QSl0ITAQOA2+3c4hCxJ1j25VSqhi4DriFaCHE84BzgX8is52IzulfwDeJ9lwfCzytlEpVSnUH/shXtQn3A10aCuhqrc2TbH8cpdQP6ut2QPQ6pgGrDX4mcQKS0IhhWuttWutlJ1g9B8jj6HFa8+qXyRsuIaKmAIEjPtcATxAdU1xOdIaSHwForQ8SHX/8LNFhKIOAZUCovYMWogP4VClVC9QQLZp2t9Z6/RHrH1ZK+Yi2tZHAcuDyEyTwhRBRJ2pXPwVWaa0/r39bvK9+poeXgHOUUmfbGLMQ7U5rfYDoteXPwO+BOqKFPOcB7xKdqQ6itTbWA/uUUgfrlzW3fVMuBhbXt81PgD9orbe36g8kmqWiw8SFEEIcqX6KrlLgx1rrWXbHI4QQQgghhDia9NAQQoh6SqlvKaUy6oejDCFa5KnZ6SaFEEIIIYQQ9pCEhhBCfOVrwDaiRaFuJVoxO2BvSEIIIYQQQoimyJATIYQQQgghhBBCxB3poSGEEEIIIYQQQoi4c0oJjRtvvFETnYpGPvKRz9Gf0ybtSj7yOeHntEibko98mv2cFmlX8pFPs5/TIu1KPvJp9tMip5TQOHjw4Mk3EkKcEmlXQrQuaVNCtD5pV0K0PmlXQpw5GXIihBBCCCGEEEKIuCMJDSGEEEIIIYQQQsQdSWgIIYQQQgghhBAi7khCQwghhBBCCCGEEHFHEhpCCCGEEEIIIYSIO5LQEEIIIYQQQgghRNyRhIYQQgghhBBCCCHijiQ0hBBCCCGEEEIIEXckoSGEEEIIIYQQQoi4IwkNIYQQQgghhBBCxB1JaAghhBBCCCGEECLuSEJDCCGEEEIIIYQQcUcSGkIIIYQQQgghhIg7LrsDEB2LZVls3LiR5cuXU1JSQunevVRXV2OZFh6Ph9zcXLp0KWbQoEFccMEFdOnSxe6QhYhroVCIDz/8kNlz5nDrLbdw66234nBIrtouL730El6vl1/84hd2hyKEOA2fffYZEz/+mD8/8QTFxcV2hyNETAkEAowZM4bpM2aQn5/POYMH8+Mf/5ikpCS7QxOdmCQ0RKsoLy/nk08+Ycpnn1FdVRVdmJSO4UlFuzLQTgcqYlC26wDrt5QwdepUAHr37sPNN9/EzTffLCdDIU5RVVUVv/7Nb9i/bx86IZUXX3yRL76YydChz5KQkGB3eJ3Ovn37+Oijj/Amp/Czn/0Mp9Npd0hCiFMwe/Zsnn32WbTWPPDAH3n55WHk5eXZHZYQMWHz5s0MGfInDh06iJFWTNm2ctasXsPMWbP4y5//TP/+/e0OUXRSktAQZ2TXrl2MGjWKL774Ag1E0rti9DoXI70LuE7wQKU1KlSDq6qUrfu2MWzYMN5+5x3uvOMOvv/97+PxeNr1ZxAiXo0aNYr9+/fj7/ctzLQi3Ae3sGbNfN544w1+//vf2x1ep/Ppp5+itaau1kdJSYnc3AkRQ/x+P++99x6VlZX813/9F263+6j1W7Zs4W9/+xtmSh7B4gs5UDKDRx8bwr/fehOllE1RCxEbVqxYwWNDhhDCTd2Ab2Ol5gPgrCmjbOdcfve7+3j00Ue4/vrrbY5UdEaS0BCnpaysjHfeeYfp06eDw0Uo7yzC+YPQCSkn/7JS6MR0IgXpRArOwlFbgVG2ijfeeINPPv2UPz7wAJdccknb/xBCxLGysjImTpxIOKcvZnq0W3Qktz8O/2HGjx/P5ZdfzoUXXmhzlJ1HOBzm008nYabk4aytYPny5ZLQECJGbN68mf9++BFqqqM9SE3T5JFHHmlMVGitGfbyy1hOD3V9rgdXAv4ul7B92zzWrFnDueeea2f4Qthq0qRJvPjiixgJ6dT1vQHt8TauM9OKqB34HZK2zeTvf/87u3bt4uc//7kkAUW7koHW4pSUlJTw9NNP85Of/ITpM2YSyjsL3+DvE+p2ScuSGU2wUvII9LsBf79vsa8qwMMPP8wLL7xAIBBo5eiF6DjefPMtLByEiy44anmoy0WQlME///kshmHYFF3n8+WXX1JTU02o6Hy0N4uly5bZHZIQot6/hw/H5w9RN/BWQkXnMXXqVEaMGNG4fv78+axds4ZA4XmNvUuNrJ4ol4dJkybZFbYQtgoGg7zwwgs899xzhFMKqO1/01HJjAbanYi/37cI5/Rj1KhR/POf/5T7D9GupIeGaFYoFGL79u0sX76c2XPmULJ1K8rpJpQ7kHDB4CZPbKfLTC/Gl3obCaUr+OSTT1i5chV///vf6N69e6sdQ4iOoKKigtmzZxHMP/v4Nuh04e9yMRVbpzN9+nRuuukme4LsZBYtWoTyJGOmFRFJLWTtmrWEQiGpZSKEzXbv3s2SxYsJFZ2PlZJLODkHR6iWd955h6ysLM4//3xeefVVdFIGkdwjelU53YQyezF79mzuv/9+UlNT7fshhGhna9eu5Zn/+QflZXsJFwwm1OVCUM28B3c4CfW4Au3xMnXqVAzDYMiQIVKkXLQLSWgIDMNgx44dbNu2jb1791JRUcH+/RWU79tHxf59aK0B0Mk5hLpdSiS7z4nrY5wph4tQt0swMrpQumMOv/rVr3nssUe55ppr2uZ4QsSh6dOno7U++ub7CGZ6F3RyNiNHjeaGG26Q4pTtYE9pKZHEdFAKI60IY/961q5dy0UXXWR3aEJ0ahMmTACHk0jegOgCpQj2uBJlhHjxxRdRSqGVk0Cf6457YIvk9iNyYBMzZszgu9/9rg3RC9G+fD4fb7zxBp9++ikkpuLvfxNmWmHLvqwU4eILQDmZMWMGubm5/PrXv27bgIVAEhqdlmmaLF68mGnTprFk6VICfn90hVIoTzKG24vlScYqPBcrKQMztRDtbr9ZSMy0InwDv4N320yefPJJfvrTn/Kzn/1MMr2i09NaM3nKFMzUAnRiWtMbKUWw4FzKt81k9uzZXHfdde0bZCdUWroXKylay8RMLQCHg5UrV0pCQwgb+Xw+pkz5jEhWr6PvYRwOAr2vRe/8Eu3yEi46t8l7HCs5B52cw/gJE7jtttskOSw6rHA4zIQJExg5ahR+v59w/tmEis8Hp/vkXz52X4XnoMJ1vPfeexQXF3PLLbe0QcRCfEUSGp2MYRh8/vnnvPPOCCoq9qM8SYTSumIWFGF5s7AS05rvUtaOtMdLXf+bSNi1kFGjRrFr1y6GDBlCYmKi3aEJYZsNGzZQtncv4R5XNrudkdkdnZTB2LEfSkKjjdXU1FBX68PKrE8wOd2QmMbu3bvtDUyITm7KlCmEwyHC+YOOX+l0Eez9jZPuI5h/NqXbZ/Pll19y7bXXtkGUQthry5YtPP3MM+zauRMjvQuhQd/E8mad/g6VItT9MpxhHy/+61/06tWLQYOaaINCtJLYeHIV7WLNmjX8/J57ePbZZ9nntwj0vpaawT8k1PNKjOxeWEkZMZPMaFQ/Ji/Y9RK+/PJL/vCH/+Lw4cN2RyWEbaZOnYpyujGyeja/oVKEcvqxefMmdu3a1T7BdVJ79+4FwEr4qseM4U6ltH65EKL9mabJ+PETMFMLsLzZp70fI6sHJGUwYsRILMtqvQCFiAErV67kN7/9LbvLKvD3vZ5AvxvOLJnRQDnw97oa05XEnx5/gkOHDp35PoU4gRh7ehVtIRAI8OKLL3L//feze38lgd7foG7ALdEHongYwqEUkYKzCfS5ji0lJfz23nspLS21Oyoh2l0kEuGLmTMJZ3RrUTdQI7sXKMXnn3/eDtF1Xg0JjSOHAFkJqZSVlTXWIBJCtK+FCxdSUbGfcN4ZvhlWDgIF57Bz5w7Gjh2Lz+fj/fff56677+ahhx5i9OjRkugQcenAgQP85cmnMD2p1Jz1XcyMbq17AFcidb2/QVV1DY8/8QThcLh19y9EvTh4mhVnYuvWrfzil7/k448/Jpx/Fr5Bt0ffNsTh/NBGZndq+93I/oOHufd397Ft2za7QxKiXS1duhR/XR2RrF4t2l67vRhpxUydOk1uuNtQQ4LVOmLqaishlVAwSHV1tV1hCdGpjRs/HhJSMDLP/CHNyO6FTs3j9ddf59Zbb+X1119nx6EASzfs4K233mLixImtELEQ7ceyLJ7661/x1dbh731tmxX7t7zZ+HtcycYNG/jXv/7VJscQQhIaHZTWmk8++YTf/vZe9h44jL//jYS6XXpaxX1iiZWSh6//t6kJRrj//j+wadMmu0MSot3MnDkT5U7ETCtq8Xci2X04dOggq1atasPIOre9e/eiElPB8VVZKisxtXFdc7TW/O6++3hsyBDpeSbEGTAMg3A4jNaaN998k1UrVxLMHdg6Q2mVg9r+38bf/ybCBYPx9/sW/oG3UDvoNoz0Lrz++v+dtK0LEUvmz5/PurVrCXS9FCsps02PZWT1JFR4DlOmTGH69OlteizROUlCowMKBAI888wzvPDCC4SS86kd+J1TegCKdTopndr+N1NnOnjwwYfYvn273SEJ0eaCwSBz584jlNENHC2vtG9kdkO5PHzxxRdtGF3nVlpaSsSTctQynRBNaJSVlTX73d27d7N+3ToWLljA3Xffzfr169ssTiE6okOHDvG///u/fOc7t3PTTTfxk5/8hDFjxhDO7Uek4KzWO5BSmGmFhLpejJle3Lgs2OMKIpbm2WeflSFmIi5orRkxciQkpRPJ6dMuxwwXX4CVms/zL7xw0uuiEKdKEhodTGlpKb/97b1Mnz6dUPEF+Pt+E+3ueLOC6IRUavt9C7+h+eODD1FeXm53SEK0qUWLFhEKBTFaONykkcNFOLWY+fMXyLCTNrKntPSogqAQHXICnPTctHr1agD8A27GtDTz5s1rmyCF6KCefXYoEz/+hKqEPPy5g9jtswh2uZhQ9yvapdC59iQTKL6I1atXM3fu3DY/nhBnasmSJZRs3Uogf3D7TQagHPh7Xk0oYvH0M89I8k+0KklodCALFizgl7/6Fbv2luPvdwPhovPislZGS+mEVGr73kB1bR2PDfkTwWDQ7pCEaDPTp89AebyYqQWn/F0joytVVYfZvHlzG0TWufl8Pmp9vuMSGjhcqITkk3ZDX7VqFSohGTMlH+3NZMuWLW0YrRAdy549e1i8eBHBgsEEe19DuOvF+PvfRKRwcLve/0Ry+6G9mbz62mtEIpGj1gUCAVauXCkJZREzRo4aFa0vk927XY+rE1IIdLmI9evWMWfOnHY9tujYJKHRAViWxdtvv82QIUPwKy++gbdipnexO6x2YSVlUtfj6+zcsZ0XX3xRMr6iQ6qpqWHRooWEMnue1tsUI6MLKMWCBQvaILrOrakZThoYnpRmu9ZqrVmxchXh5PzobE5J2WzavEXOY0K00IQJE8DhIJI3wN5AlINAl4vZV17O6NGj0VoTCAQYOXIkP/jP/+SBBx5g2LBh0raF7TZt2sT6desI5p11SsNXW0skpy/am8Vrr70us56IViMJjTjn8/l47LEhjBgxgkhOX2oH3Nw4druzMDO6Eio6j2nTpjFjxgy7wxGi1c2ePRvTNImc7tsUVyJmSj7z5s9v3cBEY0LDaiKhYSWkUdpMD429e/dSdbiysdeNlZxNXa2Pffv2tU2wQnQgtbW1TPnsMyKZvdBur93hYKZ3wcjswYgRI3jwwYf46V13MXz4cKqcGURy+vLRRx/x9ttv2x2m6OTGjRuHcnmI5Pa1J4D65N/+/ftkdiDRaiShEcd27drFr3/zGxYvWUKw+9cI9rjyqCr7nUm46DyslDxeGjZMpkkUHc60aZ+jkzKwvNmnvY9Ield2bN/O/v37WzEy0ZjQaCKRbCWkcriyklAo1OR3G2aeMVILATC9OQAy7ESIFpg5cyahYJBw/iC7Q2kU6H0NwW6XsmL1ag7UmfgH3Eyg7zcJ9riSSHYfRo4cye7du+0OU3RShw4dYtasWYSy+oDTY1scZnoxZloRo0ePkeHiolVIQiNOLVu2jN/89reUH6jE3/9GInkDO3S9jJNSDgLdL8fnq+W1116zOxohWk1ZWRnr168jnNX7jNq4mdEViBYXFa2nrKwMlZDcZDL5ZIVBV61ahfJ4G4erWN5MUA5JaAjRAsuWLYPElDNK9LY65SCSfxa+c++gdtBtX9U8UopQ14tAKT777DN7YxSd1sSJEzFNMyaSgKGi86ipqebTTz+1OxTRAUhCIw5NnjyZhx9+GD+J+AbcelpFAjsiy5tFKP9spk6dyoYNG+wOR4hWMW3aNIDTH25Sz0pMh8RUli5d2hphiXp79+7FOGbK1gbWSaZuXbd+A+Hk3K8SVQ6XFAYVogUsy2L5ipVEUgpj82WO031cvSPt9mKkd2XKZ59hGIZNgYnOqrq6mnHjxmNkdm+y5lN7M1MLMNMKGfPuuyfsxShES0lCI45orRk9ejRDhw4lklpYXy+j6RvpzipcdC7Knci/hw+3OxQhzphhGHw6aRJmevGZt3WlCKcWsXz5CrmZPomFCxdy++3f5bXXXuPgwYPNblu6t+z4GU7q6frlpaWlx60LBALs31eOlZR11HIjKYtNmzZL8UAhmrFt2zbqan2Nw7XiRSSnL9VVVSxevNjuUEQn89577xEI+AkVXWB3KI1ChedRdfgwkyZNsjsUEeckoREntNa8/vrrvPXWW0SyeuHv801bx7/FLKebQP5gli9bxpo1a+yORogzsmjRIioPHSKc2zoV/M20YgIBPxs3bmyV/XVU06ZNo6qmhg/GjuW39/7uhNMthkIhDlcearJ+BoB2J6LciezZs+e4dbt27UJrjZWUedRy05uNz1dDRUXFmf8gQnRQK1euBMBMi6+EhpHeFeXxMnnyZLtDEZ3IgQMHGD9+PJHs3tGhjTHCTC3ATC1g1OjR0ktDnBFJaMQBrTXDhg3jgw8+IJw3kGCvq8Ehv7oTieQNRHm8/Pvf/7Y7FCHOyCeffAIJyRj19S/OlJEW7Z4tw05OzDAMli5dRiSrF8HuV3CgYj/bt29vctuG2UhOlNAAMBLS2blr13HLG/Zpeo/uoWHV/33Hjh2nFb8QncGKFSsgKQPtSbY7lFPjcBDK6sWixYupqqqyOxrRCViWxYv/+hcRwyRUdL7d4RxNKUJF51N1+HD0fkeI0yRPxTFOa81LL73EhAkTCOefRajbZbE5XjSWOF0E8s9m9erVbNq0ye5ohDgtZWVlLFm6lFB23+PGYp82VwJWci6Llyxpnf11QJs2baKurhYjvQtGejFQ//DUhOZmOGlgJqazq4mExrZt21BO13HTbFuJ6QBN9uoQQkSTjitXrSKcEp/1wyLZvbFMkzlz5tgdiugExowZw4L58wl2uTgmamccy0wrxEwrYtToMQQCAbvDEXFKEhoxTGvNq6++ykcffUQ4/2xCXS+RZEYLRXL6oZxuJkyYYHcoQpyW9957L1oxP7d/q+43klbEls2bqampadX9dhRLliwBpTDSiqJvf70Z0dkUmtBQ7PPYpMSRrMR0aqqrj/v33r59O2Zi5nHndO1KRLkTZGpHIU5g8+bNhILBuBtu0sBKykJ7M/n88+l2hyI6MK0148eP59/DhxPJ6k0kBmY2OZFg0fnUVFcxfvx4u0MRcUoSGjFKa83//d//8eGHHxLOH0So68WSzDgVLg+h7D58MXMmlZWVdkcjxCnZv38/U6ZMIZzdt9W7VBvpXdBas3z58lbdb0excNEirJQ8cCUAEE4pZNXq1UQikeO2LS8vRzndaFfiCfdnJTXd46Jk23aMpIzjv6AURkI6u3dLDw0hmtJYPyPOCoI2UopwZi/Wr193wimdhTgTpaWlPPLoowwbNgwjrQvBHlfE9DOElZqPkdGNMWPelaFY4rRIQiMGaa3597//zfvvv084dwChrpfG9IkoVoXzBmEahlRPFnHn3XffxdSacOE5rb5vKzkH5U6I9kQQRzl8+DBbt2whklbcuMxMKyIcCjU5FfTevXuxEtOaPT9bidGkxZE9LiorK/HVVB83w8lX30lnl/TQEKJJy1esQHuz0O4TJxJjXSS7FwAzZ860ORLRkRiGwb/+9S/uuusuli5bTrDbZQT6Xg9Ol92hnVSoy4UEggFGjRpldygiDklCI8ZorXnjjTcYPXo04dx+hLp/TZIZp0knpWOkFzPx448xTdPucIRokdLSUiZNnhztndEW0zIrB+GUIhYuWixTgx5j3bp1ABhpRY3LjNQCUKrJHi17SvdieJr/HemEFHA4j0poNBQEPVG1eSsxjarDldTV1Z3yzyBERxYOh1m3dh2R1Pisn9FAJ6RipRYwfsIEgsGg3eGIDsAwDJ566ikmTpxIMKcfvsHfjw4ziZNnCCspk3B2XyZOnNg4nFOIlpKERgyxLIuXX36Z9957L9ozo3tsdxGLB5GcflQeOiTd60Vc0FozdOhQLJyE27AauZFeTNXhyhPO3tFZNcwsctRUqq4ErOQcli07+hxiWRb79+9rtn4GEC3omph2VGHQxoRG0okSGlIYVIimbNy4kUgkHL/DTY4QLL6AykOHpG6AaBVDhw5l7ty5BLteSqj75Wi31+6QTlm4+AIsFG+++abdoYg4IwmNGBEOh/nb3/7G+PHjo7OZSM+MVmFkdEO5E/nss8/sDkWIk5o8eTKrV68m0OUitKftbkbM9C4AMuzkGDt27ICkNHC6j1oeSSlg8+ZNR71JPXjwIEYkgpVw8qrxkWOmbt20aRPK40W7k5rcviGhIYVBhThaQ/0MI857aACYqQUYGd0YNXq01A0QZ2THjh1MmzaNUMFgIgVn2R3OadMeL8G8s5g1axYbN260OxwRRyShEQMOHjzIAw/8kVmzZhHqcpHMZtKaHE5Cmb2YO3eezOogYtrOnTt5+eVXMNMKieT0a9NjaY8X7c1i8eLFbXqceLO1ZBuRhOMLdZqpBZimyfr16xuXlZaWAs1P2drASkxnX3k5kUgEwzBYtHgx4dSiE2+fEK3LIT00hDjaihUr0ck5jUV7412oy0UEg0H+8pe/UF1dbXc4Ik598MEHKKeLSMFguxwfF+4AACAASURBVEM5Y+HCc1CeJF555RUZFitaTBIaNlu2bBn3/OIXbNi0iUCva6JFACWZ0aoiOX0wjAhffPGF3aEI0SSfz8djjw0hZCkCPb/eLueAcFoxa9eulToN9cLhMGV7S5scBmKm5oNSrF69unHZ6tWrQSnM5JyT7ttKTMeyLHbv3s2qVavw19VhZHY/8RccTkhMlYSGEEcIBAKs37CeSEr8985oYCVlEOhxFWvWruOXv/o1mzZtsjskEWcOHDjA9OnTCWX3jetCuY2cbgKF57Nu3TrmzJljdzQiTkhCwyY1NTUMHTqUhx56iOoQ1A68FaO+6rVoXZY3G+3NYurUaXaHIsRxDMPgL395kvL9+6jrdW2rT9N6ImZGV0zTlF4a9Xbv3o1lWU3XtXB6sLzZrFr1VUJj+fLlWC18U2ymFYLDybhx45g3bx7K6cI4YiaVphieNHbukiEnQjSYP38+pmFgZHazO5RWZeT0obb/zVRU1XLvvb9jxIgRWJZld1giTnz00UeYlkU4P36HmhwrktsP7c3ilVdfJRQK2R2OiAOS0GhngUCA999/nx/dcQeTp0whVDAY36DbTlgcTrQCpQhl9Wbz5k2N3cSFiAVaa5577jlWrFhOoNvl0Z4A7cRMyUN5kpg3b167HTOWnWzmESMlnw0bNhAKhfD7/WzYuJFISssKE2pPMuHcAUydOpUZX3wRHW5ykmn0rMR09paWyoONEPWmT58OCSmYKe13nmwvVkouvkHfIZTRnbfffpsRI0bYHZKIA1prZs6ahZFWhE48eT2nuKEcBLpeyoGKCj744AO7oxFxQBIa7aSiooK33nqL7//gP3n99depcWVSN+g7hLteDI7Ynx863jX0fpkxY4bNkQjxlVGjRjF16lRCRedh5LZt3YzjKAehtK4sWLiQcDjcvseOQTt27ADlwEpIb3K9kVqIYUTYtGkTa9euxTLNaM+LFgoXngtON7U+X/PDTeqZSZlEImFJwgoBHD58mKVLlxLK7Nlxh+W6Egj2uppIdh9GjBjB/Pnz7Y5IxLjS0lL2lZdjpHe1O5RWZ6YVEsnswciRo9i5c6fd4YgYJwmNNhSJRJgzZw6PPPooP/zhDxk9ejTV7kzqBnybQL8bsLxZdofYaWhPMmZaIdM+ny5FhkRMmDNnDsOHDyeS3btNp2htjpHZnWAg0DhzQGe2fft2dFIGOJq+LDb0nvnyyy9ZsWIFOJyn9KZYuxMJFpyDdroxMk5+82ml5AI0W+k9FApFh75ILw7Rwc2aNQvLsjCy+9gdSttSimCPy7GSc/n735/mwIEDdkckYtiiRYsAWnRNiUeh7l/DVE6e+Z//wTAMu8MRMUwSGm1g27ZtDBs2jO9+73v85S9/YcnKtQQLBlN7zg8I9Lkeqx27lYuvhLN6U162V4puCdtt3bqVp59+Bislj2CPK2x742imFaKcbhl2ApRs246RePwMJ41cCUSy+zB+/Hg++eQTzOS8kw4bOVa4YDC15/4IXCcv3GYlpqOc7hMmNHw+Hw899N88+OCDjB079pTiECKeaK357LOpaG/WCYeEdSgOF/5eVxMMhXlp2DC7oxExbMHChWhvJroFs23FI+1Owt/ta2zZvJnRo0fbHY6IYZLQaCWBQIBJkybxy1/9invuuYfxH03ksCsHf99vUjP4B4S7XNRhTzjxwsjsgXI4o+NwhbCJz+fj8SeeIKxc+Pt8w94hZw4X4bRi5nw5t1O//aitreXQwQMnrWUU7HklkezeBAIBjFMYbtJIKXC6W7itA8Obw4YmEhqBQID7fv971q5fh+nN5s0332Tr1q2nHo8QcWDmzJls3bqFUO4Au0NpNzoxjWDhucz98ksWLFhgdzgiBvn9ftasXk0krYvdobQpI6snkew+vPPOOzIMS5yQJDTO0L59+3j11Vf53n/8B8899xxbSg8S7HYpvnN/SLDPtZgZXUHJP3NMcHkIp3dlxowvOvXDm7CPZVk888wz7K+oiM5o4vbaHRJGdm9qqqtYunSp3aHYpqEgqHmyYYDKQbDn1wn0/ka7VJQ3knPYVlJyXJX3adOmsWvnTvy9v4G//7cwXYk89de/YZpmm8ckRHvy+/28/Mor6OQcIu1dZ8hm4YKz0d5Mhj73PJWVlXaHI2LM8uXLMU0TI71jJzSA+mFYOfz1b39rvF4LcSR50j5NpaWl/OMf/+DOO+9k7IcfUpOYj3/At6kd9B0i+We1qEuxaH9Gdm9qaqpZtmyZ3aGITmjs2LEsXLiQYJdLsFLy7A4HACO9C8qdyLRpnXda45KSEiA6xfNJKYWR1aPlPS3OgJWci2mabNu27atllsXYDz/ESsnFTO8KrkQCxRdRumc3q1evbmZvQsSf4cOHc7iyEn+3yzrfyyGHE3/Pr1NVXc0Tf/4zkUjE7ohEDFmyZAnK5emQs/4cx+HC3+c6wpaDPz74IHv37rU7IhFjOtnV4cz5fD6GDRvGXXfdzbTPZxDMHUDt4B8Q7H1ttGhcR62+3UE0PLx9/vnndociOplNmzbxxhtvYmT2IJI30O5wvuJwEsrsxbx58/H5fHZHY4uSkhKUJwntTrI7lKOY9YVBj6z7s3TpUsr27iWUN6jxemNkdEc53cyaNcuWOIVoC/PmzWPcuHGEcwfETAK4vVnebPzdr2T9unU88cSfKSsrszskESOWLV9BJCX/hIWsOxrtSaa237eorg3wXw88QHl5ud0hiRjSOVpBK9BaM3v2bH78k58yfsIEgtm98Q3+PqFul6ETUuwOT7SUw0koowdz583D7/fbHY3oJPx+P08+9RSWO4mAjUVATySS0wfDiDB79my7Q7HF1pISIokZMfd70W4vKiGZDRs2NC77YOxYlMeLkdnjqw2dLsLpXZg1e7YMpxMdQmlpabRwcnIOoW6X2B2OrYzsXgS7XsLipUv56U9/ymOPDeH999+nqqrK7tCETSoqKigv24uRWmR3KO3KSsqktu8NHKys5rf3/k6Gn4hGktBogdraWv7617/y5JNPUmW4qBt0G6EeV6I99o9/F6cukt2bSDgsbzNFuxk2bBj79u3D3/Pr4EqwO5zjWN5stDeLjz/+pNNNa2wYBjt27MBKasFwk/amFOGkHJYuW4bP52PBggWsWL6cYN4gcDiP2tTI6kWtz8fy5cttClaI1mEYBk/99a8EDQt/72vtLZwcIyIFZ+M7+z8IZPdn4ar1vP7669xx5518+OGHMm1zJ9Qw1bp5OsWp45yVnENt/5up9of43X33SdFcAUhC46Q2bdrEz+/5BbNmzyZUfAF1A29p2ThrEbOslDxIymDS5Ml2hyI6gblz5/LZZ58RKhiMmVpgdzhNU4pQ7gBKSrZ2ujoMpaWlGJHIyQuC2iRcOJjqmhqefOopnnv+ebQ3q8mCpEZ6F5TLI4laEfdGjRrF1i1b8He7XGaHO4L2JBPqfhm+s/+DurO/S607k1deeYU333zT7tBEO1uxYgXKnXTSmbk6Ksubia//t/ErL0OGDOGtt96S3omdnCQ0mjF58mTuu+/3VFTVUtf/ZsJF53W+olQdkVIEc/qyccMGduzYYXc0ogM7dOgQzw4dik7OJlx0vt3hNCuS0wflTmTs2LF2h9KuGgpuWjGa0LBS8gh2vZTly5ZRWVmJv/sVx/XOAMDhJJzejTlzvjxuVhQh4sWmTZsYNWoUkeze0eK7oklWUib+vjcQzhvAe++9x/jx4+0OSbQTrTXLlq8gnNK56/bphBRqB9xMOKcfo0eP5r8eeICKigq7wxI2kafzJoTDYYYOHcrQoUMJeXOpHXgbVmonqCLciRjZfcDhYNKkSXaHIjooy7J4+umnqa3z4+95ddMPobHE4SKYO4AFCxeyZ88eu6NpNyUlJeBwYiVm2B3KCUVyBxAqOo9g10ux6guFNrlddm8CAT8LFy484TYNs6YcPHhQuqqLmBIOh3n6mWew3F6C3S6zO5zYpxShbpdhZHZn2Msvy+xtncTevXs5dPAAZlrnqp/RJIeLUM8rCfS6mvUbNnHPPb+QYZedlCQ0jrF//35+f//9TJ48mVDBOfj73YB2yxSsHY12JxFJ787UaZ/L20zRJj744ANWrFhBoMslWEmx+7B8pEjeQFAORo8ebXco7aakpASdlBHbleKVIlx8AZH8Qc1uZqYVojxepk+f3uR6wzB49LHHuOeee/j+97/Pr379G4LBYFtELMQpGzlyJHt278bf/fKYrDUUk5SDQM+vo5MyeOqvf+PAgQN2RyTa2NKlSwEwOmH9jBMxsnvjG3gbNaaThx56iDFjxkjCvpOJ4Tu49jdv3jx+/vN72FKynUDvawl3vUiGmHRgkbwB1NX6ZApX0eoWLFjAG2+8QSSrB5Hc/naH02LanUQ4byDTPv+8cShGR2ZZFps2b8FIis3hJqdMOQhl9mLRokVUV1cftcqyLP75z3+ydMkSQkXnEyq+kJKtWxg2bJhNwQrxlbVr1/Luu+8SyemLmd7F7nDii9ONv9e11Nb5eeKJJ2QGtw5u/oIFkJSOTky3O5SYopPSqR1wC+HMHrz55ps8/vjjnXYq+s5IntaBmpoannnmGR5//HFqScA38DaMrJ52hyXamJlagJWcw7vvvodpmnaHIzqIzZs389RTf8X0ZhPscVXcjXENFZ6Lcnl47fXX7Q6lzW3fvh1fTTVGrBZrPQ2RnN6YpnncFLzvvvsu06dPJ1R8IeHi8wkXnUuo8BwmT57MF198YU+wQgD79u1jyJ8ex0pIIdi1c0/RerqspAz8Pa9i0+bNPPLoowQCAbtDEm2grq6OlStWEE7vancoscnpJtjrGoLdLmXBwkXcdff/Y/HixXZHJdpBp05oRCIRxo0bxx13/pjPp88gVHQetQNuQSem2R2aaA9KESoYTHl5GXPnzrU7GtEBLFy4kPv/8AdCuPD3uR6cbrtDOnWuBAIF57Js6VIWLVpkdzRtqmHMuZlWbHMkrcdKykInZzFq9OjGXhrr169n+PDhRLJ6Ei48p3HbcPEFWCm5vDRsmLzVFbbYv38/jzz6KLX+IHW9r5ehJmfAyOxBoOfVrF27ll//5jdSS6ADWrp0KaZpYmR0szuU2KUUkfyzqBt4C5VBi0ceeYSnnnqK/fv32x2ZaEOdMqFRUVHByJEj+cF//icvv/wyNY5U6gbdSrj4gtgv3CdalZHZHZLSGT16DFpru8MRcaqyspL//d//ZciQIQScKdQO+Dba47U7rNMWyRuI9mby7NChHbrL5pIlS9HerLj+XR1HKfzdruDQoUqefvpp5s6dy1+efArLk0yw+xVH9xhSDgJdL6W6qqrTzW4j7KW1Zvbs2fz85/ewu7SMul7XxE2toVhmZPfC3+d6du8/zIMPPshv772XTz/9VBKWHcSCBQtQ7kTMlDy7Q4l5VnIOtQNvJVR0PrPnzOUnP/kJr7zyCpWVlXaHJtqAy+4A2oNlWWzbto0lS5awYMFC1q9fB4CR3oVwv0uilYLjrFu4aCXKQaDgHEpK5jJ9+nRuuOEGuyMSccIwDJYvX86MGTOYM+dLwpEw4Zz+hLpeAs44P7U6nPh7XIXa+CkvvfQSf/rTn+yOqNUFg0HWrFlDJDt+apy0lJWSS6DrJSxZspAlS5ZAQgp1va4Fl6eJbfOIZPbgvffe59ZbbyU7O9uGiEVnsmzZMv7vjTfYumULOjmHuoE3Ss/YVmRmdMWXVoi7YjMbdm5h4/PP8/rr/8f3vvddfvjDH5KSkmJ3iOI0GIbB/AULCad1kfp+LeVwES4+n0hOXxLKVvLhuHF89NFEbrjhm9x+++307dsXJc9/HUKc33U3TWvNzp07WblyJStWrGDlylXU1dVG1yVnR6vFZ/WSC6gAolO4Wgc288qrr3L55ZfLxV40q7y8nHHjxvH59Bn4aqpRrgRCmd0JFwzuUEW6rOQcQoXnMn36dM477zy+/e1v2x1Sq1q9ejWGEcFI7zjDTY4UyR0AKLQ7Mdo9uZkb4FCXC3Gv+4iXX36FP//5CbnBE22ioqKCl156iXnz5kFiKoEeVzZOoS5amcNFpOAsIvmDcNRWYOxfx6hRo/j4k0/51S9/wY033ojL1SEfATqsxYsXU1frw8i/2O5Q4o5OSCHY8ypChefg2beez6Z9zpQpU+jWvTvXX3cdV111FT169JBrXxzrMGczn8/H8uXLWbx4MYsWL+ZwQ5eixDTCKYWYeYWYaUUdq2uxaB1KEeh2GY4NnzB8+HDuv/9+uyMSMai0tJR33nmHL774Aq0UkfRuGH0uwkjv0mGHqoULz8NVd4Dnn3+BgoICLrzwQrtDajXLli1DOVyYqfl2h9I2lCKSN6BFm+rEdEJF5zFr1ky+9rXLmuypVltby9atW0lNTaV3795y4ydOyerVq3n8iT9TW+ePFqYtOLvDnjdjilJYqfkEUvNx1B3E2rOY5557jjFj3uXOO+/giiuuICurg8zy1MGNefddSEzFyJT6GadLJ6YT6nF5NIlfuYOdldsYPnw4w4cPp6CwkCuvuIJLLrmEc889l4QEqecTT+I2oWFZFiUlJSxdupRFixezft06LMtCuRIIpxZi9hiIkVaETki1O1QRB6zkHMJ5g5gwYQJnnXUW1113nd0hiRhRWlrKmDFjmDZtGlo5COWfRTj/LLQn2e7Q2p7Dgb/XtaRsnsKf/vQ4zzzzNBdccIHdUbWKbdu2YXgzwRG3l8FWFS48B3fNXl548UVycnK44IIL0FqzfPlyRo0ezZrVqxvrDGVlZ3PHj37E9773PZxOeSgVzZsyZQrPPfc8VkIKdQNvlVoZNrGSc6jrfzPOqj2Ula/k+eef54UXXqCouJju3brRrVs3unfvztlnn02XLl0kaRlD1q5dy4b16wl2u0yGm7QGVwKRvAFE8gagwn5cVbsordrDuAkfMW7cOJwuFwP6D+CccwYzaNAgBg0aJMMxY1zc3MmFQiFKSkrYsGEDa9asYcXKVdTVRovV6eRswvlnY6Z3iRbKkcYuTkOo68W4ApX84x//oKCggLPOOsvukIRN/H4/y5YtY8qUKdEpv5STUM4AwkXnoN2drJeXy0Nd32/C1s/57//+bx566CFuvPHGuL/Z1VrLteJIyoG/59dxbP6MP/7xj/Tu3Yf9Ffup9fkgIZlQ4bmYybmoSIADldt55ZVXmPHFFzzy8MP06tXL7uhFDNJa88477zBixAjM9GL8J6jjItqRUpiZ3ajN6IojUImrag876w6xd9VGFixaDFZ0Cvus7ByuuPxrXHLJJQwePJiMDElC2em9995DuROJ5PS1O5QOR3u8RPIGEskbCKaBs3Yfrpoy1u6qYP2GD0BbAGTn5DJo4AD69etHz5496d69O4WFhTJ0K0aoU5nZ4aKLLtIN09y1Jb/fz/bt29m6dStbt25l8+Yt7Ny5A9OMnmhJTCOSko+RWoiZXtT5HjBEm1GRICmbJuG2gjzy8MNcf/31Lf7q6R6zvdpVZ3f48GHWr1/Pnj17OHDgAKZpopQiMTERh8OBYRhUVlaye88eSkpKsEwT5fESzO5DJH+QnGeMEN5tM3HWlHPxxZdw//2/p2vXrm191NNqVy1pUw888ADLSsrwD+hYtUHOmGXgrtiE5/BOjMR0zNRCjKyeRw8P0BpX5Xa8e5bgsMLccccd3HbbbeTlRSvv+/1+1qxZw9q1a9m4cSOBQACPx8OAAQO4+OKLOe+88+Qm0F5t1q4a+Hw+/ucf/2DB/PlEcvpGZ9iRWhmxTVs4gjU4fftw1pTh8ZWhjTAAmVlZ5Oflk5WVSWpqKllZWeTk5FBcXEy3bt3Iz8+X3lpt2K6+8Y1vEMwdQKjbZacVmDhNloGj7hDOugM46w7gDlRCoLpxtcPhIDcvj+KiIgoKCsjLyyM3N5esrCyys7PJysoiIyNDrndnpkXtytaEhmEYlJeXs3PnTnbs2EFJSQlbtpawf195Y9dW5U4kkpSF6c3BSsnBTM6TOhj1EnYvwuFvp+mHzDDKCKNdHnC23RsWy5tl+wlbRQJ4t83C4dvHlVdexV13/ZR+/fqd9GunezxJaJwey7IIhUIEg0EMw8A0TSzLwjAMQqEQVVVVlJeXs2XLFlavWcOe3bsbv6tcCdGba63BMtCWhXI4wZ1IxJOCmZyLmVaEmVrQbm/xT7k9n0KbbLV2pS3c+zeSVLYCbRlceuml3PDNb3LxxReTltYmRZbjJqGRsHsRDt++Mz5PxsI5sKVUJEjCnsW4D20DoLCoGMMwOHToIJZpgnJgebOwnB6UFcFZdwi0RUZmJjd885tcddVVDBo06IwfhHw+Hzt37qS8vJzDhw+jtSYpKYnCwkJ69OhBbm5u3PcoamVt1q4Mw2Dq1Km8/fY7HDpcSbD4YiL5g2yfSe6Uzq9tfL8TN23cMqMPcrUVOILVqHAdTjOEwwyjw/7G3hwATpeL/Px8srOySEtLIykpiaSkJLxeL5mZmWRnZ1NUVERxcTHp6ekdtT22Wbu65pprCBWdR7i49YZ8ntEzRCu1kbhpC0cywzgC1TiCVTiCNThCNTjDtTjDddF2cQylFKlpaaRnZJCVkUFqaiopKSkkJyc3tpOEhAQSExNJSEggKSmJ5ORkUlJSSEtLIzU1laSkpI7aZlqiRT94q6aMLMti9erVR813bVkWgUCAmpoaqqurOXToEBUVFZTuLaOiYn/0pqdBUhqRxEysovMxk7JwVe3CEfSBtnDWVeCsq8DNhtYMOa45/YdQZqRdjpWYmMgtt93CpEmTCLZhEkX7D7V5kuZkJ1DtTqKu3414ylczf9ES5s2by2uvvcbAgQPbNK4TMQyDVatWEQqFTrptwwmvuUSlUqrJ9Ucuj0QihMNhwuEwoVCISCSCYRjROjVK4XA4cLvduN1uPB4Pbrcbl8vV+GBimmbjdwOBAKFQiHA4jGVFu+65XK7G77hcrsZjW5Z11Mc0TSKRCMFgkJqaGqqqqjhw8BCHDx+m1lfTuL9m/03cCUS8uZhdLsRIKcBKymxxt+f2TBqeans+lTbZ2u3KSMxARfwsXryExYsWAeD2eMjJzubSSy8lPT2dlJQUkpKSGi/SjmPeznbt2pVu3WKzuNnp/N6ddQdI8rjP+Dx5qr8rO28ItTuRYK+rCRWdh7tyJ7v9h8CRiJVXgJlWiJmcd/QUxmYEV/VejENbGTtuHGPHjsXt8VBUWER6ehpaQyAQoLaujnA4jGEYeDwevN4kMjMySEtLIzk5GaUU4XC48V7icOWhZuNMSU2jb5/e9OzZk4KCArKzs/F4PMf9P9min1lrIpFI4+fYc5rH48HpdH71Uqb+nHzkzeipvEhq+G5Lv9O3b9/GnjJ2ePjhR1ixYnl06uD+38ZKyT1qfbu+iDnCqZxf2/p+pz3uc07HcecShxMztSCa2D+W1igjGH2gC1ajgtXs8vvYU3MAp7UXZRlgGmCE0ZZx1FcTk7wUFBSQm5NNRkYGycnJje0Gos8NDdd9v9+P3++ntq6OYDB6L6KUwu1y4fVGH/ySk5Pxer2N15qGtuh0OhvvUxraZlPtviXta/DgwW2VtG8Vp3XNOoNniNZqI7HaFho0eX11erBSco87t0W/YKIiAVTEj6P+TxUJEIoEOFQdZGflPpzmHpQVjrYNIwKc/NzudLlITU0jLS2VjPR00tPTSUtLa0x4JCcnk5CQ0NiOHA5H4z21YRhEIpHGF4DBYLDJ+3KPx3NUMiUlJQWvN9qBoCXJlCPb0bHPIk21MaUU559/PklJSSfdd0ucNKGhlPoV8CvgpDef0cJPz7X44FZCGkZuN4yMbpjebHC6jw7OV3YG771Fa7rlllu477770Fozfvx4u8Npew4H4eLzMdKLSd44icOHD7fq7k+lXY0cOZKRI0e26vE7AjMxA+1JRrsS0E43KCc4HGiHC+1KxEpMw6rfxu63g23BzjapHU50QiqWJwVlhnGEaomEw5SXlzNx4sQW7+fjjz8mPb11pro9lTbVJrTufOfJejoxnXDRuSff0OnGyOqBkdUDjDCeig1YFRvZtWvnSb+6e9euE64z0oqIZPXCTMlHe5IAFf3/0l+Ju3I7tYe2sXLlSlauXNninyleJScn8+mnn55WsqYpp9quSveWEsnoRrDPdXF73u2s7fiUKIV2J2G6k04+U5QZwRGuxVlbgbO6FF29l507trNzx/b2ibUV9OnTh7feeqvV9mf79eoMSRs5AYcTnZCCTkjh5K/biPYS1mY0EWJG6v8M44j4UaFaHKEaHMEarGA1VYcrqTpcye6T7zVuXHnllfz9739vlX2dNKGhtX4DeAOi3aKa2/bqq69m9+7dlJaWNpntNE2Tg/U9NGp9PhyhGjz71uHZvx6SMogkZGB5MzG92dGsWNdL4/aC2B6SNk3B5dvXLseaNGkSWmsmT57cpscxvdkEBtzcpsdoKWfVbhLLVgHRzGVrOpV2dfvtt0d7Jhw40JjlPNGf9ftGKdXsNnB8NrWh98WRjlx+bKa1qW0bljdkfI/M0jYMCQFwu91HxdjUfhq+ZxgG/kCA6uoaqqurokUKAWewCoJVzf47K08SRmIGRnJe9E1TSt5xidPmtOeb71Ntz6fSJlu9XWkLV9UePAc24fQfgPrfa1Z2Dvl5uaSnpze+IWj8yhH/zyiluOqqq1r1jdeptKmTOZ3fe9L6ia1ynoylc2CLWRZOXxnOukPRhKInGSOtEFzHT3unQj7cB0tIqNoJ/miiWCmFJyEBNITDoSbvHxITk0ipfxPlcCiCoRCVBw8RCgVx1ZThqilDOd3g8aKVinaHPqL7rzc5mR49epCWmtp4zIY/mzq3NXfubHDsebCp8+Kx67TWjW2jJcduar/NndO/853vtFoyo/7Yp9SukpOTcR/Yid61gHDxBWj30W/f7OpNdCrn17a+34nLNn4iZqS+2301jlBt9O20GQYzgrIiZjkZDAAAIABJREFUKNPAZQYhXIc2j+6pkZoWfdOckpxMYmICTqcTpVRjD89AMEhdnZ+6ujqCwQBG5OjeBJ6ExMY3ysner7ruN1ev4HTumVwuF3feeWer/rO15vUKTvOadQbPEK3VRjpUWzhSY0+N6McR8aOMIMoIoYxQdMiOGcFhRXBoM9qjqb5Xkz5Jr5mExERSU9Pqe2qk4fF4jvv/trlrWcNw7UAgGO2hUV/0NCEhgaTERBITE4Gm7/Vb8lxx7P0/HH//1zAs9O67726df29aechJamoq9957b4u2rauro6ysjN27d7Nz585oEdCSbVTs3dG4jfIkEUmsT3Ak52Am53bYt62nw/JmYZx8s1ZRa4YZ++k0tMsLqW1X7dryxsB86JZJwp4leCo2UlBYyE/v/W9bp6rMysrij3/8o23HjzWRSISqqiqqqqoIBAIEAgFM02z8GIZBMBikurqaffv2sXHTJrZvW4tVvjp67khMxXAl19fG0CjLRKGxiL5x0gmpmMk59Q9kie32c51qez6VNtma7cr5/9m77/iq6vvx46/P3fcmgUBYGWzCjJCwwoYCskQBiwMHo3V2KFrr/BbrALXb+VNbR1s71LZWa4fVWutAHCB7BxJCSAjZe39+f9yTECCT5Obc8X4+HveRk3POvfd9zj3zfT6jOAvPsU+hLJ+oqF5cePnlTJ48mREjRhAWFgJd2TajLqIfJcVZHT5O+sUxsK3q21TJ2oGurjh3sqcn1WG90VYnqq4ae2k2qjQXlGLc2HHMnn0tSUlJxMTE4HR6kx91dXVUVHgvtKqrqxvqFjeVVNZak5+fz9GjR0lNTeXEiRMUFBRQV1eHx+MhOjqagQMHMnz4cPr06RPKdZC7zI8ee4xXXnmFt99+G2dhOqWDZ1PbLdrssNp1fPX19U5A7eO11VhLT2EpL0BVlRo3ZVVYa8qxVpehK0vOmN3pdBEeEY4rzI3HE0Z4WBg9evSgV69eREdHExsbS0xMDH379sVub/vDBThdFcVisTRUVRXnryP3EJ21jwTUvtBYXU1D+xmqohhLZbG3FFJ1GZbqsibPh2AkI8IjCIsMJzy8G2FGVSm3291Q5cPlcjVUpWpctaS+eklnP2ANFqY1uxoWFkZ8fDzx8Wd2QVRaWkpKSgqHDx/m8OHDRg8ne6nN8ra1oRwequqftnaLps4VGbIJjoBrSCcQ1NXiOfQu1qITXH755dxwww3SOrGfsdvt9O7dm969m6i/2IyysjL27NnDrl27SE9P52R2NnW1dd78hsuF1WqlpqaGUzm5nMzaT01WNShFTbdYqnsNp6bHAJ83Dur3+7Ouw5n+BY6Te+jdpw/f+v79zJw5U/YPg9//fu1gLcrElp9Knau79zzr7nHOPJayPNxpn2ApOcWESZNYsXw5SUlJ1NTUcOzYMbZu3cquXbvYu28flZWV2Gw2Ro0axeRJX2fu3Ln069dEvXy8rcZ7PJ6GurstUUrRs2dPevbsyYQJEzq83KLjevfuzW233cayZcv4wYYNZBz8FxX9k70Ng5oomPZPn9J1WEpzsRWdwF6YjqX0lLdYPGC1WunWPZKI7uH0ioqjd+/eDb2c9O/fn+jo6Dbtt+fLYrE0JD5Dkm5TJYY2k32ijWqrsZbmYCnNwVqWg708HyoKG/YLAE9YONH9+tGv30CioqLo1atXw7mp/tW9e/fQ3n59zO+uRMPCwhg7dixjx45tGFdVVcWRI0fYt28fe/fuZfv2HZw65m2ITjnDqIyIobZ7f2q6x/i0Bw4R5LTGmbYZa9EJ7rrrLhYvXmx2RKKTeDweJk2axKRJk1qdt6amhv3797Nlyxb++c9/kZvyPri7U95vLDVRQ7us1xO/UleD+8j/sOWnsXz5cm688cZOa8hJ+JHaKjwpH2AtPI7NZqOmxvv8rrZ7LJW9R1EX3htVXYYt9wjOk3uIiIhg/Q9+wNy5c894WpqQkEBCQoJZSyH8wJAhQ/jl88/z8MaNbP7kEyxVpVTGTQzZB1B+qa4Ga1Em1rJcb3etlYVYywsairzHDx/OlOSFJCQkMGzYMHr06NGp1ZlE240YOZIDqaneXk5C8RqkC6nqcu9+UZKFvfQUqiyvIXnRu3cfRkxIYMiQIQwcOJC4uDhiY2MJDw83OWrhdwmNptT3Xz9y5EhWrFgBQGZmJlu3buWLL77g8y++oDznECgLteF9qekeS023WG9RJjl5ijayZ+/DkXOI1atXSzIjhNlstoYbsnXr1vHxxx/zm9/8lpSUjyBrF+XR46jpOTh0Lip0He6U/2IrPM53vvMdVq5caXZEnaedvU0EO1faFmxFGdx4002sWLGC/Px8/vOf//Dqa69TdPi9M+a98MIL+fa3v01kpO+qIIrA5vF4eOjBB3niiSd48803sVQUUD54dpt7mRK+oSqLcZ7YjiP/aEO7Fj16RjF4+EAGDJjOBRdcQFJSEj17Bmh1gCB09VVXsWHDBmz5ad7rD9F5tMZSmoOt4BiOouPeapF4q0+NGTOGhISLGDVqFKNGjZLznR8LiIRGU6Kjo1m6dClLly6lpqaGPXv2sGXLFj7d8hmpR7/EyZcou4uq8H5SPUW0SlWW4M74kslTprB27VqzwxF+wmq1Mnv2bGbNmsXHH3/M87/8FelH/gcntlHZawTVPYegncGdmXce+xxbQTq33nprQ0I5GERHR2PbtddbjDdUklMtsOUewZ57mNVr1nDllVcC0K9fP66++mpWrlzJ/v372b9/PxERESQnJxMVFWVyxCIQWK1W1q9fz6BBg3jyyaew7XuLsgFTqO0eZ3ZooaemEmfGVzhO7cdmtbJ4yWJmzpxJQkKCT6uKiI6bPn06MTGxHM/aRU2PQXIv01FGEsOem4KjMA0qS7FYLIxJSGBK8qVMmDCBYcOGSZXaABIUv5TNZmPcuHGMGzeOG2+8kdzcXLZu3cq2bdv4cutWcs6onhJLTY+B1HaLBSk6JwzO9M+xWS3ctn69FKkU56jvlWP69Ol88sknvPraa+ze9SXO419SG9GP6p5DqI4aBtagOKQ2sOUcwpG9l8suuyyokhkAkyZN4h//+AeW0hzqwvuYHY5PWEqyGxq6bYmqrsBz7FNGjBrFtddee850p9PZcI4Vor2UUqxYsYIhQ4bw6GOPkXnw39RE9qcyZjx1YZIY87maShzZ+3Bl74WaSpYuXcrq1avb1Q6VMJfVauWqq1bxk5/8BGvJSWojmm6DSLSirgZ7bgrO7L2osnxsNjvJycnMmjWTqVOndmrPa6JrBdfVtyEqKooFCxawYMECtNZkZmaybdu2RtVTDqLsLip6Dae6z2i0QzLTocxadAJ7firXfuMbzTZUJwR4GyWbOXMmM2fO5MSJE7z33nu8++57pKdtxpW1g4roRKp7DQ+KpyeqsgRP+ueMTkjgpptuMjucTjd+/HiUUtgKM6gKwoSGtTADz8F3AKiJ7E/FwGneXsKa4MjcAbVV3HXnnfJESvjMuHHj+PXLL/P666/zu9//nrK9b1LdK56KAVPa1Z22aBtrcRb2UwdwFBxD11YzKTmZG2+4gaFDh5odmjgP8+fP5/EnnsCWlyoJjfaqq8V+6gCurJ1QVcbQocNYseKbzJkzR9q/CBJBf+WilCImJoaYmBiWLl1KVVUVX375JW///e98unkzrpN7qOgzmqrosWCT1mdDkevENnr36cMVV1xhdigigMTExLB69WquvfZaduzYwfPP/5K9ez/BWpRFxeDpYAngw6vWuFM/xmFV3HvPPVitVrMj6nTdu3cnfvhw9mdkUBWbZHY4nUpVlhB29EP6DxzInNmzefXV17Ac+S+lI5acU71GVRThOLWPJUuWMHiw1M0WvuVwOLj66qu55JJL+MMf/sDv//AH7KWnKBk2D+3qbnZ4QUFVFOFK/xxbwTHcHg/zlyxqKCEjApfL5WLSxIls3raLSp0cFA9OuoK14Bie419AeSEXjB3LN9atIzExUbr9DTIBfMV9fhwOB9OmTWPatGlkZGTw8ssv8+577+HKS6FswFRqegw0O0TRhazFWViKs1m17hbpTkmcF6UUiYmJPP30U7zyyiu88MILWKtLKR2+IGCTGrb8o1iLTnDz+vXExsaaHY7PJE+ezMFXXoGayqBKaLvTNuOwah5+6CEGDBjAgAEDePjhh3Gc2O5tJb+e1jiPf4nDZmfdunXmBSxCTkREBDfccAOTJk1iw4b74fB7FI9cGlT7oRkspTmEH3wHp93CWqNxX7m2CR7Tp09n8+bNWMrzvR0fiGap6gqcaZux56cS178/3/3OvUyePFkSGUEqpBsLiI2N5b777uO5Z59lcP9o3If/g+vIh2B0WSWCnyNzFxHdurFkyRKzQxEBTinFtddeyw9+8AMsJSe9x5JA7EWjrhZ3xjYGDRrMxRdfbHY0PjVp0iTQGltxptmhdBpVWYy18DhXX3UVAwYMALxFlRctWoTzxHZs+WkN89pyD2PPT2X16mvp1auXWSGLEJaUlMQjj2zCWl2KJ+V9qKszO6SAZSnLJfzQO/Tq2Z2XXnyRK6+8UpIZQWbKlCkA2AqOmRyJf7MWZRKx96+4itK57rrrePmll0hOTpZkRhAL6YRGvREjRvD8c8+xZs0a7HkpROz7G5ayfLPDEj5mKcvHVpjOyq9/HZfLZXY4IkjMmzePm268EXt+Ko4TX5kdTrvZs/dDRRHf+tbNQVnVpLHRo0fjdLmwFgVPQsOeewTwdqva2K233sqIESPxHPkAa8Exbxsbx7YwLjGRVatWmRGqEAAkJCTw/TvuwFqU6W3PRbSbqq4g7PB/6Nm9G088/jjR0dFmhyR8ICoqihEjR2IvTDc7FP+kNY7MnXgO/ouYPj157rnnuOaaa6RtqBAgCQ2DzWZj3bp1/PxnP6O7E8L3v40t74jZYQkfsp/ah81mZ/ny5WaHIoLMFVdcweLFi3Ge2I616ITZ4bRdbTXurB2MHz/eW3ohyNlsNobHx2MtyzU7lM6hNc68FBIuuOCcGxq3281jjz1KbGwMnkPv4Tn4DhFhHn7wf/8X9Ikr4f8WLVrE3LlzcWbtwFKWZ3Y4gUVr3Ec/xFpbwaaND0syI8jNnDEDS8kpVFWZ2aH4l9oq3Cnv4zz+JbNmzuKXzz/PsGHDzI5KdBFJaJwlKSmJF371K0aOiMed8gHO9M9BSxHIoFNbgzPvKHPmzKZ7d2mITHQupRS33norcf37E3b0Q1R1udkhtYk99zC6uoJ169aFTNHM+Ph4bOX5fl89yJaf1mpyzFKWC+UFLFywoMnpkZGRPPnEE9x1111s2rSJX//6ZalqIvzGLbfcQreIbrhTP5aqJ+3gyNiGtfA4t95yCyNGjDA7HOFjycnJAFiDqKpkR1nKconY9zcchencfPPNPPDAD/F4pAfLUCIJjSb06tWLJx5/nGXLluHI2o3n4DuSCQ0ytvyjaKM/diF8weVycf+GDVjqqnClfuL3N8zoOlzZexgxciQJCQlmR9Nlhg4diq6tRlUWmx1Ks6yFGbhT3ifs8H9QlSXNzmfPTcFqszFnzpxm5+nRoweLFy9m2rRp9OjRwwfRCnF+IiMj+d7tt2EpzZGqJ21kz96PM3MHF110UdC3eSS8hg4dSlhYeGCV/vQVrbFn7yNs39v0cNv42c9+xhVXXBEyD2TEaZLQaIbdbue2227j7rvvxlWRS8S+N7EWSJ21YOHMOUh0TCzjxo0zOxQRxOLj47nh+uuxFRzDlnPI7HBaZCtIh/Iirgyxi4GhQ4cCYPXTYu7eLlj/R1xcHA6bFXfa5qaTY1rjKEhlSnIyERERXR+oEJ1g9uzZzJ8/H2fmdiwlp8wOx3/VVuM4/iWuY58yZcoUbrvttpA6bocyi8XC+PFJOEqyzA7FXLU1uI5+iCvtUyZNmMBLL75AYmKi2VEJk0hCoxWLFi3il88/z4CYvngOvYvz6EfeLv5EwLKUF2ApPsklFy+VCwDhc5dddhnjEhPxpH+GqigyO5xmObL30rtPH2bOnGl2KF1q8ODBWCwWb3UNP+TM2IbDCo9s2sQNN1yPtfB4k+07WUtOQmUpc+fONSFKITrPrbfeSlTPKMJSpde5M9TVYcs5hCvlv3Tb9SecmTu5cP587r//fmn0MMSMHz8eKor9umShT9VUEnbwX9jzjrBu3Toee+xRIiMjzY5KmEgSGm0waNAgnn/uOa666ipceSl02/0Xb08A0rZGQLLlpqCUYkEz9cyF6EwWi4V777kHl9OO5+iHflk3XFUWYy3KZNkll4TchbHT6SQ2Lg5ruX+W0LCXnWLSxIn079+fFStWMHjIEFxZO88ppWHLO4Ld4WDq1KkmRSpE54iIiOAHP/g/LJXFuI5+5P/V9bqAtTCDiL1/xX30I/pQyNdmTuWZZ57hvvvuw+12mx2e6GLjx48HwBZEPXS1laoqI/zAP7BX5PHAD3/ImjVrsFjkdjbUyRbQRk6nkxtuuIHnnnuOMSOH4UrbTMSeN7DlHJbERiDRGmf+EcZPmEBUVJTZ0YgQ0bdvX+66804sJdk4MraaHc457DmHIYSTfMPj47FXFJgdxrlqKqG8kFGjRgHe5Njll12GKss/s/60rsNZkMa0qVOlITQRFBITE7nhhhuw56diP7nH7HBMZSnJxnP4PWJ7hrNx40b+8uc/s2HDBkaPHm12aMIkAwYMIDKyR+i1o1FTQdihf+OqLecnP/4xs2fPNjsi4SckodFO8fHxPPnEEzz00EMM6heF++iHROz6E/bMXVIVJQBYS05CRXGzvQAI4Stz5szhoosuwpm1C2vhcbPDOc3o6jMpMYk+ffqYHY0phg0bhq4o9rtjuLXU24ZAfUIDYO7cuXTrHonj5N7T8xVloqvKpbqJCCpXXHEF06ZNw52xLWSL1qvqMsKO/Jc+vXrxzDNPM336dKkqK1BKMXHiBG87GqFSgqm2mrBD72KvKuaRRzaRlJRkdkTCj0hC4zwopZg5cyYvvvArNm3axLiRQ3Ed/4JuO17FdeRDrMUnQ+cAE2BsuSk4HE5mzJhhdigiBH33u99l0OAh3q5cW+itoit5k3xFLFq00OxQTNPehkFVZXGXHOOtJadQSp3RFaPT6WTF8mXYCtOxlOVDXS3ujC+J6NaNKVOm+DwmIbqKUor169fjsNtwHfvM7HC6nta4j36EQ9ewadNG6WJenGHChAnoqjIsflpdslNpjevox1hKc3jggR82VLkRop4kNDrAYrEwbdo0Hn/8cX71q19x8dIlhJcex7P/70TseQNH5g7p7tWf1NXiLEhl9uxZUixbmMLlcvHwQw/islnwpLwPdTVmh4QtNwWn0xVyjYE2Vp/QsLQhoWHP2k34ztexnzrg67CwluYQ178/YWFhZ4xftmwZYeERhB96B9fRj1Cludx15504nU6fxyREV+rTpw9r1qzGVnAs5Hqas+UdwVqYwU033ciwYcPMDkf4mcmTJwNGD2VBzpG5E3v+UW668UamT59udjjCD0lCo5MMGzaM22+/nTf+8hfuvPNOxgyNw3l8K+E7X8V98N/Y8lL9sjHAUGIrPI6urmT+/PlmhyJCWFxcHPfddy+W0hxcqZ+YW5pL1+EsPMa0aaHd9kLPnj0Jj+iGpTy/xfkcmTtxpX8OgK3QxxeRWmMvz2FME/Xke/bsyTNPP0VU9zDseUdYunSplDoTQeuyyy6jb99+OLN2mx1K16mpxHP8c4aPGMGyZcvMjkb4oaioKOKHD8fuT1VYfcBScgrniW3MnTuXK664wuxwhJ+ShEYn83g8LFmyhKefeopXXnmFa66+mj62ctwp79Nt12s4Tmz3u3raocKWm0K37pFMmDDB7FBEiJsxYwbf+MY3sOem4MjaaVoc1pJT6KrykL8ZVkoxbOgQbBUtJDRqa3BmbGP69OksWbIEe8nJdjcIbctLxbP3LahtvWSOqipBV5Wf0X5GYwMHDuT/PfMMN954I9/+9rfbFYcQgcRut7N48SKsxZmoqlKzw/E9rb3J7uoKvn/HHVitVrMjEn5q2tSpWEqyUdUVZofiG3U1hKV+RFRUL26//XZpP0Y0SxIaPhQXF8d1113H66+9xqZNm5iUmIAzYxvddr6K4/hWqK0yO8TQUVOJozCdC+fPC7luKYV/uvbaa5k7dy7O41ux5R01JQZbQRpWq5Xk5GRTvt+fDB06FGt5QbMlZqyl2aDrWLp0KZMmTULXVGEpzWn7F9TV4D7+OdbSHGxFGa3Obi05t0HQs/Xu3ZtVq1ZJt40i6NWXrLTlHjE5Et9zZO3Cnp/KjTfeSHx8vNnhCD9W3023XzU03omcGV9BeQH33H0X4eHhZocj/JgkNLqA1Wpl2rRp/OhHP+Kll15izqxZODN30G3Xn70nZ2lA1Ofs+WnoulqpbiL8hlKKu+66izEJCXiOfoi1OKtrA9AaR8Exxk+YIBcKwODBg9G11c32pmAtzkIpxQUXXNDQurqtKLPNn2/P3geVJdhsNmwFx1qd31Keh8VqZfDgwW3+DiGCVVxcHCNGjsSZl2J2KL6jNfas3TgztjJnzhwpXi9aNXz4cLp1j/R9FUgTWMoLcJzcw5IlS5g4caLZ4Qg/JwmNLjZ48GDuv38Dzz77LPFDBuA+8gHulPelGoqP2fNSiI6JYeTIkWaHIkQDp9PJpo0biY7uR1jKf7u0a0JLeQFUFDEzxKub1KtPHFibaUfDVnySIUOHER4eTmRkJIMGD8FWfKJtH15ThTtrJxMnTWLOnDk4CtNbra5iqSgkOjoau93eruUQIlgtXLAAVZbn7d0nyKjqMjwH/4Ur/XOmTZ3KnXfeKcXrRassFguzZs7AUXgcaoKr2okz/XPcLhfXX3+92aGIACAJDZOMHDmSZ55+mhtvvBFH4XEi9v0NS1mu2WEFJVVZjLUok0ULF8oFgvA73bt357FHH8VlV4SlvA+11V3yvbaCNABpMdxQn9BosmHQulpspacYn5TYMGrSxAlYS7Lb1FONrSgDXV3J6muvZcaMGejqCm/33i2wVxYxcMCA9i2EEEHsa1/7GkopbPmpZofSqSwlpwjf9zfcFXncddddbNy4MaQbaRbtc+mll6Jrq3Fk7zc7lE5jLUjHVnicdevW0qNHD7PDEQFAEhomstlsrFq1iieeeJyeYXbC9/8jaOvBmcmecxiUYuHChWaHIkST+vfvzw/vvx9LWR6uY1u65DttRRkMi48nKiqqS77P33k8Hnr36dtkQsNaegpdV8O4ceMaxiUlJUFdLdY2tKNhqSgEID4+nsmTJ2Oz2RsSSk3SdVBRxABJaAjRoEePHgwdOgxbcdurevk7VV1O+KF36N09nGeeeZrFixfLgxfRLkOGDGHy5Mm4svf5RVfwHabrcB//gpiYWFasWGF2NCJASELDDyQkJPDL559n8KABeA69iy3nkNkhBQ+tceYdJikpiX79+pkdjRDNSk5OZtWqVdhzDmEtbL3RyA6pqcRaks0UaQz0DPHDhmKvKDhnfH37JmPHjm0YN3DgQABURVGrn2spL6RX79643W48Hg8TJ07wFhFuhqosgbpa+vfv395FECKojR+fhLX0VHDcuAGOE9tRdTX89Cc/ZtiwYWaHIwLUqlWr0NXl2IPg/sF+6iCqvICbb75JqlyKNpOEhp+IioriqSefJCkxCffRj7AHUdExM1mLs6CimCWLF5sdihCtWrNmDTGxsXiObfZp1RNbUSZozeTJk332HYFoyJAhUF4IdbVnjLcVZzFo0GC6devWMK5v375YLBYsbWj3xFpZyCAjAQIwZswYqChq9jeuL9EhCQ0hztRQMqok2+xQOkxVFOI4dYBLLrlESmOJDklMTGRMQgLu9C98/0DEl2qrcWduZ8yYhJDvTl60jyQ0/IjH4+HRRx9hcnIyrrTN3lbxRYfYcw7idnuYOXOm2aEI0Sqn08ndd90FFcU4snb77HushcdxezyMHj3aZ98RiAYPHgy6DkvjUhp1NdhKspk4ccIZ89psNnr17t16QkNrrBWFDSU6wEic0Ex7HYDFKPUhNzlCnGns2LFYLBas7ehhyF85j2/D6XSwevVqs0MRAU4pxcaHH2bgwAGEHf4P9lMHW2142h85snajq8r41rdulqpXol0koeFnnE4nDz/0EFOnTsWV9qmU1OgAVV2OPT+VhQsX4HK5zA5HiDYZO3Ys06dPx5W9F2qqOv8LtMZRfIJJEydis9k6//MDWH2Cp3EXutaSbHRdDRMmTDhn/v5xcVirWk5oqOoydG31GcmJ+oSGtSyvyfdYKgrwhIXTvXv3di+DEMEsLCyM+OHDsQd6Oxo1FdgL0lh2ySX07NnT7GhEEIiMjOQXP/8ZI0cOx5X6MRF7/tr13cF3gKoux3VyN7NmzfKWYhSiHSSh4YccDgcPPPBAQ0kN26mDZocUkOynDkBdLZdeeqnZoQjRLmvXrkXXVOLI3tvpn22pKIDKEqlu0oTo6GhiYmOxNSqyay06gcVqPaNB0HoxMTFYWymhYSn3lvZonNDo168fLpe72RIa1ooiBg7oL0+ohGjChPHjsZTmdFmPUL5gz0sFXceFF15odigiiERGRvLM00/z4IMP0re7G8+Bf+LI2AZamx1aqxwnvkLpWummVZwXSWj4KYfDwUMPPsiEiRNxp36MLeew2SEFlrpaXKf2M2nSZCm2LQJOfHy8t5RW9h6o7dxSGvX1ayWh0bSpU6ZgL8lqaHTQXpzJqJGjmuxGMSYmBl1d0WJJmvr2MBofh5RSDBkyGGszCQ1blfRwIkRzkpKSQNdhLWm562N/5shLoX//AdIQqOh0SilmzZrFSy++wMIFC3Ce2I4jc4fZYbVIVRThOHWAiy++WNqOEudFEhp+zOl0smnjRpKSxuNO/UiSGu1gy09FV5WxcuXXzQ5FiPOyevVqdHWlt9vhTmQryiCu/wD69OnTqZ+GCTY7AAAgAElEQVQbLCZPnoyurfEW1a2pxFKac077GfViYmIAWmxHw1JRiMvtOadY+dChQ7FV5J/75Ky2Cl1ZKgkNIZqRkJCA1WoN2HY0VGUJluKTLFhwoZTCEj7j8Xi4++67mT9/Ps6MbVgL0s0OqVnOE19ht9ulPRlx3iSh4eecTiePPLLJ6P3kQ6l+0ha6DlfWTvr3H8CkSZPMjkaI8zJq1Cjihw/HmXOw84qL1tVgLz5J8mTZL5qTmJiI3W7HVpiBrdjbG0xT7WdAWxMaBQwcMOCcG5fBgwejqytR1WVnze9tEFSeUgnRNLfbzejRowO2HQ17bgoA8+bNMzkSEeyUUtxxxx0MGTqUsNQPoabS7JDOYSkvwJ53hEtXrCAqKsrscESAkoRGAHC5XDz66CNMnDQJd+rH2LN2mR2SX7PlHUWV5fONb6zDYpFNXASu5cuWocryOq2LQmvxSXRdjST6WuB0OklMSsKRl4I7/TPcbg+jRo1qct7TCY2iZj/PXlnEoEEDzxk/dOhQ73vPahi0/v/GvaIIIc40YcIELGW5fnmD1iKtcealMHr0mIbjhxC+5HK5uO/ee9E1VTgyd5odzjkcJ77C6XCyatUqs0MRAUzu9gJEffWTWbNm40r/Amf65wHRyE+X03W4M7czaPAQZs+ebXY0QnTI3Llzcbs92E91Tm9HtqIMrDZbkw1citNmzZwJ1RUkjh7Oj370GHa7vcn5wsLCCI/ohmquhEZtdbPVRxp6OjmrHQ1rWS5Ol0tKaAjRgvHjx4PW2AKoFwfw9ppEeQFLl15kdigihAwdOpR5c+fiOrUPVVXW+hu6iKU8H3veUS69dAWRkZFmhyMCmCQ0AojD4eD++zewbNkyHFm7caX8t6HhOuFlP3UQygv5ppTOEEHA7XazcOEC7PmpnfIk0l50ggsuuAC3293x4ILYRRddxOuvv84vfv5zLrjgghbnjY2NabbKSX3JjdjY2HOmRURE0KNn1Dk9ndjKcokfNkyOX0K0YNSoUdgdjoBrR8OWcxCn08WcOXPMDkWEmHXr1qG0xpG53exQGjhO7MDpdHHFFVeYHYoIcHLFFGCsVivr16/n5ptvxl6QRtj+f6CqSs0Oyy+oqjLcGVtJTExkxowZZocjRKdYsmQJ1NVizzvaoc9RVWWosjwmS3WTVlksFnr37t2meeNiY7FXlzT9ORXeREdTCQ2AUSNHYC/LOT1C12Etz2PEiBHtC1iIEGO32xk3diz2kgBKaNRW48xPZd68uU32miSEL8XFxbF48SKcOYdR1RVmh4OqKMSef5QVK5ZL6QzRYZLQCEBKKa644go2bdyIp66UiH1/87bIH+Kcxz7DSh133HGHtBwugkZ8fDz9+w/AkZfSoc+xFXpbOJ8yZUpnhCUMMTEx6IpiqKs7Z1p9CY3o6Ogm35uYmAjlhQ1JaUt5Ibq2RhIaQrTBhAkTUGX5zVf5Mom1OIvwvW/iOvK/M4r3O07uRddWe5PUQpjgsssuQ9fVYD91wOxQcJ7Ygd1u5/LLLzc7FBEEJKERwKZNm8Zzzz5Lv1498Bz4F/aTe0O2XQ1bbgr2/KOsXn0tcXFxZocjRKdRSrFw4QIsxSc7dOFuKzhG7z59GTx4cCdGJ2JiYkBrVNW5pTRUZTHhERGEh4c3+d7ExESAhoS0xSitMXz4cB9FK0TwmDdvHhaLBUf2PrNDaeDI+ArP/n8Q5QJXYRoRe/6CI2Mb9pN7cWZsZebMmYwZM8bsMEWIGjRoEOMnTMCZs7/JJHxXsZTlY89LYcXy5ed0aS7E+ZCERoAbOHAgv3z+OaZOScZ1bAuuox9CbWi1q2Epz8eT9gljEhK46qqrzA5HiE43f/584HR3f+1WW4O9KJOZM6ZL6aVOVl+dpKmeTiyVxc1WNwFvQ21uj6choWEtzcXhdEqDoEK0QZ8+fZg1axbOnENQW212OFjKcnGe+Iq5c+fyu1de4dcvv8y05Ek4T2zHdWwL48eP5wc/+IEcg4WpLlu5EipLseV3rBprR7iOf06YJ4xrrrnGtBhEcJGERhAIDw9n48aNrFu3DnveEcL3v42qaL4bwWCiqisIS3mfbhHhPPjAA9hsNrNDEqLT9evXjwvGjsWZd+S8SmFZi0+g62qYNm2aD6ILbfUlwixNHHPt1SXEttA1o9VqZdzYcThKjIRGeS7Dhg3DarX6JlghgszKlSvRNZXYcw+bG4jWuNK/ICw8gttuuw23201cXBwbN27k5Zdf5qabbuLhhx/G4XCYG6cIecnJycTExuI6uduUUt3WwuNYCzNYu3YN3bp16/LvF8FJEhpBwmKxsGbNGh579FHCVZW3XY2CY2aH5Vu11XgO/RtbdRkPPfggUVFRZkckhM9cOH8+lBdgKc9r93ttBcdwudzSXasP9OjRA6fLdW5Co64OXVHsrZLSgsTEcd52NCpLsJXlMVLazxCizcaMGUP88OG4TmzHnrkLW94RnOlfYC3M6NI4rIXHsRadYN3aNURERJwxbdCgQVx55ZXSEKjwCxaLhWuvuQZVmou18HjXfnltNZ70z+gXHc3y5cu79rtFUJOERpBJTk7mV7/6JUMG9sdz6D0cx78EbV49OZ+prcZz6D1s5Xk8+OADjB071uyIhPCpWbNmYbFaseUead8bdR3OwuMkJ0/Gbrf7JrgQppQiNjb2nConqqoEtG6xygmcbkcjbO9b6NpqkpKSfBarEMFGKcX3br+d0fFDcB3/AnfKBzhP7sZz6N/Ys/d3TRC11XjStxATG8uyZcu65juF6IALL7yQXr1748rc0aWlNFxpn6Iqirj3nnvkekR0KkloBKHo6GieeeZpli5dijNzJ2EH/omqbLpbwYBUU0nYwXewlWRx7733SjF6ERIiIyOZOGECzoLUdl2AWIsy0VVlzJkzx2exhboB/ftjO6tRUIvRgGtzPZzUGzZsGJE9etA3KpKHHnpIupwWop1GjhzJM888zW9/+1uee+453nrrLSZPnowrbXP7E8CtUNUV2HKPNPRMBOA8/gVUlnD3XXfJTZoICDabjWuuvhpLSTbWohNd8505h7HnHmb16tXyEFJ0OmlwIEg5nU7uuOMOxo0bx09/+jOse9+krH8yNVFDIYAbpFJVZYQdfhdbRQH3P/AAs2bNMjskIbrMvHnz+Pzzz7GUnqIuvE+b3mPPPYzb45HEnw/FxsZCxYfe0nDK+5ygPqHRWpUTm83Gb3/zG1wul9wMCdEBjRvT3bRxI9+87jpST+6ipOfgjl/3aI0z7VMcuQehrg5ltVEZNRxVV4095xArV66UmzQRUBYvXswf/vhHTqZ9QsmoS9B2l8++y1KagydtMxeMHce1117rs+8RoUtKaAS5Cy+8kBdffIGRw4fiPvohnkP/RlUUmh3WebGU5xO+/21ctaU8+uijkswQIWfGjBnYbHbsbX3qWFuNo+AY8+fNw+l0+ja4EBYbGwu67oyScJbKYmx2O7169Wr1/REREZLMEKIT2Ww2Llu50ttOQMnJDn+etegEjlP7WXjhhfzsZz/ja7Nn4cjeS4/Kk8ycOYvrrruuE6IWous4nU4eevBBbLWVuI/+z2fV01V1OWEp7xMV1YMHH5TG+4VvSEIjBMTExPDUk09yyy234KnMJXz3GzhTNwdUTyjWwgzC9/+dSLedp558kkmTJpkdkhBdLiwsjGnTpuIsONqmPuRt+ano2moWLlzYBdGFroaeToxSGQCqsoi+ffthschpVggzzJ8/n7CwcOwn93b4s5yZO+jRM4rbb7+d8ePHs2HDBt555x3e/ttbPPTQg7hcvnu6LYSvDB8+nPXrb8VamEHYgX91/n1BXS2elPex6yoe2bSJyMjIzv18IQxypRUirFYrl156KX/4/e9ZvuwSXHmHCN/1JzwH/oU9e5+31IYJ3Te1Smvs2fvwHPo3A+Niee65Z4mPjzc7KiFMs2jRInRVOdai1lsnd+Qcol90NGPGjOmCyEJXfcOflkal32xVJcTFtlzdRAjhOy6Xi0suuRh7QVqH2hGzFmdhLc7i6qtWnVHSTUq9iWCwdOlS7rnnHsJqi4jY+1ccx7dCbVWnfLYz/XMsxSe5+6675Npd+JQkNEJMz549Wb9+Pa+9+ipr164lNkzjSvuU8F1/pttXrxC+901ch97DmbYFR+ZObPlp3oytGcmOulqcaZtxpX1K8uRknn76Kfr27dv1cQjhRyZPnkz3yEjsOYdanM9SfBJrcRaXrliBCuB2cwJBz549cTpdp0to1NVhqShqKLkhhDDHsmXLUIA9e9+5E7X2XufkHGqxuL0zcyfdukeydOlS3wUqhIkWLlzIr19+mTmzZuHM3EG3XX/GlpvSoWt/e/Y+HNn7uPzyy5k3b14nRivEuaQiU4jq1asXa9euZc2aNaSnp7Nr1y5SUlLIyMggMyuLU6dSKS8rO/0GZzhV3WKoiRpGbXhfnzcsqiqL8Rz5AEvJKa666iq++c1vYrVaffqdQgQCm83GwgULeO1Pf6KyuqLZhrycmTuI6NaNiy++uIsjDD1KKWJiYziU6y2uay3NRtdWM27cOJMjEyK09evXj5kzZ/HRp1uoikkE6+m2apzHv8CRtRsAfXI3pUPmot3dz3i/qizGWnicFWvWSLUSEdT69OnD/fdv4IorLufnP/8FBw78j9rcw5QPnI52hrfrs2z5abjSPmXKlCnccMMNPopYiNMkoRHilFIMGDCAAQMGnDOttLSUtLQ0Dh06xNatW/ns88+pPHUQ7elBRd8LqIka0tCif6fRGlveETzHtuCyW7n3oYeYOXNm536HEAFu4cKFvPbaa9hyU6jud251EktpDrbC41xx3XW43W4TIgw9/ePiOJq5A/A2IKiUIikpyeSohBCXXbaSDz/8H/bcFKr7jATAnrULR9Zuli1bRlJSEj/+yU+pO7aZsuGLznhgYz91EKUUS5YsMSt8IbpUfTfIb775Js8++xy2vW9SNmCq95q/DWz5qXiO/I/hI0Zy//33SyOgokvIViaaFRYWxujRoxk9ejTLli2jrKyMDz74gD+++irHjn4IWdspj06ipufgTklsqMoSnOmfYc9PY+To0fzfffc11E0XQpw2dOhQEi64gD0HdlHde/gZTx3RGtfxL3B7PCxfvty8IEPMuHHj+PDDD7GU5mAvzmT48BFERESYHZYQIS8hIYH44cM5lL6H6p6DsBWdwJX+BbNmzeaWW27BarWSn5/P448/jrUwndpI4wGPrsOZd5hJkyZJdVcRUurb3UtOTmbjxk3s3fsBlWW5VMVNaPF63569D9exLQwfMYLHHn1UHqiILiNtaIg283g8LFmyhJdfeomHHnqIQX2jcB/5H+F7/mrUtTvPLp9qKnAc30rEnjfwlJzg+uuv58knnpBkhhAtuPmmm9BVZQ1FpuvZT+7FWpTJt7/1LcLD21dMVJy/BQsWYHc4cGTuwlKSzaRJE80OSQiBtyTq2jVrUBVFdNv1ZzxHP2L0mDHcd9+9DVVZL774YmLj4vAc/7KhBylr4XGoLJW2M0TIio2N5fHHf8Ell1yCM2sX7pT/Ql3NuTPqOpxpn3qrmSQn84uf/1x6NBFdShIaot0sFgszZ87kxRdfYMOGDQzs0x33kf8RsetPOE5sR5UXtv4hug5rcRbO1E/otvN1nJk7mDVjGr/5zW+4+uqrpYiaEK0YM2YMs2bNwnVyd0ML/paSU7gztjJlyhQuuugikyMMLRERESy48ELs+UdBayZMmGB2SEIIw/Tp03nhhReYOH4cQ4YM5pFNm87opcRms/Htb30LygtwpX2CqirDk/45PXr0ZNq0aSZGLoS57HY7t99+O9/97nex5afhOfQuqrq8YbqqLMFz4F8NDYBu3LhRSmaILid3jeK8WSwW5s6dy5w5c/jkk094442/sm3bVpwZ28DVjWp3FHXu7mib01tEra4WS1UplopC7KXZ6JoqHA4nX5s/lyuvvJLBgwebvUhCBJTrr7+eT7dsIWLPG1R1i8VekEaPnj35/ve/Lz2bmGD58uX8/e9/x+5wSFe5QviZIUOG8OMf/ajZ6dOmTWPNmjX8+te/xpafhtNmYePGR+UBixDA17/+dbp3784jjzyCbfefqeg9ElVbjTPvCA6b4nv33suCBQvMDlOEKDlKiw6rL7Exc+ZMTp48yebNm9m2bRv7DxwkJzMV3ajbJ4fDSUxsLBfMWkhiYiJTp07F4/GYF7wQAax///68/NJLPPvss3z00UdcdNFF3HTTTdJ2g0ni4+NJTEqiW0QEDofD7HCEEO20du1aSkpKePvtt3n00UcYPXq02SEJ4Tfmz59PfHw8Tz71FF9+8QUul5uEpLHctn69VBMXplK6HX0MT5w4UX/55Zc+DEcEm9raWoqLi6mrq8PhcBAWFhasT47Pe6FkvxKdoa6uDosl6GoRntd+ZeY+VVNTg1JKupkW/izg9quuVllZeUaVFCHaIGT2K601paWlwXxNL/xHmzYwKaEhfMpqtUrDQEJ0gSBMZgQkKZ4uROCTZIYQzVNKSaPjwq/IFbAQQgghhBBCCCECjiQ0hBBCCCGEEEIIEXAkoSGEEEIIIYQQQoiAIwkNIYQQQgghhBBCBBxJaAghhBBCCCGEECLgSEJDCCGEEEIIIYQQAUcSGkIIIYQQQgghhAg4ktAQQgghhBBCCCFEwJGEhhBCCCGEEEIIIQKOJDSEEEIIIYQQQggRcCShIYQQQgghhBBCiIAjCQ0hhBBCCCGEEEIEHKW1bvvMSp0C0jrx+3sBOZ34eYFElj245GitF53PG1vZr4JxXbUm1JY51JYX2r7M57VfddK5yp9+F3+JxV/iAP+JxV/igMDYr8C/1llHybL4r65eHtmvTvOnWEDiaY0/x9Om/apdCY3OppT6Ums90bQATCTLHprL3l6huK5CbZlDbXkhMJbZn2L0l1j8JQ7wn1j8JQ7wr1haEihxtoUsi/8KtuVpjT8trz/FAhJPa4IhHqlyIoQQQgghhBBCiIAjCQ0hhBBCCCGEEEIEHLMTGs+b/P1mkmUXbRGK6yrUljnUlhcCY5n9KUZ/icVf4gD/icVf4gD/iqUlgRJnW8iy+K9gW57W+NPy+lMsIPG0JuDjMbUNDSGEEEIIIYQQQojzYXYJDSGEEEIIIYQQQoh2k4SGEEIIIYQQQgghAo4pCQ2l1CKl1AGl1GGl1N1mxOBLSqn+Sqn/KqX2KqX2KKVuNcb3VEq9q5Q6ZPztYYxXSqknjPWxUyk13twl6DillFUp9ZVS6m3j/8FKqc+MZXxVKeUwxjuN/w8b0weZGbe/UEr9WCm139ge3lBKRTaado+xvg4opRaaGWdnUUpdZuwrdUqpiWdNC7rlrRfsx0IApdSLSqlspdTuRuOaPBaaFF+Lv0FXHaOaO2+cNc8cpVShUmq78drgo1hSlVK7jO/4sonpXXLOUkqNaLSs25VSRUqp9WfN45N10pHtVim1xpjnkFJqjY9iafYccdZ7W/wtu1owHfP8bd22h78fl9ujmWX5oVIqo9FxYYmZMfqSv+1TZu8X/rZt+9P22dx1hlnrp4V42r9+tNZd+gKsQAowBHAAO4DRXR2Hj5cxGhhvDEcAB4HRwI+Au43xdwOPGcNLgH8CCpgCfGb2MnTCOrgd+D3wtvH/a8CVxvCzwM3G8LeAZ43hK4FXzY7dH17AAsBmDD/WaFsZbewzTmCwsS9ZzY63E5Z3FDAC+ACY2Gh8UC6vsWxBfyw0lnMWMB7Y3Whck8dCf/wNuuoY1dx546x55tQfU328XlKBXi1M7/JzlvFbZQEDu2KdnO92C/QEjhh/exjDPXwQS5PniPb+ll35CrZjnj+t2/OI3W+Py520LD8E7jA7ti5Ydr/bp8zeL/xt2/an7bO56wyz1k8L8bR7/ZhRQmMycFhrfURrXQX8EVhmQhw+o7XO1FpvM4aLgX1ALN7l/LUx26+B5cbwMuA32msLEKmUiu7isDuNUioOuAj4lfG/AuYCfzJmOXvZ69fJn4B5xvwhTWv9b611jfHvFiDOGF4G/FFrXam1PgocxrtPBTSt9T6t9YEmJgXl8hqC/lgIoLX+EMg7a3Rzx8Ku1pbfoEuOUS2cN/yRGeeseUCK1jrNx98DdGi7XQi8q7XO01rnA+8Cizo7lhbOEf4sJI55gcDPj8vt0syyhArZp87ib9u2P22f53F/alY87WZGQiMWSG/0/3H896Ktw5S3eHIS8BnQV2udaUzKAvoaw8G2Tn4B3AnUGf9HAQWNLr4aL1/DshvTC435xWnfwPs0FIJvW2lNMC9vMC9ba5o7Fna1tvwGXX6MOuu8cbapSqkdSql/KqXG+CgEDfxbKbVVKXVDE9PN2HavBP7QzLSuWCfQtu3WjHXT+BxxttZ+y64UbMc8f1q3ncFfjsud5TtGlawXA6X6zHnwx33KH/cLf9y2Td0+23h/alY80M71I42C+pBSKhz4M7Bea13UeJr2lq8Juj5zlVJLgWyt9VazY/F3Sqn3lFK7m3gtazTPfUAN8DvzIu0cbVleEXqC9Vh4vlo6bwDb8Fa5GAc8CfzVR2HM0FqPBxYD31ZKzfLR97SJ8ra5dAnwehOTu2qdnMFftts2nCP86rcMMkG7bv1l++6A/wcMBRKBTOCn5oYTUvx6v/CTbdvU7dPf7k+biKfd68eMhEYG0L/R/3HGuKCilLLj/XF+p7X+izH6ZH2xXONvtjE+mNbJdOASpVQq3qJvc4HH8RZJthnzNF6+hmU3pncHcrsyYLNoredrrROaeL0JoJRaCywFrjYOMBDA20pry9uMgF3eNgjmZWtNc8fCrtaW36DLjlHNnDcaaK2LtNYlxvA/ALtSqldnx6G1zjD+ZgNvcG41r67edhcD27TWJ8+e0FXrxNCW7bbL1k0z54gztOG37EpBdczzs3XbGfzluNxhWuuTWutarXUd8EsC/7dpjt/tU366X/jVtm3m9tnO+1NT4jmf9WNGQuMLIF55e71w4C1G+pYJcfiMUb/6BWCf1vpnjSa9BdS3eL4GeLPR+NXKawpQ2KjoT0DRWt+jtY7TWg/C+9u+r7W+GvgvsNKY7exlr18nK435zc6cmk4ptQhvtZ1LtNZljSa9BVypvD0vDAbigc/NiLGLBPPyBv2xsAXNHQu7Wlt+gy45RrVw3mg8T7/69juUUpPxnsM7NbmilApTSkXUD+NtfHL3WbN19TlrFc1UN+mKddJIW7bbd4AFSqkeRjHZBca4TtXCOaLxPG35LbtS0Bzz/HDddgZ/OS53mDqzTZ8VBP5v0xy/2qf8eL/wq23brO3zPO5PTYnnvNaP7uIWVo3rwCV4WzJNAe4zIwYfL98MvMV1dgLbjdcSvPWu/wMcAt4DehrzK+BpY33solEvD4H8olHr83hbYP4cb6OOrwNOY7zL+P+wMX2I2XH7w8tYH+mNtp9nG027z9hWDgCLzY61k5Z3Bd66n5XASeCdYF7eRssW1MdCYxn/gLfIYLXxG3+zuWOhv/wGwIN4bxS77BjVwnnjJuAmY57vAHvwtmS/BZjmgziGGJ+/w/iu+nXSOI4uO2cBYXgTFN0bjfP5OmnPdgtMBH7V6L3fMLaXw8A6H8XS5DkCiAH+0dJvaeYrWI55/rhuO2Gb8pvjcicsy2+NY9NOvDdr0WbH6cPl95t9yh/2C3/btv1p+6Sd96cmxtPu9aOMDxRCCCGEEEIIIYQIGNIoqBBCCCGEEEIIIQKOJDSEEEIIIYQQQggRcCShIYQQQgghhBBCiIAjCQ0hhBBCCCGEEEIEHEloCCGEEEIIIYQQIuBIQuMsSimtlHql0f82pdQppdTbrbxvrVLqqU6O5YdKqTs68P6vlFKJxrBNKVWilLqm0fStSqnxLbx/olLqiVa+Y5BSqsn+gY11EnO+8QtRTylVq5TarpTarZT6m1Iq0hg/SClVbmzr+5RSnyul1jZ6X8N+qZSyKKV+rZR6UXn9QykVaby+1cJ3l3RC/PVxbldK7VVKPauUkuOv6HJKqUeUUl9TSi1XSt3TzDznnHuUUqlKqV7GcP3+uEMptU0pNa2Zz6mfb48x7/dkuxeBqiv3HWPe5cY16cjOXZLmKaXWK6U8XfV9Ivi1Y7/JaHSNtKoNn9ume4x2zPeBUmpiM+9v8/2dUmqOUqrQWJadSqn3lFJ92vr+Vj67Q/eFwUwuLM5VCiQopdzG/xcCGSbG02ZKKdtZoz4B6k+W4/D2Uz3NmDcMGIq3r+gmaa2/1Frf0oGQ1gKS0BCdoVxrnai1TgDygG83mpaitU7SWo8CrgTWK6XWNX6zUkoBzwJ24DrttURrXQBEAs0mNDpRitY6ERgLjAaWd8F3CnG2ZGALMBv48Dw/o35/HAfcAzzSynxj8J5LFwP3n+d3tolSyurLzxchrSv3HYBVwMfG366yHmhXQkP2OdGKtu43PzeukZYBzyml7K187lrado/R1vk600fGfj4W+IIzr1mFD0hCo2n/AC4yhlcBf6ifoJTqqZT6q5F126KUGnv2m5VSvZVSf1ZKfWG8phvjw5VSLymldhnv/7oxvqTRe1cqpV5u4jOvNz5rh/HZHmP8y8bT3s+AH531ts2cTmhMw3tDl2j8PxnYqrWuVUqFGU+tPzeedC8zPnuOMkqmGMv0rvGk7VdKqbT6Jw6AVSn1S2Pav5VSbqXUSmAi8DsjS+lGiM7xKRDb1ASt9RHgduDsRNwTQBSwWmtdB2c8NXsUGGpspz9uSwDKW+LifWM//o9SaoAxfqhxXNillHpYNVG6Q2tdg3ffHNa2xRWi45RSP1ZK7QQm4d2HrgP+n1JqQwc/uhuQ39pMWuts4AbgO8rL1eh8+JVS6mtGnGuVUn9RSv1LKXVIKdVwXlNKrTLm362UeqzR+BKl1E+VUjuAqUqpR42nfDuVUj/p4PKJEGfGvqOUCgdmAN/Em6hvPLc3lSEAAAmrSURBVO0uYz/YoZR61Bg3zHgSXF/yY6gx/vvGteNOpdQDxrhBSqn9SqnfKW/Jxj8ppTxKqVvw3vj9Vyn1X2Ne2efEeTnf/UZrfQgoA3oYn5NoXFftVEq9oZTq0dQ9hlJqg7Gt71ZKPW+cZ9o0X6Ovv1adLg08uYllavL+roV1oIAIjP1cNXMPqbwlL15U3lIiR4x9sf4z7lNKHVRKfQyMaDT+lkb73B9biiMkaK3l1egFlOB9gvonwAVsB+YAbxvTnwTuN4bnAtuN4bXAU8bw74EZxvAAYJ8x/Bjwi0bf1aP+OxuNWwm8bAz/ELjDGI5qNM/DwHeN4ZeBtwFrE8syEDhiDP8BGAn8F+/OdR/wkDFtE3CNMRyJtyRH2FnL/RRwjzG8CNBAL2AQUAMkGtNea/RZHwATzf5N5RX4r/p9BLACrwOLjP8HAbvPmjcS71Ow+v0yD29pJftZ86U22oZ3t/bdZ437G7DGGP4G8Fdj+G1glTF8U6O4G74D79OvL4DFZq9XeYXWC++F5ZN4Syp90sJ8P8RbMnF7o1cV0MuYXmuM2w8UAhOa+Zym9p0CoC/wPeBFY9xI4Bjec+5a4AjQ3fg/DeiP90brGNAbsAHvA8uN92vgcmM4CjgAKOP/SLPXu7wC/2XCvnM18IIxvLl+PrylnDYDHuP/nsbfz4AVxrDLOM8sAJ4HFN4HmG8Ds4zzkQamG/O/yOlrzdRGsco+J68Ovdq539Rvg+PxlnCon7YTmG0MP4hxH8VZ9xj1+4Ix/Fvg4vOY75fG8CxOX7OtpZX7u7OWZY6xb28H0o19vZsxrbl7yB8a+7UT73VprrHOJgC7jP25G3C40Xo6ATiN4ZDf56SERhO01jvxHvBX4S2t0dgMvDsAWuv3gSilVLez5pkPPKWU2g68BXQzsu3zgacbfU+rT7UaSVBKfaSU2oX3RDem0bTXtda1TSxHGuBQSvXDe8F4AO+NVDLeEhufGLMuAO424v0A78lwQBPL/Ufjc//FmU8VjmqttxvDW/GuOyE6k9vYPrPw3gy928K86qz/t+FN7p2Tbe+AqXhPbOA9HsxoNP51Y/j3Z71nqLEMnwB/11r/sxPjEaItxuOtZjgS2NfKvD/X3iKzidpbDPhEo2n1xeZH4k1w/+asp1xtMQN4BUBrvR9v4mK4Me0/WutCrXUFsBfv/jsJ+EBrfUp7Szn9Du9FJ3hvEv9sDBcCFcALSqlL8T7pE6KjunrfWYVxzWX8ra92Mh94SWtdBqC1zlNKRQCxWus3jHEVxvQFxusrvOfBkUC88TnpWuv6a8BXOH0Oa0z2OdFR7dlvblNK7cGbnNsIoJTqjvdm/X/GPL/m9DZ4tq8ppT4z7pPmcuZ9Ulvn+wOA1vpDvPdukWe9t7n7u7PVVznpD7zE6RL0Ld1D/l1rXam1zgGy8V7rzgTe0FqXaa2LjO+stxNvyZNr8D5YDmlnt7kgTnsL+AneTFtUO99rAaYYF2MNWrje042GXc3M8zLezPgO5W30cE6jaaUtxLIZuAzI1FprpdQWYDrem7tP60MDvq61PnBWvH1b+NzGKhsN1wJSvUR0tnKtdaLyVrV6B299xOYarE3izBPnfmAD8JpSaqHWeo9vQ21WfRsaQnQp5W0c+mUgDsjB+7RHGRdlU7XW5ef72VrrT5W36lZvvBdhLcUxBO85osX5OPec0tq1SkV9Ul9rXWMUFZ6Ht8Tjd/BetArRbmbsO0qpnni32QuUUhpvyUStlPp+e8MHHtFaP3fGSKUGceZ1J0383xrZ50SzznO/+bnW+idKqUvwJseGtuP7XMAzeEtipCulfkgT91NtmK+1/aLJ+7tWvMXp5F9L2nveuwhvcudi4D6l1AVG4jEkSQmN5r0IPKC13nXW+I/wlpBAKTUHyDGyZo39G/hu/T/Gjg3ep8rfbjS+hzF4Uik1Snlbf1/RTDwRQKbyNpJzdTuWYzPeRp7qkxefAquBLK11oTHuHeC79U8JlFJJTXzOJ8DlxvQFGHXbWlFsxC1EpzCeOt0CfE+d2whu/YXaT/AW62v8vs3AzcDbymjvopHz2U438//bu59QqasogOPfk4kQiBC1iiwIotatBCVatQkSMvJVYkVBEUStkiJQ21dI8izBHhhFiwIrSgqKAgtKMiICg3LzqOgVIkb2z06Lc8f3e8PMa5gXTIPfz+bNzLvzm1n8ztzfvffc81vc13wH9bsAVfjqlvZ4a/+bpEnIzM/bZNrXVEHa94Ab2wrS2AMygKg7MKyiUmSXa3cpVcfp2cxMlvalV1NZgceHH4FPgOsj4pKoIoQzwAf9jdpq2brMfAt4hCqILY1lQrGzBTiYmVdk5pVtlfcEtVr7LnB3LNZRuzgzTwPzEbG5vbamM/l/T28FOSIui8W7LayPiA3t8e1U8VFY2h8acxrLSuImM18HjlLbek8BJyNiU/v3NhbPwe652puU+Kmdj1s6hxy1HcBtABGxETjVGSf1DBvfLWcj8E17PMoYsutDYHNU7Y+11OQFbbx4eWa+DzxKbdEclCly3jBDY4jMnGfwCvBO4EBUoZtfge0D2jwE7G1tLqROyPup2hd7o25zehbYBbwG7KD2Ni5QQTzopHyCSsNaaH9HHYAdAZ6mTWhk5vetY/qo0+ZJ4BngixYkJ4Cb+o6zC3g5Ira1Y/1A/UgsF0BzwL6IOMMKVzKknsw81mJrhuocroqIY1RHdRrYk5lzA973RlsNO9zpHMnMnyPiSIvLtzOzfxXsooiY7zx/iurQXmgrZgtA764qDwMvRsTjwGEqFVeauDahcDIz/46IazLzqxUcrrcFDGoVePugbY+ddquplNiDVPxArZLNtrTfv4C7MvP3YZmMre/aQdWBCio999CApmuBQ20lLqgiwdLYJhA7M1TNta5XqfpMD7RB1NGI+IPaFv0YNdB7LiJ2A38Ct2bmOxFxLfBxi6tfgDup68/jwIMRcYDa1jXbPud5qo/8LjNvMOY0rhXGzW7gpYjYT42z9rVJum9ZvN6aozPGAPYDX1Ljk087xxq1HcBv7XpyNVUfrd+w8V2/TS3Og7oOvLe9vpN/H0Oek5mfRcQr1LadHzvfdxV1rbmufcaerLv2nbd6BXykZUXEGuBsSy3cAMyaPi8t1TrcM21711bqAvTmSX8vSZLgXCbjm1m3QZekqWeGhka1nqpBcAFVsfu+CX8f6f/oOqpgVFB3cxg0wy9JkiTpP2CGhiRJkiRJmjoWBZUkSZIkSVPHCQ1JkiRJkjR1nNCQJEmSJElTxwkNSZIkSZI0dZzQkCRJkiRJU+cf0AZkHQGBPuAAAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<Figure size 1080x216 with 5 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"g = sns.FacetGrid(df_melt,col=\"variable\",sharex=False)\n", | |
"g.map(sns.violinplot,\"value\",order=cols)\n", | |
"for i,label in enumerate(cols):\n", | |
" g.axes[0,i].set_xlabel(xlab_list[i])\n", | |
" g.axes[0,i].set_title(label)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 35, | |
"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>MW</th>\n", | |
" <th>LogP</th>\n", | |
" <th>HBD</th>\n", | |
" <th>HBA</th>\n", | |
" <th>Rotors</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>count</th>\n", | |
" <td>4647.0</td>\n", | |
" <td>4647.0</td>\n", | |
" <td>4647.0</td>\n", | |
" <td>4647.0</td>\n", | |
" <td>4647.0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>mean</th>\n", | |
" <td>329.7</td>\n", | |
" <td>2.0</td>\n", | |
" <td>1.8</td>\n", | |
" <td>4.5</td>\n", | |
" <td>4.5</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>std</th>\n", | |
" <td>105.1</td>\n", | |
" <td>2.8</td>\n", | |
" <td>1.6</td>\n", | |
" <td>2.3</td>\n", | |
" <td>3.1</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>min</th>\n", | |
" <td>4.0</td>\n", | |
" <td>-18.7</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" <td>0.0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>25%</th>\n", | |
" <td>259.3</td>\n", | |
" <td>0.7</td>\n", | |
" <td>1.0</td>\n", | |
" <td>3.0</td>\n", | |
" <td>2.0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>50%</th>\n", | |
" <td>342.2</td>\n", | |
" <td>2.5</td>\n", | |
" <td>1.0</td>\n", | |
" <td>4.0</td>\n", | |
" <td>4.0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>75%</th>\n", | |
" <td>413.5</td>\n", | |
" <td>3.8</td>\n", | |
" <td>2.0</td>\n", | |
" <td>6.0</td>\n", | |
" <td>6.0</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>max</th>\n", | |
" <td>499.7</td>\n", | |
" <td>9.2</td>\n", | |
" <td>12.0</td>\n", | |
" <td>16.0</td>\n", | |
" <td>23.0</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" MW LogP HBD HBA Rotors\n", | |
"count 4647.0 4647.0 4647.0 4647.0 4647.0\n", | |
"mean 329.7 2.0 1.8 4.5 4.5\n", | |
"std 105.1 2.8 1.6 2.3 3.1\n", | |
"min 4.0 -18.7 0.0 0.0 0.0\n", | |
"25% 259.3 0.7 1.0 3.0 2.0\n", | |
"50% 342.2 2.5 1.0 4.0 4.0\n", | |
"75% 413.5 3.8 2.0 6.0 6.0\n", | |
"max 499.7 9.2 12.0 16.0 23.0" | |
] | |
}, | |
"execution_count": 35, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"pd.set_option('precision', 1)\n", | |
"df[cols].describe()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
" " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.7.6" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment