{ "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": { "id": "DSOtyxR9W07s" }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "from statsmodels.stats.outliers_influence import variance_inflation_factor\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 622 }, "id": "fQEohnQ6AGpq", "outputId": "3f1c34a0-7b76-4541-f948-f759feac15a5" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4sAAAJbCAYAAABNWgH4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACU50lEQVR4nOzdd3RUxcPG8WfTNiEhCUlIoSYSOkhHmihFOoiIgCi9iogUESM/pKkRFERBUIpgwYI0G4IoIiKgEqoQirRQUoCEhBISkuz7R14Wl5tQXBJg+X7Ouee4s3P3zr2s2Z19ZuaaLBaLRQAAAAAA/IvT7W4AAAAAAODOQ2cRAAAAAGBAZxEAAAAAYEBnEQAAAABgQGcRAAAAAGBAZxEAAAAAYEBnEQAAAABgQGcRAAAAAGBAZxEAAAAAYEBnEQBwS+3YsUO9evVSWFiY3N3d5eXlperVq2vy5MlKTEy83c2zsXbtWplMJq1du/am9929e7fGjRunw4cPG57r2bOnQkND7W7ff2EymWQymdSzZ88cn58wYYK1Tk5tv54NGzZo3LhxOnPmzE3tFxoammubAAB3JjqLAIBbZs6cOapRo4b++usvjRw5UitXrtSyZcv0xBNP6P3331efPn1udxNvmd27d2v8+PE5drjGjBmjZcuW5X+j/l/BggX11Vdf6ezZszblFotFCxYskLe3939+7Q0bNmj8+PE33VlctmyZxowZ85+PCwDIf3QWAQC3xMaNG/XMM8+oadOmioqK0qBBg/Twww/rkUceUUREhPbs2aNevXrdkmNduHAhx/LMzEylpaXdkmPYo1SpUqpWrdptO/6jjz4qi8WiL774wqZ8zZo1OnTokDp37pxvbUlNTZUkVatWTaVKlcq34wIA7EdnEQBwS7z++usymUyaPXu2zGaz4Xk3Nze1a9fO+jgrK0uTJ09WuXLlZDabFRgYqO7du+vYsWM2+z388MOqVKmS1q1bp3r16qlAgQLq3bu3Dh8+LJPJpMmTJ+vVV19VWFiYzGazfvnlF0nS5s2b1a5dO/n5+cnd3V3VqlXTokWLrnsemzdvVpcuXRQaGioPDw+FhobqySef1JEjR6x1FixYoCeeeEKS1KhRI+uwzgULFkjKeRjqxYsXFRERobCwMLm5ualo0aJ69tlnDQldaGio2rRpo5UrV6p69ery8PBQuXLl9OGHH1637Zf5+PjoscceM+zz4Ycfqn79+ipTpoxhn9WrV+vRRx9VsWLF5O7urvDwcA0YMECnTp2y1hk3bpxGjhwpSQoLC7Oe9+VhvJfbvnTpUlWrVk3u7u4aP3689bl/D0MdOHCg3N3dFRUVZS3LyspSkyZNFBQUpNjY2Bs+XwBA3nC53Q0AANz9MjMztWbNGtWoUUPFixe/oX2eeeYZzZ49W4MHD1abNm10+PBhjRkzRmvXrtWWLVsUEBBgrRsbG6unn35aL774ol5//XU5OV35rfPdd99VmTJl9NZbb8nb21ulS5fWL7/8ohYtWuiBBx7Q+++/Lx8fH33xxRfq3LmzLly4cM25c4cPH1bZsmXVpUsX+fn5KTY2VrNmzVKtWrW0e/duBQQEqHXr1nr99df18ssv67333lP16tUlKdfkzGKxqH379vr5558VERGhBx98UDt27NDYsWO1ceNGbdy40aaDvX37do0YMUIvvfSSgoKCNHfuXPXp00fh4eFq2LDhDV3fPn36qEmTJoqOjlb58uV15swZLV26VDNnztTp06cN9Q8cOKC6deuqb9++8vHx0eHDhzV16lQ1aNBAO3fulKurq/r27avExERNnz5dS5cuVUhIiCSpQoUK1tfZsmWLoqOj9b///U9hYWHy9PTMsX3Tpk3TH3/8oU6dOikqKkq+vr4aP3681q5dq5UrV1pfGwBwG1kAALBTXFycRZKlS5cuN1Q/OjraIskyaNAgm/I//vjDIsny8ssvW8seeughiyTLzz//bFP30KFDFkmWUqVKWdLT022eK1eunKVatWqWS5cu2ZS3adPGEhISYsnMzLRYLBbLL7/8YpFk+eWXX3Jta0ZGhuXcuXMWT09PyzvvvGMt/+qrr3Ldt0ePHpaSJUtaH69cudIiyTJ58mSbel9++aVFkmX27NnWspIlS1rc3d0tR44csZalpqZa/Pz8LAMGDMi1nZdJsjz77LOWrKwsS1hYmOWFF16wWCwWy3vvvWfx8vKynD171vLmm29aJFkOHTqU42tkZWVZLl26ZDly5IhFkuXrr7+2PnetfUuWLGlxdna27N27N8fnevToYVO2f/9+i7e3t6V9+/aWn376yeLk5GT53//+d91zBADkD4ahAgDy3eWholcnfLVr11b58uX1888/25QXKlRIjRs3zvG12rVrJ1dXV+vjf/75R3v27NFTTz0lScrIyLBurVq1UmxsrPbu3Ztr286dO6dRo0YpPDxcLi4ucnFxkZeXl86fP6/o6Oj/crpas2aNJOP5PvHEE/L09DScb9WqVVWiRAnrY3d3d5UpU8ZmKOz1XF4R9ZNPPlFGRobmzZunTp06ycvLK8f6CQkJGjhwoIoXLy4XFxe5urqqZMmSknRT533//ffnOMw1J+Hh4ZozZ46WL1+uNm3a6MEHH9S4ceNu+FgAgLzFMFQAgN0CAgJUoEABHTp06IbqXx4GmdNQwyJFihg6Rdcaknj1c/Hx8ZKkF154QS+88EKO+/x7Ht7Vunbtqp9//lljxoxRrVq15O3tLZPJpFatWlkXa7lZp0+flouLiwoXLmxTbjKZFBwcbBgW6u/vb3gNs9l808fv1auXxo8fr9dff11btmzR9OnTc6yXlZWlZs2a6cSJExozZowqV64sT09PZWVlqU6dOjd13JsdPtq6dWsFBQUpPj5ew4cPl7Oz803tDwDIO3QWAQB2c3Z2VpMmTfTDDz/o2LFjKlas2DXrX+4MxcbGGuqeOHHCZr6ilN2pys3Vz13eNyIiQh06dMhxn7Jly+ZYnpycrO+++05jx47VSy+9ZC1PS0uz6x6R/v7+ysjI0MmTJ206jBaLRXFxcapVq9Z/fu1rKV68uJo2barx48erbNmyqlevXo71/v77b23fvl0LFixQjx49rOX//PPPTR/zWv9WORk4cKDOnj2rihUrasiQIXrwwQdVqFChmz4uAODWYxgqAOCWiIiIkMViUb9+/ZSenm54/tKlS/r2228lyTqk9NNPP7Wp89dffyk6OlpNmjT5z+0oW7asSpcure3bt6tmzZo5bgULFsxxX5PJJIvFYljNde7cucrMzLQpu1znRlK3y+dz9fkuWbJE58+ft+t8r2fEiBFq27btNe9xeLmDd/V5f/DBB4a6N3Pe1zN37lx9+umnmjFjhr755hudOXPmlt1eBQBgP5JFAMAtUbduXc2aNUuDBg1SjRo19Mwzz6hixYq6dOmStm7dqtmzZ6tSpUpq27atypYtq/79+2v69OlycnJSy5YtrauhFi9eXMOGDbOrLR988IFatmyp5s2bq2fPnipatKgSExMVHR2tLVu26KuvvspxP29vbzVs2FBvvvmmAgICFBoaql9//VXz5s2Tr6+vTd1KlSpJkmbPnq2CBQvK3d1dYWFhOQ4hfeSRR9S8eXONGjVKKSkpql+/vnU11GrVqqlbt252ne+1NGvWTM2aNbtmnXLlyqlUqVJ66aWXZLFY5Ofnp2+//VarV6821K1cubIk6Z133lGPHj3k6uqqsmXL5toBz83OnTs1ZMgQ9ejRw9pBnDdvnjp27Khp06Zp6NChN/V6AIBbj2QRAHDL9OvXT5s3b1aNGjU0adIkNWvWTO3bt9fnn3+url27avbs2da6s2bN0htvvKEVK1aoTZs2Gj16tJo1a6YNGzbk2OG6GY0aNdKff/4pX19fDR06VE2bNtUzzzyjn376SU2bNr3mvp999pkaNWqkF198UR06dNDmzZu1evVq+fj42NQLCwvTtGnTtH37dj388MOqVauWNTm9mslk0vLlyzV8+HDNnz9frVq10ltvvaVu3bppzZo1Od6XMj+5urrq22+/VZkyZTRgwAA9+eSTSkhI0E8//WSo+/DDDysiIkLffvutGjRooFq1atncK/FGnD9/Xp06dVJYWJhmzpxpLX/88cf17LPP6sUXX9Sff/5p93kBAOxjslgsltvdCAAAAADAnYVkEQAAAABgQGcRAAAAAGBAZxEAAAAAYEBnEQAAAADy0bp169S2bVsVKVLEugja9fz666+qUaOG3N3ddd999+n999/P83bSWQQAAACAfHT+/HlVqVJFM2bMuKH6hw4dUqtWrfTggw9q69atevnllzVkyBAtWbIkT9vJaqgAAAAAcJuYTCYtW7ZM7du3z7XOqFGj9M033yg6OtpaNnDgQG3fvl0bN27Ms7aRLAIAAACAndLS0pSSkmKzpaWl3ZLX3rhxo5o1a2ZT1rx5c23evFmXLl26JcfIiUuevTJwC3zvWvZ2NwH3iArdeK8hf/RIevF2NwH3iJdW9b3dTcA9otWFPbe7CbnKz++Sf41+UuPHj7cpGzt2rMaNG2f3a8fFxSkoKMimLCgoSBkZGTp16pRCQkLsPkZO6CwCAAAAgJ0iIiI0fPhwmzKz2XzLXt9kMtk8vjyb8OryW4nOIgAAAACHZHLNu47U1cxm8y3tHP5bcHCw4uLibMoSEhLk4uIif3//PDmmxJxFAAAAALij1a1bV6tXr7Yp+/HHH1WzZk25urrm2XFJFgEAAAA4JCeX/EsWb8a5c+f0zz//WB8fOnRI27Ztk5+fn0qUKKGIiAgdP35cH3/8saTslU9nzJih4cOHq1+/ftq4caPmzZunzz//PE/bSWcRAAAAAPLR5s2b1ahRI+vjy3Mde/TooQULFig2NlYxMTHW58PCwrRixQoNGzZM7733nooUKaJ3331Xjz/+eJ62k84iAAAAAOSjhx9+WNe63f2CBQsMZQ899JC2bNmSh60yorMIAAAAwCGZXFmixR5cPQAAAACAAckiAAAAAId0py5wc7cgWQQAAAAAGJAsAgAAAHBIJleSRXuQLAIAAAAADEgWAQAAADgk5izah2QRAAAAAGBAsggAAADAITFn0T4kiwAAAAAAA5JFAAAAAA6JOYv2IVkEAAAAABiQLAIAAABwSCZnkkV7kCwCAAAAAAxIFgEAAAA4JCeSRbuQLAIAAAAADEgWAQAAADgkkxPJoj1IFgEAAAAABnQWAQAAAAAGDEMFAAAA4JBMzmRj9uDqAQAAAAAMSBYBAAAAOCRunWEfkkUAAAAAgAHJIgAAAACHxK0z7EOyCAAAAAAwIFkEAAAA4JCYs2gfkkUAAAAAgAHJIgAAAACHZCJZtAvJIgAAAADAgGQRAAAAgEMyOZGN2YOrBwAAAAAwIFkEAAAA4JC4z6J9SBYBAAAAAAYkiwAAAAAcEvdZtA/JIgAAAADAgGQRAAAAgENizqJ9SBYBAAAAAAYkiwAAAAAcEvdZtA9XDwAAAABgQGcRAAAAAGDAMFQAAAAADokFbuxDsggAAAAAMCBZBAAAAOCQnJxJFu1BsggAAAAAMCBZBAAAAOCQmLNoH5JFAAAAAIABySIAAAAAh2RyIhuzB1cPAAAAAGBAsggAAADAITFn0T4kiwAAAAAAA5JFAAAAAA6JZNE+JIsAAAAAAAOSRQAAAAAOiWTRPiSLAAAAAAADOou3wYIFC+Tr65vnxxkzZoz69++fp8dYvny5wsPD5ezsrKFDh+ZYJyEhQYULF9bx48fztC0AAADAv5mcnPJtc0R35Fn17NlT7du3N5SvXbtWJpNJZ86cyfc23YxffvlFjRo1kp+fnwoUKKDSpUurR48eysjIkCR17txZ+/bty9M2xMfH65133tHLL7+cp8cZMGCAOnbsqKNHj2rixIk5/tsFBgaqW7duGjt2bJ625V7m16Cmai6bpSZHflPrS3sV1K7J7W4SHEDBRi1VbNIclfxgsYq8MlXm0hWuWd+zzkMqMv4dlZz1lYpPXaCA3kPk5Fkwn1qLu02vziW0dF4trf6irt6ZWFmhxQtcdx+vAs4a1v8+LZtXW6u/rKdPpldXneqFrM9XqeCtyJcraOm8Wlq3rIEa1PbLy1PAXaBE/yf18O6f1Dxxu+r/vkSF6tW4Zv2SA7qq4Zbv1fz0NjXc9oOKdn3U5nmTi4vCIwbpob9/VPPE7WqwabkCHmmQl6cABzZz5kyFhYXJ3d1dNWrU0G+//XbN+gsXLlSVKlVUoEABhYSEqFevXjp9+nSetvGO7CzezXbt2qWWLVuqVq1aWrdunXbu3Knp06fL1dVVWVlZkiQPDw8FBgbmaTvmzZununXrKjQ0NM+Oce7cOSUkJKh58+YqUqSIChbM/Uthr169tHDhQiUlJeVZe+5lzp4FlLJjr3Y9P+F2NwUOwrNWA/k/2VdnvlukE+OG6uL+3QoeNlbOfgE51jeXLq/CfYfq3G+rdXzMYCXMmiRzaGkF9Bqczy3H3aDrY0XVqV0RTZtzUP1f3K7EpHRNHVdRHu7Oue7j4mLSlHGVFFzYXWPejNbTg6M0eeY/OpmYbq3j7u6sA4fPadqcg/lxGrjDhTzeUhUmR+ifye9rfd3HlPj7ZtVaPlvuxUJyrF+iXxeVGT9c+1+boXU12mj/q9NV8e1XFNiqkbVOmbHPq0Sfzto94lWtq95aMfO+UI0vZsi7Svn8Oi3cJCdnU75tN+PLL7/U0KFDNXr0aG3dulUPPvigWrZsqZiYmBzrr1+/Xt27d1efPn20a9cuffXVV/rrr7/Ut2/fW3GZcnXXdxaXLFmiihUrymw2KzQ0VFOmTLF53mQyafny5TZlvr6+WrBggSQpPT1dgwcPVkhIiNzd3RUaGqrIyEhr3eTkZPXv31+BgYHy9vZW48aNtX379lzbs3r1aoWEhGjy5MmqVKmSSpUqpRYtWmju3Llyc3OTZByGGhoaKpPJZNguO378uDp37qxChQrJ399fjz76qA4fPnzN6/LFF1+oXbt2NmWLFy9W5cqV5eHhIX9/fzVt2lTnz5+XJGVmZmr48OHy9fWVv7+/XnzxRfXo0SPHhFfKTnkvdw4bN24sk8mkhx9+WB999JG+/vpr6zmsXbtWklS5cmUFBwdr2bJl12w3/puTq9Zp39hpilu++nY3BQ7Cu/mjOvvbTzr322pdij2mxM/nKiPxlLwbtcqxvvm+sso4laCUn75Txql4pe2P1tlfV8ocGp7PLcfd4Ik2RfXJ4qNat+m0DsVc0Ovv7pPZ7KxHGhbOdZ9WTYLkXdBFL78Rrb/3nFX8yTTtjE7RgcPnrXX+2JKkuZ/FaN2mvP2lHXeHsCE9dfSjJTq2YLHO7z2o6BcjdfFYnEr2ezLH+kWffFRH532p2CU/KPXwMcUuXqGjHy3WfcOvfBkv2vVRHXjzA51ctU6ph48pZs4XOvnTeoUN6ZVfpwUHMXXqVPXp00d9+/ZV+fLlNW3aNBUvXlyzZs3Ksf6mTZsUGhqqIUOGKCwsTA0aNNCAAQO0efPmPG3nXd1ZjIqKUqdOndSlSxft3LlT48aN05gxY6wdwRvx7rvv6ptvvtGiRYu0d+9effrpp9Y0zmKxqHXr1oqLi9OKFSsUFRWl6tWrq0mTJkpMTMzx9YKDgxUbG6t169bdcBv++usvxcbGKjY2VseOHVOdOnX04IMPSpIuXLigRo0aycvLS+vWrdP69evl5eWlFi1aKD09PcfXS0pK0t9//62aNWtay2JjY/Xkk0+qd+/eio6O1tq1a9WhQwdZLBZJ0pQpU/Thhx9q3rx5Wr9+vRITE6/ZsatXr5727t0rKbvDHhsbq2+++UadOnVSixYtrOdTr1496z61a9e+brwO4A7g7CJzyXCl7tpqU5y6a6vM4eVy3CXtnz1yKRQgj8rZQ7ycvH1VoGZ9Xdietx9iuPuEBJnl7+emv7adsZZdyrBo+65kVSqX+wiVBrX8tGvvWQ3rX0rL59fWgneq6enHi8lBpwnBTiZXV3lXq6hTP/9uU37y59/lW6dajvs4md2UmZZmU5aVmibfmpVlcsm+gYCTm5syLxrrXG94K/Bv6enpioqKUrNmzWzKmzVrpg0bNuS4T7169XTs2DGtWLFCFotF8fHxWrx4sVq3bp2nbb1jb53x3XffycvLy6YsMzPT5vHUqVPVpEkTjRkzRpJUpkwZ7d69W2+++aZ69ux5Q8eJiYlR6dKl1aBBA5lMJpUsWdL63C+//KKdO3cqISFBZrNZkvTWW29p+fLlWrx4cY6LxzzxxBNatWqVHnroIQUHB6tOnTpq0qSJunfvLm9v7xzbULjwlV9Sn3/+ecXGxuqvv/6SlJ0QOjk5ae7cuda0cf78+fL19dXatWsNbzJJOnLkiCwWi4oUKWIti42NVUZGhjp06GA9x8qVK1ufnzZtmiIiIvT4449Lkt5//32tWrUq1+vm5uZmHUrr5+en4OBgSdlDbNPS0qyP/61o0aLaunWroRzAncW5oLdMzs7KTD5jU56ZkixnH98c90k7sEcJs6co8JmRMrm4yeTiovNb/9Dpz2bnfYNxV/H3zR5lk3jmkk154plLCi5sznW/kCB3Vavsrp/WJejFibtUrIiHhvUvJWdnkz5adDRP24y7j1tAITm5uCgt3jZlTk84LXNQzsPpT/60XsV7dlT8tz8rZesu+VSvpGLdO8jJzU1uAYWUFndSp35ar7Dneipx/WZdOBijgEZ1FdSmseSc+xBq3F75eeuMtLQ0pV31g4PZbLb2Iy47deqUMjMzFRQUZFMeFBSkuLi4HF+7Xr16WrhwoTp37qyLFy8qIyND7dq10/Tp02/tSVzljv09rlGjRtq2bZvNNnfuXJs60dHRql+/vk1Z/fr1tX//fkPHMjc9e/bUtm3bVLZsWQ0ZMkQ//vij9bmoqCidO3dO/v7+8vLysm6HDh3SgQMHcnw9Z2dnzZ8/X8eOHdPkyZNVpEgRvfbaa6pYsaJiY2Ov2ZbZs2dr3rx5+vrrr60dyKioKP3zzz8qWLCg9fh+fn66ePFirm1ITU2VJLm7u1vLqlSpoiZNmqhy5cp64oknNGfOHOv8weTkZMXGxqpu3brW+i4uLjbJ5K3g4eGhCxcu5Pp8WlqaUlJSbLZLlqxb2gYAN8Ni+9BkLLrMtUhx+T/VT2e++VLHJwxX3JSxcg0IUkD3QXneStzZHmlYWCs/q2vdnF0uf3GzfTOZTJIll/eXJDk5mXQmOV1vzvpH+w6e15r1p/TJ4qNq3zzn+WeAJOObypRD2f/7J3KmTv74m+qt/UItUv5WjUXv6din2aOsLP//vXL3yNd0/sARPbRthVok71SFqWN07JOl0g1+74Rji4yMlI+Pj8327+ltV/v3tDMpe1Tj1WWX7d69W0OGDNErr7yiqKgorVy5UocOHdLAgQNv6Tlc7Y5NFj09PRUebjvX5dixYzaPc7qgFsvVHz4mQ9mlS1d+zaxevboOHTqkH374QT/99JM6deqkpk2bavHixcrKylJISIh13t2/Xe/WF0WLFlW3bt3UrVs3vfrqqypTpozef/99jR8/Psf6a9eu1XPPPafPP/9cVapUsZZnZWWpRo0aWrhwoWGffyeS/xYQkP2LWVJSkrWOs7OzVq9erQ0bNujHH3/U9OnTNXr0aP3xxx/y88uf1eISExNzbbOU/T/Y1dfnSZOfnnLO+RdAAHkj82yKLJmZcvYpZFPuXNBHmSlnctzHt1VHpe3fo+SV2V+sLh07rFOfXlSRiElKWvqpMpNZ3Opetf7PRO3ed2VUiatr9u/Ufr5uOp105fO4kI+rkpJznl4hSaeT0pWRYVHWv35DPHIsVf5+bnJxMSkj4xo9Tdxz0k8lKSsjQ+Zg2+8QboX9lZaQ85zWrItp2jlwtP4ePFbmIH9djD2pEn066VLKOaWfSrK+7pbOg+VkdpOrv6/STiSo7MQRunD4WI6vidsvP29pERERoeHDh9uUXZ0qStnf1Z2dnQ0pYkJCgiFtvCwyMlL169fXyJEjJUn333+/PD099eCDD+rVV19VSEje/HB2xyaLN6JChQpav369TdmGDRtUpkwZOf//cIDChQvbJHr79+83pFve3t7q3Lmz5syZoy+//FJLlixRYmKiqlevrri4OLm4uCg8PNxmu9whuxGFChVSSEiIdTGZq/3zzz96/PHH9fLLL6tDhw42z1WvXl379+9XYGCgoQ0+Pj45vl6pUqXk7e2t3bt325SbTCbVr19f48eP19atW+Xm5qZly5bJx8dHISEh2rRpk7VuRkaGoqKibvgcL3Nzc8s11f37779VrVrO8wSk7P/BkpOTbbZOTix7DuS7zAylHflHHhWq2hR7VKyqtH/25LiLyc0sy9UjAS5/q8/lV1LcG1IvZup43EXrdvjoBZ1OTFfNKr7WOi4uJlWp6KO/95zN9XV2RqeoaIi7zdupeBEPnUpMo6MIA8ulS0rZuksBjevZlAc0rqczm649JcaSkaGLx+OlrCyFdGytkz+sNaSRWWnpSjuRIJOLi4LbN1P892tu9SngLmQ2m+Xt7W2z5dRZdHNzU40aNbR6te3ChKtXr7ZZ7+PfLly4IKerOr6X+ztXB2O30l3dWRwxYoR+/vlnTZw4Ufv27dNHH32kGTNm6IUXXrDWady4sWbMmKEtW7Zo8+bNGjhwoFxdXa3Pv/322/riiy+0Z88e7du3T1999ZWCg4Pl6+urpk2bqm7dumrfvr1WrVqlw4cPa8OGDfrf//6X68pDH3zwgZ555hn9+OOPOnDggHbt2qVRo0Zp165datu2raF+amqq2rZtq6pVq6p///6Ki4uzbpL01FNPKSAgQI8++qh+++03HTp0SL/++quef/55Q9J6mZOTk5o2bWrTkf7jjz/0+uuva/PmzYqJidHSpUt18uRJlS+fvdTz888/rzfeeEPLli3Tnj17NGjQIMP9LGfMmKEmTa59/77Q0FDt2LFDe/fu1alTp6wp7oULF3KcyPtvOf0P5mq6q9+i+cbZs4C8q5STd5XsxUcKhBWTd5Vyci/O8Cz8NymrvlbBho/Iq0FTuYYUk1+XPnLxK6yza3+QJBV6vLsC+g611r+w/U95Vq+rgg+3lEvhIJnDy8u/a39dPLhXmWdyXhAM966vvjuupzsW14MP+CusRAFFPFdaaWmZWr3upLXOy0PKqP/TV9YR+HplrHwKumhIn/tUrIi76tQopKcfL6ZlP1z5QdjD3UnhoZ4KD/WUlD3PMTzUU4EBuc+FhOM69O4CFe/ZUcW6d5Bn2ftUftJL8igeoiNzv5AklR0/XPfPecNa3zM8VEW6tFWBUiXlU7Oyqn40RQUrlNbesW9b6/jUul9Bjz4ij9BiKlSvhmp9PUcmJycdnDrXcHzcGUxOpnzbbsbw4cM1d+5cffjhh4qOjtawYcMUExNjHVYaERGh7t27W+u3bdtWS5cu1axZs3Tw4EH9/vvvGjJkiGrXrm2zTsmtdscOQ70R1atX16JFi/TKK69o4sSJCgkJ0YQJE2wWt5kyZYp69eqlhg0bqkiRInrnnXdsEjMvLy9NmjRJ+/fvl7Ozs2rVqqUVK1ZYe+4rVqzQ6NGj1bt3b508eVLBwcFq2LBhrhFx7dq1tX79eg0cOFAnTpyQl5eXKlasqOXLl+uhhx4y1I+Pj9eePXu0Z88ewz+0xWJRgQIFtG7dOo0aNUodOnTQ2bNnVbRoUTVp0iTXBXMkqX///urTp48mT54sJycneXt7a926dZo2bZpSUlJUsmRJTZkyRS1btpSU3fGOjY1Vz5495eTkpN69e+uxxx5TcnKy9TVPnTqV6zzJy/r166e1a9eqZs2aOnfunH755Rc9/PDD+vrrr1WiRAnrKq+4tXxqVFLdnz+xPq7w1suSpKMfL9WOPhG3q1m4i53/a72cvArKt11nufj4Kf34EcVPm6CM09lf5p19CsnF78qw8nO/r5GTu4e8m7SWX+feyko9p4vRO5X41YLbdAa4k3227LjMbs4a3r+UvLxcFL3/rEaM36XUi1dGpgQVNtv8Wp5wOl0jxu/S4F5hmv92dZ1KTNPi707os2VXfjgtW6qg3n31yuJtz/W+T5L0w5p4RU7fnw9nhjtJ7JIf5Orvq/CIZ2UOLqxzu/frr8cG6OLRE5Ikc3BheRT/13cvZyeFPd9LXqXDlHUpQ6fX/aGNjZ9UaszxK1XMZpV55XkVCCuuzHMXlLDqV23vO0oZybmn4kBOOnfurNOnT2vChAmKjY1VpUqVtGLFCutClLGxsTb3XOzZs6fOnj2rGTNmaMSIEfL19VXjxo01adKkPG2nyZKXuSVuG4vFojp16mjo0KF68smc7yd0PT179tSZM2cM96n8L2rXrq2hQ4eqa9euN7Xf965l7T42cCMqdOO9hvzRI+nF290E3CNeWpW3N+sGLmt1IecpCneCI/3b59uxSs5enm/Hyi+M8XNQJpNJs2fPVkZGxu1uihISEtSxY8f/3GkFAAAAkP/u6mGouLYqVarYrKx6uwQGBurFF/klHQAAAPkrP1dDdUR0FpGrBQsW3O4mAAAAALhN6CwCAAAAcEg3u0opbJHLAgAAAAAMSBYBAAAAOCTmLNqHqwcAAAAAMCBZBAAAAOCYTMxZtAfJIgAAAADAgGQRAAAAgENiNVT7kCwCAAAAAAxIFgEAAAA4JFZDtQ9XDwAAAABgQGcRAAAAAGDAMFQAAAAADokFbuxDsggAAAAAMCBZBAAAAOCQWODGPlw9AAAAAIABySIAAAAAh8ScRfuQLAIAAAAADEgWAQAAADgkkkX7kCwCAAAAAAxIFgEAAAA4JlZDtQtXDwAAAABgQLIIAAAAwCGZTMxZtAfJIgAAAADAgGQRAAAAgEMyMWfRLlw9AAAAAIABySIAAAAAh8R9Fu1DsggAAAAAMCBZBAAAAOCYmLNoF64eAAAAAMCAziIAAAAAwIBhqAAAAAAcEgvc2IdkEQAAAABgQLIIAAAAwCGZTGRj9uDqAQAAAAAMSBYBAAAAOCbmLNqFZBEAAAAAYECyCAAAAMAhmZzIxuzB1QMAAAAAGJAsAgAAAHBI3GfRPiSLAAAAAAADkkUAAAAAjon7LNqFqwcAAAAAMCBZBAAAAOCQmLNoH5JFAAAAAIABySIAAAAAx8R9Fu3C1QMAAAAAGJAsAgAAAHBIJhNzFu1BsggAAAAAMKCzCAAAAAAwYBgqAAAAAMfEAjd24eoBAAAAAAxIFgEAAAA4JJMTC9zYg2QRAAAAAGBAZxEAAACAYzI55d92k2bOnKmwsDC5u7urRo0a+u23365ZPy0tTaNHj1bJkiVlNptVqlQpffjhh//1ytwQhqECAAAAQD768ssvNXToUM2cOVP169fXBx98oJYtW2r37t0qUaJEjvt06tRJ8fHxmjdvnsLDw5WQkKCMjIw8bSedRQAAAACO6Q6dszh16lT16dNHffv2lSRNmzZNq1at0qxZsxQZGWmov3LlSv366686ePCg/Pz8JEmhoaF53k6GoQIAAACAndLS0pSSkmKzpaWlGeqlp6crKipKzZo1sylv1qyZNmzYkONrf/PNN6pZs6YmT56sokWLqkyZMnrhhReUmpqaJ+dyGZ1FAAAAAA7JZHLKty0yMlI+Pj42W04p4alTp5SZmamgoCCb8qCgIMXFxeV4HgcPHtT69ev1999/a9myZZo2bZoWL16sZ599Nk+u22UMQwUAAAAAO0VERGj48OE2ZWazOdf6JpPtEFmLxWIouywrK0smk0kLFy6Uj4+PpOyhrB07dtR7770nDw8PO1ufMzqLuKNV6Fb2djcB94jdn+y93U3APcKvX+DtbgLuEaXalrzdTQBuv3ycs2g2m6/ZObwsICBAzs7OhhQxISHBkDZeFhISoqJFi1o7ipJUvnx5WSwWHTt2TKVLl7av8blgGCoAAAAA5BM3NzfVqFFDq1evtilfvXq16tWrl+M+9evX14kTJ3Tu3Dlr2b59++Tk5KRixYrlWVvpLAIAAABwSCYnp3zbbsbw4cM1d+5cffjhh4qOjtawYcMUExOjgQMHSsoe0tq9e3dr/a5du8rf31+9evXS7t27tW7dOo0cOVK9e/fOsyGoEsNQAQAAACBfde7cWadPn9aECRMUGxurSpUqacWKFSpZMnv4eGxsrGJiYqz1vby8tHr1aj333HOqWbOm/P391alTJ7366qt52k46iwAAAAAcUy4LxtwJBg0apEGDBuX43IIFCwxl5cqVMwxdzWsMQwUAAAAAGJAsAgAAAHBMNzmXELa4egAAAAAAA5JFAAAAAI7pDp6zeDcgWQQAAAAAGNBZBAAAAAAYMAwVAAAAgEMyscCNXbh6AAAAAAADkkUAAAAAjslENmYPrh4AAAAAwIBkEQAAAIBjcuLWGfYgWQQAAAAAGJAsAgAAAHBIJuYs2oWrBwAAAAAwIFkEAAAA4JiYs2gXkkUAAAAAgAHJIgAAAADHxJxFu3D1AAAAAAAGJIsAAAAAHJOJOYv2IFkEAAAAABiQLAIAAABwTE5kY/bg6gEAAAAADEgWAQAAADgmVkO1C1cPAAAAAGBAZxEAAAAAYMAwVAAAAACOyYlbZ9iDZBEAAAAAYECyCAAAAMAxscCNXbh6AAAAAAADkkUAAAAAjsnEnEV7kCwCAAAAAAxIFgEAAAA4JieyMXtw9QAAAAAABiSLAAAAABwTcxbtQrIIAAAAADAgWQQAAADgmLjPol24egAAAAAAA5JFAAAAAI6J1VDtwtUDAAAAABiQLAIAAABwTKyGaheSRQAAAACAAckiAAAAAMfEaqh24eoBAAAAAAxIFgEAAAA4JuYs2oVkEQAAAABgQGcRAAAAAGDAMFQAAAAAjsmJbMweXD0AAAAAgAHJIgAAAACHZGGBG7uQLAIAAAAADEgWAQAAADgmE9mYPbh6AAAAAAADkkUAAAAAjolk0S5cPQAAAACAAckiAAAAAIfEaqj2uauSxcOHD8tkMmnbtm23uylWe/bsUZ06deTu7q6qVavm+/F79uyp9u3b5/txAQAAAPx3M2fOVFhYmNzd3VWjRg399ttvN7Tf77//LhcXl3zpe9xUstizZ0999NFHioyM1EsvvWQtX758uR577DFZLJZb3sA73dixY+Xp6am9e/fKy8srxzqXr9tlfn5+qlWrliZPnqz7778/v5oKB1GwUUv5tOggZ99CunQ8Rqc/n6u0/btzre9Z5yH5tOwg18Aiyko9r9S/tyjxy/nKOn82H1sNR+HXoKbuG9FHPtUryb1IoDY/Pkjx3/x8u5uFu1CX1v5qVt9HngWctP/wRX3wZYKOxqbnWr9xHW8N6R5sKH9iyH5dysj+/lEh3EOPPVJIpYq7y8/XRZEfHNcf28/n2TngzufbrI0KtX1CLr5+Sj92RAkfva/UPX/nWr9gg0bya9dJbsFFlHXhvM5vj1LCJ7OVdS77M9Ordn35t+8i1+AiMjm7KD3uuJK+W6KU3/g7eMe6Q+csfvnllxo6dKhmzpyp+vXr64MPPlDLli21e/dulShRItf9kpOT1b17dzVp0kTx8fF53s6bvnru7u6aNGmSkpKS8qI9t0V6eu4fTtdz4MABNWjQQCVLlpS/v3+u9Vq0aKHY2FjFxsbq559/louLi9q0afOfj3uj7Dk33Hk8azWQ/5N9dea7RToxbqgu7t+t4GFj5ewXkGN9c+nyKtx3qM79tlrHxwxWwqxJMoeWVkCvwfnccjgKZ88CStmxV7uen3C7m4K72GOPFFK7xr6avShBIyfFKCklQ+OfKyZ387WHi51PzVTPlw7YbJc7ipLk7mbSoWNpmr0oIa9PAXeBgnUfUmCPgUpc9rmOvDRIF/b8rWIRr8rFv3CO9T3KVlTIsyOVvGalDo/orxNvvyb3UmUUPGCYtU7mubM6vexzxYwZqsMvDlTy2h8V/MwIFahSI79OCw5i6tSp6tOnj/r27avy5ctr2rRpKl68uGbNmnXN/QYMGKCuXbuqbt26+dLOm+4sNm3aVMHBwYqMjMy1zrhx4wyx6LRp0xQaGmp9fHn45Ouvv66goCD5+vpq/PjxysjI0MiRI+Xn56dixYrpww8/NLz+nj17VK9ePbm7u6tixYpau3atzfO7d+9Wq1at5OXlpaCgIHXr1k2nTp2yPv/www9r8ODBGj58uAICAvTII4/keB5ZWVmaMGGCihUrJrPZrKpVq2rlypXW500mk6KiojRhwgSZTCaNGzcu12tiNpsVHBys4OBgVa1aVaNGjdLRo0d18uRJa53jx4+rc+fOKlSokPz9/fXoo4/q8OHD1uczMzM1fPhw+fr6yt/fXy+++KIhzc3t3H799VfVrl1bZrNZISEheumll5SRkWHdLy0tTUOGDFFgYKDc3d3VoEED/fXXX9bn165dK5PJpFWrVqlatWry8PBQ48aNlZCQoB9++EHly5eXt7e3nnzySV24cMG63+LFi1W5cmV5eHjI399fTZs21fnz/Mr7X3k3f1Rnf/tJ535brUuxx5T4+VxlJJ6Sd6NWOdY331dWGacSlPLTd8o4Fa+0/dE6++tKmUPD87nlcBQnV63TvrHTFLd89e1uCu5ibRsX0lcrE7Vp2znFxKbrnY/jZXYzqWEt72vvaJHOpGTabP+2ZfcFffbtaW3adi4PW4+7RaHWHZS8ZpWS16xU+vGjOvnR+7p0+qR8m+X8Y7176fK6lBCvMyu/1qWT8Urdu0tnfvpe7veVsdZJ3b1D5/7aoPTjR3UpPlZnfliutJiD8ihbMb9OCzfLZMq/7Qalp6crKipKzZo1sylv1qyZNmzYkOt+8+fP14EDBzR27Nj/fDlu1k13Fp2dnfX6669r+vTpOnbsmF0HX7NmjU6cOKF169Zp6tSpGjdunNq0aaNChQrpjz/+0MCBAzVw4EAdPXrUZr+RI0dqxIgR2rp1q+rVq6d27drp9OnTkqTY2Fg99NBDqlq1qjZv3qyVK1cqPj5enTp1snmNjz76SC4uLvr999/1wQcf5Ni+d955R1OmTNFbb72lHTt2qHnz5mrXrp32799vPVbFihU1YsQIxcbG6oUXXrih8z537pwWLlyo8PBwaxp54cIFNWrUSF5eXlq3bp3Wr18vLy8vtWjRwpoOTpkyRR9++KHmzZun9evXKzExUcuWLTO8/tXndvz4cbVq1Uq1atXS9u3bNWvWLM2bN0+vvvqqdZ8XX3xRS5Ys0UcffaQtW7YoPDxczZs3V2Jios1rjxs3TjNmzNCGDRt09OhRderUSdOmTdNnn32m77//XqtXr9b06dOt1+fJJ59U7969FR0drbVr16pDhw735HDlW8LZReaS4UrdtdWmOHXXVpnDy+W4S9o/e+RSKEAelbN/8XTy9lWBmvV1YfvmPG8uAOQkyN9Vfj4u2hZ95YfFjAyL/t6fqnL3uV9zX3ezk2ZPDNPc18I0+pkiCitmzuvm4m7l7CL3+0rr/I4om+IL26PkUaZCjruk7tstF/8AeVatlf0SPr4q+MCDOr/1z1wPU6BSVbmFFFdqdO5DW3HvSEtLU0pKis2WlpZmqHfq1CllZmYqKCjIpjwoKEhxcXE5vvb+/fv10ksvaeHChXJxyb81Sv/TkR577DFVrVpVY8eO1bx58/7zwf38/PTuu+/KyclJZcuW1eTJk3XhwgW9/PLLkqSIiAi98cYb+v3339WlSxfrfoMHD9bjjz8uSZo1a5ZWrlypefPm6cUXX9SsWbNUvXp1vf7669b6H374oYoXL659+/apTJnsX4fCw8M1efLka7bvrbfe0qhRo6zHnjRpkn755RdNmzZN7733noKDg+Xi4iIvLy8FBxvnUfzbd999Z53TeP78eYWEhOi7776Tk1N2f/2LL76Qk5OT5s6dK9P//zIxf/58+fr6au3atWrWrJmmTZumiIgI67m///77WrVqleFYV5/b6NGjVbx4cc2YMUMmk0nlypXTiRMnNGrUKL3yyitKTU3VrFmztGDBArVs2VKSNGfOHK1evVrz5s3TyJEjra/16quvqn79+pKkPn36KCIiQgcOHNB9990nSerYsaN++eUXjRo1SrGxscrIyFCHDh1UsmRJSVLlypWveZ2QO+eC3jI5Oysz+YxNeWZKspx9fHPcJ+3AHiXMnqLAZ0bK5OImk4uLzm/9Q6c/m533DQaAHPj6OEuSzpzNsClPPpuhwn6uue53LC5d734SpyPH01TA3VltGvnqjReKa+hrRxR78lKethl3H2fv7M/MjKs+MzOSz8jTt1CO+1zct1ux0yepyNCXZXLN/sw8+9dGxc9/z6aek0cBlXr/M5lcXGXJylL8vOm6sHNLXp0K7OWUf3MWIyMjNX78eJuysWPH5jr60HRVGmmxWAxlUvbowq5du2r8+PHWvkx++c/d0kmTJqlx48YaMWLEfz54xYoVrZ0lKbs3XalSJetjZ2dn+fv7KyHBdu7Bv8fouri4qGbNmoqOjpYkRUVF6ZdffslxsZkDBw5YL3DNmjWv2baUlBSdOHHC2jG6rH79+tq+ffsNnuEVjRo1so5BTkxM1MyZM9WyZUv9+eefKlmypKKiovTPP/+oYMGCNvtdvHhRBw4cUHJysmJjY3M896uTuqvPLTo6WnXr1rV589WvX1/nzp3TsWPHdObMGV26dMnmXF1dXVW7dm3rdb3s3wvyBAUFqUCBAtaO4uWyP//M/gWuSpUqatKkiSpXrqzmzZurWbNm6tixowoVyvmPdFpamuHXl7TMTJmdnXOsf++6Kpk1GYsucy1SXP5P9dOZb77Uhb+3ysWnkPw69VJA90E6NX96nrcUABrWKqhnnrzy6/mrs45n/4fh75ZJ1xp4su/wRe07fNH6OPpgqqa+VEKtH/bV3K9O5r4j7m1Xv6lMub/P3IqWUFDPQTq1ZKEubI+ScyE/BT7VV0F9hyj+g7et9bIupurwi4Pk5O6uApWrKbD7AF1KiFPq7h15eCK4G0RERGj48OE2ZWazcQREQECAnJ2dDSliQkKCIW2UpLNnz2rz5s3aunWrBg/OXnciKytLFotFLi4u+vHHH9W4ceNbeCZX/OfOYsOGDdW8eXO9/PLL6tmzp81zTk5Ohg7MpUvGX/1cXW1/QTSZTDmWZWVlXbc9lztCWVlZatu2rSZNmmSoExISYv1vT0/P677mv1/3stx6/Nfj6emp8PAr88Rq1KghHx8fzZkzR6+++qqysrJUo0YNLVy40LBv4cI5T8S+1rGu1+bL/z4mk8nmv6+337//fa737+Xs7KzVq1drw4YN+vHHHzV9+nSNHj1af/zxh8LCwgztzunXmCFVy2hotbLXPed7QebZFFkyM+XsY9vZdi7oo8yUMznu49uqo9L271HyyuzhypeOHdapTy+qSMQkJS39VJnJjrNQFYA70587ztl08lxdsj9XfL1dlPSvOYc+BZ0NaeO1WCzS/iNpCgl0u3WNhcPITMn+zHS5KkV08fbJ9bPPr31npe7bpaRvF2cXxBxS/MWLKjFhqk59+ZEyz/z/1ByLRZfiT0iS0o4clFvR4vJv31nH6CzekfLzPotmsznHzuHV3NzcVKNGDa1evVqPPfaYtXz16tV69NFHDfW9vb21c+dOm7KZM2dqzZo1Wrx4cY7fq28Vu3LZN954Q99++61hImbhwoUVFxdn02G8lfdG3LRpk/W/MzIyFBUVpXLlsudsVa9eXbt27VJoaKjCw8NtthvtIErZ/yhFihTR+vXrbco3bNig8uXL230OJpNJTk5OSk1NtbZ7//79CgwMNLTbx8dHPj4+CgkJyfHcr6dChQrasGGDzb/Hhg0bVLBgQRUtWlTh4eFyc3OzOddLly5p8+bNdp+ryWRS/fr1NX78eG3dulVubm45zrOUsn+NSU5OttmeuZ+FWKwyM5R25B95VKhqU+xRsarS/tmT4y4mN7Mslqt+bLn84ws3qQWQDy6mWRR38pJ1OxqbrsTkDFUtX8Bax8VZqlTaQ3sOXrzGKxmFFTcrKfnGO5i4h2Rm6OLB/Spwf3Wb4gL3V1fqvpxvN+VkdpclyzbssFg/M691MJNMLrkPoQZyMnz4cM2dO1cffvihoqOjNWzYMMXExGjgwIGSsr8Xd+/eXVJ2EFepUiWb7fKilJUqVbqpPs7NsquzWLlyZT311FPWBU0ue/jhh3Xy5ElNnjxZBw4c0HvvvacffvjBrob+23vvvadly5Zpz549evbZZ5WUlKTevXtLkp599lklJibqySef1J9//qmDBw/qxx9/VO/evZWZmXmdV7Y1cuRITZo0SV9++aX27t2rl156Sdu2bdPzzz9/021OS0tTXFyc4uLiFB0dreeee07nzp1T27ZtJUlPPfWUAgIC9Oijj+q3337ToUOH9Ouvv+r555+3LiT0/PPP64033rCe+6BBg3TmzJnrHnvQoEE6evSonnvuOe3Zs0dff/21xo4dq+HDh8vJyUmenp565plnNHLkSK1cuVK7d+9Wv379dOHCBfXp0+emz/WyP/74Q6+//ro2b96smJgYLV26VCdPnsy1A2o2m+Xt7W2zMQTVVsqqr1Ww4SPyatBUriHF5Nelj1z8Cuvs2uz/vwo93l0BfYda61/Y/qc8q9dVwYdbyqVwkMzh5eXftb8uHtx75RdS4CY4exaQd5Vy8q6S/QNdgbBi8q5STu7FQ66zJ3DFt2uS1LG5nx6o4qUSIW4a0j1YaekWrfsrxVrn+R7BevrRK7cF6tzKT1XLF1CQv6vCipk1+OkghRUza9VvydY67maTwoqZrQvfBP5/3YBC+bcYBO4cSd8vlW/jFvJ+uJncihZX4e4D5BoQqDOrv5ckBTzZS8HPXlmX4VzUJhWsXV++j7SRa2CwPMpWUGCvZ5S6f48yk7I/M/3ad1aBytXlGhgstyLFVah1B/k0bKqU9Wtuyzni7tW5c2dNmzZNEyZMUNWqVbVu3TqtWLHCus5HbGysYmJibnMr7RiGetnEiRO1aNEim7Ly5ctr5syZev311zVx4kQ9/vjjeuGFFzR79q1ZVOONN97QpEmTtHXrVpUqVUpff/21AgKyP1CKFCmi33//XaNGjVLz5s2VlpamkiVLqkWLFjbzI2/EkCFDlJKSohEjRighIUEVKlTQN998o9KlS990m1euXGkdBluwYEGVK1dOX331lR5++GFJUoECBbRu3TqNGjVKHTp00NmzZ1W0aFE1adJE3t7ZS4lfXnW1Z8+ecnJyUu/evfXYY48pOTk5t8NKkooWLaoVK1Zo5MiRqlKlivz8/NSnTx/973//s9Z54403lJWVpW7duuns2bOqWbOmVq1alev8whvh7e2tdevWadq0aUpJSVHJkiU1ZcoU6yI6uHnn/1ovJ6+C8m3XWS4+fko/fkTx0yYo43T2fB1nn0Jy8bsybPnc72vk5O4h7yat5de5t7JSz+li9E4lfrXgNp0B7nY+NSqp7s+fWB9XeCt7QbKjHy/Vjj4Rt6tZuMssW50ks5uTBnQJlFcBJ+07fFHjph/TxbQrqU7hQi42KY+nh7MGdQ1SIW9nnb+YpUNH0zR66lHtP3IljQwv4a5XhxW3Pu7TMVCStGZjst79JO9vXo07y9mNv8q5YEEFPP6UnAv5Kf3oER1743/KOJW9FoaLr59c/3XPxZRfV8vJw0O+zdupcLd+yjp/Xhd2bdPJhVcWc3Qyuyuoz2C5+AfIkp6u9ONHFTtjss5u/DXfzw83yJR/C9zcrEGDBmnQoEE5PrdgwYJr7jtu3Lhr3rbvVjFZuI8B7mCHere73U3APWL3J3tvdxNwj5jT79vb3QTcIyadfu52NwH3iLJfGlfnv1Oc37g8347lWbd9vh0rvzAuAwAAAIBDstzByeLdgKsHAAAAADAgWQQAAADgmFj93S4kiwAAAAAAA5JFAAAAAA6JOYv24eoBAAAAAAxIFgEAAAA4JuYs2oVkEQAAAABgQLIIAAAAwDExZ9EuXD0AAAAAgAHJIgAAAACHZGHOol1IFgEAAAAABiSLAAAAABwTcxbtwtUDAAAAABiQLAIAAABwSBYxZ9EeJIsAAAAAAAOSRQAAAAAOycKcRbtw9QAAAAAABnQWAQAAAAAGDEMFAAAA4JgYhmoXrh4AAAAAwIBkEQAAAIBDspi4dYY9SBYBAAAAAAYkiwAAAAAcErfOsA9XDwAAAABgQLIIAAAAwDExZ9EuJIsAAAAAAAOSRQAAAAAOiTmL9uHqAQAAAAAMSBYBAAAAOCSLmLNoD5JFAAAAAIABySIAAAAAh8ScRftw9QAAAAAABiSLAAAAABwT91m0C8kiAAAAAMCAZBEAAACAQ7KQjdmFqwcAAAAAMKCzCAAAAAAwYBgqAAAAAIdkYYEbu5AsAgAAAAAMSBYBAAAAOCSLiWzMHlw9AAAAAIABySIAAAAAh2QRcxbtQbIIAAAAADAgWQQAAADgkJizaB+uHgAAAADAgGQRAAAAgEPiPov2IVkEAAAAABiQLAIAAABwSKyGah+SRQAAAACAAckiAAAAAIfEaqj24eoBAAAAAAxIFgEAAAA4JOYs2odkEQAAAABgQLIIAAAAwCExZ9E+XD0AAAAAyGczZ85UWFiY3N3dVaNGDf3222+51l26dKkeeeQRFS5cWN7e3qpbt65WrVqV522kswgAAADAIVlkyrftZnz55ZcaOnSoRo8era1bt+rBBx9Uy5YtFRMTk2P9devW6ZFHHtGKFSsUFRWlRo0aqW3bttq6deutuEy5MlksFkueHgGww6He7W53E3CP2P3J3tvdBNwj5vT79nY3AfeISaefu91NwD2i7Jd5n3D9V4f/2ZdvxwoNL3PDdR944AFVr15ds2bNspaVL19e7du3V2Rk5A29RsWKFdW5c2e98sorN93WG0WyCAAAAAB2SktLU0pKis2WlpZmqJeenq6oqCg1a9bMprxZs2basGHDDR0rKytLZ8+elZ+f3y1pe27oLAIAAABwSBaTU75tkZGR8vHxsdlySglPnTqlzMxMBQUF2ZQHBQUpLi7uhs5rypQpOn/+vDp16nRLrlNuWA0VAAAAAOwUERGh4cOH25SZzeZc65tMtvMcLRaLoSwnn3/+ucaNG6evv/5agYGB/62xN4jOIgAAAACHdLMLz9jDbDZfs3N4WUBAgJydnQ0pYkJCgiFtvNqXX36pPn366KuvvlLTpk3tau+NYBgqAAAAAOQTNzc31ahRQ6tXr7YpX716terVq5frfp9//rl69uypzz77TK1bt87rZkoiWcQdrkfSi7e7CbhH+PXL22EcwGX95rS93U3APaJPi9m3uwm4R6y/3Q24BssNDOu8HYYPH65u3bqpZs2aqlu3rmbPnq2YmBgNHDhQUvaQ1uPHj+vjjz+WlN1R7N69u9555x3VqVPHmkp6eHjIx8cnz9pJZxEAAAAA8lHnzp11+vRpTZgwQbGxsapUqZJWrFihkiVLSpJiY2Nt7rn4wQcfKCMjQ88++6yeffZZa3mPHj20YMGCPGsnnUUAAAAADsliuTOTRUkaNGiQBg0alONzV3cA165dm/cNygFzFgEAAAAABiSLAAAAAByShWzMLlw9AAAAAIABySIAAAAAh5Sf91l0RCSLAAAAAAADkkUAAAAADolk0T4kiwAAAAAAA5JFAAAAAA6JZNE+JIsAAAAAAAOSRQAAAAAOiWTRPiSLAAAAAAADOosAAAAAAAOGoQIAAABwSBYLw1DtQbIIAAAAADAgWQQAAADgkFjgxj4kiwAAAAAAA5JFAAAAAA6JZNE+JIsAAAAAAAOSRQAAAAAOiWTRPiSLAAAAAAADkkUAAAAADon7LNqHZBEAAAAAYECyCAAAAMAhZTFn0S4kiwAAAAAAA5JFAAAAAA6J1VDtQ7IIAAAAADAgWQQAAADgkFgN1T4kiwAAAAAAA5JFAAAAAA6JOYv2IVkEAAAAABiQLAIAAABwSMxZtA/JIgAAAADAgM4iAAAAAMCAYagAAAAAHBIL3NiHZBEAAAAAYECyCAAAAMAhscCNfUgWAQAAAAAGJIsAAAAAHFLW7W7AXY5kEQAAAABgQLIIAAAAwCExZ9E+JIsAAAAAAAOSRQAAAAAOifss2odkEQAAAABgQLIIAAAAwCExZ9E+JIsAAAAAAAOSRQAAAAAOiTmL9iFZBAAAAAAYkCwCAAAAcEhZltvdgrsbySIAAAAAwIBkEQAAAIBDYs6ifUgWAQAAAAAGdBYBAAAAAAYMQwUAAADgkCwWhqHag2QRAAAAAGBAsggAAADAIVm4dYZdSBYBAAAAIJ/NnDlTYWFhcnd3V40aNfTbb79ds/6vv/6qGjVqyN3dXffdd5/ef//9PG8jnUUAAAAADilLpnzbbsaXX36poUOHavTo0dq6dasefPBBtWzZUjExMTnWP3TokFq1aqUHH3xQW7du1csvv6whQ4ZoyZIlt+Iy5YrO4j1u7969Cg4O1tmzZ/PsGDt37lSxYsV0/vz5PDsGAAAAcLeYOnWq+vTpo759+6p8+fKaNm2aihcvrlmzZuVY//3331eJEiU0bdo0lS9fXn379lXv3r311ltv5Wk77/o5iz179tSZM2e0fPlym/K1a9eqUaNGSkpKkq+v721p283o37+/5s2bp4ULF6pLly75dtzRo0fr2WefVcGCBfPsGJUrV1bt2rX19ttv63//+1+eHceR9epcQm2bBamgp4t27z+nt2cf0OGjF665j1cBZ/V7uqQaPhAgLy8XxSVc1HvzD2nTliRJUpUK3urSvpjKlvJUgJ9ZL0fu1vo/E/PjdHAH69LaX83q+8izgJP2H76oD75M0NHY9FzrN67jrSHdgw3lTwzZr0sZ2RNFKoR76LFHCqlUcXf5+boo8oPj+mM7Px7h2vwa1NR9I/rIp3oluRcJ1ObHByn+m59vd7NwF+r9ZEm1ax6igl4u2r3vrKa+v1+HYq7zGerprP7dwtSwboAKerkqNj5VM+Yd1Kao7M/JpzsW10P1AlSyaAGlpWdp554UzVpwUEePp+bHKeEm5OdqqGlpaUpLS7MpM5vNMpvNNmXp6emKiorSSy+9ZFPerFkzbdiwIcfX3rhxo5o1a2ZT1rx5c82bN0+XLl2Sq6vrLTgDI5LFO8CFCxf05ZdfauTIkZo3b16+HffYsWP65ptv1KtXL7te59KlS9et06tXL82aNUuZmZl2Hete1PWxourUroimzTmo/i9uV2JSuqaOqygPd+dc93FxMWnKuEoKLuyuMW9G6+nBUZo88x+dTLzypd/d3VkHDp/TtDkH8+M0cBd47JFCatfYV7MXJWjkpBglpWRo/HPF5G6+9gft+dRM9XzpgM12uaMoSe5uJh06lqbZixLy+hTgQJw9Cyhlx17ten7C7W4K7mJPPV5cndsX09QP/lHf4Vt0Oildb0+4Xx4e1/4MfXvi/QoOdNeYN3ar68A/NXnGPp06faUTUK2Sr5Z+f0IDRm7VsDE75Oxs0tsT7pe7ma/W97LIyEj5+PjYbJGRkYZ6p06dUmZmpoKCgmzKg4KCFBcXl+Nrx8XF5Vg/IyNDp06dunUncZV76h29ZMkSVaxYUWazWaGhoZoyZYrN8yaTyZBQ+vr6asGCBZKyfwUYPHiwQkJC5O7urtDQUJs3QHJysvr376/AwEB5e3urcePG2r59+3Xb9dVXX6lChQqKiIjQ77//rsOHD9s8n5GRoSFDhsjX11f+/v4aNWqUevToofbt21vrWCwWTZ48Wffdd588PDxUpUoVLV68+JrHXbRokapUqaJixYpJks6fPy9vb2/Dft9++608PT119uxZHT58WCaTSYsWLdLDDz8sd3d3ffrppzpy5Ijatm2rQoUKydPTUxUrVtSKFSusr9G8eXOdPn1av/7663WvB2w90aaoPll8VOs2ndahmAt6/d19Mpud9UjDwrnu06pJkLwLuujlN6L1956zij+Zpp3RKTpw+Eqa88eWJM39LEbrNp3Oj9PAXaBt40L6amWiNm07p5jYdL3zcbzMbiY1rOV97R0t0pmUTJvt37bsvqDPvj2tTdvO5WHr4WhOrlqnfWOnKW756tvdFNzFnmhXVB8vitG6jad0KOaCXnt7j8xmZzV7KDDXfVo3DZa3l6siXtulndEpij+Zph27U/TPvz5DR4zbqR9+jtehmAv65/B5RU7bq+BAd5UNz7uRWvhvLJb82yIiIpScnGyzRURE5No2k8n2x1iLxWIou179nMpvpXumsxgVFaVOnTqpS5cu2rlzp8aNG6cxY8ZYO4I34t1339U333yjRYsWae/evfr0008VGhoqKfsfq3Xr1oqLi9OKFSsUFRWl6tWrq0mTJkpMvPbQvnnz5unpp5+Wj4+PWrVqpfnz59s8P2nSJC1cuFDz58/X77//rpSUFEOn9n//+5/mz5+vWbNmadeuXRo2bJiefvrpa3bO1q1bp5o1a1ofe3p6qkuXLobjz58/Xx07drQZqjpq1CgNGTJE0dHRat68uZ599lmlpaVp3bp12rlzpyZNmiQvLy9rfTc3N1WpUuW6qzzBVkiQWf5+bvpr2xlr2aUMi7bvSlalcrl/IDWo5adde89qWP9SWj6/tha8U01PP15MTvfM//G4WUH+rvLzcdG26CtDszIyLPp7f6rK3ed+zX3dzU6aPTFMc18L0+hniiismPma9QEgPxQJcleAn1l/bk2yll3KsGjb32dUqVzuP4I1eMBff+9J0YiB4frm47r6eEZNdXuixDU/Qz09s5PKlLPXH20Fx2U2m+Xt7W2zXT0EVZICAgLk7OxsSBETEhIM6eFlwcHBOdZ3cXGRv7//rTuJq9z1cxYl6bvvvrPpmEgyDHecOnWqmjRpojFjxkiSypQpo927d+vNN99Uz549b+g4MTExKl26tBo0aCCTyaSSJUtan/vll1+0c+dOJSQkWN8Ub731lpYvX67Fixerf//+Ob7m/v37tWnTJi1dulSS9PTTT2vIkCEaO3asnP7/r9L06dMVERGhxx57TJI0Y8YMm9Tu/Pnzmjp1qtasWaO6detKku677z6tX79eH3zwgR566KEcj3348GHVqFHDpqxv376qV6+eTpw4oSJFiujUqVP67rvvtHq17S+7Q4cOVYcOHWyuzeOPP67KlStbj3+1okWLGlJTXJu/r5skKfGM7YdP4plLCi6c+xfykCB3Vavsrp/WJejFibtUrIiHhvUvJWdnkz5adDRP24y7k69P9hedM2czbMqTz2aosF/u8yCOxaXr3U/idOR4mgq4O6tNI1+98UJxDX3tiGJP8qUJwO3jV+jyZ6jtvOukM+kKCsz9R7AiwR6qfr+7Vq+N18jxO1WsiIeGDywtZ2eTFnxxJMd9nutTStt3JV93LiTyn+UmVynND25ubqpRo4ZWr15t/X4vSatXr9ajjz6a4z5169bVt99+a1P2448/qmbNmnk2X1FykGSxUaNG2rZtm802d+5cmzrR0dGqX7++TVn9+vW1f//+G55H17NnT23btk1ly5bVkCFD9OOPP1qfi4qK0rlz5+Tv7y8vLy/rdujQIR04cCDX15w3b56aN2+ugIAASVKrVq10/vx5/fTTT5Kyh7bGx8erdu3a1n2cnZ1tOnm7d+/WxYsX9cgjj9gc++OPP77msVNTU+XubvvHsnbt2qpYsaI+/vhjSdInn3yiEiVKqGHDhjb1/p1IStKQIUP06quvqn79+ho7dqx27NhhOJ6Hh4cuXMj9j2haWppSUlJstqzM3BfWcESPNCyslZ/VtW7OLpf/wNneUdZkuvZNZp2cTDqTnK43Z/2jfQfPa836U/pk8VG1bx6Sd43HXaVhrYL6fGq4dXNx/v/3muF9Zbrme23f4Yv69c+zOnw8XbsPpOrNebE6EZ+u1g/75lHLASBnjzwUqB8XNbBuLi65/F0zmXL4W3eFk0k6k5yuye/t094D5/Tzbyf18aIYtW+Z82fo8IHhKhXqpXFv7r41J4J7wvDhwzV37lx9+OGHio6O1rBhwxQTE6OBAwdKyh7S2r17d2v9gQMH6siRIxo+fLiio6P14Ycfat68eXrhhRfytJ0OkSx6enoqPDzcpuzYsWM2j3MaA2yxXP0F3GQo+/fiLdWrV9ehQ4f0ww8/6KefflKnTp3UtGlTLV68WFlZWQoJCdHatWsN7cttNdbMzEx9/PHHiouLk4uLi035vHnzbFY8ulbbs7KyJEnff/+9ihYtalMvp+j7soCAACUlJRnK+/btqxkzZuill17S/Pnz1atXL8PxPT09Dfs0b95c33//vX788UdFRkZqypQpeu6556x1EhMTVapUqVzbExkZqfHjx9uUlSjbSyXL9851H0ez/s9E7d631frY1TX79xw/XzedTrryXizk46qk5Nw70qeT0pWRYdH/vzUkSUeOpcrfz00uLiZlZFzjUxL3hD93nNO+wxetj13//0uVr7eLkv4159CnoLMhbbwWi0XafyRNIYFut66xAHAD1v95Wrv3bbY+drv8GVrITaeTrnxmFvJxNaSN/3YqKV2Zhs/QCwrwMxs+Q4f2D1f92v4aHLFdJ0/fWz9w3y2y7tCvPJ07d9bp06c1YcIExcbGqlKlSlqxYoV15GJsbKzNPRfDwsK0YsUKDRs2TO+9956KFCmid999V48//niettMhOos3okKFClq/fr1N2YYNG1SmTBk5O2cPvypcuLBiY2Otz+/fv9+QhHl7e6tz587q3LmzOnbsqBYtWigxMVHVq1e3dvouz2O8nhUrVujs2bPaunWrtQ2StGfPHj311FM6ffq0/P39FRQUpD///FMPPvigpOzO5NatW1W1alXruZnNZsXExOQ65DQn1apV0+7dxl/Bnn76ab344ot69913tWvXLvXo0eOGXq948eIaOHCgBg4cqIiICM2ZM8ems/j333+rY8eOue4fERGh4cOH25S1enpzLrUdU+rFTB2Ps026Tyemq2YVX+0/lD2x3sXFpCoVffTBx4dzfZ2d0Slq2rCwTQJZvIiHTiWm0VGEJOlimkVxVw0TTUzOUNXyBXToWPaKfy7OUqXSHvpo+c2tshZW3Kwjx9OuXxEAbqHU1EwdT7X9DD2VmKZaVQtp/8HsBbZcXEyqWslX73+U+0rgO3en6JGHAo2foadtP0OHDQhXw7oBei5iu2LjL+byakDuBg0apEGDBuX4XE7rqjz00EPasmVLHrfK1j3TWRwxYoRq1aqliRMnqnPnztq4caNmzJihmTNnWus0btxYM2bMUJ06dZSVlaVRo0bZjAF+++23FRISoqpVq8rJyUlfffWVgoOD5evrq6ZNm6pu3bpq3769Jk2apLJly+rEiRNasWKF2rdvbxi2KWUPQW3durWqVKliU16xYkUNHTpUn376qZ5//nk999xzioyMVHh4uMqVK6fp06crKSnJmvYVLFhQL7zwgoYNG6asrCw1aNBAKSkp2rBhg7y8vHLt7DVv3lx9+/ZVZmamTWe1UKFC6tChg0aOHKlmzZpZV0u9lqFDh6ply5YqU6aMkpKStGbNGpUvX976/OHDh3X8+HE1bdo019fI6T40Ts6kE199d1xPdyyuY7EXdSw2VU8/XkxpaZlave6ktc7LQ8roVGKaZn+aPZfi65Wxerx1iIb0uU9LVpxQsRAPPf14MS35/oR1Hw93JxUN9rA+DglyV3iop1LOZSjhFF/070XfrklSx+Z+OpFwSbEJ6erYwk9p6Rat+yvFWuf5HsE6fSZDn36d3YHs3MpPew9dVGzCJRXwcFLrh30VVsys2V9cuU2Gu9mkkMJX/l8O9HdVWDGzzp7P1KmkG08tcW9x9iwgz/AS1scFworJu0o5pScm6+LR2GvsCVzx1TfH1e2JEjp24oKOnkhV904llJaWqR9/vfI36n/Dyurk6XR98PEhSdLyH06oY5sier5fuJZ8d1zFinio2xMltPi749Z9RjwTrqYNgxTx2t+6kJohP9/s74vnLmQqPT1LuHPk530WHdE901msXr26Fi1apFdeeUUTJ05USEiIJkyYYLO4zZQpU9SrVy81bNhQRYoU0TvvvKOoqCjr815eXpo0aZL2798vZ2dn1apVSytWrLAuRLNixQqNHj1avXv31smTJxUcHKyGDRvmuKpRfHy8vv/+e3322WeG50wmkzp06KB58+bp+eef16hRoxQXF6fu3bvL2dlZ/fv3V/PmzW06eBMnTlRgYKAiIyN18OBB+fr6qnr16nr55ZdzvSatWrWSq6urfvrpJzVv3tzmuT59+uizzz5T7943NgQ0MzNTzz77rI4dOyZvb2+1aNFCb7/9tvX5zz//XM2aNbNZFAg35rNlx2V2c9bw/qXk5eWi6P1nNWL8LqVevPLraVBhs83Q5ITT6RoxfpcG9wrT/Ler61RimhZ/d0KfLbsyPLtsqYJ699XK1sfP9c5elOiHNfGKnL4/H84Md5plq5NkdnPSgC6B8irgpH2HL2rc9GO6mHblvVW4kIss/xrT4+nhrEFdg1TI21nnL2bp0NE0jZ56VPuPXPmVPbyEu14dVtz6uE/H7CXr12xM1rufxOfDmeFu5FOjkur+/In1cYW3sj/Pjn68VDv65L4UPfBvC5ccldnNScOfKa2CXq7avS9Fw17ZodTUf3+GutsMVUw4laZhr+zUkL6ltGB6TZ06naavvj2uhUuuDAl8rFX2tJ8ZkVVtjvfatD364Wf+rsFxmCxXT9LDHS8rK0vly5dXp06dNHHiRLtea+bMmfr666+1atUqm/KFCxfq+eef14kTJ+TmZl+6l5aWptKlS+vzzz83LDJ0PQ0fW3/9SsAt4BeS+z23gFup35y2t7sJuEdEtph9u5uAe8T6b298GlR+W7El/1bmblU971YlvV3umWTxbnbkyBH9+OOPeuihh5SWlqYZM2bo0KFD6tq1q92v3b9/fyUlJens2bMqWLCgLly4oEOHDikyMlIDBgywu6N4uf2jR4++6Y4iAAAAgNvHIW6d4eicnJy0YMEC1apVS/Xr19fOnTv1008/2cwJ/K9cXFw0evRoFSyYfYP3yZMnq2rVqgoKClJExK0Z5lOmTBkNGDDglrwWAAAAcKOyZMq3zRGRLN4Fihcvrt9//z1fjjVu3DiNGzcuX44FAAAA4M5FsggAAAAAMCBZBAAAAOCQWMrTPiSLAAAAAAADkkUAAAAADsliccyFZ/ILySIAAAAAwIBkEQAAAIBDymLOol1IFgEAAAAABiSLAAAAABwSq6Hah2QRAAAAAGBAsggAAADAIVnEaqj2IFkEAAAAABiQLAIAAABwSKyGah+SRQAAAACAAckiAAAAAIfEaqj2IVkEAAAAABiQLAIAAABwSCSL9iFZBAAAAAAYkCwCAAAAcEhZFu6zaA+SRQAAAACAAZ1FAAAAAIABw1ABAAAAOCQWuLEPySIAAAAAwIBkEQAAAIBDIlm0D8kiAAAAAMCAZBEAAACAQ8oiWbQLySIAAAAAwIBkEQAAAIBDslhMt7sJdzWSRQAAAACAAckiAAAAAIfEaqj2IVkEAAAAABiQLAIAAABwSKyGah+SRQAAAACAAckiAAAAAIfEnEX7kCwCAAAAAAxIFgEAAAA4JJJF+5AsAgAAAAAMSBYBAAAAOCRWQ7UPySIAAAAAwIBkEQAAAIBDYs6ifUgWAQAAAAAGdBYBAAAAAAYMQwUAAADgkLKybncL7m4kiwAAAAAAA5JFAAAAAA6JBW7sQ7IIAAAAADAgWQQAAADgkEgW7UOyCAAAAAAwIFkEAAAA4JCySBbtQrIIAAAAADCgswgAAADAIVkslnzb8kpSUpK6desmHx8f+fj4qFu3bjpz5kyu9S9duqRRo0apcuXK8vT0VJEiRdS9e3edOHHipo9NZxEAAAAA7lBdu3bVtm3btHLlSq1cuVLbtm1Tt27dcq1/4cIFbdmyRWPGjNGWLVu0dOlS7du3T+3atbvpYzNnEQAAAIBDuttXQ42OjtbKlSu1adMmPfDAA5KkOXPmqG7dutq7d6/Kli1r2MfHx0erV6+2KZs+fbpq166tmJgYlShR4oaPT7IIAAAAAHegjRs3ysfHx9pRlKQ6derIx8dHGzZsuOHXSU5Olslkkq+v700dn2QRAAAAgEPKysq/Y6WlpSktLc2mzGw2y2w2/+fXjIuLU2BgoKE8MDBQcXFxN/QaFy9e1EsvvaSuXbvK29v7po5PsggAAAAAdoqMjLQuQnN5i4yMzLHuuHHjZDKZrrlt3rxZkmQymQz7WyyWHMuvdunSJXXp0kVZWVmaOXPmTZ8TySIAAAAAh5SfcxYjIiI0fPhwm7LcUsXBgwerS5cu13y90NBQ7dixQ/Hx8YbnTp48qaCgoGvuf+nSJXXq1EmHDh3SmjVrbjpVlOgsAgAAAIDdbmbIaUBAgAICAq5br27dukpOTtaff/6p2rVrS5L++OMPJScnq169ernud7mjuH//fv3yyy/y9/e/sZO4CsNQAQAAADikLEv+bXmhfPnyatGihfr166dNmzZp06ZN6tevn9q0aWOzEmq5cuW0bNkySVJGRoY6duyozZs3a+HChcrMzFRcXJzi4uKUnp5+U8enswgAAAAAd6iFCxeqcuXKatasmZo1a6b7779fn3zyiU2dvXv3Kjk5WZJ07NgxffPNNzp27JiqVq2qkJAQ63YzK6hKDEMFAAAAgDuWn5+fPv3002vWsfxrcmZoaKjNY3vQWcQd7aVVfW93E3CPKNW25O1uAu4RfVrMvt1NwD0iYmX/290E3DP23u4G5Co/F7hxRAxDBQAAAAAYkCwCAAAAcEiWvFp5JkfXv+/h3YZkEQAAAABgQLIIAAAAwCHla7DogEgWAQAAAAAGJIsAAAAAHBKrodqHZBEAAAAAYECyCAAAAMAhZTFp0S4kiwAAAAAAA5JFAAAAAA6JOYv2IVkEAAAAABiQLAIAAABwSCSL9iFZBAAAAAAYkCwCAAAAcEhZRIt2IVkEAAAAABiQLAIAAABwSJas292CuxvJIgAAAADAgGQRAAAAgEOyMGfRLiSLAAAAAAADOosAAAAAAAOGoQIAAABwSFkscGMXkkUAAAAAgAHJIgAAAACHxAI39iFZBAAAAAAYkCwCAAAAcEhZBIt2IVkEAAAAABiQLAIAAABwSBaiRbuQLAIAAAAADEgWAQAAADgkFkO1D8kiAAAAAMCAZBEAAACAQ8pizqJdSBYBAAAAAAYkiwAAAAAckoVJi3YhWQQAAAAAGJAsAgAAAHBIlqzb3YK7G8kiAAAAAMCAZBEAAACAQ8pizqJdSBYBAAAAAAZ0FgEAAAAABgxDBQAAAOCQuHWGfUgWAQAAAAAGJIsAAAAAHFJWFsmiPUgWAQAAAAAGJIsAAAAAHBJTFu1DsggAAAAAMCBZBAAAAOCQLMxZtAvJIgAAAADAgGQRAAAAgEPKYtKiXUgWAQAAAAAGJIsAAAAAHBJzFu1DsggAAAAAMCBZBAAAAOCQSBbtQ7IIAAAAADAgWQQAAADgkAgW7UOyCAAAAAAwoLMIAAAAwCFZsiz5tuWVpKQkdevWTT4+PvLx8VG3bt105syZG95/wIABMplMmjZt2k0fm84iAAAAANyhunbtqm3btmnlypVauXKltm3bpm7dut3QvsuXL9cff/yhIkWK/KdjM2cRAAAAgEOyWO7uSYvR0dFauXKlNm3apAceeECSNGfOHNWtW1d79+5V2bJlc933+PHjGjx4sFatWqXWrVv/p+PTWQQAAAAAO6WlpSktLc2mzGw2y2w2/+fX3Lhxo3x8fKwdRUmqU6eOfHx8tGHDhlw7i1lZWerWrZtGjhypihUr/ufjMwzVQRw+fFgmk0nbtm3L0+OcPn1agYGBOnz4sOG5cePG5Vj+3XffqVq1asrKysrTtgEAAAC3S2RkpHVe4eUtMjLSrteMi4tTYGCgoTwwMFBxcXG57jdp0iS5uLhoyJAhdh3fIZPFnj176syZM1q+fLlN+dq1a9WoUSMlJSXJ19f3trTtRphMJut/e3l5qWzZsnr55ZfVoUOHXPcpXry4YmNjFRAQkKdti4yMVNu2bRUaGnrD+7Rp00avvPKKPvvsMz399NN51zgHVaL/k7pvaB+ZgwvrXPQ/2j3ydSVtiMq1fskBXVVywFPyKFlUqUdjdWDy+zr+2dfW500uLio1sr+KPtVe7kWCdH7fIe0Z85ZOrV6fH6eDO5hvszYq1PYJufj6Kf3YESV89L5S9/yda/2CDRrJr10nuQUXUdaF8zq/PUoJn8xW1rmzkiSv2vXl376LXIOLyOTsovS440r6bolSfvs5v04Jd7DeT5ZUu+YhKujlot37zmrq+/t1KObCNffx8nRW/25halg3QAW9XBUbn6oZ8w5qU1SiJOnpjsX1UL0AlSxaQGnpWdq5J0WzFhzU0eOp+XFKuEv5Naip+0b0kU/1SnIvEqjNjw9S/Df8nXIUWfl474yIiAgNHz7cpiy3VHHcuHEaP378NV/vr7/+kmTbN7jMYrHkWC5JUVFReuedd7Rly5Zc69woksU71Pz58xUbG6u//vpLVapU0RNPPKGNGzfmWDc9PV3Ozs4KDg6Wi0ve9f9TU1M1b9489e3b16b8q6++Uo0aNfTmm2+qVq1aqlOnjpYsWWJTp1evXpo+fXqetc1RhTzeUhUmR+ifye9rfd3HlPj7ZtVaPlvuxUJyrF+iXxeVGT9c+1+boXU12mj/q9NV8e1XFNiqkbVOmbHPq0Sfzto94lWtq95aMfO+UI0vZsi7Svn8Oi3cgQrWfUiBPQYqcdnnOvLSIF3Y87eKRbwqF//COdb3KFtRIc+OVPKalTo8or9OvP2a3EuVUfCAYdY6mefO6vSyzxUzZqgOvzhQyWt/VPAzI1SgSo38Oi3coZ56vLg6ty+mqR/8o77Dt+h0UrrennC/PDycc93HxcWktyfer+BAd415Y7e6DvxTk2fs06nTV4Z8Vavkq6Xfn9CAkVs1bMwOOTub9PaE++Vu5usOcufsWUApO/Zq1/MTbndTcJczm83y9va22XLrLA4ePFjR0dHX3CpVqqTg4GDFx8cb9j958qSCgoJyfO3ffvtNCQkJKlGihFxcXOTi4qIjR45oxIgRNxX4SHQWtWTJElWsWFFms1mhoaGaMmWKzfMmk8mQUPr6+mrBggWSsjtqgwcPVkhIiNzd3RUaGmoTNycnJ6t///4KDAyUt7e3GjdurO3bt1+3Xb6+vgoODla5cuX0/vvvy93dXd98840kKTQ0VK+++qp69uwpHx8f9evXL8dhqLt27VLr1q3l7e2tggUL6sEHH9SBAwesz8+fP1/ly5eXu7u7ypUrp5kzZ16zTT/88INcXFxUt25da9m+ffv05JNPqnXr1urZs6fmz5+vZ599VpcuXbLZt127dvrzzz918ODB6547rggb0lNHP1qiYwsW6/zeg4p+MVIXj8WpZL8nc6xf9MlHdXTel4pd8oNSDx9T7OIVOvrRYt03/EoHv2jXR3XgzQ90ctU6pR4+ppg5X+jkT+sVNqRXfp0W7kCFWndQ8ppVSl6zUunHj+rkR+/r0umT8m3WJsf67qXL61JCvM6s/FqXTsYrde8unfnpe7nfV8ZaJ3X3Dp37a4PSjx/VpfhYnflhudJiDsqj7H+fOwHH8ES7ovp4UYzWbTylQzEX9Nrbe2Q2O6vZQ8ahVpe1bhosby9XRby2SzujUxR/Mk07dqfon8PnrXVGjNupH36O16GYC/rn8HlFTtur4EB3lQ0vmB+nhbvUyVXrtG/sNMUtX327m4I8YLFY8m27GQEBASpXrtw1N3d3d9WtW1fJycn6888/rfv+8ccfSk5OVr169XJ87W7dumnHjh3atm2bdStSpIhGjhypVatW3VQ77+nOYlRUlDp16qQuXbpo586dGjdunMaMGWPtCN6Id999V998840WLVqkvXv36tNPP7X22C0Wi1q3bq24uDitWLFCUVFRql69upo0aaLExMQbPoarq6tcXFxsOmBvvvmmKlWqpKioKI0ZM8awz/Hjx9WwYUO5u7trzZo1ioqKUu/evZWRkSEpexWl0aNH67XXXlN0dLRef/11jRkzRh999FGu7Vi3bp1q1qxpU7Zjxw45OTlp/PjxKly4sCpVqqRu3bqpS5cuNvVKliypwMBA/fbbbzd83vc6k6urvKtV1Kmff7cpP/nz7/KtUy3HfZzMbsq8amJ1VmqafGtWlun/U2cnNzdlXjTWKVSPtOee5ewi9/tK6/wO2+HNF7ZHyaNMhRx3Sd23Wy7+AfKsWiv7JXx8VfCBB3V+65851pekApWqyi2kuFKjcx/aCsdXJMhdAX5m/bk1yVp2KcOibX+fUaVy3rnu1+ABf/29J0UjBobrm4/r6uMZNdXtiRJyusY3GU/P7KQy5eyl3CsBwB2sfPnyatGihfr166dNmzZp06ZN6tevn9q0aWOzuE25cuW0bNkySZK/v78qVapks7m6uio4OPiaq6fmxCHnLErZi6p4eXnZlGVmZto8njp1qpo0aWLtbJUpU0a7d+/Wm2++qZ49e97QcWJiYlS6dGk1aNBAJpNJJUuWtD73yy+/aOfOnUpISLBG0G+99ZaWL1+uxYsXq3///td9/bS0NL355ptKSUlRkyZNrOWNGzfWCy+8YH189cIy7733nnx8fPTFF1/I1dXVen6XTZw4UVOmTLHOgwwLC9Pu3bv1wQcfqEePHjm25fDhw4Z7tNSoUUNOTk4aOXLkdW8OWrRo0RwXwEHO3AIKycnFRWnxp23K0xNOyxyU89zUkz+tV/GeHRX/7c9K2bpLPtUrqVj3DnJyc5NbQCGlxZ3UqZ/WK+y5nkpcv1kXDsYooFFdBbVpLDnnPvwLjs3Z21smZ2dlJJ+xKc9IPiNP30I57nNx327FTp+kIkNflsnVTSYXF539a6Pi579nU8/Jo4BKvf+ZTC6usmRlKX7edF3YuSWvTgV3Ab9CbpKkxDPpNuVJZ9IVFOie635Fgj1U/X53rV4br5Hjd6pYEQ8NH1hazs4mLfjiSI77PNenlLbvSr7uXEgAjsuSj3MW88rChQs1ZMgQNWvWTFL2iL0ZM2bY1Nm7d6+Sk5Nv+bEdtrPYqFEjzZo1y6bsjz/+sFlgJTo6Wo8++qhNnfr162vatGnKzMyU8w18ee7Zs6ceeeQRlS1bVi1atFCbNm2s/5BRUVE6d+6c/P39bfZJTU21GQ6akyeffFLOzs5KTU2Vj4+P3nrrLbVs2dL6/NUJ39W2bdumBx980NpR/LeTJ0/q6NGj6tOnj/r162ctz8jIkI+PT66vmZqaKnd32w/ysLAwrV69Wq+99pp+++03LV26VC1atNDEiRNVqlQpm7oeHh66cCH3D+yclhu+ZMmSq+meDsClq4c1mHIo+3//RM6UOShA9dZ+IZlMSk84rWOfLlOpEf1k+f8fS3aPfE2V3puoh7atkMVi0YWDR3Xsk6Uq1i33BZRwjzC810y5vdXkVrSEgnoO0qklC3Vhe5ScC/kp8Km+Cuo7RPEfvG2tl3UxVYdfHCQnd3cVqFxNgd0H6FJCnFJ378jDE8Gd5JGHAjXy2Ss/Vr44YWf2f1z93jKZjGX/4mSSziSna/J7+5SVJe09cE4BfmY92aFYjp3F4QPDVSrUS4NGbb0FZwEAt4+fn58+/fTTa9a53jDY/xrYOGxn0dPTU+Hh4TZlx44ds3mc0ypCV19ok8lkKPv3cNDq1avr0KFD+uGHH/TTTz+pU6dOatq0qRYvXqysrCyFhIRo7dq1hvZdbzXWt99+W02bNpW3t3eOy+V6enpec38PD49cn7t8C4s5c+bY3LNF0jU7yAEBAUpKSjKUP/jgg1q5cqXGjRunihUrat68eWrcuLEOHDhgs+BOYmKiChfOebEMKXul1atXherq4q+nXPN2hdc7VfqpJGVlZMgcbHv+boX9lZZwOsd9si6maefA0fp78FiZg/x1MfakSvTppEsp55R+Ksn6uls6D5aT2U2u/r5KO5GgshNH6MLhYzm+JhxfZkqKLJmZcrkqRXTx9lFmsvH/eUnya99Zqft2KenbxdkFMYcUf/GiSkyYqlNffqTMM/8/1N5i0aX4E5KktCMH5Va0uPzbd9YxOov3jPV/ntbufZutj91cs38A9CvkptNJV9LFQj6uhrTx304lpSszw6J/34XpyLELCvAzy8XFpIyMK5/VQ/uHq35tfw2O2K6Tp3N/TQCOzxGSxdvpno5sKlSooPXrbW8XsGHDBpUpU8baaSpcuLBiY2Otz+/fv9+Qjnl7e6tz586aM2eOvvzySy1ZskSJiYmqXr264uLi5OLiovDwcJvtere4CA4OVnh4eI4dxRtx//3367fffjMsNCNJQUFBKlq0qA4ePGhoV1hYWK6vWa1aNe3evfuax61Vq5befPNNxcTE6MiRK7/0Xrx4UQcOHFC1ajnPtZOylxtOTk622Tq5+N3A2Tomy6VLStm6SwGNbScvBzSupzObrv1LuSUjQxePx0tZWQrp2Fonf1hrSI2y0tKVdiJBJhcXBbdvpvjv19zqU8DdIjNDFw/uV4H7q9sUF7i/ulL35fz/vJPZ3fABbLn8Lf6aq3SbZHIxjniA40pNzdTx2IvW7VDMBZ1KTFOtqld+nHBxMalqJV/9vScl19fZuTtFRUM89O/feIsX8dCp02k2HcVhA8L1UL0APT96h2LjL+bJOQHAvcJhk8UbMWLECNWqVUsTJ05U586dtXHjRs2YMcNmVdDGjRtrxowZqlOnjrKysjRq1CiboZ1vv/22QkJCVLVqVTk5Oemrr75ScHCwfH191bRpU9WtW1ft27fXpEmTVLZsWZ04cUIrVqxQ+/btrzuU1B6DBw/W9OnT1aVLF0VERMjHx0ebNm1S7dq1VbZsWY0bN05DhgyRt7e3WrZsqbS0NG3evFlJSUmG+8Nc1rx5c0VERCgpKUmFCmV/yK9cudI6nDcrK0sJCQmaM2eOAgICVKJECeu+mzZtktlstllJ9Wpms9mwvPC9PgT10LsLVGXeJCVv+VtJf2xTid6d5FE8REfmfiFJKjt+uMxFArWj30uSJM/wUPnUrKwzf+2QayFvhT3XUwUrlLY+L0k+te6Xe5EgpWyPlnuRIJUePVgmJycdnDr3tpwj7gxJ3y9VyOCRunhgny7uj5ZPk1ZyDQjUmdXfS5ICnuwlF78Axb33piTpXNQmBfcfqtRH2uj89s1yKeSnwj0GKnX/HmUmZaeKfu076+KB/boUf0ImF1d5Vqsln4ZNFT+P2+jc67765ri6PVFCx05c0NETqereqYTS0jL1468J1jr/G1ZWJ0+n64OPD0mSlv9wQh3bFNHz/cK15LvjKlbEQ92eKKHF3x237jPimXA1bRikiNf+1oXUDPn5Zn9en7uQqfT0LAE5cfYsIM/wK99ZCoQVk3eVckpPTNbFo7HX2BN3g6ybXKUUtu7pzmL16tW1aNEivfLKK5o4caJCQkI0YcIEm8VtpkyZol69eqlhw4YqUqSI3nnnHUVFXVkx0MvLS5MmTdL+/fvl7OysWrVqacWKFXL6/+XZVqxYodGjR6t37946efKkgoOD1bBhw1zvi3Kr+Pv7a82aNRo5cqQeeughOTs7q2rVqqpfv74kqW/fvipQoIDefPNNvfjii/L09FTlypU1dOjQXF+zcuXKqlmzphYtWqQBAwZIyr6Nx4IFCzRlyhTFxcXp7bffVpUqVfTdd9/ZdKo///xzPfXUUypQoECenrejiV3yg1z9fRUe8azMwYV1bvd+/fXYAF08mj2szxxcWB7F/7XokLOTwp7vJa/SYcq6lKHT6/7QxsZPKjXmypcpZ7NZZV55XgXCiivz3AUlrPpV2/uOUkby2fw+PdxBzm78Vc4FCyrg8afkXMhP6UeP6Ngb/1PGqewv7y6+fnL91z0XU35dLScPD/k2b6fC3fop6/x5Xdi1TScXzrPWcTK7K6jPYLn4B8iSnq7040cVO2Oyzm78Nd/PD3eWhUuOyuzmpOHPlFZBL1ft3peiYa/sUGrqlYXoggq769/hdcKpNA17ZaeG9C2lBdNr6tTpNH317XEtXBJjrfNYq6KSpBmRVW2O99q0PfrhZ+N9ygBJ8qlRSXV//sT6uMJbL0uSjn68VDv6RNyuZgF3BJPlZm8KgnvaihUr9MILL+jvv/+2dogvGzdunHr27Gm42efJkydVrlw5bd68+ZrDXHM8XoFy9jYZuCGl2pa8fiXgFuhz4eXb3QTcIyJWXn/VdeBWaH1p7+1uQq56vBKXb8f6aEJwvh0rv9zTySJuXqtWrbR//34dP35cxYsXv6F9Dh06pJkzZ950RxEAAADA7UNnETft+eefz7F83LhxOZbXrl1btWvXzsMWAQAAAEYMorTPvb16CAAAAAAgRySLAAAAABxSFvdZtAvJIgAAAADAgGQRAAAAgEOykCzahWQRAAAAAGBAZxEAAAAAYMAwVAAAAAAOiVtn2IdkEQAAAABgQLIIAAAAwCFZsrJudxPuaiSLAAAAAAADkkUAAAAADimLW2fYhWQRAAAAAGBAsggAAADAIbEaqn1IFgEAAAAABiSLAAAAAByShTmLdiFZBAAAAAAYkCwCAAAAcEgki/YhWQQAAAAAGJAsAgAAAHBIWZas292EuxrJIgAAAADAgGQRAAAAgENizqJ9SBYBAAAAAAYkiwAAAAAcEsmifUgWAQAAAAAGJIsAAAAAHJLFQrJoD5JFAAAAAIABnUUAAAAAgAHDUAEAAAA4pKysrNvdhLsaySIAAAAAwIBkEQAAAIBD4tYZ9iFZBAAAAAAYkCwCAAAAcEgWC3MW7UGyCAAAAAAwIFkEAAAA4JCYs2gfkkUAAAAAgAHJIgAAAACHRLJoH5JFAAAAAIABySIAAAAAh5TFaqh2IVkEAAAAABiQLAIAAABwSMxZtA/JIgAAAADAgGQRAAAAgEOyZDFn0R4kiwAAAAAAA5JFAAAAAA6JOYv2IVkEAAAAABjQWQQAAAAAGDAMFQAAAIBDslhY4MYeJIsAAAAAAAM6iwAAAAAcUlaWJd+2vJKUlKRu3brJx8dHPj4+6tatm86cOXPd/aKjo9WuXTv5+PioYMGCqlOnjmJiYm7q2HQWAQAAAOAO1bVrV23btk0rV67UypUrtW3bNnXr1u2a+xw4cEANGjRQuXLltHbtWm3fvl1jxoyRu7v7TR2bOYsAAAAAHJIl6+6esxgdHa2VK1dq06ZNeuCBByRJc+bMUd26dbV3716VLVs2x/1Gjx6tVq1aafLkyday++6776aPT7IIAAAAAHegjRs3ysfHx9pRlKQ6derIx8dHGzZsyHGfrKwsff/99ypTpoyaN2+uwMBAPfDAA1q+fPlNH5/OIgAAAACHZMmy5NuWlpamlJQUmy0tLc2u9sfFxSkwMNBQHhgYqLi4uBz3SUhI0Llz5/TGG2+oRYsW+vHHH/XYY4+pQ4cO+vXXX2/q+HQWAQAAAMBOkZGR1kVoLm+RkZE51h03bpxMJtM1t82bN0uSTCaTYX+LxZJjuZSdLErSo48+qmHDhqlq1ap66aWX1KZNG73//vs3dU7MWQQAAADgkPLzPosREREaPny4TZnZbM6x7uDBg9WlS5drvl5oaKh27Nih+Ph4w3MnT55UUFBQjvsFBATIxcVFFSpUsCkvX7681q9ff81jXo3OIgAAAADYyWw259o5vFpAQIACAgKuW69u3bpKTk7Wn3/+qdq1a0uS/vjjDyUnJ6tevXo57uPm5qZatWpp7969NuX79u1TyZIlb6h9l9FZBAAAAOCQLHl4/8P8UL58ebVo0UL9+vXTBx98IEnq37+/2rRpY7MSarly5RQZGanHHntMkjRy5Eh17txZDRs2VKNGjbRy5Up9++23Wrt27U0dnzmLAAAAAHCHWrhwoSpXrqxmzZqpWbNmuv/++/XJJ5/Y1Nm7d6+Sk5Otjx977DG9//77mjx5sipXrqy5c+dqyZIlatCgwU0dm2QRAAAAgEO62++zKEl+fn769NNPr1nHYjEmqL1791bv3r3tOjbJIgAAAADAwGTJqRsK4K6UlpamyMhIRURE3PAEa+C/4L2G/MJ7DfmF9xpgRGcRcCApKSny8fFRcnKyvL29b3dz4MB4ryG/8F5DfuG9BhgxDBUAAAAAYEBnEQAAAABgQGcRAAAAAGBAZxFwIGazWWPHjmViPvIc7zXkF95ryC+81wAjFrgBAAAAABiQLAIAAAAADOgsAgAAAAAM6CwCAAAAAAzoLAJ3uQULFsjX1zfPjzNmzBj1798/T4+xfPlyhYeHy9nZWUOHDs2xTkJCggoXLqzjx4/naVtut8OHD8tkMmnbtm23uylWe/bsUZ06deTu7q6qVavm+/F79uyp9u3b5/txce/Yu3evgoODdfbs2Tw7xs6dO1WsWDGdP38+z46BvJVff59Pnz6twMBAHT582PDcuHHjciz/7rvvVK1aNWVlZeVp23DvoLMIh5fbF8y1a9fKZDLpzJkz+d6mm/HLL7+oUaNG8vPzU4ECBVS6dGn16NFDGRkZkqTOnTtr3759edqG+Ph4vfPOO3r55Zfz9DgDBgxQx44ddfToUU2cODHHf7vAwEB169ZNY8eOzdO29OzZUyaTSW+88YZN+fLly2UymfL02HeqsWPHytPTU3v37tXPP/+cY53L1+3y5u/vrxYtWmjHjh353Np7093+9+6y/v37y9nZWV988UW+Hnf06NF69tlnVbBgwTw7RuXKlVW7dm29/fbbeXaM/HS3v+f+/feqYMGCqlmzppYuXXrNfYoXL67Y2FhVqlQpT9sWGRmptm3bKjQ09Ib3adOmzf+1d+dRTVx7HMC/LCFgIICIBBBxoW5Ig/iwKgUtInGpS21FcMXdqoAbxWo9gqKI1hVcaZqHFa17sUdE3HCjLiBuiEARFRELCk+lKrL83h+8TBmSAK4P2/s5J+eQO3fuvTPzm5vcmckFWlpa2L59+7trGPOPwgaLDNOApaWloW/fvnB2dsapU6dw7do1REREQCAQcFcNDQwM0LRp03faDrlcjm7dur3SB9arKikpQUFBAWQyGaysrGr9sjZ27FjExMSguLj4nbUHAPT19REeHv7O63mfXr58+drrZmdn49NPP4WtrS3MzMw05uvTpw/y8/ORn5+PY8eOQVdXF59//vlr11tfb7JtTMPx7Nkz7Ny5E4GBgZDL5e+t3nv37uHAgQMYO3bsG5VTVlZWZ56xY8di48aNqKioeKO6mLdDoVAgPz8fFy9ehFQqxdChQ/Hbb7+pzfvy5Uvo6OhAIpFAV1f3nbXp+fPnkMvlmDBhAi999+7d6Ny5M1asWAFnZ2d07doVe/fu5eUZO3YsIiIi3lnbmH8WNlhkmGr27t0Le3t7CIVCtGjRAitXruQt19LSwi+//MJLMzExwb///W8AVR8i06dPh6WlJfT19dGiRQuEhYVxeR8/foxJkyahadOmEIvFcHd3x5UrVzS258iRI7C0tMTy5cvRsWNHtG7dGn369MEPP/wAPT09AKqPobZo0YJ3pVT5UsrLy8OwYcNgamoKMzMzDBo0SO2jLNX9/PPPGDhwIC9tz549cHBwgIGBAczMzODh4cE9VlVRUYFZs2bBxMQEZmZm+OabbzBmzBiNjxAmJiZyg0N3d3doaWmhZ8+eiI6ORmxsLLcNiYmJAKquzEskEuzfv7/Wdr8pDw8PSCQS3jGsKTg4WOWRzDVr1vAG1sor70uXLoWFhQVMTEwQEhKC8vJyBAYGonHjxmjWrBl+/PFHlfJv3ryJ7t27Q19fH/b29tw+ULpx4wb69esHQ0NDWFhYYNSoUXj48CG3vGfPnpg+fTpmzZqFJk2aoHfv3mq3o7KyEosWLUKzZs0gFArh6OiI+Ph4brmWlhZSUlKwaNEiaGlpITg4WOM+EQqFkEgkkEgkcHR0RFBQEHJzc1FYWMjlqSsO1cVQzf/0pGnbTp48iS5dukAoFMLS0hJz587l7sQDQGlpKfz9/dG0aVPo6+vj008/xcWLF7nlyjsihw8fRqdOnWBgYAB3d3cUFBTg0KFDaN++PcRiMXx8fPDs2TNuvdrOiYaoofV3Srt370aHDh3w7bff4uzZsyr9U3l5Ofz9/bnYCAoKUulfiAjLly9Hq1atYGBgAKlUij179tRa765duyCVStGsWTMAwJ9//gmxWKyy3q+//gqRSISnT59yjyPu2rULPXv2hL6+PrZt24Y7d+5gwIABMDU1hUgkgr29PeLi4rgyZDIZHj16hJMnT9a5P/5OGmrMmZiYQCKRoF27dti0aRP09fVx4MABAFWfqaGhofD19YWxsTEmTpyo9jHUtLQ09O/fH2KxGEZGRnB1dUV2dja3XKFQoH379tDX10e7du2wYcOGWtt06NAh6Orqolu3blxaZmYmfHx80L9/f/j6+kKhUGDatGkqFygGDhyICxcu4NatW3VuO8PUhQ0WGeZ/UlJS4OXlBW9vb1y7dg3BwcFYsGAB9yFVH+vWrcOBAwewa9cuZGRkYNu2bdyggYjQv39/PHjwAHFxcUhJSYGTkxN69eqFoqIiteVJJBLk5+fj1KlT9W7DxYsXubs69+7dQ9euXeHq6gqg6or9Z599BkNDQ5w6dQpnzpyBoaEh+vTpo/GuTHFxMa5fv45//etfXFp+fj58fHwwbtw4pKenIzExEUOGDOG+zK9cuRI//vgj5HI5zpw5g6KioloHdt27d0dGRgaAqi8T+fn5OHDgALy8vHh3qbp3786t06VLF5w+fbre++V16OjoYOnSpYiIiMC9e/feqKzjx4/j/v37OHXqFFatWoXg4GB8/vnnMDU1xfnz5zFlyhRMmTIFubm5vPUCAwMxe/ZspKamonv37hg4cCAePXoEoOo49OjRA46OjkhOTkZ8fDz++OMPeHl58cqIjo6Grq4uzp49i82bN6tt39q1a7Fy5Up8//33uHr1KmQyGQYOHIisrCyuLnt7e8yePRv5+fmYM2dOvba7pKQEMTExsLOz4+5G1icO6xtDNbctLy8P/fr1g7OzM65cuYKNGzdCLpcjNDSUW+ebb77B3r17ER0djUuXLsHOzg4ymUzlPAwODkZkZCSSkpKQm5sLLy8vrFmzBtu3b8fBgwdx5MgR7up9XedEQ9MQ+zsluVyOkSNHwtjYGP369YNCoeAtDw8PR0xMDBQKBc6ePYsnT56oDDC+++47KBQKbNy4EWlpaZg5cyZGjhxZ6+Ds1KlTvH5OJBLB29tbpX6FQoGvvvqK9/RDUFAQ/P39kZ6eDplMhmnTpqG0tJR7IiQ8PByGhoZcfj09PUil0nfehzUkDTnmqhMIBNDV1eUNwFasWIGOHTsiJSUFCxYsUFknLy8Pbm5u0NfXx/Hjx5GSkoJx48ZxF6mioqIwf/58LFmyBOnp6Vi6dCkWLFiA6Ohoje2oGY8AcPXqVWhrayMkJATm5ubo2LEjRo0aBW9vb14+W1tbNG3a9B8VX8w7RAzzNzdmzBjS0dEhkUjEe+nr6xMAKi4uJiKi4cOHU+/evXnrBgYGUocOHbj3AGj//v28PMbGxqRQKIiIyM/Pj9zd3amyslKlHceOHSOxWEwvXrzgpbdu3Zo2b96stu3l5eXk6+tLAEgikdDgwYMpIiKCHj9+zOVRKBRkbGysdn1/f3+ytbWlgoICIiKSy+XUtm1bXvtKS0vJwMCADh8+rLaM1NRUAkB3797l0lJSUggA3b59W+06lpaWtGzZMu59WVkZNWvWjAYNGqQ2PxFRcXExAaATJ05waWPGjNG4zsyZM6lnz54ay3tT1evu2rUrjRs3joiI9u/fT9W7zoULF5JUKuWtu3r1arK1teWVZWtrSxUVFVxa27ZtydXVlXtfXl5OIpGIduzYQUREOTk5BEDtfgwPDyciogULFpCnpyev7tzcXAJAGRkZRETUo0cPcnR0rHN7raysaMmSJbw0Z2dnmjp1KvdeKpXSwoULay2n5vkGgCwtLSklJYXLU584rE8Mqdu2efPmqZS9fv16MjQ0pIqKCiopKSGBQEAxMTHc8pcvX5KVlRUtX76ciIhOnDhBAOjo0aNcnrCwMAJA2dnZXNrkyZNJJpMRUd3nxPvyIfd3RESZmZkkEAiosLCQiKrONxsbG965Y2FhQStWrODel5eXU/PmzbnYKCkpIX19fUpKSuKVPX78ePLx8dFYt1QqpUWLFvHSzp8/Tzo6OpSXl0dERIWFhSQQCCgxMZGI/jpP16xZw1vPwcGBgoODNdZFRPTFF1+Qr69vrXk+BB96zFWv88WLF7R48WICQHFxcUREZGtrS4MHD+atozzuqampRET07bffUsuWLenly5dq67CxsaHt27fz0hYvXkzdunXT2K5BgwZxnztKt27dIqFQSLNnz6bx48dTTk6OxvU7depUZwwyTH2wO4vMP8Jnn32Gy5cv814//PADL096ejpcXFx4aS4uLsjKyqr370p8fX1x+fJltG3bFv7+/khISOCWpaSkoKSkBGZmZjA0NOReOTk5vEdVqtPR0YFCocC9e/ewfPlyWFlZYcmSJbC3t0d+fn6tbdmyZQvkcjliY2Nhbm7OteH333+HkZERV3/jxo3x4sULjW14/vw5gKrf7ylJpVL06tULDg4OGDp0KKKiorjf9T1+/Bj5+fm8R2d0dXVVrpC+KQMDA94jgO9SeHg4oqOjcePGjdcuw97eHtraf3W5FhYWcHBw4N7r6OjAzMwMBQUFvPXU7cf09HQAVcfzxIkTvHhq164dAPCOZ137/smTJ7h//77a+FfW9Sqqn2/nz5+Hp6cn+vbtizt37nDtri0OXyWGaqalp6ejW7duvEevXVxcUFJSgnv37iE7OxtlZWW8bRUIBOjSpYvKtn788cfc3xYWFmjUqBFatWrFS1Mer9rOifftQ+3vgKq7ijKZDE2aNAEA9OvXD3/++SeOHj0KoKp/+eOPP9ClSxduHR0dHXTu3Jl7f+PGDbx48QK9e/fm1b1169Za637+/DmvnwOqnmCwt7fH1q1bAQA//fQTmjdvDjc3N16+mnHo7++P0NBQuLi4YOHChWoneHqffdi79iHHHAD4+PjA0NAQjRo1wqpVq/D999+jb9++3PK6+tDLly/D1dUVAoFAZVlhYSFyc3Mxfvx4XrtCQ0NfOR5btmyJI0eO4Pr169ixYwecnJwwfPhwteX8neKL+f96d7/MZZgGRCQSwc7OjpdW87FCIlKZ5ZJqPEKmpaWlklb9URUnJyfk5OTg0KFDOHr0KLy8vODh4YE9e/agsrISlpaWKr85A1Dnv76wtrbGqFGjMGrUKISGhqJNmzbYtGkTQkJC1OZPTEyEn58fduzYAalUyqVXVlaic+fOiImJUVlHOaCsSfmlrbi4mMujo6ODI0eOICkpCQkJCYiIiMD8+fNx/vx5NG7cuNZteVuKioo0tvltc3Nzg0wmw7x58+Dr68tbpq2tXWtMKNX8EqGlpaU2rT7TnSvjtLKyEgMGDEB4eLhKHktLS+5vkUhUZ5nVy1VSd07UR83zrXPnzjA2NkZUVBRCQ0NfKw5rq6uuNiuPT/Xztz7bWv341HW8ajsnWrZs+Urb9KY+1P6uoqICW7duxYMHD3gTh1RUVEAul8PT05PXNk1tVx6TgwcPwtrampdPKBSqrRuo6uvUDfAnTJiAyMhIzJ07FwqFAmPHjlWpv2YcTpgwATKZDAcPHkRCQgLCwsKwcuVK+Pn5cXmKiorQunVrje35kHyoMae0evVqeHh4QCwWq50wrq4+1MDAQOMyZTxGRUXhk08+4S3T0dHRuJ6meHR1dUV8fDyCg4Nhb28PuVwOd3d3ZGdn886b9/kZyfy9sTuLDPM/HTp0wJkzZ3hpSUlJaNOmDdehm5ub8+7oZWVlqVy5E4vFGDZsGKKiorBz507s3bsXRUVFcHJy4r4E2dnZ8V7KAVl9mJqawtLSUuPEGb///ju+/PJLzJs3D0OGDOEtc3JyQlZWFpo2barSBmNjY7XltW7dGmKxWOWumpaWFlxcXBASEoLU1FTo6elh//79MDY2hqWlJc6dO8flLS8vR0pKSr23UUlPT0/jFefr16+jU6dOr1zm61q2bBl+/fVXJCUl8dLNzc3x4MED3hect/m/t9TtR+XdQycnJ6SlpaFFixYqx7O+A0SgKmatrKzUxn/79u3feBu0tLSgra3N3aWuKw7fJIY6dOiApKQk3vFISkqCkZERrK2tYWdnBz09Pd62lpWVITk5+Y23VdM50RA1xP4uLi4OT58+RWpqKu8O1e7du/HLL7/g0aNHMDY2hoWFBS5cuMCtV1FRgdTUVN62CYVC3L17V6VuGxsbjfukU6dOap8eGDlyJO7evYt169YhLS0NY8aMqWXP/sXGxgZTpkzBvn37MHv2bERFRfGWv+8+7P+tIcackkQigZ2d3WvPLP7xxx/j9OnTai8UWlhYwNraGrdu3VJpV20XkjTFY3XOzs5YsWIF7t69yz25AYB7SuOfFF/Mu8MGiwzzP7Nnz8axY8ewePFiZGZmIjo6GpGRkbyJPNzd3REZGYlLly4hOTkZU6ZM4d1tWL16NX7++WfcvHkTmZmZ2L17NyQSCUxMTODh4YFu3bph8ODBOHz4MG7fvo2kpCR89913SE5OVtumzZs34+uvv0ZCQgKys7ORlpaGoKAgpKWlYcCAASr5nz9/jgEDBsDR0RGTJk3CgwcPuBcAjBgxAk2aNMGgQYNw+vRp5OTk4OTJkwgICNA4gYu2tjY8PDx4H/Lnz5/H0qVLkZycjLt372Lfvn0oLCzkvmwHBARg2bJl2L9/P27evImpU6eq/K+tyMhI9OrVq9Zj0qJFC1y9ehUZGRl4+PAh90H87NkzpKSk8O40vGsODg4YMWKEynTkPXv2RGFhIZYvX47s7GysX78ehw4demv1rl+/ntuP06ZNQ3FxMcaNGwcAmDZtGoqKiuDj48PNfJeQkIBx48a98pT8gYGBCA8Px86dO5GRkYG5c+fi8uXLCAgIeOU2l5aWcnGXnp4OPz8/lJSUcDFbnzisTwypM3XqVOTm5sLPzw83b95EbGwsFi5ciFmzZkFbWxsikQhff/01AgMDER8fjxs3bmDixIl49uwZxo8f/8rbqlTXOdHQNMT+Ti6Xo3///pBKpejYsSP3+vLLL2Fubo5t27YBAPz8/BAWFobY2FhkZGQgICAAxcXF3F0rIyMjzJkzBzNnzkR0dDSys7ORmpqK9evX1zqhiEwmw2+//aZy7piammLIkCEIDAyEp6cnN1tqbWbMmIHDhw8jJycHly5dwvHjx3mxcPv2beTl5cHDw6POsv4uGmLMvS3Tp0/HkydP4O3tjeTkZGRlZeGnn37iJm4LDg5GWFgY1q5di8zMTFy7dg0KhQKrVq3SWKZMJkNaWhrv7mJ8fDxWr16NW7duobKyEgUFBVi3bh2aNGmC5s2bc/nOnTsHoVDIe5SfYV7b+/6RJMO8b5omSVFOYqH88T0R0Z49e6hDhw4kEAioefPmvEkUiIjy8vLI09OTRCIRffTRRxQXF8f78f2WLVvI0dGRRCIRicVi6tWrF126dIlb/8mTJ+Tn50dWVlYkEAjIxsaGRowYwZs8prpLly7RyJEjqWXLliQUCsnMzIzc3NzowIEDXJ7qE9wof3Sv7qWUn59Po0ePpiZNmpBQKKRWrVrRxIkTeZPm1BQfH0/W1tbcJBM3btwgmUxG5ubmJBQKqU2bNhQREcHlLysro4CAABKLxWRiYkKzZs2i0aNH847DwoULeZPAqJvgpqCggHr37k2Ghoa8Zdu3b6e2bdtqbO/boC5ubt++TUKhkGp2nRs3biQbGxsSiUQ0evRoWrJkicoENzXL6tGjBwUEBPDSbG1tafXq1UT017Hcvn07ffLJJ6Snp0ft27enY8eO8dbJzMykL774gkxMTMjAwIDatWtHM2bM4CaAUFePOhUVFRQSEkLW1tYkEAhIKpXSoUOHeHnqO8FN9bgzMjIiZ2dn2rNnDy9fXXFYnxjStG2JiYnk7OxMenp6JJFIKCgoiMrKyrjlz58/Jz8/P65uFxcXunDhArdcXd+gbiKp6pMb1XVOvC8fan/34MED0tXVpV27dqndLj8/P3JwcCCiqtiYPn06icViMjU1paCgIBo6dCh5e3tz+SsrK2nt2rXUtm1bEggEZG5uTjKZjE6ePKlx35WXl5O1tTXFx8erLDt27BgBUGlfzYlOlKZPn06tW7cmoVBI5ubmNGrUKHr48CG3fOnSpdzkSB+6DzXmlKBmUp3qqvfLSuqO+5UrV8jT05MaNWpERkZG5OrqypsQKyYmhhwdHUlPT49MTU3Jzc2N9u3bp7FeoqrJ1TZt2sS9T09Pp2HDhpG1tTXp6OiQoaEhubi40Llz53jrTZo0iSZPnlxr2QxTX1pEDXReb4ZhGgwiQteuXTFjxgz4+Pi8Vhm+vr74z3/+ozLF/evo0qULZsyYgeHDh79xWQzDfNgqKyvRvn17eHl5YfHixW9U1oYNGxAbG4vDhw/z0mNiYhAQEID79+9z/+P2dZWWluKjjz7Cjh07VCZ8YZjq4uLiMGfOHFy/fp03QRpQdbfS19eX9z99gaoJddq1a4fk5OT3/ntp5u+JTXDDMEydtLS0sGXLFrUz+r1vBQUF+Oqrr1570MowzIftzp07SEhIQI8ePVBaWorIyEjk5OS8lYtHkyZNQnFxMZ4+fQojIyM8e/YMOTk5CAsLw+TJk994oKhs//z589lAkalTv379kJWVhby8vFp/b1tdTk4ONmzYwAaKzFvD7iwyDPNevM07iwzD/HPl5ubC29sb169fBxGhY8eOWLZsmcq/s3gbgoODsWTJEri5uSE2NhaGhoZvvQ6GYZiGjA0WGYZhGIZhGIZhGBVsNlSGYRiGYRiGYRhGBRssMgzDMAzDMAzDMCrYYJFhGIZhGIZhGIZRwQaLDMMwDMMwDMMwjAo2WGQYhmEYhmEYhmFUsMEiwzAMwzAMwzAMo4INFhmGYRiGYRiGYRgVbLDIMAzDMAzDMAzDqGCDRYZhGIZhGIZhGEbFfwFJCQfLxzGhagAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Import necessary functions\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "\n", "# Sample dataset\n", "data = pd.DataFrame({\n", " 'House Size (sq.ft)': [2000, 2500, 1800, 2200, 2400, 2100, 2300],\n", " 'Number of Bedrooms': [3, 4, 3, 4, 5, 3, 4],\n", " 'House Age (yrs)': [5, 3, 8, 2, 4, 6, 7],\n", " 'House Price ($)': [300000, 400000, 280000, 350000, 380000, 320000, 360000]\n", "})\n", "\n", "# Calculate and visualize correlations\n", "correlation_matrix = data.corr()\n", "plt.figure(figsize=(10, 7))\n", "sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')\n", "plt.title(\"Correlation Matrix\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "0ieAcmDZ2Ifh", "outputId": "699bc058-5df6-4b39-9e78-437da5586681" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "VIF Scores before removing high VIF features:\n", " feature VIF\n", "0 House Size (sq.ft) 92.304602\n", "1 Number of Bedrooms 75.623766\n", "2 House Age (yrs) 5.896487\n", "Initial Model Summary:\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: House Price ($) R-squared: 0.986\n", "Model: OLS Adj. R-squared: 0.972\n", "Method: Least Squares F-statistic: 71.09\n", "Date: Thu, 19 Sep 2024 Prob (F-statistic): 0.00276\n", "Time: 16:34:04 Log-Likelihood: -69.163\n", "No. Observations: 7 AIC: 146.3\n", "Df Residuals: 3 BIC: 146.1\n", "Df Model: 3 \n", "Covariance Type: nonrobust \n", "======================================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "--------------------------------------------------------------------------------------\n", "const -2.854e+04 4.08e+04 -0.700 0.535 -1.58e+05 1.01e+05\n", "House Size (sq.ft) 160.5293 21.984 7.302 0.005 90.566 230.492\n", "Number of Bedrooms 5888.9303 6470.159 0.910 0.430 -1.47e+04 2.65e+04\n", "House Age (yrs) -555.3485 1722.179 -0.322 0.768 -6036.090 4925.393\n", "==============================================================================\n", "Omnibus: nan Durbin-Watson: 1.470\n", "Prob(Omnibus): nan Jarque-Bera (JB): 0.523\n", "Skew: -0.080 Prob(JB): 0.770\n", "Kurtosis: 1.670 Cond. No. 3.29e+04\n", "==============================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "[2] The condition number is large, 3.29e+04. This might indicate that there are\n", "strong multicollinearity or other numerical problems.\n", "\n", "VIF Scores after removing high VIF feature:\n", " feature VIF\n", "0 House Age (yrs) 75.623766\n", "\n", "Reduced Model Summary:\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: House Price ($) R-squared: 0.388\n", "Model: OLS Adj. R-squared: 0.265\n", "Method: Least Squares F-statistic: 3.165\n", "Date: Thu, 19 Sep 2024 Prob (F-statistic): 0.135\n", "Time: 16:34:04 Log-Likelihood: -82.419\n", "No. Observations: 7 AIC: 168.8\n", "Df Residuals: 5 BIC: 168.7\n", "Df Model: 1 \n", "Covariance Type: nonrobust \n", "===================================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "-----------------------------------------------------------------------------------\n", "const 4.039e+05 3.78e+04 10.676 0.000 3.07e+05 5.01e+05\n", "House Age (yrs) -1.25e+04 7025.827 -1.779 0.135 -3.06e+04 5560.463\n", "==============================================================================\n", "Omnibus: nan Durbin-Watson: 2.310\n", "Prob(Omnibus): nan Jarque-Bera (JB): 0.799\n", "Skew: 0.131 Prob(JB): 0.671\n", "Kurtosis: 1.366 Cond. No. 14.9\n", "==============================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "\n", "Initial Model R-squared: 0.9861292620673061, Adjusted R-squared: 0.9722585241346122\n", "Reduced Model R-squared: 0.38765822784810133, Adjusted R-squared: 0.2651898734177216\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/opt/homebrew/Caskroom/miniconda/base/envs/accelai/lib/python3.12/site-packages/statsmodels/stats/stattools.py:74: ValueWarning: omni_normtest is not valid with less than 8 observations; 7 samples were given.\n", " warn(\"omni_normtest is not valid with less than 8 observations; %i \"\n", "/opt/homebrew/Caskroom/miniconda/base/envs/accelai/lib/python3.12/site-packages/statsmodels/stats/stattools.py:74: ValueWarning: omni_normtest is not valid with less than 8 observations; 7 samples were given.\n", " warn(\"omni_normtest is not valid with less than 8 observations; %i \"\n" ] } ], "source": [ "import statsmodels.api as sm\n", "\n", "# Split into features (X) and target (y)\n", "X = data.drop('House Price ($)', axis=1)\n", "y = data['House Price ($)']\n", "\n", "# Add a constant to the features\n", "X_with_const = sm.add_constant(X)\n", "\n", "# Calculate VIF Scores\n", "vif_data = pd.DataFrame()\n", "vif_data[\"feature\"] = X.columns\n", "#vif_data[\"VIF\"] = [variance_inflation_factor(X.values, i+1) for i in range(X.shape[1])]\n", "vif_data[\"VIF\"] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])] # The index should start from 0 for the first column\n", "\n", "print(\"VIF Scores before removing high VIF features:\")\n", "print(vif_data)\n", "\n", "# Initial Linear Regression Model using OLS\n", "model = sm.OLS(y, X_with_const).fit()\n", "\n", "# Model Summary\n", "print(\"Initial Model Summary:\")\n", "print(model.summary())\n", "\n", "# Remove features with high VIF (VIF > 5 is usually considered high)\n", "# Let's assume 'Number of Bedrooms' had a high VIF\n", "X_reduced = X.drop(columns=['Number of Bedrooms','House Size (sq.ft)'])\n", "X_reduced_with_const = sm.add_constant(X_reduced)\n", "\n", "# Recalculate VIF after removing the feature\n", "vif_data_reduced = pd.DataFrame()\n", "vif_data_reduced[\"feature\"] = X_reduced.columns\n", "vif_data_reduced[\"VIF\"] = [variance_inflation_factor(X, i+1) for i in range(X_reduced.shape[1])]\n", "\n", "print(\"\\nVIF Scores after removing high VIF feature:\")\n", "print(vif_data_reduced)\n", "\n", "# Build the reduced model\n", "model_reduced = sm.OLS(y, X_reduced_with_const).fit()\n", "\n", "# Model Summary for reduced model\n", "print(\"\\nReduced Model Summary:\")\n", "print(model_reduced.summary())\n", "\n", "# Compare performance of both models using R-squared and adjusted R-squared\n", "print(f\"\\nInitial Model R-squared: {model.rsquared}, Adjusted R-squared: {model.rsquared_adj}\")\n", "print(f\"Reduced Model R-squared: {model_reduced.rsquared}, Adjusted R-squared: {model_reduced.rsquared_adj}\")" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "id": "A1bFHBK4_HHf" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "VIF Scores after removing high VIF feature:\n", " feature VIF\n", "0 House Size (sq.ft) 75.623766\n", "1 House Age (yrs) 5.896487\n", "\n", "Reduced Model Summary:\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: House Price ($) R-squared: 0.982\n", "Model: OLS Adj. R-squared: 0.973\n", "Method: Least Squares F-statistic: 111.0\n", "Date: Thu, 19 Sep 2024 Prob (F-statistic): 0.000313\n", "Time: 16:45:07 Log-Likelihood: -70.016\n", "No. Observations: 7 AIC: 146.0\n", "Df Residuals: 4 BIC: 145.9\n", "Df Model: 2 \n", "Covariance Type: nonrobust \n", "======================================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "--------------------------------------------------------------------------------------\n", "const -3.743e+04 3.87e+04 -0.966 0.389 -1.45e+05 7.01e+04\n", "House Size (sq.ft) 174.7967 15.079 11.592 0.000 132.931 216.663\n", "House Age (yrs) -638.7921 1682.445 -0.380 0.723 -5310.009 4032.425\n", "==============================================================================\n", "Omnibus: nan Durbin-Watson: 1.294\n", "Prob(Omnibus): nan Jarque-Bera (JB): 0.364\n", "Skew: -0.316 Prob(JB): 0.833\n", "Kurtosis: 2.078 Cond. No. 3.19e+04\n", "==============================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "[2] The condition number is large, 3.19e+04. This might indicate that there are\n", "strong multicollinearity or other numerical problems.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/opt/homebrew/Caskroom/miniconda/base/envs/accelai/lib/python3.12/site-packages/statsmodels/stats/stattools.py:74: ValueWarning: omni_normtest is not valid with less than 8 observations; 7 samples were given.\n", " warn(\"omni_normtest is not valid with less than 8 observations; %i \"\n" ] } ], "source": [ "# Remove features with high VIF, but keep one of the correlated x (VIF > 5 is usually considered high)\n", "# Let's assume 'Number of Bedrooms' had a high VIF\n", "X_reduced_1 = X.drop(columns=['Number of Bedrooms'])\n", "X_reduced_with_const_1 = sm.add_constant(X_reduced_1)\n", "\n", "# Recalculate VIF after removing the feature\n", "vif_data_reduced_1 = pd.DataFrame()\n", "vif_data_reduced_1[\"feature\"] = X_reduced_1.columns\n", "vif_data_reduced_1[\"VIF\"] = [variance_inflation_factor(X, i+1) for i in range(X_reduced_1.shape[1])]\n", "\n", "print(\"\\nVIF Scores after removing high VIF feature:\")\n", "print(vif_data_reduced_1)\n", "\n", "# Build the reduced model\n", "model_reduced_1 = sm.OLS(y, X_reduced_with_const_1).fit()\n", "\n", "# Model Summary for reduced model\n", "print(\"\\nReduced Model Summary:\")\n", "print(model_reduced_1.summary())" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "VIF Scores after removing high VIF feature:\n", " feature VIF\n", "0 Number of Bedrooms 75.623766\n", "1 House Age (yrs) 5.896487\n", "\n", "Reduced Model Summary:\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: House Price ($) R-squared: 0.740\n", "Model: OLS Adj. R-squared: 0.609\n", "Method: Least Squares F-statistic: 5.680\n", "Date: Thu, 19 Sep 2024 Prob (F-statistic): 0.0678\n", "Time: 16:48:45 Log-Likelihood: -79.426\n", "No. Observations: 7 AIC: 164.9\n", "Df Residuals: 4 BIC: 164.7\n", "Df Model: 2 \n", "Covariance Type: nonrobust \n", "======================================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "--------------------------------------------------------------------------------------\n", "const 2.216e+05 8.31e+04 2.666 0.056 -9222.876 4.52e+05\n", "Number of Bedrooms 3.958e+04 1.7e+04 2.325 0.081 -7682.826 8.68e+04\n", "House Age (yrs) -5432.5956 5956.414 -0.912 0.413 -2.2e+04 1.11e+04\n", "==============================================================================\n", "Omnibus: nan Durbin-Watson: 2.121\n", "Prob(Omnibus): nan Jarque-Bera (JB): 0.844\n", "Skew: 0.606 Prob(JB): 0.656\n", "Kurtosis: 1.805 Cond. No. 53.6\n", "==============================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/opt/homebrew/Caskroom/miniconda/base/envs/accelai/lib/python3.12/site-packages/statsmodels/stats/stattools.py:74: ValueWarning: omni_normtest is not valid with less than 8 observations; 7 samples were given.\n", " warn(\"omni_normtest is not valid with less than 8 observations; %i \"\n" ] } ], "source": [ "# Remove features with high VIF, but keep one of the correlated x (VIF > 5 is usually considered high)\n", "# Let's assume 'Number of Bedrooms' had a high VIF\n", "X_reduced_2 = X.drop(columns=['House Size (sq.ft)'])\n", "X_reduced_with_const_2 = sm.add_constant(X_reduced_2)\n", "\n", "# Recalculate VIF after removing the feature\n", "vif_data_reduced_2 = pd.DataFrame()\n", "vif_data_reduced_2[\"feature\"] = X_reduced_2.columns\n", "vif_data_reduced_2[\"VIF\"] = [variance_inflation_factor(X, i+1) for i in range(X_reduced_2.shape[1])]\n", "\n", "print(\"\\nVIF Scores after removing high VIF feature:\")\n", "print(vif_data_reduced_2)\n", "\n", "# Build the reduced model\n", "model_reduced_2 = sm.OLS(y, X_reduced_with_const_2).fit()\n", "\n", "# Model Summary for reduced model\n", "print(\"\\nReduced Model Summary:\")\n", "print(model_reduced_2.summary())" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.12.5" } }, "nbformat": 4, "nbformat_minor": 4 }