{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Support Vector Machines" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from sklearn.svm import SVC" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [], "source": [ "X = np.array([[ 0.46613554, 0.92048757],\n", " [-0.92129195, 0.06723639],\n", " [-0.15836636, 0.00430243],\n", " [-0.24055905, -0.87032292],\n", " [ 0.06245105, -0.53698416],\n", " [-0.2265037 , -0.43835751],\n", " [-0.00480479, -0.17372081],\n", " [-0.1525277 , -0.34399658],\n", " [-0.27360329, 0.35339202],\n", " [-0.77464508, -0.48715511],\n", " [-0.58724291, 0.74419972],\n", " [-0.97596949, -0.72172963],\n", " [ 0.42376225, -0.72655597],\n", " [ 0.96383922, -0.23371331],\n", " [ 0.16264643, -0.46949742],\n", " [-0.74294705, -0.42576417],\n", " [ 0.05089437, -0.20522071],\n", " [-0.19442744, 0.09617478],\n", " [-0.97102743, 0.79663992],\n", " [ 0.0596995 , -0.70129219],\n", " [-0.83934851, -0.95616033],\n", " [-0.38249705, 0.4973605 ],\n", " [ 0.3474666 , 0.70664397],\n", " [ 0.35871444, 0.88679345],\n", " [-0.05914582, 0.23124686],\n", " [-0.52156643, 0.32986941],\n", " [-0.53579646, 0.67530208],\n", " [ 0.13683914, -0.96158184],\n", " [ 0.65904541, -0.12015303],\n", " [-0.69078363, 0.5615536 ],\n", " [ 0.47738323, -0.70919275],\n", " [ 0.93069669, 0.44019132],\n", " [ 0.19750088, -0.68869404],\n", " [-0.75048675, -0.18170522],\n", " [-0.45288395, -0.25894991],\n", " [-0.74644547, 0.87781953],\n", " [ 0.14620452, 0.56864508],\n", " [ 0.25719272, -0.58405476],\n", " [ 0.87149524, 0.01384224],\n", " [-0.71473576, 0.31568314],\n", " [-0.252637 , -0.67418371],\n", " [ 0.24718308, 0.95191416],\n", " [-0.38149953, -0.64066291],\n", " [-0.23112698, 0.04678807],\n", " [ 0.72631766, 0.7390158 ],\n", " [-0.91748062, -0.15131021],\n", " [ 0.74957917, 0.66966866],\n", " [ 0.76771849, 0.06662777],\n", " [-0.04233756, -0.91320835],\n", " [ 0.63840333, 0.06277738],\n", " [-0.78887281, -0.90311183],\n", " [-0.73099834, -0.69587363],\n", " [-0.50947652, -0.99144951],\n", " [ 0.14294609, 0.5474932 ],\n", " [ 0.4367906 , 0.31953258],\n", " [-0.13970851, 0.81817884],\n", " [ 0.6440873 , 0.79118775],\n", " [ 0.41714043, -0.66672029],\n", " [ 0.59283022, -0.71836746],\n", " [ 0.55379696, 0.98846202],\n", " [-0.91819517, 0.34203895],\n", " [ 0.02020188, 0.83696694],\n", " [ 0.6182918 , 0.04254014],\n", " [-0.09354765, -0.30050483],\n", " [-0.08489545, 0.06431463],\n", " [-0.11886358, -0.68738895],\n", " [ 0.44428375, 0.18273761],\n", " [ 0.26486362, -0.98398013],\n", " [ 0.13222452, 0.91495035],\n", " [-0.11101656, 0.00541343],\n", " [-0.07696178, -0.92720555],\n", " [ 0.22602214, 0.56040092],\n", " [ 0.74227542, 0.32930104],\n", " [ 0.43524657, 0.35332933],\n", " [-0.89277607, -0.59996171],\n", " [-0.94836212, 0.78777302],\n", " [ 0.1783319 , -0.2142071 ],\n", " [-0.07832238, -0.25046584],\n", " [ 0.17611799, -0.96927832],\n", " [-0.95938454, -0.26504646],\n", " [ 0.58666766, -0.94620881],\n", " [-0.77336565, 0.46735057],\n", " [-0.94414054, 0.39044333],\n", " [ 0.61524645, 0.15907662],\n", " [-0.09855302, 0.9816656 ],\n", " [ 0.53937097, 0.34487634]])" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [], "source": [ "y = [\"red\" if x + y > 0.3 else \"green\" for [x,y] in X]\n" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhMAAAFkCAYAAACabLnAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xd8jef/x/HXdc6JiBEjKkFIbNFIiara1drUrJHapUar\nWv3RFh3ab2t0UDrUqqJGKVpa1KhR1ErsUTN2UJuI5Nzn+v1xQiNWIufkzvg8H4/zkFz3ep8Tyfmc\n+77u61Jaa4QQQgghHpXF7ABCCCGESN+kmBBCCCFEikgxIYQQQogUkWJCCCGEECkixYQQQgghUkSK\nCSGEEEKkiBQTQgghhEgRKSaEEEIIkSJSTAghhBAiRaSYEEIIIUSKuK2YUErVVEotVEqdVEo5lFLN\nHrL+M/HrJXwYSqn87soohBBCiJRz55mJbMBW4NX475M6CUhJwC/+UQA45/poQgghhHAVm7t2rLVe\nAiwBUEolZ9N/tdaX3RJKCCGEEC6XFvtMbFNKnVJKLVVKVTU7jBBCCCEezG1nJh7BKaAnsAXICnQH\nVimlKmuttyZeWSnlA9QHIoGYVMwphBBCpHdZgUDgD631+ZTuLM0UE1rr/cD+BE1/K6WKA/2ATvfY\npD4wPTWyCSGEEBlUe2BGSneSZoqJ+9gMVLvPskiAH3/8kaCgoFQLlN7169ePUaNGmR0j3ZHXLfnk\nNXs08roln7xmybd37146dOgA8e+lKZXWi4nyOC9/3EsMQFBQEKGhoamXKJ3LlSuXvF6PQF635JPX\n7NHI65Z88pqliEu6CbitmFBKZcd5m+ctxZRS5YHzWuvjSqlhQEGtdef49d8ADgN7+K/PxDNAPXdl\nFEIIIUTKufPMRCXgz/ivNTAy/usfgJdwjiNROMH6HsAXQCEgGtgO1NFar3ZjRiGEEEKkkDvHmVjF\nA2491Vp3TfT9Z8Bn7sojhBBCCPdIi+NMCDcKCwszO0K6JK9b8slr9mjkdUs+ec3Mp7RO6ijXaYtS\nKhQIDw8Pl443QgghRDJERERQsWJFgIpa64iU7k/OTAghhBAiRaSYEEIIIUSKSDEhhBBCiBSRYkII\nIYQQKSLFhBBCCCFSRIoJIYQQQqSIFBNCCCGESBEpJoQQQgiRIlJMCCGEECJFpJgQQgghRIpIMSGE\nEEKIFJFiQgghhBApIsWEEEIIIVJEigkhhBBCpIgUE0IIIYRIESkmhBBCCJEiUkwIIYQQIkWkmBBC\nCCFEikgxIYQQQogUkWJCCCGEECkixYQQQgghUkSKCSGEEEKkiBQTQgghhEgRKSaEEEIIkSJSTAgh\nhBAiRaSYEEIIIUSKSDEhhBBCiBSRYkIIIYQQKSLFhBBCCCFSRIoJIYQQQqSIFBNCCCGESBEpJoQQ\nQgiRIlJMCCGEECJFpJgQQgghRIpIMSGEEEKIFJFiQgghhBApIsWEEEIIIVJEigkhhBBCpIgUE0II\nIYRIEbcVE0qpmkqphUqpk0oph1KqWRK2eUYpFaGUilFKHVBKdXZXPiGEEEK4hjvPTGQDtgKvxn+v\nH7SyUqoo8DuwAngC+BKYqJSq58aMQgghhEghm7t2rLVeAiwBUEolZZNewCGt9YD47/9RSlUH+gFL\n3RJSCCHSiWPHjjFv3jxiYmKoV68eoaGhZkcS4ra01GeiCrA8UdvS+HYhRCq5fv06I0eOpFb16tSq\nXp2RI0dy/fp1s2NlaqNHj6Zo0aIM/L//Y+i771KxYkU6deyIYRhmRxMCSFvFhC9wJlHbGcBbKeVp\nQh4hMp3r16/zTPXqvNO/P3nXrSPvunW8078/tWvWlILCJJs3b+aNN97gNYeDcw4HFwyDScD06dP5\n9ttvzY4nBODGyxyppV+/fuTKleuOtrCwMMLCwkxKJET69d1337Fjxw42ak2F+LYIrXl661bGjRvH\nm2++aWq+zGjy5MkUsdn4wm7HGt/2Es5ryJPGjeO1114zMZ1ID2bOnMnMmTPvaLt8+bJLj5GWioko\nwC9Rmy9wRWt9834bjRo1Sq4dCuEiv86bRxOH43YhARAKNNaaX+bOTdfFRGRkJGPHjmXXzp0UCQig\nR48eVKhQ4eEbmuzs2bOUMIzbhcQtpbVm3dmzpmQS6cu9PmBHRERQsWJFlx0jLV3m+Bt4LlFbXWC9\nCVmEyJS0vvdNV0nqQp2GrV+/nnJlyzLhiy+wLl7M7xMn8mTFikybNs3saA/11FNPsU4pTiZoiwPm\nWa1Uevpps2IJcQd3jjORXSlVXilVPr6pWPz3heOXD1NKTUmwyXfx64xQSpVRSr0CtAZGuSujEOJO\nzVq25DeLhe0J2rYBvylFs5YtzYqVIlprerz0EuVu3uSoYbAAOGy3015revfsyZUrV8yO+EDdunXD\nJ18+alqtjAVmAM9ZLBxQioGDB5sdTwjAvWcmKgER8Q8NjIz/+sP45X5A4Vsra60jgcY4z0Zsw3lL\naDet9TI3ZhRCJNCrVy/KlSvHUxYLrYBWQGWLhZCQEHr27Gl2vEeyb98+dv/zD+86HOSMb7MBnwDX\nb9zgjz/+SNU8drudX3/9lU8//ZS5c+cSGxv7wPV9fHxYvW4dZerW5VWlaA9ElyvH4iVLqFy5cuqE\nFuIh3DnOxCoeUKxorbveo201zku0QggT5MiRg1Vr1zJ27Fh+nTcPgI9btqR3797kyJHDlEw7d+5k\n2NChrF21itx58tDppZfo27cvWbJkSdL2t96ssydqz5ZoeWo4cuQIDerUYf/hw3hbrVwxDAL9/Vm8\nbBllypS573YlSpTg98WLuXr1KrGxseTNmzep4/cIkSrU/a6RpnVKqVAgPDw8XDpgCpFBbdmyhVo1\nauBnt9Pabuc4MFspGjVuzC8LFiTpDdVut1O0cGGejIpiLv99wnkXGGG1cvzECfz8Evf9do8qlSpx\nbts2ZtvthAK7gLZWK5aSJdmxZ48UCCLVJOiAWVFrHZHS/aWlDphCCHGHwQMHUjwujp12O8OB6cBP\nWrPgt99YuXJlkvZhs9kYOWYMC5Qi1GrlbeBZi4VPgHffey/VCondu3ezYcsWvogvJACCga8Mg137\n9rFp06ZUySGEO0gxIdIErTVXr17F4XCYHUWkEYZhsGzFCl42jNuXJABaAP42G0uWLEnyvlq3bs3K\nVasIaNiQn/390dWq8dNPP/H+++8nK9O2bdto2qQJXp6e5M2Vi969e/Pvv/8madszZ5xj8gUlar/1\nfVRUVLKyCJGWSDEhTKW15quvvsK/iD/e3t745PPh3XffJS4uzuxowmRKKbLYbFxN1G4HbgCenskb\nGLdmzZr8unAhh44fZ+WaNbRp0yZZlxV27txJjapVObBkCR/GxtLryhVmT5hArWrVkjQ6aLly5fCw\n2ZiXqH0uzueaHsa8EOJ+pJgQpho2bBh9+/bllM8paAmXSl9i6PChdOvezexowmQWi4UXWrfma6uV\nI/FtGhgBnLfbad26darm+eTjj/GNjWWLYfAWMBT4yzDYd+BAksareOyxx+jVqxfvKcUAYDEwGPg/\ni4XOHTtSpEgR9z4BIdxIiglhmmvXrjF0+FB4Gue56xCgAegGmmlTp3Hw4EGTEwqzDR8xgqwFC1Ja\nKeooRRmbjfeAd999l5CQkFTNsnrFCtoZxh13hZQFqijF6tWrk7SPkaNG8fagQUzIkYNGwFfZsvFa\nv36MmzDBHZGFSDVpaThtkcns3buX61evQ7lEC8oBv8OGDRsoUaKEGdFEGuHv70/Ejh18//33rF27\nlup58jC+Uydq1aqV6lly5sxJ1Pnzd7RpIMpi4XFv7yTtw2az8fHHH/Pee+9x9uxZ8uXLh5eXlxvS\nCpG65MyEME3evHmdX1xKtCD+ex8fn1TNI1xvwYIFNKxXj+DSpWnXtu0j3bGQO3du3nzzTebNm8ek\nSZNMKSQAOnTtynSLhRXx3xs4L7kcsttp3759svbl6elJ4cKFpZAQGYYUE8I0xYsXp0rVKthW2uBc\nfOMVsCy24FvAlzp16piaT6TM8OHDadasGZf//JPa+/ezdd48qlWtysKFC82O9kgGDBhAlerVqQOU\nsdkobLMxEHjnnXeoWbOm2fGEMJUMWiVMdfjwYZ559hmOHz2OR14P7Jfs5PTOyZJFS6hSpYrZ8TK0\n1atX8+nw4ezYupVC/v706tOHzp07u2TgpDNnzlDY359+djsj4tvsQFOl2Ofvz8HISCyW9PdZxjAM\nFi5cyLJly/Dy8qJt27ZUqlTJ7FhCJJurB62SPhPCVMWKFWP/vv3MmzePXbt2ERAQQLt27ciVK5fZ\n0TK0efPm0fqFFwixWOhsGGw7d46uXbuya9cuPv/88xTvf9myZcTZ7byVoM0GvKk1dY8fZ8+ePQQH\nB6f4OKnNarXSvHlzmjdvbnYUIdIUKSYyqatXrzJlyhTWrl1Lnjx56NixI1WrVjUlS9asWXnxxRdN\nOXZm5HA46P/GGzQCfjEMrM5GhgODRo7ktddeIyAgIEXHsFqtACSe9SIu0XKROi5dukRcXBz58uWT\nIbuFW6S/84wixU6dOkVI+RD6vtGXORvnMGH2BKpVq0ZwcDC1atdi0KBBnDx50uyYwk0OHDjAkePH\neU1rEr6lv4ZzELFly1I+UW+DBg3w8vTkA+DWmKbRwDCLhaCSJR84qZVwnf3799Ogbl3y5MlD/vz5\nCQ0JYfny5WbHEhmQFBOZ0NvvvM3xf4+jX9E4ujgwyhoA7D63mzVn1/Dpl59SLqQce/fuNTmpcIdb\nI0cmHlnyWqLlKZEnTx6+HDOGCTg7K7YFitpsbPHwYOyECfLpOBX8+++/1KpWjcMrVzIemAV4795N\no4YN2bBhg9nxRAYjxUQm43A4+OmnnzCeNMAH510Ua4FngVeANmD0MbhivUK/N/uZmlW4R2BgIJUq\nVOBjq5UL8W124B3Ay9OTJk2auOQ4PXr0YP369VR58UXO1qhB29692bZjh2m3dmY2EydO5NKFC6w2\nDF4G2gLLtaaU1owYNszseCKDkT4TmYzD4SAuNg6yxjfsBTyBhN0lsoNRyWDp4qVER0eTLVu2u3ck\n0rXvJk6kTu3aBFy/TjXDYJfNxmnD4Ptx48iTJ4/LjlOlShW5K8ckmzdvprrWFEjQ5gE0Nwx+kDMT\nwsWkmMhkbDYbtZ6pxdptazEqGM4h/FT8IyGr8/p5RpnFU2vNnj17uHDhAiEhIZn+bpHQ0FB27d3L\n+PHj2b59O80LFeLll1/miSeeMDuacJH8+fMTbrVi2O139I3ZpxT5fX1NyyUyJrnMkQkNHzYc63kr\n1vFW52iTMUDCu4xjwbrFSs1napIjRw6TUrrO3r17qVCxAsHBwdSsWRO/An4MGTKE9DrGiqsULFiQ\nIUOGMH/+fL7++mspJDKYl156iaN2O2/i7B8TB0wA5mlNt54977vd1atXGT16NE2ff5527drx66+/\nZvrfFZEEWut0+QBCAR0eHq5F8oWHh+sWLVvovI/l1Tlz5dSAthS3aJ5E23LbtFd2L71582azY6bY\ntWvXtG8BX231tWrC0PRGUw0N6C+//NLseEK41ejRo7XVYtFZLBadw2rVgO7apYu22+33XP/cuXM6\nqGRJbVNK11VKh8Zv81LXrtrhcKRyeuFO4eHhGue56VDtgvdkGQFT4HA4mDZtGpO+n8TZc2epXrU6\n/fv3zxC3702ePJmXur3kvO8xb4IF86Hg+YKcOHZC7iwQGdqJEyeYN28eMTEx1K9f/4FnoN544w2m\nfv016w2DW7/9k4GXgKVLl1K3bt3UiCxSgYyAKVzOYrHQuXNnOnfubHYUl9u3bx8ePh7E5Y27c0Ex\nOLX9FDdu3JAOpiJJoqOjWbrU2Sn5mWeeoWDBgmZHShJ/f3/69u2bpHXnzJxJlwSFBEAXYLjNxs8/\n/yzFhLgv6TMhMrSiRYtiv2CHK4kWHId8+WX6Z5E0v/zyC4X8/GjRogXt27cnoEgRBg4cmOH6EsTF\nxZE9UZsCsgGxsYnHMxXiP1JMiAwtLCwM71zeWOdY4QTOkZnWg4pQvP7a63KJQzzUgQMHaNO6NbWv\nXeMA8C/wvmEwfPhwfvjhB5PTuVaDxo2ZYrNxPkHbKmCb3U7Dhg1NSiXSAykmRIaWK1culi5ZSgFV\nACYCn4NarujZoycDBw68Y92LFy9y7NgxDMMwJ6xIkyZOnIi31szQmhI4x3p7D3heKb4ZPdrkdK71\nwZAh3MiZk8dtNl4HOgD1LRZq16xJixYtzI4n0jApJkSG99RTTxF5OJI///yTn3/+maORRxk7duzt\nyaZOnjzJ802fxyefDwEBAQQWC2TatGkmpxZpxdGjRymn9e1x3m55SmuOHj1qSiZ3KV68OJsjImjR\nvTuLAgLYVbYsA997j2YtWzJo0CAmTZrE9evXzY4p0iDpgCkyBavVSu3ate9qj4mJoeYzNTn27zF0\nQw3ecGL7CTp16oSXlxcvvPCCCWlFWhIcHMxvP//MBf67IUgDf1gsPJ4Op1F/mMDAQMaOHQvApk2b\naFivHleuXCHAZuOI3c77gwaxfNUqgoKCTE4q0hI5MyEytZ9//pnDBw9jf9EOlYDSQGtQJRVDPhpi\ncjqRFnTv3h2PbNmob7XyO7Ae6AisdTgY8M47JqdzH8MwaNOyJaWuXuWo1hyMi+OA1uQ5f54O7dpl\nuM6nImWkmBCZWnh4OB75PSB/gkYFuoxm987d0n9C4Ofnx9IVK7hZqhRNgGrAch8fvv/+exo3bmx2\nPLdZs2YNR0+eZLTDwa2bYIsBww2DiB072L17t5nxRBojlzlEpubn54dxyXAOKZ7wovhZyJM3DxaL\n1NsCKlWqxPbdu9m3bx/R0dGUK1eOLFmymB3LrS5ccM4pG5CoPTD+34sXL6ZmHJHGyV9Kkal16NAB\nK1bUAuWcwMAB7ARLhIVePXvJraPiNqUUQUFBVKxYMcMXEgCVK1fGarHwY6L2aUD2rFllLhdxBykm\nRKZWqFAhZv80m6yRWVGjFJbhFpgLjRs25oMPPjA7nhCm8ff3p1evXrytFL2AqUAn4FNgwDvv4O3t\nbW5AkabIZQ6R6TVv3pxTJ08xb948Ll26RI0aNahUqZLZsYQw3egxYyjk789Xo0Yx7tw5AgoVYszb\nb9OnTx+zo4k0Rib6EkII8UBaa27evImnp6dc+ssgZKIvIYQQqUopRdasiYftEuI/0mdCCJGunDt3\n7vadBkKItEGKCZEuxMTEsGDBAqZNm8aRI0fMjiNMsGbNGipVqED+/Pnx8fHh2Vq12LVr10O327Nn\nD6tWreL8+fMPXVcI8WikmBBp3rJlyyhYqCDNmjWjU6dOFC9enF69esmAUpnItm3bqFenDh47djAD\nmAScWbeOZ2rU4OTJk/fc5vDhw1SpVInHH3+c2rVrU6hAAfr/3//J/xsh3ECKCZGmnT59mqbNmnIp\n7yXoA7wDur5m/ITxjBw50ux4IpV89umneBsGNx0O+uK8TXGwYRB79SrffffdXevHxsZS/7nnOLd1\nK/OBvcCguDhGjRrF0KFDUzm9EBmfFBMiTZs6dSqxRiy6lYZ8OEepfBp0iGbM12PMjidSyZJFizjn\ncOAPvI5zbLH2QHHDYNPGjXetv3DhQg5GRjLPMGgOlAHeB/pozeiRI4mLi0vN+EJkeFJMiDTt6NGj\nWH2s4JVoQUE4deKUKZlE6oqKiuLS5ct8APwKvAusBjoAe4DH8ue/a5t9+/bhY7MRkqj9OeD8pUvS\nf0IIF3NrMaGUelUpFamUuqGU2qCUuu9IQEqpZ5RSjkQPQyl1918KkWkEBwdjP2OHS3e2q0OK0kGl\nzQklUtWqVatwAK8maFPx38cCNWrUuGubYsWKcd5uZ3+i9nVArhw5yJs3713bCCEenduKCaVUW+AL\n4AOgArAd+EMp9dhDNi0J+MU/CgDn3JVRpH0dOnQg32P5sM60Oj+GHgcWgP5HM+idQWbHE6nAy8t5\nWipRPcmtaaaqV69+1zYtWrSgkK8vra1W/gLOAF8DX1os9HzllUwxt4YQqcmdZybeBMZrradorfcB\nvYBo4KWHbPev1vpsgkf6HKJTuIS3tzerV66mfJHyMBuYBLmO5OKrr76iQ4cOZsdLkpiYGL777jsa\nNmxIo0aNmDBhAjdv3jQ7VrpRt25d8nh785ZS3IhvuwB8YLEQXKYMZcuWvWubrFmzsmT5cm4GBlIT\n5yeTvkrRvmNH/ve//6VieiEyB7eMgKmUygKEAp/catNaa6XUcqDKQzbfppTyBHYBQ7TW692RUaQf\nQUFBbNm0hYMHD3LlyhXKli2bbkbji46O5tnnnmXTpk1QFNCwuOdipv44lWV/LEs3z8NM2bJl4/sp\nU2jbujWFgRCHg01KYfPyYumUKfcd3jk4OJg9+/ezfv16zp49S8WKFQkISDyhthDCFdw1nHY+wIrz\n7GJCZ3F2rL6XU0BPYAvOPvvdgVVKqcpa661uyinSkRIlSpgdIdnGjRvHps2b0F01FI5vPArrpqxj\n0qRJvPrqqw/cXjg1b96cXXv2MHHiRI4ePcpbZcvy8ssvU6BAgQduZ7FY7nkZRAjhWmlmbg6t9X64\no7/U30qp4kA/nDPfigzi0KFDTJo0iePHjxMSEkLXrl3Jly+f2bHcYvac2ehSCQoJgACgOMyZO0eK\niWQoWbIkI0aMMDuGEOIe3FVM/AsYgG+idl/gdDL2sxmo9qAV+vXrR65cue5oCwsLIywsLBmHEall\n/vz5tGnbBp3FOW7EjJ9mMGz4MFatXEVISOIb+dI/u2F3nqNLRNs09jh76gcSQmQ6M2fOZObMmXe0\nXb582aXHcEsxobWOVUqFA3WABQBKKQvO27yTM9JQeZyXP+5r1KhRMgV5OnHt2jU6du6IUdJAt9Dg\nAVyDK9Ov0LVbV8I3h5sd0eWaPd+MiP9F4PjX4bz4B3AWLAcsNOvazNRsQojM4V4fsBNMQe4S7ryb\nYyTwslKqk1IqCBiLc+ihyQBKqWFKqSm3VlZKvaGUaqqUKqGUClZKfQk8A3zjxowiFS1evJjrV6+j\n68UXEgA5wKhhELElgkOHDpmazx369OlDiWIlsE6wwnxgHlgmWihTpgw9e/Y0O54Qac5ff/1FqxYt\neLxUKZ5v3Jhly5aZHUkkgduKCa31bKA/8BGwFQgBGmitb40b4cedV5I9cI5LsQNYBZQD6mitV7or\no0hd0dHRzi8Sj2aZzfnP9evXUzVPasidOzcb1m9g8NuDKesoSzDBvD/ofdavXY+3t7fZ8YRIU2bM\nmEGtWrXYv3Ahzx04wOk//qBevXqMHTvW7GjiIVR6HcZBKRUKhIeHh8tljnQiMjKSYsWKoevo/3rC\naGAuPHbuMU4eP4mHh8eDdiGEyKBu3rxJ4QIFePbiRWbg/KSrcQ5QNMPLi1NnzpAzZ05zQ2YgCS5z\nVNRaR6R0fzI3h0g1gYGB9OnTB5aBmqNgLVimWGAXfDr8UykkhMjENm/ezLmLFxnAf29MCngLuHbj\nBqtXrzYvnHgoKSZEqvryyy/55ptvKK1Lk2NjDioXrMyCBQvo0qWL2dGEECayWp23PcUmao9NtFyk\nTXKZQwDOU4zTp09n8eLF2Gw2WrVqRYsWLeQXWAiRKux2O0ULF6bcmTP8ojVZADvO2WGXentzMirq\n9jwtIuVcfZkjzQxaJcxz/fr120M+W4pYUHbFrFmzaNmqJbN/mi0FhRDC7Ww2G99NnEiL5s0pBlS3\n29los3HMMJg+bpwUEmmcXOYQjB49mi0RW+AlcHR1YLxsQBuYN3cec+bMMTueECKTaNy4MRFbt/J8\n9+6cqVGD5zp1YvOWLbRr187saOIh5MyEYPqs6TiCHHfeqFsWLEUszJkzR36RhRCpJjg4WG4FTYfk\nzITgZsxNyHJ3u/bQxMTEpH4gcZdjx47Rp08fipUoRrknyjF8+HBu3Ljx8A2Fqfbs2UOXzp0pXbQo\nVSpVYty4cRiGYXYsIVxOignB842fx7rXClcSNJ4BfURz+vRpwsLCmDNnjvwRNMmRI0eoULEC3035\njiN5j7BL72Lwe4Op16AecXFxZscT97F582aeevJJVs2YQcPISPKHh9O7Vy+6dulCUju+b9u2jaZN\nmuDl6Ukeb2969+7NuXPnHr6hEKlM7uYQnDp1itAnQ/n36r8YjxsQB+wE7KAKKSxYME4YNG3WlLk/\nz8Vmy7hXx+Li4li8eDGRkZE8/vjj1K5dG4vF3Jq7a9euTJs/DaOHAdnjGyOBH5wT+MhlqLTp2Vq1\nuLBuHesN49Ygr0wGXgI2bNhA5cqVH7j9zp07qVK5MkViY+lqGFwCxlmt+BYvzqaICLJnz/7A7V3B\nbrezYsUKzpw5Q8WKFXn88cfdfkyROmTQKuFyBQsWZMumLfTu0hv/KH/yHsvrvCcrDHR3jdHdgHaw\n4NcFzJo1y+y4brNnzx6KlShGs2bN6Ne/H3Xq1KFCxQpERUWZmuu3Rb9hlEtQSAAEgrWQlUWLFpkV\nSzzAjRs3WLlmDb0TFBIAnYB8NluSfm6ffPwxfnFxbDYMBgCfAGsMg30HDjBt2jQ3Jf/P1q1bKVm0\nKA0aNKBz584EBwfTsnnz/4bFFyIBKSYEAP7+/nz11VccjzxOQEAAlAVKJVihDFgCLfz0009uz6K1\nZuLEiQQ9HoRnVk8eL/c4kydPTvKp4UfhcDh4vtnznI49Db3AMcgBXWDPkT107NzRbcdNCpuHzXm2\nKCENyq5k1NA0ymKxYLFYSNzjyA7EOhxJ+rmtXrGCdnb7HTVkWaCqUqxatcp1Ye8hJiaGxvXr43P6\nNFuA68A04I+FC3lrwAC3HlukT1JMiLvE3Iy5Z4dMRxYHN2Lc3+nvo48+4uWXX+Yf/iG2dix7jb28\n9NJLDBs2zG3HXL16NYcPHsZoZDinoFNAINhr21m+dDlHjx5127EfJqxNGNYdVkh4qXwH2M/YeeGF\nF0zLJe7P09OTyk89xRfArfNaGvgMuOJwEBgY+NB9eHt7k/icmAaiLBa3TxL366+/cvrcOWYYBhVx\nzsXXAXjL4WDy99/L2QlxFykmxF2aNGyCdZ8VLidoPAfqkKJxo8ZuPfaFCxcYOmwoVAfdRsPToNtq\nqAL/+/hygqMNAAAgAElEQVR/XL58+eE7eQSnTp1yfuGbaEH892Ze6hg8eDDFA4qjvlOoaQrrROd0\n5u07tKdBgwam5RIP5uXlxVmgONAU57TJ7wE+SrFk8eKHbt++Sxd+tFhYHv+9AYwADtrtdOjQwU2p\nnY4ePYq31XrHyUmASkB0TAznz5936/FF+iPFhLjLm2++ia+PL9bxVlgMLATrJCulSpWie/fubj32\nxo0bib0ZC4n71FaEmBsxbN682S3HrVChgvOLfYkW/ANZPLNQunRptxw3KXx8fNiyaQujvhhFo6BG\ntKzSknnz5jF1ylSUUqblEg924exZ2gFv47xK9QSwFGioNZGHDj10+wEDBlCtRg3qAmVsNgrbbAwE\n3nnnHWrWrOnO6AQHB3PFMPg7UfsSwCdXLnx9E1fdIrPLuN3yxSPz8/Nj88bNDB8+nPkL5mOz2Wj7\nelveeustt08BnCNHDucX14G8CRZcd/7jruOXLVuWJk2bsHjxYowrBvgDB0H9rejzRh9y587tluMm\nVc6cOXn99dd5/fXXTc0hkq5sSAjr//mHiXb77T+0N4GuNhtNypd/6PZeXl4sXbGC3377jaVLl+Ll\n5UXbtm2pVKmSW3MD1K9fn5CyZWm9fz9D7XbKAj8DXwP/GzCALFnucR1UZG5a63T5wPnZVYeHh2uR\ncdjtdl2ocCFtCbRo3kIzBM0AtKWIRQcUDdCGYbjt2NeuXdPdu3fXHlk8NKCz58yuBw4cqOPi4tx2\nTJFxbdq0SdusVt1IKb0S9HLQzymlPT089K5du8yO91AnT57U9evU0Ti7augcXl763XffdevvoEg9\n4eHht362odoF78kyzoRIc9auXUv9hvWJiY3B4mvBEeUgm1c2li5ZSpUqVdx+/CtXrnDmzBkKFSpE\ntmzZHr6BEPexYMEC+r7yCkdPngSgeEAA344fT7169UxOlnTHjx/nzJkzlC5d2u1nJkXqcfU4E1JM\niDQpKiqKH374gYMHD1KyZEm6du1K/vz5zY4lRLIZhsHOnTtRSlGuXDnTB0ETAmQKcpFJ+Pn58c47\n75gdQyTicDjYvn07MTExVKhQgaxZs5odKc2zWq2UT0IfCSHSMymRhRBJ8tdff1GiVAlCQ0OpWrUq\nBQoVYNKkSWbHEkKkAXJmQgjxUEePHqV+g/rczH/TOSa0J1zadInu3btTsGBBGjZsaHZEIYSJ5MyE\nEOKhxo0bR6yOxRHmgGJAIaA5WItY+ezzz8yOJ4QwmRQTQoiH2rdvH45CDvBM0KjACDTYvXe3abmE\nEGmDFBNCiIcKDAzEesZ614RjlpMWigYWNSdUOqK1ZufOnWzcuJGYmMTTfwmR/kkxIYR4qB49ekAM\nqHnKOeHYZWAZOA456Pd6P7PjpWmbNm2iXFAQISEhPP300xQuUIAJEyaYHUsIl5JiQgjxUGXKlGHO\n7DnkisoF3wCjwGOzBx9//DFt27Y1O16adfr0aeo99xzZDxxgCbARaHLpEj169ODXX381O54QLiN3\ncwghkqR58+bUr1+flStXEhMTQ61atfDx8TE7Vpo2adIk7DdusNjhuD3VTCUg0mLhixEjaNasmUuP\nt2/fPkaPHs3WzZspVLgwPXr1on79+i49hhD3IsWEECLJvLy8aNSokdkx0o09e/bwpNZ3zFmngLoO\nByP37HHpsf766y/q161LHsOgrt3Ozm3baPDLLwwbNkwGgBNuJ5c5hBDCTQIDA9mhFNGJ2jcqRWBg\noMuOo7Xmtd69KR8Xx0G7nR+ALYbB28C7gwdzMn5uECHcRYoJIYRwk27dunHdYqGdUuwFzgJDgAVa\n86oLp5M/duwY23fvpr/DgVd8mwIG4RwCfdGiRS47lhD3IsWEEEK4SfHixZk7bx7rc+WiLOALDLXZ\nGDx4MF26dHHZcW5N2KjusUwlWC6Eu0ifCSGEcKMmTZpw/NQpVqxYQXR0NDVr1sTPz8+lxwgICCCk\nbFm+2LePhg4Ht6ZfGw4oi4XGjRu79HhCJCbFhBAZlGEYbNiwgejoaCpXroy3t7fZkTItLy8vmjRp\n4rb9K6X4auxY6tetS0mHg/p2O9utVrYYBh9/9BGFChVy27GFALnMIUSGtGrVKgKKBlC9enXq1auH\nX0E/vvjiC7NjCTeqWbMm4Vu30rBLF7Y/8QSFGjXi999/Z/DgwWZHE5mAnJkQIoM5fvw4jRo34qbv\nTegGZIUbW27Qv39//P39ZZCpDKxs2bKMl9E1hQnkzIS4r3379vH7779z4MABs6OIZJg4cSKxjlgc\nbR1QGHgMaAiWkhY+H/m52fFEOrd//37+/vtvrly5YnYUkYZIMSHu8u+//1Knbh2CgoJo0qQJpUqV\nonGTxly+fNnsaCIJDhw4gC6gud0LL56jsCNZheGZM2fo3r07Obxz4JHFg8ZNGrNt2zYXpxXuYhgG\n48ePp0bVqpQrU4bevXtz6NChR97fwYMHqfrUU5QuXZqqVatS0NeXDz/8UO4UEYBc5hD30LpNa9Zu\nWQsv4PxkewT+WPoHnbp04tf5Mp9AWnT+/HlOnTpFkSJFKFGiBOoXBTe5Y8pwy3ELJUqUSNL+rl69\nSrUa1Yg8HYkRaoAn/LH5D1ZWW8mmjZsIDg52y/MQrqG1pmOHDsyaNYtGShGsNfMPHWLW9On8tX59\nsn9+MTEx1K1dG4/Tp5kLFANmxsQwZMgQvL296ddPJnvL7OTMhLjDrl27WLVyFfYGdggGcgHlwahr\nsOCXBURGRpqcUCR07do1OnXqhK+fLyEhIfj6+XL8+HFs2oblJwucAM4DS8BxwEH/N/snab9Tpkzh\n8KHDGF0MeBaoBkZ3gzivOD755BN3PiWRAoZhMH36dGpUr86sWbMIA2ZozVjgH7ud/NHRDB44MNn7\nnTt3LpEnTvCrYdASKA+MAF4CRn76KQ6Hw6XPQ6Q/UkyIOxw8eND5RUCiBUWc/xw+fDhV84gHaxfW\njhlzZmA8Z0A3uFnlJlN/nEq9uvXIH5MfJgJfQdbtWRkxYgTt2rVL0n7XrFmDKqIgX4LGLGAPsrNi\n1Qq3PBeRMoZh0OaFF+jQoQPq779pCMwBquCsJ3MBPQ2D3xctSvab/969eyns4UFQova6wImoKK5d\nu+aKpyDSMbnMIe5QsmRJ5xdHgccTLDjqvJe9ePHiZsQS97B3715+/+13aAE8Ed9YGBxWB4uXLObY\n0WMcOHCA6OhoqlSpQq5cuZK8b29vbyzXLTi0485hFa8i41WkUb/88gvzfvmF+UDz+H4M+4DKOM8i\nfArEAVarNdn7DggI4KTdznGcVz5v2Qj45M5N9uzZU5hepHduPTOhlHpVKRWplLqhlNqglKr0kPWf\nUUpFKKVilFIHlFKd3ZlP3O3xxx+n9rO1sS22wU7gErANrMutNGvejICAxKcshFl27tzp/KJUogWl\nwB5n59ChQ9SsWZMGDRokq5AA6NChA/ZzdlgLOAANHADLbgtdO3V1QXrhavPnzyfUaqV5grYyQAdg\nHnAa+NZqpXnz5lgsyfvT37ZtW/LkykVrq5UtwAXgG+Brpejdp0+SC5SlS5fyQqtWVH3qKfr06cP+\n/fuTlUOkYVprtzyAtkAM0Bnn/+lxOP8PPnaf9YsC14HPgNLAqzgL6Xr3WT8U0OHh4Vq41rlz53Td\nenU1zrcQDegmTZvoS5cumR1NJLBu3Trnz6cTmiEJHi2cP7PDhw/ftc3hw4d13759dcVKFXWDhg30\n7NmztcPh0Fprff78eT1gwABdOLCw9ivkp8uXL68BbfO2aVs+mwb0s3We1Tdu3EjtpyqSoG3btvpp\ni0VruOPxBuicoLNbLLpg/vz3/H+RFJs2bdIBhQrd/puglNJdu3TRsbGxSdp+2LBhGtAVrFbdEbSf\nzaazZ82q161b90h5RMqEh4ff+lmGale857tiJ/fcsfMM2JgE3yuc3cHevs/6I4AdidpmAovvs74U\nE272zz//6EWLFumDBw+aHUXcg8Ph0GWDy2prPqumG5r30XRAW72tuk7dOnetv337dp0zV05tzWHV\nPIG2Blg1oPv27auvXLmiy5Qto61eVk0lNFWcRUQenzy6V69e+rXXXtO//fabttvtJjxTkRRTp07V\ngF6ToJA4CdpHKV2oYEH9wQcf6KioqBQdIy4uTi9btkzPnDkzWUXJ8ePHtdVi0W+DdsRnuw66ssWi\nQ0NCbhe0IvW4uphwS58JpVSW+Df7292+tdZaKbUcZ3+ge6kCLE/UthQY5Y6M4uFKlSpFqVKJz6GL\ntEIpxYJfFtCwcUMOTPpv/Ijylcrz47Qf71r/zf97k+is0RhdDcgKBgb8DWPGjCFr1qz8888/6J4a\n8jvXt1e1c+W7K3h6evLll1+m1tMSj6ht27ZMGj+e59ato4XWeAM/W63kzJ+fvzdtcsn8HDabjTp1\n6iR7u99//x20ZhD/dcHJBvR3OGi9YwcnTpygcOHCD9iDSOvc1WciH2AFziRqPwvcb7o833usfwbw\nVkp53mN9ITK94sWLs2/PPpYuXcr48eP566+/2LxxM76+vnesFx0dzYrlKzCeNO4czOopsGazMn/+\nfOeFxvwJluUEI8jgt0W/pcZTESmUJUsWFi9dytBPP+VIhQpsLFOG7v36sTE83PSJvnR8h9DEbziW\nRMtF+pXu7+bo16/fXZ3LwsLCCAsLMymREKnLYrFQt27dFO3DZrOhrik0if6o33TOeCnSBy8vL/r3\n70///kkbTyS1NGrUCI3zjpKP4ttigJEWC+XLlpWzEm42c+ZMZs6ceUebq0c0dlcx8S9g4DzbkJAv\nzk7F9xLF3WctfIErWuub9zvQqFGjCA0NfdScQmQK2bJl47k6z7FqyyqMcgnOTmwCI9qga9euvPXW\nW7AL52BlAEfBstdC+/+1Nym1yCiKFCnCB0OG8MEHH7DUaqWcYbDEZuNfi4U/vvkGpdTDdyIe2b0+\nYEdERFCxYkWXHcMtlzm01rFAOHD74ppSygI8B/x9n83+jl+eUF1gvTsyCpHZjBo5imwx2bB+bYX5\nYJ1shT+gb9++vPnmm7Ru0xp+Bus4K9ZJVpgMT1d+mr59+5odXWQA77//PgsWLOCx+vWJKFeOBp07\nsyUigpo1a5odTbiActe1KqVUG2AK0BPYDLyBc7aHMlrrc0qpYUBBrXXn+PUDcX4u+gaYjHMQ39FA\nI631snvsPxQIDw8PlzMTQiTRkSNHGD16NGvXr+WxfI/R7aVutGrVCqUUDoeDhQsXMnfuXOLi4mjc\nuDFt2rQhS5YsZscWQrhYgjMTFbXWESndn9v6TGitZyulHsN5icwP2Ao00Fqfi1/FjwSDqWmtI5VS\njXHevfE6cBzodq9CQgjxaIoWLXrfOzMsFgvNmjWjWbNmqZxKCJHeubUDptb6G5xnGu617K5h9LTW\nq3HeUiqEEEKIdEIm+hJCCCFEikgxIYQQQogUkWJCCCGEECkixYQQQmRwWmsmTpxIhXLl8MmVixpV\nq7JgwQKzY4kMRIoJIYTI4AYOHMjLL79M4O7d9L9yBcvGjTRr1oxJkyaZHU1kEFJMCCFEBnbq1Ck+\n/+wzPgLma81AYJXDQQdg0FtvcfPmfQcYFiLJpJgQ92QYBrNmzeKFF16gefPmjB8/nhs3bpgdSwiR\nTKtXr8ZwOHglQZsCXgHOXrjAzp07TUomMpJ0P9GXcD273U7LVi1ZuGAhlsIWtE2zYOECJkycwMo/\nV5IjRw6zIwohkihbtmwAXAB8ErRfiP83e/bsqR1JZEByZkLcZfbs2SxcsBDCwNHNge6s0d00Edsi\nGD16tNnxRBqmtWbNmjVMmDCBP//8E4fDYXakTK9u3brk8fZmgFLcOrd4HvjAaiWkbFnKlCljZjyR\nQciZCXGX2XNmYwmw4Cid4I2gEDiCHMz4aQaDBw922bG01qxatYpFixZhtVpp2bIlTz31lMv2L1LP\n6dOnafx8Y7aGb73dVqZsGRb/vpjAwEDzgmVy2bJl44dp02jdqhX+WhMMbNEaz+zZWTZ1qszYKVxC\niglxl7jYOLTtHhPAeUDstViXHcdutxP2Yhg/z/kZW24bOGDEiBH06dOHMWPGyB+5dCbsxTB2HNwB\nHYGiwHE4uOAgLVq1IGJLhPw8TdS0aVP27NvHpEmTiIyMpH5wMN26dcPX19fsaCKDkGJC3KVRo0Ys\nXrIYonBOxwZwGax7rTTr7bpJoCZOnMjPP/8MrcAebAcNbIavv/6aevXq8fzzz7vsWMK99u/fz+pV\nq53zAhePbwwAewM726ZvIzw8nCeffPL2+mfPniU6OpoiRYpgscjV1tRQvHhxhg4danYMkUHJb7G4\nS5cuXSgXUg7L9xb4BfgNrOOs+Ob1pX///i47zuQpk1GlFZTD2b3cAlQGayErU6ZOcdlxhPudOHHC\n+UWBRAvivz9+/DgABw4coPZztfH19aVo0aIUK1GMOXPmpOjYcXFxbN26ld27d6P1Pc6oCSHcTooJ\ncZfs2bPz1+q/ePeddyl1sxRFLxalb8++bNm0BT8/v4fvIIkuXryIznn3H38jh8GlS5dcdhzhfkFB\nQVisFtifaMEB5z/lypXj8uXL1KhVg792/AXNgBfhaJajtGnThiVLljzScWfNmoV/EX9CQ0MJDg6m\ndFBp1q1bl6LnIoRIPikmxD15e3vz4Ycf8s+efzh88DAjR46kQIHEHztT5tlnnsX2jw1iEjReAcsR\nCzVr1HTpsYR7FShQgM6dOmP50wJrgOPAerD+YaVFyxaUKFGCKVOmcPbsWYwOBlQASgFtwRJg4eNP\nPk72MVeuXMmLL77I2bxnoSvQHg7dOETd+nWJjIx06fMT5rt27Rpbt27l5MmTZkcR9yDFhDDNgAED\n8FJeWCdZYT3wF1i/t5I/X3569+5tdjyRTGPHjqVn9554rPWASWBbaaNju45MmzoNgIiICKwFrZA7\nwUYWcJRyELE1ItnH++zzz7AUsDj7aQQAJcHR3kGsjuW7775zyXMS5nM4HHzwwQcU9PUlNDQUf39/\nGjdoQFRUlNnRRAJSTAjTFC9enPVr19Pw6YZY/7Ti8ZcHrRu0ZsP6DTz22GNmxxPxoqKiGDt2LF98\n8QU7duy473qenp58++23nD1zlm3btnEm6gyTJ0++PShSwYIF0Rc0xCXa8CyPdPlsx84dGEWNO/+K\neYLhb7Br165k70+kTcOGDeN/H31Er+hoNgDfA9tWrKBh3boyjkkaIndzCFMFBwezcMFCHA4HSql0\ndfvgxo0bmTNnDnFxcTRs2JB69epluDsTJkyYwCuvvoLhMFBWhaO/g44dOzJ58mSsVus9t8mdOze5\nc+e+q71r166M+HQELATqAVmB7aB2Kl4Z8cpd6z9M0cCinD51GgcJ3lAMsJ21EVAnINn7E2lPbGws\noz77jD7Ap/FtlYGSdjs1du1i2bJl1K9f38SE4paM9ZdPJNucOXMIfTIUr+xelA4qzbfffmtKj3iL\nxZJuCgmtNa+//jpPP/00oyeO5tvp39KwYUOeb/o8sbGuG4fDbDt27KBnz57YQ+zo/hrH2w54Hn6c\n/iNff/11svdXsmRJpk2dhud+T/gC1HAFC6Fjh4688cYbyd7fa31ew3HIASuA68BF4Bcwrhj06NEj\n2fsTaU9UVBTnL1+mYaL2akBOq/WBZ8pE6pJiIhMbO3Ysbdq0Yfvl7cRUj+GA7QCvvvqqS2//zIiW\nLFnCmDFjoAHYX7dj72OHdrB4yWK++eYbs+O5zOTJk7F6W6ER4AVYgYqgH9eMHT/2kfb54osvcurk\nKSZNnMSXX3zJzp07mTJlCjZb8k+Stm7dmo8++gjbBht8BoyGbEey8eO0H3niiSceKZ9IW3x8fPDy\n9CQ8UfsB4KphUKRIETNiiXtQ6fW+bKVUKBAeHh5OaGio2XHSnZiYGPwK+nE58DI0xTnOA8BfYFll\n4djRYxQqVMjMiGlW+/bt+WnlTxg9jP9eN0DNUZTzKMf2rdvNC+dCYWFhzN4wG0eXRNelV0Pu7bm5\neP6iOcESOXPmDH/++SdZsmShXr165MyZ0+xIwoV69ezJj5MmMcEwaAnsAXpYrZzMm5fDx46RNWtW\nsyOmSxEREVSsWBGgotY6+T2gE5EzE5nUzp07uXzxMlTkjjdEKoLDcLBmzRqzoqV5ly5fwsh+ZyEB\noHNqLl++bE4oNwgKCkIf15DwKTnAut9KpUqVTMuVmK+vL2FhYbRq1UoKiQzoi5Ejea5hQ17E2c0m\nFDjr68vvf/whhUQaIh0wM6nb04hfT7TgeqLl4i7P1HqGJUuX4LjogDzxjTFg22vj2ZbPmprNFbTW\nDBo0iM8+/wzt0DAZqAF4gQpX6CjNuzPeNTumyCSyZ8/OrwsXsmPHDsLDw/Hz86Nu3bqPdGlMuI9c\n5siktNaElA9h77m9GO0NyAHcBDVXkfvf3Jw6eUqq/vu4ePEiT1R4glMXTmGEGuAB1m1WvGK9CN8c\nTqlSpcyOmCKjR492doishXP8hhVA/DhBJUqX4MsvvqRx48YmJhRCpJRc5hAuoZRi2pRp5LyZE8to\nC7bvbVhHWfE46sGM6TOkkHiAPHnysGH9Bjq26ojXFi881njQuFpj/l73d7ovJAA+H/k5PAHUBooB\nLwOvABZ4vc/rUkgIIe4i54kysfLly3PgnwP88MMP7N69m8DAQLp27So9pJOgYMGCTJ48mcmTJ5sd\nxaUMw+DEsRNQPtGC/ODxmAeHDh0yJZcQIm2TYiKTy5cvn9wKmsns3r2bUaNGsTliM0X8i9C7V28a\nNWoEgNVqxb+IPyciTzh7ut1yBez/2ilZsqQ5oYUQaZpc5hAiE1m1ahWhFUOZMm8KO9jB4q2Lady4\nMUOHDr29zoD/GwA7gD+BC8ARsP5kJXeu3LRv396s6EKINEyKCSEyCa01r/R5BbufHfsrdmgGRncD\nqsN777/HqVOnAHjttdcYNGgQHhs8YAwwBQKzBbJ82XJy5cpl7pMQQqRJUkwIkUlERkayd/deHFUc\n4JFgQXXnzIyLFi0CnJ1zP/nkE06fOs2SJUvYuHEjB/45IHdNCSHuS/pMCJFJ3J77JIl3g/v4+Mgk\nSkKIJJEzE0JkEgEBAZQNLovlb8t/04BrYI2z46Xc8imEeFRSTAiRSSil+O7b7/A464HtaxvMB+sE\nK6yHoZ8MpUCBAmZHFEKkU3KZQ4hMpEaNGmzbuo0xY8awOXwzRZ4uQs+ePalXr57Z0YQQ6ZgUEyJN\nuHHjBsuXLycmJoZatWqRP39+syNlWGXKlOHbb781O4YQIgORyxzCdL/88gsFChWgadOmtGnThkL+\nhRgyZAjpdd4Ys8TFxREdHW12DCFEJiTFhDDV/v37ad2mNVf8rkAfoD/Yn7bz4YcfMn36dLPjpQtR\nUVF06NiB7Dmykz17dp6q/BR//vmn2bGEEJmIFBPCVOPHj4esoFtqyIdz9tLnQJVUjP5qtNnx0rzr\n169TvWZ1Zv06i7gacdAUwqPCqVe/HmvXrjU7nhAik5BiQpjq6NGjGPmNOwdRAnQhzZHII+aESkdm\nzpzJoYOHMDoZUAMIBUdnB+SHDz/60Ox4QohMQooJYaqgoCAsJy0Qk6BRg/WIleCywablSi/Wr1+P\nraANHkvQaAWjrMG69etMy+VuK1asoGmzppQOKk3zFs1ZvXq12ZGEyNSkmBCm0FrjcDjo0aMHnjZP\nLDMscBA4AcwH46jBWwPeMjtmmufj4wNXASPRgouQN29eMyK53YQJE6hTpw6Ltixiv/d+ft/4O7Vr\n12bq1KlmRxMi03JLMaGUyquUmq6UuqyUuqiUmqiUyv6QbX5QSjkSPRa5I58wz6VLl+jTpw/eub2x\n2WyEvRjGZyM+o1jWYvAjMBHynMzDpEmTbk+LLe6vY8eO2K/YYSkQi3NEy3/AssNCt67dTE7neteu\nXaPf//WDCmC8bEAjsL9sRwdrXn/jdWJiYh6+EyGEy7lrnInpgC9QB8gCTAbGAw+av1gDi4GuCdpu\nuimfMEFcXBy1n6vNzr07MSoakBPW71zP36//zYrlK8iTJw83btygfPnyeHp6mh03XQgJCWHMmDG8\n8cYbqO0KlUVhv2LnufrPMXDgQLPjudzatWu5fvU6VAPipxrBAlSFS+MusWHDBp555hnzAgqRSbm8\nmFBKBQH1gSe11hHxba8Bi5RS/6e1jrrfpkCs1vqsqzOJtGH+/Plsi9gG3QF/Z9v/t3ff4VFV+R/H\n32dmUgADKChVVEoo67K0wNI7KizY1gCrICCuKIKiLu7PviKWlVVAWYggUgTEyloAKUpRsVAUEEMT\nFCH0EjrJnfP74w4SYjBlZjIJ+byeJ09m7tzyvSdnJt8599xz/I38eF7z8NgTj7H4U133zotBgwbR\npUsXZs6cyZEjR2jXrh3t2rU7M7HXecTr9boPMl/W8Wd6XUTyVThaJpoCB08nEgELcd/uTYD/nWM7\nC7QxxuwCDgCfAI9Ya/eHIUaJgCVLlhB1SRRpldPOLPSC/0o/n83/DGvtefkPMD9UrVr1vGyJyKxl\ny5aUvrA0BxcfhBsBL+CAWWIoW64sf/7znyMdokiRFI4+E+WBs1oXrLXpwP7Aa+cyF+gFtAMeBFoD\nc4wx6iR6nihVqhT2qIX0TC+kQlzJOCUSkq3Y2FheSXoFz3oPvjE+eAt8L/vwbPYwPmk8UVFR2e9E\nREIuxy0Txphngey619fOayDW2pkZnn5vjFkNbAba4LZSZGnIkCGUKlXqrGU9e/akZ8+eeQ1FwuSW\nW27hmWeegQW4vWl8wE/gXeml74C+2Wwt55Pdu3czYsQIZn0wC6/XS/e/ds/yvZyVm266ierVqzNm\nzBg2bNpA7ea1GThwIHXr1s2HyEUKnxkzZjBjxoyzlh06dCikxzA5nf/AGFMWyO5esy24rQsjrLW/\nrmuM8QHHgb9aa891mSOrY+4GHrbWjs/itQbAihUrVtCgQYOc7lIi7HRnQU8xD54SHtL2pJHQOIEF\n8+bLC/AAAB9FSURBVBdQsmTJSIcn+WDPnj00atyI7bu249R2wAHPDx7q1KrDss+XccEFF0Q6RJHz\n3sqVK2nYsCFAw0zdEvIkxy0T1tq9wN7s1jPGLANKG2MaZAiwHe4lla9yejxjTGWgDJCS022k4Bs8\neDBXXXUV06dP59ChQ7Ru3ZquXbvi82kC26LihRdeYPvO7Th3OHChu8zf1M/3479n4sSJDB48OLIB\nikiuhfwT3Fr7gzFmLjDeGDMA99bQl4EZGe/kMMYkA/+01s4KjEHxBPA2sAuoBvwb2Ah8HOoYJbJq\n1qzJv/6loZ6Lqvc/eh+n1plEAoDyYKtaPvjwAyUTIoVQuDo33gwk497F8RGwBPh7pnXigdPt2g7w\nR+B9YD0wAfgGaGmtTUNEzhtRvqjfdsIFPOkeoqOi8z8gEQlaWJIJa+0Ba+3N1tqS1trS1tr+1tpj\nmdbxWGunBB6fsNZeba0tZ62NsdZeYa0dYK3dE474RCRyut/UHc96jzt0+mmbwL/Fz0033RTWY+/Z\ns4cBAwYQVyqOqOgorrr6KpYvXx7WY4oUBbpQLTm2Z88eFi1aRGxsLO3bt6d48eKRDkkKocGDB/Pu\ne++yYuIKuByMY/D/5KfT1Z24+ebfGyQ3OMeOHaNl65Zs+nkTTgMHisHC7xayuOVivlz2JfXq1Qvb\nsUXOdxrDQbJlrWXYsGFUrFSRxMREunXrRoVKFXj33XcjHZoUQiVKlGDJ4iWM/e9YOtfuTNf6XZky\nZQofvv9hWMeJmDZtGhvWb8C51YH2QDNwbnNIj0tn2LBhYTuuSFGglgnJ1htvvMFjjz0GLXDHMD0J\nhz85TGL3RNauWUutWrUiHaIUMsWKFeOOO+7gjjvuyLdjLl68GE8lD84lGcbijgLnDw6fLDrnUDYi\nkgNqmZBsjRw9Ek91jzvQVBxQFuwNFlPM8Morr0Q6PJEcKVWqFOao+XUej1+lQslSGuNEJBhKJiRb\nW7ZuwV8x0yewD5xyDlu3bo1ITIXRzp072bJlC35/5v9mkh9uueUW0venu/eWnW6c2AyeNR769tYI\nrCLBUDIh2bqyzpV4t3jdqdhOOwGe7R7q1KkTsbgKi+TkZFq1aUWFChWoWrUqVatX5Z133ol0WEVO\n06ZN3ct1i8A30kfUmCiYCi2at2Do0OxmChCR35Pj4bQLGg2nnX/mzp3LNddc444EEugz4VnsIWZf\nDMnrkqlSpUqkQyyw9u/fT83aNTlgD+C0cO8gYDmYjYZ58+bRoUOHSIdY5KxatYqZM2dy7NgxOnTo\nQJcuXTR1uRQ5ERtOW4quq6++mtdee437HriPAxMOAHBFjSuY/PFkJRLZmDhxIvv378c/2H9miLbq\n4HnNw/CnhyuZiID69etTv379sB5jw4YNzJ07l6ioKK699loqVqwY1uOJRJqSCcmRPn360LNnT777\n7jtiYmKoW7eupgzPgVWrVmEqmzOJBIAHnBoOK1fm7cuAtZbZs2czc+ZMTpw4QadO7vgMxYoVC03Q\nkmfWWoYMGcKoUaMwPgMWBg0exIjnR3DvvfdGOjyRsFEyITkWExND48aNIx1GoVKhQgXMPuMOH53h\n3WZ2GypUqJDr/Vlr6devH5MmTcJX3oc/xs9bb7/Fy/99mSWLlgQ18+q+ffv44osvKFGiBC1btgzr\nmA/h4jgO69evJzY2lqpVq+b78adOncqoUaOgE9gECw44ixyGDBlCQkICzZs3z/eYRPKDOmBKgbJ1\n61bGjh1LUlIS27dvj3Q4QevXrx/+o374ADiKm1R8DfZ7y10D7sr1/ubMmcOkSZPgWki/Ix1/Xz/c\nDmvXreW5557LU4zWWp588kkqVKxAt27daN++PZWrVGbhwoV52l+kvPnmm1S5vAp/+MMfqFatGvUb\n1s9z609ejXtlHJ4aHmgGRAGxQCfwXexjwoQJ+RqLSH5SMiEFgrWWRx55hKpVqzJw0EDuvOtOqlxW\nheeffz7SoQWlTp06TJo0iejkaBgB5hkDs+G2frcxcODAXO/vzTffxFfeB/WA01eZKoJzpcO0N6bl\nKcYpU6bw+OOPk9Y4De4F/g57S+zlL13/wrZt2/K0z+zMmTOH9h3bU7FyRVq3bc2sWbOC2t/ChQvp\n0aMHO+J2QG8gEdbsXEPb9m1JSUkJTdA5sGPHDvxlM93664H0i9KzjOPUqVOkpqZSWDvCi5ymZEIK\nhPfee4/hw4djW1vsgxY71OJv4mfo0KF88knhHp2wV69e7Ni+g4mvTmT0yNGsW7eOCRMm5OkOghMn\nTuCP9p9JJE6LcV/LixdGvoCpZdxByUoDFcGf6CfNpoXl2/SECRPo3Lkzi9cvJuWKFD7b+hnXX389\nL774Yp73+ey/n8VTyQM3AVWBOuDc4nDk+BHGjx8fstiz0yShCb5NvrNnRT0G3p+9NGrU6NdFBw8e\npH///pQsVZJSpUpRs3ZN3nrrrTwf98CBA+zYsUNJiUSMkoki6NixY4wePZq27dvStn1bRo8ezbFj\nx7LfMIzGJo3Fe5kX2gDRuM3DHcFb3ktSUlJEYwuFMmXK0LdvX+6++25q166d5/1cddVV+Lf5IeMV\noGPg+95Hl6u75GmfP27+EVs50z+hGKA8/Pjjj3mONSvHjx/n/n/cD/XA6edAB/Df6ofG8NDDD3Ho\n0KE87ffb777Fqeac/YlWHGxly+rVq0MTfA784x//gINgXjewDvgOPJM9lIguwYABAwC3X0fHTh2Z\nNGMSJ5uehBtgk91EYmIib7/9dq6Ot2XLFq7pfA1lypShUqVKxNeKD7qVRyQvlEwUMceOHaNN2zbc\ne9+9LP5lMYt/Wcy9991Lm7ZtIppQbN++Hedi5+yFBpyyDtt3FP6+E6HSs2dPGjRogGeyB94H5oEv\nyUecN46HH344T/uMrxmP56dMHwXHgRSIj48POuaMvvnmG1IPprrjlZxuXTHAn+HE8RMsXbo0T/u9\ntPKlmF2ZmmvSwbvHS+XKlYMJOVcaNWrEnNlzqJBeAd4E3gP/bj9en5dVq1YB7rgty79ZjpPoQGug\nLtieFlPD8PCjD+e4dSE1NZUWrVow/6v52C4WEmGzfzM33HAD8+fPD99JimRByUQRk5SUxPIVy7H9\nLPZvgZ9+luUrlke0BSChUQK+zZmah0+C7ycfjRo2Oud2RU1sbCyLPl3EQ0Mf4vJDl1P+p/Lc+tdb\nWf7N8jzfvTD0gaH4N/rhI2AXsAU8b3iIjY6lf//+IY0/OjrafZCW6YVTmV7PpbvvuhubbGEpcBJI\nBd4H/xF/yM8hO1FRUez4ZQfUAnoBt8HBMge54cYbWLNmDcuWLcNXygeXZ9jIgL3SsiF5A0eOHMnR\ncaZOnUpKSgpOLwcaAXXA/s1iKhuGDdcsqJK/lEwUMW+/8za2hoVKGRZWAlvD8s67kRvi+f777scc\nNXimetzm4bXgmeIh2kYzaNCgiMVVEMXFxTFs2DC2bNpCyi8pTJgwIajbILt3784LL7xAieQSMBaY\nDFW8VZg3d16ebl/9PQkJCVS6tBKeRZ5fEwjSwSwyXFjmQlq3bp2n/fbt25f7778f86mBZ4AXoNim\nYkyZMoUrr7wyZPHnxIsjX8Rb3guJQDWgMthECyVgzJgxlC1bFv8xv9v6k9EBiImNITY2NkfHWb58\nOd6KXrgww0IP+Gv5Wb58eYjORiRnlEwUMdbarP/qhohOQFW3bl3mfTyPWnG13Obht+FP5f/EJws+\noVq1ahGLq6gYMmQIO3fs5NNPP+Xrr79m88bNNGvWLOTH8Xq9TJo4Cd92H95RXpgGvtE+vJu9vPbq\na8TExORpv8YYRowYwZYft/Dqq68yffp0UnakcPPNN4f4DLL3Q/IPOFUy9d/wQXqldNYlr6NHjx54\njRfzoXETCgtsAe9XXnr36p3j8T3KlSsHBzi7NQ9gD1xS7pLQnIxIDmnQqiLmumuv46tHvsK/yw/l\nAgt3gWejh+ufvj6isbVp04a1q9fyyy+/4PF4qFSpUvYbSchccMEFtGnTJuzH6dChA9+v/Z6kpCSS\nk5Op1rkaAwYMoFatWkHv+7LLLqNfv34hiDLvalSvweZVm3Gsc6ZfiAO+FB/xf46nfPnyTJ82nb/d\n/DecFxw8xTykp6bTsEnDXN0K3adPH3f9D4FOuJ1m14BZY7hz+J1hODORc9NEX0XM4cOHadaiGet+\nWIc/3m2J8GzwUKd2Hb747Avi4uIiHKFI4bZgwQI6duwIDXAHr3LALDGYZMPyb5b/Oi/Irl27eOON\nN9i7dy/NmjXjqquuwuPJXWPx5MmTuf3vt5PupGO8Bv8pP927d2fq1KmFcgRTyT+hnuhLyUQRlJqa\nypgxY3jnPbePxI3X38jAgQODGopZRM5ISkrivgfu49gR9w6pUheW4pVxr5CYmBjyY+3evZt3332X\nI0eO0K5dO30eSo4omQhQMiEiBdmRI0dYunQpXq+XVq1a5bhjpUh+0BTkIiKFwAUXXMA111wT6TBE\n8oXu5hAREZGgKJkQERGRoCiZEBERkaAomRAREZGgKJkQERGRoOhuDpFCLCUlhTlz5mCMoXPnzu4Q\nyyIi+UzJhEgh9cwzz/DoY4/ipLtTt/uifDz7zLPcf//9EY5MRIoaJRMihdDs2bN56KGHoDnQErCQ\nviSdBx54gHr16tG+fftIhygiRYj6TEi+chwHx3EiHUahN3bcWLyVvdARiAWKAZ3AW8HL2LFjIxyd\niBQ1SiYkXyQnJ9Pt2m5Ex0QTHRNNt2u7kZycHOmwCq2ftv2Ec0mmpMyAc4nDz7/8HJmgRKTIUjIh\nYbdt2zaaNW/G7M9n42/vx9/ez+zPZ9OseTO2bdsW6fAKpUb1G+Hb4oP0DAvTwLfFR8P6DcN+/Hnz\n5tGseTOio6MpV6Ecjz76KCdOnAj7cUWkYFKfCQm7UaNGkXoyFWegA8XdZU49h9SXUxk1ahQjRoyI\nbICF0JAhQ3h92uuY1w22qQULnmUevKe83HPPPSE91p49e5g+fTopKSk0bNgQn8/HjTfeiLnU4G/v\nZ/e+3Tz93NMsX7Gc2R/NxhgT0uOLSMGnZELCbtGSRTjVziQSABQHp7rDoiWLIhVWofbHP/6RuXPm\ncufAO9kwYwMA8XXiGTd3HLVq1QrZcebMmcMNN97AqbRTeEt6SXsujejYaGwVi73V/tq26a/qZ+7M\nuSxdupRWrVqF7PgiUjgomZCwu/DCC/Fs9ODHf9ZyT6qHMjXLRCiqwq9du3Ykr0tm8+bNGGOoWrVq\nSFsFUlNTuan7TZy89CT2Oou/uB9S4NTrpyCNsy+S1gJvCS+LFi1SMpGP1q9fz/Tp00lNTaVVq1Z0\n7doVn08f65L/VOskZDZt2sTMmTM5fPgwbdu2pWPHjng8Hvre2pcFNy+A5UCDwMorwb/VT5+n+0Qw\n4sLPGEP16tXDsu9Zs2Zx9PBR6M+ZVqUKQBtgNnAsw/KTYE9ZSpYsGZZY5Ldeeukl7rnnHjzFPHhK\neBg5ciQJjRNYMH+B/g6S79QBU0LipZdeIj4+nseHP85/kv7D1VdfTfuO7Tl+/Dg9evTgtttugw/B\nN9KHb6QPPoT+/fvTo0ePSIcu57B//348UR6Iy/RCacACOwLP04CPwVhDYmJiyOOw1jJu3Dhq1KyB\nL8pHzdo1mTBhAtZaAA4dOsR3333Hnj17Qn7sgio5OZl77rkH29jiDHFIG5gGfWHl6pU89thjkQ5P\niiC1TEjQ1q5dy+DBg6EJOB0ct1ZtgiVvLWH48OE89dRTjB8/nttvv51Zs2YBcN1119G4cWN11ivA\nmjVrhj/NDz8Af8jwwmrwRnlxXnfwVfBhD1nsCcv4CeOpWLFiyON49NFHGT58OOZKg+1o2fjzRm6/\n/Xa2b9/OgQMHGJc0jpMnTuLxekhMTGTc2HGUKlUq5HEUJNOmTcNT3IPT0TnzKX4ZOA0dJk2exMiR\nIyManxQ9YUkmjDEPA12AesBJa+2FOdzuSdxG1dLA58Cd1tpN4YhRQmfKlCn44nykd0oHb2BhDfD/\nyc+rr73KU089hTGGJk2a0KRJk4jGKjmXkJBA5y6dmfu/ufh3+OESIBn4AUaPGU3x4sX58ssvufji\ni+nduzc1atQIeQx79+7luX8/B63AtnNbImwTC6Vg2LBh+PFjW1qoBv4dft6a9Rb79u9j3tx5v7vf\nb7/9lokTJ7Jz504aNWrEbbfdRpkyhaf/zsGDBzElzG8/wePgcOphrLVK1CVfhesyRxQwE/hvTjcw\nxjwIDALuAJoAR4GPjTExYYlQQmb//v1QkjOJxGml4eCBg5EIKSiO4/Dyyy9Tt15dylUsx3XXX8fX\nX38d6bDynTGGt996myGDhhC3Ng7eg2rp1ZgyZQp33XUXffr0Ydy4cQwbNiwsiQTAV199RXpaOtTP\n9EJtcPwOtrV1+3Bcitsy1sVh/sfzWb169Tn3mZSURIMGDRg7dSzvLH+H/3vk/6hVpxbr168PyzmE\nQ8uWLUnfnQ4Zh2lxwLPWQ/OWzZVISL4LSzJhrX3CWjsKWJuT9Y1b8+8FhllrP7DWrgF6AxWB68IR\no4RO8+bNSd+RDrsyLHTAu85Ls+bNIhZXXvXr149BgwexJm0Nu6vv5sNlH9K8RXMWLlwY6dDyXbFi\nxRgxYgQH9x/k6NGjbFy/kV69euXb8ePiAh02jmR6IQW330bmHCbw/FzJREpKCncPuhvb0JI+KB3/\nrX78g/0c8B/grrvvCmHk4XX99ddTr0E9vNO9sAD4GjyTPJidhmH/Ghbp8KQIKigdMK8AyuG+LQCw\n1qYCXwFNIxWU5EyPHj2IrxmPd6oXlgArwDPZA7vgiceeiHR4ubJy5UqmTJkCfwESgfbg/N3BX9HP\nfQ/c92unv6LG4/FQvHjxfP/G27x5cypdWgnPAo/bVglwBMzKQBwpmTYIPL/00kuz3N+sWbNw/A60\n50xLWhw4zRw+WfCJ28pWCERFRfHpwk8Z0G8AJb4rgZljaHpZUxbMX0Dr1q0jHZ4UQQUlmSgf+L0r\n0/JdGV6TAqpYsWIsXbyUXn/tRfTn0fABJFRMYP68+bRs2TLS4eXK/Pnz8cZ63d4+p3nB39DP6m9X\ns2/fvojFVhR5vV5mzphJsf3F8Iz0EDU+Cs9ID3En4mjRsgXeT7ywAfAD28D7kZf4WvHnrHfHjx/H\neA1EZ3oh1v1VmIYEL126NC+//DKHDx0mPT2dz5Z+Rps2bSIdlhRROe6AaYx5FhiazWq1rLUbggvp\n7MNCppGOpEC65JJLeO2115gwYQLp6enExBTOri4xMTFYx7pzXmTsA3LK7UMQHZ35v5CEW/Pmzflx\n049MnjyZzZs3Ex8fT+/evQHo2q0rX07/8td1L69xOR++/yEeT9bfkzp27Ij/fj+sAhoFFjpgVhji\na8dToUKFMJ9N6Blj1EdCIs7ktNnWGFMWuCib1bZYa9MybNMHeDG7uzmMMVWBTUA9a+3qDMsXAyut\ntUOy2KYBsKJVq1a/uQ2sZ8+e9OzZM5tQRX7r559/5oorrsDf2A+dcNvuUsE7xUuHRh2YO2dupEOU\nDKy1fPnll3z//fdcdtlltGvXDq83c0/gs/Xt25dJkydh6hhsWYt3oxe7y/LB+x/QuXPnfIpcJP/M\nmDGDGTNmnLXs0KFDLFmyBKChtXZlsMfIcTKRp53nPJkwwHZghLX2hcCykriXOW611r6ZxTYNgBUr\nVqygQYMGmV8WybORI0cyZMgQfBf5cEo7mG2GMheV4fOln4ftrgXJP47jMHbsWMa+MpadO3fSJKEJ\nD/3fQ7Ro0SLSoYnkm5UrV9KwYUMoyMmEMaYKbitGN+ABoCXuJYuN1tqjgXWSgX9aa2cFng8F/gnc\nCmwFhgFXAnWstaeyOIaSCQmbr7/+mokTJ7Jnzx4SEhLo378/ZcuWjXRYIiIhEepkIlwjYD6Je2sn\nuDdwrQr8bovb3x8gHnd0Ancla/9tjCkBvII7aNVS4OqsEgmRcGvcuDGNGzeOdBgiIoVCWJIJa20f\noE826/ymh5S19nHg8XDEJCIiIuFRUG4NFRERkUJKyYSIiIgERcmEiIiIBEXJhIiIiARFyYSIiIgE\nRcmEiIiIBEXJhIiIiARFyYSIiIgERcmEiIiIBEXJhIiIiARFyYSIiIgERcmEiIiIBEXJhIiIiARF\nyYSIiIgERcmEiIiIBEXJhIiIiARFyYSIiIgERcmEiIiIBEXJhIiIiARFyYSIiIgERcmEiIiIBEXJ\nhIiIiARFyYSIiIgERcmEiIiIBEXJhIiIiARFyYSIiIgERcmEiIiIBEXJhIiIiARFyYSIiIgERcmE\niIiIBEXJhIiIiARFyYSIiIgERcmEiIiIBEXJhIiIiARFyYSIiIgERcmEiIiIBEXJhIiIiARFyYSI\niIgERcmEiIiIBEXJhIiIiARFyUQRM2PGjEiHUCip3HJPZZY3KrfcU5lFXliSCWPMw8aYL4wxx4wx\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(X[:,0], X[:,1], c=y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercise\n", "\n", "- import the support vector machine classifier from scikit-learn (the SVC class) and train a classifier for the examples above using a linear kernel;\n", "- read the documentation to find out how to obtain the support vectors and the associated (dual) weights; use this information to analyze the learnt model: \n", " - how many support vectors have been learnt? \n", " - are them in the position you would have expected [[1](#note1)]? \n", " - is there any margin error?\n", " - is there any classification error (check it using the classifier predictions)?\n", "- learn a new SVC model using custom C values:\n", " - how the answers to the questions above change when you use a very high C value (e.g., 1000)?\n", " - how the answers to the questions above change when you use a very low C value (e.g., 0.3)?\n", "- learn a new SVC model using a rbf kernel:\n", " - is the new kernel able to capture the linear model?\n", " - are you surprised by the above answer? Regarless to whether you are surprised or not: why?\n", " \n", "[1] If you make two plots one after the other (in the same cell), the plots will be merged into a single one. You may want to use this feature to plot the support vectors on top of the scatter plot for the dataset." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "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.7.5" } }, "nbformat": 4, "nbformat_minor": 1 }