{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Elementary analysis of numerical data" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import scipy.stats as stats \n", "import scipy.linalg as linalg\n", "import scipy.integrate as integrate\n", "import scipy.optimize as optimize\n", "import scipy.interpolate as interpolate" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "np.set_printoptions(precision=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This just gets rid of a known harmless warning message when an old version o lapack is used." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import warnings\n", "warnings.filterwarnings(action=\"ignore\", module=\"scipy\", message=\"^internal gelsd\")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "warnings.simplefilter('ignore', RuntimeWarning)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Linear algebra" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Matrix multiplication" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "x = np.random.random((2,3))\n", "y = np.random.random((3,2))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0.451, 1.415],\n", " [ 0.442, 1.661]])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x @ y" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0.451, 1.415],\n", " [ 0.442, 1.661]])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x.dot(y)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0.451, 1.415],\n", " [ 0.442, 1.661]])" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.dot(x, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Solving linear equations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\\begin{align}\n", "3x + 2y + z &= 17 \\\\\n", "x + 4y + 3z &= 23 \\\\\n", "2x + y + 5z &= 22\n", "\\end{align}" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "A = np.array([[3,2,1],[1,4,3],[2,1,5]])\n", "b = np.array([17,23,22])" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sol = linalg.solve(A, b)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 2.739, 3.043, 2.696])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sol" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Check" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 17., 23., 22.])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A @ sol" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Using the inverse\n", "\n", "This is numerically less efficient and stable than using `solve`. Don't do this." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 2.739, 3.043, 2.696])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linalg.inv(A) @ b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Many solution sets" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "outputs": [], "source": [ "b1 = np.random.random(3)\n", "b2 = np.random.random(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Using solve repeatedly is wasteful" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-0.097, 0.205, 0.049])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linalg.solve(A, b1)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.026, 0.205, 0.05 ])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linalg.solve(A, b2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Do LU decomposition once and reuse" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": true }, "outputs": [], "source": [ "lu_piv = linalg.lu_factor(A)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[-0.097 0.205 0.049]\n", "[ 0.026 0.205 0.05 ]\n" ] } ], "source": [ "for b in [b1, b2]:\n", " print(linalg.lu_solve(lu_piv, b))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Solving linear least squares\n", "\n", "In many situations, there are more observations than variables. In this case, we use linear least squares to find the best linear approximation to the solution - i.e. $Ax' \\sim b$ in the sense that $Ax'$ is a vector in the column space of $A$ that has the smallest squared Euclidean distance to $b$." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "A = np.random.random((10, 3))\n", "b = np.random.random(10)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Input a needs to be a square matrix.\n" ] } ], "source": [ "try:\n", " linalg.solve(A, b)\n", "except ValueError as e:\n", " print(e)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Normal equations\n", "\n", "In your statistics classes, you will learn about why the \"normal\" equations $(A^TA)^{-1}A^Tb$ gives the least squares solution." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.693, 0.226, 0.268])" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linalg.inv(A.T@A) @ A.T @ b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Using lstsq\n", "\n", "This provide an optimized method for solving the least squares problem. " ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": true }, "outputs": [], "source": [ "x, *_ = linalg.lstsq(A, b)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.693, 0.226, 0.268])" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([ 0., 5.]), array([[-0.894, 0.447],\n", " [ 0.447, 0.894]]))" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linalg.eigh(np.array([[1,2],[2,4]]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Finding eigenvectors and eigenvalues" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Use `eigh` for complex Hermitian or real symmetric matrix " ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1, 0, 0, 0],\n", " [0, 2, 0, 0],\n", " [0, 0, 3, 0],\n", " [0, 0, 0, 4]])" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = np.diag([1,2,3,4])\n", "A" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": true }, "outputs": [], "source": [ "l, v = linalg.eigh(A)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 1., 2., 3., 4.])" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 1., 0., 0., 0.],\n", " [ 0., 1., 0., 0.],\n", " [ 0., 0., 1., 0.],\n", " [ 0., 0., 0., 1.]])" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Use `eig` if not complex Hermitian or real symmetric matrix" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": true }, "outputs": [], "source": [ "A = np.random.random((4,4))" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": true }, "outputs": [], "source": [ "l, v = linalg.eig(A)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 2.155+0.j , -0.165+0.j , -0.446+0.078j, -0.446-0.078j])" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "l" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0.579+0.j , -0.436+0.j , -0.600-0.149j, -0.600+0.149j],\n", " [ 0.592+0.j , -0.490+0.j , -0.017-0.068j, -0.017+0.068j],\n", " [ 0.341+0.j , 0.184+0.j , -0.048+0.21j , -0.048-0.21j ],\n", " [ 0.445+0.j , 0.732+0.j , 0.753+0.j , 0.753-0.j ]])" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Diagonalizable matrices" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": true }, "outputs": [], "source": [ "A = np.array([\n", " [0.,0,-2],\n", " [1,2,1],\n", " [1,0,3]\n", "])" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0., 0., -2.],\n", " [ 1., 2., 1.],\n", " [ 1., 0., 3.]])" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": true }, "outputs": [], "source": [ "lam, Q = linalg.eig(A)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 2., 1., 2.])" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lam = np.real_if_close(lam)\n", "lam" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A diagonalizable matrix has linearly $n$ linearly independent eigenvectors." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.linalg.matrix_rank(Q)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For a diagonalizable matrix, you can recover A as the product of $Q D Q^{-1}$ where $Q$ is the matrix of eigenvectors and $D$ is the diagonal matrix from the eigenvalues." ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0., 0., -2.],\n", " [ 1., 2., 1.],\n", " [ 1., 0., 3.]])" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Q @ np.diag(lam) @ linalg.inv(Q) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Finding powers of a diagonalizable matrix" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from functools import reduce" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[-1022., 0., -2046.],\n", " [ 1023., 1024., 1023.],\n", " [ 1023., 0., 2047.]])" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "reduce(lambda x, y: x @ y, [A]*10)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[-1022., 0., -2046.],\n", " [ 1023., 1024., 1023.],\n", " [ 1023., 0., 2047.]])" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Q @ np.diag(lam**10) @ linalg.inv(Q)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Singular value decomposition\n", "\n", "Generalization of eigendecomposition to non-square matrices." ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": true }, "outputs": [], "source": [ "A = np.random.random((6,10))" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": true }, "outputs": [], "source": [ "U, s, V = linalg.svd(A, full_matrices=False)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(6, 6)" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "U.shape" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(6,)" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.shape" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(6, 10)" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "V.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Reconstructing A from SVD" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0.053, 0.892, 0.786, 0.519, 0.503, 0.885, 0.96 , 0.828,\n", " 0.084, 0.914],\n", " [ 0.25 , 0.747, 0.711, 0.222, 0.585, 0.876, 0.691, 0.407,\n", " 0.883, 0.113],\n", " [ 0.051, 0.075, 0.046, 0.701, 0.952, 0.112, 0.791, 0.714,\n", " 0.448, 0.455],\n", " [ 0.618, 0.273, 0.083, 0.883, 0.909, 0.236, 0.178, 0.21 ,\n", " 0.453, 0.504],\n", " [ 0.613, 0.367, 0.515, 0.731, 0.538, 0.248, 0.19 , 0.729,\n", " 0.214, 0.134],\n", " [ 0.181, 0.409, 0.974, 0.354, 0.806, 0.9 , 0.009, 0.464,\n", " 0.986, 0.948]])" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0.053, 0.892, 0.786, 0.519, 0.503, 0.885, 0.96 , 0.828,\n", " 0.084, 0.914],\n", " [ 0.25 , 0.747, 0.711, 0.222, 0.585, 0.876, 0.691, 0.407,\n", " 0.883, 0.113],\n", " [ 0.051, 0.075, 0.046, 0.701, 0.952, 0.112, 0.791, 0.714,\n", " 0.448, 0.455],\n", " [ 0.618, 0.273, 0.083, 0.883, 0.909, 0.236, 0.178, 0.21 ,\n", " 0.453, 0.504],\n", " [ 0.613, 0.367, 0.515, 0.731, 0.538, 0.248, 0.19 , 0.729,\n", " 0.214, 0.134],\n", " [ 0.181, 0.409, 0.974, 0.354, 0.806, 0.9 , 0.009, 0.464,\n", " 0.986, 0.948]])" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "U @ np.diag(s) @ V" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Condition number is ratio of largest to smallest singular value\n", "\n", "Very large numbers suggest that matrix multiplications will be numerically unstable." ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "8.6144185014856678" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s[0]/s[-1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### SVD is often used for dimension reduction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We construct a $10 \\times 6$ matrix with only 3 independent coluumns" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": true }, "outputs": [], "source": [ "x = np.random.random((10,3))\n", "A = np.c_[x, x]" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": true }, "outputs": [], "source": [ "U, s, V = linalg.svd(A)" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((10, 10), (6,), (6, 6))" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "U.shape, s.shape, V.shape" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "80843248563455600.0" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s[0]/s[-1]" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": true }, "outputs": [], "source": [ "k = len(s > 1e-10)" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "k" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Dimension reduction\n", "\n", "We only need $k$ columns from $U$ and $k$ rows from $V$ to reproduce $A$." ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0.66 , 0.191, 0.324, 0.66 , 0.191, 0.324],\n", " [ 0.674, 0.24 , 0.602, 0.674, 0.24 , 0.602],\n", " [ 0.704, 0.813, 0.927, 0.704, 0.813, 0.927],\n", " [ 0.527, 0.873, 0.387, 0.527, 0.873, 0.387],\n", " [ 0.42 , 0.427, 0.161, 0.42 , 0.427, 0.161],\n", " [ 0.737, 0.245, 0.99 , 0.737, 0.245, 0.99 ],\n", " [ 0.4 , 0.004, 0.13 , 0.4 , 0.004, 0.13 ],\n", " [ 0.614, 0.183, 0.999, 0.614, 0.183, 0.999],\n", " [ 0.166, 0.835, 0.591, 0.166, 0.835, 0.591],\n", " [ 0.171, 0.215, 0.501, 0.171, 0.215, 0.501]])" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "U[:, :k] @ np.diag(s[:k]) @ V[:k, :]" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0.66 , 0.191, 0.324, 0.66 , 0.191, 0.324],\n", " [ 0.674, 0.24 , 0.602, 0.674, 0.24 , 0.602],\n", " [ 0.704, 0.813, 0.927, 0.704, 0.813, 0.927],\n", " [ 0.527, 0.873, 0.387, 0.527, 0.873, 0.387],\n", " [ 0.42 , 0.427, 0.161, 0.42 , 0.427, 0.161],\n", " [ 0.737, 0.245, 0.99 , 0.737, 0.245, 0.99 ],\n", " [ 0.4 , 0.004, 0.13 , 0.4 , 0.004, 0.13 ],\n", " [ 0.614, 0.183, 0.999, 0.614, 0.183, 0.999],\n", " [ 0.166, 0.835, 0.591, 0.166, 0.835, 0.591],\n", " [ 0.171, 0.215, 0.501, 0.171, 0.215, 0.501]])" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Matrix norms" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1, 2],\n", " [3, 4]])" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = np.array([[1,2],[3,4]])\n", "A" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Frobenius norm" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5.4772255750516612" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linalg.norm(A)" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5.4772255750516612" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.sqrt((A**2).sum())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Largest singular value" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5.4649857042190426" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linalg.norm(A, 2)" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5.4649857042190426" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linalg.svd(A)[1][0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Largest row sum" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7.0" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linalg.norm(A, np.inf)" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A.sum(1).max()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Largest column sum" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6.0" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "linalg.norm(A, 1)" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A.sum(0).max()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Integration\n", "\n", "It is common to need to find areas under curves in statistics, for example, to estimate the probability mass under a distribution for a certain range of values." ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "collapsed": true }, "outputs": [], "source": [ "d = stats.norm(0, 1)" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.682689492137086, 7.579375928402476e-15)" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrate.quad(d.pdf, -1, 1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### What is the area between the curve and the x-axis?" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def f(x):\n", " return 1 + x * np.cos(71*x) + np.sin(13*x)" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "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": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1.020254939102394, 1.636375780468161e-14)" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrate.quad(f, 0, 1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Romber, trapezoidal and Simpson's methods are mainly for pedagogical reasons" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0202549391050357" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrate.romberg(f, 0, 1)" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0196541685543563" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrate.trapz(f(x), x)" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0202546407742057" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrate.simps(f(x), x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Integration in higher dimensions" ] }, { "cell_type": "code", "execution_count": 76, "metadata": { "collapsed": true }, "outputs": [], "source": [ "d = stats.multivariate_normal(np.zeros(2), np.eye(2))" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.9110697462219217, 1.7566204076527952e-11)" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrate.nquad(lambda x, y: d.pdf([x, y]), [[-2,2], [-2,2]])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Integrating ODEs" ] }, { "cell_type": "code", "execution_count": 78, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def f(x, t, a, b, c, d):\n", " \"\"\"Lotka-Volterra model.\"\"\"\n", " u, v = x\n", " return [a*u + b*u*v, c*v + d*u*v]" ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "collapsed": true }, "outputs": [], "source": [ "a, b, c, d = 1, -1, -1, .5\n", "x0 = [0.5,0.5]\n", "t = np.linspace(0, 22, 100)" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAD8CAYAAABXe05zAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd8HOWd/9+zVVr1akmWbMm94IoBA6YZTCCUkEJCCYQc\nhOMujd8ldyHXEpJccklI4xJCIAVIgBAIkNAxxTQb925ZlqzepVXfVdkyvz8ejSzbKrO7s7Mr6Xm/\nXrzW3jLzmNn9zPf5VkVVVSQSiUQydbDEegESiUQiCQ0p3BKJRDLFkMItkUgkUwwp3BKJRDLFkMIt\nkUgkUwwp3BKJRDLFkMItkUgkUwwp3BKJRDLF0CXciqKkK4ryjKIoRxVFKVUU5dxoL0wikUgkY2PT\n+b5fAK+qqvopRVEcgGuiN2dnZ6vFxcWRrk0ikUhmDLt3725XVTVHz3snFW5FUdKAC4HbAFRVHQKG\nJvpMcXExu3bt0nN+iUQikQCKotTofa8eV0kJ0Ab8QVGUvYqi/FZRlKSwVyeRSCSSiNAj3DZgLfBr\nVVXXAB7gnlPfpCjKnYqi7FIUZVdbW5vBy5RIJBKJhh7hrgfqVVXdPvz3ZxBCfhKqqj6kquo6VVXX\n5eToctNIJBKJJAwm9XGrqtqsKEqdoiiLVVUtAy4FjkR/aRKJZDri8/mor69nYGAg1kuJCQkJCRQW\nFmK328M+ht6ski8Djw9nlFQCnw/7jBKJZEZTX19PSkoKxcXFKIoS6+WYiqqquN1u6uvrKSkpCfs4\nuoRbVdV9wLqwzyKRSCTDDAwMzEjRBlAUhaysLCKNA8rKSYlEYjozUbQ1jPi3S+GWSCSmsflIC/5A\nMNbLmPJI4ZZMe4429/DlJ/fSO+CL9VJmNG29g/zjH3fR3T91rkNxcTHt7e2nPX/bbbfxzDPPnPb8\nrl27+MpXvgLAli1b2Lp1a1TWJYXbYL7zwhFu/f0Oylt6Y70UCUIsbn9kFy/sb2RndUeslzOjeWF/\nI0EVBv1BgsH4GVKuqirBoDG7gHXr1nH//fcDUrinDMGgytO763j3WBtX/uI9fvTqUfqHArFe1oxl\n0B/grj/txu0ZBKC0Sd5MY8lzextIclgJqtA36I/pWqqrq1m8eDG33norZ5xxBrfffjvr1q1j+fLl\nfOtb3zrpvT/60Y9YsWIFZ599NhUVFSPPv/HGG6xbt45Fixbx4osvAkKsr776aqqrq3nwwQf52c9+\nxurVq3nvvfcMXb/edECJDspb++gd8POfVy2ltKmXB7Yc51hLH7/9nEzIMRtVVfnmswfZXdPJr25a\nyw9eKeVIU0+slzVjqWjt5WBDN9+4YgkWpZueAR+piXbufeEwRxqNvS7LClL51jXLJ31feXk5jz76\nKOvXr6ejo4PMzEwCgQCXXnopBw4cYOXKlQCkpaVx8OBBHnvsMe6+++4Rka6urmbHjh0cP36cSy65\n5CRRLy4u5q677iI5OZmvf/3rhv77QFrchrK7phOATctm8ZNPr+L6MwvZU9sZ41XNTF473MKzexq4\n+7KFXLUyn2X5qZRK4Y4Zz+1twKLAJ8+cTYLdSk+/H1WNrbtk7ty5rF+/HoC//OUvrF27ljVr1nD4\n8GGOHDlRY3jjjTeOPG7btm3k+U9/+tNYLBYWLlzIvHnzOHr0qGlrlxa3geyq6SA72cGcTNH1dl5O\nMk/vrqdv0E+yU/6vNpOd1R04bRa+dMkCAJbmp7K5tAXvkB+XQ14LMwkGVZ7f28iGhTnkpiRQZ7fg\nDwbxDgV0WcbRIilJ9MqrqqrivvvuY+fOnWRkZHDbbbedVNU5On1vvD+P9fdoIi1uA9lT08naORkj\nF7AoMxGAug5vLJc1Iylt6mFJXgo2q/iKL81PRVWhrFn6uc1mZ3UHDV39fGLNbAAS7FYUFHriJMun\np6eHpKQk0tLSaGlp4ZVXXjnp9aeeemrk8dxzT8yQefrppwkGgxw/fpzKykoWL1580udSUlLo7Y3O\n900Kt0G09w1S7fayrjhj5DnN8q6Vwm0qqqpypKmHZQWpI88tyxd/lgFK83l+XwMuh5XLl88CwKIo\nJDmFuyQeWLVqFWvWrGHJkiXcdNNNnH/++Se93tnZycqVK/nFL37Bz372s5Hn58yZw9lnn82VV17J\ngw8+SEJCwkmfu+aaa3juuedkcDKe0fzbZ849IdxFGUK4pcVtLk3dA3R5fSzNPyHchRmJJDtt0s9t\nMoGgyksHmvjI8ryTXFSpiXYau/oZ9AVw2q2mr6u4uJhDhw6N/P2RRx4Z833V1dUA/PCHPzzp+fHe\nf/HFF3PxxRcDsGjRIg4cOBDpUsdEWtwGsaemE4fVwvKCtJHn0l12Upw2Kdwmo4nzslHCbbEoLMlL\nkcJtMnUdXnoG/Jw7L+uk51MThIjHi7tkqiGF2yB213RyxuxUEkZZD4qiUJjpoq6zP4Yrm3lo6WVL\nRgk3CD/30ebeuCr+mO5UtPYBsGBW8knPO2xWnDYrXlnnEBZSuA1g0B/gQEP3SW4SjTmZidLHbTJH\nmnqYm+U6LZNnWUEqfYN+6uWN1DTKNeHOTT7tNbtVwReQN9FwkMJtAIcaehjyBzlzbuZprxVluKjr\n8MY8Z3UmcaSp5yQ3iYbm85aFOOZR3tpLXmoCqQmnDw2wWS2y4VSYSOE2gD3Dgcm1c9NPe21OlotB\nf5C23kGzlzUj6Rv0U+P2jinci2elYFGQfm4TqWjtY+Gs061tALtFwRdUpVETBlK4DWB3TSdzMl3k\npiSc9lrRcEpgXad0l5jB0WFRXjqGcCc6rBRnJ0nhNolgUKWitW9MNwkIi1tVVQIy5hAyUrgN4GBD\nN6uKTre24URKoPRzm4PmBhmdwz2apfmplDZL4TaDxu5+vEMBFuamjPm63SoK1fwxEO7777+fpUuX\ncvPNN5t+biOQwh0hA74ADV39LMgZ26oozBDVk7VuGRAzg9KmHtJddvLTTt/9gEgRrOvol725TUAL\nTI7nKrFZhPzEws/9wAMPsHnzZh5//HHTz20EUrgjpMYtLOmSnKQxX0+wW5mV6pSuEpM40tjD0rzU\ncftGLM0X1t8x2S896lS0DGeUjGPU2IYtbp/JFvddd91FZWUlV155JT/5yU+47rrrWLlyJevXrx8p\nmPnqV7/Kd77zHQBee+01LrzwQsN6dhuBrJyMkKp28eWclz22cIMofZeukujjDwQ52tzLZ9fPHfc9\nBeliB9TSI4PF0aa8tZfsZAcZSY4xX7dbFfK33UtS91GwGmhD5q2AK/933JcffPBBXn31Vd5++23u\nvfde1qxZw/PPP89bb73Frbfeyr59+/jBD37AWWedxQUXXMBXvvIVXn75ZSyW+LFz42clU5TKdg8A\nxRMId1GGi3op3FGn2u1h0B8cM6NEIyvJCYC7Twp3tJkoMAmiZ4miENOskvfff59bbrkFgI0bN+J2\nu+np6cHlcvHwww+zadMmvvSlLzF//vyYrXEspMUdIVVtHnJSnBO2bS3KdPHcvgYG/QGcNvP7MswU\nDjeOn1GikeES+cRuz5Apa5qpqKpKeWsf162ePe57FEWhfcO9eO025mS5TFydPg4ePEhWVhaNjY2x\nXsppSIs7QqrdHkomsLZBuEpUFRq7BiZ8nyQyylv6sChjV+lp2KwW0l123H1SuKNJa+8gvQP+cQOT\nGnaLBV8MfccXXHDBSIByy5YtZGdnk5qaSk1NDT/5yU/Yu3cvr7zyCtu3b4/ZGsdCCneEVLV7JvRv\nw4lcbunnji7Vbg+FGS4ctom/1llJDjqkxR1VylvGL3Ufjc2q4I9h2fu3v/1tdu/ezcqVK7nnnnt4\n9NFHUVWV22+/nfvuu4+CggJ+97vfcccdd5w0XCHWSFdJBHT3+2jvG5rQvw0n+nLLLoHRpcbtZa6O\nLXdWkpN26eOOKuWtImtnvBxuDbvVQt+A+X25tXatAM8///xpr7/xxhsjfz7zzDM5ePCgGcvSjS6L\nW1GUakVRDiqKsk9RlF3RXtRUoXo4MDmZqyQ3xYnDZpHCHUVUVaXa7aE4a+JrAZCVLC3uaFPe2kda\nop3s5LEzSjRsVoWArJ4MmVAs7ktUVW2P2kqmINVuIdyTuUosFoXCDNklMJp0en30Dvh1WdyZSQ4Z\nnIwyFS19LMxNnnQO4+giHKtFBu71In3cEVDZ5kFR0BURL8pwySKcKKLdRPVZ3E46vUPSyosSqqpy\nrLV3wsCklgIYy7L3WGFE+qNe4VaB1xVF2a0oyp0Rn3WaUNXuYXZ6oq4Uv4L0RJq74ye4Md2o0YQ7\nW4+P24GqQqdXWt3RoMMzRJfXx/xxKiYTEhJwu92oqjoyzNk3Q9q7qqqK2+0+bT5lqOh1lWxQVbVB\nUZRcYLOiKEdVVX139BuGBf1OEEM0ZwJV7ZOnAmpkJtnp9PpQVXXS7aMkdGrcXhQFCjN0CPew37XD\nM0R2sjPaS5txVGttIMb5bRQWFlJfX09bWxvBoEpL9wCDbXaSE2ZGrkRCQgKFhYURHUPX/ylVVRuG\nH1sVRXkOOBt495T3PAQ8BLBu3bppv+9RVZXqdg+fWDt+gcFoMlwOAkGVngE/aYmnN5WXREaN20tB\nWuJJo+PGI3O4BLu9b5BFsybOepCETm2H2P2MF2+w2+2UlJQA4nd03X++wu0b5nHPlUtMW+NUZ1JX\niaIoSYqipGh/Bi4HDk38qelPe98QvYN+3RZ3hkuIRZfcnkeFardHV2ASGLGyZWZJdAhl96MoCjnJ\nTlp7pRsxFPT4uGcB7yuKsh/YAbykquqr0V1W/FOlo0fJaDKShJUtxSI6iBxuvW4rcROV1ZPRodbt\nJS81QdfuByAnNUFOiAqRSV0lqqpWAqtMWMuUQsvhnpc9cWWYRvqIxS37QBtNd7+PDs8QxTot7gyX\nA0WR/UqiRU2Hd6ToTA+5KU5q3TLjKhRkOmCYVLZ7sFsVZg8PSpiMzGHhlpkMxqP96PVa3FaLQobL\nITsERgm9FawauSnSVRIqUrjDpKq9j7lZSVgt+jJENB+3dJUYT3UIqYAasl9JdPAM+mnvG9R9EwXI\nTUmg0+tjyD8zUgKNQAp3mFS16yuv1khJsGG1KNJVEgW0HO5QtueZSQ7p444CWnVwSK6SVBEsbpM7\nIN1I4Q6DYFClxu2lJAQLz2JRSE+00yFdJYZT7fYyK9WJy6E/Dzg72YnbI4XCaGpG3FahuUoAWnuk\nu0QvUrjDoLV3kEF/kDkhWNwAGUkOmQ4YBWrcnpC25iD7lUSLkRzuzNBcJSB+VxJ9SOEOA21rPjeE\n7SCI6SvSr2o81W6v7owSjaxkB11eX0wmjE9natxe0l120lz6i8w0V4kUbv1I4Q6DcPx4IFICpY/b\nWDyDftp6QwuGgQhOAtJ1ZTC1Hd6QDZqsJJGe2SZdJbqRwh0GtR1erBb9qYAamS6HTAc0mJpJ+mKM\nR5asnowKNW5vyC5Em9VCVpKTlh5pcetFCncY1Li9FKQnYLeG9r8vPclOp8cX06nW040Rt1WIrhJZ\nPWk8vkCQhq7+kC1uEAFKmVWiHyncYVAbYmWYRqbLwVAgiHcoEIVVzUyqQyy+0dAms8gApXE0dvUT\nCKphTWzPTJK70VCQwh0GQrhDEwqQRTjRoMbtITvZQbIztJagmUnCVSKrJ41jJBUwDKMm3WWnW8Z/\ndCOFO0R6B0RfjFC35iC+nCD7lRhJjTu83U96oh2LIm+iRlLTEd7uB8RvQ1rc+pHCHSKaVRGWq0Rm\nMhhOuG4ri0UhM8lBu/RxG0at24PTZhkpqAmF9EQH3f0+gjNohFkkSOEOkbowUwFhdIdAKRZGMOQP\n0tTdH3IWg0ZWkpMOWT1pGNrux6Kzf89o0l12gir0DvqjsLLphxTuENG2g+EGYAA65fbcEOo7vQTV\n8HyqIPuVGE2oXQFHoxk10s+tDyncIVLj9pLhspOaEPr4sbREO4oCHfLLaQgnfKrhiUVWsix7NwpV\nVcMO2oOIOQB09cvroQcp3CFS1xF6gYGG1aKQlmiXrhKD0Ppwh7P7AVGxJ7NKjKGtd5B+XyACi1sI\nd6c0anQhhTtEajo8YW/NQaQEykwGY6jt8JJot5IT5qT2rGQnPQN+2QfaACJxIcLojCv529CDFO4Q\n8AWCNHYNhBWY1Eh32WU6oEFowTBFCT0YBqNiDlIsIkbLtgqlR/1oRnzc/fK3oQcp3CEQSWWYRqa0\nuA2jtsMT0bXQqifbpbskYmrdHiwKzE4PrX+PRlqirHEIBSncIRBJDreG6BAohTtStGBYJG4rrXpS\n3kgjp6bDS0F6Ig5beJJit1pIdtrk7kcnUrhDINIsBoDMJLsMwBhAa+8gA75ghNdCtiAwCtETPTw3\niUZaoix714sU7hCodXtw2CzMGp7YEQ7pLgf9vgADPtloKhK0nuhFEQWK5fbcKGrdkbmtADKS7HRJ\nH7cupHCHQG2Hl6KMxLAqwzRkQMwYasLsCjga6Vc1hu5+H51eX0RuKxBl79KNqA8p3CEgKsMi2w5q\nVp7cnkdGpMEwEA38U5w2WfQRIbVhDAgeizSZcaUbKdw6UVVVFN9EalWM9CuRX9BIiDQYppEm24lG\nTI02IDhCoyY9UbpK9CKFWyftfUN4hsKvDNOQATFjiKQvxmjSXVIsIsWIbCsQxWld3iHZIVAHuoVb\nURSroih7FUV5MZoLile0EVnFIc42PBVZIWYMRux+QPpVjaDW7SU72UlSiMMsTkXrENg3JDsETkYo\nFvdXgdJoLSTeqWofFu6IfdyaxS2tvHDpG/Tj9gyF3dBoNNKvGjnVbo8hu5+RYLH8bUyKLuFWFKUQ\nuAr4bXSXE7/UuMVk98IQJ7ufin04ICazSsIn3AHBYyH9qpFT22GU22o4/iODxZOi1+L+OfBvwLjd\neBRFuVNRlF2Kouxqa2szZHHxRLXbQ2FGYsiT3cciI0luzyOh1iCfKki/aqQM+AI09www14Ddj8yr\n18+kKqQoytVAq6qquyd6n6qqD6mquk5V1XU5OTmGLTBeMCIVUCPDZZc9uSMg0k50o5F+1cio7/Si\nqgbtfjThljugSdFjPp4PXKsoSjXwZ2Cjoih/iuqq4gxVVal2eyg24MsJsl9JpEQyzOJUNL+qTAkM\nj+p2Y3K4AdIS5Wg/vUwq3KqqflNV1UJVVYuBG4C3VFX9bNRXFkd0eIboHfAbZnFnJskOgZFQ3e6J\nOLtHQ+bVR0Ykk91PRVay6kfmceugetinWpJtlMUtMxkiodrtocSgm+iJ7bm8kYZDrdtDitM24p+O\nBIdNdAiUv43JCSnxUlXVLcCWqKwkjjmRxWCUj9tB36CYvBJp5d9Mo38oQFP3ACVGWdzSyouIareX\nOVnhD7M4lbREu7yJ6kCqhg6q3V4sChRlGGNxa9aJnPYROlp5tVGukjRZEBURtR2Rt3MdTbpsQaAL\nKdw6qG73MDsj8r4YGmkuGYQJl6o2IdzGWdzSxx0ugaBKfafXkOwejXSXXdY46EAKtw5q3B5DrYoM\nOdE6bKoMaj2g4bBZSHJYZQpaGDR29eMLqBG3cx1Nusshr4UOpHDroNqghkYaGdLiDpvqdg85KU6S\nI+yLMRqRninFIlRGmksZaXHLKTi6kMI9CV3eIbr7fYZa3DLtKXyq2o3LKNFIS7TTLQNiIVPZ3gfA\n/Jxkw46pdWtUVVnJOhFSuCdBSwU01FUip+CETVW7l2KD0jI1ZHpmeFS2eUhyWMlNcRp2zPREB4Gg\nSu+grGSdCCnck1CtdQU0UCySHFbsVkX68kKkd8BHe9+gYf5tDdmTOzwq2z2U5CQZlgoIJ7J8pLtk\nYqRwT0K124OiQKFBqYAAiqKQJvtAh4xWXj3PYOEW10IKRahUtfcxL9s4NwmMjv/I6zERUrgnocbt\npSAtkQS71dDjZsjtecgYnVGike4SPm7pV9XPgC9AfWe/YWmZGrKSVR9SuCeh2u0x3KcKMl81HDS3\nlREtREeTnmjHF1DxDAUMPe50prZDdAWcl2P8tQCZKjsZUrgnobrdY1ip+2hkClroVLd7yE9LINFh\n7O5HjpMLnco2kVFitKvkhI9bXouJkMI9Ad1eH51en2HtXEcjXSWhU9nuMXxrDrJDYDhUDu9+Sgy3\nuOW10IMU7gk4HoU8VY10l0O6SkJEuK2iINyJsndMqFS2ecg1uBAKZCWrXqRwT0BFazSF286gP8iA\nT/pV9dDpGaLL6zO8+AakxR0OVe0ew/3bGtKomRwp3BNwvK0Ph9VCkYG9GDS0tCf5BdWHllESHVeJ\nzGQIlcq2PkoM9m9rpMmy90mRwj0Bx1v7KMlOwmoxrsBAYyR67pFfUD2cKIQyXrhlC4LQ6PQM0en1\nMT9KFndGksy4mgwp3BNwvM3D/NzobQdBWnl6qW73YFGMmex+Kgl2Kwl2i/Rx62QkMBmFmyjIjCs9\nSOEeh0F/gBq3hwVR8G+DsCpAWnl6qTS4J/qppCc66JRzQHVRNSzc86L028h0OeiQFveESOEehxq3\nl6AK83Oj8+XU0p7kllAfFa19UbuJguxXEgqVbX3YLAqFGYlROX5GkoPufh/+QDAqx58OSOEeh+NR\nzCiB0UUfUiwmwx8IUtnuYeGslKidQ47M0k9Vu4c5WS7s1ujIR6bLjqrK9MyJkMI9DloqYLRSnjS/\nqqzWm5y6zn6G/EEWRGn3A2IHJOMN+qhs8xje6Gs0su3x5EjhHofjbX3MTk/E5TC2wGA0GTIIo4vy\nll4AFkZTuGUlqy6CQZUqtydq/m2ArCTR37tDZlyNixTucaho64uaf1tDFBrIL+dklA/vfqJpcafJ\nySu6aOgSu59oZZTAicB9hwwWj4sU7jEIBlWOt3qilqeqkZ5ol64SHVS09pGflkBKgj1q50hPdDDk\nDzLgkwGxiYh2KiBApnSVTIoU7jFo7hmg3xeIWmBSIyNJZjLooby1N6rWNsjqSb2Y4bbSqoqlxT0+\nUrjHoMKErTlohQbyyzkRwaBKRWsfC3Ojl1ECspJVL8daeslOdpKVbNycyVNJsFtxOawyr34CJhVu\nRVESFEXZoSjKfkVRDiuKcq8ZC4slx9uimwqoIVwl0q86EQ1d/Qz4giycFd1rkSYtbl2UtfSxOC+6\n1wKE1S2LcMZHj8U9CGxUVXUVsBq4QlGU9dFdVmypaO0jNcFGdrIjqufJcDnwB1X65ETrcSlvFVvz\nRVEWbm17LnO5xycYVClv6WVRFPPpNTKTHNJVMgGTCrcq6Bv+q334v2ltIh5v62NBbrKh06vHQhbh\nTE55y7DbKifKrhKXHJk1GQ1d/XiHAiw2QbgzkmQLgonQ5eNWFMWqKMo+oBXYrKrq9uguK7ZUtHqi\n7iYB2QdaD+WtfeSmOEdcGdFCttmdnLLm4cCkGRa3yy5dJROgS7hVVQ2oqroaKATOVhTljFPfoyjK\nnYqi7FIUZVdbW5vR6zSNbq+P9r7BqAcmQYwvAykWE1He2hd1/zaIgFiy00Z732DUzzVVKWsxx20F\nmsUtDZrxCCmrRFXVLuBt4IoxXntIVdV1qqquy8nJMWp9pnNs2KdqhnCnS+GeEFVVqWjpjXpGiUZW\nsgN3n7wW43GspZfZ6YlRzafXyHQ56Bv0M+iXE6LGQk9WSY6iKOnDf04ENgFHo72wWFHa1APA0vzU\nqJ9Lc5XIZjpj09Q9gGcoYMpNFCAryYHbM2xx97VBUBbjjKasudcUaxtO9CuRbsSx0WNx5wNvK4py\nANiJ8HG/GN1lxY7Spl7SEu3kpyVE/Vwn5Q6rKux+BJ74DAx0R/3cUwGt1D2axR6jyUp2CovbfRx+\nvgL+eru4LhJ8gSCVbR4W5Zmz+9GqJ4cOvwAv/6u4JpIRJu2gpKrqAWCNCWuJC0qbelianxL1jBIA\nm9VCitPGYG8bPPVtODp8P/zwQbj4G1E/f7wzUqVnQjAMIDvZwd7aLtj83+AfgMPPQuFZcO4/m3L+\neKbG7WEoEDQlowQ04VbJ3vo/0FsFO38LZ3wSLvoGZC80ZQ3xjKycHEUwqFLW3MuSvOi7STRWJzZx\n5+Fb4dhrsOm7sPgq2PYr6O80bQ3xSkVrH1lJjhHrK9pkJTlZ1L9P3EAv+Q9YcjVs/i+o2WbK+eOZ\nsmax+zEjhxuEcC9XqknsrYKN/wnnfgmOvgy/2wRDXlPWEM9I4R5FTYeXfl+AZSb4tzVu4HUSAr1w\nxxtw/lfgkn+HwW7Y+kvT1hCvlLVEv0fJaLKTrPy79Y8EUgvhvC/BdQ9A+hx4+jbobTFtHfFIWUsv\nFsWcoD2I9MyPWbcSUGyw7na4/Ltw01PCoCl9wZQ1xDNSuEdxdDgwuSTfHKsCYEWglFLbMihYLZ7I\nOwOWXQfbHwSP27R1xBuBoMrRpl6WFZh3E13V8SpnWKppO+cesCdCQhp8+o8w0AVbvm/aOuKRY829\nFGclkWC3mnK+9EQrV1u3UZN+LrgyxZPFGyCjGPb+0ZQ1xDNSuEdR2tSDRTFvO0h/F4W+Kvaw+OTn\nL/4mDHlg6y/MWUccUtXeR78vwPKCNHNO6B9k+ZGfsye4gOq8K088n3cGLLkKjvwdAjM3w+GYSaXu\nGvb67RQoHexJu/TEk4oCqz8L1e9BZ7Vpa4lHpHCP4khTLyXZ5lkV1O/Egso236KTn89dAiuuh+0P\nzVir+3Cj2P0sN8vibjmEY6CN3/o/ivvUwo9l10F/B1S/b85a4owBX4Bqt3kZJQAcfJp+nGyzn3Py\n86tvBBTY94R5a4lDpHCP4mhzjyn52yPUbCWgWNk6OJdA8JS0s3O/CP5+KHvZvPXEEUcae3BYLeb5\nuJsOAHBAnXcil1tj4SawJ8GR581ZS5xR0dpHUMW0jBICPjjyN3Y619PSf4oRlVYI8y8Rwj2D8+yl\ncA/TM+CjvrPfXOGu/ZCO1KV41YTTqyfzV0FqIZS9Yt564ojDjT0sykuO2iTx02g+gOpMpYEc2k+t\nnrQnwqKPiKBYYOZ1ctR6lJhVfMPxt6G/g31pl43dIXD1zdBdB1XvmLOeOEQK9zDal3OpWYFJ/yA0\n7KYvdx0ArT2nWHmKAouvgMq3wddvzpriBFVVOdzYzfJ8k/zbAE0HUPJWkuFy4h6rX8ny68DrhpqZ\n5y451NgMM3yRAAAgAElEQVRNgt0S1XFlJ3H4WUhIpyHrvLHbQSy5WgSO9z1uznriECncw5hZ6g5A\n4z4IDBIsEq3N28YSi0VXgs8LVe+as6Y4oal7gE6vj+WzTboWwQC0HIb8lWSN1wd6wSawu+DwzHOX\nHGroZnlBGjazdj+Ne2HueaSlJNHhGTp90Ig9QcSASl8QQfwZiBTuYbRS97zU6Je6A1Arijqc884H\noK13DOEuuQAcyTPOXWJ6YLK9XMQT8laO32jK4ZqR7pJAUOVQQw8rZpu0+wn4wF0BOUvIcDkY9Afp\n943RaGrJ1aK6teo9c9YVZ0jhHsbMUndACHfWQrJyZwPQ2jtw+ntsTpi/EY69OqMCMYcbu1EUzKtg\nbRaBSfJXkpXspP3U4KTGsuvA2w61W81ZVxxQ2SbSMk0T7o5KCPohZwmZSaKXz5g7oLnniR1QxRvm\nrCvOkMKNsCrKmnvNc5MEg1D7IcxZT6LDSorTNrbFDbD4SuhtgqZ95qwtDjjc2ENJdhJJzklb6RhD\n036wOiF7kegQOF5r14WXC7E48jdz1hUHHGwQDc9WFJok3K2l4jFn8YnhFmP15bY5oeRCKdwzmdrh\nUvelZll47WWiGm/OuQDkpDhpHU+4F14OikVY3TOEI4095hXegLC4Zy0Dq52sJCfd/T6G/GPscBwu\nmHfxjBKLA/XdJNqtpkyEAqCtDFAge9FIj5pxJ+EsuAw6q2Zk50Ap3MCB+i4A84Jhw/5t5ojAZHaK\nc3yLOykbCs+eMfncXd4hGrr6zfNvq6rI4c5bCYhhCjDBcIv5G0XVXkelOeuLMSIwmYrVYpILse0o\nZMwFh2tEuMedPbngMvE4g26kGlK4gb21XSTareYVGDTth8QMyJwHQG6Kk/bxhBuEu6T5IHTVmbO+\nGHJkODBpWqOv7nqx+8kXwp09LNzjjjCbv1E8VrxpxupiSiCocrixhzPM8m+DsLhzlgAnenKPO+09\nswQy50P5ZrNWFzdI4Qb213exYraJ6U7u45C1UORqM4mrBEQ2A8Dx6S8WpmeUaIHJvFWAGKYAjO/n\nzpwH6XNFkcg057jZgcmAH9zlI8KdmmDHokwg3CCqWqvfn3G1DjNeuIf8QQ439rB6Trp5J3VXQNaC\nkb/mpDjpG/TjHRonzSxnCaTkzwixONzYTV5qwoiARp2mA4AifNyI8WXA6WXvGooirO6qd6d906mD\n9SIwudKswGRnFQSGRoTbYlHIcDkmnva+4DKRylkzczJ9QAo3pU09DPmDrCo0SbgH+0SWSNb8kady\nU0TueHvvOF9QTSwqt4hikWnMocYe86xtEBZ39kJwiKrASS1uENdiqBfqd5qxwphxsKEbl8PKPNMC\nk8OjbHNOdMsU094nuBZzzxcZQTPMzz3jhXtfnQhMmmZxdwxHwE+xuGGcXG6NeZcIX+w0Tgvs9vqo\naO1jjZm7n1GBSYDUBBt2q4J7IrEouRAUKxx/y4QFxo6DDd0syzcxMNk6LNzZJ7plZrrGqWTVcLhE\nn24p3DOLfXVd5KQ4KTBhODBwInVptHAPW3njZpaASEODae0u2VMnxrWtnZthzgm9HdBTPxKYBFAU\nhaykcfqVaCSmQ+G6aS3cgaDKkcYe8/K3QVjc6XPAecLCz0iyTyzcINwl7cegqzbKC4wfpHDXdbG6\nKN28iklNuIczSgByUzWLewKxSM6BvBXTW7hrOrFaFPPcVm1l4jF32UlPZ05UhKMxfyM07BHiPw0x\nPTAJJ2WUaOSkOMfu4zMaLdNnGv82TmVGC3eXd4iqdg+ri0wOTKbOFlu8YTJcDqwWZWKLG4S7pG67\n8JNPQ/bUdrIkL8W8ismO02+iIHK52yez8uZvBFQRd5iGHBgOTJom3MGAsJpzTp4GlZ+WSJfXR//Q\nBLGdnMWQUjCtd0CnMqOFW/NvrzFbuEcFJgGsFoWsJMfkwj1/IwR90zKC7g8E2VfbxZlmuUlAFNFY\nbCK9bxTZyZO4SgAK1oIzbdqmaO6u6STFaTMvMNlZDYFByFl60tP5wy7Mpu4J0v0URQxXmAHBe40Z\nLdz760QzI1P9eKekAmrkpjonDk6CKJG3JUxLy6KspRfPUMBc4XYfFz5V68kW/oT9SjSsNph3kdie\nn9p2dBqws7qDM4szzK2YhNNcJXkjwj3Jb2P+xmkfvB/NjBbufXWdLMxNJiXBbs4JvR3iyzWGcOck\n6/Dl2RNEV7TK6efL21MzHJicY7LFnTn/tKezkp30+wLj59VrzN8IPQ1iiz+N6PAMUdHax1nFmead\ndES4T56/WpCWCOgQ7pKLxOM0NGrGYsYKt6qq7KvrMi8QBsLahrGFO8V5+hScsZh3ifiS9zQavLjY\nsrumk9wUJ4UZieacUFWho+o0/zac6FeiK0AJ0678fWe1CLieXWKmcJdBWhE4T247MWJxd01SGZmc\nI9I6j2+J0gLji0mFW1GUIkVR3lYU5YiiKIcVRfmqGQuLNrUdXjq9PvMrJmFMKy83JQG3Z+j0ocGn\nMhJBn16Wxe7aTs6cm2Fedo+nTRTRjCHcWr+SCXO5QTRDylow7a7FzqoOHDaLeRWTIIyR7EWnPZ1g\nt5KZ5KCpZxKLG4SfexoH70ejx+L2A19TVXUZsB74oqIoyyb5TNyzq1pszdcUmelTrRCFGxlzT3sp\nJ8VJIKiO35VOY9ZySJ41ray81t4B6jr6zXeTwGmBYoCsJK16UscOaP5G0SvDr+O9U4Sd1R2sLkzH\nabNO/mYj0HY/Y+xEQQQoJ7W4YVTw/gODFxh/TCrcqqo2qaq6Z/jPvUApMDvaC4s22yrdpLvsLMkz\nqSMgCOHOKAbr6T71kerJydwliiIKDo6/NW0i6HtqRHaPaYU3MGY+vYZuVwnA/EtFrwytVe8UxzPo\n51BjD2eVmHgtvG4Y7BnzWsCwcE/m4wYoWj9tg/enEpKPW1GUYmANsD0aizELVVXZdtzN+pIsLGZF\nzQHcleNaFbnDwj1pgBJgwaUiyNmwx8jVxYw9tZ04rBbOMKsfOgiLW7GKrJJT0CxuXdeieANY7NNG\nLPbWdhEIquYGJie4iYLI5dYl3PYE0btkBhTi6BZuRVGSgb8Cd6uq2jPG63cqirJLUZRdbW1tRq7R\ncOo6+mno6ue8BVnmnTQYFAUf4wi3ZnFPmssNIkCpWKZNDvHumk5WFKaZtzUHIdzpc8bc/SQ6rGS4\n7DTo2Z47k6HonGkj3DuqO7AomJ9PD+MKd15aAt39vsmzfED4udvLRJ/1aYwu4VYUxY4Q7cdVVX12\nrPeoqvqQqqrrVFVdl5OTY+QaDWdbZTsA584zUbh7m8Dnhayxv5y6Gk1puDJFAcg0aKzjHfJzoL6L\ndWYKBYib6DhCAVCU6aKuw6vvWAs2ikEXfa0GLS527KzqYGl+qnkpsjDh7gegIF1nLjecmIozzYcr\n6MkqUYDfAaWqqv40+kuKPtuOu8lOdrIg16SqMJgwFRDA5bCRPNHQ4FNZcBk07J7yvTK2V3bgC6hs\nWJht3klHgmGnByY1ijJc1HfqbM4/TXplDPmD7K3rNNdNAuImml4ENseYL+drudxdOoQ7Z4lIK5zp\nwg2cD9wCbFQUZd/wfx+N8rqihqqqbD3u5tz5WealnsGkwg06JuGMZsFloAanfDHOe+XtOGwWc8XC\n0z5hMAygMCORhs5+gpOlZ4KYnuPKmvKuq0ON3Qz4gubmb8NwIdT410JX2buGoogB25VbplWmz6no\nySp5X1VVRVXVlaqqrh7+b8pOrq1s99DaO2iumwTEl9OWKJrhjENO8gRDg09l9lpISJ/yaYHvV7Rx\ndnEmCXaT/dswZj69RmGmi6FAUN+N1GIRVnfFm1M602dnldi9mXoTVVURtJ/gWsxKDcFVAkK4fZ5p\n2dNHY8ZVTm477gbgvPkmC7e7QlgVlvH/l+ekTjI0eDQW6wmxmKK9Mlp6BjjW0meumwQmDYYBFA1X\ncNZ16vRzL7oCvO3CfTVFebe8jYW5ySPxFlPwdsBg94TXIsFuJSvJoc/iBii5QEzFmcbukhkp3Plp\nCczNck3+ZiNxV0D2+G4SEBa3blcJiLTAvmZoORzh4mLD++UiSLxhgdnCfVxk5YwTDAMRnARCCFBe\nKgJsZa8YsULT8Qz62VnVycWLTU4s0HETBchP15nLDWIMXfEGKH8twsXFLzNKuFVV5cPKGPi3Az7R\ntnIC/zboGBp8KvMvFY9T9Av6fkU7WUkOluWbmL8NJ1IBxwmGAcxOH7a4O3RaeYkZogHYsal5LbYe\ndzMUCHLx4lxzTzxBBeto8tMS9QUnNRZ9RBhLWo74NGNGCfexlj7cniHz/dtdtRD0TyrcWhCmUe8X\nNDVfpAUenXohB1VVeb+infMWZJtbBAXixzyJhZdgt5Kb4qRer6sEhLuk9fCUHKG1payVJIeVdcUx\nSMucZPcDWvWkzpsonEgLnAYps2Mxo4T73WOiMOg8s7fmOjJKAIqzxaTx6naP/mMv+Sg07IKepnBX\nFxPKWnpp6x3kArP92yNdASe28GA4lzsU4V58pXgsezXMxcUGVVXZUtbGeQuyzS2CAmFxpxWCbWK/\nen5aIj0DfjyDOnejWfPF7638dQMWGX/MKOHeXNrCkryUkW2waegU7nnDwl0VknBfLR6PTS3fqubf\nNl24dQTDNIoyEvW7SuCEWBybWsJ9vK2Phq5+8/3bMG5P9FPJ1ztQYTQLL4eq92AohJvvFGHGCHeH\nZ4hd1R1cvmyW+Sd3VwgfqGviNKt0l4MMl53KUIQ7ZwlklMDRlyJcpLm8W97O/JykkeIK0xhnzuRY\nFGW6aOruxxcI6j/+oiug+j0Y7A1zgeazpUzsRE33b8OkOdwaIeVyayy8XIxDm+K1DmMxY4T7raOt\nBFXYtCzP/JOPM65sLEqyk6hqD6GfsKLAkqug6t0pIxb9QwF2VLm5YGEMLDxtWk32wknfWpThIqjq\nrNjTWHwlBIamVBXlljKRBmj6TtTbAf2duoS7ID2E6kmN4g2i1uHI38NdYdwyY4R785Fm8lITzO1A\np+Eev7nUqZRkJ4fmKgEh3IGhKROIeedYKwO+IJtisftpKwOr47QBwWNRGGouN4iGUwlpUya7xDPo\nZ0dVB5csiYW1XSUedQh3bqrwgYfkKrHahSux7JVpV0U5I4R7wBfg3WPtXLYs19w0QIAhj5hLOEm6\nk8a8nCRaegb1B2FAiIUra8q4S1451EyGy845ZpdWA7SXi5voKQOCx0LL5Q4ps8RqF1v0Y69AIIRr\nGCNG0gAXxci/Dbp+G06blexkZ2iuEoBlHxMxjcp3wlhg/DIjhHvr8Xb6fYHYuElGvpz6XSUQYoDS\nYoVFV8Kx10XOeBwz6A/wZmkrly/Lw2aNwdevvUyXmwSEX9VqUUILUAIsu04MB6iKf7F466iWBhiD\nm2jHcUDRtfuBEAYqjGbeReBMhSN/C319ccyMEO7NR1pIdtpYPy8GX06dGSUaYQk3CHfJYLcYoxXH\nvF/eTt+gnytXxOAm6hsQhVDZi3W93Wa1kJ+WEJqrBEQOsTMVDo/ZATlu8AWCvHqoiUuXzsJhi4EU\naKmA9gRdbw85lxtEmuHiK6Hspbg3akJh2gt3MKjyRmkrFy3OMT9HFUYNCJ7cjwdQnBWmcM+/BOxJ\ncOT50D5nMq8caiYlwcZ5801OAwQhFGpwzKG041GUEUJfbg17griRlr4Afh3jz2LEBxXtdHp9XLNq\n/MZnUUVnRolGQbro2KiG2ptn2cdEELT6vRAXGL9Me+HeV99FW+8gm5bGIBAGIjCZOlv0T9BBosNK\nQVpC6MJtTxRicfj5uA3E+AJBNh9pYdOyGFl47WXiMScE4c5MpE5vX+7RLP8EDHTH9WScv+9vJDXB\nxoWLYnATVVVoO6Z7JwqwcFYynqGAvslEo5m/ERzJ08pdMu2F++UDTditCpfEIkcVhlMB9QUmNUpy\nkkLL5dZY+RkxizJOu6JtO+6mu9/HlWfkx2YB7eXiMUufjxugMMNFW+8gA74Q27XOu1ikoh36a2if\nM4kBX4DXD7dwxRl5sdmJ9jQK117uUt0fWZInMsJKm0JMe7UnioBx6YtTuu3uaKa1cPsCQZ7f18jG\nJbmkuUwcxTSaEHK4NUqyk6hq6wt9SzjvYkjKgYN/Ce1zJvHKoSaSHFbzqyU12sogbQ449HeGLMoU\nKYG6p+Fo2Byw9Booexl8YVjsUWZLWSt9g36uXTU7NgtoLRWPs5br/siSvBQAjjadNvJ2cpZ9TLTd\njfMYkF6mtXC/e6yN9r5BPrm2MDYL0AoMQhbuZHoG/HR4QvSPWm1wxidFr4yB7tA+G2X8gSCvH25h\n49JZ5g5NGE17WUhuEhA+bggxl1vjjE/CUF9c7oBe2N9EdrIjNgF7EM24ICSLO8lpY26Wi6PNYRSa\nLbxcBIz3Pxn6Z+OQaS3cf91TT1aSIzbFBXCipWSIwh1WzxKNFZ8WZb5xVi32dlkbbs8Q16yMkZsk\nGIT2ipACkzAqlzvUACVA8QXgyo47d0nfoJ83Slv46Ir82KRkgrC4UwpEK4gQWJKXQmk4FrfDBcs/\nLvzcU6TCeCKmrXB3eYd440gr164uwB6rL2eIqYAaWkpgWH7u2WtFpD7O3CV/3lFLboqTjbG6iXbX\ngb8/ZOHOSXbisFmocYch3FYbLL9ONJ3q7wz981HijSMtDPqDXBurbBIQwz9CsLY1luSlUuX20D8U\nhq96zWfB54XDz4X+2Thj2gr3C/sbGQoEY+cmASHcFtukvYZPpTAjEZtFCc/iVhQRpKx6TwSA4oCm\n7n7eLmvl+nWFsbPwtMBkiMJtsSgszUvhUGOYrqc1t4B/AA48Hd7no8CzexsoSEtg7RyTe29rBAMi\n3hCGcC/NT0VV4VhLGFZz4VkiML338dA/G2dMW+F+Zk8DS/JSWF4Qg94kGu3HRFWYNbTAqM1qYU6W\ni6q2MIQbYMX1gAoH4sPqfnpXPUEVPrMutBuYoYykAuorvhnNqqJ0DtZ3E9Az8f1UClZD/mrY/Uhc\nzAatavfw7rE2PnPWHPMHWGh0VAl3XgiBSY2l+cMByuYw3CWKAmtuhroPhdtsCjMthbuitY/9dV18\n6sxC83uTjKb5QFhfThB+7rAsbhDph3POFWIRDKElaRQIBFWe2lnHhgXZzDF7zudo2sqGW+uGPv1o\ndVE6nqEAx9tC6No4mjNvE8G4+l3hfd5A/vRhDXarwo3nFMVuEWEEJjWKMly4HNbQUwI1Vt4gJu7s\nm9pW97QU7qd21mK1KHxsdYxSnUD4NDuroWBNWB8vyU6iyu0hGI6VB3DWHdBZBcffDO/zBvFeeRsN\nXf3ccHYMhQKEqyR7sbC6QmRVUToA+2q7wjv3ik+Jqtbdj4T3eYPwDvn5y646rjgjn9wUfWXmUaG1\nFFBEL/kQsVgUFocboAQx7m/BJtj/5ymd0z3thLtnwMeTO+q4akU+OSkTj0OKKk37xWPB6rA+XpKd\nzJA/GHqVmMbSayF5Fux4KLzPG8Sfd9SRmeSITQvX0YSRCqhRkpVESoKNffVhCrczRYj3ob/GNE3z\nb/sa6R3w87lz9TV1ihqtR0QA3R5e/++l+akcbe4Nvc5BY83N0NsIFbE1aiJh2gn3n3fU0jfo5wsX\n6O+BEBUa94nH/PCEW/PN76sLUyxsDrFFL998ou+xybT0DPBGaQufXDs7NtV5Gh636NYXYmBSw2JR\nWFWYzv5wrwWIa+Hvj1ncQVVVHt1azdL8VM6cG6OgpEbLkbDcJBpL81Lo7vfR3BNip0CNRVdCch5s\n/3XYa4g100q4h/xBfv9+NefOy2JFYVpsF9O0T2STTDKubDyWF6SS7LTxYaU7/DWc+XnR8nXX78I/\nRgQ89G4lKnDL+uKYnH+Ekak3oQcmNVYVpXG0uTf00neNgjWQtzJmQcqd1Z0cbe7lc+fOjW3cxzcg\n2rmGGfsBWJKvlb6H6S6xOeDsL4g+Mi2Hw15HLJlWwv3SwUaaewa486IYW9sAjXvDtrZBZJasK85g\ne1VH+GtIzRcTQPb80fSBqe6+QZ7YXsvHVhXENigJJ9xWs5aFfYjVRRkEgiqHw00LVBQ463ZoOQSV\nW8JeR7g8urWa1ARbbOM+IFxWajAii3vxcOl72AFKgHX/AHYXbPtV+MeIIZMKt6Iov1cUpVVRlENm\nLChcVFXlN+9UsjA3OTbTPEYzEpgMX7gB1s/LoqK1j7beCLr9nX2naDx16JmI1hIqv/+gigF/gH++\nJLQGW1Ghbrvo0JgWfk7/quEd3N5wA5QAq24UW/T3fxr+McKgrLmXlw818dn1c0l0xNBlBSd6lOSG\nfxNNTbBTmJEYXum7hisTVt8sXFe9zeEfJ0bosbgfAa6I8joi5v2Kdo429/KFC+fFdisIowKT4WWU\naKyfJ1LXtldF4C6Zex7MWgFb/8+0KHp3v4/Httbw0TPyWZCbYso5J6RuhxjvFgG5qQkUpCWwvz6C\n4KLNCed+UQx2rt8d0XpC4Webj5HssHHnhXGwE209ImZ+ZkZ2Q1+Slxq+q0Rj/T9B0A87Ho7sODFg\nUuFWVfVdIIL9evRRVZWfv1FOboqTj62OYRmvRoSBSY0zClJJclgj83MrClz4deHnNanU97Gt1fQO\n+uPD2u6uh576iIUbRFpgRAFKgHWfF+1eTbK6DzV08+rhZm6/oIR0l8OUc05IyxERa9Ax83MiluWn\nUNnWR89ABFNtsuaLHva7fidmw04hDPNxK4pyp6IouxRF2dXW1mbUYXXxyqFmdtd08i+bFsU2e0Ej\nwsCkhvBzZ7K9MsL75tJrxdb0nR9G3er2DPr53QdVXLokl+UFMQ4Qg7C2AYrOjvhQq4rSqe3wht61\ncTTOFOG+OvoitB6NeE2T8dPNx0hLtPMPG0qifi5dtB6JKNagccGiHIKq6AAaEed+Sbg29/wx4jWZ\niWHCrarqQ6qqrlNVdV1Ojnk+5iF/kP995SiLZ6Vw/boYF3loRBiYHM36eVmUt/bR3heBn9tigYu+\nYYrV/au3K+jy+vjypfqHFUSVuh1gS4S8FREfavVwIU7EVvc5d4nA2Ac/j3hNE7G7ppO3jrZy54Xz\nSE2IUT/60XRWQ08DzF4X8aHWzskgM8nB5iMtkR1oznqYuwHeuw8Gw6yMjQFTPqvksW3V1HZ4+fer\nlmKNVe+F0RgUmNTQ+iVPBau7qt3Dw+9V8om1s0dELubUbYfZZ4bcL2YsVsxOw6LA3kiFOykL1n5O\nBMai1DNDVVV+/NpRspIc3HZecVTOETKVw1Pv510U8aGsFoWNS3J5+2grvkAEbR0UBS77NnjaplSG\nyZQW7i7vEP/3VgUXLMzmolhnkmhogUmDLO4zZqdF7ueGqFvdqqpy7wuHcdqs3HNl6KXMUWHIK/rF\nzIncvw2ikf/ygjTeiXR7DrDh/4nKwc3/FfmxxuC5vQ18WNnB3ZsWkeSMzJ9sGFXviKyaMAuhTuWy\npbPoGfCzM5KUWYCis8S0oq33g6fdkLVFGz3pgE8C24DFiqLUK4pye/SXpY+fv1FO74CP/7gq/JxQ\nw9ECkxFmlGjYrRbOLM6MLLNEY+m1kLsc3vyO4eO03ixtZUtZG3dftjC2fTBG07hHZA0YEJjU+Njq\nAvbXdYXfcEojZRZc8DUx2kyzRA2iwzPE914qZe2cdG4+O4YdGUejqiKbpuTCsPrFjMWFi7Jx2Cxs\nLo3QXQKw8b9Fr+5374v8WCagJ6vkRlVV81VVtauqWqiqamzK8E7hw0o3j26r5uZz5o4MEY0LDApM\njmb9vEyOtUTo5wZhdV/xA+iqgQ9+YcziEINnv/PiERbkJvO5eNmWg3CTgOjDbBDXrirAosDf9jZE\nfrD1/yy+K6/9u6Huq++/XEpPv48ffGJl7Fq3nkprqXBHGOAm0XA5bGxYkM3mIy3h9y3RyFkkBi3s\n/K1wdcY5U9JV0jvg4+tP72dOpotvfjROtuUgfnxV70Jh5BkMo9mwQAzXffWQAYUC8y4SsxDf+6lh\nPUx++OpRaju8fPua5bGbNjQWdTvEttzAm2huagLnL8jmuX0NkYuFPQE2fUdUU+41Jqtha0U7z+yu\n5x8vmjdSYRgXVA3vKkqME26ATctmUd/ZT1k4gxVO5eJvisEnr/1H5MeKMnH0K9PP914spbGrn59+\nehUuR5z47wBqPxTNjJZcZehhV8xOY3lBKo9tq45cLAAu/54I1r16T8SHerO0hT98UM1t5xWzIVbT\n28dCVYXFbUAa4Kl8fM1s6jr62V1jwDiyZdeJ3ulvfQ/6Iwt69gz4+OZzBynOcvHljXGS1aNR+Y7o\nCJhubObXpcOj8DYfNsBdkloAF98jUjWP/C3y40WRKSfcb5a28NSuOu68cD5nzo3RhOrxOPoiWJ2w\ncJOhh1UUhc+dV8yxlj62HTfA151aIAKVx16FslfCPkxz9wBff3o/S/NT4ycgqeGuEBk+Bvq3NT6y\nPI9Eu5VnjXCXKApc8b/g7YjoRhoMqnztL/tp6OznvutXkWCPg3oGjYAfaj4Q/m2DyU1NYHVROm8Y\n4ecGkdedvwpe+rq4JnHKlBLuyrY+/uUv+1mSl8L/2xRnFoWqQumLMO9iUWRhMNeuKiDDZefRbdXG\nHHD9P4lG9i99LawvaCCocvdTexnwBfnlTWviSyhAuKwAitYbfugkp42PLJ/FSweaGPQb4JsuWC0C\nlfufhNIXwjrEr985zuYjLfzHVUtZVxxnBk3jXhjsMdxNorFp2Sz213dT0WpAHrbVBtf+UuycX49O\nxo8RTBnh7vQMcfuju7BaFB66ZV18VEiOpvkAdNfC0qujcvgEu5Ubzp7D5iMt1Hca0OnPaoePPwh9\nrfD3L4fUalRVVf7npVI+rOzg3o8tZ35OcuTrMZqDT4vS6uzo3OCvWzOb7n4fbx81qEr4wn8Vlt4L\nd0NfaMd8r7yNn7xexrWrCuInZ3s0VVvEYxQsboAbzioiyWHlZ5uPGXPA/JWw4W7Y96e4HbYwJYR7\nyGS54S0AABHvSURBVB/krj/tpqGrn4dvPTP2bULHovRFMctu8UejdorPrheTS/70Ya0xByxYA5d9\nS7h4dv1e98d+/c5xfv9BFbedV8z1Z4bfcS9qdFRC7TZYdYNhqWensmFBNtnJTh7fXmNM3MHmgI//\nBgZ74cW7dd9Ijzb38OUn97IwN4X//eSK2DdYG4vKd0Sjs6ToxECykp3cfsE8XjrYxKEGgyYMXfhv\n4sb/3F3Q06TrI/5AkJZwhzuESNwLtz8Q5N+e2c/2qg5+/KmV8efX1jj6kggyRenLCTA7PZHLl+Xx\n55214Tf0P5X1X4T5l4qUtJYjk779Lzvr+NGrwrr776uXxadQ7H8KUGDlZ6J2CpvVwl0XzeO98nZe\nO2xQW9DcpbDxP8WNdPuDk769vKWXmx/eToLNysO3rouvQL1Gf6fI7jEwDXAs7righHSXnR+/VmbM\nAe0J8OnHRPOpv9wK/on70wz6A3zxiT184oGt9A36jVnDBMS1cA/6A3z5yb08v6+Rf/3I4tg3gR+P\njkoxuXpJdNwko7nt/GK6vD5+806lMQe0WITLxJkCT39O/NDG4e/7G7nn2QNcuCiH+65fFT85wqMJ\nBoWveN5FkBbd78tt5xWzND+Vb//9iHE/1nO/JL5Hr/07lL8x7tsq2/q46bfbsVgUnvjCOfG5CwXY\n8xgEBsXuJ4qkJtj5p4vm886xNrZHWmWskbsErvsV1O8Q12McBnwB7nxsN68dbuGOC0pINqFSNW6F\n2zvk545Hd/HKoWb+6+plfPGSBbFe0viUvigeDU4DHItzSjK5bnUB979Vzq5qg6Leyblw/SOi8ODJ\nm8R4qVGoqsqvtxznK0/uZd3cTH5981octjj96tR9KAqMVt0U9VPZrBa+//EzaOkd4KevG+RftViE\nyyR3OTzzeWg73YI8WN/NjQ9/SDCo8sQd5zAvHmMMILJJdjwsmjgZ0ORrMm49t5jcFCf3vV5mjPsK\nYPnHxc1058Ow9/HTXu4b9HPbH3bwbnkb//uJFXz+fHO6MMblr6++08tND2/ng4p2fvSpldweLy0p\nx0JVRe+PvBWQEf3p2Yqi8N3rzmB2eiJf/fM+ur0R9CMeTfEGuO7XULsVnvtHYbkiXFX/8fwhfvjq\nUa5emc9jt58dP70vxmLfE+BIjlqQ+FTWzMng5nPm8MjWKuP8q85kuPFJsCXAE58+qX/G83sb+NSD\nW7FZLDzxhfUsnBVHRTanUvYydNfBOf9oyukSHVa+etlCdlZ38sCW48Yd+LJ7RWD1718WLtFhKtv6\nuP7Bbeys7uTnn1nNDSa2F4g74X7lYBMf/cV7VLT28cDNZ/LpeGnVOh7lm0VPjLWfM+2UKQl27r9x\nDS09A9zz7AHjrIsVn4JN34Ujz8Nr/05VWx83PPQhT2yv5a6L5nP/DXGY9jcaXz8cfh6WfQwcSaad\n9l8/soTMJAd3P7WPVqOCU+lFcMPjYqzWI1cz2NXE9148wt1P7WN1UTp//9L58VUZORbbH4S0Oabs\nRDVuPGsO164q4MevlfH0rjpjDmq1wQ1PiLTNp2+Dijf4274Grvm/92nu7ud3n1tnuhs3boR7YMjH\nzvs/yxNPPkJJdhIvfWUDV5yRF+tlTUwwCG/eCxklcOZtpp56dVE6//qRxbxyqJnvv1yKP5LWlqM5\n78uo5/wTbP812//vc1S0dPPzz6zmniuXxKdPezRH/gZDvVH3p55KWqKdX960lqaufq7/zTbqOgwa\nzFx0Ntz0FwId1TTffxl/e38Pt547lz/dcQ5ZyU5jzhEtmg6IopuzvwAW8272FovCfdevYsOCbO55\n9iBvH2015sDOFPjsX/FlLmTo8Zt48i9PsDQ/lZe/egEXL8415hwhEDfCrfZ3k9V1kEcdP+av5xxn\nbpZ5FlPYHHpG9JnY+J+G9HsOlS9cMI9b1s/l4feq+NwfduCOsAmVqqq8ebSVa8uv4gH/tdxgeYNt\nC5/guhVxVMo+HgM98Ma9Iu1s7gbTT79+XhZ/uuMcurw+rn9wGxWtkffOqHV7+dqudG70fp2cYDvv\n5NzHdy5Ki69+MOOx/TdiWMTaW0w/tcNm4cFbzmRpfgr//Pge/ryjlmAwsl3pgC/AL7e1c0nLV6kN\nZvMn54946vxG8tMSDVp1aMTNNyAxLZuCf9mCZf7F2F76Crz53ZCKQkzHPyT6S+StgOWfiMkSLBbh\n7/7Rp1ays7qTa3/5Aa8eag7Z+u4fCvDC/kY+9qsPuP3RXXQP+Mn/5A9QN32XxPK/w+PXg8egSH20\neOt70NsE1/xCBPhiwJo5GTz1j+vxB1Wuuv99vv9yachjzlRVZW9tJ198fA8X3/c2f9/fwFkXX431\nlmdxDbnhoYuh6r3o/AOMwn1cFECtuhESM2KyhGSnjT/cdjYrCtO459mD3PDQh2HdTOs6vPzo1aNs\n+OFb3Pf6Mc5YuADnF17FVrQO67O3wzs/jolOKYb5R0exbt06ddeuXeF9OOCDl/5FpBEtuRquuV9M\nDIk3djwML38dbv4rLLws1qvhYH03X3xiD7UdXmanJ3LTOXO4dGkuJdlJp1WZBoIqlW19HG7s4a2j\nrbxR2oJ3KEBhRiJf2biQj6+dfcKq2/cEvPBVSMqBT/1ejHqKNxp2w8OXim35R38c69XQ0NXPT14r\n47l9DbjsVm48ew7nL8hm7dwM0hJP3pmpqkp73xBHmnp4+2grbx5toa6jn5QEG59dP5fbzitmVupw\nf/P2cvjzTUIYP/J9EfSLtzx6/yD89jIRlLzrg6inZE5GMKjy9O46vv/yUbxDfi5cmMOmZbO4dOks\nclJOdzcN+YMcqO/iw0o3H1S4+bDKjQJsXDKLOy4oYf28YS3yD8LfvwIH/gxnfAqu/ikkRDZjVVGU\n3aqq6prrFn/CDeIO9uGv4Y1viTv2dQ/AgtiL4wjt5fC7TSJl67YX4+bH4w8EeaO0lce2VbN1uBmV\n1aIwN8tFitPGoD/IUCBIY1c/Az5hlWe47Fy5Ip9rVhZwdknm2OPfGveKoExXHVz6X3DulyOe0m0Y\nAT88fLHIvPjiDkiIn97s5S29/PyNcl473Iw/qKIoUJThItFuxWGzEAiq1HZ4R3LAnTYLGxZkc+nS\nWVy7umDsfOCBHlHNV/YSLL4KrvoJpOab/C+bgJf/DXb8Bm78Myy+MtarGaG9b5AHtxzn1cPN1HeK\nISJpiXaykh1kuhz0Dfpp7xvE7RkaMaCX5KVw+fI8bjiriIL0MVwiqgrv/xTe+h/RuO26ByIq65/6\nwq3RfBD++gVoKxVZGxv/C5JjPKKspxF+d7nIYLj9dciaH9v1jEN1u4f99V1UtPZxrKWXfl8Qp82C\nw2ZhVkoCywtSWT47lQU5ydj0+EwHukU61JG/CffQVT+NSsvUkFBV2PzfYuTUp/8Iy66N7XrGoX8o\nwL66LnZVd1De2segP8CQP4iiKMzJdDE3y8X8nGTOKs4k0aEjkBcMwoe/Eu4hqxMu/y6svTX2BkTp\ni/DUzWJAxBU/iO1axkFVVUqbetlyrJXm7gHcfUN0eIZIctrISXGSk+xgWUEa55RkkpHk0HfQ+l0i\nhdZdIf7tl30bbKEHj6ePcIMoBnnruyK1yO4SXdTOuUuUpJpNfyf84aPQVSssbYPGk00ZVFUI96vf\nhN5GWP1ZuPgbYoqL2QSD8Oo3YMdDIqPn6p/HXrjMxn1cuLGq34OCtSJIPn9jbP4/1O0QsZCMYmHQ\nhCFcU5ohr/AQNOyBf3gtrB3p9BJujfZy0Wbx2CuQki/8e2feZl7wo7ManrlddAG8+WnRvnWmMtgH\n7/4Itj0AqLDyBjH8Ntuk6taAD/72RTjwFJz3ZZF7PtNEW0NVRYn/2z8Q3SnnnAcXfg3mbTQnSKuq\nokHZK98Q/uxbnofMOC6Yiza+gbCNyukp3BqV7wi/UuUWsCfBqs+IZkKFZ0fnixoMCGv/re+J7n/X\n/Tput+Sm010PW/8Pdj8igjXzLhJW+NKrxQTzaFD9gZiM3rBbuM4u+NrMFe3R+Idgz6Ni2G1fs7B8\nz/y8yOxImRWdc3o7xLXY+ydYsAk++XDMskimA9NbuDWaD8K2/9/evcVIXZ5xHP/+2C5IXFBRDgUF\ni5AqnoBY0yakwbQxtr2wTRtTLxrv7IUmrfGGeKM3Xnq4sU00ni5sjUlPNjG1jT3phQq2tmCpKyVA\noevuoiIgLMsyjxfPf9NxZwcG9jD/+c/vk2xm+C9LXt5595l3nv/7Pu9juVNu7DhccFnumFt9E6z6\nytR3zo18nGmBN5/IWfbamzOvO81HL1XC0SHY+mSuQPl4H8xbCGu+ln225utZC2UqajXYvzXfsPt/\nBwuWZ1732u9NT/urZOxEHsaw7WnY+xqgPAXoym/lyUyXfHHqE5yP9sLrP8mVXyePZQnUzVtmdaNN\nFXVH4B534gj8+6XcDLP7z3BqFOb0Zv552bWw7BpYsi7v+vYty7rHE0Vk/npwR+742v8m9L8MYyNw\n8Zo8RPSa73pmdya1WuZbt7+QpQCOFsdJLVqdOdjlG/Lw3otWZV682ax85HDe6PlgV55k0/8yfDKU\nbwib7snTe2ZqRl8lw+/m5GPnb3PyAXDehXlTefnGPGTi4jU5Oz/vgsnH98kROHwgX4s9r8Ke12Dg\nH6AeuO62TFUtuWpW/1tV1V2Bu97osawOt/sveVDs4Dt5ZFK9+YuyeE9Pb84QRg5n0I66+tYLlucM\n5frbYcVGB+xzUavB4Hb4zx/zrvv//p4BoF7v+fnJaF4fRC1X6pw8/tnXbN7CnLWPzxinuFa2ax3a\nlxt3/vs67HsDDvYDdb/76sk0x/hrEZGz6WN1G6965sKlX8olbxt+0PY12lXTvYF7oogcsAf7cxnf\nkYH8WH/qRN7gqo1lIJh/UQb0JVfCsuvbv+Swqo4OZ+3yQ3vz4/bIIRg9mjc75/TkG2rvfOhb+v/Z\n4KIrJv+UZFNz8ni+Fgffy3sVxz/MID36SQZxzcmVIQtXZIC+cGXO0ueWtO53BZxN4C7JLooZIuXH\n8lkot2ot6FucXyun/+R1O0u982Hp1fllHac0tUrMzKw1LQVuSbdIelfSLklbZrpRZmbW3BkDt6Qe\n4DHgG8A64HZJ62a6YWZmNrlWZtw3ArsiYndEjALPA7fObLPMzKyZVgL3CqD+DKD9xTUzM2uDabs5\nKelOSdskbRseHp6uf9bMzCZoJXAfAOr3eV9aXPuMiHg8Im6IiBsWL/Y6aDOzmdJK4N4KrJX0BUlz\nge8DL85ss8zMrJmWdk5K+ibwKNADPBURD57h7w8De8+xTZcAB8/xZ6vKfdLIfdLIfdKok/pkVUS0\nlK6YkS3vUyFpW6vbPruF+6SR+6SR+6RRVfvEOyfNzDqMA7eZWYcpY+B+vN0NKCH3SSP3SSP3SaNK\n9knpctxmZnZ6ZZxxm5nZaZQmcLsC4eQk7ZG0XdLbkkpwOsXsk/SUpCFJO+quLZL0B0nvFY9ddUpt\nkz55QNKBYqy8XSzj7RqSLpP0J0n/kvSOpB8V1ys3VkoRuF2B8Ixuioj1VVzW1KJngFsmXNsCvBIR\na4FXij93k2do7BOAR4qxsj4iXprlNrXbGHBvRKwDvgzcVcSRyo2VUgRuXIHQTiMi/gp8OOHyrcCz\nxfNngW/PaqParEmfdLWIGIiIvxXPjwA7yYJ4lRsrZQncrkDYXAC/l/SWpDvb3ZgSWRoRA8Xz94Gl\n7WxMidwt6Z9FKqXjUwLnStLlwAbgDSo4VsoSuK25TRGxkUwj3SXpq+1uUNlELo3y8ij4KXAFsB4Y\nAB5qb3PaQ1If8AvgxxFxuP57VRkrZQncLVUg7EYRcaB4HAJ+RaaVDAYlfR6geBxqc3vaLiIGI+JU\nRNSAJ+jCsSKplwzaz0XEL4vLlRsrZQncrkA4CUnnS1ow/hy4Gdhx+p/qGi8CdxTP7wB+08a2lMJ4\ncCp8hy4bK5IEPAnsjIiH675VubFSmg04Z1uBsBtIWk3OsgE+B/ysG/tF0s+BzWSlt0HgfuDXwAvA\nSrIS5W0R0TU365r0yWYyTRLAHuCHdbndypO0CXgV2A7Uisv3kXnuSo2V0gRuMzNrTVlSJWZm1iIH\nbjOzDuPAbWbWYRy4zcw6jAO3mVmHceA2M+swDtxmZh3GgdvMrMN8CjIdUyIsKztUAAAAAElFTkSu\nQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "y = integrate.odeint(f, x0, t, args=(a,b,c,d))\n", "plt.plot(t, y)\n", "plt.legend(['rabbit','fox'], loc='best')\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Optimization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Scalar valued function" ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def f(x):\n", " return 3 + 4*x + 2*x**2" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.linspace(-4, 4, 100)\n", "plt.plot(x, f(x))\n", "pass" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/plain": [ " fun: 1.0\n", " nfev: 5\n", " nit: 4\n", " success: True\n", " x: -1.0000000000000002" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "optimize.minimize_scalar(f)" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.linspace(-4, 4, 100)\n", "plt.plot(x, np.cos(x))\n", "pass" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "data": { "text/plain": [ " fun: -1.0\n", " nfev: 9\n", " nit: 8\n", " success: True\n", " x: 3.1415926536439596" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "optimize.minimize_scalar(np.cos)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Provide bounds for bounded search" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "data": { "text/plain": [ " fun: -0.41614319477908951\n", " message: 'Solution found.'\n", " nfev: 27\n", " status: 0\n", " success: True\n", " x: -1.9999959949686341" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "optimize.minimize_scalar(np.cos, bounds=[-2,0], method='bounded')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Provide brackets for downhill search" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "data": { "text/plain": [ " fun: -0.99999999999999989\n", " nfev: 8\n", " nit: 7\n", " success: True\n", " x: -3.1415926702696373" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "optimize.minimize_scalar(np.cos, bracket=[-1,-2])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Vector-valued function" ] }, { "cell_type": "code", "execution_count": 88, "metadata": { "collapsed": true }, "outputs": [], "source": [ "d = stats.multivariate_normal([2,3], np.eye(2))" ] }, { "cell_type": "code", "execution_count": 89, "metadata": { "collapsed": true }, "outputs": [], "source": [ "x = np.linspace(-1,5,100)\n", "y = np.linspace(0,6,100)\n", "X, Y = np.meshgrid(x, y)\n", "z = d.pdf(np.c_[X.ravel(), Y.ravel()]).reshape((100,100))" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAD8CAYAAABXe05zAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXV0VNfah58zkmTi7m6EBAmuLS6lQKlQ11u/lUv91lvq\nvXVvb92o0RYrxb0ESNAQSELc3WYyPvv7I9Cv7b1czoQJEDjPWlkLss7eZ0/mnN95z7tfkYQQKCgo\nKCj0HlQnewEKCgoKCs6hCLeCgoJCL0MRbgUFBYVehiLcCgoKCr0MRbgVFBQUehmKcCsoKCj0MmQJ\ntyRJ/pIk/SBJ0kFJkg5IkjSqpxemoKCgoPDf0cg87nXgVyHERZIkuQGePbgmBQUFBYX/gXSsBBxJ\nkvyA3UCiULJ1FBQUFE46cizuBKAB+ESSpIFADvAPIYThjwdJknQTcBOAl5fXkLS0NFevVUFBQeG0\nJScnp1EIESLnWDkW91AgCxgjhNgmSdLrQLsQ4tGjjRk6dKjIzs52Zs0KCgoKZzSSJOUIIYbKOVbO\n5mQlUCmE2Hb4/z8Ag7u7OAUFBQWF4+OYwi2EqAUqJEnqc/hXk4C8Hl2VgoKCgsJRkRtVcgfw1eGI\nkmLgup5bkoKCgoLC/0KWcAshdgOyfC8KCgoKCj2LkjmpoKCg0MtQhFtBQUGhl6EIt4KCgkIvQxFu\nBQUFhV6GItwKCgoKvQxFuBUUFBR6GYpwKygoKPQyFOFWUFBQ6GUowq2goKDQy1CEW0FBQaGXoQi3\ngoKCQi9DEW4FBQWFXoYi3AoKCgq9DEW4FRQUFHoZinArKCgo9DIU4VZQUFDoZSjCraCgoNDLUIRb\nQUFBoZehCLeCgoJCL0MRbgUFBYVehiLcCgoKCr0MRbgVFBQUehmKcCsoKCj0MhThVlBQUOhlKMKt\noKCg0MtQhFtBQUGhl6EIt4KCgkIvQyPnIEmSSoEOwA7YhBBDe3JRCgoKCgpHR5ZwH2aCEKKxx1ai\noOAEQghMnWb0LQYMbZ10tndiaDdiMpgxd5oxGcxYzVZsVjs2iw2H3fGn8WqNCrVWg0arxs1Di7un\nO+6e7ui8PfD01eHlq8PT1xOfQG88PN1P0qdUUPjvOCPcCgonBEN7J3WlDdSXN1Jf3khDRSPNda00\n17TQXNtKe2MHbY0dWM3WE7IeNw8tvkE++IX4EhgRQGCYP4ER/oTEBBMa2/UTHh+Czlt3QtajoCBX\nuAWwUpIkAbwvhPigB9ekcAbgcDioLamnLK+SsrxKyg9UUnWolupDtbTWt/3pWLVGTWB4l1iGxgaT\nOjgR32BffIN88AnwwsvPE09fHTofHTpvD9w93fHwdMPNww2NW5dVrVKrkCQJ6LLWHXYHVosNu9WO\nxWTB1GnB3GnGqDdh7DBiaOvE0NZJR4uBjqauB0VbYztNNS2U7C2jubb1P6z4gDA/IpPDiUqJIK5v\nNHHp0cSmRxMWF4JKpWwnKbgOSQhx7IMkKUoIUSVJUiiwCrhDCLHxL8fcBNwEEBsbO6SsrKwn1qvQ\nCzHqjRzaVUphTjHFe8soyS2nbH8FZqPl92OCowKJTo0gMimciKRwIhJCCY0LITQ2mIAwv1NO+Ox2\nOy21rdSXN1JX1khtST3VRbVUF9VSWVBDc03L78d6eLkTnxFDfL9YkgbGkzIkkaTMeMUFo/AnJEnK\nkbt/KEu4/zL5E4BeCPHS0Y4ZOnSoyM7OdmpehdMDIQSVBdXs/62A/VsOciCrgPIDVRy5zvxD/Ujo\nH0tCv1ji+3WJWWzfKLx8PU/yyl2LvtXQ9Taxv4KS3HJKc8sp2VdOW2MHACqVRFxGDOkjU0kf3YeM\nMX2ITAr//a1A4czDpcItSZIXoBJCdBz+9ypgvhDi16ONUYT7zEEIQWluOXs25LFv0wH2bcyjpa7L\n1eET4EXfUan0GZpM6tAkUoYkEhQRcJJXfPIQQtBU3UxBdjEFOUXk7zjEgaxCDG2dAARFBtD/7HQG\nnNWXAeMziE2LUoT8DMLVwp0I/HT4vxrgayHEM/9rjCLcpzetDW3s+HU3O1fvZeeqvTTXtgIQEhPE\ngHHpDDg7g4wxfYjpE3nKuThONRwOB2V5lezfks/ejfvZuyGPpuouN0twVCCDpwxgyJSBDJ02EN9A\nn5O8WoWepEddJXJQhPv0QghBWV4lWxdnk7UshwNbCxBC4Bfsw+ApAxg8eSCZEzIIjw892Uvt9Qgh\nqCmuY/faXHJW72XX6r10tBhQqVVkjOnDyHOHMGr2UGL6RJ3spSq4GEW4FY4bIQQFOcVsXpjF5p+2\nUVlQA0DK4ARGzRrGiJmDSR6UoFjUPYzdbqcgu5htS3PYuiSb4r1dm/5x6dGMvWAEZ104ksQBcYpL\n5TRAEW6FblORX8W6BVtYu2AzVYU1qNQqMidkMPaCkYyaPZTgyMCTvcQzmvryBn5blM3mn7axb2Me\nDocgtm8UEy8/i4mXjSUiMexkL1GhmyjCreAU+lYD677ZwspP13Fw+yEkSWLg+HQmXn4WY+YMxzdI\n8a2eirTUt7H5x22s/XoTuZsPApAxpg/Tr5vI2XNH4emjJAT1JhThVjgmQgj2/5bP0vdXsumHLCwm\nK/H9Yph6zQQmXDqa4Kigk71EBSeoK2tg3YLNrPxsPRX51Xh4uTNu7mhm3TqVPsOST/byFGSgCLfC\nUTHqjaz+YiNL3ltJyb5yPH11TLr8LKb9bSKpQxIVX2kvRwjBgawCfv14Heu+2YzJYCZlSCIzb57K\npCvG4q5Tkn5OVRThVvgPGqubWfTmcpa+vwp9q4HkQQnMumUqEy4bo9TYOE0xtHey5stNLHlvBaW5\nFfgF+zDr1mnM/vs0AsL8T/byFP6CItwKv1ORX8U3L/zM2q824bA7GHPBCC6cN5P0Uam9zroWQtDR\nbqSpUU9zU9dPa0snHe1GOjqM6NtNdHZaMBotmIwWLBYbVqsdm9WO3f7n61ytltBo1Wi1atzcteh0\nWnQ6N3Q6N3x8dfj4euDjq8M/wIvAIC8CAr0JDvHB28ejV/7d9m7MY+GrS8lakoPGTcPUq8dxyQNz\nlM3MUwhFuBUo3lvG188uZOP3Wbh5aDnn+klcMO/cU/5GFULQUNdOeVkjlRXNVJU3U1XVTF1NG/V1\nbZiM/1kRUKWW8PXR4e3rgaenOx46LR4ebrh7aNFqVWg0h4tMHTkHYLc7sNvsWK0OzCYrJpMFo9FK\np8GMvsNER7sRh+M/7w2dpxthYX6EhvsRFRNIdEwg0bGBxMQFExzic8qLekV+FQtfXcbKT9dhtzuY\ncNkYLvvn+cSlx5zspZ3xKMJ9BlOWV8Fnj3/LpoXb8PTRMfu26Vww71wCQv1O9tL+A7PZSklRPYUH\nazlUUEtpcQOlJQ10Gsy/H6PzdCMqOpCwCD/Cwv0IDfMjOMSHwCBvAoK8CQjwxNPL3eWC6XAIOg1m\nWlsMv1v3jQ0d1NW2UV/bRm1tG9WVzX96kHj7eBCXEEx8YigpqeEk9wknISkUN7dTr3pyY3UzP7y8\nhGXvr8JstDDhsjFc/cTFRCVHnOylnbEown0GUlNSx+dPfMeaLzeh8/bggnnncsG8c/EJ8D7ZS/ud\n+to2cvdWkJdbSd6+SooO1eE47MLw8fEgPimU+MQQEpJCiY0PJiY2iIBAr1PWihVC0NSop7K8ibLS\nRkqK6ikraaCkqB6Dvuvho1arSE4NJ71/NOn9oug3MIbgEN+TvPL/p62xne9fWsyit37FYrYy7doJ\nXPX4XEKilaiiE40i3GcQ+lYDXz+zkJ/fXI5KreK826ZzyQNzTonY69YWAzt3lLBnZxm7c0qpruqq\nweGh09I3I4q+GVGkpEWQkhpOaLjfKSvQziKEoLamlUP5tRQcrOHA/ioO7q/CbLYBEB0bSOaQeDIH\nxzNoWAK+vid/c7i5toUFz/3EsvdXoVKruPCumVz6zznKxvUJRBHuMwC73c7yD9fy6aMLaG/SM+Wa\ncVz31KUnNf7a4RDkH6hm22+F7NhaRGF+DUKAl7c7/TNjGTQkgQGZsSQkhaLWnFmp8jabnaKCOvbt\nKWdXdim5e8rp7LSgUkn06RvJsJFJjBybQnLqyS3tWltaz8cPf826BVsIDPfnb89ezpSrxymlDU4A\ninCf5hzcXsgbf/83hTtLGDAunVtfuZbkQQknZS12u4N9u8vZvOEgWzbk09jQgUolkZYRxbCRSQwb\nkURyn3DUauXG/yN2m4P8A9VkbytiR1YR+QeqEQLCwv0YM64PY8elkTEgBpXq5Ih4XlYB7939KQey\nCkkflcodb99AcubJucbOFBThPk0xtHfy8UNfs+TdlQRG+HPLy9cw7uLRJ9xCE0JwMK+adav2s2Ft\nHs2NetzdNQwdkcSYcX0YMSbllHj97020thjI2lLIlg355Gwvxmq1ExLqw/jJGUyYknFSLHGHw8Gq\nzzfw4QNf0t6s5/w7Z3DN/EvQeXmc0HWcKSjCfRqybVkOr9/6bxqrmjnv9ulc+9SlJ7xrTHOTnlXL\n97Ji6R4qypvQuqkZPiqZCVMyGD4qGZ3O7YSu53Sl02Ama0sh61bvJzurCJvNQXxiCNNnZjJ5en/8\n/E/s997Rouejf37Fsn+vJjwhlLvev5nBkwec0DWcCSjCfRphaDPwzl2fsvLT9cRnxHD3h7fSd0TK\nCTu/EII9O8tYtDCb3zbl47AL+g2MYdq5AzlrfBpe3qeO9WV3OOg0WegwWjCYLJgsViw2OxarHbvj\nz419NWoVWo0aN40aDzct3jo3vHXueLm7nTT3xH+jvd3IxrV5rFi2l4P7q9BoVIwdl8Z5c4eR0T/6\nhFrhezfm8cqN71FVWMOsW6Zy44tXKpuXLkQR7tOEPRv28+I1b9FY1cylD8zhyscuQuumPSHnNput\nrF6+j59/2EFpcQM+vjqmzxzIObMGERN34jdArXY71Y3tVDS0Ut3UTl1LB7XNHTS06Wnu6KS5w0ib\nwcjxXs6SBP5eOgJ9PAnw8STU34uwAB8iAn2ICPQlJjSAyCBfNCfBZ19SVM/yJbtZ+cseDHozyanh\nnHfRUCZO7XfCYsXNRjOfPPINP762jIikMP75xZ0n1JA4nVGEu5djt9n5Yv73fP3Mjyf85uhoN7J4\nYTY/f7+D1tbO38VhwpQM3N17/qHhcAhK65opqGzgUHUTh6oaKa5toqapHfsfMhk1ahVh/t6E+HsT\n5OtJoI8n/t46fDw98PZww8vDDZ279nerWqNW/W6dCiGw2R1YbHasNjtGsxWDyYLeaKbDaKalw3j4\nYdBJfaue+hY9tj9Y7BqVishgXxIjgkiODCY5KojUqBBiQwNOiLVuNFpYs2Ifi77PprSkgcBgby68\nZATnzhmMl9eJKSL1R6Piuqcu5eL7z1MiT44TRbh7MY3VzTx3xevs3ZDH1GvHc/sbfzshr6NtrZ18\n99VWlvyUg7HTwvBRyVx85SgGZMb26Ot4u8HE7uJqdh2qYn9pLQfK6zGYLACoVRJxYQEkRQQRGxpA\nbKg/sWFdFm+Qj9cJc2nYHQ6a2zupamqjrK6V8voWyutbKKpppryuBcfhe8hb5056bCgZ8eEMTo5i\nQFIkPj1YjU8Iwc4dJXz31VZ27ijBy9udOXOHceElI/A5AZvD+lYDr93yPhu+28qQqQP55xd34B9y\n6mXo9hYU4e6l7Nt0gPlzX8akN3Hnuzcy5apxPX5OfYeJ77/eyo/fbcdssjJ+cgaXXjWaxOSeqWli\ntFjZdaiKrLwytudXUFjVgBBdFnSf6BDS48LJiA8jLSaU+LAA3LSnXrr4HzFbbZTWNnOgop680jr2\nl9VSWNmIzeFAJUmkRocwPC2GUX3jyEyOwr2HPk/+gWq+/eI3Nq0/iJe3O3MvG8n5Fw/Hs4ctcCEE\nyz5YzTvzPsE/xJfHF96r1P/uJopw90KWvr+Kt+74iPCEUJ748T7iM3q26I/VamfJj9l8+fEmOjpM\njJ+UzpXXn01cfLDLz1XfqmfDniLW7SliZ2ElFpsdN42agUmRDEmJZkhKNBnx4XicgjU9uoPRYmVf\ncQ05hZXsLKxiT3E1NrsDD62GoX1iGD8wiXEDEgny9XL5uYsP1fH5hxvZsjEff39Prr5xHDNmDerx\nhKfCncU8eeFLNNe2cve/b2HylWf36PlORxTh7kXYbXbemfcJi99ZwbDpmTz09Ty8/V1/Qx9BCEHW\nlkLee2MV1ZUtDB6WwI23TSI5Ndyl52lo1bMip4CV2fnkltYCEBcawNj+CYxKj2NQchS6E7TRerLp\nNFnYeaiKrXmlbNpXQmVjG5IEAxMjmTq0D1MHpxLo4tDOg3lVfPDWGvbtLicuIZib75jCsJFJLj3H\nX2ltaOOpi19h74Y8Lr7vPK5/7nLF7+0EinD3EowGE89e9hpZS3OYe88srn/+CtRqdY+dr7amlbdf\nWUHWlkJi44O5+Y7JDBuZ5DIfttFiZXVOAUu3HSC7oAIhIC0mlEmDUpiQmURCeOBpU4+kuwghKKxq\nZP2eIlbvKuRQVSNqlcTwtFhmjkhn4qBkl7lThBBs2ZjPv99aQ3VVC2dN6Mvf503p0SJXNquNd/7x\nCUveW8n4S0Zz3ye34eahxPfLQRHuXkBLfRuPzHyOQzuLuf3N65l167QeO5fNZueHBdv48uONSCqJ\na24Yx5y5w9BoXPOQKKhsYOGmfSzffgC9yUJMiD/nDE9j+tA+xIefnK7wZpuNTqsVk82G2W7Dav9z\nHLdWrcJDo8FdrcFTq8Vdc3LcNEXVjfy6I5/lOw5S3dSOn5cHM4b35cKz+pMY4ZqwS4vFxvdfZ/H1\np5tRa1Rce+N4zrtoaI+VIRBC8MPLS/jg/i/oNzaN+YseOKWqVJ6qKMJ9ilNf0cgDU+bTUNHEw9/c\nxahZsr6rblFa3MCLTy2iML+WMeP68Pd5UwkNO/6df4dDsHl/CV+t2cmO/ArcNGomD07h/LH9GZwc\n1WOWtc3hoKajg7K2VspaW6nu6KDeoKfOYKDeoKfNZKLNbMZkszk1r06jwc/DA38PD0I8vQj18ibM\n24soH19i/fyJ9/cn3NsbdQ+9+jscgh0FFfy0eR9rdx/CZncwOj2eKycPZkSaayJ7aqpaePPlX9mR\nVUR6v2jue3Q20TE992Bd/+0WXrzmLaL7RPL8ikcIDA/osXOdDijCfQpTWVjDA1PmY2jr5OmlD9Jv\nTFqPnMdud7Dwm218+sF6vLzcufO+czhrQt/jntdqs7M0K48vVudQWtdCWIA3l4zP5Pwx/fFzcQ2L\nDrOZffV15NbXcbCxkfzGRopamrHY7b8fo1GpCPH0Iszbi1AvL/w9dPi5u+Pr7oGXm/Z3q1qrVv+p\nA47Vbv/dGjdYrLSZTbSZTLSaTNQbDNQZ9DQYDNj/cH+4q9WkBAXRJyiYPsHB9A8No19oGF5urnUF\ntHR0snDzPr5bv5vG9k6SI4O4eupQpg9NO+7EHyEEa1bk8varK7BabNxw2yTOu3Bojz1od67ey+Nz\nXiQwMoAXVz1GWFxIj5zndEAR7lOUqkM13DP+cexWO8/9+kiPVfRrbtLz3BM/szunlDFn9+Ef988g\nIPD4NjytNjtLsvL4aPl2aprbSYsJ5ZopQ5k4OBmti/zyNR0dbKuqYGtFBbtqayhqbubI1Rnu7U2f\noGBSg4JIDAgk1s+POP8Awry8eswKtjsc1Or1v1v3xS0tFDQ1kt/USL3BAIBKkkgODGRIRCQjomMY\nGR1NqJdr3AIWq42VOQV8vjqHQ1WNxIT4c+OMEUwfdvwC3tjQzsvPLiV7WzEjRidz3yOze6wGSt7W\nfB4+9zm8/T15ecN8QmNcH7l0OqAI9ylIbWk9d497DHOnhZfWPUFCv9geOc/O7BKef+JnOg1mbrt7\nGtNnZh6XNeVwCFblFPD24i1UNrbRLz6cm88dyeiM+OO20sw2G9urqlhXWsz60hJKW1sB8HV3Z0hE\nJJnhEQwMD6d/aBgBulOrJkZTZyf76uvYU1vL7toacmqq0Vu6EoeSAgIZH5/AxIQEhkZGHfeDzeEQ\nbNhbxAfLssivbCA+LIDb54xlwsDj21gWQrDoh2w+eGs1/gGePDT/AvoN6Jkw1PzsIu6f/CT+oX68\nvP5JgiNPzt7HqUyPCLckSWogG6gSQsz8X8cqwv1nmmtbmDf2UfQtel5c83iP1DUWQvDdV1v56N21\nxMQF8+jTFxKfeHyvpXuKq3n5+w3kltaSGh3C7eeNYcxxCrbZZmNDWSlLC/JZV1KMwWrFXa1mZHQM\nY2PjGBkdQ1pwcI9Z0T2FzeEgr6GebZWVbC4vY1tVJRa7HR83dyYlJjIztQ9jY+NwOw4RF0Kwbk8R\nby/aQkltM4OSo7h37jj6xh5fslRhfg1PPbyQuro2/j5vGrMvGNIjrpO8rfn8c9rThMYG88rG+fgG\nnvwuTacSPSXcdwNDAV9FuOVjaO/knvGPU1VQw4trHu+RmiNms5VXnlvK2pX7GT8pnbsfmnlcJVZb\nOjp5/afNLN66n2A/L+44bwznjkjvdoq5EIId1VV8v38/K4oK0VssBOp0TEtKZmJCEqNjYtBpT6+Y\nboPFwpaKctYUF7Gy6BBtZjN+7u6ck5LK3PQMMsMjui2ONruDRb/l8s7i32g1GLnorAHcNnsMvsex\nx2DQm3h+/iKyNhcyY/Ygbr9nOlqt60NT96zfz4PTnyZlaBIvrHwUD88TU1ulN+By4ZYkKRr4DHgG\nuFsRbnnYrDYePvdZ9qzP46nFDzBs+iCXn6OttZNH7/uWA/uruO7m8Vx29ZhuC4IQgmXbDvDyDxsw\nGC1cOXkwN5wzAs9uxuG2mUx8n5fLgn37KGltwdvNjenJKcxK7cOomFg0vcyq7i4Wu50t5WUsLcjn\n10OFGG02UoOCuLRffy7sm4GPe/fEq8No5r0lW/l2/W78vXXcf8l4pgxO7fb373AIPv1gPQs+30Lm\n4DieeH5uj5Tt3fjDVp6+5FVGnzeUx364V0nSOUxPCPcPwHOAD3DvfxNuSZJuAm4CiI2NHVJWVubU\nok9H3rjtQ5a8u4J7Pvo706+b4PL562paefCuBdTWtvLgE+dz1vjuR6g0tOl56svVbM4tITMpkkeu\nmNztOOLytlY+2bWT7/P202m1MiQikkv69WdGSiqePWRZ620m6oytNFsMtFoMtFgM6G0mTHYrJrsF\ni+PP4YFuKi0eai06tRveGnf83bwIcPMiwM2bCJ0/npqesQT1FgtLCw7yTe4+9tbV4e3mxmX9+nNN\n5mAifbrnOsivqOepr1aTV1bHpEHJPHT5ZAKOozDZquV7efnZpcQlhvDsy5cSFOx6l8ZPb/zCO/M+\n4dIH5nD9c1e4fP7eiEuFW5KkmcAMIcTfJUkaz1GE+48oFjcsfmcFb97+IRffO5sbX7zK5fOXlzZy\n/51fYTZbmf/CxfTP7P5m59rdh3jqy1WYLFbunHMWl4zP7JZbpKi5mde3beWXwgLUksSsPmlcP2gI\nfUNcEwImhKCys5lD+lqKO+oo1tdR0dlEtbGFdqvxv45RSyo81FrcVJo/hQNa7DaMdgsO/vv176f1\nJEIXQKxXEIneYSR5h5HsE06kLsBl/t89tbV8tCuH5YUFAJyX1pc7ho8kzt/f6blsdgdfrs7h3aVb\n8fV054mrpzEmI77ba8veVsSTD/2Af4AXL75xBRGRro3BFkLw+q3/ZtkHq7j/09uZcnXPF1Q71XG1\ncD8HXAXYAA/AF/hRCHHl0cac6cKdl1XAPeMeY+i0TJ746T6Xp7GXlTRw3x1fAvDC61eQkBTarXks\nVhuv/riJb9fvpm9sKE9fdw4J3ch0LG9r5Y1tWfx88AA6jYYrB2RybeYgwryPLyzO4rCR21pOTnMJ\nua0V7G+r+JNAR+oCiPcKIUIXcPjHn0A379+tZx+tBxpJfVShFUJgFXY6rMbfrfQms55aUys1xhaq\njS2U6RuoMbX+PibAzYt0v2j6+ccwJDCRfn4xaFTH9/1Wtbfzye6dfL1vLzaHg7npGdw2fGS3LPCC\nygYe+WQ5h6qbuGbqUG6bPabboYP5edU8ePcCPHRaXnrzSiKjXRsJYrPaeHD60+RtLeDNrOdIHBDn\n0vl7Gz0WDqhY3MemvamDWwbfh1qt4p2cF12e6lta3MB9t3+BSq3iX29eSWw3q/nVtXRw3wdLyS2t\n5fKJg/jH+WehdTIFvt1s5s1tWXy+ZxcqSeKqgZncPGQYQZ7djweu7mxhff1+shoL2dVcitlhRUIi\n0TuUDP8Y+vnFkOobQbxXSI+5M/6KwWamRF9Pfns1+9sq2N9aQYmhAQBPtRuDAhMYGZzC+LAMwjy6\nn5Vab9Dzzo7tLNi3F0mSuGHwEP4+bITT7iWTxcbLP6xn4aZ9DE6J4sUbZna7iNWhglruv/MrPDw0\nvPTWVS4X75a6Vm4ZfD86bw/e3vH8Ce+jeiqhCPdJQgjBUxe/zNbF2bz+2zOkDnFtNbbamlbm3fwZ\nQgheeuuqbrcQ219ay13vLabTZOHJq6cxabBzkS5CCBblH+DZTRtp6uxkbkY/7ho5utsWdo2xhV+r\n97CuLpeD7dUAJHiFMCwomWFBSQwOTMBHe2rFcbdZOtnZXMyO5iK2NR6iorMJgAy/aCaE9WN65EBC\nuyniVe3tvLx1Cz8fPECEtw8Pnz2Oc5JTnHbRLN2Wx7NfrSHAx5PX/n4eKVHde8gXFdZx/51f4unl\nzmvvXeNyn/fejXncN/EJJl11Nvd/crtL5+5NKAk4J4nlH63hlRvf48YXruTi+85z6dytLQbm3fIZ\nba2dvPLO1d12j6zdfYhHPl5OgI8nr//9PJKdvJkr2tp4cM0qfqsoZ2BYOE9OmMiAMOdLwprsVtbV\n5bKkMofs5mIA+vnFMCE8g/GhGcR4nfi+lsdDqb6e9XV5rKvbz4H2KlRIjAhOYWbUYMaFpeOmcr6I\nVXZ1FY+vW8uBxgYmxCfwzKTJhHs7J5p5ZbXMe7frIf3CjTO77ffOz6vm3ju+IDIqgJffvhpvH9dG\nm3z62Dd89fRCHvnmLsZdPNqlc/cWFOE+CdSVNXBDv7tIG5HCCysfdWmIk8Vi477bv+RQQS0vvHFF\nt7PbFv3uEEaZAAAgAElEQVS2n6e+XEV6XBiv3XqeU6/PQgh+yNvP/A3rkCSJ+8ecxeX9B6By0gps\nNuv5oTyLhRXbaLEYiNQFMDNqMDMiBxPpeXoUIaowNLGseifLqnZSZ2oj2N2HubGjuCBmOH5uzrkC\nbA4Hn+7exStbt+CmVvP0xMnMTO3j1Bx1LR3Me2cRRdVNPP236Uwd4tz4I+RsL+aRe79hwKA4nn35\nMpc2Z7BZbdw97jEq86v5KO81AsKc36Dt7SjCfYIRQvDQjGfI3XyQD3NfdWkhHSEELz2zhJW/7OWR\npy9g3MT0bs3zzbpdvPjdekb2jePlW2Y51cSg3WziwdWrWH6okBFR0bw0dTpRvs7VdK7ubOGz4vUs\nq96FxWHjrJA0Lo0fw5DABFTS6RnH6xAOtjUe4uvSLWxrKsRDrWVW1BCuSRzntBultLWFu1csZ3dt\nLeen9WX+hElOFbfSG838451F7Cmq5tErp3De6AxnPw4Avy7dzcvPLmXO3GHcdpdrSxGXH6zilsx7\nGXXeMB799m6Xzt0bcEa4T49eUSeZ9d/+RvaKPdz2xt9cXv1s8Y85rPxlL1f97axui/aCtbv41/fr\nmTAwieeun+FUH8fCpiZuWrKIqo52HhhzFjcMHuJUOnqLRc/HRetYWL4dCZgZPYTL48YQ5+26v5PN\nYaHFUkGLpQK9rRG9tQG9rRGTvR2Lw4jF0YnNYfrTGK3KA63KEzeVJzq1L16aYLy1wfhoQglwi8bf\nLRqN6viq/qkkFaNCUhkVkkpRRy1fl27hx4rtLK7M5uK40VyTOA5fmb77eP8Avpt7KW9tz+Kt7dvI\nra/n/VmzifeX95birXPnrTvO5573lvDkFysRCOaM7uf0Z5o+M5PSogYWfruN1LQIppwzwOk5jkZs\nWhRXPjaXTx5ZwLarcxhx7hCXzX26oVjcx4mp08zf+v4D/xBf3tz2nEtD//IPVDPv5k8ZMjyR+S9e\n0q3Y6p9/y2X+F6uYkJnM8zfMcKrg0ZriIu5asRwPjYZ3z53NkMhI2WOtDhvflm3lo0NrMTmszI4a\nwt+SJx5X1AV0iXS9qZBa0wFqjXnUm4pot9Yg+P9GCRrJA29NEDqNP24qT9xUOjSSBxxx6wiBTZiw\nODox2w0Y7e0YbI3YhPn3OSRU+GkjCPVIIVzXl3BdX0Lck49bzKs7W/jg0GqWV+/GW+POzSlTuCBm\nuFMhhb9VlHP7L0sRQvDmjJmMjZUfRmex2rjrvcVsO1DOc9fPYMqQVKc/g93m4IF5X5GfV82bH/7t\nuGvi/BGb1cZNA+5BCMEHe19Ge4a0twPFVXJC+fyJ7/hi/ve8smE+/c86/nrXR+g0mLn5mn/jsDt4\n99Mb8PVzPkxqw94i7nlvCcPTYnnt1tlOWdqf79nFk+vXkREaxvszZxPhREzx3pZyntn/IyX6esaG\npHFnn+nEe3dvMxWg1VJNqX4bpYZtVHbuwS6sAPhqwwnzSCXQLY5A9zgC3GLx1YbipvJyOgJDCIHZ\noafDWkezpYJmcxlN5lLqTQV02OoB0EjuRHsOJN57BAleI/B1636fzsKOGl4/uJztTYdI9YngkX4X\nkOYXJXt8eVsrNy1ZRFFzM89OmsLcDPnWs9Fs5bY3fyS3tJa3bj+f4WnOJ281NXZwyzUf4uev452P\nb8DN3XUv79t+2ckjM5/jpn9dzdx7Zrls3lMdRbhPEE01LVybcgfDzx3scp/cay/+wi+LdvLKu9d0\nazOysKqR6/71DXFhAXx498Xo3OVZLkII3t6xjVe2/sbUpCRemz4DD428sWa7lXcLV7GgdAthHn7c\nlz6bs0K7l4avtzZS0LGeg22raTAfAiDALYZ4r+FEeQ4gXNcXL82JKQ2qtzZSazpAZeceSvXbabN2\nhSyGeaSR5juJVN/xeGqc31gVQrC2LpeXDiyl1WLgmsRx3JA0Ubb1rbdYuG3ZEjaVl/HI2eP526DB\nss/d0Wniupe+pbHNwOcPXEZsqPPr35FVxEN3L+DiK0Zx422TnB7/v3hoxjMcyCrks0NvnjFVBBXh\nPkG8fusHLP9oLR/lvUpUcoTL5t2ZXcIDd37FRZeN5OY7Jjs9vkVv5MrnvsZmt/PFPy8n1F9efLUQ\nghe2bOKDnGwu6JvO85Onyi4EVWZo5MHdX3Ooo5YLYoZzR59z8HIyQUYIQXnnTnY1/0CZIRsQhHqk\n0sd3Ioneo/F3k++q6SmEELRaKinW/0Z++1oazEVIqEjwHsGgwIuI0g1w2tpvtxp59cAyllXvJN0v\nmmcHXiY7wsZss3HXiuX8eqiQu0eN5vbhI2Wft7KhlatfWIC/t47PH7gMb53zCU2vvbCMXxbv4rX3\nryW9X7TT449G8d4ybhl0HxfdPZOb/nW1y+Y9lVGE+wTQUNnE1Um3cc71k7jznRtdNq/FYuPmqz/A\n4RB88MVNuMu0lI/gcAjmvbuIbQfL+fiei8mIl/86/8a2rbyWtZUr+g/kyQkTZYf6ra/L48m936NV\nqXms/0WMddLKdgg7+e1r2dn8PY3mYjzVgfTzn0Ga32QC3FwnBj1Bk7mUg22r2d+2HKO9jVCPVIYE\nziXZ52xUknP7HWtq9/FM7k+oJImnBlzCqBB5/mebw8EDq1bw08EDPHzWOK4fLH9TL6egklte/4FJ\ng1J47voZTj90Og1mbrjiPXz9PHn7o+tdGiL4/FVvsOWn7XxZ+g5+wT3Xmf5UwRnhPj3jsE4AP7y8\nBCHgkgfmuHbeBVlUljdz+93TnRZtgC/X5LA5t4S7LzzbKdH+au8eXsvayoV902WLthCCj4vWcf+u\nL4nzDuHz0bc7JdpCCArbN/JFyfWsrHkBIRxMCb+P65K+ZFTItae8aAMEucczJvQG/pb0NRPD52Fx\ndLK8+hm+Lr2ZYn0WzhhGk8L789mo2wj18OOunM9YULpF1jiNSsULU6ZxTnIKz2zawE8H8mSfc0hq\nNLfOGs3KnAIWbt4ne9wRPL3cufnOKRQV1rH4R9caa5c9eD6mTjM/vfGLS+c9HVCEuxsY2jtZ/tEa\nJlw2xqXhfy3NehZ8voWx49MYNtL5dPnimibeXvwbEzKTuXjcQNnjtpSX88T6tUxMSOS5yVNlibZD\nOHj14DLeK1zFOZGZvD/8RsJ18pMmGk3FLCy/h1+q56NGw8yoJ7ki4d+k+0877siNk4FG5U5//5lc\nnfAx50Q+jF3YWFL5CD9X/pMWc4XseWK8gvhoxC2MC0v//e8rR/w1KhWvTDuHUdExPLhmFbtqqmWf\n89qpwxjZN5ZXfthAdVOb7HFHOHtCXwYPS+CLjzai7zAde4BM4tJjGH3eMJa+txKLyeKyeU8HFOHu\nBqu/2IhRb2LO7ee4dN4vP9mM1WLn+lsnOj3W7nAw/8tVeLprefiySbJfecvbWrlj+VKSAgN5bfoM\nWT5tu3DwTO5PfFP2G5fGjebx/hfhrpb3dmAXVrY2fMaC0ltpspQyMWwelye8T5JP9xtAnEpIkopU\n3wlcmfAhZ4f+nTpjPl+V3sSOpgU4hP3YEwA6jRvPZl7G7OihfFy0jlcOLpUl3u4aDW+fO5Nwb29u\nXbaEOr1e1vlUKolHr5yCSpJ4+qvVTr0lAEiSxE23T0avN/Htl785NfZYnHf7ObQ1drDh+60unbe3\noyTgOIkQgqXvryRlSCJ9hiW7bN76ujaW/byTc2ZnEh3jfLTEot/2s7e4hvnXTpOdym6127njl2U4\nhOC9mbPxlpGJJ4TgpbwlLKnK4fqkCdyUPFm24LZZqlle/Qx1pnzSfCdzdtit6NTHF9f9/+tygL0Y\nbIfAVoSwFYG9FhzN4GgB8RcRU/mAFACqQFCHI2mSQZMImlRQH38jZLWkYVDgBaT6jmd93Zv81vAR\npfrtTI98EB/tsUMj1ZKKhzPOx0vtzoKyLbiptNzRZ/oxx/l76Hh/5nlc+N0C5v36C19ecJGshKmI\nQF/uPP8snv9mLSuzC5g2zLm0+KSUMCZO6cdP323nostGuqxj/KCJ/YjpE8nS91Yy5SqlZvcRFOF2\nkoPbD1GaW8G8925y6bw/frMdgeDSK50vsNNhNPP2oi1kJkVy7nD5seRvbc9iX30db82YKTsD79Pi\nDSys2MZVCWdzc8oU2ecq0W/j1+pnkZCYEfkYKb5nyx57NIStCMwbEZYdYMkG8f91s1FHgyoSNCld\n4qzygd9bKTjA0XFY1JvBkoMwLfn/sapAhHYYktswcB+HpOl+nWgvTSDnRj3OwbbVrK17na9Lb+Hc\nyMeI9so85lhJkpiXNgOLw8YXJRsJ9fDlkrhjXx99goN5fNwEHli9ko937eTGIbL2u7jwrP78vCWX\n13/axLiBSXi4OScPl10zhjUrc1n0ww6uvsE1IitJEudcP4kP7v+CsgOVxPU99fc9TgSKcDvJik/W\n4eHpzvhLx7hsToPBzC9LdjF+UjphEc4X1/lsZTatBiNvzj1ftqWY11DP2zu2c0HfdGakyIteWFub\ny7uFKzknMpPbUqfKXl9u6zLW1L5GiHsiM6OePK7EFeFoBuNShPEnsO3v+qU6FjwmI2mHgrYPqBOQ\nVM5ZfMJh6LLYrQcPPwh2IMwroONphHYgku588JiBpOpe8aM0v8mE6dJYWvkYP1U8wJSI+0nzO3bs\nsyRJ3Js+i0ZzB68cWEasZ7CsaJOL0jNYU1LMy1u3MCkxicSAYz+Y1SoV98wdx42vfM8363Zx7bRh\nsj7bEeISQhg5NoVFC7O59KoxLkvKmXz1OD566GtWfrKuR7pJ9UYUH7cT2G12Nv+YxchZQ1xa8H3t\nylyMnRbmzB3u9Ng2g4lv1+9m8uBU0uPCZI1xCMHj69bi7+HBo2ePlzWmwtDEU7kLyfCL5pF+F8gu\nDJXd9C1ral8lzmsYc+Ne67ZoC1spjrZHEPVnITqeBkDyeQgpZAOqkNWo/J5F8rwASZvhtGgDSCov\nJG1/JM+5qPxfRBW6Dil4DZLP/SCMiPYnEPVn42ifj7BVduszBLhFc3Hcm0R69mNFzfPsbVksa5xa\nUvHUwItJ9A7l8b3fUWc69gaiJEk8NWESbmo18zesle23HpISzej0eD5fnYPRbJU15o/MuWgY7W1G\nNq0/4PTYoxEQ6sfgKQPY8P1Wp/3vpyuKcDvBvk0HaGvs4OyLRrl03qU/7yQ5NZy0dOcTTL5ZtwuD\nycIN54yQPWZx/kFyaqq5f8xZ+Hkcu66yzWHn4T0LUEsqns28DK3M2tI5Td+xpeHfpPpMYFb0k2hV\nzjdDEPY6HK33IRqngfFn0F2IFLQEVfBPSF7XIqldl/j0VyRNDJLXDUhBS5CCfgbdudD5LaJxCo62\nhxH2JqfndFd7cV70syR4j2Rd3Rvsa1kqa5yH2o3nMy/H4rDx6J5vcQjHMceEeHlx18jRbCwrY21J\nsew13njuCFr1xm6FBw4amkBkdABLf97p9Nj/xbi5o6gra6AgR/7nOJ1RhNsJtv+yE41WzdBp8kPt\njkVJUT3FhXVMmznQ6Q0xq93Ows37GJMRL7u7ic3h4I1tW+kbHMJF6fJKe35btpWD7dX8M2MOETp5\nvvBDHZvZ3PBvUnzGMS3yn6gl52LShRCIzu8QjTPA9Ct4XY8Usg6V33wkbffqSXcXSZKQtOmo/J5D\nClkDnleA8WdE4zkI42KnrUCNyp1zox4n3msE6+reOJwlemzivEO4p+8sdreUsrgyR9aYqwZmEu/v\nz6tZv8le58DESDKTIvluw24cDuc+m0olMX1mJrl7KqitaT32AJmMnDkESZLYsXyXy+bszSjC7QTZ\nK/fQb2waOm/XtdFauyoXlVrqVsnWDXuKaGwzOBWzvST/IKWtrfxj5ChZ8dp1pjbeP7SKsSFpTAqT\nV8iowVTMiurnCffow9SI+53OIBT2BkTLdYj2R0CbjhS8FJXP/Uhq15bM7Q6SOhyV7yNIwYtAE49o\nuxfReivC0eLUPGpJwzmRDxPoHscvVfNpschzv8yMGszggATezF9Oi+XY4X4alYo7ho8kr6GBVcVF\nstd38biBVDa0se1guewxRxg/uetaXr9qv9Njj4ZfsC8pQxLJXrnbZXP2ZhThlkl7cwcl+8rJnNjf\npfNmbSpkwMBYAgK9nB67fPtBQvy8GC2zHZUQgk927yQlMIgpifISfD4+tBa7w8G9fWfJeiOwOSys\nqHkWN5UnM6Pno1E5Wa/EVoRomguWnUi+85ECPjuuqI6eQtIkIwUuQPJ5CMybEE0XI2zOiZyb2pPZ\n0U8joWZF9fOy4rwlSeL+jNkYbGY+L94o6zyz+qQR5ePLp7vluy8mZibjo3Pnl+3O+6ojIgPo0zeS\nrZsLnR77v8ic0I/87YcwG83HPvg0RxFumRzI6roI+43pXrW7/0Z9bRulJQ0MH+18PHiH0cyW/aVM\nHpwqu7HB3rpacuvruXKAPLdMVWczi6tymBMzTHbRo6zGz2gylzIl4l6nq/cJ6z5E02WABSloAZLn\npUincHccSVJ3+dkDvwBHK6L5UoS1wKk5fLVhTAy/kzrTQbKbvpE1JtE7jGmRmfxQnkWjqf2Yx2tU\nKi7vP4CsykoKm+T55d20GiYOSmb9niJMFpusMX9k2KgkDuZV0d7W6fTYo5Expg82q51Cxc+tCLdc\nCrKLkCSJ1GGu69y+e2cpAEOGJzo9dmteKRabnalOFML/8UAe7mo1c9LkxXp/V9aVrXZNoryY3HZL\nLbuaF5LuN514b+ciZIStHNF8A6i8kQK/QdJ2r7XWyUByG4wUtABQIVquR9hrnRqf6juBZJ+z2dG0\nAIOtWdaYG5ImYnHY+bFiu6zj52b0Qy1J/HxQvgU9eXAqBpOFnAL5KftHGDoiEYdDsHe3866Wo9F3\nZNe1nr9DvsvndEURbpmU7CsjMjkcnZfrulvn5Vbh6eVOfKLzTQay8srx0bnLLiTlEIIVRYcYH5+A\nj/ux3Rdmu5Vl1TsZH5Yuuz9iVtMXSJKKUcHXyjr+CMLRhmi5ARBIAR8haZwv7H+ykTTJSAEfgtAj\nWm7sigt3gjEh12MXFnY0fS3r+BivIEYEJ7O4Mhub49gulmBPT0ZGx7D8UIFToYHuWjVbD5TJOv6P\npPSJQKtVcyC3yumxRyMg1I+AMD9K9rnuYdBbUYRbJqX7K4nv173u6kcjP6+atPTIbrUkyy6oYGif\nGDRqeV9hbn0d9QYD05LluWV+ayyg3WpkTrS8JAy9tZGDbavo7z8Tb628CJcjiI4XwV6JFPAukibB\nqbGnEpI2Dcn/TbAVIPRvODXW3y2KdL9p5LYuw2TvkDVmTvQw6s3t7GwukXX81KRkSltbKWmVF+3h\n4aYhMymK7ALn49bd3DQkp4ZzMM91wg0Q3y+Wsjzn3wBONxThloHD4aC2pJ6opO5n/P0Vu91BeWkj\nCUnOW9ttBhOVjW30T5C/nu1VXTfQyGh5D5/N9Qfx0XgwJFCeG+dA+0oEDgYGnCd7TQDCmgvGH8Dz\nKiS33t8cVnIfC7qLoPOLrpR8JxgQMBu7sJLfvlbW8aNDUnFXadjckC/v+JiuN5kdVfKFuF98OEXV\njd3yc8cnhlBW0uj0uP9FZFI4NcV1Lp2zN6IItwyaa1uxmq2EJ3S/b+Jfqa9tw2KxEZfgnHUKcLCi\nqwdi31h5mZIAO2uqifH1I9xbXhuobY2FjAhOkd1GK79tLZG6/vi7ye+bCCA6XgVVAJL37U6NO5WR\nvO8GycNpqzvUI4Vg9yQOtq2WdbyH2o0hgYlkNcrbEE0MCCBIpyPHiZKvfePCsDsEhVUNssccIS4h\nhLbWTtpaXbdBGZ4QSltjB4Z2183ZG1GEWwZN1V0xukFRrutxWF/fFQ3QndokFfVd64kPk98nsLCp\nib4h8h4SjaZ26s3tDPCX52s22JppspSS4C2/bRaAsFeDZTPoLkNSnT59BSV1UJfVbVrdVVvFCRK8\nR1Bnysdsl+cj7+8fS5mhEYPt2CFykiSRGhQsO7IE/v8aq2xwvk53WETX3kh9nfNjj0bw4Xuwuca5\nuPnTDUW4ZdBS2+UTDAzvXoGh/0bjYeEOCXG+JVNlYxtajZoQP3m9JG0OB2VtrSQGyHvwFHTUAJDq\nKy8Fv6pzLwDRnk5mlBoXAwJJd4Fz43oBku4iwArGZU6Ni/bMROCgxigveSXVNxKBoPDwd3YskgMD\nKWqR/zCJDOoS36pG58X3yLXdUC/PZy+HwIiuB0lzreuyMnsjxxRuSZI8JEnaLknSHkmS9kuS9OSJ\nWNiphL61y/rxDpAnlHLoaO/qFOLn73wWZoveSKCPTvamZovRiM3hIEKmm6TG2HVTRHvKE/oWS9dm\nUbC7c2GNwrob1ElIGtdu+v43ft5VxZjn15Lwz2WMeX4tP+9y7abZX5G0qaAK7/qMThDi3hVueuRv\neiyOfEe1RnlCFu7tg95iwWiVV0DKw02Dt86dFr3zrgnfw9e2vsPo9Nij4RPQlahmcGF8eG9EjsVt\nBiYKIQYCmcB0SZKceyfu5Rj1XSKr83ZdKKDB0PVqq/N0vrN2R6cZH0/5a2k2dt04QZ7yquY1mTuQ\nkAh0k/egarfW4qUJcr7lmDUPtM6n+jvLz7uqePDHfVS1GhFAVauRB3/c1+PijbZv12d0Ag+1L1rJ\ng3arvFjwYPeuh3GTWZ5VG6jrEtMj14QcfD3dae90PlvR8/C1bdC7LtPxyD1odGGLtN7IMYVbdHGk\nKIL28M8ZVVvRbu2Kk9U6WVj+f2GzHZ5T61wdDwCL1Y6HVv5aTLauiAAPjbwxJrsVd7VG9sakxWHE\nXdWNtxFHK6hct+F7NP61Ih+j9c+xzkarnX+tkBeN0W1UYX9u7iADSZJwV/tgccizKD01XeJotMvr\nyajTdhX7OnJNyMFNq8FidT6q5Mi1feRadwXaww20rd2IcjmdkOXjliRJLUnSbqAeWCWE2PZfjrlJ\nkqRsSZKyGxqc34FWOEM5AX0mq1v/u3V5tN+7jp7/bM6eoTsr6u6nOB16iJ6qyBJuIYRdCJEJRAPD\nJUn6jzJxQogPhBBDhRBDQ0JOfhU3V6I6nORi64bVcTTUh+e0245dV/mvaNQqrE5YMW7qLsvHLNPK\n0qrUWB127DJqPgNoJDfZFuKfUHl19YPsYSKPso9wtN+7DEcLSM4XD7M6jGgkeS40k73LVy23RrrZ\nfvhNT2biFoDVZkejdv7N8Mg1qnbiXMfiyD2o1pzZcRVOfXohRCuwDjh219LTiCN+NZPBdb66I/6/\nzm74Dn2c9DkG6LrW32KS5xcMcvfBLhy0WuSFpPlqwzDYmrALJx9smjSwuq5TytG4b1ofdH9xSem0\nau6b1sN1vW0HQCO/ByiA2a7H7NDjq5UXo9942Ld9xNd9LJqNXQ/YQJ38LkEdRjM+3diLMR6+Xzy9\nnB971DkP7zd5+vTwQ/cUR05USYgkSf6H/60DpgAHe3phpxKevl0XiSt3sr19ui7mjnbnX9f9vXW0\n6Dtl15wI8NAhAXX6Y9dvBgg7XJukRmakgp9bFAIHrTJrSv+OdkBXeng3Osk4w5xBUTx3QX+i/Lv+\nDlH+Op67oD9zBjmXLOQMwl4F9jIkrbwa5kdotnTV4fBzkxeKeSSaRG49mTq9AQ+NBi+tvMYWVpud\njk4zft2o0XMkcsrLlZv6h5N5dGe4cMt5v4oAPpMkSU2X0H8nhJDXb+k0IeBw/LYrY0eDQ7ospMaG\nDiKjnUvsiQryxWSx0dJhJFBG70t3jYZoXz9KWuW5JVJ8utqBFbRX08//2KF6Uboucars3EOQe7ys\ncwBIHjMRhnfBtBi8rpM9rjvMGRTVo0L9Hxh/BCTQzXRqWGVnV/hgpE6e4Od3dGVBHvnOjkVxSzMJ\n/gGy/c81zR04hCAqWN6D4Y80Nna9DYSEui65qrkHcip6I3KiSvYKIQYJIQYIIfoJIeafiIWdSgQd\nDvo/kkHpCkJCu26EulrnExuiQ7ou2rJ6+etJDgwkv1Fe3YgInT++Wh25bfJiiX21EfhowijVyysx\negRJmwLagYjOrxBCXlREb0A4OhGd34LbaCS1cw+LMn02Qe7xeGrkZcXub60gwsMffzd5ro+CpiaS\nA+UbCkeydKO7IdxHru3gbiSZHY2m6q7kocBuZByfTpzZHn6ZBEcFotaoqS1xXXGb8Eh/1GoV5WXO\nF+HpE921+XuwvF72mMERkRQ2N9FqOrZrRpIkhgcls7WxUFZTWkmSSPUdT5lhBwabc24PyfsOsJdD\n5+dOjTuVEYYPwFHvdP2VVks1Vca9pPpMkHW8zWFnW9MhhgfLq/hY1d5Ojb6DwRHym1IfOHyNpUQ7\nH3BQXtqIp5c7QcGuS1yrLanHy88THxcmw/VGFOGWgVqjJiwu2KVVybRaNdGxgZQWOx86GeLvTbCf\nF7ll8gv2D4vqsvy2VcrzQ48NSaPJ3EFem7wklQy/6Qgc7G9dLntNAJL72eA+AaF/G2ErdWrsqYiw\n5oPhQ/CY5XS1w9zWZUioSPebJuv4nc0lGGxmxobI68q07XBVwCPXghz2l9USFxqAj875DcbS4npi\n44NdGhZYU1JHeELoGR9qqAi3TGL7RlOW53xd4v9FSp8I8vOqne4SDjA4OYod+RWyx2aGR+Dj5s5q\nmQ1jzw7ti7tKy+JKeR3IA9xjiPcawc7mhZjt8jZBjyD5PApoDzcgcK4o06mEsNchWm4ClT+SzwNO\njTXYWtjTsogUn3Gy65kvqtyBj8aDEcEpso5fWXSIMC8v0oLlWc82u4OcgkoGpzq/N2C3OSjMryU1\nTZ7vXS5l+yuJS4926Zy9EUW4ZRLfL5byA1VYzPJqPMghvX80Lc0Gaqqc952PTI+jsc1AYZU8V4ub\nWs2UpCRWFRfJiuf21nowNWIAK2r2oLfKCyMcFXItZkcHOc3fyTr+CJImGingPbDXIFpuRjiO3Ufx\nVEM4mhEtN4JoRwr4AEntXEbojsYvsQsLI0OukXV8k7mDdXV5nBs1GA/1sSNE9BYLG0pLmJacgkqm\ntQ+Ja/gAACAASURBVJpbWoPeZGFUX+ebNZcU12PstJDR33Uia2gzUFfWQEK/3tchydUowi2T1CGJ\n2G12inaXumzOAYO6boicHfI6mPyRsRkJqCSJNbvkd9Ke3SeNdrOZFUWHZB1/SdwojHYLC8q2yDo+\n1COFNN/J5DR9S53Juaa5kttgJP9XwZqHaL4CYe89xfKFrRLRdCnYSpD830Rysv5KVede9rQupr//\nTALc5AndFyWbcAgHF8bKKxu0OP8gZrud2X3kN7tevbMQrUbNiDTnhXLn4Wu6f6brRPbg9q7r9v/a\nu+/4pqv9j+Ov03TvvQeUMlo2LVD2EBBUUES8IqJct9fr3jhxL67inlccoCIoqOy9RylQaKGF7kH3\nbpomTXJ+f1S86E8kKSnQcp6PBw9B8v3mG9q+c3K+n/M5MQOs36O1o1HBbaHYIS0blabtsF0Je2SU\nH0HBXiTtsn7zU38vN+K7hbN2n+V7CA6PjCLKy4uvUyzrWNfNM5TRQXEsyt1OjcGyGvZRQf/Cxd6b\ntSdepdlsXY26cB6P8PkETIXIymlI/f/rrHDBkfotyKprwFyF8F3QsgOOFfSmBtYWv46XQwjDAm+z\n6JjypjqW5u9mYmg/otzOPK0ipeSbQweJCwigf7BlUxdms2Rd8jGG9exkVUOzk5J2ZdK5SyABgbar\nKDmy8xhCCGITLZsa6shUcFvIP9SXkOggUrZY1ifZEkIIEod3JXlvNo2tWJU5MaE7eWXVHMq2rBez\nnRDM6tuf5OITJBVZdtPxjphxNJma+fDYGose76zxZHzIo1QZClhz4jWkhcvmTxJOwxC+i0C4IKtn\nYa59Bmm2bs78XJDmGsw1j7ZMj9j5Ify+t/pmpFmaWHniBRqay5kQ8hiOdpYtKpmfvhKzlNwaM9ai\nx2/JyyW9ooJZffpZfFNv19E8ymu1TBxo/erSmmoth1LyGTzMsmoXSx3cnEp03yjcLFi70NGp4LZC\nwoS+HNyYSrPBdvPco8f1xGAwsmOr9Z3qJg7sgbuzI4u3plh8zIxevfFzcWX+nl0WPb6LRzDXRQ3l\np8IkDlbnWnRMlFs8IwLvIKthOzvL/2vxtZ0kHGIR/j+D682gW4ysmIRsXIqUtvt3by0pDcjGb5EV\nk6DpV3D7F8LvJ4R9FyvPI9lS+gH52mTGBN9HqGtPi47bVX6MtSWH+GeX0YS7+ln0PPN37yLMw5Op\nsZZP4fywJQU/T1fG9LU+fLduPIrZJBk73rpVo3+nsV5H2o4MEiZYuVlHB6WC2woJE/vRpNWTstm6\nHst/J65XOMEhXqxdYXn4nuTi5MDkIXGsSz5GcZVlN/RcHBy4M2EgOwvy2Zxr2dz6bTGXEOLszXOH\nfqC+2bLpj/4+0+jlfQX7qr5jV/kCqytnhHDBzvNxhO/3oAlE1j2BLB+H1C44LyNwaa5FNnyKLB+L\nrHsWNJ0Qfkux87gfIazrQy6lmW1lH3GoZjkDfKfTy/syi46r0jfwYuqPdHIL4MboURYds/L4MVJK\nS/j3oMG/Nxs7k5ySKralZnPV0F442FvfXGrNihQ6dwls1UbYp5O8NgWT0cTAif1tds72TAW3FeLH\n98HF3ZltSywbrVrCzk5w2ZUDOLg/j/xc6xfj3DCu5eP5gjWWle0BzOrbj2gfH+Zu3mRRhYmrvRMv\n9L2O0qZanj+81KIQFkIwJuge4rwmsrfyG7aUvmf1tAmAcOyL8F3SMvetCUfWv4wsG4q55iGkfhvS\n2sZWVpDSgGzahLnmPmTZMGTDG2Afg/D5AuG7COFgXQMpaJkeWVcyjwPVS+nnM5XhAZbNa5ukmWcO\nLaauuZEX+16HowXdALUGAy9t20LPgECuibNsRA/w+ao9ODnYc/1Y60My4+gJjqUXc9mVtg3YrUt2\n4R3gSa/hlt9c7chUcFvBycWJxMnxbPtxj03LAide0ReNxo5ffky2+tgQX08mD4lj2c5Ui/cFdNRo\neHbUWPJqa3h3726LjunjE8k93SeypewIn2ZusOgYO6FhXPBD9Pe5hpSa5awomovBZH2jLiEEwmk0\ndn4LEb4/gMvVoN+KrL4FWRaPufq2ltGw4SCyNe1lfyPNDUjDfmTDR5irbkGWDUbW3AH63eB6HcJv\nGXa+C1rm4VuxAKTJVM/ywjkcrV3DYL9ZjAz8F0JY9iP4Tvoq9lZm8nDcFLp5WnaDcd6uHZQ0NDB3\nzFg0dpY9T9aJClYnZTB9ZF98PKyfS/556T6cnR0YP7G31ceeTmO9jt2/JjNs6mA0rfgE0BHZbkuX\ni8T4G0ez6dsd7FqexKhrh9rknD6+7oyd0JPVvx5k1i0j8PSy7gfmjsuHsGpvOm//uJU3bp9s0TEj\noqKYFtuTj/YlMaZTNPGhZ14GPSNqGFn1pXyWtZFAZy+uihh4xmOEEIwIvAMPh0C2lX3Et7l3MSns\nKQKdW1cZIBz7Ihz7Ij3ngH4bUr8VDLuR+i2/P0bahYF9NGjCwM4HYecLdh78b5xiBnNdy2IfczWY\nisCYCeZTVqLadwWXKxGOI8FpuNXTIX9WrDvCqqKX0BoruST4QYunRwAW5mzn27wdXBs5hClhlt0A\n3ZaXy4KDB5jdr7/FS9yllMxbshU3Z0dmX3rmr+2flZfVsXFtKpdfNcCmHQE3f7+TJq2eCTdZNj10\nMVDBbaUB43oTGOnPys/W2yy4Aa6dOZR1qw7z4+K9zL5ttFXHBnq7c/Olg/jgl53sSc+3uO72mVGj\n2VNUwANrVrL8upn4uPx9VYMQgid6XkWFvp5X05bhrHFgYmi/Mz6PEIL+vlcT4NyFNSdeYXHevQzy\nu4F4v3+gEa37FhTCEZwvQThfAoA0VUDzfjBmIo1ZLUFsTANzDZLTTdHYgZ0P2AWD46CWG4z2XcFx\nQEvY24DRbGBv5Tfsq/wOD4dApke9RbCL5VMsPxXsZX7GSsYG9eKB2MstGumXaRt4ZN0aYnx9eXSY\n5eWJm1Oy2H00j4enj8LH3fq2qUu+3Y1ZSq6ZYdstaVd9tp6ouHBiE7vZ9LztmZoqsZJGo+GyW8ex\nf/1hCo+dsNl5O0UHMHJsLEu/20N1lfU3324YF09koDcvfrMOnYXTOB5OTrw76XLKtFruWbUCo/nM\nc9D2dhpe6TeD/r6defbQDyzNt7zWOty1L9d3+pho96HsqviC73L/RaHWul3QT0do/BHOExDu/8LO\nex52/suxC9yNCEpDBO5B+K//46/AvYigI9gF7sLO/yfsvN9EuN+FcB5ns9DOa0hiUe6dJFUuoofn\nOK7v9JFVof11zlZeSVvGsIDuzO0zHY0F0yp6o5G7fv2FBoOBdyZdjrO9ZX236xubeOW7jXQN82f6\nKOsrN0qKa/jlx2QmTOpDsA079x1LziJ9byaX3z7+ou9PcioV3K0w6dax2Dto+PkDy2qbLfXP20dj\nMBj5+vNtVh/r7GjP0zeMp6iyjneXbbf4uL7BIbw4dhw7C/J5cetmi248uto78Xb8TQwL6M5rR5bz\nedZGi6tGXOy9uCzsaa4Im4ve1MDSgof5tfA5KvV5Fl+zNYTQIOx8EPaRf/xl523x/LK1ypsyWV4w\nh2WFT2CWJq4Kf4UJoY/ipLGso51ZmnkvYzXvZqxmXHBvXu8/EycLlrVLKXlq4wYOlBTzxvhLLe5J\nAvDmki1U1TXy7KwJOLRim7IFH28GAbNuGWn1sX/n5/fX4OzqpKZJ/kQFdyv4Bvsw6h9DWfX5Buoq\n62123vBIPyZPjWfF8v0cz7BsUc2p4ruGM2NMP77bfJAtKZavxrwmrie3Dojnq5SDfJBkWU9tJ40D\nr/efyaTQfnx8fD1PpXxHo9HyRURdPIZxY/QXDPGfTUHjfr7JuZUVRXMp1tmu1PJcklJS1HiInwuf\nZlHunRTrjjI84HZu6PwpUe6WzxfXN+t49MBCvsrZytSIQbzQ9x8W7yf5+o7tLD2axn2DhzCpq+XT\nCiv3HuWXXUeYfelA4qIs2zLtVIcP5rNhbSrTrhtMYJD1fbtPp7ywkg0LtzL+ptG4eVm/d2dHpoK7\nla57bCpNWj0/zl9h0/POvm00nl6uvPPmakwm68vn7ps6gh4RgTz71RpOVFq+ScPjw0cytUcs83bt\n4IsD+y06xt5Ow3O9p3N3t0vZUJLKP3d/SHaD5T1G7O2cGOR/A7O7fM1AvxkUaA+yOO9eFufdR3rt\nBprNljW3Op8MpkaO1q7lu7y7WZL/ICW6Iwz2m8U/u3xNvN+12NtZflMzo+4Es3d9wI7yDB6Onczj\ncVdaND0C8N7e3XycnMT1vftw72DL55hzSqp4adEG+nUJ5c4rhlh83ElGo4l3560mMMiTmbNHWH38\n31ky7xfMZsm1j0yx6Xk7AtGalqJnkpCQIPfts7yuuL2ae82b7F93iAXH38Un0HYjjfWrD/Pa88u5\n677xXP2PwVYfn19Www2vLiLE14MvHv4Hrs6WhYfRbObfK39lbVYmDw0Zxr8GDrJ4XnFvZSZPp3xP\no1HPv7tNZHpUInZWTkUYzDqO1KzmQPVS6ppLcBDOdPEYTnfPsYS79rMqBNuS0awnX7ufjLqNZDfs\nxCj1eDuGM8DnGmK9xmNvZ13vaqPZxMLc7Xx8fD0+jm683G8GfX0s68gnpeT1Hdv5ODmJqT1ieWPC\nRIu7/9Vqm7jp9W+pb9SzaM5Mgnys32Lsmy+28eWnW5j76nSGjrTd5stl+eXM7n4fo68byqNfWLch\nRXslhEiWUiZY9FgV3K2Xn17Ebb0fZPKdE/j3u7fY7LxSSp55dDH7k3L4+KvbCI8889LmP9t1JI97\n3/+J4b068+Ydky2u4202mXh03RqWZ6Rze3wCjw0bYXF4V+rreTH1R3aUZ9DXO4o5vabS2d361XNS\nminSHSa9dj3H67diMGtxEM5EuA0gym0gEa798HYMP2c3q6Q0U2UooKgxhZyGPRQ2HsQo9ThrPOnq\nMYoenuMIcYlr1fUcqyvmpdQfOVpXxNignjzec6rF25CZzGae27yJhYdTuL53H+aOtrxeu9lk4p53\nf+JA1gk+vn8a/bpY33M763gpd9/8OaMuieWJ56ZaffzfeX32e2z+ficLMuYTGGn97jvtkQruc2j+\nXZ+w8rMNfJLyJlFxZ95Y11IV5fXcfsPHBId68/ZHs3F0sr5s7rtNB3h98WauHt6bJ6+/xOJgMUvJ\n3M0b+fpQCpNiuvLGhIm4WrgruJSSlScO8Fb6CrRGPTOihnFzlzG4O7SurtdoNlDQuJ+chj3kNuyh\n3tiylZaTnQfBLrEEOXfD1ykKX8cofBzDz3pUbjTrqTYUUKnPo8qQR2lTBiW6dAxmLQBeDiF0ch9M\nZ7fBhLv1QyMs+3f5sxpDI59mrmdp/h68HF15JG4KlwT1svhrVKfXc//qlWzOzbH6DdZkNvP0F6tZ\nvS+D526cwJQhlq+qPEnXaODuWz5H26Dn029ut3rtwd/J2JfFPYOfYPpDk7nt9Vk2O++FTgX3OVRb\nUcdNXe8hNrErL6980qajwJ3bjvHsY4uZPDWeex+Z1KpzvLtsO1+sSWLWuHjuv9ryH24pJZ8fSObV\n7dvo5ufHJ5OvJNzT8umgKn0DHxxfy8+F+/B0cOHmLmOYFjHYouqIv7umGkMhJ3SplOiOUtx0hCp9\n/il12gJXjTfu9v64O/jjrPHC0c4VRztXHOycgZOvXdJsbsJgbsRg1qIz1tJgrKDBWIHOVPP78wns\n8HPqTLBLLCHOsYS49sTbIeysvsZNJgPf5+3iy+wtNBr1TIsczO0x4/CycJQNkF1dze2/LCO/tpZn\nR41hZh/Ly/eklLzy7UaWbDvEPVcN45+XDrL6NUgpeW3ucjatT+O1+TPpF9/J6nP83bnvH/E0JzJL\nWHDsnYuqE6A1wa0W4JwlL39Pbnz2Wj58cAHbf9rLiKutn5M+naEjunHtzCEsXriLHj1DmXCZ9fW1\n/75yGA06A1+vb1lOb2l4CyG4dUACXX39uHfVSiYv+oY3JkxkXLRlXfB8ndx5qtfVTI9M5L2MNbyd\nvpJFOduZ2XkEU8ITcLO3fg9DIQQ+ThH4OEXQ07vljcxoNlBjKKTKkEe1oZCG5nLqjRXUNpdQ1nT8\nt3DWAX8eoAgc7VxwtHPDWeOJu70fQS7dcbcPwNcxAl+nKLwdw1o9ov6z+mYdPxUksSh3O1WGBkYG\nxnJX1wl08bCuiuPXYxnM2bAOR42Gr6dOY3C45Z/yzGbJa9+3hPbsCQmtCm2A5Uv2sWFtKjfdNsqm\noQ2w9svNHNmZwYOf3nlRhba11IjbBozNRu5JnENVcTWfpb1l0x2oTUYzTzy4iNSUAt547wZ69rZ+\nOsZslry+eBOLt6RwzYg+PH7dWOzsLB815tZUc8/KFaSVlzGjV2/mjBiFm6N1UxJJlVl8lrmBA9W5\nuNs7c1XEQP4ROYQgF9st1jgdKc0YpeEP/89eOLZZHfepihqr+D5vJz8X7qPRZGCQXwy3xVxi8c3H\nk+r0ep7bvJFl6UcZEBLC/ImXE+Zp+SYFRpOZuV+vZcWeo8yekMA9Vw1v1SeH/UnZPPHgtyQO7cqz\nr0y36vvoTKpLa7gl7n6iekYwb/Nc7Cycr+8o1FTJeZB5IIe7Bz3O2OuH89iX99j03HV1Ou659b80\nag28/fFNhIVbv7JPSsm7y7azYO0+Lk3oznM3TsDJwfIPXHqjkbd37+KT5CQivLx45ZLxDImwfluq\ntJoCFuVuZ2NpGlJKEv27cnnYgJbNic9iGuVC0mQysLn0CL8W7SepMgs7IZgQ0pfrOw2ju6dlfUNO\ntTk3hyc3rKdM28C/ByVy96DB2FsRajp9M3P+u5Ith7K5e8owbpnUupF2bnY5D9z1Jf4BHsz/eDau\nbtZ/ajodKSVzp73B3lUH+fjgG0R0t/5maXungvs8+fLZ7/nmhSXMWXQ/Y64bZtNz5+dW8MBdX+Lq\n5sTbH92En7/1pVtSSr5cu493lm2nb3QI8+6Ygq+VH0f3FhXy2Lo15NXWclWPWJ4YPpIAN+sXRxTr\nqvmpIImVJw5Q1lSLh70zo4LiGBPUk0F+Me0uxJtMBnZVHGdzaRpby46iNeoJcfHh8tD+XBUxkEBn\n68tFi+vreXHrZlZlHifG15fXx19KPwu3HjuptLqeBz78mWOF5Tx87WiuG33m3jJ/eZ7iGu6740sk\nkvkfz7bpsnaAFZ+s4+07P+H2N25k+kOWNUrraFRwnycmo4kHRz1D3pFCPj74JkFRti1jSj9SxCP3\nfENIqA9vvHsDXt6tmwNcl3yMZ79cg4+HK2/ecQWxkdbNs+qam/kgaS+f7t+Ho0bDvYMTmdWnH072\n1t8yMUkz+yqzWHniANvK0mkwNuGqcWSQfwyD/GIY6BdDpKvfBdenQkpJjraMpIoskqqy2FORid7c\njKeDC6MC47gstD/9fTtZXcsO0GRs5vP9+/lw317MUvKvgYO4bUCC1f++KVkneOTTX9Hpm3n55kmM\n6N26TXYryut5+N9fU1vTyLz3ZxEdY/3qyr9TkFHEv+IfI25oN15Z/dRFN0Vykgru8+hEVgl3xT9K\nZI8w5m15Hkcn244c9ydl8/QjiwmL8OX1d2bi7dO6pcBH8kp46ONfqK7X8ci1o7l6eG+rwzGnuprn\nt2xiS14uIe4e3Ds4katj41rV6wKg2WxkX2U2m0vT2FVxnJKmlgqPQCdPenlH0ss7gp5e4XT1DMHd\n3nZtQy3R0NxERt0JUmsLSKst4HBNAZX6lnYHYS6+DAnoyuigngzw6Yy9Xetev95o5Pu0VD5I2kOZ\nVsuELjE8NXKUVdU80PKmsmjjAeb/uI1gXw/m3TmFrmFn3lT4r1SU1/PIPV9TUV7PK29dT68+tit5\nBdBpm7g3cQ7VpTV8dOAN/MOsX7PQUdg0uIUQEcBXQBAtt+Y/kVLO/7tjLubgBtj24x6ev+ZNJt91\nKfe+f6vNz38yvEPDfXht/kx8/Vp3M7S6vpEnv1jF7qP5jI/vxpMzLsHTzfpA3J6fx7ydO0gpLSHK\ny4u7ByUypXsPi7fK+itSSgobq0iqzCS5KpvU2kKKddW//32wszfR7oFEuvkT5upLqIsPQc7e+Dq5\n4+3ganV4Gs0magxaqgwNFOtqKNZVc0JXTa62nOz6Usr0/9saLtzVl55eEcT7RjPQrwthrmfXTVBv\nNPLj0SO8n7SHE/X1DAwN46GhwxgUFm71uarrG5n79Tq2Hs5mVJ9onr/p0lbt0g5QVlrLo/cupLqy\ngZf+M8PmoS2l5PXZ77Hhm228vOrJi34/SVsHdwgQIqXcL4TwAJKBq6SUp+0GdLEHN8DHD3/Fkv/8\nwr0f3MbkOyfY/Pz79+Xw7KOL8fVz55W3ZhDaihuW0FJxsmBtEh/9sgtfT1eemTWeoXGdrD6PlJKN\nOdn8Z9dOjlaUE+jmxo19+3N97954O1vf2/mvVOkbSKstJKu+hKyGUrIaSilqrEJnMvy/x3o6uOBu\n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\nVhRFaWf+D9BFcarV1iq0AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.contour(X, Y, z)\n", "plt.scatter([[2]], [3])\n", "pass" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "text/plain": [ " fun: -0.15915494309093864\n", " hess_inv: array([[ 1212.355, 1817.032],\n", " [ 1817.032, 2726.548]])\n", " jac: array([ 3.036e-07, 4.601e-07])\n", " message: 'Optimization terminated successfully.'\n", " nfev: 56\n", " nit: 2\n", " njev: 14\n", " status: 0\n", " success: True\n", " x: array([ 2., 3.])" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "optimize.minimize(lambda x: -1*d.pdf(x), [0,0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Constrained optimization" ] }, { "cell_type": "code", "execution_count": 92, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def f(x):\n", " return -(2*x[0]*x[1] + 2*x[0] - x[0]**2 - 2*x[1]**2)" ] }, { "cell_type": "code", "execution_count": 93, "metadata": { "collapsed": true }, "outputs": [], "source": [ "x0 = [0, 2.5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Unconstrained optimization" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "data": { "text/plain": [ " fun: -1.9999999999996365\n", " hess_inv: array([[ 0.998, 0.501],\n", " [ 0.501, 0.499]])\n", " jac: array([ 1.252e-06, -1.416e-06])\n", " message: 'Optimization terminated successfully.'\n", " nfev: 24\n", " nit: 5\n", " njev: 6\n", " status: 0\n", " success: True\n", " x: array([ 2., 1.])" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ux = optimize.minimize(f, x0, constraints=None)\n", "ux" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Constrained optimization" ] }, { "cell_type": "code", "execution_count": 95, "metadata": { "collapsed": true }, "outputs": [], "source": [ "cons = ({'type': 'eq',\n", " 'fun' : lambda x: np.array([x[0]**3 - x[1]]),\n", " 'jac' : lambda x: np.array([3.0*(x[0]**2.0), -1.0])},\n", " {'type': 'ineq',\n", " 'fun' : lambda x: np.array([x[1] - (x[0]-1)**4 - 2])})\n", "\n", "bnds = ((0.5, 1.5), (1.5, 2.5))" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "data": { "text/plain": [ " fun: 2.049915472092552\n", " jac: array([-3.487, 5.497])\n", " message: 'Optimization terminated successfully.'\n", " nfev: 21\n", " nit: 5\n", " njev: 5\n", " status: 0\n", " success: True\n", " x: array([ 1.261, 2.005])" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cx = optimize.minimize(f, x0, bounds=bnds, constraints=cons)\n", "cx" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD8CAYAAAB0IB+mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXd0W+l5r/tsVIK9gR0kWMVOUaK6qK6RNPI0TXWZGcdl\n4tg5uY595thOfByXe69X7rkr92YlPjnXidNsx5ni6U2j3gtJkRJ7LyBIAmADAaJjf/cPUJriGUkE\nSbXhsxbWUODGtz9wsF+8+/e93++VhBAss8wyyyxz76O43RNYZpllllnm1rAc8JdZZpllPiMsB/xl\nlllmmc8IywF/mWWWWeYzwnLAX2aZZZb5jLAc8JdZZpllPiPcMOBLkhQhSdJFSZIuS5LUKknSTz7h\nGK0kSS9IktQjSdIFSZKMSzHZZZZZZpllwudmMnwvsEMIUQWsBPZKkrT+Y8d8FZgSQhQA/w/w14s7\nzWWWWWaZZRbKDQO+COGc+6d67vHx3VoPAf829/PLwE5JkqRFm+UyyyyzzDILRnUzB0mSpAQagALg\nF0KICx87JBMwAQghApIk2YEkYPxj4zwHPAegUqlWV1VVLWz2yywDgB/k6dBDeEFVAFLEDV8lyzIK\nxafnPLLw4A9OE5CnEQSI0hQj3dwlcxMIvLILd9CBNziLQlKh1+Ys0tgfxR30MBtwMxt04Q8GUE7K\n5ObkLsm5rhIUMg6/B4ffizPgQQgojktDcRvyQL8sM+v34vD5cPq9BGSZ9KhYknWRt3wuN0tAlnH5\n/Lj8flw+P26/HyEEqTHRDHV2jAsh9OGMe1OfXiFEEFgpSVI88KokSeVCiJb5nkwI8UvglwCFhYWi\nrq6O5RuBZcJBCA94DiHcr4DvLKAF9f1Iukcg4n4kRfR1X//GG2+wfv16UlJSPvK8NzCGbfZNrM7X\nmfV3IBFNgu5+UqIfIkm3C4VCG/acZRFkyNVMm/0EnTNn8MhOIhTRFMdupiRuCzmRVYtyPQRFkBZ7\nN+cnLnFh8jJ2vwONQk11fCnrElayNrkKnfLGX4jzZdA5wdGxDo6NddI4YUKLIEsbzfb0FWxPW8F6\nfR4axWJ9YX46nkCAurFhTpoHOGUeoH3SBkBGhI7NmUZqM3PYlpVLSuT1PyO3ioAs02Gx0WgepXF4\nhEbzKGb7DABxSiUb01JYmZnOyow0arIzSY2JGQz3XPP66wshpiVJOgbsBT4c8M2AARiWJEkFxAET\n1xsrNjaWK1eusJzlL3OzCCHA3xgK8p53QDhBkQlR30TSPYKkyr7psRoaGqiurgYgIDuZcL2P1fka\n055zgCBGu5L8xL9CH7UftTJxQXMecXfSNnOC9pmTzAam0Ch0FMaspzR2K7nR1SglddjjXyUU5Ls4\nO3GJixOXmQk4iVBoWZVQxoakVVQnlCL5obKyksuXL4NuwadEFjLNU2aOjnVydLSDPmfohn5FbCrP\nFdWyPW0FpfHpKKSlLQYUQtBrn+Tk8ADHh/u5MGrCEwygUSipScvk+2u2sDnTSFlSym25w/g4Tq+X\nRvMol0wjNAyPcHlkFLc/AEBqTDSrMtN5Zk011ZnplKbq0agW70tSupF5miRJesA/F+x1wPvAXwsh\n3vrQMd8CKoQQ35Ak6SnggBDiieuNW1VVJTIzM3n77beXs/xlrosIjoH7NYT7VQj2g6QD7d5QNq9Z\nixRGQBEiwLTnLBbna0y4DiELNxEqAylRD5ES/TA6tXFBcx73DtFqP06b/TjT/jGUkor86DWUxm2j\nIHoNasXCM+yAHKRlppNz441cmGzCEZglQqGlJrGCDUnVVMeXoVVqPvIam82GXh+WGgCAN+jnwng/\nR0Y7OD7WxbjXiVKSWJNkZEd6MdvTVpARGb/Qt3ZDHD4vZ0eGODHcz4nhfoadoYw4Py6RLVlGtmTl\nsj4ti0i15gYjLT1jDicNJjMNphEahs10WseRhUAhSRSn6FmVlTH3SCcjLvaG40mS1CCEqAlnLjcT\n8CsJLcgqCS3yviiE+KkkST8F6oUQb0iSFAH8GqgGJoGnhBB91xu3pqZG1NfXhzPnZT4DCOH9kGRz\nBhCgXoOkOwARe24o2Xwas74O/uc//ncGzRd58jk1KkUcyZH3kxr9CDHa6gUlHzN+G23247TNnMDi\n6UNCQU5UJWVx2yiK2UiEcuESwlW55uxEAxcmPgjyaxIr2ZBUzcr40j8I8hDKgv/+7/+er33ta+h0\n80vvHX4PJy3dHBlt55SlB1fQR6RSQ21qATvSiqlNLSROswi3DNdBCEHHpI3jw/0cN/VTbzETEDLR\nag2bMrLZmpXLlqxcDDFxSzqPm5nnwOQ0daZh6k1m6ofMDM/JM5FqNVWZaazOymS1IYOqjHSitfP/\nQlpIwL/hvYIQ4gqhQP7x53/0oZ89wOPzPbnJZOLb3/42L7/88nKWv0xIsgm0INy/B/dbIGZAkRGW\nZPNhfAEb1tk3sDpfY9bfTnmtglWBWkr0XyIxcjsKKXxd3h100Dlzhlb7MYZcLYAgQ7eCXanPURK3\nhWhV+HLQVYJCpm2mm7PjDZyfaLom19woyH8Yn8+H1WpFq72592rzODg21smR0Q7O2/oICJkkbRT3\nZ5WzK72Edcm5aJRLq8c7fT5OjwxwzNTPcVMfY65QsWBpop6vV9SwzZDH6tQM1Arlks7jeshC0GUb\np27ITP3QMHUmM+OzLgASI3XUGDJ5ek01NYYMSlJTUF2nSOBWcMMMf6moqakRFy9epK6ujrVr1y4H\n/M8wQp4E9+uhbD7QCWgh4j4k3aOgWR+WZCPLXibch7E4X2XKfQoIEq2pJCXqYboak9i29f6wP3N+\n2UuP8yKt9mP0OuqRCZCoyaIsbhtlcdtJ0KSHNe5H5i9kOhx9nBmv5/xEE9P+GSIUWlYnlLMpefVN\nBfkP43a7b5jZD89OcXi0ncOj7TRNmhCAISqBXekl7EgrpioxC+US6vFCCHqmJzlm6uPYcB91Y8P4\nZZkYtYbNmUa2G/LYlpVLatTtW2yVhaDDauPi4DAXhoZpMJmZdnsASI+NYU12JjWGTNZmZ5GbmLAk\ncW1JJZ2l4qqkMzs7S11dHdu2bbst81jm9iBEALynQtm89xjgB3Ulku6xuSqbG2uZfzimwOFtxOJ8\nlXHX2wTkGTTKNFKiHyI16hEiNQVMTU3xzDPP8MYbb8zrYrxaYdNqP0bnzBm8sotoVSIlsVsoi9tO\nWkTBgi9uIQQ9zkFOj9dzduISk75pNAp1KMgnrWZVQvm8gvxVfD4fxcXFXLlyhejoD4KlEIJeh41D\nc0G+wz4GhBZdd2WUsCu9hMKYlCVNxjyBABfGTBwd6uOoqZchhz00h4Rkthvy2GHIY9VtzOJlIei0\njnNx0MT5oWHqh4axe7wAZCfEsTY7izXZWawxZJIVf2vkpLs64FutVp5//nn+9V//dTnL/wwgAgNz\nks2rIFtBkQgRDyHpHkVSF4U1pjcwgsX5Glbnq7gD/SikCJIi7yM1+lHiI9YT2kYSHlZPP632Y7Ta\nj+EITKBR6FgRs4myuG3kRFWhWMDYEAq6gy4zZ8YbOD1ej9U7gUpSUh1fxqbk1dQkVixKCeXVDF8I\nQbt9lEMj7RwabaPfGSqmW5loYHd6CTvTizFELVyGuh6WWSdHTb0cGerj9Mgg7oCfCKWKTRk57MjO\nY7shj8zo+X/hLwZCCHrGJzg3YOLC4DB1puFrGbwhPo51OQbW5WSxLjuLtNiY2zLHuzrgX0UIsRzw\n71GEcIPnPYTrZfDXAUrQbgll89qtSNL8s9ag7GHCdQiL82WmPWcBQax2DanRj5IctQeV4pMvxp/8\n5Cc8+OCD10oyPwmHf4K2mRO0TB/F6u1DgZLc6FWUx+2gMGbdolTYjLitnBmv5/R4PcPuMRQoqIwv\nZlPyatYlVhGlWpxNQbIs84Mf/IADf/Y1Tk338/5IG2bXNEpJoibJyO6MEnamFZOiW7oAK4SgZcLC\n4cFejph6aR63AJAVHcuO7Hx2GPLYkG4gQrXw8tRwME3bOTcwxPkBE+cHTdc0+Ky4WNYbDazNzmJd\njoH02xTgP86SLtreCqxWK/v27aOuru66Ox+XuXu4tgDrehk8b4Zq5pU5SNHfBd3DSMrUsMYMSTav\nYJt9i6BwolVmkh33LVKiD6BT33hRd8eOHWRlZf3B8z7ZTefMWVrsRxmcvYxAJj2iiN1pf0Jp7BYi\nVQu/XZ/wTl3L5HtnhwAojS3gufSnWJ9UTZx68QKKLGQaJ0283d/E6+4+3qz7DWqFko0p+XyjaAvb\n01aQoI1atPN9HE/Az5mRIQ4N9nDU1IfF5UQCqlMy+G81tezKzqcoIfm2JHnjzlnOD5o4O2Di/MDQ\ntSoafVQkG4zZbDAaWJdjwHCLJJpbyR2T4ZtMJgwGw22ZyzKLh5Dt4H4D4X4JAh1ARKiMMvLxUFll\nGBe4N2DBOvsaFsfvcQf6UEg6kiP3khp9gLiIdTe9qDszM4MkScTEhAKrLIIMzTbTbD9C58wZ/MJD\nvDqNsrjtlMVtJ0n7h18M88Xhn+XcRCOnx+tom+lBIMiPymZzcg2bkleTpE1Y8DmuEhQylyaGeH+k\njUMjbdi8Thh3sKO8ht0ZpWxLKyJWvXTlk+PuWY4M9XF4qIeTwwN4ggGi1Rq2ZBnZachnuyGPpNtg\nZ+Dy+ak3mTnTP8jZgSE6raENYrERWtZlG1hvNLDBaCA/KfGuUBnu+gwfIDk5mX/4h3/gG9/4xl3x\nR1/mA4QQ4LsYCvKeg4AXVOVIsT+BiP1hLcDKwsek6ygW5++ZdJ8AZGK1q8mK+z9JjrofVRh1+O+/\n/z4nT57kR//jv9IyfYQW+zEcgXG0iijK4rZRHr+TLF3pgj9/3qCPuqkrnLLV0TTdRkAEydCl8oTh\nfjYnryFDl3LjQW6Sq0H+4Egrh0baGfc60SpU1KYWsC4ig//7p3/O/3vx/0KpXPxFz6tVNYeHejg0\n2MMl6wgCyIiK4ckVFezOLmBtehbaJS7f/DhBWaZ1zMqZ/iHO9g9yyTyKPxhEo1Sy2pDBd7ZtYqMx\nm7K0FJR3gaLgDwTpGZug1WRh0Da1oLHumICv0WgwmUx4vV4iIhbf52OZxUcEx8H9SijQBwdBioHI\nR5F0TyCpS8Mac9bXyZjzJazO1wnIU2iUqRjiniMl+lEi1eEbfrkCdow7tDhWSfxj7zeQUJAfXcPO\nuK9RGLMelWJhOzKDIsiV6Q5OjtdxceIyHtlLoiaefWnb2KJfQ26UYdESmatyzXvmVt4faWPc6yRC\nqaI2pZA9mWVsSS0kShWqt/98ff2iJlCyEFyyjvD+QDeHhnros4cCUEVyKn++ahO7cvIpTVzayp5P\nYnTGwem+QU73D3JuYOjaQmtJqp5n16xkozGH1YYMdOrbs05ws8iyYGh8mpahMVqGxmgeGqPTbMMX\nCAIQGxn+nhG4gySdqzidzo+Uji1zZyFEEHxnEK4XwXsUCIC6JiTZROwl5L4xPwLBGWyzbzHmfAmn\nrxkJNUmRu0iNfowE3eawq2yCwk+voy4k2Uxd4ODftvH09/dSmXgfZXFbiVItTE4RQtDtHOCUrY4z\nEw3Y/Q6ilDo2JK1is76G0tjCRatbl4VM0+QwB0daOWhuxXYtky9k78eCPMDo6CjPP/88v/71rxcc\nfD2BAGdHh3h/oJvDQz3Y3C5UkoKNGdnszilgd04B6VG3dkHT7fdzcWiYM32DnOobpHdiEoCU6Cg2\n5eawOS+HjcZskqLuXEdMgAmHi+bBUZqHxmgZHKPFZMHhDpV96jRqSg0plBnSKM9OpdyQSmZSHAqF\n4u6XdAACgQDV1dXU1dURH7/0fhzL3DwhP5tXEK6XQDaDlACRzyBFPo6kyp//eEJg91zA4nyJcdd7\nyMJLlLqYvMT/TkrUAwsyLLN4erkyfZhW+zHcwRmilAlURu9FWbmWrxX+6MYD3IBRt5VT43WcsF1k\nzGNDLalYnVDBFv0aViWUoVYsThYphKB52sx75lCQH/PMoFEo2ZJayJ6MMramFX0kyH+Y+Pj4Bcmj\nDp+XY6Y+3hvo5vhwH7N+P9FqDdsNeezOKWBbVi5x2lt3Jy6EoHdiklN9g5zqHeDi0DC+YBCtSska\nQxaPrSxnc24ORfqkO1YS9geDdI+Mc3lgdO4xgnkytGCsVEgUpCWzZ2URFTlplBnSyE9LXHTJ6Y7L\n8L1e701v/15maREiCN6TCPeLc5ujZNBsQNI9ARG7wyqn9AbGsDhfweJ8GU9gCKUUQ0r0A6RGP0G0\npizsi3U2ME2r/TjN04exevtQSioKY9ZTEbeLvOjVBAMy6gXczs/4nZwZb+Ck7SJdzn4kJMpiC6nV\nr2FD0iqiVIuzGCqEoHPGwrvmFt4ztzDsmkYlKdiUUsC+zDK2p60gWn39QOtwOGhqaqK2tnZe5x53\nz3JosIf3Bro5OzKETw6i10WyO6eAPTlFbMgw3FI93un1cW5giFN9A5zsHWBkxgFAflIitXk51OYb\nWWPIIkJ9R+Wt15h0ukKBvX+Ey4OjtA5Z8My5YqbERVGRk05lTjqVOWmUZKUSqb25z+c9sWh7Fa1W\ny3e/+12ef/550tLSbvd0PpOEsvmX5rL5MVAkQdRXkXRPhuVnIws/U+7jjDlevLYAG6ddS078n5EU\nuQelIrxgGRQBep11XJk+RK+jDpkg6RFF3Jf2TUrjtqJTfiAzHHj8Uf70T/+UXbt23fT4PtlPw2Qz\nJ2wXuTTdQlDIZEdm8HTOw2xOriFZu3gblAac47wz3MK75hb6nOMoJYn1+jy+UbSVHenF8zIn6+/v\n580337ypgG92zvDeQBfvDXRTNzYcslOIiePZsmr25BSyKiXjli1sXt30dLJ3gBO9AzSYzPhlmSiN\nho3GbL6xaS21eUYyb8JR8lYjhGDAOkVj/wiN/Waa+kcYtE0DoFIoKM5K4dENFVQZ06kyppMWH3Nb\n7kTuuAwf4K233mLTpk0kJCxeydoy1+eDbP4F8B4nlM1vQop8CrTbw8rm3f4BxpwvYXG+gj9oQ6NM\nITX6AKnRjy3Iftjq6ad5+jAt9mO4gtNEqRIoj9tBRdwu9BGf3DXK7/cD3DDLv+phc8J2gXPjl5gN\nuklQx1GrX8NW/VqMUQsv1bzKiGua98ytvGNupt0+hgTUJOWwL7Oc3RmlJIZRJx8MBlEoFNcNJv32\nKd4d6OK9gS4u20J2CsUJyewxFrLXWERJov6WBSOXz8+FQRPHe/o50dt/LYsv0iexNT+XLflGqrMy\n0CxBldFC8AeDtA9budRnprFvhKb+EaZm3QDER0WwMjeDlcYMqozplBnSiNAsoqf9vbDT9uN0dXWR\nlJREUlLSLZzVZw8RtIL75dAirDwSyuZ1c5U24WTzspdx1/uMOV/A7jkPKEjUbSMt5gkSddsI9ceZ\nP56gkzb7CS5PH2TM04MCFYUxa6mI301+dM11LQ46OzsZHh5m586dn3rMqNvKcdsFTtouYvVOoFVo\nWJe0km36dZTHrVi0xdcJr5OD5jbeNbdwaTK0+aoiPpN9WeXszSgjdYE7Xn/1q1/R09PDz3/+82vP\nCSHonp7g3f4u3unvpGMqVIdepU9jn7GIvcYicuNuXXJlmrZzvKef4z19XBgMafGRajUbc7OvBfk7\nZVfrVdw+P1cGR2noNdPQa6Z5cPSaPJOdHM/K3AxW5WVSnZeBUb80pmlXuacknav88z//M/fddx87\nduy43VO55xBCBt85hOt34D0CBEPafOT3QLszrGx+1tfNmPMFrM7XCMjTRKgM5MR/h9ToA2hV4Ulz\nQsgMuq5weep9uhxnCQgfKdpcdqU+R1nc9pve/To5Ocnw8PAfzjng4sz4JY7bztPp6ENCojJuBU8a\nPse6pMVrAzjr93JkrIO3h5s5Z+slKAQFMXr+rHgH+7LKyV5E75ovf/nL2O32a/7x7wx08XZfJ732\nydAdRGomP1q/nb3GolvmVxOQZZrMoxzr6eN4dz/d4yH/HmNiPF9YVcnWglzWGDIXtbPTQpn1+Gjs\nH6Ghd5j63mFaTRYCQRmFJFGUoefA+nJW5WWyKi+T5Nil27G82NyxGf5Vlj12Fo+QDfErCNd/QnAo\nVGmjO4AU+RSSav4NtIOym/HZdxhzvsCM99JcOeVu0mKeJD5iQ1i2xgB2v5Xm6cNcmT6E3W8hQhFN\nadw2quLvIzUif0Gfh6AI0jTdznHreeomr+AXAbJ0aWzTr2eLfi1J2sWpDvPJAU5benjH3MyxsU48\nwQDpujj2Z1WwP6uCotj5W0vciFdeeYXZCDWj+nje6e+kf2YKhSSxLs3AvtyQXJN6i/q4zng8nOwd\n5HhPHyf7Bph2e1ApFNQYMtlemMe2/Fxyk+4cydbp8dLYN0Jdj4n63mHah60EZYFKoaDUkEpNfiar\n87NYmZtBjO72FpXckxk+wC9+8QucTiff+973bvdU7lpCfWAbQtm85z1CNsRrkKK/HfKcDyub72TU\n8TusztcJCgc6VR65Cd8nJfoRNMrwJLiA7KfbcY7L04fon70ECIxRK9ma8ixFMRtQh9k83OFwsGXL\nFl49+SYnJi5y0naRaf8MMaoodqduZmvKOvKjshclqbi6Ieqt4SscNLdh97tJ0ETysKGa/VkVrEzM\nWvT+rkII2iatvN3XyW8uncKmEOhystiQns1zlWu4L6eAZN2tyUCHpqY51t3Hke4+6k1mArJMgk7H\n9oI8thfksik3h5iIO6MCz+X109hvpq7bxMWeYdqHLQRlgVqppCInja/uXEtNfiaVxoybrp65G7ij\nM3ybzUZUVBSRkXf25ok7ESE7wfN6KNAHukCKBt0jSLqnkNSF8x4vKLuxzb7NmPM/cXibkNCQHLWX\n9JiniNWG55EDYPMMcHn6fVrsR3EHZ4hV6amI301l/G7iNQvLgh1+Jydtdbze+C4TCU6UkoLVCRVs\n069jVUI5asXi5Ds9M1beGr7CW8PNjLrt6JRqdqQX87msCjbo8xfdy10IQfukjbf6Onm7v4OBmWlk\n6zibK6p5sLCEPcZCEiOW/pqRhaB5ZIzD3b0c7eq7JtXkJyWyoyiPHQV5rMxMvyPsC7z+AFcGR7nY\nbeJit4nmoTECQRmVQkFFThprCgysKcyiKidjURdYl4J7NsPX6/X09PRw8uRJvvKVr9zu6dwVCH/7\nXDb/BggXqMqQYv93iPgckmL+QWDW1zWXzb8WyubV+eQl/CUp0Q+jVoZ3S+6T3bTbT9I0fZARdwcK\nVBTFrKcqYQ/GqJUL8pgPiiBNU20ctZ6nfuoK1mYzpcWl/JHxMWr1axbNkdLmcfD2cDNvDl+hwz6G\nUpLYoM/nfyvZwY704k/dELUQuqbGebOvg7f6OuizT4XOmZ7NNyrX8p9/8RO+v/8LVBVXLfp5P4w3\nEODcgIkjXb0c6+nD6pwNWS0bMvnBrq3sKMgjJ/H2b5oMyjKdZhvnu4a40DXEpX4zXn8QhSRRakjh\nma2rWFuYzcrceyuDvxF3dMAHiIyM5HbdhdwtCOGb85v/D/BfArSg24+k+3yoi9Q8s++g7GHc9S5j\njt9d0+aTo/aRHvN5YrU1YWXzQghGPV00Tb1H+8xJfLKbZG02O1O/TnncjgXbDw+7xjhmPccJ20Wm\n/HZiVdHsTdvKhZeO8ty6x6nKWHggnA14OTrawRumK5y39SEjKI/P4Pvle9mXWU5yxOLr4332ybkg\n30nX1DgKSWJ9uoGvldew11hEki50fXz+lVcW/dxXsbs9nOjt53BXL6f6Bpj1+YnSqKnNM7KzKJ+t\n+bnE626v/5UQAtO4nfNdg1yYy+LtrpCfTn5aEo+ur2BdUTY1+Vm3XYO/ndzRks6H6ejooLi4eAln\ndPchgubQAqz7JZAnQWkM1c3rDiAp5p9lufx9jDr+A6vzVQKyHZ0ql7SYJ0mNPhC21YE76KDVfoym\nqfeweQdQS1pK4rZSFX8fmbqSBWnnroCbMxMNHLWco8vZjwIFqxPK2Z6yftEkm6CQuWDr5w3TZQ6P\ntuMO+smMjGd/VgUPZFWSF6Nf8Dk+jtk5w5t9HbzZ20HLRKhZyJrUTB7IL2afsYiUDy28zszMsHPn\nTk6fPr2oO9QtDieHu3o51NnDxaFhArKMPiqSnUX57CzKZ0OO4bZX1dhnPVzoHuJc5yDnuoYYmbMp\nSIuPYX1RNuuKDKwrzL6rqmhuhntW0rnK7OwsX/3qVzl8+PANGzHf64RKKs+EsnnvsdCT2u1IkV8E\nzcZ5V8bIwseE6xCjjt9h95yfq7S5j/SYp4iLWB92Nj/saqVx+l06Z84QED7SIgrZm/5fKI3dilYZ\nvr4sC5m2mR6OWc9xbqIRr+wjS5fOMzmPsFW/jnjNB6WGL7/8MhaLhW9961vzPk/3jIXXTZd5e7gZ\nq8dBjErL/qwKHjRUUZ1oWPTFV5trlrf6O3mzt50G6wgAK/Xp/HDdNj6XV/yp5mSxsbG88MILixLs\nByaneL+zh0OdPVweCW3Iyk1M4I/WrmL3igIqM9JQ3MaKOX8wSPPgGOc6BznbOUjrkAVZCKIjNKwt\nNPDl7TVsWJFNdnL8PVPZ53R56Rmy0T1oo3fIhtlqX9B4d0XAj4qK4syZM59paSfUWOSVUKAPDoZ6\nwUZ9HSny80jKjHmP5wmYGXP8jjHHy/jlcbSqLIzx3yU15nE0yuSw5ugKzNBiP0LT1HtM+ExoFZFU\nxO9mZfxe0nTzN1j7MBPeKY5Zz3PUeg6Ld5xIZQRb9WvZnrKBwmjjJ17gGzduZGZm5qbPMemd5e3h\nZl43NdFuH0MlKdicWsD3s/ayLa0IrXJxtV6718N7A9283tvGuVETshAUJyTzfE0tD+YVkx17/bu0\ngYEBDh06xNe//vWwzi+EoMM6zvud3Rzq7KHLFlp0LU9L4c+3bmR3UQH5ybe3KYh50s6Z9gHOdg5y\nsduE0+NDIUlU5KTx3H3r2FCUTUVOOirl7V8YXijjU046+610DljoGrDSPWhj5EMBPjY6gsLshd1R\n3hUB/ypPPfUU3/nOd1i3bt3tnsotI7QI+1twvwF4QL0KKfrPQl2k5llSKUSQKfcpRh2/ZdJ9HJBI\n1G0nPeb0R3o3AAAgAElEQVQLJOhqw6qbF0JgcrXQOPUunY7TBEWADF0x+zO+TXHsFjQL6P/qlwPU\nTzVzxHKWy9NtyAjKYgt5Mns/6xOr0So//f3LsozdbqekpOS65/AFA5ywdPG66TKnLN0EhExpXDo/\nKN/LvqxykrSLq8t7An6ODPXxem87x0x9+OQgObHxfKtqPQ/mF1OUcPNftoFAYN5W4lcraw52dnOw\nowfTtB2FJLE6K4Mf7t7GrqJ8Mm6jV43HF6C+d5gzHQOc6RhgwBry209PiGHPyiI2FhtZV2Qg9jav\nGSwEIQS2SScd/RY6+i109lnoHLAyMT177RhDWgIleak8uL2Cwhw9BTl69AnRSJLEL370ZNjnvms0\nfAhlNNnZ2fd831sh/OB5H+H6DfgbgAjQPYAU+cWwGov4ghNYnC8z6vgd3sAwakUyaTFPkhbzJBGq\n+d8dQEibb54+TOPUu0z6htEqoiiP28HKhL2kRITfqARCC7BHrGc5bj3PTMBJoiaObfr17EzdSFrE\nzWU4ZrOZZ599lsOHD//B74QQtE6P8JqpiXeGW7D73ei10XzOUMlDhioKF3lTVECWOTsyyGu97Rwc\n6Mbp95ESGcUDecU8lF9CZXLavLPo7u5u0tPTbyrgB2WZS8MjHOzo5mBnDxaHE5VCwQajgftWFLKr\nKP+2+sYP2aY53d7PqfYB6ntNeP1BtGolNfkGNhXnsKnYiDFlae0KlpLJ6Vna+sZo7x2jvc9CR5+F\nqZlQo3SFJGHMSqI4N5UVuSkUGVMozNYTdZ1GJ/ekl86ncfbsWXp7e3n66aeXYFa3FxG0gfuF0EKs\nbAVlVkib1z0670XYqw2/Rx2/xTb7DgI/cRHrSI/5AkmRu1GEseFKCMGwu43GqXfomDlNUPjJ0BVT\nnbCPktha1AvI5j1BL2cnLnHEcpYORy9KSUFNQgU7UzayMqEU5QJKNa9i8zh4a/gKrw010eOwoVEo\n2ZlezEOGlWzQ56FaxHp5IQRXxsd4raedN/vasbldxGq07DMW8VBBCevTDAuqT//xj39MVVUVjzzy\nyCf+PijL1JvMvNfRzfsd3dhmXWiUSmrzjexZUcCOwjxib1NnOa8/QEOvmVPt/Zxu77/mKpmjj2dT\nsZHNJbmszs9Ep7n7yiXdHj8d/Rbaekdp6xmjrXeUsfGQIdzV4F6Sl0pxXirFuakUZOuJmGdZ6D2/\naPthkpKScLlct3sai0ZoJ+xlhOvf5/rB+kFTixT5M9BumXe3p6Dswjr7BqOO3zLra0cpRZEW8yTp\nMV8kSjP/DVcAnuAsLfYjNE69y7h3EK0ikqr4PVQn7FtwNt/nHOKQ5QynxutwBz1kRKTwdM7DbNOv\n/8gC7Hz58Y9/zJe//GUysrM4PtbFa0NNnLZ2ExSCyoRM/qrqc+zNLFv0pt4D9ile623jtZ52+mem\n0CiU7MjO4+H8UrYb8ohYhMoWn8/Hj3/84z94PiDL1A0N8157N+939jDhchGhUrE138ie4iK2FeQS\nrV1YK8dwGZt2cKqtn5Nt/VzoHsLjC6BVK1lTYOALtdVsLjFiSL799fvzQZYFQ6OTtHSP0tIzSlvP\nKH2mcYJyKIlO18dSVpDO43tWUVqQxgpjKrqI2/sldsMMX5IkA/DvQCoggF8KIf72Y8dsA14H+uee\nekUI8dPrjRtuhg8hC9jjx49f1/3wTidUO/82YvbXEGiZ2wn7KFLkF5BU8w+ibv8AI47fYHH8nqBw\nEKUuJj32i6REPYhSEV5Z2qi7i8apd2izn8AvvKRHFIWy+bitC9LmZwNuTo3Xcdhyhv5ZExqFmg1J\n1exK3UxJzMK8cq7yt//+T0wWJnB4uodpn5uUiBgeNFTxkKFq0Usppzxu3uzr4JWeVhqto0jAunQD\nD+eXcn9u0aJ2hnK73axatYq6ujqio6MJyjJ1Q2bebe/iYGc3ky43OrWKbfm57C0pYmt+LpG3IVOW\nZUGLaYyTrf2cbOujw2wDICMhltrSXLaU5lJTkHVXZfEuj4+2njGau0Zo6R6huXsUx2yo1j86Uktp\nfhqlBemUFaRRmp9OYtzSyGRLneEHgO8KIS5JkhQDNEiSdEgI0fax404JIT4XziTmi9vt5pe//CWb\nN2++67pjiaBlrnb+P0GeAGUeUuxfQcTDSPMMzEIEmXQfY2TmN0x7TiOhmrM7eJpY7aqwAqdf9tBm\nP8GlqXcY83SjlrSUxW2nOuF+0nQF8x7vg7mG+r8espzmzHgDXtmHMTKLr+U+yRb9GqJUC784pn0u\n3h5u5sX2s3RHT6EZH2VH2goeya5mY0r+olkcQ6jP6xFTL692t3F8uA+/LLMiIZkfrNnCg/klZCyR\nE6VOp+PU6dO0TUzzzumLHOzoZsLlCgX5gjzuLyliS77xtjTrdnl9nO0c5ERrH6faBph0ulAqJFbm\nZvDnD9SypTSXvNTbW/UzHywTM1zuMNPcNcKVrhF6h2zXsvfczCS2rS2gvDCDyqIMstMTUSju/Pd1\nw4AvhBgFRud+dkiS1A5kAh8P+LeM6OhoXnjhBZxOJ8AdH/Q/Ktu8BwRBuw0p8pm52vn5fVD8wSnG\nnC8x6vgPvIFhNMpUcuK/TVr0E2hUKWHNccJr4tLU2zRPH8Erz5KszWF32p9QHreDCGX4G1dmAy5O\n2C5yyHKaIdcIEQottfo17E7ZRH50zoIv/qCQOW/r49WhRg6PduCXg0hvNVGZmMn/+tn/IF6zeFmW\nEIJ6i5nfd7fydn8nMz4vKZFRfLlsFQcKyihNCu9vfzPIQvDLF17klUOHcVWtweqcJUKlYltBLveX\nFLG1IPe2BPmxaQcnWvs43tLHxW4T/mCQGJ2WzSVGtpTmsbnYSFzUnV9RI4RgwDxJU8cwlzvMXO4c\nvqa967RqSgvSefqhdVQWZVBWkE5s9J3/nj6JeQmKkiQZgWrgwif8eoMkSZeBEeC/CiFaFzy7G/D9\n73+fLVu28MQTTyz1qcIiJNu8Gwr0/uaQbBP5JaTIL4XVXMTpbWXE8Wtss28iCy9x2rXkJnyPpMhd\nKKT5X+xBEaDLcY7GybcZdF1BgYri2E2sSthPVmT4/WWFEHQ5+zk0dpozEw34ZD/5Udn8cd4XqNXX\nLIrPvNk1xatDTbw21MSo206cWscTOat5JKeakofSkWV50aq5Bmem+H13K6/0tGFy2NGp1Ow1FvJo\nQRkbM7KXzBxMCEHLmIV32rp4t70L0+goRMazNyOd+0uL2F6Qd8vlGiEEnSM2jjX3cry1j/ZhKxBq\nAvL52iq2luWxMjcD9R3WoerjBIIy3QNWmjqGrwV5uzMkzyTGRVJVnMVT99dQtSKTghz9PVHnD/Oo\n0pEkKRo4AfwfQohXPva7WEAWQjglSbof+FshxB+sEEqS9BzwHEB2dvbqwcHBBU3e7/ejVqvvOM98\nEZygd/AfyYx4Da1iktlgNsOexxjz7iHIfDPOAArlcZSql1EomxEiAjmwh2DgUYQIbzOTjylsnMDG\nCfxMoyGZFLaRTC1qwpcivMJDt+8Krd4GJmUrajQUasop1axGH2b554cJyEGuzPZzfqadLleoocmK\nSAPrY4upiMpFpVBiHTVz4eRhHnjy2QWda21BPG/3dfBydyv1FjMSsCkjh0cLy9hjLCRKvXSLnz22\nCd5q6+Tttk4Gp6ZRKxQk9nbwtS99kUfXryH6Ft/R+oNBGnrNHG/p5VhLL6NTDiQJVhoz2FqWx7by\nPHJT7mypJhCU6ey3cKnNRGP7MJc7zbjcPgAyU+NZWZxJ1YpMVhZnkZV2Z+/UXfKyTEmS1MBbwEEh\nxN/cxPEDQI0QYvzTjlnIou2H6e/v5ytf+QpHjx697f+ThL8tlM273wT8jPvWM+x9jEn/GmC+GcIE\nStUbKFWvIikmEHImwcCjBAP3A/N3fBQIHHRg5ShThPzm46gghe3EUYk07/nNjSsEtuAIrb4Genwt\nBPCjV6ZTqllNgaYcjbTw4DTineD8TDt1M124ZC+JqhjWxq5gXWwxiR9zv7SMmLhSf57dDz4+7/PI\nQqZ1epSztl4uTw3jDQbIj0vksaJyHiko/VR7g8XANG3nnbZO3mrrpNM6Z5KWY2B/6Qp2F+Xzy7//\nO/74j/+YuLiFmczdLC6vjzMdgxxr7uFEWz8OtxetWsmGFTlsL89nS2keSTF3rm351QDf2Gaioc3E\nlU4zLk+or7ExM5FVJQZWlmSxsjgLfeKtaQqzWCxpwJdCUfTfgEkhxLc/5Zg0wCKEEJIkrQVeBnLE\ndQZfrIAvhGBwcBCj0bjgscI7fxC8RxGz/wb+iyBFgu5hzo/sxyXPX7aRFO0oVS+hUB5BkgLIwXUE\n/Y8hy+uZ/5cGBHEzzlmsHMXDCEqi0FOLnu1EEL7m7Bc+un3NtPoaGA+OokI9l83XkLII2bxX9nPJ\n0c25mXYGPVaUKKiMzmV9bAlFkVmf6ukSDARQzrP0ccQ1zRlrL+dsfdj9biJVGh4tLOWxwnKq9PPf\nFHWzTMy6eLe9izdbO2g0jwJQnZnO/tIV7CspQh8dhcPhoKenh+rq6iWZw4exz3o43trLkeYeznUO\n4vUHiYuMYGtZHjsq8llflHPHWgnLsqDXZKO+1UR9yxBNHcPXMvjczCSqS7NYVWqgujiLxPi720xt\nqat0NgFPA82SJDXNPfcXQDaAEOJ/AY8BfyJJUgBwA09dL9gvJpIkYTQa+fnPf86WLVvYtGnTrTht\nqMGI++VQRh8cBkUGUsz3QPc4kiIW17BlHqP552Sbl1AoWxEikmDgYeTAAYSYf+tBADcjWDnCOGeR\n8RCJkVy+SiJrURC+HDERtNLmrafLdwUfXhIVKdTq9lGoqUQrLUybF0Iw5LVxzt7GJUcPXuEnVZPA\nw8kbWRNbRLTy+jXzwWCQp/es5VdvnEIXdf2L2hXwcXF8gDPWHvqc4yiQqEjIZGNKPlUJWewrX/iX\n1ifh9Po43NXDm62dnO0fJCgEK1KS+e62TewvXUFW/Ecz+La2Nl588cUlC/iWaSfHWno4cqWH+t5h\ngrIgLT6GR9dXsKOigFV5mXekfi2EwGy1U9c8SEPrEA2tJqYdbgCy0xO4b2Mxq8sMrCox3PUBfjG5\n63bafhrnzp2jsLCQ5OTwjL9uFhEwIVy/DlkSi9mQt03Us6DdjSR98P15uO1mAv4UStVr12QbWTYQ\nDDyKHLgfmP+HVBBkmiYsHMFBOxIqEllLCjuIJnzzsqAI0Odvp9Vbz2hwCAVKCtRllGlrSFVmLTgD\ndge91M9l82bvOGpJRXV0PhvjSjFGpM5rfPfs7KcGe1nItNnHOGPt4dLEEAEhkxkZzyZ9Puv1ecRp\nPvhC2VW6ePYK/mCQ032DvN7SztHuPjyBAJlxsewvXcGDZcUUpXzyZ3ZgYGBJ7lyHx6c53NzD4cs9\nXBkM3VnkpSays7KAnRUFlGSl3HZ59JOYmnFR3zJEXcsgdc1DjI2HjPH0idHUlGWzuiybmnIDqUm3\nzwvoVvCZ2mn7aWzYsIHp6Wl+9rOf8cMf/nBRP7DX+sLO/it4DwMKiNiHFPUskrpy3uNJUhdK9cso\nlIeQJB9ycB0Bz/fDlm0COLFxAivH8DGBhkQyeRQ9Wxa0CDsTnKbNV0+7rxGPcBGrSGBDxG5WaFai\nC6N71ocRQjDosXB2pp1GRw8+ESBTm8zj+lpWxxSiU85f+687dZQsY/4fBHybx8EZay9nrD1M+lxE\nqjRsSS1kU0oBOVFLs9gohKDJPMrrLR28097JtNtDvC6CA5VlPFC2guqsjOtaDcuyzDPPPMNvf/tb\nDAbDgufTb53k8OUeDl3upsMcqqwpzkzhT+/fyK7KAvJSw+tFvJT4/AGudI5wsXmAi82DdPaH5h0d\nqWV1mYEvPbCGmvJsstPvXp+dW809E/Ah1B0rISGBYDCIahG2sIdMzA4iXP8yV1YZN2dJ/EUkZdo8\nRwuiUJ5GqXoRhbJprtpmP8HAYwhhDGt+swxi5TATXEDgJ4Zisvk88axEIryyOCEEQ4EeWr31DAa6\nkJDIURVRpq3BoFr4LlhX0Eu9o4uz9jZGfZNoJTU1MUVsiCshO2Jhdexj5iES9aHM3BsM0DAxyGlr\nD50zFiSgLD6DJ4w1rEw0LHqf2asMTk7zeks7b7S2MzRlR6tSsrMwn4fKS9icl3NT5YoejweFQsGJ\nEycW9PfuGR3n0OVuDl3ppmc0ZH1cZUznuw9uYWdlAVlJt2YB+GYRQjA4Msn5y6EAf6nNhNcXQKlU\nUFGYwXOPb2JtZQ7Feal3RJ/cu5F7RtL5MI2Njfj9ftauXRvW64U8A+4XEbP/DvIYKHNDsk3Ewzfd\nF/YDSceJUvUWStXvkRQjCDltrtrmcxBG9i0TYJpLWDiMk24UaEhiE6nsREfmvMe7ikd20+FrpNVX\nz4w8hU6KokSzijLtaqIVCwsMIW3eypk5bd4vAmRpk9kUV8aqmAIiFItT4iiEYHB2glOWHi6M9+MO\n+tFro9mUUsCmlHwStTcvk81H0pl2e3inrZPXWtppMoesFdYbDTxUXsJ9KwrmXUb5i1/8AovFwk9/\nel13kk+kZ3Scg01dHLrcTZ9lEkmCVXmZ7KosZGdlAWnxS1dpFA5Ol5f6liHOX+7nwpWBa5udsjMS\nWFdhZG1lDtUlBqJ0t8cD6E5kWdL5GCMjI/j9/nm/LqTP/zu4Xw7p85p1SJE/Ae3W+XvFS8MoVS+j\nVL2FJLmRg1UEvN9EDtYSzp/dz8w12cbPFFr0GHiKZGpRzbu2/wNsgRFafHV0+1oIEiBdmc26yB3k\nqksW7FDpkX00OLo5Y2/D7B1HI6moiSlkY1zpgrP5D+P0e/mn//gHLnc1o9i/FbVCyeqkHGpTCiiK\nTV2SLk2+QIDjvQO83tzO8Z6QtUKRPon/tqOWz5UVkxYTXqmfx+Phm9/8Jh6P56Zf0zs2wcGmLt5v\n6roW5FfnZfHU5ip2VhSgj7tzyg6FEHQP2jjX1M/5y/00d40QlAWROg1ryrN59uH1rKs0kq6/t3X4\nm8XnCzA6Ms2IeQqzeYqJCceCxrsnA/7+/fsBeO2119i1a9cNPcOFrxEx+8/gPURIn9+PFPVH8/ae\nF0Jg915kxP4vaCKOAErk4E6C/icQIrx+vC6GsHCICc4jCBBLGUaeWVDtfFAE6PW30ey9iDVoRoWa\nFZoqyrVrSFIufLHS7B3njL2V+pluvMJPpiaJx/W11MQUEXGdpiXzQRaCzpkxTlm6aZgYwm+MJTNn\nB7vyalibnEukavEzQiEEV0YtvHql7ZounxwVyRdrVvJwRQklKfoFSTAmk4kDBw5w4cKFG7byHLBO\n8X5TF+81ddIzOnEtk/+LzTvYVVlwR/VxnXV5qWsZ4mxTH+ca+xmfa/RRmKPniw+sYX1VLhWF6ahU\nd/bu3KVCCMH0tAvT0ARDgxOYhkKP4eFJxkankeUPVJjoBVo63JMB/yr19fVUVFR8YsAP1c8fDgV6\nfyNIsRD1tZDtwTz1eVn4sM2+jXnmX5j1taFSJBAMPEMw8AiI+TszCoJM0YiVwzjoRIGGZGpJZRc6\nwi8XdMp2Wr0NtPka8AgXcYokNun2skJTteCSSp8c4LKzl9P2VgY8FtSSkuroAjbFlZIzz0qb6zHl\nc3HW2sspSzc2r5NIpYZNiUYSBmw8sOeTveEXytiMg9db2nm1uZ2+iclruvwjlaVsys1BtQh6st/v\nx2AwcOjQoU+1hBiesHOwsZODTV10mG3Xdrv+4MB2dlXeOZn8VS3+bGM/Zxv7aOo0EwzKREdqWVOR\nw6bqXNZVGklOuDPme6sQQjA1OcvAgI3B/vHQfwfGGRqaYMbuvnacVqsiy5BIYVEaO3aWkmVIIjMr\ngcysRGJjdUjSd8Oewz2p4X8Yv9/Pu+++y4MPPgiAkF1zvWH/FYJDc01GvjzXZGR+WZE/OMWo43eM\nOn6DL2hFp84nM/aPSIl6iGMdN99L9SoBZrFxEitH5qptkkhhJ3q2oAqjTBNCH7LR4CDN3ov0+zsQ\nCHJURVRo15KlyltwILb57Jyxt3JhpgOX7CVFHcfGuDLWxq4gahE8cyBUTtk8NcJJazdXJoeREayI\nTaU2tZDVidnYbVb+85/+jv/yw58vyvkANhcmcbirh1eutHGmfxABrM7K4JHKUvYVFxETsXj2BkII\ntmzZwq9+9SuKioo+8jub3cnBpi7ebeykeTDUWLwyJ5091UXcV1VEavydETT9gSBNHcOcbujjTGMf\nZkuoqUleVhIbq/PYWJ33mcrivV4//X02+vus9PVa6e+z0ddn/Uhgj4mJIMeYTHZO6JFjTCY7Owl9\nSux1nTc/Ux2v5svExAR/+Zd/yd/97Y9R+l4A129BTIO6Cinqq3P18/P7ELr8/YzM/AsW5yvIwkN8\nxCYyY7/ykb6wN1eHH8LNKFYOM84ZZLzEsIJUdhNPddiyjV/46fZdodl7kUnZilaKCC3CamqIVSaE\nNeZVgkKmbXaQ0/ZWOlwmFCiojDayKa6MQl3momXzk95ZTlm6OT1XThmrjmCjPp8tqYWk6hZf4xVC\n0D81zvmhfppGh3B6fWTGxfJweQmPVJaSnbD4DTrcbjcRERGMj4+j14fuBqdn3Ry+3M27jV3U95oQ\nAooz9eytXsGe6iIyE++M6hq7w83Zpn5ON/Ry4coAs24fGrWKmjIDm1blsWFl3mdCi5+amqW3x0Jv\nt4WeHgu9PRaGTZPXpJiICDXGPD15eSnk5uox5unJyUkmITEqrGtledH2OiTG2fmff52MtXsbpy/M\ncODAQ0hRXwttmJrHH/uqPm+2/4pJ9zEkVKREP0Rm7FeI0hTdeICPj4dghjYsvI+dK0ioSGI9qewm\nkvlbMlxlJjhNq6+Odt8lvMJDkiKVbboHKNBUoA7DUfMjYwdcnJ9p54y9jemAkzhVFPsS17AhroQ4\n1eJoxkEh0zxl5oSli+apEUBQGp/Ok7lrWJmQ9YltCH/4zS/xnZ/8DYn68BaCp90uLpoGODfUh8U5\ng0ap5P7SIh6pKGVdjmFJFn2v8vzzz1NbW8sDDx/gnUsdvNPQwdmOQQKyTI4+gT++bz37qleQm5q4\nZHOYD0Ojk5xq6OV0Qy9XOkeQhSA5PopdG1awqTqPNRU5827ZdzcxOeGkq3OUzs5RerosdHePMW77\nYCE1JTWW/PxUtmwtJq8glfz8FNIzEu4Yr/x7MuB/sFHqV+A9AmiZ8e+ibzwGRcL8bvuFCGCbfQ/z\nzK9w+ppRKRIwxH2LjNgvoVHOf1evjJ8JzmHhfdyYURFLBg+RwnbUhJe5CSEYCQzS7LvAgL8TgFx1\nCRXataQrsxeUcQshGPBYOGVvocnRSxCZIl0mB/SbKI8yLlpTkavZ/ClrD1M+F3FqHfdnllObWoA+\n4tNLCYUQPP0n3yUheX5rJQE5SPPYCOcGe2m1jCIQ5Cfp2V24jlUZ2XyuKmuhb+m6+Hw+Zt1uHnj2\nGxxrH+RvfvT/4fb5SY2P5otbq7l/VTHFmQtbBF4MZFnQ2jPKqYYeTtb3MjgyCYQWXJ99ZB21q/JZ\nkZt6xwS0xWRmxh0K7h2hR1fn6LXgLklgyP7/2Tvv8MYKK2+/kovk3ntvcu9l7LHHnt6pAwQICT2k\n51s2m7Il2758m+xmA9mQxpKyye6GJJBCneqxPe69y3Jvcq+SrK57vz88Q4AMzNiWGQ+Z93l4AEu6\nupKto3PP+Z3f8SMzK5KEhGDiEoKIiw/C09O+KzPtzYcq4IuicLkR++PLjVhvcPsMEteHUAT78aVs\naGhoYHJyklOnTr3vsayClhntr5nS/Bcm2xQujjHE+/0zgW534bCJ9X4WVpmjnDkuYkWLCxGXvW12\nIWVzGZFVtNBv7qLL1MCSMIdc4kKWrJg0Wd6WtfNmwUKLdpDq1W4mTQvIpc4Ue6dS4pVKkPPWSkJX\nEESB7pUpKmb66VxWAyKp3qE8GFNAhk/4dTVDx4cHCImIvu7AOKVZoXZsiMaJUXRmE15yFw4lJFMU\nFUvQNm2pejuiKNI5Ns0/fPPfaenswbvgCJ6uMo7nJHIiN5mc2LAbHjzNFitNXeNUNQ9S3TrE0qoe\nBwcp2cnhnDqUSUlu/IeuVGOx2BganEXZo0apnEKlnEKtXn7r9vAIXzIyI0lMCkGRGEJ8fBAurjff\nbMCHIuCLogkMv19X3NhG1huxHn93uRH7To26TCbD7X2MtUzWaaY0P2da+0tsog5PWT5xfn+Pr8u+\njWvxAT2TzHKWReoQseJNFkEcxoMkJGzug60TNPSYmi6rbQxvlW0SnNNx3GLZZsGioWalm/rLTdgQ\nZ1/uCywlz0OBTGqfS/VVs4HquUEqZ/tZNK3h6STnWFgqpUEJ75vNX42qM6+QlJ5D/p7973kfg8VC\ni3qM2rEhRpcXcZBIyQgJY3dUHMmBwUjtuPrwvRidW+b1FiV/qOtgbHwcz4BI7nlsD7ftSqckKRqn\nG9zMXNObqOsYoaJxgLr2EfRGC64uzhRlRrMnL56izJibdsvT1VhY0NLbo0bZo6a3R01//zQWsw0A\n/wAPkpJDOXoik6TkUBIUwVuWQ+4UbuqmrShoQP/L9WEpYR4cU5G4PQnyw+8wMrsaP/vZzxAEgcce\newwAnVmJevXHzK+9hoiAv+sxwr0ex0O2ca8cURT5rfICM5xBQ8/bpmEP4ULIpl4rwKx1kk5TA8OW\nXgQEYpySSHfeRajj1lYFCqKISj9B1Uo3Sv0YEqRkusdQ4p1GnDzELmUFURRRaWa5OKOibWkcmyiS\n5BXM3iAF2b4RV63Nb/X5hpbmqR0donVqHLPNRoiHF8VRcRRERON+jcXi9jBPW9LpOd2q4rWWPrrH\nZ5BIINS8iItmmp8//33c7aj02QzLGj2XWoaobBygqXsci9WGj6cLe3LjKcuPJy8tEmenmz8ntNkE\nRobn6e6aoKd7kt4eNbMzqwA4OTugUISQkhpGckooySlhBATu7KuXP7umrWibWfefN7x4eSK2BInb\nv1FhfagAACAASURBVIFz0XUHp/3792OxWJhdrWBm7adozDVIJa6EeDxEmOcjyJ02XsO1CmZ6Vito\nXPodC4zhhDdhnCKQvTiyOfmcTbQxYlHSaWpg1jaJMzLSZQWkORdsWW1jtJlp1Kq4tNLFnGUVDwcX\nDvvmstsrBW9H+8j99FYzNXNDVM72M21YxdXRmQPByZQFJxDssrWyU+OlC0yNj3LnRx9/62dak5GG\n8RFqxoaY1WmQOTqSHx7N7qg4on38tr0mbrJYqewZ5tVmJTXKUayCQGJoAI8UKvCzaXn4wb/Y1ue/\nFvNLOiqbB6hoGKBNOYkgioQEeHLqcBZl+fGkK0Jvep8as8lKX98UXZ0TdHVO0Ns9iV6/7o3v5+9O\nalo4d9+TT0pqGPEJwTg5/XlIReEmC/iidQhx7QUwvALYQH4cidsTm5iItSL37WBB85/827/U4Ozo\nzhe/+GVCPD6Kk8PGg5Deukrr8uu0LL2G3rZCoCyWGJ687D2/ubfYJBjoNbfSbWpEJ2rwlPpQ4nKU\nROesLW+RmjUvc2mlm0aNCpNoIUoeyMd8D5DlEYfjFu0UrjCmW+TijIqGhRHMgo1Yd38eiy8m3y8K\nZwf7/NlFxyfh6x+EIIr0zc9QOzpEx/QkNlEgxtefj2XvIjssErnj9qpGRFGkY3SaV5t6Od3ej9Zg\nItDLjYfKsjmZl4Ii1B+lUsmFCxe29Tzei5kFDRcbB6ho7KerfwpRhKhQXz5+RwF7CxJQRO9MO+Tr\nxaA30909SWf7OJ2d4/T3TWOxrJdnomP82X8wlfSMCNLSIwgM8rypX+tWuSlKOqK5A3Ht+cvWxDJw\nvQeJ66NIHDdmG2sT9MzoXkKt+Qkm6yQujrEEujyMr+w4KytrWCwWYmJirvt4S+YpmhZ/R+fKeayi\niVj3PHb53k2UWyYXlHMbOrcrrNgW6TI10Gdux4qFUMdoMmSFRDkmbKnWLIgiffpxqla6UOoncEBK\njkc8e7zTibKTr41FsNG0MMrFGRXDugWcpY7s8o9mX3AiUe72td+12WwMjQwybLNSMzbIon4NN2cZ\nhREx7I6KI8Rza1cP11PSmVrS8GpzL682KRlfWEHu7MjBjARuy0umICECB6mUc+fOUV5ezr/8i/2G\nwq6H6XkNFxv6KW/op2dw3fM+PjKAfbsS2FegICZ859khXy8GvZmurgk62sfpaB+jXzWNYBNxcJCS\nkBhMekYE6RkRpKaF4+W1c9cwbpYPZUlHFEUw16wHenP9ZWviTyNx+xgS6cY0yWbbIlOaXzCt/W+s\nwgqeslzifP8GX5cDbzViX3vtDHNzc3z+85+/5vEm9b00LP6Wfm0dDhIHUr32UeB7NwHyzW2nuiKr\n7DTVM2pVIcWBBOd0MmS78N+wDfM7MQpmGjUqqla6mLes4ungyjHffHZ7peDpaJ8Pw4JRR8Wsikuz\ng+isJoJdPHkgJp/dAXF297QRRAHl3AynG6upeuE5wh79JIn+QdyRkklmSMR12Q9vBb3JzPnOQf7Q\n2EvT4AQA+fHhPHmogIMZCbjJ11+vXq9Hp9Oxa9cuu/jZXw/T8xrKG1SU1/fTO7Q+lZsYE8in7i9h\nX4GCiBD7qKs+aIxGCz1dk7S3jdHeNoZKNYVgE3F0lJKYHMr9DxaRmRlFSloYLrdcNd+XHZfhr3vc\nnEXUPQ/WHpAGInF7DFzuQyLdWF3ZYBlHrfkxs7qXEEQTfq6HCPd8Ek95zns+prq6mrNnz/6JNa0o\nCvRr62lYfBm1QYlc6k6O7wlyfW/D3fFPv4CuZ9LWJtoYsvTQYapjwTaDXOJKqnMeabJ8XDf4Wt/N\ngkXDpZUu6jV9GAUzUfJAyrwzyHSPtUvZRhBFelenuTjdR8fyJCAh2zeCfcEKkr3s0+h9O6tGA7Vj\nQ9SMDrJk0OPuLKMwMpaS6DgCt0FO+fYMXxRFWobVvNLYy5n2fgxmCxH+Xtyen8LJvOSrTr5+//vf\nR6fT8aUvfcnu5/Z25pa0lNf3c6FeRffAeiafGBPI/l0K9hcmEh5k/+ng7cZmFVD1TdHaOkpryyi9\n3ZNYrQIODlISk0LIyo4iMzuKlNQ/zwD/ocjwRdF8WVr5AthG1z3oPb8OLncgkWzsl6oz9TKpeZ75\ntTeQ4ECg+x2Eez6Jq/O11/ylpaUhl8sRRZG+vj7iE2PpXi2ncfG3LJnVeDsFcyj4k2R4H8Z5E3p8\nuFKfb6HL1MiaqMVb6k+Zy0kUzhlbklWKosiQYZqKlU6610aQICXLPZYynwyi5fZZ2ae3mqmdH6J8\nWsWsUYOnk5zj4ensDVJsyG/+erhSm68eGaRzZr3BmBgQxJ2pWdT+9Icc2XMIt23Uzk8va3ilqZc/\nNPYyubiKq8yJo9mJ3FGQQnZM6FW/1F544QVSUlL41Kc+tW214qWVNcob+7lQp6JDpUYU1wehPnV/\nyU0Z5EVRZGJ8kdaWUVqaR+hoH0e/ZkIigbj4IO66J5/snGjS0yNuSu37TuKGB3xRWLu8bOTHIMyt\nSyu9/2PDHjeiKLJqbGBy9UcsGy/hIHEj3PNxQj0fQeZ4/cHO29ubvLw8lINdPPa5j/OR55IwCKsE\ny+O5M+wrJHoWI91khqyxLdNpqkdpbsOKhTDHGMpktxHpGL+l4GAVbLTqBqhY6UJtWsBNKuegTw4l\n3ql2U9tM6Ve4MN1H3fwwJsFKrLs/TyaUkOsXZfftUVqTkbrxYapHBlnQ63BzlrE/LumtbN5ms7GS\nlYeru/2XeVisNrrHJvhNZTX1A+OIIuTHR/CpI4UcyEjA9T1sA5RKJUlJScTFxREUZD930CtodEYq\nmgY4V9tHa88EgigSG+7HE/fs5mBRIpEhO8N64XpZXdWvB/imEVqahpm/PMEaGubD/gMpZOdEk5Ud\nhZf3h68GfyO5gSWdbLGp4vH1rVLiyvqyEbenwLl4gx43Aov6C0yu/hCtuQMnqR+hng8T6vEQjg4b\nz/5WLXM0Lv6OjuUzWEQj0S45/OCJC/zqv39LSMj1a+jfXtKZtU7SYapj2KJEgoR4pzQyZUX4O26t\nPq+16qlZ7aV6tRutzUCwsw9l3hnkeShwlm79u1wQBTqWJ7kw3YdydQZHiZRd/jHsD0kk2t2+y+Kv\n6OYvjQzQNjWBVRCI9wtgT3QCWaHvrM0vL87j5eP3njbCm0G9uEyDaoiWwVEMJjOhPp7cXpDC7fkp\n77sK8Mrn59ixY/zoRz8iKmpzfZyrYTBaqG4d4lxtH3XtI1htAuHB3hwsSuJgUSJxEfb9HWwnNquA\nUqmmuXGY5qYRVH3raiF3dznZuVHk5sWSmx9DSMjNdXVyI7g53TKz3MXG06Eg24/E7Skkztkberwg\nWphfe5WJ1R9hsAwhd4wgzPNxgtzv2ZT1wZxxhPrFl+hdrUSChBSvMnb5nSJQHkNnZyfp6em89tpr\nhISEkJd37ff6XM8Mo1YV7cY6ZmzjOCMjRZZLumwX7tKtlSGmTItUrHTSoh3AKtpIcY1kr08mCjs5\nVa5ZTVTPDlI+o2LBpMPH2ZV9wYmUBiXg4WTfiUODxULjxAhVIwNMa1eROzpRGBlDSXQ8oZ5X//B/\n/YtPcfyej5FdWLK15zaZaR0apb5vCPXiMo4OUtKiwtmVGMenDmZe0+JgZGSERx99lIsXL9oto7da\nbTR0jnG2Vsml5iEMJgsBvu4cLEzk0O4kkmLtf/WwXSwsaGlqGKapYYiWlhHWdCakUglJyaHkFcSS\nlx9LYlIIDg43t+7/g+bmrOFLQ5D4vYLEaWOboGyCgRndb1CvvoDJNoWbUxKJ/s8Q4HbsmtO170YU\nRSb03dQt/oZhXTPOUhfyfG+nwO8uPJ3+aMaVkfHHaVuJRIJer6elpYU9e/b8yTHNgoWKuQZe1J5h\nVVjEQ+LFbvkRkmXZW9LPi6JIn36CipVO+vQTOEkc2eWZSJl3ht28ba6UbWrnhzELVhSeQdwbnUu2\nb4TdTNLeei7NCpUjAzROjGCyWonw8uGjWbvIC49Cdo0F9H/zrR+x2URFFEWGZuZo7BuifWQCq81G\nmJ8Pd+3OJScuGrfL06/vF+xfffVVzGYzd999Nz/72c+2HIBFUaRrYIoz1UrK6/tZ0RrwdJdzuCSZ\nw7uTyEoKv+H+OtfDlSy+sX6IhvohhgbXr3L9/N0pLUsivyCW7NxoPDx2tsHYh5kbGPC9NhTsrTYN\nU9r/ZkrzMyzCEp6yPOL9/gkfl7INf+BEUWBAW0/d4m+YMqhwdfCiLOBhsn2P4+Lw3nXh2267DYCe\nnh5efvll9uzZQ19fHwkJCegFI2dmq3hjuoJVixZ/hxAOup4izillS/p5i2ClWTtAxUoHM+ZlPB1c\nOeFXQLFXql0WjAiiSPeKmvPTSnpWpnGUSCkMiOVASBKRbvatC1sFG+1TE1SNDDC4OI+jVEpeWBSl\nsQlE+1xfeaKh8hxSqcP7eudcDa3BSFP/MA19Q8xrtMidnChQxLIrMY6IgGu/TkEQ+OY3v8nTTz9N\nREQEgiAgkUiIjo7e0Hm8nbGpJU5XKzlXo0Q9t4qzkyOleXEcLk6mMPPG++tcD6urepobh6mvG6S5\ncRit1ojUQUJaWjhPPLWPgl1xxMTeeNfPW6xzw5u218JsW0Ct+SnTmv/GJq7h47KXCK9P4iXf+BWN\nTbTQs1pB/cJLLJon8HYK5kjwZ0j3PoiT9Pqz79TUVJ599lkAvvDF/8Pep4/TYulFp9NRklzIHWGH\nmJn02tIfuc5moGalh0uX6/Ohzn58NGg/OR7xdpFVGm0WaueGOD/dx6xRg7ezC3dFZlEWpLB72WbF\noKd6dJDq0UE0JiP+ru7clZpFUVQc7s4bu+rx8PJBcp21e0EUGVDPUN83SNfousonJiiAg9mpZMZG\n4nyNKwlY/3Lv6+vj1KlTuLm5sba2RlZW1obO+e0sreo5X9fH6Uu9KIdnkUok5KVF8ujdRezNj8fN\n9cb661wLURQZH1ukvnaAutoBenvUCIKIt48rRcUJFOyKIy8/FnePD4fZ2IeNHafDv4LROsXk6n8y\nq/s1gmjG3/UYEV6fxF22MRsFALNgpGP5NI2Lv0NjnSdQFkuR/70keZZsWnEzujbJH9TnqF5oQSIB\n/z4XhK41fvjt73PmzBlMvvG4um1cITNnXqFipYNGTT8W0UqyayT77FifXzDquDDTx6XZAQw2CzHu\nfhwKSSHXzz67Wa8giiIDi3NUDQ/QPj2BKIqkBIWyN1ZBcmDIppaKWMzrfihOzu8vzdPoDTSohmhQ\nDbGkXcNNJiNPEUNhYhxBPtc3gVv70o/49Kc/zdzcHB0dHTzwwAMbPt8rGM0WqluGePOSkoaOEWyC\nSEJUAMf2pHBod9KO3+1qtdro7pygtnaA+tpBpi7bBsfFB1G0O57C3QkoEkNuirLTh4Gbs4b/Hhgs\no0ys/pA53e8BCHS/k3Cvp3B1un7Lg7eOZdPSsvQqTUt/wGjTEuGaxtGQzxLrnrep4CmKIj2aAX6v\nPkvbSi9yqYwTIfs4GboP/6I/lgVefvlljj7yF4wO9jHQ08mhO+675rFHDDNcWG6ne20EqURKvoeC\nfd6ZBMu2XlYRRZEh7Txnp5W0Lo4jAXL9ojgUmkycx8aXrL8fZquVxslRKob7mdKs4OrkzP64JEpj\nEvDf4BdgxuceIbD8NKqv/l8mHnqCrpZ6XnnxZ/zDd35C7H98k9gfPYP67gdQ/vMzb2XztcpBesbW\ns/mE0CBO5GeSHh2B4/tM4OrXdLi6udPRWEN7Yw0Pf/ZLxMfHIwgCKSkppKRsPMkQRZHO/inerOrh\nQn0/Or2JAF93HjiRx9E9KTteYaPXm2huHKa2eoCG+kG0WiNOzg5k50Rzz30FFO5OIHCHu0re4k/Z\nMRn+mlnFxOoPmF97A6nEiSD3+wj3ehK5Y+iGj621LNK4+DvaV97ELBiIdy+gyP8+wl03/sGF9bV7\njUsd/F59lkHdGF5OHpwI2ceR4FLc38Oe4HzvLGND/ajHhtm9/yj/+IXHeehTTxMaGc3IQB8pmbnr\ny7nXRilfbmfUOIurVEaJdxp7vNLsYntgFQRalsY4N6VkRLeAq4MzZcEJ7A9OsvuQ1MKajqqRAWrH\nhtBbzIR7elMWm0h+eNR1lU6uhuPKMrvuOYjz4gLN//sa2uR0rBYLAS315Dz5EdZi4in/2e+pG5+m\nvm+IRa0ON7mMAkUshUlxBHi9d0BSdbdjtVhIycrj0RPFPPPzPwCgWV0mKk6xaXvk6flV3qjq5c1L\nvahnV3CRObG3IIGje1LITY3Y0U6Uy0s6amsGqKnup611FIvZhoenC0W749ldrCA3P+bPcrJ1p7Gt\nskyJRBIB/BwIAkTgeVEUv/Ou+0iA7wDHAT3wiCiKre933CsBX2vqYmLleywazuMgcSPE46OEeT6K\ns+PGM89l8zQNiy/RuXIOQRRI9iylyP9eAuUbvzoAsAgWKucb+YP6HFPGOYLlAdweeoC9AYXIHN7/\nD//d1gpz02q8fHyZn5nixZ88R+HTT/CLn3wHS6AL0SUFhPUauP/Ag7g6u2y5dKO3mqmaHeDCtJIl\ns54guQcHQ5IpDoxD5mA/50hRFOlfmOXiUD9dM5NIJBKyQiLYG6cgztc+jTqvtiZyH7kLfWg4Xzx2\nFw888CiF9xxEqtXwtaf/hdMmCTZBIC4kkKKkeDJi1rN5URQxGvS4uLrReOkCEdHxuHt68fTDd/L8\n7y7SXFOBxWxm9/4j2Gw2HN51BbCRgG8wWrjY2M/rlT209k4gkUBOSiTH9qSwb1cCrvKdGyRnpleo\nvtRPdVUfPd2TiCIEh3izuySB3cUK0tMjcHDcuV9Sf45sd0nHCvylKIqtEonEA2iRSCTnRFHsfdt9\njgEJl//ZBfzg8r/fE5uop3v2MZYNVThKPYn0+hyhng/j5LDxwYsF0zi1C7+id7USqURKhvdhdvmd\nwsd5c8tGDDYj52aqeXX6AkvmVWLcInha8TiFftmblicGhoSxZjPS47HM8iMZ/Ga+irCibEoDsyiJ\nyOf/PvMJ5Ece5eIbv6ejsYa/+Mdv8eIL3yW/ZD8RsfGUv/YyR+9+kKX5OaxWC4EhYRgNepxl8rcG\nkOaNWs5Pr9fnTYKVJM9gPhq7iwyfcLsu4jZZrTRNjnJxSMW0dhV3ZxlHFKmUxiTg7WLfycjV7HyG\nPvtlEp79Oo9WXcD70kVkC3N8rewuXlVPsbd0Lx7aOcJD/UmMj+Zrn32Yr/7r92lvqOHCay/xt//+\nPPPTU/j6BxIcHsnXf/A/AOSX7HvrOd4d7K8HURTpVKl5rbKH8noVeqOFsCBvnrx3N8f2pO7oFYBj\nowtUX1JRXaVioH/dZC02LpCHHi5hT2nSLVXNDUIQBMxGC4Y1M0aDGYvZitlkxWK2YrMKCIKAKGyt\nInPNgC+K4jQwffm/tRKJRAmEAW8P+HcAPxfXLxfqJRKJt0QiCbn82KtitIyjM7kT7fNXhHg8iKN0\n42Py04Z+ahd+Tb+2FieJjHzfOyjwuxsPp81Zv2osOt6YruDNmQp0Vj2pngl8Jv5jZHolb+kDsGTR\ncnGlg/pVJWbRSoprFAd8soiL/6PJ2D985ycAlB29ncK9hwBITMvG288fi9nM+PAAAO2NNSzOTXPv\no5/mr596kE9++R9ZlFj59lc+h9dXPoXuYg2Rrr58+cm/5L//4a8JefpvmRob5rc/f57Pf+2bvPny\n/+Lh5U3JweP8+9/9BU/+5ddYWpil8vQrPPzZL/H6r39BcHgkubvL+Nevfo4v/P2/MjbUT2tdFYcf\nfIzvfu/fmHZxQRoewerLv+Qz//wsrgvzDLc04p2SyYsvfJecolKi4xN55h++yJf/5TlaaiuZmhjl\nto88zE+/8w32Hr8Dv4Agvv+Nr/GVbzxH5ZlX0Cwvcdv9j/CNr3yWB578PM7OMr7993/Jv/3kJb6i\n1fBF/2CKlJ0AXEjKQnPqXiKr3uDOolxqy8+81dA99fFP4ODoSOHeQxTtOwzAifs+9tbvIjAkbNO/\nR1g3K3ujqpc3KnuYmFnGRebE/kIFJ8rSyEqyT2Pd3oiiyMjwPFUVSqoq+xgfWwQgJTWMT3xqP8Ul\nCsLCby5rhp2OKIroNAaWZjUszWtZWdCyPK9ldWkNzfIaq8traJbWWNMY0GkNrGmMGNZM235eG6rh\nSySSaKAKSBNFUfO2n78GfEMUxerL/38B+LIois3vevwngE8ARMeE5g4ODuAg3XhGOLHWTc3CrxhZ\na0EudSfX9zbyfO/A1XFzWdWiaZlXpi5wbrYak2CmwDeTu8IOo/DYXCkI1ks6atMiF5bbaNMOAhLy\nPBLY75NFiB0asYIo0L40yZmpHgZWZ5GbBfbHZZIvC8LTSYaPXwCDyi4iYuKxWq2MDfWTkpnL6GAf\nzs5yQiOjaag6T1ZBMQb9GmODKjILilF1t+Ph6U1oZDSXzr5G4d7DdI4McKaxhilPD/Rjo2TEJ3Ky\noISJxlr2HruDuelJFudmScnKo6ulnpDwKLx9/amrOMueQyeYnhhDq1lBkZpJV0s9ETHrCqbu1kZy\nikqZm5rEbDETHhXL6GAfQaERiBIptW3t9MxrGJ6apuw//4nvm/QANP7yDTQZ7+14ag/eXtKxWG3U\ntA7z6sUu6jtGEUSRrKRwTu5NZd8uxY4s2YiiyNDgHFWVSqoq+picWEIqlZCeEUHp3iSKSxLxD7C/\nF9GfCyajhTn1MrOTS8ypl5lTLzM/vcL89AoLM6sszWowGS1/8jhHJwc8fdwu/+OKu6cLbh5y3Dxd\ncHWX4+LmjNzFGZmLM04yR5xlTjg5O+Dg4IDUQYLUQUpmYfz2WytIJBJ3oBL4uiiKv33XbdcV8N/O\nRnfaiqLI6FobNQsvMqHvxtXBiwK/u8jxOYnMYXNlhCnDHL9Xn6VyvgFBFCkNyOfOsMNEuG5+76wo\nirQsjvGNtnKU+nFkEieKvFLY552Bt9PW5Xdmm5Xa+WHOTvUwa9TiL3PnUGgyJYHxyO1Yn7cJAq3q\nccqH+hhbWcLFyYniqHjKYhX4udq34ft2lrRr1CoHaFANsWY0EeDlwUlvFz77N0+BoxOOOg26+ESa\nXnwT4Rp7abfCwZQgRtWLvHKxi9OXelnWGPD3cedEWSonylKJCN553vKiKDI8NEdFuZKqCiVq9TJS\nBwlZWVHsKUuiZI8CH9+dLQHdSRgNZqZGF1CPzDM5PI96dJ7psUVmJpZYmtO8474OjlL8grwICPHG\nP9gLv2Av/IO88An0wDfQEx9/D7z93XH33HqPbttlmRKJxAl4Gfifdwf7y6iBt295CL/8sy0jiiKD\nukZqF15kyqDC3dGPg0FPkeVzBKdN2hOPrk3y28kz1C224ih15GBQCXeEHiRQvvktQIIoUDHTz48H\nqmlfnsTdQW7XiVitxcjFGRXl0yq0ViPRbn58UlFKjl+kXW0P1swmLo0OUjncz6rRQKC7Bx/JyGNX\nZMy2rQoURZGBqVmqe/rpGV//s0mNDKMkVYHC35vkk3twNOhpe/5FfJrqiHn+WRTf+Bp9f/+vdj8X\ns9lKj3KM3/y6nE7VFA4OUvbkxnGyLI1dmdE47kDfl7HReSouKqksVzI+vojUQUJ2djT3PVBI8R4F\n3t7b9wX9YUC7qmd8YJbxwVnGB2aZHJ5jfHCOucvzBlfwC/YiJNKP3NJEQiL9CAr3JSjch8AwH3wD\nPW8KT6BrBvzLCpwfA0pRFL/9Hnd7BfisRCJ5kfVm7er71e+vB1EUUGlrqV34FbPGIbycgjga8lnS\nvQ7hKN1c4OnXjvDS5Ju0LHfj4iDn9rBD3BayH2/nzTfYLIKNNya7+PFgDUPaecJcvfnbjON4rYXZ\nxbFyzqjl7FQvNXODmAUbGT5hHA1NReFpXxOtWZ2G8iEV9ePDWGw2kgKCeTCrgNSgULs2fN+O0Wyh\naWCYmt4B5lY0uMllHMhMoSg5Hh/39SCV+PW/Jmxqgp6PfJyl3WUs7SrBp6mW8F//nKXCEuaO3G6X\nc5maXqS5bZDO7lFMJguRoT585sFSjpem4rsD1+RNqZe5WN7LxQu9jI7MI5FARmYkd92Tz56yxFtB\n/ipYzFYmhuYY6lUz2jfNaP8MY/0zLM7+MVuXyZ0IjwskJTeaI/cVEBEXSFhMAKFRfsh3+BT09XA9\nsswS4BLQBQiXf/zXQCSAKIo/vPyl8BxwlHVZ5qPvV86B9y7pCKKNPk01NQsvsmAaw8c5lN3+HyHV\nax8OGzRHu3x+9GgGeGnyTbpWVbg7unEyZB/HQva+p4b+ejBYzfx2vI2fDtYybVhF4RnI4wklHA1N\nxVHqcF0br96PUd0ip9XdNC+OI5VIKAyI4WhoKqGu9rOPvTINe2Gwj64ZNY5SKfnh0eyPSyLMa/ts\naudWNFT39tPUP4zJYiUywI/ilASyYqPe4R8TcP4NMr/wGKsZOTT/4hXEy3p+2bSaXacOIrVZaXjp\nPIaIzVkSm0wWunpGaWodYGp6CUdHB1KTI8nLSeDxI2k7rgG7uKij8mIv5ed76VNOAZCaHs6+/SmU\nliXh63erXHMFo97EsHKawZ5JhnqmGOpVMzYwg9W8vtzcydmRyIQgohODiUoIJiohiMiEIALDfOxq\nu70d3Jz2yO8K+IJoo1dTRe38iyyaJ/BzjqA44H6SPUs3ZX8giiJtK728NPkmKu0w3k6e3BF6kEPB\nJbhsocSisRh4caSJXwzVs2TWk+MbyRMJJZQGJbwjQGwm4IuiSM/qNG+qu+lbncHFwYmyIAUHQ5Px\ncbZflnmlPn9+UMnE6jLuzjJKYxIojUnAU749ToaCKNI3McWlnn5Uk9M4SKVkxUZSkqogKvBPp05l\nU5MUnjqI2aDn25/5K4qe/Nw7bg8oP03m5x5hNS1r/cvgGnYLb0c9vUhz6wCd3aOYzVYCA7zJz00g\nMz0Gl8sN2M0OXtkbndbIpao+yi/00tE2hiCIxMUHsf9gKnv3JxMUtLVl7R8GzCYLQz1qVB0TqKkD\nVQAAIABJREFUDHZPMtA9ycTg3FuOqp6+bsSnhhGXEkZsSiixyaGERfvjcBOY012NmzrgC6KNntUK\nahZ+ybJ5igBZNMX+9296s5QgCjQtdfLy5GmG1sbxd/blzrBDHAjajfMmS0EAiyYdvxiq55cjTeis\nJvYExvOkYg+5flfPLjcS8G2iQMviGG+qexhfW8Lb2YVDISmUBSXgYscl4AaLmZrRIcqHVawY9AS5\ne3IgPomCiGicHbbHZeNK2aa6p5/5VS2eri7sTo6nKCkeD9drf7nYrFbMZhMuW2wUm81WOntGaGpZ\nz+adHB1IT40mLyee8DD/P8nmb2TAN5utNNYPcf5cNw11g1gsNsLCfNh/MJV9B1KIjNrZtgzbiSiK\nTI8v0tc2Tl/7GH1tY4z0TWO1rGfuPgEeJKSFk5AeTnxaOHGpYfgHb83IcKdxk3rpiHSunKVm/les\nWKYJksdyd/jfoPAoQrKJJqRNFKhfbOWlydOM66cIlgfw6biHKA0owGkLtfRpwyo/G6zlpbEWTDYr\nR0JTeUJRQrLX5pU8V7AINmrmBjkz1cucUUuwiyePxBVRGBBr17WBS/o1Lg6rqBkdxGi1kuAfyAOZ\n+dtan1/U6KjuUdGgGsZosRAZ6MdD+3a/NQl7PQyrelldXtrSopOZ2WWaWwdo7xrBZLIQGODNiaP5\n78jmdwKCINLTNcH5c91UXuxDpzPi4+vGbXfksP9gKolJ9l8MfzNgNJjp75xA2TKKsm2MvvYxVhfX\nAJC7OpOYGcHdj5ehyIwgMTMS/+BbVzzvxw0L+POmcV6fepZgeTyngv+OBPfCTf1B20Qb1QvNvDx5\nGrVhlnCXYL6Q8AjF/rk4bMFGeHxtiRcGqvnDeDsAJ8MzeCKhhBiPrWdXequZihkV56aVaCxGYtz9\n+UxiLlm+EXYNwJOry5wfUNKsHgMgJyySg/HJRHpvz5DNleUiVV0qesYuWy3ERrInLfGqZZtroddp\n0awubfhxVquN3r5xGpv7GZuYx9FBSmpKFAW5CiLC/zSbv5FMTi5x/kwX5892MzOzilzuxO4SBQcP\np5GbG/NnZ2ug0xjoaRqhu2mY7qYRBrsn38rew2ICyN+bTHJONMlZkUQqgm8KZcxO4oaVdJKz4sRX\nLv0v8e4Fm/oAWgUbVQuNvDx5mhnjPJGuodwbfpxCv6wtLRwZ1MzxnwOXeGOyG0eplFNROTwWX7zh\nZunVSjqrZgPnp5VcnFFhsFlI9Q7heFg6iXZU3IiiiGphlvMDSnrnppE5OFIcHce+uKRt089bbTba\nhsao6lahXlzGTSajKDme4pQEvNw213u4smBkI+/L8oqO5tYBWtoGWdOb8PVxJz9XQXZmLG6uG+vb\nbGdJR6MxUHlRybkzXfT2qJFKJWTnRHPwcBolexJxcd05Vx7bzcqiju7GYbqbhulqGGakbxpRFHF0\nckCREUFqXgypeTEkZUfh5XtLeQQ3aUnHzdGHBI/3tdu5KlbBRsV8PS9PnmbOtEiMWwRfSvwE+b4Z\nWwr0ypVpftRfxblpJS4OTjwcX8TDcUUEyLc+jbhg1HFmqodLc4NYBRu5flEcC0sj2n3zuv93YxME\n2qYmODfQy8TqMp4yObenZFIanYDrBhqaG0FnNFLXO0h1bz9ag5Egby/u3VNAbnz0ph0yr9DZVMsr\nv/wpX3v2x+97P0EUGRqepqFJRf+AGiQSEhPCKMhTEBe7Od/97cBmFWhuHubMG53U1Q5gsdiIjvHn\nyU/u58DB1D+bqVedxkBn/RAddYN01A0w1r+eGMnkTiTnRPPRLxwifVcciZmRyOTbM/fx58yO88N/\nLyyClcr5hrcCfZxbJI/F3EueT/qWsuPOpUl+2F9F5Ww/7o4ynlKU8vG4QrztoIqZMazy+mQ3DQvD\ngISigFiOhaUR7GI/Yy2zzUr9+AjnB5Qs6HUEunvwYFYBuyJicNqEKdj1MLeioaq7j6b+ESw2G4nh\nIexNT0IRFmy3K5XMgmLiktLe83aD0UxbxxANzf0sLWlxc5NTWpJGfk4CXl47JxMcHZnn7Okuzp/t\nYmlpDS8vF07ens3hoxnEJ9w8C8k3i8loobd5hLaaAdprBxi6vCFLJnciNT+GfbfnkFEYR3xaOE7O\nN004umnZ8e+wRbC+ldHPm5ZIcI/midiPkOOduqUPS+viOD9QVVI7P4SXkwufS9rHg7EFeDptXZbY\nvTDL91WVtC6O4SR1YF9wEkdCU+zqQa83m6kc6efikAqd2US0jx93pWWTGRK2pSud9+JKfb6iU0nv\n+BSODlJy42MoS0sk2Ne+mn2z2cS53/+a4/c+9Ce3zc6t0NCkor1rGIvFRmR4APtLM0hNjsRxh8js\ndDojFeW9nH6jkz7l+rTurqJ4jhxNp6AwHiennXGe24Eoioz0TdNSpaKlSkVvyygWsxUHRylJWVHc\n/5mDZBXHk5gZhbNsx4efDx079h2/WqB/KvYBsrxTthTomxdG+b6qkoaFEXydXXk65SD3R+fj5rT1\nKbqWWTXPtddTPjGMi4MTx8PSORiShKez/bTtKwY95UMqLo0OYLJaSQ0K4VBCCgl+gduSLdoEgc6R\ncS529jG5sISbXMbhnDSKkxOuS1a5GdY0GpYWZt96PTZBoE81SUOTipGxWRwdHchIi2ZXXiKhITvD\n5VEURTo7xnnz9Q4uVfZhMlmJjgngk58+wIHDafj47JyrDnuzsqijrbqflksqWqv6WV7QAhCtCObk\nQ7vJKk4gvSAWF7ebf1L1ZueG6/DfjVWwcXG+7h2B/iMRJ7YU6EVRpGFhhB+oKmleHMNf5s5jCcXc\nF5W7ZZ27KIrUTU/w3fY6aqfG8ZG58HhaLlEO4bjaUUM/p9NwbkBJw8T6TtS88EgOJaQQ7rU9Jl5G\ns4UG1RBV3X0s6/QEeHmwNz2Z3ISt1+evhSAISKVS9AYTza2DNLb0s7q6hpeXGwW5CvKy43Hd5jH3\n623aLixoOftmJ6ff7GRKvYyrm4z9B1I4diILRaL9Slw7CZtNYKBrgqaLfTRX9jHQNYkoinj6uJJd\nrCC3NJGcPQr8bg2FbQs3ZdP23VgFG5XzDbw0+SZzpkW7ZPRXAv33+ipoXRonUO7BV9KOcm907pad\nJUVRpHJylO+219E8qybAxY2/3bWXB5MycXNy3rK1whUmVpY5M9BDm3oCB6mEoqg4DsUnb3g/7PWi\n0Ruo6lZRpxzAYLYQGxzA3bvzSI4M+0AaoBazmUdPlHDXp79FT58ai9VGTHQQxw/nkqgI3xErAm1W\ngabGIV5/rZ2G+kEEm0hmViQff2QPJaWJyD+EzUadxkDrJRWNF5U0VfShWVpDKpWQmBXJR79wiLyy\nJOLTwm/JJHc4Nzzg20QbVfNN/GbiDWZNC8S5RW65Ri+KIvXzw3xPVUHb0gRBcg/+Jv04p6Kyt7zi\nTxRFzo8P8d32OjrmZwh18+Cfdh/gI4oM5HbMfIcW5znd30PP7BRyR0cOJSSzLy4Rr22yPphdWaWi\ns4/mgREEUSQjOpy9Gcmb0s9vBkEUGRhUU9eoIrzgMbr71GSmx1CYn0hw0M6wIp6dWeXN19s5/WYn\nC/NafHzduO/+Qo4dz/xQLhBRj8zTcKGXxou9dDeNYLMKeHi7kluaSMG+ZHJLE/H8EJeqPozc0IB/\nab6JX0+8zpRxjhi3CL4S88ktqW7eHeiD5Z52C/SCKHJ6tJ/vttXRuzRPpIcX3yg5wqmEVJztpIYR\nRZG++RlOq3oYWJzD3VnGbckZlMUotk1aOTo7T3mHku6xSRwdHNiVGEdZehIBXh+MTNBsttLeOUxt\ng5LFJS262S6O3HYne/Zkb1g7vx3YrAL19YO8/kobTY1DAOQXxPHZzx+mcHf8jmkU2wNBEFB1TFB/\nroe6c91MDM0B67X4U0/sJX9fMsnZkTetB80tbmDAn9BP8+zAT4l0DeVLiZ+gwDfTbqWbILkHf5tx\nnFOROVv2iBFEkTdGVPxHWx2q5QViPH3499Jj3BGfbDf7A0EU6ZpRc1rVzdjKEt5yF+5Jz6EkKn5b\n6uWiKKKcmKK8Q8nwzBwuMmcOZaexJ1WBu8sHE2RXV9doaO6nuXUAg9FMWKgf99y5m/rTQ5SWpON6\ng4P93JyGN19r5803OliY1+Ln785HP1bMsRNZBH2IxvfNJisddQPUneuh/nwPy/NaHBylpBfEceKh\n3RQeSCHoQ3j18ufKDWvaxmYkiL8of5Eiv+wtyQibFkZ5ru8izYtjBMk9eCJhD/dEbT3Q2wSB1y8H\n+oGVReK8fPlcdhG3xyZdVx35emr4gijQqp7gdH8PU5oV/F3dOaxI2TYNvU0QaB8eo7xDyfTSCt5u\nrpSlJ1GYFIfM6YOpO6unF6mtV9LdO4YoQkpSBLt3JRMR7o8oijfUmlYUREaUalqrlAx3TyCKIvkF\ncZy4PZvCwvgPjc2B0WCmuaKPmtNdNFzsxaAz4eImI68skcKDaeTvS8JjB+4AuMU6N2XT1tfZi2L/\n3E0/vnVxnOf6LtKwMEKAzJ2/Tj/GPVE5Wy7dXAn032mrY3BlkQRvP57bdxvHYxR2axjaBIGmyVFO\n9/cwp9MS7OHJw7lF5IVFbUtT0my10tQ/zMUOJUu6NYK8vXigrJCc+OgPpAkqiCL9A2pq6nsZHZtD\n5uxEYX4ihQVJ+Hj/sfn81U88wGP/56soUjO3/Zzejl5npLO2n/ZLfawsaHH1kHP/g0UcP5lFcMj2\n7QX4IFnTGmks76XmdBfNVX2YDBY8fVwpPZ7J7sNpZBUn4Cz78DWbb/FOdpws81p0Lav5bl85NXND\n+MnceDyhhI9E521ZdSOIIq8Pq3i2rfatQP+F7N2bDvRXy/Ctgo2G8RFO9/ewqF8j3NObo4lpZIXa\n1zTtCgazmdreASq7VegMRqIC/TiQlUrKB6W4sdro6Bympl7JwqIGL09XigqSyM2OR34Vp8o1rQa5\niysO2yz7hMs2u6PztFQq6WsZxmYViEgIJntPEonZ0RzJCN32c9hu9Doj9ed7ufRGB81VfVjNNnwD\nPdl9OI3io+mkF8TeqsffhNyUGf5GUa5O872+Ci7OqPB2duHplIM8EFOwZa37lRr9s621DKwsovDx\n53v7b+N4TKLdgqLFZqNufJiz/T0sGfREeftyb3ou6cFh26LT1hmMVHWrqO7tx2i2kBgWzMHsNGKD\nAz4QXbheb6KhWUVDcz9ra0ZCg325585i0lKi3lO213jpAqGRMYRHxW7ruVnMVpQtw7RWKpkZW8BZ\n7kRmcSLZpckEhO4MNdBWMKyZaLyopOq1dpoq+rCYrfiHeHHyo7spOZZBck7Ujt/odIvtY8cH/EHN\nHN9TVXB2qhdPJzmfT9rPQ7G7tjwZe0V182xrLarlBeIvl25OxNo30NeMDXJ2QMmKQU+Mjx8PZBWQ\nErg93uYra3oqOpXU9w1isdpIj4ngQGYqEQEfTNNteVlHTYOS1rb150+ID6WkMIWY6Gt7xizMzuDr\nv30OlatLOtoqlbTXqDCumfAP8ebw/UWk7opHtoN88TeD2WShqaKPylfbaCxXYjJa8A305PiDhZSe\nyCIpO/JWkL8FsIMD/sTaEt/vq+DVyU5cHJx5SlHKI/FFW/a6EUWRc+ODPNNSQ+/SPHFevnx330lO\nxCTarZ5tslqpGFZxpr+XVaOBOL8APp5dSGLA9phlLWp0lHf00tg/jCiK5MRHcyAzhSCfD0ZNMjW9\nRHVdD9296/t3M9KjKS5MISjw+urfNpuN4/d81O7nJYoi4wMztFzsZaBjfSdAQmYkOWUpRCXe3AtF\nbDaBzvohKl5po+Z0J2taI15+bhy6J5/Sk5mk5MbcGoK6xZ+w4wL+jGGVH6qq+N14Gw4SKY/E7+bx\n+GJ8tmg8JooiFZMjfLulhs6FGaI9vXmm7Dh3xCXbNdD/qq2L5+uamNOtEe8XyCO5RSj8tyfQz61o\nuNDeQ8vgKBKJhAJFLPszU/Dz3P5l1qIoMjw6w6XaXoaGp5E5O1FcmExRQRKenhtTePzkma8TFhV7\nVbO0zWAxW+ltHKK5ood59TJyNxm7DqWTXZqEl9/Na0MsiiKD3WrKf99C5WvtLM9rcXGXUXwknb23\nZ5NVFH+rJn+L92XHBPwl0xovDFTzy5FGBFHk3uhcnlKU2sWPvnZqnG81X6Jlbopwdy++VXqMu+JT\ncLRjoP91ezc/qm1kTrdGfkQYD2YWogjYnhLFzNIK59p7aB8ex1EqpSRVwd6MZLw3uWxkIwiiiLJv\ngku1PainFnF3l3Nofxb5uYpNrwx89AtfxWI2b/nctCtrtFYqab/Uh2HNRECYL8ceKiElP+6mtt6d\nUy9T/vtWyn/fwsTQHI7ODuTvTWbf7dkU7E+55Rt/i+vmhn8KtBYj/zVUx38N1mG0WbgjMpNPJZYR\n5rr1BlrzrJpvNVdTNz1OsKs7/6/4EPcq0u02GWu2WvlNRw8/rG1kVqsjLyKMb91+jMLoCLt56bwd\n9eIy59q66RyZwNnRkb3pSezNSMbjAxiWstpsdHSNUF3by8KiBl8fd24/sYusjFictpBV9rQ1IYoi\naTkFmz7G9Ng8zeU9KJuHEUQRRWYUeftSiUi4ec3L9Doj1W92cuF3LXTWr0/4pubF8Lmv38Oe4xm3\ndPK32BQ3LOCLiPx0sIb/7K9m1WLgSGgKn03aR6xHwJaP3b0wy7daqrk4MYy/3JW/L9zPg0mZdvO6\nsdhsvNzZww9qGpnWaMkJD+WbJ49QFB2xLQFmcmGJs63ddI9NIndy4lB2KqVpSbjJt99u1myx0tI2\nSE1dL6saPSHBPtx3dwkpyZF2KYUZDXoEQdjw4wRBYLBznMYL3UwOzuIsdyJnbwp5e1PwDrDfgpkP\nEkEQ6GoY5tzLTVS/2YnJYCE0yp+H/s9hDtyVS3CE/Tak3eLPkxsW8Ac1c3yr5xwlgfF8IXk/Kd5b\n1z0Prizy7ZYaXh9R4SWT8+X8Uh5JycbVyT4qDKsg8Eq3kueq65lc0ZAZGszXjx+iOCZy2wL9mdYu\nesbUyJ2dOJyTRmlaEq6y7VeVGIxmGpv7qW1QotebiIoI4I4ThcTH2a/ZaTGbySkq3dDxzEYLXfUD\nNJV3szKvxdPXnQP37CJjtwKZy82ptpmZWOTcS82c/20zc+plXN3l7L8zl4N355GcE3XTXqXcYudx\n4yZtZe78tPhhCvxjtnysCe0q32mt5eXBHlwcHflcVhFPpufhJbNPqUMQRd7o7ee7l+oYWVomNTiQ\nv7tvH3vjYrY90Ls4O3EkN53S1ERcPoBAv6Y3UtfQR32TCpPJgiI+lNLiNKIiA+3+XKd/90tm1RM8\n8fTfXvO+ulU9LRd7aa1SYjKYCYsNZO8d+SiyopDehGoUs8lC7ZluTv+qgY66QSQSCdklCTz6V8cp\nOpx2qy5/i23hhgV8P5nbloP9vH6N59rr+Z++dqQSCY+l5vLpzF34udinvimKIhcGhvlOZS2q+QUU\nAX48d+o2DinitiXQqxeXOdPSRffYJC7OThzNTWdPWiIu2+SU+Xa0Wj019UoaW/qxWmykJEdSWpy2\nrRulTt73cYwG/fveZ35qmcbzXfQ0DiEIAorMaHYdSiMsdvs0+9vJUK+aM79u5OIfWtGtGgiO8OXj\nTx/l4N15BIR+OGwcbrFzueFN282gMZt4vrOJF7qbMdus3KdI5ws5uwlxs4/kThRFqkfGeKaylu7p\nWWJ8ffj2Hcc4nmK/oay3M7W0wpmWLrpGJ5Bfyeg/oEC/qlnjUm0vLa0D2ASRjLRoSotTCQzY3uAz\n0q9kYmSQ0iO3/cltoigyOThL/dlOhroncHRyIKskkfwDafjchPV5w5qJilfbePOX9Qx0TeLk7Ejx\nkXQO31dAZlHcraGoW3xgXDPgSySSnwAngTlRFNOucvte4A/AyOUf/VYUxX+y50lewWi18vPeNr7X\nUc+KycjJmET+Mq+EWC/7ZaHNE2qeqaihaUJNmJcn/+/EIe5Mt5+E8+3MLK9ytrWL9uFx5E7rNfqy\ntKQPpHSzsqKjqraH1vYhRFEkKyOW0uI0/Hw/GJ26IAhI3vWeioLIQOcYDee6UA/P4eIup+RkDjll\nybi633hv/I0y1Kvmjf+p4+IrbRjWTEQrgvnk1+5g/525eHjfUtnc4oPnejL8nwHPAT9/n/tcEkXx\npF3O6CpYBYGXB3p4prWG6TUtZeHR/FVeKel2HMXvnZ3jmYpaKodGCHBz5e8O7+MjWWnb4kc/v6rh\nTGs3bYOjODs5cjArlbL0D0Z1s7yso7Kmm7aOISRIyMmKY09x6jtcK7cbi9lMZGwCcUmpANisNrob\nh2g428nS7Cpefh4cvr+I9CLFTaefNxrMVL3Wzuv/U0d/5wTOMkdKT2Zx/IFCkrJvNWBvcWO55qdJ\nFMUqiUQSvf2nctXn5tz4IN9susTgyv9n77zDorq2PvwOoKCCqICoYEUUlWKhiAKKYi/Ye0uiRo1J\nvKlXTUyixhhjejRqvFETe68oCkgR6SBNAVFQQaT3PjPn+8Mkn9drZ4aZ0fM+D4+cmTP7rJGZ39l7\n7VXy6WnSmu8GjKRfm3YKu8atgiJ+CLzMmavJGOrp8oG7C7Pte9JICfXhC0rLuRCTQETKTbS1tBho\n2w13u27o6yl/9lpYWEbApXhi4m6iJZHg0NsS1349MDSs/xZ10aGB+J0+yvurf+RKcDIRPvGUFlXQ\n0rwFnm+407VXB43biM24mYvX3hAuHImgrLiStp1b3p/Nj+8jxsyLqA2Kmj45SySSWOAu8IEgCImP\nOkkikSwEFgK0a/dk0Y64l8FX4QFE5dzFwrAFWwZ7MryDpcJmSNmlZWy6FMrh2EQaaGuxuJ8jb/Tt\nQ1MFia9H9/9ffeQWl/GbTziHQ+KRIGGaix3zPRwxbqp8sc3KLWbHsVC8Aq+irSVhgocdsz0daVlP\nrptH4Wg+gVbarfjts0OUllRi17Md02b2w95BOVFPykImkxPme5XTfwYTE3wdbR0t+g+zYdRMZ2yc\nlLOxLyJSFxQh+NFAe0EQyiQSyUjgOGD5qBMFQdgGbIP79fAfdU5qUT5fRwRy/lYqLRs34SuXoUzp\nYqMwH3pJVRXbQiL5IyIGmVzOtF62LO7viIm+4sW3pKKKHX6R7AmMQSqT4+nYnTeH9qVVc+WL7b28\nEnYeD+O0fwLaWhImDrFj1hhHTFrUn+vmYQryy/jpx4McOXwaUxN7nPtbMn1mP7r3MFOZTS9CaVEF\n5w6EcXr3ZXIyCzFp3Yw57w9n2BRHWmjgprLIq0OdBV8QhJIHfveSSCSbJRKJsSAIec8zTnZFGd9H\nBXMgJZ7GOg34oI8Lb1j3UVjSVFWtlN1RV9h6OZySqmrG9LDiHTdn2jVXfDRKRXUNuwNj2OUXRVl1\nNSN7W7F4mDPtlBz5ApBTUMqu42Gc9ItHIpEwbrAtc1Q8o8/JKeHA3hDOnomltDSXnj278cWa+XSy\nUHxsvzJJu3aXE7sucfFENDXVUmz7WrBw5Vj6enQXi5aJaAR1FnyJRNIKyBYEQZBIJI6AFpD/rK8v\nq6lhW3w42+IjkcplzO3ei7d7Oissll4ml3Mi4Ro/BoaQVVKKm0UH3h/oQjfTupdweJgaqZTDl+PZ\ndiGcgrIKBlp3YumIfnRpo/hrPUxBUTl/nAznmE8sMrnA6IHWzBvnRCtj1c0472UVsW/PZbzPxiEI\nMHBQV8aMm4S1tXKbnCgSmUxOuN9Vju8IIi70Brp6DRg8wZ4xs/vT0aq1qs0TEXkuniUscx8wEDCW\nSCQZwGdAAwBBELYAk4DFEolEClQC04Rn6JsoALuvXeGH6GByKysY3bErHzm40r6pYroOCYKA/400\nvr14iZTcfGxam/L16GH07dBWIeM/iEwuxysqiU3nQrhbUIK9hTk/vjEWuw7KF4Tiskr2no7k4Llo\namtlDHftzusTnGnTsn5q4T+KzIwC9u6+jM/5BLS0JIwY1ZNpM5xJuR7HF198zKFDh1Rm27NSXlrF\n+UPhnPwjmHu38zFp3Yw3/j2KYVOdxE1YEY1FZT1tm1p0EJovfwvHVuascBxAr5aK6yEad/ce3/gF\nEXY7g/bNm/GvAf0Y0a2LwjfRBEEg6GoaP54J5npWHlZmLXl3dH/6dVV++F15ZQ0Hzkax93QkFVU1\neDhbMX+SM+2UmBn7NDIyCtjzRzC+FxLQ0dFm9NheTJnWF2OT/3cnCYKg1puZuXeLOL4ziHP7w6go\nq6J7nw6Me82VfkOtRbeNiFqgkT1tDXX12OYxjqHtOytMAG4XFvF9wP0QyxaNG/HpUHem9bKhgYLK\nIT9IbHoWP5wOIupGJu2Mm/H17JEM69kFLS3lillVTS3HLsTyx4lwikorcbPvzILJ/ejcTvluo8eR\ncSef3X8E4+eTSIMG2kyY5MCUaX1pYfT/G8TXrl3jwIEDfP755yqz80mkJmRwZHsAQV6xCAK4jrBl\n/BtudLVTXAiwiIiqUZngmzbWZ1iHRwbzPDdFlVVsDg5jT+QVtLW0WNLfifl9+6Cvq/hEprScAn46\nE4xvXCpGBo1ZOWkQE/paK+Wm8iBSmRyvgAS2Hwkht6AMR5v2LJzSnx6dVedHzswo4M9dl/4R+omT\nHZkyzYnmj4gEMjIyws3NTQVWPh5BEIgOSuHQ1ovEhqTSSF8Xz7kueM5zpaWZ5jc0FxF5GM1KY3yI\nGqmU3VGxbA4Oo7Sqmol2PXjXrR+mBooPPcwrKedX71COhsaj20CHt0Y4M3tAb6WXKpbLBS6Gp7Dt\nYDC3swqxtmzN52+NpHd3xe9FPCtZWUXs+SOY895xNNB5stADlJWVUV5ezqBBg+rZ0kcjrZUReCaW\nw9sukpaUhVErQ95YPpoRU51o0rRuPZNFRNQZjRR8QRA4ey2Fjf6XyCgqwbVTez4c5IpVS8W7NSqq\na9h5MYpdF6OolcqY0s+OhUOdMDJQ/sZdRMItNu8NIiktm07mRmx43xOXPqpL6MnNKWGWfjH8AAAg\nAElEQVTPn8GcPROLlraEcRPsmTbd+b9cN48iNjaWXbt2sW3btnqy9NFUVdbgfSCMo9sDyLlbRDtL\nU/719RTcPXtrXAkHEZEXQWWbtvb29kJkZORzv+5KZhZf+QQQk5lFVxNjPh7shkun9gq3TyqTczw8\nkc1nL5NXWsEQO0veHeVSL7H0yWnZ/Lo/iLC4W7QyNmD+pP4Md1Vcs/XnpbCwnH17LnPqRDSCXGDk\n6J7MmNX/vzZj1ZmykkpO/RnM8R1BlBSU08O+I5PfdMfB3UqsVCmicWjkpu3zkllcwsaLlzhzNRmT\nJo1ZN2oI4226K1wEBUHg0rV0vjsVxI17+fTs0JrvXx+DXQfFRRE9jrs5xWw9eInzwUk01dfjndkD\nmeBhh66KZp9lpVUc3B/K0SMR1FRLGTLMhtlzXWjV+tlvev7+/pw7d47169cr0dJHU5RXyrHfgzi1\nO5jKsmoc3bsxZfEgetjXvemOiIgmovaCX1Zdw7aQCHaERwGwpL8TC5ztaaKEWvEpd3P59kQgISm3\naWfcjG/njcbDVnFRRI+juKySncfCOHL+ChKJhDmejswe64h+Y+VXz3wUVVW1HD8ayYG9IZSWVjFw\nUDfmvuZG23bP31O1d+/eGBsbK8HKx5OfXcyR3wLw2htCTbUU15G2TFk8CIvumlXCQURE0ait4MsF\ngWNxV/nO/xK55RWM7WHF++4utG6qeDdCXkk5v5y9zPGwRPQbNeSjcQOY2t+OBkqOu66ukXLIO4Y/\nToRRXlHDyAE9WDC5n8rKIEilMrxOX2HPH8Hk55fh2NeC1+cPpLPli5WhvnfvHhkZGdjbv9Dq87nJ\nvVvEwS1+eB8MRyaT4+7Zi2lLBmPeSbNKOIiIKAu1FPzIO5l8ecGfxHs59DRrzeZJY7EzU3z4YVWN\nlD8DotnuE06tTMZMt14sHOKEYRPlliuWywV8QpL4df8l7uWV0K9nRxZPd1VZLL1cLhDof40d2wPI\nzCzE2sacTz4fj41t3SKBUlNTCQoKUrrg52QWcuBXP84fCgfAY6I9UxYNovULrEhERF5m1GrT9m5x\nCRv8gvC6lkIrA30+HOTK6O5dlZIhey4mhR9OB5FVWMogGwv+NcaV9ibKj72+kpTBT7sDuHbjHpbt\nTXh71gAcrBW/6fysREelsX3rRVKS79GhownzFw7Eybnubqz6yKh9WOiHTnZk6uJBYgy9yEuNxm/a\nVtbW8ltIJL+FRiBBwlKXvixwtldKE5LE2/f4+pg/V9KzsDIzYc30YThaKj+mPSO7iE17A/EPv45J\nC30+WTSM4a6K33R+Vm7eyGHbFj8iw2/S0rQpHy0fw+AhPdBWUOORXbt2cf36db788kuFjPcg+dnF\nHNjsy9kDYSDAsCmOTFkkCr2IyNNQqeD/HU+/wS+IuyWljOjWhY8HudLGUPEVHnOLy/jJK5gT4Vdp\nod+Yz6cOwdNR+YJbWl7FzuNhHDoXg7a2hAWT+zFjlD16uoq/mT0LuTkl7PxPIOe949DX1+PNJYPx\nHNeHhrqK/SjMnDmTgoIChY5ZlFfKoa0XOb37MjKZnKGTHZm2ZLAo9CIiz4jKBL9KKmXOnsOE3c7A\nqqUJ34wdjkM7c4Vfp0YqZXdADNsuhFErlfPaIHsWDHFEX8n9Y6UyOSf94vntUDDFZZWMdOvBm1Nc\nVNaApKKimv17Qzh8IBxBEJg01YkZs/phYKD4zNLQ0FBqamoUVkqhvKSSI9sDOPZ7IDVVtQwe34fp\nbw8RffQiIs+JygQ/Lb+Qxrl5fDF8EFN62iglnt4/8SYbTwRwJ68Yd2sL3h/rVi+JUxEJt/jhD39u\n3smjp5U5y+YMpGtHxTVcfx5kUjlnvWLZtSOQwoJy3Ad3540FA58rlv55qaiooLq6us7jVFXWcPrP\nYA786kdZcSVuo+yY/a9hYtSNiMgLorJN2262tkJIWDjNGik+IiYtp4Cvj/lzOekWnUxb8NG4gfSz\nUv7GaGZ2ET/tDiAwMpXWJk15e+YABjoqrg/v8xIVkcavm3xIT8vF2sacRW95YNVNuQlkpaWlNGnS\npE4ZrDKpjAtHItn9gzf52SXYD+jK3A9G0lnDWiGKiCgDjdy0bdKwocLFvryqhm0XwvgzIBq9Bjp8\n6DmAaa52Sq9kWVFVw67jYew7E4WOthaLprowbWQflWXI3rmdz9bNvoSGpNK6TTNWrZ6Aq5vio50e\nxYYNGzA1NWXp0qXP/VpBEAj1SWTHN17cSc2hW+/2fPzjTGwcLZRgqYjIq4daROnUFUEQ8IpO5ruT\ngeSWlDPOsQfvju6PkYHiG5M/fN3zl5P4ZU8geYVlDHftzpJprirz05eWVvLnzkucOBaFrl4DFi4e\nxLgJ9jSsxxvP6tWrkUqlz/26a9HpbP/qNFej0jHvZMKnW+bhPKSHWjdLERHRNDRe8K9n5bHuiB9R\nNzLp0daU718fg2175deIv34rh+92+nElKROrjqasWzYGmy7Kr7fzKGQyOWfPXGHH9gBKSioZMaon\nr80fQPPmyr3hPcxPP/2Ek5MTTk5Oz/yau7fy2PmNF0FecTQ3MeDtLycxbLKD2F1KREQJaKzgl1VV\n8+u5UPYGxaCvp8uqyYMZ39da6WGWJWVVbDsUzLELsTTV12P5giGMHmij9E5XjyM+9ja//HSBG6nZ\n2Ni25a13hr5wKYS6Ymtri5nZs/nZS4sq2PeLD6f+DEZbR4uZ7wxh4oKBNGqimvpBIiKvAhon+H9n\nyW48EUBeaTmT+trw9qj+NGui3MYVcrnA2aBENu0NpLi0iglD7FgwuT9N9ZVbhuFx5OWWsm2LH34+\niZi0bMonn41jgHs3lblAYmNjcXZ2RvcpXcZkUhlee0P58wdvyoorGTrZgTnvDadFS8XnXoiIiPw3\nGiX4aTkFrDvsR9j1O3Q3b8mPb4zFul0rpV83JT2HjTt8iU+5i02XNvy4YjCW7VUTGlhbK+PooXD+\n/OMSMpmc2XNdmDrDGT091SRy/c3GjRtZvnw53bt3f+w5UYHJbPvyJLevZ2PnbMHCTzzppOSoIRER\nkf9HIwS/qkbKdp9wfveLoFGDBqycNIhJzoqP3X+Y8opqth26zGHvGAwN9Phk0TBGuPZQmfsmOiqN\nn3/w5s7tApz7W7J4qQdt2qhHlumff/752Ofupuex7cuThPlepXV7I1ZtnUdfD3FDVkSkvlF7wb90\nLZ11R/zIyC9mdB8r3vd0q5foG9/QFH784yL5xeWMH2zHm1NdVOq+2bLZB3+/a7Qxa86XX0/BqW9n\nldjyMDKZDDc3N44dO0bLlv+96qksr+bAZl+O/CeABg10eP3jUXjOc1V4GQcRxZB3t4CM5LsU3Cui\nIKuQ4rxSdBs1pIlhYxo3bURHm3ZY9u4k3qg1GLX95uUWl/HNiQDOxaTQoWVzflsyESfLdkq/bkZ2\nERt/9yUsLp2uHVuy/n1PenRWftTPo5BJ5Rw/FsnO/wQilcmY+5orU6c7q5Vgamtrs3Pnzv8Se0EQ\nCPKKZduXp8i/V8zgCX14/aNRop9ezcjLzCfi3BViAxKJD7xGzu28/3peS1sLuUz+X4+NWTSUdzYv\nqE8zRRSI+ijHX8jlAodD4vjxdDDVUilvjXDmtUH2NNRRrqm1Uhl7TkWw41gYOjpavDfXnQlDe6qs\nmuW1q5n88O05bqRm4+hkwdJ3h9JGzYqESaVSfv31VxYvXvzPYxk3c9j8+XFiLqXQqXsbVv4ym269\nO6jOSJF/EASBlMgbBB8PJ8wrmpuxtwBobmqIjVt3Jv5rNB2s22HUpjlGrZvTxLAxMqmMipJKSgvL\n+HP1Iby2+zLjk4kYt2mh4ncj8iKoleBfz8pj9UEfYtOzcLRsy6eTB9dLjfrY5Ey+/u0CaZn5uDta\nsmyuu8q6TpWVVrF920XOnIrByNiAVV+Mx3WAlVouo0tLSyksLERbW5vqqloObPbl0NaL6Oo1YPHn\n4xg1s5/Cyi2LvDi5Gfmc3e6L986L5NzOQ0tbC2sXK+avn4XjiJ50sG732M+XTgMdmhoZ0NTIgNmr\nJuO7OwjvHReZuXJiPb8LEUWgFoJfXSvltwv3N2X19RqydsYwxtgrP8SwtLyKX/df4phPLK2MDdj4\n4Xj69+6k1Gs+DkEQCPRPYtNP5ykqqmD8JAfmve5GYxX1tX0aMpkMQRBYtWoVUUHJbFp1lKxb+Qwa\n15v5y8fQ3EQ1N0yR+wiCQFzAVU5sOssvRwaQK0zBw8qQD3fo0ndMH5r+NaH59FNYawuvvw7/+c+T\nxwz3igGgZbv67VEsojieKvgSieR3YDSQIwiC9SOelwA/AiOBCmCeIAjRz2pA5I0Mvjjgw63cQkbb\nd+NDzwE011duTD2Af/h1vt3hS0FxBdNH9mH+5H401lN8Y/RnITu7mJ+/9yY0JJXOlqasXT+FLl1V\ns2/wrERERPDF56sZ2HUm/qdiMOtowle736RnP0tVm/ZKIwgCAQcvs+fLI6Qn3MGghT4rlrZj45He\nBKUNY4MtNP3LG+PrC+vWQffu8PPPTx73Wth1tv97N06jeuMxSzFlr0Xqn2eZ4e8EfgH+eMzzIwDL\nv36cgF//+veJyOUCaw76cCgkHrMWTdny5oR6qWiZW1DGtzt9CYhIxbK9Cd98OB6rTqrJTJXLBU4e\nj+I/2/wRBIE3lwxmwkQHtHXU2w0iCAKlGdo0udeLS+lxzHxnCFMWD6Khipq6iNwnKfw6v763i6uX\nk+lg3Zb3/7ME92n90G2ki+M0GDAApk6F6GgoL4dZs0BXFw4ehMaNHz2mIAic+vU8W97bSfNWzXjv\nt0Vq6V4UeTaeKviCIARKJJIOTzjFE/hDuF9nOVQikTSTSCStBUHIetK4qffyORKawJyBvVkyvB+N\nlSwWgiBw6mI8P+8JpKZWxlvTXZk2yh4dFfmYb6Xn8d03XiQmZNDHoSPL3h9BayXWqFcUWbfzWTJr\nOSlX0xju7smy9VNoayHWp1clhdlFbP3wD3x3B9Hc1JD3flvE0HkD0X6gSmy/frBmDSxfDm++Cbm5\ncO8e/PYb9Ojx6HFL8kv5eel2/A9cxnFkLz7e9TZNjURXnSajCB++GXDngeOMvx77H8GXSCQLgYUA\nJmZt2b1sWr1kyt7NKear384TmXCbXt3MWb5gKG1bqybiRSqVcXBfKH/uuoReo4Z8vGIMHkOt1X7W\nJJfLOfVHMDu+8aJarseSD+ay+KMZdap7L1J3YgMSWTf9B0oLy5n28Timr5hA48d0Mfv4Y7h4Efbu\nvX88fTrMn/+/50lrpZzc7M3u1YcoL6nkjXUzmPKRp/i3VjExl1I4/Jt/ncao101bQRC2AdsA7O3t\nBWWLvVwucOR8DJv3B6GlpcVHb3jgOchWZZmyN1Kz+Wb9aVKvZ+M2wIq3lw2luYpKKT8PmWm5fP/x\nQRIj0zDpqsUHaxdh2+fxJRRElI9cLufA1yfY+ek+2nRuxVfnPqGT7ZNdohIJTJgA58/fP1627L+f\nFwSBsDPRbPvwD+4k36W3hw2LvptHR2vl57+IPJ7Sogp++/IkF45EYtahbhvmihD8TKDtA8fmfz2m\nUu7cK2TdVm+uJGXi3LMjH8/3wNRINYk/UqmM/XtC+HPXJZoaNmLV6gm4DbBSiS3Pwz+z+g1eNGio\nw3vfTCU2LYAqWZmqTXvlObTxFL+v3MvAqf1YtvVNmjR9jBP+Aa5fhw8+gObNobj4/uw+PBwEaSU+\nu4M4ufkc6Ql3aNu1DWtP/RvHkb3VfuX5MiMIAr7Hovht3SnKSyqZumQwM9724D96y194TEUI/klg\nqUQi2c/9zdrip/nvlYlcLnD4fAyb9wXRQEebTxYNY6Sb6uq23LyRwzfrT3M95R7ug7uz9N2hGBo+\n/cuparIzCvjuowPEhd7AYaAV7341Gd0m2gzRd1C1aa88N2LT2fnpPlwmOLFi77Jn+mxXV9/fsC0v\nB29vCAiAL78ED4ckjO6so6Kkks69OvL+f5bgMcsVnQZqEbH9ypJxM4dfPj1CbMgNrHq15521E+mo\ngEKDzxKWuQ8YCBhLJJIM4DOgAYAgCFsAL+6HZKZyPyzztTpb9YJkZhexdos3V5Iy6NezIx8vGKKy\nBCqZTM7B/aHs+j0QfQM9Pl8zERe3riqx5XkQBAGfI5H8+sVxkMCyryYzdIojgiBga2uLr68vpqaq\niWoSuc/OT/fTyKARy7YsfOaJzAcfQEwMvPl6MTnhPuSdDceQ1whOsGKay1S+2tCZbn27iDN6FVNV\nWcPBX/04tO0ienoNeXvtRIZPc1LY/smzROlMf8rzAvCWQqx5QQRB4LhvHD/vDkBLS8LKN4cxaoDq\nZvWZGQVs+Oo0iQkZuA7oyrL3RmDYTP1n9SWF5fy04jDB3vHYOHXi/W+mYWp+P2hbIpEQGRmJnp5q\nCsiJ/D+tO5kSce4KtTVPbyVZlFvMpo3Z/PJLF4wa3uT678u5IZHTra8lX31yh5WbuuAVN4ovTe/7\n+EVUR6hvIlu+OE52RiHunr2Zv2I0LUwU64aW3Nfr+sfe3l6IjIys8zg5BaWs2+pNWNwtHKzbsXLR\nMJX56gVB4MypK2zZ5IOOjjZvLxvGII/uGjFrigm+zsb391FSWM6c94YzYf6Af8oiZGdns2LFCrZv\n364R7+Vl5+6Ne8zr8g6de3XAaVQfDI2b0rhpI7R1tCnMvl/pMu9uATeupJNytZpQvgEkvDVsN8Mm\nd8ZhRK9/auGcOAHjxoGDA1y6BA1Vk3v4SnM3PY+ta08Q7neNdpamvPXFeGyfUA1XIpFECYJg/yLX\n0mjBv3A5iW9+96VWKmXpjAGM97BTWQROYUEZ331zlpDL1+ndpwMf/ns0JhpQHVJaK2P3D94c3HIR\n804mfPTDTDr3+O82hZWVlVy+fJnBgweryEqRhzn07Sm8d/hx62rG/zzXQLcBRq2b0cG6HT36dcXG\nrTtd7DvRoKGYGKdOVJZXs3+TL0d/v18+fMY7Qxg3zxWdBk/u5/zKCX5JWRUbd/hy4XISPTq35rMl\nI1QWVw8QGpLKxvWnKa+oZsGb7oyb4KCyG8/zkJ1RwPp395AUc4vhU51489Ox6D1UuycpKYmKigp6\n9+6tIitFnkRtTS0VJZVUlFQirZXS3LQZTQwbiysxNUYul+N/Mobfvz5DfnbJc5cPr4vga9xWfFTi\nbdb8eo68onIWTO7HHE8nlWXL1lRL2bbFj+NHI+lk0ZJvvp9Bx06akXUa6pPItx/sRy4XWP7zLNxG\n9XzkeWlpaeTm5oqCr6Y0aNgAQ+MGGBqr/2pSBK5Fp7N1zQmSY+9gaWPOyk1z6rV8uMYIfq1UxtYD\nl9h7JpK2rZrz2xfT6Wah/Czdx3ErPZe1Xxwn7WYuEyY5MH+hu1o1Jnkc0loZO77x4uj2ADpbm7H8\n59m0af/oZI6CggJGjBhRzxaKiLx85GQWsmODF/6nYmjRsinvfTOVweP71Hv2svorFHDrbgGf/XKG\n5LQcPAfb8u6sgTRSUdNuQRA4eyaWTT+dp1GjhmrVbvBpFOSW8NXSP0mISGP0rH4sWDnmiQXP5s2b\nx/Lly3F2dq5HK0VEXh7KSyo5uOUix34PRCKBaW8NZsqiQTRqopqy52ot+IIgcMo/ge93+dGwgQ5f\nv++Jm73qxLW8vJrvN3rh73eN3n068O+VY2lhpP6lEQASItL46u0/KS+t5KPvZ+Du+XQXzZEjR9BR\ncqcxEZGXEWmtjLP7Qtn903lKCsoZPL4Pc94bTksVd61T229zWUU1X2+/gE9IMn16tGPVkuEqS6IC\nuJ5yjzWfH+PevSJenz+AaTP7acTGLMCZPZf59YvjmJq1YO3OBXS0enKt/by8PGbPns2pU6fEzT8R\nkedAEAQunY1j18azZKbnYdvXgvnLx2BpY65q0wA1FfzE1CxW/XyG7LwSFk11YfZYR5WJ6/3Y+hg2\n/XwBQ8PGfPvDLGxs2z79hWpAbY2ULV8cx2tfKPYDrPj4x5noN316cxkjIyPWrl0rzu5FRJ6DuNBU\nfv/6DMmxd2jfxZTPf3sdx0HK79z3PKjVN1oQBPZ7RbFpXxAmzfX59bNp2HSpe/2IF6WysoYfvj2L\n74VE7B078e+VY2jWrInK7HkeSgrLWbtkF/FhN5n8pjtzPxjxTP1lw8PDyc/PFzdrRUSekdTETHZt\nPEtkQBLGrQ1Ztn4KHhPt1bKfs9oIfnFZJWt/Pcel6JsMcOjMioXDaKqvujT+jDv5fP7pEW6l5zHv\nDTdmzOqvMS6cjJs5rHrjP+RlFfPhdzMYNO7ZQyrlcjmqys0QEdEkMtNy+eN7bwJPX0HfsBGvfzyK\nsXNd0FVRQMmzoBaCn5iaxSc/niKvsJz35rozaVgvlS6DgoOS+XrdKRo00Gb9xun0se+oMluel7jQ\nVNYs2oVOA22+3rvouWJ84+LisLe3F105IiJPICezkH2/+HD+cAQNdXWY9tZgJi4Y+EzuUlWj0m+2\nIAgc9o7hp90BmLTQZ5uKY+tlMjl/7Axizx/BdLVqzWdrJtJSA8oj/I3/yRi+/Wg/rdsZseb3+f8U\nPntWvvzyS1avXk3Xrupf1VNEpL7Jzy7mwGZfzh4IA2D0rH5MWzKY5iaa0/ZRZYIvlwt8+tNpfENT\ncOndiU8Xj1CpC6esrIp1a04QHnqD4SPteGfZMI1IpPqbI9v92b7uNNaOnVi1dR4Gz1FzXxAEKisr\nOXDggBItFBHRTApySziyzZ/Tuy8jk8kZNtmRaW95YNJG/XtQP4zKFC39bj4Xw66zZLorM0ertvZM\nxp18Pl1xiLuZRbzzr2GM8dScTj+CILDzm7Mc3OKH60hbPvh2xnPfqKKioli5ciXe3t5KslJERPMo\nyC3h8FZ/zuy5jLRWhvu43sx8Zyit2xmp2rQXRmXF09p27CocP32BPj1U2y8zKiKNNZ8fQ1tbwmdr\nJmJrpzn9O+VyOZs+PYrXvlBGznBmyRfjXzgyoKysDH19zUgiExFRJgU5JRze9v9CP2h8H6YtGYxZ\nRxNVmwZoaPE0UyMDlYv9yeNR/PLTedq3N2bNusm0aq05SzSZTM73Hx/A92gUUxYNYt6HI15oVfL+\n++8zevRo3N3dlWCliIjmkHu3iENb/Th3IByZTM6gcb3VSugVgeY4qRWITCpny2Yfjh2JpK9zZ1as\n8qRxY9XUtngRpLUyNr6/j4DTV5jz3nCmL/V44bEWLlxI69ZPzrwVEXmZybqdz8EtfvgciUQQBIZM\ndGDyIvfHFhXUZF45wa+sqGHt6uOEhaQycbIjCxcPUssEicchk8r45v19BJ6+wusfj2Lymy82My8q\nKuLbb79l9erVGrNfISKiSNKSsji4xY/A01fQ0tFi+FQnJr/prvJ6N8rklRL8/PwyPl1+kNTr2by9\nbBie4/uo2qTn4r4b5yCBp6/wxr9HMWlh3dwwlpaWotiLvHJci7nFgc2+hPleRa9xQ8a97saEN9ww\nMjVUtWlK55UR/Nu38lj+0QGKiytYvW4yfZ01o6Tx3wiCwObPjuF7LIo57w2vk9gHBARgYWHBnDlz\nFGihiIj6IpfLifRP4tA2fxLCb2LQrDGzlg1l7BwXDJo9ewizKikqKic4KKVOY7wSgn81IYOVyw+h\nrS3hux9n0aWr5vms9/x4Hq+9IUxaOLBOPnuAK1euoKuri7m5elTwExFRFrU1UvxPxXDkN39upWRj\n3NqQhSvHMnyak8pq0j8vJSWVHD4QxtEjEdRUS+s01ksv+KEhqaz57CjGxgZ8tXEabdponn/Oa28I\ne366wJBJDrz+8agXHkcul5OYmMi7776rQOtERNSP8pJKzu4P5cSuS+RlFdOhSyve3ziNgWN6PbVJ\nuLpQUlLJkUPhHDsSSWVFNQPcuzF7risdOq544TFfasH3vZDIhq9OYdG5Jes2TNWYSpcPEhWYzKbP\njmE/wIp3102qk8/95s2brFq1iqNHj4q+e5GXkuyMAo7vCML7YDiV5dXYOVvw7rrJ9HHrqjGf+X+E\n/nAEFRU1uLh1Zc48VzpZ1L1f9ksr+KdORPPT9+ewsWvHmnWTaaIhy7cHuZVyjy+X/kGHLq1Y/vMs\ntHVefGaSk5ODhYUFx44dU6CFIiLqwbWYWxzfEcSls3FIJOA2qicT3nCjs7XmuC2Liys4ciic40ci\nqaiowW2AFbPmuihE6P/mpRT8wwfD2bLJByfnzqz6Yjy6T+jbqq6UlVSyZtFO9Bo15PPtr9O4jnWG\nFixYwIoVK3ByclKQhSIiqkVaK+PSuTiO7wgi+cptGuvrMf51VzznumpUnZvCgjIOHQjn5Ikoqqtq\ncXVTvND/zUsn+Hv/DOb37QG4DbBi+aeeNNAQf92DyOVyNr6/j3sZBazfsxiTOmQAC4JATU2N2J9W\n5KWhuKCcc/tDObX7Mvn3ijHrYMySz8fjMdFeYzZiAfLySjm4P5QzJ2OorZUxcFB3Zs7uR/sOysvs\nfSYFkEgkw4EfAW1guyAI6x96fh7wDZD510O/CIKwXYF2PhN/7gxi144gPIZY8+G/R6OtozkJVQ9y\n7PdAwnyvsmiVJ9YOdavFf+bMGY4ePcrvv/+uIOtERFRDakIGJ3ddwv/UFWprpPTqb8nbaybi4G6F\nlpbmfNezsoo4sDcE77NxyORyPIZYM2NWP8zbKr8o21MFXyKRaAObgCFABhAhkUhOCoJw9aFTDwiC\nsFQJNj4Tf4v9kGE2fPDxKI3Knn2QlLg77PzmLP2GWjN2rkudxpLJZIwaNQpXV1cFWSciUr/U1kgJ\n9o7n1B/BXI1KR69xQ4ZOdmDMnP60t1Rd74wX4fatPPbtCcHXJwFtLS2GDrdh6gzneo0cfJYZviOQ\nKgjCTQCJRLIf8AQeFnyVsX9vyEsh9jXVtXzz3l6aGeuzbP2UOkUVVFRU0L9/fwIDAzE0fPkzCEVe\nLnIyCzm7PxTvA+EU5pXSpr0xCz8Zy9BJDjTRgM5SD5J07S7794YQHJSMrm4Dxkc5B2EAABySSURB\nVE9wYPJUJ4xV0DjlWQTfDLjzwHEG8Kidv4kSicQNSAH+JQjCnUeco3COHYlg+9aLuA/urtFiD7D3\nZx8ybuaydteCOmX/CYJA48aNOXPmDAYGmtONR+TVRi6XEx2Uwpk9IYT73Z9POrh3Y9RMZ/q4ddUo\nt40gCMREp7NvTwgxUeno6+sxY3Z/xk+0V2l4uKJ28U4B+wRBqJZIJG8Cu4BBD58kkUgWAgsB2rWr\ne2nk8+fi2PTTBfq7dOHjFWM0WuzTk7M4tPUiQyba08e1bi0G33nnHUaMGMHIkSMVZJ2IiPIozC3l\n/KFwzh0I496dApoZ6TN50SBGTHfC1Oz52nSqGplUTlBgEgf3h5KSfA8jI30WLh7E6LG91KIi77MI\nfibQ9oFjc/5/cxYAQRDyHzjcDmx41ECCIGwDtgHY29vXqfPK5eAUNm44Q68+HVj52Th06hCjrmoE\nQWDL6uM0MdBj/ooxdR7rww8/pGVLxYd0iYgoCrlcTuzlVLz2hRJyIQGZVI5tXwvmfjCC/sNsaNBQ\nsyLKqqtr8T4bx6EDYWTdLcK8bQve+3AkHkOtaahG7+VZLIkALCUSSUfuC/00YMaDJ0gkktaCIGT9\ndTgWuKZQKx8iIf4Oaz8/TufOrfhi7US1+g99ES57JxAbcoO3Vk+gafMXX+4dP36ckJAQvv76awVa\nJyKiOPLuFXPhSATnD0Vw73Y+TZs3xnOeKyOmOWHeSfMmKcVFFZw6Ec3xo5EUFVVg1a0NCxcPol//\nLmrpcXiqUgqCIJVIJEsBb+6HZf4uCEKiRCJZDUQKgnASeEcikYwFpEABME9ZBt+5nc+nKw5j0rIp\nX22YqhbLpLogl8vZ/YM3bS1aMmJ63xceRxAEhg0bRq9evRRonYhI3ZHWygjzu8r5g+FEBiQhlwvY\n9rVgzr+G0X+4DQ01MDHybmYhhw+G4X02jupqKY5OFkyd0Rdbu3ZqXcLhmabGgiB4AV4PPbbqgd+X\nA8sVa9r/UlhYzvKPDqCtJeGrDVMx1JCypk8i+Fw86Sn3+PiHmS88I8jIyGDu3LlcuHCB9u3bK9hC\nEZEX49b1e/gcicTnSCRF+WUYmTZl8qJBDJ3soJHdpARB4GpiJocPhnEpMBltbS0GD7Fm8lQnOmhI\nG0SN8YXU1Ej54tMjFOSX8e2PM2nzknSlOfZ7IGYdjHEdZfdCr5fL5ZiZmbF582aNimIQeTkpLa4g\n4NQVfI5EkBx7B20dLRwHdWfYZEfsB3StUz0oVSGTygkMTOLIwXCSrt3FwECPqTOcGT/RASMjfVWb\n91xohOALgsCP350jIT6DlZ+No1t3M1WbpBBSEzO5Fn2LhZ+MfaHZfW1tLf369cPLy4uuXesW2SMi\n8qJIa2VEByXjczSSEJ9EpDUyOnRtzcKVY3H37EUzY80MDS4rreKcVyxHj0SQk12CmVlz3l42jKHD\nbWjUqKGqzXshNELwTxyLwvtsHLPnuuA+qLuqzVEYPkciadBQhyGTHJ77tVVVVejp6XHs2DFMTDRj\nOSny8iAIAqkJmfgeiyLgVAxF+WU0bdGEUTOc8Zhgj0UPM7X2ZT+JjIwCjh2OwPtcHFWVtdjatWXp\nu0Nx6ttZpRuxMrmcpJvZdRpD7QU/Pu4Ov/7ig3M/S2bPe3lKBMjlci6di8N+QFf0XyBzcPz48axZ\nswZ7e3slWCci8miyMwvwPxGD7/Eo7qTmoNNQGyf37gye0Af7AVYaF075N4IgEB2VzrHDEYSFpqKt\nrYX74B5MmOSAZRfVlnCoqZVy7tI19pyKIDO7qE5jqfVfp6ionLWfH6NVK0M+XjEGLS3NnDE8ipvX\nssi/V0y/D0Y81+tycnJo0aIF+/fvF0smiNQLRfllXDobx8UT0VyNSgege58OvL12Iq6j7DAw1Nzg\nicrKGnzOJ3D8aCS30vNo1qwxs+a4MMazNy1U7J8vq6jmuG8cB85Gk1dYRpcOLfni7VF47H3/hcdU\nW8GXywW+/vIUJaWVrNswFX2DutWDVzcSI9MAsHWyeK7XrVq1ipEjRzJ27FhlmCUiAkBFWRWhPolc\nPBFD9KUU5DI57buYMu+DEQwY05NW9VDZUZncvVvIyWNRnPOKo6ysCssurfho+WgGunenoa5qZTG3\noIyD56I55hNLeWUN9tbt+GTRMBxt2tfZTaa2gn/0UDgR4Td5973hWHQ2VbU5Cicp5hZGrQxp+YzR\nRsnJyRgaGrJp0ya0tTUv0kFE/amqqCb84jUCT8cS4X+NmmopLds0Y9KCgQwc24uOVq1VbWKdkMsF\nIiNucvJYFGGhqWhpaeE6oCvjJtjTw9pc5XsON+7kse9MJN6XriGXCwzq24VZYxzo2lFx+qeWgp92\nM4f//OZPP5cujB77ciYS3btTgPlzxO6eOXOGTp06MW7cOCVaJfKqUV1VS8TFawR5xRLmd5Xqylqa\nmxgwfFpf3EbZ0a13e40P9y0trcT7bDynjkeRmVlI8xZNmDG7P2PG9lZJxcoHEQSB6Kt32HM6kpAr\naeg21GHcYFumjuyDuaniu3apneBLpTLWf3mSJvq6/OuDESq/6yqL3LuF9Hbp8tTzzp07h4GBAe+9\n9149WCXyKlBZXk2E/zWCz8UT4Z9EZXk1hkZN8Jhgj9soO3o4dFLLsgDPS0pyFqdOROPnk0h1tZQe\nNubMfd0N1wFWKu+EJ5XK8A1NYZ9XJMlpOTRv2ogFk/sxcUhPDA2UV/5Z7QT/wL5QbqTm8MXaiTSv\nQ10ZdaemWope48fH8grC/dpy2traGj/DElE9ZSWVhPleJfhcHFGBydRUS2lmpM/Asb1wHWGLbV8L\njUyKepiqqlr8/a5y6kQ0yUlZ6Ok1YPAQa8aO60NnS9W7hkvLqzjhF8+hc9HkFJTRvk0LPp4/hBGu\n3dGthwgntRL8O7fz2b3rEm4DrehfxxLB6o5ES4JM9viCoevXr8fMzIw5c+bUo1UiLxMFOSWE+iQS\nciGBK5dTkdbKMGplyPBpfek/3IYe9h1fipk83O8mdebUFc6fi6O0tIp27Y14650hDBlmg76+6gM+\nMrOLOOQdw6mL8VRU1dKne1s+emMIzj071mv0odoIviAI/PLjeRrq6vD2u0NVbY7SMWjaiJLC8v95\nPC8vjyZNmjBr1iwx7FLkuRAEgdup2YReSCTEJ5HkK7cBaNXOCM95LvQfbktXu7YvzYqxpkZKUEAy\nZ05FExd7Bx0dLVzcujLGs7daFDETBIHY5Ez2e0URFHkDiZYEj75dmT6qj0I3Yp8HtRH8y5dSiIpM\n4623h9C8hWbVp3gRzDqZkJmW+z+Pr1mzBldXVyZNmqQCq0Q0DWmtjKvR6YT5XiXMJ5HM9DwALG3M\nmfP+cJw9etC+SyuVi58iuX0rD6/TVzjvHU9JcSVtzJqz4E13ho6wVQs3cK1Uhm9IMvvPRpGclkNT\nfT1mezoycUhPTFSsbWoh+FKpjG2/+tGhozFjx/VRtTn1QkerNkQFJlNaXIGBYWN++uknxo0bx/ff\nf//SzMBElENxQTlRgUmE+V0jOjCZspJKdBpoY9vXgnGvu9HXowfGrV6u1WF1dS2B/kl4nb5CfNwd\ntLW16O/ShVFje9Grdwe1SMosKCrnmG8cx3xiyS8qp32bFnz0hgcjXLujpyYloNVC8M+ciiEzs5C1\n66egrfNqiF1fj+4c2OxL4NloRk1zwcTEBIlEIoq9yP8gl8u5efUuEQFJRPoncS36FoIg0NzYAOeh\n1jgN6k4vF0saq4GvWtHcSM3G6/QVfC8kUlZWhZl5i/uz+eE2auMJSE7L5uC5GC5cTqJWKsO5Z0em\nDO+No017tbgRPYjKBb+mWsqeP4KxtWuLU9/nyzrVZLrYtqVFKwNeXzydKwPCmT59uqpNElEjivLL\niLmUQlRQMtGBKRTmlQJgaW3OjLc9cHDvhqWN+Us5QSgtrcTPJ5FzXnFcT7lHg4bauLpZMXJ0T+x6\nqt43D/e9Ev4R1znkHUNc8l0a6TZg7CAbJg/rRfs26tuHV+WCf9YrloKCclZ86qkWf8j6oKioiO3b\ntzNpvjs5qwvIvVVOa81OYhSpI9JaGddi0okOSiEqMJnUhEwEQcCgWWN6u3TBfqAVfVy70lzFiULK\nQi4XuBKTztkzsVwKSqa2RoZFZ1OWvjuUQR49aPoCBQaVQUFROcf94jjmE0deYRlmLQ15Z9YARg+0\nxqCJ+q+wVCr4MpmcQ/tD6d7DDLteL3+nJqlUSk5ODsbG97v9DJ3iwJHf/Nm+7jTfHXkbHRUng4jU\nH3K5nFvJ97hyOZUrl68TH36TyvJqtLS1sOrZjlnLhtLHrSudrc1fmtDJR3H3biEXzsVz3jue7HvF\n6OvrMXJUT4aPtFN5lcq/EQSBhOtZHDl/Bd/QZKQyOU627fl4vgfOPTuiXU+rrPzScgKvptVpDJUK\nfnjoDe7dK2bh4kGvxOzey8sLb29vNm3axAcffADA4s/Gs3bJLnZ9e5Y3/j1axRaKKAtBEMi6nU9s\nSCpXLqcSG3Kd4vz7YblmHYxx9+xNb9cu9HTuTBM1mc0qi4qKagL9kzh/Lo642DtIJNC7T0feWDCQ\n/q5d0FWTDc6qmlp8Lidz+HwMyWk5NGnUkAlD7JgwpGe9um2uZ+WxOyCa05FJSOWyOo2lUsE/dSIa\nI2N9+j1DiQFNZsWKFTg6OuLp6cmYMWP+67n+w20YOcOZw9v8MetowvCpTiqyUkSRCILA3fQ84sNv\nEh92g/iwm+Rm3a9l3qJlU/q4dsXOuTO9+nfBpI3ia6aoGzKZnCsxt7jgHc+lwGSqqmoxM2/B6/MH\n4DHMhpYtm6raxH+4c6+QYz6xnAlIpKSsik7mRnz4ugfDXbvRWK9+Ol3J5QLBSensDogmJOU2eg10\nmNDXmpluvej4/YuXWVGZ4EulciIjbjJthjM6L0FK98PU1NSwbt06PvnkE9544w3atGnz2FXMm596\nkp1RwI/LD1FdVYvnXJd6tlakrvztokmISCMh4ibx4TcpzL2/0drMSB8bp05MftOdnv0tMe9k8kqs\naAFupedy4XwCvucTyM0tpYm+LoOH9GDYcFu6qVFXLKlMzuWYmxy9cIWwuFtoa2vhZt+ZSUN70qtb\n/VXSrKiu5VTkVfYExpCeU0hLwya8PbI/k/vZ0KxJ3Vd+KhP8stJKjA0FBg+xVpUJSuH27dukp6fj\n6uqKkZER1dXVWFg8Ofqooa4Oq7a+xvp3d7Pli+MUF5Qx8+0hL0Vtk5eVyvJqUuLucDU6naToW1yN\nSqespBIA49aG9OxnibVjJ2wcO71SAg9QWFDGRb+r+JxPICX5HlraEhwcLXhzyWCc+1uqjcsGIK+w\njJMX4znhG0dOQRkmLfSZP6kfY91t6jVJKquwhAOXYjkcGk9JRTXdzVvy1azhDLXrQgMF6oDk7yJd\n9U0r007CmJHL+W3HApVcX9FcvnwZOzs74uPjCQ8P55133nnuMaS1Mn5aeZgLhyPoYtuW9zdOo91L\n2AtA0xAEgcy0PJKu3CIp5hbXYm6RnpSFXH7/u9PWoiU97Dti7dgJa4eOtDRr/koJPEBlRQ3Bl1Lw\nvZBAVFQacpmAZZdWDB5izWCP7moTMw9/1cVPuMUx3ziCIlORyQUcbdozYYgd/XtboFNPm+SCIBCT\ndpc9gTH4xaciCDDIxoLZA3rTs+PjPQISiSRKEIQX6m2qMsE3bGoufLdxN28sHKiS6yuCsrIyrl27\nhoODA8uWLWP+/PlYW9d9xRJ45gqbVh2lsryGWe8OxfM1V3T11GdW9DIjCAL52SWkJmSQEn+H5Cu3\nSYm7Q1nx/dl7I31drOzaYdWrPd16t8eqZ3sMmmlui7+6IJXKiIpMw88nkeCgFKqqajFtZchgjx4M\nHmJN+w7GqjbxvygorsArIIHjfvFkZhdhqK/H6IHWeA62pW2rZ2tEpAhqpFLOxaSwNzCGqxk5GDTS\nZWJfa6a59KRNi6fvZWik4Dc1MBMCAy/TUwPDMS9duoSlpSXFxcVs3LiRbdu2Kfwahbml/PLpES6f\nT6C5sQETFgxg1AxnGjXRVfi1XlUEQSAns5DUxExu/PVzPT7jnyQnLS0J7bu0omvPdv+IvLlFy5c6\nTPJpyOUCCfF38PNJJDAgiZLiSgwM9Bjg3o3BQ6zpYW2uVtmlcrlA1NXbnPCNIyAiFalMTk8rM8Z5\n2OHuaEnDBvXn1c4uKuPg5VgOh8RTWFZJJ9MWzHDtyWj77jR+DjeXRgq+iXF74fad6zRqVD+73nXl\nzp07eHt7M3/+fL766is8PDxwcHBQ+nXjwm6w/xcfYoKvY9CsMaNn92PYZEdMzdU3m08dqaqs4fb1\nbNKTs0hLyuLmtbvcvHr3H7+7lpaEdp1NsbA2w9LaHEubtnTq1hq9xuINVhAEUq9n4+ebiL/vVXJz\nS9HTa4Bzf0sGDe6BvWMnlTcUeZiConLOBCZy4q/ZfFN9PUa69cBzkA0dzOqvH+/fbpt9QVfwibuO\nXBAY0KMTM1x64tTlxbKGNVLw7e3thcjISJVc+2kIgkBZWRkGBgYsW7aMuXPnYm5uzoEDB1i6dKlK\nbEq6cov9m3wJ97uGIAh079MB97G9cPLogUnrlz+s71mpLK8m42Yud25kc/t6Nreu3/8363b+P01l\ndPUa0MGqNRbd2tCpexs6W5vToWtr0W32AIIgkHYzF/+LVwnwu0ZmZiHa2lo4OHbCfXAP+rlYqt1k\nTSaXExabzsmL8VyKvolMJqdXN3M8B9sy0MGyXhqM/E1lTS1e0UkcuBRLUmYuBo10Ge/Ug2n97TA3\nrtv3VRT8OiIIAhKJhC1btjBv3jx8fX35888/2b9/P9HR0VhYWKhNbfrsjAIunojh4slobl/PBqBT\n9zY4De5O7/5d6GLXloZqFAWhDGprpORkFpJ1O5/MtFwy03LJuHn/5+9YdwBtHS3MOprQ1qIlHbq0\nokPX1nTo2prW7Y1eabfMk7h9Kw//i9fw97vK7Vv5aGlJ6NmrPQMHdae/axcMDdVvvyIrt5hT/gmc\n8U8gp6CM5k0bMdKtB6MHWtfrbB7gTl4RB4LjOB6eQElFNZatjZnuYsfIPt2ey23zJJQu+BKJZDjw\nI6ANbBcEYf1Dz+sCfwB9gHxgqiAI6U8aUxWCX1lZiZaWFjU1NezevZvFixfz888/k5+fz+eff86a\nNWtYtGgRRkZGSCQStY60+LvZRbjfNcL9rnI1Kh25XECnoTYW3c3oYtuWTt3a0NGqNe27tEJPzWZj\nT6Kqsoa8rGJys4rIyyoiJ7OQ7IwCcu4Wcu9OAbl3i/6JkAForK+HeSeT++LeuSXtLEwxtzDBrIOJ\nWK7iGbiVnkugfxIB/kmkp+UikYCtXTsGuHfDdYCVWtSYf5jqGimBkamcuhhPZOL9Ri+ONh3wHGSD\nSx8LhYYyPg2ZXE7wtXT2B8cSnJSOlkSCh60l01zs6N1J8bkGShV8iUSiDaQAQ4AMIAKYLgjC1QfO\nWQLYCoKwSCKRTAPGC4Iw9UnjKkrwpVIpFRUVNG3alJSUFAwMDGjVqhUbN27kgw8+IDAwkKCgID75\n5BMmTpzIokWLcHFx4csvv2Tt2rWUlJSgq6uLrq5m+2pLiytICL/J1ah0kmJukZqYSVVFDQASiQST\n1oa06WBCm/ZGmLZtgXGrZpi0McSopSGGLZrQ2EBPaTc4uVxOZVk1ZSWVFBeUU1J4/6cwr5SivDIK\n80opzC0lP7uY/OySfyJi/kYikdDCtCmmZs0xNW9Bq3YtaN3WiNbtjDDraEIzY321vjmrG3+7a4IC\nkgjwv8btW/lIJGBt0xa3gVa4DrDC2Fg9i7Qlp2Vz2j8B7+AkSsuraGXclNEDejBqoDWtjOs3W7eg\nrILjYYkcvBzH3YISTJo2YUJfayY522LaTHlhqMoWfGfgc0EQhv11vBxAEISvHjjH+69zQiQSiQ5w\nDzARnjC4qampEBwcTKNGjVi9ejVbt25l9+7dAMyaNYu5c+eydu1aysrK2LBhAzt27GDDhg2YmJjw\n2muv0bVrVwICAkhOTub777/n+PHjrF+/HhsbG0aNGsXKlStZtWoVhYWFZGdnY2dn9yL/PxqLXC7n\n3p0C0pKySE/OIjMtj7u38ribnkdpUcX/nG/j1IkN+5Yo3I6MmzksHPINj/so6DTUpoWxAc2MDTBq\nZYixaVNatDTEpE0zTFobYty6GcatmtFQV+WFXV8a7mYWMmfGr2hpSbCxvS/yLm5WGBmpT6z8o8gr\nLGPsW1tpoKPNAAdLxrhb06d7O5VFBS397TiBV9Nw6NyWqf1tcbexoIG28lcWyhb8ScBwQRDm/3U8\nG3ASBGHpA+ck/HVOxl/HN/46J++hsRYCC/86tAYSXsRoDcEYyHvqWZqL+P40l5f5vcHL//66CoLw\nQkuwep02CYKwDdgGIJFIIl/0LqUJiO9Ps3mZ39/L/N7g1Xh/L/raZwlVyATaPnBs/tdjjzznL5eO\nIfc3b0VERERE1IRnEfwIwFIikXSUSCQNgWnAyYfOOQnM/ev3SYDfk/z3IiIiIiL1z1NdOoIgSCUS\nyVLAm/9r7+xd7KqiKP5byvgBEVIoOIRosFTwY4phRAgBm2CRKbRIo4xgo4VaioWif4CFWqQwgRhE\nI1EkhqRIEbByREKixiiMNgYCEcWJoigjy+Kc0eH6Xt59b959d867+wcXzuXsYi/WzH7349x90rLM\nQ7YvSHoV+Nz2ceAgcETSCvAz6UdhEOPvR7C1CH1lM836plkbhL6+tPbhVRAEQTBZ4nPDIAiCjhAF\nPwiCoCM0XvAl7ZX0raQVSS/0mL9R0tE8vyxpV9M5jZMa+pYk/SjpXD6eaiPPUZB0SNKV/J1Fr3lJ\nej1r/0LS3KRz3Aw19O2RtLrBu5cmneOoSNop6YykryVdkPRcj5hi/aupr2T/bpL0maTzWd8rPWKG\nr522GztIL3m/A+4CbgDOA3dXYp4BDuTxfuBokzm1oG8JeLPtXEfUtxuYA77qM/8IcAoQsAAst53z\nmPXtAU60neeI2maBuTy+hdQepfq3Wax/NfWV7J+AbXk8AywDC5WYoWtn01f488CK7e9t/wW8ByxW\nYhaBw3l8DHhY5TRGqaOvWGx/Qlp11Y9F4G0nPgW2S5qdTHabp4a+YrF92fbZPP4VuAjsqIQV619N\nfcWSPfktn87ko7rCZuja2XTB3wH8sOH8Ev835d8Y22vAKjDZnqajU0cfwKP5lvmYpJ095kulrv6S\neTDfVp+SdE/byYxCvtV/gHSVuJGp8O8a+qBg/yRdL+kccAU4bbuvf3VrZ7y0bZ6PgV227wVO898v\ncrD1OQvcafs+4A3go5bzGRpJ24APgOdtX207n3EzQF/R/tn+2/b9pO4G85I2vWF20wV/2tsyDNRn\n+yfbf+bTt0h7BkwLdfwtFttX12+rbZ8EZiRtrZ25r4GkGVIxfMf2hz1CivZvkL7S/VvH9i/AGWBv\nZWro2tl0wZ/2tgwD9VWeie4jPWucFo4DT+TVHgvAqu3LbSc1LiTdvv5MVNI86f+liIuRnPdB4KLt\n1/qEFetfHX2F+3ebpO15fDNpP5JvKmFD185Gu2W6ubYMW4Ka+p6VtA9YI+lbai3hIZH0Lmmlw62S\nLgEvk14eYfsAcJK00mMF+B14sp1MR6OGvseApyWtAX8A+wu6GHkIeBz4Mj8HBngRuAOmwr86+kr2\nbxY4rLQB1XXA+7ZPbLZ2RmuFIAiCjhAvbYMgCDpCFPwgCIKOEAU/CIKgI0TBD4Ig6AhR8IMgCDpC\nFPwgCIKOEAU/CIKgI/wDP4LVF8KM2lUAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.linspace(0, 3, 100)\n", "y = np.linspace(0, 3, 100)\n", "X, Y = np.meshgrid(x, y)\n", "Z = f(np.vstack([X.ravel(), Y.ravel()])).reshape((100,100))\n", "plt.contour(X, Y, Z, np.arange(-1.99,10, 1));\n", "plt.plot(x, x**3, 'k:', linewidth=1)\n", "plt.plot(x, (x-1)**4+2, 'k:', linewidth=1)\n", "plt.text(ux['x'][0], ux['x'][1], 'x', va='center', ha='center', size=20, color='blue')\n", "plt.text(cx['x'][0], cx['x'][1], 'x', va='center', ha='center', size=20, color='red')\n", "plt.fill([0.5,0.5,1.5,1.5], [2.5,1.5,1.5,2.5], alpha=0.3)\n", "plt.axis([0,3,0,3]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Curve-fitting\n", "\n", "Curve fitting fits a scalar function to a series of data points. The `curve_fit` method provides a convenient interface for curve fitting." ] }, { "cell_type": "code", "execution_count": 98, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def logistic4(x, a, b, c, d):\n", " \"\"\"The four paramter logistic function is often used to fit dose-response relationships.\"\"\"\n", " return ((a-d)/(1.0+((x/c)**b))) + d" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Generate some noisy observations" ] }, { "cell_type": "code", "execution_count": 99, "metadata": { "collapsed": true }, "outputs": [], "source": [ "nobs = 24\n", "xdata = np.linspace(0.5, 3.5, nobs)\n", "ptrue = [10, 3, 1.5, 12]\n", "ydata = logistic4(xdata, *ptrue) + 0.5*np.random.random(nobs)" ] }, { "cell_type": "code", "execution_count": 100, "metadata": { "collapsed": true }, "outputs": [], "source": [ "popt, pcov = optimize.curve_fit(logistic4, xdata, ydata)" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [ { "data": { "image/png": "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\ngoiIAPD/AQIEhnhQuhCzAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.linspace(0, 4, 100)\n", "y = logistic4(x, *popt)\n", "plt.plot(xdata, ydata, 'o')\n", "plt.plot(x, y)\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Interpolation\n", "\n", "Interpolation constructs new data points given a set of known data points. Often, its objective is to estimate intermediate data points. Interpolation is most commonly done by fitting piecewise polynomials with certain constraints to make the join points continuous or smooth.\n", "\n", "This is different from what we did with curve-fitting optimization, where we desire to approximate a complicated **function** with a simpler one." ] }, { "cell_type": "code", "execution_count": 102, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def f(x, t, a, b, c, d):\n", " \"\"\"Lotka-Volterra model.\"\"\"\n", " u, v = x\n", " return [a*u + b*u*v, c*v + d*u*v]" ] }, { "cell_type": "code", "execution_count": 103, "metadata": { "collapsed": true }, "outputs": [], "source": [ "t = np.linspace(0, 22, 15)\n", "a, b, c, d = 1, -1, -1, .5\n", "x0 = [0.5,0.5]\n", "y = integrate.odeint(f, x0, t, args=(a,b,c,d))" ] }, { "cell_type": "code", "execution_count": 104, "metadata": { "collapsed": true }, "outputs": [], "source": [ "rabbits = y[:, 0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Simple interpolation" ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAEICAYAAABCh8AaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXmYZFlZ5/99Y98jMyMjsyqrKjO7qptuulFAWmCGZYQf\nA6KM8syo4KQoyFjKuOGogFOKCFMuv9/MuIwKUw6CQjo4oiKLC8igTCM0VDfdDA3dTdeSWUtmZUTG\nvm/n98e9JyIyKpYbN+5ybub5PE89VRWZGXGr4p4473nf7/t9iTEGiUQikUgkEsl4XHZfgEQikUgk\nEokTkEGTRCKRSCQSiQZk0CSRSCQSiUSiARk0SSQSiUQikWhABk0SiUQikUgkGpBBk0QikUgkEokG\nZNA0BiK6SkQvU//8H4nof9h9TeMgotcT0QN9fy8R0Wk7r0ki4fSvJ4Oe70VE9ISBz7dORIyIPOrf\n/4aIfsio55dIBiGifyCifzfia6vqZ7jbwNdjRHSn+uf3ENEvGfXcRwWP3RfgFBhjv2r3NUwLYyxi\n9zVIJEZBRAzAXYyxpwCAMfZ/ANxt1usxxl5p1nNLJJNgjG0DMO0znDH2Y2Y992FGZpoEx8hThkQi\nKjy7I5FIJCIjgyaNENE7iOiD6p95Gv+HiGibiNJEdK7ve11E9DYiukRE+0T0v4hooe/rf0ZEu0SU\nJ6LPEtF9fV97PxG9m4j+mojKAF4y5FpeT0SXiahIRFeIaGPENfenYt9PRL9HRJ9Qf+5BIjrT9733\nENGniChDRE8Q0fcZ8h8nERoiejYRPazeE39KRB8iov+kfu1AuVd9rP+e+k4i+jIRFYjoGhG9Y+B7\nX0dEW+oaODfwtXcQ0YeJ6INEVADweiJ6LhF9nohyRLRDRL9LRD71+z+r/uijasniNUT0bUR0ve85\nTxHRXxBRSn3N3x3xb34uEV1Ur/sWEf3XEd/XLZ3w/wsi+s9ElFXX3Sv7vjdORO9Vr/sGEf0neeA5\nOoy69/r3DfXvB0rAKmeI6Ivq/fhXfK8Y/F4iWiCi9xHRTfUe/MiIa7mTiP5R3V/SRPSnI77v/X1r\n/duI6DoR/SwR7an38Rv6vtev3vvb6pp5DxEFZ/6PcyAyaJqNF0IpD/w/AN5ORE9XH/9JAK8G8C8A\nrADIAvi9vp/7GwB3AVgC8DCAzYHn/bcAzgOIAhjctMIAfgfAKxljUQD/HMAjGq/3tQB+BcA8gKfU\n1+DP+SkAf6Je02sB/D4R3avxeSUORA1IPgLgAwAWAPwZgH8zxVOUAfwggDkA3wngTUT0avW57wXw\nbgCvg7IGEgBODvz8dwP4sPrzmwDaAH4GwCKAfwZlXf17AGCMvVj9mWcyxiKMsQMbgRqgfBzAFoB1\nACcAfGjEdf82gN9mjMUAnAHwvzT+e58H4An1+v5fAO8lIlK/9n4ALQB3Ang2gJcDGKpVkRwuprz3\nhvGDAH4YwHEo99DvjPi+DwAIAbgPyuf0b474vncB+CSUz/mTAP6bxus4BiAO5frfCOD3iGhe/dqv\nA3gagGdBucdPAHi7xuc9VMigaTZ+hTFWZYw9CuBRAM9UH/8xAOcYY9cZY3UA7wDwPfzEwBj7Q8ZY\nse9rzySieN/z/hVj7HOMsQ5jrDbkdTsAnkFEQcbYDmPsMY3X+5eMsS8yxlpQNqlnqY+/CsBVxtj7\nGGMtxtiXAfw5gO/V+h8hcSTPB+AF8FuMsSZj7MMAvqT1hxlj/8AY+7/qffoVAP8TykEBAL4HwMcZ\nY59V7/NfgnLf9vN5xthH1J+vMsYeYox9Qb0HrwL4733PN4nnQgnOfp4xVmaM1RhjD4z43iaAO4lo\nkTFWYox9QeNrbDHG/oAx1gbwR1A2uWUiWgbwHQDerL72HpQN7bUan1fibKa594bxAcbYVxljZSjr\n5PsGs5REdBzAKwH8GGMsq67XfxzxfE0AawBWpryWJoB3qs/91wBKAO5WDwZnAfwMYyzDGCsC+FUc\n0ftbBk2zsdv35wp6or01AH+plhlyAL4O5RS9TERuIvp1Ukp3BQBX1Z9Z7Huua6NeUF1Yr4ESmO2Q\nUm67x4DrfR6/XvWaN6CcPCSHlxUAN9jBqd1bWn+YiJ5HRJ9RSxJ5KPckv49X0Hcfq/ft/sBTHLjP\niehpRPRxUkrXBSgfzIvQxikoQU1Lw/e+Ecqp+XEi+hIRvUrja3TXD2Osov4xAmX9eKGsR75+/juU\nbIDk8DPNvTeM/nWwBeVeGrzvTwHIMMayGp7vLQAIwBeJ6DEi+mGN17E/8G/ge0QSSobrob77+2/V\nx48cMmgyh2tQymdzfb8CjLEbUEpv3w3gZVBSoevqz1DfzzOMgTH2d4yxfwnlpPs4gD8w4Hr/ceB6\nI4yxN834vBKx2QFwoq/EBACrfX8uQ/mwBAAQ0WAQ/ScAPgrgFGMsDuA96N3HO1A+6PnPhqCU6PoZ\nvM/fDeV+vkstnf1HHFwX47gGYJU0CMoZY99gjH0/lKDmNwB8WC1R6+UagDqAxb71E2OM3TfpByWH\ngnH33oE1hOEH0VN9f16FkvFJD3mNBSKam3QxjLFdxtiPMMZWAPwoFKnFnZN+bgxpAFUA9/Xd3/Gj\n2p0tgyZzeA+A80S0BgBElCSi71a/FoXyAbsPZTFNZWVARMtE9N3qh3wdSgp1sOwxLR8H8DRShLte\n9de39mm0JIeTz0PRUPyU+p7/ayilBs6jAO4jomcRUQBKKbmfKJTTb42IngvlQMD5MIBXEdELVe3U\nOzH58yYKoACgpGZPB4P2WwBG+Y59EUqg9utEFCaiABG9YNg3EtEPEFGSMdYBkFMf1r2GGGM7UDQk\n/4WIYqQ0gpwhIq2lRYmzGXfvPQLgxaR4LsUB/MKQn/8BIrpXPVi8E8CH1RJwF/Ue+xsoAdC8ul5f\nPOS5QETfS0RcP5iFcjiZ5f7uQDmY/yYRLamvcYKIXqH3OZ2MDJrM4behnMA/SURFAF+AIiIFgD+G\nkoK9AeBr6temwQXgPwC4CSADRfMxU0ZIrVG/HEqN+iaUMsRvAPDP8rwSsWGMNQD8awCvh3IvvQbA\nX/R9/UkoH+J/D+AbGGhKgCLSfqd6j78dfYJqVWf341CyUTtQPryvYzw/ByXwKkL5kB7s+nkHgD9S\nSwQHujvVTeZfQRGpbquv9ZoRr/PtAB4johKUtfpaxlh1wrVN4gcB+KCs6SyUoPH4jM8pcQDj7j3G\n2Keg3MdfAfAQlAPqIB+A0kiwCyAA4KdGvNTroGShHgewB+DNI77vWwE8qN7fHwXw04yxy9P+uwZ4\nK5TmoS+opfO/h4keaSJDB+UMEonkKENE7wdwnTH2i3Zfi0QikYiGzDRJJBKJRCKRaEAGTRKJRCKR\nSCQakOU5iUQikUgkEg3ITJNEIpFIJBKJBkwZkrm4uMjW19fNeGqJZGoeeuihNGPMViM2uSYkImH3\nmpDrQSIaWteEKUHT+vo6Ll68aMZTSyRTQ0SaXa7NQq4JiUjYvSbkepCIhtY1IctzEolEIpFIJBqQ\nQZNEIpFIJBKJBmTQJJFIJBKJRKIBGTRJJBKJRCKRaEAGTRKJRCKRSCQakEGTiGxuAuvrgMul/L65\nafcVSSQSiURy5DHFckAyA5ubwNmzQKWi/H1rS/k7AGxs2HddEolEIpEccWSmSTTOnesFTJxKRXlc\nIjmiPPobv4/mqVWZfZVIVB76td9FS64Jy5GZJtHY3p7ucYnkkHP1d/4Ad/3if4C3VVcekNlXyRHn\n8m9fwNPf/nPwyDVhOTLTJBqrq9M9LpEcYjodhtA7fgkhvjlwZPZVckRhjCH6zrfLNWETMmgSjfPn\ngVDo4GOhkPK4RHLE+LvHdrGY3Rv+RZl9lRxBPvfUPhIZuSbsQgZNorGxAVy4AKytAUTK7xcuyJSr\n5EjyyPUcdmIjZmjK7KvkCPK/H9/DTlyuCbuQQZOIbGwAV68CnY7yuwyYJEeUa5kK3vedPwIms68S\nCQBga7+MD7zqLFhQrgk7kEGTRCIRlmuZKp582XeBLlxAOnEMHcjsq+Roc3W/jKuveDXoDy5gd24J\nTK4JS5HdcxKJRFi2MxU881QcePUG/nTlefj//u4JPPrLL0c86LX70iQSy2l3GK5lqnjZvcvAKzfw\nLjwdj1zL4XNve6ndl3ZkkJkmAbmRqyJfbdp9GRKJreSrTeSrTZyaV8oQqwvK77v5mp2XJZHYxk6+\nika7g/VEGABw70oMN3JVlOstm6/s6CCDJgH5wfc+iF/8yFftvgyJxFauZRSTVx4sLUX9AIC9ogya\nJEeT7X1lTawllDWxHAsAANKl+sifkRiLLM8JBmNK+vVWoY5muwOvW8a1kqPJ9ayyQZziQZO6QewV\n5AYhOZpcVYMmnmlajPgAKEHTmvqYxFzkjiwYhVoLjXYHpXoLF69m7b4cicQ2tjMDQVM30ySDJsnR\nZGu/DJ/HhWPqAWIxoqyJVLFh52UdKWTQJBipvg3hH54YYWAmkRwBrmWqiAe9XdF32O9BxO/BrYIs\nz0mOJlf3y1hbCMHlIgBAUj1IyPKcdcigSTD4zR/yufEZGTRJjjDbmQpOLQQPPLYU9R84WEgkR4mt\n/cqBMtxCWCnPyTVhHTJoEgx+87/yGcfx5K0S9uSpWnJEuZatdEXgnGTUL4XgkiMJY0wNmnprwut2\nYSHsk5kmC5FBk2Dwm/85a/Pq32WtWnI02cnVsBI/mGlajgWkpklyJClUW6g22zgeDxx4fDEigyYr\nkUGTYKSKdbhd1C1LlKT/huQIUmu2UW22Ma+WHzhLUT9uFWpgjNl0ZRKJPaTUwIjrmDiLEb88XFuI\nDJoEI12qIxH2IRZQxK/FmjS5lBw9shVlE5gPDQRNMT9qzQ6K8jAhOWJw6UYycnvQJDVN1iGDJsFI\nFetIRv2IBBQLLZlpkhxFsmXlsDAfOjguZSkqvZokRxNeglscyDQlo35ZnrMQGTQJRrrUwGLEj6ga\nNBVqMmiSHD1yaqZpbkimCZCu4JKjx7hMU6XRRqUh9workEGTYPBMU9SvnLBLMmiSHEGyFTXTFJaZ\nJqdARFeJ6P8S0SNEdNHu6zlspEt1eFx027Dqriu4NLi0BE1jVIjoKoAigDaAFmPsfjMv6qjS6TDs\nl+tYjPgR8LrgdhFKdalpEhG5JsxlnKYJkJkmgXkJYyxt90UcRlJFZW/gxpYcXq5LlWpYTYSG/ajE\nQKaZPScXg8nkq0002wzJqB9EhGjAg6LMNImMXBMm0SvPHTxVR/0eBLwumWmSHDnSpToWo77bHk/K\nUSqWIstzAtEV+qnp1ojfI8tzkiNJttJEyOeG3+M+8DgRIRH2d8t3EqFgAD5JRA8R0dnBLxLRWSK6\nSEQXU6mUDZfnbFKlenfWXD9ylIq1aA2axi4GQC4IIxj04Yj4PbK1WlzkmjCRXKV5W2mOo2RgZdAk\nIC9kjH0LgFcC+HEienH/FxljFxhj9zPG7k8mk/ZcoYNJFxu3icCB3igVGTRZg9agaexiAOSCMILB\n7ohYwCs3B3GRa8JEcpXGbaU5TizoRUGuC+FgjN1Qf98D8JcAnmvvFalsbgLr64DLpfy+uWn3FU1N\nV+8avT1o8rpdiAY8yMnsqyVoCpqEXQyHDO7q2s00BTzSp0lQhF0Th2CDABQh+KhMUyzgQaEq14VI\nEFGYiKL8zwBeDuCr9l4VlPv/7FlgawtgTPn97FnHrYuu3nVIpgkA4kEvClUZNFnBxKBJ2MUAHJoN\ngpMq1uF191pKpaZJTIRdE4dkgwCU8lx8VKYpIDNNArIM4AEiehTAFwF8gjH2tzZfE3DuHFCpHHys\nUlEedxCjjC05ck1Yh5buuWUAf0lE/Pv/RIjFwDcIviD4BgEAGxv2XdcMpFWhn/p/LbvnxEXMNTFu\ng3DYmlAyTWPKc/JULRSMscsAnmn3ddzG9vZ0jwsKl27wJqFBYkEP8nJNWMLEoEnYxXCINggO9+Hg\nRAJSCC4iwq6JQ7JBdDoM+epoIXhMXRedDrvNs0YiOcDqqnKgHva4g+BNQksjMk3xoBdX05WhX5MY\ni3MtBw7JBtFPulQ/MME66veg0eqg3mrbeFUSxzBqI3DYBlGoNdFht49Q4cSCXjAGlOTYCMkkzp9H\nzXcw0GChEHD+vE0XpI9epkmW5+zGuUHTIdkg+lEyTb2NIhqQo1QkU3D+PFqB4IGH2oGg4zaI7giV\nMZomALJEJ5nIlVe8Gm95+U+guLwCRoTrsSS2fu23HFeN2C83ho5Q4cSDXlmeswjnBk3nzwOhAct4\nB54gOEpLaeNApiniV6qnsoNOoomNDXzgDeewE1/qbhCffPO7HLdBjBqhwokF1WHWsoNOMoGvXM/h\no/e9BDce+Tqup0t44Zveh88//xV2X9bUKBYcvq7edZBY0ItKo41mu2PxlR09nBs0bWwAFy4gtXAM\nHRA6p1aBCxcct0FwctUm2h12m6YJgBSDSzRRb7XxX5L343f+8O9BnQ6+/9yH8IlveondlzU1o0ao\ncLqZJlmOkEzgSroMImA9EcbKXBA+jwtX0mW7L2tqMuXRjRGAovMD5F5hBdPMnhOPjQ28LnUKj+8W\n8bdvfhHuORaz+4p00zW27Nc0yYUgmYKv7xRRqrfw4rsWAQB3LUXx1F7J5quanmyZl+dGa5oAWZ6T\nTOZKuoyVeBABrzKOZz0RwuWU84KmbKWJ+fDw9QCga8+Rrza7DuESc3BupkklU1ZOpTeyVZuvZDZ6\nc+f6heCqpkmW5yQauJZRumfuSIYBAHctRXA5XUbLYSn7XHVC0NTNNMl1IRnP1XQZp9X1AAB3LIZx\nJe28g0RujAUHIHV+VuLooIkx1guacs4OmoZlmnrlObkQJJO5rh4cTswpYvAzSxE0Wh1cc9iBIl9t\ngqiXaR2kp2mS60IyGsYYLqfLuGOxP2iKYDtTcdxBIjtmFiOArkBcisHNx9FBU6HaQqvDAPQ2DKcy\nNNMUkEJwiXauZyuYC3m7XZd3LUUAwHElukK1iYjfM9KDiTdISE2TZBz75QaKtdaBoOn0YhjNNnPU\nIZsx1hWCj6JbspZrwnQcHTTtl3tTnZ1enkuV6vB5XF1BH9DbHKSmSaKF69kqTs33OkrvVIOmb+wV\n7bokXRRqzW65YRgetwsRv5w/JxkPF3wfyDSppbrLDhKDlxttNNtMY3lOrgmzcXTQxEtzXjfhetbZ\nbqipYh3JvhEqAOD3uOB1kwyaJJq4nq3g5HzPpyka8OJYLODATFOre3IeRSzgkadqyViuqILv04uR\n7mOn1QDqioPE4NnyeAsOQJbnrMTRQdO+ejPdcyzmqHTrMNKlxm1zhYgI0YAXpbpcCJLxMMZwPVs9\nEDQBwF3LEecFTbXmgYzrMOT8OckkLqfL8LoJJ/rWxELYh1jA4yjbga5v2ZiuuIBXOWDLg4T5ODto\nKik30zefjCNdaqDWdO64kVTx4AgVTsQvh/ZKJpMuNVBvdXBy/qDh64m5IHbyNZuuSh+FalNDpskr\n14VkLFfSJawlwnD3aeOICHckIw4LmsY75APKvysWkAcJK3B00JRRNU3ffDIOwNli8HSpPnSuUMTv\nkWNUJBPh5enBTFMy6kem3EBbbZhwAsVaa6ymCVA66OSpWjKOG7nbM68AcHIuiJt55+wVPbPX8f5L\ncpSKNTg6aNovNxDxe3CHWrN2aomu3WHYLw3PNEXVie4SyTj4gWEw07QY8aPdYd0UvxNQMk0TynNy\nQKlkAnuFOpajgdseX4r5sVeoD/kJMelpmsYfJKJBr/QuswBnB02lBhbCvm7N+qZDg6ZspYEOGz7B\nOhqQmSbJZK6pmaYTQzJNQM8HTHTaHYZivTVyMClH0TTJdSEZTrvDkC7VsRS7/TN1ORZAqd5C2SGH\nUV6em7QmZKbJGhwdNGXKDSQivq6Aer/kjI1hkGHGlpyI34OiFIJLJnA9W8V8yNu1qeDwQDztkLXB\nDwgTy3MBD4q1JjoOKjtKrGO/VEeHAUuxIZkm9XN2zyEHiVylgVjAA497/HYdC3hQlEGT6Tg6aNov\nN5AI++D3uBENeJAuOacE0c8wY0tONOCVmSbJRHZyVRyP367fcFqmiZfcJgrBg150GFBuyLUhuZ1b\navltachBdFkNpG4VnNEgkalomycXCwpast7cBNbXwVwuFJZP4JFf/z27r2gmHB00Zcr17s20GPE7\n5jQ9yNhMU8CDUr0FxuSJWjKaTKWJROT2D1aehXXK2uDlhUmWA9L4VTKOvaISEA0PmpTHnBI0TXID\n5/DynFB7xeYmcPYssLUFYgyxvZu4++0/i/YHPmj3lenGsUETnzu3EFYWQCLs61oQOI1epun2hREN\neNBsM9RbzpqVJLGWbLkx9DQa8XsQ8LoOXaYppAZNlYZgNiPqqRouF9qrqyi/74/svqIjCS+9LQ8p\nzyVVcbhTxODZCcN6ObGAF802Q60p0F5x7hxQOWg8HWzW0XzbL9h0QbPj2KCpUGuh2WbdQGMx4j8w\nVsVJpIp1BLyu2/QoABCVJ2qJBjLlxlDHYCLCYsTvnKCpqk3TFPK6AQAVkcpzfadqMAb3tWtw/+iP\nKo9LLIVnkYZJHmIB5SDhlExTtjx+WC8nIuKs0u3toQ/7d25YfCHG4digiY9Q4afrRMTJmaYGFgdG\nqHCEXAicvlM11tfl5mAT9VYbpXoLiRG6h2TU7xi9Xy/TNL48F/LzoEmgTNOQU3XA4adqp7JXVKQb\nPs/tWxwRYTkWcJQQXEt5jh+whdorVleHPnwzlnRM9+IgDg6alBu+FzT5kak00GoLlJrUyCg3cACI\n+pUTd1E0gd/AqRpbW8rfZeBkOTnuGDwqaHJUpklbeS7s4+U5gT54R5yqPTeuW3whkr1CbaieibMc\nDTgi09RodVButDWV53ilQqjGofPn0QkebFBpB4L4jRe9Dl+8mrHpombDsUETPzknVE3TYsQHxnqe\nFk5ilBs40JdpEmkhAENP1ahUlMclljKYdR1kMeqcJolCrQUiIOKbkGnyCZhpGnGq3ptbsvhCJHvF\n+lC7AU4y5ndEpilXVd3ANXTP8b1CKIuajQ189ud+FddjSTAiYG0N9d9/Dz5630vwtZsFu69OF44N\nmvhGkejTNAFwpK4pPcINHOjrEhItlTniVD3ycYlpTJqCnlSzsE0HZGEL1Saifg9crttL1f10heB1\ngYKmIafqpj+I8y/4AVxOOWtosl6IyE1EXyaij9t5HYobuPMzTXk1CTA3IfMKCJppAvCnT3sRXvML\nHwJ1OsDVqwi94Qdxcj6Ir+3IoMlSbtM0hbnBpTO0G5xWu4P9cmNkpokLYoUTgo84VY98XGIamcrk\nTBNjvTUjMlqG9QJAWM00CeXTtLGBT775XQdO1Znf+l189L6X4OHtnN1XZxU/DeDrdl5Au8OQGuEG\nzlmO+VFptMXS/wwhV9XmBg70BU2C/Zu+vlPAM0/FDzx27/EYvi6DJmtJl+oI+9wIqF00CYc5H3My\nlQYYG+7RBPSX5wRKuQLA+fNA6OCcM4RCyuMSS8lOKM8lI84xuCzUmhM75wAgKGJ5DsAHTr8AP/qu\nP++eqhM/8np43YRLRyDTREQnAXwngP9h53XwAdVLQ+bOcZxicNnNNGnRNAnYNNTuMFzPVrGWCB94\n/N6VGK6ky2JpEjXi2KBJGaHSCzR6Jn7in6b76RpbDvFoAsQ9PWBjA7hwAeVjJ9ABIZc8Dly4oDx+\nRBClFLFf5lPQh3+wJqPKvZVywIGiUG1N7JwDAJ/bBY+LhPvQvZwq4+7laPfvHrcL64kwnto7/EET\ngN8C8BYAQ+vARHSWiC4S0cVUKmXaRfBAaHlMpomLxG/lxQ6aeKZpLqhB0yTgXrGTr6LVYVhdOHjA\nvvd4DIwBj+8Wbboy/Tg6aOo/WceDXnhc5Lj5czzIG5Vp8nlc8Htc4pXnAGBjA+/5o0/j9Fs/hp/5\njY8cqYBJxfZSBKBkmmIBD7wjZlPxZomMAw4UWjNNRISQz42yQJqmWrONnXwN64sHT9VnkpFDn2ki\nolcB2GOMPTTqexhjFxhj9zPG7k8mk6ZdC682jPpMBZSSNQCkBS9Z59TSe1xDpsnvccHrJqE0Tdv7\nSrPQbUHTSgwAHCkGd2zQtF9qHPClISJHejXxTNMoTROguIILJwRXuZIuAwAuq78fFUQpRQCTZ1Nx\nPYQTJqBr1TQBQMjnQVWg8tyWukEMBk13LkWwtV9B43C7+r8AwHcR0VUAHwLwUiKyZVZGT+86+jOV\n7x0ZwQ/Z+WoTLup5MI2DiBDxe4TKNG1nhgdNJ+aCiAU8jhSDaw6aRClFcPb75s5xEmHnuYKPG9bL\nEXloL98ormUqqDXF2cAsYGwpArCuHJEtN0Z6NAE9zyNHBE21FqIT5s5xQn63UEJwfoBYTxzcIM4s\nhdHuMGxnDu/BgjH2C4yxk4yxdQCvBfC/GWM/YMe1dIOmMYaQcyEfiMRvjshVmogHvRO7STmRgEeo\nvWI7U4HHRTgeP6gvIyLccyyGJw55eU6IUgTQmzuXGAg0EhEfUg7MNIV8boTHnCQifo945pZQ3oer\n6TISYR86rBdAHXa0lCIA68oRmXJjpBs4ALhdhKjfI+YE9D6a7Q5K9ZamkRGA4tUkkhD86r4aNA1m\nmpKKxumI6JpsJ1tpKPf8mODb7SLMh3zil+eqTU1u4JyI3ytUVWIrU8GJ+SA8Q6QD64shR+4ZmoIm\nkUoRgOJZ1Gyz2zaKZMSPtAM6hPoZ59HEES3lytkvN1Cst/BtdyvmfUfFiwYClSIAPtBz/AdrTJ2A\nLjLcDVxLpxCglOdEEoLzA8SgJut0UgmiLqUOb6apH8bYPzDGXmXX6/M5jJOyMwthn/A6v1yloclu\ngBP1i5Vpupap3Faa46wlwkiX6o4bp6I10yRMKQLoeTHdVp6L+IRPtw6SKo52A+dEAx4hheBX1XLE\nS+9RgqbDLnbliFSK4FnXcZomQAmaCoIHTdN40gCKV5Nomaa1xO0bRNjvwUo8IDNNFqGsh8n3UCIs\n/n6RrzanCprCfrdQB+ztMUETf5zrnpzCxKBJtFIE0Dd3LjIYNPlRbbaFOn1OIl2qd310RhERNWhS\nU6v3rsRJa1IhAAAgAElEQVSwEg8cmZO0SFQabdRbnbGaJgCIBz3CZ5pyXU8areU5j1Cn1Kvpym2l\nOc6ZpchRysTaipZDBKAOeRdcA5uvNjVnXgEgEvAKEzTlq03kKs2RQdO66t20te+sfUNLpkmoUgTQ\nyzQtDnRHONEVPFWsYzE6foFHBS3PXU2X4XYRTs4HcWbp8LdVD0OEUgQwXvQKKNkb0YOmPJ+zpbl7\nzi1M91y10cZuoYY7EsODphNzQdzIie0JdFjQGjQthH1djzNRyVWamtcDIJaU49qIzjnOqpqVdZqu\naWLQJFIpgtPdKAYyTbzM5QQTP0ARvmYrTSQjo51rAbV7rt4CY8yiK9PGVqaCE3NBeN0unElGcDlV\nFu4aDzs8OzM50+RFoSrGh+koclO4HwNK2assSNDEReBrIzJNx+NBpEt11FtiXO9hJltpamomWAj7\nkas00RJ0JmO7w1CoNRGfQggeFah77npWCYZOjQia4kEv5kJebB228pyI8NPBoBC8O7TXIZmmbsZs\nQqYpEvCg3WGoCtbSf6tQwzG1lfR0MoxSveWIyeGHCd4RN0n34IRMUzdo0uB+DCijVEQpxd/MVQEA\nJ+eDQ79+fE4d25GX68NM2h2GbGV8NymHT5HIVsRcF8VaE4xpz7wCSqap2mwLEQjeKij3Oh9ZM4y1\nhVDXANMpTBU02V2K4OyXGgfmznESEV6ec8YHU9e5dpKmSdDp1elir/PvTDICALgkxa6WwsXdk7yN\nYgEvqs220AaLuWoTRJP/LZywz41mmwnxb+ImtUsjOmFX4kowdTNfteyajiL5qhJoTMq8Ar1GIlHF\n4NNmXoHeXiGCU/6tQg0eF40NYNcSYWw5zL/MkZmmTLl+W2kO6C0C0evUnK4b+ATLAb6JFAQLmvaK\nPRF7N2g6Ys7gdsMzTZNctPkYBpGzTflKA7GAdiO/kE9ZFyLomniGdZR9CM807cigyVS6TUJTBE2i\nHrJzU1pwAL2hvcW6/et8t1DDUtQ/dj2vJUK4ka0KcfDRiiODpv1yY6hFfsDrRtTvccQ0d6CnvZqU\naYoKOL260mihVG91N4nlmB9hn1tmmiyG65RiE7IzThilkpuyUyjkUzLNIriC7xVrmAt54fe4h369\nm2mSYnBTyZSV+1tT95y6h4h6yO7OndNYrgZ641ZE2Cv2CnUsjSnNAYpIvMOAGznnHCacGTSVRtes\nlTZSMRfBIFrmzgGKyysgVnkuXVT+j3k5gohw+ggMJhWNQk2ZTRX2TSjPqUGTyK7g03YKhdQNQgSv\npr1CfWRpDlD0V3Mhb1f7JDGH3tw5bZYD/T8jGnkdmaawQFKOW4UajmkImgBneTU5MmgaNzYiEfEL\nm24dJF2qI+L3IOgbfjrl9DJN4mx4qZJyYu4vR5xJhnFZejVZSqHaRFRDScspmaZpOoXC6roRQQy+\nV6xjKTp+gzgeD2InLzNNZjJN0DSvzp8T9ZCdn9LsFegvz9m/Jm4ValiOjU8InFAbJ3YcdJhwXNDU\ndUAeomkClI4Ip3TPpYqTR6gAPXGfSJqm1BANx5lkBDdyVSE0JkeFosYBt3y0h8iu4PlKY6pMEz9s\niCB6TRXHZ5oAYCUekJkmk8mqJS0tlgNuF2Eu6BX2kM2F4NOOUQFgu+lrtdFGodaaWJ5bjgXgIjhq\nXTguaCrWW2i0O2MzTWlBF8Eg6VK92/Y6Dr7hiZBy5QwLmk6rYvDLaVmis4pCrXnbrLNhOCXTNFUp\nggvBm/auC8aYpgPQ8bmAzDSZzKjO6lEkIn5hy3PZSgMRvwfeIcNuR8EzTXbvFbcKyn0+zm4AALxu\nF5ZjAUcZvzouaOIDFhNDhOAAsBj2IVNpoN0R32RRa6Yp7Fc+AEQapZIq1uGig+/DmaWjNZhUBArV\nFmLByZmmbtAkqCdNp8OUkRFTztkC7M805atNNNqdyUFTPIh8tSlEOfGwkq00NNkNcER2Bc9XpjtE\nAH32NDZnmnjQNEnTBAArc0GZaTKT/RFu4JxExA/GemlakUmXGhNF4ADgcbsQ9LoF0zTVsRD2w92n\npVlPhEEEOWPLQrRmmnwe5R4SNdNUrLXAGKbSNAUFsRzgdgOTShErqu2A7KAzj3F612Ekwj5kBQ2a\nps28Ar3sq90H7FtFbmw5eX9bmQs6yr/McUFTZoQbOKdncCnmQuDUW23kq82JdgOcaECcmULA8CxZ\nwOvGyfmgzDRZCBeCayEe9ArbPZebcu4c0BOC2205sFcYb2zJOa7aDkivJvPIVhqaBz4DynBoUQ/Y\n2UpDkzarH5eLEPa5bd8r9tRM06SDBKAcJnZyNXQcUB0CHBg0cdHeqO6I3igVsXVNvREq2oKmSMAj\nnBB8WDniTDIivZospFDTVp4DxB6losf9mJtb2m05sFdUN4iJQnDeKSQzTWaRqzQxP8U9tBD2Iltp\nCjkzM19pTiUC54T9HtuF4Lv5GgJe10T/OAA4ORdEo91Buiz2ns1xXtBUnqBpUjNNog/t7QqptWaa\n/OIMYgTUoGnItZ9ejOBKuuyYU4OTaXcYSvWWpvIcAMSCHnGDJh2eND6PCx4X2a4R0lqeW44r68VJ\npQinkZsy0zQf8qmDccX5bOUoWbPpg6aI3/6qxK1iHcdiARBNdvdfmXOW8avjgqZMuYGQzz3S24gH\nU2nBy3O8w09rpika8Nq+EDiMMaRKIzJNS2FUm23sFJyxAJwMD6InjVDhKJkmMe6hQfS4HwOKK7jd\nQvC9Qh0hn7srwh2F3+NGMuqXmSaT4MHPNNkZXv4STdfEGyOmLc8BSlXC7kzTrUJNU2kO6A+anHGY\ncFzQtF+qjzUuiwe9cLuoO4NIVHpu4NoWRcTvQVEQPUq+2kSzzUaW5wA5uNcKunPnNA64jQW9wvo0\n6XE/BpQSnf2ZptrE0hxnJR6QmSaTKOi4h/heIpquqVhrocOm82jihH32Z5q0+JZxZNBkMvvlBhJj\nSlouFyltpE7JNE0jBBckhTwu4DudVGwHZAed+fBAYxohuKjluWx5eiM/QMk02a1pSo/Iug7jeNxZ\n7dVOQk+Jl3+vaEETb4zQk2kK+z0o2Zx9TRfrmve2WMCDiN/jmPlzjguatLSULjrA4DJdaiAa8Gg2\nYYsEPEJY4wO9oGnY2IhkxI9owCM76Cygm2nSKASfC/pQqrfQaos3UTxTriMWmM7ID1Bcwe22HMiW\ntZdRuMGliMJjp8NLvHNTlHh5pokP+hUFPY0RnIjfbWt5rtZso9g3zH0SRISVOee45TsyaJo0V2gx\n4hNe06TV2JITVcV9Igisuch+aYgHhxzcax3ci0WrEDweFG8cDydTaWqaFzaICJmmaVrDV+JBVBpt\nFATVljkZnmmKTxFocCPMnGCZJp750hM02d0916uiaF/PSgbWGVo/RwVNjDHslyZnmhJhH/ZF1zSV\ntKcvAaUEwxhQaYoxZwvAyKDvTDIsgyYLKEw50JNvJqJtEICSadITNAV9HlvXBGMMuUoTc2Ft70FX\nvyF1TYbTyzRNN6vN4yLhRqn0NH46hOA2d8/xhMU0+9vKXAC7DmkeclTQVOJz5yZEsImIX3xN05SZ\npu70agHE4KliHX6PqzsccpAzyQhuFeq2ixEPO4WpM03izp/LlHVmmrxuVG0UglcabTTananKc4A0\nuDQDXtKaRgdERKrBpVhrgnfzTRMAcsJ+D+qtjm1l+J7mVfv+diwWRLpUR6MlnnRgEEcFTfw0sDDC\no4mTiPhQabRt76oZR6o03OdoFN2ZQgKUVnhpcZQHxxkpBrcEnmmKaOye4+38IgZNWQ1l92HYXZ7j\nZRSthorc4NIppQitEFGAiL5IRI8S0WNE9CtWXwMPmrRacHDmQ17hLAdyU2aR++F7hV1WHNPa6QDA\n8XgAjPWMYkXGUUFTujR+hAqn5wou1kLg1JptFGutqWq+UZ5pEiB7M8qjidO1HZBBk6kUak1E/J4D\n8//GIWqmiTGGTHm6Qascu4XgPcGutmtPRv3wuOgwZprqAF7KGHsmgGcB+HYier6VF5CvNhELaF8P\nnHl1yLtI5CpNRAMeeKZsjAB6QVPRplmlaTXTNM0MwGNxnoGVQZOh9DJNk4XgAITtoOPXNZUQPCDG\nIEZgtBs4ZzURgttFuCw76EylUG1p9mgCxA2aymqJa0GHfsPuTBP/TNJaEnK7CMuxwKEzuGQK/JTk\nVX9Z2rUyrRs4ZyHkE07nl9PpBg4o5TnA3kzTNJ3hgJJpAmTQZDjcsHKipiksdqZJT8034lcWkEjl\nuVH4PW6cmg/KTJPJFGvah/UCfUGTYPqNTEnbYWgYQZ8H1Wbbtq7SactzgLJBHEYhOBG5iegRAHsA\nPsUYe9DK189Vm7oCjfmwVzzLAZ1u4AAQ9ivBil2a0nSpMZX0BOhlmnYdsC4cFTRNmjvH4UGVqB10\nvMyoJ9NUsinlymm2O8hUGhOvXRncKzNNZpKvTjfQ0+dxIeRzC5dp4qURvZomAKi17DlVT1ueA5QO\nusOmaQIAxlibMfYsACcBPJeIntH/dSI6S0QXiehiKpUy/PVzOgfczquZJpG8s7I6/y1Av6bJnqBp\n2s5wQOkOj/g9MtNkNJlSA0Hv6LlzHP6GierVpCvTJEh5LlNugLHJAd+ZpQiu7JfRFsBXymhEEL0C\natA05ck6HvR2RaaikNVYdh8GD5rsKtHp8dNZmQtiN18TwnPNDBhjOQCfAfDtA49fYIzdzxi7P5lM\nGv66+WpTX3ku7EOrw4TQi3LyU3h/DRK2OWhKl+pYjE5/7cfiAezKoMlYlBEqk9+MgFcZnim6pknL\nv4UT8YkRNHU9miYEfGeSYTRaHdzIip9u1YHtoldg+kwTIOYolf0ZgqagqpuwSwzOBbvTOJmfmAug\n0e4gLWgmXA9ElCSiOfXPQQD/EsDjVl5DrtLQ1aI/J+DQ3mxFX6kR6Ou0titommKESj/H4wGZaTKa\nfQ0jVDiJiLjz51LFOuJBL/we7UI5l4tsNy0Dei2hkzJNpw9xB50Iolfg8ARNfLPS0z0XUg8Tdmaa\nps0I9AaUir9BTMFxAJ8hoq8A+BIUTdPHrXrxToepmabpA42FMJ8/J8a6aHcYCjV9WTPA3vJcvdVG\nodbSFTQdi8lMk+FM4xossiv4NAM++4n4PbabW05yA+ccdtsBLaJXMzUcjVYHlUZ76pN1POjt+juJ\nwn65Aa+bRpqljqNXnrPnMJGtNKcSgQPOm+quBcbYVxhjz2aMfTNj7BmMsXda+frFWgsdps9Bmwe9\nGUH2i3y1Ccamay7oJ2xjpmlfh16XczwewF6xJuRszH6cFTSVGhONLTmLET/SRXEzTdN4NHGiAY8w\n5blJJ4mFsA/zIe+hHdw7SfSqfo9pGo68jjlbgKppEuREzcmWlWzNKLPUcXB9o33luenb3A9j0GQ3\nuap+B+35bnlOjHXBgzc95WpAafjwuV0o2WA5oEevyzkWD6LDerNNRcUxQRNjDOlyQ3OwkYj4hdY0\n6bmpIgH7y3OpojKNXosHx1EY3DtK9Go2eZ2OwSKW5/Z1uoEDYgjBp80IxAIeRPwe3JBBk2H0uhj1\nWA6oQZMgXk09E+fp9whO2O+2pTzHqzt6kgJ8xJDoZeuJQZMonULlRhuNVkfzh+tixIdspSFk91a6\nNLllfxhKec7moKlU12yPfyYZPpQGlyKIXvPqyXraoGku5EW12RZqxlO2YkDQZNPQ3lx5eu0JEWFl\nLiAzTQYyy9gR7iIuStCk1cR5HGG/x5agiVd39ArBAeCW4IN7tWSahOgUmtYALxH2ocPEm+hebbRR\nqusTysUCXiEyTUuag6YI0qW6cJkNA7BV9ArMlmnq/3kRyOocoQIo5pYAbBna22x3UKy3dLWGH1av\nJrvg97OeTBMRYT7kE8bgkneT6snWcOxqGkprNKAexvGYM8rWE4MmUTqFemk/bRt2QlCvJj0jVDii\nCMGT0YCm7+Vi8MM2uNdu0SugP2iKdYMmcdbFNF2xg4S89pXneEloPjz9Rq0ETWJvDk4irx6Opx3W\nyxFpaC9PEOg9SABqpsmGg0S62EDI5+52tU5DLOhB0OsWvoNOk6bJ7k4hYPqUZW9or1i6pj2NPkfD\niAQ8to9RmTR3rp/TyTAAHFoxuJ3ocaIGxMs0Ndsd5KtN3aWIoI2aplzX2HL6az8xF8R+uYGaTWXF\nw4beQwRnPuwTqDyn6Ean8f4aRMk0WX9v7Zf16XUBJeN3PB7AziEoz9neKQT0Whmn0TQBQFqQ0wNn\nlkxTNOBBudG2TadVrrdQbrQ1X/uphRC8bjr0YnA74JvENAN7gd4GL0rQNEuLMgD4PS64yJ7uOe7r\no6c1fKUrepXZJiPIV5sIet1Ted/1sxASJ2hSTJz1i8ABNWiyoSqxX9JmQD0KJ7iCTxXK2tUpBPTN\nnZuiew4QL9M0S0um7U6vUwZ8XrcLa4nwoSvPiUC+2kTE74FnytMoP4mLYjswy3oAlNNpyOexJdPU\nG9arQ9MUV/QbsoPOGPTOnePMhwXRNG1u4pd/8jvx6Z9/KbC+Dmxu6noapXvO+jWRLtVn6vo7Fg9g\nR/A1oaV7zvZOIUBJWQa92mulc0Ev3C4SzhVczwgVTkydaG9X0KTV2LKf04thWZ4zgbzOTWKBe9II\nEjTNknnlBH1uVJvWr4lZZuZJryZj0esGzpkPee0f2ru5CZw9i2RmFy4wYGsLOHtWV+BkW/dcqYGk\njrlznJV4ELeKdSG73jlajqm2dwoB03u5uFyEhbBPOK+mdKmO+ZBXV72aD+21S9ekde5cP2eWItja\nLwvv8uo09IxQAZQSr9tFwohe9dxTg4R8blsyTZkZMk3H4gG4CId1NqPl5KtN3SJwQJChvefOAZXK\nwccqFeXxKYmoQnArg8BOhyFTnj3T1O4w4fbtfiambRhjXwHwbAuuZSx6aqWJsE+47jml+0zfTcXL\nc3Z10KV0ZAXOJCNothmuZau4YzFs1qUdOfQGTS4XYS7o7W74dqPnnhok6LUnaMqWGwh4XV0x+jR4\n3S4sxwK4LjNNhpCvNnFqIaT75+f7hvbyjL7lbG9P9/gYwn4POkxpkAjrGE+kh2ylgQ7TV0XhcK+m\nnXwNyzFtXdpW4xhH8IwO1+DFiF+4+XPpUkO3fiOqZprsOg2linW4aLpyRLeDbk/qmowkN0M5Yj7s\nE8a/LFWsI+rX5jA/ipDPbYsQPFNudsudejghbQcMI19t6hqhwuGfaRk7M7Crq9M9PgY7hvb2/KX0\nH4Ce9umP4YF3vwHPXFuYSdNlJo4KmqZN+yUiPuE0TbNkmrpBk43luUTED7dL+4ywM4uHe3CvXejN\nNAGKrsnWzYGzuYmffOPL8Og7XznTB6QiBLd+TeQq+k05AeDEfFAKwQ1ilvUACDJK5fx5dILBg4+F\nQsD581M/Fd8rrNS/pov69boAgM1NnHzLT+NkIQVis2m6zMQRQRNjDPvl+tRvxqJg8+cYY9gr1nTr\nNyJ+VQhuY9A07bXHQ14sRvyHcpyKXTDGlE1Cd6bJa/9wUlX0mkjPLnoN2qhpmmXUxYm5IHZyNaFF\nr06g0eqg0mjPFjSpa8nWdbGxgcu/+lu4HkuCEQFra8CFC8DGxtRPFfbZEDSpBzHd+sRz50BVYzRd\nZuKIoKnSaKPW1D53jpOI+FBptG05hQ4jV2mi1uzg+Fxw8jcPoXd6sE/TpCdLdiYZlpkmA6k1O2i0\nOvozTWGf/ZomA0WvIZ8bVRtMIrPlhi5jS86J+SBaHeUgJdHPLCNUOEJkmgA89bJ/hRe+6X147FoW\nuHpVV8AE2NM0tN/tDNcZNBmo6TITRwRNegcYLoa5V5MApQgAN/NKKn4lrk/gFvK5QWRveU5P0HQ6\nGZFBk4HM7H4c8iFbtrm92sAPSNu658oNLMywUXPbAdlBNxt8JNAs3XNRvwceF9letp7Wj3AUdnj6\npUt1uNVGE10YqOkyE0cETXoHGPIbb18E/QaAHXVAp95MExGp8+esD5o6ahuo3kxTttK0/QPpsNA9\nWQf1fbDOh5T2aluHPxv4ARn0eiwXgrfaHRRqrZk0TfeootfnnF4UVvTqBGY9RADq0N6wz3b/smkH\n04/CjqBpv6SUq11TaF4PcP68ouHqR6emy0ycETSpab+FqYXg6tDeohi6Jj5T57jOTBOgGFzasdnl\nqk0020xXvfrM0uEc3GsXvPNtljlbgM36DQNFr2G/GxWLPWly6kate3Pb3MSxn/8p4UWvTqBXnpst\n0BBhaG+6pHST6h0Hw4nYIQQv6R+8DUApRV64gPzSCjogsNVV3ZouM3FG0MRTllNbDqjz5wQRg+/k\nqvC4aKaWTCXTZP1m1x13oSfTJDvoDIXrLvRu2AthJdiyVde0sYHtX/9tQ0SvQZ8bHQbUW9YZqPLN\nVfdGfe4cyCBN11GHjwSaJdMEKBlYu7V+twp1LM9wqObYVZ6bZW8DAGxs4K8/9nmcfuvHcPPRx4UL\nmACHBE16NU3cokCI8tzmJv7d616KJ3/tVXCfvkP3iTIa8NiSaeJB05KOoOnEfBA+j0t20BkEn5Gl\nN2jqN/Kzk6de9l144Zveh69sZWYSvYZUjycrS3TdzyS9QZNDRK9OwIjyHKDIOeyWEOwWajhmgKmj\n3+OCx0WWCsGVoGm2bB8g/oghxwRNfo8LoSmdd4M+N8I+t/1CcLW9eiG9M3N7dSTgscVyIFVSSot6\nNE1uF2E9EZIz6AyCZ5r0dgsJYeQHY9zAAXTnUZYt7JLtDusNH27RqxPgQVMsMJvz9ULY/qBpr1DD\nUmzGbA1U/auFB2zG9GteBzkxpwSNMmiaAZ72I5peYJYQwRXc4JlCdgjB9Qzr7ef0YgSX07I8ZwSZ\ncgNhn1u3i7Yo7dWpWc3wVLh+w8qp7lwwrFvT5BDRqxPIVZpK95uOeZ79JMJ+ZCsN2+ZkdjoMe8W6\nIZkmQNkrrAqaSvUWas2OIUHT8bjaVSqDJv3oGaHCWRTBFdzAVHw04LVljEqqWIff40JU5xyj08kw\ntvcraMrBvTOTLc/mRM3bq+0OmnbyNSTCvplFr2G/9f5lPCOhZ1gvgK7otbSsiF7bp8QUvTqBwozD\nejmLER8Yg20ddPvlBlodZtjMtYjfuqpEV/M6q6YJynqeC3llpmkWZgmaEiK4ghuYio8G7BOCJ6P6\nsn2A4tXU6jBcy1Qmf7NkLLM6URMR5kK+rjbKLnbzVRwzRPSqBF0lKzNN5QaCXv3ZPgDAxgY+9+mH\ncPqtH8PX/ukrMmDSSX6GOYz98G5ruyoTt9Tu6mUDynOAtZmmtJqYMCLTBAAr8aCw/mWOCJr2Z2hl\nXIz4um+obRjYXh3xe1BrdizP2Oh1A+c853N/jQfe/QbcsRyTnjQzki039Gc4VBbC9rdX7+RrM9lv\ncMI2DCedNXDlnJxXPheuZ+VhQi+5GefOcfgek7Fpv+gFTQZlmgIey9aEkZkmQBGD38yJ6ZTvjKBJ\nx9w5TiLsR6ZcR8fO+U4bG/jqL/9nQ9qrowHrNwhAWRR6OucAAJubWH/bz0hPGoMwYsMWob16t1Az\nKNNk/ciIXKWpXwTex8l5Rdd0XdBTtVaI6BQRfYaIvkZEjxHRT1v12sZlmlSLGpsOE7cKSuBhVNAU\n9nssk3KkDWrq4JyYC8jynF4qjZY6d07fm7EY8aHDemZ0dvHwC1+JF77pfUjlK7PNFFI3CKvF4HpH\nqABwzCBGp5AtNw3INPlszTRVG23kKs2u6HMW7HE/rs/8HgBKm3zU7xFW9DoFLQA/yxi7F8DzAfw4\nEd1rxQvnKkZlmvjYLXvKc7uFGoiMCzyiFmua3C4yZE0ASqapWG+hYIMUZRLCB01cxK23PNetU9us\na7qcLiPi9+ifAK3CM01W3kyNVgfZShPJiM4TkPSkMYx6q41SvdU1qNTLQthnq3/ZrlqKMKJTyI7y\nXLrUmHktc07MBx1fnmOM7TDGHlb/XATwdQAnLHhdFKpNxHWOFOonHvTC7SLbGof2CjUkwn54Z+wC\n5IQt1TTVsRD2wa13hMoAIns1iR806TS25PCUa8rmoOlSqoQzSxHdQmpONKBslla2V3NhpO4TkPSk\nMQzufjxL9xygaA/sbK/ezc8+Uojjdbvg97gs9aSZVePXz8n5kOPLc/0Q0TqAZwN4cODxs0R0kYgu\nplIpQ16r2myj0e4YUp5zuUg9TNiXaTJKBA4oGdhKo422BdKUVLFu2CECUA4SgJjDrIUPmjLl2bxc\nFruZJnv1G5f2yjiTDM/8PL3ynHWZplk9mqQnjXHM7EStshj1gzH7DC53C8qHoRGaJsDaTqFivYVG\nq2OY6PXkvNIpZOXsPLMgogiAPwfwZsZYof9rjLELjLH7GWP3J5NJQ17PKDdwTiJsX+PQrYJxHk1A\nn/7VAtPXVKmua8TWKHiDhIjd1sIHTb3ynL43hJf17CzPFWtN7BZqOJOMzPxcdgxinDloUj1pKsdP\noANC48QpR3vS2Cl65TqkWTNN/FRoVwZ2R800GRU0hf02dApFjdFvnJxX9RtV6/3XjISIvFACpk3G\n2F9Y8Zo88zpnVNBk4ygVxQ3cuKApbGGDRNrgTFMy4kfA6xIyAyt+0MRP1jozTfMhH1xk7/w5PnPN\niKCJnx6sFIIb0hmxsYHLX3oMp9/6MXz6bx50bMCkYpvoNTPjsF5OUt3weQBgNbv5GuJBb3cEyqxY\nqt/ghwi9Gr8BuqdqB+uaSNEdvBfA1xlj/9Wq1zVqWC8nEfbbcsCut9rYLzcML88B5mv9lBEqDcPK\n1YDiJXdyPiTkmhA+aMqUG/B5XAhPOXeOo9Sp/bZ6NV1KKeND7lwyIGjyKx8OVgZNPQ+O2TbqtYRS\notsSMOU6DXaJXoG+TNOs5Tn1VGjXujDKo4kTtcHIz6hM04m5Q2E78AIArwPwUiJ6RP31HWa/aLc8\nZ4CmCVAyTXZIObgnEbegMAJelTDbdqBQbaHR7hgyrLefk/NBXMuItyaMOeaZyH6pgcWwbyYBtTJK\nxfqKikUAACAASURBVL7y3KVUCR4XdYOGWQh4XXC7yNKREaliHfGgd+ZxF9GAF4mwD1v7h2dw7yjR\nq/q1swDOAsCqQaJ37uI9q/C1FzTZl2kyqjQHAGG/27IAMFVUNjgjNU2Asw0uGWMPADCmdWoK8lU+\nvNqYDXsx4kex3kKt2Z7N7X1KttWD5OqCgUGTReW5WYa5j+PUfAgPb2UNfU4jcECmqa67NMdJRHy2\njlJ5aq+E1UTIkFZSIlJHqViYaSrVDTtFrCVC2Np37ubQzzjRK2CO8DVbaSAW8Mx8L4X9HoR8btvK\nc0Znmqxtr27ARbNn+zhzIS8ifo/TM022YIYQHLC+QcLMoMns8lyqaOwIFc6phSAKtVb3PRYF4YOm\n/XJDt7ElZzHit1XTdClVNkTPxLFyECMA7BXqWIoas8GtJcKHImiyQ/QKzDaHcZBFm+Yy1pptpEt1\nQ4wtOdGAtZ40iYjfME8aRb/hfK8mO8hVmvC4SLd8Y5CFbuOQtfvFtUwFPo9L/9SFIXQ7rU1eF3tq\n5tVIITigZJoA8TKw4gdNanluFhJhf1e8aTXNdgdb+8YHTVbZ4wOzz53rZy0Rws18FfWWdT5TRmOX\n6BVQgqZZO+c4izZlYPmHoJGn6rDPuu65dKluWGmOc9i8mqyCz52b1f+Ow82Q0xZ7NW3vV3BqPgiX\nQYE4YF15btfgTlgO13eJpmsSPmgy4mSdiPhQbrRRa1q/UW9nKmi2mSEicE4s4LXcp8nIoIkx8RbC\nlNgiegWU98KoDTsZ9dtSnuOliFNGBk0WG/mZI3qtHAqvJivJV5uGicABYP3vPoIH3v0GfNvTj1k6\nWHw7UzH0EAFY55S/W6gh4vd0jZeN4tSCmFo/oYOmSqOFarM9s6aJf8DZUaK7tKd0zhlhbMmJWFiK\nKNdbqDTaBgZNyv+Dk8XgjLEHGGPEGPtmxtiz1F9/bcVrpw3M+inlOevXxPa+ifoNC4z8jG6vBpQA\nsqzO45NoJ19pGubRhM1NLPzMT1g+WJwxhmsmBE0+j+KUb3ZVYjdvrJM5h89lFC0DK3TQNOvcOQ43\nxrSjRHeJezQZmGmyUtPUNbY0KLuxpn4wXD0EuiarabU7yFQahmWa+CiVpsWjVLYzVYR8bkOzNby9\n2gpPmlTJWCM/4HB4NdlBvmrMsF4AymDxivWDxfPVJor1lqGZV0404DW9aUhp6jBOn8ghIpxcCAnn\nCj4xaLLT/Zh3MOh1A+dwe3c7Zgo9tVfCUtSPmIGpSyu751JGGFv2sRD2Ier3YNvBmSa7yJQbYMy4\n9yJp0ygVXoowSocCWOd+XKgZO0KFc0pQ/Ybo5KoNw+wG7BosbkbnHCcW9Jg+3P1WwVj7kH5WF4LC\n+fppyTTZ5348oxs4h2eq7ChFXEqVDBWBA8qp2ioh+MwjVAYgIqwthoRbCE5gr5v1M657DrDeFXw7\nUzb8VB3xK91TZpetDXHHH8JJQfUbopOrGJhpsmmwuBkaP0404EXBxJb9VruDvaKxM/P6WU+EsZ2p\noGOBVlErE4MmO92P+QfUzOW5iD1tpIwxXEqVDBWBA4r7caPVsaQDzeigCQDWFg6H7YDVGL1h81Eq\nVnbQMcZMEb1GVKf8ct3cNZHuuuMbGzTFAl7Eg15ZnpuCzgc38Te/+Tr88qu/yRjRtk2Dxc0MmmIB\nDwomZl/TpQbaHWZapmktEUaj1cFuoWbK8+thKk3TJPdjIrpIRBdTqZQhF9ctz834ARXyKUZ+VruC\np4p1FGstQ0XgALpdClbomlLFOtwuwoJRKXAoHXTXsxW0LNbSOJ2UwRs2n522Z2GmKVWqo9bsmNAp\nxDNN5pYi+If3sbjxwlfFq0mW5zSxuQk6e9ZY0bY6WLywtIIOCGx11ZLB4pdTZSxG/N1mBiOJBb0o\nmphp4uvBSKPaftYTXAMrjpxDc9Bkh/vxrHPn+rHDFfwpdeackSJwoM9/w4ISHW+vNtI/ZC0RQrPN\nupPuJdrg+jKjgqZjn/hzPPDuN+B7n7tmWXs1F3WuGjBSqJ/emjA307TT9aQxXvh6al480auwnDsH\nqpog2t7YwCc+9nmcfuvHcPPRxy0ZLP7krSLuORY15bljAa+pmabdvBLkL5tUnltb5N3W4qwLTUGT\nXe7H++UGEjPOnePY4Qre7ZwzQdMEWDO010hjS07PdkCcheAE0sUGQj53V/Q8E5ub8L3pxyxvr94y\nwW4AsG5kxG6+hmjAY0pW4NSCkmkSSb8hLCaKtrk+55YFJaF2h+HJW0U8bdmkoMlkITg/RJiVaToe\nC8DnceFq2kGZJjvdj/dLdcNGRiTC1nvSXNorIeRzG35DRa0MmorGt1evCZhydQKGBrDnzikn834s\naK++ul8BEXBizthMTdii7OvNXNW0DWJ1IYR6q9PNKErGYKJom2dNblmQCb+WqaDW7JiaaWq0OqYZ\nO+8WavC5XYbt04O4XITVhZBQe4WWTJNt7sfpkpGeND7LNU28c87I1moAiKqiV6vKc0ZnmpajAfg9\nLkcbXNpB2sgA1qb26m/cKmI9ETZ8grzf44LHRaavid2COZ40AHBygdsOyAzsRM6fRysw8D4YJNrm\nRo1WiI8f3y0CAJ5mVtCkdhaalW3azdewHPcbvsf1sy7YkHct3XO2uR/vGzjjKRHxIVNuWJr6vrRn\nfOcc0F+eM1f02ukwQx2oOfz0INJCcAIpI2ee2dRe/cStIp62bPyaICKE/ebPn7uZq5maaQJ63VSS\nMWxs4IG3/Cqux5JgRMDammGi7YWwDz63y5Kg6clbRRDBlDUBKN1zAFComrMudvI1HI+Zc4jgrCXC\nuLpfFmbEkLCO4IwxpMsNw1yDE2E/Wh2GvImdBP2U6y3czNcM75wDeuU5s0/VuWoTrQ4zvDwHKAtB\nBk1TsLmJP37n9+HdP/Stjm2vrjXbuJou426T9Btmm742Wh2kS3XTMk28ZCkNLrXx8Au/Ay/69+9D\np9UGrl41TLRNRFiK+S0pzz1xq4jVhRBCPuM1cgC6pspmZZpu5qo4PmfOIYKzngih1uxY2uU7DmGD\npmLdWOddq13BL5skAgd6olezNU3dFneDM02AmnLNiHN6EJrNTbCzZ7GS3zO8vbp87AQ6IDRPnjK9\nvfpSqoQOM7EUEfCaeii6ZXJ7dcDrxrFYQGaaNJKrNBALeOE2sLOXcywWwK2C+XvFE7vmicABRQgO\nmLBXbG6is7aGz77tZXjXT7/K1AYS3jh0RRAxuLBBU3funFHuxxa7gl9S7QbMKM/5PS543WRZ0LQU\nNX6TWBPs9CA0Zs3E2tjAow88gtNv/Ri+9JmHTW+vfvKWot8wK9MUD5obNHU7hUw8WZ9aCEpNk0ay\nlSbmQ8aNp+rn+FwQN/PmZvxqzTaupMumicCBvkyTketicxM4exau7W24wBDbu2lq5+0dqu0AT0TY\njbBBU9pgTxpukGmVK/ilVAluFxnuRwMo6eNowGu6kV+qpGwSRmuaAGk7MBUmirZ5qckKz6zHd4vw\nuV1YXzS+ZA1YETQpm6hZmSZAcYWWruDayFUMnDs3wOpCEDeyVVOHWX/1Rh7tDsMzTsRNew1ThOAW\nd96emAsi4HV1ExF2I2zQxDvdDMs0qc+zV7TGUPFSqoTVhRD8HmO7hDgRv/lDe/cK5szZAqTtwFSY\nKNrmnjSWiF53izidDMPrNudjJx40d86WmcaWnNWFEHYLNUtGJDmdTLlhWqZpbSGMVofhZs68bNPF\nrSwA4P61edNeo5dpMnCvsLjz1uUinF6M4Kk9GTSNhZfRjMo0LfzVh/FP7/lhvP5FZyxxP760VzZF\nz8SJ+D2mj1FJFesIet2GOLIPcmIuCI+LsC0zTZM5fx4tvznt1UGfG/MhbzeLYiZP3irhbhNLEfGQ\nuZkmM40tOafmQ2AMuCHHqUwkV2li3iR/IH6oMzMTfvFqBqcXwzOPCRtHwKtIOQzNNNnQeXvnUkRm\nmibBy3OGmGapc4oMFdKOodXu4Eq6bErnHCca8KBocvccN1M0w4PD43bhxHxQZpq0sLGBT/zUr+CG\nCe3VgJI52TW5PJctN3AjVzU3aAp6UTfRyO9mrooVE7NMQG+8jBSDTyZbaWDepPJcVz5g0vvAGMND\nW1k8x8QsE6BIOWIBgzOwNnTenklGcCNXRbVhfwZW2KBpv9TAXMhrTCrf4hrs9WwVjXbH8Jlz/Zjd\nXg2YY2zZj7Qd0M6nn/0yvPbch0CdjqHt1YCi0bmZMzdoeuRaDgDw7FMmliKCJohe+7iZN7+9Wno1\naaPeaqPSaJtWnluK+hHwurBlUsfWpVQZ2UoT37q+YMrz92P4XqF23u7El0w5xA3jzqUIGIMQ2SZh\ng6a0kUZ+Ftdgzeyc40T8HvOF4CaMUOlnTbXHl7YDk9nNm+dEvTIXwHWTxcdf3s7CRcA3nzRP9BpX\ngyYzSnRscxMXful78L43Pt/U8n53s5aHibHkKsp7bJYQvGvAa1LwevFqBgDwnHVzM02Acpgw2qep\n/D2vwT/7sT/E73/6ScMPccM4s6Rk/mTQNIb9kjKs1xAsrsFywdqZRTMzTV7zNU0muIH3s5YIoVhr\ndT8AJaO5mTdv5tl6IoxCrYVcxbzO0i9fy+GeYzFjhg2PwLSgaXMT+BFryvtEhLUF52VgiegPiWiP\niL5qxetl1XvVrPIcAKwuhE3TXP7TpX0sRnw4bVInaT+Gl+fQ80y6w4LrB5TPKBcpUzbsRtigKV02\nMNNkcQ32UqqExYgfcZNSx4AySqVYa5mWpam32shVmqaX5wDzdAOHhU6H4ZaJM8/4+3DVpA2i02F4\nZDuHZ6/OmfL8HD4ywvCg6dw5UNW68v5qIuTEuYzvB/DtVr1Ytqy8x2aV5wDzDHgbrQ4+8/geXnrP\nkqkz2zixoAcFgw/YPONjVdAU8LpxaiGESwJ4NYkZNG1u4oPveg1+93X3G5MKV2uwbHUVHRCyi8dN\nrcFeSpVx55K5N1M04EGrw1BvmeMjwv2szAya1rsdKvYvBJFJl+tothlWTNLTmP0+XEqVUKy38OxV\nc0sRcbOGk1pc3l9PhLCdqVg6J3NWGGOfBZCx6vV4VtSs8hxgngHvg1f2Uay38PJ7jxn6vKMwI9P0\nyLUcAl6XqRKUQe5ainQNcu1EvKDJjJERALCxAdrawve/53N446/8mWkBE2MMT+2VTLUbAICoyaNU\nem7g5gVNpxbMb+s9DOzk+PgOczJNpxZCIDLvffjytioCNznT1C3PGV3utbi8v5oIo946fG75RHSW\niC4S0cVUKjXTc2XV93g+bF6maZVnYA0Wg3/ysVsIet144V2Lhj7vKMzQND28lcUzT86Z5rk2jHuO\nxXA5XTatO1Yr4gVNZo2MULn7WBRP7BbRNukUt19uIF9tmh40RQI8aDJHD8SDJjMzTQGvG8fjAWk7\nMAGznaj5zDOz3ocvXc1gLuTFHQlzs6+xrqbJ4IPE+fOo+wb+700s768fUuNXxtgFxtj9jLH7k8nk\nTM9lhaaJ642eMlB8zBjDp752C//iaUkEvOYYHw8SC3hQa3bQMKgqUWu28djNAr7FZLuEQe45HkW7\nw2w3uRQvaDI5Ff6sU3MoN9qmpfm4UM3stGXUr2wQJZO8mlIl84MmQGmxlgaX4+nOPDNxfMdaImRa\npunBKxk8d30BLhMGq/bjdbsQ9rmN1zRtbOB3XvPzSCeOARa0WK8tKJu1XBejyVUaCHhdpgYeJ+eD\niAU8eOxmwbDn/PylfewWanjlN1lTmgN6GVijGj2+cj2PVofhOSaX2wd5+vEYAOBrO8a9H3oQL2gy\nORV+/5rii8Et7I2Gn0pOm2hsCfQyTWZ10PFMUyJsbtC0ngibJkA+LOzka/B7XMYYvY5gPRE2RdO0\nk69iO1PB804nDH/uYZgxf44xhj++4wX4b+/9FGCCT9YgK3MBeFyErczhyjQZiTKs17z1ACidjPeu\nxPA1A4OmDz64hbmQF6+4z7qgqTt3tWxM0PSQuneaXW4fZD0RRsDrwtdl0DTA+fOoeQc2agNT4acW\ngliM+PGwSUHTpb0ygl636c7BUTVoMrorgpMq1jEf8sLnMfcWWU2EkC7VTcuYmYHV7dU3c4rdgJmd\nNmuJMNKlhuHl3i9eUbTBz7vDfBM/QCnRGR007ZcbKNZb3S5Ds/G4XTg5H3TUYYKI/ieAzwO4m4iu\nE9EbzXy9bNm8Yb393LcSx+O7BUPkHHuFGj752C1873NOWlaaA9C17skYFDQ9vJ3FHSaPfxmG20W4\n+1hMBk2DXHnFq/GWV/wESssnTEmFExHuX5vHxS1zGj0upUo4sxQ2vRRhdnlur1gzvTQHKKcHwHGl\niPfDwvbqG7mqaSJwzrpJs7a+cDmDaMDTTa2bjRlDe69a7EkDcLd852SaGGPfzxg7zhjzMsZOMsbe\na+brKSNUzBOBc+49HkOt2cHlWXRNm5vA+jqScyH8w++9Hj9y7QvGXaAG+NB7PppsFqqNNr5waR/P\ntcDJfBj3Ho/i8d2irYbIwgVNn3l8Dx+97yXIfu1J01Lh96/P41qmij0TJrtb0TkH9JfnzBGCP7VX\nwuqC+ZvEmgNtB6xur76aLmPd5A2759Vk7Pvw4JV9fOv6AtwmHyI4cRM6hb6+q+gfrWyvvmMxjCsp\n6ZY/iky5YUmm474TSrCvW9e0ual0f29tgRjDyUIKSz/7k6YPjO+HSyy4jcwsfPJruyjWW3j1s0/M\n/Fx6ePrxGHKVJnZN2Lu1Il7Q9MQeziTD3XZ0M+Cqf6N1TdVGGzdyVWuCJhMtB8r1Fi6ny/imE+aN\nvODwAaWH0eDSiBbrfKWJbKWJOxbNWw+AosFzEfDkrnENErv5Gi6nynj+aetOpWaU5756PY+5kBcn\n583N9vVz13IE5Ua72wQgOYihEyPGcCYZgc/jwmM38/qewOK5p8OIB71wu8iQ8tyHH7qOk/NBy8rt\ng/CM9WM37CvRCRU0VRotPHg5g5fcvWTq6zxjJQ6fx9UVtBnF5bQ1nXMA4PO44Pe4TCnP7b77D/F/\nfv8N+KmX323qnC1AMV5bCPsclWnSihEt1jzzY7aeJuB140wyYmin0GefVALFFz9ttvbyaTBDCP7V\nm3l804m4Je7NnDvVg9c3BBgbIRq1ZhvFessS+YDX7cI9x6L614XFxqjDcLkI8yEf9suzledu5qp4\n4Kk0/s23nDRdfjKK+1ZicBHw6PWc9h9Sy6NwuQzZz4QKmv7pqX002h285B5zgyafx4VnnowbHjR1\nZ85ZkGkClPlzRaODps1NrL7tzThZSJk+Z4tjZru70+FBkxV6mvtWYoYGTf/4ZArLMT/uXo4a9pyT\niAe9qDTaaLaN8aSptxR7kvtWzM+69nOX+n/2jf+/vTMPj6o+9/jnNzOZLJN9g5CVfYewiCvigohc\nLW1vrUtq1VqtVlq1vXV5sLXL5VZvb9db61a1Lqm92kVwtyiotFYFCRAkgQTInkxC9j2T+d0/ZiYk\nYZJMJjPnnCG/z/PkIUySOW9O5p3znnf5vgZQQDYanikwLTJN4JKpKahopsfhh6iixsKoI5EcbaVh\nguW5h94swiwEX1qRESCrxk+U1cK8qbEDgrljMqg8SoCuZ4YKmnYU27FZzazUYPPziuxEDla3BFRd\ntLS+A5OAnCCXUjzEuPfPBZTNmwnr6Rr6WJDTydmJKmgaieMNnQjh0rMKNgunxVHb2s2JADSMOvqd\n7Cpp4PzZKZpmaAK9tLe4to2+fqlJqXowiTYrSTar7kJ+RqTBLYcSsN2kY3D+7BQ6e/vZc3z8N9mt\nP/gRXUGcBveJ/Hye+8lVPHb9Kr8zLW8W1rC1oJpNF80KauuMLyzLimdfRbNva4aCUB41TNAkpWRn\ncT3nzkom3BL8ccyV2Qn09Uv2V/pZq/ZCaX07WYlRmtgPrr6mgDeC65BOzk6yUd3S5d+dnA5oOV5d\ndqKDtNgITUaUJ9z0Ooh9lS20dPWxZq52pTmABHf2oSlA49UHqlzvD1oHTQAzU6NV0OQFT5nJMxUW\nbM6emUSYWfDe4fH3Jf40fjn3XfYt+jIyNRFGPQV3piWlsRYT/mVa/lnSwH+8tJ9F6bHcfuGsIBrr\nG8uyEmjrcQwsDR6VIFzPDBM0HbG3U9XcxQVB7mfycLIZPHBDUKUaTc55iImwBLynyZmZ6f0LQUwn\nZydFISVUNHaN/c0GQMvx6mMngj8552FhmiswCETQtLPYjknAebO02a/lIdl9Ia0PQLYMoLCqhbjI\nMDITtWsC9zA7NZoj9nY1QTcMT5lJq0yTLdzCGTmJ7CweX9C0p6yJFz4uJ/HrNxJWUa6JMOopTDDT\n8ur+aq5/+mPS4yN54qsrNd01NxLL3aKaPpXoglAe1f8MuNlRZAfgwnna3Jkm2qzMSLEFTOSy3yk5\n2tDBTA3HkqPDA1+eK7nzPjot2qaTPU3Op2Mz+ETRQm7AQ5x7QqzQ30khGGi6vOvS+Xz0+E3E/+2l\nwBnoAynuC+lE+zc87Clr0rwJ3MPs1GhauvoCFgCGBD407Xr0hrTKNAGsmZNCcV3bwB7Iseh1ONn8\ntwOkxUXw3XVzgmzdKEwg0/LHj8r51gt7yc2M58Vbzw66VpyvTE+2ERcZxt4KH67dW7bgjBxm9wSv\nZ8YJmortzJsao+kfZmV2AnvKmgJyJ1fV1EWvwzkw9aIFMRFhAQ+ans4+hwcu/zbOrCzN0snZQRJW\nDHU8cgMe4UktWDgtlsIqP4OmQU2XJiQpjXVBHyIYjif74Ol7mQhH69s5XNfORUEeTBmJWamuZvCS\nuklSovOxafdEey9RVjNRVotmpnmGk17dV+PT9//srSKKatv48cZF2MK1s/MU/My0HKxu4ftbC1kz\nJ4XnbjpzoFfQCAghWJYVzye+9Jjl5fHxfQ9SGZuCDND1zBBBU1t3H7uPNwV9am44K7ITaOrs42jD\nxDMcJfWuKZeZqdqpBge6PNfj6Oe1/TU4rr4WU1mZZunkJJuV6HCLyjQN45j7fORotL4D4MzpSZSd\n6PTvb2EQTRqLSQRE/fiNwloA1i/Sbk/YYOZMdd2AHQqgdpah8fH109Deo1lpzsOcKTGsmp7I0/84\nNuZk5rtFdTzxwTGuOyubSxZM0cjCEdiyxZVZGcxomZb8fGR2NvPTE9j1uxv5HUWarnzxlXNnJlNi\nb/cp87dt0YVcdtdzSEd/QK5nhgia/lHSgMMpuUBDPRdwTdABfk1FDKfU7rrIzEjWtjzX3uMIWM/D\nzuJ6WrsdbMydFpDn8xUhBFmJUaelwOVE8OxYmjdVmxUkABfPd924bD9kH/8PG0STJinaOrBweiK8\nWVhLbmY80+L1KUukxkQwJTZ8fJm/AGvSaIqPr58T7b2aluY83LpmBtUt3by6v3rE7ymoaGbTH/ey\ncFosm/9tvobWjUBeHjz+OD3pGTgRdE/LGDnT4s70ifJyTEjSWuxEbbrNkK8hj/bbB4cbxvzeveXN\n5GbGB0xbasygSYvlpDuK6omJsAw0Z2vFzBQb8VFhAWkGL61vJ8lmHZje0YKYCAv9TklXgGQTthZU\nkRxt1bx5F1wyDao8N5QDVS3ERlg0bULOTrIxKzWadw7Vjf+HDaNJEz7hTNOxhg4OVLWwYbE+WSYP\ni9Pj2e+rkF8QNGk0xcfXjx6ZJoAL5qQyOzWaX20/QnNn7ykB6pFfPsYNT39McnQ4T99whnEyNHl5\n1BQUMeOeV3ht24cjZ1oMkCn2lTnvbOPDx77GlauyR7056OhxUFzbyvKswMUWvmSa/kAQl5NKKdlR\nbGf17GTNO/OFEKzISgiIyGWJvV3TJnAYvH9u4iW61u4+th+yc/mSaVh0mJDITrJR2dSJI0CihKcD\nhVUtLNKhCfni+al8fKxx/DvctmyhNzxi6GM6aNI88+Mv8+TXzvI709La3cdtz+/BZjVz+RJts67D\nWZwex9GGDt/K8CF00fOKj6WkhvbegSlJLTGZBFu+sJialm6e/uYWnDcPDVDT776DK4ve5/mbziQ1\nNmLsJ9QQT2ZuVFVwA2SKfSI/H3HLLaQ12xFjyCj8o6QBp4RVAVz7MubVMdjLST+racXe1hP01Skj\nsSIngdL6jgnrupTWays3ACf3z7UGIGh6s7CWXodT89Kch+zEKPr6pdq15abX4aSopk0XfaC186fg\ncMqBiVZf6b3qGn50+R2cSJqqqyZN8gn/NWmqm7u4/qmPKbG38+h1K3QrzXlYkhGHlHDQlxJdqFz0\nRsJdSmpOScOJ99eP0ylp7OgZWEKrNaumJ/Kbq3O58m+PYOoaGqBGOXq4b9dzA/s0jUR0uAWr2TT6\n0l6DZIrHZBw3B29/VkdshEXboMlX/F1O6tG+0FoEz8MKd9puItmmxo5emjr7mJmiXcMuuGQTPMef\nKFsLqshOiiI3M37Cz+UPJ2UHVIkO4HBdG739ThbpEDQtz0ogIyGSFz4e38X23aI68metZt+ugpDU\npNlX0cyG33zA4do2fnvtMlbP1uc9aTCev/8BX4KmULnojUZeHs++8B4z7nmF3pKjp7x+mjp7cUp0\nyTR5WL8ojfQ27700psoKja3xDSEEafERVDaP3Dgtt2yhW2/1cl/w8ebA0e/knUN1XDQvNaBVrIA9\nk7/LSXcU2VmcHkdqjD7pzKWZ8YSZBbsnEDQN7JzTuDznOWcTbXqta+3mn6Un2Lh0mi56NHBSduCY\nmqADGNiqrkemyWwSfOWsbP51tJHicUxuPbnrGNPiIjhfr2BjApmWyqZObnpmN9HhFl799mrWL0oL\nsHH+kRITTlpchG9BUxA0afTAczPY1HnqzeDA3jkdepoGI0IwQM1JsnF8lEnx0ks2cvelm2ifmq5P\npthXfDz3e8qaaOrsY93CwPYl6jo919zZy6flTVyoU5YJXNvdF06Lm5DIpUfOXUuNJmBgy7e9bWIl\nrVf2VSMlbFyWHgiz/GJqbARWi4nyyRQ0jTLpdKCqhZhwiyY757xx1cpMwi0mnv3wuE/f/9HRagr0\ntQAAE3tJREFUE3xyvIlbzp+hS08c4HemxdHv5Nbn99Dj6OfpG87QZDnyeFicHse+Ch+awfPy+PT+\n/w6oJo0eeBbxeislab13bkTGO8pvAKYn2zjW0DHitPXOYjvbFl5I82eH9ckU+4qXc++IiDzl3L9R\nWIvVbBqYtAsUugZN7x9xNWmt0amfycOK7AT2VTbT6/CvCdlzgUvXuP8hISqMMLPAPsFM08sFVSxO\nj9O8J2swJpNbdmCylOfGmHT65FgTizPiAjYmO14SbFY25k7jz3sqfdJC+e2OEpKjrVy9Ssc7bT80\nacjJwRxm4dH7/51nw0uYPSUm+HaOk1XTEzl+opPqUUorHrYtvIB1dzxLf5/DuBe9MRit7aDOfYPo\nuWHUDXf/FdnZxs7KDCInKYrO3v4RKxPvHa5nVmo0GQnG68kawqBzL4WgJj6VR/PuQV577cC3NLT3\n8H+fVLB+0dSB3t9A4YvkQNCWk+4sspMQFaZbH42HldkJ9DicAyWR8bK3vJncrMDpQPiKEIKU6PAJ\nledK7O0UVrXq1gA+mJykSRQ0jdJ/c6yhg+K6NtbO11cY71sXzUZK+Pnbh0f9vp3Fdj440sDXV8/Q\nd8za/Wbal5GJE0FnWvqYmjSUlSGkJKO1ntz/vNuQ4/nnuiVA/lEytibNnrImlmXF65ftCwCjTXpV\nN7uCJq1vUL2Sl+cKTI2clRmEZx3TMS8lus5eBx8dbdRcK9Fv3OdeOJ28tu1D/id5Ja8fqB348qM7\nS+lx9HPH2tkBP7Qv03NBWU7qdEp2Hq5nzZwUzDrdTXtYke1/M7hHB2KZToFfSkz4hDJNWwuqMAn4\n3FL9g6asRBvljZ2TY0HpKP03bxS6VjVcqpMStYfMxChuPDeHv3xaSfn//t5rKbGz18H9LxcyM8XG\njefm6Gmui7w8Wg8dYcY9r/DiSx+MS5NGGHQ8f+6UGPJKPuDiy84cVbSyrbuPQzWtA8MtoYpnMs5b\npqmquYskm5VIq0E0kEIIT9n5uJcWiA9LT9Db7+QCnas+/nDDOTksTo/jgW2FlNa3s7PYznP/KuOL\nyzOCUj3R7XZkf1ULjR29mq9O8UZqbASZiZHjD5ry8zHPmE7Jg1dw241rdblLTYmJwN7qX0+TlJKt\nBdWcMzPZELoiOclRdPWNnD4+rRil/+atwlqWZsQZ4m76mxfO4islu0j57qZTSokyP58Hth6ksqmL\nn35xCeEWY1zIEqKsmE1i9EW3ITSeb3rhj/zglV+T2FAzqmjle4frcUo4zwBTfxMhLjIMs0l47Wmq\naurSXQYiVEmPj8RiEhxrODWb/26RnSirmTOmh17AbTGbePDfF9PR08/aX7zHDU9/wvRkG/+xbm5Q\njqdb0LSjyI4Q6DdpM4yV2YnsHs/yXnd6P6K6EhOSyOpKXdR3U2L8Vz/+tLyZ8sZOQ5TmgIGm5+OT\noUTnpf9GRkVRf+8P2FfZonuWyUNcZBjf//B5IvuGvcY6O2m563u8tKeSb180K6A6KBPFZBIk2sZY\npRJK00+bNxPeO+zGyEtW7O2DdSTZrAOZ81DFZBIkRIUNTMoNprq5i2nx+t/ghSIWs4msxKhTJuik\nlLxb5BKYNsqNz3hZOC2O9+++kDsuns13LpnDy7efy9S44LxOdAuadhbbyc2M13TtyGgsz06gvq2H\nisaxmy0Bw6jvpsaEc6Kj1y8l7a0FVYRbTLotJB1OzoBW0ySYoBvWzFgZm8LWb/6Q67pnER1uYWOu\nfpOMw7FWV3l9PLa+lhvOyeGuS+ZobNHYZCREUtk0si93/vDHdIWCJg34lBXrdTjZUWRn7fwpurc7\nBIJEm5XGYT1NUkp30KQyTf6Sk2w7pTx3qKaNmpZuLp6n83LhCZISE86da+fw7YtnB7W3Upegqb6t\nh32VLVxkoPrpSk9fU7mP4ucGSe+nxoYjpWu1wHjo63fy6v4a1s6fQkxEWJCsGx/pCZGYTWLyNIO7\nmxn7+xz89qnt3GlewBF7O7/LW26I0twAI2Rfeqel88AVC3TT9hqNnCTbqK+jv8w9n3su3URveobx\np598yIr96+gJ2nocrFsY2hc+D66gaeh7WmuXg47efmP5RoiRk+QKmpzOkxWVd4tceyYvmGeMqo/R\n0SVoev+wSwXcCP1MHuZMiSEm3MLu4771NcnMTO9f0Di9n+LWKxlvH9CuIw00dvQapjQHEGY2kR4f\nSVmjj0FTKG90H4SrJr+Eh69dzhNfXRFwXZEJM8Iof8R/P2jIgAlcYqnVLV10e1lmLaUk/6NySi/Z\nSFhFufGnn3yQUti2r5rIMPPApJ0eCCHWCyGKhRAlQoh7J/JcSbbwU8pzVW7JBZVp8p+5U6Pp7nNS\nNEi0dvshO0sz9BOYDjV0CZp2FNtJiQlnQVqsHof3itkkyM2K97kZfMdX76TTon9639PAPV6By5cL\nqoiLDDPctER2UpRv5blQ3+juhX9bksZFRkyRh6QmjQ0pocJLAL63opmi2jbyzsw2bNA3BPf5d2Zl\n4UTQlJw25PxXNHby8t4qrjojUzfJByGEGXgYuAxYAFwjhFjg7/MlRVtPaQSvVkHThPGUb1/ZXw3A\nZ9WtFFQ0s2GxMRTwQwHNgyZHv5P3D9dzwZwU3YT7RmJFdgLFdW1jbnf/6OgJbu6fywtfvx+ZlaXf\nhSQ/n0XnLOHoQ1dw1kUrfA4YOnocvH2wjg2L07BajKXnkp3kalQcsyHfID1lk4YQ1aTxNlSwda+r\nl++KpSF0ocjLw1RWxn0vFXDmN57k8NrPDXzp0fdKMQnBN9bM0NFAVgElUsqjUspe4E/ARn+fLNFm\npaWrj75BvZonM00qI+IvSdHhnDsr2b0FQvLkrmNEWc1cfYYBByAMiuZXzL0VzbR2OwyX4QDXBJ2U\nLrHKkbC3drPphb1kJ0bx5V/egygr0+dC4s60WCorMCGx1Vb5nGn5+2d1dPX183kDleY8TE+OprXb\nMeYSYmmQnjKFMclx7zIcnrV09Dt57UANF89PNUwv33j43vq5RIdb+M6LBfQ4+nnnUB0v7q7gy2dk\nkBanawYmHRi8rbbS/dgA41nqnuRl/1x1cxdWs4lkm85q4CHO55ZOo7Kpiz99UsEr+6q5ckUGcVGh\n5wt6oXnQtLPYjtkkOG+2frX3kcjNisckYM9x783gff1ONv1xL+3dDh75ygp933QnkGl5uaCKaXER\nnJFjnDFxDzNSXBmCo6Mslux3SpqTR5j4M+LIuEJz4qOsxEWGnaJ+/NGxRhrae7liifFuGHwhOTqc\n//rCIgqrWln5n9u5+dndzE+L5TuXBEeTJpCMZ6n7wF7N1pO9mlVuuQGjVShCjXULp2C1mLjvrwcw\nmeDGc6frbVJIEdilLD6wo6ieFdkJxEUaL7KNDrcwb2ose8q99zX97K1iPj7eyK+uymXuVJ13VI2Q\nUZHl5Yz2ltLQ3sMHRxq4efUMQ775zEx2KbgerW/3GtR19/Vz1/8VEHbmtfz87w8T1jOol8uoI+MK\nXfC2lueVfdXYrGZDDaGMl/WL0nj2a6t4bX8NEWEm7rlsHlFWzd/Kh1MFDJ6OyXA/5hezUl3vr4fr\n2liUHuc6QHOX3tm004LYiDCeuXEVTZ29LM2MV9OI40S7TFN+Po6sLF69cw1PPvAlwzbsrshOoKC8\n+RTdozcO1PD4+0e57qxsPr/MABo6I2RUamJT+PX2I7R0ee/Lem1/Df1OyReM8Dt4IT0hEqvZ5DXT\n1NLVx/VPfcwbhbUsufubhD35+5BqTlZoy3BNmn6n5K2DtaxdMEXfHXkB4Pw5KTz0pSX8aOMiIwRM\nAJ8As4UQ04UQVuBqYJu/T5aTFIXVYhqY8nL0OymqadP/ZvU04eyZSWxYnKYCJj/QJmjy9N9UuPpv\nYuqqDTvptDIngY7e/iEjmaX17Xzvz/vJzYzn/svn62jdILyMITsjI3ntqk38cvthznvoXX7x98M0\ndw7tDXq5oIp5U2MM++ZjNgmyk6I4Wj80aKpr7eaqxz7k0/Imfn11Ll9fPSPkmpMV2pKdZKO6uYse\nh0t24NPyJpo6+7hkgQEnFEMcKaUD2AS8BRwCXpRSHvT3+SxmE3OmRHOophWAI/Z2uvr6WZoZFxB7\nFQp/0SZoCqFJJ88Kgk/dJbrOXge3Pb+HMLPg4bzlxpGZ9zIGbnriCW5+7Pu8+q3zOGdmEr955wjn\nPbSDn71VRPtTz9Cdnslfbl/NSw9eY8iA1cOMFNuQXpTS+na++Lt/UtHYyVM3nGEotWyFcZmVGo1T\nusaqAbZ/VofFJIyng3WaIKV8XUo5R0o5U0o54Tr5vKmxAzev+ypcwzm5maG9IkYR+mgTNIXQpFN6\nfCRTYsPZfdy1h+6+vx7giL2d31yzzHipzBEyLYvS43jsupW8eedq1sxNofLh32O+9RsDe/KMnOkD\n1wRd2YkOHP1OCiqaufLRD+lx9POnW85mtUF2FQZSyE8RHNbMTiHMLHijsBaA7YfqOHNGIrEhODU3\nGZk3NYb6th5OtPdQUNFMXGTYwFSkQqEX2gRNIbQcUwjBrZUfce9t68Fs5nvfuJRHRJFhLtbjYd7U\nWB6+djn/s/dFrwtXjZjpA1iz+212/PYGzGEWUhbP5fMHd/LnW89hcYYxUvOBFvJTBIe4qDDOm5XM\na/trONbQQWl9B2vnq9JcqDBvqkv8uLi2jYKKZpZmxoeGGKnitEaboMmHNQCGIT+fr/5hC9Na7Agp\nyWit59Jf/8CwWRlfCKuq9P4FA2b6yM9n1U/vJaO1HiEl6S12vr/tV+S89bLelg0moEJ+iuCxYXEa\nVc1d3PSHTwgzC9XPFELMS3P1Xe4pa+JwXRu5BrlpUkxutAmaQmkNw+bNmLuGbkcXBs7K+EQIZfq8\nnv8uw53/MYX8YHxiforgsG7BVMLMguMnOvjVVcvISFDlnVAhOTqc5Ggrj7xXilO6dPQUCr3RblY1\nL8+YQdJwQqj/yme2bHH1MA1uxjdqpu80Ov9SyseBxwFWrlw5xl4YRTCIiwrjJxsXkWizsm7hCIKo\nCsPy3XVz2XWkgehwC2fPMJ4gsmLyYQiBD0ORleVa/urt8VDFE6xu3uwKPrKyXAGTEYPY0Dj/ARXy\nUwSXq1cZ6rWjGAfXrMriGvX3UxgIY21rNQKh1H81HkJF0yg0zn9AhfwUCoVCERqooGk4odR/dToS\nAuc/0EJ+CoVCoQgNVHnOG6HSf3W6EgLnX0r5OvC63nYoFAqFQjtUpkmhUCgUCoXCB1TQpFAoFAqF\nQuEDKmhSKBQKhUKh8AEVNCkUCoVCoVD4gAqaFAqFQqFQKHxASBl4oWIhRD3gRaEQgGSgIeAHHT/K\njqGcznZkSyl13bisfGJcKDuGctr5xBj+AKf3ufcHZcdQdPOJoARNox5QiN1SypWaHlTZoewwMEb5\nnZUdyg6jYJTfWdmh7BiOKs8pFAqFQqFQ+IAKmhQKhUKhUCh8QI+g6XEdjukNZcdQlB36YZTfWdkx\nFGWHfhjld1Z2DGXS26F5T5NCoVAoFApFKKLKcwqFQqFQKBQ+oIImhUKhUCgUCh/QNGgSQqwXQhQL\nIUqEEPdqeexhdhwXQhwQQhQIIXZreNynhBB2IUThoMcShRB/F0Iccf+boJMdPxRCVLnPSYEQYkOQ\nbcgUQuwQQnwmhDgohLjD/bjm50MvjOIPblsmrU8YwR/cx1Q+YRCf0Msf3MdWPnHymIbzCc2CJiGE\nGXgYuAxYAFwjhFig1fG9cKGUMldjrYc/AOuHPXYv8I6Ucjbwjvv/etgB8Ev3OcmVUr4eZBscwHel\nlAuAs4Db3a8HPc6H5hjQH2Dy+oQ3G0BbfwDlE0bzCT38AZRPDMZwPqFlpmkVUCKlPCql7AX+BGzU\n8Pi6I6V8H2gc9vBG4Bn3588An9fJDk2RUtZIKT91f94GHALS0eF86MSk9wcwhk8YwR/cdiifUD6h\nfGKoHYbzCS2DpnSgYtD/K92P6YEE3hZC7BFC3KKTDR6mSClr3J/XAlN0tGWTEGK/OzWrWbpTCJED\nLAM+wljnI5gYyR9A+YQ3dPEHUD7hRl0jTmKU18Ck94nJ2gh+npRyOa408O1CiPP1NghAuvQf9NKA\neASYCeQCNcDPtTioECIa+Atwp5SydfDXdD4fkw3lE0PRxR9A+YRBMKQ/gPIJvX1Cy6CpCsgc9P8M\n92OaI6Wscv9rB/6GKy2sF3VCiDQA9792PYyQUtZJKfullE7gCTQ4J0KIMFyOkC+l/Kv7YUOcDw0w\njD+A8onh6OEPoHwCg/iEwfwBDPAaUD7hQsug6RNgthBiuhDCClwNbNPw+AAIIWxCiBjP58A6oHD0\nnwoq24Dr3Z9fD2zVwwjPC9DNFwjyORFCCOBJ4JCU8heDvmSI86EBhvAHUD7hDa39wX1M5RMG8AkD\n+gMY4DWgfMKNlFKzD2ADcBgoBTZreexBNswA9rk/DmppB/ACrrRmH656/U1AEq7u/yPAdiBRJzue\nAw4A+3G9INOCbMN5uFKq+4EC98cGPc6HXh9G8Ae3HZPaJ4zgD247lE8YwCf09Af38ZVPnLTDcD6h\n1qgoFAqFQqFQ+MBkbQRXKBQKhUKhGBcqaFIoFAqFQqHwARU0KRQKhUKhUPiACpoUCoVCoVAofEAF\nTQqFQqFQKBQ+oIImhUKhUCgUCh9QQZNCoVAoFAqFD/w//5CTNZ4z1RgAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "titles = ['linear', 'quadratic', 'cubic']\n", "fig, axes = plt.subplots(1,3,figsize=(10, 4))\n", "\n", "for i, ax in enumerate(axes, 1):\n", " ti = np.linspace(0, 22, 100)\n", " g = interpolate.interp1d(t, rabbits, kind=i)\n", " ax.plot(ti, g(ti))\n", " ax.plot(t, rabbits, 'ro')\n", " ax.set_title(titles[i-1] + ' sline')\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Using splines explicitly" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The default smooths quite heavily. " ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sp = interpolate.UnivariateSpline(t, rabbits)\n", "plt.plot(t, rabbits, 'ro')\n", "plt.plot(ti, sp(ti))\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can control the amount of smoothing." ] }, { "cell_type": "code", "execution_count": 107, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAD8CAYAAABXe05zAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl821eZ6P/PkbzKlvd9dxLHTpq9ztKd7i3Qsl2gJe20\nwBDgVwbmXoYLM70zDDCZOwzDwG+AYchAW6CBspWtQAu0hXRPnD2pndiJ933f5EWWzv1DUuo4ji3b\nkr5fSc/79crLydey/LwU+fH5Puc55yitNUIIIcKHxegAhBBCLI0kbiGECDOSuIUQIsxI4hZCiDAj\niVsIIcKMJG4hhAgzkriFECLMSOIWQogwI4lbCCHCTEwwnjQrK0uXlZUF46mFECIiHT58uE9rne3P\nY4OSuMvKyqipqQnGUwshRERSSjX7+1gplQghRJiRxC2EEGFGErcQQoQZSdxCCBFmJHELIUSYkcQt\nosP+/VBWBhaL5+P+/UZHJMSyBaUdUAhT2b8f9uwBh8Pz7+Zmz78Bdu82Li4hlklG3CLyPfzwG0nb\nx+HwXBciDEniFpGvpWVp14UwOUncIvKVlCztuhAmJ4lbRL69e8Fmu/iazea5LkQYksQtIt/u3bBv\nH5SWglKej/v2ycSkCFvSVSKiw+7dkqhFxJARtxBChBlJ3EIIEWYkcYuIN+l0cbpj2OgwhAgYqXGL\niDXscPL4a808+lITfWNTfP+DO7iuwq8DRoQwNUncIiIdbh7g/u8cxDHt4vq12bzeMcK+A+clcYuI\nIKUSEZH2HThPYqyV333iOr73gR28/5oyXqjvo65rxOjQhFgxSdwi4vSPTfFsbQ/v2FrIuvwUAHbv\nLCEx1sp3Xmg0ODohVk4St4g4vzzWwYxb8z+qiy5cS7PF8e7qIn55rIOe0UkDoxNi5SRxi4jzk8Nt\nbCxMpSov5aLrH7imHKfbzfde9vswbSFMSRK3iCinO4ap7Rzh3bNG2z5lWUncui6Xx19rZmLaZUB0\nQgSGJG4RUX5S00ac1cLdmwvm/fwDV5cx5HByoL43xJEJETiSuEXEmJ5x88tj7dy6Ppc0W9y8j7my\nNJ0Yi+JE21CIoxMicPzq41ZKNQGjgAuY0VpXBzMoIZbjuboeBh3OiyYl50qItbI2186JNllJKcLX\nUhbg3Ki17gtaJEKs0IH6XuwJMVy3JmvBx20uTuW3J7vQWqOUClF0QgSOlEpExKhpGmBbSTox1oXf\n1puK0hiecNLc71jwcUKYlb+JWwO/V0odVkrtCWZAQizHsMPJ2e4xqkvTF33spqJUAI5LnVuEKX8T\n97Va623AncBDSqnr5z5AKbVHKVWjlKrp7ZUZexFaR1oGAaguy1j0sWtz7cTHWKTOLcKWX4lba93u\n/dgD/BzYMc9j9mmtq7XW1dnZspGPCK1DTQPEWBRbitMWfWys1cIVBSnSWSLC1qKJWymVpJSy+/4O\n3AacCnZgprZ/P5SVgcXi+bh/v9ERRb2a5kGuKEghMc7q1+M3FaVxqn2EGZc7yJEJEXj+jLhzgReV\nUseBg8BvtNZPBzcsE9u/H/bsgeZm0Nrzcc8eSd4Gmp5xc7x1yK8yic/m4lQmnC4aeseCGJkQwbFo\n4tZan9dab/b+uUJrvTcUgZnWww+DY043gsPhuS4McapjmKkZt18Tkz6bijwlFalzi3Ak7YBL1dKy\ntOsi6A43eSYmryzzP3GXZyZhj4+ROrcIS5K4l6qkZGnXRdDVNA9Qmmkjx57g99dYLIoNhaky4hZh\nSRL3Uu3dCzbbxddsNs91EXJaa2qaBrlyCWUSn03FqdR2jjA1IzsFivAiZ04u1e7duDT8608OsfHs\nEd460eJJ2rt3Gx1ZVGrqd9A/Pk11qf8Tkz6bi9JwujR1naNs9qONUAizkMS9DF/JruZb69KwrL8V\n7t3KWzfNv4WoCL6apgEAti+hvu2zocCzgrK2c0QStwgrkriX6LcnO/n68w28a1sRLQPj/PUTx0iK\ni+HGqhyjQ4tKx1qHsCfEsDo7eclfW5ieSJzVQmP/eBAiEyJ4pMa9BHVdI/zNT46ztSSNf37nBr7z\n4Haq8u185PHDHGwcMDq8qFTbOcK6/BQslqXv8me1KEozbTT2SuIW4UUSt59cbs1HHz9CcnwM/3Xf\nlcTHWElJiOV7H9hJtj2eLz5dZ3SIUcft1tR1jbI+P2XxB19GeVYSjX2SuEV4kcTtpyMtgzT2jfPw\nW9aRm/JG21lGUhzvrS7mcPMgXcNyengotQw4cEy7WJdvX/ZzlGcn0dzvwOXWAYxMiOCSxO2nP7ze\nTaxVcdM8tew7N+YB8MzprlCHFdVqO0cAWLeSEXdmEtMuNx1DE4EKS4igk8TtB601vz/dxVWrs7An\nxF7y+TU5dtbkJPO7U50GRBe9ajtHsCjPNq3LVZ6VBCDlEhFWJHH7oaFnjKZ+B7euz73sY+7ckMfB\nxgH6x6ZCGFl0e71zlFXZySTE+rcj4HzKsyVxi/AjidsPv3+9G4Bb110+cd+xIQ+3fuOxIvh8HSUr\nkZ0cT3J8jCRuEVYkcfvh9693s7kolbzUy++FsT4/hZIMG787JXXuUBiecNI+NLGiiUkApRTlWUmc\nl8Qtwogk7kV0j0xyvHVowTIJeBLAnRvzeLmhj2GHM0TRRa8638Rk3spG3OBrCZR9uUX4kMS9iD/4\nyiTr8xZ97J0b8plxa/5YK+WSYAtER4lPeVYSbYMTstmUCBuSuBfxh9e7Kc20sTZ38SXVm4tSKUhN\nkLbAEKjrGiXdFktuSvyKn2tVdhJaQ0u/Y/EHC2ECkrgX4Jie4ZVz/dy6LhelFl9SrZTi6jVZHG4e\nRGtZ0BFMvolJf/5fFiMtgSLcSOJewKn2EaZdbq5anen312wtSaN/fJrWAVnQESwut+ZM92hAyiQA\nZZK4V0YOzw45SdwL8B1r5Tuf0B9bvNuDHm0dDEpMwpNgJ53ugCXulIRYspLjJHEvhxyebQhJ3As4\n1jpEYVoi2Xb/66iVuXYSY60cbZGzDIPljYnJlbUCziYtgcskh2cbQhL3Ak60DbOpKHVJXxNjtbCp\nKJWjrZK4g6W2c4QYi2JNztL34L4c2SVwmeTwbENI4r6MwfFpWgYcyzoZZWtJOq93DDPplPayYDjb\nPcqq7CTiY5a/1H2u8qxkekenGJ2UHvwlkcOzDSGJ+zKOX6hvL23EDZ46t9OlOd0xEuiwBFDfM0bF\nCjaWmo+vs6SpT1oCl0QOzzaEJO7LONE2jFKwsXDpiXtriWeUfkzKJQE3Me2iZcBBRQDLJODp5QY4\nLysol2b3bti3D0pLQSnPx3375PDsIPM7cSulrEqpo0qpp4IZkFkcbx1idXbyvNu4LiY3JYHCtESO\ntkhnSaCd6x1D65Vt5TqfkgzPqLF1QEbcS7Z7NzQ1gdvNVMM5vr/qGu746gG++adzuOWAiqBYymHB\nnwBqgcD0YJmY1prjbcPcsDZ72c+xpSRNOkuCoKHHMyIO9Ig7IdZKVnI8bYPSf78cWmv2v9bC159r\noGtkksK0RL74dB01TQN8+T2bSbPFGR1iRPFrxK2UKgLeAnw7uOGYQ8fwJH1jU2wuXnqZxGdrcRrt\nQxP0jMpxZoFU3zNKjEVRmpkU8OcuSk+UxL1MT5/q4v/84hTFGYns/8udvPjpG/nc3VdwoL6Xt/zH\ni5ztHjU6xIjib6nkq8D/BtxBjMU0Tnhr05uXsPBmrgt1bhl1B1R99xhlWUnExQR+esaTuKVUslQz\nLjf/9vszVOQk88Seq7hmTRZKKR64uoyffORqJp0u/vbJk7INRAAt+u5XSr0V6NFaH17kcXuUUjVK\nqZre3t6ABWiE423DxFoVVStY4HFFQSqxViX93AFW3zMW8DKJT3GGjfahCanLLtGTR9o51zvOJ2+r\nxGq5eO+YLcVpfPK2Sg43D/LMadk1M1D8GbZcA9ytlGoCngBuUko9PvdBWut9WutqrXV1dvbya8Nm\ncLx1iHX5KSvqE06ItbI+P0UmKANo0umiuX884K2APkXpiThdmp5ROX7OX5NOF1/941k2F6dx+xXz\n71n/nuoiVmcn8a9P1+F0RcVNe9Atmri11n+rtS7SWpcB9wDPaa3vC3pkBnG7NSfbh1dUJvG5ojCV\n1ztG5BYxQBr7xnHrwE9M+hSlezpLpFziv/2vtdAxPMmnb6+87E6NMVYLn7lzHef7xvnRodYQRxiZ\npI97jqb+ccamZti4jIU3c63LszMyOUPXiExQBkK9r6PEj73Rl6MoPRGAVkncfhmbmuEbzzdwXUUW\nV6/JWvCxt6zLYXtZOl/9Yz3jUzMhijByLSlxa63/pLV+a7CCMQPf7HcgjsSq8u5eV9cpM+qBUN89\nitWiLqxyDLTCNE/ibpMtef3yu5OdDIxP84mbKxZ9rFKKv33zOvrGpnjs5abgBxfhZMQ9x9nuMZQi\nIBsYVeZ5arG1XbL0PRDqu8cozbQFdI+S2RJirWTbpZfbX8+c7qIgNYErS9P9evy2knSuXp3Jjw61\nSvlwhSRxz3Gme5TidBuJcStPDikJsRSmJcqIO0Dqe0aDVt/2KUpPpG1ISiWLGZua4UB9H7dvyFvS\nKUTv2lZEy4CDw80yab8SkrjnqO8e9et8SX9V5dk50yWJe6WmZ9w09TuoyAlOR4lPUbpNRtx+eL6u\nh+kZN3duyF/S192xIY/EWCs/O9IepMiigyTuWZwuN419gW03q8q3c653TE4QX6HGvnFcbh20iUmf\novREOoYmcEkv94KePt1FVnKc32USn6T4GO7YkMdTJzpk2+MVkMQ9S1PfOE6XDvCIO4UZt+Zcj2zS\nvxL1PZ67lkAenjCfN3q5pRPociadLp6v6+HW9XmXLLjxxzu3FTI6OcNzdT1BiC46SOKe5Wy3bwOj\nAI64vROUZ7plgnIl6rvHsChYnR3cxF18oZdbyiWX80J9H45pF3duyFvW11+9OovclHiePNIW4Mii\nhyTuWc52j2IJUEeJT3lWEnFWi0xQrlBDzxjFGTYSYoPTUeLj6+WWRTiX9/SpLlISYti1KnNZX2+1\nKN6+tZA/nemlb0xWqS6HJO5Z6ntGKQlwcoixWqjITaZWJihXxNNREtyJSYACby93q/Ryz8vpcvPH\n2m5uWZe7oo2+3rm1iBm35lfHOgIYXfSQxD3L2e7AH4kFnjp3XaeUSpZrxjtpHOz6Nnh6uXPs8TLi\nvoyDjQMMTzi5fZllEp/KPDvr8lN4+lRXgCKLLpK4vaZn3DT1jQd0YtKnKs9Oz+gUA+PTAX/uaNA8\n4MDp0kHv4faRfbkv7+VzfVgtimsXWeLuj5urcjjcMsiwQw5oXipJ3F6NfePMuHXAj8QCLmwPWycr\nKJel3jtpHIoRN0gv90JePT/ApqJUkuKXcnjW/G6sysbl1hyoD+9toI0gidvLt0dJMOqoVXmyZ8lK\nnOv1JO7VIRxxSy/3pRzTMxxvHVr2pORcW4rTSbPF8vwZaQtcKkncXvXejhLfad+BlG2PJys5Tkbc\ny1TfPUphWiLJARjl+aMo3caMW9Mtuzpe5HDzIDNuHbDEbbUoblibzZ/P9MrhFUskidvrbPcYZZlJ\nQWs3q8yzUyedJcvS0DsWstE2zG4JlHLJbK+e78dqUVQvcbXkQm6szKF/fJoT7cMBe85oIInb62zP\naFCXU1fmplDfPSYjiyVyuzUNQTyubD7Syz2/QNa3fW5Ym41Snr1PhP8kcQNTMy6a+x1BmZj0qchN\nZsLpon1IRnFL0T40waTTHbKJSYDCdOnlnivQ9W2f9KQ4thanSZ17iSRxA+d7fRsYBTFxexNPg/cU\nF+Ef3+sVyhF3fIxnX+7OYUncPoGub892Y2UOJ9qG6ZWzPv0miRtP4gZYE8R9MHwjRt9mScI/odpc\naq6CtES5O5rFV99e6m6A/rixKgeAP8mo22+SuIHGPs+orizLFrTvkWaLI9sef6EnWfinoWeMrOR4\n0mxxIf2+hWkJkrhnee38ABsLU4PS2XNFQQo59nj+dEb6uf0liRvPiDs/NQFbXHDbzSpyki8ceCv8\nUx/iiUmfglRPL7ccseWtb7cFvr7to5Ti2oosXjnfL6+3nyRxA+f7xoN2AO1sFTnJnOsZkzenn7T2\ndJSEukwCnlLJpNPNoCzH5kjzEE6XZteqjKB9j12rMhkYn76wtbJYWNQnbq0153vHgrLwZq41uXZG\np2boHpFJGH/0jE4xOjkT9FNv5uPrLOmQcgk1zQMoRVDq2z5XeUfzr57vD9r3iCRRn7gHxqcZmZyh\nPCv4ycE3+SkTlP4J9R4lsxV6t3eVOjccbRmiMteOPSE2aN+jOMNGYVoir5yTxO2PqE/cjX2ejpJV\noSiVeEeOMkHpnwaDOkrgjX25o33E7XZrjrUOsbUkLejfa9eqTF5r7JdFan6I+sR93pe4Q1AqyUyK\nI90WKxOUfqrvGSM1MZbs5PiQf+90WywJsRbao3zZe2P/OMMTTrYWB69M4nPV6kwGHU7Oyh3pohZN\n3EqpBKXUQaXUcaXUaaXU50IRWKg09o0Ta1UXbo2DSSlFRY79wkhSLKzeOzGp1NIPpF0ppRQFaYl0\nRPkinKMtQwAhGnF7Jj+lXLI4f0bcU8BNWuvNwBbgDqXUruCGFTrne8coybARYw3Nzcea3GTOdktn\nyWK01pztHg3qNgSLKUxLpH0ouncIPNoyiD0+JuiHNINnV8bijESZoPTDotlKe/ju7WO9fyIm6zT2\njbMqBG9Kn4qcZIYnnPSNyWk4C+kZnWLI4aQqz7jE7evljmZHW4bYUpKGxRKau55d5Zm81jggde5F\n+DXMVEpZlVLHgB7gD1rr14IbVmi43JqmfkdIJiZ9fAc1SGfJwnxb4FYamLgL0xPpHZ1iasZlWAxG\nckzPUNc1wtbi4JdJfK5ancmQwylbIC/Cr8SttXZprbcARcAOpdSGuY9RSu1RStUopWp6e8Nj6WrH\n0ATTM+6QLL7x8XWWyGZTCzvjPXSi0sBSia+zpGs4OsslJ9qGcWvYWhL8iUmfXdLP7ZclFXa11kPA\n88Ad83xun9a6WmtdnZ2dHaj4gsrXURLKxJ1jj8eeECMtgYs40zVGjj2e9KTQ7lEyW0FaAhC9vdy+\nicnNIRxxF6QlUppp4xVJ3Avyp6skWymV5v17InArUBfswEKh0XuWYShr3J7OkmQplSziTPeIoWUS\neGMRTkeUTlAebRmkLNNGRoh/ee4oy6CmaUAm8Bfgz4g7H3heKXUCOISnxv1UcMMKjfN949jjY8hK\nDu0bsyLHLiPuBbjcmvruMUMnJgHyUr0j7ijs5dZac7R1KKRlEp/qsnQGHU7OebdbFpfyp6vkhNZ6\nq9Z6k9Z6g9b686EILBQa+8Ypz04KeZ9wRW4y/ePTDIxLZ8l8mvrHmZpxG9oKCG8cqBCNnSXtQxP0\njk6FpH97ruoyTz/34eaBkH/vcBHVKyfP946HtKPEZ42chrOgM96Ogqq8FIMjIWoX4VxYeBOCFZNz\nrcpKIiMpjkNNgyH/3uEiahP3pNNFx/BESDaXmst3RJrUued3pmsUi8KQXQHnitYDFY61DhEXY6Eq\nP/R3PUoptpWkc7hZEvflRG3ibuofR2soD8EeJXMVpCaQFGeVOvdlnOkapSwziYRYq9GhUJgWnQcq\nnGgb4oqCFGJDtKJ4ruqydBr7xukbky2Q5xO1ibuxN3S7As6llGJNTrKUSi7jjMFL3WeLxgMVZlxu\nTrWPsLko9PVtn2rv3t8y6p5f1Cbupn4HAKWZwTtnciFrcuxSKpnHxLSLpv5xw1sBfaJxe9eG3jEm\nnC42FaUaFsPGolTiYizUNMkE5XyiN3H3jZOVHBfUzeEXUpGbTPfIFMMT0TOS80d9zyhaY3groI+v\nl7stiloCT7QOA7DJwBF3fIyVTYWp1MiIe17Rm7j7xynLDH2ZxKdCOkvm5esoWWuSxB2NI+7jbUPY\n42MMKSPOdmVZOqfah5l0RudeMQuJ6sRdamji9iQm2Zv7Yme6RomPsRj6S3W2dFssibHWqOosOdE2\nzMai1JDtCHg51aUZOF2aE23DhsZhRlGZuB3TngN7y7OMqW+DZ+e5hFiLdJbMcebYWSp6mrDGWKGs\nDPbvNzQez4EKCVEz4p6acVHXNWJomcTHdzjxIalzXyIqE3fzhYlJ40Z1VotidXayHGM2i358P7U9\n41S1nwGtobkZ9uwxPHkXpCVGzYi7tnMUp0uz2cCJSZ+MpDhWZSdJZ8k8ojRxh35XwPlUSEvgRTr/\n+Uv02dLY2HXujYsOBzz8sHFBAUXpiVGzX8mJNs+KyU0h3BFwIdWlnoU40dZHv5ioTNyNfca2AvpU\n5NppH5pgbGrG0DjM4uSM5/9jQ1fDxZ9oaTEgmjcUpiXSPz7NxHTkT5Idbx0mKzmOAu8GW0bbVpLO\n8ITzwhbMwiMqE3dzv7GtgD6+PUvOyagbgFOV27C4Xazvabz4EyUlxgTkVZju7SyJgj1LTrQNsako\nzZADmi+xfz/b/vK9ABx5z18aXjIzk6hM3I19xrYC+vhaAqXO7XFy5y1UDLSTODNrmbPNBnv3GhcU\nUJjmuROI9HLJ2NQMDb1jhi68uWD/ftizhzUnX8M+OcaR+CxTzHeYRVQm7uZ+h6ETkz4lGTbirBZZ\nQYln/+dTJLFhTR6UloJSno/79sHu3YbG5htxR/oE5an2YbTG0KXuFzz8MDgcWNBs6TzL0YIqU8x3\nmEXUJe6JaRddI5OGtgL6xFgtrMpOokFaAukamaRvbJqN122BpiZwuz0fDU7aALn2eKwWFfEj7gsT\nk2YYcc+a19jWXseZ7FJG4xINn+8wi6hL3M0DnkkOM4y4wVPnllIJnPQusthohqQxR4zVQl5K5G/v\nerx1mMK0RDKT440O5aJ5jW0ddWhl4Xj+WsPnO8wi6hJ3kwEHBC+kIsdO66ADx3R0d5acah/GomB9\nvvkSN3g6SyI9cR9rHWKLASfezGvvXs/8BrCl4wwAR8o2GT7fYRbRl7gN3hVwrqp8O1oT9SsoT7YP\nU5FjJzHO+D2451MY4b3cfWNTtA9NsMUM9W3wlMj27YPSUlKnHVQMd3LklneaonRmBtGXuA3eFXAu\n3y54dV0jBkdiHK01J9tH2FBoztE2eEbcXSOTzLjcRocSFL769maTLLwBPEnaO9+x7eYdHHXZcLtl\nIQ5EY+I2eHOpuYrTbdjirNR2Rm9nSffIFH1jU2wsNP6MycspSEvE5dZ0j0bmiSzHWj2lqg0m/T/Y\nVpomC3Fmib7E3ecwRQ+3j8WiqMyzR/WI+2S7eScmfS60BEZoueR46xBrc+3Y4mKMDmVe20o8G04d\naZF9SyDKErevFbDMJPVtn6q8FOq6RqN2P4aTJp+YhDcOVGgfchgcSeBprTneNsQWM5VJ5lidnUxK\nQgxHJXEDUZa4fa2AZSbpKPFZl29nyOGkeyQyb8MXc6p9mDU5yaadmIQ3EnfH0KTBkQRey4CDIYfT\nXPXtOSwWxZaSdI40DxkdiilEVeJu8m4uZaZSCXhG3AC1UVgu0dqzUb6ZJyYBEuOsZCbFReQRZsda\nTbTwZgHbStI42zPKyKQc97do4lZKFSulnldKva6UOq2U+kQoAguGpn7fiNtcpRLfwbi+Y7uiScuA\ng76xqQs1TDMrTI/MXu7jrcMkxFpYm2uO4+IuZ1tJOlp76vHRzp8R9wzwSa31emAX8JBSan1wwwoO\ns7UC+qQmxlKYlkhdZ/SNuGuaPDXL6jLzJ+6C1ETaByOvxn28bYgNBanEWs19A76lJA2lkHIJfiRu\nrXWn1vqI9++jQC1QGOzAgsEsuwLOpyrPTl0UjrhrmgexJ8SwNsfcoz14Y8QdSZPITpebU+3Dpq5v\n+6QkxFKRkyydJSyxxq2UKgO2Aq8FI5hga+ofN93EpE9lnp2GnjGmZyJzgcflHG4eYFtJuuEH0/qj\nMC2RSaebgfFpo0MJmDNdo0zNuMMicYPnHMqjLYNRvxDH78StlEoGfgb8tdb6knt6pdQepVSNUqqm\nt7c3kDEGhO+AYLO1AvpU5acw49ac642epe/DDidnu8eoLjV/mQRmHagQQZ0lx70rJk2z1H0RW0vS\nGZmc4Xxf9PyczMevxK2UisWTtPdrrZ+c7zFa631a62qtdXV2dnYgYwyICx0lJh1xr4vCpe++W94r\nw6C+DZHZy32sZYh0WyzFGYlGh+KXCwtxorzO7U9XiQK+A9Rqrf89+CEFx4WOEpPWuMuzkoizWqiL\noqXvNc0DWC3K1As/ZivyjrgjqSXwcPMg20rSzXFUmR9WZSWRmhgb9Se/+zPivga4H7hJKXXM++fN\nQY4r4Br7zLn4xifGaqEiN5naKJqgrGka5IqCFNMus54rNTEWW5w1YloCB8anOd83HjZ3POBZiLO1\nJC3qJygX/YnRWr8IhMev4wU09Y2TbY8nOd68SaIqL4UXG8w3PxAMTpeb421D3LsjfDbGV0pRlJ5I\n60BkJG7fqLW6NMPgSJZmW0k6fzrTy/CEk9REc7X2hoq5GzcDqKl/nHKTlkl81uXb6R6Zon8s8pe+\nn+4YYdLpDrukUZKRROtAZNS4a5oHiLUq06+YnMtX5z4WxQtxoiZxN/Y5TLdicq6N3mXfJ7zHeEWy\nmqYBIDwW3sxWkmGjZcAREb3ch5sG2VCYSkKsefeImc/m4lTvQpzoLZdEReIenXTSNzZl2vq2z8ai\nVKwWFRU7oB1uHqQoPZHclASjQ1mS0kwbE04XvWF+VzQ14+JE+3DYtGLOZk+IpTLXHtV17qhI3M3e\n48rMXiqxxcVQmWvnaITfAmqtqWkeDMukUZLhuWsL93LJqfZhpmfcXBlmpSqfrSXpHGsZitqFOFGR\nuM3eUTLblpI0jrVG9huyoWeM3tEpdq7KNDqUJSvxLuDyDQbClW+PmCvD8JcnQHVpOqNTM5ztiZ4u\nrNmiInH7TnY3aw/3Bfv3s/U/9jI6OcP5zbtg/36jIwqKF+r7ALh2TZbBkSxdUXoiSnl2NQxnNc2D\nlGXayLbHGx3Ksmwv89wpHGqKznJJVCTuxv5x8lISTL1RP/v3w549bD35EgBHscOePRGZvF9s6KMs\n00Zxhrmg8fMnAAAZ+UlEQVQni+cTH2MlPyWBljAecWutOdI8GLZlEoDijESy7fEc9k5yR5uoSNxN\nfeOm7yjh4YfB4WBVfzv2yTGOFVSCw+G5HkGmZ9y8er6f6yrMty2Cv0oybTSH8Yi7sW+c/vHpsOvo\nmU0pxfaydBlxR7KmfgflZq9vt7QAYEGzpfMsRwsqL7oeKY62DOKYdnFtRfiVSXx8LYHhqubCwpvw\nTdzgWTjUPjRB53BkLIhaiohP3MMTTgbGp81f3y55YwXh1o4znMkuwxEbf9H1SPBCfR9Wi+Kq1eE3\nMelTmplE7+gUjukZo0NZlsNNg6QmxrI6O9noUFbEd8dQE4Wj7ohP3E2P/wyAsg/dD2Vl5q0Z790L\nNk85Z0vHGVwWKydLN3iuR5AXGvrYXJRKislOIVqK4gstgeE30tNa82JDHzvLM8JiD/SFrM9PwRZn\nvbCYK5pEduLev5+m/3wEgPLBdmhuNu+E3+7dsG8flJaypasegGMPfcZzPUIMO5ycbBvi2jCubwOU\nZvhaAscNjmTpGvvGaR+a4Pq14f1/AJ6N2baWpF0o/USTyE7cDz/M+aRslHZTMtjpuWbmCb/du6Gp\niYzxIUozbRzNLDc6ooB6+Vwfbg3XhXF9G95YhBOOdW5fK+b1Yf7L0+fK0gxqO0cYjbKT3yM7cbe0\ncC6ziOKhbhJczouum93W4rSI20TnhYY+kuNjwmb/7ctJs8ViT4gJ08TdS2mm7cJConC3vSwdt4aj\nLZH1s7KYyE7cJSWcyyhi9UDbJdfNbktxGl0jk3REyN7PAC/W97FrVabpTxNfjFKK0szw6yyZnnHz\nyrn+sL/jmW1rSToWRdSVS8L7J2gR7n/aS2NGIasG2t+4aLOFxYTfjnJP18VLDX0GRxIY53rHaBlw\ncP3ayEgaJRm2sFuEc6RlkPFpV1j30M+VHB/DuvyUqJugjOjE3fGWdzAZG89qHKAUlJZ6JgDDYMJv\nXb6dbHs8B+ojI3E/faoLgFvX5xocSWCUZCTRNjiBK4z2lHmhvherRXF1GLdizmd7WQZHW4ZwutxG\nhxIyEZ24z/V6Zv1X//d/gNsNTU1hkbTBczt+fUU2L9b3hlVyuJynT3WxpTiN/NTwOJR2MSUZNqZd\nbrpGwufE9xfq+9hWkoY9jFsx57O9LIMJp4uT7ZG/j71PZCfunjEAVueE50KD69dmMehwhv0bsm3Q\nwcn2Ye7ckGd0KAFT6p3cC5dyycD4NCfbhrju198Di8XcaxqWaNcqz54rr5zrNziS0InsxN07Rmpi\nLJlJcUaHsizXVWSjFBw4G97nUPrKJLdfETmJ+42WwPDo5X7xsV+gUVx39HnQ2txrGpYoMzmeylw7\nr56XxB0RzvWOsTo7CaXCc4VYRlIcGwtTwz5xP3O6i6o8e1jsh+6v/NQEYiwqbDpLXvjzCVImx9jU\n1fDGRTOvaViiq1ZncqhpgKkZl9GhhESEJ+5xVoX5fgzXV2RztHWI4YnwXGDQMzpJTfMgd27INzqU\ngIqxWihMTwyLAxWcLjfP5q3nhvOHseo5E3hhsKbBH1etzmTS6eZ4a3iXFf0VsYl7ZNJJ7+hU2G+k\nc0NlNi635uUwbQv8/elutIY7Iqi+7bM6O5kG7zyKmb18rp8BWypvrXvh0k+GwZoGf+wqz0Sp6Klz\nR2ziPu/rKMkO79vzLcVp2ONjOFAfnuWSZ053sSoribW54f0LdD4Vucmc7x03fRvar493YLdobuiq\nvfgTYbKmwR+ptliuKEjh5XPhOcBZqohN3OHeUeITa7Vw9ZpMDpztQ+vwagscHJ/mlXP93L4hL2zn\nGRZSmWtn2uU29WZTUzMunjndxW1bikn45jc8axnCbE2Dv65alcnRliEmnZFf5140cSulHlFK9Sil\nToUioEA51ztGjEVdmP0PZ9evzaZ9aCIsbstn+8Wxdmbcmrs2FRgdSlCszbUDcKbLvP8vB872MTo5\nw12b8y9sYhZuaxr8dfXqLKZdbo5EwfJ3f0bcjwF3BDmOgDvXO0Zppi3s98UAuLkqF6Xg1yc6jQ7F\nb1prnjjYyuaiVNYXpBgdTlCsyUnGouBst3lPGv/18Q7SbbFcE4YHMy/V9vIMrBbFy1FQ5140q2mt\nDwBhtxHAud7xsJ+Y9MlLTeDaNVk8eaQNd5isojzWOsSZ7lHeuz0yJr/mkxBrpSwzybSJe2LaxR9r\nu7ljQ35EDGAWkxwfw8bCVF6Jgn7uiPzfnPHWHcO9FXC2d24rpG1wgkNhspnOjw61khhr9dyiR7C1\nuXbOmDRxP1fXg2PaFfH/B7NdvTqT461DjE+F57Fy/gpY4lZK7VFK1Silanp7je2AaB2cwOnSYd9R\nMtvtV+SRFGflySPtiz/YYGNTM/zqeAdv3ZQfcftizLU2z05T37gpJ8R+dbydbHs8O8sja1OphVyz\nJosZt474tsCAJW6t9T6tdbXWujo729htIyOlo2Q2W1wMd27M5zcnO02ZJGb7zYkOHNMu7tlRbHQo\nQVeZa8etPXMqZtI1PMmztT28bXMB1jA/W3IptpdlkBwfw7N1PUaHElQRWSrx/RCtzoqcxA2ecsnY\n1Ay/f73b6FAW9MShVtbkJLOtJN3oUIKuMs/zHjNbnfvxV5txac1fXFVmdCghFRdj4fq1WTxX1x12\n7bNL4U874A+BV4BKpVSbUuqDwQ9rZc50jZJjjyfVFlm36bvKMylMS+TJI22LP9ggr3eMcLRliHu2\nF0dk7/ZcpZlJxFktpmoJnHS6+MHBFm5ZlxsxR5QtxU1VuXSPTHG6Y8ToUILGn66Se7XW+VrrWK11\nkdb6O6EIbCVqu0ZZlx95LWgWi+IdWws5cLaXHpPuA/2N5xtIjo/h3VdGfpkEPAukVmWbq7PkV8c7\nGBif5v1XlxkdiiHeVOnZVfO5CC6XRFypZHrGTUNPZCZugHddWYQGvvtKk7GB7N/v2dN51t7ODT2j\n/PZUJ39xVWnE3e0sZG2unTNd5kjcWmsefamJylw7V0XYSTf+ykqOZ0txWkTXuSMucZ/vG8Pp0qzL\ntxsdSlCUZyXxlo35PPZSEwPj08YEsX+/Zy/n5uaL9nb+xiN/JCHGygevLTcmLoNU5tlpH5pgdNL4\nHRxfaxygtnOE919TFhWlqsu5uSqH461D9I5OGR1KUERc4q7t9NS1InXEDfCJmytwOF389wvnjQng\n4Yc9eznP0hSXyi8HYrhvVwmZyfHGxGUQ39L3ehNsSfDoS42k2WJ525ZCo0Mx1E1VnrNNnz8TmaPu\nCEzco8RZLZRH0Kb9c1Xk2rlrUwHffbmJ/jEDRhTz7OH8n1e9mxj3DB+6flXo4zFYpTdxnzW4XHKq\nfZhnTndz385SEuOshsZitHX5dvJTE3iuVhJ3WKjtHKEiNznil/h+/OYKJp0u9h0wYNQ9Zw/n1tRc\nnrziJu49/zI59oTQx2OwovREEmOthq+g/OLTdaTbYtlzQ/T98pxLKcVNVTm8UN8bmlNx5pnzCaaI\ny261nZE7MTnbmpxk7t5cwPdeaQ59HW/vXs9ezoAGPnvLh4l1z/CRu7eGNg6TsFgUa3OTDZ2gPHC2\nlxfq+/irmypIifDVqv66ZV0u49MuXqwP8h7d3jmfF0njK1ffG5LzPCMqcfeOTtE3NkVVXmROTM71\n8ZsrmHa5+cdfnw7tYoPduz17OZeW8puq63huzQ4+WazJf/B9oYvBLLwjrc2/2s+xug6cj4f+8F23\nW/N/f1dHSYaN+3aVhvz7m9W1FVlkJsXx08PBXfcw+fef5fO73sd99+zlN1XXMh6bEPTzPCMqcdd1\neSYm10fBiBtgVXYy//OWCn5zojPob85L7N7NcG09n7vvH9hQmMKDf/XO0H5/M5jVXbOr5SSO2HhO\n/sOXQn5y+i+OtVPbOcLf3F5JXExE/UivSKzVwtu3FvLH2u6gdWCd6Rrl7hv/F49sfzsP1vyKp777\n1yQ5vWssgnieZ0T9L9d1em5Vq6IkcQN89E1r2FmewWd/dZrzId4v44tP19E/NsX/fccmYiJ8TmFe\ns7prdracBOCV3LUhPTl9bGqGf3vmDJuKUnnrxujZBdBf764uwunS/OJo4DdnO9s9ynv3vcJgchqP\n/fgf+Mdn95EwM+sXRBDP8zTPT1sAivu1nSPkpsSTkRQX8PDMympRfOW9W4i1WvjEE8eYngnN+Ycv\nN/Txg9daePDqcjYWpYbke5rOrBFV5sQIlb1NvFqyMaQnp+/9TS1dI5N89q4rsETRZlL+qspLYWNh\nKj8J8B1pc/849337NeKsFn66WfGm7rqLHxDk8zzNkbgvs6Bjqcm7tmuUqrzoGW37FKQl8sV3beRk\n+zCf+unxoB9ee653jI/uP8KanGQ+edvaoH4vU5szotrVcpKawvU4S8tC8u3/fLaXHx5s4UPXreLK\n0sjf0Gu53l1dRG3nCKfahwPyfJ3DE+z+9ms4XW4e/8udlH7g3gtzPqE6z9Mcifvhh3E7JjiVs4qm\nNO/t3hKL+5G+1H0xd2zI51O3V/LLYx189PHDQdv6dWB8mg88dogYi+LRB7eTFB8TlO8TFmZ11wBc\n1XKCibgETvztP6/sef24+xyecPLpn56gIieZ/3lrFP/y9MPdmwuIi7Hwk5rWFT/XyKSTBx45yJDD\nyfc+sPPC4qtQn+dpjsTd0oJbKd5135d4fOubL7rur0hf6u6Ph25cwxfevoFn63p44JGDAV+CPTXj\n4iPfP0zn8CT7/qKa4gg4iHlFZnXXoBQ7tGdE92pF9fKf08+7z8/9+jS9Y1N8+T2bSYiN7sU2i0mz\nxXHb+lx+ebxjRT3dMy43H/vBUc73jvOt+680tERojsRdUkKMdlPV28Tp3FUXXfdXNCx198f9u0r5\n6nu3UNM8yB1ffYFna7sDMn/QMzrJ/d8+yMGmAb787s1ya+4za6SVcfY0VXl2Xl3JmYfzbCcw9+7z\nxzWtPHmknYfetJpNRWnL/15R5D3VxQw5nPzim08u+2fh80+9zoGzvfzT2zcYfviyORK395Zzfc95\nXs9ZhYYlF/d9S91XRfBSd3+9bUshP/7wLpLirXzwuzV85OdnaBt0LHv+4EjLIHd97UVOtA/x/9+z\nhbs2FwQx+vC2a1UmNU2Dy58kvtxdpvf6sdYh/s/PT3HNmkw+fnPFMqOMPtdVZLHNNsOXzk4z2tmz\n5J+FR19q5HuvNLPn+lXcs8P4A7DNkbi9t5zrZ4YZTrTTsW7Lkov7h5sH2VCYEp1tafO4sjSDp/7q\nOj51/Jc8X7qFGz78bT529//maP5av+cPeken+NIzdbz3W68QF2PhyY9eE/WbFy1m16pMJpwuTrQN\nLe8JLneXWVJCz+gkH/n+YXJS4vn6vdvkvb4ESin+8edfpt+WwteuvueNT/jxs/DLY+18/qnXuW19\nLp++oyrIkfrHPDNLu3ez/to3wzdf5vWfPk3h+ly/v3TS+4PygSjbTnQxcTEWHnrm27zjpZ/z2JV3\n8cPNt/PUuuup7G3ihsYj3NDQx6aiVJLjY1BKobWmd2yKs11j/PaUZ1GP0+XmzRvz2fv2DaTZoqfN\ncrl2lmcA8Or5fqrLMpb+BHv3ekaBs8slNhtTX9jLQ/uPMDQxzZMfvYb0KGp5DZRNx1/k3flbebT6\nbu45/gyrBjs8n1hgLu0Pr3fzv358nF3lmfzHvVtNc36neRI3nh29lILTHcPcuoTEfbRlCKdLX/ih\nEbOUlFDQ3Mzf/elRPv7yE/xsw808U3EVj155N/u+/RoAcVYL6UmxTM24GXJ4JjTjYiy8a1sRH7qu\nnFXZkXV2ZzClJ8VRlWfn5XP9fOymZZQyfHeZDz/sSSglJeh/2sunY9ZzqKmDr927lfUF0T2Ps2wl\nJXzqz9/jd5XX8IWbP8SjP/3chevzebmhj4d+cIQNBSn89wPVppoENlXitsXFUJ6VxOtLPCvuYOMA\nSnnKA2KOWSO45OkJHjjyFA/UPcf4N/fxSvUtnOsdY8AxzdC488JmSZW5dtYXpMgIe5luqsrhWwfO\n0zk8QX5q4tKfYPfui8qE//ZMHb94/hyfur1S5hdWYu9esvfs4eMvPcHemz7If+14F3tOPY1lzlya\n2635zouN/OszdazKSuax9+8g2WRtr+aKBs8+I8dal1YfPNQ0QGWundRE2RXtEvOM4Ni7l6Tdu7kF\nuAX/72yEf+7dUcI3/3yOH7zWwidvq1zRc/3gtRa+8fw57t1RzP/3ptUBijBKeX8WHvj7f+Bg/av8\ny43v56W77uPf7rrjwk9B5/AEf/OT47zU0M9t63P54rs2mbIsZb7EXZDCUyc6GXY4/Tq30Olyc6Rl\nkHdfWRSC6MLUnBGcCK7iDBs3Vebww4Ot/NVNFcve+On5Mz38/S9P8abKbL7wtg1RfRRZwOzeTdzu\n3ezTmh8cbOELT73O7V89QHG6jY6hCfrHp0mMtfIv79zIe7cXm/Y1N13ivqLA09T+eueIX4ednu4Y\nwTHtYrvUt4WJ3HdVKc8+eoinT3dx9zLKG6fah3lo/xGq8ux8/X3SQRJoSil27yxlZ3km//K7Wmbc\nmo1FqRSmJfKWjfmUmbyt2HSJ27clq7+J+1DjAAA7ljODL0SQ3FCRTWmmje+/0rTkxN026OD9jx0i\n3RbHow9uN119NZKsyUnm2w9sNzqMJTPdr/FsezzZ9nhOd/i3IczBpgHKMm3kpETfkVnCvCwWxX07\nSznUNHhhVa8/hh1O3v/oISadLh57/3Z5X4t5mS5xA1xRkOJXZ4nbrTnUNMB2GW0LE3p3dRHxMRa+\n/2qzX48fnnBy/yOv0dzv4Fv3X0lFbvTuuyMW5lfiVkrdoZQ6o5RqUEp9JthBrc9PoaFnbNENYRp6\nxxhyOKW+LUwpzRbH27cU8pOaVl5qWPjcw5FJJ3/xyEFqO0f4r/u3cfVqY/fCEOa2aOJWSlmBbwB3\nAuuBe5VS64MZ1PqCFGbcmvruhU90Oeitb8vCG2FWf/fmdazKSubD3z982f2gB8enefCRg5xuH+Y/\nd1/JTVXSoikW5s+IewfQoLU+r7WeBp4A3hbMoC5MUC5SLnmxvo8cezwl0b69qDCtVFss3/3ADlIT\nY3nw0YM0949f+JzbrfnhwRZu/PKfONE2zNfft21JK4ZF9PJnuroQmL0DeRuwMzjheJRlJpEUZ+VY\n2xDv2V4872N6Rib5Y203D15dZtpeSyEA8lIT+O4HdvA//utl7vrai6zNtZObmkDrgIMTbcPsKM/g\n82+7IipPbxLLE7DJSaXUHqVUjVKqpre3d0XPZbEoblqXy6+PdzA+NTPvY350qJUZt2b3rtIVfS8h\nQmFNTjKPf3Ant6zLJdZqobZjhNHJGb763i38aM8uSdpiSfwZcbcDs4e9Rd5rF9Fa7wP2AVRXV+uV\nBvbg1WX8+ngHTx5p4/6ryi763IzLzQ8OtnBdRRblJm+UF8JnQ2Eq//7eLUaHISKAPyPuQ0CFUqpc\nKRUH3AP8KrhhwbaSNDYXpfLoy0243Rf/Hni2rofO4Ul275TRthAi+iyauLXWM8DHgGeAWuDHWuvT\nwQ5MKcX7rynnfO84B+ovLr08/mozeSkJ3LIuJ9hhCCGE6fhV49Za/1ZrvVZrvVpr7f95Yiv05o35\nZNvjefSlpgvXGvvGeaG+j/ftLJH9G4QQUcnUmyDExVi4b2cpX/njWU61DzMwPs2jLzUSY1Hcc5lu\nEyGEiHSmTtwA79tZwjeeb+CtX3sRgFir4sM3rJI9HIQQUcv0iTvbHs/n33YF5/vGuXp1JjvKM7DF\nmT5sIYQImrDIgPfsuMzJ10IIEYVkdk8IIcKMJG4hhAgzkriFECLMSOIWQogwI4lbCCHCjCRuIYQI\nM5K4hRAizEjiFkKIMKO0XvHW2Zc+qVK9gH9HW18qC1j4ZNXoI6/JpeQ1uZS8JpcKp9ekVGud7c8D\ng5K4V0IpVaO1rjY6DjOR1+RS8ppcSl6TS0XqayKlEiGECDOSuIUQIsyYMXHvMzoAE5LX5FLymlxK\nXpNLReRrYroatxBCiIWZccQthBBiAaZJ3EqpO5RSZ5RSDUqpzxgdj1kopZqUUieVUseUUjVGx2ME\npdQjSqkepdSpWdcylFJ/UErVez+mGxljqF3mNflHpVS7971yTCn1ZiNjDDWlVLFS6nml1OtKqdNK\nqU94r0fce8UUiVspZQW+AdwJrAfuVUqtNzYqU7lRa70lEtua/PQYcMeca58BntVaVwDPev8dTR7j\n0tcE4Cve98oWrfVvQxyT0WaAT2qt1wO7gIe8eSTi3iumSNzADqBBa31eaz0NPAG8zeCYhElorQ8A\nA3Muvw34rvfv3wXeHtKgDHaZ1ySqaa07tdZHvH8fBWqBQiLwvWKWxF0ItM76d5v3mgAN/F4pdVgp\ntcfoYEwkV2vd6f17F5BrZDAm8jGl1AlvKSXsSwLLpZQqA7YCrxGB7xWzJG5xeddqrbfhKSM9pJS6\n3uiAzEZ7WqOkPQq+CawGtgCdwJeNDccYSqlk4GfAX2utR2Z/LlLeK2ZJ3O1A8ax/F3mvRT2tdbv3\nYw/wczxlJQHdSql8AO/HHoPjMZzWultr7dJau4H/JgrfK0qpWDxJe7/W+knv5Yh7r5glcR8CKpRS\n5UqpOOAe4FcGx2Q4pVSSUsru+ztwG3Bq4a+KGr8CHvD+/QHglwbGYgq+5OT1DqLsvaKUUsB3gFqt\n9b/P+lTEvVdMswDH27r0VcAKPKK13mtwSIZTSq3CM8oGiAF+EI2vi1Lqh8Cb8Oz01g18FvgF8GOg\nBM9OlO/RWkfNZN1lXpM34SmTaKAJ+PCs2m7EU0pdC7wAnATc3st/h6fOHVHvFdMkbiGEEP4xS6lE\nCCGEnyRxCyFEmJHELYQQYUYStxBChBlJ3EIIEWYkcQshRJiRxC2EEGFGErcQQoSZ/wdjW1b3AIVb\njQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sp = interpolate.UnivariateSpline(t, rabbits)\n", "sp.set_smoothing_factor(0.5)\n", "plt.plot(t, rabbits, 'ro')\n", "plt.plot(ti, sp(ti))\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finding derivatives." ] }, { "cell_type": "code", "execution_count": 108, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sp = interpolate.UnivariateSpline(t, rabbits)\n", "sp.set_smoothing_factor(0.5)\n", "sp1 = sp.derivative()\n", "plt.plot(t, rabbits, 'ro')\n", "plt.plot(ti, sp(ti))\n", "plt.plot(ti, sp1(ti), 'g')\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finding integrals (AUC). " ] }, { "cell_type": "code", "execution_count": 109, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nsT4ze5DqAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sp = interpolate.UnivariateSpline(t, rabbits)\n", "sp.set_smoothing_factor(0.5)\n", "sp2 = sp.antiderivative()\n", "plt.plot(t, rabbits, 'ro')\n", "plt.plot(ti, sp(ti))\n", "plt.plot(ti, sp2(ti), 'g')\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercises" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 1**\n", "\n", "If twice the age of son is added to age of father, the sum is 56. But if twice the age of the father is added to the age of son, the sum is 82. Find the ages of father and son. Do this using `solve`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", "2x + y = 56 \\\\\n", "x + 2y = 82\n", "$$" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 10., 36.])" ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = np.array([[2,1], [1,2]])\n", "y = np.array([56, 82])\n", "linalg.solve(A, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 2**\n", "\n", "Using the `x` and `y` data given below, estimate the parameters `a`, `b` and `c` using `lstsq()` to fit a quadratic function.\n", "\n", "Hints:\n", "\n", "- The quadratic function is **linear** in the coefficients if you treat `x` and `x**2` as observed constants.\n", "- The intercept can be found using a dummy variable which is always set to 1\n", "- You will need to construct an $N \\times 3$ matrix to pass to `lstsq()`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For each $x_i$ and $y_i$, we have\n", "\n", "$$\n", "y_i = \\beta_0 + \\beta_1 x_i + \\beta_2 x_i^2\n", "$$\n", "\n", "and this is equivalent to\n", "\n", "$$\n", "y_i = \\beta_0 x_i^0 + \\beta_1 x_i^1 + \\beta_2 x_i^2\n", "$$\n", "\n", "suggests re-writing in matrix notation\n", "\n", "$$\n", "y = X\\beta\n", "$$\n", "\n", "where\n", "\n", "$$\n", "\\pmatrix{\n", "y_1 \\\\\n", "y_2 \\\\ \n", "\\cdots \n", "\\\\ y_m} = \n", "\\pmatrix{\n", "1 & x_1 & x_1^2 \\\\\n", "1 & x_2 & x_2^2 \\\\\n", "&\\cdots \\\\\n", "1 & x_m & x_m^2}\n", "\\pmatrix{\n", "\\beta_0 \\\\\n", "\\beta_1 \\\\\n", "\\beta_2\n", "}\n", "$$" ] }, { "cell_type": "code", "execution_count": 111, "metadata": { "collapsed": true }, "outputs": [], "source": [ "n = 1000\n", "a, b, c = 1, 2, 3\n", "x = np.arange(n)\n", "y = a + b*x + c*x**2 + np.random.normal(0, 1, n)" ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 1.003, 2. , 3. ])" ] }, "execution_count": 112, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X = np.c_[np.ones(n), x, x**2]\n", "linalg.lstsq(X, y)[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 3**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Estimate the probability of being between 0 and 3 for the PDF given below by integration." ] }, { "cell_type": "code", "execution_count": 113, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from mystery import pdf" ] }, { "cell_type": "code", "execution_count": 114, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.linspace(-3, 5, 100)\n", "plt.plot(x, pdf(x))\n", "pass" ] }, { "cell_type": "code", "execution_count": 115, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.7379341493891789, 8.1927148211271e-15)" ] }, "execution_count": 115, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrate.quad(pdf, 0, 3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 4**\n", "\n", "Plot the amount of a radioactive substance over 30 days, if we start with 100 units and its half-life is 7 days." ] }, { "cell_type": "code", "execution_count": 116, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def decay(x, t, mu):\n", " \"\"\"dy/dt\"\"\"\n", " return -mu*x" ] }, { "cell_type": "code", "execution_count": 117, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nGkcoNmm56TEAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x0 = 100\n", "mu = np.log(2)/7\n", "t = np.linspace(0, 30, 100)\n", "y = integrate.odeint(decay, x0, t, args=(mu,))\n", "plt.plot(t, y)\n", "pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 5**\n", "\n", "You have some noisy measurements of the amount of radioactive material over time. \n", "\n", "- Estimate the decay constant using the closed form solution for exponential decay\n", "- Plot the observed data points in red\n", "- Plot a fitted a decay curve in blue\n", "- Plot a smooth interpolated curve using cubic splines in green" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall the closed form solution\n", "\n", "$$\n", "x_t = x_0 e^{-\\mu t}\n", "$$" ] }, { "cell_type": "code", "execution_count": 118, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def f(t, x0, mu):\n", " return -mu*x0" ] }, { "cell_type": "code", "execution_count": 119, "metadata": { "collapsed": true }, "outputs": [], "source": [ "t = np.array([1, 4, 7, 10, 14, 21])\n", "y = np.array([ 100. , 74.082, 54.881, 40.657, 27.253, 13.534])" ] }, { "cell_type": "code", "execution_count": 120, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def orbit(t, x0, mu):\n", " \"\"\"Closed form solution.\"\"\"\n", " return x0 * np.exp(-mu * t)" ] }, { "cell_type": "code", "execution_count": 121, "metadata": {}, "outputs": [], "source": [ "popt, pcov = optimize.curve_fit(orbit, t, y)\n", "x0, mu = popt" ] }, { "cell_type": "code", "execution_count": 122, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.099999864435514327" ] }, "execution_count": 122, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mu" ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n/X/FuASPBksBDQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(t, y, c='red')\n", "tp = np.linspace(t[0], t[-1], 100)\n", "yp = orbit(tp, x0, mu)\n", "plt.plot(tp, yp, c='blue')\n", "pass" ] }, { "cell_type": "code", "execution_count": 124, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(t, y, c='red')\n", "f = interpolate.interp1d(t, y, kind='cubic')\n", "plt.plot(tp, f(tp), c='green')\n", "pass" ] } ], "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.6.1" }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }