{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Gaussian Process Classification with GPy\n",
    "\n",
    "In this notebook, we want to show how to apply a simple GPy classifier and craft adversarial examples on it.\n",
    "Let us start by importing all things we might use to train a model and visualize it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from art.attacks.evasion import HighConfidenceLowUncertainty, ProjectedGradientDescent\n",
    "from art.estimators.classification import GPyGaussianProcessClassifier\n",
    "\n",
    "import GPy\n",
    "from sklearn.datasets import  make_moons\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.cm as cm"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Training a classifier\n",
    "We will first train a classifier. The classifier is limited to binary classification problems and scales quadratically with the data, so we use a very simple and basic data set here.\n",
    "\n",
    "Once the code runs, we see a summary of the model and a visualization of the classifier. The shade of the samples is directly related to the confidence of the GP in its classification."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "2bb285d28dc24d5aac5fdad62f5620bc",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(VBox(children=(IntProgress(value=0, max=1000), HTML(value=''))), Box(children=(HTML(value=''),)…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(6)\n",
    "X, y = make_moons(n_samples=100, noise=0.1)\n",
    "#getting a kernel for GPy. Gradients work for any kernel.\n",
    "gpkern = GPy.kern.RBF(np.shape(X)[1])\n",
    "#get the model\n",
    "m = GPy.models.GPClassification(X, y.reshape(-1,1), kernel=gpkern)\n",
    "m.rbf.lengthscale.fix(0.4)\n",
    "#determining the inference method\n",
    "m.inference_method = GPy.inference.latent_function_inference.laplace.Laplace()\n",
    "#now train the model\n",
    "m.optimize(messages=True, optimizer='lbfgs')\n",
    "#apply ART to the model\n",
    "m_art = GPyGaussianProcessClassifier(m)\n",
    "#getting additional test data\n",
    "Xt, Yt = make_moons(n_samples=10, noise=0.1)\n",
    "plt.scatter(X[:,0],X[:,1],c=cm.hot(m_art.predict(X)[:,0].reshape(-1)))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Targeting a classifier\n",
    "We will now craft attacks on this classifier. One are the adversarial examples introduced by Grosse et al. (https://arxiv.org/abs/1812.02606) which are specifically targeting Gaussian Process classifiers. We then apply one of the other attacks of ART, PGD by Madry et al. (https://arxiv.org/abs/1706.06083), as an example. \n",
    "\n",
    "### Confidence optimized adversarial examples\n",
    "We craft adversarial examples which are optimized for confidence. We plot the initial seeds for the adversarial examples in green and the resulting adversarial examples in black, and connect the initial and final points using a straight line (which is not equivalent to the path the optimization took).\n",
    "\n",
    "We observe that some examples are not moving towards the other class, but instead seem to move randomly away from the data. This stems from the problem that the Gaussian Processes' gradients point away from the data in all directions, and might lead the attack far away from the actual boundary."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "HCLU: 100%|██████████| 10/10 [00:01<00:00,  6.51it/s]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# get attack\n",
    "attack = HighConfidenceLowUncertainty(m_art,conf=0.75,min_val=-1.0,max_val=2.0)\n",
    "# generate examples and plot them\n",
    "adv = attack.generate(Xt)\n",
    "plt.scatter(X[:,0],X[:,1],c=cm.hot(m_art.predict(X)[:,0].reshape(-1)))\n",
    "for i in range(np.shape(Xt)[0]):\n",
    "    plt.scatter(Xt[:,0],Xt[:,1],c='green')\n",
    "    plt.scatter(adv[:,0],adv[:,1],c='k')\n",
    "    plt.arrow(Xt[i,0], Xt[i,1], adv[i,0]-Xt[i,0], adv[i,1]-Xt[i,1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Uncertainty optimized adversarial examples\n",
    "We can additionally optimize for uncertainty by setting unc_increase to 0.9, thereby forcing the adversarial examples to be closer to the original training data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "HCLU: 100%|██████████| 10/10 [00:01<00:00,  6.18it/s]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "attack = HighConfidenceLowUncertainty(m_art,unc_increase=0.9,min_val=0.0,max_val=2.0)\n",
    "adv = attack.generate(Xt)\n",
    "plt.scatter(X[:,0],X[:,1],c=cm.hot(m_art.predict(X)[:,0].reshape(-1)))\n",
    "for i in range(np.shape(Xt)[0]):\n",
    "    plt.scatter(Xt[:,0],Xt[:,1],c='green')\n",
    "    plt.scatter(adv[:,0],adv[:,1],c='k')\n",
    "    plt.arrow(Xt[i,0], Xt[i,1], adv[i,0]-Xt[i,0], adv[i,1]-Xt[i,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### PGD on Gaussian process classification\n",
    "To conclude, we show how to compute PGD adversarial examples on our model. We observe that as before, many attempts fail, as the model misleads the attack to take a wrong path away from the boundary. In this case, examples are classified as default: either of the two classes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD4CAYAAADvsV2wAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO2dd5gT1frHPyfJZhtLk7YgHZFmQRZU7FdUrFiwoF4biorl2kVRURRFr+XqT72KXq9iL1hQsSGigILCVUR6FZAqCLo95fz+OMluNpnsZjfJpr2f55lnszOTmTeT5Jsz73mL0lojCIIgpD+2RBsgCIIgNA4i+IIgCBmCCL4gCEKGIIIvCIKQIYjgC4IgZAiORBsQjlatWukuXbok2gxBEISUYsGCBb9rrVtbbUtawe/SpQvz589PtBmCIAgphVLq13DbxKUjCIKQIYjgC4IgZAgi+IIgCBmCCL4gCEKGIIIvCIKQIYjgC4IgZAgi+IIgCBmCCL4gCEKGkLSJV4IgxA+lVMg66Y2R/sgIXxAyDCuxr229kD6I4AuCIGQIIviCIAgZgvjwhTrZtWIFm7/+muyWLel04ok4cnISbZIgCA1ABF8Ii9aa2aNHs/yll1BKoex2bFlZnDR9Oq3690+0eUIDkInZzEZcOkJY1r73HitefhlPWRnu0lJcf/1Fxc6dfHLyyWivN9HmCfVEa43NFv4rLz8G6Y8IvhCWpZMm4S4pCVnv2r2b7QsWJMAioaEEiv3SpUvRWocsQvojgi+ExVNWZr3BZsNTUdG4xggNJljse/XqlWCLhEQhgi+Epcd55+HIywtZr5SizaBBCbBIqC8i9kIgIvhCWPa+6CJaDxiAo0kTAGxOJ/bcXI56+WXsTmeCrRPqQsReCEaidISw2J1OTvrqK9Z//DEbPv2U3DZt2PuiiyiQ5vJJj4i9YIUIvlArNrudLqecQpdTTkm0KUKEiNgL4RCXjiCkESL2Qm2I4AtCmiBiL9SFCL4gpAEi9kIkiA9fiAm7t2xBa03zwsJEm5JxiNinNo3Zm0AEX4iItd9/z9Q772Tjzz/TtmdPTr7nHvY+8kg2L1/OsyNGsGnJEgByCgrAbseZm8vhI0dy/M03k5WdnWDr0xcR+9Smtt4E8RB9lawp1UVFRXr+/PmJNiOmeCoq2PDhh5SsX0+rQYNoc8ghKdF0YuWsWTwxdCiVpaVV67Jyc7l48mReuvJKSnbsqPHh1L4lKzeXHgcfzC3Tp6fE60w1ROxTnxrfC2UDXV2jqqHarJRaoLUustomI/xG4s9Vq/jk0ENxl5birajAlpXFHgMHcsynn2JP8hHw2zfeWEPsAVxlZbw6ejTu8vKwH0xXWRlr5s1j9bx59DjooMYwNWMQsU9DdPwLEsqkbSPxzYgRlG/fjvuvv/BWVuIuKeH3efNY/PDDiTatTn77+WfL9X/9/juVYert+MctHrebtT/8ECfLMhMRe6GhiOA3AmXbtvHHokUQVFLYU1bGqv/+N0FWRU5BmzaW6525uWTl5lpu84/5HU4nrTp3DnvsXVu2MOnyy7m8sJBru3fn40cfxevx1Njnt2XLmDpxIh/+859sXbOmQa8hXRCxTx8GDTqw0c8pgt8I6CABC8Trdkd9/LI//+T3tWvxuFxRH8uK42+/HWdQETVnXh5Db7mFjvvtV0P0A507ymYjt2lT9jn+eMvjlu7ezW0DBvD1Cy+we8sWtq1Zw5t33slTF1xQtc97993H2AMO4O277uLtO+7glr59+fzpp2P6+lIFEfv0YdCgA/nhh+/5+OOPLbfHa241JoKvlHpBKbVNKfVLmO1KKfWEUmqVUupnpdQBsThvqpBXWEhBt24h623Z2XQ799wGHVMpVbXkNWtG627duK1NG+ZMmhStuSEcfvnlHD92LNlNmuDMz8eZl8eRV13FiXfeyU1ffMGJt91Gq65dad6+PQWtWmFzOnE4nXQ/6CBunz0bR1aW5XG/euEFSnbtwhPwo1dZWsr3777LllWr2Lh4MR/cfz+VZWV4XC7clZW4yst59cYb2bFxY8xfZzIjYp8+BIr9CSec0Ki9CWISpaOUOhwoBiZrrftZbD8BuAY4ATgQeFxrXev9TLpF6excuJBPjzgCr8uFp7QUR5MmFHTrxvGzZ5NVUFCvY9UW8XJDXh4Xv/UW/U48MVqTQ3BVVLB782aatm2LM4wrB2D31q3YHQ6a7LFHrcd7+LTTmP/++yHrcwsKGPX882xaupT37r03xMXjzM1lxEMPcdzVVzfshaQYIvbpQ7DYx4O4R+lorb9RSnWpZZdhmB8DDcxVSjVXShVqrTfH4vypQMv99mP4unWsee01iteto/XBB9Px5JOxOWIbKFVZWsrn998fF8HPys6mVQSVMpu1bRvR8Qp79sTudOKprKyx3uv10qpzZzYtWwa1xClnAiL26UNjiH1dNFZYZgdgQ8D/G33ragi+UmoUMAqgU6dOjWRa4+Fs3pxeo0fH/Tx/rF8f93PEgmOuvJLPn3qqhuDbHQ7adu9Oj0GDyGvalKkTJ4bMc2itKTr11MY2t9ERsU8fkkHsofEmba2GYyG+JK31JK11kda6qHXr1o1gVvqhbDa6HXJIos2IiDZdunDbp5/StkcPHNnZOJxO+h59NHf4ErU69O7N6XfdRVZODg6nE0d2Nlk5OVzw+OO07NABgPLiYqY9+ijjjziCx886i2WzZiX4VcUGEfv0IVnEHmKYaetz6XwUxof/LDBTa/267//lwJG1uXTSzYcfS2pzZ1ySn8/9CxbQdu+9G9Gi6NBas3vrVpy5ueQ1axayfcuqVSz44ANsdjsDTz+dVr67v/LiYsYOGMCODRtMPoBSOHNzOfehhzj2qqsa+2XEDBH79CERYp8MmbZTgauVUm9gJm13Z5L/PtZorcOK/gslJYyx2YjMi54cKKVo3q5d2O3tevTgxBtvDFn/5bPPVos9gNZUlpby2s03c9gFF5BrMRnu9Xj4eepUfp46lbwWLRh8ySW07xcyRkkYIvbpQzKN7P3ERPCVUq8DRwKtlFIbgXFAFoDW+hlgGiZCZxVQClwci/NmMl6vl1mTJ/PB/feze9s2ug8cyNkTJ9J9wAB69uzJihUr2GuvvRJtZljUPRYVAsfVvNvUWrPm++9Z9d13NC8spP+wYWxevpw3b7mFVXPnVoVpBmN3Olkzfz59jzqqxnqP282TQ4eybu5cKkpKsNntzHrmGc5+6ikGX5z4j6SIffqQjGIPUjwtZfnggQd4/777qAiocZOdn889331H5333BYi56Hu9XpZ//DFL3nsPZ0EBRZdcQuF++9X7OFZi78cv+m6XiydOPZXlM2ficblw5OSg7HYqKytr1PXRAYuf7Px87p4zh85Btv3w+uu8etllVJaU1FiflZvLxC1byG3atN6vJVaI2KcPiRb7ZHDpCDGksqyM9ydMqCH2/vXv3XsvHo8Hu90e05G+1+Ph5WHDWPv111QWF6PsduY/9xzHP/wwBzU08mg3UIBl6MDUe+9l2aefgteLDfC4XFQQOtPv/+nwr1c2G3t06kQn349eIAveeCNE7AHsWVms+uYb9jnppIa9jigRsU8fEi32dSGlFVKQ7b/+irKFvnXa62X1Dz9gs9ko/fNPAHr27Mny5cujPufSqVNZO3MmlcXF5lweD66yMqbdeCOlO3c27KCPAd+FrnZVVPDFAw+A14uCqiUnzGEUZlSfnZ9Pu549uXXaNMs5juyCAuu4fq1DSkc0FiL26UOyiz2I4KckLQoLw9bNadu9O3MmT+Yf7dpxuW/SslevXswKU7MjUha9/XbY0fHqGTMafuDi0FU/T52K1yf2fvyP7RaHcGRnM/rllxk3axYPL1lC6zDJYYdcdpllhrA9O5sehx9eX8ujRsQ+fUgFsQcR/JQkr1kzDjnvvBDxcublcdh55/HSFVdQWVpK+V9/4S9DdvhJJ7Fs6dIGnzO7oMDyrgKlwlbMbCi/r1tnmbihCP3AOnNzOXjECAaedhpd+vevNWS15xFHcMwtt+DIySG7SRNymjYlt0ULrpo2DXuMM57rQsQ+fUgVsQcR/JTlkqef5siRI3Hm5uJwOmnRvj2jJ0/m1//9D1dA5qqCKtHv3acPK1eubND5ii65BEdOqFNF2Wz0GDKkXscKjsYJXt+lqChsrZ7BF1xAy44dsWdl4czN5YiRI7nk2WcjPveJ48YxftUqzvn3v7no5ZeZuHkzXQYOrJf90SJinz6kktiDROmkPO7KSsqLi8lv0QKlFE+fcw7fv/lmyH7ZTZowyed/b+hE7tcPPsiXd9+NzeEwI2mbjYs+/pjODczsVUpxww038Mgjj9RYr7XmwcGD2fDTT7h9YZc2h4M2PXpw16JF2Ox2SnfvJjs/P2wlzmRFxD59SFaxlyidNOXXhQuZ9847KJuNg886iz379qX/Kaew8KOPqAjyt3tcLnZs3Mgee+7Z4OidI269lQMuvJBV06eT3aQJew0dSpbFqD9alFLc8OWXTLv/fua+9BJej4eB557LSXfdVeV6yW/ePObnjTci9ulDUdFAFiyYn3RiXydWtZiTYRkwYIBOJTb9/LN+4cQT9biWLfUDXbroGQ8+GNfzvXXnnfrC3Fx9nt2uz7Pb9YW5ufr9Bx7QrooKfc+BB+rL8vL0haAvBD0qP1+/O26c1lprj8dTFbq+YsWKuNpYF4C+4YYbEmpDY+H1equu+9KlSxNtjhAFAwYUaUBPmzYt0aZYAszXYXRVXDoxYOuSJTx54IFVIYt+8tu357r582laWBjT821cvJg7Bg4M6SeblZvLQ7/8QssOHZgzeTLz3niDvGbNOOrKK+l3zDFV+3m9Xux2E++SyIzccC6ddEPLyD5t8I/sp02bxvFhOrklGnHpxJkvxo2zDFks3rSJ/wwbxvXffx/T881//33cFmGZ2utlwQcfcML113PkZZdx5GWXWT7fZrPFJTkrnXBVVDD/vffYsmIFHffZh/4nn1yvSJ6qbGIN3GMeitinNqkg9nUhgh8D1s+bB2HulLb8/DM7162jZQSNQyKlatI0CKVUlShprdm+bBmeigra7rMPNnvNCHYR/fDs3LiRuw86iLLduykvKSGnSROat2vHXd99R0EdXbzAWuy5Cnq/2TtshJKQ3KSD2IOEZcaElhb9av0op7NemajqHhWyBHPg8OEhAu5n4Omns23pUv619978u6iI5w47jAcLC1k1fXrIvn7RB5OR29CQzXTjP5ddxu4tWygvLgatKf/rL7avW8frN99cvwOt9v29CpD2DilLuog9iODHhCF33hnSqlADXsCmFO0iLL8brqhY8Pq23btz3iOPkJWTgzM3F2deHlk5OVz89NM0bd2a/xx5JDtWrcJVWkplcTEl27fz6qmnstui8beIfk08bje/fPFFSB9dj8vFD++8U7+D9QDuRsQ+hUknsQcR/JjQ4+ijGfb002Cz1ajeaM/N5fQnn8ThdNbvgHNs8DRgXT0BgGNHj+axVas475FHOP+RR3h87VqOvPhiVn7yCe6yshAXk9ft5n///a/lsUT0gwhyl/nfT6/XmxBzhMSQbmIPIvj1QmvNj889x5PduvFgfj4vHX44v/kmZA+67DLu2r6dI26/nY6HHMK+557L6JkzKfr73+t/ojZe2AZMAGrp2NeyQweOufJKhlxxRVUDkeKtW0NGpwCeigrLEb4fEX2D3eGg3zHHYLPbq+7S/Et5aSn3HH54VWE6IX1JR7EHEfx6MXvCBD6/7jp2rV2Lq7SUDbNm8cpRR7Hlp58AyG/ZkhMnTOCa2bP5+6uv0nnQoIadaC/gLqA38CVwNyxcuDCip3Y+7DCsQm2dTZrQIyA00woRfcPI556jeWEhjuzsGuWYtdYsnzWLf550EuUlJZbXGeouHSEkN+kq9iCCHzHu8nK+nTgRV1ANeldZGV+PGxf7E9qAswFfZ7/999+f7j16UG7R4SmQNr1702/4cLLy86vWOXJzad2rF71PPbXu04ro07JDBx5ZvRp7drbl9uWzZjGyaVNGt2/PNy+9ZLmPHqdDFiH5SWexBxH8iPlzw4awtdS3/vhjg45ZsmsXL1xzDZe1acOotm15aff1oTsVmJHlO++8w5rVq8nNzWXixIm1Hvf0F1/klKefpuPBB1PYvz9D7r2XS7/5JuI4chF9cDidIeUpAtFeL7u3bOGF0aP5fsqURrRMiBfpLvYgxdMiprK4mEdbt64q5hVIl6OP5nyLsMfa8Ljd3LLvvmxdvRq3r7qlIzubjn37MsHXxCQYr9fL8OFn8t577wLw008/sV8DWgxGSrwzcpM90/ayFi0o2bWrzv3a9+rFw1GUnhYSTzqJfW2ZtjLCjxBnkybsN3IkjqDOSI68PA676656H2/B1Kns2LChSuwB3BUVbF6xgkVhfjxsNhvvvjuFTZs2AdVunrKgEguxItNH+ifccENE++1Yv77qsdaaH6dO5eGhQ7n34IP57LHHQlpRCslFOol9XYjg14Pj/vUvBl5zDVn5+SiHg2adO3Paa6/RuQHdktb9+KNJ7AmisqyMX32TwOEoLCys4ebJy8vjgQceqLcNkZDJoj/s9tspGjYMu91e1fzFKlOife/eVY/fHjOGZ849l18++4zVc+cyZexY7hs8GFdFRSNZLdSHTBJ7EMGvFzaHg6MnTuTm3bu5edcurl67lr2HDWvQsdp060a2b2LVAWT7FqfHw9alS3nl0ku5qWVLbmnThik33WTpTz7jjDPweDycdtrp3H777SilIo7mqQ+ZKvo2u53r33uPK59/nsNOP50DhgzB6XCQRfUXx5mby4gHHwTgj02b+OKJJ2q8V5VlZWxbtYp5b7zR+C9AqJVME3sQwW8QNrsdZ35+re306uKgs87CmZeHA9On1d+oG+Dbl15izosvUvrHHxRv387XTz7JE0OGWIYBNpabJxNF31VezhOHH85711zD4nffZfn06TjcbpyYhuotW7bkxqlT6Xf00QCsnD0bu0VDloqSEn766KOIz7tr9WrWffopf65bF5sXIoSQiWIPIvgJIyc/n7Gff45DqRA3gdaaioDkKXdFBZt++YVVs8JnYfndPFOmTImbmydY9NW1ddf9SWW+evRRNixYQEVxMeVBWbYKoKKCyt27q9Y1adXK8jg2u53mEZTIdpeVMfXkk3mlXz8+OeccJvfuzcdnnoknYJ5HiJ5MFXsQwU8o+c2bh+3dGpzE73G52BiBu+b0008PcfP8VMecQH0IFH3+D9hRc3s6if73L76Iq6ws5L3wU1FSwpyAchW9jjiC3KZNQ+78HNnZHHXFFXWeb9bNN7N++nQ85eVU7t6Np7ycdR9/zNy7747iVQg1BiUdVMaKPYjgJ5QWHTpYugAg9I2xO5207t49ouMGu3n69+8fUzePzWYzmcBgRD9NiSRkWQeM/G12O7fOmEHr7t3Jzs8nt2lTcgoKuPS//6VDnz51nmvJCy/gCQr7dZeVseiZZxr2AoSaA5BJwCbgPDjh+xRqSxhDRPATiCMri+H3348zMNTTNzoMzPG0ORw0adWKPscdV6/jx9XNY8OI/qjYHC4ZGXjBBWTl5IT9kmTn5zP4wgtrrGvXsycPrljBHd9+yw2ffML/bd/OoLPOqvtkWlvmeAC4akkAEyLkfVUl9mRw2wcR/ARz9OjRXP7KK3Tq35+CNm3Y/8QTue6DD+g+eDA2hwObw0GvIUO4ac6csDXw68Lv5jn99DNi6+axAe2jP0yy8rebbqL9fvuR3aRJjR9glMKZn0/foUMZcOaZIc9TStFx333Za/BgssKUZwh5js1G24EDLbd1OOywBlgv1KArcD4ZLfYgHa/qxbJPPuGTMWPYsXIlLbp04bgJE+h32mlRH3fAaacx4LTTcFdUsHjKFH795BMGDRvGJa+8QkFhIVk5OVGfw2azMWXKO2zevJn27dvTv39/unbrxuJffiE3zDxCpuPMzeW6b79l+eefs27ePLKbNqXS5aKipIS+xx1H94MPjipSC6D8zz+ZMWECC19/Ha/Hg8rKoonWaLcbm9OJIyeHIx5/PEavKIPZLzkrCjQ2IvgRsmzaNF4ZPhyXzw++belS3jj/fM547jn6n3tu1Mcv//NPnj3oIHZv2EBlcTGOnBxm3nsvF0+fTscDD4z6+H78bp53332XM844g7y8PO6//35uu+22eh1Hj9OWE7TpViTMZrPRe+hQeg8dGvNje9xu/n3ooWxfsQKPLzHLkZ2NvVUruvXoQbuBA9n/2msp6Ngx5ucWMhNx6UTItFtuqRJ7P67SUj4ZMyYmx//mgQfYuWYNlb7sW3d5OZXFxbx93nkRTR7Wl1i4eaQiZHQsnTqVnWvXVok9mBDc4l27KLrvPg775z9F7KNESlXXREb4EfL7ihWW63dv2IDH7Y64EmU4Fr35Zo0vvp8/N21i94YNNO/UKarjW5FYN4+/nddHmOav+wKXAx3ifN7k4de5c6t+4APxuFxs/OEHuh56aAKsSj8yVdytiMkIXyk1VCm1XCm1SikVMuRVSl2klNqulPrJt1wai/M2Jk333NNyfX6rVlGLPZiwSyu01xt2W6wIjOZZu2ZNjJO2NLAKmAv8FrB+gu+vy7f8D7ge+CNG501+WnbtSlZQMT4wbp14/MALQtSCr5SyA08BxwN9gBFKKaug4ze11vv7luejPW9jc+z48SFfzqy8PI6OUfOTolGjQo6vbDba7bsvBb72hfHG7+Y544zhMYrm+QvTxfsR4CVgPPAEsA4ITiLTQCUwLYrzpRb7jxgR8mOubDac+fn0PvnkBFmVDqwC/gM8C/wMyAjfTyxG+IOAVVrrNVrrSuANoGEVxZKYA84/n1Mef5wmbdqg7Hby9tiD4yZMYPBVV8Xk+Adfcw3djj6arLw8HLm5ZBcUUFBYyNlvvhmT40eKzWbjnXferpG01bVbtwYmbf0XE/xc4VtcwGLgY6y9iS7A2nWWjuQ2b84VX39N2379zGRtdjYdioq4cvbs+je+F3y8A9wDfAHMAB4G/o2IviEWPvwOwIaA/zcCVmElZyilDsd8o6/XWm8I3kEpNQpfKk+nJLylHXTppQwcORJXWRlZublRh+QFYs/K4u9Tp7Lpxx/ZOG8ezTp2pMdxx8XEXdQQrKJ5JkyYwNixY0P2tZ5UrgAWAcEN1f2iHtpoHbKAblFanhqU//UXnz3wAD+89hr2rCwOuukmDh89mmbt0zixIe5sA96nen4IzOdwLvA3oFcijEoqYqEmVqoXrAAfAq9rrSuUUldg7u//FvIkrSdhEqApKipKyp9kpVTNzNgY075/f9r37x+349cXv5vnrLPOthR7MNckVPStBN2PF9jbYr0DOLFhhqYQHpeLhw85hG0rVuD2TdRPf/RR1s6bxzWffx7TgURm8RPWclQBzMda8Ddi3Iw/AHnAmZgMrfSMZ4mFS2cjEBg7tifmPr4KrfUOrbU/BOU5YEAMzis0En43Tw1UXR+dPMCqQqQN2A8YF/C/wnwZHwKsK06mEws/+IAda9dWiT2Aq6yMNd99x7p58xJoWbKxFHgQuBOYDrjr2N+JtaTZqVmsxM8O4CLgG6AU+B14Abi3YeamALEQ/B+AvZRSXZVSTuAcYGrgDkqpwG/+KZh3Mmnwejxs++kndi5fHpeY97Qkout0MaZyvH+05AQKgDN868F8HD7ATOxmhjtn9Zw5VFiEY3rdbtZ9/30CLEpG3gGuwjgHZgATgeuoXfSLsPbV2wGrENe3gPKg51T4zrel/ianAFELvtbaDVwNfIYR8re01ouVUuOVUqf4drtWKbVYKbUQuBbzs5oUrPv0U55t1463Dj+cVw84gMl9+/JHmJh7IZBIBL8rJvzyBGAgcLrv/xZVbotHH30MpRwZ5cbYo0sXsizyHOxOJy0k0Qr4ExP4V0H156wMWAbMrOV5TTChvdlALmZQkYUZeFjdbS6ipr/fjxNY0wC7kx+VrCPaoqIiPX/+/LieY/fatUzu1w93YJNppchv145L16/HlqAJ02SlNlGuz+coVsdJVUp27uTOrl0p//PPGuttdju3zp9Px/33T5BlycLXmIGBVZXQI4D763h+Ocaf78a4DwvC7PdP4D1C55uygZeBzhHam1wopRZorYustmV0aYVFzz+P1xX0C681ruJi1k+fnhijkphwYhy5SHuA9G+NWBf5LVty5YcfVjVG9+P1enn86KOpDByAZCS5WN9BKswovi5ygIMwbpxwYg8wAnMHEIgT2IdUFfu6yGjBL964MVTwMQJWsnVrAixKfrTWIUtkuDBlFMRHDbB12bLQKqha46ms5Md3302MUUnDAYQKMZiR9ykW6xvKnpgOPt0xfv4s4GjMyD89yWjB73zssWQ1CR0xeN1uOhxySAIsSmeWYTJv64q0yAz+2LjRciTvKi9n92+/WTzDxO67M6K/rQN4FGgG5GMivpzApUC/GJ9rX+A1TBTQTExmePzCrhNNRgt+zzPPpFn37jgCJtAc+fn0/vvfad6jRwItS0d+pfbY/Myi2+DBZFsMNrJycuh68ME11q377jse7NuXO1q25LaCAl4577wQ/3/60QsT7HcvcDvG134Q8DbwOiY+JJbzPXmka+x9IOn/CmvB7nRyzpw5/PTUUyx//XUceXnsN3o0vWJQ314IpvoWXesXUeqikD0yYcLWT+9jj6V9v35sXLiwqux2Vm4unQcOpEdAh6sda9bwzDHHUBnQ5vDnKVPY/dtvXDVzZmOb3cg4qE7a/xT4CnOHqDG1mPphehZmToRXtGR0lI7QmPwKzCbUpdMMU3op8760lWVlzHjsMeZNngxKcfAll3DUtdeSlZ2N2+XCZrPxwY03Mufpp0PmmrJyc7lhwQLa9u6dIOsbkx2YBKzgz44TuAzjg68vOzGF+pYDbTChww05TvJRW5RORo/whVhSiRl5hevh2gnTUHQ51Z5EJ6bCRuaJPZgWikNvv52ht99ete63X37h5csvZ83cudgcDlq1bGkZWGDPymLHmjUZIvjLsP6MVAK/UH+h3g7chYnz9wDrMVU1R2HyRdIXEfwI0FqzevZs1syZQ9N27eg/fLil/7g6luQAACAASURBVDUz+QN4nmqfajfMqMtf0tkD7MKE2g0C+mKKXOUALTE1Ttb4ntvZt09m9tj9c+tWJh5yCOV//VUVsbNr2zacSoVkNrsrK2nXL9YTmMlKfUsm1MV7mFh9b8C6SmAypupL+k5tiuDXgcfl4pmTT2bN7Nm4Kypw5OTw7vXXc+1XX7FnxifIeID7MLfH/i/PasxE28O+x7MxYu7FlFw6DpOBqzElFXYFPHcNJqX9DDLxo/nNc8/hqaysIe6VXi9ZmHpG2muuU1ZuLv1OO42WndMzVjyUfsAUi/U2GlaWazE1xd5POWYAs0cDjpkapO9PWYyY9cwzrJ41i8qSErxuN5XFxZTt2sXzZ5yRUZOM1iwEiqn55fE3MpmOKUpViYnB92CqaH/q228TJoU++LkVGH9/5vHbokW4ystrrNOAKz+f9gMGkNO0KU3bt+eYO+7g3JdeSoyRCSEXUx7BiRnRZ2MGBKcDrRtwvHDJWF7S/e4y84ZR9WTuf/6DyyJe+q8tW9i2YgUtOnXCU1lJbrNmCbAu0WzHOq6+ElNENXibx7e+BDOSshpluTGTdOkxgVYfugwcyM8ffRQSn6+15uznn2fPffdNkGXJwN6YxibLMZ+bnjQ8Xv544EXM59SPA9g/imOmBjLCr4Ow5QSAN6+5hhubN+eW1q25b999WffDD41rXMLphPGjBpMTZj2Yj1wpJjrHah8H0Dwm1qUah44ciTMvr0bJhaycHLoPHpzhYu8nG5MoFa0wDwaGYkKFc31/e2ESu9IbEfw6OPCii0IqG2rA7XazcuZMPJWVeFwuNi1axON/+xt/bNyYGEMTQi+gPTXT4O1AU8wI3erjpYEWmEZpOdSMvlAYwe8aD2OTnvwWLfjHZ5+R17EjpUCpUrTs04dLX3st0aalGQozT/QEcBMm5PNm0t2dAyL4dXLY6NF0HjSoKirHmZeHMz8fZbfjCQqXc1dWMuuZZxJhZoJQwBhM/ZECTBr8oZiQt0GYH4JAQXdgRlcOzEfvJMxErvIt7YCTsa6jkv64Kir415lnsmPTJjTm7nL94sU8dMIJMl8UF/KAHqTzJG0w4sOvg6zsbK796iuWf/kla2bPpmlhIbasLN657rqQStqeyko2L1mSEDsTRw6m6uAIi23nYvrjbMD8GBQBXQK25wJDqPblZ/b444d33+XPbdtqDCTcFRVsWraMJTNn0veooxJonZAOiOBHgFKKXkOG0GvIEAC2Ll+Oxx06WZmVm0u3wYMb27wkpgCL1sUWZLbQ+1mzYAHlFp2w3JWVrF+4UARfiBr5pjWAtnvvTZ/jjqvh27fZ7eQUFHDIyJEJtExIZQp79iQ7Pz9kvSM7mzbdMy9qSYg9IvgN5NK33uK422+nWfv25LVoQdGIEYxZsIC8Fi0SbZqQogweMYKsnJwaHcFsdjtN9tiD/Y8/PoGWJTsVmJyPSZhwy0XEtpJm+iDF0wQhidi8ciWTLrmElXPnAtDv6KO5/IUXaNG+fYItS1ZcwH+A3VSX387CZOdm5o+kFE8ThBShcK+9GDdrFpVlZaAUzuCuWEIQizGNdQJ7LbgwxdAOxuR0eDBF1jZiInL607AaPKmPuHSERqYYWIsZkQnhcObmNkjs3WVlzP7HP3i+aVOedTr58Nhj2bViRRwsTBZWQUi8HJh8kN+AMkyc/SvAZ8A7mK5W2xrJvuRCRvhCI+HFdDD6GfNl9GDS488gU+Pu48Enw4axedYsPL6aPBunT2fKgQcyYvly8tq0SbB1seZHYGUt25sAH2NKgPjvAPy1nV4BboirdcmIjPDjjKeigh/uuYfJe+7Jf1u3ZuaoUZRuy8TRxSzMZJobM8nmBlZgRl1CLNjxyy9smTOnSuwBU2a5vJwlzz6bOMPiwm/AF1hPzipMjkcn4H+EttbUmNyQsngamJSkneCvfvVVpvTqxcsFBXx8yCFsnTMnofZ8cuqp/Pjgg5T89hvlv//O8hdf5J2iIlwBLevigVIqZEks8wi99XZjvpBWRdSs8FfdFKzYtXQpyh5an8hTXs72BQsSYFE8mY914T4wpTvOpzqDW/CTVoK/5Mkn+XbUKP5cvhx3cTHbvv2Wz449lm2+iIfG5veffmLzN9/gKaseSXhdLip27mTFq6/G7bzhxD2xol8eZr2HugV/I6buyd2+5W3MXYIQSPO990Z7Qn8Q7Tk5tEq73g2hFWwNTuAYTHE+MB2sgj3XCpPxnf61c4JJG8H3ut38eOeduINKy3pKS1kwdmxCbNr+v/+Bhci6S0rY+t13cTmnOyQDOFlGOJ3CrG9N7VNJ/o5aWzC34h7MPMDkmFqXzOzctInJN9zAmAMO4LEzz2TV999b7rfHvvvSZtAg7NkBEShKYXc66XvFFY1kbWOxF9ZzPx5MQT8/xwOFmKgcm+9vAeYOIPNIG8Ev3769pu8ygD8WLmxkawxNu3a1HFXbc3JovvfeUR/f7Xbz+eefM3z48Cq3TVZW8JcgWfIsjqdmqzob5gt7ch3P+45QN46/rv7WWBqYlPy+fj0377MPnz31FOt+/JF5U6Yw/qijmPvOO5b7n/DRR/S88ELsublgs1F4+OGc9t135LVrZ7l/6rIfZhQfOFjIAo6g5sg9G7gRuARTrG8EMI5MKpgWSNokXnkqK3mtRYuQET5Aq6IiTk5ArXrt9fJGnz7sXr0aHTDyzmralHNXrqxX1ITb7WbGjBlMmjSJKVNC273l5ORw+eWXM3LkSPatpXZ6Yt/vP4A5GLFuBxxC3R2LXsCE3gWTDZwFBDbx/g1zq9+VdAlA+/fFFzPr5ZfxBrlqmrZuzTObN2Oz8Nn70VonwdwNmLmXZzFtCssxbQlvxvQwjoZKTNe1ZRiRDy7Ol5lkROKV3emk97XXsuSJJ/AEiL49L4/977knITYpm41hX3/NjIsu4rcvvwSgRZ8+HPXf/9Yq9n5xf/bZZ3n33XdDtgeKe79+/ZLkSx0JLTCjrPrQCViHdfestr7HW4EJGLePzbdcjSnFnNos+uKLELEHKC8p4fcNG2jTpUvY5ybP52IM5k7NP+8yF7gQExPfKorjOjE++oFRWZdJpI3gAwyYMAFbVhaL//UvPGVl5LRuzcCHH6bjCSckzKa8tm056ZNPcJWU4HW5yG5es5tTPMQ93MguWe/maudAqt06fvsdmOYrLTETvncAv1Nz8vdfwJ6EnztIDQpat2bnb7+FrPd6POQ3T4XOYBuoKfZQ3bv4LWB0IozKWNJK8JXNxgHjx7P/uHF4SktxNGnS4FFOZVkZ8ydPZslHH1HQti2HXHUVe/bv32DbsvLzcbvdfPbZZ0yaNCmsuI8aNYpLL7006pF7aoq7FQUYUfgE49pxYn4EjvRtX4pJrQ+O9HH5nnN5o1gZL06++WaeGzWKioAwXkd2NvsPHZoigr8GIzPBUVWVmLIIQmMSE8FXSg0FHsekUD6vtZ4YtD0bE1YxANOh+myt9bpYnNsKm92OrSBcZ/q6qSgp4fGDDmLnmjVUlpaibDb+9/rrDH/6aQZeeCEA6h6LEfS4apF1u918+eWXjSLu6c8ehI+qCFeiwYsZ9ac2h4wYwaZly/jwn/8kKzsbV2UlvQ49lNGTUyVKqRPW8fJZmEgboTGJetJWKWXHpEweg5mN+wEYobVeErDPaGBfrfUVSqlzgNO01mfXdtxEVsv8+l//Ytrtt+Mqq5mJ52zShPHbtpH9UFADZQ+mPMwCzIAzCBH3eLIDM4oPTurKxkRmDG10i+JB6e7dbFi8mJYdOtC6c7STnY3NlcBPmFG9nzxMPkW6RQ8lnnhP2g4CVmmt1/hO9gYwDAjs9TcMkzEDZqbmSaWU0knqd1j49tshYg9gs9nYEBjt864Nfq7pShBxr4v1mEnYVhg/fLSRwXsAJ2LcN363gRMT/ZM+HaLymjVj75TtpvYo8Aimro0L6APcjoh94xMLwe+AmZnxsxHjZLXcR2vtVkrtxnxTa9xzK6VGAaMAOnVK3GRbuCYmXq+XnKZNq1e08ZpXegDQBlBQNi7z6nNEhhuTLbuU6pT35sBtvr/RcBGwN0ZQSjDhnieSSiVw63IRpja5mIn1sZjb4bSaOkwpYpF4ZTWEDf6kRrIPWutJWusirXVR69Z1xWfHj0OvuQZnUKs5pRRNCwtpv99+ATti8onakjwJrUnLx5ibvkrMSLwcU6L2uRgcW2FCMCdgonPOxLgMUgMrsa9tfeqiELFPLLEQ/I1Ax4D/9wQ2hdtHKeXApMjtjMG540Kv447jqJtvxpmdTbPcXApycmi+555cNm2auGgazNeE+tm9mBF/vO6KyjFVOj8ElpM8WcdhKEZqw0XF75gpxGVEXpAvs4jFz+0PwF5Kqa6YVMdzgHOD9pmKybT4DhgOzEhW/72f1k2bsqfvsbLZcJSVof/6CzC32ul9Cx4PrJpUgBn1xUPlfgXuw3zxXZiP+t6YNPskHGV+hflNvBETiSrUAw28gZEXf+ZxHnA90SV2pR9Rf/J9PvmrMYXN7cALWuvFSqnxwHyt9VRM08mXlVKrMCP7c6I9bzzZMm8e391xB56K6thhd2kp7x93HJdu2oTN4RBxrzcHYEbbweLeFtOoIpZoTJRwYJkND2bk9yVwXIzPFyV+sT8MEfsG8QOm/Lab6hDQSuAZzNxBMF7MBZ+Byf4+g+jLPKQGMRnqaK2nAdOC1t0V8Lgc41hNCRZNmoTbIkrHXVHBxq+/ptPRRyfAqlTnDEwDlGKMDz8LMz4YFYdzbcXU7QmmEphJMgn+3XffXS328rFqIF9TM+QTzI/+dt8SOB/oBkZi+jCUYiTwP8BDmIn+9CZtqmXGkoo//gALj5MCKv/8s/ENSguaAg9gqhUeCpyC+ZJ1icO5vISfRU8e3+7dd9/NPffcw9ixYy3FXu4iIyVcbwSbxbaPMQkz/rs/N2auZwzhezakD0nozEw8PYYPZ/3nn4d0pfJUVrLnEUckyKp0IBsTGx/v+PhCjG8k+MvuBA6P87kjI1Ds77vvPu7jvkSblMIMwIzkg+eJHNSsjQ/wPtZBAjaMa+iwmFuXTMgI34K9zjyTNgMGkOULzVQ2G468PA596CFyWrZMsHVC3SjgWkz8t9O3LgdTNvnYRBlVRbDYC9FyFGZy1v9e232PLyJU4nJqOU7q5G00lLSphx9rPC4Xq6ZMYeU775DTogX9Ro2i3UApwxo/ijHF0ZoA3YjNWKQEE7mxC+gJ9IvRcRuOiH28cGH63C7BVFE9FOteC18DVxE6ym+J+aykvtOjttIKIvhCEjANc6udhZlsywduorrefXrgF/ubzz+fG3v3xlFYSPPhw7FHUehPqC8auB94lereCTbgJUwXrdRHBF9IYpZgSi4ERlkozC36RNIlhdkv9qM7d+byHTvwlpVhy8lBZWXR/auvyEu7JuOxwA2sxoTUVgCfYpKrOgGnEl0o5XrMiL4pxiVUm6sntciIjldCqvIl1iF1f2K+lKkfH+0X++uHHMOFc2bj9YX8en1BAeuGD6f3ypWSxV2D1cAkqhvXV2LcNl5MHf2VmLvALg08fidSvTlOQ5BJWyHBlIRZb6Nm4lRqEuizH7V1C9oiv8O1eTOVq1cnwLpkpRyTNFXme+zC3OllUX3HVwmE9pkQakcEX0gwAzBf5GA8mMnb1CVkgrY292mSulYTwyLC1z0KlKxfG8GW9EIEX0gwh2MmZ/0hdcr3+FyiD5PTmMifqb5lFY1VQM0qGqflRRehcnND9s1q1w5njx6NYldqUE749ynQ7ZUKLR6TC/HhC3FGA99guhvZgLMw9er9X9xsTL2TOZiuSAWYtNOuMTj35xhfsL++ykbMXUO0XbDWYCpwunzH6ldja7jQy1ZXX83uDz+kbMECvCUlqLw8lMNBl7ffFv99DfauZZs/U9oJnNQItqQXEqUjxJnrgTcx/niFSYa6CBMaF0+2AlOw7qfqxDRq60/9o4BewpSIcGPEJxs4D3+Rrrri7LXWFM+YQcm335JVWEjzs87CHthUR/AxBRNF45/Qt1H9XtoxpTmk+JAVEpYpJIifMB1igicqczElInvF5azWpasfD1rjwFTwPKgeR96KcUEFl2zIBV7n7rvfl6SqmKExvRLmYuZzioDemM9SAeKcCI+EZQoJ4nOsC1u5gS+Ih+CH7x71jyDRd2MqJhYR+ddgBtbTXhWMG3cj48fPELGPgsh6TKRPvHwikElbIY7kYR2B48CMiuPENkzvk4gaadWn25YdKxfQuHF/iNhHSea0eUwsIvhCHDmN8O2Mh8XnlNuApzED+IgGg/X54RlCcHnlceN2MX78LsaOvSIDxb4MU79mFqbZXUMJV95YiDXi0hHiSAfg38BoqlvPeTGNy2PfpH7JkiVG7AHGUcd8rAOTA1Cfr0BL4J+YDE8b48ZtY/z43Ywdezz33ffvhpicwqwDXqE6E3YmxkV3BpGPI7djmo+sql7lxtydDcHUPxNiiozwhThzGqa14FO+ZTnx6Cy0ZMkS+vbta/4JK/Z7+DbkYMIzc4Dd9TzTycAcxo3rw/jxOxk79lruu29anc9KTrYDa6n/CNsDvE7NcgcuzPu8OMJjVAITMCUSAu6aHJh59OnA7HqaJdSJjPCFRqAZcXPhUFPsvV4vtvGh45jqyb/VGDVZj8nUnIuJ1om89PW4cf/H+PHvprDP/i/MyHoz5s7Lg4lpj7T5x0asO4e5MBPh+0RwjP9hfmgsogT9aRLTIzRHiBgZ4QspTbDYK6XQ43TIYijHFGvzYHwHHt/yI8b5Xzfjxo1j/PjxKSr2f2Da+z2NEW0X1bVqPgZWxOAcm4D/Az6i9juHbQQWzdPjLq65eShVI/2HHnooBnYJICN8IYWxEvvaWY+1r8eNEbs2tT47tcX+U+BbfJ2ZMdFTlVSPsP0N3ntGcKw9CT9BUuZbtmN+XK7D3OEF0wmTtFbdR9aIfjZwObA/jIPrr7+eW2+9FYBbbrklAtuE2hDBF1KS+os91N7AvPYExNQW+5WYrFV/pqr/WjmpOQr/K8Lj2YGzgdcw180qmxnM3dNbwGUW2/bFzKlsDXi+AzOZv2/VXo899hiAiH6MEMEXUo6GiT2Y2vpfW6x3AOGLl6W22INpzh3c4NuPwoi2A+hTj2N2B24AfsGEZP4UZr9w4Zo24DbgPWCez44+GJfQiZgcjrOB4SL6MUQEX0gpGi72YGLuD8PEjWvMiN+BCSdsZ/mM1BD7YuB7jMuqFXAwZvTsJ7jBTCAKM2LPx5SNqA/5wIEYkQ4n+LW9P3mYOkTnYaKlzsY0vvEAOzFRXSuAO0T0Y4QIvpAyRCf2fvpg8gNWYoSlK+F896kh9n9gmoVUYl7POswk9N+p7ga1n299sPDbgEKgL+aHML+BNrTHzAlY3UXsFeEx3sMU2PMErCsHPsO4hNqK6McAEXwhJYiN2PtphqmhE574ir0bE6WSj/WEZn34gpr1472+ZSpwrW/dvpgwyA0Y0fc37j4diFUv3fOBF6k5F5IPnBnh8/1hmsFkYXI3TEN7Ef3oEMEXkp6Gi30JJjrlR8wE5RGYkWzt0cjxFfu5wAe+x/47jAto+Og6XFOXnZhomVyMy+ZijHAu860rwjQQ2YD5gSikuglNQ+iKKRH9je/ce2Pi8SN9rzphyjR4gtZ7fLZVI6LfcETwhaSm4WJfAUwEdlEtIu9hmpfUjPm2OmZ8xH6Vz4ZA18cazMj4qgYes2ZoYzWKml9vG6a8cG/f/5sxfQr8r90LDCa6tpJZNLxG/VmYpjKBgu/w2RPqFhLRbxiSeCUkLdG5ceZhwgwDBaQSM7lYnWQV7pgTJkzA1Oz/EFhC6MizIcwk1M/twWT87mzgMQ8ktCKpHTMRbVWpFMx1mIFxLbl8iwcTpx9paGas6QQ8QvWdRhYm8+pfYZ/x2GOPcd1113HrrbdKclaEyAhfSEqi99mvxDo6xYYR2NqTrAzzMCPfZb7H52Mtotp3voUYEe2DaXtoD9pvV5jz2DFC2zICm4IZjPkB+8V3HC9mErW2UhYbwqzXmNITsfLr15cizB3QTsydS5M6nyEj/fohgi8kHbGZoG1FdZ2YYCJtfu3BuDxcmMzRHzGtEYP5AlM0zD9634K5KzibmjfRPTGJRsE2eQkXFmoox7hgsjEj4MDr4Z98/RtG+JtT94+ZC2u/v5fwSVSNhaJmSGndiOhHTlSCr5RqiXEEdsHEfZ2ltf7DYj8PsMj373qt9SnRnFdIX2IXjXMoxiUTKK42oCkmaSgSyjEVNRVGCJcQKvg7MaPrQKF0YUR/NTX9z0dhJibLAuxyYgrHZIex4UeMq8WOEWkncCqhoticyH/I2odZ78CUTUg9RPQjI9oR/hjgS631RKXUGN//t1rsV6a1TtR9opAixDb0cg9MHf6XMIlJGpNpO5LqUbfVZGcgHsyo1++asXLnrA/zXBem9HCg4BdgaunPwLiJCjA/AuEyXDdjSiL4i7z5j/s+cAn1b8Dupylm8nYZNcsa7Ik//DEVEdGvm2gFfxhwpO/xS5hZKSvBF4Raia3Y++mJ6aaxEzMyLgja/gtaj0GpiSHP1Po23yM3RvCzMGWUg8nFOvbBjskkDaYpZoQeCT9j7WKpxPwYhBupR8IATALaKsyPWldqL4qWGojo1060gt9Wa70ZQGu9WSkVznmYo5Saj/n0TtRav2+1k1JqFDAKoFOnTlGaJqQKixcvpl+/fkAsxd5PbT5h41rR+ibMV8HqvA7fsg/WTde7Yy34isjqwtdGuDsQN/XrxRuOdtQ+d5CaiOiHp07BV0pNx/pTMbYe5+mktd6klOoGzFBKLdJarw7eSWs9CZgEUFRUVHv5QiEtiK/Y18VeVPvnrb4KDuA4334twhzDgZmcnULNqKCTiD6LtjvGZRT8VdCYyd9I5yIyDxF9a+oUfK31kHDblFJblVKFvtF9IWG6SGitN/n+rlFKzQT6Y2a0hAwmsWIPZhwzEDORWkl1pqkNM1l7LpGJalvgSsxErRvjagkOyWwIXQhftnkVJiRTCEeg6Gutq8Q/k4nWpTMVuBCT0ngh1TnjVSilWgClWusKpVQr4BBAsiQynMSLvZ8zMBOYc6kudbAX0JH6ibYiuARA9NgwcwdujJ/dX+ETYAdmbqIhsfuZg1/0x4wZA5Dxoh+t4E8E3lJKjcTce54JoJQqAq7QWl+K+TY9q5TyYj7BE7XWS6I8r5DCJI/YgxHqvr4l2cjDCPo2QmP3NWZ8dRGpPtEab0T0q4lK8LXWO7AonqG1ng9c6nv8LdHPXglpQnKJffKi7gm9LnrcI0Fr/sKM8uuXqJSJiOgbJNNWaDRE7CPDSuzN+huDRN8/4SxEgoi+CL7QSIjY15PfgScxXQSbhtvJjukBK0RKpou+CL4Qd0Ts64lf7CE0VwyobmByPFLwtv5ksuiL4AtxRcS+fixfvrxa7MdhMR/bB1NFch+ij/PPXDJV9EXwhbiRuWKvMd2l/sCEeLaK6FnLly+nVy9fNq+l2IMptBYJOzCx+s0wJSbkTiCYTBR9EXwhLmSu2P8O3I0Re/+k6hBM0bbw1yBQ7L1eL7bxoQKtx0WSfK6ByZhKof48ggJMYrz4+4PJNNEXwRdiTuaKPZicwq1UJ0iBqY65F6anbijBYq+UilDcrfgO+JrqTlZg2j0+BtzfwGOmN5kk+iL4QkzJbLHfjsk/9AatrwCmYSX4VmIfHZ/7zheIxlTX3EZknb4yj0wRfRF8IWZkttiDqWBpJ7RvrX9bTWIv9tbnMdiou/5/ZpMJoi+CL8QEEXsw9eWdhAqrvyF3NfERezBNzbcS+qPj8Nkn1Ea6i74IvhA1IvZ+7MDVwCMYwfViWhe2ILCpePzEHkwUz7eYkgsVPpvswOXEpoJn+pPOoi+CL0SFiH0wA4B/Ap9ifPr7Y5rC5QDxFnswBdcmAHOAhZiQ0KOJrjtW5pGuoi+CL9SLcAIlYh9IB0wYZk3iL/Z+soG/+RahoaSj6IvgCxFTm0CJ2NdO44m9EEvSTfQl/U4Q4oyIfWrz2GOPcd111zFmzBiUUiFLKiGCLzSQ1PqgJwoR+/TAP9K3IpXeUxF8oYFIj/m6ELEXkg0RfEGIAyL2QjIigi9EjNbWo/pw6zMVEXshWZEoHaFeiLjXjoi9kMzICF8QYoSIfXqTDne4MsIXhBiwbNkyevfuDYjYpzOpJO5WyAhfEKJExF5IFUTwBSEKROyFVEIEXxAaiIi9kGqI4AtCAxCxF1IREXxBqCci9kKqIoIvCPVAxF5IZUTwBSFCROyFVEcEXxAiQMReSAdE8AWhDkTshXRBBF8QakHEXkgnohJ8pdSZSqnFSimvUqqolv2GKqWWK6VWKaXGRHNOQWgsROyFdCPaEf4vwOnAN+F2UErZgaeA44E+wAilVJ8ozysIcUXEXkhHoiqeprVeCnW2+BoErNJar/Ht+wYwDFgSzbkFIV6I2AvpSmP48DsAGwL+3+hbF4JSapRSar5Sav727dsbwTRBqImIvZDO1DnCV0pNB9pZbBqrtf4ggnNYfWMsa4xqrScBkwCKiopSuw6pkHKI2AvpTp2Cr7UeEuU5NgIdA/7fE9gU5TEFIaaI2AuZQGO4dH4A9lJKdVVKOYFzgKmNcF5BiAgReyFTiDYs8zSl1EbgYOBjpdRnvvXtlVLTALTWbuBq4DNgKfCW1npxdGYLQsNRStVYROyFTCHaKJ33gPcs1m8CTgj4fxowLZpzCUIsqE3QReyFdEcybQVBEDIEEXwhg5ERvZBZiOALGYxE/gqZhQi+IAhChiCCL2QUWluP6sOtF4R0IqooHUFIRUTchUxFRviCIAgZggi+IAhChiCCLwiCkCGI4AuCIGQIIviCIAgZggi+IAhChiCCLwiCkCGI4AuCIGQIKlmTUJRS24FfE22Hj1bA74k2ohbEvuhJdhvFvuhJdhtjZV9nrXVrqw1Jju0OowAABFxJREFUK/jJhFJqvta6KNF2hEPsi55kt1Hsi55kt7Ex7BOXjiAIQoYggi8IgpAhiOBHxqREG1AHYl/0JLuNYl/0JLuNcbdPfPiCIAgZgozwBUEQMgQRfEEQhAxBBN8CpdSZSqnFSimvUipsmJRSaqhSarlSapVSakwj2tdSKfWFUmql72+LMPt5lFI/+ZapjWBXrddDKZWtlHrTt32eUqpLvG2qp30XKaW2B1yzSxvZvheUUtuUUr+E2a6UUk/47P9ZKXVAktl3pFJqd8D1u6uR7euolPpKKbXU9/39h8U+ib6GkdgYv+uotZYlaAF6A3sDM4GiMPvYgdVAN8AJLAT6NJJ9DwFjfI/HAA+G2a+4Ea9ZndcDGA0843t8DvBmktl3EfBkAj93hwMHAL+E2X4C8AmggIOAeUlm35HARwm8foXAAb7HBcAKi/c40dcwEhvjdh1lhG+B1nqp1np5HbsNAlZprddorSuBN4Bh8bcOfOd5yff4JeDURjpvbURyPQLtfgc4Wimlksi+hKK1/gbYWcsuw4DJ2jAXaK6UKmwc6yKyL6ForTdrrf/ne/wXsBToELRboq9hJDbGDRH8htMB2BDw/0Ya741rq7XeDOYDBLQJs1+OUmq+UmquUirePwqRXI+qfbTWbmA3sEec7Qo5t49w79cZvlv9d5RSHRvHtIhJ5GcuUg5WSi1USn2ilOqbKCN87sL+wLygTUlzDWuxEeJ0HTO2iblSajrQzmLTWK31B5EcwmJdzGJca7OvHofppLXepJTqBsxQSi3SWq+OjYUhRHI94nrN6iCSc38IvK61rlBKXYG5G/lb3C2LnERev0j4H6aOS7FS6gTgfWCvxjZCKdUEmAJcp7X+M3izxVMa/RrWYWPcrmPGCr7WekiUh9gIBI4A9wQ2RXnMKmqzTym1VSlVqLXe7Lsd3RbmGJt8f9copWZiRhPxEvxIrod/n41KKQfQjMZzEdRpn9Z6R8C/zwEPNoJd9SGun7loCRQurfU0pdTTSqlWWutGK1imlMrCCOmrWut3LXZJ+DWsy8Z4Xkdx6TScH4C9lFJdlVJOzCRk3CNhfEwFLvQ9vhAIuSNRSrVQSmX7HrcCDgGWxNGmSK5HoN3DgRnaN0vVCNRpX5Av9xSMfzWZmApc4Is0OQjY7XftJQNKqXb+ORml1CCMvuyo/VkxPb8C/gMs1Vo/Gma3hF7DSGyM63VszBnqVFmA0zAjgQpgK/CZb317YFrAfidgZtlXY1xBjWXfHsCXwErf35a+9UXA877Hg4FFmGiURcDIRrAr5HoA44FTfI9zgLeBVcD3QLdGfl/rsu8BYLHvmn0F9Gpk+14HNgMu3+dvJHAFcIVvuwKe8tm/iDARZAm07+qA6zcXGNzI9h2Kcc/8DPzkW05IsmsYiY1xu45SWkEQBCFDEJeOIAhChiCCLwiCkCGI4AuCIGQIIviCIAgZggi+IAhChiCCLwiCkCGI4AuCIGQI/w/abk4Q4Qy6fgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "attack = ProjectedGradientDescent(m_art,eps=0.5,eps_step=0.2) #TODO,targeted=True)\n",
    "adv = attack.generate(Xt)\n",
    "plt.scatter(X[:,0],X[:,1],c=cm.hot(m_art.predict(X)[:,0].reshape(-1)))\n",
    "for i in range(np.shape(Xt)[0]):\n",
    "    plt.scatter(Xt[:,0],Xt[:,1],c='green')\n",
    "    plt.scatter(adv[:,0],adv[:,1],c='k')\n",
    "    plt.arrow(Xt[i,0], Xt[i,1], adv[i,0]-Xt[i,0], adv[i,1]-Xt[i,1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "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.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}