Skip to content
Snippets Groups Projects
02-First-convolutions.ipynb 91.3 KiB
Newer Older
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "German Traffic Sign Recognition Benchmark (GTSRB)\n",
    "=================================================\n",
    "---\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "Introduction au Deep Learning  (IDLE) - S. Aria, E. Maldonado, JL. Parouty - CNRS/SARI/DEVLOG - 2020\n",
    "\n",
    "## Episode 2 : First Convolutions\n",
    "\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "Our main steps:\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    " - Read dataset\n",
    " - Build a model\n",
    " - Train the model\n",
    " - Model evaluation\n",
    "\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "\n",
    "\n",
    "\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "## 1/ Import and init"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "IDLE 2020 - Practical Work Module\n",
      "  Version            : 0.1.1\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "  Run time           : Sunday 5 January 2020, 16:37:26\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "  Matplotlib style   : idle/talk.mplstyle\n",
      "  TensorFlow version : 2.0.0\n",
      "  Keras version      : 2.2.4-tf\n"
     ]
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "from tensorflow.keras.callbacks import TensorBoard\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "import time\n",
    "\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "import idle.pwk as ooo\n",
    "\n",
    "ooo.init()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "## 2/ Reload dataset\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "Dataset is one of the saved dataset: RGB25, RGB35, L25, L35, etc.  \n",
    "First of all, we're going to use the dataset : **L25**"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "CPU times: user 0 ns, sys: 328 ms, total: 328 ms\n",
      "Wall time: 502 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "dataset ='L25'\n",
    "img_lx  = 25\n",
    "img_ly  = 25\n",
    "img_lz  = 1\n",
    "\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "# ---- Read dataset\n",
    "x_train = np.load('./data/{}/x_train.npy'.format(dataset))\n",
    "y_train = np.load('./data/{}/y_train.npy'.format(dataset))\n",
    "\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "x_test  = np.load('./data/{}/x_test.npy'.format(dataset))\n",
    "y_test  = np.load('./data/{}/y_test.npy'.format(dataset))\n",
    "\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "# ---- Reshape data\n",
    "x_train = x_train.reshape( x_train.shape[0], img_lx, img_ly, img_lz)\n",
    "x_test  = x_test.reshape(  x_test.shape[0],  img_lx, img_ly, img_lz)\n",
    "\n",
    "input_shape = (img_lx, img_ly, img_lz)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "## 3/ Have a look to the dataset\n",
    "Note: Data must be reshape for matplotlib"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x_train :  (39209, 25, 25, 1)\n",
      "y_train :  (39209,)\n",
      "x_test  :  (12630, 25, 25, 1)\n",
      "y_test  :  (12630,)\n"
     ]
    },
    {
     "data": {
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "image/png": "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\n",
      "text/plain": [
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "<Figure size 864x169.2 with 6 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAq8AAADvCAYAAADcpj3YAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOy9eZhdVZX+/1bdWwOVkIEkkBAgJMzzFOYpzBBmRSbRFmmng9pOX0VtW6VbEUHBtn/HWbABuwURB0YBlVkGGSRMRgYJZICEJCSp1Fy/P0599tm1zj1V99xKUqn0fp8nz829dYY9rL32Xu9ae+263t5eBQQEBAQEBAQEBIwE1A93AQICAgICAgICAgKqRVi8BgQEBAQEBAQEjBiExWtAQEBAQEBAQMCIQVi8BgQEBAQEBAQEjBiUq70wiqIRv7MrjuO6vL9t6PWTNvw6bgj1kzb8OgY53bDrJ234ddwQ6idt+HUMcrrh1i8wrwEBAQEBAQEBASMGVTOv4NZbb9U//vEPSdLee+8tSXrPe94jSVq5cqUk6Q9/+IMkqbm5Wc3NzZKklpYWSVJdXbKIHjt2rCSpVCpJktra2vr9znWjRo2SJDU1NUmSuru7XVnGjRvX79mPPfaYJGnjjTfu93fKWw2uuuoqV2be3dnZKUlqbW2VJK1atcqVnfJQ3vr6+n7fubdcLvf7nfuoP9/967i2sbFxwGe9+93vrrp+kvT1r39dXV1d/coL+B309PTorbfekiQ1NDRIkiZNmlTxWkB5e3p6JEkdHR39PnlnuVx2deHa1atXS0plibb+6U9/WnX9vve971V9rQ/KRVkAcnDYYYdJkm677bZC91eLj3zkI1Vfe9xxxzl5YOwgt4BylMtlbbHFFpKkTTfdVJLU3t4uKR1XixcvliS99NJL/Z5Z6VlS2vflcjkjw4w/izvuuKPq+knSxz72Mfe+P//5z5IS/SOlfUA9PvnJTzo9sO2220pKZWfChAmSpN12202SNHXqVEnp2KMd3377bUnSm2++KUl6+eWXJaVt4z/jmWeekST9/ve/lyS9+uqrkqTdd9+96vpdddVVrgxWZvjOGG9ra3P/p02QN8aV/d0+k7SIXAe6u7tdfzJ26Us7xovIqJToGupo5YS+88vjy5UPrqWP/Xmg0rPt7wPVyb7rC1/4wuAV68PHP/7xjC7N0/G9vb2ZPmGcjRkzxl3jw363/bRixQpJSV8j99SHa8Dy5cslJePisssuq7qOJ598shtL48ePlyQtXbq03zW8a/Xq1W6efP311yWl8wblGz16dL9n0V7ofPp4o4026lefUqnk5gfez70AOfnNb35Tdf0k6ZJLLnF1oM3ts/2+oG/tvMVc+corr0iSttpqK0ly+hcZyfvs7e11/YRe4vuf/vQnSdJPfvITSdKBBx5Ydf0++MEPuv/TP8gS7cxc0NjY6OpOnaln3ty4ySab9GsHysp8wrOnTp2qbbbZRlLaV8gW/cy1P//5zwesU2BeAwICAgICAgICRgwKM68nnXSSHnnkEUnSzjvvLCm1pMDZZ58tKWF55syZI0l67bXXJEmTJ0+WlFoksDTWWmVVvmzZMknpih9r4Y033nCWGpbEc889Jym1RrF2eGc1mDJlirt+yy23lJQyt4sWLZKUWkmdnZ39rGr/bxbWwqK+WKXUr5LVZy14axUVhW89UR7LHnANVrCUWlWwBdxD/9t7YYSsZeW/27YXz6ZuRfquFtTV1WWsS9p3s802kyTNmjVLUsLuSalVvWDBAklZGa307DUNxoeU9gOWOjJF25ZKJdcXlNGOM1hb7qHf7fUWpVLJWcq818q0ZXGrRblcduWhjWFRTzvtNEmJHpCk6dOnu3LwXnQMTCo6CMYHtgv5pC0oP/0/ZswYN/ZoJ/QW3idYJZ+lHQwNDQ2urHYcWD3Q3Nzs/m/v8ceolM/EIieVnmM9W1Y/1SrHlv3zwTsrsab8Rp/4DKqU1tmyqFxHG/jjZDDYd1SDnp6eXKab3/16+XOHj/vuu09SyugfeuihkqTttttOUnZswcYxB+6yyy6uv7nGZ+2ldAwV7cvW1lb3DOrCOLBen6amJlc25mUrf1dffXW/8n34wx/uV276oZIXE2bTMtb0c56eGgxNTU2ZOdzKDrLsz812/kcuYSQpD3+34wv44x29Qx15B7oGPYanqBqUy2XX/nnenoFgZRw9xydrLuTxb3/7myTp2WeflZS2B58DvSNvDZW5vurSBwQEBAQEBAQEBAwzCjOvM2fOdDELMBqWWcEiuP/++1185NFHHy0pZdKwuvnMW3XDimBx/eUvf5Ek3XTTTc5CefLJJ/tdO336dEnS/PnzJUmnnHJK1fXbb7/9XBknTpwoKY3DJQbuxRdfdGWivFiNsJNY/jbey7Km1hLz2UnLvthn1Bpb6b/DPssysCtXrszUEVjGnTojD9Zy5e9YsF1dXZn4WD6Jl+KetYXe3l4XG33SSSdJkk499VRJ0o477igpZeroj1tuuaVfGefOnStJuvnmmyWlsZ2rVq0aMkueB3/MWeYT+GPJsuawIpa1AzwL+eQdMEbc53sf7Cf9X6ucrl692rEMlJ8xCSO19dZbu/Jg1fM+WABYIcqDjNMW1pNAX82bN889z/YfLBYsvI3XKwqfJc/73Xo0LCuKXiY2m7g/2BE71nxGzDJBQ43fBj7jYz1I1MP+7v8fuWOsIbeAOtH3jFX6gT5vb2/vFzvpv9cyUkUwkHfFtnN3d7d7J31HvWBemefojylTpvSrH/Ul5hP5b2pqyjDtjFVkk8+8mPQ8lEolx3BSJ+IkqYc/xmgP7qHsTz31lKRUP9IW6NmDDjqo33t5DjLQ1dWV6TMYP8pDexWF34e0vZ0baU9fr1Ie9MHChQslpXJH/+Klow/QOXh38dz4zCTvoR3xJFk9Xw38cWzltRJbzTXWY8f445P2R09TZurHWhD9vXr16swazzLs1SIwrwEBAQEBAQEBASMGhZnXRYsWOSsHhhN2Favht7/9raSEpSV2x+7sZXcu7AasKc/AypgxY4YkaYcddpCUsgvbbbedvvWtb0lKrQOsP2JxsQaKYN9993X1wyLA8sOyJaanVCo59pF3Y3kRH2utHMuiDgSsnbyMBLWyeT6LY3cgW6toyZIl7v9Yk1wDI017YGWymxsG28axYjl2dnb2e75fDp49UMzcUEA/nH322YqiSJK0xx57SMrGBNlYKPoBWYUFhLl94oknJEnf+ta33G70NY3Ro0dnxtRA7B19ACPF7lAAO2dZXBvzar83NDS4/9ty5MVzVov29nb3DLw8MBc2c8UDDzzgGHT0ETHvyBD6YPvtt+9XXspvGQA8O6VSycXTw7BYuaxFTv14Sf83vyz+2LdxtzbGmXq9853vlJSOu7vuuktSlgUBvifGxvDZ7BK1gGcM9qympiZXRto7zwNj29v+nfkDVq+lpSXD8PLJsyyrWw3q6+tz5d7qD1/vcu0LL7wgKe0bmGPmxwceeECSdOyxx0pK5xWyhvgySvvSFowV2DEr59Vi3LhxGc8LsmU9p1LqHdlll10kpfL69a9/XVLaJ7QLdYR5tVl1+N7U1OTGuN1nYWPji6IS62fj/n2Gnnnr7rvvlpQyq9xjvRyMUTvP0v/02U477ZTxsFoG9swzz5RUPKuOXS/kMZ49PT2uPDYzgfUcMI/YfqCsfLJvqL29PZO9KI+JHQyBeQ0ICAgICAgICBgxKMy8Ll682MVnwHBg/RFjtdNOO0mSDjnkEGc1ERd4zTXXSJIefvhhSWnsDit7VuNYlvvuu6+kNIMB3w844AB99atflZTuVoRZefTRRyWlbI2NpRkIkyZNyuyOtNYHjOL48eOdBYhFhUVm41Jgcy3rYVk+P/4ES8nuTM3LQ1ctKjE+wNa5sbExwyhgVf7973+XlO74homkH2BPAdY6Vh1t4r8PYK3XWsc8wBSQy/EjH/lIhsmifWkLGwtp41it1Ym87bbbbrriiiskSVdeeaWk7O7TWtnz1tZWV24bl2h37fq/2VhXvtMuxMMRy2lzLtr49paWFnevlW37zqLo6elxfQKjQp14F+Nvk002cb8hhz4rJaW6Bu+IzZYBiwALZvMr+3Wyu2vpAxsHPhDq6+tzY00t/Ovoo/3331+SdOSRR0pKPQfopwsvvFCSdO6550pKY/Zhix588EFJyd4AyxTZ8tTqASmVSpl8rjbrCFi4cKHLD8k1MKh4c5BH612gb5ETmB6Y2xkzZjjGLw/IcRHU1dXlMsqV+pLfGBPMi1Yf0A/EiRLbijeBWEk/KwS6hTFKm9j5o+g+gnK5nMlgkBfPPmPGDDfu6CsyDlFn+pS6Mh7Zu0J2F8v2dXZ2ZrJiWE9BkewSPnp7ezNtb+cD3rVq1Srdeeed7v+StNdee0lK562BYteltB1tzGh3d7fzoKCPGHs8A+9zEZTL5YwnNy/7QHt7u6sX77Q5d9FzMKt58zU6ivlkzpw5LgMB60fqaWVsMATmNSAgICAgICAgYMSgMPM6adIktwrHyrn33nslpZbrwQcfLClZ2WPdw3TBVACb649VNzEkv/71ryXJWTqf+tSnJCWnShFTQyzNv/zLv0hKmUB74lA1GDNmTIYpop7E8mApdHZ2OkvEWtDUh7+/4x3vkJRaxb/61a/6PdvGwvq7dC3jN9SdwN3d3ZnYG1gra+12dXVlGBMsQawzLHkYIdoPawu2gPLCCLz88svuRCJrMQ91lzOwLOlFF10kSfrEJz7h6mffRUwOsmp3Y9pYIZg+6s/1jY2N+uIXv+jeI8kxsUNFc3NzhvHNY2C7u7szp7XYmFaeQawdbQDs7mLk1Pcw2B3JoBZGi3cyhmFreJY9aenAAw90fUy/wdYh28gldeOZyKPVa1y/dOnSTHwpn/Q5XgbbbgPBbzub3cHGTZbLZefRwgtFrluYLpCXFxqPAPGTMLDXXHON7r//fveeSu+vFf4Oe5u5gnfBkt5xxx1uj8M+++zT7x6uQT7xqiFz9DV9SpsQy/3888+7/iRfph3XtbDLS5cudePfMrB2Luju7s54rWAd6SPmEfaToGM5Ye6jH/1ov7L6MsTcgrzbHLk2xrsIbIwr8k75iEXdcsstM3sjOBWP9rA5amHgOJmTU+z4nftWrVrl+pB60/aUp1Zd47PmefMsn/fee6/zzhxwwAGS8vdJ2PFsZQIGk/5+9dVXHVPNeEeWa60bGCwHvV9WxpXd98Pv6D10ps3TT325jr7ceuutndeduHbakjbI88xYFF687rjjjplEtc8//7wk6bzzzut37dy5c/WZz3xGUlrJ448/XlIaqMzgpcAMhtmzZ0tKNx/gUvjhD38oKRFe3nfIIYdISpX5j370I0npYrMIent7nSDb1CIkSPeP6KMNaBM6gE08CCmbyGwaExZ4uA38BZNN/WOPTqwltQuwxwyiDKzry3ft280zTPqUk74DHA3nJ1qX0r7s6upyisweSmBToRSFVTykD+KYPL8tUYjUyypfmzQb8GxclQxC5G7UqFFuMH/2s5+VlG5QZOEAik6cLS0tmfLRVpUWljaljd1IwKLAHlrApGVTZPmb7qybzb6/ltQuAPfotGnT+pWPjSsYql1dXa5sjA9k1zcmpDSdDuPaTvb2sIMJEya4v9mUPPS5NcqrgX9Ih3XtWuyyyy7uaFZSudkQChuCZevNRGkPepg2bZojAB566CFJ2T6rdRHb1dXl2tMaqOhOxsJuu+3m9Cbu/l/+8peS0k3A9Ls9+AS9wZGZHJlNqMDuu++uv/71r5LShRYL5VoT20vJGLcudNrZhh3511AWu6B7/PHH+z2fED10KUegn3jiiZJSnbRq1Soni3YzI31JPwyUKL4S/CNLrSubMYfO8xfopJSE3GKBSd0x9OhzdOM999wjSTrnnHMkpUbksmXL3LMZh7Qt8lAkbMei0sYlKR1npOmcO3eukzPa1h4okLcxO+/gEOqz1VZbOV3MIhbdwLj15+Rq4ZM0eWPZT4Nmj4y1xjV9l3dd3uFHEydOdG3H++xasNr6hbCBgICAgICAgICAEYPCzGu5XNbmm28uKbUWYSGwvlhRX3HFFY76vu222yRlj1778pe/LCk9Mu5d73qXJOm6666TlG7sOu644ySl7qSLL77Y/Z9gaZiEG2+8UVJtqbKampock4EFYFPUYE1ssskm7jfYX6xaGFh7RC2W43ve8x5JqTsMlwlH7z733HOuPS0LibULg1ALLAti6X7/OnvUHRYSzBXle/rppyVlkyn7CYol6fbbb5cknXXWWS41DKwnz8SS5rjEovDdrVIaJkCb+QcqwOZwD64R+t+mX7HHyMJG2LAIvz6U4/LLL5eUsgy+CxWPQTVoaWnJMPCWBfDdtdY1ZNPmEKZjN3DBbGL9280C3d3dA4YSSLUxBcCyuTbdGi61RYsWOVmyGwV5BhuaaDcOMWE80W7WU9DR0eHcXryDvoYZpt2QpWphDyexjAV1OeeccxzjyjWMGfooz0th3aDoa1zt++yzj0sXx4ZT3Nqg1nRnfl0AbUVifvTFdttt5xhG0iDCuNpDbWgvvtMWXM9Gp89//vOSkuNW0cl4Cu0msFqwdOlS10ew7/bYThizcePGOZmDbbJeTDyN6EqeybyB7sSTR51WrFjh+t9usrOeiKJoampyc1HegSR+GBLj5ne/+52ktL/Rvege6ob80h/M+YR3sIFp4sSJmQ1bzEVDmQulZIzbQwloN7yjbATfc889XZ/bzYg2TM2OPcB3O+7HjBnj2HZkBfc6fV7LQQzlcjmzUc+GnSEfo0ePzoTAoBeYJ2gj2h09zGeel7Krq8vNr3vuuaekVA4YA4zlwRCY14CAgICAgICAgBGDwsyrHzuBhQm7iMUFA/fwww+71FjEi3zgAx+QlKa3uvjiiyWlabbOOussSWncyzHHHCMpTQB/7bXXSpK++93vOoaVAG9YoZNPPtm9vyi23nprVy8sRiwW4mmwUDbaaCPHQu+6666SUoaVa7HAbCoXLBMs5wsuuECS3Aamp556ylk9WOFY0rwDxgDWtlqsXLnSPYtnW+scS2vx4sUuJgk2lE8sKFhErDKAxUydYXBJ3bPPPvs49p5UMDbdEVZvEfhHNhJQz6dNKL5kyZIMm4c80++U0R6NSD9YpsNnFBgT3EO9iLejDYumzKqvr8/EaFrYTUZ+XYA94hbrl09SndgjJmEg/ffbcgx1009HR0dm4wN1gaVhXDU0NLj0elxD+9AO3IOcwqQcddRRkrJj1WcRYBjoY/oNHQG7huekWliGwh5/idyeeuqprl6WcaV9kS2bsgxdxN+pH/dttdVW7jAZNnURdwfWxDHNsHR4mygHjPiqVauc94GNuta7M5jM201g//Vf/yUpGavoMerGJ++vJfa1o6Mjw7RSLxtj3Nzc7DyQ9B314Zof/OAHktJY30svvVRSykLajczvfe97JSV9bjfE8WzkxsarF6mjjSeHUUQumC+23HJLpzuIz0VPwqoTL0n5WBuwkRBWk1ho5vWmpiZXDt5n27jWtHx+/Ll/NLqUxoFTji222CITVwysh8geE0+72TRV/mZSm+oPOWUeRY/VUkf/024e81lt6s477TG3yBp6kEOkAOPWphL11494LJkLWVfY8ZRbn6quCggICAgICAgICFgPUJh5nThxomMysH5YdbOiJ16qrq5O//qv/yoptTRhBUhG/elPf1pSahWy+rZs2N/+9jdJqYWy5ZZbZg46gB3BSj366KMlpcm4q8Emm2ziLD+btNjuOveT/dsdplgsxOTAlth6YdFg1RHHO2HCBMeS2Z18WDWUpyjz2tvbm4m5Id7PHs/q796kv7EM7VG/lA/rDAaTOvMOYpRXr16d2WWPZcq1xIDBoFQDn3mFVaM+WMLIYWdnZyZ2lbbxE0f79bBxPdQfdpU4yJUrV2aOPbbJ/ilPUTbET5WFfNrMALC+/rO5B9ki/o/fYWAZM9xLO9qY2YaGhkxMOOVhrNa6m9tPvJ53MATyOWnSpEz6r7yjXNnFC7tA/CEss921PWHCBKefbB1hlWqtH7DpYZBF2KhJkyZl0p2h72yGDrwVfCeGzo/Vl9KYujfffNOxOehMjjWGRRsKbP8TF0ysK+zNb3/7W91xxx39/mZBG9B36EbSJtpUapT/jjvucMwrz0b3kpGg2hQ9PsaPH5851IR329jEBQsWOBYPeWZepC/RFzyDMhJziqePHfzMG3vttVfmWPNKh5VU+j4YSqVSRodbJt5PJ8lxxMgXHhGyD1AXdp3T5ySvnzlzpqR0XOLNOOigg1z7EN9r440Hy9qRB3/OQIZghNHdeAeXLFnidAvvR9dRZ9oHzyrf0bc8i3HH3o6lS5e69mLc0l88o5aDbSp5v5BX2gxGfNmyZa49Gat8Um+blQY5pT2QZz+eXUr63jK99rCCwLwGBAQEBAQEBARscKiJecX6wgKwzIYfV0c8JNdykMC3v/1tSWkCY1burOyJg7AJ8WHMNt98cz3wwAOSUovBxiDWEms3atSo3HxvlgXyd9FitWPF2JgWLC2ugy22yda5ftttt3XX2FgmG7NSFA0NDe4ZeXGdoKury/U31hfWFawyZcbypw1g4DnSF+vUP7KR9qAdsKh5JyxzEfjtAvsLKh1vSBmwFpFZrGjqa4/IQxZpM777rCT1sTtY7a7ZooxBW1tbxuq34Nnt7e2Zw0CwrGFniFOHcaW8MAXEBdrjOcePH5/ZPQxshoOiqKury+SytVkx/DyDNn6Ma2knmB+Yc+LUkWM8CzAfflYJxgcsjPVc1HKMcWNjYya5N3Ugry2MYqlUciwisoJsM86oF8yW9TLgvSIDjJ9NA/YDLxpMic3DXQtsHC/9Y1nre++91zE1sE4caWsPSCFXKLG6tBseLupGHzc1Nbm6EK/NsykPDHARvP766xkdao+55H0vvviieyeyhX5AZ6FjbV5m4kXRh9xP9oFJkyY5mQG0gT06tWhfNjY2una3z7Dx/vPnz3cZHyg7ngDm8P/4j/+QJJ155pmS0v0v3MfcjxzjBdhhhx0yrJ312NZ6nHhTU1PmcAmbg5W6P/74405XwHxTDuTPemrQPegi7mfOoR132GEH9zd7yAR1tEd0V4PVq1f3O/5Vys4bPgPL3MdciG6nLDaThc2OgU5inOLdOPDAA91ayO6VoJ2rzdgSmNeAgICAgICAgIARg8LmdG9vbybnoT3iFAu2rq4uwzCxkv/f//1fSWmMJwwDu0RnzZolKV2VYyVg3W622Wa5x91hFWBpF0G5XHaWl42vqxQ7ZGNYqR8Wlz3izh4linWH9Y6FvfXWW7t4vrwTn2pFe3u7i22EZcKCsqfFlMtlxw5QHtodZpi60g8wKjb3JUwRMS1Llixxv2FNUkd2j9bCnvsxvVjvAx35R6wNskbfYCHaWKM8675SLkzLFNrcrPYEkmrR0tKSybVo5YVP/zQu2Dti7YjrJS+mHcuwJnxiQfsnrNjd/dWeGjUYenp6XDls/9GO1Lm7uzsTl2eZX2KTYePQOfwOW7DffvtJSttqiy22cLLMpz0yuRbGxz+m2coDzI2fs5Z32wwMyDh6z3pRrMxbfdnW1uZ+YyxYj0WtzKt/4pJlXm1O556eHtc39CG5IGHjYKooDydpsc/BelGo13333ef0lZ23KE8t+V6bm5szR4NbPcLz//SnPzmZQl6stwKvlN1fwXWw58iufyoVxwajj+3YAUU9dq+++qpjxC3zSRvSx4899pjTLehwjrY9/PDDJaW53HkWR3azDwa2juthLZ944gnHtNOmyInNAlIU7e3tmT0u9qhkP1MQckkdiF21+tx66xirtJFtz8WLF7vxYJlJO56LYO7cuRkPId+JzWavxpQpU5weAOhI7qWd8dDg9aGezPnoVH9vBeVnTNtY7WpP1QzMa0BAQEBAQEBAwIhBYXO6s7PTWbOstm1cH3Ego0ePdit1VtW/+tWv+n2SC47cn5x7j9UGq8NKnndtttlmbvWPhUu5YMriOJYkzZ49u+r6+VZpHuvjnxZB+bC4YHtpGyxCGC6YTpunEGsZ666zs9M92+ZjG0pML/fbE78ojz0zfPny5Zkd8zAY5KDE+mbHJOwCTIa1xMHixYvdb7Yc1JF7i8BnGpA/2s62WU9PT2bHKvID+8Tz8ApYubDZCPxYSeqRJ0s23qdalEqlDLNZ6bQb3oV8wuzTNzbnHqc48SxiYdlBDBuNHLe3tztZt+xk3olb1cLvR7uD2rZXuVx2fW13AhNnCEtl4wa5nlgz4i1hdZctW+bYOpsXeSgnT82YMSMTiwzDzfdKjCf9zrijnjae2ebZtR4lxpx/ApvN6mCzKxRFqVQaNOaZv48fP15nnHGGpJTRAdQV3UIcJL/jzaGv0cN4vpYuXeq8BnY/AqiFXV6xYoVjl9AXlAmdT9vefffdbv6yLDrlp/95lmXJkFH0InL52GOPOTYQFtrOG4z5ol6CMWPGuHKgr+28Th8+8MADTh8Q/8l8YT1X6FnGAPML4xTvDozgQw895PIQc609ca1Wb09jY6NrY5sX13oYpbS/bM5VWzfqbFncvNO83nrrLXeSFiwt7LLNP18Eb775ppN75nPLDlOXzTbbzOl5GH4yP3DaF2Wh/Ym3JhsG/cD4I3PDokWLHIvL3+w+kGrHYWBeAwICAgICAgICRgwKm5p+XkdW2/fff7+k1ELgZKWdd97ZWSCcVf2FL3xBUmoZE0vDdTCxWDlcDwN02GGHSZKuv/56t2sWFpH3Y1mccMIJRaun+vr6TEzQQJYqFgbWAlabjaOCHeFZ/N3uCAWlUikT4zrYecnVoqGhIXMqj2WysNJ8hpg+whIlNpD25zsxd/Tx9ddfLym12riup6fHvQc2zFr0tViZvb29rq2Il7Jt5VvXNh4U5sqeBU9b5MlDJbmxuzKBbd9a+pJ2tnGTlkGQ0pglm6eVODN2mX//+9/v94w//vGPkqTvfe97ktLTZjgJz8+owPuoC7K/JuTU5jqulHGDcqA7kCXirezOWFgs2s1myYDB8llH6/XgmbVk/rj88sszWRRofxhEPyaSNqB+MMOMK36HQV3gi/QAACAASURBVEEP+oyRX1+7U1xKx7iV8Vrj7H25z8ss4senEj96yy23SEpPQYPNPOWUUySl+YhvuukmSemJVHgIuJ49FQceeKDLesLfbBaXWupYLpfdvGMZZuSJU7Vee+01JyfUHf1LX8G8wnwh73Z/B/Lhe1B4D7lF8aYMVVbHjRuXyb2JzPB+crQuWLDAzQd4UTlV88gjj+xXB8qB7v/v//5vSXJZhH7yk59Iko4//nhJiQcEfUT+b7unoNaT4Nra2lx5LHvLsxlHO+ywg5tXiEHmZEwbC2xPtbIeDrt+mDZtmmOu7XxPOWx2p2rg56QHNtONv/+GMcncB0sKK0w2AuTYz7wkpTGxxLWia+fNm+c8XTDr9D99F5jXgICAgICAgICADQ6Fmdf29nbHXBCLgmVAXCpW4wUXXKAvfelLktL4l5tvvllSauViQf7P//yPpJSt++xnPytJ+tznPidJet/73icptc5uvPFGXXbZZZJS6xTrlRM7KCcnOlWLwSxw3yKysWmwIVjjWKZYMlgXnEJl4+98htbmc7MWSa057drb23MtVd7hMwFYgrACllm1bAF1Ii4Si8/GQDU3NzsLllNVYCKw5IihKYLJkyc7KxkLEEsY+DvzqTPsM3LDM6xFjsWKBWx3jPrxy3a3qWUKamW0Ku1Ut4wSaG1t7Zd7WUpzKhLLBLPC7m12+v7TP/2TpNTzwXnj7Ipuampy1jn9Tf0pT9F4Xh92fOXt7u/s7HTjBRmydaN/iBO0524DdBIepKamJscwIE923NQyFqdPn94v7lRKY+XxQBGjvOuuu2aupQwwrTbrh439ZYxxH2N80qRJ7tmwzjBpQ9nhbIEuhJlDf1D+3Xff3WWhgdFCTyJDxJFSLuTQejK4ntPUZs2a5ZhIYtfRU5TL6ohqUC6XM+PNZpAh3s/PtWljiGlf9CHzhfVEIavII7K69dZbuz4jHpj4Yat7isKPW8YTRjujG++55x5XbvQ7n4wjPzOIlI4ZygfjijcIdg+Wffr06e5kMfJOM+eAWlhJYD2aNmsD/drQ0ODeS9ls/lvaiTmDNQoyjz62+d9XrVrl7rHZK9BvtFMR+PseKu3dsWW2cso96Hjicak3Zbbtb+OHR40alXmfzZ5iWdzcOlV1VUBAQEBAQEBAQMB6gJqS97HKxiIh9pTYK5iYgw46SO9973slSeedd54k6YgjjpCUxuMQLwtLgHVGNgIsLVbwMAMXXHCBDjnkEEmpdUCMDZaKtcqqRZ5VbGN1SqVSZsckccAwJrCSNraRWDYsMf5OuzQ0NLh2hn3KO/mrKEqlUiZ2MG9Xqw9+4xpyg2JFwnTB9MCAwchjlcF87Lzzzu69WNnEyNRaNylhAWyMJGWnbL5FCENgTyiivOzspa95FjuC2RltM090dHQ4S9Wyt3YXai0xkzADlhG2bO7KlStdPC+MDWOVssJwsdMXxurkk0+WJDfWrrnmGklpLsbTTjvNtQdtThvzrqGcsGXZGZu1gXabP3+++z/9BCtlryXWyu5Qpj1hOGCyDjjggEzMn81fXSszaePZKANtR47MQw89NJMVgzhmZIxyI698t0wjjIefl5t6wPwhB5bxGwqQS8YZMggDPGvWLMfsozNgIIHNi5rnueA6dkvPmjXLyTpyQfYBWKFa4uvHjBmTyZ8J62uZQ5/RsqfB0e+0CX2Nd9OeVEl/MK5Hjx7t5k7ifnfbbTdJKUsJiurWSmfN29OzmO+mTJnivDS0x+c//3lJqQcUrw/yiP69+uqrJaUx6rQBWWy22mor17Z33nmnJOlDH/qQpOpzg+ahVCplWEbreQPz5s1zfWuZfpvJg362+cyJSyaW1PdO2f0zyG1eloxqUOk0UPQk+o/+Wr16dYYxtrD7GqyOt23pr3/4G+OestGHlGMwBOY1ICAgICAgICBgxKCwOV1fX5/ZKUdeRKwwLKfdd9/dxapiRX3zm9+UlLJ1dteijZ3AAsda+MhHPiJJuvDCC50FAtPwyCOPSJK+9rWvSUqtnGuvvbam+tmd2cCPeeVarAbqAYMIUwyzjLWDRcN32sc/r5732nyveQxbtWhvb3ftay1W+sU/SQMrk/dSN66xzAXPgHEgbtWePz5//vzMbkRAf9cS80oGCyl7ko3dSTp27Fj3buppGTjaCCsSJoJ4O8s08q7x48dnLFfbZjaTRLXwn2t35GPJ0g+vvfaaq9MTTzwhKWXjLJNjGTYYDtqCv5N1YPvtt3cMFiwQ74JhWxPMq5V1foe1aW1tdbJCjCH9YXMqIx9cT3/yLKt73nrrLcfGc82ayLlcLpczJxTZjBbUZc6cOS5m1e5GhoG1rD4yQv2QSxg6Yk9bWlocc/ab3/xGUjbueyjxksCewMcn426rrbbSRz/60X7Xsn8B5DE9NiaTPv70pz8tKfEOoo8oE7pnKPr0//2//+fG2f777y8pjeElQwftXldXl3tqI884//zzJUnf/va3JaUx58wjdi7g87XXXnNsHjIKw0nedXvqWLW4+eabddJJJ0nKnoaEHvDnAPQiMp2XM/jGG2+UJB188MGSUk8pLDNjgbnzlVdecUw67cH4IK62Vg9BY2Njbl5cgF6dPn26i5vHU8qYon84KY424JMxbLOloF/835BldDXtVgvL7HuGbGyvzY/99ttvu9/s/JXnlbbfrcfGz7KAzmNc8C68PujdQetU1VUBAQEBAQEBAQEB6wEKmym9vb1u5Wx3eB599NGS0pib5uZmlxeMc5fJu3frrbdKkh5++GFJaRwaVgcWDfknTzzxREnpqU5+vCnMKjlgsYqGsvOQd/iodLa9jR/BWmJXMvnfsDKsdcf9lBWGq7293Vk9eTkXa2VDiDWSsvnxrDUmpTt8YQfsDkKYHZgNG+9DDDTv4vply5Zl4sWIg7EnuRTBXXfdldkFSf2ITyX+qru728UdIYMww3ZXrAXtwSfjAGaspaXF3Uu9bKYCG0ddCyrl65T6ewPoC+TL5ryknMQpIyOMT8so8N2XU57FOxiHtZ6w5dfNygHvgi2YMGGCkyvid/OeZeO9LQsG/Hhsy3YOJhvVYMWKFe5++g52yu6uv+6669yYgGHzmVOeJ6WyBqgf99uTCRcuXKirrrpKUhpfaFmzocin1Vc8mzy6zAWlUsmxocRJ4tUjSw17BOh/y6Iin+9///slpXGtCxcudIwg76Xdqt3dXAlNTU0uLpzTn/DkwAr6J5zZscC7mQeIs4a1xZuYJ7N+xhHkFU8QYxfvCblRi+LQQw/N5BhFR8LYwzbPmTPH6Vxk2MaF/+xnP5OUekhhm/NOkuT7M88842JHYSrJTMC+m1rR3t7u3me9v+h1GMGpU6c6NtvuZeAe65Gxpy8Ce52fFYCxz94SchnT9rRbNfA9yraMfKI33nzzTbf+og+t3OZ5nOx3GGk/qwL6mfmWe/DcI8f+OqUSajqkII8SplGOOuooSUlaHSYXFAbKBWGjAiwAEHRcHGxGsI03f/58/fznP5eUJs5lQTKU1CeSMq4dkLdZRMoKBIJgJwG+02FM9HYRySLCvsdHrS6SJUuWuIWFDZrHheeHFVAnlKJNbkz5mOBZqPMM2oJ3sXDy+7SSMqasRXH66afnTkgYQ2wO2HfffV2boxCZ3Cm37SNbVgY4A9VfBPlB8P41wKbOqgX2cAIWQH6APwr4tNNOk5TdnGIPFLCJ7e3vyE9TU5P7G2OZMB6MllrR1taWSe9iDwHxN1shKyzSKKMdzzaEBDm1qf9AR0eHex9KnWfYY6yLgPHkv9MekYh83HPPPe43kr6j9xh31Bd5tRs87GTM5PjjH//YLQK414bO1Hrspg+7iKW8kB533HGHa2cWnR/72MckSe94xzskpYsl9JUN0+KTd7FgnTt3rttM64cVSUPbjPaZz3zG6Qn6EzKF8eDLk5UtvlMPFpx8olsIcbGLWO5vbm52co6uoY0gk6zrv1qMHj3aLU7R4ffdd1+/ciMnjz76aGZuo4y4hb/zne/0K8cvfvELSalcon+t+767u9stcJB9nslhFpBFRVEqlTKbZ1mDcKgOG8Jff/11J8N2gWX1uF0r5BmD/rGxLO7Y+HbDDTdISsdrLahkZFuSCblZsGCBa3P6yB7tDvIWsfboWcbcxhtv7MrCxkn6FPKhWl0awgYCAgICAgICAgJGDAqbnB0dHZnjCYFNOnvcccc5C5LAe2h/LGRW9H6KKCldyWPxW1fMCy+8oFNPPVVSGoqAlW03RRVBpcBmGy7gp7exrI5lo+1mAMu0WWvPZ3At0zcU152PFStWONYD69yy1H4CYyxQy0RbNoY+pI72mcgNnw0NDZmNQrAXHAOIVVYEPutqN/yQzuucc86RJF155ZXOU5DnwrUuH8t62P7xU4HQBtSLa63bs2iqJT+VWl7aEsbW8uXLc5loWA7KR9nt8YaMbZ7NWGtra3MsJEwT5YB5rTVlXX19fYZFtpsp8VA0NjY6dmiwTX7W5W83rVXyuNgwH8s01MLeNTU1ZcY09al0nDFppNCFs2fPlpQyQ7Q3bYV8+O5AKfWukI7wySefdKyHDZ2wrO1QkJeEHOZ49uzZLoSAzX/8DeaGsB/7TOpIWAEhTLB5u+66q/P6rUlssskmTkZhzGA6rTz19vY6mWNusu3LJ3KAfDAeYce4z9dRdl4m5AJvCyxhURZ91apVjvVjjMEKMjf4qQ4Z/7S99Ura1I+Ul/Lbv/vtx9yODOEtgwnGw1sUPT097tlWj1MfWN1nn33WyRnXoEdt6rvB5m672XbRokVOjh5//HFJ6ViwRwUXhQ3LyEtvtWzZMsdo8xuyRHtb/ZQXYkk/oV8WL17s5gs8dNTXMvWDITCvAQEBAQEBAQEBIwaF6YLm5ubMsWmszolv4PfVq1frhBNOkJTGpnDsIcmYuYdNCDb+gphZYmJh98455xy3YYG/sfEG1LKhyU9n4v8mVQ6uttdaSysv0J5n5B0t6FvpebG2tTKx5XJZDz74oKTUosLyow2xglpbWx2DZ1kn7oH14GhHNs4R14zFb9mppqamzG9YlVh4sHakfSkKawHShjC6Z511lr773e9Kym5oQDbz2FF7TCdl57NcLjuGm/f7sU3+vbVsGrEWtE0ITVqZSqlVkEv6hntIu8TfYbxgWmFgue6ZZ57JtI9Nkl9rSrf6+voMM2/lhfZ86623Mn+zHhMbm5+Xtq5SOQZjaddETKiUjXn12w69ywERHKHKGCGWnNRDxPCyCQivFQcfcL9/aAmw8lhrXGglHUwdYRP5nDhxok4//XRJaXog0i4S62rLY4+a5NkwhCTob2pqcmwZgFGDNasFo0aNcow3G6PsASBWf0vpuLMbJGGa+W49I/zue6+kRP6QQQ4UgSnkHfZwoWoxefJkdy+yw1hBvzFvbLrpppk5jnvtRm/+DvNqPQZ2M5SfPB+5QsfYo6mLor6+PqOnrNeUtcf+++/vxhTziI3jtinvrMfVen/YDPbiiy+6wyWQfdocL2mtyOt3u2mwp6fHMaX2iG10DTKPbFU6GMe/D3b1hRdecF4R2pC626OgOdAqD4F5DQgICAgICAgIGDEobE43NjZmLErLcMBsbLLJJs5SIg4NdosVPWwAsTPWUoE9IkYWy3PlypWOlbVH7WH11JLMdyDGE/gxj3ksqI2bsQxgHmvqM7T2Xhu/WWuqrFWrVjlLGcvdZgSgvzbffPMMc0oZYd+Id4KhJT4KtoD+IJE0VrKfnsSWA+uzllRZA8Ey4u3t7c6yPffcc/uVAfmhvW272zRXNoVYuVzOTZFid5PX0pd5Md02btxPtp0XUw7TbWPxbPyazbywfPlyx3ZwDRY0TEGtRzdWOjIR2CweHR0dGVYmL2YZubTjmvsrseS2f2xcXi3ZInwdYHWn/b0SYHnYRY8XBfYO1o6d2TCxMLR4Xx588MHcQyuoZ63ppEqlUqbtYPEtk1SJ+ca7ZrMH2LFpPQjMBWRRaG1tzTBMzCnEDNuk9NWgsbHRvZt+YI5jrPDcyZMnO73KeONvNkYSbyLxzcx1eDX8AzSkpC15Jim7bMYIe8RytSiXyxnvBX3FWLdHmPqwWS7oG+YJ7tlzzz0lpX1u44DL5XImtST9j+e2Vg9BT09PxivG90pjm1RZ6EsYWOYOO3fbucLum6BNZs6c6TJtwEyiB2nrWtLzdXd3Z9hRWz9f71lmm/IhdzCveOaY03kWawP0Cn399NNPu3hpmyrLyvhgCMxrQEBAQEBAQEDAiEFNZoqN37SrdD92xbIyXGOPUyO+gxU6K3qsMCwqVuvz5893bK1lxuzuvFqRx7z6bGseg5qXocA+217vx1UOFtNaayzhxhtv7FhSdiBj/cDGwE7ttttujuWAmSL+DCsTy/CMM87o9x5YU/oclh2ZmDlzZubIQL6TlYL+XtOoxHRaFsd6FmwZbaynjXfu7e3NxKFauUCu7RGmg8GXbRtXbeXCv9bGZvLevEwSNocszBcsgP8uG0MIcwBDWBQ9PT1Ol9gDO2xdm5qaMvmHrafCej0sw2LjTS0TUwl5OaGLwsqO/V5XV+fGEQwVR4dyLClj2jIqlmnGqwFD9/DDD7vMA/fee6+k/MM0aoH1WBDzxm5qvre3tzuGxx7qYRm9vPLY6/09E7QHcwtH0Q7lkIIpU6Y42Zw1a1a/T97Hfo9bb71Vc+bMkZSyzuhf9Bwxgsgw8yT1sMcJ+wwfdUdfVzpURyrOTvb29rp+gTk+/vjj+73fz/oB6EM8bhyAcdNNN0nKyuWRRx4pKc0Fb3WVn/XD6iW79igK34tqdTPwxzh9jmcY1hsG1h6Ji26knbifTz/jAvcSs3zeeedJSvuVchFXWg06Ojpy92xQX9/zZNvCeqV4N588m7mTNRhx5shvfX195jh5e0BOtXt5AvMaEBAQEBAQEBAwYlCYeW1pacndIY0VAePm5/nkb/ZITa6FpcE6wwrDarOxJJtttlkm6wGWCQxELbvxq2FQKjExeXGp9u951nClHLKVTvJaE9h8881d38GKUW/i47Agb7jhBrdj149zlNKci7AG5Gbl71hSxOIRJ4NV9txzz7l4MxtXxDP8U4jWFojjIdYG+baMHNYx7AgyafNpItNdXV2ZHavUh2ux2PNOMMlDT09PhtXNi7v0WSqupTzWO8GY9eN2pbQ/bJzilClT3DPtDmieUetOfD+bB23KM+1O5FKplBm7tAflsdkxaBdbXmBZHv+9awqW/UXGbExfd3e3y2f94Q9/WFLiuZDSdkf/wWjYLBg2hygek8MPPzyTqYWxbOW3FljmlXbGy0Nu10qsGWVFT5111lmSkhziUtqnPNOeeHTZZZdJSk69Qpbt8c9DZZWRH2QDNgo5w1tx0003OeYVnch44xnoAfqGeiP/tk/p62XLlrl6oJ9s7LZf5iKoq6vLxOjDXts9C6VSKXM8Me3N7zZziNUT1Mm2TX19faav7DxaK/NaLpczcap5TGUlHUA/8WnXJPYoYj7tbv329nb3f+ZiPCW236Ioqrp+3d3dmT0B1ovlf/J/9JE9fdJmhkDGibcnMwPX4UE/7LDD3LPJysHaj2cgL4OhrlplHEXRmtXaw4A4jnP9fxt6/aQNv44bQv2kDb+OQU437PpJG34dN4T6SRt+HYOcbrj1C2EDAQEBAQEBAQEBIwZVM68BAQEBAQEBAQEBw43AvAYEBAQEBAQEBIwYhMVrQEBAQEBAQEDAiEFYvAYEBAQEBAQEBIwYhMVrQEBAQEBAQEDAiEFtBwGvAURRdIakwyXtKWkPSRtLui6O4/OGq0xrA1EUnSjpXyTtLGmCpAWS/iLp23EcPzScZasGURRNkHS6pBMl7SZpqqQOSU9LukrSVXEc93jXbynp85L2kTRN0nhJSyS9KOmnkq6N47i2xJ/DgCiKLpU0U9L2kiZKWi3pH5J+Lem/4jheMozFqxpFx1sURaMlfU7SGZKmS2pTIrffiuP41nVS6AIoKqfefXWS3ivpfEm7S9pI0kJJj0r61ziO/7ZOKjBERFH0ipLxVgmL4jievA6Ls8bR10/nS/qgpF0klSS9oKRv/784jmtP1roOUcM4bJL0z5L+SdIMSc2S5km6U8lY/Me6KHcRFKljFEUNkqK+a/dSMk82SPpAHMc/XmeFLoihrl+iKPqJpPf3fd0ujuO/r5WCDgFDnfvWdh2Hk3n9V0kfVdL5rw9jOdYa+jr/Zkl7S7pd0nckPS7pVEkPRFE0Ehbq75L0I0n7S3pY0pWSbpS0q6QfS7q+b2IB20h6t6TlSoT8W5J+p2Ri/amk30dRNGxGUw34pKRRSiaL70i6TlKXpK9I+mvfYn0koOrxFkXROEkP9d3TLekHkn6pZFF4SxRFH1+7Ra0JReVUURQ1S/qtpKslTZb087777lWqtEcSlkv6aoV/lw9nodYQfibpJ0oMqV8o6etGJWPyF7Zv12MUGYdlSXdL+i8li6P/kfR9SW9I+pikp6Io2nmtlrY2FJnbRykZc+9TMgYXrtWSrTnUvH6JouhkJYu66s93HR7UPPetizoO5yLik5Jek/R3JRbMH4exLGscURRNlvQZSYsk7R7H8Rve346Q9AdJF0u6dnhKWDX+JukUSbcYhvULkh6R9E5J71CyUJCkByWNtyxXn4X9e0mz+q6/fq2XfM1gTBzHbfbHKIq+JukLSljm6o86GT4UGW9fUbLo+5Wks+I47pKkKIomKenzy6Moui2O47lrtcTFUFROpcSwOknSJUpY1koyO5KwLI7jrwx3IdY0oig6TdJ7JL0sab84jhf3/d6gRI+8UwkzefVwlbEAiozD0yUdrGQBe6yR669K+jclc8z7K98+bChSx1ZJsyU9GcfxgiiKviLpy2u9hENHTeuXPh36IyUG2OS+e9dX1DT3ras6DtviNY5j19lFjjkbQZimhNl+2F+4SkndoyhaIWlSxTvXI8Rx/Iec3xdGUfR9SV9TsiC9se/3jpzrO6Mo+nXftdutlcKuBVQavH24XskAHhF1KTje3tH3+W8sXPue8WYURd+S9F1JH5b06TVdzlpRVE6jKNpGSR0elfTFOI4zCa9HUnjLBg7k8VssXCWnU74k6TQlTOTVw1C2Qig4Dmf0fd5iDStJv1GyeF3v5pAideybL25b22Va0xjC+uWHfZ8Xqr8hvd5hCHPfOqnjSHLfjjTMVRJzt18URRN9pRtF0WFK3EC/Hq7CrSEwuQ96oHQURSUlFrYk/XWtlWjd4eS+zw2hLhbER75U4W/8dtQ6KsuaQCU5PUeJcfkzSWP63FxbKonP/sP6GINWBZr6QpG2krRKiWzeO1LiQQdANfK4dxRF4+I4XraOyrQu8Ezf5wlRFH3HLGBP6vu8ax2XKaBGRFH0PiWG1ulxHC8ZwaRd7ty3LusYFq9rCXEcvxVF0eckfVvSs32s4xIlMaGnKIkj+dAwFnFI6IvHem/f19sr/H2ikpigOiXswDGStlUSV3jzOirmGkMURZ+RNFrSWCXxkIcoGbzfGM5yrSUsljRFSXzhs+ZvsEE7rtMS1YgB5HTfvs+xSjYTTvD+1htF0fckfXyELfwmS7rG/PZyFEXnx3F8z3AUaA0Bw396hb/N8P6/o6Q/r/3irDPcoiR05x2Sno6i6C4lhMg+SvTPd5XEwwas54iiaJqSuNFr4zgeUaRVtXPfuq5jSJW1FhHH8ZVKFE9Z0gckXaRkY8k8SVfbcIIRhm8oiYu8NY7jOyr8faKS2KV/k/QRJYv2yyW9r5KLdgTgM0rq8wklg/d2JXFobw5rqdYOMC6+0seYS3I7+j/V97UpiqKN1nnJiiNPTjft+7xY0mNKNqNtrIRRflFJLNeX1mE5h4qrlJR9spJNFrsp2Wi3taTboijaY/iKNmQgj5+KomgTfuwzTL7qXTd+nZZqLaNPT56hJAZ9B0kfV6KHjlCyqfDnI8y4+j+JKIrw8KxU0ocjDYPOfcNRx7B4XYuIouizSnZpX61k8TZKidX8kqTroij65vCVrnb07Tb/tKTnlWykyCCO4+fjOK5TsnCfpiTA/YOS7vUnoJGCOI4n99VnshKDZIakJ6Io2nt4S7ZW8G9KUqK8S9KTURRdGUXRD5WwsD1KNllISSaC9RaDyCmL8gVKXFxz4jhe2Rc7e4aSen4qiqLGdVbgISCO46/GcfyHOI4XxXHc2lefDyvx/GykZAE0UvG/SuIit1HixfphFEVXSnpSSSgSGwfXa3ksir5sGL9Qsni4UIk3ZKySOk9ToktPHb4SBlSJTyrZtPSBOI6XDndhiqLKuW+d1zEsXtcSoiiaJelSSb+N4/hTcRy/1DepPK5kF+nrkj4dRdGMgZ6zviGKoguVuAaelXREHMdvDXR9HMfdcRy/Gsfxd5SESRyghO0akehbHNwk6Vglrub/HuYirXHEcbxQiVv9P5UYXJGS9G43SzpayWJoed7mvPUBVcgpCvb2OI5X+3+I4/gpJTvbN5a009ou61rG9/s+DxvWUgwBfbGepyhZxC1UYoi8X8lu70OUhGNJSQqpDQl46r4Yx/EP4jheGMfx23Ec36bEwGpQIuMB6ymiKNpOyWbRq9bH/NhFkDf3DVcdQ8zr2gMB9ZkUGnEct0ZR9IiSRexeqrwRYb1DFEWfkHSFpDmSjqoh7IFdpbPWZLmGA3Ec/yOKomcl7Wk35G0I6HMJ/UvfP4e+NG91Snbpr5eoUk5fUKKE8zb4sLgdCaERA4G6jxrWUgwRfVkvvtX3z6EvdGVPJQnUn6lw60jGQHPIU1EUvSVpWhRFE0bKYSn/B7GLpCZJ50dRdH7ONXP7NjadPhLiYe3cp2GqY1i8rj009X3mpTLh9/WWvfLRt/nsG0pcdcfUuFib2vc5aHaCEYLN+z43KHflIPhA3+d1w1qKHBSQ07uVpFfatcIzmpSmgXllLRRzXeLAvs8RYSDXgPcoOXXqZxtgKTk4IQAAIABJREFUarPcOaRPRsf0fR0Rc8j/Ubyi5HCNSjhRiSv+Bklva2TpGn/ue0XDUMeweF17uE/JbvsPRlH0gziO3SkcURSdoCT5dJuSpP7rNfpyKV6s5HjQYwcKFYiiaH9JT8dx3Gp+H63UxXXL2irrmkQURTsqSfy+0PxeL+nflWz6eXAkxjENhL76tcRxvNL8/s9KUkw9qfVw8VpETpV4AV6SdFwURcfEcXyn97cvKYktvMf2/fqIKIp2kbTA1rdv9y+70df3w1AGRBRFY+I4ftv8tq8SQ2WlRnAo0gC4T4lx9YUoih6I47jd+9tXlMzfj8ZxvGI4ChcwOOI4flLJ8b4ZRFH0JyULuy+sb6n5Cs59SzUMdRy2xWvfqSmn9X0lj9+BURRd3ff/xXEcf2adF2zN4ZdKcvAdLem5KIpuUhKvtZMSd1CdpIvWd3dPFEX/pGRi6FaiTD9eIXfbK3EcX933/89LmhVF0T2SXlWyuWdLSSdIGqdksX7J2i/5GsHxki6LouheJTvQl0jaTElg+gwl/fmB/NvXHxQcby2SFkVRdKeSE2Qk6VBJ+ylph9PXN5arqJzGcdzRd8/vlezGv0nJJrV9lcSHvqlkg+FIwLskXRRF0R+VxOquULK56UQlrOStGvlHxN4ZRdFqJaEgK5S4KmdLapf0jjiORwSzXHAcfk1JTs2jJD0fRdHtSsIjDlYyFlfLhPWsDyg6t0dRdJHS1Ht79n2eH0XRIX3/vz+O4x+vxSIXxv+B9ct6P/cNJ/O6p5Ij/XzMUJq37x9KAvRHJOI47omiaLaSXaJnK4lvbZH0lpLJ5D/jOP79MBaxWpBbsaQkVUYl3KP0dJsfKUmQvq+S2NYWJZbZX5SczPFT/9Sm9Rx3KTkt5GBJeyhZfK9SchTpNUr6cMANa+sRioy3diU7vA9Rkp9XShTYlyV92zKy6wmKyqniOL4/iqKZSup1hJL+XaSkz/89juPX1lpp1yz+qCSV0l5KwgRGKYnlvV+JnF4zQtPT+filEj16npI45PmSfizpG3EcvzKM5SqKqsdhHMev9+3o/pwSQ+R8JZusFyiR40vjOH5+HZS5KIrO7ccre4ToQX3/wHq1eNUGvn7RCJj76np7R7pOCwgICAgICAgI+L+CkCorICAgICAgICBgxCAsXgMCAgICAgICAkYMwuI1ICAgICAgICBgxCAsXgMCAgICAgICAkYMwuI1ICAgICAgICBgxCAsXgMCAgICAgICAkYMwuI1ICAgICAgICBgxCAsXgMCAgICAgICAkYMwuI1ICAgICAgICBgxKDq42GjKBrxR3HFcVyX97cNvX7Shl/HDaF+0oZfxyCnG3b9pA2/jhtC/aQNv45BTjfc+gXmNSAgICAgICAgYMSgauYVnHvuuZo0aZIkqb29XZL06quvSpKOPfbYzPXd3d39rrW/g4033liStHTpUklSR0dHv9+5f9myZZKkxsZGTZw4sd+1999/f7/PrbbaSpL03HPPVV2/iy66KPdvY8eO7fd9+fLlmd/8v/n38L3aZw8E+6xvfOMbVd8rSf/5n/+pzs5OSWnb0b5tbW39fm9ra8tcw732e1dXlySpXE7E6u2335Yktba2Zp7J99WrV/d7Fp/8zrXNzc1V1+/SSy/NPI8yAcrq/61UKklKZZPvTU1NmXt8cD3X+eD9Vt4rXVekH0866SRNnz5dkjR16lRJafsuXLiwX3kmTZqk3t7EAF+0aJEk6Re/+IUk6fXXX5ckN5Y22WQTSdKMGTMkSXvssYckafLkyZLS/njhhRckSc8//7xrP8pDX2200Ub9ynHFFVdUXT9J+vd//3fX5pS/ri4xwpE5fm9ra3NtPXr0aEnSqFGjJCW6wr83Txf19PT0u86XA8rB33gvMsLfi/ThGWec4drz+eef7/e3rbfeWpK06aabSkraduXKlZKkZ555RpK0zTbbSJJ23HFHSdLixYv7leXGG2+UlPbZu9/9bklp+3D9P/7xD2222WaSpG233VZSqmftuPnqV79adf2kpK3Rbe9617skpfJhx4s/Rvh/fX19v3KsWrVKkjRv3jxJ0mOPPSZJWrFihaRU1/Ds2bNnS5I233xz13e8n+/288orr6y6fpdffnnu36jD3LlzJUkvvvii9txzT0mpbP75z3+WJN18882S0j7hc8yYMZKk3XffXZI0a9YsSdIuu+wiKW2fJUuWOPlFdpBN9DBt9uijj7rxWw1+9KMfuXkYXUP5ka1XXnlFUtI/LS0t/cpm5wv6hr/vvPPO/b7zTHQOOmuHHXbQEUccISnVS8gyY5xnX3LJJVXXT5IOO+wwpz8pB3JCH9C+PT09Th7nz58vSa7OXMsY5B6eaeXZ/n3+/PnuGdTJf6+P3//+91XX7+tf/7orE7Jl9Rzy8cQTT7jx39DQICmdW/jkWXl6kesAsrh8+XI3Txx//PGSUj3GupKx/OUvf3nAOgXmNSAgICAgICAgYMSgMPM6ZswYZ92ymsZq5zt/rwTLYtkVOoBdxPrAOsACXLx4scaPH9/vHmvZrWlYxnPs2LG5jGoRJjXv2WsLpVLJWXFYVrSvtfYaGhrc/7GgsbK4l37HCsaSgiF68cUXJWXZs/r6encvlqdfRv+zaP0sawosA1oulzPvwIq291pm1sIys/51efUYjJHNQ1NTk2OhYKkpL/3gM+Zca9/LNXyH9eA7n/Q9fe4z2ttvv72k1KIHvNP2bbXo7e3NsA18h7mgzZuamhxTQjlefvnlfnWkzDCYfFo2AfZ5t912k5TqNymtP+Ok1rpJCatKGx111FH9ykCfwl6PGzdO48aN61du6gtLQt/R/wcffLCktO+sF4PPsWPHumfTrjwDWAa2Whx88MFOPqgLz6LtfH1g32cZqzfffFOSdPXVV/e77tBDD5WUjt0//OEPklKv4IwZMzJsfR7zWgSlUsmVDdm0npvtttvO1eHJJ5+UlLLlMKn0FfJg+4r+oQ5Llizpd11LS4tj6QHlmjBhQr97995770LMa319vdPpp556qqRUt+PlQV4XL17s+plPK9OMHRjGzTffXJK0xRZbSEo8AX65DzjgAElJHyJLzP3Mk9S1Vn3a09OTGcuUe6Axzt/y9IFlKLnOMrP8Xi6XM3+jj/m0OrEalMtlpxfxRDN2GA/otgMOOMDpGOQxjz0H9K0tGww9Y2HjjTd2ckr/A/TwW2+9VVWdAvMaEBAQEBAQEBAwYlDYnG5qanJxqaymbcygz6Zator4G1buWBwAi8oyK9wPq9vd3e0sCRsXa99dBAMxntXEsfI3LP7Bnpv3rIHiaasp60Coq6vLsB6W6fQZD67BksYitjGFtq+xkqdMmSIpjQ966aWXJCVWOu+x789jZIvCygByhxz6gLVB9l577TVJacza3/72N0nSPvvsIyllCriv0rv4zcbeWlkt6i2or6/X3//+936/EU9HmzFOV61a5SxpGBv6DBmy7U35sILpe64nTm3s2LHuGixpy04WiVf20dXV5Sx6G5fKs30WjfhB4u/QC1xrGSEYH+SYcsNKPfXUU5KkvfbayzGRjAV0HN/z4qEHwvjx412cF/0Diwqo/7Jlyxz7RlwqIFaNNqK9kTU++d0yt8Q7Sym7A7imlvpJyVhBpmycMN/t7/5vFsiYZQIPOuggSWm8nGWCfEbI6r5amCz/WZYhs++hXjvttJP7PzoF5hJZtbqVPmU+QYfiHWBfx6hRo5z8wpJZfcQ7+KwWe+yxh2OIYbjR4eh2+qurq8vVAdmhPPa7Zd7Qr4xL5J0Y3p133tmNQ8YwdUSma0W5XM6NLbWeGT/mld/oe/o8z6Ns5x3ahPtaW1szLC06Ia981aCtrc29AzkBNvZ19erVrlw2Jpe5Dp1BPxCXzPqMem655ZaSUjmVUjYXGWbMMt9Wi8C8BgQEBAQEBAQEjBgUZl4bGxvd6tsCa8NnmyzzxCrbxiQSV8bK3bJ5FqVSyVk7WJKUq1aWAAyWIcBnYCsxplKa8YBnET83GANrn1PNtbVgsHgvnzXAQrJMVl6MGFY4VhvWMrEu06ZNkyTNmTNHzz77rKSs7FjWoihsjJ59DlZ/a2urszhh8omrW7BggaTU8kVWsTJhHKkfO3GxSkulUoZptdkHaq1fR0eHYxuQFesBoZ+WLFnirFrYDdiMvffeW1Lat3bXKGMMlhc2hPZ79dVXXbtYRgC5ydMXg2GjjTbKsPmMbdgDyvnnP//Zscpnnnlmv7LSLlZeLfPH32EJHnjgAUnSPffc49oL1tOym7V4CMrlspM1GAzeY2Vx5cqVrj70CX+DyYCto0w+o+r/zrNt+9j/rwn09PQ4ps32g2Vg/f6xjA/9T7+z2xx5sPMG7B9jtLu7OxNbyzvyWN5q62fjwy0DDrq7u503in5GtxBDamNRqS/j0zJZ/N0vh93lb7/D9laL888/3+kJZAwdjh548MEHJSWySRl5L3qA9thhhx0kpbHAZMW4++67+9WRWFfigydNmpSZF5B9dGCtnrr6+nonn8xFNo7VzxRg2Xbqxr30K/cw1pBTPhmjzCFdXV3uWpu9x46JInjmmWeczOWBNu3s7NQbb7whKZU75BZvI6As9CUeD+QYrxAeg7333jvXQ2f1wmAIzGtAQEBAQEBAQMCIQU0xr1gXxNTZbAM+q2qtURufigUCI2tjYi2rihWy8cYbOwbB7pgGtbBay5cvd1acH6eRdy2ADX366af7fYdxtfGy1bCn9p6B3r+mYJnYsWPHOmvbWnwwFjbPq2UV+eSZxDXvv//+jnF66KGHJGUZWBtbVBTch7zZ57a0tLgdwLY9sVSJS8RCpIzIKgwYOVP5Pm3aNCfHVharzSGbh0WLFrk4OPLm0Q9Yvzzz73//u/vtsMMOk5TGqgHqZHNg8jv3w2SRQWLTTTd173n88cclpUwLoD2KYtWqVZlYMsD3OXPmSEriXIl/pL9szmIwWMwY8n744YdLSupFfWkfdANyRNsXQblcdvJvMwDYXeblctkxZjYHK/kw7VixGQMA1/vxepZJBna3dC3IyypQaYc448JmlYBVh9FBJ+IRoM9tjlM/xzR1tPHnQ/WCAJuxxWbKaWhocOWhPoxhrrXznS0TYwkZIPbXj3m18Hd6SymLVi123nlnJ4c8A1aU39GFpVLJxazSvrvuuqukdBxaRpW5HxaV63kX80xra2smrzIyBJvHs4qiubk5oxfyGE7/OnQMegh9jqyTL5tnMSaRAzxiMJNjxozJZCQY6r4PKcl7e+mll/b7zXo8qMvbb7/t9k/stNNO/e6xGTUA9cDjwTzDnPqXv/xFUjLPE59u+9fGDw+GwLwGBAQEBAQEBASMGBRmXkulkovTgG2ASbPWbqWca8QLwppiZWBRYpFiecLq8k4/nhAryzJmNv9rEfgsJ1ZxEZaUe7AEbfzsX//6V0nprs1qyjGUa6qFZVyxEJubmzNxkDZ+mf7md7srkj6mX/wTWGCmYfYefvhhSbXn65MSi98ySHmxfE8++aSTReJ2YKbwLDz66KOSUtlEzrmOOCB+J0/h3LlzXRyszR2bl12hWjQ0NDiGE/aO9q4Ud428ITPE2P3whz+UJB144IGSpCOPPLLfMy1jgFzzjkWLFrn/E99EftWhMgaNjY0Ztg5ZIqMAGQGOPfZYF1ON5Z4Xk22ZQAvakT6ZOXOmqzfsMrKA/NYS19vW1uaYK2BZVdg0P4cuzDB9RLuje4iFtrGvsECWde/q6sowq4N9rxZ+ZhMr44xxP+a0UvyrlDJ71IlxxfUwsNTVZklobGzM5LO0GSxqjfe1zC3vtr8vW7bMeWdg2tAh1CePPbXZduhrvEZTp051rLPNCWsZ7qK6pq2tzbUr5SPjCjqf7z09PU5X0N7ofZg25I92P+SQQySlY5p5hbGAnqurq8vNUGFPwyqKrq6uDONHPeypWFLqgYJxRK9yahTlsCdu2ewCyMEf//hHSck+C+6hH21Gplr06h133KFPfOIT/X6zYxrm+8ADD3Sx/Xm5ZSkD88hPf/pTSakcX3DBBZLSdqGPH3nkET3xxBOSpH333VdSKtM2l/hgKDxafSVtF092wdHa2uoqTwAwSphFKc+zCaxZODDYuQ933cSJE91gsIsnu1haUxjIjc+ilGuY1FhA8B2gfKjPYCECA5VnKLCLVgTHd3+gKGxwvD1i1roU+M5Ax+2JW2nTTTd1yof24Rrcg7UM1MbGxkx6E4B8sXFp+fLlzk0FSIB+1113SUpdHtSDxQMTz/777y8pPf6SzQxvvvmmk18GNbBKtujEOWHCBLfYtpMlG41QvgcddJBrRxaWHL3HEYOPPPKIpHQMHX300RXLSZ/67mzaxW5eYnwytouio6Mjs3jFyKVvmDS33XZbZwBZYyvvO7DuY0C7lkolt0GIOtFepDyiL4rA73MrpzatVWdnZyat1r333ispNfgYO3mpyZDBmTNnSkrDIiZOnJhJhG7TbNUKP9XeYId8+P2CDqeuzB8YKEyALKpsejibAq67uzuTXsmm8KrlkAJfP6E7bVgE89O8efOcDuV4V+5hEUCfUl/an4UpRiiuf4yoN954wy3+uBY9hZ62Kauqxdtvv+3KYduQT3T6vvvu6+ZqXMjM9fQd78cgYQ2w1157SUqNf8YcaGhoyCwwmYtoV8ZIUaxcuTKzSLXpoajrkiVL3PzNsb3HHHNMvzoRBodRxdhELqkrpAFzxxNPPOGu5f3IuNVjRWHnUnswDaEC22yzjZPZPEOf+fMnP/mJpFReISfB+973Pkmp3pw5c6ZrG1Ib7rfffpKKzxMhbCAgICAgICAgIGDEoLBZXYktYJVukx+3tbW5dENY0lgaJDnGDQejQgA6wdw8E1fC888/LylhLGEt7UYarLChuJ6lwVlQP1UWrjvocTZu/fznP5cknXvuua7cUmpd2k1hlRjYPFZ2bRwhWylFGe1pmW36nz6CRYCJQy5g6fj0Q0dsqhD6nfapxV3Z0dGRSTNCfWBmqAtpWSTpV7/6lSTp2muvlZQG4WMR4u7iXmT25ptv7vf7eeedJylx08JCYJHnMa720ILBsNlmm2UO+oBFha3ChdXb2+ve/81vflOSdN9990lK+wTW5gc/+EG/95x88smSsuwun6NGjXIsEGMAKxwGyLq9qsWoUaMyx0jfc889klIXOJs/ent7nfxZpi/vKGrqYFkR+gRd8/rrrztGh8MZkBvurYVd9hkwK+ewIbBlU6ZMcdfgCbCMq2XW0KU8CzcsrDXfTz311EwarrwNXEXR29ubGYOgUtiA9QChK/gddv2KK66QJJ122mmS0g0i9uhL0NnZmUn8b4+7rkVO/aOorccJ4O144403HFPHePvtb38rSfr1r38tKXUj5zHxsObvfOc7JaVhPhMmTHBeHtgy+t8eBV40bODFF190/YA72U/Rxful/sd/0q7oKcYX8wL6lTEFG818Ytn/xsZGN86QGdocvVqrl2f06NFOP9hUagAdPWfOHDdvwYTjCYjjWFJ6PLHV63aNhNfuwgsvlJQwspSD9sEzaFN5FcHpp5/uPILMrczr6DL0uH+gAbDjD3llzNDnsNRscEW+3/3ud0tKxhxp1wiVYMySQi1vo6lFYF4DAgICAgICAgJGDGrasAWwAPgk7gVraMGCBRlL45JLLpGUslywijZukviLU045RVIaU0L8zOuvv+6sH3u0Zq3HUdYCYl2xKrFqvve970lKY1th56Io6nf/QEfO1hIHWytsHBiWVmdnp/s/MZ72KD4bZ0T7wwTAwGEtw/I8//zzjg2xcaRYcljpRdDV1dUvFZYPWCrkbYsttnAJtrGSv/jFL0qSbrnlFklpPCMyCXMFm3nEEUf0ewf1njZtmmtXmwoOFGVcwapVqxwbgvXLgQ8nnHCCpP6bGigTMVgf/vCHJUl33nmnpLSPrOVsGQ4bg9rd3e02VNjjgKlrreOxo6PDvYcYU9rTxpg999xzmRh3vB94AigHMVYwl4xR4tDob9jpjTbayHmQYHaqZQcGQrlczngIgD0mVkr7hL8dfPDB/eoFIwvDQkwrcZGwJcgCm9223XZbd60d2/7GzVpQKpUyTJaVIeBv7rJp35Ap4rlpi5/97GeuDlI6B7HXwG4GkbIxrpaJLQrr4bObcYjf32OPPVxf/PjHP5Yk/fKXv5SUTVVn25u2IyYWmUX+zz77bCcXyD1ePT/5vP+9WkyYMMG9x8ZbIreMvd7eXjdfcQ/6CR0P04b+4nr0h51PuK+urs69Dw8BcwnPqPWoX3/8WXmlf9Gd5XLZ6Vg2bP3mN7+RlK4HSF8Ia8ozYGjxMDKnoIvGjx/vxjUeLOvJqsUb+aUvfcnNqbQ79bOHF/jyYfU+8xWeL9ZnyDFycMYZZ0hKY2P9w2VYr9FG6C3aijE/GALzGhAQEBAQEBAQMGIwJObVHnmJ9cjKvqury63Ef/e730lK4+KIVSKuA0uSeAiexe9YNMTMSimDkBfnMtRjYi0sA/rqq69mYl2JcbUHHXAdVjHX26wDRdJyrQlYFsLuwO3o6HAWu93pCTtgM0rAfmAx8yysMJit+vp6F4NKH3IPViLtUwTd3d3OurOsCAwoHoGuri7HBPAbjD5WJc+CScDqRLb5DsuDFT1v3jzHGBH7mse0Wu/BYHjooYdcXxG7RBvCXvspn+irj370o5LSODOYV+TuQx/6kKR07Ni4Wpt2x2c6YE5uv/12SalFDctQFJ2dnU7fYI0jF+gHYqoWLVrk4t6I9bOsN/FlxCpTx9mzZ0tK0w7RfsjB4Ycf7lht5JUYPz+xd1H4Kd3s2LJM7OrVq53XgHLR3rbfYU/xAvGdlG4wdLzzlVdecTu7bYopm32gKBoaGnKP4eXT393N/2G0GC8wwMwjNvUQ8d7IL+wzY9GfC2w2AMpRK2sH7AELzE8wiVOnTnWZTIh5JS7dsn3+4RuSMp4k9OJ1110nKdnlT0J5+hd9bDOdFN0LMnv27Nw2quSxs4dlIJ+MHT6Z62GomdcYxzY9WqVjjJGLatMr5aGnpyeTMs0eMkG7zpw50+kfPAEnnniipHR9QnrF97///ZLS9rn++uslpcn/YT1pgz/96U/Oi4BHDw/QUA4t2HLLLd08gS5DjzBf+yku6Vfkjb8xP7MXgjJZDx3xy+gof93ItTYNqk3BORgC8xoQEBAQEBAQEDBiUJM5bS03VsywS1hWEydO1K233iopzSpw5plnSkrjgFjZY20Qe8XqGwvn7rvvlpTGSYwfP94xvMS9UI6hZBmodORr3jVPP/20y08Ky8HnRRddJCmNveIzj3mtdGxs3vuHGgNbKU+cZUN8Zs3GwcHGYY1ZZsWycpZx8a13ns01WL1Y37UwPv6xxPbgDMsorlixwjFuyK3dHW2PMoZJgXklZhZw3fz58zNHpVrUeiTl9ttv71gHdm3a3f2Mnc7OTscAM35gH2Gu+A57h4z5R8xKcrGffnJ16sB7KRe7R7G+yetXLbq7ux3LAHtjMwTAJpx11lmZHNLIGzGvlBk2kXLCPJBr0yZAf+WVV9w4hUWGgUBWYGKLoFwuu7LYY1hhmvEGdHZ2ZphX5Iz62cMJeLb93eZ3XLJkidO3luUaarYB/347Jm0MrM/4UCfqineEOhPzzO57mC6Y2bPPPtvVTUrGMOyc9X7k7S4vCspOu9JfeJreeust3XDDDf3KR+w55USuLr74YklyR3ra8Wjj3G+99VbHdiHnMIXIpmUSq0Wl3KnWQ8dnfX195pAayxZbeeQ7cczkbraZWJqbm139bZ5Zm/2gKCod1AHs7v6pU6c6zwB7d/75n/9ZUuoZQhcRCwojS924n5yn5Hm97bbbnKzTnzZbSC0HMaxatcqNcdZa9oAU/xAP5BGdaPc12CNdbWYX+sHq7fr6+n6ZavxnMcdU66kLzGtAQEBAQEBAQMCIQWGzuru7O2O5wRLArmIdT5w40VkLfML88B0rABaV2FCYyo997GOSklgQKY2jO/vsszPxkHZXZS350KphNSvFYRLrSpwOMazU02dr/U+Y21riWGuNffX7cLDTZXp6ejKsrGVu82JwBjsJpK6uzvWVLUetOQml/tkGqKdlXPl7a2trJnYby9YyNJYNot5cB0OB1b1w4UJnadsjky2DUjQ+e8cdd8yUd6Ad8DZWlffCitjd3bDKtBc5T5FzGIZzzz3Xxc/C4vI3LOnHHnusUN1AV1eXkwvKRzvZ42rvu+8+F7fJGIZJBzaHKe1nY8ns2Ljvvvsce0aeTsaeje8rgra2Nsc+cD/6grLBXDQ0NLh38jfqC0ODNwtWhzaC2eI7TFyljAbAZkGwMbnVolQq5eoYy3jW19e7MiGHlBnPwAc+8AFJqefqu9/9rqQ0ryZj76CDDpKU9ldHR0emDpY9rCWWsLu728lmHrPJeHj55ZddDCt9YPcTIM88C1kmrh7QLuwj+Otf/+p0DDLFPGVP2CqqU6tpl0pZiNAtNgYbOUBfEvsK40hfo4N8L6yfBUfKZmWo1ZNVLpdzM2pQfj9fuR1r5J8+9dRTJaWeAP5+0kknSUrllMwmrAP8OGyb/QSZoD1rOUVs3rx5GUbctpWfpx09z5xHnnr0kdXH6AnLfA+0BrBxtYx9/yjsgRCY14CAgICAgICAgBGDwsxre3t75uxfYHO6NjU1OSuKM8DJd4p1RiwFzAankWCxYHVhiWKh+iebWAx152EeYD78DAEwxMT2WsYViwtGmWfQDjCvXG+zD0iVc8D6vxfF6tWrM/GoWJ3WUhrIcsq7drAzmP1YN9uHNpamltyL7e3tmfhnPmEnfGYRdhEL0LJoPItyw+jZ+2DdfWs0L3bQ/l40n213d7crB21kx6XPbNl4Y3tWObLFPcTr8QnrwM7l2267TVISq/fe975XUhrXRZ9eddVVktIxy2k01WLx4sWZ0/Lsrld25D5cgY+cAAAgAElEQVTxxBNuVy5tiZenUuyc1D/Gy//dnkh06KGHupO8AMwg7VpLPmI/ltzm97Ty0dXV5epMe7Kb3eoFy5banJjkU4Q9mjBhgpMDK6d5eWiLwOoBGyfnM0Gwc4xPYjqJS0eGbLwk8wPzzDXXXCNJ+uxnPyspmU9oL3Srjbkd6ryRd3Y8aG1tzeRG5532dC9+5+QwvBvsSieuld+fffZZF6doYxmtDi0a81rJK5eXpaatrc2NM8oBO8wYgWmFPeZePFrMlawN0LOtra1uzkNekaE8z2G1qBRHarMOoN9XrlyZy0bb/RL0H3Vif4KN6wUtLS39PBH++2HraaciePDBBzPPpWyUAfm54YYbnNeMDC2MM9Y7tBfjNC8LTaV4cpvlw+5zCSdsBQQEBAQEBAQEbHCoKeYVS8jGJWINsvpeunSpi8/AGrvxxhslpavr4447TpIypy5w8gRWBqtyrA8/npV7uQYWs9Yz1UHe6Ve+lcYpTPwNVgOrE+aVPHBcD/NqY19hHnzmdU3mdZUSK2qwfH3+LlIbKwMse0uf5MWQ2fjW+vp6xzTZ+FHqjLU7VMsawJLCArS0tDiZ4t1YglZ2qZ9lS5F7nyGQ+u/EX9M5hx955JGM1WtPqfOt37z+pj2Qu8suu0xSugsWz4llAnne7bff7sYHzCvjn9gle/JVtZg+fbrTMXhkGC82h+QxxxzjcnritSGe3meFpOzObeK6YLLpT9/bY+MFKRefteR5bW5uzsSjou/4nTKOGzfO7cIla4PNVGBh89USb0lf49UaPXp0hq1bU+jt7R00ppQ27OzsdLqbXc2crIY8kh+crBe0G3JA38LY4iE45ZRTXNw211oGqxYd43sA7YlMfPeZb/Qd9aRP8HDg2YBlp77sRudZyCb5bZctW+b6255sZ3XeULIq5HnT/AwWlB29CetIX1EO9APlxcvC/he8kGRRWb58udNxdm5fE/ODZQupE/PASy+95K5jzkC3Wc8LmVbIKvGj/7+9Mw+zrKrO/ttV1V3Vczc0NIPYCDY2g4BRBJEZJaCAoBCMokDikGyMnwqfIEg0Dkk0CTHIs9UYA6h8omJEkUFkEGTqyDwpk9BAS0M39EAPVd1V1d8f5/722bXOPV33npr6lvt9nnpO3TPuYe1hvXvttb79bUnFNku7i2WSsd/u3Kdcq9Tf/Pnzg7zHXmji72Cn++CDD4byhGmlHQHKiPTzLjy3WC8UIE4716x9e6PMcmJeExISEhISEhISWgaVbF5hmKyvNbQhjmvXrg3++LBFwt6Fd6BlwURyHS8DRADiftid5cuXB43SxlIfCuM6c+bMUsbVxoy+6qqrwjnuRcuEYeVIvGIYWLRK8s070WRWrlwZzpUxr1VtXlevXl2w47SMUuxhwHptsEwr2if1wLM2RjF2zdTPhg0bCnngGdgz7HCasfOpZ59Xz8sA78We8frrr5eUMwDY2WGfxCoBbBBpxC4I7ZO0zp8/v2Bzi8xaRrbZXbJdXV2h7mAYYdLIW9kOUCnXnFlFgAGCnaJM3va2t0nKVzwoG/xVzp8/X8cff7ykXHZIx+mnny4pZwCtP9zB0NHREcqFvNjdxsR6nz59eogoBIth/REjWzA5MCq0UWt/H/drtn4oP94Je9sM4t3v1hMCZQYj19HREewbkUtkB/mEzcP+Hrs1fKHGEbXib+yyyy6lXhOG4k1BGih7lh3jnZx/8sknw/ew7URmkHEYeMYN+jG8C8B00Y8S0eixxx4LzLVlAtmrUYW9i+1Hyzx5ICPbb7998BpAXcB2/exnP5OU+0G3Hm2uuOIKSfmOfMqD9rj33nsH2aHPpM3a9t+sbW/MngPrgSb2aEA6kD9WEThP+eOFwa7U8Jv7GFcmTpxY2PlvVwqHwsBaphNZtF4Inn322RAhi5VWu9rLyjH1/dd//deS8j6JfuuTn/ykpDwS3MSJE0OEQNo+76Rfq8K8vupVryrsI0F2aEOs/j711FNhXsPYRj4BKx8ws9b/d1ka29raCvODeKWyGSTmNSEhISEhISEhoWVQaQspM3g0SxsNCa1o9erVgYWCUcUXLJoKdiRo1FyHDcHOg4hVfPPxxx8PWg2aEYyPZbuaQT2W03oAIO1XXXVVgTnkXtIP+I1/Qo4PPPDAgOfQfp555pnwvTJvA1XR3d0dtC7r45LyjXfB2h3VPIOGDytFXcHscJ370cpif3/ICpozzxKZpFk7mPh7Uv3dnNLAqFmwNmj+1BW7ZNGSkXPO8+5rr71WUh5PHSZsiy22CNoz30XzBlWjwU2aNCmkBwaRONs2olT8HeqSOuMdMEF/+Zd/KUn6h3/4B0l5uSN7RPyBBTjrrLN0xBFHSMrrG40an4fsam8Wa9euDem0vleRV9rLHXfcEc5Rnzwb14eU9xdE86NvQhaRffyodnR0FCLA0U9x3voEbhbWzytyH/tq3WGHHSTlKwD4liQyEfbJtCHKDBtZ8s17qB9YpDh/1mNBVW8DEyZMKHgfsUeYoFdeeSWkDcYUmcKrBHmGEWK17YQTTpAknXzyyZJyVonrd911V7DHg2mlvdM2q+Sxv78/yJ1dvUKeYLGOPPLIsAeCPoNnWfGwEe1sFDXqmChysMnnnntuwQsFdsMWVTy4bMoPeJzOiRMnhnQwpvEs56lj6oZyY5yj/6DPgYXfeeedQzlYX7JlNpaNIh4zyhhYVmyee+65IH8f+9jHJEnnn3++JOnSSy+VlNcr5+n3Wa3jSH2Sj/e9732hT4aVtzb4VUF/YP1cM0bB5h933HEh7zD92PCygkw5s0r1rW99S1IuW2XjWn9/fyhP2Frqm/650f0DiXlNSEhISEhISEhoGVRSp+2sGk0T7YsZ9EsvvRRm9eyaxD4SDRrmFa0YrQOtkZjBaJpoc3PmzAmabZVIWmWIbV45wobArBF9gvvL3lMP2IhYNree31d7j31nVSY21rypS+wFLdPZ3t4eyhmN3tqyUoeW8UZ7Q8OCceXd2PZIuVYOIwFbZP1rNoKOjo6ChwC7ux7tbunSpUGzxR6ZZ9GKqQe0ULRo7iM/1N2RRx4ZvsF3kB3LvFbF1ltvHbR72hv5gLXBpkwqMie2PKjjd7zjHQPeCYPFygh5/dKXviQpX0GQcsYPhoA2W5V5feGFFwoeLOhjyCNRaObNm1dgzpBzmEW7G9zuxrbeMyjf3t7eUG/YO9u8VokiFqcXtod2gOcDGO7e3t5g70ebIP0w7vS1nKdfxvYRlu6www6TlDNgHR0d4bu0f2vrWpV5jZkwy8BSdrGtI3WGP0z7XeqdusJOjrJhVzfANnbFihWhj6PfoT9DxqvEjJeK9urkgX6bFcFXXnlF73//+yXlK26XXXaZpFzW8B4ArO2g9TBCn7X33nuHcYr6tp55rB/2RhHXYZkHmThePeMB+eYZ6hIbVlYMKD+7x8PaaG+99dZhdc/69+XdVZnXmBG0eeWI3Dz22GO64YYbJCns6fnEJz4hSfrqV78qSXr44Ycl5bv0bfuiP6HfPeOMMyRl9Yi/atozfRxtsYr9+caNGws+cUkD9cD4MXfuXJ100kmS8r6bsoH5ptxf9apXScrrlLZsxxvqpb29PaT//vvvl5SXDX1do9H8EvOakJCQkJCQkJDQMmhanY5ZTmvjY30h7rXXXsE/H1ohdmYc0c5gsdAGYG3QjmPGVcrYErQB+w60wCpxjleuXBk0P7RjWDPOw04dcMABQVtnZ+Rg7Ohg9qucnzdvXsgzz1T1LmAR7x5FC4J9wJ6TOp0xY0bQsmDHbWQf6y+Od8Ma2OfR8Do6OsIzMFd33323pIGsYbPo6ekp2OciK8gXaejp6QnaIrLFzlBsJ7FZoz54B0wB9k+wQLBmL774YpCPwViPZm1fp06dGjRUnmU3Oh460JqxV5KKu3KthxDKiXfCOvAOdtHGbQz7LcoJZo9yqiq3L7/8cmjT1jsCbRPZI1318miZCssAWntge72zszPYJD700EOS8vJiVYH+rZndzqtXrw4sKXXJe2hbME2zZs0aEJFLyncA403ARkVjhQSbaFgSvsn7uru760b0Gg5MmDChwIZRdnwDdnSrrbYKzDbtn3GA8sHeF6YH9hgGy0Yow2/4IYccEuSRIywS4wTtpxn09fUVfGTb6JEw+/fdd5/22WcfSblNOf0QHiJoSxa8gxVJotrh//Xll18O9sH0Q9YXcZzmZrBx48ZSJo1+ljLo6ekJK2x8x+55QO4of8oNWedbPM/9Tz31lHbfffcB6bCMZlVMmjQpyAzlFfuulfK+5y1veUtgR639/IUXXihJ4TrjKWMCbDj2pXhPYuy57bbbggxg5w0Yp6q0zXq254xJtD88Qu22227hGukDlIW1MbZlZqPXgY6OjvAdGHXaMitItPnB0PTktbe3tzDQ8ZsMx6562AwBjc7Ehwmn3YjDYMX9/CZDUMukRSouV1v3Os2CwZYOkcZoEQcSsE6+hzOkq3XdNRKgA2HwRMDmz58fOgbqmXzbTRHUFQJLh4tcUHfxRo17771XUt5527BzVcJu9vT0FBq4dU1FWrfaaqvCoE8aWG5mYsSzdumf/GNWEHeo1un4ptLcDCZPnlxwBcVgifkCikBXV1eoM9uB0f5IM+Vd5lCeOqcuX3755dDpYMzPAMs74nbSDFasWBHKxfYxTMzYONXT0xPqiXuadSljlS4GpsWLFwczFuqaJS++Zd3pNILYFMAe7dLZ1KlTQ5vgGoOcda8Vb9TjO5v6Rpx22j+g7VedzNYbNGmLpIOBb/bs2UFhRCFExq2bH7vBFJMAu2kXxBMw6/S90cGyHuLJK0cbZnjPPfeUlJlCsQkHWWW5+Nhjj5WUK4CMObQzTD6YvFHH8SY9JvL0OXZjVlXzunoKWVm45qVLlxYIKDseUEeQGbZerOICJk+eHO6hj0aGbOCkZjF9+vSC6U6ZQrfFFlvo8MMPl5SbtzARRznBnAPXbZYMoJ9lM9qVV14pKetfkH0brnwoE/S+vr5CqFbaI3MXTMM6OzvD5jT6X7ux24JyLwtoRP0sWrRIP/3pTyXl9Qw5SJ/eqJwms4GEhISEhISEhISWQdPUZL1NBgDNM97QYpdY47Cc3CPls24YlnjDUHx/zK5aptWaCQx16WuwjVLPPPPMkFlRNEi0n5ixLTMXGOo3YzbEapeUP0xGd3d3cEkGs2eXcDna8HoW1Bda6m9/+9uwxG0ZPVgEywQ1gr6+vgLrbpew+N3Z2VkIm8c9ZUt4yHDZ8hvLj/XaStnqAPLdKKZNmxaeId0wPjB0MMcPPvhgYChYrkJThqU59dRTJeVOte2yjw1EwqaM3/72tyG/HO3ye9WNMBMnTgwsjWXpbKjLBx98MNwLc8ESHSA9Vj7LNrOxTHf77beHfGM6ggyz9EX92mW2TSHeKFXWh3G9p6cn1C99hV0xIP+0oTLmyDpfX716deh/aW+Ucxmb2ygmTJhQMEWxrpMo52XLlhXcZ9nlSeqBvgjGj/P8ZtzhfFdXV8ivNR9AhqqOF+TLsk/xJiZJOvDAA8NqCGYo5IN2CMNaJgcw/8gh31qwYEGoo8HcFTXrKis2/Yg3Mca/qeM5c+YERs22M1v/lgm0qMcUWtbQ1l1Vd1KdnZ2lm9HqhUWHBWVpH8acVSjSYxli0mfLDdncddddw/esKeVQEL+j3hgo5f3K73//+9C/wfSTj7IyYeUAOWUM4n42hd15551hjGF+BctLuujHBkNiXhMSEhISEhISEloGTTOv9RyHW82a6/G9lpXFVozfZcyYPcaalbWNGEpwgnqwzCdH3F3deuutgalAI7Yskz3Pb2sHiMshbGUkFVx22XRVRcy8WmbNugdZtmxZSDNMFrZI5Ik6seWPdhwz1VJuG/rQQw+Fe2EggNU+m0GsZVoGw76vo6OjwHqSXxghfmN0D3gOmx2O8aqC3UQYf1fKy65Z7TpeeeCIlsu70Zo7OztD4AXqAOfS2MdaxtCGD2YzCEwjrPTuu+8emL6yEKrNsspg+vTpBZbb2qXFIaHZHAHLAQMLs27tJjlauy7Oswmzvb09MM18D9lGRhp17xKjt7e3sMEIUKYwop2dnQXbVRsUht+WRbVyYjeHrV69OryTtkobpwytTX+j6OjoKLA1rLKQHtrNhAkTAqPFM5RPWXhlawNp2TPqNm739lm7CtUMYgbKtnHbp06aNCkEzIDZws4QWaOc7XhnQy9jLwrLucUWW5T2NTY9VWzBrd2yXa2I24W1YbUoKye7sc8y2BMmTCiMT5ZFr4r29vaCPTVtMK4/KZMTu8+AemUD5yOPPCIpZxxt6Ho2KTEPoD/u6uoKbZF2Qrrs3pNmsHLlysLmNt5DuXO+q6sr9O/kBzdhMKrWxpjz1JUNOkXftWDBgpBnuxKCbDe6MpCY14SEhISEhISEhJZB06pmT09PgU0tsy8c8CHDztrjYM6wrUuO9vb2oDkMh4ssUI/VLGNApSycm5TbupS5wLIhz2BasZWx349tXstQNUjBphw5o2XGNk5ogDA1aJNopth0waAA3BnhYQK2AWZoUzvwyXuZ/eym0N7eXtilbFcJwKRJkwKjiocFZA1tkt3zdvXAelmgXNDGZ8+eXZB7a4tX1SNGf39/SCdMBysRlCv189JLLwVmAA164cKFknI2GXu52JtHnG7rlBrPAkuWLAk7nmEb0JxJT9XQqe3t7YEN4Lu8G9kn3UuWLCkwk+zsjh39x3niN/XMahD5gV154YUXgg04bYFr1kVMM+jt7S3YpQIYOI7r1q0LbAiubcgn7C+/B3NmTjuGiYl3aFt3h7TVqnK6Zs2aUHa0adsvYDe4/fbbB1mhnKln8oZMWQaOb7BCgFyT17Vr1wZ7b4KI2NW/ZhnJ+PtSsewA712/fn24h2/jgD4OmhJft3IFa4Vc8P2enp5Cmdjvg2ZlNbZ5te4PySv1Eq/q2e/bdNh0ImN2ZTcOv1tmn25tYZtFnBYbFtauHMX5YEzDJSj9FCtZ9E92Xwh9Nys6tIVVq1YFVpY6pr3jgcLa8jeCK6+8MvQHRx11lKR8RapevWCXSrsjOIi13SUtduWG8mROwEpOR0dHkHGepZ7tuDsYEvOakJCQkJCQkJDQMqimTtdg2Sy0ZrSMvr6+QnhO0KyNyqbutzZraEpV7GBiNtPautpd/itWrAiMK1oR2hIaMjaFAJtDjlXY06F6G+jv7y9lGertrLT/U95onZzHbgfNyTKu1kavr68v1BnvsJq0tadtBJuqd8tGLV++PNjgoonafCDDsEGWsSNfsD0wZL29veEeq72TxqpO4VevXh0YM1gay5pzfP3rXx++R/nCErPLGWfu/Ea2rH9VQB6XLVsW5BGN2pZ/FfZcypgsZAeWEGbDhvmdPHlywSewZWFgEbGtgk2gHKlndu8jDzNmzAj1A6tNOSITzQQnAPX8NiIv1rfjsmXLQkht6s7a2fKbNBK8APbHMq4xKAPLelkPHM1i3bp1QR5gwGGS7rvvPkm5Xa2Us8iESYWlJR3Ig/UpbVc4LPu8bNmy8A58dFrbwSrMa3t7e6lvUWuzuakVQRvSFcDUIud2xbIe82vrskq+LPiOtX21gRDqBaUAnKce7GoU77Dvjp+v2pcMhu7u7kJekDHr+7q/vz/UB/7o8eyCxxXkjhUB/JmTd/pZGE5k8bHHHgs+pHkXnndsUIdmcNxxxxXKdVNygSzRz7JqYVc+AGVFX8N4gTzzzXXr1oXVEZ6hjyM9je6RSMxrQkJCQkJCQkJCy6AS81q2s9ZGMbL/SyowQJa9teFKbejZeCd32Q7u4bB9lZoL7YomZm1becZG6cIWpMyPacyqWqa1qq0rWLNmTcEjgGVA453YaEjUO9oXTBbgHdbW0e42jrV4NHmrDcZ2TlJzzGucZmtHxW/k68EHHwxaMHUCg0qoSuxDYZJ5FyzggQceKCm3jY3tMG1YWutdo6pnjPb29gG2dDGs39ctt9wyMHqwXYQMxebOyhiaM2XBEYaAPM6cObMQMhDAtPEMbFqjWLZsWWDpaFfsYrU7VtetWxfupW7JC32G9RWNbTIeFHjO2m9NmjSpYE/I6gHlBIvbLJAP26faPQD17MNteG4b4YnyKPNXHEc3JK+8i/TYY7OYMWNGaOOWgYWVoR7itgBTRZtjZYBVPcqDd9idy5QFz999992hv7L2ys36PbVoxqbUjkll/UCZ/197n2V3pZwppEyGylbG/fRgvlljX6z1rsVptStE9mhXkuz/pC0+DsXTkK0ba+fN7xUrVoTVOuSSKGr4773ssssk5SG6iaTFuMTYQQTSo48+Ovymv8QnMHmm/7JhohvB9OnTC+W/qVVWW562XOmfkDX6GMYF+hauk6fVq1cHBpl2R35gmq3noTJMaNTA2TlXzRJ6M4L3vnRtb7znTxr/eRwP+ZPGfx6TnI7v/EnjP4/jIX/S+M9jktPxm79kNpCQkJCQkJCQkNAyaJh5TUhISEhISEhISBhrJOY1ISEhISEhISGhZZAmrwkJCQkJCQkJCS2DNHlNSEhISEhISEhoGaTJa0JCQkJCQkJCQstgSBG2qsI5t6Wk4yW9U9LrJW0vab2kByVdJOki7/3Qw4KMEpxzX5H0Jkm7SJojaZ2kRZKukHSh9/6l6N6JkpykvSW9QdJukiZK+rD3/r9GOelDgnPuVGX1tSn0e++H5nB3jDCe8teMjEbPTJD0QUmnSdpT0mRJSyT9VtJnvfePjU7qG4Nz7gRJBytrW3tJmi7pUu/9yQ0+/x1Jf1X7Od97X8156xjAOfe0pHkll1/w3m8zismphGbHBefcjpKe2sQrf+i9f++IJbgCqsioc25/SZ+VtJ+kLklPSPpvSV/33ld3bDoCqFCHF0s6ZZDX3ui9P3xEEjwCcM69U9L/UTa2bynpeUl3Szrfe3/HWKatGTQ5r7lYo1yPYzJ5lXSipG8oq9SbJD0jaa6kd0v6L0lHOedO9N63iiuET0q6R9KvJL0oaaqyjubzkj7inNvPe/9s7d6pkr5W+/8FZZOBHUY1tcOH+yT9Q8m1AyUdJuma0UvOsGM85a8ZGZVzrkvSjyUdLelRSf9P0iuStlOW910kbVaTV2UD/F6SVkt6TtKCRh90zh2jbOK6WlIxbmtrYKXyviVG817NxwZVx4X7lQ2oFg+NYFqroikZdc69S9JPJHVL+qGklyUdI+nfJb1VWZltTmi2Dq+Q9HTJuz4gaSe1Th/LhO/Tkl5Slrdlkl4r6V2S3uOc+6D3/vtjmMRm0MyYMer1OFaT18ckHSvpKqOFnSPpfyW9R5mw/2Rsktc0ZnjvCyFonHNflnSOpM8oY1slaa2kd0i6z3v/vHPu85I+N1oJHU547+9TNsErwDmHhvmfo5ei4cU4y18zMipJ/6Zs4vpPyljWfvNc/YDuY4tPKpsQPKGM3bqpkYecc1tJ+rayycE2tWdbESu8958f60QMAVXHhftaKN8Ny6hzboYyueyTdIj3/q7a+fMk3SjpBOfce733l414qhtHU3Xovb9CdRQP59wsZZPA9ZIuHvFUDwOcc9tIOlMZKbWn9/7F6NqhyursC5JaZfLa8JgxFvU4JpNX7/2NJeeXOOe+KenLkg5Ri0xe61VwDT9SVsnzo3vXq4U0ySpwzu2hTENbLOmqMU7OsKMV89eMjDrndpb0N8rMA86ttwLivR9aTM0RgPc+TAScc5u61QIF5HS1SJ8zHjHexoV6aFJGT5C0laTvMnGtvaPbOfdZSTdI+ltJm83kdRjr8APKzJQu894vG9ZEjhzmKdtHtDCeuEpZvTvnXlFWny2BZsaMTWDE6nGsmNdNgUGxd0xTMTw4pnZ8YExTMfr4aO34nc3NJmuYMJ7yV09G/1JZJ3yJpBm1JfUdlC2F3dhKtqCDoWbXfJyk4733LzU56d3c0OmcO1nSqyWtUVant4wDGZU2PS5s55z7qDL7wpck3eG9Hw997mG147V1rt2ibBVvf+dcp/e+Z/SSVRnNjO0frh1bZWVLkh5XxjC+2Tk3J56sOecOUmbfXM+8pdXQzLxmxOpxs5q8Ouc6lG0Qkeo32M0azrkzldnLzVRm6HyAsgr+57FM12jCOTdZ0smS+pXZOI0rtHr+GpTRfWrHmZKeVDYpABudc9+Q9PFWnxQ55+ZJ+g9J368te7U6tpH0PXPuKefcad77m8ciQcOBBsaFt9f+4md+LekU7/0zI5u6EcXraseCbbn3vtc595Sk3ZXZE/5uNBPWLJoZ251zb1G22euxmKne3OG9f9k5d5ak8yU94py7QpkytbMyU4pfKSc+WgZV5zUjXY+bm6usf5a0h6Srvfe/HOvEVMCZyuxXP6Gsgq+VdIT3fumYpmp08ReSZkm6Jt4ANI7Q6vlrREa3rh2/IOkuZR3QdEmHK5vMOknnjVaCRwLOOZjl1ZI+PsbJGQ5cpKx+tlG2seL1kr4laUdJ1zjn9hq7pA0ZZePCWklflPRGSbNrf9iRHiLpBufc1NFN6rBiZu24suQ652eNQlqGimbG9o/Ujt8e2SQNP7z3X1Nm09uhjHU8W9kmtmclXWzNCVoEVec1I1qPmw3z6pz7uKQzJP1emZ1EywF3NM65uZL2V9Zg73XOHe29v2dMEzd6QGC/NaapGDm0dP4alFFcfz2vbDl9Xe33jTVXP/dI+pRz7h9rNtytiE8qm+i803u/fKwTM1R4761XjIck/Y1zbrWyfvXzylwYtRQ2NS7UJgJ/bx65xTl3hKRbJe0r6UPK2PXxiAm142btlaeZsd05N1MZQdAyG7ViOOc+LekfJV0g6UJl3oQWKNv4eqlzbm/v/afHMIlNo8q8ZjTqcbNgXp1zpyvrYB6RdKj3/uUxTtKQ4L1/wXv/U0lHKFty/e4YJ2lU4JzbTZlwPyfp6jFOzrBjPOVvEBllMndtNHHlufuV+dacLmnX0UjrcDOIbz4AACAASURBVMM5N1/ZxpGLvPctXY8N4Ju140FjmooKqDoueO97lZv0tFy+I8Csziy5PsPct9mhQh2eLGmKpP9poY1akiTn3CGSviLp5977T3nv/+C9X1ub4B2vbIPvGc65ncYynVXR5LxmxOtxzCevzrlPKNNQHlIm3EvGOEnDBu/9ImWNdnfn3JyxTs8oYDxtZKqHcZe/Ehl9tHZcUfIYk9vJI5m2EcTukjolneac2xj/KXeT9Xjt3HFjl8xhAcuULbV8PgzjAkuaLZVvA9rhLvZCzYb0Nco2P/1hNBPVKCrWIRt8WnFl6+jasWDf6b1fq8xVWJuy4EQtiwbnNSNej2NqNlAzbv5nZb40395qmlaD2K52HBeTnTLUnNp/QNlGpu+McXKGHeM8f1ZGb5D0d8ps1AbAOdep3EXK0yOespHB0yqvw3cqsxv9saRVat08grfUjpvlBKcehmlc2K92bJl818GNkt4v6UhJPzDXDlLGbN2yOXoaqFKHzrl9lQVweMx7/+uRTeGIoLN2LHOHxflWNbWKUTqvGa16HLPJa83R8heUhU07olVNBZxzC5Q5B19izrcp20ywtaTbx4Nd3SA4UdmGiV+06EamwdCy+asgo9coG/T/3Dn3du/9r6LHzlO2jHlzq66S1IJPfKjetdou9W0kndMqLsGcc7tLet72oTVvChfWfraEY/RmxoXaIHmvtbt2zh2mzKZZapF8l+ByZcvQ73XOfT0KUtAl6Uu1e74xVokrwxDGdvYTtJJ7rBi/kfQxZdGnvuW9X8wF59xRyiKidUu6fYzS1zCGOK8ZlXock8mrc+4UZcLdp6zCP17Hv+LT3vuLRzlpVXCkpH9xzt2ibCf2S8rC4R2szIXJEuUUuiTJOXe28rCAe9eOpznnDqj9f6v3vtXcMLV6xzMYWjl/Tcmo9359rY1ep2yn+k+VxbTeRxnjs1R5eWw2qC3xs8y/Te34FpfF3ZakZd77M0c9YSOPEyWd7Zy7SZk98ivK3PO8U1KXMvvsfx275DWGCuPCV5QtXf5amR26JO2p3D/qed77zWqi0IyMeu9XOec+rGwS+2vn3GXKwsMeq8yN1uXKosJtNqg6trssmthJyljJS0Y+pSOCyyVdL+ltkn5X6zeXKNsbcLSyDXZne+9fGrskNoym5zXS6NbjWDGvr6kd25W5X6iHm9Uauw2vVzaheasyqnyWMgfhjynzuXhBHc3zSBVDUO5f+wMtM3l1zu2qzIVGy29kqodxkL+mZdR7f6tz7k3KXKQcWnvmhdp7vui9f06bH/aWdIo5t1PtT8om4ONx8nqTssnMG5SZCUxVZq98q7L6/V69KGmbIZodF76nbCPMPpKOkjRRmYz+SNKF3vvfjFhKq6MpGfXeX+GcO1jSucpCq3YpCy37KWXtdnOr16pj+/uVyW0rRdQaAO99v3PuHcoi9b1XmWxOUaZwXK2svq4bwyQ2gyrzGmkU63HCxo2bm+wnJCQkJCQkJCQk1MeYextISEhISEhISEhIaBRp8pqQkJCQkJCQkNAySJPXhISEhISEhISElkGavCYkJCQkJCQkJLQM0uQ1ISEhISEhISGhZZAmrwkJCQkJCQkJCS2DNHlNSEhISEhISEhoGaTJa0JCQkJCQkJCQssgTV4TEhISEhISEhJaBg2Hh3XOtXwoLu/9hLJr4z1/0vjP43jInzT+85jkdHznTxr/eRwP+ZPGfx6TnI7f/CXmNSEhISEhISEhoWXQMPMK/vVf/7Vwrr29XZLU19cnSert7c1e3tEx4H97rd47AO9as2aNJKmnp0eSNHXq1HBPZ2fnJtPKt84+++xN3hfjM5/5TPhmf3+/JGnHHXcckIaHHnpIkvTiiy+qrW3g/J98kL+uri5J0uTJkyVJ69atG/BujrwnzhPP8v0tt9xSkrR69WpJedl88YtfbDh/kvRP//RP4f+y+uAbL730kqZNmyZJmjlz5oB7bZ0Ce767u3vAdfIV/0++KWP77Hnnnddw/mK5mz9/vqS8DP/sz/5sQF4WLVqkV155RZK0dOlSSVm9StJ+++0nSZo7d+6AfFHul19+uSTpmWeekSQ99thjA449PT2hvjds2DAgvzvttJMk6cgjj5QkHXXUUbrkkksazuOHP/zh8P+UKVMGXCMfr33tayVJc+bM0bJlyyRJzz//vCTp3HPPlSQtXLhQkvS3f/u3kqQ//vGPkqTbb79dknTyyScPuM7zfPPVr351+C55BBMnThxw/owzzmg4f5L0uc99TtOnT5eUyyPliVwgL1OmTNE222wjSdq4ceOAe2l7yBhtzso+76Lvifsa3klelixZMuCdpJNybQTHHntseA8gD+QPeZk9e3a4Z/ny5ZKkFStWSJLuu+8+SdIVV1wx4DzPIseHHHKIJOnQQw8dcD1+5o477pAkLViwQJK07bbbDrj3K1/5SsP5k6RzzjknlLftYyZMmDDg2NbWVveclNfV+vXrJRX7fuqH+/kNOjo6wjt5F3VJn831z33ucw3n7zOf+YwmTZokSZoxY8aAa+SbtrJ+/XqtXbtWkrRq1aqQrhikiTS+/PLL4dn4Om1rhx12kJTJLPfyPeR31qxZA76xevVqffnLX244j/R/MV544QVJCv3KnDlzJEl77LFH6H+efvppSXkfw730xTxDO+W+fffdd8B9fGvatGnafffdJUn77LNP3bTyTcboRnH++ecH2bFzDsY/5GTixIlBvjhSrxypV2TD9o1l85/+/v7wTtocckS/RN0305+efPLJhTGWo8XKlSv17LPPDjjHWBL3GdwrKdy/9dZbSyq2Ba6/+OKLYezlXo52nnDllVduMk+JeU1ISEhISEhISGgZNM28tre3Bw0AWMaVGX5fX1+B1YiZEinXQOw70X7K2NX29vbC92x6rHbTKNBy0bjQyNB4tt9++3DkHLCsJEB7svfxPN+IWUt7zmryZZrTYOjt7S1lT+3vadOmhfK1z9h7YccA6Stj5ru6usL/lr0tY4Qbwd///d8HtoE0wSyhCd96662SpCeffFIvvfSSpJxVhAmAQXj3u98tKdcQL7jgAknSf/7nf9bNdwwY1qOOOkqS9Pa3v11SzmbAdP7sZz9rKo9TpkwJcmC1+q222krSQDaAe9F6TzjhBEk5E829PLv//vtLKrI2O++884DfTz75ZJBhWDoLm75G0d7eHrRx2FOOyBL1OmHChIIMIbe0I8tg2PQhazwXs3eWraXOY1atWcQsBvm0rGl8D4wrLCzPwNbC4l977bWScvaU87vuuuuA+/nWihUr9Lvf/W7ANb7x1FNPSSqv28HQ399fWIWy/QD1E69i8UzMSEkD2fD4XbCmtG/LwPb19RW+Yxk120c3gilTpoRv2r6KNkU5t7W1FfLMqk8Zw2zTzHXSzDgZp5/0ACtTtp0MhjVr1hTKnbKjr4zvhTGlL6HNImMPP/ywpHyFi3LiOfs8v6dMmRL6YPJNumiHPNMsnnnmmbrjU3wkHxs3bgx9BumgvqwccuTdPGf7Jr7Z19cX+lPL7tpVyaqw86V68wi7smWPjCMcH3/88QHPWea13rdIh2VcG0ViXhMSEhISEhISEloG1ajJGgZjx2INwWqMZfaS1u6snv0Z77EMik1HFdaup6cnpAGG1dqlvupVrxpwPoZleQa7XnZ/rD1b1seebxb1yqWs7GJ2FFi2FBaKcsO2CXsYypE6jDVaKwdcq6qNSZmGjCZ8zz33SMptoWCQHnzwQUnSE088Eb79+te/XlLORmJjbNnHj370o5Jy9hKbQ+wFsbM99NBDQ/3+/ve/lyT94he/kCTdeOONkqQ//OEP4b3YlTaCKVOmFGxK7RE2YuLEiYHdwM4MBvXee++VlNfVG97wBknSm9/85gHvePLJJwc8h8b97//+74Fd/ru/+7sBaSQdDzzwQMP5ijF58uTwDstQ2FWXyZMnF+xS0f5ht+wqD89apsr2K/39/cFGERmGoUTmq7ZFZMuyY5yH7ZEG2r3G95IWGKq99957wH2WcbX2tF1dXXrNa15TNz323iqwq1OwU5xnTNi4cWPB1pU65R6OXLf2qraOOfb39xdsb61drJWDRtDR0RHKpmyFjL6ot7e30O/zrGVpWQ2y7DDf4N2x3Nm+k3dyD/Jj92kMhq222irIPUwjdqgcwbp168KKFfape+yxx4C8ABjY2F5WknbbbTdJxTFfGpxhrcq8vvzyy4V6RHaoP2yKpeKeDLtScNNNN0nK64Q2iW08smfloa2tLchh2UpSVViGld/1xloYbthxbFYtI8t9jAecp78kzXHa+Z9nqvYxiXlNSEhISEhISEhoGTRNTVpWYsDLjMbS0dFRsHcEnEe7sLswYQlAbBMiZRqY9VBQxhA2g7a2tqDxoRHEmnOM/v7+TZZH/MxgNq9l5VOWxvjYLLq7u4MWTDrIq9WCent7CxoR9yxevFhSzhJw3jLyMLGWGYhZizLb103Zk5bhmmuuCfm76667JA1kOKW8fHfYYQcdfPDBknLmlfq3sou2jPYMW8Xu2A9+8IOS8jq94IILgpeEwZjkZlcJJk6cWNh5bJlXe17KmQt2KfMb5pXd72jF4O6775YkHXfccQOemzhxYihb2jCMNXKx3XbbNZU3MGHChFI7PWtDNnHixJAm6umJJ56QlLPueIGgrGFp6Gte97rXDUg/6O7uDnmDFaF8YHWroLu7OzCdlt0HcZvhnjJZou7sO7GVxT4RBo7rXV1dhf7Wpgd7xWbR399favNsmU+puBJlGVfOWxbJ2gnyO+5/LUuGvMDaVmXPbT9s+2fGj7Vr1xb2MZAP7O1ZEUJW8eYBw4Vs0gfFNrS2rdhvcWx23Jg6dWpgU2kz1tYVvPDCC2G1oIwlpX/lvGVYaWuW/Zs6dWrh3nrsbBXMmTOnMAbRtqk/ZKqjo6NgH4t80o9effXVkvK9FZ/+9KclSQceeOCAvLE6VG/8Qx7tqoJdyWgEPT09DTOcnZ2dgWlFPpFDxg3Sb8E3kBfKg/d0dnYWGF87L2iUgU3Ma0JCQkJCQkJCQstgSDavVvu1dh99fX1BQ7E2O7ABzz33nKR81o22E8/UpVxDKdvFFmMwNnRT6OzsLPhDs2mP2QH+h5GxNiygzLYVTcvuko2ZOGvfZe0Aq6CMcbXp6ujoCPcuWrRIUm7/yG8YWI6AcsQWb5dddpGUM138rvddyww3g+uuu67AmqKhowmSphNPPFHz5s2TVPS9a32KkiZbh2W/jzzySD3yyCOSpO9///sD0oPdND4499tvv7BjsxFs2LAhMBQAjdwe165dG2SGZ/CDiI3rO97xDkm5jSXPwubBkvAbVhU7NSln2GFcrP/ZZtHT0zPAc4mUy761m+zq6gpM6//+7/9KymWJPMGU8wx9DSwXNnjUDWUzZ86c0O/YFZGh5LGrqyukrczWm35y2223DewndYCtNcC7QJlfZRhonqMdzpo1K5SN3WE9FFtXaSC7ahnOeitI3MNz2IBib4j8UrfcDyhPGEra/YYNGwp9K7/tykqzYHXI2qfyPtLa09MTrmErSl1Yf67IIGnE64M94n9zu+22K3gqsGOKZWQbxdNPP13wrkF/YD0HbL311gXbVgvega9W6hT5xK6WI7az9dpa7G1Bqs7EtrW1hbohPeSZ8/X2oVCPjInMZ2g39CH333+/pHyMpIxYlTrssMMkZasilnGlvqwP5GZh27K1ocVf+cMPPxwYVnxC4x2HZxhHLViR4n7rBzaeM/K/7Wsate1NzGtCQkJCQkJCQkLLoGlaq7e3t7Bbd1P3AmbZsHVoWda3ItoVNhNopNyHXeIWW2xRak9rWdtmELOpaHFlrGmswcJ2oJ1hk2QjbVjPAWiO1ualnv0V58rsZBtFzGbyP5qg9SCwZs2awPTAaKFFEoUJxs2y7AAW4YgjjpCU7+afOnVqYD2tVjgUP69tbW2B9bA7b6kXfLe++tWvDum2DAVaI0yGtXm1jDignhYsWBAi0rF7HzmAdYbxmjp1qs4555yG8xjbPVkb19gelXxgl8q9sG7YMsUsbXwf3hlgWLHNwzb90UcfDd4GrC9Q7PeqspPd3d2FaDO2zZPO++67L3wP7xbIHc/SL/AM9/FO8gRLgN3aW9/61sBw2V3Cw7EbP34PgHEFd9xxhy677DJJRX+Y1otAmf0sXgdYUYgjdNHGYVqA/dZ1113XcJ6kTK6szSVlaG35ent7Q1uj7cFU2Uhm1j+2rVvqENmbO3duwY57OBCPAaSd/PA7tnmFobPjGjvsLctn94TwPRg/Vg3WrFkT6temh3cx1jQrq6tXrw7jA4xvfE3Kx/VFixbpTW9604A0cyyzdbXsKXmzDGy9foR3DNX29cUXXyx4cLB21PFKAf0p5UFZx6sZkvSud71LUl7msSxIOfMOY/uGN7whlB+rCHYuUJV5Bbav4Tf7GvbYY4/glxzAyjLm33bbbZJyxp38wdjCJFuPEzNmzAgrZHbl3q54D4amZwaxsXLZxCJ2aMv/dMY0WlzuIHRMZhlAEHAGIAqJwbOnp6fgoNga4leZ3MUuVezRukKJ82obJmASTgOkAdAJ2w7Vmk/E3+XZoZoNxJugBnNztmjRohC2D/dOCLl1mmzNRmj8NGSb19jMAHmwrrOqbLqLJ3bUC50DE2gG476+voI5BrJqHU9TbnRmZUvJ1Mu6detCo37/+98vKa9f6wqo2Q4pDjwwGP74xz+GzpLOlbr41a9+NeDIoE9ZsPxzwAEHSMqX+sg7IUdj8CymCXEI2WbBu2jLpJu6wdXXokWLtNdeew1IGxOFX//615JU6DSRyz333FOS9MY3vlFS3uHS19x8881BDumE7YA2FFMlqWiiAphUXnzxxQVXWPxmAPza174mKTdFOfXUU+t+y064FyxYEFy54e7NDl5V0d7ePqA9SMVJbOx2KA6cIOXyxwSMtslgSl9Mf8r9yADjxtKlS0N7id2Pxd+vgvXr15cGkwFMxh5//PFwzW5ihABgEoh8I1fkj34SpZ92vXz58rCETzuw+aMMN7UZuB6WLVsWJq8c6QtPOukkSfn4duGFFwbzFjayklbalR23GSNPPPFESdJvf/vbAUfmBlIu82WwE+FG0dvbWzBJKgv3++STT4bJK2MN9YJrRgKF0F/RxwA2TaJAk8cnnngi9DvHHnuspLy8hiKn3d3dpUoLE1I2YR111FGhj2Ss/+pXvxrSJ5VPMDl/zTXXhHdJ0imnnCIpcyPJPZjJoag2q1wms4GEhISEhISEhISWQaUNW9C7ZeFZYw0BrQqNGWYSDZOlMH4zC0fbQGPBIXz83noOcKXyEK2NoK2treDapew969atC9+27oEI+4nWbZeUbMAD2Kk4hCIstP1+2XJ1o+jr66vrEisG6b7//vsLjCusiN14YZlY2AXqkHzEDrit+xqYk6Fs2Io1TJgLNHLYgNj4nfTbDVAwA6TR/uY7drmJd9ernzK2ukp4UWsuYI+0pb6+vrCcA2h3P/jBDyTl7c+CvMJwvvOd75SUh7ndYostwj2wRzZcbBXXLlLGkFGWNgwoy3WPPvqopHxjhCRdccUVkqRLLrlEUs5eAsoe5o/QvGx4+sAHPiBJOuiggyRlLrRYfYCtpd2WsW2NAjbSppEyhTXecccdA6MKe37nnXdKyhlX6ptnwHvf+15J5ZuxZs+eHfIFAwQTC9NVZoowGLq6uoKc2g1Rdll2xYoVYZyABYKF+s1vfiMpXxmgD7GmPLB7mCbBiC1evDj0yTbEsd0Y0wzieud/61qRMu3t7Q3fJv3IFXUJo8e4Yl20YW6EvMPCb7311mF1ibZMm7d9e7PtcccddwzjNuM55k7WZdJJJ50Uxg6e4V6YYdLHb8Z6ZI3No7wbc7VHHnkklAcrQNa0oCrzOmvWrPDuspDDyN6jjz4axifqk9WPH/3oR5Jykyme+cQnPlE33YDxf+bMmaFPwyQEWR4K6rGaMJ+MSbhB7OrqCszpl770pQH5KJtz2SV/+iLGGX5//OMfD3LJqkiZ66zBkJjXhISEhISEhISElkHTtFY9NqnM3mvJkiVBU4OFQTv87//+b0l56Ehm39ZNBTYkMAGE5tx5552DZmLdDw1ls09HR0fQoMvCBcKW9Pf3B6YQG1W0GdhJ69ScfPIbbd/axE6dOrUQ3s/agVYJZyhldWjfRVmhNePi6Z577gn/kyfr/N7akMHSYCeJXQ/gmwsXLizY+FmGZzC3K/XQ19cXtHnsHjGcp75itzG2vm2QCo6wO2iGZS5MYvtVuymFsoIx4lvN2rzOnDkzaLOWcaVeYELb29vDORhUyuVjH/uYpJw9travb33rWyXlTA82TzwfBweA2YJxZyMX4R9/+MMfNpXHjo6Ogn037QyZhImaMmVKYFxxS7bFFltIyusNdpP6JIzvySefPOC72NohDwcccEBgytisSB4t294MaE9ScdMVTA6s3SGHHFII3YpdHc/AfnAf+eW+I488UlLRLVd3d3dhsx12i4MFUWgEdiXMrkzQ9y1fvjykjXHjyiuvlFS0/UT2eRa5gM2jvuhD99xzz4KbN/oCMFQXRJaFhzUmbfPmzQvpuf766yXl7Q0Wym7GpQ1jf0n7o60xnhxwwAGB6Yyd+sfP2k1fjaLeZijO8S3ePXnyZJ122mmScpbx4osvlpSHTKXt2pDV4KqrrpIk/d//+38l5Xb1S5cuDfUdu+aKf5etIDUCu0nO1mfsBotVGurHMq6UMaunF1xwwYA8UTbUXxxABLn85S9/KSmfO5HXKqs8K1euLLiioo9nMyrvf+ihh/Stb31LUt5HWPaXd9hgBPY6+WP19tWvfnUII853WdEFjdq+JuY1ISEhISEhISGhZTCkIAVlrqrQNp5//vnAhqL1XnrppZJyJuev/uqvwr1SrllauxzYkBtuuEFSxubxfTQi2Iuh7PyNXWWVBRxAM5s5c2bQ1tj9ij0HmilMG7+x6UIL4rp1EbPVVlsV7CFtOqra2cXO38vCsVKmTzzxRNDcsXO0NmMANo68scu07L6FCxeGuiI0JzZr1G2V8LC9vb1BBmE92IGLXKERxmVKXZTZwMKWlgUrsPVTz+k58oKmXdXx9Nq1a0tt12ArYSkmTZoU2CbaYRxcQMrlDpdeHPkG7ZP0x+yu9SbANTToqq6y1q5dG8oFOYVxomxhJe67776wa/bMM8+UlLvVgx2g74HVxA4tZv6kfJfvz3/+c0kZg0y7htmjHGFgq9gsd3V1DWBf4/zAIsPwbLPNNgW7WNoZXgVgWHkGe0i+UWZLNnv27JB3u4pCvQ+2y3tTsLagloGlTvv7+4O8YYfMqg15oT+wTDj34S6KPNMvz5s3L+zw5ln2Kdj0NAtrq0d+kTvkf9q0acF+E9YLBo6yoa/lOsw7fS+sHJ48YDHnzp0b+lAbZAXWvGp42IULFwYXaoxjsKnYwIO5c+cGphTba8rh6KOPlpR7KOA6ecTbAHm76KKLJElnnXWWpKys7DtJD6xhVeY13o1vx0ZWIxmrXvva14Z7kEdYROoalvn4448f8B3aMN+yQTl6e3vDPAbZhoGl3Kp6HSDNsNSAFShw4403hj7961//uqRcLunTeQc2sbjOAoy/fJPfN9xwQ/BAQJnxTsagsgAIFol5TUhISEhISEhIaBk0zbzGfjEBv61P15jhYzclDCoz+dg5r5RrULBevPPwww+XlNtA3XLLLWE3MFoMs3veXcXmVSoGJSgL/9nR0VFqFwkjgxZhnb5bNhVtCqZw5syZgQXh3XZ3edX8dXR0FPy08duGu/vjH/8YbBcPPvhgSbmdYRz2UMqZ1jLNiXfbkIJSvmscX5toY1XzaINFlLGlm2JbyhgK65vV1h3PTZs2bVCWo2pISqkYlMCGgKUMJk6cGBg0jtbOzL6Ld1Av1p41ZlORaeTVyqllsBvFxo0bC22RlRn6FeRj4cKFgXFEXs8++2xJudcAGFXaHozU+eefLylnbb7yla9IymXw9ttvD6wQfY0tjyo71WfPnh3aNkyhZT5hPGPWlP+tFwH6WIB3Avsc4NtxQATYyaEGXQCxNw/bn1qH7TNnzgx+wClfdqrzm70P1ncoTBHlyBjAN5566qmw+sI4AWtGPVfx3tLf31+w2yd/MPq8f9WqVQWmGLaU/pZgBbwDO1baG/JPH0x53HPPPYFBw9a7zMa1WebukUceCewo7Cn9B3lETmP7WFhh6wOdI74/aXfUKWw0LCv2pKeffnp4p4UNLdssent7Q5nTJ9PH2FWnadOmBRaWfMOKYvNK2mlHxxxzjKScvbUrzMx7Ojo6wriCvOKBwo4vzaCrq6tgh8pv2grj9kMPPRRklnRZ7wJct3t5yu7n+qpVq8K+IJhXm65k85qQkJCQkJCQkDDuUInWsmFA+V3P1pTZNHZGaL0wqGia2MZyHWAjBPOBPchzzz0XNBGYA1gDG6WpGcQ2rzYyDFou2tS2224brlk7EtIC2wjzR5mRRp5HOyVPcQQxyhWmgHdV9TbQ2dlZSAf1xDf4ZswqkB67exgGCw0KLxC2/G0Y2Y6OjpBfyomoW2V2tY2gvb29YENm7S7jCFeN2rpZ7wJo6DbEcewHFy2yzCNBVRZ94sSJBZtXG9q1XghZy7zi9xbGD3sz+w6747jeuylzm66qfl4nTZoUZMjajiO/tJ/FixcH5gaZwr6M/oEy5jqyTZ8C+4U9HXXHSoGUyxP3VLU7B3YXP2klbbGtqfUSUOa31Uap4h2UB6wQtr+nnnqq3vKWt9RNH++oEmpbGti+bIhfG01wxowZof+HaYVJg6Wh/EkX9Y+MYSuMLWa8JwEbaGCjt1Wpy97e3tKw0vSpMKEvvPBC8E9MeeLVAXnCDpd+EBtX7sOum4h9jDMPPPBAKE/eQX9gQ5Q3a589ZcqU0E8A0hWHEZey8Zzv0m5gRWPPexp5/AAAIABJREFUGfEzHPEyAPMKq/6LX/wi3AdraxnWoTKvU6ZMKTxr/VfHHjmoa2TZ7u3hPDJlw6/zblZ5GO/e8573BPt6xizaD+mzkb+qwrKn9WxOrScTC87TPmH/7TyO+x5//PHQLmy/1SwS85qQkJCQkJCQkNAyqOTn1TKtlmGr54XA2r/BkhA5Cy8CaInYwKKBWhayu7u7EBsZDbdq5Ckp08YtK8nOV474L91rr70KLK/dxY52T/rRaqxPURDbs1jbMFveVXcdxs+VRUmLYW26rKaE5sa70Px5Dl++MFt8a8899wxMn/3WYBrfptDT01MooyqsirVHpR6sDbJlU5GJNWvWhHPY3vIb5ujWW2+V1Lz2GUeBK7N9jTVomFbsQvne5ZdfLilnF2h3sAysmPBOvhF/k/8pF2S6KuMK2traCmydPcayTBQm2ud3vvMdSTlri/2uZYuwP+Rd1A2MLL6mSZOUlwvtvUqfs27dulBmMGj8hpGNf5dFoOF8mTcC8mPZXBjYr33ta+GalQ+Oje4Atti4cWMhYhGyFPta5sg57qVPB5bJoh9lXLGsIvWzYsWKgk9ee2+VPiJOM8/Tlng/aVy+fHlYYeIeGCqYb95FX4kMWn/gds/C2rVrS705cJ66bHbFbt999w1sKGMtR0Cbnzp1aliFhA3lt7WzR/54N7Dvjlcn6X8sS8r37bPNgLKn37L9RD1vDcg2Mk0/wLjFSgp2veSF+uNbeFZYtWpViPBn5wasUFRdBQH2edp+LFP2HtvnWPtUoqKxZwVwHbaYqIfxd+1KRaNIzGtCQkJCQkJCQkLLoJK3gcJLjA0kGkM8e4dZAOyE5R78hKFpEtlnzz33lFT0CcdOWynfsTkUxjWG1XLxkMARu5u1a9cG2x+0Wcu8km+O7DZlV5610419jVrbW7Q0a2PVLLq6ugrP8ttqWLEtJuXBvdZez9rAUh+wJETp4L7FixcHJgItjGuWxWsGbW1tpba8oJ5/VZhWy7hyD5qvjfpkEb8HRgjGgPKFuSPCzrp16wo7zTeF2ObVfgOGI/Y+gAZM++IabQe/rrwLZgj7KxhZrqMtz5kzJ+SJvqGqX1eLtra2IENW9mGTKLPp06eHOufe6667TpKCnSHeBuh7kAkbJQ97S3yGzpkzp2DDZldDqrDMsX9VYNuf9QspFVcnLLgXv6/0mdanLM8vWrRI3/zmNyXlHhqGy9tAX19fKCP6eut9gL6zr68vyA5eHEgHvi7pe7ARhDW3Nnb1dvzb1TDqtKp/V/st8mEZujhSk6070kB+sEnHP+3+++9f95uUKd+cPHlywWd4vDoTn2/Wvj62u7b+fuvZmNJncy/yh69Yxk/LktJv2T6f98Tf4h32N/LDuNIoZs2aFerLjlu8k3pub28v1LHtB6gXbJQZ9/EcYCMs8vuqq64K+aW8uFbmd75ZlHkCgB3deuutA1uOv2G8I9DvW0YVv+HHHXdc3XfTPufPnx/GFMA7LRM7GBLzmpCQkJCQkJCQ0DIYks0rsHaTaCrt7e1hxg1zA6MKo4Ctq7UvQSsjGgM72PHZuO+++xZsvPB9V2aL2yjQWNF0rL9VtKtly5YFzR8mFSaFb8N0oWHhg9IygZZ5nDx5ciiL2K9s/O6hMK9lrA2sKWzUjBkzCnG20YxsDGh+kzd7HvvleMclWi5aNzKE1luFAVq/fn34Nu/Hf6S1e4tZ1jIGxpY/Nr3IgbXlo3z6+voCs8695J2yjH2xWqZkU6jHbloGlm9u2LAhaMjYsrLSQT3DysEUwACxQxvN2vrZjGNeU9Zo5fH3qyBmGGCNyBvlxzd23nnngn05fQu7ng888EBJuU9Q7AqxkaWvge2iXl/zmtcUvINQnny/ir1kV1dXqA/KH3mxqxr12qu1i8VelTqCeeU+GB1+421g7ty5IYIV1+hb+V2ViW1vbw9yYb1zUL7kub29PfyPDMGG0+9TztQdTBY+MZFTZAAGbt68eYX+cqg22VLWfu1qAN+xv2ObTfpU8gkbdf3110sqMsnYzGMDbH25brPNNqGuGDf4lvWb2Wx7jFnMMlaV44477hiu4VWAazzLCibvZaz/i7/4iwF54jn8i8f3lkV845lm0dHREcYc61WGtk6d9PT0hDGuzKc8/TqrOMxN2ONDfcJosi9k9913D7LMmEV6eGeVFebu7u4C42ojbuEp4I1vfKPuvvvukFcpZ2C5l3bG9RtvvHHA8ZprrhnwDe7fY489AqPMs9ZTU6NIzGtCQkJCQkJCQkLLoFr4ohLYyA3bbrtt0JDRqD/ykY9Iyned/fjHP5aUMxocv/GNbwx47s///M8l5VpYX19f0D6xF7KMcJXoTL29vUFjtn76bOxq7Bal3PYKwMCi5drdyVzniNYXxxm2DKfN11BtX+q9Ey0dRm6rrbYK7EdZ7OfYhlXKop/F19nlTTQ1GIJtttkmvJPvwVSTjiqMz6RJkwJbznvQHK3GvClY21eYA2ubitzBGMQ7pUk/dQVzcO+990pSIapLo9iwYcOg/lT5vW7duqCtw/zDXP7kJz+RlEdnsrIGi4dtLuwkKygzZswoxIq3zG9VxD5CkTEYX1gJ6nP//fcPLAbsyxlnnCEpZ3hoW/Qt+M7kneecc46k3N4QO8sTTzwxfIfjEUccISmXiSr+JWM21cq5ZUBjZs3aTXLeMqzY9sKq0rYoH5jXBQsWBJYMJph77DebRUdHR+lKHXWKveLixYsDI4XfSCIWIa+0E8YV+ldWvmDNYbKor9122y30Y8gUclp1BYtnacO8x3pCoI+fPn16GKuww8bmnGc4D9ilzurAWWedJanoyWWfffYJMsSqCWOS9Q/cbH7XrVtXamMKYsbTsrNvetObJBUZV/pLztu2hBcCZPPqq68O99qIXkTeuummmwZcbxTr168veLqg3PA3G9uOU5bIEGOi9Y6C7fbpp58uKd+Nj1ziZYC8HnfccWFl6K677hrwDZjfZv30ki7SSFvhfZZNPeyww8J4ecEFF0jK5yI8Y6NiAX7b/gIm96ijjgpjPZ6G+BbpatTrQGJeExISEhISEhISWgZDYl7LbC/QYGbPnh00TVg3GC8ihKDpcz22D5JytuRtb3ubpHxW3tPTE6Jz8c4yG8xm0NvbGzR0AGNBnG3sr/bbb7+gPdr4zbA3ZbseYeLQYNC20NyWL19e0LAs01o1uk9vb2+hrPguTAts1C677FLwcwfDar0PYEe5cOFCSTkjaXcPUmZLliwp2OFZu5wq7Hn8DrRW0gyzgReLet4GgPVIAJPCb2s/C2sUM+O800ahgrmMy//iiy9uOI9TpkwJ5WgZTuuTdcsttwzsKCsbb3/72yXlNq34SIURpk5pn6QX23WwZMmSARHnRhp8A3YptmmkjyAiD/0DGj1+X9n5S/ldeOGFkgbaH0vSaaedJiljAWF1YfJJh9313Qzq2Z7bqF8w39wvlXsN4DpMK0f6LeoeNpedwQsWLAjtj3v4jceFqjav/f39Bfty2g1lB2O/Zs2awEghn8jyzTffHO6Rij45aTus1FE/RNqK30XZ2nZc1W7Z2rzyHiurs2bNCmMHbBP3EkkSFowxjfZI/4VtLOXEuLHPPvsEeead7COwnheq9KmMb9iP02+zkhR7EMAzEIwp4DzvsJ4B7HN4QIFVjdNhwXh19NFHS1LBf/hgaGtrC/JAG7DlyPj27LPPhr7F9u/MiegP6HtYvaXe+Ab+UeP5A7KBPPEt3m3toasCWbIM6Pz583XYYYcNuEb/16iPWesHlhX3ww47LPRXMMvcQ1lZG+0yJOY1ISEhISEhISGhZVCJebVxfcsY2KlTpxbsI7FVQtP44Ac/KClnQbgPrRwtGbaA98HoSvks3/qbrRKJ4uWXXw6aDdoT9ldnnnmmpJyteuWVVwawzPERFg5tAk0LLR27Se7nW3G85zIvA9ZPYrPo6Ogo9edqy/etb31rgemxvlmJQIRdC9f5ht2pzXPbbbddsPlCu0TLrcIOgA0bNhSYZcqKtGJ3w1EqMq2DMTJo3dY/IIhZJ2SU79WzyWqGeY13DPM/LJRlYufMmRPOoV2zSxvt+0Mf+lDdd9lvwCLRHmfOnBlYDxvhq6qXAdDW1lawl6Sssd2F5V+6dGnwfEDb+sEPfiApt5ukjylbwaCvoU/ifUuXLg2MPUwJsHb+zcKyphxhPCnnp59+umDballb0k975UjaLTNbz3esZb/sO6vmTyrfLc09cTQt6urwww+XlMeOx36eXdzcZ1eMsC0k/cuXLy/svrfjWBX2fP369QUfzsgTjHe86hPHsJfy3dnYajL2MD6yYoIcsIoFgxvbXlPPlCNjELB7FhrFjjvuWLDpLotktdtuuwXb0KuuukpSzn5j13nqqadKym1IKT/yjI0pDG1sT8uelziiV3xkHGmWeZ00aVJhvKXvoRyx3b3qqqtCWRMZrSzCVjyeS8Vxn/kB31yyZEmQF2xQKQ/SYz0VNYKVK1eWehugPTz++OMhTay0ce2yyy6TlLPPrBBY+1TeSfs75ZRTJA3sN5F5ZJ18UhaN7EeRKkxee3p6ChMLEmwHms7OzsJkiIRhiB67n5CKEzXMCXgPndGUKVMK7pCGYi4A1q5dW6gQvsmkFZOAF198MQg2Gwrsph6WjuyE0y41YdQfLz3Z/NhABkwGm8WmJoZsHKAM5s2bV1BA6EBRROykFViXWYDOdd999w1ywZEOtkoDBZ2dncE1CZNEJo2UHflbuXJlIYCGnZTaRm8ns3Y5FHR0dBRctzBZpO6Y3FbZfGddUZVNYuMQrgwUdhLKZLbsHXYiyuRx5syZBbdddhJbdeNWPMmxQQLoVDFjYCOHlA9g5513nqR86Z2JD5u9SCeygiLFRIgO+pFHHgmDFO3ZBrSoMlHv7u4edBMWE81rr7025INzFsga99lQr2VYsWJF2LxlTQ2YtFrXXY0iXo5lfLCBJ2LXWVxjckR5YObDQM55a7ZBf2zd1s2YMSOMPWXBBOoF4BkMU6ZMKbjGIm18h41Tzz77bJggoJwgc/ShbJy0fTtyx1I6k3S+sWjRovB/rJDH+aO8mw3Duc8++wSzgMFCuUrFIAQoRHaTlXWlxXOYUPB8vKTOBMdOeG2o+GbR29tb6Pdt2GtMGA8++OAQAIXxkrkBv/fdd19Juas35Jp2RHqRGfrh5557LoyFkGZ8v9lNvTHqKSw2OAFt5bbbbguTTyaWn/3sZyXl5gMoB9YkMHa3JRU3Yd12221B1skf99h0DYZkNpCQkJCQkJCQkNAyaJp57ezsDDNjtAl+W801DqPGzB9NCU0SFgSNE60Dds6yqvyupyVbk4MqmnRvb29Io13uRktCu1+1alW4F20N9tE6FobxK2No7JJmR0dHYQMADIpdimgWHR0dg7q+IV/bb799KHOWsMgj7HlZOuxmMBgB2IOdd945/F8WaraK+cC+++4bXMvAnqHdw5qT9rlz54bNIcgeGq5dDrQMkmVNuY/n77vvPl199dWSco2U5U+7RNmsVh0HNShb4q8H8kReuZeVA+TQgvZqQ8/aNG3qd7PYuHFjwaE95URbh63Zf//9g0aPPMKow4rABgC7cQi2H1lh+e6ggw4K9WYDlfBss2yWJN1xxx3hf2s2UM8kAEbVsrOsDOEay5oXWObVsrx33nlnYMVgmMs2klWBXTmyfXm8aZJyhY2hr2GFzoZctSY+9FHICTKw5ZZbhjZnzYFIXxUzrKlTpwZ5o+3Y78CS9vf3B7MlVgpYnuUIY2fNnQC/kU2+ueWWWwaGFybNlhVotk+dMmVKyKPdMEX7i91c8T/sPUvstCtbXvRJdhOYZVXjb9trVcdCMGHChFBvdiWZI+Px9ttvr3e/+92SpCuvvFJSLqesSL3vfe+TVDT1Yy5B/dnN4a973esKG1/tZl/Y3WYxWB/FquCqVatCsBrOwcDSh5aFLbbfYqWB961cuTKsngBrOtWoWUtiXhMSEhISEhISEloGTdNa9ZxOW406ZkDL2E9m12hf2HxyHo2Z6/U2hdlz1m62Cnp7ewsujywDir1dd3d3uIYmaO1CrRG4tQO1trBxaFp7DxqKdeVRJY9l9sG2LqdOnRpYJzQj8gZLABtH3uw7bQACWL+ddtqpED4XDbpRdxn1MHPmzMDo/8d//IekXPu3DvR///vfB8bupJNOkpSHmkQO0HStvCHbyC7G7Gw0iEP94Q6IZ2CIhhIGtwz17FXJt3WvxRGXOxaNbMIqs48d6oYtafAAHbSBLbfcMrCGsOvYkcG+W1s22pHdbAFjSWCU2bNnF1ZGSNdQ7NDuvPPOgmusMpa03jlr42qDE1jXWpZx5XjkkUcGG0z7vaHKZWzLbZks6iG2G+Ya5+g7qCPSBxMLy2idw7PShbzE9WTDf9pVsmbwyiuvFPpl+jK7gQuH9VK+l4PNhNQRz5AW0mYd1dtNYbvuumthlY/0UCY2/GmjWLp0aciTZUvtSs3UqVNDe6MvJ42cr8ekxoDNZXUM5jp+J++w7ypbORoMsVtDgHxYN4NtbW1hfDrmmGMk5SvI5JH9IKwg2PlOHNZaytv/rFmzBrgDjUHbqLI/oqenp7RvsZtOd9hhh5BumFNsXe2mKvtO8k8fbF1m7bHHHgP2m9TLZ2JeExISEhISEhISxh0qeRsY7FzMUFn7WDurRuMA1oYMhqOeSxrLsNazuW0W06ZNK+wEtCE+sVN5/PHHg8uWD3zgA3XTZF1jkR+7Q9WyEbF2ZR1zD4WV5D2WebV2J9ZOTcoZVlwIoRGzu5t02neRXjR/2JR6rA71a9/RDGKPGGiIaIw20ICUsyC48OBZtE1CMGKfi4aOY3/YExhXvvXNb34zsGE2FOX1118vKd/132ydNmJzWg+D3WPtaNGOLWO9KVZ1qLauoB7DYHcEg76+vpBGdqaz2x5WC4bc2sdR9pZNQFa6u7tL2boqfQxYsGBBQb5tfxi3gzK7WBhmwG8beIQjNnUx21PmsmuofU3sggjYMmPF5qWXXgrpsMwpgP1CDuy4Yusp7m/Lgo0MRV4XL15cWBnjfcgT+V+3bl2Q0QMPPFBSPq499thjknIZBYwL5A+7VphG+tSYceT7Nr9V9xGsXbu2lCW1bSm2ebV2svSLlpm1bC42r9zHOBN/i36VZ61Xl2bR19dXugqKzMVzGe6hXtg5T7ps+HdkA88mtD3GVL69cuXKAlMOq2tXH5pB7PmJfNDG683pkF1sXK1rLBta1oI9HtjMgp6envAO62WAfCXmNSEhISEhISEhYdyhaeY11pobYTqttwD7TJlNK/eV7VDt6ekpPGPt46r4e504cWKpDRQaIZ4Rbr755uC42Pp5RXvgHZyHabWMK3nh221tbQUvB1Vssuqht7d3UO0tZmApR/JkNUPYAMrABimwTKu1T4sx1J2xpNmyZ7AQlkFYv359wS4JDZ/QjN/97nclSRdddFFD34c16u/vL+xs5vv4J2X3MbtPG0XsbQBsyq+qvWZ/0w7tO8vsWeNvDPbuqti4cWNoD9avqmVeN27cGK5ZH6CWebTeUWB87GoPMhMzATaQBahif37ooYeW2qHV8zpgvQdwDVniPMwrrA/yCCtUj7kte/dQVkAAbdD2/fym3/jVr34VfHyWhYm2fQb2kdaek+fJe2dnZ8gDbBcsGO+wddoIJk+eHOSOtk1Z2r0Ss2fPLjDKlA27ua0HBIKK2PzaMWrt2rUFe3DrLaXM+8BgWLNmTXgX37e2pbHtqe1jLTtrAwvA3lm7VfplbGbrgTHZhq1tFkuXLi0wf+x5sGP6unXrCvJpffuyx8Gm0waOYBU39i5hxyxkG7azyrwmZldJu80D9q0vvvhioR/g29ZOFnCdlTqO9jkpl8ejjjpKUs7uNhqcACTmNSEhISEhISEhoWUwJD+vZYiv1/NAIOWaWpkfV2BtL2OPArzLvnso+PWvfx00HbRM0gQTir1iT09P0KSwubGeCmwowjJ/dFZLj5+xu1atb7gqKGM4OaIprV69umB3ZZ+1u7RtpC3K0/r8jTVIa2s7FEyYMCGUMzY3pAGGAz/Cq1atCuklfVzDl90vfvELSbntpPU1XM/+Utq0n1I0c9K1fv36yrvzyxjOeNf/YD5Yh8KSDjfjGsMymraNx753LWtldw9b+3lrFwnjwTG2q7S74DlaP6PNwrKjNrJSvSh6ZdGu6IOs3aRFPY8CZQyrXS1pFnF9lbHofPvhhx/WDTfcIKm4J8CG7KYd85sd4dbjCW11+vTpIQ+0a8KU4tmmiv1y3BeTFusZgPNdXV2FvpD0IkekgfP0OdZ3rF2Fi6ME2pUFWDD63TgMbyOox6aW7faP/d7Gz28KMK0cYU8ZfzlK+fgJkzlU/66gu7s71CX9WLyCJg0sV9uPU9aseiCP5J12zHnqy44LGzZsCDLP92g3MJNVVgjqgffb/uDZZ58N/sltxDJkyfYHlsXdlAcB/rcsbbN9TNOTV+dcs480BZbkxwpsoJFyGt0CY2Qpd8HEsRVA2Mzxil/+8pf65S9/WfdaXL+NAhdazeKGG24Ig/Fw44wzzhiR925O+OQnPznWSRhRXHLJJWOdhBHHueee2/C97e3tOv7440cwNQOBOdBQ4L0fhpRs3li4cOFYJ2HE8b3vfW9UvhOHsR5NEM62UZSFoB5OsNmdY7NIZgMJCQkJCQkJCQktgwlDcbKdkJCQkJCQkJCQMJpIzGtCQkJCQkJCQkLLIE1eExISEhISEhISWgZp8pqQkJCQkJCQkNAySJPXhISEhISEhISElkHz4YtGEM65D0jCf8mHvff/NZbpGQ44594p6f9I2k3SlpKel3S3pPO993eMZdqGgk3VlXNub0nHSXq7pJ2U5XuppFsk/Yv3/p5RTu6gcM59RdKbJO0iaY6kdZIWSbpC0oXe+5fqPDNB0gclnSZpT0mTJS2R9FtJn/XePzY6qR8anHNPS5pXcvkF7/02o5icYcd4yl+S0/FRj41iPI6JMVo1f+O9HTrnTpB0sKS9Je0labqkS733J2/imf0lfVbSfpK6JD0h6b8lfd17P3Qn/AabzeTVObeDpK9LWi1p2hgnZ1hQE/BPS3pJmVAvk/RaSe+S9B7n3Ae9998fwyRWQgN19U1J+yqbpP9P7b69Jb1X0gnOub/w3v90lJLbKD4p6R5Jv5L0oqSpyhrh5yV9xDm3n/c+xGp0znVJ+rGkoyU9Kun/SXpF0naSDlTWqW02nVEDWCnpa3XOrx7thIwQxkv+kpyOj3ocFONxTIzR4vkb7+3ws8omraslPSdpwaZuds69S9JPJHVL+qGklyUdI+nfJb1V0onDncDNYvJa00guUjbJ+x9JZ45tioYO59w2yvLxgqQ9vfcvRtcOlXSjpC9IaqnJa4N1damkk733T5hn368sv992zl3lvV8/0ultAjO89932pHPuy5LOkfQZSXGEjn9T1hH9kzKtud88N3xhpkYHK7z3nx/rRIwgxkv+kpyOj3rcJMbjmBhjHORvvLfDTyqbtD6hjIG9qexG59wMSd+W1CfpEO/9XbXz5ymb55zgnHuv9/6y4Uzg5mLz+nFJhymj04cn3tvYY56y8l0YT1wlyXt/kzKta6t6D27mGLSuvPdftxPX2vlLJT2uzIzg9SOZyGZRryOq4Ue1Ywir5pzbWdLfKFvuOdd2RLX3VYv1mpCwCSQ5/ZPBeBwTY7R0/sZ7O/Te3+S9f9x730gggBOUzWUuY+Jae0e3MgZXkv52uNM45syrc25XSf8s6T+897c45w4b6zQNEx6XtF7Sm51zc7z3y7jgnDtImQ3JFWOVuCoYprqikfYOX8pGFMfUjg9E5/5SmWJyiaQZzrljJO2gjEW4sd7EvQXQ6Zw7WdKrlQ0mD0i6ZSRslcYI4z1/SU7HCcbxmChp3OfvT6UdxqD+rq1z7RZJayXt75zr9N73DNdHx3Ty6pzrkPQ9Sc8oo9rHDbz3LzvnzpJ0vqRHnHNXKBPWnSUdq8xW5qNjmMSmMBx15ZzbV9nGtcWSHhq+1A0fnHNnKrO/mqnMIP8AZR3RP0e37VM7zpT0pDImGWx0zn1D0sdbbEDdRln9xnjKOXea9/7msUjQMGNc5S/J6QC0bD1ajOcxURp/+fsTbocxXlc7Fmx2vfe9zrmnJO2ubPP274bro2NtNvD3kt4g6VTv/boxTsuww3v/NUnvVqYkfFjS2coMl5+VdLE1J9jMMaS6cs7NVj7ofGozbqhnSvqcpE8o64iulXSE935pdM/WteMXJN2lzARiuqTDlXVOTtJ5o5XgYcBFytK+jbKNB6+X9C1JO0q6xjm319glbVgwHvOX5HR81KPFuB4TNf7y96fYDi1m1o4rS65zftZwfnTMmFfn3JuVaV7/1souozYF59ynJf2jpAskXajMLcYCZUbblzrn9vbef3oMk9gQhlpXzrmpkn6uzA7oq977Hw3yyJgBdzvOubmS9lemQd/rnDs6cvHVXjs+L+n4qBO+seZi5B5Jn3LO/eNmtimtLrz3/2BOPSTpb5xzqyWdoWwH7fGjna7hwnjMX5JTSeOgHmOM9zFxPObvT7EdVsCE2rER+9mGMSbMa7R08JhaW+MohXPuEElfkfRz7/2nvPd/8N6vrQn08cqWzs9wzu00lukcDEOtq9rE9SplWun53vuzhjeFIwPv/Qs1d15HKFvm+W50eXnteK1lD7z390t6SplmvetopHUE8c3a8aAxTcXIoeXzl+RU0jiox/E+Jo73/P2Jt0OY1Zkl12eY+4YFY2U2ME2ZX7NdJXU75zbyp4yClzJ3Shudc/V8+rUCjq4dCy4mvPdrJf2vsvJ/w2gmqgIq15Vzbrqka5S52viq9/6M0Uz4cMB7v0jSI5J2d87NqZ1+tHZcUfIYndXkkUzbKACzlqljmoqRw7jJX5JTSa1dj+N9TBzv+ZP0J9sOyd8u9kJdSB62AAADO0lEQVRNaXmNsg3afxjOj46V2UCPpO+UXPszZRO6W5UVSqsuL3TWjmXusDi/uS8TVKor59xMZfY/+0n6svf+s3Xf0BrYrnbETvcGSX8naQ97o3OuU7mblKdHPGUji7fUjsPa6WxGGG/5S3LauhjvY+J4z1+MP7V2eKOk90s6UtIPzLWDJE1R5hFk2DwNSGM0ea1R5x+qd80593llgnxJq4SKK8FvJH1MWbSNb3nvF3PBOXeUsqgT3ZJuH6P0NYQqdVXbnHWdst2Xn/Pef2EUkloZzrkFypyfLzHn2yR9UZnB/e3eezTka5QNlH/unHu79/5X0WPnKVs+udm+b3OEc253Sc9771825+cps9OWWiyQRozxlL8kp+OjHuthvI+J4yl/f8rtsASXKzORfK9z7utRkIIuSV+q3fON4f7omPt5Hce4XNL1kt4m6XfOuZ8q27C1qzKTggmSzvZ1YiCPA/yPsonrk5Laap2TxRXe+/tGNVXlOFLSvzjnblGW5pckzVVm7rCTsnr7MDd779c7505RNkG/pla3i5S5RDlI0lJJHxnVHFTHiZLOds7dpMz26hVl7tzeqSw+9dWS/nXskjdkjKf8JTkdH/WY0NoY9+3QOXecpONqP7epHd/inLu49v8y7/2ZkuS9X+Wc+7CyOc+vnXOXKQsPe6wyN1qXKwsZO6xIk9cRgve+3zn3DkmnS3qvsk1aU5RV6tWSLvDeXzeGSRxJvKZ23Fm5PZPF05I2l8nr9ZL+Uxkbvpcylx5rlG0u+J6yuhrA+Hjvb3XOvUlZ/g6tPfNC7T1f9N4/N3rJHxJuUtbBvEHZ8utUZbZZtyrL+/cajLKyuWI85S/J6fiox4TWxp9CO9xb0inm3E61PymbfIeQvt77K5xzB0s6V9J7lCmUT0j6lLLyGPa2OWHjxtTeExISEhISEhISWgNjHaQgISEhISEhISEhoWGkyWtCQkJCQkJCQkLLIE1eExISEhISEhISWgZp8pqQkJCQkJCQkNAySJPXhISEhISEhISElkGavCYkJCQkJCQkJLQM0uQ1ISEhISEhISGhZZAmrwkJCQkJCQkJCS2DNHlNSEhISEhISEhoGfx/isgykh14M/4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 864x291.6 with 36 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "print(\"x_train : \", x_train.shape)\n",
    "print(\"y_train : \", y_train.shape)\n",
    "print(\"x_test  : \", x_test.shape)\n",
    "print(\"y_test  : \", y_test.shape)\n",
    "\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "if img_lz>1:\n",
    "    ooo.plot_images(x_train.reshape(-1,img_lx,img_ly,img_lz), y_train, range(6),  columns=3,  x_size=4, y_size=3)\n",
    "    ooo.plot_images(x_train.reshape(-1,img_lx,img_ly,img_lz), y_train, range(36), columns=12, x_size=1, y_size=1)\n",
    "else:\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "    ooo.plot_images(x_train.reshape(-1,img_lx,img_ly), y_train, range(6),  columns=6,  x_size=2, y_size=2)\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "    ooo.plot_images(x_train.reshape(-1,img_lx,img_ly), y_train, range(36), columns=12, x_size=1, y_size=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4/ Create model"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size  =  64\n",
    "num_classes =  43\n",
    "epochs      =  5"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Model: \"sequential\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "conv2d (Conv2D)              (None, 23, 23, 96)        960       \n",
      "_________________________________________________________________\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "max_pooling2d (MaxPooling2D) (None, 11, 11, 96)        0         \n",
      "_________________________________________________________________\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "conv2d_1 (Conv2D)            (None, 9, 9, 192)         166080    \n",
      "_________________________________________________________________\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "max_pooling2d_1 (MaxPooling2 (None, 4, 4, 192)         0         \n",
      "_________________________________________________________________\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "flatten (Flatten)            (None, 3072)              0         \n",
      "_________________________________________________________________\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "dense (Dense)                (None, 3072)              9440256   \n",
      "_________________________________________________________________\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "dense_1 (Dense)              (None, 500)               1536500   \n",
      "_________________________________________________________________\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "dense_2 (Dense)              (None, 500)               250500    \n",
      "_________________________________________________________________\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "dense_3 (Dense)              (None, 43)                21543     \n",
      "=================================================================\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Total params: 11,415,839\n",
      "Trainable params: 11,415,839\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model = keras.models.Sequential()\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "model.add( keras.layers.Conv2D(96, (3,3), activation='relu', input_shape=(img_lx, img_ly, img_lz)))\n",
    "model.add( keras.layers.MaxPooling2D((2, 2)))\n",
    "model.add( keras.layers.Conv2D(192, (3, 3), activation='relu'))\n",
    "model.add( keras.layers.MaxPooling2D((2, 2)))\n",
    "model.add( keras.layers.Flatten()) \n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "model.add( keras.layers.Dense(3072, activation='relu'))\n",
    "model.add( keras.layers.Dense(500, activation='relu'))\n",
    "model.add( keras.layers.Dense(500, activation='relu'))\n",
    "model.add( keras.layers.Dense(43, activation='softmax'))\n",
    "model.summary()\n",
    "\n",
    "model.compile(optimizer='adam',\n",
    "              loss='sparse_categorical_crossentropy',\n",
    "              metrics=['accuracy'])\n"
   ]
  },
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5/ Run model"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 39209 samples, validate on 12630 samples\n",
      "Epoch 1/5\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "39209/39209 [==============================] - 56s 1ms/sample - loss: 0.2945 - accuracy: 0.9090 - val_loss: 0.3993 - val_accuracy: 0.9068\n",
      "Epoch 2/5\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "39209/39209 [==============================] - 57s 1ms/sample - loss: 0.0701 - accuracy: 0.9795 - val_loss: 0.4959 - val_accuracy: 0.9074\n",
      "Epoch 3/5\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "39209/39209 [==============================] - 62s 2ms/sample - loss: 0.0549 - accuracy: 0.9840 - val_loss: 0.3177 - val_accuracy: 0.9311\n",
      "Epoch 4/5\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "39209/39209 [==============================] - 75s 2ms/sample - loss: 0.0370 - accuracy: 0.9891 - val_loss: 0.2901 - val_accuracy: 0.9417\n",
      "Epoch 5/5\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "39209/39209 [==============================] - 61s 2ms/sample - loss: 0.0367 - accuracy: 0.9888 - val_loss: 0.2629 - val_accuracy: 0.9382\n",
      "CPU times: user 27min 34s, sys: 5min 39s, total: 33min 14s\n",
      "Wall time: 5min 10s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "\n",
    "history = model.fit(  x_train, y_train,\n",
    "                      batch_size=batch_size,\n",
    "                      epochs=epochs,\n",
    "                      verbose=1,\n",
    "                      validation_data=(x_test, y_test))"
   ]
  },
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6/ Evaluation"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Test loss      : 0.2265\n",
      "Test accuracy  : 0.9461\n"
     ]
    }
   ],
   "source": [
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "score = model.evaluate(x_test, y_test, verbose=0)\n",
    "\n",
    "print('Test loss      : {:5.4f}'.format(score[0]))\n",
    "print('Test accuracy  : {:5.4f}'.format(score[1]))"
   ]
  },
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Results :**  \n",
    "25LHE : 93.4%  \n",
    "35LHE : 95 %  avec Convo. 192 3x3 ou pas (->10')  \n",
    "25L : 93.6 %  \n",
    "25RGB : 92.6 %\n",
    "25RGB : 95.15  avec prof. 192"
   ]
  },
  {
   "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.6.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}