{
"cells": [
{
"cell_type": "markdown",
"id": "2d4263f9",
"metadata": {},
"source": [
"# Euler waveguide bend"
]
},
{
"cell_type": "markdown",
"id": "03eb4470",
"metadata": {},
"source": [
"Efficiently routing light in a densely packed photonic chip has been a central topic in the photonic industry. This inevitably requires the use of waveguide bends of various angles and radii. Electromagnetic waves can travel in straight waveguides for a long distance with very little loss. However, when it enters a waveguide bend, significant reflection and leakage could occur. \n",
"\n",
"The most common waveguide bends are circular bends. A silicon waveguide bend typically has a loss in the order of 0.01 dB. This loss is sufficiently small for many applications. However, in cases where a large number of bends are used, the total loss due to the bends can be quite large. Therefore, new methods to reduce bending loss is needed. Recently, [T. Fujisawa et al.](https://opg.optica.org/oe/fulltext.cfm?uri=oe-25-8-9150&id=362937) demonstrated that a waveguide bend following the clothoid curve, also known as the Euler bend, yields a much lower loss compared to a circular bend due to its smooth curvature transition. In this example notebook, we model a 90 degree Euler waveguide bend and compare its loss to a conventional circular bend. The loss of the Euler waveguide bend is found to be several times smaller compared to the circular bend of the same effective radius at the telecom wavelength.\n",
"\n",
""
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "b27b7f93",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T20:44:58.720991Z",
"iopub.status.busy": "2023-03-27T20:44:58.720590Z",
"iopub.status.idle": "2023-03-27T20:44:59.919494Z",
"shell.execute_reply": "2023-03-27T20:44:59.918838Z"
}
},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import scipy.integrate as integrate\n",
"from scipy.optimize import fsolve\n",
"\n",
"import tidy3d as td\n",
"import tidy3d.web as web\n"
]
},
{
"cell_type": "markdown",
"id": "6171eabc",
"metadata": {},
"source": [
"## Clothoid Bend vs. Circular Bend"
]
},
{
"cell_type": "markdown",
"id": "9f1647e0",
"metadata": {},
"source": [
"The expression for a clothoid curve (Euler curve) whose starting point is at the origin is given by \n",
"\n",
"$$\n",
"x = A \\int_{0}^{L/A} cos(\\frac{\\theta^2}{2})d\\theta,\n",
"$$\n",
"$$\n",
"y = A \\int_{0}^{L/A} sin(\\frac{\\theta^2}{2})d\\theta,\n",
"$$\n",
"and \n",
"$$\n",
"RL=A^2,\n",
"$$\n",
"where $A$ is the clothoid parameter, $L$ is the curve length from $(0,0)$ to $(x,y)$, and $1/R$ is the curvature at $(x,y)$. At the end point of the clothoid curve, the curve length is $L_{max}$ and the curvature is $1/R_{min}$. Unlike a circular curve, the curvature of a clothoid curve varies linearly from 0 to $1/R_{min}$. A 90 degree Euler waveguide bend is constructed by connecting two pieces of clothoid curves with a circular curve. One clothoid curve starts at $(0,0)$ and the other starts at $(R_{eff},R_{eff})$, where $R_{eff}$ is the effective waveguide bending radius. To ensure a smooth transition of curvature, we choose a $L_{max}$ such that the derivative is continuous at the connecting points.\n",
"\n",
"In this example notebook, we model waveguide bends with a 4 $\\mu m$ effective bending radius. First, we plot the shapes of the two types of bends to get a sense of how the Euler bend and the circular bend differ. More specifically, we try the case with $A=2.4$."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "bf5fb3bd",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T20:44:59.921866Z",
"iopub.status.busy": "2023-03-27T20:44:59.921496Z",
"iopub.status.idle": "2023-03-27T20:44:59.938680Z",
"shell.execute_reply": "2023-03-27T20:44:59.938086Z"
}
},
"outputs": [],
"source": [
"R_eff = 4 # effective radius of the bend\n",
"A = 2.4 # clothoid parameter\n"
]
},
{
"cell_type": "markdown",
"id": "7a80be45",
"metadata": {},
"source": [
"An important step in constructing the Euler bend is to determine $L_{max}$. Here we do it numerically by first setting $L_{max}=0$. $L_{max}$ is then slowly increased at some small step. At each increment, we check if the tangent curve is perpendicular to that of the circular curve. Once this condition is met, we obtain the correct value of $L_{max}$ as well as the coordinates of the clothoid."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "adea8def",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T20:44:59.940627Z",
"iopub.status.busy": "2023-03-27T20:44:59.940462Z",
"iopub.status.idle": "2023-03-27T20:45:00.023715Z",
"shell.execute_reply": "2023-03-27T20:45:00.023146Z"
}
},
"outputs": [],
"source": [
"L_max = 0 # starting point of L_max\n",
"precision = 0.05 # increasement of L_max at each iteration\n",
"tolerance = 0.01 # difference tolerance of the derivatives\n",
"\n",
"# determine L_max\n",
"while True:\n",
" L_max = L_max + precision # update L_max\n",
" Ls = np.linspace(0, L_max, 50) # L at (x1,y1)\n",
" x1 = np.zeros(len(Ls)) # x coordinate of the clothoid curve\n",
" y1 = np.zeros(len(Ls)) # y coordinate of the clothoid curve\n",
"\n",
" # compute x1 and y1 using the above integral equations\n",
" for i, L in enumerate(Ls):\n",
" y1[i], err = integrate.quad(lambda theta: A * np.sin(theta**2 / 2), 0, L / A)\n",
" x1[i], err = integrate.quad(lambda theta: A * np.cos(theta**2 / 2), 0, L / A)\n",
"\n",
" # compute the derivative at L_max\n",
" k = -(x1[-1] - x1[-2]) / (y1[-1] - y1[-2])\n",
" xp = x1[-1]\n",
" yp = y1[-1]\n",
" # check if the derivative is continuous at L_max\n",
" R = np.sqrt(\n",
" ((R_eff + k * xp - yp) / (k + 1) - xp) ** 2\n",
" + (-(R_eff + k * xp - yp) / (k + 1) + R_eff - yp) ** 2\n",
" )\n",
" if np.abs(R - A**2 / L_max) < tolerance:\n",
" break\n",
"\n",
"# after L_max is determined, R_min is also determined\n",
"R_min = A**2 / L_max\n"
]
},
{
"cell_type": "markdown",
"id": "2105c43c",
"metadata": {},
"source": [
"After determining the first piece of the clothoid curve, the second piece can be obtained simply by mirroring it with respect to $y=-x+R_{eff}$."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "eed38c95",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T20:45:00.025841Z",
"iopub.status.busy": "2023-03-27T20:45:00.025671Z",
"iopub.status.idle": "2023-03-27T20:45:00.043303Z",
"shell.execute_reply": "2023-03-27T20:45:00.042773Z"
}
},
"outputs": [],
"source": [
"# getting the coordinates of the second clothoid curve by mirroring the first curve with respect to y=-x+R_eff\n",
"x3 = np.flipud(R_eff - y1)\n",
"y3 = np.flipud(R_eff - x1)\n"
]
},
{
"cell_type": "markdown",
"id": "de05e33b",
"metadata": {},
"source": [
"The last step is to determine the circular curve connecting the clothoid curves. This can be done simply by enforcing a circle $(x-a)^2+(y-b)^2=R_{min}^2$ to pass the endpoints of the clothoid curves. Here, we use the `fsolve` function from `scipy.optimize` to solve for $a$ and $b$."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "108b88fb",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T20:45:00.045345Z",
"iopub.status.busy": "2023-03-27T20:45:00.045181Z",
"iopub.status.idle": "2023-03-27T20:45:00.063608Z",
"shell.execute_reply": "2023-03-27T20:45:00.063067Z"
}
},
"outputs": [],
"source": [
"# solve for the parameters of the circular curve\n",
"def circle(var):\n",
" a = var[0]\n",
" b = var[1]\n",
" Func = np.empty((2))\n",
" Func[0] = (xp - a) ** 2 + (yp - b) ** 2 - R_min**2\n",
" Func[1] = (R_eff - yp - a) ** 2 + (R_eff - xp - b) ** 2 - R_min**2\n",
" return Func\n",
"\n",
"\n",
"a, b = fsolve(circle, (0, R_eff))\n",
"\n",
"# calculate the coordinates of the circular curve\n",
"x2 = np.linspace(xp + 0.01, R_eff - yp - 0.01, 50)\n",
"y2 = -np.sqrt(R_min**2 - (x2 - a) ** 2) + b\n"
]
},