From 2aae072e901df49d71e9069d360e1ffa3cfc1e16 Mon Sep 17 00:00:00 2001 From: sfluegel Date: Fri, 24 Nov 2023 14:26:03 +0100 Subject: [PATCH] add evaluation functions for pretraining --- chebai/result/pretraining.py | 58 ++++++++++++ demo_process_results.ipynb | 170 +++++++++++++++++++++++++++++------ 2 files changed, 203 insertions(+), 25 deletions(-) create mode 100644 chebai/result/pretraining.py diff --git a/chebai/result/pretraining.py b/chebai/result/pretraining.py new file mode 100644 index 00000000..5392e61e --- /dev/null +++ b/chebai/result/pretraining.py @@ -0,0 +1,58 @@ +from torchmetrics.classification import MultilabelF1Score + +from chebai.result.base import ResultProcessor +import pandas as pd +import seaborn as sns +import matplotlib.pyplot as plt +import os +import chebai.models.electra as electra +from chebai.loss.pretraining import ElectraPreLoss +from chebai.preprocessing.datasets.pubchem import PubChemDeepSMILES +import torch +import tqdm + + +def visualise_loss(logs_path): + df = pd.read_csv(os.path.join('logs_server', 'pubchem_pretraining', 'version_6', 'metrics.csv')) + df_loss = df.melt(id_vars='epoch', value_vars=['val_loss_epoch', 'train_loss_epoch']) + lineplt = sns.lineplot(df_loss, x='epoch', y='value', hue='variable') + plt.savefig(os.path.join(logs_path, 'loss')) + plt.show() + +# get predictions from model +def evaluate_model(logs_base_path, model_filename): + data_module = PubChemDeepSMILES(chebi_version=227) + model = electra.ElectraPre.load_from_checkpoint(os.path.join(logs_base_path, 'checkpoints', model_filename)) + assert isinstance(model, electra.ElectraPre) + collate = data_module.reader.COLLATER() + test_file = 'test.pt' + data_path = os.path.join(data_module.processed_dir, test_file) + data_list = torch.load(data_path) + preds_list = [] + labels_list = [] + + for row in tqdm.tqdm(data_list): + processable_data = model._process_batch(collate([row]), 0) + model_output = model(processable_data, **processable_data['model_kwargs']) + preds, labels = model._get_prediction_and_labels(processable_data, processable_data["labels"], model_output) + preds_list.append(preds) + labels_list.append(labels) + + test_preds = torch.cat(preds_list) + test_labels = torch.cat(labels_list) + print(test_preds.shape) + print(test_labels.shape) + test_loss = ElectraPreLoss() + print(f'Loss on test set: {test_loss(test_preds, test_labels)}') + #f1_macro = MultilabelF1Score(test_preds.shape[1], average='macro') + #f1_micro = MultilabelF1Score(test_preds.shape[1], average='micro') + #print(f'Macro-F1 on test set with {test_preds.shape[1]} classes: {f1_macro(test_preds, test_labels):3f}') + #print(f'Micro-F1 on test set with {test_preds.shape[1]} classes: {f1_micro(test_preds, test_labels):3f}') + +class PretrainingResultProcessor(ResultProcessor): + + @classmethod + def _identifier(cls) -> str: + return 'PretrainingResultProcessor' + + diff --git a/demo_process_results.ipynb b/demo_process_results.ipynb index 7f869d86..678c0dc6 100644 --- a/demo_process_results.ipynb +++ b/demo_process_results.ipynb @@ -4,11 +4,15 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": true + "collapsed": true, + "ExecuteTime": { + "end_time": "2023-11-24T09:39:01.737866400Z", + "start_time": "2023-11-24T09:38:54.246379800Z" + } }, "outputs": [], "source": [ - "from chebai.result.base import ResultFactory, ResultProcessor\n", + "from chebai.result.base import ResultProcessor\n", "from chebai.preprocessing.datasets.chebi import ChEBIOver100\n", "from chebai.preprocessing.datasets.base import XYBaseDataModule\n", "from chebai.models.electra import Electra\n", @@ -19,11 +23,119 @@ "import seaborn as sns\n", "import tqdm\n", "import matplotlib.pyplot as plt\n", - "from torchmetrics.classification import MulticlassF1Score, MultilabelF1Score\n", + "from torchmetrics.classification import MultilabelF1Score\n", "import numpy as np\n", - "from functools import partial" + "from chebai.result import pretraining as eval_pre\n", + "from chebai.preprocessing.datasets.pubchem import PubChemDeepSMILES" ] }, + { + "cell_type": "code", + "execution_count": 2, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/png": "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4Gqhcc10krVohBCi6Vm1akWVnbFr8u67i5g+fWoDR9T4pKWlMnhwX9LSUr0dSrWkoHGD0EpdTtJCI4QQQniaFDRuEOyrly4nIYQQwotkt203CPU1cPzU/ZxU1bWblhBCnGNUVcXs4Y0dTToNSi1/ps6ZMwu93sDjjz9VcezJJx/DZDIxbtwEFi58k4MHD6Ao0LNnb2bOnE14eHi94tu9eydvvfU6CQkHCAkJ5frrb+SKK64CID09nRdemMvu3TsxGk2MHHkJ99zzADqdjoSEg7z88vMkJBwgICCQyy+fxC233F6rZ2ZkpPPKKy+wefNGQkJCGTduAjfddCtarZZVq1awYsVyevToyddff0FAQAC33HI7EyZcAYDT6eSzzz7mm2++Iicnm27dunP//Q/Trl17APLycnn11fls2LAek8nEpZdextSpd1U8+/fff+Wrrz4nJyebvn3789hjTxEYGFivHLqDFDRuEOJnIPXEGBrFXopizkP1CfVyVEII4V6qqnLbZzvYmVro0efGNw/knWvja1XUjBw5mnnznsZut6PT6bBaraxfv44nnniKGTPu55prruepp54hPT2D5557mo8/fo/773/4rGM7cuQw9957J9dccx2zZj3Bnj27efnl5wkJCWPo0OG89tqL+Pj48t57n5CXl8vjj8+gVas2TJo0mWeemUOPHj2ZPXsux44d5fHHZ9C5cxcGDRp82meqqspjj82gffsOvPfeUrKzs5k//zk0Gg0333wbAPv27cHHx5dFi/7L3r17eOmleURFRdO//0Dee+8dli//ikceeYyYmFiWLv2ABx+8h08//RofHx9mzXoIrVbLggWLKC0tZc6cWYSHh3PBBUMA+P77lTz11HM4nSqPPfYwS5d+wJ133nPWOXQXKWjcINTPgBU9WYQSQS7awmPYpaARQpyDGnvb88CBF6CqTrZu3Uz//gPZuHEDRqORzp27ctNNt3Httdej12uJjGzGsGEj2LdvT72et2LFN3Ts2Ilp0+4GIDa2NUeOHOaTTz5k6NDhpKWl0alTZ6KjmxET05L5818nIMDVmpGensqQIUOJjm5G8+YteO21t2nWrPkZn7llyybS09NYvPh9NBoNsbGtufvu+3nuuacqChqNRsMTTzxFSEgobdu2Z/v2rfzvf1/Tr98Avvrqc6ZNu5vBg4cC8Mgjj3P11Zfz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" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 70%|███████ | 8955/12750 [07:00<02:58, 21.30it/s] \n" + ] + }, + { + "ename": "RuntimeError", + "evalue": "[enforce fail at alloc_cpu.cpp:80] data. DefaultCPUAllocator: not enough memory: you tried to allocate 288800 bytes.", + "output_type": "error", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mRuntimeError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[1;32mIn[2], line 4\u001B[0m\n\u001B[0;32m 2\u001B[0m checkpoint_name \u001B[38;5;241m=\u001B[39m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mbest_epoch=88_val_loss=0.7713_val_micro-f1=0.00.ckpt\u001B[39m\u001B[38;5;124m'\u001B[39m\n\u001B[0;32m 3\u001B[0m eval_pre\u001B[38;5;241m.\u001B[39mvisualise_loss(logs_path)\n\u001B[1;32m----> 4\u001B[0m \u001B[43meval_pre\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mevaluate_model\u001B[49m\u001B[43m(\u001B[49m\u001B[43mlogs_path\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcheckpoint_name\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[1;32m~\\Desktop\\chebai\\chebai\\result\\pretraining.py:36\u001B[0m, in \u001B[0;36mevaluate_model\u001B[1;34m(logs_base_path, model_filename)\u001B[0m\n\u001B[0;32m 34\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m row \u001B[38;5;129;01min\u001B[39;00m tqdm\u001B[38;5;241m.\u001B[39mtqdm(data_list):\n\u001B[0;32m 35\u001B[0m processable_data \u001B[38;5;241m=\u001B[39m model\u001B[38;5;241m.\u001B[39m_process_batch(collate([row]), \u001B[38;5;241m0\u001B[39m)\n\u001B[1;32m---> 36\u001B[0m model_output \u001B[38;5;241m=\u001B[39m \u001B[43mmodel\u001B[49m\u001B[43m(\u001B[49m\u001B[43mprocessable_data\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mprocessable_data\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43mmodel_kwargs\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 37\u001B[0m preds, labels \u001B[38;5;241m=\u001B[39m model\u001B[38;5;241m.\u001B[39m_get_prediction_and_labels(processable_data, processable_data[\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mlabels\u001B[39m\u001B[38;5;124m\"\u001B[39m], model_output)\n\u001B[0;32m 38\u001B[0m preds_list\u001B[38;5;241m.\u001B[39mappend(preds)\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1518\u001B[0m, in \u001B[0;36mModule._wrapped_call_impl\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 1516\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_compiled_call_impl(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs) \u001B[38;5;66;03m# type: ignore[misc]\u001B[39;00m\n\u001B[0;32m 1517\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m-> 1518\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_call_impl\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1527\u001B[0m, in \u001B[0;36mModule._call_impl\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 1522\u001B[0m \u001B[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001B[39;00m\n\u001B[0;32m 1523\u001B[0m \u001B[38;5;66;03m# this function, and just call forward.\u001B[39;00m\n\u001B[0;32m 1524\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m (\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_pre_hooks\n\u001B[0;32m 1525\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_backward_hooks\n\u001B[0;32m 1526\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_forward_pre_hooks):\n\u001B[1;32m-> 1527\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mforward_call\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 1529\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[0;32m 1530\u001B[0m result \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m\n", + "File \u001B[1;32m~\\Desktop\\chebai\\chebai\\models\\electra.py:91\u001B[0m, in \u001B[0;36mElectraPre.forward\u001B[1;34m(self, data, **kwargs)\u001B[0m\n\u001B[0;32m 86\u001B[0m random_tokens \u001B[38;5;241m=\u001B[39m torch\u001B[38;5;241m.\u001B[39mrandint(\n\u001B[0;32m 87\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mgenerator_config\u001B[38;5;241m.\u001B[39mvocab_size, (batch_size,), device\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mdevice\n\u001B[0;32m 88\u001B[0m )\n\u001B[0;32m 89\u001B[0m replacements \u001B[38;5;241m=\u001B[39m gen_best_guess \u001B[38;5;241m*\u001B[39m \u001B[38;5;241m~\u001B[39mcorrect_mask \u001B[38;5;241m+\u001B[39m random_tokens \u001B[38;5;241m*\u001B[39m correct_mask\n\u001B[1;32m---> 91\u001B[0m disc_out \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdiscriminator\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 92\u001B[0m \u001B[43m \u001B[49m\u001B[43mfeatures\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43m \u001B[49m\u001B[38;5;241;43m~\u001B[39;49m\u001B[43mdisc_tar_one_hot\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m+\u001B[39;49m\u001B[43m \u001B[49m\u001B[43mreplacements\u001B[49m\u001B[43m[\u001B[49m\u001B[43m:\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43;01mNone\u001B[39;49;00m\u001B[43m]\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43m \u001B[49m\u001B[43mdisc_tar_one_hot\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 93\u001B[0m \u001B[43m \u001B[49m\u001B[43mattention_mask\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mmask\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 94\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\u001B[38;5;241m.\u001B[39mlogits\n\u001B[0;32m 95\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m (raw_gen_out, disc_out), (gen_tar_one_hot, disc_tar_one_hot)\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1518\u001B[0m, in \u001B[0;36mModule._wrapped_call_impl\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 1516\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_compiled_call_impl(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs) \u001B[38;5;66;03m# type: ignore[misc]\u001B[39;00m\n\u001B[0;32m 1517\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m-> 1518\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_call_impl\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1527\u001B[0m, in \u001B[0;36mModule._call_impl\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 1522\u001B[0m \u001B[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001B[39;00m\n\u001B[0;32m 1523\u001B[0m \u001B[38;5;66;03m# this function, and just call forward.\u001B[39;00m\n\u001B[0;32m 1524\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m (\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_pre_hooks\n\u001B[0;32m 1525\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_backward_hooks\n\u001B[0;32m 1526\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_forward_pre_hooks):\n\u001B[1;32m-> 1527\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mforward_call\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 1529\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[0;32m 1530\u001B[0m result \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\transformers\\models\\electra\\modeling_electra.py:1113\u001B[0m, in \u001B[0;36mElectraForPreTraining.forward\u001B[1;34m(self, input_ids, attention_mask, token_type_ids, position_ids, head_mask, inputs_embeds, labels, output_attentions, output_hidden_states, return_dict)\u001B[0m\n\u001B[0;32m 1078\u001B[0m \u001B[38;5;250m\u001B[39m\u001B[38;5;124mr\u001B[39m\u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m 1079\u001B[0m \u001B[38;5;124;03mlabels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):\u001B[39;00m\n\u001B[0;32m 1080\u001B[0m \u001B[38;5;124;03m Labels for computing the ELECTRA loss. Input should be a sequence of tokens (see `input_ids` docstring)\u001B[39;00m\n\u001B[1;32m (...)\u001B[0m\n\u001B[0;32m 1109\u001B[0m \u001B[38;5;124;03m[0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0]\u001B[39;00m\n\u001B[0;32m 1110\u001B[0m \u001B[38;5;124;03m```\"\"\"\u001B[39;00m\n\u001B[0;32m 1111\u001B[0m return_dict \u001B[38;5;241m=\u001B[39m return_dict \u001B[38;5;28;01mif\u001B[39;00m return_dict \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m \u001B[38;5;28;01melse\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mconfig\u001B[38;5;241m.\u001B[39muse_return_dict\n\u001B[1;32m-> 1113\u001B[0m discriminator_hidden_states \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43melectra\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 1114\u001B[0m \u001B[43m \u001B[49m\u001B[43minput_ids\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 1115\u001B[0m \u001B[43m \u001B[49m\u001B[43mattention_mask\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mattention_mask\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 1116\u001B[0m \u001B[43m \u001B[49m\u001B[43mtoken_type_ids\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mtoken_type_ids\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 1117\u001B[0m \u001B[43m \u001B[49m\u001B[43mposition_ids\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mposition_ids\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 1118\u001B[0m \u001B[43m \u001B[49m\u001B[43mhead_mask\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mhead_mask\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 1119\u001B[0m \u001B[43m \u001B[49m\u001B[43minputs_embeds\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43minputs_embeds\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 1120\u001B[0m \u001B[43m \u001B[49m\u001B[43moutput_attentions\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43moutput_attentions\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 1121\u001B[0m \u001B[43m \u001B[49m\u001B[43moutput_hidden_states\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43moutput_hidden_states\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 1122\u001B[0m \u001B[43m \u001B[49m\u001B[43mreturn_dict\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mreturn_dict\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 1123\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 1124\u001B[0m discriminator_sequence_output \u001B[38;5;241m=\u001B[39m discriminator_hidden_states[\u001B[38;5;241m0\u001B[39m]\n\u001B[0;32m 1126\u001B[0m logits \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mdiscriminator_predictions(discriminator_sequence_output)\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1518\u001B[0m, in \u001B[0;36mModule._wrapped_call_impl\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 1516\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_compiled_call_impl(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs) \u001B[38;5;66;03m# type: ignore[misc]\u001B[39;00m\n\u001B[0;32m 1517\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m-> 1518\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_call_impl\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1527\u001B[0m, in \u001B[0;36mModule._call_impl\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 1522\u001B[0m \u001B[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001B[39;00m\n\u001B[0;32m 1523\u001B[0m \u001B[38;5;66;03m# this function, and just call forward.\u001B[39;00m\n\u001B[0;32m 1524\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m (\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_pre_hooks\n\u001B[0;32m 1525\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_backward_hooks\n\u001B[0;32m 1526\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_forward_pre_hooks):\n\u001B[1;32m-> 1527\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mforward_call\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 1529\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[0;32m 1530\u001B[0m result \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\transformers\\models\\electra\\modeling_electra.py:911\u001B[0m, in \u001B[0;36mElectraModel.forward\u001B[1;34m(self, input_ids, attention_mask, token_type_ids, position_ids, head_mask, inputs_embeds, encoder_hidden_states, encoder_attention_mask, past_key_values, use_cache, output_attentions, output_hidden_states, return_dict)\u001B[0m\n\u001B[0;32m 908\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mhasattr\u001B[39m(\u001B[38;5;28mself\u001B[39m, \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124membeddings_project\u001B[39m\u001B[38;5;124m\"\u001B[39m):\n\u001B[0;32m 909\u001B[0m hidden_states \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39membeddings_project(hidden_states)\n\u001B[1;32m--> 911\u001B[0m hidden_states \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mencoder\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 912\u001B[0m \u001B[43m \u001B[49m\u001B[43mhidden_states\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 913\u001B[0m \u001B[43m \u001B[49m\u001B[43mattention_mask\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mextended_attention_mask\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 914\u001B[0m \u001B[43m \u001B[49m\u001B[43mhead_mask\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mhead_mask\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 915\u001B[0m \u001B[43m \u001B[49m\u001B[43mencoder_hidden_states\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mencoder_hidden_states\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 916\u001B[0m \u001B[43m \u001B[49m\u001B[43mencoder_attention_mask\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mencoder_extended_attention_mask\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 917\u001B[0m \u001B[43m \u001B[49m\u001B[43mpast_key_values\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mpast_key_values\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 918\u001B[0m \u001B[43m \u001B[49m\u001B[43muse_cache\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43muse_cache\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 919\u001B[0m \u001B[43m \u001B[49m\u001B[43moutput_attentions\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43moutput_attentions\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 920\u001B[0m \u001B[43m \u001B[49m\u001B[43moutput_hidden_states\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43moutput_hidden_states\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 921\u001B[0m \u001B[43m \u001B[49m\u001B[43mreturn_dict\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mreturn_dict\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 922\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 924\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m hidden_states\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1518\u001B[0m, in \u001B[0;36mModule._wrapped_call_impl\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 1516\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_compiled_call_impl(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs) \u001B[38;5;66;03m# type: ignore[misc]\u001B[39;00m\n\u001B[0;32m 1517\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m-> 1518\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_call_impl\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1527\u001B[0m, in \u001B[0;36mModule._call_impl\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 1522\u001B[0m \u001B[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001B[39;00m\n\u001B[0;32m 1523\u001B[0m \u001B[38;5;66;03m# this function, and just call forward.\u001B[39;00m\n\u001B[0;32m 1524\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m (\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_pre_hooks\n\u001B[0;32m 1525\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_backward_hooks\n\u001B[0;32m 1526\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_forward_pre_hooks):\n\u001B[1;32m-> 1527\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mforward_call\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 1529\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[0;32m 1530\u001B[0m result \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\transformers\\models\\electra\\modeling_electra.py:585\u001B[0m, in \u001B[0;36mElectraEncoder.forward\u001B[1;34m(self, hidden_states, attention_mask, head_mask, encoder_hidden_states, encoder_attention_mask, past_key_values, use_cache, output_attentions, output_hidden_states, return_dict)\u001B[0m\n\u001B[0;32m 574\u001B[0m layer_outputs \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_gradient_checkpointing_func(\n\u001B[0;32m 575\u001B[0m layer_module\u001B[38;5;241m.\u001B[39m\u001B[38;5;21m__call__\u001B[39m,\n\u001B[0;32m 576\u001B[0m hidden_states,\n\u001B[1;32m (...)\u001B[0m\n\u001B[0;32m 582\u001B[0m output_attentions,\n\u001B[0;32m 583\u001B[0m )\n\u001B[0;32m 584\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m--> 585\u001B[0m layer_outputs \u001B[38;5;241m=\u001B[39m \u001B[43mlayer_module\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 586\u001B[0m \u001B[43m \u001B[49m\u001B[43mhidden_states\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 587\u001B[0m \u001B[43m \u001B[49m\u001B[43mattention_mask\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 588\u001B[0m \u001B[43m \u001B[49m\u001B[43mlayer_head_mask\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 589\u001B[0m \u001B[43m \u001B[49m\u001B[43mencoder_hidden_states\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 590\u001B[0m \u001B[43m \u001B[49m\u001B[43mencoder_attention_mask\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 591\u001B[0m \u001B[43m \u001B[49m\u001B[43mpast_key_value\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 592\u001B[0m \u001B[43m \u001B[49m\u001B[43moutput_attentions\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 593\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 595\u001B[0m hidden_states \u001B[38;5;241m=\u001B[39m layer_outputs[\u001B[38;5;241m0\u001B[39m]\n\u001B[0;32m 596\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m use_cache:\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1518\u001B[0m, in \u001B[0;36mModule._wrapped_call_impl\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 1516\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_compiled_call_impl(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs) \u001B[38;5;66;03m# type: ignore[misc]\u001B[39;00m\n\u001B[0;32m 1517\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m-> 1518\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_call_impl\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1527\u001B[0m, in \u001B[0;36mModule._call_impl\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 1522\u001B[0m \u001B[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001B[39;00m\n\u001B[0;32m 1523\u001B[0m \u001B[38;5;66;03m# this function, and just call forward.\u001B[39;00m\n\u001B[0;32m 1524\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m (\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_pre_hooks\n\u001B[0;32m 1525\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_backward_hooks\n\u001B[0;32m 1526\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_forward_pre_hooks):\n\u001B[1;32m-> 1527\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mforward_call\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 1529\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[0;32m 1530\u001B[0m result \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\transformers\\models\\electra\\modeling_electra.py:474\u001B[0m, in \u001B[0;36mElectraLayer.forward\u001B[1;34m(self, hidden_states, attention_mask, head_mask, encoder_hidden_states, encoder_attention_mask, past_key_value, output_attentions)\u001B[0m\n\u001B[0;32m 462\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mforward\u001B[39m(\n\u001B[0;32m 463\u001B[0m \u001B[38;5;28mself\u001B[39m,\n\u001B[0;32m 464\u001B[0m hidden_states: torch\u001B[38;5;241m.\u001B[39mTensor,\n\u001B[1;32m (...)\u001B[0m\n\u001B[0;32m 471\u001B[0m ) \u001B[38;5;241m-\u001B[39m\u001B[38;5;241m>\u001B[39m Tuple[torch\u001B[38;5;241m.\u001B[39mTensor]:\n\u001B[0;32m 472\u001B[0m \u001B[38;5;66;03m# decoder uni-directional self-attention cached key/values tuple is at positions 1,2\u001B[39;00m\n\u001B[0;32m 473\u001B[0m self_attn_past_key_value \u001B[38;5;241m=\u001B[39m past_key_value[:\u001B[38;5;241m2\u001B[39m] \u001B[38;5;28;01mif\u001B[39;00m past_key_value \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m \u001B[38;5;28;01melse\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m\n\u001B[1;32m--> 474\u001B[0m self_attention_outputs \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mattention\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 475\u001B[0m \u001B[43m \u001B[49m\u001B[43mhidden_states\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 476\u001B[0m \u001B[43m \u001B[49m\u001B[43mattention_mask\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 477\u001B[0m \u001B[43m \u001B[49m\u001B[43mhead_mask\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 478\u001B[0m \u001B[43m \u001B[49m\u001B[43moutput_attentions\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43moutput_attentions\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 479\u001B[0m \u001B[43m \u001B[49m\u001B[43mpast_key_value\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mself_attn_past_key_value\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 480\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 481\u001B[0m attention_output \u001B[38;5;241m=\u001B[39m self_attention_outputs[\u001B[38;5;241m0\u001B[39m]\n\u001B[0;32m 483\u001B[0m \u001B[38;5;66;03m# if decoder, the last output is tuple of self-attn cache\u001B[39;00m\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1518\u001B[0m, in \u001B[0;36mModule._wrapped_call_impl\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 1516\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_compiled_call_impl(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs) \u001B[38;5;66;03m# type: ignore[misc]\u001B[39;00m\n\u001B[0;32m 1517\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m-> 1518\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_call_impl\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1527\u001B[0m, in \u001B[0;36mModule._call_impl\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 1522\u001B[0m \u001B[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001B[39;00m\n\u001B[0;32m 1523\u001B[0m \u001B[38;5;66;03m# this function, and just call forward.\u001B[39;00m\n\u001B[0;32m 1524\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m (\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_pre_hooks\n\u001B[0;32m 1525\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_backward_hooks\n\u001B[0;32m 1526\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_forward_pre_hooks):\n\u001B[1;32m-> 1527\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mforward_call\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 1529\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[0;32m 1530\u001B[0m result \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\transformers\\models\\electra\\modeling_electra.py:401\u001B[0m, in \u001B[0;36mElectraAttention.forward\u001B[1;34m(self, hidden_states, attention_mask, head_mask, encoder_hidden_states, encoder_attention_mask, past_key_value, output_attentions)\u001B[0m\n\u001B[0;32m 391\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mforward\u001B[39m(\n\u001B[0;32m 392\u001B[0m \u001B[38;5;28mself\u001B[39m,\n\u001B[0;32m 393\u001B[0m hidden_states: torch\u001B[38;5;241m.\u001B[39mTensor,\n\u001B[1;32m (...)\u001B[0m\n\u001B[0;32m 399\u001B[0m output_attentions: Optional[\u001B[38;5;28mbool\u001B[39m] \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mFalse\u001B[39;00m,\n\u001B[0;32m 400\u001B[0m ) \u001B[38;5;241m-\u001B[39m\u001B[38;5;241m>\u001B[39m Tuple[torch\u001B[38;5;241m.\u001B[39mTensor]:\n\u001B[1;32m--> 401\u001B[0m self_outputs \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mself\u001B[49m\u001B[43m(\u001B[49m\n\u001B[0;32m 402\u001B[0m \u001B[43m \u001B[49m\u001B[43mhidden_states\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 403\u001B[0m \u001B[43m \u001B[49m\u001B[43mattention_mask\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 404\u001B[0m \u001B[43m \u001B[49m\u001B[43mhead_mask\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 405\u001B[0m \u001B[43m \u001B[49m\u001B[43mencoder_hidden_states\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 406\u001B[0m \u001B[43m \u001B[49m\u001B[43mencoder_attention_mask\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 407\u001B[0m \u001B[43m \u001B[49m\u001B[43mpast_key_value\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 408\u001B[0m \u001B[43m \u001B[49m\u001B[43moutput_attentions\u001B[49m\u001B[43m,\u001B[49m\n\u001B[0;32m 409\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 410\u001B[0m attention_output \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39moutput(self_outputs[\u001B[38;5;241m0\u001B[39m], hidden_states)\n\u001B[0;32m 411\u001B[0m outputs \u001B[38;5;241m=\u001B[39m (attention_output,) \u001B[38;5;241m+\u001B[39m self_outputs[\u001B[38;5;241m1\u001B[39m:] \u001B[38;5;66;03m# add attentions if we output them\u001B[39;00m\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1518\u001B[0m, in \u001B[0;36mModule._wrapped_call_impl\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 1516\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_compiled_call_impl(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs) \u001B[38;5;66;03m# type: ignore[misc]\u001B[39;00m\n\u001B[0;32m 1517\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m-> 1518\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_call_impl\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1527\u001B[0m, in \u001B[0;36mModule._call_impl\u001B[1;34m(self, *args, **kwargs)\u001B[0m\n\u001B[0;32m 1522\u001B[0m \u001B[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001B[39;00m\n\u001B[0;32m 1523\u001B[0m \u001B[38;5;66;03m# this function, and just call forward.\u001B[39;00m\n\u001B[0;32m 1524\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m (\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_pre_hooks\n\u001B[0;32m 1525\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_backward_hooks\n\u001B[0;32m 1526\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_forward_pre_hooks):\n\u001B[1;32m-> 1527\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mforward_call\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 1529\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[0;32m 1530\u001B[0m result \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m\n", + "File \u001B[1;32m~\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\transformers\\models\\electra\\modeling_electra.py:321\u001B[0m, in \u001B[0;36mElectraSelfAttention.forward\u001B[1;34m(self, hidden_states, attention_mask, head_mask, encoder_hidden_states, encoder_attention_mask, past_key_value, output_attentions)\u001B[0m\n\u001B[0;32m 318\u001B[0m relative_position_scores_key \u001B[38;5;241m=\u001B[39m torch\u001B[38;5;241m.\u001B[39meinsum(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mbhrd,lrd->bhlr\u001B[39m\u001B[38;5;124m\"\u001B[39m, key_layer, positional_embedding)\n\u001B[0;32m 319\u001B[0m attention_scores \u001B[38;5;241m=\u001B[39m attention_scores \u001B[38;5;241m+\u001B[39m relative_position_scores_query \u001B[38;5;241m+\u001B[39m relative_position_scores_key\n\u001B[1;32m--> 321\u001B[0m attention_scores \u001B[38;5;241m=\u001B[39m \u001B[43mattention_scores\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m/\u001B[39;49m\u001B[43m \u001B[49m\u001B[43mmath\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43msqrt\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mattention_head_size\u001B[49m\u001B[43m)\u001B[49m\n\u001B[0;32m 322\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m attention_mask \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[0;32m 323\u001B[0m \u001B[38;5;66;03m# Apply the attention mask is (precomputed for all layers in ElectraModel forward() function)\u001B[39;00m\n\u001B[0;32m 324\u001B[0m attention_scores \u001B[38;5;241m=\u001B[39m attention_scores \u001B[38;5;241m+\u001B[39m attention_mask\n", + "\u001B[1;31mRuntimeError\u001B[0m: [enforce fail at alloc_cpu.cpp:80] data. DefaultCPUAllocator: not enough memory: you tried to allocate 288800 bytes." + ] + } + ], + "source": [ + "logs_path = os.path.join('logs_server', 'pubchem_pretraining', 'version_6')\n", + "checkpoint_name = 'best_epoch=88_val_loss=0.7713_val_micro-f1=0.00.ckpt'\n", + "eval_pre.visualise_loss(logs_path)\n", + "eval_pre.evaluate_model(logs_path, checkpoint_name)\n", + "#todo: run on server" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-24T09:13:26.387885900Z", + "start_time": "2023-11-24T09:06:23.191727Z" + } + } + }, + { + "cell_type": "code", + "execution_count": 8, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "data\\Pubchem\\processed\\deepsmiles_token\\100000\n", + "[]\n", + "[[118, 118, 118, 302, 222, 118, 349, 536, 272, 118, 349, 118, 278, 118, 349, 302, 136, 272, 272, 272, 272, 272, 272, 272, 272, 536, 118, 118, 349, 118, 118, 349, 118, 118, 349, 118, 118, 349, 118, 118, 349, 118, 675, 96]]\n" + ] + } + ], + "source": [ + "# check if pretraining datasets overlap\n", + "dm = PubChemDeepSMILES()\n", + "processed_path = dm.processed_dir\n", + "test_set = torch.load(os.path.join(processed_path, 'test.pt'))\n", + "val_set = torch.load(os.path.join(processed_path, 'validation.pt'))\n", + "train_set = torch.load(os.path.join(processed_path, 'train.pt'))\n", + "print(processed_path)\n", + "test_smiles = [entry['features'] for entry in test_set]\n", + "val_smiles = [entry['features'] for entry in val_set]\n", + "train_smiles = [entry['features'] for entry in train_set]\n", + "train_smiles.append(val_smiles[0])\n", + "val_smiles_in_test = [smiles for smiles in val_smiles if smiles in test_smiles]\n", + "train_smiles_in_val = [smiles for smiles in train_smiles if smiles in val_smiles]\n", + "print(val_smiles_in_test)\n", + "print(train_smiles_in_val)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-11-24T09:55:24.187152800Z", + "start_time": "2023-11-24T09:55:21.580572700Z" + } + } + }, { "cell_type": "code", "execution_count": 2, @@ -391,7 +503,7 @@ " data_list = torch.load(data_path)\n", " preds_list = []\n", " labels_list = []\n", - " if common_classes_mask is not N\n", + " #if common_classes_mask is not N\n", "\n", " for row in tqdm.tqdm(data_list):\n", " processable_data = model._process_batch(collate([row]), 0)\n", @@ -636,52 +748,56 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 3, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - " epoch variable value\n", - "0 0.0 val_loss_epoch NaN\n", - "1 0.0 val_loss_epoch NaN\n", - "2 0.0 val_loss_epoch NaN\n", - "3 0.0 val_loss_epoch NaN\n", - "4 0.0 val_loss_epoch NaN\n", - "... ... ... ...\n", - "17227 NaN train_loss_epoch NaN\n", - "17228 NaN train_loss_epoch NaN\n", - "17229 NaN train_loss_epoch NaN\n", - "17230 99.0 train_loss_epoch NaN\n", - "17231 99.0 train_loss_epoch 0.013129\n", + " epoch variable value\n", + "0 0.0 val_loss_epoch NaN\n", + "1 0.0 val_loss_epoch NaN\n", + "2 0.0 val_loss_epoch NaN\n", + "3 0.0 val_loss_epoch NaN\n", + "4 0.0 val_loss_epoch NaN\n", + "... ... ... ...\n", + "872995 NaN train_loss_epoch NaN\n", + "872996 NaN train_loss_epoch NaN\n", + "872997 NaN train_loss_epoch NaN\n", + "872998 99.0 train_loss_epoch NaN\n", + "872999 99.0 train_loss_epoch 0.90625\n", "\n", - "[17232 rows x 3 columns]\n" + "[873000 rows x 3 columns]\n" ] } ], "source": [ "# visualize results from csv\n", - "df = pd.read_csv(os.path.join('server-results', 'version_6', 'metrics.csv'))\n", + "df = pd.read_csv(os.path.join('logs_server', 'pubchem_pretraining', 'version_6', 'metrics.csv'))\n", "df_loss = df.melt(id_vars='epoch', value_vars=['val_loss_epoch', 'train_loss_epoch'])\n", - "df_macro = df.melt(id_vars='epoch', value_vars=['train_macro-f1', 'val_macro-f1', ])\n", - "df_micro = df.melt(id_vars='epoch', value_vars=['train_micro-f1', 'val_micro-f1', ])\n", + "#df_macro = df.melt(id_vars='epoch', value_vars=['train_macro-f1', 'val_macro-f1', ])\n", + "#df_micro = df.melt(id_vars='epoch', value_vars=['train_micro-f1', 'val_micro-f1', ])\n", "print(df_loss)" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" + }, + "ExecuteTime": { + "end_time": "2023-11-24T07:36:43.827637900Z", + "start_time": "2023-11-24T07:36:43.594504200Z" } } }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 4, "outputs": [ { "data": { "text/plain": "
", - "image/png": "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uOIKgoKCCA4OpmfPnqxevfqcPvfHH3/k0ksvxc/Pj+joaO6//36nh4BiYmJ49tlnGTp0KAEBATRv3pzp06c7nSM9PZ3BgwcTGBhIcHAwt9xyS4Xv3i+++IKEhAR8fX0JDw/n+uuvd3q/sLCQO+64g6CgIFq2bMnMmTOrdP9cwdNdH+zt7U3Pnj1JTU0lJSUFMAcsp6amMnr06EqPSUxMJDU1lQceeMCxb/HixSQmJlYoGxISAsD27dtZvXo1zz77bLVfw3lxtAAVubceIiLnoajMRqeJX7nlszc9k4y/97l9bd18883cd999fPfddwwYMACAo0ePsmjRIhYuXEh+fj7XXHMNzz33HD4+Prz//vtce+21bN26lZYtW15QPQsKCkhOTiYxMZFVq1aRlZXFX/7yF0aPHs17771HeXk5KSkp3HnnnXz44YeUlpaycuVKLBYLAMOGDaN79+689dZbWK1W1q9fj5eX1+9+7s6dOxk4cCB///vfeeeddzh8+DCjR49m9OjRvPvuu45yL7/8MhMmTODpp5/mq6++YsyYMbRr144rr7wSu93uCD9Lly6lvLyce++9lyFDhrBkyRIAFixYwPXXX8/jjz/O+++/T2lpaYUpaaZMmcKzzz7LhAkT+Pjjj/nb3/5G//79ad++/QXd2+rktgAEMHbsWEaMGEGvXr3o3bs3U6dOpaCggNtvvx2A4cOH07x5cyZPngzAmDFj6N+/P1OmTGHQoEHMnj2b1atXOyXLuXPn0qRJE1q2bMmGDRsYM2YMKSkpXHXVVW65xgq0IKqISI1r1KgRV199NbNmzXIEoI8//pjw8HCuuOIKPDw8iIuLc5R/9tln+eyzz/j888/P+I/wczVr1iyKi4t5//33CQgIAGDatGlce+21vPjii3h5eZGTk8Mf//hHLrroIgA6duzoOD49PZ1HHnmEDh06ABAbG3tOnzt58mSGDRvmaCSIjY3ljTfeoH///rz11luOB4Quvvhix5PW7dq1Y9myZbz22mtceeWVpKamsmHDBnbv3u14IOj999+nc+fOrFq1ioSEBJ577jluvfVWnn76acdnn34vAa655hruueceAB577DFee+01vvvuOwWgk4YMGcLhw4eZOHEiGRkZxMfHs2jRIsdA5/T0dKexO/369WPWrFk88cQTTJgwgdjYWObNm0eXLqceJz906BBjx44lMzOTZs2aMXz4cJ588kmXX9sZaQyQiNRhfl5WNj2T7LbProphw4Zx55138o9//AMfHx8++OADbr31Vjw8PMjPz+epp55iwYIFHDp0iPLycoqKikhPT7/gem7evJm4uDhH+AEzdNjtdrZu3cpll13GyJEjSU5O5sorryQpKYlbbrmFZs2aAWbjwF/+8hf+85//kJSUxM033+wISmfz888/88svv/DBBx849hmGgd1uZ/fu3Y6Q9dtek8TERMdTW5s3byY6OtrpaehOnToRGhrK5s2bSUhIYP369dx5551nrUu3bt0cry0WC5GRkWec489d3BqAAEfzXGVONred7uabb+bmm28+4/nuv/9+7r///uqqXvVTC5CI1GEWi+Wcu6Hc7dprr8UwDBYsWEBCQgI//PADr732GgAPP/wwixcv5pVXXqFt27b4+flx0003UVpa6pK6vfvuu9x///0sWrSIOXPm8MQTT7B48WL69u3LU089xW233caCBQv48ssvmTRpErNnz64wzua38vPz+etf/1rpd+CFduudzs/P73fL/LbLzmKxVBiP5W716imwOuHkTNBlGgMkIlKTfH19ueGGG/jggw/48MMPad++PT169ABg2bJljBw5kuuvv56uXbsSGRnJnj17quVzO3bsyM8//+w0+HjZsmV4eHg4dQF1796d8ePHs3z5crp06cKsWbMc77Vr144HH3yQr7/+mhtuuMFpDM+Z9OjRg02bNtG2bdsKm7e3t6PcTz/95HTcTz/95Ggd6tixI/v27XOaDmbTpk0cP36cTp06AWbrTmpqahXvSu2jAORqagESEXGZYcOGsWDBAt555x2GDRvm2B8bG8unn37K+vXr+fnnn7ntttuqrYVi2LBh+Pr6MmLECDZu3Mh3333Hfffdx5///GciIiLYvXs348ePJy0tjb179/L111+zfft2OnbsSFFREaNHj2bJkiXs3buXZcuWsWrVKqcxQmfy2GOPsXz5ckaPHs369evZvn07//vf/yr0sixbtoyXXnqJbdu2MX36dObOncuYMWMASEpKomvXrgwbNoy1a9eycuVKhg8fTv/+/enVqxcAkyZN4sMPP2TSpEls3ryZDRs28OKLL1bLvXMlBSBX0xggERGX+cMf/kBYWBhbt27ltttuc+x/9dVXadSoEf369ePaa68lOTnZ0Tp0ofz9/fnqq684evQoCQkJ3HTTTQwYMMCx7JO/vz9btmzhxhtvpF27dtx1113ce++9/PWvf8VqtXLkyBGGDx9Ou3btuOWWW7j66qudBhyfSbdu3Vi6dCnbtm3j0ksvpXv37kycOJGoqCincg899BCrV6+me/fu/P3vf+fVV18lOdkc12WxWPjf//5Ho0aNuOyyy0hKSqJNmzbMmTPHcfzll1/O3Llz+fzzz4mPj+cPf/jD7y5kXhu5dS2w2qoqa4lU2TdPw4+vQp+/wdUvVO+5RUSqmdYCq19iYmJ44IEHnKaTqWvq/FpgDZZagERERNxOAcjVvBSARETqkg8++IDAwMBKt86dO7usHldfffUZ6/H888+7rB71Rd14lrE+UQuQiEidct1119GnT59K3zuXGZqry7///W+Kiip/gjgsLOyczlFdT7rVBwpArqanwERE6pSgoCCCgoLcXQ2aN2/u7irUK+oCczW1AImIiLidApCrqQVIRETE7RSAXE0zQYuIiLidApCrqQVIRETE7RSAXE1jgERERNxOAcjV1AIkIlLnxMTEMHXq1Go515IlS7BYLBw/frxazleX7dmzB4vFwvr1613+2XoM3tW8TowBUguQiEiNuvzyy4mPj6+W4LJq1SoCAgIuvFJSaygAuZqjBUgBSETEnQzDwGaz4en5+1+FTZo0cUGNxJXUBeZqGgMkInWZYUBpgXu2KqzdPXLkSJYuXcrrr7+OxWLBYrHw3nvvYbFY+PLLL+nZsyc+Pj78+OOP7Ny5k8GDBxMREUFgYCAJCQl88803Tuf7bReYxWLh3//+N9dffz3+/v7Exsby+eefn/dt/eSTT+jcuTM+Pj7ExMQwZcoUp/f/8Y9/EBsbi6+vLxEREdx0002O9z7++GO6du2Kn58fjRs3JikpiYKCgnP63H//+9907NgRX19fOnTowD/+8Q/Heye7p2bPnk2/fv3w9fWlS5cuLF261OkcS5cupXfv3vj4+NCsWTPGjRtHeXm543273c5LL71E27Zt8fHxoWXLljz33HNO59i1axdXXHEF/v7+xMXFkZaWds737nypBcjVTgYgeznYysGq/wQiUoeUFcLzUe757AkHwfvcuqFef/11tm3bRpcuXXjmmWcA+PXXXwEYN24cr7zyCm3atKFRo0bs27ePa665hueeew4fHx/ef/99rr32WrZu3UrLli3P+BlPP/00L730Ei+//DJvvvkmw4YNY+/evee8LMVJa9as4ZZbbuGpp55iyJAhLF++nHvuuYfGjRszcuRIVq9ezf33389//vMf+vXrx9GjR/nhhx8AOHToEEOHDuWll17i+uuvJy8vjx9++AHjHMLiBx98wMSJE5k2bRrdu3dn3bp13HnnnQQEBDBixAhHuUceeYSpU6fSqVMnXn31Va699lp2795N48aNOXDgANdccw0jR47k/fffZ8uWLdx55534+vry1FNPATB+/Hj+9a9/8dprr3HJJZdw6NAhtmzZ4lSXxx9/nFdeeYXY2Fgef/xxhg4dyo4dO86pde586dvX1U52gQHYShSARERqQEhICN7e3vj7+xMZGQng+NJ95plnuPLKKx1lw8LCiIuLc/z+7LPP8tlnn/H5558zevToM37GyJEjGTp0KADPP/88b7zxBitXrmTgwIFVquurr77KgAEDePLJJwFo164dmzZt4uWXX2bkyJGkp6cTEBDAH//4R4KCgmjVqhXdu3cHzABUXl7ODTfcQKtWrQDo2rXrOX3upEmTmDJlCjfccAMArVu3ZtOmTfzzn/90CkCjR4/mxhtvBOCtt95i0aJFvP322zz66KP84x//IDo6mmnTpmGxWOjQoQMHDx7kscceY+LEiRQUFPD6668zbdo0xzkvuugiLrnkEqe6PPzwwwwaNAgwg2Xnzp3ZsWMHHTp0qNK9rAp9+7rayRYgMJ8EO8d/zYiI1Ape/mZLjLs+uxr06tXL6ff8/HyeeuopFixY4AgURUVFpKenn/U83bp1c7wOCAggODiYrKysKtdn8+bNDB482GnfxRdfzNSpU7HZbFx55ZW0atWKNm3aMHDgQAYOHOjoeouLi2PAgAF07dqV5ORkrrrqKm666SYaNWp01s8sKChg586djBo1ijvvvNOxv7y8nJCQEKeyiYmJjteenp706tWLzZs3O+qemJiIxWJxqnt+fj779+8nIyODkpISBgwYcNb6nH4vmzVrBkBWVpYCUL3iYQUPL7CXaTZoEal7LJY6/w+33z7N9fDDD7N48WJeeeUV2rZti5+fHzfddBOlpaVnPc9vV4K3WCzY7fZqr29QUBBr165lyZIlfP3110ycOJGnnnqKVatWERoayuLFi1m+fDlff/01b775Jo8//jgrVqygdevWZzxnfn4+AP/6178qrHRvtVqrre5+fn7nVO70e3kyTNXEvTydBkG7gwZCi4jUOG9vb2w22++WW7ZsGSNHjuT666+na9euREZGsmfPnpqv4AkdO3Zk2bJlFerUrl07Rxjx9PQkKSmJl156iV9++YU9e/bw7bffAmZguPjii3n66adZt24d3t7efPbZZ2f9zIiICKKioti1axdt27Z12n4bnH766SfH6/LyctasWUPHjh0ddU9LS3Mac7Rs2TKCgoJo0aIFsbGx+Pn5kZqaev43qIaoBcgdPH2gNE+TIYqI1KCYmBhWrFjBnj17CAwMPGOLQmxsLJ9++inXXnstFouFJ598ssZbH0730EMPkZCQwLPPPsuQIUNIS0tj2rRpjiey5s+fz65du7jsssto1KgRCxcuxG630759e1asWEFqaipXXXUVTZs2ZcWKFRw+fNgRUM7m6aef5v777yckJISBAwdSUlLC6tWrOXbsGGPHjnWUmz59OrGxsXTs2JHXXnuNY8eOcccddwBwzz33MHXqVO677z5Gjx7N1q1bmTRpEmPHjsXDwwNfX18ee+wxHn30Uby9vbn44os5fPgwv/76K6NGjaqZG3qOFIDcQS1AIiI17uGHH2bEiBF06tSJoqIi3n333UrLvfrqq9xxxx3069eP8PBwHnvsMXJzc11Wzx49evDRRx8xceJEnn32WZo1a8YzzzzDyJEjAQgNDeXTTz/lqaeeori4mNjYWD788EM6d+7M5s2b+f7775k6dSq5ubm0atWKKVOmcPXVV//u5/7lL3/B39+fl19+mUceeYSAgAC6du3KAw884FTuhRde4IUXXmD9+vW0bduWzz//nPDwcACaN2/OwoULeeSRR4iLiyMsLIxRo0bxxBNPOI5/8skn8fT0ZOLEiRw8eJBmzZpx9913V9v9O18W41yelWtgcnNzCQkJIScnh+Dg4Or/gDd7wpEdcPsiaJX4++VFRNykuLiY3bt307p1a3x9fX//AKk39uzZQ+vWrVm3bh3x8fHuro7D2f5MVuX7W2OA3MHRAqRB0CIiIu6gAOQOWhBVRKTeuvvuuwkMDKx0c2XXz5nqEBgY6JhIsSHTGCB30BggEZF665lnnuHhhx+u9L0aGVZxBmdbYb158+a/e3xMTMw5zShdVykAuYNagERE6q2mTZvStGlTd1eDtm3bursKtZq6wNzB88TEUGoB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dY0DvQGw2Q2OFZaaO8NOrgqvRVFFRERqynmtBr9//34+//xz0tPTKS0tdXrv1VdfrZaKNQReVg/CA73Jzi/lwPEiGgf6QJP25psH17u1biIiIvVZlQNQamoq1113HW3atGHLli106dKFPXv2YBgGPXr0qIk61mvtI4PI3nGETQdz6dYiFFomAhbI3gq5hyC4mburKCIiUu9UuQts/PjxPPzww2zYsAFfX18++eQT9u3bR//+/bn55ptroo71Wucoc221Xw/mmjv8w6BZN/P1nh/cVCsREZH6rcoBaPPmzQwfPhwAT09PioqKCAwM5JlnnuHFF1+s9grWd52jggH49WDOqZ2t+5s/dy11Q41ERETqvyoHoICAAMe4n2bNmrFz56nButnZ2dVXswbiZADafCgPm/3E8iJtTgSg3UvhN0uOiIiIyIWr8higvn378uOPP9KxY0euueYaHnroITZs2MCnn35K3759a6KO9Vrr8ED8vKwUldnYnV1A26aB5jggDy/I2QfHdp9aIkNERESqRZVbgF599VX69OkDwNNPP82AAQOYM2cOMTExvP322+dVienTpxMTE4Ovry99+vRh5cqVZy0/d+5cOnTogK+vL127dmXhwoVO748cORKLxeK0DRw48LzqVtOsHhY6NgsCTusG8w6AFgnma3WDiYiIVLsqB6Dnn3+eo0ePAmZ32IwZM/jll1/45JNPzmudsDlz5jB27FgmTZrE2rVriYuLIzk5maysrErLL1++nKFDhzJq1CjWrVtHSkoKKSkpbNy40ancwIEDOXTokGP78MMPq1w3V6kwEBpO6wb73g01EhERqd+qHIAOHz7MwIEDiY6O5pFHHuHnn3++oAq8+uqr3Hnnndx+++106tSJGTNm4O/vzzvvvFNp+ddff52BAwfyyCOP0LFjR5599ll69OjBtGnTnMr5+PgQGRnp2Bo1anRB9axJlQ+Evsz8uft7sNvdUCsREZH6q8oB6H//+x+HDh3iySefZNWqVfTo0YPOnTvz/PPPs2fPniqdq7S0lDVr1pCUlHSqQh4eJCUlkZaWVukxaWlpTuUBkpOTK5RfsmQJTZs2pX379vztb3/jyJEjZ6xHSUkJubm5Tpsrnd4CZJwc9Ny8F3j5Q2E2HN7s0vqIiIjUd+e1FEajRo246667WLJkCXv37mXkyJH85z//oW3btlU6T3Z2NjabjYiICKf9ERERZGRkVHpMRkbG75YfOHAg77//Pqmpqbz44ossXbqUq6++GpvNVuk5J0+eTEhIiGOLjo6u0nVcqHaRgXh6WDheWMbBnGJzp6f3iUkR0TggERGRanZBa4GVlZWxevVqVqxYwZ49eyoEE3e59dZbue666+jatSspKSnMnz+fVatWsWTJkkrLjx8/npycHMe2b98+l9bXx9NKbMSJgdAHTusGO/1xeBEREak25xWAvvvuO+68804iIiIYOXIkwcHBzJ8/n/3791fpPOHh4VitVjIzM532Z2ZmEhkZWekxkZGRVSoP0KZNG8LDw9mxY0el7/v4+BAcHOy0udqpcUCndb+dnBBxzzKwlbu8TiIiIvVVlQNQ8+bNueaaa8jOzmbmzJlkZmbyzjvvMGDAACwWS5XO5e3tTc+ePUlNTXXss9vtpKamkpiYWOkxiYmJTuUBFi9efMbyYC7eeuTIEZo1q73ralU6EDqyK/iGQmkeHFznnoqJiIjUQ1WeCPGpp57i5ptvJjQ0tFoqMHbsWEaMGEGvXr3o3bs3U6dOpaCggNtvvx2A4cOH07x5cyZPngzAmDFj6N+/P1OmTGHQoEHMnj2b1atXM3PmTADy8/N5+umnufHGG4mMjGTnzp08+uijtG3bluTk5Gqpc02o9FF4Dyu0vhQ2f2F2g0UnuKl2IiIi9UuVW4DuvPPOags/AEOGDOGVV15h4sSJxMfHs379ehYtWuQYT5Sens6hQ4cc5fv168esWbOYOXMmcXFxfPzxx8ybN48uXboAYLVa+eWXX7juuuto164do0aNomfPnvzwww/4+PhUW72r28nJEA/lFHO0oPTUG601DkhERKS6WQxDi039Vm5uLiEhIeTk5Lh0PNAVryxhd3YB/xnVm0tjm5g7D2+D6Qlg9YFx6eDl67L6iIiI1CVV+f6+oKfApHp1qmwgdHgsBDUDWwns/dFNNRMREalfFIBqkUqfBLNYoP3V5usNn7ihViIiIvWPAlAt4hgIffpcQABdbzF/bv4CyopcXCsREZH6RwGoFjnZArT7SAEFJafN+xPdB0Jbmo/Db/3STbUTERGpPxSAapHwQB8ign0wDNh86PTH4T2g683m6w1z3VM5ERGRekQBqJbpUtl8QHCqG2z711B41MW1EhERqV8UgGqZk91gG387DqhpB3NmaHs5/PqZG2omIiJSfygA1TLxLUMB+HFHNnb7b6Zo6jbE/KluMBERkQuiAFTL9LsonABvK4dyivl5/3HnN7vcCFggPQ2Op7ujeiIiIvWCAlAt4+tl5Q8dzWVAFm3McH4zOMpcGwzUCiQiInIBFIBqoWu6RAKwcOMhKqxUcrIb7JePQKuYiIiInBcFoFro8vZN8fOysu9oUcWnwTpea64LdngLZGxwTwVFRETqOAWgWsjP28oVHczFUBduOOT8pm8ItB9ovt7wkYtrJiIiUj8oANVSA7s0A8wAdMZusPWzoCTfxTUTERGp+xSAaqk/dGiKt6cHe44UsiUjz/nN2GQIawOFR2D12+6poIiISB2mAFRLBfp40r+d2Q325W+7wayecNmj5utlr0NpgYtrJyIiUrcpANVi13Q9+TRYRsU3u958qhVo1b9dXDMREZG6TQGoFhvQMQIvq4UdWflsz/xNN5jVEy57xHytViAREZEqUQCqxYJ9vbikbTgAX1baCnQLNGqtViAREZEqUgCq5a7ueuppsAqsntBfY4FERESqSgGolruqUwSeHha2ZOSxI6uSR97VCiQiIlJlCkC1XKi/t+NpsLd/3F2xgFqBREREqkwBqA74a/+LAPhkzX4ycoorFji9FWjZGy6unYiISN2jAFQH9G4dRu+YMEptdv71w66KBayekDTJfP3ja3C0kjIiIiLioABUR9xzhdkKNGtFOkcLSisW6JQCba4AWwksfFQrxYuIiJyFAlAd0b9dE7o0D6aozMa7yyoZC2SxwDWvgNUbdiyGLfNdX0kREZE6QgGojrBYLNx7eVsA3lu+h9zisoqFwttCv/vN11+O04BoERGRM1AAqkOSO0fStmkgecXl/PenvZUXuvQhCGkJufth6UuuraCIiEgdoQBUh3h4WLjncnMs0Ns/7Kao1FaxkLc/XP2i+TptGhze6sIaioiI1A0KQHXMtXFRtGjkx5GCUuasSq+8UIdroN1AsJfDgoc0IFpEROQ3akUAmj59OjExMfj6+tKnTx9Wrlx51vJz586lQ4cO+Pr60rVrVxYuXHjGsnfffTcWi4WpU6dWc63dw8vqwd0n5gWa9t0OcgorGQsEZiuQpx/s+QHWf+DCGoqIiNR+bg9Ac+bMYezYsUyaNIm1a9cSFxdHcnIyWVlZlZZfvnw5Q4cOZdSoUaxbt46UlBRSUlLYuHFjhbKfffYZP/30E1FRUTV9GS51c68WXNQkgOz8UiZ/ubnyQo1i4Irx5uuvHoe8TJfVT0REpLZzewB69dVXufPOO7n99tvp1KkTM2bMwN/fn3feeafS8q+//joDBw7kkUceoWPHjjz77LP06NGDadOmOZU7cOAA9913Hx988AFeXl6uuBSX8fG0MvmGbgDMXrWPn3Ydqbxg33uhWRwUH4dFj7mugiIiIrWcWwNQaWkpa9asISkpybHPw8ODpKQk0tLSKj0mLS3NqTxAcnKyU3m73c6f//xnHnnkETp37vy79SgpKSE3N9dpq+16tw5jaO+WAEz4bAPFZZUMiLZ6wnVvgsUKv34GW87cVSgiItKQuDUAZWdnY7PZiIiIcNofERFBRkZGpcdkZGT8bvkXX3wRT09P7r///nOqx+TJkwkJCXFs0dHRVbwS9xh3dQeaBPmw63AB/1iys/JCzeKg333m6wUPQXGO6yooIiJSS7m9C6y6rVmzhtdff5333nsPi8VyTseMHz+enJwcx7Zv374armX1CPHz4unrzBaut5bsYHtmXuUFLx9nLpaadxC+edqFNRQREamd3BqAwsPDsVqtZGY6D9DNzMwkMjKy0mMiIyPPWv6HH34gKyuLli1b4unpiaenJ3v37uWhhx4iJiam0nP6+PgQHBzstNUVV3eJJKljU8psBuM/3YDdXskj715+cN2JVeJXvw17lrm2kiIiIrWMWwOQt7c3PXv2JDU11bHPbreTmppKYmJipcckJiY6lQdYvHixo/yf//xnfvnlF9avX+/YoqKieOSRR/jqq69q7mLcxGKx8MzgLgR4W1m99xjTv9tRecHWl0GP4ebrT++CwqOuq6SIiEgt4/YusLFjx/Kvf/2L//u//2Pz5s387W9/o6CggNtvvx2A4cOHM378eEf5MWPGsGjRIqZMmcKWLVt46qmnWL16NaNHjwagcePGdOnSxWnz8vIiMjKS9u3bu+Uaa1pUqB9P/rETAFMWb+OLnw9WXjD5eQi7yFwm43/3aoJEERFpsNwegIYMGcIrr7zCxIkTiY+PZ/369SxatMgx0Dk9PZ1Dhw45yvfr149Zs2Yxc+ZM4uLi+Pjjj5k3bx5dunRx1yXUCrf2bsmoS1oD8NDcn1mz91jFQj5BcPO75orxWxfCin+6uJYiIiK1g8Uw1AzwW7m5uYSEhJCTk1OnxgPZ7AZ//c8avtmcSeMAb+bdezHRYf4VC66YCV8+Ah5e8JfFENXd9ZUVERGpZlX5/nZ7C5BUH6uHhddvjadzVDBHCkq5/b1V5BRVslRG7zuhwx/BXgZzb4fi2j/vkYiISHVSAKpnAnw8eXtEAhHBPuzIyuf+D9dRoZHPYoHB0yAkGo7thvkPaDyQiIg0KApA9VBkiC9vj0jA18uDpdsO89m6AxUL+TWCG982Z4ne+An8+JrrKyoiIuImCkD1VJfmIdw/IBaA5xZs5nhhacVCLfuYq8YDpD4Nmz53YQ1FRETcRwGoHrvz0ja0iwjkSEEpL3y5pfJCve+E3neZrz+9Cw6uc10FRURE3EQBqB7zsnrw/PVdAXPV+FV7zjD5YfJkaJsE5UXw4VDIPcM8QiIiIvWEAlA91ysmjFsTzMVdJ3y6gdJye8VCVk+46R1o0hHyDsGsIVCS7+KaioiIuI4CUAMw7uoONA7wZntWPv/6YVflhXxD4LY54B8OGb/A3BFQXsm4IRERkXpAAagBCPX35vFBHQF4I3U7e48UVF6wUSsYOhu8/GHHN/DJKLCVu7CmIiIirqEA1EBc3705/S5qTEm5nfs/XEdJua3ygtEJcOsH5nIZmz+Hz+8DeyXdZiIiInWYAlADYbFYePHGboT6e/Hz/hye/mLTmQtf9Ae4+T1zjqCfZ8GXj2qiRBERqVcUgBqQ6DB/pg6Jx2KBWSvS+XjN/jMX7jAIrp8BWGDVv8x5ghSCRESknlAAamAub9+UMScmSHz8sw38ejDnzIW73QJ/PDFD9I+vwcKHwX6GrjMREZE6RAGoAbr/D7Fc3r4JJeV2/vbfteQUVrJg6km9bodrXsFsCfo3fDQcyopcVlcREZGaoADUAHl4WJg6JJ4WjfxIP1rIgx+tx2Y/S/dW7zvh5nfNgdFb5sP7KVB4hkkVRURE6gAFoAYq1N+bGX/qibenB99uyeL5hZvPfkDn6+HPn4FPCOz7Cd5JhuPprqmsiIhINVMAasC6NA/h5Zu6AfD2j7t5b9nusx8QcwncsQiCm0P2NvjXADiwxgU1FRERqV4KQA3c4PjmPJLcHoBn5m9i8abMsx8Q0QlGLYaILlCQBe8Ogk3/c0FNRUREqo8CkHDP5RcxtHc0dgPu/3Adv+w/fvYDQpqbLUFtrzQXUP1ouPmUmB6TFxGROkIBSLBYLDwzuAuXtWtCUZmNO95bzb6jhWc/yCfIXDaj91/N3795Cj4fDeUlNV5fERGRC6UAJAB4WT2Yflt3OkQGkZ1fws0z0th8KPfsB1k94ZqX4OqXwOIB6/4Lb18JR3a6ptIiIiLnSQFIHIJ8vXjv9t7ENg0kI7eYW2aksWxH9u8f2OevcNtc8AuDQz/DPy+DDR/XfIVFRETOkwKQOIkM8eXju/vRp3UYeSXljHx3JZ+tO8uSGSfFJsHdP0Kri6E031xJ/vP7oPR3utJERETcQAFIKgjx9+L9Ub25Ni6KMpvBg3N+5rXF2ygoKf+dA5vD8M+h/2OABda+DzMugd3fu6TeIiIi58piGHp057dyc3MJCQkhJyeH4OBgd1fHbex2gxcXbeGf3+8CIMDbyuDuzbmtd0u6NA85+8G7lsCnf4X8DPP3+GFw1d/BP6xmKy0iIg1WVb6/FYAqoQDk7OM1+5n+3Q52Zxc49nVrEcJfL7uIa7pGYrFYKj+wOAe+eRpWvwMY4N8Ykp+HbkPgTMeIiIicJwWgC6QAVJFhGKTtOsKHK/exaOMhymzmH5terRrxxB87ER8deuaD962EL8ZA1ibz99aXwaBXITy25isuIiINhgLQBVIAOrsj+SX8X9peZn6/k+IyOwAp8VE8OrADUaF+lR9kK4Plb8DSl6C82FxY9ZIH4ZKx4OXrwtqLiEh9pQB0gRSAzk1GTjEvf7WVT9aaT4n5enlw/4BY/nJJG7w9zzC+/uhuWPgI7Fhs/t6oNQyaAm0HuKjWIiJSXykAXSAFoKrZsD+HZ+dvYuWeowC0iwjk7yld6d36DAOeDcNcP2zROMg7ZO7rfL05Pig4ykW1FhGR+kYB6AIpAFWdYRh8tu4Azy3YzJGCUgBu6dWCcVd3JCzAu/KDinPhu+dh5T/BsIN3IFwxwVxew+rpwtqLiEh9UJXv71oxD9D06dOJiYnB19eXPn36sHLlyrOWnzt3Lh06dMDX15euXbuycOFCp/efeuopOnToQEBAAI0aNSIpKYkVK1bU5CU0eBaLhRt6tCD1of4M7R0NwEer93PZS9/xyldbOV5YWvEg32C4+gW4aym0SDAnUPxqAszsD7uWuvgKRESkIXF7AJozZw5jx45l0qRJrF27lri4OJKTk8nKyqq0/PLlyxk6dCijRo1i3bp1pKSkkJKSwsaNGx1l2rVrx7Rp09iwYQM//vgjMTExXHXVVRw+fNhVl9Vghfp7M/mGbnx8dyKdmgWTX1LOtO92cOmL3/Hq4m3kFJVVPKhZN7jja7j2DfBrBJkb4f3r4L83QcbGiuVFREQukNu7wPr06UNCQgLTpk0DwG63Ex0dzX333ce4ceMqlB8yZAgFBQXMnz/fsa9v377Ex8czY8aMSj/jZJPYN998w4ABFQfblpSUUFJS4lQ+OjpaXWAXyG43+HpTBlO/2c6WjDwAgnw9eejKdvypbys8rZXk74IjsPQFc+4gezlggbihZtdYaLRrL0BEROqUOtMFVlpaypo1a0hKSnLs8/DwICkpibS0tEqPSUtLcyoPkJycfMbypaWlzJw5k5CQEOLi4iotM3nyZEJCQhxbdLS+aKuDh4eFgV2asfD+S/nHsB60iwgkr7icp77YxODpy1iXfqziQQGN4ZqX4d6V5sBoDPh5FrzRHebdA1lbXH4dIiJS/7g1AGVnZ2Oz2YiIiHDaHxERQUZGRqXHZGRknFP5+fPnExgYiK+vL6+99hqLFy8mPDy80nOOHz+enJwcx7Zv374LuCr5LQ8PC9d0bcaXYy7j7yldCPb15NeDudzw1nLGf/oLRwsqGR/U+CK4+T2481tz4kR7Gaz/AP7RB2bdCuk/ufw6RESk/nD7GKCacsUVV7B+/XqWL1/OwIEDueWWW844rsjHx4fg4GCnTaqf1cPCn/q24tuHL+fGHi0wDPhw5T56P/cNw99ZyawV6RzOK3E+qHlPGPEF/CUVOl4LWGDbl/BOMrz3R9hbecufiIjI2bg1AIWHh2O1WsnMzHTan5mZSWRkZKXHREZGnlP5gIAA2rZtS9++fXn77bfx9PTk7bffrt4LkPMSHujDlFvi+OiviXRpHky53eD7bYeZ8NkGej//DbfMSOOj1fsoKrWdOqhFLxjyXxi9CnqMMGeS3vMDvDsQ/nM97F/tvgsSEZE6x60ByNvbm549e5KamurYZ7fbSU1NJTExsdJjEhMTncoDLF68+IzlTz/v6QOdxf16tw5j/n2XkvpQfx4d2J64FiEYBqzcc5RHP/6F3s9/w1Of/8qOrLxTB4XHwnVvwH1roedI8PCEnd/CvwfAf2+EbV+D3XbGzxQREYFa8BTYnDlzGDFiBP/85z/p3bs3U6dO5aOPPmLLli1EREQwfPhwmjdvzuTJkwHzMfj+/fvzwgsvMGjQIGbPns3zzz/P2rVr6dKlCwUFBTz33HNcd911NGvWjOzsbKZPn86sWbNYs2YNnTt3/t06aSJE9zlwvIj/rT/AhyvT2Xe0yLG/c1QwXZuH0CkqmM5RwXSIDCbAxxOO7YHvX4b1H4JxIviEtoJet0P3P0NA5eO+RESk/qlzM0FPmzaNl19+mYyMDOLj43njjTfo06cPAJdffjkxMTG89957jvJz587liSeeYM+ePcTGxvLSSy9xzTXXAFBcXMxtt93GihUryM7OpnHjxiQkJPDEE0+QkJBwTvVRAHI/u93ghx3ZfPDTXr7ZnIn9N39KPSxwdZdm3DegLR0ig+HoLlj5b1j/XyjOMQtZvaHLjdD3HnOuIRERqdfqXACqbRSAapes3GLW7D3Grwdz2XQol18P5pCZe6o7c2DnSO4b0JbOUSFQWgi/fgqr/g0H1506ScylZhBqNxA86u3YfxGRBk0B6AIpANV+WzJyeTN1Bws3HuLkn+BLY8O5LLYJfds0plNUMNaDa+Cnf8Cv8051j4W1gYS/QPxt5qzTIiJSbygAXSAFoLpjW2Yeb367g/m/HOT0P8lBPp4ktA5jQMemDGppI3TDu7Dm/6DkRPeYpx90vckMQ1Hxbqm7iIhULwWgC6QAVPfsOpxP6uYsftp1hJW7j5JXUu54z9PDwiWx4VzfOYRk+w/4rn0Hsn49dXBUD+j+JzMQ+Ya4ofYiIlIdFIAukAJQ3WazG2w+lMsP27OZ/8tBfj2Y63jPz8vK9d2juLvNYVru+AA2fW7OMg3g6QudBpthqNXF4GF10xWIiMj5UAC6QApA9cuOrHy++PkgX/x8kF3ZBY79F7dtzJ3dg7i0+Fus6/8Lh09bZyygKXQYZAaimEvA6uWGmouISFUoAF0gBaD6yTAMVuw+ynvL9vD1pgzHo/Xenh7ENgngytADJJcspu3hxXiVnWo1KvYKIadlMk37DcPS+lK1DImI1FIKQBdIAaj+23+skP/+lM6cVekcKyxzes+LchI9fmWgx0qusq4h3HIqDBX6NMGz2414x99ijh2yWFxddREROQMFoAukANRw2O0G+48VsTkjl60ZeWzJyOXAsSK8PT3w9bLiZ4X2Jb/Q8uCXXEUaIZZCx7E5AW3Ibnsj9q5DaBLVihA/LywKRCIibqMAdIEUgOS38orLmLd6N1uXfUbv/O+4ymM1vhaz5chmWFhqj+Mbz8spbf0H4trFkNimMRc1CVAgEhFxIQWgC6QAJGditxv8uCObpRt20PLgVyQcX0Qn22bH+zbDwlojlu9s8fzs15vgVt3p0SqM7i1D6dI8BF8vjR8SEakpCkAXSAFIqiR7O+VrZ1G6aQH+x7c6vXXAaMzXtl58be/FOjrQPaYpDye3o2erMDdVVkSk+mzPzKPUZqdV4wACfTzP+bicwjJ8vDyq/R+FCkAXSAFIztvxfbBjMbatX8PuJVjLT61of9wIINXenW9sPfHvdBUPXNOD6DB/N1ZWRKTqDMMgbdcR3kzdQdquI479jQO8adnYnzbhgVzWLpzL2zUlxP/UFCLlNjvfbz/MJ2sOsHhzJs+ldOHmXtHVWjcFoAukACTVoqwIdi2BLfMxtn6JpfDUXxQlhicrjU4Utb6KsouuYo+tMZm5xWTmFlNuM2jTJIDYpkG0jQjkoiaB5BaVsT0rj+2Z+WzPyic7v4QWjfyIaRxgbuH+xDQOwNOqhV5FpOrW7D3Gmr1HKSixUVRmo6CknOIyO2EBXrQM8yf6xLb/WBFvpm5n9d5jAHhZLQT5enG0oLTCOa0eFhJiGpHUMYKMnGLmrT9Idv6phayH9IrmxZu6Vet1KABdIAUgqXa2ctj3E2z9kpJf5+OTu8fp7c32aL61dyfV1oP1RlvsVD3INA3yYVifVtzWpyVNgnx+t3xxmY2dh/NpHR6Av/e5N12LSN1hGAZ7jhRSbrNzUZNAPDycH8xYtecor3+znR93ZFfpvN6eHtyaEM3d/S8iKtSPvOIy9h4pJP1oIRsO5JC6OZNtmfkVjmsc4M3g+Obc2LM5naOqf+khBaALpAAkNcowMLK3sf2HjzG2LCS2dBMe2B1vF3uFsjmoH99ZejMvtx3peeBt9TBbhSKCiG0aSHigDweOF7Inu5A9RwrYnV1AYam54r231YNB3ZoxrE9LWjTyx/dEP7uPpwc7DxewdNthvt92mBW7j1BcZsfb6kHv1mH0b9eE/u2bENs0UE+vSbXKLS5j1+ECOjYLwsfz3Md8FJaWYzeo0tiSc7HxQA7//H4X0Y38+Gv/iwjxq90zvReV2li15yjLdmSzJSMPPy8rQb6eBPl6EejrSSN/LxoH+hAe4E14kA9eVg9W7zlK2s4jLN95hIzcYgBC/LxIiAmjd+tGtAwL4L8/7XUEH08PC0kdI2gc6E2Ajyd+XlZ8vDzIzitl37FC9h01ww3A0N4tueuyNkQE+5613ulHCvlmcyZLtx0m0MeTlO7Nubx9E7xqsKVaAegCKQCJSxUehR2psG0R7FgMxTmn3vP0o7z15VjaXYX1oisgrHWlpygtt/PlxkP83/I9rE0/XmkZiwV++3+7n5eVojKb075AH08CfTwJ8LGe+OmJv7cVHy8rvp5WfL088Pe2EujjdeIvYU+C/bzoHh1K09/5C1EalvySct5btpuZ3+8it7iciGAfbr+4Nbf1aUmwb+Who7TczpKtWcxbf4BvNmdhtxtc2SmCW3u35NK24U4tGCXlNrYcMgfh9mjZCKvH2YP7vqOFTPl6K/PWH3TsC/X3YsyAWP7Ut5Xji9kwDHZlF7BsRzaeHh5c3LYxrRoHOJ0rr7iM1M1ZLNxwiMzcYjOABHrTONCHRv5e5JfYOFZQytHCUo7ml2L1sNA5KpiuLULo2jyElmH+Z/yHxvHCUn7en8PP+46zfGc2a/cep9Rmr7TsufC2emD1sFT4fx3M4HNzr2juveIiWjQ6+5hEwzAwDCq0ItUmCkAXSAFI3MZWDulpsGWBueWkO78f2hJa94c2l0N0HwhpUWE26l/2H+e95Xv4dksWBSXllNlO/S9+srXnsnbhXNauCe0jghytQku3HeanXUcoLT+/v2itHhau7BjBn/q2ot9FjZ3+kswrLmNbZh42O4QFeBHq702onxdWDwsZucXsPlzAzuwC9mQX0DTIhyEJ0YT6e59XPRq6rLxi5q07QFGpnW7RIcS1CCUsoOK9LC6zYbFwzi0y5TY7WzLy2HAghxA/Lzo2C6ZlmH+loaOwtJz30/byz6U7HTOte1s9HF/igT6eDO0dzSWxTcgrLiOnyNzSjxSy6NcMjv9mdvaTmof6cUOP5uQWlbF+fw6bD+Y6ztk0yIfr4qK4vkdzOjULdoSLnMIy9h4t4LN1B/jvT3sd/z8M6tqMbZl5bM8yu2lahwdwxyWt2ZaRx5JtWew7WuT02dFhflzStgmdmgXxw/Zslmw7fN7/rwAE+3oSFepHsK8XwX6eBPt6UWqzs+FADnuPFFYoHxXiy8Vtw+nRqhHlNju5xeXkFZeTV1zG8cIysvNLOFJQypH8EvJLyunSPIR+FzUmsU04PVs1wtNqYeOBHFbtOcrK3cfYnpVHv4sac+8VbX83+NQlCkAXSAFIagXDgMyNsGUh7PoO9q8Ce7lzmaAoiE4ww1CriyGyG3g4Ny+X2ewUl5kDG4N9vc762GlxmY0Dx4soKCknv6ScgpKTgyFtJ85x6lx5xWaZvOIysnJL2HTo1JIhMY39SeoYQfrRQjZn5Fb4Mjnp9C/F0/l7WxnauyWjLmlNVKgfhmHw68Fcvtx4iK9+zeRoQSltmwbSLiKQdhFBxDYNonmoH02CfPDzPnV9hmFwOL+EfUcL2Xe0iGOFpY4vjbzicorKbFgtFqwep7ZOUcEMjm9eabeLzW6wcvdRdmcXkFNURu6JL++84nLKbXbK7QY2u0G53cBqgUBfLwJPtKQF+XrRtXkIfdqEVfuYK8MwSNt5hP+u2MvXv2ZSbnf+a71VY386RAZRUGJzDLbPLS7Hx9ODS2PDubJTBH/oEOEYO1Zus5N+tJCdhwvYcCCHtXuPsS79GAWlzi0Ifl5W2kUG0aKRH7lFZRzJL+Vogbmd/O/aOjyAB5JiSe4cyRc/H+RfP+yqdGzI6ZoG+TA4PoqU7s3xsFiYvTKdz9YdILe4vELZUH8vDANyik6Fptimgfh6Wdl7pKDCMZfGhvPYwA50aR5Cuc3OnNX7eG3xNrLznQfxels9SGjdiDKbwdq9xyrcU4A2TQL4Y7coOkcFc6yglCMFpWTnl3C8sIwAHyth/t40CvAmLMCb4jIbGw7ksGF/DptPtFqdTevwALq1CKFXq0ZcEtuEmMZnbjGSUxSALpACkNRKJflm69CuJbDnR8jYAMZvmrT9w+GiP0DbAebPwKYuq962zDw++Gkvn649QF5JxS+qZiG++HpZOVpQ6vRlZfWw0CrMn9bhAbRqHMDyneY4BzCb56/o0JQtZwlRvxXo40mTIB88PSzsO1ZIcVnV/5Ue4G1lcPfmDOvTkk7Ngtl8KI956w/wv/UHyMwt+f0TnIWX1UKPlo24pG043Vs2ws/bHJ/l7emBl9WD7NMC2/5jhRwtKMXXy2ouzeLtgZ+XlXK7QXGZjcJSc9uZlc+u7ALHZ/Rs1YjoRn78sj/Haf/ZWCzQtXkIhaU29h4pcGo5PCnIx5Nu0SHkFZezNSOPkrO0gLQM8+f+AbGkxEc5PZ1otxss2ZbFe8v3kpVbTIifF8F+XoT4edHI34v+7ZqSeFHjCi1LxWU2Fm44ROrmLCKCfYmLDiE+OpSWYf6U2QyWbjvMZ+v2883mrAotM02CfGgfEcRf+7fh0tgmFeqaX1LOP5fu5Ift2XRpHszlJ+oQcCIE55eUs2LXEX7Yns3WjDx6tmrEoG7N6BAZdF6hpLTczo6sfMf/C7nFZeQWlWE3oEvzYLo1D3V6fFzOnQLQBVIAkjqhtBAOroN9K8xtz49Q+pt/WYe0hKg4aBYHzeKheU/wr9lJGAtLy/l8/UE2HsyhdXggHZsF0TEymEandcOU2+zkFJVRWGojMsTXaVCkYZhfZjOW7uSnXUcd+329PLiifVMGdomkTXggOw7nsS0zn+0nujEyc4srDTseFmgW4kd0mB+NA30IPjF4NNjXE18vK4YB5XYDu2FQWFrOlxsz2HX4VGhoGuRDVt6p0HNyIGmov5ej+yLQxxMfTw88T4y18PSwUG4zTrSimS1l2fmlrNh9hP3Hzi3IVVWAt5WU7s0Z1qcVnaJO/b2VU1jGLweOsz0znxA/LyKCfYkI9qFpkC8Hc4r4ZlMmizdn8sv+HKfz+XlZadMkgHYRQfRo1YherRrRLiLIEUxsdoPd2QVsycglI6eYRv7ehAV60/hEi0dUiJ9bxorkFJXx/bbDeHt60KqxPy3D/PWUYwOiAHSBFICkTiovhf0rzQHVO76BjF8qlrF4mCEo9ipom2SGIo/aO3fQuvRjfLcli47NgunfvslZv8gMw6Cg1MbhvBIO55VQWm4nOsyPZiF+eHue+zWenOTtgxXpfLUxg3K7gbfVgwEdmzqeYqnKk0y/PffeI4X8uCObH7dns+NwPqXldkrL7ZSU2ygttxMW6E2LUH+iw/yIbuRPeJAPpeV2ispsFJWa3Y9WDwv+Xlb8vM0t1M+b/u2bXNDTUhk5xazYfYRG/t5c1DSQZsG+tXqwq0hlFIAukAKQ1AtFx80QdOhnczu4Do7scC4T0MQMRJHdoFk382doywoDqxuqrLxiNh3MpXvLRrX+UWkRUQC6YApAUm/l7Ddbh7YvNscS/bbLDMAvDKJ7n9j6QFQP8K4/T4mISP2lAHSBFICkQSgvhQNrzNahjA2Q8TNkbQH7bx5B9vCEpp2geQ+ztSiqBzTpAFaNqxCR2kUB6AIpAEmDVV4CGRtPDazetwLyDlUs5x0IrfpB68vMLaJrrR5LJCINgwLQBVIAEjnBMMxus4Nr4cBas8Xo4HoozXMu59cIWiae1m3WHbz83FJlEWm4FIAukAKQyFnY7ZD1K+xaCru/h73LKo4l8vCEyK4ntm4Q0QUiOoOv/n8SkZqjAHSBFIBEqsBWdtp8RCvNn/mZlZcNu8hsJWqRYG5NO2kskYhUGwWgC6QAJHIBDAOOp5vdZZkbzTFFmRsh90DFsp5+5mP3IS0gNBpCoqFJe7M7LSDc9XUXkTqtKt/f+qeXiFQviwUatTK3Ljec2l941BxHtH+l2VJ0YA2U5EL2VnP7rfB2ZhBq1c98+izsIg20FpFqUytagKZPn87LL79MRkYGcXFxvPnmm/Tu3fuM5efOncuTTz7Jnj17iI2N5cUXX+Saa64BoKysjCeeeIKFCxeya9cuQkJCSEpK4oUXXiAqKuqc6qMWIBEXsNvh2G7I2QfH95mDrY+nw6H1kLWpYnnvIHOyxmbx5niiRq3M1qPg5uBxfjMzi0j9Uqe6wObMmcPw4cOZMWMGffr0YerUqcydO5etW7fStGnFhRyXL1/OZZddxuTJk/njH//IrFmzePHFF1m7di1dunQhJyeHm266iTvvvJO4uDiOHTvGmDFjsNlsrF69+pzqpAAk4maFR82FX/cuN8cUZWyA8uLKy3p4ml1okV2hxYnxRVHxegpNpAGqUwGoT58+JCQkMG3aNADsdjvR0dHcd999jBs3rkL5IUOGUFBQwPz58x37+vbtS3x8PDNmzKj0M1atWkXv3r3Zu3cvLVu2/N06KQCJ1DK2crOb7NDP5mP42dvg+F6z5ei3EzeCGYqadISw1tAo5tTWuK05zkhdaSL1Up0ZA1RaWsqaNWsYP368Y5+HhwdJSUmkpaVVekxaWhpjx4512pecnMy8efPO+Dk5OTlYLBZCQ0Mrfb+kpISSklOrPefm5p77RYhIzbN6mt1eEZ0h/rZT++02yMuAoztPjC9aZW75mZC5wdx+y9MXGsdCeCw07QgtekHzXnpEX6SBcWsAys7OxmazERER4bQ/IiKCLVu2VHpMRkZGpeUzMjIqLV9cXMxjjz3G0KFDz5gGJ0+ezNNPP30eVyAibuVhhZDm5tb6MnOfYZjjijJ/hWN74dieE9tuOLrL7Eo7GY5+PXkiixmuWiSYP0OiTz2Z5hvinmsTkRpVr58CKysr45ZbbsEwDN56660zlhs/frxTq1Jubi7R0dGuqKKIVDeLxRwcHVpJd7et3Ow6y95udqNlbDDHGB3faz6qn7mx4jG+IeZ8RRFdILKLuexH0w7gHVDz1yIiNcatASg8PByr1UpmpvOkaZmZmURGRlZ6TGRk5DmVPxl+9u7dy7fffnvWvkAfHx98fHzO8ypEpM6wekLji8yt/cBT+/MyzEfz96+Eo7vNp9Fy9kPRUSjOMQdkp/+mWz4o6sS52ppb+IlutdBWeipNpA5wawDy9vamZ8+epKamkpKSApiDoFNTUxk9enSlxyQmJpKamsoDDzzg2Ld48WISExMdv58MP9u3b+e7776jcePGNXkZIlLXBUVCp+vM7XQl+Wb3WeavZpfZyUkdCw5D3kFz2/OD8zFWb3POovC2ENYGGrU2f4a11iP7IrWI27vAxo4dy4gRI+jVqxe9e/dm6tSpFBQUcPvttwMwfPhwmjdvzuTJkwEYM2YM/fv3Z8qUKQwaNIjZs2ezevVqZs6cCZjh56abbmLt2rXMnz8fm83mGB8UFhaGt7e3ey5UROoen0Cz2yuyCzDk1P7Co+Z4oiM7zC17+6nX5cVweLO5/ZaHl9k11yjGnMeocVtzrbRm3TTWSMTF3B6AhgwZwuHDh5k4cSIZGRnEx8ezaNEix0Dn9PR0PE57ZLVfv37MmjWLJ554ggkTJhAbG8u8efPo0qULAAcOHODzzz8HID4+3umzvvvuOy6//HKXXJeI1GP+YebWopfzfrvNHICdvR2O7DRD0tFd5gDsY3vNR/aP7jS33wprY07y2Lit89IgIS00p5FIDXD7PEC1keYBEpFqZ7eZ66Ed23Pq6bTDW8y5jXL2nfk4i8epJ9RaJJiTPYa10VxGIpWoUxMh1kYKQCLiUgVHIONnOPSLGYxy9p/Y9kFpfsXyFg/wD4eAJuaisUGRZstRk/YQ3t4MSJ7q7peGp85MhCgiIkBAY7joD+Z2OsOA3INwYPWJp9RWw8F1YCuBgixzq8zJ5UGCW0BwlLmFtDDHHoW1McchWb1q/LJEajMFIBGR2spiOTXRY6fB5j5bORRmm0+iFRyGgmyza+3wNnO5kMNbzVajkxNAVnpeqxmCQlqAXyPwCz3xM8x8Wq1JBzMoKSRJPaYAJCJSl1g9zS6voMrnSjNbjQ6YcxnlHjRf5x40u9SOnpwNu+jEwOzdZ/4cDy9znqPwdubPsDantqBmZjgTqcMUgERE6hOLxWzZCWlR+fuGAXmHzKfU8jOh6BgUHTd/FmabT7Ad3gplBeYg7cOVLEvkHXhi4sd2p7bGF5ldbJohW+oIBSARkYbEYjk1LuhM7PYT3WpbzCVDTrYcHd1ltiyV5ptjkQ6uq3hsUDOzlSi4OQQ2NbeApmaLVZP2aj2SWkMBSEREnHl4mPMQhUZD7JXO79nKzECUvdUMR4e3mT+P7TZbkfIOmduZ+Iaaa6s17WiOQ/INOW0LNQeEBzRRS5LUOAUgERE5d1YvaNLO3H6r8KgZhI7sMkNQQRbkn9hyD5jdbsXHIX25uZ2Np58ZhIKbQeNYc2mRxifWW2vUWo/5ywVTABIRkepxcobs5j0rf7+sGI5sh6zN5vpq+VnmYrPFx82fRcfNcUjlxeZA7Zx0c9u3wvk8Fg9z0dnTF6Nt0sHcAsLVxSbnRBMhVkITIYqIuIlhQGnBqUf8c9Ihe4cZnE6uuVbZ5JAn+TUyg1BoS3O8UXCU+TOomfm4v2+o2d2mFqR6STNBXyAFIBGRWsowzKfXTi4+e2TnibFIW0/Me3SOX2le/qcGbIe1NrvVGsVAUMSJGbabgpdvDV6I1ATNBC0iIvWTxXJqHqSYS5zfKysyW4myt5nLiOQegryD5s+T3W0lOSfKFp55YdqTfILNFqRGMadtrU8tVOurfyDXZQpAIiJSP3j5QbNu5nYmdhuU5JpPrJ0+OeSx3eYitSdn2LaVmuUO51Y+FxKY3Wmh0eaSIwHhpx75D2wCoTFmy5J/WE1cqVQDBSAREWk4PKwnlv1oZHZ/tb6sYhnDMFuLCg6bLUnH9phB6eTyIjn7zABVfBwyjkPGhjN/nl8jCLvIHJMUEA7+jU9sYWYrUqPWGrjtJgpAIiIip7NYTqyPFmo+dl+Zkjw4vs+cGDLv0KmWo5OP/R/bbe4vOmYuZntg9Zk/zzvwVNeab4jZ9eYbbP4MijSfeGvUCgIjFJSqkQKQiIhIVfkEQUQnczuT0oITXWw7ze62wqNQeMTcCrJPrNd2wHyqLXODuZ2Np6/ZkhTWxmxVanziZ2AEePubA7u9/M2uQA9r9V5vPaQAJCIiUhO8AyCyi7mdSVmxGYSO7TZDUkmeOfaoONfshss7ZI5Nyt1vzo+UfWLm7bM6MVA8JNpcEy40GoKizLFJJ59wC2xqds814BYlBSARERF38fI988zap7OVnTYeaZfZsnTkxFNshUfNp9rKCk8UNk4tSbJ/5ZnP6elrrtkW0twcyB3c7ERAamKOSzr52r9xvWxRUgASERGp7axeJ7q+2sBFf6i8jN1uthKV5Jpdazn7zXFKOftOjFPKNscnFRw2B3CXF//+VABgzrzt3/hUy9HJxXSDo8yWJf/Gp8Ys+Qab3XB1oGVJAUhERKQ+8PAwxwJ5+5tdYGdakgSgvARyD54KSjn7IS/DXIqkIPvUgO6iY2DYTw3yzvr19+th9T41VqlRa/NnUAR4B5ljp3wCzZ9+YeZrN1EAEhERaWg8fcx5isJan72crfxEKDr5hFvmieB00GxVyj1wYkqAXLPlybCbcyidnKn7bBJHQ/Jz1XdNVaQAJCIiIpWzep6aefv3GIY5Dqkg+9RYpWMnJposOAKleVCSbw70Ls03W4HcSAFIRERELpzFYj755h1gzlvUpv/Zy7t5KVIPt366iIiINExuHiitACQiIiINjgKQiIiINDgKQCIiItLgKACJiIhIg6MAJCIiIg2OApCIiIg0OG4PQNOnTycmJgZfX1/69OnDypVnWbgNmDt3Lh06dMDX15euXbuycOFCp/c//fRTrrrqKho3bozFYmH9+vU1WHsRERGpi9wagObMmcPYsWOZNGkSa9euJS4ujuTkZLKysiotv3z5coYOHcqoUaNYt24dKSkppKSksHHjRkeZgoICLrnkEl588UVXXYaIiIjUMRbDcN9UjH369CEhIYFp06YBYLfbiY6O5r777mPcuHEVyg8ZMoSCggLmz5/v2Ne3b1/i4+OZMWOGU9k9e/bQunVr1q1bR3x8fJXqlZubS0hICDk5OQQHB1f9wkRERMTlqvL97bYWoNLSUtasWUNSUtKpynh4kJSURFpaWqXHpKWlOZUHSE5OPmP5c1VSUkJubq7TJiIiIvWX2wJQdnY2NpuNiIgIp/0RERFkZGRUekxGRkaVyp+ryZMnExIS4tiio6Mv6HwiIiJSu7l9EHRtMH78eHJychzbvn373F0lERERqUFuWw0+PDwcq9VKZmam0/7MzEwiIyMrPSYyMrJK5c+Vj48PPj4+F3QOERERqTvcFoC8vb3p2bMnqamppKSkAOYg6NTUVEaPHl3pMYmJiaSmpvLAAw849i1evJjExMRqrdvJceEaCyQiIlJ3nPzePqfnuww3mj17tuHj42O89957xqZNm4y77rrLCA0NNTIyMgzDMIw///nPxrhx4xzlly1bZnh6ehqvvPKKsXnzZmPSpEmGl5eXsWHDBkeZI0eOGOvWrTMWLFhgAMbs2bONdevWGYcOHTrneu3bt88AtGnTpk2bNm11cNu3b9/vfte7rQUIzMfaDx8+zMSJE8nIyCA+Pp5FixY5Bjqnp6fj4XFqmFK/fv2YNWsWTzzxBBMmTCA2NpZ58+bRpUsXR5nPP/+c22+/3fH7rbfeCsCkSZN46qmnzqleUVFR7Nu3j6CgICwWSzVc6Sm5ublER0ezb98+PWJfw3SvXUf32nV0r11H99p1quteG4ZBXl4eUVFRv1vWrfMANUSaY8h1dK9dR/fadXSvXUf32nXcca/1FJiIiIg0OApAIiIi0uAoALmYj48PkyZN0mP3LqB77Tq6166je+06uteu4457rTFAIiIi0uCoBUhEREQaHAUgERERaXAUgERERKTBUQASERGRBkcByIWmT59OTEwMvr6+9OnTh5UrV7q7SnXe5MmTSUhIICgoiKZNm5KSksLWrVudyhQXF3PvvffSuHFjAgMDufHGGyssqitV98ILL2CxWJzW5tO9rj4HDhzgT3/6E40bN8bPz4+uXbuyevVqx/uGYTBx4kSaNWuGn58fSUlJbN++3Y01rptsNhtPPvkkrVu3xs/Pj4suuohnn33WaS0p3evz8/3333PttdcSFRWFxWJh3rx5Tu+fy309evQow4YNIzg4mNDQUEaNGkV+fn611E8ByEXmzJnD2LFjmTRpEmvXriUuLo7k5GSysrLcXbU6benSpdx777389NNPLF68mLKyMq666ioKCgocZR588EG++OIL5s6dy9KlSzl48CA33HCDG2td961atYp//vOfdOvWzWm/7nX1OHbsGBdffDFeXl58+eWXbNq0iSlTptCoUSNHmZdeeok33niDGTNmsGLFCgICAkhOTqa4uNiNNa97XnzxRd566y2mTZvG5s2befHFF3nppZd48803HWV0r89PQUEBcXFxTJ8+vdL3z+W+Dhs2jF9//ZXFixczf/58vv/+e+66667qqeA5rxAqF6R3797Gvffe6/jdZrMZUVFRxuTJk91Yq/onKyvLAIylS5cahmEYx48fN7y8vIy5c+c6ymzevNkAjLS0NHdVs07Ly8szYmNjjcWLFxv9+/c3xowZYxiG7nV1euyxx4xLLrnkjO/b7XYjMjLSePnllx37jh8/bvj4+BgffvihK6pYbwwaNMi44447nPbdcMMNxrBhwwzD0L2uLoDx2WefOX4/l/u6adMmAzBWrVrlKPPll18aFovFOHDgwAXXSS1ALlBaWsqaNWtISkpy7PPw8CApKYm0tDQ31qz+ycnJASAsLAyANWvWUFZW5nTvO3ToQMuWLXXvz9O9997LoEGDnO4p6F5Xp88//5xevXpx880307RpU7p3786//vUvx/u7d+8mIyPD6V6HhITQp08f3esq6tevH6mpqWzbtg2An3/+mR9//JGrr74a0L2uKedyX9PS0ggNDaVXr16OMklJSXh4eLBixYoLroNbV4NvKLKzs7HZbI5V7k+KiIhgy5YtbqpV/WO323nggQe4+OKL6dKlCwAZGRl4e3sTGhrqVDYiIoKMjAw31LJumz17NmvXrmXVqlUV3tO9rj67du3irbfeYuzYsUyYMIFVq1Zx//334+3tzYgRIxz3s7K/U3Svq2bcuHHk5ubSoUMHrFYrNpuN5557jmHDhgHoXteQc7mvGRkZNG3a1Ol9T09PwsLCquXeKwBJvXHvvfeyceNGfvzxR3dXpV7at28fY8aMYfHixfj6+rq7OvWa3W6nV69ePP/88wB0796djRs3MmPGDEaMGOHm2tUvH330ER988AGzZs2ic+fOrF+/ngceeICoqCjd63pOXWAuEB4ejtVqrfA0TGZmJpGRkW6qVf0yevRo5s+fz3fffUeLFi0c+yMjIyktLeX48eNO5XXvq27NmjVkZWXRo0cPPD098fT0ZOnSpbzxxht4enoSERGhe11NmjVrRqdOnZz2dezYkfT0dADH/dTfKRfukUceYdy4cdx666107dqVP//5zzz44INMnjwZ0L2uKedyXyMjIys8KFReXs7Ro0er5d4rALmAt7c3PXv2JDU11bHPbreTmppKYmKiG2tW9xmGwejRo/nss8/49ttvad26tdP7PXv2xMvLy+neb926lfT0dN37KhowYAAbNmxg/fr1jq1Xr14MGzbM8Vr3unpcfPHFFaZz2LZtG61atQKgdevWREZGOt3r3NxcVqxYoXtdRYWFhXh4OH8VWq1W7HY7oHtdU87lviYmJnL8+HHWrFnjKPPtt99it9vp06fPhVfigodRyzmZPXu24ePjY7z33nvGpk2bjLvuussIDQ01MjIy3F21Ou1vf/ubERISYixZssQ4dOiQYyssLHSUufvuu42WLVsa3377rbF69WojMTHRSExMdGOt64/TnwIzDN3r6rJy5UrD09PTeO6554zt27cbH3zwgeHv72/897//dZR54YUXjNDQUON///uf8csvvxiDBw82WrdubRQVFbmx5nXPiBEjjObNmxvz5883du/ebXz66adGeHi48eijjzrK6F6fn7y8PGPdunXGunXrDMB49dVXjXXr1hl79+41DOPc7uvAgQON7t27GytWrDB+/PFHIzY21hg6dGi11E8ByIXefPNNo2XLloa3t7fRu3dv46effnJ3leo8oNLt3XffdZQpKioy7rnnHqNRo0aGv7+/cf311xuHDh1yX6Xrkd8GIN3r6vPFF18YXbp0MXx8fIwOHToYM2fOdHrfbrcbTz75pBEREWH4+PgYAwYMMLZu3eqm2tZdubm5xpgxY4yWLVsavr6+Rps2bYzHH3/cKCkpcZTRvT4/3333XaV/P48YMcIwjHO7r0eOHDGGDh1qBAYGGsHBwcbtt99u5OXlVUv9LIZx2nSXIiIiIg2AxgCJiIhIg6MAJCIiIg2OApCIiIg0OApAIiIi0uAoAImIiEiDowAkIiIiDY4CkIiIiDQ4CkAiIiLS4CgAiYicgyVLlmCxWCos9ioidZMCkIiIiDQ4CkAiIiLS4CgAiUidYLfbmTx5Mq1bt8bPz4+4uDg+/vhj4FT31IIFC+jWrRu+vr707duXjRs3Op3jk08+oXPnzvj4+BATE8OUKVOc3i8pKeGxxx4jOjoaHx8f2rZty9tvv+1UZs2aNfTq1Qt/f3/69evH1q1ba/bCRaRGKACJSJ0wefJk3n//fWbMmMGvv/7Kgw8+yJ/+9CeWLl3qKPPII48wZcoUVq1aRZMmTbj22mspKysDzOByyy23cOutt7JhwwaeeuopnnzySd577z3H8cOHD+fDDz/kjTfeYPPmzfzzn/8kMDDQqR6PP/44U6ZMYfXq1Xh6enLHHXe45PpFpHppNXgRqfVKSkoICwvjm2++ITEx0bH/L3/5C4WFhdx1111cccUVzJ49myFDhgBw9OhRWrRowXvvvcctt9zCsGHDOHz4MF9//bXj+EcffZQFCxbw66+/sm3bNtq3b8/ixYtJSkqqUIclS5ZwxRVX8M033zBgwAAAFi5cyKBBgygqKsLX17eG74KIVCe1AIlIrbdjxw4KCwu58sorCQwMdGzvv/8+O3fudJQ7PRyFhYXRvn17Nm/eDMDmzZu5+OKLnc578cUXs337dmw2G+vXr8dqtdK/f/+z1qVbt26O182aNQMgKyvrgq9RRFzL090VEBH5Pfn5+QAsWLCA5s2bO73n4+PjFILOl5+f3zmV8/Lycry2WCyAOT5JROoWtQCJSK3XqVMnfHx8SE9Pp23btk5bdHS0o9xPP/3keH3s2DG2bdtGx44dAejYsSPLli1zOu+yZcto164dVquVrl27YrfbncYUiUj9pRYgEan1goKCePjhh3nwwQex2+1ccskl5OTksGzZMoKDg2nVqhUAzzzzDI0bNyYiIoLHH3+c8PBwUlJSAHjooYdISEjg2WefZciQIaSlpTFt2jT+8Y9/ABATE8OIESO44447eOONN4iLi2Pv3r1kZWVxyy23uOvSRaSGKACJSJ3w7LPP0qRJEyZPnsyuXbsIDQ2lR48eTJgwwdEF9cILLzBmzBi2b99OfHw8X3zxBd7e3gD06NGDjz76iIkTJ/Lss8/SrFkznnnmGUaOHOn4jLfeeosJEyZwzz33cOTIEVq2bMmECRPccbkiUsP0FJiI1Hknn9A6duwYoaGh7q6OiNQBGgMkIiIiDY4CkIiIiDQ46gITERGRBkctQCIiItLgKACJiIhIg6MAJCIiIg2OApCIiIg0OApAIiIi0uAoAImIiEiDowAkIiIiDY4CkIiIiDQ4/w9X9Zt3d8phJgAAAABJRU5ErkJggg==\n" + "image/png": "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4Gqhcc10krVohBCi6Vm1akWVnbFr8u67i5g+fWoDR9T4pKWlMnhwX9LSUr0dSrWkoHGD0EpdTtJCI4QQQniaFDRuEOyrly4nIYQQwotkt203CPU1cPzU/ZxU1bWblhBCnGNUVcXs4Y0dTToNSi1/ps6ZMwu93sDjjz9VcezJJx/DZDIxbtwEFi58k4MHD6Ao0LNnb2bOnE14eHi94tu9eydvvfU6CQkHCAkJ5frrb+SKK64CID09nRdemMvu3TsxGk2MHHkJ99zzADqdjoSEg7z88vMkJBwgICCQyy+fxC233F6rZ2ZkpPPKKy+wefNGQkJCGTduAjfddCtarZZVq1awYsVyevToyddff0FAQAC33HI7EyZcAYDT6eSzzz7mm2++Iicnm27dunP//Q/Trl17APLycnn11fls2LAek8nEpZdextSpd1U8+/fff+Wrrz4nJyebvn3789hjTxEYGFivHLqDFDRuEOJnIPXEGBrFXopizkP1CfVyVEII4V6qqnLbZzvYmVro0efGNw/knWvja1XUjBw5mnnznsZut6PT6bBaraxfv44nnniKGTPu55prruepp54hPT2D5557mo8/fo/773/4rGM7cuQw9957J9dccx2zZj3Bnj27efnl5wkJCWPo0OG89tqL+Pj48t57n5CXl8vjj8+gVas2TJo0mWeemUOPHj2ZPXsux44d5fHHZ9C5cxcGDRp82meqqspjj82gffsOvPfeUrKzs5k//zk0Gg0333wbAPv27cHHx5dFi/7L3r17eOmleURFRdO//0Dee+8dli//ikceeYyYmFiWLv2ABx+8h08//RofHx9mzXoIrVbLggWLKC0tZc6cWYSHh3PBBUMA+P77lTz11HM4nSqPPfYwS5d+wJ133nPWOXQXKWjcINTPgBU9WYQSQS7awmPYpaARQpyDGnvb88CBF6CqTrZu3Uz//gPZuHEDRqORzp27ctNNt3Httdej12uJjGzGsGEj2LdvT72et2LFN3Ts2Ilp0+4GIDa2NUeOHOaTTz5k6NDhpKWl0alTZ6KjmxET05L5818nIMDVmpGensqQIUOJjm5G8+YteO21t2nWrPkZn7llyybS09NYvPh9NBoNsbGtufvu+3nuuacqChqNRsMTTzxFSEgobdu2Z/v2rfzvf1/Tr98Avvrqc6ZNu5vBg4cC8Mgjj3P11Zfz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" }, "metadata": {}, "output_type": "display_data" @@ -695,6 +811,10 @@ "collapsed": false, "pycharm": { "name": "#%%\n" + }, + "ExecuteTime": { + "end_time": "2023-11-24T07:36:53.368099800Z", + "start_time": "2023-11-24T07:36:51.800819200Z" } } }, @@ -769,4 +889,4 @@ }, "nbformat": 4, "nbformat_minor": 0 -} \ No newline at end of file +}