{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# CFL Package Quick Start\n", "\n", "A handy set of commands that can be copy and pasted to run CFL quickly. \n", "\n", "We recommend running `cfl` from within either a python script (i.e. a `.py`\n", "file) or a Jupyter Notebook. A python script can be easier to run quickly and\n", "better enforces reproducibility, but a Jupyter Notebook is more interactive." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. Import CFL" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from cfl.experiment import Experiment" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Load your data as a numpy array " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(500, 20)\n", "(500, 3)\n" ] } ], "source": [ "# generate random data (replace this with your actual data)\n", "n_samples = 500 \n", "\n", "import numpy as np\n", "X = np.random.random((n_samples, 20)) # X data has 20 features\n", "Y = np.random.random((n_samples, 3)) # Y data has only 3 features \n", "\n", "# print the data shape \n", "# both data sets should be in the shape (n_samples, n_features)\n", "print(X.shape)\n", "print(Y.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. Create parameter dictionaries " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Create 3 dictionaries: one for data info, one with CDE parameters, and one with cluster parameters\n", "\n", "# the parameters should be passed in dictionary form \n", "data_info = {'X_dims' : X.shape, \n", " 'Y_dims' : Y.shape, \n", " 'Y_type' : 'continuous' #options: 'categorical' or 'continuous'\n", " }\n", "\n", "# pass in empty parameter dictionaries to use the default parameter values (not \n", "# allowed for data_info)\n", "CDE_params = { 'model' : 'CondExpMod',\n", " 'model_params' : {\n", " # model architecture\n", " 'dense_units' : [50, data_info['Y_dims'][1]],\n", " 'activations' : ['relu', 'linear'],\n", " 'dropouts' : [0, 0],\n", " # training parameters\n", " 'batch_size' : 32,\n", " 'n_epochs' : 30,\n", " 'optimizer' : 'adam',\n", " 'opt_config' : {'lr' : 1e-4},\n", " 'loss' : 'mean_squared_error',\n", " 'best' : True, \n", " # verbosity\n", " 'verbose' : 1,\n", " 'show_plot' : True,\n", " }\n", "}\n", "\n", "# cluster_params consists of specifying two clustering objects\n", "# CFL automatically recognizes the names of all sklearn.cluster models as keywords\n", "cause_cluster_params = {'model' : 'KMeans', \n", " 'model_params' : {'n_clusters' : 4},\n", " 'verbose' : 0\n", "}\n", "effect_cluster_params = {'model' : 'KMeans', \n", " 'model_params' : {'n_clusters' : 2},\n", " 'verbose' : 0\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4. Set up the CFL pipeline " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "save_path 'sample_run' doesn't exist, creating now.\n", "All results from this run will be saved to sample_run/experiment0000\n", "Block: verbose not specified in input, defaulting to 1\n", "CondExpBase: activity_regularizers not specified in input, defaulting to None\n", "CondExpBase: kernel_regularizers not specified in input, defaulting to None\n", "CondExpBase: bias_regularizers not specified in input, defaulting to None\n", "CondExpBase: kernel_initializers not specified in input, defaulting to None\n", "CondExpBase: bias_initializers not specified in input, defaulting to None\n", "CondExpBase: weights_path not specified in input, defaulting to None\n", "CondExpBase: tb_path not specified in input, defaulting to None\n", "CondExpBase: optuna_callback not specified in input, defaulting to None\n", "CondExpBase: optuna_trial not specified in input, defaulting to None\n", "CondExpBase: early_stopping not specified in input, defaulting to False\n", "CondExpBase: checkpoint_name not specified in input, defaulting to tmp_checkpoints\n" ] } ], "source": [ "# block_names indicates which CDE and clustering models to use \n", "block_names = ['CondDensityEstimator', 'CauseClusterer', 'EffectClusterer']\n", "\n", "# block_params is aligned to block_names\n", "block_params = [CDE_params, cause_cluster_params, effect_cluster_params] \n", "\n", "results_path = 'sample_run' # directory to save results to \n", "\n", "# Create a new CFL experiment with specified parameters\n", "my_exp = Experiment(X_train=X, \n", " Y_train=Y, \n", " data_info=data_info, \n", " block_names=block_names, \n", " block_params=block_params, \n", " results_path=results_path)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5. Train the CFL model on the data " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "#################### Beginning CFL Experiment training. ####################\n", "Beginning CondDensityEstimator training...\n", "No GPU device detected.\n", "Train on 375 samples, validate on 125 samples\n", "Epoch 1/30\n", "375/375 [==============================] - 4s 11ms/sample - loss: 0.7946 - val_loss: 0.7318\n", "Epoch 2/30\n", "375/375 [==============================] - 0s 766us/sample - loss: 0.7251 - val_loss: 0.6690\n", "Epoch 3/30\n", "375/375 [==============================] - 0s 1ms/sample - loss: 0.6614 - val_loss: 0.6112\n", "Epoch 4/30\n", "375/375 [==============================] - 0s 1ms/sample - loss: 0.6032 - val_loss: 0.5587\n", "Epoch 5/30\n", "375/375 [==============================] - 0s 511us/sample - loss: 0.5502 - val_loss: 0.5111\n", "Epoch 6/30\n", "375/375 [==============================] - 1s 2ms/sample - loss: 0.5022 - val_loss: 0.4678\n", "Epoch 7/30\n", "375/375 [==============================] - 1s 1ms/sample - loss: 0.4581 - val_loss: 0.4289\n", "Epoch 8/30\n", "375/375 [==============================] - 0s 1ms/sample - loss: 0.4192 - val_loss: 0.3931\n", "Epoch 9/30\n", "375/375 [==============================] - 0s 922us/sample - loss: 0.3832 - val_loss: 0.3610\n", "Epoch 10/30\n", "375/375 [==============================] - 0s 1ms/sample - loss: 0.3511 - val_loss: 0.3318\n", "Epoch 11/30\n", "375/375 [==============================] - 0s 964us/sample - loss: 0.3223 - val_loss: 0.3055\n", "Epoch 12/30\n", "375/375 [==============================] - 0s 884us/sample - loss: 0.2961 - val_loss: 0.2821\n", "Epoch 13/30\n", "375/375 [==============================] - 0s 899us/sample - loss: 0.2731 - val_loss: 0.2610\n", "Epoch 14/30\n", "375/375 [==============================] - 1s 1ms/sample - loss: 0.2521 - val_loss: 0.2424\n", "Epoch 15/30\n", "375/375 [==============================] - 0s 1ms/sample - loss: 0.2340 - val_loss: 0.2257\n", "Epoch 16/30\n", "375/375 [==============================] - 0s 1ms/sample - loss: 0.2176 - val_loss: 0.2113\n", "Epoch 17/30\n", "375/375 [==============================] - 1s 2ms/sample - loss: 0.2034 - val_loss: 0.1990\n", "Epoch 18/30\n", "375/375 [==============================] - 0s 941us/sample - loss: 0.1917 - val_loss: 0.1878\n", "Epoch 19/30\n", "375/375 [==============================] - 0s 985us/sample - loss: 0.1809 - val_loss: 0.1786\n", "Epoch 20/30\n", "375/375 [==============================] - 0s 1ms/sample - loss: 0.1718 - val_loss: 0.1710\n", "Epoch 21/30\n", "375/375 [==============================] - 0s 1ms/sample - loss: 0.1644 - val_loss: 0.1644\n", "Epoch 22/30\n", "375/375 [==============================] - 0s 874us/sample - loss: 0.1580 - val_loss: 0.1589\n", "Epoch 23/30\n", "375/375 [==============================] - 1s 1ms/sample - loss: 0.1528 - val_loss: 0.1544\n", "Epoch 24/30\n", "375/375 [==============================] - 0s 770us/sample - loss: 0.1483 - val_loss: 0.1508\n", "Epoch 25/30\n", "375/375 [==============================] - 0s 970us/sample - loss: 0.1448 - val_loss: 0.1478\n", "Epoch 26/30\n", "375/375 [==============================] - 0s 709us/sample - loss: 0.1420 - val_loss: 0.1453\n", "Epoch 27/30\n", "375/375 [==============================] - 0s 1ms/sample - loss: 0.1396 - val_loss: 0.1434\n", "Epoch 28/30\n", "375/375 [==============================] - 0s 635us/sample - loss: 0.1377 - val_loss: 0.1417\n", "Epoch 29/30\n", "375/375 [==============================] - 0s 1ms/sample - loss: 0.1361 - val_loss: 0.1405\n", "Epoch 30/30\n", "375/375 [==============================] - 0s 733us/sample - loss: 0.1349 - val_loss: 0.1393\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Loading parameters from tmp_checkpoints23032022103422/best_weights\n", "Saving parameters to sample_run/experiment0000/trained_blocks/CondDensityEstimator\n", "CondDensityEstimator training complete.\n", "Beginning CauseClusterer training...\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 500/500 [00:00<00:00, 7144.49it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "CauseClusterer training complete.\n", "Beginning EffectClusterer training...\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "EffectClusterer training complete.\n", "Experiment training complete.\n" ] } ], "source": [ "results = my_exp.train()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 6. Visualizing Results \n", "\n", "Refer to the [Macrostate Visualization](https://cfl.readthedocs.io/en/latest/examples/basic_visualizations.html)\n", "notebook for a more detailed example of how to visualize domain-generic CFL results." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxUAAAK4CAYAAAAC6NCOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAABnjklEQVR4nO3debhkVX3v//e3GRu6m55AQEYFUYgD0AxqFJSYxEgMCEQcrmISiYCKVzFqftGYeAXUODMkBJQYgjHqFaNGDQ7ghF4a0IDaikMjIigN3UADMp3v74+9D119uqq6plNVq+v9ep56dlXttff+9jkfirNq7bV3ZCaSJEmS1Ks5oy5AkiRJUtnsVEiSJEnqi50KSZIkSX2xUyFJkiSpL3YqJEmSJPXFToUkSZKkvnTUqYiIEyIiGx7/0eF2V8zY7vB+itVkiYhtI+KvI+KaiLgjIu6sn/91RGzT4T7MroYmIraJiKdFxOsi4mMR8fOGDF3W5b7MroYmInaNiFdGxCcj4vqIuCcifhsRN0TEf0TEH3W4H3OroYmIwyPibyPiPyPiBxFxa0Q8EBG315l6a0TsOOo6J0WvIxV/HBHbtWsQEXsBh/a4fwH1fwwZESuHcKyV9bHeOtvH6kRE7AZcDbwdeBKwAJhfP387cE1E7NrDrs3uEExwdv8K+BrwD8CfAnsMcN9mdwgmMbsRcSxwA/BB4HnAXsBcYCtgN+A44HMR8amImNvl7s3tEExibmv/ALwV+GPgccBSYHNgEVWm/hZYERHPHVWBk6SXTsWdwNZUHzLtvKShvdSxiNgC+AzwGOA+4HVU/2PbrX5+X73uM3XbTpldDcuDwHeBfwbWDGB/ZlezaR4QwE3AmcAzgUcC2wPPAi6r2x0F/EsX+zW3mm2/BM4HXgo8BdgdeARwIPA24A5gO+ATEfH4URU5KXrpVHyiXv6vVg0iIoAX1y8/3sMxNNn+AnhC/fzPM/M9mXlj/XgP8Of1uic2PO+E2dVs+zTwu8CCzNw/M0+k+p9av8yuZtPNVJ+lu2fmmzLzq5n5q8xclZlfAo4AvlC3PS4iDu5wv+ZWsyozj8rMl2fmRzLzisz8RWb+JjOvzsy3AH8AJLAF8NrRVrvp66VTcRHVL+hpEbFHiza/C+wJrAU+1VtpmmCn1MtrM/PfZq6s37u2fnlyF/s1u5pVmXlNZn4zM+8d8K7NrmZNZn4xMz+UmQ+1WD8F/H8Nbz27w12bW41UZn4HuK5+uWyUtUyCXjoVPwe+QTVU+uIWbaa/lfi/wN3tdhYRm9cTbd4dEcsjYnU9yea2iPhGPeFx204Ki4g/ridH3hAR99YTdf4nIv45In6v/kaksf165wVGxAsj4ksR8euImIqI981ov31EnB4R34tq0vC9EfHTev/7baS23SPivXU9d0XE/RHxq4j4bkScFxFHN7Q9PCKS6lxAgN1nTGDbYNJnROwcEX8ZEZ+u/12/jWqi3c8i4iMRcUiLui6sj7V7/dbfNjnWCU222zwi/iwivhARt9T/nlsj4r8j4kUzf9adiog9gemfZbsJftPrHl9v0wmza3ZnLbuzzOya3VFn9/sNz3fucBtza25HnVuAB+rlb2f5OMrMjT6AE6i+bUiqiYcvr5//qEnbrYDV9frfAw5v2PbwJu1PbVjf6rGCali2VX2LgUs72M/CGdutrN//O+DfmrR/X0PbZ1CdG91q3w8Cr2lR32FU38K0q21tQ/vDN9I2gctmHGP1RtpPAW9qUtuFHRzrhBnb7EZ1vni7bf4L2LaTfM3Y97EN+/i9Nu1+r6Hd88yu2W3xGFp22/yOp39Xl3W53QkNNe2B2TW7Q85uk+NPH+ed5tbctniMW273qX/eCZwzG8fw0fDz7vCXckLDL38PYCFVjy+Bg2e0Pa5+/yaqkZDGwB/eZN+vAD4L/BlwCFUPeCnVOfWvo5qEk8AVLWrbEvhOwzH+rT7mI6gmmR0C/DVwPa0/JKaP8SHgIGAJ1VUEnlK327vhP/LbgJPq/1B2oLriwHUNxz9uxjHmUF1VI4GfUH0r82iqD7bHUJ2reibw/YZtNqOaOHd6vd0N9evGx9wZx1kOvAv4fapv+pfWv6vfpzqvdbq+P5yx3Vb1/qZrPL3JsTZvaL+g/ncksIrqHMXH1pnYG3gjcE+9/qKuA1kNsU/X+qg27R7d0O6vza7ZZcTZbZPB6d/VZV1udwJm1+yOMLszav7fDf+eo8ytuWVMc1v/nvekOj36pnr/a4BdZuO/DR8NP/sOf0EnNIRsj/q9j9evPzij7Wfq999Zvz6cNh8SHRx7Z9b1qp/RZP0bG/b/mjb7mQPEjPdWNmz7jjbbXlK3uRd4YpP1C4Ef1W1uBrZsWPf4hmNssO1G/u1vrbdb2fcvGt5R7+vyFuunfxZv3ch+PlC3uxPYp0WbxlGEZV3W+d6Gbee1aTe/od27za7ZHXV22xx3ur7LutzO7JrdkWa3Yd+LgVunfy6NP2tza27HIbdUHZps8bgCeNwg/5vw0fzRzx21P1Ivj4/6sp4RsT3whzPW9yUzf0U1VAnVpe1menW9vDwz39dmP1NZJ6+J1aw7H3E9ETH97QLAuZn5vSb7XkP1YQWwI3Bkw+rNG57f1Kq+IZi+DOBTo8Mbx81Un6s6fbWlv8/MHzVrl9XVQr5Sv3xRl4dpPB+23fmPjRNh53V5DLO7bt9rMLsP6zO7w2B21+17DWb3YbOV3YiYA/wr1bfZAK/NzPu73I25XbfvNZjbhw0itwfO2Tb3Yqu79mIrWjwO3YutfrB3bJ2tHhHxhY0fSRuz+cabtPQFquGspVQfDJ8BXlDv87uZeV2bbddTh/ZlwHOpeuqLqYbZZtpnxnb7AjvVL7u5dvZMX8nMVn/APoV1E9rbXe7us1R/6M4FnkY16QyqbySm3/+XiPjfmfnjPmptKSKWUV2OdfpazfPYcDL+ZlTDqdfSvacA0x8wl0dEuz/m/4fqWufdXm1hGJNkze76zO76es3uMJjd9Znd9c1Gds8Epu+m/Y+Z+X/bNW7B3K7P3K6vr9zemQ/xvs1372XThx354I+XbryVNqbnTkVmPhAR/w68kurGNZ9h3VUc/rXT/UTE3sAXqc5/25jtZrx+dMPz73Z6zCZ+1mZdY1J/0KpR/fO4nurczt0b3r8nIt4EvI/qg/mPIuJHwNep7rz7pcy8uY/aAYiI/0N1Lmgnf5TP/Dl2qvFD+v91uM32XR5jbcPzrWe8btR4V9dWbZoyu+szuy11m91ZZ3bXZ3ZbGkh2I+K1wOvrl58FXtXLfszt+sxtS73lNiC26PP7yAe7PGTEC6nmyzyBqvO1Avgw1QjVVIf72AJ4OtXv+qlUWVhCdarhFcBZmXnZbNcxSP2c/gTrhiz/OCKeTNXLfAi4uJONI2Izqh76nlSXkns71ZUPdqP69mF+/fhovcnMTtCChud39VD/tHvarJvf8Hxjf7xO19C4DZn5fuBo4NtU5/ftQ/UNwUeAX0bEZyLiMV1V3CAink81wTmoPnxeRDX5anuqn9F8qm90pvXamezlw2XrLtuvani+Q5t2jetu6/IYYHZnMrsb6ja7w2J212d2N9R3diPiz4B/qF9eRjWpuMs/vdZjbtdnbjc0rp+564mIs6km+S+j+hleSjWR/iyqO3dv1uGuDgO+RDWBfXfgKqp7tdwOHAN8NSL+fgh1DEw/pz+RmVfWveh9qG5yA3BpZt7S4S4OA36nfn5sZjY9py1aX3e68YNhfos2/Wo8xjza3x13enhvgw+szLwEuKQ+j/QpVDf8+SNgX6pzKp8aEQdk5soeapy+Wdy3qCa3bdA7nT6PtU+NH5LzM7OrEYIONZ53+ShafyvU+E3Vim4PYnY3YHYLYXY3YHYHLCKOA86j+sPz/wF/3OaUn46Y2w2Y2wGJCOZsPpzbC0XEMVRXlboFeHpmXl+//wjgq1QdwlcC7+9gd1PAJ4H3Z+bXZxzn+VQdhjdHxFcz86uzWMfA9DtSAeuGLh8143UnnlQvV7f6gKg9vsX7P2myr0Fb2fB831aNImJzqh7izG3Wk5m3ZuanM/P1mbkf1XmlU8Ai4DU91vikevkfbYa7Wv0Mu9H4B/6TWjXq01UNz5vegKd2aMPza3o8ltnF7BbK7GJ2Z0NEPJvqj5nNqC5/+uwB/kFobjG3hXtTvXzD9B/yAJn5a6rTkADeWF/goK3M/EpmHjuzQ1Gv+xjVfUGg+Y0jB1bHIA3iYBdRDdFB1eO+pIttpydXtRyiiYin0uL8ycz8AfCr+uVLujhuN66g+o8YquGoVp7DuvP8v9HpzjPz31l3C/nHzVg9fRfIjQ1hbfTnyLrzV1vp5FiXA/fVz1+2kf31JDN/zro7tx7Xpun0umvrbXphditmtzxmt2J2Bygink71zekWVH+EPyszbx/gIcxtxdwOUkBsMaevR0eHidgFOBC4nyYT8TPzcqqrdu3I+l989mr6C9NdRlxHx/ruVGTmDVQ97scBj8/MducbzjTdk10QEc+YuTIiFgDnbGQfH6iXh0dEy0lkETEnovtbwWfmb6gmlQGcHBG/M7NNRGxHdV1nqIaiPtuw7pHtrnoQEXOprq0NG84NmH69ff3NRivTP8fnNvs3RsRLqa4F3c70sXZu1SAz7wQuqF+eUA+/tRQRCyJip3ZtWji7Xj4xIl7QZL8voJqUBBvPR0tm1+y20kd2h8Lsmt1Wes1uRBxI9TOfS3WDt9/r4tSkjphbc9tKL7mNiF2jx0ve9mj/evn9zLy3RZsrZ7Ttx971cubk/GHX0bGBDItk5k8yc0X9gdGNL7DunMOPRsRLImK3iNgxIo6lmqj0O6x/nv1M72XdlQU+EBH/GhGHRcT2EbE0IpZFxF8BP6T3qxi8nmpi2FyqiTN/WYd5+4g4kuqbhukrHZya61/D+1lUk6vOj4jnRcReEbGo3v45VBNrpi9l9lHWN30q0FbA30fEzhGxRURsHutPwPlYvTwMuDgiDoyIJRHxhIh4D9V/2C2vRDHjWEdFxO9HxHb1cTaf8cHz11S/jznAxyPigvrn/Yj637V3RBwTEecDN1Jd0aBb51NdYg7gwxHxmojYpX68hurKBgDfY92HVk/MrtkdZHYjYquIOLTxwbpvBhc0Wdczs2t2B5XdiHgsVS4WUN2H4SjgtoiY1+Ixt93+2jG35naAn7lHAD8nYM7m0dejQ9OjYO2y+4sZbXsSETtS3UgSqtHDkdTRtezsToUnMOMOmZ0+2MgdMoHjqS7m1ewuiA9RXcLuwvr1ZS2OsYTq6hSt7qY4/Vg4Y7uVdHBXyLrtM6hu895q3w9SfUC0+9m1e5zR4rjfbNH+soY221B9ULba93XAwRv5PfwO1VBls+1PmNF2J6oPxk7+Xc/tJi8Nx9iNdXcdbfb4EbCb2TW745RdYI8O951Aml2zOw7ZZd3dmDt9NM2EuTW3Q87tCUDuvfnW+d877NfXA1jewfH+uq7zojZt3l63+adu/i0z9rE51VWhkuoywiOpo5fHUCdwNJPVOYKHUQ0BrqY6R+yXwH9QzWj/YAf7uI3qP+LjqM7R/FW9n9uobtryT1Q3Vml3JYaNHeOrVMO2Z1B9i76W6o7PP6Pq2T8pq0vBzfQfVFdreB/VNyk3Uv3HeC/wY6oPwCdn5puabAvVFR/eRfXNQdOh4qyGkA8H/o7qSkj3Uf1br6G6dNzBwG828u+7jup6yf+X6uf3QJu2N1PdsOdoqvP5fkH1s7ifapjuq1R3DN07M/+z3XHbHOMXwAF1/d+lOv/2rvr5/wccULcZGbNrdktlds1uicytuZ3hU8CfTt+nop8HsDQiljc8TmxyvOkhjeyyzm79I9UozI00n6Q9rDq6FnWPRpIkSSrKY7acm+fssFdf+3jWTdddlZlt7+gdEa+mukTrJZl5dIs27wdeDbw7M0/rto6G7de7VOyw6+hVX/epkCRJkkYlhnefipX1cvc2bXad0bZjEfFuqo7ArcARzToUw6ijHyM//UmSJEkac9fUy/3aXKzgoBltOxIR76S6s/ZtVJdybjdZftbq6JedCkmSJJVpMHMqNiozbwSuBrakyX20IuIwqntK3EJ1z5LOyo84k+qqYaupOhTfG0Udg2CnQpIkSdq4M+rlOyLi4YkcEbED6+6TcmY23K08Is6IiBURcQYzRMTbgDdQXS3sWZnZ6chC13UMg3MqJEmSVKb6PhXDkJmfiIhzgZOAayPiS1RXvzqC6j4vlwBnzdhsJ6p7k6x3c7+IeC7wN/XLnwCviub3XFyRmWcOoI5ZZ6eiB0u22Tp3XdjyppdD8b2bb1uVmduPtAgVZ6u5i3Ob+Y8c2fHvuesm7rv39uF8+muTMXfe0lyweLeR1vCbG6/xM1ddW7j55rnjlluOtIYf3Xuv2R2gzDw5Ir4BnEJ1iePNqC7P+yHg3C5GBxY3PF9WP5q5HDhz5psDrGNg7FT0YNeF87j0L5470hp2eNuHu70bqcQ28x/JM57/qZEd/6sfa3r1O6mtBYt344V/9bWR1vC+V833M1dd23HLLfnnvR470hqefu01m3R2A4jNhvtdVWZeDFzcYdsTWHd37Mb3L6S698hQ6hgG51RIkiRJ6osjFZIkSSpTwJwhj1SoOUcqJEmSJPXFkQpJkiQVKog5jlSMA0cqJEmSJPXFkQpJkiSVKSA28zvyceBvQZIkSVJfJrJTEREvjIivR8QdEbE2IpZHxCkRMZE/D5XB3KpUZlelMrtS5ybu9KeIOBs4Gfgt8GXW3db8LOCIiDguMx8aYYnSBsytSmV2VSqzW4bAS8qOi4nqaUfEMVQfELcAT8jMIzPzaGBv4IfA0cArR1iitAFzq1KZXZXK7Erdm6hOBfCmevmGzLx++s3M/DVwUv3yjQ5rasyYW5XK7KpUZrcUATEn+npoMCbmP4aI2AU4ELgf+PjM9Zl5OXATsCNw6HCrk5oztyqV2VWpzK7Um4npVAD718vvZ+a9LdpcOaOtNGrmVqUyuyqV2S1KMGez/h4ajEnqVOxZL29o0+YXM9pKo2ZuVSqzq1KZXakHk3T1p3n18u42bdbWy/kzV0TEicCJALtst+1gK5Na6yu3sH52587beXCVSe0N7DN3/qJdB1uZ1N7AsvuILbYYbGXaQASEow1jYZJGKqYTl71snJnnZeayzFy2ZJutB1iW1FZfuYX1s7vV3MUDKkvaqIF95s6dt3SAZUkbNbDsLtx8kr671aSbpLTfVS/ntWkzve6uNm2kYTK3KpXZVanMbmFiziR9Rz6+Jum3sLJe7t6mzfQY+8o2baRhWlkvza1Ks7Jeml2VZmW9NLtSFyZppOKaerlfRMxtcUWHg2a0lUbN3KpUZlelMrslqe9TodGbmJGKzLwRuBrYEjhu5vqIOAzYherumVcMtzqpOXOrUpldlcrsSr2ZmE5F7Yx6+Y6I2Gv6zYjYATinfnlmZk4NvTKpNXOrUpldlcrsFsP7VIyLSTr9icz8REScC5wEXBsRXwIeAI4AFgCXAGeNrkJpQ+ZWpTK7KpXZlbo3UZ0KgMw8OSK+AZwCHAZsBqwAPgSc67cOGkfmVqUyuyqV2S1DOKdibExcpwIgMy8GLh51HVI3zK1KZXZVKrMrdW4iOxWSJEnaNHifivHgb0GSJElSXxypkCRJUpmcUzE2HKmQJEmS1BdHKiRJklQo7zUxLhypkCRJktQXRyp6MGf+ArZ95u+Ntoi3fXi0x1eRdt1hig+86rcjO/4ffdXLuqt7C+fDHx+22UhreN9Ij65S5Z6P5f6LvjnaIp64zWiPP8u8T8X4cKRCkiRJUl8cqZAkSVKxvE/FePC3IEmSJKkvjlRIkiSpTM6pGBuOVEiSJEnqiyMVkiRJKlQ4UjEmHKmQJEmS1BdHKiRJklQsRyrGw0SNVETEPhFxakRcFBErImIqIjIijh11bVIr5lalMrsqldmVujdpIxUnAaeOugipS+ZWpTK7KpXZLUR1R+2J+o58bE3ab+E64F3A84G9gMtHW47UEXOrUpldlcrsSl2aqJGKzDy/8XWE5+Bp/JlblcrsqlRmtyxzNvP3Mw4mbaRCkiRJ0oBN1EiFJEmSNiHhfSrGhSMVkiRJkvpip0KSJEnFijlz+np0fbyIF0bE1yPijohYGxHLI+KUiOhqZ71eujgiLqzbtXqs6PofNQCe/tShiDgROBFg10csHXE1Uucas/vInXcacTVSZxpzu8NOu464GqlzZnfTFhFnAycDvwW+DDwAHAGcBRwREcdl5kMd7q7fSxd/E/hJk/dv7mOfPbNT0aHMPA84D+CAfR6VIy5H6lhjdp/wO/uZXRWhMbf77HeAuVUxzO5wVfepGM6ciog4hqpDcQvw9My8vn7/EcBXgaOBVwLv73CX05cuXg5cBVwAHNZFSedn5oVdtJ9VdiokSZKkjXtTvXzDdIcCIDN/HREnAZcBb4yID2bm1MZ2tqldutg5FZIkSSpWzIm+Hh0dI2IX4EDgfuDjM9dn5uXATcCOwKED/OcVw5EKSZIkqb396+X3M/PeFm2uBB5Zt/3WEGp6RkQ8AZgH/Br4BnBpJ6Mks8FOhSRJkgoVPV3BqQd71ssb2rT5xYy2s+0lTd77QUQcn5nXDqmGh01UpyIiDgDOaXhr33p5ekScNv1mZk7ksJXGk7lVqcyuSmV2J87SiFje8Pq8esJ9o3n18u42+1lbL+cPrLLmvks1sfvLVJ2cBcABwNuBJwJfiogDMvOmWa5jPRPVqaD6oR/S5P29h12I1AVzq1KZXZXK7JZiMFd/WpWZyzZ+JABGfkWvzHzfjLfuBj4XEZcCl1PN6XgT1ZWohmaiOhWZeRnrQiEVwdyqVGZXpTK7auKuejmvTZvpdXe1aTNrMvP+iDgD+DTwR8M+/kR1KiRJkrQpGdqcipX1cvc2babvdriyTZvZNn037UcO+8BeUlaSJElq75p6uV9EzG3R5qAZbUdhSb1c27bVLLBTIUmSpHJF9PfoQGbeCFwNbAkct2EJcRiwC9Xdtq8Y4L+uW39aL68c9oHtVEiSJEkbd0a9fEdE7DX9ZkTswLqrhZ3ZeJ+IiDgjIlbUcx36FhFPiogjI2KzGe9vHhGvBV5dv/XeQRyvG86pkCRJUpFiMFd/6khmfiIizgVOAq6NiC8BDwBHUF0x7BLgrBmb7QTsUy/X0+Oli/cAPgXcHhE/Bn5JdQnbxwM7A1PAGzLzi739K3tnp0KSJEnqQGaeHBHfAE4BDgM2o5oc/SHg3C7vZt3LpYu/B7wfOJhq0vj+VJe5/SXwYeDszLyqixoGxk5FD266dyF/8/0/GXUZUtfuz634+QN7jPT4Urfmrr6RJ3zyVaMuQ+ratvf+hqdc+75Rl7HJG9LVnx6WmRcDF3fY9gTghBbrLqPLSxdn5s+B13SzzbA4p0KSJElSXxypkCRJUpkihjanQu05UiFJkiSpL45USJIkqVjDnlOh5vwtSJIkSeqLIxWSJEkqlnMqxoMjFZIkSZL64kiFJEmSijTMO2qrPUcqJEmSJPVlYjoVEbFFRBwREe+OiG9HxM0RcX9E3BQRn4iIw0ddozSTuVWpzK5KZXZLEzBnTn8PDcQknf50GHBp/fwW4CrgbmBf4BjgmIh4W2a+ZUT1Sc2YW5XK7KpUZlfqwSR1z6aATwJPz8ydMvPIzHx+Zj4eOB54CHhzRDxjpFVK6zO3KpXZVanMbmEioq+HBmNiOhWZ+ZXMPDYzv95k3ceAC+uXLx5qYVIb5lalMrsqldmVejNJpz9tzDX1cpeRViF1x9yqVGZXpTK74yS8o/a48Lewzt718uaRViF1x9yqVGZXpTK7UhOOVAARsSNwQv3ykyMsReqYuVWpzK5KZXbHUXifijEx8SMVEbE5cBGwHfDlzPzMiEuSNsrcqlRmV6Uyu1J7jlTAPwJHADfSZtJVRJwInAgwf9Guw6lMaq2j3ML62X3ETmZXI9f1Z+4u2207nMqk9rrO7q5LFg6lsIkWeK+JMTHRv4WIeD/w51TXoT4iM29p1TYzz8vMZZm5bO68pUOrUZqpm9zC+tlduMjsanR6/cxdss3codUoNdNrdpcusEOsyTGxIxUR8W7g1cCtVB8Q14+4JGmjzK1KZXZVKrM7/pxTMR4mcqQiIt4JvBa4DXhWZv5gxCVJG2VuVSqzq1KZXalzEzdSERFnAq8HVlN9QHxvxCVJG2VuVSqzq1KZ3TIEQcREfkc+dibqtxARbwPeAKyh+oC4pv0W0uiZW5XK7KpUZlfq3sSMVETEc4G/qV/+BHhVRNNz8FZk5plDK0xqw9yqVGZXpTK7hQnAORVjYWI6FcDihufL6kczlwN+SGhcmFuVyuyqVGZX6sHEdCoy80LgwhGXIXXF3KpUZlelMrtSbyamUyFJkqRNT3jzu7Hgb0GSJElSXxypkCRJUrG8+d14cKRCkiRJUl8cqZAkSVKZIsCb340FfwuSJEmS+uJIRQ8WzofnPG20/bH3jvToKtVUBvc8sMVIjy91a85WW7LNo3YfdRlS1x7cZjtWHfTcEVfx1yM+/uxzTsV4cKRCkiRJUl8cqZAkSVK5vE/FWPC3IEmSJKkvjlRIkiSpSBFBhHMqxoEjFZIkSZL64kiFJEmSyuWcirHgb0GSJElSXxypkCRJUrG8T8V4mKiRioh4VUT8R0T8MCJui4gHIuLWiPhSRLw4nOmjMWRuVSqzq1KZXal7kzZS8QZgB+A64FvA3cDuwDOBI4BjI+J5mTk1uhKlDZhblcrsqlRmtxQREBP1HfnYmrROxfHANZl5d+ObEbEf8GXgT4CXAh8eQW1SK+ZWpTK7KpXZlbo0UV27zPzGzA+I+v3vA2fXL5813Kqk9sytSmV2VSqzW5g50d9DAzFRnYqNeLBe/nakVUjdMbcqldlVqczuhIuIF0bE1yPijohYGxHLI+KUiO7Ow4qIfSLi1Ii4KCJWRMRURGREHDvMOgZl0k5/aioi9gReUb/8zChrkTplblUqs6tSmd3xNMy/oSPibOBkqk7ll4EHqObZnAUcERHHZeZDHe7uJODUMahjICayUxERLwMOA7YAdgGeQjVqc0ZmfmqUtUmtmFuVyuyqVGZXjSLiGKo/5G8Bnp6Z19fvPwL4KnA08Erg/R3u8jrgXcBy4CrgAqq8DbuOgZjITgXwVKoJVtMeBN4MvGc05UgdMbcqldlVqczuuAuGOS/iTfXyDdN/yANk5q8j4iTgMuCNEfHBTq4MlpnnN77u4krFA61jUCZyTkVm/kVmBrANsB/wPuCtwLcjYudm20TEifW5asvXrF41tFqlab3kFtbP7h1rbh1KrVKjfj9zV921wXxZaSj6ze7tq1cPrVbNrojYBTgQuB/4+Mz1mXk5cBOwI3Dopl5HMxPZqZiWmfdm5g8y8/VUvb4nUp2L1qzteZm5LDOXLVy0dKh1So26yW3d/uHsbrdw+6HVKc3U62fu0vnbDrVOaaZes7t40aKh1jmZgpgzp69Hh/avl9/PzHtbtLlyRtvZMC51bGCiOxUzTF9r+o8jYouRViJ1ztyqVGZXpTK7k2nPenlDmza/mNF2U65jA3Yq1llDda7k5sDi0ZYidWwN5lZlWoPZVZnWYHbHS0R/j87Mq5ftzsdcWy/n9/xvKaeODUzqRO1mnk7181gDOGlCpTC3KpXZVanM7qZnaUQsb3h9XmaeN6PNdO8jh1RTK+NSxwYmplMREU8DdgM+kZn3zVj3VKrLeAFcMOzr+kqtmFuVyuyqVGa3MAF0Pi+ilVWZuWwjbe6ql/PatJled1ebNv0alzo2MDGdCuDRVOdBnhURV1Nd23d+/f6+dZvPUV0qThoX5lalMrsqldlVMyvr5e5t2uw6o+2mXMcGJqlTcTnwNuBpwGOobmATVB8WnwQuysxLRlad1Jy5VanMrkpldovS1byIflxTL/eLiLktrrx00Iy2m3IdG5iYTkVm/hx4y6jrkLphblUqs6tSmV01k5k31iNXBwDHAR9pXB8Rh1Hddf0W4IpNvY5mvPqTJEmSijWk+1QAnFEv3xERez18/IgdgHPql2c23sU6Is6IiBURcQaD03UdwzAxIxWSJElSrzLzExFxLnAScG1EfAl4ADgCWABcwoY3RdwJ2KdericiDmBdJwDWzdk5PSJOazjuenfG7rGOWWenQpIkSWUKIIZ34k1mnhwR3wBOAQ4DNgNWAB8Czu1ydGABcEiT9/cech0DYadCkiRJ6lBmXgxc3GHbE4ATWqy7jHX3nZjVOobBToUkSZIKFTBnKFd/0kY4UVuSJElSXxypkCRJUpECiCHOqVBrdip68MBDc7jljq1HXYbUtZtvvocz/s/VIz2+1K2p++/n3ht+OeoypK7d95Of85M/esGoy5CGwk6FJEmSyhQ4p2JMOF4kSZIkqS+OVEiSJKlQMdT7VKg1fwuSJEmS+uJIhSRJksoVzqkYB45USJIkSeqLIxWSJEkq1xy/Ix8H/hYkSZIk9WWiOxURcXpEZP04bdT1SJ0yuyqV2VWJzO0Yi/rqT/08NBAT+5OMiIOAvwJy1LVI3TC7KpXZVYnMrdSZiexURMRWwIXAr4FPj7YaqXNmV6UyuyqRuS3EnOjvoYGYyE4F8PfAvsArgDtGXIvUDbOrUpldlcjcSh2auE5FRBwCvA64ODM/M+p6pE6ZXZXK7KpE5rYgzqkYCxP1k4yIrYF/AW4HTh1xOVLHzK5KZXZVInMrdW/S7lPxdmAf4PjMXDXqYqQumF2VyuyqROa2JN5ReyxMzEhFRDwFeA1wSWZ+bMTlSB0zuyqV2VWJzK3Um4kYqYiIucCHgTuBk3vcx4nAiQBLHrHb4IqT2hh0drea+4jBFSe10W92G3O7y3bzBluc1MKgP3MfsfkWgytOzUV4R+0xMSm/hdOBxwCvzcybe9lBZp6Xmcsyc9mChdsPtjqptYFmd4utFg22Oqm1vrLbmNsl2249+Oqk5gb6mbvdZhPx3a0ETMhIBXA0MAW8NCJeOmPdY+vlSRFxJPCTzPyLoVYntWZ2VSqzqxKZ2xI5p2IsTEqnAqpRmcParH9U/Vg4lGqkzpldlcrsqkTmVurBRJz+lJl7ZGY0e1BdMg7g9fV7TxphqdJ6zK5KZXZVInNbKO9TMRb8SUqSJEnqyySd/iRJkqRNiVd/Ghv+FiRJkiT1ZeJHKjLzBOCEEZchdc3sqlRmVyUyt2PMqz+NBUcqJEmSJPVl4kcqJEmSVDCv4DQW/C1IkiRJ6osjFZIkSSpUOKdiTDhSIUmSJKkvjlRIkiSpTIH3qRgTdip6sOihWznmrvNGWsOLR3p0lWrPR87hX09fMLLjP+d5fvCre/cu3JXv/sn7RlvEW0b7ma8yPbTnvqz5l++MtohD/FNPw2HSJEmSVKQE0jkVY8GvDSVJkiT1xZEKSZIkFSq8T8WY8LcgSZIkqS+OVEiSJKlcjlSMBX8LkiRJkvriSIUkSZKK5dWfxoMjFZIkSZL6YqdCkiRJUl8mqlMRERdGRLZ5rBh1jdJM5lalMrsqldktSNSXlO3n0fUh44UR8fWIuCMi1kbE8og4JaK3GePd7m9c8zmpcyq+Cfykyfs3D7sQqQvmVqUyuyqV2dV6IuJs4GTgt8CXgQeAI4CzgCMi4rjMfGhI+xurfE5qp+L8zLxw1EVIXTK3KpXZVanMbgmGNFE7Io6h6gDcAjw9M6+v338E8FXgaOCVwPuHtL+xyudEnf4kSZIk9ehN9fIN0x0AgMz8NXBS/fKNXZwGNej9jVQRRUqSJElNzZnT36MDEbELcCBwP/Dxmesz83LgJmBH4NBh728cTOrpT8+IiCcA84BfA98ALs3MqdGWJbVlblUqs6tSmV1N279efj8z723R5krgkXXbbw1hf2OVz0ntVLykyXs/iIjjM/PaoVcjdcbcqlRmV6Uyu2MvhnXzuz3r5Q1t2vxiRtvZ3t9Y5XPSTn/6LvBqYD+qXt3OwJHA94B9gS9FxCObbRgRJ9aX+Fp+6x1rh1SuBPSRW1g/u7evXj2EcqWHfZcBfOauWb1qSOVKD/suA8junWtuHVK5GoJ59fLuNm2m/0CcP8v7+y59/F0wWyaqU5GZ78vMD2bmDzLz7sy8OTM/BxwMfBvYgXWTZmZue15mLsvMZdtvN69ZE2lW9JPbevuHs7t40aJhlS0N7DN34aKlwyxbGlh2FyzcfphlT6ZgEPepWDrdEawfJ7Y4EkAOsPKe9tfv3wWzZaI6Fa1k5v3AGfXLPxplLVKnzK1KZXZVKrO7yVo13RGsH+c1aXNXvWz3zfL0urvatJmt/Y08n5M6p6KZ6bsPDn24SOqDuVWpzK5KZXbHTA7niqsr6+XubdrsOqPtMPc3bWT5dKRinSX10gkTKom5VanMrkpldifTNfVyv4iY26LNQTPaDnN/00aWTzsV6/xpvbxypFVI3TG3KpXZVanM7liJ6o7a/Tw6kJk3AlcDWwLHbVBFxGHALlR3x75i2PtrMLJ8TkynIiKeFBFHRsRmM97fPCJeSzWLHuC9w69Oas7cqlRmV6Uyu2pjer7COyJir+k3I2IH4Jz65ZmN94mIiDMiYkVEnMGGetnf2OZzkuZU7AF8Crg9In4M/JLqEl2Pp7oU1xTVbdK/OLIKpQ3tgblVmfbA7KpMe2B2izKkORVk5ici4lzgJODaiPgS8ABwBLAAuAQ4a8ZmOwH71MtB7G8PxjSfk9Sp+B7wfqrLbe1OdXfCpPplfBg4OzOvGl15UlPmVqUyuyqV2VVLmXlyRHwDOAU4DNiManL0h4Bzu72bdQ/7G9t8TkynIjN/Drxm1HVI3TC3KpXZVanMboGGc0fth2XmxcDFHbY9AThhgPsb23xOzJwKSZIkSbNjYkYqJEmStImJmL4rtkbM34IkSZKkvjhSIUmSpCIlkEOeU6HmHKmQJEmS1BdHKiRJklQu51SMBTsVPbh/6wX8cp/fH3UZUtd+tXoL/vZjO4z0+FK3tn3oDp685j9HXYbUtflrb+SZ33jdqMuQhsJOhSRJkoqVOKdiHDheJEmSJKkvjlRIkiSpUEE6p2Is+FuQJEmS1BdHKiRJklQuRyrGgr8FSZIkSX1xpEKSJEllCu+oPS4cqZAkSZLUl4nsVETE3Ij4q4i4MiLWRMQ9EfHziPh4RDx11PVJzZhblcrsqlRmd/xlffWnfh4ajIk7/Ski9gT+G9gL+A1wOXAfsAfwJ8D3gG+Oqj6pGXOrUpldlcrsSt2ZqE5FRGwLXAo8Gngb8LbMfKBh/RJgyYjKk5oytyqV2VWpzG5hnFMxFiaqUwH8DdUHxEcy8y0zV2bmbcBtQ69Kas/cqlRmV6Uyu1KXJqZTERFbAi+vX545ylqkTplblcrsqlRmtzzOixgPE9OpAA6kGqq8MTN/GBFPAY6s37sF+EJmXjHKAqUmzK1KZXZVKrMr9WCSOhWPr5fXR8SFwEtnrH9LRHwS+F+Zee9QK5NaM7cqldlVqcxuUYLEORXjYJLGixbXy6cDLwH+geqKDouoruJwE3AMcPZIqpOaM7cqldlVqcyu1INJ6lRM/1s3By7IzNdn5k8zc01m/idwFJDASyPiUTM3jogTI2J5RCy//fbbh1e1Jl1fuYX1s/vbu51XqKEZ2GfuqjV3Dq9qaYDZve1uBzKGwftUjIdJ+kne1fD8n2euzMzlwFVUP5PDm6w/LzOXZeayxYsXz1wtzZa+clu3eTi7W2/rFRA1NAP7zF26cMGsFSk1MbDsLtl27qwVKY2bSepUrGx4/vMWbabf33F2S5E6trLhublVSVY2PDe7KsnKhudmd9wF1X0q+nloICapU3F1w/NWX9curZdrZ7kWqVPmVqUyuyqV2ZV6MDGdisy8CfhO/fKImesjYhFwQP1y+bDqktoxtyqV2VWpzG5pgmROXw8NxqT9JN9eL98SEU+afjMitgbOBbajOk/S609rnJhblcrsqlRmV+rSJN2ngsz8TET8A3Aa8J2I+A5wG3AwsDPVZeJekJk5wjKl9ZhblcrsqlRmtxwJpPMixsKkjVSQma8Hngd8k+oGN38E3AO8B9g/M68fYXlSU+ZWpTK7KpXZlbozUSMV0zLzU8CnRl2H1A1zq1KZXZXK7JbBe02MB38LkiRJkvoykSMVkiRJ2jQkzqkYB45USJIkSeqLIxWSJEkqVDinYkz4W5AkSZLUF0cqJEmSVCzvUzEe7FT0IAkeys1GXYbUtZ0WT/GmF949suNf+R9TIzu2yvXQ5lty19JHjboMqWsPLNyRXz339aMt4nXvH+3xNTHsVEiSJKlIiVd/GhfOqZAkSZLUF0cqJEmSVKbw6k/jwt+CJEmSpL44UiFJkqRiOadiPDhSIUmSJKkvdiokSZJUrIw5fT26FREvjIivR8QdEbE2IpZHxCkRvU3u6HV/g66jX3YqJEmSpA5ExNnAvwHLgK8DlwKPAc4CPhERXd3IrNf9DbqOQbBTIUmSpGIl0dejUxFxDHAycAvwhMw8MjOPBvYGfggcDbxytvc36DoGZWI6FRFxeERkh4/dRl2vNM3sqkTmVqUyu2rjTfXyDZl5/fSbmflr4KT65Ru7OP2o1/0Nuo6BmKSrP90C/Eub9QcDjwN+Ctw4lIqkzphdlcjcqlRmtyDJcO5TERG7AAcC9wMf36COzMsj4ibgkcChwLdmY3+DrmOQJqZTkZkrgBNarY+I79dPP5SZOZSipA6YXZXI3KpUZlct7F8vv5+Z97ZocyXVH/P7s/E/5nvd36DrGJiJ6VS0ExFPBvYFHqL9txPSWDG7KpG5VanM7nga0n0q9qyXN7Rp84sZbWdjf4OuY2AmZk7FRvxZvfxCZt400kqk7phdlcjcqlRmd3LNq5d3t2mztl7On8X9DbqOgZn4kYqI2AZ4fv3yglHWInXD7KpE5lalMrvjK6PvkYqlEbG84fV5mXnejDbTBxnUKW+97m/QdQzMxHcqgOOoenK/AT474lqkbphdlcjcqlRmd9O1KjOXbaTNXfVyXps20+vuatOm3/0Nuo6BsVOxbijzI5n5wEgrkbpjdlUic6tSmd0xlTmUORUr6+XubdrsOqPtbOxv0HUMzETPqYiIvYCn1y8/tJG2J9a3P1+++vbbZ784qY1es3v77bfNfnFSC73nds2s1ya142eugGvq5X4RMbdFm4NmtJ2N/Q26joGZ6E4F6751uCIzf9iuYWael5nLMnPZosWLh1Ca1FZP2V28eMkQSpNa6jG3C2e/Mqk9P3PHVpDM6evRicy8Ebga2JLqVLj1q4g4DNiF6j4nV8zW/gZdxyBNbKciIjYDXlK/dMKVimF2VSJzq1KZXTU4o16+ox69AiAidgDOqV+emZlTDevOiIgVEXEGG+p6f31uN6smeU7FH1DdGORu4GMjrkXqhtlVicytSmV2x1gytPtUkJmfiIhzgZOAayPiS8ADwBHAAuAS4KwZm+0E7FMvB7G/nrebbZPcqfjzevmxzFzbtqU0XsyuSmRuVSqzq4dl5skR8Q3gFOAwYDNgBdVcm3O7HR3odX+DrmMQJrJTERFLgSPrlw5lqhhmVyUytyqV2S3DsEYqHj5e5sXAxR22PQE4YVD7G8R2s2VS51T8L6oJLisy81ujLkbqgtlVicytSmV2pQ5NaqfiZfWy7WXhpDFkdlUic6tSmV2pQxN5+lNmPmHUNUi9MLsqkblVqcxuGYZ9+pOam9SRCkmSJEkDMpEjFZIkSdoUhCMVY8KRCkmSJEl9caRCkiRJxcp0pGIcOFIhSZIkqS+OVEiSJKlIiVd/Ghd2Knqw5T2r2e27nxh1GVLX5uRDbPPgnSM9vtStux/ahivu3n/UZUhdu/fBLfjBbTuOugxpKOxUSJIkqViOVIwH51RIkiRJ6osjFZIkSSqWIxXjwZEKSZIkSX1xpEKSJEmFCu9TMSYcqZAkSZLUF0cqJEmSVKQEppxTMRYcqZAkSZLUl4nrVETELhHxwYj4UUTcGxG/jYjrI+IfI+JRo65PasbcqlRmV6Uyu+VIoq+HBmOiOhURsT9wLfBKYBvgi8AXgLnAXwLfi4injK5CaUPmVqUyuyqV2ZW6N1GdCuBsYCHwz8CjMvOozDwK2BP4EDAPOHdk1UnNmVuVyuyqVGa3FAmZ0ddDgzExnYqI2Bp4cv3yLZn5wPS6+vmb65dPiIhthl2f1Iy5VanMrkpldqXeTNLVnx4CHqT6Nzfrlma9vBu4d1hFSRthblUqs6tSmd3COC9iPEzMSEX97cKX65d/FxFbTK+rn/+f+uUFmZkzt5dGwdyqVGZXpTK7Um8maaQC4GSqiVYvB54dEcvr9w8CFgHvB14/otqkVsytSmV2VSqzWwznRYyLiepUZObP6qs1fAR4NrBLw+rlwNcaz52UxoG5VanMrkpldqXuTczpTwD1B8R1wF7AnwBLge2Bo6i+efhkRLylxbYnRsTyiFi+6s67h1Sx1F9u6+0fzu5tq1cPoWKpMqjP3DvXrBpSxVJlcNm9dUgVT67E+1SMi4npVETEQuASYD7wh5n5n5l5W2auysxPA39INeHqzRGx98ztM/O8zFyWmcuWLth2mKVrgvWbW1g/u0sWLRpW6Zpwg/zMXbBw6TBL14QbbHa3H2bp0khNTKcCeA7VtwzfzsyfzVyZmT8BvkN1Stjhwy1NasncqlRmV6Uyu4XxPhXjYZI6FbvVyzvatFlTLxfPbilSx8ytSmV2VSqzK/VgkjoVv6qXBzZeHm5a/d6B9cufD60qqT1zq1KZXZXK7BZmqs+HBmOSOhWfB+6h+gbivRGx1fSK+vkHgF2B1cAXR1KhtCFzq1KZXZXK7Eo9mJhLymbmbyLiZOAC4BTg6Ii4iupumQcCOwH3AX+Wme2GPKWhMbcqldlVqcxueZwXMR4maaSCzPwX4GDgX4H7gd8HnkV1FYcLgAMy85KRFSg1YW5VKrOrUpldqXsTM1IxLTOvBl4y6jqkbphblcrsqlRmtwzea2J8TNRIhSRJkqTBm7iRCkmSJG06nFMxHhypkCRJktQXRyokSZJULOdUjAdHKiRJkiT1xZEKSZIklSlhKkddhMCRCkmSJEl9cqSiB7nVXB7YY79RlyH1JPArHZUlArbafGrUZUhdm7v5/fzOkptGXcYmLXFOxbhwpEKSJElSXxypkCRJUrG8T8V4cKRCkiRJGqKI2CciLoqIX0XEfRFxQ0ScGxE7DWufEXF4RORGHod2enxHKiRJklSsLGyqYEQcBnwemAtcDXwNeCLwCuCYiPjdzPzxEPf5a+ALLdbd2mkNdiokSZKkIYiIbYF/p/rj/1WZeVbDun8AXgd8NCKWZXbWXRrAPldk5gm9/pumefqTJEmSChVM9fkYspcBOwKXNf7xX3sD8FPgAODZI95n1+xUSJIkScNxVL28aOaKzHyIasShsd2o9tk1T3+SJElSkZLirv60f728ssX6K2e0G8Y+HxERfws8ErgbuBb4dGbe1kUNkzVSERG7RcQ5EfGzelb8rRHxXxHxrFHXJrVjdlUqs6sSmVvNhohYACyuX97Qotkv6uWeQ9znY4G3Ai8HXgNcAPwiIl7VSQ3TJqZTERGHAN8FTgIC+BzVOWZ/APx3RPzV6KqTWjO7KpXZVYnMbXky+3sM0byG53e3aLO2Xs4fwj7vAN4LPI1qTsZ8qrkX5wNbAx+IiJd3WMdknP4UEVsDnwAWAR8AXlufY0ZEPAP4DPCOiPh6Zl4xukql9ZldlcrsqkTmdmItjYjlDa/Py8zzZjaKiHcCz+1h/0dk5k0wK7PCe95nZl4DXDPj7WuAl0fE/1D9N3BmRHwkM+/b2P4mZaTiaGAX4GfAadMfEACZ+VXgPfXLvxlBbVI7ZlelMrsqkbktUBJ9PYBVmbms4bFBh6K2M7BPD48t6u3vatjXti2OMT3ycFeL9TPNxj4BzgZWUZ1adUgnG0xKp+KgenlZZj7QZP2X6uWz6nPTpHFhdlUqs6sSmVu1lJkvzszo4bGy3v5O4PZ6d7u3OMyu9XJlhzUNfJ/1fqeA6+uXj+xkm0npVEz30Fa1WD/9/hbA78x+OVLHzK5KZXZVInNbmoSpPh9DNn260UEt1h88o92o9gmwpF6ubduqNimdit/Uy0e1WN/4fkez7aUhMbsqldlVicytZtun6+WLZq6IiM2A4+uXnxrlPiPiicBjqK7au3wjzYHJ6VR8pV4+JyJ2abL+FQ3PHc7UODG7KpXZVYnMbWGm71PRz2PIPgzcAjwjIk6Zse5M4NFUIwqfb1wREQdHxIqIWDHAfb46IpbMaE9EPJnqggUAH8vMmzv5h01EpyIzvwJ8DZhLdTm4Z0bE/Ih4TET8M/Ac4MG6+VSzfUTEiRGxPCKW37b6juEUrok3+OyuHk7hmnj9Zrcxt3eubnUmijRYg/7MXX377c2aaIJl5lqqkYN7gbPqrHw0In4AnEZ1it0LMje42O02rJv4Pah9/j1wS0T8T0R8LiI+HhHfBb4J7FUv/7LTf9tEdCpqxwHfAB4HfBm4E/gR8BfAB4Hv1+2afgJk5nnTVwVYsmi7IZQrPWyA2V00hHKlh/Wc3cbcLli0dEjlSsAAP3MXLV7crIkGrKD7VNT15uVUd7e+mOpqY8+jms/zT8ATMvNHQ9rn26lGL7YFfhc4CtgJuBR4GXBYPRG8IxNxnwqAzPxNRDwd+D3gGcBSqnMnPw1cDaypm147kgKlFsyuSmV2VSJzq2Go/8jfYA5Em/aXsZF7UvSwz3cB7+q0/cZMTKcCoB72ubR+PKz+8JhHdRvzrnuH0mwzuyqV2VWJzG1ZpmblnnLq1iSd/tTOG+vl2U3ON5PGmdlVqcyuSmRupRYmplMREY+PiG1mvDc3Ij4IPBv4HvC+UdQmtWN2VSqzqxKZ2/KUNqdiUzVJpz+9Djg2Iq4CfkU1fPlUYBHVeZHPzsz7R1if1IrZVanMrkpkbqUeTFKn4hJge+CJwKHAPcAPgX8H/tEPCI2xSzC7KtMlmF2V5xLMbTGSkdxrQk1MTKciMy+h+qCQimJ2VSqzqxKZW6k3E9OpkCRJ0iYmYcp5EWNhYiZqS5IkSZodjlRIkiSpWF7BaTw4UiFJkiSpL45USJIkqVjpHbXHgiMVkiRJkvriSEUPYu2dxLcuHXUZUtfuZ0tuYreRHl/q1t33wrevHXUVUvc2ywfZ7oFVoy5jk5Z49adx4UiFJEmSpL44UiFJkqRiefWn8eBIhSRJkqS+OFIhSZKkYjlSMR4cqZAkSZLUF0cqJEmSVKRMmErvUzEOHKmQJEmS1Bc7FZIkSZL64ulPkiRJKpYTtcdDkSMVEbFPRJwaERdFxIqImIqIjIhjO9j2hRHx9Yi4IyLWRsTyiDglIor8Wagc5lalMrsqldmVhqfUkYqTgFO73SgizgZOBn4LfBl4ADgCOAs4IiKOy8yHBlmo1MDcqlRmV6UyuxPAkYrxUGpv+zrgXcDzgb2Ayze2QUQcQ/UBcQvwhMw8MjOPBvYGfggcDbxy1iqWzK3KZXZVKrMrDUmRIxWZeX7j64iOLiX2pnr5hsy8vmFfv46Ik4DLgDdGxAczc2pQtUrTzK1KZXZVKrM7GaYcqRgLpY5UdCUidgEOBO4HPj5zfWZeDtwE7AgcOtzqpObMrUpldlUqsyv1biI6FcD+9fL7mXlvizZXzmgrjZq5VanMrkpldguTQGb09dBgTEqnYs96eUObNr+Y0VYaNXOrUpldlcrsSj2alE7FvHp5d5s2a+vl/GYrI+LE+nJyy1etvWegxUkt9J1bWD+7a1avGlhxUhsD/cy95y5zq6EZaHZvu331QItTE1ld/amfhwZjUjoV02NbPUcnM8/LzGWZuWzpvG0GVJbUVt+5hfWzu3DR0gGUJW3UQD9zt5lvbjU0A83uksWLBlSWNP6KvPpTD+6ql/PatJled1ebNtIwmVuVyuyqVGa3QF79aTxMykjFynq5e5s2u85oK43aynppblWalfXS7Ko0K+ul2ZW6NCmdimvq5X4RMbdFm4NmtJVGzdyqVGZXpTK7hamu/uScinEwEZ2KzLwRuBrYEjhu5vqIOAzYherumVcMtzqpOXOrUpldlcrsSr2biE5F7Yx6+Y6I2Gv6zYjYATinfnmmd8fUmDG3KpXZVanMbmEcqRgPRU7UjogDWPcfNsC+9fL0iDht+s3MPLTh+Sci4lzgJODaiPgS8ABwBLAAuAQ4a5ZL1wQztyqV2VWpzK40PEV2Kqj+oz6kyft7t9soM0+OiG8ApwCHAZsBK4APAef6rYNmmblVqcyuSmV2J4BXfxoPRXYqMvMy1l1LutttLwYuHmhBUgfMrUpldlUqsysNT5GdCkmSJAnnRYyNSZqoLUmSJGkWOFIhSZKkIiUw5QyXseBIhSRJkqS+OFIhSZKkYjmnYjw4UiFJkiSpL45U9GBq/iLuPeJPR1zFu0d8fJXowak53HLX/JEeX+rWwm0f4uhD7xhpDX8/0qOrVJs9cC/b/er7oy5jk1fiSEVE7AO8GXgmsAS4Bfgv4O8z8+Yu97UtcBRwUP3YH5gLfC4zjxxWLXYqJEmSpCGJiMOAz1P94X818DXgicArgGMi4ncz88dd7HJv4KJR1+LXhpIkSSpSZnVH7X4ew1SPKvw71R/xr8rMAzPz+Mx8HNVpKNsDH42Ibm7aeBfV3d5PprqD/CtGUYudCkmSJGk4XgbsCFyWmWfNWPcG4KfAAcCzO91hZv40M/88M8/NzP8H3DeKWuxUSJIkqViZ2ddjyI6qlxucrpSZD1GNHDS2K6YWOxWSJEnScOxfL69ssf7KGe2KqcWJ2pIkSSpWKVd/iogFwOL65Q0tmv2iXu5ZWi2OVEiSJEmzb17D87tbtFlbL2f7+u8Dr8WRCkmSJBVraqrvXSyNiOUNr8/LzPNmNoqIdwLP7WH/R2TmTUA3V3SabQOvpchORX2Tjj+kusHHMuAxVD+c4zLzE4PaRhokc6tSmV2VyuyqQ6syc1kH7XYG9ulh/1vUy7sa3tsWaHZXz3lN2s6GgddSZKcCOAk4dQjbSINkblUqs6tSmd1NXObw5lRk5ouBF/ex/Z0RcTvVXIbdgf9p0mzXermy1+OMqpZS51RcB7wLeD6wF3D5LG0jDZK5VanMrkpldjVurqmXB7VYf/CMdsXUUuRIRWae3/i6kxv99bKNNEjmVqUyuyqV2Z0Mw74rdp8+DRwBvAi4oHFFRGwGHF+//FRptZQ6UiFJkiSV5sPALcAzIuKUGevOBB5NNTLw+cYVEXFwRKyIiBWjrqWVIkcqJEmSJCjnPhUAmbk2Io6n+kP9rIh4GXA98ETgccAq4AW54a2+t6HNJPGI+BSwU/1y+3r51Ij4dkOzt2Xm5wZQS1OOVEiSJElDkpmXU92l+mJgF+B5VFda+ifgCZn5ox52uz9wSP14VP3ewob3DmFdZ2NWanGkQpIkScXKwiZVANR/rL+oi/aX0ebeEpm5x7BqacWRig5FxIkRsTwilt+2es2oy5E61pjdO1avGnU5Ukcac7tm9W2jLkfqWGN2V62Z7VsNSOPDTkWHMvO8zFyWmcuWLFo46nKkjjVmd7tFS0ddjtSRxtwuXLRk1OVIHWvM7tKF80ddziYvs7r6Uz8PDYadCkmSJEl9cU6FJEmSilXS1Z82ZY5USJIkSeqLIxWSJEkq1pQTI8ZCkZ2KiDgAOKfhrX3r5ekRcdr0m5l5aD/bSINkblUqs6tSmV1peIrsVAALqG7iMdPeA95GGiRzq1KZXZXK7G7iEudUjIsiOxUbuwHIoLaRBsncqlRmV6Uyu9LwFNmpkCRJkkhHKsaFV3+SJEmS1BdHKiRJklSoZMqhirHgSIUkSZKkvjhSIUmSpGLl1KgrEDhSIUmSJKlPjlRIkiSpSNV9KpxTMQ7sVPRgzgP3Mv+m60ZdhtSTOXP88FVZHso53H7fvFGXIXXtoS225s6dHjvqMqShsFMhSZKkMiVMOadiLDinQpIkSVJfHKmQJElSsZxTMR4cqZAkSZLUF0cqJEmSVKQEphyoGAuOVEiSJEnqiyMVkiRJKlNCOlQxFhypkCRJktSXIjsVEbFPRJwaERdFxIqImIqIjIhjW7TfIiKOiIh3R8S3I+LmiLg/Im6KiE9ExOHD/RdoEplblcrsqlRmdzJk9vfQYJR6+tNJwKldtD8MuLR+fgtwFXA3sC9wDHBMRLwtM98y0Cql9ZlblcrsqlRmVxqSIkcqgOuAdwHPB/YCLt9I+yngk8DTM3OnzDwyM5+fmY8HjgceAt4cEc+YzaI18cytSmV2VSqzOwGmprKvhwajyJGKzDy/8XVEbKz9V4CvtFj3sYh4FvDnwIuBrw6oTGk95lalMrsqldmVhqfITsUsuKZe7jLSKqTumFuVyuyqVGZ3zGSmd9QeE6We/jRoe9fLm0dahdQdc6tSmV2VyuxKLUz8SEVE7AicUL/85AhLkTpmblUqs6tSmd3xlVOjrkAw4SMVEbE5cBGwHfDlzPzMiEuSNsrcqlRmV6Uyu9LGTXSnAvhH4AjgRqpJVy1FxIkRsTwilq+6Y+1QipNa6Di3sH5271i9ataLk9ro6TN3jbnV6PWU3dtvXzOM2ibeVGZfDw3GxHYqIuL9VFdwuAU4IjNvadc+M8/LzGWZuWzpdvOGUqM0U7e5hfWzu92ipbNeo9RMP5+5C82tRqif7C5evHAYJUpjYSLnVETEu4FXA7dSfUBcP+KSpI0ytyqV2VWpzG4ZvPrTeJi4kYqIeCfwWuA24FmZ+YMRlyRtlLlVqcyuSmV2pe5M1EhFRJwJvB5YTfUB8b0RlyRtlLlVqcyuSmV2y5GJd8UeExMzUhERbwPeAKyh+oC4pv0W0uiZW5XK7KpUZlfqTZEjFRFxAHBOw1v71svTI+K06Tcz89C6/XOBv6nf/gnwqohotusVmXnm4CuWzK3KZXZVKrMrDU+RnQpgAXBIk/f3bvIewOKG58vqRzOXA35IaLaYW5XK7KpUZncCOE97PBTZqcjMy4CmXx20aH8hcOEslSN1xNyqVGZXpTK70vAU2amQJEmSANKJ2mNhYiZqS5IkSZodjlRIkiSpSJnJlJMqxoIjFZIkSZL6YqdCkiRJxcqp7OsxChGxT0RcFBG/ioj7IuKGiDg3InbqYV/bRsSLIuJ9EfHNiLgnIjIiPruR7Q6v27V7HNppHZ7+JEmSJA1JRBwGfB6YC1wNfA14IvAK4JiI+N3M/HEXu9wbuKiPkn4NfKHFuls73Ymdih6s3WIJ39zxhSOu4s9HfHyVaJs5v+VJ2/5wpMeXurVNrmXZfV8bdRlS15I5PLD53FGXsckr6epPEbEt8O9UHYpXZeZZDev+AXgd8NGIWJbZ8WSRu4APAcuBq4D9gX/soqwVmXlCF+2bslMhSZIkDcfLgB2Byxo7FLU3AEcBBwDPBv6rkx1m5k9p+LY5IvZt03zWOKdCkiRJZUqY6vMxZEfVyw1OV8rMh6hGMRrbFcORCkmSJGk49q+XV7ZYf+WMdsPwiIj4W+CRwN3AtcCnM/O2bnZip0KSJElFSsqZUxERC4DF9csbWjT7Rb3cc/YrethjgbfOeO+DEfHGzPxgpzvx9CdJkiRNsqURsbzhceIsHWdew/O7W7RZWy/nz1INje4A3gs8jWqex3yq+RznA1sDH4iIl3e6M0cqJEmSVKik84sktbQqM5dtrFFEvBN4bg/7PyIzbwKih21nTWZeA1wz4+1rgJdHxP8AHwDOjIiPZOZ9G9ufnQpJkiRp43YG9ulhuy3q5V0N721LNVIw07wmbUfhbOAtwFLgEKp7abTl6U+SJEkqU8LUVPb16PhQmS/OzOjhsbLe/k7g9np3u7c4zK71cmWPP5GByMwp4Pr65SM72cZOhSRJkjQc06cbHdRi/cEz2o3Sknq5tm2rWpGdiojYJyJOjYiLImJFRExFREbEsW22eVVE/EdE/DAibouIByLi1oj4UkS8OCLG6jw3bXrMrUpldlUqszsZMrOvx5B9ul6+aOaKiNgMOL5++amhVdRERDwReAzVBbaWd7JNqXMqTgJO7XKbNwA7ANcB36Kadb878EzgCODYiHhePdwjzQZzq1KZXZXK7GrcfBj4a+AZEXFKZp7dsO5M4NFUoxSfb9woIg4GPgKQmY8dRCER8Wrg32bejyIinjx9LOBjmXlzJ/srtVNxHfAuqp7TVcAFwGEb2eZ44JrMXO8SXhGxH/Bl4E+Al1L9sqXZYG5VKrOrUpndTVxJ96kAyMy1EXE8VafhrIh4GdXchScCjwNWAS/IDYdQtqHNJPGI+BSwU/1y+3r51Ij4dkOzt2Xm5xpe/z3w7oj4IXAjcA+wN/AEqitVfRP4y07/bUV2KjLz/MbXnYxEZuY3Wrz//Yg4m+oH+yz8kNAsMbcqldlVqcyuxlFmXh4R+1NdXekI4PHAr4F/Av6u05GBGfZnw8nfC6mu3DRt+xnr3051j4r9gN+l6rjcDlwKfBT418x8qNMCiuxUzIIH6+VvR1qF1B1zq1KZXZXK7I6bLGukYlpm/ogm8yratL+MNve5yMw9eqjhXVQjeQNR5ETtQYqIPYFX1C8/M8papE6ZW5XK7KpUZldqb+JGKupz1w6juhHJLsBTqDpXZ2TmSGfaS62YW5XK7KpUZrcUydTwr+CkJiauUwE8lWqC1bQHgTcD72m3UUScCJwIsMNOu7ZrKs2GnnIL62f3kTvvtJHW0sD1/Zm76447zFpxUht9Z9fPXE2SiTv9KTP/IjODajLKfsD7gLcC346Indtsd15mLsvMZdstmjnPRZpdvea23vbh7C5ZtGjWa5UaDeIzd8mi7YZSq9RoENld7GfuUORU9vXQYExcp2JaZt6bmT/IzNcDb6K6lNdZIy5LasvcqlRmV6Uyu1JnJrZTMcP0ZeH+OCK2GGklUufMrUpldlUqsztmkuLuqL3JslNRWUN1ruTmwOLRliJ1bA3mVmVag9lVmdZgdqWmJnGidjNPp/pZrKG6k6FUAnOrUpldlcrsjpuEKedFjIWJGKmIiKdFxIsiYqsm654KXFC/vKCbOwdKs8ncqlRmV6Uyu1LvihypiIgDgHMa3tq3Xp4eEadNv5mZh9ZPH011HuRZEXE1cAswv35/etvPUV0qTpoV5lalMrsqldmdDF7BaTwU2akAFgCHNHl/7xbtLwfeBjwNeAzVDWyC6sPik8BFmXnJ4MuU1mNuVSqzq1KZXWlIiuxUZOZlVP+Rd9r+58BbZq0gqQPmVqUyuyqV2Z0EXsFpXEzEnApJkiRJs6fIkQpJkiQpE3JqatRlCEcqJEmSJPXJkQpJkiQVy/tUjAdHKiRJkiT1xZEKSZIkFcurP40HOxU92Dbv4qAHvjbqMqSurX1oLt+6/XdGenypW3cznys2P3zUZUhd2/yeO1hy1WdHXYY0FHYqJEmSVKZM76g9JpxTIUmSJKkvjlRIkiSpSAmOVIwJRyokSZIk9cWRCkmSJBVrKr2j9jhwpEKSJElSXxypkCRJUpnSORXjwpEKSZIkSX0pslMREftExKkRcVFErIiIqYjIiDi2y/2cXm+XEXHabNUrgblVucyuSmV2N31JdZ+Kfh4ajFJPfzoJOLWfHUTEQcBfUV2NLAZRlLQR5lalMrsqldmVhqTIkQrgOuBdwPOBvYDLu9k4IrYCLgR+DXx60MVJLZhblcrsqlRmdwJkZl8PDUaRIxWZeX7j64iuvzj4e2Bf4LnAMQMqS2rL3KpUZlelMrvS8JQ6UtGziDgEeB1wcWZ+ZtT1SJ0wtyqV2VWpzG4hEqampvp6aDAmqlMREVsD/wLcTp/nWErDYm5VKrOrUpldqXtFnv7Uh7cD+wDHZ+aqURcjdcjcqlRmV6UyuwXxCk7jYWJGKiLiKcBrgEsy82MjLkfqiLlVqcyuSmV2pd5MxEhFRMwFPgzcCZzc4z5OBE4E2HXHHQZXnNTCIHJb7+fh7C59xG6DKU5qY9CfuTvstOvgipPaGPjfC0sXDqw2NZckmc6LGAeTMlJxOvAY4LWZeXMvO8jM8zJzWWYuW7Jou8FWJzXXd25h/ewuWLT94KqTWhvoZ+52C82thmag2V06f9vBVieNsYkYqQCOBqaAl0bES2ese2y9PCkijgR+kpl/MdTqpObMrUpldlUqs1uadE7FuJiUTgVUozKHtVn/qPqxcCjVSJ0xtyqV2VWpzK7Ug4k4/Skz98jMaPagumQcwOvr9540wlKlh5lblcrsqlRmt0w5lX09NBgT0amQJEmSNHuKPP0pIg4Azml4a996eXpEnDb9ZmYeOtTCpDbMrUpldlUqszsJkimv/jQWiuxUAAuAQ5q8v/ewC5G6YG5VKrOrUpldaUiK7FRk5mVADGhfJwAnDGJfUjvmVqUyuyqV2d30pVd/GhvOqZAkSZLUFzsVkiRJKlZOTfX1GIWI2CciLoqIX0XEfRFxQ0ScGxE79biv/x0Rn4+In0TEbyPijoi4IiJeExFbDqMWOxWSJEnSkETEYcA1wIuAm4FPAfcArwC+FxGP6XKXXwbeAxzesL+rgCcB7wW+HRGLZ7sWOxWSJEkqU5Z1n4qI2Bb4d2Au8KrMPDAzj8/MxwHvBrYHPhoR3cwF+hHw58D2mfm0zHxBZj4TeBzwfWB/qs7FrNZip0KSJEkajpcBOwKXZeZZM9a9AfgpcADw7E53mJlHZOaHMnPtjPdXUo04APxpk9OgBlqLnQpJkiQVKsmc6usxZEfVy4tmrsjMh6hGDhrb9euaerk1sGQ2a7FTIUmSJA3H/vXyyhbrr5zRrl/T92S5H7h9Nmsp8j4Vo/bQZluyers9Rl2G1LXtHlzFkWsuGNnxz3hw1ciOrXJtPuchHrHNnaMuQ+ranVvtyBce/foRV/GmER9/diUwVch9KiJiATA9YfqGFs1+US/3HNBh31gvP5uZ981mLY5USJIkSbNvXsPzu1u0mZ4XMb/fg0XECcDzqa7m9NezXYsjFZIkSSpTMoh7TSyNiOUNr8/LzPNmNoqIdwLP7WH/R2TmTQzo7u6diIgjgH+iGsz5y8z80cwmgz6mnQpJkiRNslWZuayDdjsD+/Sw/y3q5V0N720L3NGk7bwmbbsSEb8LfBrYEnh1Zm4wEXs2avH0J0mSJBWqv3tUdHOfisx8cWZGD4+V9fZ3sm6y9O4tDrNrvVzZy08jIp4C/BdVR+ENmfnBFv+Wgddip0KSJEkajulLvB7UYv3BM9p1LCIOBT5PNQfibzLzncOsxU6FJEmSNByfrpcvmrkiIjYDjq9ffqqbnUbEwcAXgQXAWzPz7cOuxU6FJEmSilXYze8+DNwCPCMiTpmx7kzg0VQjA59vXBERB0fEiohYMXOHEXEg8N9UHYq3ZebfzWYtrThRW5IkSRqCzFwbEcdT/aF+VkS8DLgeeCLwOGAV8ILMnDnZYxtaTxK/FNgOWAPsFhEXtmh3WmY+fMOoPmppqsiRiojYJyJOjYiL6l7bVERkRBzbZpsL6zatHhv0/KRBMrcqldlVqczuBEiGNlF7YCVnXk51l+qLgV2A51FdaemfgCc0ufzrxiyqlwuBl7Z5zJu54SBrKXWk4iTg1B63/Sbwkybv39x7OVJHzK1KZXZVKrOrsVT/sb7BXIY27S+jxb0lMrOve050W0srpXYqrgPeBSwHrgIuAA7rcNvzM/PCWapLasfcqlRmV6Uyu5u4JAdx8zsNQJGdisw8v/F1xNBuUCj1zNyqVGZXpTK7m7677/jxF7/52cOX9rmbVRtvoo0pslMhSZIkZeYfjroGVSaxU/GMiHgC1SSUXwPfAC7NEVxTTOqCuVWpzK5KZXalLkxip+IlTd77QUQcn5nXDr0aqTPmVqUyuyqV2ZW6UOQlZXv0XeDVwH5U3zrsDBwJfA/YF/hSRDxyZNVJzX0Xc6syfRezqzJ9F7MrdW1iRioy830z3rob+FxEXApcDhwKvAl4ZbPtI+JE4ESAnXfeefYKlRr0m1tYP7u77rB4dgqVZhjkZ+5OO+8ye4VKMwwyu9vvuNvsFSqNmUkaqWgqM+8Hzqhf/lGbdudl5rLMXLZk8aJWzaSh6DS3dduHs7t0wfzZL05qo5fP3IWLlgynOKmNXrK7YOH2wylOGgMT36moTd8d0+FMlcTcqlRmV6Uyu1ILdioq01+DrR1pFVJ3zK1KZXZVKrMrtWCnovKn9fLKkVYhdcfcqlRmV6Uyu1ILE9GpiIgnRcSREbHZjPc3j4jXUl3lAeC9w69Oas7cqlRmV6Uyu1Lvirz6U0QcAJzT8Na+9fL0iDht+s3MPLR+ugfwKeD2iPgx8EtgPvB4qkvFTQFvyMwvznLpmmDmVqUyuyqV2ZWGp8hOBbAAOKTJ+3u3aP894P3AwcDuwP5AUn1YfBg4OzOvmoU6pUbmVqUyuyqV2ZWGpMhORWZeBkQX7X8OvGa26pE6YW5VKrOrUpldaXgmYk6FJEmSpNljp0KSJElSX+xUSJIkSeqLnQpJkiRJfbFTIUmSJKkvdiokSZIk9aXIS8qO2hb33smOP7h01GVIXVs9Zyn/MfcvRnj8fxrZsVWu+6c244Y7F426DKlrC3I1f/DbT4y6DGkoHKmQJEmS1Bc7FZIkSZL6YqdCkiRJUl/sVEiSJEnqi50KSZIkSX2xUyFJkiSpL3YqJEmSJPXFToUkSZKkvhTZqYiIfSLi1Ii4KCJWRMRURGREHNvBtnMj4q8i4sqIWBMR90TEzyPi4xHx1GHUr8lkblUqs6tSmV1peEq9o/ZJwKndbhQRewL/DewF/Aa4HLgP2AP4E+B7wDcHVqW0PnOrUpldlcrsSkNSaqfiOuBdwHLgKuAC4LB2G0TEtsClwKOBtwFvy8wHGtYvAZbMVsES5lblMrsqldmVhqTITkVmnt/4OiI62exvqD4gPpKZb2myz9uA2wZSoNSEuVWpzK5KZXal4SlyTkW3ImJL4OX1yzNHWYvUKXOrUpldlcrsSr0rcqSiBwdSDVXemJk/jIinAEfW790CfCEzrxhlgVIT5lalMrsqldmVejQpnYrH18vrI+JC4KUz1r8lIj4J/K/MvHeolUmtmVuVyuyqVGZX6tFEnP4ELK6XTwdeAvwD1RUdFlFdxeEm4Bjg7JFUJzVnblUqs6tSmV2pR5PSqZj+d24OXJCZr8/Mn2bmmsz8T+AoIIGXRsSjmu0gIk6MiOURsfzWO9cOp2pNur5zC+tn9647bp39qqUBf+beuXrVcKqWBpzdVWvuHE7V0hiYlE7FXQ3P/3nmysycvtTcHODwZjvIzPMyc1lmLtt+wbxZKVKaoe/c1u0ezu787bYfeJFSEwP9zF2waOmsFCk1MdDsLl24YFaKlMbRpHQqVjY8/3mLNtPv7zi7pUgdW9nw3NyqJCsbnptdlWRlw3OzK3VhUjoVVzc8b3XDmumvwjy3SePC3KpUZlelMrtSjyaiU5GZNwHfqV8eMXN9RCwCDqhfLh9WXVI75lalMrsqldmVejcRnYra2+vlWyLiSdNvRsTWwLnAdlTnSXr9aY0Tc6tSmV2VyuxKPSjyPhURcQBwTsNb+9bL0yPitOk3M/PQhuefiYh/AE4DvhMR3wFuAw4Gdqa6TNwLMjNnu35NJnOrUpldlcrsSsNTZKcCWAAc0uT9vdttlJmvj4hvAa8C9ge2AX4BvAc4MzO93qZmk7lVqcyuSmV2pSEpslORmZcB0eO2nwI+NdCCpA6YW5XK7KpUZlcankmaUyFJkiRpFtipkCRJktQXOxWSJEmS+mKnQpIkSVJf7FRIkiRJ6oudCkmSJEl9sVMhSZIkqS9F3qdi1H47dxE/2fd5I67ilSM+vkr02/uSH//s/pEeX+rWlnMeYpf5d466DKlrd/3oJr7yzLeMugxpKBypkCRJktQXOxWSJEmS+mKnQpIkSVJf7FRIkiRJ6oudCkmSJEl9sVMhSZIkqS92KiRJkiT1xU6FJEmSpL4U2amIiH0i4tSIuCgiVkTEVERkRBzbov3h9fpOHrsN+9+jyWBuVSqzq1KZXWl4Sr2j9knAqV20vwX4lzbrDwYeB/wUuLGPuqR2zK1KZXZVKrMrDUmpnYrrgHcBy4GrgAuAw1o1zswVwAmt1kfE9+unH8rMHFyZ0nrMrUpldlUqsysNSZGdisw8v/F1RPS8r4h4MrAv8BDtv52Q+mJuVSqzq1KZXWl4ipxTMWB/Vi+/kJk3jbQSqXPmVqUyuyqV2ZXamOhORURsAzy/fnnBKGuROmVuVSqzq1KZXWnjJrpTARwHzAd+A3x2xLVInTK3KpXZVanMrrQRk96pmB7K/EhmPjDSSqTOmVuVyuyqVGZX2oiJ7VRExF7A0+uXH+qg/YkRsTwilq++/bbZLU5qodvc1ts8nN171t46e8VJbfT1mbvaz1yNTj/ZvYOHZrc4aYxMbKeCdd86XJGZP9xY48w8LzOXZeayRYuXzHJpUktd5RbWz+4287afxdKktnr/zF3kZ65Gqufsbsdms1yaND4mslMREZsBL6lfOuFKRTC3KpXZVanMrtS5iexUAH8APBK4G/jYiGuROmVuVSqzq1KZXalDk9qp+PN6+bHMXDvSSqTOmVuVyuyqVGZX6tDEdSoiYilwZP3SoUwVwdyqVGZXpTK7Unc2H3UBvYiIA4BzGt7at16eHhGnTb+ZmYc22fx/AVsCKzLzW7NXpbQ+c6tSmV2VyuxKw1NkpwJYABzS5P29O9j2ZfWyo8txSgNkblUqs6tSmV1pSIrsVGTmZUD0uO0TBluN1Blzq1KZXZXK7ErDM3FzKiRJkiQNlp0KSZIkSX2xUyFJkiSpL3YqJEmSJPXFToUkSZKkvtipkCRJktQXOxWSJEmS+lLkfSpGbTMeYn7eMeoypK49Ytt7eM3B14zs+J/b9p6RHVvl2jweZMlmq0ZdhtS1Ofvuy7Yf+8Zoi3j8tqM9viaGIxWSJEmS+mKnQpIkSVJf7FRIkiRJ6oudCkmSJEl9sVMhSZIkqS92KiRJkiT1xU6FJEmSpL7YqZAkSZLUlyI7FRGxT0ScGhEXRcSKiJiKiIyIYzey3S4R8cGI+FFE3BsRv42I6yPiHyPiUcOqX5PJ3KpUZlelMrvS8JR6R+2TgFO72SAi9ge+AiwEfgl8sV61DPhL4EUR8QeZ+a0B1ik1MrcqldlVqcyuNCRFjlQA1wHvAp4P7AVc3sE2Z1N9QPwz8KjMPCozjwL2BD4EzAPOnY1ipZq5VanMrkpldqUhKXKkIjPPb3wdEW3bR8TWwJPrl2/JzAca9vVARLwZ+DPgCRGxTWbeM+CSJXOrYpldlcrsSsNT6khFtx4CHqyfN/tEyXp5N3DvUCqSNs7cqlRmV6Uyu1KPJqJTUX/T8OX65d9FxBbT6+rn/6d+eUFm5sztpVEwtyqV2VWpzK7UuyJPf+rRycAXgJcDz46I5fX7BwGLgPcDrx9RbVIr5lalMrsqldmVejAxnYrM/FlEPAX4CPBsYJeG1cuBrzWeOzlTRJwInAjwyJ13ns1SpYf1m1tYP7u77LTjbJUqrWeQn7k7+5mrIRpkdh+x066zWao0Vibi9CeA+gPiOqqrP/wJsBTYHjiK6puHT0bEW1ptn5nnZeayzFy2ePGiIVQs9Z9bWD+7SxYtnN2CpdogP3OX+JmrIRpkdrdbtHQIFUvjYSJGKiJiIXAJsC3wlMz8WcPqT0fE94H/Ad4cER/NzOuHX6W0PnOrUpldlcrsSr2blJGK51B9y/DtGR8QAGTmT4DvUHWyDh9uaVJL5lalMrsqldmVejQpnYrd6uUdbdqsqZeLZ7cUqWPmVqUyuyqV2ZV6NCmdil/VywMbLw83rX7vwPrlz4dWldSeuVWpzK5KZXalHk1Kp+LzwD1U30C8NyK2ml5RP/8AsCuwGvjiSCqUNmRuVSqzq1KZXalHRU7UjogDgHMa3tq3Xp4eEadNv5mZh9bL30TEycAFwCnA0RFxFdXdMg8EdgLuA/4sM9sNeUo9M7cqldlVqcyuNDxFdiqABcAhTd7fu9UGmfkvEXEt8BrgacDv16tuovrweE9m/mDAdUqNzK1KZXZVKrMrDUmRnYrMvIzqW4Nut7saeMnAC5I6YG5VKrOrUpldaXgmZU6FJEmSpFlip0KSJElSX+xUSJIkSeqLnQpJkiRJfbFTIUmSJKkvdiokSZIk9aXIS8qOXCab5YOjrkLq2t25Dd+578CRHl/q1kNsxlrmj7oMqWvb3n87h974b6MuQxoKRyokSZIk9cVOhSRJkqS+2KmQJEmS1Bc7FZIkSZL6YqdCkiRJUl/sVEiSJEnqi50KSZIkSX2xUyFJkiSpL0V2KiJin4g4NSIuiogVETEVERkRx25ku90i4pyI+FlE3BcRt0bEf0XEs4ZVuyaXuVWpzK5KZXal4Sn1jtonAad2s0FEHAJ8HlgErAQ+B+wM/AHw7Ih4Q2a+c8B1So3MrUpldlUqsysNSZEjFcB1wLuA5wN7AZe3axwRWwOfoPqA+ACwV2Y+LzMPBX4PuBt4R0Q8eVar1qQztyqV2VWpzK40JEWOVGTm+Y2vI2JjmxwN7AL8DDgtMx9q2NdXI+I9wJuBvwGeM9hqpYq5VanMrkpldqXhKXWkolsH1cvLMvOBJuu/VC+fFRELhlSTtDHmVqUyuyqV2ZV6NCmdinn1clWL9dPvbwH8zuyXI3XE3KpUZlelMrtSjyalU/GbevmoFusb399zlmuROmVuVSqzq1KZXalHk9Kp+Eq9fE5E7NJk/SsanjucqXFhblUqs6tSmV2pRxPRqcjMrwBfA+YC/x0Rz4yI+RHxmIj4Z6rJVg/Wzaea7SMiToyI5RGx/PbVq4dTuCbaIHIL62f3jtWtRvSlwRn0Z+7q228bTuGaeIPO7qo77xpO4dIYmIhORe044BvA44AvA3cCPwL+Avgg8P263e3NNs7M8zJzWWYuW7xo0RDKlYA+cwvrZ3e7RUtnuVzpYQP7zF20eMkQypUeNrDsLl0wfwjlSuOhyEvK9iIzfxMRT6e6zvQzgKVU505+GrgaWFM3vXYkBUpNmFuVyuyqVGZX6s3EdCoAMjOBS+vHw+oPj3nAL6i+jZDGhrlVqcyuSmV2pe5N0ulP7byxXp5df5BIJTC3KpXZVanMrtTCxHQqIuLxEbHNjPfmRsQHgWcD3wPeN4rapFbMrUpldlUqsyv1psjTnyLiAOCchrf2rZenR8Rp029m5qENbV4HHBsRVwG/ohq+fCqwiOq8yGdn5v2zWrgmmrlVqcyuSmV2peEpslNBdW3oQ5q8v3ebbS4BtgeeCBwK3AP8EPh34B/9gNAQmFuVyuyqVGZXGpIiOxWZeRkQXW5zCdUHhTQS5lalMrsqldmVhmdi5lRIkiRJmh12KiRJkiT1xU6FJEmSpL7YqZAkSZLUFzsVkiRJkvpip0KSJElSX+xUSJIkSepLZOaoayhORNwK3DDiMnbPzO1HXIMKMwbZNbfq2hjkFsyuemB2NUnsVEiSJEnqi6c/SZIkSeqLnQpJkiRJfbFTIUmSJKkvdiokSZIk9cVOhSRJkqS+2KmQJEmS1Bc7FZIkSZL6YqdCkiRJUl/sVEiSJEnqy/8PQylqKN3v6IYAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# visualize cause side macrostates\n", "from cfl.visualization.basic_visualizations import visualize_macrostates\n", "\n", "# visualize cause macrostates\n", "visualize_macrostates( data=X,\n", " feature_names=None, \n", " cause_or_effect='cause', \n", " exp_path=my_exp.get_save_path(),\n", " data_series='dataset_train',\n", " subtract_global_mean=True)\n", "\n", "# visualize effect macrostates\n", "visualize_macrostates( data=Y,\n", " feature_names=None, \n", " cause_or_effect='effect', \n", " exp_path=my_exp.get_save_path(),\n", " data_series='dataset_train',\n", " subtract_global_mean=True) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 7. Tuning CFL\n", "\n", "Once you've set up a CFL pipeline, the hyperparameters needs to be tuned as is\n", "the case with any other machine learning model. \n", "\n", "To tune the `CondDensityEstimator`, you can tune the hyperparamters specified\n", "in `CDE_params` by following the Optuna tutorial or using your technique of \n", "choice. You can also consider different methods of conditional density \n", "estimation altogether (available models can be found in \n", "`cfl.cond_density_estimation`, and instructions for adding your own models\n", "can be found in the Adding Blocks tutorial). \n", "\n", "To tune the `CauseClusterer` and/or `EffectCLusterer`, hyperparameters can be\n", "tuned using CFL's built-in method described in the clusterer tuning tutorial,\n", "or with your technique of choice. You can also consider different clustering\n", "algorithms altogether, (all Sklearn clustering models are visible to CFL, and\n", "instructions for adding your own models can be found in the Adding Blocks \n", "tutorial)." ] } ], "metadata": { "interpreter": { "hash": "b9f90a7866deec4ec91106178f5b99f4479e17c39f9cdadf9218e367e68d50a4" }, "kernelspec": { "display_name": "Python 3.7.9 64-bit ('cfl_env': conda)", "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.9" }, "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 }