Skip to content

Instantly share code, notes, and snippets.

@jryans
Created July 2, 2015 13:20
Show Gist options
  • Save jryans/5d08e554a45a4dc11e5c to your computer and use it in GitHub Desktop.
Save jryans/5d08e554a45a4dc11e5c to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{"nbformat_minor": 0, "cells": [{"execution_count": 3, "cell_type": "code", "source": "import ujson as json\nimport matplotlib.pyplot as plt\nimport pandas as pd\nimport numpy as np\nimport plotly.plotly as py\nimport datetime as dt\n\nfrom moztelemetry import get_pings, get_pings_properties, get_one_ping_per_client\n\n%pylab inline", "outputs": [{"output_type": "stream", "name": "stdout", "text": "Populating the interactive namespace from numpy and matplotlib\n"}], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": 2, "cell_type": "code", "source": "sc.defaultParallelism", "outputs": [{"execution_count": 2, "output_type": "execute_result", "data": {"text/plain": "16"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": 5, "cell_type": "code", "source": "now = dt.datetime.now()\nstart = now - dt.timedelta(7)\nend = now - dt.timedelta(1)\n\npings = get_pings(sc, \n app=\"Firefox\", \n channel=\"aurora\", \n submission_date=(start.strftime(\"%Y%m%d\"), end.strftime(\"%Y%m%d\")), \n fraction=1)", "outputs": [], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": 16, "cell_type": "code", "source": "def plot_keyed_property(key_name):\n def get_keyed_properties(pings, histogram_name):\n pings = pings.map(lambda p: json.loads(p))\n\n keys = pings.flatMap(lambda p: p.get(\"keyedHistograms\", {}).get(histogram_name, {}).keys()).distinct().collect()\n keys = filter(lambda x: \"/\" not in x, keys)\n return map(lambda k: \"keyedHistograms/{}/{}\".format(histogram_name, k), keys)\n\n properties = get_keyed_properties(pings, \"DEVTOOLS_WEBIDE_\" + key_name)\n\n subset = get_pings_properties(pings, properties)\n\n histograms = subset.flatMap(lambda p: list(p.iteritems()))\n\n byKey = histograms.reduceByKey(lambda x, y: x + y).collect()\n\n votes = map(lambda x: (x[0], x[1][1]), byKey)\n votes = filter(lambda x: not x[0].endswith(\"_parent\"), votes)\n votes = map(lambda x: (x[0].split(\"/\")[1], x[1]), votes)\n\n aggregates = pd.Series(dict(votes))\n\n frame = pd.DataFrame(aggregates)\n\n frame.plot(kind = \"bar\")\n plt.title(key_name)", "outputs": [], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": 18, "cell_type": "code", "source": "plot_keyed_property(\"CONNECTED_RUNTIME_ID\")", "outputs": [{"output_type": "display_data", "data": {"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXMAAAHlCAYAAAAHhRzMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXncdWO9/98fD0LmMs8RIlIis0eD4zSQhFRKOnVKHZ1f\nk6EcKkfopEFpUoai4iA0mY4bEcLzIELkSWQMGcr8+f1xXfu5973d03Pva+291r6/79drve61rr33\nZ333ute+9tqf9b2+l2wTBEEQNJv5+h1AEARB0D3RmQdBEAwA0ZkHQRAMANGZB0EQDADRmQdBEAwA\n0ZkHQRAMANGZB0EQDADRmQdBEAwA0ZlPEyS9U9JVkh6V9FdJv5S0ZX5sPUlnSXpY0iOS/k/S5m2v\nXV3Sc5J+0aH5I0kH5/WZ+Tnf7HjObyS9N6/vJenZHENreUTS8hPFKelbba95UtJTbdu/kLRa3v+j\nHcuuWff4/LpH8nK9pMMkLT6JY9ce998lXSdp57bHZ0r6yyivG5L0/rx+SI5v17bH589tq0n6VVvM\nT+VYW9vHdO4jaz8nacOOfZ6R27dp2+/THcfkwUm85+ckvaRDo3XsbpZ0dPv/Leg/0ZlPAyR9HPgK\ncCiwLLAK8E1gR0lrApcC1wKrAysAZwDnStqsQ2rT9k4ecF5aPA68W9Jq4zznUtuLtS2L275nojht\nf7j1GuAw4CdtGm8ClPWX6NA/tS2OI2wvDrwYeB+wGXCppEUmcRgvzfteEvgGcLKkpSZ4Ted7fxD4\nnKTOz51t/2vb+zspx9p6D/uMoX0z8J5Wg6QXAZsD93U878cdx2TpSbzfzn39OB+7pYCdgeWBq6ND\nrw/RmQ84kpYAPgfsY/tntv9p+1nbv7C9H3AIqaM6yPbDth+3fTTwQ+CIDrkjgf8eZ3cPA8cDB48X\n0hTj7NQYVWcCBGD7KdtXATsCLyJ17JN9rYEfAS8A1pyHfRv4NfAU8O7J7m8CTgZ2l9R67h7A6cDT\nHTpTOVadsbTe/7O2bwR2B+4HPtGldlCI6MwHn82BhUhX26PxeuDUUdpPBbaU9IK2tm8Ba0t63Tj7\nOwzYRdLaheOcLJPuuGw/BpwHbD1pcWkGqfN/mHRlPC9xGTgIODjrdMtfgRuBf8nbewInFtCdENvP\nAWcyD8cuqJbozAefFwEP5A/faLwYuHuU9rtJ50f7T/J/kK7MDx1rZ7bvBb4NfH6Mp2wm6aG25Y+T\njHOyPNChv84Ez7+bke9xLDaT9BDwT+BLwFtsPzqPsdn22aQr2g/M42vH4kTgPZLWBZa0ffkoz9mt\n45hcUGjfkz12QQ+Iznzw+Rvw4lF82hYPACuO0r4C8BzwUEf794HlJL05b492JXwk8C+dN+cyl9te\nqm156STjnCwv6tCf6Op5pbzvibjc9lIkz/gsoN36eQZYYJTXLMDzLQ+AzwKfIVk13WCSrfJa4COM\nfVX+045jMt4vq3lhsscu6AHRmQ8+vwWeJN20Go3zgV1Had8NuMz2E+2Ntp8iedtfYAxLw/bfgK8y\nzhX8FOIcsYt50B3zdZIWJdlMl0xawH4c+DCwraRtc/MdpC+iF7ZpC1gN+PMoGucDt5I64K6w/U/g\nV8CHSPc5RqNbz/z5gulL9y3Mw7ELqiU68wHH9t+B/wK+KWknSYtIWkDSv0o6gtQxbyHpUElLSVpM\n0n+Q/NfOG48tfkjyt3dg7I71KJIP/rJCcbYzXuc01mNzb+JJeoGkjYGfka4sj5tMjG2xPgR8F9g/\nb98BXAEcIemF+T7Dp0g3O0ezPSBdmX96Ht/DWBwIbJvjqJScTvky4MekjKOjqt5nMDkm1ZlLmpNz\na2dJujK3LS3pPEm3SDpX0pJtzz9A0h8l3SRp+6qCDyaH7aOAj5N+3t9HupLcBzjD9q3AVsArgDmk\nm2o7A9vb/m27TJvec6SOt9MvbX/OoyS7ZamOxzfX83PBN54ozlH2M9aXyMMd2v/Z9ppPS3qEZC2d\nAPwO2CJf3Y7HaPv7KrBdm5W0O6lzuxW4E9gOeFP+JfM8DduXkb4ARnsfY72/Ud+z7buz3lix767n\n5/a/eIznj7avuRqkG79nknz/jVtppUH/0WRmGpJ0O+kf92Bb25GkG1ZHStoPWMr2/pLWI6VMbULy\n1M4H1i5wYysIgiAYg3mxWTp/+u1Iuroh/31rXt+JNMDgadtzSFcqm3YTZBAEQTA+k+3MDZyvNMy6\nlVK1XE5DA7gXWC6vr0j6mdniTtIVehDUFknfHsX+eVTSMf2OrQokbT3G+32k37EFU2P+ST5vS9t3\nS1oGOE/STe0P2rak8fyamDU6qDW2P0TKCJkW2L4EWKzfcQTlmFRnbvvu/Pd+SWeQbJN7JS1v+x5J\nKzBcD+IuUk2NFivntrlM0PEHQRAEY2B79Gwn2+MuwCLAYnn9haSiTNuTMhX2y+37A4fn9fWA2cCC\nwBrAbeQbrW2anmi/Hc8/ZF6eP69L6Id+HbVDP/RHeb7HemwyV+bLAWfkWj7zAyfZPlfSVcApSiU+\n55AGmWD7RkmnkGpGPEMqnNTtlfjqXb4+9EO/idqhH/qTZsLO3PbtwEajtD9IGj032msOIxVcCoIg\nCHpAU0aAHh/6oV9T/Sq1Qz/0J82kBg2VRpI9lokfBEEQjMp4fWetrswleRCWUd7XzIqPW+j3Sb/J\nsYf+YOlPNs+8Z4z2rSNppu2hqvZZUj/SLoMg6Ae1slkGwX4ZhPcQBEE9aYzNEgRBEEyNRnTmTfKt\nQn966Tc59tAfLP1GdOZBEATB+IRnPg9IWpo0B+YbSBMcHGD7xx3PqfV7CIKguYzXv9Qum6WTXmSH\nzEPn+03gCdKMMq8EfiHpWts3VhZcEATBJGiIzeIKl8n5VkqT9b4NOMj2P2xfSpo+a89JvHZC/W4I\n/f7pNzn20B+h0/V4kinud2YJHWhMZ14L1gaecZozs8W1wPp9iicIgqKMdrF34Rjt9aP2nnn6Bqwy\nRk3KZpG0NXCK7RXa2j4AvNP2dm1t4ZkHQcOY935mcv1GaSLPvAyPAYt3tC0BPNqHWIIgCEYQnTmT\n9q1uAeaXtFZb2yuA3xfSnzKh3z/9Jsce+pNhqFL18Mz7gO3HgdOBz0taRNJWwFuAH/Y3siAIgvDM\nmRfvS9JSwA8YzjPf3/ZPOp4TnnkQNIxB8Mwb0plXS8l/SnTmQdA8BqEzr73NkgPfzraqWpru64V+\n//SbHHvoT4ahStXDMw+CIAhGUHubpWkMwnsIgulG2CxBEARBLWhEZ9503y30B1e/ybGH/mQYqlQ9\nPPMgCIJgBOGZF2YQ3kMQTDcGwTOvXT3zmN0+CIJg3qmVzTJWHjgV55mX1u98X033DUO/P9qh33/9\n8MyDIAiCnlIrzzwIgqAfDIJnHlfmQRAEA0AjOvOm+26hP7j6TY499CfDUKXq4ZkHQRAEIwjPPAiC\naU945kEQBEEtaERn3nTfLfQHV7/JsYf+ZBiqVD088yAIgmAEk/LMJc0ArgLutP0WSUsDPwVWA+YA\nu9l+OD/3AGBv4FlgX9vnjqIXnnkQBLVhOnnmHwNuZPjd7g+cZ3tt4IK8jaT1gN2B9YAdgGMkxdV/\nEARBxUzY0UpaGXgjcCzQ+kbYETghr58AvDWv7wT82PbTtucAtwKbdhtk03230B9c/SbHHvqTYahS\n9V575l8BPgU819a2nO178/q9wHJ5fUXgzrbn3Qms1G2QQRAEwfiM25lLejNwn+1ZDF+Vj8DJdB/P\nbOo6kd32ULcaoR/6TdMO/f7rw8xK1UvGP1E98y2AHSW9EVgIWFzSD4F7JS1v+x5JKwD35effBazS\n9vqVc9vzkHQ86eYpwMPA7NYba/30iO3Yju3Y7tX2MEP578wJthNVxpfX98q7msN42J7UAmwLnJ3X\njwT2y+v7A4fn9fWA2cCCwBrAbeSMmQ4tT3a/+fkz5+X587qEfujXUTv0e6cPGDzKcuEY7bgf8Y+3\n33mdaahlmRwOnCLp/eTUxLyXGyWdQsp8eQbYxzmCIAiCoDqiNksQBNOe6ZRnHgRBENSYRnTmTc9V\nDf3B1W9y7KE/GYYqVY/aLEEQBMEIwjMPgmDaE555EARBUAsa0Zk33XcL/d7oS/K8LgX2ObNA6KFf\nU/3wzIOgb3iU5cIx2oNgcAjPPBgYmuJ7BvWjKedOeOZBEAQDTiM686b7bqHfX/0qfc+mH5vQn4ih\nStXDMw+CIAhGEJ55MDA0xfcM6kdTzp3wzIMgCAacRnTmTffdQr+/+uGZh/7UGapUPTzzIAiCYATh\nmQcDQ1N8z6B+NOXcCc88CIJgwGlEZ9503y30+6sfnnnoT52hStXDMw+CIAhGEJ55MDA0xfcM6kdT\nzp3wzIMgCAacRnTmTffdQr+/+uGZh/7UGapUPTzzIAiCYAThmQcDQ1N8z6B+NOXcCc88CIJgwGlE\nZ9503y30+6sfnnnoT52hStXDMw+CIAhGEJ55MDA0xfcM6kdTzp3wzIMgCAacRnTmTffdQr+/+uGZ\nh/7UGapUPTzzIAiCYAThmQcDQ1N8z6B+NOXcCc88CIJgwGlEZ9503y30+6sfnnnoT52hStXDMw+C\nIAhGMK5nLmkh4CLgBcCCwJm2D5C0NPBTYDVgDrCb7Yfzaw4A9gaeBfa1fe4ouuGZB8Vpiu8Z1I+m\nnDvj9Z0T3gCVtIjtf0iaH/gN8ElgR+AB20dK2g9Yyvb+ktYDTgY2AVYCzgfWtv3cZAMKgqnSlA9k\nUD+acu50dQPU9j/y6oLADOAhUmd+Qm4/AXhrXt8J+LHtp23PAW4FNp166Imm+26h31/98MxDf+oM\nVareU89c0nySZgP3AhfavgFYzva9+Sn3Asvl9RWBO9tefifpCj0IgiCokEnnmUtaAjgHOAA43fZS\nbY89aHtpSUcDl9s+KbcfC/zS9ukdWmGzBMVpyk/loH405dwZr++cf7Iitv8u6RfAxsC9kpa3fY+k\nFYD78tPuAlZpe9nKuW20oI4n3TwFeBiYbXsoPzYz7zO2Y3vS28MM5b8zJ9hO1CX+2I7zp3M7r++V\ndzWH8bA95gK8GFgyry8MXAy8DjgS2C+37w8cntfXA2aT/PU1gNvIV/8duh5vv6M8f+a8PH9el9Af\nDH3A4FGWC8dox3WJPfSn37kzlfjH2+9EV+YrACdImo/kr//Q9gWSZgGnSHp//rbYLe/lRkmnADcC\nzwD7OEcQBEEQVEfUZgkGhqb4nkH9aMq501VqYhAEQVB/GtGZNz1XNfT7qx955qE/dYYqVe9pnnkQ\nBEFQf8IzDwaGpvieQf1oyrkTnnkQBMGA04jOvOm+W+j3Vz8889CfOkOVqodnHgRBEIwgPPNgYGiK\n7xnUj6acO+GZB0EQDDiN6Myb7ruFfn/1wzMP/akzVKl6eOZBEATBCMIzDwaGpvieQf1oyrkTnnkQ\nBMGA04jOvOm+W+j3Vz8889CfOkOVqodnHgRBEIwgPPNgYGiK7xnUj6acO+GZB0EQDDiN6Myb7ruF\nfn/1wzMP/akzVKl6eOZBEATBCMIzDwaGpvieQf1oyrkTnnkQBMGA04jOvOm+W+j3Vz8889CfOkOV\nqodnHgRBEIwgPPNgYGiK7xnUj6acO+GZB0EQDDiN6Myb7ruFfn/1wzMP/akzVKl6eOZBEATBCMIz\nDwaGpvieQf1oyrkTnnkQBMGA04jOvOm+W+j3Vz8889CfOkOVqodnHgRBEIwgPPNgYGiK7xnUj6ac\nO+GZB0EQDDiN6Myb7ruFfn/1wzMP/akzVKl6eOZBEATBCMIzDwaGpvieQf1oyrnTlWcuaRVJF0q6\nQdLvJe2b25eWdJ6kWySdK2nJttccIOmPkm6StH25txIEQRCMxmRslqeB/2d7fWAz4COSXgbsD5xn\ne23ggryNpPWA3YH1gB2AYyR1Zec03XcL/f7qh2ce+lNnqFL1nnrmtu+xPTuvPwb8AVgJ2BE4IT/t\nBOCteX0n4Me2n7Y9B7gV2LRUwEEQBMHzmSfPXNLqwEXAy4E7bC+V2wU8aHspSUcDl9s+KT92LPAr\n26e16YRnHhSnKb5nUD+acu4UyTOXtChwGvAx24+2P+b0jTDekej9XdYgCIJpxPyTeZKkBUgd+Q9t\n/yw33ytpedv3SFoBuC+33wWs0vbylXNbp+bxwJy8+TAw2/ZQfmwmQNv2f07weLfboT8A+sMM5b+t\n5q8CG7VtD414djfxt++7iuMT+r3TH2Yo/53JyHNlZsfjiSrjz+t75afMYTxsj7sAAk4EvtLRfiSw\nX17fHzg8r68HzAYWBNYAbiPbOW2v9UT77Xj+zHl5/rwuoT8Y+oDBoywXjtGO6xJ76E+/c2cq8Y+3\n3wk9c0lbARcD1zFslxwAXAmcAqyavzF2s/1wfs2BwN7AMyRb5pwOTTu8yqAwTfE9g/rRlHNnvL4z\nBg0FA0NTPpBB/WjKuVPkBmg/aXquauj3Vz/yzEN/6gxVqt7TPPMgCIKg/oTNEgwMTfmpHNSPppw7\njbdZgiAIgvFpRGfedN8t9PurH5556E+doUrVwzMPgiAIRhCeeTAwNMX3DOpHU86d8MyDIAgGnEZ0\n5k333UK/v/rhmYf+1BmqVD088yAIgmAE4ZkHA0NTfM+gfjTl3AnPPAiCYMBpRGfedN8t9PurH555\n6E+doUrVwzMPgiAIRhCeeTAwNMX3DOpHU86d8MyDIAgGnEZ05k333UK/v/rhmYf+1BmqVD088yAI\ngmAE4ZkHA0NTfM+gfjTl3AnPPAiCYMBpRGfedN8t9PurH5556E+doUrVwzMPgiAIRhCeeTAwNMX3\nDOpHU86d8frO+XsdTBAEvSd1VvNGfNE1i0bYLE333UK/v/rhmbfwKMuFY7SXoVnHZzSGKlUPzzwI\ngiAYQXjmwcDQFN+zH8SxGZ+mHJ/IMw+CIBhwGtGZN913C/3+6odnPh5DlarH8Rmf8MyDIAiCEYRn\nHgwMTfE9+0Ecm/FpyvEJzzwIgmDAaURn3nTfLfT7qx+e+XgMVaoex2d8wjMPgiAIRhCeeTAwNMX3\n7AdxbManKccnPPMgCIIBZ8LOXNIPJN0r6fq2tqUlnSfpFknnSlqy7bEDJP1R0k2Sti8RZNN9t9Dv\nr3545uMxVKl6HJ/x6bVnfhywQ0fb/sB5ttcGLsjbSFoP2B1YL7/mGElx9R8EQVAxk/LMJa0OnG17\ng7x9E7Ct7XslLQ8M2V5X0gHAc7aPyM/7NXCI7cs79MIzD4rTFN+zH8SxGZ+mHJ8qPPPlbN+b1+8F\nlsvrKwJ3tj3vTmClKe4jCIIgmCRdWyBOl/bjfaV1nS7TdN8t9PurH575eAxVqh7HZ3xKxj/VmYbu\nlbS87XskrQDcl9vvAlZpe97Kue15SDoemJM3HwZm2x7Kj80EaG0DG0lirMe73Q79wdAfpiXbap7d\nsT1EO6XfT123h2m9/87j0bmdqEv80/H45PW98q7mMA5T9cyPBP5m+whJ+wNL2t4/3wA9GdiUZK+c\nD6zljp2EZx5UQVN8z34Qx2Z8mnJ8xus7J7wyl/RjYFvgxZL+AvwXcDhwiqT3k74tdgOwfaOkU4Ab\ngWeAfTo78iAIgqA8E3rmtvewvaLtBW2vYvs42w/afr3ttW1vb/vhtucfZnst2+vaPqdEkE333UK/\nv/pN8MwleV6XEvttkifcD/0mHZ/IAQ+C2tD7CZeDwSFqswQDQ1N8z9GoOvYmH5te0JTjM17fGVfm\nQRAEA0AjOvOm+26h31/9JnjmYzNUrXyDPOF+6Dfp+DSiMw+CIAjGJzzzYGBoiu85GuGZ95emHJ/w\nzIMgCAacRnTmTffdQr+/+uGZ908/zp3xCc88CIIgGEF45sHA0BTfczTCM+8vTTk+4ZkHQRAMOI3o\nzJvuu4V+f/XDM++ffpw74xOeeRAEQTCC8MyDgaEpvudohGfeX5pyfMIzD4IgGHAa0Zk33XcL/f7q\nh2feP/04d8YnPPMgCIJgBOGZBwNDU3zP0QjPvL805fiEZx4EQTDgNKIzb7rvFvr91Q/PvH/6ce6M\nT3jmQRAEwQjCMw/mMpUZ3+v0f2yK7zka4Zn3l6Ycn/H6zvl7HUxQd+bthA6CoB40wmZpuu/WdP0m\n+YajM1SZcpNj74V+nPvjE555EARBMILwzIO5NMU3HIsmxx+eeX9pyvGJPPMgCIIBpxGdedN9t6br\nN8k3HJ2hypSbHHsv9OPcH5/wzIMgCIIRhGcezKUpvuFYNDn+8Mz7S1OOT3jmQRAEA04jOvOm+25N\n12+Sbzg6Q5UpNzn2XujHuT8+4ZkHQRAEIwjPPJhLb3zbeWO6+MLhmfeXphyfqM0S1Iio/RIEVVCJ\nzSJpB0k3SfqjpP0K6M0sEFboT5mhauUbrB/HfnxKHR9JntelxH6bcnyggs5c0gzgG8AOwHrAHpJe\n1qXsRl0HFvpdMLta+Wbrx7Efn4LHx6MsXxmjvRTNOT5V2CybArfangMg6SfATsAfJnrheN+mkr4y\nWnsh32rJAhoDrP9wtfLN1o9jPz5xfMan2PGpwmZZCfhL2/aduW2SjPYte/AY7fVinJ97B1f7UzDo\nBfG/DaZKL/qGKjrzCk7iOeUlR7J6OanRvnTeO0b7vNG/L4s5ZWQGQr+a/+3YzCmo1Q/9kp+t0ZhT\nrXyl507Z86d4aqKkzYBDbO+Qtw8AnrN9RNtz4qolCIJgCoxlLVfRmc8P3Ay8DvgrcCWwh+0JPfMg\nCIJgahS/AWr7GUkfBc4BZgDfj448CIKgWvoyAjQIgiAoS9RmCYIgGABqO5xf0iLAKrZvrnIftv9R\nhS4VxS5pPuBdwBq2Py9pVWB521cW0t8KeND2jXl02quBWbYvKKE/yv5OtP2egnovI41raKXD3gmc\nVaXVJ+l9to8roPMyYEXgCtuPtbXvYPvXhfQrPTaS1gGOIZ2T60vaENjR9qGl9lEl+fyfbfsxSXsC\nrwS+ZvvPhfQXAnYhZfm0+l/b/ny32rW8Mpe0IzCL5Lsj6ZWSziqov4WkG0k3apG0kaRjCmlXGjvp\ng7I58M68/Vhu6xpJXwT+BzhB0pHA4cDCpNTHTxXQP1vSWfnv2ZLOBnZptRfQ3w/4cd68Ii/zAT/O\nWVVV0fUHUdK+wM+A/wBukPTWtoe/WEC/V8fme8CBwFN5+3pgj1LiSuwi6SuSjpK0s6SSRXy+BTwu\n6RXAx4HbgBML6p8J7Ag8TfrsPgY8XkTZdu0W4BrSyKhZbW2/L6h/JbBqh/4NDYl9VvvfvH5tIe0b\nSVcLiwCPAkvk9oWB60rEDpwEbAdsC8wE7s7r2xbQ/yOwwCjtC5JGJXejff04y5MFYv89sGheXx24\nCvjPzv91HY9Nh95VnTGTrnRL6X8LOBd4H7A38GvgmIL6rc/XwcC/5fVrCuoX6ws6l7raLE/bfrjj\nC/e5kjuwfUeH/jOFpKuO/alc/wYAScsU1H/K9jPAM5Jus/13ANv/lFRiH68GPgZ8BviU7VmSnrB9\nUQFtgGdJFsKcjvYV82PdsCyp3tBDozx2WZfakJIRHgOwPSdbXKdJWo0y5SOrPDbt3C9prdaGpLeT\nvrBLsR2wnu3nsv7xpIuQUjwq6UDg3cDW+bO2QEH9yyRtaPu6gppAfT3zGyS9C5hf0kuBfSnzgWlx\nh6QtASQtmPVL+YZVx340cAawrKTDgLcDny2k/WTbfYRXtRolLUmBLwzbzwJHSToF+Iqk+yh7Dv4n\ncL6kWxkuKbEK8FLgo11q/4J05Tyr8wFJJb6M7pO0ke3ZAE6e7ZuB7wMbFtCv8ti081Hgu8A6kv4K\n3E66x1OKW0m/qufk7VVzWyl2J1mYe9u+J9+T+lJB/a2B90m6HXgyt9l21//jWqYmSnoh6ept+9x0\nDvAF208U0l8G+BrwetJVz7nAvrb/VkC70tjzPl5GGpQFcIEL3cCStNBocUp6MbBi6auJ3FltYfvA\ngpozSMXeViKNi76L9NO/1C+vSpC0CulX3T0d7QK2tP2bAvuo/NhIWsP27ZIWBeaz/UirrZD+xcAm\nJKvUpPfzO+ARUqe4Y4F9LJ/3YeBK2/d1q9mmPeovLefChF1p17Qz39X2qRO1daG/pe1LJ2qbonbV\nsf/Q9p4TtQVBP5A0y/YrO9qutr1xIf2ZebXVcbV3jO7WspO0G+lKvKWzDckSLPX5PTRrX2a7zI3P\nTC2zWUh3wyfTNlW+Mcm2qVB17C9v38jlE4p8UMZD0i9Cv/faTdGX9DJJuwBLSHpbzjh5m6S9gIW6\nDjJjewi4CVgcWAy40fZQXkrYXZ8FNrH9HqeU2U2AgwrotvgTyca5StLvJH25I3NpytTKM5f0r8Ab\ngZUkfZ3hb93FSKk83epvDmwBLCPp4x36XX2x9SD2A4EDgIUlPdr20NMkj7JqPhD6fdFuiv7awFuA\nJfLfFo8W0gdGvXL+hqRiV86kz+39bdt/o+D8hbZ/APwgWzm7A58E/h1YtFvtWtksObfzlaS83fZv\nw0eBC22PlkkwL/rbku6G/zvw7Q79s23/sQvtSmNv28/htvcvoRUEpZG0he2SN/w79a8DXt/ysfP9\nrwtK3EDMel8CXgGcTOrEdyel5X66kP73gZcB9wK/AS4hpUN2f8FXp868haQFSFfKa+emm0q82Tb9\n1XP612IAth+d6DXzoF1p7HkfO5G8PAMX2T67pP4Y+/yV7X+ts76kJUi/XlYGfmn75LbHjrG9Tx21\ne6S/Cil3+gHSYLCvkCyEWcAnSt3ky/v5OrBVbroY+JjtOwvpXw9s6NxxKY2Ivtb2BoX0BbyNFL+B\nS2yfUUI7659BugF9A+nYXGT7T0W0a9qZzwROAFpDaFcF3lsqH1nSBqRRXS/KTfdn/d8X0J5JtbEf\nTvoQnkS6cngHKSOh61F8kl411kPAL2wvX3P904FbSKMb9yaNQnyX7SdGuzFXF+0e6V9AGmG6KGlG\nhONJV587ATNt79KNftt+ziedmz/KTe8ivY83FNKv9Mq5V+SMtB1IKaMzbK/ctehURhpVvZBGUa7T\ntr02ZUdh/RbYrm17JunuchNivz7/81vbM4DrC2k/C1w4xvLPBuhf27H9GeBS4MV0OYqySu0e6c9u\nW79jrMdU4JpuAAAgAElEQVRKv4+x2rrcxy7AUXnZuZDmpfnvYyRrtH15pGDsbwGOzH3QH4DjSDnt\nXWvX6gZoG/O7rUiV7Vty1kYpFrF9YZv+UM4PL0HVsZtULqCVE78k5eYpuwn4d9u3dD4g6S+jPL9u\n+gtKms95dKDt/5Z0F+lmWbc3mKrU7oV++028H3Y8NoNy/E2pQFXryvkdJGunCJKOsL0fcNoobVPG\n9pb5b4ljPR47kOyVr9r+a0nhuqYmXi3pWEkzJW0n6VhSrYpS3C7pIEmrS1pD0mdJKUMlqDr2LwLX\nSDpB0gnA1cBhhbQPYexzYt8G6P+c4cFUANg+HvgEw4Wf6qjdC/2z2u4RfabVqDRKuWR1z72B3YB7\nSMP4dyXVUSnF9qO0vbGgfqXY/gjpC3pjSW+WtGwp7bp65gsBHwG2zE2XkIrpPDn2q+ZJf2ngcx36\nh7hAxknVsed9rMjIEWr3TPCSIGg0kj4M7AOsSapk2GIxkkVSsmRAZXSkVoo0vL9IamUtO/NgfHIa\n5OqkcQIGsH16P2MKAgBJLyGV8V2dkfW6uxpmn7N9liL9Mt2fYdvoURcow9ErqkytrKVnLuktpHzt\n1Rl5QixeSH8T0qjMTv3ui91UH/txwAak1Kb24lfRmQd14GfAscDZDJ+fXV8xOlXw/LukC9wxUUTD\nxl5UNiiplp058FVgZ1Lt36KlbzMnkUZe/Z7CpXWpPvbXAOs7flIF9eQJ21+vUP9tSmWTfwQg6Zuk\nevtN4dfAOZLaUyt/VUK4rjdA7yRNFlFFZwhwv+2zbP/J9pzWUki76th/B6xXhbCkTSWt0Lb9XqWZ\ngb6e7zNMW/0mx94L/TaOlnSIpM0lvaq1FNTfBXivpD0knQg8Y3vvgvpV82ngO6Rc+Q2A77jU6NI6\nXuBJ2oxkVVzI8J182z6qkP72pG/E8zv0u7YqehD7TOAsUrZA2XrI0izgdbYflLQN8FNSfepXAuva\nfvt01W9y7L3Qb9vP4cCepBrjcy9obG/XpW77F85ipOnXfgP8V9Z/sBv9QaCuNssXSMn6C5GmtSrN\ne4F1SO+/tO9cdezfJ82CUoVFNF/bh2J30lXDaaQZb66d5vpNjr0X+i12BdawXSKdsp1rGOm9C3hT\nXgDWKLy/SlCqLHk4sBzDXnmRe2p17cxXcKHhv2PwatLVSBU/S6qO/T7bJSeIbmeGpAWcasm8Hvhg\n22MlzpUm6zc59l7ot7ielHVyb0FNbK9eUq+PHAm82YUmlGmnrp35LyX9i+1zKtK/jOQ731CBdtWx\nz8o3T86msEVEmr39IkkPAP8g5ci3BpY8PM31mxx7L/RbLAXcJOl3jLQBu54BCEDSrsCvbT8q6SCS\nTXSo7WtK6PeAe6royKG+nvljpBnin2K4FnjJ9L6bSIMPys/DV33sx7c029ttFxllp1TzfXngXOeZ\nUCStTZr/susPTJP1mxx7L/Sz3sy8akbaCKUKzV1vewNJWwGHAv8D/JftTUvoV42kr5H+Bz+j9P26\nOnbmVSNp9dHaC2a0NBpJrwXWJ30gb3BbHZvprt/k2Huhn/exOrCW7fMlLUKqV/RIIe3ZtjfKN1qv\nt32SClSV7BX5Yux5nW6Ji7FaduZKNYrfRbqR8nmlGbKXt31lwX1sTTrhjlMahbWoC0w6W3XsktYB\njsma60vaENjR9qEFtFci3QR+kuF6MhuT8nh3tn3XdNVvcuy90G/bzwdJMwstbXvNfOX/Lduvm+Cl\nk9X/BWki6jeQLJYngCtsv6KEftVIepE7RqxKeolL1DR3wdKUpRbSLEDHkCZ2AFiaVLO7lP4hJM/5\nlry9ErkEZgNiv5g0cGhW3hbpCquE9s+AvUZpfw9w5nTWb3LsvdBv07sWeAFtZXspVKI5a72QNHnE\nS/P2CsD2pfSrXkj365Zo216v2Oe3329ujDc8q/1v6yQpqH8tacBUu/51DYn9qlH0i9Sjbn25zetj\n00G/ybH3Qr9N68r8t/U5mL/UZ6ttH1sD78vrywAvKalf5UJKpbyYVNZ4Y1ISxkYltOuazfKUpLk1\nlrMNUjKn+knbz0lq6ZeqZQ7Vx36/pLXa9N9OKjVaAkmS81nX1jgfZUYLN1m/ybH3Qr/FRZI+Aywi\n6Q2kSofFpjWUdAipE1yHNLHDgqT67FuO87LaYPsXkhYEziN16G9z2/wH3VDX4fxHA2cAy0o6jDTj\nyhcL6p8q6TvAktnju4BUHKgEVcf+UdJw4HUk/RX4f8CHC2n/AviupLkF+vP6t4FfTnP9JsfeC/0W\n+5EKSV1Pmjj9l8BnC+rvTJrq7nEAJ69/sYL6lSDp6NYCvBZYnJRN91FJRWrZ1O4GaL5S2Bx4kOFi\n/Re4UG6m0uX4KsC6DBe6P8f2eQW0q459BnCE7U/mD+J8LpQlkPUXJE10sRdwR25elTSn6QHuclRf\nk/WbHHsv9PM+5icVmFu3W61x9nGl7U1bGSz5V/VvXSCtuEok7cVwFsvclM28btsndL2PunXmMJx+\nVJG2SDdkXl6RfmWxZ/3Lgc07fy4X3sciQMvKuc05Jzn0mx17j/TPBPZ1R5nagvqfIsW/PekX797A\nya62UmMjqGtn/j/A5cBpVXRaStOtfdMFUx3btKuO/dvAisCppJF8UG4EaBB0haRLSCmDV5KtEAqO\nAM372J7Cv6p7RR7sdDDPn+/gJV1r17Qzb42ifJaURwplR1HeTPp2/zMjT7iSI0Criv14Khp0EATd\nouERoO3YhUaANp3c9/wnqXDYs612211Pel3LznwiJK1ve8p1VTTBCFBJS7uikprdxj4J/QNsl7zh\nGgTFkPRb25tP4XWPMfaMRcUulqpG0hW2X1OFdl2zWSbiR9282G0TUnj0ySku6C68cekq9kmwW7cC\nkt7fsT1/TgkrQpP1mxx7L/QnwUJTeZHtRW0vBnyNlDGzUl4+nduawoWSvqQ0ecfGeSkyeUdTO/Og\nWl4v6ZeSVpT0cuC3lE3/arJ+k2PvhX7V7Gj7GNuP5OVbpFTFpvAaUgnuw0hFwlpL19R10FDQR2zv\nIekdwHWkewrvsv2b0G927L3Q7wGPS3o3qaQvwDuAx/oYz7wyVJVwXJkHz0OpONK+pMJMdwDvVsFR\nsk3Wb3LsvdDvAe8kWYn35mW33NYUHid9+TwGPAPsAKxWRLlETYBeL8DlFevPqlC76tgPLKBxE/D6\nvD4f8AngxoIxNla/ybH3SH9RYEZeXwfYEVig7fENSu1rEBZSUbKLimj1+82M8Qa3IpWkhTQ57FHA\nagX11wIWyuvbka5Ulmx7/EU1jv1LpKHAC5Bu1D4A7Fn4+C8xSts6od/s2Hukfw0pNXclYA5pPMRJ\nBfXXyef9DXl7Q+CzpfR7vZCqqt5aQquuNsu3SN7YK4CPA7cBJxbUPw14Rqlg1XdIw/tPbj3ojnrD\n80jVsW/vNIT/zaQPy5rApwrqAywu6QxJ9+flNIbz8ae7fpNj74W+bP+DVKb2GNu7AiVHW38POJDh\nWXquB/YoqF8pkq5vW24AbqZQNk5dO/NnnL623koaqflNyt5xf872M6QT7mjbnyLVRS5B1bG3blq/\nGfhf239n7PzbqXIccBZppOmKpKp3x4V+5dqDoN+anu5dpOJeULafWcT2Fa2N/Fl7epzn1423tC3/\nAqxo++giyv3+mTHGT4+LSd++fyTNlzeDsgXuryDdNPk9aUYgSAWCmhD74STfczap/OeypJlWSh7/\n59VfH61tOuo3OfYe6W9L+rLYL2+vCXy9oP6vSDZpq17624FfldJv8lLXK/PdSdNb7W37HpL/ViQX\nM7M3qbrhf9u+XdJLKDeYp9LYbe9Pqt28sVOlu8cpn2f7N0l7SpqRB5W8m+TNh36zY69c3/ZFtne0\nfUTevs32vqX0GS4Bva7Kl4BuNI0czj8dkbQLz7dT2mc/L1ZoK5c7OBrYLDddBvyH7TvGes100W9y\n7FXqSxpvAgq7YKGtvL8XkkpAP1pSt8nUatCQKq6/IOn6cR62uyi0VXXsJI9tvG/erjtzSUfY3g/Y\n1PZbutUbJP0mx94LfeDL4zxW7IpR0lKkeUtXB+ZXmi3Mha/+G8m0ujLXGAW2WnhkfZZph6TfAxsA\n19h+Zej3RnsQ9Dv29QJgbVInfrPtYjcoJf2WVILgetJ0jMUmd2g6tboybyen9m1DOiEusX1tt5rt\nnbWk5YBNs/6Vtu/rVr9Nu3jsbdpLkuohb5ObhoDPO2W1dMuvgIeARSV1/nwt8euiyfpNjr0X+sDc\nErgnkMpLA6wq6b0uVwL3BbY/XkhroKjllbmkjwEfIFkHIqX5fc+FZhORtBtp8E3rBNsG+JTtUwto\nVx376aSrkhOy/p7AhrbfVkI/7+Os0h7noOg3OfYe6V8D7OE8SXEuH/AT20UqA0r6JPAIKaXyyVa7\nKypZ3STq2plfD2zmPKVVvtlxue0NCulfRxrSfF/eXoY0V2eJySmqjv1a26+YqK3AflYDXmr7fKWp\nxmaUvNnUZP0mx161vqTrOj9Ho7V1of9R4L+Bh0k2CxSaqafp1DU1EYb/UZ3rJRBpBvEWf2M4M6QE\nVcb+T0lbtzaUpqH6xzjPn2ckfRD4X1IKGMDKwM9Cv9mx90IfuFrSsZJmStpO0rHAVQX1PwGsaXs1\n22vkZdp35FBfz/w44IpsKbSsih8U1P81cI6kk7P+7iRPsQRVx/4h4ERJS+Tth4D3FtQH+AjpfsLl\nALZvkbRs6FeuPQj6H877aGWXXAIcU1D/j8A/C+oNDLXszG0fJeki0uAYgL1szyq4i0+ThvK39L9j\n+4wSwlXHbns2sKGkxfP2I6W023jS9pM57QtJ81O2ZECT9Zsce+X6tp+Q9A3g3Nx0U8lsFtKv0NmS\nLmTYM4/URGramWeeZfgkK2pV2LakSxku1nPFeM+fApXF3pnNImmIctksLS6S9BlgEUlvAPYh3XAK\n/WbHXrl+D7JZfpaX1udLlP2yayx1vQEa2Sxj6/cim2U+4N+A7XPTOcCxLnSyNFm/ybH3SL/SbJas\n2cpjh/JX/o2lrp15ZLOMrV9pNkv+2f172+uW0Bsk/SbH3gv9vI+qs1lm0nHlD5S88m8skc2SiGyW\njFNp4Jtz+lpxmqzf5Nh7oZ+pOpvlKFJN/21sb0P6hfGVgvqNpa6eeWSzjE0vslmWBm6QdCXDExe4\n4GCTJus3OfZe6H+IVNmwqmyW+VsWDszNxqlrP9ZTammzAEjamDQFW2tIfMlsllYVwlbGySWlslmy\ndmWxS3qJ7T+1OnPbf2+1FdzHzNHabQ9Nd/0mx94j/Y/Z/tpEbV3oH0dKMPgR6WLpXaTqiXuX0G8y\ntezMJf3Q9p4TtXWh36ogN27bFLWrjn2WOwolSbra9sYl9IOgG8Y4P2fb3qiQ/gtIV/5zL8RI09M9\nOfarpgd1/XkyYs7A/DOqZGe1PdDZcb9xlLapUEnskl4GrAcsIeltDKdkLQ4s1K1+3seltrfU6OV8\n7e5LEDdWv8mx90h/D9LsXWtoZG3zxUj3pLomf5auzTdwxyu5Oy2pVWcu6UDgAGBhjazs9jTw3QL6\nHybl1a6pkbXNFwMu7VK70thJqVhvAZbIf1s8SkqFLME7AWwvWkhvkPSbHHsv9C8D7gZeTJpZq5VQ\n8AhwXYkd2H5G0s2SVrP954lfMc1wDeau61yAL1akuwSpqP2PgdXy+urAi+oee5v+NhVqX9O2flro\nD0bsvdBv0/4EsFKF+pcAjwH/RxrsdDZwVlX7a9JSqyvzNl4u6Z3Amc752iVwGiX5d0kPkE64y0pp\nt1FJ7G18X9LtwE+B020/VFC7PT2ziuJFTdZvcuy90G+xGHCupIeAnwCn2r63oP5BBbUGirrmmX8Z\n2Bq4UdJpkt4uqYgvnLka+KykP0n6H0mvLqhdaey2X0o6oV9Oyun9uaQiN1eDoFtsH2J7fVKxrRWA\niyVdUFB/aLSllH6TqWU2S4t8w2M7kie8gwvNhtKm/yJSwa09gFVtr1VQu9LY8z5eTBow8S7bXX8x\nS3qW4QFICzOyOp27fQ9N1m9y7L3QH2V/KwBvJ322FnW5EaC7AIcDy8GICc2Lf76aRl1tFiQtDOwI\n7Aa8ijSEtzRrAeuS/PMbS4lWGXvOL9+ZNNBpLeAMYJMS2rZnlNAZRP0mx94L/RaS9iGd98sCpwL/\nZrvYZws4Eniz7T8U1BwIanllLukU4DWkkZo/AS6yXWxYvKQjSR3in7L+GbYfLqRddey3A2eSPPPL\nXcd/YDBtkXQ4qbDW7Ir0L7W95cTPnH7UtTPfATjP9rMV6X8I+F/bD1SgXXXs89l+TtIitovOMBQE\nJci1g9ayfZxSEbtFbd/epeYueXUbYHlSGdxWCWvbPr0b/UGgrp35C4GPk3zsD0h6KbCO7Z8X0p+P\nNAx4Ddufl7QqsLztKwtoVx37FsCxwGK2V5G0EfBB2/uU0A+CbpB0CGmQ3Dq215a0EnBKt1fTko5n\n7Lrldgznr202y3Gkb90t8vZfSZO4luIYYHPyQApS3mqpYkBVx/5VYAfgAZg789C2BfWDoBt2BnYi\nF/GyfRcpXbErbO9l+33ADODjtt+Xtz9B2YqnjaWunfmato8g/4yqIF/7NflK9p9Z/0FggULaVceO\n7Ts6mp4pvY8gmCJPtt8jyr9US7Jh+9iK/Nl95TjPnzbUtTN/MmeEACBpTYbn+yvBU5Lm3t3Pvl6p\nm5RVx36HpC2z9oKSPgnEnf2gLpwq6TvAkpI+CFxAsgVLIUlLt20sTbpan/bUNTXxEFI2yMpKNce3\nBPYqqH80KaVvWUmHkfJhP1tI+xCqjf3DwNeAlYC7SBPnfqSgfhBMGdtfkrQ9qWbQ2sBBts8ruIsv\nA7/NWWMCdqWsjdlYankDFOYOiNksb15eOvMkVyF8Xd68oGTeatWxB8F0RtL6wGtJN0T/r3Aee2Op\nVWeuNKlDZ0BzZ9+2fU2X+kt3NuW/Lf0Hu9CuOvaj2zbdrp31933ei4KgR4xRWrdFjNDsAXWzWb5M\nOiEWJqU3tUpnbkiaR3DzLvWvYbgjXJU05RrAUqQJYtfoQrvq2K/Of7cg1TX/KcM/M2/oUjsIusK5\ntK6kQ0kZXD/KD70LWLFfcU0nanVl3kJp/syDbV+ft18OfM72LuO/ctL63yON+vxl3v5XYGfbHyyg\nXXXsVwBb2X46by8A/Mb2a0roB0E3SLqusw7LaG1BeeqazbJuqzMEsP174GUF9TdvdeRZ/1cM54V3\nS9WxL0maXajFYrktCOrA45LeLWlGXt5FGscRVEzdbJYW10k6luFJW98JXFtQ/6+SPtuhf1ch7apj\nPxy4RtKFWX9bUgZNENSBd5Kyrb6aty9leHBeUCF1tVkWJqXgbZ2bLga+ZfuJQvovAg7u0P9cNzdA\n27QrjT3vYwVSMS8DV9q+u+2x9W2Hhx7UEkkH2P5iv+MYRGrZmU+EpNNKedBj6B9t+z8q0q469ufN\njh4EdSHOz+qoq2c+EVVOewWwVYXaVcceBME0pKmdeRAEQdBGdOZBEAQDQHTmg0fJol5BUJpT+x3A\noFLbzlzSIpLWGePh/UvtY4yHvtatblWxS5pP0p6S/itvrypp09bjtjcb+9VBUC2S1pF0gaQb8vaG\nOQ0YANuH9S+6waaWnbmkHYFZwDl5+5WSzmo9bvucLvW3kHQjcHPe3kjS3MkpbB/fhXalsVPtxBpB\n0C3fAw5keEq364E9+hfO9KGWnTlpEMxryLVTbM+ibBZIlbP1HEK1sVc5sUYQdMsitq9obeQJx5/u\nYzzThrp25k/bfrijrdgM91DpbD1Vx17lxBpB0C33S1qrtSHp7cDd4zw/KERdh/PfkGs6zJ8nRN4X\nuKyg/ojZerJ+qXrmVcde5cQaQdAtHwW+C6wr6a/A7aTKiUHF1HIEaJ438DPA9rnpHOALBYfzL0O6\nyfl6Un2Tc4F9bf+tgHalsed9VDaxRhCUIH8O5rP9aL9jmS7UsjMPxkfSUqR67PNTaPKLIChBPjff\nA6zO8C9/x+Qp1VNLm0XSJqQ74qsz8oQoUhNZ0kuA/xhFf8cC2lXH/gXSnKJ/YqRXvl0J/SDokl8C\nvyVNzvIcHTNiBdVRyytzSbcAnwR+T1uHZXtOIf3rSDOGt+vb9kUFtKuO/Rbg5bafmvDJQdBjJF1j\n+1X9jmM6Ussrc+B+22dN/LQp84Ttr1ekXXXsN5Cmubu3wn0EwVQ5WdIHgbNpG41corx0MD51vTLf\nHtgdOJ/hwQe2fXoh/T2BNUk3J9tPuK595x7EvglwJunKvxV7EYsoCLpF0keB/wYeZuSv3qgWWjF1\nvTJ/L7AOKb52X7hIhwisD+xJ8plL+85Vx34iabahERZRIe0g6JZPAGvafqDfgUw36tqZv5o0l2ZV\nndSuwBoV+c5Vx/5YhRZREHTLH8mjk4PeUtfO/DJgPZI/XAXXU53vXHXsl0j6InAWhS2iICjAP4DZ\neY7adhswUhMrpq6e+U0kT/t2Rp4QpdL7LgI2BH5HYd+5B7EPMYqtYjtSE4O+I2mvvNo6R0U6/0/o\nT0TTh7p25qvn1fYTomR638xR9EulJq4+inax2IOg7kh6AbB23rzJdhTa6gG17MwhlaUlzXBv4BLb\n1xbWXx7YhOEZ7u8rqF1Z7JKWBA4GtslNQ8Dnbf+91D6CYKrkC6UTgD/nplWB95a4UArGp5ZVEyV9\nDPgRsAywHPAjScU8N0m7AVeQboTuBlwpaddC2pXGDvwAeITh2B8FjiuoHwTdcBSwve1tbG9DqlH0\nlT7HNC2o5ZW5pOuBzWw/nrdfCFxue4NC+tcBr29djefCWxeU8LV7EPu1tl8xUVsQ9ANJ13V+jkZr\nC8pTyyvzzHNjrJdAwP1t23/LbaWoMvZ/Stq6tSFpK1IGQRDUgaslHStppqTtJB0LXNXvoKYDdU1N\nPA64QtLppE72rSR7oRS/Bs6RdHLW3x34VSHtqmP/EHCipCXy9kOkgUpBUAc+RKpp3rIWLyGmNewJ\ntbNZJM1HmuPyCWArhm8iziqkL2AV0s3PLXPzJbbPKKBddewzgCNsf7LVmceNz6AuSJof+L3tdfsd\ny3Skdp05gKTZtjeqSFvA9bZfXpF+ZbFn/cuBzSscYRoEU0bSmaSJXv484ZODotTVZjk/zx14WulO\ny7YlXS1pU9tXltTOVBZ7ZjZwpqRTGfbKixXyCoIuWZo0deKVwOO5LQrB9YC6Xpk/BiwCPEuyLCCd\nEIsX0r8ZWIuUC9t+wpXIZqk69uNbmu3ttt9XQj8IuqFtQN4IbA/1NpLpRy0786ppG6U5ghilGQRB\nU6mrzYKklYDVaIvR9sUltG3PyTcTl6OCY1Bl7JKWBT7A86el27uEfhB0g6RdSCWal2M43bfYL9Ng\nbGrZmUs6gpQueCPJrmhRqkP8D9KQ+Ps69Lse2FN17KSJKS4GziPqmQf140jgzbb/0O9Aphu1tFny\nPJcb2H5ywidPTf82YFPbf6tAu+rYK82WCYJukHSp7S0nfmZQmlpemQO3AQvSVq+7MHeQ6ptUQdWx\n/1zSm2z/oiL9IJhnsr0CcJWknwI/o4JpE4OxqdWVuaSj8+qKwEbABRQscC/pE3l1PWBd4OeMPOGO\n6kK76tgfY9hOeSEp7lZp0fAkg76Ss6xGlJRufzyyraqnblfmVzN8EpzNOCfHFFks69wB/IV0Bb1g\nAV2oOHbbi3arEQRVYXuvfscw3anVlXkLSYsC/7T9bN6eASzUqkRYZ6qOXdLOwIW2H87bSwIzbf+s\nhH4QdIOkE4CPtZ2fSwFfjmyr6qlr1cTzgYXbthchZW8UQdJ5uRNsbS8t6ZxC8pXGDhzS+qAA5PVD\nCuoHQTe8ouP8fAh4VR/jmTbUtTNfyPZjrQ3bj5I6xVIs03HCPUjKiy1B1bGPVqp3RkH9IOgGSVq6\nbWNp4vzsCXXtzB+XtHFrQ9KrgX8W1H9W0mpt+qtTru541bFfLekoSWtKWkvSV0h+fRDUgS8Dv5X0\nBUmHAr8FvtTnmKYFdfXMNwF+Atydm1YAdrddpMi9pB2A7wIXka50twE+aPvXBbSrjn1R4CDgdbnp\nPODQJtxPCKYHktYHXku68X+h7Rv6HNK0oJadOYCkBYF18ubNtp8a7/lT0F8G2Ix0wl1h+/4JXjIv\n2pXGHgRB0EltO/NgJJI6ZxNqT30c0W77xB6EFARzkXThJJ9q26+tNJhpSq3yzCXNYXI52bb9kjrp\nVx07sMYk9YOgH8SgoD4TV+ZBEAQDQC2zWSStIWnhtu2Fx6pB3sU+FpS0oaQNssfdOCQd1u8YggBA\n0oZt6wtKOkjS2ZIOk1QyNTcYg1pemUu6GtiiVXlQ0guAS22/upD+m4BvA3/KTS8B/t32L7vQbK+d\n0knXtVPaar+08x7gRArUfgmCbpA0y/Yr8/pRpOnjjgN2Bpa2/Z5+xjcdqJVn3saM9hKytp+UtEBB\n/aOA7WzfCiBpTeCXeZkSrdopObf2r8CP8kPvIhXf6padSamU5+ZtAe8AiqQ8BkFBXgdsYvspSRcD\n1/U7oOlALW0W4AFJO7U28voDBfUfaXXkmT9RriTujraPsf1IXr4F7DThqyZmPdIx2AE4z/bxwGO2\nT7B9QgH9IOiGJSS9LZfCXbiVjpsnNa/fz/8BpK5X5h8CTpL0jbx9J7Bnt6IdNZd/CZySt3el3BXu\n45LeDfw4b78DeGyc508K248AH8ujS0/K8df1yziYflwMvCWvXyppedv3SFoBKDaGIxibWnrmLSQt\nRvpy77ozzHrHM3ppWuX9dJ1eJWkN4GvAFrnpUlIVuTndarftYz5gH2Az2+8upRsEQXOpe2e+NbAp\ncL3tcyd6/nQh15VZ2/Z5OVNg/nzlHgR9QdKqwP22/5kvNvYiVUu8Afie7Wf6Gd90oFY/0yVd2bb+\nAeBoYFHgYEkHVLTP/yust7Ckj0o6RtIPWktB/Q8C/0vKxgFYGTijlH4QTJFfMTwa+XDgjcDlpIux\n73eUvjoAABTHSURBVPYrqOlE3Tzz9oyVfwfeYPt+Sf8DXAF8sRtxSdeTrJX2IfBrt9ptbzj6K+eJ\nHwJ/IN2o/Bzw7rxdio+QPiCXA9i+RdKyBfWDYCrI9j/y+utJ2SzPAj+SFNksPaBunfmMXP9YpPTE\n+wFsPy6pxM+024FHgUOBf+T9XAK8mdHrhE+FtWy/XdJOtk+QdDLwm0LaAE/mVE0AJM1PZAsE/edO\nSa+zfQHpc7YKMEfSi4nzsyfUymYBFifV5r6KlOq0Isy9Edo1tncETiP97Nso35R8xvafC96gbFVI\n/LukDYAlgWUKaQNcJOkzwCKS3gCcSppzNAj6yb8BB0m6hDSv7mxJQ6SZtz4x3guDMtT6BmiLfJNv\nedt/mvDJk9NbFPgCaeTnq22vVEI3a3+A9IWxAXA8yfM/yPa3x3vdPOjPAN4PbJ+bzgGOdRP+kcHA\nI2k9YG3Sr/6/AFe15sMNqqXWnbmklwKvAG60fWMF+huR0vuKdLRBEMyduWst2+fnC7EZefrEoEJq\n1Znnn2Vvt/2ApD1JM+pcDLyGlN709QL7mI90A3FFkk9+J3Blt1e2ktp/SrZuss7VtH1UN/pt+1kb\nOIw0IrRVjGyqZXWDoCg52+oDpHosa+bz9Vu2XzfBS4MuqdsN0Bfbbg3b/xiwue2/5W/3K4CuOnNJ\n2wPHALeSOnFIqX0vlbSP7XO6kF+M1HmvA2wCnEXq0N8MXDnO6+aV44CDyfVlSPm8MWFuUBci26pP\n1K0zf1rSyrbvJGWdtFKdnqTMzdqvA6/vvNmZR23+Clh3qsK2D8lalwCvav2slHQwXRTwGoWF889X\n5fdxiKRrSL9igqDfRLZVn6hbZ/7/gHMknUYaOXaBpHOBrUhXpN0yA7hrlPa7KHcslgWebtt+OreV\n4ol8E/RWSR8lVWh8YUH9IOiGzmyrfYhsq55QK88cQNKSwDuBl5IGEf0FONP2TQW0DwB2JxXBatks\nq5CKYZ1iu+vJHvKJvDtwOslmeSvw0xLaWX9T0iCkJUkZOYsDR9q+vIR+EHRDZFv1j9p15u1IWoJ0\nc69Y3ZGcOrUTwzXG7wLOKpktkysbbk36eXmx7VmltIMgCEajlp25pE2AH5CuOgEeBt5vu/YTMUha\nhnRT9TngtoIVH9t/qraXJDDMHRAVBH0lsq36R9088xY/APaxfQmApK1yW4naKZWccJLWJ5W+XR1Y\nDZgFLCPpIlIJ3L93FTR8Of/dGVieNJORgD2Ae7vUDoJSRLZVn6jbcP4Wz7Q6cgDbvwFKltA8jlR1\n8BnSCXcCcFKXmj8APmJ7LWBL4Cbba5DqmX+/S21sD9keArayvbvts22fZXsPkqUTBHVgYdvnk371\nz8lZXm/qc0zTglp15pI2zn7zRZK+I2lmXr5Fmv+yFFWccAvZvhnA9pWk4fzY/h7w8i6121kkz1kK\ngKSXADH7eVAXRmRbSXobkW3VE+pms3yZkTmpB+e/omyuahXpfX+SdBBwIfA2ks2CpAUpV5ERUvrm\nhZJuz9urAx8sqB8E3fCfpIuLfRnOtnpvXyOaJtTyBmjVVJHeJ2kp4EDgZcC1wOG2H80ZOevZ/m33\nkc/d10KkAU4Gbrb9RCntIAiaSS07c0mHkTrXh/P2UsAnbH+2v5H1F0mLA8vYvq2jfUPbMQFA0Dfa\nz8H8a3Q/8pSPwKFtE1cEFVErz7yNN7Y6cgDbD1HRTRRJtxTWOy8PfGptLy2pm5ovLZ3dgJuA0yTd\nmH9dtDihW/0g6JL2c/BwYE2SbboIw1McBhVSN8+8xXySFmrZB5IWJhW87wpJj/L8aeMWabXbXnz0\nV84Ty3R8ET0oabkCup8BNrZ9d+7IT5R0oO3TC2gHQUleR5o27qmcmhu/GntAXTvzk0h1WX5A6njf\nB5xYQPc4kk/+adv3KFUD+lNOISzFs5JWs/1nmFvb+bkCujNs3w0pW0bSdsDPJa1SQDsIumWJnLki\nUrbYU5CukCTVz8sdQGrZmds+Ik8C+3rSlfTnuyxP29LdV9KrgZMlnQl8o1vNUfgMcImki/P2NpTJ\nNnlE0potvzxfoW8HnAGsX0A/CLrhYuAtef1SScvnC6YVgPv7GNe0oZY3QKsmpyV+FHg7aUaUFQrr\nLwNsRvoiuqI1MXWXmhsBj9v+Y0f7gsButn/U7T6CIGguterMJe1t+wd5fWXSTZWNgRuBvWyXvlm5\nImli5yL1xrNt82qGa7PcXKLaYxDUHUm7MM5YkLi3Uz1168xn2X5lXj8VOI80FH5H4KNVTD0l6TDb\nBxbQ2ZZ09/5h0hfQZSR//mlgT9t/6VL/Mcb+sJS6eRsEU0LS8aTzc1lgC+D/8kPbAZfZfnOfQps2\n1NIzz6xje9e8fkaesacrJB09SvN7JC1G6hD37UL+a8Ab/P/bu/dgvaryjuPfH5AQSGKCJqUxJhgL\nYkCRS4IUESoqxNYKWBEdMoAXlCpUxFKtVaojo6BgLEO5jARLi0FERJl2EiBMA5PW5kKgJAELNKSQ\nECItt0IxN3/9Y63NeXlzP+/eZ2/Ofj4zZ/Lu/eastSZz3pV1nv2sZ9lP5ZOLZth+Zy7QP5O++s79\nYnsEgKQLSTtWi7DKqfSV8w2hFrbPgJSaS9oktyZfjyNSZwdE0ybzN0i6jPREfIykIbaLU3vKGOtJ\npBovt+drkQ6mKKO07i4dsfHHSJUTsX2HpL8pof3CB213Vo+8Mj8sjmPjQhNMAJ7suF4LTKxpLK3S\ntMn8fPrywBeTDkl+Ov/vXsbRUweQtu9PI+0ofULSX9suY+Vwj6SZpNosH8x/Imk45W7OelHSdNJp\nSZD+MyqlZnoIJZhLOvpxFulzfAopXBoq1qiY+UDJlRkvIR20fLbtfUpocyhwJn21Wa61vSlveNq7\n+xDpHvqZRArpHJlv/QupXnop7YfQq5xvXpRlvtv2LXWOpy0aOZnnCfCTpPzpYfm2bX+ixD52IR02\ne4Tt6WW1G0IIdWhqbZZ/APYGjgfmkVL9Sg0l2P6t7cuBGWW0J2mqpH+WdL2kCblGy3OSFkk6pIw+\ncj/7S7pT0vJ8fZCkVhcgC80maWndY2iDpq7M77N9sKT7bR8kaQgw3/Y7emz30OIlfbH5X5Bi3Nhe\n0kPbi4ALSOmI3yXVHf8pcCypatzv93/kr+jnbtKzhatsH5Jz25fZjl2goTY5z7xb8Rm72vaYAR5S\n6zTtAWhhff7zOUlvIz0dH1tCu4uBfwPWddx7HX3na767h7Z3sz0bQNLFtm/K9++UdOk2vm9n7Wl7\nQZrDX659sWE73xNC1X4MzGLzOkSiL1QaKtTUyfwHkl4LfBW4FRhBOal3JwOfB75b7PqU9KjtXibx\nwgZJxwOjSFUfT7J9S95MtG4737sznpK0b3Eh6cPAmhLbD6E/lgKX2N4spCKp9M1+YXONDLNUKW8Q\n+iYwHvhzYF4ZVRNzWdrvkDb0fJm0UegdwCPAp22XkcuO0vmfV5OyWZ4FHgVOjWyWUCdJRwP/VVQL\n7Xpvqu1FNQyrVRo3mUuaDJxAmmwBVgG32n6w5H4OBb4HHGi7jBDOlsa+mjT2BypofxjwOPDTstoP\nIbx6NWoyl/Ql4GOk+NuqfHsCaePBjba/XXJ/Akbafr6Etiod+0D/24SwM7pKZXQfANNrqYywA5o2\nmT9Mquuwoev+UOAB2/tu+Tt3uP0hpMnvv23PkXQ6MBW4l7TJp9//GAMw9krbD6EXks7IL48k7bS+\nkTShnwwst31WTUNrjaY9AN1ECiGs7Lr/+vxer64iPaAcKunjwO7AzcAHSKfdn99D21WPver2Q+g3\n238HIOlPgaOKRYekK4H5NQ6tNZo2mZ8LzJX0CCkeDCmUsB/pMIleHWH7wLxCXwuMs71O0g3AEnqb\nzKsee9Xth1CG0cBrgP/J1yPzvVCxRk3mOfSxP3A4fWVdVwOLbW8soYsNuZ8NkhbZXpevN/Z6TmHX\n2MeT4oaljb3q9kMoyUXAEknz8vUxwNdrG02LNCpm3ikXwzqKNGnN72V3Zkebc4AP236h6/444Be2\nD++1jxDaLn+eis/SwqK2eahWIydzSReQHpz8jPQQ5QRSCt43K+pvODDC9toq2g+hDXLxuuK3apGy\nrhb2klgQdlxTJ/OHgINs/yZf7wH8u+03l9zPSFLMeYXtZ8tsO4Q2kXQccAVpk1yROvsG0ufrs7Zv\nq2tsbdGomHmH1cAewG/y9TD6fkD6TdIVtj+bXx9FqiXxn8B+kj5j+5967SOElroMeG/3TuRcf382\nKVssVKhRk3nHxoPngOWSiuPd3gcsLKGLzsqFFwIn2l4i6U3ATUBM5iH0z66kRVi31TRsnhmsmvaP\nfA/pgec9wM877s9j6yfT99eo4qGq7RU53hdC6J9rgUU5zbdzh/JH83uhYo2MmVdF0kukmB7AJGCC\n7Wck7UqKyb+1vtGF8Oom6QBSskJnWnFptYnCtjVqMpc0mlRx8ETSSUMGfk1apV/U60NKSW/suvWE\n7fWSxgBH2/5ZL+2HEEJdmjaZ3w7cCVwHrM0HL4wDTgeOtX1crQMMIWxRzgw7H/gTUnhlPSm54Mpi\nq3+oVtMm84e2ln64rfd2ov1ptufk16NJJwwdTiqs/4XIMw+hfyTdCtwCzCXtERlBqvD5VWCV7a/U\nOLxWaNpkfgdwB3BdMbFK+l3Syvx9tt/bY/v32j4kv55JOqHnGuAk4BjbJ/bSfghtVZzX23G92PaU\nnFjwoO39axxeKzQtg+MUYAxwl6RnJD1DymR5HfCRkvuaAnzN9krbM0gPREMI/fOipHcBSDqBXGjL\ndveZoKEijUpNtP008Bf5qwpjJZ1H2mo8qus9beHvhxB2zFnANZL2A5YDnwCQNBb42zoH1haNCrN0\ny//TTwWW2b59e39/B9r7Oq/MV7/S9q/zQ9aLbZ/Wax8hhFCHRk3mkhYWlQslnQl8jvRQ5TjgH+No\ntBCaKx82/iFSTZbfAv8BzCrjWMawfU2LmQ/peP0Z0kPPb5Am81PL6kTStyTt1XG9l6QLy2o/hLaR\n9HnSSV67kzLEdgcmAgskvbvOsbVF01bm9wN/QIpfzy0yT/J799k+uKR+NmurM9MlhLBzJC0D3m57\nk6Q9gdm2j5E0kbQLtJTPbti6Rj0AJR03dU9+bUnjbK/JGxLKtIukYV0ldoeW3EcIbWLSb9abSFVO\nhwPYfiwf0xgq1qjJ3PYbt/LWJlIueFl+BNwp6VrSbwEfB/6+xPZDaJtrSIW2FgDvAi4GkPQ79J0H\nGirUqDBLQdIRwAPFgxNJrwEm215QYh/vB96TL++I4vkh9EbSW0l1y5fZ/lXd42mbpk7m9wGHFhsO\nclXDxRHTDqGZcpx8o+31+fotwB8CK6OA3cBoWjbLyzp3jtneRCp+3xNJEyX9WNJ8SV/pjOVJ+vm2\nvjeEsE23AfsASNoX+CVpV/XnJF1U58DaoqmT+aOS/kzSEElDc9rTihLavZZUHuAcUs3lu3L5W8g/\niCGEfhlt++H8+nRSfvk5wPuBD9Q3rPZo6mR+FvBOUnH7VcARwKdLaHes7ats32v7bNIBtHfnzQ4h\nhP7rjNe+h1Q9kRx2ifosA6BR2SyFXDHxlAqa3q0zJdH29ZKeJP2KOLyC/kJoi6WSLgGeAH4PuB3S\nhjzKP/IxbEGjVuY5rDJd0rR8fbqkyyV9UlIZhbBmklb5L7Nd1F9eVkL7IbTVmaQUxH2A42y/mO9P\nBi6pbVQt0qhsllxjfBRpA89LpC3BN5Nibo/ZPr/G4YUQ+kHST2yXXcI6dGnaZL7c9oE5y2QtMM72\nOkm7AUs6i9/3s/0ZwM2255cx3hDC9kl63PaEuscx2DUqzAJsALC9AVhke12+3kg5cbfpwPclPSbp\nO5Iibz2EMCg07QHok5JG2H7B9vHFzVxvfF0J7a/KR1m9GfgocH1e9c8CbrD9UAl9hNA6kg5jywsu\n8cpqqKEijQqzbI2k4cCIXg9c3lJlRElvBz4GnGw7UhRD6AdJ89jGb8+2owxuxRo9medqifsBK2w/\nW0J7UeY2hDAoNSpmLumKjtdHkc4SvBRYJumPSuji6BLaCCF0kTQqhy+L649IOi1/7V3n2NqiUSvz\nzpVz/rXtPNtLJL0JuMn2YSX0MRF43vazkiYBU4AHbUeeeQj9JOkHwL/a/mG+fgSYDexBKsB1Vp3j\na4NGrcy7jLK9BMD2CkoYq6QvA3eRjrL6FOmHbRpwo6Qv9tp+CC02Fbiu4/p/bZ9j+1PA22oaU6s0\nLZvlLZKW5teTJO1l+5lcAreMJ+KnAQeQtu6vBCbZfio/YF1ICumEEHbebp2VTkmftcLogR5MGzVt\nMp/cdV1sCd4LuKCE9jfafknSeuD/gKcBbL8oKYoBhdB/m4pjHgFsLwWQNJ50UlioWKNi5lWTdEN+\nORx4nhTPuwU4Fhhqe3pdYwvh1UzSdOBc4IvAknz7MFJdlstsx7GMFWvUZC5pmu05+fVoUtjjcGAp\n8IUS8syHkTYLrbF9W/4BPBL4FXB1seM0hLDzcoG8vyKFMiFlo33b9uz6RtUeTZvMO7NZZgJrSAfF\nngQcY/vEOscXQth5ks61/f26xzHYNTmbZQrwNdsrbc8gHUHVk3yIc/F6tKSZkpZKmhW5sCFUJjLF\nBkDTJvOxks7LaYKjut4ro575tzpeX0pa+f8xsAi4uoT2QwihFk3LZrkGGJlf/xAYAzyVC23dV3Jf\nU4CDneJMMySdUXL7IYQwYBoVMweQNBk4ARifb60CbrX9YAltrwK+R1rln0PKM3d+7/5e66WH0FaS\nXmDrhbb2tL3rQI6njRoVZpH0JaBIH1yQv3YBbpD0lyV0Uaz8R9C38qeilX8IrWF7hO2RW/mKiXwA\nNGplLulh4IB8OEXn/aHAA7b3LaGPylb+IYRQl0atzEk7xcZv4f7rKWEX2QCs/EMIoRZNW5lPAy4H\nHgEez7cnkGqan93r5oOBWPmHEEIdGpXNYnuOpP1Juz7Hkx6orAYW53NAe1Ws/Fd23S9l5R9CCHVp\n1GQOYHsT8MuKmj8XmJtrLW+28q+ozxBCqFyjwiwDIZfTrWrlH0IItWjdZB5CCINR07JZQggh9ENM\n5iGEMAjEZB5CCINATOYhhDAIxGQeQgiDwP8Dnx0f93kv3qgAAAAASUVORK5CYII=\n", "text/plain": "<matplotlib.figure.Figure at 0x7fa240170e90>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": null, "cell_type": "code", "source": "", "outputs": [], "metadata": {"collapsed": true, "trusted": true}}], "nbformat": 4, "metadata": {"kernelspec": {"display_name": "Python 2", "name": "python2", "language": "python"}, "language_info": {"mimetype": "text/x-python", "nbconvert_exporter": "python", "version": "2.7.9", "name": "python", "file_extension": ".py", "pygments_lexer": "ipython2", "codemirror_mode": {"version": 2, "name": "ipython"}}}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment