{ "metadata": { "name": "", "signature": "sha256:3d437ebdf0e958eb2361cad44156f40592bb9d64cab9430f55235831db4ce11a" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "import math\n", "import pyaudio" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This makes a sound!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "PyAudio = pyaudio.PyAudio\n", "\n", "BITRATE = 24000 #number of frames per second/frameset. \n", "FREQUENCY = 261.6 #Hz, waves per second, 261.63=C4-note.\n", "LENGTH = 1. #seconds to play sound\n", "\n", "NUMBEROFFRAMES = int(BITRATE * LENGTH)\n", "RESTFRAMES = NUMBEROFFRAMES % BITRATE\n", "WAVEDATA = '' \n", "\n", "for x in xrange(NUMBEROFFRAMES):\n", " WAVEDATA = WAVEDATA+chr(int(math.sin(x/((BITRATE/FREQUENCY)/math.pi))*127+128)) \n", "\n", "#fill remainder of frameset with silence\n", "for x in xrange(RESTFRAMES): \n", " WAVEDATA = WAVEDATA+chr(128)\n", "\n", "p = PyAudio()\n", "stream = p.open(format = p.get_format_from_width(1), \n", " channels = 1, \n", " rate = BITRATE, \n", " output = True)\n", "stream.write(WAVEDATA)\n", "stream.stop_stream()\n", "stream.close()\n", "p.terminate()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 35 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Write a file" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "from matplotlib import pyplot as plt\n", "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 38 }, { "cell_type": "code", "collapsed": false, "input": [ "from struct import pack\n", "from math import sin, pi" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "# create a sound file in AU format playing a sine wave\n", "# of a given frequency, duration and volume\n", "def au_file(name='test.au', freq=440, dur=1000, vol=0.5, lead=0, tail=0):\n", " \"\"\"\n", " creates an AU format sine wave audio file\n", " of frequency freq (Hz)\n", " of duration dur (milliseconds)\n", " and volume vol (max is 1.0)\n", " \"\"\"\n", " fout = open(name, 'wb')\n", " \n", " total = lead + dur + tail\n", " \n", " values = []\n", " \n", " # header needs size, encoding=2, sampling_rate=8000, channel=1\n", " fout.write(pack('>4s5L', '.snd'.encode(\"utf8\"), 24, 8*total, 2, 8000, 1))\n", " factor = 2 * pi * freq/8000\n", " \n", " # write lead\n", " for seg in range(8 * lead):\n", " val = pack('b', 0)\n", " fout.write(val)\n", " values.append(0)\n", " \n", " # write data\n", " for seg in range(8 * dur):\n", " # sine wave calculations\n", " sin_seg = sin(seg * factor)\n", " v = vol * 127 * sin_seg\n", " val = pack('b', int(v))\n", " fout.write(val)\n", " values.append(v)\n", " \n", " # write tail\n", " for seg in range(8 * tail):\n", " val = pack('b', 0)\n", " fout.write(val)\n", " values.append(0)\n", " \n", " fout.close()\n", " print(\"File %s written\" % name)\n", " \n", " return values" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 33 }, { "cell_type": "code", "collapsed": false, "input": [ "sound = au_file(name='sound440_2.au', freq=150, dur=500, vol=1.0, lead=500, tail=500)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "File sound440_2.au written\n" ] } ], "prompt_number": 37 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.figure(figsize=(20,4))\n", "plt.plot(sound)\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAABJcAAAEACAYAAAAOUpe0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztvXuwLVld5/k9j3sLBBpElIKitJBXi03z0AZ0pLm08lAH\nkTYYsEcH0fDRKDOGhA8kQm+pQSO2GBItED2KAWNTDu2DhhhB8HGDfmnZLSgKJVUlhVQJBVSJQD3v\necwfuZdn7dy/9cpcK3fufT6fiBtnn9/OX+Za+V2Z5/5++VsrJQAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgy3iDpZknv92znJd0o\n6b2Lf1/vffcySddKukbSM6ZpIgAAAAAAAAAAzJWnSHq8lpNLPynph4xtHy3pfZLOSLpC0nWSdhu3\nDwAAAAAAAAAAGlEjsfOfJf2dYd8xbM+RdJWki5JuUJdcemKFNgAAAAAAAAAAwBpoWTX0Ekl/JulX\nJN1vYXuwuulyjhslXdawDQAAAAAAAAAA0JBWyaXXSXqopMdJ+pikn49se9yoDQAAAAAAAAAA0Jj9\nRvv9hPf5lyW9ffH5JkmXe989ZGFb4mEPe9jx9ddf36hpAAAAAAAAAACnkuslPbz2Tlsllx6krmJJ\nkp6rk8W+3ybpzZJerW463CMkXd13vv7663V8TEETbDfnz5/X+fPn190MgKYwzuE0wDiH0wDjHE4D\njHM4Dezs7DysxX5rJJeukvRUSQ+Q9FF1b4o7p25K3LGkD0v63sW2H5D0lsXPA0kvFtPiAAAAAAAA\nAAA2lhrJpW81bG+IbP+KxT8AAAAAAAAAANhwWr4tDgAinDt3bt1NAGgO4xxOA4xzOA0wzuE0wDgH\nGM7OuhsQ4Jg1lwAAAAAAAAAA6rGzsyM1yAVRuQQAAAAAAAAAAIMhuQQAAAAAAAAAAIMhuQQAAAAA\nAAAAAIMhuQQAAAAAAAAAAIMhuQQAAAAAAAAAAIMhuQQAAAAAAAAAAIMhuQQAAAAAAAAAAIMhuQQA\nAAAAAAAAAIMhuQQAAAAAAAAAAIMhuQQAAAAAAAAAAIMhuQQAAM1417uk171u2fbWt0q/9EvLtte8\nRnr1q5dtb3qT9Nu/vWx73euk3/qtZdsP/7D0G7+xbHvVq6T//t+XbT/xE6u25z9fuvrqZdtLXyr9\n9V8v2777u6Ubbli2fc3XSDfdtGx74Qulz3xm2fbc50q33bZse+QjpYsXT36/eLFry9HRsu0bvmHZ\n79Oflh7/+GXbpz7Vtc/nE5+Qvu3blm0f/ODq/q65RvrxH1+2/fmfSz/0Q8u2d71L+t7vXba95z3S\nL/zCsu13f1f6t/922fYrvyL9zM8s2/7jf5SuumrZ9qu/Kr35zcu2n/zJbhz4vOY10h/+4bLtFa9Y\ntb3oRdKFC8u2l7+8Ow8+L3mJ9Fd/tWz7uq+Trr9+2fY93yN98pPLtuc/X7r11mXbYx4jfe5zJ78f\nHXXbHRyc2I6PpWc+c1nvO+6QHv3o5X195jPSd3zHsu3Tn5ae97xl2w03SE972rLtwx9e1fHaa6UX\nv3jZ9l/+i/Tt375s++M/ll75ymXbe94j/fRPL9uuuqo7pz5ve1unpc+v/3o3Dnx+9mel179+2fbv\n/730jncs21796lXb93+/9Du/s2z7qZ+S3vveZdsP/7D0vvct2579bOkv/mLZ9pKXrF7L3/7t0sc/\nvmz7yq+Ubrll2fav/pV0553Ltm/8Runuu09+PzyUHv7wTnfHHXd0vr7t9tul5zxneV8f/7j0VV+1\nbPvbv+3Ogc/f/I30nd+5bPvTP5W+5VuWbX/2Z9KVVy7brr56Vce3vlX6wR8UAADAxnMMAACbz8Mf\nfnzcv6Vfeumq7ezZVZt0fPyAB6zaHvrQVdsTnrBq+5f/ctX2wheu2n7wB1dtv/ALq7Zf/uVV22/+\n5snvh4ed7U/+5MR2cNDZrrnmxHbbbZ3tIx85sX3kI53t1ltXbRcvntj+/M8729HRie3tb189d1dd\ntWr7pV9atf3Ij6za/vW/XrW94AWrtic/edX2T/7Jqu2yy2xtLdt97rNq++IvXrU95Smrtm/4hlXb\nt33bqu3lL1+1/Zt/s2p7/etXbe9858nvR0ed7b/+1xOb0/sv//LE9qlPdbYbbzyx3XJLZ/vMZ05s\nN9zQ2W6//cT2R3+0qve737167t7yllXbq161avuJn1i1/cAPrNqe/exV29Oetmp77GNXbfe976pt\nb8/W+/M+b9X2ZV+2avtn/2zV9sxnrtq+53tWbS996artZ35m1fZrv7Zq+0//adX2nvec/H777Z3t\nQx9atX3sYye2T36ys33qUye2D36ws91554ntfe9bPU9/8Aertje8YdX2mtes2q68ctX2ohet2p73\nvFXb137tqg0AALYDScfJjMwAqFwCAIBJ6VfxSMtP+X329lZt97rXqu0e95jW11Wc+L533NH99Pvi\nqhz8ygZX6XL77Sc2V+ni226+efk76aQqyt+fq3zoV0D0ueuuVdux8V+LXF8LS9uQ71y1tXyd3rve\n/5qsvv7933c/fX2cfv72H/tY99OvcrPGhTt3/phy3/va1dbHGhf+OCz1PTy0z/sctLV8XZWZdX3v\n7JzYLG3ddfvZz57Ycq/5T3+6++nr7c6xdV59xmg75poHAABwkFwCAIBmnDmzajt71t7WCgz9qUQx\nm7VPf9rZGF8XjPm+LpDzt3PBmB/kuSSDH2i6BIQLVlO+fgLC8nWJDz8YdOfdn3ZlJfBy9bHO5f5+\nnm8ocXh4uGqbWlvL17XL75/rgx+E19B2iK9rn5/Acn3yEwe5+ljnI3dc5I4pyda7tra17heuX/55\nd9dhS20tX5eE8q9vp62v9xh9Sq5bAACAECSXAACgGVbQcskl9rZ+IsRhBYbWE/WWvi4o9oNAK9lg\nBaQuYPWrPtx2fqAZ87WOm/J1bfa3c8m7VALC0sdK/NX2leprm5vA8n3defeTN7X1iY2LIWPK9dNP\nCFgJiFx9rATEGN9QQnmIPo4h48KdC983lqybg7bWca02u3Ps611bWwAAgBgklwAAoBlWgGJNy9jZ\nse1WsOhPS4ltN8TXqlJyAZ9V2WBVIvgB5Jx8Xd98W64+VjKotq+Ur62VlBgyLqz2bqK2lq/rp5Vc\n8ZlC29CUrpbaWr5u3/452URtLV/Xd/8c1NYWAAAgBsklAABYO6FAZjfzr5QVVKZ8rUSSC+T8ANfZ\n+m93k+zqFmt/lq9VATHE1wWaub5+m52PVQXiY+mT8qnhKw3T1mElKnxft29/uznpM8bXarO1Ptc6\ntU3pE2PIuKihTy1tp7hfOPztxmgLAAAQg+QSAAA0I7UIbWq73EDTqmxI+brANjeRlLK5QHNq3zFt\njgWkPpY+Y7QtSUAM0dbytRIZm6jPmDZb1S1WwilXn7loa/labZu7PlP4jtEWAAAgBsklAABoRovk\nkhVU5gap/nbW03+rEiEWVFqVA1P7jmmz5WslG8YkEUp8a2kbm+626frUbrNVvTa35FJqXLh2WFVp\nqXMyd31q+7oka0onkksAAFAKySUAAGjGVJVL1nZWFYN/HBeE5U5LsWxWoDm175g2W76x6hafMQmI\nksB1SHWLlTDZFn2maPPckkspX9cHa3rjNupTYzxa0wp9SC4BAEApJJcAAKAZuYmFUEA6JNCMvUUq\n9aQ/txJhzBSZ0rVWcgPNIW3ODVKtaofcJEJJssFiSAJiXfqMqW4ZMx6t9o1ps9MslWDIvZZD+xmi\nrduXVYV4WvTJrVzKvV9YepNcAgCAUkguAQBAM8YmFoYkl2pMcxkS3MWOWyupZQWktdscC1xrVbdI\nw7S1pj/lToGbQp/SBF6uPiltWyUdU9Ut1hhonVyyEsVTJFjnqM+QhHdsLS6/8ovkEgAAlEJyCQAA\nZosVfPqMWVsnN8Cf+/SadbV5THWLNCy5ZE13i1WlbYs+6xqPqbW4LMZOi0vZ0GeaNufqDQAA4CC5\nBAAAzRi73k4KFwz5T9xd0DQkaKvhO6RiKtd3Tm12SQQ/mdBCbyu5NFd9Yr4tx+MUbbbermhpm0oI\nl2xrJTjQZ5o2W4lcAACAGCSXAACgGSWJBauSJRXYxCpqhlQJWL6xoM3yTU1LibV5jG+tNpdWLqWq\nHUJjYMjbqrZFn00Zj6k2WxrlVqRJ9pRHK1FsLdSNPvltrnW/AAAAiEFyCQAAmmFVO4SwqhhSVRKx\nV20PqSbAd5yvpXcoiWTZU28Am1Nf8bUXereSSzlrLuUmOjfxPG2LLwAAQIwayaU3SLpZ0vs92/0l\nvVvShyS9S9L9vO9eJulaSddIekaF4wMAwEwZG6Dkrq0zpppgDhUBtX3nVLUxlG3WZ9vGo79dTuVS\nq6o09Gl7vwAAAIhRI7n0q5Ke1bP9mLrk0iMl/f7id0l6tKTnL34+S9JrK7UBAABmiBW0hKqZUq81\nj1VOpKbIxHytwGsK3zFtXld/hxzXVaf4+vYTENZ0OvTZzP5aevdZ9zk+zfqMaTMAAECMGomd/yzp\n73q2b5L0xsXnN0r65sXn50i6StJFSTdIuk7SEyu0AQAAZoj19DtU3WKt05NKLllP4a2ACt/1+/rJ\nxH5yyapKW3d78R3ma9n6iaY5tRfffF8AAIAYraqGHqhuqpwWPx+4+PxgSTd6290o6bJGbQAAgDXj\nAhPrKXmscsl9tgIgaw2e3Cfz+M7D1yWXnM5zby++w32Pj1cr0+bcXnzDvgAAADGmmJJ2vPgX+x4A\nALaQoyPpkktWA5lLLjkJXlzAubOzOmUu5uf2v7ubns4R881Z7LaF79A27+ysr79jjhurilinPmfP\ntu3raR+PBwfS3l53DPcd+sxHn5I2AwAAxNhvtN+bJV0q6eOSHiTpEwv7TZIu97Z7yMK2wvnz5//h\n87lz53Tu3LkGzQQAgJYcHq4GhwcH0r3vvZxI2t2V9vdPAtGjo+5n36+/r8PDLijqP5kv8e0nPaby\nHdPmmv3d319vm8+cOfG77bZ0e0+bPpve34ODbowdHXU2N94uuUS6665lv3WPxRzfbdOnpM0AALCZ\nXLhwQRcuXGh+nFbJpbdJeqGkn138fKtnf7OkV6ubDvcISVdbO/CTSwAAsJm4yiW/Sun4uEso+FUM\ne3snySW3/Zkz0p13dtvv7HTbnT0r3X778v7Pnl2tCLCqHSxbP/DCd7zvPe4R9z0+Xt3OHfOzn13W\n+5JLujEw176GbHPWZ2pfd337lYlHR931fccdJxUy6DN/XwAA2Ez6xTpXXnllk+PUmBZ3laT/JulR\nkj4q6UWSXinp6ZI+JOlfLH6XpA9Iesvi5zskvVhMiwMA2FpckshNg3KBpP/k3Le5QMYFpLu7J779\nfbnt+sGiC1z97UK+rmqmtW8/aJvquHNss0seuWoW57e3d/L9Jve1xXjsV5Rs0pg6POyuY/9adtd3\n/z6wqfqcFl8AAIAYNSqXvjVg/7qA/RWLfwAAsOX0g+NQ0qifcPIDUpd4CAXaZ892FRC+LRSQWr65\ngfsY334gN9Vx191mq1Ktr63z85MNoUoWd8z+9KJ+ELxt+lhB/9zb3Ne2v6aaf8277c+ckT73udVj\nWtVr/XWE5tDXbfPtVyECAADEmGJBbwAAOKX0g5tQ5ZJLLORUNqSSA7Ht8J3W19c7pa01Lvb3l982\nNue+4mtvV3LNz6G9+IZ9AQAAYpBcAgCAZvQDlH7Fgm/zK1n87XzfM2eWkw3WU3ir2iP3CT6+w33d\nWkqpKqWQtta4cBUv/TGw7r5O7TukGmUdbfbHwJBrfn//ZD9z7+tp9AUAAIhBcgkAAJrgkkD+G6BC\nVSuhyiVr6lTfNpen+qfd119Laai2VLfYvrn7W1eb+2MgpOOQcTG3vp5mXwAAgBgklwAAoAlHR+GK\nhZLKpZjt6Gj19eVTVoVsq2/u/vztamsb8p1DX0PbTTUea7Z5qG9pldLQcbGJ+myrLwAAQAySSwAA\n0AQ/WOxXJ4ytbLCmSfXX5aldAbKu6pFNabOlzxhtQ75z6GvIZgXuNdo8xtZqTKWqlGqNi03Q57T4\nAgAAxCC5BAAATfCDSj+AtKqPQmvw5Pju73dBrp9c6lcnlARZQ31DlRKtfefS3xbahpKTuYt8b4s+\nQxIGrfsb0meotqFx4dZh6iec5qTPablfAAAAxCC5BAAATfArl1zQYlUzhYLKfmVDbH85U6fGTK8Z\n+yrwIYHhFG2ObVfa5lx9xmrbT1iO1Wdo4L5p+ow5V+5YflIipM/QaXFWEip0v5i7PmPvFy19x7QZ\nAAAgBsklAABogp9E6FeehJIN/YRTyZS6WGVD7ekhsWqCqX3n0t9cfcZqWzJ1alv0SSUWWvc3pU+u\nZqlxUbLI95z0OS33CwAAgBgklwAAoAmllQ2pN8Pl+oae1re2xSpjWvrOpb9TaRvS++ho+RX2U1SK\nTGVLVSm1Ho8xfVJViCXjItfXTRWMTY2c07WyafcLp6d/3gEAAFKQXAIAgCaEKhas9Vdypknl+h4d\nhddpSQVoY2y5QWBt3xa20KLHqYB0Cm1Dtp2duN6nXZ8x/Y3pk5ryWDIucvV266z5Sa056bPp9wvr\nvAMAAKQguQQAAE2wKhtiyYb+26RCvtZ2/TfIWb45U0ssW+m0lNR0k1Lflm2O+cba7CpG/MWmLX3G\naGv5xsZU6C2COee4lj4u8VFbn9xkQ60x1d8upk/ulMeh4yJW9RS7vqfUp/b9oqVvzrVsnWMAAIAU\nJJcAAKAJflCZqloJVSwMWSw45JtT7REK3PFNV7LU1nas7zrOU+7+So/bTw5MPS5yr7OptLV816nP\nJvvmnmMAAIAUJJcAAKAJsSqG0LSZnAqIoQtG7+/br7DPrRLICfq30TdW2dBa2zG+fb3nfI5jvmOS\nULXanNLHSlRMPS42Uds5+OaeYwAAgBQklwAAoAmpSoR+UJmqgIgFszm+VltyKgJCVQIlvlZwN8Vx\na7R5Kn1q+5asw7TJ+kxx3NJEUi1tS+4XOeusbYq2U/rm6gMAAJCC5BIAADTBDwz7gUxoEWCrisEK\nNGv55lSKWLZt9XWVPvv789Cntm/NqWhT6VOSSKpxXDcGhkyLq61tLFGcMy426dpbl2+uPgAAAClI\nLgEAQBOsAMWaghGrYmjtmxOkl1YEbLJvaZXJnLW1fKc4x35irtZxU7aa48IfAznnOLRdLW3HjEfX\nf39qZAt9Ntk3Vx8AAIAUJJcAAKAJVoCSekoeC258W2nwGfINrctjBWhDArnchEGr45b6ttBnTr5u\n3Shf79wFnnPPsVVRUlvbWm3219Maeo5D29XUduh43Ntb7udU+mySb64+AAAAKUguAQBAE6wAZUgF\nRMw3t1IidFwXHPerHXID91Qgt2m+tfWZm+/+/rB1mHLPcW5FSelxcxMGpcetdY5zr9F1j4tW+myy\nb+45BgAASEFyCQAAmmAFKLGANLWQb2mVUso3dNy5BoFT+JacpzHneC6+h4dlVUAtK0py99cisTDm\nHIeu71r61L5fzPXam8LXX1OtVB8AAIAUJJcAAKAJVoASCmRClQglU2T6wVKOr3XckmlIOcmGTfIt\nOU+5+tT2HaOtNR77UyPnrM8YX/ddf7H2sfpY13ctba2qmrFtnqs+U/geHXWVezkVaFQuAQBAKSSX\nAACgCbnJILddrbVWQgFprq8LxvrJhpwKlZI3gOX61q5kiW03hT7r0jZ2XH9q5Bz1sRILpWOqlT5j\nprZZaySlkhxj29xfd6vm9VPiO2ZM5fgeH58kT2tcPwAAAClILgEAQBNyExWh6qNQRVLtqTl93729\n7ul+TvCZCvqn8HXBZw3fVPVIDX3WpW3JeJyTPlYSoeSNZ631qTWlLjeRNLbNbt2t/iL+U2vb+n5x\nfNz1058CN0YfAACAFCSXAACgCaHAsGTdpJAtJxmS8o0Frn3f3EqRFrbUcWPVDjFfNxUsNS1ujD61\nfcdom0pU9PUeok8s8VNT25I3nrXWJzfhlHNca9piSbXV0PvF1NdeylbDt/b1AwAAkILkEgAANCEU\nGOZMy8i1xZIhtfbnEgbWujypQHMKm5VsyPE9Olpdf2WMFlPYxmhbsr+aWgzVx/mWVLek9G6lT07C\nKcdW81ouuV+M0Weob02buy+lpsCNOZ8AAAApSC4BAEAT/EAmNgXD2i5liwW4uUFvqH2Wb0k1U98W\nqjKp5WtNken7uvVX+tOkhp6nXH1q+9Zuc6xyyU8m5upjaZGjT0rbnARWaky10ic1Za3kuLFrueX9\nop88rnnt5eozhbZj9AEAAEhBcgkAAJpgTcGIPSVPTd+IBZpDpj9ZxyjxnVPlUk5lQ+gtUS31qe3b\nos2hBMTOznJQPmbh5pba5tpa6WMlKobqY/nmTL0be7+oqfc67gNTXD8AAAApSC4BAEATSqoJcqtM\nhlYuhXxznuyHfGsv3Nxycd+xfR2jT03f2m0uGY9zXbjZ2i5UqdZCn1TlUslxc6pqprpfuHPXnwpb\nS9ua94sprh8AAIAUJJcAAKAJseqE3Aoa66n7kMqlFr6tK1lyffu22ELdtc7TGH3WpW1oPOZUt9TU\np9Q2ZPHuWKVabX1yNcs5bk5VzVRjql/NVFvbmveLKa4fAACAFCSXAACgCaGgxQWBsafplq8fQKae\nxMemedTytdZpGVqNMsY3VKXU8jyN0Wdd2qaC6JRvaFH3dVcpWbYp9Qntb8hxY4mkOYypmtrWvF9M\ncf0AAACkaJ1cukHSn0t6r6SrF7b7S3q3pA9Jepek+zVuAwAArIFQcBOa0hKqcLICyP7+Qk/iY76p\np/gp335lQywIHBJU5vr2t2vR16H61Pat3eaS8dgPwC19jo6W39iV0rFUW8vmfqamNbXSJ1TNNLU+\nU9wvhugT8q15v5ji+gEAAEjROrl0LOmcpMdLeuLC9mPqkkuPlPT7i98BAGDLSAXpfVvoaXrMlqpY\naHXckO+cFvdt3Vd8V9flOTyc/tX0czhP/YqXuehT+34xh+vbsk1xjgEAAFK0Ti5J0k7v92+S9MbF\n5zdK+uYJ2gAAABNjBSilT85T1RhWgJvrO+a4Id+cV9OHqhNq+U7V123wHTse9/a66rXYVLmx2lrr\nae3vz+cc5yRv1qVP7ftFy+s219f99Cvkprh+AAAAUkxRufR7kv6HpO9e2B4o6ebF55sXvwMAwJZh\nBSgukBlSFRELZof4jjluyHd/v/ucsw5TblBZ6jtVX7fBd0glR2o8ttT26Gh1oe51n2OrLXPWZ8z9\nImfdrdbX/LquHwAAgBT7jff/v0j6mKQvVDcV7pre98eLfyucP3/+Hz6fO3dO586da9JAAABoQ2lw\nY9mOj/OCz77v2OPW8HXVJVOsydKvYpi6r33fg4P1HHeIb0nFR04yJKVPqba5iYV1nePd3c3SpzRx\nZt1X3Pc1tbV83U+rUm3q6wcAADaXCxcu6MKFC82P0zq59LHFz09K+m116y7dLOlSSR+X9CBJn7Ac\n/eQSAABsHn6AYlUO+AFUKOBxPv3tUsHSmTP21A8rcA0Fs0N8/UoOFxD6gaHfvpzKhlxfa1rc2L7m\n6NPCdyp9pPLxmOpvKGFgTX8KJSVSVStz08farpa2/YRODX1qjSmXeKmlre87x+sHAAA2l3Pnlot1\nrrzyyibH2W2y147Pk3Sfxed7SXqGpPdLepukFy7sL5T01oZtAACANRGqHGj91D13f7V9Q212STLf\nt1Zlg5uek1qDp0UVR4tqman1cdvV7G/Jq+RT2/Vt265PaH9zvl8M1Tbnmp+TPgAAAClaVi49UF21\nkjvOf5D0LnXrL71F0ndJukHS/9awDQAAsCas4M4KIGNBoPvet/WDoP391WOE9peqYhjjmxMIu+9q\nrcnSqq+5+tT2nVqf0qRETqLCJfqOj7v1kXKShJa2ztavSttmfUL7q6lPzTYfHi6vw7Szk69t/5qP\nJYrnoA8AAECKlsmlD0t6nGG/VdLXNTwuAADMAD+4iwWQ1nYuuHGffVso+MzZX+q4Y3yttvR9/XWY\nYkkEZ7PeFJZ6Df1c+trCt3abU0mJ0jYfHnbbuCSDS2xYeg955fxc9bEqXoYcN6R3TX1a3C/86ztX\n2/41P/frBwAAIMXuuhsAAADbiR8E1ZqCUnOah7XdFG12wadf2WBVO/RtR0cnbwrbpL7W9G3R5qHH\nqK23tV3fNkd9UpVGJcfNsW3C/WLIVLm5Xz8AAAApSC4BAEATrKqD2FPynO1Kp3nEfEPbDfXNbbML\nKnMqWay3wG1aX2v61m7zVOMxpa21nT9Nas76xCp5So+7LfeLvb2TSsPQGOhf83O/fgAAAFKQXAIA\ngCb4T7/7gUzJ0/QxVREx35St1De3zS6ojAWf7rvUQt2b0NeavrXbPKRaZMh43N8/+d4fA7HqltOo\nj3W/mEKf2teQS8zE9O5f83PXBwAAIAXJJQAAaIL/9NsPWnKepvtP5/tBVclT95RvzFbqW9Lmvb2T\ndXmcb3+KTCjQ3sS+1vKt3ebcSpYW4zF3Pa3TpI91v1iXPrX7G6pc2hR9AAAAUpBcAgCAJqSqE2pU\nLNSulJiqysLyDVWttGrvOvs61Ld2m0O2Kcajr7d709im6pN7TlLHtbZblz61x2PqjYFzv34AAABS\nkFwCAIAmjHkSn1uxMLZSomZ1x5gqC5dsmGM1Sou+1q5GGXPcvm2q8ei/wn7T9ck9J6nj5lQaber9\nop9MdNNeN+X6AQAASEFyCQAAmlDylNw9iU9VmQytREhVRdTwzW1zyNety3N8PE1719nXob6127yO\n8egSC37wjj7p87np9ws/mRjaZs76AAAApCC5BAAATQg9JQ9VIlhBYG6lhBUYpXxjgesQ39w25/hO\n0d659HWdbY7tr9V4PDrqpsDt7Kzqfdr1se4XU+tTu78umeS2OzraTH0AAABSkFwCAIAmxALIUMBj\nPTmP2fzAKLfaIXbcMb65bc7xnaK9c+nrOtucCsBbjEfnJ63aTrs+oUTKJt8v3HpaLpmYur7nqg8A\nAEAKkkv263jWAAAgAElEQVQAANCEWACZ++S8X3WQU3kSspVUNgzxzW2zVdngAlC/umV3t7NZ6/LU\n7msrfWr7ttCnpJKjxnh0ftKJDX3KK5c25X7h/HL0nrM+AAAAKXbX3QAAANhOYkFQzpNz55t66h6y\n5fiOOW4t36Oj1coG55dT7VCjvf2gco7nqYXvOsajn2ywKpf66/Kgz+bcL6z1lJxfX293fUvLyeO5\n6gMAAJBif90NAACA7cQKUPzqhFRQubfXBV99mxUY5QZLoSf2NXxDwVyqv6Hg09n87UqSDWP7mqNP\nC98p9bHGz5j+5ozHvrb9SjVXrXYa9en7rkOfMf3tT4GzKtX8MWAlj1voU+N+AQAAkGJ33Q0AAIDt\npPbUj5JpHn2bFVTl7i/XN8fm/K3FnCXbtre3bEsFhjX6ui7b1PrUPgd+4B86hlW5ZI2B06hPybU8\nx/tFrrYxW219at0vAAAAUpBcAgCAJoQqRUJP3YfYxgRVufvL9c2x+VUruTZXPRCrxKjd13XZptan\n9jnwg3JXydKvyOlr6yeS/DFwGvUpuZbneL/I1TZm291dnho5Vp9a9wsAAIAUTIsDAIAmhJ70lzyJ\nd59Dvqmgqu9bWolQ4pvT39wqBucndccNVTa06uvQqpCcapSY7zr0yWlfbn/7+0tNk+onkvpjYG9v\neVH3FvqU+LbWJ+darqnP2Db3fXO1jV3zbrz4vnPQBwAAIMXuuhsAAADbSW51Qu2qg5gt9XR+jG/f\n5r8FLqdiwbf1g89+ZYMUXpenRl9r6VPqO6U+U4xHX8ecRJK1nbXQ+7bqY7Vvk+4Xudqmrvn+dnPQ\nBwAAIAXJJQAAaIIftPiBTKwSYchTd2frB1+5gVYt336b/UqEUMVCbkAaq3ao0ddY/8foU+o7pT45\ntpL+Hh+faNNPCMa0TSUTLdu26hNr3ybcL3K1TV3z/fvFWH1yzkmqrwAAAClILgEAQBNCgUyoEmHI\nU3e3Pyv4HBIIj/HttzlWiSDVSTbU6Guq/2P1qZnoq6lPylbaXzcWfW2tMZCjbSiZ6Pe1vy7PNugT\nat8c7xfWelq52qau+f79Yqw+sXOSqw8AAEAKkksAANCEUCCTE1SOCWZLqhNq+vbbHAoqhyYbLN8a\nfc0J3GsmDGokG2odN1TdMaTNOcnEIdpaNn9dnm3SJ5QMmeP9or+eVstrfg76AAAApCC5BAAATRgS\nzKamb+RUXgwJSGv49tuSE1SGpsPk+jrbzs5JG9bR16l8W7Q5VgUS8k2tp2UlnIZqm+u7DfqE2jLH\n+8UYbUuv+f6i7uvQBwAAIAVviwMAgCaEqgRKAkj3vW/LrUTIDUhr+fbbkgoqY9Nhcn1j+5uyr1P5\n1m5z6Xj0z3v/LXCWjim9h2pr+W6DPtb+arZ56P3CJXb6Y2CotqXXfGpR9yn0AQAASLG77gYAAMB2\nEqoSiAU3sQqDWLDk+5YG0bV8+23OCT77QWqpb2myoVVfp/Kt3eZUoF6ibV/HocmGob7boE9OMmgd\n94t+MnGstmOu+XXpAwAAkILkEgAANCE3gMwN+mPBZ05QmXPcob5u2/40qVjw6Wyhipcc31CSY3d3\ndapcqK8t9antO0bbWNVKqa+lT0lFUqm2fmIh5LsN+sSSQeu8X5Reeyltx1zz69IHAAAgBcklAABo\nQiyQsZ6Sp4LKWFAVeuqeUwFRwzc3gAwFlUN9rYRGbLvc/tfSp7bvGG1DwfYQ31RyYKg+Y2y7u/F1\neTZBHyvJMfX9IvUWuBra1rhf+MnjKfQBAABIwZpLAADQhFAgk1NB4wdVuVUM/e1KKiBKfP31V5xv\nbgBpVaMM9Y1VT4S2s/qaW+3Q12foOY4lB1yQ3ULb3GA7xzdX21J9Qr45Y8BN2zo+LkuulejT8tqz\nxtRQfca0uf8WuBbatrpf5F7LQ84TAABAit11NwAAALaTUCDjJ2X6tpwAMmTrVzvkBJ9DfHODz35l\ngwsC+9UOJQFkzJbjm1sVUkufUt8a+pQcN2RL+Vra9s+707ZEn/646G9XOqY2TR+rfUP0CfU3534x\nRJ8hvi3uF6kqrTH6AAAApCC5BAAATYhVLg2ZvhF76l5S7ZAzHSTmmztFxqpsGOKbm9AI+fptHnKO\np/StoU+Jb2w7PzkghZOJocqTIfrUHlOnQZ+S8Zhzv6ilzzruF9ZUuZzkWo4+AAAAKZgWBwAATUg9\nOY8FN36gFfMtCSqttuROG+knG2LTV0oqFnJ8/SqYIb5+m12g6a/Lk6PP/n7+ecrVtpU+pb6h7Uq1\nzU0YxPSpPabctv46QtumT8l4zLlf1NJnnfeL/jVfQx8AAIAUu2s67rMkXSPpWkk/uqY2AABAQ1yV\nkv/k3ApkxlQx5FQilOzPqmKQlqtWcqsJUtvl+rrzN9TXt1nr8liVDbX0KfUt1Wesb388phZzjmlr\nBf2l+sR8c8ZAznE3WZ+x4zHnfjFUn5q+Y+8XKb2H6AMAAJBiHcmlPUn/Tl2C6dGSvlXSl62hHQAA\n0JBQ5UCsEmFItUM/QRKrgAjtL7RdqErAryYYWrGQ6zukcim3zSVVIUP1KfEt1afUNxVs99fTKtW2\nnwyqoU9s/AwZU3PWJydR3Pp+MUSfud0vUnoP0QcAACDFOpJLT5R0naQbJF2U9OuSnrOGdgAAQENc\nIqkftORWLPQDoxpP4kttuVUCVmCYW3WQ8nUBXq3qiZzKhpb6xHxb2nKC7VrauoRgDX1ixxjSZrdt\nv3ptDvqE2tJqPLo3P4YqE1vZWt8vUtf3EH0AAABSrGPNpcskfdT7/UZJT+pv9Pa3T9YeAABowEc/\nWhb0W0GQ+979zPEN2fqBlr/dxYu2b26VgBUY9itZ+oFhrm+ocilWsZDTZmdz0+TclLAzZ/L1sc7x\nGN/cioohvjnBdi1ta+rTP0aNMeX77u/PR5+SRFKN8ei22dkZp8/c7hf+cd1YHKvPjTdK732vAAAA\ngqwjuXScs9FLX3r+Hz5/wRec0wMecK5RcwAAoAWf//nSYx6TH3xaQaD7HPJNPXXv+6YqJfq+QwL8\n3MRCrq9vS1VFlLTZ+fangJXokxu45vq64DlXnxJt+8c9Pj45HzWSRjlVK0P06Y+fGmOq75urT+n1\nU6pPyLfWeOzfL2rpM7f7hX9cP3k8Rp+f+znp939feuhDBQAAG8anPnVBt9xyoflx1pFcuknS5d7v\nl6urXlriQx86P1V7AACgIdddlxeQWkGgC4h8W6qKwQqWYseI+aamqpQkFkqmvvS3y0k2lLY55pt7\n7kKJhaG+pfqU+FpVSv55v3hxnLah5EALfcaOqb5tLvqUJLBKx2MomdhKn3XeL/zt+snjs2eH6XPx\novR93yf9wA8IAAA2jnOLfx07O1c2Ocpuk73G+R+SHiHpCklnJT1f0tvW0A4AAJiA1NSXkiqYWCVC\nadBrVbK49VdiAWRJ1UEq2TB0u1hQmdvmmK+zu6lyQ/Up9Y3pM0Zb67g5565EW6uSpZU+tdo8N31K\nE1gl43FqfdZ5v7COG0omll4/AAAAIdZRuXQg6Qck/a6kPUm/IumDa2gHAABMgBVA5la8+JVLlm8q\nMOr75lSy+Iv7Ops0rJKltDohdNzSRFJOm0OBa6h9Kc1KtS3VZ4y2Ib1LK4Ni2vaD/tAxWumT0+b9\n/XHattYn51oeOh775/Pixbr6zOl+kUp+ufHkkscl+gAAAIRYR3JJkt6x+AcAAFuOFQTmVry4zzHf\nUGCUqnCKVTbEqh1yqw6GVJ7kHtfZxrQ5Fbj225fSrFTbUn3GaJur91ht++d9Sn1y2nz2rL3d7u7y\nou7r0ifnWs7R1kqa9BMwd91VT5+53i+c3v3xuLNzshZTibYklwAAIMbuuhsAAADbTWoKhhXc5FZF\nxAKjmG//FeRW8ia3uiWUCGjtG6ueyDluKnDt+9bSp7W2ucedQtsp9RnT5lCyYWp9amnrrm2/CrGl\nPttwv8g9xwAAACH4MwEAAE3pB4uhSgQrqMytYrACo5iva0co+MytJrCCtil8c6snSpISqcqYWvq0\n1tbydclEawy00mfsmCrVp/Z4nFIfZ7O2GzKmhpzjKX3neL/Y3V2tXrPOMQAAQAiSSwAA0BRrakUq\nqMytiggFrinfUGIhtzohFlRO4RuylRy3JLkyVJ/avjnaWr5HR8uVLNZ5H6tPaLup9Kk9HqfUJzQu\nQlVUKd/cZFAtfbbhfuGuD79v1r0bAAAgBMklAABoihUY5gSQoYA0J3BNBbMlU0ZSwV2ObyqhUXrc\nscmGIW12v8cqG8ZqG0oYjPUN9dW3jT1P/naucmmuYyrHd2fn5Py21ifm62wlviWJn1b6bMP9wj/H\nJJcAACAFySUAAGhK7hSZ1HZDbc7efwtcyZQRaZzv0Kkq7rhWYDh1m611eWprayUMSn2tKXAt9Ylp\nNtcxNdS3hj5DfEvH1BDNauuzzvtFTvI0x5fKJQAAKIHkEgAANMWvOrCqE/qVMaHtcisbrCqGWICW\nW9kwxtfZhh7X8s2pyClNVpW2OaVPqbahpESJ79HR6hS4lvrEgvl161O7v7u7J8m7KbWNjSk/mbhO\nfeZ0v8hNOKV8+/q4/QEAAFjwZwIAAJrSDxZDlQhWAJlTxdCviohVMeQGcrV9rUqEkuPWrmIIJatK\n25xbZZKrbW5iIeabe479YHmMPqH91RxTQ/WpPR776/K01jbnfuEnE3P1meKaX+f9IifhlOPb14fK\nJQAAiEFyCQAAmpIKNHOTEjmJJMvXSiLkBnK1fEuTA6lERaoSobTNpQG487XW5Rmj7ZBkVd93SJA+\nRp/Q/mqOqaH6tBqPfptbaptzv5iyr1P51m7z0PtFXzOSSwAAEIPkEgAANMWqWBhS3TLUNxRQ5Va3\n1PAtrUTobxfaX602x6odSts8RltrrMR8j49P2rUufUK2mmOqpj41xmOsuqWWtv52vt79KXBT9nUq\n39ptHnq/8JPHJJcAACDF/robAAAA241VsZAbVLo3kw3xdUkZK6DKTejU8i1NJPW3y62MGdrmWLVD\naZvd76GFv/v6hHScUtsx+oSSQXPVp8Z49G2ttPW385Me/SlwU/Z1Kt/aba4xHkkuAQBAit11NwAA\nALYbP1jsVyI4m5+U6Ntyq55c8CSF3wzn2/qBV6pSJObbt8WqTEp9Y9uNaXMq+BzaZv+tcqXa9m19\nXyvZsG59ShMG69anxnj02xzTp0TbnGt+zvrMZTyGjjv2fuHbAAAALPgzAQAATXGJhn6yYcgUGcs3\nlGywArTSaSS5vqEKg5xALuXrKpdSAfOY/sYC0hr9zdU2lDjMSTasSx/r3KU0m5s+pePRb3NMnxJt\nXWVM7Jqvpc+23y9i94YxbaZyCQAAYpBcAgCApvivhB8yRSaWlOjbUlNLYgHaGN/cIHCIb6xSolZ/\nS22l/c3VNlfvOekTGj81x2NrfUrHo29zdn8a5BBt+4kkl5DOeQvc0L5u6/2ips1vC8klAACIQXIJ\nAACa038S74JvV83k26S8pER/MefSp/V+gDbWNzcIHOJrVcHU7m+sUqJGf3O1Dekd2m4O+sR8N0Wf\n0vGYavMQbV3yol9RE5viOhd95jQeW7aZ5BIAAMRgQW8AAGhO/0m8vy6PVdngghv3vVSnSqmVbUgl\nQq5vLKhsUZ1Qo819X0tbq5LF0ts/prScbJiDPqFzV9q+depTOh5TNkvblM2dgyn0aXEfuHhxHuOx\n1TnwxygAAIAFfyYAAKA5scDIqmzoJ5Kk1aTEkKfwrWxDKhFyfV2iInd/Q6sTSo5R2t9cbWO2FvrE\nAvcx2rqE4KboUzoeUzaXKPQrE1N6Hx6u6t1Kn22/X7Q4B04fAACAECSXAACgOVbA2A+WUtUtzrf0\nKbwVpNb2DQVyQysR+scNBZW1+pujz5j+uj70p0GGqlak1XHRQp9Y4D5GW5cQ3BR9Ssdjqs2uMtFv\nc0xbawy01Gfb7xcllUsl/SW5BAAAMUguAQBAc6wEibOFqhj8pISz+4uDh564x5IyrXyt7Vr6+rZN\n6G9oGmRIb389LfSZf39z2uzrnXPNr7u926RPjfFIcgkAAFKw5hIAADQn56m7FXy6Specp/WxIDAn\nMGzpO7bNoQqDWm3O0ad2f/3Egu+7afqU+B4cbI4+tc+z29Zd0znJxE3t6zrHY+i4Y+8XJJcAACAF\nySUAAGiOFbT0n8S7AEhatcX8pJPt1jXNJeU7ts1939j+hrQ5R5/a/fUTC87XVTZtkj6Wr0sI5rY5\n1Y916NPiPFtjYB36bPv9IjR+xrTZ3w4AAMCCPxMAANCcVNASqmRJBUU5T+FDQfqUvmPbHKtaqdHm\nHH1q99eaKreJ+li+LnG2yfq0OM/97dalz7bfL0LjZ0ybDw+pXAIAgDgklwAAoDk5gdHOTmf3bblB\nUW7wPaSaYKivH4yNbXMoCKzV5tKgNzcQzvE9ODj5PKU+LfvqEoLboE/ta+jgoEsouvXT1qHPHO8X\nLdtc635BcgkAAGKQXAIAgOaUBkbu8xSVIq18j47qtbl1f0sTXUMqL0K+Fy8u+0nLgewU2k7V103U\np/Y1dHDQ/Z5anH8b+rqO8diqzSSXAAAgBWsuAQBAc6ypFaHgpp9syPWLPekf+lS/lu/YNpdUMQxp\nc4k+tft78eJy0Opsm6JPaLuSNvuJyLnpU/saGqLtpvZ1XfeL2L1haJv9MQoAAGDBnwkAAGhOrBrD\nD1r6yQY3Ve7gIO1X8qR/at+xbQ4lIOba5hLffnLJSjDOWZ9QgmjT2jzVNTRE203t67ruF/3j1rhf\n+EkoAAAAC5JLAADQnNAT8cPDbv0V3+YHn5ZtTlUcub5j29z3rV0Vkdpfy/729e4nnOauj+Xra7bp\n+ow5z249LZck7mvrtnVT5abSZ9vvFyUVSSVtJrkEAAAxSC4BAEBzQk/OXWLBDz79KiV/O2fz3zCW\n+/TfejI/pe+QigX/uLltGdrm3P2N7e/h4clnS1vXln4CYs76lLRl7vrUPs8pbd12ocrETerrXMaj\nddwa45HkEgAApCC5BAAAzQk9OQ9VrcQql9xCwNb0mpIn81P65u4vtF2ObUybx5yDkv6mtLW2m7s+\nY7Wdkz61z3PO9d23baI+cxqPoePWuF+QXAIAgBitkkvnJd0o6b2Lf1/vffcySddKukbSMxodHwAA\nZoRVfeOCypzKhpQt9mTeD4r8gGpK39j+co4b2l+tNlvbjWlzyDdH27096e67N0efkK1mm6fSp/Z5\nTmlrjYvYOmtz7utcxmNsrIxts58UBAAA6NPqbXHHkl69+OfzaEnPX/y8TNLvSXqkpKNG7QAAgBmw\nu7u6/kos2ZCqbun7xp7q+0FRKsga6utvF0sOlPj2qw5CyYYa/c3tR26bXULM+ZRo209KuGmQ1ro8\nY/Wp1VdLH3eOz5yZpz5jxmPuNZTSNndctOrr3O4Xvu3uu+vpU+t+4esGAADQp+UziB3D9hxJV0m6\nKOkGSddJemLDNgAAwAwYGlTm+g55ql/Tt2RqSa6vlagoDQJL+hurjClt8xht+9u5aZC5lSxD2zum\nr5Y+tcdjbX3GjEerzYeHy4vz52jr26zrOyfBOKavc7tftNKnxv2C5BIAAKRomVx6iaQ/k/Qrku63\nsD1Y3XQ5x43qKpgAAGCL2duzF+ruT5HpJxGcrxV8+r5+MF8aBNby7QdoOcmBob5DKjSG9HdMm8do\nG1r0GX3atbnEN5QM2dnJq0yMaWv5uv2mFnof0tdtvF+EkkZj2kxyCQAAUoyZFvduSZca9pdLep2k\nn1r8/tOSfl7SdwX2c2wZz58//w+fz507p3Pnzg1sJgAArJtQJUvozXBWdUvMN1Y9UlJ1UNt3f7/d\ncQ8O6ra5tLojddwx2qYq1fw3Bq5LW8v37Nl2x62tT23fWtrGfDfhmp+rb3+70uP6NgAA2CwuXLig\nCxcuND/OmOTS0zO3+2VJb198vknS5d53D1nYVvCTSwAAsNnkBpUl1Q4la7LEArRWvmOm5uQmG2q1\nOTeYjSW63Ofa2lq+oUqWqbTNDfpb63Px4nr6e3DQJfeGVClt0zXvksfrvtdMcb/wbQAAsFmcO7dc\nrHPllVc2OU6rPxMP8j4/V9L7F5/fJukFks5KeqikR0i6ulEbAABgJoSCSmvqVO6C3r6v/4apWFDk\n20oDqlJfKzlQ67ip7UrbnGpLqs0ttc313d09qWZqrW2OPjWPO1af2v11591dd621tXzXpe0m+ta6\nX/i6AQAA9Gn1triflfQ4dVPePizpexf2D0h6y+LngaQXKzAtDgAAtodYUNnKZgVFoaf1JdVHJb6p\nyoExx7VsrpKltM2xoDKnzS11zLXlrsszh3ExtT612zwHveekzyb4xqqUUtv1KxMBAAAsWiWX/o/I\nd69Y/AMAgFOCC1D8YDFUnZAzbSbHN1TJUvIE3wruhviWVg4MPe5ddw3zTSU0cipZamlbUsmSO3Wq\nhT5ufaUptB2rT+3xuA5t+9tNfe3110/bhvtFrm//3g0AAGDBMwgAAGiOFVSWViyU+rpKlty3jKWq\nj8b4Dqkm8I87tGJqqjbX1NYKZof6TqHPWG3XMaZKfF3Vir++Ui19Snz7281dn3XeL0JJo9x7jfs+\npAUAAIAFfyoAAKA5tatbSvdX66l+KJAL2VpVIpQGszWrJ1yA69tOY+VSzDc2zlrrU9u3pT4lvv3t\n3M9U8njstTdUn3VpG0tWDa1K609pBgAAsCC5BAAAzald3VK6P7ddbF0ePxmUSkLl+IYCviHH7fum\n2jKkzbGAtF/J4s5jC22tYHaob+45HqOP5btOfWr3t6U+Jb45Y6q2tqXXfC3f2m0uGY85+gAAAFiQ\nXAIAgObEKhFyA82+b60FwkOBXOm0lJyKhVzfkiktNdocq56wKhty9JnLos8552mMPmO1ra1P7TbP\nQUfX5pLk0pT61PZdZ5tztAAAALAguQQAAM2JVSKkKhtcUJmqYsj17dtST/qt7XJ8S6bIpI5rVa3U\nbHOoMsZab6dEnyHahmwttR2jT+jcTaFPzTaHfFvqU+KbM6asddbGXnullUE1fGu3OTQereubaXEA\nADAUkksAANCcUAA5tPooN+FUUt1SUpGU65uTMBgyfS6VgBhaKdE/xhh9alWWjbHt7NhvDAxVBg3R\nJ3TuSrQYqk/NNvvJRD8pMafKpSFjqsa1MvS6Heo79n6Ru7+hWgAAAFiQXAIAgOa4wHVI0sjZcn1L\nbbGn/6mpKrnVCamEQeq4OVNfxrTZJbBSU2Rq6JPyjdlKfXd2ViterHMyRp9Q0F+ixVB9ara5hj5j\nbK3GlKvK8e8/pVoMvW6H+o69X5ToPUQfAAAAC/5UAABAc0JTWoYsyu37prbLsVmVQVb1Ucg2NJFU\nctzcqS812uwfY6w+Q3xjthq+JeczR59UgrGmPjXb3Ne7xjkeY2s5pvq+1hiorc+6tC3Z31B9AAAA\nLEguAQBAc3IrEWLVCblBb86T+P4bxULTSFJTk2K+oYBvyHHH+Oa2OfQWuDH6DPHt61Pb11+XJ3ZO\ncs/xWG1LxlSt4+7u5um9Dn1CvjXH4xT6rEvbkuMO1QcAAMCC5BIAADSnJBkUCm76viVrOKUqWax1\neUIJopxAzgoWc4PA3ClRub65ba6tzyb5boI+oSqYoW3eJH1q+5acp5JrvqbvGG37x3XJRPd57DkG\nAACwILkEAADNCT0lL5nm0vfNWcMpVtngjuuqN6zKhpypbbEKA7ddqW/uWitDfEuqGMbos0m+bvvQ\nW8aG6DPUd0iFypA2b5I+tX3HaLuJvtb1PeYcAwAAWJBcAgCA5uQ+JS8NePq2kleax45bEtwNnZaS\n8s1NYNVocyt9Ntl3rD79MTBWH6tyacyYmsM5XpdvbX3m6Gtd37XOMQAAgAXJJQAAaM7eXjjxMyTg\nyd1fLKiKHde9wj73DVO502FaVK3kJJz6vq59fmVDbX023Xed+uRUqpWMqf6UqFbnuMa1N4VvbX3m\n5ttfT8u6vsecYwAAAAv+VAAAQHNcgGsFN0OCytIqhtLjulfYhxZ9zgkMQ9uVBpUh31DwmeNrLebc\nQp9N9h2rT06CcUxFUsmYmus5XpdvbX3m5mudp/71PeYcAwAAWJBcAgCA5lhBi/U0PfaEve+bY6t5\nXPfTqmYqWQclt3oiVrWSCj5TFS+553iMPpvuO1afnARj7XER8p3qHLe69mr7+tfyHPSp7VuyyPmQ\ncwwAAGBBcgkAAJrTqhIhZZuiAqJk7RZ/KlrM16pi6E9jK/E9Pl4+7iZVmazLd0p9ao2LkO9cz/Gc\nfNepT23f3KQRlUsAAFATkksAANCcUMBTkjSao69fOeDbSqsOLN9UZUyu78WLq1PgNukcr8t3Kn1y\nfXMrpnJeOT+XczwnX7fO2jq0HePr9PbXV2p9jgEAACxILgEAQHNyg5axgVHOorU1jptbdRCz1fBN\nTcfL7WsrfTbZdyp9csZFbls27Ryv29e/X7gErJVgrH3d1vQd0tex5xgAAMCC5BIAADQn9pTcmoKR\n2i43WMo9xtD2pSpKYrZcX6uywbdZCY1Y1UrN/oe2G+Nbu31D2+y/MXCMtil9csZFqrolpveU+rS8\n9lqNx1ibXTVQydpMpdqOvV+sQx8AAAAL/lQAAEBzpnrCPuZ120N8SytUhkyV29uLT5MqrWSZ4hzP\nRZ8xbXZvDLQqWUqmOpWOgdxxsbvbJT389bROkz5T+FpjoOS6HaNt6D4wpDKx5JzknCcAAAALkksA\nANCcUNAyJuCxnrCXvG57yHGtZENOBZGz9QPD3AV6c6ZJ7e11/c9dXyn3HE/tW1Of2m3e3T1Zlyel\nxdCpbbnjwum9uxvX+zTpU+o75H5Rct2O0dbaX//6nuIatWwAAAAWJJcAAKA5udMtYsHNmO2GTJHJ\n8S2pZLGmOuUu3Bzz9W01+1r7vA89x1P55rTZBfapaVK5NisRWTJ+5qZPy2uvVX9L21xy3Y7RNqT3\nHDpVVbMAABQHSURBVPQBAACwILkEAADNCT05t16PnfPK7JL9DZ0i06KSJXfaTG61Q99Ws69j9Rnq\nW1OfKdocGwO51S1DfNFnPf2dSltru7noAwAAYEFyCQAAmhN6ct6flhKytai8GHLcvq9fyWIlg/yq\ng5zpbpZvLHD119up3dex+gz1ranPFG1OjYEh2samWPl6o8843yH3i7HXbY6v09t9rnGOa94bAQAA\nLEguAQBAc6yn3zWSRmNstZJVfVsosVA6dSrl646Zs75Sqq+t9DmtvikdS8eFC/qt9bTW3dfUdnPU\nZ0ybx163ub5z6GvIBgAAYMGfCgAAaI57+p1KaMSmb6SesJf4jjluytdalyc0zSU2RSblW7OvLfQ5\nzb5jtbWSk+gzD9/a2oZ859DXkA0AAMCC5BIAADSn9Mn5mCfstY9Rw7a7O/wV5M6WegU5tvnYxmob\nqmRZd7+wlV/LOdpumt4AAAAWJJcAAKA57in50CfnuVVKJYuBDz3uEN/Saqb+4r5ufSX/FeRz7Su+\nZdpaa/UcHHSffdtc+3rafN217G9Xom3uuJhDX0O+AAAAFmOSS8+T9JeSDiU9offdyyRdK+kaSc/w\n7F8h6f2L735xxLEBAGCDqFFplOPbnzo01XGH+KYqIJyvvy9/vZ1N6utp83Xa9hfgLllvZ1P6mtpu\nzm2udQ2VaBua8ijlrZ+27r4CAACEGJNcer+k50p6T8/+aEnPX/x8lqTXSlr8udTrJH2XpEcs/j1r\nxPEBAGBDyH1KbgUy2+rrgk+r2iFVxbBpfT1tvlZiIVbd0k9CbVJf8T35LrWWUuia36S+AgAAhBiT\nXLpG0ocM+3MkXSXpoqQbJF0n6UmSHiTpPpKuXmz3JknfPOL4AACwIezudlMrcgOe/nahN5n1fa3t\ncn1Dxx3T5pivCz6taof+a+1L+tqqvSnfMed4jvqMabOvra+j0zaVhNpUfTZtPLa8hnZ37SlwLrnk\nbzeFPjX7CgAAYNHiT8WDJd3o/X6jpMsM+00LOwAAbDl7e9Jdd0lnzizbcqd+bKOvlVjY3T2ZIhOr\nbKjdXvSp67uz062R1U8SHh11Nufrkg3u+9Ax0WfzfP111vrXt/tuTu0t8QUAALBIJZferW76W//f\nsxu3CwAAtgj3lNwPZKwn5y6Itp667++vx3dMm2O+LrHQr2xYR3vRp02brVfY+8kl9FmvPuu45rdB\nHwAAAIv9xPdPH7DPmyRd7v3+EHUVSzctPvv2m0I7OX/+/D98PnfunM6dOzegKQAAMAfc028/CHLB\nih/cnDljB9ab6HtwEPc9c6bbv/+dO+Y977nsd3w8775uom9Kn9LjpjRy1Uz9ZGLomPe4xzzO02nR\np7TNt91mVwL1Ez2Hh8vXfL9aaBP1AQCAzeLChQu6cOFC8+Okkku57Hif3ybpzZJerW7a2yPUrbN0\nLOkz6tZfulrSt0t6TWiHfnIJAAA2GxeY9AMvaTWQ8Re73Wbf3d2ThINf2ZB7zOPjzenrafW9887l\n5JLDnxLV39em9hXfVV9rH+tqb837BQAAbBb9Yp0rr7yyyXFS0+JiPFfSRyU9WdL/J+kdC/sHJL1l\n8fMdkl6sLrGkxedflnStuoW+3zni+AAAsCFYQbQV3LigJhXwTOk7ps0pXz/hsAntPW361G6z7y+d\n6O8H7nNq72nTp3abj460xLboAwAAYDHmT8VvL/5ZvGLxr8//lPSYEccEAIANxJpuEXpK3reVPGFv\n4Tumzb6t/53FnNp72vSp3Wb3fT8o7ycU/X2us72nTZ/ax+1vL60ml9x3/TWNxrZ3XX0FAADwGVO5\nBAAAkIUVaMeekqeCdMv37Nk839wAKuY7pM39QNPCCj5rtHeI72nTZ0ybrUDdJZGsZFIfX+/ToE+t\n8ThGn9r9tTg+jn+fau9c9QEAALAguQQAAM1xgdGQQMay5fpaAVluUG61ObTgbd/mfGJVDFI48eAH\npTXaO8R3m/Vxn2v115reFsJKOFjJRH9srEuf3GqZ2uOxtj65Sccxbd4N/I/ausb9MbCJ+gAAAFiQ\nXAIAgObEgsUxiY8pgtQhx7WqVnIqlxx+8On2Mde+bqI+Y9ps+Tptc6qUUsklizn1tYY+uUnHubbZ\nur5D2qe0tRZ8n1NfSS4BAEAuJJcAAKA5sSfsqUoWKwgaU6GSO+Ukt82x5JJPSXIpVeVkVbfkVjGM\n6esm6lNbW/fZr1LKmf4U2zaVlNo2fVpee7ltHlMJVEJOwlFavubnrg8AAIAFySUAAGiO9YTdsuUG\nULm+seMOqZ6IVQqkqhhyg8wS/ETFFH3dRH1qt9laF8uipt5WdcsUfY35jtFnSNJkXW3OrVIKjYeS\nxGO/bam3CK5LHwAAAAuSSwAA0JzSICi1Xa5vLKgaE+CmAi0r0EwlI3ysgDRV+WQFpLX7mns+56RP\njcDaSjb4lGhrkVvV5m83hT41tJ1an9ptztU2lEzM1da/5mP3D/+7dekDAABgQXIJAACaYwWLl1yy\nastNIli+sUBryHEtX2uhbovcBERJQJoKUq0KqjF93UR9arfZCugtzayFvEuq14YkIFw7U1Mjx+iT\n6zunMTXG17q+xyaXciuXhlzz69IHAADAguQSAAA0JxYEDalQGeM7pjJmTIVKSXJpSOWS5TtmKtEm\n6jPG12pzboJoHdUtbl9WxYvfnm3Wp7avNQVurLa5jKlWnFofAAAAC5JLAADQnNzpOjWm9aRsY6on\ncgPNqabFWdulptfknqdN0cfyHdJmdzyrCslnquRSSttc3zH6WNvV0GfI1Mga43FIVdoYbUvWYRqi\nrbX/KfQBAACwILkEAADNccGdH7iXBkFDfK3j5gap1jSzFoGmRa3KJcvX6tcm6hPzHdLmMdrmVq2E\njjFkzaVc3zH6WL419MlNOtYej6kEyZik8DrWWbN8rSRpbX0AAAAsSC4BAEBzXGByj3uc2EqrE1K+\nsUDT97UCTauKwQrscoPFMb6hbXMDzSG+c9cn97i5vi6gdt9J02gb0iFXW6uqKuXrEl9jknBT61N7\nTFkJJ4ttuOad3r5vbW0BAAAsSC4BAEBzXIByz3ue2Fwg435K8SfsKd9YMsT3dd/7iQWr8uTgYNVm\nMcY3hB/0T+EbCzSn1sfZfH1yj+tsqTYfHnY/h6yTM2ZcuOMOJXfhcAt/XLj9pKpWWukzxDd3TLl+\n+mPZkTpXlrZWRdEmXPNWxaVVrThEHwAAAAuSSwAA0BwXmHze553YXJB4r3utbmdVHViBZsrXCjTd\nE30/sLaCfitYvHhx1Wb5WrZcX8kOFq3gzqp2GOLrgk6rssHXLKbP1Npax3VBsW9zyQG/v2P0Gaut\nlSBqqW2ur/tsJeZq6dPK12+zu779REquPlNc89L02lq+Y/QBAACwILkEAADNccGK9ZTcCmT+0T8q\n93UB1r3vfWJzgbwfVFkB5B13rNpyqxPG+B4d2ckGK1C1Akgr4LOm0gzxjSWc7nOfE9sU2lq+Lij2\nfa3E4Rh97rxzuK91XL+NPlNra/m6fvnJBvfZmp5WW9vUmLKSIe68D6lCrK2t5Xt8bNtrazvkfuG+\n9++NufoAAABYkFwCAIDmfP7ndz/9YNEFOn4g8wVf0P30g9T733/V1z1htwJXP7Hgf+/IDcRyfa0K\ngVzfkN0KXq2KBasyoqWvH8Q7nFb+ObS0dTqmtLV8nY+fWHDfpyqSxmhb2/fMGXuaVW1t7757uK9/\nXKe3n2CJaesnICxt3efUuLDuF1YF2py0tXyltvqM8XVJL9/X9cu/pzldqFwCAIAUJJcAAKA5LjC5\n3/1ObC6R5IJLSXrQg7qfVpDqVyQ98IHdTz+AuuKK1eM+4AGrtn/8j1dtj3vcqs3a35OfvJpgecpT\nVhNMX/7ly+2VpGc9S/rKr1y2PfOZ0hOfuGx71KOkxz9+tc397R74wO44fR75yFXbox61avviL161\nXXbZqs2da+kkIPV1tGwuIHUaS/HkkksmSNKll3Y//WDdtcuvAvF9HF/6pas26xw95CGrtic8YdX2\n5Cev2qzx87VfKz384cu2pz9desQjVo/xmMcs2570JOmrv3rZ9shHSo997LLt7Fnp0Y9ett3znnb/\nrPPwJV+yarv88lXbF37hqs3X0Y1/X28raXTf+676ftEXdT/9MfDgB3c//altztdPFFuaWWPdjR+f\n/jmXVq9FSXrYw1Zt//yfr56Tpz3tpC+Oxz52tY3PfKb01Kcu2570pNVjf9EXSf/0ny7bLr109T5w\nySV2ny29LZs71/3j9PHvyU4DKpcAACDFgKUsJ+H42Hq0BwAAG8sttywHmlI3NaX/RNyyDfU9PpZu\nvXXZ9/hYuuuutO/hofTZzy4H0UdH3dP//hovBwfLSae77uq28xNMBwfdsf1ElKsI8SshbrutC+j8\nttx9d7eNn0y7eLH73Q/A//7vuwDf39+dd3bt9RMzd93Vtde33XJLF1T6ttb61PbN1fboqDtXfoLK\n0vb4uDv3vu3uu7v9+QmSw8Punz8GDg+7ffp6335799OvwLJ0tGyf+UzXB/8YlrbWWLn11m4c+7ZN\n0zbX9/hY+ru/W06QWOPC0vbgoLv+XHJLCmvbt915Z2fzE2wXL3ba+Nejdc1/7nPdOPHbYl2jlraf\n/nSX+PHHSug89cfKGH0AAGBz2en+GFTPBZFcAgAAAAAAAAA4BbRKLjEtDgAAAAAAAAAABkNyCQAA\nAAAAAAAABkNyCQAAAAAAAAAABkNyCQAAAAAAAAAABkNyCQAAAAAAAAAABkNyCQAAAAAAAAAABkNy\nCQAAAAAAAAAABkNyCQAAAAAAAAAABkNyCQAAAAAAAAAABkNyCQAAAAAAAAAABjMmufQ8SX8p6VDS\nEzz7FZLukPTexb/Xet99haT3S7pW0i+OODYAAAAAAAAAAMyAMcml90t6rqT3GN9dJ+nxi38v9uyv\nk/Rdkh6x+PesEccH2GguXLiw7iYANIdxDqcBxjmcBhjncBpgnAMMZ0xy6RpJHyrY/kGS7iPp6sXv\nb5L0zSOOD7DR8McLTgOMczgNMM7hNMA4h9MA4xxgOK3WXHqouilxFyR9zcJ2maQbvW1uWtgAAAAA\nAAAAAGBD2U98/25Jlxr2H5f09oDP30q6XNLfqVuL6a2SvnxoAwEAAAAAAAAAYL7sVNjHH0p6qaQ/\nTXz/MUl/IOnLFvZvlfRUSd9n+Fwn6WEV2gYAAAAAAAAAAB3XS3r4uhth8Yfq3gLneICkvcXnL1U3\nFe5+i9//WNKT1CW1fkcs6A0AAAAAAAAAcGp5rqSPSrpD0sclvWNh/xZJf6FuzaX/KekbPZ+vUPeW\nueskvWaylgIAAAAAAAAAAAAAAAAAAAAAAMR4lqRrJF0r6UfX3BaAUi5XN030L9VV7/2fC/v91S2O\n/yFJ79LJNFFJepm68X6NpGd4dlfld62kX2zaaoBh7KmrUHUvd2Ccw7ZxP0m/IemDkj6gblo/4xy2\njZep+3/L+yW9WdIlYpzD5vMGSTerG5OOmuP6Ekn/78L+R5K+pG7zAbKwxvnPqft/y59J+i1J9/W+\nO1XjfE/ddLkrJJ2R9D6dLP4NsAlcKulxi8/3lvRX6sbwqyT9yML+o5Jeufj8aHXj/Iy6cX+dThbZ\nv1rSExefWZ8M5sgPSfoPkt62+J1xDtvGGyV95+Lzvrr/oDHOYZu4QtJfqwsgpC6IeKEY57D5PEXS\n47UcdNcc1y+W9NrF5+dL+vWqrQfIwxrnT5e0u/j8Sp3icf5Vkt7p/f5ji38Am8pbJX2duuzwAxe2\nSxe/S1322K/Qe6ekJ0t6kLqMs+MFkl7ftKUAZTxE0u9JeppOKpcY57BN3Fdd0N2HcQ7bxP3VPQj7\nfHUJ1LerC0wY57ANXKHloLvmuH6numpWqbt2Plmr0QCFXKHlce7zXEm/tvg8yTjfTW0wIZepWyDc\ncePCBrCJXKEuk/zH6v6Q3byw36yTP2wPVjfOHW7M9+03iWsB5sUvSPphSUeejXEO28RD1f0n6lcl\n/amk/1vSvcQ4h+3iVkk/L+lvJP2tpE+rmzbEOIdtpOa49uPWA0l/ry5ZCzAnvlNdJZI00TifU3Lp\neN0NAKjEvSX9pqT/S9Jne98di7EOm83/KukT6tZb2glswziHTWdf0hPUlYM/QdJtWq2mZpzDpvMw\nST+o7oHYg9X9/+XbetswzmEbYVzDtvNySXerW0tvMuaUXLpJ3YLIjsu1nEUD2ATOqEss/T/qpsVJ\n3dORSxefH6QuMJdWx/xD1I35mxaffftNjdoLUMpXS/omSR+WdJWkf6FuvDPOYZu4cfHvTxa//4a6\nJNPHxTiH7eErJf03Sbeoeyr9W+qWqWCcwzZS4/8pN3o+X7z47Nbku7V+kwEG8R2SvkHS/+7ZTt04\n35d0vbqnJ2fFgt6weexIepO6KUM+r9LJHNcf0+rCamfVTcG4XieVIH+sbo7rjlgYE+bLU3Wy5hLj\nHLaN90h65OLzeXVjnHEO28Rj1b3d9p7qxucbJX2/GOewHVyh1QW9a43rF0t63eLzC7RhCx3DVnGF\nlsf5s9S9AfQBve1O5Tj/enULC16nbtEpgE3ia9StQfM+dVOG3qvu4ry/usWPrVef/ri68X6NpGd6\ndvdKyOskvaZ1wwEG8lSdvC2OcQ7bxmPVVS75r/NlnMO28SPqApH3q0sunRHjHDafq9StI3a3ujVj\nXqS64/oSSW/RySvar2jQB4AU/XH+nerG5Ed0Eou+1tuecQ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAABt+f8Br7WxXEj6u6MAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 39 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }