{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# ML - Classification" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "from pathlib import Path\n", "from sklearn import datasets\n", "\n", "sns.set_theme(style=\"whitegrid\")" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Motivation" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Space Shuttle Challenger Disaster" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "

\"Challenger
By Kennedy Space Center

" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
temp_fnm_bad_rings
0533
1561
2571
3630
4660
\n", "
" ], "text/plain": [ " temp_f nm_bad_rings\n", "0 53 3\n", "1 56 1\n", "2 57 1\n", "3 63 0\n", "4 66 0" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# filepath = Path().resolve().parent / \"data\" / \"challenger.txt\" # If you are running locally\n", "filepath = \"https://raw.githubusercontent.com/aoguedao/neural_computing_workshop/main/data/Challenger.txt\"\n", "challenger = pd.DataFrame(\n", " np.loadtxt(filepath, skiprows=1).astype(int),\n", " columns=[\"temp_f\", \"nm_bad_rings\"]\n", ")\n", "challenger.head()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_20324/3810344009.py:9: UserWarning: Matplotlib is currently using module://matplotlib_inline.backend_inline, which is a non-GUI backend, so cannot show the figure.\n", " fig.show()\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAArsAAAIoCAYAAABpkSNvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABOmklEQVR4nO3deVxU9f7H8feIjA4qIEklrgkxWoLgzd3UXNIKK628dtPMyi0Vtey6tHddsOvNvay0xUpb1XvFpbTSytI2U3NLQXMpFRdEBGU7vz96MD8nUGEYmMPx9Xw8euh8zzKfM5859PbwnTM2wzAMAQAAABZUwdcFAAAAAKWFsAsAAADLIuwCAADAsgi7AAAAsCzCLgAAACyLsAsAAADLIuwCAADAsgi7AAAAsCzCLgAAACyLsAuYyOLFi+V0OhUVFaVDhw4VWN63b1/FxcX5oDJp48aNcjqdWrVqlU+ev7gOHjyogQMHqnnz5nI6nZo4ceIF13U6nXr++efLpCan06nFixd7vI/898jBgwe9WFn58e6775bo9bOyZcuW6c033/R1GYDpEHYBE8rKytL06dN9XUa5NnnyZG3evFmTJk3S+++/rwceeMDXJXlFhw4d9P777+vKK6/0dSk+sWjRIi1ZssTXZZhSYmKiFixY4OsyANMh7AImdOONNyoxMVE7d+70dSll7uzZszIMo8T72b17t6Kjo9W5c2fFxMSoVq1aXqjOd/Jfl5CQEMXExMhut/u6JJSys2fP+roESVJmZqavSwBKhLALmNDDDz+s4OBg/fvf/77oehf7tbjT6dSsWbNcj2fNmiWn06mdO3cqPj5ef/vb39S8eXNNnjxZOTk5Sk5O1kMPPaTY2Fh17NhRr732WqHPee7cOU2ePFlt2rRRdHS0+vTpo+3btxdYb+vWrRo8eLCaN2+uqKgo3XnnnVqxYoXbOvm/kv/66681btw4tWzZUk2aNFFWVtYFj/n333/X6NGj1apVKzVu3Fi33HKLXn/9deXl5Un6/+kWv/32m7788ks5nc4i/9r/vffeU9euXdW4cWPdeuutWr58udvyEydO6Nlnn9Wtt96q2NhYtWrVSvfff79++OGHAvs6cuSIRowYodjYWP3tb3/TyJEjdezYsUvWcKnXpbBpDPnTW7Zs2aJ//OMfatKkiTp16qRXX33V9brk2717tx588EE1adJELVu21HPPPae1a9fK6XRq48aNrvW2b9+uQYMGuV7ntm3bauDAgTp8+PAF6544caJiYmKUnp5eYNnIkSPVunVrZWdnS5K+/fZb9e3bVy1atFB0dLQ6dOig4cOHXzRYdezYUbt379Z3333n6mvHjh1dy9PT0zVlyhR17NhRjRs31o033qiJEycqIyPDbT/501Y+/vhjde3aVdHR0erZs6d+/vlnGYahefPmqWPHjoqNjdX999+v3377zW37/Nf7hx9+UK9evRQdHa0bb7xR06dPV25urtu6WVlZeumll9StWzc1btxYLVu21Lhx43TixIkCxzZo0CB9+umnuvPOOxUVFaXZs2dL+nPqxn333adWrVopJiZG3bt312uvveZ6LfNrWrt2rQ4dOuR6bZxOp6T/PyfO769U+M+PsWPHKjY2Vrt27dKDDz6o2NhY129FinosgNlU9HUBAAqqUqWKhgwZookTJ+rbb79Vq1atvLbvkSNH6vbbb1fv3r21fv16zZs3Tzk5Ofrmm2/0j3/8Qw899JCWLVumqVOnql69err55pvdtp82bZquu+46TZgwQadPn9bs2bPVt29fLV26VHXq1JEkbdiwQQ8//LCaNGmiZ599VtWqVdOKFSs0atQonT17Vj179nTb5/jx49WhQwe98MILyszMVMWKhf9oOnHihHr37q3s7GyNGDFCtWrV0tq1azVlyhTt379fzz77rK6//nq9//77GjZsmOrUqaMxY8ZI0iV/7f/5559r48aNio+Pl8Ph0MKFC/Xoo4/Kz89P3bp1kySlpqZKkoYNG6YaNWooIyNDq1evVt++ffXmm2+qRYsWkv68Ite/f38dPXpUjz32mOrXr6+1a9dq1KhRxepVUV8XSUpJSdHjjz+u/v37a9iwYVq9erX+85//6Morr9Sdd94pSTp69Kj69OmjgIAAPfvsswoJCdHy5csLzFfOyMhQ//79Vbt2bT399NOqUaOGUlJStHHjRp05c+aCNdx1111asGCBVq5cqXvuucc1npaWps8++0z33Xef/P39dfDgQQ0aNEg33HCDJk6cqMDAQB05ckRfffWVsrOz5XA4Ct3/7NmzFR8fr2rVqumZZ56RJNcV7szMTPXp00eHDx/W4MGD5XQ6tXv3bs2cOVO//vqr3nzzTdlsNte+1q5dq+3bt2v06NGy2Wz697//rUGDBunOO+/UgQMH9PTTT+v06dNKSEjQ8OHD9d///tdt+5SUFI0aNUoDBw5UfHy81q5dq5dffllpaWl6+umnJUl5eXl65JFH9OOPP+qhhx5S06ZNdejQIc2aNUtbtmzRxx9/rMqVK7v2uW3bNiUlJWnIkCGqXbu263XYv3+/4uLiVLt2bfn7+2vnzp2aO3eukpOTNXnyZEnSM888o6eeekoHDhxwhWRPZWdna8iQIerdu7cGDBig3NzcYh8LYCoGANP4+OOPjcjISGPLli3GuXPnjE6dOhk9e/Y08vLyDMMwjD59+hi33Xaba/0DBw4YkZGRxscff1xgX5GRkcbMmTNdj2fOnGlERkYar7/+utt6d9xxhxEZGWl8+umnrrHs7GyjZcuWxrBhw1xjGzZsMCIjI40ePXq46jEMwzh48KBx/fXXG0888YRrrFu3bsadd95pZGdnuz3XoEGDjDZt2hi5ublux/vPf/6zSK/P1KlTjcjISGPz5s1u488884zhdDqN5ORk19hNN91kDBw4sEj7jYyMNKKjo42UlBTXWE5OjtGtWzejS5cuF9wuJyfHyM7ONvr162cMHTrUNb5w4UIjMjLSWLNmjdv6Tz755AX7db6LvS75yw4cOOAa69OnT6Gvy6233mo8+OCDrsdTpkwxnE6nsXv3brf1HnzwQSMyMtLYsGGDYRiGsXXrViMyMtJYvXr1RessTI8ePYy///3vbmPvvvuuERkZaezatcswDMNYtWqVERkZaezYsaPY+7/tttuMPn36FBh/5ZVXjIYNGxpbtmxxG89/rrVr17rGIiMjjTZt2hhnzpxxja1evdqIjIw07rjjDrf395tvvmlERkYaO3fudI3lv96F9bdhw4bGoUOHDMMwjMTERCMyMtL45JNP3NbbsmWLERkZabz77ruusZtuuslo1KiR23u4MLm5uUZ2draxZMkSo1GjRkZqaqpr2cCBA42bbrqpwDb5525+f/MV9vNjzJgxRmRkpPHRRx+5rVucYwHMhmkMgEnZ7XaNHDlSv/zyi1auXOm1/Xbo0MHtcXh4uGw2m9q1a+caq1ixourVq1foHSHi4uLcrnDVqlVLsbGxrl+R/vbbb0pOTlb37t0lSTk5Oa7/2rVrp5SUFO3du9dtn3+9enwhGzZsUEREhKKjo93Ge/bsKcMwtGHDhiLtpzCtWrVSjRo1XI/9/Px066236rfffnP71f2iRYvUo0cPRUVF6brrrtP111+vb7/9VklJSa51Nm7cqCpVqqhTp05uz1HcO2kU9XWRpNDQ0AKvi9Pp1O+//+56/P333+vaa69VRETEReuqV6+egoKCNHXqVC1atEh79uwpch09e/bUpk2blJyc7BpbvHixoqKiFBkZKUlq1KiR/P399dRTT2nJkiU6cOBAkfd/IV988YWuvfZaNWrUyO0917ZtW9lsNn333Xdu67do0UIBAQGux+Hh4ZKkdu3aub2/88fPfx0lXbC/eXl5+v777101BQYG6qabbnKrqVGjRgoNDS1Qk9Pp1DXXXFPg2LZv367BgwerRYsWatSoka6//nqNGTNGubm52rdvXzFfqaLp2rWr2+PiHgtgJkxjAEzstttu0+uvv65p06apS5cuXtlnUFCQ22N/f385HA5VqlSpwHhhcy/PD4Tnj+V/mC5/XuqUKVM0ZcqUQms4efKk2+PQ0NAi1Z6amlroB83ypyjkTzPwxIWOK3+/V199td544w0lJCSod+/eGjFihKpXr64KFSpoxowZbuEuNTX1ovsrqqK+LpIUHBxcYMxut+vcuXNuddWuXbvAeldccYXb42rVquntt9/W3LlzNW3aNJ06dUqhoaHq1auXhgwZIn9//wvW0b17d02ZMkVLlizRY489pj179mjr1q2uaQeSVLduXb355puaN2+enn/+eWVkZKhOnTrq27ev+vXrV+RjPt/x48f122+/6frrry90+V/fc4WdBxcbP/91lC79fsmvKS0tTY0bNy5STYX1+/fff9d9992na665RuPHj1etWrVUqVIlbdmyRc8//3ypfIjN4XCoatWqbmPFPRbATAi7gInZbDaNHj1a/fv31wcffFBgeX5A/esHukrzfzyFfcjq2LFjrrBVvXp1SdKgQYMuGND/evXq/CtpFxMcHKyUlJQC40ePHnV7bk9c6Ljyn1eS/ve//6l58+Z67rnn3Nb76zzW4OBgbdmypUjPcTFFfV2KKjg4+KLHeT6n06lp06bJMAzt2rVLixcv1pw5c1S5cmUNHDjwgs8RFBSkTp06aenSpRo5cqQ+/vhjVapUqcDV4xtuuEE33HCDcnNz9csvv+jtt9/WpEmTVKNGDd12223FPrbq1aurUqVKmjRp0gWXe1NR3i/Vq1dXcHCw5s2bV+g+qlSp4va4sH6vWbNGGRkZmjVrlts/9Ipzp5bi/pworI7iHgtgJkxjAEyudevWatOmjebMmVMgVNWoUUOVKlXSrl273MY/++yzUqsnMTHR7dZghw4d0qZNm9S8eXNJUoMGDVS/fn3t3LlTUVFRhf7316tGRdWqVSvt2bNH27ZtcxtfunSpbDab6wNinvj222/dAkxubq5WrFihunXr6uqrr5b0Zwj46y2/du7cqZ9//tltrEWLFjpz5kyBPiQmJnpcnzc0a9ZMu3fvLjAt4a93nTifzWZTw4YNNX78eAUGBhZ47QvTs2dPHT16VOvWrdOyZcvUpUsXBQYGFrqun5+fmjRp4rrye6n92+32Qq9mdujQQQcOHFBwcHCh77nCrmiXxIX6W6FCBTVr1sxVU2pqqvLy8gqtqUGDBpd8nvzgef77zjCMQv/xe6HXJj8k//XnxOeff37J58/njWMBfIUru0A5MHr0aPXs2VPHjx/Xtdde6xq32Wy6/fbb9fHHH6tu3bpq2LChtmzZUqqh6sSJExo6dKh69eql06dPa9asWbLb7Ro0aJBrneeee04DBgzQQw89pB49euiqq67SqVOnlJSUpG3btmnmzJkePfcDDzygpUuXatCgQYqPj1dYWJjWrl2rhQsX6t577y10vmNRVa9eXf369dMjjzziuhtDcnKypk2b5lqnQ4cOeumllzRz5kw1a9ZMe/fu1UsvvaTatWu73XLqzjvv1JtvvqkxY8Zo1KhRqlevntatW6evv/7a4/q8oV+/fvr44481YMAAxcfH64orrlBiYqJrDnWFCn9e//jiiy+0cOFCde7cWXXq1JFhGPr000+VlpamNm3aXPJ52rZtq6uvvlrPPfecUlJSCtx9Y9GiRdqwYYM6dOigmjVr6ty5c/r4448l/fmPu4uJjIzU8uXLtWLFCtWuXVuVKlWS0+lUv3799Omnn6pPnz564IEH5HQ6lZeXpz/++ENff/2163Zr3hIcHKxnn31Wf/zxh+rXr69169bpgw8+0L333quwsDBJf05DWrZsmQYOHKi+ffsqOjpa/v7+Onz4sDZu3KhOnTpdcnpS69at5e/vr0cffVQPP/ywsrKytGjRIqWlpRX62nz66adauHChGjduLJvNpqioKIWGhqp169Z69dVXFRQUpLCwMH377bdavXp1kY/XG8cC+AphFygHrrvuOt12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oR/mU557Yrfbi7Sex2E3PDxcb775ptq1ayd/f3/XeFZWlt544w01aNDA0117LCAgQO3bt9cnn3xSov34+/srIiLCS1WVf5mZmdq3b5/q168vh8Ph63Iue/TDfOiJ+dATc6Ef5lPee7Jnz54ir+tx2B05cqSGDh2qzp07q0uXLgoNDVVKSopWr16tY8eOac6cOZ7uukSKc9uyC7HZbAoICPBCNdbicDh4XUyEfpgPPTEfemIu9MN8ymtPinN3MI/DbocOHTRv3jxNmzZNCxcuVF5enmw2m6KjozV58mS1bt3a0117LCMjQ+vWrVNUVFSZPzcAAADMp0RfKtGqVSu1atVKmZmZSktLU2BgoEeXwjMzM7Vu3TpJ0qFDh5Senq5Vq1ZJkpo3b66QkBCNHz9eS5cu1fbt2yVJP/zwg+bPn68uXbooLCxMR48e1RtvvKGUlBTNmDGjJIcFAAAAi/DKN6g5HI4Szfc4fvy4RowY4TaW/3jBggVq0aKF8vLylJub61oeGhqqrKwsvfjii0pNTZXD4VBsbKyee+45RUdHe1wLAAAArKNEYTc3N1dffvmlkpKSdPbsWbdlNptNQ4cOLdJ+ateurV27dl10nYSEBCUkJLge16tXT/Pnzy9+0QAAALhseBx2T548qfvuu0/Jycmy2WyuD4adP2G4qGEXAAAAKA0ef0/vtGnTVKlSJX3xxRcyDEMffPCBPv30Uz3wwAOqX7++1q5d68UyAQAAgOLzOOxu2LBBDzzwgK688so/d1ShgurWrasxY8aodevWmjJliteKBAAAADzhcdg9fPiwatWqJT8/P1WoUMHt6+ZuuukmrV+/3isFAgAAAJ7yOOxWr15d6enpkqQrr7xSv/76q2vZqVOn3O6cAAAAAPiCxx9Qu/7667V792516NBB7dq100svvaSqVavK399fL774opo0aeLNOgEAAIBi8zjs9unTR/v375f051cHb968WWPGjJEk1a1bV0888YR3KgQAAAA85HHYbd26tesrgUNCQrR06VL9+uuvstlsatCggSpW9Mr3VQAAAAAe81oitdlscjqd3todAAAAUGIlCrvp6el69913tXHjRqWmpio4OFgtWrTQvffeq8DAQG/VCAAAAHjE47B74MAB9evXT7///rvCwsIUGhqqffv26ZtvvtF7772nBQsWqE6dOt6sFQAAACgW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z8nf39811+rTTz/VqVOnJEmBgYFu2+U/zl8O77hUPwIDAzlHfCgnJ0erVq1Sp06dFBAQIEmcIz5WWE8k/l9Slpo1a6bZs2frscce04QJEyT9GWJff/112e12SZfPeULYhW688UbdeOONrsdt27ZVpUqV9NZbb2nw4MG68sor1a9fP7dtOnbsqN69e2vmzJn8gCoFhmEoIyNDs2bN0rXXXivpzznVnTp10vvvv6+mTZtKktuvp853oXF45lL9GDBgAOeID61fv17Hjx9XXFxcgWWcI75xoZ5wnpSdn376SY8//rjuuusudezYUenp6Zo7d64GDBigRYsWuT6gJln/PGEaAwp1yy23KDc3t8CvafNVqFBBN998s5KSknT27Nkyrs76goKCVKNGDVewkqQrr7xSDRo00J49exQUFCSp4L+609LSJBX8VzpK5lL9KAznSNlJTExUcHCw25xqzhHfKqwnheE8KT0TJkxQy5Yt9cQTT6hVq1bq0qWLXnvtNe3du1cffvihpMvnPCHswmOGYfi6BMu60G14DMNQhQoVVLduXfn7+xe4X2J+8OI2Pt51qX5cCOdI6Tt79qw+++wzdevWTf7+/q5xzhHfuVBPLoTzpHQkJSWpYcOGbmMhISG68sortX//fkmXz3lC2EWhVqxYIT8/P1133XWFLs/Ly9Mnn3yia6+9VpUrVy7j6qyvQ4cOOnbsmH799VfX2JEjR5ScnCyn0ym73a6WLVtq5cqVbtslJiYqNDT0gn2DZy7Vj8JwjpSNzz//XGfOnCnwiX/OEd+5UE8Kw3lSesLCwrRt2za3sZSUFB09elS1atWSdPmcJ8zZhR566CG1bNlSkZGRkqTPPvtMH3zwge6//36Fhobq0KFDGjt2rOLi4lS3bl2dOnVKixYt0i+//KJZs2b5uHpr6tKli66//noNHz5cI0aMkN1u15w5cxQSEqJevXpJkoYOHao+ffroySefVPfu3fXTTz/pww8/1PPPP2+J+yKayaX6wTniO8uWLVNYWJj+9re/FVjGOeIbF+oJ50nZuu+++/Svf/1Lzz//vDp16qS0tDS98sorCggI0O233+5a73I4T2wGvz+47E2YMEFfffWVDh8+rLy8PNWvX1/33HOP+vbtK5vNptTUVI0bN07btm3TiRMn5O/vr8aNG2vgwIFuH2yDdx0/flyTJk3SunXrlJOTo2bNmmncuHFut4hZt26dXnzxRSUlJenqq69W//79dd999/mwauu6WD84R3zj1KlTatOmjfr166fHH3+80HU4R8rWxXrCeVK2DMPQBx98oIULF2r//v0KCAhQVFSURo0aVeA3UlY/Twi7AAAAsCxrXJ8GAAAACkHYBQAAgGURdgEAAGBZhF0AAABYFmEXAAAAlkXYBQAAgGURdgEAAGBZhF0A8JGffvpJs2bNUlpamq9L8Ypvv/1WPXv2VExMjJxOp9asWePrkgCAsAsAvrJp0ybNnj3bEmHXMAyNHDlS/v7+evnll/X++++rWbNmvi4LAFTR1wUAAMq/o0ePKjU1VZ07d1arVq18XQ4AuHBlFwB8YNasWXrhhRckSZ06dZLT6ZTT6dTGjRslSStWrNDf//53xcTEKDY2Vg899JC2b9/uto+xY8cqNjZWSUlJeuihhxQTE6O2bdvq1VdflST9/PPPuvfeexUTE6OuXbtqyZIlbtsvXrxYTqdT69ev17hx49S8eXPFxMRo8ODBOnDgQLGOpV27dpKkqVOnyul0qmPHjh6/NgDgTTbDMAxfFwEAl5vDhw9r3rx5evvttzV79myFhoZKkiIiIvTOO+9o+vTp6tmzp26++WZlZ2dr/vz52rVrlz788ENFRERI+jPsJiYmqm7duurdu7ciIiK0bNkyLV68WIMGDdInn3yiAQMG6Oqrr9Y777yjL774Qh9//LEaN24s6c+wO27cONWsWVOtW7dWt27ddPjwYU2fPl12u13/+9//FBgYWKRj2bp1q4YNG6a+ffsqLi5Odrtd1113Xem9gABQRExjAAAfuPrqq1WzZk1JUqNGjVS7dm1J0h9//KFZs2apT58+evLJJ13rt27dWl27dtXs2bM1ffp013h2drZGjhypm2++WZLUvHlzrV27Vq+88oqWLFniCpyNGzdW69atlZiY6Aq7+Ro3bqxJkya5HkdEROjee+/Vu+++qyFDhhTpWHJyciRJNWvWVExMTPFfEAAoJUxjAAAT+frrr5WTk6M77rhDOTk5rv8qVaqkZs2a6bvvvnNb32azqX379q7HFStWVL169RQaGup2ZTU4OFghISH6/fffCzxn9+7d3R43bdpUtWrVck2pAIDyjCu7AGAix44dkyTdfffdhS6vUMH9GoXD4VClSpXcxvz9/RUcHFxgW7vdrnPnzhUYr1GjRqFjqampRawaAMyLsAsAJlK9enVJ0syZMxUWFlYmz5kfsP86Vrdu3TJ5fgAoTYRdAPARu90uSW5XW9u2bauKFStq//796tq1a5nUsWzZMrfn+umnn3To0KELXl0GgPKEsAsAPhIZGSlJeuutt9SjRw9VrFhR11xzjeLj4zV9+nQdOHBA7dq1U2BgoI4dO6atW7fK4XAoPj7eq3X88ssveuKJJ1x3Y5g2bZquuuoq/eMf//Dq8wCALxB2AcBHWrRooUGDBmnJkiX68MMPlZeXpwULFmjQoEEKDw/XggULtHz5cmVlZSk0NFSNGzfWvffe6/U6Jk6cqP/+97969NFHlZWVpRYtWuiJJ54odN4vAJQ33GcXAC5T+ffZ/eijjxQVFeXrcgCgVHDrMQAAAFgW0xgAABdkGIZyc3Mvuo6fn59sNlsZVQQAxcM0BgDABeVPdbiYBQsWqEWLFmVUEQAUD2EXAHBBJ0+e1MGDBy+6zjXXXKOqVauWUUUAUDyEXQAAAFgWH1ADAACAZRF2AQAAYFmEXQAAAFgWYRcAAACWRdgFAACAZRF2AQAAYFmEXQAAAFgWYRcAAACW9X8GCGsiqRTwhAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(8, 6))\n", "sns.scatterplot(\n", " x=\"temp_f\",\n", " y=\"nm_bad_rings\",\n", " data=challenger,\n", " ax=ax\n", ")\n", "ax.set_title(\"Number of bad rings vs temperature\")\n", "fig.show()\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "challenger = challenger.assign(\n", " failure=lambda x: x[\"nm_bad_rings\"].ne(0),\n", " is_failure=lambda x: x[\"failure\"].astype(int),\n", ")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_20324/2432193437.py:10: UserWarning: Matplotlib is currently using module://matplotlib_inline.backend_inline, which is a non-GUI backend, so cannot show the figure.\n", " fig.show()\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAArsAAAIoCAYAAABpkSNvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABijUlEQVR4nO3dd3hUZf7+8XvSE8gkhIROKMFESmhKCSAiiKCAClhQYFFZaQKKogLrWpHioiCgomIBK7IIu4CioAKKFL82kCYklNBLSIaQNpk5vz/4ZdYhCSSTNhzer+viCvOcMp9znjmTO2eec8ZiGIYhAAAAwIR8KroAAAAAoKwQdgEAAGBahF0AAACYFmEXAAAApkXYBQAAgGkRdgEAAGBahF0AAACYFmEXAAAApkXYBQAAgGkRdgEv8vnnnysuLk7x8fE6fPhwvumDBw9W7969K6AyafPmzYqLi9OqVasq5PmL69ChQxo2bJjatm2ruLg4vfjii4XOGxcXp+eff75caoqLi9Pnn3/u8TryXiOHDh0qxcouHx999FGJ9p+ZLV++XO+//35FlwF4HcIu4IVycnI0a9asii7jsjZ16lT9/vvvmjJlihYtWqT77ruvoksqFV26dNGiRYtUrVq1ii6lQnzyySdaunRpRZfhlVasWKGFCxdWdBmA1yHsAl7ouuuu04oVK7Rr166KLqXcZWVlyTCMEq9nz549at68uW688Ua1bNlStWvXLoXqKk7efomIiFDLli0VEBBQ0SWhjGVlZVV0CZKkzMzMii4BKBHCLuCF/v73vys8PFz/+te/LjrfxT4Wj4uL05w5c1yP58yZo7i4OO3atUtjx47VNddco7Zt22rq1KnKzc1VUlKShg4dqlatWqlr1656++23C3zO7OxsTZ06VR07dlTz5s01aNAg7dixI99827Zt04gRI9S2bVvFx8fr9ttv1xdffOE2T95H8j/88IMmTpyo9u3bq0WLFsrJySl0m48cOaLx48crISFBzZo1080336x3331XTqdT0v+GWxw4cEDr169XXFxckT/2//TTT9WjRw81a9ZMt9xyi1auXOk2PSUlRc8++6xuueUWtWrVSgkJCfrb3/6m//u//8u3ruPHj+vhhx9Wq1atdM011+iRRx7RqVOnLlnDpfZLQcMY8oa3bN26Vffee69atGihbt266a233nLtlzx79uzRAw88oBYtWqh9+/Z67rnntHbtWsXFxWnz5s2u+Xbs2KHhw4e79nOnTp00bNgwHTt2rNC6X3zxRbVs2VLp6en5pj3yyCPq0KGD7Ha7JGnjxo0aPHiw2rVrp+bNm6tLly4aM2bMRYNV165dtWfPHm3ZssXVr127dnVNT09P1/Tp09W1a1c1a9ZM1113nV588UVlZGS4rSdv2MqSJUvUo0cPNW/eXP369dNvv/0mwzA0f/58de3aVa1atdLf/vY3HThwwG35vP39f//3f7rrrrvUvHlzXXfddZo1a5YcDofbvDk5OXr99dfVs2dPNWvWTO3bt9fEiROVkpKSb9uGDx+ur7/+Wrfffrvi4+M1d+5cSeeHbgwcOFAJCQlq2bKl+vTpo7ffftu1L/NqWrt2rQ4fPuzaN3FxcZL+d0z8tX+lgt8/JkyYoFatWmn37t164IEH1KpVK9enIkXdFsDb+FV0AQDyq1SpkkaOHKkXX3xRGzduVEJCQqmt+5FHHtGtt96qAQMGaMOGDZo/f75yc3P1448/6t5779XQoUO1fPlyzZgxQ/Xq1dNNN93ktvzMmTPVpEkTTZ48WWfPntXcuXM1ePBgLVu2THXr1pUkbdq0SX//+9/VokULPfvsswoNDdUXX3yhcePGKSsrS/369XNb56RJk9SlSxe99NJLyszMlJ9fwW9NKSkpGjBggOx2ux5++GHVrl1ba9eu1fTp03Xw4EE9++yzatq0qRYtWqTRo0erbt26evLJJyXpkh/7f/vtt9q8ebPGjh2r4OBgffzxx3r00Ufl6+urnj17SpJSU1MlSaNHj1ZkZKQyMjK0evVqDR48WO+//77atWsn6fwZufvvv18nTpzQY489pvr162vt2rUaN25csfqqqPtFkk6ePKnHH39c999/v0aPHq3Vq1fr5ZdfVrVq1XT77bdLkk6cOKFBgwYpJCREzz77rCIiIrRy5cp845UzMjJ0//33q06dOnr66acVGRmpkydPavPmzTp37lyhNfTv318LFy7Ul19+qTvvvNPVbrPZ9M0332jgwIHy9/fXoUOHNHz4cF177bV68cUXZbVadfz4cX3//fey2+0KDg4ucP1z587V2LFjFRoaqmeeeUaSXGe4MzMzNWjQIB07dkwjRoxQXFyc9uzZo9mzZ+vPP//U+++/L4vF4lrX2rVrtWPHDo0fP14Wi0X/+te/NHz4cN1+++1KTk7W008/rbNnz2ratGkaM2aM/vOf/7gtf/LkSY0bN07Dhg3T2LFjtXbtWr3xxhuy2Wx6+umnJUlOp1OjRo3Szz//rKFDh6p169Y6fPiw5syZo61bt2rJkiUKCgpyrXP79u1KTEzUyJEjVadOHdd+OHjwoHr37q06derI399fu3bt0rx585SUlKSpU6dKkp555hn985//VHJysiske8put2vkyJEaMGCAHnzwQTkcjmJvC+BVDABeY8mSJUZsbKyxdetWIzs72+jWrZvRr18/w+l0GoZhGIMGDTJ69erlmj85OdmIjY01lixZkm9dsbGxxuzZs12PZ8+ebcTGxhrvvvuu23y33XabERsba3z99deuNrvdbrRv394YPXq0q23Tpk1GbGys0bdvX1c9hmEYhw4dMpo2bWr84x//cLX17NnTuP322w273e72XMOHDzc6duxoOBwOt+194oknirR/ZsyYYcTGxhq///67W/szzzxjxMXFGUlJSa62G264wRg2bFiR1hsbG2s0b97cOHnypKstNzfX6Nmzp9G9e/dCl8vNzTXsdrsxZMgQ46GHHnK1f/zxx0ZsbKyxZs0at/mfeuqpQvvrry62X/KmJScnu9oGDRpU4H655ZZbjAceeMD1ePr06UZcXJyxZ88et/keeOABIzY21ti0aZNhGIaxbds2IzY21li9evVF6yxI3759jbvvvtut7aOPPjJiY2ON3bt3G4ZhGKtWrTJiY2ONnTt3Fnv9vXr1MgYNGpSv/c033zSuvvpqY+vWrW7tec+1du1aV1tsbKzRsWNH49y5c6621atXG7GxscZtt93m9vp+//33jdjYWGPXrl2utrz9XVD/Xn311cbhw4cNwzCMFStWGLGxscZXX33lNt/WrVuN2NhY46OPPnK13XDDDUbjxo3dXsMFcTgcht1uN5YuXWo0btzYSE1NdU0bNmyYccMNN+RbJu/YzevfPAW9fzz55JNGbGys8e9//9tt3uJsC+BtGMYAeKmAgAA98sgj+uOPP/Tll1+W2nq7dOni9jgmJkYWi0WdO3d2tfn5+alevXoF3hGid+/ebme4ateurVatWrk+Ij1w4ICSkpLUp08fSVJubq7rX+fOnXXy5Ent27fPbZ0Xnj0uzKZNm9SoUSM1b97crb1fv34yDEObNm0q0noKkpCQoMjISNdjX19f3XLLLTpw4IDbR/effPKJ+vbtq/j4eDVp0kRNmzbVxo0blZiY6Jpn8+bNqlSpkrp16+b2HMW9k0ZR94skRUVF5dsvcXFxOnLkiOvxTz/9pKuuukqNGjW6aF316tVTWFiYZsyYoU8++UR79+4tch39+vXTr7/+qqSkJFfb559/rvj4eMXGxkqSGjduLH9/f/3zn//U0qVLlZycXOT1F+a7777TVVddpcaNG7u95jp16iSLxaItW7a4zd+uXTuFhIS4HsfExEiSOnfu7Pb6zmv/636UVGj/Op1O/fTTT66arFarbrjhBreaGjdurKioqHw1xcXFqUGDBvm2bceOHRoxYoTatWunxo0bq2nTpnryySflcDi0f//+Yu6pounRo4fb4+JuC+BNGMYAeLFevXrp3Xff1cyZM9W9e/dSWWdYWJjbY39/fwUHByswMDBfe0FjL/8aCP/alncxXd641OnTp2v69OkF1nDmzBm3x1FRUUWqPTU1tcALzfKGKOQNM/BEYduVt94aNWrovffe07Rp0zRgwAA9/PDDqlKlinx8fPTqq6+6hbvU1NSLrq+oirpfJCk8PDxfW0BAgLKzs93qqlOnTr75qlat6vY4NDRUH3zwgebNm6eZM2cqLS1NUVFRuuuuuzRy5Ej5+/sXWkefPn00ffp0LV26VI899pj27t2rbdu2uYYdSFJ0dLTef/99zZ8/X88//7wyMjJUt25dDR48WEOGDCnyNv/V6dOndeDAATVt2rTA6Re+5go6Di7W/tf9KF369ZJXk81mU7NmzYpUU0H9feTIEQ0cOFANGjTQpEmTVLt2bQUGBmrr1q16/vnny+QituDgYFWuXNmtrbjbAngTwi7gxSwWi8aPH6/7779fn332Wb7peQH1wgu6yvIXT0EXWZ06dcoVtqpUqSJJGj58eKEB/cKzV389k3Yx4eHhOnnyZL72EydOuD23JwrbrrznlaT//ve/atu2rZ577jm3+S4cxxoeHq6tW7cW6Tkupqj7pajCw8Mvup1/FRcXp5kzZ8owDO3evVuff/65XnvtNQUFBWnYsGGFPkdYWJi6deumZcuW6ZFHHtGSJUsUGBiY7+zxtddeq2uvvVYOh0N//PGHPvjgA02ZMkWRkZHq1atXsbetSpUqCgwM1JQpUwqdXpqK8nqpUqWKwsPDNX/+/ALXUalSJbfHBfX3mjVrlJGRoTlz5rj9oVecO7UU932ioDqKuy2AN2EYA+DlOnTooI4dO+q1117LF6oiIyMVGBio3bt3u7V/8803ZVbPihUr3G4NdvjwYf36669q27atJKlhw4aqX7++du3apfj4+AL/XXjWqKgSEhK0d+9ebd++3a192bJlslgsrgvEPLFx40a3AONwOPTFF18oOjpaNWrUkHQ+BFx4y69du3bpt99+c2tr166dzp07l68fVqxY4XF9paFNmzbas2dPvmEJF9514q8sFouuvvpqTZo0SVarNd++L0i/fv104sQJrVu3TsuXL1f37t1ltVoLnNfX11ctWrRwnfm91PoDAgIKPJvZpUsXJScnKzw8vMDXXEFntEuisP718fFRmzZtXDWlpqbK6XQWWFPDhg0v+Tx5wfOvrzvDMAr847ewfZMXki98n/j2228v+fx5SmNbgIrCmV3gMjB+/Hj169dPp0+f1lVXXeVqt1gsuvXWW7VkyRJFR0fr6quv1tatW8s0VKWkpOihhx7SXXfdpbNnz2rOnDkKCAjQ8OHDXfM899xzevDBBzV06FD17dtX1atXV1pamhITE7V9+3bNnj3bo+e+7777tGzZMg0fPlxjx45VrVq1tHbtWn388ce65557ChzvWFRVqlTRkCFDNGrUKNfdGJKSkjRz5kzXPF26dNHrr7+u2bNnq02bNtq3b59ef/111alTx+2WU7fffrvef/99Pfnkkxo3bpzq1aundevW6YcffvC4vtIwZMgQLVmyRA8++KDGjh2rqlWrasWKFa4x1D4+589/fPfdd/r444914403qm7dujIMQ19//bVsNps6dux4yefp1KmTatSooeeee04nT57Md/eNTz75RJs2bVKXLl1Us2ZNZWdna8mSJZLO/3F3MbGxsVq5cqW++OIL1alTR4GBgYqLi9OQIUP09ddfa9CgQbrvvvsUFxcnp9Opo0eP6ocffnDdbq20hIeH69lnn9XRo0dVv359rVu3Tp999pnuuece1apVS9L5YUjLly/XsGHDNHjwYDVv3lz+/v46duyYNm/erG7dul1yeFKHDh3k7++vRx99VH//+9+Vk5OjTz75RDabrcB98/XXX+vjjz9Ws2bNZLFYFB8fr6ioKHXo0EFvvfWWwsLCVKtWLW3cuFGrV68u8vaWxrYAFYWwC1wGmjRpol69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i87z9n/+ULtmNct8SENGRoaaN2/u1vbSSy/pueeecz3Ozc1VnTp1dO+992rfvn1q0KBBgevatm2bHn30Ud1yyy2utttvv931/7lz58pqteq9995TYGCgJKl169bq1q2bFi9erIEDB5bilhWMsAsAAFDGdiSddhu6UJBTqZnakXRa8Y0iy7SWoKAgLVy4UDk5OQoICJCPj4/q1q2rZcuW6f3339eBAweUkZHhmn///v2Fht0mTZro3Xffla+vrzp27Kh69eq5Td+wYYNuueUW+fr6Kjc3V5JktVoVFxfndga4LBF2AQAAyliK7eJBt7jzlYSPj4+aNWvmdoHa6tWr9eSTT+ruu+/WuHHjFB4erpMnT+qhhx5SdnZ2oeuaOXOmZs6cqVmzZum5555TgwYN9Oijj+qmm26SJJ05c0YLFizQggUL8i1bXneAIOwCAACUsQhr0YJdUecrbatWrVLjxo31/PPPu9q2bNlyyeWqVaumqVOnyul06o8//tAbb7yhcePGadWqVapbt67CwsJ0/fXX69577823bKVKlUp1GwpD2AUAAChjTRpWVdWwoIsOZYgMD1aThlXLsar/ycrKkr+/v1vb8uXLi7y8j4+PmjdvrkceeUTffvutDhw4oLp16yohIUF79uxRkyZNKuwWZ4RdAACAMubrY9Gw2+MLvBtDngdva1au99v9qw4dOuj555/X3Llz1bp1a61fv14bN2686DJnz57V0KFDddttt6lBgway2+364IMPZLVa1aRJE0nS2LFjdccdd2jo0KG66667FBkZqVOnTmnLli269tpr1bt37zLfNsIuAABAOejQvJYmDmmT7z67keHBevC2ZhV6n90BAwbo0KFD+uijj/Tuu++qU6dOevnll3XXXXcVukxgYKBiY2P1wQcf6OjRowoKClKzZs30zjvvKCIiQpJUr149LV682DWmNyMjQ1FRUWrTpo3i4uLKZdsshmEY5fJMl4lt287fFiQ+Pr6CK/EeGRkZ2rlzpxo3bqyQkJCKLueKR394H/rE+9An3uVy74+srCzX7bdK46Kqiv4GNUlyOBxe/w1qF9vvxclrnNkFAAAoR74+ljK/vRj+x6eiCwAAAADKCmEXAAAApkXYBQAAgGkRdgEAAGBahF0AAACYFmEXAAAApkXYBQAAgGkRdgEAAGBafKkEAADAFaAoX887depU9evXrxyqKT+EXQAAgCvAokWLXP93Op265557NHDgQN16662u9ujo6IoorUwRdgEAAK4ALVu2dP3f4XBIkmrWrOnWfqHs7GwFBgaWcWVlizG7AAAA5chwOpR54A+lb/9emQf+kOF0VHRJkqQ5c+aoVatW2rp1q+6++27Fx8frgw8+0ObNmxUXF6dt27a5zT98+HANHjzYrS0xMVEjR47UNddco5YtW2rYsGE6ePBgeW5GPpzZBQAAKCfndm3Sqa/flePsaVebb2hVRd70gCpd3b4CKzvPbrdr/PjxGjJkiB599FGFhYUpLS2tSMsmJydrwIABuuqqqzRt2jRZLBbNmzdP9913n1atWqWAgIAyrr5ghF0AAIBycG7XJh1f8q987Y6zp3V8yb9Uvf/jFR547Xa7xo0bp5tvvtnVtnnz5iItO3fuXFmtVr333nuuoQ+tW7dWt27dtHjxYg0cOLBMar4UhjEAAACUMcPp0Kmv373oPKdWv+sVQxquv/56j5bbsGGDunXrJl9fX+Xm5io3N1dWq1VxcXH6448/SrnKouPMLgAAQBnLSt7pNnShIA7baWUl71RwvWblVFV+wcHBCgkJ8WjZM2fOaMGCBVqwYEG+aUFBQSUtzWOEXQAAgDLmSD9TqvOVFYvFkq8tb0iC3W53a09LS5O/v7/rcVhYmK6//nrde++9+dZRqVKlUq606Ai7AAAAZcy3cpVSna881ahRQ9L5Oy20bt1aknT69Gnt3r1bzZr97yx0QkKC9uzZoyZNmsjX17dCai0IYRcAAKCMBdVtLN/QqhcdyuBrraqguo3LsaqiqVGjhlq0aKHXXntNoaGh8vX11VtvvaXKlSu7zTd27FjdcccdGjp0qO666y5FRkbq1KlT2rJli6699lr17t27QurnAjUAAIAyZvHxVeRND1x0nsjuD8ji4z1nRP9qxowZio6O1sSJE/Wvf/1L999/v5o0aeI2T7169bR48WKFh4frueee09ChQzVjxgxlZmYW6auKywpndgEAAMpBpavbq3r/x/PfZ9daVZHdy/8+u7/88ovbhWNjxozRmDFjCpw3OjpaCxcudGu75ZZb8s1Xv359zZo1q1TrLCnCLgAAQDmpdHV7hcS2OX93hvQz8q1cRUF1G3vtGV0zIOwCAACUI4uPb4XeXuxKw5hdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAACKwDCMii7hilJa+5uwCwAAcBF5X4mbkZFRwZVcWfL291+/ktgT3I0BAADgInx9fRUeHq4TJ05IkkJCQmSxWCq4qpJxOBzKzs6WJK/6al/p/BndjIwMnThxQuHh4SWuj7ALAABwCTVq1JAkV+C93DmdTuXm5srPz08+Pt75QX94eLhrv5cEYRcAAOASLBaLatasqWrVqslut1d0OSWWmZmppKQkRUdHKzg4uKLLycff37/UzjgTdgEAAIrI19fX6z7294TT6ZQkBQYGun1lsBl553lrAAAAoBQQdgEAAGBahF0AAACYFmEXAAAApkXYBQAAgGkRdgEAAGBahF0AAACYFmEXAAAApkXYBQAAgGkRdgEAAGBahF0AAACYFmEXAAAApkXYBQAAgGkRdgEAAGBahF0AAACYFmEXAAAApuU1YXffvn0aOnSoWrZsqYSEBE2ePFlZWVmXXC4jI0MzZszQjTfeqBYtWuimm27SnDlzlJOTUw5VAwAAwJv5VXQBkmSz2TRkyBDVqlVLs2fPVkpKiqZOnarU1FTNmDHjoss+++yzWrNmjcaNG6errrpKW7du1ezZs5WWlqannnqqnLYAAAAA3sgrwu6nn34qm82mZcuWKSIiQpLk6+ur8ePHa+TIkYqJiSlwudzcXK1atUp///vfNXjwYElS+/btdeTIEX3xxReEXQAAgCucVwxjWL9+vRISElxBV5J69OihgIAArVu3rtDlDMOQw+FQaGioW7vVapVhGGVWLwAAAC4PXhF2ExMT8529DQgIUHR0tBITEwtdzt/fX/369dMHH3yg33//XefOndOmTZv02WefaeDAgWVdNgAAALycVwxjsNlsslqt+dqtVqvS0tIuuuyzzz6rZ555RnfddZerbfDgwRo9erTH9RiGoYyMDI+XN5vMzEy3n6hY9If3oU+8D33iXegP73O594lhGLJYLEWa1yvCbmGKsiEzZszQ2rVr9cILL6hBgwbavn27Zs+eLavVqrFjx3r0vHa7XTt37vRoWTPbv39/RZeAv6A/vA994n3oE+9Cf3ify7lPAgICijSfV4Rdq9Uqm82Wr/3s2bOFXpwmSX/++afeffddvf766+rWrZskqU2bNrJYLHrppZc0cOBAVa1atdj1+Pv7q1GjRsVezqwyMzO1f/9+1a9fX8HBwRVdzhWP/vA+9In3oU+8C/3hfS73Ptm7d2+R5/WKsBsTE5NvbG5OTo4OHjyo/v37F7pc3oY2btzYrb1x48bKzc3V4cOHPQq7FotFISEhxV7O7IKDg9kvXoT+8D70ifehT7wL/eF9Ltc+KeoQBslLLlDr3LmzNm3apDNnzrjaVq9erZycHF1//fWFLle7dm1J0vbt293a//jjD0lSnTp1yqBaAAAAXC684szugAED9OGHH2rUqFEaNWqUTp8+rWnTpqlPnz5uwxgmTZqkZcuWaceOHZKkZs2aqXnz5nrmmWd06tQpNWjQQNu2bdPrr7+uW265xe1WZgAAALjyeEXYtVqtWrBggSZPnqwxY8YoKChIvXv31vjx493mczqdcjgcrse+vr6aN2+eXn31Vb399ts6deqUatasqUGDBmnEiBHlvRkAAADwMl4RdiWpQYMGeueddy46z7Rp0zRt2jS3tqpVq+r5558vy9IAAABwmfKKMbsAAABAWSDsAgAAwLQIuwAAADAtwi4AAABMi7ALAAAA0yLsAgAAwLQIuwAAADAtwi4AAABMi7ALAAAA0yLsAgAAwLQIuwAAADAtwi4AAABMi7ALAAAA0yLsAgAAwLQIuwAAADAtwi4AAABMi7ALAAAA0yLsAgAAwLQIuwAAADAtwi4AAABMi7ALAAAA0yLsAgAAwLQIuwAAADAtwi4AAABMi7ALAAAA0yLsAgAAwLQIuwAAADAtwi4AAABMi7ALAAAA0yLsAgAAwLQIuwAAADAtwi4AAABMi7ALAAAA0yLsAgAAwLQIuwAAADAtwi4AAABMi7ALAAAA0yLsAgAAwLQIuwAAADAtwi4AAABMi7ALAAAA0yLsAgAAwLQIuwAAADAtwi4AAABMi7ALAAAA0yLsAgAAwLQIuwAAADAtwi4AAABMi7ALAAAA0yLsAgAAwLQIuwAAADAtwi4AAABMi7ALAAAA0yLsAgAAwLQIuwAAADAtwi4AAABMi7ALAAAA0yLsAgAAwLQIuwAAADAtwi4AAABMi7ALAAAA0yLsAgAAwLQIuwAAADAtwi4AAABMi7ALAAAA0yLsAgAAwLQIuwAAADAtwi4AAABMi7ALAAAA0yLsAgAAwLQIuwAAADAtrwm7+/bt09ChQ9WyZUslJCRo8uTJysrKKtKyqampevbZZ9WpUyfFx8erR48e+vTTT8u4YgAAAHg7v4ouQJJsNpuGDBmiWrVqafbs2UpJSdHUqVOVmpqqGTNmXHTZc+fOafDgwQoMDNSkSZNUtWpVHThwQHa7vZyqBwAAgLfyirD76aefymazadmyZYqIiJAk+fr6avz48Ro5cqRiYmIKXfbNN99UVlaWFi9erKCgIElSu3btyqVuAAAAeDevGMawfv16JSQkuIKuJPXo0UMBAQFat27dRZddsmSJ7rjjDlfQBQAAAPJ4RdhNTEzMd/Y2ICBA0dHRSkxMLHS55ORknTp1SlarVcOHD1ezZs3Url07Pffcc0Ue7wsAAADz8ophDDabTVarNV+71WpVWlpaocudOnVKkvTSSy+pZ8+eevvtt7V371698sorstvtmjx5skf1GIahjIwMj5Y1o8zMTLefqFj0h/ehT7wPfeJd6A/vc7n3iWEYslgsRZrXK8JuYS61IU6nU5IUExOjqVOnSpISEhKUm5url156SQ8//LCioqKK/bx2u107d+70rGgT279/f0WXgL+gP7wPfeJ96BPvQn94n8u5TwICAoo0n1eEXavVKpvNlq/97NmzF704LTw8XJLUvn17t/b27dvL6XQqMTHRo7Dr7++vRo0aFXs5s8rMzNT+/ftVv359BQcHV3Q5Vzz6w/vQJ96HPvEu9If3udz7ZO/evUWe1yvCbkxMTL6xuTk5OTp48KD69+9f6HJ169aVv79/vnbDMCRJPj6eDUm2WCwKCQnxaFkzCw4OZr94EfrD+9An3oc+8S70h/e5XPukqEMYJC+5QK1z587atGmTzpw542pbvXq1cnJydP311xe6XEBAgDp27KiNGze6tW/cuFF+fn6cnQUAALjCeUXYHTBggEJDQzVq1Ch9//33WrZsmV544QX16dPHbRjDpEmT1KRJE7dlH3roIe3evVtPPPGEfvjhB73//vuaM2eOBg4c6HYrMwAAAFx5vGIYg9Vq1YIFCzR58mSNGTNGQUFB6t27t8aPH+82n9PplMPhcGtr3ry53nzzTb388ssaMWKEwsPDNWjQID388MPluQkAAADwQl4RdiWpQYMGeueddy46z7Rp0zRt2rR87R07dlTHjh3LqjQAAABcprxiGAMAAABQFgi7AAAAMK0Shd2UlBS9/PLLuvvuu9WjRw/t2bNHkvTpp59qx44dpVIgAAAA4CmPw25ycrJuvfVWffDBB7JYLDp48KBycnIkSbt379YH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pt17772qV69eqRQIAAAAeKpYZ3aPHDniGot75MgRnTlzRlWqVJHNZtORI0dc/2JjYxUYGFisQvbt26ehQ4eqZcuWSkhI0OTJk5WVlVWsdaxevVpxcXHq3bt3sZYDAACAORXrzG63bt20aNEiNW/eXF27dpXFYrno/Dt37izSem02m4YMGaJatWpp9uzZSklJ0dSpU5WamqoZM2YUaR1ZWVmaOnWq6w4RAAAAQLHC7pQpU1S3bl3X/y8Vdovq008/lc1m07JlyxQRESFJ8vX11fjx4zVy5EjFxMRcch1vvvmmatWqpTp16uiPP/4olboAAABweStW2M27j64k9evXr9SKWL9+vRISElxBVzp/r95JkyZp3bp1lwy7Bw8e1HvvvadPP/1U77//fqnVBQAAgMubx3djKE2JiYn5Am1AQICio6OVmJh4yeVffPFF3Xbbbbr66qvLqkQAAABchjy+G0Npstlsslqt+dqtVqvS0tIuuuy3336rX3/9VatWrSq1egzDUEZGRqmt73KXmZnp9hMVi/7wPvSJ96FPvAv94X0u9z4xDKPIw2m9IuwW5lIbkp2drSlTpmjMmDFuQyBKym63F/niuivJ/v37K7oE/AX94X3oE+9Dn3gX+sP7XM59EhAQUKT5vCLsWq1W2Wy2fO1nz5696HjdBQsWyMfHR7169XItb7fb5XQ6ZbPZFBQUVOQd8Vf+/v5q1KhRsZczq8zMTO3fv1/169dXcHBwRZdzxaM/vA994n3oE+9Cf3ify71P9u7dW+R5vSLsxsTE5Bubm5OTo4MHD6p///6FLpeUlKQDBw4oISEh37Q2bdro2Wef1T333FPseiwWi0JCQoq9nNkFBwezX7wI/eF96BPvQ594F/rD+1yufVKcO4J5Rdjt3Lmz3njjDdeXVEjnvyAiJydH119/faHLPfjgg253iJCkt956S/v27dPUqVNVv379siwbAAAAXs4r7sYwYMAAhYaGatSoUfr++++1bNkyvfDCC+rTp4/bMIZJkyapSZMmrscxMTFq166d27+oqCiFhISoXbt2ql69ekVsDgAAALyEV5zZtVqtWrBggSZPnqwxY8YoKChIvXv31vjx493mczqdcjgcFVQlAAAALjdeEXYlqUGDBnrnnXcuOs+0adM0bdq0S84DAAAASF4yjAEAAAAoC4RdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKblV9EF5Nm3b58mT56sn3/+WcHBwerVq5fGjx+voKCgQpdJT0/Xe++9p/Xr12vfvn3y8/NT06ZN9eijj6pp06blWD0AAAC8kVec2bXZbBoyZIjOnTun2bNn68knn9Ty5cv11FNPXXS5I0eOaNGiRerQoYNmzpypqVOnyul0asCAAdq+fXs5VQ8AAABv5RVndj/99FPZbDYtW7ZMERERkiRfX1+NHz9eI0eOVExMTIHL1alTR6tXr1ZwcLCrrUOHDurWrZs+/PBDTZ06tVzqBwAAgHfyijO769evV0JCgivoSlKPHj0UEBCgdevWFbpcSEiIW9CVpMDAQMXExOjEiRNlVi8AAAAuD14RdhMTE/OdvQ0ICFB0dLQSExOLta6MjAzt3LlTDRs2LM0SAQAAcBnyimEMNptNVqs1X7vValVaWlqx1jVr1ixlZmZq0KBBHtdjGIYyMjI8Xt5sMjMz3X6iYtEf3oc+8T70iXehP7zP5d4nhmHIYrEUaV6vCLuFKc6GSNLy5cu1YMECPf3006pXr57Hz2u327Vz506Plzer/fv3V3QJ+Av6w/vQJ96HPvEu9If3uZz7JCAgoEjzeUXYtVqtstls+drPnj1b6MVpF9qwYYMmTpyooUOHauDAgSWqx9/fX40aNSrROswkMzNT+/fvV/369fONkUb5oz+8D33ifegT70J/eJ/LvU/27t1b5Hm9IuzGxMTkG5ubk5OjgwcPqn///pdcfuvWrRo9erR69uypxx9/vMT1WCwWhYSElHg9ZhMcHMx+8SL0h/ehT7wPfeJd6A/vc7n2SXE++feKC9Q6d+6sTZs26cyZM6621atXKycnR9dff/1Fl01MTNSDDz6o1q1ba+rUqcXaeAAAAJibV4TdAQMGKDQ0VKNGjdL333+vZcuW6YUXXlCfPn3chjFMmjRJTZo0cT0+ffq0hg4dKn9/f/3973/X9u3b9dtvv+m3337Tjh07KmJTAAAA4EW8YhiD1WrVggULNHnyZI0ZM0ZBQUHq3bu3xo8f7zaf0+mUw+FwPd67d6+OHj0qSbrvvvvc5q1du7a+/fbbMq8dAAAA3ssrwq4kNWjQQO+8885F55k2bZqmTZvmetyuXTvt3r27rEsDAADAZcorhjEAAAAAZYGwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0vCbs7tu3T0OHDlXLli2VkJCgyZMnKysrq0jLLl26VD179lR8fLx69+6tL7/8soyrBQAAwOXAr6ILkCSbzaYhQ4aoVq1amj17tlJSUjR16lSlpqZqxowZF1121apVmjBhgoYNG6aOHTtqzZo1GjdunEJDQ9WpU6dy2gIAZcUwDGVk58rPx6LAAK94yypz2Tm5ynUaCgn0k8ViKfH60jNylJXjkDXEXwGlsA9zc53KtucqMMBPfr4lP2ficDiVlZOrAH8/+fuVwvqchnJyDYWFR5R4XWUlM9suSQoO9C+V9WXl5MrpNBQSVDrrK22GYZE1PFJSyV/PkpRttysjy6GQIF8F+nvfNjudhjJzcuXna1Ggf+m8b2Vk2eXjY1FQKb0P5jqksPCqpfIeI0lZOQ45nU6vfA16xW+OTz/9VDabTcuWLVNExPk3J19fX40fP14jR45UTExMocu++uqr6tmzpx577DFJUvv27bVv3z7Nnj2bsAtc5k6cydCmbUf147ajqhTkp1s7x6h+TavCKgdWdGllIi09W/uP2vTf9YlKz7SrQ/NaSmhWU9UiQjxa38nUDB0/namVG5KUYstS4/oR6tYmWjUiQuTv71vs9WXl5Or46Qz99/tEHTqRrkZ1wnVzh/qqFhGiAL/iry8316njZzL01cYD2n0wRTUjK+vW6xqqZmQlBQcW/9eTYRg6npKh9b8e0s+7Tii8cqBu7Ryq6Op+Cq0UUOz1lYXTaZnannRaX206IIvFopsT6qlx/aqKCAvyaH1nzmYp8VCa/vt9oux2p264tq5ax1VTZHhwKVfumXOZdh09la7/rE/SiTMZatrgnLq3i1a1KiHy9eAPpfRMu06kZGjFhiQdOp6u6OqVdUvHhqpRNcRrQtbxlAz98Pthbdl+TNbKgbrtuoaKrmGV1cPX4KnUTP2867jW/nxIAf6+6nNdQzWqE6bwUM9eMylpmdq5P0VfbjwgwzB0UztfNYuJVNUwz14zqWezlXQkTcu/T1RWtkOdW9XWtY2rK6qKZ+9bZcFiGIZR0UUMGjRIoaGheuONN1xtOTk5uuaaazRu3Dg98MADBS6XnJysG2+8UXPnzlX37t1d7UuXLtXEiRP1448/usJzUW3btk2SFB8f78GWmFNGRoZ27typxo0bKyTEe168V6orpT+OnT6nJ+f+oBSb+3CmHu3r6W+3NJa1kvcE3tLoE9u5bH345S59uXG/W3uENUjTR3dSjaqVirW+FFumvvkpWQu/2OnWHhzopykjO6pR3fBirS/X4dRPO45p6oKf9NffGn6+Fj0/rIOaxRT/DNGu/Sma9MYG2XOdbu2PDbxGHeJrKqCYgTz5+Fk9Med7pWfa3drvuSlOt3WOUaXgig1Dp9MyNfndzdp7KM2tvUmDCD0x+Npih43Us1l67d9btemPo27ttSIrafKIDhUeNrJzcvXdz8l67d9b3doDA3w1/aFOiqkTXqz12XOd+nnncU1d+JOczv+9CH18LJp0Xxu1jqteKp8MlMSRk+l6fM73sp3LcWvvf0Mj9e96lUJDihd4T57J0D/m/aijp865tSfE19So/i0UHlq898HTaZl66YP/0459KW7tsXXDNen+tsV+DaalZ2v+f7Zp7S+H3dqrR4RoyqiOqlaGr8Hi5DWvGLObmJiY7+xtQECAoqOjlZiYWOhySUlJkqSGDRu6tcfExMgwDNd0AJeX7Jxcfbbmz3xBV5K+2nRAJ1IyK6CqsnXiTGa+oCtJKbYsLVqzW9k5ucVaX3qGXR9+uTNfe2Z2ruYt3arjKecKWKpwKbYszfzkV114eiTXYejlj39WSlrRrrH46/pe+eSXfEFXkuZ+9pvOnM0u1vrOZdr19n+25Qu6kvTJ17t15mzx6isLP+04ni/oStKOfSnakXS62Os7cOxsvqArSUdOndPqLQflcOTft+XpzNlszft8W7727ByHXl30q9LSi9fHJ1MzNGfxb25BVzo/ZGD2ot90MjWjRPWWVGa2Xe+v3JEv6ErSku/2Fvh+djEOh1NfbTqQL+hK0sZtR3Xw+Nli1/hH4ul8QVeS/kxO1S+7ThR7fYdPpucLutL5s9vLv0+SPddR7HWWBa8YxmCz2WS1WvO1W61WpaXlf2PIkzftwmXDwsLcpheXYRjKyKjYg8abZGZmuv1ExboS+iM906l1vxwqdPq6Xw+pTlSQnM6K/WWep6R94uPjo+9/zf8LI8+6Xw7rnu5xqhyU/5doQXx9fbVzf4qchXxut/vAGWVlO4r1Pnc6NVOZ2QUH7tNpWUpNz1ZwQNE/KLSl5xT4S1ySsu0OHT2VruJ8Spt2zqFfd58sdPpvf55U1VA/VdSHmVl2Q6s27S90+sof9yu+UYQCinwy20dfbtxX6NTVWw7oxjZ1VDmo4s5p7TuSJkchL8J9R2xKS8+Wv0/Rw5AtPafAIClJtnM5sqXnKDyk4n532zKc2lzAHx95tmw/purhAUV+30rPcmrNTwcLnf7lxn1qVLuyZBRtfTm50hc/Fv6a+eLH/brm6kgF+RftExpfX1+t3nyg0Onf/HRQvTvVV2gZvQYNwyjyp0leEXYLU9QNuXCevDczTwdd2+127dyZ/4zIlW7//v0VXQL+wsz9UbV6tJwXCSX2XIeSk5Nls9nKsapL87RPQkNDZc8t/Myt03n+D/DkfYX/4vuriIgIXeqkntMwivU+5xda+6LTs3NytHNn4Z/EXahSRN2Lry87R7t37y5yMKhSLfqi03Ny7Nq3b1+F/ZEYFlFNDkfhr2mn09DJkydlO3OqSOsLD69y0fU5HIbOnj2r5H1Hil1rafD391e2Pf9JrL/Kys7Szp3JRV5nUJV6F53uNJwV+rs7onp0oX9gSlJOTq7279+vc+eK9qlKeGTtQv9YkM738ZEjR5SWeqZI6wurEnXR9TkNQ6dPp8h2pmhneMPDw5V7kTcah9PQufRzOrSv8BMXJRUQULRhIV4Rdq1Wa4G/tM6ePXvRi9P+egY3MjLS1Z63roLOFheFv7+/GjVq5NGyZpSZman9+/erfv36Cg72josermRXQn/kOqX2zWrqh98L/kXduVUd1a4erNq1Lx7Ayktp9Ml1/pla/sP+Aqe1b1ZTEeGVVC2icdFXGJj/4/w8DWpZFRzgp8aNi76+tAynAv19lW3PfyYurHKAqoaFKLRG0deXnuVUZHiQTqXm/2jXz9eiujXCFF6p6NdcZNkNNa5fRTv3F/yLv/XVNVQtvCLH7FrU9dosvbt8R4FTb2xTV3VqVpNRI6poa7NY1L1tsDb9cazA6de3rqMakeGqGRXmccUldSbdIR+LCgyAtaMqq4q1kupEFf01c+acU8GBfgV+wlApyE9hlQNVv3oxjpFSlpMrtYqLKvQThnbNaqpW1aKPsTUMizq3rK3/fl/wkMzubaNVu1aYatWsUaT1WSwW3XitQ7sPFHyMdL22jurUjJRRo2qRa+zWJrTAYQySdF3LWqpWNVQ1IsumT/bu3Vvkeb0i7MbExOQbm5uTk6ODBw+qf//+hS6XN1Y3KSnJLRQnJibKYrHkG8tbVBaLxdQX/ngqODiY/eJFzN4fg3o21q+7T+hclvsvtnZNa6hWZGWFhHjPBWp5StIntaJ81b5ZzXxjMCsF+WnwzY1lrVy89YbmZKhPp4Za/oP7L0o/Xx8N7xuvGpHFu+DNz9+hB29vprmLf3drt1ik0Xe0VGSVSvL1KfqnacHBhsbc1UrPvb0xXxi6r3dTRYQFF+sWSyGSRvRrocdnr1fOBeOAeybUU9WwYIUU8+Kg0tapRW19+eMBHT3tfmYvukaoWl9dvdh/KDWqe/7itgvHYFYJDVTvTg1VqVIF/zHsY9c9N8Xpo692uzX7+lg0+q6WiqpSvNegr9/51+DsRb/lm/b32+IVGRaiwKKPAyl1IZKG3tpM419dr6wc9z8Ku1xTR9UiQor9vnVr54Za/9thpV4whr1JgwjF1AlXcHDx7shwbZMaqvvDPiVfMN63ZmQldWheu9ivwXo1fNTiqij9vsc94FsrBeiOrrGqXKnsfkcV59N7r7gbw1tvvaU33nhD3377rapUqSJJWrlypR599FF98cUXFz27e/PNN+vqq6/WzJkzXW1Dhw7V2bNn9dlnnxW7Fu7GkN+VcvX/5eJK6Y+820it3LBPW7YfU0iQv26/PkbNG0WqitWzW+6UldLqkzO2LG1LPKVl6xJ1LtOuNk1qqHenBqoeEeLRsKwTKee093Ca/rMuUWfOZuvq6Crqe0Mj1YgIVnBQ8YPfuUy7Dh4/q0Wrd+vIyXOqX8uqu2+MVe2oygry4FZh2Tm5OnLqnD5b86cSD6WpekSw7roxTg1qWVXZg2Ca63DqeEqGlq3dq9/3nlJY5QD179JIjRtU9Zrb1Z08k6n1vx3SNz8ly2KRerSrpw7Na3l8q7DTaVn6eddxrfghSfZcp65rWUvd2tRTdQ9vV1fabOeylXgoTYu//VOnUrMUFx2uO7rFqmbVSsW+24YkpaVn6dCJc/r3N3/q8Mlzqh1VSXd0i1WdapW9oo8dTkPHT5/T8h+S9POuE7KGBKjfDY3UpEGEx7cKO56SoTVbDuj7344owN9HvTs11LVXV1OEh7cKO5WaqQ1bj+jrzQckQ+rWpq6ua1VbUeGevWZSbJn6dfdJLf8+SVk5DnVoXlM92tdT9Yji/TFTXMXJa14Rdm02m3r37q3atWtr1KhROn36tKZNm6ZOnTq5fanEpEmTtGzZMu3Y8b+Pgb788kuNGzdOw4cPV4cOHfTNN99o4cKFmj9/vkf32SXs5nelhKvLxZXWH/Zch9Iz7fL1sXjV7cb+qrT7xHYuWw6nocrB/vL34P61FzqVmiG73alKIf6lsg8zsuzKznEoKNDPo/vhXigrO1eZ2bkKCPBVpVK4V2qO3aG09EylnklRnZpRXjfcx+k0XBdahVUOKJWb+qelZ8swDIWGBHh0/9qylmrL0MnTZ1QjqopCi/kpRUHS0rOVlZ2r4EA/Wb0g5F4oJ9ehcxl2+fn5FPt2YwVxOJyyZeTIx2IplVBvGIZOp2YoNfWMalWvqpCQkh8jaenZcv7/12BpfNnMpRQnr3nFMAar1aoFCxZo8uTJGjNmjIKCgtS7d2+NHz/ebT6n0ymHw/2jgZtvvllZWVmaN2+e3nnnHdWrV08zZ87kCyUAk/D381WV0Ir7aLIilHaoj/TwjE1hQoL8S/UG/kGBfh6dGS5MgL+vKgX66OCZkzJqRF56gXLm42Mp9v1RL8UbzmpeTICfZEs5ptrVq5TK+sIqB3r1Ngf4+SrAWnrvW76+Pqri4ZnhglgsFoUEWnQg5bhqVS+dbxr05v7wirArSQ0aNNA777xz0XmmTZumadOm5Wvv27ev+vbtW1alAQAA4DLlfZ91AAAAAKWEsAsAAADTIuwCAADAtAi7AAAAMC3CLgAAAEyLsAsAAADTIuwCAADAtAi7AAAAMC3CLgAAAEyLsAsAAADTIuwCAADAtAi7AAAAMC3CLgAAAEzLYhiGUdFFeJNffvlFhmEoICCgokvxGoZhyG63y9/fXxaLpaLLueLRH96HPvE+9Il3oT+8z+XeJzk5ObJYLGrduvUl5/Urh3ouK5djh5c1i8VC+Pci9If3oU+8D33iXegP73O594nFYilyZuPMLgAAAEyLMbsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLsAAAAwLcIuAAAATIuwCwAAANMi7AIAAMC0CLvQ559/rri4uHz/ZsyY4ZpnwoQJBc6zfv36Cqzc/BYvXqxbb71V8fHxSkhI0IgRI9ymr1u3Trfffrvi4+PVvXt3ffTRRxVU6ZXhYv3BMVK+Bg8eXOD+jouL08qVK13zcYyUn6L0CcdJ+VqzZo3uvPNOtW7dWh06dNDo0aOVlJSUbz6zHyd+FV0AvMf8+fMVGhrqely9enW36XXr1nULwJIUExNTLrVdiebMmaP3339fI0aMUIsWLZSWlqbvv//eNf3XX3/VqFGjdNttt2nChAn65ZdfNHnyZAUEBOjOO++swMrN6VL9IXGMlKdnnnlG6enpbm0LFizQ119/rYSEBEkcI+WtKH0icZyUlx9//FGjR4/WrbfeqkceeUQ2m01z587V/fffr5UrV6py5cqSrozjhLALl6ZNmyoiIqLQ6UFBQWrZsmX5FXQFS0xM1BtvvKG33npLnTp1crV3797d9f/XXntNTZo00ZQpUyRJ7du319GjR/Xqq6+qf//+8vHhg5vSUpT+kDhGylOjRo3ytT322GPq2LGj632MY6R8FaVPJI6T8rJy5UrVqlVL06dPl8VikSTVrl1bd955p37++Wddf/31kq6M4+Ty3wLAhD7//HPVrVvXLVj9VU5OjjZt2qRevXq5tffp00cnT57Ujh07yqPMK8al+gMV75dfftGhQ4fUp08fSRwj3uDCPkH5ys3NVaVKlVxBV5Lbp7fSlXOcEHbh0rt3bzVu3FjdunXTm2++KYfD4Tb94MGDuvbaa9WsWTP169dPa9asqaBKze/3339XbGysXnvtNSUkJKhZs2YaNGiQdu7cKel8X9jtdjVs2NBtubwzK4mJieVes5ldqj/ycIxUnBUrVig4OFjdunWTxDHiDS7skzwcJ+XjjjvuUFJSkj744APZbDYdOnRI06dPV0xMjGtYyZVynDCMAYqKitKYMWPUokULWSwWffvtt5o1a5aOHz+up59+WpLUuHFjxcfHq1GjRjp79qw++eQTPfTQQ3r11VfVs2fPCt4C8zl58qS2b9+uPXv26LnnnpO/v79rrNXXX3+ttLQ0SZLVanVbLu9x3nSUjkv1h9Vq5RipQLm5uVq1apW6deumkJAQSeIYqWAF9YnE75Ly1KZNG82dO1ePPfaYJk+eLOl8iH333XcVEBAg6co5Tgi70HXXXafrrrvO9bhTp04KDAzUggULNGLECFWrVk1DhgxxW6Zr164aMGCAZs+ezRtUGTAMQxkZGZozZ46uuuoqSefHVHfr1k2LFi1S69atJcnt46m/KqwdnrlUfzz44IMcIxVow4YNOn36tHr37p1vGsdIxSisTzhOys8vv/yixx9/XP3791fXrl2Vnp6uefPm6cEHH9Qnn3ziukBNMv9xwjAGFOjmm2+Ww+HI9zFtHh8fH910001KTExUVlZWOVdnfmFhYYqMjHQFK0mqVq2aGjZsqL179yosLExS/r+6bTabpPx/paNkLtUfBeEYKT8rVqxQeHi425hqjpGKVVCfFITjpOxMnjxZ7du31z/+8Q8lJCSoe/fuevvtt7Vv3z4tXrxY0pVznBB24THDMCq6BNMq7DY8hmHIx8dH0dHR8vf3z3e/xLzgxW18Stel+qMwHCNlLysrS99884169uwpf39/VzvHSMUprE8Kw3FSNhITE3X11Ve7tUVERKhatWo6ePCgpCvnOCHsokBffPGFfH191aRJkwKnO51OffXVV7rqqqsUFBRUztWZX5cuXXTq1Cn9+eefrrbjx48rKSlJcXFxCggIUPv27fXll1+6LbdixQpFRUUV2m/wzKX6oyAcI+Xj22+/1blz5/Jd8c8xUnEK65OCcJyUnVq1amn79u1ubSdPntSJEydUu3ZtSVfOccKYXWjo0KFq3769YmNjJUnffPONPvvsM/3tb39TVFSUDh8+rAkTJqh3796Kjo5WWlqaPvnkE/3xxx+aM2dOBVdvTt27d1fTpk01ZswYPfzwwwoICNBrr72miIgI3XXXXZKkhx56SIMGDdJTTz2lPn366JdfftHixYv1/PPPm+K+iN7kUv3BMVJxli9frlq1aumaa67JN41jpGIU1iccJ+Vr4MCBeuGFF/T888+rW7dustlsevPNNxUSEqJbb73VNd+VcJxYDD4/uOJNnjxZ33//vY4dOyan06n69evrzjvv1ODBg2WxWJSamqqJEydq+/btSklJkb+/v5o1a6Zhw4a5XdiG0nX69GlNmTJF69atU25urtq0aaOJEye63SJm3bp1euWVV5SYmKgaNWro/vvv18CBAyuwavO6WH9wjFSMtLQ0dezYUUOGDNHjjz9e4DwcI+XrYn3CcVK+DMPQZ599po8//lgHDx5USEiI4uPjNW7cuHyfSJn9OCHsAgAAwLTMcX4aAAAAKABhFwAAAKZF2AUAAIBpEXYBAABgWoRdAAAAmBZhFwAAAKZF2AUAAIBpEXYBoIL88ssvmjNnjmw2W0WXUio2btyofv36qWXLloqLi9OaNWsquiQAIOwCQEX59ddfNXfuXFOEXcMw9Mgjj8jf319vvPGGFi1apDZt2lR0WQAgv4ouAABw+Ttx4oRSU1N14403KiEhoaLLAQAXzuwCQAWYM2eOXnrpJUlSt27dFBcXp7i4OG3evFmS9MUXX+juu+9Wy5Yt1apVKw0dOlQ7duxwW8eECRPUqlUrJSYmaujQoWrZsqU6deqkt956S5L022+/6Z577lHLli3Vo0cPLV261G35zz//XHFxcdqwYYMmTpyotm3bqmXLlhoxYoSSk5OLtS2dO3eWJM2YMUNxcXHq2rWrx/sGAEqTxTAMo6KLAIArzbFjxzR//nx98MEHmjt3rqKioiRJjRo10ocffqhZs2apX79+uummm2S32/XOO+9o9+7dWrx4sRo1aiTpfNhdsWKFoqOjNWDAADVq1EjLly/X559/ruHDh+urr77Sgw8+qBo1aujDDz/Ud999pyVLlqhZs2aSzofdiRMnqmbNmurQoYN69uypY8eOadasWQoICNB///tfWa3WIm3Ltm3bNHr0aA0ePFi9e/dWQECAmjRpUnY7EACKiGEMAFABatSooZo1a0qSGjdurDp16kiSjh49qjlz5mjQoEF66qmnXPN36NBBPXr00Ny5czVr1ixXu91u1yOPPKKbbrpJktS2bVutXbtWb775ppYuXeoKnM2aNVOHDh20YsUKV9jN06xZM02ZMsX1uFGjRrrnnnv00UcfaeTIkUXaltzcXElSzZo11bJly+LvEAAoIwxjAAAv8sMPPyg3N1e33XabcnNzXf8CAwPVpk0bbdmyxW1+i8Wi66+/3vXYz89P9erVU1RUlNuZ1fDwcEVEROjIkSP5nrNPnz5uj1u3bq3atWu7hlQAwOWMM7sA4EVOnTolSbrjjjsKnO7j436OIjg4WIGBgW5t/v7+Cg8Pz7dsQECAsrOz87VHRkYW2JaamlrEqgHAexF2AcCLVKlSRZI0e/Zs1apVq1yeMy9gX9gWHR1dLs8PAGWJsAsAFSQgIECS3M62durUSX5+fjp48KB69OhRLnUsX77c7bl++eUXHT58uNCzywBwOSHsAkAFiY2NlSQtWLBAffv2lZ+fnxo0aKCxY8dq1qxZSk5OVufOnWW1WnXq1Clt27ZNwcHBGjt2bKnW8ccff+gf//iH624MM2fOVPXq1XXvvfeW6vMAQEUg7AJABWnXrp2GDx+upUuXavHixXI6nVq4cKGGDx+umJgYLVy4UCtXrlROTo6ioqLUrFkz3XPPPaVex4svvqj//Oc/evTRR5WTk6N27drpH//4R4HjfgHgcsN9dgHgCpV3n91///vfio+Pr+hyAKBMcOsxAAAAmBbDGAAAhTIMQw6H46Lz+Pr6ymKxlFNFAFA8DGMAABQqb6jDxSxcuFDt2rUrp4oAoHgIuwCAQp05c0aHDh266DwNGjRQ5cqVy6kiACgewi4AAABMiwvUAAAAYFqEXQAAAJgWYRcAAACmRdgFAACAaRF2AQAAYFqEXQAAAJgWYRcAAACmRdgFAACAaf0/siE+HtHJmLgAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(8, 6))\n", "sns.scatterplot(\n", " x=\"temp_f\",\n", " y=\"is_failure\",\n", " hue=\"failure\",\n", " data=challenger,\n", " ax=ax\n", ")\n", "ax.set_title(\"Number of bad rings vs temperature\")\n", "fig.show()" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Logistic Regression" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Similar to Linear Regression we are looking for a model that approximates\n", "$$ Y \\approx f_\\beta(X) $$\n", "\n", "where\n", "$$\n", "X = \\begin{bmatrix} \n", "1 & x^{(1)}_1 & \\dots & x^{(1)}_p \\\\ \n", "1 & x^{(2)}_1 & \\dots & x^{(2)}_p \\\\\n", "\\vdots & \\vdots & & \\vdots \\\\\n", "1 & x^{(n)}_1 & \\dots & x^{(n)}_p\n", "\\end{bmatrix}\n", "\\quad , \\quad\n", "Y = \\begin{bmatrix}y^{(1)} \\\\ y^{(2)} \\\\ \\vdots \\\\ y^{(m)}\\end{bmatrix}\n", "\\quad \\text{and} \\quad\n", "\\beta = \\begin{bmatrix}\\beta_0 \\\\ \\beta_1 \\\\ \\vdots \\\\ \\beta_n\\end{bmatrix}\n", "$$\n", "\n", "but we want to train a non-linear function\n", "\n", "$$f_{\\beta}(x) = \\frac{1}{1 + e^{-(\\beta_0 + \\beta_1 x_1 + ... + \\beta_p x_n)}}$$\n", "\n", "and to minimize the cost function\n", "$$J(\\beta) = \\frac{1}{2} \\sum_{i=1}^{n} \\left( y^{(i)} - f_{\\beta}(x^{(i)})\\right)^2$$\n", "\n", "Notice that we can write\n", "\n", "$$Y \\approx f_\\beta(X) = g(X \\beta)$$\n", "\n", "where $g(z)$ is a _sigmoid function_,\n", "\n", "$$g(z) = \\frac{1}{1+e^{-z}}$$" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Decision" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def sigmoid(z):\n", " return 1 / (1 + np.exp(-z))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_20324/966449380.py:6: UserWarning: Matplotlib is currently using module://matplotlib_inline.backend_inline, which is a non-GUI backend, so cannot show the figure.\n", " fig.show()\n" ] }, { "data": { "image/png": "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MAxDFovF7BhogWPHjunOO+/U0KFDdcstt5gdBz546qmnlJSUpCuvvNLsKJ0CpbQTWb16dbP2emZnZys/P195eXl6/PHH5XA4JEm1tbWSGvbkREREKCIiol3z4uR8GcfMzMzGv+/evVvz5s3TRRddpHvvvbc9I6IV7HZ748/cd1VWVvILYgCqrKzULbfcosjISD311FOcmx9ADh48qOeff15/+9vfVFVVJUlyOp2Nn6urqxUdHW1mxKBjMQzDMDsE/M8TTzyhv/71r6d8/JZbbtH8+fM7MBFao6ioSNdcc4369eun5557jit//dicOXMUGxurp556qnFZXV2dRo8erbvvvls33nijiengi9raWt10000qLCzUP//5T/Xq1cvsSPDBF198oZ/85CenfHz48OF69dVXOzBR8GNPKU5q5syZGjduXJNlb731llasWKFnn31WycnJJiWDr44dO6Ybb7xRXbp00ZNPPkkh9XOTJk3SU089pbKyMiUkJEhq2DteV1enyZMnm5wOzVVfX6+77rpLu3fv1rJlyyikASgzM1MvvfRSk2U5OTlauHChfvOb32jo0KEmJQtelFKcVEpKilJSUpos27Bhg0JDQzV+/HiTUsFXNTU1uvnmm1VSUqL77rtPubm5TR4fMWKEOcFwSrNnz9ayZcs0b948zZs3TyUlJVq0aJFmzJjB4fsA8sgjj+ijjz7Svffeq5qaGm3ZsqXxsYyMDC6aCQB2u/2U/98NGTJEQ4YM6eBEwY9SCgSx48ePa/fu3ZJ00ulM9uzZ09GRcAZ2u11Lly7VggULdMcddygyMlLTp0/ndJkA8+mnn0rSSe/g9NJLL/HLPXASnFMKAAAA0zFPKQAAAExHKQUAAIDpKKUAAAAwHaUUAAAApqOUAgAAwHSUUgAAAJiOUgoAAADTUUoBAABgOkopAAAATEcpBQAAgOkopQAAADAdpRQAAACm+/82YnZTMl3WWAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.arange(-5, 5, 0.1)\n", "y = sigmoid(x)\n", "fig, ax = plt.subplots(figsize=(8, 6))\n", "ax.plot(x, y)\n", "ax.axhline(y=0.5, xmin=-5, xmax=5, color=\"red\")\n", "fig.show()" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Optimization" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "First of all, the derivative of this sigmoid function is easy to compute.\n", "\n", "$$\n", "\\begin{align*}\n", "g'(z) &= \\frac{-1}{(1+e^{-z})^2} (-e^{-z}) \\\\\n", " &= \\frac{e^{-z}}{(1+e^{-z})^2} \\\\\n", " &= \\frac{1}{1+e^{-z}} \\frac{e^{-z}}{1+e^{-z}} \\\\\n", " &= \\frac{1}{1+e^{-z}} \\left(1 - \\frac{1}{1+e^{-z}} \\right) \\\\\n", " &= g(z)(1-g(z))\n", "\\end{align*}\n", "$$" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "In order to compute the jacobian we need the partial derivatives,\n", "\n", "$$\n", "\\begin{align*}\n", "\\frac{\\partial J(\\beta)}{\\partial \\beta_k}\n", "&= \\sum_{i=1}^{m} \\left( y^{(i)} - f_{\\beta}(x^{(i)}) \\right) \\frac{\\partial}{\\partial \\beta_k} f_{\\beta}(x^{(i)}) \\\\\n", "&= \\sum_{i=1}^{m} \\left( y^{(i)} - f_{\\beta}(x^{(i)}) \\right) \\frac{\\partial}{\\partial \\beta_k} g(\\beta^T x^{(i)}) \\\\\n", "&= \\sum_{i=1}^{m} \\left( y^{(i)} - f_{\\beta}(x^{(i)}) \\right) f_{\\beta}(x^{(i)}) \\left(1-f_{\\beta}(x^{(i)})\\right) \\frac{\\partial}{\\partial \\beta_k} (\\beta^T x^{(i)}) \\\\\n", "&= \\sum_{i=1}^{m} \\left( y^{(i)} - f_{\\beta}(x^{(i)}) \\right) f_{\\beta}(x^{(i)}) \\left(1-f_{\\beta}(x^{(i)})\\right) x^{(i)}_k\n", "\\end{align*}\n", "$$\n", "\n", "then\n", "\n", "$$\\nabla_{\\beta} J(\\beta) = X^\\top \\Big[ (Y - g(X\\beta)) \\odot g(X\\beta) \\odot (1 - g(X\\beta)) \\Big]$$\n", "\n", "where $\\odot$ is a element-wise multiplication, usually called Hadamard product.\n", "\n", "Then, the gradient descent algorithm for the binary logistic regression is\n", "\n", "$$\n", "\\begin{align*}\n", "\\beta^{(n+1)} & = \\beta^{(n)} - \\alpha \\nabla_{\\beta} J(\\beta^{(n)}) \\\\\n", "\\nabla_{\\beta} J(\\beta) &= X^\\top \\Big[ (Y - g(X\\beta)) \\odot g(X\\beta) \\odot (1-g(X\\beta)) \\Big]\n", "\\end{align*}\n", "$$\n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Implementation" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import LogisticRegression" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
LogisticRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "LogisticRegression()" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X = challenger[[\"temp_f\"]]\n", "y = challenger[\"is_failure\"]\n", "model = LogisticRegression()\n", "model.fit(X, y)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[-0.17014123]])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.coef_.T" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.21 ms ± 27.7 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n" ] } ], "source": [ "%%timeit\n", "LogisticRegression().fit(X, y)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7916666666666666" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.score(X, y)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Predicting values\n", "y_pred = model.predict(X)\n", "y_pred" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## Multi-Label Classification" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pixel_0_0pixel_0_1pixel_0_2pixel_0_3pixel_0_4pixel_0_5pixel_0_6pixel_0_7pixel_1_0pixel_1_1...pixel_6_7pixel_7_0pixel_7_1pixel_7_2pixel_7_3pixel_7_4pixel_7_5pixel_7_6pixel_7_7target
00.00.05.013.09.01.00.00.00.00.0...0.00.00.06.013.010.00.00.00.00
10.00.00.012.013.05.00.00.00.00.0...0.00.00.00.011.016.010.00.00.01
20.00.00.04.015.012.00.00.00.00.0...0.00.00.00.03.011.016.09.00.02
30.00.07.015.013.01.00.00.00.08.0...0.00.00.07.013.013.09.00.00.03
40.00.00.01.011.00.00.00.00.00.0...0.00.00.00.02.016.04.00.00.04
\n", "

5 rows × 65 columns

\n", "
" ], "text/plain": [ " pixel_0_0 pixel_0_1 pixel_0_2 pixel_0_3 pixel_0_4 pixel_0_5 \\\n", "0 0.0 0.0 5.0 13.0 9.0 1.0 \n", "1 0.0 0.0 0.0 12.0 13.0 5.0 \n", "2 0.0 0.0 0.0 4.0 15.0 12.0 \n", "3 0.0 0.0 7.0 15.0 13.0 1.0 \n", "4 0.0 0.0 0.0 1.0 11.0 0.0 \n", "\n", " pixel_0_6 pixel_0_7 pixel_1_0 pixel_1_1 ... pixel_6_7 pixel_7_0 \\\n", "0 0.0 0.0 0.0 0.0 ... 0.0 0.0 \n", "1 0.0 0.0 0.0 0.0 ... 0.0 0.0 \n", "2 0.0 0.0 0.0 0.0 ... 0.0 0.0 \n", "3 0.0 0.0 0.0 8.0 ... 0.0 0.0 \n", "4 0.0 0.0 0.0 0.0 ... 0.0 0.0 \n", "\n", " pixel_7_1 pixel_7_2 pixel_7_3 pixel_7_4 pixel_7_5 pixel_7_6 \\\n", "0 0.0 6.0 13.0 10.0 0.0 0.0 \n", "1 0.0 0.0 11.0 16.0 10.0 0.0 \n", "2 0.0 0.0 3.0 11.0 16.0 9.0 \n", "3 0.0 7.0 13.0 13.0 9.0 0.0 \n", "4 0.0 0.0 2.0 16.0 4.0 0.0 \n", "\n", " pixel_7_7 target \n", "0 0.0 0 \n", "1 0.0 1 \n", "2 0.0 2 \n", "3 0.0 3 \n", "4 0.0 4 \n", "\n", "[5 rows x 65 columns]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "digits_X, digits_y = datasets.load_digits(return_X_y=True, as_frame=True)\n", "digits = pd.concat([digits_X, digits_y], axis=1)\n", "digits.head()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "sns.set_style(\"white\")" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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BAcAYILgAABMEBwAgAmCAwAwQXAAACZcf7foYDhz5ozWrFmjo0ePql+/fpo1a5aWL1+uiIgIt6fd1VdffaXt27fr+PHjqqmp0ejRo1VeXu72rHv64IMPtG/fPp08eVLNzc2Ki4vTCy+8oJycHPXp8+B+T1NVVaUtW7aotrZWra2tGj58uKZPn64lS5Zo4MCBbs/rsba2Ns2cOVP19fV69913lZqa6vak2yorK9Orr756y/G8vDwtX77chUXOvPPOO/r973+vM2fOaMCAAUpLS9Pbb7/t9qy7mjt3rj799NPbPrZx40bNmjXLdI/ngtPS0qLc3FzFxsZq06ZN+uabb7Ru3To1NTVpw4YNbs+7q5qaGlVWViotLU03btxQb3kj7507dyo2NlavvPKKYmJidOTIEa1du1Zff/21Vq5c6fa8O2pubtbjjz+u3NxcRUZGqqamRoWFhaqpqdGOHTvcntdjmzdvVldXl9szemzbtm03BX348OEurumZwsJClZSUKD8/X2lpaWpublZVVZXbs+7ptddeU2tr603HSktLdeDAAWVkZNgP8nnMli1bfGlpab7GxsbuY3/72998iYmJvtraWheX3VtXV1f3r1euXOmbNWuWi2t67n//rr/1xhtv+FJTU30dHR0uLPLfnj17fImJib4LFy64PaVHamtrfePHj/f96U9/8iUmJvr+9a9/uT3pjv7yl7/4EhMTb/vv5UFWW1vrS05O9lVVVbk9JSCmTZvmy8vLc+XPfnCf7/DTRx99pIyMDEVHR3cfe+aZZxQeHq7KykoXl93bg/z0093879/1t5KTk9XR0aGmpib7QfchKipKktTZ2enukB5au3atcnJyNGrUKLeneFZZWZni4uI0ceJEt6fct88++0znzp3T7NmzXfnze+dXuLuoq6tTQkLCTcfCw8P1yCOPqK6uzqVVD5+jR48qKipKMTExbk+5p66uLnV0dOjkyZMqKirS1KlTe8UtoSsqKlRdXa3Fixe7PcWR7OxsJScnKysrS1u2bHngnw48fvy4EhMTVVRUpIyMDI0bN04vvviiTp065fY0x8rLy9WvXz9lZWW58ud78hpOZGTkLccjIyPV3NzswqKHz4kTJ1RWVqbFixcrNDTU7Tn3NHXqVNXX10uSMjMztXHjRpcX3duVK1e0fv16vfzyyxowYIDbc3pk6NChKigoUFpamkJCQnT48GG9+eabqq+v16pVq9yed0cNDQ06efKkampqtHr1aoWFhemtt97SSy+9pAMHDtz2682DqLOzUxUVFcrKylL//v1d2eC54NyJz+dTSEiI2zM8r6GhQUuXLlVqaqry8vLcntMjW7duVXt7u2pra7V582bl5+dr586dD3Qsi4uLFRMTo+eee87tKT2WmZmpzMzM7o8nTpyovn37qrS0VPn5+Ro2bJiL6+7M5/Opvb1dhYWFevTRRyVJKSkpysrK0p49e3rNv/NPPvlEjY2Nys7Odm2D555Si4yMVEtLyy3HL1++3Gu+E+mtLl++rLy8PEVERKi4uFhhYWFuT+qRxx57TE888YTmzJmjt956S0eOHNHBgwfdnnVH58+f144dO7R06VK1traqpaVF7e3tkqT29na1tbW5vLDnZs6cqa6urgf66alBgwZpyJAh3bGRpGHDhmn06NGqra11cZkz5eXlioqKcvValOfOcBISEm65VnPt2jWdPXtWzz//vEurvK+jo0MLFy7UxYsXtWfPHg0ePNjtSX5JTk5WaGiozp496/aUOzp37pyuX7+uBQsW3PLYvHnzlJaWpr1797qwzJsSEhL03//+95bjPp+v17zQ5+rVqzp06JBmz57t6jeCngvOpEmTVFxcrEuXLnV/0Tt48KCuXbumyZMnu7zOmzo7O7Vs2TJVV1dr9+7dveKC+518/vnn6urq0siRI92eckfJycnatWvXTcdOnTqldevWafXq1Q/sD37ezv79+xUaGqqxY8e6PeWOpkyZor/+9a/68ssvlZiYKEmqr6/X6dOne81TmocPH1ZbW5trr077lueCk5OTo927d2vRokVatGiRGhsbtX79es2ePfuWV689aK5cudL90u3z58+rtbVVFRUVkqSnnnrqti8/fhC8/vrr+vDDD7VixQpdvXpVx44d635szJgxD+xF7SVLlmjcuHFKSkpSRESEqqurtW3bNiUlJWn69Oluz7ujyMhIpaen3/axlJQUpaSkGC/qmfnz52vChAndX7QPHTqkvXv3at68eRo6dKjL6+5sxowZSklJUUFBgZYtW6bw8HAVFRUpOjpac+bMcXtej+zbt0+xsbF68sknXd0R4vP1kh9nd+B/39omIiJC2dnZveKtbc6dO3fHlyvu2rXrjl9k3DZt2jSdP3/+to89yLu3bt2q/fv36+zZs/L5fBoxYoRmzJih+fPnP7CRvJMjR45o3rx5D/Rb26xZs0ZVVVW6cOGCbty4ofj4eP3kJz/R3LlzH/gX9DQ2NuqNN95QZWWlOjs79YMf/ECvvvqqRo8e7fa0e2pubtbTTz+t3NxcrVixwtUtngwOAODB0zuueAEAej2CAwAwQXAAACYIDgDABMEBAJggOAAAEwQHAGCC4AAATBAcAIAJggMAMEFwAAAm/g+a+6mWXywl1gAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "digit_images = datasets.load_digits().images\n", "i = 42\n", "plt.imshow(digit_images[i], cmap=plt.cm.gray)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/alonsolml/mambaforge/envs/nc-book/lib/python3.10/site-packages/sklearn/linear_model/_logistic.py:444: ConvergenceWarning: lbfgs failed to converge (status=1):\n", "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n", "\n", "Increase the number of iterations (max_iter) or scale the data as shown in:\n", " https://scikit-learn.org/stable/modules/preprocessing.html\n", "Please also refer to the documentation for alternative solver options:\n", " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n", " n_iter_i = _check_optimize_result(\n" ] }, { "data": { "text/html": [ "
LogisticRegression(max_iter=1000)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "LogisticRegression(max_iter=1000)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = LogisticRegression(max_iter=1000)\n", "model.fit(digits_X, digits_y)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.predict(digits_X.loc[[i], :])" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[178, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n", " [ 0, 182, 0, 0, 0, 0, 0, 0, 0, 0],\n", " [ 0, 0, 177, 0, 0, 0, 0, 0, 0, 0],\n", " [ 0, 0, 0, 183, 0, 0, 0, 0, 0, 0],\n", " [ 0, 0, 0, 0, 181, 0, 0, 0, 0, 0],\n", " [ 0, 0, 0, 0, 0, 182, 0, 0, 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 181, 0, 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 179, 0, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 174, 0],\n", " [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 180]])" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\n", "\n", "y_pred = model.predict(digits_X)\n", "confusion_matrix(digits_y, y_pred, labels=model.classes_)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ConfusionMatrixDisplay.from_estimator(model, digits_X, digits_y)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " precision recall f1-score support\n", "\n", " 0 1.00 1.00 1.00 178\n", " 1 1.00 1.00 1.00 182\n", " 2 1.00 1.00 1.00 177\n", " 3 1.00 1.00 1.00 183\n", " 4 1.00 1.00 1.00 181\n", " 5 1.00 1.00 1.00 182\n", " 6 1.00 1.00 1.00 181\n", " 7 1.00 1.00 1.00 179\n", " 8 1.00 1.00 1.00 174\n", " 9 1.00 1.00 1.00 180\n", "\n", " accuracy 1.00 1797\n", " macro avg 1.00 1.00 1.00 1797\n", "weighted avg 1.00 1.00 1.00 1797\n", "\n" ] } ], "source": [ "from sklearn.metrics import classification_report\n", "\n", "y_true = digits_y.values\n", "y_pred = model.predict(digits_X)\n", "print(\n", " classification_report(\n", " y_true,\n", " y_pred,\n", " target_names=[str(x) for x in model.classes_]\n", " )\n", ")" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## More Algorithms" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### K Nearest Neighbors" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "K Nearest Neighbors (kNN) is a non-parametric algorithm. Once the hyperparameter $k$ has been fixed, there are no more parameters. The idea is simple: the output label is the most common label among the 𝑘 nearest neighbors. In the following example, if $k=3$ the green circle is labeled as red, but if $k=5$ then it is labeled as blue." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "![KNN](../images/KnnClassification.png)\n", "\n", "[Source](https://commons.wikimedia.org/wiki/File:KnnClassification.svg)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "The algorithm is really simple. The training phase consists only of storing the feature matrix and its labels.\n", "\n", "For the prediction phase we need to compute the distance with every training vector and then find the nearest neighbors.\n", "\n", "![kNN Algorithm](../images/knn_algorithm.jpg)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
KNeighborsClassifier()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "KNeighborsClassifier()" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.neighbors import KNeighborsClassifier\n", "\n", "k = 5\n", "knn = KNeighborsClassifier(n_neighbors=k)\n", "knn.fit(digits_X, digits_y)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgYAAAG2CAYAAAAEHU5IAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB2/ElEQVR4nO3dd1xTV/8H8E8SIGFvZDtQEFFxoThAJVqrYqttHa17VtFqh1ba+rNPrdVurQu3dYtaR8VRKyjaWrWKW1FAlCGyIWFDcn9/UNLGBCUk5F7I9/165XnKyeXeDzeRfDnn3HN5DMMwIIQQQggBwGc7ACGEEEK4gwoDQgghhChQYUAIIYQQBSoMCCGEEKJAhQEhhBBCFKgwIIQQQogCFQaEEEIIUaDCgBBCCCEKRmwHaAjdunVDRUUFHB0d2Y5CCCFEQ9nZ2TAxMcHVq1cb7Bjjxo1DRkaGTvbl4uKCXbt26WRfXNAkC4Py8nLIZOWQy1LYjqIkM0XEdgRCCOE8mVEFyksrGvQYGRkZyMhIhYuTlvvJ0k0eLmmShYGTkxPkshQc3VPGdhQlb7p3YjsCIYRwXnqLeL0cx8UJ+G2fXKt9DBrT9Ebkm95PRAghhJB6a5I9BoQQQsjLMABkjHY9Bgz44OkmDmdQYUAIIcRgyUE3GH4eFQaEEEIMFAM5tOsxQBMsLGiOASGEEEIUqMeAEEKIQaqeY6DdX/wMQHMMCCGEkKaC7TkGT548wZYtW3Dz5k0kJCSgVatWiIqKUtrGx8en1u+/cOECnJyqF2MICQlBenq6yja3bt2CUCiscyYqDAghhBCWJCQkIDY2Fv7+/pDL5WDU9GBERkaqtC1cuBCmpqaKoqDGoEGDMGXKFKU2ExMTjTJRYUAIIcRgyVjuMQgJCcGAAQMAAOHh4bhz547KNp06dVL6Oi0tDY8fP8aCBQtUtnVwcFDZXlMGUxiUFvFxYKU7Ht8zQ/Idc0jyjDHqgzSM/ihNabs33QNr3YerVylWx95UfJ2fZYyDP7kh7qwNCjJNYOVQiY59CjHqwzQ4uul2OU+RmQyTFj5D8LACWNrIkJokROQaJ8QetdXpcSgTZaJM3M3EtTxczVRXDLQfStC2rODzNb8GICoqCjweD6GhoVoeXT1OFAbJyclYunQprl27BlNTUwwdOhTz58+HSKS7ewtI843x+x4ntPAtQfdBeTizt5na7ZYfVa3WHl63wLb/tUCPV/MUbZXlPPzfm+1QXGiE0R+lwb1NKZ4+EiHyB3fciLXGqnM3YWqh7WUw/1q85TG8/UuxdZkL0h8J0X9EPj6NSAGfD5w9zM4/QMpEmSiTYefhaqam7vjx4wgICICzs7PKc8eOHcP+/fthbGyMbt26Yf78+S+co6AO64WBRCLBxIkT4erqilWrViEvLw/Lly9HQUEBvv/+e50dx9G9HDvuXgWPB0jyjGotDLy7Fqm0nd7tBB6PgXjMv3fLuHfFEhnJppj1XRIGvJ0NAGjfSwJTCxlWzmmDWxes0WNwvk6yB4RI0LVvEZaHeeLckep/aDcvWsDJvQLTFj1F7FEbyOX6nRdLmSgTZdJvJq7l4WomTWl7VQJQfUMmsVhc6/PR0dFaH6NGfHw8Hj58iCVLlqg8FxISgo4dO8LV1RWpqalYv3493nnnHRw5cgQeHh51Pgbr6xjs27cPEokE69atQ3BwMIYPH45Fixbh2LFjSEpK0tlxeLzqh6ZKi/j4K8oe7QIlcGlZrmg3Mqp+M5lbypS2N7eq/tpYqLtxq96DC1FSxMf5YzZK7acj7eDgUoW2XUp0dizKRJkoEzczcS0PVzNpSq7lQ9+OHTsGY2NjDBo0SOW5RYsW4bXXXkO3bt0wYsQI7Ny5EwCwZcsWjY7BemFw/vx59OzZE3Z2doq2QYMGwcTEBLGxsSwmq/bHUQeUlQgw4G3le2u2DZDCq2MRIle4I/GGOUqL+Xh02wx7vvFAqw5F6BhUqLMMzX3KkJoghFymXNkk3zNVPK9vlIkyUSb9ZuJaHq5mYoOLiwuio6NrfegKwzA4ceIEgoKCYGNj89LtnZyc0LVrV9y9e1ej47BeGCQlJcHLy0upzcTEBJ6enjrtMaiv6H2OMLeuQuCQPKV2gRHwxf57aOZZhoWhHTDOpzsWDO4IM6sqLN5zH0bGuusxsLKtgrRAddRHWiBQPK9vlKluKFPdUKbGl6fmmFzLpAkG1VclaPPQ5zUN165dw9OnTzFs2LA6f4+6yx9fhvXCQCKRwMrKSqXdysoKhYW6+6u7PlIemCLhuiWChufARKR8cqsqefhhVhs8vmuOWd8m4ctf7uK9lYnIe2aCJe/4olgi0GmWF722bF1sQ5nqhjLVDWV6Oa7lAbiZSRMyRruHPh07dgxmZmbo379/nbbPzMxEXFwcOnTooNFxWJ98WBuGYcCrz6QAHYreV71wxIB3stQ854jrZ23xzfHbaO1fDABo10OKtgFSzO7dGcc3O2PUh6orUNWHJN9IbeVtaVM9n0Gar/+XkTLVDWWqG8rU+PIA3MykKTbmCfxXaWmpYtg8PT0dRUVFOHXqFACge/fuimH2qqoq/PbbbxgwYABMTU1V9hMVFYVz584hODgYTk5OSE1NxcaNGyEQCDB58mSNMrH+qllZWUEikai0S6VSlSEGfaqs4OH8Lw7w6liEln6qE2ge3zUHX8CgVYdipXbn5uWwtK1EygMznWV5HC9Cv+EF4AsYpbG8Fr6lAIAnD3R3WSdlokyUiZuZuJaHq5kam9zcXMybN0+prebrHTt2oEePHgCAP/74A/n5+bWuXeDu7o7MzEwsW7YMUqkUlpaWCAwMxNy5czW6IgHgwFCCl5eXylyCiooKpKSksFoYXD1tC0meMULGZKt93rZZBeQyHhJvWCi1P30kgjTfGPYuulvg6M+T1jCzkCNoaIFS+8CR+cjJMEJ8nO6KEMpEmSgTNzNxLQ9XM2mieo4BT6uHtqMJ7u7uePDggdpHTVEAAP369cODBw/Qt29ftfvp1KkTdu7ciUuXLuHu3bu4dOkSVq5ciVatWmmcifUeg+DgYERERCA/Px+2ttXXwf7++++oqKio9QTUV1yMDcpL+Cgtrh7/T00wxV9R1d00XcQFEJr+26kUvc8JJiIZgobnqN1XyOhsRG12wXcz2uCteelwbVWGzBQhDq1xg8hMhlfGZ+os99WzVrgWa4H3lqfDzEKOp4+F6Dc8HwEhUnw925OV64QpE2WiTPrNxLU8XM2kEQaQa/vJ3hgmUmiIx9RnyqIOSSQShIaGws3NDWFhYcjNzcXXX3+NPn361HuBI7FYDLksBUf3KF8qMzOwM7LT1N9hKuKv63DyqF6nIOepCWYFdkbwGzl4b2XtV0ZkJAtxYKU77l+xRH6WCawdKuHTVYqR76fDw7tUZfsXLbf8MiIzGSaF/7vsaFqiEPu4sBQqZaJMlMlg8zRUpvQW8QCAe49u6yqmCrFYjMqqFGzaVfzyjV9g+jhzGBt56vSyRLaxXhgAyksii0QihIaGarUkcm2FAdu0KQwIIcRQ6LMwWL9Lu0WYZo4za3KFAetDCQDQsmVLjVdmIoQQQrRRM8dA2300NaxPPiSEEEIId3Cix4AQQghhg5zh+ARJFlBhQAghxGBpO5TQFNFQAiGEEEIUqMeAEEKIQWLAg0zLv4+ZJtjjQIUBIYQQg0VzDFRRYUAIIcRg0RwDVTTHgBBCCCEK1GNACCHEIDEAZIy2cwyaHioMCCGEGCw5dZyroDNCCCGEEIUm22OQmSLCm+6d2I6h5LenN9iOoGKQaye2IxBCCCuqL1fUdh9NT5MtDAghhJCX0XaOASDXSQ4uoaEEQgghhChQjwEhhBCDJad1DFRQYUAIIcQgMYAOlkTWdpYC99BQAiGEEEIUqMeAEEKIwdJ+8mHTQ4UBIYQQA8XTwQJHTW+OAhUGhBBCDFL1ksjafbA3xXUMqA+FEEIIIQrUY0AIIcRgaXtVQlNEhQEhhBDDxABybScfNsGxBCoM1BCZyTBp4TMEDyuApY0MqUlCRK5xQuxRW50ep6SIjz0rmiHprimS7pihMM8I4z58hvHznyltxzDAyT12OL7DAU+ThRAYM2jhU4aRYVnoMUCi2C4tSYgTu+xx86IFMp4IweMz8GxdhjdmZCMotFCn2QH9nSfKRJkoEzfzcDUT0Q7rhcGTJ0+wZcsW3Lx5EwkJCWjVqhWioqJYzbR4y2N4+5di6zIXpD8Sov+IfHwakQI+Hzh7WHdvdkm+EU7sdkCrdqXo+WohTu2xV7vdju+csWelM4ZOyMGUT5+ispyPo1sdsHhCK/zf5mT0GVL9oX8t1hJXoq0gfisP3v4lkMt4iP3VFktntMT4+RkY92GmzrID+jtPlIkyUSZu5uFqprqqvomStgsc0VUJOpeQkIDY2Fj4+/tDLpeDYdjtlwkIkaBr3yIsD/PEuSPVb+qbFy3g5F6BaYueIvaoDeRy3bwRmrlX4Jf7t8HjAYW5gloLg9ORdvDrXoS5X6cp2roESzGmU3v8vt9OURj0ez0fr03OAe8/8QJCpCjME2D/WieMmp0FE6Fuzq8+zxNlokyUiXt5uJpJU9peldAUsT7rIiQkBLGxsVi1ahX8/PzYjoPegwtRUsTH+WM2Su2nI+3g4FKFtl1KdHYsHg9KH+K1ERgxMLdSXnbTRMTARCiHifDfO3tZ28vU7s+nUwnKSwWQFgi0jaygz/NEmSgTZeJeHq5mItpjvTDg81mPoKS5TxlSE4SQy5Q/YZPvmSqe17fh03Jw9awVTu2xg7RAgNxMI2z4nyuKpQIMn5rz0u+/edEC1vaVsHGo0lkmLp4nykSZmnImruXhaiZNycHX6tEUsT6UwDVWtlV4liJUaa/5a9vKVncfrnX1xvRsCEVyrPnMHSvmewIALG2r8MXPj+DXvfiF33tytx1uXbTErCVpEOiuw4CT54ky1Q1lqhuuZeJanppjci2TJqoXONJ2jkHTQ4WBGi+a5sDGm+C3fXaIWOyG1yblICBEgqpKHs4csMP/JrfE4i2P0a2fVO33/R1jibWfuSMotACv16FnQVNcO08AZaorylQ3XMvEtTwANzMR7VBh8BxJvpHaKtfSpnqMX5qv31MmLRBg7afuePXtXMz4/KmiPSBEigVvtsaqhe7Ycfm+yvddPWeJJdNaonOwFAvXPKnTXAZNcO08AZSprihT3XAtE9fyANzMpCl5E7yqQFtNc4BEC4/jRfBoUw6+QLnWbeFbCgB48kCk1zxpSUKUl/Hh00l1Ek+bjiXITBWitFj5Zbx6zhJfTGmJDoFF+L9Nj2Fsovu6nWvniTJRpqaeiWt5uJpJMzzIGL5Wj6Z4EyUqDJ7z50lrmFnIETS0QKl94Mh85GQYIT7OTK957JtVAgDux5krtTMMEB9nBgubKojM/r0y4do/RYFfQDH+tzVZZ5cnPo9r54kyUaamnolrebiaSRMMqpdE1ubRFIdLuN/Po2dXz1rhWqwF3lueDjMLOZ4+FqLf8HwEhEjx9WxPnV+T+3eMJcpK+Cgpqp6s8yRBiAtR1gCqrxF2cq9E7yEFOLnLHsYmDLqHSFBZwcPvB+xw928LTPw4QzFMcOeyOb6Y0hK2jpUYMzcTSXdNlY7l6V0Gc0s5dEHf54kyUSZDz8S1PFzNRLTHY1heUai0tBSxsbEAgN27dyM1NRXh4eEAgO7du8POzk7jfYrFYmQkZ8Htcdt6ZRKZyTAp/N8lPtMShdingyU+f3t6Q6VtQvd2yEwzUbv99sv34OxRgYoyHo5uc0D0L3bITDGBwJiBe6tyvDY5B/1H5CsKg53fO2PXj861Hv/bg4nw71Wk1DbItVN9f5wGO0/aoEyUqSln4lqehsqU3iIeAHDv0W1dxVQhFoshqczAxI21/86si+0znsHK2AXR0dH1+v66rP4bHh6Ow4cPq3zvpk2bEBwcrNS2ZcsW7N69G9nZ2fD29sbHH3+MHj16aJSJ9cIgLS0NYrFY7XM7duzQ+AcCtC8MGoq6woBt2hQGhBDSEPRZGIzb6KrVfnbNeKpVYXDmzBl8+eWX8Pf3R3JyMhiGUVsYXL16Fd9//71Su5eXFywtLRVfb9myBStWrMAHH3yAdu3a4cCBAzhz5gwOHDgAHx+fOmdifSjB3d0dDx48YDsGIYQQonchISEYMGAAgOoC4M6dO2q3E4lE6NSpU637qaioQEREBCZMmICpU6cCqO51HzZsGNavX48VK1bUORNNPiSEEGKQGPAgZ/haPbS9iZKuVv+Ni4uDVCpFaGiook0gEGDIkCGIjY3V6D5EVBgQQggxWDLwtHroS0pKCrp164b27dvjjTfewJkzZ5SeT0pKAgC0atVKqd3LywvFxcXIzKz73XVZH0oghBBCGrOMjIxa58oBqPf8gxq+vr7o0KEDWrduDalUir1792L27Nn46aef8OqrrwIAJBIJTExMIBIprx1hbV19lVtBQQGcnes20ZIKA0IIIQZLruW9EvRh4sSJSl+HhIRgzJgxWLVqlaIwAACemiVua4YQ1D1XGyoMCCGEGKTqBY60Gw5gALi41P+qhPrg8/l45ZVX8N1336GsrAwikQhWVlYoLy9HeXk5hMJ/b2wlkUgA/NtzUKf96zwxIYQQQhrU85MJvby8APw716BGUlISzM3N0axZszrvmwoDQgghBkvbqxJYySyX47fffkObNm0Ucwq6dOkCS0tLnDhxQrGdTCbDyZMn0bdvXxpKIIQQQl6K4f1zIyTt9qGN/67+m56ejqKiIpw6dQpA9ToEpaWlCA8PR2hoKDw9PVFYWIi9e/fizp07WL16tWI/JiYmmDVrFlasWAE7OzvFAkepqan48ccfNcpEhQEhhBCDxED72y5ru3Rwbm4u5s2bp9RW8/WOHTvg4+MDCwsLrF27Fnl5eTA2Nkb79u2xadMmBAUFKX3flClTwDAMdu7ciZycHHh7e2Pjxo0arXoIUGFACCGEsKYuq/9GRETUaV88Hg/Tpk3DtGnTtMpEhQEhhBCDpfVQQhNEhYEecfGGRftSL7IdQcUYj15sRyCEGAi5lnMEmiIqlQghhBCiQD0GhBBCDFL1Akfa/X2s7eRDLqLCgBBCiIHi6WAooekNRdBQAiGEEEIUqMeAEEKIwZLT38cqqDAghBBikBgAMi2HEpriHAMqlQghhBCiQD0GhBBCDBatY6CKCgNCCCEGi607JHIZFQaEEEIMEgMeZFrfRKnp9ThQqUQIIYQQBeoxUENkJsOkhc8QPKwAljYypCYJEbnGCbFHbZt8ptIiPg795IHHd83x+K45pHnGePODVIz8MFVpuxfdz8DVqwQ/nrsBADi33xHrP2pT67Zvhz/B67PTdZIdMOzXjjI1/Uxcy8PVTHXG6GCOQRO8LIH1wuDkyZM4duwY7t69i8LCQnh4eODtt9/GmDFjwOez06GxeMtjePuXYusyF6Q/EqL/iHx8GpECPh84e5idN7u+MknzjRG9pxma+xYjYFAeYvY2U7vdl0dvqbQlXLfEjv+1RMCreYq2LuJ8tdvu/94Tty/YIODVXJ1lBwz7taNMTT8T1/JwNZMmaI6BKtYLg23btsHV1RUff/wx7O3tcfnyZXz11VdITU3FwoUL9Z4nIESCrn2LsDzME+eOVL+pb160gJN7BaYteorYozaQy/U7pqTPTI7u5dhy5wp4PECSZ1RrYdCmS5FK25ldzuDxGPQfnaVos7KvgpW98rZlJXwkxFnCJ0ACV68yneQG6LWjTE07E9fycDUT0R7rpdL69euxcuVKDB06FIGBgZg3bx7GjRuH3bt3o6KiQu95eg8uREkRH+eP2Si1n460g4NLFdp2KWnSmXi86oemSov4uHTcHr6BEji3fPGH/V+/OqCsWICQtzPrmVI9Q3/tKFPTzsS1PFzNpCk5eFo9miLWCwM7OzuVNl9fX5SXl6OgoEDveZr7lCE1QQi5TPkFT75nqnieMqm6+KsDykvq9mF/NtIJppZVCAzV7TACF88TZaJMTTUPVzNpomblQ20eTXCKAfuFgTrXrl2DjY0N7O3t9X5sK9sqSAtUR1ikBQLF8/rGxUzPO7uvGcytq9B98Is/7NMTTfHwqhV6v54Doalcpxm4eJ4oU91QpsaXp+aYXMtEtMf6HIPn3b59G4cOHcLs2bMhEAhYycC8oARkqzrkYqYaqQ9MkXjdEq9MzICJ6MVpzu5zAgD0H6PbYYQaXDxPlKluKNPLcS0PwM1MmqDJh6o4VRhkZ2dj7ty56NChA6ZPn85KBkm+kdoq19JGBgCQ5uv/lHEx03+d3Vc9QfFlwwhVlTxc+MURzdsVw8u/WOc5uHieKFPdUKbGlwfgZibN8HSwJHLTm2fAmVJJKpVi+vTpEIlEiIiIgLGxMSs5HseL4NGmHHyBcq3bwrcUAPDkgYgy/UdVBQ8XDjmiVYcitPB78USjuDO2KMwxQX8dTzqswcXzRJkoU1PNw9VMmmCg/eTDxtAroilOFAbl5eWYNWsWcnJysHnzZtjasnft658nrWFmIUfQ0AKl9oEj85GTYYT4ODPK9B9Xf7eDNM8Y/eowNHA20gnGQhn6DM9ukCxcPE+UiTI11TxczUS0x3o/T1VVFebNm4f4+Hjs2rULbm5urOa5etYK12It8N7ydJhZyPH0sRD9hucjIESKr2d7snJNrr4zXT9rg/ISAcqKqud4pCeY4tLx6omgnUPylSYNnt3nBBORDH2G57xwn3nPjHHznC16DsuBxT/djLpGrx1lasqZuJaHq5k0RXdXVMVjmBdNHWl4ixcvRmRkJBYsWIBu3bopPde6dWtYWFhovE+xWIyM5Cy4PW5br0wiMxkmhf+7xGdaohD7uLDsaANk2pd6UaVtTs8uyElT3wW46uI1OHmUAwBynprgvZ5dEfRGNsJWJL7wOIdXuyHy2+b4v8g78OsleeG2L1pu+WUM6bWjTIaXiWt5GipTeot4AMC9R7d1FVOFWCxGVnkO2n3XU6v93FvwF5yEDoiOjtZRMvaxXhiEhIQgPV39Wvk7duxAjx49NN6ntoWBIVFXGLBNm8KAENL4UWHALtaHEmJiYtiOQAghxEDRUIIq1gsDQgghhA01VyVou4+mhhNXJRBCCCGEG6jHgBBCiGFidLDAURMciqDCgBBCiMGiOQaqaCiBEEIIIQrUY0AIIcRgUY+BKioMCCGEGCQG2hcGTfGqBCoMCCGEGCxtL1dsimiOASGEEEIUqMeAEEKIwaI5BqqoMCCEEGKQaI6BelQYGDgu3rDoRHoc2xFUDHHrwnYEUl98AdsJVMkb5tbjpPF58uQJtmzZgps3byIhIQGtWrVCVFSU4nmZTIatW7ciNjYWiYmJkMlk8Pb2xpw5c9Czp/INoGq7KeGtW7cgFArrnIkKA0IIIQaL7aGEhIQExMbGwt/fH3K5HM/f8LisrAwbNmzA8OHDMXXqVBgZGeHw4cOYPHkyIiIi0L9/f6XtBw0ahClTpii1mZiYaJSJCgNCCCGGiQNLIoeEhGDAgAEAgPDwcNy5c0fpeZFIhOjoaFhbWyva+vTpg8ePH2Pr1q0qhYGDgwM6deqkVSa6KoEQQghhCZ//4o9hgUCgVBQAAI/HQ9u2bZGVldUgmajHgBBCiMFidDCUkJGRAbFYXOvz0dHRWh/jv+RyOa5fvw4vLy+V544dO4b9+/fD2NgY3bp1w/z58+Hj46PR/qkwIIQQYrAa4wJHO3fuRHJyMpYsWaLUHhISgo4dO8LV1RWpqalYv3493nnnHRw5cgQeHh513j8VBoQQQogWXFxcdN4rUJsrV67gu+++w5QpUxAQEKD03KJFixT/3a1bN/Tu3RuDBw/Gli1b8L///a/Ox6DCgBBCiEFqbOsYxMfHIywsDAMGDMCCBQteur2TkxO6du2Ku3fvanQcKgwIIYQYLF3MMdCHlJQUTJs2De3atcO3334LHq9uuZ+//LEu6KoEQgghBkv+zyWL9X3oQ3Z2NqZMmQIHBwesW7euzusSZGZmIi4uDh06dNDoeNRjQAghhLCktLQUsbGxAID09HQUFRXh1KlTAIDu3bvDzMwM06ZNQ25uLsLDw5GYmKj0/TVrFkRFReHcuXMIDg6Gk5MTUlNTsXHjRggEAkyePFmjTFQYEEIIMVhsDyXk5uZi3rx5Sm01X+/YsQNubm6Ij48HAMyePVvl+x88eAAAcHd3R2ZmJpYtWwapVApLS0sEBgZi7ty5Gl2RAFBhoJbITIZJC58heFgBLG1kSE0SInKNE2KP2lImFjKVFPGxd6ULHt01RdIdU0jyjPHOhxkY91GG0nYMA/y2xx4ndjoiPVkIIyMGzduW4q1Zmeg+QKK07ZFNjrhz2RJJd0yRmSpEh55SfHMwQae5axjya9eYM/n3kkL8Rh7adSuCo2sliiQCJNw0w66VLki8bcZKJq6dI65mqisuTD50d3dXfLjX5mXPA9U9Bzt37tQyTTXWC4MLFy5gw4YNSExMRFFREZo1a4YBAwZgzpw5sLS0ZCXT4i2P4e1fiq3LXJD+SIj+I/LxaUQK+Hzg7GF23uyGnEmab4RTu+3Rsl0per5aiN/2OKjdbtf3Lti70gVDxmdj0qfpqCzj49dtjvjfxNb4bNMj9B5SoNj2xE5HiMzk8O8txeXfG3aqjSG/do05U+iEbFjZVuHIFic8SRDB2r4Kb87Iwk+/xuPTsW1w86L+fz9x7RxxNRPRDuuFQWFhITp37oyJEyfCysoKCQkJWL16NRISErB161a95wkIkaBr3yIsD/PEuSPVb+qbFy3g5F6BaYueIvaoDeRy/XY9GXomJ/cK7L93CzweUJgnqLUwOL3PHn7dizDn61RFW+dgCcZ27oDoA3ZKhcH6c/dQsxLprBBfneRUx9Bfu8acac1nHijMNVZqu3rWCtv+uIu333um98KAi+eIi5k0VY9J+00e61clhIaG4qOPPsLAgQPRo0cPjBs3Dh999BH+/PNPZGZm6j1P78GFKCni4/wxG6X205F2cHCpQtsuJZRJz5l4vOrHyxgZMzCzVL6drYmIgYmQgbFQ+V//S5Yn1xlDf+0ac6bniwIAKCsRICVBBAfXCr3n4eI54mImzfAg1/KBRrhy4suwXhioY2NjAwCoqqrS+7Gb+5QhNUEIuUz5xU6+Z6p4njJxM9PrU7Nw7ZwVfttrD2mBAHmZRtj4PzcUSwV4bWrD3GzkZbh4nihT/ZlZytC6fSmePBTp/dhcPEdczES0x/pQQg2ZTIaqqiokJiZi7dq16N+/P9zc3PSew8q2Cs9ShCrt0gKB4nl9o0x1M3x6NkxEDNZ95oGf5jcHAFjaVOHzbUnwCyjWex6Am+eJMtXfnK9SIDKTYe8qF70fm4vniIuZNMLo4KqEJjgUwZnCoH///oqhg6CgIPz444+sZXnRmBNb7wHK9HKnI+2w4XN3DJuUjW79Jais5CHmoB2WTGmFRZsfoWs/KQupuHeeAMpUHxPmP4X4jXysXeTO2lUJXDxHXMykCX0tUtSYcKYw2LhxI0pKSpCYmIh169Zh5syZ2LZtGwQCgV5zSPKN1Fa5ljbVY9fSfP2fMsr0ctICASI+9cSgt3MwbXG6oj0gRIKFb7XBmnBPbLuk2XrhusC18wRQpvoY+0EGxr7/DNu+dsWvPzuxkoGL54iLmYj2ODPHoG3btujSpQtGjRqFNWvW4PLly/j999/1nuNxvAgebcrBFyjXui18SwEATx7of2yRMr1cepIQ5WV8ePurTnZq07EEmalClBbr/+3OtfNEmTQ39oMMTPgoAzt+cMG+Nc6s5eDiOeJiJk0xjHaPpogzhcF/+fr6QiAQICUlRe/H/vOkNcws5AgaWqDUPnBkPnIyjBAfp/8uRMr0cnbOlQCA+DhzpXaGqW6zsKmCyEyu10wA984TZdLMO/Oqi4LdK52xe4X+5xX8FxfPERczaYJB9RwDrR5s/xANgJP9PNevX4dMJoO7u7vej331rBWuxVrgveXpMLOQ4+ljIfoNz0dAiBRfz/Zk5ZpcygT8HWOF8hI+Sv75qz/loQh/RNkAALqJC+HkVoleQ/JxarcDjE0YBIgLUVnOx5kDdrj3twXGL3iqdMnjw5tmyEqtvhFJiVQAhoFif206laCZu24uR6PXrvFmenNGJiYuyMDfZ61wJcYabbsoT2B9vghtaFw8R1zMpCm2l0TmIh5Tn3sy6tCcOXPQvn17+Pj4QCQSIT4+Hps3b4a9vT0OHjxY57tI/ZdYLEZGchbcHretVyaRmQyTwv9d4jMtUYh9XFh21EAynUiPU2mb1MMPWWmqs58BYNulO2jmUYGKMh6O/eyImIN2eJZavSSyW6syDJucjX4j8pUKgx/fb44zB+zV7u+DHx9j4Og8pbYhbl3q/fMY0mvHyUz8+s1T+vbAQ/j3LKr1+UHu9X9PQC57+TZqGMrrlt6i+t4A9x7d1lVMFWKxGGkl+TD5ZJhW+6lYfgzuZraIjo7WUTL2sV4YbNy4ESdOnEBKSgoYhoGbmxsGDhyIqVOnwsLCol771LYwIOxSVxiwTZvCgLCsnoVBg6pnYWAo9FkYGIW/ptV+qr7+tckVBqwPJcyYMQMzZsxgOwYhhBAD1FQnEGqDk5MPCSGEEMIO1nsMCCGEELbQ5ENVVBgQQggxTP9ccqjtPpoaGkoghBBCiAL1GBBCCDFYNPdQFRUGhBBCDBIDNMmhAG3RUAIhhBBCFKjHgBBCiOGisQQVVBgQQggxWNpeldAUByKoMCCEEGKwtF350GALg08++aTOO+TxeFi2bFm9AxFCCCGEPXUqDC5fvlznHfJ4TbF+IvrExRsW0Y2dGjG6YRF5AVr5UFWdCoOYmJiGzkEIIYToHxUGKuhyRUIIIYQo1Hvy4YULF3DlyhXk5+cjLCwMrq6uuHXrFtzd3WFnZ6fLjIQQQojuMTq47XITvNxR48KgtLQUYWFh+OuvvxTzCd5++224urpi69atcHFxwcKFC3UelBBCCNG5JvjBri2NhxJWrFiBO3fuYPXq1bh69SqY/5RbvXv3xsWLF3UakBBCCCH6o3GPwalTpzBv3jwMHDgQMpnybF9XV1dkZGToLBwhhBDSkOiqBFUaFwZ5eXlo3bq12uf4fD7Kysq0DkUIIYToBQ0lqNB4KKFZs2Z4+PCh2ucePHgAd3d3rUMRQgghhB0aFwavvPIK1q9fj3v37inaeDwe0tPT8fPPP+PVV1/VaUBCCCGkoTAMT6tHU6TxUMLs2bPx119/YeTIkWjTpg14PB4++eQTpKSkoGXLlpgxY0ZD5CSEEEJ0j4YSVGjcY2BhYYF9+/Zh3rx5MDMzg6enJ0xNTfHuu+9i9+7dEIlEDZGTEEIIaQA8LR9NT70WOBKJRJgxY0aT7R0QmckwaeEzBA8rgKWNDKlJQkSucULsUVvKRJkAACVFfOxd6YJHd02RdMcUkjxjvPNhBsZ9pHxVDsMAv+2xx4mdjkhPFsLIiEHztqV4a1Ymug+QKG17ZJMj7ly2RNIdU2SmCtGhpxTfHEzQae4ahvzaNeZMXMvD1UxEO/Ve+bC8vBx3795FQUEBbGxs4OfnB6FQqFWY4uJiDB48GJmZmTh48CA6dOig1f7qa/GWx/D2L8XWZS5IfyRE/xH5+DQiBXw+cPYwO292ysStTNJ8I5zabY+W7UrR89VC/LbHQe12u753wd6VLhgyPhuTPk1HZRkfv25zxP8mtsZnmx6h95ACxbYndjpCZCaHf28pLv/esKuVG/Jr15gzcS0PVzNphIYSVNSrMNi2bRvWrVuHoqIiMAwDHo8Hc3NzhIWFYcqUKfUOs27dOpW1EfQtIESCrn2LsDzME+eOVL+pb160gJN7BaYteorYozaQy/XbfUSZuJfJyb0C++/dAo8HFOYJai0MTu+zh1/3Isz5OlXR1jlYgrGdOyD6gJ1SYbD+3D3w/6kHZoX46iSnOob+2jXWTFzLw9VMGmO5MHjy5Am2bNmCmzdvIiEhAa1atUJUVJTKdrGxsVixYgWSkpLg7OyMSZMmYezYsSrbbdmyBbt370Z2dja8vb3x8ccfo0ePHhpl0vjPkp07d+Kbb75Bx44dsWzZMmzatAnLli1Dx44d8d1332HHjh2a7hIAkJSUhD179uC9996r1/frSu/BhSgp4uP8MRul9tORdnBwqULbLiWUiTKBx6t+vIyRMQMzS+Vi10TEwETIwFio/BuJr6dbmhn6a9dYM3EtD1czNTYJCQmIjY1F8+bN4eXlpXab69evIywsDO3atcOmTZswYsQILF26FAcOHFDabsuWLVixYgXGjh2LjRs3onnz5pg+fToePHigUSaNfxVt374dr732GrZs2YIRI0YgKCgII0aMwNatWzF06NB6FwZfffUVxowZg5YtW9br+3WluU8ZUhOEkMuUf+sn3zNVPE+ZKFNdvT41C9fOWeG3vfaQFgiQl2mEjf9zQ7FUgNemZuk9D8DN80SZGl8ermbSCMPTzUMLISEhiI2NxapVq+Dn56d2m7Vr16Jdu3ZYtmwZAgMDERYWhrfeegs//fQT5HI5AKCiogIRERGYMGECpk6dip49e+K7776Du7s71q9fr1EmjQuDrKwsDBs2TO1zr7/+OrKyNP9ld+rUKcTHx2P27Nkaf6+uWdlWQVqgOsIiLRAontc3ylQ3XMw0fHo2wr5KxbrPPDDazx/junRE9AF7fL4tCX4BxXrPA3DzPFGmxpen5phcy6QJBtUThLV6aJmB/5KuwoqKCly6dAlDhw5Vah82bBiys7MVawrFxcVBKpUiNDRUsY1AIMCQIUMQGxurdF+jl9F4jkGLFi2Qm5ur9rns7Gw0b95co/2Vlpbi66+/xocffggLCwtN4zSIF50/toajKFPdcC3T6Ug7bPjcHcMmZaNbfwkqK3mIOWiHJVNaYdHmR+jaT8pCKu6dJ4Ay1QXX8gDczKRvGRkZEIvFtT4fHR1d732npKSgsrISrVq1UmqvuTVBUlIS2rdvj6SkJABQ2c7LywvFxcXIzMyEs7NznY6pcY/B3LlzsWrVKpVlkePj47FmzRrMnTtXo/1FRETA3t4eb7zxhqZRGoQk30htlWtpUz1OLM2v94Uc9UaZ6oZrmaQFAkR86olBb+dg2uJ0dAqSIiBEgoXrHsO7UwnWhHvqNU8Nrp0ngDI1xjwANzNpjNHy0cAKCwsBAFZWVkrtNV/XPC+RSGBiYqKylpC1tTUAoKCgoM7HrNOrNnPmTKWvZTIZhg8fjtatW8PR0RHZ2dlITEyEk5MTDh06hIEDB9bp4Onp6di6dSvWrl2LoqIiAEBJSYni/4uLi2Fubl7nH0YXHseL0G94AfgCRmncrIVvKQDgyQP9L+BEmRpnpvQkIcrL+PD2V52A1aZjCW7/ZYnSYj5MzeV6zcW180SZGmcermbSmA6WNXZxcdGqV6AueLXMdv5vu7ptaoYQavt+derUY/Dw4UOlh0AggLOzM4qKipCcnIyioiI4OzuDz+fXeoMlddLS0lBZWYkZM2YgICAAAQEBiiJkwoQJmDx5cp33pSt/nrSGmYUcQUMLlNoHjsxHToYR4uPMKBNlqhM750oAQHyccnHLMNVtFjZVEJnptygAuHeeKFPjzMPVTE1NzV/8NT0DNSSS6gXSanoOrKysUF5ejvLycrXb1eynLurUYxATE1PnHWrC19dX5SqG+/fvY/ny5fjiiy9YWeDo6lkrXIu1wHvL02FmIcfTx0L0G56PgBApvp7tyco1uZSJm5n+jrFCeQkfJcXV9XXKQxH+iLIBAHQTF8LJrRK9huTj1G4HGJswCBAXorKcjzMH7HDvbwuMX/BU6ZLHhzfNkJVqAgAokQrAMFDsr02nEjRzr9BJbnrtGmcmruXhaiZN8ADwtBwOaOif0NPTE8bGxnj06BGCg4MV7YmJiQCguMSx5v+TkpLQrl07xXZJSUkwNzdHs2bN6nxMHqPJVEU9uHz5MiZMmKDVyodisRgZyVlwe9y2Xt8vMpNhUvi/S3ymJQqxjwvLjlIm1jKdSI9TaZvUww9ZaepX+9x26Q6aeVSgooyHYz87IuagHZ6lVi+J7NaqDMMmZ6PfiHylwuDH95vjzAF7tfv74MfHGDg6T6ltiFuXev88hvTaNaVMXMvTUJnSW8QDAO49uq2rmCrEYjFSpYWomDZaq/2YbI6Eh6W1ToYSwsPDcefOHZUFjqZNmwapVIrIyEhF2+LFixETE4Pz58+Dz+ejoqICvXr1wpgxYzB//nwA1cP+r732Gry9vbFixYo659CqMMjLy0NZmep1qq6urvXdJScKA0Kep64wYJs2hQEhXKbXwmDqGK32Y7Jln1aFQWlpKWJjYwEAu3fvRmpqKsLDwwEA3bt3h52dHa5fv45x48ZhxIgRGDZsGOLi4rBq1SosWbIEI0eOVOyrZoGjDz/8EO3atcOBAwfw+++/48CBA/Dx8alzpnpNGV23bh127txZ6yzH+/fv12e3AIAePXpovEoTIYQQ0hjl5uZi3rx5Sm01X+/YsQM9evRA586dsW7dOvz44484cuQInJ2dsWjRIqWiAACmTJkChmGwc+dO5OTkwNvbGxs3btSoKADqURgcPHgQmzZtwvTp07Fq1SrMnDkTDMPg119/hVAoxPTp0zXdJSGEEKJ/urjkUMvvd3d3r9Mfw3379kXfvn1fuA2Px8O0adMwbdo0rTJpvI7Bnj178O677+Ldd98FAAwcOBAffPABTp48CXNzc+Tn52sViBBCCNEbjq9jwAaNC4MnT57A399fsYxjZWX1JVkikQhTpkzB/v37dZuQEEIIIXqj8VCCkVH1t/B4PFhYWODZs2eK52xtbZGZmam7dIQQQkhDaqJ/9WtD4x6D5s2bK4qBDh064MCBA6isrIRMJkNkZCTc3Nx0HpIQQghpECzeWZGrNC4MgoOD8ffffwMAZsyYgUuXLiEgIADdu3fH6dOnafIhIYQQ0ohpPJQwZ84cxX/37NkTe/fuxYkTJ8Dj8dC3b18EBgbqNCAhhBDSULRd+bAp0vrWVx07dkTHjh11kYUQQgjRLyoMVGg8lEAIIYSQpqtOPQYTJkyo8w55PB62b99e70CEEEIIYU+dCgNNbqfAsXsyEUIIIbWiOQaq6lQY7Ny5s6FzEMJpXLxhUVT6NbYjqAh178Z2BFX0x0rd8JrmpXcv1UQvOdQGzTEghBBCiILWVyUQQgghjRIHbqLERVQYEEIIMVxN8INdWzSUQAghhBAF6jEghBBisOiqBFVUGBBCCDFcVBioqHdhkJSUhL///hv5+fl466234OjoiMzMTFhbW0MkEukyIyGEEEL0ROPCQCaT4f/+7/9w+PBhMAwDHo+H4OBgODo64vPPP4evry/mzZvXEFkJIYQQ3aIeAxUaTz6MiIhAVFQUPv74Y0RFRSmtdBgUFIQLFy7oNCAhhBDSUHiMdo+mSOMeg8OHDyMsLAyTJ0+GTCZTes7d3R1paWk6C0cIIYQQ/dK4MMjMzESnTp3UPicUClFcXKxtJkIIIUQ/aElkFRoXBvb29khNTUVgYKDKc8nJyXB2dtZJMDaJzGSYtPAZgocVwNJGhtQkISLXOCH2qC1lokyczVRSxMe+lS5IvmuGpDumkOQZ4+0Pn2LsRxlK2zEM8NseB5zc6YCnySIYGTFo3rYUb856hoABEpX9HtvqiOM/O+FZqgnsm1VCPCoXo97LgJGx7rKbmsvwzvuZ8PIrhVf7EtjYy7Dzh2bY9aOL7g5SD1x7P3EtD8Dd165OaOVDtTQuDPr27Yv169cjODgYDg4OAKpvtSyVSrFz5070799fo/0dOnQIn3zyiUr79OnTMX/+fE3j6cTiLY/h7V+KrctckP5IiP4j8vFpRAr4fODsYXb+AVImyvQy0nwj/LbbAS3blSLw1QKc3uOodrvd37tg30pXDB6fjUmfpqOijI+obU74YmIbfLopCb2GFCi2jfzJGbu+c8Vbs5+hc18JEm6aY+e3rsh9Zoz3vk3RWXYr2yoMGZuDR/dM8dcpawwem6ezfWuDa+8nruUBuPva1VVTnSegDY0Lg7lz5+L8+fMYMmQIevToAR6Phx9//BEJCQkwMjJCWFhYvYJs3rwZlpaWiq+bNWtWr/1oKyBEgq59i7A8zBPnjlT/Q7t50QJO7hWYtugpYo/aQC7Xb9cTZaJMdeHkXoF9926CxwMK8wS1Fga/73NAu+5SzP763w/2zsESjO/cEdEH7BWFgSRPgMhVLhj0Tg4mfvIUANCxVxFklTzs/NYVr0/Lgqd3mU6yZ6aZ4M12HQDwYGVbxYkPF669n7iWpwYXXzuiHY2vSnBwcMDBgwcxdOhQ3L17FwKBAPHx8QgODsa+fftgY2NTryB+fn7o1KmT4uHiwk43VO/BhSgp4uP8MRul9tORdnBwqULbLiWUiTJxMhOPV7c75xoZMzC3VJ44bCJiYCxkYCKUK9qunbNGRRkfA0bnKm07YHQOGIaHS6dsdBH7H7x/HtzBtfcT1/L8i3uvnUYYLR9NUL0WOHJwcMCSJUt0nYUTmvuUITVBCLlM+Y2efM9U8fy9q+aUiTI12kyvTc3Cli/dcXqvPXoNLkBFOQ+/RDijRCrAsKlZiu2ePKheqKyFb6nS99s1q4KVXSWePDDVa25949prx7U8TQUNJajizJLIoaGhyM/Ph6urK0aNGoVp06ZBIBDoPYeVbRWepQhV2qUFAsXz+kaZ6oYy1c3r07NgIpIj4jNPrJrfAgBgaVOFxdsS0S7g36uKpPlGMBbKITKTq+zD0kYGSb7+/33qE9deO67lIU2XxoWBuomC/8Xj8bBs2bI678/R0RHvvfce/P39wePxEBMTg5UrVyIzMxOLFy/WNJ5OMC+oINkqLilT3VCml/s90h4bP/dA6KQsdO0vQVUlDzEH7fHlFC98uvkRuvb798qEFw1N1GXYorHj2mvHtTxNAp04FRoXBpcvX1ZpKygoQElJCaysrJQmENZFUFAQgoKCFF/36dMHQqEQ27dvx8yZM+Hk5KRpRK1I8o3UVt6WNtVjstJ8/XeyUKa6oUwvV1QgwPpPPfHK2zmYujhd0d4tRILwt7yxLtwTWy7dqc5oW4WKMj7KSnkQmSr/9pQWCNC6o/I8haaGa68d1/I0GVQYqNB48mFMTIzKIy4uDtu2bYOdnR3WrVundajBgwdDJpPh/v37Wu9LU4/jRfBoUw6+QPndUjPOWjPuSpkoU2PMlJYkQnkZH97+qguRtelYjMxUIUqLq38ttGj7T8b7ynMJ8rOMIMkzRnOfUpV9NCVce+24loc0XRoXBrXp2bMnxo0bh6+++kpXu2TFnyetYWYhR9DQAqX2gSPzkZNhhPg4M8pEmRptJjvnCgBAfJyFUjvDAA/iLGBhU6WYU9C1nwQmIjnO7HdQ2vbMfnvweAwCXy3QS2a2cO2141qepoAH7e+V0BRH1HTa9+Tl5YXbt29rvZ8TJ05AIBCgXbt2OkilmatnrXAt1gLvLU+HmYUcTx8L0W94PgJCpPh6ticr1wlTJspU5+PFWKGshI/S4uoJaakPRfgjygYA0E1cCCe3SvQako/fdjvA2ESObuJCVJbzEX3AHvf+tsC4BemKuQOWtjKMnpuBXd+5wtKmSrHA0Z4fXfHKOzk6W8OgRrf+EojM5DAzr+4ab+5djj7/fAj+HW2F8jKd/R1TJ1x7P3Etz39x7bUj2uExzIums2hm1apVOHLkCGJiYur8PVOnTkVgYCC8vb0BANHR0di/fz8mTJiATz/9tF45xGIxMpKz4Pa4bb2+X2Qmw6Twf5cdTUsUYh8XltWlTJTpP6LSr6m0TenRHllpqjPXAWDLpdto5lGBijIeon52QsxBO2SmCmFkxMC1VRlCJ2ej34g8lUmFv26pXhI5M80Eto6VGDA6F6Pnql8SOdS9W71/nu2X7sLZo1LtcxN6+CKzlp/rpbT4Fce191OD5tFiNqmuX7v05tXDyPceaf+HZm3EYjHSCgqB4WO129GR3XC3sUZ0dLRugnGAxoXBmjVrVNoqKyvx4MEDnD9/HlOnTsVHH31U5/0tXboUFy5cwLNnzyCXy9GiRQuMHDkS48ePB6+eb1RtCwNCGgN1hQHbtCkMGozu/vZp2jh0mYleC4PXtSwMjja9wkDjoQR1hYGJiQnc3Nwwd+5cTJ06VaP9LVq0SNMIhBBCiPYY7Rc4aop1p8aFQXx8fEPkIIQQQvSvCX6wa0ujGSFlZWX46KOPcPXq1YbKQwghhBiM8ePHw8fHR+3j+PHjAIDw8HC1z58/f75BMmnUYyASiRAdHY0xY8Y0SBhCCCFEr1juMfj8889RVFSk1LZ9+3acPn0aPXv2VLR5eHjg+++/V9rOy8urQTJpPJTQtm1bPHz4EAEBAQ2RhxBCCNEbrecYaHn81q1bq7R99NFH6N27N+zs7BRtIpEInTp10vJodaPxxaXz58/Hli1bcOXKlYbIQwghhBisuLg4pKWlYdiwYaxlqFOPwd9//4127drB3NwcX3zxBYqLizFx4kRYWVmp3MuAx+Ph119/bZCwhBBCiE5xbPJhVFQUTE1NIRaLldpTUlLQrVs3lJWVwdvbG2FhYRgwYECDZKhTYTBhwgRERkaiY8eOsLGxgY2NTYOEIYQQQvRJ26EEAMjIyFD5IP+vuq5xUFVVhVOnTkEsFsPM7N8lrn19fdGhQwe0bt0aUqkUe/fuxezZs/HTTz/h1Vdf1Tr/8+pUGPx3DaSdO3fqPAQhhBBi6P7880/k5uYiNDRUqX3ixIlKX4eEhGDMmDFYtWoVe4UBIYQQ0iTpoMfAxcVFJysfRkVFwcbGBn369Hnhdnw+H6+88gq+++47lJWVQSTS7Z016c4WhBBCDBOjo4cOlJWVITo6Gq+++iqMjdXciOT56A245GKdewwmTpxYp3sX8Hg8XLvGvTXcCSGEEK6KiYlBcXFxna5GkMvl+O2339CmTRud9xYAGhQG3bt3V7qmkhDCrlC3rmxHUHGCgzd2GuLWhe0IjUNTXPS/DnQx+VAXjh07BldXV3TtqvzvOj09HeHh4QgNDYWnpycKCwuxd+9e3LlzB6tXr26QLHUuDGbPno2OHTs2SAhCCCGEFRwoDAoLC3HhwgW1PfPm5uawsLDA2rVrkZeXB2NjY7Rv3x6bNm1CUFBQg+ShyYeEEEIMFwcKA2tra9y5c0ftczY2NoiIiNBrHpp8SAghhBAF6jEghBBisLgyx4BL6lQYxMfHN3QOQgghRP+oMFBBQwmEEEIIUaChBEIIIQaLhhJUUWFACCHEcFFhoIKGEgghhBCiQD0GhBBCDJMu7nXQBHscqDAghBBisF5+ByDDQ4WBGiIzGSYtfIbgYQWwtJEhNUmIyDVOiD1qS5koE2XSQEkRH3tXuuDRXVMk3TGFJM8Y73yYgXEfZShtxzDAb3vscWKnI9KThTAyYtC8bSnempWJ7gMkStse2eSIO5ctkXTHFJmpQnToKcU3BxN0mrsG1147ruXhaiaiHc4UBgcOHMDOnTuRnJwMCwsL+Pv7Y/369axkWbzlMbz9S7F1mQvSHwnRf0Q+Po1IAZ8PnD3MzpudMlGmxphJmm+EU7vt0bJdKXq+Wojf9jio3W7X9y7Yu9IFQ8ZnY9Kn6ags4+PXbY7438TW+GzTI/QeUqDY9sROR4jM5PDvLcXl3xt2mhTXXjuu5eFqJo00waEAbXGiMFi9ejV+/vlnzJw5E/7+/oobSrAhIESCrn2LsDzME+eOVL+pb160gJN7BaYteorYozaQy/Xb+USZKFNjzeTkXoH9926BxwMK8wS1Fgan99nDr3sR5nydqmjrHCzB2M4dEH3ATqkwWH/uHvj/1AOzQnx1klMdrr12XMvD1Uya4EH7yxW5+9PVH+tXJSQlJSEiIgI//fQTpk+fju7du2PgwIFYsmQJK3l6Dy5ESREf54/ZKLWfjrSDg0sV2nYpoUyUiTLVEY9X/XgZI2MGZpYypTYTEQMTIQNjofJvbr6efmtx7bXjWh6uZtIYo+WjCWK9MDh06BA8PDzQp08ftqMAAJr7lCE1QQi5TPm3WfI9U8XzlIkyUSbden1qFq6ds8Jve+0hLRAgL9MIG//nhmKpAK9NzdJ7HoB754lrebiaiWiP9aGEmzdvwtvbG2vXrsWuXbsglUrRqVMnfPbZZ/D1bbhuwtpY2VbhWYpQpV1aIFA8r2+UqW4oU91wMdPw6dkwETFY95kHfprfHABgaVOFz7clwS+gWO95AO6dJ67lqTkm1zJprIn+1a8N1guD7Oxs3L17FwkJCfjiiy9gbGyMNWvWYPLkyTh9+jSsrKz0nol5wRuFrfcQZaobylQ3XMt0OtIOGz53x7BJ2ejWX4LKSh5iDtphyZRWWLT5Ebr2k7KQinvniWt5AG5m0gQtiayK9cKAYRiUlJRg9erVaNOmDQDAz88PYrEYkZGRmD59ul7zSPKN1Fa5ljbV45/SfP2fMspUN5SpbriWSVogQMSnnhj0dg6mLU5XtAeESLDwrTZYE+6JbZfu6jUTwL3zxLU8ADczEe2xPsfA2toaDg4OiqIAAJycnNCqVSskJibqPc/jeBE82pSDL1AuI1v4lgIAnjwQUSbKRJl0KD1JiPIyPrz9VSeqtelYgsxUIUqL9f+rimvniWt5uJpJYzT5UAXrhYGXl5fadoZhwNfX9OP/+POkNcws5AgaWqDUPnBkPnIyjBAfZ0aZKBNl0iE750oAQHycuVI7w1S3WdhUQWQm12smgHvniWt5uJpJUzxGu0dTxHo/T79+/XD48GE8fPgQ3t7eAIDMzEw8evQIb7zxht7zXD1rhWuxFnhveTrMLOR4+liIfsPzERAixdezPVm5JpcyUabGnOnvGCuUl/BR8s9f/SkPRfgjygYA0E1cCCe3SvQako9Tux1gbMIgQFyIynI+zhyww72/LTB+wVOlSx4f3jRDVqoJAKBEKgDDQLG/Np1K0My9Qie5ufbacS0PVzMR7fEY5kVTRxqeTCbDyJEjUVxcjHnz5sHExARr165Fbm4uTp06BTMzzStOsViMjOQsuD1uW69MIjMZJoX/u8RnWqIQ+7iw7Chlokwcz3QiPU6lbVIPP2Slqc5cB4Btl+6gmUcFKsp4OPazI2IO2uFZavWSyG6tyjBscjb6jchXKgx+fL85zhywV7u/D358jIGj85Tahrh1qffPw7XXjmt5GipTeot4AMC9R7d1FVOFWCxGek4hTHuP1Wo/pX/uhpuDNaKjo3WUjH2sFwYAkJubi2XLliE2NhZVVVUICAjAJ598glatWtVrf9oWBoSQ+lFXGLBNm8KAsEOfhYFZL+0Kg5KLTa8wYH0oAQDs7e3xww8/sB2DEEIIMXicKAwIIYQQVrDeZ849VBgQQggxXFQYqKDCgBBCiMFqqpccaoP1dQwIIYQQwh3UY0AIIcRwUY+BCioMCCGEGCwe+1fscw4NJRBCCCFEgXoMCCGEGCZd3AipCXY4UGFACCHEYNFVCapoKIEQQgghCtRjQAghxHBRj4EKKgwIITrDxRsW/ZJ2ie0IKt50D2Q7giqeYd4imYYSVNFQAiGEEEIUqMeAEEKI4aIeAxVUGBBCCDFIPGg/lNAUB2BoKIEQQojhYrR8aOnQoUPw8fFReXz//fdK28XGxmL48OHo0KEDBg4ciN27d2t/8FpQjwEhhBDCss2bN8PS0lLxdbNmzRT/ff36dYSFheH1119HeHg44uLisHTpUpiYmGDkyJE6z0KFASGEEIPFlasS/Pz8YGdnp/a5tWvXol27dli2bBkAIDAwEBkZGfjpp5/w5ptvgs/Xbec/DSUQQggxTAwAhtHy0bARKyoqcOnSJQwdOlSpfdiwYcjOzsa9e/d0fkwqDAghhBCWhYaGwtfXF2KxGBs2bIBMJgMApKSkoLKyEq1atVLavnXr1gCApKQknWehoQRCCCEGSxdDCRkZGRCLxbU+Hx0dXetzjo6OeO+99+Dv7w8ej4eYmBisXLkSmZmZWLx4MQoLCwEAVlZWSt9X83XN87pEhQEhhBDDxfIcg6CgIAQFBSm+7tOnD4RCIbZv346ZM2cq2nm1rExZW7s2qDAghBBCtODi4vLCXgFNDR48GFu3bsX9+/fh5uYGQLVnQCKRAFDtSdAFKgzUEJnJMGnhMwQPK4CljQypSUJErnFC7FFbykSZKFMjz1RaxMeBle54fM8MyXfMIckzxqgP0jD6ozSl7V50PwNXr1Ksjr2p+Do/yxgHf3JD3FkbFGSawMqhEh37FGLUh2lwdKvQWXYuvm6m5jK8834mvPxK4dW+BDb2Muz8oRl2/ejCWiZN8ORsJ3gxT09PGBsb49GjRwgODla0JyYmAgC8vLx0fkzWC4Px48fjypUrap/78ccfVWZi6sPiLY/h7V+KrctckP5IiP4j8vFpRAr4fODsYXb+AVImykSZdEOab4zf9zihhW8Jug/Kw5m9zdRut/zoHZW2h9ctsO1/LdDj1TxFW2U5D//3ZjsUFxph9EdpcG9TiqePRIj8wR03Yq2x6txNmFro5tOHi6+blW0VhozNwaN7pvjrlDUGj817+TdxCUcuV/yvEydOQCAQoF27djAxMUFgYCBOnjyJSZMmKbaJioqCo6Mj2rVrp/Pjs14YfP755ygqKlJq2759O06fPo2ePXvqPU9AiARd+xZheZgnzh2p/od286IFnNwrMG3RU8QetYFcrt9FMCkTZaJMusvk6F6OHXevgscDJHlGtRYG3l2LVNpO73YCj8dAPCZL0XbviiUykk0x67skDHg7GwDQvpcEphYyrJzTBrcuWKPH4Hytc3PxdQOAzDQTvNmuAwAerGyrGl9hwLKpU6ciMDAQ3t7eAKonKu7fvx8TJkyAo6MjAGD27NkYN24cFi1ahGHDhiEuLg4HDhzAkiVLdL6GAcCByxVbt26NTp06KT1u3bqF3r1717rYQ0PqPbgQJUV8nD9mo9R+OtIODi5VaNulhDJRJsrUiDPxePW7w3BpER9/RdmjXaAELi3LFe1GRtV/cppbypS2N7eq/tpYqJs/Sbn4ulXjoTHfMYDHaPfQVsuWLXHw4EHMnTsXc+bMwfXr1/Hpp5/ik08+UWzTuXNnrFu3Drdv38bUqVPxyy+/YNGiRQ2y6iHAgR6D58XFxSEtLQ3vv/8+K8dv7lOG1AQh5DLlN3ryPVPF8/eumlMmykSZmnim5/1x1AFlJQIMeDtLqb1tgBReHYsQucIdju7lcGtTioxHIuz5xgOtOhShY5BuLidrDOeo0alZ4EjbfWhh0aJFddqub9++6Nu3r3YHqyPWewyeFxUVBVNT0xdeE9qQrGyrIC1QrZekBQLF8/pGmeqGMtUNZaqf6H2OMLeuQuAQ5a5ygRHwxf57aOZZhoWhHTDOpzsWDO4IM6sqLN5zH0bGuukxaAznqDFiu8eAizhVGFRVVeHUqVMQi8UwMzNjLceLCki23geUqW4oU91QJs2kPDBFwnVLBA3PgYlIOU1VJQ8/zGqDx3fNMevbJHz5y128tzIRec9MsOQdXxRLBDrLweVzRJoOTg0l/Pnnn8jNzUVoaChrGST5Rmorb0ub6vFCab7+TxllqhvKVDeUSXPR+5wAAAPeyVLznCOun7XFN8dvo7V/MQCgXQ8p2gZIMbt3Zxzf7IxRH6ZrnYHr56jRoopKBad6DKKiomBjY4M+ffqwluFxvAgebcrBFyi/W1r4lgIAnjwQUSbKRJkMIFONygoezv/iAK+ORWjppzrB7/Fdc/AFDFp1KFZqd25eDkvbSqQ80E3vJ5fPUWNGQwmqOFMYlJWVITo6Gq+++iqMjY1Zy/HnSWuYWcgRNLRAqX3gyHzkZBghPk7/QxyUiTJRJvaGFq+etoUkzxghY7LVPm/brAJyGQ+JNyyU2p8+EkGabwx7F90scMTlc0SaFs70PcXExKC4uBjDhg1jNcfVs1a4FmuB95anw8xCjqePheg3PB8BIVJ8PduTleuEKRNloky6zRQXY4PyEj5Ki6vH/1MTTPFXVPXl0V3EBRCa/rsgUfQ+J5iIZAganqN2XyGjsxG12QXfzWiDt+alw7VVGTJThDi0xg0iMxleGZ+pk8xcfN1qdOsvgchMDjPz6mGN5t7l6PNPAfN3tBXKyzjzN6gqba9KaIJ4DMONszJr1izEx8cjJiZG65tCiMViZCRnwe1x23p9v8hMhknh/y47mpYoxD4uLBdLmSgTZdLYL2mXVNpmBnZGdppQ7fYRf12Hk0f1OgU5T00wK7Azgt/IwXsra7+9bUayEAdWuuP+FUvkZ5nA2qESPl2lGPl+Ojy8S1W2f9Fyyy/SoK+bFr93t1+6C2ePSrXPTejhi8xaznVt0pvfBwDce3S73pleRiwWIyOzEA5eo7XaT05SJFyaWev0Xgls40RhUFhYiN69e2PixIlYsGCB1vvTtjAghDQd6goDttW3MGhQDXCXvvqiwoBdnBhKsLa2xp07quuSE0IIIQ2K9T+NuYcThQEhhBDChqZ6ZYE2ODwjhBBCCCH6Rj0GhBBCDBMDQM7uvRK4iAoDQgghhqsJfrBriwoDQgghBovmGKiiOQaEEEIIUaAeA0IIIQaK0cHKh02vy4EKA0IIIQaLhhJU0VACIYQQQhSox4AQQojhoh4DFVQYEEIIMUwMwNN2jkETLCyoMNAjnrEJ2xFUMJW6uVc8IQA4dSOeGly8YdHKxxfZjqDi/Ra92I5AOIIKA0IIIYZLznYA7qHCgBBCiMHSeiihCaKrEgghhBCiQD0GhBBCDBd1GKigwoAQQojhoqEEFVQYEEIIMVi08qEqmmNACCGEEAXqMSCEEGK4aChBBRUGhBBCDBMD8LRdx6AJ1hU0lEAIIYQQBeoxIIQQYrhoKEEFFQZqiMxkmLTwGYKHFcDSRobUJCEi1zgh9qgtK3latSvBpAVpaOFTCmv7SlSU8ZH2SIRjO5wQc9iBlUwA984TZWq8mUzNZXjn/Ux4+ZXCq30JbOxl2PlDM+z60YWVPDX0dZ7Kivg4vdoD6ffMkXbXHMV5xhg0LxWDP0hV2u5F9zNwalWCT2NuKLWd/9kZf+xwRm6aCNZOFej+VhYGzk6HwFh3H4Zcey9pjOoCFZwoDM6cOYMNGzYgKSkJIpEIXbp0wYcffohWrVqxkmfxlsfw9i/F1mUuSH8kRP8R+fg0IgV8PnD2sP7f7BZWVch+aoJzv9oh55kJRKZyhAzPxccrk9HMvQJ7V7vqPRPAvfNEmRpvJivbKgwZm4NH90zx1ylrDB6bp/cM6ujrPBXnG+PinmZw8y1Gh1fycGlfM7XbvX/olkrbkxuWOLykJToMUj5np9e44eQPnhDPSodPUAFSb1ng+A+eKMw0wejlj3SWnWvvJaI91guDixcvYs6cOXjttdfw/vvvQyKRYM2aNZg8eTKOHz8OCwsLveYJCJGga98iLA/zxLkj1W/qmxct4ORegWmLniL2qA3kcv3eQe7WJSvcumSl1HYlxgbNPMox+O1sVgoDLp4nytR4M2WmmeDNdh0A8GBlW8WJwkCf58nOvRzLb10BjwcU5RnVWhi06FKk0nZxjzN4PAaBo7MUbcX5Rvh9tTsCx2Qi9OMUAECbnhLIqng48b0n+k7JgHObUq1zc/G9pAketL9XAnd/uvpjffLh8ePH4erqim+++Qa9e/fG4MGDsXz5cjx79gzXrl3Te57egwtRUsTH+WM2Su2nI+3g4FKFtl1K9J6pNpJ8I8hk7LwtuXieKFPjzfTPr2gWjls7fZ4nHq9+d6wuK+Ljxgl7ePWQwLFFmaL9fqwNKssF6DEyS2n77iOzwDA83D5tp21kAFx9L2mIYbR7NEGsFwZVVVUwNzcH7z//KiwtLVnL09ynDKkJQsif+8BNvmeqeJ4tPB4DvoCBtV0lQsdnoWuwBAcinFnJwsXzRJkabyYuagzn6foxB1SUCBA4JlOpPeOBGQDApa3yB7O1UyXM7SoVz2urMZwjojnWC4O33noLjx49ws6dOyGRSJCWloZvvvkGXl5e6Nmzp97zWNlWQVqgOsIiLRAonmfLnKVPcOLRVURev4EZ/5eCiP954sQeJ1aycPE8Uaa64WImLmoM5+lSZDOYWlXB/9VcpfaSAiMYmcghNFO9SN/MpgrF+boZRW4M5+iFGAByLR9NsNOA9TkGAQEBWLNmDT766CMsXboUANC6dWts3boVJiYmrGR6Ue8Qm++BfWtdcGqfI2wcKtFDXICwJU8gMpPhl43szNzm4nmiTHXDxUxcxOXzlPHQFE9uWKLPhAwYi1TT8F5wE4D6DFvUhsvn6OUYrecYaPtTnjx5EseOHcPdu3dRWFgIDw8PvP322xgzZgz4/Oq/3cPDw3H48GGV7920aROCg4O1Or46rBcGcXFxWLBgAd58802EhISgqKgI69evx/Tp07F37169Tz6U5BuprXItbWQAAKmOKu36yH4qRPZTIQDg77M2AIDJH6fjzEEHFOYZ6zULF88TZaobLmbiIq6fp0uR1RMUA0dnqjxnZlOFynIBKkr5MDFV7jUoKTCCR3vd/CXP9XNUJyzPE9i2bRtcXV3x8ccfw97eHpcvX8ZXX32F1NRULFy4ULGdh4cHvv/+e6Xv9fLyapBMrL9qS5cuRWBgID777DNFW9euXREcHIwDBw5g8uTJes3zOF6EfsMLwBcwSuNmLXyrZ/A+eSDSa54XeXDTHKHjs+HsWa73woCL54kyNd5MXMTl81RVwcPVw47w6FAEdz/VCX6u/8wteBpvhhad/72SQZJljOI8Y7j46GZSIJfPUWOxfv162Nn9Oxk0MDAQJSUl2L17Nz744ANFz7lIJEKnTp30kon1OQZJSUlo27atUpudnR2cnJyQkpKi9zx/nrSGmYUcQUMLlNoHjsxHToYR4uN0M2lHF/x7SiGTAc9ShHo/NhfPE2VqvJm4iMvn6c4ZOxTnGaPHKNXeAgBo27cAxkIZrhxUnoN05aATeDwGHV7RzeWgXD5HdcbyVQn/LQpq+Pr6ory8HAUFBVrvvz5Y7zFwdXXF3bt3ldqys7ORlZUFNzc3vee5etYK12It8N7ydJhZyPH0sRD9hucjIESKr2d7snJN7tzlj1FSxMeDGxYoyDGClV0Vgobko99reTiw3lnvvQUAN88TZWq8mQCgW38JRGZymJlXd0M39y5Hn38+cP6OtkJ5mX7/jtH3ebp31gYVpQKUF1VP3MtMNMWNE/YAgHb985WGBC5FOsFYJEPX13PU7svcpgoD30vDyR88YW5TBZ+gAqTcssCplR4IHJOpkzUMAO6+lzSi7U2UAGRkZEAsFtf6fHR0tEb7u3btGmxsbGBvb69oS0lJQbdu3VBWVgZvb2+EhYVhwIAB9c78IjyGYXeAZdeuXfjyyy8xduxYiMViSCQSbNiwAU+fPkVUVBScnDSfdS8Wi5GRnAW3x21fvrEaIjMZJoX/u8RnWqIQ+3SwxCfPuH6TKQeOzMYrI3Pg0boMFlYylJbwkXzPDKciHbReEpmprKj39zbUedIGZWI5kxaz2rZfugtnj0q1z03o4YvMtHr2jGnxK66hztPKxxdV2r7o3QX56eq73v/vwjXYe5QDAPKfmmBJn67oNjwbY39MfOFxYrc544+dLshLE8LKsRLd38rCK3PS1C6J/KLlll+kIc5Reot4AMC9R7frvY+XEYvFeJaeD3fTYVrtJ630GBh+GVxcap8ErklhcPv2bYwZMwazZ89GWFgYAGD79u0wMjJC69atIZVKsXfvXvzxxx/46aef8Oqrr2qVXx3WCwOGYbB//37s2bMHKSkpMDMzQ4cOHfDBBx/Ax8enXvvUtjBoKPUtDBqSNoUBISp0Od1dVzi4CI26woBt9S0MGoI+CwMPUahW+0kti4Kzm63GvQLqZGdnY9SoUWjWrBl27twJY2P1vcFyuRxjxoxBUVERTpw4ofVxn8f6UAKPx8Po0aMxevRotqMQQggxNBwpHKVSKaZPnw6RSISIiIhaiwIA4PP5eOWVV/Ddd9+hrKwMIpFuJ3myXhgQQgghhqy8vByzZs1CTk4OIiMjYWv78mGYhuzsp8KAEEKIYWKgfY+Blt9eVVWFefPmIT4+Hrt27arTpHu5XI7ffvsNbdq00XlvAUCFASGEEEPG8lDCkiVLcPbsWSxYsABlZWW4ceOG4rnWrVujsLAQ4eHhCA0NhaenJwoLC7F3717cuXMHq1evbpBMVBgQQggxXDq4XFEbf/zxBwDgu+++U3lux44d8PHxgYWFBdauXYu8vDwYGxujffv22LRpE4KCghokExUGhBBCCEtiYmJeuk1ERIQekvyLCgNCCCEGiv2bKHERFQaEEEIMF0cuV+QS1u+VQAghhBDuoB4DQgghhktOPQbPo8KAEEKIYWIU/0P+g4YSCCGEEKJAPQZ6xFSpv3McUcbJm03Ra1c3NJGrTt5v1TDXn2tj3ZNYtiMoTB1nob+Dafue5eB9w7RFhQEhhBDDRYWBChpKIIQQQogC9RgQQggxXNpeldAE/7ymwoAQQoiBYgBG25slNL15NVQYEEIIMVw0YVZFE+wEIYQQQkh9UY8BIYQQw8RA+zkGTbDDgQoDQgghhouGElTQUAIhhBBCFKjHgBBCiOGiHgMVVBgQQggxXFQYqKDCQA2RmQyTFj5D8LACWNrIkJokROQaJ8QetWUtk6m5DO+8nwkvv1J4tS+Bjb0MO39ohl0/urCWiWvnqVW7EkxakIYWPqWwtq9ERRkfaY9EOLbDCTGHHVjJxMXXjYuZAO69n7iYyb+XFOI38tCuWxEcXStRJBEg4aYZdq10QeJtM50eq6xIgBOrPJB2zxxpdy1QlGeMIe+nIPSDFKXtwpr3qXUfzbxK8HlMHAAg85EIf+xxxsO/bJCTIgKPx8C5dSlCpqajy9BcnWYn2uFEYXD27FmsWrUKCQkJsLe3x5tvvonZs2dDIBCwkmfxlsfw9i/F1mUuSH8kRP8R+fg0IgV8PnD2MDu/EKxsqzBkbA4e3TPFX6esMXhsHis5/otr58nCqgrZT01w7lc75DwzgchUjpDhufh4ZTKauVdg72pXvWfi4uvGxUwA995PXMwUOiEbVrZVOLLFCU8SRLC2r8KbM7Lw06/x+HRsG9y8aKmzYxXnG+HPvc5w8y2G/yu5+HOfs9rtFhy+qdKWfMMSB79oBf9B/37g3z9vizsxdujxRhaa+xdBXsXDtSgHbA7zReiHTzBkXqrOsmtEru0CR00P64XBjRs3EBYWhiFDhuDDDz9EUlISVqxYgdLSUixcuFDveQJCJOjatwjLwzxx7kj1P/ybFy3g5F6BaYueIvaoDeRy/d81IzPNBG+26wCAByvbKtZ/mXPxPN26ZIVbl6yU2q7E2KCZRzkGv53NSmHAtdeNq5m4+H7iYqY1n3mgMNdYqe3qWSts++Mu3n7vmU4LAzv3cnx/6xJ4PKAoz6jWwqBlF6lK24U9zuDxGPQanalo6/ZaNvpOzADvP6fMr38+ivKMcTrCHQNnpsFYqO9ufUYHQwlNbyiC9asSVq9eDV9fX/zwww8ICgrCpEmTMHfuXOzcuRM5OTl6z9N7cCFKivg4f8xGqf10pB0cXKrQtkuJ3jNV44FLt/Hi7nlSJck3gkzG1rnj1utWjXuZuPh+4mKm54sCACgrESAlQQQH1wqdHovHg9KHeF2VFQlw/bgDWvcohFOLMkW7hV2V2v216CRFRakAJQWs/51K/sF6YXD//n306aM8RhUUFITKykr88ccfes/T3KcMqQlCyJ/7IEm+Z6p4nnD7PPF4DPgCBtZ2lQgdn4WuwRIciFD/1w7hBi6+n7iYSR0zSxlaty/Fk4citqMAAK4ec0B5iQC9x2S+fGMADy5aw8K+ApYOlQ2cTA0G1T0GWj30H7uhsV6ilZeXw9hYuQo2MTEBACQlJek9j5VtFZ6lCFXapQUCxfOE2+dpztInGDouGwBQUc5DxP88cWKPE2t5yMtx8f3ExUzqzPkqBSIzGfauYnfyaI2Lkc1galWFzoNf3uP7595mSLhkg5H/SwKfnSll2q982ASxXhi0aNECt27dUmq7ceMGAKCwsJCFRC8ecqK30L+4ep72rXXBqX2OsHGoRA9xAcKWPIHITIZfNnLjFydRj4vvJy5m+q8J859C/EY+1i5y1/lVCfXx9KEZHl+3Qt8JT2EsevEZunvWFpGLvdB5SA76TcrQU0JVjNZ3V2x6WB9KGDt2LM6fP4/t27ejoKAAV69excqVKyEQCMCrzwCXliT5Rmr/ErC0kQEApPms11KcwOXzlP1UiITb5vj7rA3WLGqBk3scMfnjdFjbsdBVSeqEi+8nLmb6r7EfZGDs+8+w7WtX/PozN3rELu5rBgDo9ZJhhHuxNtj4blu07VOAyT89qNdcBtJwWC8MRowYgcmTJ+Pbb79Fjx49MGnSJIwZMwbW1tZwdHTUe57H8SJ4tCkHX6Bc7bbwLQUAPHnAjXE8tjWm8/TgpjmMjBk4e5azHYXUgovvJy5mqjH2gwxM+CgDO35wwb413Jg/U1XBw5XDTvDsIIWHX3Gt292LtcGG6b5oEyjB9PX3YWTCct+LnNHu0QSxXhjweDyEh4fj0qVLOHr0KC5evIhRo0YhLy8P/v7+es/z50lrmFnIETS0QKl94Mh85GQYIT6O/e46LmhM58m/pxQyGdSOFxNu4OL7iYuZAOCdedVFwe6Vzti9gjvDY7d+t0NRnrHSJYrPu3e+uijwCpDg3Y33WLg8UQ1tJx82QZzpF7e0tETbtm0BAD/99BPc3NzQq1cvvee4etYK12It8N7ydJhZyPH0sRD9hucjIESKr2d7srKGQY1u/SUQmclhZl7dldncuxx9/vml9Xe0FcrL9FfncfE8zV3+GCVFfDy4YYGCHCNY2VUhaEg++r2WhwPrnVGYp3qplz5w6XXjaiYuvp+4mOnNGZmYuCADf5+1wpUYa7TtovyXeXycuU6Pd/esLcpL+Cgvrp4Z+CzBFHHH7QEA7UPyYWL67/j8xchmMBbJEPB6ttp9Jf5thQ3TfWHlWIlBs9OQds9C6XnnNiUwtZTpND+pHx7DsFvy3Lp1C1euXIGvry/KysoQExODo0ePYtOmTejZs2e99ikWi5GRnAW3x23r9f0iMxkmhf+7DGpaohD7dLEMqpYDadsv3YWzh/px8gk9fJGZVo+/iLV4+RvqPPGMTer1fQNHZuOVkTnwaF0GCysZSkv4SL5nhlORDlovicxU1X9+QoO8blpqsEwcfD9po8Ey1XMK/rcHHsK/Z1Gtzw9y71LfRFiXHKvStqh3N+SlqR8y+fKPv2HvUT08l/fUBP/XOwDdR2Rh4o8JarePWuGJEys9az3++/tuw7tn9YTzqeOqi4bzser3pQtisRjPHmfDI6ebVvtJdbgK5xaOiI6O1lEy9rFeGNy/fx+ff/45EhKq3wD+/v6YN28eOnfuXO99alsYNBguzrDhYFdYfQuDhqRNYWBQOPh+4iTWrs2rnbrCgC16LQyyu2q1n1THa02uMGB9KMHX1xf79+9nOwYhhBBCwIHCgBBCCGELQzdRUkGFASGEEMNFw18qWL9ckRBCCCHcQT0GhBBCDFcTXaRIG1QYEEIIMUwMA2h7r4QmOBRBhQEhhBCDxVCPgQqaY0AIIYSwKDk5GVOnTkWnTp3Qs2dPLF26FGVlZazloR4DQgghhovl2y5LJBJMnDgRrq6uWLVqFfLy8rB8+XIUFBTg+++/ZyUTFQaEEEIMEgPthxK0HYjYt28fJBIJjhw5Ajs7OwCAQCDA/PnzMWvWLHh5eWl5BM3RUAIhhBDCkvPnz6Nnz56KogAABg0aBBMTE8TGsrNMdZPsMcjKyoLMqALpLeLZjkLqgYN3lND6rwJCuK7m/gRckJPNA18Pf7bKjCqQ3vye1vvIyMiAWCyudZsX3UchKSkJb775plKbiYkJPD09kZSUpFW2+mqShYFQKASPx4OjoyPbUQghhGjIyCgbJiYNezM1FxcXne0rKyur3t8rkUhgZWWl0m5lZYXCwkJtYtVbkywMrl69ynYEQgghHLZr1y62I7wQwzDgsXRHXppjQAghhLDEysoKEolEpV0qlartSdAHKgwIIYQQlnh5eanMJaioqEBKSgorVyQAVBgQQgghrAkODsalS5eQn5+vaPv9999RUVGBvn37spKJxzBNcKFnQgghpBGQSCQIDQ2Fm5sbwsLCkJubi6+//hp9+vRhbYEjKgwIIYQQFiUnJ2Pp0qW4du0aRCIRQkNDMX/+fIhEIlbyUGFACCGEEAWaY0AIIYQQBSoMCCGEEKJAhQEhhBBCFKgwIIQQQogCFQaEEEIIUaDCgBBCCCEKVBiokZycjKlTp6JTp07o2bMnli5dirKyMlYzPXnyBIsXL8brr7+Odu3aITQ0lNU8J0+eRFhYGPr27YtOnTph2LBh2LNnD+RyOWuZLly4gHHjxiEwMBDt27eHWCzG8uXLIZVKWcv0vOLiYgQHB8PHxwe3b99mJcOhQ4fg4+Oj8mBrMZX/OnDgAF577TV06NABPXv2xMyZM1nLMn78eLXnycfHB8ePH2ct15kzZzBy5Eh06dIFvXr1wpw5c/Do0SPW8gDA2bNnMWLECLRv3x59+/bFqlWrIJPJWM1E6q9J3l1RGxKJBBMnToSrqytWrVqFvLw8LF++HAUFBaz+4kxISEBsbCz8/f0hl8vB9vIT27Ztg6urKz7++GPY29vj8uXL+Oqrr5CamoqFCxeykqmwsBCdO3fGxIkTYWVlhYSEBKxevRoJCQnYunUrK5met27dOs78wty8eTMsLS0VXzdr1ozFNMDq1avx888/Y+bMmfD390dhYSEuXLjAWp7PP/8cRUVFSm3bt2/H6dOn0bNnT1YyXbx4EXPmzMFrr72G999/HxKJBGvWrMHkyZNx/PhxWFhY6D3TjRs3EBYWhiFDhuDDDz9EUlISVqxYgdLSUtZ+FxAtMUTJhg0bGH9/fyY3N1fR9uuvvzLe3t5MYmIia7lkMpnivxcuXMgMHTqUtSwMwyidnxrLli1jOnTowJSXl7OQSL3IyEjG29ubefbsGdtRmMTERKZTp07M3r17GW9vb+bWrVus5Pjll18Yb29vta8hWxITExlfX1/mwoULbEd5oZCQEGb69OmsHf/TTz9l+vfvz8jlckXbzZs3GW9vb+bcuXOsZJoyZQozYsQIpbbNmzczfn5+THZ2NiuZiHZoKOE558+fR8+ePWFnZ6doGzRoEExMTBAbG8taLj6fWy/Vf89PDV9fX5SXl6OgoED/gWphY2MDAKiqqmI3CICvvvoKY8aMQcuWLdmOwjmHDh2Ch4cH+vTpw3aUWsXFxSEtLQ3Dhg1jLUNVVRXMzc3B4/EUbf/t9WHD/fv3VV63oKAgVFZW4o8//mApFdEGtz5tOCApKUnlVpcmJibw9PRUuTUmUXbt2jXY2NjA3t6e1RwymQzl5eW4e/cu1q5di/79+8PNzY3VTKdOnUJ8fDxmz57Nao7/Cg0Nha+vL8RiMTZs2MDqEMfNmzfh7e2NtWvXomfPnmjfvj3GjRuH+/fvs5bpeVFRUTA1NYVYLGYtw1tvvYVHjx5h586dkEgkSEtLwzfffAMvLy/WhjfKy8thbGys1GZiYgIA9DuzkaI5Bs+RSCSwsrJSabeyskJhYSELiRqH27dv49ChQ5g9ezYEAgGrWfr374/MzEwA1X+5/Pjjj6zmKS0txddff40PP/yQlTHg5zk6OuK9996Dv78/eDweYmJisHLlSmRmZmLx4sWsZMrOzsbdu3eRkJCAL774AsbGxoqx89OnT6v9N6lPVVVVOHXqFMRiMczMzFjLERAQgDVr1uCjjz7C0qVLAQCtW7fG1q1bFR/G+taiRQvcunVLqe3GjRsAQL8zGykqDOqIYRil7jvyr+zsbMydOxcdOnTA9OnT2Y6DjRs3oqSkBImJiVi3bh1mzpyJbdu2sVawREREwN7eHm+88QYrx39eUFAQgoKCFF/36dMHQqEQ27dvx8yZM+Hk5KT3TAzDoKSkBKtXr0abNm0AAH5+fhCLxYiMjGT9ffXnn38iNzeX9auB4uLisGDBArz55psICQlBUVER1q9fj+nTp2Pv3r2sFJ5jx47FJ598gu3bt+P1119HYmIiVq5cCYFAQL8zGykaSniOlZUVJBKJSrtUKmX9rxYukkqlmD59OkQiESIiIlS6FNnQtm1bdOnSBaNGjcKaNWtw+fJl/P7776xkSU9Px9atWzF37lwUFRVBIpGgpKQEAFBSUoLi4mJWcj1v8ODBkMlkrHXdW1tbw8HBQVEUAICTkxNatWqFxMREVjL9V1RUFGxsbFifA7F06VIEBgbis88+Q8+ePTFw4EBs2rQJycnJOHDgACuZRowYgcmTJ+Pbb79Fjx49MGnSJIwZMwbW1tZwdHRkJRPRDvUYPMfLy0tlXKyiogIpKSl48803WUrFTeXl5Zg1axZycnIQGRkJW1tbtiOp8PX1hUAgQEpKCivHT0tLQ2VlJWbMmKHy3IQJE+Dv74/9+/ezkIxbvLy88PTpU5V2hmFYn3hbVlaG6OhoDBs2jPXCNykpCSEhIUptdnZ2cHJyYu09zuPxEB4ejtmzZyM9PR2urq6oqqrCihUr4O/vz0omoh0qDJ4THByMiIgI5OfnKz7ofv/9d1RUVKBv374sp+OOqqoqzJs3D/Hx8di1axfrk/tqc/36dchkMri7u7NyfF9fX+zYsUOp7f79+1i+fDm++OILdOjQgZVczztx4gQEAgHatWvHyvH79euHw4cP4+HDh/D29gYAZGZm4tGjR6wPwcTExKC4uJjVqxFquLq64u7du0pt2dnZyMrKYv3foKWlJdq2bQsA+Omnn+Dm5oZevXqxmonUDxUGzxkzZgx27dqFsLAwhIWFITc3F19//TWGDRumcrWCPpWWlioul0xPT0dRURFOnToFAOjevbvaywcb0pIlS3D27FksWLAAZWVlislGQPVkKDbGOufMmYP27dvDx8cHIpEI8fHx2Lx5M3x8fDBgwAC95wGqh6Z69Oih9jk/Pz/4+fnpOREwdepUBAYGKj6Ao6OjsX//fkyYMIG1rt+BAwfCz88P7733HubNmwcTExOsXbsWdnZ2GDVqFCuZahw7dgyurq7o2rUrqzmA6vH8L7/8EkuWLIFYLIZEIsGGDRtgZmaG1157jZVMt27dwpUrV+Dr64uysjLExMTg6NGj2LRpE+sTkUn98BiG5SX0OCg5ORlLly7FtWvXIBKJEBoaivnz50MkErGWKS0trdbLpHbs2FHrh09DCQkJQXp6OmfyANWTDk+cOIGUlBQwDAM3NzcMHDgQU6dO5cTVADUuX76MCRMm4ODBg6z0GCxduhQXLlzAs2fPIJfL0aJFC4wcORLjx49ndbJYbm4uli1bhtjYWFRVVSEgIACffPIJWrVqxVqmwsJC9O7dGxMnTsSCBQtYy1GDYRjs378fe/bsQUpKCszMzNChQwd88MEH8PHxYSXT/fv38fnnnyMhIQEA4O/vj3nz5qFz586s5CHao8KAEEIIIQp0VQIhhBBCFKgwIIQQQogCFQaEEEIIUaDCgBBCCCEKVBgQQgghRIEKA0IIIYQoUGFACCGEEAUqDEijd+jQIfj4+Cge7dq1Q3BwMD755BPF7ZcbWkhICMLDwxVfX758GT4+Prh8+bJG+4mLi8Pq1avV3shLW+Hh4Srr7Kszfvx4jB8/vl7HCAkJwbvvvluv733RPv97bgkhDYuWRCZNxvLly9GqVSuUlZXh6tWr2LBhA65cuYJjx47BzMxMr1n8/PwQGRmJ1q1ba/R9169fx5o1azBixAi6mychhBVUGJAmo02bNoolhgMDAyGTybBu3TqcOXOm1nXkS0tLYWpqqvMsFhYW6NSpk873SwghDY2GEkiTVfPBXHM73/DwcHTu3BkPHjzAlClT0LlzZ0yaNAlA9a21161bh1dffRXt27dHYGAgPvnkE+Tl5Snts7KyEt9++y169+4Nf39/vP3227h165bKsWsbSrh58yZmzpyJHj16oEOHDhgwYAC++uorAMDq1avx7bffAgDEYrFiaOS/+zhx4gRGjx6NTp06oXPnzpg6dSru3buncvxDhw5h0KBBaN++PQYPHowjR47U6xzWWLNmDUaOHInu3bujS5cuGDFiBA4cOIDaVlT//fffMWzYMHTo0AFisVjlDpMAUFRUhG+++QYhISFo3749goKC8NVXX6GkpESrrIQQ7VCPAWmynjx5AgBKd56srKzErFmzMGbMGEyfPh0ymQxyuRxhYWG4du0apk6dii5duiA9PR2rV6/GrVu38MsvvyhuoPV///d/OHLkCKZMmYLevXsjISEBc+bMQXFx8UvzXLhwAbNmzUKrVq0QHh4OFxcXpKen488//wQAjBw5EoWFhdi5cyfWrFmjuNNhzXDE+vXrsXLlSrzxxhuYNWsWKisrsWXLFowdOxYHDhxQbHfo0CF88sknEIvFCA8Ph1QqxZo1a1BRUQE+v35/C6Snp2P06NFwdXUFANy4cQNLly5FZmYm5syZo7Tt/fv3sWzZMsyZMwcODg44duwYvvrqK1RWVmLq1KkAqntqxo0bh2fPnmHmzJnw8fFBQkICVq1ahYcPH+Lnn39m9YZOhBg0hpBG7pdffmG8vb2ZGzduMJWVlUxRURFz9uxZJjAwkOncuTOTnZ3NMAzDLFy4kPH29mYOHjyo9P1RUVGMt7c389tvvym137p1i/H29mZ2797NMAzDJCYmMt7e3syyZcuUtvv1118Zb29vZuHChYq2S5cuMd7e3sylS5cUbQMGDGAGDBjAlJWV1fqzbN68mfH29mZSU1OV2p8+fcq0a9eO+fLLL5Xai4qKmN69ezPz5s1jGIZhZDIZ06dPH2bEiBGMXC5XbJeWlsb4+fkx/fv3r/XYNcaNG8eMGzeu1udlMhlTWVnJrFmzhunevbvScfr378/4+Pgw9+/fV/qeyZMnM126dGFKSkoYhmGYDRs2MG3btmVu3bqltN2pU6cYb29v5ty5c0r7/O+5JYQ0LBpKIE3GqFGj4Ofnhy5duuDdd9+Fg4MDNm3aBAcHB6XtBg0apPT12bNnYWVlhf79+6Oqqkrx8PX1haOjI65cuQIAii79YcOGKX3/4MGDYWT04s635ORkpKSk4K233oJQKNT4Z/vjjz9QVVWF119/XSmjUChEQECAImNycjKysrIQGhqq9Be3m5ubVrfB/euvvzBp0iR07doVvr6+8PPzw6pVq1BQUIDc3Fylbdu0aYO2bdsqtYWGhqKoqAh3794FUH3O27RpA19fX6Wfp0+fPuDxeIqfhxCifzSUQJqMb775Bl5eXjAyMoK9vT2cnJxUtjE1NYWFhYVSW25uLiQSCdq3b692v/n5+QCAgoICAFB08dcwMjKCjY3NC7PVzFVo1qxZXX4UFTk5OQCAt956S+3zNUMENVmfL4Zq2tLT0zU+9q1btzB16lR0794dX375JZydnWFsbIwzZ85g/fr1KCsrUzmOumMD/57D3NxcPHnyBH5+fmqPWfNzEEL0jwoD0mR4eXkprkqojbpxa1tbW9jY2GDz5s1qv8fc3BwAFB/+2dnZSh/wVVVVig+82tTMc6jvugq2trYAgFWrVinG+V+0XU0h8V/q2uri+PHjMDIywoYNG5R6O86cOaN2+xcdu+Yc2traQigUYtmyZWr3UfNzEEL0jwoDYvD69euH48ePQy6Xw9/fv9btevToAQA4duyYUu/CyZMnUVVV9cJjtGzZEp6envjll18wefJkmJiYqN2upr28vFypvU+fPjAyMkJKSorKUMjzx3F0dERUVBQmT56sKITS09Nx/fp1tb0oL8Pj8SAQCJQmLpaVleHXX39Vu31CQgLi4+OVhhOioqJgbm6u6CHo168fNmzYABsbG3h4eGiciRDScKgwIAZv6NChOHbsGGbMmIHx48ejY8eOMDY2xrNnz3D58mWIxWIMHDgQXl5eeO2117B9+3YYGRmhV69eSEhIwJYtW1SGJ9RZvHgxZs2ahVGjRmHSpElwcXFBRkYGLly4gB9++AEA4O3tDQDYvn07RowYASMjI7Rs2RLu7u6YO3cuVq5cidTUVAQHB8PKygo5OTm4ffs2TE1NMXfuXPD5fMybNw+LFi3C7NmzMWrUKEgkEqxZs0ZtF39d9O3bF9u2bcNHH32E0aNHo6CgAFu2bKm1uHFycsKsWbMwZ84cODo64tdff8Wff/6J+fPnK9aMmDhxIk6fPo1x48Zh0qRJ8PHxgVwuR0ZGBv744w9MmTLlhUUaIaThUGFADJ5AIEBERAR27NiBo0ePYuPGjRAIBHB2dkZAQIDiwxoAvvrqKzg4OODw4cPYuXMnfH19sXr1anz44YcvPU5QUBB27dqFtWvXYunSpSgvL4ezs7PSMsU9evTAu+++i8OHD+PAgQOQy+XYsWOHot3Lyws7duzA8ePHUVFRAUdHR7Rv3x5vv/22Yh8jR44EAGzevBlz5syBm5sb3n33Xfz999/1mtTXs2dPLFu2DJs2bcLMmTPRrFkzjBo1CnZ2dvjss89Utvf19cUbb7yB1atX4/Hjx3BycsInn3yiWDMCAMzMzLB7925s3LgRkZGRSEtLg0gkgouLC3r16gU3NzeNcxJCdIPHMLWsUEIIIYQQg0OXKxJCCCFEgQoDQgghhChQYUAIIYQQBSoMCCGEEKJAhQEhhBBCFKgwIIQQQogCFQaEEEIIUaDCgBBCCCEKVBgQQgghRIEKA0IIIYQoUGFACCGEEAUqDAghhBCi8P/fjekZK6blaQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ConfusionMatrixDisplay.from_estimator(knn, digits_X, digits_y)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.9.13 ('pinn')", "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.10.9" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "b495ef8c557e1213b070efa440d5756e52b9d742e01b39c369ce0fdb1e54097c" } } }, "nbformat": 4, "nbformat_minor": 2 }