{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Numerical Evaluation of Integrals\n", "====\n", "\n", "Integration problems are common in statistics whenever we are dealing with continuous distributions. For example the expectation of a function is an integration problem\n", "\n", "$$\n", "E[f(x)] = \\int{f(x) \\, p(x) \\, dx}\n", "$$\n", "\n", "In Bayesian statistics, we need to solve the integration problem for the marginal likelihood or evidence\n", "\n", "$$\n", "p(X \\mid \\alpha) = \\int{p(X \\mid \\theta) \\, p(\\theta \\mid \\alpha) d\\theta}\n", "$$\n", "\n", "where $\\alpha$ is a hyperparameter and $p(X \\mid \\alpha)$ appears in the denominator of Bayes theorem\n", "\n", "$$\n", "p(\\theta | X) = \\frac{p(X \\mid \\theta) \\, p(\\theta \\mid \\alpha)}{p(X \\mid \\alpha)}\n", "$$\n", "\n", "In general, there is no closed form solution to these integrals, and we have to approximate them numerically. The first step is to check if there is some **reparameterization** that will simplify the problem. Then, the general approaches to solving integration problems are\n", "\n", "1. Numerical quadrature\n", "2. Importance sampling, adaptive importance sampling and variance reduction techniques (Monte Carlo swindles)\n", "3. Markov Chain Monte Carlo\n", "4. Asymptotic approximations (Laplace method and its modern version in variational inference)\n", "\n", "This lecture will review the concepts for quadrature and Monte Carlo integration." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Quadrature\n", "----\n", "\n", "You may recall from Calculus that integrals can be numerically evaluated using quadrature methods such as Trapezoid and Simpson's's rules. This is easy to do in Python, but has the drawback of the complexity growing as $O(n^d)$ where $d$ is the dimensionality of the data, and hence infeasible once $d$ grows beyond a modest number." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Integrating functions" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from scipy.integrate import quad" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def f(x):\n", " return x * np.cos(71*x) + np.sin(13*x)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.linspace(0, 1, 100)\n", "plt.plot(x, f(x))\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Exact solution" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.0202549" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sympy import sin, cos, symbols, integrate\n", "\n", "x = symbols('x')\n", "integrate(x * cos(71*x) + sin(13*x), (x, 0,1)).evalf(6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Using quadrature" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.02025493910239419" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y, err = quad(f, 0, 1.0)\n", "y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Multiple integration\n", "\n", "Following the scipy.integrate [documentation](http://docs.scipy.org/doc/scipy/reference/tutorial/integrate.html), we integrate\n", "\n", "$$\n", "I=\\int_{y=0}^{1/2}\\int_{x=0}^{1-2y} x y \\, dx\\, dy\n", "$$" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.0104166666666667" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x, y = symbols('x y')\n", "integrate(x*y, (x, 0, 1-2*y), (y, 0, 0.5))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.010416666666666668" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from scipy.integrate import nquad\n", "\n", "def f(x, y):\n", " return x*y\n", "\n", "def bounds_y():\n", " return [0, 0.5]\n", "\n", "def bounds_x(y):\n", " return [0, 1-2*y]\n", "\n", "y, err = nquad(f, [bounds_x, bounds_y])\n", "y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Monte Carlo integration\n", "----\n", "\n", "The basic idea of Monte Carlo integration is very simple and only requires elementary statistics. Suppose we want to find the value of \n", "$$\n", "I = \\int_a^b f(x) dx\n", "$$\n", "in some region with volume $V$. Monte Carlo integration estimates this integral by estimating the fraction of random points that fall below $f(x)$ multiplied by $V$. \n", "\n", "\n", "In a statistical context, we use Monte Carlo integration to estimate the expectation\n", "$$\n", "E[g(X)] = \\int_X g(x) p(x) dx\n", "$$\n", "\n", "with\n", "\n", "$$\n", "\\bar{g_n} = \\frac{1}{n} \\sum_{i=1}^n g(x_i)\n", "$$\n", "where $x_i \\sim p$ is a draw from the density $p$.\n", "\n", "We can estimate the Monte Carlo variance of the approximation as\n", "$$\n", "v_n = \\frac{1}{n^2} \\sum_{o=1}^n (g(x_i) - \\bar{g_n})^2)\n", "$$\n", "\n", "Also, from the Central Limit Theorem,\n", "\n", "$$\n", "\\frac{\\bar{g_n} - E[g(X)]}{\\sqrt{v_n}} \\sim \\mathcal{N}(0, 1)\n", "$$\n", "\n", "The convergence of Monte Carlo integration is $\\mathcal{0}(n^{1/2})$ and independent of the dimensionality. Hence Monte Carlo integration generally beats numerical integration for moderate- and high-dimensional integration since numerical integration (quadrature) converges as $\\mathcal{0}(n^{d})$. Even for low dimensional problems, Monte Carlo integration may have an advantage when the volume to be integrated is concentrated in a very small region and we can use information from the distribution to draw samples more often in the region of importance.\n", "\n", "An elementary, readable description of Monte Carlo integration and variance reduction techniques can be found [here](https://www.cs.dartmouth.edu/~wjarosz/publications/dissertation/appendixA.pdf)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Intuition behind Monte Carlo integration" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We want to find some integral \n", "\n", "$$I = \\int{f(x)} \\, dx$$\n", "\n", "Consider the expectation of a function $g(x)$ with respect to some distribution $p(x)$. By defiitinon, we have\n", "\n", "$$\n", "E[g(x)] = \\int{g(x) \\, p(x) \\, dx}\n", "$$\n", "\n", "If we choose $g(x) = f(x)/p(x)$, then we have\n", "\n", "\n", "\\begin{align}\n", "E[g(x)] &= \\int{\\frac{f(x}{p(x)} \\, p(x) \\, dx} \\\\\n", "&= \\int{f(x) dx} \\\\\n", "&= I\n", "\\end{align}\n", "\n", "\n", "By the law of large numbers, the avaregae converges on the expectation, so we have\n", "\n", "$$\n", "I \\approx \\bar{g_n} = \\frac{1}{n} \\sum_{i=1}^n g(x_i)\n", "$$\n", "\n", "If $f(x)$ is a proper integral (i.e. bounded), and $p(x)$ is the uniform distribution, then $g(x) = f(x)$ and this is known as ordinary Monte Carlo. If $f(x)$ is imporper, then we need to use another distribtuion with the same support as $f(x)$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Intuition for error rate\n", "\n", "We will just work this out for a proper integral $f(x)$ defined in the unit cube and bounded by $|f(x)| \\le 1$. Draw a random uniform vector $x$ in the unit cube. Then\n", "\n", "\n", "\\begin{align}\n", "E[f(x_i)] &= \\int{f(x) p(x) dx} = I \\\\\n", "\\text{Var}[f(x_i)] &= \\int{(f(x_i) - I )^2 p(x) \\, dx} \\\\\n", "&= \\int{f(x)^2 \\, p(x) \\, dx} - 2I \\int(f(x) \\, p(x) \\, dx + I^2 \\int{p(x) \\, dx} \\\\\n", "&= \\int{f(x)^2 \\, p(x) \\, dx} + I^2 \\\\\n", "& \\le \\int{f(x)^2 \\, p(x) \\, dx} \\\\\n", "& \\le \\int{p(x) \\, dx} = 1\n", "\\end{align}\n", "\n", "\n", "Now consider summing over many such IID draws $S_n = f(x_1) + f(x_2) + \\cdots + f(x_n)$, \\ldots, x_n. We have\n", "\n", "\n", "\\begin{align}\n", "E[S_n] &= nI \\\\\n", "\\text{Var}[S_n] & \\le n\n", "\\end{align}\n", "\n", "\n", "and as expected, we see thatI \\approx S_n/n. From Chebyshev's inequality,\n", "\n", "\n", "\\begin{align}\n", "P \\left( \\left| \\frac{s_n}{n} - I \\right| \\ge \\epsilon \\right) &= \n", "P \\left( \\left| s_n - nI \\right| \\ge n \\epsilon \\right) & \\le \\frac{\\text{Var}[s_n]}{n^2 \\epsilon^2} & \\le\n", "\\frac{1}{n \\epsilon^2} = \\delta\n", "\\end{align}\n", "\n", "\n", "Suppose we want 1% accuracy and 99% confidence - i.e. set\\epsilon = \\delta = 0.01$. The above inequality tells us that we can achieve this with just$n = 1/(\\delta \\epsilon^2) = 1,000,000$samples, regardless of the data dimensionality." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example\n", "\n", "We want to estimate the following integral$\\int_0^1 e^x dx$. The minimum value of the function is 1 at$x=0$and$e$at$x=1$." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.linspace(0, 1, 100)\n", "plt.plot(x, np.exp(x))\n", "plt.xlim([0,1])\n", "plt.ylim([0, np.e])\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Analytic solution" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1.71828182845905" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sympy import symbols, integrate, exp\n", "\n", "x = symbols('x')\n", "expr = integrate(exp(x), (x,0,1))\n", "expr.evalf()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Using quadrature" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1.7182818284590453" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from scipy import integrate\n", "\n", "y, err = integrate.quad(exp, 0, 1)\n", "y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Monte Carlo integration" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 10 1.748971\n", " 100 1.692790\n", " 1000 1.712451\n", " 10000 1.717981\n", " 100000 1.717453\n", " 1000000 1.718099\n", " 10000000 1.718495\n", " 100000000 1.718283\n" ] } ], "source": [ "for n in 10**np.array([1,2,3,4,5,6,7,8]):\n", " x = np.random.uniform(0, 1, n)\n", " sol = np.mean(np.exp(x))\n", " print('%10d %.6f' % (n, sol))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#### Volumne of integration" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Monitoring variance in Monte Carlo integration\n", "\n", "We are often interested in knowing how many iterations it takes for Monte Carlo integration to \"converge\". To do this, we would like some estimate of the variance, and it is useful to inspect such plots. One simple way to get confidence intervals for the plot of Monte Carlo estimate against number of iterations is simply to do many such simulations.\n", "\n", "For the example, we will try to estimate the function (again)\n", "\n", "$$\n", "f(x) = x \\cos 7x + \\sin 13x, \\ \\ 0 \\le x \\le 1\n", "$$" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def f(x):\n", " return x * np.cos(71*x) + np.sin(13*x)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.linspace(0, 1, 100)\n", "plt.plot(x, f(x))\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Single MC integration estimate" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.13295443073705129" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = 100\n", "x = f(np.random.random(n))\n", "y = 1.0/n * np.sum(x)\n", "y" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Using multiple independent sequences to monitor convergence\n", "\n", "We vary the sample size from 1 to 100 and calculate the value of$y = \\sum{x}/n$for 1000 replicates. We then plot the 2.5th and 97.5th percentile of the 1000 values of$y$to see how the variation in$ychanges with sample size. The blue lines indicate the 2.5th and 97.5th percentiles, and the red line a sample path." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "outputs": [], "source": [ "n = 100\n", "reps = 1000\n", "\n", "x = f(np.random.random((n, reps)))\n", "y = 1/np.arange(1, n+1)[:, None] * np.cumsum(x, axis=0)\n", "upper, lower = np.percentile(y, [2.5, 97.5], axis=1)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEJCAYAAACDscAcAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXmUJFd9oPvFnpm1V3X1vkndUqAVdSOBhCWwZANiwB4O\naMbMeDBgA54xZgBvz+/YZ96xB2yf4fnhDWwfDAbLgDXgMcbnALIlEGITQogGIaToTb1vtVduscf7\n494bmZVd3V3dXS11ifudUyeroiIjbkZG3N/97UZRFGg0Go1Gs1TM53oAGo1Go1lZaMGh0Wg0mvNC\nCw6NRqPRnBdacGg0Go3mvNCCQ6PRaDTnhRYcGo1Gozkv7OU4iO/7q4EPAK8AqsC3gV8PguDJM+x/\nM/AnwA7gCPC+IAjuXY6xaDQajebSctEah+/7BvA5YDvwM8BtwBzwoO/7I4vsvwr4EvAYQnD8OfBR\n3/d/+mLHotFoNJpLz3JoHC8EXgJcEwTBbgDf998ETAOvAf6+Z/+3A7NBELxH/r3b9/2dwG8ADyzD\neDQajUZzCVkOH8ch4LVKaEhy+XqaxgHcDjzcs+0h4CeWYSwajUajucRctOAIgmA6CIIv9mx+N1AB\n/nWRt2wEjvZsOwbUfN8fvdjxaDQajebSsuxRVb7v/yzwB8AfB0EQLLJLDQh7tkXytbLc49FoNBrN\n8rKsgsP3/bcAnwU+HQTB/3WG3dqA17NN/d1czvFoNBqNZvlZlnBcAN/3fwf4n8CfdTm+F+MwsK5n\n23qgEQTB3LnOUxRFYRjGhQ9Uo9FofjxZtolzufI4fgv4feB3gyD4g3Ps/nXgLT3b7gK+sZRzGYbB\nxET9vMf4fGR8fEBfC4m+Fh30teigr0WH8fGBZTvWRQsO3/dvBN4PfAyRj7Gm6991IAFGgekgCBLg\no8Bv+r7/l8CfIpIG3wi86mLHotFoNJpLz3L4OH5OHucXEdFR3T/vAV4qf78NIAiCU8DdiOS/x4Ff\nAd4UBMFXl2EsGo1Go7nEGCuwA2ChVU+BVsM76GvRQV+LDvpadBgfH1g2H4cucqjRaDSa80ILDo1G\no9GcF1pwaDQajea80IJDo9FoNOeFFhwajUajOS+04NBoNBrNeaEFh0aj0WjOCy04NBqNRnNeaMGh\n0Wg0mvNCCw6NRqPRnBdacGg0Go3mvNCCQ6PRaDTnhRYcGo1GozkvtODQaDQazXmhBYdGo9Fozgst\nODQajUZzXixLz/FefN//K8AMguAdZ9nnfwP3AAWdJuoPBEHwyqWcI0kS4jimr6/voser0Wg0mqWz\n7BqH7/u/D5xRYHRxPfBbwDpgrfz5D0s9z/z8PI3GPHmeX9A4NRqNRnNhLJvG4fv+FcBHgeuAg+fY\n1wW2A9+RPcjPmziOiOOIKIqoVqsXcgiNRqPRXADLqXG8FDgE3AAcOMe+LwAs4KkLPZll2RRFQbvd\nvtBDaDQajeYCWDaNIwiCTwKfBPB9/1y7Xw8kwO/7vv9qoA18BnhfEATRUs5nmiZJEpPn2YUPWqPR\naDTnzSVxji+B6+Trj4A/R2gpHwQ2Am9dygHyPCeOE7IsJc9zTFMHiGk0Gs2zwXMy2wZB8DvA2iAI\n/iwIgieDIPgH4N3AL/i+P7KUY5imiWVZJElKkiSXdLwajUaj6fBcaRwEQTDbs+kJ+boJmDnbe8fH\nB3CcjDxv4boOo6M1KpXKj6XWMT4+8FwP4bJBX4sO+lp00Ndi+XlOBIfv+/cBThAEr+/afAsQAXvP\n9f6JiTrz803m59sYRoJlzVCt1rAsC8MwzvX25w3j4wNMTNSf62FcFuhr0UFfiw76WnRYTgH6rAgO\n3/cdYBSYDoIgAT4LfNr3/fcC/wzsBD4AfCAIgtZSjlkUBQCGIX7yPMeyrEsyfo1Go9F0uFS2naLn\n75cCx4DbAIIg+AzwFvnzBEJofDAIgv9nqSf4+MdrvOtdV5HnQmhkWVYKE41Go9FcOi6JxhEEwV09\nf38VkbfRve3vgb+/0HM8/bTLd7/bz8GDDmNjOZaVa8Gh0Wg0zwIr1pt89dUpAPv2VQAoik4+R55r\nIaLRaDSXihUrOF7wAiEo9u+vURQFRUFpriqKQgsPjUajuUSsWMFxzTVCcOzbJ+pUFUVOnmekqdBE\nDMPQwkOj0WguAStWcIyPFwwPJ+zdW5FCoyBNs65oKxGWq4WHRqPRLC8rVnAYBlxxRZtjxzyaTUPW\nrCrKJMCi6PyuS69rNBrN8rFiBUdRFGzf3qYoDPbscSgK4SA3DAPDME7TPLTWodFoNMvDihUcpmly\n5ZUiVzAIbEQTQaMUHCCExY9TJrlGo9E8G6xYwVEUBVddJSqw793rlc7wNE1P0zrU/hqNRqO5eFas\n4LAsiyuvjAHYs8clTWOKIgeKBZqG9m9oNBrN8rJiBQdArZaybl3Inj0eAEXRiaLSJiqNRqO5NKxY\nwaGS/q68ss30tM3kpClzOIxFhYc2VWk0Gs3ysGIFR5qmJEnMli0NAHbvdgHIsrTMHu8OzdVoNBrN\n8rBiBYcSBlu2zAHCQa40jTxfmAioBIkWIBqNRnPxrFjBIVrH2mzYIARHEDgIxzjkeUGWZeV+KuJK\no9FoNBfPihUcSZKQJAkbNoTYds7evZWuvhy5jLAS6AxyjUajWT5WrOCI45g4DjHNhE2bWuzb55Gm\nlKVHumtUqbwOXbdKo9FoLp5L0sjJ9/2/AswgCN5xln1uBv4E2AEcAd4XBMG9Sz1HliWEYUKaRmzZ\nMs8zz/Rz+LDF9u0p7XaB6zqAqJzbnRCoQ3U1Go3m4lh2jcP3/d8Hzigw5D6rgC8BjyEEx58DH/V9\n/6eXep5Wq0m73aAocrZsEc3of/hDiyRJUEmA3aap7ggrrXVoNBrNhbNsGofv+1cAHwWuAw6eY/e3\nA7NBELxH/r3b9/2dwG8ADyzlfHmekyQxeW5z3XWTgM8//dMYr371YaJIaBeumyzQLnQNK41Go7l4\nllPjeClwCLgBOHCOfW8HHu7Z9hDwE0s9WZ5ntNttALZvn2bHjim++91hHn+8hmGIPI8sS0u/hhIW\nWtvQaDSai2PZBEcQBJ8MguAtQRCcWsLuG4GjPduOATXf90eXcr6ZZw7gBk8RhjFQ8HM/txuAj3xk\nNQCWZZJlGXmeked5qWFo4aHRaDQXx3MVVVUDwp5tkXytLOUAw7sD7vjc55ifnyNNM666apKdO6d4\n9NEBvvMdhzwvMAxTmrQSLSw0Go1mmbgkUVVLoA14PdvU381zvXl8fICnr9jEyPQUadqmUrGpVCr8\n0i8d5vHHx/joR9fw8pefoL/fpq+vjzRNcV0X27bLUiSWZT0v/Bzj4wPP9RAuG/S16KCvRQd9LZaf\n50pwHAbW9WxbDzSCIJg715snJuqcrA5x29wczZlZGo2Idjtm06aUW27Zyre+Ncy//mvCbbdN0tfX\nJs8LPE8IDsMwMU1T/r6yBcf4+AATE/XnehiXBfpadNDXooO+Fh2WU4A+V6aqrwMv69l2F/CNpR6g\nnSbUBwYYnpsljmPyHMKwxc///AEAPvGJ9UCOYUCepyRJSppmso6VTgTUaDSaC+VZ0Th833eAUWA6\nCIIEEbb7m77v/yXwp8ArgDcCr1rqMev1BjMjI4xMTxNnMe12SqVS5cYbW+zcWefRR4fYt2+SnTtt\n6RwvyPOUPIc0NSkK0QzKNM0yx0Oj0Wg05+ZSzZi9y/mXIqKmbgOQkVd3I5L/Hgd+BXhTEARfXeoJ\nms02M6OjjM7MkOeQJB1t4o1vnATgk58cJk2zrsKHOXEcyzpXIUkSS21FtJxNUxG+q350sqBGo9Gc\nziXROIIguKvn768CVs+2R4FbL/Qctg3TUuPY02xQqdSI4wjDgNtum2bDhnV88Ysj/PqvzzE6mi/w\nb2RZRpZZpGmEaRpAgWla5+xTrkqXqN81Go3mx5EVa6OJ44SZ0VFGZmawLEtqEwmtVhvbNnj9648T\nRSb33TfQ5RC3yh8RXaX6khcLzFbdvythoYRKtzYCuoSJRqP58WPFCo4wbDE9MsLo9DTtdluanhKi\nKCQMm7zqVSfo60u5775hoigny1Isy8J1q9i2g21bmKaFZVnl5L9YRV0lQLoFCnCaSUuj0Wh+XFix\nggOyUuNI4oQoSsiyjDBsU6+3cN2Iu+8+ycSEwxe+UCVJUqDAcRxsW1johHAAVYZdmLCy04RIN0rz\nUPt1V93VaDSaHwdWrODo6xsl9jwiz8ObPiUnczGRJ0lEs9nida87hmkW3HvvCEmSEIaRzCKnFBQq\nRDeOQ9I0Jk3jUigsJgxUxd3ugonKuS5KnGgNRKPRPL9ZsYJjZGQYgJmREUZnZojjiCxLSZIE0zQp\niozR0Vluv32Sp5+u8fGPj5CmMXEcEcdRWb/KNM0FrWaFMEkXPacSJsp0tZiAOJu2otFoNM8HVqzg\nqNX6AJgeHWVkepo8jwnDSJqPLKkFxLzrXftZtSrhL/5iHV/7mkOz2SRNk7IjYJKk0lxlYFki8go4\nLRy3u79Ht6McwLbt0pHe6wPRaDSa5xsrVnBUKqK0ldI4QGSIZ1lSTtphGDE0FPL+9+/FNAt++7c3\ncuqU2xMxBUUhhEEURbKabnqav0MJge5kwe6Iq+5QXnVs5QvRGohGo3k+sWIFhzItzUiNQ24lilIM\nIyfPU4pCTP7XXdfiN37jGLOzNu95z1oajYwoEsl/SkAI30deHjtJIpKk8/8sy0q/RreZq1tY9P6v\nW4BoDUSj0TxfWLGCo1oV/cRVSK4iikLm5+vEcYZp2lLAFPzMz5zk3/27CZ58ssob3rCJr3+9Is1Z\nQmA4jjBTJUmKkAUGWZaWWgdwmlYBHSd7d1fB7v0XEyAajUazklmxgmNgYBCgDMlVxHFCnmcYRkFR\niFV+o1Enitq85z37ueeeUxw+7PKOd6zn3e9ew9Gj4hKoirmmKcxXjuNi25Z0ugvhosxO3fkbeZ6d\nZo5aLOO8V3h0ayHdwkmj0Wgud1as4PA84eNo9vVhpymebCMbhiKsNooisiwnDFuEYZM4jujvd/i1\nXzvMvffuYefONg8+OMB//a+byTLVn0O85rkSOkYZqaV6nCdJTJomZJmIvDJNUUmlN5N8MUGwmPBQ\n+2k/iEajWSmsWMFR1ooyDKZlsUOAokhI0xxhaiqkBpKTpjmtVp0kibjyyjof+9hB3vCGOgcOePzD\nP9QQUVUmtu3KXJCYLBNmqyRJaLdbtFotkiQu29F2JvpiQR2rsyUEdmei92aja8Gh0WhWAitWcChH\nNlCWV5f/IU0z4jgmjtvYtkkcp4Rhk1YrJMsK1Md+17tOUatlfPjDY8zMZKWz2zQN4liUL0nTlKIo\nSJIEwwDbdrFtlzwvZDXejsbQKzjOJAi6I7HU3+rc2gei0Wgud1as4LCsztBnujQOEOaqTsRTIcNi\nc4oik3kaIopqbCzjF35hgulpiw99yKPVapdNn8R7O+/xPA/HcaRWYmNZJkouiKTBeIGv4nzLkPQW\nUtRoNJrLlRUrOGzbKX+fXhCSC3EcYZpIzSMr/R2W5WAYondHUWSkac7P/dxxVq2K+bu/G+HQoYQo\n6vgxisLEsmxpTrIQ5i+VWa7yNBLSNJEdBoXfQzjS03MKj95qu90+EG220mg0lysrVnCoDG+QfTm6\nNI4kySkKA9cVxQxdV0RIWZZJnufEcUSj0SbPEyqVgre+9RBRZPKnfzpGux2SZSm2beN5IllQNHnK\nyPOCOI4IQ6GZGEYhS7ZbskWtyC1RtbCSJDktEqu7mGJvdNVi2kq32UsLE41GczmwbI2cfN83gfcD\nbwYGgC8B75Td/hbb/38D9yC6BaquSA8EQfDKpZzPcdzy95nR0QW5HFAQxzGuO4BhCHOV53nEcUS7\n3cY0TarVCnHsYds2r33tLP/4j03+5V+GePjhPm6+uc1LXpJw3XUx27bFDAzEJElKGKbkeSFLsg9Q\nqVQxTRPHEfkjKmTXtm0pHGJZ2iTr+oidMao+Id1RVt1+EpXk2I3SSjQajea5Yjk7AP4e8CbgvwDT\nwF8CnwVedob9rwd+C/i7rm3RhZx4bnCQvmYTK03JbBtISnNTpdKHZTmyRWwmJ15HTtaigZNlwf/4\nH0/y6U9fwa5dQzz44AAPPtg5/thYyrXXtnnxixvcdluDrVtDTLNNpSKSEA3DwHU9oigkzzPSVAgr\noUlkpUai/BjCh9GZ/EUjqoVCIk1TDMOQYcJiX7WPZS1opqjRaDTPKssiOHzfd4D/DvxqEARfltve\nCDzj+/6tQRA80rO/C2wHvnMmjeRcRFFHxhSWxfzgIEOzs0yvWgUI/0aSJKRpShSFuG4F07RI0xzT\nzPG8SldNqoSNGxPe854nqFb7mJys8sQTwxw82M/+/R579jh87WsDfO1rAwBs2hTxR390hBe/uInn\neVhW5zKq6rzCJBZTFAZ9fe4Cc1NHeFD6NmzbLiOzxD7C3NVbG6u7pIlGo9E8FyyXxnET0A98VW0I\nguCg7/sHgDuAR3r2fwGiB/lTF3rCLEsW/D07PMzIzEwpOESPDdFKVtSZshgYqEqnd0EYRnieQZ63\nSNOUMIwpipx2u8nq1QV3351imlOyYq7F8eMGjz8+yiOPDPDFL1Z529u28r/+1zFe8YpW6UDPskRG\nZAmhIEJ5cyyrk69hGGYpLFTmeZ7nCzoRgvLhpLJzYaf6bpqmC0J/NRqN5tlmuZatG+Xr0Z7tx4BN\ni+x/PZAAv+/7/kHf95/2ff9/+r7vLfWEcRwv+HtmZISR2dnybzVBZ5laxYtVuut6FIXIKG+3m6Rp\nRpblsv+4gWEUxHFKq9Wg1WrLEN2E1asj/v2/n+RP/mSCD394iqIwePe7N/KJT7i0Wi2azYaMrErK\nsie2bZMkMa1WmzRNStOYbdtduRsiCitNhSAUjnhVcNGQWewdB7qOutJoNM81y6Vx1IA8CIJeb24E\nVBbZ/zr5+iPgz4EbgA8iBNBbl3JCFcGkmB0ZYbgrsirLUtLUxHEsHMclSSLSNMU0LRmOKxzsoi6V\nTVGIyKkoSknTAssygBjHqWBZKsciJ44z7rqr4GMfa/HOd67jD/9wPZ//fJPbb2/wspdFbNtW0G4b\nhKGF56WMjoq8ESHEYpKkwDRFWRORY0LZvjZJYnkeEZklyp9kpGnSlV2+MOejW4icy3x1pla4Go1G\ncz4sl+BoA6bv+2YQBN3Zax7Q7N05CILf8X3/A0EQKBXhSd/3c+DTvu//WhAEM73v6WZ8fICjR70F\nTuWZ4WGuOX4cEI2VRkeHaDQaeJ5NpeJiWRaua1CtehRFhOPYeJ7J8HAN0zSZno4xDIskSXBdJUwK\nBgdrDAwMYJomrVZLmr0Sbr4ZPvnJffze723kscf6ePLJPv76rxeO0zAKfud3ZnjHO5rUarVyslc9\nz5WJSpmtDMOQyYVW+dmUaUo5yVUor2WJsQ4NeQsisbqr8YoxdCr69jaiUvs/X5zt4+MDz/UQLhv0\nteigr8Xys1yC47B8XcdCc9V6TjdfAdAlNBRPyNdNwFkFx8REnfn5aEEk0mxXLkeapszPh4RhhGG0\nyDKTLEtpNtsMDo4QhiEQEYYp7XaGZZm0200MA1nfKsdxcjkBx4ThHIYB7XZIuy18GpWKh+Nk/MEf\nTBFFHrt2jfHtbw8xM+PgeRnVas63vjXA+943ysGDGe9970mq1QpFAaZpyLBe5ecocBynS9vIZaiu\nQZ6DZRmYpiWjswySJAFyxseHmJlp0YnQKkoTlzCFdQRCd6n33r+762UtxmLVfi83xscHmJioP9fD\nuCzQ16KDvhYdllOALpfg+D7QAF4OfArA9/2twFbg4d6dfd+/D3CCIHh91+ZbEKatvUs75UJT1cxp\nSYBJWVLdcTwZ3oosuW5I57kI0VWZ4Y5ToVazyLKcJIkwTYc4blMUrlyZG5imISO2MkwT2u0GjhPz\nspcVvPKV9dI5blkGp0718a53beXee8eZmLB4//sn6e/3SpNUnnec3eJ4hdQq8jLSSmgeQtCYpnDy\ni6TErNQa8lxkshuG6J9uGEKzUD6RTtXfXFb9LRb0ExH+FUOWVLFOM4Mt1mtksXySy1GgaDSa5WdZ\nBEcQBLHv+x8G/l/f96eACeBDwFeCIHhUhuuOAtNBECSI/I5P+77/XuCfgZ3AB4APBEHQWso5HWeh\n66RVq2FlGV4YElUqJEmI8iFkWVL21RgYGKQoCtI0laYg4ageGBjCNJGhtTlxLMxSYagc1Aa2bWIY\nFkURE8cRaRpj2w5RFGMYrVKbEJO1zdhYi7/8y6f4zd+8ii99aZRHHhnkFa+Y5Wd/1uCmmyLiOOwy\nFXUSAg3D6hp7hmXZiG6GudRUbAxD1OQKwwjbtsr+I4Yh3i8+Xywz3EWtLfE/A6WZiOuQyX3EdRIR\nYp3bQgkN5ePpzj/phA4v3KZDhTWa5zfLmQD4u/J49wIO8EXgV+X/Xgp8GbgTeDgIgs/ICKrfBN4H\nnAI+GATBHy31ZKcVAjQMZqSD/OS6dXQ0kk79J1VTStSZymm3YyoV4fwWDmgIwxa2LfwnzWYbiKlW\na7KooUWWmVJDiHAcR4bTFrRa8xhGTq02SFFkRJGYmD0v44Mf3M3f/M067r9/FZ/5zCo+8xkYHEzZ\nuDFhw4aUTZtyNm7M2LAhY/36hFWrEgYGUkxTlINP06wUFkIbycky1VgqIQyTnmq7SCHTKbqYJCnV\naqX0najrZ1kmpmlLP0tWdj1UAk2EBassdkNGnxVSc+uEFne31V34tRgLXi8l3Sa1blPcxZy718Sn\n0WjAWIFhncXERJ2nnnqSr3zl/gX/eOOnPsWuHTt4+pprurZauG6VLIsBg1WrxqhUajSbDdRcYFk2\nfX0D5HmG69qYpgiZDcOQOI6pVj1EgUMD1zVlgl9BtTqA51nMz8+RJBl9fX1Uq7WyvpVYoReYpqim\nm2Wwa9cqHnxwFU891c/x4y5xvPjq3LZzRkaEcLnxxgY7drTYuTNiZMQmy0SdrP5+j1On5pmcFFFg\n4+MgIqwLOcGbVCoVkiSV2pK5wJeiJnzbtqSJSwgFYfZCmrjE2qJbuxAO+pSFWlJ3SfmFbXN7W++q\n46jclaVM7t33aa/ZrCgKVq3qP6st+1ylWnq7N54pAq1Xu7oc0Xb9DvpadBgfH1i2G3Y5NY5nlU79\np84D3uvnEGQkSSQngow4TimKCNM0iaIYyKhUTMJQJQIaDA0NkaaiV3mWJbRaGZblys5/FrbtSpNU\ngWW5OI4HiKq6YhIG0yxkscVUTtgVoOCmm07x4hdP47oVwODo0YSTJyucOlXl1KkaJ054TE05zMzY\nTE5afP/7Nb73vT4+8QnxaVw3Z2Ago78/JQwtJidtskwIn+HhhG3bQrZvD9mxo85LXhJj2ymOYxGG\ncRnNJRIKhZZlWSZRlMmJXvhDbFslI+ZlAiJ0qvkKH44lS9Xn5bUS34dZllfpFH0sFpjxRDhyd5jx\nmR303XW8YGEvk15hciYB1J0Ds1gY82LnXEzQLPaes51Xo3m+smIFh4gYWvgQz46MMDo1ddq+YrJI\nME237OqXZSIxT0ymFmnaQEx6YnIYHh7GMCwcx5EJfaplrMnQUJU8L2SEFdRqNYqiQqvVpt1uyfe5\ncuLtOJ+FaScvzUHCIV1n7dqETZschoaGqVZrpGkmEwFj6nV46qlRnnxyiD17+pidtajXbWZnbfr6\nCq65ps34eEqeG+zd6/Hd7w7w3e8OcN994xhGwdVXh9xwQ4tt22K2bw/ZuDGhr8/ANDNMM6avz8R1\nHalJiNV/HMdlSHBRpERRVPo4lGPddV1pvhOJk2qCV9cvSTrCREysyN9FeXr5zZCmmYweS1EVj3uj\nwXpDi9VPt7A5mzbQ2yTrbA221P7d23qTLpVgUb+fyZy1mEA5m+lL59loVgorVnAI27xLnncyyGeG\nh7ly377T9lX75HksJ4+YOE7KVXMUCSeybYvVt21HxHFSmnvUallUwrVJ0wTbdsmyhLm5Ofr7h7As\ngyhqY5oOlpWRJCF5XkjntgihrVSqRFGbPC+YmUnKcu9isk6Yn58nDEOZK2LgeVUGB2HHjlPcfPMU\njmMTxxHC12Cxfv0q2u0CSOXnM6jXc4LA4/HHB3j00X6efLKfIKie8Tpee22TO+6Y5667mlx1VUxR\nZOS58JOIMvSqtpZIWBQhxMgILAfLskvzl4jQShENsIoylFj5SvIciiIly6LycxcFhGHaVUpF9JOv\n1foW5KSoyVuZyUR5+rQ0iakoOsVieSyKpVQYVlpK9/F6j9mr/fSep7s0zGLjONv23n20VqO5nFix\ngkOYSU7XOE43VS2k1WoxPDzM/PwshuEgWs22cd1aab+PoohWq4VlGdh2RYbGmhiGhzB9xbICrgi7\nbTbn5cQKllVg267MTldlRHIMIy9zT9JUCJM8z6lWPWzbkaVKQpJEmI9c18MwRE6HaYrVaBTFZFmB\naYoJqdlsUq+HiMsgMtIty+Taa9tcc80c99wT0m7nHDpU5ejRQQ4eHODUKYckgTy3qdddfvjDfn70\nI5G86Dg5o6Mpo6MJQ0MJ/f0pg4PCNDY8nDM0lDM4mLJ6dcyWLRGVSkv2PBECtRO1JbSGSsUuI8OE\n2U+t+HOazVAKGeXvsOV7DeI4Io5jKpUqruvK7zsrI8GEKYxSQwIhmJMklmawXP5fBAGopl+LhRWD\n8sd0tKBuYdUtPHo1je6Eyt6JvRMq3dlnsUTLxaLSev/f7Rda7Dy9v/cKvbMJpl4huNgYesdzNlai\ncFvsGnb/fbbv50zfxZn2v9gxLubrey6u+QoWHBndfcdBaBzDs7OqLsei78vzmNnZOYR5JaVS6SMM\nG2RZIifqFNftB3LpO4ilScQmzzOyTEwyYVgvJ4J6vUW1WqVarUnTlJjAisIkzzumHsMoZDRUShSl\nOI4tV/DChJPnCbadA3ZpMkqSVFbgVb6AgjgOCcMWhpHSaEQYshe6MA0VGIZVai3Vqs1VVzXZunWe\n22/v+IYqlQqVSoVm0+U73xnha1/r5/Bhj5kZl337qsRx3zm/g9WrY664IuS669pcf32b665L8DyL\nKDJptw1IlOH3AAAgAElEQVRMM2V4OGdgIC79G0Jr6HRHVE2zhNlLOPWjqE2W5bRardJfIqK8bKml\nOWUF4qIQDbPm5mBuri5NWLa8psjjhYB6wDrCRlUf7kSYqSRLUH6XjkZBORb1ftWWWEWXqXMowdOd\nK6Neu7cvJmgWm3zOlE9zJm0lTVOZJLrwHGcym6n/LZdWczkGEZxJOJxLqPZe4wsJJjrTYmUpnO18\nSxEilyr4acUKjl7HOEDiecSuS3+jQWPgzFmSeS5KsnteTZp+kEl2whcRRRGeVwFUGKxJGIZUq1UM\nIyUM2yRJKntt2KRpXK6EHccmSQqZ+wFR1KY7mkm1lxWr5LQs1igEQ0Ga5kBOmkZlpniaxnIyE45r\n4WsRtbjyPEGVSnEc8XUmSVK+r3N+myRJ8LwKruuSJDHNZoZlRdx2W53bblMTmxhHFDnMzxu02y71\nusX8vEOj4dBoVDh+3OXIkRqHDlX49rcH+fa3B8/+TRkFfX0im97zciqVonytVg0GB1M2bIhZvz5i\nzZqMOLZptRLCsGBkJGbz5ogNG0w8D9rtpJzgVeRaluV4HjLwoQCSBROrmKiFQBWTgVkWtbSsQpaX\nUY7+To6LEr7Aafk2qiKy0po6n7UjWJTjv1tLUcJGRe6p7d1CQwUDqHtKHVds75hNOz6bhSY1dV26\nu2T2Rrh1072aVdqh8lv1BiWo43T7gbrf3znG6SbBbu1m4f2xuJA52wr+XIJA7ddp9bw4iwnxpfif\nzuUn695nscjBpZotFxtX935LiQa8FKxYweG6wsaeZQt7P6lcjrMJDkUUhRiGMLVAimUpk1Eko4ms\nBbWiokiUXhfO8lQ6iguZhd4mitrSNo80KQlNwnVdaTrJpTBQk5PQKkR0kd31MBblZ3QcV/ZMF3kT\neY40mxk4jkmSFNi2qO6bJLHcN0U4oSmFmmqFK4ReXGpBajIRgiunKCyEz8Siv99i1aoqnlcly5ok\nSYJtm7LisBBac3M2e/YMEwQD7N/fj2EU1GpQqxXEMdTrLvW6Tb1u026btNsmMzMWcWyQJEtPFPS8\njPFxkd/S359SqyW4bkGlYuA4BUXhMTmZMz9vEccmlpVj2wW2vXAi2bw55JZbmtx6a8TICKSpKf1d\nCx3oavI0TQPLMonjiKKAPC+kpmJ0BQfkdHJawDRVCLOJeo6FybGTE1N0hUMLIdLt6FfvKei0Je5M\nuHmOzNHpNPfqnthVAzHlazJNEUoOnYmyO8oMlAavBJvQjpXmpQRTZ1IWQk9o1R2h1114VNyD5oL3\nqc+vPlf3JC+EckfQn0kwdbOUVXtvRN5S3numyLmznft8z3Gm95yLXs3zXGbL8z3+UlmxgiNJ4tOE\nBsi+HLOzHNm8eQlHUbWdOnZogDxPmZmZpVKpkucp1WofjmORJKl8CHM5QYsVs/B5pJimSRjGWJaB\n6wpTkOuK8iCeJ6KzlKZkGIZ0ymfS9BIzNDRcCog0TWg2Q0BkpItzI+31FkUhVstRlJAkwnkdx5mc\nuISZxrIsKhVPlo7PaLXa5WcURRKVUz1H1cUSpjMT1xUTXBzHGMYspmnLcxpyAhUrdMcxueGGBjfe\nKISkaVpUqzVA1N8SN3relTCosvPF9Q5Dk9lZm+PHaxw+bDM1ZeE4BZaVYtsGU1Muhw97HDlSYWbG\n5eTJKkly5qKMhlHgOLnUxk5/YL7znSH+8R/FfmvWKE2u817LEqHU/f0ij2Z4OMV1hUCan7doNk2q\n1YyBgYTBwYTVqxO2bEnYujVjcDBhaspgaipnZsakUkkYHTUYHExwXRG1BjammbJ6dUal0vFfiZL7\nKt8nkyHTaoIXmo64T0QkmpjMkPeuUWqnhmHQaJg0Gs2yvI6IjlO5OcYCoaEEhmGIfJ6OptEdZdap\neyZW8G1UhF2vTwigU5VAaYCiLI4QskhfXCesXT2LykfW7QtSbQXUfSrMyZ08ICHA7S6NrCivJ0Ct\nJqwFylfW/Zz3alTqc3SfT/1vMf+U2vdsmlGvlrWYEOyN4usdm1rQ9AqA3vwp9fpsmKtWrOAQN7JY\nJXezeC7HmSjkjSi+OJGPIMjzmFYrKZ2t4uET/zMMs3T0ZllGux3JmwsgJ4qENtLXV5MrS1EgUa1s\nHceVE0RYmqGyzGBmZoZKxSNJROSQmDhU0yqLSsWRtbDEqiyOCxqNhixD4pQ2eyGccqn92Ni2IUuL\niPGJCSzFskQ0knAiZziOh2nauK4tI8KSsvGVcDJbOE5ValmF1Piy8nOJicmS9btU9eJYaig2lUql\nHKcoQCn8NY5jsm2by/btSohZ0gSYkOci298wRA8W07SIY0jTKnFsEcc2WWazerVLls3juk0sS4xN\nCA4HsfI2ME2PvXsH2LVriF27RjhxoibHrL5zEZmW5xZHj1qk6ekakWUp39fFMziYsGpVTJpCq2XT\nalkkiVmu9g1DCDFx3oJ160K2b29y9dUR1WrGxITN5KRLo2EzOpqyenXC6GiM56VMTjo0mxVcN+Pq\nqyNe8IKY0dFcasc5UWRw9KjNwYMehw9XyDKTzZtDrrgiYvPmFMvKAZGTlKYGUWQSRQV5buB5GbYd\nY5oZYWjRbNpEkU0ci/GrhczIiMHQUE5fXyIrGRhy8ZHgecJcubA6tJiclZ/KMIoFodkdE5r4Swg0\n5X8yFkyk6piNhkG7HdJqNcvJv3vxpI7TebblmXrcpEIYni4Q1PiU4OwIG7o0rnyBmbDzvryc6Bdq\nEVbPto6A7oynKJNwuzW1zjEWRiMut/BYsYJD2PNPFxyzIyNsPHx40fcshjBPiUTAXme7WinFcYpY\nKZrlytkwDFzXJo5j+domTcUkpaKbwjDCsmziuIVtuziOJUNWY9I0x3HEqtKyhOO91Ypku9tEOnhF\nhJZlWbRaLfLcIU1zKhVPPnAupmkTRW2iKMZxhNPYdauAiA7L84xKpUKWqfpcKszYoChMGTHmEMch\nWZYQhlnp62i3Q1SzKcsSD2AUJaV5xXHiMq+j2RTOWNEoK6UomoAhc1Zy+Z25clLsFItUglF9n6KF\nblaaMlTeTVGI79yyhHbkeQ0qlc6DXK06ZFlBliEDEGIp3BIMQwi+OJ5n8+YZtmzJee1rs3IVDt2O\nbxPxfJqEocP0tEOWufT3JwwOFlJLqNBouMzP2xw75nDsWIUjR8S2kZGEkZGUoaGMMDSZmzOYn3dJ\nkrzUZuLYYHKyytRUlRMnKjhOTq2WsWZNiG3n8vOqyUxMtklisH9/jd27B/jCF5Z8ey9gYCCRQsBa\nVBt7trGsgv7+lLVrQzZsiFm3LqKvL8PzMlw3wxHBcBiGQX9/wdVXx2zdmuO6KrS7kJF14nfl21Nt\nmBXKrFcUamFolIu1bl+pmPgLeU93TH/q/qWrf05nMjbkosmQJsWOgBGmzI65rGPKU8dRgRjq/Ep4\nqvvQktGKasyFHK88Spcm0iu4FmpTSuCMLtM3t4IFR6VSlV/gwu0zw8Nc/8QTi79pEcSX0dt/ajFS\n1L3oeVWiKCQMRc6CbVtYlleazjyvCgjndKvVEO9OC8Iwx3U9HKeK69oYRk4UISdzkywTPUFarRZg\nUq160kSWy5V2VvpfhDnLodmMKYpUTsAplUqNokhIkhzIaLUyms2WrFMl6lIJu3guc1UsbFtEWglz\nQioz6nP5EDpScKoVDlLtN4hjMdFHUQu1ehLlVzoBAEKYiclcaVIgkvfEQ2HJyCehtTmOI/NkRDCB\n51XK0GXhV8pxXVeaa7pDZCskSYZhuFgWtFp18rxTJVkJO6FZiYlTOLyVn0FMIp2wX/HwV6vifCJ/\nxKXVMoA5TNNmdNRiZMTgRS9ypK8qRTQAE3krtm2S52Z5bdS1UhWU1SIBDPl5TWkCUmagQi4sXGki\nNTl5coh9+/pJU5vVqxNGRkJqtYR6vcbMTIWZGVHh2XHa1GoZYejxzDODPPNMPydP9uE4GdVqRrVa\nsHp1zKZNEZs3h7iuwaFDHocO1Th2zF2wAvc8Yf7zvALDKAhDs9QuqtWMWk0cU0z4BZ4HWQaNhiP9\nW6bUnsC2hV9JRd7Nztrs399HECyt5HetlrF9e8jAgDiX4yg/YyG1ZINm06LZtGi1TIaGCgYH+xgb\nS6nVMmmOLLCsnOHhlLGxgrExUVFa+LvEsz48nDM4KMyR/f2m9OkoU7GapIUZVnXtFBWoQYWeqyhK\nNfGL62l0/aRdWoU6ZozjqCKnSjCKiV8JImUp6Y3SWygEi3LB1TG/LdaM9cJYsYIjTUU5j16Wksux\n8DjJuXdagPiiPM8jDNtUqzVs26ReV5nnFu12C9uu0Gw25GTtEEVNhAYD7XZLrvQ9oqhFGIrVeaVS\nk0LCIEkiGg0RyqtuLmHCMWm1RG+sJLGJY6EBiYKLUK/XqdcLucpWjlyTuTmLarUqJ+aUZrNZTnKO\nY+A4rjQliAlLOcFViXf1cBhGQRRl5cQiopqU+S6RzngxAbuuLX1BEYZho/JaBCbttqjj5Tgermuh\nosNsW0U5GcRxWGaxR5FIqhSmQfFAJUkqTQ4ZcZyR5+La5Hlahj6LB7DzoNm2JQVBgmGInBkVcKCc\nyaYpIs8sS3yfwj8F6oHuOIdzTNNGRaOJSKmOU1sJAiVERTRcLh98sWhQpVtc1y0DLoRAtUmSEMdJ\nUHb2sbE2q1aJc4mABmEqGR6eY+NG4a+oVj2azQhV/uWFL7RlkEcmAzU65o8kSUpTyqZNHnfcYeI4\nZjlZZZnwVYmyOuqaJ3QmKHH9xO8GWdYxbSq/i5rYRci5stUL066Y3AomJ6ucPOnRahnyvrZJU7W6\nN6jXHfbu7Wffvn5++MO+c2pMtp1TqaQcPGiT5+cOLT8bnpcxPJwwNBTjOB3tJMuEJpgkJmlqSP+i\nEPbq+xUBDGKfODZkOD/YthBg4h43SFOhYXpeLqMPs/K1UsnkvqDM0JWKiEp03Uze78LMmiQmYWgS\nhhZpamDbIkikWs24//4zfsTzZsUKDsdZ3M48NzREf6OBmWXkS+hs11Ffl4pwSAvtIpfmERXCqJzt\nkKaiOrwwnQhBIhzUc2c8bhiG2LYnbxChqory8IujfC+1Wk2u6EW9LDEWYUO1bYckiYCiLCXSUdtt\nkiQijg0MI8R1PWmaymm3MzyvIu2/mTTNeViWKLLYbrfIc0NqGxkiCdBDZM6bZUJj5zr3CugcEBFA\nwtQmxlOt1mSjLQPDyKXTPypX3WLSFlE9wrdi0263Mc2MubkmaZriuh6ua5emMaFBKedpTrutJj4D\nYZJqYJrCeSomfhPTbJWBEGqFKPw9YlzinKb0NXVPpIa8tgWm6UjNIUWZVU3TKQWlEHiW1CopNT2R\nkS80YdN0CMNQngs8r0IUtSkKpLO82zGqEh8TGo2Q7jL4wrwKjYZoWOY4Dq1WW45BCLcsU+bTTuOw\nThSgUZpfhPZgleVilD+iKFRghjLBdEyAqgSN0Ary0mTZMfMYrF2rTEMpWYaMalSLlJRbbsml388i\nSSzSVPmhRG8byzLwPINKJcXzxGfyPJfJSYt6vUqrZcjFCSRJweysS71epV4XdeQcJ8dxCtLUotFw\naTQ8ms0K8/Mec3Me+/f3kWUqyECs6m07w3HyUggIH1nHBKoEidD0cukjgzxXwqagr0+cGyAMLVot\ni+lpV5oUL88WBStWcJzJ15NbFo3+fobm5pgZXT6bXs/ZUb6VOG51bVsMIZjS9MwCoHtfJXDg9L7q\nvSj/QxTFVCoe7bYoGQ+UfdaVBgFi8u7WsJKkKCNugNInYlm2zAFpymPVUAUQHccgihLpq1FRbWJS\nTJK2HJcrx366D0qg6oypydaRk21Ouz2/yP4GWRZKm3TBYmH5U1Od6xbHKXEMjlPFtp3SvpymQvPp\nlNrPUN+PKkuj8mq6z90Zcyo/mzBR9lb2h4X3pcgLKv8qt0VRQtQVEGiaHp1QVbCsRDYeUwIrRTTn\nEpqAGKtR/qjaYaICQUp/f0WGjquIpow8F/4mZQLr/rEsV5pdYlR15YX3swq4UAsx1WUSKZwyhHnO\nwrIMFouOUsfLskIuRISQFhFkInlVvEdFSGVSIzaksOlEAAoN3CwjGYWGnshnwaHREMLH8zwGBkQl\nbNe18DyxqhemUJsNG4TmqcrfKN+GChYR/olMahdFeX90+zeKIu3SrMyuxURaCnIVRSZSCDrJuSp6\nTS2glIlUaNgGaZrL781DFE61pVnaIMtcwlAEJKjINMMQEYCel2JZMa4LWWaSppb02/3i6TfsBbJi\nBUd3BFQvKpfjUgmOLBMrYoqcG7+/i6df8ALiSuWc71scscpefMI8G8L00Ww2EbW3WogHW0zYSSJa\nyna31+2lKNJFk6N6t4ljCcJF5d/CGbS7flgH0SCrM2GXo6Ao1Cy6mJAR+yx8XRpJ0i6FWXmkQgQ6\niIfalpPl2Sjk2FWl3+ws47ww8jxaIIQW+8rEBJN3CabO5J7nGWHYEVJh2Div8y8Ma1/ss6ltCwe2\ncPGWURTZokL9THRkdLvnPx1b/fnS/VmiqMX8/NLN1heKckif6VHLMkiSxZ6dC/+cAJWKIQNEbBmg\nk6FCkfO8IEnUsQ1p1lw+Lk89aEmc+YKfWrOGrQcOXPLz3/zYY/zs5z/PKx544KKOJITG+Ue5CCd6\nN+rO7U5iu1xQxQ/P1zR4KUgRE925hEb3/kpruxzG/3zncrpvLyUX+zmVeTyR5ssYSFD3t5gHhEYo\nQvqXj2UTHL7vm77v/6Hv+8d836/7vv8Z3/dXn2X/m33f/7rv+03f9wPf9990PufrJA6dziMveQk3\nP/YYldMm1sW4sLDETQcP8pNf+QoffdvbuGr3brZcsKBSS7TzvYk6Bfc0Go3m2WQ5Z57fA94E/Bfg\nDmAjorf4afi+vwr4EvAYsAP4c+Cjvu//9FJPFi5uMwFgdnSU4AUv4NZHHlnCkc5f6g/Mz3PPZz/L\n5173Oo6vX88XXvMafubzn8c+zT5+aTmbGUqj0WguFcsiOHzfd4D/DvzfQRB8OQiCXcAbgdt93791\nkbe8HZgNguA9QRDsDoLgL4C/B35jqedsNJpn/f/Dd9zBLd/5DpV2r/30bJxb+7DSlP943308dsst\n7L36agB2+z7H1q/nJx966DzOpdFoNCuT5dI4bgL6ga+qDUEQHAQOILSPXm4HHu7Z9hDwE0s9Ybt9\n9iil89M6ls6t3/oW7WqVr92x8GN96dWv5oXf/z7rjxxZ9H12HFNptbDS9MwhYRqNRrMCWK6oqo3y\n9WjP9mMsnq64EXh8kX1rvu+PBkEwfa4Timiis/PwHXfw9o98hEduvZWweuYueB3OPqH3z8/z0m9+\nk79529sWFrIBWn19fOE1r+E/fOYz/M3b306zv7/83+jkJG/5+Mex0xQ3jjGKgr3bt/NPr3/9Esel\n0Wg0lw/LJThqQB4EQa/RPQIWi1OtAb0qg4qjW1Jcaxie2wTVrXU8dOedSznsWfmpBx/kezt3MjM2\ntuj/n7r2WtacPMl/vO8+/u7NbyazbfrqdX7+k5/kK3feyfde9CJAmLt++oEHeNtHPsKn/9N/Ymp8\n/KLHptFoNM8Wy2WqagOm7/u9x/OAxVSDtvxf776cYf8FjI8PMDraf67dAHj0xS8+r9pVZ2L90aNs\n27ePh6WJSjXhqdVqC6KbHnr5y6kPDPDaf/kX3CjiP3/qU3z/hS8shQZAZtvcf/fdfP3223nr3/4t\n23fvvujxaTQ/zhh5zsjUFBuOHMFcJJlkYH6eTYcOsfWZZ9i2dy/b9uxh3bFjDMzNLbo/gJ0kjE1O\nnvH/P84sl8ahytGuY6G5aj2nm6/U/ut6tq0HGkEQnKkmR8nERJ00XVoY7Yk1a6i22wzMzVEfGlrS\ne06jKLj7i1/kyz/1U2Win0qSOy2XwjT53Otex1v/9m/5bx/+MPu2b+fhl7980cPu2rmTqVWreMNn\nP8szV1zBv73ylbT6Lq6ujkbzfMRMU9adOMGmw4dZf/QoTpJgFAVGUTBQrzM2NUWrViOsVBiZmeHQ\n5s0c3ryZkZkZthw4QCUMmRobI7MsUtvGKApqrRb9jQa1VotGfz9TY2NMjY1hFgXrjx5lbGqKZl8f\n/Y0GE+PjnFi7llZfH5llkVkWrVqNU6tXc2r1aqILTgBemSyX4Pg+0ABeDnwKwPf9rcBWTneCA3wd\neEvPtruAbyz1hK3WEqOlTJMDW7dyxYED/OCFL1QbgZxrfvQj5gYHObZx49mOwA1PPIGVZewq3392\nUtflH974RnY+/jgPv+xlp/lDujm8eTMffuc7+cmHHuJXPvQhvnLXXey66SYye+lfTV+jwfqjR9l8\n+DCbDh1i9alTHF+3joNbt/LM1q0c2biRYgl1uzQrhN7mESscJ47ZcPQoG44cYXB+nv5Gg/5Gg0oY\n4iQJdpriRRFTY2Mc2bSJfdu3E1YqwiNpGDT7+pgYHyf2hNGi0mpxxYEDbDp0iONr1/LIrbdyanwc\nzpD3ZOQ5Q3NzjE1NMTY5CYbB93bs4MSaNWSOgxPHrDl5krUnTlAJQ6wsw0kSNhw9yo7HH2d8YoJW\nrcaJtWs5uWYNJ9eupTAMaq0WtVYLM8+ZHxhgfnCQ+aEhpkdHl1RH75wUBU4ckzoOxbOc02UsV4MP\n3/f/EHgz8FZgAvgQ0AqC4KdkuO4oMB0EQSITA58G7gP+FHgF8AHgVUEQfHXRE3QoJibqfPOb32DX\nrm8vaWy3PPoo644d4/Ove53cIlL9/9uHPsTBrVv5wmtec8b3OnHMO//iL/jHe+7h8JK6Cp6JxcsL\niJ4aJmkasfrEcV51//1sOHqUQ5s3s3/bNiZXrcKJY9w4xotT3CjCjUO8KGLVzAyrjx/HyjKOr1vH\noc2bObR5MxPj46w7cYKtzzzDlfv3Y6cpD915J09eey2YJnYcc+1TT7H1mWf4yl13UR88e8/w54pK\nqyWCBy6TCdJMU1bLSWJ+YOCME9EFURSMTk1hpymTq1aRy4WDG0VsPXCAK/bvZ2xqiuHZWYZnZ6kP\nDPDdF72IXTt2XHZaqpFljMzMYKcpdpZhpSmm1A6MPKe/2WRkZoaR6WnGJyYYn5jg5Jo1HNm0idnh\nYRr9/TT6+wkrFRLHIbFtwkqFtKuL3+WEkeeMzMyw5sQJ1p48yZoTJygMg3atRrNWozAMBup1Bufn\nGZqbY3B+nunRUU6uWcPxdes4smkTx9euJVMNSLqw45iBRoPxU6dYd/w4644fZ9XkJNV2m0oYklkW\nVpYReR7tapXYdUuNqPunXa1y065dy/YgLWetqt+Vx7sX0Xbti8Cvyv+9FPgycCfwcBAEp3zfvxv4\nM0R01UHgTUsQGiVDQwMstdbLM1dcwUu/0a3MFKyamGB0epriHJPST3zjG6Xae3EUspifSP23LAfb\n9gDVKhZOrV3LvW9+s1gxPfMM2/btY9vevcSuS+xWyKsVItcj9Ko0+gfYd/XVHF+9Wkz8hugTIH5i\n9gwOsufqq6EouHLfPu78yle44+GHObJpE9f86Ecc3bCB6dFR3vzxj/OJt7zl8hEeRcHmQ4e49Vvf\n4urdu9m7fTv//LrX0a7Vnt1x5Dl9zSZDc3OsPXGC7Xv3csUzzzA/OFg+tHNDQxzasoUfXn89B7Zs\nWVSrc+KYkZkZ3K6qhkZRYGUZVpbhxTFbDxxg+5495QQwPDvLzMgIYaXCmpMnObphA/uvvJL9V17J\n7MgIs0NDrJ6Y4EWPPca7/uzPOCI1ZjeOsdOUoxs28KNrr+XgGcZUjiPLGJqfZ3RqikoYkto2qeOQ\nOA6Nvj4a/f0kchVPnuMkCWZREDvOoscdm5hgx65d3Pj975PadjmJpbZNbpoUhkEhNYTZkREObdnC\n4y96EcfWrVt00lwpFKbJ9NgY02NjPHXddefc304SVk1MsObkSTYcO8YNTzzBqslJ5rueQTPPqbVa\n2GlKo7+fyVWrOL5uHd+/6SZOjY/Tlma53LIw8pxKGFJttXCSpLy37CzDlK+5aXLTMn7mZdM4nkWK\niYk6QfAUDz74xSW+o+DX/viP+dgv/RKzI2NAzh1f/SqD9To3/OAH/Ml737toWOzg7Cy//Nd/zV//\n8i/THFtLlomy1wIbUS7ERlULFa/dvYSdrgqpptxmyeqqBtVqlShKZBnyVBbg6wjDSqUPx3GJ45go\namMYFp7nEkUJjmNRq3nU66q3h01RiIx6Ufq8e6ziGly9ezerT53iBzfcwPzwMIZh89KvPcSOxx/n\n4295C43BMQyjoFKpyCZDqkT70gT06hMnGJ6dpRKGwqa8ahX7r7zy3Gp0UbDmxAm279vHtU8+iRvH\nPHLrrfzw+ut52cMPc92TT/J/3vAGDm3Zcs4xLI2Fn8eyahRxxOYjB9m+J2Dbnt2smpwk8jzmhoaY\nGB9n37Zt7Nu2jZYMs7bjmNGZGbbt3cv1P/whg/PzHNq8uTRjuHHM8OwsXhQxOzxM2GUDLwyDzLLJ\nbJvMdji8aQt7r7qKqXXrKCgwopjV05N49XmObNpE4oo+84KFgYuVdpstBw+SWhaJ65KZJlsPHOCa\np55ieHaWIxs3Ctt/tUriOAzU6wzNzjI0N8fQ3ByN/n6mR0dpV6vYaYadirH3NZsM1OvlwspJEhLH\noTAMnCShMAwSxylXtIVhYOY5P7jxRnbt2MHkRUUKnqmqci+dHu2LN2MzqVTcs1aZODPd94hVFuc0\nDJtarbagS6Do7SIajYmy7W1sWywMVdVb0dHP6Cp1X5T9VwzDxI4i+qenRMVhCsI4JR4eIvRckL09\nRBXgTFbmzeV1Ek3YRBMw1TveLpuUiYZyov3Cb/3We5dN41ixgmPPnqf5t3/7IkstGfL6z36W/Vde\nya6dOwF4x1/9FffffTd3PPww337JS9jj+4u+Z3psjIfuvBPL8jAMizSNZTnovKtIno3rOjhOhXa7\nUZZHHhgYoNVqy5LQuRQa0N8/KFvLtmSZZuFot6wKRZHJhjsVqtUKnlel2WyUjXhETwgAi1WrBmk2\n2yRJNZwAACAASURBVLKRjkEUxWXJ6DAUXfkWm/Rtu4LnCbU/SVJe8uUHeOH3HufTv/g2knXrsSzR\nTjaKYuJWk2u/9zjjx48yMjnJyOwsJzZs4Cs/+Qqaq0YoCgOv1eCV93+JK/bs5uSGDSS1PkKvwvoj\nB6nW6zxxy4sJduykMTJK6ji02yHV2Rmu2LebK/ftY9u+fcRehf1X+xy44Ub2br0C07ZkB7+YbU//\niJ/958/xo2uv5fGdOzi5rjuuQnw+wzAYnZjg6iBgdGZGamliIh2o10sTQWZZtPr6CfsHKAyD/vlZ\nBubmGJqdZWrVOAeuuZbd27Zzav16cs+TVUaTsn9651p2KuZCwcjUFOuPHye1bRLHI3Y8GqOjNIeG\nwLRlF8QM2zYpClGe3rJsbNuWLXS7+0KLicbzPEyzU4Y7TVPiOCJJMlmRVewjJjTR58J1XWo1l3Y7\npn9ykjUnjlNrt/GaDdw4oTk8wuzQMLODA8wOD5PaXnnOMExwXdGIqihEe81qlpLlGZFlkcqS7JZp\nUkQhfVg4FBhpjJXnzA0MYlVcVE/tNBWlzVUjK9UkS5UkF22RzbLHiVhAqf4nyLLmhWyoZZYLJNUX\nRXSQFGXgkyQtS6CLXiWiPPvAQEVWDhYNvET3RVFaXfULV6XmLcvCts2yx4hqJYDsc57nadmvRrV2\nFY3COvOx6CSYleXUuytUiwZYdPUjMeW9a8lzmmWXSlUtWV0z0QCLcryi2KYSFpTXUbW6FSXchVCd\nm7Not11++7fv0YJj9+7dPPDA/YhqkOdm53e/y5YDB/inN7yBkelpfvGjH+X/+/Vf546HH8ZNEh54\nxSsW7L/x0CHu+exn+dCv/iqJ66JWQYbh4nnuaaWrTdOhWq3gOB6zs5OYpku12kcYtsmyGM+rUhSi\n94BqYtNqRRRFiutWqFRc2WApl21NC3kjCBN/FAltJIoiuZLI8TybJDHo769imhZRFJWCRTQ/srEs\nA9v25ANhYlm27P5n4TiOPEfOC7/8ZW7+t/t5+NWv4emX3o7jugweO8arPnUvqeuw/wXXUV+9lvmx\nYa78wQ+4/qsP8eSLX8KpTZt42ef/mUM7d/Kd199D3tdHHIuHOMtSxg4d4YWPfpNNT/yA6vw8uWUR\nehWcJObQtu0cutrnwFVX0Vq3gVrNA0STpnp9TnaMS8iygsrMLDd+8+vc8L3HiSsVnrlpB1mWY0dt\n3FabzQf2Y0cx+6+9hlNr1mGFIU4UYqYZ9cFBGiOjNEdGIEmo1OtUmw2soqA9NkJrdJzm2Cj5oIi6\nEw+2WfYmEV3zVP8N1RNECXtxXf//9t48yrKrPOz9nflONfRQLbWG7tbQHAlJICHEZMkWkxPbInlM\nC4IS4NkEQ3jOUwA7XsZ4PQghxFkxxCuxCcsEWLFJCAnG5mXAsjAhIpjxCRqEdgvRqFvddKt6rOHW\nvfdM749v73NO3b7VVS1VD7dr/9aqVVXnnHvOufve8317f6P0J0l1PwUXaQbl4HmBPg+6JWwOSE/6\nMAz1543u5Q4iwHyt2E1732oWKf1CpMOe70sDItM9UGaXCZOTLRYXEy1wpBukaeAlx6TlqleagYHp\nUSKtc01vEGkmlecQRabjYVG+X9NDRLZXrU1N0yi5NuXsXGbbpt8HZRi7eY3pRxIErm7gVOj2u6YD\npls2ixKc8jympWueZ2W749lZjzBsc/LkElmWkSSO7izoUxSe7l1R4LpLtFoQBAVBkJJlLvPzAXNz\nPr2eT6OR0OkMaLVSej2f48dD5uYaLC2FZJmjm7WZCZooyW7Xo9uNWFwM6XZDej2PXi+g3/dZWvL1\n//6yToZhmDE93WPz5iWmpvr0+x6LiyGLi/I66SLokWUurisdBF230C1vXZLEw3ULms2URkOU14kT\nIUnimXG2iuPAgf188Yv/lcFgbdFVm44f582f+AQffuc7edFXv8rmEyf4f1/xCnbt28dLHniAf/eW\nt9SuUPArf/RxvvG8O9gzFEnledLBTZa/GY7jlT0egsCn0WiQZXnZDMl1fQaDHr4vD3aeD/TDGtBs\nNkmShE5H+i2bJjFhGJBlGWmasbAwr9uauuXSNs9zgiCg1QpZXOyJAPU93bwnJ01zGo2IKAoJwxDX\n9Wk2G+XMSrru9coGM1mW4boeU4//hJ/9xB+x1G5z5IYbuPkv7+c7f/v/YM/P3IXjSr/yRqMhSmf2\nMLd87r+w9Sf7+OYb/i5H4pvKVqBm5meW6b2edAMs8pywP2A6z5ibmsLxZcYtLTarWbXvB3rGB6Zr\nnAgZh9D3uOyRR7j8e98l9VzSqMEgDFm86UaOXLkDz4/I8wzXdcvGVGma6GuY2ZlTtjE1JsY8L2g0\nmqWglQZDpvmOr8fI0T8+ppWvzOryso+456Gb/jh65SktcH1flLbcg5kh56VwjaKQonBxnII0zctW\ntp4nKwCZhbtEUaP8vGRGKysimQTId2bTpg7Hj89hOg7KsU6pSKSVbqqVREG3G3DypE+322B+Xrrr\nzcwkXHVVj3Y70+bSgNnZkMVFlyDI9XvNcd2URkPGqddzWVjwmJ93OXEi4qc/bXDoUMjRoyETEylb\ntyZMT/cJgpxuNyPLPPp9j7m5gFOnQhYWAtLU0cLYpdHI2bw5Y/PmlKmplImJnImJnGYzoSh8FhYc\n5uag2/VYXHRZXAw4eTLg0KGAI0ci3R3w4kGEeqb7tEv7V9+vGoL1ei7HjoXMzy/397RaKc1mRhjm\nhGGB78ukUsbJIQxzgkD25blDt+vS7cqKfcuWlC1bBmzfnvDZz267KJ3j5xWZfax9HE5s2kThOGw5\ndowbf/hD/uolLwHgiSuv5LIjR/AHgzJq48onnqDd63Hgrrvxu0va1p/r6/plA3rHCeh0JhgM+vR6\nC7qlZcLk5Cbm5k6Uy/QoqmaGQdAky9Kyh/P09CSu69PtLuL7sjpwXY8whH6/R6vVYTAQ81iz2SqV\nhO+HuG6K4wzI85Q0LcoZ8sREkyhq6H7oftm+0/cLzPI2CEL98ItCSpKMwQ038sX3f4Ddf/Z5tu37\nMf/l3b/Jqa0z+Fpp+L7D0pL0Rw+npvnqG3+ZZrMFZHRCnzSVJbTriunMCNR226fRiLQAg8L1mEA6\nncms3NPCzMxQM7JMZvVBIEtuaSOakiQJR555I4dvvBHX9QiCBo1GwPR0h6mT3bJTnPhqfKSdp+ld\nnesVQqUIxEyUlzP/KArKDnZFIfcvZge3NE/4vkcURTjadpDnBVEk7WOldaistnw/JEmMuSbTXeqc\nchYritY0ZBLF6Pse7XZYrgblvbvaVOHqVrFQFB4nTnicOuUzN+cxP++xtOSzuOiS5wFzczlJ4pFl\nBVEk3QvB4dixgOPHI44dizhxQgRtkqwsYCcnU9JUZtDnGscpCIJqJt3reXomf3Zs2pQQx122b0+Y\nnnb1ZMTRKwpp9er7BYOBS6/n0O879Hou/b70//Y8ed+TkynNZk6363HypMPCgk+rlWlhnNDppASB\ng+9TttQ1q7pmM9fnyOh0MlqtjCgy38OCqh2v3LN8v+T/pSWHo0eh04FOpyAI5CAzyTeTMnmtW67G\nKvNYUX5XzXbzXV0vxlZx9HpdTH/vNeE47LvmGp790ENsPn6cn+zaBUjOxZPbtnHVwYP85JprALjj\nm9/k2897AY4X0GrB3JxxWosTTHoIB4RhUGaQQ04YRnQ6HXq9QdmfOwic0hYqq5CMdrtdOtqkLWaC\n6TFuViH9fh/Xdel02rhuR5tMPG0Gkk5n4oALkB7PYo5oNNo0mxFB0EB6Vrvll1QcbLLUDwK//F+E\nvbyL1PPZ+6pXs6cv/psItOPdIQhcwjBiMEhLRSQ23oI8T7RiDLVAlxl9GMrKIQyNjygt7dCiJHLd\nYtTF9+XBSVNI0wGDQV+bIVx8XxSd2PtF+Ulvbr90CFYmIk8/OJUpRdqaevoepZe1nAvt2BSllyQO\nhw7JLL3VgmYzIQj6hKGsFooCTp50+f73mxw40GFpySMIIAgc2u2Mq69e5PrrEzodOH7c5eGHp9mz\nZ5LHH29z6FCTw4cj8tyl3U648solrryyTxTJSkX8IC5LSw79vkuayuw+isD3M+bnQ2ZnA44eDTh1\nyj+ridMwYZizZUvC7t1LbNmSMTWVMjmZMzEhAu7wYY8nngg4dCgiCAq2bk2YmZFZv5nppinkuUOS\nSJe7KMppt0WgbtlSsH37gKuuGrBtW0a36/Lkkz6zsz5p6hCGEEUFYZgzPZ2xeXPG5KQo0crhXDA3\n53LsmMPJk75ezXgsLjoEQU67DRMTDq1WzsREQrudMTWV0Gw65Qp1y5YJ5uelY6fppS7iwHw/KH1I\nQDmJqLdUFhNcUQpsmYy5uG5Df/dzLRdcLcwdvV8mh8aoY9reanFUW/E6pdLwPI/Nm12uuOJ0S1DV\nNtcp/SWOU+91D/U+PfKeRrXxffqMreKQENaz63/xk2uu4Z4vfIE9t9yyLAFn/86d7Hj8cQ5cfwPh\n3HGesXcvD7zilQSOzCCnpqa0gxp836XdbjEYSK9icSZCGE7i+4Ge5QcsLS0RBGKK6fczpqc79Ho9\nwjAsTU69Xl+btarWjlmWlpFRUeQRhk1ttnH16qBgaWkB328QBC6tlpktOvi+Q7PZ0aYYicTwPE+v\nRESoFkVBv99nMEj0A+BjbMWe5xBF8kUOQ1FIxrQFaLOSg+dl5Rff2PHl4TP274Ikkdl9ELh4XkBR\nGIUr/aXFJu7oh1Oi0aTHclo6QaNIVi55XmifjF8qClEeWfkwtVotskw+C2ml6vCtb23iBz/oMD2d\nsX17n8svTyiKgpMnYWkp5OTJQAuziCefDDl0KGJ2NhwpkMMwI4rEqTk3d+Z8Atct2LIlYXZ2+XGb\nNyfccssSExMZTzwRsG9fh717zy4MutXK2Lo14ZpremzalDE9nTIxkTAxIbPadjtjZiak31+k0ZAx\nFkEv0XwzMzkzMwlTU+jVjF9bUcn3qJrROvoz9k7bZgSRfDeKUvAax7dZIXmerLa3bIEdOyiVgnEc\nu24ABPr77WlzW1XiY3Iy5+qrHb3KKrSloSiPN9fMMlebcRulAAbodDr0+0X5vjzPqzmZ5R59X+6l\n7j+pX8f8Le/RKd+r6Rtu7qH+v+kXP0x9nOpugpWONT/mePMsmmdDqJSTObf5XKrPZH0ZW8Uhs81g\nqF/ymdm3axd+lvHDZz5z2fbHd+zg+d/4Jn/tudyx52HpId5pUwwGOvLF0yuIgH6/i++HNJvGZwHi\nqO7QajXI85xms0mzGeE4LkmS4XmZnn03SJIBi4uLuK5DliV4nqw6fD/AdR16PVlJRFGTMJQVSJaZ\n2bCYQ3w/JM9zOp0mnpfgui5B0MBEZwWBRAM1mzIzyrJMO1XRJicj+CWCqygkBLcoPMQuXlAULlnm\nlCafJMn1uV3t1zFKydGrFUebvFKKYqAfuqDmAC3KGb7ve/oBrsIIjS8iDCOSpCBNQ3q9FkXha+dj\nQLfrcuKEy9xcwLFjAYcONTh4sMHhwxHtdsHWrT0uuyzh2LGAr399kn5/7TZuxym47LKE5zxnkSuv\nTPD9goUFh8VFl27XpdczDkiHm246xe7dA66/vs/0dEGSyCrp+HGXH/+4wY9+FPHEExHPf/4Ct9++\nxG23LXLTTQPa7bz0K4jpDX76U7RQz8myAt+HZtOh0RCzTZJAnvv0+w7T0wWtVqEFr1vOlI2Ak88n\nZGYm5PjxpDSdiNJ2KAoTKdQoTSpmtWZm4OJ3kRBPMNFHbk0wmlmzCGNjRjRRU/KZFrXjKRWPOMDR\nqzwTVmpm2iZ6ycN1g2XC2ZhxzG+D+AHTmkKo9omgzZmYmKDXq5SZeS9QrS4qx3tR3mt1jkIrQGNK\nqkdQOct+jxLQy1cyy5WM+exGnbN+fTG/OkPXq7/eXfYaqAIPzMRvvXXHGCsOhygK6XbXrjjmpqd5\n4KUv48fX7l62/cCOHbzqT/+Utu9z69e/xp/9nXuZmppkYaGL75sl72aOHj1KGDYIw0DPVgLC0Mfz\n0GYrF/BrS0UREBJ7Lfcss+G+npE72iTSABwGg5QwDPVsOyCKGlqh5CwtDUohDy7NZkSr1QLEAS/O\n1Vw7gXPyfEC/XwkAmUlJNJbcv8y8BoOEJEnp9Qbad+LpcN2gjH/3vIAoEsf18eMuaeqwZQu024FW\nIkX5AEZRQJo26PfF3LFvX5P9+yc5frxJFOW0WimdTkGaQpI4JInLyZMhR440OXy4wdGjIYPB2Tk1\nt2xJOHnSZe/eKlfimmt6vPSli7zgBV1OnXI4eNDl8GExm01NwcREzuTkgMsvz7jsMjHDhKGxU1dm\nAxPJY3xcIgirz1fCssUXIuPsluaQakYMstoT4SmCCqLIZfduVwtjnzRNtWD3ynMZE4YgAtCEd5p9\nxlEv/iCfqakJksQrVwhmRWCUgjFhGCVgjjF9qY0dXiYp3jJB5zjiN5GJT14KM7NirtvWy7su8lLY\nmfdRzc4LqqgqB5MbUVcUw4K8LhzrvqbhVsoSaBJqH2O1rU59Ng+UM/pqfJ1lr6kL+lGvGUVdYSx/\nD+a8ztA56/folJ/P8ArC3FZ1e5XSMYrQKO71ZmwVh4lIOVsevOtOoqhF1q+KEy61Jpmb3sTzvvQA\n/U6b/rOehVPAxMQkg0G/fNAmJiYYDFIajQgTX51lEmIYBBLiJ1E11QMZBK72g5joIId2u61ndQWt\nVpsg8Ol2uwSBh+8HhGFYCq3BICHL+uVMXWK+fdrtDp1OA9fNtD/BRFr0yXNZtleCqJpNOo6vfRwS\nvths5vT7fcyMzPddHdXVYXZ2C/v3t9m/P+SRR1o8+miHo0erosaTkykTE5lWAE45Iz9bwW/YsiXh\n+ut7tFoZjUZBFMmP78tPs5mxaVPKpk05W7ZkXHVVyo4dGa0WTE+32L+/x8GDYlbauVNmaRIXb8wt\n1QMltmAxlckMVyJZxBFdPdxGeBWFt+yhNzNoySVwaLXMqiErgyfMdwSqWbdRLNXssXJ2mlnpSsLN\nmHdkMmHCfStzjazc0nImba6d55STjipRzAjvTEeBFaVSWy7kzfUrxRmG8vmK090IffT7XP7ZD5tv\nzN+ed7qppy6Uh2feoxgW4PVWyubc5jMZvr/6/vprjM+y/jkMKw/zmuH7qhR13XQ1+lg5b7UqMMfJ\n/S1fWdUZZd4aVnDD2+vb1ouxVRxAOTN7Cq8kCBpa6EOz2eDQdddyx/1f5MG/90aiqEUQ+PT7PZKk\nTxAEZQisCW9tNEL90IvDVUI2cwaDQoffikDJMpdWq4GE5faJooZWChLGK1/WkDCUhz2KIh2BJDPU\noljC88QsZoSG5IsEtFotimJQZq26rqwOHEccqpOTE5gkuixL8P2QRqMJSJJSvx/wxBMtfvpTUQ5P\nPBFx8GCDgwcjjh8/vQTEzEzCXXfN0W4XHDsWcOyYhF6GYUG7nRMEKUFQEIbys2VLynXXLbF7d5/t\n21P6fYfFRY9u1yUIPMJQFMP0dM5VV0l4oon1932XIAjKMFcRyBnGqe77nlaGrl7pRGzdmjEzUzkJ\nzW/Pq0xjIiyMoFy+7K87Kc3yvvKjVPZv87mbfAUw/h63nKGbMFsR1MtXB3V7eTWh8Er/DRghWLdd\nO6WyqIQTGAFfzUqr/UaQmftdToFRrHVhVxes9XsdNqnUFcQoIT/82/x9JiE3ilFKdCWlMqyEQKpY\nS27TSterX3f5TH74voyCl2Py2vjW76dunqpW/NW9n252O9N7HF5lmW3DZjuo58UsP9b6OGpIaONa\n6+RXJQw8r0EURYRhQLe7iOuGeB4c2X0D8UPf5bHb78DVzloJu2wShj5ZVpDnYpJqNlu0Wh2MbV5y\nFfr6njIajQauK2GuS0uSS+C6vk74gsnJTfrLkbG0NCBJ+kxNTeP7ns79CHSGbEqz2UYc2DJLk2ip\nvDZTqi/vXW0CkesvLfVwXRgMfPbs2cwPf7iFH/2oyeHDIUeOBMzPn/7xe17B5ZcnPO95c+zalbBz\nZ8quXQk335yybRvlzEhmtgXGtFMtr4syZ0WcjoX281RZvlmWkudiYpSoMAmRNV/wSilITot8+Z1S\nGcssUpRummbltc04mNBZceZXM+WVhI4oBjmPhO565fnE5m4Uz3KhapL+qtk8mNwOURjLM/frQqUa\nL3eZDb+akfvldYYFxChBUJ85m3s1K6xhQTV8jlHnfyoz1JVmw2Zf3c6/0vuoUzdZDR+70v9VYqJg\nVnh1BWhMOOYzM6+rzrncwV2Z1Ebdu4nOWu4wN+bDlcZilEAfXnWt9BmttIobHt9zydgqjiCQqJte\nb/UWsvW6N/UMbRHKDo1Gk5/cfjuD667Dm5giScSRnGUZjUZIGEY6givUAkkEtO83cN2CbndJK4eC\nRqOtVxA+g0FOGKYkSU4UudpX0NArA0dn/kqOg2R5u7juRPmQSRisSSaUjFiT8StRVxHz833m5z1O\nnOjQbOZ0Ojlp6vO97zX4xjcu59vfbrF3b4d6hmqzmbF9e8Itt/TYsSPh6qt77NgxYMeOPpdfnuL7\n1QMVBEFpO5fQXU+bVZxajoMxmZiHJS/t6Z7n0W43kXDgyjleFCb7ukASKX0dUisK05hPJKQ50GVe\nstIxbEJrjbmp0WiwsJCWgmb4QZf3szw0svpemIfV+DjqEUUu1WmMk7UKKgDKrG6jLOo+n3rYZ3mW\nIZNMfSZe31bd53KGZ+3DgmjYrFJ/L8PCpX7N+mrjTHb7UYpmLQJr2OQzSqDWMZFB2bIyVKcrUvMe\nzTiaezfHjVKaw/c8Kly1bpIySmaUEl7t/YxaUZjto1ZxdTPpqPMOn7v+PoevsdL/T5exVRxQ2Q/P\nBs8LkC+jya7W9YCiiBO7duK7Pqa8hCTdNbX5x9XhozIjlSzvnChq4TjoqKRcrwgckkRCN9vtNv3+\nAMfxCMOwDNGFonRIO06E58nsW84jeSq9npSncF2XVisgTQOOHnU5dszn5MkGDz/c5sEHr+DRR9us\nFNPveQU33bTE7bd3ed7z+tx00yLT06YYWkCaJqRpH0k287QCq2ZKpgZOnqcUhczi5XVpKVT9MgNc\nbOwSTWlWHI6uPyRCV0qKGOexqYtUfbElLyQvfTOOI5E9SdKvRb6YAAS3tPdHUUQQ9DF1wsws07wP\nqJSFmBDqDtlq1l+fmRpFAWbGXDkozT0MO3DNseb38OxwWOib44YFf312XD/nShiBJhF2QWlerd53\n9Xu547o6v4lQWmllstJ1h885PLOubx+1glpJ0BolsPw8o3wFVait+d+MYd0HNHxPKylrQ/18wzN+\nw6jzDp9neOIwavvZCvb1VgRny9gqjsFgwCrBDEhF0bpjLKTZbLC01KUoXCYmOrTbHebn52k0Wrom\nkXGCJjqCqkkURfT7fbJsoP/3mZ9f0IIv04LOJwwbeJ5Lvy/1qYKggeN4NJsT2oQUlUojSSTvQYRc\njuuG2sEuPolDhzw+85kdfP/7HU6cCDhxImBx8fRZke/n3HrrArt29XUdHI80dbjhhh63397lWc9a\noNPxtJmswHVNRU7K7OkoapazfeM0NrNv8Z/kiE3fKav4Oo6Efkq4b6IVaabzUtwyxBOM8jHv1SlN\nKDLe8sCKmU+EhNyL8RVk5eolzwuCIChXD2Y2P0rQiimrWkFUZglHZ92vHF5p/h4lvM1McCVhMHye\ntRwzvHqo/67ClkcL4+H7rf9tBJ8Zy5Xur37N4ZXGKLv58OtGzeZHMaxI1/KaUWG2o1hJGQ2P3ZmU\n96iZ/Wqf5Wqrpgst4M8VY6s4fF8q0q6MQ2WKkAcoDAOSxMzyfUz5EBNuOjExXRaAC8OAKAqJooDB\nYECaDoiiUCfrRUxMOLrekIOUdy50RI4kN0kpjIhms61n68Zp65aRL2a2bExSS0sOjzzi8ZnPXMH9\n928iy6TY4aZNKVdcMdClDlK2bJH6PbfeWvDMZ3ZpNsXWLisGt5xtyiwyxHWLssyJrBAgTbMyY1uE\neFCaMszM2ghbU9HUZKsWhSmaV/lZjAnNZG2bMtIA9Th4E78vymt5Jq3rmq9j/fquHvMqtLWelFWf\nTcus29d/12eVlWlhlMIwx438Fo049lwwSmit5/2c6TWjhOxaXr/SLH7Ua1dbOY0SwGcyB62kaIdZ\nnq09OspopWs9FS5VRTHM2CqOSsiMptHo0OvN4/uhrlUT6Qxm2R8ERoBLxnWj0aTTaTMYGOGYEUVN\ngiCg1zuBlINwyhmz5wW4rtjjw9AUvUNnd4tPQMxcUjtISo7IzE/yM0KUivjmNyf43vc6PPZYyMGD\nYemLuPbaPr/8y6f4pV+aIwyNg7WqOur7Ltu2TXPiRKGd6C1MX48sS7XQ9ggCp8zEzbKMKArJspwg\nMKYWH8cRAZwkKaaiLphsXZM8JGYbY88XYZEhCYMyflX1Urd8nTEPybnMZ2cU0aD2IJv3Vk8wMzNE\nr1QWZn8VYrlcKIwyO9X3X2ysNGuv/z4TKwn0M60wzvZ8qx17tissGO34Xcln81Tutz5RWMknsdo5\nLCuzLoojjuMZpFXsy4EB8Angt5RSKxqT4jh+Etha21QA71VKfXAt1xTfxMrmAteVzGXxaZhcCodG\nI2IwGGBKQUs0jyiCNDWmm0bpi+j1FnVBQPQ2TysOn4WFUzrUzy1LjRgzi5idHPLc5UtfmuBzn9vM\nwoI4mB0HDhwIOXmyMj1NT2fcdtsSu3b1ednLFrn77kQLUynXIUJRaixFUdWbQExGpiREViqMJEl1\nlrdDs9kqQxJlxeHpzHtPrwLSMiRUriW+DqMcTOx/GHqnxbkb082wCaC+GjBO7coJffrsX5SBKVBo\n8h6Wm4SGTQyjnItnEmbrObN8uowSjiuZO1Y7zzBV+fblPBVTzNNhrQpwlJJYi6Jfq8K6WD7zS4n1\nWnF8DnEm3AVcBXwKaZTx3lEH657jW4E7gR/Vds2v9YILC3PLatoMI1FH5gvjlAX0TJG8RiOkP5cK\nRgAAHO9JREFU2WyWMxKJ9JHwSTH3iI1+MJAIGknUi8iypPRDSCSQU5pT8rxgMIAkadHttvjOdwI+\n9aktHDggSXPNZq6TsWDLloxXvrLLC16wxPOfv8TWrYkub2KKkjWQKqt5rcCfmGBk9RKdZms39nyz\nojCmG8dxdERWlfhlZv1mZSBhsfWH3DzMxk/hleGwBvPAj/IVmNm/USyjFI65jnFQi4+FZeepU5Wp\nEOpRJ8O2+FF29Pq9rZcwWavNvX78Sqad1UwqK117lAI9UwjrSnb44XFZbdWy0vlH7VuNi31laFnO\n01YccRy/EOkpfo1Saj/w/TiOfx34/TiO36+UGtVp6WZEsXxdKTWq5+OqGD/BSkgXLJ8kgU4npNtd\n1BnfuRbQkRaypmCYW9Zz6nQ6BEGkCxv28f2IKGpqu7mUGVla6tPpSLJelsHx4w7vec81PPTQ8qJ1\nQZDzqlcd541vPM7OnQNdlsTY68WfIPZ/T2eMu6VJSzrPVeW8IUWy0+v+A/RvEfBJkumyIX65agC0\n/2N56KepdWQEzXA4oNzryiaJtc4KVzOnjDIpjbKfj8pKNtuGhWX9fKNMICvd11qE1lpNKaNWYeup\nwFb7XFbzS6y0rT5mo655Niak1VaAK+2zXNysx4rjTuBxrTQMXwYmgVuBb454zc3AY09VaYCYMs5U\ng0X8Gj6Ok2nzjiT+GZNNv79Eu93WvbUlAkcq2gZaoEubzjCMmJ7erB3rGUFA6YAuCukbvn+/w9vf\nfhX790fceOMCV12VsmmTJNK94hWnuOwyYwby9QxczpFlYjYKghDfN/WGQrIs1ffv6ZWCFAA0TmZR\nCCbHoMooLoqsrGpbVwR1IWKEpsmHgKom0/l8gFcTmqOcpfX/VzrfmZTBsAA/29WCYXgmvpL9/kwm\nmAslLFcS5MP3vFafwCildbb3Yhk/1kNxXAUcHNp2SP++mpUVRxbH8ReA5+rXf0Qp9cdrvWgYBmeM\nqjKZt1KTSRzSMosOdGnzhm62Uw+PFad4t9sjDE0TorZO0BPfwYkTKXv3TrJ5c8727Tn794e87W1X\nMDvr8+Y3z/KOdzyJJLQ5up0nWll4OI6UFDdlpcPQFDF0dGkNUyVWqssGgfHjOFqxuGWehbwXSY4z\nTmOp/7PcGbiSYDPbh8MdL1bW6x6HVzR11mqTX034Dyu7USaoi421mMYsFsOqiiOO453APurZUBU9\n4I/17xKlVBrHcQE0GM1NwGbgPcBvAb8IfCKOY08p9ak13bjfOOOKQ3INpDyztE2ltPWLSUjs/EEQ\n6nDZjHa7o4V6PRFNssTT1OOzn53iD/9wK6dOnT5sv/Ebs7z5zXP4fptut1uGu0qNqxDTaGgwGOjw\nUtNbQl4vPpKcpaUuaZoTRUHpMK76XtcdyZW930QaSXe65fc2yg5dha6e31XGxcRTMVOdrWnFCmPL\npcpaVhwHgRtW2JcD/xBpFFcSx7HpDrRSPZC7gVApZfbv0QrqnYhj/YzMzEyQpgtllc5hWq0WrVar\nFLaTkxM4jlO2Io0i6dRnjhkMBiRJwsTERFnqI0kSpqZaeF6DBx/cxEc+spVHHw3pdHLe8pZ5sszj\n4EGHkycd3vjGBV7zmpwgkBpUSdIq8ypMVrUU7Et0Al2xzNlsHMhpmpZtYs1qxTiW68dmWVaWkNi2\nbbJ8/XClVPM3LJ9p1yOhLiVmZiYu9C1cNNixqLBjsf6sqjiUUimwd6X9cRwfAH5haPMV+vewCcuc\nM0Gc43X2AK9f7X4AZmfnOXp0nsFgtHO818vxvITBoCCKfMBjaamnHdERjhPQ7eYMBl3CMNW5D1nZ\n4CjLch55pMMXvjDF/fdv5sSJAMcpeM1rTvG2t/2UTZsyms0G0qhpgOd5nDjhEwQDTM0iiWCS+lVB\n4FAUaZm3IEqsV6uFVGVBy/4Cz8upHL5SEND4Jozg37ZtktnZ+XIfrBwxM2yXP1Mo8zgyMzNRjsVG\nx45FhR2LivVUoOvh43gQ+FAcx1cqpYyieAkwBzw0fHAcxx5i+vo9pdRHarvuAH6w1ou6rku/3xu5\nT0JaZQbfbnfw/QDPy3S9Iyk50Wq1GAz6WmEYvwE8+eQEH/7wNr785SkANm1KecMbTvL613fZtWuB\nJBGntbReDcocCci1UnLK2b8k6lWNjsQfYf4H36/qNEn+hKvDYpc3shnOi6gaDNU7rZ0eTTQcWrlS\ndJLFYrGcDU9bcSilvhbH8V8Dn4nj+NeAy4F/DvxLvVohjuM20FFKHVFKGaf4e+I4fgx4GHglcC/i\n61gzUlL7dKSTXoDvO4hArzrkBUFEFIXkuZQ/l2RAhzSd5KMfvYJPf3ozaepw221LvOUtp7jrriV8\nX4T6YFDUivwlunyJWzqqTS8JQPsbKgFt+n8bIS8tYbMyJBaWh3nWndbDMfrG7FavArqWKKVLzTRl\nsVguDOuVAPhK4A+BryBJfB9TSv2T2v53A7+DSWCA+4DjwL8CtgOPAK9VSj2w1gtmWUa32x25T1qj\nmpLcoQ59lb7hzWYLkAJ9Uho95DvfmeZDH7qWI0cCrrhiwDvfeYy/+TcXCQKfNM1L/0OSpESRR6MR\nsbRUYHprG+d3Fam0vJeCUQQm+qke0VRfBZj9huFOY2YVUu9bPS5RURaL5dJhXRSHUupJ4NVn2P8+\n4H21/01W+cjM8rWwuLhQdvAbRsxRUr5b8hp87TOQJkfGVzA3Bx/72C4+//nL8f2Ct771CG960yzT\n081SGJtoKMnG9nSNLKesdGvKfIxq9DO8UhhlTjJ9JgzGwT2qb4JRQsY3YpWGxWK5EIxtkUOZjQ/7\n1yXnwXEkn6EoHF0zqtB5E5Hu6+2hVMp73nMzBw60uPbaHh/4wE+55ZYBSSL+Bsn7oOwpEYZVKXCj\nOEz/CTC5Go6+t4x6naXh5Dvzt6EqIV6tRkYpGtNxzrzGYrFYLgRjqzhGYyrXemX9KZAVSJ6jTU45\n+/ZNct9913D8eMjrXz/LffcdpdFw8P1Il0qvmse4rhRJdJyUMAzLdqSScOdhGihJVrdH3WFdd2aP\nMkEtu/OhcFmzra5szOuGa0ZZLBbL+WRsFcfoMlUF0i+6IMsKWq2AonApCumH4XkBe/Zs4jd/8zoW\nF13e9a4DvOENp3AcjyDwSNNEl0HPy5wPUxlWzEpVmRPTyzgMvWXCvR7qakxQ5vdwxNNwvSCzvV7d\ndLjd52pNhCwWi+VcM7aKw6wm6nheoDOn3bIEeBBIsyLP8/jBD6Z517uuB+D979/HPfd0cV3J0ZBe\nFJ7OJC9Kn0VRGNNTVU1W2nOGpa8EKh9G3RRlfBAm6W+4N0B91TDccMasXoZ9JdZEZbFYLjRjqziM\nP2F4mygL6b4nxQSlh0a32+CDH9xNnjt8+MM/5s47u2XZEikxkpe+kWYz0PkVUrvKmMAK3aTIRE3V\nfRJy/aq6rFl5GEf2akl39byMUeeyWCyWi4WxVRy9Xn/Z/64b6u50Dp4nxQ19XwocFoXD7//+bg4f\njnj722d50Yt6uK5PFEVIs6QC30dHSFXRSqa0h3QOzKhaop5uPoLTw2bNtrVmao/KtbBKw2KxXGyM\nreKo+l0LnucSRRFFUdBqRXql4VMUGX/5l9v48pe38axndfnVXz1FlsnqRFYN4sswykF6gxd6dSHd\n/qT1aVFmmJs8irqvoq4chp3ZVvhbLJZLibH1srZa7WX/Ow66HEhQ5lqEYYMjRzr8wR/cQKuV8qEP\nHSYMxewkJiq3zL0wpUikDLuYqFzX061nWWZ6qleXHS4LIq9dvWGQxWKxjCtju+IYxveDMjTW9z2i\nKMTzfD7xiZtZWvL57d9+jCuuSBFfdlF2x6uS6KraUFlWNUgSpIGSUQzDjY+Mv2Olxj0Wi8VyKTHG\nimNYQEtin1lB+L7P4cMdvvGNGW68cY577pmjKJo629wUInS136JaPVTO6OUOb8NwZFR9+7DisKsN\ni8VyKTK2imO43Ih0BAzxfem30Wp1+MIXdlEUDvfeO0sYBjp6Ch09JcrG80y2eeWXqMxYyxPwVlIa\nBqsoLBbLRmBsfRzDAtr3I1zX0c2bPBYWQu6//zIuv7zP3XfPlxFWniely00ElnF61yOlTA2pemOk\neplzi8Vi2ciMreIYjqoyzZA8zyMMQ774xSvp9Txe+9qjtNthWSnXZHxLYt/yFqr1AoLVOR1bhdZi\nsVhqjK2parjek5RI93Ccgjz3+dznttNqZbz61SdxXZ8wlKQ+cWx72r9B6eMAk4dRnHYtu9KwWCyW\nirFVHPVS5EBpfvJ9n6997QqOHg153eueZHJScjyk6GFQmqbAKcuHGIZ7cQ9Xp7VYLBbLGCuO4bBX\n6bshZdQ///mrcJyC173uScxh4rh2SyUiIbQSRpskSa3ft3NaHobFYrFYKtZVccRxHAFfB35XKfXp\nVY69F2nktAP4LvBrSqlvrfVadb3hOIGuS+Vx9GgbpSZ54QtPceWVKa4blXkXdeVQ92uYFq5Qhd/a\nrG+LxWIZzbo5x+M47gB/CtyyhmNfBnwc+BfAbcAe4C/iON6y1uvVa1VJaRBRDHv3bgPguc+dKyvo\nGv+GcYZDlQkuFXGDMopqOLHPKg6LxWJZzrooDq0IHgJm1viSdwOfVkp9XCmlgF9FepD//bVes99f\nKv/2fU9ndsP3v78JgOc+t186w+XHx+iAUYUEh1cko46zWCwWy/qtOO4BPgm8CJNyvQJxHDvAzwBf\nNtuUUgXwFeCutV5wMBiUf0sfcckcf/jhzbRaGTffnOoVBLiuv6wn+EoMr0as4rBYLJbTWRcfh1Lq\nPvN3HMerHT4NtIGDQ9sPAc9d6zXrUVWeF+B5LqdORezf3+YFL1gginySZIDvh2VdqtUyv+tYpWGx\nWCyjWVVxxHG8E9iHJDgMS9OeUqp1ltc0x/eGtveBxlpPYqrYAjQa4st45JGtADznOV2yLCtXDrbt\nqsVisawfa1lxHARuWGHfyM7fq2CcE9HQ9ghYXMsJZmYmmJ6u9NXERJvNmyd57LHLAHjxi2FqqoHr\nukxNTRFFkc7j8C+5lcTMzMSFvoWLBjsWFXYsKuxYrD+rKg6lVArsXa8LKqWOx3G8CGwf2nUFp5uv\nRjI7O8+xY3Pl/0kCc3Ndvve9aYIgZ8eOk5w4kerGTkt4XlIqjkuJmZkJZmfnL/RtXBTYsaiwY1Fh\nx6JiPRXohbLb/G/g58w/2mH+s8D/XOsJTKitodv12LdvkptuWsT3U1zX0WG6o8ujWywWi+WpcV6m\n4HEct4GOUuqI3vR7wJ/HcfwQ8CXgXcAkktuxRiqTk+RvbCXPHW69dRHfNz02HDzPtxFSFovFso6c\ni2n46VUCJW/jkPlHKfVF4K3AO4FvIz6Ulyuljq/5IstKjmQ8/PBmAJ79bFmWep4k99l6UxaLxbK+\nrPuKQynljdj2PuB9Q9s+BXzqqV6n0hs+ruvz8MNbcd2C224bEIbNsp0rWDOVxWKxrCdjK1Hb7TaO\n49NqNSmKBo8+Osn11y8yNeUSBFJiZDgT3GKxWCxPn7ENM9q8eTNbtmwlzzMef3wbSeJy660L+L5P\nnktfDVOLymKxWCzrx9iuOKS3uHT0e+yxKQBuuqmrHeLSe6PepMlisVgs68PYKg4wbV0DDhwQxfGM\nZ0hhw6Ko+m9YLBaLZX0ZW8mapilFkeM4cOBAB88r2LkzLVcbksdhVxwWi8Wy3oyt4iiKXHfoc9m/\nv8XOnX0aDZcgCHFdx5qpLBaL5RwxtoojSTLA4dSpSbpdn+uvHxCGkV5luDiOzd2wWCyWc8HYKg7f\nl4ipQ4fEv3H99Um5AgGsf8NisVjOEWMrXfNcTFWHDknHv2c8Iy0T/epl1C0Wi8WyvoxtHofvBwSB\nx+HDUmrkGc9Iy5wNMVFZM5XFYrGcC8Z2Sh6GIY1Gk0OHpvD9gquvTnAccN1KYVgfh8Visaw/Y6s4\nms02nhfyxBOT7No1KLsAel61iLKKw2KxWNafsVUceZ5z7FiHXs9n9+4BjmMKHxY6v2Ns35rFYrFc\n1IytdC2Kgv37OwBcd11Cmma13A5ZadgVh8Visaw/Y+scz7KEAweM4ugjJUhcwLEVcS0Wi+Ucsq6K\nI47jCPg68LtKqU+vcuyTwNbapgJ4r1Lqg2u5luM47N8vPXR375YcDlMN1/xtsVgslvVn3RRHHMcd\n4D8Bt6zh2G2I0rgT+FFt15q7yvu+OMaDIGfnzoyiAN+3jnGLxWI516yL4ojj+GXAR4ETa3zJzUAC\nfF0plT2Va/p+yIEDHXbsWCIMl5cYsUrDYrFYzh3rZc+5B/gk8CLWlnl3M/DYU1UaAEeORPT7Hrt2\nLdUyxasEQKs8LBaL5dywLisOpdR95u84jtfykpuBLI7jLwDPBQ4CH1FK/fFar/nII6Lzrr22R5Zl\nOI63LPnPYrFYLOeGVRVHHMc7gX2I83pYMveUUq2ncN2bgM3Ae4DfAn4R+EQcx55S6lNrOYFRHLt2\ndXHdANf17IrDYrFYzgNrWXEcBG5YYV/+FK97NxAqpRb1/3u0gnonsCbF8eijoiSuu26A44T4vl8q\nDKs0LBaL5dyxquJQSqXA3vW8qFIqQZzjdfYAr1/L62dmJvi5n5tnbu4Ez352yOWXb8L3fcJQepBv\npM5/MzMTF/oWLhrsWFTYsaiwY7H+nPcEwDiOPcT09XtKqY/Udt0B/GAt55idnecVrzjJHXccYm6u\nSbPZxXV9fH9QKo6NwMzMBLOza45gvqSxY1Fhx6LCjkXFeirQ86I44jhuAx2l1BGllHGKvyeO48eA\nh4FXAvcivo41kec5juPgea41T1ksFst55FwojmLEtncDvwN4+v/7gOPAvwK2A48Ar1VKPbDWi9RN\nUo4jGeNWgVgsFsu5xzE5EGNEMTs7z9zcHLOzR4iiJlu3biUMQ4qiKJs5bQTsMrzCjkWFHYsKOxYV\nMzMT6zarHltngOM4etUhY1GvimuxWCyWc8fYKo48l0hgU0odbKkRi8ViOR+MreLIMqlW4vs+nudt\nqBBci8ViuZCMreIwEVWe51ulYbFYLOeRsVUcYFrFsmHyNiwWi+ViYGwlrvg1ijKPw2KxWCznh7FV\nHCZnw3U9qzgsFovlPDLWisP4NywWi8Vy/hhbqWuc46aUusVisVjOD2OrOPI81z04xvYtWCwWy1gy\ntlK3XuDQYrFYLOeP815Wfb1wXZeisCsOi8ViOd+MrdQ1UVW+P7a6z2KxWMaSsZW6ki1uo6osFovl\nfDO2iqPZbJaFDi0Wi8Vy/hhbxbGRWsRaLBbLxcS6KI44jp8D/HPguUAX+G/AbyilTpzhNfcC7wV2\nAN8Ffk0p9a31uB+LxWKxnDue9pQ9juPtwP3AY8ALgNcAzwM+c4bXvAz4OPAvgNuAPcBfxHG85ene\nj8VisVjOLeth63kdsAS8XQlfA94BvDSO46tWeM27gU8rpT6ulFLAryI9yP/+OtyPxWKxWM4h66E4\n/gx4nVKq3rzc/L1p+OA4jh3gZ4Avm236tV8B7lqH+7FYLBbLOeRp+ziUUvuAfUOb/zFwEPj+iJdM\nA229v84hxEdisVgslouYVRVHHMc7EcVQAMP1PXpKqdbQ8R8CfhH420OrEIM5vje0vQ801nLTFovF\nYrlwrGXFcRC4YYV9ZSJFHMcu8G8QP8XblFL/dYXXLOnf0dD2CFhcw/1YLBaL5QKyquJQSqXA3jMd\nE8dxBHwW+HngXqXUihFVSqnjcRwvAtuHdl3B6earUTgzMxNrOGxjYMeiwo5FhR2LCjsW6896hOM6\nwH8GXgzccyalUeN/Az83dI6fBf7n070fi8VisZxb1iMB8B8AvwT8CrAnjuPLavuOKaXSOI7bQEcp\ndURv/z3gz+M4fgj4EvAuYBLJ7bBYLBbLRcx6hOO+AXGc/xESGXUI+Kn+/Tx9zLv1/wAopb4IvBV4\nJ/BtxIfycqXU8XW4H4vFYrGcQ5yiGBX4ZLFYLBbLaGyVQIvFYrGcFVZxWCwWi+WsGIuy6jpH5J8C\nbwImgP8BvEMp9eQFvbHzQBzH25BikC8HmsDXgXcppX6g9/88Upk4RsKmf1Mp9T8u0O2eN+I4fgHw\nv4CXKqW+ordtqLGI4/gtwK8DVwMPA7+ulPorvW/DjEUcxy3kvb4KSTD+GvKM/FDv3xBjEcfxRwFX\nKfXW2rYzvvc4jmeQ/LuXAwPgE8BvKaXO2OxoXFYc7wP+HvB3kXpWVyEhwJc0Okz588D1wCuAFwKn\ngAfiON4Ux/EzkVphnwFuBf4c+HwcxzdeoFs+L2hB8e+pfX832ljEcfwm4F8DHwRuRkLZ/zyO4x0b\nbSyA3wdeArwaqdDdA/57HMfhRhmLOI7fjwQc1bet5b1/DtiGyNU3Af8nIm/PyEXvHI/jOACOAv+X\nUurf622mDMqLlFJ/fSHv71wSx/GtSNTZjUqpvXpbiFQSfhtwJ/AMpdRLaq/5ErBXKfW2C3DL54U4\njv8tokzvBl6slPqK3rZ7o4xFHMf7gE8qpd6n/3eQ78rvIuOyYb4XcRzPAv+PUurf6P9vROrk3Y48\nJ5fsWMRxfA2SxnAT0gvpfrPi0CuQFd97HMcvBB4ErlFK7df734go4hmlVLLSdcdhxXEr0KGWHKiU\nehz4CZd+Nd39SFJlPXPfLCE3Ie//y0Ov+TKX8LjEcfyLwC8A/5DltdPuZIOMRRzHMbAT+E9mm1Kq\nUEo9Ryn1H9l434tZ4HVxHM/oidVbkMnVj7n0x+JFiJy4BZGJdVZ773cCjxulUds/icjdFRkHH4fp\n6TGqmu7V5/lezis6r+W/D23+v5FikH8BfIANNC5xHG9F8oXeBJwc2n0VG2csnoHkTm2K4/gBxFT1\nCGK//hobayxATDR/DBwBMqTm3c8rpeZ0T6BLdiyUUn8C/AmAzCeWsdp7X2k/+phvrnTdcVhxtIBc\nKZUNbd9w1XTjOP5biE37X+oGWC02VpXhjwKfV0rdX9tmbK0baSwmkdXWJ4GPAX8DMc08EMfxDWys\nsQDYjSQd/wIyA/8i8J/jOL6SjTcWdVZ776ft17UJC1YZn3FYcSwBbhzH7pCnf0NV043j+M2IkPi0\nUuof681LbJAqw9oZfCvwLL3JGfq9YcYCMLbnD9Rqw70jjuM7gbcjtu4NMRZxHO9CnosXKaW+qbfd\ni0SZ/SM20FiMYLVn4rT9cRz7yDN1xvEZhxXHAf37qVbTHXviOH4P8O+AP1BKvbm26wAbZ1zehCyt\nj8RxPI+YZkCiZ/4QsfNulLE4iMwKhxulPQJcw8b6XjwXkWPfNhv0rPkhJIBiI43FMKu995X2wyrj\nMw6K47vAAsur6e4CdiHtZi9p4jj+DeD9wG8rpe4b2v0gtXHRvJhLc1zuBZ4JPFv//A29/VeA9wJf\nZeOMxXeQmfQdQ9ufCfwI+V7cPbTvUh2LJ/TvZw1tfyaSt7CRxmKY1eTDg8C12qRneAkwhyjeFbno\nw3EB4jj+Z1QxxrNIwkpXKfXSC3pj55g4jp+FzKQ+Cfz20O554FrgW8CHgP+ACNd3Ac/RPpBLFv1l\nPwDcrcNxb2YDjYWO2/8HSOO0PcA7ECfxsxH79IYYC50c/CBir38HErr/j4C/gwQNTLFxxuKvgEdr\n4birPhNxHH8VWb3+GnA5Imv+tVLqn5zpWuOw4gARmn+CJH09gORwvPaC3tH54XXIZ/TLVJWHzc99\nSqnvA69EEp/+P+AeJHz3knogzkA569loY6GU+h2kosCHge8Bz0cqTP9oI42F9nveg1RU+A9I1vi1\nwJ1KqQMbaSyoPQ+w5mfilUg02leQfJCPraY0YExWHBaLxWK5eBiXFYfFYrFYLhKs4rBYLBbLWWEV\nh8VisVjOCqs4LBaLxXJWWMVhsVgslrPCKg6LxWKxnBVWcVgsFovlrLCKw2KxWCxnhVUcFovFYjkr\n/n+LCiboTyUQFQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(np.arange(1, n+1), y, c='grey', alpha=0.02)\n", "plt.plot(np.arange(1, n+1), y[:, 0], c='red', linewidth=1);\n", "plt.plot(np.arange(1, n+1), upper, 'b', np.arange(1, n+1), lower, 'b')\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Using bootstrap to monitor convergence\n", "\n", "If it is too expensive to do 1000 replicates, we can use a bootstrap instead." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "xb = np.random.choice(x[:,0], (n, reps), replace=True)\n", "yb = 1/np.arange(1, n+1)[:, None] * np.cumsum(xb, axis=0)\n", "upper, lower = np.percentile(yb, [2.5, 97.5], axis=1)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\noQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(np.arange(1, n+1)[:, None], yb, c='grey', alpha=0.02)\n", "plt.plot(np.arange(1, n+1), yb[:, 0], c='red', linewidth=1)\n", "plt.plot(np.arange(1, n+1), upper, 'b', np.arange(1, n+1), lower, 'b')\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Variance Reduction\n", "----\n", "\n", "With independent samples, the variance of the Monte Carlo estimate is \n", "\n", "\n", "\n", "\\begin{align}\n", "\\text{Var}[\\bar{g_n}] &= \\text{Var} \\left[ \\frac{1}{N}\\sum_{i=1}^{N} \\frac{f(x_i)}{p(x_i)} \\right] \\\\\n", "&= \\frac{1}{N^2} \\sum_{i=1}^{N} \\text{Var} \\left[ \\frac{f(x_i)}{p(x_i)} \\right] \\\\\n", "&= \\frac{1}{N^2} \\sum_{i=1}^{N} \\text{Var}[Y_i] \\\\\n", "&= \\frac{1}{N} \\text{Var}[Y_i]\n", "\\end{align}\n", "\n", "\n", "whereY_i = f(x_i)/p(x_i)$. The objective of Monte Carlo swindles is to make$\\text{Var}[\\bar{g_n}]$as small as possible for the same number of samples." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Change of variables\n", "\n", "The Cauchy distribution is given by \n", "$$\n", "f(x) = \\frac{1}{\\pi (1 + x^2)}, \\ \\ -\\infty \\lt x \\lt \\infty \n", "$$\n", "\n", "Suppose we want to integrate the tail probability$P(X > 3)$using Monte Carlo. One way to do this is to draw many samples form a Cauchy distribution, and count how many of them are greater than 3, but this is extremely inefficient." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Only 10% of samples will be used" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.10241638234956674" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import scipy.stats as stats\n", "\n", "h_true = 1 - stats.cauchy().cdf(3)\n", "h_true" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(0.14000000000000001, 0.36696880702301304)" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = 100\n", "\n", "x = stats.cauchy().rvs(n)\n", "h_mc = 1.0/n * np.sum(x > 3)\n", "h_mc, np.abs(h_mc - h_true)/h_true" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### A change of variables lets us use 100% of draws\n", "\n", "We are trying to estimate the quantity\n", "\n", "$$\n", "\\int_3^\\infty \\frac{1}{\\pi (1 + x^2)} dx\n", "$$\n", "\n", "Using the substitution$y = 3/x$(and a little algebra), we get\n", "\n", "$$\n", "\\int_0^1 \\frac{3}{\\pi(9 + y^2)} dy\n", "$$\n", "\n", "Hence, a much more efficient MC estimator is \n", "\n", "$$\n", "\\frac{1}{n} \\sum_{i=1}^n \\frac{3}{\\pi(9 + y_i^2)}\n", "$$\n", "\n", "where$y_i \\sim \\mathcal{U}(0, 1)$." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(0.10227041113815047, 0.0014252720909242859)" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y = stats.uniform().rvs(n)\n", "h_cv = 1.0/n * np.sum(3.0/(np.pi * (9 + y**2)))\n", "h_cv, np.abs(h_cv - h_true)/h_true" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Monte Carlo swindles \n", "\n", "Apart from change of variables, there are several general techniques for variance reduction, sometimes known as Monte Carlo swindles since these methods improve the accuracy and convergence rate of Monte Carlo integration without increasing the number of Monte Carlo samples. Some Monte Carlo swindles are:\n", "\n", "- importance sampling\n", "- stratified sampling\n", "- control variates\n", "- antithetic variates\n", "- conditioning swindles including Rao-Blackwellization and independent variance decomposition\n", "\n", "Most of these techniques are not particularly computational in nature, so we will not cover them in the course. I expect you will learn them elsewhere. We will illustrate importance sampling and antithetic variables here as examples." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Antithetic variables\n", "\n", "The idea behind antithetic variables is to choose two sets of random numbers that are negatively correlated, then take their average, so that the total variance of the estimator is smaller than it would be with two sets of IID random variables." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def f(x):\n", " return x * np.cos(71*x) + np.sin(13*x)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.02025493910239406" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sympy import sin, cos, symbols, integrate\n", "\n", "x = symbols('x')\n", "sol = integrate(x * cos(71*x) + sin(13*x), (x, 0,1)).evalf(16)\n", "sol" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Vanilla Monte Carlo" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(0.0058850342599772341, 0.7094518907103678)" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = 10000\n", "u = np.random.random(n)\n", "x = f(u)\n", "y = 1.0/n * np.sum(x)\n", "y, abs(y-sol)/sol" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Antithetic variables use first half of u supplemented with 1-u\n", "\n", "This works because the random draws are now negatively correlated, and hence the sum of the variances will be less than in the IID case, while the expectation is unchanged." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(0.017795257018306126, 0.1214361628861775)" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "u = np.r_[u[:n//2], 1-u[:n//2]]\n", "x = f(u)\n", "y = 1.0/n * np.sum(x)\n", "y, abs(y-sol)/sol" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Importance sampling\n", "\n", "Ordinary Monte Carlo sampling evaluates\n", "\n", "$$\n", "E[g(X)] = \\int_X g(x)\\, p(x) \\, dx\n", "$$\n", "\n", "Using another distribution$h(x)$- the so-called \"importance function\", we can rewrite the above expression as an expectation with respect to$h$\n", "\n", "$$\n", "E_p[g(x)] \\ = \\ \\int_X g(x) \\frac{p(x)}{h(x)} h(x) dx \\ = \\ E_h\\left[ \\frac{g(X) p(X)}{h(X)} \\right]\n", "$$\n", "\n", "giving us the new estimator\n", "\n", "$$\n", "\\bar{g_n} = \\frac{1}{n} \\sum_{i=1}^n \\frac{p(x_i)}{h(x_i)} g(x_i)\n", "$$\n", "\n", "where$x_i \\sim g$is a draw from the density$h$. This is helpful if the distribution$h$has a similar shape as the function$f(x)$that we are integrating over, since we will draw more samples from places where the integrand makes a larger or more \"important\" contribution. This is very dependent on a good choice for the importance function$h$. Two simple choices for$h$are scaling\n", "\n", "$$\n", "h(x) = \\frac{1}{a} p(x/a)\n", "$$\n", "\n", "and translation\n", "\n", "$$\n", "h(x) = p*(x - a)\n", "$$\n", "\n", "In these cases, the parameter$a$is typically chosen using some adaptive algorithm, giving rise to adaptive importance sampling. Alternatively, a different distribution can be chosen as shown in the example below." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Example\n", "\n", "Suppose we want to estimate the tail probability of$\\mathcal{N}(0, 1)$for$P(X > 5)$. Regular MC integration using samples from$\\mathcal{N}(0, 1)$is hopeless since nearly all samples will be rejected. However, we can use the exponential density truncated at 5 as the importance function and use importance sampling." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.linspace(4, 10, 100)\n", "plt.plot(x, stats.expon(5).pdf(x))\n", "plt.plot(x, stats.norm().pdf(x))\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Expected answer\n", "\n", "We expect about 3 draws out of 10,000,000 from$\\mathcal{N}(0, 1)$to have a value greater than 5. Hence simply sampling from$\\mathcal{N}(0, 1)$is hopelessly inefficient for Monte Carlo integration." ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'%.10f'" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%precision 10" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.0000002867" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "h_true =1 - stats.norm().cdf(5)\n", "h_true" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Using direct Monte Carlo integration" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(0.0000000000, 1.0000000000)" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = 10000\n", "y = stats.norm().rvs(n)\n", "h_mc = 1.0/n * np.sum(y > 5)\n", "# estimate and relative error\n", "h_mc, np.abs(h_mc - h_true)/h_true " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Using importance sampling" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(0.0000002847, 0.0066615784)" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = 10000\n", "y = stats.expon(loc=5).rvs(n)\n", "h_is = 1.0/n * np.sum(stats.norm().pdf(y)/stats.expon(loc=5).pdf(y))\n", "# estimate and relative error\n", "h_is, np.abs(h_is- h_true)/h_true" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Quasi-random numbers\n", "----\n", "\n", "Recall that the convergence of Monte Carlo integration is$\\mathcal{0}(n^{1/2})$. One issue with simple Monte Carlo is that randomly chosen points tend to be clumped. Clumping reduces accuracy since nearby points provide little additional information about the function begin estimated. One way to address this is to split the space into multiple integration regions, then sum them up. This is known as **stratified sampling**. Another alternative is to use quasi-random numbers which fill space more efficiently than random sequences\n", "\n", "It turns out that if we use quasi-random or low discrepancy sequences, we can get convergence approaching$\\mathcal{0}(1/n)\$. There are several such generators, but their use in statistical settings is limited to cases where we are integrating with respect to uniform distributions. The regularity can also give rise to errors when estimating integrals of periodic functions. However, these quasi-Monte Carlo methods are used in computational finance models." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Run \n", "\n", "! pip install ghalton\n", "\n", "if ghalton is not installed." ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import ghalton\n", "\n", "gen = ghalton.Halton(2)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAFOCAYAAABaAWPHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmcHXWV//9XEjAQiUMHo19aMEQ0Z0ZFwXEBNDBEDeKX\nAXdwAdShhwHzY3RkcUFFIi4RFxRoFWUGUSTKsDthHFmC4gLCgOucuARE2vkS092QQAgQ+vfHp25y\nU7ndfatv3bqfqno/Hw8eoW/X7fu5S50653w+VXfa2NgYIiIiIpKf6b0egIiIiEjVKMESERERyZkS\nLBEREZGcKcESERERyZkSLBEREZGcKcESERERydl2vR5A3ZjZR4CPtPjVY8ADwC+Ar7r7Nwsd2BSY\n2eeBE4G/c/ebej2ebjGzO4C93H1Gr8ciIiLloASrN8aAK4E7mm7bDngK8CbgIjMzd/9wLwaXwVjy\nX9XV4TmK5M7M9gbeBbwUeDqwDvgt8A3gInff0MPhbcPMbgQWAn3u/kCPh9M2MzscuBw43d3P6PV4\nJFCC1TtXuPvX0zea2acJidf7zOx8d7+n+KGJiEydmU0DzgA+AGwArgWuAOYAi4AvAe81s8Pc3Xs2\n0G1dAFwPPNzrgUj5KcGKjLv/3syuAN4CHAx8tcdDEhHJ6gzgg8APgSPc/c+NXyTJ1/8HfBb4gZk9\nx93X9GaYW2tV9IpMlRKsON2b/LsLgJktBk4FngvMBn4HXAx8xt0fbb6jmb0ReA+wF/A4cCvwMXe/\nsWmbA4EbgM+7+7+k7v9vwNHA3u7+86bb30lYb/WsZHxnjTd4M3sRIbi+DHgi8AfClMBn3P2RyZ58\n0/hOAA4EDgdGgde7+4/N7OnA+4FXAk8jrF9z4Hx3/3LT3zkG+FfgFcALgH8kTFP8iVCpftLdH2/a\nfgfgw8CbgacCdwKnTDDOI5LX5PmEacSfA19w9+Wp7R4nJMrfAM5MxnJ/MrYPAX9NONjsT1iHdxlw\niruripbSMbO9gPcR4tQh7v5g8+/dfQz4gpntBHwM+CJwZOEDFekyJVhxemby771m9jLgKmANcAmh\n3f5K4OPJdsc27mRmZwCnAasJB+8x4I3A983saHe/uI3H3mZdlZktJSRMdxEShf8DnJuMidS2rwG+\nTUh6rgD+F3g5IbE42Mxe4e6PtTEOCCcDrAO+ADwHuN3M9iAkjTsSEpF7CEnWG4BBM5vh7uel/s6n\nAEvGNUpIoD6W/I0PJeOeRpjGOAD4KfDvwIuA7wEPtXieZwH/AvwZaJyQcCjwLTPb293fn7rLfoTE\n9RrgPOD1hIPQU5L/vzW5/dXAEuBR4L1tvk4iMTmOcIb6menkKuXThALldWY2F5hFiF1XuPvrmjc0\ns9MJxc9r3P2qptsPJazx+ltgZ8L+fTNhLdKdTds9kbDPvwrYg1DI/JBQfP5303Y3EmLAzpOtwUq2\nnUcoBAeBucDV7n5k8vujgXcQCrAnAmsJ048fcvfVTX/nLkIRekLymiwkvH4/AN7fXOgm2y8ETk+e\n88OEwu1n44zx/yTbvppQNP4/4LvAR939f5u2O53w+i4gFKJvJbye/w38M3A7cDLwT4SY9StCEbhy\noteo7nSZhsiY2QuBwwgH9RXAu4HtgZe6+z+7+/uAFxPWaR2dVIHNXaPrgWe7+4nu/s+ExOQPwJfN\nbJcpjOeZhO7Z7cDzkzEcQegqPTW17WxCZ+hBYD93f0vSIduHkIQsTP5Wu3ZKnvf73P3v3X1jcv85\nwN+7+9Hu/kF3fzvwd8l93tLi7+yZjP1Ydz+J0Cl6FPiHpm3eTgisX3X3/dz9JHc/EDgb6Es9z5cR\nkqvbCGcXHufuxwHPA34JnJJs0+zZwMnu/gZ3P5kQ6KcB7yR03g5O3tuXEoJ/q+chUgaHJf9+d6KN\nku77d4EZhOJkIq0KvyWE4nNPQkf/c4QD/+HASjNrjk/fISRzq5LtvgscQpiifNZEjzPJmHYhFL43\nEYraHyRjOwv4N+Cvktu/SOj8vwW4wcxmpv7O04EfAU8Gvkzo4B+SbLs5bpvZq4DvE5KrfyecLHUM\noQOefn2eQThODAC/IRSqvyEkwLclxWr6eX+bUJR/i1AM7k8oPL9GiHn/kTzffYCrkwROxqEOVm9M\nA15rZvObbtueUD0cSgg4J7n72qSzArAv8EcAd9+U7Ggb3H198vtGsnBKkoiQbDtiZp8CvkI4Q3Ew\n41jflIznTHdf1/R3/8PM/pOwTqzhNYSq56PN1aO7P25m7wFel4zzzDYf++YWazMuAn7i7jc03+ju\nPzOzDYTqKu3S5orR3e82s18DzzOzJyTTlm8mTKl+IHXfDxMC0pOabnsHIRid5O7DTX93rZm9jxCY\n3kmokBs20vTau/sqM/sLIUB/pun2dWb2G+DFZjaz+b0UiZ2ZbU/oKI+6+1/auIsT4uEzCMVhu4/z\nBEJH6n+AFzRPp5vZuYROy98DXzWz5xAKmgvd/R1N232XkFAcS7bCr9kTCUsfNi8lMLN+QmF8I/Dy\nZEq08btrCInTQkKi1DAfOCcpihvbfjkZ2+uBr5jZdEKX+2FCAfubZLtPEpKztPMJXbVj3f1fm/7u\ncYRYdD5hNqRhGiEhfF4j1pvZY4TY+Frgr939/yW3/5Eww3A4ISGUFpRg9c5hbKn0IHRU/kKoFs51\n9+uS288nfIgvSabqViT/XZ9af/WC5N83mNnfpx5rN8LOs/cUxvm85N/bWvzuR2ydYDXWIv0gvaG7\n/8XMHHi+mc1uTtYmsDp9g7v/CPiRmfURns8zCdN/+wI7EJLBtN+2uO3+5N+ZwCOE5/nH9EHB3R8x\ns9uAg5pufj4hGbu5xd/9YdM2ze5pMTX6IDDL3e9L3d44WMwkJGYiZbELIdasn2zDRKNAeXLGx5lB\nSD7+3GKt4o3A8WwpthozNZaKPZcTErs/ZnzstMtSPz8MvA34dXNylVhJSLBaFYLLUj//B6H7tEfy\n80uS//9iI7kCcPfVZvY54JON28xsN0LMWtmcXCXbfzlZU7vIzJ7u7s3P/19TsflmQoJ1cSO5SvyU\n8D7vgYxLCVZvjAFvd/eLJtvQ3a81s4MI89+vIJx9cyIwbGanu/s5yaY7J/+OV4mNkZrqalPjPq0S\nouHUz40uz/3pDRNDhMRjlpm9gC3Teg2j7n5208/bXCPHzHYGPk/Y6bcjPK+7CNXvCwg7fVqrJKUR\n+Brb9xHWJ7TS6nk+3Gotmbs/YGYPEdaTNBtvLcqki/5FSmQtYd+a3eb2je0yXXMquX7WpQDJFN+z\nCVOFzyWs+RwjKbbc/Rdm9mNCEfa/ydqpFYT1UndnedxxbFUIJl3tS8xsWtI9+xtCIvd8QgyHbQvB\nh9393tRtzUUgbClgxyt2mzWK6W2K3cTNwAuTv9lIsMaA36e2a8Stu9LjTY1NWlCC1TutEoGW3P0H\nhLUCOxJay4cS5t3PNrPfuvt/EirGTcAOzWfGjaORXLRag5dODEaSf/+q6f8bdkr93EjCnkbrINBI\n1tYSkqv0hVTvIqx5msg3Ce3+QcLizl80FtKa2dsmue9ERgjPsZVWz3NPM3tSeiFssrZiR8JzFKkV\nd3/UzIaAfjN7SovubNrf0PrAPikzO4Cwnmqf5G88TDjz92ds6do3vJJwRvBbCfHjEMKZjN8HBsZL\ntJLF3+ku1OWpheetCsHXETpKz0zuv54QE+8gJFnp+N9uEQj5FbvQfiGoTvoUKMGKnJmdCDzZ3T+c\nVG3fA75nZrcAXyckXP9JuETA8wldnJ+l/sZLCOujrnH3m9nSNXlii4fcM/XzbYRFjy9l2yrmRamf\n7yAEg8aZj81jmE2oqn6XdH4+mvzXNjP7K0JgvNXdl6R+twdhirDtxDXlNuBVZrabu/+p6e9OJwTw\nZncQnsvLCG38ZguTMfxqiuMQKbsrCGfEHUbqOn7N6wrNbAYh2QH4LzIUfsmlWlYQTgY6ltCRWeXu\nY2b2JsKaoc3c/SHC2XSnJyfuLCYkW68gLNreb5zn8mG2TbBWE+JtS2b2YsLarnuAI4CfNdaAmtkp\nbOliZdVc7KZNVOy20lzsSpfoLML4HQx8INlpm81ny/QYhDNWpgGfS5IZYHNi8yVC9dZoS/+O0O1a\nlFz7qbHt/2XLWq6G5YTq5UPNZ+Ukpwofltr2CkLFdIKZ7dO07QzCGSw7ABe286TH8Qhh7VNfspi2\n8fd3ABpTpdu3umMb/o3w+n3WzJoLj1NInS3ZtO0nzGzz2pHkVPNPE96XSad/RSrqfEJ8+UDjLGfY\nHAfuMrNvJQnSiYRO09VJAjJR4ffM1M+vIcSTD7n7BR40EqFnJ/9OSx73eWa2LCk0cfffebiUy8sI\n6zNfnNrnN3P36e4+I/XfZBcjPTJ57OPd/TvNJ9ikx5bRbcn9Xtrid62KXcbZFsL1BceAX09hHNIm\nJVi9kWXn+gghwbnRzC40s49buNL76YSd45sAHi4k+gXCabW/MrNBC1/G/EvCAu5BT76QOVnIfQVh\ngeKtZvZJM/s24bTfrebskwWQJxEuMPrfZnaumX2DUHHendp2HeHsue0JC9EvThZf3k64BtRNbLuQ\ns21JB+8yQpftFjP7VHLG0CrCFMAwW9aiZf3b3yGcyv16winMn03OkjyDbZ/nDwinRT8X+LmZfTk5\n4+cOwmv9SXf/ISI1lEyffYJwjahrzazRRZlJKPYOJnyp/acIHZT3JL+/j9CleXGqcNmHcB2nZg8T\n4uhWlwkws+cRErcxthRbMwkx7LTU39iZ0Mn5c6v1lB1orE9Kj+3lhLWjMIVC0N1vJcT8t5rZ5o6b\nme1KuITCWNO29xAu9fBCM/un1DiOJRwnrnf3IaRrNEXYG21/eXBy+YEDCMHhIMJpt0OEtQdnetOX\npbr7u5OpwxMIZ7E0rnD+oRZV1zsI12V5I2Hh/C8Jl1F4FqGyax7DeWb2J8LV048hnO14GuHMx8+m\ntr3cwjWgTiME0pmEjtlJhKucb2rzqY93PZp3ElrvryVckPPPhDNaPklo+f+zmR3UdBmHiV7r9O+O\nJFzc81jCad6ePM6xwO7NG7r7ScnZhUsI17Z5lHBRvhPc/co2n8tE49MXTEtpuftHLFxi5oPAKjNb\nQSiEZhMKocYlau4mKfSTy7lcQEgWbjWzSwnx7o2EfXxh00NcQ7io6AfM7G8Ia7ieRVifOkpIvnZJ\n/m7jb73ezG4nnBCzPaELtgshpuRpOSGODJrZ3xFi1PMI8XAN4QzCzNckTLyTUNxenzynBwhxex3b\nFu7HEYrac5M1YT8nfMPHKwnfZnFcavupLq+QcUwbG1McFxGR/CXdp3cRirbdCQnB7wjd4vsJU+qz\ngc+5+weSqboPEgq5XQlTeJ8hJE2XAa/15Eruyd/+BOGim9sRkrUVhGLrd8A6d39Gsu1MwhXJ30ro\n3I8R1qp+1t03r6M0sxsIidyc9AksLZ7buNua2SLCGtPnEqZL7yKc9XgBobC92d3/Ltl2NfAkd98l\n9TcOJCSDn3f39zbd/lzCNcAOSJ7HpYQlCSsJV7Bf2rRtP2Ed2f8lXApjiHBx0o83X5LGzD6SbLf5\n9U1uPyYZ83vc/QuTjU22pgRLRER6wsJVyv8FGHb3z0y2vUiZKMESERERyZkWuYuIiIjkTAmWiIiI\nSM6iOotwzZp1meYr+/pmMTLyULeG0zUad7E07mJlHffcubMrcfaS4lfcNO5ilXXckG3sE8WvUnew\nttuu1ff6xk/jLpbGXayyjrtoZX2dNO5iadzFy2vspU6wRERERGKkBEtEREQkZ0qwRERERHKmBEtE\nREQkZ5nPIjSzLwHT3f0fJ9jmhcDngX0I33n0MXe/aMqjFBHJgeKXiBQlUwfLzM4Axg1MyTZPBq4l\nfM/TPsAXga+Z2SumOkgRkU4pfolIkdrqYJnZfOBrwHMIX6g5kQFg1N3fnfy8ysxeAJwEfH+qAxUR\nmQrFLxHphXY7WPsDfwT2Inwr+EReBtyUuu1G4KVZBiYikhPFLxEpXFsJlrt/093f7u73tbH5bsC9\nqduGgFlmNifrAEVEOqH4JSK90I2zCGcBD6du25j8u0MXHk9EJC+KXyKSi258F+EGYGbqtsbPD050\nx76+WZkvUT937uxM28dC4y6Wxl2sso4bxa+2aNzF0riLl8fYu5Fg3QPsmrqtH1jv7vdPdMesXww5\nd+5s1qxZl210EdC4i6VxFyvruCMLwopfk9C4i6VxFy/L2CeKX92YIvwhcEDqtkXAzV14LJGoDQ+P\nMjBwOYsXX8fAwGWMjIz2ekgysSjilz43IuXXcQfLzLYH5gDD7v4o4XTok81sEDgbeCVwJHBwp48l\nUjannnoDV155FDCNO+4YAy7i/PNf2+thSSLW+KXPjUj5TaWDNZb6eX/CWTb7ASRn6ryKcJG+24ET\ngKPcfWUH4xQppbvvfhIwLflpWvLz5IaHRzniiG8V2sGoSdekFPFrqp8bEYlH5g6Wuy9K/bwSmJG6\n7RZg386GJlJ+8+bdn3QgpgFjzJv3QFv360UHow5dk7LEr6l+bkSaDQ+PcuqpN3D33U9i3rz7WbZs\nEX19O/d6WLXRjUXuIpJYtmwRcFES4B5g2bKD2rpfLzoY6prEY6qfG5FmdSiaYqYES6SL+vp2nlJA\n60UHQ12TeEz1cyPSTEVTbynBEonQsmWLmDnzElat2rGwDoa6JhI7TXllo6Kpt5RgiUSor29nli9/\nc6HXkVHXRGKnKa9sVDT1lhIsEREpBU15ZaOiqbe6caFRERGR3M2bdz9brrShKa86KPPlY9TBEhGR\nUtCUV/2UeVpYCZaIiJSCprzqp8zTwpoilI6UuX0r+Wp8Fl784qv1WaioXnzDgNRbmaeF1cHqUN1P\nGy5z+1a21cnnufmzEAKiPgtVo/1dilbmaWElWB2qe8Apc/tWtpXl85xOxv7whyeiz0K1dbq/170g\nlezKPC2sBKtDdU8w6nohu6oeKLJ8ntPJWH//xwmdq3p9Fuqk0/29TgVpVWOEtE8JVofyTjDKtlOW\nuX3biaoeKLJ8ntPJ2Jw5e/CiF13E0FAf/f0jtfks1Emn3zBQp4K0qjFC2qcEq0N5Jxhl2ynL3L7t\nRFUPFFk+z+lkbM89N3H++a9l7tzZhV6BXorT6TcM1KnjXdUYIe1TgtWhvBMM7ZTlUNUDRZbPc127\nlzJ1VfjMtDvLUNUYIe1TghUZ7ZTlUIUDRafq2r2UqavCZ6bdWQbFCFGCFZmYdsp0pXbBBYcDM3o2\nnpjEfKAo2zo+kTJpd5Yh5hghxVCCFZmYdsp0pXb88ZdwzjmH9npYMomyreMTKRPNMki7lGB1QVU6\nCOlKbfXqnXo5HGmT1vGJdE9Mswy9UpVjXLcpweqCqnQQ0pXa/Pnrez0kaYMqbJHuiWmWoVeqcozr\nNiVYXVCVDkK6UhscPIxNm3o9KpmMKmyRahgeHmXJkmuS647F0ymqyjGu25RgdUGrDkJzS3XBgodY\nunRhFDvKRNKV2pw5ur5RGajCriZNy9RPrJ0idcnbowSrC1p1EE45ZesdZePGOHYUESmHWA+20j2x\ndorUJW+PEqwuaNVBiHVHEZFyUAypn1g7ReqSt0cJVkFi3VFEpBwUQ+qn0+9+bEVTzcVRglWQ5pbq\nggUbWLpULVURaZ+mZeqn0+9+bEVTzcVRglWQ5paqvgxXOqUqtH40LSN50FRzcZRg1YAOxtWjKlSq\nQvGpWJpqLk4lEyztsFuL/WCs9ys7VaFSFbHHp6rRVHNxKplgaYfdWuwHY71f2akKlaqIPT5Vjaaa\ni1PJBEs77NZiPxjr/QqGh0d597v/k5/8ZDrwFw48sI9ly17VspunKlSqIvb4JPEpy6xHJRMs7bBb\ni/1grPcrOPXUG7j22n+g8TpceeW3gBtaVpuqQqUqYo9PEp+yzHpUMsHSDru12A/Ger+CdCcPZnP3\n3fryR6m22OOTxKcssx6VTLDG22HL0lasGwXYIN3Jg3XMm/dYj0clVaIYKFVQllmPSiZY4ylLW1Hq\nadmyRTzyyNf48Y+nA2uTNVgH93pYUiGKgVIFZZn1KGWC1ajChob66O8fbrsKK0tbMQtVpNXR17cz\nF154xOafdUFayVsVY6DUT1lmPUqZYDVXYWEqpb0qrCxtxSxUkYpIu6oYA6tAhXI1lTLBmmoVVpa2\nYhadVqTasUXqo4oxsApUKFdTKROsqVZhZWkrZtFpRaodW6Q+qhgDq0BTt8UqqrHQVoJlZtOBM4Fj\ngNnAtcC73P2+cbZfBHwCeA7wZ+Ar7v7pXEbMliosrMEaqXUV1mlFqh1bqi62+CXx6XUnX1O3xSqq\nsdBuB+ujwFHA24BhYBC4FDggvaGZ7QlcDXwcOAJ4AfB1M1vv7oN5DLpRhWkRcOcVqXZsqYGo4pfE\np9edfE3dFquoxsKkCZaZbQ+cCCxx9+uT244EVpvZvu7+k9RdXgU85O5nJj/fZWZHAAcTAptERDu2\nVJnil7Sj1518Td0Wq6jGQjsdrL2BnYCVjRvc/W4zuwtYCKQD1BpgThLElhPa7AcA5+Qw3tLodcu5\nXbHt2GV53aQ0FL9kUurk10tRjYV2Eqzdkn/vTd0+BOzeYvt/By4AvglcBMwAljdVhLXQ65ZzWel1\nk5wpfsmk1MnvvSKL66IaC+0kWLOAx909/aVoG4EdWmy/M7AH8Eng28BewNlmdrq7nz71oXZPN97Y\nXrecy0qvm+Ss8vFLOhdbJ7+Oqlhct5NgbQCmm9l0d3+86faZwIMttl8GPOruH0x+vjNZBzFoZme7\n+8h4D9TXN4vttpvR7tiBcLXrTi1Zcs1Wb+zMmZewfPmbO/qbCxY8tFXLecGCDVuNNY9x90Le4167\ndpQTTljB6tU7MX/+OubNe2TC122q9HoXK6JxVz5+9YLGXaw6jHtoqI/m4npoqK+nzzuPx24nwbon\n+XdXtm6z97Nt2x3gJcBlqdt+CjwBeDowboAaGXmojeFskddZhKtW7UjzG7tq1Y4d/92lSxeyceOW\nlvPSpQdt/ptlPfuxG+MeGLhqc3J7661jHHLIlzj88Nav21Tp9S5W1nF3OYhGH7/Ktu6wLp/LWNRl\n3P39w4RvZgnFdX//SM+ed5axTxS/2kmw7gTWAwcCFwOY2R6ENvpNLbb/E/C81G17AZuA37fxeIXr\nxgJHtZzbk54S/POfd+V733t5L4ck1RJ9/Kri1IhIVlVcBzdpguXuj5jZecBZZraWcJbNucAN7n5L\n0j6fAwy7+6PA2cDVZvZBQkB7DvAZ4Fx3X9+tJ9KJKr6xZaGzd7IpW7ej18oQv7TusDjaf+JVxaZE\nuxcaPS3Z9iJge2AFsCT53f7A9cBBwE3uvsLMXpfc51Tgf4EvEa6MHKUqvrFloeQ2G3U7piTq+KUi\nozhV2H+UJJZHWwlWcgbOycl/6d+tJJzK3HzbVcBVeQxQqk3JbTbqdmQXe/xSkVGcKuw/VUgS66KU\nX/YsUlfqdlSPioziVGH/qUKSWBdKsERKRN0OqYtuTIVVYf+pQpJYF0qwREpE3Q6pi25MhVVh/6lC\nklgXSrBERCQ6mgprrQpJYl1M7/UARERE0ubNu59w4UnQVJhM1fDwKAMDl7N48XUMDFzGyMhoYY+t\nDpaIiERHU2GSh16edakES0REoqOpMMlDL6eaNUUoIlJjvZxCEem2Xk41q4MlIlJjunClVFkvp5qV\nYEkp6OshRLpDZ+tJlfVyqlkJlpSCqmyR7tCFKzunAlBaUYIlUUoHrN//fjtUZYvkT2frdU4FoLSi\nBEuilA5Y/f2fICxUVJUtkiedrdc5TbNKK0qwJErpgLXLLgt40YtUZYtIfDTNKq0owZIopQPWM57x\nkKpsEWlbepnBBRccDszoymNpmlVaUYIlUVLAEpFOpJcZHH/8JZxzzqFdeSxNs0orSrAkSgpYIuUQ\n6xl06WUGq1fv1MvhSA0pwZKOxRpgRaT7Yj2DLr3MYP789b0eUu3U/digBEs6FmuAFZHui/UMuvQy\ng8HBw9i0qdejqpe6HxuUYEnHYg2wItJ9sZ5Bl15mMGfObNasWdfDEdVP3Y8NSrCkY7EGWJG6KnJq\nRiekyHjqfmxQgiUdU4AViUuRUzM6IUXGU/djgxIs6ZgCrEhc6j41I3Go+7Fheq8HICIi+Zo3737C\nV0tBHadmJLvh4VEGBi5n8eLrGBi4jJGR0V4PqfTUwRIRqZi6T81IdnU/468blGCVQN2vJSIi2dR9\nakay63RaucivJioLJVgloMpCRMpGhWG5dHrGX5FfTVQWSrBKQAtWRaRsVBiWS6fTyvpqom0pwSqB\nul9LRETKR4VhuXQ6rayvJtqWEqwS0IJVESkbFYb1EttXE8UwRa0EqwS0YFVEykaFYb3E9tVEMUxR\nK8ESqakYKjypLhWG0ksxTFErwRIdaGsqXeHdeusneMpTnq3PQM0pHkgVxDBFrQRLomilSvHSFd7Q\n0HMZGjpMn4GaUzyQKohhiloJlkTRSpXipSs8eDD5jT4DdaZ4IFUQwxS1EiyJopUqrXVzuqa5wrvv\nvl8zNHR88ht9BupM8aD3mvf7BQseYunShZqmLSElWJEqch1EDK1Uaa2b0zXNFd7IyN9yyilX6zMg\nigcRSO/3GzdqmraMlGBFqsh1EDG0UqeiDotxi5quKetnQPKnz0LvaZq2GtpKsMxsOnAmcAwwG7gW\neJe73zfO9k8DzgYWAxuAS4H3uvvDeQy6DrSDTa4Oi3E1XdM5xS8pG+331dBuB+ujwFHA24BhYJAQ\ndA5Ib2hmTwC+D9wL7Ac8Gfg6sAk4sfMh14N2sMnVIQnVdE0uFL9qpAqd7eb9fsGCDSxdqv2+jCZN\nsMxse0JgWeLu1ye3HQmsNrN93f0nqbu8FXgq8BJ3fyDZ/sPA8UjbdGCdXB2SUE3XdEbxq36q0Nlu\n3u/nzu3tFdFl6trpYO0N7ASsbNzg7neb2V3AQiAdoBYD/9UITsn2FwIXdjrYtLVrRxkYuKrUlcp4\ndGCdnJJQaUO08Uu6ow6dbSmHdhKs3ZJ/703dPgTs3mL7BcB1ZnYGoSU/BlwGnObuG6c60FZOOGFF\n6SsVmbplZc4UAAAekUlEQVTYktAqTE1UULTxS7qjDp3tsqpbjGwnwZoFPO7u6e/F3gjs0GL7JwHH\nAv8BvAF4GnAuMBd4+5RH2sLq1TuhSkXykMeOH9PURN0C2QSijV/SHepsxyumGFmEdhKsDcB0M5vu\n7o833T6TLZd+bvYosBY4yt3HgNuThaPfNrP3uPtIx6NOzJ+/jltvzV6p6OAjaXns+DFNTdQtkE0g\n2vgl3RFDZ1vHmNZiipFFaCfBuif5d1e2brP3s23bneS2DUlwavg14VXdAxg3QPX1zWK77Wa0MaRg\ncPDVwCWsXr0T8+evZ3DwMObMmT3p/ZYsuWarg8/MmZewfPmb237cPMydO/k4Y1TVcQ8N9bH19/L1\nZX6uCxY8tNXUxIIFGzp+vaZ6/zyeTyci+pxEG79g29dp7dpRTjhhRRLT1jE4+GrmzInvwBzR+5tJ\nUePO+xhTlde7GzGyW/IYVzsJ1p3AeuBA4GIAM9uDEGxuarH9D4BjzWxGU1t+L+Ax4K6JHmhk5KF2\nxrzZ3Lk7c845h27+edMm2jrbYtWqHWk++KxatWOhZ2mU9ayQKo+7v3+YsNwm7Pj9/SOZn+vSpQvZ\nuHHL1MTSpQd19Hp18nqnn8+99/6CffbZVEg1nXXcXQ6wEcevbV+ngYGrNh+Yb701zit4VzkO5CXP\nY0yVXu+8Y2S3ZHnNJ4pfkyZY7v6ImZ0HnGVma4E1hDUJN7j7Lclp0HOAYXd/FPgSsAT4erJQdHdg\nGXBhLO11LYKUtDzWbeQ1NdGYXhga6qO/f3hKCVGr7xkcGuqr3XRh2eJX3aZQqkrHmNZimL4tUrsX\nGj0t2fYiYHtgBSEIAewPXA8cBNzk7veZ2QHA54DbCNXjRcAHchz3lA0Pj/LII4+y887/CvyF/fab\nzbJlh056P6m2mHb85vVToQuVPSFqfj6LFzemDKGmB+3SxC8dmKuh7AvttYYsH20lWEmr/OTkv/Tv\nVgIzUrf9D3BIHgPM26mn3sCKFf9AI4A94QkX6YMjUcm7i1H3g3aZ4lfZD8wSxFSwTYVOkslH7b7s\nWS14id1ECdFUKksdtMuj7AdmqQYdJ/NRuwSr7tW8xK+REIU1WCNbJURTqSx10JZe05RTueg4mY/a\nJViq5iV2jYSo1ZksqiyljDTlVC46TuajdgmWqnkpi1bftanKUiYSa6dIhUG56DiZj9olWCJl0eq7\nNlVZykRi7RSpMJCsYi0WslCCJRKpVt+1qcpSJhJrp0iFgWQVa7GQhRIskUhN9bs2O1GFqrHOYu0U\nqTCQrGItFrJQgiUSqcHBV2/1tRJFVP1VqBrrrFudoubEe8GCh1i6dKESb+mqWIuFLJRgiURqzpzi\nq/4qVI111q1OUTrxjvE7EqVaqjCtrARLRDarQtUo+VPiLUWrwrSyEiwR2awKVaPkT4l357S+sX6U\nYInIZlWoGiV/zYn3ggUbWLpUiXdWWt9YP0qwRERkQs2Jd6tvGJDJaZq1fqb3egAiIiJVN2/e/cBY\n8pOmWetAHSyRSLX6qhyt2RCZml7vT1rfWD9KsEQi1eqrcrRmQ2Rqer0/aX1j/WiKUCRSrb4qR0Sm\nRvuTFE0Jlkik5s9fh9ZsiORD+1PnhodHGRi4nMWLr2Ng4DJGRkZ7PaSoaYpQJFK9+KockarS/tQ5\nXWoiGyVYJaYL11VbL74qR6SqtD91TpeayEYJVompmhBQol1Xet+laLqifzZKsEqsTtWEDibjU6Jd\nT3rfpWi61EQ2SrBKrEzVRKcJkg4m46tToi1b6H0vloo8XWoiKyVYJVamaqLTBKmTg0mvLzDYbWVK\ntCU/et+LVfYiTwli8ZRglViZqolOq+1ODia9vsBgt5Up0Zb86H0vVtk7hmVPEMtICZYUotNqu5OD\nSdUvMFimRFvyo/e9WGXvGJY9QSwjJVhSiE6r7U4OJvPnr+PWW8sbGEWktSKnvcreMSx7glhGSrCk\nEL2stmO5wKDWQIjkq8hpr7J3DMueIJaREiypvFguMKg1ECL50rRX+8qeIJaRvotQpCA6GIjka968\n+9H3C0q7iv4uRXWwRAqiNRAi+dK0l2RR9CyCEiyphDKsb9LBQCRfmvZqrQzxsBeKnkVQgiWVUIb1\nTToYSK/ogFsvZYiHvVD0LIISLKkErW8SGZ8OuPWieNha0bMISrCkErS+SWR8OuDWi+Jha0XPIijB\nKhm1+lvT+iaR8emAWy+Kh3FQglUyavW3Nl5lMjw8ypIl17Bq1Y5KSKW2dMCNU7cKZq33jIMSrJJR\nqz8bJaQiOuDGSvGp2nSh0ZLRhfWyUUIqIrFSfKq2tjpYZjYdOBM4BpgNXAu8y93va+O+1wCz3H1R\nJwOVQK3+bLT2RBS/JIsi17kqPlVbu1OEHwWOAt4GDAODwKXAARPdycyOA14N3Dj1IUoztfqzWbZs\nETNnXpKswVJCWlOKX9K2IqftVDBX26QJlpltD5wILHH365PbjgRWm9m+7v6Tce73TELV+KMcxytt\n0JmGW/T17czy5W9mzZp1vR6K9IDi1/gUJ1orctpOBXO1tdPB2hvYCVjZuMHd7zazu4CFwDYBKmnJ\nXwh8EjBgzxzGKm3Swsne0UErOopf41CcaE3Tdtko5o2vnQRrt+Tfe1O3DwG7j3OfDwCPu/tZZnb+\nVAcnU6OFk72jg1Z0FL/GoTjRmqbtslHMG187CdYsQrDZlLp9I7BDemMz+1vgPcALOx+eTIUqsN7R\nQSs6il/jUJxoTdN22Sjmja+dBGsDMN3Mprv74023zwQebN7QzGYCXwdOc/fV+Q1TslAF1js6aEUn\n2vi1du0oAwNX9WxqRXFC8qCYN75pY2NjE25gZi8irFN4urvf23T7H4Dz3P2sptsOAG4gBK5GSjuT\ncL2th4Bnu/ufxnusxx7bNLbddjOm+FREem94eJTjj1/B6tU7MX/+egYHD2HOHK1HmMS0yTeZmpjj\n1xFHfItvf/tIGgemN73pEpYvf3Pb9xeJgWLe+PGrnQ7WncB64EDgYgAz2wPYA7gpte1PgWelbvsE\n8HTgLYR1D+MaGXmojeFsMXfu7FKeHaZxF6vYcc/gnHMO3fzTpk20/djpxaIXXHA4mzaVr+DI+nrP\nnTu7i6OJN36tXr0TzVMrq1btWIr9S3GgWPGPu3XMi3/c48sy9oni16QJlrs/YmbnAWeZ2VpgDXAu\ncIO735KcBj0HGHb3jcAfmu9vZg8AGzRlKDKx9GLR44+/ZKvAJdnFHL/mz1/HrbdqakU6o7P44tXu\nhUZPS7a9CNgeWAEsSX63P3A9cBDbVoQi0qb0YtHQ4ZAcRBm/BgdfzcaNWgMlndFZfPFqK8FKzsA5\nOfkv/buVwLjzGO4+MOXRyVZUqVRberHo/Pnrez2kSog1fs2Zo7PVpHNlP4uvyse1djtYlVeGN1mV\nSrWlz+oaHDyMTemLC4hUXBlicUzKfhZflY9rSrASZXiTy16pyMTS19+ZM6e8i0RFpqoMsTgmZb/c\nRpWPa0qwEmV4k8tUqagKFZGpKEMsjknZL4xapuNaVkqwEmV4k8tUqagKFZGpKEMslvzkcVyLtaBX\ngpUoQ/JSpkpFVaiITEUZYrHkJ4/jWqwFvRKsRJmSlzJQFSoiU6FYLFnFWtArwZKuUBUqUm2xTstI\n/cRa0CvBkq5QFSpSbbFOy0j9xFrQK8ESEZHMYp2WkfqJtaCf3usBiORpeHiUgYHLWbz4OgYGLmNk\nZLTXQxKppHnz7gfGkp+mNi2j/VWqTB0sqZRW0xZXXHF0r4clUjl5TMuUfZpR69BkIkqwpFJimLZQ\n0JU6yGNaJob9tRNlTxClu5RgSaXEcDaJgq5Ie2LYXztR9gRRuksJllRKDGeTKOiKtCeG/bVZ1u5z\n2RNE6S4lWFIpMZxNoqAr0p4Y9tdmWbvPsSWIEhclWCI5U9AVKaes3efYEkSJixIskZwp6IqUk7rP\nnWtMsw4N9dHfP1zrk3yUYImIiKDucx6ap1nDddLqe5KPEiyRHtClHETio+5z53SSzxaVT7B0IJMY\n6VIOkjfFOomBplm3qHyCVbUDmYJoNajKk7xVLdZJOTWmWcMarJFaT7NWIsGaKOmo2oFMQbQaVOVJ\n3qoW66ScGtOsc+fOZs2adb0eTk9VIsGaKOlIH8juuuu3DAyUt/OjIFoNWkwreVPSXi+azYhfJRKs\niZKOxoFs5crHGB3dgdHRAa688q8oa+dHQbQaxsa2+qlXw5AKUdJeL5rNiF8lEqyJko5Gu3Lx4uu4\n447XbL69rJ0fBdFqUHCUvOkMuHrRbEb8KpFgtZN0VKXzoyBaDQqOIu3RVFhrVTmmVVklEqx2kg51\nfiQmCo4i7VG3tzUd0+JXiQSrHer8SEymEhxVyVeX3tvxqdvbmo5p8atNgiUSk6kER1Xy1aX3dnzq\n9koWMRUrSrBESkKVfHXpvR2fpsIki5iKFSVYIiWhSr669N6OT1NhkkVMxYoSLJGSUCVfXVV4b2Oa\nmpH6iqlYUYIlUhKq5KurCu9tTFMzUl8xFStKsEREpGMxTc1IfcVUrEzv9QBE8jA8PMrAwOUsXnwd\nAwOXMTIy2ushidTKvHn3s+Vrn7SOTEQdLKkETU+I9FZMUzO9onVo0kwJllSCpidEeiumqZleUaEn\nzTRFKJWg6QkR6TUVesWKfWmIOlhSCZqe2JamK6ROYvi8x3SJgDqIvWPYVoJlZtOBM4FjgNnAtcC7\n3P2+cbY/Angf8CxgCPga8Gl3fzyPQYukaXpiW7EHn6IoftVDDJ93FXrFir1j2G4H66PAUcDbgGFg\nELgUOCC9oZkdAnwDOJEQyPYBvpo81pmdD1lE2hF78CmQ4lcNxPB5V6FXrNg7hpMmWGa2PSHYLHH3\n65PbjgRWm9m+7v6T1F2OA77j7oPJz6vN7NnAO1CAqrwY2vRVluX1jT34FEHxqz70eY9Xt44LsXcM\n2+lg7Q3sBKxs3ODud5vZXcBCIB2glgIPpm4bA/qmPEopjRja9FWW5fWNPfgURPGrJvR5j1e3jgux\ndwzbSbB2S/69N3X7ELB7emN3v635ZzN7EvBPwIqpDFDKJc82vbph28ry+sYefAqi+FUT+rzHK4bp\n215o5zINs4DH3X1T6vaNwA4T3dHMdgSuSLZ7/5RGKKWS5+USGlXPHXe8hiuvPJpTTrkhlzGWmS5H\nkVmp41fsp6GLtKOucaudDtYGYLqZTU+dRTOTbVvpm5nZLsDVwF8Dr3D3eyZ7oL6+WWy33Yw2hrTF\n3LmzM20fi6qO+4ILDuf44y9h9eqdmD9/PYODhzFnztSe69BQH81Vz9BQ35Rft6q83nm+vt0U0etd\n6vi1ZMk1W02tzJx5CcuXvznTY3RDRO9vJhp3sRrjLkvcapbHa95OgtUILLuydZu9n23b7gCY2R7A\n94AnAgvd/VftDGZk5KF2Ntts7tzZrFmzLtN9YlDtcc/gnHMO3fzTpk1M+bn29w8Tqp6waLW/fyTz\n3xoeHuXDH/4hq1btWLppxtavd36vb7dk/Xx3+eBR6vi1atWONBcZq1bt2PP3u9rxKz7VGHf8catZ\nltd8ovjVToJ1J7AeOBC4GDYHoD2Am9Ibm9lc4AbgEWA/d/9jW6MUSclj0aoW3ddeqeOXzoyTLLRu\nNS6TJlju/oiZnQecZWZrgTXAucAN7n5Lchr0HGDY3R8Fzkt+XgRsNLOnJn9qbLwL+4m0ksei1bou\nrpSg7PFLZ8ZJFioo49LuhUZPS7a9CNiecEbNkuR3+wPXAweZ2S3AawlHtFua7j8NeAx4Qg5jFmmb\nOgBCieOXzoyTLFRQxqWtBCs5A+fk5L/071YCzSs79f2GBVE7eHLLli1i5sxLkjVY6gDUkeJX7yhG\nFUsFZVwUTEqsTO3gXgXavr6dWb78zVEvqBSpqjLFqCrQlHJclGCVWJnawQq08VO3QfJWphhVBZpS\njosSrBIrUzs4HWh///sZDAxcroN5RJQES97KFKMkXmUt/pRglVirdnCsH8R0oB0evptf/vL91Plg\nHtt7pW6D5E1TVpKHshZ/SrBKrFU7eGDg8ig/iOlA+4c/LGBoqN4H89iChroNkjdNWZVLbEVfQ1mL\nPyVYFRPrBzEdaAcGLuMXv6j3wTy290rdBpF6i63oayhr8acEq2LK8kHUwTy+90rdBklr1dEo6/fi\nyeRiK/oaynq8UIJVMWX5IOpgXp73SuqrVUfjiiuO7vWwpEtiK/oaynq8UIJVMWX9INaR3iuJXawd\nDekOFX35UoIlIiItxdrRqJO1a0cZGLiqkIXnKvrypQRLRERaUkej9044YUWUC89lckqwRESkJXU0\nem/16p3QNG05Te/1AERERGI1PDzKwMDlLF58HQMDlzEyMlro48+fvw4YS37SNG2Z1KqDFetF1ERE\nJE69vjbU4OCr2bhR07RlVKsEq9c7iohIrFSAttbrMynnzNE0bVnVKsHq9Y5SJrrAoEi9qABtTWdS\nKvmeqlolWNpR2qcLDIrUiwrQ1nQmpZLvqapVghXjjhJrZaBgK1IvKkBb05mUOh5MVa0SrBh3lFgr\nAwXb3mkk3UNDffT3D0eTdEsculWUxViAShx0PJiaWiVYMYq1MlCw7Z3mpDucnh1H0i1x6FZRFmMB\nKnHQ8WBqlGD1WKyVgYJt78SadEsc9PmQoul4MDVKsHpMlYGkxZp0Sxz0+ZA8xLr+t0qUYPWYKoPO\nVDFINJLusAZrREm3bEVFmeQh1vW/VaIES0qtikGikXTPnTubNWvW9Xo4EhkVZZKHTqeaq1jc5k0J\nlpSa1qOIlI8Ozr3X6VRzFYvbvCnBklLTehSR8tHBufc6nWpWcTs5JVhSalqPIlI+Ojj3XqdTzSpu\nJ6cES3quk+kCrUcRKR8dnMuvCsVtt6eqlWBJz2m6QKReqnBwrrsqFLfdPvYowZKeK+t0gRbqikxN\nFQ7OUn7dPvYowZKOdZpolHW6QJ03EZHy6vaxRwmWdKzTRKOs0wVl7bxJvanzKhJ0+9ijBEs61mmi\nUdbpgrJ23qTe1HkVCbp97FGCJR2ra6JR1s6b1FsVOq/qwkkZKMGSjtU10Shr503qrQoFURW6cEoS\nq08JlnRMiYZIeVShIKpCF64KSaJMTAmWiEiNVKEgqkIXrgpJokxMCZaMK93CvuCCw4EZvR6WREDT\nG9JLnXbhYvj8ViFJlIlVKsGKYacpShHPNd3CPv74SzjnnENzfQwpJ01vSC912oWL4fNbhalamVhb\nCZaZTQfOBI4BZgPXAu9y9/vG2f6FwOeBfYA/AR9z94tyGfEEYthpilLEc023sFev3inXvy/lVabp\njbLELylODJ/fKkzVysSmt7ndR4GjgLcBC4HdgEtbbWhmTyYEsJ8RAtQXga+Z2Ss6Hu0kYthpilLE\nc503735gLPlpjPnz1+f+GFJO6c9G5NMbpYhfUpySfX4ra3h4lIGBy1m8+DoGBi5jZGS010PK1aQd\nLDPbHjgRWOLu1ye3HQmsNrN93f0nqbsMAKPu/u7k51Vm9gLgJOD7+Q19W3Wa0y7iuaZb2IODh7Fp\nU+4PIyVUlumNMsUvKU5ZPr9VV/VZp3amCPcGdgJWNm5w97vN7C5CNZgOUC8DbkrddiNw7lQH2a46\n7TRFPNd0C3vOnNmsWbMu98eR8inR9EZp4pcUp8jPb53WBmdV9VmndhKs3ZJ/703dPgTsPs72t7fY\ndpaZzXH34WxDbF+3d5qYdpQSHeBEeqk08Uuqqepdmk5UfdapnQRrFvC4u6cnhzYCO4yz/cMttmWc\n7UtDO4pI6Sh+SU9VvUvTiarPOrWTYG0AppvZdHd/vOn2mcCD42w/M3Vb4+dW22/W1zeL7bbLdp2l\nuXNnZ9q+E0NDfTTvKENDfVN+/CLHnSeNu1gad8cUv7pA427fggUPbdWlWbBgQ+ZxVPX1njt3Nldc\ncXRBo8kmj9e8nQTrnuTfXdm6zd7Ptm33xva7pm7rB9a7+/0TPdDIyENtDGeLuXOLXRPU3z9MOPMk\n7Cj9/SNTevyix50XjbtYdRl3lw8eil8507izWbp0IRs3bunSLF16UOb9Q693sbKMfaL41U6CdSew\nHjgQuBjAzPYA9mDbxaAAPwTenrptEXBzG48Vtaq3M0UqSPFLekrrZetr0gTL3R8xs/OAs8xsLbCG\ncEbNDe5+S3Ia9Bxg2N0fBb4GnGxmg8DZwCuBI4GDu/UkiqIdRaRcFL9EpFfavdDoacA3gYuA64DV\nwBuT3+1POMtmP4Dk6sivIlyk73bgBOAod1+JiEjxFL9EpHBtfVVOcgbOycl/6d+tJPUNwO5+C7Bv\nHgMUEemE4peI9EK7HSwRERERaZMSLBEREZGcKcESERERyZkSLBEREZGcKcESERERyZkSLBEREZGc\nKcESERERydm0sbGxXo9BREREpFLUwRIRERHJmRIsERERkZwpwRIRERHJmRIsERERkZwpwRIRERHJ\nmRIsERERkZxt1+sBjMfMpgNnAscAs4FrgXe5+33jbP9C4PPAPsCfgI+5+0UFDbd5HFnHfQTwPuBZ\nwBDwNeDT7v54MSPePI5M407d9xpglrsv6u4oWz521tf7acDZwGJgA3Ap8F53f7iYEW8eR9ZxLwI+\nATwH+DPwFXf/dEHDbcnMvgRMd/d/nGCbKPbLoil+KX61SzGsd7odw2LuYH0UOAp4G7AQ2I3wQdqG\nmT2Z8Ob+jPAifBH4mpm9opihbiXLuA8BvgF8BdiLEKhOBd5fyEi31va4m5nZccCruzu0CWV5vZ8A\nfB/YGdgPeBNwKLCskJFuLcu49wSuBq4Cnkv4jHzEzI4vZqgtx3QGMG5QSraJab8smuJXscoav0Ax\nrCeKiGFRdrDMbHvgRGCJu1+f3HYksNrM9nX3n6TuMgCMuvu7k59XmdkLgJMIH8ZYx30c8B13H0x+\nXm1mzwbeQagMYh13437PTMb5o6LGmnr8rON+K/BU4CXu/kCy/YeBQnfyKYz7VcBD7t74TNyVdA4O\nBgYpkJnNJ3QpngPcPcnmUeyXRVP8Uvxql2JYtWNYrB2svYGdgJWNG9z9buAuQqac9jLgptRtNwIv\n7c7wxpV13EuBM1K3jQF9XRrfeLKOu9EevhD4JPCb7g+xpazjXgz8VyMwJdtf6O77dnmcaVnHvQaY\nY2ZHmtk0M3sucABwawFjTdsf+COhY3HXJNvGsl8WTfGrWGWNX6AYVukYFmuCtVvy772p24eA3cfZ\nvtW2s8xsTs5jm0imcbv7be7+P42fzexJwD8BK7o2wtayvt4AHwAed/ezujaqyWUd9wLgbjM7w8z+\nYGa/N7NPm9nMro5yW1nH/e/ABcA3gUeAnwM3NlWDhXH3b7r729tZ20I8+2XRFL+KVdb4BYphlY5h\nsSZYswgf/k2p2zcCO4yzfXqB38bk31bbd0vWcW9mZjsCVyTbFb2GIdO4zexvgfcARxcwtolkfb2f\nBBwLPAN4A/Bu4Ajgy90cZAtZx70zsAeh2n4h4XVfbGand3GMeYhlvyya4lexyhq/QDHs9C6OMQ8d\n7ZuxJlgbgOlJG7fZTODBcbZPZ/CNn1tt3y1Zxw2Ame0CXEdoux7s7vd0b4gttT3upFL6OnCau68u\naHzjyfp6PwqsBY5y99vd/WpCoD3KzIqc1sg67mXAo+7+QXe/092/QVgD8L6Cx51VLPtl0RS/ilXW\n+AWKYZWOYbEmWI0ddNfU7f1s265rbN9q2/Xufn/OY5tI1nFjZnsAPwbmAQvd/faujW58Wcb9EuCv\ngU+Z2TozW0c4TfcAM3vAzHajOFlf73uB37j7WNNtvwamEaqromQd90sIZ7E0+ynwBODp+Q4tV7Hs\nl0VT/CpWWeMXKIZVOobFmmDdCawHDmzckOzIe7DtgjOAHxIWzDVbBNzcneGNK9O4zWwucANhYeh+\n7v6rQka5rSzj/inhmjd7A89P/rucsFjx+YT56aJk/Zz8ANjbzGY03bYX8BiTL3bMU9Zx/wl4Xuq2\nvYBNwO+7MsJ8xLJfFk3xq1hljV+gGFbpGDZtbGxs8q16wMw+Qags3kE4A+FcwmmeL09OEZ0DDLv7\no2b2FOB/gOWEC7C9Evg0oV29suUDxDHu7xDOCllE+AA2jLW5AK8n425x3/OBPXt0odGsn5NfAv9F\nOPtpd+CrhLNyBiIe9yGEa8h8BLiYcHrxl4BLm04fLpyZ3QD8tnGRvpj3y6Ipfil+tUsxrLoxLNYO\nFsBphDMOLiLM768G3pj8bn9CpbEfQLIzv4pwIbDbgRMIc9S9COJtjdvMdgBeSzjV9Zbk9iHCFW7/\nRPHafr0jk/VzcgBhB7qNcJHE7xA+L0XLMu4VwOuAwwmV42cJwem9xQ55G+nqLOb9smiKX8Uqa/wC\nxbBe6moMi7aDJSIiIlJWMXewREREREpJCZaIiIhIzpRgiYiIiORMCZaIiIhIzpRgiYiIiORMCZaI\niIhIzpRgiYiIiORMCZaIiIhIzpRgiYiIiOTs/wfcXFW/lXKjUQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10,5))\n", "plt.subplot(121)\n", "xs = np.random.random((100,2))\n", "plt.scatter(xs[:, 0], xs[:,1])\n", "plt.axis([-0.05, 1.05, -0.05, 1.05])\n", "plt.title('Pseudo-random', fontsize=20)\n", "plt.subplot(122)\n", "ys = np.array(gen.get(100))\n", "plt.scatter(ys[:, 0], ys[:,1])\n", "plt.axis([-0.05, 1.05, -0.05, 1.05])\n", "plt.title('Quasi-random', fontsize=20);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Quasi-Monte Carlo integration can reduce variance" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [], "source": [ "h_true = 1 - stats.cauchy().cdf(3)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[(0.1046584475, 2.1891665182),\n", " (0.1025211122, 0.1022588394),\n", " (0.1041641176, 1.7064996957),\n", " (0.1030694222, 0.6376322083),\n", " (0.1016942178, 0.7051260477)]" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = 10\n", "x = stats.uniform().rvs((n, 5))\n", "y = 3.0/(np.pi * (9 + x**2))\n", "h_mc = np.sum(y, 0)/n\n", "list(zip(h_mc, 100*np.abs(h_mc - h_true)/h_true))" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[(0.1026632536, 0.2410466633),\n", " (0.1023042949, 0.1094428682),\n", " (0.1026741252, 0.2516617574),\n", " (0.1029118212, 0.4837496311),\n", " (0.1026111501, 0.1901724534)]" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gen1 = ghalton.Halton(1)\n", "x = np.reshape(gen1.get(n*5), (n, 5))\n", "y = 3.0/(np.pi * (9 + x**2))\n", "h_qmc = np.sum(y, 0)/n\n", "list(zip(h_qmc, 100*np.abs(h_qmc - h_true)/h_true))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.1" } }, "nbformat": 4, "nbformat_minor": 0 }