{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Sizing of clock meshes\n",
"\n",
"Original by Lieven Vanderberghe.
\n",
"Adapted to CVX by Argyris Zymnis, 12/4/2005.
\n",
"Modified by Michael Grant, 3/8/2006.
\n",
"Adapted to CVXPY, with cosmetic modifications, by Judson Wilson, 5/26/2014.
\n",
"\n",
"Topic References:\n",
"\n",
"* Section 4, L. Vandenberghe, S. Boyd, and A. El Gamal
\n",
" \"Optimal Wire and Transistor Sizing for Circuits with Non-Tree Topology\"\n",
"\n",
"## Introduction\n",
"\n",
"We consider the problem of sizing a clock mesh, so as to minimize the\n",
"total dissipated power under a constraint on the dominant time constant.\n",
"The numbers of nodes in the mesh is $N$ per row or column (thus $n=(N+1)^2$\n",
"in total). We divide the wire into m segments of width $x_i$, $i = 1,\\dots,m$\n",
"which is constrained as $0 \\le x_i \\le W_{\\mbox{max}}$. We use a pi-model of each wire\n",
"segment, with capacitance $\\beta_i x_i$ and conductance $\\alpha_i x_i$.\n",
"Defining $C(x) = C_0+x_1 C_1 + x_2 C_ 2 + \\cdots + x_m C_m$ we have that the dissipated\n",
"power is equal to $\\mathbf{1}^T C(x) \\mathbf{1}$. Thus to minimize the\n",
"dissipated power subject to a constraint in the widths and a constraint\n",
"in the dominant time constant, we solve the SDP\n",
" \\begin{array}{ll}\n",
" \\mbox{minimize} & \\mathbf{1}^T C(x) \\mathbf{1} \\\\\n",
" \\mbox{subject to} & T_{\\mbox{max}} G(x) - C(x) \\succeq 0 \\\\\n",
" & 0 \\le x_i \\le W_{\\mbox{max}}.\n",
" \\end{array}\n",
"\n",
"## Import and setup packages"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import cvxpy as cp\n",
"import numpy as np\n",
"import scipy as scipy\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Show plots inline in ipython.\n",
"%matplotlib inline\n",
"\n",
"# Plot properties.\n",
"plt.rc('text', usetex=True)\n",
"plt.rc('font', family='serif')\n",
"font = {'weight' : 'normal',\n",
" 'size' : 16}\n",
"plt.rc('font', **font)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Helper functions"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Computes the step response of a linear system.\n",
"def simple_step(A, B, DT, N):\n",
" n = A.shape[0]\n",
" Ad = scipy.linalg.expm((A * DT))\n",
" Bd = (Ad - np.eye(n)).dot(B)\n",
" Bd = np.linalg.solve(A, Bd)\n",
" X = np.zeros((n, N))\n",
" for k in range(1, N):\n",
" X[:, k] = Ad.dot(X[:, k-1]) + Bd;\n",
" return X"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Generate problem data"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"#\n",
"# Circuit parameters.\n",
"#\n",
"\n",
"dim=4 # Grid is dimxdim (assume dim is even).\n",
"n=(dim+1)**2 # Number of nodes.\n",
"m=2*dim*(dim+1) # Number of wires.\n",
" # 0 ... dim(dim+1)-1 are horizontal segments\n",
" # (numbered rowwise);\n",
" # dim(dim+1) ... 2*dim(dim+1)-1 are vertical\n",
" # (numbered columnwise)\n",
"beta = 0.5 # Capacitance per segment is twice beta times xi.\n",
"alpha = 1 # Conductance per segment is alpha times xi.\n",
"G0 = 1 # Source conductance.\n",
"C0 = np.array([ ( 10, 2, 7, 5, 3),\n",
" ( 8, 3, 9, 5, 5),\n",
" ( 1, 8, 4, 9, 3),\n",
" ( 7, 3, 6, 8, 2),\n",
" ( 5, 2, 1, 9, 10) ])\n",
"wmax = 1 # Upper bound on x.\n",
"\n",
"#\n",
"# Build capacitance and conductance matrices.\n",
"#\n",
"\n",
"CC = np.zeros((dim+1, dim+1, dim+1, dim+1, m+1))\n",
"GG = np.zeros((dim+1, dim+1, dim+1, dim+1, m+1))\n",
"\n",
"# Constant terms.\n",
"# - Reshape order='F' is fortran order to match original\n",
"# version in MATLAB code.\n",
"CC[:, :, :, :, 0] = np.diag(C0.flatten(order='F')).reshape(dim+1, dim+1,\n",
" dim+1, dim+1, order='F').copy()\n",
"zo13 = np.zeros((2, 1, 2, 1))\n",
"zo13[:,0,:,0] = np.array([(1, 0), (0, 1)])\n",
"zo24 = np.zeros((1, 2, 1, 2))\n",
"zo24[0,:,0,:] = zo13[:, 0, :, 0]\n",
"pn13 = np.zeros((2, 1, 2, 1))\n",
"pn13[:,0,:,0] = np.array([[1, -1], [-1, 1]])\n",
"pn24 = np.zeros((1, 2, 1, 2))\n",
"pn24[0, :, 0, :] = pn13[:, 0, :, 0]\n",
"\n",
"for i in range(dim+1):\n",
" # Source conductance.\n",
" # First driver in the middle of row 1.\n",
" GG[int(dim/2), i, int(dim/2), i, 0] = G0\n",
" for j in range(dim):\n",
" # Horizontal segments.\n",
" node = 1 + j + i * dim\n",
" CC[j:j+2, i, j:j+2, i, node] = beta * zo13[:, 0, :, 0]\n",
" GG[j:j+2, i, j:j+2, i, node] = alpha * pn13[:, 0, :, 0]\n",
" # Vertical segments.\n",
" node = node + dim * ( dim + 1 )\n",
" CC[i, j:j+2, i, j:j+2, node] = beta * zo24[0, :, 0, :]\n",
" GG[i, j:j+2, i, j:j+2, node] = alpha * pn24[0, :, 0, :]\n",
"\n",
"# Reshape for ease of use.\n",
"CC = CC.reshape((n*n, m+1), order='F').copy()\n",
"GG = GG.reshape((n*n, m+1), order='F').copy()\n",
"\n",
"#\n",
"# Compute points the tradeoff curve, and the three sample points.\n",
"#\n",
"\n",
"npts = 50\n",
"delays = np.linspace(50, 150, npts)\n",
"xdelays = [50, 100]\n",
"xnpts = len(xdelays)\n",
"areas = np.zeros(npts)\n",
"xareas = dict()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Solve problem and display results"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Point 1 of 50 on the tradeoff curve (Tmax = 50.0)\n",
"CVXOPT failed, trying robust KKT\n",
"Point 2 of 50 on the tradeoff curve (Tmax = 52.04081632653061)\n",
"Point 3 of 50 on the tradeoff curve (Tmax = 54.08163265306123)\n",
"Point 4 of 50 on the tradeoff curve (Tmax = 56.12244897959184)\n",
"Point 5 of 50 on the tradeoff curve (Tmax = 58.16326530612245)\n",
"Point 6 of 50 on the tradeoff curve (Tmax = 60.20408163265306)\n",
"Point 7 of 50 on the tradeoff curve (Tmax = 62.244897959183675)\n",
"Point 8 of 50 on the tradeoff curve (Tmax = 64.28571428571429)\n",
"Point 9 of 50 on the tradeoff curve (Tmax = 66.3265306122449)\n",
"Point 10 of 50 on the tradeoff curve (Tmax = 68.36734693877551)\n",
"Point 11 of 50 on the tradeoff curve (Tmax = 70.40816326530611)\n",
"Point 12 of 50 on the tradeoff curve (Tmax = 72.44897959183673)\n",
"Point 13 of 50 on the tradeoff curve (Tmax = 74.48979591836735)\n",
"Point 14 of 50 on the tradeoff curve (Tmax = 76.53061224489795)\n",
"Point 15 of 50 on the tradeoff curve (Tmax = 78.57142857142857)\n",
"Point 16 of 50 on the tradeoff curve (Tmax = 80.61224489795919)\n",
"Point 17 of 50 on the tradeoff curve (Tmax = 82.65306122448979)\n",
"Point 18 of 50 on the tradeoff curve (Tmax = 84.6938775510204)\n",
"Point 19 of 50 on the tradeoff curve (Tmax = 86.73469387755102)\n",
"Point 20 of 50 on the tradeoff curve (Tmax = 88.77551020408163)\n",
"Point 21 of 50 on the tradeoff curve (Tmax = 90.81632653061224)\n",
"Point 22 of 50 on the tradeoff curve (Tmax = 92.85714285714286)\n",
"Point 23 of 50 on the tradeoff curve (Tmax = 94.89795918367346)\n",
"Point 24 of 50 on the tradeoff curve (Tmax = 96.93877551020408)\n",
"Point 25 of 50 on the tradeoff curve (Tmax = 98.9795918367347)\n",
"Point 26 of 50 on the tradeoff curve (Tmax = 101.0204081632653)\n",
"Point 27 of 50 on the tradeoff curve (Tmax = 103.06122448979592)\n",
"Point 28 of 50 on the tradeoff curve (Tmax = 105.10204081632654)\n",
"Point 29 of 50 on the tradeoff curve (Tmax = 107.14285714285714)\n",
"Point 30 of 50 on the tradeoff curve (Tmax = 109.18367346938776)\n",
"Point 31 of 50 on the tradeoff curve (Tmax = 111.22448979591837)\n",
"Point 32 of 50 on the tradeoff curve (Tmax = 113.26530612244898)\n",
"Point 33 of 50 on the tradeoff curve (Tmax = 115.3061224489796)\n",
"Point 34 of 50 on the tradeoff curve (Tmax = 117.34693877551021)\n",
"Point 35 of 50 on the tradeoff curve (Tmax = 119.38775510204081)\n",
"Point 36 of 50 on the tradeoff curve (Tmax = 121.42857142857143)\n",
"Point 37 of 50 on the tradeoff curve (Tmax = 123.46938775510205)\n",
"Point 38 of 50 on the tradeoff curve (Tmax = 125.51020408163265)\n",
"Point 39 of 50 on the tradeoff curve (Tmax = 127.55102040816327)\n",
"Point 40 of 50 on the tradeoff curve (Tmax = 129.59183673469389)\n",
"Point 41 of 50 on the tradeoff curve (Tmax = 131.6326530612245)\n",
"Point 42 of 50 on the tradeoff curve (Tmax = 133.67346938775512)\n",
"Point 43 of 50 on the tradeoff curve (Tmax = 135.71428571428572)\n",
"Point 44 of 50 on the tradeoff curve (Tmax = 137.75510204081633)\n",
"Point 45 of 50 on the tradeoff curve (Tmax = 139.79591836734693)\n",
"Point 46 of 50 on the tradeoff curve (Tmax = 141.83673469387756)\n",
"Point 47 of 50 on the tradeoff curve (Tmax = 143.87755102040816)\n",
"Point 48 of 50 on the tradeoff curve (Tmax = 145.9183673469388)\n",
"Point 49 of 50 on the tradeoff curve (Tmax = 147.9591836734694)\n",
"Point 50 of 50 on the tradeoff curve (Tmax = 150.0)\n",
"Particular solution 1 of 2 (Tmax = 50)\n",
"CVXOPT failed, trying robust KKT\n",
"Solution 1:\n",
"Vertical segments:\n",
"[[0.65284441 0.4391586 0.52378143 0.47092764 0.2363529 ]\n",
" [0.99999993 0.85353862 0.99999992 0.93601078 0.56994586]\n",
" [0.92325575 0.29557654 0.80041338 0.99999998 0.99999997]\n",
" [0.41300012 0.13553757 0.26699524 0.67049218 0.88916807]]\n",
"Horizontal segments:\n",
"[[1.96487539e-01 1.40591789e-01 9.70591442e-08 7.79376843e-08\n",
" 5.27429285e-08]\n",
" [7.07446433e-02 6.38430105e-02 1.02136471e-07 8.59913722e-08\n",
" 6.28906472e-08]\n",
" [6.05807467e-09 1.16285450e-08 3.91561390e-08 9.48052913e-02\n",
" 1.58096913e-01]\n",
" [3.82528741e-07 4.85708568e-07 5.75578696e-07 8.39862772e-02\n",
" 5.38639181e-02]]\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAegAAAHkCAYAAAD1krx3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvqOYd8AAAIABJREFUeJzs3Xl8VPW9//HXyb6ShX2HsAgiggFUUOsWKtrVFrXt7aK2gu29trWL1N5ba9t7tXhr1XqvP8EqbvUqUPcFSxSoCioQ2QmQhC2Qfd/X8/vjTCbDkMxMkpk5k+T9fDxgTmbO95zPTCbzme96DNM0ERERkdASZncAIiIicjYlaBERkRCkBC0iIhKClKBFRERCkBK0iIhICFKCFhERCUFK0CIiIiFICVrOYBjGMrtjCFV6bUQkmIyBulCJYRjJwN1AmeOuSmAHkGqaZqYP5dOBJ4By0zQX+yGeVQCmaS7v67F8OFcasBQYaprmih6UWwZkmqaZ5zjGTmAtkAsMBZYBmcB2x89LgZWmaa7281MICMMwlgKLgXWOu27Aij/PZZ+7gDwgFcD1uTlek4zePl/H+RcAacAK1/MORo6/0SeApaZpGr0o79e/UZFQM5Br0E8A95um+YBpmg9gJZongGRfCpummQX4nNxcdVPTWkdnYggYwzAygHRgCj4+V0e5NGCKS9JIA24zTXO54zVc4TjeKpefF/fkHCEgFcgANgIrsZ6La3JeCeSZprnekYSnOJIqAI59kx2vVY84ktFKx+v2Uh+fh19r83a1DJimWWma5g19KN/rv9FA8ddrqdYagYGdoNNN06zs+MGxHaw/5nnud5immelLzb2vHOdZj9Vi0BPLgVUuPyc7juPpXHm9OI+tTNOcYpqmYZrmPMcHvKtlbs95I9br4mo1vXsfzceqmeP4AtDX2vNZ77EQOdZg56/XUr8TGdAJOs3RBObkSJABbVZ0NJGmBvIcAZLuljR8fZ0GRDOt+3vFoRyrxu3k+KLX4xq0P/nzPdaP368hx1+vpX4n0iHC7gAC6AFgp2EYq7FqQpmOJjVnrcnR7LiMziST5mgOP4uj6Xgljv4u1/4zIMU0zUrHPguAdMcfWaVpmqu76ivzdG6Xc+XRWatdDOQGor/X0WR7RqLtonbZJdM0M7uJNx2rdp3p2E4F5rn2wTtel45ktwDY2NHK4Ghavtvx+NWmaWYZhrETq0m91/3ejqbDcs7uY0513O+qu9aBPMMw0n19jRzP8wasL413Yb0Xszw9f0e5u4AsrOe8GOs1TqOL95hj/45xF9vdj9fTY3l4Ht39vnx+zzq6EnKxXm+fWmC6ir+rVggvf1dLHTFWArcBNzn2XWua5nLH409gdYetIICvZW+O093v1+2134j1ui7Ay+eFS7kdjnI3AS+Zprm+l+8lrzH443Ovu/dCT2PuF2NATNMcsP+w3gg7AdPxb5Xb4zuxmnI7fl7qug+O/kq3xze6HcPs4hjruojF/Vjezr0U60MszfFzsvXr8vm5r8Tt+XrYNwPrDettPxNrkFRXj3UZr+v+WH+4S91eA9efK7o4bi5W7R73GLH+iH35l+zYP70jPpfyS13jdzt+x3NIdrv/Lte4e/Aau793un3+jveu62NLXV6H7t5juW7vqY4vND0+VjfPwePvy5f3rOM9kO7yc5q397WX+Hv6d7XM9flijQtxPfayIL2Wfvv9enj/rut4Pl7iyHU8t3SXGHr7/D3G4MPvx+N7yMv5exxzqP8byDVoTOtbV8e3z6XAOsMwdppWrXapYx/Xfur1hmGsMwxjhev9LvzS3+rjuSsd93f0W1YaRo8HuvoqDevN3RfdxZvnto9r090Nptu3WMMwkt1e+8XARket637Xfc0ejog3z67xbsT6xt3RZ+/erNhdM6O/mrk9Pf88YJVhGKlYNW6P4wEc76lKt9duB3BjT4/Vy3jBy3u2owbu+nswrZqPt/P6FL+Pf1drOXOsBVg1x45aY16QXkt//n47apfu7+9VWAnSU02+HGtgZGVH+T4+/25j8NPnXpfnD9LvLOgGZB+0YRhnjbR1/FKWYzU1gvUB696kCf778PXE13N314QXCP44bldNRuXdbAOUG4Zxl2EYy1xGS5+RFB1/qOuxkkOfviA5mtBcVWLVGjpic38Nkh0xBOrLWrfP37Sa5pbjaOIzDGOnl999GljPseMf1gdjZi+O1eN4XXh6z86nF69bD+L3+nfl+F1mGoax1PGFYQWd4wwyHOcK+Gvpz9+vhzJ5+PZ37f478efzd42hz597Hs4fjPd/0A3UGnQqVjOGe3/yDqxfErjMdXWTjJ8GPnV8SXCvdQTj3D1UjjUtK9h2YiXejm/uTzhunbUyxx/Sdhz9t6bLGAHDMbfcByuwXu+NhmGkuCRc5+ttWn3C7h9UqXT9Aeiv31O3zx+Y7/hg6ehDW4nVVHfGe9rli2geVvPeWfEahpHRk2N18X71Gq+PX57y6MWXX1/jx/e/q1U4Zi04anBrjc6xCR3HCehr2dPjeIrJg7PGlvioz8+/mxj6/Lnn4fz+jDlkDMgatMPd7rVorKasjgVD1uM2p9VRK1jv4cPmjA8Yo+uRv677pHX1B9qDcwdrJKev37S98Rav83HHa5fq8mHvev4Ml/vudrxetwHLXV9z05qj7cu/SsfvYbnb63sTVl99h7UuNUOwvsx19SVgCi4fKIZhpHVRO/fIh+ef7nZM17nTZ73HHK9Rpdt7qmMmQ4+O1ct4O3T7HnB8SOa5/g67+Rty5yl+1+P79Hfl2M/1eKuwvsTluTwesNfSh+fU09+v85hu51jBme9vn/Th+XuMwU+fe12ev48xh6wBuZKY48PjRjpH6yZjrXy13bX/wThz1F8q1jewjhGF6VhvrPk4Fjxx3O86AjUPeA/rm5lzZSjDMNZh9W9ido7i7jjWCsd9Pp8bqw/pbqzBSavxMALRUfYmrBYEsJqHX+qi/9W93Eazi9WYjM5Rlwscx8x0PLf1Ls/Xa7xYH4grsJqzVpjW6NNVjteyI7Zkx3lecuy/HKt/rGPke67jtXL+PnrC6FxhDaz3Q1cjjDtWEkujm5G47q+Vo8zdpmmmdHNe19dntSP+Si/Pf77jvo5a3RkzDNzfY477XN9TOOLPNDoXvfD5WN08D0/xgg/vWbcYOz6UN2K9T2/r6stxd/F39Tfq6e+qi+fiHGtiGMY602XRlCC8lj0+TncxOR5bSudaBh1dNx2JvbsYOv4mnb8zt5arHj1/X2Lo6+cenV+sujp/r35noWxAJmjpOfcPLOma0bki2HK3+zua0USCzpEcbzL7sDLbQIhhoBnITdzSMyuxvn2KZ8voutmwXww6kQEtFN6DoRDDgKEELYBzMMv2LvrtxcHx2nT0Z7vfH/qLHsiA5GiqXg7MN2xawzsUYhiIvDZxd/RTdNU/6Xh8KY7+hv7Sri/dMwxjmae+s8FMr42IBJPXGrSnfjWjc+J5JtYIuh6NZJXQowTUPb02IhJMfW3iXsCZc9x8mTIhIiIiXvR1oRL3AQFD3Xdw9EcsA4iPj583Y8aMPp4ysKpLGwAYMiyWU7WnABibMNZjmZb8fAAix40LbHAi7kwTzHaXf20u95lAu+efu9zHfdvXW3D8F+KspSO7itTEcPvZWxnjrPtMl/19LdP1fb7yfQngjnMYnP1ce3643i497KFcwM8dfAdPVZeapjm8N2X7mqC7Wr/4DKbLetjz5883d+zY0cdTBtYrD1pTPK//eTq3bLgFgDVL1ngsc/w73wVg4nPPBjY46f/aWqCxGpoc/xrdbp3bNdBcBy31Lrf10FLnuG2wtttbex9LeDREOP65bjt/joKwSMywCFqJoNkMp4VwWswwWsxwmswwms1wmtrDaGwLo6ndoLE9jIa2MBpaw6hvC6Ou1aChzaCxzaChLYz6NoPGtjDasP61Y9Du3A6j3Qyjzf0+OvcPM8IIiwgnLCyC8IgIIsLDCQ+PIDw8grCIcOfPERERRDhuwyMiiIwIJyI8gsiIMCLCwogINwgPM4gIc70N6/w5vJv7z3j87PvDwwzCDMe/MAg3DAzDIMzAeb9h4LIfZz4edva+YUbHca19pX8xDON4b8v2NUFv58x1Vjf28Xgi/UN7GzRUQH05NJRDfZm1XV/m+Ln8zMcaq6zE29rg/dgRMRA9BKLiITIOouKs27ihLj/Hd94fFQ+RsWfeFxHjknBjIDwKImKobw+ntNGgtMGkrK6FivpmqhtaqKxvoaqhhcqGFio77nPcX93Ygi/LJcRFhRMfHUGC4198XDgJ0RHERUUQGxlOTGQYI6PCHdvhzvs6t8OJjQonJiKc2Cjr/pjIcKIjwogMDyMqPIywMCUoGTy8JmjHQLD5hmEsNTuvHLLRNM3FjnVs7+oYHKaFGqTfa66H2kKoLYaaQqgtsv7VFDnud2zXl1rNwF0Jj7KSaWwqxKXCiJkQkwwxQyA6CaITHdtD3G4dj0VE9SjktnaT0tomCqoaKahsoLi8idLajn8NlNZWUlrbRFltM/XNbV0eI8yApNhIkuOinLeThsWTHBtJUmwkSXFRDImJIDEm0kq+0eEkxkQQH+34FxVBuJKniF95TdCOpLze7b7FLtuaWiV+V1lZSWam9X1v+/btrFxprQ3Scd/GjRud9/nMNK3abOUJqMqHqpPWbeWJzu36srPLGeGQMAISRsKQsTDmAms7fnhnEo5L7UzKUfHgx6bI6sYWTpTVc6K8ntOVDRRWNVJQbSXjwqpGimqaaGs/s4obZkBqfDTDEqIYlhDNxAlxDE2IZlhCNEMTohjuuE2JiyIpLpKEqAjVTkVCzEC9mlWvjUpLcm7PGT7HpzKxc+cGKpxBa+3atQAsW7aM7du3s3r1aubPn+9MzCtXriQvL4+0NLd1VUwT6kqgLBfKc63bshwoz7P+tdSfuX9kPCSPh6RxMCYdksZC4hhIHGkl4YRRVuINC9yaPqZpUlTdRF5prTMRu/6rrG85Y/+YyDDGJMUyKimGhVOGMTophlFJMc7bkUNiSImLUo1WpJ9Tgnaz8PrOqy7+dN5PfSoz4uc/C1Q4g8L69eu5//77ee+999ixYwfr1q1j1arOi0jl5eWxfPly0tLSSE9Pp7KykrTJk0kbGgVHNkLxASg6ACXZVkJuruk8eFgEpEyC1Ckw+XOQPLEzISeNh9gUv9Z2PWlrNzlZXk9OcS05JbXWbXEtucW11DR1DvaKCDMYlxLL+NQ4vjB7NBOHxjEhNY7xqXGMS45jSGyEBguJDAJK0GK7pUuXsmrVKpKTk0lNTT0rOacmJ5EWVQGfPgFF+9mx+UOSDx2Gh1yuGpc4BkbMgPEXwdApVkIemgZJEyA8+G/z+uZWDhbUcOB0FQcKqtl/uppDhTU0tXb2Ww9PjGbq8ASuTx/L1BEJpA1LYOLQOEYnxRARrlV4RQY7JWg376zaC8C1y2dz56Y7AXjoyoc8lsm/48cAjHv0L4ENbgC74YYbrP7ltlYo2AOnP4PTWaxf8zqr5tbAX9dZO8YkkTFrFuv2N7M+5hKWfvM71iCs2C6v9BgUTa1t7D9dTdbxCnbnV7H/dBVHS+ucI5+TYiOZNWYI37l4ItNGJjB1RCJThyeQFBdpW8wiEvqUoN001nb291U2+XblxbZKXaGx15rrIH87N47O57a77+XuC5thm/U7WH84kru+sgjGppN5PIyNewqYcu5clt26nORDKyhPnQITFwU95MKqRnYeryDrhPVv/6lqmtusmvHopBhmjUniS+ePYdaYIZw7Zghjk2PVJC0iPaYELcHVXA/Ht0LeJuu2YDeYbSRjkBoTQ/oXboXxF5J5pJ4Vz/2O+w+dAk6xcuVKll+ZRl5eHpmZmVRWVrJsWXAumlNc08i23DI+zitja24Zx8usgWZREWGcPzaJmy+ZRPqEZC6YkMLIITFBiUlEBj4l6G6sX78eEuyOYgBob4eifZD7vvXvxDZoa7ZWqho7Dy79KUxYBOMXsOrezhH0GbMh92vfPetwHaO2MzICd12WhuY2Psop5Z9HStiaW0ZOcS0AidERXJSWyncunsj8SamcO3oIURHqKxaRwFCC7kJdQw0fbNwI19sdST/V0gB5WyD7TTj8LtQVW/ePmAUXLoMpV1lN05Gx9sbp4mR5PZsOFfPewWK25ZXR3NpObGQ4CyansnTeOBamDWXWmCEavCUiQaME7WbcjBSyc06xY8cOLk2/lJkXz/RaJm7hxUGILMQ1VMDhf1hJOec9a53o6CEwbTFMXQxpV8CQ0XZH6WSaJtmFNby1p4B39xdyxFFLnjQ0jn+5aAJXzRjBhZNTiY4ItzlSERmsDNOXRXb9pD9cLKPDDTfcwLp16+wOI7Q118Phd2Dvems+cnuLtbDHjC9Y/yZd1uNlKwOpIym/vbeAt/YUkFdaR5gBF00eytUzR3DVjBGkDVe/hoj4j2EYO03TnN+bsqpBS8+0t0HeZti7Dg6+Ac21VlK+aDnMut5ajSuAq271RmFVIy9/ls/fd+aTW2Il5YvThnLrpZNZct4ohiVE2x2iiMhZlKDdvPHoLuf27Zm3U3KkhL//8O8ey5y4zRpNPOGJ1QGNzVbVp+Gz5yHrWWvd6ugkKyHPvgEmXQphodUU3NjSxsYDRazfmc8HR0poN2HBpBRuuURJWUT6ByVoN63N1nzWtLQ0Pt30KaMv8N5vajY2Bjose7S3Wf3JO9fA4Q3W1ZvSroTP/wGmXwuRoTel6GhpHc9tO876nSepbmxlTFIM/3rlVL6ePo5Jw+LtDk9ExGdK0N1YuXIlt2y4xe4w7NFcB7tegI8fsy4wET8CLvkppH8HUtO8lw+y9naTLYdLeGbbMTYfKiEizODa2aO5af54Fk0Zqqs0iUi/pAQtnaoL4NNVsGMNNFbCuAVw9T0w44sQHnrLUjY0t7F2x0me+ugox8vqGZ4YzU8zpvGtCycwQguGiEg/pwQt1vWQP3gQPvsbmG1WQl50B4y/0O7IulTV0MLzHx/nqQ+PUlbXTPqEZH7x+XO4ZtYoLRwiIgOGErSbSbOHObcvH3e5T2USrrgiQNEEWMVxKzHv+hsYYTDve7Dw3yB1st2RdamstoknPjjK3z4+Tk1TK1ecM5wfXTGVCyen2h2aiIjfaR70YFRdAFv+aI3KNsIg/Xtw6Z2QNNbuyJwqKyutq1sBH277mAnX3MaTHx6ldO8WLp45galhJTz4n/fYHKWIiGeaBy2+aaqFrY/C1r9AWwvMuxku/VlIJeYOa9eupaWtnchZi3nhk7W07f8fFpwzntu/OIs7vv9tVq9eTWZmZkDX5BYRsZM67Ny88mAWrzyYBcAtG27xaST38e98l+PfOfvCDiGjvQ12Pg2Ppls15+nXwL99Cl94MCSS8/r165k3b56z1rxs2TKGL7iO5yqmcd/b2cQ2lvH8b37AnJgyLrngXMCaBpeVlWVz5CIigaMEPdDl74DVV8AbP4GUSfD9jXDD0yE1XWrp0qWkpqaSnJxMWUskpXO/x50v7WbEkGgeXDKKJfOmcu0lc6h0u+52WVmZTRGLiASemrgHqoYKyPydVXNOHAVL11grfxmhOSd4yZe+yo33rOKfR0oZN+siHlh6PkvTx/GnP/03q1atAiA5OZny8nKbIxURCQ4l6IHGNK11sjfcbSXpi38EV94N0Yl2R9Yl0zRZvzOfNadHc+y1P/O9H97JH5ddTmJMJOvXr+euu+4CIDMzkwULFjhr0Xl5eSxevNjO0EVEAkpN3D2wYsUKHnjgAbvD6F5tMbz4L/DybdZUqeVbYMl9IZucj5fV8e0nP+GX6/cwY+IovrhgOv/746+TGBNJZmYmK1asYN68ecybNw+wmsLz8vKco7s1QExEBjLVoN1MnTfCuX3NpGvOeOymm25yJgdXidcuCXhcXu37O7z1C2uZzs//p1VzDrELWHRobzd56qOj/Okfh4gIC+MPXz2Pf7lwAmE/XOTcJyMjg9zc3LPKdtSoRUQGOiVoN7OvGOfc/saMbwDwwAMPkJ6e3u2o4dRvfSsosXWpoRLe/Cnsf8W61OP1j8Pwc+yLx4vTlQ38fO1utuWVkTFzBH/46nmMToq1OywRkZCjBO2mpbkNgMiocBpaG3jyiSdJT08nIyOD1NTULmvQ7Q0NAITFBjnR5O+A9bdYl4K86jfWBS3CQ/dX+sbu0/z7K3tpbTd54Ovnc8P8cRghOmhNRMRuoftpbpM3H90NwPU/T+dHmT9i0wubeP+Z9z2WOblsOQATn3s24PEB0N4OH/8vZN4LiWPglg0wfkFwzt0LdU2t/ObVfbz82SkumJDMwzfNZeJQXfpRRMQTJWgvhk0fRlZWFmlpaaExxaehEl5Zbl2feeaX4MuPQmyK3VF1K6e4htufzyKvpJafXD2NO66aSkS4xiaKiHijT0ovZt8wm7y8PLKyssjKymLjxo1nLZgRNCWH4a9XQ04mXPvfcONzIZ2cX999mi//z0dU1jfz/A8u4s7F05WcRUR8pBq0DzpGDqenp9s3ivjwu/D3H0B4FHzvDZi4yHsZm7S0tfNfbx3k6a3HmD8xhf/5VjqjknR9ZhGRnlCCDnWmCR89bK0KNmo2fOMFSB5vd1Tdqqpv4Ucv7OSjnDJuvWQyd183g0jVmkVEekwJ2s2MhaOd21+Z+hWfyiRdf31ggmlrhbd/bi3XOetr8JX/hai4wJzLD46V1nHrM9s5WV7Pn26Yw9J547wXEhGRLul60KGquR7W3wqH37EuCXn1PSG7jjbAx3ll3P78Tgzg8W/P46K0oXaHJCJiO10P2o8aapsBiE2IoqKxAoCUGM8DsVorrP0iUvw0YKuuFF64CU7thOv+BBfe5p/jBsgbu0/zs7W7mJAax1M3L9AUKhERP1CCdrNh1T7Amgf9s80/A2DNkjUey5z68U8AP82Drj4Nz3wZqk7CTc/DzC/2/ZgB9Ny2Y9zz+n4WTEzlie/NJyk20u6QREQGBCXoUFJ5Ap75EtSVwXdehYkL7Y6oW6Zp8nDmER557wgZM0fyP9+6gJjI0Fz7W0SkP1KCDhXleVbNuakavvsajJtnd0Tdam83+d0b+3lm23GWzhvHH782W/ObRUT8TAk6FJTmWDXn1kb47uswZq7dEXWrvd3kN6/t42+fnOC2yybz6+tmaj1tEZEAUIK2W8VxKzm3NcPNb8LIWXZH1C3X5PzDK6Zw1zXnKDmLiASIErSb8y4f69y+6ZybfCqT8s1v9O5k1QXw7JehpR5ufkvJWUREnDQP2i51ZfD0dVCVbzVrh3Cfs2ma3PPafp77+LiSs4hID2getB/VlDcCkJgaQ2FdIQCj4kd5LNNSUEBlVRVrXn+d9PR08vLyWLZsWfcFmmrg+a9BxTH4l/UhnZwB/rzxMM99fJzln0tTchYRCRINvXWTueYAmWsOAHD3B3dz9wd3ey1z+q4V/ObrS8nIyCAjI4OdO3d2v3NbC6z9HhTuhRufhcmX+Sv0gHjqw6M8+n4ON80fz6+unaHkLCISJKpB+8n+8jLKy8vJyspi+fLlXe9kmvDWzyD3Pes6ztOvCW6QPfTKZ/n8/s0DLJk1iv+6/jwlZxGRIFKC9pNLR48BrEtSdnu96A8ehKxn4bJfQPp3gxhdz206VMwv1u1h0ZShPPyNuZrnLCISZErQfnL7rFm8lJXl/DkjI+PMHfasg/f/ALNvhKv+I8jR9czBgmr+7W9ZzBiVyOrvztcKYSIiNlCC9qO77rqr6wdOZcFr/woTL4Gv/E9IX5WquLqR7z+9ncSYSJ783gISovUWERGxgz593cxdPMG5/b1Z3/OpTOott3T/YG0xvPRtSBhhDQqLiO5riAHT0NzGbc/uoKK+hXW3L2RUUozdIYmIDFpK0G4mnz/MuX3F+Ct8KpN41ZVdP9DabI3Yri+H778L8cO63i8EtLeb/HzdLvacqmL1d+Zz3tgku0MSERnUlKDdVBTWAZAyKp6jVUcBmJw02WOZpjxrv+g0t/3e/TWc2Apf+yuMnuP/YP3osc05vL23kF9fN4PF5460OxwRkUFPCdrN5r8dAqzrQf9+2+8B79eDLvztbwG360HvfhG2PwEL/w3OvyEwwfrJlsMlPLjxMF+ZO4bbLkuzOxwREUELlQRG6RF482fWoLCM39kdjUcny+v5yYufcc7IRO7/2mzNdRYRCRFK0P7W0gjrbrYGg339rxAeuo0UjS1t3P78TtraTR7/9jziokI3VhGRwUafyP72j3+Hon3wrbUwZIzd0Xj029f2s/90NU9+bz6ThsXbHY6IiLhQDdqfDrwG2/9q9TuH+DKeb+w+zUs7TvKvV07h6pkaFCYiEmpUg3Yz/7pJzu1l53u4IpWLYT+8HerL4PV/hTHpcPVvAxSdf5wsr+fXL+8lfUIyP82Ybnc4IiLSBSVoN+Nnpjq3F45Z6FOZ+IUL4W9LrStVff2vEBEVqPD6rKWtnR+/+BkAj3zjAiK1xraISEjSp7ObkpM1lJysASC7PJvs8myvZRpfXknj9s2w+PcwdEqAI+ybRzKP8NmJSu772mzGp8bZHY6IiHRDCdrNh2uP8OHaIwCs/HQlKz9d6blA+VGK/vIkRQcnwvzvByHC3vv0aDn/u9m6tvOX5oT2ADYRkcFOCbov2tuti2BgwNBpEBa6L2d9cyu/WLeb8Slx3POlc+0OR0REvAjdjNIf7HgSjn8EqZND+iIYACvfyeZkRT1/umEO8bpClYhIyFOC7q3q05D5O0i7EhJCe5rS1txSntl2nFsWTebCyaneC4iIiO2UoHvr7V9Cewt88c92R+JRbVMrd63fw+Rh8fzymnPsDkdERHyktk43F3+1cxT2T9J/0vVOB9+E7Dch415ITWP4nXcGJbbe+OM7BzlV2cC65QuJjQq3OxwREfGRErSb0VM6r4M8d8Tcs3dorLZqzyPPs1YMA+LSLwhWeD2y83g5z398glsvmcz8SWraFhHpT5Sg3RTkVgFWot5VvAtwS9Sb7oOaArjpeQiPBKA+y1r4I5QSdUtbO79+eR9jkmL4+ee1WpiISH+jPmg3H7+ay8ev5gLwSNYjPJL1SOeDxQfh09Uw72YYN895d8kdjB5PAAAgAElEQVRDD1Hy0ENBjtSzJz88yqGiGu798iyN2hYR6YeUoH1lmvDOCohOgKt+Y3c0Hp0sr+fhzMMsPnckn581yu5wRESkF5SgfZX9JhzdAlf+B8QPtTuabpmmyW9f30+YYfC7L8+yOxwREeklJWhftDTCu/8OI86F+bfaHY1H7+4v4v3sYn62eDpjkmPtDkdERHpJnZO+2PYoVB6H774O4aH7kjW2tPGfbx3gnJGJ3Lxokt3hiIhIH4RutrHJpTdOc26vuHAF1JXBs0th5pcg7fIuy4z89d3BCs+jJz88Sn5FA3/7wUVE6DKSIiL9mhK0m+HjE53bM1JnwNafQVszZPyu2zIxM2cGIzSPiqsb+d9NOXz+3JFcMnWY3eGIiEgfqZrl5uTBck4eLAdgW/bf2bb//2DeLR6v81y3dSt1W7cGK8QuPfDuIVrbTP79C/Z/WRARkb5TDdrNjrePATB+Ziqrt/8JUpJYePldHsuU/r/HAYhftCjQ4XVp98lK1u/M5/bLpzBxaLwtMYiIiH+pBt2d/B1QVwpDxkLCCLuj6ZZpmvznWwcYlhDNv17ZfS1fRET6FyXo7mz8rbWU55Cxdkfi0XsHi9l+rII7F08jMSbS7nBERMRPlKC70lABxz+E5AkQFrpXgGprN3ng3WwmD4vnxvnj7Q5HRET8yGuCNgxjqWEYGYZhdNkR6/L4Mv+HZ5PKE5A0HhJCe5nMVz47xeGiWn7x+XOI1LQqEZEBxeMgMcMwlgKYpplpGEaaYRgZpmlmujyeAeSZppnlSNLppmlmBTjmgLrisnJ4/QG47JfcM+1Kn8qM+l33U7ACpbGljYc2Hub8cUlcNzu0v0iIiEjPeRvFvQB4ybGdB6QDmS6P7wB2GoZxA5Dmmrz7JdMkZc9KSA2Dud9mckSUT8Wi0yYHOLCzPf/xcU5VNvDA0vMxDCPo5xcRkcDy1i6a7PbzGVeJME2zElgFrAO6HEJsGMYywzB2GIaxo6SkpNeBBkXu+xzNaefoxP+AiCg2n9zM5pObvRareX8TNe9vCnx8HedrbOF/N+Vw2bRhWpRERGSA8pagK4HU7h50NIFnmqY5xeXnM5imudo0zfmmac4fPnx4n4INKNOELSvZ1XQju45ay30+s/8Zntn/jNei5WvWUL5mTaAjdHp223Eq6lv4xefPCdo5RUQkuLwl6O101qLTgI1uj6e59Dnfj4dkHvLyNsHJTyBpHBihO+CqtqmVJz7I48pzhjNnvHsDh4iIDBQeM5FpmuuBNMdgMDr6mA3D6EjUqx1N2BnAjaZprg5otIH0zwcdi5KMtDsSj57ZeozK+hZ+kjHd7lBERCSAvC71aZrmA13ct9hxWwn036TcIX+HNe/5mvtha2jXnv/6QR5XnDOcuao9i4gMaKGbjYLpo4chJhnSv2t3JB49u+0YFfUt/OTqaV73FRGR/k0XyyjNgYNvwmU/h+gEMm451/nQ/Zfd79MhxjywMlDROdU1tfLEP/O4fPpwLpiQEvDziYiIvZSgtz0K4VFw0XIAElNjnA+NivdtAZDI0aMDEpqr5z+2Rm7/WLVnEZFBYXA3cdcUwa7/g7nfcl6x6siOIo7sKAJgw9ENbDi6wethqt9+m+q33w5YmE2tbTz10VEWpg1l3kTVnkVEBoPBXYP+dBW0NcOiO5x37dtyCoBp80fy0iFrEbUlk5d4PEzF/70IwJDrrgtImK/tOk1RdRMPLJ0TkOOLiEjoGbw16JYG2PEUzPgCDA3d6yi3t5us/mceM0cP4XPTtGqYiMhgMXgT9N511mUlL/6h3ZF49F52MTnFtdx+eZrW3BYRGUQGZ4I2TfhkFYw8DyZeYnc0Hq3aksvY5Fi+MDvwA9FERCR0DM4EfXwrFO2DC5dBCNdKdxwrZ8fxCm67bDIRut6ziMigMjgHiX3yuLUwyewbznpoyfLznNt/vuLPPh1u7F8e8Vtorlb9M4+UuEhuXDA+IMcXEZHQNfgSdFU+ZL8Fi/4NouLOejg2ofMa0Ckxvk1pikjx/9SnE2X1ZB4s4t+unEpc1OD7NYmIDHaDr910+5OACQt+0OXDB7cWcHBrAQCv5rzKqzmvej1k5cuvUPnyK/6Mkme2HSPcMPj2xRP9elwREekfBleCbm2CrGfgnOsgeUKXu2RvKyB7m5WgX8t5jddyXvN62KpXXqHqFf8l6LqmVtZuP8l1s0czckiM9wIiIjLgDK4Enf0m1JfB/FvsjsSjl7PyqWlq5eZLJtkdioiI2GRwJeidz0DSBEi7yu5IutXebvL01mPMGZfEBbqkpIjIoDV4EnR5HhzdYl1SMix0n/aHOaXkltRx8yWTtDCJiMggFrqZyt+yngMjDC74F7sj8WjNR0cZlhDNdVqYRERkUBsc83faWuCz52HaNTBkjMddv3hH5wUpHst4zKfDj1+9qk/hdTheVsemQyX8+OppREeE++WYIiLSPw2OBH14A9QVw7ybve4aGdWZGGMjYn06fFisb/t583+fniQ8zOBbF3Y9wlxERAaPwdHEvfMZSBwDUzO87rp3cz57N+cD8GL2i7yY/aLXMuUvvED5Cy/0KcTm1nbW7zzJVTNGMCpJU6tERAa7gZ+gq09DTqbV9xzuvcEgZ2cxOTuLAXj32Lu8e+xdr2Vq3tlAzTsb+hTmxgNFlNY2862LVHsWEZHBkKD3rAVMmPNNuyPx6IVPjzM2OZbPTRtudygiIhICBnaCNk3Y/SKMvwiGTrE7mm4dK63jo5wyvrFgPOFhmlolIiIDPUEX7oGSg3D+TXZH4tGL263BYbpqlYiIdBjYCXr3ixAeBbOutzuSbnUMDrt6xgituy0iIk4Dd5pVWyvsXQfTr4G4VJ+LXf/zdOf2miVrfCoz8blnexxeh47BYd/U4DAREXExcGvQue9DXUnIDw5bt/MkY5JiNDhMRETOMHAT9J4XITYVpi7uUbHP/nGCz/5xAoCn9z3N0/ue9lqm7MmnKHvyqR6HWFTdyD8Pl3B9+lgNDhMRkTMMzATdWA3Zb8F5X4eIqB4VPba3lGN7SwHYkr+FLflbvJap3byZ2s2bexzmq5+dot2Er6eP63FZEREZ2AZmgj70DrQ2wvk32h1Jt0zT5O9Z+aRPSCZteILd4YiISIgZmAl6/8uQNB7GLbA7km7tPVXF4aJavj5PtWcRETnbwEvQDZWQ8x6c+xUI4esp/31nPlERYXzxfM9X1xIRkcFp4E2zOvQ2tLfArK/1qnhEVOd3luiIaJ/KGDE9m7/c3NrO67tP8/lzR5IUG9mjsiIiMjgMvAS972VIngBj073v24Uv3THXuf14xuM+lZnwxOoeneP97GIq6ltYquZtERHpxsBq4q4vh7xN1sphody8nZXPiMRoLtPcZxER6cbAStDZb0J7a5+W9tz+1lG2v3UUgMd3P87ju73Xoksee4ySxx7z6fiV9c1sPlTMV+aO0dxnERHp1sBK0PtfgZRJMHqu1127k59dQX52BQCfFHzCJwWfeC1Tv+1j6rd97NPxN+wrpKXN5MtzxvY6RhERGfgGToKuL4e8LSHfvP367tNMHhbPeWOH2B2KiIiEsIGToI/8A8w2mPkluyPpVnF1I9vyyvjSnDEYIfwlQkRE7DdwEnT2m5A4GkZfYHck3XprbwGmCV+eM9ruUEREJMQNjGlWLQ2Q8z7M+QaE9e07R0xC57zk5Ohkn8qEJ/u23+u7TzNz9BCmjkjsVWwiIjJ4DIwEnbcFWupgxnV9PtS1y2c7tx+68iGfyox79C9e9zlZXs9nJypZsWRGr2MTEZHBY2A0cR96C6ISYdJldkfSrTf2nAbgi+ereVtERLzr/wm6vc26etW0xeDj0pyebHsll22v5ALw8M6HeXjnw17LFD/4Z4of/LPHfV7fdZr0CcmMT43rc4wiIjLw9f8m7vwdUFcCM77gl8MV5lU5t3eX7PapTMOuXR4fzymuIbuwht9+6dw+xSYiIoNH/69BZ78JYREwNcPuSLr1zt5CAK6breZtERHxTf9P0IfetvqeY30bSW2HDfsLSZ+QzMghPbvqlYiIDF79O0GX50FZDkxfYnck3TpRVs/+09Vce55qzyIi4rv+3Qd9JNO6nbbYb4dMSOkcaDYyfqRPZSJGjer2sQ37CwBYcl73+4iIiLjr3wk6ZyOkTIahU/x2yMW3znJu//GyP/pUZux/P9DtYxv2FTJrzBCN3hYRkR7pv03cLY1w9AO/1p79rbCqkawTlVyr2rOIiPRQ/03Qxz+C1gaY6t8E/cHaw3yw9jAAKz9dycpPV3otU3jffRTed99Z9//jgDV6W83bIiLSU/23iTsnE8KjYdKlfj1s6cla53Z2ebZPZZoOdr3fO3sLmToiQWtvi4hIj/XfGvSRjTDpEogKzb7d8rpmPjlaxpJZqj2LiEjP9c8EXXEMyo74vXnbnzYeKKTdVPO2iIj0Tv9M0Ec2WrchPEBs44EixibHMmvMELtDERGRfqh/9kHnboLkCTB0qt8PnTyys8l84pCJPpWJmjTpjJ8bW9r4MKeUm+aPxzAMf4YnIiKDRP9L0G2tcOxDmPUVCEDyu/LbnddrvnfRvT6VGf2H35/x80c5pTS2tHP1TN8WOhEREXHX/5q4C3dDUxVMvtzuSLqVebCY+KhwLkpLtTsUERHpp/pfgs7bYt1O/lxADr/p+Ww2PW9Nm7p3673cu/Ver2UKfnMPBb+5BwDTNHk/u4jPTR9OdER4QGIUEZGBr/81cR/9J4w4FxJGBOTwlUX1zu3j1cd9KtN87Jhze9+paoqqm9S8LSIifdK/atCtTXDi44DVnv0h82ARhgFXnjPc7lBERKQf618JOn+7tbxnCPc/v5ddRPqEFIYmRHvfWUREpBv9K0HnbQEjDCYusjuSLhVWNbLvVDVXzQhM87uIiAwe/asP+ug/YcwFEJscsFMMG5/g3J6ROsPDnp2iZ1r7vZddBECG+p9FRKSP+k+CbqqFUztg0R0BPc1lN053bq+4cIVPZUb9+tcAvP/0dsalxDJ9ZIKXEiIiIp71nybu/O3Q3ur3q1f5S2NLGx/llnL1jBFaPUxERPqs/9SgT2yz+p/HXRjQ02x8aj8Ai2+dxa8++BUAf7zsjx7LnPrlXRTXNNKYfA1XnKP+ZxER6bv+laBHngcxgb34RG1Fk3O7qK7IpzKthYXUlNUTNTRMq4eJiIhf9I8m7rYWyN8RsqO3ASobmrlwcipxUf3nO4+IiISu/pGgC/ZASz1MuNjuSLrU1NpOQ3Mbl0/X4iQiIuIf/SNBn9hq3U4IzRp0VUMLAJ9TghYRET/pH+2xx7dBahokBn5+8ai0JOf2nOFzfCqTnTqRoohGbtT0KhER8ZPQT9CmaQ0QO+faoJxu4fVTnNs/nfdTr/u3trXzwISrufa8UZpeJSIifhP6Tdylh6GhHCYstDuSLu3Or6SmsZXLp2t6lYiI+E/oJ+iTn1i3QRog9s6qvbyzai8Ad266kzs33elx/y2HSviPT5/h3Mf/KxjhiYjIIBH6CTp/B8QkwdCpQTldY20LjbXWoK/Kpkoqmyo97r/lcAmjjSbCaqqDEZ6IiAwSoZ+gT+2EsfMgBPt3y+ua2XOqiuTYKLtDERGRASa0E3RzHRQfgLHz7Y6kSx/llGKakBQXaXcoIiIywHgdxW0YxlKgEkg3TfOBLh5PB9IATNNc79foTu8Csx3GhWaC3ppbRmJ0BAnRoT8YXkRE+hePmcWRnDFNM9MwjDTDMDJM08x02225aZrLDcO4yzCMNNM08/wW3akd1u3YeX47pDfjZqQ4ty8afZHHfbfmlnJRWirxI0NzhTMREem/vFX9FgAvObbzgHTAmaANw1gG7HQk5rNq132WvwOSJ0L8ML8fujsLvjDZuX37nNu73S+/op7jZfV8b+Ekhl/6o2CEJiIig4i3Puhkt5+Huv08xfGv3DCMVYZhuO+PYRjLDMPYYRjGjpKSkp5Fd2pn6DZv55QBcMnU4H15EBGRwcNbgq4EvF0/Mdc0zUpgJ7DM/UHTNFebpjnfNM35w4f3YK3q6gKoPhX0AWJvPLqLNx7dBcDtmbdze2bXteituaUMS4hi+sgETty2jBO3nfXURUREes1bE/d2OmvRacDGLh7vSODJWAndP07ttG6D2P8M0Nrc7txuam3qch/TNPkot4yFU4ZhGAZmY2OwwhMRkUHCYw3aMSo7zTCMDMfPmQCGYWx0eTzZ5fHVfouscA8YYTBqtt8O6S85xbWU1DRxyRT3Fn8RERH/8Do/qKvBX6ZpLu7icffR3X1TsAeGToOoOL8e1h+25qr/WUREAit0Fyop3AOjz7c7ii59lFPK+NRYxqeG3pcHEREZGEJzhY26MmuA2KjgJ+hJsztrxZePu/ysx9vaTT7OK+O62aOd9yVccUUwQhMRkUEkNBN04W7r1oYa9AWfn+Dcvvm8m896fN+pKqobW1no0v889Pu3BiM0EREZREKzibtgj3VrQw3am47+50VT1P8sIiKBE5oJunAPJI2HOG9TsP3vlQezeOXBLABu2XALt2y45YzHP84rY9qIBIYnRjvvO/6d73L8O98NapwiIjKwhWaCLtgTkrXn1rZ2dh6v4KK04H9xEBGRwSX0EnRzHZTlhOQI7gMF1dQ2tXLhZM1/FhGRwAq9BF2cDZgw8jy7IznLp0fLAbhosmrQIiISWKGXoEsOWrcjZtobRxc+OVrOpKFxjBwSY3coIiIywIXeNKvigxARAymTbDn91HkjnNvXTLrGud3ebrL9WDmfP3fkWWUSr10SlNhERGTwCM0EPWwahIXbcvrZV4xzbn9jxjec24eLa6isb+GiLvqfU7/1raDEJiIig0cINnFnw3D7mrdbmttoaW4DoKG1gYbWBgA+ybP6ny/sov+5vaGB9oaG4AUpIiIDXmjVoBurrCU+R8ywLYQ3H7VWMbv+5+n8KPNHAKxZsoZPj5YzJimGcSmxZ5U5uWw5ABOfezZ4gYqIyIAWWjXokkPWrY016K6YpsknR8u5KG0ohmHYHY6IiAwCoZWgi0NzBHdeaR2ltU1dNm+LiIgEQmgl6JJsiIyD5Il2R3KGjvnPStAiIhIsIZagD8HQqRAWWmF9erScYQnRpA2LtzsUEREZJEJrkFh5LoxJtzWEGQs7r/P8lalfAeC/15dz4eSUbvufk66/PiixiYjI4BE6Cbq1GSpPwOwbbQ1j5qLOBP3VqV/ldGUDpyrf5weXTe62TPLXlKBFRMS/QidBVxwDsx2GTrE1jIbaZgBiE6KoaKzgg7xCAOZNTOm2TGtFBQARKd3vIyIi0hOhk6DLc63boVNtDWPDqn2ANQ/6Z5t/xrGyOmIjb2Xm6CHdljn1458AmgctIiL+EzqjscpyrNvUNHvjcFPb2Mqc8UlEhofOSyUiIgNf6GSdslyITYG40JnK1G6a1DW3eWzeFhERCYTQSdDlubY3b7urbWrFNE0laBERCbrQSdBleZBq7wAxdzWNrQBcMF4JWkREgis0Bom1NEJ1fkj0P593+VjndlzjZaS2NZISH+WxTMo3v+HxcRERkZ4KjQRdlW/dJk+wNw5g2vyRALS3mxw7MY3PnzvSa5kh110X6LBERGSQCZEEfcK6DYEEXVPeCEBRaytVzSVMGzPMa5mWggIAIkeP9rKniIiIb0IjQVeetG6Tx9sbB5C55gAALZ8bTsyYl3ivLJnb8Dy/+fRdKwDNgxYREf8JjUFiVSfBCIfEMXZH4rTzeAUR4WHERobbHYqIiAxCoZGgK0/AkDEQHhoVeoCdJypIjA6deEREZHAJkQR9EpLsb97u0NreTk5xLQkxStAiImKP0EjQVSdDov+5Q61j/rNq0CIiYhf7M1BbK1SfDokR3ABzF0/gtc9OEZYNt825hRgf+qBTb7klCJGJiMhgYn+Crj4FZlvINHFPPn8Yn+3IY/rIRJakfc6nMolXXRngqEREZLCxv4m7KnSmWAGUF9Rx7Fglc8Ylc7TqKEerjnot05R3lKY87/uJiIj4yv4adNUp6zZEatDvPnOAi8sM5k5I5vfbfgvAmiVrPJYp/K21n+ZBi4iIv9hfg66xVuEicZS9cTjUNlkDxOaMS7Y5EhERGczsT9C1RRAZD9GJdkcCQF1TK+FhBtNHJtgdioiIDGL2J+iaQkj0fkGKYKltaiU+KoKIcPtfGhERGbzsz0K1RZAYGheZaG5tp66pjYQYLe8pIiL2sn+QWE0hjJ5jdxQAHCqsYWt0C3csmgTAsvOX+VRu2A9vD2BUIiIyGNmfoGuLQmaA2K6TFRyPbOfiRdZFOxaOWehTufhFiwIZloiIDEL2NnE31UBzLSSERh/0rpNVTI+KIrrGGsmdXZ5Ndnm213KNBw/SePBgoMMTEZFBxN4EXVNk3YZQDfqqxig+XJcDwMpPV7Ly05VeyxXddz9F990f6PBERGQQsTdB1xZatyFQg65ubCG3pI4EXSBDRERCgM01aEeCDoFR3HvzqwCUoEVEJCTYXIPuaOK2vwa962QlAPFK0CIiEgLszUZ1pRAWATH2L6u5+2Qlk4fFE2EYdociIiJic4KuL4O4oRACSXHfqSrmT0rl4gvTnPf9JP0nPpUdfuedgQpLREQGqdBI0DYrq23idFUj540dwugpSc77546Y61P5uPQLAhWaiIgMUvb2QdeXh0SC3ne6GoDzxiZRkFtFQa41YGxX8S52Fe/yWr4+6zPqsz4LaIwiIjK42JygyyAu1dYQwGreBitBf/xqLh+/mgvAI1mP8EjWI17Llzz0ECUPPRTQGEVEZHAJgQRtfw16b34Vk4bGMSQm0u5QREREADsTdHs7NIRGE/feU1WcNzbJ+44iIiJBYl+CbqwEs932BF1R18ypygYlaBERCSn2Jej6cuvW5gS977TV/zxbCVpEREKIfdOs6susW5sHie3tGCA2xkrQl944zfnYigtX+HSMkb++2/+BiYjIoBYCCdrmGvSpKiakxpEUZw0QGz4+0fnYjNQZPh0jZubMgMQmIiKDl31N3A0V1m1sim0hgFWDdm3ePnmwnJMHreb3bae3se30Nq/HqNu6lbqtWwMWo4iIDD721aAbraZlYuzr+62sb+ZkeQPfvHCC874dbx8DYPzMVFbvWQ3AwjELPR6n9P89DkD8okWBCVRERAYd+2rQTdbqXUQPsS2EfaesGDRATEREQo2N06yqICoRwsJtC6FjBHfHADEREZFQYW+CjrGv9gxW//O4lFhS4qNsjUNERMSdzQna3prrPrcBYiIiIqHC3kFiNvY/VzW0cLysnhvnjz/j/iv+5Rzn9j0L7/HpWKN+9zu/xiYiImJfgm6qhoRRtp3+gOMSk7PGnPklIWVUvHN7ctJkn44VnebbfiIiIr4atH3QBwo6EvSZTdxH95RydE8pAJtPbmbzyc1ej1Xz/iZq3t/k9xhFRGTwsrGJu9rWPuiDBdUMS4hmeGL0Gffv2ngCgMnnD+OZ/c8AcMX4Kzweq3zNGgASr7rS/4GKiMigZE8N2jRt74M+cLqac8fYO4pcRESkO/Yk6JZ6MNtsq0E3t7aTU1zLzNGJ3ncWERGxgT0J2rnMpz012NySWprb2jl3tGrQIiISmmxK0I5lPm2qQR90DBBTghYRkVBlzyCxjhp0tD0J+sDpaqIjwpg8LP6sxzJuOde5ff9l9/t0vDEPrPRbbCIiImBXgm6usW6jE2w5/cHCas4ZlUhE+NkNCImpMc7tUfG+zdOOHD3ab7GJiIiAXU3czfXWbdTZNdhAM03TGsHdTfP2kR1FHNlRBMCGoxvYcHSD12NWv/021W+/7dc4RURkcLOpBl1n3UbGBf3URdVNVNS3MLObBL1vyykAps0fyUuHXgJgyeQlHo9Z8X8vAjDkuuv8GKmIiAxmNk2zciToqOA3cR8osPq/NQdaRERCmc1N3MGvQR8ssPq/Z4zSHGgREQldXhO0YRhLDcPIMAzjLi/7+T6U2cYm7gOnq5mQGkdiTGTQzy0iIuIrjwnaMIylAKZpZgKVhmFkdLNfBpDm81lb6iAiFsLCexCqfxwsqNYKYiIiEvK8DRJbALzk2M4D0oFM1x0Mw0hzPOa75jpbmrfrm1s5WlbHV+aO7XafJcvPc27/+Yo/+3TcsX95pM+xiYiIuPKWoJPdfh7axT5ppmlmGobR5QEMw1gGLAOYMGGCdWdzvS1TrLILazBNPNagYxOinNspMSk+HTcixbf9REREfOWtD7oSSO3uQcMwMhzN390yTXO1aZrzTdOcP3z4cOvOljqIDH6CPnDascSnhxHcB7cWcHBrAQCv5rzKqzmvej1u5cuvUPnyK/4JUkREBO816O101qLTgI1uj5c7+p+TgTTDMNJN08zyelabmrgPFlQzJCaCscmx3e6Tvc1KzjMXjea1nNcA+OrUr3o8btUrVnJO/tr1fopUREQGO481aNM012Ml3gzHz5kAhmFsdPyc5bgvlbObw7tnUxP3gYJqZoweQnfN8SIiIqHC60pipmk+0MV9i91+Xg2s9vmszXUQG9x+W9M0OVxYw9J544J6XhERkd6wbyWxINeg8ysaqGtu45xRWkFMRERCn30riQW5D/pwkbWC2Dmj7LmCloiISE/Yd7GMII/izi60EvT0kZ4XKfniHXOc249lPObTscevXtX7wERERLoQ/ARtmrY0cR8uqmFscqzXJT4jozpXN4uN6H60t6uwWN/2ExER8VXwm7hbm8BsD3oT96HCGs7x4QIZezfns3dzPgAvZr/Ii9kvei1T/sILlL/wQp9jFBER6RD8BO28UEbwatAtbe3kltR6bd4GyNlZTM7OYgDePfYu7x5712uZmnc2UPPOhj7HKSIi0iH4Cdp5LejgJeijpXW0tJm6xKSIiPQbNiToBus2Mnj9th0DxHxp4hYREQkFNvRBN1q3ETFBO+XhwhrCwwzShgd/9egYRqQAABYfSURBVDIREZHesGeQGAQ1QWcX1pA2LJ7oiOBff1pERKQ3gj/NqqMGHRnEGnRRDbPHJfm07/U/T3dur1myxqcyE597tldxiYiIdGfA16Drmlo5UV7PDB9GcIuIiIQK+waJRUQH5XRHimsBmO7jALHP/nGCz/5xAoCn9z3N0/ue9lqm7MmnKHvyqV7HKCIi4m7A16APFVYD+DzF6tjeUo7tLQVgS/4WtuRv8VqmdvNmajdv7nWMIiIi7mwcxR2cGvShwlpiI8MZnxLclctERET6YsBPszpUVM30kQmEhRlBOZ+IiIg/DIIm7lotUCIiIv2OfdOsgpCgy2qbKK1t8mkN7g4RUZ3fWaJ9bIY3YoI3ZUxERAYHGxJ0E2BAuOfLPvrDIccSnzNGDfG5zJfumOvcfjzjcZ/KTHhidc8CExER8cKGJu4Gq/ZsBL5P+FCRlaCnj0oI+LlERET8yZ4+6CCN4D5cVENKXCTDE3w/3/a3jrL9raMAPL77cR7f7b0WXfLYY5Q89liv4xQREXFnzyjuIA0QO1JUy7SRiRg9qK3nZ1eQn10BwCcFn/BJwSdey9Rv+5j6bR/3Ok4RERF39tSgg7AOt2maHCmuZdoINW+LiEj/M2Br0CW1TVQ1tChBi4hIvzRg+6BzHGtwT9NFMkREpB8K/jSrloag1KCdCbqHNeiYhM7pX8nRyT6VCU/2bT8RERFf2TMPOgg16CNFtSTGRDA8sWfnunb5bOf2Q1c+5FOZcY/+pUfnEBER8WbA9kEfKa5h2oiEHo3gFhERCRXBT9BtzRAeFfDT5BTXMm1Ez/uft72Sy7ZXcgF4eOfDPLzzYa9lih/8M8UP/rnH5xIREelO8Ju4g5Cgy+uaKa1tZtrIno/gLsyrcm7vLtntU5mGXbt6fB4RERFPBmQNumOA2FRNsRIRkX7KhgTdGvALZRwpttbg1hQrERHprwZkDfpIUS3xUeGMSdJlIEVEpH+yoQ+6JShN3FN7OYI7IaVzWtbI+JE+lYkYNarH5xEREfHEpkFigW/ivnTq8F6VXXzrLOf2Hy/7o09lxv73A706l4iISHcGXBN3VUMLRdVNGiAmIiL9WvATtNkW0Bp0b5f47PDB2sN8sPYwACs/XcnKT1d6LVN4330U3ndfr84nIiLSleA2cZumdRvQBN0xgrt3Cbr0ZK1zO7s826cyTQd9209ERMRXQa5BdyTowDVxHymqJToijHEpcQE7h4iISKAFN0Gb7dZtIBN0cS1ThicQHqY1uEVEpP+yqQYd2D7o3jZvi4iIhAqb+qADU4OubWrlVGUD3xwxvtfHSB7Z2TQ+cchEn8pETZrU6/OJiIh0ZUAl6FznGty9X+Lzym/PcG7fu+hen8qM/sPve30+ERGRrtjTxB0WmO8FzilWauIWEZF+LsiDxAJbgz5SXEtkuMHE1N6P4N70fDabnremTd279V7u3Xqv1zIFv7mHgt/c0+tzioiIuBtQTdw5xbVMGhpPRHjvv3dUFtU7t49XH/epTPOxY70+n4iISFcG1CjuvFJripWIiEh/N2DmQbe0tXOirJ604fF+P7aIiEiwDZiVxI6X1dPabqoGLSIiA8KAWYs7r8QawT2lj1exGja+s/yM1Bke9uwUPdO3/URERHw1YAaJ5ZbUAfS5ifuyG6c7t1dcuMKnMqN+/es+nVNERMTdgBkklldSy/DEaIbEBG4ZURERkWCxaR60/5NobkktacP6PkBs41P72fjUfgB+9cGv+NUHv/Ja5tQv7+LUL+/q87lFREQ6BLeJO0CDxEzTJLekji+cP7rPx6qtaHJuF9UV+VSmtbCwz+cVERFxNSBWEiuva6aqoUUjuEVEZMAIch90xzxo/zZx+2uAmIiISKgYEDXojilWU1WDFhGRAcKeaVZ+vppVbkkt0RFhjEmO7fOxRqUlObfnDJ/jU5nYuXP7fF4RERFXQR4k5uDnBJ1XUsfkYfGEhxl9PtbC66c4t38676c+lRnx85/1+bwiIiKugj8P2ggHo++J1FVuiS6SISIiA0vw+6D9XHtuam3jRLn/LpLxzqq9vLNqLwB3brqTOzfd6bVM/h0/Jv+OH/vl/CIiImDHPGg/J+gTZfW0m/itBt1Y2+Lcrmyq9KlMW6Vv+4mIiPgqyDVoAjJADPyXoEVEREJB8Pugw8L9esSOOdCTNQdaREQGEBsStP9r0KOGxJAQbc+AdBERkUAI/jzoAEyx8ucKYuNmpDi3Lxp9kU9l4hZe7Lfzi4iIgB3zoP2YoK2LZNTy1blj/XbMBV+Y7Ny+fc7tPpUZ/qMf+e38IiIiYMs0K//1QZfUNlHT2MoU9T+LiMgA06/7oPOcF8nw3wjuNx7dxRuP7gLg9szbuT3Tey36xG3LOHHbMr/FICIi0q/nQTunWI3wX4JubW53bje1NnnYs5PZ2Oi384uIiEA/nwedV1JHbGQ4o4fE+O2YIiIiocCGJm7/nTK3pJbJw+IJ88NFMkREREJJv16LO7ek1q/N2yIiIqGi3/ZBN7a0kV/RwNcuGOeX43WYNHuYc/vycZf7VCbhiiv8GoOIiEi/Xajk/7d377FV3vcdxz8/EhxsAhjH3EMCBgo0hFHjVoPdSAQrQ5GSbG7SdeqFViUb0ho1m4KySa2aPxYRqY1YpLbwD+3aMFJFhWgVdYSV0m6CZgFKgBYn+AIxxMbH+MKxsTHGv/1xnnMgxjvPY/u5HZ736x9++Dw/+6uvSL7+Pb/bucu9stbfBWKS9Km/fCDX/sqKr3jqc9/XvuprDAAAhDwHLd/2QWe3WLEHGgBwJyrYfdANbZktVgvL/S3Q+757XPu+e1yStLlmszbXbHbtc/6LX9L5L37J1zgAAMlWsIvEGtt7Na+0WCVFXJIBALjzFO4IOtXj6yUZAADEiWuBNsZUG2PWG2OeH+GzUufzamPMdm8/cfxz0NZaNbT1aJGPR3wCABAneQu0MaZakqy1tZK6jDHrhz3ylKQya+0bzvP5D6T26RV3W/qaegdusEAMAHDHcquWn5b0utNulFQpqTb7obV21y3PVkjamf/b+VOgswvE/LwkI2vx6pm59mcXfNZTnyl/tdH3OAAAyeZWLUuH/f2+kR4yxlRI6rDWNo7w2RZJWyRp1dwifwp0e3aLlf8F+uF1Nw8++fyyz3vqU/aFL/geBwAg2dzmoLsklXn4PtXW2mdG+sBau8taW2WtrbprwgRf5qAb2no0ueguzZp6z7i/13DXB27o+sANSVLfYJ/6Bvtc+wz19Wmoz/05AAC8civQ7+rmKLpC0sHhDxhjqq21Lzvt4XPUw/j0ijvVo4oZ98oY/y/J+MWr7+kXr74nSdpau1Vba7e69mne8oyat4z4+wkAAGOSt0A7i78qsoXXWSwmY8xB58/1krYbY44ZY465/jSfFok1pnrZYgUAuKO5Vsvs6HjY1zY4f9ZKWuT9x42/QPcN3NDFrj49PWP+uL4PAABxFvJJYhp3gW5yFogxggYA3MkiOElsfIvEGtudLVblHFICALhzhX8ftBlngU71yhj/L8nIWrZmTq79+OLHPfWZ9uSTgcQCAEiugrsPuiHVo7nTilVc5M+1lcMtX3uzQD+x+AlPfUr/mgINAPBXBPdBj69AB72Cu69nQH09A5Kkzv5OdfZ3uvYZ7OzUYKf7cwAAeBVBgR77yNdaq8ZUsJdk1Ow8rZqdpyVJzx16Ts8des61z8VvPKuL33g2sJgAAMlTUCPoS1e4JAMAkAwFVaAbU8FdkgEAQJwUVIFuYA80ACAhCmoOujHVo5KiuzR76iQfAwIAIH5C3get8Y2gnRXcQVySkbXiL+bl2k8vfdpTn+l/6+1aSgAAvCqoAt2Y6lHlA9N9DOZ2S6pm5dobF2701Gfqpk1BhQMASKiCmYPuv565JCPILVaSlO7oV7qjX5LU2tuq1t5W1z7XW1p0vaUl0LgAAMkSwQh6bHPQTe29sjb4BWK1u/8gSXrynyr1wn+/IEnavXF33j4fPb9NkvTgT/4j0NgAAMkR/gjajO1HNqZYwQ0ASI6CWcWd3QMd1CUZAADESeGMoNt7Na+0WCVF4b+VBwAgbBEU6LGNoBtSPbzeBgAkRvjD0TGMoDOXZPTqbyrnuT88Tqs2PJBrf/mhL3vqU7Z5c1DhAAASqiBWcafS19RzbVCLZgZ/BvfCleW59rr56zz1mfLoIwFFAwBIqoKYg67PXpJRHnyB7mztVWdrZsV4U3eTmrqbXPtca2zStUb35wAA8KogXnGHucXq0GvvS8rsg37xyIuS3PdBt37725LYBw0A8E9BjKAbU70qnsglGQCA5CiIfdCN7ZkV3BMmBHdJBgAAcVIQ26wyW6yCn38GACAuYv+Ku//6DV3o7FMFJ4gBABIk9tuszl++GsolGVlVmxbk2ltWbvHUp/wf/j6gaAAASRX7VdwNzharoK+ZzJq/vCzXXjN3jac+k9euDSocAEBCxf4Vd/aSjLBG0KnmtFLNaUlSXUed6jrqXPv0nzmj/jNngg4NAJAgsR9B17f1aO60SaFdkvE/PzsrKbMPevv/bpfkvg/60r+9JIl90AAA/8R+m1V9qkeLZ00JKBgAAOIp1q+4h4as6tt6tCSEM7gBAIiTWO+DvtjVp/7rQ1pMgQYAJEysR9D1bZkFYoygAQBJE+t90GfbMqupwxxB//ETi3LtZyuf9dRnxje/GVQ4AICEimAVt/fztOvbelR+7z0qLSkKMKCPm7NoWq69auYqT31KKj8VVDgAgISK9Rz02QgWiLU0dKuloVuSdKLthE60nXDtc/X473T1+O+CDg0AkCCxnYO2NrOCO+wFYr/d36Df7m+QJO04vkM7ju9w7ZN65RWlXnkl6NAAAAkS233QbelrSvcPasksFogBAJIntiPos5cyK7jZYgUASKLYzkHXR7CCGwCAuIjvCLqtR9OKJ2rGvfcEHBAAAPETwT5obwU6u0DMjGJblh/+9Kklufa2z2zz1GfWv7wQVDgAgISK7W1W9W092vDJWQEHc7sZ829ezLGsbJmnPpOWLw8qHABAQsVyDrqjd0CXewcimX9uPtOh5jMdkqQjHx3RkY+OuPbpPXxYvYcPBx0aACBBYjmCPnspugViRw+ckyTNX16mXSd3SZLWzF2Tt0/7D34oSZq8dm2gsQEAkiOW+6DrWjMFevmcqUFHAwBALMVyFXdda1qlJRM1cworuAEAyRTLOei61itaNntK6Cu4AQCIiwgKdP6iOzRk9X5rWstm83obAJBcIS8SM64F+kJnn64O3NCy2VPyPheUdX+3NNf+1ppveeoz+zvfCSocAEBChVugPbyxPtN6RZK0LKIFYtNnT861F05b6KnPPRXengMAwKuQX3G7V+i6lrSMkT4R0S1WTSfb1XSyXZJ0qPmQDjUfcu2TfvtXSr/9q4AjAwAkSfj7oF28f+mKHiwrUUlRNKGdOPihJGnhynL9+Pc/liStm78ub5+O3bslSVMefSTQ2AAAyRHLETQLxAAASRdugXapz30DN9R0uVfL5kSzQAwAgLiI1Qj6g0tpWavIVnADABAX4e+DzuPUxW5J0kNzp0UcCQAA0Qp/H3Qepy92q7Rkou6fXhxSPLdbv/mTufZLf/aSpz5zX94eVDgAgISK1T7okxe69fC8aZEe8TmlbFKuPXvybE99Js6ZE1Q4AICEis0cdP/1G/rgUloPz4v29fbZo5d09uglSVJNU41qmmpc+1w5cEBXDhwIOjQAQILEZh90XWtag0NWK++PtkCf/vVFSdKSqll6/f3XJUkbF27M26fzP/dKkqZu2hRscACAxIjNIrFTF7okSSsiHkEDABAHIe+D/v9fcZ+62K2yyUWaVxrdAjEAAOIiNiPo95q7tSLiBWIAAMRFLBaJdV+9rg/a0qp6cHq44QAAEFOxWCR2/MNOWStVLYi+QG98ZkWu/b113/PUZ96/7wgqHABAQoW8D3rkEfS75zp09wSjVfNLQw1nJMX3FuXa0yd5+4Xh7unR/2IBALizxGIO+uj5Tj00b1pkV0ze6szhFp053CJJ2l+/X/vr97v26fr5PnX9fF/QoQEAEiTyOeiBwSG919wVm/nnuiMtqjuSKdBv1r+pN+vfdO3TvW+fuvdRoAEA/ol8BH38w05dGxzSZxaWRR0KAACxEfk+6N98kNLdE4zWLLov1FAAAIizyEfQvzmbUuUD0zV10sSoQwEAIDYinYNu77mm0xev6M8/UR5uGAAAxFyky6Zr/5C5NWrd0plRhvExj/3jH+Xa31//fU995u/aGVQ4AICEinQf9H+d/EgL7ivRQ3OnhhpGPhOL7sq1i+/2di74hGLODwcA+CuyOei2K/060nBZj62cG6vzt08duqBThy5IkvbW7dXeur2ufTr27FHHnj1BhwYASJDI5qB/+s6HspKqV98fbggu6o+1qf5YmyTprXNv6a1zb7n2Sf+yRulf1gQdGgAgQULeZpX54+rAoPa8c16PLp2pBeWTQw0BAIBC4DoHbYypltQlqdJa+/JoPx/2tCTp1bfr1d4zoK2PLB5DyAAA3PnyjqCd4itrba2kLmPM+tF8PpLX3jmvH/66QZ9bfb9Wx+R4TwAA4sbtFfenJTU67UZJlaP8/GOu9A/qX/ed1p8sKteLj6/I9ygAAInm9op7+P2Pw8/jdPtcxpgtkrY4f72m7Y+dPi/pta97jjEa/3yz+SP9yFufn/4kkFBGqVxSe9RB3OHIcTjIc/DIcfCWjrWjW4HukpTvFgu3z2Wt3SVplyQZY45aa6tGFSFGhRwHjxyHgzwHjxwHzxhzdKx93V5xv6ubo+QKSQdH+TkAABiDvAXaWvuGpIrs4i9nMZiMMQfzfQ4AAMbHdZvVSFunrLUb8n2ex65RPIuxIcfBI8fhIM/BI8fBG3OOjbXWz0AAAIAPIr8PGgAA3C6UAm2MqTbGrDfGPB/Gz0sCJ58Hh33ttjyT+7ExxpQ6uas2xmy/5evk2EdO3taT43CQ5+AYYzqNMcf8zHHgBXosp43B3fAFeSPlmdyPy1OSypyFkDLGbCHH/jLGVEra4OSu0hhTQY6D4+StwmmTZ/99zlq72lq7TfInx2GMoEd12hjGbKQ8k/sxstbucvbwS5n/qdWKHPvKWnvcWrvNGFMqqdFa2yhyHAhjTIVu5lAiz0EodfKcNe4ch1GgXU8bgy9GyjO5HyfnP7gOp3iQ42BUKXPokUSOg1Lh/BvOIs/+K5PUYYzZ6fx93DkOo0C7njYGX4yUZ3I/ftXW2mecNjkOgPO6r/SWm/HIsY+MMetHOKOCPPvMeevWpcyra1/+Lbvug/YBp42FY6Q8l47wNXhkjKnO7vN35orIsY+cxTQNzlRC9n9c5Nh/Hc6/31JlDpaqFHn2lXPnRIezZuWy8+Vx5zjwETSnjQXD+Q2t6pZFB7flmdyPnZOz7c6qzGMSOQ7ATkmN2eLhjEDIsc+cuf5aZX4BKnW+Rp799TPdsujLWvuGHznmoBIAAGKIg0oAAIghCjQAADFEgQYAIIYo0AAAxBAFGgCAGKJAAwAQQxRoAABiiAINAEAM/R8nfP3h4If2kAAAAABJRU5ErkJggg==\n",
"text/plain": [
"