diff --git a/f22/andy_lec_notes/lec31_Nov21_Web3/lec_31_web3_completed.ipynb b/f22/andy_lec_notes/lec31_Nov21_Web3/lec_31_web3_completed.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..41d5165bdacf83ab63abfddb53843f5d8b2fba76 --- /dev/null +++ b/f22/andy_lec_notes/lec31_Nov21_Web3/lec_31_web3_completed.ipynb @@ -0,0 +1,1298 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Web3: Scraping Web Data" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "# import statements\n", + "import requests\n", + "from bs4 import BeautifulSoup # bs4 is the module, BeautifulSoup is the type" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Warmup 1: HTML table and hyperlinks\n", + "In order to scrape web pages, you need to know the HTML syntax for tables and hyperlinks.\n", + "\n", + "TODO: Add another row or two to the table below" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<table>\n", + " <tr>\n", + " <th>University</th>\n", + " <th>Department</th>\n", + " </tr>\n", + " <tr>\n", + " <td>UW-Madison</td>\n", + " <td><a href = \"https://www.cs.wisc.edu/\">Computer Sciences</a></td>\n", + " </tr>\n", + " <tr>\n", + " <td>UW-Madison</td>\n", + " <td><a href = \"https://stat.wisc.edu/\">Statistics</a></td>\n", + " </tr>\n", + " <tr>\n", + " <td>UW-Madison</td>\n", + " <td><a href = \"https://cdis.wisc.edu/\">CDIS</a></td>\n", + " </tr>\n", + " <tr>\n", + " <td>UC Berkeley</td>\n", + " <td><a href = \"https://eecs.berkeley.edu/\">Electrical Engineering and Computer Sciences</a></td>\n", + " </tr>\n", + "\n", + "</table>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Warmup 2: Scraping data from syllabus page" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/andrewkuemmel/opt/anaconda3/lib/python3.9/site-packages/urllib3/connectionpool.py:1043: InsecureRequestWarning: Unverified HTTPS request is being made to host 'cs220.cs.wisc.edu'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/plain": [ + "['<!doctype html>',\n", + " '<html lang=\"en\">',\n", + " ' <head>',\n", + " ' <meta charset=\"utf-8\">',\n", + " ' <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">',\n", + " ' <meta name=\"description\" content=\"\">',\n", + " ' <meta name=\"author\" content=\"\">',\n", + " '',\n", + " ' <!-- Google Auth stuff -->',\n", + " ' <meta name=\"google-signin-scope\" content=\"profile email\">']" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Get this page using requests. \n", + "url = \"https://cs220.cs.wisc.edu/f22/syllabus.html\"\n", + "r = requests.get(url, verify=False)\n", + "\n", + "# make sure there is no error\n", + "r.raise_for_status()\n", + "\n", + "# read the entire contents of the page into a single string variable\n", + "html_str = r.text\n", + "html_str[:100]\n", + "\n", + "\n", + "# split the contents into list of strings using newline separator\n", + "html_lines = html_str.split('\\n')\n", + "html_lines[:10]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Warmup 2: find all lines with 'Kuemmel'" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "<li>Andrew Kuemmel (Teaching Faculty - Department of Computer Sciences) kuemmel@wisc.edu</li>\n" + ] + } + ], + "source": [ + "for line in html_lines:\n", + " if \"Kuemmel\" in line:\n", + " print(line)\n", + "\n", + "# Takeaway: It would be nice if there were a module that could make finding easy!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Learning Objectives:\n", + "\n", + "- Using the Document Object Model of web pages\n", + " - describe the 3 things a DOM element may contain, and give examples of each\n", + " - given an html string, identify the correct DOM tree of elements\n", + "- Create BeautifulSoup objects from an html string and use prettify to display\n", + "- Use the BeautifulSoup methods 'find' and 'find_all' to find particular elements by their tag\n", + "- Inspect a BeautufulSoup element to determine the contents of a web page using get_text(), children, and attrs\n", + "- Use BeautifulSoup to scrape a live web site. " + ] + }, + { + "attachments": { + "image.png": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3UAAAKWCAYAAADuqbC4AAAgAElEQVR4AeydB5hTRfeHVwHBgoioYO9dROyKIqLYe0H4FKzYUbHLZ/lbsQsoFkAU9QMRQREQKSpIERWUpvQuIL132PN/3rlOyIYkmyy7y97kN89zSXLLzJl37ob7yzlzJsdUREAEREAEREAEREAEREAEREAEQksgJ7SWy3AREAEREAEREAEREAEREAEREAGTqNNNIAIiIAIiIAIiIAIiIAIiIAIhJiBRF+LBk+kiIAIiIAIiIAIiIAIiIAIiIFGne0AEREAEREAEREAEREAEREAEQkxAoi7EgyfTRUAEREAEREAEREAEREAERECiTveACIiACIiACIiACIiACIiACISYgERdiAdPpouACIiACIiACIiACIiACIiARJ3uAREQAREQAREQAREQAREQAREIMQGJuhAPnkwXAREQAREQAREQAREQAREQAYk63QMiIAIiIAIiIAIiIAIiIAIiEGICEnUhHjyZLgIiIAIiIAIiIAIiIAIiIAISdboHREAEREAEREAEREAEREAERCDEBCTqQjx4Ml0EREAEREAEREAEREAEREAEJOp0D4iACIiACIiACIiACIiACIhAiAlI1IV48GS6CIiACIiACIiACIiACIiACEjU6R4QAREQAREQAREQAREQAREQgRATkKgL8eDJdBEQAREQAREQAREQAREQARGQqNM9IAIiIAIiIAIiIAIiIAIiIAIhJiBRF+LBk+kiIAIiIAIiIAIiIAIiIAIiIFGne0AEREAEREAEREAEREAEREAEQkxAoi7EgyfTRUAEREAEREAEREAEREAERECiTveACIiACIiACIiACIiACIiACISYgERdiAdPpouACIiACIiACIiACIiACIiARJ3uAREQAREQAREQAREQAREQAREIMQGJuhAPnkwXAREQAREQAREQAREQAREQAYk63QMiIAIiIAIiIAIiIAIiIAIiEGICEnUhHjyZLgIiIAIiIAIiIAIiIAIiIAISdboHREAEREAEREAEREAEREAERCDEBCTqQjx4Ml0EREAEREAEREAEREAEREAEJOp0D4iACIiACIiACIiACIiACIhAiAlI1IV48GS6CIiACIiACIiACIiACIiACEjU6R4QAREQAREQAREQAREQAREQgRATkKgL8eDJdBEQAREQAREQAREQAREQARGQqNM9IAIiIAIiIAIiIAIiIAIiIAIhJiBRF+LBk+kiIAIiIAIiIAIiIAIiIAIiIFGne0AEREAEREAEREAEREAEREAEQkxAoi7EgyfTRUAEREAEREAEREAEREAERECiTveACIiACIiACIiACIiACIiACISYgERdiAdPpouACIiACIiACIiACIiACIiARJ3uAREQAREQAREQAREQAREQAREIMQGJuhAPnkwXAREQAREQAREQAREQAREQAYk63QMiIAIiIALhIrBhrdmcoWazBuazDTJbMCroW26u2ZpFwflcu3ZpuPosa0VABERABEQgCQGJuiRwdEgEREAERKAEElgxy6ztXmYtyyXfWu1k9tUFQQc2rjOb3js4n2tnDSqBHZNJIhAOAuvXr7epU6fatGnTbOPGjeEwWlaKQIYTkKjL8AFW90RABEQg4wismGW5H+xh1jzH7J3yZh8dFH9rf5jZd9cH3d+41mzqt+4ad+3fP2UcFnVIBIqDACJu4sSJ1rBhQ7vjjjts5syZxdGs2hABEciHgERdPoB0WAREQAREoIQR8KKuZSmz/1UzG98xwfa52cwfAuMl6krYIMqcsBJYs2aNffnll1amTBmrXLmy9ezZM6xdkd0ikFEEJOoyajjVGREQARHIAgLRou7ri1LrsERdAk65lrt+teUu/zvBce3OBAK5ubm2atUq+/vvLR9nPHUTJkywSy65xOrVq2czZszIBETqgwiEnoBEXeiHUB0QAREQgSwjIFFXSAOeGySMmdzNbNirhVSnqilpBBB0S5cutW7dutmrrxbOOFPn2rVrDa+digiIQMkgIFFXMsZBVoiACIiACKRKoKhEHRky1y4zWzbdbOFYs0UTzFbMNiPbZnTx5y2fFni4cjeYbVxnuctnmS0eZ7Z0qtmaJVFX5JqtW/FvvWPMlkwO2ok6I89bX39+driLqHu5mbNlZmAr9pJMBlsWTzJbvcgsNzaZxb+CbtxnwXzEPje7OqjHls0wW7N4k0kb1wf9hMmCP82WTQkyiW46I+k7BMCyZctcUg08RRs2bLB169bZrFmzbNy4cS7hxpIlm3hx/ooVK2z69Ok2ZswYmzx5srs+XiOcu3z5cuctoq6//vrLXYdXKrrQJm1T5+zZs6MPRd7jgfrnn3/cOZybagIQby9zy8aPH+9s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lL/++suqV6/uljLwi5LHPVk7RUAERCCEBCTqQjhoMlkEREAEREAERCB1AmR2ZFmD3r172/fff6+5dKmj05kiIAIhISBRF5KBkpkiIAIiIAIiIAIiIAIiIAIiEI+ARF08KtonAiIgAiIgAiIgAiIgAiIgAiEhIFEXkoGSmSIgAiIgAiIgAiIgAiIgAiIQj4BEXTwq2icCIiACIiACIiACIiACIiACISEgUReSgZKZIiACIiACW06ABahXrFjhEmVMnz7dFi5caGRGzOZC///55x+bNGmSLViwIJtRqO8iIAIiEFoCEnWhHToZLgIiIAIikA4BMiAiXNq3b29NmjSx2267zV599VUbOnSoE3rp1BXWc9etW2dz5syxVatWRbqAyH377bftuuuus08++SSyX29EQAREQATCQ0CiLjxjJUtFQAREQAQKSABvFIKuQYMGVrp0acvJyXFbqVKl7JhjjrEuXboYoi+Ty/r162348OH2xBNP2HfffRfp6uLFi+2WW26xnXbaybR+WwSL3oiACIhAqAhI1IVquGSsCIiACIhAQQgsW7bMnnzyyYiY86KOV4Rd1apVbfLkyQWpOjTXLF++3J5//nkn3urVqxexW6IugkJvREAERCC0BCTqQjt0MlwEREAERCBVAiw8vc8++8QVdQi7ChUqWPPmzVOtrsjOIzxy4sSJxmu8kt/xeNf4fVzbv39/Q9B16NDB77biEnVbYnvEWL0RAREQARGIS0CiLi4W7RQBERABEcgUAiRHQSjhkYv20EW/33HHHe3BBx8ssi5jw9q1a43XRAXRM3jwYLv++usNz2Jsye947Pl8pr38wkrjibpU7I3XXqJ96dqOzfnZ7ftHWGkyrols0n4REAERyCQCEnWZNJrqiwiIgAiIQFwCM2bMsN122y2hqNt5553t5ZdfjnttQXciNJYuXWp//PGH/fjjj/bVV1/ZTz/9ZOPHj3cCL7peBN+gQYOsZs2atvvuu1vfvn2dwCOJy6xZs9z5yY77DJZDhgyx0aNHO0GEd5JrqGvcuHG2evVqY9/PP//sbPDte1GHsL3vvvvszz//tO+//97NMxw4cKC7FlHmC2JrypQprh5eo0u8Y/n1zV/PtfSVPvfu3dt69eplw4YNs7lz5/pTIq/YQ9u//vqrde/e3fEdOXKksndGCOmNCIhAthGQqMu2EVd/RUAERCALCSxatMh5wLbddtvNhB37DjnkECeACgsNgg6x9N5777lELOXKlXOeQoTTpZdeaj/88EPEu4RAQTzVqFHD2YY9iEw2QkbfeOONpMdbtmzpslm2a9fOdt11V7vgggts6tSpdu+99zqBuP3229sll1zikqSQ7RPRePPNN0e66kVd2bJl7YwzzrDatWsb70kogw0XXXSRE01e2CFUH3nkEatSpYo9+uijkXp4wzH2cYxz8usbtlPwtiHKHnjgAddn2t9hhx3cuDzzzDM2bdq0SDvUifAj6Q3jBlOSvJx44on2zjvvRM7TGxEQARHIJgISddk02uqrCIiACGQpAUQDXp/jjz/eEDk+9JKQzIMPPtiefvrpiMgqDER4nfAiITYOO+wwJ9jOOeccJ0IQS6eccoohNClLlixxQqh69erOLgTN6aef7rx2CLT3338/6fGOHTs6UffBBx84IXbsscfaCy+8YCeccIKdddZZduSRR9qhhx5qXbt2dYlSqJ/lC3zxom6bbbZxbMgGet5557nt8MMPt+22286OOuooGzFiRMTexo0bO9GFZy+60Bf2Icg4J7++YTteRkQo4rFMmTIuaQ0i9PLLL7cjjjjCiba77rorsgwDa+ldccUVrq/YddNNNzmhDD+uUxEBERCBbCQgUZeNo64+i4AIiEAWEkDYIbTq169vJ598shN4derUcd606HXbCgONb+vcc8914YEIJ9aD+/zzzw2vHd4yQhx9WbNmjfM+ITb33ntvJ/iogw3Rk99x7EfU4eWrVKmSXXnllZGQS7yCzZo1c/P0yH6ZSNQhqBCThGwiSmmzR48eztOIEG7UqJETvgi1VEUd/cvP9pUrV1qrVq2cJxORRvv0m+t69uxplStXdhv7KSyUfvTRR1v58uWdSMVzx4Zob926tUeqVxEQARHIKgISdVk13OqsCIiACIiAn7vFPLPCFnOeLkJs3rx5NmHCBL/LCSXmqx1wwAEuTPKLL77IcwxR4kVdbKIUbE523Is6rkfUdevWLVK3f+OXNEgk6uKtU0e9H374oeHF23///Z0wTFfU5Wc7nJhLiHePBeFZT9Bv9BlvJbaxvh4FgXzHHXc4cUq4KHMGqUNFBERABLKZgERdNo+++i4CIiACIlCkBJhbhzAaO3as9enTx5599lnba6+9nKgj9NCX/IRPfse9qEN8EU66cOFCX3XktSCiDvtZvw8vHvPkEKWFLepmz57t5tHhwSQEE4+g35j7h+Cj7dtvv931Ba/cgAED7LjjjnPhosw7xAOJEERMq4iACIhANhKQqMvGUVefRUAEREAEipwAAuPvv/+2zp072zXXXGOnnXaaXXbZZbbffvs5URe9Vlx+oi2/417UMV/vzLUocBEAACAASURBVDPPjNu3gog6KiJzKAlT9thjD+ctRNT5eXMkY4ku0ccI0aTkZzsZL8lMiqeONfQeeuihzTaSrxBe6gvCjuQyzLtDJBMeyjxBkq2oiIAIiEA2EpCoy8ZRV59FQAREQASKnAAC5/HHH3fzwRo2bOiWKGA+GCGDZKmMFXXDhw+PhF8SYhhdEEbJjkeLOpKjxCsFEXXMbWPtPDyA++67rwtzJMPlww8/7IQU4ZLRJZGoS2Y7oZNnn322VaxY0T7++OPo6vK8j/XC4UXEI/n666+7eX8kdLn44ouLLKQ2jzH6IAIiIAIljIBEXQkbEJkjAiIgAiIQfgIIkFGjRlmFChXsoIMOcvPA6BUChqULYkUd57O+HHPifJgj57PGG9keEVfJjpOExWe/LKioY2kAliHw4gkhSegl89cIvyTpC0IKcfjSSy+5rJjnn39+RERx3fTp0+3aa6+NZL+kD/n1DSHYtGlTN0fuwgsvdGGU9Ndfy/xC5iYSwkqBye+//+7CQP3nb775xiWJIanKmDFj3Hn6RwREQASyiYBEXTaNtvoqAiIgAiJQLAQQHiyejfeItdQQZIQZEjJIhkfE3ptvvukyVGIQYom12BB7ZHVE5LAWGwlPXnvtNSNDZLLjCL8tFXXMaSNrJolHWKCc1wcffNAtKYAw9clXyEr59ddfu+QlhGTicWS5A+wly+Yuu+ySR9Tl1zdEHYuys3wCNtStW9dl3WQh9X79+rmMlldffbU1adLEjR1z8Fi2oUWLFs5OvIBt27Z1wpPModiuIgIiIALZRkCiLttGXP0VAREQAREocgIIGebTsS4eIgcv12OPPebmjCE8EHusVXfrrbdGbCHk8s4773RhiKyfx3lkfaxWrZpb1DvZccI6Cyrq/GLi2MmSCLTNkgvMcaN9BNRzzz0X8eDRN9pjDhvXIMRIWsK6eFWrVnWhkH6dOt+5ZLbT/urVq61Tp05O2CFs4UM4Jq/UxRIGiGAKog6RiW3MxaNNzuE9y1XgtVQRAREQgWwjIFGXbSOu/oqACIiACBQLAYQKYYEIDdZ/u+qqq6xNmzbWvHlzlzSFxchbtmwZscWHLzJfjRBNruFazsHzl+w4IYq0Vbt2bbv//vsjdUa/Yd7dJ5984gQmWTh9oW6ySXIdNpHQhXX8mOeG6Ozdu/dmC7NjCwlUuIbzmCfIuWT4xF4WL8eT5ksy22mfAi/WpSMpCmGYp556qtWqVcsaNGjgks3graTQD7yD7IcTtnIe1+HNVBEBERCBbCQgUZeNo64+i4AIiIAIFBsBBM2iRYsiwojPJPiIXYvOG4QnjHlridZey++4r6cgr8yjw7aZM2c6IZlfHdiCyKJ/qZRUbWdOHf0ny2Wi4uvCVnnnElHSfhEQgWwhIFGXLSOtfoqACIiACIiACIiACIiACGQkAYm6jBxWdUoEREAEREAEREAEREAERCBbCEjUZctIq58iIAIiIAIiIAIiIAIiIAIZSUCiLiOHVZ0SAREQAREQAREQAREQARHIFgISddky0uqnCIiACIiACIiACIiACIhARhKQqMvIYVWnREAEREAEREAEREAEREAEsoWARF22jLT6KQIiIAIiIAIiIAIiIAIikJEEJOoycljVKREQAREQAREQAREQAREQgWwhIFGXLSOtfoqACIiACIiACIiACIiACGQkAYm6jBxWdUoEREAEREAEREAEREAERCBbCEjUZctIq58iIAIiIAIiIAIiIAIiIAIZSUCiLiOHVZ0SAREQARGIRyA3N9dWrFhhs2bNsunTp9vChQtt48aN8U7VPhEQAREQAREIDQGJutAMlQwVAREQARHYEgIbNmywSZMmWfv27a1JkyZ222232auvvmpDhw51Qm9L6ta1IiACIiACIrA1CUjUbU36alsEREAERKBYCOCNQ9A1aNDASpcubTk5OW4rVaqUHXPMMdalSxdD9KmIgAiIgAiIQBgJSNSFcdRkswiIgAiIQFoEli1bZk8++WREzHlRxyvCrmrVqjZ58uS06tTJIiACIiACIlBSCEjUlZSRkB0iIAIiIAJFRmDmzJm2zz77xBV1CLsKFSpY8+bNi6T9devW2cSJE43XrVG2dvtbo89qUwREQASyjYBEXbaNuPorAiIgAllGgOQoiCo8ctEeuuj3O+64oz344IOFTgZBNXjwYLv++usNb2F+hRDQwgwDTbf9/OzTcREQAREQgZJJQKKuZI6LrBIBERABEShEAjNmzLDddtstoajbeeed7eWXXy7EFs3Wrl1rgwYNspo1a9ruu+9uffv2dQKPxCxk3/QFEcdn9vfu3dt69eplw4YNs7lz5/pTbP369TZ+/Hh3/fDhw23VqlWRY7xhzuA///zjjv/yyy/ufart56lIH0RABERABEJJQKIulMMmo0VABERABNIhsGjRIuct23bbbTcTduw75JBDnABLp85k5+IhGzhwoNWoUcO1RxsIRzbCQFu2bOkuR6yNHDnSHnjgAbe/bNmytsMOOzh7nnnmGZs2bZo7b/ny5fbiiy/avvvua0cccYT16NEjEs6JJxIB+NRTT9muu+5qJ510kjueSvvJ+qBjIiACIiAC4SEgUReesZKlIiACIiACBSSAeML7dfzxx9v2228fEXaEZB588MH29NNPG+KosMqSJUvs0UcfterVq7u2EGunn36689pdcMEF1rFjR+ddmzp1ql100UVWpkwZl6zlkksuscsvv9wJN0JC77rrLueVw7Z58+a57J3sJ2PnkCFDXB1Lly619957z9i/9957W4sWLSyV9gurr6pHBERABERg6xOQqNv6YyALREAEREAEioEAwu7XX3+1+vXr28knn+wEXp06dZwgig1nLAxz1qxZ40IqmbuH2MJbiA1shEuuXLnSWrVq5eb6HXXUUc5TyDGu69mzp1WuXNlthHBSuAYRiChEmBLWSSjmV199ZVWqVHFeukceeSTiwcuv/cLoo+oQAREQAREoGQQk6krGOMgKERABERCBYiLg57CNGzdus7lphWkC7eAd9KIuNlEKnjeEGeGWLITOOnp+4zrE20477WRPPPFExCzqHDFihBOl5cqVc9cfffTRzkvHGnx46HzJr31/nl5FQAREQATCT0CiLvxjqB6IgAiIgAiUQAL5iarZs2e7eXSIM0IwGzVqFNluvvlmJ9jwwN1+++15esd8PZKu7Lnnnk4wspg6oZ1+/p0/Ob/2/Xl6FQEREAERCD8Bibrwj6F6IAIiIAIiUAIJ5CeqyHhJRk48dfXq1bOHHnpos415eR988EGe3hGGyRINZ599thN1XH/nnXfm8dJxQX7t56lUH0RABERABEJNQKIu1MMn40VABERABEoqAUQVc958+OXixYvzmEr4JcKsYsWK9vHHH+c5Fv0BEeeLz3RJYheSq+DJq1SpkhOHH374oZun58/Nr31/nl5FQAREQATCT0CiLvxjqB6IgAiIgAiUQAKIsdGjRztRh/j6888/nZWsH7dgwQLnWWvatKmRGfPCCy908+lIlELhWubgTZgwwcaOHev2IejYh+eOuXYsb/DSSy+55RBYKoHPX3/9dSRRSn7tR4tF14D+EQEREAERCC0BibrQDp0MFwEREAERKMkEEGHMc2PtuPLlyxsCjgXGu3XrZq+99poTdT/99JMdfvjhxry6unXruvXlWKqgX79+1rp1a7v66qutSZMmrpurV692oo25dHjnHn/8cSfgWHT8hhtucMlSjjzySBswYIALvcyvfbJvqoiACIiACGQGAYm6zBhH9UIEREAERKAEEiDkkvluhFiyJh5LG+Blq1atmrG+HEKtU6dOTtgh/rbbbjt3Lq/MlSOz5ZtvvumWQRg8eLBbn4716Bo2bOiup8t43Px6dyx1cOqpp7oMmYi6/NovgchkkgiIgAiIQAEISNQVAJouEQEREAEREIFUCCC4pk+fbg8//LDVqFHDZalknbyWLVsaYZgUhB3r0pEUhTBMRFmtWrXcQuOdO3d28+QIuyTUkv1cHy/T5ZgxY+zSSy811t7jXNpOpf1U+qFzREAEREAESjYBibqSPT6yTgREQAREIAMI4DVbvny5kRwlWWFOHeewbEFhllTbL8w2VZcIiIAIiEDxEZCoKz7WakkEREAEREAEREAEREAEREAECp2ARF2hI1WFIiACIiACIiACIiACIiACIlB8BCTqio+1WhIBERABERABERABERABERCBQicgUVfoSFWhCIiACIiACIiACIiACIiACBQfAYm64mOtlkRABERABERABERABERABESg0AlI1BU6UlUoAiIgAiIgAiIgAiIgAiIgAsVHQKKu+FirJREQAREQAREQAREQAREQAREodAISdYWOVBWKgAiIgAiIgAiIgAiIgAiIQPERkKgrPtZqSQREQAREQAREQAREQAREQAQKnYBEXaEjVYUiIAIiIAIllUBubq6tWLHCZs2aZdOnT7eFCxfaxo0bS6q5ce3C3nnz5tmkSZPca9yTwrIzd6PZ6oVmSyaarZwTFqtlpwiIgAiUOAISdSVuSGSQCIiACIhAURDYsGGDE0Lt27e3Jk2a2G233WavvvqqDR061Am9omizKOpcuXKltWnT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kTZ69GgbM2aM/fXXXzZ27FgbP368TZgwwSZNmmSTJ0+2qVOn2rRp02zGjBk2c+ZMJ3Znz55t//zzj82dO9cWLFhgixYtcoJ32bJltmLFClu9erUTqgjSZCGrxT/CalEEREAEREAERCAMBCTqwjBKslEESiABxAfC5cknn7R99903EGf/Cjov7ErS67bbbmtlypSxsmXL2g477GA77bSTVahQwXbddVfbbbfdrHLlyrbnnnvaPvvsY/vtt58deOCBdsghh9jhhx9uRx99tB133HF20kkn2WmnnWY1a9a02rVr2/nnn28XX3yxXXHFFXbNNddY/fr1rUGDBnbLLbfY7bffbvfcc4/zXD7yyCP2xBNP2NNPP20vvviivfbaa9ayZUv74IMP7OOPP7aOHTtaly5dnCDt27evIUIRn4hOBCciE4H5xx9/2KhRo+zPP/+0cePG2cSdjRbCAAAgAElEQVSJE23KlCk2ffp0Jx69aMRDilgk/BWhqCICIiACIiACIpDZBCTqMnt81TsRKDIChEAyd+7SSy+1gw46yImlaBFXqlQpF4aJ4GNDKPlt//33d+KpXLlygRjcZhvLKbuj5ex2wKat0gGWU2n/PNs2lfa3HStvqsfXx6tvh1eEGeGfbHvttZcTa4SEItzY9thjD9t9992dmMOjiLCrWLGi7bLLLm5D7O28885Wvnx5J/4Qgdtvv73r43bbbefEIf1DKEb3ubDeUy9ssANb6RMC89hjj7VTTjnFatWqZRdeeKFdffXVdsMNN1ijRo2cePzvf/9rzZo1s7ffftt5Qjt16uS8lohEBCLiEK8j3kZEId5FBCGeRDyIS5cudV5DeQuL7M9GFYuACIiACIhAkRCQqCsSrKpUBLKDAPPVEAIdOnSwyy+/3A4++OCIuEOQvPDCC/buu+/a+++/77xSrVu3trZt29qHH35oLVq0sMMOOywQRYRfHnSq5dz6ieXc2j7YbvnYcm7+6N+tneXc1M7K3PKhnf5oW2vTpo3bqI8NjxdtsL333nuuTYQNbbz55pvOM/byyy+75C3Y9OyzzzqvGV5GPGiPPvqoPfzww9akSRMnju69916766677I477rBbb73VbrzxRvvPf/5jdevWtSuvvNIJ2QsuuMDOPfdcO+uss+zMM8+0M844w04//XTnyUN4nXzyyXbiiSfaCSecYMcff7zz9CHKjjnmGDvqqKPsiCOOsEMPPdQxwyuI0EW8IUIRoIg5PIiITVgiMBGXeBpLly5t2yCEU/SMIkARqdSP1xFvI/bTn9tuu831HQ8iY/X5559b7969XXgqIhDvIKGmhJaSBGf+/PlG2CiiXvMVs+PvXL0UAREQAREo+QQk6kr+GGWlhaS22JhbfJtSaWzZbcbDPQ/6eIauuuoq51VC4OH9SVQyKfslIY6rVq1yDBYuXOjmziGAmFtHiCRz7wibJISSOXwklGHOH/MBO3fubJ999pkTuoiqt956y1555RV77rnnDM8bYrNx48YunJPQTsI8L7roIjv77LOdkESgISARj9WqVXOijZBRPHsHHHCA81oiEhGIiEOEId7GZKKQYzvuuKMTgdRJqGm9evWcHdiFeCZclH4wF5H5hswtxOtHCCj3AslrVERABERABERABIqHgERd8XBWK2kQQMwtW2c2a4XZrJVFv81ZabZ4bRoG6tSkBJjLRYIU5pMxtytRySRRl6iPRbkfIc2cOZKukHmUZC141ZiLh2BkDJiv16pVKycSEYiIw4YNG7o5gAg1so8iCKtXr+7EIJ5ThCDeQi8CCTvF0xfPK4jHEMHI9cwtxOvHvEG8pSSxwRYSzSBqEXx4+VauXKlkMEV5Y6huERABERCBrCQgUZeVw16yO716g9lPc8yeH272/B9Fu73wh9mrI8y6TS/ZTMJoHfOyks3NkqjbuqOKKFy+fLkLqSTxChlByVCKEMRbiDgjDJWw0/POO8+FluINJHyUsFHmMTI/kXmIzP+L9fx5bx9ewzp16jjBh5evffv2bi4moZ20izcTjy4ZQFVEQAREQAREQAQKRkCirmDcdFURESAMctEasxd+NyvzgVmZD4t2266tWcWPzG4ZUEQdUrUJCUjUJURT4g4gAJk7SSgp4aN44ZjXyDw81iVkbh7JW8gOWrVqVSf6SFaDt49wz9iEMmQhRRSSRZRMoSxUT+guwpJlI0jgwhIQhLSqiIAIiIAIiIAI5E9Aoi5/RjqjGAl4UffccLOcd81yWhfttk1rs/IfmjXsX4ydVFOOgERdZt0IJE5hiQvW+WMtQsI+CflkHiChngg+krSQFAYPH4lfosM68ewx54+kMohErmWuIUKPbJ2EbxJqqiUaMuu+UW9EQAREQAQKh4BEXeFwVC2FRCCPqHvPLKdN0W7btAlE3Y0SdYU0gqlXI1GXOquwn0nSFMIsWfz9008/dR4+1vFjnT/EHovQk5mTTJ8kcfHz9xB6hHeSDIYspG+88YZbooGEM3gNmaOnhCxhvztkvwiIgAiIQGEQkKgrDIqqo9AISNQVGsoSX5FEXYkfoiI3EK8bHrh+/fq5jJpk+iR76qmnnurm7hGiiagjIYsXerwnsypr9LE8Rffu3V0yFpZcIPOoPHlFPmxqQAREQAREoAQSkKgrgYOSzSZJ1GXP6EvUZc9Yp9NTkuuQOIXF0lmD8IEHHnALrZOkhQQthG6SkTNa5JGMhSUXWAqiV69ebl4eS0poTl465HWuCIiACIhAmAlI1IV59DLQdom6DBzUBF2SqEsARrs3I4D3jeQprOvXrFkzl5ETbx5iDpFH9k0v8njPou/33XefdejQwX777TebMmWKW16DhC8qIiACIiACIpCJBCTqMnFUQ9wniboQD16apkvUpQlMp0cI4M2bM2eOffvtt25+3rXXXuvm5uHJq1SpUiQBC4lYSMzCsgxvv/22WzePuXisnyiBF8GpNyIgAiIgAhlAQKIuAwYxk7ogUZdJo5m8LxJ1yfnoaOoENmzY4DJvstRC06ZN3bp6rKfHIurei0fSFZZYuPLKK53AY2kG5uEt+3/2zgNKiuLr4rNkWJCcQRBB8BMRAcUMIqioICYwAQIiooIKRsS/igIiouSco4iCApKRnHPOOWeWuAu73O/camuZnZ3QPXl2Xp3TzOxMdVX1r2qauv1evbpwwXxFklMICAEhIASEQJgSEFEXph0Trc0SURc9PS+iLnr6OthXyrV0y5YtU9EyuT0C1+OVLFkSsbGxyk2T++YVLlwYr732mlq3x43QuR1DfHx8sJsq9QkBISAEhIAQ8AsBEXV+wSiF+IuAiDp/kQz/ckTUhX8fpYUW0opHl8thw4ahSZMmSuAxqqYOtkIXzRIlSqBFixaYOHEitmzZoqJointmWuh9uQYhIASEQPQQEFEXPX0dEVcqoi4iuskvjRRR5xeMUogFAhR4DLjCqJpcZ3fvvfeiaNGiyJw5s7Lg0VWzevXq6Nq1q7L0ifXOAlzJKgSEgBAQAiElIKIupPilckcCKURdX282Hr9hacPymIHG5uONZPNxx64I+N8i6gKOWCpwQ4ARNWmV69mzJ+rVq6c2QOfm51x7R/fMYsWKgRukc53ezp07cfnyZTelyVdCQAgIASEgBEJLQERdaPlL7Q4ElKhLADqtA2IHALFDzR/ZBiciY+84ZBt03fR52YcABYcDzRY6NET+DDgBEXUBRywVmCRw9epV/Pvvv2jTpo3a+Lx48eLJ1rts2bKhbt26GDlypBKBjJwpSQgIASEgBIRAuBEQURduPSLtwYVrwNhdwPNTgeenmz1u4Mk/4nDbV9NRa/xZPD/D7HlAg5nAzxsFfLAJiKgLNnGpzxMBbpVAl8v+/fsr6125cuWQI0cO5ZpJF81q1aqhd+/eWL9+vdog3VN58r0QEAJCQAgIgWAREFEXLNJSj2kC15OAw5eAFceBFSfMHctP3MDk9Qfx8tut8dfqvVhx0tx5LH/VSWCPRDU33T/+yiiizl8kpZxAEGAEzVmzZikXzAoVKiBPnjxK3GXIkAEVK1ZUm6CvWbNGBVUJRP1SphAQAkJACAgBKwRE1FmhJXnDlgAj1fEJ+/vvvov9e3eHbTulYTcJiKi7yULehS+Ba9euYdWqVfjkk09QpUoVFChQQK25o7jjXng//fSTstyJW2b49qG0TAgIASEQDQRE1EVDL0fBNWpR17JlS7WhcBRccsRfooi6iO/CqLoARs7csWMHvv/+ezz00EMoVKhQsrhjFM0+ffpg69atElAlqkaFXKwQEAJCIHwIiKgLn76QlvhAgGthDhw4AC3qZI8pH2AG6VQRdUECLdX4lYC+13Tu3BkPPvigstwxYmamTJnwxBNPYNy4cdi3bx8oAiUJASEgBISAEAgWARF1wSIt9QSMAAVcfHw81q5di7feegurV68G18NICm8CIurCu3+kde4JULTt3bsX3377LSpVqoRcuXKpNXfZs2dH48aNMW/ePHCMSxICQkAICAEhEAwCIuqCQVnqCCgBTq4OHTqETp06qXDkHTt2FBfMgBL3T+Ei6vzDUUoJLQHud7dx40Z8+OGHaq+7rFmzJu9zR1fNzZs3g1smSBICQkAICAEhEEgCIuoCSVfKDgoBirrt27ejTp06Kvw4XaC4qbCk8CYgoi68+0daZ41AQkIC5s6di1deeQUlSpRQwo4umdWrV8fEiRNx7NgxawVKbiEgBISAEBACFgiIqLMAS7IGlwA3Ijd13LiBc+fOo0+f3ihdujTat2+v3DFNnftfHcG9MqmNBETUyThIawToCh4XF4fBgwerYCp0yeR6O26H8Pnnn2PTpk3q3pTWrluuRwgIASEgBEJPQERd6PtAWuBAIOkGcOk6cOKKueP4FeDIhUQs3rgDjT/4BFMXrjJ9Lus4eQWIS3BohPwZcAIi6gKOWCoIEQF6D+zatQutW7dGmTJlwO0PMmbMiEcffRSTJ0+WjctD1C9SrRAQAkIgLRMQUZeWezdCr+1qIrD4GNB5DdB5ncljPfDting0nbAd3yy7Yv68dUC3DcCUAxEKK4KbLaIugjtPmm6KANfS0fWSLpjaasetEH788Ufs3r0bjKQpSQgIASEgBISAPwiIqPMHRSnDbwToMnkuAfhxPXDLYOCW4daOXCOAnCMsnDMMKDISeGeR3y5BCjJJQESdSVCSLaIJULgxSiatdiVLllRr7bJkyYJXX31VbWouQVQiunul8UJACAiBsCEgoi5sukIaQgIUdWfige/WALa+gG1gYI+YAUCOIUDDecI/2ARE1AWbuNQXSgKXL1/G8OHDUaVKFTBCJl0yK1eurNwxz58/H8qmSd1CQAgIASGQBgiIqEsDnZiWLoGi7mw80IGirh9gGxTYI2aQIeoaz09LFCPjWkTURUY/SSv9R4DbH3A/zRdffFEFT2EQlaJFi6Jv374SHdN/mKUkISAEhEBUEhBRF5XdHr4XLaIufPvG3y0TUedvolJeJBBghMzjx4+jbdu2uPXWW1V0zJw5c6Jdu3bYt29fJFyCtFEICAEhIATCkICIujDslGhukoi66Ol9EXXR09dypakJXLp0Cf3790e5cuWQPn165ZLZpEkTteemBFBJzUs+EQJCQAgIAfcERNS55yPfBpmAiLogAw9hdSLqQghfqg4LAvHx8fjnn39w//33qy0PMmfOjHr16mHDhg0SGTMsekgaIQSEgBCIHAIi6iKnr6KipSLqoqKb1UWKqIuevpYrdU2A6+xWrlyJGjVqKGtdpkyZULNmTaxZswbc706SEBACQkAICAEzBETUmaEkeYJGQERd0FCHvCIRdSHvAmlAmBCgeNu2bRvq1q2LbNmyKasd97ZbtWqVWOzCpI+kGUJACAiBcCcgoi7ceyjK2mdV1KUfkIiiXQ97HSVTol+GboCJqAsde6k5/Ajo/exefvllxMbGKmFXrVo1rFu3ToRd+HWXtEgICAEhEHYERNSFXZdEd4OsiLqYgTdQ6Odj6PTMl8jQ/7pXwk5EXejGm4i60LGXmsOTAIXdgQMH1MbktNjRFbNWrVrYvHkzGDVTkhAQAkJACAgBVwRE1LkiI5+HhIAVUZepXwLqfDAZB3MXx+0dd4uoC0mPeV+piDrv2cmZaZcAxRuF3UsvvaTW2DF4yvPPP489e/ak3YuWKxMCQkAICAGfCYio8xmhFOBPAilEXV+HjccHJsE2MDFZvOXqcQ5DH26C81lz4qMGvyZ/7nLD8oGAbUASbANulqEtdY1k83F/dqOpskTUmcIkmaKQAC12FHF16tRR1rqsWbOiadOmskF5FI4FuWQhIASEgFkCIurMkpJ8QSGgRF0C0GkdEDsAiB0CZBmUiJi+F5G+2xFk/fWY+iz74Bso32kXDuUuhmvpM2L2/9VCzv5XkKH3RWQdlKjy8NwUx+BEZOt5Bhl/3IuYXnHIMCAe2YbcQMHhQNMFQbk8qcSOgIg6OxjyVgg4EGDwlK1bt4Lr6riPXfbs2dG+fXucP3/eIaf8KQSEgBAQAkIAEFEnoyDsCFy4BozeeQO1/76O6n/E4e4B+5Dv67ko3WYManZfimemA3X/uoof2owCbDZ1nM1VAA1/XIQS7Wfi8fHn8Mw0pDpqT03AkwO34J42w1Hgi2ko/vMGVB11Es/9fRld1kno8GAPBBF1wSYu9UUaAW53sHz5clSsWBExMTHImzcvhg4dCu5vJ0kICAEhIASEgD0BEXX2NOR9yAlwPcmVhGvYcOgcRizZjW/HzMTbPw5D4//1xM/9h2P6is2YexRYsPk0Dj/zcrKoux6bHcsbvod6zdti3Ip9mHsEqY45h65jxrp9GDJ6PD7s3B8Nvx+ID3v9jm6TFmH2xv2Ii4tDQkKCBCQI0igQURck0FJNRBOggJs8eTJuvfVWpEuXDqVKlcL8+fPlPhXRvSqNFwJCQAj4n4CIOv8zlRK9IEAxd+3aNZw9exY7duzAtGnTMGLIIPTv3RPjx4zC6hXLcCHuP7ejpCRgyxYgb95kUYcMGXD6jjvwcfNm2L93t9sWXEuIx97dOzF7xjSMHDYEg/r3weiRIzB9+nRs2rQJp06dwuXLl2XjX7cUff9SRJ3vDKWE6CBw6dIl9OzZE7ly5Urew27fvn3RcfFylUJACAgBIWCKgIg6U5gkU6AIUMzROnbmzBm1+e7UqVMxYMAA9OjRA6NHj1ab73JCkyJdvgz06WMIugwZgFKl1Pu4zJnR/cUXsXu3e1Gny+KaFQqLJUuWYNy4cejXrx8GDhyICRMmYPHixSoCnVjvNC3/v4qo8z9TKTHtEuADr3feeUcFTuE+dq1bt8bFixfT7gXLlQkBISAEhIAlAiLqLOGSzP4iQDFHt6LTp09j48aN+Ouvv5Sg6t27txJY3HD3ypUrzqs7cQJ48kkgJgYoWRIYORLInBnxGTJgcdWq2GNS1OnClcvnlStKVE6ZMgWDBw9Gnz59MGLECMyYMQNbtmxR7aT1jlHpJPmHgIg6/3CUUqKDAO89fGD1yCOPwGazIV++fPj999/lnhQd3S9XKQSEgBDwSEBEnUdEksGfBCigrl69qlwc169fjz/++EMJqF69euHPP/9UAsptEIDERGDNGiA2FsiSBWjUCDh2DEkVKyIpJgZnihXDpsWLvQ4kQOvd8ePHsWjRIowdOxZ9+/ZVYpNto0Xv4MGDuHDhgnIVJRdeD91GJVknIKLOOjM5I7oJ0KuBD5oKFSqkImJWrlxZ9q+L7iEhVy8EhIAQSCYgoi4ZhbwJJAFtDeNEfs2aNcrFkdYwWuYmTZqE7du3mxNHdDfq1MlwveSauokTkRQXhytffKE+u5ItG6a++65pF0xX18z20jJHKx2DFAwaNEgJvJEjR2LmzJkq1DhdRnkw7DiFniRrBETUWeMluYUACfBe8/XXXye7YbZp00a5sAsdISAEhIAQiG4CIuqiu/8DdvW0eHG9B1/pRnnixAmsWLFCuVZSyPXv3x9cP7dr1y4wbLfpdPQo8OCDQLp0QPnywNmzSExIwLkZM3AtUybEp0uH+WXKYOvmzaaL9JSR7Tt69CgWLFig1vnRekeRx7V3dH/69NNPVWAXl+6iniqI0u9F1EVpx8tl+0SAD5wOHDiABx98UO1d9+STT6qHSz4VKicLASEgBIRAxBMQURfxXRh+F0Aht3//fkycOBGM0MZ9lujKSBdLijlGmeT3nJxYShR/ixYBGTMC2bIBrVqp01nO1UOHcLp8edyw2XClWDFcCUBkOK5poVDVawAZzOX1119H8eLF8eqrryrRymuXZI6AiDpznCSXEHAkQBd1PhRr0qQJVq5c6fi1/C0EhIAQEAJRSEBEXRR0etIN4HwCcPJqEI4rSdh7+Bi6deuGxx57DD/++KNaM0fL1qxZs3Do0CGPYo5a7/J14OSVlO09fTIO1z79XLlZJuYvgFNTZidf0/ETcTjwVQf13Y3cuXF1xOjk7zxd96mrADc8t5K4toVrAhs1aqQ2Bq5e80l06jEAB05fNl2vp3a5+p7tPZcAsF8jOYmoi+Tek7aHmgAfZvE+JEkICAEhIASEAAmIqIuCcUCBNH4P0GUd0GV9YI8fV1/BV4OnoNL9D6BAgQKoXbu2EnPHjh0zTfpqIrDkONBlrX1bb2DArIM4f8fdSEqXHvvLVsbPyy/fvJ61iej/2zpcyJYLiZmyYM8zDdB1beLN791c9y8bgKkHTDdPZeSE6vz582C0zKEjRqLL8D9Qr+9CfLfMrk1u6vSlH7puAEbvMoSvtVaHV24RdeHVH6FujRYpXDMmhzCQMSBjQMaAjIFgjQF6YfH/oEhPIuoivQdNtP90PFB/DlBoOFBoVACP0TdQaHAcir43Ag++0BhNmzbBN998g1T7zLlpM39StEJ12wAUGnazrcWHJeCNT6fjRkwMLmXJjl/qfpXqWu7sdxrT762r8hzKVwL3dT+QKo/j9RceBdw+BvhgiZtGufiKN4D4hARcupaEGYeBomPZ3hse63Rsg9W/i40GnptpWDFdNC0iPhZRFxHdFLRGcu3qpk2bMHToUBUJlxFn5RAGMgZkDMgYkDEQyDHA+AijRo0yF6wvaP8jeleRiDrvuEXUWXTjq/UPYOsL2AYE6BgI2Hj0TUDuLjvx9ZSN2Lhxg4oeyS0MzCaKujPxwHdrUrY3V/dz6FutpXKvPJKzCKp+uTzVtWTtfQVNGw9BUkw6nM+aEy1f75sqj+P1xwwAcgwG3pxntoWp811OBCbtA9INDhBbhz7LOAh46G/guItt/FK3MDw/EVEXnv0SqlYx2iyDEN1///347rvv5BAGMgZkDMgYkDEQ8DHwySefoEyZMipmQqj+//NXvSLq/EUyjMuhqHtyGmDrB9gGBfaIGQTkGwH03+kdEIq6s/FAB4q6/9obM/AGSnXeg735bsP19BmwoMxjyNj/WqprYb4yHXfi+C0FkZAhE/65+xmn+ewZsL05hgCN53vXXp6lRV2GIYFlq9udcQjw6GQRdd73mJwZjgQo6oYNG4auXbuGY/OkTUJACAgBIZAGCXB5UM2aNUXUBaNv4xOBP/YBNlpB3B39rsL29mjYbDZ1FCxYUEUpDEYbw72OoIu6oUCfrd5RcSbqMveLxystfldWurgst+DTl39KJei04Mnd4yxGPtDQsOjlKoI7O2x1mZfniKjzrp/8cZZY6vxBMe2UIaIu7fSlXIkQEAJCIFIIiKgLYk+JqPMddqSLujzdz2BM1dfVWrkDeW7FXd9tdinUtABMTJceFIBfvNjZZV4Rdb6PLV9KEFHnC720d66IurTXp3JFQkAICIFwJyCiLog9JKLOd9iRLOrSDUxC2e+3p3CppJultsw5vsYMuoHiXQ5iX76SylVz/h3VkLXvFTf5xf3S9xHmXQki6rzjllbPElGXVntWrksICAEhEL4ERNQFsW9E1PkOO5JFXdY+V9CsEf1ubTiXLRfeaTjApUDTAi9nz/Po/fj76pwTOQrg/nYrXJ4j7pe+jy9vSxBR5y25tHmeiLq02a9yVUJACAiBcCYgoi6IvSOiznfYESvq+gL5fj2FKRWeU66Xe/KXQokf97sUaFrUZeqfgNofTkNC+ky4mDk7Oj3zpctzRNT5Pr68LUFEnbfk0uZ5IurSZr/KVQkBISAEwpmAiLog9o6IOt9hR6qoS9cnCfd8sx5xWW9BfMbMGHffqy7FmRZ0+rXwz0exuchd4Nq61SUqI0evC07PFVHn+/jytgQRdd6SS5vnORN13Ltu9+7d2Lt3b4qLTkpKwqlTp7Bjxw7ExcXh8OHDavuULVu2uHzduXOn2ofIbF7Wffbs2eTytm7diu3bt2P//v04f/58iva4+iMxMVG1bdeuXak2tr127Zr6ju06ceKEqyJMf866jhw5gs2bN2P9+vWqnazDm8Q9OK9cuaLKYFkrV67EunXrVD84K9NK3Vbymmk7+4l9wnauWbNGjReOJfvkahzp69y2bZu6No4rSUJACEQXARF1QexvEXW+w45UURfb/RLa1O+m3CjPxObBq83HORVmWsjZv1LEdXymnTr3VPZ8qNVmltNzRdT5Pr68LUFEnbfk0uZ5zkTdmTNn0KhRI7z33nspLpqCY+TIkahXrx4WLlyIbt264fnnn1dH3bp1UatWLdSoUQN8rz9v2rSpEoJm81K4TZ48WZXz7LPP4oUXXsBLL70EltOnTx9QjHlKp0+fRtu2bfHxxx+DwoKJoogidfr06WjVqpW6hn79+nkqyu33LJsbt7Ou5557Dk899RSaN2+Of//9FwkJCW7PdfYlz5k9ezbefvttVK9eHffddx8efPBBNGzYEDNnzkR8fHzyaVbqtpI3uQI3b8hy6dKlqk/Y54899hhef/11/PHHH7h06VLyma7GEfNMmjRJ9UH37t3TxObDyRctb4SAEDBFQESdKUz+ySSizneOkSjqvl8DFOxyHAx0ws3EtxUqh/y/nHQqzOzFnH6fof91PPLZIlzJlBWXM2VTa+wYREV/r19F1Pk+vrwtQUSdt+TS5nnORB3/sy1XrhyqVq2a4qIvXryoNqTNnz8/pkyZgqFDh6Jly5bqoOi6/fbbERsbi7feeiv58y+//BKc3JvNSytd//79kSVLFjzzzDNo3bq1EpiVKlVCvnz58PLLL4OizVWi4KCoKlSoECgYmGilohhku+644w7ceeedyJYtmxJ3rsrx9DmtTeRUv359lChRQgm7Dh064IEHHsA999yjLGyeynD8/ty5c+p6H374YdW2jh07onHjxihdujRuu+02JaR4jpW6reR1bI+zv2lVI8uHHnoIZcuWxVdffYVOnTrhiSeeUG2cNm1a8mnOxhEfDPz999+qDyj+Ha3BySfLGyEgBNI0ARF1QexeEXW+ww6qqBsI5PPDPnUdVyWi6mgdOZQAACAASURBVGfLldslhdmAR99JJci0MHP1WqDbCSy9/UElCrcU/j9wawTHvDEDjeiXjXzZfPw6MGkfkJ7xXAK8uTvLzzgYeEQ2H/f9hyElhBUBb0Xd3LlzU1wHhRsFV5EiRcAHB+6Su7xsD0Vdnjx5MH78eFUMRRndMCnycufOjTFjxrgsnoKvSZMmuPvuu3H06FGVjxawWbNm4ZFHHgGFFy2Bvoo6lvnPP//glltuwTfffKPqYdv79u2ryqYYpaCykmiJW7x4sXIP1edRBA0fPlyJZQpnJit1W8mr63T3ymvs3bs3cuXKhUGDBqms7J+1a9eiZMmSykKrXUUdRd3Vq1eVpbRChQp4+umnlVutu7rkOyEgBNIuARF1QexbEXW+wz51FXh2BpB1AJB1cGCPbIOBYsOB/tu8a7fafDwB6LHsAr5/9n/KffJ0jvx48aN/LLc9X99L+PrlLsnumw1a/pGqDLY3/zCg6QLv2suzLl8HJu8HYocGlq3uu1uGAtWnAieueN/mcDhTLHXh0Avh04ZIEHWkRXFDsZc9e3a0b9/eKUC6GS5fvhzFihVTFkWdidal48ePqzVgFFpcy+WrqKOb6AcffKAsglxPxzr27dunhGfOnDnxf//3fyBbXxPby7WBLLN27dqqOCt1W8lrpq1cU0lxfeuttyqm+hwt1IsWLao483N7UUfBStfSypUro2bNmti4caM+VV6FgBCIQgIi6oLY6SLqfId9LgH4bAVQ82+g5tTAHy9OB/7a7327LyTcwOSlh7H5tsq4kS49Dpa+B3X/uGC57U9OTsT7PdfiWvYciM+YBVOrNUStyUmpyqkzDei83vv2cowuPg48+U/g2bL/nvoHaLUUOHNzWYv3jQ/hmSLqQgg/DKt2JeroWle+fHmsXr06+eA6uhYtWoDul8G01BEb29mjRw/kyJEj2TLmiFO7L7LtDPTiLPlL1FHccD0ZXU5pqeI6sV69eqFUqVLq88KFC/vFtZBCdcmSJcoi2KZNG3VJVuq2ktcZL8fPtFCjOLNPFy5cwNdff63Gxrx589RXOi9dZ+fPn6/ceatUqaLGk/258l4ICIHoIyCiLoh9LqLOd9jXkoDVp4CZh4CZhwN//HsEOHhzjbrlC7gefw3HpszFjfTpkZQtFoff+9Trds/beApxNZ4CYmJwuXgpzFl1JFVZcw8Dm85abmbyCUk3gBNXgVlHAs+W/Tf7MLDiJMDfRiQnEXWR3Hv+b7srUVemTBllFeP6Ln1wvRgtNMEQdXTvo5sfrV+MtslAIXSfpCWI6/kcE4UVIzFSVGnx45iHf/tL1NHyR2Fz7733qmAsjFRJwfLTTz+hXbt2KFCggIpe6awNZj9jWznxeffdd8H+oDBislK3lbxm2sUopry2xx9/PEV2itquXbsqt9kJEyao79h2CmwKXI4h9imDylCoShICQiC6CYioC2L/i6gLIuxwqYrhwj/6SLlNolAhYOFC71tGtyNGlouJAXLlAoYM8b4sOdOvBETU+RVnxBfmStQxoEjx4sVVEAwGwuDBtWN0nQuGqMucObMKvsFokq+88ooSNRQ2DMxiHwVSdwAtRXTLpKjbsGGD/jjVq79EHSckDLjCYDJ8z3ZyTSG3SeC6PTJiwBZvE9vJbSMGDx6cyp3USt1W8ppp66FDh5TY55o4+8Rx1LNnT7XmcdiwYeor1s0gLxkyZFDuqIzkyXHFLRAkCQEhEN0EeH/g/ycMwBXpyRbuFyCiLtx7yM/t44L+/fuBsmWBDBmABx8E7MJnW66N+w5t2wbkywdkzgzUqwfI01nLGANxgoi6QFCN3DJdiTpP0S8D7X6ZKVMmFdKf2yc0aNBAbU/AACn2IfM1da5n4zo5iqxmzZrpj52++kvUUbzRMkeRMm7cOBXxktY6ikttqVu1apXTNpj5kP3CLQJo6eI1UeDpZKVuK3l1+e5euScfI4tyywX7xH6hlZIBbthuJk7aKMRpXWVQmRkzZqgHBZ4imNqXK++FgBBImwRE1AWxX0XUBRF2OFTFPZX+/tuwrOXIAXz/ve+tOnMGqF/fsPwVKwbs2uV7mVKCzwRE1PmMME0VEK6izj76pSfgWlDQssj1Z+6SWVFHocj1aHQ3ZBRNR+sgv2PgEm7hQFfEzp07q2q5ro9WO0YBPXDggLumuPyOUSK5NQCjRL766qspApLwJCt1W8nrskF2X3AixrWWFStWVGsJ9VcUnZ9//rmyUC5atEh9zLz2Dwfs83B9pI6SqcuQVyEgBKKHgIi6IPa1iLogwg6Hqs6dA5o0MUQdBdi6db636upVYPRoIH164JZbgF9+8b1MKcFnAiLqfEaYpgqIdFFH8cWgKFzfxj3j+Le7ZFbUUShys3NuTUDLGyNQ2idGlfzoo4+Ua+Gjjz4KijkmTlS49o+CjBE7rSaKxzlz5iRbKZ0JQyt1W8lrpq3cMoLWU0YYpSumThSP3HCe7q+6zY6ijuy5RpJumAwws2LFCn26vAoBIRBlBETUBbHDRdQFEXaoq6LrJScsRYsCGTMCNWtyt17fW8Vy9+4FKBJ1ub64dPreIikBUHuIcRJqs9lgy5gZtvsawMa9/twcWYYBjX3YfkLAhy+BSBd1FE4DBgxQwTjo3ucqacsbhQgDjmTNmlXtZ+fOEscNtfk74fo4HdFRl08rE+vjhui0zNHNkWH9GcSFgUS++OILndX0KwOILFu2TK3T4wbmXJPH9uqDkyAmK3VbyWumoeTNdX687l9//VXdT3jddMdlEJ3XXnstuRhHUccvKFr/+usvZcnk5uN8yCRJCAiB6CMgoi6IfS6iLoiwQ10VLWojRxpukjlzAj17+q9FfHrdvLlRdsGC/rEA+q91UVmSWOqisttdXnQkizpafvbv368sY9w7zZ07Hxfjc8uBVq1a4c0331QWNlrT+PeXX36ZagsEWp7ciToCpdWKQVy46TbD+Xfr1k1ZoWipYyROq+ns2bN4/fXXwSAxNWrUwPvvv5/i0JucW63bn+0kc1ri2D4GQfn2229V1EuusePWBYxSqpMzUcfvaD2kBZQutoyYyQ3SJQkBIRBdBETUBbG/RdQFEXaoqzp9GnjpJcP1smRJYOdO/7VIr9WjpY5r9b791n9lS0leERBR5xW2NHuSM1FHy0vDhg1VpEn7C6eVZvjw4aCFZe3atfZfqUAe//vf//Diiy8muyKmyGD3B9dWucpLS87ff/+N5557zmP0SK49Gzt2rLKM6TD6dtWkeKvdEKtVqwbHg26DjiKM+bk1AvPyetc5cUmn9Y+ikpY6uhQyEiZdQBcs8M6sTRdOunQ6tk//zfV1Olmp20peXb67V24fsWXLFrzxxhvquu+//3688MILqt/sz3M1jtgeuszWqVNHjTOKTklCQAhEFwERdUHsbxF1QYQdyqq4/mTLFiBPnptRKv3dnsOHgTvuMKJqPvAAdxH2dw1SngUCIuoswIqCrM5EXaRcNsVAo0aN8NRTT6nNyUPVbooUWtkOHjyo9sELZjus1G0lr5lrYHnsA1ru+F6SEBACQsAsARF1Zkn5IZ+IOj9AjIQiKLB69zbcI3PnBoYP93+rGYq7bVujjvz5AS+fYvu/YdFZooi66Ox3V1cdyaKOli3ujea4vYKra5XPhYAQEAJCIDwIiKgLYj+IqAsi7FBWdeIEUKuW4XpZpgxw9Kj/W3PtGjB3rmEJjI0FPv7Y/3VIiaYJiKgzjSoqMkayqIuKDpKLFAJCQAikQQIi6oLYqSLqggg7VFUxwuXq1QCFVpYsQOPGgWvJ8eNApUpAunRAhQpcKR+4uqRktwRE1LnFE3VfiqiLui6XCxYCQkAIhJyAiLogdoGIuiDCDlVVFy8CHTsabpF58wKTJgWuJayrQ4ebdU2eHLi6pGS3BETUucUTdV+KqIu6LpcLFgJCQAiEnICIuiB2gYi6IMIOVVV0tWTgElrPypcHzp4NXEtoFeRGs7QKZs0KNGsGyML6wPF2U7KIOjdwovArEXVR2OlyyUJACAiBEBMQURfEDhBRF0TYoajq+nVg4UJjU/Bs2YDWrQPfCm4yW736zfV7XM8nKegERNQFHXlYVyiiLqy7RxoXZgS4F+KlS5dCEu2TEUa51QYDBPHg1iDcNzDcUigZhRuLULaHY4NbxHCPTo7ZcEsi6oLYIyLqggg7FFUxIuVnnxnukAUKAHPmBL4VjLTZvbsh6hhpc/TowNcpNaQiIKIuFZKo/sCdqOOkgHvB7dmzR+3jtnLlSmzatAn8zzgYk8lQTw59rZ/7uR0+fFjt6cZ93VwdO3fuDIlICObA95WlL231tm7df7t27VLj/fr166oPR48eDe7BZyZ5W7ezsjk579u3r4r42qNHDwwePBjcOzKckjeMwqn97triz750V4+z76zUzXszx8ry5cvx+++/Y9CgQWo/T2/u2TyHY4z3qDVr1mDVqlXYunWrx71InV2D42ci6hyJBPBvEXUBhBvqovlk7+BBw+UyfXqgShUgGP8x0N1y0yaAgi5zZqB+fYBumZKCSkBEXVBxh31lrkQd/zPn3mvcCPzNN99Ue8Fxg23uCceNwwM9mQz15NAf9XNi1a1bN3Bzcx7cxLxWrVqoUaOGeq8/b9q0qRLPYT9YvGygP1h6WTV8qZt78LVt2xYff/yxKoe/ld69e6NgwYJON6N3bKMvdTuWxb9PnTqF2rVro3r16ihZsiSKFCkC3s/DKVllFE5td9cWf/elu7ocv7Nad0JCAqZOnYo77rgD5cuXxwMPPKDuP97sJcl72B9//IGXXnoJjzzyCB5++GE1Bnv16oUTPnpbiahz7OkA/i2iLoBwQ110QgIwfbphMcueHWjfPngtOn0aeP55o+5bbwX27w9e3VKTIiCiTgaCPQFXoo6ibciQIbjtttvwxBNP4Ntvv0X37t3x3nvvKWHHCW8gE9vFPeg4gd6wYUMgq3Jatj/qZxlDhw5Fy5Yt1UHxdvvttyM2NhZvvfVW8udffvmlcpNy2pA08KE/WHqLwdu6aRn5999/UahQITXuWT/LsiLqvK3b07VeuHABHDMi6jyR8t/3gepLMy20WjetyK+88gpKlSqFJUuWqIcBfEBnNVFMLly4EIULF0bFihXxzTff4Ndff8Wzzz6LXLlyoWvXrlaLTJFfRF0KHIH9Q0RdYPmGtPRz54B33zWEVZEiRgCTYDWIFsGhQ43gLDlzAn36BKtmqec/AiLqZCjYE+CEYdiwYSn+g+YT3W3btqFcuXKoVq0a9u7dm3wKJ7s7duxIYalj/uPHj6vP6Zpz6NAhMJ99ouWPk1F+R5dOjkOWw8N+wkGXN+Zh/RSS+fLlw/Tp07F//34cOHDAqWWC9bOM3bt3K/c45uV16WS2bub3pn5dj6dXTrZefvlll5NxTqJ4jfY8dJn87uDBg6CY5vVwPZVmSRdPct+3b5/LtTOeGOl6NCsy1OXr76y+WmVppo0s88iRI8oF2L49PJfrzMiI48tq3fZl8T05N2nSBHfffTeO/rd/K8eUFnV0RfPHGKZVhW3m2KCLG39rbD8nvPwN8HflmMyKOn/2pX0byJZM+NulSzHbrNdsmWXE8lgOOevf7fbt25W7Mpk4S7pPyYr3F44DMqJ7LH8POnEs8G+O4c2bN6t20qrE8x2TpzGn67RyP3Ksw/Fv3S/8fdlfK9vCMcW+Z7JSty6T17x69WpUqlQJjz/+uGKgf8uO7fD0N8fZ119/jdy5c2PUqFEqO+thfxUoUABV6OXlQxJR5wM8q6eKqLNKLELy0/Vyzx7gttuADBmAatUABk0JVmL9u3YBBQsCmTIBzzwDuLiBB6tJ0VaPiLpo63H31+tM1OmJGZ/Gcj2Gu8TJFSe47dq1wxtvvIEGDRrgww8/xOzZs1MIK05e5syZgw8++ABz587FDz/8oPLTJZEWOS1kOBmjmGvdurWalGTLlg0NGzZEmzZt8Nlnn2HkyJEpmkOxwwkX3RxZ/wsvvABaxH777bfkdU9m62bBVutP0RgPf3gSdZzg8hr79euXYs0iJ3sUbGT3119/Kasehe7777+Pf/75R53z6quv4u2331ZrZxhMwz6ZYaTzkxX7jgzZj5xoe5ussDTbRooH8uF405NfTjQp6Pr06aOsCRQcVup2vD62heuRihUrhu+++y75a/274IOGCRMm+DyG2W5O7N955x1lAWncuLFydZ48ebJyceZYpnWEk2v7ZFbU+bMvWT/bS/4LFizAp59+qn6XfEjRokULjBkzRjXRLCOOafbTjz/+qMQz3ft47/joo48wc+ZMtSbM/pr5nvcIusLyIRQtSF988YVyC3z99dfV75152He07HOM8B7C9vH+8f3336dyFzQz5syOI94H+btzdbAc7bLOfqEVmNdCQa8TXR350ECPObN183yWuXjxYnWffPfdd5Xoovsl75s8OnTokOKeout098pxRlf7/PnzK4ufzst+u/fee3H//fdbLlOXwVcRdfY0AvzeW1FH9c6FlIy4I0cYMoiLQ+LYsSpAyo0cOZDQsWPw++nYMVx/7TUjSEvhwri+fn3w2xDF45OTiKpVq8Jms8GWMTNs9zWAbTDcHlmGAY0XBPimI8WHhIAzUcfJEydCdD3jU3BXiRMzfs81PmXLlkWrVq3URIvWPU4oZsyYkXyqnuxRpHECR5dOihJODPLkyZM8KeREhhMwTniYR7sqUuxwIs8gFTqxfj6F5mSwRIkSqFOnjloD9dhjjyk3RwaV4NNus3WzXCv163aYffUk6vh9/fr1cddddyULUpbN9lOw0BV11qxZamL9008/IXPmzOC1Usy2b99euUWRg73wNctIXwPrYhAO3h84mZs3b57+yvKrWZZW2sjJK4UsxxutCBQZnGv8+eefylWYIojiw2zdzi6KApGCgHXQKqGT2XFktm5eNwVIxowZUblyZeXaTCFZunRpNZbZr/wN8mGIfTIr6vzZl6yfnKdMmYI777xTrdPib5QPYHivqFmzpmqiWUYUVHQN5P9FfIDAvuRDi4ceekj9dilsHRMt0vwNcF3hiy++qNaJ8R5CUcd7DxMtm08++aRac0i3544dO6qHExTI9m7cZsecmb7kPYb3Qa4zc3VQZPJhCZNm5Lg2kw916tWrp1wdmc9M3apAQFkuyZP3STLhXJzjl3/zIAf+LqwkCtX58+ercnh/0ZZk9g3d8nmf9iWJqHNDj311LgFYfco/x9ITwE8b3E/01ESw31XY3h5tTBBtNuTMmVM9eWHEHTnCj8Hk4cNxtnZt3LDZcD5nTkzq2DHo/TRh9GjMbtECiTYbEmNjsb9Fi6C3IZrH5sCBA1G0aFFLoi7zMOC5mf65t/AetfY0sP+imxuafBU0ApxgOLpfMiADBRUnmI5WAvuG8Vxa2SjKtJDgBGf9+vVqIvDcc8+pJ+c8R09kKEQo6ihg9KSWlg8KM/uky3a3po55OImiexCfcHPSqa0fFEd0H6WLltW6dXvdrelj2/nk3dVBFzq2xz55EnXMP378eDUho6VRJ05UGaCGgWpYLoUMRV2WLFmUZUdfN615DGTAfLxmJrOMdF28HkZV5D2CrodLly7VX3n9yja4Y2m1jbRodOnSRU3+eS/ng2SKA/Y5J8L2yVPd9nn5Xo9frkeihcM+sSyOM3+NYT3+OW9iuXyYQpdPrpXjuKWI4eSZVmj7ZFbU+bMv+buihYYufVxfRbdGnTj+VnAfWgu/c147fw/2opmf0TLM+w6DCDkm8uBvnWOT44mig4kCkWOfbeT5OXLkUAJRn89yOS7s72VWx5y7ccQHDXzYQpdHVwd/k7R6Melx5EnU6fa7q1vnsX/l/YLt4O/BMZGFq3sWP3e8b5EZf2sUiPSqoDWZ94XmzZsrK7Nj+Vb+FlHnhta1JGD2YeD23/1zlBoPFBpjXdSpp/+0AMgRdgzS2Wwoa7PhhM2GBJsNU202xISgn1hncZsNe202XLfZsMBmQ9YQtEPGqHlLXcxgIMcI/9xbeI+660/gi1VubmjyVdAIcMLgKOq4/oTrJWj14STXVeKTZU6+aFmg0NCJlg66AnJyql3k9ESGLp0DBgzQWZVLFKOzMbKafTIzkaErMa2CrIcWBLqF8eATcT5Zzps3r3JXtFo32+Gufk4eKXzHjh3r8hg3blwqC4snUacFaYUKFdSEjJNVHsuWLVNCj0KOSYs6imlGptOJYoduVpwsUlgzmWWky+BEed26dcpaxwdAnEj7mtyx9KaNPIf8aSGicKfrKS2+XN/lmDzV7Zifk1iOHYo6e8sO81kdR57q5gSbdbAf6c5J4UGrSvHixdXvjr8dTs7ZHvtkVtT5sy95H6BLKgUTrXOukhVGvH7eazje+PCAv11G26VAv+eee1JVwbHI3zS/d3xgwsz8/XD7FfYdA4WwXIo9R3dk5rX6u3DXl6yXvz29RtjZKy15en2kZhRsUWf1vsX8vMfzwQkfKlHMkz1/a3wIYb/WOlVnmfhARJ0bSAlJwF/7TYgwD25WntywUn3vYKmTiXL4CloKp7dtNuX2eM5mwzshFFI5bTb0+q8tFJlVQ9iWqB6zJt0vU/3ufbyPZB0ONFvk5oYmXwWNACcYjqKOE2a6MPGJuKPlw75hnJDxCTRFmX2yFxecWDHpiQzdguytP9rliGs07JO7SZTOR8sBQ7tTKFKE0oWNh35a/uijj6q1Nlbr1u11ZV3iBHft2rXqiTWfWjs7OAFihEv75EnUMa8WFbRWcCLIv7/66itlseFkkUmLOrLUFhJ+ziftjLZJy6d2fTXLSBUcoH889aU3bWQfcC0nJ/m0dNE91VnyVLf9ORQZXJ9J98JmzZrZf6XeWx1HnurWoo7XQDHDvqYbIq1zTBQBnERzWwX7ZFbU2Z/j63uKKE7uKUBpTXaVzDLitVNw0XrFBzP33XefWqfF3xKtcYwS65go6iiEGjVq5PhV8t+8X/H3wgcjdE2maycFyMaNG1MEJbE65jz1JQW0q/V0+nP+Ppk0o2CLOqv3LVrt6O5OF+DPP/9c7VHK5Rv9+/dXDx5orWM/eptE1LkhFzJR1z8etlaTYStcTo4wZ5CvwO2Ymi49bthisDtTLEqEsL2ZCpfD0wVKIyFdBly0xaBzpqwyfkLRH8UqwFarjdv1dP4WdCxPRJ2bm3mQv+IEw1HUaUsbJx3cbNxVoqjjpJPrYOwTRR0DoVB0MBIbUyAmMnpixskb2+l40HJD0Wi1bt1eV6KOT7A5saYFzdVBq4aj5ciMqOPEi0KNgppBJBgNk0KV1iid7EUdXQ914iRs+PDhSuhwnyoms4x0GXzlRI2TVB68Vl8T+btiybK9aSNFBoPG0EpLywzX0tlbi3WbPdWt8/FVc6WljOuTHJPVceSpbntRx3VKHFMUOY6iztENlPkoXHjt2vrj2Fb9N/uP1l6OK1/6kmOLlmlH67CuR7+aZcR7BAOC8IEMRevEiROVdXnRokXqQZFmoMvlK0Udw+tzvaO7xLHBQCTkxvW+HB90S7a/l1kdc+76kmz5AIZj3NXB9b32a+r4EIL3Rz6Y0IkP07RFTH/GV3d12+fT7125X1q9b/F+Rbf4W2+9VbkD6/J5T+UaRT5Q4/8B3iYRdW7IhUzUDUqCrdtR2NrMkiOMGaT/aDrueb0X4jJmxdUMmTDu/2qFvL8KtxiPTQXLIDEmHVbnL4Uc7/0Z8jZF3ThuOwe2bzeIqHNzb03rX3HC4Cjq+BmfxtKCwL3pHJ/GcnLAg/+5M2ABg6JwoqkTRSGf4nIywMkTE8vkE3MrT6cZXIATHwonZ4kuVAzQwKf8LN9Vslo3y+E5nup3VZ+rz82IOp5LrnRrpZsT19bR8sZJr05afDhOsDlRZvACPlm3d780w0iXzQkqXdgomKZNm6bcHPV33r56Ymm2H3X9bCMnw7QQcxLMADqcuNMVld/ZJ09167wc41zfRQHNtUiOY575rI4jT3V7K+rY/7/88ovqZ2291ddh/8ryOXFmYBmu+eI6PW8ThSEt7Lwn6OiMzsoyy4higA+D6GapLVi8p1Ac8R7hi6jT7WJ5/M0x8A/Fo3Zf5vdWx5y7vtRr6rSngLNXejTwwQOTvUWdkT6Z2FY+wOF108pvn9zVbZ9Pv3cl6vT3Zl9ZDvuHlmv7Bya0PDIIjbt7s5k6RNS5oRQyUeejG1YgrABSZmo33Ng+l9C2/s/K9fJMbB40aPFb0Cfyjv2So/cF/PDsV6pNp7Lnw5NtZoa8TY5tlL9TjyV/MBFLnZubeZC/4oTBUdRxgsGoknSJ5MSZE2gKDbo28Wk5/+aTe/5Hz0X0jJLINWT8z57CgpYmRnCsVatWqkApZkUdn7ZPmjRJuWJxAssJAMtne3ViXZ06dVJP7xn9kG1kuygw6SZElytO8nmOFUHJ8s3Ur9th9tWsqOM1MPAMI4Vy4stJnr0brBZ1/J7imZMvXiMtEVrA6fxmGelrYDn+in6py/TE0kobKVQ4NumCx/FJ8UqBwDVU5KTdfc3WrfNxos21nrQEaddV/Z1+tTqOPF23t6KOAovh6/lbogWID044tjhu7BPrp6sklxjwAQAtbb4k1kNxQtHCQCkcY+RG/toKZpaRFnV8IMPfKsvhOGYfMBqoN6KO9y3eI+hCSx4sk3/TakcxyvWKOlkZczzHXV+yXpbH6JCuDvs1dbSAc4xRaPKBBFmQLfuKwY8cRZ27uvX12L/6S9SRIS1yZMeHSmwnH9jx/k731jJlyqjfon3dVt6LqHNDS0RdYCaf/pjAhkMZhX45hvl3VENSTDpsK1wO+X89GXIBlWHgdTzyxSJcyZQVlzNlQ5/H30PM4Bshb1c49Fdab4OIOjc38yB/xUmYo6hjEzghorDgGhe6NzIkNieQ3LuMkTEpoDgp5WSFwo8TbEai5L52tN6VL18+RRAPs5M9ffksm5HsOMHhxI+THwozWo900k+3szq8TgAAIABJREFUaa3hmjq2keKSVka6aDFaGydbVutm+Wbq1+0w+2pW1GlRzYlt9uzZ8eWXX6aoQos6Tn7p/koLAN0uud8Zg9bYry8zy0hXQFb+FnWeWJptI/NxUskHCfZbN1C4U9xRbHASysmiTp7qZj7Nm8F6nnnmmeSoiroM/Wp1HHmqm98zUAonzVbcL9keWpr4O+Tvg2Ll559/TiVoKfK4fxxFHeug9dWXxPIY0IW/ba655f2A5dNyx/3gmMwy0q6mdCFlCH6u3eI18JooFrwRdRRLdJullZtjhCKW9wwKft6ftFWM7TQ75jQvT32p85l51eONfcdr5TpKBp8hU64ldBR1Vuv2l6hjf3MdJe8pvL/SNZieG+RLF2W6t7Jt3iYRdW7IiagTUedKCFA8PdBuGeIzZlYCqn+1FmEjnAr8egJLb39Qic2the9E3h6nw6ZtrnjK577/1kTUubmZB/krTsKciTo2g0+Iuck1RRqFGyfNFHjc9Jeij4kTKa4f48SJAoMCjBNjTtLsXeE4QeDTXu7DRCGoE5/2c32Qs8AUrJ8ijlYZWv1ohdIuTPp8TiroNkexyUk520i3Re5l1blzZ9U+b+pm+Wbq1+0w88pr5cSIPClO3CUKQLoBMmCK/bo5nqNFHSfq7DvyJneGm6eLGdttn8ww0vnJim6MDF5BUexo+dL5rL56YmmmjcxD11CONY5Bx/HFdj/77LPK3dC+fZ7q5jVTANCdjKLFVfJmHLmrW18P91ekGOFvcciQIcnrJzkGuJG0vUjXbePvjuvPGGK+Ro0a6roZAdY+8YEG12WmS5dORQmlFcnXxOvhek1O7PU9geNO71lmlhGFDa3+FHT6vsEyOZ75cMZ+DaluM9ec8bfDdWvOEscDrXTct05bFHm/Yh205LNO+2RmzNnnd9eX9vnMvCcnjjW2j4KJY4BBjny5F+p6OW4YfdjxXqm/t/LK+/yIESPw9NNPq3sM768cb/SQ4IM9X5KIOjf0RNT5PtFMq5N1ujl+V+d/ys3xZI78qP3htLARTnQL/ezlLsluoS+/OyFs2pZWx0M4XJeIOjc38yB/5U7U6aZw8sP/wDkpdCVGmIdPiBnRjhPOYCdO2Ch2KBjpzsV1LpGaeC0UL5zscjJlL154TVrUce0cJ7HkTZdE+3WNzq49EhiFoo0c23xwQIsvfw9pJfG6KMxp7aWl25+Jv3e64/GeoF19vSmfY5uTe943HMe5N+XxHLaNwob3Alf3K/uyQzHmWD/rJTtuDRCKe6Y9A0/veT/lfZVMef/xRxJR54aiiDoRdc4m63RnLNr1MNaUqITEdOmx7taKoMhzljcUn6UfmIh7/7cWcVlvwdWMWTDygYZINzApbNoXCibRUGfWYUCzhW5uaPJV0AiYEXVBa0yUV6QnyitXrlTuY4yAOWrUqFRUHEVdqgzygSUCnPjT+jN37lxL54V7Zj5k4bYePPiQQJIQCCcCIurc9IaIOhF1zsRAxgHX8ETbOUiMSY9LmWPR5enPwk4w5et+CtPLP40bMTHYm+82FP35cNi10Rlb+cz73xxFXVMRdW7u6MH7SkRd8Fh7qomuTlwTyLU1DDTTokULp9Y39hld8hiswN6V1VP58n10EaD7JYMN0U1TkhAINwIi6tz0CEXd1IPeT7Jkgpo22eXsdR7da36o3BuP5SyERz5fFHaCKVvfy3j3zX5K1J3LlgvN3hocdm2U34d/fx/ZhgMtFru5oclXQSMgoi5oqD1WRBcnRjVktE9uRs3Ifc4SXbUYgY5BIHxd1+KsfPlMCAgBIRBoAiLq3BC+ngQsOu7fiZdMZCObZ8ygGyjZZR92FLoD19NlUAFJMnOz+DDbhiLdoCSU+2EbuK1BfIbMmHRvPWQYcD3s2hlu3CK5PdlHAO1u7pns5s4mXwWagIi6QBOW8oWAEBACQsCRgIg6RyJ2fzOmz644gG5NkTzZk7b7r/8y9U/A8x/8pSxgF7LkwFcv/BC2YyNPjzP47b4GyqJ4KHcxlO60M2zbKmPU9zGaayQwdIfdDUzehoyAiLqQoY/Yimkp5Lo+rgGUJASEgBDwhoCIOg/Ujl8BKkz0fcIlk9a0wTB3z7MY9vBbuGGLAYXSPd+sD1uhlKXfVbzefIwK5sKgKW3qdwvbtsrvw/ffR5GxwDrfoiF7uBvK12YJuBN1jM7G0NsMssB9wBjAg5sM8z9jfhfoFGrx4I/6dWQ97rnHkOyRkNxdNze+3rJli9qyghEGg51YP7ewYBucHTt27HAaSVBHGty6dasEDQl2p0l9QsAJARF1TqDYfxR3Dfh0JZBhqO+TLpm4RjZDul6W7rQLh3MVxbX0GTHr/2qBbo7h2q9s720/7lXik+2dfWdNhKOraLjyi6R2ZRoKPDUdSEi0v3vJ+1ARcCXqOAk+e/asWtv15ptvqnDv3PuJYd+515repy5Q7Q4H8eAP8cLrWL16tdpHzFkky0Dx87ZcT9w5XriWr2DBgn7bw85KWxmpkvuOcU8z+4P7fHEfwwYNGjhdZ8h2c78t7rHVpEkTK1VKXiEgBAJAQESdB6iJN4BNZ4EHJwOZxQ0zbAVMMCbgtHw1bDZSuTOez5oTH7zeK+x55Op5DgMfa67afDxnQbXVQTBYSR3Be4BBQVf1b2DOEQ83M/k6aARciTqKNm6EfNttt+GJJ57At99+i+7du+O9995Twi7QATrYLoaZp3jYsGFD0HjoivxVP61es2bNQo4cOfDDDz/o4sP21dN18/tQijru6/Xdd9+hZcuWyQc36OaG02TMDegd9yjk/mfcRP2ee+5ReRhZVJIQEAKhJSCizgR/BkxZdQqoNxu4dxJQ+neg0Bgg90gg50jglhEAgxTEDgcYgY5r8ORIewyK9jqNiZVfVOvpDuQvibu77Ar7fs45OAGvfDQZ19NnxMUsOdCh7jdh32b57dz87fB+wvsK7y+8z/B+k3uUcf/hfajSJOO+NO+oiRuZZAkaAU7Shw0bhq5duybXybVS3NS6XLlyqFatmtocV39JkUIXN3tLHfNzTyx+Tvc2blLLfPaJlj9ujs3v6NJ58uRJlZ/n0CKoEyfgzMP6KSTz5cuH6dOnq821Dxw4oM7TefUr62cZ2i2PG3HzunQyWzfze1O/rsfZqzeizp/Xo9vEdpAf+4d8uCaOm0fzYDJ73faibs2aNS77UdfLV82f9er+t//e1/e8tn///Rd58+bFzz//nKI41s1rbN26NWrXro1KlSqp7SJSZJI/hIAQCDoBEXUmkXOlw9VEYMs5YOI+oMsGoM1yoNVSoOUSoPkioMlCoOF84I15cqQ5BnOT0GrQZpyPzY3ETJmxrcYLEdPPrf84jAul7kBiugzYXPYBvDH1csS0Pc2NI4v3hjfnA28tAN5eBLRcDLRaBrRdAfy4Hpi437gf8b4kKbwIOBN1euKeK1cuDBo0yG2DOaHm5L5du3Z44403lPvbhx9+iNmzZ6cQVrSezJkzBx988IHa5JlWK+avW7eusshpYUdLDMUcJ+GPP/44smXLhoYNG6JNmzb47LPPMHLkyBTtobsgBWC3bt1UeS+88AKaNm2K3377DXrNl9m6WbDV+lM0xskfVkWdv6+HTYqPj8e8efNAi9Yrr7yCtm3bYuzYsWqDc26fwGT2uvXYoNieMGGCsj4660d7FOTP8cB+4djg+kJ/Jm79QJdMWpX5kMA+8dr//PNPJeZoMb3//vtF1NkDkvdCIEQERNSFCLxUG2EE+IS6Vy/lxojcuYERIyLnAuLigE8+MdqePz+wYEHktF1aKgQikIAzUUeBRSFVqFAht5tb06LEza+rV6+OsmXLolWrVvjiiy+Ude+OO+7AjBkzkoloMUCR9tJLLymXTk7EOcnOkycPxowZo/JSXHz//ff4+OOPVZ7Y2Fi89dZbStBROI4ePTq5TNZP6w/XUZUoUQJcV0XB8thjj+H2229H3759lQXKbN0s2Er9yQ1x88aKqAvE9dACR9Fdvnx5JWw+/fRTxZbrI0uVKqXWmFm5bissNRae06NHD9hsNuTPn18JTP2dr69ktnPnTpQuXVoJVvvy+B0FP9fadezYUVnsRNTZE5L3QiB0BETUhY691BxJBOhOU6sWEBMDlCkDHI0gfze6bM2dC2TJAsTGAh99FEnkpa1CIOIIcMLt6H7JKI1cR1esWDHlMunqongu171RlGkLGkUEI2VS5D333HOg5YlJi4HMmTMrUUcrGifdXC9Hqw+FmX3SZbtbU8c8vXr1Qu7cudU6L1pl6G5HF7/69esr99EjR45Yrlu3192aPradLqiuDrqYsj1WRF0grocilRbOIkWKKBdFXhvbNnz4cGTNmjVZ1Gn2nrjze66pM9uPLJeMBg8ejKJFi+Luu+/G0qVLdXU+v7LsgQMHKtfL33//PUV5fDjBoD4U+XT3pRumiLoUiOQPIRAyAiLqQoZeKo4YAomJwOrVQLZsQNaswFtvRUzTkxt6/DhQuTKQLh1QoQJw7lzyV/JGCAgB/xLgJN1R1HHyW6VKFWX9okhzlRgshREIaSXhGi2dGKHw7bffVkKC/3EzaTFAl84BAwborGqi/cADD6gAF8kf/pffnahiXk7UueaPgmXKlClYsGCBOujq1759ezXR/+uvvyzXrdvrqn4KRwpfujC6OsaNG6fcTa2IukBcD9c6Usg8/PDDKbahoPAtXry416LObD+SJRkwUAmtdRRghw8ftu9qn97z+p588kklFrULr66T44BBUegmyiSizifUcrIQ8CsBEXV+xSmFpUkCFy8CjLBmswF58wJ//RV5l8lr6NDh5jVMnhx51yAtFgIRQsCZqKNg4USZlhVaelwlTpLpxkdRZp8uXryIDh06pAh7r0VdgQIFUlhqKAzr1auHe++9174IJcRciSqd8ejRoyhZsiQoMChCK1eurA4Gw+Dx6KOPqrV1Vutm+TzHVf0UumvXrlVCgpYnZ0fFihWV26gVUReI66Glkm6WtFzaJy32GOLfPrm7bubzhqV9+f58Tyvw4sWLlaX4E7rt/5cousmSluJatWopF11yoFWY/UIrMr93N7Z1WfIqBIRAYAiIqAsMVyk1LRGgqyUnWLRylS8fmVYuWgZWrDDcL2ltbNYMSEpKS70k1yIEwoYAJ+mOljptaaPrIzcbd5Uo6qpWrYqHHnooRRaKOgZCoYDjHm1MWgw47m+mRR0n2/bJk7hgXi2C6F7Hdjoe3GeO5VutW7fXlaijaGAkz2XLlrk8li9frjbH9kbU+fN6KGYYQMSZqLvvvvu8ttSZ7Ufdp3RXJQse5OePRFHGADq01Nq7dFJ0r1y5UrmXMuIl8/BgoBiuE2WUTK79/Pvvv/3RDClDCAgBLwiIqPMCmpwSRQS4dmXhQiBjRsP98sMPI/fiT54EHn/85rrA/8JuR+4FScuFQHgScCbq+Fn//v3V5Jd703FCbp84KedBwfTiiy+CQVEocnSiKGzevDluvfVWJbz4uVVhxfz9+vVTwpDiyVmiuyKDYFCcML+rZLVulmOmflf12X9uRdQF4npYJgPZ0JrK9WdM7DsGuOGaSWeWOnfcvWFJkbVnzx7QFXbatGnKddWekTfveQ3cwoJWN0ZJ1Ws3WRbro8Dntdkf3MPulltuAYPvPPPMM2p8eVO3nCMEhIDvBETU+c5QSkjLBOgm9dlnhttigQLAnDmRe7WcoPXoYYg6RvAcNSpyr0VaLgTCmAAn6Y6WOk6YGVWSLpEUA4yeSAFHywjXQ/FvBtvgOrouXbqoiIZcQ8bQ8rTSrVixQq1louubnmxbFQMMMjJp0iQVBIVh9zkBYPksRyfW1alTJxQuXFiFrWcb2S69H97GjRtTRL+0Yl0yU79uh7tXLeqyZ88ORp7kWjb7gzwpgpkCcT1k8c033yhxTMsUrausn8KNkUgdRZ2n67baj7wunuPv6JfsZwbnyZkzpwrc4q4P9Heypk6TkFchEHoCIupC3wfSgnAlQHeWgweBu+4C0qcHqlRhyLFwba3ndtEyQLcvCrrMmQGuB3ETsMFzgZJDCAgBZwQ44XYUdcxHqw4nzVwvRndAhoTnFgHcZ4yRMSmgaMGjxYfCjwKQkSi5rx2tdwyh/8cffyRXaVUMsGzuZ0a3TFriuJ0Boy7S0qMTxSc31H7qqafUmjq2keKSVkbuc8c98CiUrNbN8s3Ur9vh7lWLukyZMilO3MbB/uDWDePHj1dFBOJ6eB0M608XWfYRo0FyH0CKOQa4YV/aJ0/X7Q1LnuNvUUcLJNfMceuKffv22V+Cy/ci6lyikS+EQNAJiKgLOnKpMGIIJCQAnOxwG4Ps2YGvv46Yprts6OnTQL16xjXdeiuwf7/LrPKFEBAC3hHghNuZqGNptNpMnz5diTQKNwYiocDjeiTtykfRwvVj3NSa6+sowOjaxv3k6AanEy0rEydOVEFRKAR1ovXvq6++QjOunXVIrJ8irlGjRirgBV0taXWyTxQhdMOj2KR7HdvIaI9cS9W5c2e1hsubulmHmfrt2+LsPS2Vq1atUlE6GanT8WBAml9//TX51EBcD9vAwC7c/Jsijqy5OTsDyVD4OiZ31+0NS55Dgc9rZ32MhOlLovjlWkGWReun2cTomFxX17hxY7OnSD4hIAQCREBEXYDASrFpgADdd1q0MARQkSLAypWRf1G0NA4dagR9yZkT6N078q9JrkAIhBkBd6JON5VCg5Y5bvKsXQX1d/qVeRhRkVYTCr1gJ0706Q5KwUj3wgQ+6Irg5M/rYVm6Tyi0+Tf7sly5ciqASARjkqYLASEQoQRE1AWj4/hklWsWzp4FuF8Y9xiSI7wZMOLl8uVAyZJAhgxAtWrAfxv+BmPIBKwOupTyiX6hQkCmTMCTTwIHDoR3X8hvRfrHcQww6A/Xu8bHM0JFwH4u3hZsRtR5W7acFx4EaCmjxZWbwlPMcc0j10KWKFFC7e8XHq2UVggBIRBNBETUBaK3OcmgiONkee1aYOZMIyjFzz8D7doZgTcYfEOO8GXQti1Qp44RIOWWWwD2XVpJfLjQqJFxbbGxQPPm4dsP8huRvnEcA59/DtBdsE8fgBsgMzrtli3GA7MwefAioi6t3CxdXwfXktH1kW6xdMHkejqueeTebtqC5/ps+UYICAEh4H8CIur8yVSLuc2bgZEjjb3A/u//jCAb3LhajshjwPV0XHvGSWNaSbRuMNgCLZAyJoVBJI8B/j5z5DC26vjqK+MB2qFDIQ8AJKIurdwsXV8H18jNnDkTXbt2VQFn+Mq1ijoyqesz5RshIASEQGAIiKjzF1e6WNIyN3YsUKuWIeQ44ciSBciTByheHChbFrjnHuDee+WIFAaMePnWW2Hp4uX10OXDhyNHDJfSSOkHaafcM/QY4Ibad98N3H47ULgwQEs6H1Dwfps3L/D++8DixcD5817/RHw9UUSdrwTlfCEgBISAELBKQESdVWLO8nMBOyNPcTKRNasxuciVC6hcGWjQAKC7UL9+RiTF9esBWvLkiAwGW7cCXF+X1hLd1PbujYw+kN+K9JP9GOC2HFzv+vvvwE8/Ae+9B9SuDZQubWzVwe1H+L5/f2MtYgh+uyLqQgBdqhQCQkAIRDkBEXW+DgBOjletMgJO0I2J+3+VLw989BGwcaOvpcv5QkAICAEh4InA1auGSzFDyTNSLa12tOC1bw8wqEqQk4i6IAOX6oSAEBACQgAi6nwZBHS53L4dePZZYxLBvcz4xHj69LTlrucLIzlXCAgBIRAMAnQrZhAgBjW6805j2w4Ku06dgIsXg9GC5DpE1CWjkDdCQAgIASEQJAIi6rwFzQnEiROGRY4WumzZgPr1ZTNnb3nKeUJACAgBfxDgXmr//APcdZfxsK1AASNKZlKSP0o3VYaIOlOYJJMQEAJCQAj4kYCIOm9h0t2HQVG4hi5jRqBGDWONkrflyXlCQAgIASHgHwI6wisDqXCNHYOr7Nzpn7JNlCKizgQkySIEhIAQEAJ+JSCizhucfOLLDZwrVTJcfLgof+5cb0qSc4SAEBACQiAQBOhy2aGDEYGYnhStWwO04gUhiagLAmSpQggIASEgBFIQEFGXAofJP7ixeI8exv5WXEfH/ZEkCQEhIASEQPgQoIv84cPAI48YbpjFigGMPhyEJKIuCJClCiEgBISAEEhBQERdChwm/tATBW5XkC6dsW7j4EETJ0oWISAEhIAQCCoBumGOH29EJY6NBT75JCjVi6gLCmapRAgIASEgBOwIiKizg2HqLbcwWLDAEHScJLRpY+o0yRS5BOITga3nouvYcyFy+0taLgRSEDh2DKhQwbhn33MPQE+LACcRdQEGLMULASEgBIRAKgIi6lIh8fDBpUtAly6G62W+fMDs2R5OkK8jmUDSDWDvBaDGtOg5ak4Dmi+K5F6TtgsBOwJxccBnnxn37IIFgbVr7b4MzFsRdYHhKqUKASEgBISAawIi6lyzcf7NuXNAs2bGBKFoUeDUKef55NM0QYCibuNZwDY4eo50Q4AKf6aJ7pOLEAKAjlTMrWfy5AF++y3gVETUBRyxVCAEhIAQEAIOBETUOQDx+Ofp00C9esbC+9tvl03GPQKL7Awi6iK7/6T1QgB0mZ8/33gQlzMn0KdPwKGIqAs4YqlACAgBISAEHAiIqHMA4vFPirq6dQ1RV66cx+ySIbIJiKiL7P6T1gsBJeqWLr0p6nr2DDgUEXUBRywVCAEhIASEgAMBEXUOQDz+SVH3/PMi6jyCShsZRNSljX6Uq4hiArTULVlyU9T17h1wGCLqAo5YKhACQkAICAEHAiLqHIB4/FNEnUdEaSmDiLq01JtyLVFJQERdVHa7XLQQEAJCINoIiKiz2uMi6qwSi+j8Iuoiuvuk8UIAyv1SLHUyEoSAEBACQiCNExBRZ7WDRdRZJRbR+UXURXT3SeOFgIg6GQNCQAgIASEQFQRE1FntZhF1VolFdH4roi5mMJBtOJBjBJB1WHhsgWDfJrbNzNYMsqVBRA9ZabwjAXG/dCQifwsBISAEhEAaJCCizmqniqizSiyi81sRdRRyL8w2Nu5+cro5AWVGZPmSJ8sw4JkZwDuLgDqzzLVJRF1ED1lpvCMBEXWORORvISAEhIAQSIMERNRZ7VQRdVaJRXR+K6KuwGhg6QkgPhGYsM+cgPJFsJk5N+8oYOpB4FoSMPeouTaJqIvoISuNdyQgos6RiPwtBISAEBACaZCAiDqrnSqiziqxiM4faFGXcShQ+ncg/RBzgsuMkLPPI6IuooefNN4fBETU+YOilCEEhIAQEAJhTkBEndUOElFnlVhE5w+kqMswFLj/b2DsbmMdnr0Y89d7EXURPfyk8f4gIKLOHxSlDCEgBISAEAhzAiLqrHaQiDqrxCI6vy+iLsMQoMhY4I4JQMnfjCAqWqzxu3snATMOA8euAOX/NPIUH2cEWaHlrvAYoMRvQP7RAAWgLqsY8/wX9ISukrlHAaXGA2V+B/KNTmnxE1EX0cNPGu8PApEo6q5dAy5dApKS/EHAehms9/x54Nw544iLA27csF6OnCEEhIAQEAJBIyCizipqEXVWiUV0fm9FHdexPTwF+GWTsaZt+E7g1X+BnCMNV8u7/wQm7jfQXL4OjNkNME/vLYbAu2UE0H41MHgH8OlK4LGpQPfNwOQDQO+twMtzjbLKTgDargDG7QH+2g+0WwXc/vtNYSeiLqKHnzTeHwQiTdSxvVu2AKNHA2fOmCfgTyF48SLQty/QsyfQowcweDBw5Yr5tkhOISAEhIAQCDoBEXVWkYuos0osovN7I+quJwHbzwPLTgB7LhiWOJZz8irQaIHhavm/NcDpeAMN8++KA3acB5afAB6ZAuigK9dvGN+tOAlsOw/svwjwM1r3Wi4xhCDrYH2XrgNXE4FRu4HY/yx5IuoievhJ4/1BINJE3eXLQO/eQMGCwLp15gh4KwRdlX7qFFC7NlC9OlCyJFCkCHDypKvc8rkQEAJCQAiEAQERdVY7QUSdVWIRnd8bUUcnpfMJwOjdQIN/ga9WGSKMYmzJCcMNs+4swzpHOBR3tLw9OxOoNc1wt9SijmWdSwAGbgdqTQfeWQwcuAjw84vXgIXHgNfmAc/NAv45aKA+cQWo+rdhrRNRF9HDTxrvDwLRIOooBGlVoxDcsMEf1IwyLlwAvvxSRJ3/iEpJQkAICIGAERBRZxWtiDqrxCI6vzeijpY3bm1AQcU1dFzzRusZ06FLQPYRxkFrHdPhS6kDpWhRx7IWHzdcLVlWrpHAkB3GebT8PTrVqCPTUGMfOn5zNh5oOF9EnUFJ/o16ApEg6vQathMnAHtL3Zo1hoVsxw6Ax9mzKbszMRE4dAjYtg349lsgXz5g+nRg/37gwIGb1rWEBODgQcOdc+dOYO9e4OpV4Ngx49zjx1OWq/9yJeq4vo4ummwv2yBJCAgBISAEQk5ARJ3VLhBRZ5VYROf3RtQ57lNHEfflKgPDkctAwTHmRZ1jWXSr/HxlyrIo9mKGAOUmGJ/TskfXTH4ulrqIHn7SeH8QCGdRFx9viK0lS4A+fYx1bFrUUaBNmAD88APwxhtA3bqGNc5e2DGACcVc69bA448D2bIBDRsCbdoAn30GjBxpBDih8HvnHeDXX4HGjYE33wQmTwb+9z/ghReAb74BKOAckytRx/V7y5YB7dsD//4L7N5tiDzH8+VvISAEhIAQCBoBEXVWUYuos0osovP7Q9RRiH26wsDgStTdMtIQYRRiPLSlzpmocyxLibrBRpRN1iKiLqKHnDTe3wTCTdTRKscAKJs2ARMnAi1bAvfdZxw//XTTUkeB9tJLwBNPAO+/D9x/P5AnDzBmzE1CFHXffw98/LGRLzYWeOstQ9C1a2cEW2F9dMnMmBGoXBl47z2gWDGgdGmgTh1DMBYqBMyZc7Nc/c6dqFu40Gjz3XcbInHoUGMNIK1/Yr0I6CYuAAAgAElEQVTTBOVVCAgBIRA0AiLqrKIWUWeVWETnD6So09a7o5eBkuOBmMFA5mHGmjsRdRE9bKTx4UQgXEQdXSDpFrl4MdC1qyGoypcHatUyrHGrVhliSFvqMmc2RB0FoBZmtN41aJCarrs1dfrcnDmNACy09DVpYqyTO3IEOHwYuO02oFu31OW6EnXMSeFGCx0tjLT2VaxoBFb56itg9mxg1y5jW4bUpconQkAICAEhEAACIuqsQhVRZ5VYROcPlKjLMgx4Yx6QeAOIuwZ8vRp4aArwwmzg4cliqYvoQSONDy8C4SDqKIC2bweaNgXKlAGqVDGsb1OmpHZ71KIuVy5gwICbLLl+7YEHgEceufmZfmdG1NHKR3dOWvfomlm8uCHMaFmrVMlwpdTl6Vd3ok7n4SsFK8Xq118Djz0GlCplCNJ//rHPJe+FgBAQAkIggARE1FmFK6LOKrGIzh8oUcdNw7nH3NrTQEKSIe5OXAXonvn+EhF1ET1opPHhRSAcRB1Fz7RpQNGihtsjrVtbtxpumI6bemtRV6AAsHTpTZb8v6dePeDee29+pt+ZEXV58wJ//22ISIovWueYGCSlalWgbVtd2s1Xs6JOB05hEBa6lFJ4chsEikdJQkAICAEhEBQCIuqsYhZRZ5VYROe3IuoYmbLPVmD2EeC7tTfXyNEqx43H5x8D/txnRMPkOjhGrHximrEJOfe0m3fM2Fj8wclGlEsrZdF1s9g4ow5ubfD8bKN+bnbeeQMw94ixEbpes+fulYKzwp8R3W3SeCFwk0A4iDq6QNLV8eefgaefNlwVX3wR4Bo6WrgYjfLSJaPNWtQ57lOnRR3dHB2TWVHH4CgUagyQ4ijqGFzFMTEv3Skp0JxFyKRYZRCWFSuMDcoZpIVWSFrreJ7ZffYc65W/hYAQEAJCwDIBEXVWkYmos0osovNbEXXuhJK77yii8o0GYkfcFILu8gf6OxF1ET1kpfGOBMJB1Ok2aYsW3S51gBRa3hiRcsQIY42at6KuXz+A1j1GpbRPek0dLXVWRR2F5i+/AAykwi0VdOJ18P/CSZOAVq2Ahx8G7rkHePVVI+KmMwGoz5VXISAEhIAQCAgBEXVWsYqos0osovMHQ9QFWqRZLV9EXUQPWWm8I4FwEnX2beM6OwYT4TYDzz5ruFXSuuWNqOPWCBRYuXMbIozr5M6fN8ryRdSRHS2JtBr27QscPWq4jNKCN2sWULasERyFlj9a6yTqpX0Py3shIASEQFAJiKiziltEnVViEZ1fRF1Ed580XggA4Srq7PuGQm7uXEOYeSPqKNwYiIWumdwegdsZ9O5trOPzRdSxjSdPGtslsGyukaMLKSN1bt4MjB0LnDplfyXyXggIASEgBEJEQESdVfAi6qwSi+j8Iuoiuvuk8UIgMkSdfT9dvWoEG2FQFFrydGLUSlrymjXTn6R8pbWOwVgaNTK2SahZ09hUnKJuzx5jCwVuck7ROGSI4SrJErhlwrvvGlsTpCzR+IsbjS9aZLiI1qhhWBXpPipJCAgBISAEwoqAiDqr3SGiziqxiM4voi6iu08aLwQiT9RJnwkBISAEhIAQ8IKAiDqr0ETUWSUW0flDJuoGJcHW/TRsXQ/CNuAarK6L8yW/rKmL6CErjXckEAnul45tlr+FgBAQAkJACFgkIKLOIjAV8ev554GYGKBcOatnS/4II6BFHbcMCOrR9zJsTYfBVvNDxHQ7EtS60w8B7pkYYR0lzRUCrgiIqHNFRj4XAkJACAiBNERARJ3VzhRLnVViEZ2fom7vBWM/Oe4pF6zjsQnnUOTp5siUuxAe6L8laPXy+mpOA5oviuhuk8YLgZsERNTdZCHvhIAQEAJCIM0SEFFntWtF1FklJvm9IHDu3Dk0b94chQoVwpYtW7woQU4RAkJAERBRJwNBCAgBISAEooCAiDqrnSyizioxye8FARF1XkCTU4SAMwIi6pxRkc+EgBAQAkIgjREQUWe1Q0XUWSUm+b0gIKLOC2hyihBwRkBEHXDjBsCtCS5dArjFQSAT67pyxTgCWY+ULQSEgBAQAikIiKhLgcPEHyLqTECSLL4SiGZRt/PiddRYesrl8e+Jq77ilfOjiYCIOmNbh02bgNGjgbNnA9v73Gfvn3+AqVMDW4+ULgSEgBAQAikIiKhLgcPEHyLqTECSLL4SiGZRt/h0PGwj97g8+u+95CteOT+aCIioMyx03bsDBQsCFHeBTCdPAk88AXCjcklCQAgIASEQNAIi6qyiFlFnlZjk94JANIs6Z5Y626xjySJPRJ0XA8rEKX8fuYr6q86oY9/l6ybOiJAsIupE1EXIUJVmCgEhIAR8ISCizio9EXVWiUl+LwhEs6hzhuu3Q5dF1DkD48fPPtl0Lpnx8jMJfiw5xEVFq6jj2rnz54ETJ1KKuvXrgcOHgW3bgL17gYsXnXcQzz9+HNixA9i6FTh0yFiX55iba/UOHDDy7N9vvHe01LEPmMeZ6ye/O3gQOHXKaAvbm5joWIv8LQSEgBAQAh4IiKjzACjV1yLqUiGRD/xPQERdSqYi6lLyCMRfIur8R/Xy5csYNmwYunbt6r9CzZYUH2+IpCVLgD59gL59b4q6vHmNdXWffw68+irQrBkwcmRqsUWhtmYN0K4d8MYbQIMGwIcfArNnA5cv32wJ65o3D2jZEqhfH/j4Y2DwYOCRR1K6X/L/zc8+A/r1M4K26BIoHPftAz74AJgwAVi2DGjfHvj3X2D3bteCU58vr0JACAgBIZBMQERdMgqTb0TUmQQl2XwhIKIuJT0RdSl5BOIvEXX+oxp0UUdxdOaMsV5u4kRDZN13H8Djp59uirpMmQzB9frrhniqUwcoXhwYNOim2GJZu3YB1asDZcsCrVoBX3wBVKsG3HEHMGOGAYrWNAq/8uWBKlUACkXm5fsSJVKKOraNou+uu4x2atQUiBSeXOvH4CoLFxptvvtu4M03gaFDgXXrgGPHxHqnmcmrEBACQsAFARF1LsC4/FhEnUs08oX/CIioS8lSRF1KHoH4S0Sd/6gGTdQlJAB0eVy8GKBVkCKNIqtWLeCHH4BVqwwxxK0MGCglSxbgtdcARqjk1gN0iXzsMaBSJSAuzgBAodWzJ5Anj2HF46cUcHTbpMh77jkjmibz0/pWpAiwYIFxLrcyoEBkPfaBUmjRGz8eKFAA+O23m6Dp3vnUU8CDDxptYj200FHovfACULGiIS6/+sqwElJs8lokCQEhIASEQCoCIupSIfHwgYg6D4Dka38QSCui7lR8Er7dFodHlpyEbeZRPLr0JH7YHoftF6wF4vCXqPOmPaMOXMbw/ZeS23w58QZabzgL2+xjaLHuHK4m3Uju8v2XE/HhxnOwzTmOjtvjcPOb5Cwp3njTHhYw+3i8ahPbZZ+OXE3ERxvPocC84yg2/zi677oItslM8peoO3/tBrrsuIBXVp1RbbDNOIoqi06izcZzqs0rzyTgorXuN9N813nS6po6CqDt24GmTYEyZQwL2fvvA1OmABcupOShRR2Fmr2o4nq6zp0NsUXXRyb9f1zp0ikF1LlzwNtvGyKOljOufataFXj44ZtWPp7P9XFFi6YUdRSQXJNXoYJhsWOf8GCdFHq0JjomClaK1a+/NoRnqVLASy8ZFj3HvPK3EBACQkAIQESd1UGg/8OLiQHKlbN6tuQXAqYIpAVR127LedjG7ksOvpFim4Kx+zBwn4sADU4I+UPUedsefQ0/77yAazcA+0icvKa2m86pFjNipG3iwRTXO8jNNXrbHlZmm/tfNNBRe5Np/W9rHGxjnPAevRfzT8Yn53P1xh+ijmLONn5/CgYp+v2/rSo+/Y+Zq7b49fO0KuooeqZNMwQUBRitWwxoQldHiij7pEVd/vwA19rpRIsd967jWrtJk4xPKdZoOXvgAZ3LeKUA7NDBcJWkS+SRIwCFFt0q7ROtb3T7tLfU8XsKTa6XK1bMcO/k37TA3XabEYzFvgy+5zWwzp07AbqUcp0erYK0DkoSAkJACAiBVARE1KVC4uEDEXUeAMnX/iAQyaLu/9k7DzApqqwNj7vr/uZEUkBEUcSAiAnTmkUUc3Zdcc05rDln14jImgMiKIIEwQAqYgIVcyKo5JxUQImK+P3PW5dL1/RUd1fN9ITuOfd5erq76lbVvd+t7rlvn3PPYTp54PAfUxP7FyZq9w/nCGjY56MfVdIrBR5AQJxSEairaHvCUHf+1ysiRD4/IdW/N2YEFrmSgdPdtvC+IbPKdK+i7eGE6VDX7uPSegfg2TsEV30mKz1NAekLooAr17arR84v0yc29J6WilAanOOlKdpl2BxdO3K+Tv9ybnAPlAyYGlzToC5SwmQbWfsGWN1/v9SunXNVPPpoZ/XCwkVkS++q6KEOq5i3yHE1oO6FF5yrJeBE8Ra43Xd37/1fAAuXTs7x+efu2k2buoArvg7PQB0WvHSow7L4yScOQu++27l+7rhj2eOBVax61CXoyimnOCskbqJAIEBpxRQwBUwBU6CMAgZ1ZSTJscGgLodAtruiCvz555/6+eefdcYZZ6hBgwYaMWKEljOBK5DSaeyCFCwMnC7yzoXLqF+WqaTfCotWn8mxXPEqAnUVbY+HurO/mhdYwgAVunTmV3NdP5+boCcmuD5jfcMdE/fLAGxemRruevC6ou3hJGGou/27X9y1np8QuIPiHkrBqkhbPaQBpOGSb6grGbQCap+boAEzFocvVer12IXL9O3830ttq9Q3xWqp86J5ixZul0ShxErWurV06qlSt25ujZqHuij3SwCLQCWsv6PwPw44JChK2I0T98uzzpKaNJFmzHDwh+slAVSIlkmhLcBkeqAUtzfl2rnLLs4NtG5dZ4Xzx3JtLIYEXOHcrVo56CNCJ7BoxRQwBUwBUyCjAgZ1GaXJsMOgLoMwtjkfCgB0v/zyiwYMGKC2bdtq/fXXV5cuXTRq1Kh8nL7SzzH7t+UpS9wLE/XDguj1XF0mLlwJG6y5y1XKC3X5aI+HuuC53xQtXgFNH/y4dGUfSvpO1o5D56zsxg24nuJq2HvSym28yEd7OM9KqOMaKyyD3SaXXl9HPdbslTznrIp/fWdmqbaM/nWZ3py1dOVj/5B1FVfT8L7w6/ELS0M6J10KyHoL5WvTSl2n2t8UO9SFBcYaRjCRTp2k9u0d3GHd8lC3+urSaac5QCIgysiRzsqHxcznkKPuPfdIuGr27Oly3WGlw3JG9EqCsKApgVIuu0zaaCPn0kkdcs0BkkTZTLfU0U4sgwDaGmtIWAIJhOIDtGChGzzYBWMh8uZNN7lr0icrpoApYAqYAjkVMKjLKVFaBYO6NEHsbT4VwCI3ZswYNWvWTCUlJcFjnXXW0V0EMyiAci9rqlasm8KSlakE1qwVsIFVK1cpL9Tloz0roa77eN03JuUuOhKL44q+AjRh2Lnr+xU69CoNdfloD1qVgrru43XGl5m1XmkVHTg9q8wVWVOHHXnler4eE/V1VVrisvZKDkBYR1ZSIq27rvTww7mOqPD+Kot+ma2lQNvbbzvLl4e6VVeVsJIRfAT4OvdcqVkzqXPn1Jl8SgPW1GHxe+ghF9ES6x2RNfv2dXUBO6x7pB/Yd1+pSxd3Hix3uGhGQR2WPKJ1so5urbWka69NXZfzAZm4gwKHVkwBU8AUMAUSKWBQl0iuUGQwC5SSVDmrH1OBBQsW6M4779Rf//rX4LHddttp2rQaZv3I0BciXHrQ+eCn7ME5VsLGgLIuiumnLy/U5aM9K6Gu7+SVVjrah1up72vz92eXanIQMATgS4O6fLSHC5WCuiGztMx5XJZqg39T8uo0184IV1Bfh+eKQB3Htxw2e6UeAB7r6MZFWPXC16yS17XJUpdJUCxkJPcmHQHRL3nGTRMYw/2S/eGCO+XHH0vHHefWx1H3kENcUJWw5YxUBa+95qx31Gnb1q3xu/RSl4g8fE7/2uesI2CKd/n0++zZFDAFTAFToNwKGNQllc4sdUkVs/oJFQhb6wrJSkc3S0U+BPDenJn54SNj9piYM/R/uaEuHImxnO3xUJce3CMMdf2nlV5DlhHq8tCeQGcf/bL7eM35Lft6y5UBXPpNyXonVhTqpiz+Qyuv5S2YWGOHzBLutgtXuK1mbURl7DSoK6sq0IbFLLxmrmwtCasda9kmTkytm4uqB9xRB4tgtoKlbvx4B4oEdwkDYrbjbJ8pYAqYAqZATgUM6nJKlFbBoC5NEHtbGQpgrbv77rvVunXrgrHS/bpsecpS4yf1MZ9Za5atlAfq8tUeD3WsMwuXMNSFXS+pEwV1+WoP519pqQulNAi3Lfx6JWj1nRzeXOZ1RaGOE7Le8JqR81XSZ3LZe+HFSSJYy8yl2ce6TMMqusGgrqIKVvx44JComp9+6tbrkcfuuecqfl47gylgCpgCpsBKBQzqVkoR84VBXUyhiqcavDH+16p9jJ2/XMO+n66r7nu8yq9NX6fm+ME9anTRyQflwGI3eNbS2A8CbWQr5YG6fLUnX1CXr/agU02FOj+GwN3/xi0oa7kD8ntP0qvT09z9/IGV8WxQVxmqJjvn4sUu6ArumQRbOeec3FbCZFew2qaAKWAK1HoFDOqS3gIGdUkVK+j6eAtNXiCd8E71PI4f8keVX/ukd6SrPinfsBEF0q8zwx0vX6U8UMe189GefEFdvtoTnMe7X9YwS13UeH/6828K8uj56JiAXY+J+v7XslE0o46v8DaDugpLWOETENmS3HkPPCC9/LKLqFnhk9oJTAFTwBQwBcIKGNSF1Yjz2qAujkpFUwcD0rdzpZKna8/jL12k7fqVbwi3ej8VLOP5KYvKd5KIo8oLdfloTz6hLh/tQZ7KsNStzHfXfbzempU9yE3EEOXcFKy5GzxzJfSf8kXmiJ05T5akgkFdErWsrilgCpgCpkCBKmBQl3TgDOqSKlbQ9Q3qkg1f36mLV07aN39vds4AKHHPXl6oy0d78gl1+WgPmlUG1D05MZU0vuukcvjfxhjM4T/9tvL+qP9u7lQWMU6Zu4pBXW6NrIYpYAqYAqZAwStgUJd0CA3qkipW0PUN6pIN3+9/SiWvrQih3328zvlqXtYTEBGxZwyLXnmhLh/tySfU5aM9CFoZUBcGrsbvzcoI5FGrH3tMWaSXpy9RrhAoQ2YvWQl1p5qlLutnoyB2EkWTiJcEQimGQj/mz5fmzXMPEqPjg28lpUCxjXmqZ/bKFCh4BQzqkg6hQV1SxQq6vkFd8uH7bO5vIhm3X1vH5J2cdT6X2oJlEuuszv5qnkuB8FL2UPu0IAx1JDV/c9bSUo/06JPhVle0PfmEOtpV0fZwjsqAOqauJS9NWTluR3zyU6l0CaRO6Dh2gUoGlU1iTlTLYLwHTBUJ1knMTrAUX3hF4JyS/lNXnr/KgqWYpc4PQ36f0XXUKJe7jtxzcQtQQN7NMWNcRMy4x/l6XPeHH6TpZe/DoAoQBox9/33ytXsLFkiPPir9738ukfrTT0sEeamthZQTjNXYsQ5uq2vMa6v+1m9TIKECBnUJBZNBXVLFCrq+QV35hi9wM/R56Hxag16TSkGDhz4m+rlKGOpWHufP23280nPIpZ+vIu3JN9TRtoq0h+MrA+o4LzC2Mim81xfQ6z1pJYyV9JqYLm+QqqDMuJCjrt8UlQyYqpKeE1PHdx+vEz9LAAFlrpZwg0FdQsFiVl+0SHr4YalBA+mrr3IfBMxNmCC9/rp00UXSkUdKjz2W+7j0Gj/+6JKi33Zb+h73nqAsb74pHXGENHRodJ1MWzn3wQdL++wjNW0qNWwozZmTqXbxb2e+c/nlLpE8n6PqGvPiV9p6aArkRQGDuqQyGtQlVayg6xvUlX/4vpr3u3DjW5nmwEOCf35jhjqNXaCffktZdDJdraJQx3nL257KgLqKtIdjKwvqOPdkkoiTqD1kbV0JbP2mRAI0QVDu/P4Xlbw1M/o4P+YDpurxCQtXWm25XqUXg7rKkTjJBB+LD5a5f/9bat5c2moraY01HNwlbR3J0HfaSdpvv+gjcQe9/36pfn3p44+j6+TaSlL2a6+t3VAHhL/zjrThhtKDDzrFqmvMc42X7TcFTIFAAYO6pDeCQV1SxQq6vkFdxYdvwqJlemnaYt035lcRgGPoj0urPgF1qBvWnpAYWV6y3vG9OUv14NgFenbSwsBtNM7KqXm//xnU7T9tsTqPWxBA3Oszl2jUL8sU8sjMcuU87zKoy5+gfs0ZicTDE/wvvnAWLdwiecxNi2yK9WzwYGnPPSUsbK+8UhbqcJvE/ZFzA4GZCv+DjznGgSHt4ThcJGmPd738z3+kxo1Lu3dSl3aNG+fcRidNcsdEXScJ1NHWGTNcv3FHxRoJWIYL1wZG0Wb0aGnqVAlo8gV9pkyRcGMFfjnHkiXSzJnSd9+5Y31d/5ykP/4Y/8yxrB1E60wFnU87TWrZ0vWPetU15pnaaNtNAVOglAIGdaXkiPHGoC6GSMVTJS7UrfK0tMaz0trdpNW7Vk36A6656jPSOt2ktbpJpCLIR+qFiqQ0KJ6Rt54UjQIGdRUfyqVLHXR8+KH0yCNu3Zmf4NetK/XpI91xh3TyydLhh7s1aWGw81ADSAFegEq6pQ7IGT5cuuEGZyECvoC89MJ6OVwCGzVywUwAugEDpBdecFAEGJ14oktyzrUo3ANcs2NH18ajjpJOP13q1csdk36NOFDHuYG399+XrrxSOuUU6dhjXWL1Hj1SZ6RfQO9117lrn3CCdMkl0ltvpUAUyDv7bKlTJ+nUU6V//cuB7003SbT15ptLJ2tP2h/fmqhx9PvCz5wfKydgfOutqT3VNeapFtgrU8AUyKKAQV0WcSJ3GdRFylKsG+NCHSB31FvSWcOktq/nB65yAdrfnpG27iud+4HU4T1p3W75ua5BXbHezbW0XwZ15Rt4QAxAGjFCeukl6bzzpJ13do97701ZbYAzLGf77y9dcIG0yy7SBhtIYbAJtyAb1LEGjmtgHQJsnnnGrdfDYuWtd4AFYMlavpEjXSCPTTZx7994w1kMcc1s395dlX4Ak8AU9Q47zEHhXntJzZo5QPXn9u2MA3UA0quvOovhrru6dWe33OLg7oADUtcmyAhr9Lbc0rmbXnONtPfezg2V9tK+b76RVl1V2nFH6fzzHUxtvrlrK6CMC+SQIalzJulPrnH0fQ4/E/3z4otdm4FrXzzUVfWY++vbsylgCmRVwKAuqzwROw3qIkQp3k1xoa7+89JHs6Wlf0h9JuYHrnJBHZbBcz5w2s9cLG3eOz/XNagr3vu5VvbMoC7ZsOMKCDR88IF0330OLLbdVjrwQGeN++wzB1h+gv9//+egDgD0gIL1DoiKKpmgjrrAFRABtGGh2n57B0TXX+8sWwASFkCCrXANnr/8UlptNal1a+nuu52r4DbbpNbr0c6HHpLWX98FdgHGaAPWseOPl1q0KBtJMxfUcTwul/vu69oIXPrC+T/5xL3j2kTSBHK7d3fb6OPXXztgOvRQCb2BunXXde2jf7g9EqSFCJ9En9x0U2dl5Axx+sMxccfRt9s/+/Zttpl02WV+q3uurjFPd2ct3Sp7ZwqYAisUMKhLeisY1CVVrKDrG9QV9PBZ400B53qH22BJSWriXMm6LFq0SF27dtV9QFEhFSb0pALANXGLLVxAEqxvWKQAnXDxE/z11pOeeCK1h3VaWK5YPxdVskFduD5QAljeeKOEVQ3IwCJIW1i7BtSRfqBbNwc9WMAASYAUyxaujBSiV2IZA5I4FndJHrg/4upZp45z3wxfOxfUoRPuiWuvLWGdy1T8fAGrWxhMsISdeWYK3IA6wA83VtxLr7pK2nhjB7lYKXfYwbWV68TpD5bVuOOY3nb6ji7oTbvCpbrGfODAcCvstSlgCmRQwKAugzAZN/sv6VVWcb/wZaxoO4pBAYO6YhhF60OtVsAsdfGHH5AaNMitVwNEsJgR2AMrHDAWLn6CT5TJjz5K7eF/JOkKsJxFlbhQRz3W1BE4BEgBEgEzgAcLFtDJWrarr3Zr6Hr3lrbe2sFWGNSwqJGeAPgkaiYujjwAJR7/+IdbWxduay6owxrH9QCxF18MH1n6NYC7224OcsN76BcBY3AhZb0d8ESbX37ZwTMgi3WOQoCVNm2cyyjv4/QHq2DccXRXcX+xtLL2kOikZ5wR3uNeV+eYl22NbTEFTIE0BQzq0gTJ+dagLqdExVShPFDXd6ILmrJxT+cSWfd5F9Ak3Z2SQCesxduwh6u32YtSneei63Is9dd8VmrcU9qyj9Sij3TlCi8f3C/Zxr5Nerlzhq/31y6pfQ16ZHfTNPfLYrqDrS9BkAyz1MW7EZjUA0ykBGjXzrkWHn20xBo6rGbhyI5+gp+ep85DHa6TUSUX1AGWuEbiwkjybwKQAGNY63DDJCcesMQaPgKTEJilc2e3vg7oe+ABB0vffuuu7iGI41kfmP7A6kebwwWo41qcD6hKL0SmJDALUNe3b/re1HvaCZDtvntqG6+AOgLLAMSffpqCOqKCcm0CpKRDnXeFjNMfrHlxxzHcMqyJjDVWQj4z6aU6xzy9LfbeFDAFyihgUFdGkhwbDOpyCFRcu5NC3e/LpaEzpVPflx7/Tuo3Ubrhc2m/QdJqoaiYgBPQd+I70l3fSC9NlF4YL137mdTuDWn950qDF1DW7EXp9KHSQ6OkgVOl7mOlgVOc3kBd6/7SNZ9Jz/wg3fqlA8sABrtIjXpKD4+SnvxeOm1o6XOH4Y/XBnXFdQ/X+t6YpS75LeCtZLgr+gApWN6IzIi7I+ve8j3B55r8f+3f362H22MPqVUrZ4XD8hSGK7/uDHDEOoelkP0EWSFISZMmLmQ/PQdw2MY+2hynADfAIW6cpCFIL9xTXBPrWjg6ZHo9+gMUk5sPWPMF98uzznLtBGC9pS4O1CXpT5xx9G0C6BlXrJisNb88S84AACAASURBVOR9eqnOMU9vi703BUyBMgoY1JWRJMcGg7ocAhXX7qRQh4MSwVImLpC+nSvNWCQBehN+ldq/KQFnHtAeGCH9RvqixdI3P0vjfpEWLpPmLJEu+kjaYAXYUR8rXNcxzgNq/m/SD/OlUfOkn5Y6vYG67ftLV32qIBcY59j7NQdvWAOBQQrbj3vboM6pYX9rhQIGdRUbZtaPEaCENWpElATusGIlneADCT/+6Kxw770nrb66CwhCUA+sT1ivyGVHlEiiRWKtwlrH9dMLgESY/zXXdBEsWYcG6LEWcJ11HJj4Yzjvf/8rbbSR1K+fA0csbZwDoMKil34N7hksk1ghWbdH+3BB5Thf2IZrJRBEoBTaQHoFrHNYAynA4T33SPXqST17OtCkPfSLYC4En8EymQTqytMf2pJpHF1LXdtZG4lOROWMKtU55lHtsW2mgClQSgGDulJyxHhjUBdDpOKpkhTqqD/uV6nD+1Kbl6WrP5NGznWgBbjhHkleubu+lqgLlF33ubTjAAdbvca7uj8tkf79voOvdbtLD46UAEbqdx7pABHr37NjndZAXfM+0ha9HUAu/sNZ7Mhj1+gF6f2Z0rLl0rBZ0po5Uh+Ypa547l/ryYocZeZ+mZ9bgUn92287a1rSCT4wQhTKiy5y6Qr+9jdpu+3c+2uvdYE9gCPcGoG/bAV46tpV+vvfU6kLaA9rAInGedxxqaOxVk2eLB10kHPjvPNOB1iPP+7C9uO+SdvSCxYxXDyxBrKOD5dUXD99AfAIbEJk0LZtHfyRxgHLHW6hFEAWICZwDDBM/596ylnvOA7XTeokgbry9se3m+fwOPKecxJghnWLhxxSOjF6+nEPP+xgN6wF8yLWUaa73OZzzMPtsNemgCkQqYBBXaQsWTYa1GURp/h2JYW69JQGWMnOHOqA7OelDtwAO6xyWPDenZFKGs6aOVwypyx0FjxcK7HSNemV2jZgkltbh5tkVEoDkp/f8oUDRs7T6iXp0DcdKM5dKp39QXYrnblfFt89XOt7ZJa6yrkFgBoCmDCZB1x8wWKFJS890Mb8+dKll7pIlESjDD+OOMKF+ffnyPXMmLIWDVAD5Chs+/xzt400AuECOOFaSNJvwAXrGvn0Dj5YuuuuaIghafiwYc7l1Oe9wx01XAiY8tprEu0H3DgvaQ5uvz1Vi/MQKRPQZH0dbqCA0/PPO+sZbRs/3qWO4McHgKtLF+d2ylmwEJ57bqqfbCtPf1ItKvuKsQSmWeMHqGYq1Tnmmdpk200BU2ClAgZ1K6WI+cKgLqZQxVGtolCH1Wvbfs5K9uvv0u1fSTv0dz+MLvhduu2r0pCFy2XvCQ4CJ/7qEorv8rLT8pffpP98nKofBXVcb+t+0rSFEudnXR+BW/74U/ryJ4mgLelr6NLfm6WuOO5d68UKBQzq7FbwCmCRwiUSCMX1EtfHfBQgC7dLInUCtVGFOqz7mzgxGiKjjsm1LV/9YV7ToYMDYqDSiilgChSkAgZ1SYfNoC6pYgVdPx9Qh7UMCx6Qdc+30q6vpCDvxi9KQxZQ13O8g7rxv0okNd/zVfceKLwpVD8K6gA03Dvv/caBHNbBhb9Lv/zugqikA1zUe4O6gr5lrfHpChjUpSti702B0goQuAXrJq61VkwBU6BgFTCoSzp0BnVJFSvo+hWFurW6OesaIgBYJ70jNXxBmrTAuV++PV2iDnAFTBEQxbtfvj7VuVqSooAAJ6yJ+3C21LSXS22QCepw2SQS5uwVa/rpw3fzXKqDKIhL32ZQV9C3rDU+XQGDunRF7L0pYAqYAqZAESpgUJd0UA3qkipW0PWTQh3r5N6ZIeEyCVixnu3TOQ7IPp4tNekpEfiEYCdY7gh8QoqB7V+Sdn1Zujm0Hu78Dx3s+fpY+xYtk54dI/17qEuTcO+KVEwEStm8d8rqR0qE51YscyGi5n3fpvalQ1z6e4O6gr5lrfHpChjUpSti700BU8AUMAWKUAGDuqSDalCXVLGCrh8X6kga3n+SRLoBwG76ImnEXGedw/Vx+Gzp+BWpBIAm4A7oIuUBFjwiY46e544nXQFr7QiyAnBRf9MXpZcnS1MXOndKrHa4YxLlkpIOdet1lx79zq3dw42zZT+DuoK+Ea3x5VfAoK782tmRpoApYAqYAgWjgEFd0qEyqEuqWEHXjwt1JBY/fLBL8P32DOmj2dIncyTcKx8b7dIbhC1iRLqs97x05SdSj3HSB7NcJEwCm3R4TyIVQXp91tud/5HU5QfpjanSezNTj5cmuQTjHgJbviTNWOyg7+kfSp8rfN6o12apK+hb1hqfroBBXboi9t4UMAVMAVOgCBUwqEs6qAZ1SRUr6PpxoS4MR6xpw3LH2rl0OAvX86+BKIKbrPlsMvjyx6c/B2kNvnTBVbDs7bkiCXl6vUzvDeoK+pa1xqcrYFCXrkjNfk8KACJUEi2yugvRJUlbQL412lSeQtJvzuETnPtzsq08heNrkkbl6UP6MdXZH+4z0m0QLIYH0UvROKrkeyyjrhG1rRjHPKqftq3CChjUJZXQoC6pYgVdvzxQlwmWqmI7QEYS8rG/uIib/Sa5XHdJrm1QV9C3rDU+XQGDunRFau57xmrUKJfDjfxs1VWYRANy5Jfr3dslDCePW6bJfqZ20p/vvnPJ2n/4wdUicforr0jkvEt6Ps7AOUeMcBrNnZvpypW/PV8gVp4xz9e1UYlxfvRRF/2zc2fp6aclxii9VMZYhq/B+blHvv++bFqMYhvzcL/Dr4HmadNcypHyfDbC56qlrw3qkg68QV1SxQq6fqFBHRExLxnurHSzFkuHDk5u/TOoK+hb1hqfrgATIpI6l5RI664rPfxweo28v1+0aJG6du2q++67L+/nLuoTkiON8WnQQPrqq+rrKvnrSCrevLm07bYusTgJxpNaDwEGkptz33Xq5Pozfbq00UbSxhunrHdJeorF8MEHnUbAXXUUPlP5gu+kY57Pa6Pdjz+6JPT77CM1bSo1bCjNmVNW1coYS38VAGbyZKl9e5eEPj3JfbGNue93+jPz68svl/7zH/fjRfp+e59TAYO6nBKlVTCoSxOkuN8WEtSxTq/RC9L7M6W5v7l1d/+3ItiKWeqK+z613mVRwKAuizg1bFfSCX5lNR8r4XHHSZtt5n4QYOJfHqtYZYBATZjgM07ktQO+v/mmYqOQdMzzee1wy3/9Vbr22uqBOlxx+/SR/vpXB/unnx5umXP9rW6QryzdfU+xvr7zjrThhu5HC7/dnhMpYFCXSC5JBnVJFSvo+uWGuqeWlwp0kgSqylsXC1uzFyWCrXQe5dIpuHP9qZIn/4jdHrPUFfQta41PV8CgLl2R8r/3649mz3bnwF2K/4njxjnLDa5juE9h6SpPCU/wv/jCWUxwSeMRBVVcf+pUCQhjUogVDHfHsWPLurDRds7h2zppksT1fMFawsSe7Z9/Lu2wg7Tvvu4927hO0pIE6uJqGYa6r792etPnCROcK2F6G+n3rFlOw9GjXT/QKlx83+ljeOw4FqvVzJmutteb691yi1S3rvT6604jLE1RFq7wdaJexx3zJNemD1OmuPtizBinzZIlrh+0HT3SSz6gDh0Zcz4ftDduYS3fuedKjRtLZ5whbbVV6fu3GMY8/bsjXRu+R047TWrZUpoxI7U3zueivLqnrlI0rwzqkg6lQV1SxQq6fiKoe+pPlTw0XyW3jlDJdR+rhPdPJ3d/DI4BCjnXA7NV8uSyip2n4wyVXPGOSu4ar5JHF+U8l0FdQd+y1vh0BQzq0hVJ/h5LApNk3FgfecStQWKSxuTr7rvdZOyYY6QTTpAuvVR6881owMh1ZT/BBxawXNxxh3TyydLhhzvLUDrY8R5Xra5dpaFDpWuukWjHP/8p9eqVuhr3AJP5jh3d+Y46SsIaQh2/dg8Q+OAD6bLL3AS7fn3nfsl7HrfdlloDBxQRXCPTg2AbrMuKC3VJtPQT/Dp13Lq6q6+WTjzRwUD37qXhl3YCx9dd5/rN+FxyifTWW6WBlr5jJUFLxtkX2o877K23ui30C5i7+GIHvGusIZ1yitPnqqskrp+0xB3zuNdmgg+cnn22c3k99VTpX/9y6xhvukli7G++2QF8uK35gDr0Hj5cuuEGpyc/IKBhtkJ70bxVKzdGL74o1avnPkP+uEIe86jvDt8v/8znk/WrQK2/19gX93NRHt39tYvs2aAu6YAa1CVVrKDrx4I6AOx/c1Vy4xcq+edDKmm+t0qa7xULoDJC32OLVXJeH5UccZsDu/LC4WNLVHLmcypZdyOV7HKiSs7orpJbvlFJpzkqyWBNNKgr6FvWGp+ugEFduiLx3jOhAnhYt/XSS9J550k77+we997r1rwAeW3aOEC68Ubpwgul3XeXmjVzk+h4V0rV8hN8YAE4239/6YILpF12kTbYQOrRI1WXV1gFcQE8+GDp6KMl1r1RH6i76CJXl35gaQNoNtnErVli3c5ee7l2EiQDawATQ/oDnHAOoG7LLd17tt15p4M66mIJfOihzI/HHnPgBNgBOm3bSkzWKbhyAqnABW2j+Hs0jpZ+gv/3v0t77un6CkQcdphz3XvqKddOzk07WStGP9AD6N17bwerb7zhrs1fr3v6WkbmO0ceKW2/vasLWN1+u4M/xmbNNaV//9tpBDg+/3zqnHFf+WvnGvO416bfuISuuqq0447S+ec7WNh8c6cRPxLg4jdkSOkW5oK6OGPJPcSPC3xOsDgBk88849aHYu2Mst5xzNtvu/v72WfdmDVqJF1xRap9hTbmjEG2745Uz9wrLJX8UMB9Cgj7EvdzUR7d/TWK7NmgLumAGtQlVayg6wN1436Rdnul7KPNgOXasuuPWvvWT1Vy3P36y6Y7a4M6dbVt652126lXa7cXfow8Lupc6dt26TlPDQ46S6uut6G2f2RUuc+z20tLtdudg9Sm3dFq3mJrrVenvlZpurNKjrhVf7/mfTV+aKJa915c6vx7vCqd8l5BD5s13hRIKeAnBhYoJaVJtldYbYAgrFYEegEWCBZy4IHOcvbZZ25y6idu4UkY23DB5Bd3ACtp8RP8//s/B3VMDP0kHesdYBYuQN3660tMglnjxeSOwphPnOhec04AjHpYnbAceGvO8cdLLVo4t01X2/3FPQ/3S/anF/QZPNjtp07UY7fdJKxCXIf6WGt829jGJJ2HL0m09BP81VaTTjpJwq2Qc+L+CKjSHgCIfqMJMOwtaEAFLptMng891OlEG7zuuaDOt9efO59r6uKOea5r+/vFB0XCmotbHwFQcM/lntl0U2e19f3hORfUxR1LNOYzgUUbcAeIAevrr3egD2iHx56xYi0fgXM4zgdu4YcMxpZSKGMe97vD9cr99fck61exiIdLks9FUt3D1ymi1wZ1SQfToC6pYgVf/48/pblLU48fFy/Xd1Nma9B7w3XNzXdo65bbqX79+mrTZlddec11+uDzb0vVDx8b9/XE2fPU4fSzVL/Bhhr+9agKne/npdLMX5botbfe1cWXXqY2bdqoSZMm2qhRYx1/cgc92b2Xhn4xQmOn/6Sfl/wZXOuXtCUXBT+I1oHaq4BBXfyxZ2IElOGauMUW0k47OasV0fiY9KYXJl2sHyJS5UcfSe+/L738srPe4U6WtHi4WG896YknUkdzjV13dZap1FY3QccNEQsXsBZVWOeFdYpJPf2gjTxwQcTCxfEDBpQ+MhvUMbkH0vxav6hnJu5R67ZKX6X0u7ha+gk+sBZ2MaVNRNrEwogLoJ+rYKEKQwRWkTPPdHr4tXJe9+qEurhjHhfq0AcXXqAJS6uPNkqfAV/GPlxyQV24btzXQA4/jmDFBrgBFyzQAwemzkB7sG6z399bWIUZR9Z2UgphzJN+d3gF0J2xQJuooDtxPxf+fDzH0T1cv4heG9QlHUz/RbnKKu4XvqTHW/2CVeCPP/7QjBkzNGzYMN1www1q0aKFNtxwQ+2xxx667bbb9D2ToTyVefPm6ayzzgrOP4rQ0Xkqy5cv1+TJk/XII4/o8MMPD/oAkNKHu+66Sx999FGwf2mmCVKe2mGnMQWqTAGDuvhSMxkaNMhZvoABrA0E18BixoQzXJhsYQ3DIgU04XLWurVzO8Mqhgtm0uLhggktkOgL/3dxA+T84eLdLzt0CG8t/Zp1f4SqBxqAVFzyeHgL2z/+URqOODob1LEfq1um9XR+e1Sus9ItS71LoqWf4LPuCndRX7Dq4P4IpPbv72AbiyEwHC7AH+sDwwDndQ9v4xivu3e/9OfJBVa+Xpxnf+24Y57r2mgJHKADPzAADUAV1jkKY8uPALjghktlQJ2HNIK14MKMuyw/LgCZFEAIyzdWRe5h/tdjSX3ySWmddRykU68QxjzJd4frvbPCs9aVwDAEiEkvST4X4WNz6R6uW2SvDeqSDqhBXVLFCr7+smXLNG3aNL377ru64oor1KxZMzVq1Eh777237rnnHk30bj557GllQV24ieTSevPNN3XRRRdp5513VuPGjbXJJpsEMNmvXz8Bk3PnztWf6ZO58EnstSlQ0xUwqIs/QkyicFG7/36pXTvnOsZaNdbQYXEgwqK3+gAHBDUAlpggM2llQjpsmARM+El0/KsndwME6sj5xnqcTMVDHZYQ1gemP5hI8389XLJBHRNxLHG4NmZ6sE4PS2DckkRLP8H3Fjl/DaCOBOlYqBgLrJvAC1agcOFaBKAJW4IAJQCebQRW8QVXwIMOSq2p89tzgZWvxzP3FOdhrBiL9B8MPdTlCyjDUEeSd2CNHx78/eihLt3Vj3q4SAJd1KlIAXAI1vLJJy6ZOcFk+EGBe5Br+ByMjCUuzrieMla4a/Lgs7f22s7lme+vQhjzJN8dXlv6xXcLVtTwDxR+f5LPBcfE1d2fvwifDeqSDqpBXVLFCrb+77//Hlit3nrrrQB8cFnksf/++6tz584B6FVW56oC6nzbsUCOGzdOnTp10sEHH6zmzZurXr162nfffdWxY0d9/PHHmjp1qn7jC9OKKVBoChjUJR8x/0s37oo+QApWMiIJduvm1v4ADQADbpbeKsVxAA8TdD+JTnL1pBP8OFCH++UBBzhLIuePU7JBHd+DrKnzFr+oZ6CWCItxSxIt/QQ/yv2SSKRoj/WHuQpATgJ1gMUX3C/POktq0iQVOp7xI6AH6xaJXEphLFmnxzhGWeoIBpMOlv4a4WfaCzAC3gRT4f4Il6RjTv1s1y4v1NHOBx5wQVRwqS1PQTN0x1JKYJo99nCfD6KTsq4xHRaBXQCONagEsfEPgBMLMmtFx49PQV0hjHmc7w60ZZxYQ8jnh7WrvE8vcT8XSXVPv04RvTeoSzqYBnVJFSu4+sDLhAkTNGjQoMBq1bBhQzVt2lTt2rXTE088oTnlycWTUIWqhDrfNCxyCxYs0CuvvKKzzz5brVu3DiySWCYvuOCCYDsupvNxL7JiChSKAgZ1FRspb5nq1Elq3965QGJt8BMu3C6xSgAGTFpZC0fkwZoCdfza/9//Ootev35u0o1VC9Ch3d9+WzYqYTao85NWXOoyPZKuqUuipYe61Vd3AUBoK6AzcqQDBCbJBAeh3j33uPD4PXs6d1G0wHq0zTYpKxB3B+6kRMPE6gp40R6sakTsJCBLOtRhbQNccLMFhFgXxv+FKGgGXIiUSaAiXEbffbf0/ZgU6nJdu7xQx/cE1migGEsr/cft2AcrKd3q6Hce+AlEQ3AULITozWcovdBOXJu5Xrr7MNck0iv64opZaGPu+5rpu4P9fF/wXYGlPRyJ1R/Lc9zPRRLdw+cvwtcGdUkH1aAuqWIFUR+gWbJkicaOHauXX35ZHTp0UIMGDQJXy8MOO0zPPvts4IpYVZ2pDqgL9w2X09GjRwfupQceeKA233zzIBjMQQcdpIcffliff/65pk+fLupZMQVqtAIGdfkbHibghF9nQu/d2nBXIwUA67lw22QCT5CVmgJ1QBgWJ9wIcYEjCAWQ8/jjznpEegFgJ1yyQV24Xr5eJ9HST/ABZyIksl4M6ynJq1nH2LmzaxXQAFyypg4rKxFASXeA9Y5opn37plqPRkQ8Bd4YO85JPjpSMXDOdKjj3KwhZztQDwgSWZT1mOkl31CX69rs92vqkrhf0m5+sOX+pV+se+N+9q6S6f2Kes93DXCNGyz9zla8dRSQ7tKldE3GA2shltDjjnP354MPuh9LCmHMS/fGvQt/d/j7jTWGhxySigybflzcz0US3dOvUWTvDeqSDqhBXVLFanR9YG7x4sX64Ycf1LdvX51wwgmB6yEuiEcffbR69uypX/liqeJS3VDnu4s+WObQ5rTTTlOrVq200UYbacstt9R//vMfvf766xozZky1aOTbaM+mQFYFDOqyylPunUzMcH8E6FgPxOSeNAYkAgeccDlLWrBQsB6MoChhNz0iGGIdTA+mwMQZSGFtW7bCRB9XLxJvM5HEmsXkmPx2RIz06Qb8ObDQECEyiQulP7Y8z0m0RCOiOpKSgOiXPKP9vvu6RPBhyxL9IqkzYODHiEk0AJ5uPfLnZd0X8EsqC1wyo3Snj1jMgDisTKS7wMU1Si8seLgTEkwHgE6HpKRjnuvajDUui7SfdVrABNDk70fGFgDGJTS9oBdrQnEz3m8/Z5nGBbkyCj8kYOXkXo9y98TaSgJ18uoxBymkMc+lF2MO+AKt9CtTSfK5yHSOWrbdoC7pgBvUJVWsRtYHVhYuXBhYo1544QUdeeSRqlOnjrbaaiudeOKJ6t+/fwB71dX4mgJ14f5jlfv666+DSJ/77LOPNttss8CaiSUTt9Qvv/xSfKGwRs+KKVBjFDCoq9yh4POO+x0Bo2r6Z59JIpYugBHXy5q2Trg8WgIiWNmy/fgI6GB9ZIzSATZ8d6APAE1AnGz1wsfY66pXoNDHnHk0PwZgPQe6c5XyfC5ynbNI9xvUJR1Yg7qkitWo+sAclrcRI0YELpUEBtlggw207bbbBi6XrKOrCQFBaiLU+YFEw59++kk9evTQP//5T7Vs2TJIvYCG11xzjQgsQ+AVoNmKKVDtChjUVfsQWANMAVPAFFipAMF6sK7jym0lrwoY1CWV06AuqWI1or53I8TShFVpv/32C2AOd0Lywb399ts1ysJUk6EuPKBECP3kk0+CvH3/+Mc/goAy5O479thjA2hG79mzZ4v8eFZMgWpRwKCuWmS3i5oCpoApYApUrQIGdUn1NqhLqli11gcmyLX2xRdf6H//+1+QZBvL3A477KALL7xQH3zwQY0EjkKBOj+46Dxr1ix17dpVxx13nLbZZpvANZMImjfddFOQ44+IoqxftGIKVKkCBnVVKrddzBQwBUwBU6B6FDCoS6q7QV1SxaqlPpDx448/6tNPP9V9990XJNeuW7du8Hz55Zfrs88+q9FJtQsN6sKDjPvqsGHDdNVVV2m33XYLEpqTFuLkk08OXDa//fbbYGzMehdWzV5XmgIGdZUmrZ3YFDAFTAFToOYoYFCXdCwM6pIqVqX1vcVo+PDhuv3227XddtsFofh33XVXXX/99QIoCqEUMtR5fRmLadOmBe6uBKIhCE39+vXVpk0b3XHHHQH4TZo0KUgl4Y+xZ1Mg7woY1OVd0ko9IUEgWI9bE1y2CRxClEciFZZ3jTBBHjiHDyLjz8k2K5WnQHXeR9y7RP1k7RgPgs8w7lHF7o8oVWxbORUwqEsqnEFdUsWqpD4RF2fMmBGAAvDWokWLIPT+nnvuGURrJGVBIZVigLqw3rhdDhkyRJdeemlgLd14443FgzQJffr00ciRI/Xzzz/XaOtpuD/2uoAUMKgrnMFirEaNciH3CT1fXYUJOCBHOoDevV1+N0KwZ5qYZ2on/fnuO5fXz/8PwgWd/GmEyk96vkzXyef26oShfF27PPdRvq7NWHDvkMCcYCDkDXz6aZdsO32cKuv+4L4ibQCpHb7+Wvr0U2nECBeltqruuXzqma5brveVfW1AnHQuRNGtKj1z9XnFfoO6mEKtrGZQt1KKmvCCMPtTp04N1mxdccUVQbLwRo0aiZD79957r7AEFVLxqRYGDx6sQw89NAjm8txzzwXRJAupH5naCnyzto71je3btw/y3WG922uvvYLxwsI6ZcqUIAKpB3UA14opUG4FmDiRr6qkRFp3XZckudwni3fgokWLgvWluH5bSaAA4c1JYt2gQdl8ZglOU+GqpDp47TWpeXOXqJsE3uTgS2o9ZHJPHjzuu06dXLOmT5c22kjaeOOU9a7CDc7TCcoDQ3m6tPJ57aT3UT6vjR7kTyQH4j77SE2bSg0busTm6VpVxv0BZJDj7uWXpX/9y6UN2G0393zTTdFwmd6uir7Pt55J2lMV14YDLr9c+s9/FNy3SdpXyXUN6pIKbFCXVLFKqU/URYAN+CHgCVafJk2a6IADDlDnzp01nX+cBVhwWcSquPXWW6ukpCR4rLPOOrqLiUGRFVIekELi/PPP14477qjGjRsH0TPPPfdcDRgwQB9//LGuvPJKPfbYY5YeocjGvkq7wz95g7oqlbzcF0s6GS/3hXIciJWQhN2bbebuHSbpTJSTlsqYtCdtQ5L66I91Caj+5pskR1a8bj6vnfQ+yue1w0qQO/Daa6sW6rAEk2x9002l/feXbrlFevBB6fzzHdgxh63sUll6xml3ZV8bK+A770gbbuh0jdOmKqxjUJdUbIO6pIrltT5BOLD0AAOkIiAAx6abbqp27doFa7fmzJmT1+tVx8nIo3fdddfpL3/5S/BgLRp534q1YJEDZO+//361bdtWW2yxherVq6eddtpJq6yySjDGvXv31lJbg1Kst0Dl9sugLn/6+rVCs2e7c+KGxP9Evp9wm/z+e+eWVN6k3uHJ+BdfOOsGbos8oqCK65NEHAhjssWPebg74hbFOqZwoe2cw7cVLw6u5wsWDibhbP/8c2mHHaR9WfAQDwAAIABJREFU93Xv2cZ1kpbyQB19mjHD9RlNSQQetZ6P/pBQHG1Gj3btQwNffH9oN654/G/MpKXXEe2AgLp1pddfd32fPLm0lak8Y56tT0mu7fuW6znufZTk2tzTU6a4e23MGDcu6DpzprvnGIv0kg+oYxy5j/jM0d5shXuCMWzRQtp7b9dGX597g/FPj0BdKPdRtnuIPiYZS69J+jNasBbSf7+l7+c933ennSa1bOk+p74O18/1XZhkLP15Ez4b1CUULBg03DBWWcV9cJIeb/VjKYAbog9/z+slS5Zo7NixgQXnlFNOCcLlN2vWTIcffri6deumYnLRw1rHGjOsj2uttVYQ4CWWaAVeiXEGaPv3769TTz1Va6yxRmCpBG4333zzwCqLu60VUyCRAgZ1ieSKrMwPKkxosXg+8ohbL8QECPi4+243yTnmGOmEE6RLL5XefNNNRCNPlmWjn4wDFX36SHfcIZ18snT44c6ClA52vMcFqmtXaehQ6ZprJNrxz39KvXqlLsQ9wGS3Y0d3vqOOkk4/3dXxa/eYtH/wgXTZZdK550r16zv3S97zuO221PoZJshM/jI9AEomz0mgjgkf8Pb++9KVV0qnnCIde6x0zjlSjx6pvvCK6wO9113n+oPul1wivfVWClTpz5Ah0oUXuiTP2bSkvcDcxRc7kF1jDXd9+n3VVVL37u76Scc8Tp/iXru0Atnfxb2P4l6bfgDHZ5/t3GhPPdW5NrI2EpdG7qebb3Y/CoRblg+oY6yHD5duuMFZiPhRgvsqqvh+r7eeWwcaVSe8rRDuozj3EH2KO5bh/vvXUd9vfl/4me8R1tk2bizdemtqT9zPRZKxTJ090SuDukRyraB0g7qkqiWq76MmvvLKK4Hb3ffffx8E0zj++ONFWoLmzZvrmGOOUa9evbQg05dboivWvMrAzQ033BC4YRazlS6T8gS9Iccd6+1YIwnAM/4kMrdiCiRSwKAukVwrKzNRAXgIsPDSS9J550k77+we997r1pIAeW3aOEC68UYHELvvLjVr5oKBrDxZzBd+UgpUAGe4j11wgbTLLtIGG5SFG4IV4CrI+qWjj3br3qgP1F10kbso/cDSBvhssol02GFuPcxee7l2EtCCX9mZcNEfIIZzAHVbbunes+3OOx3UURdL4EMPZX489pgDLMAOIGrbVnrxRdceXDmBVECAtvnCxJLgKVttJbGGD1gFtIC7Aw7wtdwxXJ/1WrSPfgKzWGZYA/jGG65uEi2ZEN9+u7smmq+5pvTvf7u+A47PP+/O6T9Lccc8Tp/iXjulQO5Xcfse99qME+6oq64q7bijc2VkYr/55u5+4ocH3PGA6HDJBXVx7g/uS36w4LOHdYh1cs8849acYiXkfvSFHzm4X2gL90i2Qp8K4T6Kcw/Rz7hj6TWh/9m+33y98DPr+/nhg89d2Hsq7uciyViGr5vgtUFdArGCqtXgfrmcda+/SdMWFv9j6sI/NXLybF173XWBdeaZZ57REUccoTp16gQh8U866aTAWueteEmHrzz1f19e9bpP/nW5ho2YoEtuvqdaxn12NeYIx2KHG+0111yjW2+7Xbfc21l3PvqsHu/1qj4cPala9KjKz970RdIiM0iW56MafYz/h2uBUqL1Sd+KhQcIwmpFoBcgaNttpQMPdJazzz5zE0k/KQpPbtiGCyYTXn78TFr8ZPz//s9BHZMuzsmEGusdYBYuQN3660uNGjlLHpMmCmM+caJ7zTkBMOoRhIVJore8HH+887hJX4ONKx3ul+xPL+gzeLDbT52oB4EpsOBwHerz46Nvm7c8hF0q2YbVE3fP7beXRo5MXZX2fvJJ6j39Yd0bkOstaEzsiXLIZPPQQ13/k2rJFfy5M62pSzLmSfoU59opBXK/Str3OP3mHvSBloAnXPAIgMK9w33IGjYsweGSC+ri3h+ML58zrOT8GMA9AtRff7378QA4437iBwOgnM8f185WfJ9r8n2U9B6iv75fme7huN9v6dr5zxjrbLFgh0uSz0XcsQyfP8Frg7oEYgVVqwHqFi+TeoyTLvqo+B8XvLtQx9zSRauu5lzv/va3v2mbbbYJ3PFef/31ICpi0iGrSH0yyzDJrg7tL/zoT533/tIqv/bFw6W7vq6Iavk7Frh5fmz16F8dY841r/pU+rjwl4bm7yao6JkM6uIryIQDKMM1cYstpJ12clYrLEhRk0QmM1jPv/pK+ugj5zpI1D0sOa1axb+ur+kn47iPPfGE3+qugfVqzz1T23jFZLpOHXc94CeqsJYMKxYTcPqBeyMPXBVxaeP4AQNKH5kN6phoAml+fVrUM5PsqDVWpa+SeofuuHWtvbazzqX2lH3l5yBYicJgiBXhzDNdP7HgJNWSK+WaEFMn7pgn6VPca5dVI3pL0r7n6jd9BuoAINyCsQphvfURTNEbuOd+CpdcUBeuG/c1UMIPLljGsTYDGVi1Bw50nxM+s1ik0T9bKYT7KOk9RH+zjSXnS/L9FtaPsWR80Zt7Ib3E/VyEj8s2luF6CV4b1CUQK6jqPwhVuKZu3m/S6UOlkqeL/PHE7yq5fIhK6myyMvLj+uuvrx49eohgGtVRsJJ+O7fIdU+7r/7SRdquX3WoXfaaWKhPe7926b9+d6nrmLJa2JZyKmBQF184JhmDBjnLF9CAZYAgHFjMgJlwYRKDNQyLFNCEe1jr1s5FDKsYLphJi5+M4/oIJPrC/90jj3Tn99t49u6XHTqEt5Z+jQWMsPKAIhNe3Od4eAvbP/5Rev0dR2eDOvZjdcu0ns5vTw9IUbpVpd8BpOTDAxq8m2bpGql3QDSWQCA3XABN1v1hoQCyk2rJubJNiNmfZMyT9CnOtcN9zfU6ad/j9JuJPD8A8KMFE3ygCuschfuFHzIIcx8ulQF1/kcFgrXgFs0PHfxgAWRiqcPVF8s14JmtFMJ9lPQeor/ZxjLJ91tYO+571uTiGn3GGeE97nWSz0X46GxjGa6X4LVBXQKxgqoGdZUHlw/NV0m7K1Wy6S7662Y7q+m2O2nffffVG36NQNKxykN9g7o8iFiBUxjUVUA8O9QpYFAX/05gcoI72f33S+3aOTcv1qqxhg7rQDgSIxBBsABgicksE0xcAIcNc9DhJ7zxr54CEQ8m/lgPdbidhQtQR8431rlkKh7qsGqwPjD9QYRJzh8u2aCOHxixxOECmenBOj0sgXELURRJbg7U9e2b/Sgm4wAEaxfDhfEgGApATPRODzZxteRc2SbE7E8y5kn6FOfavq/co8ALY8/YRllok/Y9V7+5poc6gqMAa/yY4e9xD3XpbnnUw0US6KJORQpAQrAWXHFJZs7aOX6k4L7mGoC8t9Yy5tzn2Uoh3EdJ7yH6m20sk3y/hbXDIs53IJZZ1t2mlySfC46NM5bp14j53qAuplArqxnUVR7UPblMJQ/MUsn907XOg1N07zsTNH78+GoNjmFQt/LOr5YXBnXVIntxXdSgLvl4+l+QcVf0AVKwwhH1r1s3t76HSSFggZult0pxHMDDpNJPeJNcPelkPA7U4X5JoBEsiZw/TskGdUzIWFPnLX5Rz1jSiIYYt3CPYpnEEhSOqhd1PHMQQJugKECDL0zozzpLatLEwU5SLTkPxxDkBTAk4mJ6STLmSfoU59q+LUywsSAD8gRx4X5LL0n7nqvf5YU62vrAAy5wCW665Sl8phjz/v1dUJw99nCfuRNPdGsqw7BIPx5/3N1H5Kaj3eHCuXhQCuE+SnoP0a9cY0kdNADEsn2/BSKtsE6znpHPOWts0zWlXtzPRZKx9NdP+GxQl1Cw6khpUGvcL0NugLigPVMDXNAM6pJ+QPJb36Auv3rWyrMZ1FVs2L1lqlMnqX175wKJZcBPZIAlLAiAHRNM1sIRJbCmQB2Tt//+11n0+vVzk1ksAAAR7f7227Lrj7JBnZ8Q4v6W6ZF0TR0jhNUJGGTySKAU3OfQFJ3DVhdA4Z57pHr1pJ49nRsofcSCs802LqAN93xSsKENWL2AB9xngRHWiuFOyrkoScc8bp/iXNu1IBUMhMBHaPDuu35P6jlp33P1u7xQxzhg4eZHDqy36IErM/df3OJ/RCAIDsFRsBAy1lFLUrg3CXLEDzC455L2AnjjXuIHEN77axfKfZTkHkLTXGOZrnum7zdfj88g32l4BGTyGov7uUgylv76CZ8N6hIKZlBXNeubDOqqRueodZq2pq76tGc8bE1d0i/lHPUN6nIIlGA3k+W333YTf++ChmsZKQAIe4/bJtH3CLJSU6COiS4JtA86yLmrkZoAGMKigbWH9AJAUbhkg7pwvXy+ZrJNEA4ijbIuCgggPx2WO/LV+QJgAI1M2pm8E9nzqaec9Y5jvftmUrDh/JybQBK4uQLrWMKIGMo6S0rSMY/bpzjXdi2oHKjL1e/yQh1txlLMZwJNWffGZwRXybiF7y8gH/dc3E5zFSCEqKikP8A1k/ude4k8hrQDyKMUyn2U5B7y/cp2D7veR/8Nf79Rw0My6xYPOSQVwTb96Lifi6RjmX6dGO8N6mKIVKoKH4gqzlNnlrpSI1Clb8xSV6Vyl7mYWerKSGIbkipgUJdUsXj1mfDw6z9AxxovIID/jSQCZyKJe1jSwgSOtXkERQm71WFpwDqYHqSASS6uiKxty1aYwOJCxcSWCRrWMHLfkd/urrvKTtawphBJMokLZbbrx92HleG115yOQBvtJM0BOeTChUAtRMs87riU9kw6AWtvwUmqpT8/bQDiCD5DGgtcV70O5RnzuH3i+tmu7duH5ZC1awTnAcijAKk8fc92be6f8eNdeg/WVDH579IldY9zv5CwHrfQ9MJYsc4U1+X99nPWbtz+KrPQl9dfd58Nfx8BeOQzBPp8KZT7KMk9RN+yjaXve5xn7iNgGndkfnDJVMrzuch0rgpuN6hLKqBBXeWtqTP3yyrRNso6F95mljqz1CX9WqzR9Q3qKnd4gAjc9IiE6YGicq9Y/rMz+cLtDGDE9RJ3qJpYgAhcunDvzBbFkHpYFdGeCXpVlfKMedw+VVUfasN10Jw5K/cRay4zlUK5j6r6HkI7ftzAyg/I5yrl+VzkOmfC/QZ1CQUrBvfLVZ6W1nhWWrubtHrXZBNYjl1zxbGcIwwD+Xxt7peVp22ucTKoqz7tGRtzv0z6pZyjvkFdDoFstylgCpgCpkAZBQBhvABwOS+QYlCXdKCKwFIHyB31lnTWMKnt68kmsIDcCW9LZw+TDnkz2bG5YCK836Cu8rQN6xz12qCu+rRnPAzqkn4p56hvUJdDINttCpgCpoApUAwKGNQlHcUigLr6z0sfzZaW/iH1mZhsAtughzRyrvTbcum1KcmOjQKITNsM6ipP20ya++0GddWnPWNgUJf0SzlHfYO6HALZblPAFDAFTIFiUMCgLukoGtQZ1IXW/nkQKqZngzqDuqRfizW6vkFdjR4ea5wpYAqYAqZAfhQwqEuqo0GdQZ1BXdJPTbnrW/TLcktnB3oFDOq8EvZsCpgCpoApUMQKGNQlHdwihLq/dZEaviA17yM17eWCqGSyPJn7ZeVacbCSbfCctOmLUou+UrPeUr3nJQLUZBqTfG+vrZa6mqA9Y2nul0m/lHPUN6jLIVDabiJEEkmRKJFEm6vMwrUIsR4Os16Z17NzmwKmgClQxAoY1CUd3CKDOtbF7fGq9MAIt0bu2THSie9I63aPhgiDumhd8gFWf39G2uVl6epPpefHSoOnSX0mSDd+IW33UtWBXW2EupqivUFd0i/kGPUN6jKLRAhucs0R4h/AoqDXiBEu59ncuZmPzcce8kANHOhys+XjfHYOU8AUMAVqsQIGdUkHv4igbtly6fv50vDZ0vhfpZmLJZJtz1kidXg/Gl4M6qJ1yQfUYS395menP+Myep5E4vnfl0tDpkt1nqu8a4fbXxuhrqZob1CX9As5Rn2Duswi8f/s8sul//zHwRw1sdA9+KDUoIGDu8xHV3zPnDnS/vu7pMwVP5udwRQwBUyBWq2AQV3S4S8iqON32fm/Sc+Pk054R7r+Mwd2y/6UPpwtMbkPT/Z5bVBXVpN0jcrzHvfKjXtKX/8s3fKFSxdxwCCpyw/uBv1xidTujcq5dnp7axvU1STtGQtzv0z6pZyjvkFdtEC4WL7zjrThhg7ifC2DOq+EPZsCpoApUFAKGNQlHa4igjosdaQ28Bag9Z+TnhvnBJm6UFqrW1mIMKgrq0k6FJX3/ZrdJEBulS7O/ZU1jqcNdeOBxe60DNbT8l4v03G1DerQoaZoT1sM6pJ+KeeoX1uhjvVw8+dLs2dHC8T/stNOk1q2lGbMSNUJQ93XXzv3zO++kyZMkBYsSNXzr7jOrFnSDz9Io0dLU6e6NXl+f/gZkJw82dWbNMm9DlvqGCv2R7l9sm/KFOnHH1076Bfuo1ZMAVPAFDAFAgUM6pLeCEUEdel56oC4az9zgkxf5Kxy6RN/g7rKgzpgiiApu70iXfiR1H2s9PEcNx5A3elDK+/a4XGujVBXU7Q3qEv6hRyjfm2DuqVLHfx8+KH0yCPSo4+WFQlNPv5YatxYuvXW0vs91NWp49bVXX21dOKJ0hlnSN27lwYuIO2LL6TrrpNOPlk64QTpkkukt96SFi0qfV7a9e670nnnSccf71w+n35a2nPPlPsl/1+vukp67LHUGj/OAjhOnChdeKHUp480fLh0ww3O0jhuXDRslr66vTMFTAFToOgVMKhLOsRFDHVrPitd+YkTxKDO6cAaw2/nVg1Mof/Fw6Xxv0jTFrogKbd+6dphUFe5Y1BTtDeoS/qFHKN+bYA6oOfnn90auJdecuC0884Sj3vvLSvSvHnSxRdLW24pAUXh4qHu7393wPXPfzqAOuwwaeONpaeecsDFNQmwss8+7jwXXSRdc420995S8+bSG2+kzopFDfjbdltpp50kQJH6vN5kkxTU0QeAb5ttXH/8GQBEAJV1fgRWGTrU9Q0r47/+JT3zjPTVV9LMmWa985rZsylgCtQ6BQzqkg65QZ3lqauE9AJYilr0cUFSfv1duvlLabWu0jZ93Q1qUFd5UFeTtDeoS/qFHKN+MUPdb79JuDF+8IF0330S4AU4HXigdMcd0meflYUcAAu3ys02ky67rKyAHupWW0066SSJCJVExsQtcq+9pB12kH75xVni/vc/aYMNnAWPM/lzA4uHHpoKvkJ9LHANG0rvv++uSRoDAJHr7Lef24Y178UXpfr1pV69Um3DvfOgg6TddnPt4TrAKKB31FHS9ts7uLz+emclBDbphxVTwBQwBWqRAgZ1SQfboM6grhKgjpD6h74pEbzm56UurQRr6jq8527QAPS+kLbqW3lw410wa5v7ZU3S3qAu6RdyjPrFCnWAzfffS6efLm2xhbN6XXCB9Oqr0q+/ZhaGfbguAnXffFO2noc6YC0MVqynu+suB1y4P/r/hZtvXhqgsAKeeaYDOCxnFNa/tWkj7bFHabdK1sg1apSCOuCRNXnbbecsdowdD64H6EVZHQFboPbGGx100q9jjnEWvbK9sy2mgClgChStAgZ1SYfW/yNbZRWpRYukR5erfr6tNPWfdwFS0tfUmftl2eGpKvdLQGrrvi61xOJl0lc/Sc+Ndc8Lfpf++NPtIxqmh6/Keq5tUFeTtDeoK/sZrPCWYoU6YGbQIAdFgBVWKwKV4MLoc86li4fLJEFPttrKrZFL3897D3X16kmsy/MFi93zz0ustevf34EalrNdd/U13DPwd9ttzlUSl0jK9OkOInGtDBcscLiIeksd+zx0st4PixvvscBtuqkLxhI+ntf0lWuOGSPhesoaPSyCWAatmAKmgClQixQwqEs62EUAdet1lx4ZLb01XWLNlocD3P1IPP7eTKnfRIlomH6ffyaQR9cxLm/a3d+U3e/rVfSZCIDPjEk6OPmvX1VQh15rPOuiXZIQ/oNZLtXEye9KT/3gcgmyvSoiYNY2qKtJ2tMWi36Z589xsUIdgAYs3X+/1K6dc0E8+mhnzcJyRbTKdBdE3mPtYm1cGNjCknuowzKGhcwXoO6FF5y7JfDkrW+77+5ruGcAC9dPjv/8c7eNdjZt6gKuhGsDdVjwwlCHBfKTTxys3n23c/vccceyxwK1WPWoS8CVU05x1kpcRIFAD5Th69lrU8AUMAWKWAGDuqSDWwRQV1HgqorjayPUeV1xB/RpJtj2t2dcJNJVn6k8iPbX5rk2Qp3vf3VrTzsM6pJ+KeeoX6xQ57vtLVW4XRJZEstX69bSqadK3bqlAqEAgaxDA5CwmPE+qnioi3K/BLIIVsJaPf4XApEERQm7e+J+edZZUpMmqVQJACCulwRRIWImhXYDnuFAKb49/v/sLrs4F9C6dZ0Vzh/HfqyFBFvhvK1aOegjOiegaMUUMAVMgVqogEFd0kH3/2wK2P3ST2Br8nNthrrqHpfaDHXVrT3XN6hL+qWco36xQ124+1i5cFns1Elq397BHVYrCoFJnnhC2mij0pEpw8fz2kPd6qu7PHZAEtEnR450FkGgkDxy1LvnHgk3zZ49XU48rHRYzoheSbAWtKcQKIWgLFwbCyH1yDcHdBJlM2ypoz5WQQBtjTUkLIEEQuEcFCx0gwe7iJtE3rzpJndN+m7FFDAFTIFarIBBXdLBN6gr45JZGRNhg7qqscpFjZ1BXfVpb1CX9As5Rv3aBHVhOQCxt992Fi2sYkTJZL3ZIYekrGXh+v61h7pVV5WwlBGABPg691ypWTOpc2dXE0sfAMmaOiyDDz3kollivSMCZ98VoXupzRhg3SMFwb77Sl26uPNgucNNMx3qfHtZR7fWWtK11/rWuXMBmLiCAoZWTAFTwBQwBQIFDOqS3ggGdQZ1lRD9MgquqmubQZ1BXdKvxRpdv7ZCXXhQ/Ho4AIrk3dkKdalDSgKiX/KMSycwhvsl+33BlZIk5scd59bGUQ9oJKBKuuWMdAWvveYseNRr29atB7z0UpeI3J/TP/ucdQRMAQitmAKmgClgCmRVwKAuqzwROw3qDOoM6iI+GJWzae5vVRMcproAOuq65n6Z53vJoM6tf+vQweV6w4KXpABuWPnC6+bSj8dqh5vmxInZrYAcB9xRD4tgpoKlbvx4B4oEgUkHxEzH2XZTwBQwBWqxAgZ1SQffoM6gzqAu6aem3PUN6sotnR3oFTCokwheQqJw3DFrcgEOCary6aduvR457J57ria32NpmCpgCpkCNUcCgLulQGNQZ1BnUJf3UlLu+QV25pbMDvQIGdV6Jmv9MMBeCruCaSbCVc87JbiGs+T2yFpoCpoApUGUKGNQllboaoO7X310+uR36S5X92LbXEtW9/we1eH5BpV8rW1/2Hii9PDnp4OS3/vLlyzV7zhz1fPtTbfr07Eg9WvVdprodx2jN275UyxeXRtbJ1s+auG+nAdIJ7+RXy/KejXv/li8q975v1ed3rX/PKK15+5dq/dLyyDHcpudi/f2G4drwfxMj9+dzHPcZKL1Szfd+ecerRh5nUFcjhyWyUUS2JMfeAw9IL7/sImpGVrSNpoApYAqYAukKGNSlK5LrfTVAHQmwZy6WfphfuY+RPy1Tj8HDtc8hR6r7a+9X+vWy9WfsL9L833INRuXuX7JkiZ577jk13XQzdXqmV6Qen06aqyNP+rdatGytD3+YGVknWz9r6r5JCypX27hnr4p7/+MJP2m/gw/X1q121Mgffyszht/NXa5Xh49U3QYb6dwrri+zP99jyL3/y4pUXnF1snpZFDCoyyKO7TIFTAFTwBQoFgUM6pKOZDVAXdImlrf+vHnzdM4556hevXrqT2LXWl4WLFigu+++W3Xq1NHL/GocUebMmaN99tlHm2yyiRbjOmSl4BSYPXu22rRpo80220x/EqAhrfz+++8aPHiw1lprLd1ETiwrhaWAQV1hjZe11hQwBUwBU6BcChjUJZWtSKEOV8NRo0apUaNG2n333bUwW2SypJoVaP358+frkksuUf369fUJCXUjCh+grbfeWq1atYrYa5sKQYFZs2apZcuW2m677SKbi8W2e/fuWnfddfXoo49G1rGNNViBYoc6olPyfU2QkaouXHP+fBeIhWAsJAiP+GGkqptl1zMFTAFToDYqYFCXdNSLFOoWLVqkhx9+WOuss446duyYVJWirP/zzz/rxBNP1EYbbaTJk6MXOU2bNk0NGjTQgQceWJQa1IZOzZgxQ82aNdNuu+0W2V1+4Lj//vu1wQYbqG84oXJkbdtY4xQoFqgjrP+0aS7htwcn+jZqlMsLR163OCWfELhggcQPHUTWJCn5009L5rEQZxSsjilgCpgCeVfAoC6ppEUKdbgRHnTQQYEb4XfffZdUlaKs/+OPP2q//fZTkyZNMrpWTpo0SWuuuaaOP/74otSgNnRq+vTpatiwofbff//I7v7666+64YYbArfkd96pIRFkIltqGyMVKBao43/P5Ze7RN30iULOuYcflho0kL76KrL7pTaWBwJLnSDtzY8/SgcfLO2zj9S0qdSwoTRnTlole2sKmAKmgClQFQoY1CVVuQihDtfLb775Ruuvv74OPfTQyHVFSWUqhvq45eGStw2htSMKuo0YMUKrr756sBYxooptKgAFsLZihePejyq44V544YWBRfbLL7+MqmLbarICxQB1WNf4QWHDDaUHH0ypnRTqqI9VDQj85pvUeSr6isTk115rUFdRHe14U8AUMAUqoIBBXVLxihDqCPDx5JNPBmuGOuNCYyVQAAtO48aNtffee0cqsmzZMn344YeBpe7KK6+MrGMba74CU6ZMCcbw2GOPjWzs3Llz1aFDB2244YYaN25cZB3bWIMVKASo82vTSLwdVfi/c9ppUsuW0owZqRphqPviC2cl++EHicfcual6uG5OnSrhhXHLLVLdutLrr0uTJkm4loeta6QVmDJFwp1zzBhpwgRpyRJxb5eJAAAgAElEQVRp5kx3/KxZqfP6V9mgDldR3DTpG+2wYgqYAqaAKVApChjUJZW1CKGOSespp5wSTFrNEpG6IXCtXHvttZVpsk9UxCFDhlhUxJRkBfeKaJfjx4/XaqutFnwGojrA2srjjjsucNEE9K0UmAI1GeqWLnUA9eGH0iOPuPVp6fLS/o8/lho3lm69tfReD3VAWp8+0h13SCefLB1+uLPIebAjgAkwd/HF0r77SmusIZ1yinTZZdJVV0ndu7vzAmDA39lnS506SaeeKv3rX9Irr0hEfj3qKOnmm8smBM8GdVgZhw+XbrjBWRv5YQTIs2IKmAKmgCmQVwUM6pLKWYRQR6CIFi1aBK6Gv/ErrRWFXSvPZoITUdBq4MCBAfjdeeedETVsU01XgHEePXp04EJ75plnRjb3p59+0uGHHx5AHa+tFJgCNQ3qsMphBRsxQnrpJem886Sdd3aPe+8tKy5RJYGxLbeU0i3FHuqAtGOOkVgXesEF0i67SBtsIPXo4c4H1N1+u1uPR50115T+/W8HdNdd5wKtUJO24Za56qrSjjtK55/vYHLzzaXDDnPAiAvokCGl25kL6oYOdf3D0ggkPvOMWwOI9c+sd6W1tHemgClgCpRTAYO6pMIVGdQxqR05cmQAJifzC6+VQAFcK4cOHRpY4a6++upIVYA68tcRMfTeqMlY5FG2sSYpwP3PetI11lhD5zOBjSiA3CGHHBKk+/iFybGVwlKgpkAdP5jh7vjBB9J99zlI2nZbici5WNg++6ws4AA8X38tbbaZs6qlK++h7v/+z0EdsOjBDOvdCSeUPoL62dbU+WPXXdcFYMHSh9snAVCwUhN9c9NNpfQIydmgjhbQD4AUayTWvu23d8FVrr9eeustF9HT0uiUHit7ZwqYAqZAQgUM6hIKpiKDuqVLl6pfv34BmNx1111J1Sja+gDbK6+8EuhCAvKoEqdO1HG2reYo8Mcff+izzz4L1tRdeumlkQ0D6tq3bx9AHUFTrBSYAjUB6oCa77+XTj9d2mILaaednEXt1VfLujKG5QWWcFsE6qICm3ioW2896YknUkeyfm3XXaU990xt41VcqMPKhzsnP2Lgnrnxxg7MsKztsINrU/jMuaAuXBe4BWxvvFHaay/XN6yMAweGa9lrU8AUMAVMgYQKGNQlFKzYoG7BggUCWurUqaP+/fsnVaNo6/uE0+utt54ef/zxyH4CdYMGDQqsnHfwS7uVglMAi+xHH32UNdgNUHfEEUcE7pekubBSYArUBKgDZAYNkho1knBlxGI1erRzw/Q559JlxWpGYJOttpLOOCN9r3vvoa5+femjj1J1+PHxyCOl1q1T23gVF+rq1JFeftkBJ/CFdY5CkJQ2bVxqBbfF/U0CdT5wCkFYcD8FPLEEAo9WTAFTwBQwBcqtgEFdUumKzFKH5eGCCy5Q/fr19fnnnydVo2jr+2TshLp/4YUXIvtJoBTylq211lpBHrPISraxRisQdrO9lpDsEYVAKeQhJAk96Q+sFJgCNQHqADTcF++/X2rXzrkfHn20hNs2VisiTKa7H/Ke/VjJCKQSVTzUpeep81CHm2O4JIE6gqMAawRISYc6AqyEC/VwpQTOoqJjUhewJQjLJ5+4JOUEasFiibWOY+Pk2Qtf016bAqaAKWAKlFLAoK6UHDHeFBnUYYU46qijAisEN4MVpwAWTNxRsWC+iotURMF1DxBmPdZFF10UUSNiE5M71r34sOP2XLlaYA0Ih2tPGxKg7r333gvA/HomlhFl3rx5Ouuss4I8daNGjYqoEbEJkBg/vnL7ZvdOSl/WawENUaUmQJ1vl7dS8Z3iA6RgTSPKZLduqUAofE/QJ4KVHH+8WyfnzxF+Lg/UPfaYhGWPiJTphevi5omlLgnUAaAPPODy6HFfhgt95v8mniB8T+6xh9SqlXTiiS7qZiYIDJ/DXpsCpoApYArkVMCgLqdEaRWKDOrmzJkT5GFr0qSJsDxZcQr8+uuvuu6661SvXr1g0h+lC+Hwx44dG7juxQ4yQ76n3r2l9u3tURUasFbnySejhi/Yxj3/9ttvB1B3I25mEYXgKATL4V4YNmxYRI2ITYA7ASaqoo92DRdREStQVKlJUBduH+vsxo51qQMYQ+DO/7CweLFbI7fRRtIbb4SPKv06KdSRQgG4Wn99B2H8kMc6Uc5DKS/UoTEWRyyGjz7qcunxGeD7DtgePNhF79xnH2f5w1pH/62YAqaAKWAK5E0Bg7qkUhYZ1M2ePVs77bSTtmDxvpWVCuCWeskllwRuqQTSyFRwx2vQoIH2J0x4nEJ+pv/+VyopsUdVaEDo9gwBUBgun2uQfIQ3k38roixcuFAdO3YUrri9AfI4hQTRTZrYGFfFGHMNwuwTiCSq1FSoC7cVqHr7bQdcWLaIkslas0MO4SYN1yz9OinUAW3ohFsmaRRIZ/Dww269H2cuL9RxLBZxvgc5N+vjcDXFpRL9R46UcGO3Namlx8/emQKmgCmQRwUM6pKKWWRQN2vWLLVs2TLIUZdUimKuj8sd+ekANlI+ZCrot+OOOwZ5/mJZOg3qqhZ0YkId6yJvYu1QRCFCbN++fYNIqPcRij5OMair2nEudKgL31NYtwAgXCSJQJmtUJdgIwRFwernC1ErsfpFBVjBWkfQlg4dXDqFAw5wCcU5FqjDbZicdKzjAxq7dHGukuzH+nbuuS7Qi7+WfwY+sWTjSrrffs5KncF13R9iz6aAKWAKmAL5U8CgLqmWBnVJFSvI+nPnzlWHDh2C4BjjmeRkKATROPbYY4N6k/h1PVcxqKvayX4MqMvlfunXTmLNy5SIvsywG9RV7TgXE9TxPwbgOuiglFtkmRvMNpgCpoApYAqYAqUVMKgrrUfud0UIda1bt9ZWhM22slIBH/GwYcOGmk7UugyFgCq33nprEFBlwIABGWqFNhcb1P3lLxKPVVap2kk811t9dYmky9lc/GJAXZwIptwDrDvdbbfdRHCVnKXYoK6mj3MxQd28eS5BOO6YVkwBU8AUMAVMgZgKGNTFFGpltSKDOtbU7brrrmrWrJmW43pjJVAgHBWUYDKZSjgBOYFVcpZigjqAinU/BD8glHk2uMrXPuCCYAyEQT/pJOmII1zQh0znzwF1cVIaMKbcD4ceemgQJTaWRbaYoK4QxrmYoC7nl4hVMAVMAVPAFDAFyipgUFdWk+xbigzqSKZ88MEHq1GjRiI4iBWngJ/EowuumJkKETAnTJgQ6PePf/xDJC3PWooJ6ojMR34tLAus3ckEVvnajnWubl2JRO/cq/wIQcTDtm0zXzsG1Pnk41dccUXGoSNYyr333iuS0XdhjVGuUkxQVwjjbFCX6460/aaAKWAKmAJFroBBXdIBLjKo82vHNtxwwyA8f1I5irU+sNuuXbsA1khvkK3gqnniiScGQVU+IVR3tpJvqAN01ljDJQdOh6ds+9Lrlud9VU/2//536dBDXYh0Qr6/955Ezq0ddig31LFejuim5Bok2mmmQj3GlgiYrKHEQpu15BPqco1jrv3lGdvwMYUwzgZ1WW9H22kKmAKmgClQ/AoY1CUd4yKDunAOLpIwW3EKhKGOdXPZCtERe/XqFVhxLr744uz5/vIJdUzm11pLOuooFz48PBHPti9cryKvq3qyv+66UufOLr/V559L662XGeZ8v3JY6nA5/uabbwKoO49k0FkK90Tbtm0DF8wvv/wyS025PF35SGmQaxxz7fc6VOS5EMbZoC77/Wh7TQFTwBQwBYpeAYO6pENcZFC3ePFiPfHEEwGQPP3000nVKNr6SaAOEQikQb6/TTfdVF9//XVmXeJCHZN1LHDkDyTvE4mJmzaV1lknBTLsP/poadw4idDhLVtK22wjNW7sjs20729/c4mAt95a2mADB4YEymnVyrk3sm6tXj2pWTMXjCQTEIQn+2ef7da6bbeda+smm7gAKhyb63rU8f1t3twdT3+5vg+EsuqqUps20ptvSoRkJyhNixYS2zO1j+05oA732TFjxmj11VfXaSQLz1Jwre3evXtgrTvnnHPEZydjiWOp830u7xjTv2z3QC7di2mcDeoy3oq2wxQwBUwBU6B2KGBQl3SciwzqyK3mo/9dffXVSdUo2vpAnV9rmMv9EhGY4LPWqk6dOjr11FOFS2ZkiQN1TPaBt1NOccmISeA7YoT07LPSWWdJdepIuCKSmBigY20ZSX0//lh6/33p9tsz77vxRnc8ua3eesvlnzrxRPf6iy+kiy5y16Zez57S3ntnhiYPdbin3nWXS6pOovbRoyV+IADwAA/am+16wAV1aAdwSn85z4svun4ALqylA+hY30h/Z82SXnvNJZ2uANQxRpMnTw4sdSeccELkkIU38oW53377CXflgQMHZg4ulAvqKjrGjE+2e6C2jbNBXfg2tdemgClgCpgCtVABg7qkg15kUIelYty4cQGMtG/fXry34qIdHnbYYcGaumyBUsJaESXzyCOPDCw5nTt3DgKs4N5aKs9dHKgDcgAiom7iZgjMfPSRy1kF1JDcF9dD1pPNnOkgZ/ZsB3SA2j33ZN537bWShzHa8vjjEq6EY8Y4l0GSHW+8MaZHycNaJmjy5yHE/w8/SN9849oJcGFN69/fgYevF3W93r2dNY2ExiRMnjJF6tdP6tVLIu/f5MkuXxfQB/Dx+QPqaB/nJxJmpvaxPYeljvGbOnWq1l9/fTHeuQpr6YC5jTfeWDvvvLO++uor4X7LGBNMZWXJBXUVHWPGMds9UNvG2aBu5a1nL0wBU8AUMAVqpwIGdUnHvcigju6T1oD8W5tttpmAECsKLG1HH310sH5qFpASoxBMg7VWO+ywQ2DJ6dixox555JEgifnKMPhxoQ6XvP/9T8IdETc6XCWBJlz+nnzSgQzWq2eekYi42aOHq0ddgCHbPg9Zf/whjR3rrnPkkRLWnfbtJdau3Xuvg6gDD8wMTf48v/8uDR0q7bijg6y773ZqATa4jPp6Udcj8Al1sDiiDUBK2wHLW291QVEGDnR9ql9fevllB7cPPyz99a+Z2+ZBLwbU4TpLlNN99903xijTzAW64447gjHGate/f3+dfPLJwbrKlS6ZcaCuomNMH22c3T1gUBfr3rVKpoApYAqYAsWrgEFd0rEtQqgjlcGFF16oevXqadiwYUkVKcr6uE+edNJJ2mijjTQF61HMgiVnyJAhwfq6tdZaSyUlJYFrH2uwsAgF4PLf/2aHEVzzcK1be21ps82kPfaQLrhAwj0SgHvhBXc8lhrC67PtuedKnzPbPg9ZRHB8/XVnzfIQ5J9pA8m9/fuoZ38eUhoQZIQ6gNbOOzu1sB7utlsK6qKux5o48txRgLqHHpJwA77mGhcUhe3ohjsq1jqsc4sWORCNalP6thhQx5fglltuqR2B0pgF6y0pEEhIvuaaa+ovf/mLmjZtGgBekNYiF9TlY4zpq42zu+8M6mLeuVbNFDAFTAFToFgVMKhLOrJFCHVMQnv06KF11lknsEAklaQY68+bNy8InMHaqR9wLUxQWKc4fPjwYE0eUMeDif+ll16qGbg55oI6JusECDn4YGeBI/AK6+VoRz6hDvdK3PTSQSju+zDU+Tx1wAogSsF9FCD19aKuRz8J6ELB4sfaQVxNww/WzhH8pZKgDks1QNe8efNE7sestezUqVMQZIUxBuy22GILDRo0SL/hOpor+mVFxzgu1EXpHneMqefHL5yPsKaNs0Gd+wzZX1PAFDAFTIFaq4BBXdKhL0Ko8xEA69evrwMPPFDLWCNVy4u3XjZo0CBwqUwqhw+cgqasv2Kyv+uuu6oXAURyQR3uk7hdsp6MiTSWK97jdpkOdWxj/Vrfvg7OmGzjgokFJ9O+qEl6eJLv3Tc33VRabbXM0Bd1nmyT/TAU+Oth2SOqJUDn9wNv/kEUTiARy2UlQR1Bcfbff381btw4e0TLiJsA181WrVoFFl0in2699dZBzsKZrFPMBnX5GGM0tHE2S13EfWmbTAFTwBQwBWqfAgZ1Sce8CKEOCX766ScdcsghwRoyAqfU9oIV5tprrw1cUoeyXixhWbRokZ5//nndeuutevzxxwO3vA8//FATvv02N9RhwSH3HEFrsPgANYT4J4w/LoysMQO4SEdw220ucMioUdIuu0g77STttZdz3cy0LwrGPGTxjKvjdddJ3btLe+5ZuVDH9bCyDB/u+jZ4sHPZBGJ5YOkjIidulJUEdbjaHnfccQGYTZs2LfZI82MIX6DXXHON7r///iDdwRtvvBGktJj/3XfZoS4fY4x2uOjaOLt76Pvvo8eOH6k+/NDdx6wXZT1mJRc+/127dtV9991XyVey05sCpoApYAqYAk4Bg7qkd0KRQh2TkIceekjrrrtu4FKWVJZiq08wjLvuuiuICvrKK6/kr3txAqWwzgwwI7IlrnNPPeUCouB+6SM/kkIAGGrb1kWMxNIFAAKNRMDEspVpXy6ow9WR6JK0leuEgS/8Ouo8SS11nM+H5sf1kv7SbyJdEhSF9AbvvefgpZKgDldbEo9jlSUReV5KrjV1+Rhjr52Ns0FdXm5aO4kpYAqYAqZAIStgUJd09IoU6pYvX66RI0cGEf0OOOAABcEekmpTRPVxn8TCRqj7bt265a9ncaCOyToWGIKFvPOOe3Ts6IKlfPCBs9hhvcI1khxu55wjvf22s0aQD+7iix2IZdoHHJEygLVqRLsMgxqvsWY88ICzCAIM6fv9+6jzAHUNGzoQw7K47bbOwpbtepwPyMEq17Wri6SJ5W7IEBc4BcDlvFgQ77jDpXjwffRtyfQcI1AKVtmbbrpJdevW1WAshfkouaCO9uZjjDmPjbNBXT7uWTuHKWAKmAKmQEErYFCXdPiKFOqQATe0448/PrBYfExgjlpcyD3Wu3fvIHjMAwBOvkpcqGOyDsgAJUzaec86LMAGAOJ9+IG1i/D2HBPezuts+9Lr+vf+2v59VT1zXWCV/HOsDazodWNAHVbqRx99NAD47ric5qPEgTr65nWu6Bhzrto8zhYoJR93rZ3DFDAFTAFToIAVMKhLOnhFDHWAzIsvvqj11lsvSHGA9a62FoLFvP/++yItAWum8laSQF1FgcaOj5V8nPueXHNEf72HPHn5KHGhzsao4uCOhgZ1+bhr7RymgClgCpgCBayAQV3SwStiqEOKGTNmqHXr1tp88801meiLtbQAtKNHjw5SEZx66qn5U4Hk4ViDdt/dHlWhwf77p/LdZRhFksZ/+umnwViTrzEvhe8JUjVURR/tGtJhh7losVGDZ4FSolSxbaaAKWAKmAJFpoBBXdIBLXKoW7hwoTp27BhY6wgUQoS/2lqIhEhCdtI85K2gJxEsf/nFHlWhAYFXSPmQo0yaNCm45w8//PAcNWPuZpyxylZFH+0aTutMngUGdTFvWqtmCpgCpoApUMgKGNQlHb0ihzosVCTbxlK33XbbiTxctbXMmjVL22+/fZB7DGuOleJVgC/CFi1aBONtY11k42xQV2QDat0xBUwBU8AUiFLAoC5KlWzbihzq6Drh/Mmvxto68izV1rV15O7DctOwYUMBeFaKVwGfp7FRo0ZBzsbi7Wkt7JlBXS0cdOuyKWAKmAK1TwGDuqRjXgugDoj77rvv1KxZM7Vq1Sqw3I0fP164ZtamMv//2zsTaKmqKw1jTEyWERHnkWQZY2KWdqIxiVEbOzjFjom2Q8RoaNu0YkIgKNE2gyZ2bLvbTjQKRkmc0i0qgjihgAooyGQAFUEQBAVEBQR5oEwCf6//Ho4URdV7detV1avhq7WK+6rq3HvP+fa5l/3ffc4+K1aod+/eyRBMLxzOq34J2Na9evXSnnvuqQleToFX/RBA1NWPLWkJBCAAAQjkJYCoy4smzw8NIOrcckfrrr32Wu24444699xz1a1bN73ghaAb6OVU97feemsSsbzjjjsaqOWN19S4rIGj09i6zuyPqKszg9IcCEAAAhDIRQBRl4tKc981iKizkzt48GC1a9cueXth5qe9GHQDvdavX6/Ro0erffv26tOnTwO1vPGamrmExaWXXtp4AOq5xYi6erYubYMABCAAgc0EEHVpu0IDiDpnvFy4cKHOOuusJFJnYbfrrrtq0KBBaWnVdHlzcFZED8lzBsxGzgRa04YsoPKZtj7++OMbdh5pAahqrwiirvZsRo0hAAEIQCA1AURdWmQNIOqMxFGqiRMnqmvXrjrggAMSUde/f/+0tGq+/JIlS9S5c2d99rOf1fLly2u+PTQgPwHb+lvf+pY6deqkpUuX5i/IL7VFAFFXW/aithCAAAQgUBQBRF1abA0i6iKWpqamZF7ZCSecoFtuuSV+3TBbt/+yyy5TIw4/bRgjb26obX3FFVckth4xYkSjNb9+24uoq1/b0jIIQAACEPiIAKLuIxQF/tFgos5UvG6Xs1+OGTOmQEj1U2zt2rXJsNOdd945WeahflpGS7IJ2NZDhgyRbX3VVVdl/8znWiWAqKtVy1FvCEAAAhBIQQBRlwJWUrQBRV1aRPVU3nOtZs+erb322kuOVnpYKq/6JGBb++HF3nvvrS5dumDrejEzoq5eLEk7IAABCECgGQKIumbg5PwJUZcTSz1/6YWpTz311GQR8jlz5tRzUxu+bXHB+X322UezZs1qeB51AQBRVxdmpBEQgAAEINA8AURd83y2/bVYUbdhk/TmSmnmu7wrwWD2Mqlp7bb2K+IbL+/Qt29fdejQQTfddFMRR8jYZeMm6d3V9IFK9AGf49Vl0uL3MwzQ/J9xvTrb+sYbb2y+cHO/frhRem05dq6Unecsl9ZtyG0RRF1uLnwLAQhAAAJ1RQBRl9acxYq6VeukP0ySvv8Q70ow+Jeh0pgFaa2bs/zGjRs1ffr0ZGmDk046SWvWrMlZrqAv13woDXmVPlCJPuBz/PBR6e5pBZnGhaKtPQTTSxusXr264H23Krh8jfST4di5Una+eJi0aNVWJvjoA6LuIxT8AQEIQAAC9UsAUZfWtsWKupXrpN+OkU64l3clGPzTYOnp19NaN2/5ZcuWJev2ec26CRMm5C3X4g+rP5TunUEfqEQf8DlOfUD605QWzZJZwLY+55xzEhE/bty4zJ8K/3vZaukHj2DnStn5+0OkhStz2wdRl5sL30IAAhCAQF0RQNSlNSeirjYc1RKLupgFc5dddlGPHj30oR3FYl6Iusr2nyJEnW09ePBgdezYUd27dy8uYQqirrJ2RtQVczdiHwhAAAIQqCMCiLq0xiy1qDvxPil5NxPBi2Wae+ody5zYzHFy7V/sfrmOVU3flVjUuZu89dZbOvLII5OFyGfOnJm254TylRJ17gfRts3ZpZAyze1f7b8VIepsKN8YjzrqKH3mM5/Ryy+/nN7WpRR1ttE/DpS+M1A66b7KiqVqt2+sH6IufR9lDwhAAAIQqCsCiLq05iylqPv2/WHezRWjpB4jcjtrpwyUej8lXT5S8jyx6MTErZ337w0Kv/98pHReiiFfPv9PR0hp94vnruZtGUSdk2jcdtttSQTHC5KvW7cube+RKiHqbNcew6V/GyVd9rR02qBt+41td8r9oW/1GSmd81DuMtVs40LqVqSo81y622+/XbvuumsSmU09j7K1os7i7cwHpYufkHx/+N1z0n+Nl34xOlyzvs4t8gph0AhlEHXp70XsAQEIQAACdUUAUZfWnKUUdRYeo96QnBFx7nuSP2c6YHbs7NStWCut3yiNXRAc8cwyduDt6PkYTeuk/xi39TEyy2b/ffYQac4y6YP10p9fKHy/7ONU4+cyiDqvY7Zw4UJ94xvf0AEHHKBJkyal7T3lF3UW+ec/Is1fEermuZwWBLls5CQWb6+SYhKfXGVq/bsiRZ1t7chs586d5eUNRo0alc7WrRF1vu7/+THpr9MkZ3X0tR1fMXvq8LnSlaNy27XWbVZM/RF1sYewhQAEIACBBiWAqEtr+FKKOkdKrh4TBJud72xB9t0HpLte2lJDZ9T78fCtHTmLlyfnBcfvtfek07OEYXMOEqJuC9sC/3LEZsCAAdpjjz109tlny0k1Ur3KHanzML3rNif3sBbww4AJi3JHddpa1FmAOtpkEdpcP23Nb0WKOtvUc+sefvjhZDHyE088MRH0Bdu6WFF38n3SRU9Iw31NKzxwWdAkzXpXmrYkbP3Z94LR88vHzcwrYZ9SnQNRV3DXpCAEIAABCNQnAURdWruWUtTZcbJj7afxdr7HLdwSiYsRl9dXSHbOve5Vkg5/1pZ5NX6i/6+Ph0iexcL/vZzOyUPUpbV+Ut4LVJ977rnJ0Lx+/folzn/BByq3qDtriDRpkeR1Ed9+P/Sb99aGYZbZ4qitRZ0fWvxmjPTAzHT9NrsdzX1uhaizTVesWKGePXsmtr788ssLF/HFiDpfz90eC0txbNoUhNvjr0m/HC394OFwb/DWw2rN7J7p5eNmppWwT6nOgagr+BZEQQhAAAIQqE8CiLq0di21qLPT6aGPFm52BLsPC45aZsTFQsBP6e3oeQHzcx8OZbxv/6lh33feD0M1o4Mbn4Bf8Jh0ybDw9ppdjg7GMs2JOpdz+e5PSD8eJvk4Lu/jen8P+3Q9fvR4iB5+9HtGIgdHHTwP0GU8P8iOl4eTuo3e1wkgXMaOqr/zu+tDW84R61lIW2LZuC3D8MvYVTZs2KCpU6fq0EMPTZKmPPXUU/J3Bb3KKerM8mdPSms3SI78OpX/vPfC52GvSSdn2N6coqh7f710y+QQMXNfuXCoZHEYWcZtQTa/P9j7wsfDXM+473ceCBEoH9t9y333t2PD2mIT3gy/+QFF7Ntxv9ZuWynqvG7dvHnzkjXrdtttt2RBcov6Fl/FiLrMyLz7ycBXAqdcDHztZM+VLMg+ea5J293z9Cwsfb7m7OPr0b97iKiv2biv5/Zm1zXvfeS+5s+RfZyWPnI/gaYAABiiSURBVCPqWuySFIAABCAAgfomgKhLa99Sizo7URY9njfnSNz9rwRRYwH1/KIQabGgczITz32zA25n3Y5V14fDcCxH+bzQdhRc3p7xYBjOaYfZwzJfXSY9Mz889Y8JFnKJOu9rZ/HXz0qj35BeWy4tbJImvin978shC58dOidveHS29NJi6Y0VITo0YHpw8qJj6Do8t1B6YXEQn/fPkGa+G+rzyOwg8JzQY+hr0uzlYV7hoJlbD8crtC3ZTl8ZRZ27jIdh3nvvvcncOmfEfP755wsTduUUdbbbg7O2zNF0/0geGGySFn+wbaKdKOosAt1/PIzXczunvB3mc53/6BYnvVCbW7x7/8lvS32eDvu7P3hI4SvvShMXSd0elX75TBB0flDhvu/fXloSFgrPtmVrPrveKdepy74lePkK2/drX/tasnbd9ddfr/nz5ycLlWeW3WqZi2JEna9HX6tm4jmRFnmFtr1Q++S6Jj20c36T5Hl6fohjIdacfSzenLTFIwtc33krQt+5YVK477jOLd1HfIzmzlFou2M5RF1mV+RvCEAAAhBoQAKIurRGL7Wos1PieXB2qJwEwQ6SnTtnLVy/ISSx+P3E4CxZoHlY3fSl4bOdougUZy5sbtH2x+eDCFzygTR2YZh/42ienfsrRwdnMZeoSyKE46WmtdK6DUHQTV8SRJcdb0dwrno2RAwtMmcvC466hZ0FywvvbIkYRtHgOi9aGYSlHf6lH4Rj+28PFZyxNOznc1rYWphEZ63QtsTycVtmUedus2rVKl133XXad999ddxxxyWO//r165vvUeUSdY7cOFpqG5vhfTNCJNSRMc+/8nktuu1sR0bRPu53S1cHMTb1ndBHLPQc3TNHO/mF2tyR1lXrQ9IeD630uRxB7PVk4LJsTcj0+ticUC/33/fWhEi0+8MdL26pX6xna7YlEHWuuO06duxYHX300XLE7qKLLkoWoV+8eHEi7pwJ1YlzvNSF+0USdU+7+LgjZebu627k64VzSGOfaPN4Tfr6NXffJ+IQcF/j+exz50vh+vaQXj8o+tvb0ox3Q72dcOe/J4R6t3QfcVvznaOYPoCoa/6+w68QgAAEIFD3BBB1aU1cDlHnYVMWaHbm7Bh5KNyjczaLvPfC0EUvbeAshp5bZ/Fz/QTpqddDGTtXceiTnXYnnnhrVXDkHflz9MTD2hxp8/4WUhYB2aLO+7qc5/G5nMXcr54JotPDKD1cztEbP52PDqCH2bn+TotvB9FC1BFBHys6kD7Wi+8E0fHdQcFxN3e39+nXQz1cl2Fzw1BSDzH1UME0bcl2/Csg6twEz7m68sortd9++yXrmnkoZlNTU/5eVS5RF8Wvz/zu6iCibBfb/onXQj+x8LbzG1lF+8QIscWBud38t2BfD+H89+eCHQu1eSGizuLT9fKDjETAvBHsbfHnfhnrV4ptiUSdsToS99JLL+nMM89MIrQHH3ywrr76ao0ePVpjxoxJMmWefPLJuuuuuzR97GQ1nZ2iLe7r5mKBnf1goyUOtmOh9ok2j9ekr2tfk395IfRZRxh9jeezj23kYZcPvRrq6+vUIw0c4bUg9RzAQu4jFn35zlFMH0DU5b/n8AsEIAABCDQEAURdWjOXQ9TZabOo8dBEO1tOnLJ8dRBlmckQvJaY50hZUDla52Frjpb56Xl0/OxkedibXxYQdr7ssN3+ojRkVvjeT+U9VC9b1Nlh6705omJxeeOkLcf18T2MzvNn/JQ/O1W+h4rdPS2IskWrgsiMDqSHjDpymHkM18T1v3TzEL3MOYSOGllcpGlLbH/cVkjUuRkWcddcc40OPPBAHXTQQbr11ls1d+7cJLrj350e//333w/D9col6tw3PBTWkS8vU/CbsSG6ds1Y6b5Xgt1tBwu2yCjaJ3tJA/cLC0CLi8Ez09m8EFFnUeDotCOBUdjHOpV6W0JRF23pjKc33HCDjj32WHXq1ClZ8uCrX/2q2rVrl7x32GEHHXfk0br3m320usvdW3i31Daz87IkGzaGyLWvx5b2KdU16bmufjlq2vPJ5u3jhwW+3j3n9mdPhT7lBzofCfQW7iOxTaXsA4i6YD/+hQAEIACBhiWAqEtr+nKJOjufjtDFJam8dfZCJ4+ITpDLxKQqrndSZtXWc6UcbXFEzS87h466eXhj5tvzmhyRyxZ1mfvaufOQuXhub+3M/erZcGz/nrm8gkXZf44Pv/lpv+dN5RMNdgb98hAuJ/b46NjPhO8dafLcn8z6tNSWzHr67wqKOlfai1XfeeedOuKII7T77rura9euGjZsWJJkY+nSpRo6dGgyPG/N8lXSvTO25ppd97SfbRfPcbTYdp+wGMt+2+H27y8v2RLVzWcfs5/0VnDSn52fzuaZos790G2xOMkcflnDoi50UCUC3WsW9u/fX+edd14y326nnXbSdtttp/bt2+srhxymy75wmt78+36F2zrhviicwkNme44I7HL1B0fDfD8o1zXZnODydemRBSM3z7n1w6iFK7eIuszrNtd9JLanuXPEMoVuEXWxa7KFAAQgAIEGJYCoS2v4com6ZE7UUMlzjvzKFcFwmThHKpaxY5Xp+NiBtjPoiF+MwNhZjO8zh4Qn7HYGs0Wd97XIsoCKC5J72Gc8vvfxE33XzfOmHH2LSVHsoHkuXJLkoSmsP5ZPNBQq6tK0JdYxbiss6mwOD8+bPHly4uQ7Yrf33nsnf990003yOmeHH364HrpvkJb9efwWprG+rdlG5zjOjRsxT8p+O6mF+4SH7sa5brnsk/TDx8IcqxhV9IOFQm3uiKHFuvue54K6XXbyPSfPL/fvKOoenxOizk7SEtvv6Gz8uxTbEkfqQiO2/tcZMh2ZtY0PO+wwde/eXeOHjtQmZ3VN0wY/GPFalRZ0vgb9IObSpyQzdWTMbLz155+OkByFtb3S2CeXzV3H7GvSfSqXfXwP8DBRz821jf/yonTB0DDs0n3E96OW7iP+3feNfOcopg8g6rbulHyCAAQgAIGGI4CoS2vycok6O1YeEunkAX7ZsfvF5oQmmY6hyzjrpF92nj3nLfN3/22x9srS4MQ7CYKHU9kR89uird/k8JQ/W9R5XztHnqPnqI6HgdpxdNrynwyXrhgZRKUzG3r+jI992VPBqXSiljeaQnZOD/lMjvVQGAoYxWWsZ7YD6e+TiENWpM7fF9qWeOy4bQNRF4yiZKjlwIEDdcYZZ+iQQw5JEmt4aJ6jOPvsvpdu6PpzzT/2Zm06YcC2tov1L3Rr59hOvSMiyXDJjCQzmcdwJkwPqfTQ3ecWhCym0cG3gPd8S8+NcjZSL3hvce6kK14TzXOfCrW5k2w4oY4dfC+O7b5jYeKIn19R1FmceF1FC1HXq8eI0MecICiz3q39uwKizs3y8Np77rlHI0eODFlQi8l+6bZ6buxfp4XENWbjhcadEdYC2VHyP0wKw6gdGXOEzPuksU+0eUvXZD77OCLshwKOCLt/+Fr2kGxnuXXf8nxdz+m1oG3uPnLWg0GglqoPIOrC9cW/EIAABCDQsAQQdWlNX05RZ2Fz+agQJXtxsZQZJYvObZxn5vlRdp7j8gTxd2/j8CgPvXS0xfPznDlz/EJpznth7pWdx1yizvt6OQPva5FgR81JEOxc2pG08+15cI4ieP6PnVfP5fIcO//tJCk/fKR0oq7QtmS233+3oaiLXcpDMp045eKLL07mWm2//fbateOu+rt9D9JtX/yRNhx/T+sFTDIkd2o4peciZg+ZjVzspDuroMVaHNpnARbnZnoepO1oW9vm/jxwZogEuV8WanOfx0OEPV/Sx/GDAYsP9ye/oqjzMS0YHfFxBNECwfNF/aAg1rkU2wqJutC4jH+LFXVus+t865SQedbXeebL9vN16WyyTjTj8mnsU6ioy2cf9xELb/chPwxwYhQnOPK9wXXz0GlnXnU0sbn7iIVgvnMU0wcQdZm9hL8hAAEIQKABCSDq0hq9nKLODpqHSXro3P9sHrqWy7G1YLEz1XdyfgfYDpOTGAyfJ01bHATg1Lelh2eHyImHbXn4kzMj+um6h33Fc3nf3t53btjXAm7CojAXzM6ah085AuMIgtfSc5ZMD6GzaPDv8ThnDA5r3XkOX2ZE0WXsHHpIYJwzaLHqiKK/97EckYzHKaQtsWzcVoGoc9dyqvsRI0boy1/+spwZ8YpLf65BPW/Q3GP+qE3HlyBSZ05OZuLsoralbRMZZG4d0XOk1ksWPP9WiPz4gYDt7vUDzdwCL9rS/S/zgUGhNvdcL0eOvHyC5+/Znh6We+Wo8LcjOnGBcYuXG58PSUHcx/zbLVNy1z+zLWn+rkVR5/b5gY6vGa/naIaOvPvtJUN8XdpuvldEFoXaJ801mc8+Fu5OvOS6uN/5PtD3b6Hv+MGRRwJ4KGlL9xHXPd85YrsK3SLq0v5PRnkIQAACEKgzAoi6tAYtt6iz821BkulQZzs2UZDZIcr+LfuznWw7WI7K5HP4s/fJ/OxImZ10nzPz+/h3rK/PE78r1zZNW6pE1Hme3Zw5czRlyhStXbs2RE5LnSilFLxtX0dvT88Q0/mOW4jNbSv34Uxxnu94LfWxfPsV8n2tirrMtvm69TXot9ln/pbr70Lsk2u/fN/lso/ta7bxPhX7T757TK5jZJ6vpd8zy+b6u0pFndex9BqHvGFAH6AP0AfoA+XuAwsWLFCXLl3Cerlp9U2VlW9XkfqUW9Tlclj4rmVHNptRlYi6bfpkTD6SXV8+p7dxIczqQdQV0s5GL1OFou7uu+9OFqkfNWqUeMOAPkAfoA/QB8rdBwYPHqxjjjkmmee/jf9ZY19Uv6i7blxIDuDhS7zLy8BD/Jyoo9peng/1wMzytp2+tYWvI9TO0Fjpl+ecOVMttqgMAy+h8ubK3Fb+8ENp3DipXTupQwepX7/c5Ur4rYddO2lOt27ddMkll/CGAX2APkAfoA+UvQ84+3avXr3CyLAS/p/WFoeqblFnZ95ZK529jnf5GXjNPyeSqbZXzBBIHyh/HzBjL7beFuLeCU7+8kJl2khfkm6bGhJC5bre20DU5aoG30EAAhCAAAQgUBiB6hZ1hbWBUhCAAAQgUEoCiLpS0uRYEIAABCAAgbITQNSVHTEngAAEIFBjBBB1NWYwqgsBCEAAAo1OAFHX6D2A9kMAAhDIJoCoyybCZwhAAAIQgEBVE0DUVbV5qBwEIACBNiCAqGsD6JwSAhCAAAQgUDwBRF3x7NgTAhCAQH0SQNTVp11pFQQgAAEI1C0BRF3dmpaGQQACECiSAKKuSHDsBgEIQAACEGgbAoi6tuHOWSEAAQhULwFEXfXahppBAAIQgAAEchBA1OWAwlcQgAAEGpoAoq6hzU/jIQABCECg9ggg6mrPZtQYAhCAQHkJIOrKy5ejQwACEIAABEpMAFFXYqAcDgIQgEDNE0DU1bwJaQAEIAABCDQWAURdY9mb1kIAAhBomQCirmVGlIAABCAAAQhUEQFEXRUZg6pAAAIQqAoCiLqqMAOVgAAEIAABCBRKAFFXKCnKQQACEGgUAoi6RrE07YQABCAAgTohgKirE0PSDAhAAAIlI4CoKxlKDgQBCEAAAhCoBAFEXSUocw4IQAACtUQAUVdL1qKuEIAABCAAASHq6AQQgAAEILA1AUTd1jz4BAEIQAACEKhyAoi6KjcQ1YMABCBQcQKIuooj54QQgAAEIACB1hBA1LWGHvtCAAIQqEcCiLp6tCptggAEIACBOiaAqKtj49I0CEAAAkURQNQVhY2dIAABCEAAAm1FAFHXVuQ5LwQgAIFqJYCoq1bLUC8IQAACEIBATgKIupxY+BICEIBAAxNA1DWw8Wk6BCAAAQjUIgFEXS1ajTpDAAIQKCcBRF056XJsCEAAAhCAQMkJIOpKjpQDQgACEKhxAoi6Gjcg1YcABCAAgUYjgKhrNIvTXghAAAItEUDUtUSI3yEAAQhAAAJVRQBRV1XmoDIQgAAEqoAAoq4KjEAVIAABCEAAAoUTQNQVzoqSEIAABBqDAKKuMexMKyEAAQhAoG4IIOrqxpQ0BAIQgECJCCDqSgSSw0AAAhCAAAQqQwBRVxnOnAUCEIBA7RBA1NWOragpBCAAAQhAQBKijm4AAQhAAAJbE0DUbc2DTxCAAAQgAIEqJ4Coq3IDUT0IQAACFSeAqKs4ck4IAQhAAAIQaA0BRF1r6LEvBCAAgXokgKirR6vSJghAAAIQqGMCiLo6Ni5NgwAEIFAUAURdUdjYCQIQgAAEINBWBBB1bUWe80IAAhCoVgKIumq1DPWCAAQgAAEI5CSAqMuJhS8hAAEINDABRF0DG5+mQwACEIBALRJA1NWi1agzBCAAgXISQNSVky7HhgAEIAABCJScAKKu5Eg5IAQgAIEaJ4Coq3EDUn0IQAACEGg0Aoi6RrM47YUABCDQEgFEXUuE+B0CEIAABCBQVQQQdVVlDioDAQhAoAoIIOqqwAhUAQIQgAAEIFA4AURd4awoCQEIQKAxCCDqGsPOtBICEIAABOqGAKKubkxJQyAAAQiUiACirkQgOQwEIAABCECgMgQQdZXhzFkgAAEI1A4BRF3t2IqaQgACEIAABCQh6ugGEIAABCCwNQFE3dY8+AQBCEAAAhCocgKIuio3ENWDAAQgUHECiLqKI+eEEIAABCAAgdYQQNS1hh77QgACEKhHAoi6erQqbYIABCAAgTomgKirY+PSNAhAAAJFEUDUFYWNnSAAAQhAAAJtRQBR11bkOS8EIACBaiWQLer69q3WmlIvCEAAAhCAAAQqmijle9+TtttO+uIXAQ8BCEAAAtVMAFFXzdahbhCAAAQgAIFtCFQuUnf66UHUff7z0saN21SELyAAAQhAoEoIWNQ9+6zUrp3UoYN0yy1VUjGqAQEIQAACEIBALgKVEXXLl0sXXBAchP33l/yZFwQgAAEIVCeBtWulQYPCPbtjR2nAgOqsJ7WCAAQgAAEIQCAhUBlRt2qVdO21wUHYY4/wBBgDQAACEIBAdRJYuVL69a/DPXvPPaWJE6uzntQKAhCAAAQgAIGEQGVE3fr10vDh0ic+Ie20U3AWNm3CBBCAAAQgUG0EfG9etEg65hjpYx+TvvQlySKPFwQgAAEIQAACVUugMqLOzbeTcMgh0vbbS4cfLr3zTtVCoWIQgAAEGpbAunXS44+Hh3A77ij16NGwKGg4BCAAAQhAoFYIVE7UeQjm734XRN3OO0u//73kyfi8IAABCECgOgg4SrdggRSzFXfqJI0ZUx11oxYQgAAEIAABCOQlUDlR54yXs2ZJBx8chvR84QvSlCl5K8YPEIAABCBQYQJ++PanP0kf/7j0qU9J3bpJGzZUuBKcDgIQgAAEIACBtAQqJ+pcsw8+kPr1C/PqPvlJ6bTTwlPhtLWmPAQgAAEIlJaAh10++aTk6JyHyR96qDR1amnPwdEgAAEIQAACECgLgcqKOjdhyRLpnHPCk+BPf1rq1Ut64w2JxCllMTAHhQAEINAigTVrQlbib34zrCe6zz5S374t7kYBCEAAAhCAAASqg0DlRZ2H8syYIR11VBiG6Yn4F14YhmI2NVUHFWoBAQhAoBEI+H7sJFZDhkhHHhkE3S67hOQoXquOFwQgAAEIQAACNUGg8qLOWLzEwTPPSEccIe2wQ4jaOSNm//7S9OkhmkcSlZroQFQSAhCoMQIeFbF6dRj6Pnas1KePtNtuQdB5e/754R5cY82iuhCAAAQgAIFGJtA2os7ELezGj5e+/W3Ji9u2ayd5nl3nztI110hPPBEWvH3hhRDZe+UViTcM6AP0AfpAcX3g5ZelyZNDNst77pG6d5c+97lw7/Uaok5e1bs3gq6RPQLaDgEIQAACNUug7USdkTkjpof+/Pa30le+InXoEBwMCzxnX7PYO+ww6R/+QTr+eN4woA/QB+gDxfSBLl3CYuIHHSR5SRnfY/12QpT99w8P1wYODA/bava/MyoOAQhAAAIQaFwCbSvqIncPtXSWtZ49pa9/PWRdO/BAaa+9pPbtg8Cz88EbBvQB+gB9oLg+4JEQHTtK++0XlpbxgzSLPSdEcQIrXhCAAAQgAAEI1CyB6hB1EZ8n7b/1VhiWOWCAdN110sUXS6eeGp4ke6gmbxjQB+gD9IF0feCUU6Szzgrz526+WXrsMWnaNInkVPF/H7YQgAAEIACBmiZQXaKuplFSeQhAAAIQgAAEIAABCEAAApUngKirPHPOCAEIQAACEIAABCAAAQhAoGQEEHUlQ8mBIAABCEAAAhCAAAQgAAEIVJ4Aoq7yzDkjBCAAAQhAAAIQgAAEIACBkhFA1JUMJQeCAAQgAAEIQAACEIAABCBQeQKIusoz54wQgAAEIAABCEAAAhCAAARKRgBRVzKUHAgCEIAABCAAAQhAAAIQgEDlCfw/WioOjkmwvY4AAAAASUVORK5CYII=" + } + }, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Document Object Model\n", + "\n", + "In order to render a HTML page, most web browsers use a tree structure called Document Object Model (DOM) to represent the HTML page as a hierarchy of elements.\n", + "\n", + "<div>\n", + "<img src=\"attachment:image.png\" width=\"600\"/>\n", + "</div>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Take a look at the HTML in the below cell." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "<b>To Do List</b>\n", + "<ul>\n", + " <li>Eat Healthy</li>\n", + " <li>Sleep <b>More</b></li>\n", + " <li>Exercise</li>\n", + "</ul>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### BeautifulSoup constructor\n", + "- takes a html, as a string, as argument and parses it\n", + "- Syntax: `BeautifulSoup(<html_string>, \"html.parser\")`\n", + "- Second argument specifies what kind of parsing we want done" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "bs4.BeautifulSoup" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "html_string = \"<b>To Do List</b><ul><li>Eat Healthy</li><li>Sleep <b>More</b></li><li>Exercise</li></ul>\"\n", + "\n", + "bs_obj = BeautifulSoup(html_string, \"html.parser\")\n", + "\n", + "type(bs_obj)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## BeautifulSoup operations\n", + "- `prettify()` returns a formatted representation of the raw HTML\n", + "\n", + "### A BeautifulSoup object can be searched for elements using:\n", + "- `find(\"\")` returns the first element matching the tag string, None otherwise\n", + "- `find_all(\"\")` returns an iterable of all matching elements (HTML 'tags'), empty iterable otherwise\n", + "\n", + "### Beautiful Soup Elements can be inspected by using:\n", + "- `text` returns the text associated with this element, if applicable; does not return the child elements associated with that element\n", + "- `.children` all children of this element (can be converted into a list)\n", + "- `.attrs` the atribute associated with that element / tag." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`prettify()` returns a formatted representation of the raw HTML" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'<b>\\n To Do List\\n</b>\\n<ul>\\n <li>\\n Eat Healthy\\n </li>\\n <li>\\n Sleep\\n <b>\\n More\\n </b>\\n </li>\\n <li>\\n Exercise\\n </li>\\n</ul>'" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bs_obj.prettify()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`find` returns the first HTML 'tag' matching the string \"b\"" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<b>To Do List</b>" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bs_obj.find(\"b\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What is the type of find's return value?" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "bs4.element.Tag" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(bs_obj.find(\"b\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How do we extract the text of the \"b\" element and what is its type?" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'To Do List'" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bs_obj.find(\"b\").text" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`find` returns None if it cannot find that element." + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [], + "source": [ + "# assert that this html string has a <ul> tag\n", + "assert bs_obj.find(\"ul\") != None\n", + "\n", + "# assert that this does not have an <a> tag\n", + "assert bs_obj.find(\"a\") == None" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`find_all` returns an iterable of all matching elements (HTML 'tags') matching the string \"b\"" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[<b>To Do List</b>, <b>More</b>]" + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bold_elements = bs_obj.find_all(\"b\")\n", + "bold_elements" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What is the type of return value of `find_all`?" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "bs4.element.ResultSet" + ] + }, + "execution_count": 90, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(bold_elements)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "bs4.element.Tag" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(bold_elements[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use a for loop to print the text of each \"b\" element." + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "To Do List\n", + "More\n" + ] + } + ], + "source": [ + "for element in bold_elements:\n", + " print(element.text)\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unlike `find`, `find_all` returns an empty iterable, when there are no matching elements." + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[]\n", + "None\n" + ] + } + ], + "source": [ + "# only searches for elements, not text\n", + "print(bs_obj.find_all(\"Sleep\")) \n", + "# if not present returns None\n", + "print(bs_obj.find(\"Sleep\")) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can invoke `find` or `find_all` on other BeautifulSoup object instances.\n", + "\n", + "Find all `li` elements and find `b` element inside the second `li` element." + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'More'" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "li_elements = bs_obj.find_all(\"li\")\n", + "li_elements[1].find(\"b\").text" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<b>More</b>" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "li_elements[1].find(\"b\")" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'More'" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "li_elements[1].find(\"b\").text" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### DOM trees are hierarchical. You can use `.children` on any element to gets its children.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Find all the children of \"ul\" element." + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[<li>Eat Healthy</li>, <li>Sleep <b>More</b></li>, <li>Exercise</li>]" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ul_element = bs_obj.find(\"ul\")\n", + "list(ul_element.children)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Find text of every child element." + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Eat Healthy', 'Sleep More', 'Exercise']" + ] + }, + "execution_count": 102, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[e.get_text() for e in ul_element.children]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that `get_text()` only returns the actual text and not the HTML formatting. For example, part of second child element's text is enclosed within `<b>More</b>`. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To understand `attribute`, let's go back to the table from warmup 1.\n", + "\n", + "\n", + "New syntax, you can use `\"\"\"some really long string\"\"\"` to split a string across multiple lines." + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [], + "source": [ + "html_string = \"\"\"\n", + "<table>\n", + " <tr>\n", + " <th>University</th>\n", + " <th>Department</th>\n", + " </tr>\n", + " <tr>\n", + " <td>UW-Madison</td>\n", + " <td><a href = \"https://www.cs.wisc.edu/\">Computer Sciences</a></td>\n", + " </tr>\n", + " <tr>\n", + " <td>UW-Madison</td>\n", + " <td><a href = \"https://stat.wisc.edu/\">Statistics</a></td>\n", + " </tr>\n", + " <tr>\n", + " <td>UW-Madison</td>\n", + " <td><a href = \"https://cdis.wisc.edu/\">CDIS</a></td>\n", + " </tr>\n", + " <tr>\n", + " <td>UC Berkeley</td>\n", + " <td><a href = \"https://eecs.berkeley.edu/\">Electrical Engineering and Computer Sciences</a></td>\n", + " </tr>\n", + "</table>\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Find the table headers." + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[<th>University</th>, <th>Department</th>]" + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bs_obj = BeautifulSoup(html_string, \"html.parser\")\n", + "th_elements = bs_obj.find_all(\"th\")\n", + "th_elements" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Find the first anchor element, extract its text." + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<a href=\"https://www.cs.wisc.edu/\">Computer Sciences</a>" + ] + }, + "execution_count": 106, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "anchor_element = bs_obj.find(\"a\")\n", + "anchor_element" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can get the attributes associated with an element using `.attrs` on that element object. Return value will be a `dict` mapping each attribute to its value.\n", + "\n", + "Now, let's get the attributes of the anchor element." + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'href': 'https://www.cs.wisc.edu/'}" + ] + }, + "execution_count": 107, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "anchor_element.attrs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What is the type of `.attrs`?" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict" + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(anchor_element.attrs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Extract the hyperlink." + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'https://www.cs.wisc.edu/'" + ] + }, + "execution_count": 109, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "anchor_element.attrs['href']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Extract hyperlinks for each department and populate department name and link into a `dict`." + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Computer Sciences': 'https://www.cs.wisc.edu/',\n", + " 'Statistics': 'https://stat.wisc.edu/',\n", + " 'CDIS': 'https://cdis.wisc.edu/',\n", + " 'Electrical Engineering and Computer Sciences': 'https://eecs.berkeley.edu/'}" + ] + }, + "execution_count": 114, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "department_urls = {} # Key: department name; Value: website URL\n", + "\n", + "anchor_elements = bs_obj.find_all(\"a\")\n", + "anchor_elements\n", + "\n", + "for element in anchor_elements:\n", + " key = element.text\n", + " value = element.attrs['href']\n", + " #print(key, value)\n", + " department_urls[key] = value\n", + "department_urls" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Self-practice: Find all anchor links that include piazza in the CS 220 page" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "https://piazza.com/wisc/fall2022/cs220/home\n", + "https://piazza.com/wisc/fall2022/cs220/home\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/andrewkuemmel/opt/anaconda3/lib/python3.9/site-packages/urllib3/connectionpool.py:1043: InsecureRequestWarning: Unverified HTTPS request is being made to host 'cs220.cs.wisc.edu'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "# Get this page using requests. \n", + "url = \"https://cs220.cs.wisc.edu/f22/syllabus.html\"\n", + "r = requests.get(url, verify=False)\n", + "\n", + "# make sure there is no error\n", + "r.raise_for_status()\n", + "\n", + "# read the entire contents of the page into a single string variable\n", + "html_data = r.text\n", + "\n", + "# create a BeautifulSoup object\n", + "bs_obj = BeautifulSoup(html_data, 'html.parser')\n", + "\n", + "# find all anchor elements\n", + "anchor_elements = bs_obj.find_all(\"a\")\n", + "\n", + "# print out all URLS to piazza\n", + "for e in anchor_elements:\n", + " url = e.attrs['href']\n", + " if 'piazza' in url:\n", + " print(url)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Scraping Tables\n", + "### Parsing small_movies html table to extract `small_movies.json`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 1: Read `small_movies.html` content into a variable" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [], + "source": [ + "f = open(\"small_movies.html\")\n", + "small_movies_str = f.read()\n", + "f.close()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 2: Initialize BeautifulSoup object instance" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": {}, + "outputs": [], + "source": [ + "bs_obj = BeautifulSoup(small_movies_str, \"html.parser\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 3: Find table element" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": {}, + "outputs": [], + "source": [ + "table = bs_obj.find(\"table\") # works only when you have exactly 1 table" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 4: Find all th tags, to parse the table header" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Title', 'Genre', 'Director', 'Cast', 'Year', 'Runtime', 'Rating', 'Revenue']" + ] + }, + "execution_count": 128, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "header = [th.get_text() for th in table.find_all('th')]\n", + "header" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 5: Scrape second row, convert data to appropriate types, and populate data into a row dictionary\n", + "- \"Year\", \"Runtime\": `int` conversion\n", + "- \"Revenue\": format_revenue(...) conversion\n", + "- \"Rating\": `float` conversion" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": {}, + "outputs": [], + "source": [ + "def format_revenue(revenue):\n", + " if type(revenue) == float: # need this in here if we run code multiple times\n", + " return revenue\n", + " elif revenue[-1] == 'M': # some have an \"M\" at the end\n", + " return float(revenue[:-1]) * 1e6\n", + " else: # otherwise, assume millions.\n", + " return float(revenue) * 1e6" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Title': 'Guardians of the Galaxy',\n", + " 'Genre': 'Action,Adventure,Sci-Fi',\n", + " 'Director': 'James Gunn',\n", + " 'Cast': 'Chris Pratt, Vin Diesel, Bradley Cooper, Zoe Saldana',\n", + " 'Year': 2014,\n", + " 'Runtime': 121,\n", + " 'Rating': 8.1,\n", + " 'Revenue': 333130000.0}" + ] + }, + "execution_count": 130, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Why second row? Because first row has the header information.\n", + "\n", + "\n", + "movie = {}\n", + "\n", + "tr_elements = table.find_all('tr')\n", + "tr = tr_elements[1]\n", + "td_elements = tr.find_all('td')\n", + "for idx in range(len(td_elements)):\n", + " td = td_elements[idx]\n", + " val = td.get_text()\n", + " if header[idx] in [\"Year\", \"Runtime\"]:\n", + " movie[header[idx]] = int(val)\n", + " elif header[idx] == \"Revenue\":\n", + " revenue = format_revenue(val)\n", + " movie[header[idx]] = revenue\n", + " elif header[idx] == \"Rating\":\n", + " movie[header[idx]] = float(val)\n", + " else:\n", + " movie[header[idx]] = val\n", + " \n", + "movie" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Step 6: Scrape all rows, convert data to appropriate types, and populate data into a row dictionary and append row dictionaries into a list\n", + "- \"Year\", \"Runtime\": `int` conversion\n", + "- \"Revenue\": format_revenue(...) conversion\n", + "- \"Rating\": `float` conversion\n", + "\n", + "You can compare your parsing output to `small_movies.json` file contents, to confirm your result." + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'Title': 'Guardians of the Galaxy',\n", + " 'Genre': 'Action,Adventure,Sci-Fi',\n", + " 'Director': 'James Gunn',\n", + " 'Cast': 'Chris Pratt, Vin Diesel, Bradley Cooper, Zoe Saldana',\n", + " 'Year': 2014,\n", + " 'Runtime': 121,\n", + " 'Rating': 8.1,\n", + " 'Revenue': 333130000.0},\n", + " {'Title': 'Prometheus',\n", + " 'Genre': 'Adventure,Mystery,Sci-Fi',\n", + " 'Director': 'Ridley Scott',\n", + " 'Cast': 'Noomi Rapace, Logan Marshall-Green, Michael fassbender, Charlize Theron',\n", + " 'Year': 2012,\n", + " 'Runtime': 124,\n", + " 'Rating': 7.0,\n", + " 'Revenue': 126460000.0},\n", + " {'Title': 'Split',\n", + " 'Genre': 'Horror,Thriller',\n", + " 'Director': 'M. Night Shyamalan',\n", + " 'Cast': 'James McAvoy, Anya Taylor-Joy, Haley Lu Richardson, Jessica Sula',\n", + " 'Year': 2016,\n", + " 'Runtime': 117,\n", + " 'Rating': 7.3,\n", + " 'Revenue': 138120000.0},\n", + " {'Title': 'Sing',\n", + " 'Genre': 'Animation,Comedy,Family',\n", + " 'Director': 'Christophe Lourdelet',\n", + " 'Cast': 'Matthew McConaughey,Reese Witherspoon, Seth MacFarlane, Scarlett Johansson',\n", + " 'Year': 2016,\n", + " 'Runtime': 108,\n", + " 'Rating': 7.2,\n", + " 'Revenue': 270320000.0},\n", + " {'Title': 'Suicide Squad',\n", + " 'Genre': 'Action,Adventure,Fantasy',\n", + " 'Director': 'David Ayer',\n", + " 'Cast': 'Will Smith, Jared Leto, Margot Robbie, Viola Davis',\n", + " 'Year': 2016,\n", + " 'Runtime': 123,\n", + " 'Rating': 6.2,\n", + " 'Revenue': 325020000.0},\n", + " {'Title': 'The Great Wall',\n", + " 'Genre': 'Action,Adventure,Fantasy',\n", + " 'Director': 'Yimou Zhang',\n", + " 'Cast': 'Matt Damon, Tian Jing, Willem Dafoe, Andy Lau',\n", + " 'Year': 2016,\n", + " 'Runtime': 103,\n", + " 'Rating': 6.1,\n", + " 'Revenue': 45130000.0},\n", + " {'Title': 'La La Land',\n", + " 'Genre': 'Comedy,Drama,Music',\n", + " 'Director': 'Damien Chazelle',\n", + " 'Cast': 'Ryan Gosling, Emma Stone, Rosemarie DeWitt, J.K. Simmons',\n", + " 'Year': 2016,\n", + " 'Runtime': 128,\n", + " 'Rating': 8.3,\n", + " 'Revenue': 151060000.0},\n", + " {'Title': 'Mindhorn',\n", + " 'Genre': 'Comedy',\n", + " 'Director': 'Sean Foley',\n", + " 'Cast': 'Essie Davis, Andrea Riseborough, Julian Barratt,Kenneth Branagh',\n", + " 'Year': 2016,\n", + " 'Runtime': 89,\n", + " 'Rating': 6.4,\n", + " 'Revenue': 0.0},\n", + " {'Title': 'The Lost City of Z',\n", + " 'Genre': 'Action,Adventure,Biography',\n", + " 'Director': 'James Gray',\n", + " 'Cast': 'Charlie Hunnam, Robert Pattinson, Sienna Miller, Tom Holland',\n", + " 'Year': 2016,\n", + " 'Runtime': 141,\n", + " 'Rating': 7.1,\n", + " 'Revenue': 8010000.0},\n", + " {'Title': 'Passengers',\n", + " 'Genre': 'Adventure,Drama,Romance',\n", + " 'Director': 'Morten Tyldum',\n", + " 'Cast': 'Jennifer Lawrence, Chris Pratt, Michael Sheen,Laurence Fishburne',\n", + " 'Year': 2016,\n", + " 'Runtime': 116,\n", + " 'Rating': 7.0,\n", + " 'Revenue': 100010000.0}]" + ] + }, + "execution_count": 131, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "movies_data = []\n", + "\n", + "tr_elements = table.find_all('tr')\n", + "for tr in tr_elements[1:]: # Skip first row (header row)\n", + " movie = {}\n", + " td_elements = tr.find_all('td')\n", + " for idx in range(len(td_elements)):\n", + " td = td_elements[idx]\n", + " val = td.get_text()\n", + " if header[idx] in [\"Year\", \"Runtime\"]:\n", + " movie[header[idx]] = int(val)\n", + " elif header[idx] == \"Revenue\":\n", + " revenue = format_revenue(val)\n", + " movie[header[idx]] = revenue\n", + " elif header[idx] == \"Rating\":\n", + " movie[header[idx]] = float(val)\n", + " else:\n", + " movie[header[idx]] = val\n", + " movies_data.append(movie)\n", + "movies_data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Final step: convert steps 1 through 6 into a function and use that function to parse `full_movies.html` file." + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": {}, + "outputs": [], + "source": [ + "def parse_html(html_file):\n", + " f = open(html_file)\n", + " small_movies_str = f.read()\n", + " f.close()\n", + "\n", + " bs_obj = BeautifulSoup(small_movies_str, \"html.parser\")\n", + " \n", + " table = bs_obj.find(\"table\") # works only when you have exactly 1 table\n", + " header = [th.get_text() for th in table.find_all('th')]\n", + "\n", + " movies_data = []\n", + "\n", + " tr_elements = table.find_all('tr')\n", + " for tr in tr_elements[1:]: # Skip first row (header row)\n", + " movie = {}\n", + " td_elements = tr.find_all('td')\n", + " for idx in range(len(td_elements)):\n", + " td = td_elements[idx]\n", + " val = td.get_text()\n", + " if header[idx] in [\"Year\", \"Runtime\"]:\n", + " movie[header[idx]] = int(val)\n", + " elif header[idx] == \"Revenue\":\n", + " revenue = format_revenue(val)\n", + " movie[header[idx]] = revenue\n", + " elif header[idx] == \"Rating\":\n", + " movie[header[idx]] = float(val)\n", + " else:\n", + " movie[header[idx]] = val\n", + " movies_data.append(movie)\n", + " \n", + " return movies_data" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "metadata": {}, + "outputs": [], + "source": [ + "full_movies_data = parse_html(\"full_movies.html\")\n", + "# full_movies_data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}