{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Sparkify - Subset Analytics" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from pyspark.sql import SparkSession\n", "from pyspark.sql.functions import udf, countDistinct, count, when, sum,col\n", "from pyspark.sql.types import IntegerType\n", "\n", "from pyspark.ml import Pipeline\n", "from pyspark.ml.classification import LogisticRegression\n", "from pyspark.ml.evaluation import MulticlassClassificationEvaluator\n", "from pyspark.ml.regression import LinearRegression\n", "from pyspark.ml.tuning import CrossValidator, ParamGridBuilder\n", "\n", "from pyspark.ml.feature import OneHotEncoder, StringIndexer, MinMaxScaler, VectorAssembler\n", "from pyspark.ml.classification import LogisticRegression, RandomForestClassifier, GBTClassifier\n", "from sklearn.metrics import confusion_matrix\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "import warnings\n", "\n", "warnings.filterwarnings('ignore')\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# create a Spark session\n", "spark = (SparkSession.builder \n", " .master(\"local\") \n", " .appName(\"Creating Features\") \n", " .getOrCreate())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Load and Clean Dataset\n", "Clean the dataset, checking for invalid or missing data. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DataFrame[artist: string, auth: string, firstName: string, gender: string, itemInSession: bigint, lastName: string, length: double, level: string, location: string, method: string, page: string, registration: bigint, sessionId: bigint, song: string, status: bigint, ts: bigint, userAgent: string, userId: string]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "events = spark.read.json('mini_sparkify_event_data.json')\n", "events.persist()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Exploratory Data Analysis\n", "Performing EDA by loading a small subset of the data and doing basic manipulations within Spark will help us get an idea of the data we are looking at" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using pringSchema function of Spark dataframe to show the columns and data types of this dataset" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "root\n", " |-- artist: string (nullable = true)\n", " |-- auth: string (nullable = true)\n", " |-- firstName: string (nullable = true)\n", " |-- gender: string (nullable = true)\n", " |-- itemInSession: long (nullable = true)\n", " |-- lastName: string (nullable = true)\n", " |-- length: double (nullable = true)\n", " |-- level: string (nullable = true)\n", " |-- location: string (nullable = true)\n", " |-- method: string (nullable = true)\n", " |-- page: string (nullable = true)\n", " |-- registration: long (nullable = true)\n", " |-- sessionId: long (nullable = true)\n", " |-- song: string (nullable = true)\n", " |-- status: long (nullable = true)\n", " |-- ts: long (nullable = true)\n", " |-- userAgent: string (nullable = true)\n", " |-- userId: string (nullable = true)\n", "\n" ] } ], "source": [ "events.printSchema()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using describe() to check the statistics of each column" ] }, { "cell_type": "code", "execution_count": 5, "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", "
summaryartistauthfirstNamegenderitemInSessionlastNamelengthlevellocationmethodpageregistrationsessionIdsongstatustsuserAgentuserId
0count228108286500278154278154286500278154228108286500278154286500286500278154286500228108286500286500278154286500
1mean551.0852017937219NoneNoneNone114.41421291448516None249.1171819778458NoneNoneNoneNone1.5353588340844272E121041.526554973822Infinity210.054596858638751.5409568898104834E12None59682.02278593872
2stddev1217.7693079161374NoneNoneNone129.76726201140994None99.23517921058361NoneNoneNoneNone3.291321616327586E9726.7762634630741NaN31.505078488422141.5075439608226302E9None109091.9499991047
3min!!!CancelledAdelaidaF0Adams0.78322freeAlbany, ORGETAbout15213806750001Ég Átti Gráa Æsku2001538352117000\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10)...
4maxÓlafur ArnaldsLogged OutZyonnaM1321Wright3024.66567paidWinston-Salem, NCPUTUpgrade15432473540002474Þau hafa sloppið undan þunga myrkursins4041543799476000Mozilla/5.0 (compatible; MSIE 9.0; Windows NT ...99
\n", "
" ], "text/plain": [ " summary artist auth firstName gender \\\n", "0 count 228108 286500 278154 278154 \n", "1 mean 551.0852017937219 None None None \n", "2 stddev 1217.7693079161374 None None None \n", "3 min !!! Cancelled Adelaida F \n", "4 max Ólafur Arnalds Logged Out Zyonna M \n", "\n", " itemInSession lastName length level location \\\n", "0 286500 278154 228108 286500 278154 \n", "1 114.41421291448516 None 249.1171819778458 None None \n", "2 129.76726201140994 None 99.23517921058361 None None \n", "3 0 Adams 0.78322 free Albany, OR \n", "4 1321 Wright 3024.66567 paid Winston-Salem, NC \n", "\n", " method page registration sessionId \\\n", "0 286500 286500 278154 286500 \n", "1 None None 1.5353588340844272E12 1041.526554973822 \n", "2 None None 3.291321616327586E9 726.7762634630741 \n", "3 GET About 1521380675000 1 \n", "4 PUT Upgrade 1543247354000 2474 \n", "\n", " song status \\\n", "0 228108 286500 \n", "1 Infinity 210.05459685863875 \n", "2 NaN 31.50507848842214 \n", "3 \n", "Ég Átti Gráa Æsku 200 \n", "4 Þau hafa sloppið undan þunga myrkursins 404 \n", "\n", " ts userAgent \\\n", "0 286500 278154 \n", "1 1.5409568898104834E12 None \n", "2 1.5075439608226302E9 None \n", "3 1538352117000 \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10)... \n", "4 1543799476000 Mozilla/5.0 (compatible; MSIE 9.0; Windows NT ... \n", "\n", " userId \n", "0 286500 \n", "1 59682.02278593872 \n", "2 109091.9499991047 \n", "3 \n", "4 99 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "events.describe().toPandas()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Investigate *auth* column - We would like to understand all the unique values in the *auth* column" ] }, { "cell_type": "code", "execution_count": 6, "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", "
authcount(DISTINCT userId)
0Logged Out1
1Cancelled52
2Guest1
3Logged In225
\n", "
" ], "text/plain": [ " auth count(DISTINCT userId)\n", "0 Logged Out 1\n", "1 Cancelled 52\n", "2 Guest 1\n", "3 Logged In 225" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "events.groupBy(\"auth\").agg(countDistinct(\"userId\")).toPandas()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*auth* likely represents the status of the user. Most users are normal users (log in). 52 users cancelled their subscriptions. We will look at the *page* column to investigate their behaviors. " ] }, { "cell_type": "code", "execution_count": 7, "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", "
pagecount(userId)
0Cancel52
1Submit Downgrade63
2Thumbs Down2546
3Home14457
4Downgrade2055
5Roll Advert3933
6Logout3226
7Save Settings310
8Cancellation Confirmation52
9About924
10Submit Registration5
11Settings1514
12Login3241
13Register18
14Add to Playlist6526
15Add Friend4277
16NextSong228108
17Thumbs Up12551
18Help1726
19Upgrade499
20Error258
21Submit Upgrade159
\n", "
" ], "text/plain": [ " page count(userId)\n", "0 Cancel 52\n", "1 Submit Downgrade 63\n", "2 Thumbs Down 2546\n", "3 Home 14457\n", "4 Downgrade 2055\n", "5 Roll Advert 3933\n", "6 Logout 3226\n", "7 Save Settings 310\n", "8 Cancellation Confirmation 52\n", "9 About 924\n", "10 Submit Registration 5\n", "11 Settings 1514\n", "12 Login 3241\n", "13 Register 18\n", "14 Add to Playlist 6526\n", "15 Add Friend 4277\n", "16 NextSong 228108\n", "17 Thumbs Up 12551\n", "18 Help 1726\n", "19 Upgrade 499\n", "20 Error 258\n", "21 Submit Upgrade 159" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "events.groupBy(\"page\").agg(count(\"userId\")).toPandas()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The same user cancellations amount showed up in *auth* column. Downgrade events also showed up in the page column. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
count(DISTINCT artist)count(DISTINCT song)count(DISTINCT userAgent)
0176555848056
\n", "
" ], "text/plain": [ " count(DISTINCT artist) count(DISTINCT song) count(DISTINCT userAgent)\n", "0 17655 58480 56" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "events.agg(countDistinct(\"artist\"), \n", " countDistinct('song'),\n", " countDistinct('userAgent')).toPandas()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "user agent does not have a lot of different values, which could be utilized as a feature" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Define Churn" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will define Churn as `Cancellation Confirmation` events. We could also add `Downgrade` events as Churn, but we could use `Downgrade` events as an additional feature to predict `Cancellation Confirmation` events (Churn). " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create a column named `Churn` as the label of whether the user has churned" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# find the user_id of the churned users\n", "churned_users = (events.filter(events.page == 'Cancellation Confirmation')\n", " .select('userId')\n", " .distinct()\n", " .rdd.flatMap(lambda x: x)\n", " .collect())\n", "\n", "# # create a new column indicating the user has churned\n", "events = events.withColumn('Churn', \n", " when(events.userId.isin(churned_users), 1).otherwise(0))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Explore Data\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Perform some exploratory data analysis to observe the behavior for users who stayed vs users who churned. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**1.** Investigate the difference between the average number of songs played by churned/non-churned users" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# filter events log to contain only next song\n", "events_songs = events.filter(events.page == 'NextSong')\n", "\n", "# users count\n", "user_count = events_songs.groupby(events_songs.Churn).agg(countDistinct('userId'))\n", "\n", "# Total songs played\n", "total_songs = events_songs.groupby(events_songs.Churn).agg(sum('length'))\n", "\n", "# find average length of the songs played\n", "avg_song_length = (total_songs.join(user_count, total_songs.Churn == user_count.Churn)\n", " .drop(user_count.Churn))\n", "avg_song_length = avg_song_length.withColumn('AvgLength', \n", " avg_song_length['sum(length)']/ avg_song_length['count(DISTINCT userId)'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot the difference in average length of songs" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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iy7ixRdf5KMf/Sjjx4/nkEMOYaeddurxbO2FF17giCOO4D3veQ877rgjl13W/Jenc845hwMPPJDJkyczduxYvvSlL722zllnncU222zDbrvtxqc+9SmOOeYYfv3rXzNz5ky++MUvMmHCBB588EEAfvSjHzFp0iS22WYbrr/++oF4eiRpSFgjzxQHw6WXXsrkyZPZZptt2Hjjjbn11luZMmUK559/Pvvuuy+vvPIK11xzDWeccQann346G220EXfccQd33XUXEyZM6LHtU089ld13351p06bx9NNPM2nSJPbcc08Abr/9dm677TbWXXddtt12Wz7zmc8wbNgwTjnlFG699VZGjBjB7rvvzg477MB73/tePvzhD/PBD36Qgw466LX2Fy1axE033cSsWbM4+eSTufrqqwf0uZKkwWIoriTTp0/n2GOPBWDKlClMnz6dU045hc9+9rO8/PLLXH755bz//e9nvfXW44YbbuBzn/scANtvvz3jx4/vse0rr7ySmTNn8o1vfANoZts+/PDDAOyxxx5ssMEGAIwbN46HHnqI+fPns+uuu7LxxhsDcPDBB3P//fd32/6BBx4IwLvf/W7mzp27/E+CtIz6+1KHlk9fLxGtDgzFlWDBggVce+213HXXXUQEixcvJiL4+te/zm677cYVV1zB+eefz6GHHgo0v/e3LDKTiy66iG233Xap8htvvJF11133tcfDhg1j0aJFy9x+Zxud60vS6spriivBhRdeyGGHHcZDDz3E3LlzeeSRR9h666254YYbmDJlCmeffTbXX389e++9NwC77LILF1xwAQD33HMPd955Z4/t77333nznO995Lexuu+22HutPmjSJX/7ylzz11FMsWrSIiy666LVlI0aM4LnnnluR3ZWkVZahuBJMnz6dAw44YKmyj3zkI/zwhz9kr7324rrrrmPPPfdknXXWAeBv//ZvmTdvHuPHj+e0005j/Pjxrw2BAowfP57Ro0czevRoPv/5z3PCCSewcOFCxo8fz/bbb88JJ5zQY39GjRrF8ccfz0477cSee+7JuHHjXmt/ypQp/Mu//As77rjjaxNtJGlNEcs6lDbUTZw4MbvO1Lz33nt55zvfOUg9WnaLFy9m4cKFDB8+nAcffJA99tiD+++//7XQ7A/PP/8866+/PosWLeKAAw7giCOOeF1wL6tV7XnW0Oc1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\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "(avg_song_length.select('Churn', 'AvgLength')\n", " .toPandas()\n", " .set_index('Churn')\n", " .plot(kind = 'bar', figsize = (7, 5), title = 'Average Play Length Churned/Non-Churned Users'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The non-churned users on average, used the service way more often than the churned users" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**2.** Check other direct activities differences between the churned/non-churned users" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pivot the data on user level" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "events_pivot = events.groupby([\"userId\"]).pivot(\"page\").count().fillna(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Convert the *events_pivot* dataframe to pandas, build box plots for all these different activities" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "events_pivot = events_pivot.toPandas()\n", "events_pivot.rename(columns={'Cancellation Confirmation': 'Churn'}, inplace = True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot boxplots for different activities" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "plot_columns = events_pivot.drop('Churn', axis = 1).columns" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsgAAATSCAYAAACjNhKxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xm4JHV59//3JyyKgiyCCAwwmhAjMQHMuAWjRDQCKpDEBdzQEEmen7g8+jyKJgoaTdAncUk0JogIKiKI2wSISlAkGEUGBBVGL0YEZ2SEURZRkUXv3x9VB2vO9Jk5s5yuPt3v13X1dbqqvl191zl397n729+qb6oKSZIkSY3f6DsASZIkaZRYIEuSJEkdFsiSJElShwWyJEmS1GGBLEmSJHVYIEuSJEkdFsiSxkaSU5O8pe84+ra230OSFyW5eEhxDO25JGlTskCWtMkluS7JHUl+muSWJOcm2b3vuLqSVJLf6juO+S7JU5NclOT2JKuSfCnJoX3HJUkbwwJZ0lx5RlVtDewC3Aj8S8/xzJk0Ju79NMkzgY8DHwIWADsDbwSeMQfPtfmm3qckzWTi3tAlDVdV/QI4G9h7al2SbZN8qO1xvD7J304VmEnel+TsTtu3JbmgLUIPSLIiyeuT/KjtqX7eTM+d5CVJliW5OcniJLu26y9qm1zZ9nI/Z8BjN0vyT+3zfC/JsW2v8+bt9guTvDXJl4GfAw9Nsmv7PDe3z/uSzv5WG/YwdSyd5euSvC7J1W2v+weT3Lez/elJrkhya5L/SfL7nW37Jbm87cU9E7j3cTP/avIvSW5L8u0kB7Yrn5XksmkNX53k04N2ALwD+LuqOrmqbquqX1XVl6rqJdPa/mN7TN9LcvC0Y35yZ/mEJB9p7y9sf99HJ/k+8IXOuqOSfL/92/zNOo5VktabBbKkOZXkfsBzgK92Vv8LsC3wUOCJwAuBF7fbXg38fjt+9Y+Ao4Gjqqra7Q8GdgR2A44CTkrysAHP+yTgH4Bn0/RiXw98DKCqntA226eqtq6qMweE/hLgYGBf4JHA4QPavAA4Btim3f8ZwApgV+CZwN9PFZ+z9DzgqcBvAr8N/G17LI8ETgH+Cngg8O/A4iT3SbIl8Gngw8AOND26f76O53kMcC3N7/F44JNJdgAWAw9J8vBO2+e3+57uYcDuNB9+1vVc32mf6+3AB9rieraeCDyc5vcy5fHt8x8IvHFavJK00SyQJc2VTye5FfgJ8BTg/0HTM0tTML+uqm6vquuAf6IpNqmqn9MUZe8APgK8rKpWTNv3G6rqzqr6EnAuTRE83fOAU6rq8qq6E3gd8LgkC2cZ/7OBd1fViqq6BThxQJtTq+qqqrqHpnB/PPDaqvpFVV0BnDx1XLP0nqpaXlU3A28FjmzXvwT496q6pKp+WVWnAXcCj21vWwDvqqq7q+ps4NJ1PM9NnfZn0hSwT2t/T2fS/P5J8rvAQuCcAft4YPtz5Tqe6/qqen9V/RI4jebDys7reEzXCVX1s6q6o7PuTVV1R1VdCVwJ7LMe+5OkdbJAljRXDq+q7YD7AMcCX0oy1fu7JU2P65TraXqEAaiqr9H0cAY4a9p+b6mqn0177K4Dnn/X7nNU1U+BH3efZx12BZZ3lpcPaNNdtytwc1XdPi222T7f9P11j2tP4NXt8Ipb2w8eu7fbdwV+0Olhn3rs2gxqP/VcpwHPbXt5XwCc1RbO0/24/bnLOp7rh1N32g8/AFuv4zFdg37vP+zc//l67k+S1skCWdKcans8Pwn8kqaH9UfA3TRF35Q9gB9MLSR5KU1hfQPwmmm73D7J/ac99oYBT31D9znaxzyw+zzrsJLmxLMpg67C0S0ybwB2SLLNtNimnu9nwP062x48YH/d5+ge13LgrVW1Xed2v6o6o41zt2nDFvaY6aBag9rfAFBVXwXuAv4IeC6Dh1dA0+u8nHUP51ib2fxOasA6SZpTFsiS5lR7ct1hwPbA0var9rOAtybZJsmewKtohlOQ5LeBt9B8zf8C4DVJ9p222zcl2bIdo/x0mnG3030UeHGSfZPcB/h74JJ2SAc0V9Z46FpCPwt4RZLdkmwHvHZtx1lVy4H/Af4hyX3bk+iOBk5vm1wBHJJkh7Yn/ZUDdvPSJAva8cCvpxnuAPB+4K+TPKb9fd4/ydPaYvwrwD3Ay5NsnuTPgEevLVbgQW37LZI8i2aM73md7R8C3gPcU1UDr2Pc9kC/CnhDkhcneUCS30jy+CQnreP5p1wBHNHGsYhm3LYk9c4CWdJc+Y8kP6UZg/xWmhPtrmq3vYym9/Ba4GKaYvaUNFeI+Ajwtqq6sqquoSkUP9wWudB8vX4LTY/n6cBfV9W3pz95VV0AvAH4BE0v628CR3SanACc1g5ZGDSG+f3A54FvAF+nKSDvoekJn8mRNGN2bwA+BRxfVee32z5MM172una/g04M/Gi77dr29pb2WJbQjEN+T3vsy4AXtdvuAv6sXb6FZnz3J9cSI8AlwF40vflvBZ5ZVT/ubP8w8Ahm7j2mfe6z2+f7i/aYb2xj/sw6nn/KG2j+LrcAb6I5fknqXVYfhiZJoyvJAcBHqmrButrOwXMfDPxbVe25zsYbtv/rgL+sqv+ai/2vZyxb0ZzI98j2Q4okTRR7kCVpgCRbJTmkHbawG83l0D7Vd1xD8r+ASy2OJU0qZyaSpMFC87X/mcAdNJeTe2OvEQ1B25MdBl/3WZImgkMsJEmSpA6HWEiSJEkdFsiSJElShwWyJEmS1GGBLEmSJHVYIEuSJEkdFsiSJElShwWyJEmS1GGBLEmSJHVYIEuSJEkdFsiSJElShwWyJEmS1GGBLEmSJHVYIEuSJEkdFsiSJElShwWyJEmS1GGBLEmSJHVYIEuSJEkdFsiSJElShwWyJEmS1GGBLEmSJHVYIEuSJEkdFsiSJElShwWyJEmS1GGBLEmSJHVYIEuSJEkdFsiSJElShwWyJEmS1GGBLEmSJHVYIEuSJEkdFsiSJElShwWyJEmS1GGBLEmSJHVYIEuSJEkdFsiSJElShwWyJEmS1GGBLEmSJHVYII+IJKcmeUvfcUjTJXlRkovXsv3CJH+5iZ7rP5MctSn2NW2/C5NUks039b7Vn2Hm5vpIckKSj2zK/STZI8lPk2y28RFKm8amyvVRZIHcg/ZN+5Yk9xnCc1kYaKBh5GH75nl3+4996vaamdpX1cFVddpcxaP5YYi5ucH/2NtOjbvanL45yflJfmdTxthVVd+vqq2r6pfriGutHxo0/yV5bpIlbe6tbDsWHt93XOPGAnnIkiwE/ggo4NBeg9HEGnIentn+Y5+6vX1APEni+5Hm23vk26tqa2ABcBNwar/haNwleRXwLuDvgZ2BPYB/BQ7rM65x5D+k4Xsh8FWaN9LpXyXv2PZC3J7kS0n2nNqQ5A+TXJrktvbnH3a2XZfkyZ3lbs/IRe3PW9tPm4+bk6PSfDNjHiZ5YJLFSX6S5GvAb07b/pQk325z8T1ANiSAtpfwrUm+DPwceOj0r8ST/EWSpW1v4uemvSYqyV8nuabd/t4kabdtluQfk/woybXA0zYkRvViznMzyUHA64HntO+LV7brd233f3OSZUleMpuAq+rnwEeBR8zwfB9P8sM2rouS/G67/lFJbux+w5fkz5NcMWAfq30b2PYUX9v+v/hekucleTjwb8Dj2uO6dTbxa35Isi3wZuClVfXJqvpZVd1dVf9RVf83yaOTfCXJrW3P8nuSbNl5/Izvme32l7Tvt7cnuTrJI9v1uyb5RJJVba69fPhHP3wWyMP3QuD09vbUJDt3tj0P+DtgR+CKtg1JdgDOBf4ZeCDwDuDcJA+cxfM9of25Xdt795VNchSa79aWh+8FfgHsAvxFewMgyY7AJ4C/pcnT7wL7b0QcLwCOAbYBru9uSHI4TRHzZ8BOwH8DZ0x7/NOBRwH7AM8Gntquf0m7bT9gEfDMjYhRwzXnuVlVn6XpgZv6dmOfdtMZwApgV5qc+fskB64r4CRb07x/f32GJv8J7AU8CLi8PTaq6lLgx8BTOm2fD3x4Hc93f5r/BwdX1TbAHwJXVNVS4K+Br7THtd26Yte88jjgvsCnZtj+S+B/0+T/44ADgf9vWpuB75lJngWcQPP6ewDNtzc/br/Z+w/gSmC3dp+vTPJUxpwF8hClGSO0J3BWVV1G8wb+3E6Tc6vqoqq6E/gbml6A3Wl6v66pqg9X1T1VdQbwbeAZQz4EjYG15WGaE4D+HHhj2zvxLaA7JvgQ4OqqOruq7qb5qu+H63jKZ7c9GlO3XTvbTq2qq9q8vnva4/4K+IeqWlpV99AUNPt2e5GBE6vq1qr6PvBFYN+p5wTeVVXLq+pm4B9m9ctRr3rIze5z7w48HnhtVf2iqq4ATqb5EDeT/9P20i4DtgZeNKhRVZ1SVbe37+0nAPu0vYG0x/D8NoYdaAqWj84i5F8Bj0iyVVWtrKqrZvEYzW8PBH7Uvh+uoaouq6qvtu+n1wH/DjxxWrOZ3jP/kmbI0KXVWFZV19MU0ztV1Zur6q6quhZ4P3DEHBzfSLFAHq6jgM9X1Y/a5Y+y+leIy6fuVNVPgZtpejJ2ZVrvWru829yFqjG2tjzcCdicTi6yeu7tyup5WtPaDnJWVW3Xud3Q2ba2x+4JvHuqsKZ5PYTV875bAP2cpkhZI07WfP1oNA07N7t2BW6uqtun7X9t77P/2Ob0g6vq0Kr67vQG7XCfE5N8N8lPgOvaTTu2Pz8CPKPthX428N9VtXJtgVbVz4Dn0PQWr0xybubwBEGNjB/TDMUceNJ9kt9Ock47nOcnNJ0KO05rNtN75u40H0in2xPYtdvJQfPN3s4D2o4Vr2wwJEm2onnz2yzJVILeB9guydTXe7t32m8N7ADc0N66vWbQDMz/bHv/Z8D9Otse3Llfm+QANBZmkYffAu6hycVvt9v36OxiJavnabrLG2Bt+bkceGtVnb4B+10tTlY/Bo2gHnJzeu7dAOyQZJtOkbwH8IMNOJyu59KcQPVkmuJ4W+AW2vHRVfWDJF8B/pSmt/p9s9lpVX0O+Fz7e3sLTa/e1MmNGk9foRlidDhw9oDt76MZ5nNkVd2e5JXMfnjZcqaN6e+s/15V7bUB8c5r9iAPz+E044P2pvlKY1/g4TTjKl/YtjkkyePbQfV/B1xSVcuB84DfTnNpl82TPKfdzznt464AjkiyRZLp4y1X0XwV99C5PTzNE2vNw/YSUp8ETkhyvyR7s/q3HOcCv5vkz9pejJez+geyTenfgNd1Tmjath0nNxtnAS9PsiDJ9sBxcxSjNp1h5+aNwMJ2jCXte+3/AP+Q5L5Jfh84mna88EbYBriTpvfvfjS9etN9CHgN8HvMPL70Xkl2TnJoOxb5TuCnNL87aI5rQffkLI2HqroNeCPw3iSHt6+DLZIcnOTtNLn2E+Cn7TcK/2s9dn8yzZChP0jjt9rhbF8DfpLktUm2ar8ReUSSR23q4xs1FsjDcxTwwfZalj+cugHvoTm5Y3OarxOPp/kq+Q/a9VTVj2kG1r+a5k32NcDTO19DvoHmk98twJvojF9rz65+K/Dl9uuRx875kWqUrTUP28LiWJqv3X5IcyWBD049uM25ZwEn0uTiXsCX5yLQqvoU8DbgY+3Xhd8CDp7lw98PfI7mxJLLaQorjbZh5+bH258/TnJ5e/9IYCFNb/KngOOr6vyNPK4P0QzV+AFwNc0VOqb7FM23hJ9qh0+sy2/Q/D+4geb/xRP59clYXwCuAn6Y5EeDH675qqreAbyK5mTUVTQ9vMcCnwb+D803FrfTvAeeuR77/ThNrfDR9vGfBnZoP5g+g+YD6/eAH9EU09vOsKuxkWaYliRJ6kuS7wJ/VVX/1XcskuxBliSpV0n+nGbs8Bf6jkVSw5P0JEnqSZILacZdv6CqftVzOJJaDrGQJEmSOhxiIUmSJHXMyyEWO+64Yy1cuLDvMDREl1122Y+qaqe+49hUzOHJNE55bA5PpnHKYTCPJ9Fsc3heFsgLFy5kyZIlfYehIUoyVjOhmcOTaZzy2ByeTOOUw2AeT6LZ5rBDLCRJkqQOC2RpPSTZLsnZSb6dZGmSxyXZIcn5Sa5pf27fd5ySNE6SnJLkpiTfmmF7kvxzkmVJvpHkkcOOUePFAllaP+8GPltVvwPsAyylmcb4gnau+gtwWmNJ2tROBQ5ay/aDaWZP3As4BnjfEGLSGLNAlmYpyQOAJwAfAKiqu6rqVuAw4LS22WnA4f1EKEnjqaouoplWeyaHAR+qxleB7ZLsMpzoNI7m5Ul6fUiyxjqvIT1xHgqsAj6YZB/gMuAVwM5VtRKgqlYmedCgByc5hqZngz322GM4Ea/+/APXm8eaL8xhrcVuwPLO8op23crpDft+L540v3fa782q3TeP+uYcR7J+LJBnaeoNeOFx53LdiU/rORr1ZHPgkcDLquqSJO9mPYZTVNVJwEkAixYtGvp/dHNY8123EDaPNc2gT08D32f7fi+eNKNW+M6WQyyk2VsBrKiqS9rls2kK5hunvsprf97UU3ySNKlWALt3lhcAN/QUi8aABbI0S1X1Q2B5koe1qw4ErgYWA0e1644CPtNDeJI0yRYDL2yvZvFY4LapoW/ShnCIhbR+XgacnmRL4FrgxTQfNM9KcjTwfeBZPcYnSWMnyRnAAcCOSVYAxwNbAFTVvwHnAYcAy4Cf07w3SxvMAllaD1V1BbBowKYDhx2LJE2KqjpyHdsLeOmQwtEEcIiFJEmS1GGBLEljaNDMYzPN+ugsZJK0OgtkSRpPp7LmzGMzzfroLGSS1GGBLEljaIaZx2aa9dFZyCSpwwJZkibHarM+AlOzPs40C9lqkhyTZEmSJatWrZrzYCWpLxbIkqRZzUJWVSdV1aKqWrTTTjsNISxJ6ocFsiRNjplmfXQWMknqsECWpMkx06yPzkImSR1OFCJJY2iGmcdOZPCsj85CJkkdI1EgJ9kOOBl4BM24t7+oqq/0G5UkzV9rmXlsjVkfnYVMklY3EgUy8G7gs1X1zCRbAvfrOyBJkiRNpt4L5CQPAJ4AvAigqu4C7uozJkmSJE2uUThJ76HAKuCDSb6e5OQk95/eyOtvSpIkaRhGoUDeHHgk8L6q2g/4Gb+e/vReXn9TkiRJwzAKBfIKYEVVXdIun01TMEuSJElD13uBXFU/BJYneVi76kDg6h5DkiRJ0gTrvUBuvQw4Pck3gH2Bv+85HkmSNCKSHJTkO0mWJVljGGaSPZJ8sT2X6RtJDukjTo2P3q9iAVBVVwCL+o5DkiSNliSbAe8FnkIzLPPSJIurqvtt898CZ1XV+5LsTTP5zcKhB6uxMSo9yJIkSYM8GlhWVde2l4L9GHDYtDYFPKC9vy1wwxDj0xgaiR5kSZKkGewGLO8srwAeM63NCcDnk7wMuD/w5OGEpnFlD7IkSRplGbCupi0fCZxaVQuAQ4APJxlY4zivgmbDAlmSJI2yFcDuneUFrDmE4mjgLICq+gpwX2DHQTtzXgXNhgWyJEkaZZcCeyV5SJItgSOAxdPafJ/mMrEkeThNgWz3sDaYBbIkSRpZVXUPcCzwOWApzdUqrkry5iSHts1eDbwkyZXAGcCLqmr6MAxp1jxJT5ImSJL/DfwlzRjObwIvBnahuTLADsDlwAvaqwVII6GqzqO5dFt33Rs7968G9h92XBpf9iBL0oRIshvwcmBRVT0C2Izm6+q3Ae+sqr2AW2jGc0rSxLJAlqTJsjmwVZLNgfsBK4EnAWe3208DDu8pNkkaCRbIkjQhquoHwD/SnNC0ErgNuAy4tR3nCc0VA3Yb9HgvjyVpUlggS9KESLI9zQxkDwF2pZlQ4eABTQee3OTlsSRNCgtkSZocTwa+V1Wrqupu4JPAHwLbtUMuYPA1ZiVpolggS9Lk+D7w2CT3SxKa68ZeDXwReGbb5ijgMz3FJ0kjwQJZa5Vk4E3S/FNVl9CcjHc5zSXefgM4CXgt8Koky4AHAh/oLUhJGgEWyFqrqrr3tudrz7n3vqT5qaqOr6rfqapHVNULqurOqrq2qh5dVb9VVc+qqjv7jlOS+mSBLK2nJJsl+XqSc9rlhyS5JMk1Sc5sp0KVJEnzlAWytP5eQTPd6RQnWZAkaYxYIEvrIckC4GnAye1ycJIFSZLGigWytH7eBbwG+FW7/EBmOcmCJEmaHyyQpVlK8nTgpqq6rLt6QNOBZzE6C5kkSfODBbI0e/sDhya5DvgYzdCKdzHLSRachUySpPnBAlmapap6XVUtqKqFwBHAF6rqeTjJgiRJY8UCWdp4TrIgaU45aZM0XBbI0gaoqgur6untfSdZkDSnBk3Y5KRN0tyxQJYkSSMtyUFJvpNkWZLjZmjz7CRXJ7kqyUeHHaPGy+brbiJJktSPJJsB7wWeQnMpzUuTLK6qqztt9gJeB+xfVbckeVA/0Wpc2IMsSZJG2aOBZe1wtrtoriJ02LQ2LwHeW1W3AFTVTUOOUWNmZArkJJsl+XqSc/qORZIkjYzdgOWd5UETMv028NtJvpzkq0kOmmlnXpNeszEyBTLwCmBp30FIkqSRMpsJmTYH9gIOAI4ETk6y3aCdeU16zcZIFMhJFgBPA07uOxZJGmdJtktydpJvJ1ma5HFJdkhyfpJr2p/b9x2n1LEC2L2zPGhCphXAZ6rq7qr6HvAdmoJZ2iAjUSDTzEb2GuBXfQciSWPu3cBnq+p3gH1ovrk7DrigqvYCLmiXpVFxKbBXkock2ZJmoqbF09p8GvhjgCQ70gy5uHaoUWqs9F4gJ3k6cFNVXbaOdo4ZkqSNkOQBwBNoJ7Opqruq6laaE55Oa5udBhzeT4TSmqrqHuBY4HM0H+jOqqqrkrw5yaFts88BP05yNc3spv+3qn7cT8QaB6Nwmbf9gUOTHALcF3hAko9U1fO7jarqJOAkgEWLFnl1dElafw8FVgEfTLIPcBnN+R87V9VKgKpa6SWyNGqq6jzgvGnr3ti5X8Cr2pu00XrvQa6q11XVgqpaSPO1yRemF8eStDGcovdemwOPBN5XVfsBP2M9hlP4TZ6kSdF7gSxJc23QNL0TagWwoqouaZfPpimYb0yyC0D7c+A1ZD37X9KkGKkCuaourKqn9x2HJI2jqvohsDzJw9pVBwJX05zwdFS77ijgMz2EJ0kjYxTGIEuShudlwOnt1QCuBV5M01lyVpKjge8Dz+oxPknqnQWyJE2QqroCWDRg04HDjkWSRtVIDbGQJEmS+maBLEmSJHVYIEuSJEkdFsiSJElShwWyJEmS1GGBLEmSJHV4mTdpzO3zps9z2x13r7Zu4XHnrra87VZbcOXxfzLMsCRJGlkWyNKYu+2Ou7nuxKettc30glkaJYM+5MHqeeuHPEmbkgWyJGmk+SFP0rA5BlmSJEnqsECWJEmSOhxisRazGfcGjn2TJGkuJTkIeDewGXByVZ04Q7tnAh8HHlVVS4YYosaMBfJazGbcGzj2TZKkuZJkM+C9wFOAFcClSRZX1dXT2m0DvBy4ZPhRatw4xEKSJI2yRwPLquraqroL+Bhw2IB2fwe8HfjFMIPTeLJAliRJo2w3YHlneUW77l5J9gN2r6pz1rWzJMckWZJkyapVqzZtpBobFsiSNGGSbJbk60nOaZcfkuSSJNckOTPJln3HKHVkwLq6d2PyG8A7gVfPZmdVdVJVLaqqRTvttNMmClHjxgJZkibPK4ClneW3Ae+sqr2AW4Cje4lKGmwFsHtneQFwQ2d5G+ARwIVJrgMeCyxOsmhoEWrsWCBL0gRJsgB4GnByuxzgScDZbZPTgMP7iU4a6FJgr/abji2BI4DFUxur6raq2rGqFlbVQuCrwKFexUIbwwJZkibLu4DXAL9qlx8I3FpV97TLa4zvnOLYTfWhzc1jgc/RfPNxVlVdleTNSQ7tNzqNKy/zJkkTIsnTgZuq6rIkB0ytHtC0Bqyjqk4CTgJYtGjRwDbSXKiq84Dzpq174wxtDxhGTBpv9iBLs5Rk9yRfTLI0yVVJXtGu3yHJ+e0JTucn2b7vWKUZ7A8c2o7T/BjN0Ip3AdslmeowmT6+U5ImjgWyNHv3AK+uqofTnATy0iR7A8cBF7QnOF3QLksjp6peV1UL2nGaRwBfqKrnAV8Entk2Owr4TE8hStJIsECWZqmqVlbV5e3922nGwu1Gc8H609pmnuCk+ei1wKuSLKMZk/yBnuORpF45BlnaAEkWAvvRTGm6c1WthKaITvKgGR5zDHAMwB577DGcQKUZVNWFwIXt/WtpZiuTJGGBLK23JFsDnwBeWVU/aa6StW6e4DRc+7zp89x2x91rrF943LmrLW+71RZcefyfDCssSdI8YIEsrYckW9AUx6dX1Sfb1Tcm2aXtPd4FuKm/CDXltjvu5roTn7bOdtMLZkmSeh+DPNOVAaRR006o8AFgaVW9o7NpMc2JTeAJTpIkzXuj0IM8dWWAy5NsA1yW5PyqurrvwKRp9gdeAHwzyRXtutcDJwJnJTka+D7wrJ7ikyRJm0DvBXJ7ctPUCU63J5m6MoAFskZKVV3M4EkVAA4cZiySJGnu9F4gd027MsD0bV4BYIg8wUmSJE2qkSmQp18ZYPp2rwAwXJ7gJEn9G9RZYUeFNPdGokCe4coAkjaBbR5+HL932ton99vm4QDr/kAkabhm01lhR4W06fVeIK/lygCSNoHbl57oP1hJktZD75d549dXBnhSkiva2yF9ByVJkqTJ1HsP8jquDCBJkiQN1Sj0IEuSJEkjwwJZkiSNtCQHJflOkmVJ1jjrOMmrklyd5BtJLkiyZx9xanxYIEuSpJGVZDPgvcDBwN7AkUn2ntbs68Ciqvp94Gzg7cONUuPGAlmSJkSS3ZN8McnSJFcleUW7fock5ye5pv25fd+xSh2PBpZV1bVVdRfwMeCwboOq+mJV/bxd/CqwYMgxasxYIEvS5LgHeHVVPRx4LPDStifuOOCCqtoLuKBdlkbFbsDyzvKKdt1Mjgb+c04j0tizQJakCVFVK6vq8vb+7cBSmkLjMOC0ttlpwOH9RCgNNOhKVwNn1E3yfGAR8P9m3FlyTJIlSZasWrVqE4WocdP7Zd4kScOXZCGwH3AJsHNVrYSMs0bzAAAgAElEQVSmiE7yoBkecwxwDMAee+wxnEBxNkixAti9s7wAuGF6oyRPBv4GeGJV3TnTzqrqJOAkgEWLFg0stCULZEmaMEm2Bj4BvLKqftJMaLpufRUWzgY58S4F9kryEOAHwBHAc7sNkuwH/DtwUFXdNPwQNW4skCWNpdn0OjbtYJJ6HpNsQVMcn15Vn2xX35hkl7b3eBfAAkMjo6ruSXIs8DlgM+CUqroqyZuBJVW1mGZIxdbAx9sPfN+vqkN7C1rzngWypLE0m15HmKyexzSVwweApVX1js6mxcBRwIntz8/0EJ40o6o6Dzhv2ro3du4/eehBaaxZIEvS5NgfeAHwzSRXtOteT1MYn5XkaOD7wLN6ik+SRoIFsiRNiKq6mMFXBAA4cJixSNIos0Bei0kewzjJxy5JkiabBfJaTPIYxkk+dkmSNNmcKESSJEnqsECWJEmSOhxiIUnSiHIWQakfFsjSBFjXWPFtt9piSJFIWh/OIij1wwJZGnPT/7kuPO7cWZ2AKUnSpHIMsiRJktRhgSxJkiR1WCBLkiRJHY5BliSNPE80lTRMFsiSpJE26KRSTzaVNJccYiFJkiR12IMsSdIIc3iJNHwWyJLG1mwmULC40CjzOuZSP0aiQE5yEPBuYDPg5Ko6seeQpPViDo8ex62uP/NYo2pduZnkPsCHgD8Afgw8p6quG3acGh+9j0FOshnwXuBgYG/gyCR79xuVNHvmsMaBeaxRNcvcPBq4pap+C3gn8LbhRqlx03uBDDwaWFZV11bVXcDHgMN6jklaH+awxoF5rFE1m9w8DDitvX82cGCSDDFGjZlRGGKxG7C8s7wCeMz0RkmOAY4B2GOPPYYTGb8ew3j9256+xrY9X3sOML5jGBced+7A44bxP/b1NNI53Hn+X9/v9K1U1dBjGbZBxz4Jx72e1pnHo5TDMFl/y0l+/TK799h721TVPUluAx4I/Gj6zvrI49877fdm3fabR31zDiPRbI1CgTzoE94ar/iqOgk4CWDRokVDeUdYbaziiRPxJnSve499wo57A41sDk97/mE/5ciY5GNfD+vMY3O4P5N87MzuPXZW78PQTx5b9M4/ozDEYgWwe2d5AXBDT7FIG8Ic1jgwjzWqZpOb97ZJsjmwLXDzUKLTWBqFAvlSYK8kD0myJXAEsLjnmKT1YQ5rHJjHGlWzyc3FwFHt/WcCX6gJ73bXxul9iEU7VuhY4HM0l285paqu6jksadbMYY0D81ijaqbcTPJmYElVLQY+AHw4yTKanuMj+otY46D3Ahmgqs4Dzus7DmlDmcMaB+axRtWg3KyqN3bu/wJ41rDj0vjKfPwGIskq4Pqenn5HBpwVOyH6PPY9q2qnnp57kzOHe9P3sY9NHvecw9D/37IvfR/32OQw9J7Hff8t+zTy9cS8LJD7lGRJVS3qO44+TPKxj5NJ/jtO8rGPm0n9W07qcY+jSf5bzodjH4WT9CRJkqSRYYEsSZIkdVggr7+T+g6gR5N87ONkkv+Ok3zs42ZS/5aTetzjaJL/liN/7I5BliRJkjrsQZYkSZI6LJAlSZKkDgvk9ZDkoCTfSbIsyXF9xzMsSU5JclOSb/UdizaOOWwOz3fmsDk8301qDsP8ymML5FlKshnwXuBgYG/gyCR79xvV0JwKHNR3ENo45rA5PN+Zw+bwfDfhOQzzKI8tkGfv0cCyqrq2qu4CPgYc1nNMQ1FVF9HMba/5zRzWfGcOa76b2ByG+ZXHFsiztxuwvLO8ol0nzRfmsOY7c1jznTk8T1ggz14GrPMaeZpPzGHNd+aw5jtzeJ6wQJ69FcDuneUFwA09xSJtCHNY8505rPnOHJ4nLJBn71JgryQPSbIlcASwuOeYpPVhDmu+M4c135nD84QF8ixV1T3AscDngKXAWVV1Vb9RDUeSM4CvAA9LsiLJ0X3HpPVnDpvD8505bA7Pd5OcwzC/8tippiVJkqQOe5AlSZKkDgtkSZIkqcMCWZIkSeqwQJYkSZI6LJAlSZKkDgvkniR5cJKPJflukquTnJfkmCTn9B2bNBvmsOY7c1jjwDyeGxbIPUgS4FPAhVX1m1W1N/B6YOeN3O/mmyI+aV3MYc135rDGgXk8dyyQ+/HHwN1V9W9TK6rqCuC/ga2TnJ3k20lOb5OfJNcl2bG9vyjJhe39E5KclOTzwIeSvCjJJ5N8Nsk1Sd4+9KPTJDCHNd+ZwxoH5vEcmfhPCD15BHDZDNv2A36XZm72LwP7AxevY39/ADy+qu5I8iJg33Y/dwLfSfIvVbV8UwQutcxhzXfmsMaBeTxH7EEePV+rqhVV9SvgCmDhLB6zuKru6CxfUFW3VdUvgKuBPecgTmkm5rDmO3NY48A83ggWyP24iuZT2iB3du7/kl/38t/Dr/9e9532mJ/Nch/SpmIOa74zhzUOzOM5YoHcjy8A90nykqkVSR4FPHEtj7mOX78I/nzuQpNmxRzWfGcOaxyYx3PEArkHVVXAnwJPaS/LchVwAs04oZm8CXh3kv+m+RQn9cYc1nxnDmscmMdzJ83vVpIkSRLYgyxJkiStxgJZkiRJ6rBAliRJkjoskCVJkqQOC2RJkiSpwwJZkiRJ6rBAliRJkjoskCVJkqQOC2RJkiSpwwJZkiRJ6rBAliRJkjoskCVJkqQOC2TdK8kJST7SdxySNB/4nimNLwvkWUpyXZI7ktye5NYk/5Pkr5P4O9RE6rwmftq5vafvuKT10ebxk6ete1GSi/uKSVoX83bubd53APPMM6rqv5JsCzwReDfwGODF/Ya1piSbV9U9fcehsfeMqvqvtTUYlIvrm5/msyRpmOz93ABVdVtVLQaeAxyV5BFJtk3yoSSrklyf5G+nepfb5T9o7z8/SSXZu13+yySfbu+fkOSsdj+3J7kqyaKp503yyCRfb7d9PMmZSd7SbjsgyYokr03yQ+CDSbZPck4b0y3t/QWd/T0kyZfa/Z0P7Ng9ziSPbXvKb01yZZID5vQXq7HQ9mJ8Ock7k9wMnDDDut9oXyfXJ7mpzftt230sbF8nRyf5PvCFXg9KEyvJrkk+0b6Pfi/Jy2doN5WzxyS5IcnKJK8edrwSQJKHJ7mw/f99VZJDO9tOTfKvSf6z/ebvy0kenORdba3w7ST7ddrP6jUwbiyQN0JVfQ1YAfwR8C/AtsBDaXqXX8ive5a/BBzQ3n8CcG3bZmr5S53dHgp8DNgOWAy8ByDJlsCngFOBHYAzgD+dFtKD2217AsfQ/H0/2C7vAdwxtb/WR4HLaArjvwOOmtqQZDfgXOAt7T7/D/CJJDvN4lcjPYYmzx8EvHWGdS9qb39M87rZmtXzE5rXycOBp851wNJ0bSfHfwBXArsBBwKvTLK2fPxjYC/gT4Djpn8NLs21JFvQ5O3nad5vXwacnuRhnWbPBv6W5v//ncBXgMvb5bOBd7T72pDXwFiwQN54N9AUkM8BXldVt1fVdcA/AS9o23yJXxfEfwT8Q2f5iaxeIF9cVedV1S+BDwP7tOsfSzMk5p+r6u6q+iTwtWmx/Ao4vqrurKo7qurHVfWJqvp5Vd1OU5Q8ESDJHsCjgDe07S+ieRFMeT5wXhvLr6rqfGAJcMgG/ZY0rj7d9lBM3V7Srr+hqv6lqu6pqjtmWPc84B1VdW1V/RR4HXBEku7QrxOq6medfUhzYbU8Bv61Xf8oYKeqenNV3VVV1wLvB45Yy77e1ObsN2k6KI6c29A1wWbK28fSdDic2ObtF4BzWD0XP1VVl1XVL2g6335RVR9qa48zgake5A15DYwFC+SNtxtN4bolcH1n/fXtNmgK4D9K8mBgM5rk2z/JQppe5ys6j/th5/7Pgfu2BcOuwA+qqjrbl0+LZVWb7AAkuV+Sf2+/wv4JcBGwXZLN2v3dUlU/mxbzlD2BZ0178T0e2GXtvw5NmMOrarvO7f3t+um5OWjdrqz5mtkc2Hktj5Hmwmp5DPx/7fo9gV2nvQ++ntVzdLpuzl5Pk+fSXJgpb3cFllfVrzptuzUJwI2d+3cMWN66vb8hr4GxYIG8EZI8iibhPg3cTZNIU/YAfgBQVctoit2XAxe1vbk/pBkGcfG0JJ7JSmC3JOms231am5q2/GrgYcBjquoBNMM5ANLub/sk958W85TlwIenFT/3r6oTZxGrND0XB627gTVfM/ew+hv1oP1Iw7Ic+N6098Ftqmpt36R135f3oMlzaZhuAHbP6lfZurcmWU8b8hoYCxbIGyDJA5I8nWas8Eeq6krgLOCtSbZJsifwKqB7fcwvAcfy6+EUF05bXpevAL8Ejk2yeZLDgEev4zHb0HwSvDXJDsDxUxuq6nqaIRNvSrJlkscDz+g89iPAM5I8NclmSe6b5kTABUibxhnA/25PFt0a+HvgTK9WoRHyNeAnaU5+3qp9L3xE2zkykze03979Ls15KGcOJ1TpXpcAPwNek2SL9gT7Z9DULOtrQ14DY8ECef38R5LbaT5R/Q3NIPapE/FeRpOQ1wIX05wAd0rnsV+iKVgvmmF5rarqLuDPgKOBW2nGCJ9DM7h+Ju8CtgJ+BHwV+Oy07c+lOXHqZpri+UOd51sOHEbzVcqq9pj/L+aMVvcfWf06yJ9aj8eeQjPO/iLge8AvaF5H0khox2M+A9iXJkd/BJxMMzRuJl8ClgEXAP9YVZ+f6zilrrZeOBQ4mCZn/xV4YVV9ewP2tSGvgbGQ1Ye0aj5Jcgnwb1X1wb5jkaRJ1p5T8j1gC78FkeY/ewPnkSRPbK9VuHmSo4DfZ81eYUmSJG0EZ9KbXx5GM9Z5a+C7wDOramW/IUmSJI0Xh1hIkiRJHQ6xkCRJkjrm5RCLHXfcsRYuXNh3GBqiyy677EdVNTbTXJvDk2mc8tgcnkzjlMNgHk+i2ebwvCyQFy5cyJIlS/oOQ0OU5Pp1t5o/zOHJNE55bA5PpnHKYTCPJ9Fsc9ghFpIkSVKHBbK0CSS5Lsk3k1yRxO4IjaQkuyf5YpKlSa5K8op2/Q5Jzk9yTftz+75jlaQ+WSBLm84fV9W+VbWo70CkGdwDvLqqHg48Fnhpkr2B44ALqmovmhngjusxRknqnQWyJE2IqlpZVZe3928HlgK70Uwrf1rb7DTg8H4ilKTRYIE8S0nWuEkdBXw+yWVJjhnUIMkxSZYkWbJq1aohhzc4h83jydVOjbwfcAmw89SkQ+3PB83wGHNYQ5PklCQ3JflWZ90JSX7QDme7IskhnW2vS7IsyXeSPLWfqNfNHJ4fLJBnqaqoKvZ87Tn33pc69q+qRwIH03xt/YTpDarqpKpaVFWLdtpp+FdJGpTD5vFkSrI18AnglVX1k9k+blRy2PfiiXEqcNCA9e9sh7PtW1XnAbRDhY4Afrd9zL8m2Wxoka4Hc3h+sECWNoGquqH9eRPwKeDR/UYkDZZkC5ri+PSq+mS7+sYku7TbdwFu6is+aUpVXQTcPMvmhwEfq6o7q+p7wDJ8H9ZGsECWNlKS+yfZZuo+8CfAt9b+KGn40nyX+wFgaVW9o7NpMXBUe/8o4DPDjk1aD8cm+UY7BGPqiiu7Acs7bVa069bQ91AhzQ8WyNLG2xm4OMmVwNeAc6vqsz3HJA2yP/AC4EnTxnCeCDwlyTXAU9plaRS9D/hNYF9gJfBP7fpBA3kHjl3oe6iQ5od5OZOeNEqq6lpgn77jkNalqi5mcCEBcOAwY5E2RFXdOHU/yfuBc9rFFcDunaYLgBuGGJrGjD3IkiRpXpgaK9/6U349nG0xcESS+yR5CLAXzTd60gaxB1mSJI2cJGcABwA7JlkBHA8ckGRfmuET1wF/BVBVVyU5C7iaZkKcl1bVL/uIW+PBAlmSJI2cqjpywOoPrKX9W4G3zl1EmiQOsZAkSZI6LJAlSZKkDgtkSZIkqcMCWZIkSeqwQJYkSZI6LJAlSZKkDgtkSZIkqcMCWZIkSeqwQJYkSZI6LJAlSZKkDgtkSZIkqcMCWZIkSeoYWoGc5L5JvpbkyiRXJXlTu/4hSS5Jck2SM5NsOayYJEmSpOmG2YN8J/CkqtoH2Bc4KMljgbcB76yqvYBbgKOHGJO0ySTZLMnXk5zTdyySJGnDDa1ArsZP28Ut2lsBTwLObtefBhw+rJikTewVwNK+g5AkSRtnqGOQ2x62K4CbgPOB7wK3VtU9bZMVwG4zPPaYJEuSLFm1atVwApZmKckC4GnAyX3HIkmSNs5QC+Sq+mVV7QssAB4NPHxQsxkee1JVLaqqRTvttNNchiltiHcBrwF+1XcgkiRp4/RyFYuquhW4EHgssF2SzdtNC4Ab+ohJ2lBJng7cVFWXraOd34JIkjQPDPMqFjsl2a69vxXwZJrxml8Entk2Owr4zLBikjaR/YFDk1wHfAx4UpKPTG/ktyCSJM0Pw+xB3gX4YpJvAJcC51fVOcBrgVclWQY8EPjAEGOSNlpVva6qFlTVQuAI4AtV9fyew5IkSRto83U32TSq6hvAfgPWX0szHlmSNMeSnAJMDQt6RLvuBOAlwNTYn9dX1Xn9RChJ/XMmPWkTqqoLq+rpfcchrcWpwEED1r+zqvZtbxbHkiaaBbIkTZCqugi4ue84JGmUWSBLkgCOTfKNJKck2X5QA6/EImlSWCBLkt4H/CawL7AS+KdBjbwSi6RJYYEsSROuqm5sJ3L6FfB+PHFa0oSzQJakCZdkl87inwLf6isWSRoFQ7vMmySpf0nOAA4AdkyyAjgeOCDJvkAB1wF/1VuAkjQCLJAlaYJU1ZEDVjtBkyR1OMRCkiRJ6rBAliRJkjoskCVJkqQOC2RJkjRy2klrbkryrc66HZKcn+Sa9uf27fok+ecky9oJbx7ZX+QaBxbIkiRpFJ0KHDRt3XHABVW1F3BBuwxwMLBXezuGZvIbaYNZIEuSpJFTVRcBN09bfRhwWnv/NODwzvoPVeOrwHbTru8trRcLZEmSNF/sXFUrAdqfD2rX7wYs77Rb0a5bQ5JjkixJsmTVqlVzGqzmLwtkSZJGXJKBN91r0C+jBjWsqpOqalFVLdppp53mOCzNVxbIkiSNuKqiqtjztefce79qYP037m6cGjrR/rypXb8C2L3TbgFww5Bj0xixQJYkSfPFYuCo9v5RwGc661/YXs3iscBtU0MxpA3hVNNaq5m+wpvQnouBktwXuAi4D81r6uyqOr7fqCRpfktyBnAAsGOSFcDxwInAWUmOBr4PPKttfh5wCLAM+Dnw4qEHrLFigay16hbCC487l+tOfFqP0YysO4EnVdVPk2wBXJzkP9szqSVJG6Cqjpxh04ED2hbw0rmNSJPEAlnaSO0b80/bxS3am13skiTNU45BljaBJJsluYLmhJHzq+qSAW28tJAkSfOABbK0CVTVL6tqX5ozpx+d5BED2nhpIUmS5gELZGkTqqpbgQtZc3pUSZI0T1ggSxspyU5JtmvvbwU8Gfh2v1FJkqQNNbQCOcnuSb6YZGmSq5K8ol2/Q5Lzk1zT/tx+WDFJm8guwBeTfAO4lGYM8jk9xyRJkjbQMK9icQ/w6qq6PMk2wGVJzgdeBFxQVScmOQ44DnjtEOOSNkpVfQPYr+84JEnSpjG0HuSqWllVl7f3bweWArsBhwGntc1OAw4fVkySJEnSdL2MQU6ykKbH7RJg56npINufD5rhMV4iS5IkSXNu6AVykq2BTwCvrKqfzPZxXiJLkiRJwzDUArmdhvcTwOlV9cl29Y1Jdmm370Iz0YIkaQ4kOSXJTUm+1VnnydKS1DHMq1gE+ACwtKre0dm0GDiqvX8U8JlhxSRJE+hU1rxO93E0J0vvBVzQLkvSxBpmD/L+wAuAJyW5or0dApwIPCXJNcBT2mVJ0hyoqouAm6et9mRpSXMqycDbqBraZd6q6mJgpt/EgcOKQ5K0htVOlk4y8GRpSdpQVXXv/YXHnct1Jz6tx2jWzZn0JEmz4tWEJE2KYU4UIkkaTTcm2aXtPZ7xZOmqOgk4CWDRokU1qM1c2OdNn+e2O+5eY/3C48699/62W23Blcf/ybBCkjTmLJAlSVMnS5/ICJ4sfdsdd6/z69husSxJG8shFpI0QZKcAXwFeFiSFUmOxpOlJWk19iBL0gSpqiNn2OTJ0pLUskCWJEmaQ7MZRw+OpR8lFsiSJElzaDbj6MGx9KPEMciSJElShwWyJEmS1GGBLG2kJLsn+WKSpUmuSvKKvmOSJEkbzjHI0sa7B3h1VV2eZBvgsiTnV9XVfQcmSZLWnz3I0kaqqpVVdXl7/3ZgKbBbv1FJkqQNZQ/yWnhZFq2vJAuB/YBLBmw7BjgGYI899hhaTIPyeNJyOMka66qGNlOyJGmesUBeCy/LovWRZGvgE8Arq+on07dX1UnASQCLFi0aWnXmNL2/LoYXHnfurF7TkqTJ5hALaRNIsgVNcXx6VX2y73gkSdKGs0CWNlKa7+8/ACytqnf0HY8kSdo4FsjSxtsfeAHwpCRXtLdD+g5KkiRtGMcgSxupqi4G1jwLTJIkzUsWyJIkaV5Jch1wO/BL4J6qWpRkB+BMYCFwHfDsqrqlrxg1vznEQpIkzUd/XFX7VtWidvk44IKq2gu4oF2WNogFsiRJGgeHAae1908DDu8xFs1zFsiSJGm+KeDzSS5rJ2EC2LmqVkIzwynwoEEPTHJMkiVJlqxatWpI4Wq+cQyyJEmab/avqhuSPAj+f/buPFyyqr73//sjkygICA1BpkZBA+gVTYvmaq5GBMEJ8osajFFMMCS5kpiYXEFvIuCQoFdFE028GBEckUs0tkgEHHCKA43i0CKhRZQWhEYGQVFp/f7+2PvQuw91+pzTp04Np96v56nn1B5q77VPfWvXt9Zeey0uTvLtub5wWIM2abyYIEuSNKIcKr63qrqu/Xtjkg8BhwA3JNm9qq5Psjtw41ALKaB3DMPGcTyKMWyCLEnSiHKo+HtKcl/gXlV1e/v8cOCVwErgWOC09u+Hh1dKTRnXGB5YG+QkZya5Mck3O/Pun+TiJFe1f3caVHkkSdJY2g34XJKvAV8GPlpVH6NJjA9LchVwWDstbZZB3qR3FnDEtHl2ySJJkuasqq6uqoe3j4Oq6jXt/B9V1aFVtX/79+Zhl1Xja2AJclV9BpgerHbJIkmSpJEy7DbIG3XJ0t6NKkkagl6jkw23RJI0HMNOkOes7efweIC99957yKVZ+uZy1ymM5p2nkhbkt6vqpmEXQpKGadgJ8py7ZLHfwsGay12nMJp3nkqSJC3EsBNku2SRpNExNTpZAf+3rZi427Cu5G1/wEk87OxN38O9/QEAs/+ol6S5GFiCnOT9wBOAXZKsBU6mSYzPTXIc8H3gWYMqjyTpHu4xOll7gzUwvCt5t19x2lj2oyppfA0sQa6q58yw6NBBlUGSNLMZRif7zKZfJWk2c7kK0qwHXgkZDcNuYiEtCUnOBJ4G3FhVDx12eaT52sToZJIWaC5XQcArIaNkkAOFSEvZWdxzIBxpnMw0OpkkTRxrkKU+qKrPJFk+7HJIm6uqrgYePuxySNIosAZZkiRJ6rAGWRoQu8gaLAe7kSRtLhNkaUDsImuwHOxGkrS5bGIhSZIkdZggS33QDoTzBeAhSda2g99IkqQxZBOLTbBjb83VJgbCkSRJY8YEeRPs2FuSJGnymCBLkjSiJrUXGmnYTJAlSRpRk9oLjZaOcf2RZ4IsSZKkRTGuP/LsxUKSJEnqMEGWJEmSOmxioZ7s4k6SJE0qE2T1ZBd3kiRpUpkgS5IkLbK5VCjtsO1WAyiJ5sIEWZIkaRH1uiK7/KSPzulKrYbDm/QkSZKkDmuQJUmStGhma14yik1LTJAlSZK0KMa1eYkJsiRp5I1jDVS/TPKxS8NigixJGmnjWgPVD9OPcVKOWxo2b9KTJEmSOkyQJUmSpI6RSJCTHJHkyiRrksw+vrE0YoxhLQXGscadMax+GXqCnGQL4K3AkcCBwHOSHDjcUklzZwxrKTCONe6MYfXT0BNk4BBgTVVdXVW/AM4BjhpymaT5MIa1FBjHGnfGsPpmFHqx2AO4tjO9Fnj09JWSHA8cD7D33nsPpmRs6F7ne6992j2W7XPi+cDS7WJn+Ukf7XncsPSPfZ5GOoZh9vdyKb6P2x9wEg87e/YrrNsfAGCvAMwhjocZw+3+N55+bfO3qgZelkHrHvvUccNkHPs8jPy5uN3/hucTGsMw+sc+Cglyesy7x3+rqs4AzgBYsWLFQP6bG3Wlc9povoGL5e5jn7Dj3kwjG8Mwue/lN479xrCLMG5mjeNhxXBn/4Pe5ciY5GOfh5E+F3f2P+hdjoRxO+5RaGKxFtirM70ncN2QyiJtDmNYS4FxrHFnDKtvRiFBvhTYP8m+SbYGjgFWDrlM0nwYw1oKjGONO2NYfTP0JhZVtT7JCcCFwBbAmVW1esjFkubMGNZSYBxr3BnD6qehJ8gAVXUBcMGwyyFtLmNYS4FxrHFnDKtfMm6NpgGSrAO+N6Td7wLcNKR9D9swj32fqlo2pH33nTE8NMM+9iUTx0OOYRj+ezkswz7uJRPDMPQ4HvZ7OUwjn0+MZYI8TElWVdWKYZdjGCb52JeSSX4fJ/nYl5pJfS8n9biXokl+L8fh2EfhJj1JkiRpZJggS5IkSR0myPN3xrALMESTfOxLySS/j5N87EvNpL6Xk3rcS9Ekv5cjf+y2QZYkSZI6rEGWJEmSOkyQJUmSpA4T5HlIckSSK5OsSXLSsMszKEnOTHJjkm8OuyxaGGPYGB53xrAxPO4mNYZhvOLYBHmOkmwBvBU4EjgQeE6SA4dbqoE5Czhi2IXQwhjDxvC4M4aN4XE34TEMYxTHJshzdwiwpqqurqpfAOcARw25TANRVZ8Bbh52ObRgxrDGnTGscTexMQzjFccmyHO3B3BtZ3ptO08aF8awxp0xrHFnDI8JE+S5S4959pGncWIMa9wZwxp3xvCYMEGeu7XAXp3pPYHrhlQWaXMYwxp3xmfYS+QAACAASURBVLDGnTE8JkyQ5+5SYP8k+ybZGjgGWDnkMknzYQxr3BnDGnfG8JgwQZ6jqloPnABcCFwBnFtVq4dbqsFI8n7gC8BDkqxNctywy6T5M4aN4XFnDBvD426SYxjGK44dalqSJEnqsAZZkiRJ6jBBliRJkjpMkCVJkqQOE2RJkiSpwwRZkiRJ6jBBHpIkv5bknCTfSfKtJBckOT7J+cMumzQXxrDGnTGspcA4XhwmyEOQJMCHgEuq6kFVdSDwcmC3BW53y36UT5qNMaxxZwxrKTCOF48J8nD8NnBXVb1takZVXQ58FtguyXlJvp3kvW3wk+SaJLu0z1ckuaR9fkqSM5JcBLwryQuSfDDJx5JcleR1Az86TQJjWOPOGNZSYBwvkon/hTAkDwUum2HZI4CDaMZm/zzwWOBzs2zvN4DHVdWdSV4AHNxu5+fAlUn+qaqu7UfBpZYxrHFnDGspMI4XiTXIo+fLVbW2qn4FXA4sn8NrVlbVnZ3pT1TVbVX1M+BbwD6LUE5pJsawxp0xrKXAOF4AE+ThWE3zK62Xn3ee/5INtfzr2fB+3Xvaa34yx21I/WIMa9wZw1oKjONFYoI8HJ8Etknyx1MzkjwKePwmXnMNGz4Ev7t4RZPmxBjWuDOGtRQYx4vEBHkIqqqA3wEOa7tlWQ2cQtNOaCanAm9O8lmaX3HS0BjDGnfGsJYC43jxpPnfSpIkSQJrkCVJkqSNmCBLkiRJHSbIkiRJUocJsiRJktRhgixJkiR1mCBLkiRJHSbIkiRJUocJsiRJktRhgixJkiR1mCBLkiRJHSbIkiRJUocJsiRJktRhgjzmkjw3yUXDLockSRptSd6W5O+GXY5xYII8YEmuSfKkfm2vqt5bVYf3a3vSdP2O2YVIckqS9wy7HBotbYzekOS+nXkvTHLJArd7j3hLclCSi5LckuTWJJclecpC9iNN18b0nUnuSPLDJGcl2W6h262qP62qV81x/yNx3h8WE2RJ0lKwJfDiAeznI8DFwG7ArsBfAD8ewH41eZ5eVdsBBwOPAF425PLMSRpjn1+O/QEsFUn+OMmaJDcnWZnkAZ1lhye5MsltSf45yaeTvLBd9oIkn+usW0n+NMlVbQ3HW5NkGMekpW0BMXuvJH+b5HtJbkzyriQ7tMuekGTttP1ck+RJSY4AXg78Xlur8rVBHq9G3v8B/ibJjtMXJPn1JBe3sXplkme387dOcnmSP2+nt0jy+SSv6BVvSXYB9gXeXlW/aB+fr6ruOXhTn4sZz8/tvt+Q5KYk301yQrv+lov6X9PIq6ofAhfSJMok2SbJ65N8v71y8rYk206tn+SlSa5Pcl17JaWS7NcuOyvJq9vnuyQ5v70ScnOSz7bn53cDewMfaWP/pe36j0nyn+36X0vyhM4+L0nymiSfB34KPHBA/55FY4I8ApI8EfgH4NnA7sD3gHPaZbsA59H8ctwZuBL477Ns8mnAo4CHt9t88qIUXBNrgTH7gvbx2zQn0e2At8y2z6r6GPD3wAeqaruqenh/jkZLxCrgEuBvujPTNLu4GHgfTY3vc4B/TnJQVf0C+APglUkOAE4CtgBeM0O8/QhYA7wnydFJdpu2rxk/Fx0znZ//GDiSJgl6JHD0gv4bWjKS7EkTG2vaWa8FHkwTK/sBewCvaNc9AngJ8KR22eM3sem/BtYCy2iuiLwcqKp6HvB92hrsqnpdkj2AjwKvBu5P8zn7tyTLOtt7HnA8sD1N7I81E+TR8FzgzKr6SlX9nCax+M0ky4GnAKur6oNVtR74R+CHs2zvtKq6taq+D3yK9len1EcLidnnAm+sqqur6o72tcdYU6Y+eAXw59O+tJ8GXFNV76yq9VX1FeDfgGcCVNU3ab70P0Tzpf+8qvplr41XVdH8sLsGeANwfZLPJNm/XWVTn4spM52fnw28uarWVtUtwGkL+UdoSfj3JLcD1wI3Aie3Vxz+GPirqrq5qm6n+SF3TPuaZwPvrKrVVfVT4NRNbP8umh9y+1TVXVX12TbGe/kD4IKquqCqflVVF9P8KO22vz+r3e/6qrprcw96VJggj4YH0Pm11SYNP6L5VfgAmg/H1LKi+cW3Kd1k5Kc0NXRSPy0kZjd6bft8S5oaDGmztcnu+TQ1wVP2AR7dXha+NcmtNInsr3XWORtYTpMAXDXLPtZW1QlV9aB22z8B3tUu3tTnYspM5+eNPjfTnmsyHV1V2wNPAH4d2IWmtvc+wGWdeP5YOx/mF0f/h6ZW+qIkVyc5aRPr7gM8a9rn6HE0CfZc9jV2TJBHw3U0wQfcfUlwZ+AHwPXAnp1l6U5LQ7KQmN3otTRt3dYDN9AkG/fpvHYLNpz4AWaq3ZCmnExTwzaVlF4LfLqqduw8tquqP+u85p9pEusnJ3lcZ/4m462qrgXeCjy0nbWpz8VsNvrcAHvN4TWaAFX1aeAs4PXATcCdwEGdeN6hvZkP5hFHVXV7Vf11VT0QeDrwkiSHTi2etvq1wLunfY7uW1XdKx1L6vxsgjwcWyW599QDOBf4wyQHJ9mG5nLJl6rqGpo2Pw9r27ttCbyIjWs+pEHoZ8y+H/irJPum6bZoqp3neuC/gHsneWqSrYC/BbbpvPYGYHmWwB3SWhxVtQb4AE3vEtAkvg9O8rwkW7WPR7VtjknyPOA3aNrF/wVwdjZ0p7VRvCXZKcmpSfZrb2baBfgj4Ivt+u9j5s/FbM4FXpxkjzQ3Gp64oH+Elpo3AYcB/w14O3B6kl0B2piZass+dW4+IMl9aNsm95LkaW0sh6Ynll+2D2hiv3uj3XuApyd5cpobSu+d5qbqJVth55fMcFxA8wtw6vFbwN/RtIu7HngQbXuiqroJeBbwOppLdQfStPv5+cBLrUnWz5g9E3g38Bngu8DPgD9vX3sb8D+Bf6WpdfsJGzfP+H/t3x8l+Ur/D1NLxCuB+0JTSwYcThOf19E0cXgtsE2SvWkSj+dX1R1V9T6aWD293c70ePsFTVOMj9MkFN+kiesXtPv6BDN8Lubg7cBFwNeBr9J85tazIWHRBKuqdTRNef6O5sfTGuCLSX5ME48Padf7D5r7Pj7VrvOFdhO9cob929fe0a73z1V1SbvsH4C/bZtT/E17teQomhv51tHUKP8vlnAemZnbY2sUtTUZa4HnVtWnhl0eaTbGrDR/SY4E3lZV+8y6sjSD9krJN4Ft2qt0mqMlm/kvJe0ljR3bS3YvB8KGS3rSyDFmpflJsm2SpyTZsu1S62SanjWkeUnyO2n6+N6J5mrJR0yO588EeTz8JvAdmsb5T6e5s/XO4RZJ2iRjVpqf0HTJdQtNE4sr2ET7UWkT/oSmGcR3aJro/NmmV1cvNrGQJEmSOqxBliRJkjrGcuSqXXbZpZYvXz7sYmiALrvsspuqatnsa44HY3gyLaU4NoYn01KKYTCOJ9FcY3gsE+Tly5ezatWqYRdDA5Rk7Md17zKGJ9NSimNjeDItpRgG43gSzTWGbWIhSZIkdZggS5IkSR0myJIkSVKHCbIkSZLUYYIszVOSLZJ8Ncn57fS+Sb6U5KokH0iy9bDL2EuSng9pXBjDkgbFBFmavxfTjHI15bXA6VW1P80oWMcNpVSzqCqqin1OPP/u5w4UpHHSjdtuHEtSv5kgS/OQZE/gqcC/ttMBngic165yNnD0cEonSZL6wQRZmp83AS8FftVO7wzcWlXr2+m1wB69Xpjk+CSrkqxat27d4pdUkiRtFhNkaY6SPA24saou687usWrPa75VdUZVraiqFcuWLZmBqCRJWnLGciQ9aUgeCzwjyVOAewP3o6lR3jHJlm0t8p7AdUMsoyRJWiBrkKU5qqqXVdWeVbUcOAb4ZFU9F/gU8Mx2tWOBDw+piJIkqQ9MkKWFOxF4SZI1NG2S3zHk8kiSpAWwiYW0GarqEuCS9vnVwCHDLI8kSeofa5AlSZKkjr4kyEmOSHJlkjVJTuqxfJt2hLE17Yhjy6ct3zvJHUn+ph/lkSRJ48d8QqNiwQlyki2AtwJHAgcCz0ly4LTVjgNuqar9gNNpRh7rOh34j4WWRZIkjSfzCY2SftQgHwKsqaqrq+oXwDnAUdPWOYpmhDFoRhw7tB2BjCRHA1cDq/tQFkmSNJ7MJzQy+pEg7wFc25nuNZLY3eu0fcXeBuyc5L40PQCcOttOHIVMkqQlzXxCI6MfCfJcRhKbaZ1TgdOr6o7ZduIoZJIkLWnmExoZ/ejmbS2wV2e610hiU+usTbIlsANwM/Bo4JlJXgfsCPwqyc+q6i19KJckSRof5hMaGf1IkC8F9k+yL/ADmhHGfn/aOitpRhj7As2IY5+sqgJ+a2qFJKcAdxjMkvqtbaK4keYUJGmEmE9oZCy4iUXbBugE4ELgCuDcqlqd5JVJntGu9g6aNkJrgJcA9+i6RZIWS1VRVexz4vl3P5c0WswnNEr6MpJeVV0AXDBt3is6z38GPGuWbZzSj7JIkqTxZD6hUeFIepI0ppLcO8mXk3wtyeokp7bz920HUbiqHVRh63b+jIMsJHlZO//KJE8ezhFJ0mgwQZak8fVz4IlV9XDgYOCIJI+hGTzh9KraH7iFZnAFmGGQhXYwhmOAg4AjgH9uB22QpIlkgixJY6oaU91abdU+CngizSAK0AyqcHT7fKZBFo4Czqmqn1fVd4E1NIM2SNJEMkGWpDGWZIsklwM3AhcD3wFubW94go0HW+g5yAJzG6DBARYkTQwTZEkaY1X1y6o6mKbP2EOAA3qt1v6daZCFuQzQ4AALkiaGCbIkLQFVdStwCfAYYMd2EAXYeLCFuwdimDbIwlwGaJCkiWGCLEljKsmyJDu2z7cFnkTTf+ynaAZRgGZQhQ+3z6cGWYCNB1lYCRzT9nKxL7A/8OXBHIUkjZ6+9IMsSRqK3YGz2x4n7kUzsML5Sb4FnJPk1cBXaQZXoP377naQhZtpeq6gHYzhXOBbwHrgRVX1ywEfiySNDBNkSRpTVfV14BE95l9Nj14oNjXIQlW9BnhNv8soSePIJhaSJElShwmyJEmS1GGCLEmSJHWYIEtzlOTeSb6c5GtJVic5tZ2/b5IvJbkqyQeSbD3sskqSpM1ngizN3c+BJ1bVw4GDgSOSPAZ4LXB6Ve0P3AIcN8QySpKkBTJBluaoGne0k1u1jwKeCJzXzj8bOHoIxZMkSX1igizNQ5ItklwO3AhcDHwHuLWq1rerrAX2mOG1xydZlWTVunXrBlNgSZI0b31JkJMckeTKJGuSnNRj+TZt28w1bVvN5e38w5JcluQb7d8n9qM80mKpql9W1cE0Q/EeAhzQa7UZXntGVa2oqhXLli1bzGJK0lgyn9CoWHCC3I7g9FbgSOBA4DlJDpy22nHALVW1H3A6TZtNgJuAp1fVw2iGP333QssjDUJV3QpcAjwG2DHJ1KA7ewLXDatckjSuzCc0SvpRg3wIsKaqrq6qXwDnAEdNW+comraZ0LTVPDRJquqrVTWVTKwG7p1kmz6USeq7JMuS7Ng+3xZ4EnAF8Cngme1qxwIfHk4JJWmsmU9oZPQjQd4DuLYz3asN5t3rtG01bwN2nrbO7wJfraqf99qJ7Tc1AnYHPpXk68ClwMVVdT5wIvCSJGto4vodQyyjJI0r8wmNjC1nX2VW6TFvehvMTa6T5CCayySHz7STqjoDOANgxYoVPdt4Soupqr4OPKLH/Ktpaj4kSZvPfEIjox81yGuBvTrTvdpg3r1O21ZzB+DmdnpP4EPA86vqO30ojyRJGj/mExoZ/UiQLwX2b0cT2xo4Blg5bZ2VNG0zoWmr+cmqqrY950eBl1XV5/tQFkmSNJ7MJzQyFpwgt22ATgAupLlh6dyqWp3klUme0a72DmDnto3mS4CprltOAPYD/i7J5e1j14WWSZIkjRfzCY2SfrRBpqouAC6YNu8Vnec/A57V43WvBl7djzJIkqTxZj6hUeFIepIkSVKHCbIkSZLUYYIsSZIkdZggS5IkSR0myJIkSVKHCbIkSZLUYYIsSZIkdZggS5IkSR0myJIkSVJHX0bSkyRJiydJz/lVNeCSSJPBGmRJGlNJ9kryqSRXJFmd5MXt/PsnuTjJVe3fndr5SfKPSdYk+XqSR3a2dWy7/lVJjh3WMam3qqKq2OfE8+9+bnIsLR4TZEkaX+uBv66qA4DHAC9KciBwEvCJqtof+EQ7DXAksH/7OB74F2gSauBk4NHAIcDJU0m1JE0iE2RJGlNVdX1VfaV9fjtwBbAHcBRwdrva2cDR7fOjgHdV44vAjkl2B54MXFxVN1fVLcDFwBEDPBRJGikmyJK0BCRZDjwC+BKwW1VdD00SDezarrYHcG3nZWvbeTPNn76P45OsSrJq3bp1/T4ESRoZJsiSNOaSbAf8G/CXVfXjTa3aY15tYv7GM6rOqKoVVbVi2bJlm1dYSRoDJsiSNMaSbEWTHL+3qj7Yzr6hbTpB+/fGdv5aYK/Oy/cErtvEfEmaSH1JkJMckeTK9s7ok3os3ybJB9rlX2ovBU4te1k7/8okT+5HeSRpEqTp++sdwBVV9cbOopXAVE8UxwIf7sx/ftubxWOA29omGBcChyfZqb057/B2njRQ5hMaFQvuBznJFsBbgcNoaiEuTbKyqr7VWe044Jaq2i/JMcBrgd9r77Y+BjgIeADw8SQPrqpfLrRckjQBHgs8D/hGksvbeS8HTgPOTXIc8H3gWe2yC4CnAGuAnwJ/CFBVNyd5FXBpu94rq+rmwRyC1DCf0Cjpx0AhhwBrqupqgCTn0Nwp3Q3oo4BT2ufnAW9paz6OAs6pqp8D302ypt3eF/pQLqmvkuwFvAv4NeBXwBlV9ea2i6wPAMuBa4Bntz0BSIuqqj5H7/bDAIf2WL+AF82wrTOBM/tXOmnezCc0MvqRIPe6+/nRM61TVeuT3Abs3M7/4rTX3uPOaWjunqbpt5O99967D8We3cPOftic1/3Gsd9YxJIM3iQf+yZM9Tn7lSTbA5cluRh4AU2fs6e1lwRPAk4cYjklaRyZT7D0vlPneuyjdtz9SJDncvfzgu6chubuaeAMgBUrVgxk+KBRe7MGaZKPfSZtW82prrNuT9Ltc/YJ7WpnA5dggixJ82U+sQSN67H3I0Gey93PU+usTbIlsANw8xxfK42cTfU5m2TXGV4z8FoLgIefehG33XnXRvOWn/TRjaZ32HYrvnby4QMrkyT1YD6hkdGPBPlSYP8k+wI/oGkk//vT1pm6o/oLwDOBT1ZVJVkJvC/JG2ka1e8PfLkPZZIWzfQ+Z5vmb7MbRq0FwG133sU1pz11k+tMT5glaQjMJzQyFpwgt22ATqDpEmgL4MyqWp3klcCqqlpJ0w3Ru9tG8zfTBD3teufSNMBfD7zIO041yjbV52xbe9ztc1aSNEfmExol/ahBpqouoOk+qDvvFZ3nP2NDN0PTX/sa4DX9KIe0mObQ5+xpbNznrCRpHswnNCr6kiBLE2K+fc5KkqQxZIIszdF8+5yV1B+9bjSFjdvOe6OppH4yQZYkjTRvNJU0aPcadgEkSZKkUWKCLEmSJHXYxELSkjSXdqtg21VJ0j2ZIEtakubSbhVsuypJuiebWEiSJEkdJsiSJElShwmyJEmS1GGCLEmSJHWYIEuSJEkdJsiSJElShwmyJEmS1GGCLEmSJHWYIEuSJEkdJsiSJElSx4IS5CT3T3JxkqvavzvNsN6x7TpXJTm2nXefJB9N8u0kq5OctpCySJKk8WQ+oVGz0Brkk4BPVNX+wCfa6Y0kuT9wMvBo4BDg5E7gv76qfh14BPDYJEcusDySJGn8mE9opCw0QT4KOLt9fjZwdI91ngxcXFU3V9UtwMXAEVX106r6FEBV/QL4CrDnAssjSZLGj/mERspCE+Tdqup6gPbvrj3W2QO4tjO9tp13tyQ7Ak+n+dXYU5Ljk6xKsmrdunULLLYkjb8kZya5Mck3O/N6XqpO4x+TrEny9SSP7LzmHpetpQEzn9BImTVBTvLxJN/s8ThqjvtIj3nV2f6WwPuBf6yqq2faSFWdUVUrqmrFsmXL5rhrSVrSzgKOmDZvpkvVRwL7t4/jgX+BWS9bS31jPqFxsuVsK1TVk2ZaluSGJLtX1fVJdgdu7LHaWuAJnek9gUs602cAV1XVm+ZUYkkSAFX1mSTLp80+ig3n3LNpzrcntvPfVVUFfDHJju15+wm0l60BklxMk3S/f5GLrwljPqFxstAmFiuBqctxxwIf7rHOhcDhSXZqayUOb+eR5NXADsBfLrAckqTGTJeqZ7o8Petl6ylemtYiMp/QSJm1BnkWpwHnJjkO+D7wLIAkK4A/raoXVtXNSV4FXNq+5pXtvD2B/w18G/hKEoC3VNW/LrBM0qJJcibwNODGqnpoO+/+wAeA5cA1wLPbG0hGwvYHnMTDzr7HDeHT1gF46kDKo6GZ6fL0Ji9bbzSz6gyaWjpWrFjRcx3118NPvYjb7rxro3nLT/roRtM7bLsVXzv58EEWazGYT2ikLChBrqofAYf2mL8KeGFn+kzgzGnrrKX3iVkaZWcBbwHe1Zk31ebztCQntdMnDqFsPd1+xWlcc9qmk9/pX7gaazNdql4L7NVZb0/gOma/bK0huu3Ouybi82s+oVHjSHrSPFTVZ4Cbp82eS/dE0qDMdKl6JfD8tjeLxwC3tU0wZrxsLUmTaqFNLCRNa/OZpFf3RCQ5nqb3APbee+8BFk9LVZL309T+7pJkLU1vFD0vVQMXAE8B1gA/Bf4QYKbL1gM7CEkaQSbI0oDYflP9VlXPmWFRr0vVBbxohu3c47K1JE0ym1hIC3dD29aTTXRPJEmSxoQJsrRwc+meSJIkjQkTZGke2jafXwAekmRt287zNOCwJFcBh7XTkiRpTNkGWZqH+bT5lNQf9uUtadBMkCVJI82+vCUNmk0sJEmSpA4TZEmSJKnDJhaSlqS5tFtt1gPbrkqSukyQJS1Jc2m3CrZdlSTdk00sJEmSpA4TZEmSJKnDBFmSJEnqMEGWJEmSOhZ0k16S+wMfAJYD1wDPrqpbeqx3LPC37eSrq+rsactXAg+sqocupDySepvtRrQdtt1qQCWRNB+TMoqg+YRGzUJ7sTgJ+ERVnZbkpHb6xO4KbdCfDKwACrgsycqpwE/y/wF3LLAckmYwvSeH5Sd9dE69O0gavgkaRdB8QiNloU0sjgKmfr2dDRzdY50nAxdX1c1tEF8MHAGQZDvgJcCrF1gOSZI0vswnNFIWmiDvVlXXA7R/d+2xzh7AtZ3pte08gFcBbwB+OtuOkhyfZFWSVevWrVtYqSVJ0igxn9BImbWJRZKPA7/WY9H/nuM+0mNeJTkY2K+q/irJ8tk2UlVnAGcArFixoua4b0mSNALMJzROZk2Qq+pJMy1LckOS3avq+iS7Azf2WG0t8ITO9J7AJcBvAr+R5Jq2HLsmuaSqnoAkSVpSzCc0ThZ6k95K4FjgtPbvh3uscyHw90l2aqcPB15WVTcD/wLQ/uI732CW1E9zuXnJHjykkWA+oZGy0AT5NODcJMcB3weeBZBkBfCnVfXCqro5yauAS9vXvLINZklaNL3u/LcHj/FlV4VLnvmERsqCEuSq+hFwaI/5q4AXdqbPBM7cxHauAeyzUJJ0D/7YWfrMJzRqHElPkiRJ6jBBliRJkjoW2gZZkiQtIttfS4NngixJ0ohyqHhpOGxiIfVBkiOSXJlkTZKThl0eaXMYx5LUMEGWFijJFsBbgSOBA4HnJDlwuKWS5sc4lqQNbGIhLdwhwJqquhogyTnAUcC3hloqaX6M4xGWbBhlOa/dML/KkZKlxWCCLC3cHsC1nem1wKOnr5TkeOB4gL333nswJdt4/xueT9gXbK9jn4TjnqdZ43iUYhgm672chGOURolNLKSFS4959/g2q6ozqmpFVa1YtmzZAIp1j/33fEyCST3ueZo1jo1hSZPCBFlauLXAXp3pPYHrhlQWaXMZx5LUMkGWFu5SYP8k+ybZGjgGWDnkMknzZRxLUss2yNICVdX6JCcAFwJbAGdW1eohF0uaF+NYkjYwQZb6oKouAC4YdjmkhTCOJamRcbzBIck64HtD2v0uwE1D2vewDfPY96mqwd8VtEiM4aEZ9rEvmTgecgzD8N/LYRn2cS+ZGIahx/Gw38thGvl8YiwT5GFKsqqqVgy7HMMwyce+lEzy+zjJx77UTOp7OanHvRRN8ns5DsfuTXqSJElShwmyJEmS1GGCPH9nDLsAQzTJx76UTPL7OMnHvtRM6ns5qce9FE3yeznyx24bZEmSJKnDGmRJkiSpwwRZkiRJ6jBBnockRyS5MsmaJCcNuzyDkuTMJDcm+eawy6KFMYaN4XFnDBvD425SYxjGK45NkOcoyRbAW4EjgQOB5yQ5cLilGpizgCOGXQgtjDFsDI87Y9gYHncTHsMwRnFsgjx3hwBrqurqqvoFcA5w1JDLNBBV9Rng5mGXQwtmDGvcGcMadxMbwzBecWyCPHd7ANd2pte286RxYQxr3BnDGnfG8JgwQZ679JhnH3kaJ8awxp0xrHFnDI8JE+S5Wwvs1ZneE7huSGWRNocxrHFnDGvcGcNjwgR57i4F9k+yb5KtgWOAlUMukzQfxrDGnTGscWcMjwkT5DmqqvXACcCFwBXAuVW1erilGowk7we+ADwkydokxw27TJo/Y9gYHnfGsDE87iY5hmG84tihpiVJkqQOa5AlSZKkDhNkSZIkqcMEWZIkSeowQZYkSZI6TJAlSZKkDhPkIUnya0nOSfKdJN9KckGS45OcP+yySXNhDGvcGcNaCozjxWGCPARJAnwIuKSqHlRVBwIvB3Zb4Ha37Ef5pNkYwxp3xrCWAuN48ZggD8dvA3dV1dumZlTV5cBnge2SnJfk20ne2wY/Sa5Jskv7fEWSS9rnpyQ5I8lFwLuSvCDJB5N8LMlVSV438KPTJDCGNe6MYS0FxvEiD7/8ZAAAIABJREFUmfhfCEPyUOCyGZY9AjiIZmz2zwOPBT43y/Z+A3hcVd2Z5AXAwe12fg5cmeSfqurafhRcahnDGnfGsJYC43iRWIM8er5cVWur6lfA5cDyObxmZVXd2Zn+RFXdVlU/A74F7LMI5ZRmYgxr3BnDWgqM4wUwQR6O1TS/0nr5eef5L9lQy7+eDe/Xvae95idz3IbUL8awxp0xrKXAOF4kJsjD8UlgmyR/PDUjyaOAx2/iNdew4UPwu4tXNGlOjGGNO2NYS4FxvEhMkIegqgr4HeCwtluW1cApNO2EZnIq8OYkn6X5FScNjTGscWcMaykwjhdPmv+tJEmSJLAGWZIkSdqICbIkSZLUYYIsSZIkdZggS5IkSR0myJIkSVKHCbIkSZLUYYIsSZIkdZggS5IkSR0myJIkSVKHCbIkSZLUYYIsSZIkdZggS5IkSR0myAOS5AVJPteZriT79WnbT0iyth/bkkZdkr2T3JFki2GXRZMpycuT/Ouwy6HRlOSSJC/s07aem+SifmxrqelnHtWLCfI8JLkmyZ3tl/MPk5yVZLtF3N9ZSdYnecBi7WMOZdgosddoS/K4JP+Z5LYkNyf5fJJHDbgMOyY5s/2M3J7kv5KcOMfXnpXk1dPmXZPkSVPTVfX9qtquqn7Z77Jr6djcz8L0L91eFRBV9fdV1ZcESKNpFM6lAFX13qo6vFOuTSaF7Xf2L9s85Y4k303yziQPHkyJlw4T5Pl7elVtBxwMPAJ42WLsJMl9gd8FbgOeuxj7mEMZthzGfrV5ktwPOB/4J+D+wB7AqcDPB1yU04HtgAOAHYBnAN8ZcBk0wUbos6AxtATi5wttnrID8CTgTuCyJA8dbrF6S2Pk8tGRK9C4qKofAhfSJMoAJNkhybuSrEvyvSR/u4A3/XeBW4FXAsd2FyTZtq1puyXJt4BHdZadlOS8aeu/Ock/dsr4jiTXJ/lBkldPXapuf3l+PsnpSW4GPgC8DfjN9pforZt5LBqMBwNU1fur6pdVdWdVXVRVXwdI8qAkn0zyoyQ3JXlvkh3bZZsdNz08CnhfVd1SVb+qqm9X1Xmd7f56kovbWpkrkzy7nX88zY/Bl7bx9pEk7wb2Bj7SzntpkuVtLcqW7esuSfKqNnZvT3JRkl06+3t++3n8UZK/69ZIJzkkyaokP05yQ5I39uON0NDN9ln4oyRXtOfQC5Ps087/TPv6r7XxdizwH8ADOjVyD0hySpL3tK+Zisdjk3y//Wz976mCtOfrs9t9XdHG8NrO8hPbz9Tt7efh0AH9jzSz2eLn7ve/nd7onNR6UJIvp6mB/nCS+09b9w+TXNvGxZ8meVSSrye5NclbOtu++ypuj/j8vU0dRFv271TV/wQ+DZzS2e4zkqxu93dJkgPa+X+Y5COd9dYkObczfW2Sg9vn1Zb9qvY43pok7bItkryh/Tx8N8kJPc7br0nyeeCnwAPbfV/RfhauTvIn3eNJ8r/a76DrkvzRtGXbJHl9+xm8Icnbkmy7qf/PrKrKxxwfwDXAk9rnewLfAN7cWf4u4MPA9sBy4L+A49plLwA+11m3gP02sa9PAK8DdgPWA4/sLDsN+CzNL9u9gG8Ca9tl+7TBdr92egvgeuAx7fS/A/8XuC+wK/Bl4E86ZVwP/DmwJbDt9HL7GN0HcD/gR8DZwJHATtOW7wccBmwDLAM+A7xpoXHToxz/CqwG/hDYf9qy+wLXtsu2BB4J3AQc1C4/C3j1tNfc/blrp5e3n58t2+lLaGqoH9zG7CXAae2yA4E7gMcBWwOvB+7qfI6/ADyvfb7d1PH6GO/Hpj4LwNHAGporHFsCfwv8Z2f5Rudm4AlT59fOvFOA90yLx7e38fdwmprGA9rlp9EkJzvRfG98nQ3n64e0n4cHdLb1oGH//yb9MYdz6d3v/7QY6J6TfgA8tD3n/VuPeHkbcG/gcOBnNOfYXWlqq28EHt+u/wLmlztstH5n/h8BN7TPHwz8hOb7YCvgpe1nYmvggTSVc/cCdge+B/ygfd0DgVuAe3XKcj6wI01FxjrgiHbZnwLfamN+J+DjPf5H3wcOaj+HWwFPBR4EBHg8zXfSI9v1jwBu6PxP39f9XwBvAlbS5EXbAx8B/mEhcWAN8vz9e5LbaU5qNwInQ/NrCfg94GVVdXtVXQO8AXjefHeQZG/gt2lq4W6gSZa7tcjPBl5TVTdX1bXAP04tqKrvAV+h+RIAeCLw06r6YpLdaD7sf1lVP6mqG2kuhx/T2fZ1VfVPVbW+qu6cb9k1PFX1Y5pEcOrLel2Sle37TlWtqaqLq+rnVbUOeCPNSagfcdP158B7gROAb7U1EEe2y54GXFNV72xj7Cs0Xx7PXODhv7Oq/quN2XPZcGXnmcBHqupzVfUL4BXt/2fKXcB+SXapqjuq6osLLIdGwCyfhT+h+eK8oqrWA38PHDxVi7wAp1ZT0/g14Gs0iTI05+u/r+aKylo652vglzQ/WA9MslVVXVNVNkcastnOpXP07qr6ZlX9BPg74NnZ+Krbq6rqZ1V1EU2y+v6qurGqfkBTAfaI/hzN3a6jSR6hyVU+2n4f3EVTcbAt8N+r6mrgdppz6ONprpT/IMmvt9OfrapfdbZ7WlXdWlXfBz7FhnPvs2kqENdW1S00PxSnO6uqVrffBXdV1UerqfGuqvo0cBHwW53tvbPzPz1laiNtrfUfA3/V5kW303yuZ/qOmhMT5Pk7uqq2p6lV+HVg6lLuLjS/vr7XWfd7NL8G5+t5wBVVdXk7/V7g95Ns1U4/gCZB7+6n633Ac9rnv99OQ1NLuBVwfXtZ5VaaWsFdO6/tbldjpv3Sf0FV7UnzS/sBNL+sSbJrknPay7k/Bt7DhviFhcVNtwx3VnMT028AO9MkrP+vvcS4D/Doqe2023ou8GsLPPQfdp7/lKY2GKZ9VqrqpzQ1Q1OOo6lN+XaSS5M8bYHl0IjYxGdhH+DNnfi7mabGanPO1V1zikE2jsc1wF/SfNnf2H4+h3ZTtjbY1Ll0jqZ/R2/FxufbGzrP7+wx3e8OAPagiXVojuXuvKFNeK9lw2fg0zQ5zv9on19Ckxw/vp3umnfczzQvyZFJvpim+d2twFPY8D/bVN6zDLgPTTvrqc/1x9r5m80EeTO1v27OovnlBc1l4rtoTr5T9qa5zDJfz6dpj/PDJD+kqenbhaYWD5pL33tN20/X/wOekGRP4HfYkOhcS3Ppb5eq2rF93K+qDuoe2rRtTZ/WmKiqb9PE6NSNGf9A837+t6q6H/AHNInBlIXEzUxl+DHNL/n7Avu22/p0Zzs7VtMjxZ9NvaTXZuZ+1PdwPc0lPqBpD0qTtE+V76qqeg5Nsv9a4Lw0N8hqCZn2WbiWpnlQNwa3rar/nOnlC9z9RjHIxuduqup9VfU4mu+OoolDjZAe59Kf0CRkU3r9wJ/+HX0XTZ4wLL9DUzMNTW3y3blKWwO7FxvylakE+bfa559m5gR5JpuM+9bdn60k29BcTXw9sFtV7QhcwIbvqE3lPTfR/Kg4qPOZ3qGaGxU3mwnywrwJOCzJwdV0OXUu8Jok27eX615CU0s3Z0l+k6YNziE0lyoOpvlQvo8NzSzOBV6WZKc2mfnz7jbay+eXAO8EvltVV7Tzr6e5ZPGGJPdLcq80N249fhNFugHYM8nW8zkODV6am9/+uo0JkuxFUyM81Wxge5r2uLcm2QP4X93X9ytu0twI96gkWye5N/BimjZtV9K0V3twkucl2ap9PGrqBhGaeHvgtE32mjdX5wFPT/Lf2xg+lc6PgiR/kGRZW4MydROq3ceNuVk+C2+jOX8e1C7bIcmzOi+fHm83ADsn2WEzi9M9X+9B0/RoqpwPSfLENjn4Gc2XvPE3ZHM4l14O/I80fbLvQO/erP4gyYFJ7kNzs/151Z+uKed8Pkxzo9y+Sf6JJuE9tV10LvDUJIe2V6b/mqYSZOpH4qdpmnlu2zYL+ixNG+Cdga/OsZznAi9Oskeam8Fn6+pza5rmRuuA9W2zvMM7y88FXtD5n548taA9f78dOD3Jru2x75HkyXMsa08myAvQJhTvomlfBE2i+hPgauBzNEntmfPc7LHAh6vqG1X1w6kH8Gbgae1l6lNpLi98lyZxeXeP7byPpnuX902b/3yaQPwWTWP782ga4s/kkzQ3XP0wyTB//Wp2twOPBr6U5Cc0J/Nv0pz8oImbR9J0HfhR4IM9ttGPuCmaJPsmmpqKw4Cntm18b6c56R3TLvshTY3ZNu1r30HTHvPWJP/ezvsH4G/beX8zh//DhoJUrab5XJ5DUwNxO829A1PdNR0BrE5yB81n7Jiq+tl89qGRNONnoao+RBNz57RNjb7Jhqtz0DR3OLuNt2e3tYfvB65u5823CcQrgbU05+uP03x2puJvG5q2mTfRfBZ2BV4+34NV323yXFpVF9P08vR14DKaH/7TvZum1vmHNDfj/UWfynYKnficYZ3fbM9pP6ap9Lgf8Kiq+kZb/itpriD+E03sPZ2mC9tftMv/i6Yy5bPt9I9p8prPzyPJfztNfvJ1mqT6AppOAHq+vv1u+AuaRPgWmmZ+KzvL/4OmUvKTNDcUfnLaJk5s53+x/Vx/nOYm2M2WKq+gS5oMaQb2uZWmd43vDrs8mjxJ/ozmh9imrtxJS0pbI/y2qlrozbADYw2ypCUtydOT3KdtW/x6mu4ZrxluqTQpkuye5LFt06SH0NRCfmjY5ZIWU5r+v5+SZMu2adHJjFncmyBLWuqOomnOcR2wP03tnZfONChb0/T6cjvNZeEPA/881BJJiy80zfpuoWlicQVNN5tjwyYWkiRJUoc1yJIkSVLHlrOvMnp22WWXWr58+bCLoQG67LLLbqqqBXX6PUqM4cm0lOLYGJ5MSymGwTieRHON4bFMkJcvX86qVauGXQwNUJLpowWONWN4Mi2lODaGJ9NSimEwjifRXGPYJhaSJElSx0AT5CTXJPlGksuTrGrn3T/JxUmuav/uNMgySf3QK7alUZNkrySfSnJFktVJXtzOPyXJD9r4vTzJU4ZdVkkapmE0sfjtquqOyHYS8ImqOi3JSe30bEMSSqNoemxLo2Y9zWhyX0myPXBZkovbZadX1euHWDZJGhmj0MTiKODs9vnZwNFDLIskLVlVdX1VfaV9fjtN36R7DLdUkjR6Bp0gF3BRksuSHN/O262qrofm5E0zFv09JDk+yaokq9atWzeg4ipJz4fuoVdsb2TYMex7qa4ky4FHAF9qZ52Q5OtJzpypqZsxLGlSDDpBfmxVPRI4EnhRkv8x1xdW1RlVtaKqVixbtmR6mBl5VXX3Y58Tz7/7ue5h1tgedgz3eh99LydTku2AfwP+sqp+DPwL8CDgYOB64A29XjcqMez5SNJiG2iCXFXXtX9vpBmT+xDghiS7QzNmPXDjIMsk9cMMsS2NnCRb0STH762qDwJU1Q1V9cuq+hXwdoxfSRNuYAlykvu2N4WQ5L7A4cA3gZXAse1qx9KMUy+NjU3EtjRS0rRHeAdwRVW9sTN/985qv4PxK2nCDbIXi92AD7XtxbYE3ldVH0tyKXBukuOA7wPPGmCZpH7oGdvDLZLU02OB5wHfSHJ5O+/lwHOSHEzTlv4a4E+GUzxJGg0DS5Cr6mrg4T3m/wg4dFDlkPptptiWRk1VfQ7odVfbBYMuiySNslHo5k2SJEkaGSbIkiRJUocJsiRJktRhgixJkiR1mCBLkqSRkOSIJFcmWZPkpB7Lt0nygXb5l9oRIbvL905yR5K/GVSZtTSZIEuSpKFLsgXwVpoRSQ+k6X7wwGmrHQfcUlX7AacDr522/HTgPxa7rFr6TJAlSdIoOARYU1VXV9UvgHOAo6atcxRwdvv8PODQdgAckhwNXA2sHlB5tYSZIEuSpFGwB3BtZ3ptO6/nOlW1HrgN2LkdxfRE4NTZdpLk+CSrkqxat25dXwqupccEWZIkjYJeg9jUHNc5FTi9qu6YbSdVdUZVraiqFcuWLduMYmoSDHKoaUmSpJmsBfbqTO8JXDfDOmuTbAnsANwMPBp4ZpLXATsCv0rys6p6y+IXW0uRCbIkSRoFlwL7J9kX+AFwDPD709ZZCRwLfAF4JvDJqirgt6ZWSHIKcIfJsRbCBFmSJA1dVa1PcgJwIbAFcGZVrU7ySmBVVa0E3gG8O8kamprjY4ZXYi1lJshz1N4ku5HmR6skSeqHqroAuGDavFd0nv8MeNYs2zhlUQqnieJNenNUVVQV+5x4/t3PJUmStPSYIEuSJEkdJsiSJElSx8AT5CRbJPlqkvPb6X3b8dSvasdX33rQZZL6YXpsS6MmyV5JPpXkiiSrk7y4nX//JBe35+GLk+w07LJK0jANowb5xcAVnenX0nTuvT9wC80469I4mh7b0qhZD/x1VR0APAZ4UZIDgZOAT7Tn4U+005I0sQaaICfZE3gq8K/tdIAn0oynDs346kcPskxSP0yPbWkUVdX1VfWV9vntND/o9gCOojn/gudhSRp4DfKbgJcCv2qndwZubcdTh97jrgOOna6RNz2278EYHp4k93hMuiTLgUcAXwJ2q6rroUmigV1neI0xLGkiDCxBTvI04Maquqw7u8eqPftPc+x0jaoZYvsejOHhsZvGjSXZDvg34C+r6sdzfZ0xLGlSDHKgkMcCz0jyFODewP1oat12TLJlW4vca9x1adTdI7aTvKeq/mDI5ZLuIclWNMnxe6vqg+3sG5LsXlXXJ9kduHF4JZSk4RtYDXJVvayq9qyq5TRDQ36yqp4LfIpmPHVoxlf/8KDKJPXDDLFtcqyR09738Q7giqp6Y2fRSprzL3gelqSR6Af5ROAl7bjqO9OcvCVJ/fdY4HnAE5Nc3j6eApwGHJbkKuCwdlqSJtYgm1jcraouAS5pn18NHDKMckj91o1tadRU1efofe8HwKGDLIskjbJRqEGWJEmSRoYJsiRJktRhgixJkiR1mCBLkiRJHSbIkiRpJCQ5IsmVSdYkOanH8m2SfKBd/qV2REiSHJbksiTfaP8+cdBl19JigixJkoYuyRbAW4EjgQOB5yQ5cNpqxwG3VNV+wOnAa9v5NwFPr6qH0fTl/e7BlFpLlQmyJEkaBYcAa6rq6qr6BXAOcNS0dY4Czm6fnwccmiRV9dWqmhqJdzVw7yTbDKTUWpJMkCVJ0ijYA7i2M722nddznapaD9xGM8hY1+8CX62qn/faSZLjk6xKsmrdunV9KbiWHhNkSZI0CnoNYlPzWSfJQTTNLv5kpp1U1RlVtaKqVixbtmyzCqqlzwRZkiSNgrXAXp3pPYHrZlonyZbADsDN7fSewIeA51fVdxa9tFrSTJAlSdIouBTYP8m+SbYGjgFWTltnJc1NeADPBD5ZVZVkR+CjwMuq6vMDK7GWLBNkSZI0dG2b4hOAC4ErgHOranWSVyZ5RrvaO4Cd/3/27jxekrq+9//rHRY3DIugIsMwXCVG1IjXETWahIgLrphEE4hJRi9eklxJYjT3MpobWdQE80vcotFMlAtuLCEaJ8ANEBW368KgqGyGEVFGiDMK4oay+Pn9UTVQHPosM6dPV/fp1/PxOI/TVfXt7k9Nf07Np7/1rW8l2Qi8HNg6FdwxwEOAv0hySftz/xHvgpaRHfsOQJIkCaCqzgXOnbHu1Z3HPwZeMOB5rwVeu+QBamrYgyxJkiR1WCBLkiRJHRbIkiRJUocFsiRJktQxsgI5yT2TfC7JF5NcluSEdv3+ST6b5KokZ7RTu0gTY7bclsZRkpOTbE5yaWfd8Um+2bn6/5l9xihJfRtlD/JPgCdX1aOAg4DDkjye5o43b6yqA4AbgaNGGJM0DLPltjSOTgEOG7D+jVV1UPtz7oDtkjQ1RlYgV+MH7eJO7U8BTwbOatefCjxvVDFJwzBHbktjp6o+TnvnMUnSYCMdg5xkhySXAJuBC4CvAt9tJweH5haS+8zy3KOTbEiyYcuWLaMJWFqgmbldVZ8d0MYc1jg7JsmX2iEYuw9qYA5LmhYjLZCr6vaqOojm/uoHAw8b1GyW566rqtVVtXqvvfZayjClbTYzt5M8YkAbc1jj6u3Ag2mGCF0P/O2gRuawpGnRyywWVfVd4ELg8cBuSbbe0W8FcF0fMUnD0MntQWM8pbFUVd9qv+T9FPhHmg4MSZpao5zFYq8ku7WP7wU8heZe6x8Fnt82WwN8aFQxScMwS25f2W9U0sIl2buz+GvApbO1laRpsOP8TYZmb+DUJDvQFOZnVtXZSS4HTk/yWuALwLtGGJM0DANzu+eYpIGSnAYcAuyZZBNwHHBIkoNohrhdA/x+bwFK0hgYWYFcVV8CHj1g/dV4Ok8TbLbclsZRVR05YLUdE2MuycD1VU6YIy0F76QnSdKYqyqqiv2OPfuOxxbH0tIZ5RALTZBHnXA+N918693Wr1p7zl2Wd73XTnzxuKeNKixJkqQlZ4GsgW66+VauOelZ87abWTBLkiRNOodYSJKksZDksCRfSbIxydoB2++R5Ix2+2eTrOpse2W7/itJnj7KuLX8WCBLkqTetTMBvQ14BnAgcGSSA2c0Owq4saoeArwReH373AOBI4CH08xD//ft60nbxQJZkiSNg4OBjVV1dVXdApwOHD6jzeHAqe3js4BD00zxcThwelX9pKq+BmzEGbK0CI5BliRJ42Af4NrO8ibgcbO1qarbktwE3K9d/5kZz91n0JskORo4GmDlypVDCXw+jzz1kQtu++U1X17CSEZvofs+bvttgSxJksbBoMmeZ85lN1ubhTy3WVm1DlgHsHr16pHMlTduxd8oTeq+O8RCkiSNg03Avp3lFcB1s7VJsiOwK3DDAp8rLZgFsiRJGgcXAQck2T/JzjQX3a2f0WY9sKZ9/HzgI9XcMWU9cEQ7y8X+wAHA50YUt5Yhh1hIkqTetWOKjwHOA3YATq6qy5KcCGyoqvU0t0V/T5KNND3HR7TPvSzJmcDlwG3AS6vq9l52RMuCBbIkSRoLVXUucO6Mda/uPP4x8IJZnvs64HVLGqCmhkMsJEmSpA4LZEmSJKnDIRaSpLH2qBPO56abb73b+lVrz7nj8a732okvHve0UYYlaRmzQJYkjbWbbr6Va0561pxtusWyJC3WyIZYJNk3yUeTXJHksiR/0q7fI8kFSa5qf+8+qpikYZgtt6VxlOTkJJuTXNpZ53FYkjpG2YN8G/CKqvp8kvsCFye5AHgR8OGqOinJWmAtcOwI45rVQk7rgaf2NDi3q+ryvgOTBjgFeCvw7s66tYzpcViS+jCyArmqrgeubx9/P8kVNPdJPxw4pG12KnAhY3JgXshpPfDU3rSbI7ctkDV2qurjSVbNWD22x2FJ6kMvY5Dbg/Ojgc8CD2gLDKrq+iT3n+U5RwNHA6xcuXI0gUrbaEZuz9zWSw4POhMyDWdBPAO0TTwOS1LHyAvkJLsA/wy8rKq+l2RBz6uqdcA6gNWrV9fSRShtn5m5PXN7Xzk8rRc4eQZo+DwOS5oWI50HOclONAXE+6rqA+3qbyXZu92+N7B5lDFJwzBLbkuTwuOwJHWMchaL0NxD/YqqekNn03pgTft4DfChUcUkDcMcuS1NCo/DktQxyh7kJwK/Czw5ySXtzzOBk4CnJrkKeGq7LE2S2XJbGjtJTgM+DTw0yaYkR+FxWJLuYpSzWHwSmG3A8aGjikMatnlyWxorVXXkLJs8DktSa6RjkCVJkqRxZ4EsSZIkdVggS5IkSR0WyJIkqVdJ9khyQZKr2t+7z9JuTdvmqiRr2nX3TnJOkiuTXJbEi0y1aBbIkiSpb2uBD1fVAcCH2+W7SLIHcBzwOOBg4LhOIf03VfXzNHcyfWKSZ4wmbC1XFsiSJKlvhwOnto9PBZ43oM3TgQuq6oaquhG4ADisqn5UVR8FqKpbgM8DK0YQs5YxC2RJktS3B1TV9QDt7/sPaLMPcG1neVO77g5JdgOeQ9MLLW23kc2DLEmSpleSfwceOGDTny/0JQasq87r7wicBrylqq6eI46jgaMBVq5cucC31rSxQJYkSUuuqp4y27Yk30qyd1Vdn2RvYPOAZpuAQzrLK4ALO8vrgKuq6k3zxLGubcvq1atrrraaXhbIkiSNqUedcD433XzrXdatWnvOXZZ3vddOfPG4p40yrKWwHlhDc5vzNcCHBrQ5D/jLzoV5TwNeCZDktcCuwEuWPlRNAwtkSZLG1E0338o1Jz1rzjYzC+YJdRJwZpKjgG8ALwBIshr4g6p6SVXdkOQ1wEXtc05s162gGaZxJfD5JABvrap3jnwvtGxYIEuSpF5V1XeAQwes30CnV7iqTgZOntFmE4PHJ0vbzVksJEmSpA4LZEmSJKnDAlmSJEnqsECWJEmSOkZWICc5OcnmJJd21u2R5IIkV7W/d5/rNaRxNSi/pUmT5JokX05ySZINfccjSX0Z5SwWpwBvBd7dWbcW+HBVnZRkbbt87AhjmtN9H7aWR566dgHtAOaehmfSTPO+b6dTuHt+S5PoV6vq230HIUl9GlmBXFUfT7JqxurDufOuOKfS3BFnbArk719x0rzzT8KymYPyLqZ537fHLPktSZImUN/zID+gqq4HaG8vef/ZGnrvdE26vnJ4IWcDluOZAM+CbJcCzk9SwD+0t+S9gzksaVr0XSAvmPdO16TrK4cXcjZgOZ4J8CzIdnliVV3XdlZckOTKqvr41o3msKRp0fcsFt9KsjdA+3tzz/FI0tSqquva35uBDwIH9xuRJPWj7x7k9cAamnuwrwE+1G84kjSdktwH+Jmq+n77+GnAiT2HNfUcXiL1Y2QFcpLTaC7I2zPJJuA4msL4zCRHAd8AXjCqeKRhGpTfVfWufqOStskDgA8mgeb/hvdX1b/1G5IcXiL1Y5SzWBw5y6ZDRxWDtFTmyG9pIlTV1cCj+o5DksZB32OQJUmSpLFigSxJkiR1WCBLkiRJHRbIkiRZyaxuAAAgAElEQVRJUocFsiRJ6lWSPZJckOSq9vfus7Rb07a5KsmaAdvXJ7l06SPWcmeBLEmS+rYW+HBVHQB8uF2+iyR70EwR+ziam9gc1y2kk/w68IPRhKvlzgJZkiT17XDg1PbxqcDzBrR5OnBBVd1QVTcCFwCHASTZBXg58NoRxKopYIEsSZL69oCquh6g/X3/AW32Aa7tLG9q1wG8Bvhb4EfzvVGSo5NsSLJhy5Yti4tay1bft5qWJElTIMm/Aw8csOnPF/oSA9ZVkoOAh1TVnyZZNd+LVNU6YB3A6tWra4HvrSljgSxJkpZcVT1ltm1JvpVk76q6PsnewOYBzTYBh3SWVwAXAk8AHpPkGpq65v5JLqyqQ5C2k0MsJElS39YDW2elWAN8aECb84CnJdm9vTjvacB5VfX2qnpQVa0CngT8h8WxFssCWZIk9e0k4KlJrgKe2i6TZHWSdwJU1Q00Y40van9ObNdJQ+cQi3msWnvOvG12vddOI4hk9KZ53yVJo1NV3wEOHbB+A/CSzvLJwMlzvM41wCOWIERNGQvkOVxz0rPutm7V2nMGrl9upnnfJUnSdHOIhSRJktRhD7IkaezNN+RrOQ/3muZ9l/oyFgVyksOANwM7AO+sqpN6DknaJuawloNxzeNpHvI1cx+nZb+lvvU+xCLJDsDbgGcABwJHJjmw36ikhTOHtRyYx5J0p94LZOBgYGNVXV1VtwCn09yTXZoU5rCWA/NYklrjUCDPdW91aRKYw1oOzGNJao3DGOSB91a/W6PkaOBogJUrVy51THeT3BlmXt/8rlr+t3Dv7jdM175vg7HP4VVrz+Hrr3/2wG37HXv2sr3IZ+vFTYP2fb9jzwa8wKlj3jwep+MwTNfxaND/QTAd+y71YRwK5E3Avp3lFcB1MxtV1TpgHcDq1atHfkSY1oPQtO73NhrrHL7jgp6TpuuzvMuFTFO279tp3jz2ONyfad53qQ/jMMTiIuCAJPsn2Rk4guae7NKkMIe1HJjHktTqvQe5qm5LcgxwHs3UQidX1WU9hyUtmDms5cA8lqQ79V4gA1TVucC5fcchbS9zWMuBeSxJjXEYYiFJkiSNjUziwP8kW4Cv9/T2ewLf7um9+9bnvu9XVXv19N5DZw73pu99XzZ53HMOQ/+fZV/63u9lk8PQex73/Vn2aezriYkskPuUZENVre47jj5M874vJ9P8OU7zvi830/pZTut+L0fT/FlOwr47xEKSJEnqsECWJEmSOiyQt926vgPo0TTv+3IyzZ/jNO/7cjOtn+W07vdyNM2f5djvu2OQJUmSpA57kCVJkqQOC2RJkiSpwwJ5GyQ5LMlXkmxMsrbveEYlyclJNie5tO9YtDjmsDk86cxhc3jSTWsOw2TlsQXyAiXZAXgb8AzgQODIJAf2G9XInAIc1ncQWhxz2ByedOawOTzppjyHYYLy2AJ54Q4GNlbV1VV1C3A6cHjPMY1EVX0cuKHvOLRo5rAmnTmsSTe1OQyTlccWyAu3D3BtZ3lTu06aFOawJp05rElnDk8IC+SFy4B1zpGnSWIOa9KZw5p05vCEsEBeuE3Avp3lFcB1PcUibQ9zWJPOHNakM4cnhAXywl0EHJBk/yQ7A0cA63uOSdoW5rAmnTmsSWcOTwgL5AWqqtuAY4DzgCuAM6vqsn6jGo0kpwGfBh6aZFOSo/qOSdvOHDaHJ505bA5PumnOYZisPPZW05IkSVKHPciSJElShwWyJEmS1GGBLEmSJHVYIEuSJEkdFsiSJElShwVyT5I8MMnpSb6a5PIk5yY5OsnZfccmLYQ5rElnDms5MI+XhgVyD5IE+CBwYVU9uKoOBF4FPGCRr7vjMOKT5mMOa9KZw1oOzOOlY4Hcj18Fbq2qd2xdUVWXAJ8AdklyVpIrk7yvTX6SXJNkz/bx6iQXto+PT7IuyfnAu5O8KMkHkvxbkquS/PXI907TwBzWpDOHtRyYx0tk6r8h9OQRwMWzbHs08HCae7N/Cngi8Ml5Xu8xwJOq6uYkLwIOal/nJ8BXkvxdVV07jMClljmsSWcOazkwj5eIPcjj53NVtamqfgpcAqxawHPWV9XNneUPV9VNVfVj4HJgvyWIU5qNOaxJZw5rOTCPF8ECuR+X0XxLG+Qnnce3c2cv/23c+Xndc8ZzfrjA15CGxRzWpDOHtRyYx0vEArkfHwHukeS/b12R5LHAr8zxnGu484/gN5YuNGlBzGFNOnNYy4F5vEQskHtQVQX8GvDUdlqWy4DjacYJzeYE4M1JPkHzLU7qjTmsSWcOazkwj5dOmn9bSZIkSWAPsiRJknQXFsiSJElShwWyJEmS1GGBLEmSJHVYIEuSJEkdFsiSJElShwWyJEmS1GGBLEmSJHVYIEuSJEkdFsiSJElShwWyJEmS1GGBLEmSJHVMfYGc5MIkLxnSa70wyfnDeK3FSrIyyQ+S7NDT+4/Nv4XutFzzfViG+e+j4UpyfJL3Lrf3krrM8/GxLArkJE9K8v+S3JTkhiSfSvLYUcdRVe+rqqd14qokD5mtfZIXJbm9LWS/l+SLSZ49pFi+UVW7VNXtc7VrY/jkYt4ryap2X3fsvP9d/i00PBOc7wMPxvM9T9OhPQ5u/flpkps7yy/sO77tkeSUJLck+X77c2mSv0qya9+xqR/LNM/v1rGQ5JAkm/qKaRgmvkBO8rPA2cDfAXsA+wAnAD/pM65t8Omq2gXYDfh74PQku/Uc01301Qutu1sG+T4y3S9sGn/tF/pd2uPhN4DndNa9r+/4FuGvq+q+wF7Ai4HHA59Kcp9+w1IflnGeLzsTXyADPwdQVadV1e1VdXNVnV9VX4K791oN6u0EHpzkc22P3IeS7DGj7YuTXJvkxiR/kOSxSb6U5LtJ3tp57Tt6Y5N8vF39xfab4W/NtRNV9VPgPcB9gAM6r/n4trfwu20P8yGdbfsn+XjbM/HvSd62dV9n7mcb29Vt26+1p8cfBrwDeEIb43fbtqckeXuSc5P8EPjVJM9K8oW2p/vaJMd3wt+6r99tX+cJM3umk/xikovaf+OLkvxiZ9uFSV7T9oR+P8n5Sfac699rii2LfJ9Nmwt/NSi+dvvvJfl6ku8k+Ysk1yR5Smffz0ry3iTfA16U5OAkn25jvz7JW5Ps3Hm9pya5sn2vtwKZEc9/S3JF+29xXpL9tme/NDQ7J3l3e5y4LMnqrRsy40xEexx7bfv4kCSbkvyvJJvbXHhekmcm+Y80Z2JeNeO97pnkjPa9Pp/kUZ3XPjbJN9ttX0ly6HyBV9WPq+oi4LnA/WiKZZL8TJL/3eb15nb/dm23nZrkFe3jfdp9/B/t8kPauNPZv1d09u/F2/uPrN5NbJ7Ppo37j9PUId9O8v8lGesadKyDW6D/AG5vDyTPSLL7drzG7wH/DXgQcBvwlhnbH0dTtP4W8Cbgz4GnAA8HfjPJr8x8war65fbho9pvhmfMFUCaXtoXA7cCX2/X7QOcA7yWprfwz4B/TrJX+7T3A5+jOdgeD/zuLK99n3afntH2ZPwicElVXQH8AW0vdlV1e65/G3gdcF/gk8AP23+n3YBnAX+Y5Hlt2637ulv7Op+e8f57tPvxljbWNwDnJLnfjPd7MXB/YOd2X3V3yyLftye+JAfSnGV5IbA3sCtND3rX4cBZNHn6PuB24E+BPYEnAIcCWwuMPYF/Bv53u/2rwBO3vlCb368Cfp2m9+8TwGmL2C8t3nOB02k+3/XAW+dufhcPBO5JkzOvBv4R+B3gMcAvAa9O8l867Q8H/onm2Pt+4F+S7JTkocAxwGPb4+nTgWsWGkRVfR+4oH1PgBe1P78K/Bdgl85+fQw4pH38K8DV7W9ojrufqKrq7N/Wv4mjgLdt5/FB/Zv4PJ/FrwGrgf/avu9/W+TrLamJL5Cr6nvAk4CiSYQtSdYnecA2vMx7qurSqvoh8Bc0RUB3WMFr2m//59MUiqdV1eaq+ibNf5qPXsQuPD5Nz+2Pgb8BfqeqNrfbfgc4t6rOraqfVtUFwAbgmUlWAo8FXl1Vt1TVJ2n+kGbzU+ARSe5VVddX1WXzxPWhqvpU+74/rqoLq+rL7fKXaAqFuxVKs3gWcFVVvaeqbquq04Arged02vyfqvqPqroZOBM4aIGvPVWWQb4vJr7nA/9aVZ+sqltoDv4147mfrqp/afP05qq6uKo+0+bdNcA/cGfePhO4vKrOqqpbab4M/GfntX4f+KuquqKqbgP+EjjIXuRefbI9Ht5Oc8btUfM9oeNW4HXtZ306zZeiN1fV99vj4WXAL3TaX9zJjTfQFB2Pp/nSdQ/gwCQ7VdU1VfXVbdyP62gKEmi+8L2hqq6uqh8ArwSOSHPW52PAL7U9bb8M/DV3fon7lXZ7d/9OrKpbq+pc4AfAQ7cxLo2H5ZLnM72+qm6oqm/QHG+PXOTrLamJL5AB2v/AXlRVK4BH0PQ8vWkbXuLazuOvAzvRJNVW3+o8vnnA8i7bFvFdfKbtud2dpsD9pc62/YAXpDk9/N22kH4STe/Zg4AbqupHs+zHHdpC47doeouvT3JOkp+fJ667vFaSxyX5aJItSW5qX2uhwyAeRNsr3vF17tr71y1MfsTi/k2XtQnO99va97pDkq3Lty4gvgd1t7W5/50Z7zEzb38uydlJ/jPNsIu/5M59nfl6NeP5+wFv7vzt3UAzBGNmr7VGZ+Zx4p5Z+Fjz79SdFy3f3P6eK7e7ufFTYBPwoKraCLyM5qzd5iSnJ3nQwncBaHLohvbxzOPj14EdgQe0BckPaDoMfonm+oPr2t69mQXyd9ovclt5HJ1ck5bndzu2t8u3zlg389i+rX83I7UsCuSuqroSOIWmcICmB+zenSYPHPC0fTuPV9J8qN9eivhm0/Yc/A/gd5Ns7aG7lqY3bbfOz32q6iTgemCPJN1925dZVNV5VfVUmuL6SpreR7h7DxyzrH8/TQG/b1XtSjN2ObO0nek6mmKjayXwzXmep3lMWL5/A1g1Y93+ND0V3VyYLb7rgRVbNyS5F82Qna6Zufh2mnw/oKp+lmbIxNa8vb77Xkky472vBX5/xt/fvarq/82zn+rHj5g/97dFNzd+hib3rgOoqvdX1ZNojmsFvH6hL5pkF5ohS59oV808Pq6kKTi2FjUfozl7snN7FudjNMOQdgcu2ea90qQbxzyf7dg+s2Ns5rH9uu2OegQmvkBO8vPthQkr2uV9abrtP9M2uQT45TTzAu9Kc/pqpt9JcmBbbJ4InFXzTI+2QN+iGVO2IFX1HeCdNKeOAd4LPCfJ05PskOSe7SD8FVX1dZrhFscn2TnJE7jrkIU7JHlAkue2Y5F/QtMjsXX/vgWsSOfCpVncl6bH+sdJDqYZM7zVFpohHLPt67nAzyX57SQ7prmA60Ca3hBtgwnP938DHprkd9sxbnvQ9OieNaPna7b4zqL5e/jFNl9PYMZFdQPcF/ge8IP2rMkfdradAzw8ya+3vTN/zF3/s3kH8MokDwdIsmuSF8zzfurPJcBvt8fKw1j4ELDZPKaTGy+jOXZ+JslDkzw5yT1ohsbdzJ3H01kluUeSxwD/AtwI/J9202nAn6a56HoXmr+JMzp/Ex+jGQu69ULYC4E/ojkNP4y/W02WcczzM4AXp7koOkl+jubaj9NntPufSXZv/9/6k/Z5Y2viC2Tg+zQXFX02zYwLnwEuBV4B0I7bPQP4EnAxg4uy99D0wv0nzfibPx5SbMcDp7anaH9zgc95E80Y41+oqmtpBrK/iqYIvRb4n9z5ub2Q5sKj79BcyHcGg6f7+hmaf4/raE7r/QrthUrAR2jGJP1nkrl6Ef8HcGKS79MU8Gdu3dCe6n4dzdRF303y+O4T28L/2W0M3wH+F/DsqhppL/0yMbH53o6tfybN2N7Nbdw3cdeiddb42vFzf0Rz0L2e5t9iM3NPcfdnNF/mvk9z1uSOA3Kbfy8ATqLJywOAT3W2f5Cmx+T0dnjGpcAz5vtHUG/+hKaT4Ls0x8Z/WeTrfYhmaNqNNBdA/3o7TvMeNDnzbZocvT/NMXo2/6s9bt4AvJvm7/IX26FvACfT5PzHga/RFCN/1Hn+x2i+6G0tkD9J04P4cTSNxi7Pq+o8YC3Nl76baDrFTgXWDXivi2mK/HOAdy0y9iWVqvnOjmtSJDkDuLKqjus7Fml7JLkQeG9VvXMBbXeh+U/igKr62lLHJknaPkmK5li9se9YFmo59CBPrTTz0z44zTyah9H0Ni/226Q0tpI8J8m92+FCfwN8mcVPPTR12tOzX0hydru8f5LPJrkqzZyo8w25kqRlzQJ5sj2QZjzaD2jmiv3DqvpCrxFJS+twmqFC19EMiTiiPA22Pf4EuKKz/HrgjVV1AM2p1qN6iUqSxoRDLCRpirQXeJ5Kc93Ay2nGM24BHlhVt7UX/B5fVU/vMUxJ6pU9yJI0Xd5Ec6HsT9vl+wHf7cyasIlZ5npOcnSSDe3P0UsfqiT1Y6ETT4+VPffcs1atWtV3GBqhiy+++NtVtdf8LSeDOTyd+s7jJM8GNlfVxUkO2bp6QNOBpxarah3tlel77rlnrV69+h+WJFCNrb5zeNg8Fk+fhebwRBbIq1atYsOGDX2HoRFKMnPC8YlmDk+nMcjjJwLPTfJMmin0fpamR3m3JDu2vch33ChgLubwdBqDHB4q83j6LDSHHWIhSVOiql5ZVSuqahVwBPCRqnoh8FGau7UBrKGZr1SSppYFsjSHJPsm+WiSK5JcluRPBrRJkrck2ZjkS0n+ax+xSotwLPDyJBtpxiSP9QT+krTUJnKIhTRCtwGvqKrPJ7kvcHGSC6rq8k6bZ9BMOXYAzV3u3t7+lsZWVV1IM00kVXU1cHCf8UjSOLEHWZpDVV1fVZ9vH3+fZu7YmVf4Hw68uxqfoRnPufeIQ5UkSUNigSwtUJJVwKOBz87YtA9wbWd54DRZ3SmytmzZslRhzirJwJ9pMK37vdxMcw5r+TCHJ4MFsrQASXYB/hl4WVV9b+bmAU+52zRZVbWuqlZX1eq99hr9LElVRVWx37Fn3/F4Wm4UNGjfNXm6eetnqUllDk8GC2RpHkl2oimO31dVHxjQZBOwb2d5QdNkSZKk8WSBLM0hzbmvdwFXVNUbZmm2Hvi9djaLxwM3VdX1IwtSkiQNlbNYSHN7IvC7wJeTXNKuexWwEqCq3gGcCzwT2Aj8CHhxD3FKkqQhsUCW5lBVn2TwGONumwJeOpqIJEnSUnOIhSRJktRhgSxJkiR1WCBLkiRJHRbIkiRJUsdQCuQkhyX5SpKNSdYO2H6PJGe02z/b3pGsu31lkh8k+bNhxCNJ0nLiXQSl0Vp0gZxkB+BtwDOAA4Ejkxw4o9lRwI1V9RDgjcDrZ2x/I/B/FxuLJEnL0TTfCVPqwzB6kA8GNlbV1VV1C3A6cPiMNocDp7aPzwIObW/AQJLnAVcDlw0hFkmStAwkOTnJ5iSXdtYdn+SbSS5pf57Z2fbK9kz1V5I8vZ+otVwMo0DeB7i2s7ypXTewTVXdBtwE3C/JfYBjgRPme5MkRyfZkGTDli1bhhC2JEkaY6cAhw1Y/8aqOqj9ORegPXN9BPDw9jl/357hlrbLMArkQYOgZp73ma3NCTSJ/oP53qSq1lXV6qpavddee21HmJIkaVJU1ceBGxbY/HDg9Kr6SVV9jebOpgcvWXBa9oZRIG8C9u0srwCum61Nkh2BXWmS/nHAXye5BngZ8KokxwwhJkmStDwdk+RL7RCM3dt1CzmbLS3YMArki4ADkuyfZGeaUxzrZ7RZD6xpHz8f+Eg1fqmqVlXVKuBNwF9W1VuHEJMkSVp+3g48GDgIuB7423b9Qs5mNw0dsqkFWHSB3I4pPgY4D7gCOLOqLktyYpLnts3eRTPmeCPwcuBuU8FJkiTNpaq+VVW3V9VPgX/kzmEUCzmbvfU1HLKpee04jBdpB8mfO2PdqzuPfwy8YJ7XOH4YsUiSpOUpyd5VdX27+GvA1hku1gPvT/IG4EHAAcDneghRy8RQCmRJkqRhSnIacAiwZ5JNwHHAIUkOohk+cQ3w+wDtmeszgcuB24CXVtXtfcSt5cECWZIkjZ2qOnLA6nfN0f51wOuWLiJNk6HcalqSJElaLiyQJUmSpA4LZEmSJKnDAlmSpkiSeyb5XJIvJrksyQnt+v2TfDbJVUnOaOe1l6SpZIEsSdPlJ8CTq+pRNDdbOCzJ44HXA2+sqgOAG4GjeoxRknplgSxJU6S9i+kP2sWd2p8Cngyc1a4/FXheD+FJ0liwQJakKZNkhySXAJuBC4CvAt9t74wKzV3J9hnwPG/RK2kqWCBL0pRpb9V7EM3teA8GHjao2YDneYteSVPBAlmaQ5KTk2xOcuks2w9JclOSS9qfVw9qJ42jqvoucCHweGC3JFtvHrUCuK6vuCSpbxbI0txOAQ6bp80nquqg9ufEEcQkbbckeyXZrX18L+ApwBXAR4Hnt83WAB/qJ0JJ6p+3mpbmUFUfT7Kq7zikIdobODXJDjSdJGdW1dlJLgdOT/Ja4AvMcUtfSVruLJClxXtCki/SnJL+s6q6bFCjJEcDRwOsXLlyhOFJd6qqLwGPHrD+aprxyJI09RxiIS3O54H92jll/w74l9kaeoGTJEmTwQJZWoSq+t7WOWWr6lxgpyR79hyWJElahKEUyEkOS/KVJBuTrB2w/R7trUs3trcyXdWuf2qSi5N8uf395GHEI41KkgcmSfv4YJq/qe/0G5UkSVqMRY9Bbi/0eBvwVJrJ5S9Ksr6qLu80Owq4saoekuQImlua/hbwbeA5VXVdkkcA5zFgcnqpL0lOAw4B9kyyCTiO5s5jVNU7aK76/8MktwE3A0dU1d3mj5UkSZNjGBfpHQxsbC/wIMnpwOFAt0A+HDi+fXwW8NYkqaovdNpcBtwzyT2q6idDiEtatKo6cp7tbwXeOqJwJEnSCAxjiMU+wLWd5UG3KL2jTXsr05uA+81o8xvAF2Yrjr3FqSRJkkZhGAVyBqybeYp5zjZJHk4z7OL3Z3sTZwCQJEnSKAyjQN4E7NtZHnSL0jvatLcy3RW4oV1eAXwQ+L2q+uoQ4pEkSZK22zAK5IuAA5Lsn2Rn4Ahg/Yw262luXQrNRU0fqapqb3d6DvDKqvrUEGKRJEmSFmXRBXI7pvgYmhkorqC5bellSU5M8ty22buA+yXZCLwc2DoV3DHAQ4C/SHJJ+3P/xcYkSZIkba+h3Gq6vUHCuTPWvbrz+MfACwY877XAa4cRgyRJkjQM3klPkiRJ6rBAliRJkjoskCVJkqQOC2RJkiSpwwJZkiRJ6rBAliRJYyfJyUk2J7m0s26PJBckuar9vXu7PknekmRjki8l+a/9Ra7lwAJZkiSNo1OAw2asWwt8uKoOAD7MnfdVeAZwQPtzNPD2EcWoZcoCWZIkjZ2q+jhww4zVhwOnto9PBZ7XWf/uanwG2C3J3qOJVMuRBbIkSZoUD6iq6wHa31vvvrsPcG2n3aZ2nbRdLJAlSdKky4B1NbBhcnSSDUk2bNmyZYnD0qSyQJYkSZPiW1uHTrS/N7frNwH7dtqtAK4b9AJVta6qVlfV6r322mtJg9XkskCWJEmTYj2wpn28BvhQZ/3vtbNZPB64aetQDGl77Nh3AJIkSTMlOQ04BNgzySbgOOAk4MwkRwHfAF7QNj8XeCawEfgR8OKRB6xlxQJZkqZEkn2BdwMPBH4KrKuqNyfZAzgDWAVcA/xmVd3YV5wSQFUdOcumQwe0LeClSxuRFiMZNEwcmo9u/DjEQpKmx23AK6rqYcDjgZcmOZDZ55aVpKGoqjt+9jv27DsejysLZEmaElV1fVV9vn38feAKmqmwZptbVpKm0lAK5CSHJflKe4vHu/U8JLlHkjPa7Z9Nsqqz7ZXt+q8kefow4pGGZdCtTmds9/ammkjtcfjRwGeZfW7Zmc9xeixJU2HRBXKSHYC30dzm8UDgyPaUXddRwI1V9RDgjcDr2+ceCBwBPJzmdpJ/376eNC5O4e63Ou3y9qaaOEl2Af4ZeFlVfW+hz3N6LEnTYhg9yAcDG6vq6qq6BTid5nRdV/f03VnAoWlGax8OnF5VP6mqr9FcfXrwEGKShmKWW512eXtTTZQkO9EUx++rqg+0q2ebW1aSptIwZrEYdHvHx83WpqpuS3ITcL92/WdmPHfgrSGTHE3TQ8fKlSuHEPb8HnnqIxfc9strvryEkYzeNO/7Nprt9qZ3m3+zjxyGu3+W930YPPLUu1+Dtdw+x0E5PC37Ppu2Y+JdwBVV9YbOpq1zy57EXeeWlaSpNIwCeSG3d5ytzYJvDVlV64B1AKtXrx7JZY/T8p/mINO879torHMY4PtXnMQ1Jz1rzjar1p4zomhGZyH7Dctz3+fwROB3gS8nuaRd9ypmn1tW0hA86oTzuenmW++2fubxZ9d77cQXj3vaqMLSHIZRIC/k9o5b22xKsiOwK81p6wXfGlIaU+awJkZVfZLBX+pgwNyykobjpptv9Qv7hBnGGOSLgAOS7J9kZ5qL7tbPaNO9NeTzgY+0k3qvB45oZ7nYn+ZCp88NISZpVLy9qSRJy8yie5DbMcXHAOcBOwAnV9VlSU4ENlTVepoxb+9JspGm5/iI9rmXJTkTuJxmAvuXVtXti41JGpZZbnW6E0BVvQNvbypJ0rIzlFtNV9W5NIVCd92rO49/zCxj2qrqdcDrhhGHNGxz3Op063ZvbypJ0jLjnfQkSZKkjqH0IEuStFQWMgOAV/9LGiYLZEnSWFvIDABe/S9pmBxiIUmSJHVYIEuSJEkdFsiSJElShwWyJEmS1OFFepIkjalBM3jMvCDRGTyk4bNAliRpTDmDh9QPh1hIkiRJHRbIkiRJUocFsiRJktRhgSxJkiR1WCBLkiRJHRbIkiRJUocFsiRJktSxqAI5yR5JLkhyVft791narWnbXJVkTbvu3knOSXJlkkbNibgAABj/SURBVMuSnLSYWCRJkqRhWGwP8lrgw1V1APDhdvkukuwBHAc8DjgYOK5TSP9NVf088GjgiUmesch4JEnSMpfkmiRfTnJJkg3tugV12kkLsdgC+XDg1PbxqcDzBrR5OnBBVd1QVTcCFwCHVdWPquqjAFV1C/B5YMUi45EkSdPhV6vqoKpa3S7P22knLdRiC+QHVNX1AO3v+w9osw9wbWd5U7vuDkl2A55Dk9CSJEnbaiGddtKC7DhfgyT/DjxwwKY/X+B7ZMC66rz+jsBpwFuq6uo54jgaOBpg5cqVC3xrSZK0DBVwfpIC/qGq1jGj0y7JoE47aUHmLZCr6imzbUvyrSR7t4m4N7B5QLNNwCGd5RXAhZ3ldcBVVfWmeeJY17Zl9erVNVdbSdJgSU4Gng1srqpHtOv2AM4AVgHXAL/ZDomTxtUTq+q6tgi+IMmVC32iHW5aiMUOsVgPrGkfrwE+NKDNecDTkuzeDph/WruOJK8FdgVetsg4JEkLcwpw2Ix1jt3URKmq69rfm4EP0kwC8K22s445Ou2oqnVVtbqqVu+1116jClkTZrEF8knAU5NcBTy1XSbJ6iTvBKiqG4DXABe1PydW1Q1JVtAM0zgQ+Hx7JepLFhmPNHRJDkvylSQbkwyaqeVFSba0OWwea6xV1ceBG2asduymJkaS+yS579bHNB1vl7KwTjtpQeYdYjGXqvoOcOiA9RuAl3SWTwZOntFmE4PHJ0tjI8kOwNtovgBuAi5Ksr6qLp/R9IyqOmbkAUrDsaCxm56a1ph4APDBJNDUMe+vqn9LchFwZpKjgG8AL+gxRrUedcL53HTzrXdbv2rtOXc83vVeO/HF4542yrDmtagCWZoCBwMbt15AmuR0mt62mQWytOx5LYjGQXs8ftSA9QM77dSvm26+lWtOetacbbrF8rjwVtPS3OadprD1G0m+lOSsJPsOeqEkRyfZkGTDli1bliJWaXstaOymJE0LC2RpbnNOU9j6V2BVVf0C8O/cOZbzrk/ywhCNL8duSlKHQyykuW0Cuj3CK4Drug3a03pb/SPw+hHEJW2XJKfRTL25Z5JNwHE0F1g7dlNaIvd92Foeeer8k8Pc92EAcw9H0GhYIEtzuwg4IMn+wDeBI4Df7jbYOhd4u/hc4IrRhigtXFUdOcsmx25KS+T7V5w07zhcGM+xuNPKAlmaQ1XdluQYmrm7dwBOrqrLkpwIbKiq9cAfJ3kucBvN9Fkv6i1gSZK0aBbI0jyq6lzg3BnrXt15/ErglaOOS5IkLQ0v0pMkSZI67EGWJI21hVzg5MVNkobJAlmSNNYWcoHTcr24yS8HUj8skCVJGlPT/OVA6pNjkCVJkqQOC2RJkiSpwwJZkiRJ6rBAliRJkjoskCVJkqQOC2RJkiSpY1EFcpI9klyQ5Kr29+6ztFvTtrkqyZoB29cnuXQxsUiSJEnDsNh5kNcCH66qk5KsbZeP7TZIsgdwHLAaKODiJOur6sZ2+68DP1hkHJIkSRozk3qzm8UWyIcDh7SPTwUuZEaBDDwduKCqbgBIcgFwGHBakl2AlwNHA2cuMhZJkiSNkUm92c1ixyA/oKquB2h/339Am32AazvLm9p1AK8B/hb40XxvlOToJBuSbNiyZcviopYkSZJmMW8PcpJ/Bx44YNOfL/A9MmBdJTkIeEhV/WmSVfO9SFWtA9YBrF69uhb43pIkSdI2mbdArqqnzLYtybeS7F1V1yfZG9g8oNkm7hyGAbCCZijGE4DHJLmmjeP+SS6sqkOQJEmSerLYMcjrgTXASe3vDw1ocx7wl50ZLp4GvLIdk/x2gLYH+WyLY0mStBwtZJztrvfaaQSRaCEWWyCfBJyZ5CjgG8ALAJKsBv6gql5SVTckeQ1wUfucE7desCdJkrTcDbpIbdXac+a9eE39WVSBXFXfAQ4dsH4D8JLO8snAyXO8zjXAIxYTiyRJkjQMi+1BliRpyc13eno5n5qe5n3X8jCJOWyBLEkaa9N8enrmPk7Lfmv5mNS/38XOgyxJkiQtKxbI0jySHJbkK0k2trdUn7n9HknOaLd/diHzekvjaL5cl8adOaxhsUCW5pBkB+BtwDOAA4Ejkxw4o9lRwI1V9RDgjcDrRxultHgLzHVpbJnDGiYLZGluBwMbq+rqqroFOB04fEabw4FT28dnAYcmGXQHSWmcLSTXpXFmDmtoLJClue0DXNtZ3tSuG9imqm4DbgLuN5LopOFZSK5L48wc1tA4i4U0t0E9wbUdbUhyNHA0wMqVKxcf2TZYtfYcvv76Zw/ctt+xZ4/lFDvDsHVqoUH7vt+xZwPjOb1QT+bN4z5zuH3/uy63g5mq7vbntux09z2dQVzTsO/bYOyPxe373/l4SnMYxn/fLZCluW0C9u0srwCum6XNpiQ7ArsCd7tbZFWtA9YBrF69emRHhDum0jlpPA9CS+UuUwhN2b5vp3lzva8c7rz/qN9ybEzzvm+DhRyvzeOeTNp+O8RCmttFwAFJ9k+yM3AEsH5Gm/XAmvbx84GP1KQdCaSF5bo0zsxhDY09yNIcquq2JMcA5wE7ACdX1WVJTgQ2VNV64F3Ae5JspOk5PqK/iKXtM1uu9xyWtGDmsIbJAlmaR1WdC5w7Y92rO49/DLxg1HFJwzYo16VJYg5rWBxiIUmSJHVkEodKJtkCfL2nt98T+HZP7923Pvd9v6raq6f3HjpzuDd97/uyyeOecxj6/yz70vd+L5scht7zuO/Psk9jX09MZIHcpyQbqmp133H0YZr3fTmZ5s9xmvd9uZnWz3Ja93s5mubPchL23SEWkiRJUocFsiRJktRhgbzt1vUdQI+med+Xk2n+HKd535ebaf0sp3W/l6Np/izHft8dgyxJkiR12IMsSZIkdVggS5IkSR0WyNsgyWFJvpJkY5K1fcczKklOTrI5yaV9x6LFMYfN4UlnDpvDk25acxgmK48tkBcoyQ7A24BnAAcCRyY5sN+oRuYU4LC+g9DimMPm8KQzh83hSTflOQwTlMcWyAt3MLCxqq6uqluA04HDe45pJKrq48ANfcehRTOHNenMYU26qc1hmKw8tkBeuH2AazvLm9p10qQwhzXpzGFNOnN4QlggL1wGrHOOPE0Sc1iTzhzWpDOHJ4QF8sJtAvbtLK8AruspFml7mMOadOawJp05PCEskBfuIuCAJPsn2Rk4Aljfc0zStjCHNenMYU06c3hCWCAvUFXdBhwDnAdcAZxZVZf1G9VoJDkN+DTw0CSbkhzVd0zaduawOTzpzGFzeNJNcw7DZOWxt5qWJEmSOuxBliRJkjoskCVJkqQOC2RJkiSpwwJZkiRJ6rBAliRJkjoskHuS5IFJTk/y1SSXJzk3ydFJzu47NmkhzGFNOnNYy4F5vDQskHuQJMAHgQur6sFVdSDwKuABi3zdHYcRnzQfc1iTzhzWcmAeLx0L5H78KnBrVb1j64qqugT4BLBLkrOSXJnkfW3yk+SaJHu2j1cnubB9fHySdUnOB96d5EVJPpDk35JcleSvR753mgbmsCadOazlwDxeIlP/DaEnjwAunmXbo4GH09yb/VPAE4FPzvN6jwGeVFU3J3kRcFD7Oj8BvpLk76rq2mEELrXMYU06c1jLgXm8ROxBHj+fq6pNVfVT4BJg1QKes76qbu4sf7iqbqqqHwOXA/stQZzSbMxhTTpzWMuBebwIFsj9uIzmW9ogP+k8vp07e/lv487P654znvPDBb6GNCzmsCadOazlwDxeIhbI/fgIcI8k/33riiSPBX5ljudcw51/BL+xdKFJC2IOa9KZw1oOzOMlYoHcg6oq4NeAp7bTslwGHE8zTmg2JwBvTvIJmm9xUm/MYU06c1jLgXm8dNL820qSJEkCe5AlSZKku7BAliRJkjoskCVJkqQOC2RJkiSpwwJZkiRJ6rBAliRJkjoskCVJkqQOC2RJkiSpwwJZkiRJ6rBAliRJkjoskCVJkqQOC+QpkuSQJJv6jkOSJGmcWSAPUZJK8pAZ645P8t6+YpIkSdK2sUCeUEl27DsGSZKk5cgCeYS2DnFI8qok305yTZIXdrbfL8m/JvlekouSvDbJJzvbK8lLk1wFXNWue3OSa9vnXJzklzrt75XklCQ3JrkceOyMeB6U5J+TbEnytSR/vPT/CpIkSePNAnn0HgjsCewDrAHWJXlou+1twA/bNmvan5meBzwOOLBdvgg4CNgDeD/wT0nu2W47Dnhw+/P07usl+RngX4EvtrEcCrwsydOHspeSJEkTygK5H39RVT+pqo8B5wC/mWQH4DeA46rqR1V1OXDqgOf+VVXdUFU3A1TVe6vqO1V1W1X9LXAPYGvB/ZvA69r21wJv6bzOY4G9qurEqrqlqq4G/hE4Ykn2WJIkaUI4jnW4bgd2mrFuJ+DWzvKNVfXDzvLXgQcBe9F8Htd2tnUfD1yX5BXAS9rXKOBnaXqoadd123+983g/4EFJvttZtwPwiQHvKUmSNDXsQR6ubwCrZqzbn7sWprsnuU9neSVwHbAFuA1Y0dm274D3qK0P2vHGx9L0FO9eVbsBNwFpm1w/4zVWdh5fC3ytqnbr/Ny3qp459y5KkiQtbxbIw3UG8L+TrEjyM0meAjwHOGtGuxOS7NwWuM8G/qmqbgc+AByf5N5Jfh74vXne7740RfUWYMckr6bpQd7qTOCVSXZPsgL4o862zwHfS3JsezHfDkkekeQuF/JJkiRNGwvk4ToR+H/AJ4Ebgb8GXlhVl3ba/Ge77TrgfcAfVNWV7bZjgF3bNu8BTgN+Msf7nQf8X+A/aHqpf8xdh1Sc0K7/GnB++5oAtAX5c2gu8Psa8G3gne37S5IkTa1U1fytNBRJDgHeW1Ur5mvbtn898MCqGjSbhSRJkpaAPchjJMnPJ/mFNA4GjgI+2HdckiRJ08RZLMbLfWmGVTwI2Az8LfChXiOSJEmaMg6xkCRJkjocYiFJkiR1WCBLkiRJHRM5BnnPPfesVatW9R2GRujiiy/+dlXt1XcckiRp+ZvIAnnVqlVs2LCh7zA0Qkm+Pn8rSZKkxXOIhSRJktQxFgVykj9NclmSS5OcluSefcckSZKk6dR7gZxkH+CPgdVV9QhgB+CIfqOSJEnStOq9QG7tCNwryY7AvYHreo5HkiRJU6r3Armqvgn8DfAN4Hrgpqo6f2a7JEcn2ZBkw5YtW0Yd5tRKMvBHkiRpueq9QE6yO3A4sD/NLZbvk+R3ZrarqnVVtbqqVu+1l7N9jUpV3fGz37Fn3/FYkiRpueq9QAaeAnytqrZU1a3AB4Bf7DkmSZIkTalxKJC/ATw+yb3TnLs/FLii55gkSZI0pXovkKvqs8BZwOeBL9PEtK7XoCRJkjS1xuJOelV1HHBc33FIkiRJvfcgS5IkSePEAlmSJEnqsECWJEmSOiyQJUmSpA4LZEmSJKnDAlmSJEnqsECWJEmSOiyQJUmSpA4LZEmSJKnDAlmSJEnqsECWJEmSOiyQJUmSpA4LZEmSJKnDAlmSJEnqsECWJEmSOiyQJUmSpA4LZEmSJKnDAlmSJEnqsECWJEmSOiyQJUmSpA4LZEmSJKnDAlmSJEnqGIsCOcluSc5KcmWSK5I8oe+YJEmSNJ127DuA1puBf6uq5yfZGbh33wFJkiRpOvVeICf5WeCXgRcBVNUtwC19xiRJ+v/bu7/Qu+/6juOvN03VMktvDApt06iILG5o9Te96GDToVQjyvCmgjKHLFeKgqC/7UZ7F70YjiEbwX8Ty8rwD5SmaEUt0yFqqhWXxmItkYYqZgwykUzT+fYiP+0nf9r+ZP2dz0m+jweEnPM953fO65CbJ1++OT+A5VqHSyyel+Rkkk9U1Xer6qNV9QezRwEAsEzrEMi7krw0yT91941JfpFk8/wnVdWBqjpSVUdOnjy56o2pqgv+AABw+VmHQD6R5ER3f3Pr/mdyNpjP0d2Hunujuzd279690oFb75/uzg3vu/N3twEAuPxMD+Tu/mmSh6vqhVuH/iLJ/RMnAQCwYNP/k96Wdya5besbLB5K8teT9wAAsFBrEcjdfV+Sjdk7AABg+iUWAACwTgQyAAAMBDIAAAwEMgAADAQyAAAMBDIAAAwEMgAADAQyAAAMBDIAAAwEMgAADAQyAAAMBDIAAAwEMgAADAQyAAAMBDIAAAwEMgAADAQyAAAMBDIAAAwEMgAADAQyAAAMBDIAAAwEMgAADAQyAAAM1iaQq+qKqvpuVd05ewsAAMu1NoGc5F1Jjs0eAQDAsq1FIFfVdUn2J/no7C0AACzbrtkDtnw4yXuTXP14T6iqA0kOJMmePXtWNGu5Xnzr3Tl1+swFx/duHj7n/jVXXZnvvf81q5oFALDjpgdyVb0+yc+6+96q+vPHe153H0pyKEk2NjZ6RfMW69TpMzl+cP+TPu/8YAYAuNStwyUWNyV5Q1UdT3J7kldV1afnTgIAYKmmB3J3/213X9fde5PckuQr3f2WybMAAFio6YEMAADrZPo1yKPuvifJPZNnAACwYM4gAwDAQCADAMBAIAMAwEAgAwDAQCADAMBAIAMAwEAgAwDAQCADAMBAIAMAwEAgAwDAYK1+1fS6efGtd+fU6TMXHN+7efic+9dcdWW+9/7XrGoWAAA7SCA/gVOnz+T4wf1P+rzzgxkAgEuXSywAAGAgkAEAYCCQAQBgIJABAGAgkAEAYCCQAQBgIJABAGAgkAEAYCCQAQBgIJABAGAgkAEAYDA9kKvq+qr6alUdq6qjVfWu2ZsAAFiuXbMHJHk0yXu6+ztVdXWSe6vqS919/+xhAAAsz/QzyN39k+7+ztbtnyc5luTauasAAFiq6YE8qqq9SW5M8s2LPHagqo5U1ZGTJ0+uehoAAAuxNoFcVc9M8tkk7+7u/zn/8e4+1N0b3b2xe/fu1Q8EAGAR1iKQq+rKnI3j27r7c7P3AACwXNMDuaoqyceSHOvuv5+9BwCAZZseyEluSvLWJK+qqvu2/rxu9igAAJZp+te8dffXk9TsHQAAkKzHGWQAAFgbAhkAAAYCGQAABgIZAAAGAhkAAAYCGQAABgIZAAAGAhkAAAYCGQAABgIZAAAG03/V9Dq7+g8388f/srmN5yXJ/h3fs0pL/uwAwLIJ5Cfw/b/6/gXH9m4ezvGDl38Q/vzYwW19zr2bh1ewBgBgdVxiAQAAA4EMAAADgQwAAAOBDAAAA4EMAAADgQwAAAOBDAAAA4EMAAADgQwAAAOBDAAAg7UI5Kq6uaoeqKoHq2pz9h4AAJZreiBX1RVJPpLktUn2JXlzVe2buwoAgKWaHshJXp7kwe5+qLt/leT2JG+cvAkAgIXaNXtAkmuTPDzcP5HkFec/qaoOJDmQJHv27FnNsnPf/7HbHzz7d3evfMcq7d08nB9/8PUXfeyG992ZJLnmqitXOQkAYMetQyDXRY5dUJ7dfSjJoSTZ2NhYeZle7jF8vuMH95+9cXBZnxsAYB0usTiR5Prh/nVJHpm0BQCAhVuHQP52khdU1XOr6mlJbklyx+RNAAAs1PRLLLr70ap6R5IvJrkiyce7++jkWQAALNT0QE6S7r4ryV2zdwAAwDpcYgEAAGujLsVvZ6iqk0l+POntn5Xkvya992wzP/sN3b170nsDAAtySQbyTFV1pLs3Zu+YYcmfHQBYDpdYAADAQCADAMBAIP/+Ds0eMNGSPzsAsBCuQQYAgIEzyAAAMBDIAAAwEMi/h6q6uaoeqKoHq2pz9p5VqaqPV9XPquo/Z28BANhpAnmbquqKJB9J8tok+5K8uar2zV21Mp9McvPsEQAAqyCQt+/lSR7s7oe6+1dJbk/yxsmbVqK7/z3Jf8/eAQCwCgJ5+65N8vBw/8TWMQAALiMCefvqIsd8Rx4AwGVGIG/fiSTXD/evS/LIpC0AAOwQgbx9307ygqp6blU9LcktSe6YvAkAgKeYQN6m7n40yTuSfDHJsST/1t1H565ajar61yTfSPLCqjpRVW+fvQkAYKf4VdMAADBwBhkAAAYCGQAABgIZAAAGAhkAAAYCGQAABgJ5kqp6TlXdXlU/qqr7q+quqjpQVXfO3gYAsGQCeYKqqiSfT3JPdz+/u/cl+bskz/5/vu6up2IfAMCSCeQ5XpnkTHf/828PdPd9Sb6W5JlV9Zmq+kFV3bYV06mq41X1rK3bG1V1z9btD1TVoaq6O8mnquptVfW5qvpCVf2wqj608k8HAHAJc8Zxjj9Kcu/jPHZjkhcleSTJfyS5KcnXn+T1XpbkT7v7dFW9LclLtl7nl0keqKp/7O6Hn4rhAACXO2eQ18+3uvtEd/86yX1J9m7jZ+7o7tPD/S9396nu/t8k9ye5YQd2AgBclgTyHEdz9qzvxfxyuP1/eews/6N57N/rGef9zC+2+RoAADwJgTzHV5I8var+5rcHqupPkvzZE/zM8TwW1W/auWkAAMsmkCfo7k7yl0levfU1b0eTfCBnrzt+PLcm+Yeq+lrOnhUGAGAH1NlWAwAAEmeQAQDgHAIZAAAGAhkAAAYCGQAABgIZAAAGAhkAAAYCGQAABr8BPApPYP/cTysAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(10, 18))\n", "\n", "for i in range(1,len(plot_columns)):\n", " axis = fig.add_subplot(6,4,i)\n", " events_pivot.boxplot(plot_columns[i], ax = axis, \n", " grid = False, by='Churn', showfliers=False)\n", "fig.tight_layout(rect=[0, 0.03, 1, 0.95])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the above analysis, it is evident that non churned users will have significant longer playing time than churned users. The following factors are also quite important contributing factors to the users churning. \n", "\n", "* Add Friends - Churned users are less likely to add friends\n", "* Add to Playlist - Churned users are less likely to add to playlists\n", "* Upgrade - Churned users have a wide range of upgrade activities\n", "* NextSong - Churned users are less likely to play next song\n", "* ThumbsUp - Churned users are less likely to press thumbs up\n", "* Roll Advert - Churned users have a wider spread on roll advert\n", "* Settings - Churned users less likely to visit settings page\n", "* Log out - Churned users less likely to log out (due to less logins)\n", "* Help - Non-churned users more likely to ask for help\n", "* Home - Churned users less likely to visit home page" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Feature Engineering\n", "\n", "Build 7 features that are needed to construct the model " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dimensionality Reductions - Removing Less Useful Features" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Remove several less useful columns to speed up the opreations\n", "* First Name\n", "* Last Name\n", "* auth\n", "* status\n", "* gender\n", "* ItemInSession\n", "* location\n", "* method\n", "* song\n", "* artist\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "events = events.drop('firstName', 'lastName', 'auth', 'gender', 'song','artist',\n", " 'status', 'method', 'location', 'registration', 'itemInSession')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**1**. pivot the page column to obtain different activities for the user, then remove the less significant features" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "events_pivot = events.groupby([\"userId\"]).pivot(\"page\").count().fillna(0)\n", "events_pivot = events_pivot.drop('About', 'Cancel', 'Login', 'Submit Registration', 'Register', 'Save Settings')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**2.** Add average song played length" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "# filter events log to contain only next song\n", "events_songs = events.filter(events.page == 'NextSong')\n", "\n", "# Total songs length played\n", "total_length = events_songs.groupby(events_songs.userId).agg(sum('length'))\n", "\n", "# join events pivot\n", "events_pivot = (events_pivot.join(total_length, on = 'userId', how = 'left')\n", " .withColumnRenamed(\"Cancellation Confirmation\", \"Churn\")\n", " .withColumnRenamed(\"sum(length)\", \"total_length\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**3.** Add days active" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "convert = 1000*60*60*24 # conversion factor to days\n", "\n", "# Find minimum/maximum time stamp of each user\n", "min_timestmp = events.select([\"userId\", \"ts\"]).groupby(\"userId\").min(\"ts\")\n", "max_timestmp = events.select([\"userId\", \"ts\"]).groupby(\"userId\").max(\"ts\")\n", "\n", "# Find days active of each user\n", "daysActive = min_timestmp.join(max_timestmp, on=\"userId\")\n", "daysActive = (daysActive.withColumn(\"days_active\", \n", " (col(\"max(ts)\")-col(\"min(ts)\")) / convert))\n", "daysActive = daysActive.select([\"userId\", \"days_active\"])\n", "\n", "# join events pivot\n", "events_pivot = events_pivot.join(daysActive, on = 'userId', how = 'left')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**4.** Add number of sessions" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "numSessions = (events.select([\"userId\", \"sessionId\"])\n", " .distinct()\n", " .groupby(\"userId\")\n", " .count()\n", " .withColumnRenamed(\"count\", \"num_sessions\"))\n", "\n", "# join events pivot\n", "events_pivot = events_pivot.join(numSessions, on = 'userId', how = 'left')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**5.** Add days as paid user" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "# Find minimum/maximum time stamp of each user as paid user\n", "paid_min_ts = events.filter(events.level == 'paid').groupby(\"userId\").min(\"ts\")\n", "paid_max_ts = events.filter(events.level == 'paid').groupby(\"userId\").max(\"ts\")\n", "\n", "# Find days as paid user of each user\n", "\n", "daysPaid = paid_min_ts.join(paid_max_ts, on=\"userId\")\n", "daysPaid = (daysPaid.withColumn(\"days_paid\", \n", " (col(\"max(ts)\")-col(\"min(ts)\")) / convert))\n", "daysPaid = daysPaid.select([\"userId\", \"days_paid\"])\n", "\n", "# join events pivot\n", "events_pivot = events_pivot.join(daysPaid, on = 'userId', how='left')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**6.** Add days as a free user" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "# Find minimum/maximum time stamp of each user as paid user\n", "free_min_ts = events.filter(events.level == 'free').groupby(\"userId\").min(\"ts\")\n", "free_max_ts = events.filter(events.level == 'free').groupby(\"userId\").max(\"ts\")\n", "\n", "# Find days as paid user of each user\n", "daysFree = free_min_ts.join(free_max_ts, on=\"userId\")\n", "daysFree = (daysFree.withColumn(\"days_free\", \n", " (col(\"max(ts)\")-col(\"min(ts)\")) / convert))\n", "daysFree = daysFree.select([\"userId\", \"days_free\"])\n", "\n", "# join events pivot\n", "events_pivot = events_pivot.join(daysFree, on = 'userId', how='left')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**7.** Add user access agent" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "# find user access agents, and perform one-hot encoding on the user \n", "userAgents = events.select(['userId', 'userAgent']).distinct()\n", "userAgents = userAgents.fillna('Unknown')\n", "\n", "# build string indexer\n", "stringIndexer = StringIndexer(inputCol=\"userAgent\", outputCol=\"userAgentIndex\")\n", "model = stringIndexer.fit(userAgents)\n", "userAgents = model.transform(userAgents)\n", "\n", "# one hot encode userAgent column\n", "encoder = OneHotEncoder(inputCol=\"userAgentIndex\", outputCol=\"userAgentVec\")\n", "userAgents = encoder.transform(userAgents).select(['userId', 'userAgentVec'])\n", "\n", "# join events pivot\n", "events_pivot = events_pivot.join(userAgents, on = 'userId', how ='left')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**8.** Fill all empty values as 0" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "events_pivot = events_pivot.fillna(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Modeling\n", "Split the full dataset into train, test, and validation sets. Test out several of the machine learning methods you learned. Evaluate the accuracy of the various models, tuning parameters as necessary. Determine your winning model based on test accuracy and report results on the validation set. Since the churned users are a fairly small subset, I suggest using F1 score as the metric to optimize." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "# Split data into train and test set\n", "events_pivot = events_pivot.withColumnRenamed('Churn', 'label')\n", "training, test = events_pivot.randomSplit([0.8, 0.2])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Build machine learning pipeline" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "# Create vector from feature data\n", "feature_names = events_pivot.drop('label', 'userId').schema.names\n", "vec_asembler = VectorAssembler(inputCols = feature_names, outputCol = \"Features\")\n", "\n", "# Scale each column\n", "scalar = MinMaxScaler(inputCol=\"Features\", outputCol=\"ScaledFeatures\")\n", "\n", "# build classifiers\n", "rf = RandomForestClassifier(featuresCol=\"ScaledFeatures\", labelCol=\"label\",\n", " numTrees = 50, featureSubsetStrategy='sqrt')\n", "\n", "lr = LogisticRegression(featuresCol=\"ScaledFeatures\", labelCol=\"label\", \n", " maxIter=10, regParam=0.01)\n", "\n", "gbt = GBTClassifier(featuresCol=\"ScaledFeatures\", labelCol=\"label\")\n", "\n", "# Consturct 3 pipelines\n", "pipeline_rf = Pipeline(stages=[vec_asembler, scalar, rf])\n", "pipeline_lr = Pipeline(stages=[vec_asembler, scalar, lr])\n", "pipeline_gbt = Pipeline(stages=[vec_asembler, scalar, gbt])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Fit the model" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "rf_model = pipeline_rf.fit(training)\n", "lr_model = pipeline_lr.fit(training)\n", "gbt_model = pipeline_gbt.fit(training)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Test performances for each model" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "def modelEvaluations(model, metric, data):\n", " \"\"\" Evaluate a machine learning model's performance \n", " Input: \n", " model - pipeline object\n", " metric - the metric of the evaluations\n", " data - data being evaluated\n", " Output:\n", " [score, confusion matrix]\n", " \"\"\"\n", " # generate predictions\n", " evaluator = MulticlassClassificationEvaluator(metricName = metric)\n", " predictions = model.transform(data)\n", " \n", " # calcualte score\n", " score = evaluator.evaluate(predictions)\n", " confusion_matrix = (predictions.groupby(\"label\")\n", " .pivot(\"prediction\")\n", " .count()\n", " .toPandas())\n", " return [score, confusion_matrix]" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "f1_rf, conf_mtx_rf = modelEvaluations(rf_model, 'f1', test)\n", "f1_lr, conf_mtx_lr = modelEvaluations(lr_model, 'f1', test)\n", "f1_gbt, conf_mtx_gbt = modelEvaluations(gbt_model, 'f1', test)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The F1 score for the random forest model: 0.7777777777777779\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", "
label0.01.0
00323.0
115NaN
\n", "
" ], "text/plain": [ " label 0.0 1.0\n", "0 0 32 3.0\n", "1 1 5 NaN" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print('The F1 score for the random forest model:', f1_rf)\n", "conf_mtx_rf" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The F1 score for the logistic regression model: 0.7640845070422536\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", "
label0.01.0
00314.0
115NaN
\n", "
" ], "text/plain": [ " label 0.0 1.0\n", "0 0 31 4.0\n", "1 1 5 NaN" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print('The F1 score for the logistic regression model:', f1_lr)\n", "conf_mtx_lr" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The F1 score for the gradient boosting model: 0.803846153846154\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", "
label0.01.0
00287
1123
\n", "
" ], "text/plain": [ " label 0.0 1.0\n", "0 0 28 7\n", "1 1 2 3" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print('The F1 score for the gradient boosting model:', f1_gbt)\n", "conf_mtx_gbt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Gradient boosting model yields the best F1 score. Due to the size limitation of the dataset, the parameters obtained from these 3 models would not be applicable to the full 12GB dataset. Therefore, hyperparameter tuning step was neglected." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Feature Importance**\n", "\n", "Find out the relative feature importances of the model" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "feature_importances = np.array(gbt_model.stages[-1].featureImportances)\n", "userAgentVec = feature_importances[len(feature_names) :].sum()\n", "feature_importances = feature_importances[:len(feature_names)] + [userAgentVec]" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,\n", " 17, 18, 19, 20]), )" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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d1LasY0Fbo2IR4DrKfvko7VZ5/fepVShjgYO7cO2SuqieHZTDklqrog4AjgqM3dc3LyStDSzBE2SJKlhDNAkSZIaxipOSZKkhrEETZIkqWEa96mnNdZYI8eNG7eksyFJkrRYv/71r/+RmWM6vd7GBWjjxo1jxowZSzobkiRJixURf+rGeq3ilCRJahgDNEmSpIYxQJMkSWqYxrVBkyRJ7XnqqaeYM2cOjz/++JLOypA3atQoxo4dy3LLLTco6RmgSZK0lJozZw4rr7wy48aNIyKWdHaGrMzkgQceYM6cOWy00UaDkqZVnJIkLaUef/xxVl99dYOzLosIVl999UEtqTRAkyRpKWZwNjgGez8boEmSJDWMbdAkSRoixp1wRUfXN/uUvRc7z0orrcS///3vjqa7KLNnz+aGG27gda973aCluSRYgiZJkpYK8+bNY/bs2Vx00UVLOitdZ4AmSZIG7JprrmGXXXbhoIMOYtNNN+WEE07g29/+NpMnT2bLLbfk7rvvBuCII47gmGOOYaeddmLTTTfl8ssvB0qHhze+8Y1sueWWbLvttlx99dUAXHDBBRx44IG86lWvYvfdd+eEE07g2muvZZtttuG0005j9uzZ7LTTTmy33XZst9123HDDDfPz85KXvIQDDjiAzTbbjEMPPZTMBGD69Olsv/32bL311kyePJlHHnmEp59+mve9731MmjSJrbbainPOOWcJ7MUFrOKUJEkdceutt3L77bczevRoNt54Y4466ihuvvlmvvSlL3HGGWdw+umnA6Wa8pe//CV33303L33pS5k1axZnnXUWAL/73e/4wx/+wO67786dd94JwI033shtt93G6NGjueaaazj11FPnB3aPPvooV111FaNGjeKuu+7ikEMOmf9N79/+9rfMnDmTddddlx122IHrr7+eyZMn89rXvpaLL76YSZMm8fDDD7PCCivwta99jVVXXZXp06fzxBNPsMMOO7D77rsP2ms1ejJAkyRJHTFp0iTWWWcdAJ73vOex++67A7DlllvOLxEDOOiggxg2bBjjx49n44035g9/+APXXXcdb3/72wHYbLPN2HDDDecHaLvtthujR4/uNc2nnnqK4447jltuuYXhw4fPXwZg8uTJjB07FoBtttmG2bNns+qqq7LOOuswadIkAFZZZRUAfvrTn3Lbbbdx6aWXAvDQQw9x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\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "feature_importance = pd.DataFrame(feature_importances, \n", " index = feature_names,\n", " columns = ['Importance']).sort_values(by = 'Importance', ascending = False)\n", "feature_importance.plot(kind = 'bar', figsize = (10, 7), title = 'Feature Importance of GBT')\n", "plt.xticks(rotation = 60)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The number of days a user is active on the service is the most important contributing factor of user churning" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Final Steps\n", "\n", "Perform full analytics on AWS " ] }, { "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.3" } }, "nbformat": 4, "nbformat_minor": 2 }