{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# MNIST-Neural Network-Single Hidden Layer with Tensorflow – All-in-One" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Extracting MNIST_data/train-images-idx3-ubyte.gz\n", "Extracting MNIST_data/train-labels-idx1-ubyte.gz\n", "Extracting MNIST_data/t10k-images-idx3-ubyte.gz\n", "Extracting MNIST_data/t10k-labels-idx1-ubyte.gz\n", "Total batch: 550\n", "Epoch: 0, Train Error: 2.30271, Validation Error: 2.30257, Test Accuracy: 0.09800\n", "Epoch: 1, Train Error: 0.45268, Validation Error: 0.43121, Test Accuracy: 0.88920\n", "Epoch: 2, Train Error: 0.38823, Validation Error: 0.36660, Test Accuracy: 0.90370\n", "Epoch: 3, Train Error: 0.36133, Validation Error: 0.34099, Test Accuracy: 0.90890\n", "Epoch: 4, Train Error: 0.34381, Validation Error: 0.32437, Test Accuracy: 0.91200\n", "Epoch: 5, Train Error: 0.33246, Validation Error: 0.31375, Test Accuracy: 0.91320\n", "Epoch: 6, Train Error: 0.32394, Validation Error: 0.30603, Test Accuracy: 0.91500\n", "Epoch: 7, Train Error: 0.31746, Validation Error: 0.30059, Test Accuracy: 0.91560\n", "Epoch: 8, Train Error: 0.31214, Validation Error: 0.29624, Test Accuracy: 0.91680\n", "Epoch: 9, Train Error: 0.30817, Validation Error: 0.29277, Test Accuracy: 0.91710\n", "Epoch: 10, Train Error: 0.30382, Validation Error: 0.28908, Test Accuracy: 0.91810\n", "Epoch: 11, Train Error: 0.30079, Validation Error: 0.28666, Test Accuracy: 0.91890\n", "Epoch: 12, Train Error: 0.29812, Validation Error: 0.28494, Test Accuracy: 0.91930\n", "Epoch: 13, Train Error: 0.29524, Validation Error: 0.28253, Test Accuracy: 0.91990\n", "Epoch: 14, Train Error: 0.29342, Validation Error: 0.28064, Test Accuracy: 0.92040\n", "Epoch: 15, Train Error: 0.29139, Validation Error: 0.28033, Test Accuracy: 0.91950\n", "Epoch: 16, Train Error: 0.28926, Validation Error: 0.27790, Test Accuracy: 0.92110\n", "Epoch: 17, Train Error: 0.28726, Validation Error: 0.27691, Test Accuracy: 0.92160\n", "Epoch: 18, Train Error: 0.28580, Validation Error: 0.27549, Test Accuracy: 0.92180\n", "Epoch: 19, Train Error: 0.28480, Validation Error: 0.27497, Test Accuracy: 0.92250\n", "Epoch: 20, Train Error: 0.28287, Validation Error: 0.27353, Test Accuracy: 0.92150\n", "Epoch: 21, Train Error: 0.28197, Validation Error: 0.27298, Test Accuracy: 0.92180\n", "Epoch: 22, Train Error: 0.28047, Validation Error: 0.27159, Test Accuracy: 0.92200\n", "Epoch: 23, Train Error: 0.27936, Validation Error: 0.27101, Test Accuracy: 0.92240\n", "Epoch: 24, Train Error: 0.27886, Validation Error: 0.27110, Test Accuracy: 0.92220\n", "Epoch: 25, Train Error: 0.27783, Validation Error: 0.26968, Test Accuracy: 0.92190\n", "Epoch: 26, Train Error: 0.27652, Validation Error: 0.26936, Test Accuracy: 0.92240\n", "Epoch: 27, Train Error: 0.27559, Validation Error: 0.26898, Test Accuracy: 0.92280\n", "Epoch: 28, Train Error: 0.27555, Validation Error: 0.26977, Test Accuracy: 0.92370\n", "Epoch: 29, Train Error: 0.27399, Validation Error: 0.26819, Test Accuracy: 0.92290\n", "Epoch: 30, Train Error: 0.27316, Validation Error: 0.26754, Test Accuracy: 0.92280\n", "Epoch: 31, Train Error: 0.27262, Validation Error: 0.26733, Test Accuracy: 0.92300\n", "Epoch: 32, Train Error: 0.27181, Validation Error: 0.26704, Test Accuracy: 0.92160\n", "Epoch: 33, Train Error: 0.27137, Validation Error: 0.26673, Test Accuracy: 0.92340\n", "Epoch: 34, Train Error: 0.27055, Validation Error: 0.26663, Test Accuracy: 0.92330\n", "Epoch: 35, Train Error: 0.26984, Validation Error: 0.26597, Test Accuracy: 0.92330\n", "Epoch: 36, Train Error: 0.26916, Validation Error: 0.26527, Test Accuracy: 0.92360\n", "Epoch: 37, Train Error: 0.26878, Validation Error: 0.26520, Test Accuracy: 0.92290\n", "Epoch: 38, Train Error: 0.26841, Validation Error: 0.26433, Test Accuracy: 0.92340\n", "Epoch: 39, Train Error: 0.26784, Validation Error: 0.26436, Test Accuracy: 0.92350\n", "Epoch: 40, Train Error: 0.26712, Validation Error: 0.26463, Test Accuracy: 0.92360\n", "Epoch: 41, Train Error: 0.26702, Validation Error: 0.26505, Test Accuracy: 0.92390\n", "Epoch: 42, Train Error: 0.26610, Validation Error: 0.26391, Test Accuracy: 0.92260\n", "Epoch: 43, Train Error: 0.26556, Validation Error: 0.26336, Test Accuracy: 0.92330\n", "Epoch: 44, Train Error: 0.26537, Validation Error: 0.26327, Test Accuracy: 0.92340\n", "Epoch: 45, Train Error: 0.26465, Validation Error: 0.26280, Test Accuracy: 0.92330\n", "Epoch: 46, Train Error: 0.26447, Validation Error: 0.26348, Test Accuracy: 0.92480\n", "Epoch: 47, Train Error: 0.26404, Validation Error: 0.26349, Test Accuracy: 0.92390\n", "Epoch: 48, Train Error: 0.26354, Validation Error: 0.26289, Test Accuracy: 0.92330\n", "Epoch: 49, Train Error: 0.26311, Validation Error: 0.26254, Test Accuracy: 0.92360\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABIEAAADjCAYAAAASRQSDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XuUXlV9N/DfBmIaQATCRRYSRSF1IXeCtS0I6iJqsYDc\nCkWRaoFSXiqCF+QiCNLiBVygXVFQwLpE0CJXu5RLX6WAghgBARVRAwTC/RIIcs1+/8jYN8Czz8w8\n81x25nw+a2Vl5nznnPObh3wzw87zzE455wAAAABgcltu2AMAAAAA0H8WgQAAAABawCIQAAAAQAtY\nBAIAAABoAYtAAAAAAC1gEQgAAACgBSwCAQAAALSARSAAAACAFrAIBAAAANACK0zk5JTSuyLi1IhY\nPiK+lnM+aZSPzxO5Hyzrcs5pEPfRTRgf3YQ66SbUSTehTmPpZsq5u56klJaPiNsjYoeImB8RP4uI\nvXPOtzWco5S02iC+YOomjJ9uQp10E+qkm1CnsXRzIi8He3NE3JFz/n3O+dmIODcidp7A9YDe0E2o\nk25CnXQT6qSb0AcTWQRaNyLuXur9+SPHgOHSTaiTbkKddBPqpJvQBxP6mUBjkVI6ICIO6Pd9gPHR\nTaiTbkKddBPqpJswPhNZBLonItZb6v3XjBx7kZzz6RFxeoTXaMKA6CbUSTehTroJddJN6IOJvBzs\nZxGxYUpp/ZTSKyJir4i4uDdjAROgm1An3YQ66SbUSTehD7p+JlDO+fmU0v+JiB/Gki37zsw539qz\nyYCu6CbUSTehTroJddJN6I+ut4jv6maenkfLDWI7zW7oJm2nm1An3YQ66SbUqd9bxAMAAACwjLAI\nBAAAANACFoEAAAAAWsAiEAAAAEALWAQCAAAAaIGut4gHAAAYzXLLlf/d+UMf+lAx23TTTTseP+SQ\nQyY8E0BbeSYQAAAAQAtYBAIAAABoAYtAAAAAAC1gEQgAAACgBSwCAQAAALSARSAAAACAFrBFPAAw\nKfzFX/xFMfvsZz9bzObMmdPx+KWXXlo8Z9GiRWMfDFpu5syZxazUv4iISy65pB/jALSaZwIBAAAA\ntIBFIAAAAIAWsAgEAAAA0AIWgQAAAABawCIQAAAAQAtYBAIAAABoAVvEMyGrrbZaMZsxY0bP73fn\nnXcWs4985CPF7JZbbul4/Pbbby+ec9NNN419MCadVVddtZgtXLiwmC1evLgf4wBjcNhhhxWzbbbZ\npphtu+22HY+ff/75xXM+/elPF7Nbb721mEEbNXWpSen7NwC655lAAAAAAC1gEQgAAACgBSwCAQAA\nALSARSAAAACAFrAIBAAAANACE9odLKU0LyKeiIgXIuL5nPOsXgzF4O24447FbKeddipm22+/fTHb\nYIMNJjJSR027eb32ta8tZlOnTh33vZZffvlxn1ML3Zy47373u8Vs0aJFxexrX/taMbv00ksnNNNk\ntNZaa3U8/sgjjxTPef755/s1Tt/pZn9de+21xWyXXXYpZius0PnboV133bV4znbbbVfMjj766GJ2\n1llnFbNl+c/2sk43x2bKlCnF7JRTTilmG264YTH70pe+VMyOO+64Mc3F5KWb0Hu92CL+bTnnh3pw\nHaC3dBPqpJtQJ92EOukm9JCXgwEAAAC0wEQXgXJEXJFS+nlK6YBeDAT0hG5CnXQT6qSbUCfdhB6b\n6MvBtsk535NSWisiLk8p/TrnfNXSHzBSVoWFwdJNqJNuQp10E+qkm9BjE3omUM75npHfH4iICyLi\nzR0+5vSc8yw/xAsGRzehTroJddJNqJNuQu91vQiUUloppfTKP70dEbMj4pZeDQZ0RzehTroJddJN\nqJNuQn9M5OVga0fEBSmlP13nnJzzD3oyFaN6wxveUMwOPvjgjsf333//4jnTpk0rZiP/jaswc+bM\nYY+wLNDNHpg7d24x+9jHPlbMfvzjH/djnEnr0EMP7Xi8aRvipse/crrZZ6eeemoxK20DH1H+c7jO\nOusUz5k+fXoxmzNnTjFr2iq7af577rmnmDFhujlGO+64YzE76KCDilnT96BnnXXWhGZiUtNN6IOu\nF4Fyzr+PiM16OAvQA7oJddJNqJNuQp10E/rDFvEAAAAALWARCAAAAKAFLAIBAAAAtIBFIAAAAIAW\nsAgEAAAA0AIT2SKeIXrNa15TzD784Q8PcJLe+/Wvf13Mbr311gFOQpvdfffdwx5h0thhhx2K2WGH\nHdbx+Cte8YriOcvwFvEM0cknn1zM5s+f3/F40xbxb3jDG4pZ01bZpT/zERErr7xyMfvnf/7nYgaD\nssceexSzO++8s5idf/75/RinCmussUYxyzkXs4cffrgf49AHc+bMKWbXXXddx+Nnn312n6aBifNM\nIAAAAIAWsAgEAAAA0AIWgQAAAABawCIQAAAAQAtYBAIAAABoAYtAAAAAAC1gi/geadoesmnL9muu\nuaaY/eAHPyhmzzzzTDF7/PHHOx5ftGhR8ZyVVlqpmF122WXF7JZbbilmpS0TIyJ+8YtfFLM//vGP\nxazpc4BeatrimfHZfvvti1lpK/i5c+f2aRp4ufPOO2/c50ybNq2YPfbYY8Xsox/9aDFr+ntnwYIF\nxeyEE04oZjBe7373u4vZTjvtVMyOOuqoYrZw4cIJzTQIK664YjH72Mc+VswOOeSQru734x//uJjt\ntttuXV2T/vinf/qnYrbrrrt2PN70fczNN9884ZmYmDe96U3F7P3vf38x++xnP1vMHn300QnNNEie\nCQQAAADQAhaBAAAAAFrAIhAAAABAC1gEAgAAAGgBi0AAAAAALWARCAAAAKAFbBE/Dt1uo77ZZpsV\ns/e+971dzfLTn/60mG255ZYdj8+bN694zowZM4rZ/Pnzi9nixYuLGdRu4403LmbrrrvuACeZ3HbY\nYYdxn3P88cf3YRLonT/+8Y/F7Jhjjilmm2yySTH727/922I2e/bsYva5z32umD3zzDPFDDpp2ga+\naWvr0047rR/j9NQ222xTzC688MJituqqq/Z8lh133LGYNc159dVX93wWmj3++OPFbI011uh4/O/+\n7u+K59xxxx3F7Kmnnhr7YMTqq69ezPbee+9iduyxxxaz6dOnF7NXv/rVxWy//fYrZrXxTCAAAACA\nFrAIBAAAANACFoEAAAAAWsAiEAAAAEALWAQCAAAAaAGLQAAAAAAtMOoW8SmlMyPiPRHxQM5545Fj\nq0fEeRHxuoiYFxF75pwf7d+Yg/OKV7yimJ1zzjnFrGkb+H/9138tZldcccXYBhuHpq3gS+66666e\nz0F/ta2b/fCXf/mXxWyVVVbp6pqLFi3qdpxl2tSpU4vZlClTillpm+2rrrpqwjMNi27SpGnL2ief\nfLKYdfv31YMPPji2wVpAN8dmn332KWYXXXTRACfpzkorrVTMPv/5zxezpm3g//M//7OYffWrXy1m\np512WjGbOXNmMZs2bVoxm4xq72ZTJy6++OKOx4844ojiORtuuGExO+mkk4rZfffdV8zuvffeYlaL\nGTNmFLM3v/nNxezd7353Mdtuu+2K2frrrz+2wcbhr//6r3t+zWEYyzOBzo6Id73k2BERcWXOecOI\nuHLkfWCwzg7dhBqdHboJNTo7dBNqdHboJgzMqItAOeerIuKRlxzeOSK+MfL2NyJilx7PBYxCN6FO\nugl10k2ok27CYHX7M4HWzjkvGHn7vohYu0fzABOjm1An3YQ66SbUSTehT0b9mUCjyTnnlFIu5Sml\nAyLigIneBxgf3YQ66SbUSTehTroJvdXtM4HuTymtExEx8vsDpQ/MOZ+ec56Vc57V5b2AsdNNqJNu\nQp10E+qkm9An3S4CXRwRHxh5+wMRUf9WAdAOugl10k2ok25CnXQT+mQsW8R/OyK2j4g1UkrzI+LY\niDgpIr6TUvpQRNwZEXv2c8heW3nllYvZJz/5yWL2nve8p5g99NBDxewLX/hCMXvqqaeKGTSZjN3s\nh6a+H3744V1d84ILLihmp59+elfXXNbtvPPOxWyzzTYrZmeccUbH44899tiEZxoW3aTJXnvtNewR\nWks3/7+NN964mD3++OPF7KCDDurHOD11zjnnFLOtt966mH3nO98pZu973/uK2eLFi4vZE088Ucye\nfvrpYnb55ZcXs8mo9m7+8Ic/LGY/+MEPOh5/5zvfWTxnt912K2Y77rhjMXvuueeK2bPPPlvMmraP\nnzp1ajH77ne/W8xKVltttWK27777FrOm79drcuGFFw57hJ4YdREo57x3IXpHj2cBxkE3oU66CXXS\nTaiTbsJgdftyMAAAAACWIRaBAAAAAFrAIhAAAABAC1gEAgAAAGgBi0AAAAAALTDq7mCT0S677FLM\njjjiiGJ21113FbNtt922mDVttQn01xe/+MViNnPmzK6uefzxx3c7zqT1wQ9+cNgjwEBNmzatmB15\n5JHF7PDDD+/qfpdddlkxe/TRR7u6Ju318Y9/vJg99dRTxezJJ5/sxzjjtt122xWznXbaqZhdf/31\nxeyQQw4pZk3bwDe56aabitnGG2/c1TUZvOeff76YlbZ0P+GEE4rnHHjggcVs+vTpxezP/uzPilmT\npms2Oeqoo7o6rxsXXHBBMWv6/+w11lijq/u98MILxeyTn/xkMTvjjDO6ul9tPBMIAAAAoAUsAgEA\nAAC0gEUgAAAAgBawCAQAAADQAhaBAAAAAFrAIhAAAABAC7Ryi/i/+qu/6uq8X/ziF8Vs/vz53Y4D\nTFDTdrB77LFHV9ecN29eMfvNb37T1TWXda961auK2VprrTXASZjsTjvttGJ28MEHF7N77723mF14\n4YXF7LHHHut4/Omnny6e0/T3zqxZs4pZk9tuu62Y7b///sWsafti6GSzzTYrZldcccUAJ+nO0Ucf\nXcyatnP/zGc+U8wefvjhCc3USdPjfNFFF/X8ftTjmGOOKWbf//73i9lee+1VzPbdd99i9swzzxSz\nhx56qJhttNFGxaxpG/WSs846q5hdeeWVxewf/uEfitnKK6887jkimr82vu1tbytm1157bVf3W5Z4\nJhAAAABAC1gEAgAAAGgBi0AAAAAALWARCAAAAKAFLAIBAAAAtEArdwfbfffduzrvXe96VzE79thj\ni1nTT/+/8cYbu5oF2maVVVYpZk07MDSd12TXXXctZk07Bk1m66+/fjHbfPPNu7rm17/+9W7HYRKb\nNm1aMcs5F7N11lmnmB100EHFLKU07ns1eeCBB4rZv//7vxezpl1V7rnnnq5mgfGaOXPmsEcYVdPX\no6au/OhHP+r5LJtuumkx22STTYpZ005JTG4//elPu8oOPfTQru7XtDP2jBkzitkjjzwy7ns17S74\nkY98pJjNnj173Pcazac+9ali1oYdwJp4JhAAAABAC1gEAgAAAGgBi0AAAAAALWARCAAAAKAFLAIB\nAAAAtIBFIAAAAIAWSKNtf5pSOjMi3hMRD+ScNx45dlxE7B8RD4582JE55/8a9WYpdbfXao81fc6L\nFy/u+f2arvmVr3ylmDVtEdi0nd8dd9zR8fitt95aPKfJm970pmL2k5/8pJjNnz+/q/tNZjnnzvsQ\nd2EydrPJBhtsUMxuv/32rq55wQUXFLM999yzmL3wwgtd3W9Z17QN/Ny5c7u65oYbbtjx+O9+97uu\nrtct3azL1KlTi9nb3/72Yrb11lsXs7322quYrbXWWh2Pr7rqqsVzmjRtA//hD3+4q2u2lW72x003\n3VTMzj333GL2b//2b/0Yp+iNb3xjx+PXXHNN8Zx77723mDVt2d5k5ZVXLmZXXXVVMWvaPr7pe/mm\nz6EWukknKZX/WPzoRz8qZttss01X93v44YeLWdP/OyxcuLCr+y0LxtLNsTwT6OyIeFeH41/MOW8+\n8mvUQgI9d3boJtTo7NBNqNHZoZtQo7NDN2FgRl0EyjlfFRGPDGAWYBx0E+qkm1An3YQ66SYM1kR+\nJtAhKaWbU0pnppRW69lEwETpJtRJN6FOugl10k3og24XgeZExOsjYvOIWBARJ5c+MKV0QErphpTS\nDV3eCxg73YQ66SbUSTehTroJfdLVIlDO+f6c8ws558URcUZEvLnhY0/POc/KOc/qdkhgbHQT6qSb\nUCfdhDrpJvRPV4tAKaV1lnr3vRFxS2/GASZCN6FOugl10k2ok25C/4xli/hvR8T2EbFGRNwfEceO\nvL95ROSImBcRB+acF4x6s0q27Pv85z9fzA477LABTrLse/DBB4tZ0zaATVv1TmY93k5z0nXzne98\nZzE78cQTi9mWW25ZzO64445itt122xWzBQvKD1vT9pcrrbRSMevGc889V8ymTJnS1TUXLVpUzJq+\nJnS7RfwFF1xQzHbfffdxz9EPutluq6yySsfjn/rUp4rnHHroocWs6Wtj0zb28+fPL2ZtpZv90bRF\n/KOPPlrMtt9++z5MU7bTTjt1PP69732veM7hhx9ezE499dSu5vjEJz5RzJq+P2mac9999y1mTz/9\n9NgGGyLdpJONNtqomP3yl7/s6pqPPfZYMdt5552L2dVXX93V/ZZ1Y+nmCmO4yN4dDn+9q4mAntFN\nqJNuQp10E+qkmzBYE9kdDAAAAIBlhEUgAAAAgBawCAQAAADQAhaBAAAAAFrAIhAAAABAC4y6O9hk\ndMQRRxSz8847r5idc845xWyFFcoP5XrrrVfMlltu2V6HW3PNNYtZaevniIijjz66mH3mM5+Z0Ews\nu5q2eWzaBr7J1KlTi9mRRx7Z1TWb+n7ggQeO+3pNW843bb2+xRZbjPteERH77LNPMbv00kuL2ezZ\ns7u6X9PWnoPeCh46WbhwYcfjTV/3m7re9LWxtB091GLmzJnDHmEomr4HOeGEE7q65sknn1zMloVt\n4GG8jjrqqK7Oe/LJJ4vZscceW8zaug38RC3bKxAAAAAAjIlFIAAAAIAWsAgEAAAA0AIWgQAAAABa\nwCIQAAAAQAtYBAIAAABogVZuEf/CCy8UsxtuuKGYdbtl5jve8Y5iNmXKlGJ23HHHFbOtt966q1kG\nqWnb66222mqAk7Cs2G233Xp+zfXWW6+YHXzwwT2/Xzeatkl/5StfWczuvvvuYlba8joi4lvf+lYx\n+/nPf17Mmra9bjJnzpyuzmPZd/TRRxezq666qqusFsstV/53tKavf1CDr3zlK8Xs1FNPLWZNW6Uf\nc8wxE5qpV2bNmlXM3vjGNxazU045pZg98cQTxaxpa/m5c+cWM1iWrbbaah2P77HHHl1d76STTipm\nX/7yl7u6JmWeCQQAAADQAhaBAAAAAFrAIhAAAABAC1gEAgAAAGgBi0AAAAAALWARCAAAAKAFWrlF\n/KBdeeWVXZ23+eabF7OmLeKff/75jsfPOuus4jlnnHFGMTv00EOL2d///d8XMxiv448/vph96Utf\n6uqad911VzG7//77i9mTTz7Z1f3++7//u5jdcMMN477e9ddfX8xWXHHFYvbQQw8Vs7e+9a3F7JBD\nDilmW221VTG76aabitlvf/vbYsayb/fddy9mH//4x4tZ09ekfthggw2K2b/8y790PP62t72teM7U\nqVOLWc557IPBEMyZM6eYzZ49u5j94z/+YzFbe+21i9nhhx9ezJq2X58+fXoxK2n63nTvvfce9/Ui\nIo455phidvXVV3d1TViWlb6+L7/88l1db/HixRMZh3HyTCAAAACAFrAIBAAAANACFoEAAAAAWsAi\nEAAAAEALWAQCAAAAaAGLQAAAAAAtMOoW8Sml9SLiPyJi7YjIEXF6zvnUlNLqEXFeRLwuIuZFxJ45\n50f7N2r7XHbZZcXsxBNPLGYrrND5P+v+++9fPKdp69ztt9++mHVr/vz5Pb9m20zGbn71q18tZtdd\nd11X17zvvvuK2SOPPFLMnnrqqa7uN0iPPtrdf9bLL7+8mO20005dXfMnP/lJMXv88ce7uuayajJ2\nc7nlyv9m9L73va+YrbjiisXsueeeK2ZrrbVWMZs2bVox22+//brKZsyY0fF401bvTX9HfPnLXy5m\nt99+ezGjvyZjN/vh/PPPL2ZbbbVVMfvgBz9YzP78z/+8mD377LPFbIsttihmg/T73/9+2CNMarpZ\npy233LKYffSjH+3pvRYuXNjT69FsLM8Eej4iDs85bxQRb4mIg1NKG0XEERFxZc55w4i4cuR9YHB0\nE+qkm1An3YQ66SYM0KiLQDnnBTnnuSNvPxERv4qIdSNi54j4xsiHfSMidunXkMDL6SbUSTehTroJ\nddJNGKxRXw62tJTS6yJii4i4LiLWzjkvGInuiyVP3+t0zgERcUD3IwKj0U2ok25CnXQT6qSb0H9j\n/sHQKaWVI+L8iDg05/yiF+3lJS+a7/jC+Zzz6TnnWTnnWROaFOhIN6FOugl10k2ok27CYIxpESil\nNCWWFPJbOefvjRy+P6W0zki+TkQ80J8RgRLdhDrpJtRJN6FOugmDM+oiUEopRcTXI+JXOedTloou\njogPjLz9gYi4qPfjASW6CXXSTaiTbkKddBMGKzVtfxoRkVLaJiL+JyJ+GRGLRw4fGUtep/mdiJgR\n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\nhPzY2qCx6lAAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABJkAAAFACAYAAAAfw61rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XucXXV59/3PNafM7D2TQIgMNQETFYXIKTANraBMimCg\naoqlGjz0FuorhQqtpfaW27tVa58+D63ePmBBYx6MlL6KqRUi6d0AYh92A62HAGJIAmgMERKQkADJ\nzNqZzOm6/1hrJzubvWf2ZLLmt2byfb9e+7XX6bfWta8Muuea38HcHRERERERERERkfFoCB2AiIiI\niIiIiIhMfioyiYiIiIiIiIjIuKnIJCIiIiIiIiIi46Yik4iIiIiIiIiIjJuKTCIiIiIiIiIiMm4q\nMomIiIiIiIiIyLipyCQiIiIiIiIiIuOmIpOIiIiIiIiIiIybikwiIiIiIiIiIjJuTaEDOJJmzZrl\nc+fOTeXeURSRz+dTubfUpryHobyHobyHobyHcbh5f/TRR3e5++tSCEkOk75/TT3KezjKfRjKexjK\nexhpfwebUkWmuXPn8sgjj6Ry70KhQHd3dyr3ltqU9zCU9zCU9zCU9zAON+9m9ssjH83UY2aLgZuB\nRuA2d7+x4vyxwErgTUAfcJW7b0zObQN6gCFg0N27RnqWvn9NPcp7OMp9GMp7GMp7GGl/B5tSRSYR\nERGRo52ZNQK3AhcB24H1ZrbG3TeXXfYZ4HF3v8zMTkmuv7Ds/CJ33zVhQYuIiMiUoDmZRERERKaW\nhcAWd9/q7v3AKmBJxTXzgf8fwN2fAuaaWefEhikiIiJTjYpMIiIiIlPLbOC5sv3tybFyPwXeD2Bm\nC4E3AHOScw5838weNbNlKccqIiIiU4iGy4mIiIzDwMAA27dvp6+vL3Qok8qMGTN48skna55vbW1l\nzpw5NDc3T2BUR5UbgZvN7HHgCeAnxHMwAZzv7jvM7HjgATN7yt3XlTdOik/LADo7OykUCqkE2dvb\nm9q9pTblPRzlPgzlPQzlPYy0864ik4iIyDhs376djo4O5s6di5mFDmfS6OnpoaOjo+o5d2f37t1s\n376defPmTXBkU8IO4MSy/TnJsQPcfS9wJYDFP7jPAFuTczuS951mtpp4+N26ivYrgBUAXV1dntbE\nrZoUNgzlPRzlPgzlPQzlPYy0867hciIiIuPQ19fHcccdpwLTEWRmHHfcceoddvjWAyeb2TwzawGW\nAmvKLzCzY5JzAB8H1rn7XjPLm1lHck0euBjYOIGxi4iIyCSmnkwiIiLjpALTkaecHj53HzSza4H7\ngUZgpbtvMrOrk/PLgVOBfzAzBzYBf5A07wRWJ/lvAu509/sm+jOIiIjI5KQik4iIiMgU4+5rgbUV\nx5aXbf8AeEuVdluBM1MPUERERKYkDZcTERGZxHbv3s1ZZ53FWWedxQknnMDs2bMP7Pf399d1jyuv\nvJKnn3465UhFREREprbhYYgiePFFePZZ+NWv4JVXoFiEoaHR208F6sk0ip5dO/jOP/1P2tvngyYl\nExGRjDnuuON4/PHHAfj85z9Pe3s7n/rUpw65xt1xdxoaqv9t6Zvf/GbqcYqIZMHgYPwLYF9fvD00\nFL9XvkrHh4fB/dD3ymMDAwdf/f3Vt91h2jRobY1f1banTYOnn+4gl4vvPTR08Hml7dK7+2vjqnwf\nGjr4Kn2myhdAQ0P8Mjv0vXK7oQEaG2vvl+eyWl7L46gVT+m1f3/tV39//G4GLS1x3lpaqr+am+Pr\nSi+ovv3cc2/m7rtHzmdjI+Tz8SuXO7hdvt/aGhcT9u49+OrpOXR/7974Z6L8+SPFNpLSz0H5z0rl\nz8zwcHxtc/PBnJRelfvDw9X/zcpf5T9/5TEczv7evWcf+Hmv9TNvFud3pFdbW3xt6b+5yvfS9tDQ\n6LGVVP47VO7v3w+9vfH/npTeS6+RNDbGP7Plr+ZmaGo6+O9Q2i5/b2io/e9bvv/3fw8LF44cQ9pU\nZBrFKzuf5apX/4H/61fvBv576HBERETqsmXLFt73vvexYMECfvKTn/DAAw/wV3/1Vzz22GPs27eP\nD37wg3z2s58F4Pzzz+eWW27htNNOY9asWVx99dXce++95HI57rnnHo4//vjAn0ZEjiT3+Beuvr74\ntX//odsbNsxgaCi+pvQLfWm7/DUwMHKhoPyX1IGBg+/l2+XvoxV84GBBofKXtPJf1orF+Je+0qun\n5+B29tcTOCd0ABOuVKwqf5X/m1b+e3d0wHHHxW1LP4u9vdV/TksFvsqiQvl2XKQ5gZaW1xbayt8H\nB+OfrSg6WLipVy4H06fHsXd0xJ+jVvGlcrue/FUr+jU3H9wvFUP7+g4WuaoVQxsb44JGU9Oh2+XH\nSvmoVngpvcqvqTx/6P4As2YdGnfl9vAw7NsX575YjHsGlbbLX42NhxbOygtope3GxpFjL+3XUyAr\n/SyecAK0t8dFxsr3adMO/m/oSK9a/5s4MBB/toGBg4XOyn/vUgGqfD+0DISQbfnpswDoGxylJCki\nIvLJT0LSq+iIOessuOmmw2r61FNPcccdd9DV1QXAjTfeyMyZMxkcHGTRokVcfvnlzJ8//5A2e/bs\n4YILLuDGG2/k+uuvZ+XKldxwww3j/hgiR7P9+6v3ZujpiX/pG+kXjNIvgfv2HfoqFl97rNTLYKS/\ndg8MxPGMbMFhfc7KQkHpl9Jqf5mvPNbUFP9CVu2X2tK2+6E9WUqvUoGh9MtaLhf/klf+C2Dp1dFx\nsMdJ5bMqn1f+C12tXj5m1XuFVG6Xfg4qC3qV2xs3PsFZZ51e8xfuWj2Nqr1X/jtUe0HtHlrlPzfV\nestU7pc/r1ZeK2MqxRpaofBw3Uu6l4q05T1XSsWnvr7452v69EOLSln4xT+LCoUn6s67TB76cR9F\nbkZSZBrK/J89REREDvGmN73pQIEJ4Fvf+hbf+MY3GBwc5Pnnn2fz5s2vKTK1tbVxySWXAHDOOefw\n0EMPTWjMIlnS3w87d8Zza/zqVwdfr746etGnWDxYWKpzerSqSoWY0pCQ0qu0P336wWOlv2iPNKSp\nqWnkIVutrfDUUz9l4cIzqw4/KvUsKRVQSkWDGqNxpUwuN/o106fv1gwdGWd2sFfVzJmhoxHJntSK\nTGZ2InAH8VK4Dqxw95srrvkw8GnAgB7gGnf/aXJuW3JsCBh09y4CaM3PwBz2q8gkIiKjOcweR2nJ\n5/MHtn/+859z88038+Mf/5hjjjmGj3zkI/RVGTfSUvqTO9DY2MhgaYyKTCpmthi4GWgEbnP3GyvO\nHwusBN4E9AFXufvGetpOJX198POfw1NPxa+f/QxeeOFgMWn37urtWltfW+wpvWbNOni81Juh1KOh\nfL90rLW1dk+f0tCOiZbPv8I73jHxzxURkckvzZ5Mg8CfuftjZtYBPGpmD7j75rJrngEucPdXzOwS\nYAVwbtn5Re6+K8UYR2UNDeQHYN/wqP2KRUREMmvv3r10dHQwffp0XnjhBe6//34WL14cOixJgZk1\nArcCFwHbgfVmtqbiO9hngMfd/TIzOyW5/sI62046+/bBj38cF5KefvpgUWnbtkPnPTnxxPj1lrfA\nO98ZD7Xq7IzfS6/OzrgwJCIiIq+VWpHJ3V8AXki2e8zsSWA2sLnsmv8qa/JDYE5a8YxHbrBBRSYR\nEZnUzj77bObPn88pp5zCG97wBs4777zQIUl6FgJb3H0rgJmtApZQ9h0MmA/cCODuT5nZXDPrBN5Y\nR9tJY/t2uPVWWLECXn45PtbWBm99K5x7Lvy3/wannBLvv+Ut9Q1nEhERkdomZE4mM5tLPIPgj0a4\n7A+Ae8v2Hfi+mQ0BX3f3FakFOIr8UAP7GcdgehERkQnw+c9//sD2m9/8Zh4vm4TczPjHf/zHqu0e\nfvjhA9uvvvrqge2lS5eydOnSIx+opG028FzZ/nYO7SkO8FPg/cBDZrYQeAPxH/vqaZtp7vCDH8DN\nN8Ndd8X7S5bAVVfB6afHPZU0f5CIiEg6Ui8ymVk7cBfwSXffW+OaRcRFpvPLDp/v7jvM7HjgATN7\nyt3XVWm7DFgG0NnZSaFQONIfgbZBIxren8q9ZWS9vb3KewDKexjKexjjzfuMGTPo6ek5cgEdJYaG\nhkbNW19fn/6bSM+NwM1m9jjwBPAT4nkw6zIR379gbP99DgwYhcLx3HXXbJ5+ejr5/CC/+7svcNll\nOzjhhHj+sWeeiV8yMv3/UTjKfRjKexjKexhp5z3VIpOZNRMXmP7J3e+ucc0ZwG3AJe5+YHpFd9+R\nvO80s9XEXb9fU2RKejitAOjq6vI0lkBsv6eFvoYhLa8YQKFQUN4DUN7DUN7DGG/en3zySTo6Oo5c\nQEeJnp6eUfPW2trKggWHt5T6UW4HcGLZ/pzk2AHJH/6uBDAzI54ncyvQNlrbpH3q37+gvv8+d+6E\n5cvha1+LJ+s+5RT46lfhox9tor39RA79OFIP/f9ROMp9GMp7GMp7GGnnPc3V5Qz4BvCku3+5xjUn\nAXcDH3X3n5UdzwMNyVxOeeBi4AtpxTqaPM30mYbLiYiIyKSwHjjZzOYRF4iWAh8qv8DMjgGK7t4P\nfBxY5+57zWzUtllz1lnxinCXXAJ/8idw0UUaDiciIhJKmj2ZzgM+CjyRdMWGeCWTkwDcfTnwWeA4\n4KtxTYpBd+8COoHVybEm4E53vy/FWEeUo4WXG/eFeryIiIhI3dx90MyuBe4HGoGV7r7JzK5Ozi8H\nTgX+wcwc2EQ8bUHNtiE+Rz0GBuIC01/+JXwh2J8jRUREpCTN1eUeBmyUaz5O/NezyuNbgTNTCm3M\n8g3T2Ff/NAUiIiIiQbn7WmBtxbHlZds/AN5Sb9usKhbj92OPDRuHiIiIxCZkdbnJLt/QSmTDocMQ\nERERkTJRFL/n82HjEBERkZhGrNch19RKsUlFJhERyaZFixZx//33H3Lspptu4pprrqnZpr29HYDn\nn3+eyy+/vOo13d3dPPLIIyM++6abbqJY6k4CXHrppbz66qv1hi4yLqUiUy4XNg4RERGJqchUh3xT\njmJz6ChERESqu+KKK1i1atUhx1atWsUVV1wxatvXv/71fOc73znsZ1cWmdauXcsxxxxz2PcTGQv1\nZBIREckWFZnqkG/Os78Jhvb3hQ5FRETkNS6//HL+7d/+jf7+eCXUbdu28fzzz7NgwQIuvPBCzj77\nbE4//XTuueee17Tdtm0bp512GgD79u1j6dKlnHrqqVx22WXs23dw0YtrrrmGrq4u3va2t/G5z30O\ngK985Ss8//zzLFq0iEWLFgEwd+5cdu3aBcCXv/xlTjvtNE477TRuuummA8879dRTue6663jb297G\nxRdffMhzRMZCRSYREZFs0ZxMdci15GA/RK/uZHrnSaHDERGRjPrkfZ/k8V89PvqFY3DWCWdx0+Kb\nRrxm5syZLFy4kHvvvZclS5awatUqPvCBD9DW1sbq1auZPn06u3bt4jd+4zd43/veR7J662t87Wtf\nI5fL8eSTT7JhwwbOPvvsA+f+5m/+hpkzZzI0NMSFF17Ihg0b+OM//mO+/OUv8+CDDzJr1qxD7vXo\no4/yzW9+kx/96Ee4O+eeey4XXHABxx57LD//+c+57bbbuP322/nABz7AXXfdxUc+8pHxJ0uOOqVO\ndCoyiYiIZIN6MtUhP60DgOLe3YEjERERqa58yFxpqJy785nPfIYzzjiDd73rXezYsYMXX3yx5j3W\nrVt3oNhzxhlncMYZZxw49+1vf5uzzz6bBQsWsGnTJjZv3jxiPA8//DCXXXYZ+Xye9vZ23v/+9/PQ\nQw8BMG/evAP3Puecc9i2bdt4PrpUYWaLzexpM9tiZjdUOT/DzP7VzH5qZpvM7Mqyc9vM7Akze9zM\nRp6UKzD1ZBIREckW9WSqQ751OuyFqOfl0KGIiEiGjdbjKE1LlizhT//0T3nssccoFoucc8453H77\n7bz00ks8+uijNDc3M3fuXPr6xj70+5lnnuFLX/oS69ev59hjj+VjH/vYYd2nZNq0aQe2GxsbNVzu\nCDOzRuBW4CJgO7DezNa4e3ll8BPAZnd/r5m9DnjazP7J3fuT84vcfdfERj52KjKJiIhki3oy1SHX\nmvRk6lWRSUREsqm9vZ1FixZx1VVXHZjwe8+ePRx//PE0Nzfz4IMP8stf/nLEe7zzne/kzjvvBGDj\nxo1s2LABgL1795LP55kxYwYvvvgi995774E2HR0d9PT0vOZe73jHO/jud79LsVgkiiJWr17NO97x\njiP1cWVkC4Et7r41KRqtApZUXONAh8VjJ9uBl4HBiQ1z/LS6nIiISLaoJ1Md8m0zAIhUZBIRkQy7\n4ooruOyyyw4Mm/vwhz/Me9/7Xk4//XS6uro45ZRTRmx/zTXXcOWVV3Lqqady6qmncs455wBw5pln\nsmDBAk455RROPPFEzjvvvANtli1bxuLFi3n961/Pgw8+eOD42Wefzcc+9jEWLlwIwMc//nEWLFig\noXETYzbwXNn+duDcimtuAdYAzwMdwAfdfTg558D3zWwI+Lq7r0g53sOmnkwiIiLZoiJTHXL5pMgU\nvRo4EhERkdp+53d+B3c/sD9r1ix+8IMfVL22t7cXiFeD27hxIwBtbW0HClSVbr/99qrHr7vuOq67\n7roD++VFpOuvv57rr7/+kOtLzyv1fvrUpz418oeStLwbeBz4LeBNwANm9pC77wXOd/cdZnZ8cvwp\nd19X3tjMlgHLADo7OykUCqkE2dvbO+K9N258AzCPRx75D5qavOZ1Mjaj5V3So9yHobyHobyHkXbe\nVWSqQ759JgDF4t7AkYiIiIiMagdwYtn+nORYuSuBGz2uSm4xs2eAU4Afu/sOAHffaWariYffHVJk\nSno3rQDo6ury7u7uND4HhUKBke79ve9BczO8610XpPL8o9VoeZf0KPdhKO9hKO9hpJ13zclUh1KR\nKdq3J3AkIiIiIqNaD5xsZvPMrAVYSjw0rtyzwIUAZtYJvBXYamZ5M+tIjueBi4GNExb5GEWRhsqJ\niIhkiXoy1SHXfiwAUZ96MomIyGu5O/H8yXKklA/7k7Fx90Ezuxa4H2gEVrr7JjO7Ojm/HPhr4HYz\newIw4NPuvsvM3gisTn6em4A73f2+IB+kDlGkSb9FRESyREWmOuRnzAKguL83cCQiIpI1ra2t7N69\nm+OOO06FpiPE3dm9ezetra2hQ5m03H0tsLbi2PKy7eeJeylVttsKnJl6gEeIejKJiIhki4pMdcjP\neB0AUb+KTCIicqg5c+awfft2XnrppdChTCp9fX0jFpFaW1uZM2fOBEYkk5GKTCIiItmiIlMdWnPT\nMYeoPwodioiIZExzczPz5s0LHcakUygUWLBgQegwZJJTkUlERCRbNPF3HcyM3AAUB/aFDkVERERE\nEsWiikwiIiJZoiJTnXKDRjSkIpOIiIhIVqgnk4iISLZouFydckMNFIf7QochIiIiIgmtLiciIpIt\n6slUp9xQA9Hw/tBhiIiIiIzKzBab2dNmtsXMbqhyfoaZ/auZ/dTMNpnZlfW2zRL1ZBIREckWFZnq\n1DbcROQqMomIiEi2mVkjcCtwCTAfuMLM5ldc9glgs7ufCXQD/8vMWupsmxkqMomIiGSLikx1yg03\nUmQgdBgiIiIio1kIbHH3re7eD6wCllRc40CHmRnQDrwMDNbZNhPcVWQSERHJmtSKTGZ2opk9aGab\nk27Yf1LlGjOzryTdsTeY2dll5zLVVbvNm4lsMHQYIiIiIqOZDTxXtr89OVbuFuBU4HngCeBP3H24\nzraZsH9/XGhSkUlERCQ70pz4exD4M3d/zMw6gEfN7AF331x2zSXAycnrXOBrwLllXbUvIv5ys97M\n1lS0nVCtNBM19IZ6vIiIiMiR9G7gceC3gDcBD5jZQ/U2NrNlwDKAzs5OCoVCGjHS29tb89579jQB\n5/P88z+nUNiRyvOPViPlXdKl3IehvIehvIeRdt5TKzK5+wvAC8l2j5k9SfyXsPJC0RLgDnd34Idm\ndoyZ/Rowl6SrNoCZlbpqBysytdFCsWEo1ONFRERE6rUDOLFsf05yrNyVwI3Jd7AtZvYMcEqdbXH3\nFcAKgK6uLu/u7j5iwZcrFArUuvezz8bvZ555Mt3dJ6fy/KPVSHmXdCn3YSjvYSjvYaSd9zR7Mh1g\nZnOBBcCPKk7V6pJd7fi5Ne49IX9Ja6GJqGlYldYJpup2GMp7GMp7GMp7GMp7qtYDJ5vZPOIC0VLg\nQxXXPAtcCDxkZp3AW4GtwKt1tM2EKIrfNVxOREQkO1IvMplZO3AX8El333uk7z9Rf0lbtbqNYhN0\nX3ABmKXyDHktVbfDUN7DUN7DUN7DUN7T4+6DZnYtcD/QCKx0901mdnVyfjnw18DtZvYEYMCn3X0X\nQLW2IT7HaFRkEhERyZ5Ui0xm1kxcYPond7+7yiW1umQ31zgeTGtjK33NMNS3j8a2XMhQREREREbk\n7muBtRXHlpdtPw9cXG/bLCoW43cVmURERLIjzdXlDPgG8KS7f7nGZWuA309WmfsNYE8yl9OBbt5m\n1kLcVXtNWrHWY1pjKwDFPS+FDENEREREUE8mERGRLEqzJ9N5wEeBJ8zs8eTYZ4CT4MBf09YClwJb\ngCLxJJQ1u3mnGOuoWpvi3kvFvbvpOOENIUMREREROeqVikw5dTAXERHJjDRXl3uYeIz/SNc48Ika\n5zLVVXtaUmSKel4OHImIiIiIqCeTiIhI9qQ2XG6qmdZSKjLtDhyJiIiIiKjIJCIikj0qMtVpWnP8\nDabY+2rgSERERERERSYREZHsUZGpTi3T2gGIolcCRyIiIiIipdXlNCeTiIhIdqjIVKdppSJTcU/g\nSERERERGZmaLzexpM9tiZjdUOf/nZvZ48tpoZkNmNjM5t83MnkjOPTLx0dcniqCtDRr0bVZERCQz\n0lxdbkqZ1jYDgGLf3sCRiIiIiNRmZo3ArcBFwHZgvZmtcffNpWvc/YvAF5Pr3wv8qbuXr26yyN13\nTWDYYxZF6sUkIiKSNfrbT52aSz2Z+noCRyIiIiIyooXAFnff6u79wCpgyQjXXwF8a0IiO4KiSPMx\niYiIZI16MtWp5UBPJhWZREREJNNmA8+V7W8Hzq12oZnlgMXAtWWHHfi+mQ0BX3f3FVXaLQOWAXR2\ndlIoFI5M5BV6e3tr3nvbtvmY5SkU1qfy7KPZSHmXdCn3YSjvYSjvYaSddxWZ6tSSPwaAqL83cCQi\nIiIiR8x7gf+sGCp3vrvvMLPjgQfM7Cl3X1feKCk8rQDo6ury7u7uVIIrFArUuncuB697HTXPy+Eb\nKe+SLuU+DOU9DOU9jLTzruFydWpubgMgGigGjkRERERkRDuAE8v25yTHqllKxVA5d9+RvO8EVhMP\nv8ucYlHD5URERLJGRaY6NVgDuQEoqsgkIiIi2bYeONnM5plZC3EhaU3lRWY2A7gAuKfsWN7MOkrb\nwMXAxgmJeow08beIiEj2aLjcGOQHG4iG9oUOQ0RERKQmdx80s2uB+4FGYKW7bzKzq5Pzy5NLLwO+\n5+5RWfNOYLWZQfw98U53v2/ioq9fFMHcuaGjEBERkXIqMo1BbqiBaKgvdBgiIiIiI3L3tcDaimPL\nK/ZvB26vOLYVODPl8I4IrS4nIiKSPRouNwb54SaKw/tDhyEiIiJy1FORSUREJHtUZBqDnDcR0R86\nDBEREZGjnopMIiIi2aMi0xjkaaboA6HDEBERETmqDQ9DX5+KTCIiIlmjItMY5K2FyFRkEhEREQmp\nmCz2q9XlREREskVFpjHINUwjahgKHYaIiIjIUS1K1sNTTyYREZFsUZFpDPINrRQbVWQSERGRbDOz\nxWb2tJltMbMbqpz/czN7PHltNLMhM5tZT9ssUJFJREQkm1RkGoN8YxtR43DoMERERERqMrNG4Fbg\nEmA+cIWZzS+/xt2/6O5nuftZwP8A/sPdX66nbRaoyCQiIpJNKjKNQa65jagZcA8dioiIiEgtC4Et\n7r7V3fuBVcCSEa6/AvjWYbYNQkUmERGRbGoKHcBkkm/O09cAw/uKNOT0rUZEREQyaTbwXNn+duDc\naheaWQ5YDFw7lrZmtgxYBtDZ2UmhUBh30NX09vZWvfdjjx0DnMXPfvYT2tr2pPLso1mtvEv6lPsw\nlPcwlPcw0s57akUmM1sJvAfY6e6nVTn/58CHy+I4FXhd0lV7G9ADDAGD7t6VVpxjkWvJwz4ovvoS\n7SoyiYiIyOT3XuA/3f3lsTRy9xXACoCuri7v7u5OITQoFApUu3dPT/x+3nkL6MrEt8SppVbeJX3K\nfRjKexjKexhp5z3N4XK3E/9lrKpacwGUXbIoOZ+Zrw75ae0ARHt3BY5EREREpKYdwIll+3OSY9Us\n5eBQubG2DUbD5URERLIptSKTu68D6v2rWPlcAJmVb50OQLFnTH/sExEREZlI64GTzWyembUQF5LW\nVF5kZjOAC4B7xto2NBWZREREsin4nExV5gIAcOD7ZjYEfD3pkl2r/YTNCbDrpVcB+PGPHuaXUUsq\nz5FDaZxuGMp7GMp7GMp7GMp7etx90MyuBe4HGoGV7r7JzK5Ozi9PLr0M+J67R6O1ndhPMDoVmURE\nRLIpeJGJ6nMBnO/uO8zseOABM3sq6Rn1GhM5J8Cpbz0NNsO8N7yehRo7OiE0TjcM5T0M5T0M5T0M\n5T1d7r4WWFtxbHnF/u3E0xuM2jZrisX4XUUmERGRbElzTqZ6Vc4FgLvvSN53AquJl9MNLp8/FoAo\neiVwJCIiIiJHrygCM5g2LXQkIiIiUi5okanaXABmljezjtI2cDGwMUyEh8rljwEgKmqpXBEREZFQ\noijuxWQWOhIREREpl9pwOTP7FtANzDKz7cDngGYYeS4AoBNYbfG3hibgTne/L604xyLfMROAYl9P\n4EhEREREjl6lIpOIiIhkS2pFJne/oo5rbqdiLgB33wqcmU5U45Nrj4tMUd/ewJGIiIiIHL1UZBIR\nEcmmLMzJNGnkZ8wCIFJPJhEREZFgVGQSERHJJhWZxiA/PS4yFfujUa4UERERCcfMFpvZ02a2xcxu\nqHFNt5mxawbwAAAgAElEQVQ9bmabzOw/yo5vM7MnknOPTFzU9SsWVWQSERHJotSGy01Fba3tAEQD\nKjKJiIhINplZI3ArcBGwHVhvZmvcfXPZNccAXwUWu/uzZnZ8xW0WufuuCQt6jKIIcrnQUYiIiEgl\n9WQagwZroG0AigP7QociIiIiUstCYIu7b3X3fmAVsKTimg8Bd7v7swDuvnOCYxwXDZcTERHJJvVk\nGqP8YAPRkIpMIiIiklmzgefK9rcD51Zc8xag2cwKQAdws7vfkZxz4PtmNgR83d1XVD7AzJYBywA6\nOzspFApH9AOU9Pb2Vr33rl0LmTmzh0LhyVSee7SrlXdJn3IfhvIehvIeRtp5V5FpjHLDDURDfaHD\nEBERERmPJuAc4EKgDfiBmf3Q3X8GnO/uO5IhdA+Y2VPuvq68cVJ4WgHQ1dXl3d3dqQRZKBSodu/h\nYZg3L0d3d2cqzz3a1cq7pE+5D0N5D0N5DyPtvGu43Bjlh5so+v7QYYiIiIjUsgM4sWx/TnKs3Hbg\nfnePkrmX1gFnArj7juR9J7CaePhdpmi4nIiISDapyDRGeW8i8v7QYYiIiIjUsh442czmmVkLsBRY\nU3HNPcD5ZtZkZjni4XRPmlnezDoAzCwPXAxsnMDY66LV5URERLJJw+XGKEczESoyiYiISDa5+6CZ\nXQvcDzQCK919k5ldnZxf7u5Pmtl9wAZgGLjN3Tea2RuB1WYG8ffEO939vjCfpLqBgfil1eVERESy\nR0WmMcpbCy+ZJv4WERGR7HL3tcDaimPLK/a/CHyx4thWkmFzWRVF8bt6MomIiGSPhsuNUc6mETUM\nhQ5DRERE5KikIpOIiEh2qcg0RvnGVhWZRERERAJRkUlERCS7NFxujPKNbRR9OHQYIiIiIkclFZlE\nRESySz2ZxijX3EbUDAyr0CQiIiIy0YrF+F0Tf4uIiGSPikxjlG/Os68ZhotR6FBEREREjjrqySQi\nIpJdKjKNUb6lHYB9e3YFjkRERESkOjNbbGZPm9kWM7uhxjXdZva4mW0ys/8YS9uQVGQSERHJLhWZ\nxig3LS4yRSoyiYiISAaZWSNwK3AJMB+4wszmV1xzDPBV4H3u/jbg9+ptG5qKTCIiItmlItMY5Vs7\nACj2vBw4EhEREZGqFgJb3H2ru/cDq4AlFdd8CLjb3Z8FcPedY2gblIpMIiIi2aXV5cYo1zYdgKj3\nlcCRiIiIiFQ1G3iubH87cG7FNW8Bms2sAHQAN7v7HXW2xcyWAcsAOjs7KRQKRyr2Q/T29r7m3hs2\nzAHezGOPPcTPfjaUynOPdtXyLhNDuQ9DeQ9DeQ8j7byryDRG+dwxAES96skkIiIik1YTcA5wIdAG\n/MDMflhvY3dfAawA6Orq8u7u7jRipFAoUHnvhx+O39/97nfQ3JzKY4961fIuE0O5D0N5D0N5DyPt\nvKvINEb53AwAisU9gSMRERERqWoHcGLZ/pzkWLntwG53j4DIzNYBZybHR2sbVBRBczMqMImIiGRQ\nanMymdlKM9tpZhtrnO82sz3JqiaPm9lny85ldlWTXP5YAKLiq4EjEREREalqPXCymc0zsxZgKbCm\n4pp7gPPNrMnMcsRD4p6ss21QUaT5mERERLIqzZ5MtwO3AHeMcM1D7v6e8gNlq5pcRPzXtPVmtsbd\nN6cV6FjkO2YCUOzrCRyJiIiIyGu5+6CZXQvcDzQCK919k5ldnZxf7u5Pmtl9wAZgGLjN3TcCVGsb\n5IPUoCKTiIhIdqVWZHL3dWY29zCaHljVBMDMSquaZKPINP04AKJ9ewNHIiIiIlKdu68F1lYcW16x\n/0Xgi/W0zRIVmURERLIrteFydXq7mW0ws3vN7G3JsWqrmsye+NCqyyU9maL9vYEjERERETn6FIsq\nMomIiGRVyIm/HwNOcvdeM7sU+C5w8lhvMtFL6O4biADY/uJzWm5xAmhZyzCU9zCU9zCU9zCUdzlc\nUQS5XOgoREREpJoRi0zJ/Eh/4+5HfPJtd99btr3WzL5qZrOob0WU8vtM6BK6Q8ND8F8wrX2alluc\nAFrWMgzlPQzlPQzlPQzlXQ5XFMGMGaGjEBERkWpGHC7n7kPAojQebGYnmJkl2wuTWHaT8VVNGhsa\naR2EaLAYOhQRERGRo47mZBIREcmueobLPWpmdwP/AkSlg+4+YuHHzL4FdAOzzGw78DmgOWm7HLgc\nuMbMBoF9wFJ3d6Dqiihj/WBpyg82UBzcFzoMERERkaOOikwiIiLZVU+RqYO4uHRp2TFnlN5F7n7F\nKOdvAW6pcS7Tq5rkhhqIhvpChyEiIiJSlZktBm4m/oPdbe5+Y8X5buAe4Jnk0N3u/oXk3DagBxgC\nBt29a4LCrouKTCIiItk1apHJ3T86EYFMJnlvIvL9ocMQEREReY1kTs1bgYuIV+ldb2Zr3H1zxaUP\nuft7atxmkbvvSjPOw1UsauJvERGRrBpxTiYAM3u9mf2Lmb2QvP7ZzF4/EcFlVd6bKHp/6DBERERk\nCjOz68zs2MNouhDY4u5b3b0fWAUsObLRheGunkwiIiJZVs9wuW8C3wE+kux/NDn27rSCyrqcNxMx\nEDoMERERmdo6iXshPQasBO5P5q8czWzgubL97cC5Va57u5ltIF7F91Nlc2A68H0zGwK+nqzkewgz\nWwYsA+js7KRQKNT5kcamt7f3kHvv39+A+zt58cWtFArPpvJMeW3eZeIo92Eo72Eo72Gknfd6ikyd\n7v7/le3flkzMfdTK2zR2myb+FhERkfS4+1+Y2V8CFwNXAreY2beBb7j7L8Z5+8eAk9y918wuBb4L\nnJycO9/dd5jZ8cADZvaUu6+riG0FsAKgq6vLu7u7xxlOdYVCgfJ770oG8J1++hvp7n5jKs+U1+Zd\nJo5yH4byHobyHkbaeR91uBzwspkttYM+CLycWkSTQK5hGlHDYOgwREREZIpLei79KnkNAscC3zGz\nvxuh2Q7gxLL9Ocmx8vvudffeZHst0Gxms5L9Hcn7TmA18fC7TIiSdY41XE5ERCSb6ikyXQX8PrAL\neIl4uNxVaQaVdfnGVqLG4dBhiIiIyBRmZn9iZo8Cfwf8J3C6u18DnAP87ghN1wMnm9k8M2sBllKx\nKrCZnWBmlmwvJP5OuNvM8mbWkRzPE/ei2niEP9phU5FJREQk20YcLpesTvI+d790guKZFPKNrRRV\nZBIREZF0zQTe7+6/LD/o7sNmVmtVONx9MJna4H6gEVjp7pvM7Ork/HLgcuAaMxsE9gFL3d3NrBNY\nndSfmoA73f2+ND7c4SgW43etLiciIpJNIxaZ3H3IzD4CfGWC4pkUcs05IgeGhqCxMXQ4IiIiMjXd\nS9kUBWY2HTjV3X/k7k+O1DAZAre24tjysu1bgFuqtNsKnDnOuFOjnkwiIiLZVs9wuYfN7CYz+00z\nO6P0Sj2yDMs35ym2wHDUGzoUERERmbq+BpR/2ehNjh21VGQSERHJtnpWl/v15P2csmMOvPPIhzM5\n5FvaYQD69uwmN31G6HBERERkarJk4m/gwDC5er67TVkqMomIiGRbPXMy3eTud01QPJNCbloeIoj2\n7iKHls8VERGRVGw1sz/mYO+lPwK2BownOBWZREREsm3E4XLuPgR8ZoJimTTyrdMBKPa8PMqVIiIi\nIoftauDtwA5gO3AusCxoRIFp4m8REZFsq6fL9ffM7JPAPwNR6aC7700tqozLt8VFpkhFJhEREUmJ\nu+8EloaOI0vUk0lERCTb6ikyfSR5/zPiuZgseT8praCyLpeL52GKolcCRyIiIiJTlZm1An8AvA1o\nLR1396vqaLsYuBloBG5z9xsrzncD9wDPJIfudvcv1NM2pFKRST2ZREREsmnUIpO7nzgRgUwm+dwx\nABSjPYEjERERkSnsH4GngHcDXwA+DDw5WqNkTs1bgYuIh9mtN7M17r654tKH3P09h9k2iCiCtjZo\nqGd9ZBEREZlwNf8v2sz+rGz7/RXn/jrNoLIu134sAFHx1cCRiIiIyBT2Znf/SyBy938Afpt4XqbR\nLAS2uPtWd+8HVgFL6nzmeNqmLoo0VE5ERCTLRurJ9GHgfyXbfwHcXXbut4G/TCuorMu3zwQg6jtq\np6USERGR9A0k76+a2WnAr4Dj62g3G3iubL80aXilt5vZBuKJxT/l7pvqbWtmy0gmIe/s7KRQKNQR\n1tj19vYecu9f/OIUGhuPoVD4YSrPk1hl3mXiKPdhKO9hKO9hpJ33kYpMVmO72v5RJT/9OACKfb2B\nIxEREZEpbIWZHUv8x741QDtH7o98jwEnuXuvmV0KfBc4ud7G7r4CWAHQ1dXl3d3dRyisQxUKBcrv\nfeutMHMmpPU8iVXmXSaOch+G8h6G8h5G2nkfqcjkNbar7R9Vch1JT6b9PYEjERERkanIzBqAve7+\nCrAOeOMYmu8AyufUnJMcO6B8lWB3X2tmXzWzWfW0DUnD5URERLJtpGkTzzSzl83sFeCMZLu0f/oE\nxZdJ+Y64J1PUr55MIiIicuS5+zDw3w+z+XrgZDObZ2YtwFLinlAHmNkJZmbJ9kLi74S762kbkopM\nIiIi2TZST6aWCYtiksm1xN9uiv3FwJGIiIjIFPZ9M/sU8M9AVDro7i+P1MjdB83sWuB+oBFY6e6b\nzOzq5Pxy4HLgGjMbBPYBS93dgaptU/hshyWKoLMzdBQiIiJSS80ik7sPTWQgk0ljQyPTBiEaUpFJ\nREREUvPB5P0TZcecOobOuftaYG3FseVl27cAt9TbNivUk0lERCTbRurJNC5mthJ4D7DT3U+rcv7D\nwKeJJxHvAa5x958m57Ylx4aAQXfvSivOw5UfbKA42Bc6DBEREZmi3H1e6BiyRkUmERGRbEutyATc\nTvwXsjtqnH8GuMDdXzGzS4hXKClfIneRu+9KMb5xyQ03EA2pyCQiIiLpMLPfr3bc3Wt9t5ryikXI\n5UJHISIiIrWkVmRy93VmNneE8/9VtvtD4tVLJo38cBOR7w8dhoiIiExdv1623QpcCDxG7T/gTXnq\nySQiIpJtNYtMySpyXu0U4O4+8wjG8QfAvWX7TjzZ5RDwdXdfMUKcy4BlAJ2dnRQKhSMY1kG9vb2H\n3Lt10Ng7UEzteRKrzLtMDOU9DOU9DOU9DOV9dO5+Xfm+mR0DrAoUTnBDQ9DXpyKTiIhIlo3Uk2nW\nRARgZouIi0znlx0+3913mNnxwANm9pS7r6vWPilArQDo6ury7u7uVOIsFAqU37vjf7exv6mftJ4n\nscq8y8RQ3sNQ3sNQ3sNQ3g9LBBy18zQVk/VWVGQSERHJrrpXlzOzmcRdtUueH+/DzewM4DbgEnff\nXfbsHcn7TjNbDSwEqhaZQslbCy9bNPqFIiIiIofBzP6Vg73KG4D5wLfrbLsYuBloBG5z9xtrXPfr\nwA+Ape7+neTYNjK4AEuUfO1SkUlERCS7Rp2Tycx+G/h/iedM2g3MBn4GnDKeB5vZScDdwEfd/Wdl\nx/NAg7v3JNsXA18Yz7PSkG+YxvaGodEvFBERETk8XyrbHgR+6e7bR2tkZo3ArcBFwHZgvZmtcffN\nVa77W+B7VW6TuQVYSkUmTfwtIiKSXfVM/P03wHnA99x9gZldBHxgtEZm9i2gG5hlZtuBzwHNAO6+\nHPgscBzwVTODg38p6wRWJ8eagDvd/b4xfq7U5RpbiRqHQ4chIiIiU9ezwAvu3gdgZm1mNtfdt43S\nbiGwxd23Ju1WAUuAzRXXXQfcxaETjGeWhsuJiIhkXz1FpkF3f8nMGszM3P0BM/vSaI3c/YpRzn8c\n+HiV41uBM+uIK6h8YxtFFZlEREQkPf8CvL1sfyg5NlpRaDbwXNn+duDc8gvMbDZwGbCoyv1GXYAl\nxMIrmzdPB87mF7/YQKHwcirPk5gm5g9HuQ9DeQ9DeQ8j7bzXU2TaY2btwMPAHWa2E9iXWkSTRK6p\njagFGBiA5ubQ4YiIiMjU0+Tu/aUdd+83s5YjdO+bgE+7+3DSe7zcqAuwhFh4ZSiZpeA3f/MM3vnO\nVB4nCU3MH45yH4byHobyHkbaeW+o45rfIS4qfRIoADuA96QW0SSRb8lTbAbv7Q0dioiIiExNL5nZ\n+0o7ZrYEqGeepB3AiWX7c5Jj5bqAVckk35cTT1/wO3DoAixAaQGW4DTxt4iISPbVU2T6H+4+5O4D\n7v4Nd/8ycH3agWVdvqUdN+jrUXdtERERScXVwGfM7Fkzexb4NPCHdbRbD5xsZvOSnk9LgTXlF7j7\nPHef6+5zge8Af+Tu3zWzvJl1wIHFWC4GNh65j3T4VGQSERHJvnqKTIurHPvtIx3IZJOb1g5AtCdT\nC6+IiIjIFOHuv3D33wDmA/Pd/e3uvqWOdoPAtcD9wJPAt919k5ldbWZXj9K8E3jYzH4K/Bj4t6ws\nwKLV5URERLKv5pxMZvaHxH9Be4uZPVZ2qgN4NO3Asi7f2gFA1LObWYFjERERkanHzP5v4O/c/dVk\n/1jgz9z9L0Zr6+5rgbUVx5bXuPZjZduZXYBFq8uJiIhk30g9mb4N/B7xF5TfK3ud5+5LJyC2TMu3\nzQCg2PtK4EhERERkirqkVGACcPdXgEsDxhOUhsuJiIhkX80ik7u/4u5b3P33gFbgouT1uokKLsty\nubjIFEWvjnKliIiIyGFpNLNppR0zawOmjXD9lBZF0NAA047aDIiIiGTfqHMymdkngH8BTkpe3zaz\nP0o7sKzL544BIIrUk0lERERS8U/Av5vZH5jZx4EHgH8IHFMwURT3YjILHYmIiIjUUnNOpjJ/CCx0\n9144MD/AfwFfTTOwrMu3HwtAsbg3cCQiIiIyFbn73yYTcL8LcOKJvN8QNqpwSkUmERERya56Vpcz\noL9sfyA5dlTLdcwEINq3J3AkIiIiMoW9SFxg+j3gt4hXizsqFYtaWU5ERCTrahaZzKzUy+kfgR+Z\n2V+Y2V8Q92I6artql+Q7jgOguL83cCQiIiIylZjZW8zsc2b2FPD3wLOAufsid7+lznssNrOnzWyL\nmd0wwnW/bmaDZnb5WNtONPVkEhERyb6RejL9GMDd/454yFwxeV3t7l+agNgyLTc96cm0vydwJCIi\nIjLFPEXca+k97n6+u/89MFRvYzNrBG4FLgHmA1eY2fwa1/0t8L2xtg1BRSYREZHsG2lOpgND4tz9\nxyRFJ4nl8/GcTFF/FDgSERERmWLeDywFHjSz+4BVjG2qgoXAFnffCmBmq4AlwOaK664D7gJ+/TDa\nTjgVmURERLJvpCLT68zs+lon3f3LKcQzaeRa4m85RRWZRERE5Ahy9+8C3zWzPHGB55PA8Wb2NWC1\nu39vxBvAbOC5sv3twLnlF5jZbOAyYBGHFplGbZu0XwYsA+js7KRQKIz+wQ5Db2/vgXu/+GIXnZ19\nFAobU3mWHFSed5lYyn0YynsYynsYaed9pCJTI9COJvmuqqmhiZYhiIb2hQ5FREREpiB3j4A7gTvN\n7Fjiyb8/TdnwtnG4Cfi0uw+bjf2rnruvAFYAdHV1eXd39xEI6bUKhQKle5vBSSe1k9az5KDyvMvE\nUu7DUN7DUN7DSDvvIxWZXnD3L6T25CkgP9hANKgik4iIiKTL3V8hLuqsqOPyHcCJZftzkmPluoBV\nSYFpFnCpmQ3W2TaIYlHD5URERLKurjmZpLr8UCPFob7QYYiIiIiUWw+cbGbziAtES4EPlV/g7vNK\n22Z2O/C/3f27yerCI7YNRXMyiYiIZN9IRaYLJyyKSSrnjUS+P3QYIiIiIge4+6CZXQvcTzz9wUp3\n32RmVyfnl4+17UTEPRoVmURERLKvZpHJ3V+eyEAmo7w3U/SB0GGIiIiIHMLd1wJrK45VLS65+8dG\naxtafz8MDqrIJCIiknUNoQOYzHI0E9EfOgwRERGRKS1KFvNVkUlERCTbVGQah7y1EDUMhg5DRERE\nZEorFZlyubBxiIiIyMhSKzKZ2Uoz22lmG2ucNzP7ipltMbMNZnZ22bnFZvZ0cu6GtGIcr3zDNIo2\nFDoMERERkSmtWIzf1ZNJREQk29LsyXQ7sHiE85cAJyevZcDXAMysEbg1OT8fuMLM5qcY52HLNbQS\nNarIJCIiIpImDZcTERGZHFIrMrn7OmCkycOXAHd47IfAMWb2a8BCYIu7b3X3fmBVcm3m5JvaiJoc\n3EOHIiIiIjJlqcgkIiIyOdRcXW4CzAaeK9vfnhyrdvzcWjcxs2XEPaHo7OykUCgc8UABent7X3Pv\nweIAxRb4jwcewFtaUnnu0a5a3iV9ynsYynsYynsYynu6zGwxcDPQCNzm7jdWnF8C/DUwDAwCn3T3\nh5Nz24AeYAgYdPeuCQy9KhWZREREJoeQRaYjwt1XACsAurq6vLu7O5XnFAoFKu/9/R++nqhvE+88\n5xzsuONSee7RrlreJX3KexjKexjKexjKe3rKph64iPiPdevNbI27by677N+BNe7uZnYG8G3glLLz\ni9x914QFPQoVmURERCaHkKvL7QBOLNufkxyrdTxz8i3tuEFfz0ijAkVEREQm1KhTD7h7r/uB8f55\nINNj/7W6nIiIyOQQsifTGuBaM1tFPBxuj7u/YGYvASeb2Tzi4tJS4EMB46wpNy0PPVDcu5s2Tg4d\njoiIiAjUOfWAmV0G/D/A8cBvl51y4PtmNgR8Pek1Xtl2Qqcr+MlPfg14Kz/96X+xY0d/Ks+SgzSc\nNRzlPgzlPQzlPYy0855akcnMvgV0A7PMbDvwOaAZwN2XA2uBS4EtQBG4Mjk3aGbXAvcTzyOw0t03\npRXneORbpwMQ7d2NBsuJiIjIZOLuq4HVZvZO4vmZ3pWcOt/dd5jZ8cADZvZUsqBLedsJna7gscfi\n/YsuejszZqTyKCmj4azhKPdhKO9hKO9hpJ331IpM7n7FKOcd+ESNc2uJi1CZlm+Lv+UUe18JHImI\niIjIAWOaesDd15nZG81slrvvcvcdyfGdZraaePjdulrtJ4LmZBIREZkcQs7JNOnlcnGRKYpeDRyJ\niIiIyAHrSaYeMLMW4qkH1pRfYGZvNjNLts8GpgG7zSxvZh3J8TxwMbBxQqOvIoqgpQWaJv2SNSIi\nIlOb/q96HPKlIlNRPZlEREQkG2pNPWBmVyfnlwO/C/y+mQ0A+4APJivNdRIPoYP4e+Kd7n5fkA9S\nJoo06beIiMhkoCLTOOTbZwJQLO4NHImIiIjIQdWmHkiKS6XtvwX+tkq7rcCZqQc4RsWihsqJiIhM\nBhouNw65jmMBiPbtCRyJiIiIyNQVRSoyiYiITAYqMo1DfvosAKL9vYEjEREREZm6VGQSERGZHFRk\nGodcRzJcTkUmERERkdSoyCQiIjI5qMg0DvncMQBE/SoyiYiIiKRFRSYREZHJQUWmccg1x8ucFPuL\ngSMRERERmbq0upyIiMjkoCLTODQ3NtM8BNGgikwiIiKSHWa22MyeNrMtZnZDlfNLzGyDmT1uZo+Y\n2fn1tg1Bq8uJiIhMDioyjVN+sIFoaF/oMEREREQAMLNG4FbgEmA+cIWZza+47N+BM939LOAq4LYx\ntJ1wGi4nIiIyOajINE754UaKQ/tDhyEiIiJSshDY4u5b3b0fWAUsKb/A3Xvd3ZPdPOD1tg1BRSYR\nEZHJoSl0AJNdbriRyFVkEhERkcyYDTxXtr8dOLfyov/T3r3HyVWXeR7/PHXpe+dCAk0kQGIIuBkh\ngVckiow2AyIXx8w4DgRcRxky2bji5bXiDrPOqqs73lZnnRlwYpYJMOsl66hhMkwAUWnjAJqIhku4\nhghDxyAkJKS7+lpVz/5xTnVOmr5Up+vU6ep83y/O65zzO+d36qmnO+GXp875lZn9IfB54ATg8gn2\nXQOsAWhra6Ojo6MScb9Kd3c3997bQU/PW3nppefo6Hg2lteRI3V3d8f2M5WxKffJUN6TobwnI+68\nq8g0Sc2eJcdA0mGIiIiITIi7bwI2mdlbgM8CF02g73pgPcDy5cu9vb09lhg7Ojo499x23GHJkgW0\nty+I5XXkSB0dHcT1M5WxKffJUN6TobwnI+6863G5SWomSw+DSYchIiIiUrIHODmyPz9sG5G7bwVe\na2ZzJ9q3GnK5YK3H5URERKY+FZkmqcnqyFk+6TBERERESrYDi81soZnVAauAzdETzOw0M7Nw+xyg\nHthfTt9q6wm/xFdFJhERkalPj8tNUnOqgb0pFZlERERkanD3vJldB9wNpIEN7r7TzNaGx9cBfwT8\niZkNAr3AleFE4CP2TeSNhHQnk4iISO1QkWmSmtIN9KSLSYchIiIiMsTdtwBbhrWti2x/EfhiuX2T\npCKTiIhI7dDjcpPUnGkgl3EY+hZgEREREakUFZlERERqh4pMk9ScaaYnC/T1JR2KiIiIyLRTKjI1\nNSUbh4iIiIxPRaZJaqprIpcF7+5OOhQRERGRaUd3MomIiNQOFZkmqbmuhWIK+g+9nHQoIiIiItOO\nvl1ORESkdsRaZDKzS8zsSTPbZWY3jHD842a2I1weNbOCmR0XHnvWzB4Jj/0izjgno7m+BYCeLhWZ\nRERERCpNdzKJiIjUjtiKTGaWBm4CLgWWAFeZ2ZLoOe7+v9x9mbsvA/4C+Im7R6s1F4THl8cV52Q1\nNcwAINe1P+FIRERERAJlfND3HjN7OPxA734zWxo5NqU+6FORSUREpHZkYrz2ucAud98NYGYbgZXA\nY6OcfxXw7RjjiUVzY6nIpDuZREREJHmRD/reBnQC281ss7tHx2C/Bt7q7gfM7FJgPbAicvwCd99X\ntaDHUCoyNTYmG4eIiIiML84i00nA85H9To4cvAwxsybgEuC6SLMDPzSzAvB1d18/St81wBqAtrY2\nOjo6Jh/5CLq7u0e89t4XgjuYHtqxnReaTonltY9lo+Vd4qW8J0N5T4byngzlPVbjftDn7vdHzv8Z\nML+qEU5ALhcUmFKaSVRERGTKi7PINBG/D9w37FG58919j5mdANxjZk+4+9bhHcPi03qA5cuXe3t7\neyvurLsAACAASURBVCwBdnR0MNK1B/NPwn3wmpNO4Hdjeu1j2Wh5l3gp78lQ3pOhvCdDeY9V2R/0\nha4F7ozsj/tBXzU/5Hv66T3U1R1PR8f943eQilARODnKfTKU92Qo78mIO+9xFpn2ACdH9ueHbSNZ\nxbBH5dx9T7h+0cw2EXwq96oiU9KaW44DoKf3lYQjEREREZkYM7uAoMh0fqR53A/6qvkh36xZJzFr\nFipKVpGKwMlR7pOhvCdDeU9G3HmP88bj7cBiM1toZnUEhaTNw08ys5nAW4F/jrQ1m1lraRu4GHg0\nxliPWlPLbAByvYcSjkREREQEKPODPjM7C7gZWOnuQ99gEv2gDyh90JeYXE6TfouIiNSK2IpM7p4n\nmGPpbuBx4DvuvtPM1prZ2sipfwj8wN1zkbY24N/M7CFgG/Cv7n5XXLFORvOMOQDk+lRkEhERkSlh\n3A/6zOwU4PvAe939qUj7lPugT0UmERGR2hHrnEzuvgXYMqxt3bD9W4Fbh7XtBpZSA5pnzAWgZyA3\nzpkiIiIi8XP3vJmVPuhLAxtKH/SFx9cBnwTmAF8zM4C8uy8n+KBvU9iWAb6V9Ad9uRw0NSUZgYiI\niJRrqkz8XbOaGloByPV3JxyJiIiISGC8D/rcfTWweoR+U+6DvlwOTjwx6ShERESkHPoy2Elqzgb3\nb+cGexKORERERGT66enR43IiIiK1QkWmScqms2SK0JNXkUlERESk0jQnk4iISO1QkakCmvMpcoW+\npMMQERERmXZUZBIREakdKjJVQHMhTa6oIpOIiIhIpanIJCIiUjtUZKqAJk/TU+xPOgwRERGRaaVQ\ngP5+fbuciIhIrVCRqQKaPUvOB5IOQ0RERAQAM7vEzJ40s11mdsMIx99jZg+b2SNmdr+ZLS23bzX1\n9aUB3ckkIiJSK1RkqoBmsvRYPukwRERERDCzNHATcCmwBLjKzJYMO+3XwFvd/Uzgs8D6CfStmv5+\nFZlERERqiYpMFdBkdeRsMOkwRERERADOBXa5+253HwA2AiujJ7j7/e5+INz9GTC/3L7V1NsbDFVV\nZBIREakNKjJVQHOqgVyqkHQYIiIiIgAnAc9H9jvDttFcC9x5lH1jpcflREREaksm6QCmg6Z0Az3p\nYtJhiIiIiEyImV1AUGQ6f4L91gBrANra2ujo6Kh8cMCBA8FQ9ZlnHqaj4+VYXkNerbu7O7afqYxN\nuU+G8p4M5T0ZceddRaYKaE43kss4FIuQ0s1hIiIikqg9wMmR/flh2xHM7CzgZuBSd98/kb7uvp5w\nHqfly5d7e3t7RQIf7sEHHwLgjW88i7e8JZaXkBF0dHQQ189UxqbcJ0N5T4bynoy4866KSAU0Z5vI\n1QG9vUmHIiIiIrIdWGxmC82sDlgFbI6eYGanAN8H3uvuT02kbzVpTiYREZHaojuZKqCpromeQfDu\nbkyjIBEREUmQu+fN7DrgbiANbHD3nWa2Njy+DvgkMAf4mpkB5N19+Wh9E3kj6NvlREREao2KTBXQ\nXNdCoRcGug5Q39aWdDgiIiJyjHP3LcCWYW3rIturgdXl9k2KJv4WERGpLXpcrgKa61sB6OnShJQi\nIiIilaLH5URERGqLikwV0NQQFJlyh/aPc6aIiIiIlKt0J1NTU8KBiIiISFlUZKqA5saZAOS6dSeT\niIiISKX09aVJpaC+PulIREREpBwqMlVAc/MsAHpyBxOORERERGT66OtL09wMwdzkIiIiMtWpyFQB\nTU3hnUw9ryQciYiIiMj00deX0nxMIiIiNURFpgpobpkNqMgkIiIiU4OZXWJmT5rZLjO7YYTjrzOz\nB8ys38yuH3bsWTN7xMx2mNkvqhf1q5XuZBIREZHaEGuRqYwBTruZvRIOYnaY2SfL7TuVNLUcB0BP\n76GEIxEREZFjnZmlgZuAS4ElwFVmtmTYaS8DHwa+PMplLnD3Ze6+PL5Ix6cik4iISG3JxHXhyADn\nbUAnsN3MNrv7Y8NO/am7v+Mo+04JzTPmAJDr70o4EhERERHOBXa5+24AM9sIrASGxlHu/iLwopld\nnkyI5enrS+mb5URERGpInHcyDQ1w3H0AKA1w4u5bdc2tpSJTd8KRiIiIiHAS8HxkvzNsK5cDPzSz\nB81sTUUjmyDdySQiIlJbYruTiZEHOCtGOO88M3sY2ANc7+47J9B3SmiqbwGgZyCXcCQiIiIik3a+\nu+8xsxOAe8zsCXffGj0hLD6tAWhra6OjoyOWQHp6zqa3dx8dHY/Gcn0ZWXd3d2w/Uxmbcp8M5T0Z\nynsy4s57nEWmcvwSOMXdu83sMuB2YPFELlCtQc5YP4jB4iAAe19+QX9IKkx/8SRDeU+G8p4M5T0Z\nynus9gAnR/bnh21lcfc94fpFM9tEcIf51mHnrAfWAyxfvtzb29snGfLIBgZ6OPXUmcR1fRlZR0eH\ncp4Q5T4ZynsylPdkxJ33OItM4w5w3P1QZHuLmX3NzOaW0zfSryqDnPF+EJmfQKYxoz8kFaa/eJKh\nvCdDeU+G8p4M5T1W24HFZraQYPy0Cri6nI5m1gyk3L0r3L4Y+ExskY5Dj8uJiIjUljiLTOMOcMzs\nROC37u5mdi7BHFH7gYPj9Z1qmvIpcoXepMMQERGRY5y7583sOuBuIA1scPedZrY2PL4uHIP9ApgB\nFM3sowTfRDcX2GRmEIwTv+XudyXxPkBFJhERkVoTW5GpnAEO8G7gA2aWB3qBVe7uwIh944q1EpqL\naXLF/qTDEBEREcHdtwBbhrWti2y/QHCn+HCHgKXxRlced+jtTevb5URERGpIrHMylTHAuRG4sdy+\nU1lTMU2PikwiIiIiFTEwAMWi6U4mERGRGpJKOoDpojndQO7QfvjWt5IORURERKTm9fQEaxWZRERE\naoeKTBXSfOpicnNnwHveA5/4BBSLSYckIiIiUrNyuWCtIpOIiEjtUJGpQpoaZ7D39HkMrv5T+Nzn\n4F3vgu7upMMSERERqUkqMomIiNQeFZkqZOUZK3ls3+Nc+rvPceB/fx7+5V/gzW+G555LOjQRERGR\nmlMqMmnibxERkdqhIlOFfGjFh7hl5S1sfW4rK9IbePL764MC0xveAPfdl3R4IiIicgwxs0vM7Ekz\n22VmN4xw/HVm9oCZ9ZvZ9RPpWy26k0lERKT2qMhUQe9f9n7ufd+9HOw7yIrHP8YPbv8KzJwJF1wA\nt96adHgiIiJyDDCzNHATcCmwBLjKzJYMO+1l4MPAl4+ib1WoyCQiIlJ7VGSqsDef8ma2/dk2Tpl5\nCpdt/U/cuH41/pbfhWuugY9/HAqFpEMUERGR6e1cYJe773b3AWAjsDJ6gru/6O7bgcGJ9q0Wfbuc\niIhI7VGRKQYLZi3gvj+9j8tPv5wPbb2B//zh0xj84Fr48pfh938ftm0D96TDFBERkenpJOD5yH5n\n2BZ334rSnUwiIiK1J5N0ANNVa30rm67cxCd+9Am+cN8XePINF/BPN36JOR/773DnnfDa18KqVXDV\nVfD61ycdroiIiEjZzGwNsAagra2Njo6Oir/Gww+fSCp1Bg899ACdnQMVv76Mrru7O5afqYxPuU+G\n8p4M5T0ZceddRaYYpSzF5y/6PEuOX8Lqf1nNihn/zh2PbeV1P9kJ3/42fOEL8LnPwe/8TlBsWrUK\nFi1KOmwRERGpbXuAkyP788O2ivV19/XAeoDly5d7e3v7UQU6lvZ2uOyyDtrb2zGr+OVlDB0dQd6l\n+pT7ZCjvyVDekxF33vW4XBW8d+l76XhfB10DXbzh/13In825nx/8/fUMPv8c3HgjzJoFf/mXcNpp\ncO658Nd/DU89pUfqRERE5GhsBxab2UIzqwNWAZur0LfizFCBSUREpIaoyFQlbzr5TWz/s+2sPGMl\nG3du5O3feDtt//cs/nT+g9x5yycY2P00fOlLkM/Dxz4GZ5wBxx8fzOH0+c/DT35yeAZMERERkVG4\nex64DrgbeBz4jrvvNLO1ZrYWwMxONLNO4L8Af2lmnWY2Y7S+ybwTERERqTV6XK6KTpl5Ct941zfo\ny/fxg2d+wHcf+y7fe/x73LLjFmY1zGLlGSt598bP8LbiQur/7QF44AG4/364447gApkMLF0K550X\nLOeeC6eeCul0sm9MREREphR33wJsGda2LrL9AsGjcGX1FRERESmHikwJaMg08M4z3sk7z3gn/fl+\nfrj7h3z38e9y+xO3c9tDtzGjfgbtC9pZ8f4VrPjE1byhcREzfrnzcNHpH/4B/u7vgovV1QXzOJ1+\nOixefOR63jzdYy4iIiIiIiJSAYODg3R2dtLX15d0KEdt5syZPP7446Meb2hoYP78+WSz2aO6vopM\nCavP1HP56Zdz+emX8/V3fJ0f//rHfO+x7/HTf/8pm58MpkAwjNfNfR0r3rCCFX9wBStO/CKvf6FI\n9lcPw9NPB8tTT8Fdd0F//+GLNzcH8zwtWADz5796OekkaGxM5o2LiIiIiIiI1JDOzk5aW1tZsGAB\nVqM3dHR1ddHa2jriMXdn//79dHZ2snDhwqO6vopMU0hduo5LTruES067BIADvQfY/pvt/Lzz52z7\nzTb+9al/5dYdtwLQmGlk6YlLOe1Np7HosqUsmv0uFs1cwKLeBk54/gC2a1dQeHr6adi9G7ZuhQMH\nXv2ic+YEBad58+CEE4J5oI4//vB2tK25WXdGiYiIiIiIyDGpr6+vpgtM4zEz5syZw0svvXTU11CR\naQqb3TibixddzMWLLgaCquKzB5/l53t+zrY929jxwg62PreVbz78TZzD30TXUtfCa2e/lkVvWsSi\ny5Zw8sy3M69lHvMys3hNLsW8/QM07n0Jnn8eOjuDZe9eeOwxePFFGO3Wv8ZGOO44mD177PXMmdDa\n+uqlvl5FKhEREREREalZ07XAVDLZ96ciUw0xMxbOXsjC2QtZ9fpVQ+39+X6ePfgszxx4hmdefiZY\nH3iGJ/Y9wZant9Bf6H/VtWbWz+Q1s17DvJPnMa9lHm3NpzOnaQ7HNczmuFQzx/UZx+WKHNeV57iD\n/bTu68Jeeim4G+rll4P17t3w4IPBfjnffJfJwIwZh4tOM2YEBanoetj27GeeCSY2b2p69dLYCCl9\nQaKIiIiIiIjIVKAi0zRQn6nnjLlncMbcM151zN3Z37ufvV17+U3Xb9jbvfeI7d90/Yb7nr+P33b/\nlt5876ivkbY0s9tmM/OUmcyon8GM+hnMbFjIjPqlzKibwYxMEzOLdcwYTNEyaLQMGs39RVr6nObe\nPC09eZq7B2jp6qPpUC/prhwcOgT79sEzzwTbhw69qli1dLw339AQFJtKy/D9aFupMDXaunRufX0w\nofp4SyajO7NERGRKMrNLgL8B0sDN7v6FYcctPH4Z0AO8391/GR57FugCCkDe3ZdXMXQREREZxf79\n+7nwwgsBeOGFF0in0xx//PEAbNu2jbq6urKus2HDBi677DJOPPHEiseoItM0Z2bMbZrL3Ka5nNl2\n5pjn9uX7ONB7gJd7X+bl3pc50Hd4u7S80v8Kh/oPcaj/EM8dfG5o+5X+V8gX82MHUx8uc4M5pVrq\nWiLLQlrrW2nJNNFi9bR4lpZihoOdv2XhCa+hoQANg9Aw6DQMFmnoL9IwUKChr0B93yB1fXnq+gbJ\n9g1Q1zdIXW8/dT05svv7qMv1U5frI9PTi/X2lXfXVXnJDQpSpaLUSNvlLqU+w9el7Wz2yCWTGXk/\nnQ6WTObw9vB9FcZERKY1M0sDNwFvAzqB7Wa22d0fi5x2KbA4XFYAfx+uSy5w931VCllERETKMGfO\nHHbs2AHApz/9aVpaWrj++usnfJ0NGzZwzjnnqMgk8WrINDCvdR7zWudNuK+705fv45X+V+ge6CY3\nkAvWg7kR94faBruH9g/1H2LPoT1D+10DXQwUBuC5sYIOlzKkLEV9up6GzGwaMvU0pOppSNXRYNlg\nIUM9aeo8TR0p6jxFvaep8xR1RaOuaNQXjWzesUIBKxSxfCHYzucj2wUs30/dYC8NA2ExrL9Aw6EC\nDX35YOnN09g7SF3vAOn+QdIOmSKki5D2I9eZcMmGxyddIspmjyxmjVDgWpbLBfNrRQtVIy3Di1+j\nFcBKRa7RttPp4NFHs2BdWqL7ZkeeH71OtK20RF97+HbpeiIi09O5wC533w1gZhuBlUC0yLQS+Ed3\nd+BnZjbLzOa5+97qhysiIlJ7PvpRCOs9FbNsGXz1q0fX97bbbuOmm25iYGCA8847jxtvvJFiscg1\n11zDjh07cHfWrFnDjBkz2LFjB1deeSWNjY0TugOqHCoySUWYGY3ZRhqzjRW97o/v/TFvOv9N9OX7\nXrX0F/qHtgcLgwwUBoaWweKR+wOFAfrz/aP278v30ZvvJVcYYKDQS3++P+hXDPsW+oeuM3THVgqo\n3J/FsmUtQ8bSZEmTDdcZUmRIkQJSGObBOuVBUaq0nXIj45AtGhk3sgXIFvNkinmyhW6yBcgUnGJf\nP/WZ35IqQsqdVNFJFcGGtoMl218kkyuSzTuZfIHsYJHsYJFMPlyHxbLUOIsdnrcej9R+fNh7jxbc\nsoWRt0uFOPNx1qkUKUtjqRSWTmOp0pIilUpj6TTFVIqiOQWDohGug/3SNqkU2VSWbCpLXTpLNl1H\ntrTO1FGXaSCdrTtcSIsW6YbtL37hBfinfxq90BZdhvcfvh3tX7rG8O2RrjPW/vDXHmt7pP3R4hmt\nbaz94dcTkaiTgOcj+50ceZfSaOecBOwl+Ov3h2ZWAL7u7utjjFVEREQm6dFHH2XTpk3cf//9ZDIZ\n1qxZw8aNG1m0aBH79u3jkUceAeDgwYOk02luvvlmbrzxRpYtW1bxWGItMpUxH8B7gD8n+DdfF/AB\nd38oPPYsmg/gmJeyVCzFq8lwdxwfdz1YGDyigDVioSzfT8ELFIoFCl4gX8wPbUfb8sU8g4VBBouD\nR2xH2/LFPI5T9CJFL+Ie2Q7bC8XI9YqD9BcGyYXb0Wv29Bp19XVHXG/4dYPYikP9il5M+kczQcVw\niZ+FxbS0h8U+Rim4zQTscCGMaGGs6FCI7I9XRBthDSMfi8Y5tB1pT4V31Q2Pd3gBMXpOepT2kcpB\n0dcder3IHX2pyHa07ciLWHjxw0UpTxk+xrp0zmChwPe/ngl+3y3417WHhcXStgNpUmSwcJ0iYyky\npEmH64ylSJPCzEhZKijukiIV3bcUhoXf2mFHJNs4smCWslRYDE1hFhY/zUil0uGxNIZRMKcYxl40\nKFAMtvHgt9w8vK4dzpOlwnWkiBfGF8SbJpVKBfFH1mYWxBLGVNo3syBWgpgX/4fzWXLBFSP8tKVG\nnO/ue8zsBOAeM3vC3bdGTzCzNcAagLa2Njo6OmIJpLu7O7Zry+iU9+Qo98lQ3pNRi3mfOXMmXV1d\nAHz2s/G8Rnj5cfX395PNZunq6uKOO+5g27ZtnHPOOQD09vZywgkncN555/HEE0+wdu1a3v72t3Ph\nhRdSKBQoFArkcrmh9zJcX1/fUf9sYisylTkfwK+Bt7r7ATO7FFiP5gOQKc7Mwn8MjnNiFmYysyox\nVVpHRwft7e0T6lP04hEFsVIha3iRarTFIgmNfm1mqd3xMQtupe2CF8ouBJYKZiMdK3qRlKVIW/AP\n+nT4D/voftrSQwXFUoGudCfd8Lbx3n/BC+zZs4d5r5lH8PQKR8QDkQJnqd2LeLF45Nr9yO3w/eEM\nbQ+1u0O4uBfDbSLbpRwVjoy1GOznS20UKRSDdfBeIudSpOgenHNEIdJL/xG9Z809KJgUKFIoFUeH\n9g9vF/Hgd8OHV5tK1/Oh359SOcfCu/yi+8EvbzH4uUbOSUX6pcLb64o4eSuSD9cFnLwFi4/398FU\n58PWk/TxPT/jSyoyJWkPcHJkf37YVtY57l5av2hmmwgevzuiyBTe3bQeYPny5T7R/2eU62j+fyST\np7wnR7lPhvKejFrM++OPP05ra2vSYQBQX19PfX09ra2t1NfXc+211/LZESpfjzzyCHfeeSe33HIL\nd955J1/5yldIp9M0NzeP+l4aGho4++yzjyquOO9kGnc+AHe/P3L+zwgGOCJSg1KWoi5dR126DrJJ\nR1ObavF/tNNBJfJeKrKOdNffSMtwPqy6Ey12RouhI92lmLb0UBG0tJSKoanSXUajVcVLhcahwmSR\nYiFPsVigWChQLEa2vUCxkA8LmQWKxcKRRc5ikWIxOH7C8adOKp8yaduBxWa2kKBwtAq4etg5m4Hr\nwvHZCuAVd99rZs1Ayt27wu2Lgc9UMXYRERGZoIsuuoh3v/vdfOQjH2Hu3Lns37+fXC5HY2MjDQ0N\n/PEf/zGLFy9m9erVALS2to56F9NkxVlkKmc+gKhrgTsj+2XNB6Dbtac35T0ZynsylPdkKO+TYQRP\nxKfD/XoADnXtZ9fujjF7Ku/xcfe8mV0H3E3ww9ng7jvNbG14fB2wBbgM2AX0ANeE3duATeEdpRng\nW+5+V5XfgoiIiEzAmWeeyac+9SkuuugiisUi2WyWdevWkU6nufbaa3F3zIwvfvGLAFxzzTWsXr16\n+k78bWYXEBSZzo80jzsfAOh27elOeU+G8p4M5T0ZynsylPd4ufsWgkJStG1dZNuBD47QbzewNPYA\nRUREZFI+/elPH7F/9dVXc/XVw29chl/96ldH7Hd1dXHFFVdwxRXxTG2QiuWqgXLmA8DMzgJuBla6\n+/5Se3Q+AKA0H4CIiIiIiIiIiExBcRaZhuYDMLM6gvkANkdPMLNTgO8D73X3pyLtzWbWWtommA/g\n0RhjFRERERERERGRSYjtcbky5wP4JDAH+Fr47H/e3Zej+QBEREREREREZIopzW80XfmI395cvljn\nZCpjPoDVwOoR+mk+ABERERERERGZMhoaGti/fz9z5syZloUmd2f//v00NDQc9TWmxMTfIiIiIiIi\nIiJT2fz58+ns7OSll15KOpSj1tfXN2YRqaGhgfnz5x/19VVkEhEREZlmzOwS4G8Ipiy42d2/MOy4\nhccvA3qA97v7L8vpKyIicqzKZrMsXLgw6TAmpaOjg7PPPju268c58beIiIiIVJmZpYGbgEuBJcBV\nZrZk2GmXAovDZQ3w9xPoKyIiIjIiFZlEREREppdzgV3uvtvdB4CNwMph56wE/tEDPwNmmdm8MvuK\niIiIjEhFJhEREZHp5STg+ch+Z9hWzjnl9BUREREZ0bSak+nBBx/cZ2bPxXT5ucC+mK4to1Pek6G8\nJ0N5T4bynoyjzfuplQ5EJs7M1hA8ZgfQbWZPxvRS+vOZDOU9Ocp9MpT3ZCjvyYh1DDatikzufnxc\n1zazX7j78riuLyNT3pOhvCdDeU+G8p4M5T1We4CTI/vzw7ZyzsmW0Rd3Xw+sr0SwY9HvSTKU9+Qo\n98lQ3pOhvCcj7rzrcTkRERGR6WU7sNjMFppZHbAK2DzsnM3An1jgjcAr7r63zL4iIiIiI5pWdzKJ\niIiIHOvcPW9m1wF3A2lgg7vvNLO14fF1wBbgMmAX0ANcM1bfBN6GiIiI1CAVmcoX+y3hMiLlPRnK\nezKU92Qo78lQ3mPk7lsICknRtnWRbQc+WG7fBOn3JBnKe3KU+2Qo78lQ3pMRa94tGGOIiIiIiIiI\niIgcPc3JJCIiIiIiIiIik6Yik4iIiIiIiIiITJqKTOMws0vM7Ekz22VmNyQdz3RlZhvM7EUzezTS\ndpyZ3WNmT4fr2UnGOB2Z2clmdq+ZPWZmO83sI2G7ch8jM2sws21m9lCY9/8RtivvVWBmaTP7lZnd\nEe4r71VgZs+a2SNmtsPMfhG2KfcyKo3BqkNjsGRoDJYMjcGSpTFY9SUx/lKRaQxmlgZuAi4FlgBX\nmdmSZKOatm4FLhnWdgPwI3dfDPwo3JfKygMfc/clwBuBD4a/48p9vPqB33P3pcAy4JLwK8SV9+r4\nCPB4ZF95r54L3H2Zuy8P95V7GZHGYFV1KxqDJUFjsGRoDJYsjcGSUdXxl4pMYzsX2OXuu919ANgI\nrEw4pmnJ3bcCLw9rXgncFm7fBvxBVYM6Brj7Xnf/ZbjdRfCX/kko97HyQHe4mw0XR3mPnZnNBy4H\nbo40K+/JUe5lNBqDVYnGYMnQGCwZGoMlR2OwKSXWvKvINLaTgOcj+51hm1RHm7vvDbdfANqSDGa6\nM7MFwNnAz1HuYxfeLrwDeBG4x92V9+r4KvBfgWKkTXmvDgd+aGYPmtmasE25l9FoDJYs/dmsIo3B\nqktjsMRoDJaMqo+/MpW8mEhc3N3NzJOOY7oysxbge8BH3f2QmQ0dU+7j4e4FYJmZzQI2mdnrhx1X\n3ivMzN4BvOjuD5pZ+0jnKO+xOt/d95jZCcA9ZvZE9KByLzI16c9mvDQGqz6NwapPY7BEVX38pTuZ\nxrYHODmyPz9sk+r4rZnNAwjXLyYcz7RkZlmCwc033f37YbNyXyXufhC4l2A+DOU9Xm8G3mlmzxI8\nevN7ZvYNlPeqcPc94fpFYBPB41DKvYxGY7Bk6c9mFWgMliyNwapKY7CEJDH+UpFpbNuBxWa20Mzq\ngFXA5oRjOpZsBt4Xbr8P+OcEY5mWLPi47B+Ax939ryOHlPsYmdnx4adnmFkj8DbgCZT3WLn7X7j7\nfHdfQPD3+Y/d/T+ivMfOzJrNrLW0DVwMPIpyL6PTGCxZ+rMZM43BkqExWDI0BktGUuMvc9cdaWMx\ns8sInh9NAxvc/a8SDmlaMrNvA+3AXOC3wKeA24HvAKcAzwFXuPvwiSllEszsfOCnwCMcfj76vxHM\nCaDcx8TMziKYZC9NUOz/jrt/xszmoLxXRXir9vXu/g7lPX5m9lqCT88geFT/W+7+V8q9jEVjsOrQ\nGCwZGoMlQ2Ow5GkMVj1Jjb9UZBIRERERERERkUnT43IiIiIiIiIiIjJpKjKJiIiIiIiIiMikqcgk\nIiIiIiIiIiKTpiKTiIiIiIiIiIhMmopMIiIiIiIiIiIyaSoyiUgizKxgZjsiyw0VvPYCM3u0reJT\nAwAAAklJREFUUtcTERERmS40BhOROGWSDkBEjlm97r4s6SBEREREjjEag4lIbHQnk4hMKWb2rJl9\nycweMbNtZnZa2L7AzH5sZg+b2Y/M7JSwvc3MNpnZQ+FyXniptJn9HzPbaWY/MLPG8PwPm9lj4XU2\nJvQ2RURERKYUjcFEpBJUZBKRpDQOu1X7ysixV9z9TOBG4Kth298Bt7n7WcA3gb8N2/8W+Im7LwXO\nAXaG7YuBm9z9d4CDwB+F7TcAZ4fXWRvXmxMRERGZojQGE5HYmLsnHYOIHIPMrNvdW0Zofxb4PXff\nbWZZ4AV3n2Nm+4B57j4Ytu9197lm9hIw3937I9dYANzj7ovD/T8Hsu7+P83sLqAbuB243d27Y36r\nIiIiIlOGxmAiEifdySQiU5GPsj0R/ZHtAofnoLscuIngE7ftZqa56UREREQCGoOJyKSoyCQiU9GV\nkfUD4fb9wKpw+z3AT8PtHwEfADCztJnNHO2iZpYCTnb3e4E/B2YCr/okT0REROQYpTGYiEyKqsci\nkpRGM9sR2b/L3UtfoTvbzB4m+CTsqrDtQ8AtZvZx4CXgmrD9I8B6M7uW4NOyDwB7R3nNNPCNcBBk\nwN+6+8GKvSMRERGRqU9jMBGJjeZkEpEpJZwPYLm770s6FhEREZFjhcZgIlIJelxOREREREREREQm\nTXcyiYiIiIiIiIjIpOlOJhERERERERERmTQVmUREREREREREZNJUZBIRERERERERkUlTkUlERERE\nRERERCZNRSYREREREREREZm0/w+qgTviBpb3QgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[7 2 1 ..., 4 5 6]\n", "[7 2 1 ..., 4 5 6]\n", "Number of False Prediction: 759\n", "False Prediction Index: 8, Prediction: 6, Ground Truth: 5\n", "False Prediction Index: 33, Prediction: 6, Ground Truth: 4\n", "False Prediction Index: 63, Prediction: 2, Ground Truth: 3\n", "False Prediction Index: 124, Prediction: 4, Ground Truth: 7\n", "False Prediction Index: 149, Prediction: 9, Ground Truth: 2\n" ] } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from tensorflow.examples.tutorials.mnist import input_data\n", "import math\n", "import tensorflow as tf\n", "\n", "mnist = input_data.read_data_sets(\"../MNIST_data/\", one_hot=True)\n", "\n", "batch_size = 100\n", "training_epochs = 100\n", "learning_rate = 0.05\n", "\n", "epoch_list = []\n", "train_error_list = []\n", "validation_error_list = []\n", "test_accuracy_list = []\n", "diff_index_list = []\n", " \n", "# Data Preparation\n", "x = tf.placeholder(tf.float32, [None, 784])\n", "y_target = tf.placeholder(tf.float32, [None, 10])\n", "\n", "# Model Construction\n", "W = tf.Variable(tf.zeros([784, 10]))\n", "b = tf.Variable(tf.zeros([10]))\n", "u = tf.matmul(x, W) + b\n", "\n", "# Target Setup\n", "error = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=u, labels=y_target))\n", "optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(error)\n", "\n", "# Accuracy \n", "prediction_and_ground_truth = tf.equal(tf.argmax(u, 1), tf.argmax(y_target, 1))\n", "accuracy = tf.reduce_mean(tf.cast(prediction_and_ground_truth, tf.float32))\n", "\n", "def draw_error_values_and_accuracy():\n", " # Draw Error Values and Accuracy\n", " fig = plt.figure(figsize=(20, 5))\n", " plt.subplot(121)\n", " plt.plot(epoch_list[1:], train_error_list[1:], 'r', label='Train')\n", " plt.plot(epoch_list[1:], validation_error_list[1:], 'g', label='Validation')\n", " plt.ylabel('Total Error')\n", " plt.xlabel('Epochs')\n", " plt.grid(True)\n", " plt.legend(loc='upper right')\n", "\n", " plt.subplot(122)\n", " plt.plot(epoch_list[1:], test_accuracy_list[1:], 'b', label='Test')\n", " plt.ylabel('Accuracy')\n", " plt.xlabel('Epochs')\n", " plt.yticks(np.arange(0.0, 1.0, 0.05))\n", " plt.grid(True)\n", " plt.legend(loc='lower right')\n", " plt.show()\n", " \n", "def draw_false_prediction():\n", " fig = plt.figure(figsize=(20, 5))\n", " for i in range(5):\n", " j = diff_index_list[i]\n", " print(\"False Prediction Index: %s, Prediction: %s, Ground Truth: %s\" % (j, prediction[j], ground_truth[j]))\n", " img = np.array(mnist.test.images[j])\n", " img.shape = (28, 28)\n", " plt.subplot(150 + (i+1))\n", " plt.imshow(img, cmap='gray')\n", " \n", "with tf.Session() as sess:\n", " init = tf.global_variables_initializer()\n", " sess.run(init)\n", " \n", " total_batch = int(math.ceil(mnist.train.num_examples/float(batch_size)))\n", " print(\"Total batch: %d\" % total_batch) \n", "\n", " for epoch in range(training_epochs):\n", " epoch_list.append(epoch)\n", " # Train Error Value\n", " train_error_value = sess.run(error, feed_dict={x: mnist.train.images, y_target: mnist.train.labels})\n", " train_error_list.append(train_error_value)\n", " \n", " validation_error_value = sess.run(error, feed_dict={x: mnist.validation.images, y_target: mnist.validation.labels})\n", " validation_error_list.append(validation_error_value)\n", " \n", " test_accuracy_value = sess.run(accuracy, feed_dict={x: mnist.test.images, y_target: mnist.test.labels})\n", " test_accuracy_list.append(test_accuracy_value) \n", " print(\"Epoch: {0:2d}, Train Error: {1:0.5f}, Validation Error: {2:0.5f}, Test Accuracy: {3:0.5f}\".format(epoch, train_error_value, validation_error_value, test_accuracy_value))\n", " \n", " for i in range(total_batch):\n", " batch_images, batch_labels = mnist.train.next_batch(batch_size)\n", " sess.run(optimizer, feed_dict={x: batch_images, y_target: batch_labels})\n", " \n", "\n", " # Draw Graph about Error Values & Accuracy Values\n", " draw_error_values_and_accuracy()\n", " \n", " # False Prediction Profile\n", " prediction = sess.run(tf.argmax(u, 1), feed_dict={x:mnist.test.images})\n", " ground_truth = sess.run(tf.argmax(y_target, 1), feed_dict={y_target:mnist.test.labels})\n", "\n", " print(prediction)\n", " print(ground_truth)\n", "\n", " for i in range(mnist.test.num_examples):\n", " if (prediction[i] != ground_truth[i]):\n", " diff_index_list.append(i)\n", " \n", " print(\"Number of False Prediction:\", len(diff_index_list))\n", " draw_false_prediction()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.0" } }, "nbformat": 4, "nbformat_minor": 0 }