{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Dispersion fitting tool\n", "\n", "Here we show how to fit optical measurement data and use the results to create dispersion material models for Tidy3d.\n", "\n", "Tidy3D's dispersion fitting tool peforms an optimization to find a medium defined as a dispersive [PoleResidue](../_autosummary/tidy3d.PoleResidue.rst) model that minimizes the RMS error between the model results and the data. This can then be directly used as a material in simulations." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2023-02-03T03:30:33.517733Z", "iopub.status.busy": "2023-02-03T03:30:33.517417Z", "iopub.status.idle": "2023-02-03T03:30:34.638983Z", "shell.execute_reply": "2023-02-03T03:30:34.638578Z" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
[21:30:34] WARNING This version of Tidy3D was pip installed from the 'tidy3d-beta' repository on __init__.py:103\n", " PyPI. Future releases will be uploaded to the 'tidy3d' repository. From now on, \n", " please use 'pip install tidy3d' instead. \n", "\n" ], "text/plain": [ "\u001b[2;36m[21:30:34]\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m This version of Tidy3D was pip installed from the \u001b[32m'tidy3d-beta'\u001b[0m repository on \u001b]8;id=486318;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=46774;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/__init__.py#103\u001b\\\u001b[2m103\u001b[0m\u001b]8;;\u001b\\\n", "\u001b[2;36m \u001b[0m PyPI. Future releases will be uploaded to the \u001b[32m'tidy3d'\u001b[0m repository. From now on, \u001b[2m \u001b[0m\n", "\u001b[2;36m \u001b[0m please use \u001b[32m'pip install tidy3d'\u001b[0m instead. \u001b[2m \u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
INFO Using client version: 1.9.0rc1 __init__.py:121\n", "\n" ], "text/plain": [ "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m Using client version: \u001b[1;36m1.9\u001b[0m.0rc1 \u001b]8;id=941476;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/__init__.py\u001b\\\u001b[2m__init__.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=871531;file:///Users/twhughes/Documents/Flexcompute/tidy3d-docs/tidy3d/tidy3d/__init__.py#121\u001b\\\u001b[2m121\u001b[0m\u001b]8;;\u001b\\\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# first import packages\n", "import matplotlib.pylab as plt\n", "import numpy as np\n", "\n", "import tidy3d as td\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load Data\n", "\n", "The fitting tool accepts three ways of loading data:\n", "\n", "1. Numpy arrays directly by specifying `wvl_um`, `n_data`, and optionally `k_data`;\n", "\n", "2. Data file with the `from_file` utility function.\n", "\n", " Our data file has columns for wavelength (um), real part of refractive index (n), and imaginary part of refractive index (k). k data is optional. \n", " \n", " Note: `from_file` uses [np.loadtxt](https://numpy.org/doc/stable/reference/generated/numpy.loadtxt.html) under the hood, so additional keyword arguments for parsing the file follow the same format as [np.loadtxt](https://numpy.org/doc/stable/reference/generated/numpy.loadtxt.html).\n", " \n", "3. URL linked to a csv/txt file that contains wavelength (micron), n, and optionally k data with the `from_url` utility function. URL can come from [refractiveindex](https://refractiveindex.info).\n", "\n", "Below the 2nd way is taken as an example:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2023-02-03T03:30:34.641335Z", "iopub.status.busy": "2023-02-03T03:30:34.641071Z", "iopub.status.idle": "2023-02-03T03:30:35.737119Z", "shell.execute_reply": "2023-02-03T03:30:35.736689Z" }, "tags": [] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHLCAYAAAA0kLlRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABU8klEQVR4nO3deXgT1f4G8HfSfUm6QHdKKVvZ960sbZWlrLfVexFRL6DAvSougIqgIrtFEFARQQXEDUFQQFlFpAWkokBBQC1boSwte5vQvcn5/cGvuYSmpWmTTjp9P8+T5zmZTGa+kwHycubMiSSEECAiIiJSCJXcBRARERFZE8MNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww2RAnzxxRdo1qwZnJyc4O3tLXc5AIBz585BkiSsWrWqxu9XrmMpy/Tp0yFJktxlENktR7kLIKKq+fvvvzFq1Cj0798fkydPhru7e7Xuf/Xq1bh69SrGjx9frfulyvnwww/h7u6OUaNGyV0Kkc0w3BDVcImJiTAYDHjvvffQuHHjat//6tWrcfz48VLhJiwsDHl5eXBycqrWeuTab03x4Ycfom7dugw3pGi8LEVkZ3Jycixa/+rVqwBw38tRQgjk5eVVtiyLSZIEV1dXODg4VNs+5dwvEdkPhhsiGZWMnfjzzz/x2GOPwcfHBz179jS+/uWXX6Jjx45wc3ODr68vHn30UVy4cMH4eoMGDTBt2jQAgJ+fHyRJwvTp042vDR48GDt27ECnTp3g5uaGjz76CADw6aef4sEHH4S/vz9cXFzQokULLF261GyN27ZtQ3R0NNRqNTQaDTp37ozVq1cDAGJiYrBlyxacP38ekiRBkiQ0aNAAQOlxKu+88w4kScL58+dL7WPKlClwdnbGrVu3jMsOHDiA/v37w8vLC+7u7oiOjsYvv/xy38/U3PiYUaNGwdPTE5cuXUJ8fDw8PT3h5+eHl19+GXq93uT9WVlZGDVqFLy8vODt7Y2RI0ciKyvL7L7+/vtv/Otf/4Kvry9cXV3RqVMnfP/998bXr169Cj8/P8TExEAIYVx++vRpeHh4YNiwYfc9nn379qFz585wdXVFo0aNjOfwXhU5pw0aNMCJEyeQlJRkPF8xMTEAgJs3b+Lll19G69at4enpCY1GgwEDBuDo0aP3rZHI3vCyFJEdGDp0KJo0aYK33nrL+CU4Z84cTJ06FY888gjGjBmDa9euYfHixYiKikJKSgq8vb3x7rvv4vPPP8eGDRuwdOlSeHp6ok2bNsbtpqamYvjw4fjvf/+LsWPHIiIiAgCwdOlStGzZEv/4xz/g6OiIH374Ac8++ywMBgPGjRtnfP+qVavw1FNPoWXLlpgyZQq8vb2RkpKC7du347HHHsPrr7+O7OxsXLx4EYsWLQIAeHp6mj3GRx55BJMmTcI333yDV155xeS1b775Bv369YOPjw8A4Oeff8aAAQPQsWNHTJs2DSqVyvjlvXfvXnTp0sXiz1iv1yM2NhZdu3bFO++8g59++gkLFixAo0aN8MwzzwC407sVFxeHffv24emnn0bz5s2xYcMGjBw5stT2Tpw4gR49eiAkJASTJ0+Gh4cHvvnmG8THx+Pbb7/FQw89BH9/fyxduhRDhw7F4sWL8cILL8BgMGDUqFFQq9X48MMPy6352LFj6NevH/z8/DB9+nQUFxdj2rRpCAgIKLVuRc7pu+++i+effx6enp54/fXXAcC4rbNnz2Ljxo0YOnQowsPDceXKFXz00UeIjo7Gn3/+ieDgYIs/cyLZCCKSzbRp0wQAMXz4cJPl586dEw4ODmLOnDkmy48dOyYcHR1Nlpds49q1aybrhoWFCQBi+/btpfabm5tballsbKxo2LCh8XlWVpZQq9Wia9euIi8vz2Rdg8FgbA8aNEiEhYWV2l5aWpoAID799FPjssjISNGxY0eT9X777TcBQHz++efGbTdp0kTExsaa7Cc3N1eEh4eLvn37ltrX/fY7cuRIAUDMnDnTZN327dub1LNx40YBQMybN8+4rLi4WPTq1avUNnv37i1at24t8vPzTT6X7t27iyZNmpjsZ/jw4cLd3V2cPHlSzJ8/XwAQGzduLPc4hBAiPj5euLq6ivPnzxuX/fnnn8LBwUHc+893Rc6pEEK0bNlSREdHl1o3Pz9f6PV6k2VpaWnCxcWl1OdGZO94WYrIDjz99NMmz7/77jsYDAY88sgjuH79uvERGBiIJk2aYPfu3RXabnh4OGJjY0std3NzM7azs7Nx/fp1REdH4+zZs8jOzgYA7Ny5EzqdDpMnT4arq6vJ+yt7G/KwYcNw6NAhnDlzxrhs7dq1cHFxQVxcHADgyJEjOHXqFB577DHcuHHDeOw5OTno3bs39uzZA4PBUKn93/s59+rVC2fPnjU+37p1KxwdHY09OQDg4OCA559/3uR9N2/exM8//4xHHnkEOp3OWOONGzcQGxuLU6dO4dKlS8b1P/jgA3h5eeFf//oXpk6din//+9/G4y2LXq/Hjh07EB8fj/r16xuXN2/evNLntDwuLi5QqVTGfd+4cQOenp6IiIjA4cOH7/t+InvCy1JEdiA8PNzk+alTpyCEQJMmTcyuX9E7ge7dbolffvkF06ZNQ3JyMnJzc01ey87OhpeXlzGAtGrVqkL7qoihQ4di4sSJWLt2LV577TUIIbBu3ToMGDAAGo0GwJ1jB2D2UtDdNZZcwqooV1dX+Pn5mSzz8fExGedz/vx5BAUFlbq0VnI5r8Tp06chhMDUqVMxdepUs/u7evUqQkJCAAC+vr54//33MXToUAQEBOD999+/b73Xrl1DXl6e2T8DERER2Lp1q8myipzT8pTccffhhx8iLS3NZCxSnTp17lsvkT1huCGyA3f/rxu480UjSRK2bdtm9q6fssa13G+7AHDmzBn07t0bzZo1w8KFCxEaGgpnZ2ds3boVixYtqnSvSEUEBwejV69e+Oabb/Daa6/h119/RXp6Ot5++23jOiX7nz9/Ptq1a2d2OxU9/rtZ8+6pkhpffvlls70oAErdlr9jxw4AwK1bt3Dx4kWrTrZojXP61ltvYerUqXjqqacwa9Ys+Pr6QqVSYfz48Tb9M0FkCww3RHaoUaNGEEIgPDwcTZs2teq2f/jhBxQUFOD77783udxx76WuRo0aAQCOHz9e7vw5ll6iGjZsGJ599lmkpqZi7dq1cHd3x5AhQ0rtV6PRoE+fPhZtu6rCwsKwa9cu3L592yRApaammqzXsGFDAHd60CpS4/bt27F8+XJMmjQJX331FUaOHIkDBw7A0bHsf4L9/Pzg5uZm7Mm62731VPScAmWfr/Xr1+OBBx7AihUrTJZnZWWhbt265R4fkb3hmBsiO/Twww/DwcEBM2bMMLmFGLhzR8+NGzcqve2SHoy7t5udnY1PP/3UZL1+/fpBrVYjISEB+fn5pWoo4eHhUaExHSX++c9/wsHBAV9//TXWrVuHwYMHw8PDw/h6x44d0ahRI7zzzju4fft2qfdfu3atwvuy1MCBA1FcXGxyC7Ver8fixYtN1vP390dMTAw++ugjZGRklFtjVlYWxowZgy5duuCtt97C8uXLcfjwYbz11lvl1uLg4IDY2Fhs3LgR6enpxuV//fWXsRfo7nWB+59T4M75Mndru4ODQ6k/a+vWrTMZO0RUU7DnhsgONWrUCLNnz8aUKVNw7tw5xMfHQ61WIy0tDRs2bMB//vMfvPzyy5Xadr9+/eDs7IwhQ4bgv//9L27fvo1PPvkE/v7+Jl/UGo0GixYtwpgxY9C5c2fjPDxHjx5Fbm4uPvvsMwB3wsjatWsxceJEdO7cGZ6eniY9Mffy9/fHAw88gIULF0Kn05Wa60WlUmH58uUYMGAAWrZsiSeffBIhISG4dOkSdu/eDY1Ggx9++KFSx34/Q4YMQY8ePTB58mScO3cOLVq0wHfffWc2vC1ZsgQ9e/ZE69atMXbsWDRs2BBXrlxBcnIyLl68aJwf5sUXX8SNGzfw008/wcHBAf3798eYMWMwe/ZsxMXFoW3btmXWM2PGDGzfvh29evXCs88+i+LiYixevBgtW7bEH3/8YVyvoucUuHO+li5ditmzZ6Nx48bw9/fHgw8+iMGDB2PmzJl48skn0b17dxw7dgxfffWVsZeKqEaR6zYtIir7Nu4S3377rejZs6fw8PAQHh4eolmzZmLcuHEiNTX1vtsICwsTgwYNMrvd77//XrRp00a4urqKBg0aiLffflusXLlSABBpaWml1u3evbtwc3MTGo1GdOnSRXz99dfG12/fvi0ee+wx4e3tLQAYbws3d0t2iU8++UQAEGq1utRt5iVSUlLEww8/LOrUqSNcXFxEWFiYeOSRR8SuXbvMrl+irFvBPTw8Sq1b8tnd7caNG+Lf//630Gg0wsvLS/z73/8WKSkpZo/lzJkzYsSIESIwMFA4OTmJkJAQMXjwYLF+/XohhBCbNm0SAMSCBQtM3qfVakVYWJho27atKCwsLPd4kpKSRMeOHYWzs7No2LChWLZsmdm6K3pOMzMzxaBBg4RarRYAjLeF5+fni5deekkEBQUJNzc30aNHD5GcnCyio6PN3jpOZM8kIe7phyQiIiKqwTjmhoiIiBSF4YaIiIgUheGGiIiIFIXhhoiIiBSF4YaIiIgUheGGiIiIFKXWTeJnMBhw+fJlqNXqSv+yMREREVUvIQR0Oh2Cg4ONv2BflloXbi5fvozQ0FC5yyAiIqJKuHDhAurVq1fuOrUu3KjVagB3PhyNRiNzNURERFQRWq0WoaGhxu/x8tS6cFNyKUqj0TDcEBER1TAVGVLCAcVERESkKAw3REREpCgMN0RERKQoDDdERESkKLKGm6VLl6JNmzbGwb2RkZHYtm1bmeuvWrUKkiSZPFxdXauxYiIiIrJ3st4tVa9ePcydOxdNmjSBEAKfffYZ4uLikJKSgpYtW5p9j0ajQWpqqvE5J+IjIiKiu8kaboYMGWLyfM6cOVi6dCl+/fXXMsONJEkIDAysjvKIiIioBrKbMTd6vR5r1qxBTk4OIiMjy1zv9u3bCAsLQ2hoKOLi4nDixIlqrJKIiIjsneyT+B07dgyRkZHIz8+Hp6cnNmzYgBYtWphdNyIiAitXrkSbNm2QnZ2Nd955B927d8eJEyfKnIq5oKAABQUFxudardYmx0FERET2QRJCCDkLKCwsRHp6OrKzs7F+/XosX74cSUlJZQacuxUVFaF58+YYPnw4Zs2aZXad6dOnY8aMGaWWZ2dnc4ZiCwghIEkSSv64sG3alnv/tbkt9/5rc1vu/de2ttz7r0y91qTVauHl5VWh72/Zw829+vTpg0aNGuGjjz6q0PpDhw6Fo6Mjvv76a7Ovm+u5CQ0NVXS4sdZfAp1Oh3lTp2P395tx68YN5OTmwQkSDEKgGAY4Sw61ug0AAgIqBwcU6IvhDJVd1FUb2vzs+dnXlnZN+7zvfIcAdT3UcPT1QvSQQXh19owK/R7U/VgSbuxmzE0Jg8FgEkbKo9frcezYMQQFBZW5jouLi/FWc6X8nlRJCBFCGNtarRZvvDgBPcKboqVXXYQ5uqOJkycaOXqgvoOrxe1Gjh5o6eOPwJVbob94Fa55RZjkVh91JSd4qxzxqnuDWt0OVDljgnt9+EnOUBskvOoWZhd11YY2P3t+9rWlXdM+70CVM17zCMc2r/b40qkJPtX6oeEXPyGuRzR0Ol21fk/KOuZmypQpGDBgAOrXrw+dTofVq1cjMTERO3bsAACMGDECISEhSEhIAADMnDkT3bp1Q+PGjZGVlYX58+fj/PnzGDNmjJyHYXP360UpFHpIkoRX3RtAn38VrjBgnFt9fJGfiULJgNGuwRa3F+dewBsejZBSrEOwygWDXf2QUqRl+//bT7mF2E0tta3Nz56ffW1p17TP+ym3EEQ7+xi/uyRJQrSDF3AxC/OmTsesdxdU2/emrD03V69exYgRIxAREYHevXvj999/x44dO9C3b18AQHp6OjIyMozr37p1C2PHjkXz5s0xcOBAaLVa7N+/v0Ljc2oarVaLV54Zh+befmji7FluL0oXJy/M8GiEVH0uglUueM69Pv6uYttD5YAoZx8cLtbiiihAlJM323e15d5/bW7Lvf/a3JZ7/7WtLff+K1OvOVEqL+zdXPYEvbYga8/NihUryn09MTHR5PmiRYuwaNEiG1YkL51Oh5mTJmPT6jXI0d2Gv4MLnnMNxmJDLl4rpxdlRd5FRDn7YEX+JQBAlJM3VuRdrHR7ee4F+EhOAABXqIyDwti+03b7/+vK9lBLbWvzs+dnX1vaNe3zdpMcjO17SZIE12KDTQYZl0X2W8GpJNRMwTcrV8HXoEIrlSvg5IXBrv5IKdIae1HMhZdejl5YLd3p3bLWH1J3lSPyhB4AkA8D8P9Dztm+0+Znw8++Nrb52fPzvl+9ZYUXIQTyHKRqCzaAHQ4orm0uX76MyIYROL3yG3SEO553r48rohBXRCGinLxxqCjbpBfl7jTvJjlApVKZ/CWwRjtP6NHBUYM9RVno4KhBgOTC9j1tufdfm9ty7782t+Xef21ry73/ytRrzh5DNqKGDLTBN2jZGG5kotPp8Mozz6FL/UaYUOCDq/8faHo5epmEGHeVI/JQdhgRQtjkL0EzRw+szLuEZo7uuGwowAe56WjmwHZJm58NP/va2OZnz8/7fvUmFd40uaM3SZ+FL+s5YdKs6dX6HWt389zYmiX3ydvK5cuX0a9tJzTRFiPdkI81mtZ4WvcXJEnCR5oWGJF9DADwmaYVRmqPo4OjBu2dNEgp0uKSvsA45qak3dFRjXG6vzHcNQBf5GWiEHfd/VTJ9tcFVzDcNQCpxbn4rUiLLH0RciU9nCBBACgG4CyVzLcgamUbuNMjq3JQoVCvv2sOIPupUaltfvb87GtLu6Z93sCdMTZ1PTzh5OuN6H8MwqRZ06t9nhuGm2pUMrbm609WYIZ7Q6zIuwh3yREfeZkGmvdy001CTDNHD3ydn1lmeBnnFoqOTmqszLuM34qycVNfhDzJABfj5EpV/0Pq6OOFmLjBeGXmNKjVakiS/cyCaQ9tufdfm9ty7782t+Xef21ry73/ytRrTQw35ZAr3Oh0OsT1iIb3yUs4r8/DGk1rPHP7b+QJfalA09FRjf9q/7KoF8VV5QC1gxOK3ZzRf/hQvPF2Ajw9PQHY5x9SIiIiS1jy/c27parJ7Fen4PH0QqzQ58NHcjIOBC4ZLzPGLQT/1f6FD3LTMc4tFMs0zbAs9yLez02HAcDCnHSoVCrU9fCEn09Aub0o5ty9vCptIiIie8dwUw10Oh02fvoFNru3wteqDJOBwCUDd+EWbAw083LSAEmCm6SCi0aNAcOH4vW5b0Gj0ZTZi8IAQkREdAfDjY3pdDrE9XoA/nqV2d6akoHAR4p0WJl3Ga5QwVPliDwvd2w5egghISEm22OIISIiKh9vBbehknE22SdOwgBRqrfmULEWH6gjkFqci0PFWkgAzol89P3PSBxIO1Uq2BAREdH9sefGhma/OgWPnS/AGpUTmjt4lNtbky8MyPNyx54/TiA4OFju0omIiGos9tzYSMk4mxgnH+QJPUa7BZfZW3NWn2vsrWGwISIiqhr23NjI3NffhL/+zu81dXDU4HDxbSxRN8OKvEt3emskFSRI8FM5IXLME5i7ZLHcJRMRESkCw42N7Nuy3TjOpuRSFNyC8YJ7fUiSBIPBgMTiLHwd5oKpb78ld7lERESKwXBjA0IIuOkFmvz/XVHRzj6lem1uGYrg0zoCm5J+tsq01ERERHQHw40N3L59G5ezb2GuWzie06UCEIhy8sGLHmEQQiCx4CbmFF1AIoMNERGR1THcWFnJ7d+N84DDzrpSPTb5woAAB2cMfWoUgw0REZENMNxY2dtvTMMTF4rR0aPhnXE2EkzG2SQVZ2N1mDPH2RAREdkIw42V7d28DaMc6kCSpFK9NnlCj1sezjjwyxn22hAREdkIw40VlQwkLvmJBE+VI170CDO+JkkSxnlcM/5aNxEREVkfJ/GzIkmSkOfwv1/ovvc1IQTyHCT+PhQREZENMdxYWa/BA7DHoDX72h5DNqKGDKzmioiIiGoXhhsre3X2DHxZzxFJ+ixjD44QAkn6LHxZzwmTZk2Xt0AiIiKFY7ixgY49umO+IRODdX/gEd1x/FN/CieHx2DTL0kcSExERGRjHFBsRSVz3DxxoRj/dYyApLlz+/deocOXe3+RuzwiIqJagT03VlQyx020o5dx0LBKpUK0gxeeuFiEeVOny1sgERFRLcBwY0V7N29DlIPG7GtRKi/s3bytmisiIiKqfRhurOTeOW7uJUkSXIsNZm8TJyIiIuthuLGS8ua4AcA5boiIiKoJw40VcY4bIiIi+THcWBHnuCEiIpIfw40VqdVqbPolCWkj+mKM902M87iGMd43kTaiH+e4ISIiqiac58ZKdDod3n5jGvZu3gY3vYBwkNDxHwMwec5MhhoiIqJqxHBjBXdP3jfKoY7xRzL3fLkLcYlJ7LUhIiKqRrwsZQXmJu+TJImT9xEREcmA4cYKOHkfERGR/WC4qSJO3kdERGRfGG6qiJP3ERER2RdZw83SpUvRpk0baDQaaDQaREZGYtu28i/hrFu3Ds2aNYOrqytat26NrVu3VlO1ZePkfURERPZD1nBTr149zJ07F4cOHcLBgwfx4IMPIi4uDidOnDC7/v79+zF8+HCMHj0aKSkpiI+PR3x8PI4fP17NlZvi5H1ERET2QxJ2NhjE19cX8+fPx+jRo0u9NmzYMOTk5GDz5s3GZd26dUO7du2wbNmyCm1fq9XCy8sL2dnZ0GjMDwKuDJ1Oh3lTp2Pv5m1wLTYg31GFXoMHYNKs6bwNnIiIqIos+f62mzE3er0ea9asQU5ODiIjI82uk5ycjD59+pgsi42NRXJycnWUWKaSCfz2/LAVrsUG5KqAnoP6M9gQERHJQPZJ/I4dO4bIyEjk5+fD09MTGzZsQIsWLcyum5mZiYCAAJNlAQEByMzMLHP7BQUFKCgoMD7Xas2PjamsMifw++InxO1O5AR+RERE1Uz2npuIiAgcOXIEBw4cwDPPPIORI0fizz//tNr2ExIS4OXlZXyEhoZabdsAJ/AjIiKyN7KHG2dnZzRu3BgdO3ZEQkIC2rZti/fee8/suoGBgbhy5YrJsitXriAwMLDM7U+ZMgXZ2dnGx4ULF6xaPyfwIyIisi+yh5t7GQwGk8tId4uMjMSuXbtMlu3cubPMMToA4OLiYrzVvORhLZzAj4iIyP7IOuZmypQpGDBgAOrXrw+dTofVq1cjMTERO3bsAACMGDECISEhSEhIAAC8+OKLiI6OxoIFCzBo0CCsWbMGBw8exMcffyxL/XdP4Gcu4HACPyIiouona8/N1atXMWLECERERKB37974/fffsWPHDvTt2xcAkJ6ejoyMDOP63bt3x+rVq/Hxxx+jbdu2WL9+PTZu3IhWrVrJdQicwI+IiMjO2N08N7Zm7XlujHdLXSxClMrrf3dLGbLxZT0n3i1FRERkBTVynpuaSq1WY9MvSUgb0Q9jvG9inMc1jPG+ibQR/RhsiIiIZMCeGysra/wNERERVR57bmTEYENERCQvhhsiIiJSFIYbIiIiUhSGGyIiIlIUhhsiIiJSFIYbIiIiUhSGGyIiIlIUhhsiIiJSFIYbIiIiUhSGGyIiIlIUhhsiIiJSFIYbIiIiUhSGGyIiIlIUhhsiIiJSFIYbIiIiUhSGGyIiIlIUhhsiIiJSFIYbIiIiUhSGGyIiIlIUhhsiIiJSFIYbIiIiUhSGGyIiIlIUhhsiIiJSFIYbIiIiUhSGGyIiIlIUhhsiIiJSFIYbIiIiUhSGGyIiIlIUhhsiIiJSFIYbIiIiUhSGGyIiIlIUhhsiIiJSFIYbIiIiUhSGGyIiIlIUhhsiIiJSFIYbIiIiUhRZw01CQgI6d+4MtVoNf39/xMfHIzU1tdz3rFq1CpIkmTxcXV2rqWIiIiKyd7KGm6SkJIwbNw6//vordu7ciaKiIvTr1w85OTnlvk+j0SAjI8P4OH/+fDVVTERERPbOUc6db9++3eT5qlWr4O/vj0OHDiEqKqrM90mShMDAQFuXR0RERDWQXY25yc7OBgD4+vqWu97t27cRFhaG0NBQxMXF4cSJE9VRHhEREdUAdhNuDAYDxo8fjx49eqBVq1ZlrhcREYGVK1di06ZN+PLLL2EwGNC9e3dcvHjR7PoFBQXQarUmDyIiIlIuSQgh5C4CAJ555hls27YN+/btQ7169Sr8vqKiIjRv3hzDhw/HrFmzSr0+ffp0zJgxo9Ty7OxsaDSaKtVMRERE1UOr1cLLy6tC39920XPz3HPPYfPmzdi9e7dFwQYAnJyc0L59e5w+fdrs61OmTEF2drbxceHCBWuUTERERHZK1gHFQgg8//zz2LBhAxITExEeHm7xNvR6PY4dO4aBAweafd3FxQUuLi5VLZWIiIhqCFnDzbhx47B69Wps2rQJarUamZmZAAAvLy+4ubkBAEaMGIGQkBAkJCQAAGbOnIlu3bqhcePGyMrKwvz583H+/HmMGTNGtuMgIiIi+yFruFm6dCkAICYmxmT5p59+ilGjRgEA0tPToVL97+rZrVu3MHbsWGRmZsLHxwcdO3bE/v370aJFi+oqm4iIiOyY3Qwori6WDEgiIiIi+1DjBhQTERERWQvDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpiqzhJiEhAZ07d4ZarYa/vz/i4+ORmpp63/etW7cOzZo1g6urK1q3bo2tW7dWQ7VERERUE8gabpKSkjBu3Dj8+uuv2LlzJ4qKitCvXz/k5OSU+Z79+/dj+PDhGD16NFJSUhAfH4/4+HgcP368GisnIiIieyUJIYTcRZS4du0a/P39kZSUhKioKLPrDBs2DDk5Odi8ebNxWbdu3dCuXTssW7bsvvvQarXw8vJCdnY2NBqN1WonIiIi27Hk+9uuxtxkZ2cDAHx9fctcJzk5GX369DFZFhsbi+TkZLPrFxQUQKvVmjyIiIhIuewm3BgMBowfPx49evRAq1atylwvMzMTAQEBJssCAgKQmZlpdv2EhAR4eXkZH6GhoVatm4iIiOyL3YSbcePG4fjx41izZo1VtztlyhRkZ2cbHxcuXLDq9omIiMi+OMpdAAA899xz2Lx5M/bs2YN69eqVu25gYCCuXLlisuzKlSsIDAw0u76LiwtcXFysVisREZFcDAYDCgsL5S7DZpydnaFSVb3fRdZwI4TA888/jw0bNiAxMRHh4eH3fU9kZCR27dqF8ePHG5ft3LkTkZGRNqyUiIhIXoWFhUhLS4PBYJC7FJtRqVQIDw+Hs7NzlbYja7gZN24cVq9ejU2bNkGtVhvHzXh5ecHNzQ0AMGLECISEhCAhIQEA8OKLLyI6OhoLFizAoEGDsGbNGhw8eBAff/yxbMdBRERkS0IIZGRkwMHBAaGhoVbp3bA3BoMBly9fRkZGBurXrw9Jkiq9LVnDzdKlSwEAMTExJss//fRTjBo1CgCQnp5uchK7d++O1atX44033sBrr72GJk2aYOPGjeUOQiYiIqrJiouLkZubi+DgYLi7u8tdjs34+fnh8uXL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GyIiIlIUhhsiIiJSFIYbIiIiUhSGGyIiIlIUhhsiIiJSFIYbIiIiUhSGGyIiIlIUhhsiIiJSFFnDzZ49ezBkyBAEBwdDkiRs3Ljxvu9JTExEhw4d4OLigsaNG2PVqlU2r5OIiIhqDlnDTU5ODtq2bYslS5ZUaP20tDQMGjQIDzzwAI4cOYLx48djzJgx2LFjh40rJSIioprCUc6dDxgwAAMGDKjw+suWLUN4eDgWLFgAAGjevDn27duHRYsWITY21lZlEhERUQ1So8bcJCcno0+fPibLYmNjkZycXOZ7CgoKoNVqTR5ERESkXDUq3GRmZiIgIMBkWUBAALRaLfLy8sy+JyEhAV5eXsZHaGhodZRKREREMqlR4aYypkyZguzsbOPjwoULcpdERERENiTrmBtLBQYG4sqVKybLrly5Ao1GAzc3N7PvcXFxgYuLS3WUR0RERHagRvXcREZGYteuXSbLdu7cicjISJkqIiIiInsja7i5ffs2jhw5giNHjgC4c6v3kSNHkJ6eDuDOJaURI0YY13/66adx9uxZTJo0CX///Tc+/PBDfPPNN5gwYYIc5RMREZEdkjXcHDx4EO3bt0f79u0BABMnTkT79u3x5ptvAgAyMjKMQQcAwsPDsWXLFuzcuRNt27bFggULsHz5ct4GTkREREaSEELIXUR10mq18PLyQnZ2NjQajdzlEBERUQVY8v1do8bcEBEREd0Pww0REREpCsMNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpCsMNERERKQrDDRERESkKww0REREpCsONDQgh5C6BiIio1nKUuwCl0Ol0mP3mPOzauhcOejfoHfLw4ICemDrrVajVarnLIyIiqjXYc2MFly9fRrsmkbj2XWPESR9Co41A9qVibFqxF82COmPCuFeh0+nkLpOIiKhWYM9NFel0OvRs3xcPuL6KBu6d8cWF/yKqzlj09ZsISZIghEDqlt2I/SUeO/ZuZC8OERGRjbHnpopmvzkPhttuiPCMwZ4bHyGqzlhEqGMgSRIAQJIkNPN8EC20IzFn2nyZqyUiIlI+hpsq+mnLHniofCFJEs7lHkRTz2iT10sG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\n", "text/plain": [ "