diff --git a/tutorials/multivariate_bijections.ipynb b/tutorials/multivariate_bijections.ipynb new file mode 100644 index 00000000..aab1e003 --- /dev/null +++ b/tutorials/multivariate_bijections.ipynb @@ -0,0 +1,270 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Multivariate Bijections\n", + "## Background\n", + "The fundamental idea of normalizing flows also applies to multivariate random variables, and this is where its value is clearly seen - *representing complex high-dimensional distributions*. In this case, a simple multivariate source of noise, for example a standard i.i.d. normal distribution, $X\\sim\\mathcal{N}(\\mathbf{0},I_{D\\times D})$, is passed through a vector-valued bijection, $g:\\mathbb{R}^D\\rightarrow\\mathbb{R}^D$, to produce the more complex transformed variable $Y=g(X)$.\n", + "\n", + "Sampling $Y$ is again trivial and involves evaluation of the forward pass of $g$. We can score $Y$ using the multivariate substitution rule of integral calculus,\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + " \\mathbb{E}_{p_X(\\cdot)}\\left[f(X)\\right] &= \\int_{\\text{supp}(X)}f(\\mathbf{x})p_X(\\mathbf{x})d\\mathbf{x}\\\\\n", + " &= \\int_{\\text{supp}(Y)}f(g^{-1}(\\mathbf{y}))p_X(g^{-1}(\\mathbf{y}))\\det\\left|\\frac{d\\mathbf{x}}{d\\mathbf{y}}\\right|d\\mathbf{y}\\\\\n", + " &= \\mathbb{E}_{p_Y(\\cdot)}\\left[f(g^{-1}(Y))\\right],\n", + " \\end{aligned}\n", + "$$\n", + "\n", + "where $d\\mathbf{x}/d\\mathbf{y}$ denotes the Jacobian matrix of $g^{-1}(\\mathbf{y})$. Equating the last two lines we get,\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + " \\log(p_Y(y)) &= \\log(p_X(g^{-1}(y)))+\\log\\left(\\det\\left|\\frac{d\\mathbf{x}}{d\\mathbf{y}}\\right|\\right)\\\\\n", + " &= \\log(p_X(g^{-1}(y)))-\\log\\left(\\det\\left|\\frac{d\\mathbf{y}}{d\\mathbf{x}}\\right|\\right).\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "Inituitively, this equation says that the density of $Y$ is equal to the density at the corresponding point in $X$ plus a term that corrects for the warp in volume around an infinitesimally small volume around $Y$ caused by the transformation. For instance, in $2$-dimensions, the geometric interpretation of the absolute value of the determinant of a Jacobian is that it represents the area of a parallelogram with edges defined by the columns of the Jacobian. In $n$-dimensions, the geometric interpretation of the absolute value of the determinant Jacobian is that is represents the hyper-volume of a parallelepiped with $n$ edges defined by the columns of the Jacobian (see a calculus reference such as [Stewart, 2015](https://www.amazon.com/gp/product/B00YHKU50E) for more details).\n", + "\n", + "Similar to the univariate case, we can compose such bijective transformations to produce even more complex distributions. By an inductive argument, if we have $L$ transforms $g_{(0)}, g_{(1)},\\ldots,g_{(L-1)}$, then the log-density of the transformed variable $Y=(g_{(0)}\\circ g_{(1)}\\circ\\cdots\\circ g_{(L-1)})(X)$ is\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + " \\log(p_Y(y)) &= \\log\\left(p_X\\left(\\left(g_{(L-1)}^{-1}\\circ\\cdots\\circ g_{(0)}^{-1}\\right)\\left(y\\right)\\right)\\right)+\\sum^{L-1}_{l=0}\\log\\left(\\left|\\frac{dg^{-1}_{(l)}(y_{(l)})}{dy'}\\right|\\right),\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "where we've defined $y_{(0)}=x$, $y_{(L-1)}=y$ for convenience of notation.\n", + "\n", + "The main challenge is in designing parametrizable multivariate bijections that have closed form expressions for both $g$ and $g^{-1}$, a tractable Jacobian whose calculation scales with $O(D)$ or $O(1)$ rather than $O(D^3)$, and can express a flexible class of functions." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Multivariate `Bijector`s\n", + "In this section, we show how to use [`B.SplineAutoregressive`](https://flowtorch.ai/api/flowtorch.bijectors.splineautoregressive) to learn the bivariate toy distribution from our running example. Making a simple change we can represent bivariate distributions of the form, $p(x_1,x_2)=p(x_1)p(x_2|x_1)$:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import flowtorch.bijectors as B\n", + "import flowtorch.distributions as D\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import torch\n", + "\n", + "from sklearn import datasets\n", + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "dist_x = torch.distributions.Independent(\n", + " torch.distributions.Normal(torch.zeros(2), torch.ones(2)), \n", + " 1\n", + ")\n", + "bijector = B.SplineAutoregressive()\n", + "dist_y = D.Flow(dist_x, bijector)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The [`bij.SplineAutoregressive`](https://flowtorch.ai/api/flowtorch.bijectors.splineautoregressive) bijector extends [`bij.Spline`](https://flowtorch.ai/api/flowtorch.bijectors.spline) so that the spline parameters are the output of an autoregressive neural network. See [[durkan2019neural]](https://flowtorch.ai/dev/bibliography#durkan2019neural) and [[germain2015made]](/dev/bibliography#germain2015made) for more details.\n", + "\n", + "Similarly to before, we train this distribution on the toy dataset:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step: 0, loss: 2.8031821250915527\n", + "step: 500, loss: -31.47930335998535\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_21024/1743393377.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 11\u001b[0m \u001b[0moptimizer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mzero_grad\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 12\u001b[0m \u001b[0mloss\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m-\u001b[0m\u001b[0mdist_y\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlog_prob\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 13\u001b[1;33m \u001b[0mloss\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbackward\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 14\u001b[0m \u001b[0moptimizer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 15\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\torch\\_tensor.py\u001b[0m in \u001b[0;36mbackward\u001b[1;34m(self, gradient, retain_graph, create_graph, inputs)\u001b[0m\n\u001b[0;32m 253\u001b[0m \u001b[0mcreate_graph\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcreate_graph\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 254\u001b[0m inputs=inputs)\n\u001b[1;32m--> 255\u001b[1;33m \u001b[0mtorch\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mautograd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbackward\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mgradient\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mretain_graph\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcreate_graph\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0minputs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0minputs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 256\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 257\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mregister_hook\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mhook\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\torch\\autograd\\__init__.py\u001b[0m in \u001b[0;36mbackward\u001b[1;34m(tensors, grad_tensors, retain_graph, create_graph, grad_variables, inputs)\u001b[0m\n\u001b[0;32m 145\u001b[0m \u001b[0mretain_graph\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcreate_graph\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 146\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 147\u001b[1;33m Variable._execution_engine.run_backward(\n\u001b[0m\u001b[0;32m 148\u001b[0m \u001b[0mtensors\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mgrad_tensors_\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mretain_graph\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcreate_graph\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0minputs\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 149\u001b[0m allow_unreachable=True, accumulate_grad=True) # allow_unreachable flag\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "n_samples = 1000\n", + "X, y = datasets.make_circles(n_samples=n_samples, factor=0.5, noise=0.05)\n", + "X = torch.Tensor(StandardScaler().fit_transform(X))\n", + "\n", + "optimizer = torch.optim.Adam(dist_y.parameters(), lr=5e-3)\n", + "for step in range(5001):\n", + " optimizer.zero_grad()\n", + " loss = -dist_y.log_prob(X).mean()\n", + " loss.backward()\n", + " optimizer.step()\n", + " \n", + " if step % 500 == 0:\n", + " print('step: {}, loss: {}'.format(step, loss.item()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting the joint distribution:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEYCAYAAABRB/GsAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABttElEQVR4nO29eXic13mffZ93mxUzWAkC3CmKEiWZkrVYkmPLirzRkePUblInjV27beTEvaq0/uq4cZzWcVKnaeIvTqKsUpLGsf3VaRJviRzK8qJItmnZ2kVxEwmKCzZinf3dz/fHmRkCIEiCJIABiXNfl0RgZjDvMzPAec55lt8jpJRoNBqNZvVitNoAjUaj0bQW7Qg0Go1mlaMdgUaj0axytCPQaDSaVY52BBqNRrPK0Y5Ao9FoVjnaEWguO4QQZSHE1mW83sb6Nc1Fer4/FUL8t/rXdwshTi7G89af7/VCiIOL9Xya1YF2BJoVgxDiMSHEz53vcVLKrJRyYIHPKYUQ285x//uFEFF9oS8LIY4KIf63EGL7jOsdr18zOs+13i+E+M4C7P8FKeVvLMT+8zH39Ukpn5BSXrMYz61ZPWhHoNHAHillFsgDbwJqwNNCiBsW+0KLdarQaBYT7Qg0KxIhxH1CiMNCiEkhxFeFEP0z7mvugoUQfyWE+CMhxMNCiJIQ4kkhxFX1+x6v/8jz9d3+u891TSllJKU8IqX8D8A/A79Wf57N9Wta9e/fL4QYqF/vqBDiZ4UQO4A/Be6sX2t6hn1/IoT4mhCiAvxo/bb/Mef1/ooQYlwI8YoQ4mdn3D7rlDTz1DHf65sbahJC7Kg/x7QQ4iUhxDtm3HfW906zutCOQLPiEELcA/xP4F8BfcAx4Avn+JGfBj4BdACHgU8CSCnvqt9/Yz208zcXYMYXgdfPY1sG+APgbVLKNuC1wHNSyv3AL1A/XUgp22f82L+u29QGzBc6Wgt0A+uA9wEPCiHOG9453+sTQtjAPwBfB9YA9wOfn/Pc8753mtWFdgSalcjPAn8ppXxGSukBH0XttDef5fFfklL+QEoZAp8HbloEG4aAzrPcFwM3CCFSUsphKeVL53mur0gpvyuljKWU7lke89+klJ6U8p+Bh1FO8FK5A8gCvyWl9KWU3wL+EfiZGY9ZivdOc5mhHYFmJdKPOgUAIKUsAxOoHfN8jMz4uopa/C6VdcDk3BullBXg3ajd/3A9rHLteZ7rxHnun6o/b4NjqPfgUukHTkgp4znPPfN9XIr3TnOZoR2BZiUyBGxqfFMPx3QBg8towzuBJ+a7Q0r5iJTyzaiw1QHgocZdZ3mu80n8dtRfY4ONqPcAoAKkZ9y39jzPNZMhYIMQYubf+UaW933UXAZoR6BZifwf4N8KIW4SQiSA3wSelFK+chHPNQosqOdACGEKIbYIIR4A7kbFzuc+plcI8RP1hdsDyqhQUeNa64UQzkXY+QkhhCOEeD3wduBv67c/B7xLCJGuJ8j//ZyfO9frexK1y/+IEMIWQtwN/DjnzrdoViHaEWhWGlJK+Q3gvwF/DwwDV6GSmhfDrwGfqVfNnC3ufqcQogwUgceAHHCblPLFeR5rAP8Parc9CbwB+GD9vm8BLwEjQojxC7BxBJiqP+fngV+QUh6o3/dpwEct+J+p37+g1yel9FEL/9uAceCPgX8z47k1GgCEHkyjWSkIIZ4Bfl1K+eVW26LRrCb0iUCzIhBCXA/sAJ5ttS0azWpDOwJNyxFC/C9Urft/lVIeO9/jNRrN4qJDQxqNRrPK0ScCjUajWeVoR6DRaDSrHKvVBlwM3d3dcvPmza02Q6PRaC4rnn766XEpZc/c2y9LR7B582aeeuqpVpuh0Wg0lxVCiHmLMVZMaKje1fmsEOIfW22LRqPRrCZWjCMA/hOwv9VGaDQazWpjRTgCIcR64F7gz1tti0aj0aw2VoQjAH4P+AinxbvOQAjxASHEU0KIp8bGxpbNMI1Go7nSaXmyWAjxduCUlPLpujrivEgpHwQeBLj11lsXvQuucOAAI7t3UxsaItXfz9pdu8hfez6ZeY1Go7n8WQkngh8B3iGEeAUlj3uPEOJzy2lA4cABBh56iKBYJNnXR1AsMvDQQxQOaJFGjUZz5dNyRyCl/KiUcr2UcjNKavhbUsr3LKcNI7t3Y+fz2Pk8wjCaX4/s3r2cZmg0Gk1LaLkjWAnUhoaw2tpm3Wa1tVEbGjrLT2g0Gs2Vw4pyBFLKx6SUb1/u66b6+wlLpVm3haUSqf7FGBur0Wg0K5sV5QhaxdpduwgKBYJCARnHza/X7trVatM0Go1mydGOAMhfey1b77sPO5fDHR7GzuXYet99umpIo9GsClpePrpSyF97rV74NRrNqkSfCDQajWaVox2BRqPRrHK0I9BoNJpVjnYEGo1Gs8rRjkCj0WhWOdoRaDQazSpHOwKNRqNZ5WhHoNFoNKsc7Qg0Go1mlaMdgUaj0axytCPQaDSaVY52BBqNRrPK0Y5Ao9FoVjnaEWg0Gs0qRzsCjUajWeVoR6DRaDSrnJYPphFCJIHHgQTKnr+TUn58ue0oHDjAyO7d1IaGSPX3s3bXLj2oRqPRrApWwonAA+6RUt4I3ATsEkLcsZwGFA4cYOChhwiKRZJ9fQTFIgMPPUThwIHlNEOj0WhaQstPBFJKCZTr39r1/+Ry2jCyezcnv/zlM25Pb9igTwUajWbJ+Yerr4Y4Pn2DYfDjL7+8bNdfCScChBCmEOI54BTwqJTyyeW8/qEHHrig2zUajWaxOMMJAMSxun2ZWBGOQEoZSSlvAtYDrxFC3DD3MUKIDwghnhJCPDU2NrbsNmo0Gs2SMNcJnO/2JWBFOIIGUspp4NvArnnue1BKeauU8taenp5Fu6bOA2g0mtVOy3MEQogeIJBSTgshUsCbgf+1XNcf2b17uS6l0Wg0F8VSVzWuhBNBH/BtIcQLwA9ROYJ/XK6L14aGlutSGo1Gc8EsR1Vjy08EUsoXgFe36vqp/v5WXVqj0WjOy8ju3dj5PHY+D9D8d2T37kU7FayEE0FLWbvrjHSERqPRrBhqQ0NYbW2zbrPa2hY1mrHqHYHuE9BoNCuZVH8/Yak067awVFrUaMaqdwQajUazklm7axdBoUBQKCDjuPn1YkYztCPQaDSaFUz+2mvZet992Lkc7vAwdi7H1vvuW9RohlAKD5cXt956q3zqqacW9Tn/4aqrzrjtx48cWdRraDQazXws1/ojhHhaSnnr3NtbXjW0UtCLvkajaRWtXn90aEij0WhWOdoRaDQazSpHOwKNRqNZ5WhHoNFoNKsc7Qg0Go1mlaMdgUaj0axytCPQaDSaVY52BBqNRrPK0Y5Ao9FoVjnaEWg0Gs0qRzsCjUajWeVoR6DRaDSrHO0INBqNZpWjHYFGo9GsclruCIQQG4QQ3xZC7BNCvCSE+E+ttkmj0WhWEythHkEI/Bcp5TNCiDbgaSHEo1LKfa02THNlsn+4wO69owxO11jXnmLXDb3s6Mu32iyNpmW0/EQgpRyWUj5T/7oE7AfWtdYqzZXK/uECDz5+lEItoC+fpFALePDxo+wfLrTaNI2mZayEE0ETIcRm4NXAk/Pc9wHgAwAbN25cXsM0Vwy7946ST9nkUzZA89/de0eX5VSgTyOalciKcQRCiCzw98B/llIW594vpXwQeBDUzOJlNk9zhTA4XaMvnwRgvOxy+FSFQs3HEMY5F+XFWMAbp5F8ysYy4LGDp/jSs4O8flsXr93WxaHRinYQmpawIobXCyFs4B+BR6SUv3u+xy/F8HrNlcncBXys5OJYJkEU8fSxaRKWAVJSC2KCKEYISNgmr97Qznvv3MSOvjwPvzDIA986QsULCGNJHEvCGLb1ZLjjqu4zFu2zOY1f+eILvDRUpOQGFGohnRmblG3iBTHVIOLVG9rZ1J2h5IYUagEfuGuLdgaaRWXFDq8XQgjgL4D9C3ECGs25mLkIO6ZgtOixoTPdzAeMFj1iKZms+DimAKDghvhBRMENkBIcy2C44HL4VJn3vXYTD3zzCBNVj8myTyxBAo4BLwyGDBVcHtk7wjtv7qPqS/YNFzgxUWN7b5ZN3ZlmDuJNO3r4zuEJOlIWtSBCAJOVgLU5g4mqT3c2wUjJY0tP9pzhqos9mewfLvDZPcd49sQ0AsGrN+R5T93RaTQtPxEIIV4HPAG8CMT1m39FSvm1s/2MPhGsbs62GM4MvbQlLR4/NEbJDbnzqk4ADp+qMF72SNkmFT8kaZm0pWzGSy7D0y5eFCOAjrQNCMJYsqEjxVjZY6ToIVBOoIFlCHraHBKmwWQ14Eev6WG44FJ0Q7wgIpOwiKTEMQ3iWGIYyvEMjJVxg4goBsOAlG1y7do2Kn7Mm6/rBSCWkuGCy6d+6sbma/7snmN85/AECUuQsAzcQGIZgvvfeBX37lx31vcG4Ld3H+T4RJVswqTqR4yVfZKOwT3XrGmefDRXPmc7EbTcEVwM2hGsXuYu9jPDKLv3jlKoBc0d9aP7RgnCiOlagBfGpGyTrqyNH6pF/Jq1WTIJi4dfHKFUCxACDAGWaZBxDCIpiCX4QUAt5AxHANCddXBMg0LNJ592qHghjmng+hHphMWmrjRuEHFkrMK2NWn2D5fwI/WzjecTQNI2yCRM2lMO07WAKJL0d6T4D3dv5buHJ/jO4Qm8ICJhCaaqAX4Uk7QMbNOkLWnxx++5GeCM9+bEZJWRosvgVI2EJWhL2kxVAwBMA/ryKbb2ZHUYapWwYkNDGk2D84U99g8X+PhX9zFZ9unMOmzrydDTphK/n9tzjGdOTIOEtpTNtp4MhoCRokvVj7BMQRjHlL2AtGORsAy+c3iC7qxDwhKUgLi+yodRTMWHXNIiklBxz25zxQspxhKQ1PyIjGMxVfWJYokZxgghEEJgGrBvqEQ0w5PIGf82chRT5YCkLQgiyYHhgPv/v+fIJkzaMzaFukMTgG0JIgkJA8ZKHp/bc4zutiT5lE0QRfzgaJFTJZepSkBcP5VIqZLlacckYZl4YUQQSfIpe9mqpjQrE+0INCuCmTv9Rjz/4195iYofUfZCsgmLjGMyUfHpTNt4QcQzx6e5eWM7Esl3D0/SkbaRUjbvK7sBbhAjpToBhLHEDyVSBtimQ9ULecULSdmiaYcQEMUQxjFtCbhtUwffOjhGHMbNuOVMbFPgNxZnQ9CVdRgvewihnsMNIrwwxhACECAlpmCWQ2gQx8opVAKJwek4adGLKHkRhlD3SyCKJVLGSCkJIskj+0Z59cZ2urMOzx4vkLAMvCDGEFD2QgLTIJaSsH5hyzCwDEE2adGWtBicri3mx6m5zNCOQLMimFvff6pYY99QkYRtsrU7zcB4laofkLQtxkoejZBmyQ3IOhYdaZsb1uXqlUCChCl4pawSwtIURDHIGEzAC5VDaM/Y+KGk7AX05hwmK6oqSAjlONKOyS++6WpKXsB3D09SX8pnOYSg7gQiCdM1v26XJIzAICZhm1zfn+Mfnq+RS5oU3Ygwnr3QW4ZyPkLQfC7DUI6hgWz+TxFL5QyEEGQckyiSnJiocWy8SsoxSdomVT+kFoRNx9agFsQIEdDblmRbj6pSWteeWtwPVHNZ0fLOYo0GVMiiLXl6X/LcyQKOZai4vWHghxFuICnUAspuiBvEeEHEqZLH4fEKE2WX508U8MOI8bJHoRYggXUdKa5ao3IBhqFW2sauuiuTYG0uQRRLvFDSlrSwTIFlCNZ3JNnW28aOvjwfu/c6OjMOKcfAMgWmgJQtaE9ZhBIStkHSEoSxqkDKOBaOaZCwLbZ2p3EsE8cyyKUdNnWlAbXQN4glOJY6lTROCqqYbjYRs38GIOOYSCHo70ixvTfLSMkFKSm7AbUgIgjPzGsAVP2YUs3npaEiJyarzaSyZnWiTwSaFcG69tSsRG/FCzEFeEHMgZEiZU8tg7FUCd2gvhKaQpK2DcZKPmUvZl17krakTdkNWdeeVJU5QtCXTzAwHhKFkLSgL58kk7Bwg4i0Y1B2QzJJi65MgkzCJI5hTVsCgB19ed56fS8vDRUJIsl0zSfjmBRrIQnLpKctwcunyjgW5BI2QkB72sEyBc+fLPCW69bygbs287nvnyCRMMknTUr11yOAtoSFaUDZi4jqniCOz1y+G8llU6jXZJkC2zRI2QY3rs/TlU3QNVgAIRgtuWQci+komN8TACU/puZHlNyAz+45hh/JWZVGugN69aAdgWZZmVvnLwAvks2afzrTamcuBAU3JJcw8WM5ay2buUYKACHwo5jADSiPBuSTNinHZOf6PLUgZrLiE8WwoSPNiYkqa3IJ0o7ZjN93pBMURMjGzrSKrYcxJTdk5p78vXduauYw3CDkh0enqHghG7tSmIbAMiDt2CrcI+HOq7royiYYLrh86M3bAVjfkeYze45TrNmYpsnmziQT1ZCyG+KFEX35JGMlDy+I5127bVOQsk1MQyWg045JX3uqmTQv1AJ29LUxMF7FC2KyCRNTCOJ6GK3xekzVQ6eSxrbBeNnHC4vctb2HQi3gt3cfxBBiVv/Fg48f1ZVFVzDaEWiWjYdfGOSBbx4hjCUJW1CoBDi2ye1bO3Ask1hKgjBiuBDSkXGo+iGGYRCF4dkTrNA8LRhCOYmyH+FYBkEs+ciua2btbNOO4EvPDjNR8enKOGzuSvPsiQJ3bu1gshpSdANySZvr+tvwZlxwR1++WaJa9kJu39rJCycLuEFMNmmypTuLWe8TSNpmc2GeGXu/d+e6M+r9XxoqUHRD8imL6/rybO/N8HdPDzIwVubYpErgCiBtG4RSEsYxnZkkH37rdr6xf6xZKlqoBZyYrBJLyfY1WYq1gLIXIoTErucgjPp7KOVppzJccOnPJynWAp48Osl4yWVo2iWMY9rTDn25JDs35HVl0RWOdgSaReVczV4PfOsICOjM2LwyUcGPJG0GPH5onHzKoeIFvDg4TSZhU/FCru7NMl4JKHlqFxtFZ16vcTpwTIFtCgwhSDsWQSQp1EJ29OXPWLzu2r5mlo3ZhIVtmWxfazcfU6gFrGmzZ/3c3OeaWenUOCVI4Lr+Ngq1gEIt4N23rZ/3fZrPrgZbe7J8/Kv7KNZCQGKZRj0kJMilLH7sVf3cu3MdW3uys16Hn0vgWCb5lE02afHM8WlcP+RUySOSMWH9vYokGDGUaz5eDCejKhEqzDRe8vBClViOopgTUzXKXsgdV3UyOB0u+PPWXF5oR6BZNOYrAW2EFHbvHSWIYroyDkKoRi0DGC/7JG2TpBUyNF0jklB2A7wQJis+O9fluHt7D4+8NMpExQfUzzUSvg1UuaakLWEikfhRRC45/6/32RZ0YFaT2tkW8ZnPM/eU0Ah1rWmzefdt6y9qUdzRl2djZ5qt3WmeO6FKQVU5aMRULWzG8Oe+jg//7fN0ZdVr7mlLcvPGdg6fKuOGMR0CRkpeM1QUx5JaCElLUPYiErah+h+kcrpI9X6mHdWJvG+oxN3XrJll57k+b+0MLi+0I9AsCo1mr4myR3c2wbY1GbqzqtmrsWPsyjh4YUzSNhFAsRYQo0o1hwsuErXDD2PVaesGMS+cLLI2nyRlmziGIAYSlgprRLGk4IZYhiBjm5j1nbNA0JtLcn3/whajmQt6Y2e70EX8XDv7S6GRPL95YzuHxyqU3RDbFLxuW9dZrzc34d7TlsSxTO68qhuAV8bLjBQ9Do4U8aMYU6j3UYoI2zQoeyFSqkQ0AoJIYgioBRFT1eCMyqJWS3prFg/tCDSXTGNnOFn2SVqCV8Yr7B8usrEzzavW5xicVnXqQRhxcLRMzY/wo9OhipofNb8GVT9v2YKkJfAiyVPHptnak2XbmgyvTFSp+ZHq3DUEvbkEGzrSTJR9sgkTicoZbOzMXFBJ5FIt6BfLrht6m7vt27d0Nk8p771z03l/Bs482fzFd15hY1eGzd1Zim5AW0L96Ze9CD+MGCrU8MIYU0DasTANQRDFuGFMwjKbDmj/cIEHvvEyPzg2RaEW0J6yuXVTB9vX5prX1c1plx/aEWgumcbOMOUYnJiskbBUSeNYyePxg+MYAopeSNWLSNkGRj2MY9TrIed27EqUzANCkDAlQRSTS1qcnKqxuStN1Y+YqPjYpsH991zF1p7sLGXNO7d2XvbKmhdzSjnXz8w8LeSSNm6gEi6mod5ryzBoT5n4oerkNoUgYStZik1daTZ1pbjnU99mYLzavJ4BTFV9Hjt0ikOjJRK2hW0Kru/PLfXbo1lktOic5oJpJAj3DRco1EKOT1TY2JlmouwxUQ1I1JO2ZS/EC2KCWGKbKo4fxypZmatLG4yXfUASS9XxC2qBMepxatsyaEtavPu2jRwbr3BotMyGrhTX9eV1YvICmBnP98KQJwemmmJ3kQTXD8kmbaarPqeKHhJJLmXTnUlgmYLhQo2SGzX7N2C2CJ8hoDvj4FgG16zN8eG3btefzQpEq49qFoXGgjJV8XjhZIEwVjv2jrRN2Yvoztp4oaTqR6pOP1D7/XTCREpJWBf0F0Kwc32eQ6NlwigirMsghLFaYEwDkpYBCO7a3s3VvWqX2djVNmrzNQtnZoVPwhRI4LtHJsg6ZjOBX6j5pG0D27Kakthf+MFxim6AH8bzlvCCcgQ92QSGoZrqDFPwluvWame9wtDqo5pFYffeUeI45pnj0wRRDAjiWHKq6JFJWExVgmZPQFwP+9iGahyLJYSRREpASMbKHmnHxA/VotSddYhiSdFVKpu2aXDbpvamEwAdg74U5suD/MoXX+DJgUmySYu0ZTBciKh4Ees6Ti8NbhjN2+k8k4Rl0NOWYHCqhuu7mKbBwy8M88jekVnzEjQrE+0INBfEk0cneO74JG5dn98xBaYp6iJoMeUgpiNtsK49yeFTFQAkkiiW+FE9GyAgmzCZKPmkHIFE1ccDXN+fwzCMWfMFZqIF0haXuTMWHNOg5kezuqplLPEjeTalCgCCKOblU2UESg21PW1T9QPKXsSvfOklHn5+mHTSZl17iu29GT2feYWhHYFmwTz8wiD7hor40Wm5Ai+SOCh9/CCGbT1Z2jMORTdQqpi1sBn2MQCEygG8bls3lmEwUvLIJa1md+3m7uysheFi6vs1C8eLJLdv7WBgrErRDVjTlqBYl++OpeTFE1O49Qaz+QbzgPo8TUMQ1ON6UqpKMMswcCxBoRrwvYFJ3vaqXo6OlfniMye5qidD1Y949vgUj7w0wv336FNDK9GOQHNe9g8X+NyeY/zdM4MEUczcKIEfSZKWQSBjbt7czpq2FONll+/6EUEU40VqlxijfuHu2NrJ1b05NTDFNpvjGOdyKfX9VwLL0bXbqCa6Y2tX87ZXxssMFz2GCy6Hxiqsa08RRjGD0+4sR5B1DBBgCkN1LtdPDZahCgMsU1Cqqh4FIWBgrKruNwUvDhZZ35GiK+NQdEMe+OYRtvZkV81nu9LQjkBzTvYPF/jUI4c4OFJUA1bO8jgpYVNnmoSlfqUOn6qQT9k4pkHZD/FDNSCmL5/kls1q0VlImGel1ffD2ecCz6cddCGL91xBvtGit+TCb/P1HhiGwSfecR07+vK84Xe+TXfWYbDg0tOmKoimqz5BJLlqTRvHJ6qkHINaIEhlLIIopuKFzXxQFCup7KRtUnQDBALXj4ilJGmbgKogm6wEuhGthbTcEQgh/hJ4O3BKSnlDq+3RzGb33lHGyx5BJLEM1fU7H0Ecc/WaLCcmq9CZplDzSZgGhiG4e3sPAM8cm6YWqEVgpYd5zqaSmjAFQwWXTV2Z5gL9qUcOEUtJW8Li5GQNBBSqPmnb5MHHq3zgri0AZ1Ts+PXnk8BY2ePERI3tvVk2dWd4/NAYJTdkbT6BIewl69o936mrN6cE6fwwxjHVNsAyDGIZg5QYBiRsEy+UZJMWphBU/YggjKn4AVJKKn5EJmGSSyoNqYmKj2kITkxV6Uw7mIagM2PrIoAW0nJHAPwV8IfAX7fYDs08DE7X8EJVCtoY9zgX24BEffjK/uFpBsbLlNyQzrTDrZs7mnOF1eAUFXJY7jDPfKWTM/X3G3Y0wmBPHJ6gI22zNpfg8KkKErh9awd7h4qU3ZC+fJKJcsThsQovj5ZwTINswqRU3w3HsWSy4pNL2Xz4b19gbS7Jhs40tgn/fGiMsh+RtgTVQJJNWORTFgg4dKpMEMUMTtcIo5hvHxzjR6/poTubXLKKqXOdut5350Z+658OKu2hKCKW6r27ZWM7JS8iaRlMlHy6sg7dGUfdZiuJbz9UilCNqjIpJRPlgCCSRJFkZNplZNolnTC5dWO7LgJoIS13BFLKx4UQm1tth2Y2M2WSTxU9akFUl1me7QgSplAD02PJwdEySccil7TYuS5fnxsc0pVVJwDTPB1yWO7X0mimsk3YM6DGTt62pWNWyAVUcnpgrEx7vYrpqWPTZBwTL4z52osjuEGElHDi6QoJy1QaPW6AEDBeVmEOCRRdpdsTRDGlWsihkRJJ2yCIJGEUY1sGVS/GNAyqfshYWSXag0jyg1emsAyBYakKnqePTXPLpnZs01z2xbKRwP2TxwY4Ol4hm7B47eZO1ubTFGoBN/TnKLkhIyWPshuSS9nU/JDJiiTtWKo3JJJUvJBTRSUDEsYxQb1fxDDA9SP2j5T4qds2LOtr05ym5Y5goQghPgB8AGDjxo0ttubK5uEXBnngW0cIohgZqyEtQSzPGAgggEzCwo8ktimaKpllL2JzdxaA4aKHY5uLfgK4kETqA998maeOTeGFMVEs6co4tKcd9g4WSScsJss+H//qPq7uyRDHajeOBMc2cIOQiheStg2qntI4kvXXHkQRpojqw+TVtaZqs6Wap+vfR7EkmDGVjEg1zyWEEn/zI8lgwcUUkiBSwm+FWohlCuI4Zu9gka092ZaE0hpzFGa+5/mU3dQw2tSdYUtPtvn4zz95DNMQbO7OAHByqoppCCp+RNKx8CKJiFTOyKyXkuVTDodGK9y77K9OA5eRI5BSPgg8CKqzuMXmXHHMlI145tg0uaRF2jEZLKiB7I2hLw0aZ4NYStrTDiCb072ydfnnjV0ZbOvsVUGXYutC5Y8ffmGQxw6Nk7QMMo7JRMVnuOASxTElL2JzV4aEBfuHCjxzbBIkWKYqe6wGIVVfrfB+feGyTRUei6V6D0LJrJr7hSA5nWvxQhBIJaMdxlTCGBlLqvV8TBRLTkzVWJtPznp9rZgDMF8Iaa7i6VjJpeyGSCQnp6p01hVnqfeSjJc9wvqGoqE2K5AMTlf5+r4R3VPQIi4bR6BZOmYurIVqQBjHaki8F5IwBa4pcEPZ1ABqLGIGUPZCHEtgGgZjZY+EZTZFx5aq+ets8sef3XMMAewZmKDohmQTprKvPrRGCIFjKmd1ctrDEHBgRM0hnunkwjDGDZlVIdW4P4pPO8XGj1zqrkSiqq68KKKuyIElIWUJEIIgkpgwywk8+PhRoihmpOjy3PHplnXwzqw6agznseqjNL0gZnCqhh9GVPwYEwiZLTIY1R1pEKqQ2cww3VI4uiAIOHnyJK7rXvJzrWSSySTr16/Htu3zPxjtCDTMXlhLXkjGsfDDmLIf0ZGymjveGJD1v2JZ/88ColggBEyUfW7eoIaon29C16UwOF2jL5+cdZsbhDx2aAxLCEpuWC9zDCnWApKW6l5OEmMaSmcf1ELvhWdfxucrkIoaL3wJqAuCqtOWpB5Hj0HCaMnl048eYnC6xvHJKmlLMFLySVgGnRmbsbLHf//KPr707BDX9y+fIF+j6uize47xjf2niGLJ2nyCihcRS/CDmKqvyo7bUhYVL8Kf4XVNUX87hSonzadsPrfnGNUgXpKBNydPnqStrY3NmzcjxIWe5S4PpJRMTExw8uRJtmzZsqCfabkjEEL8H+BuoFsIcRL4uJTyL1pr1eqisbCOlVyK9QXcCyOiGKaRzV0qnLkGxqBi7hmHtW2JZakKmhuOANg/XCKOJQFqZrBlCsJILfx+LJFBiBuo7tfGazibgFqrkUAEzWOIAMpezGMHT7Gjr43h6RpjJQ/bFORSNoaAsZJPFMfsGyqScVTZ6pt29CyblEOtvnB3pm38SBJGkmzSZqToYhmC9R1JvEhSDWIMKZvy40IoWQtTwHDB5fsD44yXfV67tWtJBt64rntFOwFQgo5dXV2MjY0t+Gda7giklD/TahtWO+vaUzx3fJK9QyXcIKLmnx4OrKQG1O557g5ZoJKaJS/AMg02bek8Z6fwYjFfE9RUNSDtmJTckISlGpVMQ51Ugoh62evSrvyi/t9ZWi0umobVI4Uah0+V6t3dAtOAkhtQdE8nocdKLs+fLLC5M8UD3zrCHVu7lnyMZONE2Z1N4AaqfJS0Q6K+w3dMg7aUQ0+9gWyq6hNGEscyyNQri8peiFMvuS1WA757ZEKp2mYcDo9VKNUCECyKM7uSnUCDC32NZ2sU1awitvdmePZ4AT9UTiCmHgYChARLzL+4mQIcS42UzNYX5OUob2yEI/IpmwMjRfYNF9WiWAspuSGjRZfRostY0cOfZ+B9g0txC8oJqvcAZvxrChKWUEN3FplCLSSMJQI1d9j1Y8re6RcoUeGkk1NVnjtZIIhi/DDiyaOT/ODoJANjZT6759ii2zU4XaMtabFtTQYvjHGDCMcUTJbV8KCrZ9zenrJBqtBXm2MyVfWZrATEsaTsqtOoRFL2Ap44PM73Do/jBZFK0kcxH/rC89z31z/k048eYv9wYdFfSyv4tV/7NT71qU+d9f4vf/nL7Nu3b0ltaPmJQNN6Do1WSDkGkxX/jAU/Atpsg0hK3FBJSDd2voahAryGEKxtSyx5p/DcSpm0IzgxUVPTzpAUG2WugCEXf2c+E1n/X2PjtaFT1dV3ZxzGyj62qVxpxYvPcDhi5nNcAFF9XoNRF3aL5zyJ4PTOrlALQUr+8cVhUnWJaCR85/AED78wuKgho0aorjub5JZN7Rw+VWG87NGVTfC+Ozfyjf1j5FMOI0WXihexpi1Be9pmYLxal5lQMtcRkDUEiaRN0Q2oeBGOEZBPOxRrAUIITBsK1WBJTzgrjS9/+cu8/e1v57rrrluya+gTgYbB6RqGIZr18QazSyJrYUxHJsHW7jSOZWCaglTCpCNtk7BNtvWoOvKl/KNsVMoUagF9+SRHx8r80bcG8KKIzowaiiORWOLSwjOCM3f5jdstcfrrBlLC+nyCnevUOMhTJQ/TEGzqTNOXT2EZAscUWAakLLWIG0LVz899n63z/DVG9Uqlxr9zaeQWQpVfpuBGeEFEoRZyZKzCdC0gaRk88M0jzfexsaBeyu561w29zeKAzkyCHX05dq5v5xPvuI57d67jA3dtYUtPlo1dGe7d2cefvPcW3nBNL++6eT3/9ke2sL23relY3Xo3cjahihQq9VBTW8oml7LJJS1KXtgsbti9d/Si7V4I+4cLfPrRQ3z4b59f1FPIJz/5SbZv387rXvc6Dh48CMBDDz3Ebbfdxo033si//Jf/kmq1yve+9z2++tWv8ku/9EvcdNNNHDlyZN7HXSr6RKAhYQoKVb9ZFjp3kYli6jIINoYQjJZ8btvcsazVKXNLRkdKHrGUjJU8Sq5q+gLlACxjdq3+2WiUwzaG9KUdteAkTIPRoksswapLJIAg45i4QUiMKukUgG1CJmFT8SN+56d28ruPHqJQDSh5IZ2ZBAnLxBCNMluTU0WXahCCFDiOQVtC6fR4QYgfQyzPVHcFmoN9LgSJqooyUMqvxyZrtDkG7ZnEoiZiz6dXNF//wf/79UOMFGoMTrmUvKCZuPdjyXg5wDbVzArTMLhjaxeP7hsllVClv7mksnmphxRdSL/KhfD000/zhS98geeee44wDLn55pu55ZZbeNe73sV9990HwK/+6q/yF3/xF9x///284x3v4O1vfzs/+ZM/CUB7e/u8j7sUtCO4wtk/XOCze46xZ2CCkhvSlrS4c2sX760Pd98/XODgaGlWZdBMTKFkE/Jph7IbknIs7n1VJ7/5rp3L+jpmVjYdHquwb6hALYiaXmvuGMWFLJqZhNJHKrmhql6xTK7uyTAwXuU1WzoZLrgq6SahN+cwWvRpz9iU3ZCh6Sq2aZJOmCQdNZEN4Lq+/KyKpvGyy54jk7QlbXb0tfH0sRh3OmZDR4qbN7dTcSNeHCxgmYK+pE0UR5ycdgki1a9wWtRDTYIzzdNlpgul8dEKoOzHGEbAeNmlO6tKcBdjQb0Qldj9wwWOnCozXvYJwoh4zu9eo68iiCXZhEGhFpBNmBRd5exvWLe0fSoNztavcqnVS0888QTvfOc7SafTALzjHe8AYO/evfzqr/4q09PTlMtl3vrWt8778wt93IWgHcEVzP7hAr+9+yAvj5YpeyGGgKmKz+OHxhkuuHxk1zV8bs8xTkzWsIQKK8z1BxLY2p3m9i2dTcXQ9965adlfS8IU7N47zFB9war5cdNWP4xwLINa3ZstdOe8Npeg4IZYpoFtCrb1ZLhpYyf/6rYNHBqtYFsFCrWQXNKadfr59KOHzihfLdSUjPLciibbNNnSnaE3l8CPJD/2qv5ZE7q29GT54I9eBZxuoLpjq2Cy4rN/pMhUNWRtW4KtPWm+dXCM8Bx9D+ejEfoDJRPecATLPfVt995RbNPAMgTVWCmYznQGBuozbFR97RsuNu1em0vw8miZ7w9MYpsG999z1ZLZOV+/ylKeQt7//vfz5S9/mRtvvJG/+qu/4rHHHrukx10I2hFcwezeO8pkxcePIhKWUa+tlwRRxGTF53N7jvGNA6co1BNxlqkUORs0TgMT1ZD9w0Wu788vm2LoXLXQZ49P8cp4VSWGjdkOy4/AjOKzTtCaiVlPtFqGwLJMurMWb96R5z31E1KDc2nenGuBmDdM8tbtZ7xn8z3/fO/rzPdh+5o2XpmoUPMjLsYfGELlOSQwXvZaJgeuclLQ35GkNBI0Q3Nw2lFFEvpyCUzT4Lq+HIVawD1rM3zpmWHCul7U2lySb+wfW7KBNvP1qyyG07zrrrt4//vfz0c/+lHCMOQf/uEf+Pmf/3lKpRJ9fX0EQcDnP/951q1TXeJtbW2USqXTNpzlcZeCdgRXMIPTNRUyiZUOEKhdlhfG+GHM945M4IUxQii9FyllsyIo5Ri0px26swkAru/P86E3b18Wu+fGZh/ZO8JQQen8G+K0wNtMFhotcSwDAdy9vYc/fu+tF2Xf+RaIxRymM/O59g8X+Hd/9RRBFF/wyUCgBsxbhqA3l6Ajk2iJHDio9+/lUbWwdaQdpir+rPtjwDGUvEY+5TTf528eGOeOq7rmPYkthf3z9asshtO8+eabefe7382NN97ImjVruO222wD4jd/4DW6//XZ6enq4/fbbm4v/T//0T3PffffxB3/wB/zd3/3dWR93KWhHcAXT+IMzDUEUSyyz/q8hcCylDdSTdRiedqkFp2PsErBNk460Q8IyKLrBsg4N2b13lDiO2T9cpOgGHJusIKVcUGxcFSOenVzSZlNXmvvfdPVF27dUC8T52NGX555revja3hFiGRDGCw+DSVT3rwAmyh6v2dx5xiloudh1Qy97BwscHa+Qsg3GZryGZtd3LDk5VePqNUrVtC1pMVp0uX1LZzNPVK7rSeVSC9PTuVCWclTqxz72MT72sY+dcfsHP/jBM277kR/5kVl9BB/84AfnfdylsGBHIIR4M/CvgD+SUj4nhPhAXRFUs0LZdUMvL5ycZqLsU/ZCgkiphWYTNp0Zh/GSy0TJx5tni92dtckkLNwgImEtrw7+vuECxydUjbkhOEMU7lxYpkDW5yPD7IHr69qT/OQtGy650qmVs5Tfc+cmnj42TdE2GC/7xFLOqo6arwN8JhKYrIb8fz84wd8/c5KbNrRz+9buZVX93NGX58Nv3c7n9hzjH18cbp5ChTgt+xEDtmkwMF6lPe3gWCa9uSTHxiscOlUmYRnNBHLRDdk/XFgS+1fiqNSl4EJOBP8O+CDwq0KITuCmJbFIs2js6MvzkV3XzKoayidt7tzaxY9s6+JTj1QYK/uYAmzbqOcP1Imh6IaknZCyF7GlO9Ocy7scFGohXhAxWfFU1+kFREFSjkEaQcEN6zX7AtMQdKRt/vx9ty5JyGY52dGX5/43XsV//8o+HNNAInEkuGFdCsSAnGMx7YbnfB6Jqtn/4dEpenPJ5kjN5XQGn3zXTp45MU3C8hAIqr6a7hbFMX6kekKmKh7/tHeE3rYk77y5jy89MwyCpuQ5wDW9WT3v+BK5EEdQklJOAx8WQvwWcNvSmKRZTHb05XnvnZvoaUvO6iTdvXeUTV1pTk7XlBpn3QFkEwY92QQTVRV6uHPr8oUQGonRgbEy0xUfKRce+28gUfLHacdkU1caL1Cv6/43XnXFLBT37lzHl54dolgLKHsR2aTFwZECNV/le9IJc5YjMMXZBfYiYO9ggddvX9OSxVQgyCdtJqtBcxMCyoFHCOIwRkpJLQj5o8cGCIKIbMLCC23WtCW5YV2OzkxCzzu+RC7EETzc+EJK+ctCiEvrYNAsC/M1xXzqkUO8eHKK6WpAFKsjeaNUL59yuOuaXvIpe9mSww07P/XIIcbLHmU3OGv37LkwBHiBmhjWmXKIJbxmS0ezZ+JK4vr+2f0KB0eU6mgYy1mVX3B+ldWT0zX2DRUYLXnA4gi7LZRXb8izZ2CSroyDF6pO6Eak0g1CkpZJFEuKtRDHEISGoOxFBLFshv3WtoWzJqRpLpzzSkwIIX5fCCGklF+ZebuU8oGlM0uzWMxsijGE4FSxxg+OTnCqrHb8jS5cpBpAH0SSQi1Y1lAQwOf2HOPASJGRgksYyYsShBP1/69pS/Kum9dz+5auZm/BlcZMWYdYqqqwSMKmrgxrc0nsCxCP8UOl09Rb14u6VMmJC+E9d25iS3eGlGOqec+ysTFRn2fJDXGDuN7wZ2AgCKWkVlfJLdYCnj0xzfbezLLYe6WykF+XEvBVIUQaQAjxViHEd5fWLM1i0VCGBNXl+t3DE1Trkpwx1GUNVGt/yQsxhGyJkNeegQkKVZ9Czb+gGnlTKGdm1qeGWYagrz2FIcSy6dG0gpkKrMMFl1s3dZCyDcJYMlnxSNaluBdCo3a/O+uwf7jICyen+fhX9y2LM2gkju++Zg3taSV9kU9aGPVKN4kaBzpVDThV8qgGUVPZtRpE5FM2N29s59BoZcltvZI5b2hISvmrQoh/DfyzEMIHysAvL7llmkuiEW9/+tgkFS8kk7AouyGVekJuPhKmIJ9OLK+hdSYqfnP2wYUQSaU0apkQRxBJybae07vDpdajaSVzE9YPvzDIZ/Yc58RUlVzKoj1jc3LKPe/pKkZViQ2MV9XEs7TN8HSND/3N86zvSC2ZptRcNdl1HUliGWMaghOTNdxACQnCbO0oP5TYhmBjR5o7tnYRS3lZfcZ/8Ad/wJ/8yZ9QLBZ55zvfyR/+4R+22qQFhYbeCNwHVIBu4BellE8stWGai6eRF3hlvEwcS9wgZqoSMFn2m8qUc1EJRdVU9l/+7wst0XuP5YWphjaUUg1xWn8nl7ToaTvd9bvc8gmt5N6d6/i/P38nP/e6rbz1+j5s05ilbno2bAP2D5eRUo2LLLph89TYmFi32OGiuWqyhVrAiYkaMobhaZcoVlPO5rNfAjEqPASX32f8x3/8xzz66KN88pOfbLUpTRYSGvoY8N+klHcDPwn8jRDiniW1qgUUDhzg4O/9Hs995CMc/L3fo3DgQKtNumgaeYGRokd72mFjZ1p15J7jZwRgGgZJyyCW8bLFihsyv8GM2v8LwTDAMg0cS7A2l6AjnWjGzRsx9OXOd7Sa7b0Zvj8wwdC0u6D31BCCIIop1gLcIGK87NOZUZLPZS9akhDb3NxVPmWzvTdLyVOfWVQXH5o5aGum48/Uh9os9We82OvCL/zCLzAwMMDb3vY2pqammre/8sor3HPPPezcuZM3vvGNHD9+nCiK2LJlC1JKpqenMU2Txx9/HFAyFS+//PIl2TKT8zoCKeU9Usrv1L9+EXgb8D8WzYIVQOHAAQYeeoigWCTZ10dQLDLw0EOXpTPYP1zg0X2jfH9gnCNjZcI4JpOwVHMWnHWHmK4n62a29S91fH3mrtAxF7J3VViGwK5r5liGQWfGYVNnGtsyuf+NVzXj5vmUvSoGl8xk/3CBb+wfY/uabFNW5HxEUlL2QoaLHscmKoRxjFOv08/W80uLHWKbmbtqsKk7Ux9faTY3Bg0dIgEkLUE2aWJIKHkR09WAU8Xakn3GS7Eu/Omf/in9/f18+9vfpqOjo3n7/fffz/ve9z5eeOEFfvZnf5Zf/MVfxDRNrrnmGvbt28d3vvMdbr75Zp544gk8z+PEiRNcffXFd8fP5YIlJqSUw/Vw0aIhhNgF/D5KIeDPpZS/tZjPfz5Gdu/Gzuex8+qXqfHvyO7d5K+9djlNuSQaC6ttCpAGphAMTbms6xDU6km2+UoJDZT8QHvaxgvjpszvUsfXG7tCP4zwo/ic8hCNUkETsE2hEsOx5Oo1WUIpcUyD2zbnuHfnunMKxl3pzNxpj5Q8nj021Zzadjbi+PTUuTCKEULw8mgZxzLY1JVhrOTiLHJ3+dn0mgSCzmyCsKhkTxqWS8CLJLUwwjbAEoKUbfLiYJGBsfKSOILlXBf27NnDF7/4RQDe+9738pGPfASA17/+9Tz++OMcPXqUj370ozz00EO84Q1vaOoTLRYXNaFMSrloq4MQwgT+CHXSuA74GSHE0s1km4fa0BBWW9us26y2NmpDQ8tpxiXTWASu78/hRZL2tE0sJSMFF0MIDENNyrLq07EaJwTTFCRtAy+U3LKpfdnkiRu7wsNjFdoSFrZ19l/IxoIQA16ghPTWtae4+9o13L6li609Wd7TAnnslcbMnfa2ngzC4Lzzk2OUA047BmGM6tiVYBsCS8CTA5Mcm6gsavhlbvlr4+tswqpLTUjmzl9v+DPTMEg5Jhs602QSFp/Zc3zR7JrJSlgX7rrrLp544gl+8IMf8GM/9mNMT0/z2GOP8frXv35Rr7MSRlW+BjgspRyQUvrAF4CfWE4DUv39hHMU/MJSiVR//3Kacck0FoGetiQ3b2wnn3bozDog1KLgWAZJy8QyDBK2wLYM0o46indlHdwwouyGyxZfX9eeouSGlN2QnrYEEkONcDzHwiWE0hPKJy1et6171YaAzkbjPQXoaUuyoT2FWEAllgDiWJ0GMgmL7WuzmKaBH0uySYv+fHJR39+55a+Nz3Bte5JCNThjWM1MYinpySbIJCzaEiajRXfR7JrJcq4Lr33ta/nCF74AwOc///nmQv+a17yG733vexiGQTKZ5KabbuLP/uzPuOuuuxb1+ivBEawDTsz4/mT9tlkIIT4ghHhKCPHU2NjYohqwdtcugkKBoFBAxnHz67W7di3qdZaauYvAnVu7eMP2Nfzs7Zv4m194Le+4sZ/+jpTaccUSkHhhjBvEFGshcayGm//wlUmCMCJlG/zFd15Zkgqi/cMFxkou3zpwiomyhx/GJCxBJM+tqGkZ0J62SToW3W3Jsz9wlTJ3p33DujyJBXSXSaAWQi1QsfehaZe+XJK3XLeWu7b34J2vPfki2NGnpM0/9VM38qE3q5kN1/XlSSdMEGf/PTCEoNqoGPIienNL83uwnOvCAw88wP/+3/+bnTt38tnPfpbf//3fByCRSLBhwwbuuOMOQIWKSqUSr3rVqxb1+kLKxf+AL8gAIX4S2CWl/Ln69+8FbpdS/sez/cytt94qn3rqqUW1o3DgACO7d1MbGiLV38/aXbsuq/wAzJaTaEtaSqlxtMyGrpT6A3MEX3p2mMmKy3Q1BCmpywwhgLakQVcmiQS2dGfY1JWZJbO8WLvumXaOFKr8YGCSghtiCoFlCfwwPuu84baEydpckuGiy1U9WbxQqaN2ZxN8eJ4BMKuRufX5Tx6d4PsDkwv+eYEqJ+7JJbjn2jXYpnnJkiNzbTpbX8L+4QIf+pvnOTFZpepH85Y6C9TvQX9HmooX8stvu4Z7dy5sOMv+/fvZsWPHgu2+nNeF+V6rEOJpKeUZgzhWwjyCQWDDjO/X129bVvLXXnvZfMBnY6Y88ktDBU5O1bhmbZaNXRm+e/gUL5wsgpRIBELIZk+BUc/EVryYIHIxhJrPunN9O7B4s1ob7N47ShTFPH1skuOTVZKWSX/eZKwcnFdgqORFUHSJopiRgkskJaYQjJc8PrfnGJ9c5lnKK5G5jWa/8sUXeHJgckGyHQ05aMMQRJFk72CRrT3ZS5q1MFfv6uhYmQ99YaS5QZnpFHb05bn/nqv42Jf2IgTM3ac2ooYVP2K87PGaTR1sXUKdoSthXVgIK8ER/BC4WgixBeUAfhr416016fKlsQh8+tFDrO9Ik0/ZPH1sgmeOFerllqhJZEJgGZJQnv7jR6hqHC+IKbrBrOddzAqil4YKnJysMVX1SJgGIKkGkLQN1uZTHB0vE54jPlTyIkwB0zUfyxAkLBMvhO8dmVgU+y5X5tt1A7xw8sLCeqKu9+NFMX4UX/JJcGYl01jJ5dCpMggoVE83q828xtaeLP35JFWvgj/DE8ycLZG0Dd583RoSlnXGz2sunJY7AillKIT4j8AjqOrAv5RSvtRisy57GnN1Xx4t8v2ByWZjUVz/I4+lGvYSSxUGQJwuITQNqHqzCzkXs4Ko6IZQL2V1TIOqH1L2lPSFF1bwFiA2FEn1vygGLwxImAYlb+G9CFcaD78wyAPfOkIQxXRlHIIw4lOPFIil6izvzzsMFvzzPo/q2lVfbe7KcPc1ay55gZ054/nwWIWEZZCwDEpeeMZpc/9wgQ//7QucmKqRdAx89/TvoUT9rpr1HpJnjxe4ZVN7s99FO4KLp+WOAEBK+TXga62240piXXuKV8bLPHl0ijg+PbkqlkpSoCH125AmiyU4piRhmSCU9GOhFizJKMZ8yqJQ9TGFoOz6lP0YKcE2z97wNh+RpBk7iOKYdELy6UcPnTcOfaWxf7jAA988AoK6nHPMwdEyMlbHvVoQUnQjLIOz5l5mIoEogs6MsyhVYzN7BhrjJb0wJpdUTqBx2myEkAanatimoOLHzWqWhtmmITCE2kAkLIPDpyps7Unz6L7JBX/ujRPxlcyF5n5XQtWQZgnYdUMvB0fLeEGkHMCM+9SpQGAbglTCJJuw6EzbpBybMFKLcsUL+fq+EX4wMLHo5ZnX9eW5dm0ba9oSFD11vcZQevciZaMlSqHysYOnsE2WXU65lezeO0oYS3JJCyGUaudUxefIeJlXJioYAsJYYs6oyz3fMphN2nxk1zWL8pnPrGRqjJf0wphta5Q4YOO02QghAUxXQ/wwPuN3N6hLlNumIGEZnCq5PDkwhW2KpmbRuT73ZDLJxMTEBS+UlxNSSiYmJkgmF15NtSJOBJrFZ0dfnvaUxdEonhVbbag4Ogb8P2+5mvUdaR745hHCWBLHESNBhJSwqTNFJAVDBZftvZlF3Vmr4e9VtnRn2DdShPOUjC6UKIaRgkuxFvDabV2rImSwf7jA1/eNMF52GSpUMRBEUmKbQg23jyXjZZ8oipkp4WYC8w2zFCgdn3tftXZRx3o2ihhyKZuiG3JNb5bOTKLpIN5923p+99FDDE3VKHvBvBpJApXjimOJF8RMVTwqXkhbQjVRNjSL4OyFDevXr+fkyZMsdgn6SiOZTLJ+/cJP8NoRXMGUvAgh6h2acyZ+vefODfz8G5RWydYeNfP1808eI+1Y9LUnSTsWFS+k5AZ8+O9e5A+/fYRXb2hflGlfjYXh41/dp+YIcPpoOrNcfaYDWyiFWsB0LeDJgUne9qq+y0qe+EJphFKiSBKGqtvai5Xjd4O6SJtgxnCe0+/m2SYaS1TD3mJ3ac+sZJqb1G6EHE9M1Bgp1s7ZTGZbhtr5V0NGSz5dWYfbtnTMUpw9V2GDbdts2bJl8V7YFYJ2BFcwVT9EoqqDpBQqESglCUvQljw9d6DxR/q3T51ASslwwUWgkoxeqE4IjiF4cmCS4YK7KCGDHX158imLzozDREU1P808rdsCbNug5scY9eTg+U4NKn8siWLJ0fEKL56c5sYNHef+ocuYRiglYRlYlomDpOCGTWdaz6efwfkcbEOCeqmYzyl85bmTTJZ9St78vQMmkHRMtnZnCKVka0+CfNrmuj41snMml5ss9UpAO4IrmJRt4ZiGWhDqMWLbEJimwb66/HNjV7a9N4NX31WmHZNCTQ2KMQ1BwjZIOkqZdLLiL1q4pVALaU8nyCZsjk1WCeqrll3vHi65EaYBtmksOHcwc8zl945McOdVnZds50qlUY0TSsn6jiRT1YBaGFMLVJd2EMl5nafk3M4gjOWylGSePtHEjJU83Bkic3ORQF8+yT07VPK6kXxWYcajAEtS2LBa0I7gCubVG/IMTdfUYm4ZuEFExQ+xophnjk2Tskw2dWco1AIe+NYRNncmeXmsqpJ09bi9jCUb6y38Ccug5IaLFm7JJS2K1UBp26zJcnisrGYn2wb97Wm8MGZtLsEzx6cJI0kYn3+W8cz7w0jyV999heMTNbxIXvaVRPuHC3xuzzGePVFAohrpgjAil7Rxg4j1HWksQ3B8soZ/lhJcyzhdMnw232oZLEt+pXGieeqVScJYznt6aZC0DQwhiKWctdjPzD/MDDVdrp9xq9CO4ArmPXdu4uVTZQ6NlinWfIJYYpkGJmoRPnSqTLYuUhdEMa4w6M46DBdcvDBuDgKZrgVUg4isY5FyFk+O+Pr+PGnbZGC8wmjJwzENavVkdcIy2NyVxjAM2hIWpoCCG6LazxaWXI6B4aLPD1+Z4pbN7Tx28BRfenaQ123rWpRcx3Kyf7jApx45xNHxCtmESc2POFn0ODxWpiNtU3FVH4Yfxc35zczTmRvF53//NnZmlmXE50tDBYq1gJdPlc+bDNrWkyGQMFxwz1js53ZSay4cXT56BbOjL88nfuJ67n3VWpKORcq2WNuWwDAEJS9kquLz/YEJ9gxMMFH2eHm0jGkItnZnyNiGkieWEEUxfhAxVKgRhBHjJZcP/+3zlyxGt+uGXkpeSM2PWJdPsqU7Q28uSXc2QS5ls7k7qxQq0w4bOtNs6VI73gutMDp8qsz3jyitnY6UxUtDxcuutHT33lGOT1aoeCHHJqucnK5LiyM5VfSo+BE1X82csC2D3jaHzow973M1aofStkHKEs3vTQEp2+D2rZ1LHmffP6wkUIpuiCFUk+N8pf2mAMcUjJZ8Xr2hnXXtKQana+zeO3pZfX4rHe0IrmAaiTgvkvS0Jbh9Swe2ZZKwDAzADyNOTNaYrvhKb0io8ssTUzVCCVb9j7AaxISxpDPtUAtibMtcUM32+djRl6c/nySbtPBjScqxuPuaHt5wzRqu7883FSlfvSHPZMWn7Klh5hfaChQDYyVVaniq7PHKRJWBsTKf3XPsouxuBS8NFRgtuvhhRNVTNfYlN6QaqCR7wjYwTUEmYdOTTeDHsK49TX/OOd0xjlpsG37UD2MsU9CdtXFMgWMZbO3OYJvmkkuQ7947ytpcgrGSRxjFBPPMJxaofgHTEBTdgNGiN2vG8eXmzFcyOjR0hTJX6Ovl0RJPHp1iTVuCNbkkQ9MuZS8iiCWH69ovPVmHkhcSRxLDEKoDNFIDzVP1UZZuKJu12oshRudFkru292DM2A7GUs4KS7x2WxffOHCKKJbE8YWXlAKEcczxyQqmocbxnJiocPhUibGyd4bw2blYqIrmYlOsT++qBip/gzzdaBUDNV8lWr0gxLEESUswVvYoeTH5lIUXKN2gerMxtglBBGU/pieboD1lM1ry6e9IkU/ZSx5n3zdcYLjg0p11EEimq0EzR9CYS2yZohkmNASMlz2GCy7ZpMW2nsyq6BNZLrQjuEKZKfQFcMO6HEfGKkxXfTZ3Z3As0Rxh2FiDT5V8TAHZpIVtGhRqAbZpkLINan7EK9WAzd3pWde51Fjy2UYWzgxLHBqtcPvmTo6MV5iuBWcGvs+DAU39IiEkSUtQqUscD03VSNsmH/qbEdZ3pLi+/+xOYa5znU8w7VI5m6PJp9SfalRfzOe+A43vK36MF3pYpoFjGTiWYHNnipdPVYmlxK7PoojieuIYGC56bO9t4+1buvjNZVJvLdRCRL0BrD3tMF5yGSq4+GFDbkTQkXGaeaOwPsA4mzDxgohnjk9z04Y8Ze9sHRGaC0E7giuUmUJfAN3ZJJu7UgxOu5S8kJIbkjCV0lwUS2xTDSsPpWpAUp2oajcWRhLHFEjUY2ZyqbHkhZT/DU7X2NSdYWC8grjA84AhqEssnL6t6scIJNmkzeB0rbkTLdaCWRLJa7IJJODXK47GS+4s59r497N7jtHTlmTfcIFCLSSXtM7pUM7G/uECv737IJMVn6Ib8MShiC/88DhvunYNa7IJUo6pFsVzlNdIVDWQY6kO4bakzSuTLtmkSbkQknRU9Y0bxESonIkfqabC9y7jqM9GxZgbRIRRzEQ1IGGZZBwTP4wp+xGnSh6buzLc0p9jcFpNIRNCkLSVQtb+4RJ3X7Nm2Wy+ktGO4Aplvp321u4sYQy3b+licKqq+gXcEMsA5OkYbRjGxAasb09RDWLcMGJjZ5r+fJL9I+VFFaNbSPlf47WMFN16CGnhzkBKmFlJGYSnS1Cnq0rKoOqVyaUsSq7ZVEYdnqpx5FQFAdy2pYNCLeCJwxP8yLZO4PR76gYh3zsyyas35Dk+UUUIQbEakLZNHny8Ou9pobHrf3JgnONTNaSEDZ1pPD/kyFgFP4rVYi/UaeafXhxm65osbhDVHXM0rwTDTIQQpB2T9rTDqZKHlALbEs3DVMJWSfcghraUtawyzvuHCxTdkIofUvQkFS8kYRmYAiYqAW1Jm3ZTUAtihgoutSBi57ocRyfUyTNhGUgpma6FS5rHWE1oR3CFMt9O2zQN7r/nKg6NVnAsEylVlUgsVeJQAkkL1rQlOTntMlr26Ujb/MimLq7uzVGoBXRlE+RT9qLWbJ+v/K/xWqJINcWJ6Oz9BJZQIQ8vUu5i7uNmLqCN+4JYMl4JMESAIaAvn2JgvNI86QyMV9nWk8ELInbvHeXq3ja29WToaUvy7PFp3CDku0cmMIVgTS6BIQQjJY/r+nLN08LMxr1v7B9jquyyb6iIYaj498nJCkMFT0mCN+L/9RDQZC1k8tj0Bb2nQRRzfFItnCnbpOyFbOhIc6rkYZtqNnQUQ9ox+eW3LY643EJohNf6cgkKVR8hBGU3JJ+0ODnt4lgGtSDE9WMMQ51qpqs+B0crXLs2y0QloOgGOKbB67d16fzAIqEdwRXKuXba9wLbezP81j8dRIBqMqsn5rqzCYpeRC5hIVHiXt85PM5Lg0WEIdi2JktPW5J//7rNy/ZH2Hgth0ZLHB0vYxlnNkMJIJMw6vMJ1J1WvVzmfNLLDYcQSxicdqm4IREqwTxZ8SnWQo6cKpNxDKp+TLEW8L0jE8hYcrLgkkuYxBIM21CzfvMJyq5snhbuuXYNffkkr4yX+dz3j5FyDCbKPrGUGLGq+mkMApob9bmYxDioub4xkpGiR3fGAQnX9+e4Oox4+vg0FS9ic3eG/3D31gWPeVwMZuauskmLw6cqjBZdJioBQRjjczoFJFBhOVk/rQ5Ou9y1vad5El1sPaTVTMtnFl8MSzGzeDXy8AuDfPrRlzkyXkFIyKUsTEMQxZBNGIwWfUxDEMeSGMnatiSv295N0rbmnWG81BU1jRj60HSNoemaGluJSixu6kxz9ZosewYmKblBU2gvmiexej4MVCerKQQJ28QNI5KW0tA36wXXVT8knHPqSFrgWBZVP0SgHIshBPm0TbLelV0NIiwBbqgWN8cS+GeRgrhYDAHtKRsviPAiybY1Wd756j6qvmz5rIb7/vqHFKoBJS8kl7TZtibDZNnjn1+eUJLp8rQEhlOvd7VNg7fv7OP5kwWu789f9h3irWQlzyzWtIitPVletb4dQwimaz41P6bkBjgmlFw1BKQzYzNdCwgjSCVMBsar3Lm1C5hdNrocFTU7+vJ8ZNc1TWeTMJVM9qYu1Qn7+KExMo5JxQtBSOqFJhdMDFTrR46Srwa6CKDmR9iWQSwl8+myuSG4oapiaQwCiqSkUPWZmHEqaUikSZRDWEwcUyCEEmgLY8majMWn333jilg09w8XODFRw4siSrWAo2MVnjsxTdIy6M44TFVVr0gjVxXVW6BtE556ZZrOrLOsJ9HVhHYEq5jGMX3bmgzfPeI1FzEvqksQxJKJSkAYqcajihcRRi57BiYo1ZTOcWNnNrdcdbEH3jeYm0+YeQoJIsld13Tz5MAkg9MuUiq5hXNp2CyEMFaS3la9wupcVTsNZg1TubhZOxdEylJ9AVJKckmbXNLGFGJZ4//nQzWROfzglammCGIYS4puSCZhsrErQ9kNGCt51Or9EklLzaQ2DejLJfR84iVCO4JVzOB0DdtUyVAZKY2fmTXqEjUCEtQwkOlaQMo2yaUibFMghGj+Yc4tV4XFHXh/NmY6hk8/eohCLeCOrV187/A4tXoTVRTHFN3oouYbzCSUYETyvBU7y4EA2lMmXqi6xtOOCklNVwNsyySXsrn/nquWNf4/k/nChIPTNcbquZGGyJxTH0Ds10NlKcfi6l6Hmh9ycrqGIdTksRs35OnOqpOmbiJbfFrqCIQQPwX8GrADeI2UUgf+l5F17SkeO3iKKI7xIoljGSBPh0Vk3SnkUhZlN8QNIta1q8XejyS3bMpjmya7944uqDFsqWlUF+VTNndc1cX+4RJT1YDXb+ti90sjVP0IP4wv6YSwnE7Aalb2GFR8dWUBZB2T6/pz3HFVN9t7MxwarbQ89t+goZD6xOEJUraBZQiePT7FIy+N0J21OTZRBQRJW2Xyw1iSTph4YYQbxNy6uZ39wyXcUNKbS3L7lk56c6d/h5Zjc7EaafWJYC/wLuDPWmzHqmTXDb186dlBvCDENE/XmDekim1TYNVFiNIJC9cPOVXyqAVViOHoeJmUbdKRdvjwW7fzjf1q/F+rdOFnVkqVvZC7r1nTXBhfHqtwYLhIR9qh6ocUauFFnQ4u9VRxIcSxCo1s6MxQ8UJ++W3XzLvDv3eZ7DkfjTzRwFiZpCUYLXogYF0+SSThhZPFpricSgird9IQgjX5JO0ZhzCm+bnt3juqh84sEy11BFLK/aCaXzTLz46+PK/b1sU/7R3BNlT1Sso2EQKCes1lby5Jd1uStCV47mQBL4ghVsNLZAxRFBJEMb+z+yBr80kGpwX5lMV1ffmW6MKfrSfhfXdu5KN/v5eqH5GyzWbVT8pRrzcMI9wFDOY6lxOw5ylrvVhSFkSxIJu0Wx7mWSi7944SRTGD0zUqXoQh1MyEY5PV5jyMNVmHoqeUUhsCgiU3ZtuaLO+7c2PzdLN772iz5wL00JmlptUnAk2Lee+dm3jm2DQIMA0YL/l4YUzSNulvT/GW69dSckO+PzBBLmkz4rn4sZxV2eGHMSUvYo2EtbkEh0bLAIyVXASsiKEw9+5cx8mpKg8+/gplLyKfcgBJLumwbU2GlwaLjJVd/Gj+xV5AsyTVMMCpS28YQtBfD5ednKphChX7nntyaCiAnstPNH7GFJBJOnziHdet+MV/Ji8NFTg5WcMUEEYRUXz69QaRGjk6XQu5aUOeFwaLuH5EJJWzODFZ5TPfO8Z1/flm1dk39o/xph09s0JfeujM0rDkfQRCiG8Aa+e562NSyq/UH/MY8OFz5QiEEB8APgCwcePGW44du3wkhFciM5N5VTdg30gJ0xB0ZRz68knKXkRvLsFY2aNQCzk+UaHqh1R9JUk9E9XMZSLrSUAQpGyDbMLGsQxu39pBwpq/92C5mfm6E6Zoagk5pmC64rN/tMRIXX8oric0LUO9yqQlcENJLmVxVU8WL4iYqoX82XtvZvfeUf56zysIqeYGzxWGs02wDAPbENSCCNsySdkGQRjjRcrxZhIWHWkbN4h5+85+PvTm7a15kxbI3ITwt/aPEsSSMIoZGKuc4fQMlKKoUZe/CKIYyzDo70gyWvAIY8m9O9fSnVWOtZFzWunvw+VEy/oIpJRvWqTneRB4EFRD2WI852plbs1/KWFRC2P688lZu3eABx8/yrr2NEjJi4MF1Q3L7MoiCVTqzV0JSyCEKgmMYqnkGsaq3DFP70ErWMg0q/3DBT675xgPvzhcl2w28KOYpGWyJmdQcCPKnqqcet0MmYOvPDfIZNknbRtUAjXhTUrVaJZOOOSSFj25JClLUAslZTckjGL8MCKfdkhYBkU3xDaNFa+hM1/fyHB9XoIfzi8BEqO6vSNkvddD0JtzyCZsRnARAg6fqjQdgU4MLx86NLQKma/mf1NX5ozd16cfPdR83LY1WfYNFzEkzCf8K2loyBtICYaICOOYsqcS0XD5/GHv6Mvzm+/aSU9bsrkrHS+7PF3X+9naneS6/jyFWtBU7NzRl+eX3rqd33nkIIVaSJuhRNQM0yCbMNm5rp1N3ZlmnPsDd20BaA5vHym6TFYCLENw/xuvWvHhj7m/Q0GkVFEFaiNwtp1aEEvW5JJU/ag+9CiiC9W8aHFaagN0Yng5aXX56DuBB4Ae4GEhxHNSyre20qbVwEJr/mc+rqctyaauDMPTNSarSpxNcFriuV55ihtEzbm4YSypFVyKbsDLo0XW5FKX1R/2TOG+zkyCa3qzHBwtk6svgHPj1ffuXMfWnuwZ9fPAWdVVG1VOjm1y51WtL/9scC65kP3DBR7dN0rND/AiScJS8uS5pEnBjcglLbzAnzcfEsawpSvN/pEyYSwJ4wg3iEg7FmEY45jGGQPqNUuP1hpahTQar2bW/M8Xj537uLGSy5MDk5S9kLW5BAihZhjUK0X8usb9fAjUyeO1WztJJ+2WJ48XSqsmkrWSRthn7knlnTf3cWyixrcOnqJQCfCjuD78xiCOVbFBd9Yh5VgcHCnhn6VhoyNlk3YMxisBCcvg2rVtrM0lKXnhGeHJK/29Xm601pCmyUKGwcz3uIoXEsVKeO2VyRpr2xLcvLmdqhdR8kImIx8TiX+W0pjpWsDzgwXu2t69JFpES8FCcgpXGrv3jjJZdtk7VCKWkqRtIIA/+vaASmb7EZGM653nkpof1QfQ16XNHYs1bQlO1ofJwOwqqoIb0J3N0CMElmmQS9ls6cnqhb+FaEewClnIMJi5j9tXFwzbuV7Fuo+NVzg0Wma87HNdX57r+tv41NdfJjzLkaCxCExXA148WeSNO06HTHb05Vflznul8tJQgb1DJSX5YJtEsaToqnDgqZJHW8LCMwyEiInqMtohYIiY4aJLNmHRmXEYKbrEsaoUSlgGQSQJ6pPvKkHEj17Tg22aujJoBaAdwSploTvdxuM+/egh1rWnm2GiLT1ZOutDahonh860Qxgrvf6zNVb5YcTxySrjZZfOTILB6dqyKJdqFsb+4QL7hosU3QBLQMVXiX4vjEmYgrguCxHFkjBWHeiOCaZhYJsGbqhOhz1tSTZ1pjk+WcMyBW1Ji4mKj2Wor/Mpm+5skljKy6KA4EpHOwLNgjhXgrlRQXLLpna+c3iCpGUSzKPTLOr/T9kmh09V2NFnsq49NasCZazk8uJggZNTNZ54eYy3XNfLe+/cpB3CEjG3r2Ko4GIKEBLcSCKEbM5WqIWStC0oeSFSnp6h4EeQFjEIg40daTqzCe7Y2sV42WWsNIQXxfiRxDIEAkFXNkEuqTYUujJoZaAdgWZBnEtUbnC6hmXAeCWgLaHm/hqC5kIhoCkHLVFDbw6NlhguuLxuWxcDY2ViCWMlj6lqQBTFJB3VufvkwCTDBZeP7Fo5csqXAwsJtc09iT2yd4RTZY8oVE2DktPzHGxDVfz4gRohOTcPHElBX8Yh7ZjNEtDubJKbN3Xw4mCRfMqmty1BoRYSRJKtPWkKtUBXBq0QdNWQZkHMXDRmJpg/cNcWHvjGy3zv6GQ9pmzQlrQZLXrkUxY1P6LohggBtiEwDYMglmQckx+9toeqF/HYwTG62hy8IGaq6hFLQcYxsUyhJCpCyfa1bXziHdct60S0y5GZ6p8daZsdfW3NiXJz5RpeHi1y5FSFiapPEMVUvYikJfAiSTBnLnTCMuhOW4xVAuXYTUEUSyzDIF0fgrOuPUXNj8gmrVkjJWde12l8proyqCWcrWpIOwLNgplv4QX44OeeZrIckHIMJdkQShwTMgmbnevzHBgpKWFBCZGMiWO4fWsnPW1J9gxMMFZ0mar6uEGMF6odpykgZVvEcUwtjAFBPmXzgbs28/NvuPqcjulyW1gWy6HNVP+UUiLq5b03b2yn4oUcHClzx1VdtCUtjo1X+Pr+USwB6YSqCGsMg6n3/zV3/bahJEQSlqU6xqOYq3uzGIZgqF4Z5JiCTMJmQ2dKl4CuYHT5qOaSmS/B/OlHD2EZJhs6LcbKHqW6zo5lmPTmEmzuzlINIgq1ECElR8YrtCUtDo9VmKr4DIyVCaOYihdhGqpBDamGwISRcgJK5kFS9gI+9cjLPH+8QEfGIY5j9tcTm7mkzdpcouUSFhfK3PDM0bEyH/rCCBu6UlzXl7+ghfRze44xMFbmlYkKGceiK6tkKw6PVai4AUOFGv/4whCuH+KGMXWBWWwrrn9mp+cnJ22DWj3j71iCqh8DMT1Zm9GSx4mpGhs6UnRnHcbLPqYp6Mw6OoR3maIdgeaSGJyu0ZmxKdQCohg1ItGAshcxXQ3ZdUMvH3rz9uaC54YxUkqmKz4HhouYQnUjW6YaUm6IGDeIiYHKzNKjSM1HgJjHXh5DShVq6mtPkU/ZuEHEgZES1UAlqR9+YZDP7DnOaNGlN5fkfXduXJFKnnMT5YdOlUFAoRpcUPXU/uECTxyeoD1lkXEsvDBmaNqlL59gvBQwXHBVzkbGVPx4VthnuhrimGoIzkwcU42/rAWql6A3l0AIwW1dafYOlhicdtnem+XatW0YhnFZnsY0Cu0INJfEuvYUfhBxZKyiYseGCg3ZpsH23mxzh95Y8G5Yl+PpY9MUagGOKYilSkLmkiYAVTc+Q8PZrA8z8aMYKUFEEssUeFHMeNnHsQzS9cWvUAt5+IVBfuufDpJJWEr/vhbwW/90EGDFOYOZ1ViHxyokLIOEZVDywgua+7x772hduTQiiGJKXoApBEPT6rOIpSRhmVS9MwfySNSc6ga2ARnHQgJpWzBS8ultS9CeVpLd3dkkGzrTPH+iyMaujA4BXQFoR6C5JFQPQZWUrRabWhBjCMFrNnewqTvTrBFvLHiGUGWmj7w0qpRMDYPNXWlKbshU1ScW0J60qPhhc3GKpFKtlHWdf8cyMAREUUPyuIwhVH17xjH55NcOkLCMGaJ6BgCf2XN80R3B2fImC435z6zGKrshAslIwSWSku8PTLC1J83g9Hwyf7Ov/dJQgY6UxaHR0gypD/V59GRtutI2XiTPOabTqld2RRIqfkh7yqIzm6Q9neCWzZ2zKsYSlsWbr+vVjWBXCNoRaC6JRvfx4HSNybLP+k6HbT2ZpnJno0Z85oLXnU1yVU+WQi0gl7Lpztg8eXSKIJKYas1GIkhZklp9DWzUNEigty1ByQsJw5iKHxLVdW5sQ+CHMdM1Vb5a8UJySYtaEFPzQ4YLLvuHC/MuyhezoM/XCPfbuw9S8UK8MMYLI14eLbF3sMCH37p93uvOlPEQQnJiooZhCNZ3JHGDiCcHprhza+esa352zzEeO3iKifppaGNnmiiSPH+y0IzrNwYHSaDmR3S2p2kTMFkJmvc3Dl4N35C0DUDgWAaWKUg7Np0Zh5+8ZZ2eFHaFox2B5pLZ0ZfnE++4blYVz9wa8bm6RWtzCYama6xtczgyViGXspiq+iChFsZkHBPHMrG8gEoQYxgCISUpyyCbtKn6EUGs5t1iqBkJtVDiR5EaCiPUtLVTJb+ebIakbfKhLzxPe8YmlpBLWlzfn2+ORJy5oH/qkUPEUrKpK4NtwmMHT/GlZwd53bauZoPbfHLeQ9M1Rosem7rS5JI2XhhzdLzC5/Yc45Pv2jmvw7l2bUblMwqqAmdNm9MMdc2Mku0fLvDbuw/y8miZiYrfHKpzfLKmtKDqIk/WrLnAqivYi9RJrS1hUqoftRqKsSDIJkw2dmWIpWSi7FPxQ/ryFv355LyqqnpS2JWFdgSaReF8+kVz79/cneUt1/fymT3HiWIlc22imtIsQyCEWsCEMNjRl+Gq7iwvDhaoBZGaN9xseJLEsVr4jfoCKOTshie1YALEFF2fUyWXNbkkxWpA2jZ5ZO8Ia/PKMTUqkKYrPklHTRF78ugUsZTYpuDpY1PUgrh5CprZbT1ednllooIXSspDBUxDkE/atKdtnj1ROOME8cp4mZ/7q+OMV3yyCZuMYyCEYKISYBg11nWk2dHXhh9JHn5hkE9+7QDjRU/p+8yQAQ9Qmj9NpyFUrb6lNvjEUrBtTZbetgTfOzKBH9UAgWUKYinJOhaZhEXCUtc32gQb7DSv2dLJcN05rUbxvdWEdgSaReN8i8V893/74Di3b+nEEILxssv3Dk+o0EoUs7YtiRfF9OVTbOnJ8sEfvYqBsTIPfOsIbhCRsAS2aVLyQsx6J3ND5GxmQ1RjgfQjyUjBI+UYzUqjkZLHVM3nlYkyKcdSg+29kOFCDdNQHdCmoQItVU8lo/vySXbvHSVhCh4/NIYfxZhCMFnx8UN1VSlV0nys7DNZ8Uk5Jv/l/76AbQrWtSd5+pUaxyarVLwQUwgsA6oxpCxBLmkjgTu3dlGoBZwq1PitfzqocggCFf+XavSjFBI/klT9cMbpQWIaAsNQ70M2YXJ9f74Zz59PVmKy4uMFUVNa/IZ1OS3/sIrQjkDTUubmDl67rYu9g0X8KOYt1609Iy6/e+8od2ztYv+wzXTVZ7zsY1B3Ao08guQMJ9D4NwZqQcxE2aMz4zBecpmuqgVciIiaHzV310EUq6asQOnuCwFhHPO9w+McPlVmbT5J2Q3JJkyGCy5T9XANzD6RhBJqQUTNDwhNg+8cnsASKiZfcgEksZSkHZOqH5GwJKVywMMvDGMZgiCKyCQsIlkf8VgnRjk+gJIXkbSFSqDHat6yZarO3609mVmjL+c65Ebe4Tv1buRXb8xjm6bOA6wijFYboFnd7Lqht5lPUOEXk609WX73X93Ih958ZoJ1cFrFw7etySCEoDvr4Kjp8liG6jWIpVrI585WbmAAI0UXL4wpuSFhKJthpTBq6OwIohjCSBIDbhjjhqrZKpQwVnaZqgRs782ScCyqQURwjoqclG3iRZJCLcQxDWqhGtxuNie7xSQsA8sQ1Oqx/s6MzTVrs4wUPQwkads8a9WPADpSDrdv6aQn62CZSs7jDdt7+I1/ccN5T2q/+a6d/Nl7b+bua9YQRNS7uHVfwGpBnwg0LWWhsxEaNE4Q3dkkt2xq5/CpClU/pOrH/MhVXRwZK3NyqkbJnb/kslEiWfMivCDGDSJMU5C0jeZJwjTUjtoxxRlTttQ8ZggjMIRkohpw59YuBsZKVLxo3lm9loC2pE3CMphwfUyhdPknKj4GglBKKn5EEEnCOMY2BT96zRqu7s0BkElMMFrySdgGScsgCE9PgjPqZbXdWYc1uSR+DD9z+yZiKRkuuHzqp268oM9CL/yrE+0INC3nQhaguXOEd/SZ9LenmsJmzw8WWN+RYqrq44UxE5XTw9Cz9WRsLVDVOOs7U4xXPDoyNhUvxjIEEhUSCqRkbT7JqZKHV+90bpBJWIRxTMENsS3lcMJzFOgbQmnwt6cdgjBmqOAqpyNjHEtg1sNaYaSqo9pTDh0Zp/nzt2xs559fniCIYjKOQVlK4kiST5o4tkmhGtCeVo6mXHeAOr6vuRB0aEhzWdE4QeRTNsMFtxnCuHfnOj705u38i5vWYZkGPW1Jtq1poy1hNmWwEeBYqhLols0d/Pn7buMt1/ViGyZdGQfDUCGWOFalpmvaEqxpS4BQfyimUKEn2zToyyWp+vHpUJQQGAISlpj1R2UAVn06V2daldUaAjrSajhLI7ncnXV492s2cNPGDvJph8OnKs3n6M2nuXt7N9mkhR9BLmXRnrIQhoFAsKEjhWkYFOv5ikaobWZeQKM5Fy09EQghfgf4ccAHjgD/Vko53UqbNCufc50gdt3Qy5eeHaQ9ZSGlJO2oJKuMJV4oyaUMXrUux40bOgB4752bGK5XzZiGYE1bEttUCeLJasDafArbNJis+JTcANsU9OUThDH0ZB2u788xXHBZ154ijGIcyySRMXCDiIofkrAMNnZmuHF9nmdPFLBMg01tCdxQKa3apkE2YdLTlqQ7m0RKeObYNONlj1jKZvPW/W+8GqBZfuoGIT88OoUEbtvaQdWLODhaJlfva9B1/poLoaUy1EKItwDfklKGQoj/BSCl/K/n+zktQ605Fx/74gvsHSo2yzorXkjCNsklLa7rz58hV322ruLGouuFIU8OTOGHMfmUhVtfwO+/56qmZMX+4QIf/8pLHBotAxLHMnBMk6t7s01Fzg//7fMcn6jghTFJW2krnZisUvZCru3LcefWLgCOjpUZKXls7Eyf0dE801at7a+5UFakDLWU8uszvv0+8JOtskVz5fCeOzfN6nI+PlE55275bCeM00nskDu3djZ7EeZbdHf05fnET1zP5/Yc49kTBSSSV29onzVmsyHQd+hUGaApMFf2YG1bonkCME3jjCE857NVo7kUVsxgGiHEPwB/I6X83Fnu/wDwAYCNGzfecuzYseU0T3OZsRKnlzU6i6MoZqToMlnvon7nzX1UfbmibNVcmbRsQpkQ4hvA2nnu+piU8iv1x3wMuBV4l1yAQTo0pLlcWYkOSrN6aFloSEr5pnPdL4R4P/B24I0LcQIazeWMDu1oViKtrhraBXwEeIOUstpKWzQajWa10uo+gj8E2oBHhRDPCSH+tMX2aDQazaqj1VVD21p5fY1Go9G0/kSg0Wg0mhajHYFGo9GscrQj0Gg0mlWOdgQajUazytGOQKPRaFY52hFoNBrNKkc7Ao1Go1nlaEeg0Wg0qxztCDQajWaVox2BRqPRrHK0I9BoNJpVjnYEGo1Gs8ppqejcSuIfrrrqjNt+/MiRFlii0WhWE4UDB3j83nvPuH051x99ImB+J3Cu2zUajWYxOJsTgOVdf7Qj0Gg0mhYxsnt3q00AtCPQaDSallEbGmq1CcAqyhEUDhxgZPduakNDpPr7WbtrF/lrr221WRqNZhWT6u9vtQnAKjkRFA4cYOChhwiKRZJ9fQTFIgMPPUThwIFWm6bRaFYxRjbbahOAVeIIRnbvxs7nsfN5hGE0v14p8TmNRrM6OfXNb7baBKDFjkAI8RtCiBfqg+u/LoRYknNSbWgIq61t1m1WW9uKic9pNJrViTs62moTgNafCH5HSrlTSnkT8I/Af1+Ki6T6+wlLpVm3haXSionPaTSa1Umyt7fVJgAtdgRSyuKMbzOAXIrrrN21i6BQICgUkHHc/Hrtrl1LcTmNRqNZEJv/zb9ptQlA608ECCE+KYQ4Afws5zgRCCE+IIR4Sgjx1NjY2AVdI3/ttWy97z7sXA53eBg7l2PrfffpqiGNRtNS1r3tbWCdpXgzlVo2O5a8fFQI8Q1g7Tx3fUxK+RUp5ceAjwkhPgr8R+Dj8z2PlPJB4EGAW2+99YJPDvlrrz3rwp+75RaKTz897+0ajUazlFz7S7/Egf/5P8+8/T//52WzYckdgZTyTQt86OeBr3EWR7CU3PTrv8533/Meoqmp5m1mRwc3/fqvL7cpGo1mlXH1z/0cAK985jMEhQJ2Ps/m972vefty0NKGMiHE1VLKl+vf/gTQksL+kd272fiOd2Dn883bgkKBkd27dfhIo9EsOVf/3M8t68I/l1Z3Fv+WEOIaIAaOAb/QCiNqQ0Mk+/pm3abLSzUazWqhpY5ASvkvW3n9Bqn+foJicdaJQJeXajSa1ULLq4ZWArq8VKPRrGa0I0CXl2o0mtVNq3MEK4ZzlZdqNBrNlYw+EWg0Gs0qRzsCjUajWeVoR6DRaDSrHO0INBqNZpWjHYFGo9GscoSUS6L8vKQIIcZQnciLTTcwvgTPu5xc7q9B299atP2tZylfwyYpZc/cGy9LR7BUCCGeklLe2mo7LoXL/TVo+1uLtr/1tOI16NCQRqPRrHK0I9BoNJpVjnYEs3mw1QYsApf7a9D2txZtf+tZ9tegcwQajUazytEnAo1Go1nlaEeg0Wg0qxztCOYghPgNIcQLQojnhBBfF0JcVtNphBC/I4Q4UH8NXxJCtLfapgtFCPFTQoiXhBCxEOKyKAUUQuwSQhwUQhwWQvxyq+25UIQQfymEOCWE2NtqWy4GIcQGIcS3hRD76r87/6nVNl0IQoikEOIHQojn6/Z/Ylmvr3MEsxFC5KSUxfrXvwhcJ6VsyQjNi0EI8RbgW1LKUAjxvwCklP+1xWZdEEKIHajxpX8GfFhK+VSLTTonQggTOAS8GTgJ/BD4GSnlvpYadgEIIe4CysBfSylvaLU9F4oQog/ok1I+I4RoA54G/sXl8hkIIQSQkVKWhRA28B3gP0kpv78c19cngjk0nECdDHBZeUop5dellGH92+8D61tpz8UgpdwvpTzYajsugNcAh6WUA1JKH/gC8BMttumCkFI+Dky22o6LRUo5LKV8pv51CdgPrGutVQtHKsr1b+36f8u29mhHMA9CiE8KIU4APwv891bbcwn8O+CfWm3EKmAdcGLG9ye5jBahKw0hxGbg1cCTLTblghBCmEKI54BTwKNSymWzf1U6AiHEN4QQe+f57ycApJQfk1JuAD4P/MfWWnsm57O//piPASHqNaw4FvIaNJoLRQiRBf4e+M9zTvcrHillJKW8CXWKf40QYtlCdKtyVKWU8k0LfOjnga8BH19Ccy6Y89kvhHg/8HbgjXKFJoEu4DO4HBgENsz4fn39Ns0yUo+t/z3weSnlF1ttz8UipZwWQnwb2AUsS/J+VZ4IzoUQ4uoZ3/4EcKBVtlwMQohdwEeAd0gpq622Z5XwQ+BqIcQWIYQD/DTw1RbbtKqoJ1v/AtgvpfzdVttzoQghehoVfkKIFKrwYNnWHl01NAchxN8D16CqVo4BvyClvGx2d0KIw0ACmKjf9P3LqeoJQAjxTuABoAeYBp6TUr61pUadByHEjwG/B5jAX0opP9laiy4MIcT/Ae5GSSCPAh+XUv5FS426AIQQrwOeAF5E/e0C/IqU8muts2rhCCF2Ap9B/f4YwP+VUv76sl1fOwKNRqNZ3ejQkEaj0axytCPQaDSaVY52BBqNRrPK0Y5Ao9FoVjnaEWg0Gs0qRzsCjUajWeVoR6DRXAJ16eM317/+H0KIB1ptk0ZzoaxKiQmNZhH5OPDrQog1KKGzd7TYHo3mgtENZRrNJSKE+GcgC9wtpSwJIbYCHwPyUsqfbK11Gs350aEhjeYSEEK8CugD/LoOPvW5BP++tZZpNAtHOwKN5iKpT8X6PEqcsFwX/NNoLju0I9BoLgIhRBr4IvBfpJT7gd9ghcmVazQLRecINJpFRgjRBXwSJSX851LK/9likzSac6IdgUaj0axydGhIo9FoVjnaEWg0Gs0qRzsCjUajWeVoR6DRaDSrHO0INBqNZpWjHYFGo9GscrQj0Gg0mlWOdgQajUazytGOQKPRaFY5/z/DFzyA9gPdKQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "X_flow = dist_y.sample(torch.Size([1000,])).detach().numpy()\n", + "plt.title(r'Joint Distribution')\n", + "plt.xlabel(r'$x_1$')\n", + "plt.ylabel(r'$x_2$')\n", + "plt.scatter(X[:,0], X[:,1], label='data', alpha=0.5)\n", + "plt.scatter(X_flow[:,0], X_flow[:,1], color='firebrick', label='flow', alpha=0.5)\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And marginals:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\info\\anaconda3\\lib\\site-packages\\seaborn\\distributions.py:2619: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n", + " warnings.warn(msg, FutureWarning)\n", + "C:\\Users\\info\\anaconda3\\lib\\site-packages\\seaborn\\distributions.py:2619: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n", + " warnings.warn(msg, FutureWarning)\n", + "C:\\Users\\info\\anaconda3\\lib\\site-packages\\seaborn\\distributions.py:2619: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n", + " warnings.warn(msg, FutureWarning)\n", + "C:\\Users\\info\\anaconda3\\lib\\site-packages\\seaborn\\distributions.py:2619: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n", + " warnings.warn(msg, FutureWarning)\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEKCAYAAAAIO8L1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABgTklEQVR4nO39d5xkVZ3/jz/fFTun6Z6cYRhmyDCCEVxFQXAJKoqu6bOrrA/hs+7yc3fZXR/Ksn5YxbjyZVV2TZgwKyiKWQRlmCEzwyQmxw7VuSvX+f1xQ9+pru6ucO+tqu7zfDzmMd1V995zqvrc+zrvcN5HlFJoNBqNRpNPoNod0Gg0Gk1togVCo9FoNAXRAqHRaDSagmiB0Gg0Gk1BtEBoNBqNpiBaIDQajUZTEC0QGo1GoymIFgiNRqPRFEQLxDxARP5TRP6+wms8JiJnuNQljcYV9Nj2FtErqec2ItIDPAWcqpSKV3CdNwNvUUq90a2+aTSVoMe292gLYu7zbuCBSm4gk/uAvxCRxZV3SaNxhXejx7anaIGYA4jIX4nIn0XkOyJyTEQOicjrzLdfB/wh7/g7ROTHjt8/ISK/EZHIdG0opRLA48BlHnwEjaYgemxXFy0Qc4OzgHOB7wDLgP8CvuB4b2fe8R/HmDGdJyLvAy4H3qCUSs3SzvPAOW51WqMpAj22q4gWiLnBWcBnlFI/VErlgHuAlSLSAHQAo86DlVIDwGeArwH/AlyhlBoWkXYzYDcmImcWaGfUvJ5G4xduje0LTUvkIRH5toiE89rRY7sAWiDmBmcB33f8vhAYM03nQaC1wDlPmuf9i1LqkPnaBHBl3rWctAJDbnRYoykSt8b2IeBVSqmLgf3A1Xnn6LFdAC0QdY6IdAArgD7Hy28Cfm7+/AxwWt45ZwGfx5hl/bX1ulIqrZRyXiefDcDTlfdao5kdl8f2MUcwOwXk8prTY7sAWiDqn7OALPA2EQmJyJXA+4FbzfcfAC6xDhaRZcD9wPvM484SkVfO1ohp0l8A/MrFvms0M+H62BaRVcBrzeOs1/TYnoZQtTugqZizgG8CL8EwuXcC1yiltpvv3wM8JSKNQBjjpvq0Uuo+MLI8gP8HvGyWdv4S+L1S6qj7H0GjKYirY1tE2oCvA+9WSqUd7eixPQ16oVydIyKfB3YppT4zwzG3A71Kqc8Wec2vAp9USj3neG0z8DfO1zQaL3FzbItICGO9w6eUUr/Je0+P7WnQAlHniMjDwEeVUr9w6XoPYKQVHgC+qJT6qhvX1WhKxc2xLSLvAD4LPGu+9Hml1Hcqve5cRwtEnSMiQ8C5Sqn9Ve6KRuMqemxXHy0QGo1GoymIzmLSaDQaTUHmTBZTd3e3Wr16dbW7oZnDPP744/1KqR6/29VjW+MlM43rOSMQq1evZuvWrdXuhmYOIyIHqtGuHtsaL5lpXGsXk0aj0WgKogVCo9FoNAXRAqHRaDSagmiB0Gg0Gk1BPBUIEblcRHaKyB4RuaXA++8TkWdF5CkReVhENpqvrxaRuPn6UyLyhalX12iqhx7bmvmAZ1lMIhIE7gJeAxwGtojIfY5CWwDfUkp9wTz+KuDTGDtAAbyglDrXq/5pNOWix7ZmvuClBXEhsEcptdfc7u9e8jbpUEqNOH5tBvSybk09oMe2Zl7gpUAsw9jFyeKw+dpJiMiNIvICcAfwd4631ojIkyLyBxF5RaEGROQGEdkqIlv7+mba52Z+8dyRYfb1j1e7G3MZPbZ9IJtTPHdkmEw2f28fjV9UPUitlLpLKXUK8M/Ah8yXjwErlVLnATcD3zJrueefe7dSapNSalNPj+8LXGuSh3b18fo7H+byzz7E3r6xandnXqPHdmX80/ef4fV3Psz/73t6o7dq4aVAHMHYLtBiufnadNwLXAOglEqam4+jlHoceIG8rQU1hfnmZmNRZDKT494th2Y5WlMmemx7TGw8xQ+eOAzAT546ytGh+CxnFOaBZ49x3Rf+xGP7Ym52b97gpUBsAdaJyBoRiQDXY2zYYSMi6xy/XgnsNl/vMQOBiMhaYB2w18O+zgmUUjy6d/JGeGhX+a6J3+44wUd+8lzZN+YcR49tj3n8wOBJvz+6d6Dka8RTWf7vt59ky/5B/u1Hz85+gmYKnmUxKaUyInIT8CAQBL6slNomIrcBW81tAW8SkUuBNMaWgu8yT78YuE1E0hibi79PKaWnALNwbDjBcDxNYzhIMpNld+8YiXSWhnCwpOucGEnwvq8/QSqb4/BgnC+9+0Ue9bg+0WPbe7YdHT7p9y37Y7zh/OUlXeOx/TGyOSM3YHfvGEeG4izraHStj/MBT4v1KaUewNgn1vnahx0/f2Ca834A/MDLvs1Fdp0YBeDs5e0MTaTZeWKU7cdGOH9lZ0nX+eX2E6TMwOAfdvUxmkjT2hB2vb/1jB7b3nIwNgHAWzat4DtbD02xKIrh6UNDJ/2+7ciwFogSqXqQWuMehwcNd9DqBc2cuawdMDKaSuW3z5+wf87kFE8fKv0aGk0lWGP50o2LANjXP066xGwmSyAWtUUBw4rQlIYWiDnEsWHjplrS0cDpi1sBeKHEmyKXU2zZb8zWXmPenM8fG5npFI3GdY6YAnHaohaWdTSSzioODEyUdI3t5rh93ZlLAHQ8rQy0QMwhjg0lAFja3sjq7mYA9pV4Ux0ZijOWzNDdEuVlpywwr6HXVGj8I53NcWw4jggsaW9k3aIWAPaUMNlJpLMcG04QCggXrekCtECUgxaIOcRRhwWxekETAPtLXDBnWQsblrSyrNO4hr6xNH5yfDhBTsHitgYioQCn9lgCMVr0NQ4PGhOjZZ2NrOgyxvGx4YT7nZ3jaIGYQ1g3wJJ246YQMW6UVKZ43+3O48ZNuH5RK0s7GozrDukbS+MfvaPGeFvYZow/y4IoJYZgBblXdjWxpN24jp7olI4WiDmCUmrSxdTRQEM4yNL2RnJqcjZVDDtMgTh9SZud8aFvLI2fDIylAOhujgBw6kIjnlaKi+mg6Vpd0dVEV3OEaCjASCLDWDLjcm/nNlog5ggjiQypbI6WaIimiJG9vLrbdDOVEEPYcdxwMZ2+uJX2xjBNkSCjyQwjibT7ndZoChAbNwSiyxSIU3rMeFr/OEoVV/PwgGlBrOpqQkRYbFoRJ0a0NVwKWiDmCNZN1dk8uV5h9QLrxirOgkiks+zrHycgcOrCFkSEpdqK0PjMgCUQLYZAdDRF6GqOMJHKcrzIB/whh4sJJsVmaCLldnfnNFog5giTs66o/ZolEAeKtCD29I6RU7Cmu9lefW3lkPeOJN3srkYzLZaLaYH5UAdYa2bl7e0rbixbMQgrQN3VFDnp2pri0AIxR7AFomnSglhpZjJZN8tsWBlMpy+ZLC5qCY51fY3Ga2LjxmRkgWOys7bHEojZ4xBKqckgtXkPdJpiM6gtiJLQAjFHGCxgQayyBKLItRBWBtPpi1rt1yzB0QKh8Yt8FxPAWjPV9YUiLIi+0SSJdI7OpjBtZokYy8UUG9extFLQAjFHsG8qRwzC8r8eGpywi5bNhDODyUJbEBq/mcnFVMxGWAfz4g8AnU3agigHLRBzBGvgOy2IpkiIntYo6ayyy3DMhC0Qix0WhCk4MX1jaXxiOG7M8jsap1oQe/tndzFZJTlWmjE4cIxjPdEpCS0Qc4RCsy6YnEXN5mbqH0vSP5akJRo6qeKlbUHo4J7GJ6y1Cq0Nk8WmV3Y1EQwIhwfjJNLZGc+ftCAmx7FtQWiBKAktEHMEy4LoaDq5LPeqruIC1Vb84bRFLQQCYr/eqWdeGh9RStkC0eIQiEgowMquJpRi1qJ9h+w1EE4LwoxBaEu4JLRAzBFGTLO8vfFkgbCyOA7MIhDWBi0blpy8PbKVSaJvLI0fxNNZsjlFQzhAOHjy42ky1XVmN9OBvBRXmLwvrPtEUxxaIOYIownLLM+zIIrMZNp21EhxPWNp+0mvawtC4yfWOG6JTt2gyk51nSVQPRmDmBQI674YSehSG6WgBWKOMGqWwnD6bQFWmmb2gdjMN5UlEGcuO9mCcM68ii1zoNGUiyUQbQ1TN7tc020GqmdIdR1NpOkfSxINBVhiFvsDaGsM2e9rikcLxBzBmhm1NZZuQUykMuztGyMYEE5zrIEAiIaCNIQDZHKK+CzBQY2mUqwHeEsBgbAsiBdmcDFZ1sOqBU0nxdIaw0GCASGRzpVU3Xi+owViDpDNOQJ70ZNvrAXNEZojQUYSmWnr0Dx/bJScgnULW+wSG05s8zyuzXONt0y6SqcKxHpz8rLz+Oi063qsdRKrHSmuACJiWyXaiigeLRBzAKc4BB2zJjBuDCtYN132x7OHh4Cp8QcL68bSFV01XmOnuBaIQXQ2R1ja3kA8nZ22QrG1QZa1o6ITHYcoHU8FQkQuF5GdIrJHRG4p8P77RORZEXlKRB4WkY2O9/7FPG+niFzmZT/rHWtGVMhvC3BKz8wbrlh7UG9a3VnwfcttpWdek+ix7Q0zuZgANpqTGCtmlo+1PW6+BQE6DlEOngmEiASBu4DXARuBtzpvEpNvKaXOUkqdC9wBfNo8dyNwPXAGcDnw3+b1NAWwXD/5GUwW6xdbpvnUm0opxZb9MQBeNJ1AaBfTSeix7R0zuZgANi41kiistOx8Ji2IpinvWVaJHsfF46UFcSGwRym1VymVAu4FrnYeoJRyPrGaAcuxeDVwr1IqqZTaB+wxr6cpwHQZTBZW6QyrlIaTQ7E4vaNJupojtqWRj2VBaBeTjR7bHmELRLTwWD7DFIjtBSwIpZRdzG9t99SxrC2I0in8V3CHZcAhx++HgYvyDxKRG4GbgQjwKse5j+adu6zAuTcANwCsXLnSlU7XI7PNuk5fbNxUhQRi874BADat6kREprzvvK5eZGSjx7ZHTJbZKGwNn73ccDE9dXCIbE6dFHM7PpJgOJ6moyls72PiZDIGocdxsVQ9SK2UukspdQrwz8CHSjz3bqXUJqXUpp6eHm86WAeMJs0YRGPhm2p5ZyNNkSB9o8kpC95+t7MXgJed2j3t9dt0cK8s9NgundliEEvaG1nR1choMmPvX2Jh/b5hcVvByY41jkf1OC4aLwXiCLDC8fty87XpuBe4psxz5zWTMYjCN1UgIHYcYofjpkplcjy0qx+AV29YOO31LdNcz7xs9Nj2iEKF+vK5cPUCADbvi530+vPHDAs5v1yMhbaES8dLgdgCrBORNSISwQjM3ec8QETWOX69Etht/nwfcL2IREVkDbAOeMzDvtY1kzGIwhYEwDnLOwDYemDQfm3zvgHGkhlOX9zK8s6pQT0LHaSegh7bHjFZamN6gbhobRcAm/cOnPT6kweNsX3W8sICMRlL0+O4WDwTCKVUBrgJeBB4HviuUmqbiNwmIleZh90kIttE5CkMX+27zHO3Ad8FtgO/AG5USullvNMwWZ5geoG4aI1xUz3quKnuf/ooAJduWDTj9XWQ+mT02PaO6WqKOXnJWsOCeGRPv136O5dT9uTnRau7Cp7X6vF6nvixY4zt2+fJtauFl0FqlFIPAA/kvfZhx88fmOHc/wf8P+96N3cYmSWLCeBCUyAePzDIWDKDUoqfPnMMgGvPnxIjPQltmk9Fj21vmG1NDxhVWs9e3s4zh4f53Y5eXnfWEnaeGGVoIs3itoaT9jNx4mUM4tiDD/LE3/89Kpvl/M99jqWXX+56G9Wg6kFqTeWMzJLFBLCgJcqFq7tIZnL87Jmj3PPnA0yksly0pmva9FYLHdzT+IXtYpphLAO8/uwlANz/jGEF//y54wC8cn3PtNl4bR5NdHKZDNtuv51cKoXKZnnu1lvJpefGZEoLxBygGBcTwHWblgNwxy928l+/MVzif/fqdTOdAkC7DlJrfGK2NFeL15+9lGBAeHDbCXadGOWHTxy2X5+OVo8mOn0PPUT88GGaV62iec0akn19nPjd71xto1pogZgD2GZ548yzrqvOXcppi1oYGE+RyuS47oLlM6a3WuggtcYPMtkcE6ksItBUoGikk6Udjbzx/GVkc4rX/dcfOTwY59SFLbx4beH4A0xa2JYIuUXvQw8BsOzqq1nxpjcZr80RgfA0BqHxB8tknm3WFQ0F+eZ7XszX/rSfruYI73jJqqKurxcYafxgPGkEnFuioZNKdU/Hv7xuA4/ti7F/YIJQQPj3q84gFJx+ztvqUTXXvocfBqDn5S8nEA6zA+h/9NGZT6oTtEDMAWZbSe2kpzXKBy9bX9L1G8IBQgEhlcmRzGSJhnTpII372MkWM6S4OulsjvCTG1/Ob3ee4Iyl7VP2MsmnxRYII0ljulhFKSQHBhjft49gUxMd55wDQKilhYmDB4kfO0bjkiUVt1FNtItpDlBsDKJcRGTSPNeBao1HFBt/cNLeFOba85bPKg5gWNCRkLH5VdKlTYOGt28HoG3DBgKhEIFQyBaK4eeec6WNaqIFos5JZ3PE01mCAaEp4t3M3qsAn0ZjUWwGUyVY1olb7tLhbdsA6DjjDPu1ttNPN9rYscOVNqqJFog6x7ny1A2TeTqsla1aIDReMZacfT1PpbhtCVsC0eYQiPaNRuX34eefd6WNaqIFos6ZrdS3W9gBvqQOVGu8oZgyG5XijEO4wdiePQC0nXaa/Vrbhg1GG9qC0FQbr+MPFtrFpPGaYspsVIq1aZAbqa4qm2V8/34AWtautV9vXr0aRBg/dIhcqvA+8PWCFog6ZzLF1ScLQguExiMmJzveu5jcSHWdOHKEXCpFw6JFhFomqxEEo1Gali+HXI7xQ4dmuELtowWizhnxYdZlXN/y3WoX03wnMzHBwJYtrs+OrRiEHy4mNyq6ju3da1zTYT1YNK9eDWBbGPWKFog6p5jiZm6gLQgNQLK/n9+99rX86frreeyGG8hl3BsPpaznKRfLFetGkHriwAFgUgyctKxZA8B4nVd31QLhISqbJT06dZtPN7HN8ml2k3OLFtN3O+pymQIng08+ydYbb2THpz/t6oNH4x47P/tZEseMKsB9f/wjRx94YJYzimcyzdW7sexmNt7EEWOfp8bly6e8Z1sQpojUK1ogPGLi8GF+e+ml/OK883j+E5/wrJ1iSn27gdcWxMTRozz67ndz7Be/YPddd7HzM5/xpB1N+WSTSQ7fZ+yLtOad7wTg0He/69r1/bAgJusxVe4qjZsC0bR0aoHAxmVGCf340aMVt1NNtEB4xFP//M9MHDwISrHnC1+g9w9/8KQdP24q5/XdrmNjse8rXyEzNkagoQGAvV/5CqmhIU/a0pRH/yOPkB0fp+2MM1h/880EIhH6H33Utb/TaImlNsrBzTRX24JYNnU/lUZTNLRAaKYwvH07A48+SqilhVPe8x4A9n71q560NRmD8CdI7YUFkUunOfT97wPwsu98h55XvIJcMsnhH//Y9bY05WNVLV186aWEW1vpOPdcUIqBx9zZMbWcUhulYqdru+AqjRcpEEqpituqFlogPODIT34CwPJrr+XU972PQCRC30MPkezvd70tqwS391lM7uWP5xPbupX0yAgt69bRceaZLH/DGwDmTE39ucLgk08CsGDTJgC6X/xiAAZcqlzqS6kNlyY6mXicVCyGhMM0LFw45f1wezvB5mYyY2NkPI5DeokWCA84YbqTllx+OZHOTrpf8hJgcgbmJqM+lCcAZ3DPfRdT7+9/D8CiV74SMMomI0LsscfITEy43p6mdDLxuFFbKBCwi9F1mUIx9MwzrrQxaUF4X4up0nFsuY4alyxBAlMfoyIyJ9xMWiBcJn70KGO7dxNqaaHrggsA6Ln4YsDYecpt/I9BuG9BDGzZApjCAES7umg/4wxyqRSDTzzhenua0hnZvh2VydB22mmEmpuByZpDIzt2oLLZiq6vlLIf2l6ug2h1Kc3Vdi8VCFBbWKW+tUBMg4hcLiI7RWSPiNxS4P2bRWS7iDwjIr8RkVWO97Ii8pT57z4v++kmMfOB1nXBBQTCxmC0LIjY44+73p5faa5u3Vj5ZJNJo2SyiD0zBWxxHXzqKVfbc4P5OK5Hdu4EJusMAUQ6O2lYsoRsPM5YhQvCkpkc6awiEgzQMMtucpXgVpDazmAqEH+w0BbEDIhIELgLeB2wEXiriGzMO+xJYJNS6mzg+8AdjvfiSqlzzX9XedVPt7H8tJ3nnWe/1rpuHaGWFuJHj5Lo7XW1Pb9KbVizurFUhlzOvaDb8HPPodJpWtetI9w6WdO/49xzARh6+mnX2nKD+TquR3ftAqBt/cmbTbWbVUxHzH0Ryr6+z5ZwpbG0mTKYLCyBsI6tR7y0IC4E9iil9iqlUsC9wNXOA5RSv1NKWU7mR4GpK07qDGvG23n++fZrEgjQcfbZxvumgLiFX8X6ggGhORJEKUMk3MLacMX6fiw6TWvCLf+2i8zLcW0JRKujaikYkx+YLDtRLtYD28sANUBzZFIgshVMdOwYhLYgymYZ4KxUddh8bTr+Bvi54/cGEdkqIo+KyDUe9M91VDZrbxLSfuaZJ71n7zJV4UzLSSKdJZXNEQkGiIa8Dyd54WYa3b3buHbeg6dp5UpCLS0k+/s9yf6qgHk3rsHxdzIFwcIqKTH2wguVXd+nBZ/BgNjW8HgFEx3roV9okZyFFgiXEJG3A5sA55LjVUqpTcDbgM+KyCkFzrvBvNm29vX1+dTb6Rk/cIBcIkHDkiVE2ttPes8yzd3cZcq5itrLzYIs3K6lD9M/eETEFg3L/11vlDuuzXNrZmxnxsZIxWIEolEaFi8+6b2WU4zuV2xB+LAXhIUbCReJEycApnwfTprmwGpqLwXiCLDC8fty87WTEJFLgX8DrlJKJa3XlVJHzP/3Ar8Hzss/Vyl1t1Jqk1JqU09Pj7u9LwPr4W9tOejEEohRFx92fvltLdwsU2BhbbiSLxDgENXaEgjPx7X5fs2MbatkddOKFVNSOq1KpmN796Jy5e/z7FdVYqg8ZVspZccSC62BsGhYtAiARG9vxVle1cJLgdgCrBORNSISAa4HTsraEJHzgC9i3ES9jtc7RSRq/twNvAxwzzfjEXamRwGBaF6zhkAkwsShQ64V8Bs2A9TtHmcwWVg3rxulksGoDJqKxQi1tBScibVaomr6v2uEeTeuJw4eBAyByCfc1kakq4tcMllRAoYfZTYsKt12NDM2Ri6RINjUdNI+EPkEwmEiXV2Qy5GMxcpqq9p4JhBKqQxwE/Ag8DzwXaXUNhG5TUSs7I1PAC3A9/LS/jYAW0XkaeB3wMeUUjV/I43PUB8+EA5PVnh0qQSwJRBep7hatLq8L7XTvVTIRWaXTK6hmvrzcVxbAtG8cmXB9y3hiB8+XHYbfiySs2ipcHdE23oowrKLmsckXc5e9AtP/xpKqQeAB/Je+7Dj50unOe9PwFle9s0LxszSvtaDLZ/m1asZ3bWL8f37p2TtlMOI7xaEuxu+j87gXoLaLZk838a108VUiKZlyxh6+mkmjhyxV1eXih9lNiwm91cvbxwnzfhDdAb3kkXDwoWM7txJorfXTgmuJ2oiSD0XUErZlkGhDUScr7v1wBvx24JwuaKrZUG0TCMQjUuWEIhESPb2khkfd6VNTenYLqZpLAhrP4SJCiwIv4pOQuXlNhJm0sBM8QeLaHc3AMkaSKIpBy0QLpHs6yM7MUG4vZ1IZ2fBYyyBqHTVqYXfMQh70yCXLAg7QH3qqQXfl2DQnrXWmhUxn7BdTNNZEKZAVOJisopO+jHZqdQSttxFxVoQMCkq9YYWCJew/OTN07iXwP19av0PUruzCtViwnRdNK9aNe0xtepmmi+obHZy1fA0AmEtFqtkxfCIjxZEpRMd24IoJQahBWJ+YwvENO4lgBaXH3a+WxD2hu+Vu5hyqRTx48chEJix4Nlc2fy9XokfO4bKZIguXEiosbHgMa5YED4tlHO2UbaLqcQYBOB6iR2/0ALhEmNm/KFlBoGILlxIsKmJ9OAgqeHhitu0zHK/BKLNxYVy8aNHIZejcfFiu6hhISzrQgtEdZgpxdXC3l7z2LGy10L4VXQSXAhSlxKDMI+p1ywmLRAuUYwFISKuPvCqtQ7CjSwmK6A504MHtAVRbeLHjgEzVy0NNTYSWbCAXCpVtivFTrjw1YKoMM21GAvCdDHpGMQ8pxiBcL7vpkD44bcFxwpUF1ZSjxcxMwUdg6g28ePHgZlLSsCkm6ncTKYRXy2IyiY6lggW42JyroOox61HtUC4gFKqqICr8/36tCBcdDFZFsTymQudNi5ZgoTDJPv6yMTjFberKQ3L3944m0BUEKhWSvlWth4qm+hkxsfJjI0RiEQIt7XNenyouZlgczO5VKoutx7VAuECqcFBsvE4odbWWQeNHdBzoUa8FdirSxfTLIuvLCQQsHfmSpjuDo1/JIq0IOzKpWWM63g6SyanaAgHiIa82yzIopI014QjxbXYApm2m6kO4xBaIFygmO0HLRpdqvCYzSlGExlE/C/W54YFMdvqXCeWQNTzxiv1SrEuJut9y+IoBXsNhF+u0grGcWpgACguxdWingPVWiBcwK4NP0Mgz8KtXaacxc0CAe9LfQNEQwHCQSGVzZFIV1adstggNbgnqprSsSyI2VxMzsqlpeJniitMClE5ApE0BSKyYEHR59RzoFoLhAsUs/2ghSUQiePHKyqP7HehPjD3aLDcTBUslkuPjpIeHCQQjdpBvJmYCxuv1CPZZJLUwAASDNolI6bDzvcvy4Lwdyw7JzrJTGkTHUsgol1dxbdnikmqDiu6aoFwAXv7wSJcTKGmJsKdnUZKYAU7pQ1NGDdVR5N/AgHOWvqV78bVuHRpUX5ce+MV7WLyFbukRE8PEpw5NmC7mEyLoxT82jbXQkTKHsepMiwI61hLXOoJLRAuUEoMAia3KaxkRhwbTwHQ1Rwt+xrl4EbBvmIzYyy0BVEd4tbfyYwBzYSzpESplrFdZsNHa9hqy7LEi8WyAqIlCIRtQWiBmJ9YAlFMDAIqy/iw6B8zNinrbo6UfY1ycKPkt50JYvqtZ0MLRHWwssZmC1ADBKNRIl1dqGy25Jmyn4vkLDqbjPtmaCJV0nnlxCC0BTHPsVabFhODcB7njgXhr0BYhc4q2VXODnyWKhDHj9ft1o31SLEprhblxiH83G7UwrpvYuOlWRB2DKIMC0ILxDwkMzFhbOgeicwayLNwI5NpwBSIBS3+upjaXKjoam/4XqRABBsajNlpOl1R3EZTGraLqci/k53JVKJADJpjudPHeJoVuxss0YJIVSAQ2sU0D7GsgIbFi6ds6D4dzuJm5WK5mBZUycVUqu/WSakuJnAvPVhTPLYF4bFAWNZwp49juct0MVniVCzaxaQpiVLWQFg0uRCDiNkWhL8CYd3EpfpunZTqYgKHqGqB8A275pDXAmGOJT8nO9Y4jpUwjlU2S2pwEGDaTcEKEWppIRCJkJ2YIDMxUVpHq0xRAiEiPxSRK0VEC0oepfppwZ2g68BYdWIQk77bCgSiRBcTTGY8lZNnPxNveMMb+NnPfkaugjUpc5VkCRvjwOSK4XqwIOwgdQkxiNTgIChFuLOTQKj4gLqIEDHXTdTbWohiH/j/DbwN2C0iHxOR9R72qa6wH3YlCESkqwsJh0kPD5NNJMpqd8B2Mfkbg7BurFJ9txa5TMaII4gUtUjOotzZ6Wy8//3v51vf+hbr1q3jlltuYefOna5ev56xA7LFxtbKFHHbGvbTxdRsxCBKsSDKCVBb1OtiuaIEQin1a6XUXwHnA/uBX4vIn0Tk/4jItJElEblcRHaKyB4RuaXA+zeLyHYReUZEfiMiqxzvvUtEdpv/3lX6R/OHcmbDEghMZnyUsbAom1OcGDUEYlG7vwJRqQWR7OsDpYguWDDjRkH5VLIQayYuvfRSvvnNb/LEE0+wevVqLr30Ul760pfyla98hXR6+tnlXB/bmYkJu2ppqLW1qHMqtSD8tIY7y4hBlBOgtqjXOETRLiMRWQC8G3gP8CTwXxiC8atpjg8CdwGvAzYCbxWRjXmHPQlsUkqdDXwfuMM8twv4CHARcCHwEREp3unnI7ZAFFEb3kkltWt6RxNkc4rulqgv1S+dTN5YZW7XaG22UoKgOo+Pu2xBAAwMDPDVr36V//3f/+W8887jAx/4AE888QSvec1rCh4/H8a2lS0W7ekpvmqpVZSuhJpDiXSWiVSWcHBydbMfdLcaE6s+0xIvhqQ5+4+UUGbDol5TXYuNQfwI+CPQBPylUuoqpdR3lFL/F2iZ5rQLgT1Kqb1KqRRwL3C18wCl1O+UUlbU5lHA2hzgMuBXSqmYUmoQQ4QuL+WD+UW8DBcTOASijBnx0SFjX4SlHQ0ln1spXWUE95yUmhljYR3vdkXMa6+9lle84hVMTExw//33c9999/GWt7yFO++8k7GxselOm/Nj2w5Ql+AGjHR1gQipwUFymeLSoJ3WQ7FC5AaL2ox758RIouiNfCqxIOo11bVYyf4fpdQDzhdEJKqUSiqlNk1zzjLgkOP3wxizpun4G+DnM5w7JU1IRG4AbgBYuXLljB/AK5JluJicx5fjUz86ZMQtlrYX3kTeSzpN3+3geAqlVMk3dTkuOefxiRMnymp3Ot773vdyxRVXnPRaMpkkGo2ydevW6U6b82PbtiCKjD8ABEIhIp2dpGIxUrFYUVa1la7td8mYlmiI5kiQ8VSWkUSmqD1VyklxtZjrLqaPFnjtz251QkTeDmwCPlHKeUqpu5VSm5RSm3pKmOm4RS6dNv7ggUBJNxJU5jI5NmxYEEuqYEFEQ0FaoiEyOVXWpu/luphCTU2EWlvJpVJ2qqEbfOhDH5ry2kte8hLXrl+vY7scgXAeX+yCxmPD1mTH/7FsWRG9I8UlirgRpK43gZjRghCRxRizm0YROQ+wpm1tGO6mmTgCOIv9Lzdfy2/jUuDfgEuUUknHua/MO/f3s7TnOwkr4NrTU1LaG1S2wcrhQdPFVAULAgx3wFgyQ/9osuQKnOW6mMD4zsZGR0mcOFFSueVCHD9+nCNHjhCPx3nyySdtN8PIyAgTs+eqz/mxXWqKq0W0p4fRXbuKjkMcNwVicRUEYmFblL3945wYSbJu0eyB+HIquVpE5qiL6TKMwPRy4NOO10eBf53l3C3AOhFZg3FTXI+RKmtjis4XgcuVUk7n8oPA7Y7g3WuBf5mlPd+p6GFXQQxi1wljb9tTF04X/vGWxW0NHIxNcHwkwdqe0vpQrovJOmds924Sx4/TvmFDyec7efDBB/nqV7/K4cOHufnmm+3XW1tbuf3222c7fe6P7TJiEM7jixWIo5Y1XEUL4oS2IKZlRoFQSn0N+JqIvFEp9YNSLqyUyojITRg3RBD4slJqm4jcBmxVSt2HYXa3AN8zfcoHzQB4TET+A+NGBLhNKVVzCcTluktgchVxqRaEUoqdxw2BWL+4uPRDt1lk3szW7K8U7O+sxKA+OL4zFwLV73rXu3jXu97FD37wA974xjeWdO58GNtlu5hKfBBaY2hJFaxhy2qxkj5mQwep8xCRtyulvgGsFpGb899XSn26wGnO9x8AHsh77cOOny+d4dwvA1+e6frVplJ3CRgPO5XLFV3HqW80yeBEmtaGUFVmXQCL24yA4vEiZ15O7O+sxLRgcHex3De+8Q3e/va3s3//fj796anD2GlVFGKuj+1yBaLU7TWP2QLh/1hes6AZgH3940Ud70qQOhZzNcnCa2ZzMTWb/1fHl1HjVOIuCTY0EG5vJz08TCoWK/pG3HZ0BIDTF7dWbZAtNmd7pVoQmfFxe/FVuKOj5HbdXCw3Pm48FGZIZZ3XlJPmChAxx3GqyCD1oZgR71na4b8FsabbeLztLUIgsskkmbExJBQi3NZWclvBaJRQSwuZsTEyo6NlXaMazOZi+qL5/7/70536wnJ1lFJ0zknDokWkh4eNoGuRAvHH3caNd+GayoK0lbC4rTwXk9MlV464VbLvcT5/+7d/C8BHPvKRiq8111BKTQqEhxbEcDzNseEE0VCAFV2z5by4jxU/29s3NuusPuVYJFfuxCzS1UVmbIzkwEDdCESxC+XuEJE2EQmbZQP6zPS9eU05hfqclOoyiaey3Pe0UeDvVaeXJ0puYPtuh4vz3VpU4pJznudmPaZ/+qd/YmRkhHQ6zatf/Wp6enr4xje+4dr165HM2Bi5VIpQSwuhptIe3HaQughf+55eI5a2blELwYD/1nB3S4TWaIiRRGbWFdWVBKgt6jFQXew6iNcqpUaA12PUYjoV+EevOlUvlFtmw8ISlngRLpNcTvFPP3iG/rEkZyxt4/yVHWW16QarFxgPjb194+Ryxa1ChcqC+lBZavB0/PKXv6StrY2f/vSnrF69mj179vCJT5S0ZGHOYVsPlWTrFGFB7DxuuPdOKyLF1AtEhLOWtwPwxIGZ19ZUkuJqUY+prsUKhOWKuhL4nlJq2KP+1BWVZORAaTPirz96gPufPkpLNMQnrzunqkGuBS1RuluiTKSyHCkyAwQqtyCiCxYgwSCpWIxssvgaOjORMUtC/OxnP+O6666jvb3dlevWM+WmuIKxT4IEg6SHhsilZi7H8rj5UN64pHrulhevNR7aj+6dOZFMWxAz81MR2QFcAPxGRHqA8upUzxHSo6Nkx8cJNjYWXe0yn2IFYiyZ4ZMPGmWoP3nd2Wyo4g1lsX6x4b+11mQUQyVBfQAJBkvOs5+N17/+9Zx++uk8/vjjvPrVr6avr4+Ghupkh9UK5QaowfgbWcXsZnoQJtJZfrvDGA8vX1danMNNXnKK8dB+cNtxUpnp9wSpJMXVoh5TXYst930L8FKM6pRpYJy84mTzDefDrtzZfLH183+/s5fRZIbzVnZw+ZlLymrLbSy3wI7jJQhEhS4mcL/s98c+9jH+9Kc/sXXrVsLhMM3NzfzkJz9x5dr1Srkprhazifih2ATv+dpWBifSnLmsjfVVcjEBXLCyk3ULWzg2nOA7Ww9Ne1wlKa4W9ViPqZT6EKdjrIdwnnOPy/2pGyqdDTvPnU0gHtxmvH/lWbUhDgDnr+zkK4/s54+7+7jxL04t6pxKXUzgbiaTxY4dO9i/f7/tbgJ45zvf6dr1642KBcKqx1TgQTg4nuLa//4T/WNJWqIhPnrNWVV1lwYCwt9feho3fusJPv7zHfzF+h6Wd04NzM9XF1NRAiEiXwdOAZ4CsubLCi0QvgiEFUC7+DT/i7ZNx8XreoiGAjy6N8aN33qCNQua+dtL1tI6Q20mN78zt/aFeMc73sELL7zAueeeSzBo7K0hIvNbICpwMYFDIApYEN949AD9Y0nOWd7Ol979Irpb/K3iWogrzlrM5Wcs5hfbjvPv92/nf945tUD1fHUxFWtBbAI2qmILp88D3HjY2VuPDg2RTSQIFvB9D0+kOTIUpyEc4JQS6x55SXtTmBsuXsudv93Dz545Bhgrqz953TkFj1e5nB38dMPFlHRJILZu3cr27dvrZmWrH5RbqM9iprUQP3zSqGn4j5edXhPiAMaE4LZrzuA3O07wm+dP0D+WnNK3+epiKjZI/RxQXqrOHMUNgZBAYPJmmqa+0PZjxsrp9YvbqpIrPhM3v+Y07vnrC/mny40tyn/85BGGJwrvNJeKxVDpNOH29oJCWCy2i8mljYPOPPNMjru8jWm9U6mLabrV1ANjSfb1j9MYDvLitdVb6FmIha0NXLRmATkFmwtkNFkL5SqpIjxnXUxAN7BdRB4D7PxCpdRVnvSqDnBDIKzz40ePkjhxguYCG8M8bwrExiXVC+RNh4hw8Wk9XHxaDw/t6uPRvTEeeaGfKwrEStz8vpzXq5T+/n42btzIhRdeSDQ6OWu87777XLl+PVKpQDSY5yXyBOLJg0MAnL28nVCw6N2OfeOiNV08vKefx/YNcOXZk2NYKeWOBdHZCSJGCnAmU/IWAdWg2B7e6mUn6hG/HngHzVo1a7trx71UiE2runh0b4znjgwXFggXMpic57slELfeeqsr15krqFzOFohyH4bTbRr07BFj+dS5VVzkORMvMsvXPGEKmUV2fJxcMmmktJe4styJBIOTO+4NDpbtwvOTogRCKfUHEVkFrFNK/VpEmjDKHM9bbIEoc5Gchf3Am8ZlYm0OtLyzOpsDFcvGpcbaDMviyceNDCbn+YneXleqYl5yySUcOHCA3bt3c+mllzIxMUE2m539xDlKanAQlc0S7uggGC0vRjBdmuuBAaMoXi3F0pxYqdv5tZncsB4sogsWGAIxMFAXAlFsLab3At/H2AAFjF3mfuxRn2oelc1WHMizmG3joMODhgVRKPWulrBWw26fTiBcsiBCLS0Em5rITkyQcaES6//8z//wpje9yS7ed+TIEa655pqKr1uv2O6lCsb1dAKxf8AYy6uqUJivGLqaI3Q0hRlPZekdnVyp70aKq0W9BaqLdQTeCLwMGAFQSu0GyitANAdIDgygslkiXV0EIpGKrhU1g67JAhaEUqpuLIiVXU00hoOcGEkyHJ8aqK60sKGFiLi6FuKuu+7ikUceoc2srrlu3Tp6XQqA1yO2QFTwMAy3tyPhMJmxMbKJyYILlrt01YLm6U6tOmutEuB9kyXA3Uhxtai3QHWxApFUStmFVczFcvM25dWt+ANMlgovlNc/HE8zlszQHAnS0VTa3s9+EwgIy0wRK7RDV6WFDZ24GYeIRqNEHCKfyWTmdcqrG5axiEw+CE3BGU2kiY2niIYCLGytjfTWQqwxY317+yetU1ddTNPEZ2qVYgXiDyLyr0CjiLwG+B5wv3fdqm3ccpcARM1rFMrrPzpk7rbV0VgXDy1r05cjgwUEwsXvbLa4TSlccskl3H777cTjcX71q19x3XXX8Zd/+ZcVX7deqXSRnEX+g9Aq6ri8s5FAjaVrO1nRZYzhY0OTlo8XLqZ6WSxXrEDcAvQBzwJ/i7HV4oe86lSt4+Zs2GlB5K9D7Ddr1PfUyIKi2VhmCkShfSLctLrcdDF97GMfo6enh7POOosvfvGLXHHFFXz0ox+t+Lr1SqUprhb5cYg+06e/sLW2CyHam2E5ttN1o9S3Rb5lVesUm8WUE5EfAz9WSrlTRrOOcfNhF2ppIdjcTHZ8fMpWhJZAdNewSe7EipPklwDPJpOkYjGjGqsbN9kMVlepBAIBrrnmGq655hp66iCrxGsSLgmE5aKyHoSWQPTU+FheZG6GdWKkgAVRwSI5i5nqVNUiM1oQYnCriPQDO4Gd5m5yH57pvLmOFVCOumBBwPQzYlsgWioLhPvF0g7j5sp3MTndFhKsPDu60QUXk1KKW2+9le7ubtavX8/69evp6enhtttuq7h/9YxbLqZI3kzZtoZrXCAKbadrB6krFE2ov3pMs7mY/gEje+lFSqkupVQXcBHwMhH5h9kuLiKXi8hOEdkjIrcUeP9iEXlCRDIi8qa897Ii8pT5r6aWtbppQTivM1UgjLyAWqlZMxtL2g0LIn+varfWQFhEXQhSf+Yzn+GRRx5hy5YtxGIxYrEYmzdv5pFHHuEzn/nMjOfO1XEN7glEfj0my4Ko9bFcyMVU6cJBJ/nCWevMJhDvAN6qlNpnvaCU2gu8HZix3KWIBIG7gNcBG4G3isjGvMMOAu8GvlXgEnGl1Lnmv5oq6eFmwNV5neksiHqJQVg3/8D4yTuJuS6oLsQgvv71r/Ptb3+bNWvW2K+tXbuWb3zjG9xzz/RFiufyuIbJB1el63vyYxDWZKfWLYiOpjCRUIDRRIaJlFH+PemmBeFwMdVD7dPZBCKslJoidWYcYra8ywuBPUqpvWaK7L3kbTKklNqvlHoGmH4rpxrEdwuitT5cTJYrrN+xyAg8FNS+PlSuvKGTTqfpLnDD9/T0kE4XLjhoMmfHdS6dJjU4CIGAUTeoAqYLUte6u1RE7DTc3pEkKps1vhORir8TgFBTE8HGRnLJJNnx8dlPqDKzCcRMm8rOvOGssdrauUXTYfO1YmkQka0i8qiIXFPoABG5wTxma59LW1DOxkkBVxeCVjB9hdL+OjHLLdobw4SDwmgyQyI9Wa7CbRdTMBol3NGBSqftKpulEplhgeNM7+HDuIbqjO1ULAZKEe3qqjhWlJ/mWi8xCIAFzcbff3AiZYiDUkQ6O10rrldPbqbZPvE5IlKodoIAXuerrVJKHRGRtcBvReRZpdQLzgOUUncDdwNs2rTJF3vNWYrAjYArTL+N5mSQuvZvKjBmXwuaoxwfSTAwnrLTXt22IMAQ1fTQEIne3rJM/6efftpePe1EKUUikShwhmvMOq7Nfvg+tq14gRuuFHvS09eHUqpuspgAOh0CkYwPAe7EHyyi3d3EDx8mOTBA8+rVrl3XC2YUCKVUJU/AI8AKx+/LzdeKQil1xPx/r4j8HjgPmHIj+Y2bayAsClkQuZyyffkLatwsd9LdGuH4SIL+0eSkQLjskrOuNbprF4kTJ2jfmB8CmJ0KCvLNyXEN7gWoAULNzXbNrMTwCLGJFCLQ1VT7Y9nqY2w8TTJhTghd8hZAfZXb8LIo+xZgnYisEZEIcD1QVNaGiHSKSNT8uRsjk2q7Zz0tgYTLKa5QOAYxFE+TzSlaG0JEQ/VTOHdBszFDtKwfcN/F5LyWm3tTF8mcHNfgTqE+J5Yl0nvwKEoZrpta3AciH9uCGE+5GqC2qKfFcp79tZRSGeAm4EHgeeC7SqltInKbiFwFICIvEpHDwHXAF0Vkm3n6BmCriDwN/A74mFKqJm4ka3FWY4VF55w4A3rKnNnWWwaTheUOs/qvlPLMxQTu7SxXLHN1XIM7dZicWON64LCxJW1Xc+1bDzDZz9hEypXihfnUU7kNT7c0Uko9gFGWw/nahx0/b8Ew0fPP+xNwlpd9KxcvLIhgNEqkq4tULEYyFqOhp4dB071ULzeVheUOGzS3Hs2MjpKNxwk2NxNudW9XvCpaEHNyXIO7LiaYFPHR471AK+2NtV1w0qKzadKCsMtseGFB1IFA1L69V2N44S5xXs+6/pBZMrvWq7jmYz0EBicMgbO/LxcFFaorEHOVhEcupvETxqSqXgSiq9noZ2zcGwuinsptaIEoEdtd4vYDL89lMmzOwNsb68uCsGZfVv+9cC85r+e3i2kuY5eQcdnFlOwzrtvWUB8CYVsQE97GIOrBxaQFokQ8f+CZM2Jr0516mXVZWBbPkCUQLm0UlI+90ZK2IFzD7RiEdZ20+SBsq5OxbMcgPLIg6mkdhBaIEvEizRWmCsRQ3HDR1JuLqcN8CFj9j3v0fUW7uyEQIDkwQG7mlc+aInHdxWReJxczBKJeJjuT6yDSrpb6ttAupjlKZmKCzOgogUiEcEeHq9fO33rUmoHXm0C051kQSY8srkAoZNxoSk3Z+1hTOpnxcbLj4wSiUUItLa5c0xIIGTJWu9eLBWFPcsaTnriYIh0dEAiQHhqq+cmNFogScC74cnuHNyttNm66ZOrXxWTMviyBiHsU1IfqpbrORU6qEODS2LZcTKFhQyDqZSyHggHaG8NE0glyySTBxkZCTU2uXV+CQbuuU7mlYvxCC0QJeJHiapFvQQzbWUz1FaTOdzElPFg3YmGXKNFxiIpxO/4ApltGhPD4CIFctm4EAgzLvSVp7EvtpvVgUS9uJi0QJZD0oGSEhW1BWDGIifq0IJoiQSLBAIl0jkQ661mQGtzdenS+k3B5DQQYbsBIVxeCoiU5RluDp8uuXKWtIUxrYhRwN/5gUS9rIbRAlIBXKa6AcSMFg6QHB8kmk5NB6joTCBGx4xCDI+OG6yIQcPXBY6FdTO7h9iI5C8siaUuM2OOiHmhrDNGaNATCEwuiTjKZtECUgFcprgDieIgme3vtdQT1FqSGSVEbOHQMlKJh4ULXSiU7ma4KrqZ0vHAxwaTgtCVG6mYdBJxsQbhZqM/CWpld62shtECUgFerqC2sB9748ROMJDKIQGsd3VQWlqgNHjSKnHr2fWkLwjXsILXLs2Xrem2Jkbpyl7Y3hrUFgce1mOYaXrqYnNcdOnwUCNLWECYYcDdbyg+s1d+jR44C3sQfQK+mdhMvYhAA4W7jeh3JUZoi9VOVuK0xTFbHILQFUQpe7GvgxLquIRD16V6CyX7HTxgWlxcZTDC1fpWmfLyKQeTaDffMgsy466nhXtLWEKLVymLyQiC0i2luoXI5TzNyYPKBN37cEKJ6MsmddJoCkbIE1aPvK9zRQSASITM6SmZiwpM25guWq8PtGESmvQOAztSoq9f1mrbGMG0JYzNNL1xM9VJuQwtEkaRiMXKpFOH2dlcXzTixBMJaXFavAmH1O2sWafPKghCRKetHNKWjcjn7QeW2OyXZ0gFAe6LQzsW1S3tjmLa4KRBerHvS6yDmFvGjhtuncckSz9qwBCJtmvv1tkjOwhKIQMzMjPHyOzNv3rheC1E2qcFBVCZDuKODYNTdDaommjsAaJ4YdvW6XtMaDdkWhBcxR1sg+vtRuZzr13cLLRBFEj9m7IrVuHSpZ21YAzE3YMyG620NhIVVcyc0ZLotPIrZwKT7Sld1LR+3txp1MtbQBkDjeJ0JhEoSzabIhCKu1aZyEoxGCbe3ozIZUoODrl/fLbRAFIklEJ7Ohs2HnQwOgFJ1G6RuawwjKkd0xBj4ngqETnWtGDs7zwNf+4hESAXChFIJMuPjrl/fKxrHDEEba2r3LLgerYOxqwWiSBKWBeGhQIRaWgg2NhJIJmjIJOo6BtGaGCWgckS6ulx3WzjR5TYqx8vsvOFEhtEGY6vZeqq62zBmTG5GTAvIkzbqIH6mBaJI4j4IhIjYN2lHfKhuyiPn094YpiM+BHhrccGk1RXXqa5l42V23kgiw3Cj8ZBN1HjGjpPgsCEQg1EPBcJ06SVqWDi1QBSJFaT2+oFnCVDnxGDdxiCcAuFVBpOFFROy/j6a0vFqEywwtp4dNWfh9WRB5AaMvg5GW0mks560UQ/7qnsqECJyuYjsFJE9InJLgfcvFpEnRCQjIm/Ke+9dIrLb/PcuL/tZDH5YEACNy5YB0DU+WNcupo6JIQCiC72LP8Dk9+W3QMylsZ3wcL3KcDzNsCkQtfwgzMcSs5GGNkYS3mzqM7lnd+0Kp2cCISJB4C7gdcBG4K0isjHvsIPAu4Fv5Z3bBXwEuAi4EPiIiHR61dfZyGUynhbqc2I98DonBuuq+qWTcDBAT8pIEQz0eFOWxKJh4UIkGCTZ20s2mfS0LYu5NLbB2xjESCLNcGPHSe3UA5bbZ6SxnZF4xpM25rsFcSGwRym1VymVAu4FrnYeoJTar5R6BshPBL4M+JVSKqaUGgR+BVzuYV9nJNnbC7kc0e5uTwOuAE2my6RrIla3FgRAd9LIAsl1up8Z4yQQCk3eaKaV5wNzZmyDx0HqeJohSyDqKE5kb9zV0GZv3uU29iLP+WhBAMuAQ47fD5uvuXauiNwgIltFZGufh1+yH2sgLBrniEB0xg2BSLW7X8cmnyq4mebM2M6l08Y6CBFP1kGMJNIMNXUA9ZVIkPDBxWQHqeepBeE5Sqm7lVKblFKbejwY3BZ+rIGwCC422uiaGKQxXD/VL/NpHzf22k10eGtBwKRATMyhQLVfYzvZ1wdKEe3u9mTPjuGJNEON7UB9WhAjjW2MeG1B9PejlPKkjUrxUiCOACscvy83X/P6XNfxo8yGRbJjATmE9vgQKuON79NrcpkMTaOGQIy1ur/ZSj6WWy5+xLchMmfGtpfupVxOMZrMnORiqtUHoZNsIkF6ZIRcIMh4pJmRhDf3YaixkVBrK7lUivTQkCdtVIqXArEFWCcia0QkAlwP3FfkuQ8CrxWRTjOA91rztargxyI5i7GMMNLQRkCpml5hOROJ3l4CuSzDDW2MZL03UquQ6jp3xraVfOFBBtNoMoNSEG1uJtzWRi6VqumyEhbWd5Jt60RJwDMLAmp/TxPP7l6lVAa4CWPwPw98Vym1TURuE5GrAETkRSJyGLgO+KKIbDPPjQH/gXEjbgFuM1+rCn6luIIR1BtsMpJafJwRu4rV71hTl2cBPid2DMKn72sujW0vd0m0HqxtjeG62rvD6mNugeEC8lQgajwO4emOckqpB4AH8l77sOPnLRgmdqFzvwx82cv+FYufMYjheJpYcxdrYvuZOHIE70O87mMLRHMXzT4KxISPgjpXxrbXGUxgCsTixYzu3k3ixAnaN+ZnBNcW1v0eMHfD8ypIDbW/6ZXecrQI/LQghibSxOrcgpg4fBiAWFMnGT8Ewvy7JI4fR+VySKCucy98Je7lGgjzb9/eGLL/RnH/UpHLxnpYhxcabjev1kHA5KSzVr8XfSfNQiYeJzUwgITDnu1F7cRwMRmB3XotH+G0IIY9vLksQk1NRLq6yKVSNb9DV63hZQKGbUE01JeLyXpYR83vxEs3qR0/0wJRn8QPGSnrTUuXIkHv006H4w4Lok4Fwko39SsGAY4brU6trmphfV9Ny4pdxlE8w7YFEbaD4PUkEC1LfRAIbUHUN5a7pGnlSl/as2IQ4K9P3U3itovJR4GoUk2mekZls5NBag8sCMt37xSIelgsZ2Uttq8wxpQfAuFjFYCS0AIxC+MHDwLQtLxgvNF1TspiOnq0LvLGnahczn5Ix5q7PM0AcWJZEPUqqtUgceIEKpv1rISMM0hd6zNlJ5aIda007nkvBcIZg6jFe10LxCzYFsSKFbMc6Q4j8TSJcCM0t5JLJEjFqpYBWRbJgQFyqRShjg5SoahvFkSTtiBKxo4/eOBegpNdTE2OVORafBBaZJNJI+YYCtG93AxSJ9Lkct70OdzWRrC5mezEBOmREU/aqAQtELMwYcUgfBII66YKLTJN8jqbEdvf17LJ2ZcfDwQdgygdWyA8qjFmZf+0NYYItbQQ7uggl0zWdCKBc2+McCRMSzSEUsaiPy8QkZp2M2mBmIVqCUTUdGlZ7dcL4wcOANCyehWN4SDZnGI85c2GK06sGNF4nX1f1WTCY4FwWhDgsPJMq7wWsdc8mTETq+9eukpr2f2mBWIGlFK+u5ism6pl1SoAxvbv96Vdt5gwYzbNq1bZN5cfbqZmUyAmDhxA5fIrbGsK4bUFkS8Qjdakp4atPCtobz2023wYw1og6pRULEZ2fJxQayvh9nZf2rQGYscpawDjgVdPWBZEk1MgJrwXiFBzM9GeHnKpVF2kUtYCXqa4gqPURoNpQZgCUctuwKkWhLGW2JdAdQ3Gz7RAzIDTehARz9tLZrIk0jnCQaFzrSEQ43UqEH5bEFabAON1ZnVVC78siI6mCDApRBO17GKy7nmzr36MYR2DqFOs2bufKa5gDMrmNfUvEG0+zL6c2HGIOvvOqoFSylOBUEoxNJ2LqYYFwophWWOpo9EQNz9WU9fifiZaIGbA8v+3mA9rr3FWv2xcvJhAJEKyr4/M+Lgv7VdKemSE9OAgwcZGoj09tv/Wr7UQtgWhBWJW0sPDZMbGCDY3E+7ocP36Y8kM2ZyiORIkEjIeM/WQihzPS0qx9oX3UiDs+JkZv6sltEDMwPjevQA0r13rS3tDE5MzLgkEJmfENThwCmHHH1auRESq52LSAjErtqVn/q3cxjmWLRodLqZaXAuhslk7gG55Daz+D3kYR2tYsgQJhUgcP042mfSsnXLQAjEDY/v2Af5ZEPlZH/X2wHO6l8Af/62Tevu+qkn+38pt7LFsxh8AwmayRy6RIDUw4Em7lRA/fhyVyRBduJBgQwPgTxZTIBSadDPVWJq2FohpUErZAtHsk0BYs5SOPIGol0wmO8XVtHz8Fogmh0DU4gy1lpjwWCDyx7KFNTOvRau40JonP9ZBwGTMQwtEnZDs7SU7Pk64o4Nol/f7KgPExlMAdDUbdXGsm9cSqlpnzHLJrV4N+C8QkfZ2wp2d5BKJmt2hq1ZwpiN7wVDcGMsdTScLhDU2ajHTbCaB8HoMN9dogoUWiGnw270EEJswbqoFLYZZ3mLGPsZeeMG3PlTC6J49ALSsWwf4LxBQf99ZtfDaxWRbEPkCYWXn1eCkx7aAqyAQlihpC6JOsGbDLT4FqAEGTQui0/TbWg/a0d27a95lonI5+6HcesopQHUEotXxnWmmx7cYRGPkpNetCZe2IE7GdifXmOtNC8Q0jPscfwAYsF1MxqCMdncT7uggMzpKsrfXt36UQ/zYMbITE0S7u4l0GuXK/fLfOmk99VRAC8RMpEdHSQ0MEIhGPdlqFJyL5ApbELVYQqZQWZ0Ony2IWqslpgViGqppQVgxCBGpmwee1b8Ws78wmUM+VAULYsx0d2mm4kwm8Gr/7iHTXdreOE0MYt++mrOK7biMQyDstTwelvx2tjlx8GBNfS+eCoSIXC4iO0Vkj4jcUuD9qIh8x3x/s4isNl9fLSJxEXnK/PcFL/tZiJGdO4HJB44fxPIsCGf7tS4QtnvJ8X1ZrrKhiRRZD28uJ60+ueXqeWx7HaCG6bOYIu3tRLq6yMbjNZVIkIzFSMViBJub7TpMAMGA0OpxyW8wUoAjXV3kksmaqiXmmUCISBC4C3gdsBF4q4hszDvsb4BBpdSpwGeAjzvee0Epda75731e9bMQqeFhEseOEYhGPfPRFsIKUnc6csdb6sSCsGbsLWb8ASAcDNDRFCanJmeUXhNduJBQayvp4WHPcu3reWyDI9vMS4Gw10GEp7zntCJqBWf8LH/hYIc5YbMsfK+w7/Uasn69tCAuBPYopfYqpVLAvcDVecdcDXzN/Pn7wKvFj6p4szBqWQ+nnYYEg760mcnmGI6nEZksbgaOGXENDZpCWALW6nAxASxoNj7LgMc3l4WI+GF11e3YBhjdtQuAttNO86wNa0LQkRekhslAdS2lbxea4FhYLl+vx7B179SSe9RLgVgGOCMuh83XCh6jlMoAw8AC8701IvKkiPxBRF5RqAERuUFEtorI1r6+Ptc6PrJjBwBtp5/u2jVnYyieRinDJA8GJp8jtk+9hjOZlFKTApHnklvQYtxc/WP+lRDwIW5Tt2MbJgWi1UOBGBgzHqbdLVMFohZTXe0U7bwJDkC3NcnxeAzXYryxVoPUx4CVSqnzgJuBb4lIW/5BSqm7lVKblFKbenp6XGvcFoj161275mzYKa7NJ99Q0Z4ewh0dpEdGanJDETACa5mxMaI9PUS7u096z3pAWA8MP2g1/24jzz/vW5slUNWxnUuljJm7SMGHoRtksjnbXdrVPFUgLGGy4ny1QH6KthNrXVLMLxfTPBGII4BzG7bl5msFjxGRENAODCilkkqpAQCl1OPAC4B30508rIHrpwVhma8L8m4oEaH9zDMBGH72Wd/6UwrDzz0HQPsZZ0x5r8un2ZcT6/saMvvlAXU7tsf370dlMjStWEGoqcmTNgYnDGu4sylMKDj1EWPdVyPPP18zVvFMFoRlBXvuYnJk4NXK9+KlQGwB1onIGhGJANcD9+Udcx/wLvPnNwG/VUopEekxA4GIyFpgHbDXw77aqFxuMgZRDQuiaeqMq8MSCO8eeBUxvG0bMPlgdrLAJ/+tk/YNG0CE0V27vKqOWZdjG2DED/fSuPGdd5sP1nwaly4l1NpKKhYj2d/vWT+KJTM2ZiSlRCIFtxa2Jm1eu0mjPT2E29tJj4yQdNmtWC6eCYTpd70JeBB4HviuUmqbiNwmIleZh30JWCAiezDMbStd8GLgGRF5CiPA9z6lVMyrvjoZ37+fbDxOw6JFvtVggsnBt6CAz9aHGXFFDM1gQVgupn4fXUyh5mZaTjkFlcnYYu8m9Tq2wRF/8DB9u3/05JIx+YjISVZEtXHWEAuEQlPeX+CTm1Qcbr9acTNN/TZcRCn1APBA3msfdvycAK4rcN4PgB942bfpGHzySQA6zjnH13Z7Rw2BWNjaMOU9pwWhlPJl+9NiUUrZFkRHIQvCMs99dDGBIapje/Yw9NxzdJx9tuvXr8exDZMPHi8zmCwLYsE0FgQYbqbYli2M7NjBwosv9qwvxTBsitR0VpVlBXsdgwAjUD34+OOM7tpFz8te5nl7s1GrQeqqMfjUUwB0nnuur+32jpgC0Tb1pmpcvpxwRwepWKzmAtXxI0dIDw0R6eqyN193YpnnftxcTjpqPG5TLawZu5fu0z5zstMzi0DAZEJINbHGSMdZZxV8v8snFxNA24YNRp/MSVe10QKRhy0Q55/va7snRhMALCpgQdRyoHrI7E/7GWcUtGz8CvDlY7vlauRGqwWSAwNMHDpEsKlpynoVN5ku4cKJ9SCsBYGwx/A0AtHt4xjuND0XQ88843lbxaAFwkFmfJyRHTuQYLBgwNVLZrIgADpNN8ngE0/41qdiiG3ZAkwvqHYMYtRnF9PGjUgwyOiOHaRHR31tu1YZevppwBBPLxeAWn/r7tbpLQhrEerYnj1kJiY868tsZJNJI2tRhPaN+YvhDSwLYnA85Wk9JjAsOwmHGdu7tybGrRYIB0PPPgu5HG2nn06osdHXtntNC6JQDAJgwUUXAdC/ebNvfSqGgcceA2DBhRcWfL+9MUwkFGA0mWHcw1o2+YSam2k/6yxUNkvs8cd9a7eWsa1jj+NrxVgQocZG2k4/HZXN2sJVDUZ37kSl07SsXUu4tbXgMZFQgLaGEJmc8ryqazAaNdxvStVE1qIWCAfW7Nxv91Imm2NgPIVI4ZWnVp8kFGJ427aamFmAUbNqZMcOApHItDEbEWFJuyF6x4YTPvYOuk1RjZkiNt8ZNB/EHR7H1yYz8qa3IAC6LrgAoKoCbmfgTeNesljYZoxhyxXsJbXkZtIC4aDvkUcAWPCiF/na7onRJEoZvs5CC4sAQk1NRhAtlyO2dauv/ZuO2NatoBQdZ59tb/JeiEmBiPvVNQC6TKtmQAsEKpezZ+peWxDHzYnA4vbpxwRAZy0IhPkQLpSB58Qew0PeC4QVLNcCUUNkxseNgRoI0O1zetnhmOGDXdE5s1trwYtfDMBAjbiZrJl51yyCuqTd+Fx+WxBdF1yABIMMPfMMmfFxX9uuNcb27iUzOkrDokU0Fsg2c4tUJkffWJKAwKIZYhAwaUEMPvkkKpfzrE8zYd1Ls3kN/LSCrRT7wSefrPqKai0QJgOPPYZKp+k4+2wiHR2+tn1kyJhZL++cufSBHYf4058871Mx2BaX2a/p8HP25STc2kr7GWegstl5b0X0PfwwMLuYV8qJkQRKwaK2hmmtYYvGJUtoXLqUzOhoVRaGTRw6xMTBg4Tb2ma1IBbbkxzvreCWU08l2t1N4sSJqld21QJh0vfQQwD0vPzlvrd9eNASiFksiBe9iGBjI8PbthE/etSPrk3LxKFDjDz/PMHm5mkD1BbVcjEBLLzkEgBO/OY3vrddS/T98Y8ALHxFweKxrmFNdpZ2FJfkYQlWNSY9fWabC1784lmzupb6aEGICN3mc8gS9mqhBQJjNXDvH/4AeH8DFeLwoOFims2CCDY00GOuOj3+61973q+ZsNpfeMklBKMzuxKsz3Vo0P90xsWvfS1g9Ldaboxqk00mbVdKj8fj25oELJkl/mCx8JWvBKoj4P2mBVzMiuXFPk9yrD5pgagBhp97jvEDB4h0dXme4VGIQzFj0C2bxYIAWPya1wBw/Je/9LRPs2EJhNWfmVjd3QzA/n7/BaJtwwYaly0j2ddnp3nON2Jbt5KNx2k7/XQaFi3ytK0jg6VZEAsvuQQJBhnYsoX0yIiXXTsJlcvR/+c/AxQVc1zRZUxyDgz4M4YtT8bA5s1eFZwsCi0QwJH77wdg6ZVXFizW5TV7+8cAWGs+SGdi0atehYRCDDz2GKnBQa+7VpDkwACxLVuQUIhF5gxwJpZ3NhIMCEeH4yTSWe876EBEJq2IBx/0te1aoff3vwe8tx4A9vYZyQCrF8w+lsHYo7pr0yZUJmNb8X4Q27qVVCxG4/Ll9haoM7Gis4mAGC40P8Zww8KFtK5fTzYer2r8bN4LhMpmbYFYfnX+rpHeMxxPc2IkSUM4wLIiZl2R9na6X/pSVDbLoR/9yIceTuXwD3+IymbpecUrCLdN2etmCuFggBWdjSjl3wzMydLLLwfg8I9/TC7lb8mPapPLZOzxXYy1Vykv9BsCcUpPcQIBsOjVrwb8tYoP/+QnACx7/euLKn4ZCQVY0dWEUnAo5s8YXnLZZQAc+fGPfWmvEPNeIPoefphkby9NK1dWxb20p9dY9HbqwhYCgeKqtK5661sBOPCtb/meBqdyOQ58+9sArH7b24o+b41pHe0zrSU/6bzgAlrXrSPZ38/xX/3K9/arSd/DD5Ps66N59WrPF4AqpdjbZ1rDPS1Fn7fksstAhOO//jXJmPeVz7PJJMceMArxLrvqqlmOnsSyivb1+5MyvfyaawA49uCDVUvTnvcCsefuuwFY+Za3VKWM9u4Txg21bmHhZf6FWPSqV9GweDHj+/b5nv3R/+c/M37gAA1LltgZQsVw2mLj820/6p+f2UJEWPVXfwXA/m9+0/f2q8nhH/4QgOVveIPn47t/LMVoIkNrQ2jaigCFaFq+nIUXX0wuleLQ97/vYQ8Nen//e9IjI7Rt2FDStsLWJGd3rz+TnOZVq+g8/3yy8TjHqhRznNcCMfjUUww8+iihlhZWmw8Qv3nmyDAA6xcXLxCBUIhV118PwJ7Pf943K0Ipxa477wRg1fXXl1Tw7axl7QA8a35ev1l+zTUEm5sZ2Ly5Zlaie0386FHDYhJh+bXXet7etqPmWF7UWrIYWQJ+4Nvf9jzbbN/XvgZQ8ndyxlLDnWp9Tj+w+rjva1+ryqK5eSsQSil2fPrTAKx++9unLdTlNU8cMALNF6zqLOm81e94B+H2dvr//Gc7COk1vb/7HbEtWwh3drLmXe+a/QQHkwIxUpWBHm5tZe3/+T8AbP/Yx6q+QtUPdv/3f5NLpVj6utfRtHSp5+09fch4cJ67oqPkcxe98pU0LlvGxMGDHPYwthbbupWBzZsJtbSw8s1vLuncs5d3AP5OcpZfey3R7m6Gn32W3t/9zrd2LeatQBz5yU/of+QRwu3trP3rv65KH0YTaXaeGCUcFPsBWiyRjg7W3XgjYDzwsglvF/Bk4nG2/ed/AnDajTeWLKgru5roaArTP5asSqAa4NT3vpfIggUMPvkkR8wg5Vxl/MABDn7vexAIcNoHPuBLm08fHgLgnDIEQoJBTr/5ZgCe/+QnPfG5q2zWHsNr3v3uksfwKT3NNIaDHIrFfdshMdTYyCl/+7cA7PjsZ1FZf7MA56VAjB88yHMf/SgAG//1X4kuWFCVfvxhVx9KwTnLO2gIl16ff/Xb307zmjWM7dnDc7fd5kEPJ9l2222M791LyymnsKqE4LSFiPDyU7sB+P3OXre7VxShlhY2fPCDADz7kY8wtm9fVfrhNblMhic/+EFUJsPyq67ydHMgi2Qmy+a9AwCcX6I1bLHsqqvoOOcckr29bLv9dje7B8Der3yFoaeeIrpwIae85z0lnx8KBti02vhsf9zd73b3pmX1295Gw+LFjGzbxu7Pf963dmEeCkRyYIDNf/M3pAcH6bn4Yla88Y1V68vPnzsOwGVnLC7r/GA0ygV33kkgGuXgd77Dni9+0c3u2ez+/Oc5+N3vEohGueBzn5t15fR0vHL9QgB+uf2Em90riRXXXceSK64gMzbGYzfcQPz48ar1xQuUUjx/xx0MPvEEDYsXc8aHPuRLu39+YYDxVJYNS9qKStcuhAQCnHXbbQQiEQ7ee68dK3CDoz//Oc/fcQcAZ3/0o2W7lP/CHMO/ft6/MRxsaODcj38cgF2f+5yvq6vnlUAMPfssf7z2Wsb37qXt9NO54HOfq0rmEhhL9n+17QQicPmZ5QkEQPuGDZz90Y+CCM/fcQfP3normbg75QAy8TjP3norOz75SRDhnNtvt/cSLofXbFhEQzjAn14YsNN7/UbMz9G6fj3je/fyyFveQqzGdukrl1wqxbb/+A/2fulLEAhw3qc+RaSzvNl8qXz7sYMAXHZGZSu1O848k3NMN9Bzt93G9o9/vKKVxCqb5YUvfYnH/+7vUNks6268kcXmuotyeM3GRYjAL7edsPfe9oOel7+cU264AZXN8th738vRn//cl3Y9FQgRuVxEdorIHhG5pcD7URH5jvn+ZhFZ7XjvX8zXd4rIZeX2QSnF4JNP8uQHP8gfr72W+JEjdJxzDhd95StVC0zncorb7t9OKpvjyrOW2Mv4y2XFG97AeZ/8JBIMsv/rX+f3l1/OvnvuKTunPDkwwL577uH3l13G/q9/HQmFOO9Tn7LzssulvSnMG85fDsCt920nk61ObaRwaysv/da36DjnHOKHD/PIm9/MEzffzOBTTxUdvK6FsW2RS6U4+sADPHTVVez72teQcJgL7ryTbrM8vNds3jvAL7efIBIK8LYLV1Z8veXXXMNZ//7vSDDIC3ffze9e8xpe+N//ZWzv3qJ88CqXY3TPHvbdcw9/uPJKtt9+O+RyrLvpJtb/wz9U1LcVXU1cumERqWyOO36xw9dkhw3/+I+s+qu/IpdK8fhNN7Hl/e/3vCS4eHVxEQkCu4DXAIeBLcBblVLbHce8HzhbKfU+EbkeuFYp9RYR2Qh8G7gQWAr8GjhNKTXt6Ni0aZPaWiB9cfN73mNH/yUUYs0738npH/xg2W6Sckllcjx7ZIhdJ8b40RNHeGx/jNZoiPv/78vtWkWVMvTsszx9yy2TG8GL0HraabStX0/TihVEOjsJt7URCIftc3LpNKnhYdKDg0wcPszIzp2M7toF5rhoXb+ec++4Y9ZyyMXSN5rktZ/5A4MTaS5Y1ckbzl/Gmu5mzljSTntTePYLuEg2mWTXnXfywt132w+ezvPO4+XT5OKLyONKqU21MLZTw8Ps/dKXiD3+OENPP03WtBqbV63inI99bNYKu5UST2V5/MAgm/cN8OWH9zGeynLTX5zKBy8rfl3BbPRv3sxzH/nISaXAAw0NNK9cSbi9nXBrKxIKobJZVCZDNpkkOTBA4tgxMmOTaxUalizhrH//94osBye7T4xy5Z0Pk8rkeO3GRVxx1hKWdzZy5rL2smKJpaCUYt/XvsaOT32KrLmXd8OiRXScey4tq1fTsHgxoZYW419zMxIKEQgGkWCQ5tWrC1qU1rgu1J6XAvES4Fal1GXm7/9ifsD/dBzzoHnMn0UkBBwHeoBbnMc6j5uuvekEYtddd7H/nntYdvXVrH7b24qqu+IFA2NJLvjoZAXW9sYw//1X5/MyM3DrFiqb5fivf82Bb3+bgc2byyotEYhEWHDRRax661tZfOmlrm9w/8TBQd77ta323sUA//vOTVy60dtCctMxcfgw++65hyP338+Syy7jrFtvLXicQyCqPrYzExP84rzzUBljn+/W9etZdf31rHzzm2fc3c8tnjk8xFX/3yP271eds5RPvfkcwrPsAVEq1ng++tOfEnviCRJFxowaFi+m89xzWXL55Sx+7WtdnxD+4rljfODep0hmJq3gR255Vdnxl1KJHz3Kvnvu4fCPfkSyv7iA+QWf+xxLr7xyyuvVEog3AZcrpd5j/v4O4CKl1E2OY54zjzls/v4CcBFwK/CoUuob5utfAn6ulPp+Xhs3ADeYv64HdpbYzW7Av3SE2mp/Pn/2cttfpZTqqeGxPV/HU7XaniufeZVSqqfQG/6XLnURpdTdwN3lni8iW6dTTj+oZvvz+bPXQvuzUc7Ynq/jqVptz4fP7GWQ+giwwvH7cvO1gseYZng7MFDkuRpNtdBjWzMv8FIgtgDrRGSNiESA64H78o65D7BqNrwJ+K0yfF73AdebmSBrgHXA/N5UWFNL6LGtmRd45mJSSmVE5CbgQSAIfFkptU1EbgO2KqXuA74EfF1E9gAxjBsN87jvAtuBDHDjTFkeFVC2e2oOtD+fP3tF7dfw2J6v46labc/5z+xZkFqj0Wg09c28Wkmt0Wg0muLRAqHRaDSagswrgRCRW0XkiIg8Zf67YprjZiyjUGbbnxCRHSLyjIj8SEQ6pjluv4g8a/av4p1tKikJ4ULbK0TkdyKyXUS2iciUutMi8koRGXb8TT7sVvvm9Wf8PsXgc+bnf0ZEvN2X00Xm03iu1jiu9hiu+vhVSs2bfxiLlD44yzFB4AVgLRABngY2utD2a4GQ+fPHgY9Pc9x+oNulzzvrZwHeD3zB/Pl64Dsuft9LgPPNn1sxylPkt/9K4Kce/s1n/D6BK4CfAwK8GNjs97is4LPNi/FczXFc7TFc7fE7ryyIIrkQ2KOU2quUSgH3AldXelGl1C+VUhnz10cx8t+9ppjPcjVg1VX+PvBqEXdK3CqljimlnjB/HgWeB5a5cW0XuRq4Rxk8CnSIyJJqd8pF5sJ4rto4roMx7On4nY8CcZNpin1ZRArVQl4GHHL8fhj3B8RfY6h+IRTwSxF5XIxyC5VQzGexjzFv+GHA9R2UTJP/PGBzgbdfIiJPi8jPReQMl5ue7fv04+/tJfNhPNfEOK7SGK7q+K3rUhuFEJFfA4U2WPg34PPAf2B86f8BfApjcHvetlLqJ+Yx/4aR//7NaS7zcqXUERFZCPxKRHYopR5yq4/VQERagB8Af6+UGsl7+wmMWjBjpg/9xxiLx9yirr9PPZ5rgyqO4ap+f3NOIJRSlxZznIj8D/DTAm+VXQphtrZF5N3A64FXK9OBWOAaR8z/e0XkRxjmdbkDopSSEIfl5JIQriAiYYwb65tKqR/mv++82ZRSD4jIf4tIt1LKlUJkRXyfNV36Qo9noMrjuJpjuNrjd165mPJ8c9cCzxU4rJgyCuW0fTnwT8BVSqmJaY5pFpFW62eMQGChPhZLJSUhKsb0AX8JeF4p9elpjlls+YpF5EKMMenWjV3M93kf8E4zG+TFwLBS6pgb7XvNPBrPVRvH1RzDNTF+vYi81+o/4OvAs8Az5he7xHx9KfCA47grMLIVXsAwp91oew+Gr/Ap898X8tvGyNJ42vy3zY22C30W4DaMGxugAfie2b/HgLUuft8vx3B/POP43FcA7wPeZx5zk/lZn8YIdr7UxfYLfp957Qtwl/n9PAtsqvY41eO5dsZxNcdwLYxfXWpDo9FoNAWZVy4mjUaj0RSPFgiNRqPRFEQLhEaj0WgKogVCo9FoNAXRAqHRaDSagmiB0Gg0Gk1BtEBoNBqNpiD/fwZWLYzY9cwLAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.subplot(1, 2, 1)\n", + "sns.distplot(X[:,0], hist=False, kde=True, \n", + " bins=None,\n", + " hist_kws={'edgecolor':'black'},\n", + " kde_kws={'linewidth': 2},\n", + " label='data')\n", + "sns.distplot(X_flow[:,0], hist=False, kde=True, \n", + " bins=None, color='firebrick',\n", + " hist_kws={'edgecolor':'black'},\n", + " kde_kws={'linewidth': 2},\n", + " label='flow')\n", + "plt.title(r'$p(x_1)$')\n", + "plt.subplot(1, 2, 2)\n", + "sns.distplot(X[:,1], hist=False, kde=True, \n", + " bins=None,\n", + " hist_kws={'edgecolor':'black'},\n", + " kde_kws={'linewidth': 2},\n", + " label='data')\n", + "sns.distplot(X_flow[:,1], hist=False, kde=True, \n", + " bins=None, color='firebrick',\n", + " hist_kws={'edgecolor':'black'},\n", + " kde_kws={'linewidth': 2},\n", + " label='flow')\n", + "plt.title(r'$p(x_2)$')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see from the output that, unlike the previous tutorial, this normalizing flow has successfully learnt both the univariate marginals *and* the bivariate distribution." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "4a889874aef137a58c8f92e3ed6912ec441c66e3cc8f3752c91ed486cb306b1b" + }, + "kernelspec": { + "display_name": "Python 3.8.5 ('base')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tutorials/univariate_bijections.ipynb b/tutorials/univariate_bijections.ipynb new file mode 100644 index 00000000..3af99725 --- /dev/null +++ b/tutorials/univariate_bijections.ipynb @@ -0,0 +1,510 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Univariate Bijections\n", + "## Background\n", + "[Normalizing Flows](https://flowtorch.ai/dev/bibliography#surveys) are a family of methods for constructing flexible distributions. As mentioned in [the introduction](https://flowtorch.ai/users), Normalizing Flows can be seen as a modern take on the [change of variables method for random distributions](https://en.wikipedia.org/wiki/Probability_density_function#Function_of_random_variables_and_change_of_variables_in_the_probability_density_function), and this is most apparent for univariate bijections. Thus, in this first section we restrict our attention to representing univariate distributions with bijections.\n", + "\n", + "The basic idea is that a simple source of noise, for example a variable with a standard normal distribution, $X\\sim\\mathcal{N}(0,1)$, is passed through a bijective (i.e. invertible) function, $g(\\cdot)$ to produce a more complex transformed variable $Y=g(X)$. For such a random variable, we typically want to perform two operations: sampling and scoring. Sampling $Y$ is trivial. First, we sample $X=x$, then calculate $y=g(x)$. Scoring $Y$, or rather, evaluating the log-density $\\log(p_Y(y))$, is more involved. How does the density of $Y$ relate to the density of $X$? We can use the substitution rule of integral calculus to answer this. Suppose we want to evaluate the expectation of some function of $X$. Then,\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + "\\mathbb{E}_{p_X(\\cdot)}\\left[f(X)\\right] &= \\int_{\\text{supp}(X)}f(x)p_X(x)dx\\\\\n", + " &= \\int_{\\text{supp}(Y)}f(g^{-1}(y))p_X(g^{-1}(y))\\left|\\frac{dx}{dy}\\right|dy \\\\\n", + " &= \\mathbb{E}_{p_Y(\\cdot)}\\left[f(g^{-1}(Y))\\right],\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "where $\\text{supp}(X)$ denotes the support of $X$, which in this case is $(-\\infty,\\infty)$. Crucially, we used the fact that $g$ is bijective to apply the substitution rule in going from the first to the second line. Equating the last two lines we get,\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + " \\log(p_Y(y)) &= \\log(p_X(g^{-1}(y)))+\\log\\left(\\left|\\frac{dx}{dy}\\right|\\right)\\\\\n", + " &= \\log(p_X(g^{-1}(y)))-\\log\\left(\\left|\\frac{dy}{dx}\\right|\\right).\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "Inituitively, this equation says that the density of $Y$ is equal to the density at the corresponding point in $X$ plus a term that corrects for the warp in volume around an infinitesimally small length around $Y$ caused by the transformation.\n", + "\n", + "If $g$ is cleverly constructed (and we will see several examples shortly), we can produce distributions that are more complex than standard normal noise and yet have easy sampling and computationally tractable scoring. Moreover, we can compose such bijective transformations to produce even more complex distributions. By an inductive argument, if we have $L$ transforms $g_{(0)}, g_{(1)},\\ldots,g_{(L-1)}$, then the log-density of the transformed variable $Y=(g_{(0)}\\circ g_{(1)}\\circ\\cdots\\circ g_{(L-1)})(X)$ is\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + " \\log(p_Y(y)) &= \\log\\left(p_X\\left(\\left(g_{(L-1)}^{-1}\\circ\\cdots\\circ g_{(0)}^{-1}\\right)\\left(y\\right)\\right)\\right)+\\sum^{L-1}_{l=0}\\log\\left(\\left|\\frac{dg^{-1}_{(l)}(y_{(l)})}{dy'}\\right|\\right),\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "where we've defined $y_{(0)}=x$, $y_{(L-1)}=y$ for convenience of notation. In the following tutorial, we will see how to generalize this method to multivariate $X$.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fixed Univariate `Bijector`s\n", + "[FlowTorch](https://flowtorch.ai) contains classes for representing *fixed* univariate bijective transformations. These are particularly useful for restricting the range of transformed distributions, for example to lie on the unit hypercube. (In the following sections, we will explore how to represent learnable bijectors.)\n", + "\n", + "Let us begin by showing how to represent and manipulate a simple transformed distribution,\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + " X &\\sim \\mathcal{N}(0,1)\\\\\n", + " Y &= \\text{exp}(X).\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "You may have recognized that this is by definition, $Y\\sim\\text{LogNormal}(0,1)$.\n", + "\n", + "We begin by importing the relevant libraries:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import torch\n", + "import flowtorch.bijectors as B\n", + "import flowtorch.distributions as D\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A variety of bijective transformations live in the [`flowtorch.bijectors`](https://flowtorch.ai/api/flowtorch.bijectors) module, and the classes to define transformed distributions live in [`flowtorch.distributions`](https://flowtorch.ai/api/flowtorch.distributions). We first create the base distribution of $X$ and the class encapsulating the transform $\\text{exp}(\\cdot)$:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "dist_x = torch.distributions.Independent(\n", + " torch.distributions.Normal(torch.zeros(1), torch.ones(1)), \n", + " 1\n", + ")\n", + "bijector = B.Exp()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The class [`B.Exp`](https://flowtorch.ai/api/flowtorch.bijectors.exp) derives from [`B.Fixed`](https://flowtorch.ai/api/flowtorch.bijectors.fixed) and defines the forward, inverse, and log-absolute-derivative operations for this transform,\n", + "$$\n", + "\\begin{aligned}\n", + " g(x) &= \\text{exp(x)}\\\\\n", + " g^{-1}(y) &= \\log(y)\\\\\n", + " \\log\\left(\\left|\\frac{dg}{dx}\\right|\\right) &= y.\n", + "\\end{aligned}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In general, a bijector class defines these three operations, from which it is sufficient to perform sampling and scoring. *We should think of a bijector as a plan to construct a normalizing flow rather than the normalizing flow itself* - it requires being instantiated with a concrete base distribution supplying the relevant shape information," + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "dist_y = D.Flow(dist_x, bijector)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This statement returns the object `dist_y` of type [`flowtorch.distributions.Flow`](https://flowtorch.ai/api/flowtorch.distributions.flow) representing an object that has an interface compatible with `torch.distributions.Distribution`. We are able to sample and score from `dist_y` object using its methods `.sample`, `.rsample`, and `.log_prob`.\n", + "\n", + "Now, plotting samples from both the base and transformed distributions to verify that we that have produced the log-normal distribution:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.subplot(1, 2, 1)\n", + "plt.hist(dist_x.sample([1000]).numpy(), bins=50)\n", + "plt.title('Standard Normal')\n", + "plt.subplot(1, 2, 2)\n", + "plt.hist(dist_y.sample([1000]).numpy(), bins=50)\n", + "plt.title('Standard Log-Normal')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our example uses a single transform. However, we can compose transforms to produce more expressive distributions. For instance, if we apply an affine transformation we can produce the general log-normal distribution,\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + " X &\\sim \\mathcal{N}(0,1)\\\\\n", + " Y &= \\text{exp}(\\mu+\\sigma X).\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "or rather, $Y\\sim\\text{LogNormal}(\\mu,\\sigma^2)$. In FlowTorch this is accomplished, e.g. for $\\mu=3, \\sigma=0.5$, as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "bijector = B.Compose([\n", + " B.AffineFixed(loc=3, scale=0.5),\n", + " B.Exp()])\n", + "dist_y = D.Flow(dist_x, bijector)\n", + "\n", + "plt.subplot(1, 2, 1)\n", + "plt.hist(dist_x.sample([1000]).numpy(), bins=50)\n", + "plt.title('Standard Normal')\n", + "plt.subplot(1, 2, 2)\n", + "plt.hist(dist_y.sample([1000]).numpy(), bins=50)\n", + "plt.title('Log-Normal')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The class [`B.Compose`](https://flowtorch.ai/api/flowtorch.bijectors.compose) combines multiple [`B.Bijector`](https://flowtorch.ai/api/flowtorch.bijectors.bijector)'s with [function composition](https://en.wikipedia.org/wiki/Function_composition) to produce a single *plan* for a Normalizing Flow, which is then intiated in the regular way. For the forward operation, transformations are applied in the order of the list. In this case, first [`B.AffineFixed`](https://flowtorch.ai/api/flowtorch.bijectors.affinefixed) is applied to the base distribution and then [`B.Exp`](https://flowtorch.ai/api/flowtorch.bijectors.exp)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Learnable Univariate `Bijector`s\n", + "Having introduced the interface for bijections and transformed distributions, we now show how to represent *learnable* transforms and use them for density estimation. Our dataset in this section and the next will comprise samples along two concentric circles. Examining the joint distribution:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "from sklearn import datasets\n", + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "n_samples = 1000\n", + "X, y = datasets.make_circles(n_samples=n_samples, factor=0.5, noise=0.05)\n", + "X = torch.Tensor(StandardScaler().fit_transform(X))\n", + "\n", + "plt.title(r'Samples from $p(x_1,x_2)$')\n", + "plt.xlabel(r'$x_1$')\n", + "plt.ylabel(r'$x_2$')\n", + "plt.scatter(X[:,0], X[:,1], alpha=0.5)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And the marginals:" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\info\\anaconda3\\lib\\site-packages\\seaborn\\distributions.py:2619: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n", + " warnings.warn(msg, FutureWarning)\n", + "C:\\Users\\info\\anaconda3\\lib\\site-packages\\seaborn\\distributions.py:2619: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n", + " warnings.warn(msg, FutureWarning)\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.subplot(1, 2, 1)\n", + "sns.distplot(X[:,0], hist=False, kde=True,\n", + " bins=None,\n", + " hist_kws={'edgecolor':'black'},\n", + " kde_kws={'linewidth': 2})\n", + "plt.title(r'$p(x_1)$')\n", + "plt.subplot(1, 2, 2)\n", + "sns.distplot(X[:,1], hist=False, kde=True,\n", + " bins=None,\n", + " hist_kws={'edgecolor':'black'},\n", + " kde_kws={'linewidth': 2})\n", + "plt.title(r'$p(x_2)$')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will learn the marginals of the above distribution using a learnable transform, [`B.Spline`](https://flowtorch.ai/api/flowtorch.bijectors.spline), defined on a two-dimensional input:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "dist_x = torch.distributions.Independent(\n", + " torch.distributions.Normal(torch.zeros(2), torch.ones(2)), \n", + " 1\n", + ")\n", + "bijector = B.Spline()\n", + "dist_y = D.Flow(dist_x, bijector)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[`B.Spline`](https://flowtorch.ai/api/flowtorch.bijectors.spline) passes each dimension of its input through a separate monotonically increasing function known as a spline. From a high-level, a spline is a complex parametrizable curve for which we can define specific points known as knots that it passes through and the derivatives at the knots. The knots and their derivatives are parameters that can be learnt, e.g., through stochastic gradient descent on a maximum likelihood objective, as we now demonstrate:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "step: 0, loss: 2.862603187561035\n", + "step: 200, loss: -17.995046615600586\n", + "step: 400, loss: -29.19147491455078\n", + "step: 600, loss: -33.75411605834961\n", + "step: 800, loss: -34.60307693481445\n", + "step: 1000, loss: -34.999576568603516\n", + "step: 1200, loss: -35.23552322387695\n", + "step: 1400, loss: -35.39411163330078\n", + "step: 1600, loss: -35.508968353271484\n", + "step: 1800, loss: -35.5964241027832\n", + "step: 2000, loss: -35.66600799560547\n", + "step: 2200, loss: -35.73353958129883\n", + "step: 2400, loss: -35.813602447509766\n", + "step: 2600, loss: -35.85872268676758\n", + "step: 2800, loss: -35.89299774169922\n", + "step: 3000, loss: -35.92019271850586\n" + ] + } + ], + "source": [ + "optimizer = torch.optim.Adam(dist_y.parameters(), lr=1e-2)\n", + "for step in range(1001):\n", + " optimizer.zero_grad()\n", + " loss = -dist_y.log_prob(X).mean()\n", + " loss.backward()\n", + " optimizer.step()\n", + "\n", + " if step % 200 == 0:\n", + " print('step: {}, loss: {}'.format(step, loss.item()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plotting samples drawn from the transformed distribution after learning:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "X_flow = dist_y.sample(torch.Size([1000,])).detach().numpy()\n", + "plt.title(r'Joint Distribution')\n", + "plt.xlabel(r'$x_1$')\n", + "plt.ylabel(r'$x_2$')\n", + "plt.scatter(X[:,0], X[:,1], label='data', alpha=0.5)\n", + "plt.scatter(X_flow[:,0], X_flow[:,1], color='firebrick', label='flow', alpha=0.5)\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\info\\anaconda3\\lib\\site-packages\\seaborn\\distributions.py:2619: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n", + " warnings.warn(msg, FutureWarning)\n", + "C:\\Users\\info\\anaconda3\\lib\\site-packages\\seaborn\\distributions.py:2619: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n", + " warnings.warn(msg, FutureWarning)\n", + "C:\\Users\\info\\anaconda3\\lib\\site-packages\\seaborn\\distributions.py:2619: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n", + " warnings.warn(msg, FutureWarning)\n", + "C:\\Users\\info\\anaconda3\\lib\\site-packages\\seaborn\\distributions.py:2619: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n", + " warnings.warn(msg, FutureWarning)\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.subplot(1, 2, 1)\n", + "sns.distplot(X[:,0], hist=False, kde=True,\n", + " bins=None,\n", + " hist_kws={'edgecolor':'black'},\n", + " kde_kws={'linewidth': 2},\n", + " label='data')\n", + "sns.distplot(X_flow[:,0], hist=False, kde=True,\n", + " bins=None, color='firebrick',\n", + " hist_kws={'edgecolor':'black'},\n", + " kde_kws={'linewidth': 2},\n", + " label='flow')\n", + "plt.title(r'$p(x_1)$')\n", + "plt.subplot(1, 2, 2)\n", + "sns.distplot(X[:,1], hist=False, kde=True,\n", + " bins=None,\n", + " hist_kws={'edgecolor':'black'},\n", + " kde_kws={'linewidth': 2},\n", + " label='data')\n", + "sns.distplot(X_flow[:,1], hist=False, kde=True,\n", + " bins=None, color='firebrick',\n", + " hist_kws={'edgecolor':'black'},\n", + " kde_kws={'linewidth': 2},\n", + " label='flow')\n", + "plt.title(r'$p(x_2)$')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we can see, we have learnt close approximations to the marginal distributions, $p(x_1),p(x_2)$. *It would have been challenging to fit the irregularly shaped marginals with standard methods, for example, a mixture of normal distributions*. As expected, since there is a dependency between the two dimensions, we do not learn a good representation of the joint, $p(x_1,x_2)$. In the next section, we explain how to learn multivariate distributions whose dimensions are not independent." + ] + } + ], + "metadata": { + "interpreter": { + "hash": "4a889874aef137a58c8f92e3ed6912ec441c66e3cc8f3752c91ed486cb306b1b" + }, + "kernelspec": { + "display_name": "Python 3.8.5 ('base')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.5" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +}