{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# The Battle of Neighborhoods " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "\n", "Table of Content\n", "\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Introduction to the Business Problem \n", "Back to page top" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An investor is looking to open a new restaurant in San Francisco, but he is not sure about the best location for his new venue and needs input for making the decision. San Francisco is rather busy city famous for its business innovation and several famous tourit attractions. So while it looks promising to set up a new restaurant business in San Francisco, the venue's location must be carefully picked in order to maximize the profit. According to an analysis in the FSR Magazine, the 8 factors for choosing a new restaurant location are\n", "\n", "1. Visibility - look for foot and car traffic patterns that can give the venue the best visibility.\n", "2. Parking - need to have sufficient parking space for customers.\n", "3. Space size - consider how big of a space one needs for restaurant requirements.\n", "4. Crime rates - avoid crime-laden areas in the city.\n", "5. Surrounding businesses and competitor analysis - know what types of restaurant would do well in a certain area. Know what will distinguish a new restaurant from competitors.\n", "6. Acessibility - keep in mind about things like off-the-hightway locations, locations near busy intersections.\n", "7. Affordability - the cost of the venue space (rental or purchase) is a bottom-line consideration for any business.\n", "8. Safety - workplace safty is important for the restaurant owner as well as workers.\n", "\n", "In the capstone project, we will get the help from FourSquare API to address at least part of these considerations. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Data \n", "Back to page top" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because of the availability of datasets, we will not address all of the factors listed above. However, we will work on some of the most important factors such as visibility, parking, crime rates, and affordability. We will utilize the following datasets/tools.\n", "\n", "Static datasets:\n", "\n", "1. Police Department Incident Reports: 2018 to Present (Link). The dataset includes police incident reports filed by officers and by individuals through self-service online reporting for non-emergency cases. Reports included are those for incidents that occurred starting January 1, 2018 onward and have been approved by a supervising officer. \n", "2. MTA On Street Parking Census (Link). The dataset contains locations and space count of unmetered motorcycle parking for the City of San Francisco.\n", "3. MTA Off Street Parking Census (Link). SFMTA managed off street parking locations, hours, and amenities. Includes both lots and garages.\n", "4. San Francisco Historica Secured Property Tax Rolls, 2007-2015 (Link). This dataset includes the SF Office of the Assessor-Recorder’s secured property tax roll spanning from 2007 to 2015. We will use the latest data as a measure of the cost of venue space.\n", "5. San Francisco Realtor Neighborhoods (Link)\n", "\n", "Search engines:\n", "1. Foursquare. We will use the foursquare API to carry out venue and point of interest search. The results will give us an idea of the neighborhood of the venue's potential location.\n", "2. PARKWHIZ. We intend to use the static dataset to look up parking space information near the potential venue location. PARKWHIZ is a quick and convenient alternative." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Methodology \n", "Back to page top\n", "\n", "In this section, we are going to explore San Francisco crime and housing datasets and answer two of the most important factors discussed in the Introduction. Then, using the Foursquare API, we will explore neighborhoods of the city of San Francisco. The neighborhoods will be clustered using the $k$-mean algorithm. The combined results will provide us insights into possible locations for opening a new restaurant." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Import libraries" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/chiachen/miniconda3/envs/mlenv/lib/python3.6/site-packages/pysal/__init__.py:65: VisibleDeprecationWarning: PySAL's API will be changed on 2018-12-31. The last release made with this API is version 1.14.4. A preview of the next API version is provided in the `pysal` 2.0 prelease candidate. The API changes and a guide on how to change imports is provided at https://migrating.pysal.org\n", " ), VisibleDeprecationWarning)\n" ] } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "import geopandas as gpd\n", "import folium\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "import matplotlib.cm as cm\n", "import matplotlib.colors as colors\n", "import pysal as ps\n", "import requests\n", "\n", "from pandas.io.json import json_normalize\n", "from geopandas.tools import sjoin\n", "from geopandas import GeoDataFrame\n", "from geopy.geocoders import Nominatim\n", "from folium.plugins import FastMarkerCluster\n", "from shapely.geometry import Point\n", "from sklearn.cluster import KMeans\n", "#from branca.utilities import split_six\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.1 San Francisco Crime Data Analysis \n", "Back to page top" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Read in the San Francisco Police Department Incident Reports and perform an initial check." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 111531 entries, 0 to 111530\n", "Data columns (total 26 columns):\n", "Incident Datetime 111531 non-null object\n", "Incident Date 111531 non-null object\n", "Incident Time 111531 non-null object\n", "Incident Year 111531 non-null int64\n", "Incident Day of Week 111531 non-null object\n", "Report Datetime 111531 non-null object\n", "Row ID 111531 non-null int64\n", "Incident ID 111531 non-null int64\n", "Incident Number 111531 non-null int64\n", "CAD Number 86415 non-null float64\n", "Report Type Code 111531 non-null object\n", "Report Type Description 111531 non-null object\n", "Filed Online 23641 non-null object\n", "Incident Code 111531 non-null int64\n", "Incident Category 111520 non-null object\n", "Incident Subcategory 111520 non-null object\n", "Incident Description 111531 non-null object\n", "Resolution 111531 non-null object\n", "Intersection 105956 non-null object\n", "CNN 105956 non-null float64\n", "Police District 111531 non-null object\n", "Analysis Neighborhood 105913 non-null object\n", "Supervisor District 105956 non-null float64\n", "Latitude 105956 non-null float64\n", "Longitude 105956 non-null float64\n", "point 105956 non-null object\n", "dtypes: float64(5), int64(5), object(16)\n", "memory usage: 22.1+ MB\n" ] } ], "source": [ "df_crime = pd.read_csv(\"./Police_Department_Incident_Reports__2018_to_Present.csv\")\n", "df_crime.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First five rows of the dataset." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Incident DatetimeIncident DateIncident TimeIncident YearIncident Day of WeekReport DatetimeRow IDIncident IDIncident NumberCAD NumberReport Type CodeReport Type DescriptionFiled OnlineIncident CodeIncident CategoryIncident SubcategoryIncident DescriptionResolutionIntersectionCNNPolice DistrictAnalysis NeighborhoodSupervisor DistrictLatitudeLongitudepoint
02018/01/01 01:30:00 AM2018/01/0101:302018Monday2018/01/01 02:13:00 AM61870203073618702180000263180010563.0IIInitialNaN3073RobberyRobbery - OtherRobbery, W/ Other WeaponOpen or ActiveJUSTIN DR \\ COLLEGE AVE21236000.0InglesideBernal Heights9.037.732261-122.423486(37.732261252752224, -122.42348641495892)
12018/01/01 01:59:00 AM2018/01/0101:592018Monday2018/01/01 01:59:00 AM61870768000618707180000326180010504.0IIInitialNaN68000Fire ReportFire ReportFire ReportOpen or Active16TH ST \\ MISSION ST24170000.0MissionMission9.037.765051-122.419669(37.76505133632968, -122.41966897380142)
22018/01/01 02:28:00 AM2018/01/0102:282018Monday2018/01/01 02:31:00 AM61870904134618709180000348180010636.0IIInitialNaN4134AssaultSimple AssaultBatteryOpen or Active03RD ST \\ PERRY ST20657000.0SouthernSouth of Market6.037.782119-122.396841(37.78211912156566, -122.39684142850209)
32018/01/01 02:28:00 AM2018/01/0102:282018Monday2018/01/01 02:31:00 AM61870928160618709180000348180010636.0IIInitialNaN28160Malicious MischiefVandalismMalicious Mischief, Vandalism to VehicleOpen or Active03RD ST \\ PERRY ST20657000.0SouthernSouth of Market6.037.782119-122.396841(37.78211912156566, -122.39684142850209)
42018/01/01 02:08:00 AM2018/01/0102:082018Monday2018/01/01 02:08:00 AM61871004014618710180000285180010537.0IIInitialNaN4014AssaultAggravated AssaultAssault, Aggravated, W/ ForceCite or Arrest AdultCESAR CHAVEZ ST \\ CAPP ST \\ MISSION ST21304000.0MissionBernal Heights9.037.748166-122.418221(37.74816568813204, -122.41822117169174)
\n", "
" ], "text/plain": [ " Incident Datetime Incident Date Incident Time Incident Year \\\n", "0 2018/01/01 01:30:00 AM 2018/01/01 01:30 2018 \n", "1 2018/01/01 01:59:00 AM 2018/01/01 01:59 2018 \n", "2 2018/01/01 02:28:00 AM 2018/01/01 02:28 2018 \n", "3 2018/01/01 02:28:00 AM 2018/01/01 02:28 2018 \n", "4 2018/01/01 02:08:00 AM 2018/01/01 02:08 2018 \n", "\n", " Incident Day of Week Report Datetime Row ID Incident ID \\\n", "0 Monday 2018/01/01 02:13:00 AM 61870203073 618702 \n", "1 Monday 2018/01/01 01:59:00 AM 61870768000 618707 \n", "2 Monday 2018/01/01 02:31:00 AM 61870904134 618709 \n", "3 Monday 2018/01/01 02:31:00 AM 61870928160 618709 \n", "4 Monday 2018/01/01 02:08:00 AM 61871004014 618710 \n", "\n", " Incident Number CAD Number Report Type Code Report Type Description \\\n", "0 180000263 180010563.0 II Initial \n", "1 180000326 180010504.0 II Initial \n", "2 180000348 180010636.0 II Initial \n", "3 180000348 180010636.0 II Initial \n", "4 180000285 180010537.0 II Initial \n", "\n", " Filed Online Incident Code Incident Category Incident Subcategory \\\n", "0 NaN 3073 Robbery Robbery - Other \n", "1 NaN 68000 Fire Report Fire Report \n", "2 NaN 4134 Assault Simple Assault \n", "3 NaN 28160 Malicious Mischief Vandalism \n", "4 NaN 4014 Assault Aggravated Assault \n", "\n", " Incident Description Resolution \\\n", "0 Robbery, W/ Other Weapon Open or Active \n", "1 Fire Report Open or Active \n", "2 Battery Open or Active \n", "3 Malicious Mischief, Vandalism to Vehicle Open or Active \n", "4 Assault, Aggravated, W/ Force Cite or Arrest Adult \n", "\n", " Intersection CNN Police District \\\n", "0 JUSTIN DR \\ COLLEGE AVE 21236000.0 Ingleside \n", "1 16TH ST \\ MISSION ST 24170000.0 Mission \n", "2 03RD ST \\ PERRY ST 20657000.0 Southern \n", "3 03RD ST \\ PERRY ST 20657000.0 Southern \n", "4 CESAR CHAVEZ ST \\ CAPP ST \\ MISSION ST 21304000.0 Mission \n", "\n", " Analysis Neighborhood Supervisor District Latitude Longitude \\\n", "0 Bernal Heights 9.0 37.732261 -122.423486 \n", "1 Mission 9.0 37.765051 -122.419669 \n", "2 South of Market 6.0 37.782119 -122.396841 \n", "3 South of Market 6.0 37.782119 -122.396841 \n", "4 Bernal Heights 9.0 37.748166 -122.418221 \n", "\n", " point \n", "0 (37.732261252752224, -122.42348641495892) \n", "1 (37.76505133632968, -122.41966897380142) \n", "2 (37.78211912156566, -122.39684142850209) \n", "3 (37.78211912156566, -122.39684142850209) \n", "4 (37.74816568813204, -122.41822117169174) " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.set_option('display.max_columns', 100)\n", "df_crime.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The most important columns are Incident Category, Latitude, Longitude, and time stamps. We remove columns that are not needed for the analysis." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "columns = ['Incident Datetime', 'Incident Day of Week', 'Incident Year', \n", " 'Report Datetime', 'Row ID', 'Incident ID', 'CAD Number', 'Report Type Code', \n", " 'Report Type Description', 'Filed Online', 'Incident Code', 'Incident Subcategory', \n", " 'Incident Description', 'Intersection', 'CNN', 'Analysis Neighborhood', \n", " 'Supervisor District', 'Resolution', 'point']\n", "df_crime = df_crime.drop(columns, axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dropping NaN rows from the remaining dataset." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Incident Date 0\n", "Incident Time 0\n", "Incident Number 0\n", "Incident Category 11\n", "Police District 0\n", "Latitude 5575\n", "Longitude 5575\n", "dtype: int64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_crime.isnull().sum()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Incident Date 0\n", "Incident Time 0\n", "Incident Number 0\n", "Incident Category 0\n", "Police District 0\n", "Latitude 0\n", "Longitude 0\n", "dtype: int64" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_crime.dropna(inplace=True)\n", "df_crime.isnull().sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Get a list the type of incidents reported" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['Robbery', 'Fire Report', 'Assault', 'Malicious Mischief',\n", " 'Larceny Theft', 'Non-Criminal', 'Miscellaneous Investigation',\n", " 'Disorderly Conduct', 'Warrant', 'Weapons Carrying Etc',\n", " 'Recovered Vehicle', 'Other Miscellaneous', 'Burglary',\n", " 'Missing Person', 'Suspicious Occ', 'Civil Sidewalks', 'Fraud',\n", " 'Motor Vehicle Theft', 'Traffic Violation Arrest', 'Drug Offense',\n", " 'Weapons Offense', 'Offences Against The Family And Children',\n", " 'Stolen Property', 'Lost Property', 'Other Offenses',\n", " 'Traffic Collision', 'Suicide', 'Homicide', 'Vehicle Misplaced',\n", " 'Other', 'Family Offense', 'Forgery And Counterfeiting',\n", " 'Sex Offense', 'Arson', 'Courtesy Report', 'Case Closure',\n", " 'Gambling', 'Drug Violation', 'Prostitution', 'Juvenile Offenses',\n", " 'Embezzlement', 'Vehicle Impounded', 'Vandalism',\n", " 'Human Trafficking (A), Commercial Sex Acts', 'Liquor Laws',\n", " 'Suspicious', 'Motor Vehicle Theft?', 'Rape', 'Weapons Offence',\n", " 'Human Trafficking, Commercial Sex Acts'], dtype=object)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_crime['Incident Category'].unique()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Remove the 'Non-Criminal' column." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "df_crime = df_crime[df_crime['Incident Category'] != 'Non-Criminal'].reset_index(drop=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Visualize crime distribution by category." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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e9t+YgFPj4iImJAkXQesZ/vxpmOJiO5MazqAiBh6XweWA15ie6MqG+BLgWWBbzQaWURERPfmUM5lETFJZWY4IvpK0h+BNTzqw0bSdOA626s3E1lERET3JJ0NrAdczMg9wymtFDFJJJt0RPSbR3eEq4NPScpoXERETFb7NB1ARPQmneGI6LdrJL3f9k/aD0raGbiuoZgiIiJ6knrCEZNflklHRF9JWgk4DngEuISSTXoTYAlgO9u3NxheREREV0aVflkMWBR4qK6SLxHRf+kMR8RASNoaeDmlPtzVts9oOKSIiIjaSHo7sKntzzYdS0SMTzrDERERERE1kHSB7c2bjiMixid7hiMiIiIiOiTpHW13pwEbM3fZdERMAukMR0RERER0btu2758EbgL+qZlQIqIbWSYdERERERERU05mhiMiIiIixknSwSxgObTt3QcYTkT0IJ3hiIiIiIjxm932/b7APk0FEhG9yTLpiIiIiIguSLrM9oZNxxER3ZnWdAAREREREZNUZpUiJrF0hiMiIiIiImLKyTLpiIiIiIhxkvQgc2eElwQebj0E2PbSjQQWER1LZzgiIiIiIiKmnCyTjoiIiIiIiCknneGIiIiIiIiYctIZjoiIiIiIiCknneGIiIiIiIiYctIZjoiIiIiIiCnn/wPV5IeVa0QOSAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df_crime['Incident Category'].value_counts().plot(kind='bar', figsize=(16,8))\n", "plt.ylabel('Number of incidents')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The number one category is larceny theft, followed by assault and burglary, not including 'Other Miscellaneous' and 'Miscellaneous Mischief.'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Visualize crime distribution by police districts." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# calculating total number of incidents per district\n", "crimedata_police_district = pd.DataFrame(df_crime['Police District'].value_counts().astype(float))\n", "crimedata_police_district = crimedata_police_district.reset_index()\n", "crimedata_police_district.columns = ['District', 'Number']\n", "crimedata_police_district.plot(kind='bar', figsize=(16,8), legend=None)\n", "xticks = [i for i in range(len(crimedata_police_district))]\n", "plt.xticks(xticks, list(crimedata_police_district['District']))\n", "plt.xlabel('Police district')\n", "plt.ylabel('Number of incidents')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It appears that the Central Police District has the most number of incidents. The next district is Mission district." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Process the crime data for mapping\n", "We first convert the Pandas *df_crime* into a GeoPandas GeoDataFrame, a spatial version of *df_crime*. This is done by first creating Shapely point geometry objects with proper coordinate projection for each record. Then we attach the results as a new column to *df_crime*." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Creating Shapely object for each record. Details of the coordinate system, ESPG 4326 which represents the standard WGS84 coordinate system, can be found in this link. Here we implement the Point() function from the shapely package." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "geometry = gpd.GeoSeries(df_crime.apply(lambda z: Point(z['Longitude'], z['Latitude']), 1), crs={'init': 'epsg:4326'})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Convert *df_crime* into GeoDataFrame." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Incident DateIncident TimeIncident NumberIncident CategoryPolice DistrictLatitudeLongitudegeometry
02018/01/0101:30180000263RobberyIngleside37.732261-122.423486POINT (-122.4234864149589 37.73226125275223)
12018/01/0101:59180000326Fire ReportMission37.765051-122.419669POINT (-122.4196689738014 37.76505133632968)
22018/01/0102:28180000348AssaultSouthern37.782119-122.396841POINT (-122.3968414285021 37.78211912156566)
32018/01/0102:28180000348Malicious MischiefSouthern37.782119-122.396841POINT (-122.3968414285021 37.78211912156566)
42018/01/0102:08180000285AssaultMission37.748166-122.418221POINT (-122.4182211716917 37.74816568813204)
\n", "
" ], "text/plain": [ " Incident Date Incident Time Incident Number Incident Category \\\n", "0 2018/01/01 01:30 180000263 Robbery \n", "1 2018/01/01 01:59 180000326 Fire Report \n", "2 2018/01/01 02:28 180000348 Assault \n", "3 2018/01/01 02:28 180000348 Malicious Mischief \n", "4 2018/01/01 02:08 180000285 Assault \n", "\n", " Police District Latitude Longitude \\\n", "0 Ingleside 37.732261 -122.423486 \n", "1 Mission 37.765051 -122.419669 \n", "2 Southern 37.782119 -122.396841 \n", "3 Southern 37.782119 -122.396841 \n", "4 Mission 37.748166 -122.418221 \n", "\n", " geometry \n", "0 POINT (-122.4234864149589 37.73226125275223) \n", "1 POINT (-122.4196689738014 37.76505133632968) \n", "2 POINT (-122.3968414285021 37.78211912156566) \n", "3 POINT (-122.3968414285021 37.78211912156566) \n", "4 POINT (-122.4182211716917 37.74816568813204) " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_crime = gpd.GeoDataFrame(df_crime, geometry=geometry)\n", "df_crime.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To map out the crime data, there are three geological units we can work with: police districe, census tracts, and neighborhoods. Here we choose the last one which is designed by San Francisco Association of Realtors. The data can be obtained from DataSF. We download the shape file from the website and import it using GeoPandas." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nbrhoodnidsfar_distrgeometry
0Alamo Square6eDistrict 6 - Central NorthPOLYGON ((-122.4294839489174 37.77509623070431...
1Anza Vista6aDistrict 6 - Central NorthPOLYGON ((-122.4474643913587 37.77986335309237...
2Balboa Terrace4aDistrict 4 - Twin Peaks WestPOLYGON ((-122.464508862148 37.73220849554402,...
3Bayview10aDistrict 10 - SoutheastPOLYGON ((-122.38758527039 37.7502633777501, -...
4Bernal Heights9aDistrict 9 - Central EastPOLYGON ((-122.4037549223623 37.74919006373567...
\n", "
" ], "text/plain": [ " nbrhood nid sfar_distr \\\n", "0 Alamo Square 6e District 6 - Central North \n", "1 Anza Vista 6a District 6 - Central North \n", "2 Balboa Terrace 4a District 4 - Twin Peaks West \n", "3 Bayview 10a District 10 - Southeast \n", "4 Bernal Heights 9a District 9 - Central East \n", "\n", " geometry \n", "0 POLYGON ((-122.4294839489174 37.77509623070431... \n", "1 POLYGON ((-122.4474643913587 37.77986335309237... \n", "2 POLYGON ((-122.464508862148 37.73220849554402,... \n", "3 POLYGON ((-122.38758527039 37.7502633777501, -... \n", "4 POLYGON ((-122.4037549223623 37.74919006373567... " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nbrhoods = gpd.read_file('sf_neighborhoods.shp')\n", "nbrhoods.head()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAHZCAYAAABEh7fKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xd4ZGd5N+DfqdNnNKO6q7p91+u21TbGBmOwCRDAITQTICFAEhJCQiCBBBIIYBLCF3q1aaY4gAuO7XXcsL3rtb3a3rt6G03v58xp3x8z0q5W0koanal67uvSZe/Ud1RmnvOepzCGYYAQQgghhBCycGy5F0AIIYQQQki1omCaEEIIIYSQAlEwTQghhBBCSIEomCaEEEIIIaRAFEwTQgghhBBSIAqmCSGEEEIIKRAF04QQQgghhBSIgmlCCCGEEEIKRME0IYQQQgghBeLLvYCFaGhoMLq6usq9DEIIIYQQUsP2798fNAyjcT63rapguqurC/v27Sv3MgghhBBCSA1jGKZ/vrelNA9CCCGEEEIKRME0IYQQQgghBaJgmhBCCCGEkAJRME0IIYQQQkiBKJgmhBBCCCGkQBRME0IIIYQQUiAKpgkhhBBCCCkQBdOEEEIIIYQUiIJpQgghhBBCCkTBNCGEEEIIIQWiYJoQQgghhJACUTBNCCGEEEJIgSiYJoQQQgghpEAUTBNCCCGEEFIgCqYJIYQQQggpEAXThBBCCCGEFIiCaUIIIYQQQgpEwTQhhBBCCCEF4su9AEIIIcQsjxwewboWF6w8h456Ox4+NIwz/gQanBa8e3sHrAJX8jXpuoHhaAZuq4BgSoaFZ9HgtJRlLYQQ81EwTQghpCZIiob7ugewty+MDp8dv/zg9bimrQ73vtSP/f0R/GrPAP7r7dfg2va6kqxHVjX837Ex/MfjpzAak8CzDH74vi3o8DlwoD8C3QAYJnfba9rr4LTQRzIh1YgxDKPca5i3rVu3Gvv27Sv3MgiZtzP+BH7wfA/8cQnL66y4eW0jtq/wocllLffSCKlJum7gvr0D+PKOU9B0A+/e3oF6p4hvPnMWsqqDZYAP37wKf/faNUXfGX70yAj+5lcHp1z2jq1t+Ntbc8/tsvIwDEDgWLAMwExE1oSQsmMYZr9hGFvnc1s6DCakSAzDwLnxJB44MDR52W/2DaHNa8Ozn3g1BI5KFsjSpusGnj8bwFMn/EjJKgAgndXwV69ehc0d3oIek2UZvOe6Tty4qgEfvHcffry7d+pzGsD3nz+Pp06M4atvvwabCnyeixmGAUUzIPJT/6Zfs74JzW4L/HF58rKr2uowHMkgllEgcCxSWRUCx+KVqxvgoJ1pQqoSfZoTUiQnRxP4yC8PTLt8KJLBjqOjZVgRIZXjxEgc7/9JN3oDKXzitnX4xrs24Rvv2oQNy9xISuqiH7+rwYFHP/pK/PUtq+AQp+9Anw+k8LbvvYgv7zgJSdEW9VxDkQw+/eBR6PrUM712kcc/3r5+ymU3rPThupX1uG1jC25Z34Q3XrUMr17XOC0QJ4RUD/rrJaRIBG72U7YvnguVcCWEVJb9/RF88bET+Oa7NuEDr1wBn0OcvO7jr1uLm9c2TruPYRjo7g0jq+rzfh6rwOGTt6/HE39/M25a0zDtet0AfrCzB2/85i4cGIjM6zETkoKxmDTlsnafHW+5djm++uTpybXG0gpOjsbhsHBY3+ICALAMsKLBOeW+DMPAwnN0poqQKkZ/vYQUiYWfPR9zOJop4UoIqRyxtIIvPnYC37lzM7wXBdFzYRgGWzu9ODIUnRbMzqXNa8e9H9iOr7ztaris01MpJnapv/joCWSyU3epYxllyr/v3tmDO+9+Gdolu9A3r21Eq9eGX+8dwEA4jSdPjMEfl7Cl04d/+8ONAHLB+09f7MPRoRjOB5IYT0hTdrNnqmFKSAq2felpbPzX/8M/3X9kQa+bEFIaFEwTUiSXO237Uk8IhwajJVwNIZXhu8+dw1/cvHJBgfQElmWwtcuHjKLh+EhsQfdlGAbv2NaOp/7+VXjN+qZp1xsGcM8LvXj9N3bi5Z4LZ44ePTKCD927Dw8fGkYsreDjt63DJ25fh7/4+X6cGotPeYy3XNuKs/4khiIZvHVTK169rgnnA0kMRzO4ZV1ut/1Hu3qwqsmBFrcVmm7gxGgcx4ZjODwYxWB4+kG2Q+QRSspIZTWEUvK06wkh5UfBNCFFEpeUWa/TdAN3fHc3Pvizvbh//xDOjSen5VsWStcN3LXjJJ464TftMQkxg64b2Hk2iNdd0bKox1nR4ECHz469feEF5zu3eKz40fu34mvvvAYemzDt+v5QGu/64cv414ePIZiU0elz4M7tHbhrx0lc8+9P4vq7nsFTJ/x466bluGvHKXx5x0mksyoGQmmomo7tK3z43P8ex0A4DQDYsMyNN1+zHJ990xVgGWAkJuEnu/vgsPBY5rHhylYPrmz14Jr2OnTU26eth2UZeO25A49Ievb3FEJI+VDpMCFFculp4EsZBvD0yXE8fXIcANDmteHmtY1odlnR4BJh5TmwLMAyDNw2Acs9NrR5bXNW/O86F8QHblyBhw4O4/hIDH/32rWmvSay9BiGgf5QGnaRQ5M719Lx3x85gcNDUfzn267C6ibXvB9rJJZBu9cGjl18CziXVcDWTi8ePDCMsbiEv75lNcbjEjx24bIpVkBul/qOTW24cXUDbvrPZyHPkId970v9eObkOFY2OjAelyc7cozFJTx0cBgPHRyGwDHYeSaAR4+M4pO3r8PevjB+d3AYqayGD/x0L773ni1Y2eiAyLOIZRRMvCX89MU+3LqhCT67iHqnZc7vh9chIpTKIpLOFvbNIoQUFQXThBTJQgcwDEUy+NWegTlv1+K24pr23E5Wg9OCdc0uXLHcDYFj0RdMYZnHihaPFX/16lWFLp1UkFBSBs+xM+6iloKiGbjtazvx3hs68dk3XQEA6Akmsb8/ggP90TmD6XRWBQMGNpFDJKVM7rKagWEY/NHmVvz3U2fwpcdOgGUYvPna5di43DPnfQMJGU0uK7769msQyyhISCoSkoK+UAo7jo4ByNU2XK6+QdGMydv93a8PTbmuP5TGB366F1u7vLi6zTO5Uz3x3N959jw+88YNOONPQDcMGEbuANsmcljdNLVI0TexM52aPZh++NAw1rW4sK7ZRf2qCSkxCqYJKZKG/I7TXDvUCzUWlzB2XMITx/2TlzlEDrdvbMG2FT68e3uHqc9Hyscfl/DR+w7iR++f19wA0yRlFbKiod5pgciz2LDMhaNDF3KUr2714LnTARwZjuId29pnfZy7d/YgKavgWAYffc1qtHisCCTNzfud6Eu98d+egGEAf3J957TbDEczqLMJ8MelXIAcyWDX2SD+eEsb3njVMvSH0xB5Flaexbnx5GQwvVhjcQmPHhnFo0emt8J85PAIxmIZvG1zG9a1uNDhs8NjE2bcpZ7odhLLKNB1A+wltzkyFMXH/ucQ6h0idn/qNTSmnJASo2CakCL5/alx0wPp2aSyGh48OIwdx0YxFsud8qa+tdVL1w3s64/gUw8cwT++fh1c1tLuSj90YAi7z4Xw/fduAQBc1ebBgweGoekGOJbB1W25cdwXB9gTNN3AMyf9ePZ0AFe2uvHqdY1o8Vjx5Ak/bl3fhKCJwfRgOI3haAY/e7EPE40w7t8/hHqniOFIBkP5wLk3mJrWlQPInT26stWDrno7NN1AQlLxpR0nTVvfXPb2RbC3L9eSr91nwyduW4dr2uowGEnjxlUNk0HzRLGmbuRqMeou2d3//vPnAQB/+oouCqQJKQMKpgkxma4b+PDP903mQpeSpOj4xjNnsePoKD7zpivwqhn69ZLKICkaTozGMRqVEEhIyGcMQNcNSIoGhgE+9+aNM/ZHLrYNy9z4/vM9k/++urUOv3h5AD2BJNY0u3BVWy6N4uRoAllVh8izCKey+PXeQfzi5f5pqRE+h4hr2jz41Z4BKJqO3mAKKxoci16nTeTwtafOYE9vePKybzxzdt73//W+QZwai8MAMBzJIHSZNIpiGwxn8LH/OYQNy9w4NRbH996zBZs769DkssLnuHAwFU5lpwTTfcEUHj82BrvI4b03TN+VDyZl1DtESv0gpIgomCbEZKf9ibIE0hc7O57E+3/cjT+7sQv/8oYN4GkgRNmpmo7jI3Hs648gKal4uSeEVFbFP96+Hq9YVV9Qq7hiWb/MjeFoBsGkjAanZTJ4PjwUw5pmF5rd1skx2Xflu1m8cDaIkVn6P4dTWTx7OgAAuG6FD3t7w4sOpnsCSXzh0RNTAulCHJ5hd72cTo7m2u194reHkcqq2Nbpm3KW6dKOHj/c1QPDAN69vWPajvVQJI23fHs3Wr023Peh62lcOSFFQn9ZhJjMzNPYi/WT3X1Y0+TCnddRHrWZQkkZozEJ0bQCRdcRTMgIJGUEE1mEUjIMA7DwLCJpBeMJCWMxCYqm4zt3bsYNK+txxXI33hxcjsFwGttWeOfsPrEQum5gKJJBTzCJ8YQMWdWxtsmJ61bWT7utoumIZxTwLAuP/cLup9PCo8Nnx9HhGG5Z14Q1TU5YeBZHh6L44y1tAICrWuvgj/vx0xf7FrS+0VgGP3+5DydG4/iT6zsW1A1kwoMHhvCZ3x1DOqthXbMTFp4DxzI4WEO925NybqR6d9/Ug4XoRR09xhMS7t8/BJ5l8OevXDHldilZxQd/tg+hVBbvub5zWiCdyWr4f0+exp3XdWBl49SCR0LIwlAwTYjJFjLuuBS++uRp3LK+Ecs8tnIvpepJioZvPnMWP9jZM2c+vF3kcGWrB5pu4A1XLcM7t7VjbbNrcsrdigYHlnms4BgGkqIhnMpC0XSwDINmt/WyOe+abkwppusJJHF2PIn+UBpDkTTikjrl9tu7fPjOezbDgAGWYWAYAMMAPMvAN0sKwIZlLhwciOKGlfUYimTQ4LTgyRN+CByLwUga3b2hafeZj4FwButbeOw8G8BHbllYx5mUrOJfHz6OBw4MTV522p+c/P9tXd7JHORaFb4oFeWnu/uQVXW8bXMbltdd+PvWdQN/9+tDODWWwO0bm/F3t66Z8hjBpIw//9k+HB6M4lfdA/jaO6/F7RsX1/ubkKWMgmlCTDZ4UQusShBOZfGhe/fhnvdtQ4vHinRWhV2kP/2F2n0uiM8+fAw9gdSst+mqt+OK5W7cur4Zb7pmGTTdgC1fEMYwDAzDQCitQDcMNDot+PKOk3jntg60eKy5iXiGgVhGQVJWoaR1DEXSGI/L6AulccafwGA4jXAqi8FIerIt23yc9ifQ4BQn1xBIyhgIpVHvsExLDZjQWe/At35/Ft+8JAf5nhd65/28s4mkspA1He+5ew8+/5aNeMWqufPCd58L4rO/O4ae4Ozf/1IV/JbT954/D7vI46a1Dfj5y/0AgA+8smvKbb765Gk8dcKP9S0u/Pc7rp3S/ePceBJ/9tPuyWmL6ayGI0NRCqYJWQT6RCXEZKPxmfNGy+nYcBw3f+VZ3Li6Hh0+Oz7/livLvaSKomo6RqIS4pKC3eeCODuexI2r63HFMg/29Ibw+NExvNQz806s1y7gxtUNuHF1A9a3uOC1i1B1HWlZg9chwjAMDEczaK2z4bQ/gSZXboz0eELGaX8C93UPIC4pGI3l0kGSsjpl99EMsYyCP/z2C0hnNYxGJWTyUwM7fHbs/MdbZrzPpva6yQ4ZZvMnZKxucmAoksGdd+/B9i4f3ralFa+7omWyDRyQ22F9+qQf9+zqnZbuMJNgUgbLAE0uC7wOEf6YjHCNDTrpCaTw1786AK9dQCJ/BuIvf7EfH7t1Ld567XI8emQU333uPHwOEXe/b+uU9I49PSF8+Of7p3U2WdlAaR6ELAYF04SY7Px4cu4blUFW0/Hs6QB4loHDwuNjr11jaq5uuciqhrP+JK5snXtQx4TxhIS9vRHs6Q3h5Z4QegIpqJfsat6/fwjXrfBNK3BrcIq4aU0jmt1WrGx04Nr2OthFDnaRh13kYOHZKWkTDMMgk9Wwty+Co8MxMABkVUdSVhBNK5O7i8V2bDg+7bKBcBqhpIx6p2XK5bKqTRscYrZz4yls6fRif38E3X1hdPeF8U8PHMWKBgcanRbImo7+UArRBYzQHghnwDLAWFzGWFyG28pjU3tdTeVST7i4EHEwnMEnfnsY3332HIbynVS+/s5r0e67MJ784UPD+ORvjyCrTU9DW9m4+M4qhCxlFEwTYrLey5yGrgSqbuC7z53HC+eC+M6dm6d84FYLSdGw62wQjx8dxVMn/EjIKjYud+PK5R60em3w2AQwzIUJdZKiYSwmYTQm4XwgOe+f0UyBx6MfvQktHitGopkpeaoAJnecJybasQwDWdVgFTi0+3isaHDAaeFhFVgYBiBwLE6NJRb/DVmEw0NRvGZ985TLRI7F+UASFp6dcdS2WfpD038OvcHUov6GLj4miksqDg5GsbmjDmf9CSRkreDHLTYrz6LJbYHHJsAqcGDzB2FHhuffbeTiFJi7dpzE8jorVjU68d3nzuO/njg96/2oAJGQxaFgmhAT6fnBD9XgyFAMf/jtF3DXHVfh9RtbYABgGVRkP9pMVkNPMIkDA1HsOhPA7nNBpLJTA6PjI3EcH5m++7oYM+2KnvYn0OKxIqvq06bRKZoOr10EzzKY+DZOfD8Nw0A0ncuHTsq56YYpufy/K8eH49OC6VhGwYmROJwWHrJavDSJYDKLbV1eMGDmlcZRqAMDUTQ4RXTUO0z/HZkvm8Ch0SXCYxNgE3gwTK5YOSGrCCZlRNMKBsIZABd6dG/p8Bb8fKfGEnjTt17AdSvq8fyZwKy3a3BayjaqnpBaQcE0ISbyJySMJyqnNd5comkFH/nlATS7LbjtihbceV0HNixzl3VNmayGXWcD2NcfwemxBM4HkhiOZoqWv3s5I5cMHwGA/X3hyWE4qm5AZC8Ey7KqQ1Y1MGAQTmUxHE1jMJzBQDiNkWgGcUnBSFTCcCQz4653OezpDeNvDAMMwyCSyuJ8IIkf7OzBUyf8c9/ZBHv7ImAAWAUWklK870kwmUUwmcX2Li8OD0Uhq+b+QtlEDk2u/M4yz4Fhcuk8CUlBMCkjllGhG8DRGdJtZuNPLK7+QlL0ywbSAKV4EGIGCqYJMdFItPKKD+fDH5fx85f78fOX+7Gy0YENLW788dY2vGpN45SdVzMZhgF/XMZILIOhSAb9wRT2D0Tw0vlQUVMLFkJWdTS7LPBfdIB0Pt/NwyKwOD4Sw4nROPpDaYzGJIRTMkajEoaimYprkTibF84FcfN/PYu0rJVtAqCBXDHkGX/x6w26+yJo9dpgEzicW0B9w3yC5f7Q5Tv5NLksGIpMP0CbzVAkA7vAIl3Eg4xVFEwTsmgUTBNiokcOj5R7CYvWE0ihJ5DCY0dH0ey24LUbmvG6K5pxw6r6ggoWJ9IbBsJp9IfTGAilcHIsge7eMAJVsIvf6LZOCaafOz2OP/jGLpwbTyyoPV0lm2iTVk6ztegrhuFIrlDxuhU+7OsLQzPMCZbnwrMLn0TaUe8oal49dfIgZPEomCbEJJpu4LGjo+Vehqn8cRm/3DOAX+4ZgMvC43VXNOOmtQ1Y0+RCk8sCSdERSEo440/idP4Df1uXD1kt12Hj0GAUR4djVZNHPhO7ODUASmW1yZHPxDxaidNedCOX4rKq0TFZCLrYYHkucWn+nUkmuK3FzWemNA9CFo+CaUJM8sCBoarYaS1UQlbx4MFhPHhw+LK3W+h46UpXjlztpSiQLM/fzvlACiLPYnuXr6hFkAAwEEqBYRb2O6XqxT3ImKuTh5HPpyeEzG7h55wIITP61Z6Bci+BmGi5x4ptXV6c8Ze3dd1SMRDOTE6LLLWsqqO7L4wNy1xodlnmvkOB0oqOdq9t7htepJgFzQLHXHY9u84GcNvXduJ3cxxAE7LUUTBNiAn8cQlHF9APllS27St8ucEufRHEMtWbolJtOurL2/P85GgCSVnFls7CW9LNpdFlXdDthyIZOMSFHWR4bPM76dxZ7wDPTQ8DBsNpfPjefXjvj7pxdjyJl3tCMOgUDSGzojQPQkxw//4haDp92NSCmaYektKohH7HqayG/f0RXNPmQX84vaAJjPNRSHOcjno7To5eOEPic4iod4pwWXgIHAtNN5DOaoimsxhPyPlC4bkPAlc2TM2XzmQ1fO+5c/j+zh5kVR1XtXrwuTdvLOrBBSG1gIJpQhZJVjXc+1JfuZdBTLC22UmBdBmpFdJ7GwAOD8XgtQu4us2DI0PmnXWKF3CmQ9eBq1o9iKaz8CdkhFNZhC/TxnA8IcNj4+c8qzKRL20YBnYcHcOXHjuBkZgEn0PEJ9+8Du/Y2g6OZaDrBh44MIR7dvXiO+/ZXPRR84RUGwqmCVmkrz5xGv547RYeLiULPZ1OzFVpBbyRtIJIOoatnV6cGImZ0u+5P5QCy0wdez6X0wXk7bd57YhlLt915qkTY1A0HYcHo9jXHwHLAO+/oRMff906eOy5swQvnQ/hi4+dwPGROGwCh+7eMAXThFyCgmlCFqEnkMSPd/eVexnEJEOR6hy6UysGIxnYRQ7pS0bFl9u+/gha3FZ01AuL7vksqTo66+1Fb8PnsMz98X4+kML5QO/kv//k+k58/i1XAgB6gyl8ecdJPJmfhPm2zW345O3r0OJZWM43IUsBBdOELMK3f3+OcqVrSLHbkJG5dfjsRR1SUqixuAR/QsL2FV4c7I9CWcTffYPTUvRgOqsu/IDk3pf6sbbZhd5gCve+1AdFM7B9hQ+ffeMVuKrNAyCXV/3j3b3Y3x/Bd9+zGdYydWAhpJJQME1IgQzDwAvnguVeBjHR8jorIiYXnJGFqYQixNkYBtDdG0GHzw6OZdAbTBX0OFwJ2jaPxgo7y/KZ3x0DAHTW2/HpP9iA2zc2g2FyedMPHhzGV584jbF47rH/4TeH8a13bwJbSFUlITWEgmlCCuSPy0XtAUtKT+Rol63clAoqQpzNQDgNnmVw3QofunvDWOgedTRT/AM2f1yG28YvuODRZeXxsVvX4H03dEHkc23zdp8L4kuPncSJSyZ/PnZ0FC0eKz77pitMWzch1Yj6TBNSoJFYptxLICY7OBjF1fnT2aQ8xqukmFfVDezJF+MJC9xq7gumwJVgN7fDu/C+3R+6aSU+eNNKiDyLM/4E/uwn3XjPPXumBdITfvRCL+7Z1bPYpRJS1WhnmpACDYaLm/NIyuP0WALXttfh0GC03EtZkoaiuSElqQorQpzN2fEk1jQ5cXY8Oe/7ZDUDXfV29BU5b9o+jyLES33jmbOwCRzO+BN44MDQnF1HBI6BPy7R2HGypFEwTUiBHjk8Wu4lkCKQVR2HBqPY1F6HaEYpOC+WFO7SISWVrs6+8DzvBqel6MF0Vl14yoymG/jSjpPzuu3tG5vxqT/YgBWXDH8hZKmhYJqQAozFJLx0nooPa9nB/M708jorWtxWGMaFy4j5rAKLJpcVHpsA9zzHYVeKQiZtl2ITd6zAIsS5bFzuxmfeeAVuWFUPIDds5zf7hvCLl/vxnfdspuCaLDnV9Y5FSIX44c6eqjkNTRZnJCphJCphfYur3EupagLHoMlthdcuwCpwYBkGiqYjIakIJWVE0goG8qlTmzvqyrzahQkmF57nHU3PPsHQLGNxCS4rj4S08KmLM2lyWfDJ29fhjza3gWMZGIaB584E8OUdJ3HGn4TLyuPgQISCabLkzBlMMwxjBbATgCV/+/sNw/g3hmF2AZj4dGkC0G0YxltnuP9XALwRuWLHpwB8zDAMg2GYLQB+CsAGYMfE5Yt/SYQUV1++BytZWsbiElY3OXFuAbmxSwnPMmhyWeB1iLAJHDg2FyynZA3BpIxQKovhSAbDkbkLd/3x6hqeMxBOQ+QYZLX5f4T1BXMdQdQi96nv8NlxfOTykxDnYhVYfPimlfiLV62aHAZzcjSOu3acxK6zQXAsg/ff0ImPvXYtfA7RjGUTUlXmszMtA3iNYRhJhmEEAC8wDPO4YRg3TdyAYZgHADx86R0ZhnkFgBsBXJ2/6AUArwLwHIDvAfgwgJeRC6ZfD+Dxwl8KIaXx2YePFf0DkFSeaFqBYRi4boUP+/ojS25YD8vk8nzrnSLsIp8PBHPBcjiVRSAhYyQmYcSE1ILhqASnhUdSNmdHtdh0A+isdyyoCFHRDaxscKCnyDn5zgKKEC+1qd2Lj966BgLHwh+X8N9PnsFv9g/CMIBb1zfh02/YQCPGyZI2519Zfrd44h1CyH9NfoowDOMC8BoAfzbT3QFYAYgAmPx9/QzDLAPgNgzjpfxj3AvgraBgmlS4j/3PQew6S7nSS1WT24o9vWGsanQgq+kYDNdWe8QGpwifQ4TTwkPgWGi6gXRWQyQtYzzfV71UvdU7fDacqKIiRG8BRYj1TrHowXQhRYiXeqknhE89cBTtPht+8HwPMoqG9S0ufPZNV+DG1Q0mrJKQ6javQ1aGYTgA+wGsBvAdwzD2XHT1HQCeMQxj2nkkwzBeYhjmWQCjyAXT3zYM4yTDMFsBDF100yEArQW+BkJKhtqlLW1uay5gOh9IQeAYbO/yorsvUuZVzZ/XLqDBaYHTmguWdcOAlNUQSSsYj0sIJrMIJoufyzsfTmvlTkKcyQIyPEpqzKSUmQcO5D6yG5wiPv/mjXjblrY5e2VLioZvPnMWb7p6Oa5Y7jZlHYRUonkF04ZhaACuZRimDsBDDMNcaRjGsfzV7wZwz0z3YxhmNYANANryFz3FMMzNAGbazpnxrYhhmA8jlw6Cjo6O+SyXkKLoCSTRX+RWVqSyXRw8KJqB7r4IrljmRjBZGdMw3VYejS4LXFYBFp6FYRjIKBqimVywHEkrVTMuvRomIV4sVEARYjhV/AOX0ZgEl4VDQjanYPrO7R14x7b2y97GMAy83BOGrGr4h9vWlWRADSHltKBkKsMwogzDPIdcfvMxhmHqAWxHbnd6JncAeNkwjCQAMAzzOIDrAfwcFwJs5P9/ZJbn/CGAHwLA1q1bK/TYn9S6nkASn3342Nw3JDVNVqYHJCdG43CKHLZ2erGvv7i71HaRQ5NN+xf+AAAgAElEQVTLAo9NgEXgYBgGZFVHPKMgkJARl1TETercUG5LoQixP5Q7w6EUeVu73Wc3LWXm28+eQ6Pbim1dXqxtcoG9KFDWdQP7ByKIpLK4bmU9PLbqOrtASKHm082jEYCSD6RtAF4L4D/zV78dwKOGYcz2rjcA4EMMw3wZuTSPVwH4umEYowzDJBiGuR7AHgDvA/CtRb4WQormrh0nsftcqNzLIGU2205iMqthX38EG5e7EUpmCz61LnAMmt25Xst2Mdc+LqtqiEsqAkkZ8Yxa9EEflWIkKsFl4ZGopiLEBgfO+udfhKjqwOpGO84Fips37TIxZYZjGfz4hV5saJkaSAeTMl44G0S9U8RtG1tMez5CqsF8dqaXAfhZPm+aBfAbwzAezV/3LgD/cfGN8/nQf2kYxgcB3I9cceJR5NI4/s8wjEfyN/0rXGiN9zio+JBUqEODUTx9crzcyyAVYDQmgWUw64jl4yNxWHkW21f4sLcvPG2Yx+Xax4VSMoLJLIYiGQzNo33cUpDbUV1cW7dS8hawE+t1iECRg+mFFCGyDNDkssLnEGAX+Rl/R3uDKfz5z/bhgb96BTp8duw+F4THLuCtm2YvfUrKKkSOhcizZrwkQirKfLp5HAGwaZbrXj3DZfsAfDD//xqAv5jlvvsAXLmAtRJScqfHErhrnqN1Se1TdQNtdTYMRWcPdiVVR3dvGK11VnjtIgSORUZREU4pGDexfdxS4LRW11yxQrI1SjFd4dKUmUanBT6HCIeFm+zaksqqiKSyGE/IGItLc55diWUUvO17L+LtW9rwj69fP2uQrOsGHjgwhK88cRqvWFWPr7/zWjClGP9ISAlV1zsVISUUSyv4rydOo7s3XO6lkAric4qXDaYnDEclDEcpaF4MxYS2bqVUyCTEUBGKEOvyXVtcFh4Cn+va4rULiGZUjMclBJIyAgWs9VKxjIJHj4ziI7esho+fPqxlX18Y//7oCRwZimFdswt/vKWNAmlSkyiYJmQWZ8cTePqkv9zLIBXGJnDlXsKSYVZbt1IZDKdh4RnI6vy3mwdCKYg8u6BUDIfIocltgduaK0SFkWtDF8vkdpajaQXREnVtGYtL+MRvD+OH790CnsvtTg9HM/iPx0/hkcMj8NoFfOGtV+Ld29rBcywCCRl7ekN409XLS7I+QkqBgmlCZnFsOFbuJZAKtNQmH5ZTrq1blRUh1jtwZgFFiJoBrPTZp0xPtPAsmtwW1NlEWAUWDANkFQNxSUEgKSMhqegNVk4h6u9PjeOzDx/HB29agYcODOPuXT3QdAMffOUKfPTWNfDYBCiajh+90IuvP3UGaUVDh8+Oq9vqyr10QkxBwTQhs6BJh2QmCak6+jTXAp9DxDKPFcdHqqcIsW4eRYgck5um6bXnivy8dgEua+6gIZTIIpzOYjCcweCMIxkq033dA7ivewAA8NoNTfjnN2zAysbciPEXzwXxuUeO44w/iW1dXnzhrVdifQsNcSG1g4JpQmZwbDiGZ05RBw8y3SgVD5rGaxdQ77TAZeUh5icyZrL5ITMJGeFUFmuanOVe5oJMFCE2Oi2odwpwiDx4joWqG0jJKsKpLIJJGaMxafJ3aWunFwcGamO66uaOOrxmfTM4lsFwNIO7HjuJx46OAgDeta0df/+6tRA56uhBagsF04TM4O5dPeVeAqlQcUlFnV0oWU5qNXPbeDQ6LXBZBIg8CwO5ITPRtILxxPwmMmZVcyb3mW3yQMDCQ+RZaPkDgdFYBgLHLKjIr5DCxUp1YCCKYDILC8/iM787hoyiodltwT+/YQOuavWgJ5DCDavqy71MQkxFwTQhlxgIpfHokdFyL4NUsBa3hYJpAE6RQ6PbCreVh4XPFWZKqoZ4fmc5nlERzywu37lcRYhOC4dGlxUeGw+R42DAgKTok6/NzNHsAwUULlaygXAa//DbwwCAP7uxC3dsaoVd5NFZ75hM/SCkllAwTcgl7t8/SEVm5LLMnChXyaw8i2aPBR5rrhAOYJDVNMQz6mQhXDJY3IEjozEZbitv+ph0C39h2qRV4MBc/NoSMhKyiqRc3Nc2oZDCxWrw7u0dkBQdb/nObrzv+k58/LZ1NGKc1CQKpgm5xO9PU640ubxaaZU7Mb68zi7AJuTHl2s6EpKKYDLXYq0/lAHKXAjX7rMvuAiRZyeK/ETYRQ4Mw0C96LVF0goGwuV/bRPq7NP7NFe7iYJEAPjt/iG8/xVdFEyTmkTBNCEXGQyncWy4ejoHkPKQlOoYJsKzQHM+oLSJuWBZyQeUoVQW4VR1jC93WGb+qGpyTUzy48GzzGSRXyhf5DcSlTBSJYNzav1sWDqr4c679+BLd1yJWzc0T7v+1FgcTx73469evQoCFSiSKkPBNCEX+fbvz5V7CaQKVErBGMtMBJQW2EUOHJsLllNZDaGkjGAyWxOTGBVVx/YVPui6gXRWQySdRSAhYzz/VQsCNfI6LmcsLuFrT59BZ70dq5tcMAwDL/WE8IPne/D8mQAA4Hwgia+941qwbI2c/iFLAgXThOTJqob/Oz5W7mWQKjAWk8CzQCmmXV/YfeXAs7kWa+lsrsVaICFjLJ77qmUj0Qz8NR5sDkbSsAksMlVy1qNQ/aE0Pv/ICdyxqRU/2d2HoxcNx+JYBle1emomjYosHRRME5L3m31DiGWoQwOZm24AbV5bPud2cXwOEfVOES5Lrh+xrhvIKBoiqezkzmut7L4Wyp+Q4bEJNf33aeSLEE+NJcq9lKLgWWBzhxcnxxLYdTY4bShWvUPEt+7chFesaijTCgkpHAXThADIqjq+/9z5ci+DVAmOZVBnF+cVTHtsPBpdF3ot6waQUVTE0gr8+cEk4VS2BKuubu0+G2LDtRtMA4C7RovztnR6MRRJo7svMuP1V7d58P0/2YLldbYSr4wQc1AwTQiAhw4OYTha2UVYpHJs6aibDAwm+hFf2ms5lu9HHMuoiC2y1zIBHGLtf1ypWm2leLS4LXBYeOzvnzmIBoCb1jTgrjuuQiSdpWCaVK3af3ciZB5u3dAMl/UkEib3siW1bV2zC6f9iZL1I17KJKUyJyGaqdbSeRpdFhydozvS3r4wXv/1neBYBk9//FVocltLtDpCzEP9ZwgBsPNMgAJpMm+qbqDekUvbIKUxGqvujiTzMRTJwCFy5V6GKa5u9aA3mJ7zdpKS6z7zvhu6KJAmVYs+CciSp2o6vkf50mQBDgxEIavGlE4EpLjGEzK89trMKb5YR7293EtYtOtW+HBkOIakPP8Nil/s6adUO1K1KJgmS94Pdvbg7HhtjfElxZeUVdQ7am9qXSVr81Z/oDkXdxWPqndZOFzZ6sae3vCC7/vx161FK+VMkypFwTRZ0s6NJ/H1p8+UexmkSjW5LOVewpJir5EUiMvJVmkRYle9HU6rUPAE2c/973HsOhsweVWElAYF02RJ+/wjx6FotT3GlxSP00o13KWUWQJFiP4qzA3f3FGH0Zi0qLx23QB2HB2FUqUHE2Rpo2CaLFndveFpgwMIWQiGRrWV1MgSyKkdiUlwWapjB55jgFeurseRoRhkE8aB3tc9iPf/uBvRNPVdJ9WFgmmyJKmaji/tOFnuZZAql8nW/k5pJQkms/AtgTz1aihC9DlErG5y4eWeEK5trzPtcV88H8Id330RPQGqYyHVg4JpsiT91xOncXgwWu5lkCoXTNZWX+Bq0Oat/SI1p6WyixDXNTvBADjtT0DVgX39EWzr8oJnzTlT0xtM4Y7vvogXz9OZQ1IdKJgmS84LZ4P4wc6eci+D1ICxuASRo1SPUrIK1ZECsRhZE1ImimX7Ch/OB1IIpaamYuzti2BVo9O0MwexjIL3/agb93UPmPJ4hBQTVc+QJeXESBwf+eX+ci+DVKk2rw2NTgtEnkU6q2I0JiGYpPzOUpJqJLWGZXITAr12EQ4LD45loOk6UrKGZFYp9/KmsfAMNi73oPsybe9O+xNocIpY0+Q0pd2oqhv49INHcX48iU+/YQM4k3a+CTEbBdNkydh1NoC//Pl+pGrkw5gUl8AxWNXohNsmIJPV4I9LGIpkMBSp/SK4SjZURUWIjU4LfA4RTisHnmWh6QbSWQ2RtIzxuAx//msmHpuAWKYyguplHgssPIcDA3OnxgWTWcTSCrZ2erGvP2LK89/zQi96gyl8492b4LRQ2EIqD2MY1dMWbOvWrca+ffvKvQxShTJZDbd9/XkMhqvng5iUjoVn0FnvgMcmwDByudCDkQw0fer7Y1udraqCuVrV4BQr4oyA1y6gwWmB08pD5FhohgEpqyGaUeCPSVD0wj9fr2x1F9yz2UxXLnejP5xGQpr/NMMJ27q8ODgQhbqI78PF1re4cM/7ty6J4T2k/BiG2W8Yxtb53JYO8ciS8Ln/PU6BNAEA2AQWnfV2uG0CNG0icE7jjH/u09JNbgsF0xWgtc5WkmDabeXR6LLAZRVg4VnohgFJyQXL43EJkbSCSLo4u8cOsfwfz9et8KG7L4xC99z29kWwrtmFQFJGOLX4n9epsQTe+p3d+OH7tmJzh3fRj0eIWcr/10pIkd2zqwe/3jdY7mWQMnCKHNrr7XBbBSiajvGEjOFoBqfGCsvn5Dmq2a4EZhUhOkQOTW4r3FYeFoGDYRiQVR3xjIJAQkZcUhEvYEfWDFIZB9Q4LRxWNjgLGgt+KbPzqIPJLN7/427s/OQt8M6j2NEwDHT3huGxC1jf4l708xMyEwqmSU373nPn8dzpcXAMQIMOa5vLyqPDZ4fDwkPRdPhjEkZiEk6OJkx7jniF5LAudens/AJcq8Ci2WWF2ybAlg/As1o+WE7KSEgqeoOpYi61YIuZJrgYnT47FF3HkeGYaY9pdh51UlYxHM1cNpgOp7J48MAQftU9gJ5ACjevbcS9H9i+6OcmZCYUTJOadWIkjq8+eRqabqDda0OLx4q+YBoB6g1c9ewCi456B9w2AYqqYzQmYSwu4fhIcXNM+8Ppoj4+mZ+JIlCBY9DstqLOJsAmcmAZBppuIJrOIpTKIpJWqvZnNp6Q4XMICKdKdwC3qaMOJ0fjkBTzW/MpujHZj3qxedSGAXzxsRP46tuvwcGBKLav8KHZbYVhGHi5J4z7ugfwf8fGkM2PJr+mzYPXbmiCYRg0tZQUBRUgkprU3RvG3/zqAMYTUwPndS0unB4zb6eSFJ/IMehqcKDOJkAzgPFErqtGud66Onx2DFRpgFZtOAZoclvhtYuwixw4loGqGUjICkLJ7LRexwBMSyeoBFe3eXBkyLwd4tmwDLC104vuPnO6b8zFzDzqx/72lWhxW/HAgSHc1z04eaZhbbMTb75mOf7wmuXorHcs+nnI0kMFiGRJ+9ELvfjCoydmvE6knNeK1uAUsdxjg1XkoOsGQqksBsLzKw4slUanhYJpkzAM0OTKtY+zizx4loGqG0jJKhKygvG4jNGYtKCUB6+9sqcHLoStBANqfHYBTW5ryQJpIJdHvXG525Rg+sP37sd4QoKiGejw2fHXt6zCm69pxboWlwkrJWR+KJgmVW88IcFjE2DhOTx8aHjWQBoATozGTe1/Sgq3zGNFi9sKgWeRyudABpPZimh5djk0OGJhGpwifA4RLosAnmPyvZZVRNK5jhiX67VcyFmAWqqNyBS5J/7aZifCqSxOlfhs3cblbvSZlKs+nO+uwzDAPe/firXNF4JoVdNxcjSB7r4wuntDODWWwCMffSXc1to54CKVgYJpUvFOjyXwhUdPYFWjA7dvbMHaFheePTWOw0NRSIqO+/cPod1nw9WtddhxbPSyj6Xl8/aWe6xo99mRzqo4WgG9XGtdnV1Am9cGh8hDVjUMR6UF7zhWikoZpFEp6uwCGp0WOC08xHz7uIyiI5rKwp+QFnWA1Oha+FmAYA3VRBSzDeO2Li8ODUahlPjoY2s+Z/rSHu6LZRjAfzx+Cn9x80rs7Qujuy+C/X3haUO6Hj40gvde32nqcxNCOdOkor14Poi/ve9QUT8gr271mFq5vtT57CJavVbYRR6SomEkJiGQqJ0AxyqwkBUd1fPOuTguS67XstvGQ+Q4AAYkRUdMymI8LiNThGK1Cdu7Fp7HyzK5wkRZrY2fkNkDagSOwdVtddhfhrNz163wmdJubyFEnsWm9jpct7Ie16/wYVOHFzax+OkzpPpRzjSpeppu4CtPnMIPd/YUvdDMSm+sBWtwimits8EicLnAOZ+qEU5XdqrGYkiKjk6fDf01MgTIJnJoclngsQm5/s0GIKsa4pKKQEJCQlaRkMvTazlawFkA3QC66p047a+NQuP5DKix8Cya3BbU5X+Gx0fiSM+QItLsssBh5UseSIscgyuWu0sSSFt4Fls6vbhuRT2uW+nDte11pvUlJ2Q2FEwTSIqGdFZDICHjd4eG8U+vX1/W9aiajr/9n4PYcXSsJM+nm3y6sVZ5bALafRdSNQbC1ZHjXAwNLmvVBNMiz6LZZYHHnuu1zDIMsqqGhKwikJARy6joD1VmQWVfMAWOZRacEuCx1U5OrFXgprUAZBgGqqYjIakI5Q9eB8MZDCL3OzlT16KNy90YimTgD5S2r7aVZ9Hms+PQYGnO/r1mfRO+9ydbZrxO0w2wDKg9HjEdBdNVZiLw0wwDQoGdKQzDwLnxJIaiGWSyGh46OIy9+ZGxsYyCs/4EtnT6cFWrBxuXu+c1ZcosR4ai+PSDR4veL3hCg1PEwQEqRrxUvUNEq9cGW37HeSwmwZ+QERu+sFO4lE+VchX0YcyzDJpcFngdufZxk4GWnA+0UlkMRjIYjFRH8H+xrGZgRYMdvcGFFiHWzgHyidE4FM3AUCQz2V97Lm7r1I/27St8k+/xpXZ1ex26S5ja8XJPCLKqYTCcxll/EmfHc1/nxpM4H0jiJ3+6DTeubijZesjSQMF0Ffnioyfwq+4BSIoG3QBuWdeILZ1erGtxI5rOIpLOYlWjc7IC/tBgFDevbcSRoRjGExIODUQhqzr6QilE07OfPn365DiePjkOhgFuXNWAT/3BelzZ6lnwep856cetG5rndds9PSH8+6MnShZET2jxWJfkzurFLi4OlBQNg5EMQqmZe/hezGXhi95toFJFSpjGwjK5QjyvXYTDkm8fp+lIZTWEU1mMJ2SM5Kc91qJ6p2XBwXQgUTvfi0QB48wngma7wGJti6ukwewEjgE2d3pL/tyRtIIr/vWJKWczWAborHfgVWsbUUHHwaSGUAFilQglZbzhm7tmbSFVTD6HiD/a1Ip9/RF87LVrcMu6pllvaxgGAkkZL/eE8S8PHsWn3rAeN69pRLvPPnkbWdXw8MERbO704ow/gZ+/1I+XekKleClTMAywurF2BjzMh9cuoM1rh13M7TiPxqRpg23ma2WDAz0VOoq52Cw8C0XTYVaGUINTRL3DAqeVA8+y+fZxGiJpGeNxuabavS3Uti4v9i6wCJFhcukFxSyOrGSrGh2QFR0MCwyWIR3J5xDR6LSUJW99ZYMDG5a5sbrJidVNTqxpdqKr3kF502TBqACxhkTTWTBg8KF795UlkAaAcCqLe17oBQD8ZHcf/DEJ79zWPiXvLJrO4qXzIfxiTz92n7sQGP/LQ8ewosGBm9c0wOsQsbcvjD094UWNkl0oC8/CKnCwCRwsAguRYyHyLCw8iwMD0ZKtw2wXp2KoujGtqMjnENBaZ4Nd5JFRNIxGJQSSMiJpc3IXl/KHk6zq6Kq3o2+eucZeu4B6pwUuKw+RY6EZBqSsNtlreanmns9HIWcBDCO3E1nq/smVwm0VcCaWmNYWrhTWtzgxnsiWJZDe3FGHBz9yY8mflxAKpivYrrMBvPdH3WAZmLYDtlg7zwSw80wA33jmLN62uQ0dPjv29Yfx0MHhWfuV9gZT6A2mCtphmi+XhUer14asqkNWdciqBimrIZXV8v/Wp/QH3tLpBc8yWN/iQjStIJiUpwX4HpsAhgGSkgqWZZBVy7fLtcxjRbPbCgvPIp1VMRyRpqRibO6ow1WtHthFDpmLu2qkitcT2SIs7WmSDU7LZDDtsvJocuWDZZ4FDCCjaIhlclP8ImkFkcukVhGgq94OIX+gy3MMeJYByzD5g/aFnwFx11AR4kKUo/3chO1dPuwfiJjeQ3q+eJZFfygFWdWRkBTEMyrikoJ4RkFcUvP/zV3OMMC379xclnWS2kNpHhUqkJDxmv/3XEH5cpXKZxeL1jJN4JhFDx/wOUT4HAIcIg+BZ3F0KDrZq1bgGGzq8CIlq5NFXumsit5ACjaRg9cuQlZ1MEyuiPPinPTldVZ47SL6Q2kk59FibHk+cBZ5FglJwWA4jYRcebnJ8z044lgGdoGDVeRg5XPBksizOONPlu1Dd6FsIpfriJGftAkYcFp59ARSCCZkJJdo7riZ1re4TN1J3txRV9VnnhbKZeHQ2eDAsTINofI5RFPGg5cKwwBnv/gH4Ass5Ce1j9I8qtxL50P45P2HayqQBgCvQyhaMK1oBmzC4nIkw6nsrB8GimbMWkiTymrTTtF3+uxocFkgKRqOj8QxEpUgsAyuanWDZ1mwDAOWBRjk2jQZAGAAYIDu3nBVFJPFMgq2dnqhGQY0zYCi61A0HbKSOxOQUTRksipU3ZixV3GTy1JwvrbZJtrH1dlF2AQWYBgomo54RkEgKSOeUaeldKxpcsw7zYPMzeyd5Er53SqFrno7ZFUvWyAN5N7zqimYNgwglMqi2W0t91JIDaBgugLdtePkvFsgVZN6pwX1DguimSzO+M0v+nNZBWSUyvgA7Q+n0X/JGGRFN2pqdPlif4YOCw+UKODhWQZN7lxHjIkzC4qmIyWrCCbyfXoX2D6uL5jOddaokt31Sqdq5qZRDUUycIpczZ812NxRhxOjcUhlLrYcjKSxqtGB8yXuY70Y43GZgmliCgqmK8xPdvfiaI2Otp7Y2b1uha8oj1/K4Iwsns3EAsaJ9nE+hwi7eHH7OBXhlJJrHxeVMBI1b8df0Y0l3dHEbONFKLBur7fj5GjlFSE6RG7RxYEsA2zt9KG7rzz50ZcKJrOIZ5SqSq8ZT0gAFt72lZBLUTBdIV48H8RnHjqG3lDtfzArJu9ATbCLlPtWTSz8wn5eE+3jHBYOAje1fZw/fuGrlHwOkYJpkwxFM7CL3IxjsAvltpanCNFl5dGY794ykWMvqbm0ofGEDCU/ia/Qkxo+u4Amt7ViAukJWc3AgYFo2QsR52sppQKR4qJgusx6gyk8d3ocX33idFnaGJVDvEi54CK3dFu1VSOOnTo94eL2cQLHQq+C9nE0AMJcnSbvJGeLdODusnBocFnhngyWc/3zYxkFgYSMhKTOWfOyosGB3gIOxFY3ORFNZyu67V93XxjrW1zwx6WK62LDMLnuT64yHWiR2kTBdBndvbMHX378ZMW0vSuV4WgGyzwWjMbM3RXgOYpsKsnFeco2gQPLTs1Ttoksrm7zIJrOVm37uGoquKoGZu8kj8cLS+txiBwaXRa4bQKsAguAgaxoiEtqLliWVSTkxZ2RqHeICw6mt3V5cWgwuujORaVwaiyBRqcFq5ucOFeiwVhvuXY5VjU64bEJcNt4uCwC3DYBLisPt02A28rDIfJgWfqsIOaiYLoMDMPAD3f24GtPn1lygTSA3AhqA2irs2Eoal6hJUvbhCXFMECjM5en7LDw4FgG2gLylGXFwJGh6q4P6A+lTGnLuNSw+d8dr0OEQ+TA589ELDT1Zy7DUQkuCzettaSVZ9HkznVvsfC57jqyqiEhqRjP7yynitypZSFvVwLH4Oq2uqL16S+WQFJGNJ3F1k4v9vUXd+08y+C/33HttDNehJQCBdNl8LtDw/jy46fKvYyyyigafE7R1GCawhnz1dmFydzPC3nKKiL53eTxhFxw3qFWRT3uZ6PqwKpGe1V1MCgFl4VDvdMCt1WAVeDAMMifldAQSWcRTMrwJ3JfF2uts5m+ls2dPkiKhqyqIyGrCCZlRNMKBsIZDJRh1PaE+Z6FaXZZ4LDy0yacVgtFN7CvP4IrlrlgE3kkJQVjcXnKEC0zTHTliKVzg1lyqTa5YS2J/L9v39iCFg917yDmo2C6BM76E+gJphBOZdEfSuOnL/aWe0kVQTC5WX6lF7tUA4FjYBM42EQOjU4Ljo3EpwygMVOxClFLzesQgSUUTM+2qywpOuJSPmdY1pCQF76zOxzNwGnhkDRxSJGkaGWbCHg5/aEUeDZ3QDabjcvdGIpk4K+B368TF+XCr2l2gmFg6nvLcDSDVf+847K3afFY0eJpMe05CZlAwXQRfeK3hwEAvzs4TL1oZ8CbfDpOKeO471ITOAZ2kYdVYGHhOVh4FgLHgOfYyTHMLMtg4jtsGAZ0I3fAoeo6FM3IDVhRc0NWMoqKTFbLX64iLqlF74whl7kvrllq7aQyz+Z2+eryPblZhoGqGUjK6mV3lc3S6XPg+Kh5/djlCn1fULTLt1bcvsKHvX1h1MAJnCm2d3lxYCBq+mdinV3AW69tRYfPPpkn7bLycFsFOC25//cs0RHzpPgomDaBYRgYT+Savz9/JoB/eego6uwChiKZou3qkekktfK6ocwc9LLgOWZa0JubgjgR9OpQdQOKZiCr6siqOiRVw5omJ/b0hqFoBmIZBbEqnu2TztbGhM9QhXUYmUsuWLbBaxdgywfLE4WhoVSuY8pwVMKwiT25F8JpNfdjaayC/0jqndNbKzpFDiubnLNOXK1WIsfgqtY6dBcp7/s165vwuTdvLMpjEzIXCqZNoOoG3vStF/Dx163Flcs9GIpkanKCodnMzpldTGvBiaDXwrOwCpff6Z0t6J0YpS2pGiRFQzq/02tm0NtVb9RM0WpSro1geiBceUWIPruIBpcIl4UHz7FQ87nuoWQWgaSM4WgGwybWK5jJ7HZ2Y3EZHptgeo6uGS79jen02dDsthYt4CyXZR4rrAKL/QPFe12GARwciAzDTTQAACAASURBVEy2JUxMy5tWkVFUfOfOzWCoWJ2YjIJpEwgci0/cthb/9MBRiCZXo9cyrYDg43JBr1XgsMxtnZbeoBmAfml6wyxBb6UrVt/ccqiG7/d8qDqwuslRsvZfFxNYButaXLBbeEiKhlhagT8hIZzOjUivRmMx83fE2302xIYr7/ctclFrxU3tdTg1loDbJsAusEjXSBrU6iYHomkFo0X4uV7soYPDeOjg8KzX//Mb1mPDMjcMg/rDE/NRMG2C7z9/Hv+R786RrdD8vEokqzquW+Gb3J3RdeOyOb3VFPQWS7YCU1kKpRvmjFWuBF578XMxXVYeCUmF08JhbbMLhgGc9idwbMS8/OJKMBqTJl+rWRxiZX7U9YXSWNPkgM9hmSySPDocR7vPBq+Oij17MF/XtHlw2p+AVKIDg4m8aJdVyA9mmfgS8M5tHZQzTYqmMt9hqsjpsQTu3tlT7mVUpYyi4YSJhUZLQS0Enhdz2YSaeE1mZSxxLINGlwU+uwi7hQOXz2dOyirqHRb0hlIIJGQcGIia84QVqsNnx3ETDxIkpTJ/x5wWHiLPTes2MhjOwGnhcXWrB0eGq7MX+/YuH/b2l66A8t/+8Ar86Su6KIWDlAUF04ugajp2nwsiRFPQClIrObOllJIqMygolFOsjRHwgYQMp4Wf83fawrNocFrgsfGwCTx4joGm5ztlpLIYT8gYi0kzpjqsajSKkgJRiZwWcz+aip1iUIhVjQ4kJHXWg4akrOLIcAzXrfBVZGu/2TAAtnZ50d1X2jULHAvDAFRdR1JSkZRVxCUFyXy+dFK+kD+dlFX8/WvXUlomMQ1jVFHfna1btxr79u0r9zIAAP64hJu+8ixEjqWgsEBWgS3Z6b9awTFABdW5LdrG5W5TdyCLReCYXBrSZb73N6ysx3A0A7eVh1XgwLMMNMOArOpISCrCKRmxTOHvFTwLMExlFToWy7XtdTg0aO7uu9cuVMy4+q2dXhwemv9Y8GvaPDg3nqz4szhWnsXaZlfZdtNZBvMu0H72E6/GigZHcRdEqhrDMPsNw9g6n9vSznSBzvgTky3LSGEkRa+4LgiVTjMAu8ghXeEfqvNl9vjoQjEAmlwW+JwiHGJuNPpEekUomUUolcWaJic8NgFCfkiJphuQVB0JKYtQMouXekJFXWM5Cx1LrRg78G1eOyLp8qZMCByDa9sXPhb88FAM7V4bvA5UbKcoBsDqJmfZAmmvXcCVrR64bQI8NgFua/6/Nv6Sf+f+W0f508REFEwXyGHyacilymMTEKyyPr3l5rLyNRNMcyYP7rkcn11Efb5d3IXR6BrC6SwCibkHkZzNB7GbOupwsEw5y167WJbnLbWxuASPjV/UTv6l7GVOKWpwivA6xAUH0hMGIxk4RA5Xt3lwZKjy8qi3dnkLfm1m+Padm3Hj6oayPT9Z2igiLEAso+DD9+4v9zJqgkPkEQQF0wvhtPDwo7jTCUuFNbFYyGnh0Oiywm3jYeE4GDAgKRqiGQXjcdm0dnFcGQucqiktb7HafY7/z957R8eVnmeez3dz5YAMECBAsrvZDN3N0KSilWVbDkqWLMmasTyjkbX2rGd2vD6zmtWMx14fe7Q+R/Za9pFHY8tpVj6SLEs+1lhjS7bUSiumZgd2ItkECBAZKKDyzd/+catAgESocOuGwvc7jcMGUKj6UKi697nv977Pg7yLVc6qj0OIRwcTWCqouLHY3q5CWbfwzJ3g9VGfG8/47o390kIRUYlHQTVRqBrIVw0U1Nq/VROaYeFjb3sYEYlHTOLZoCLDVZiYboG/vDiNlVJ3iBm3iIg8FJFDROQhizykWsqfyHPgOQKeYOPgReGIAtOmULskBc9LFLE7hvaA3V0wJJ4gIvFQBB6yyEHiOYi1BElZ4ECIY0VZqJpYLmooaiZK2vbRzG4ynat0/DF2Yj8NO8dcriTP+WQzd248i8u3c66GLV2YzOGRAyncWiqh5PMu1fmJrOfDhtvx6199fsvnEs85ceKbosVlkXN9uJXBAJiYbpiFvIrLt3P4/X+66fdS2oIjTjVYkZzAE0XgIPAcJIEDTwh4noADASF3k/4sig3/Z9OyoZkUummhathQdRMVw0bVsFA1LKyhuQGfR0dTHfk9u5lumkC3KcVDAwnolgXNtKEaNtTaa0m3KPSqiTyCdcG16uOF9O3VMiSB2xezGqrLv+NKSUdPTPLkgiQi8eiLy+iNSx0Tms/cyWOk1kc940MfdUTk8NBgMjAV8t64jM///CscAa2IuxYdbJuC87DFjNH9MDHdIL/0l1d9vfqWBA7ZqISYzCMiOZVfvhZzDQAUFHQj6c8RvrpJoVsWVN2GZtmoaCZ0i6KomSgGxIFE5LpHGHqF0EUnAc208NJi0e9lNEVMEVBwsZe3GWwKHOyJtt0uEAbmO1BJHslEXBHTEZFHf0JGKipCETgQQmquLQZWShqiIg+OoON+4LNrVUQlHo8eSOFpD/uoh9MKBI5z3XGlHYqqgd6YDNW0MLVaBkcINMOGaduwaoFgFqWwbSAicThzMOv3khldxJ5imhCiAPg2ALl2+7+ilP4qIeQ7ABK1m/UDuEgpfcc9P/sGAL+z6UtHAbyPUvoVQsibAPw2AA5ACcCHKKWBLfue83ArKyLxiIhOX1c2JkEReby4UMBCIXheqe3CqgPN42afsd+E0RpxMKmgUPVPzGYi+2MIcamoIRsVkXPRzq7RFilZ4NCflJGOSIiIjljWTRslzcByScd6xcDtXAXY5pRwciSFqZUS5gve7GBUdAtPe9hHfWI4idurlcAUZOpopo3J1fJGZXrzbitPyEbxiavvujIYLtJIZVoD8EZKaYkQIgL4LiHka5TS19ZvQAj5EoC/ufcHKaXfBPBY7TZZADcB/EPt258G8HZK6QuEkF8A8HEAH2rnl+kk//qNR/Bn/9+UKxG3QykFPXEJhkmhWzY006keVw0TVcNGVbdQ1S3kyv5s3zGCTTedCCoh7Jn3O5LY2kdDiCOZiKtiup6EKAkcBmqV5YjIgyMEulXzAy9pyFUMzOSqmEFzx18/BwMvTOZwciSFyeXO9VHX+6OD+hI0LBsRkYdu2jAspyJNCIFNKUyLQuCdQoRpUTw0mNjj3hiMxtlTTFNnfLxehhFrHxtvJUJIAsAbAfzcHnf1UwC+RimtT+9QAMna/6cAzDW+bO8hBNBcqqKZNsW12eAHVXiB7eZUzj7BssNXzd2JoFW3GsPfnYGVYvftUO1EVHK3E/GFuQKyUQm5io6ZtaprxYq4LOBQb8z3/uFnZ/MYSUeQjQPTOfcKMU5/dML3328vSqqJbMzZuRF5DgTOuRvAFveOciiPO4wg09CRihDCA7gC4AiAP6CUXtj07XcC+EdK6V7q8H0APrnp8w8D+DtCSBVAAcArGl61D8zkqtAtd0RMrqyjLy5jmTmCuPac7icMs3suQPzqPW4Pf5//6Vx136SHqi7b2Rk2dcUecTNj2Sgs2/YtrOReZteriEg8HjuQxlN32u9pHk7JEHgeT80E4/fbjVsrZYzXUg0NywZHnGH6uox2wpYAgSc43Bf3b6GMrqOh6S9KqUUpfQzAAQDnCCEnNn37/QD+crefJ4QMATgJ4O83ffl/A/A2SukBAH+CrUJ7889+hBBymRByeXl5uZHlus4ffecW/uNXrrl2f5ZNcaiPxZgC7lX79xOq2R2BLXUSSrjmoE2fdlNEnuBAJoLjI0kc7Nkfx4/Z2hBiT0zCQwMJnDmYwfmJLM4czOCx0bTPqwNOjaaxVFAxux6s3YKqbuGpO+s4P9HekN3psTTKuo3BlOLSyjoLpRTjPVEMpxX0xKSNYX1CSK3dw7kdq0wz3KapsxildJ0Q8i0APwLgGiGkB8A5ONXp3XgvgC9TSg0AIIT0AXh0U4X78wD+5w6P+RkAnwGAs2fP+nIW643LuDbn7lW5HdSmM4+pGuyg1izdkn5YJ6EIrswieIXEd8aBhiPAQFJGJiojKvHgOQLToihqxkak+Z21Ku6sVXFuvLucCNJREX1xGXHFSaeklKJqWFivGBA5x197OxeOpCKg4MNrhyPA4+PBCk7Zjo0+6pUSSlrjxw1F4HB8JIUrt50glouTOZwaS+P5uTy0AO+MvbhQxORKGYQQZKIi4rKw4UkvcE7bB4W/9paM7qQRN48+AEZNSEcAvBnAJ2rffg+Ar1JK97osfz+Aj236fA1AihDyIKX0OoC3AHih6dV7xDtOjeBVh3tw7jf/0bX7NK3gHpC8pJkDPMOh1GVVlZjLfbGdptzG0GRfXEZPXERMEiHwBKZNUdFN5MpOpPl83vnYC7eGELMxCT0xCQlFwOx6FYsdcqBIKgJ6EzKSiuD4pFPHR3q9omOpoGG9YmC9hUHD0WwUz815O3+SjooYSimBF9J1np3NYzjlVGpvN9BHPd4ThWXTDSFd5+r0Og73xZCvGlgpBTM8qKSaG/kITrCa495h2RQiz8GwbMgCD+bIynCbRs5iQwD+rNY3zQH4AqX0q7XvvQ/Af9l8Y0LIWQAfpZR+uPb5OIBRAE/Ub0MpNQkh/wrAlwghNhxx/S/a+1U6y1LR3ZOMtg9CFxqhUHVvUn+/kHfR3SAIyGK4zmwzuwiSTFRET1xGolZhtSlFVXcqrEtFFcslzZVZiaUGbTKTioC+hIyEIkIWnPWohoV81cRioYpcWUeuVvE9N5FtWUzHJB79SRlJRYQs8qCUQjNtFKoGlouaE/HcgQpyzOM0uyP9cRSqBl6YD5c3+lxeRUTkcWo0hau79D4/Pp7B03fyO4YCvbxcRk9MwgMD8UB6na9XdSgiD8uijmmAacOmFJLAwbAcZw8KiqLKijgMd2nEzeMZAKd2+N7rt/naZTjDhfXPpwCMbHO7LwP4cuNL9Zcf3Fp19f6qLg/WhBXTpohJPMpd1rrQSSgc94BuqVDLfLji0fNVY6PNgoJCNWzkq45YXqsYWPPgYmdmzRkyI4ATHhIRIQs8QJz1tCJirRaGgc+NZ/HCfB5FzcLkivcx64aHRYmzBzN4emYdRkgdiKqGhasz2/tR8wQ4fTCDS1NrO/z0XVbLOgqqgbPjGVxu4PZesl4x0BOTwHNk40JWM23opg2Rdzz6KQUeHkrufWcMRhOEa3/VR9zucWYDEHeJywIT002SULpHTIdxy1W3bN/T3x7oj+OZO3lMrbojYhdb2H0zLBtFH1u1vAiyEnmCx0bTDQnNMHBhMlcLXimjqFlIR0UMJpWmfj/Dorg8tYazBzOYXa801JrkBQsFFYsFFZZNN2ZL6iFXAk8g8RzGslE/l8joUpiYbpAPv+YQbiyW8MUrd1y5v4LaXVv17RCTBcDlNppuJyqFq5q7G2FMdJQE/68AGk3za5Q7tWjqZgZcZzsQ+d0M83m1owOsvXEJ6ajUNUK6zrW5AoZSCh4cTGImV8GLC621rVy+vYaJ3ih6YpIrMe3t8JZjA/jo6w4BcIYNB1POAKLb7xMGYzuYmG4QjiP4rXedxPPzBVcGXlTDhsgTGGwQERHJf2ESNiJdJKbD+A6oBGBXwOyAR/vBnmjD/cAccQIx4hLfscS9Rhjr0BDi0cEElgoqbi4FrzfYDebzKubz7Vf2J1cq6IlJeHAgjuse91EnFQHvODWC954dxfHh5JZgFgbDS5iYbgKB5/DHP/s4Pv2tm/i7awtYbrOamlRE36/mg4AUsp7ZINApezY/6IQo7DS3c973B9+L20PRgHNM2kxvXEI2JiEuOwOV9e3ztYqGpYKG8R7/U//iHRhCPDeRxeWpHELaHu05q2Ud+aqBx8cb67tuB0KAVx/uxXsfH8Vbjw2wyjMjEDAx3SSDKQW/9vYT+JUfOYq3fPKJtq7s47LAxDScXjZGcwhhbDTegTCmYBZVE4NJxZOe3Z24s1Z1vSp8Z62KEyMprJd1LBZVrJT0XW3QKm3YBLqFmyFGisjh2FASF0NiexckTJviUq2P+qmZNbg9GzqSjuA9Zw/g3acPYJT1PTMCBhPTLRKXBbz9sRH84RMvt3wf3dT32g5h7Jn1m256ysIaiz2U8ldMA8BoE20ZjTC7Xm2qD/rOmr890wAw71L64FBKgSxweHLa38HSsHP59hoe6I8jt0PQTrO8+eEB/Nyrx/HKQz3guC468DG6Ciam2+DBgfh9XztzMAPLpk4/IQh4Dri4w7ZXFxUX24LtpDZPNwVoBqG62QpiAIYQ723L8Jq1ioH+hNyRlpNGWSpqSEfFlkJf6pwcSWFqpYR5FiLlChwhrhzXOQK89oFevPpIrwv3xmB0Diam2+CRA6n7vlbWzC2T0bFdqs9lduAG4KRTMZrDtMNZzd2OMEWJbyYI9pZBaJEZSiu+imkAOJCJtCymt/NdZrTOufEsrtzOod3Z+p6YhE994BRedbgXFd2EYdINL/f1io71au3fmrd7vqpjojeGX37LQ6yCzfAcJqbb4FBvHBGR3xLA8uJCEWPZCKZrKWm7hbMUqv6fjIOAEQBBEDa66TkrqiYICV+1fToAQ4iLLrgxtIsi+N+u1kokfVwWcKjX/wHKbkEWOJwYTuLiVPvP56MHUvj0B89gOB3BclHDW37nCcQkoaEWpPc9PrZjTzWlFEXNREIWmPMHw1WYmG4DjiM43B/DtdmttkwDSWVDTNvUMf1PyAI4jsC2ndQ0i1LkKmz4EABUlgbZNNWQ9hnvREIWOhI33UmKqonBlIIFHwXtXF5FQuZ9DU4JRIW+ySHEsWwUlk3xzOzO0dqMxhlMKohIPK640G/+vsdH8Z9/8rgTC25T/OETL2O9YjS88/Djn/ouPvX+U5jPVzG3rmI+X92wAZxfr6KsW7jwH96EgaTS9loZjDpMTLfJUCpyn5h+fq6AiMhtCB7Dosh5EDEcVlj6YfNUQ9pnvBMJRQydmAYcEeGnmAaAsZ5YR3yWG2V6zf8KfTODoI+NpvHSQqHrLkj94vhwEjNrlbaHcSWew6+9/Tjef24MALBW1vFvPv8Uvn19uan7yVcN/PPPXtz1Ni8uFJmYZrgKE9Ntst3WdFm3cHY8g8tdlprVKcohFFF+UwxANdBNwuJsk41J6I3f9V1eKfmf3BnrgM9yMxSq/tsEzuc1JJXddzcIcfp5WVuHe5ybyLpiIziYVPDpD57GqbEMAODabB4f/e9XOuYW89JCAa97sK8j983YnzAx3SbLO5xMVwNwkg0LLFq9eQrVcPYZ70RQghfSURG9cQkJWYQkcLApRdWwsF4xsFTUkCvryAXMG95w29C3BQJhE7hLEmJSETCajTIh7RIRiceDA3FXhPTZgxl8+oNn0JeQAQBfvDyDj3/lGrQOvK454gj3bvLpZwQDJqbbZH2HvufJlQoeGIjjhsfxqmHEpvC97zOMhLHPeCckwZthoLjEoy+pIKkIkAUeFBSaaSNfdcRyM72ZQcGNSOhWics8+hJKIHzPd0pCnOiNQjUsX1thuomRdAQcBzw9016/eVwWMN4bxf/5Yw8jGRGgGhb+099cwxcu32l7jY+NpnFiJInhdAQj6QiGax8DCRlCF6XHMoIDE9NtslvgSCYqebiScJOIiExMN0l8j23tMMG7VClSBA79SRnpiARF5AAQ6JaFQtXEclFDUTNRWim78lhBYaGgIhURkO+AO5AicBhIykjVn09CoJk2ClUDK/XnUytj0vVHbp7qNrMXp8fSeG4uD83ski0cnzk5ksTkShmlNo/VH/mhQ/iF1x9GOirhv337Fv79l54BAcFLi+4EEH3oVeN4x6kRV+6LwWgEJqbbZDQbxeQOJ2ezi+zLOk00INv8YaIVO7CwI/IE/UkFmYiIiMSDEAJZ4DCfV7FScirL07kqpuF/Mp+XjGZjyLfgTEEADCRlZGMyYjIPjhAYlo2Cam48n7dzVSAEz+fMpkFIniM4M5ZxxaaN4eCGHzchwEdfdxj/+1sfAs8RfPWZOaSjIqZWK9BdbOtYbsL3nFIK1bBR1AwUVRMl1XT+1QwUap+/+eEBjPWwCHPGzuy/s7HLJJSdn8Jm3tD7HSUkA2hBIih9xq5Qa/7mOYK+hIxsVEJU4sFzBKZlo6RZWClpWC3rmF2rYnbTYNL5iSxuLu3vdqqdwqEEDs7FR1RERBSc59OmKGsm1isGlksaFgrOR9hZqxgYTCrQLQv9CYUJaZeISDweGki0LaQHkjI+9f7TODeRBeBYopZUE7/5dy+4KqQB4Psvr0AWORRrwrioGihpd4VyUdv6NXOP4LCEIjAxzdgVJqbbRN6l/6pbtuC9QGJ9bE3jVZ+x2/TGJfTEZcRlAUJN3BVVAwO1WOqFvNqU3ZzbJ+IwQQjQF5chCRzOjKXB8xysmljOlXUslzTMrauYW/c/3MULHhqI49pcYUsKLaN1hlMKRIHgqZn2/KNfcSiLT73/9MaQIaUUf/b9KXzif76ITgTgfvOlZXzzpeYs9XZjJgABTYxgw8R0m6i7hAX0xiXkq+EaZvILNl3dPDwJ5nPmOGLISCiOfZxNKVTdwnrVwGJexUpJx0rJPUcMv10kOs29zyelFBXdwlpFx1JBxVJRA6U7OwvtFx4fz+B7L6/uWWVkNMaJ4SRur5bbnmX5+R86hF/54Yc2Bv8quol//6Vn8bdPz7mxTE+Y6ZBFH6N7YGK6TXYTy7u1gDC2EgQ3gLDh13MWlwX0JWQkIyJkgQNqPYd5VcdSwXtHjPm8ioQioBjSnaCYxKM/KSOp1J5PEERlHpPLpYYdRpZLGrIxKXC2fV4g8QQnRlK4xHz9XeM1R3rw3Zurbd0HR4A/+MBp/OjJoY2vzeQq+MhfXMEL8+FyVplmlWnGHjC11ya7+fxKQhf1tHYYu1sMkz2knedMETlERB6KyEMWOEgCB5HnIHAEAk/AEVIT645i10wLxaqJ5aJac3AIlnAd28Vj2G8kgcNAQkY66jhiEEKgmzaKqmPHV1RNTK5sPVkfG0rUBv8a50Amsu/E9FBKgSJyeNKFGGuGc2F3ZCCO795cxflaIEsrR5nRbAS///7TeHQ0vfG1799cwS987knPLrQfH89gNBtFXBacD0VAovZvRORxYTKHL16+09CxjIlpxl4wMd0mu1njUSYQG8ZiW7PbIgsEUUmALHBQBB6SyEHkCQSOQ1Ti8fh4Zstr0KYUtk1hUcdNxrAodMuGZlpQdRuqYaJi2FBrH0B3tCH5mQLIcwT9CRmZqIio5Az5GZaNkmZipeSEvMysVZvaKr61XG46lKerBlIb4ORIElMrFczng3VhF1bGslFYNt3wj74wmduICi80Ybt4fiKLP/zgGcgih+/dXMHvfuM6Th/M4HM/mPY0ufX0WAYfe9vDO37/R04M4d+95UF8/tIM/uR7U5hd3/n9uVzUUNUtRNigPGMHmJhuk92Gn3YT2oyt6CG3EZQFgogkQKmJXlHgIAmO6OU5Ap4jICAbrRk2pbCpcxFhWjYMm0I3HdGrGTaqhoWqYUEzKTSzOwRvJ+n0EGJPTELPphhxy6Yo6yZyJWfIbz6vuhqewtUGC5eacARSt/FZ7lbcirFmOJweS+P5uQLUe95Hz80VMJhU0BOTd7SA3cy7Tx/Ab77rBGSBx59+bxK/9bUXoZm2Ly04d3YRx3USiogPv/YQPvSqcfzD84v44+9O4srt7dc6s1bBgwMJt5fJ6BKYmG6TqrHzCYxVWxtnu8CFTiDxBFHZEb1OewMPSSDgOafFgecICCEggLO9SZ0qr2VTmHat0mva0E0bak3wMtHrP/MNnDh3I6k4feAJxYkRp/UY8bKBxaKK1bKOVRdbKGSBYCAZQSoiICIKAHFiwQuqgZWSjnzVQMVobqCwEfEQduIyj4led2KsGYDAEZweS+PiLmJ3oaBCFjicHkvv2E6TVAT8h7c9jJ9+fBSFqolf+9vn8bkL051adkM80B9v+LYCz+FtJ4fwtpNDeGpmHX/83Un83bPzW87h06tMTDN2honpNtmt36qss+3HRinfI6brolfmOSgSB4nnnZ5entwnegGnpcaigG1TGDXRa5g2tJroVQ0LFcOCblHoIYuLZuzNYlFDKiLuOBC8MTSpCJBFHpTSjSS/5aKGgmq6amUpcMBAUkEmKiEiOWEoeq31Y7WkIVc2XO/DzJV19MXlrnX1OJiNwLApnm0hnIZxP71xCdmYtKuQrqOZNp6cXse5iQwuTt5/+586M4r3nRvDQl7Fh//8Eq7N+j+/8Oydra8TSilIA7vFj42m8an3n8L/8aNH8effn8LnLk6jqJqsb5qxK0xMt8nBnp0TEN20/woqklAfZNvU3sA7fb18A5Ve07JrVV0LvXEJVd2p9DLRy2iWBwfi0Ex7o3dYMywnya8DQ5McAfoTTnJgPVzGsGyUdQurJQ0rJR2z6ypmPfZ3Hk4rXSmmT42m8OJCadedQEbjHBtKYD6v4vpic2FHFyfXcHosjadn1mFRZ2Dxt9/zKN52cgjfvr6MX/mrp7EYkACgb99YxkpJQ29crn2+gtc92Nfwz4+kI/jY2x7GL73pAXzx8kxH/LAZ3QMT022Siog7fm+5qEHiCXTL/3ehwBFEJR4Rib/b3sATCDUHB45sdnBwruLte9obDMuGZthQzVqlV7c2Wh7y3b/DzAg4bvdlZmr+znFFgMRzsChFRTORKxtYKqqBTA7stiFEAmwk5jEh7Q6vmMhiIV/FWovFiien13FyJIWHBuL4t295ENmYhE9+/To+/a2bMAJwrqtjWBR//9wCfub8QQDOrqVtU3Bcc7NMMVnAh1490YklMroIJqbbxNhjcG4oreD2auNKk+cIoiIPReKh1CzL6rZlPEfAEwKO29ze4AyzWZTCsp3WBt2ya8NsNqq6iYpuwbSp61vZDEaYkXiCwZSCdERy4uxrrR/5qoHFgoa1itGy4PCLShe1lmWjIgZSCi5M5pxY9ERzA5mMrdRjwX8wmUNE4vHYgTSeutO8YTLqpQAAIABJREFUpWBE5PELrz+MHz05hOWihl/6y6v4xgtLHVhx+3zpyh28+/QByAKH64tF3Fgq4iM/dNjvZTG6ECam20Q3bRzIRCDXBG/dq5evVXtlgcNgMgKgJnptCtOiMG0Kw7I2WhyqhoWqZsGwKYqa6amFEIPRjSQUAdmohEREgCI4rRimbaOkmliuWdZN56qYRvdsq3TLcePBgThyZR0vzDux4KYNjGaiTEy3yEgmAo5gIxa8qlt46s56064oI+kIPvPPz+D4cArTqxV86E8u4lYDLh9+8eT0Ov7Vn1/Gb73rJH7ray/iq//ra/xeEqNLYWK6TfJVA3dY1CiDEQhOj6WxkHfcN4qqGdpUxJ1IR0T0xCUka64j9j2uI1MrldBXcM+NZ/Dk9Pp9seBXpteYJV4LPHoghZtLpfuGvAHg4mSu4djwswcz+MN/dga9cRnP3FnHv/jTS6GYC/rOjRV8/tIMXnW4BydGUn4vh9GlMDHdJsxLmsEIDqZNMeei37PXRCUe/QkZqcjdaHHVtJCvGFguqlivGljfwbGkzlBKCaWYrseC7+YucXEy50rU9X6AEODceBYX9rj4uDZXwFBKQU9cxtTq9o4V7z17AP/XOxz/6H96cRG/+P9eDVUP+1Mz63jnqZGWeqYZjEZgYrpNjvTH9zxYMRgMb4gEfABPFjgMJGWkIvVocUA36ZZo8Z0ETaNIAtd0eqLfDCRkRGWhoVjwxYKGo4MJ8BwJbIS83yQUAQez0YbPTfN5FYrI4dRYGlfv+Rs8NprGJ979CAgh+NyFaXz8K8+GztniOzdW8J0bK/jdb9zAe84ewHvOjmIkHfF7WYwugonpNlkP2YASg9HNeBX+sxcP9MeRiojgOALTslHUTKwWdeQqTp82OtinfWlqDQMJGaPZKC7vkOYWJI4PJ3BnTcVisbHe26jE4+mah/BIOoIDmQiKqomVkoblkhaqi4hOMNEbhWpYuNbkhYZq2Lg6vY7ztVaa+tN4Z62CpaKGz35vEv/1iVvuL9gjohIPy6b43W/cwP/zjzfwmiO9eO/ZUbz1+ABkIdgX4Yzgw8R0m6x0oacrgxFWgpICGJMEX4XsYlHDYlHD2YOZQAvq8xNZXJrKNVXplARu4/9n16uY3fQ35wmQiIoQOAKRJxA4DjGZR0R0YuApKEqaiYW8Gjqnlr0QeYLTYxlcnV5ry471wmQOx4eTmM5VahcpOl77iW9C38O5KuhUdAtP/MobcG0ujy9cmsE3XljEd26sIB0V8Y7HRvDTj4/i4aGk38tkhBQmptuEbRUxGMEhV9bRG5d8H4ySRW7vG3nA5dtreHw847oH93aIPEFcFhCVBUTEmp99zdKzbudZdzQicHp6W2mR221OxaKN7xYmIwJ6Y46PuCxwIMTZRajUgqNKqhP0o1t2YKrdIk9wciTl5AJwTi+PTR2L1qWi6lrL4XP1PuqYhKnVSuiFdJ2vP7+ID5wfwxse6sdqScOXr87i85dm8Kffn8Kffn8Krzrcg//+L8+zvmpG0zAx3SZBOWkyGAyH4XTEdzFdDpBF3TN31pGNSciVd39OohKPmCwgKvFQRB4S74hhjrsrYG3qWHsalg3VtKHqTnhTUTNgWLQhb+56LPhci+mQtkvKtlA1Uag29nfiCJxk17oFKkccG1SeQOAd/39+kyUqx5GNMCzTpihUDSzk1aatC3mOIB0RkVAEpKMSlotqQ33lbrBbH3VY+cy3X8ZPPz4KniPoicv48GsP4V++ZgJPzazjC5dncHQwyYQ0oyWYmG6TSkB6NBkMhkMQhhCnc+0NEbqJZlK88nAKFd2EZQOm5QQ7qYYN1TBR0pwqbKUmjDuJG7HgmuF9ldSmcC4ezPYeOxMVMZBUkFRE2KBYrxiYyVWgbbrf8xNZzK5XUVANFKomVss6Vss60OZgaivU+6jPTWRxaVMfdViZWq3g759bwNtODm18jRCCU2MZnBrL+LgyRthhYrpNeHYVy2AEiiCkABZUEwMJGYsBsajLlXU8Uxva84N6LLgbbQhB+Pu2yk6V+4GEjN6EhKjktMgELbvg4j191GHm9//pJh7oj+OBgYTfS2F0EUxMt0k2Kvm9BAaDsYlGhQhPgP6kgmxMRFQSwBECw7Ih8pwrom8oHQmMmN48tOc1CUXAWBM2bXuRb7A1I0zUB0YB58IjiDw3V8BgSkFvXMZkgFMP9+KlxSK+e3OFiWmGqzAx3SY8H9RDH4OxP1mrGBhMylgsaOhLyMjGJMRkHjzHwbIpypqJXFnHcknDfF7F/D0hLwNJ2ZV1+Clg78WvcKmJ3hiqhuWqH3SuEvzUvXagAGISv21iod8s5FXIAofTY2nPerfd5lWHe/Bzr57wexmMLoOJ6TbhWQIigxE46lXhpdpHMywWNKSjYtse8kEaQqQ+2FGcHkvjubnCln5gN7BsikxU7Dpru81kYhLKerBaPepopo0nQ9xH/a7TI34vgdGFBKd0ElKCMOzEYDC2IvJcW3Zmo5n2LS9ngjSE6OHQHkeAc+MZPDm97rqQrpOKiB2536CQUIJf57o4mcPDQwmkIsFfa51jQ0n8+CPDfi+D0YUwMd0myyy0hcEIHJU2q8JRqX2BIPAcstFgiL6yR0N7qYiAhwYTuNhhX+u4HB4B1wphKdI8P1+ELPA43BfzeykNoYiOtSGD4TbdfUTyAGaNx2AEj+m19qrCjVi3pSIieuMSkooIUeBAKYVqWFivGFgsqHv6OntJ1QMxfaQvhoJqeBJwIodEbLZKmATfUlHDetXAmbE0rgS8j/pgTzhEPyN8MDHdJqfHMvjrJ+80FYfLYDA6S6FqYiil3Ddc2Ciz9ziCjPdG0ReXoZk2ClUDy0UN+aqBfDVYfbvjPVGkIuJGil9Fd3yk+xIK5vKd20V7fDyDp2bWYVgUI+loxx6nTrdbkgYlcbFRdNPGlel1nBvP4vLt5uLhveLkSAqvOdLr9zIYXQoT023ygfNj+Isf3MYL8+5NqzMYjPYZTLYuplfLOk6OpFBUHeFs29STSO5GGErJGExFIPEcKIDVkoZby2Uc6Y9jcqWMqW3CPTqV1CpyBI+Oprc8N55UVQMo1twkrPHdF6dyODaUxJ31SsPpkl4g8Rz+3VsfxBse6vd7KYwuhYlpF4jL3b3lyGCEEbFNa7pnZ++GnFTWqoiIHKo+pO8Bjmg9NZbBS4tFzOc1zN9TZSYEuLFU2vHnLct99dmfkJGMiLh8+56LDA+KxkZIxWajlALkBNMsz887ftQP9MfBEQJCCK4vFtt2x2mHn3h0mAlpRkdhYtoFfvj4YGCqVgyGX0g8QUTioQg8ZJGDxHOQBB4CR8DXPjhCAOc/UArYlMKiFFxNgd1YLjZc0SIA+pMyMlEJMVkAz5EtPtKXptwJCUFtrQd7YnhxoejafTbKUEpBRORxcZffZ6+2ALddNY4NJTGXr+LmNgLe8mCPv5048jAQpH77VljIq1jYtCv04EAcZdWE4VP/xysOZX15XMb+gYlpFzg/0eP3EhiMhhA4IFKLLJYEDrLgTLeLPIHAEXAcB54AIGRD8FJQWLbzYdoUpmVDM23opg3VtKEaTn+ublHoVRN5tF5VIwR4aCCBbEyEaVPolg3NsBGVeIi8E7pSNSwndKWoYbHgfHhB0gc7tlOjKVxfLLXcrlLHzUrn+YksLk3t3BfbKTu8zYQ90novcmUdIk9gdGBHwQ+uL5Z8C3o51BvDTzzK7PAYnYWJaRc41BfrqgMfw184AkRFHrLII1ITkRJPIPCO8OUJwHEETpGXgMIJ5bCpUxU0LRuGTWGYNjTLhm7YqNYEr2lTFFUzsGKEUifu90Am0nAsuFeYHrYWOG0dadcs5tZdGJSUBYJjw6k9Y8FLaue387s9BREAeuLylupu2Hlyeh3nJ7Kuxco3ym+88wSULnd/YfgPE9MuEJMFDKcjuL3N4A+je4lIPCIiB1ngIQscpFqVt97WwHEEPCGQeA6aZYNSCloXvLYNw7pb5dU2VXgNi6KkWyjpFlD2+7f0h5gLPs9u02ySYqsMpRREJN5Vr+b1irHRBtMK/QkZcVnA1QYqiwUPHE6quuVrD7sXJGQBC34vwmUuTOZwYjiJay7Gy+/GL73xCF51mDl4MDpP8M5YIYRSivn17qkgdBMiTxAReSgiv2HYL/KO8OVJvY8XW9oabEph07stDYblVHlV04Jm2qjqFtTav1XdArC7eDg1msLVmfyut2FspVPuE+1wZ62K/oTsqqh+fDyD5aIGzbRrrTYcFgpq220d25GJilgpNV/RPToYx2JBw62Vxq7schUDHEHH7dEyMQnVLj7uRqXurKYulzQoAgfVg3agNz080PHHYDAAJqZd4c5aNbRWRkGAEGwRvPU+XonnwPNkQ/TW2xqAu4LXsgHTtmFaNnST1qq8FlTdQqVW5TUsEwUf2xo0k7X/NIsU0NCKVER0RUzLAsGxoZSng8upSPNi+ux4Bk9Nr8NsUhlnohJWOzxEl1QEzHX0EfxFatONJqgsFjTP2j2eny/g0dG0K/eVrxgoqAZGs533UWeEDyamXcBN14AgI9bcGu4bXuM4CLzT1sDBEb2AI3jrlV7Tciq9umltDJWpplPZ1S2Kim51bZpkxaMo526CC2gox42lEgYSMhbbENQcAYbTUVyd8XYYK9ZEBDdHgLMHMy23mqSjYsfFdETs7tMXR4L5HnCDS1M5jKQVzHZ4Z+HYUNKV+5laKePn/+IKZter+NQHTjGbPcZ9dPfRyCOClMZF4GwPyqLTzysJPKSaWwPPEwiEA8dhh+E1G6ZFYdgUes2tQasJ3novr1E1t7Uu87IPLmwEddgvyATnHXU/B3tjbYlpm/rz+zVa7U9FBAylIm31bHvRohCmyO1WsMMWg9gENgUOZKKuiWmOAAlFQLTmVFS35pzOlVuuTP/VlTsY74ni7HgWLy4U8NKiY4t5e6UMPOTKshldBBPTLjDRGwMhzUXAbufJKwpOlbfuyUsIQLbr5bXuDrDV2xo0w0bFsKCbNsq6hbLHVd52AzK6mXy1+50H3MYLr+JWmWqwd3g3KND0MaNdGrnon+iNoapbbftpyx64J3Rx4RYAYHa5O9TmHnyRI44YlutimL9r10nutvZZNq2d9yyohjO3UtJMVA0L+aqJ/KZCz9HBBH7kxFBDa/nmS0vIlXT88IlBxGs7OAlFwFxtdkHf9LcQuvwijtEaTEy7wCMH0vjXbziMi5NrjuC1AYvW3RpqXrk1wVs1LKguefIGCSFA1fmgYdpATOI9v8AJM0FOuFsqauiLy1gutV6dnlwpYzitYM7DAbq9hPu58Qyuzqy7YvHJe6B0m+3jDhvdHkyzXNRwbCiJG0tFGBZFrmIg52JK4pse7t9z9+IPvnkTv/iGI/j0t17Gxckcrs6s4TfecRIAMJBUcLnWwrnZFlPk2bmOcT9MTLvEu06P4tPfutX1B/id6Ob+PjdIREQmpptADbiQGE4rbYlpAJ770mvW9s9pJiriQCbqqhWfFy0Kmhns10i7hDlSvFFkgXP9fZCKiHjFoSx+9pXje952slYdH0gqAICF/N33dH9CxmLBudjdfHHPc6wyzbgf9qpwiYneGF59hPlZMrYn3sTwF8PZwg/ybocbIRBVjy+utnu8E8NJEELw7Ky71o1eXCiUte4W0/l9EEzTCceSsWwUNgW+8cLSfRflumlvGQivX/MNJGQAwFLx7k5RX0LGcm02YnObB89tFdeUUnzsr58NfAGA0VnYGd5FTo6k8MT1Zb+X4QtB7nENAhGWwNUUcVnEaRcTAN2m3IJDy5mxNHSLYr2iY6Ggel553BymInDA6YMZXJzszPPrxYVC3oNwGD8palbXJ+uatvvtXM/O5vHsbB7fubGMQ30xfOyvn8V8vgrTonjj0X686/TIRi+1E6RF0Z90xPTmxEmR5zZ2mo1NnthPz+Rx5fbddhBCCP7HM3P4hdcfZrZ5+xgmpl3kGZerO2EiyD2uQaBbPWM7QSoi4uk761AEDklF8NUjfCdmcs1FnfsRo3wvuZpV3Ug6AlnkOiakAaDgQaT4WkX3JBzGTzJRybPkTT/opNORath432d+sOVr//D8It549K6tXUwWUNTMjTaPlZIG07LvGzLcfH4bTiu4cnvre6evFubExPT+hZ3hXaKim/jBrVW/l+EbmgdpVmEmSPaJQeehwQQMi6KoWTg66I5PrNvkqwYGa9WsvTgXACENOLtH5ycyyJV13FrubE79Woc9pgFniz4TlTr+OH6SjIh+L6Gj1HuSvWRt05Bjb1zGUkFDX63NgyNk22CjzbNQQ6nIfRc4m1tCGPsTVpl2CcOksLu5RLIH3Rq44hZMSjcGR7Zaz12+ncOBTAR31pqrBHvBcDqChcLOJ9BsVMKBbAQXfRbSHAHOHMxgOlfBhQ5WozejmjaiEt/x44IX4TB+0q2R4nXyVdPz3adc+e57tjchYbmo4RUTPfjDD57GE9dX8OxsHmsVHYWqgbWKjs9fmt5SiU4own1tTH2J9geSGeGGiWmXSEXFWg+i/xUoP2Apf7vTzQEMbvLIgRSemrnbLmVTR5QGUUzvttswlFJQNSw8c8ef1i+OAAd7YuiNS5hZq3oaW14nG5NQ0Tv7d2sm1TGMNBq0E2YGUgoKasmzx/vj705itaTjrccHcGOxhE/+w3VYlKJQNZCOSnh5qYSEIiAZEXGkL447a1WUNROPHkjhg684iEcOOCEwlFKQmotVX5xVpvc73X0k8pjXPdi3b8V0EPtag0Q3DxG5iWrc3y70zGwex4eTeC5gCZurZR2PHkhBEXlQALZNYVEKw7KxkFex7qJn7l6MZaPoi8vgOKcF5fZqBZMr5Q3rLz/wwsGm28XmfmgPS8retrLYFPjrq7P466uz933PsGz86k8ew/Hh1Jav/9jvfQfPzRXwiQMpZGMSkhERBdVEqtaG05eQMZ2reLJ+RjBhYtpF3npsAL/7jev7Ujjppg1ZINDM/fe7NwKzTdqb8Z7ojsl7JdX0PDFwL24tl3FqLO15PzRHgAf6E0hHRRRURzhP5yqBO5l74WDT7WIzSK/3TiEEKASlqJr42c9exBc/+ipM9MY2vl7vqV4uajg66HhQLxe1LWL63qFExv6iuy/rPeaBgQR+8tERv5fhGwmlu4dl2oG1wexN/YS1HbdzFZwZyzR9n0lFwNmDGXRKc12dXsdjo+nO3PkmRJ7g1Fgaj9Qq4S8tFnFhMocX5ouBnVfYK33ODbq9fUrfBy5JQQs6Wynp+OAfXcB8/m6LUl/8rpgG6u4d93hSs57pfQ2rTLvML7/1QXzpyTt+L8MX4pKAFXTvMFA7lFgbzK4kFAHP3Fnf9Ta3lksNDbUpIodjQ0mYFsVzc3lcvr2GsWy0Y5Vbs0XBQwA8NpaGwBFQClBQ2NSpRhICiBwHEGfX5+WlEq5O7/78BA0vQlG73ZJzP1yE6wFMspxdr+KDf3QBX/zoq5CNSRs+1HUx3Z9QtvRI98VlrLCe6X3NnmKaEKIA+DYAuXb7v6KU/ioh5DsAErWb9QO4SCl9xz0/+wYAv7PpS0cBvI9S+hXidO7/BoD3ALAAfJpS+nvt/kJ+M5yOdPTEHWSULp88b4f1Lg+YaJeHBhK4vMc2aa5i4NxEdtu5BJ4jODaUhMQTPD9fwJP3CM9WehoP9cXQG5cB6lRADcuGYVGohoWqYaKkWSipJm6vNt+XfGwoiYpuhk4gN4MXFcegVuXdouiBX7ffBPVv+PJyGR/4bz/Af/qJYxuV6aVNlektYrr2+eahRMb+opHKtAbgjZTSEiFEBPBdQsjXKKWvrd+AEPIlAH9z7w9SSr8J4LHabbIAbgL4h9q3PwRgFMBRSqlNCOm/9+fDir5PPZdlFkyyIzZ1qq+dDCkII5LA4eRICi8tNDZcePX2GgaTChZq/rQPDSSQjAi4vljcNRK7lbbMmCQ0NFBcbCLWejitoC8u42mfXD68xAvv+W5/Py0VNBwfTsKwbKSjUlcOuAf5b/jiQhEf//I1pKNOC+PdyrSMG4t35zuyMQmmbaNQNZGKsnbH/cieYppSSgHUfWvE2sdGyYEQkgDwRgA/t8dd/RSAr1FK6+Wh/wXAByildu1xlppbejApaebGiX6/4UWPZJhJKmKgTxzNMJRSMJ9v/3VOADw3m4faoPAybIq+hISDPVFMrZTx0uL2A4v3stbCzsCdtcYq2eM9UcyuV3cdPI5LPI6NJHF1eh1z6/vj+FDyoKrazR7TAGBRbLjYnBvP+ryazuBFwE873NrkiLO1Z9qpRGumjWLN2WOpqDIxvU9pqGeaEMIDuALgCIA/oJRe2PTtdwL4R0rpXqWl9wH45KbPDwP4aULIOwEsA/glSumNhlceUJb2qZAGun+yvl1icve0wYxlo0gqAjTTxtRq8y1NEZFHX0LGUEpp2g3j2dnmLfJur5Sbjp5e26WtZDMDSWXX5+DkSAoza5WOxncHkYIHrU26aSMu8yg1sTsQVrq1f9qwKSIij2oIHI+emlnHj/3ed7BeMbBYUPHVZ+a2XEQvFzU8MJDY5R4Y3UpDYppSagF4jBCSBvBlQsgJSum12rffD+CPdvt5QsgQgJMA/n7Tl2UAKqX0LCHkXQA+C+C12/zsRwB8BADGxsYaWa6vBLX/i+E/igdWYV7y0mIJBMC58QxurZS3jeHdiYjEe2rnplsUwykFc01W06cbuFCwdlHoj46m8NxsIXCOBV6QqxhNX8C0QiYqoaQFL9THbaZWyxA40pWvpYjEhUJMVw0LNxZLOJCJ4NVHejGWjWIsG8VoNoLRbBSH++J+L5HhE025eVBK1wkh3wLwIwCuEUJ6AJyDU53ejfcC+DKldHOp4g6AL9X+/8sA/mSHx/wMgM8AwNmzZwN/FDnSH/ckRjeIdLtNVbt0U8BE/W9NAVyspeslFAEjaQUJRQQBQVk3sZBX79uKH0wqSEYE5Dze3pVFHpLAIR0REZN5yILzucAR8BwBVxscsiiFZTkDh5plY6927p0qho+PZ3xJHgwSmajU8VYMx5Kz+8V0SbPw6GgKT890X7+9U2gI9rDlowdS+I8/fgynxzLg2C4s4x4acfPoA2DUhHQEwJsBfKL27fcA+CqldK9yz/sBfOyer30FTq/1ZwG8DsD1ZhYeVBSRR09cQiXX/Qf3e+nGiombuHEAjkk89JqrhJ+Y2zx+UTXx4sL9scAJmcdwOoqoxGM+X8VCQd1ToHaCmMRDN21nIr+xVuuGmNnmvc4R4FoL7SjdRjoqdlxMK2L3XKTuRa6sQ+SJ7+9/t5GF4O/aaaaNoXSECWnGtjRyFBoC8E1CyDMALgH4OqX0q7XvvQ/AX26+MSHkLCHkjzZ9Pg7HteOJe+73vwB4NyHkWQC/BeDDrfwCQSQdkfxegi/sVxeTRmnnEEwIcG4iC0opLJtivCeKcxMZjGQirq2vGZpxaihqFl5aLOLqzDoWCj56sXboHNiXvD9sJibxsNhODaJS56MMBG7/iOmZXBWnWggvCjpSCJygXlwo4tl94MLDaI1G3DyeAXBqh++9fpuvXcYmYUwpnQJwXywgpXQdwI81vtTwcKQ/vqtNV7fCIrN3Z7fe2r14/ODWQbip1crG0Nv5iSwuTuU8jR4OQ3/jvXRKdEk8h5MjSeSr5kYPeFGzcG7c+bvsZzyxy9xnhcKLk7mue22JAYoU343NqYcMxmZYAmIHODq4P6d592OfeDO0k9a2XtUhcMB2BeELkzmcGE5iZq2KvEfhMGF0FuiU28yLC3d7RkYzEQylFDw7W8CLiwUkFQGFLrFDbIVWn3NCgLgsICYJiEg8ZIGDLHAQeA4cATjipEbalKKimfeFaHQ7F6dyDTnNhAUxJLsLi/vYrYuxO0xMd4BHR9N+L8EXusVDuVOoRuti+vpiCecnsjvayF2bKyAh8ziQicC0bNj0blpXJwibQOyNS55cAMysVTGzVkVc5jGaiWIgIaOgmri1UkYmKmKxoO4LG7c6hmXjgf44ZIGDKHDgOQKeECeogAKmbcO0KTTDgmbYqBgWypqJsm6hqJoNH1MeOZDaV2IacCrUx4eTmM+rng/zuk1YbFVz5WAPSTL8g4npDnCoN+b3EnyhpJkg2JTow9hCuU0xt1cbTVGzUKxZhB3qi3VUTFd1CzxxQiWCTDYm4nBfHE/NrDdl3dcuJc3Cc3MFWIOJjcp1rqwjExVxZiyBK10cI76Ze2PdO0U3OeU0w3NzBaSjIk6OpELdWhgSLY23HhvwewmMgLI/j0Adpi8hI9JlnsKNkoyw67OdKLaRCCdwBDeX7nfK2AkvXn+pSHCTvmSBw/mJLMqaiUtTa227Hwgc8MhICrLQ+Fl/JK3g+j0JjWsVA1em13F+ojvT7PwiLJXNTrBeMfDsbB7nxrOh6T2+DxL8dT9yIIU3HO33exmMgMLEdAcghOCVh3v8XoYvOJ6vjO3IV82WzxknRlIoN9GT7sV0fEwO5oVTf0LGQFLGhckcNNOd0rlpAwJPIAs8zk9kkW0gMnggqewYWHJhMoezB7vPlcEvmMe900c93hNDRApjISf4f7+++P2uPQxGHSamO0Qmuj/t8fZrRb5RUi1cbEQkHnPrzfmWe1Gp88L2rFmGUgoeHIhjugM+7zO5KgqqiQuTOVRNe0cxfKg3hvMTWVyd2b3F4dnZPA5mo66vcz/SznBvN3FjqYRDvTEIYavUB19LQxY52CxLgbEDwTsbdglB3gLvJPspQKEVEoqA9SYdN44NNt9jy3uwbeqJ7VmTDKcj+N7Lqzg+nMBqSceBTBQ2pRB4DjcWi1irtN5qs1q+24Ne1S1cvr2GsWwUmagI1bCRjoq4vVrBrZUybq2U97w/zbRhUYqIyKHaxnAqA03t2nQ7z80Vdh1WDiJBn70AgL97dgHGT9uQOVYwYtwPE9Mdwq8wDb8R9+kgUKMmyPjYAAAgAElEQVREm2yNODWabmlYzYtzk9hE/7BXTOcqoBR4Yb4Im2JLSMwD/XGsVQzEJB4RiUdE5KGIHETe+RA4DhyHjVhxm1LYFLBsJ3FSN21ohg3VtFDRTBzqi+OZ2Tym29Asd9aqOD6chGlR3FwqhkJUBJGiR5aQYeHCZA4j6Qhmm9zR8ouwtOnkqwb6E0xMM+6HiekOsV8dPUK3vegxSpPV3FYdQLzYjuRJsC6chlIK5vOOD+x2v349UKWsW65UMlfLOgSOwGzzuX5uzokdlwUOR3pjsG2KG00MmzLQ8cjyMDKSCY+YDgMRkW8reIvR3QTrbNhFPHIg5fcSfIGEYCrbT5qt3BdarLgZdufbBoL2px7bo/+4mQj0Rphdr+LoYALpBoYRG0Ezbby0UMSd9SqirF2qKQyLIhHQgVi/WMyHR0iHwdqwalj4xxeW/F4GI6AE/xUcUnriMh4a2H9JiCHZrfONZgcDD/a0tsOhuywct4MG6I893hPFk9Nrnj/utbkCohKP02NpPD6ewfHhJE6PpdvaoTk+nESF9VA3jVsXNd3CdK4amp3CQhu2oV4yu17d0++fsT9hYrqDnB3ff9ZXbBvMXW4sFRGXm+/Rq3owkNVue4Nb1Dtn2vWS3ouHBhKIiPx9HtFz6yqenF7Hpak1PDdXQEE1Wq7aSwKH2ysVF1a7/4grrDK9GQon8yAM3F4pB26nazs+/a2X8fN/ccWTNFVGuGBiuoP88PFBv5fgOV60F4SZZgVormzg2FDzLUNz61WcPZjB4+MZjPd0xn7Ni+p3I5w5mMXUaucFqGHZqBoWLkzmcGI4iVOjaYz3RHGk37HCO3Mwg+G0gptL5ZaF/WOjaSyX9lcstlsozJbzPhIhucCoGDZGM+GwiXzi+jK+cGnG72UwAkY43mkh5ejQ/mvz0NgW2K604ofbys/oFsXl23fbHtJRJ1ZbNayNgbd2CUJ/fDYq7enn7Ba3VsoYTimYy6u4ds9zeBN7W+HtRVIR8PxceCOhG0HgnGCnqMRDqbupcDwEnoAjBIQ4rWIWpTAtG7rlOKhUDQu9cRkiT2DZFJppQzNtqIaF8d4YLk3mcHWfRLQ3Q5h8//sT8saQsN9EJR6DKQWDSQWDKQV9CRnPzRZgWDbOTWTxwyf2X6GMsTtMTHeQ5eL+qzBVmN/rrrTSfuHG4Nx6xcCVmrg+0h9DVBTwzGx7wi0IJ+rD/TFcmvKuV3o0G8VczTHEbY4OJXEx4N7AcYlHTBFqtoI8JJ6DKHDgyF1LQcumsKhjJajXBG9Zt1DWTGimjbWK0ZLf9/wOz/tYNhqYlqOgIQbQC34n/LLHe9epEbz52ADGslH0xCVkohLb5WA0DRPTHWQ/CsuSxnrJdqOVXruqy9X+m0tOFfXMWAZX2hja00z/X99en3+fny8gLguuv86H0wqevN1ZIS3xBPFaVTgi8pAEDhLPQeAJCCEgqHtrUxgmhW45QriiOx8lzURJt1AK2HGNhiE+zye8CG9yi0aCjjrBXL6KJ15axuXbOUgCj4/80ATeeeqAL2thhBcmpjvI159f9HsJnlNUmZjejVas7sodukBpJ3KcEODWsv9eyFOr3p6Ai6qJcxNZ1yvImaiIufWdK94EQCIiOIEzogBZrAvhu1VhCsdf3LTrVWELlZoYLqkmdIsiV9aR80ezdAxWlN6ZsIShAM7u2eG+GF5e9vYF+oNbOfzg1t338y9/4WmMZWM4c3D/GQgwWoeJ6Q4SnpqAe5g2RVTkmLXXDhQ1CzxHmnI96VS1v52i1XA6gtk1f31sjw4m8OJC0fPHfWmhsNE77QZ1d5BzExlYNjaEcNWwUdFNlHULVd1CoWqiUDUB7L/2sd3wIqAorHTa4cZteuOy52L6XmzauQIGo3thYrqD/MSjw/iv377l9zI8JxERUTHYCX8nUhERuSYS2yq6BZ7A9ajpdqpWfjt5KAKHok8nvHzVBCEED/THXUkqXCpqmPRpi7sbMEMmGL1ENcIlCoOys3kgE/F7CYyQEZ7phBByYiSFBwfifi/Dc6ISu0bbjVaS2lIR9wMp2hnaWi1p6PfRw/bESMrXyvh6xXClZ/xgT5QJ6TbRW3C72S8U1WD1t+/F9cUClACkfwbFVYQRHvx/1XY5RweTfi/Bc4Lg8hBkoi2EsEQ7EJXczhawTfeO7+4Ux4cTW2z//KKq24hI7b3WB5KKS6vZvzAnj53JVxrfAQsCpg080O+/pey//fxT+PW/fR6//fcv4nMXppFvwX2Gsb9gJcQOsx9TuaQQ2TH5gSy0IKbbFG3bobaZ4nX59hrOjKVxxWN/X474//pKKAIUicNyqb3Kn999592AySrTO1LSLYg8CVXvdBCKMesVA5/93uTG55/8+kv44599HI+OpkEpDYTHPiNY7D+l5zH7cZBB5NmBZjdaeX464Xu6neVeROQRkXjIAgdZ5CDXHCMEngNPHAcQQgACxz2CUopXTGTxA4/8kQkcezo/iYgcBpNK2/3SY9kIpnNMTLdLK6FG+4moJCDfgouQXywUgveeWCnpePsffA8DSRkrJR2piIj+hAzNtPFTZw7gF99wxO8lMnyGiekOo7RQhQw7HLtq35VWnh+Rc78aO59XMZh0TghV3YJqOklzdZF9bCjZsHB9fDzjSXhKXOZR1PzrAxU44FBf3JUUyUxMYmLaBfajn3+jcAQoqOER0gBQ8vH9vReLBWew3rGYdFpo3vRwv59LYgQEJqY7zL958wP4H8/O76swk/BsKHaWmMRDrkUmy0ItLY4niMkCzhzMgCPYqPICdwMzLBswbduJUzad6GShA9V+mwILhZ1dV5oJi7k0tYbTY2k8fSfflO1fs/jdH3v6oHse06wP0x2KIROLXpKJSlhtwjkoCEQlPlRe6EsFDUcbSBc3LBtF1URJNVFQDZQ0E4f6YuhPsLmJboCJ6Q4znI7gZ86P7SuLPBqioABF4O62NQgcJIGHyBOnrYEjEDhH6tZ75GxKQSlgUQrLpjAsG4blhGRopgXVcKq7umk7EcrbVM3OiPxGtHej+GHV1Gxa45PT6zg5ksT1xZIrEejb0U7QTDs8MBCHadmuhrX0JxRMrTLXgHbgOeL7BVaQSUXE0InpsEV5f+HyDC5N5VBUTUcsa0btX3Pja0XV2PaY+H+/+xG89/FRH1bNcBsmpj3gn73yIP70+1MdExhBw+1hF5EjiMg8FOFuL6/AOVVegXNEL+coXhBgIwnOrgneeiKcYdnQTHujraFqOK0Nqsd/l1Z6PP24QGnF8/XZ2QImemPQLXvLcF1fXEYyIiAiOn9DgedqOxgUNgVmVitYLO7tTX5sOOV6+uBeZKIiFvKq6x64agDi2MOOZVPEZT7QrQF+kuyApWanUUI2wP7VZ+Zb/tnlEstj6BaYmPaAA5koXnm4B996adnvpXQMniPO8JrIQ+AIJnpjkAWnwisQDjwHcBzZMgVNqSN6LWrDtCkMk0K37I0qb13wGjaFUTVRQHe0yrQSeOLHjFWrYTGTK2UoAofXHulBQTUxs1bBcknb88Qxlo1iKKWgoBq4vlDc8rgiR3DqYMZzIQ0ADwwkXH/coMSxdwOZqISSxnrPt0MOmTAFAJEP35pbZbmBAgIjHDAx7RGd7CNthi1uDQIHSeAg8hwEzqnyEs4ZkKtLXqeP1xG9pu20NNQrvHp9YE03YdoUJc3Z2orJPNu+3oVmepHr+BVMkYyIWGuht1c1bXzn5irOTWSQKzf289O5ykZYQkziMdEbA0cc15DFguqLkAacgBq3OdQb8z02uVtIKCIAJqa3I2wtHgAT04xwwsS0RxSa2CIWeYKoJNy1J6v38XIcBJ6AJzV7snpbQ13wUqelwdzo47W2tDXc69bQKdh0/e5UWtiSVjv8N9uJmCS0JKbrXJxcw4mRJK7NNud+UdYtXHPBMaNd3IoMv5feuMzEtEsEITEviCQjAl4O4e6HYXdvOyRHgJgsICo5u7jM+Kp7YGLaI44PJSHxBLYNmNSGaVGYVr2twRlc0wxnYM2waKh8Qe+lEOK1e0ErVlXlNgNWWkV2QagsFTTwHAnM7kyjnB5L4/piZ8TIfvSf7xSdcLrpBo70xfGkx4FKbrAW0Gp6ROIRk3hEJR6ycHf2Q+DJxm4uvaeopZrOeb2iW6joJqqGvTGUyOgumJj2iIGkgs9dnPZ7GZ6gmnboUre8RDNtiByB0YS4LPs0YOVGAM9SUcOpsTSuhujEfvZgpmOR5axf2mUoE9PbEbJr1w24Djj2yAKHmCwgJvFQRB6yyEGs7fTWd3htSmHb1NnVtWrOTDURXNJqMzwu77qyNo/ugYlpj3jX6RF8+ombUI3u3cLaTFIJnyWTlyQUEblK48+PX8ELEu+OTVWYKjEnR5JbhLTAEZwey6Csm4jJAnIlDTfbaNEYTCqYz6tuLJUBx5OdsRVZIHhxwf82qVYQmhTTUYlHTBZwIB0BIYBWa290hLC1YUunmXrg/KvLuoWy5hxXGOGG/QU9YjQbxcd/7Bg+/pVrfi/FE+KKwMT0LsRkHrkmZjQphS8WYJJLbgA3l0odrfa6yb3tKKfHMrg4tXX4sT8hY7w3hufnCk0HMvXGJSamXcSveYIg8/BgCk/dCf5OUETkEZOdoXhFcCrG2ZiEZETcaJ2oD8Ebpg3dsqEa1kbFuKjVWygsLBc1ZKKtDUz7yUpJY2K6C2B/QQ/5mfNjeOL6Mr7+/KLfS+k4kZAZ73tNRGr++Ukogudi+s5aFceHk67EZz83l8dEbwyTKwErD93D8/PFjf8/PZa+T0gDTuvKUlFDTOJxfiKL55oQ1VGJHXbdJEy7Hl7BeTCTWW+diNZbJwQOUi3siuOcZFcn4GpzsJUN1TBR1i2UVNP1gfi43N7AtB8sFzUc7In5vQxGm7CjuocQQvDrbz+Ob19f7voAlzD6m3pJK8+PI8K87bFbKKhYKKg4NZrC1Zl8W/dVNez/n70zD48jr8/8+6uzq+9uSa37smXZlm9btsPAMMMkzEAykIWEQMgBJLNsyAPLPpAQkt0kJLsbsg/ZhBzk5EpICGEDJIRjISw3A75t+RgfsnXfUt93XftHtWTL1tHdquqq6q7PM/PIklrqn/qoeuv7+37fF8upPHa3WNsWzs3RyBZl9ITduD679d+cKco4MxaFz8XgVH8Yl6fi2/qI220Q0+rEbSaejIalCG7Op7a+DU3g5Rm4OQaukmMUx2gWqWs9y6oKWQVkRUFRUjXv/9IwXdqirRPuKooUZuP0TdcHjpiuMe0BAU8MtuCrdV6dbiSv0Gqo5vExs9of18mhJVWQoSTyGGz1GuaUsVP2tHrBMzRuzidRkMoTvqm8hLNjUbR4ebg4ClPRjX2PCQGWUk6Lh56kClLDDjwTAvQ1eeB3MWBoCjQh8LpopPPymquEKK/2ECvIFSWkChJEWUUsK9quirsdPGNDMe2kINYFjpg2gc6QYPYSDIc2YCK7nmCqENNsqZrtYqi14B2W0aLVGYogmRPLiuQuBx/PoL9F23oUWLrivuCtyBRlTEWz2N/uwwtzW1fQzODKDirwS+kCTvaFNhXTp/rCOGNS+Ey9wTNUqbpKI1OUEW2AGQ2KAP3NHjR7eeSKMu4tpx9pmzrRG8IFG8wmGAFrwx1RpzJdHzhi2gTSTo+fQxVcndZEXl7S/Esf5kRvSDcxLakqRqZ31taxFTlRwd3FNI50BXDFwPsxg2szibVWkQfZ365/LHkjwjMUpFIKa0EqYsVCbQZG0OzlsKvZi7wk495iGneXMpu2SVEEuLNovQvUWmHlIg4hQJOHQ7OXR4uPR4uXR7OPx8m+sNlLc9ABR0ybwEQDRG0rauNtuVZEFQ+PtE2vraRj5Hirjzc8Er4oq7gyncCx7iAuTVnfeaBccqKCo90BXH6owp0pSNU87Q4PUZAUeDka6TpNWmVpgt6wGyEPh1RexM35NJbT5V2E7WvzrRugtSocTeHib70c12cSEGUV0WwR/3ppBl+/tYidnDrMkNJBN6sJ41WR7Lv/72Yvt/a1sJurakfSwR44YtoExuq9lAJAasD+xUqQDbjY2KhaXSk0RXC8J1jTXspLU3FbuHxUAr2BnYKznasfYS+PdDQLliagKQIfz8LnYjSLNZYCRbRUOgBQVRUqAIoQKKqKmVgOsyVrQpYmWoodRcCWnCgYiqx9pCgCmmifU0RzqVj93YQAFAgIpYk4QggAFeQhSae91bU1rCbkrX5c/bekaB/zooTpWE7zMa9iSNdrE4s1F6u16Jze1bT2tVcf6cDkShZ/+/1xfPz58aoGdfU6rPp4RhPDpQryfZHMrRPLTR5eN/tQB3tjj3deHSErakOcVItyfVaN9ELUsYq8ih7pXLKigiIEo4u1HQ5s8fF1JaY3Cp7obXLj5rw1hy7tht+lnbpEWUusy4uFiga5KKIlBGo/Xz/HqrFle+x6JvMSUnkRPhe77us9TW785rNDeOeP7MG3by/hHf94aZ1ApikCF0NBUTWr0GYvD0VV0RUSkMpLWx5XBZZeE8VaiwWHFq+r9HF9RdnlWLs6VIgjpmsMRbRtoXq3c8oV69v6b6cYYY2Y0WlIcLt2Er2hCbCQrC+Hi43anBw/ZP3YqWtDPboT7ol4cafGF8E7YWQ6gRcPNG/4Pb+LxbOHO/DSwRaMLWUQ8fPwu1i4Obq0A3CfvCiDZyjkRBl/8c27eMlA8zphvPpvJxjFwUicV1eNIYTgJ4534SPfHTN7KYail7CrV/SoIj+MXpHj8zVM56MI8KLdzfju6HLN7rMWPPj8doYEdAYFZ/hQRxjauoNmZhH2cGYvoSJ+5f9cwe4WL9799CCO9YQ2vI3fxeJId3DL37NaRXZzDN799F7d1+ngUA6OmDaBNz/WV/diWk8rtXokW9T/8RFlFTxDyvZG3oy5RA4MBRidKxT2cIj4eCRyRdAUqaswk7wo4YnBZtxdzGA6lsNMbGOrvIfpbXIj4uMBAHOJPKbL/LlGo35eKfpht9fKXCKPuUQeP7i3ghftbsKTeyPgGQr723040Vu+w4WiqKAoAlVV8W9XZjEVy+H1J7vR7OXXbqOqKnKilrqYKkjax7yEdEEsfdS+li5o30/kRLhZGgMRL7rDbuSKMpJ5EcmcVPoorvv8dH8TfumJXUjmReRFBQvJPKaiWcwm8kgXJORFGXKpL56mCERZASEEQYHFYKsXJ3rD2N/ue6Tq7mAfiGoj14Xh4WH1/PnzZi9jx0iygn2/+X9rvp1ea+pNIOkJz1CGtHqc7Avh3PjOPWZ7wgImN/FK1oN9bT4spgpr3sARn7YNSxGt0uThaCjQbCTnEnkkdAqNMYIWH4+uoACWoRDLFjG5klm7oDncFUAqL27ZyzrY6kXQzWI6lsNs/P6uAM8Q7G31Y2SmvqwD9aDeHGB2Sm/YjYmoPfqlt2Oo3Y8n97bgyb0RHO8JgqEpqKqKTFFGKq+J37HlDO4spHBlOoEbs0kwtDYU2uThcH4ihqF2PwjBmuBNFyTLn4tO94fxh68/is5g/edQ2AVCyAVVVYfLua1TmTYBhqZwelcY3xtdMXsphuJ3MXWXsKUXBUmxRGobRQC/wIIiQKYgw8sz2NXiwQuzScPu81R/GOfHo+v6VhdTBWCLwdz2AI+OoABCCObieczEzanCsTTBrmYPAgKHoqxgJpbDUqqw6VDxqlf30e4g8qKMm/MpsDTB3jYfBJbG3cXMpkmQBUnFdKw+BJLeGLGzY2faAq66EdM35pK4MZfEn3/zLrw8A5oiZYthL0+v/Q67cWYsip/78Bn869tf/MhgpoP1ccS0Sbxsb6TuxbSXd8T0VvhcrO6pbcUyqt0nekKYiWe1bc2ivG4YVgvBMCZJzsvT2NXirap3eC5RwFzivmANu1n0NHnA0RTuLaexnDZmzWEPi56wGxxNI5YtYmw5jVtVxKBfLlVRWYpAklVcmynvZG+E60s9kMg5YvpBVuo0krrSdsFMwd7OLPeWM/jBvShePtRq9lIcKsQR0yZxrGfroYp6wM059kJb4eFpRHV2gyvHa5qhCeaTtT359jd7kBdl3VIVo1kR0awmUGmibZFenUk8kjpYKb1NbrT4eKiKitlST2c0o1+bhVjhVnOTh0eqUB8VRz1ZydSneKyGkJvVfKkdELdwO1g5sDTBi3Y3bX9DB8vhiGmTCLrtNXldDbzj1bklblb/t1/WgoOfw70hjMwkyqqaV4OsalukLE1woMMHD8+utQEQaOEagBYklC1Ka8mO3WEB7QGtPzFbkDC+ksHEStZSCaUs6wRCbIQoqwgIjFOhBrCrxYsLEzufk6gHYpkiCNEvvKXW7Gvzw+MUoWyJI6ZNYrkBgltYJzp1S3gDkrOSZXgZ1+o8w9IER7qCOF+jE70oq7g+u3mU8vGeINoCHkT8LkiygkuTcUwZOGSpBymbV9qMJOTmHDENWH6wrpao0FrAohl7vm+uziTwu1+4gd96dmhDZ49MQUJBUmxng9gIOGLaJKZsZmNUDfQGKXAO9zHiYiOZF6GFGm9OLZ6VVh8Pr4upmZDein1tPhQkBRcn4+gIupAq2WLZgflkAREfrw1oOqzDwzsVPIGlcWvefsN2RsIxNAB7imkA+Nj3xiHJKn7n1QdAUQSpvIj3f/kmvnBlFooKdAYFfOqtP4SQI6gthVM6NIlGOAA6UnprjLjYUFXAL2x9jWx0Hetghx95ScFdk/s4W308jnUHcXM+tRZVPhvPozMowE6ZH2EPB9ZOC64BHENhwibR2UYy1OFHTnSGVB+kHoYxP/GDCbz3syN4fnQZr/jgd/DJM5NIlnywby2k8KaPnUVKp5AuB31wxLQJTKxk8A9nJs1ehuHYycPcFAzSR9vaKhn4tJzuD+P6XNJUX2gfT+N0fxixnLihF/HN+dSmiWtW5OZ8Cgc6AnA2eu5zoN2PtAEponaCkMZoF6yEgYjHdLtRvfj0+Wm88cNnNrQBHZlO4Bc+fs6xiLQQjpg2gTNj0R27DtiBeg+l2TEGPTyubQY/jQjZ8nI0jnQFcGYsaurwz3BvCFJpIHGrgcfzEzGc6is/Zc1sLk/F0RN2Y7DVa/ZSLIHTJwwc7wnVjbe0XoQbYLB/lXPjMfynT1xAQap/LWEHHDFtAl0NknBUrJMKgVEYJQhc2zhAyDqr3Z6wgICbwxWdbO+qwcvRONajDTvmyrxQPTcRxeHOgMEr04/xlSxuL6Qx3BtCQGjcUIeAwOL6bGOnQrI0wbQjpB/B7NayWvOdO8t4+ycvOX70FsAR0yZwelcT2gMus5dhOAXR2YLaCqMOgNw2g4163u+xniCWUkXTEgkBoD3ggl9gcWmysnhpVQXuLKXR1+Q2aGXGcH4iBkVVcbLPPq0qejLY6kWjX6cf7Q5iwWnxWMdQu9+wwCkr8+83FvDuT19xdmtMxnHzMAGaInjTY334/S/fNHsphpJpgFaWnVAwyHeZ2aa5Nr/BwJJfYODjGQgsDRdHg6Mp0BQBRQhUaFV0UVZQkBTkRRlFSYEoK6AJgcBSyInmPNe9YTdSBanqJMlcUUa2KGt2WjZK60zlJZwbj2Eg4oWiqrjXQBW5Rk9VHe4L4dy4+S45VqORQ8I+f2UWAkvj/a89BMoZrjAFR0ybxE+e6Kp7MW0X+zGz0FuAuhgKPhcLF0tjf5sPHEOBpSlQlBZeoqgqJFlFUVawu8WDTFFGJi8hVZCQzGn/V8pyugg3pw38XZmKl5XAqBd7Il7MJ/M7fp0tpgrYE/EiVZBsN7w0uqhFm5/qC2NkJr7hhVI90RkU1v7mRmRfmw+XLGA3aTUYCrg1v7nHfCPwT+enIHA0fvtVG3tUOxiLI6ZNotnLYyDiresTQyov2TqNymgyOqUVHuzw49ZCCnlJQT5dwNKd2m7/ZosyzoxFEfawONQVwMh0HAXJ2Cd9d4sH0/Fc2f3R23FnMY3jPUFcrLBVxCqcHY+iI+iC38XiZh2Liq6QYGpLkZm0+V2YS+QavsVlI4Y6AhgxcWbDKnz8+XF4eBq/+sw+s5fScDg90ybyigNtZi/BcHy8c722GSmdxLQoq5aoqEYzIs6Nx+BiGZzuD2/rd10tLoZCMi/pJqRXuTgZx1C7H0e6AjAgnNJwZuN53JxP4WRfCEKdbnlPRhunneVBBI4Gz1BO4uMmOAFh9/nQN+7iQ98YNXsZDYejdExkd8Rj9hIMx+tiyoq4bkSKkgKWJjsWwlbzGk3kRJwZiyLi4xEKs5jQObL7SHcQZ8aiuv7OVW7MaWFKbo7GgYgXPEOjIGl91emCiFhGrGkrSzWcG4+h1cej2cuti0v3cDRUwLa2nHtbfbi1UL9V960YjHhNdcuxMgJL4cZs/YegVcIHvnILbo7GW17cb/ZSGgZHTJvIy/ZGzF6C4Xg45yW2FT4XW/Xw3CppnSrcerOYKsDD0djb6sWtBX3amTqDAi5OGt8zmi3Km4oXgaXRHRYQELSWCivOBiyktBjyFh+PpZLrw4FOP+4tZcDSlKmhOtVi1E6H1TndHzbs4rEeGGr344JN27OM5Hf+7QbcHI3Xn+wxeykNQWMenSyCFbbmjYbfxvO40fHyNHa6c21lYZQpypiN59EbFnZcoWZpAq+LwUzc3PdNTpRxu3RxwNIEQ+0+3JizXsV0MVVAd1iAh6ORKcqQFW1g9FCnH1dnrPOaEVgaXp6BwNEQWAocQ4OlCRiKrA1SqQBeaEBv6cFWL846QnpLio7H8qa897NX4WJp/PjRTrOXUvc4YtpEvju6ZPYSDGc7z+NGR9gmrbAcFBVrgsmKpAoSeJZCxMdjsUpvXIYC9rf7LTdkJMoqeMa6/clT0dxaZXMlrT32V2eSONUXxtlxfUSawGli2M3RcDE0eJYCS1GgKayJYUVVISkqipKCgiQjV5SRKcpI5UTkRHlbZ5sjXQGkCtZ8fRsFIdrrq/5LLtUTEBhLXkC2JpEAACAASURBVMhaBVUF3vXpKxBYGk83wIyWmThi2kSuTtd/nxdDOWJ6K/QSYj4Xa1kxDWgV0e6QAL/AVGzB19/sAUsTywnpVe4tW3so7tZCCq1+HnlJAYFW5b0wEcXBDj8WUwXkRBl723ygQKBAhaoCkqKAIgQsRQACKAogKSpEWUZeVJATZWQKElKlQVC9h0EfoQHny4Z7wzin0wVPvTLY6nM8t7dBVlS8/ZOX8OE3DeOlgy1mL6duccS0iYyvWPskrAeO3eXWsLQ+D5CHt251dJWpWA57Il4UxExZ1nmtPh6dIcHydnXJvIiuoIBpi1q2xbMiTj4U9CGrwLXS0BbPEJy3sCDxuRjcmKn/wsOD8AyFWwuN9TdXgxXnFaxIUVbw1k+cx9++5RRO72oyezl1iVM2NJH/9ROH4arznmJnk3Jr9EqrcunQLlIL7iymsbfNv2WhcVezByd6Q4hmi5YX0oC2lcoyBBEfb/ZSNoVs8Ygb7Qm+U/a2+SA2WFTy/nZ/VSFKjUTEx9e1p7re5EUFv/Dxc7hUgwHuRmRbJUcIcRFCzhJCrhBCrhNCfqf09e8QQi6X/p8lhPzLBj/7sgduc5kQkieE/IeHbvOnhJD6TS7ZghYfjx8/Ut+DAbJ1Ow8sgV5JVZyNjJFHphMY7gut+1rYzeJYTxD72ny4t5zBhYmYrQZ0x5azWEwV0Nfkxun+MI50BRB2c2Yvqy5IWXjA1iicDb3t6Wuuf2tZvckUZbzpo2dxvQGHeY2mnDaPAoCnVFVNE0JYAN8lhHxZVdXHV29ACPkMgH99+AdVVf0GgKOl24QBjAL46gM/NwwguLM/wd688lAb/un8lNnLMAxRcSatt0QnvWiH3vSgm0XIzcHnYqACeGpfC6KZImbjeSymCojaoAq9HeMrWYyvZAFoLU4Pt1eYhWLTGNK2gEs3W0W74GIp3JhzxM52rA7UOlRGMi/h5z5yFv/01h/Cnlaf2cupG7Y9A6saq0cztvT/2pGZEOID8BSARyrTD/GTAL6sqmq29HM0gA8AeE8V664bhvvCaPbWbwUrv82UfqMj67R9bXYAmIul0B0WcLDTj+G+EE71h3G8J4i9rV60+ngwlNa7O7acwY3ZJChC8K1bS7g8laja4cPqqKoWoHKqL2zqOtoDLlyasueFSm/YbfYSas5gxGf51hsrIMkKDnT4zV6GLYlminjjh89gzOLD03airAHEkvC9AGAAwIdUVT3zwLdfA+D/qaq63bTEGwD84QOfvx3A51VVndNrq9uOeHkGPheL5fTOgjusil3T1mqFXpX7WhQeWZqgJ+xGyM2BpggKkoJUXsRyuoBETsJUNIcpbD2Ed7Q7iKVUoaG8c8+OR3GqP4yr03HkxNrv1ET8Lswl8jW/Xz2YsehQp5G4TI6CD7lZxLLWb63RfOtzONTpRzwrYirWeK+VaiEEyBQkfObCNH7lmb1mL6cuKEtMq6oqAzhKCAkC+Bwh5KCqqtdK3/5pAB/e6ucJIe0ADgH4SunzDgCvA/DkdvdNCHkrgLcCQE9PfSb5xLL1KaQB7Q3rsDl6Ve6N2MZnaYL97X7wDIWVdBGT0QzuLmUAVF/NmIxmd5z4aEfOjkXh4xmc6A2AQLOrq4UTwVC7D1dsWpVu9fOYbkCBpNduVTUc6w5iZCaB4d4Q7i1lELXBuenqTBIUAU71hXBzPoVkAzh8sDSB38XCL7DwuRjwDPVIO5mHo+F1MfDyDLwuFj6eKRXvGLz+ZDeGTd4xqzcqssZTVTVOCPkmgFcAuEYIaQJwClp1eit+CsDnVFVdvdw9Bq3KPVqqSrsJIaOqqg5scJ9/DeCvAWB4eLju9r4Kkoy4DaoA1WLldD4rsF1YRbnomQJGEeB4TwhT0azu3s6dQVdDimlAC6+5MKGd8FwshVP9YUMr9ARA2sZBJ10hNxaS9dkCtBVJk46ZQ+0+XJtNQFZUnJ+IQeBonOoP49Kk9YeBFRU4Ox6Dj6dxqi+Ei5NxSHXgAPPEYAuOdAUw1OHHQMQLv4uFz8XCxVLrhtclWcHdpQy8Lk0sezgGtNm9fw3GtmKaENICQCwJaQHAjwD4X6Vvvw7AF1RV3W4P8acB/PrqJ6qqfhHAWhwPISS9kZBuBM7cq+/tbkXVWlnSToV6QzI6iZ2CTu0DvU3utZOpHvSEBYTdPERFQVFWEBA4DPeF8MJs0tIhM0aTFxWcHYsi6GYNu5getsjwo0NlzJnQ2rK7xYPxlew60Zwryjg7FkWrn0dHUMAlGwwIpwoyzo7H0BkU0OTlLBv0VC4LyTxGZoDjvSEMRDYfFmRoCnvbnGFCMymnMt0O4G9LfdMUgE+rqvqF0vfeAOD3H7xxyaHjl1RVfa70eR+AbgDf0mnNdcVkNGv2EgzH53LE9Gak8voIKT0q3Ie7AhhdSCGrkzBfrbxORu+LgzslZwaBpXWNtLYrBYMGdP0CY3sP3ukGODZuhF67VeXSUdot2my+ZSFZwEKygMFWLxRFxeiS9YfWZuI5zMRzGGr3I1uU1hx27MbN+RS6QgJ+yAlasTzbimlVVUegtWVs9L0nN/jaeQDPPfD5OIAtzZRVVfVut4565URvaPsb2Ry3yQM1VkaUVXA0QXGH26jpHfYJGtFyEN+i37IoK5htwOGyB2nx8Vgqw8nELzDoC3vWvMTjuSLGlzOQtrjmGWz1WTrVcDsOdQZwdcbeVcVqCXm4mg2khz0cFBVlDRzeLl0IH+8JYiqaw5INrOluzGm+CMO9IdxbTiOasV/b4fXZJLJF2TbBXI2KEyduMrtaPGAoUhf9XZshOAeBLfG5WKzssI84ma/u5zmGwsEOvyG9u1u1L6iqipCHRUdIQEGUUZAUuFgaDEVAUVpe32wih6lo/QruyCZimqUJBlt98PAMVtIF3F3KYOQhYcnSBLtb3Ah7OKiqZnU1n8ihK+yGwNK2FtKA1gPaqNTK3cnL0fC7mIqrthcn4+AZCqf7w7gyFUd+q6s6i3B+IgY3q6350lQcRQusmWMoDLZ6MbqYRn6L3cC5RB4/9Vffxwd+8jCO9dR/8c2uOGLaZHiGRnvQVdeiwU7pfGbg4Wms7HDnVFIAgaORq6APOexh0eThDYvsbgu4NvWQVlRtCn8rKKJVlCaj2br0on7whL67xYMmL49MQcKdxTSuz2792IiyirtLq+4q97ldBwEnAxEvXrB5i8pO8LuMPy2zNEFX2F11K1BBUnBmLIpmL4cDTW5cmLB+P3VW1Nbc6uPRETK3B5wiwGff9hgOdgaQF2V8/eYi/upbd3Flkx7v0cU0XvPnz2Oo3Y9jPUF0BAU0ezn4XSx4lkLE50K6ICHk5pDMi1hJF5AtyihKCtIFCcmcCJ6lwdIEqqq5bCXzEpbTBfgFFr/3mkM1fgTqD0dMWwCWrm+xaYd0PjPRq3Lv45myxXR/s2dNuBnFTv8uRdUqSjxD4XBn4JHqrJ1p9nIIezgc7wlidDG9oTBuVAS2sY8XRm/nMxQw1O7fVLhVwnK6iOV0EbtLO6x2SKtcSBWwkCpgb6sX8ZxoimOMogI/+5EzeNsTuxF0s2jx8fjUW1+Ef7k8gw9+7fama7oxl1xrXamWXS0etAdc6AgIeNHuJrxsb2RHv89BwxHTFmC5DqtuD1Ktlj7U6Yeb016iOVG2/WT2Zuh18vTyTFkV3CPdAdyaSxm+PVt46Pcf7Q4ini1WvK1ckBRcn0viRG/QFhWwzWj2ctjV7EUiJ+LWQgrL6cYevtwIZygVhrb8Bd0sWn0uXYT0g6xeCB7tDmI+kcO8DSwNby2kEXKzGGz1mrKjE8+KeP+Xb6593h5w4eNvOYVv/erL8JmL0/jDr97ecfufm6Oxv92PnrAbe1q9eGpfBPvanNRII3DEtAWoRXqdmVQa8ufjaXSG3I+0ARzs8OPOYsrQqF2BpRAQWBQlBdEa+X8z9Ho/UIpoB0EXS8PF0OAYChxDgaEIWIYCRQhoAoBovcUqtB7k0W2qzAxFcLw3VLP0waXUw46ZatVCQVZUXJiI40RvENPRHBZscgHa4uPR3+RGPCfi9kLaEdBbMNjqxYUJ5/GZ2GnP1yb0hAUUZRW3Foxrobk8FQdLE5zqD+P6TMLy9pexrIiCKKMzKJietjmXyON9n7+Of3zrD+FnTvfiyb0R/OLHz1XcikMR4NnDHXhsdxMeH2xBZ1AwaMUOD+KIaQsw0Oq1hYdntWyVzsdSBH3NHgTdLFQAULUI8o22sq7NJjHU7sdsIqeLN2+Th0NH0AU3x6AoK1hMFjATzyEnakKtKySgIyDg3HgUG/0FbpaCi2XAsxT4kuBlaU300qX/CQgIwdrfJqsqFEWFpCiQFBVFSYGbZRDx8ciLMnKiDFFWkS7IugZudARdEFi6pjHeM/H8uj5uVQWmYzl0hYSqk+1WK9MDES/CHg6ACkUBRFnB7YWUKXHdDxPx8ehr9iCWLeLOQrosx45Gp7/ZjeVUERbPBqkJy+kiBiIejC7qJ6qPdQdweyFdE3EryirOjkURcrMY6vDj/Hhsw+OnVciKCvZ4OdPFNABcn72/Y9AZFPDZX34Mf/b1UXz8+fFNrQsf5B1PDeDnXtSLiM9l5DIdNsAR0xbgdH9TXYvpjdL5Dnb6wVIUbs6nKurbvTGXhIulcLIvBFnRKp0FUUG2KGEhmd/SYq61JHLSBQmz8RxWMsUtt9GmYzlMx3JoD7jA0hSKkoKcKCNfcp/Iigqy4s6n7pu9vKEDdkPtfkxFM5iNb5etpD/dIWFtC3W1At8ZrF5Mr7JRFb7Fx6MzxG5boTeKXc0eMDTB7YV0XQ5MGsVQux8TKxnLVzFrSZOHxyh2LqYjPh5tARcuTdW+RS6WFXFuPIa+Jjc8PI3rs9YdKr0yndjRRb5evHiged3nbo7Be16xD+94ag/OT0QxvpxZa5+bT+TBMhT2tfng5Rn0N3vQ3+xZl4zoUDscMW0BfuZ0D/7623dRr+54BUnGYKsXPp4BCMHdpTSubePksBV5Udk02S3i49Hi4+HmaBAQqFChQrPaGplOVNUeMJcwVoSqBvb5DPeFcHEiZtprKyCwa/8WS+05Z8aiON0fxhmdq+RLqQLi2SL6mtymhDSkC5IjoivkeE8QI9PxLT2zG5Gb86kd+c/TBBjuC2NkJoFFk2dNVt+Lh7sCWEkXLVEB3ogOHS7yd8obTvVs+HWBo/H4nhY8vqelxityKBdHTFuA7rAbfc0e3KvTaf5cUV6Xgmcki6mC7QSNEQNHmq2ctYa5RmYSONYdxKWpOM6MRTHcG9ItthwATveHMb6cwYpJYRItPmN3GOoJQoCTffoHBdULiZxY9TDmgQ4/EjlR94vVnTIynQBDEZzqC+OFuQRSOrax6UHW5JTe3iY3nhh0xLJdaWwPIgvRG3abvQTD0LP3tx4RdQ6o8HA0hjr8lhDSD/cLX59L4nBnAAAwMh3Hid4QXA9Zobk5uiJbvTa/Cyf7QjgzFtV2HkzY5mzx8Ujm7JeuZgZenjEsKKiemIxmQVfwUh5s9eJwZwDXZ5OmV1g3Q1JUnB2PghBtSJGyUEfC7YUU2EoecB2hKYLnHt9lyn076INTmbYIaZOvio0k5YiMLXnYQm4ntAdcYGiyozYaPZmOZdERcGG21CpTlBSslGLGi7KKCxMx8AzBULsfDE3WbQN7eRrNHh5ungEh66v3sgLkRRnJvIT5ZB7zyfutOHsiXsOCaDYi4uMBAFMWFTBWYl+bD/FscdvAHgdgPpnHcF9o2zTLw50BFGQFt2wUdJPMSzg7FkV3SEDQzVri9VCUVRzo8G8bmKQnFAE8HIOPvuUkTvaFa3a/DvrjiGkLoKpqXSSXbYaoqBBYGjnRqVBvRCWphVuxr82HuUQOiVxtL8xYmqDFxyMocHDzNGhCIMkqMkUJM/EcdjV71sQ0AMzEcuhv9mBsWWtrKkjqhu4tmqNJ5b3PtXbP6G/2WG5L3WqwNMGxntrZMtYLd0peyLGH3ItavDz6WzyYjedsHWY0FcvB52JBEVhiZkivAK1yCbk5PP/rT4Fnanu/DvrjiGkLICkqMnVcmQYAn4txxPQmZHbYBuN3MdjX5sOFiVjNrMW6QwIEjkY0oyWgzcbzm7qFfPfuCk73a/2fq7OWRm6nTsVyNa0wWUADWJr+ZjcUBY6QroJETsSR7gBi2QR6mwS0+gSkCxJemE9iyaTZAD3pb3ZjYiVjCSENADfnkmBpArFGB9KcKCOdlxCTRUysZHB6V1NN7tdBfxwxbQFYmsJwXwjXH6gwPPJW3uC9/fCXNnKFYBgKbpaG18Ui5GYBEMSzRdxbzkCu4RHMwzOAM5y1Ial8dW0wq9W+G7MJnN1mK1hvpuM57G7xYjldnjXgmbEoDncFcGchjZwo4/ZCGgc7/Ya1o3i42h3a7iykTHMQsTKrQ4YXJ6KOW0cV8AzB3jbNQvRUXwhnx2OYWKmfVqI2vwuJnGQpS8R0UcbR7iAuT9WmTWwg4sWNuSTe+5mrmInn8He/cAovdYYQbQkx0pZLb4aHh9Xz58+bvQxDuDmfxCs++J2a3Z/PxWBvqw+LqQImo8aLgKF2H27M2aenTy8IwVqKIUUAQsj6j6VQF46moEIbRHkw9IUiBDQFUISAEO22BADPULizkDY1CTDoZuFzMZiqwKllIOLFUqqARE40xB5vlZCbRUGUka1RiIuLpTDU7q9pr7aV2dXiAU0R3Knj9jUjiPh49Da5kRcV3FpIoVi6CmkPuLCcLtSsYmo0AYGFj2cwbUGbvIGI1zSv+s6ggO+99ylT7tvhUQghF1RVHS7ntk5l2iIMRnxaUl6NjpWpvLRmS3akO4BkTlrrYTUCzqI9YVp0NwMXS4Ffje6mKbA0AUMTMBSlCdg1hwgVqgotxVBVIckqJFmBKKsQZQVFSYEoKyhICvKiDFnVtvK2a3Fp9nJlV3kB4ERPyPRI7XhWBEUIOoMuzJQZCDO6mEZXUICLpVCQjKtIxbLGivWHyYsKLk7GcaQrgKloDtHszsN87Eizl0NvkwcXdLQ8rHcGIl40eTgspvIYW85uaK84l8jX9PVsJC6WQsTHVxTWVUtGF9MYavdvOMdhNL/57P6a36eDPjhi2iJQFEHIzSG6RSKfUVwppWMd7gogmRMN2a7eaY+swNKa4GVpuEqx3SxNlQSvVsFdrfhq0d0qlFJ896rYlRQFBbEkdCUZuYIMUVGRLkjYrP2wOyxUVHmtFi/HYBnlP/e0RUwto5kiTveHyxbTgNYi0urjDfHXfpCLkzG0+viqLzoItBM/werrSN22J/3KdALHe4KITjaWmPbxDIY6/Lg0GXOEdBkMtfvh5mjcW05jdDGN0TJ+5vJUDBGbe5lTRCscWX1oMpkTwTOUrk5L5fCFkTm84mB7Te/TQR8cMW0hGJNNN0dKSVlHu4KQFAU35pK6DYZQZXr/DveGsJwuoCDJpZhwGflSjLdW3a2tzZ67Rr23Lq7Cyr2FImOrEcULqQLCHtbQ3RhRVtEVdlcspo91BxHLahZ9uQ3aRLRdC62tYy6RWzd4uavFgzsLjdPO5GIpHOkK4sZcsi6qpkbCUMCR7iCimWJVVc+CpKIjKNhaTB/v0TeoySim47m1PvVacn48BlVVt40EvzmfxK9/9iq6Q26895X70BEUarRCh81wxLRFyBVlpPLWcPS4PK31fTZ5OOxu8aAgKRhbziCp0/p4hoLA0Wu9xDxzv8q8lCpgogY93OXiYmpTAuYrvB/rSGnN77kaXphP41S/sSl4Fydj6A4JZXlAsxTBke7gtid7raVHxoWJGCgCnOgNQpJV8AxtyWQ3I2BpgmPdIYwuphwRvQ0+F4Ohdj/uLqVxYWJnPfWXp+I190LWC7u1qZwdj+FQZwBXa1RFF1gav/yy3dsK6efvLuONf3MGAHBpMo5v3FrEPzx3Goe7goasK5ETwVBEMxFw2BTn0bEIPEMhb2APaTWsZIpYeaDtpK/JjYiPh6wAINDSuQgBgVZdVKBCUVTIigpJud9DXJAU3F5Iwc1SyJbaLLTtM+uHuTA16qdgK7wfq1hJAVqiXbVcnoxV3C9eLhxD4Vh3ELcXUuht0hJGV6vgKlSU/it9rl3QVlo1U1SsCaQ9EW/dC2mBo3GoM4DRxbQlEjatTGfQhY6ggKszCV1FZCKriRuj26T0ZLiUUGo37iyksLfNV5NAnJ8+1YOff1Hflre5NBnDc3+73oQhlZfw5o+dw++/9hCePtCm65qyRQm/+283nF7uMnDEtEUQFUULu7Cwu8r4Srbh7L9q1XpDV3g/ioVOpGfGohho8WB0qfIB1qKsliz29D3RDrX7Ec8V107gD4deGEEtrSZrjd/FYH9pKMvxi96afW0+8AyFkZlERbME5TIdzxm+o6MnR7oCuFDjdgm9yEsKplYyGGz1Ghqs5mIp/OcfHtjyNt++vYR3fuoSshtYCUYzRfzyP1zE3/3iKTy2u1mXNUmygt/5/A2884f3IOjmdPmd9Ywjpi3CQqJgq0qDg7m4eQpHu4OgCQFF3bfYU4F1OwWrziOyen/H4GH3kWLJfaQoKSBES1fzCyzmE/myYu53esFxZyFlQFCCummIjFGsZIo41RfCahPOuuejdJuNHqntvqf9vAoCsvb5RreTZEV3a74mD4eBiBcj03FbVhZrBUMBh7uCSORE3KxBFfPadHzDZESrMdjqxQtzSVsHG2VFBTOxHA53BdbmivTmva/Yt6Vg/fB37uH3v3xzS40gKSre9NGz+NibT+Ele3YuqL94dQ6vG+5CpmiN9lOr44hpi/Cla3NmL8FhA5Qa7RRUej9LqaIxJ20VWEwVsJgqwMvT2wYYDLZ6kS5IVVWlV4lmRRzvCeoqBM2wYkzkxJoPLD1If7Nbt9/VFnChOyTg8qQjoreixctjV4sHtxdSNfUYz4oKDnQGcM7CFd/usIC5RB7FOvDGzhRljEwncLDDDxDoGjZFUwQhD4ef+svv4w2nuuFzsXjJQDMEjkYiJ+J/f/UW/uncVFnFNlFW8bMfOYNTfWH8lx/Zg8cGqhPVz48uw+9i8fHnxzHU4Ue2KKGvyYMmL1/V72sEHDFtEZ450Ibf//JNs5fh8BC12rqvdFfCKMumB1eRLsi4PBXHyb4QRqYTj9znqf4wzo1Fdak66X3NQmxdC6sOPR7DnrAbLV4OFyfjmE/UtrJvJ/a3+cCzNK7OJLA0Zo67xvnxmGWTN5u9HAqiYpmher24Vhr87AkLaPMLALm/U6SoKhZTBUxU+HzIiop3fuoyAOD8RBSvPd6F2wsp5Ioy/v7MBOJV7D6cHY/iZz5yBm96UR/e/tQAmisQwVem4phN5HFrPokmD4cjXUH89y+8gP/5moMIe7htByQbFUdMW4T+Zg/6mz2GBqc4VE6xRj6jld5PXqzdSerceAzdYQEUIZhYyYIpuV7o2bM5l9DZy7sBD/g70dIDES88HI0r04kNE1HdLIUmLw+OocBQFGhKEwE5UUa6ICOeLVpqKFZvWIqgv8WDoJvDQjKPF2rQyrEdKgAPb70wLC/PwMszlhT5ejEZzWFyg/wBH0+jI+DCbJUXoooK/POF6Z0uD4B2cf3x58dRkBS8/7WHSl9T8aWr81Ch4of3tUJ4wJJ1YiWDazNJXJ6KwcMzWEoV8Nzju/BrnxnBbz47hIuTcRzoCOiytnrEEdMW4tnD7fjTr5dj3+9QK2rlsFKpvVxmgyEUI6EJgSgrONYdREFSdA/mWEoVdPWcbjwpXd1jN9TuByEqrs/eF4cRH4/OkACOphDPiVhI5hHPishuYS/I0gR9IXepcgUkcxImVtLIS+YqbL/AwMPRUBRt92c1xEkqhThtdA3rczEICCyavTx4hkI0U8T4SsbQAbRquT6bwuHOgKVCUAYi3i1bw+qZVEHGYJu/ajFtBJ+9OI3usIAfPdiOgMDinZ+6BElR0RkU8NuvGsLx3hD+8cwk/uJbd5EtynBzNA53BfD+1x7G2z95Ee979QF84Cu38KE3Ht/0Pr55axH/enkW73/tIbhY613g1QKiWtg94mGGh4fV8+fPb39Dm3JjNokf/ZPvmL0MhwdoD7gwV4MDY6X3QxNsm8anFwc7/Li7nEGuKIOhgL1txvjchj0sohl9BqpO9ARxoYY9rFagJ+zesKq8EUe6AsgWZdxZTMMvMNjd7AVFEUxGs1jSIRRkuDeECxMxdAQFRHw8WIZCpiBhNp7TbWiOIkCr34UmDweBo0ERgrwoI5YVEc8WkSpIaxcYx3qCuLTJ64GmtBRVhiLIS4rtXFm6ggLmk3nLDLAP99ojmMUIOJqg2ctbSkxXQ4uPh5uj8XuvOYT//oUbuDmfgpdn8LYnd+MXXty/rqJ9cTKGN/7ND/DWl+7Gu14+CABlBc/YAULIBVVVh8u6rSOmrUMiK+LI737V7GU4PICPp2viHezlmbKcMwDUNOY26GYhSsq6SriLpeBmGUSz+npDt3h5LG2W614hBzp866qtjYCbo3Gwww9ZBW7PJx953VIEONodRCxTBMfQCLpZrGSKuLuU1rVnfTsx1ezl0B4Q1k7IuaIEWdF6TlVVi25XVRWKqr3WXQwNliGgCIGiqsgVZUSzRSwkC2UL366QgOkygnvsysm+kGWGEQkB+ps8uNeALYt2siwsBxdLIf9QCmx7wIVfeXovXnOsE/eWM/jJv3weP7K/FR/4ycMghODmfBK//PcX8Rc/ewJ723wmrVwfKhHTTpuHhZBtdGHTKKQKsqGR16ukC9I6C7WtcHN0zcR0yM090sefFxUc6fLq7vKQKmxdsSQAepvcaPLyYCit7SRdkJAXZeTFUuR8UYakqA251ZgtymtuIi8dbMaVqTgSOQksTXC8JwSOoZDKS1hKF8u+cKuUcqqSy+miISE9m+FiKMzE61dIA8DdpYwB9pLVoapaYFKj0dfk1r39zWweFtIAMJfI493/5wo++r0xRc8VngAAIABJREFUxLMiDnUG8P7XHgIhBFPRLH7+I2fx9IFWDLZ6TVixeThi2kJ8cWTW7CU4bMDeVh+0gEICimieziBaBYYqbWWtbmhpn2qpkKu7XOtvsd5/GLj/75vzSSRy24scgaOxp9WHm/NJJMu4/U7YLOZ8fCUDliIQddxaHmr3r7MXa/Hy6AwK4FgKyZyIiVJoUHmDTfbfYqyUgYgX4dLFz7dvLwPQLj5oQmpib2fV7f2OoFD3VdJopmip6vTN+RSOdgVxeboxWq1YioCiiO1ahHbCaqvfYKsXs/EcvDyDN330LA51BvC+Vx2oizaPSnDEtIW4uwOvXgfjqEUIA6BtRZcjpl0MjbNjUXAMheG+EJZTBcMm5/0udsOvLyQLOz55+3gabQHXWiS9i6Fwuj+MvChjOpbDUrqgW9tHvdLf7EGLj8fkSgaji48OyFVq01UtJywqpAFtCLERmFzJgraQoGPoxhBTDAXsa/fjqoWGQGvJN24t4Xt/+G20BniE3Rz+9I3HwNCNtzPRGEcZm9DbpF/ogoP9EMpsTeBZ7UBVlBScL4nZfW0+uFgaV6biujosb9V6dG48hhO9IYwtZcrun+4MCugMCmAogvFoBncW719A3t7xau9Tz6fxnrAb7QEXpmM5jC1nTLfTPFEaNrQqHN0YLT8LqYKldgcWdRhkNZODnX54OAairIAiWuUZqgpR0Xr7aULA0AT3ljMNK6RXKcoKpqI5JHMSPvH9Cbzpsb6Ga7VzxLSF6AwKZi/BQQcoAnh4BhTRfEPV0mDV6lDV6qAVRQHdYTdCbg6qirJjW1nq0av+1ep5xMejr9lTdQvIcG8IFCFI5ERMrGSwmNx6Kv3CRAxujsbp/jBGpuPIbdBjB2gDUnOJPKZjORACxLOiYX27QP3ZTPt4Bvs7/FhI5DARzZbt2mE0VhfSAOr7yuoh5hK5teOOmfhcjGVeo9VgpZYZO5HIiXj/l28iU5Dwrqf3rvveJ89M4tu3lzCbyCFXlPHMgTb8x5fuQkDYePfTbjhi2kK0BVxmL8GhBEUAv8DCwzEQOBoulgJHU6ApzVVALYliUVZQkBTkRRnZooxUQUKuKJeX/KUAo4sZAFplcVezp6y1bbV9uhoFXk0LSNjNYWQmsRYgQwgwVYYDQrYo48xYFDxD4Uh3EDQBskUJPEuDp2nMxHPrTkzNXs5wZ4UHHyEriItqafZy2N3ixdXpuOVcAo73BK0vpAEodn3yq2AmnseJ3iAuTJjbq9zf7MHItD2rtaf6wjg7bq33mt3402+M4otX56Cqmr/7q4604/NXZjH1QNDNncVR/N33x/GfntiNNz/WBw9vbzlq79XXGRGfy1I9b3aHfkgQ8wwFjilfEMezYlVRrtWSKzO4haK2L7U92AIy1O6DrKi4tU3oxJ7W9Q4dlTqYFCQFV7YJa2Apgmsz+ntUP8zl6QQ4hkJRUnCgI2C7bdjOkIB2vwuXp2I1GR6slOM9wXXDolamVimmVmE+UTDsArIrJCBTkOBiKYQ9PDwcDYAgJ0qIZkTMJ/OQFbXsljWrEXSzSORqd8yvV1R1/QzYh75xd8PbJfMSPvCVWxhdTOOPXn+0VsszBEdMW4i2gAuvPtKBz12aMXsptodAq46EPTwkRcGt+VTNUwMrJVtmm0cZWnodN+a0FpBj3UHcmk8iu0ErRsTH16SS1NvsLlXjjeVBAaXq2kVuLAMRL7w8g8tTccxY1Bf5+BYBKFYkV6MUU6swE88Z0n4T9nAQJWUtdGcu8WhPNEU0H+Kb88ZfMBvBagHlWHcQc4k85rdpc3OonoDA4kRvCCd6Q3j1kY61rydyIi5OxDAQ8aI7bJ85MkdMW4ynh1odMa0DKoDRpQxQujoeiHgwF89bWlCny2kNAVBtE+ilqfiG0cMcTeDlmZoMDAUFDqttLbXCDvbtBzr8UFXgxpy1RciqkLbBQ7pGpuz3Vf0wn8jrWp0WOBpBgd3WYlBRUZPEWKO5NBUHSxOc7g/j6kwCWQufN+xCf7NnTTwP94awu0VLXc0VZXzr9iL+5jv3cHYsilsLKagq8OojHfjjNxy1jcWeI6YtxqDNE4OsyuhiBntbfZiMZstup6glFaUa7uAEOTKTwJHuAK5M3RfUBzsDNduyr7SqrgdWFtP72nwoSooh8ex6c8zCQpomgNfFwM3RcLEMvDwNnqVBE2Lb3t2doGd1mqYIdrd4atKeZSVEWcWZsSjCbhZD7X5cmIxZ+lhiNfa2+vCSPc041R/Gid4Qmr08ACBXlHFpKoYvXZ3HufEozk9E18JhfC4GTwy24If3RfAzp3tBCLFNNLkjpi1GV0izDZOcvmndubWQwlC7H3eX0jVLECwXD19+quFO2xbmE3lwNEFRVnG6P1zTnlwzEtoUC54BhVL0t10cA451B3HZJCF9rCcIlqIgKyokRXlgxkFLvUwXJBQlBYmcVPJpt7clm17oVZ0+3hO0zevUCKJZEdGJGPqa3HBz9FrbnMPGDPeG8EevP7rWohHPFnFuPIZz41GcG4/i2kxi7TzQE3bjRw+240RfCMO9YeyJeDEZzeLseBTv+cwIzo1H8eKBZvzeaw6Z+SeVhSOmLQbP0HjmQBu+eHXO7KXUJTfmktjd4kEyL2HJQj6oAscAmfIGX3Z6obWQLOBUXwikRsl4D7JdZLgRWE1KH+jwYzlVsI1AOdYdxJVpEyvSKhx3hSqYiefwxGALzo1Hq25T6Gty2+Z1ajSrrkiHuwJYThcwG7d/O4sRzMZz+PNvjiJblHFtJvFIGN0rD7bhVUc6MFyqVt+cT+HceBR/8vU7ODcWfaTd8FCnPQZCHTFtQYY6/I6YNpC7SxmE3RxCbnZtmMZsKpl+l+SdV9UvTcbR4ud3/HsqJZouL9xFT1SLVKY9HI397X7LhGqUw4meEC5NxUy1FhyZjiPsYREt82LT4T6ji2kILFV1m0LE5zIsXdWujEwnwFCahd4Lc0mkDPTLtyOziTz+8ezUht9r87vw4oFmjC1n8M8XpnF+PIrkNjMNLx9qNWKZutN4mY82YE/Ea/YS6p5otogWHw/WIpG3PFP+W1HUQUyLigoPx4Cr4H71IJoVa/6YW6Fj6lBnAG6OsZWQPt0fxoVJc4U0AMgqsCfizJJUw0w8h86QG+cnYuhr8mB/e/mPI0WwYUS9AyAp2m4JRWkBL7QZwyA2ZD6Zx3/7l2v4wFdu4es3F7cV0jRF8ORgpEar2xmOmLYgg63OiaMW3F5I42BnwOxlAABYuvy3YkHSR93cWUxjX6sPLra2h4GQm6vp/ZlZmfbxDE70BnF1JoGltHXairbjVF9te+m3Y2w5Y8rwaj2wOrs1tpzBC3MpHOkKoKOMgLChDj+i2drvJNmJRE7CufEYOoIuHOz0m72cumO4N4SA2x4JiY6YtiDdYXdFlUqH6rk0Gcfp/rDZywBTgVLI6+hGMjKTQJvfVdfpm2ZVVve1+cAxlOlpdJVyojdkuR7lxVQBhyxy4Ws3rs8kEXpAkFyZTmAxlcfp/nApdGVjuAou8BudqWgO12aSONjpR4+NvJGtjl1aPABHTFsSmiIYcFo9aka5YSlGUknVTU8xDWiDNZmChIMdtamslBW1riNmuHmc6A1hdDGFlYy9Knsn+/QP+9ALx+GoOiRFfWS3U1KAM2NRsAyFk32hR44/Akfj+mzjWQrulGszSUzHsjjZF0JAsEdF1cr88H5HTDvsEKfVo3bwjPnRt5X4aKYNGHhJ5SVcm00aXqUPu9ma+3zXWkyf7g/jwkQMFnNf3JaBiBeXJq0ppAHg+mwSnSHB7GXYktnExmma8ayIc+MxNHt5HO8J4lRfCLuaPTjQ7tetnazRUFTg3HgMsqLgdH+4ol1Hh/vsbvGgv9lj9jLKxnHzsCh7Wp3KdK2QLeD2UO4SWJoY6tV8ZiyKw10BzCfyhiQitvhciNbYQaVWBU2WJjjUGbBUr3G5+FwMUjnR8hcAnQHBsjHrVmYqmsOeVi/uLGw8ULiYKqx7v2+XdOiwPemCjDNjUXSHBCxnisg5KYoV8SM2qkoDTmXasgw60+s1IezhcNUCCWnlBrF4eOOvf0emE4hlizjRG6po+r8cClLtTyhqDdS0z8Vgd4u3ZkmSetPf7MGChXzXN+PGXKLmA7P1QsDltB2YQcTvcoR0hRACPHOwzexlVIRzVLIoTptHbdgT8VqiF7PcNbi3GBjSE1FWcWEihhfmUmj18TjdH0ZHcOdDirPxXM1tpIx+egkBOoMCbs7bMxntdH/YNpHb6YJsGQceu3F9LgmXM9heU1ZbvhzKg6YIDnb68bE3n8TxnpDZy6kIp83DonSFBLhYai2z3kF/aAv5qJYbxOKqINxFLxZShbWq5WCrF36Bxc25VFW920VZRV+Tu6ZBEEb3TFvNRq4SBlu9OGcx547tMCP4px7IFWWc6LXugGm9cbIvZNvjwsPwDAVZUXUvPAUEFid6QzjRG8LxnhCOdGt+/HbEnqtuAKiSo8e1maTZS6lbDncHccki2/LFMptVza4s3S71XLI0wbGeICRZxfXZREXV31oHxRgppu0oRlcJCCxiGdH0UJZKubec2bL/12Fz0jV20mlUjnYHbRXQtBUdARf+/V1PIJET8XtfegFfGKk+nXkg4sWJnpJ47tWGXak6GdB0xLSFGYz4HDFtIFkL9bEVyhTTlYS7GIkoq2sXImEPh4EWL6KZAkaXth9cqhdrPC/PIJG1nxhdpTss2Pb44ued/t9quLWQQldIwLQzxGkY+9p8uD6bqDi63aosZ4r4/JVZvH64G3/2xuN44+ll/Pa/XsedMnZ1X7SrCcN9mnA+1h1EsMaBXbXEEdMWZo/TN20Y/c0e3LJQj2u53tGMRcT0g0QzRZzNaNXZEz0hMDTBXCIHF0sjKHAQFQVz8Tzmk3lwNMF8Ml/T9emQvr4heyJeXJqyxs5GpZzut29rCgCMTMcREFgkcrV1hqkHOoKOmDaK3rAb07GcoY5LtaYoKfj1z17Fp89P4bdfdQCP7W7Gl975OD7y3TH88dfubGl1+muv3Iej3cGK7k9VVSgqbBfR7ohpCzPo2OMZRpOXw5iF7J+yZYppqx9f4rki7paq0yE3u9YWsvp5d9gNgaWRKUqYWMnWpEptRGX6WHfQtkJ6f7sPZ20spAFAVFTsa/PZ+oLALEYXU6CIecmg9UrExyNTlAzJAbAClybj+A8f+h5ee6wTv/bKffilJ3bj2cPteN/nb+BrLyxs+DOfuzi9rZguSgquzSZwfjyKs2MxXJiI4jd+dD9eN9xtxJ9hGI6YtjCOo4cx+FyMJezwHiRTpqikKgh3MYMHlxd7yE86lhURy65/3DuDLrT6XWAoCvFcEeMr2bL7x8tF0Vk1MFTtq+t6EfawWEgWyjRitDYTKxkQUr5Hu4NGNCPiSFcAVyx2DNQbD0fjYGcAS6mC4b7ZPhcDnqUwFa3/iv9nL83g/16fxy8/uRvPPb4LH37TMP79xgLe9/nrmImv//s/f2UW//XHhtbNyaQLEi5OxDTxPB7F5ak48qKCzqCA4b4Q3vXyQZzsMzY8zAgcMW1hOoMCBJaueWJcvbO31Wep4RCOocoWkOX6UZtGhcubiecxE78vTGmiJV+FPRwUFVhKFTAZ3Znzh94VuOM9IZy14dAhIUCbX8CNOXv2ST/MfLKAw10B29j6WYl6vwB5bHcTPvj6o4j4XZAVFV8YmcUHv3YHk9EsZJ0PCBxN0B5wrduFexi/iwFFEYTc1toRrZZsUcYffPU2PnVuCr/xo/vxyoNtePFAE/7k/43iw9+5t+b6EcuK+NylafhdLM6OR3FuPIobs0kQQnCgw48TvSH83A/14URvCG2BnVuvmglRbfSuGh4eVs+fP2/2MmrKq//su87JQmdO9YUtJYZCbvaRKu5mnOwL4dy4dS4EHmYg4tXdbtDD0eht8sDnYpCXZMzEcliuwB5Nz9RIlibw8kzZz5eVsHuf9EYc6vTjqk2HKM2EIkDIzWElU582gy6Wwpsf68c7nhpYC7qSFRWKqmJsOYNf+sQFXarVBMChDS7ojnYHcawniFN9YZzsD6PZywMAknkRL//Db2Ehaf2ApEo43R/Gb71qCAc6Ari9kMK/31jAP1+YXrtw8LkYHO8JYbg3hBN9IRztDtrCAo8QckFV1eGybuuIaWvz7k9fwWcuTpu9jLpif7sPL8xZZ/iwI+DCbKK8toFjPdax89uIPRFvWVPeO6XZy6EzKMDF0kgXJIwvZ5DZxJ2Fpohu1agj3QFcmbLfxe2BDj+uz9an6GwLuDBf5vvH4T4v3dOMvKggmtHaIOqxhzri4/ErT+/Fa453rnNCyhVl/Nd/uYrPXpzZ0e8f7g2t2+UMuVn89c8Pb9mm8LUbC3ju7+pPxxACvOFkN9736gPgGRoFScbXbixid8SDwYjPlhZ4lYhp618aNDh7nCFE3VmyWGxyJUEsem9R6k6NjpfL6eIj1emesBstPh400RxGxleykBRV18fM6j3rG9Hs5R7pZawnesNuR0xXwe2FFOZLFVKBpdHf7IHXxSCdl3B3KYWCZPFjTRkspgp4z2dG8KFvjuK3nh3CU/siIIRA4Gj879cdwTMH2vCNm4v4yvX5inebNtrpecdTe7bt933xQHNdtm+qKhAQOPCMdj7jGRo/drjd5FXVDkdMWxzH0UN/rCZIebZ8u7tykxLNwkypORnNruuvZimCPREvQm4WkqIimiliNpGvesBRYGlcn7FXVZoimpi+OV+/ASc355O6tvI0CvPJAg52+HFtNomcKK/rpWdW3zseDnlRxthypub+8HoysZLFL/7teexq9uCNp3vwE8e7EPJweOZAG5450IaBiBf/80svlN1LPrxJuuFLB1u2/VmBo/Gldz6O9/zzFUu37FVK0M3ip4a7zF6GaThi2uLsiTiOHnpjtVMuS5UvpssNdzELYqqcXo+oqBu2nLAUASHatiRFtBVThAAEIISAWv0IALh/24GIFz+4Z6+e45M2jjovl0ROcmKyq2Qz33ppg/dOT9iNVj8PWVExHcth0WI7fOVwbzmD//HFF/DHX7uD9//EITx7uAMA8NzjuxD2cPizr49u20t9pCuAiw+91o50B/Gqw+3ob/aUtY7+Zg8+8Yun8dN/8wNLt+2Vy/GeIGbjeTzzwW/jF1+ya12veqPQWH+tDekMCnBztKXS+uyO1cYEGLp8AWr9gSGLPbgbIK7bmSh/vX1N1v/bHuRQZ6DuhfQqSSe8pSquTsfLHoB+eOcn4uPRFRJAUQQLybytbOFSBQlv/+QlfP3mIt799F50BgW89ngXfuxwOz763XF86BujG/pF72314YX51Lr+8o6AC//8Sy+qOJ3WxdL4rWeH8Jo/f36nf46pHO8J4u+fOw1VBf78m6P4m2+P4XOXpvHrr9yPHz/aAWLD1rhqsF6cmsM6qNJ2m4N+WO2tXW7SE0MRxC3uIlHPx82JHVr01ZKIj8f4iv0tuMrlzmIau1rKqwo63EdWq88zWEwVcHEyjvPjMUxFcwgILI50BXCqL1x2hdZsPntxBi/7g2/ir751F7KigmdovO3J3fj2e16Gl+1d37LRHRYwm8g90ib2sn2RioX0Kke7g5YP4tqKfW0+fOzNp+DmGHh4Br/6zD78+7teikOdQfyXf7qM1/3l93HNZq1x1eKIaRvgxIrri9Xqi+VeuVdSwTYPO6yxcnw8bbnB1c1gKIKAwNq6x7Uawm7O7CXYkqmYPheJiZyIK9MJnB2PYmw5g8NdAXQFBV1+t5EUJQXv//JNPP1H38Lzo8tQVRVhD4ePvvkkvvCOl+DXXrEPzz3eDy/PPPKe6m/24C0v7q/+vmXFti4q7QEX/u4XTiHgZtd9vbfJgw+/aRgff8tJRDNFvOrPvovf+NxVRC2/q7ozHDFtA5whRH2xmh1kufKzUbbLrEiHDUTBKsd7QjWxJ7QaV2fi8DVYn6YezMbzGGr36/57R6YTmE/mcaovDJ/L+s/L3aUM3vjhM3j6j769FixysDOAtz25G//tx4bwmbc9hne/fBBuTnOreMWBNnzpPz+OgR3sHPMMjU4bHVseZC6Rxx989damRYYn9/7/9u48PK6rPvj498y+aFZZkq1d3h3vtiw7CZCVAgkJAUoKJRAoaXh5KBQob9u8bykEKEsbaFkeHpo3oVAgoWylNCHsSZNAsOI93h1bsixbtmTt60iaOe8fM5ZlWcvMaGbundHv8zx+LN1tzj2amfu7557zO6X8/EOv4oHXrean+85x4z89zbd+32z6QfTpMv87XLC2PGB0EQqKuULp5PtwW2cIpuMD6C4PorNMGVinFCjLpN+ZMgAvvltimYofR3N5Gy4Pzru8XfyVLerSoEN9ed8C5HPb597IBDZWBkw1IVEuRcY1Gyt9NBZQhoRs8rlsrCgtQqGw27LzuR2PaRqbu/C7bDTUhdnV3GX6ltgT7QP8y6+P8/A7r0wv7HHY+MAtK3jntbV0DERYVuLNSAPH0hJv3qau/P6uVp566Tx/eWu8XiZPGw7x2X3vf9Uy7tpUwed/foyP//QQjze28Mi99VSGPAaVOjskmM4DO5YWUxly09qdnx840zHZl3k0yWjaZbcwMqbQQEzriSBcE+/7eOVxjDnJbLRwmYEtDzo2Lgm4ONmx8FqkJ5s8Nb24WnXYzZKAm97hMY5f6GdPIpOEy2bBYbOknTZyLn0j4zQ2dVEVchP02E0/a+WaWb7HAh77VV0b5sPsGZrm0h8Z59NPHuHxxhb+/o613DBNesBSv4sv3L2Rt++o5tnjHZQH8rM1fjbSzSMPWC2K161bbHQxCobJYumk81677NaJSUhM1lNlglImLdg8RcZirC33s6U6iMOEfdftVoXHYWUgsrCz/pztGWZteWHe0KXDblGsK/fTUBticcBFS9cwO5u6ODolI8XIeIw1i7M/NudM9zAvne1jbbmf6rA5Ayqfy8bbd1Tn7PWWlRRGN86THYPc+41G7vvWLk7PMPh5S3WID926Mi9nQ5zLnMG0UsqllGpUSu1XSh1SSj2YWP6cUmpf4t85pdRPptn3pknb7FNKjSil7kqs+65S6phS6qBS6htKqfx4jmqQe3bU5PWoXzMxXZ/pJP+uTpv5733NlGc6k3qGxzh0ro89LT3YrRbqa0KsMtHA4M1VIU52LJzsHbPJh6cI2bSsxEtDXZh1FX5sVgsHz/XR2Nw95yyRuRzgfOhcH63dw2yrDRNwm+cB+aIiJ09+4JWU+lw5e8137KjJ2Wvlwq+PXODVX3yWf/z5UQanSS9YqJK5OkeAm7XWG4FNwGuVUju01q/UWm/SWm8CXgB+PHVHrfXTk7a5GRgCfplY/V1gNbAecAP3zf90CldNsZcdS4uNLkZBMFconXxqPEea6ZdyyWx1mwkKODepT+PgaJRdp7tp6R5iY2XA8JvczVXBBdtPejoHWnsp8TmNLkbOVIbcNNSG2VQVwO+ycbJjkMamLg6e7Utpyurj5/uT/i7KhJiGF5u7iMagoS6EGdoKHrxzLdXFue3Lu2aJjyWB3AXvuTAajfG1Z05y8xee4Sd7z5quASsb5nz76rhLHfHsiX8TNaOU8hEPlK9qmZ7ij4GntNZDieP+LHFsDTQCC3ceyiRJvunCNNPAwqnsZrjazKEQxx9WhNzT9mscHo2yv7WXkMfB9rowi/25D+Aqgm6OnTd3/9Nc08DSPMlznI5Sn5OtNSG21oRYVOSgtXuYxuYu9p3ppW8e6RD7I1FW56Crx1QDkXEam7rZUhPO+WtP5rAq3Pbcf8cqpfjoH63Ki8aSVF3oiyyYfNNJ/fWUUlal1D6gHfiV1nrnpNVvBH6jtZ7rG/2twOPTHNsOvAP4eXJFXrgCeZJRwOzMdo98cSC5/MW5bDVKl/lLmLq5Wjk7B0fZ2dTF+b4Ia8v9bKjITfYdh82C3aoYGsvvAUzZcOJCf8F09wi4bWyuClJfG6Ii6Ka9P8Lu093sPt3NxYHM5u69lPYt1zZUBnjRwNk6HVbFijIfn3nqKGcMmJzpzVsr2fl/buGB16027G8wX2GvY8auiLtOd3PHV5/ngR8foDPJ612+SSqY1lpHE101KoEGpdS6SavfxjRB8mRKqSXEu3P8YprVXwOe1Vo/N8O+9yuldimldnV0dCRT3ILVUaBvwpwzWTR9smOQYu/cE04k24JtpELsM51Ki9Ghc30cONtLfU0Ie5aDuQ0VAZo782dWxlzqGhpjQ2V+phR12y2sr/AnZhL00Ds8zt4z8ZkGs51C7WT7YM6fLq0sK+JoW59hX8v2RCB96FwfL7cPcNNDz/D+x/Zw+Fxun/iEvA7ee8MyHv/zHXk3t0SR08a339PAb/7qBm5bP32yBK3h8cYz3PjQM3zj+SbGCizfdErPFbTWPcAzwGsBlFLFQAPw5By73g38p9b6irmQlVIfB0qAj8zymg9rreu11vUlJVenXFlIAm6Z4SsTtNmiaUgq8b+l8J4C5oVU+p1esut0N3Ul3qzNyre1OsSu05JPeTZDo/mR2cSiYFWZj+11YVYt9jEW1bx0ti8xk2Bub5a6hkZZWZq7rh5VYTdtvSOMRo35TlbA6sV+Dk0KnMdjmicPtPH6rzzHx35ycM6Bm5m2sSrIN9/dQG2O+26ny2G18P33Xsva8gCVIQ9fe/tWHrtv+4w3BP0j43zyicPc9qXneP7ExRyXNnuSyeZRopQKJn52A7cCRxOr3wI8obWe6912Veu1Uuo+4DXA27TWhXWLkiWLiiSYzgQzjoVobO5ifcXsKb3yotU3D4qYqotpTiN+/MIAVqtiWUlm++9Whz0cOlfY/Q8z4ej5fsJec3aNqyl201AXYkNlAJfdyrEL/exs6uLY+X7GDZ7VJJM5lGezqMhBZCxm6LT39bUhXpqhL29Mw7f/cJpX/dPTPPp8U07LVR4nVuKjAAAgAElEQVR088k3rJt7Q4PZLIqvvX0L10xJR3nd8kU8+cFX8vE7rplx9ssT7QPc8+hOvvrbE7koatYl09a1BHhaKXUAeJF4n+knEuuu6getlKpXSj0y6fdaoAr4nynH/TpQBryQSJv392mdwQISylIr10JjwlgareFUxyA14ZlbI8xY7qkKMJae16Cujv4Ird3DbK4OZqQsbrsVjWYkzyd6yJX5TPWcSSVFlwYNBgl7HZzuHKaxqZsDrb2ma0GfaXroTPI5bXgdVtpz8Foz2VYb4sUkZsscHY/xqScO87uXc9uKWhlyX5UpyOuwUhV2s6kqyOrFPtYs8eMyYNDkJX/+qqXcek3ZtOvsVgvvvr6OZz56I2/dVjVt96Eyv5M3bKrIcilzQ+VTypL6+nq9a9cuo4thmN6hMW76wjN0DWZ20MlCY7cqxgx6rDiXRUUOLEpNe5FpqA2ZfqrkTVUB9p2RVtPpNNSFaZznIKut1UF2J2atE3NbXurFYbXgddpQSjE6FqNjYCTrMyX6nFbqSopw2ay09Q5zJs9mrw157HQPjc29YRocNgtLF3k5er4/K8dPxrpyP4fb+lKa2rzM7+TBO9fhcVgZGYtyTbk/61Ni/+FUJ784dB6HzcLmqhA3rCzBPWWA4svt/bzcPsD3XjxDz9AYA5FxXm7P3Uyot29Ywt++djVVszQEARxo7eHjPz3E3sT3V9Bj5wfvvZYVJsrXP5VSarfWun7uLSWYzjsPP3uSz/zs6NwbihmZOZiGeLqz4dFxuqZczJJtSTHSpsog+1oLJ9jzOa30Z3BWwfUVAU51DDCYRmtkfY30k07V8tKiaQMLn9NGdbGHIqeN0WiMtp5hzvel30pa5LSytKQIl93Kxf4ITZ2DpuxOlqyt1SF2t2T+vaZU/IZw12njviNqwh46BiIZeSLwmTeu5/YNS0yXaev4hX7+4rE9HL+Qm6DaYbXw7lfU8v6bluN3zVwXsZjmJ/vO8s3fN/PgnWvZXB3KSfnSJcF0Afv2C8187L8OGV2MvGb2YBqgtthD5+DoFf0J62tD7DJ5ML25KsDeAmqZrgy6ac1wBoWqkJuY1im1jtYWezjbM2z6962ZpHrzEXDbqQq58TptjIxFOdczMmMGpSKnlWWXgueBCKcu5nfwPNXWmiC7sxDwNtSFOdk+QN0iryE3hsVeB1bL9E/+5nPMe3bU8Je3rDDVNNnPnejgHY825vQ1dywN8737r83pa2ZTKsG0eebxFEnZLrMgzls+XPSaO4dYXlpENDo0kUfYohRBjx2Lig9FVCqe8N+iEoMTVXwQhFJX/pz4Nf4zXLWdIr7/pT5tSs3yu540Mcul5cTz0x5u6+Nkx+DlASf6iv8mZsGa+B2mbJdYP8N+s62zWhSbqoKcbB+4qkV/PsoCrowH02e6h/E5bawr93MwifRbHoeVsaiWQDoFPqeVEyk+6u4dHqN3+Mr3TtjroDLkxm23Eo1plIrnFW+6OMj+1sK5aZyqOQtZRLbWhCa6OXUOjrK0JN4FJ1fdPbwOK363LeMZUjoHR/nSb07QMzTKJ+5cG/9eNYHrly3ibQ1VPN54Jiev57RZ0Bq+84fTvK2hOi/mRcgkaZnOQ7d96TkOt8msZ+myWhRRg0fMJ2v1Yh+nOgYYjWpTt/rWFntMkfPYbbeyoTLAobO9DMzzMW6pz0k0punM0hgFi4L62rn7UW+uDk70MxTJyYcuUWZXE/ZwOkMTmKwq83Gyo5/pxs0uK/ES9Ng5cKaXsSx9L9sssGpKCrxsuHl1KX93+xqWlphj4CvA/jM9PHu8g7GYxuuwYlGKi4PxgdFPH23PSHcXm0Xx8Du3csPKUh5vbOHJA2184JblXLdsUQbOwDjSzaPAffqJwzyS41Q9hcSiSGngidHWVwQ40tbLNeUBDpi0Naw67KalyzyDrAJuO6vKfOw9051Wi+6qsiI6B0czPsPcdLbWhDhwpmfaQCIfBp2aTd0iL8153mfZDDL13ivzO4mMx+iZ44lR0BP/zB4618vAPMcpVIbcVATdvNTaw9BYjM1VQfaeyc0NqUXBXZsq+OhrVlEedOfkNdPV0R/h8z8/yg93t6Z9DIuCr7xtC7dvWDKxrGdolH/+1XEuDo4mNTjRrFIJpmUaiDy00sSjX/NBvl1jXzrby7qKIDET3wGYLXDpHR6jsbmLkMdBfU0o6ZR9PpeN+poQxy4M5CSQBth9upvaRV7CU2bBXFbilRbpNNitynTvx3yUzmRFU7kdVlw265yBNEDP0Bg7m7pQSrGtNv2BaSVFTkbHY+xs6sLlsLG+IpCzQBriDTU/3nuWmx56hk/+92FOdeQus0aqSnxOHnrLRn7y/uvZVJVe+s7PvXnDFYE0QNDj4ME3rOMDNy/nY/91kId+cYzBiHH5xHNBWqbz0NDoONs+/eu0MgKI/GXmtGgVQXfWpzqej6qwm2KvY9a0fW67hTK/y7DuKuUBFwOj4/QNj1PktOFzWWnrNS4Pbz7aWhNit2Q8yQinTaFRjKaZ01yp+FO1dJ+mNdSGaWxOLZWkz2kl5HXSkqHuKZlgUfDmLZX81R+tYnHAZXRxZhSLaX64u5V/+NmRq8YOzOTjd1zDu6+vm3UbrTVPHTzPo883cc+Oat6wscJUAzVnIy3TBc7jsPHWhmqji5GX7HnyIZ5OxMQTdcRMflN+pmuYfWd6WVFaxOrFVz/ZUcDyUp+h/b7P9Y5Qtyg+W+KyEq8E0ikqclpN3QqYbyLjetrPSrIaasPz6pbW2NxFQ13yLdR2q6I85DFVIA3xluof7G7lpoee4Uu/PsFIBlr8s8FiUdy9rYpfffhVrK8IzLn9jatKuPfa2jm3U0px2/olfOc92zndOcQ9j+5kXw6fFOSKBNN56k+2VRldhLzkdlrn3sikDrX1UVLkNLoY08qXJ1wn2gc4er6fdRX+icAVYFtteMZphXNp/5lebly1qKAzRWTLmiX+rE00slBZ0pzTdGt1iJ3znKAIoLGpm+114Tm3U8A1S/wcM3AimLkMj0X5518f57YvPccBE+fiL/W7eOTeeipDV/b3Xr3Yx5s2V2CzKN60pYJXLF/Eu7/5IvuTDIzdDisfunUl//jHG3jkuVN85Pv7uNCX3cmTckm6eeSx27/8XNZHJxeaMr+TC/OYnMFo2+vCGblIZVqpz2no1MDp2lIdxGW38vuTnUYXBYAVpUV0DkSoKvZwoLVX+v4mqbY43iJp4mEFeas6nFpr78qyIpo6BjOamWO27CxhrwOHzcL53vwJzBw2C/deW8Nfv3Y1dqs52zRbOod449d+R+fgKIv9Lh6/fwdep5W9LT3cuqYMq0VxcSDCF391HK01H3n1Kkp8yTf2vHCyk4d+eYybV5fynlfU4bKbr6FLunksELesKTO6CHnHacvvt7xZ+yWbvZvHTEbHY/zhlDkC6YDbTu/wGF1DY+w/08uSgItttSFc9vx+z+aC026VQDpLSlMIkEp9Ti72RzKe4u7F5m621kzf5cNhVXkVSEP8e+ebv2+meyg3g5zTUV3s4T/eu4P//ZpVPH7/DsIeBxd6I7xm7eKJHNKLipx85o3refv2Gv7mRwf4f8+eSrqP/bXLivmP+3fgd9m4+19f4Jlj7dk8nayTb+k8tqU6vdG3C5nTZr6731S0dg+zotQ8OUwviZm3O/eMaos9nLo4aJogrDrsvqJ1/1zPCC82d2O3WmioC1M8JduHiNtaHTL14/18Zrco+kbGrnrkPx233YrHYc3opEmT7W3pnjbjxPm+CBVJlM9sPvemDZT6zDsgEeLjSN5/03LK/E5e7hhgfeX0fanXVQR49N56FgdcvOdbLyYdGNusFt5xbS3fendDUu8xM5NgOo+9ckUJFSbPY2k2Dlv+DkC8JOixG12Eq+g8SzhY7HUwOBrNyIQFmbC9LsxLZ6fvstU/Mk5jUxe9w6NsrQlRW5yfOVuzweuw0tQ5aHQxCtbG6iDHLwxQ5p+7dXplWVFWB/DGNBw618vyUu9V68pNnCVjOh+8eTlv3lppdDGSMhaNsf9M74xPBi5RSnHHxnIefkc9e1t6eP9je2i+mNxnM+R1sLw0v1P+SjCdx6wWxbuuqzW6GHnFZsn/t/zRtn7TZSWJ5lE3D5fNQsBtp8MkfbwbkuwHPx6L56Ru7hxibbmfdeX+HJTO3NaW++nK0gyVC92yEi+7Ev2U97b0zHoT11AXzsmg2bGoZmAkii8xkFwRvxHNp3SIVWE377txudHFSFrTxUGUSn6Qudth5cOvXskDr1vNl39zgs///CgDBZ5jGiSYzntv2hIfXSuSYzPpYI9U9EfGWZdE6qJcMvOEMlOtLPNxKskWk2zbXjf3dOLTOXSuj4Pn+qgOu6mvCWG3LrzvgJqw27R51wuB3335CVhMw9BolPA0T8W2VAfTeg+n63zfCHWJ6bq31sSzhuTL18+iIieP3bcDtyN/uhuuLPOxuTrIcycu8otD55PerzLk4Yt/sokbVpbwgcf28OM9rXl1nUhV/kcWC1xxkZPtS+dOHSTiCuW+Y9xknZTzpWF6W22IAyZIgQfxssw3M0tL1zC7Tnfjc9rYXhcm4DZfF6BscTtsRAv44mykxX7nVSnP2vsjFBc5cUy6cVtRWmRISskDrb2sLCtiVx61SAN8/Z4teTm1ttNm5VUrS1hfEWDnqU4OpvA337G0mEfu3cbIWIz7v7076VR6+cZmdAHE/N28uozfvWyOjARmt6u5G4/dgsNuxWG1YLcq7BYLNpvCZlFYLRasSmG1KixKYVHxR4koUJNyrmodz2Ch0cRi8W4O0ZhmPBb/32pRWFU8Eb4FRVRrhkaj9A6P0j00Nu/g83BbPyGP3TR5dfMhqElnRrVssCjYXDVzqq90dCWmYnba4lMxn+sZMW3ml0zYUh1kj7RKZ01V2MP5aVKInmgfYHN1kL0tPZT6nHQOjDIWNeazf/xCfk3Qc3d9JfW1+d3wVR50s9jv4g9NnRxo7WFteWAis8dsrBbFn26v5vYNS/jKb07QNTjKTatLc1Di3JE80wWg+eIgNz70jNHFEElSQGXYTXnATdPFwbTzM8+WezXX7FZl2EU1GRsrAxw4a3zeZrtVcc0Sf076l26oDDA6HuNogWW68NgtuB02OqWvdFb4XDbGo5rhWWbq27E0zIW+CE0m6S5lZlaL4sO3ruB9Ny5PKvDMF7GY5nBbHwORcbbWhEybL3s+JM/0AlO7yCtZPfKIJj699c6mLtr7I6wr97N00dUj1OfSP2KeQR1mvilfW+7jcFuf4YG0y25hZZkvZ7MbHmjt5ej5fpaVeNlcHSyYC/m6yoAE0llS5LRSHnTPGkgD/OFUF2HvwulSlK6qsJsfve86/uLmFQXz+bvEYlGsqwiwqMjJ70920tptrmncc02C6QJxjYzsz1sHz/Vx6uIgW6qDLE4hxdOJ9oEr+i8aKWquLtxAfAKJ+poQR9r6DW81L3LaqA57DJmx9GTHIHtbeij2OmioC+HNo8FPU1WF3ew+Ld07sqHY66C4yJl0zu4Drb2sXpzf6cyy6ebVpTz5wVdOmxu7kCwvLeKGlSWc7R7myQNtDJsk3WiuSTBdIF6/YYnRRRDztKelh46+EeprQpQH5w6qozHNkiS2ywUztUv73TYa6sJ0D42y63S34SP9gx47JT6n4X082/sjNDbFuwU11IZTmtnOLHxOe170z883lUE3NqvidAp5oseimvb+CAG3DL2aalWZjy+8ZSN+18Jpvd++tJjb1i/mdNcgB8/2LrjPqQTTBWJtublSpYn0RDXsOt1NW88IW6qDVM8x8jvoNs+seMoEjeQNtWGiUU1jU5fhrdEAJT4nRU6bqfqWDo5GaWzu4uJAhM3VQVYv9uGwmf9SsLkqyOG23LfsF7pVZT76I+NcmGbA4Vy6BkepTaOLWiG7a1M5//n+6wgtwBlLlVKsXuxneWkRDz97ijNdC6frh9xSFojqsIeA207vsDmyO4j50TCRrWDNEh9FThttvSOc6xm+oqXVZTfPI3uLUoZO3lJfGzJFto5LyoMuolFNa7c5s2rEdHwyDgCrgqWLvBQXOdAaOgYitHQNGd7P/BKXzUJrAWcnMULY46CuxDvvCU/2n+llc1WQvQWa8iwVIY+dj9+xFo9jYYdWLruV9924jM6BCP/+QjP3bK/BUmB9xqda2H/xAuKwWVhRmn95N8XcjrRd7sNYGXKzqMjJvsSFK2aWaId4yjcjesvZLLC+IjgxW5sZ1BR76B8ep2soPwbKRTWcujh4xWQ2bruFmmIvfreNsXHN+b4R2npHDCnfhqrcTgxSyGwW2FoT5qWzvRmbObClawivw8rgAu0ve8kX7960IFukZ1Jc5OSd19YaXYyckGC6gNQUeyWYLnCt3cO0dg+zoTLA8Qv9DJno4mW15D49nstmYVlpkalaxZaXFnGhb8RU2VbSMTx2dVo9n8tGTdiD12kjMh6lrXckre4BqagMutkj32vztqzES7HXwbELA/OeLGiqzsFRtteFM37cfHL7+iUFlztZJE+C6QKytSbEj/a0Gl0MkQMHWntZVuJlzERpNCw57jRd6nPidVoNyZAxk2uW+Gi+OMjQmHn+LpnUPzLOwSn1HfLYqQy5cdqtHDnXl/HWyYDHLl080mSzwMaqIF2DY5zsGORkR/b67p/sGEBhrsHIueK2W/m7168xuhjCQBJMF5C3NVRREXJz7zcajS6KyIGTHYOU+pxYVfwxvdFyGUyvKCuicyBC08Xstooma7HfRUXQze6WhdeC2j00NjETp8Oq2FIdZGQsyuG2+U8Ws6kyyL5W8zx1yCdbqoM0dw7lLJXgxYFR1pX7r7rZWggeuG01SwIy18NCJsF0AVFKccPKEsoDLs4Z1LdR5FZ7f4TKoNsULXe5Gl+ytSbIgdZeU2TrCHnsrCjzsed0F+f75DM3GtUTA2erw25KfS72t/ak9bdy2hRtfca/r/NRsdfBkfP9Oc/56zTRgOhc+ca76rlplXTvWOjMnw9JpOwG+WAvKC6HOT7GuRit3VAXZvfp9IKzTPI4rGyvCzMyFqWxqYvxwuzVMS8tXcPsOt2Nz2lje12YgDu1nLubqkJZ749dqGqKPYZMnvFyu7G51HOtOuzh5tVlKDPkBRWGMsdVWGTUTatKjC6CyCGFOb7IsxlLWxVsrjY+o4PdqmioDWG3KnY2dTFcoH2jM6lraCxeV6PjbE3ktZ4r9qgIutizALvMZMLGqsDE04Fc6x0eozK0cLo7FBdJ5g4RJ908CtBCm3looTNLo0im+0z7nFbKAm5CHjuDkfGJnMhGUAq2VIdo7Rqi0UQp+PLJaFSzO/E3LPY6WFZSRO/wGMcuXN23utTv4myPdJtJVZnPyal2YycIWux3mTa3eqZ1DeZH6kuRfRJMF6DrVyzCbs19mjJhjGy2CDttijK/i6DbkZggRscHO2rQaDQkJvbQxDQsCbjjyzVofXl9YpMp+8S3iWkYj8WIRjXjMc1YNEbfyDj9kSj9JnhsvLEyQPfQaMZy8op4KrXOwfhThuqwm7DXwb4zvRPrrRaFy25hRFr+k2ZR8cwnF/oN7hpjkpv7XDjdOcSnnjjMGzaVs6EyaHRxhIEkmC5AfpedLdWhBZ3zcyHJdDcPi4L1FQFiGg6e66Wla5gWFkZL02TXLPEzFouxv7V37o1F2lq6hmnpGmZVWRGR8RjdQ6OMjsVYVxEw1UQ8ZldfG6Kxyfj6al9gA3Effb6Jf/tdE7euKeOhuzfid6U2NkAUBukzXaA2Vsld8kKRqcEvpT4n2+vCBD0O9rf28tLZXtNMJ50ry0u8NNSFKPU5OdzWx4kLxreMLxTHLgzQ3DmEy2alPzIugXQKfC7bFTOlGqmlaxifyxztdFuqg/zZ9XXcubE8q68T0/DLwxd4/Zef51SHfGcsROZ4x4uMK/O7jC6CyJH5xtLrKgJYFBw820u70Y+IDVBb7KHM76Kla4iXOwYhixNbiLld6I/gHB6lviYkM7omac1in6n68tct8nIgjSc6y0q8DI9Gp03tarWopMcDFXsdPPbnO1i12Dex7I2bK/jsU0c4nsUb5JauIT7x34f55ru2zZnd6KXWXtr7R6gKe1hRWiQZQfKcBNMF6oaVi/iU0YUQOZHud3DAbaMi6Obg2YXXjaEy5KYi6OZc7zDNnUM0dw4ZXSQxSWRcs+t0N2vL/XT0RxbkTV6yqkLuiYGdZuFOI9/027dX84k71xLTmkeea+Irvz3ByFgMj8PKX79mFW9tqOarv32Zrz798ozHcFgtfOjVK/iz6+sSYzwuu2l1KTesLOGXhy/wHy+28OyJi1kZrP/s8Q6++ftm/uwVdTNu0zU4yt3/+gLDY/H0hbesLuWLf7Ip5fSRwjyUzqPnuPX19XrXrl1GFyNvvOXrv+dFE7VWiOxYX+HnpbOpzTpWW+xhZCy2oCYaWRxwUR320NEfoemitD7niyKHlSgYkjc5H6yvCPCSyW6I1yzxpdTt5H03LuNvXrv6imVtvcN84/km7tpcwdrywMTy3ae7+MRPD191zg6rhX979zauX74oqde80DfCyY4BLvSNcKStn56hUfqGx7k4EKGtd4Sz85wI64kPvIJ1FYGrlmut+YvH9/LkgbYrlhc5bbznFXW8fUc1pT55smwGSqndWuv6pLaVYLpwPfSLY7PexYvCsKEiwIEULqabqwIcOd+/IDIlLCqKp2DrHIjEu3CIvLOxMiCDQGewttzPIRNO3+20WRiPxpgroZRFwb3X1fLA69bgsCU/hGtkLMrnnjrK440tRMZj2CyK7963ne1Li+dZ8sv6R8boGxnnR7tb+cHuM2gdTzvb3h9JqkX703et454dNVcsGx6N8u0/NPOZnx2dcT+7VfGpN6zjrQ3V8z4HMT+pBNPSzaOArZzUX0wUrlS6eWyvCxd8lpew186ykiL6R8Y4en6AiwOFfb6FbiHc9KXLrHMKRMZjrCj1cmKWnNeL/S4++6b13LQ69Rl7XXYrn7hzLX//+mv47wPn8DhsGQ2kAXwuOz6XnQ/esoIP3rJiYnk0pukcjNDRH+Hpo+18d2cLbdP08f7sz47QPTjKO66t4dC5Pn556DxPvnSeiwOzd1kai2oeb2yRYDrPSMt0AWvvH+G6z/6WcZN+4YrM2FQVZN+ZuftMbqsNFWy3H7/LxsoyH0Oj4xxp60fe8eYx9WZvuns/m8WC1aKwWRRWq8KqFFaLoirs4Wz3cCI7+aT85JN+Zpp18d914vXjr3h5PJiaKNelRfGfr1w+eUCYUpfPQ6Gm7DspOeWUfdU0x2aa9ZPLcPl14guvLOPlff0uG/0j41ccn2nOaerxZyvH5HO6XFOT/4ZT9p+yfvLxy/xO2vsjV5VNKUWpz8mHX72SImf+t+fFYprdLd384uD5RK59F5HxKJHxGIr4+7FrcBSrRTE6HmNwNIrNohgejRIZj+Jx2igpcrI44GKx30Wp38nmqhBuR+r9zkVmScu0AKDU56K+NkRb78jEl1j8Czq+fvKyqV+8TF033YVk0vqZjndpxdTXmHq8qa833fGmXgRnOt7kL+1Lp2NRYLHEL9IWpeI/W4j/brl88Vbq8vKrL2TTvP6UC+4ls92jTr6B1frq48z0epNfY/I6t93K6zcsuaIOp+7ntFsZi8a4Y2P5pAu/mvW4M6278oJ95UV34rxmOedL+9ksCps1EUBZLPF6t8Qf9cZimmhME9WaWEzHz0vFZ1lUgMVy+W8fn3lRx0s4Q70xY33OdL7TbztdnVz5mbm83GpREwHcpWNOfW9f/vnqQGfi9ed4HzJNWaa+/6/6PM5yXrOd06z7STYCsQBZLIpttWG21YaNLoowkATTBe57919rdBGEEEIIIQqWTNoihBBCCCFEmiSYFkIIIYQQIk0STAshhBBCCJEmCaaFEEIIIYRIkwTTQgghhBBCpEmCaSGEEEIIIdIkwbQQQgghhBBpkmBaCCGEEEKINEkwLYQQQgghRJokmBZCCCGEECJNEkwLIYQQQgiRJgmmhRBCCCGESJME00IIIYQQQqRJgmkhhBBCCCHSJMG0EEIIIYQQaZJgWgghhBBCiDRJMC2EEEIIIUSaJJgWQgghhBAiTRJMCyGEEEIIkSaltTa6DElTSnUAp5PcfBFwMYvFKURSZ6mTOkud1FnqpM5SJ3WWOqmz1EmdpS5f6qxGa12SzIZ5FUynQim1S2tdb3Q58onUWeqkzlIndZY6qbPUSZ2lTuosdVJnqSvEOpNuHkIIIYQQQqRJgmkhhBBCCCHSVMjB9MNGFyAPSZ2lTuosdVJnqZM6S53UWeqkzlIndZa6gquzgu0zLYQQQgghRLYVcsu0EEIIIYQQWWX6YFop9Ral1CGlVEwpVT9p+auVUruVUi8l/r85sdyjlHpSKXU0sd/nZjhurVJqWCm1L/Hv66nsb2a5rrPEuq2J476slPqyUkpl/0wzJ1t1Nuk41UqpAaXURyct+3Bi34NKqceVUq7snWHmGVRnQaXUDxPHOKKUujZ7Z5gdRtRbYrlVKbVXKfVEds4se3JdZ0qpKqXU04n32CGl1F9m9wwzz6DP52uVUscS14G/zd7ZZUe26kwp1aAuXzf3K6XeOGmdXAemP+5sdWa+64DW2tT/gDXAKuAZoH7S8s1AeeLndcDZxM8e4KbEzw7gOeB10xy3Fjg4zfKk9jfzv1zXWWJdI3AtoICnpM6uOv6PgB8AH038XgE0Ae7E798H3mV0PZi5zhLLvgXcN+kYQaPrIR/qLbH8I8BjwBNG14HZ6wxYAmxJ/OwDjgPXGF0PJq8zK3ASWJrYf7/U2cT+HsA26b3VDtiQ60DKdZb43XTXARsmp7U+AqCmNHRqrfdO+vUQ4FJKObXWQ8DTiW1GlVJ7gMoUXm9e+5tBrutMKbUE8GutX0j8/u/AXcSD6ryQzQi9dLcAAARhSURBVDpTSt0FnAIGp6yyAW6l1BjxL45zGTiVnMl1nSml/MCrgHddOgYwmqHTyRkj3mtKqUrgduAfiAfVeSXXdaa1bgPaEj/3K6WOEA98DmfqnLLNgPdZA/Cy1vpUYpvvAW9A6uxSXHGJC5g8WE2uAynUmVmvA6bv5pGkNwN7tdaRyQuVUkHgDuA3M+xXp+KPPf9HKfXKqSuT2D+fZbLOKoDWSdu0JpYVmpTrTCnlBf4GeHDycq31WeAhoIX4RbtXa/3LLJXbSBmrM+ItXh3AvyXeg48kti1Emaw3gH8B/hqIZb6oppHpOru0TS3xVradGSyrWWSyziqAM5N+l+vAleu3K6UOAS8B/0trPS7XgdTrDJNeB0zRMq2U+jWweJpV/1dr/V9z7LsW+DzwR1OW24DHgS9fulOeog2o1lp3KqW2Aj9RSq3VWvclub+hzFRnxLt2TGW6NDEG1dmDwD9rrQcm37krpULEW23qgB7gB0qpe7TW30nhlLLOTHVG/PtqC/ABrfVOpdSXgL8FPpbs+eSKmepNKfV6oF1rvVspdWNKJ5JDZqqzSfsXEe/O8KFL1wYzMVmdyXVglnhBa70TWKuUWgN8Syn1FOBGrgOp1pkprwOmCKa11rems1/i0eV/Au/UWp+csvph4ITW+l9meM0IEEn8vFspdRJYCexKZn+jmazOWrnyMU0lJnxUZUSdAduBP1ZK/SMQBGJKqRHgAtCkte5IvMaPgesAU32JmqzOfgi0Jr5gSfxuykFOJqu3CuBOpdRtxB+X+pVS39Fa35NOGbPFTHWmtf6qUspOPJD+rtb6x+mULdvMVGfAbqBq0nZyHZj+9Y8opQaJ9yOuQ64DqdZZKya8DpgimE5H4vHAk8ADWuvfTVn3aSAA3DfL/iVAl9Y6qpRaCqwg3gcsqf3zUbbqTGvdpZTqV0rtIP4o9J3AV7J1Hrk03zrTWr9y0vafAAYSF+rtwA6llAcYBm7h8o1cXstWnSV+P6OUWqW1Pka8zvKmP+ZcsllvwAOJ5TcSHzBmqkA6XVn8fCrgUeCI1vqL2Si7UbJYZzZghVKqDjgLvBX408yfQe5l4NpZB5zRWo8rpWqID9hrJj5oU64D0+8/bZ1prS+a8jqgTTAadLZ/wBuJ34lEiLfm/SKx/O+ID37YN+lfKfG7YQ0cmbT80qjPO4FPJn5+M/FO8fuBPcAdieUz7p8v/3JdZ4l19cBB4qO5vwrxCYHy5V+26mzKa3yCKzNTPAgcTdTbtwGn0fWQB3W2ifjF5gDwEyBkdD3kQ71NWn4j+ZnNI6d1Brwisf+BSfvfZnQ9mLnOEr/fRjzzyUniXQAMrwcz1BnwDuLXzn3Er513TXpNuQ6kXmemuw7IDIhCCCGEEEKkqVCyeQghhBBCCJFzEkwLIYQQQgiRJgmmhRBCCCGESJME00IIIYQQQqRJgmkhhBBCCCHSJMG0EEIIIYQQaZJgWgghhBBCiDRJMC2EEEIIIUSa/j9zjdPPstithwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "nbrhoods.plot(figsize=(12,14))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Check *nbrhoods*'s coordinate reference system." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'init': 'epsg:4326'}\n" ] } ], "source": [ "print(nbrhoods.crs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Aggregate crime numbers for each neighborhood\n", "\n", "Using the geological information in *df_crime*, we can calculate the number of crimes in each neighborhood by implementing GeoPandas' sjoin function. Since we want to aggregate the number in each neighborhood, we set op='within.' The resulted GeoDataFrame is further grouped by neighborhood. " ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nbrhoodincident_counts
0Alamo Square687
1Anza Vista310
2Balboa Terrace49
3Bayview3185
4Bayview Heights253
\n", "
" ], "text/plain": [ " nbrhood incident_counts\n", "0 Alamo Square 687\n", "1 Anza Vista 310\n", "2 Balboa Terrace 49\n", "3 Bayview 3185\n", "4 Bayview Heights 253" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nbh_crime_counts = gpd.tools.sjoin(df_crime.to_crs(nbrhoods.crs), nbrhoods, how=\"inner\", op='intersects').groupby('nbrhood').size()\n", "nbh_crime_counts = pd.DataFrame(data=nbh_crime_counts.reset_index())\n", "nbh_crime_counts.columns=['nbrhood', 'incident_counts']\n", "nbh_crime_counts.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we combine the nbh_crime_counts and the nbrhoods GeoDataFrames using the merge function. We use __nbrhood__ as the key where the two frames are joined. Details of the implementation can be found here." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nbrhoodnidsfar_distrgeometryincident_counts
0Alamo Square6eDistrict 6 - Central NorthPOLYGON ((-122.4294839489174 37.77509623070431...687
1Anza Vista6aDistrict 6 - Central NorthPOLYGON ((-122.4474643913587 37.77986335309237...310
2Balboa Terrace4aDistrict 4 - Twin Peaks WestPOLYGON ((-122.464508862148 37.73220849554402,...49
3Bayview10aDistrict 10 - SoutheastPOLYGON ((-122.38758527039 37.7502633777501, -...3185
4Bernal Heights9aDistrict 9 - Central EastPOLYGON ((-122.4037549223623 37.74919006373567...1561
\n", "
" ], "text/plain": [ " nbrhood nid sfar_distr \\\n", "0 Alamo Square 6e District 6 - Central North \n", "1 Anza Vista 6a District 6 - Central North \n", "2 Balboa Terrace 4a District 4 - Twin Peaks West \n", "3 Bayview 10a District 10 - Southeast \n", "4 Bernal Heights 9a District 9 - Central East \n", "\n", " geometry incident_counts \n", "0 POLYGON ((-122.4294839489174 37.77509623070431... 687 \n", "1 POLYGON ((-122.4474643913587 37.77986335309237... 310 \n", "2 POLYGON ((-122.464508862148 37.73220849554402,... 49 \n", "3 POLYGON ((-122.38758527039 37.7502633777501, -... 3185 \n", "4 POLYGON ((-122.4037549223623 37.74919006373567... 1561 " ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nbrhoods = nbrhoods.merge(nbh_crime_counts, on='nbrhood')\n", "nbrhoods.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Delete *df_crime* in order to reduce memory usage." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "del df_crime" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.2 San Francisco Housing Data Analysis \n", "Back to page top" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Import the San Francisco Historica Secured Property Tax Rolls, 2007-2015 and perform an initial check." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/chiachen/miniconda3/envs/mlenv/lib/python3.6/site-packages/IPython/core/interactiveshell.py:3020: DtypeWarning: Columns (29) have mixed types. Specify dtype option on import or set low_memory=False.\n", " interactivity=interactivity, compiler=compiler, result=result)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 1612110 entries, 0 to 1612109\n", "Data columns (total 43 columns):\n", "Closed Roll Fiscal Year 1612109 non-null float64\n", "Property Location 1612110 non-null object\n", "Neighborhood Code 1611431 non-null object\n", "Neighborhood Code Definition 1564368 non-null object\n", "Block and Lot Number 1612110 non-null object\n", "Volume Number 1612110 non-null int64\n", "Property Class Code 1611252 non-null object\n", "Property Class Code Definition 1596776 non-null object\n", "Year Property Built 1483511 non-null float64\n", "Number of Bathrooms 1612110 non-null float64\n", "Number of Bedrooms 1612110 non-null int64\n", "Number of Rooms 1612110 non-null int64\n", "Number of Stories 1612110 non-null int64\n", "Number of Units 1612110 non-null int64\n", "Characteristics Change Date 1404465 non-null object\n", "Zoning Code 1393875 non-null object\n", "Construction Type 1357497 non-null object\n", "Lot Depth 1612110 non-null float64\n", "Lot Frontage 1612110 non-null float64\n", "Property Area in Square Feet 1612110 non-null int64\n", "Basement Area 1612109 non-null float64\n", "Lot Area 1612109 non-null float64\n", "Lot Code 569318 non-null object\n", "Prior Sales Date 0 non-null float64\n", "Recordation Date 1491934 non-null object\n", "Document Number 635747 non-null object\n", "Document Number 2 1612109 non-null float64\n", "Tax Rate Area Code 1607742 non-null float64\n", "Percent of Ownership 1612109 non-null float64\n", "Closed Roll Exemption Type Code 740703 non-null object\n", "Closed Roll Exemption Type Code Definition 740660 non-null object\n", "Closed Roll Status Code 28589 non-null object\n", "Closed Roll Misc Exemption Value 1612109 non-null float64\n", "Closed Roll Homeowner Exemption Value 1612109 non-null float64\n", "Current Sales Date 835570 non-null object\n", "Closed Roll Assessed Fixtures Value 1612109 non-null float64\n", "Closed Roll Assessed Improvement Value 1612109 non-null float64\n", "Closed Roll Assessed Land Value 1612109 non-null float64\n", "Closed Roll Assessed Personal Prop Value 1612109 non-null float64\n", "Zipcode of Parcel 1584672 non-null float64\n", "Supervisor District 1586142 non-null float64\n", "Neighborhoods - Analysis Boundaries 1584816 non-null object\n", "Location 1591808 non-null object\n", "dtypes: float64(19), int64(6), object(18)\n", "memory usage: 528.9+ MB\n" ] } ], "source": [ "df_import = pd.read_csv('Historic_Secured_Property_Tax_Rolls.csv')\n", "df_import.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will work with the following columns only." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "columns = ['Block and Lot Number', \n", " 'Closed Roll Assessed Fixtures Value',\n", " 'Closed Roll Assessed Improvement Value',\n", " 'Closed Roll Assessed Land Value',\n", " 'Closed Roll Assessed Personal Prop Value', 'Neighborhoods - Analysis Boundaries',\n", " 'Location']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Get the data obtained in 2014. The *df_housing* will only contain columns defined in the last cell." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "df_housing = df_import[df_import['Closed Roll Fiscal Year']==2014.0].loc[:,columns].reset_index(drop=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Check if there's any NaNs. If so, drop those rows." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Block and Lot Number 0\n", "Closed Roll Assessed Fixtures Value 0\n", "Closed Roll Assessed Improvement Value 0\n", "Closed Roll Assessed Land Value 0\n", "Closed Roll Assessed Personal Prop Value 0\n", "Neighborhoods - Analysis Boundaries 2497\n", "Location 1619\n", "dtype: int64" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_housing.isnull().sum()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Block and Lot Number 0\n", "Closed Roll Assessed Fixtures Value 0\n", "Closed Roll Assessed Improvement Value 0\n", "Closed Roll Assessed Land Value 0\n", "Closed Roll Assessed Personal Prop Value 0\n", "Neighborhoods - Analysis Boundaries 0\n", "Location 0\n", "dtype: int64" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_housing.dropna(inplace=True)\n", "df_housing.isnull().sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compute tha total value of the house. The total value is the combination of assessed fixtures value, improvement value, land value, and personal prop value." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "df_housing['total_price'] = df_housing['Closed Roll Assessed Fixtures Value'] + \\\n", " df_housing['Closed Roll Assessed Improvement Value'] + \\\n", " df_housing['Closed Roll Assessed Land Value'] + \\\n", " df_housing['Closed Roll Assessed Personal Prop Value']" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Block and Lot NumberClosed Roll Assessed Fixtures ValueClosed Roll Assessed Improvement ValueClosed Roll Assessed Land ValueClosed Roll Assessed Personal Prop ValueNeighborhoods - Analysis BoundariesLocationtotal_price
037514350.0149168.0149168.00.0South of Market(37.7816504619473, -122.399116945614)298336.0
262760090.0270000.0405000.00.0Excelsior(37.7190514589638, -122.433999199176)675000.0
337514200.0128078.0128078.00.0South of Market(37.7816504619473, -122.399116945614)256156.0
475173780.0129545.0141594.00.0Noe Valley(37.7463212609468, -122.441519528492)271139.0
537350980.0336716.0336716.00.0Financial District/South Beach(37.7857477114134, -122.397398669759)673432.0
\n", "
" ], "text/plain": [ " Block and Lot Number Closed Roll Assessed Fixtures Value \\\n", "0 3751435 0.0 \n", "2 6276009 0.0 \n", "3 3751420 0.0 \n", "4 7517378 0.0 \n", "5 3735098 0.0 \n", "\n", " Closed Roll Assessed Improvement Value Closed Roll Assessed Land Value \\\n", "0 149168.0 149168.0 \n", "2 270000.0 405000.0 \n", "3 128078.0 128078.0 \n", "4 129545.0 141594.0 \n", "5 336716.0 336716.0 \n", "\n", " Closed Roll Assessed Personal Prop Value \\\n", "0 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "5 0.0 \n", "\n", " Neighborhoods - Analysis Boundaries Location \\\n", "0 South of Market (37.7816504619473, -122.399116945614) \n", "2 Excelsior (37.7190514589638, -122.433999199176) \n", "3 South of Market (37.7816504619473, -122.399116945614) \n", "4 Noe Valley (37.7463212609468, -122.441519528492) \n", "5 Financial District/South Beach (37.7857477114134, -122.397398669759) \n", "\n", " total_price \n", "0 298336.0 \n", "2 675000.0 \n", "3 256156.0 \n", "4 271139.0 \n", "5 673432.0 " ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_housing.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Change the format of GPS coordinates so that it is consistent with other datasets." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "coordinates = df_housing['Location'].str.strip('()') \\\n", " .str.split(', ', expand=True) \\\n", " .rename(columns={0:'Latitude', 1:'Longitude'}) " ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "columns = list(df_housing.columns) + list(coordinates.columns)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "df_housing = pd.concat([df_housing, coordinates], axis=1, ignore_index=True)\n", "df_housing.columns = columns\n", "df_housing = df_housing.drop(columns=['Closed Roll Assessed Fixtures Value',\n", " 'Closed Roll Assessed Improvement Value',\n", " 'Closed Roll Assessed Land Value',\n", " 'Closed Roll Assessed Personal Prop Value',\n", " 'Location'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Latitude and longitude are text objects. Convert them to float." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "df_housing[['Latitude','Longitude']] = df_housing[['Latitude','Longitude']].apply(pd.to_numeric)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Final checkup." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Block and Lot NumberNeighborhoods - Analysis Boundariestotal_priceLatitudeLongitude
03751435South of Market298336.037.781650-122.399117
26276009Excelsior675000.037.719051-122.433999
33751420South of Market256156.037.781650-122.399117
47517378Noe Valley271139.037.746321-122.441520
53735098Financial District/South Beach673432.037.785748-122.397399
\n", "
" ], "text/plain": [ " Block and Lot Number Neighborhoods - Analysis Boundaries total_price \\\n", "0 3751435 South of Market 298336.0 \n", "2 6276009 Excelsior 675000.0 \n", "3 3751420 South of Market 256156.0 \n", "4 7517378 Noe Valley 271139.0 \n", "5 3735098 Financial District/South Beach 673432.0 \n", "\n", " Latitude Longitude \n", "0 37.781650 -122.399117 \n", "2 37.719051 -122.433999 \n", "3 37.781650 -122.399117 \n", "4 37.746321 -122.441520 \n", "5 37.785748 -122.397399 " ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_housing.head()" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 204319 entries, 0 to 206815\n", "Data columns (total 5 columns):\n", "Block and Lot Number 204319 non-null object\n", "Neighborhoods - Analysis Boundaries 204319 non-null object\n", "total_price 204319 non-null float64\n", "Latitude 204319 non-null float64\n", "Longitude 204319 non-null float64\n", "dtypes: float64(3), object(2)\n", "memory usage: 9.4+ MB\n" ] } ], "source": [ "df_housing.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Processing the housing data for mapping\n", "Following the steps in the previous section, we are going to convert *df_housing* into GeoDataFrame which is will be used for mapping. First, we generate the Shapely point column by combining Longitude and Latitude data." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "geometry_housing = gpd.GeoSeries(df_housing.apply(lambda z: Point(z['Longitude'], z['Latitude']), 1), crs={'init': 'epsg:4326'})" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Block and Lot NumberNeighborhoods - Analysis Boundariestotal_priceLatitudeLongitudegeometry
03751435South of Market298336.037.781650-122.399117POINT (-122.399116945614 37.7816504619473)
26276009Excelsior675000.037.719051-122.433999POINT (-122.433999199176 37.7190514589638)
33751420South of Market256156.037.781650-122.399117POINT (-122.399116945614 37.7816504619473)
47517378Noe Valley271139.037.746321-122.441520POINT (-122.441519528492 37.7463212609468)
53735098Financial District/South Beach673432.037.785748-122.397399POINT (-122.397398669759 37.7857477114134)
\n", "
" ], "text/plain": [ " Block and Lot Number Neighborhoods - Analysis Boundaries total_price \\\n", "0 3751435 South of Market 298336.0 \n", "2 6276009 Excelsior 675000.0 \n", "3 3751420 South of Market 256156.0 \n", "4 7517378 Noe Valley 271139.0 \n", "5 3735098 Financial District/South Beach 673432.0 \n", "\n", " Latitude Longitude geometry \n", "0 37.781650 -122.399117 POINT (-122.399116945614 37.7816504619473) \n", "2 37.719051 -122.433999 POINT (-122.433999199176 37.7190514589638) \n", "3 37.781650 -122.399117 POINT (-122.399116945614 37.7816504619473) \n", "4 37.746321 -122.441520 POINT (-122.441519528492 37.7463212609468) \n", "5 37.785748 -122.397399 POINT (-122.397398669759 37.7857477114134) " ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_housing = gpd.GeoDataFrame(df_housing, geometry=geometry_housing)\n", "df_housing.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Compute average housing price per neighborhood\n", "Using sjoin and mean functions, we compute average housing price in each neighborhood. The price is in units of million." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nbrhoodhouse_avg_price
0Alamo Square0.862016
1Anza Vista1.121534
2Balboa Terrace0.737963
3Bayview0.439684
4Bayview Heights0.296895
\n", "
" ], "text/plain": [ " nbrhood house_avg_price\n", "0 Alamo Square 0.862016\n", "1 Anza Vista 1.121534\n", "2 Balboa Terrace 0.737963\n", "3 Bayview 0.439684\n", "4 Bayview Heights 0.296895" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nbh_house_avg_value = gpd.tools.sjoin(df_housing.to_crs(nbrhoods.crs), nbrhoods, how=\"inner\", op='intersects').groupby('nbrhood').mean()\n", "nbh_house_avg_value = pd.DataFrame(data=nbh_house_avg_value.reset_index())\n", "nbh_house_avg_value = nbh_house_avg_value.drop(columns=['Latitude', 'Longitude', 'index_right', 'incident_counts'])\n", "nbh_house_avg_value.columns=['nbrhood', 'house_avg_price']\n", "\n", "# Normalize the price by one million.\n", "nbh_house_avg_value['house_avg_price'] = nbh_house_avg_value['house_avg_price'] / 1_000_000\n", "nbh_house_avg_value.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we merge the average housing price information with the *nbrhoods* GeoDataFrame." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nbrhoodnidsfar_distrgeometryincident_countshouse_avg_price
0Alamo Square6eDistrict 6 - Central NorthPOLYGON ((-122.4294839489174 37.77509623070431...6870.862016
1Anza Vista6aDistrict 6 - Central NorthPOLYGON ((-122.4474643913587 37.77986335309237...3101.121534
2Balboa Terrace4aDistrict 4 - Twin Peaks WestPOLYGON ((-122.464508862148 37.73220849554402,...490.737963
3Bayview10aDistrict 10 - SoutheastPOLYGON ((-122.38758527039 37.7502633777501, -...31850.439684
4Bernal Heights9aDistrict 9 - Central EastPOLYGON ((-122.4037549223623 37.74919006373567...15610.448200
\n", "
" ], "text/plain": [ " nbrhood nid sfar_distr \\\n", "0 Alamo Square 6e District 6 - Central North \n", "1 Anza Vista 6a District 6 - Central North \n", "2 Balboa Terrace 4a District 4 - Twin Peaks West \n", "3 Bayview 10a District 10 - Southeast \n", "4 Bernal Heights 9a District 9 - Central East \n", "\n", " geometry incident_counts \\\n", "0 POLYGON ((-122.4294839489174 37.77509623070431... 687 \n", "1 POLYGON ((-122.4474643913587 37.77986335309237... 310 \n", "2 POLYGON ((-122.464508862148 37.73220849554402,... 49 \n", "3 POLYGON ((-122.38758527039 37.7502633777501, -... 3185 \n", "4 POLYGON ((-122.4037549223623 37.74919006373567... 1561 \n", "\n", " house_avg_price \n", "0 0.862016 \n", "1 1.121534 \n", "2 0.737963 \n", "3 0.439684 \n", "4 0.448200 " ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nbrhoods = nbrhoods.merge(nbh_house_avg_value, on='nbrhood')\n", "nbrhoods.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Delete *df_import* and *df_housing* datasets in order to save memory." ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "del df_import\n", "del df_housing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.3 Generating Crime and Housing Maps using Folium\n", "Back to page top" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this section, we are going to use folium to produce crime and housing price maps of San Francisco using the data prepared in the previous two sections. Before that we first use GeoPandas' representative_point() function to generate a representative location for each neighborhood. This data will be used to create popups on the map." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nbrhoodincident_countshouse_avg_priceLatitudeLongitude
0Alamo Square6870.86201637.776076-122.433919
1Anza Vista3101.12153437.780611-122.443255
2Balboa Terrace490.73796337.730649-122.468267
3Bayview31850.43968437.732391-122.387170
4Bernal Heights15610.44820037.740230-122.415885
\n", "
" ], "text/plain": [ " nbrhood incident_counts house_avg_price Latitude Longitude\n", "0 Alamo Square 687 0.862016 37.776076 -122.433919\n", "1 Anza Vista 310 1.121534 37.780611 -122.443255\n", "2 Balboa Terrace 49 0.737963 37.730649 -122.468267\n", "3 Bayview 3185 0.439684 37.732391 -122.387170\n", "4 Bernal Heights 1561 0.448200 37.740230 -122.415885" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#nbh_centroid = pd.DataFrame(nbrhoods.centroid)\n", "nbh_centroid = pd.DataFrame(nbrhoods.representative_point())\n", "nbh_centroid.columns=(['centroid'])\n", "nbh_centroid['nbrhood'] = nbrhoods['nbrhood']\n", "nbh_centroid['incident_counts'] = nbrhoods['incident_counts']\n", "nbh_centroid['house_avg_price'] = nbrhoods['house_avg_price']\n", "\n", "lat = []\n", "lng = []\n", "for index, row in nbh_centroid.iterrows():\n", " tmp = str(row[0]).strip('POINT ()').split(' ')\n", " lng.append(float(tmp[0]))\n", " lat.append(float(tmp[1]))\n", " #print(tmp[0], tmp[1])\n", " \n", "nbh_centroid['Latitude'] = lat\n", "nbh_centroid['Longitude'] = lng\n", "\n", "nbh_centroid = nbh_centroid.drop(columns=['centroid'])\n", "\n", "nbh_centroid.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define a function that generates popups." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "def get_popups(df, field, name, map_object):\n", " for lat, lng, nbrhood, value in zip( df['Latitude'], \n", " df['Longitude'], \n", " df['nbrhood'], \n", " df[field]\n", " ):\n", " label = (\"{0}, {1}: {2:.2f}\").format(nbrhood, name, value)\n", " label = folium.Popup(label, parse_html=True)\n", " folium.CircleMarker(\n", " [lat, lng],\n", " radius=2,\n", " popup=label,\n", " color='green',\n", " fill=True,\n", " fill_color='#3186cc',\n", " fill_opacity=0.3).add_to(map_object)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define San Francisco's GPS coordinates." ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "SF_Coord = (37.7792808, -122.4192363)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create the crime map object." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "scrolled": false }, "outputs": [], "source": [ "# Create San Francisco base map\n", "SF_crime_map = folium.Map(location=SF_Coord, zoom_start=12)\n", "\n", "#geodata = gpd.read_file('./tmp/geo_export_0e291dd6-c6fb-40dd-8323-68a750ad5743.geojson')\n", "# Crime data at the census tract level\n", "threshold_scale = [0, 1000, 2000, 4000, 6000, 8000]\n", "SF_crime_map.choropleth(geo_data = nbrhoods.to_json(),\n", " data = nbrhoods,\n", " columns = ['nbrhood', 'incident_counts'], \n", " key_on = 'feature.properties.nbrhood',\n", " fill_color = 'YlOrRd', \n", " fill_opacity = 0.60, \n", " line_opacity = 0.60,\n", " legend_name = 'Number of incidents',\n", " name = 'Number of Incidents',\n", " threshold_scale = threshold_scale,\n", " reset = True \n", " )\n", "\n", "get_popups(nbh_centroid, 'incident_counts', 'Incident Counts', SF_crime_map)\n", "\n", "# Add control layer to the map\n", "#folium.LayerControl().add_to(SF_crime_map)\n", "#SF_crime_map" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create the housing price map object." ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "# Create San Francisco base map\n", "SF_housing_map = folium.Map(location=SF_Coord, zoom_start=12)\n", "\n", "threshold_scale2 = [0.0, 0.5, 1.0, 2.0, 4.0, 8.0]\n", "SF_housing_map.choropleth(geo_data = nbrhoods.to_json(),\n", " data = nbrhoods,\n", " columns = ['nbrhood', 'house_avg_price'], \n", " key_on = 'feature.properties.nbrhood',\n", " fill_color = 'YlOrRd', \n", " fill_opacity = 0.60, \n", " line_opacity = 0.60,\n", " legend_name = 'Average Housing Price (Million)',\n", " name = 'Average Housing Price',\n", " threshold_scale = threshold_scale2,\n", " reset = True\n", " )\n", "\n", "get_popups(nbh_centroid, 'house_avg_price', 'Avg. House Price (Million)', SF_housing_map)\n", "\n", "# Add control layer to the map\n", "#folium.LayerControl().add_to(SF_housing_map)\n", "#SF_housing_map" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.4 Exploring and Clustering Venues in San Francisco Neighborhoods \n", "Back to page top\n", "\n", "In this section, are going to use the Foursquare APIs to explore San Francisco neighborhoods and cluster them using k-means clustering. From the Toronto zipcode neighborhood exercise, we learn that k-means will generate at least one cluster that emphasizes on the restaurant section. This is exactly the kind of information needed when we are looking for possible locations for opening a new restaurant." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Set up Foursqure API id and basic API call parameters" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "# @hidden_cell\n", "CLIENT_ID = 'JBAVIGVGG3N3AWC1FGO2G3U1N3GUOWBEKXFI1SDAOCYYPULD' \n", "CLIENT_SECRET = 'GPGOGGAB5YFPREDIUHAT5OZNYRDBVGZH1WC21KBQMVEP3BIC' \n", "VERSION = '20180927'\n", "\n", "# Set up the FourSquare API call parameters\n", "RADIUS = 500\n", "LIMIT = 100" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define the function that extracts the category of the venue." ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "def get_category_type(row):\n", " try:\n", " categories_list = row['categories']\n", " except:\n", " categories_list = row['venue.categories']\n", " \n", " if len(categories_list) == 0:\n", " return None\n", " else:\n", " return categories_list[0]['name']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Get venue recommendations from Foursquare Expore API\n", "We use the function defined in the Toronto exercise. Here the function calls the __explore__ method to return a list of recommended venues for each neighborhood." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "def getNearbyVenues(names, latitudes, longitudes, radius, limit):\n", " \n", " venues_check_list = []\n", " venues_list=[]\n", " idx = 0\n", " for name, lat, lng in zip(names, latitudes, longitudes):\n", " \n", " # create the API request URL\n", " url = 'https://api.foursquare.com/v2/venues/explore?&client_id={}&client_secret={}&v={}&ll={},{}&radius={}&limit={}'.format(\n", " CLIENT_ID, \n", " CLIENT_SECRET, \n", " VERSION, \n", " lat, \n", " lng, \n", " radius, \n", " limit)\n", " \n", " # make the GET request\n", " results = requests.get(url).json()[\"response\"]['groups'][0]['items']\n", " \n", " # return only relevant information for each nearby venue\n", " venues_list.append([(\n", " name, \n", " lat, \n", " lng, \n", " v['venue']['name'], \n", " v['venue']['location']['lat'], \n", " v['venue']['location']['lng'], \n", " v['venue']['categories'][0]['name']) for v in results])\n", " \n", " num_of_venues_found = len(results)\n", " if (num_of_venues_found == 0):\n", " venues_check_list.append(False)\n", " else:\n", " venues_check_list.append(True)\n", " print('{0:4d} Neighborhood: {1:35s}, number of venues found:{2:6d}'.format(idx, name, num_of_venues_found))\n", " idx = idx + 1\n", "\n", "\n", " nearby_venues = pd.DataFrame([item for venue_list in venues_list for item in venue_list])\n", " nearby_venues.columns = ['nbrhood', \n", " 'nbrhood Latitude', \n", " 'nbrhood Longitude', \n", " 'Venue', \n", " 'Venue Latitude', \n", " 'Venue Longitude', \n", " 'Venue Category']\n", " \n", " return(nearby_venues, venues_check_list)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Apply the function getNearbyVenues() to the neighborhoods whose coordinates are extracted from *nbh_centroid*." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Search radius: 500.0 meters\n", " Maximum number of venues: 100\n", "\n", " 0 Neighborhood: Alamo Square , number of venues found: 72\n", " 1 Neighborhood: Anza Vista , number of venues found: 18\n", " 2 Neighborhood: Balboa Terrace , number of venues found: 15\n", " 3 Neighborhood: Bayview , number of venues found: 17\n", " 4 Neighborhood: Bernal Heights , number of venues found: 39\n", " 5 Neighborhood: Buena Vista Park/Ashbury Heights , number of venues found: 53\n", " 6 Neighborhood: Central Richmond , number of venues found: 96\n", " 7 Neighborhood: Central Sunset , number of venues found: 12\n", " 8 Neighborhood: Clarendon Heights , number of venues found: 13\n", " 9 Neighborhood: Corona Heights , number of venues found: 59\n", " 10 Neighborhood: Cow Hollow , number of venues found: 100\n", " 11 Neighborhood: Crocker Amazon , number of venues found: 16\n", " 12 Neighborhood: Diamond Heights , number of venues found: 10\n", " 13 Neighborhood: Downtown , number of venues found: 100\n", " 14 Neighborhood: Duboce Triangle , number of venues found: 87\n", " 15 Neighborhood: Eureka Valley / Dolores Heights , number of venues found: 100\n", " 16 Neighborhood: Excelsior , number of venues found: 4\n", " 17 Neighborhood: Financial District/Barbary Coast , number of venues found: 100\n", " 18 Neighborhood: Yerba Buena , number of venues found: 100\n", " 19 Neighborhood: Forest Hill , number of venues found: 6\n", " 20 Neighborhood: Forest Hills Extension , number of venues found: 12\n", " 21 Neighborhood: Forest Knolls , number of venues found: 11\n", " 22 Neighborhood: Glen Park , number of venues found: 47\n", " 23 Neighborhood: Golden Gate Heights , number of venues found: 14\n", " 24 Neighborhood: Golden Gate Park , number of venues found: 6\n", " 25 Neighborhood: Haight Ashbury , number of venues found: 100\n", " 26 Neighborhood: Hayes Valley , number of venues found: 100\n", " 27 Neighborhood: Hunters Point , number of venues found: 4\n", " 28 Neighborhood: Ingleside , number of venues found: 25\n", " 29 Neighborhood: Ingleside Heights , number of venues found: 8\n", " 30 Neighborhood: Ingleside Terrace , number of venues found: 12\n", " 31 Neighborhood: Inner Mission , number of venues found: 81\n", " 32 Neighborhood: Inner Parkside , number of venues found: 27\n", " 33 Neighborhood: Inner Richmond , number of venues found: 51\n", " 34 Neighborhood: Inner Sunset , number of venues found: 14\n", " 35 Neighborhood: Jordan Park / Laurel Heights , number of venues found: 35\n", " 36 Neighborhood: Lake Street , number of venues found: 19\n", " 37 Neighborhood: Monterey Heights , number of venues found: 4\n", " 38 Neighborhood: Lake Shore , number of venues found: 6\n", " 39 Neighborhood: Lakeside , number of venues found: 54\n", " 40 Neighborhood: Lone Mountain , number of venues found: 13\n", " 41 Neighborhood: Lower Pacific Heights , number of venues found: 100\n", " 42 Neighborhood: Marina , number of venues found: 84\n", " 43 Neighborhood: Merced Heights , number of venues found: 5\n", " 44 Neighborhood: Merced Manor , number of venues found: 13\n", " 45 Neighborhood: Midtown Terrace , number of venues found: 5\n", " 46 Neighborhood: South Beach , number of venues found: 56\n", " 47 Neighborhood: Miraloma Park , number of venues found: 7\n", " 48 Neighborhood: Mission Bay , number of venues found: 57\n", " 49 Neighborhood: Mission Dolores , number of venues found: 100\n", " 50 Neighborhood: Mission Terrace , number of venues found: 22\n", " 51 Neighborhood: Mount Davidson Manor , number of venues found: 18\n", " 52 Neighborhood: Noe Valley , number of venues found: 57\n", " 53 Neighborhood: North Beach , number of venues found: 100\n", " 54 Neighborhood: North Panhandle , number of venues found: 45\n", " 55 Neighborhood: North Waterfront , number of venues found: 39\n", " 56 Neighborhood: Oceanview , number of venues found: 8\n", " 57 Neighborhood: Outer Mission , number of venues found: 17\n", " 58 Neighborhood: Outer Parkside , number of venues found: 21\n", " 59 Neighborhood: Outer Richmond , number of venues found: 46\n", " 60 Neighborhood: Outer Sunset , number of venues found: 30\n", " 61 Neighborhood: Pacific Heights , number of venues found: 61\n", " 62 Neighborhood: Parkside , number of venues found: 34\n", " 63 Neighborhood: Cole Valley/Parnassus Heights , number of venues found: 25\n", " 64 Neighborhood: Pine Lake Park , number of venues found: 10\n", " 65 Neighborhood: Portola , number of venues found: 5\n", " 66 Neighborhood: Potrero Hill , number of venues found: 47\n", " 67 Neighborhood: Presidio , number of venues found: 12\n", " 68 Neighborhood: Presidio Heights , number of venues found: 26\n", " 69 Neighborhood: Russian Hill , number of venues found: 70\n", " 70 Neighborhood: Saint Francis Wood , number of venues found: 53\n", " 71 Neighborhood: Sea Cliff , number of venues found: 7\n", " 72 Neighborhood: Silver Terrace , number of venues found: 4\n", " 73 Neighborhood: South of Market , number of venues found: 93\n", " 74 Neighborhood: Stonestown , number of venues found: 17\n", " 75 Neighborhood: Sunnyside , number of venues found: 16\n", " 76 Neighborhood: Telegraph Hill , number of venues found: 100\n", " 77 Neighborhood: Twin Peaks , number of venues found: 8\n", " 78 Neighborhood: Van Ness/Civic Center , number of venues found: 72\n", " 79 Neighborhood: Visitacion Valley , number of venues found: 5\n", " 80 Neighborhood: West Portal , number of venues found: 58\n", " 81 Neighborhood: Western Addition , number of venues found: 62\n", " 82 Neighborhood: Westwood Highlands , number of venues found: 10\n", " 83 Neighborhood: Westwood Park , number of venues found: 32\n", " 84 Neighborhood: Lincoln Park , number of venues found: 22\n", " 85 Neighborhood: Sherwood Forest , number of venues found: 4\n", " 86 Neighborhood: Tenderloin , number of venues found: 100\n", " 87 Neighborhood: Central Waterfront/Dogpatch , number of venues found: 53\n", " 88 Neighborhood: Candlestick Point , number of venues found: 8\n", " 89 Neighborhood: Bayview Heights , number of venues found: 4\n", " 90 Neighborhood: Little Hollywood , number of venues found: 11\n", " 91 Neighborhood: Nob Hill , number of venues found: 48\n" ] } ], "source": [ "nbhs = nbh_centroid.loc[:, 'nbrhood']\n", "latitudes = nbh_centroid.loc[:, 'Latitude']\n", "longitudes = nbh_centroid.loc[:, 'Longitude']\n", "\n", "print('\\n Search radius: {0:8.1f} meters'.format(RADIUS))\n", "print(' Maximum number of venues: {0:6d}\\n'.format(LIMIT))\n", "SF_venues, SF_venues_check_list = getNearbyVenues(nbhs, latitudes, longitudes, RADIUS, LIMIT)" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(3567, 7)\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nbrhoodnbrhood Latitudenbrhood LongitudeVenueVenue LatitudeVenue LongitudeVenue Category
0Alamo Square37.776076-122.433919Alamo Square37.775906-122.434047Park
1Alamo Square37.776076-122.433919Painted Ladies37.776010-122.433179Historic Site
2Alamo Square37.776076-122.433919Alamo Square Dog Park37.775878-122.435740Dog Run
3Alamo Square37.776076-122.433919Originals Vinyl37.775835-122.431227Record Shop
4Alamo Square37.776076-122.433919The Center SF37.774545-122.430730Spiritual Center
\n", "
" ], "text/plain": [ " nbrhood nbrhood Latitude nbrhood Longitude Venue \\\n", "0 Alamo Square 37.776076 -122.433919 Alamo Square \n", "1 Alamo Square 37.776076 -122.433919 Painted Ladies \n", "2 Alamo Square 37.776076 -122.433919 Alamo Square Dog Park \n", "3 Alamo Square 37.776076 -122.433919 Originals Vinyl \n", "4 Alamo Square 37.776076 -122.433919 The Center SF \n", "\n", " Venue Latitude Venue Longitude Venue Category \n", "0 37.775906 -122.434047 Park \n", "1 37.776010 -122.433179 Historic Site \n", "2 37.775878 -122.435740 Dog Run \n", "3 37.775835 -122.431227 Record Shop \n", "4 37.774545 -122.430730 Spiritual Center " ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(SF_venues.shape)\n", "SF_venues.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Find out the number of unique categories can be curated from all the returned venues." ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "There are 343 uniques categories.\n" ] } ], "source": [ "print('There are {} uniques categories.'.format(len(SF_venues['Venue Category'].unique())))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Cluster the neighborhoods using the k-means algorithm: Preprocessing\n", "First we one-hot encode venue categories." ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(3567, 344)" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "SF_onehot = pd.get_dummies(SF_venues[['Venue Category']], prefix=\"\", prefix_sep=\"\")\n", "\n", "# add postcode column back to dataframe\n", "SF_onehot['nbrhood'] = SF_venues['nbrhood'] \n", "\n", "# move postcode column to the first column\n", "fixed_columns = [SF_onehot.columns[-1]] + list(SF_onehot.columns[:-1])\n", "SF_onehot = SF_onehot[fixed_columns]\n", "\n", "SF_onehot.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Group rows by neighborhood name and by taking the mean of the frequency of occurrence of each category." ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nbrhoodATMAcai HouseAccessories StoreAdult BoutiqueAfghan RestaurantAfrican RestaurantAlternative HealerAmerican RestaurantAntique ShopArcadeArgentinian RestaurantArt GalleryArt MuseumArts & Crafts StoreAsian RestaurantAthletics & SportsAutomotive ShopBBQ JointBaby StoreBagel ShopBakeryBankBarBaseball FieldBaseball StadiumBasketball CourtBasketball StadiumBeachBed & BreakfastBeer BarBeer GardenBeer StoreBelgian RestaurantBig Box StoreBike Rental / Bike ShareBike ShopBistroBoard ShopBoat or FerryBookstoreBoutiqueBowling AlleyBoxing GymBrazilian RestaurantBreakfast SpotBreweryBubble Tea ShopBuffetBuilding...StadiumStationery StoreSteakhouseStreet Food GatheringSupermarketSupplement ShopSurf SpotSushi RestaurantSzechuan RestaurantTaco PlaceTaiwanese RestaurantTapas RestaurantTattoo ParlorTea RoomTech StartupTennis CourtThai RestaurantTheaterThrift / Vintage StoreTiki BarTour ProviderTourist Information CenterToy / Game StoreTrackTrack StadiumTrade SchoolTrailTrain StationTrattoria/OsteriaTreeTunnelTurkish RestaurantTuscan RestaurantUdon RestaurantUsed BookstoreVegetarian / Vegan RestaurantVeterinarianVideo Game StoreVideo StoreVietnamese RestaurantVineyardWagashi PlaceWeight Loss CenterWhisky BarWine BarWine ShopWineryWings JointWomen's StoreYoga Studio
0Alamo Square0.00.00.00.00.00.0000000.00.0000000.0138890.0138890.00.00.00.0000000.00.00.00.0277780.00.00.0138890.0138890.0555560.00.00.00.00.00.00.00.00.00.00.0000000.00.00.00.00.00.00.0277780.00.00.00.000.0138890.0138890.00.0...0.00.00.00.00.00.00.00.0277780.00.0000000.00.00.00.00.00.00.00.0000000.0000000.00.00.00.0138890.00.00.00.00.00.00.00.0000000.00.00.00.00.00.00.00.00.0000000.00.00.00.00.0277780.00.00.00.00.0
1Anza Vista0.00.00.00.00.00.0000000.00.0000000.0000000.0000000.00.00.00.0555560.00.00.00.0000000.00.00.0000000.0000000.0000000.00.00.00.00.00.00.00.00.00.00.0555560.00.00.00.00.00.00.0000000.00.00.00.000.0000000.0000000.00.0...0.00.00.00.00.00.00.00.0000000.00.0000000.00.00.00.00.00.00.00.0000000.0000000.00.00.00.0000000.00.00.00.00.00.00.00.0555560.00.00.00.00.00.00.00.00.0000000.00.00.00.00.0000000.00.00.00.00.0
2Balboa Terrace0.00.00.00.00.00.0000000.00.0666670.0000000.0000000.00.00.00.0000000.00.00.00.0000000.00.00.0666670.0000000.0000000.00.00.00.00.00.00.00.00.00.00.0000000.00.00.00.00.00.00.0000000.00.00.00.000.0000000.0000000.00.0...0.00.00.00.00.00.00.00.0000000.00.0000000.00.00.00.00.00.00.00.0000000.0000000.00.00.00.0000000.00.00.00.00.00.00.00.0000000.00.00.00.00.00.00.00.00.0666670.00.00.00.00.0000000.00.00.00.00.0
3Bayview0.00.00.00.00.00.0588240.00.0000000.0000000.0000000.00.00.00.0000000.00.00.00.0588240.00.00.0588240.0000000.0000000.00.00.00.00.00.00.00.00.00.00.0000000.00.00.00.00.00.00.0000000.00.00.00.000.0000000.0000000.00.0...0.00.00.00.00.00.00.00.0000000.00.0588240.00.00.00.00.00.00.00.0588240.0588240.00.00.00.0000000.00.00.00.00.00.00.00.0000000.00.00.00.00.00.00.00.00.0000000.00.00.00.00.0000000.00.00.00.00.0
4Bayview Heights0.00.00.00.00.00.0000000.00.0000000.0000000.0000000.00.00.00.0000000.00.00.00.0000000.00.00.0000000.0000000.0000000.00.00.00.00.00.00.00.00.00.00.0000000.00.00.00.00.00.00.0000000.00.00.00.250.0000000.0000000.00.0...0.00.00.00.00.00.00.00.0000000.00.0000000.00.00.00.00.00.00.00.0000000.0000000.00.00.00.0000000.00.00.00.00.00.00.00.0000000.00.00.00.00.00.00.00.00.0000000.00.00.00.00.0000000.00.00.00.00.0
\n", "

5 rows Ă— 344 columns

\n", "
" ], "text/plain": [ " nbrhood ATM Acai House Accessories Store Adult Boutique \\\n", "0 Alamo Square 0.0 0.0 0.0 0.0 \n", "1 Anza Vista 0.0 0.0 0.0 0.0 \n", "2 Balboa Terrace 0.0 0.0 0.0 0.0 \n", "3 Bayview 0.0 0.0 0.0 0.0 \n", "4 Bayview Heights 0.0 0.0 0.0 0.0 \n", "\n", " Afghan Restaurant African Restaurant Alternative Healer \\\n", "0 0.0 0.000000 0.0 \n", "1 0.0 0.000000 0.0 \n", "2 0.0 0.000000 0.0 \n", "3 0.0 0.058824 0.0 \n", "4 0.0 0.000000 0.0 \n", "\n", " American Restaurant Antique Shop Arcade Argentinian Restaurant \\\n", "0 0.000000 0.013889 0.013889 0.0 \n", "1 0.000000 0.000000 0.000000 0.0 \n", "2 0.066667 0.000000 0.000000 0.0 \n", "3 0.000000 0.000000 0.000000 0.0 \n", "4 0.000000 0.000000 0.000000 0.0 \n", "\n", " Art Gallery Art Museum Arts & Crafts Store Asian Restaurant \\\n", "0 0.0 0.0 0.000000 0.0 \n", "1 0.0 0.0 0.055556 0.0 \n", "2 0.0 0.0 0.000000 0.0 \n", "3 0.0 0.0 0.000000 0.0 \n", "4 0.0 0.0 0.000000 0.0 \n", "\n", " Athletics & Sports Automotive Shop BBQ Joint Baby Store Bagel Shop \\\n", "0 0.0 0.0 0.027778 0.0 0.0 \n", "1 0.0 0.0 0.000000 0.0 0.0 \n", "2 0.0 0.0 0.000000 0.0 0.0 \n", "3 0.0 0.0 0.058824 0.0 0.0 \n", "4 0.0 0.0 0.000000 0.0 0.0 \n", "\n", " Bakery Bank Bar Baseball Field Baseball Stadium \\\n", "0 0.013889 0.013889 0.055556 0.0 0.0 \n", "1 0.000000 0.000000 0.000000 0.0 0.0 \n", "2 0.066667 0.000000 0.000000 0.0 0.0 \n", "3 0.058824 0.000000 0.000000 0.0 0.0 \n", "4 0.000000 0.000000 0.000000 0.0 0.0 \n", "\n", " Basketball Court Basketball Stadium Beach Bed & Breakfast Beer Bar \\\n", "0 0.0 0.0 0.0 0.0 0.0 \n", "1 0.0 0.0 0.0 0.0 0.0 \n", "2 0.0 0.0 0.0 0.0 0.0 \n", "3 0.0 0.0 0.0 0.0 0.0 \n", "4 0.0 0.0 0.0 0.0 0.0 \n", "\n", " Beer Garden Beer Store Belgian Restaurant Big Box Store \\\n", "0 0.0 0.0 0.0 0.000000 \n", "1 0.0 0.0 0.0 0.055556 \n", "2 0.0 0.0 0.0 0.000000 \n", "3 0.0 0.0 0.0 0.000000 \n", "4 0.0 0.0 0.0 0.000000 \n", "\n", " Bike Rental / Bike Share Bike Shop Bistro Board Shop Boat or Ferry \\\n", "0 0.0 0.0 0.0 0.0 0.0 \n", "1 0.0 0.0 0.0 0.0 0.0 \n", "2 0.0 0.0 0.0 0.0 0.0 \n", "3 0.0 0.0 0.0 0.0 0.0 \n", "4 0.0 0.0 0.0 0.0 0.0 \n", "\n", " Bookstore Boutique Bowling Alley Boxing Gym Brazilian Restaurant \\\n", "0 0.0 0.027778 0.0 0.0 0.0 \n", "1 0.0 0.000000 0.0 0.0 0.0 \n", "2 0.0 0.000000 0.0 0.0 0.0 \n", "3 0.0 0.000000 0.0 0.0 0.0 \n", "4 0.0 0.000000 0.0 0.0 0.0 \n", "\n", " Breakfast Spot Brewery Bubble Tea Shop Buffet Building ... \\\n", "0 0.00 0.013889 0.013889 0.0 0.0 ... \n", "1 0.00 0.000000 0.000000 0.0 0.0 ... \n", "2 0.00 0.000000 0.000000 0.0 0.0 ... \n", "3 0.00 0.000000 0.000000 0.0 0.0 ... \n", "4 0.25 0.000000 0.000000 0.0 0.0 ... \n", "\n", " Stadium Stationery Store Steakhouse Street Food Gathering Supermarket \\\n", "0 0.0 0.0 0.0 0.0 0.0 \n", "1 0.0 0.0 0.0 0.0 0.0 \n", "2 0.0 0.0 0.0 0.0 0.0 \n", "3 0.0 0.0 0.0 0.0 0.0 \n", "4 0.0 0.0 0.0 0.0 0.0 \n", "\n", " Supplement Shop Surf Spot Sushi Restaurant Szechuan Restaurant \\\n", "0 0.0 0.0 0.027778 0.0 \n", "1 0.0 0.0 0.000000 0.0 \n", "2 0.0 0.0 0.000000 0.0 \n", "3 0.0 0.0 0.000000 0.0 \n", "4 0.0 0.0 0.000000 0.0 \n", "\n", " Taco Place Taiwanese Restaurant Tapas Restaurant Tattoo Parlor \\\n", "0 0.000000 0.0 0.0 0.0 \n", "1 0.000000 0.0 0.0 0.0 \n", "2 0.000000 0.0 0.0 0.0 \n", "3 0.058824 0.0 0.0 0.0 \n", "4 0.000000 0.0 0.0 0.0 \n", "\n", " Tea Room Tech Startup Tennis Court Thai Restaurant Theater \\\n", "0 0.0 0.0 0.0 0.0 0.000000 \n", "1 0.0 0.0 0.0 0.0 0.000000 \n", "2 0.0 0.0 0.0 0.0 0.000000 \n", "3 0.0 0.0 0.0 0.0 0.058824 \n", "4 0.0 0.0 0.0 0.0 0.000000 \n", "\n", " Thrift / Vintage Store Tiki Bar Tour Provider \\\n", "0 0.000000 0.0 0.0 \n", "1 0.000000 0.0 0.0 \n", "2 0.000000 0.0 0.0 \n", "3 0.058824 0.0 0.0 \n", "4 0.000000 0.0 0.0 \n", "\n", " Tourist Information Center Toy / Game Store Track Track Stadium \\\n", "0 0.0 0.013889 0.0 0.0 \n", "1 0.0 0.000000 0.0 0.0 \n", "2 0.0 0.000000 0.0 0.0 \n", "3 0.0 0.000000 0.0 0.0 \n", "4 0.0 0.000000 0.0 0.0 \n", "\n", " Trade School Trail Train Station Trattoria/Osteria Tree Tunnel \\\n", "0 0.0 0.0 0.0 0.0 0.0 0.000000 \n", "1 0.0 0.0 0.0 0.0 0.0 0.055556 \n", "2 0.0 0.0 0.0 0.0 0.0 0.000000 \n", "3 0.0 0.0 0.0 0.0 0.0 0.000000 \n", "4 0.0 0.0 0.0 0.0 0.0 0.000000 \n", "\n", " Turkish Restaurant Tuscan Restaurant Udon Restaurant Used Bookstore \\\n", "0 0.0 0.0 0.0 0.0 \n", "1 0.0 0.0 0.0 0.0 \n", "2 0.0 0.0 0.0 0.0 \n", "3 0.0 0.0 0.0 0.0 \n", "4 0.0 0.0 0.0 0.0 \n", "\n", " Vegetarian / Vegan Restaurant Veterinarian Video Game Store Video Store \\\n", "0 0.0 0.0 0.0 0.0 \n", "1 0.0 0.0 0.0 0.0 \n", "2 0.0 0.0 0.0 0.0 \n", "3 0.0 0.0 0.0 0.0 \n", "4 0.0 0.0 0.0 0.0 \n", "\n", " Vietnamese Restaurant Vineyard Wagashi Place Weight Loss Center \\\n", "0 0.000000 0.0 0.0 0.0 \n", "1 0.000000 0.0 0.0 0.0 \n", "2 0.066667 0.0 0.0 0.0 \n", "3 0.000000 0.0 0.0 0.0 \n", "4 0.000000 0.0 0.0 0.0 \n", "\n", " Whisky Bar Wine Bar Wine Shop Winery Wings Joint Women's Store \\\n", "0 0.0 0.027778 0.0 0.0 0.0 0.0 \n", "1 0.0 0.000000 0.0 0.0 0.0 0.0 \n", "2 0.0 0.000000 0.0 0.0 0.0 0.0 \n", "3 0.0 0.000000 0.0 0.0 0.0 0.0 \n", "4 0.0 0.000000 0.0 0.0 0.0 0.0 \n", "\n", " Yoga Studio \n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "\n", "[5 rows x 344 columns]" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "SF_grouped = SF_onehot.groupby('nbrhood').mean().reset_index()\n", "SF_grouped.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define a function that sorts the venues in descending order." ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [], "source": [ "def return_most_common_venues(row, num_top_venues):\n", " row_categories = row.iloc[1:]\n", " row_categories_sorted = row_categories.sort_values(ascending=False)\n", " \n", " return row_categories_sorted.index.values[0:num_top_venues]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create a dataframe that contains venues in descending order for each zipcode area." ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(92, 11)\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nbrhood1st Most Common Venue2nd Most Common Venue3rd Most Common Venue4th Most Common Venue5th Most Common Venue6th Most Common Venue7th Most Common Venue8th Most Common Venue9th Most Common Venue10th Most Common Venue
0Alamo SquareBarRecord ShopBoutiqueItalian RestaurantWine BarSushi RestaurantGift ShopMediterranean RestaurantBBQ JointEthiopian Restaurant
1Anza VistaCaféHealth & Beauty ServiceCoffee ShopSouthern / Soul Food RestaurantMexican RestaurantGrocery StoreSandwich PlaceTunnelBig Box StoreArts & Crafts Store
2Balboa TerraceLight Rail StationPharmacyCircusBakeryParkPlaygroundDessert ShopVietnamese RestaurantItalian RestaurantAmerican Restaurant
3BayviewSouthern / Soul Food RestaurantParkLight Rail StationChinese RestaurantThrift / Vintage StoreTheaterAfrican RestaurantPlazaGymBakery
4Bayview HeightsBreakfast SpotParkBurger JointLatin American RestaurantFoodExhibitFarmers MarketFast Food RestaurantFilipino RestaurantFlea Market
5Bernal HeightsCoffee ShopParkBakeryItalian RestaurantPlaygroundGourmet ShopYoga StudioSeafood RestaurantSandwich PlaceGym
6Buena Vista Park/Ashbury HeightsBoutiqueParkCoffee ShopClothing StoreConvenience StoreTrailScenic LookoutGift ShopBreakfast SpotCafé
7Candlestick PointFootball StadiumParkCampgroundStadiumAmerican RestaurantFood & Drink ShopSoccer FieldFlea MarketEvent SpaceExhibit
8Central RichmondGrocery StoreChinese RestaurantSushi RestaurantKorean RestaurantCaféDeli / BodegaBakeryDim Sum RestaurantCoffee ShopVietnamese Restaurant
9Central SunsetChinese RestaurantGym / Fitness CenterPilates StudioSpaShoe StoreFoodPet StorePlaygroundDessert ShopEthiopian Restaurant
10Central Waterfront/DogpatchBakeryArt GalleryCocktail BarBreweryWine BarCaféGym / Fitness CenterCoffee ShopGift ShopDessert Shop
11Clarendon HeightsTrailParkRoadBus StopScenic LookoutArt GalleryPlaygroundConvenience StoreWine BarDance Studio
12Cole Valley/Parnassus HeightsWine BarParkYoga StudioAthletics & SportsBurger JointSports BarSports ClubBreakfast SpotStreet Food GatheringMexican Restaurant
13Corona HeightsGay BarParkThai RestaurantCosmetics ShopDog RunSushi RestaurantDim Sum RestaurantGrocery StoreCoffee ShopDiner
14Cow HollowCosmetics ShopWine BarFrench RestaurantGym / Fitness CenterItalian RestaurantSandwich PlaceSalad PlaceGymBakerySalon / Barbershop
15Crocker AmazonPharmacyGastropubCoffee ShopBarLatin American RestaurantScenic LookoutTennis CourtBasketball CourtPizza PlaceAmerican Restaurant
16Diamond HeightsTrailPlaygroundGrocery StorePharmacyDim Sum RestaurantSalon / BarbershopBus StationVideo StoreCoffee ShopShopping Mall
17DowntownHotelCocktail BarSpeakeasyTheaterAmerican RestaurantHostelBreakfast SpotThai RestaurantBarCoffee Shop
18Duboce TriangleGay BarCoffee ShopGymSushi RestaurantNew American RestaurantMexican RestaurantGrocery StoreSandwich PlaceJewelry StoreCocktail Bar
19Eureka Valley / Dolores HeightsGay BarCoffee ShopNew American RestaurantThai RestaurantPet StorePlaygroundParkDeli / BodegaMexican RestaurantMen's Store
20ExcelsiorConvenience StoreMoving TargetScenic LookoutLakeFlower ShopEthiopian RestaurantEvent SpaceExhibitFarmers MarketFast Food Restaurant
21Financial District/Barbary CoastCoffee ShopItalian RestaurantFood TruckMen's StoreNew American RestaurantSandwich PlaceGymSeafood RestaurantCaféJapanese Restaurant
22Forest HillJapanese RestaurantHotpot RestaurantTennis CourtParkPlaygroundFrench RestaurantCycle StudioCoworking SpaceEvent SpaceExhibit
23Forest Hills ExtensionConvenience StoreBurger JointHotpot RestaurantGymFrench RestaurantParkPharmacyDive BarSandwich PlaceBus Stop
24Forest KnollsTrailParkMountainGardenFountainFootball StadiumEthiopian RestaurantEvent SpaceFrench RestaurantExhibit
25Glen ParkParkCaféTrailCoffee ShopGrocery StoreCosmetics ShopDive BarSpaTennis CourtGift Shop
26Golden Gate HeightsTrailParkBus StopPlaygroundScenic LookoutHome ServiceTennis CourtVideo Game StoreFlower ShopFarmers Market
27Golden Gate ParkParkTrackDisc GolfBus StopYoga StudioEthiopian RestaurantExhibitFarmers MarketFast Food RestaurantFilipino Restaurant
28Haight AshburyCaféBoutiqueCoffee ShopThrift / Vintage StorePizza PlaceShoe StoreClothing StoreThai RestaurantGift ShopBoard Shop
29Hayes ValleyBoutiqueWine BarCaféFrench RestaurantSushi RestaurantClothing StoreCocktail BarCoffee ShopBubble Tea ShopMexican Restaurant
....................................
62Outer MissionLatin American RestaurantCosmetics ShopSpanish RestaurantChinese RestaurantMexican RestaurantBakeryGrocery StoreFoodAsian RestaurantMotel
63Outer ParksideCoffee ShopChinese RestaurantPizza PlacePharmacyBeachThai RestaurantGrocery StoreBarBakeryLight Rail Station
64Outer RichmondChinese RestaurantCaféJapanese RestaurantSporting Goods ShopMusic StoreBakerySandwich PlaceRamen RestaurantYoga StudioRecord Shop
65Outer SunsetArt GalleryMexican RestaurantThai RestaurantLight Rail StationCoffee ShopYoga StudioArts & Crafts StoreBreweryBreakfast SpotBookstore
66Pacific HeightsCosmetics ShopCoffee ShopParkGrocery StoreJuice BarGym / Fitness CenterFrench RestaurantSalon / BarbershopBarIce Cream Shop
67ParksideChinese RestaurantDumpling RestaurantLight Rail StationBubble Tea ShopCaféJapanese RestaurantSandwich PlaceBarLiquor StoreBurrito Place
68Pine Lake ParkParkGymMusic VenueSandwich PlaceFood TruckDog RunAsian RestaurantHawaiian RestaurantEvent SpaceExhibit
69PortolaRecreation CenterLakePlaygroundShopping MallBus StationFood TruckFood StandElectronics StoreEthiopian RestaurantEvent Space
70Potrero HillParkCaféBreweryGrocery StorePlaygroundBreakfast SpotBurger JointBus StationPizza PlaceSandwich Place
71PresidioMuseumBreweryAmerican RestaurantOutdoor SculptureTrailAsian RestaurantGeneral EntertainmentArt GalleryParkBowling Alley
72Presidio HeightsAmerican RestaurantParkCosmetics ShopGolf CourseBaby StoreNew American RestaurantSupermarketCaféBookstoreMiscellaneous Shop
73Russian HillParkChocolate ShopIce Cream ShopCoffee ShopHotelBike Rental / Bike ShareTour ProviderDinerArt GallerySeafood Restaurant
74Saint Francis WoodCoffee ShopChinese RestaurantItalian RestaurantIndian RestaurantPizza PlaceGym / Fitness CenterWine BarMexican RestaurantPubMusic Store
75Sea CliffTrailTea RoomBeachScenic LookoutGolf CourseNeighborhoodFootball StadiumFood TruckEvent SpaceExhibit
76Sherwood ForestTreeParkMonument / LandmarkTrailYoga StudioFlea MarketEthiopian RestaurantEvent SpaceExhibitFarmers Market
77Silver TerraceParkLiquor StoreSoccer FieldOutdoor GymYoga StudioElectronics StoreEvent SpaceExhibitFarmers MarketFast Food Restaurant
78South BeachCaféGymSandwich PlaceCoffee ShopDeli / BodegaParkScenic LookoutResidential Building (Apartment / Condo)SpaAmerican Restaurant
79South of MarketNightclubSandwich PlaceArt GalleryCoffee ShopFurniture / Home StoreFood TruckJewelry StoreBarCaféClothing Store
80StonestownCaféSandwich PlacePizza PlaceCollege CafeteriaTennis CourtParkCoffee ShopGymJuice BarMexican Restaurant
81SunnysideBarVietnamese RestaurantBaseball FieldTrailGrocery StoreDumpling RestaurantSoccer FieldCantonese RestaurantSpaCollege Gym
82Telegraph HillItalian RestaurantPizza PlaceCocktail BarCoffee ShopParkMexican RestaurantBakeryTrailChinese RestaurantScenic Lookout
83TenderloinCoffee ShopVietnamese RestaurantThai RestaurantTheaterCocktail BarSpeakeasyIndian RestaurantBurger JointSandwich PlaceHotel
84Twin PeaksTrailScenic LookoutReservoirYoga StudioFilipino RestaurantEgyptian RestaurantElectronics StoreEthiopian RestaurantEvent SpaceExhibit
85Van Ness/Civic CenterThai RestaurantVietnamese RestaurantSandwich PlaceSushi RestaurantCoffee ShopBarKorean RestaurantSouthern / Soul Food RestaurantVegetarian / Vegan RestaurantTheater
86Visitacion ValleyGardenBaseball FieldParkPoolTrailFlower ShopEvent SpaceExhibitFarmers MarketFast Food Restaurant
87West PortalCoffee ShopChinese RestaurantMusic StorePizza PlaceIndian RestaurantWine BarParkMexican RestaurantPubGym / Fitness Center
88Western AdditionCosmetics ShopShopping MallJazz ClubJapanese RestaurantNew American RestaurantFurniture / Home StoreSushi RestaurantGift ShopTea RoomGrocery Store
89Westwood HighlandsYoga StudioDinerSushi RestaurantBus LineFoodMonument / LandmarkGun RangeCantonese RestaurantBreakfast SpotTrail
90Westwood ParkYoga StudioAsian RestaurantPoke PlacePharmacyCoffee ShopBubble Tea ShopCaféGastropubFoodGrocery Store
91Yerba BuenaCoffee ShopHotelSushi RestaurantSandwich PlaceGym / Fitness CenterCaféMuseumArt MuseumBarPizza Place
\n", "

92 rows Ă— 11 columns

\n", "
" ], "text/plain": [ " nbrhood 1st Most Common Venue \\\n", "0 Alamo Square Bar \n", "1 Anza Vista Café \n", "2 Balboa Terrace Light Rail Station \n", "3 Bayview Southern / Soul Food Restaurant \n", "4 Bayview Heights Breakfast Spot \n", "5 Bernal Heights Coffee Shop \n", "6 Buena Vista Park/Ashbury Heights Boutique \n", "7 Candlestick Point Football Stadium \n", "8 Central Richmond Grocery Store \n", "9 Central Sunset Chinese Restaurant \n", "10 Central Waterfront/Dogpatch Bakery \n", "11 Clarendon Heights Trail \n", "12 Cole Valley/Parnassus Heights Wine Bar \n", "13 Corona Heights Gay Bar \n", "14 Cow Hollow Cosmetics Shop \n", "15 Crocker Amazon Pharmacy \n", "16 Diamond Heights Trail \n", "17 Downtown Hotel \n", "18 Duboce Triangle Gay Bar \n", "19 Eureka Valley / Dolores Heights Gay Bar \n", "20 Excelsior Convenience Store \n", "21 Financial District/Barbary Coast Coffee Shop \n", "22 Forest Hill Japanese Restaurant \n", "23 Forest Hills Extension Convenience Store \n", "24 Forest Knolls Trail \n", "25 Glen Park Park \n", "26 Golden Gate Heights Trail \n", "27 Golden Gate Park Park \n", "28 Haight Ashbury Café \n", "29 Hayes Valley Boutique \n", ".. ... ... \n", "62 Outer Mission Latin American Restaurant \n", "63 Outer Parkside Coffee Shop \n", "64 Outer Richmond Chinese Restaurant \n", "65 Outer Sunset Art Gallery \n", "66 Pacific Heights Cosmetics Shop \n", "67 Parkside Chinese Restaurant \n", "68 Pine Lake Park Park \n", "69 Portola Recreation Center \n", "70 Potrero Hill Park \n", "71 Presidio Museum \n", "72 Presidio Heights American Restaurant \n", "73 Russian Hill Park \n", "74 Saint Francis Wood Coffee Shop \n", "75 Sea Cliff Trail \n", "76 Sherwood Forest Tree \n", "77 Silver Terrace Park \n", "78 South Beach Café \n", "79 South of Market Nightclub \n", "80 Stonestown Café \n", "81 Sunnyside Bar \n", "82 Telegraph Hill Italian Restaurant \n", "83 Tenderloin Coffee Shop \n", "84 Twin Peaks Trail \n", "85 Van Ness/Civic Center Thai Restaurant \n", "86 Visitacion Valley Garden \n", "87 West Portal Coffee Shop \n", "88 Western Addition Cosmetics Shop \n", "89 Westwood Highlands Yoga Studio \n", "90 Westwood Park Yoga Studio \n", "91 Yerba Buena Coffee Shop \n", "\n", " 2nd Most Common Venue 3rd Most Common Venue \\\n", "0 Record Shop Boutique \n", "1 Health & Beauty Service Coffee Shop \n", "2 Pharmacy Circus \n", "3 Park Light Rail Station \n", "4 Park Burger Joint \n", "5 Park Bakery \n", "6 Park Coffee Shop \n", "7 Park Campground \n", "8 Chinese Restaurant Sushi Restaurant \n", "9 Gym / Fitness Center Pilates Studio \n", "10 Art Gallery Cocktail Bar \n", "11 Park Road \n", "12 Park Yoga Studio \n", "13 Park Thai Restaurant \n", "14 Wine Bar French Restaurant \n", "15 Gastropub Coffee Shop \n", "16 Playground Grocery Store \n", "17 Cocktail Bar Speakeasy \n", "18 Coffee Shop Gym \n", "19 Coffee Shop New American Restaurant \n", "20 Moving Target Scenic Lookout \n", "21 Italian Restaurant Food Truck \n", "22 Hotpot Restaurant Tennis Court \n", "23 Burger Joint Hotpot Restaurant \n", "24 Park Mountain \n", "25 Café Trail \n", "26 Park Bus Stop \n", "27 Track Disc Golf \n", "28 Boutique Coffee Shop \n", "29 Wine Bar Café \n", ".. ... ... \n", "62 Cosmetics Shop Spanish Restaurant \n", "63 Chinese Restaurant Pizza Place \n", "64 Café Japanese Restaurant \n", "65 Mexican Restaurant Thai Restaurant \n", "66 Coffee Shop Park \n", "67 Dumpling Restaurant Light Rail Station \n", "68 Gym Music Venue \n", "69 Lake Playground \n", "70 Café Brewery \n", "71 Brewery American Restaurant \n", "72 Park Cosmetics Shop \n", "73 Chocolate Shop Ice Cream Shop \n", "74 Chinese Restaurant Italian Restaurant \n", "75 Tea Room Beach \n", "76 Park Monument / Landmark \n", "77 Liquor Store Soccer Field \n", "78 Gym Sandwich Place \n", "79 Sandwich Place Art Gallery \n", "80 Sandwich Place Pizza Place \n", "81 Vietnamese Restaurant Baseball Field \n", "82 Pizza Place Cocktail Bar \n", "83 Vietnamese Restaurant Thai Restaurant \n", "84 Scenic Lookout Reservoir \n", "85 Vietnamese Restaurant Sandwich Place \n", "86 Baseball Field Park \n", "87 Chinese Restaurant Music Store \n", "88 Shopping Mall Jazz Club \n", "89 Diner Sushi Restaurant \n", "90 Asian Restaurant Poke Place \n", "91 Hotel Sushi Restaurant \n", "\n", " 4th Most Common Venue 5th Most Common Venue \\\n", "0 Italian Restaurant Wine Bar \n", "1 Southern / Soul Food Restaurant Mexican Restaurant \n", "2 Bakery Park \n", "3 Chinese Restaurant Thrift / Vintage Store \n", "4 Latin American Restaurant Food \n", "5 Italian Restaurant Playground \n", "6 Clothing Store Convenience Store \n", "7 Stadium American Restaurant \n", "8 Korean Restaurant Café \n", "9 Spa Shoe Store \n", "10 Brewery Wine Bar \n", "11 Bus Stop Scenic Lookout \n", "12 Athletics & Sports Burger Joint \n", "13 Cosmetics Shop Dog Run \n", "14 Gym / Fitness Center Italian Restaurant \n", "15 Bar Latin American Restaurant \n", "16 Pharmacy Dim Sum Restaurant \n", "17 Theater American Restaurant \n", "18 Sushi Restaurant New American Restaurant \n", "19 Thai Restaurant Pet Store \n", "20 Lake Flower Shop \n", "21 Men's Store New American Restaurant \n", "22 Park Playground \n", "23 Gym French Restaurant \n", "24 Garden Fountain \n", "25 Coffee Shop Grocery Store \n", "26 Playground Scenic Lookout \n", "27 Bus Stop Yoga Studio \n", "28 Thrift / Vintage Store Pizza Place \n", "29 French Restaurant Sushi Restaurant \n", ".. ... ... \n", "62 Chinese Restaurant Mexican Restaurant \n", "63 Pharmacy Beach \n", "64 Sporting Goods Shop Music Store \n", "65 Light Rail Station Coffee Shop \n", "66 Grocery Store Juice Bar \n", "67 Bubble Tea Shop Café \n", "68 Sandwich Place Food Truck \n", "69 Shopping Mall Bus Station \n", "70 Grocery Store Playground \n", "71 Outdoor Sculpture Trail \n", "72 Golf Course Baby Store \n", "73 Coffee Shop Hotel \n", "74 Indian Restaurant Pizza Place \n", "75 Scenic Lookout Golf Course \n", "76 Trail Yoga Studio \n", "77 Outdoor Gym Yoga Studio \n", "78 Coffee Shop Deli / Bodega \n", "79 Coffee Shop Furniture / Home Store \n", "80 College Cafeteria Tennis Court \n", "81 Trail Grocery Store \n", "82 Coffee Shop Park \n", "83 Theater Cocktail Bar \n", "84 Yoga Studio Filipino Restaurant \n", "85 Sushi Restaurant Coffee Shop \n", "86 Pool Trail \n", "87 Pizza Place Indian Restaurant \n", "88 Japanese Restaurant New American Restaurant \n", "89 Bus Line Food \n", "90 Pharmacy Coffee Shop \n", "91 Sandwich Place Gym / Fitness Center \n", "\n", " 6th Most Common Venue 7th Most Common Venue \\\n", "0 Sushi Restaurant Gift Shop \n", "1 Grocery Store Sandwich Place \n", "2 Playground Dessert Shop \n", "3 Theater African Restaurant \n", "4 Exhibit Farmers Market \n", "5 Gourmet Shop Yoga Studio \n", "6 Trail Scenic Lookout \n", "7 Food & Drink Shop Soccer Field \n", "8 Deli / Bodega Bakery \n", "9 Food Pet Store \n", "10 Café Gym / Fitness Center \n", "11 Art Gallery Playground \n", "12 Sports Bar Sports Club \n", "13 Sushi Restaurant Dim Sum Restaurant \n", "14 Sandwich Place Salad Place \n", "15 Scenic Lookout Tennis Court \n", "16 Salon / Barbershop Bus Station \n", "17 Hostel Breakfast Spot \n", "18 Mexican Restaurant Grocery Store \n", "19 Playground Park \n", "20 Ethiopian Restaurant Event Space \n", "21 Sandwich Place Gym \n", "22 French Restaurant Cycle Studio \n", "23 Park Pharmacy \n", "24 Football Stadium Ethiopian Restaurant \n", "25 Cosmetics Shop Dive Bar \n", "26 Home Service Tennis Court \n", "27 Ethiopian Restaurant Exhibit \n", "28 Shoe Store Clothing Store \n", "29 Clothing Store Cocktail Bar \n", ".. ... ... \n", "62 Bakery Grocery Store \n", "63 Thai Restaurant Grocery Store \n", "64 Bakery Sandwich Place \n", "65 Yoga Studio Arts & Crafts Store \n", "66 Gym / Fitness Center French Restaurant \n", "67 Japanese Restaurant Sandwich Place \n", "68 Dog Run Asian Restaurant \n", "69 Food Truck Food Stand \n", "70 Breakfast Spot Burger Joint \n", "71 Asian Restaurant General Entertainment \n", "72 New American Restaurant Supermarket \n", "73 Bike Rental / Bike Share Tour Provider \n", "74 Gym / Fitness Center Wine Bar \n", "75 Neighborhood Football Stadium \n", "76 Flea Market Ethiopian Restaurant \n", "77 Electronics Store Event Space \n", "78 Park Scenic Lookout \n", "79 Food Truck Jewelry Store \n", "80 Park Coffee Shop \n", "81 Dumpling Restaurant Soccer Field \n", "82 Mexican Restaurant Bakery \n", "83 Speakeasy Indian Restaurant \n", "84 Egyptian Restaurant Electronics Store \n", "85 Bar Korean Restaurant \n", "86 Flower Shop Event Space \n", "87 Wine Bar Park \n", "88 Furniture / Home Store Sushi Restaurant \n", "89 Monument / Landmark Gun Range \n", "90 Bubble Tea Shop Café \n", "91 Café Museum \n", "\n", " 8th Most Common Venue 9th Most Common Venue \\\n", "0 Mediterranean Restaurant BBQ Joint \n", "1 Tunnel Big Box Store \n", "2 Vietnamese Restaurant Italian Restaurant \n", "3 Plaza Gym \n", "4 Fast Food Restaurant Filipino Restaurant \n", "5 Seafood Restaurant Sandwich Place \n", "6 Gift Shop Breakfast Spot \n", "7 Flea Market Event Space \n", "8 Dim Sum Restaurant Coffee Shop \n", "9 Playground Dessert Shop \n", "10 Coffee Shop Gift Shop \n", "11 Convenience Store Wine Bar \n", "12 Breakfast Spot Street Food Gathering \n", "13 Grocery Store Coffee Shop \n", "14 Gym Bakery \n", "15 Basketball Court Pizza Place \n", "16 Video Store Coffee Shop \n", "17 Thai Restaurant Bar \n", "18 Sandwich Place Jewelry Store \n", "19 Deli / Bodega Mexican Restaurant \n", "20 Exhibit Farmers Market \n", "21 Seafood Restaurant Café \n", "22 Coworking Space Event Space \n", "23 Dive Bar Sandwich Place \n", "24 Event Space French Restaurant \n", "25 Spa Tennis Court \n", "26 Video Game Store Flower Shop \n", "27 Farmers Market Fast Food Restaurant \n", "28 Thai Restaurant Gift Shop \n", "29 Coffee Shop Bubble Tea Shop \n", ".. ... ... \n", "62 Food Asian Restaurant \n", "63 Bar Bakery \n", "64 Ramen Restaurant Yoga Studio \n", "65 Brewery Breakfast Spot \n", "66 Salon / Barbershop Bar \n", "67 Bar Liquor Store \n", "68 Hawaiian Restaurant Event Space \n", "69 Electronics Store Ethiopian Restaurant \n", "70 Bus Station Pizza Place \n", "71 Art Gallery Park \n", "72 Café Bookstore \n", "73 Diner Art Gallery \n", "74 Mexican Restaurant Pub \n", "75 Food Truck Event Space \n", "76 Event Space Exhibit \n", "77 Exhibit Farmers Market \n", "78 Residential Building (Apartment / Condo) Spa \n", "79 Bar Café \n", "80 Gym Juice Bar \n", "81 Cantonese Restaurant Spa \n", "82 Trail Chinese Restaurant \n", "83 Burger Joint Sandwich Place \n", "84 Ethiopian Restaurant Event Space \n", "85 Southern / Soul Food Restaurant Vegetarian / Vegan Restaurant \n", "86 Exhibit Farmers Market \n", "87 Mexican Restaurant Pub \n", "88 Gift Shop Tea Room \n", "89 Cantonese Restaurant Breakfast Spot \n", "90 Gastropub Food \n", "91 Art Museum Bar \n", "\n", " 10th Most Common Venue \n", "0 Ethiopian Restaurant \n", "1 Arts & Crafts Store \n", "2 American Restaurant \n", "3 Bakery \n", "4 Flea Market \n", "5 Gym \n", "6 Café \n", "7 Exhibit \n", "8 Vietnamese Restaurant \n", "9 Ethiopian Restaurant \n", "10 Dessert Shop \n", "11 Dance Studio \n", "12 Mexican Restaurant \n", "13 Diner \n", "14 Salon / Barbershop \n", "15 American Restaurant \n", "16 Shopping Mall \n", "17 Coffee Shop \n", "18 Cocktail Bar \n", "19 Men's Store \n", "20 Fast Food Restaurant \n", "21 Japanese Restaurant \n", "22 Exhibit \n", "23 Bus Stop \n", "24 Exhibit \n", "25 Gift Shop \n", "26 Farmers Market \n", "27 Filipino Restaurant \n", "28 Board Shop \n", "29 Mexican Restaurant \n", ".. ... \n", "62 Motel \n", "63 Light Rail Station \n", "64 Record Shop \n", "65 Bookstore \n", "66 Ice Cream Shop \n", "67 Burrito Place \n", "68 Exhibit \n", "69 Event Space \n", "70 Sandwich Place \n", "71 Bowling Alley \n", "72 Miscellaneous Shop \n", "73 Seafood Restaurant \n", "74 Music Store \n", "75 Exhibit \n", "76 Farmers Market \n", "77 Fast Food Restaurant \n", "78 American Restaurant \n", "79 Clothing Store \n", "80 Mexican Restaurant \n", "81 College Gym \n", "82 Scenic Lookout \n", "83 Hotel \n", "84 Exhibit \n", "85 Theater \n", "86 Fast Food Restaurant \n", "87 Gym / Fitness Center \n", "88 Grocery Store \n", "89 Trail \n", "90 Grocery Store \n", "91 Pizza Place \n", "\n", "[92 rows x 11 columns]" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "num_top_venues = 10\n", "\n", "indicators = ['st', 'nd', 'rd']\n", "\n", "# create columns according to number of top venues\n", "columns = ['nbrhood']\n", "for ind in np.arange(num_top_venues):\n", " try:\n", " columns.append('{}{} Most Common Venue'.format(ind+1, indicators[ind]))\n", " except:\n", " columns.append('{}th Most Common Venue'.format(ind+1))\n", "\n", "# create a new dataframe\n", "SF_venues_sorted = pd.DataFrame(columns=columns)\n", "SF_venues_sorted['nbrhood'] = SF_grouped['nbrhood']\n", "\n", "for ind in np.arange(SF_grouped.shape[0]):\n", " SF_venues_sorted.iloc[ind, 1:] = return_most_common_venues(SF_grouped.iloc[ind, :], num_top_venues)\n", "\n", "print(SF_venues_sorted.shape)\n", "SF_venues_sorted" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Cluster the neighborhoods using the k-means algorithm: Realization\n", "We use k-means to cluster the results into 5 clusters." ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, 1, 3, 3, 0, 1, 3, 3, 1, 3], dtype=int32)" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Set the number of clusters\n", "kclusters = 5\n", "\n", "SF_grouped_clustering = SF_grouped.drop('nbrhood', 1)\n", "\n", "# Run k-means clustering\n", "kmeans = KMeans(n_clusters=kclusters, random_state=34).fit(SF_grouped_clustering)\n", "\n", "# Check cluster labels generated for each row in the dataframe\n", "kmeans.labels_[0:10] " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create a new dataframe that includes the cluster as well as the top 10 venues for each neighborhood." ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nbrhoodincident_countshouse_avg_priceLatitudeLongitude1st Most Common Venue2nd Most Common Venue3rd Most Common Venue4th Most Common Venue5th Most Common Venue6th Most Common Venue7th Most Common Venue8th Most Common Venue9th Most Common Venue10th Most Common VenueCluster Labels
0Alamo Square6870.86201637.776076-122.433919BarRecord ShopBoutiqueItalian RestaurantWine BarSushi RestaurantGift ShopMediterranean RestaurantBBQ JointEthiopian Restaurant1
1Anza Vista3101.12153437.780611-122.443255CaféHealth & Beauty ServiceCoffee ShopSouthern / Soul Food RestaurantMexican RestaurantGrocery StoreSandwich PlaceTunnelBig Box StoreArts & Crafts Store1
2Balboa Terrace490.73796337.730649-122.468267Light Rail StationPharmacyCircusBakeryParkPlaygroundDessert ShopVietnamese RestaurantItalian RestaurantAmerican Restaurant3
3Bayview31850.43968437.732391-122.387170Southern / Soul Food RestaurantParkLight Rail StationChinese RestaurantThrift / Vintage StoreTheaterAfrican RestaurantPlazaGymBakery3
4Bernal Heights15610.44820037.740230-122.415885Coffee ShopParkBakeryItalian RestaurantPlaygroundGourmet ShopYoga StudioSeafood RestaurantSandwich PlaceGym1
\n", "
" ], "text/plain": [ " nbrhood incident_counts house_avg_price Latitude Longitude \\\n", "0 Alamo Square 687 0.862016 37.776076 -122.433919 \n", "1 Anza Vista 310 1.121534 37.780611 -122.443255 \n", "2 Balboa Terrace 49 0.737963 37.730649 -122.468267 \n", "3 Bayview 3185 0.439684 37.732391 -122.387170 \n", "4 Bernal Heights 1561 0.448200 37.740230 -122.415885 \n", "\n", " 1st Most Common Venue 2nd Most Common Venue \\\n", "0 Bar Record Shop \n", "1 Café Health & Beauty Service \n", "2 Light Rail Station Pharmacy \n", "3 Southern / Soul Food Restaurant Park \n", "4 Coffee Shop Park \n", "\n", " 3rd Most Common Venue 4th Most Common Venue \\\n", "0 Boutique Italian Restaurant \n", "1 Coffee Shop Southern / Soul Food Restaurant \n", "2 Circus Bakery \n", "3 Light Rail Station Chinese Restaurant \n", "4 Bakery Italian Restaurant \n", "\n", " 5th Most Common Venue 6th Most Common Venue 7th Most Common Venue \\\n", "0 Wine Bar Sushi Restaurant Gift Shop \n", "1 Mexican Restaurant Grocery Store Sandwich Place \n", "2 Park Playground Dessert Shop \n", "3 Thrift / Vintage Store Theater African Restaurant \n", "4 Playground Gourmet Shop Yoga Studio \n", "\n", " 8th Most Common Venue 9th Most Common Venue 10th Most Common Venue \\\n", "0 Mediterranean Restaurant BBQ Joint Ethiopian Restaurant \n", "1 Tunnel Big Box Store Arts & Crafts Store \n", "2 Vietnamese Restaurant Italian Restaurant American Restaurant \n", "3 Plaza Gym Bakery \n", "4 Seafood Restaurant Sandwich Place Gym \n", "\n", " Cluster Labels \n", "0 1 \n", "1 1 \n", "2 3 \n", "3 3 \n", "4 1 " ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create the dataframe\n", "SF_merged = SF_venues_sorted\n", "\n", "# Add clustering labels\n", "SF_merged['Cluster Labels'] = kmeans.labels_\n", "\n", "# Merge SF_grouped with SF_data to add latitude/longitude for each neighborhood\n", "SF_merged = nbh_centroid.join(SF_venues_sorted.set_index('nbrhood'), on='nbrhood')\n", "\n", "SF_merged.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Generate the San Francisco neighborhood clusters map." ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "# Create San Francisco base map\n", "SF_cluster_map = folium.Map(location=SF_Coord, zoom_start=12)\n", "\n", "# set color scheme for the clusters\n", "x = np.arange(kclusters)\n", "ys = [i+x+(i*x)**3.2 for i in range(kclusters)]\n", "colors_array = cm.rainbow(np.linspace(0, 1, len(ys)))\n", "rainbow = [colors.rgb2hex(i) for i in colors_array]\n", "\n", "# add markers to map\n", "markers_colors = []\n", "for lat, lng, nbrhood, cluster in zip(\n", " SF_merged['Latitude'], \n", " SF_merged['Longitude'], \n", " SF_merged['nbrhood'], \n", " SF_merged['Cluster Labels']):\n", " label = (\"Cluster : {}, Neighborhood: {}\").format(cluster, nbrhood)\n", " label = folium.Popup(label, parse_html=True)\n", " folium.CircleMarker(\n", " [lat, lng],\n", " radius=5,\n", " popup=label,\n", " color=rainbow[cluster-1],\n", " fill=True,\n", " fill_color=rainbow[cluster-1],\n", " fill_opacity=0.7).add_to(SF_cluster_map)\n", " \n", "#SF_cluster_map" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Results " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4.1 Crime and Housing Maps \n", "Back to page top" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Distribution of San Francisco crimes: 2018 Jan. - 2018 Sep." ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(SF_crime_map)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Distribution of 2014 San Francisco average housing price." ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(SF_housing_map)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### San Francisco neighborhood clusters based on the k-means algorithm" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(SF_cluster_map)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "#### The proposed location for the new restaurant\n", "The crime and housing price maps suggest that __North Beach__ has a relatively low crime rate and an somewhat below average housing price. This neighborhood is close to attractions such as the Fisherman's Wharf, the Lombard Street and the Colt Tower. This neighborhood belongs to the first cluster. Let's take a look at this cluster." ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [], "source": [ "def examine_clusters(id):\n", " return SF_merged.loc[SF_merged['Cluster Labels'] == id, SF_merged.columns[[0] + [1] + list(range(5, SF_merged.shape[1]))]]" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nbrhoodincident_counts1st Most Common Venue2nd Most Common Venue3rd Most Common Venue4th Most Common Venue5th Most Common Venue6th Most Common Venue7th Most Common Venue8th Most Common Venue9th Most Common Venue10th Most Common VenueCluster Labels
19Forest Hill89Japanese RestaurantHotpot RestaurantTennis CourtParkPlaygroundFrench RestaurantCycle StudioCoworking SpaceEvent SpaceExhibit0
24Golden Gate Park544ParkTrackDisc GolfBus StopYoga StudioEthiopian RestaurantExhibitFarmers MarketFast Food RestaurantFilipino Restaurant0
43Merced Heights33GardenRacetrackParkLiquor StoreLight Rail StationYoga StudioFlea MarketEvent SpaceExhibitFarmers Market0
44Merced Manor61GymParkArt GalleryTennis CourtJapanese RestaurantBubble Tea ShopMusic VenueWeight Loss CenterFood TruckPet Store0
47Miraloma Park191ParkPlaygroundMonument / LandmarkTreeBus LineCollege AuditoriumEvent SpaceExhibitFarmers MarketFast Food Restaurant0
64Pine Lake Park36ParkGymMusic VenueSandwich PlaceFood TruckDog RunAsian RestaurantHawaiian RestaurantEvent SpaceExhibit0
72Silver Terrace678ParkLiquor StoreSoccer FieldOutdoor GymYoga StudioElectronics StoreEvent SpaceExhibitFarmers MarketFast Food Restaurant0
89Bayview Heights253Breakfast SpotParkBurger JointLatin American RestaurantFoodExhibitFarmers MarketFast Food RestaurantFilipino RestaurantFlea Market0
\n", "
" ], "text/plain": [ " nbrhood incident_counts 1st Most Common Venue \\\n", "19 Forest Hill 89 Japanese Restaurant \n", "24 Golden Gate Park 544 Park \n", "43 Merced Heights 33 Garden \n", "44 Merced Manor 61 Gym \n", "47 Miraloma Park 191 Park \n", "64 Pine Lake Park 36 Park \n", "72 Silver Terrace 678 Park \n", "89 Bayview Heights 253 Breakfast Spot \n", "\n", " 2nd Most Common Venue 3rd Most Common Venue 4th Most Common Venue \\\n", "19 Hotpot Restaurant Tennis Court Park \n", "24 Track Disc Golf Bus Stop \n", "43 Racetrack Park Liquor Store \n", "44 Park Art Gallery Tennis Court \n", "47 Playground Monument / Landmark Tree \n", "64 Gym Music Venue Sandwich Place \n", "72 Liquor Store Soccer Field Outdoor Gym \n", "89 Park Burger Joint Latin American Restaurant \n", "\n", " 5th Most Common Venue 6th Most Common Venue 7th Most Common Venue \\\n", "19 Playground French Restaurant Cycle Studio \n", "24 Yoga Studio Ethiopian Restaurant Exhibit \n", "43 Light Rail Station Yoga Studio Flea Market \n", "44 Japanese Restaurant Bubble Tea Shop Music Venue \n", "47 Bus Line College Auditorium Event Space \n", "64 Food Truck Dog Run Asian Restaurant \n", "72 Yoga Studio Electronics Store Event Space \n", "89 Food Exhibit Farmers Market \n", "\n", " 8th Most Common Venue 9th Most Common Venue 10th Most Common Venue \\\n", "19 Coworking Space Event Space Exhibit \n", "24 Farmers Market Fast Food Restaurant Filipino Restaurant \n", "43 Event Space Exhibit Farmers Market \n", "44 Weight Loss Center Food Truck Pet Store \n", "47 Exhibit Farmers Market Fast Food Restaurant \n", "64 Hawaiian Restaurant Event Space Exhibit \n", "72 Exhibit Farmers Market Fast Food Restaurant \n", "89 Fast Food Restaurant Filipino Restaurant Flea Market \n", "\n", " Cluster Labels \n", "19 0 \n", "24 0 \n", "43 0 \n", "44 0 \n", "47 0 \n", "64 0 \n", "72 0 \n", "89 0 " ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.set_option('display.max_rows', 100)\n", "examine_clusters(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So indeed, the first few most common venues in neighborhoods that belong to cluster #0 are all restaurants which include bars, coffee shops/cafe, Chinese/Japanese/Korean/American/Italian restaurants. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4.2 A Closer Look at the Proposed Location \n", "Back to page top" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "According to the maps, it appears that the neighborhood __Russian Hills__ has a relatively low crime rate and housing price. This neighborhood is close several attractions too. Let's use Foursquare API to explore vicinities of this neighborhood." ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "nbrhood North Beach\n", "nid 8d\n", "sfar_distr District 8 - Northeast\n", "geometry POLYGON ((-122.4172945622149 37.80506527491107...\n", "incident_counts 732\n", "house_avg_price 0.799696\n", "Name: 53, dtype: object" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nbh_name = 'North Beach'\n", "nbh_index = nbrhoods.index[nbrhoods['nbrhood'] == nbh_name][0]\n", "nbh_lat, nbh_lng = nbh_centroid.loc[nbh_index, ['Latitude', 'Longitude']]\n", "\n", "nbrhoods.loc[nbh_index]" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nbrhood1st Most Common Venue2nd Most Common Venue3rd Most Common Venue4th Most Common Venue5th Most Common Venue6th Most Common Venue7th Most Common Venue8th Most Common Venue9th Most Common Venue10th Most Common VenueCluster Labels
58North BeachItalian RestaurantPizza PlaceChinese RestaurantBakeryCocktail BarCoffee ShopCaféDive BarDeli / BodegaYoga Studio1
\n", "
" ], "text/plain": [ " nbrhood 1st Most Common Venue 2nd Most Common Venue \\\n", "58 North Beach Italian Restaurant Pizza Place \n", "\n", " 3rd Most Common Venue 4th Most Common Venue 5th Most Common Venue \\\n", "58 Chinese Restaurant Bakery Cocktail Bar \n", "\n", " 6th Most Common Venue 7th Most Common Venue 8th Most Common Venue \\\n", "58 Coffee Shop CafĂ© Dive Bar \n", "\n", " 9th Most Common Venue 10th Most Common Venue Cluster Labels \n", "58 Deli / Bodega Yoga Studio 1 " ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "SF_venues_sorted.loc[SF_venues_sorted['nbrhood'] == nbh_name]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This table shows that the North Beach already has many restaurants in the area. This sort of indicates that indeed North Beach is an ideal neighborhood for opening a new restanrant. But we have many coompetitors! To know our potential competitors, we use Foursquare API and this time add __food__ to the parameter *section* to look for restaurants in this neighborhood. Using the results, we'll map out our competitors." ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [], "source": [ "# Set up the FourSquare API call\n", "section = 'food'\n", "url = 'https://api.foursquare.com/v2/venues/explore?client_id={0}&client_secret={1}&v={2}&ll={3},{4}§ion={5}&radius={6}&limit={7}'.format(\n", " CLIENT_ID,\n", " CLIENT_SECRET,\n", " VERSION,\n", " nbh_lat,\n", " nbh_lng,\n", " section,\n", " RADIUS,\n", " LIMIT)\n", "\n", "# Fetch the top 100 venues\n", "results = requests.get(url).json()" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namecategorieslatlng
0Tony’s Pizza NapoletanaPizza Place37.800328-122.409040
1Park TavernNew American Restaurant37.801097-122.409301
2Trattoria ContadinaTrattoria/Osteria37.800078-122.412422
3The Italian Homemade CompanyItalian Restaurant37.801497-122.411795
4Mario's Bohemian Cigar Store CafeCafé37.800391-122.409876
\n", "
" ], "text/plain": [ " name categories lat \\\n", "0 Tony’s Pizza Napoletana Pizza Place 37.800328 \n", "1 Park Tavern New American Restaurant 37.801097 \n", "2 Trattoria Contadina Trattoria/Osteria 37.800078 \n", "3 The Italian Homemade Company Italian Restaurant 37.801497 \n", "4 Mario's Bohemian Cigar Store Cafe Café 37.800391 \n", "\n", " lng \n", "0 -122.409040 \n", "1 -122.409301 \n", "2 -122.412422 \n", "3 -122.411795 \n", "4 -122.409876 " ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "venues = results['response']['groups'][0]['items']\n", " \n", "nearby_venues = json_normalize(venues) # flatten JSON\n", "\n", "# filter columns\n", "filtered_columns = ['venue.name', 'venue.categories', 'venue.location.lat', 'venue.location.lng']\n", "nearby_venues =nearby_venues.loc[:, filtered_columns]\n", "\n", "# filter the category for each row\n", "nearby_venues['venue.categories'] = nearby_venues.apply(get_category_type, axis=1)\n", "\n", "# clean columns\n", "nearby_venues.columns = [col.split(\".\")[-1] for col in nearby_venues.columns]\n", "\n", "nearby_venues.head()" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "62 venues were returned by Foursquare.\n" ] } ], "source": [ "print('{} venues were returned by Foursquare.'.format(nearby_venues.shape[0]))" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create San Francisco base map\n", "target_map = folium.Map(location=(nbh_lat, nbh_lng), zoom_start=17)\n", "\n", "for lat, lng, categories in zip(\n", " nearby_venues['lat'], \n", " nearby_venues['lng'], \n", " nearby_venues['categories']):\n", " label = (\"{}\").format(categories)\n", " label = folium.Popup(label, parse_html=True)\n", " folium.CircleMarker(\n", " [lat, lng],\n", " radius=6,\n", " popup=label,\n", " color='green',\n", " fill=True,\n", " fill_color='green',\n", " fill_opacity=0.7).add_to(target_map)\n", " \n", "target_map" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The above map shows that the restaurants are located mostly in the blocks along Columbus Avene. We can get a list of restaurant categories from *nearby_venues*." ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['Pizza Place',\n", " 'New American Restaurant',\n", " 'Trattoria/Osteria',\n", " 'Italian Restaurant',\n", " 'Café',\n", " 'Seafood Restaurant',\n", " 'Argentinian Restaurant',\n", " 'Bakery',\n", " 'Tuscan Restaurant',\n", " 'Latin American Restaurant',\n", " 'South American Restaurant',\n", " 'Breakfast Spot',\n", " 'Deli / Bodega',\n", " 'Sicilian Restaurant',\n", " 'Chinese Restaurant',\n", " 'Taco Place',\n", " 'Mexican Restaurant',\n", " 'Sushi Restaurant',\n", " 'Asian Restaurant',\n", " 'Sandwich Place',\n", " 'Diner',\n", " 'Burger Joint',\n", " 'Gastropub',\n", " 'French Restaurant',\n", " 'Persian Restaurant',\n", " 'Thai Restaurant',\n", " 'Indian Restaurant',\n", " 'Southern / Soul Food Restaurant']" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "venue_category_list = list(nearby_venues['categories'].unique())\n", "venue_category_list" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5. Discussion \n", "Back to page top" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By analyzing public datasets obtained from DataSF, we locate __North Beach__ as a possible neighborhood that is ideal for opening a new restaurant. We rely on aggregating crime and housing price data, the two primary factors that are critical for determining the location. With the help from the Foursquare API, we further demonstrate that __North Beach__ indeed is a good candidate by showing there are already restaurants in this area along the Columbus Avenue. We also obtain a list of our competitors by using again the Foursquare Explore API, and are able to pinpoint the competitors' location. \n", "At the end, while we have identified an ideal neighborhood, we are also facing rather strong competitions. To differenciate our new restaurant from competitors, we need inputs from the data. Obviously, our analysis has rooms for improvement.\n", "\n", "1. Visibility: Our results indicate that __North Beach__ should have sizable foot and car traffic along the Columbus Avenue. So to follow these traffics, we can certainly open our new restaurant somewhere on the avenue. A good alternative is the blocks away from the avenue. However, we need to analyze the data in further detail so that the traffic pattern can be revealed.\n", "\n", "2. Competitor analysis: In Section 4.2, we very list the categories of restaurant in __North Beach__ neighborhood. This list provides an excellent overview of our competitors. It also guides us in determining which category we should be focusing on or avoiding. An obvious improvement here is to cluster the restaurant categories. The results could let us know the landscape of the restaurant business in this neighborhood.\n", "\n", "3. Parking: This is a rather important factor that is not addressed in our analysis. While we have public parking space data, there are many private parkings in San Francisco and we don't have the data. The next step is to obtain a distribution of these parking spaces. Or one could extract the parking information in realtime by using the ParkWhiz API calls." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6. Conclusion \n", "Back to page top" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this capstone project, we address the business problem of finding a good location in San Francisco for opening a new restaurant. We identify the most important factors that could impact the choice. Using crime and housing price datasets, we are able to locate a possible neighborhood that has a relatively low crime rate and housing cost. Foursquare API recommendation results also seem to support our pick. But we equally are facing competitions. We have discussed several possible improvements. It would be a very interesting followup project if somehow we could automate the location recommendation process. In thsi project, we sort of idtentify the neighborhood by just eyeballing the maps and results. To build an automatic recommender, we would have to design a quantitative measure that allows us to gauge each location. The final location is obviously a compromise between all the factors that could impact the selection. So in addition to the clustering algorithm, we may need other machine learning models such as regression to determine or estimate the score. We'll leave this for future projects." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.8" } }, "nbformat": 4, "nbformat_minor": 2 }