
{
"cell_type": "markdown",
"id": "a469aadb",
"metadata": {},
"source": [
"Now we have obtained the coordinates of the whole Euler bend, we can plot it with a conventional circular bend to see the difference. Compared to the circular bend, we can see the Euler bend has a smaller curvature at $(0,0)$ and $(R_{eff},R_{eff})$. This allows a slower transition to and from the straight waveguides, which leads to smaller reflection and scattering loss."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "418298bf",
"metadata": {
"execution": {
"iopub.execute_input": "2023-03-27T20:45:00.065490Z",
"iopub.status.busy": "2023-03-27T20:45:00.065354Z",
"iopub.status.idle": "2023-03-27T20:45:00.273767Z",
"shell.execute_reply": "2023-03-27T20:45:00.273219Z"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiUAAAGiCAYAAAA4MLYWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABD/0lEQVR4nO3deXxU1f3/8dfMJJnsCSGBBEhYw06QLYDgBipQta6Ur9UKSl0oKBSpikvFKoaqqFX54VIB61K0VrRVgSIFUZRdlB3ZDEIgQMieTJKZ+/vjQjAFyTZ3ZkLez8djHpl75845n8GBvL3n3HNthmEYiIiIiPiZ3d8FiIiIiIBCiYiIiAQIhRIREREJCAolIiIiEhAUSkRERCQgKJSIiIhIQFAoERERkYCgUCIiIiIBQaFEREREAoJCiYiIiAQES0PJtGnTsNlsVR6dO3e2sksRERFpoIKs7qBbt2589tlnpzoMsrxLERERaYAsTwhBQUEkJiZa3Y2IiIg0cJaHku+//54WLVoQGhrKwIEDycjIICUl5YzHulwuXC5X5bbH4yEnJ4emTZtis9msLlVERES8wDAMCgoKaNGiBXZ7zWeK2AzDMKwqauHChRQWFtKpUyeysrJ47LHHOHDgAJs3byYqKuq046dNm8Zjjz1mVTkiIiLiQ/v376dVq1Y1Pt7SUPK/cnNzad26Nc8++yxjx4497fX/PVOSl5dHSkoK+/fvJzo62ldlioiISD3k5+eTnJxMbm4uMTExNX6fT2edxsbG0rFjR3bt2nXG151OJ06n87T90dHRCiUiIiINTG2nXvh0nZLCwkJ2795NUlKSL7sVERGRBsDSUDJlyhQ+//xz9u3bx1dffcW1116Lw+HgxhtvtLJbERERaYAsHb758ccfufHGGzl27BgJCQkMHjyYVatWkZCQYGW3IiIi0gBZGkrmz59vZfMiIuIlhmFQUVGB2+32dynSQAQHB+NwOLzappZXFRFp5MrKysjKyqK4uNjfpUgDYrPZaNWqFZGRkV5rU6FERKQR83g87N27F4fDQYsWLQgJCdFilVItwzA4cuQIP/74I6mpqV47Y6JQIiLSiJWVleHxeEhOTiY8PNzf5UgDkpCQwL59+ygvL/daKPHpJcEiIhKYarMUuAjUfg2SmtC3UERERAKCQomIiIgEBIUSERFptJYvX47NZiM3N9frbV988cVMmjTJ6+3WxJgxY7jmmmv80nd9KJSIiEiDNGbMGGw222mP4cOH+7s0qSNdfSMiIg3W8OHDmTt3bpV9Z7qxq5XKysoICQnxaZ/nKp0pERGRKgzDoLiswucPwzBqXavT6SQxMbHKo0mTJgDs27cPm83Gxo0bK4/Pzc3FZrOxfPnyn23zyy+/5IILLiAsLIzk5GTuueceioqKKl9v06YNjz/+OLfccgvR0dHccccdP9tWRUUFEyZMICYmhvj4eB555JEqn9PlcjFlyhRatmxJREQE/fv3r1LbvHnziI2NZfHixXTp0oXIyEiGDx9OVlZW5TFut5vJkycTGxtL06ZNue++++r0ZxkIdKZERESqKCl30/WPi33e79Y/DSM8xL+/lnbv3s3w4cN54oknmDNnDkeOHGHChAlMmDChyhmZZ555hj/+8Y88+uijZ23vjTfeYOzYsaxZs4Z169Zxxx13kJKSwu233w7AhAkT2Lp1K/Pnz6dFixYsWLCA4cOHs2nTJlJTUwEoLi7mmWee4c0338Rut3PzzTczZcoU3n77bQBmzpzJvHnzmDNnDl26dGHmzJksWLCAIUOGWPSnZB2FEhERabA+/vjj05Y5f/DBB3nwwQfr1F5GRgY33XRT5QTV1NRUXnjhBS666CJmz55NaGgoAEOGDOHee++ttr3k5GSee+45bDYbnTp1YtOmTTz33HPcfvvtZGZmMnfuXDIzM2nRogUAU6ZMYdGiRcydO5cnn3wSgPLycl5++WXat28PmEHmT3/6U2Ufzz//PFOnTuW6664D4OWXX2bxYt+HSm9QKBERkSrCgh1s/dMwv/RbW5dccgmzZ8+usi8uLq7ONXz77bd89913lWchwBzOOrkcf5cuXQDo27dvjdobMGBAlUXGBg4cyMyZM3G73WzatAm3203Hjh2rvMflctG0adPK7fDw8MpAApCUlER2djYAeXl5ZGVl0b9//8rXg4KC6Nu3b4McwlEoERGRKmw2m9+HUWoqIiKCDh06nPG1k6vU/vSXc3l5+VnbKyws5M477+See+457bWUlJQq/dZXYWEhDoeD9evXn7ZM+0/P/gQHB1d5zWazNcjAURMN41snIiJSSwkJCQBkZWXRq1cvgCqTXs+kd+/ebN269WeDTm2tXr26yvaqVasqb2DXq1cv3G432dnZXHDBBXVqPyYmhqSkJFavXs2FF14ImJNr169fT+/evetdv68plIiISIPlcrk4dOhQlX1BQUHEx8cTFhbGgAEDmDFjBm3btiU7O5uHH374rO3df//9DBgwgAkTJvDb3/6WiIgItm7dypIlS3jppZdqXV9mZiaTJ0/mzjvvZMOGDbz44ovMnDkTgI4dO3LTTTdxyy23MHPmTHr16sWRI0dYunQpaWlpXHHFFTXqY+LEicyYMYPU1FQ6d+7Ms88+a8licL6gUCIiIg3WokWLSEpKqrKvU6dObN++HYA5c+YwduxY+vTpQ6dOnXjqqae4/PLLf7a9tLQ0Pv/8cx566CEuuOACDMOgffv2jBo1qk713XLLLZSUlJCeno7D4WDixIlVLiGeO3cuTzzxBPfeey8HDhwgPj6eAQMGcOWVV9a4j3vvvZesrCxGjx6N3W7ntttu49prryUvL69ONfuTzQjggan8/HxiYmLIy8sjOjra3+WIiJxzSktL2bt3L23btq28skSkJs723anr728tniYiIiIBQaFEREREAoJCiYiIiAQEhRIREREJCAolIiIiEhAUSkRERCQgKJSIiIhIQFAoERERkYCgUCIiIiIBQaFERETOaTabjQ8//NDSPpYvX47NZrPknjNjxozhmmuu8Xq7NTFt2jTOO+88n/WnUCIiIg3WoUOHuPvuu2nXrh1Op5Pk5GSuuuoqli5dWnlMVlYWI0aM8GOVUlO6IZ+IiDRI+/btY9CgQcTGxvL000/To0cPysvLWbx4MePHj6+8KV9iYuJZ2ykvLyc4ONgXJZ9VWVkZISEh/i7Dr3SmREREzqys6Ocf5aW1OLak+mPr4He/+x02m401a9Zw/fXX07FjR7p168bkyZNZtWpV5XE/Hb7Zt28fNpuNd999l4suuojQ0FDefvttwLyjcLdu3XA6nSQlJTFhwoQq79m4cWNlm7m5udhsNpYvX37G2o4dO8aNN95Iy5YtCQ8Pp0ePHvz973+vcszFF1/MhAkTmDRpEvHx8QwbNuysn/exxx4jISGB6Oho7rrrLsrKyipf83g8ZGRk0LZtW8LCwujZsyfvv/9+5esnh5eWLl1K3759CQ8P5/zzz2fHjh1V+pgxYwbNmzcnKiqKsWPHUlr6P/+dLaYzJSIicmZPtvj511Ivh5v+cWr76Q5QXnzmY1sPhls/ObX9fA8oPlb1mGl5tSotJyeHRYsWMX36dCIiIk57PTY29qzvf+CBB5g5cya9evUiNDSU2bNnM3nyZGbMmMGIESPIy8tj5cqVtarpp0pLS+nTpw/3338/0dHRfPLJJ/zmN7+hffv2pKenVx73xhtvMG7cuGr7Wrp0KaGhoSxfvpx9+/Zx66230rRpU6ZPnw5ARkYGb731Fi+//DKpqamsWLGCm2++mYSEBC666KLKdh566CFmzpxJQkICd911F7fddltl3++99x7Tpk1j1qxZDB48mDfffJMXXniBdu3a1fnPobYUSkREpMHZtWsXhmHQuXPnOr1/0qRJXHfddZXbTzzxBPfeey8TJ06s3NevX78619eyZUumTJlSuX333XezePFi3nvvvSqhJDU1laeeeqra9kJCQpgzZw7h4eF069aNP/3pT/zhD3/g8ccfp7y8nCeffJLPPvuMgQMHAtCuXTu+/PJLXnnllSqhZPr06ZXbDzzwAFdccQWlpaWEhoby/PPPM3bsWMaOHVv5Z/LZZ5/59GyJQomIiJzZgwd//jWbo+r2H3ad5dj/mSkwaVPdazrBMIx6vb9v376Vz7Ozszl48CBDhw6tb1mV3G43Tz75JO+99x4HDhygrKwMl8tFeHh4leP69OlTo/Z69uxZ5b0DBw6ksLCQ/fv3U1hYSHFxMZdddlmV95SVldGrV68q+9LS0iqfJyUlAebnT0lJYdu2bdx1111Vjh84cCDLli2rUY3eoFAiIiJnFnL6sIjPj/0Zqamp2Gy2ysmstfXTIZ+wsLCzHmu3m6Hqp0GovLz8rO95+umn+ctf/sLzzz9Pjx49iIiIYNKkSVXmgfxvHXVVWFgIwCeffELLli2rvOZ0Oqts/3RCr81mA8z5KIFCE11FRKTBiYuLY9iwYcyaNYuiotMnytZmvZCoqCjatGlT5TLin0pISADMS4tP+umk1zNZuXIlV199NTfffDM9e/akXbt27Ny5s8Y1/a9vv/2WkpJTE4ZXrVpFZGQkycnJdO3aFafTSWZmJh06dKjySE5OrnEfXbp0YfXq1VX2/XTCsC/oTImIiDRIs2bNYtCgQaSnp/OnP/2JtLQ0KioqWLJkCbNnz2bbtm01bmvatGncddddNGvWjBEjRlBQUMDKlSu5++67CQsLY8CAAcyYMYO2bduSnZ3Nww8/fNb2UlNTef/99/nqq69o0qQJzz77LIcPH6Zr1651+qxlZWWMHTuWhx9+mH379vHoo48yYcIE7HY7UVFRTJkyhd///vd4PB4GDx5cOVE3Ojqa0aNH16iPiRMnMmbMGPr27cugQYN4++232bJliya6ioiIVKddu3Zs2LCB6dOnc++995KVlUVCQgJ9+vRh9uzZtWpr9OjRlJaW8txzzzFlyhTi4+O54YYbKl+fM2cOY8eOpU+fPnTq1ImnnnqKyy+//Gfbe/jhh9mzZw/Dhg0jPDycO+64g2uuuYa8vNpdZXTS0KFDSU1N5cILL8TlcnHjjTcybdq0ytcff/xxEhISyMjIYM+ePcTGxtK7d28efPDBGvcxatQodu/ezX333UdpaSnXX38948aNY/HixXWquS5sRn1nC1koPz+fmJgY8vLyiI6O9nc5IiLnnNLSUvbu3Uvbtm0JDQ31dznSgJztu1PX39+aUyIiIiIBQaFEREREAoJCiYiIiAQEhRIREREJCAolIiJS7xVSpfGx4jujUCIi0oidXOGzuPhnbqYn8jNOrk7rcDiqObLmtE6JiEgj5nA4iI2NJTs7G4Dw8PDK5cdFfo7H4+HIkSOEh4cTFOS9KKFQIiLSyCUmJgJUBhORmrDb7aSkpHg1xCqUiIg0cjabjaSkJJo1a1btjeZETgoJCam8WaG3KJSIiAhgDuV4c36ASG1poquIiIgEBIUSERERCQg+CyUzZszAZrMxadIkX3UpIiIiDYhPQsnatWt55ZVXSEtL80V3IiIi0gBZHkoKCwu56aabeO2112jSpMlZj3W5XOTn51d5iIhIwzZr2S5umP0VH35zwN+lSICzPJSMHz+eK664gksvvbTaYzMyMoiJial8JCcnW12eiIhYLHbXhww78CK2H1b6uxQJcJaGkvnz57NhwwYyMjJqdPzUqVPJy8urfOzfv9/K8kRExAe+ib2M6RU3k9Wkj79LkQBn2Tol+/fvZ+LEiSxZsoTQ0NAavcfpdOJ0Oq0qSURE/ED3+pOasiyUrF+/nuzsbHr37l25z+12s2LFCl566SVcLpcW6RERaUR0Rx2pjmWhZOjQoWzatKnKvltvvZXOnTtz//33K5CIiDQSf9h9C3eEVLCu5GWgvb/LkQBmWSiJioqie/fuVfZFRETQtGnT0/aLiMg5yuOhmesHEu0Gqx0anpez04quIiJindJc7JiTSsqCo/1cjAQ6n96Qb/ny5b7sTkRE/K3kOACFRigee7Cfi5FApzMlIiJinZJcAHKJ9G8d0iAolIiIiHVOnCnJMyL8XIg0BAolIiJinZIcAI4bkdh0UbBUQ6FERESs4wjhUEgbMo3m/q5EGgCFEhERsU63a/hz+zd4sOK3/q5EGgCFEhERsZTnxDrzdruGb+TsFEpERMRSnhP3vlEmker4dJ0SERFpZD64k6l7V1FoH4nd1s3f1UiA05kSERGxzrFdtCjbRzAVGr6RaimUiIiIdU6sU3LciNLwjVRLoURERKxzIpTkEondplQiZ6dQIiIi1vB4oDQXgFwjAodCiVRDoURERKzhygPDA0AekSiTSHUUSkRExBonhm5KbaGUEYxDk0qkGrokWERErOEuh4QuHMx1A2hOiVRLZ0pERMQaCZ1g/CoebvYigIZvpFoKJSIiYqmTy8xr+Eaqo1AiIiKW8phzXTV8I9VSKBEREWt8/f9g1gCuLPwHoFAi1VMoERERa+RmwpFtRHjyAd2QT6qnUCIiItYoyQEg14gCICRIv3Lk7PQNERERa1QuMR8BKJRI9fQNERERa5y8GZ/nRChx6FeOnJ2+ISIiYo1ic/gmR8M3UkP6hoiIiDVOnCk56g4HIFhnSqQaWmZeRES8zzAgugU4QjhaaA7fKJRIdfQNERER77PZYNxKmLKDLHcMAE4N30g19A0RERFLlbvNJV11pkSqo2+IiIh434n73Xg8BhUe87kmukp1NKdERES8779PwJYFuNN/ByQBEOzQkq5ydoqtIiLifYc3Q85uKtwVlbt0pkSqo2+IiIh4X/ZWAFxxnSp3Bdv1K0fOTt8QERHxLleBeTM+oCg6FYDQYDt23ZFPqqFQIiIi3pW93fwZmUihw7wcOCJEUxilegolIiLiXSeGbmjelaIyc05JWIjDjwVJQ6FQIiIi3nUylDTrSkmZG9CZEqkZhRIREfGuqCRI6glJ51Hk0pkSqTlFVxER8a7Bk8wHULLxAAARToUSqZ7OlIiIiGWKTwzfhAXr/4GlegolIiLiPWXF4C6v3Dw5fKMzJVITCiUiIuI9G96AJ1vAwgcAKie6hmtOidSAQomIiHjPoc3gLgNnJACFJ8+U6OobqQGFEhER8Z79q82fLfsCkFdiDuXEhAX7qyJpQBRKRETEO4qOwbHvzefJ6cBPQkm4QolUT6FERES848e15s/4jhAeB+hMidSOQomIiHjH/lXmz+T+lbtOhpJohRKpAYUSERHxjv1rzJ9nCCU6UyI1oenQIiLiHd2uNYdtWp9fuUuhRGpDoURERLwj/XbzcYLbY1BQal4SrFAiNaHhGxERsURB6amVXRVKpCYsDSWzZ88mLS2N6OhooqOjGThwIAsXLrSySxER8Yd9KyFnDxhG5a7cYjOUhIc4CHbo/4GlepZ+S1q1asWMGTNYv34969atY8iQIVx99dVs2bLFym5FRMSXDAP+ORZe6AWZX1fuzikuA6BJeIi/KpMGxtI5JVdddVWV7enTpzN79mxWrVpFt27drOxaRER85fg+KMgCexAknVe5+0iBC4CEKKd/6pIGx2cTXd1uN//4xz8oKipi4MCBZzzG5XLhcrkqt/Pz831VnoiI1NXu/5o/k/tDSHjlboUSqS3LB/k2bdpEZGQkTqeTu+66iwULFtC1a9czHpuRkUFMTEzlIzk52eryRESkvk6GkvaXVNl9tFChRGrH8lDSqVMnNm7cyOrVqxk3bhyjR49m69atZzx26tSp5OXlVT72799vdXkiIlIf7grY+4X5vN2QKi9VnimJVCiRmrF8+CYkJIQOHToA0KdPH9auXctf/vIXXnnlldOOdTqdOJ368oqINBgHN4ArD0JjocV5VV7S8I3Uls+v0fJ4PFXmjYiISAN2cuim3cVgd1R56YiGb6SWLD1TMnXqVEaMGEFKSgoFBQW88847LF++nMWLF1vZrYiI+Er/u6B5NwiPP+0lnSmR2rI0lGRnZ3PLLbeQlZVFTEwMaWlpLF68mMsuu8zKbkVExFfCYqHLVaftNgxDc0qk1iwNJa+//rqVzYuISIDKL63AVeEBdKZEak435BMRkbpZ+RcoK4K0UdC0fZWXsvJKAIgNDyY02HGmd4ucRqFERERqz+OBr2dB4WFITj8tlBw4boaSlrFh/qhOGijdIUlERGrvwHozkDijoc2Fp718MNcMJS0USqQWFEpERKT2tn9s/uxwKQSdfsO9H3N1pkRqT6FERERqb8en5s/OV5zx5ZPDN62aKJRIzSmUiIhI7RzZCUd3gj0YUs+8xMMBnSmROlAoERGR2tnxifmz7QUQGnPGQzSnROpCoURERGrHXWGGkZ8Zuiktd3M431w4LTku3JeVSQOnS4JFRKR2LvoDDJ4EnoozvrzvWBEA0aFBNAkP9mFh0tAplIiISO05gs3HGew9YoaStgmR2Gw2X1YlDZyGb0REpOYObwHDOOshe0+cKWnbVEM3UjsKJSIiUjPHdsPs8+GlflBR9rOHVZ4piY/0VWVyjlAoERGRmtn8gfkzNvmMC6addHJOSZt4nSmR2lEoERGR6hkGbH7ffN79hrMeuveoGUra6UyJ1JJCiYiIVO/wFjiyHRxO6HLlzx6WV1LO0UJzaEdnSqS2FEpERKR6m/5h/ky97GcXTAPYcagAgBYxoUSF6nJgqR2FEhEROTt3BXw733yeNuqsh+44lA9Ap8Qoq6uSc5BCiYiInN3e5VB4CMKbQsfhZz10x2HzTEmnxGgfFCbnGi2eJiIiZ9duCNzyLyjMPutVN3Bq+KazzpRIHSiUiIjI2dnt0O6iag8zDIPth06eKVEokdrT8I2IiHhFVl4pBaUVOOw22iVE+LscaYAUSkRE5MwMA974JSyaCoVHqj18+4lJru3iI3AGOayuTs5BCiUiInJmP66DvZ/D2tfBUf1o/3c/5gHQveXPXzIscjYKJSIicmZr/2r+7H49hDWp9vCToSStlUKJ1I1CiYiInK7oGGxZYD7v99tqDzcM4yehJNbCwuRcplAiIiKn2/gWuF2QdB607F3t4Vl5pRwtdBFkt9GthdYokbpRKBERkao8Hlg3x3zebyzYbNW+5bsfcwHo2DyK0GBNcpW6USgREZGqdv8Xju8DZ0y1dwQ+6dsTQzc9kzWfROpOi6eJiEhVzTrDwAkQHA4hNbvT78kzJZpPIvWhUCIiIlXFtIJh02t8eLnbwzeZuQD0Som1piZpFDR8IyIi9bLlYD7FZW5iw4Pp2EzLy0vdKZSIiIip6Ci8+xvY+4W5mmsNrdl7DIC+reOw26ufFCvycxRKRETEtG4ObPsXLHmkVm9bszcHgP5t46yoShoRhRIREYHyUljzmvl84IQaXQYM4PEYrN13HIB0hRKpJ4USERGBjW9DUTZEt4KuV9f4bTuzC8grKSc8xKFF06TeFEpERBo7dwWs/Iv5/Py7wRFc47eu3mMO3fRp3YQgh36lSP3oGyQi0thtWQC5P0B4U+h9S63e+sX3RwEY0K6pFZVJI6NQIiLSmBkGfPmc+bz/uBovlgZQVuHh691mKLmoY4IV1Ukjo1AiItKYedyQ/ltI7GH+rIX1PxynqMxN04gQuiZpPonUn1Z0FRFpzBxB0Pc26HNrja+4OWnF90cAuLBjgtYnEa/QmRIREal1IAH4fIcZSjR0I96iUCIi0hgZBrw3Gja8Ce7yWr89u6CUrVn5AAxOjfd2ddJIKZSIiDRG3/8Htn4IC++Dktxav/2LneYE1x4tY4iPdHq3Nmm0FEpERBobw4DlGebzfr+FyNoPv3y27TAAF3fS0I14j0KJiEhjs/1jOPgNBEfAoIm1fntJmZvlJ+aTDOuW6O3qpBFTKBERaUw8blj6uPl84O8govbzQVZ8f4SScjetmoRpaXnxKoUSEZHG5Nv5cHQHhDUxl5Svg8WbDwEwvFsitjpctSPycxRKREQaC3cFLJ9hPh88GUJjat1EWYWncj7J8O4auhHvUigREWksHEFw/WvQ9RpIv71OTazac4z80goSopz0Tmni3fqk0dOKriIijUnKAPNRRwtPDN1c3rW5VnEVr9OZEhGRxsBVWO8myio8LNycBcCI7kn1bk/kf1kaSjIyMujXrx9RUVE0a9aMa665hh07dljZpYiI/K+cPfBsF/jsMXNeSR0t25FNbnE5zaOdDGzf1IsFipgsDSWff/4548ePZ9WqVSxZsoTy8nIuv/xyioqKrOxWRER+6rPHwJUPWRvNeSV1tGDDAQCuPq8lDg3diAUsnVOyaNGiKtvz5s2jWbNmrF+/ngsvvPC0410uFy6Xq3I7Pz/fyvJERM59+1aay8ljg8ser3MzecXl/Hd7NgDX9mrpndpE/odP55Tk5eUBEBcXd8bXMzIyiImJqXwkJyf7sjwRkXOLxw0L7zef9xkDid3r3NQnm7Ioc3vonBhFlyQtmCbW8Fko8Xg8TJo0iUGDBtG9+5n/YkydOpW8vLzKx/79+31VnojIuWf9PDi8yVyPZMgj9WpqwTc/AnBdb50lEev47JLg8ePHs3nzZr788sufPcbpdOJ06m6TIiL1VpwD/33CfH7JQxBR94mp+3OKWbvvOHabOZ9ExCo+CSUTJkzg448/ZsWKFbRq1coXXYqING4Hv4HyEkjoAn3H1qupBd+YE1wHdYineXSoN6oTOSNLQ4lhGNx9990sWLCA5cuX07ZtWyu7ExGRkzoMhfGroTS3XlfcuD0G7641h9I1wVWsZmkoGT9+PO+88w4fffQRUVFRHDpkrgQYExNDWFiYlV2LiEiT1kDrejXx+c5sDuSWEBsezC96aME0sZalE11nz55NXl4eF198MUlJSZWPd99918puRUQar80fmJcBe8lbqzIBuKF3K0KDHV5rV+RMLB++ERERH8nPgn9PNBdK+80CaD+kXs3tzylm2Q5zbZKbBtTvjItITejeNyIi54qFfzADSYve0Paiejc3f20mhgGDO8TTNj7CCwWKnJ1CiYjIuWDbx7Dt32BzwC9fAHv9hlpcFe7KCa43D0jxRoUi1VIoERFp6Erz4dMp5vNB90Bij3o3+dHGgxwtLCMpJpShXZrXuz2RmlAoERFp6Jb8EQqyIK4dXHR/vZszDIPXv9gLwK2D2hDs0K8K8Q1900REGrKsb2H9XPP5VS9AcP2XW/ji+6PsOFxARIiDUf00dCO+47Nl5kVExAKJaXDdX+HINmh7gVeafO2LPQCM6pdCTFiwV9oUqQmFEhGRhsxmg7SRXmtu+6F8vvj+KHabOXQj4ksavhERaYgOfgNFx7ze7KxluwEY0SOJ5Lhwr7cvcjYKJSIiDU3Jcfj7jTB7IBza5LVmdx8p5OPvDgIw4ZIOXmtXpKYUSkREGppPpphX2zijIK6915qdvXw3hgGXdmlOl6Ror7UrUlMKJSIiDcmm92Hz++Yiade+CiHeGWLZn1PMgm8OADBhiM6SiH8olIiINBS5mfDxZPP5hVOgVR+vNf3/lu/C7TG4IDWe85JjvdauSG0olIiINATuCvjgDnDlQat0uPA+rzW972gR7637EYB7hqZ6rV2R2lIoERFpCNa8CplfQ0gUXP8aOLy3osPzn+3E7TG4qGMC/drEea1dkdrSOiUiIg1Br5shayO0HwpN2nit2Z2HC/joW/OKmymXd/JauyJ1oVAiItIQhEbDda96vdln/7MTw4AR3RPp0SrG6+2L1IaGb0REApVhwLaPzZ8WWP9DDou2HMJug8mXdbSkD5HaUCgREQlUX70A794E/xzr9WBiGAZPfLINgF/1TSa1eZRX2xepC4USEZFAtG8lfPaY+bzNYPMeN1706aZDfJOZS1iwQ2dJJGAolIiIBJqCQ/D+rWC4IW0U9LnVq82XVXj486LtANx5UTuaRYd6tX2RulIoEREJJO5yeP82KDwMCV3gyue8fpZkzsq9ZOYUkxDl5PYL2nm1bZH6UCgREQkk/3kEflhprkcy6k0IifBq84fzS3lx6fcAPDC8MxFOXYQpgUOhREQkUOTsgbV/NZ9f+zLEe3911RkLt1NU5qZXSizX9mrp9fZF6kMRWUQkUMS1gzGfwI9roMuVXm9+3b4cFnxzAJsNHvtlN+x27w4LidSXQomISCBJ6W8+vKzc7eHhDzcDMKpvMmmtYr3eh0h9afhGRMSfKlzw/lg4tNnSbl7/ci/bDxXQJDyY+4Z3trQvkbpSKBER8RfDgI8nw+b34Z1fmQHFAvtzinn+s50APHRFV+IiQizpR6S+FEpERPxl5fOw8S2w2eGXL0CQ0+tdGIbBIx9tprTcw4B2cVzfW5NbJXAplIiI+MPWf8Fn08znw/8MHS61pJv31//I8h1HCHHYeeKaHti8vOaJiDcplIiI+NqB9fDBHebz9Dug/x2WdJOVV8Kf/r0VgMmXd6RDs0hL+hHxFoUSERFfOv4DvDMKKkqgw2UwLMOSbgzD4P5/bqLAVUGvlFit3CoNgi4JFhHxpbAm0Lw7FB+FkXPBYc0/w++u3c+KnUdwBtl5ZmRPHFqTRBoAhRIREV8KjYab/gGleeCMsqSLA7klPPHJNgCmXN6J9gkatpGGQcM3IiJW87hhy4fmJcAAjmCIiLekK8MwuP/97yh0VdCndRNuG9zWkn5ErKBQIiJiJcOATybDP0bDkkcs7+7NVT/w5a6jhAbbefqGNA3bSIOiUCIiYqVl02H9PMAGrdIt7WrLwTye+Ngctrl/eGfaadhGGhiFEhERq3z1Eqx42nx+xUzo+kvLuipyVXD3O99Q5vZwaZdmjDm/jWV9iVhFoURExArfvAX/ech8PuQR6DfW0u4e+Wgze44WkRQTytM39NQiadIgKZSIiHjb5n/Cv+42nw+cABfca2l3/1z/Ix9sOIDdBn/5v1400b1tpIFSKBER8bayYnOCa+/RcPkTYOFZi91HCnnkI/MOw5Mu7Uh62zjL+hKxmtYpERHxtt6/gfhUaNXP0kBSWu7m7ne+objMzfntmzL+kg6W9SXiCzpTIiLiDftWQmH2qe2UAWB3WNadYRhM/WATW7PyaRoRwnOjztPlv9LgKZSIiNTXns/hretg3pVQdNQnXb7+5V4WfHMAh93GrJt60zw61Cf9ilhJoUREpD52Lztxg71SiGsLzmjLu/zy+6M8+am5HskjV3RhQLumlvcp4gsKJSIidbXrM/j7/5l3/E0dBr/6GwRZe+XL/pxiJvx9Ax4DbujTitFaj0TOIQolIiJ1sXMx/P3X5hmSTr+AUW9CkNPSLovLKrj9b+vILS6nZ6sYnrimu9YjkXOKrr4REamtnYth/q/BUwGdr4Qb5lp+hsTjMbj3vW/ZfqiA+MgQXv5NH0KDrZtIK+IPCiUiIrXVvDtEt4RWfeHaV8y7/losY+E2Fm4+RIjDzuyb+5AUE2Z5nyK+plAiIlJbMS1h7BKIiLf0st+T/vb1Pl77Yi8AT49Mo18bLZAm5ybNKRERqY5hwOdPwab3T+2Lau6TQPLZ1sNM+9cWAP4wrBNXn9fS8j5F/MXSULJixQquuuoqWrRogc1m48MPP7SyOxER7/O4YeF9sGw6LLgTju32Wdff/ZjL3X//Bo8B/9cvmd9d3N5nfYv4g6WhpKioiJ49ezJr1iwruxERsUaFC/45Fta8am5fPh2a+iYYZB4r5rZ56ygpd3NhxwQe15U20ghYOqdkxIgRjBgxwsouRESsUZoH82+CfV+APRiufRl63OCTrg/nl3Lz66s5Wuiic2IUs37di2CHRtvl3BdQE11dLhcul6tyOz8/34/ViEijlfcjvD0SsrdCSKS5Bkn7IT7pOqeojJv/uprMnGJaNw3nb7elExVq/dU9IoEgoKJ3RkYGMTExlY/k5GR/lyQijdGmf5iBJDIRbl3os0BSUFrO6Dlr+D67kMToUN4a259muqeNNCIBFUqmTp1KXl5e5WP//v3+LklEGqNBk+DC++C3SyApzSddlpS5GfvGOjYdyCMuIoS3fptOcly4T/oWCRQBNXzjdDpxOq1dpllE5Iw2vW8uFx8SDjYbDHnIZ12Xlru56631rNmbQ5QziL/dlk6HZlE+618kUATUmRIREZ9zV8An95pX2Sy4Azwen3ZfWu7mzjfX8/nOI4QG23l9TD+6t4zxaQ0igcLSMyWFhYXs2rWrcnvv3r1s3LiRuLg4UlJSrOxaRKR6JcfhH2Ngz3LABi16m2dJfKS03M3tf1vHF98fJSzYwetj+pLeVqu1SuNlaShZt24dl1xySeX25MmTARg9ejTz5s2zsmsRkbPL3g7zb4ScPRAcAde9Cl2u9Fn3JWVmIPlylxlI5t7ajwHtmvqsf5FAZGkoufjiizEMw8ouRERqb/un8MHtUFYIMSlw4zuQ2MNn3ZuTWtfy1e5jhIc4mHdrus6QiBBgE11FRCxXVgQf/94MJG0ugJHzzBvr+UheSTlj561l3Q/HiQhx8MZt6fTVDfZEAIUSEWlsQiLMILL1I7j8cXD4bmGy7PxSbpmzhu2HCogODWLuren0ad3EZ/2LBDqFEhE59x3cCPkHoPMV5nbrgebDhzKPFXPz6+ZKrQlRTv52WzpdkqJ9WoNIoFMoEZFzl2HAhjfg0/vAHgR3LIOETj4vY1tWPrfMWcORAhcpceG8NbY/KU21MJrI/1IoEZFzk6sQPp5kLhkP5lLxkc18XsbXu49x55vryC+toHNiFH+7LV1Lx4v8DIUSETn3ZH0H798Gx74HmwOGPgLnTwS7b9eLfH/9j0z94DvK3Qb92jThr6P7EROmm+uJ/ByFEhE5t6x5DRY/BG4XRLWAG+b4fP6IYRg8t2QnL/zXXDzyyrQknhnZk9Bgh0/rEGloFEpE5NySf8AMJB1HwNWzIMK3C5K5Ktzc9/53fLTxIADjL2nPvZd1wm733UqxIg2VQomINHwVLgg6cTPPSx6CZt2gxw0+XTIeILuglHFvbWD9D8cJstt48toe/Kpfsk9rEGnIFEpEpOEqL4HPpsH+NXDbYggKMdcdSRvp81I27s/lzjfXcTjfRVRoELNv6sPgVN8tyiZyLlAoEZGG6eA38MEdcHSnub3rM+j8C7+U8t66/Ty8YDNlbg8dmkXy2i19aRsf4ZdaRBoyhRIRaVgqyuCLZ2DFM2C4ITLRnDuSeqnPSyl3e5j+yTbmfbUPgMu7Nmfmr3oSFaorbETqQqFERBqOrO/go9/BoU3mdrfr4IqZEO77e8cczC1hwjsb2JCZC8DvL+3I3UM6aEKrSD0olIhIw7H4QTOQhMWZYaT7dX4pY9n2bH7/3kZyi8uJCg3i2V+dx2Vdm/ulFpFziUKJiAQ2wzh1Fc2Vz8HyGTA8wy+rs1a4PTzzn528/PluANJaxTDr171JjtOS8SLeoFAiIoGpNB/++4R5Nc2w6ea++FS44XW/lLM/p5jfv7uRdT8cB2DM+W2Y+ovOOIO0IJqItyiUiEjg2fYxfPoHKDgINjv0+y3EtfVLKYZh8OHGA/zxwy0UuCqIcgbx5xvS+EWPJL/UI3IuUygRkcBxfB8sfAB2LjS3m7SFK5/1WyDJKy7noQ838fF3WQD0ad2E5351nu7wK2IRhRIR8b8KF3z1AqyYCRUlYA+CQZPgwikQHOaXklbuOsqUf3xLVl4pDruNSUNTGXdxe4Icvr2pn0hjolAiIv7nKoCvXjQDSZsLzCtrEjr5pZT80nIyPt3O39dkAtA2PoLnRp3HecmxfqlHpDFRKBER/8jdDzGtzCtrIuJh+J/B7oAeI31+z5qTlu/IZuoHm8jKKwXgNwNa88CIzkQ49U+liC/ob5qI+FbJcXM11tUvw6i3oNMIc/95N/qtpONFZUz/dBvvr/8RgJS4cP58fRoD2/v2DsMijZ1CiYj4hrsc1s2B5RlmMAHYtfRUKPEDwzD454YDPPnpNnKKyrDZzEt9/zCsE+Eh+udRxNf0t05ErGUYsO1f8NljkGMuOkZCF7j8Cb/cr+akXdkFPLRgM6v35gDQsXkkT17bg75tfL9kvYiYFEpExFofTYCNb5nPw+NhyEPQ6xZw+OefnyJXBbOW7eK1L/ZQ7jYIDbYzcWhHxg5uS0iQrqwR8SeFEhHxvp8uDd/lKtjyAQycAIPuAWeUX0ryeAwWfHOAPy/aTnaBC4AhnZvx2C+7aZl4kQChUCIi3pO9HZZNh5Z9YPAkc1/HYTDxO4hM8FtZ32QeZ9q/t/Lt/lzAnMj60BVduLxrc2x+utJHRE6nUCIi9XdkB3z+Z9j8AWDADyuh/10QHGqeMfFTIPnhWBHP/Gcn//72IAARIQ4mDEnltsFtdM8akQCkUCIidXd4K3zxzKkwAuZwzcUPmoHET44Wunhx6fe8vTqTCo9Z1/W9W3H/8E40i/ZfXSJydgolIlI3q1+FhX84td35SrjofkhK81tJeSXlzPlyL3/9Yg9FZW4ALuqYwH3DO9GtRYzf6hKRmlEoEZGaMQwoL4aQCHO73UVgc0CXK+HCP0BiD7+Vlldczusr9zJ35V4KSisASGsVwwPDO3N+h3i/1SUitaNQIiJn566AbR/ByhcgviNc/5q5P6ETTNoEMS39VtrxojJe/3Iv877aR6HLDCMdm0cycWhHftEjUZNYRRoYhRIRObPSfPjmTVj1MuSZN6fj2G5zf2i0ue2nQJJTVMZrX+zhb1/tqxym6ZwYxT1DUxneLRG7XWFEpCFSKBGRqnL2mPNFvnkLygrMfeFNod9vIf2OU4HED3YfKWTOl3v554YfKS33ANA1KZp7hqZyedfmCiMiDZxCiYhUtf0TWD3bfB7fCQaMg57/B8FhfinHMAxW7jrG61/uYdmOI5X7e7SM4Z6hqVzapZmGaUTOEQolIo1Z4RFzCfj4TtD5F+a+826CH76GfmOh/ZBTK7P6mKvCzUcbDzLny71sP2SesbHZ4NIuzRk7uC3928YpjIicYxRKRBobjwf2fg7r55lnRTzl0Cr9VCgJj4Mb3/FbebuyC3l3bSb/3HCAnKIys6QQByP7tOLWQW1pEx/ht9pExFoKJSKNRW4mbPy7eWYkN/PU/ha9oc/oqver8bGSMjefbspi/tpM1u47Xrk/KSaU0ee34cZ+KcSEB/ulNhHxHYUSkcbi49/Drs/M584YSBsJvUf7bbEzwzDYcjCf99btZ8E3ByrXF7HbzBvl/V+/FC7ulECQQ3fuFWksFEpEzjXuctj9X9j0Dxj6KMQmm/vP+zW4y6DXLeaCZ36auLr7SCH/2niQf397kD1Hiyr3t2oSxqi+yYzsm0xijJaCF2mMFEpEzgXuCvMmeFs+gK0fQcmJIZBmXeGCyebz7tebDz84mFvCv789yL++PciWg/mV+0OC7FzWpTmj+iUzuEO8LukVaeQUSkQassIjsGw6bP8Yik5dLktEM+h+HaRe7rfSMo8Vs2TbYRZtzqoyT8Rht3FBajy/7NmCy7o2JypUc0VExKRQItKQlBVB3o/mEu8AIeHw7XyoKIGwJuYdertdB20vBLvDp6V5PAbf/pjLZ9sOs2TrYXYeLqzyenrbOH7ZswW/6JFEXESIT2sTkYZBoUQk0OVmwvf/gR2LYO8KaNoBfveV+VpIBAx7Apq0gbYXgcO3Zx3yisv5es9RPt95lKXbDpNd4Kp8zWG3kd4mjku7NucXPRJJivHPHBYRaTgUSkQCUeYq2PZv82qZI9urvlZeBKV5EBpjbvf7rc/KclW4Wf/Dcb78/igrdx1l04E8PMap1yOdQVzUKYHLujTnkk7NdBmviNSKQomIv3nccGgTJPY4NeSy4U1zPREAmx2S+5vzQzr9why68dF6IsVlFXy7P4/1P+Swem8Oa/flVN5z5qQOzSIZ3CGeIZ2b0b9dHM4g3w4bici5Q6FExNc8bjj0HfzwFexbCT98aZ75uP2/0LKPeUzXX5o/Owwxl3oPa+KT0g7llbLuhxzW/3Cc9T8cZ+vBfCp+eioESIhyMrhDPIM7xDOoQ7wu3xURr1EoEfGVzNWwPAN+XHfq7rsnhUTB8X2nQknHYebDIoZhcCi/lM0H8tl8II8tB/PYfCCfQ/mlpx2bGB1KnzZN6Nu6CYM6xJPaLFL3nBERSyiUiHhTeSlkb4GDG+HABuh6NXQ8cVmu4YY9y8znzmhIGQCtB0GbwZB0Hjis+etYXFbB7uwivs8uYOfhQrZl5bPlYB5HC8tOO9Zug86J0fRt04Q+rc1Hy9gwhRAR8QmFEpH6KDluXpJ7aBNkfQdHtoGn4tTrIRGnQkmLXvCLZ8ww0qyrVy/ZNQyD7AIXPxwr5odjRezKLuT77EK+zy7gx+MlGMbp73HYbaQ2i6Rbixi6t4yme8sYuiRFE+nUPwsi4h/610fkbAwDCrPh2PdwZAcc3QnNu0HvW8zX3eWw6IGq7wmLMwNIi17Q4dJT+4PDIP32OpZhkFtcTlZeKVl5JRzMLTEDSI4ZQjJzik+bgPpTTSNC6NAsko7No+iYGEWPljF0TowiNFiTUkUkcPgklMyaNYunn36aQ4cO0bNnT1588UXS09N90bVI9cpLzUXJIpqe2C6BBXfB8b1wbM/p8z9Sh50KJZHNIG2UuU5IYpp5c7uY5BpfHVPh9pBTXMaxwhOPIhdHC8s4WugiO99FVl4Jh/JKOZhXctbQAebQS8smYbSOi6B9QgQdmkfRsVkkHZpF0jTSWcs/FBER37M8lLz77rtMnjyZl19+mf79+/P8888zbNgwduzYQbNmzazuXhorjwcqSs0VT8E847F+HhQeNh/5WVBwEPIPmsuzdxwBv55vHhsUaq4PUnZiRVKbHWJTIL6j+WjVr7KbcreHkl/MorTMTUm5m4KiCvKPHSO/pIKC0nLySyvILymnoLSC/NJyCkrLyS0uJ6eojGNFZRwvLjvj0MrPaRoRQmJMKEkxYbRuGk7rpuGkxIXTumkELWPDCAnSHXVFpOGyGUZt/kmsvf79+9OvXz9eeuklADweD8nJydx999088MADZ31vfn4+MTEx5OXlER0dbWWZEgDcHoOPNh4gOfNfgBsMA5vHjc2owOapwO4pozAsiczE4RgYGAYM2PQIIeX5BFcUElxRREh5ASEV5uNgXH8WnTersv3fLL8Ap7vwjH3vD+/CrPavUu42cHs89MpdRKERwX57EpmeZhS6HZScCB6l5R5Ky83nbk/9//rYbBAXHkLTyBDiI500jXTSNCKEhCgnSScCSFJMKIkxoRpuEZEGoa6/vy09U1JWVsb69euZOnVq5T673c6ll17K119/fdrxLpcLl+vUMtX5+fmnHSPnLrfHYPJ737LL+RBBtjMPVaxw9+DB8paV2985lxBtKz7jsceOHOKJT7ZVbocHmUOGR4jlsNGEQ0YTDhlxHDDiySuNgJz9lcd+SNpPWjpzkPkpmw3Cgh1EhQYRFRpM9MmfYT99fuq1hJPhIzKEJuEhOHR3XBERa0PJ0aNHcbvdNG/evMr+5s2bs3379tOOz8jI4LHHHrOyJAlgdhtc2DGBTdnp2HGDzYYHB26bAw9BVNiDyQ5uw2VNmmPDDAL/zrsDbDZcjnBK7RGUOiIptkdSEhRNiT2aqx0hnPx1v87+KMF2Ow6HjWC7jbYOO6kOG0F2G0F2O8EOG0EO+4ltG8FBdkKDHISFOAgNthMa7CAs2FH5MyzEQWiQg9AQOyEOuy6bFRGpp4C6+mbq1KlMnjy5cjs/P5/k5GQ/ViS+FOSw87fb0oHFZz3uhipbfS2sSEREfMnSUBIfH4/D4eDw4cNV9h8+fJjExMTTjnc6nTidukpARESkMbJ0qn5ISAh9+vRh6dKllfs8Hg9Lly5l4MCBVnYtIiIiDYzlwzeTJ09m9OjR9O3bl/T0dJ5//nmKioq49dZbre5aREREGhDLQ8moUaM4cuQIf/zjHzl06BDnnXceixYtOm3yq4iIiDRulq9TUh9ap0RERKThqevvby3/KCIiIgFBoUREREQCgkKJiIiIBASFEhEREQkICiUiIiISEBRKREREJCAolIiIiEhAUCgRERGRgKBQIiIiIgFBoUREREQCgkKJiIiIBASFEhEREQkICiUiIiISEBRKREREJCAolIiIiEhAUCgRERGRgKBQIiIiIgFBoUREREQCgkKJiIiIBASFEhEREQkICiUiIiISEBRKREREJCAolIiIiEhAUCgRERGRgKBQIiIiIgFBoUREREQCgkKJiIiIBASFEhEREQkICiUiIiISEBRKREREJCAolIiIiEhAUCgRERGRgKBQIiIiIgFBoUREREQCgkKJiIiIBASFEhEREQkICiUiIiISEBRKREREJCAolIiIiEhAUCgRERGRgKBQIiIiIgFBoUREREQCgkKJiIiIBASFEhEREQkICiUiIiISEBRKREREJCAolIiIiEhAUCgRERGRgKBQIiIiIgFBoUREREQCgkKJiIiIBATLQsn06dM5//zzCQ8PJzY21qpuRERE5BxhWSgpKytj5MiRjBs3zqouRERE5BwSZFXDjz32GADz5s2r8XtcLhcul6tyOy8vD4D8/Hyv1iYiIiLWOfl72zCMWr3PslBSFxkZGZVh5qeSk5P9UI2IiIjUR0FBATExMTU+PqBCydSpU5k8eXLltsfjIScnh+DgYFJSUti/fz/R0dF+rNB38vPzSU5OblSfGfS5G9PnboyfGRrn526Mnxn0ubdu3UqLFi1q9d5ahZIHHniAP//5z2c9Ztu2bXTu3LlWRZzkdDpxOp1V9sXGxlaeBoqOjm5U/2GhcX5m0OduTBrjZ4bG+bkb42eGxvu5W7Zsid1eu6mrtQol9957L2PGjDnrMe3atatVASIiIiJQy1CSkJBAQkKCVbWIiIhII2bZnJLMzExycnLIzMzE7XazceNGADp06EBkZGSt2nI6nTz66KOnDe2cyxrjZwZ97sb0uRvjZ4bG+bkb42cGfe66fG6bUdvrdWpozJgxvPHGG6ftX7ZsGRdffLEVXYqIiEgDZlkoEREREakN3ftGREREAoJCiYiIiAQEhRIREREJCAolIiIiEhAaVCjZt28fY8eOpW3btoSFhdG+fXseffRRysrK/F2a5aZPn875559PeHg4sbGx/i7HMrNmzaJNmzaEhobSv39/1qxZ4++SLLVixQquuuoqWrRogc1m48MPP/R3SZbLyMigX79+REVF0axZM6655hp27Njh77IsN3v2bNLS0ipX9xw4cCALFy70d1k+NWPGDGw2G5MmTfJ3KZaaNm0aNputyqOuK503JAcOHODmm2+madOmhIWF0aNHD9atW1erNhpUKNm+fTsej4dXXnmFLVu28Nxzz/Hyyy/z4IMP+rs0y5WVlTFy5EjGjRvn71Is8+677zJ58mQeffRRNmzYQM+ePRk2bBjZ2dn+Ls0yRUVF9OzZk1mzZvm7FJ/5/PPPGT9+PKtWrWLJkiWUl5dz+eWXU1RU5O/SLNWqVStmzJjB+vXrWbduHUOGDOHqq69my5Yt/i7NJ9auXcsrr7xCWlqav0vxiW7dupGVlVX5+PLLL/1dkqWOHz/OoEGDCA4OZuHChWzdupWZM2fSpEmT2jVkNHBPPfWU0bZtW3+X4TNz5841YmJi/F2GJdLT043x48dXbrvdbqNFixZGRkaGH6vyHcBYsGCBv8vwuezsbAMwPv/8c3+X4nNNmjQx/vrXv/q7DMsVFBQYqampxpIlS4yLLrrImDhxor9LstSjjz5q9OzZ099l+NT9999vDB48uN7tNKgzJWeSl5dHXFycv8uQeiorK2P9+vVceumllfvsdjuXXnopX3/9tR8rE6vl5eUBNKq/x263m/nz51NUVMTAgQP9XY7lxo8fzxVXXFHl7/e57vvvv6dFixa0a9eOm266iczMTH+XZKl//etf9O3bl5EjR9KsWTN69erFa6+9Vut2GnQo2bVrFy+++CJ33nmnv0uRejp69Chut5vmzZtX2d+8eXMOHTrkp6rEah6Ph0mTJjFo0CC6d+/u73Ist2nTJiIjI3E6ndx1110sWLCArl27+rssS82fP58NGzaQkZHh71J8pn///sybN49FixYxe/Zs9u7dywUXXEBBQYG/S7PMnj17mD17NqmpqSxevJhx48Zxzz33nHFl97MJiFDywAMPnDYp6H8f27dvr/KeAwcOMHz4cEaOHMntt9/up8rrpy6fW+RcMn78eDZv3sz8+fP9XYpPdOrUiY0bN7J69WrGjRvH6NGj2bp1q7/Lssz+/fuZOHEib7/9NqGhof4ux2dGjBjByJEjSUtLY9iwYXz66afk5uby3nvv+bs0y3g8Hnr37s2TTz5Jr169uOOOO7j99tt5+eWXa9WOZTfkq417772XMWPGnPWYdu3aVT4/ePAgl1xyCeeffz6vvvqqxdVZp7af+1wWHx+Pw+Hg8OHDVfYfPnyYxMREP1UlVpowYQIff/wxK1asoFWrVv4uxydCQkLo0KEDAH369GHt2rX85S9/4ZVXXvFzZdZYv3492dnZ9O7du3Kf2+1mxYoVvPTSS7hcLhwOhx8r9I3Y2Fg6duzIrl27/F2KZZKSkk4769elSxf++c9/1qqdgAglCQkJJCQk1OjYAwcOcMkll9CnTx/mzp2L3R4QJ3vqpDaf+1wXEhJCnz59WLp0Kddccw1gJu+lS5cyYcIE/xYnXmUYBnfffTcLFixg+fLltG3b1t8l+Y3H48Hlcvm7DMsMHTqUTZs2Vdl366230rlzZ+6///5GEUgACgsL2b17N7/5zW/8XYplBg0adNql/Tt37qR169a1aicgQklNHThwgIsvvpjWrVvzzDPPcOTIkcrXzvX/m87MzCQnJ4fMzEzcbjcbN24EoEOHDkRGRvq3OC+ZPHkyo0ePpm/fvqSnp/P8889TVFTErbfe6u/SLFNYWFjl/5727t3Lxo0biYuLIyUlxY+VWWf8+PG88847fPTRR0RFRVXOGYqJiSEsLMzP1Vln6tSpjBgxgpSUFAoKCnjnnXdYvnw5ixcv9ndplomKijptrlBERARNmzY9p+cQTZkyhauuuorWrVtz8OBBHn30URwOBzfeeKO/S7PM73//e84//3yefPJJfvWrX7FmzRpeffXV2o9m1P9CIN+ZO3euAZzxca4bPXr0GT/3smXL/F2aV7344otGSkqKERISYqSnpxurVq3yd0mWWrZs2Rn/u44ePdrfpVnm5/4Oz50719+lWeq2224zWrdubYSEhBgJCQnG0KFDjf/85z/+LsvnGsMlwaNGjTKSkpKMkJAQo2XLlsaoUaOMXbt2+bssy/373/82unfvbjidTqNz587Gq6++Wus2bIZhGPVNSCIiIiL11XAnZIiIiMg5RaFEREREAoJCiYiIiAQEhRIREREJCAolIiIiEhAUSkRERCQgKJSIiIhIQFAoERERkYCgUCIiIiIBQaFEREREAoJCiYiIiASE/w8+cJEQhASLUwAAAABJRU5ErkJggg==\n",
"text/plain": [
"