{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Measurement noise and exact inference\n", "\n", "In this notebook, we illustrate how to use pyABC with different noise models. For simplicity, we use a simple ODE model of a conversion reaction." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# install if not done yet\n", "!pip install pyabc --quiet" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import scipy as sp\n", "\n", "import pyabc\n", "\n", "%matplotlib inline\n", "pyabc.settings.set_figure_params('pyabc') # for beautified plots\n", "\n", "# initialize global random state\n", "np.random.seed(2)\n", "\n", "# initial states\n", "init = np.array([1, 0])\n", "\n", "# time points\n", "n_time = 10\n", "measurement_times = np.linspace(0, 10, n_time)\n", "\n", "\n", "def f(y, t0, theta1, theta2=0.12):\n", " \"\"\"ODE right-hand side.\"\"\"\n", " x1, x2 = y\n", " dx1 = -theta1 * x1 + theta2 * x2\n", " dx2 = theta1 * x1 - theta2 * x2\n", " return dx1, dx2\n", "\n", "\n", "def model(p: dict):\n", " \"\"\"ODE model.\"\"\"\n", " sol = sp.integrate.odeint(f, init, measurement_times, args=(p[\"theta1\"],))\n", " return {'X_2': sol[:, 1]}\n", "\n", "\n", "# true parameter\n", "theta_true = {'theta1': 0.08}\n", "\n", "# uniform prior distribution\n", "theta1_min, theta1_max = 0.05, 0.12\n", "theta_lims = {'theta1': (theta1_min, theta1_max)}\n", "prior = pyabc.Distribution(\n", " theta1=pyabc.RV(\"uniform\", theta1_min, theta1_max - theta1_min)\n", ")\n", "\n", "# true noise-free data\n", "true_trajectory = model(theta_true)\n", "\n", "# population size\n", "pop_size = 500" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, we assume that our measurements are subject to additive Gaussian noise:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 1.49 ms, sys: 0 ns, total: 1.49 ms\n", "Wall time: 2.07 ms\n" ] } ], "source": [ "%%time\n", "for _ in range(1):\n", " model(theta_true)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# noise standard deviation\n", "sigma = 0.02\n", "\n", "\n", "def model_noisy(pars):\n", " \"\"\"Add noise to model output\"\"\"\n", " sim = model(pars)\n", " return {'X_2': sim['X_2'] + sigma * np.random.randn(n_time)}\n", "\n", "\n", "# the actual observed data\n", "measured_data = model_noisy(theta_true)\n", "\n", "# plot data\n", "plt.plot(\n", " measurement_times, true_trajectory['X_2'], color=\"C0\", label='Simulation'\n", ")\n", "plt.scatter(measurement_times, measured_data['X_2'], color=\"C1\", label='Data')\n", "plt.xlabel('Time $t$')\n", "plt.ylabel('Measurement $Y$')\n", "plt.title('Conversion reaction: True parameters fit')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## True posterior\n", "\n", "For this cute model, we can calculate the actual posterior distribution. The content of this section is not necessary to understand the concept of exact inference and may be skipped." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def normal_dty(y_bar, y, sigma):\n", " \"\"\"Uncorrelated multivariate Gaussian density `y_bar ~ N(y, sigma).\"\"\"\n", " y_bar, y, sigma = y_bar.flatten(), y.flatten(), sigma.flatten()\n", " return np.prod(\n", " 1\n", " / np.sqrt(2 * np.pi * sigma**2)\n", " * np.exp(-(((y_bar - y) / sigma) ** 2) / 2)\n", " )\n", "\n", "\n", "def posterior_unscaled_1d(p):\n", " \"\"\"Unscaled posterior density.\"\"\"\n", " # simulations and sigmas as arrays\n", " y = model(p)['X_2'].flatten()\n", " sigmas = sigma * np.ones(n_time)\n", "\n", " # unscaled likelihood\n", " likelihood_val = normal_dty(measured_data['X_2'], y, sigmas)\n", "\n", " # prior\n", " prior_val = prior.pdf(p)\n", "\n", " return likelihood_val * prior_val\n", "\n", "\n", "# the integral needs to be 1\n", "posterior_normalization = sp.integrate.quad(\n", " lambda x: posterior_unscaled_1d({'theta1': x}), *theta_lims['theta1']\n", ")[0]\n", "\n", "\n", "def posterior_scaled_1d(p):\n", " \"\"\"Posterior over theta with integral 1.\"\"\"\n", " return posterior_unscaled_1d(p) / posterior_normalization\n", "\n", "\n", "# calculate posterior on grid values\n", "xs = np.linspace(*theta_lims['theta1'], 200)\n", "true_fvals = [posterior_scaled_1d({'theta1': x}) for x in xs]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Ignoring noise\n", "\n", "In the notebook \"Ordinary Differential Equations: Conversion Reaction\", this model is used without accounting for a noise model, which is strictly speaking not correct. In this case, we get the following result:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:Sampler:Parallelizing the sampling on 4 cores.\n", "INFO:History:Start \n", "INFO:ABC:Calibration sample t=-1.\n", "INFO:Epsilon:initial epsilon is 0.023105087979925738\n", "INFO:ABC:t: 0, eps: 0.023105087979925738.\n", "INFO:ABC:Acceptance rate: 500 / 1005 = 4.9751e-01, ESS=5.0000e+02.\n", "INFO:ABC:t: 1, eps: 0.008745577704180732.\n", "INFO:ABC:Acceptance rate: 500 / 1004 = 4.9801e-01, ESS=4.9539e+02.\n", "INFO:ABC:t: 2, eps: 0.005699516985076191.\n", "INFO:ABC:Acceptance rate: 500 / 994 = 5.0302e-01, ESS=4.9133e+02.\n", "INFO:ABC:t: 3, eps: 0.004817194659694434.\n", "INFO:ABC:Acceptance rate: 500 / 955 = 5.2356e-01, ESS=4.9845e+02.\n", "INFO:ABC:t: 4, eps: 0.0045352066148319665.\n", "INFO:ABC:Acceptance rate: 500 / 1016 = 4.9213e-01, ESS=4.9959e+02.\n", "INFO:ABC:t: 5, eps: 0.004481251520102031.\n", "INFO:ABC:Acceptance rate: 500 / 954 = 5.2411e-01, ESS=4.9735e+02.\n", "INFO:ABC:t: 6, eps: 0.00446711405590255.\n", "INFO:ABC:Acceptance rate: 500 / 979 = 5.1073e-01, ESS=4.9718e+02.\n", "INFO:pyabc.util:Stopping: maximum number of generations.\n", "INFO:History:Done \n" ] } ], "source": [ "def distance(simulation, data):\n", " \"\"\"Here we use an l2 distance.\"\"\"\n", " return np.sum((data[\"X_2\"] - simulation[\"X_2\"]) ** 2)\n", "\n", "\n", "abc = pyabc.ABCSMC(model, prior, distance, population_size=pop_size)\n", "abc.new(pyabc.create_sqlite_db_id(), measured_data)\n", "history_ignore = abc.run(max_nr_populations=7)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As one can see in the below plot, this converges to a point estimate as $\\varepsilon\\rightarrow \\varepsilon_\\text{min}>0$, and does not correctly represent the posterior. In particular, in general this point estimate will not capture the correct parameter value (indicated by the grey line). Furthermore, its exact location will depend on the distance function -- using an l1 instead of the here used l2 distance will result in a different peak (namely the MLE of an assumed Laplace noise model)." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "_, ax = plt.subplots()\n", "for t in range(history_ignore.max_t + 1):\n", " pyabc.visualization.plot_kde_1d_highlevel(\n", " history_ignore,\n", " x=\"theta1\",\n", " t=t,\n", " refval=theta_true,\n", " refval_color='grey',\n", " xmin=theta1_min,\n", " xmax=theta1_max,\n", " numx=200,\n", " ax=ax,\n", " label=f\"Generation {t}\",\n", " )\n", "ax.plot(xs, true_fvals, color='black', linestyle='--', label=\"True\")\n", "ax.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Add noise to the model output\n", "\n", "To correctly account for noise, there are essentially two possibilities: Firstly, we can use the noisified model output:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:Sampler:Parallelizing the sampling on 4 cores.\n", "INFO:History:Start \n", "INFO:ABC:Calibration sample t=-1.\n", "INFO:Epsilon:initial epsilon is 0.026838722815439364\n", "INFO:ABC:t: 0, eps: 0.026838722815439364.\n", "INFO:ABC:Acceptance rate: 500 / 978 = 5.1125e-01, ESS=5.0000e+02.\n", "INFO:ABC:t: 1, eps: 0.013429737366067502.\n", "INFO:ABC:Acceptance rate: 500 / 1024 = 4.8828e-01, ESS=4.9818e+02.\n", "INFO:ABC:t: 2, eps: 0.009244439942835643.\n", "INFO:ABC:Acceptance rate: 500 / 1294 = 3.8640e-01, ESS=4.4998e+02.\n", "INFO:ABC:t: 3, eps: 0.007235887322983637.\n", "INFO:ABC:Acceptance rate: 500 / 2034 = 2.4582e-01, ESS=4.4500e+02.\n", "INFO:ABC:t: 4, eps: 0.005884828057762174.\n", "INFO:ABC:Acceptance rate: 500 / 3244 = 1.5413e-01, ESS=4.0955e+02.\n", "INFO:ABC:t: 5, eps: 0.004769564880814353.\n", "INFO:ABC:Acceptance rate: 500 / 6646 = 7.5233e-02, ESS=3.7692e+02.\n", "INFO:ABC:t: 6, eps: 0.00400354214154976.\n", "INFO:ABC:Acceptance rate: 500 / 13123 = 3.8101e-02, ESS=4.1908e+02.\n", "INFO:ABC:t: 7, eps: 0.003439505458551804.\n", "INFO:ABC:Acceptance rate: 500 / 23288 = 2.1470e-02, ESS=4.3150e+02.\n", "INFO:pyabc.util:Stopping: maximum number of generations.\n", "INFO:History:Done \n" ] } ], "source": [ "abc = pyabc.ABCSMC(model_noisy, prior, distance, population_size=pop_size)\n", "abc.new(pyabc.create_sqlite_db_id(), measured_data)\n", "history_noisy_output = abc.run(max_nr_populations=8)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEGCAYAAABLgMOSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAB5AElEQVR4nO3dd3iURdfA4d/sbja9917oLQm9dwEFFFRUBAULL9i7gvrZXruivoIFu2ABEUWwCyhNQHoNPb33Xja7O98fGwIxCYT0kLmvKxfJU8+GJGfnmZkzQkqJoiiKolwsTUsHoCiKorRNKoEoiqIo9aISiKIoilIvKoEoiqIo9aISiKIoilIvupYOoCEuv/xy+dtvv7V0GIqiKG2NaIyLtOkWSGZmZkuHoLRRq1evZvXq1S0dhqK0aW06gShKfR08eJCDBw+2dBiK0qa16UdYilJftra2LR2CorR5oqlmogshPgUmA+lSyp7nbL8XuBswAT9LKR+r2P44cHvF9vuklL9f6B79+vWTu3fvborwFUVRLmWN0gfSlC2Qz4F3gGVnNgghRgNTgAgpZZkQwqtie3dgOtAD8APWCyE6SylNTRif0o6tWLECgOnTp7dwJJeW8vJyEhMTKS0tbelQFMDGxoaAgACsrKya5PpNlkCklJuFECH/2nwn8IqUsqzimPSK7VOAFRXbY4QQp4ABwPamik9p344fP97SIVySEhMTcXR0JCQkBCEa5U2uUk9SSrKyskhMTCQ0NLRJ7tHcneidgeFCiH+EEJuEEP0rtvsDCeccl1ixrRohxFwhxG4hxO6MjIwmDle5VNnb22Nvb9/SYVxySktLcXd3V8mjFRBC4O7u3qStwebuRNcBbsAgoD+wUggRdjEXkFJ+CHwIlj6QRo9QaRceeeSRlg7hkqWSR+vR1P8Xzd0CSQS+lxY7ATPgASQBgeccF1CxTVGaxNKlS1m6dGlLh6EobVpzJ5AfgNEAQojOgB7IBNYC04UQ1kKIUKATsLOZY1Nagc2bN3P06FEAEhISLnB0/cXGxhIbG9tk11daTlpaGjNmzCAsLIy+ffsyePDgFp00unHjRrZt21b59ZIlS1i2bNl5zqi7pUuX0qlTJzp16tQib4ia7BGWEGI5MArwEEIkAs8AnwKfCiEOAwZgtrSMIz4ihFgJRAFG4G41Aqv9MZvNzJw5k0GDBvHAAw8wevRovv32W6ZMmdLo93J2dm70ayotT0rJ1KlTmT17Nl9//TUAcXFxrF27tknvazQa0elq/nO6ceNGHBwcGDJkCAB33HFHo9wzOzub5557jt27dyOEoG/fvlx11VW4uro2yvXrRErZZj/69u0rlUvHpk2bJCC//vpraTAYZK9evWRgYKAsLS1t6dCUOoqKimrR+69fv16OGDGi1v1Go1E+8sgjsl+/frJXr15yyZIlUkop//rrLzly5Eh57bXXyi5dusgZM2ZIs9kspZRy9+7dcsSIEbJPnz5y/PjxMjk5WUop5ciRI+X9998v+/btKxcuXCjXrl0rBwwYICMjI+XYsWNlamqqjImJkd7e3tLPz09GRETIzZs3y2eeeUa+/vrrUkop9+3bJwcOHCh79eolp06dKrOzsyuv/dhjj8n+/fvLTp06yc2bN1d7LV9//bWcO3du5ddz586VX3/9dbXjavk/aZS/wWomutJqLF++HDs7O6666iqsrKx47rnnuOaaa9i+fTujRo1q1Ht9+OGHAMydO7dRr6uc9dyPR4hKzm/Ua3b3c+KZK3vUuv/IkSP06dOn1v2ffPIJzs7O7Nq1i7KyMoYOHcr48eMB2LdvH0eOHMHPz4+hQ4fy999/M3DgQO69917WrFmDp6cn33zzDU8++SSffvopAAaDgTOTmXNyctixYwdCCD7++GNee+013njjDe644w4cHBwqB25s2LChMp5Zs2axePFiRo4cydNPP81zzz3H//73P8DSqtm5cye//PILzz33HOvXr6/yWpKSkggMPNt1HBAQQFJS83YdqwSitArl5eV8++23XHXVVZXDa8eOHYtWq2X9+vWNnkBSUlIa9XpK63T33XezdetW9Ho9u3bt4o8//uDgwYOsWrUKgLy8PE6ePIler2fAgAEEBAQAEBkZSWxsLC4uLhw+fJhx48YBYDKZ8PX1rbz+DTfcUPl5YmIiN9xwAykpKRgMhgvOvcjLyyM3N5eRI0cCMHv2bK677rrK/ddccw0Affv2bbX9dSqBKK3C3r17yc3NZcaMGZXbnJycGDhwIOvWreOFF15o1Pu5ubk16vWU6s7XUmgqPXr04Lvvvqv8+t133yUzM5N+/foBlkf2ixcvZsKECVXO27hxI9bW1pVfa7VajEYjUkp69OjB9u01z2k+dy7Rvffey0MPPcRVV13Fxo0befbZZxv0Ws7EcyaWf/P392fjxo2VXycmJjb6G60LUdV4lVZh4MCBJCcnV/vFfu+99/j+++8b/X733nsv9957b6NfV2lZY8aMobS0lPfff79yW3FxceXnEyZM4P3336e8vByAEydOUFRUVOv1unTpQkZGRmUCKS8v58iRIzUem5eXh7+/Zf7zuSOiHB0dKSgoqHa8s7Mzrq6ubNmyBYAvvviisjVSFxMmTOCPP/4gJyeHnJwc/vjjj2q/P01NtUCUVsPLy6vatoiIiCa513vvvQfAXXfd1STXV1qGEIIffviBBx98kNdeew1PT0/s7e159dVXAZgzZw6xsbH06dMHKSWenp788MMPtV5Pr9ezatUq7rvvPvLy8jAajTzwwAP06FG9dfXss89y3XXX4erqypgxY4iJiQHgyiuvZNq0aaxZs4bFixdXOWfp0qXccccdFBcXExYWxmeffVbn1+rm5sZTTz1F//6Wgh5PP/10s7esm6wab3NQ1XgvDSaTiWuvvZb//Oc/TJo0qdr+zz77DJPJxJw5cxrtns899xwAzzzzTKNdU4GjR4/SrVu3lg5DOUct/ydqRULl0nD8+HHWrFlDVlZWjftXrFjBO++806j39PT0xNPTs1GvqSjtjXqEpbS4PXv2AJbRJjWJiIjg7bffpry8vNHKUqtHV4rScKoForS43bt3Y2dnR9euXWvc36tXLwwGAydPnmy0ey5evLja82hFUS6OSiBKi9u9ezd9+vRBq9XWuL9Xr14AHDp0qNHumZ2dTXZ2dqNdT1HaI/UIS2lxLi4u9O7du9b93bp1w9raulFn2Z47GUxRlPpRCURpcT///PN591tbW5Ofn49er2+0e6oSJorScOoRltImNGbyAPjf//5XWXNIubS0p3Lul19+OS4uLkyePLlRrnexVAJRWtTixYuJiIi44LKb69evZ/z48TXO6K2PvLw88vLyGuVaSushK8q5jxgxgujoaPbs2cOKFStITExs0vvWVGrkjH8nkDvuuINZs2Y1yn0fffRRvvjii0a5Vn2oBKK0qIMHD5KamoqNjc15jysqKmLdunW1lpG4WCEhIYSEhDTKtZTW488//0Sv11dZcyM4OLiybI3JZOLRRx+lf//+hIeH88EHHwCWP/KjRo1i2rRpdO3alZkzZ3JmkvWePXsYOXIkffv2ZcKECZWFOEeN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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "_, ax = plt.subplots()\n", "for t in range(history_noisy_output.max_t + 1):\n", " pyabc.visualization.plot_kde_1d_highlevel(\n", " history_noisy_output,\n", " x=\"theta1\",\n", " t=t,\n", " refval=theta_true,\n", " refval_color='grey',\n", " xmin=theta1_min,\n", " xmax=theta1_max,\n", " ax=ax,\n", " numx=200,\n", " label=f\"Generation {t}\",\n", " )\n", "ax.plot(xs, true_fvals, color='black', linestyle='--', label=\"True\")\n", "ax.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This curve is much broader and closer to the correct posterior, approaching it gradually. The epsilon thresholds converge to zero $\\varepsilon\\rightarrow 0$, however for $\\varepsilon>0$ there remains a slight overestimation of the uncertainty which only gradually fades when decreasing $\\varepsilon$ further." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Modify the acceptance step\n", "\n", "Secondly, we can alternatively use the non-noisy model, but adjust the acceptance step:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:Sampler:Parallelizing the sampling on 4 cores.\n", "INFO:History:Start \n", "INFO:ABC:Calibration sample t=-1.\n", "INFO:ABC:t: 0, eps: 10.619660838142671.\n", "INFO:ABC:Acceptance rate: 500 / 1682 = 2.9727e-01, ESS=5.0000e+02.\n", "INFO:ABC:t: 1, eps: 1.3435421981618625.\n", "INFO:ABC:Acceptance rate: 500 / 1580 = 3.1646e-01, ESS=4.9719e+02.\n", "INFO:ABC:t: 2, eps: 1.0.\n", "INFO:ABC:Acceptance rate: 500 / 830 = 6.0241e-01, ESS=3.3374e+02.\n", "INFO:pyabc.util:Stopping: minimum epsilon.\n", "INFO:History:Done \n" ] } ], "source": [ "acceptor = pyabc.StochasticAcceptor()\n", "kernel = pyabc.IndependentNormalKernel(var=sigma**2)\n", "eps = pyabc.Temperature()\n", "\n", "abc = pyabc.ABCSMC(\n", " model, prior, kernel, eps=eps, acceptor=acceptor, population_size=pop_size\n", ")\n", "abc.new(pyabc.create_sqlite_db_id(), measured_data)\n", "history_acceptor = abc.run(max_nr_populations=10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We use a `pyabc.StochasticAcceptor` for the acceptor, replacing the default `pyabc.UniformAcceptor`, in order to accept when\n", "\n", "$$\\frac{\\pi(D|y,\\theta)}{c}\\geq[0,1],$$\n", " \n", "where $\\pi(D|y,\\theta)$ denotes the distribution of noisy data $D$ given non-noisy model output $y$ and parameters $\\theta$. Here, we use a `pyabc.IndependentNormalKernel` in place of a `pyabc.Distance` to capture the normal noise $\\pi(D|y,\\theta)\\sim\\mathcal{N}(D|y,\\theta,\\sigma)$. Also other noise models are possible, including Laplace or binomial noise. In place of the `pyabc.Epsilon`, we employ a `pyabc.Temperature` which implements schemes to decrease a temperature $T\\searrow 1$, s.t. in iteration $t$ we sample from\n", "\n", "$$\\pi(\\theta,y|D) \\propto \\pi(D|y,\\theta)^{1/T_t}p(y|\\theta)\\pi(\\theta),$$\n", "\n", "where $p(y|\\theta)$ denotes the model output likelihood, and $\\pi(\\theta)$ the parameters prior.\n", "\n", "Each of acceptor, kernel and temperature offers various configuration options, however the default parameters have shown to be quite stable already." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "_, ax = plt.subplots()\n", "for t in range(history_acceptor.max_t + 1):\n", " pyabc.visualization.plot_kde_1d_highlevel(\n", " history_acceptor,\n", " x=\"theta1\",\n", " t=t,\n", " refval=theta_true,\n", " refval_color='grey',\n", " xmin=theta1_min,\n", " xmax=theta1_max,\n", " ax=ax,\n", " numx=200,\n", " label=f\"Generation {t}\",\n", " )\n", "ax.plot(xs, true_fvals, color='black', linestyle='--', label=\"True\")\n", "ax.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that we get a similar posterior distribution as with the noisy output. It matches the true posterior better actually, indicating that already for this simple problem, standard ABC has a hard time reproducing the posterior. Moreover, the posterior is obtained at a much lower computational cost, as the below plot shows:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "histories = [history_noisy_output, history_acceptor]\n", "labels = [\"noisy model\", \"stochastic acceptor\"]\n", "\n", "pyabc.visualization.plot_sample_numbers(histories, labels)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Thus, the stochastic acceptor is the method of choice for exact inference. Note that for practical applications it requires in general more simulations than inference without a, or effectively thus with a uniform, noise model. For further details please consult the API documentation and the mentioned manuscript." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Estimate noise parameters\n", "\n", "Our formulation of the modified acceptance step allows the noise model to be parameter-dependent (so does in theory also the noisified model output). Thus one can estimate parameters like e.g. the standard deviation of Gaussian noise on-the-fly.\n", "\n", "Parameters are often estimated on a logarithmic scale if fold changes are of interest. We show this here exemplarily with the example of the standard deviation of a normal noise kernel:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "theta_true_var = {'theta1': theta_true['theta1'], 'std': np.log10(sigma)}\n", "\n", "std_min, std_max = np.log10([0.002, 1])\n", "theta_lims_var = {\n", " 'theta1': (theta1_min, theta1_max),\n", " 'std': (std_min, std_max),\n", "}\n", "\n", "prior = pyabc.Distribution(\n", " theta1=pyabc.RV(\"uniform\", theta1_min, theta1_max - theta1_min),\n", " std=pyabc.RV(\"uniform\", std_min, std_max - std_min),\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Also in this scenario, we can calculate for comparison the true posterior:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 8 µs, sys: 1 µs, total: 9 µs\n", "Wall time: 20.5 µs\n" ] } ], "source": [ "%%time\n", "\n", "\n", "def posterior_unscaled(p):\n", " \"\"\"Unscaled posterior with parameter-dependent noise levels.\"\"\"\n", " # simulations and sigmas as arrays\n", " y = model(p)['X_2']\n", " sigma = 10 ** p['std'] * np.ones(n_time)\n", "\n", " # unscaled likelihood\n", " likelihood_val = normal_dty(measured_data['X_2'], y, sigma)\n", "\n", " # prior\n", " prior_val = prior.pdf(p)\n", "\n", " return likelihood_val * prior_val\n", "\n", "\n", "# calculate posterior normalization\n", "posterior_normalization = None\n", "# comment out this line to recompute the normalization\n", "posterior_normalization = 382843631.1961108\n", "if posterior_normalization is None:\n", " posterior_normalization = sp.integrate.dblquad(\n", " lambda std, theta1: posterior_unscaled({'theta1': theta1, 'std': std}),\n", " *theta_lims_var['theta1'],\n", " lambda theta1: std_min,\n", " lambda theta1: std_max,\n", " epsabs=1e-4,\n", " )[0]\n", " print(posterior_normalization)\n", "\n", "\n", "def posterior_scaled(p):\n", " \"\"\"Normalized posterior.\"\"\"\n", " return posterior_unscaled(p) / posterior_normalization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We are interested in the marginal densities w.r.t. theta1 and std:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 20.8 s, sys: 98.6 ms, total: 20.9 s\n", "Wall time: 25.2 s\n" ] } ], "source": [ "%%time\n", "\n", "\n", "def marg_theta1(theta1):\n", " \"\"\"Posterior marginal w.r.t. theta1.\"\"\"\n", " return sp.integrate.quad(\n", " lambda std: posterior_scaled({'theta1': theta1, 'std': std}),\n", " *theta_lims_var['std'],\n", " )[0]\n", "\n", "\n", "def marg_std(std):\n", " \"\"\"Posterior marginal w.r.t. std.\"\"\"\n", " return sp.integrate.quad(\n", " lambda theta1: posterior_scaled({'theta1': theta1, 'std': std}),\n", " *theta_lims_var['theta1'],\n", " )[0]\n", "\n", "\n", "# calculate the densities on a grid\n", "\n", "theta1s = np.linspace(*theta_lims_var['theta1'], 100)\n", "vals_theta1 = [marg_theta1(theta1) for theta1 in theta1s]\n", "\n", "stds = np.linspace(*theta_lims_var['std'], 100)\n", "vals_std = [marg_std(std) for std in stds]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The actual implementation of exact inference with estimated variance is as follows:\n", "\n", "The arameter-dependent noise model is specified by passing a function to the kernel, which takes the parameters and returns an array of variances corresponding to the data. This is currently implemented for the `pyabc.IndependentNormalKernel`, `pyabc.IndependentLaplaceKernel`, `pyabc.BinomialKernel`." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:Sampler:Parallelizing the sampling on 4 cores.\n", "INFO:History:Start \n", "INFO:ABC:Calibration sample t=-1.\n", "INFO:ABC:t: 0, eps: 18.523365087802798.\n", "INFO:ABC:Acceptance rate: 500 / 1705 = 2.9326e-01, ESS=5.0000e+02.\n", "INFO:ABC:t: 1, eps: 8.75167535084106.\n", "INFO:ABC:Acceptance rate: 500 / 1611 = 3.1037e-01, ESS=4.2604e+02.\n", "INFO:ABC:t: 2, eps: 5.088249506343676.\n", "INFO:ABC:Acceptance rate: 500 / 1824 = 2.7412e-01, ESS=3.7931e+02.\n", "INFO:ABC:t: 3, eps: 2.958323063974092.\n", "INFO:ABC:Acceptance rate: 500 / 2071 = 2.4143e-01, ESS=4.0018e+02.\n", "INFO:ABC:t: 4, eps: 1.719977634730781.\n", "INFO:ABC:Acceptance rate: 500 / 1841 = 2.7159e-01, ESS=3.7095e+02.\n", "INFO:ABC:t: 5, eps: 1.0.\n", "INFO:ABC:Acceptance rate: 500 / 1908 = 2.6205e-01, ESS=3.8768e+02.\n", "INFO:pyabc.util:Stopping: maximum number of generations.\n", "INFO:History:Done \n" ] } ], "source": [ "def var(p):\n", " \"\"\"Parameterized variance function. Note `var = std**2`.\"\"\"\n", " return 10 ** (2 * p['std']) * np.ones(n_time)\n", "\n", "\n", "acceptor = pyabc.StochasticAcceptor()\n", "# pass variance function to kernel\n", "kernel = pyabc.IndependentNormalKernel(var=var)\n", "eps = pyabc.Temperature()\n", "\n", "abc = pyabc.ABCSMC(\n", " model, prior, kernel, eps=eps, acceptor=acceptor, population_size=pop_size\n", ")\n", "abc.new(pyabc.create_sqlite_db_id(), measured_data)\n", "history_acceptor_var = abc.run(max_nr_populations=6)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjgAAAEYCAYAAABRMYxdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAADJ/0lEQVR4nOzdd1zVZfvA8c/NgcM4h71kieBMFAeIq5KcTdPSrCxt5y+zxyxbPpn2lO1ppZXWozbMLEdPVppFOTL3QnOjoMge5wBnAPfvjwNHkSEoQ+R+v168POc7r0P29Tr3uG4hpURRFEVRFOVy4tDUASiKoiiKotQ3leAoiqIoinLZUQmOoiiKoiiXHZXgKIqiKIpy2VEJjqIoiqIolx3Hpg7gYlx77bXy559/buowWryZM2cC8MILLzRxJMolRDR1AHWlnif1Sz0XlHp0Qc+TZp3gZGZmNnUICuDs7NzUISjKRVPPk/qlngtKUxPNuQ5ObGys3Lp1a1OHoShKZc2uBUc9TxTlknVBzxM1Bke5aMnJySQnJzd1GIqiXELUc0FpairBUS7aZ599xmeffdbUYSiKcglRzwWlqTXYGBwhxGfAjUC6lLLLOfueAN4E/KWUmUIIAbwHXA8UAvdIKbc3VGxK/XJ1dW3qEBRFucRc6s8Fq9VKSkoKJpOpqUNRyri4uBAaGoqTk1O9XK8hBxn/F/gAWHj2RiFEGDAUOHHW5uuA9mU/vYE5ZX8qzcBTTz3V1CEoinKJudSfCykpKbi7u9OmTRts37GVpiSlJCsri5SUFCIiIurlmg3WRSWl/BPIrmLXO8BTwNmjm28GFkqbTYCXECKooWJT6tf+/fvZv39/U4ehKMol5FJ/LphMJnx9fVVyc4kQQuDr61uvLWqNOgZHCHEzcFJKueucXSHA2aPRUsq2VXWNh4QQW4UQWzMyMhooUqUulixZwpIlS5o6DEVRLiHN4bmgkptLS33/92i0OjhCCDfgOWzdUxdMSvkJ8AnYpnXWQ2jKRdLpdE0dgqIolxj1XFCaWmO24LQFIoBdQogkIBTYLoRoBZwEws46NrRsm9IIrBYzG5Z8QU7qhf3Kn3zySZ588sl6jkpRlObs7OdCYWEhzzzzDHv37m3iqC4taWlp3HnnnURGRhITE0Pfvn1ZtmxZk8WTkJDAxo0b7e/nzp3LwoULazij9hYsWED79u1p3749CxYsqJdrnk+jJThSyj1SygApZRspZRts3VA9pZSngZXAOGHTB8iTUqY2VmwtWWlJCSvffJlN3y3mr+8WX9A1tm7diiqQpijK2c5+Lvzyyy+89tprxMTE8PfffzdxZJcGKSUjRozg6quv5ujRo2zbto3FixeTkpLSoPctLi6udt+5Cc6ECRMYN27cRd8zOzubmTNn8vfff7N582ZmzpxJTk7ORV/3fBoswRFCfA38BXQUQqQIIe6v4fBVwFHgMPAp8EhDxaVUdCJxN0m7tuPhH8DhLZuwmus+wOvHH3/kxx9/bIDoFEVprs5+LiQmJgK2Vp3Y2NimDOuS8dtvv6HVapkwYYJ9W3h4OJMmTQKgpKSEqVOn0qtXL6Kjo/n4448BWxISHx/PqFGj6NSpE2PHjqV8RYJt27YxYMAAYmJiGDZsGKmptnaC+Ph4Jk+eTGxsLO+99x4//PADvXv3pkePHgwePJi0tDSSkpKYO3cu77zzDt27d2fdunXMmDGDN998E4CdO3fSp08foqOjGTlypD1BiY+P5+mnnyYuLo4OHTqwbt26Sp/1l19+YciQIfj4+ODt7c2QIUNojHXfGmwMjpTyjvPsb3PWawlMbKhYlOqlHTkEwIC77+eHt1/h6PatdOx7ZZ2u4e7u3hChKYrSjJ39XEhMTCQ8PJyXX34ZgNLSUhwcLp06szN/SGTfqfx6vWbnYA9euCmq2v2JiYn07Nmz2v3z58/H09OTLVu2YDab6d+/P0OH2oaw7tixg8TERIKDg+nfvz8bNmygd+/eTJo0iRUrVuDv788333zDtGnT7MUWLRaLvUUtJyeHTZs2IYRg3rx5vP7667z11ltMmDABvV5v71pcu3atPZ5x48Yxe/ZsBgwYwPTp05k5cybvvvsuYGsV2rx5M6tWrWLmzJn8+uuvFT7LyZMnCQs7MwolNDSUkycbfhRKs15sU7l4accO4xnYina9+uDq4cnR7ZvrnOBMmTKlgaJTFKW5Ovu5EBAQwJAhQwBbfZxvv/2WY8eONVVol6SJEyeyfv16tFotW7ZsYfXq1ezevZulS5cCkJeXx6FDh9BqtcTFxREaGgpA9+7dSUpKwsvLi71799p/zyUlJQQFnam2MmbMGPvrlJQUxowZQ2pqKhaL5bx1Z/Ly8sjNzWXAgAEAjB8/ntGjR9v333LLLQDExMSQlJR08b+MeqISnBYu7egRWrXrgIODBv/wCLJP1n3tmPI+2379+tV3eIqiNFNnPxfee+89+3Zvb2+SkpIwGAyXTOtvTS0tDSUqKorvvvvO/v7DDz8kMzPT3oUnpWT27NkMGzaswnkJCQkVVmrXaDQUFxcjpSQqKoq//vqryvudPatt0qRJTJkyheHDh5OQkMCMGTMu6rOUx1Mey7lCQkJISEiwv09JSSE+Pv6i7lkbl04bodLoigz55GekERjRFgCf4FCyT6VQ1xXm16xZw5o1axoiREVRmqnqngsdO3YE4ODBg40d0iVl4MCBmEwm5syZY99WWFhofz1s2DDmzJmD1WoFbL+vgoKCaq/XsWNHMjIy7AmO1Wq1j306V15eHiEhtlJzZ89ocnd3x2AwVDre09MTb29v+/iaRYsW2VtzamPYsGGsXr2anJwccnJyWL16daXErSGoBKcFSzt6GIDAyHYA+ISEYikqoiC3bqPbvby88PLyqu/wFEVpxsqfC8uXLycyMpL1q39mycxnOZ7wCwD//PNPE0fYtIQQLF++nD/++IOIiAji4uIYP348r732GgAPPPAAnTt3pmfPnnTp0oWHH364xhlQWq2WpUuX8vTTT9OtWze6d+9eYUbU2WbMmMHo0aOJiYnBz8/Pvv2mm25i2bJl9kHGZ1uwYAFTp04lOjqanTt3Mn369Fp/Vh8fH55//nl69epFr169mD59Oj4+PrU+/4JJKZvtT0xMjFQu3LZVK+XInlFyfcLvUkopk3bvkG/edoM8vmdX0wamXA4a7P97wAXYDOwCEoGZVRxzD5AB7Cz7eeB811XPk4bx4osvSkB+/NhD8oN7x8hXb71Wahwc5L///e8mjWvfvn1Nen+latX8d7mgZ4Uag9OCnTqRxLLtiSyLv4bS0lJ8QmyD1rJPpdC6S3Str1M+0n7QoEENEqeinMMMDJRSGoUQTsB6IcRP0raO3dm+kVI+2gTxKZx5LiQmJhIWEoLh9EmG/d9ktv7wPdfF9VTTxZUGpxKcFmzz1u0AfPnllwgh0Hv74uTiSvapug00Xr9+PaASHKVxSCklYCx761T2o5ZtucSUPxcSExMJ9NCj8/bhiisHYDLkk5Vygitjq58irSj1QY3BacF27ktE4+DAiBEjkFJisVhsA41P1q2Spo+PT+P0pypKGSGERgixE0gH1kgpqyqPe6sQYrcQYqkQIqyK/UoD8vHxwdPTkwMHDuClEUR0j0Xj6ES7Xn2RUrJ93R+UlpY2dZjKZUy14LRg+48ep13rMJydnRk6dCgdO3ZkWGQIGcnH63Sd8sqbitJYpJQlQHchhBewTAjRRUp59kJHPwBfSynNQoiHgQXAwHOvI4R4CHgIoHXr1g0feAsyadIk8vLy2L5lMy4pRwi9wjYV2yMggO0pp5l6x90cietHZGRkE0eqXK5UC04LVVJspU9EKHffcjMajYbAwEAWL16M3scXY3ZWna6llmpQmoqUMhf4Hbj2nO1ZUkpz2dt5QEw1538ipYyVUsb6+/s3aKwtzY8//sj69et5fNyddGzlT+gVXQBwcNDQNsKW1LT0mVRKw1IJTgtlzM6ie1gQw2+8AYDo6GiysrLA2QWrqQjzWfUYzkcttqk0JiGEf1nLDUIIV2AI8M85xwSd9XY4sL/RAlQA23Nh3bp1HE/cg7uvPx7+AfZ9UV1tyY5KcJSGpBKcFuqvdes4lZuPh6/todOuna0WTnahbbHNurTi+Pv7o779Ko0oCPhdCLEb2IJtDM7/hBAvCiGGlx3zmBAiUQixC3gM27RxpRH5+/vz559/8uDMWQR36IQQwr4vouMV6Jy1JO7dW8MVLn9paWnceeedREZGEhMTQ9++fVm2bFmTxXPuauJz585l4cKF9XLta6+9Fi8vL2688cZ6uV5tqDE4LdTr77zLnl27mOZnS0zatrVVM07Pt1WxNGZn4Rtau3GZjzyiFn9XGo+UcjfQo4rt0896/SzwbGPGpVT0yCOPsGrVj2gdHPBr3abCPp/QMALcdSTu2dM0wV0CpJSMGDGC8ePH89VXXwFw/PhxVq5c2aD3LS4uxtGx6n/6ExIS0Ov19mV3zl7p/GJNnTqVwsJC+6rojUG14LRAUkq2795DhJ837mVVLNu2bcv9999PZPv2ABhzat+C8/333/P99983SKyKojRP33//PQf2/4POWYtvSMUvS74hrRnQMZI7bm68b/OXmt9++w2tVlshiQgPD7dP2igpKWHq1Kn06tWL6Ohoe2KQkJBAfHw8o0aNolOnTowdO9a+vM62bdsYMGAAMTExDBs2jNTUVADi4+OZPHkysbGxvPfee/zwww/07t2bHj16MHjwYNLS0khKSmLu3Lm888479krGM2bM4M033wRg586d9OnTh+joaEaOHElOTo792k8//TRxcXF06NChUgXkcoMGDWr0tcdUC04LdODAAfIMBtpHd8JJa1skTa/XM2/ePKxmE3sXfVKnLqo9Zd/CyleUVRRF2bNnD1nZ2bTxcMPnnATHK7AVXUKDiO3QromiO8dPz8Dpem5NatUVrnu12t2JiYn07Fl9LaD58+fj6enJli1bMJvN9O/fn6FDhwKwY8cOEhMTCQ4Opn///mzYsIHevXszadIkVqxYgb+/P9988w3Tpk3js88+A8BisdjHSubk5LBp0yaEEMybN4/XX3+dt956iwkTJqDX63nyySeBM8UaAcaNG8fs2bMZMGAA06dPZ+bMmbz77ruArVVo8+bNrFq1ipkzZ/Lrr79e1K+uvqgEpwUqT0g6hFecFltaWkq+sQBnnQ5DHRKc4ODgeo1PUZTmLzg4mMLCQvQB3ni1Cqqwz0GjwcHVja3bttHjxpG4ubk1UZSXjokTJ7J+/Xq0Wi1btmxh9erV7N69m6VLlwK2BTIPHTqEVqslLi6O0FBb5fnu3buTlJSEl5cXe/fuZciQIYCtBSgo6MzvfcyYMfbXKSkpjBkzhtTUVCwWCxERETXGlpeXR25urn2BzfHjxzN69Gj7/vIvtzExMSQlJV38L6OeqASnBTp58iQAIaEhFbbfd999/P7778wcdUOdWnAefPDBeo1PUZTm74EHHuD3pYsJ0rmiqWLMx4n8Qt797zv0H31n0y/bUENLS0OJioriu+++s7//8MMPyczMtP8upJTMnj270qrbCQkJODs7299rNBqKi4uRUhIVFWVfTfxcOp3O/nrSpElMmTKF4cOHk5CQwIwZMy7qs5THUx7LpUKNwWmBxo4dy9OjbiLgnG9Vbdq0ITk5GWcPzzolOF9//TVff/11fYepKEoztnjxYnpFtmZA/35V7g8KagVgHyfS0gwcOBCTycScOXPs2wrPKs8xbNgw5syZg9VqBeDgwYMUFBRUe72OHTuSkZFhT3CsViuJiYlVHpuXl0dIiO0L7oIFC+zb3d3dMRgMlY739PTE29vbPr5m0aJF9tacS5lqwWmB/P39CdW7ovfyrrC9bdu2SCkpkILiOgwyPnjwYH2HqChKM5e4dy9mnOhxzhepciGhti7y06dPN2ZYlwwhBMuXL+fxxx/n9ddfx9/fH51Ox2uvvQbYWsCSkpLo2bMnUkr8/f1Zvnx5tdfTarUsXbqUxx57jLy8PIqLi5k8eTJRUVGVjp0xYwajR4/G29ubgQMHcuzYMQBuuukmRo0axYoVK5g9e3aFcxYsWMCECRMoLCwkMjKSzz//vE6f96qrruKff/7BaDQSGhrK/PnzK7VO1TeV4LRAXyxaxN5jx4m9yavC9vKp4tmFJhzzcpGlpQiH8zfyqRL3iqKcy5ifx3tzP6VLp05V7g8NDwfOdJm3REFBQSxevLjKfQ4ODsyaNYtZs2ZV2B4fH098fLz9/QcffGB/3b17d/78889K10pISKjw/uabb+bmm2+udFyHDh3YvXu3/f1VV11V4dqbNm2q8dp+fn7VjsGpbnZVQ1IJTgv0/PTn8S618oinV4Xt5QlORr6BVqWlmAoLcNWff1rfvffe2xBhKorSjLUNsw2CDYuoeq0p74AA3LROpJyo29p3ilJbagxOCyOlJPVUKp6uLui8vCrsCwgI4MUXXyS2bOpiUX5era65aNEiFi1aVN+hKorSjK1btx6ANu2qngqu9/ZlTFw3bh8xohGjUlqSBktwhBCfCSHShRB7z9r2hhDiHyHEbiHEsvL1ZMr2PSuEOCyEOCCEaNiOuRYsOzsbs8WCp6sLbue04AgheP755+kdFwdAYS0TnKNHj3L06NH6DlVRlGbsdHYODg4OhLatOsHRefsQFRxIeCu1zIvSMBqyBee/nLPCL7AG6CKljAYOUlZKXQjRGbgdiCo75yMhhKYBY2uxUlJSAPBwdUHn6V1pf3Z2NoeTbcfUtgUnMjKSyMiqm6EVRWmZigsM6Jy1aJ1dqtyv9/Yhw2Dkp59/aeTIlJaiwRIcKeWfQPY521ZLKcsnyW8CQste3wwsllKapZTHgMNAXEPF1pKVD+irqgUH4JVXXuHG0WMolZKi/PxaXfPuu+/m7rvvrs8wFUVp5obEdOO2+Cur3e/m4cnmYyk8+Z9Z9qUGFKU+NeUYnPuAn8pehwDJZ+1LKdtWiRDiISHEViHE1oyMjAYO8fIzZMgQvnj9JSKCW+Go1Vba37ZtW8xmM/lFplp3UX3++ed1njKoKMrlzcPZiS5XVD2DCkA4OODn4421uNi+rpGi1KcmSXCEENOAYuDLup4rpfxEShkrpYz191d9t3Xl5OSEp5MjXr6+Ve4vL9ltKC6tdRfViRMnOHHiRL3FqChK8yal5GhhMaeKRY3H+ZU9h1pqLZy0tDTuvPNOIiMjiYmJoW/fvixbtqzJ4klISGDjxo3293PnzmXhwoUXfd2dO3fSt29foqKiiI6O5ptvvrnoa9ZGo08TF0LcA9wIDJJn2iVPAmevxhZatk2pZ19//TW/rf2dgT2iq9wfGBgIgEVoat2C06FDh3qLT1GU5s9kNPDZV4vpE1P9YpIAgWVfUlNTU+ncuXNjhHbJkFIyYsQIxo8fz1dffQXA8ePHWblyZYPet7i4GMcqls4AW4Kj1+vp189Wffrslc4vhpubGwsXLqR9+/acOnXKvtq51zkzeetbo7bgCCGuBZ4ChkspC8/atRK4XQjhLISIANoDmxsztpZi4cKF/LplO24eHlXuL09wTKVQZKjdGJw77riDO+64o95iVBSlectKPYXJaqVr1y41Hlf+vGmJLTi//fYbWq22QhIRHh7OpEmTANtimVOnTqVXr15ER0fz8ccfA7YkJD4+nlGjRtGpUyfGjh1rH8O0bds2BgwYYE8gypfBiI+PZ/LkycTGxvLee+/xww8/0Lt3b3r06MHgwYNJS0sjKSmJuXPn8s4779C9e3fWrVvHjBkzePPNNwFbK0yfPn2Ijo5m5MiR9m7F+Ph4nn76aeLi4ujQoUOVBf06dOhA+/btAdsirAEBATTGEJMGa8ERQnwNxAN+QogU4AVss6acgTVCCIBNUsoJUspEIcQSYB+2rquJUsqShoqtJUtJScHTxRlX96oTHH9/fxYsWIBhz9Zat+B8+umngFp0U1EUm5SyarYZWdk1Hhce3prHrr2mwUv2n89rm1/jn+x/6vWanXw68XTc09XuT0xMpGfP6lu45s+fj6enJ1u2bMFsNtO/f3+GDh0KwI4dO0hMTCQ4OJj+/fuzYcMGevfuzaRJk1ixYgX+/v588803TJs2jc8++wwAi8XC1q1bAcjJyWHTpk0IIZg3bx6vv/46b731FhMmTECv1/Pkk08CsHbtWns848aNY/bs2QwYMIDp06czc+ZM3n33XcDWKrR582ZWrVrFzJkz+fXXX6v9XJs3b8ZisdgLyzakBktwpJRVfaWfX8PxLwMvN1Q8is3Jkyfp7OeJq4dnlfsdHR0ZN24cP8/J5vjuHbW65qlTp+ozREVRmrmTZdWJSzU1/xPj6eNLaw83fLwrl6xoaSZOnMj69evRarVs2bKF1atXs3v3bpYuXQrYFsg8dOgQWq2WuLg4QkNtk5C7d+9OUlISXl5e7N27lyFDhgC2FqCgoDPrgI0ZM8b+OiUlhTFjxpCamorFYrGPvaxOXl4eubm59gU2x48fz+jRo+37b7nlFgBiYmKqXaoBbF2Rd999NwsWLMChFssAXSy1VEMLUlhYSE5ODh4hAbhVk+CArSkyKT0TU34eUkrKWtuq1bVr1/oOVVGUZuzUSVstrS7nGVfj6u7B/tR0VixfxshbRzVGaFWqqaWloURFRfHdd9/Z33/44YdkZmYSGxsL2MbozJ49u1LrVkJCAs7Ozvb3Go2G4uJipJRERUXZVxM/l06ns7+eNGkSU6ZMYfjw4SQkJDBjxoyL+izl8ZTHUpX8/HxuuOEGXn75Zfr06XNR96sttVRDC1Lez+3p5lJtFxXAE088wZzFSykpLsZSVHTe695yyy32DF5RFCXI04O7r+zF/z36aI3Hubh7sHbfYd5++51GiuzSMXDgQEwmE3PmzLFvKyw8MzR12LBhzJkzB6vVCsDBgwcpKCio9nodO3YkIyPDnuBYrVYSExOrPDYvL4+QEFsllgULFti3u7u7YzAYKh3v6emJt7e3fXzNokWL7K05tWGxWBg5ciTjxo1j1KjGS2RVgtOCREZGcmzPTrqHBVXbRQW2gX85+ba/5Cbj+Qcaf/TRR3z00Uf1Fqei1EQI4SKE2CyE2CWESBRCzKziGGchxDdly7/8LYRo0wShtlgulNI1qgtLliyp8ThXdw/cXZ05fTq1kSK7dAghWL58OX/88QcRERHExcUxfvx4XnvtNQAeeOABOnfuTM+ePenSpQsPP/xwta0jAFqtlqVLl/L000/TrVs3unfvXmHK99lmzJjB6NGjiYmJwc/Pz779pptuYtmyZfZBxmdbsGABU6dOJTo6mp07dzJ9+vRaf9YlS5bw559/8t///pfu3bvTvXt3du7cWevzL5Tqomphik0mHDWaGruoAgMDyc7NBcBkNOIZUPM1VcFFpZGZgYFSSqMQwglYL4T4SUq56axj7gdypJTthBC3A68BY6q6mFL/Dh4+xMECM6HneTa4unvg7uLM8bTMRors0hIUFMTixYur3Ofg4MCsWbOYNWtWhe3x8fHEx8fb33/wwQf21927d+fPP/+sdK2EhIQK72+++WZuvvnmSsd16NCB3bt3299fddVVFa69adOmSuecfW0/P78qx+Dcdddd3HXXXZW2NzSV4LQgy5cvZ8mCz+nhKGvsogoICKCgsBBLcQkmo/G81y3vM1aUxlBWP6v8L6ZT2c+5tf5vBmaUvV4KfCCEEFKtCdAoVv6xke1Hj/P1eVtw3PFwcSbfYKCoqAhXV9dGilBpCVQXVQvy22+/sXL1GhwcBK7V1MGBM7UpDCYzpoLK/bHnuuGGG7jhhhvqLU5FOR8hhEYIsRNIB9ZIKf8+5xD78i9l69/lAVWX71bqXU5+Pr7eXud9LpS34EDLrIWjNCyV4LQgaWlp+Hh44OjsjFM1K/yCbXDbD99/j7uLc61acGbPns3s2bPrM1RFqZGUskRK2R1b1fM4IUTNFeWqoda2q39WixlDYSEajea8zwUnZxd6RITzxZuzCAsLq/FYRakrleC0IBkZGbi7udbYPQUQEhLCsBuuR+uowWQ8fwtOdnY22dk1F/RSlIYgpcwFfgeuPWeXffkXIYQj4AlkVXG+WtuunhXm5mI0W3DW6Wr1XPD188PX1bXa5QMU5UKpBKcFyczMRO/iUuMAY7BN6Vu+YiUZBSZMBedvwbnyyiu58sor6ytMRamREMJfCOFV9toVGAKcW4Z2JTC+7PUo4Dc1/qZxFOTmUGC2ENoqsFbPBeHiwtc/rmLLli2NEJ3SkqiUuYVxd3aqcYo42ApM3XbbbdzUqxvX1KKLatCgQfUVnqLURhCwQAihwfYlbYmU8n9CiBeBrVLKldiqpi8SQhwGsoHbmy7clqUgL4dx/WK4/amnGVCLZ4Or3oOFq9ZwxVUD6dWrVyNEqLQUqgWnBdm9ezdj+vU6bxeVs7MzXl5eFFpLMNeiBee9997jvffeq68wFaVGUsrdUsoeUspoKWUXKeWLZdunlyU3SClNUsrRUsp2Uso4KeXRpo265SjKz6ddgC879uyt1XPB08cHraNjiyw3kZaWxp133klkZCQxMTH07duXZcuWNVk8CQkJFWrnzJ07l4ULF170dY8fP07Pnj3p3r07UVFRzJ0796KvWRuqBaeFKcrPO28XFdimihst1lqNwcktq5mjKIqSlZ7OzuRT+AefwtPL67zHu+h06Fy0LS7BkVIyYsQIxo8fz1dffQXYEoGVK1c26H2Li4urHe+UkJCAXq+nX79+ABVWOr8YQUFB/PXXXzg7O2M0GunSpQvDhw8nODi4Xq5fHdWC00IkJydz883DOXQy9bxdVGCbKm4oqt0YnCFDhtgXeFMUpWU7nnSML/7agbePT62eCy56d3RaJzIzW1axv99++w2tVlshiQgPD2fSpEmAbbHMqVOn0qtXL6Kjo/n4448BWxISHx/PqFGj6NSpE2PHjqV8eNm2bdsYMGAAMTExDBs2jNRUW4Xo+Ph4Jk+eTGxsLO+99x4//PADvXv3pkePHgwePJi0tDSSkpKYO3cu77zzjr2S8YwZM3jzzTcB2xqFffr0ITo6mpEjR5KTk2O/9tNPP01cXBwdOnSoVAEZbFWWy9erMpvNlJaWNtBvtSLVgtNCpKSksHLlD9x/Va9ateAEBgZy7OCBWk0TL8/2FUVRsjJtLTG9e/eu1bPBRadHp9WSnpbW0KFV6/SsWZj3nztO/eI4X9GJVs89V+3+xMREevbsWe3++fPn4+npyZYtWzCbzfTv35+hQ4cCsGPHDhITEwkODqZ///5s2LCB3r17M2nSJFasWIG/vz/ffPMN06ZN47PPPgNsk0e2bt0KQE5ODps2bUIIwbx583j99dd56623mDBhAnq9nieffBKAtWvX2uMZN24cs2fPZsCAAUyfPp2ZM2fy7rvvArZWoc2bN7Nq1SpmzpzJr7/+WunzJCcnc8MNN3D48GHeeOONBm+9AZXgtBjl3450ztpateC88sorbPp+MdmJu8577Ntvvw3AlClTLi5IRVGavews29TwVatWsXfv3vM+F1z07tzZuzsPvf9JY4R3yZo4cSLr169Hq9WyZcsWVq9eze7du1m6dClgWyDz0KFDaLVa4uLiCA0NBWxLKCQlJeHl5cXevXvtrWYlJSUEBQXZrz9mzJmVSlJSUhgzZgypqalYLBYiIiJqjC0vL4/c3Fz7Apvjx49n9OjR9v3liy3HxMRUuVQDQFhYGLt37+bUqVOMGDGCUaNG2YvKNhSV4LQQ5f3bemdtrVpw2rVrR0bbtqRt20RJcTGaGmpUVLX6rKIoLVNurq3roqSkpFbPBhedHp2zFodG6raoSk0tLQ0lKiqK7777zv7+ww8/JDMz0770jZSS2bNnM2zYsArnJSQk2Lt7ADQaDcXFxUgpiYqKsq8mfi6dTmd/PWnSJKZMmcLw4cNJSEhgxowZF/VZyuMpj6UmwcHBdOnShXXr1jX4yuJqDE4LYW/B0dYuwTl8+DBLV6+l0GI970wqtVSDoijlyicd3HjjjbV6Lrjo9SRlZvPc8y9gMpkaOLpLx8CBAzGZTMyZM8e+rbCw0P562LBhzJkzB6vVCsDBgwcpKCio9nodO3YkIyPDnuBYrVYSExOrPDYvL4+QkBDAtkp4OXd39yqTUk9PT7y9ve3jaxYtWmRvzamNlJQUioqKAFv32Pr16+nYsWOtz79QKsFpIbRaLaGtWqF11NSqiyoxMZG3P5lPtrHwvAONY2Nj1YKbiqIAENXKn/enPcWgQYNq9Vxw1uk5nWdk/hdftKiZVEIIli9fzh9//EFERARxcXGMHz+e1157DYAHHniAzp0707NnT7p06cLDDz9cY+uIVqtl6dKlPP3003Tr1o3u3btXmPJ9thkzZjB69GhiYmLw8/Ozb7/ppptYtmyZfZDx2RYsWMDUqVOJjo5m586dTJ8+vdafdf/+/fTu3Ztu3boxYMAAnnzySbp27Vrr8y+UaM7FPWNjY2X5oCnl/P788nO2/7SSfy36HiFEjcdu2rSJvn37cv9VvXhx3gKCO1xR7bHlo+zLB6YpClDzX7BLkHqeXLySYivvjh1Jv9vGsuHYSeD8z4X8zAz+NeI6/rthG9u2batx4G192r9/P1dcUf1zTWka1fx3uaDniRqD04IU5uXh6uF53uQGzl1RvOYWnJqaTRVFaTmKDAYOpWVSunM3hY7VL+h7Nhe9bQwO0KJacJSGpxKcFuL+++8n/9ghhvfqUavjAwICADCazOedKn7bbbdddHyKojR/RYZ8Nh09wZqkr/nfTz/V6hwnZxfcXd0AWlwtHKVhqQSnhfjjjz8IdHHC1aPmZRrK6XQ6dDodBpPlvAmOauZVFAVsyzQUWax4BvrV+rkghMDP1xuwDX5VlPrSYIOMhRCfCSHShRB7z9rmI4RYI4Q4VPand9l2IYR4XwhxWAixWwjROJ2wLUhGRgauGgfcPL1qfc7ePXu4tmuH8y7X8Prrr/P6669fZISKojR3RYZ8iqzFeHl71+m54O3tw/dvvMQjjzzSwBEqLUlDzqL6L3DtOdueAdZKKdsDa8veA1wHtC/7eQiYg1JvLBYL+fn5OAtwq2ULDkCbiAjc3T3OO028qKjIPgVQUZSWq8iQj8lqxcfHt07PBVd3D4qLCs9/oKLUQYN1UUkp/xRCtDln881AfNnrBUAC8HTZ9oXSNqVrkxDCSwgRJKVMbaj4WpLyfm0XjQOu7uefIl7u22+/ZcORE7SLrbkF57777ruo+BRFuTwUGfIosljx8fWt03PBRa/nqx9/4YTbWzzxxBMNGKHSkjR2HZzAs5KW00B5neYQIPms41LKtlUihHhICLFVCLFVjbivHYvFQmxMT3z1brWqgVNuxYoV/L53/3lnUYWFhREWFnaxYSqK0syZC4xMuX4gM2bOrNNzwUWnZ/fRYyxfvrxhA7zEpKWlceeddxIZGUlMTAx9+/Zl2bJlTRZPQkJChdo5c+fOZeHChfV2/fz8fEJDQ3n00Ufr7Zo1abJCf2WtNXUuwiOl/ERKGSuljPX392+AyC4/bdq04YdvFtOxlX+dxuD4+flhKDr/LKpXX32VV1999SKjVBSluTMZCwhuFUhwcHCdngvOej1ujo4tapq4lJIRI0Zw9dVXc/ToUbZt28bixYtJSUlp0PvWVCzw3ARnwoQJjBs3rt7u/fzzz3P11VfX2/XOp7ETnDQhRBBA2Z/pZdtPAmen+qFl25R6UpRvm51QlzE4fn5+FJnNGPNrntlgNpsxm80XFZ+iKM1fVmYmv+49QGJiYp2eCy46d9wcNS1qmvhvv/2GVqtlwoQJ9m3h4eFMmjQJsK3lNXXqVHr16kV0dDQff/wxYEtC4uPjGTVqFJ06dWLs2LGUF+zdtm0bAwYMICYmhmHDhpGaauswiY+PZ/LkycTGxvLee+/xww8/0Lt3b3r06MHgwYNJS0sjKSmJuXPn8s4779grGc+YMcNeyHXnzp306dOH6OhoRo4cSU5Ojv3aTz/9NHFxcXTo0KFSBeRy27ZtIy0tzb4iemNo7GniK4HxwKtlf644a/ujQojFQG8gT42/qT8LFizglf/8h7u6tq1TF1V5Ce+srKwajyv/H1JRlJYtLT2Npes2ccvu3XV6LpQX+8vOzqakpASNRtOAUVa2bslBMpNrbqmuK78wPVfd1qHa/YmJiTVWbZ4/fz6enp5s2bIFs9lM//797cnBjh07SExMJDg4mP79+7NhwwZ69+7NpEmTWLFiBf7+/nzzzTdMmzaNzz77DLANVSiv1J2Tk8OmTZsQQjBv3jxef/113nrrLSZMmIBer7dXn167dq09nnHjxjF79mwGDBjA9OnTmTlzJu+++y5gaxXavHkzq1atYubMmfz6668VPktpaSlPPPEEX3zxRaV9DanBEhwhxNfYBhT7CSFSgBewJTZLhBD3A8eB8gpxq4DrgcNAIXBvQ8XVEh07doyDR4+i7dGhVgttlitPcHJycpBSVlsB2cfHp17iVBSlecst+1bv5eVVp+eCi94ddxdn/Hx9ycvLa5HPlIkTJ7J+/Xq0Wi1btmxh9erV7N69m6VLlwK2GkGHDh1Cq9USFxdHaGgoAN27dycpKQkvLy/27t3LkCFDAFsLUFBQkP36Y8aMsb9OSUlhzJgxpKamYrFYiIiIqDG2vLw8cnNz7Qtsjh8/ntGjR9v333LLLQDExMSQlJRU6fyPPvqI66+/3h5zY2nIWVR3VLNrUBXHSmBiQ8XS0mVkZOCuc0Or1aItqxhaG8OHD+fPJV+yeelXFJvNOLlUXXr9lVdeAeDZZ5+tl3gVRWmecssK9Xl5edXpueCi09OvXTgfLF7aJMlNTS0tDSUqKorvvvvO/v7DDz8kMzPTvkCplJLZs2czbNiwCuclJCTg7Oxsf6/RaCguLkZKSVRUlH018XPpdDr760mTJjFlyhSGDx9OQkICM2bMuKjPUh5PeSzn+uuvv1i3bh0fffQRRqMRi8WCXq9v8LGbajXxFiAzMxMPna7W61CV02q1eJY9bGqaSWWxWLBYLBcdp6IozVt+vq2khJeXV52eCy56PVDzc+ZyM3DgQEwmE3PmnCn7Vlh4phbQsGHDmDNnDlarFYCDBw/WuO5fx44dycjIsCc4VquVxMTEKo/Ny8sjJMQ2UXnBggX27e7u7hgMlcuCeHp64u3tbR9fs2jRIntrTm18+eWXnDhxgqSkJN58803GjRvXKBNT1FINLUBGRgZ6F+c6jb8B2yKab34yH7e0TExGA+6+flUe98ILL9RHmIpSK0KIMGAhtjITEvhESvneOcfEYxvjd6xs0/dSyhcbMcwWp6S4GGOh7R9gT0/POj0XnHV68gpNPDDpXzz/n5eIj49voCgvHUIIli9fzuOPP87rr7+Ov78/Op2O1157DYAHHniApKQkevbsiZQSf3//GqfRa7Vali5dymOPPUZeXh7FxcVMnjyZqKioSsfOmDGD0aNH4+3tzcCBAzl2zPa/yU033cSoUaNYsWIFs2fPrnDOggULmDBhAoWFhURGRvL555/X3y+joUgpm+1PTEyMVM7v8ccflzf3i5PfvvTvOp1nNpslIK/t0kGeSNzdQNEpl6kG+/8eCAJ6lr12Bw4Cnc85Jh74X12uq54nF6cgL1e+eut1cvWXC2RxcXHdzs3NkdNvGiQBOWfOnAaKsKJ9+/Y1yn2Uuqnmv8sFPStUF1UL8Pbbb3Njzy51GmAMtm8E7no9BWZLjetRzZo1i1mzZl1smIpSK1LKVCnl9rLXBmA/1RQGVRqPyWjEUeNASFgYGo2mTs8FZ50eN60WoEXVwlEalkpwWojC/Pw6d1GBbYaULcGpvm/carXa+4kVpTGVLQfTA/i7it19hRC7hBA/CSEqt9OjKqPXJ3OhkV3JqSz8zlaJty7PBY2jI646HTo3V5XgKPVGjcG5zOXn59O2bVsGtgmm94jR5z/hHP7+/hhOnqhx8J8ag6M0BSGEHvgOmCylzD9n93YgXEppFEJcDyzHtphvBVLKT4BPAGJjY+tcWV05w2w0svfkadYvX8mr775f5+eCi06Pp07Xoor9KQ1LteBc5jIzM8nMzEQILqgFJ7BVK0pKS8+7oriiNCYhhBO25OZLKeX35+6XUuZLKY1lr1cBTkKIqkfJK/XCVGCkyGLFy8ur0j5zUTG/LdzPly9s4ujOqltoXPR6wgL88fSs+3NKUaqiEpzLXHkVYjdnbZ3H4AD88MMPPH7T0Bq7qF5++WVefvnlC45RUepC2GodzAf2SynfruaYVmXHIYSIw/asq7kkt3JRTAUFFFmteHt7AxWfC6vnJfLPptOUlkp+mruHpD2VW2lcdHom33pjhWnTinIxVIJzmStPcHRaJ3RlD566EELgotfX2EVVXFxc4wJuilLP+gN3AwOFEDvLfq4XQkwQQpQv7DMK2CuE2AW8D9wupVRdUA3IXGCkyFqMj68vcOa5kJFs4ERiFnE3RXDn9N54B+n446sDWEwVnxkuevfzLuyrKHWhxuBc5uwtOFotOq+KCU5Bnpl960/h3UpH2x7+CIfKRQB/+ukn5v78O5Nv9632HmoMjtKYpJTrgRorVkopPwA+aJyIFLB1UZmtxXiXFQctfy6s+SwRJ2cNXQeEoHFyYODdnfju9W3sSUgh5to29vNd9HrWbtvBp/37s379+joVJW2u0tLSePzxx9m0aRPe3t5otVqeeuopRo4c2STxJCQkoNVq6devHwBz587Fzc2tXlYU12g0dO3aFYDWrVuzcuXKi77m+agE5zIXEhLC4P59cXdxxs3zTIJTWipZPS+RU4dyAegzIrLCw6ZccnIyWw4cJjNTzWxQFKV65gIjs+4exf3vnykQV1JcytGdGXTs3QpnNycAWkV6EtbZh92/pdB9UGs0TraOBGednrw8Axt3JlJQUIC+rLrx5UpKyYgRIxg/fjxfffUVAMePH2/wf/iLi4txdKz6n/6EhAT0er09wTl7pfOL5erqys6dO+vterWhuqguc/Hx8Tx97914+/jg6ORk374nIYVTh3K55u5ORHTzY+uPSeRnFlU6v3zBzezs7Grv8dJLL/HSSy/Vf/CKojQbpgIjbnp3+7pEL730Eq+8/DrFllJaR1VsAe4xuDWF+RYObD5t3+aid8fV0baKeEuYSfXbb7+h1WorJBHh4eH2VdhLSkqYOnUqvXr1Ijo6mo8//hiwJSHx8fGMGjWKTp06MXbs2PLilmzbto0BAwYQExPDsGHDSE1NBWz/DkyePJnY2Fjee+89fvjhB3r37k2PHj0YPHgwaWlpJCUlMXfuXN555x26d+/OunXrmDFjBm+++SYAO3fupE+fPkRHRzNy5EhyyhZWjY+P5+mnnyYuLo4OHTrYl3O4FKgWnMuclJLC3JxK3VP71p+iVaQHnfsHE3aFD19M/4vdv6Vw5W0VZ9LaE5zc3GrvUVJSUu9xK4rSvGRnZrLo9w102LiRfv362Z4LpRIhIKRjxedP6BXe+IXp2bnmBFf0DUI4CFx0enQuZ4r9tWnTptFi//2/n5B+/Gi9XjMgPJJr7nmo2v2JiYn07Nmz2v3z58/H09OTLVu2YDab6d+/P0OHDgVgx44dJCYmEhwcTP/+/dmwYQO9e/dm0qRJrFixAn9/f7755humTZvGZ599BtjWDNy6dSsAOTk5bNq0CSEE8+bN4/XXX+ett95iwoQJ6PV6nnzySQDWrl1rj2fcuHHMnj2bAQMGMH36dGbOnMm7774L2FqFNm/ezKpVq5g5cya//vprpc9jMpmIjY3F0dGRZ555hhEjRtTp93khVIJzmbvzzjvZlPAbrz9yv31bZoqR7FMFXH27bQVddx8XwqN8ObQtjX6j2uFw1lic8gQnJzcPWVqKcKjc6KfG4CiKkpGRxW87dnPv0aP069ePF154ge9e34psA86uFf+pEULQfXBrfv18H8f3ZtEm2g9XDw90ZdWMW0ILzrkmTpzI+vXr0Wq1bNmyhdWrV7N7926WLl0K2BbIPHToEFqtlri4OEJDQwHo3r07SUlJeHl5sXfvXoYMGQLYvngGBQXZrz9mzBj765SUFMaMGUNqaioWi4WIiIgaY8vLyyM3N9e+wOb48eMZPfpMXbVbbrkFgJiYGJKSkqq8xvHjxwkJCeHo0aMMHDiQrl270rZt2zr+lupGJTiXuczMTBykROflY992aMtpHBwE7WID7Nva9wrk2K5MUg/lVvi25efnh7+PD1KWYjEV4eyma9T4FUVpHnJzbV0W5XVsrJYS0pIM9BzWusrj28UGsGnFEbavPm5LcNw98HB1pkd0V3s3V2OpqaWloURFRfHdd9/Z33/44YdkZmYSGxsL2FrfZ8+ezbBhwyqcl5CQUOH3o9FoKC4uRkpJVFSUfTXxc+l0Z57dkyZNYsqUKQwfPpyEhARmzJhxUZ+lPJ7yWKpSvnp5ZGQk8fHx7Nixo8ETHDUG5zKXlZWFi6MGt7O6qI7vzSa4gxeueq19W5toPxydNRzell7h/ICAANYu/ZoerUOqncL5n//8h//85z8N8wEURWkW8vJtxaTLC/299spr5HruJSDco8rjNRoHug9qTerhPE4fy8PNwxMfnRtfzfmAgQMHNlbYTWbgwIGYTKYKdX8KCwvtr4cNG8acOXPsy10cPHiQgoKCaq/XsWNHMjIy7AmO1WolMTGxymPz8vLsCceCBQvs293d3TEYKq876Onpibe3t318zaJFi+ytObWRk5OD2WwGbF+6N2zYQOfOnWt9/oVSCc5lLjMzE1dHjX0MjsloJeukkZAOFfvEnbQaQjt6k7y/8mBiF7277dxqauGUlpZSWlpaz5EritJcyNJSDGVfgMpbcEpKSyh2MuIXVv1sqCv6B+Hs5sjO1SdwdbclQkWGc1fduDwJIVi+fDl//PEHERERxMXFMX78eF577TUAHnjgATp37kzPnj3p0qULDz/8cI31xrRaLUuXLuXpp5+mW7dudO/enY0bN1Z57IwZMxg9ejQxMTH2YQgAN910E8uWLbMPMj7bggULmDp1KtHR0ezcuZPp06fX+rPu37+f2NhYunXrxjXXXMMzzzzTKAnOBS1Bfqn8xMTEnGfhdcXN1VVe3SFCJv75m5RSyiPb0+UHD6+VJw/lVDp2568n5AcPr5X5WUUVto+9bbQc0rm9PL5nZ2OErFwemvz5UNcf9Ty5cEUGgxzbp7t0dtbKpKQkKaWUv3+xX376+B+ytLS0xnP/WnZYfjBhrcw6mS/fvO0GGds1Sj711FMNHvO+ffsa/B5K3VXz3+WC/p9WLTiXsdLSUu4aM5p2Ab7oymrgnDyUg6OTA4FVNBuHdrIdk/JPxVacfw4d5nhWDiZj5aZLRVEUU4GRHq1D2Przj4SHhwOQkWxrvTlfwb6u14TioBHsTjiFi05PZlY2hw4daoywlcucSnAuYw4ODjz+4P10Dg60L9Nw6lAugZGe9uJaZ/MJ1uHqoSV5f06F7f7+/hSYLdV2UakxOIrSspUvxuuis3VHlZaUcih/A3uz19Z0GgA6T2c69Qnin42pOOvccXdzJSNDFRZVLp5KcC5jVquVzNRTSCnReXlTbC0h62QBgRFVD/oTQhDS3ovUI7kVtgcEBmI0W6odZKzG4ChKy2YyGvn76AlmvPEWALnpRZRoCilxMNXq/O6DwygpKaW01Bmds7ZFThNX6p+aJn4ZW79+PQNH3cH/DeyHi05PRrIRWSrxD3Ov9pxWkZ4c3pZOQa4ZnZdt6p9/QACFFqv9W9q5VB0cRWnZTAVGkjJzSElZD0BuWiE+Gb0Z/Wxsrc73bqUjItqPQ5s0uDk6cuh0akOGq7QQTdKCI4R4XAiRKITYK4T4WgjhIoSIEEL8LYQ4LIT4RgihPf+VlJqUfwvy8/NDODiQmWxLUGqa1RAYaWvdOX0sz76tffv2BHl7kp+TU91piqK0YOZCI6biYvsMqtw023RnrwC3Wl+jx5DWyFIXgtzdGThwoH35AUW5UOdNcIQQGiHEP/V1QyFECPAYECul7AJogNuB14B3pJTtgBzg/uqvotRG+UriAQG2gn4ZyQacXDR4+rlWe45/qDsOjoK0o2emaj788MO8cNdoSi3mKs9RY3AUpWUzGY2YrMX2Gji5aYXk+uzitTdfqfU1WrX1xM3Lkx4hASz+enGLWE1caVjnTXCklCXAASFE1eUoL4wj4CqEcATcgFRgILC0bP8CYEQ93q9Fsic4ZeW6M5MN+IXqEQ7VPzg0Tg74h7lXaMEBcNHpVB0cRVGqZC4oS3DKJjPkphVS4lhUp+eCEIKwK0JAFnN05+XfRZWVlUX37t3p3r07rVq1IiQkxP7eYrE0dXiXhdqOwfEGEoUQmwF7KUUp5fC63lBKeVII8SZwAigCVgPbgFwpZXkVoxQgpKrzhRAPAQ8BtG5dnznX5ScrKwtnR0e8/PwpLZVkphjp3D/4vOe1ivRk758nKSkpRaNxYN++fTz/+dfcHt+P0VUcr8bgKErLZiow4ubibF8fKTe9kKu63cI1d3Wq03VCOgbx43fZ9Ly6Mz+tXkX//v0bItxLgq+vLzt37gRshffOXuQSbAtYOjqqYbIXo7a/vefr64ZCCG/gZiACyAW+Ba6t7flSyk+ATwBiY2NVJ20NBg8exMG1P6Pz8iYvvZBiSyl+NQwwLhcY4cGutclkpRgJCPfA0dGRo6dSSctQMxsURanMVFDAU6Nv5r53P8ZUYKXIYMUrsPbjb8rpvDzRajQYCvM5fjSFyzi/qdI999yDi4sLO3bsoH///nh4eFRIfLp06cL//vc/2rRpwxdffMH777+PxWKhd+/efPTRR2g0mib+BJeWWiU4Uso/hBCBQK+yTZullOk1nVODwcAxKWUGgBDie6A/4CWEcCxrxQkFTl7g9ZUyV/fty/5Okeg8vclIthXp829d/QDjcq0ibQMFTx/NJyDcA39/fwBy8vKqPH7mzJmAaslRlJbKXGC018ApH2D8w4ZFrNxYXKfngqu7Jzpn2/ySxK1H4e76j7U68fHxlbbddtttPPLIIxQWFnL99ddX2n/PPfdwzz33kJmZyahRoyrsS0hIuKA4UlJS2LhxIxqNptpFMPfv388333zDhg0bcHJy4pFHHuHLL79k3LhxF3TPy1WtEhwhxG3AG0ACIIDZQoipUsqlNZ5YtRNAHyGEG7YuqkHAVuB3YBSwGBgPrLiAaytnOZCYSJHFis7bm4wTRhwcBd5B518NXO/tjM5TS9qxPLgmFE9PTzQODuQZjMjSUoSDKp+kKMoZBfl5vP39/9D26EvXsCsBkJTU+Tp6bx90WluCcyQxuV5jbC5Gjx593paYtWvXsm3bNnr1srU5FBUV2SeTKGfUtotqGtCrvNVGCOEP/MqZQcG1JqX8WwixFNgOFAM7sHU5/QgsFkK8VLZtfl2vrVR0651j8aaE+7y82bfRgG+wHo3m/MmJEILASE9OH7PNpHJwcMDTw50CswVzYSEu+oqtQKrlRlFatpzsbHYfPkZqairhrkUATJs2DUenunWZuHl54+SowUXrTHp6OtmpBfjU4ktZfaipxcXNza3G/X5+fhfcYnMune7M53V0dKwwUNtkshVOlFIyfvx4Xnml9rPUWqLafhV3OKdLKqsO51YipXxBStlJStlFSnm3lNIspTwqpYyTUraTUo6WUlY9J1mptZzcXNycnXDz9CIzueZVfc8VGOFBfkYRhfm20fx9Y2Px0blWO5NKURqLECJMCPG7EGJfWT2tf1VxjBBCvF9WV2u3EKJnU8TaUuSWdV97enpiyDLh5qmtc3ID4OjkhIu7B0P79ibMvz2Ht6bVd6jNSps2bdi+fTsA27dv59ixYwAMGjSIpUuXkp5u+2c5Ozub48ePN1mcl6raJik/CyF+EULcI4S4B1try6qGC0u5WCUlJRiMRnRaLVK6YSqw1ljB+FytypZzSD9ua8V595WXGXhFuyoX3Jw5c6Z9HI6iNIJi4AkpZWegDzBRCNH5nGOuA9qX/TwEzGncEFsOKSX5ZyU4+VlFePi6XvBzQe/tw703DGHkDaM5vC29RRf8u/XWW8nOziYqKooPPviADh06ANC5c2deeuklhg4dSnR0NEOGDCE19fKfWl9XtR1kPFUIcSu2wcAAn0gplzVcWMrFysnJQUqJp7ue3DRbK0xtZlCV82/tgRCQdiyfNl39cClrNlUtOEpTk1KmYqudhZTSIITYj62sxL6zDrsZWCht/zpuEkJ4CSGCys5V6pGlqIiisrotHh4epGSZCIzwtBX7uAA6L28KcrOJGuTLhiVHyDpZgF9o7Vufm6PqBhO7urqyevXqKveNGTOGMWPGNGBUzV+tJ9lLKb8DvmvAWJR6VF7kz9vbm4xkIwjwDal9X7aTswafYD3pSbYWnA/mfcZ/f/6DGydXTnDUGBylqQgh2gA9gL/P2RUCnD1Ktby2VoUER9XVunjmAiNCCNqGt8bXx5f92Vm07+XCC/df2HNB7+3Du19+Q8qX3/PU9Z9zaGvaZZ/gKA2jxi4qIcT6sj8NQoj8s34MQoj8ms5Vmpavry/3XjeYqPbtyEw24BXghtalbkWjAiM8SEvKR0qJFA6kG4wU5qv/7MqlQQihx/ala7KU8oL+YkopP5FSxkopY8vLISh1Yyow0tbfl5+++Zo2Ie2RpRIP3+qXgzkfnbcPjqUlZGRkENrRi6M7MuoxWqUlqTHBkVJeWfanu5TS46wfdymlR+OEqFwIPz8/ruwQQdvISDKSDfjXYYBxucA2HpgLi8lLLyIwKAgpISPtdKXj1BgcpbEJIZywJTdfSim/r+KQk0DYWe9Vba0GYi7rtnbW6TFk2Wb5uPu5XPBzQedlmypeWFhIYAcduWmF5JwuOP+JF6Alj++5FNX3f49GX2xTaRypqakcOpaEo6s7xmxzncbflAssG2iclpRPYKtWttdpLXtWg9L0hG0VxvnAfinl29UcthIYVzabqg+Qp8bfNAxTgZFNR04w6p57yUm3JTsevi4XfD29jw96F1stHLdWtinSx3bVfxV1FxcXsrKyVJJziZBSkpWVhYvLhf/dOdd5+yyklCVCiANCiNZSyhP1dmelQX02bx6vrlxD3yG21aPqMoOqnHeQDkdnDWlJ+fZqxpnplQtYqzE4SiPrj63G7R4hxM6ybc8BrQGklHOxzfK8HjgMFAL3Nn6YLYOpwEiGsYA9x09RkGsFAXpvlwt+Lui8fNCXVTMutOTh39qdY7sy6TksvD7DJjQ0lJSUFDIyVBfYpcLFxcW+nll9aPTFNpXGkXryJE4aDY7CtuxCXWrglHNwEAS0diftWD7derShV4e2OMi6VydVlPokpVyPraJ6TcdIYGLjRNSymY1GTFYrnh4eGHPM6Dy0aBwvvNq53tuHAA89428bhZ+fHyLagS0/HqMw34Kbh7be4nZyciIiIqLerqdcehp9sU2lcaSdTkXnrKXI6IjOyxlX9wt7MAS28WDX78m0jejJ42NuQVPF6rZqLSpFablMBQWYrCV4enlhzDah97F1MVzoc0Hv44O/uzs33nIzbdu2xUNrYMv/jpG0J5PO/YPrPX7l8lWrNFtK+QeQBDiVvd6CbakF5RKVnp6O3lmLMUdzQQOMywVGeFBaLMlMMeLq7kFRftULbiqK0jKZC41YSkvx9PTEmGNG7+18UdfTODrh7ufH6RPHycvLwy9Uj97HuUHG4SiXt9outvkgtloRPkBbbPUk5mJbKFO5BGVmZqJz1mLMcaBTv7qPvykX0ObMQOMHX3mL7mHBjD/nGNVyoygtl8loJMjXh46xsRhzTIR38QXO/1woLSrC+MefWE6cwNHHG/2AATiWjfXzDGjFXdNeZMLJTN555x0iov3Zv+EUVksJTtq6LwGhtEy17aKaCMRRVkxLSnlICKGWLr2EPTDqFg5tWofE9YIGGJfTezvj5qklLSkPR42GXIMBKSW2iSyKorR05gIj914/lFH/fp35T6w7bwuOLC4m+4svyPxoDqVn1dUSrq4EPvsM3rfdhmdAK9xdtPZZmxHd/NiTkELK/mwiuql6RUrt1DbBMUspLeX/qAkhHAE1t+4S1rl1CE6pEQjhcEEDjMsJIQhs40F6kgEvT0+MhQasZhNalzOFvNQYHEVpuUwFRpx1Oow5tho4eu/qx+AUZ2VxcvLjFG7Zgu6qq/C9/35co7tiSU4m/bXXOD39BSgpwSuwFW5OjqSdttXdCm7vhdZFw7FdmSrBUWqttkPd/xBCPAe4CiGGAN8CPzRcWMrFsFgsrN+8mXyzwEXnhPtF1KQA2zic3LRCvL28KTBbMBkqL7ipKErLZCoo4KmP5vPOO+8AoPepugXHmprK8bF3UbRnD0GvvkLrTz9B16c3Dm5uuHTsSNinn6KPj+f0f17CpaAIvbMzp1NPAaBxdCC8iy9JezIpLVXfrZXaqW0LzjPA/cAe4GFglZTy0waLSrkop0+f5qXPv+SO/oPo2tfjoruTysfhuOs8KTBbKDLk4+F/podStdwoSstVZMgnKfU0OVm5BLuAe1kLztnPhRKjkeSHHqY4M5PWn83HrWfPStcRGg0hb73J0ZuGU7DkW/QuWo6kn6lR06abH4e2ppOelE+rSM+G/2BKs1fbFpxJUspPpZSjpZSjpJSfCiH+1aCRKRcsM9M228DV0cNejfhiBIR7gIAeHePoHhZMkUGtR6Uoiq36bH6ebWalk4MrDg4C1ypq1aRO+zfmo0cJnf1+lclNOQedjsDn/43TkWNEhwZxz+hb7PtaX+ELAk4kZtX/B1EuS7VtwRkPvHfOtnuq2KZcAtLLBubpXH3qJcFxdnXEO9CNIN0g/PP2VEpw1BgcRWmZis1mjEVFADjigpuXFgcHW4tx+XPh8d59MPzyC/5TpqDr2/e813S/5ho8Y3sRVZhBVM9o+3YXvRMB4R4k788m7qbIBvg0yuXmfKuJ3yGE+AGIEEKsPOsnAchulAiVOjuZkgyA3sWXwDb1syZqYBsPslNLsBaXYMzNrZdrKorSvBUZDZisxQA4lrqi96o83i9t1ixcOnfG977ar5YR8OhEtMZCdv6eQEHBmYU2W3f2Ie1YPqYC68UHr1z2ztdFtRF4C/in7M/ynynAsIYNTblQqSkpAAQGhuCic6qXawZGePB34iae/f5nEvftq7DvhRdeUK03itICmYwGHB0cuKZ/f9y1vui8znRPvfDCC0yKiKQ4PZ2Ap55CVFEFvTpuvXpx2mRl6uLv2fz33/btYZ19kBJOHsip18+hXJ5qTHCklMellAnAYGBdWRXjVCCU86wFozSdgf36cP9VvQhr26berhnQxgN3Fy8ATp9WizIrimIr8hfgoWfBxx8R6BaJzvPMDCppsZD16ae4xcWh69O7ztdu28M2VufI2l/t2wIjPHDUOnDyUO5Fx65c/mo7yPhPwEUIEQKsxraS738bKijl4jiXargiKIDg9iH1dk3fUD1e7rYKpelpFVcUnzlzpr2/XVGUlsNUYCsZoXFyw2IqQed1JsH5z8svs2TA1fg+cP8FXbvTMFsnwaHf1tq3aTQOtIr0JPVw7oUHrbQYtU1whJSyELgF+EhKORqIariwlIux+uffOJyeRUin+lt2XqNxoE172/UyMtWaMIqi2Lqo/j56gp5X9sdYlIfO80wXldZiwdFqRde//wVdu23X7ggBKSknKT7rmRPUzovMFCPmQjUOR6lZrRMcIURfYCzwY9m2C14QRAjhJYRYKoT4RwixXwjRVwjhI4RYI4Q4VPan94Vev6VbsGwJaxIPE9y2fit+RnQKxtFBQ1ZOxf5vNQZHUVomk9FIgdlCWkY6WicX3MpacKynTnHzsuXcF9Yaobmwfyq8W7VC5+xMRkkx+atW2bcHt/cCCalH1MK/Ss1qm+BMBp4FlkkpE4UQkcDvF3Hf94CfpZSdgG7AfmzFBNdKKdsDa8veKxcgz2DA3dUNjVPN/3mllBRu28bpWbNIff55cpcupcRYUO3xgZEeDI3uR6Svyj0VRbG14JhLSnFydMJJo7WPwTGsWQOA5003XvC1HRw03D04nj4d25K3YqV9e2CEBw4aQephleAoNatVgiOl/ENKORz4UAihl1IelVI+diE3FEJ4AlcD88uubZFS5gI3AwvKDlsAjLiQ67d0xdYSDEUFeLrXPD28tLCQU1Of4vjYu8hd8i2GNb+S+u/nOXrjjRRs2lTlOYFtPBnSdSCRXu5IeaZcuhqDoygtk8lowIJAp3NHCGEfg5O/Zg1LR4/ilf/+96Kuf+PQwQS3DsGUmIj5yBEAnLQafEP0pB9XBUeVmtUqwRFCdBVC7AASgX1CiG1CiAsdgxMBZACfCyF2CCHmCSF0QKCUsnx6zmkgsJpYHhJCbBVCbM3IyKjqkBYt9UgOhWYTvr4+1R4jrVZSHn2U/FWr8HtsEh02bqD9XxsJX7QQBzc3Tjz4EIZff610noefC6UaLdkGA5aiQvt2BwcHHBxq2xioKMrlwmQ0Yi4pRe9mm92kddFQnJlJ0bbtOJaWXvRzwersxt6UFIodNeStPLP8oX+4OxknDBW+aCnKuWr7t+9jYIqUMlxK2Rp4ArjQtagcgZ7AHCllD6CAc7qjpO1vbZV/c6WUn0gpY6WUsf7+alXZc+3ffgwJBAW3qvaYtFdepWDjXwS99BL+jzyCg5sbQgjcevWizeKvcel8BScfn0LRzp0VzhNC8L9dq3l/7QYK83Lt259//nmef/75hvlAiqJcskxGA53atKZ/90HoPJ0RQmD840+QksfvuuuinwvLfv+D+eu2UNIrhrwfViJLSwEIaO2OubCY/Myi+vgYymWqtgmOTkppH3NTVhtHd4H3TAFSpJTl1ZuWYkt40oQQQQBlf6ZXc75Sg7wUC1OGXsX1wwZXub/gr7/I+eorfMaPx+uWkZX2azw8CJs7F8dWrUiZ9BjF2RULVrcKCsJoNpN9WrWeKUpLZzIaGDnoGsYMesTePVWwcSMaPz+cO3W66OuHhkdgshZjvKIjxadSMe3ZA5StjwekHzdc9D2Uy1dtE5yjQojnhRBtyn7+DRy9kBtKKU8DyUKIjmWbBgH7gJXY1ryi7M8VF3L9lqykpJTMpHSCvTwIj6i8Vou0WEh9YQba8HD8H59c7XUcvb0J/WA2Jbm5nH5hRoVm4PDI1kgJ/+w8aN+mxuAojUkI8ZkQIl0Isbea/fFCiDwhxM6yn+mNHWNLUVRgxFmnoyDXjM5TiywtpeCvv9D17cuLL7540c+F1pG259hJIcDR0T542SdYh4OjIEMlOEoNapvg3Af4A98D3wF+Zdsu1CTgSyHEbqA7MAt4FRgihDiErXLyqxdx/RYp47iBlLQDbDx8nFLHyiv65iz+BuuJEwROew4Hl8prxpzNpWNH/Cf/C8OaNRhWr7Fvbx/VDoAj+47Yt6kxOEoj+y9w7XmOWSel7F7282IjxNQimYwGxj43g8//9zZuXs6YDx6kJDsbXb9+9fJcCAoKAuDEiWPo+vQhf/UapJRoHB3wC9GTkawSHKV6NS4OIoRwASYA7YA9wBNSyouuriSl3AnEVrFr0MVeuyU7eTCHQ6m7+H77XmY6V0xgSouKyJwzB7e+fdBddVWtrudzzz3krfyB9NdeQz/gahxcXIjo2BaAlOMn7Mep8TdKY5JS/imEaNPUcbR0xRYLVpOJfGMBGpzQeTpT8NdvAOj69uH5kSMu+h6Bgba5JieSknC/+wFOT38B88GDuHTsiE+InuN7sy76Hsrl63zp9QJsicge4DrgjQaPSLlgpw7lYi611YZoHdm2wr68FSsoycnB/9FHEaJ2y4gJjYbAac9hPXWKrPnzAYiK6sLImG7ohZOawaBcyvoKIXYJIX6qacanmpV54UwFRizFJZSUlODmrEfnpaVo1y6cgoNxalX9JIe66NSpE7Oe+Bd+jgK3+AEghL1F2TdYR1G+hSKDpV7upVx+zpfgdJZS3iWl/BgYha1+jXIJKi0pJfVwHkUl+bg4OeHufaYYnywtJfu/C3Dp2hXXnj3rdF1dXBzu115L1qfzsJ46RUBAAENjYnB3csSQZQLUGBzlkrMdCJdSdgNmA8urO1DNyrxwJqOBIqutQd/N2R2dpzOmPXtw6doVqJ/ngoeHBzfdeCN6rROFpSW4xcRgWL0asI3DAcg+VX1xUqVlO1+CY++OklIWN3AsykXITDFiNZdgLMrDw821QiuNMeEPLElJ+NwzvtatN2cLnPokSEn6u+8CkC9LyTSc5vQxW2uRGoOjXEqklPlSSmPZ61WAkxDCr4nDuuyYjAaKLLZ/Ily1elwwYT15EtdoW4JTX8+F/SeSScrMJu90Ku5Dh2I+dAjzsWP4BusByFIJjlKNGsfgAN2EEOXlIgXgWvZeYCtXU3O5XKXRnDqUC0CuMQ8fz4r/WbL/+18cg4LwGDr0gq7tFBKC911jyf7sc/wefpg3vl1GG29frj2aT4derdQYHOWSIoRoBaRJKaUQIg7bFzk1WKOemYxGXJycuHXorbTybI1Dsm1mpUsXW4JTX8+Fl958B2tmGvennSZkyGDSZs3C8Ouv+D7wAM46R7JOGevlPsrlp8b0WkqpkVJ6lP24Sykdz3qtkptLyKlDuXj6u/J/1w3iqXvusm837d9P4ebN+Nx1F8LJ6YKv73v//QhXVzI//BBfLy8MpgLSklSpdKXxCSG+Bv4COgohUoQQ9wshJgghJpQdMgrYK4TYBbwP3C7VgLF6Zyow4q1zZcKYJ2gT3I7if/aCELhEXWiR+6qFhoVhMFvITTuFU1AQLlFRGNf+hhAC32A92SdVgqNU7XwtOEozIEslpw7nEtnNn5xkI20iIuz7cpd+h9Bq8Rp160Xdw9HHB5+77ybrk0/wcddzPDeH9BO5lFhLeWnWfwDUiuJKo5BS3nGe/R8AHzRSOC2WyWjAWlKCwVCCzssZ0569aCMj0ehtY2PKx99c7HMhODiYDWYLuWmnAXAfPIiM92djTU/HO0jH4a1pSCkvqPtdubypgROXgezUAswFxXi0ghWbd3AiKwewFfbL//FH9IMGovH0vOj7+N57Dw46Hd5mC0aTmVJrARkpBjQaDRqN5qKvryhK82EyGtl0NJlbJl9FiWMRRXv34tqli31/fT0XgoODyS8sIuvUSQD0gwaBlBh/T8ArwBVzYTGmgouuXqJchlQLzmWgfPxNUelp1u4/wsAs2/IKxj//pCQ3F68RI+rlPhovL3zG3Y33q7Mwmi2UlBhIO5rPv//973q5vqIozYfJaMCKrdXE18uNksxM+wwqoN6eC8HBwUgpSTlxAiklzu3b4xQWhmHtr3hNGghAbloRrvrKxU2Vlk214FwGTh3ORe/tTHrGcQDCwtsAkLt8ORo/P3T9+9fbvbzvvptrff24q28PtK5mNQ5HUVook9GAWYKrVoebxVZR2LVrl/OcVXc333wzX7z/Ni4CCvNyEULgPmgQhX9twsPdlmDlphXW+32V5k8lOM2clJJTh3IJaufFiSRbgtMmsi3FOTkY//gTzxtvRDjWX0Odo7c3/W4dRXRoEB7uFtKO5ak6OIrSApkKjJiLS3DV6nHKPgWOjhUW2Kyv50KrVq3o068fjhoH8jNtazC7Dx6EtFpx2LcFBwdBbrpKcJTKVBdVM5eXUURhnoXg9l6s/jsZgDbt25P/4yqwWvGsh3Lp5/IcM4aDE1bhqt2N1HXEMcQJHNQkFUVpSWx1cIpxc3bH4dQRXDp0wMHZ2b7fsZZfrIqKi/j52M+sO7mOtMI03J3cifaP5obIGwj3CMdisbDy199Jzs7FkJlBULuOuPbogcbbm4Lf1uLhfyt5qgVHqYJKcJq58vE3we29SEs7jYMQBIe15sTyp3C+4gpcOnas+QIXIEMIPvlzCxN6lNAlbjR33vwQEdGqjpqitCQmo4F+0d3JSAvB4WgiLgO6Vtg/bdq0815j/cn1zNg4g7TCNIJ1wYR5hJFZlMncXXOZu2su10Vcx+Qek3nyuWlc0zGS/AxbC47QaNAPvAbD6jV4jR+rWnCUKqkEp5lLS8rH2c0R71ZujBl4NXFBPhQfO4Zp714Cnnm6Qe5ZvgBeXlE+Akna0TyV4ChKC2MyGhnQsw+nj3fHadN0XLveXqfzv9z/Ja9tfo22Xm2ZdeUserXqZZ/qnVmUyRf7vmDRvkVsPLURH38fjNZi8rPOrBfmPmgwed99j1tpHsnpElkqEQ5qqrhyhhqD08ylJ+UTEO6OEILC3Bz8A1uRt2IFaDR43nhjg9zTy8sLR42GbEBflMovO75SY3AUpQUpLSnBXFhARk4RZmsRWktehRlUUPMYnG8Pfsurm1/lmrBr+PqGr4kLiqtQx8bP1Y/JMZNZOnwpAW4BFLgVkGs2kZ95JsHR9euLcHXF+eQ/lFhLMeaaG+bDKs2WSnCasWJrCdknCwgItxWVXvjjL2w6dIy8FSvRX3UVjn4N06oihMDP24ssiwWP7MM4m3xwuogqyYqiNC+mAlv14MnvvsjP2z7DUeuIc9u2FY5xcnKq8rnwd+rfvLTpJa4MuZI349/ExdGl2vtEeEbw5fVfEhYSRmahgX+O7cRaYqt54+Digv7K/mh2bwQg97TqplIqUglOM5aZbKS0VBLQxpbg/LFnHwcPHaU4PR3PETc36L1b+fuTZTDi5ZSHe94VPHzPYw16P0VRLh0mo5HiklLMVgvujlpcoqIqzdZ87rnneO655ypsyyrK4pl1zxDuEc5bA97CyeH8X4xcHF24JuoaTKYSSvIKeGTtIxRYbQts6gcNwvnkAQA1DkepRCU4zVh5DZqAcA8KDfkUmMz4lpbi4OGB/pprGvTeUydO4JYeUQTG2+pepPy5r0HvpyjKpcNkNFBktbWkeMjSChWMa/L6ltfJM+fxxtVv4ObkVuv7zZw5kyWz38PFqmFHylbu/fleMosy0Q8YgLbEiEaUqFo4SiUqwWnG0o/n4+apRe/tzNGDB5CAT34eHtdfV2G6ZkPo3acPQV4euA+IJTNwI8v3/9yg91MU5dJhMhowlSc4lFYafwOVx+BsTt3MqmOruK/LfXT0qdvszsDAQCLadwBgVrfpJOUncfequzmlMaCLjUVnzlQtOEolKsFpxtKTDPbxN8cOHgQgqBQ8b27Y7imAPJOVzUeTSc9Kw9XkhmuBOyW5uQ1+X0VRml6RIZ9Ciy3B8RayygrGWq0Wrda2fIK1xMrLf79MiD6EB7o+UOf7JScnM++bb8k0FNBB05p5Q+dhtBq5a9Vd5PW5ApfcZHJS8i7uQymXHZXgNFPmomJy0woJbOMOwOmTKWgdNYT5B+DavXuD3/9IcgpLtu4mcfdurux0JTpDVzKX/dDg91UUpekV5ufh5erKLX0fooOHB06tW1c65tlnn+XZZ58FbFPCj+Yd5dm4Z2scVFyd7Oxs3v7gI07l5ZOflUG0fzRfXP8F7lp3/iW+wa0oA0NeMSXW0ov+bMrlQyU4zVTG8bLxN2UDjDt6ujNr5DAG3313hemWDSWiXTsAjh05gucVAZSKUo7/byNSqorGinK5KzLk4+2u45qut9E2IqzKZ052djbZ2dkYLAY+3fMpV4VcxYCwARd0v+DgYADyTRbyM2xTxcM9wvni+i8IC+9Cuj4NEOSkGS/4MymXH5XgNFNnDzAGyNq9CxdrMT71tHL4+bQu+8aWnJzM0p8XkB24mSyDlqLt2xvl/oqiNJ2i/DxMOJKWewJ9ZKsqj5k9ezazZ8/my/1fkm/JZ2KPiRd8Pz8/P5ycnCiSYChbjwrA28WbT4d+SlG0NwBfLX4Hc4mqh6PYNFmCI4TQCCF2CCH+V/Y+QgjxtxDisBDiGyGEtqliaw7Sjxvw8HfFReeElJKlf67juz0HcQoJaZT7+/n54ajRcCo1FWcXZ5zNPuR7tyd3yZJGub+iKE2nyJDPpkNJvLTkPtyvCK/yGGdnZ7TOWhbuW0h8WDxRvlEXfD8hBKGhoRiLSypUMwZw1jhzz8QXAXDYnc19P99HemF6VZdRWpimbMH5F7D/rPevAe9IKdsBOcD9TRJVM5GZbMA/zDb+pmj7dhLTszicl99o93dwcMDf25v0zCyeeeYZ4qKuIc+nPXk//aIGGyvKZa4wP48iUzFOGi2t+vas8phnnnkGr2u9MFgM/F+3/7voe7Zp04a8IrO9i+psbj6eOAszQQXBJGUe5Pb/3c7ujN0XfU+leWuSBEcIEQrcAMwrey+AgcDSskMWACOaIrbmwFJUTH6mCb9QPQDZ3y4l12IhoGyNqNqQUnIg+wBf//M1r295nZc2vcT729/nx6M/klFY+QFSlXdfmMZNXTtw7PBhXHyLsUonDFp/8lauvKDPpShK82Ay5FNosuCm1aENqrqL6uCxgyzZvoRrwq6hs2/ni77nihUr+GDGvzFmZ1JaWlJpv3eAC4VaX+a7TUCr0XLvz/ey8oh6FrVkTbXY5rvAU4B72XtfIFdKWVz2PgWosq9FCPEQ8BCcGQfS0mSdslXx9A3VU2IwkLl2DfkmM11aVf2gOZup2MTSg0tZfGAxx/OPA+Dq6IqLxoV8Sz4lsgSBoE9QH+7tci99g/tWe62u3bqRvO5XFi5aCEKDH1dhvGIAOd8swbuRBjsritL4CvPzKDRb0TlXX6zvq4VfMYAB3HLTLfVyT3d3d7wCAiktKaEgNwd3n4pL0fi0b0XWqUJcln/N4vmLefKPJ5m2fhoHsg/weMzjODqotaVbmkZvwRFC3AikSym3Xcj5UspPpJSxUspYf3//eo6uecg6aZsp4BeqJ//HVRiLreSbzISEhtZ43saTGxm+fDivbXkNHxcfZvabyZpRa/j7zr/58/Y/2XrXVpbcuIQJ3SZwJPcID615iCkJU6rtzz56Op3ViYdwRuLq5oqHvyuGNrFYjhzBtGtXvX9uRQEQQnwmhEgXQuytZr8QQrxfNp5vtxCi6j4U5YKUFBdjLiigwFKMh8696mNKSzA4GSh0KiTaP7pe7rtnzx5mffQxOQVFVXZTebfSYdW4krf7H5yPnGTukLmMvWIsC/ctZOLaieSZVZ2clqYpuqj6A8OFEEnAYmxdU+8BXkKI8hQ7FDjZBLE1C1kpRrSujui9ncldupTc4Fb46t2I6lK5mihAUXERMzbO4OFfH8ZZ48z8ofNZeN1Cbml/C610rewtLY4OjlzhewWPdH+En279iX/1/Bd/JP/Bzctv5pekXypd959jSaxOPEjsFR156qmnCGnvRYbRFVzdyP3u+wb9HSgt2n+Ba2vYfx3QvuznIWBOI8TUYpiMBgAGdR3CuBvuqfKY35J/Y3XIaoaOHVpv983Ly2PJ8pWkG4wVZlKV8wq0tSaZvMPJnj8fRwdHnol7hhf7vcjm05u588c7OZJ7pN7iUS59jZ7gSCmflVKGSinbALcDv0kpxwK/A6PKDhsPrGjs2JqLzBQjviE6zP/8g2nvXtx69uCp6+J55LF/VTo2ozCD+36+j+8Pfc+9Xe7l25u+JS4o7rz30Gq0PND1Ab6/+XvaerXlyT+e5MOdH1IqzxTSat+xEwDbt2xh//79hHTwwlxUAoNvJX/VKkoLVel0pf5JKf8Esms45GZgobTZhO3LU1DjRHf5K8q3tYR0Coth2I0jqjxmYeJC2sl2BBXU36+9TZs2AGQXFJKfWVULTll32TXDyf/pZ8yHDgEwsv1IPh/2OQXWAsauGsvGUxvrLSbl0nYp1cF5GpgihDiMbUzO/CaO55IkSyVZp4z4hejJ/fZbhFaLyccLvY8vjtqKM+sP5RzizlV3ciTvCO9d8x5TYqbUuYpouEc4nw37jBHtRjB311ye/vNprKW2Eu1hZWOgth87wZIlSwjuYKtFURA1gNKCAvJXr66HT6wodRYCJJ/1vsYxfUKIrUKIrRlVdHsolRXm22ZrHkw9RoGmqNL+3Rm72Zmxk27Hu7H026WV9l+Q/FSCMjfg5OhAXlER+X98Ah/1g7lXwufXw7IJuO+ZjYNGYm3bFQc3N9Lfedd+eveA7iy+cTEh+hAe++0x/jr1V/3EpVzSmjTBkVImSClvLHt9VEoZJ6VsJ6UcLaVU1ZqqYMg2YTWV4O3vRN7yFXhcdy3frVnL+z/9TnFxsf24A9kHuO+X+ygtLWXBtQu4pvWFry6u1Wh5sd+LTO45mZ+TfmbqH1OxllgJCwsDoCA9FZ1Oh7uPCx5+LqSb3HEKb02e6qZSLnFqTF/dFRnysBaX8OHPr7NqbeX/x7858A1ujm64ubmh0+ku/EaWAti+CD4dCG93QrP8IcI9BYaiAgzFLuATAZ5hICUcW4fDn6/gKZLJ27Ya354ajL/9hvF/Z+pytdK1Yt7QebT2aM1jvz3G5tTNFx6b0ixcSi04Si1kptgGGDv/8zelhYV43z2OA8eSOJWVjaOjbQjTgewDPLD6AbQaLZ9f+zlX+F5x0fcVQnB/1/t5Ju4Z1p5Yy5Q/puDh7YHWyYmC7CymTHkcgOAO3pw6lIvnyFsp3LIFy/HjF31vRamjk0DYWe/VmL56ZDx1CoPZ9v0zpHXFLqg8cx6/JP3CjZE38tTUp3jyySfrfoMSK2z+FN7pAisftSU6g2fCQwl0iBuK0PlgcG4Nt38Jd3wN9/0EUxLh2RS8I1uTq+2Kbw9ntB5WUqdPo+STm2DfCiix4u3izbyh8wh1D+Wx3x/jYM7B+viVKJcoleA0M1knjSCgdOUXuPbogaZtBBk5uQSXTRE/kX+Ch9Y8ZEtuhn1Oa4/6nUo/9oqxTOs9jYTkBGb+NZNfvl7Etd06s/H33wEI6+SNuaAYS68h4OBA7rJl9Xp/RamFlcC4stlUfYA8KWVqUwd1ucg/chijyQJAaHhwhX0rj6zEXGLmto63sXXrVrZu3Vq3i6dsgzn9YdWTEBgF9/4Ej2yCKydDcA/+9+OPvPT4o5WqGQPgrMcrMpz8AjdKH04g+J2PKDY5kbrsMPKbcfBOFKx/Fx/hxJzBc9A56nh07aNkFmVe4G9CudSpBKeZyUox4q4DeeIoPnffRW7aaXIKi2gdFkZmUSYTfp1AqSy1N8U2hNs73c7E7hNZeWQlOxwSMYe1Y+0ffwDQOsoXISDlpER31ZXkLVuOLKlclEtRLpQQ4mvgL6CjECJFCHG/EGKCEGJC2SGrgKPAYeBT4JEmCvWyZExJptBs6w4POqvIn5SSbw9+S7RfNB19OvLjjz/y448/1u6ipaWw4T34bChYC+H2r2H8DxDeD86qpyWEwMMvAHNBAeYqJjF4B7pRWioxZJpw7T+UgKlPYTgGmQ73QkBn+PUFeLcrrbYu4oOrXiXXnMujax9V61ddplSC08xknjSizz+OY2Ag7kOGkJ16kpyCIsIj2zBx7UQyizL5cNCHRHhGNGgcD0c/zG0dbmPOr1/wy48/oiu1PfBcdE60autJ0p5MvG65leK0NAo2qlkLSv2RUt4hpQySUjqVzcicL6WcK6WcW7ZfSiknSinbSim7Sinr2Iyg1MSYmU5BWT4QEBBg3741bSvH8o4xuuNowFaYz9296jo5FVhN8O04WDMdOl4PE9ZBp+srJDblNm/ezOMvv0amoaDGqeI5p23FUH3uGY/nyJFkfv0LeT4PwgNrITQOfn+JKxbexqutBpKYlcjrm1+v669BaQZUgtOMWM0l5KUX4XJ8D9533olwcuLUsaNE+vtwwvcU/2T/w5sD3qy3wlo1EULwXO/n8C0MZMO+A7h7nWmladPVj8xkI6JHXzTe3qomjqJcJmRJCUVGI51CI3l+wnsEB5/povr2wLe4a90Z1mYYAFOmTGHKlCk1X7AoF764Bfb/AENfhtsWgqt3tYcXFxezYfMWMowFVXZTnUlwbK07QgiCZs7ALTaW1OeeozBdA2OXwIO/Q2AUA9fN4V6LI0sOLuHnpJ/r+NtQLnUqwWlGsk7ZBhi7l2TjfecdAJizM3n4xgEkX3GSJ2Ke4OrQqxstHo2DholDJwKwZctmdmXYqheHd/UF4MSBfDyH34Rh7VqKc3IaLS5FURqG+fARzA7gqQ9i8NXDcHZ2BiCrKIs1J9YwvO1wXB1dAdi4cSMba2q9LcqBBTdC8ma4dT70e7TKVpuzRUTYWqazCwqrrGbsonNC56m1PysBhFZLyOz3cQxqRcqjj2JJOQkhPW1dYLd/xaQiSTeTmRl/PM2JU6qx73KiEpxmJG3HMQBCh/ZCU9b0e/ToXlKccxjRbgR3d7670WOK6hQFgNHswWO/PUaKIQWfIB3uvi4k7cnC85ZbwWol/4f/NXpsiqLUr6KdOzE7OnI4LZN/knfYt684soLi0mJGdxht37ZmzRrWrFlT9YUsBfDlbZBxAO5cDF1HVX3cOQIDA3F2dia30FxlFxWAX5g7WSnGCtscvb0JmzMXWVxMyv9NoMRgsCVTnW7A6ZHNvNHhLhxKi/n3/+6mZPOntjFBSrOnEpxm5FTCTjQlJkLvux2AfRmJrPp9E59//TdP9XiqSRa3bN++PQC5KcdxKCxm4tqJGKwG2nT1I2V/No4RbXHp0oXc775DStno8SmKUn8MO3ZQonFgzZ6NfLTwDQBKZSnfHviWmMAY2nq1tR/r5eWFl5dX5YsUW+Cbu+DkVlvLTbvBtb6/g4MD4eHh5FuLq6xmDLY1+nJSCymxVkxSnCMjCH3/PczHkkid9u8zOxy1BF0znWd7TmGHsyNfrJ8JC26C3GSU5k0lOM2EJSWF7AwLXm5WnPx8ySzK5JlVk8nOL4QSB9zdajGYrwHo9XpCg4OwFBTwTMSjnMg/wZSEKYR28aLYWkryPzl43XoL5gMHMO3b1yQxKopSP/L27AbAYCrEv2yA8abUTaQYUyq03gD861//4l//Omf5GCltU8CP/AbDZ0Pn4XWOoX///vh4e1eb4PiG6iktlWSnFlTap+vTB//HHsOwejX5P1dcX+/G6Pu4JuwaZvv5czRjt226+t7v6hyfculQCU4zkfH+Bxh1IQRGt8ZSYuHx3x9HZBWRU1hEeOvwJo3t4zlzua5nNL5GF17o9wJ/p/7Nwpw5OOscObQlDY8bbkA4O6vKxorSjJXk5mI8ZauXaDQVEBxsmyL+7YFv8Xb2Zkj4kArHr127lrVr11a8yJZ5sH0BXDkFetx1QXF89tlnPH7PXRiqSXD8w2xf9jJTDFXu973vXlyiokh7+WVKC84kQUIIpvedjotWx/ROvSn1awdL74NlE8BsrPJayqVNJTjNgPnQIdJXr6PY0RW/dv7M+nsWOzN2Mtr3BrILCols165J49uyYwem0EgyTxxnRLsRPNj1Qb47upSSiByO7cygROuG+9Ch5P3vf5SaVb0JRWmOivbsweyooVRKjCYDQaGtSC9M5/fk3xnRbgRaTcW18NavX8/69evPbDi2Dn56GjpcBwOfv6hYPPz8MWZnUVpFjS0Pf1ccnTVkJledlAhHRwKnTaM4I4Os+Z9V2Ofn6sfU2KnsyjnA91c9DAOeht3fwLzBkHn4omJWGp9jUwegnF/G++9T4Gvr295Zsonvkr7jwa4P4rPRSm6hibYXmuAU5ULWYTCmQ0EGlNiqk+LoAjp/cA8Evw6grXk9mfT0dNb8sBLf4bbpoY/2eJRkQzJLd3/GCOu/OLYzg9BbbyH/hx8w/PornjfccGHxKorSZIp27MSidaTIYqVUlhIU1Iplh5ZRIksY1aHyIGEfH58zb4zp8N394NsWbvkEHC78u3XCX1u5Y/LTjOwUzvjZazhm1pJfZKXIWoKLowY3Zw03aTRs2prK316SLiEedAnxJMTL1T5O0a1nD9yvvZaszz/H++67cPQ+MzV9eNvhLD+8nHd2vM81I1bi27qvrSXn02tg5FzopJ5fzYVKcC5xRbt3Y1jzK8W3zYB0eP/4GwxoPYBHezzK/IWPcHWPaK688srzX0hKyPgHjv4BSevg1A7Ir+XyPN5tIKw3RFwNbQeCR8Xy7EOGDOGjjz7iwIEDWIoK0bq68Z/+/+F+4/0YDmezbf0ROkzph1NICHnffa8SHEVphop27qQkMBAXTTGvTPyMW24dzH2b7qNPUJ8qq6ZPmjTJ9qK0FL5/CEx5cPcycPGo+70tJSzfeZIlW5PZuu8Ip0+ncjrIB4/CXHq17YSnqxOuWg0mawkF5mKKLPl4nrYyO+EIlrLJDd5uTnQL86JHmDfdW3sRdf9DGH7+mZxFX+D/2CT7vYQQPN/neW794Vbe2voWs66aBQ//CUvuhsV3wlVPwjXPgYPmwn6RSqNRCc4lTEpJ+htvovH2JsunNfnGE7TyCuCVq16hxGrFkHaKGU88zpU331z9RdL3Q+Iy209m2cJyXuEQ3h8CO4N/J9AH2lpsHF1sUyctBVCYCXknbdM4T++Gw2ttTbUArftCl1sh+jZw8SQ11bbMT6bByOkjh2jdpRsuji68P/B9Xtw7B/1hL46dTsHzlpFkfvAh1pMncQoJaeDfnqIo9UVaLBTu2EFJ35445mTTpUccR+VRThec5qleT1V5TvkyDTd4/ANHf4cb37WtL1UHBpOVT/88yn83JpFvKqZTK3emjujDvxd6cDrfwMtXBXLFVd0rnXesfQar5uxh9fg+5Ooc2HMyjz0puexKzuOPgwcpn9D5Wng0HT5fwOroIXRrH0S7AD0uThoivSK5N+pePt3zKSPajSAuKA7u/Rl+mgrr3rR9QRw1v8aihErTUwnOJcywZg2FW7bg8/xzJG1JJ9v9FO8PfB93rTunDx/EbLHiH17FkgxWEyR+b1uR99R2EA62hKb3w9B+KHidZ40qnR94h0NIzJltUkL6PvhnlS1ZWvUkrHkBut/BqVO26qEZhgJSDx2gdZduAPi6+nL/yFGse/sU7y35nBkj7oAPPiR3+XL8J06sr1+ToigNrGhvIrKoCIu7O2lJ6WRsX0FWQBJ+rn7Eh8VXeU75Qps3iPchaiTE3FPr+5WUShb9lcT7vx0mu8DCdV1acd+VEcSGeyOEYHFUZ9KOHKx2JlWrSE8Aso8b6DksnO5hXoBtMobBZGV3Sh47k3PZ6zGC6IUvsvWDz5jWbgBCQIiXK5H+esJ9r8LT6Qee+3MGnwz8inBfTzTDZ9ueiz8+CZ9cA7d/ZfuiqFySVIJziSq1WEh/40207drxjk8iYaah9O3fw77GVNqxI6xOPMhr191IVlYWGo0GjBnw9xzY+jkUZYNfR7juddvDRR9wnjuehxC2b1+BUTBgqu0bzN+fwPaFRGhG4OvtQb61mNTDByqcFt2hE9uCT+N3oh3PHnybZ/v2Ie/7Zfj93/8hLqIfXlGUxlO4+W/bn8Ch9GyW/TSNzld05uF+D+Pk4FTlOf7+fjhn/wMufnDD2+etUlxuf2o+z3y3m10pefRv58sz115B11DPCsdEdenCnp07yK+m2J+ruxavQDdSj+RV2ufu4kT/dn70b+cH17Tj+D8/8/DRTQx85hEO51g4llnA0UwjW5OyMTtdh1vrz7n2vy8icwcT5uNGG98ormz/IbcnTcPl00Ewci4OUTW0oitNRiU4l6icRYuwJiezZ9ot7Dp4gDCG0qvrmTWm0pOOkF5QRHh4OJrCDNjwPmz9DIpNtkFwvR+GNlfV+qFSZ8E9YOQcGPof7tv6GX+sLCbLbCR1z2Zk+j+IgE72Q3sP6kDholL+PJDKb9F+9Nl4ksLNm9H16dMwsSmKUq8KN2/GuWNHCvLzMZqLEUKg0WuqHFxc7pEOGbB+IQxfAm4+1R5XrrRU8um6o7zxywE8XZ2YfUcPbowOqrKA6aBBgzjw90YyU1KqvV5wO08Ob8+gpKQUjab6L1O+Dz1E8gMPcNWJHdx0y0j7dikl6YZ4nlmXxA6RwA2dbiI7z51jmQW8keXJXOsMPta+Q49vx7Fy9Viyez3BtV1DaOXpct7PqjQOleBcgoqzssicM5eCXlfwn9KV3O5s684pr+8AkHb0MOkGI0PaesK70VBabBsTc9UT4Ne+8YLV+fF9VjtGPDuPiNMbWbv+GPnvXYNn/7ttA/FcvWjfK5ANSw9zk2kcs31eIFbnTO5336sER1GagVKLhcLtO/AcNYqi/dswmq046Z0Y0HoAwfrgqk9K3syqDTso8X6AmzoMO+89soxmnvh2FwkHMri+ayteHtEVb5222uNvv/12vHPTObJ1E1LKKpOg8C5+7NuQyukjeYR0qH6sjK5/P5zbtyd7wQI8R46wX0sIQaCHC69d829uXn4z6c5f8cnYTxBCIKXkRHYh24/0o/ivfzM850t+/WUfQ/43kU5tQrgjrjXXdw3CxUkNRG5Kqo/gEpQxezYlRUW80PMIvVr1IkbTD3cfF1x0tqZga24ayQf3k5lnoIvjcVtiM2mrbQpjYyY3Zfbs2cPufQcJusFWtTQ16EbY8inMjoHtC3FyFHTq2wqnJB8GhdzIrx2t5P3yMyX5+Y0eq6IodWPavRtpMqHt2Z2SYgtGkwkHDwfu6HRH1SdYCmHZBLbQg+25558xtflYNte/v46NR7J4aUQXPryzZ43JTTn/8Dbk5+RgzM6qcn/oFd44aATH91S9v5wQAp97xmM+cIDCv/+utD/ALYB/9fwXm1I38b+j/7OfE+6rY2RcJL0e+xKuf5NBTnv40/s/uOYfZcqSXfSetZb3fj1EXpH1vJ9FaRgqwbnEmP75h9wl37I2xhGniAjeiX+HrJRC/ML0tsHDG2eT9mY8qXm2IlZR974LN38APpFNFnNwcDAlJSUMuP5GkrLzSXWPg4cSwLcdrJwE8wbRpWMupSWSW0vuJ3lAe4TFyj8LPmiymBVFqZ2CzZtBCEojbeP/DJZCdD46+gRV0wK7diZkHyHER0dwcDUtPGWWbkth7LxN6LSOLH+kP3f1Ca/VmnpSSm649yF+2L2f9KQjVR6jdXEkuL0XSXsyz3s9jxtvROPrS/Z/F1S5/7aOtxHtH80bW94gx5RTcacQEPcgYtwKvEUBC4qf4adrjfRq48M7vx7kyld/481fDpBbaDlvHEr9UgnOJURKSfKM6Rhd4KdBnnw0+CNcpY7c9EL8nY7ZWkRW/5uTmg7onZ2Z9uwzxMY3fU2ZBx98kMcee4wDBw6QjYNtoHFQN7jvZ7jlU8g/hfeyoYT4ZXJgfRrP3PUpByOdyV/4Jaeyjzd1+Iqi1KDw7804d+pEUXExALfceBv/fvvfOIgq/vk49if8PRfiHuaBSVN58MEHq7xmaankzV8O8OS3u+gd4cuyif3pHFz7+jhCCFq3bk1avpH0Y0erPS6imz85pwvJTKl5qQUHZ2e8b78dY0IC5mPHKu8XDrzQ9wUMFgNvbX2r6ou0uRIeSkD4RnJFwkPMC1/Lj5P6cVUHPz74/TAD3kjg8w3HsJaolcobi0pwLiHJ335B8c49fDvIhTdvnEOwLojMv34DCf6H37dN3x63klR9LO3at+elWa8QcgnUk/n6669Zs2YN4eHhnMovIP3YEUqKrbZvNtG3waNboPfDdC3+HGOOhYK1G+k06Vm8DKV8+tY4MovO/w1LUZTGV2o2U7RzJ7q4XhhzbF09MsCR+66+r/LBZgMsnwg+bWHwDL7++mu+/vrrSoeZrCU8tngHH/x+mDviwvj83l54ulY9E6smXbp2JcNYWG0LDkD7XgE4aAT//JV63ut533E7wsmJ7IULq9zfwbsD46PGs+LICv5OrdyVBYBXGNz3C0SPgYRZRK25m49uDOTnyVfRNcSTmT/s47r31pFwoOrZX0r9avQERwgRJoT4XQixTwiRKIT4V9l2HyHEGiHEobI/W1QFpfT0JE6//hpHgjXc9eR8OhcWwH9vIHPV5wD4jXgUHvwd2eYqTh3Yj1nnQXZ2dhNHbXPw4EEOHjxIbGwsR0+mUmK1kp501rcqFw+47jXaTJyFm5OBvb8epEP6l5RGhnBlQiYP/fxA5WZfRVGaXOHWrUizGbe+fUk7mUJxSQl7du/k0J5DlQ/+5TnIT4ERc0DrZn8unC3TaOaOTzfx455Unru+E7NGdsWphhlONencuTP5hUUc2rsHWV657xyuei0R0X4c3HyakuKaW04c/fzwuOkm8pavoCQ3t8pjJnSbQJh7GDP/mkmhtbDqCzm5wsiPbauln9wOc/rRKXMNi+6PY964WIpLSrnn8y3c8/lmjmSoRTwbUlO04BQDT0gpOwN9gIlCiM7AM8BaKWV7YG3Z+xYh25TNiufuRGcsIeSJR4hOeAvmD4bMg6QH3I6ruxO63iPAwYGME0kUGfKZ8cnnPP74400dOgCtW7emdevWxMTEcOLkSQotVlIPHah0nCasB52HdOGEpSf5x08SFvQPwVmlBGxN4uE1D5NvUYOOFeVSUvDnnwitFl3v3uw9tAuDqYRff1zFjh07Kh548BfYvhD6PQatewNnngvlDqUZGPHhBvan5jNnbE8eurptrcbbVCcqylYV+cjxE2Qcr9ytVK7zlcEUGawc2pJ23mv6jB+PLCoiZ8m3Ve53cXRhZr+ZpBhSeHPrm9VfSAjoOQ4mrAPf9rD0PsTS+xjcWrD68QFMu/4KtiXlcO27f/LKqv0YTGogckNo9GniUspUILXstUEIsR8IAW4G4ssOWwAkAE83dnyNLdWYyvOLxjN5Qw7FvfzpsfXftm8A8c9B34mk/mc3QW3d7Q+CE3t3UWixkp6ZRZcuXWp9HykluYVWsgrMZBdYyS6wkFNoIbvAQl6RFZO1BLO1FHNxCZaSUopLJE4aBzQOAkeNwMnBAb2LI95uTni5afF20+Kj0xLq7crd48bjqHFg06ZN3HvvvTgVG2wJznWV44i6KpRtP59gb7v59Ov4Hk671jMxQTC+/QH+79f/45Mhn6BzqnlxT0URQlwLvAdogHlSylfP2X8P8AZQvuDaB1LKeY0a5GXA+MefuPXuTYmzIxmnT2K02L4T+/v7nzmoMNs2mSAgylYaosy9995rf73uUAaPfLEdF62Gbx7qS7cwr4uOrVevXjz5+ONo/tnB0W2bCWhT9USLsM4++Ibq2fbzcTr0boWDQ/VJlUvHDuj69SXnyy/xvfcehFPlrrNerXpxT9Q9fJ74OQNCBzAgbED1Qfq2tXVZrX8b/nwDjqxFO+Q/PHjl3YzoEcLrP//Dx38e5fsdJ3n2uk6M6B5SY3xK3TRpHRwhRBugB/A3EFiW/ACcBgKrOech4CGgwreD5uhI7hEe/uVBJi5Lw0Er6dR6P/R6AK6eCnp/CvLM5Gea6DIg1H7Oib27KHS0FZIq/wZTzlxcQlJmIYfTjZzILiQlp5CTuUWczCniZG4RhZaSKuNwdnTATatB6+iAs6MGZ0dbYmMtKaW4VFJcIrGWlGI0F1d5jcGOB3DWasgN7k3E8Mdx37qEpP37KLKU4KqtWAdC7+1MZHc/9m/NIe7VeQQUvc3JVz/jg/U5PHLVbh5d/RAfDv0UNye3i/31KpcpIYQG+BAYAqQAW4QQK6WU+8459Bsp5aONHuBlwnLiBJakJLzHjuXnYz/jWFhKTpFtoHF4ePiZA398wpbkjF0Kjs72zYsWLQLAseMA/r18L+0D9My/pxchXq71Ep+vry9vvP02X06bwtHtW+hz6+1VHieEIObacFbPS+Tw1jQ6xLWq8bo+48eT/PAE8n/+Bc+bbqzymEd7PMqGUxuYvnE63w3/Dj9Xv+ovqHGEAU/ZKsr/MBl+eAx2fY3/da/xxuhujO0TzgsrE5myZBdfbDrOzOFdKlVuVi5MkyU4Qgg98B0wWUqZf3ZTpZRSCiGq7FSVUn4CfAIQGxtbdcdrM7DhRAJT/3iC/ruK6HRC0mp4WxyfWFVhuvfpsjLjQW1tf9lLiotJ2Z9IobPtH/9Two/Xfv6Hw+lGjqQbOZ5dSEnpmV+Jl5tT2boqOq5q70+Ityv+7s74uGnxcnPCR2driTk3CamJyVpCXpGVnEILWUYLKTmF/LNqK1JCirmE5dtP0jqlmEFFGcRO+56goAB6hHnRq40PsW28ifDT0TU+lCPbMzi0JY0rxj+Jy6ot+O85zCvtMnhG7mLCshF8NPxb9C7qf3KlSnHAYSnlUQAhxGJsLcDnJjjKRTD+uQ4A3VVX8vnuKfSxOpJrtnWltG3b1nbQ3u9s694N/DcERVc4/+hR2zi8zxN9iO/oz+w7euDuUvfBxDUpLCzE6OaJYdf/t3fe4VFUXwN+7+6m995JaAkJCb2DAgIKoiBgQRFp9l7RT7EXFNtPBSwIIihio1noRQGpoSZ0AqSQ3stusuV+f8wGgqQR0sB588yT2b13Zs/M7pw5c+655+wkM/E0Pi3CKu3Xuosv3iFn2Lb0JK06+aCrRuc5XXMNti1bkvPNN7jeNLzSYTRbrS3vXvMu4/4cxzObnuHr67/GRlvDsXm3hYm/w77vYe0r8GV/6Hw3na57maUP9eGXPcnMWHWEEbO2MLZ7CM9eH4GXs131+1SpliYxcIQQNijGzfdSyiXWt9OFEAFSylQhRABwVYaZS7OZhRue48OUtUQVlTFlkw12bUNwn74CtBdedKkn89HqNBQ5aliyJ5lDu2NxMOhZdqQQYevAm5sysNFmEebtRIS/C8M7KNVwW/s4E+bthLNd/X+99jZa7G20+LmeT0e+8IhilL02vi8TJkxg/br1DOrXickRWg7pHFl3OJ2fY5WU6l5OtnQP9aCjuw2x6xKJ7BOA3/PPc2bc3XTXPcgMsYEXSs5y7w8D+HLQTNxa9K33Y1C54gkCkiq8TgZ6VtJvjBDiWuAY8JSUMunfHa4mj3B9U/T3X9iGhrJTl8TxnOP0NbaisKwMX19fXFxcoDBN8d4EdYO+F8YDlpSZ0Nt7kVlYxj29Q3nlpih0dQwmro7vvvuOB6e9xsujhvHPT98x8tlplfbTaAT9bmvLso/2ErvqDD1HVJ03TGg0eN17L6kvvUTh2rW4Xn99pf3aerTl9T6vM/XvqczYNYOXer1Us8BCQOe7od1NypDVji8hfimaa57h9l4PMzTan0/XHWf+P6f540AqDw5ozcQ+YTjaqkUH6kKjnzWhmMNzgcNSyo8qNK0AJgDvWv8vb2zZGhQpKTj6O69tfYW1OhODLTY8m9KPgqJN+L85HWE1boxmC/FnC9h9Oofc7Wcp0JgZ/L+/ARiYu51IjY7hUx7HwZDNlLuvpa2fc51nIdQX48ePP7fevn17FixYgN4UQ3+nQp65szsWiyQhq4hdp3PZdSqH7QnZpJUaGZJny+g3NxIV48PoHv3I+v5XBv62go9Pzefpk4uZvHoyX/kNwWvgNHCp3q2sovIvfgN+kFKWCiEeQInru+7fna4Wj3B9YzEYKNmxE/c7bmde3DxCCQLMPDrufgbeewtIqcTdGA1KBnXt+VtJWr6Bexfs4lBeS6YNj2Jyv5YNJmfv3r0BEMEtObFrO0e3bSGid79K+waFe9Culz+xq87QsqM3vqFV591xGzmC7HnzyPzkU1yuuw6hq/xWOazlMOKz4vn20Le09WjL7RG3105wB3e44W3oNhnWvKwkR4z9BtchbzJt+EjG9gjh7T8OM2PVUeZtOcVDA9owrmcLtfTDJdIUd8a+wHjgOiHEPutyI4phM0QIcRwYbH19dZASS+yC67lty1Q2ak08EzSEt3supGDFZlxHj+aQRyifrj/O2K+2EfPaam6ZtZUPfzuMQ7EZ2yBH3h4Vzcon+tFLm0p4l67MfnwMH069n6hA1yY3bgC++eYbvvlGmc7etWtXAAptHM7NpNJoBG18XbizRws+uqMTW1+4jvee6Q02gi5lOpbtTeEh92spNlpYPfkJ9hlu46moN0m0tWdSxjrSZ3aBda+BXp1KrgIogcMhFV4Hcz6YGAApZbaUstT68mugayPJdlVQsnMnsrSU1Gh/dqfvZqS9klDUt0UgHh4esOtrOL4GBr92QXmYA8l5jJi5hVOZxTwWlIQ4vqlB5YyKisLV1ZU0g5HAiChWzvyA5ENxVfbvd3tbHF1tWTf/MGZj1dPGhU6Hz5NPUHbyJPnLV1Qrw5Ndn6RfUD/e2v4WK0+tvLQD8GoNdy6Ce1aAnSv8PAEWjKCNTOKbST349aHehPu58Obvhxjw/iYWbjuNwVh5LKXKxTT63VFKuUVKKaSUHaSUnazLn1aFNEhK2VZKOVhK2TySvFwO2Scp+mk8by4Zw0TSEI6ezB86n2uiX+XQM/9HsZ0TY2RXxnz+Dx+vO0ahwcTY7i2YdVcXFt7UEQHcd1sU43qG4qnPpCg7C7OHL4sWLUKv1zf10Z0jMTGRxMREALp06QJAZpmZtBPHsFguvhiFEEQEuxHTLwjvPDNbnxzAzKeGkzBqAm0SD3Hom0W8vMQWQ+oDJOqcuCvAn4QdM+GTjrD5IzCo08n/4+wC2gohWgohbIGxKB7gc1iHucsZARxuRPmueArXrkPj6MinbMDXwZcwfQgms5mPFs7mryVzlZw3bYZAj/vPbbPyYCq3f7kNG62GXx/uQ0F2+jm90FBotVp69uzJjp07uWXqy7j5+rPsgzfJTr5oNBIAO0cbBo5vR25qMTt+qzoDMoDL4MHYd+hA5syZWEpLq+yn0+j4aMBHdPHrwoubX2RT0qZLP5BW/eGBv2H4h5B2EL7oByufp6uvhkX39WLRfT0J9nDg5eXx9Hl3Ax+vPUZWUdUyqSg0/eP/1UhJDvLP59k47xpuKYzlF1dXrvMdQSeH//Hw/Hw+e/QdnE4f57vutzKgWxtm3tWZ2GlD+OPxa3htRHuGdwig4HQhdo46fEOVCuKHNm9Eq9PxT/wRJk6c2LTH9y/Cw8MJDw8HwMPDgw4dOhB/OhFjqYGsxKpLMcT0D8JikpzYnkaPlp7c+voTOHbrxtPHVvLFDSHc2KYfdlmPkma2Y1RAGN+JMFj/OsYPozCsegUKa85roXL1IaU0AY8Cq1EMl5+klPFCiDeEECOs3R63JhLdDzwOTGwaaa88pMlE4bp1lPRsz+7c/TzQ8QHyzmaSU6xn6R8rSFr6Bjh6K8nsNBqklMzaeIKHvt9DZIAryx7pSzt/1wv0QkPSu3dvDh48iEnCmBffQGi0bJj/ZZX9Q9t7EdUvkL1rE0k5WrVXWAiB79NPY0pNJWfevGplcNA5MPO6mbTzbMdTG59ixcnqvT6VotEqs2gf2wNdJ8LOr+CzLhD7LX1aevDzg71ZfH8vurRw55P1x+nz7gae+Wk/u07nVJno8L+OuJJPTLdu3eTu3bubWozzmMpg1xyOb32f951t2OZgj7P0Jy/5NvRFQTjaarnR28LEr1/Eplt32n79JRrNxTamtEi+ffEf/Fq6MuyBGMwmE18+NIHgyPa889MKdDodW7ZsaYIDrB3Lly+nrLiIxOU/MPjeR+g4pJKEOOV9/7eXvPQSxr/VG41WQ9np0ySMHoN9ZCSh384HrZYtp4/y4rbHyS/LIihtII8WH2CoZhdmoWWf5zDyOtxHu5juhHg6XFbiMJV65Yr7IpqdPmkiirdvJ3HiJH4YH8LuSB3Lb1nOt0/NYPu+35n793b+meJC75dXQ2hvDEYz/7fkIEv3pjCiYyAzbu3Q6HEip06dIj09nW7duqHT6Yj9YxmbFnzNbS+/Q4voDpVuYyw189M7uzCVmbljWg/snaqeAZX8xJMU/fUXrf/4HZsaSuMUlRXx5KYn2ZG6g8c7P869MffWXSelHoCVUyFxGwR1hREzwS8KgBMZRXyz9RTL952lqNREax8nbu8Wwo0xAYR4XpUpNup0ElUPTn0gJRxaTurMbryx+33GeLuw3dYNQ9pNkPost0b3Yf6k7sROG8zjB5Zio9PS6q3XKzVuANIS8inOK6VVJyWZ1ql9segL8gnr3pvY2Fiuvfbaxjy6GpkzZw5z5sw593rkyJHceudd2Lu4knbyWDVbQsyAYIpySzl9QKlzYxsWRsDrr6OPjSXzk08QQnBNy3YsH72YGJ9IzgauI3bIKL7v/iubnYfRIWcV128aQeonA3ntzZe57+u/eW/VEVbsP8uJjKILps2rqKjUTMHq1VjsbPjD7yyPdHoEndBRnJdNnl6ZIt5m5LMQ2puknBLGfP4PS/em8PSQcD4Z2+kC4+bfeqGhaNmyJb169UJnDQTuOORGnD082f37kiq3sbHTMmRyFCX5ZWz6/mi1HhC/F54HIUh/t+awUGdbZz4f9Dk3tbqJT/d+yjN/PUNRWR3LMQR0gEkrlYLFuafhy2th4ztgKqWNrzNvj4phx4uDmHFrB9wcbJi+8gjXzNjIzZ9tYfamE8SfzcfyH9d/6tyzyyT10Fay17zAn5pEfnRzoUy44mocwKiwiQwf1oZ2/uezEOctWUrxli34vfQSNoGBVe7zRGwGWp2Glh2U5FF7/lyOs5c3qSVlmEymZmfgnD179qL39uzZQ3KZBadKSjZUJCzGC2cPOw5sSqZVZ8Wgc7v5Jkp27yZ7ztc4dO6Cy3UD8bT35OsbvualLS/x86nPGdF6BHc8NRebknwytnxD5MHv6VnyGcXJc1l2pg/zTf3YK9tgZ6Mj3M+Flt5OFyxh3k641nNODhWVKx1pNlOwZg17W2sI92/PsJbDyEsvwWzMJ78wBxd7Hd43vsTfxzJ5fPFezBbJ3AndGBR5cV7WyvRCQ7Ft2zb++usvXnjhBXS2trTrN4A9f67AUFyEvZNzpdv4hrrSY0RLti9L4Mg2LyL7BFTazyYgAO8HHyTz448p2rwF52sqn6V1rr/Whnf6vUOERwT/2/M/juYc5f3+7xPlFXXpB1ZesLj1IFj1Avz1HhxartS5CumBk52O27uFcHu3EBKzS1gZl8rKuDRmrDrKjFVHcXOwoWdLT7qHeRLh70KEvwu+Lnb/GU+3auDUgdNZxfy1aw/u+6dz1DGeH91cMAo32jkP4Jmej9AzJOKibcqSkkh/6y0cu3fH4647q9y3xSI5sSeD0GgvbB10pCecICn+AP3vnsz6ffvQaDT06dOnIQ/vkomJibnovenTp/P3xg1MHdyHMn0Jtg6Vu001Wg3R/YPYviyBnNRiPAOUMg1+L/4fhoMHOfvcc4QuWoR9RDgOOgc+6P8BXx74ktn7ZnM6/zQfD/wY32HPw9CpcGYrTnsWcNeh5YzTrkNv78sBl/6spSerT4WxYv9ZKj6oeTjaEOThQJC7A0HujtZ1+3PrHo42/xlFoKICoN+7F0t2Dluu0fJK71fQCA1pcaeQlkK0GhPtO3Ri9t+n+GDNUSL8XPji7q6EeVdeWqUyvdBQbNiwgWnTpnHPPfcQGBhIeM++7P5tCSd376B9/0FVbtf5+lCSDuXw94/HCGzrjptP5VmWPSdNJH/JEkWH/7YCja1ttfIIIZgYPZEOPh147u/nGPfHOO7veD/3xtyLjaYOD1ZOXjBmjmLs/PYkzL1eCfAe9ArYKQZcCy9HHujfmgf6tyYt38C2hCy2ncxme0IOaw6dj1d0c7Ah0F1J+urrYoenky12Oo110WJno0Gn0aDTiHOlerQaYX2twcVeh5eTLR7WRLHaZlxaQo3BqSXZRaX8tv8sq2KP0zV7HmbPHfzi6kSZEAwKup6nej5BC9fKE4VJk4kz4++h9MQJWi1fVq33JmFvJiu/PMiwB2Jo1dmHpTPeIPlQHPfP/gY7RydSU1MJCKj8SaM5MW/ePKZMmcLT11/DEx/OrHIsHEBfWMb8/9tK+35BXDv2fFCiMS2N07fdjrCxIeynH9F5n0+Hvv7Mev5vy//hoHNger/p9AmqYPQZ8pXif4eWw4l1YDKAozfmlv3J9OnNEYcuHNa7k5Rbcq6MRUquHv2/pl862moJdLcaQFZDKNDdnkA3BwLdHfB3s28W0/SbKc1X61WBGoMDcS89hXn5KtbOGsez/aeBoYB1r33G/lPb6HHjUL6lJ+sOZzCiYyDvjolpNgno4uPjiY6OZvbs2Tz00ENIKZnzyGR8QsMY9fyr1W5bmGPgh9d3ENDGjZse7VjlQ03R5i0k3XcfPk8+ifeDD9RatvzSfKbvnM4fCX/Q3qs9b/d7m9burS/p+C6gtBDWva5M1XcLhuEfQXjlyQjLyS4q5Vh6EcfSCzmWXkh6gYGMwlIyC0vJLSmj1GShLqaAjVbQytuZtn7OtPV1oUuoO11DPRrid1EnfaIaONVgMJpZdzidpXtS2HIsjZt0q/DwXstyFxvKNBpuChnE/d2eItQ1tNr9ZM6cRdbMmQR+8AFuNw2vtu/SD/dQmG3g7rd6kxS/n1/emka/OyfQ85bb6vPQ6pXZs2cD8PDDD5977+zZswQFBXFjTDteeeONGuVf980hEvZnMvHdvtjan7849AfjODN+PPYREbRY8C0au/Opy0/knuC5v5/jRN4JpkRP4ZHOj1z8dFRaBCfWwpE/4dRfUGR9kvFsBaF9ILALBHVB+kaRVypIydOTXMHoSckr4WyegZQ8PTnFZRfsWiPA18VeMXrcyw2g8sWeIHcH3Bz+s16gK+6g/+sGTnFJPoeu6cvxUBtG/rgFJ6GD729jwT8DyMzbwK7WI9hFMC/dGMmkvmE1/q4r0wsNhZSSiIgIwsLCWLNmDQDr531O3KZ1PDJ3MbpKimZWZP/6JLb8fJyhD0TTurNvlf2SH3uMos1baP3nH9U+qFbG2jNreXPbmxQbi3m8y+PcHXk3Ws1lBGQnbocVj0PWUYgeA0PfA2efmrerBCklJouk1GTBYDRjtiivzWaJyWI599pklhQYjGQXl5FbXMbZPD0nMoo4nlFEUm4JUoJOI+gW5sHQ9v4MjQ7A382+ZgFqpk76pHmY380Ii0Wy63QOS/ak8OfBVApLjdzoGsvdwb+ywsFMmbBjeEAf7u/1f4S5hdW4v8JNm8iaNQu3kSNrNG7SEvI5ezyPPqPbYCrVs37ubFx9/Oh640gWLlzI77//zty5c3F2rnxMuanIzMy86L3AwEA6duzI8cx00k5UH4cDED0giKM70ji6PY2YAeeLizrERBP43nukPPEEqS++ROD7MxDW4Ow2Hm1YNHwRM3bNYG7cXHan7+atvm9d+L3YOStF7tqPUoLBM49AwiZlOfIH7P0OAKG1w8M/Gg+fSKK924B3OES0BY8OoFPc0foyM2fz9ZzNU5aUPMO59biUfNbEp1NmvjB5WLkXSDGAznt/yg0ifzd7bHWqF0ilaZFSsmDO4wwoNhM+/jGctA7w6xRKT+4izziUvBI9a3/4lHfefa/WmYkr0wsNhRCCUaNG8dFHH5Gbm4uHhwehMZ3Zt/oPUo8fISSq+uGymAFBxG9OYcfyBFp28EZThWfW74UXKNp8E+nvvkfwp59ckoxDQofQ2bczb2x7gw92f8CGxA282ffNKj3/NdKiFzy4GbZ8DJs/hBPrlezIHe+CKiawVIUQAhutwEarqXOJn+JSE7FnctmWkM36w+m89tshXv/9EAPCfbizRwsGRfo1+nCWauBYySws5ZfYZBbvSuRMdgmOtlrGtk5Ha/yS5dp8SoWGG70788A1bxLmVrsLvOz0ac4+NxW7yHb4v/5atX2lRbLl5+M4utkSdU0Aa+f8j7y0NG5/5R10trbMnTuXtLQ0nJwqH+9uSrp161bp+7feeivvvvM2J+MO1rgPvzBXfFq4cPCvFKL7B13wdOh6w/WUPfUUmR9/jM7fD7/nnjvX5qBz4NXer9LTvydvbH+DMSvG8FCnh5jQfsLF3hwhwDdSWXo9pBg8eWcgZQ+c3QNn9ynenn3fVdhGA85+4BaMg2sQrd2Cae0aBG5B4B8IrgHg7A9aHRaLJNv6VKMYQHrOlhtB+XoOnc0nq6jsIpF8nJVxcBd7HS72Ntb/OpztbLDVKWPhOu35MXCdVUlU9L6Wr1V0yJ5/r3IvrZOdDk8nWzydbPFxtiPQ3UE1tv6jLD2xFNc1uyj1cKLr8Enwx1MQv4SfbKYhzblkFhaTczqetlXEqFRGVXqhoRg1ahTffvstx44do2fPnoS0j0EIDYkH99Vo4Gi0GnqObMWqL+M4uiO96oDjoCC8H3yAzP99QtHWrTj3vbRaed4O3nwy8BN+S/iNd3e8y5gVY3is82OMixxXN2+Ozg4GvKA8wK14HJY/ogxd3fCO4qFuRJzsdFwb7sO14T48P7QdJzOLWLY3hZ92J3H/wlhaejvx0IDWjOoc1GhD+//pISqLRbLlRBY/7Exk7aF0TBapJJyLLCUx5T1+MiRSKgTDXMN5YMC7tPSsfdIqc14ep8fdjTk7m7BffsE2uPr8CQc3JfP34mMMmhhJWdF+1s6ZSb+x99Bz1O0kJiYSGhrKm2++ybRplReTa44UFBRwYN1Kdvy4kPtnz8fFy7va/ke2pbL+28MMf6QDYTEX9pVSkv7mW+QuWoTv1Kl4TZ500faZJZlM3zmdtWfWEukZySu9XyHaO/rSBTfkQ9YJyD4O2SehIAXyk5WlIEWJ6bkAAc6+4BoILlajxyXA+joAXIOU9+xcMBjNpOYbKhhAypJbYqTQYKTQYLIuRopKTRjNjXd9agQEujsQ5uVEuJ8LMcGuxAS50dLbuS5PXuoQ1RXCrrRdvLjkAf73mR7ve+/FLzwRYuczXzOa7dl3EpG7ltjEf/j+r384c+ZMsy1KKqXEYrGgrVC0eNG0ZwC4660Pa7X9L+/uRl9oZNzrvdDaVH4TtpSVkXDzzQiNllbLlyFqCDiuivTidN7c/iZ/Jf9FB58OvNnnTVq5V10EtEYsFjj4kxKfU3gWIkfAoFfBu03d91kPmMwW1hxKZ9bGE8SfLSDI3YGHB7bmjm4hl1KAVY3BqS3pBQZ+3p3E4l1JJOfq8XC04dauwQyL0rFp38sszovHIOBGh2Du7z+dVv6dL2n/5qJiEidPpvTIEULmzMGpZ49q+6eezGfZR3sIbudBz5tcWfTyMwRHRjPm/15HaDS89957vPDCC5w8eZJWrS7jAmggPvvsMwAee+yxi9pSjx/l+5eeZviTzxPZp/rp7Wazhe9e3oaTmx1jpna9aIxfms2kPPMshatWEfDudNxvuaXS/aw7s463d7xNlj6LYWHDeKzLY4S4hFTa95KREkpyFEOnMBUKzipL4VkoSD3/niHv4m1tXcA9RIn/8WwJnq2t660UI6iypI9Snh8Pt46BmyyWc+em4hkqP12i4rviwrbytyRQZDCRU1xGTnEZ6QUGEnNKOJNdwpnsYo6mF2Kw1upxsdPRs5UnvVt707eNFxF+LrWJK1INnCuA+Kx4pqyZwh07dAxdnU3os71xTP6VWaYR/Oo2ibsybSjN+Z5VR/axZtdeSkpKLjAgqqM6vdCQGI1GjEYjjo6ObP3pO3Ys+YmH5y6qcrp4RZIO5bDi031cc0dbOgysWmcU/f03Sfc/gM8zT+N93311llVKyZ+n/uTdne9SbCzmoY4PMTF6Yt1mWpVTVgLbZsKW/4GxBCJvhn5PKskCmxApJZuOZvLZhuPsScwj3M+Zl4ZH0T+8VnFDagxOdZgtkr+PZ/LDjkTWH8nAbJH0ae3F80Pb0a2l4IfN03jwrx0YgGE2njxwzVu0Cr30fDMWvZ7khx/GEB9P8Gef1mjcJB/N5c/PD+Dsac+Aca35+Y1nsXd24cZHn0FY06AvXLiQPn36NEvjBiAnp+qyYdLRmQ/WbCbD1ZcZNRg4Wq2GrjeE8tcPx0g6lEOL9l4XtAutlsAZ75GUl0fqS9PQurnhMnDgRfsZHDqYXgG9+Cb+GxYeWsjaxLXcEXEHE9tPxN/pMquSC6FM2XTyUhJxVUVZiWLsFKYqhk+5QZSXCNkn4PhaMFeoJaO1sxo9VoPHuy14tUV4h6Nz8r6UJ51a42qvTBetDJPZwsnMYg6m5Cvj6iezWHc4A4AgdwduaO/PsBh/urTwaNbTRFWq5nD2YR5Y9wAeNm7cGG9CF+KIY/KvfGq6hbweU/m+Uwi/vr0Lc1kOx1PS6N69e62NG6heLzQURUVFxMTEMGHCBF577TVCozux/dfFJB06SNvuvWvcPjjSg8C27sSuOkNUv0B0VWRldr72WpwHDSLr8y9wu/lmbPzrpleEEAxvNZxeAb14Z8c7fLr3U9acWcPz3Z+nm38dh/hsHaH/VOg6CXZ8AbvmwOEVENoPuoxXDB7bxg91EEIwsJ0vAyJ8WB2fzvSVh5kwbycDInx4+aYoWvvUf2zpVe/BSc3X89OuZH7anURKnh4vJ1tu7RbM2O4tcLYv5Ju/p/Fzxg5KkQyV9jzY6yVaRY6qkzzGjAySH34EQ3w8gTNm4HbzTVX3LTWzfdlJDmxKxsPPkRFPdObg+iX88/P33Pby27SI7qj0Mxp59dVX6dChA2PHjq2TXA3N+vXrARg06OJ8E1JKQv190Wo0JJxNq/HJ32y0sOj17djYabn9pR5oKrl5mouKSJwwkdJjxwiePbvaxFsZJRnM3jebZSeWAXB92PXcE3VP3Yau6hOLRTF6chIqXyoOg9m7KUHPXm0Vd3P5umercwHQjUFKnp6tx7NYHZ/G5uNZlJkt+LjYcUN7P0Z3CaZziHvF7/eKs3r+Sx6cjYkbeX7z87jZuTFLcyfmF98noGcu34SPo9fYF+nd2osdKxLY/Uc8JTlfsDIlh2GjRvNchfi3mqhOLzQkI0aM4J9//iExMRE7WxtmTh5L9IDBDJr8UK22Tz6Sw/L/7aP/neFE9w+usl9ZcgoJw4fjfN1Agj/+uF5kX3dmHe/ufJf0knQGtxjMU12fqnsQcjmlhRA7X6ltlZcIts4QNRLaj4awfmBTL7OcLl0sk5kF/5zh0/XHKTVZeLB/Kx4e2KaqUh/qEFU5JrOFTUczWbwrkQ1HMrBIuKatN3f2aMHgSD9yDOnM3fwyS9J3YEZyo9mWe7s8TqtOEy705V8C+vh4kh99DHN+PkEffIDLdRd7FspJPpLDxu+OUJBlIGZAML1uaYXRUMjcx+8jrFMXRjz9Yp1kaK48e+9EPpz7LSuWLeXmkbfU2P/47nTWfB1P/7siiL628tglc14eZyZNpiwhgZDPZ+NUQ/LDs0VnWXR4Eb8e/5UiYxFRXlEMbzmcoS2H4utY9bTQJsFigfwkJQYoq3w5pnh+ClPP9xNa8Ai1GjxWw8e7rfLf0avOv+XaUGgwsvFoJqvj0lh/JB2D0UIrHydu7RrM6M7B+LvZqwZOM8RsMTM3bi4z986kvVd7prjdQei055EFkl0PP8jIex7H2U6HlJLvXt6GVptI6pHvuOO1dwmObOKHglqyefNmrr32WmbOnMkjjzzCkumvkpeRzuSPv6jV9lJKlrwfS1FeKXe/2RttNd7TzFmzyPpsJi3mza1RB9UWvUnPgvgFzI2bi9FiZEzbMUyKnkSQc/VxnDVisSh1rfYvgvjlUFYINk7QeiCE3wBtbwCXizNSNzQZhQbe+eMwy/adJdTLkddHtGdAxEU6WTVwknJK+HFXEj/HJpFeUIqPix23dwvmjm4taOHlSHJ+InP/eZ1l6TsByQijlnu7PEZI58mXPK2uHIvBQNas2WTPm4fOy4uQLz7HPqrylNxlBhNbfz3Boc1ncfNx4Lp7Igls6w7Auq9nc3DDaiZ+OBuPAOWHvG3bNtLT0xk5cmSzzqXyySfKdMknnnii0vZju3fS77rrcHTz4PCxYzg4VD8TQ0rJ8v/tJeNMIXe+0hMXz8qfMEy5uSROnETZqVMEfvgBrkOG1ChrUVkRy08u57eTvxGfHY9A0NWvK32D+tI7oDftPNtdXm6KhsZQoBg62ScUo6fcAMo+ceGQl737eWOnovHj0bLevT6FBiMrD6bxS2wyO0/noBGQMH148/3BVsHVbuAkFSTx4pYX2Ze5j4FB19P5mAujDn9J6lp3zHeMIvr1d871TUvI59cZsQS3PcbhbSt45rsl2Nhf2pN+TXqhoZBS0rt3bzIzMzl69Cj7Vv3GXwvnct+sb3D1rl2emNMHs/hj1gGuu6cdkX2qzndjKS0l4aabETY2tFq2tM4Bx5WRWZLJ7P2K91lKyY0tb2RKzJTLSxJYjlEPp7fA0ZVKUtSCZOX9wM7Q9nrF2AnsXOf7Yl3YeiKLl5fFkZBVzPCYAF6+KapiDp3/poGzdfsO1h5K58ddSWw+noVGQP9wH8b2aMF17Xyx0Wo4k3OcOVte4fecODRIRpcKJnd+hMCu94K2bmFI5oIC8n75lZzvFmI6m4rbmNH4PfccWnf3SvtnJRexek4c+RkldBwUQo8RrbCxVW6kOWeTmf/Mw3QcciODJj8IgMVioWfPnqSnp3Ps2DHsL1G5NCavv/46AK++WnnGUGOpgSeGDeLzjf8wa9asWiX+ys/Us/itnXgHOXPLU52rnNFgys0l+cGH0B88iP8rr+Ax9o5ay306/zQrT61kXeI6juUqRUHd7Nzo4N2BSK9IojyjiPCMIMApoHkbPQAWs+L1ybIaPhW9P0Vp5/sJLXiEWQ2eNtZhL6vxUw9en9NZxfy6J5lnro9QDZxmgt6kZ37cfObFzUOn0dHfZTz9dy9nmNjOsa0tkfl2tNmwHm2F/Fpr58Vzan8Wnr7refyjmdx86218+eWXl/S5NemFhmTp0qWMHj2aZcuW0adzRxY89yg3PPgE0QNrfggCxUj66Z1dGA1m7nq9V6VD5eUUbtxI8kMP4/vcs3hNmVJfh3COtOI0FhxawC/HfkFv0tM/uD+ToifRxbdL/Tz4Sgnp8XBspRIbmLwLpAUcvaHtEGVpfR04eFz+Z9VAqcnMV38lMHPjCWy0Gp4eEs49vUPR1THQ74o2cILaRku/ez4mp7iMIHcHbu8Wwm3dgs8FTu5P2sy3O2awrugUtlJym9meiZ0fwa/TPZdk2JiLijClpWFMS6f06FGKd2ynZOcupMGAY7dueD/6CE69elW5/dEdaWz87gh2Djqun9KeoIgLfyjLP3ibxLh9TPlkDo5u7gAsXryYO++8k/nz5zNhwoRLPzmNyD///ANQbY2sH197gdjDR5i+6NdaByqeiM1g9Zw42nT1ZfCkKLRV5GixlJSQ/NRTFP/1Nx7jxuH3/NRLfpLK0mexI3UHO1J3cDDrIAn5CVikMotIp9ER7BxMsEswfo5+eNp7nlvc7d1x1Dlir7PHXmuPvc4enUaHQFSY6XThf1n+Z732pDVjTflrIQT2WnvsdHaXN5uiHEOB1eD5l/GTffJCr4+Dx3mDxz9ayfLsH6MELV46qoHTxEgpWXV6FR/FfkRacRrR7tfgf8ST50u+w1sUkO07gZxPV100E6gwx8DCaduIGRDE5qVTeWnxcj744AOeeeaZS/r82uiFhkJKyapVqxg6dCgAXzwwnhbRHRn+eO1jiE7uzWDVl3EMmRJFePfqg4iTHnyI4p07ab3yT2z8GmaYJ9eQy+Iji1l0ZBF5pXl08OnApPaTGBgysH4fwEpylKSBx1crpW70ucqDUUhPiBgKEcMbfOp5YnYJr6yIY9PRTKICXPnziWv+ewaOfUBbOen9xdzRPYRr2vqg1QgsFjOb9s7h28ML2GMuxMVs4Q6tB+O6P4t35Mgqn1Atej36/fsxHD5CWeIZjIlJGNPTMKWmYSkuvqCvbatWOPXujfuY0VUOR5Wzd20i//x6gqAId66fEo2j64U33uQj8fz46vP0vWM8vUYr3ocjR47Qq1cvWrduzc6dOy9p5kJzZfdvS/jru3lM+WQOmYVFeHh44O1dfV4cgL1rEvlniXL+rrsnElevyoe3pNFIxocfkTN/PvYdOxD04YfYBlcdIFgTepOe47nHOZZ7jKTCpHNLlj6LXEMuZmmueSf1gE7osNfZ42zrjIedB572nnjYK/8DnAIIcg4iyCWIYOdgHG0u0RCxmM/P6qoY55N5FIqVGVMIrZIYMbCTYvAEdga/6NoMc6kGThMhpWRLyhZm7ZtFfHY8wY5tcE3vx8T0lQzT7qLIvR1Oo2dy6onpmHNyaL3yTzSO5387f/9wlLjNZxn5ZCueHT+SxTv3s3fvXjp16tR0B3UZJCYmsm/JD6QcOsiDXy6stddDWiQ/vLkTIWDstB6IapwIZUlJJAy/CZfBgwn6qOacO5eD3qRn+YnlfBv/LclFyYS6hjKh/QRGtB6Bndau5h1cChYzJO+G42uUoax0a9JWr7YQMQzaDYfg7tAAHm4pJavi0njtt3h2vDj4v2fgdOrSVe7bEwtAUfYJ/tj5MQvTNnNGIwkymRnvFsWoXs/jGNy90u2NGRkUrlpNwerV6PfvB5MJAI2rK7YtWmATEIDO3x8bfz90fv7YBPhjExKCjW/NQalSSrYvO8me1Ym07uLLkElRFw2zSCn54eVnKczKZPInX2FjZ09paSkxMTHk5+ezc+dOQkOrr3PVHPjoo48AePrpp6vsU5CZwZxHJ9Pj1ru4+9n/w9/fn/Xr19eq7MSRban8tfgY0ixp28OP8O5+BIa7Vxr8V7BmDan/9yLSbMb7wQfxmjypXsfFASzSQkFpATmGHHJLczGYDMpiVv4bLcaLvDKSC6+zcg9PRe9OueK1SAul5tIL9llQVkCuIVdZSnPJ1mdjMF+YcNDL3os2Hm1o696WNu5taOPRhjbubXCyqcOU0IJUOLtXyfCcskdZ11un/eocIKiL8kTXoheE9KjMfa0aOI2MlJLtqduZtW8W+zP342Hrh0Putdx89hj36Vah1WjRDJiKpu/jZC/8nox33yPofx/javVyAGSnFPHj27to3y8Qd5+TTLnvfk4X6snIzERzifEYtdELDc2JEyfo1KkTd90ygghjAffM+Ayf0Nplogc4tjONtfMOMXhSFBE9q/fiZH76GVmzZ9Ni/nycevW8XNFrxGQxsS5xHfPj5hOfHY+XvRcT20/k9ojbL/1hp7bkJcLRVXD0Tzi9GSwmZSgrfKhi8LQeWO9T0ItKTTjb6f57Bk63Lh3l1x+N4dfTf7JaFqLXaGhv0TIx9EYG93kenb3bRdtIKSnZvp2c776naONGsFiwCw/Huf+1OHbrhn1MDFoPj8sa27SYLWxadJTDW1Npf61SIbuyMdxjO7by20fTuf6Bx4m57nw12B9++IHQ0NAmce3WhdqOtS+a9gxmowm3voMYPXo0ffv25ccff8S/FjkkCnMMxK48zdEdaZjKLNg56WjZwZtWnX0JifS4IF+FMTWV9HemU7h2LTbBwXhOmoj76NFoaghuvpKQUpJbmktKYQopRSkkFyVzpuAMJ3JPcDL/JHqT/lzfYOdgYrxjaO/dnhjvGNp5trt0BXiurEUsJO2CpO2QegDKPVk+7SoYPD3Bq7Vq4DQS5R6brw9+zZ6MPThrvbHP7cuI9DPcp1uHMyWYY8aiHfIquAZiOHKE07fdjlO/fgTPnnXesDZbWPbRXnJSi7n7jd78OP0FHv1oFsNH3sLixYsvWa6mjMEpR0rJvffey7x58xjSPpwXn5/KgPG1j5ORFskv7+2mKK+Uca/3uqAQ8L+xGAwkDL8JdFpa/vwzWlfX+jiEmmWUkl1pu5hzcA7bU7fjYefBPe3v4c52d9bt4aa2GPKVIayjK+HYGijNV/J5hfRQvDohPRSvr7Nvfczo/O8ZOB5h9jL49bY4Shjm0oZbO9xH+zbDKjVOLCUl5K9YQe7331N6/ARaDw/cb70Vt5EjsGtTf+OJZXoTq+fEkXgoh243htHj5paVymM0GPh26qPobGy55/3P2LdvP6dPn2b06NH1JktjUX5TqKn2zL7Vf7B+3ufc/up0tuyPY8qUKTg7O/Ptt98ybNiwWn2WscxM0qEcEvZmcupAFmV6Ew4uNnQa3ILo/kEXKKCizZvJmjkL/f79SlLAG27AdegNOHTrhqYevToWvR5jWhpSr0cajaDRoHFyQuvigtbL61xx0MbCIi2kFKVwIvcEx/OOczj7MHHZcaQVK8HGGqGhtXtrxejxak+0dzRt3dtio73EeJ+yYqvBswMSd0DSTkXJAbyWrxo4DYzRYmTVqVXMi/uGE3nHsReeeKRHcG9BMrdod2KDCRk5Ek3/55SYKsCYnsGZO+9Emky0XL4Mncd5z9u2pSfZs/oMgydFERLpwOz77ibbw5/bH3iYzp0vLZs71F4vNDRms5kHH3yQr7/+mgFR4fy+fTdOLi613j7tlDKjLKpPAAPHR1bbtyQ2ljMTJ+HUowchn8+ud+9xTezL2MeXB75kS8oWXG1duTvqbsZFjsPVtoGNLbMRzvyjGDuJ2yA9TvHuANi5ns/c7hIAjp7KhAZHL2XdweP8YlPlQ+h/z8DxbOUiv/rpHYZ1nFylpWo4coS8n34if8VvWIqKsI+KwuPuu3EdfiMau/odr8zP1LPyiwPkppbQ/64IovpVPb1w4/yv2LNyBdc9+iyLVvzBZ599RlhYGHFxceh0V2eCaWNZKXMfvw/PwGBuf+UdDh06xB133EHnzp1ZsGDBJe/PbLKQfDSXAxuSSIzPwc5JR5frQ4kZEIyNneLRkVKij40ld9EPFG7ahCwpQdjaYh8djX10e+xatsQmpAVaD3d07u5o3NwROi3SZAazCYuhFHN2FqasLExZ2ZjSlWBzY1oqprR0jGlpWPLzq5RR2NpiExSEXUQE9u2jcIiOxr59+0Z7uqtIlj6LuKw4ZclW/udbDRIbjQ3hHuFEeUUR5RVFe6/2tHFvc2lGj8WiVGtP2g7dJqsGTgNxKv8UPx75hRUnf6PQmItdmSc9c1x5pCSBKJGM2cYFbec7odsU8G13bjtjSgqJ9z+AKTWVFgsW4BDd/lzbvnWJbP3lBFH9Ahl4dzt2LPuZLT98y/j3PsU3rHlmUL8ULBYLU8bfzfxFPzD1kQd5b+bnl7R9ufE3aGIk7XpVXoiznLxffiF12ss4X3cdQR9+0CSe47isOL488CWbkjbhbOPM2HZjuTX81svPpVNbykogdb+y5JxUJjTkJEBRBhiLq95OZ1/B4PFUihq7BcOgV64OA0cIMRT4BNACX0sp362qb1UKqSwpicL16yn4cyWGAwcQtra4DL0Bj7F34tC5U73nlDGbLcT/ncL2ZQkIjWDo/dGERHpW2f/gxjUseO9t4oqN/BW7j9LSUsaNG8eHH36Ij0/t8jQ0Jz744AMAnn322Rr77lm5go3zv2LIfY/SYfBQ9Ho9+fn5+Pv7s2/fPiZMmMDo0aO5+eab6dChQ62NvfRTBez8/RSJ8dk4uNjQ5YZQoq8NQmd7fujKYjBQvHUrJbtj0e/Zg+H4cWRJySUfr9bDA12APzb+AUp8ln8ANn6+aJydETY2SLMZS3EJ5vw8jClnMSYlYjh8BGNy8rl92LZqhUPHjsrSqSN2bdogGtmwlVKSXJRMfHY8h7IPcSjrEIeyD1FoLATOGz2RXpG0cmtFS7eWtHRrSYBTABpRo1eqQQ2cmvSEEMIOWAB0BbKBO6SUp6vbZ3M1cCwWCztTjrLs6Dp2ZfxFhvEoQgraFjswvjCHEYYMBAIZ0hNNp7sg5tYL4iCklBSuWkXam28hjUaCZ83EqYdSQqZMb2LrEiU3V+suPlw/pT3ZaWfp260Lw67txyc/Lqmz3JeiFxoDabEwbcJYfDWSKR9/weqNm9Dr9dxyyy01xgKazRZ++3QfZ4/lMXB8ZJXVxsvJWbSI9Dffwi48nIB33sahfftq+zcUR3KO8NWBr1h3Zh0AvQN7c0PYDfQP7o+Xg1cNWzcQRoMSz1eSrSz6PGWm1r+X4qzzdf5eyb7yDRwhhBY4BgwBkoFdwJ1SykOV9e/Wtav8Z8kSypKSKTtzGsOBg5Ts24vxTCIAdhERuI8Zg9uIm6vMT1NXzCYL2SlFnD6YzeGtZynKLSUk0oOB4yNx8bTHYrGQmppKeno6KSkpJCQkEH/wIBFernDmOEYPX6Yv+oUxY8bwwgsvEB5e+0rlzY1LGWu3mM0sm/EGZw7u45o7J9DphpvQWd24a9eu5Y033mDr1q1IKXFwcKBLly788ssv+Pv7c+TIEdLT0/H19cXDwwMPDw/s/uWFS0vIZ8eKBJKP5GJjr6VVRx9adfbBp4ULzh52Fxi3UkpM6ekYk5Mx5+UpS34+0mxBaLUInRZhZ4fWywudlzc6by90fn519vyZ8/IwHDqE/sAB9PsPoN+/H7O1Xo9wcFC8O1FR2IaFYtOiBbahoei8vBr1CVBKSVJhkmLwZB8iPjueo7lHz3l6AOy19gQ6BxLgFIC/kz9+Tn74O/rj5eCFu507HnYehLiGNJiBUxs9IYR4GOggpXxQCDEWGCWlrDZJUlMZOAajmeziMrILS0nOzyYx8xCJ2YdILzxFhjGRDG06JboyAFqXmri5uJCRRcW4a50RoX3QRg6H8GHgfP7hyFJWRtnJk5Ts2k3e0qWUHj6Mffv2BM54D22LMLKTizkdl0X83ynoC410uaEF3YaHMu+rz3nxxZfIKSxi/pyvmHBv3QtJNocYnH+TczaFhVMfw90/gO/3HmHthg3odDq6d+9O37596dOnD6NGKaV6jEYjNjbnPZhlBhN/fn6AlKN5tOzoTafBIfi3ckNTRabjos2bOfv8C5hzc3EeOBDXYUNx6NwFm6DARk/cmlqUytITS1lxcgUpRSkIBOEe4XTy7USkZyQhLiHn0mA0u5xfFjNotFeFgdMbeE1KeYP19f8BSCmnV9bfzd5RhvtWDFAV+Ht4clO3Pgg7O376ZyP5F0zxlrTw8eeGzkqE+3ebVlFcaqB8gotE0sY/mEEduiKBuet+o8xkQkolZ4lFSqKCw7g2ohNGo5nPVv+MWVqwSAsWYcFoNnF9z27cNmgABcUlTHj9QrHtdDpujIngoYcepP/dU0CrxbaRx2gbgsOHDwMQGVn9+HQ5pSXF/DnzQxJid6Kzs8MjIAgHF1fsHBxBQF5BEQdPJnD0TBInk8/yxkNTsLOx4etlv7P8ry0X7Eun1bLkg7fRaDQs/GM12w7EodNqlVlJFoFOo+P+AUpc04bDu0jISEGjsc5gEuDs4MikwTeBgD92bSUx43xSPCEE7s4ujL1WSQ62fPvfpOVmK23WPj5uHozqMwCAX7duJLsg74KAukBPb27qodTKWvz3WgpKLnTPhnr5MiS6M7KsjO+3bkBf4fcI0Nrbl/5tohBaDfN3/I3ZYuG8AIJI/yD6to3CIiXfbF130bmOCQqlR8twykxGFm7fdFF7l9DWdG7RiqJSAz/u3HxRe49W4cQEhZJbXMive7ZzXl8o88J6tw6njZ8/mYUFrDq499x2sacTGtLAqVFPCCFWW/tsE0LogDTAR1aj8Jzs7GQ7//LUAkq3zi3C6BAcSpHBwK97dly0TY+WbYgMCCKnuIjf9sde1N63TQRtfP3JKMhnZdy+i9r7R0QR6uXD2bxs1h2Ku6h9cFQ0QW6eJGZnsunYYWXWnfW7B7gxpgt+ru4cT09ly4nDyrciUYLCgREduuDl4sbh7Ay2nzyGlGCxSJBKLqZxA4YQHOrJHzu38+O6TZjMFkK8PHhv+nTuvO+Bqk5VrbhUvdBYnD6wlz8+fZ+SgnwyzYJj6dkcSUrhZMpZukS0Zdq9St6xSa9Pp1hvwNHBHgc7O+xsbOgVHcXQzn3ISS3h6/VLsUiJVqtRdIpGEBPammvad0ZKC3PWLAcJ0mREms0IKekQ2ILuYW0oNZv5fne5Ljt/qXQNs16PBj0/7tpykey9WkXQPqgFucVFLNmz7aL2fm2jiPAPIr0gj9/377qofWC7GMK8/UjKyWR1fPn1ev6SuC6yA8EeniRmZ7HpaPxF2w+L6YyfqzsnM9LYcvzwRe03d+qGp5MLh1OT2Zlw/KL2UV164ergwMHkM+w5k3BR++09+uJgY8ueMwkcTD4DQIC7J7/t23VVVBMPApIqvE4GLphvJ4S4H7gfwMHGhjN5WeUtAEgdGMryoAySM1LIKS6+wFduKyzoC5WbWEpWKsWlpdatlV4eDraUlmQCkJWXjdFsRgjOTek1lBag0RbgYCNwsNeg09lgo9Oi02qx1elws9FSkJmORUomXj8AV0dHfDw9adW6FWFtI4jo3Q+v4MssntbMuFQFZufoxC3PvUxi3H5Oxu4gPz0NfWEBxbnnqw9H+XgQ5e0OXWPIP5sMUtKvdQvaeN5IoV5PsaGMktJSjGYzmadPAmBrNODj7IjZYsFkNmOxSHRaC06u+ZhNFspMeRTp85GSc4n2SkuLKcpNAgkZWamczUoHzl/y+pJCirKVn2RqRgpJOdkXHEtZafG59pT0ZNL+FY8jjYZz7UlpSeQWXzgkZiNNlJSEKO15Wdbf43mF4+xsh8GmFCQk5mViMl+Yf8fT2Z4SYx4WKTltlb0ifq5OlBh9MRiNlbYHe7pRUuZJkUFfaXtrHy9KytwoLC3kTCXt0YEBSIsHZcYSkrKzLmpvIGrUExX7SClNQoh8wAu4QMiK+kSn0ZCUk3nBTlr5eGGWpZSa9STlXHx87QL8lHZT5e2FpcGYZRl6Y+XtxaXFWKQbJWX/arcqLb2xFIswU2Q0kJhbyfZlxRgt9uQbCjmTk8G/d1CqA7Odhnx9IUlZ6ef2W27k27kYsZhKCPZ05+Zr+tCjRw8eevZ53Hwuvz5bczNsygnr0JmJH8zi8JZNpB4/SteCPAyFhZjNZkpKy8hKOgNSMiC6HYV6A/rSMgxlZZSZTBiLCzHqU3F2Bb2pkDKjGYvFYrUpJYEujhTneWO2WEhMT7nos4O8PTBoDOhNZf/6vhRCvd0pKfOksLSk0uuxja8XJWWuFBgKK22PCvSjpMyJAn1upe25JUH4G+0pMuSTlJ15Ubu+tBCLxYHi0sJK20tKCzGZbcjX55NY2fZlhZjsNeSXVN5eairEZLaQW5xXaXuZsQgbjR05xbnn2jWi7k6Y5ubBuRUYKqW81/p6PNBTSvloZf2b65j5f40ZM2YAMHXq1CaWRKUZ0ZAenBr1hBAizton2fr6pLVPlVaYqk/qF1UvqNQjV4UHJwUIqfA62PqeSjNGr9fX3ElFpf6ojZ4o75NsHaJyQwk2VmkkVL2g0tQ0NwNnF9BWCNESRUGNBe5qWpFUamLy5MlNLYLKf4va6IkVwARgG3ArsKG6+BuV+kfVCypNTbMycKxj5Y8Cq1Gmf86TUl4c6aTSrAgJCam5k4pKPVGVnhBCvAHsllKuAOYCC4UQJ4AcFCNIpRFR9YJKU9OsDBwAKeWfwJ9NLYdK7Xn3XSUFyQsvvNDEkqj8V6hMT0gpX6mwbgBua2y5VM6j6gWVpqbZGTgqVx6l1ploKioqKuWoekGlqVENHJXL5rHHHmtqEVRUVJoZql5QaWpUA0flsvH0rLoshYqKyn8TVS+oNDWNW+ZY5apk+vTpTJ9eabJpFRWV/yiqXlBpalQPjsplU1ZW1tQiqKioNDNUvaDS1DSrTMaXihCiEDjaxGJ486/076oMqgyqDNhLKaObWIZLQgiRCZy5zN00h3NfW64UWa8UOUGVtaGokz650j04R6WU3ZpSACHEblUGVQZVhotlaMrPrwtSSp+ae1VPczj3teVKkfVKkRNUWRuKuuoTNQZHRUVFRUVF5apDNXBUVFRUVFRUrjqudAPnq6YWAFWGclQZFFQZFJqDDE3BlXTcV4qsV4qcoMraUNRJ1is6yFhFRUVFRUVFpTKudA+OioqKioqKispFqAaOioqKioqKylVHszVwhBBDhRBHhRAnhBAXlaMVQtgJIX60tu8QQoRZ3w8TQuiFEPusyxeNLYO1rYMQYpsQIl4IcVAIYd+YMgghxlU4B/uEEBYhRKdGlsFGCPGt9fgPCyH+ry6ff5ky2AohvrHKsF8IMaABZbhWCLFHCGESQtz6r7YJQojj1mVCE8mwSgiRJ4T4va6ffzkyCCE6VbgmDggh7rgcOZoDQoj3hRBHrMezVAjhXkW/09bf4L6mmkJ/CbJW+/02NEKI26y/EYsQosppzM3knNZW1iY9p1YZPIUQa606aK0QwqOKfuYK940VjShfne+3VSKlbHYLoAVOAq0AW2A/EPWvPg8DX1jXxwI/WtfDgLgmlkEHHAA6Wl97AdrGlOFffWKAk01wHu4CFlvXHYHTQFgjy/AI8I113ReIBTQNJEMY0AFYANxa4X1PIMH638O67tGYMljbBgE3A7838HVR1XkIB9pa1wOBVMC9rrI0hwW4HtBZ198D3qui32nAu7nLWpvvtxHkjAQigE1At2r6NYdzWqOszeGcWuWYAbxgXX+hmt9qURPIVi/3un8vzdWD0wM4IaVMkFKWAYuBkf/qMxL41rr+CzBICCGaiQzXAweklPsBpJTZUkpzI8tQkTut29aFy5FBAk5CCB3gAJQBBY0sQxSwAUBKmQHkAXVJblWjDFLK01LKA4DlX9veAKyVUuZIKXOBtcDQRpYBKeV6oLAOn1svMkgpj0kpj1vXzwIZwGUn12tKpJRrpJQm68vtQHBTylMdtZS1NtdagyKlPCylbOoM9bWilrI2+Tm1UlFHfgvc0gQyVEWD3PObq4ETBCRVeJ1sfa/SPtaLNh/FUwLQUgixVwjxlxDimiaQIRyQQojVVlf91CaQoSJ3AD80gQy/AMUoT+qJwAdSypxGlmE/MEIIoRNCtAS6AiENJENDbNsQ+7kc6kUGIUQPlCe1k/UkV3NgMrCyijYJrBFCxAoh7m9EmaqiKlmbw2+stjS3c1oVzeWc+kkpU63raYBfFf3shRC7hRDbhRC3NI5o9Xavu4ArvVRDZaQCLaSU2UKIrsAyIUR7KWVdPAd1RQf0A7oDJcB6IUSs9Qm6URFC9ARKpJRxjf3ZKFa5GWU4wgPYLIRYJ6VMaEQZ5qG4kXej1Bn6xyqTShMhhAgAFgITpJQXeZqaG0KIdYB/JU0vSSmXW/u8BJiA76vYTT8pZYoQwhdYK4Q4IqX8u5nK2uDURs5a0GzOaXOhOlkrvpBSSiFEVTliQq3ntRWwQQhxUEp5RT6INFcDJ4ULn7KDre9V1ifZOgTiBmRLZYCuFEBKGSuEOIniUbnUILQ6y4Biff4tpcwCEEL8CXQBLtXAuRwZyhlL3b03lyvDXcAqKaURyBBCbEUZHrpUA+dyfw9PlXcSQvwDHLvEz6+tDNVtO+Bf225qZBnqi8uSQQjhCvyBcnPYXs+yNQhSysHVtQshJgI3AYOsv7fK9pFi/Z8hhFiKYvzX+824HmRtlN9YTXLWch/N4pzWgka7bquTVQiRLoQIkFKmWh8yMqrYR/l5TRBCbAI60/Ce1vq4111Ecx2i2gW0FUK0FELYotyk/x3NvQIon41yK7DBapX6CCG0AFYLtC2XfkO9LBmA1UCMEMLR+kX0Bw41sgwIITTA7dQ9/uZyZUgErrPK4gT0Ao40pgzW78DJKsMQwCSlbKjvoipWA9cLITysMxeut77XmDLUF3WWwdp/KbBASvlLA8rYaAghhgJTgRFSypIq+jgJIVzK11G+/0b3qNZGVprHb6xGmss5rSXN5ZxW1JETgIu8T1YdZWdd9wb6Urd716VyWfe6KqkpCrmpFuBGlCftkyhPewBvoFycAPbAz8AJYCfQyvr+GCAe2AfsAW5ubBmsbXdb5YgDZjSRDAOA7U34XThb349HuUieawIZwoCjwGFgHYr7taFk6I7ivStGebKIr7DtZKtsJ4BJTSTDZiAT0Fv73NCYMlivCSPKtVm+dLrc32dTLtbvM6nC8ZTP8ggE/rSut0KJBdtvvRZeaq6yVvX9NrKco6y/n1IgHVjdjM9pjbI2h3NqlcELZRThOIou9LS+3w342rreBzhoPa8HgSmNKF+d73VVLWqpBhUVFRUVFZWrjuY6RKWioqKioqKiUmdUA0dFRUVFRUXlqkM1cFRUVFRUVFSuOlQDR0VFRUVFReWqQzVwVFRUVFRUVK46VANHpV4QQrgLIR62rg8Ql1ixWggxUQgRWIt+tareq6Ki0nwRQhRdxraPCqWitLTmail/XwghPrW2HRBCdKnQFlCdTqqov6pony+EuNW6vlgI0bau8qs0HqqBo1JfuKNUe60rE1FyR9REHDCaBshYqqKickWwFRiMUnqlIsNQEru2Be4HPq/Q9jQwp5p9ulN7/fU5SsJElWaOauCo1BfvAq2FEPuA9wFnIcQvQogjQojvhVCqvgohugqlCGqsUIqRBlifjLoB3wsh9gkhHIQQrwghdgkh4oQQX5VvL6+gSsMqKirVY/W6vG+9zg8KIe6wvq8RQsy26o+1Qog/yz0oUsq9UsrTlexuJEqWbCmVMiDu1pIEoCSAXWXdd3shxE6rrjlg9cac019WeYQQYqYQ4qhQ6jv5VviczcBgoWSpV2nGqAaOSn3xAnBSStkJeA6lfsmTQBRK1tG+Qggb4DPgVillV5RCmG9LJW3/bmCclLKTlFIPzJRSdpdSRgMOKPVzVFRUri5GA52AjihemfetRslolCzkUcB4oHct9lVpRWohREsgV0pZan3/QeATq67qZu13Tn9JKZ9DyVAcYf38e1Ay/AIglQKxJ6wyqzRjVAtUpaHYKaVMBrB6dcKAPCAapfIvgBal+ntlDBRCTAUcAU+UdOy/NajEKioqjU0/4AcppRlIF0L8hVLqox/ws9WYSBNCbLyMzwhAKVFSzjbgJSFEMLBESnncqo8qcm0Fuc4KITb8qz0DZUg99jLkUmlgVANHpaEorbBuRvmtCZS6RNU+jQkh7IHZQDcpZZIQ4jWUOiQqKioqVVFVRWp/KugPKeUiIcQOYDjwpxDiAS69ILM9Sk03lWaMOkSlUl8UAi419DkK+AghegMIIWyEEO0r2b5cGWUJIZxRKseqqKhcfWwG7hBCaIUQPiiek50ogcRjrLE4fiiFg2tiBXCPNX6mF5AvpUxFKeAYVt5JCNEKSJBSfopSUbsDF+uvvyvIFQAM/NdnhdN8q5erWFENHJV6QUqZDWwVQsShBBlX1qcMxVh5TwixH6WicfnY9nzgC+twVinKjIc4YDWwq3wfQohRQohklDH5P4QQqxvieFRUVBqFpcABlOrVG4CpUso04FeU2JhDwHfAHiAfQAjxuFUHBAMHhBBfW/f1J4on5gSK/ngYQEpZDJwUQrSx9rsdiLPqmmiUwORz+ksI8b5VruPWz1+AMqyF9fP9AL1VTpVmjFpNXEVFRUWl2SGEcJZSFgkhvFC8On3ralQIIUYBXaWU0+pBrqeAAinl3Mvdl0rDosbgqKioqKg0R34XQrgDtsCbl+MxkVIutRpK9UEesLCe9qXSgKgeHBUVFRUVFZWrDjUGR0VFRUVFReWqQzVwVFRUVFRUVK46VANHRUVFRUVF5apDNXBUVFRUVFRUrjpUA0dFRUVFRUXlquP/AaFoN/oBMK2uAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 2)\n", "for t in range(history_acceptor_var.max_t + 1):\n", " pyabc.visualization.plot_kde_1d_highlevel(\n", " history_acceptor_var,\n", " x=\"theta1\",\n", " t=t,\n", " refval=theta_true_var,\n", " refval_color='grey',\n", " xmin=theta1_min,\n", " xmax=theta1_max,\n", " ax=ax[0],\n", " numx=200,\n", " label=f\"Generation {t}\",\n", " )\n", " pyabc.visualization.plot_kde_1d_highlevel(\n", " history_acceptor_var,\n", " x=\"std\",\n", " t=t,\n", " refval=theta_true_var,\n", " refval_color='grey',\n", " xmin=std_min,\n", " xmax=std_max,\n", " ax=ax[1],\n", " numx=200,\n", " label=f\"Generation {t}\",\n", " )\n", "ax[1].set_xlabel(\"log10(std)\")\n", "ax[1].set_ylabel(None)\n", "\n", "ax[0].plot(theta1s, vals_theta1, color='black', linestyle='--', label=\"True\")\n", "ax[1].plot(stds, vals_std, color='black', linestyle='--', label=\"True\")\n", "\n", "ax[1].legend()\n", "fig.set_size_inches((8, 4))\n", "fig.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that we are able to estimate both parameters quite reasonably (the exact details of course depending on the data and model), they fit to the true posteriors. We omit the comparison in the standard approach with parameter-dependent noise added to the model output, as this performs inferior. It can be trivially implemented.\n", "\n", "Fur further aspects, see also [this notebook](https://github.com/yannikschaelte/Study-ABC-Noise/blob/master/study_abc_noise/estimate_noise_parameters/gaussian.ipynb) of the underlying study." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.8" } }, "nbformat": 4, "nbformat_minor": 4 }