Skip to content

Instantly share code, notes, and snippets.

@joesilverstein
Created March 13, 2017 08:50
Show Gist options
  • Save joesilverstein/3effe2d0126224e78fae9848c1af8f42 to your computer and use it in GitHub Desktop.
Save joesilverstein/3effe2d0126224e78fae9848c1af8f42 to your computer and use it in GitHub Desktop.
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#Part 1"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from scipy import stats\n",
"import random\n",
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn import svm\n",
"from sklearn.model_selection import cross_val_score\n",
"import math\n",
"import GPy\n",
"import GPyOpt\n",
"from numpy.random import seed"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"seed(777)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"headers = pd.read_csv('../data/field_names.txt', header = None)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Need to convert header into a list of strings\n",
"data = pd.read_csv('../data/breast-cancer.csv', names = list(headers.ix[:, 0]))"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"benigndata = data[data.diagnosis == 'B']\n",
"malignantdata = data[data.diagnosis == 'M']"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.0003212885154085\n",
"4.323929245283021\n"
]
}
],
"source": [
"# Mean smoothness for benign vs. malignant tumors\n",
"# Note that we're only given the mean smoothness for each training example,\n",
"# so I'm assuming it's asking for the mean and medians of the mean smoothness\n",
"\n",
"benignsmoothness = benigndata[\"smoothness_mean\"]\n",
"malignantsmoothness = malignantdata[\"smoothness_mean\"]\n",
"print(np.mean(benignsmoothness))\n",
"print(np.mean(malignantsmoothness))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(0.9207150936126709, 8.520467317807423e-13)\n",
"(0.7813737988471985, 1.6916448361173315e-16)\n"
]
}
],
"source": [
"# Welch's t-test assumes normality of both populations, so first test for this\n",
"# using Shapiro-Wilk test (most powerful test available)\n",
"print(stats.shapiro(benignsmoothness))\n",
"print(stats.shapiro(malignantsmoothness))"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"p-value is below 0.05, so reject null hypothesis of normality. So can't use t-test to test for differences in means. Instead, can use bootstrapping."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# function to generate boostrap samples of the data\n",
"def sample(data):\n",
" sample = [random.choice(data) for _ in range(len(data))]\n",
" return(sample)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# H0: means are equal\n",
"def bootstrap_t_test(treatment, control, nboot = 1000):\n",
" ones = np.vstack((np.ones(len(treatment)),treatment))\n",
" treatment = ones.conj().transpose()\n",
" zeros = np.vstack((np.zeros(len(control)), control))\n",
" control = zeros.conj().transpose()\n",
" Z = np.vstack((treatment, control))\n",
" tstat = np.mean(treatment[:,1])-np.mean(control[:,1])\n",
" tboot = np.zeros(nboot)\n",
" for i in range(nboot):\n",
" sboot = sample(Z)\n",
" sboot = pd.DataFrame(np.array(sboot), columns=['treat', 'vals'])\n",
" tboot[i] = np.mean(sboot['vals'][sboot['treat'] == 1]) - np.mean(sboot['vals'][sboot['treat'] == 0]) - tstat\n",
" return(np.sum(tboot>=tstat-0)/nboot)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.0"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bootstrap_t_test(malignantsmoothness, benignsmoothness)"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Null hypothesis that means of both populations are equal can be rejected. Thus, means are not equal"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.851\n",
"3.6795\n"
]
}
],
"source": [
"# Median smoothness for benign vs. malignant tumors\n",
"print(np.median(benignsmoothness))\n",
"print(np.median(malignantsmoothness))"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"MannwhitneyuResult(statistic=9355.0, pvalue=2.5497186891129186e-51)"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Test for difference in medians using Mann-Whitney U Test\n",
"# H0: Medians are equal\n",
"stats.mannwhitneyu(benignsmoothness, malignantsmoothness)"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Null hypothesis that medians of both populations are equal can be rejected."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.02143824649859945\n",
"0.03228116509433961\n"
]
}
],
"source": [
"# Mean compactness for benign vs. malignant tumors\n",
"benigncompactness = benigndata[\"compactness_mean\"]\n",
"malignantcompactness = malignantdata[\"compactness_mean\"]\n",
"print(np.mean(benigncompactness))\n",
"print(np.mean(malignantcompactness))"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.0"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"bootstrap_t_test(malignantcompactness, benigncompactness)"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Null hypothesis that means of both populations are equal can be rejected. Thus, means are not equal."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.01631\n",
"0.02859\n"
]
}
],
"source": [
"# Median compactness for benign vs. malignant tumors\n",
"print(np.median(benigncompactness))\n",
"print(np.median(malignantcompactness))"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"MannwhitneyuResult(statistic=20640.5, pvalue=5.8403072470900432e-20)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# H0: Medians are equal\n",
"stats.mannwhitneyu(benigncompactness, malignantcompactness)"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"Null hypothesis that medians of both populations are equal can be rejected."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Determine which variables are most predictive of a malignant tumor\n",
"# using cross-tabs normalized by ranking by R value (correlation\n",
"# coefficient) of linear regression\n",
"X = pd.get_dummies(data.diagnosis)\n",
"nvar = 30\n",
"Rvalues = pd.Series(data = [-1.0] * nvar, index = data.columns[2:])"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/joesilverstein/anaconda3/lib/python3.5/site-packages/scipy/linalg/basic.py:884: RuntimeWarning: internal gelsd driver lwork query error, required iwork dimension not returned. This is likely the result of LAPACK bug 0038, fixed in LAPACK 3.2.2 (released July 21, 2010). Falling back to 'gelss' driver.\n",
" warnings.warn(mesg, RuntimeWarning)\n"
]
}
],
"source": [
"for i in range(nvar):\n",
" y = data[Rvalues.index[i]]\n",
" mod = LinearRegression()\n",
" Rvalues[i] = math.sqrt(max(mod.fit(X, y).score(X, y), 0))"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"fractal_dimension_mean 0.791273\n",
"concave_points_sd_error 0.780912\n",
"concavity_worst 0.775518\n",
"dtype: float64"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# top 3 most predictive variables\n",
"Rvalues.sort_values(ascending = False)[:3]"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean fractal_dimension_mean (benign): 0.07444434453781515\n",
"Mean fractal_dimension_mean (malignant): 0.18223731132075477\n",
"Ratio (malignant / benign): 2.4479671686569087 \n",
"\n",
"Mean concave_points_sd_error (benign): 87.00593837535018\n",
"Mean concave_points_sd_error (malignant): 141.37033018867922\n",
"Ratio (malignant / benign): 1.6248354173113673 \n",
"\n",
"Mean concavity_worst (benign): 13.379801120448189\n",
"Mean concavity_worst (malignant): 21.134811320754707\n",
"Ratio (malignant / benign): 1.5796057901379887\n"
]
}
],
"source": [
"# Display relationship visually:\n",
"benignmean = np.mean(benigndata.fractal_dimension_mean)\n",
"malignantmean = np.mean(malignantdata.fractal_dimension_mean)\n",
"print(\"Mean fractal_dimension_mean (benign):\", benignmean)\n",
"print(\"Mean fractal_dimension_mean (malignant):\", malignantmean)\n",
"print(\"Ratio (malignant / benign):\", malignantmean / benignmean, '\\n')\n",
"benignmean = np.mean(benigndata.concave_points_sd_error)\n",
"malignantmean = np.mean(malignantdata.concave_points_sd_error)\n",
"print(\"Mean concave_points_sd_error (benign):\", benignmean)\n",
"print(\"Mean concave_points_sd_error (malignant):\", malignantmean)\n",
"print(\"Ratio (malignant / benign):\", malignantmean / benignmean, '\\n')\n",
"benignmean = np.mean(benigndata.concavity_worst)\n",
"malignantmean = np.mean(malignantdata.concavity_worst)\n",
"print(\"Mean concavity_worst (benign):\", benignmean)\n",
"print(\"Mean concavity_worst (malignant):\", malignantmean)\n",
"print(\"Ratio (malignant / benign):\", malignantmean / benignmean)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Random Forest\n",
"# Test on 20% of training examples to evaluate performance of model\n",
"testsize = int(data.shape[0] / 5)\n",
"idx = np.random.permutation(data.shape[0])\n",
"train_idx = idx[testsize:]\n",
"test_idx = idx[:testsize]\n",
"traindata = data.ix[train_idx, :]\n",
"testdata = data.ix[test_idx, :]"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"rfmod = RandomForestClassifier(n_estimators = 500, oob_score = True)\n",
"rfmod = rfmod.fit(X = traindata.ix[:, 2:], y = traindata.diagnosis)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Misclassification rate: 0.0265486725664\n"
]
}
],
"source": [
"# Performance of model (misclassification rate):\n",
"predictions = rfmod.predict(testdata.ix[:, 2:])\n",
"print('Misclassification rate:', \n",
" np.sum(testdata.diagnosis != predictions) / testdata.shape[0])"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"fractal_dimension_mean 0.136293\n",
"concave_points_worst 0.116226\n",
"concavity_worst 0.105107\n",
"concave_points_sd_error 0.101049\n",
"perimeter_sd_error 0.089722\n",
"texture_mean 0.055766\n",
"radius_mean 0.052598\n",
"radius_worst 0.048847\n",
"perimeter_mean 0.042853\n",
"symmetry_worst 0.034778\n",
"smoothness_sd_error 0.033915\n",
"symmetry_sd_error 0.020145\n",
"concave_points_mean 0.018856\n",
"area_sd_error 0.015977\n",
"radius_sd_error 0.014664\n",
"texture_worst 0.013990\n",
"smoothness_mean 0.013094\n",
"symmetry_mean 0.011713\n",
"fractal_dimension_sd_error 0.011220\n",
"compactness_sd_error 0.008004\n",
"fractal_dimension_worst 0.007275\n",
"concavity_sd_error 0.006577\n",
"texture_sd_error 0.006564\n",
"compactness_worst 0.005569\n",
"area_mean 0.005470\n",
"compactness_mean 0.005398\n",
"smoothness_worst 0.005177\n",
"area_worst 0.004815\n",
"perimeter_worst 0.004506\n",
"concavity_mean 0.003834\n",
"dtype: float64"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# The more the accuracy of the random forest decreases due to the \n",
"# permutation of a single variable, the more important that\n",
"# variable is deemed.\n",
"importances = pd.Series(rfmod.feature_importances_, index = data.columns[2:])\n",
"importances.sort_values(ascending = False)"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,\n",
" decision_function_shape=None, degree=3, gamma='auto', kernel='rbf',\n",
" max_iter=-1, probability=False, random_state=None, shrinking=True,\n",
" tol=0.001, verbose=False)"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# SVM\n",
"# Baseline performance with default hyperparameters\n",
"svc = svm.SVC()\n",
"svc.fit(X = traindata.ix[:, 2:], y = traindata.diagnosis)"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Misclassification rate: 0.442477876106\n"
]
}
],
"source": [
"predictions = svmmod.predict(testdata.ix[:, 2:])\n",
"print('Misclassification rate:', \n",
" np.sum(testdata.diagnosis != predictions) / testdata.shape[0])"
]
},
{
"cell_type": "code",
"execution_count": 159,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Bayesian optimization, optimizing parameters in log space.\n",
"# Objective is Gini index from cross-validation.\n",
"nfold = 3\n",
"def fit_svc_val(x):\n",
" x = np.atleast_2d(np.exp(x))\n",
" fs = np.zeros((x.shape[0],1))\n",
" for i in range(x.shape[0]):\n",
" svc = svm.SVC(C=x[i,0], gamma=x[i,1])\n",
" fs[i] = np.mean(cross_val_score(svc, traindata.ix[:, 2:], \n",
" traindata.diagnosis, \n",
" cv=nfold, n_jobs=-1)) \n",
" return fs"
]
},
{
"cell_type": "code",
"execution_count": 160,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"domain = [{'name': 'C', 'type': 'continuous', 'domain': (-4.,7.)},\n",
" {'name': 'gamma', 'type': 'continuous', 'domain': (-12.,-2.)}]"
]
},
{
"cell_type": "code",
"execution_count": 164,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The set cost function is ignored! LBC acquisition does not make sense with cost.\n"
]
}
],
"source": [
"opt = GPyOpt.methods.BayesianOptimization(f = fit_svc_val, # function to optimize \n",
" domain = domain, # box-constrains of the problem\n",
" acquisition_type ='LCB', # LCB acquisition\n",
" acquisition_weight = 0.1)"
]
},
{
"cell_type": "code",
"execution_count": 165,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1AAAAHUCAYAAAA0pcnWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzsnXmcHFW1x79nkhCSEEFFQZAYUMC4v8SnRpCnggHimwFB\nQXANigsEkNUFNBFB2QRZAvoekTxRAigYQYWAopIgi0wUERJQIAk7RImEhCXJnPfHrSY9Pb1U9XR1\n9+35fT+f/sz0rVNVv7p9q26dOveeMndHCCGEEEIIIURtulotQAghhBBCCCFiQQ6UEEIIIYQQQqRE\nDpQQQgghhBBCpEQOlBBCCCGEEEKkRA6UEEIIIYQQQqREDpQQQgghhBBCpEQOlBBCCCGEEEKkRA6U\nEEIIIYQQQqREDpQQQgghhBBCpEQOVBtjZjPNrK/VOlpJoQ7M7GWt1iI6DzP7dNK+xrVaixCdhJk9\nZGb/02od1TCzLc3sSjNbYWbrzeyQOrbxYzN7Kg99rdhPu2BmuybX5ne3WktWkt/q763WkQdm9trk\ndzmw1VpajRyoJmFmn0oaXeHzrJk9bGbXmtlhZrZJmdUcyORAmdmrzGyGmb2lMcpbjiefhmFmB5jZ\nEY3cpmhvzOyrZrZXmUUNb1+NJHmA8ECrdYjOxMx+YWarzWxMFZufmNnzZvbSjJtv2/OqiHOA9wMn\nAZ8AritnZGZjkn515zKLm3UNafq1qsZxN4PcjtfM3pgc26tz2Hxb9yuiMciBai4OnAB8HPgC4eLt\nwPeAO83szSX23wJGZ9zHVsAM4G2Dk9rRHAjIgRpafA0o50D9CBjl7subrCct6ohFnvwE2Bj4ULmF\nZjYK6AF+7e6dGP14H3CFu3/P3S9x939UsNuE0K/u0jxpbUEnH/ebCMem0QeiLoa3WsAQ5Fp3X1T0\n/VQzey/wK+AXZjbB3Z8HcPc+4IWM27fGyBSi83F3J/s5JkSncBXwDOGh0o/LLN+b8BDvJ80U1QzM\nbBjwcuDfacxzltOudPJxG3o4JQaBIlBtgLv/nhBteg0hOgWUnwNlZh8wswVm9pSZrTKzJWZ2crLs\nv4DbCBeFOclQwfVm9slk+c5mdrmZLTOz58xsuZmdaWYbl+xjTrLtrcxsXvL/E2Z2uplZia2Z2RFm\n9tdkWOITZnaNmU0ssfu4md1uZmvM7J9mNjdj6PwVifZ/J+PVv2dmI0uNau3HzH4HfBB4TdFwyvuT\nZU+a2Rklx7bSzNaa2UuKyr+clI0uKtvRzH6W7PNZM/uTmXWX0bdpon158hv83cyOK65XMytoO8rM\nDjazfyS2t5nZ29NUVrKfs8zsgWTdB83s/6xoLpmZvcLMZpvZY4nmvxTaSj1azGwLM7so2ddzZvZI\n0n7GldjtaWY3mtkzZva0mf3SzN5Q5hh2TH7zJ5Lfc4mZnVS0fI6VGd5mJedN8v9ooDDfqc/Mfpgs\n6zcHysyuNrP7KtTpzWZ2W0lZ5nZtZhub2eLkM7Ko/KVm9qiZLSxuD2XWr3gNECIL7v4ccCWwq5lt\nXsbkQGAVcHWhILn+3ZS09zXJtW7vWvsys5PMbG2Z8s8m5+BWJeUfTNr5Mxau+1eZ2evTHJeFeRo/\nM7N/WRii+Ecz271o+WeAtYS+8kvJ/ss+SDGz1wKPJLYnFV1DvlZi9+pEY6G/PKXMtiy5lt6VXCMf\nNbPzrah/SXls1yf18pCZHV/vfszsHcm2ViS/5f2WzFtLe9wl2xtuZt+00K89a6FPvdHM3ldiN8HM\nrihqQ7eZ2dSUxz/ZzOYnbWK1mf3OzN5Vxu7VZvZDC/3Qs2Z2n5mdZ2Zdye9/SWK60DbcK727aP1U\n7c/M9jWzvyX7uMPMetIcR7Juxfovsql5vpnZsOQYzjSz/czs7sT2Jkv6VjM7xEL//ayZ/dZK+ikL\n/c4iM3t7cr6sSers4JTHUvdvGi3urk8TPsCngPXAxArLtybMd7qsqGwGsL7o+xuA54BbgOnAwcCp\nwO+S5a8kDBHsAy4gdH4HAuOT5WcTOsIvA58F/ofQiVxWouUiYDVwJ/C/wOeAyxP9ny9j25ds9zDg\nSEKHfEiRzfHJuj8BPp9ofAK4D3hJjXqbkWz/DmAe8EXg/5KyOSW2NfcD7AosAh4HDkjqpydZNg+4\nrWh7b032sxbYs6j8auDWou9vBJ5K6uuYROPvEi17FdmNSo7jCeDE5Pe7KLE7s8juNcl+e4F7km0e\nnay3DBhWo87GJFpeSNrB5whD2G4B3pLYbAzcnbSn04FDgd8n+z2sHi3ATcC/gJnANEI7+w2wc5HN\nJ5Lj/RVwSLK9+4B/AuOK7N5CeDL8BOHhwmeB7wB/KWl791doM8XnzYHAs8nxFc6Jd5acl+OS7x9P\nvk8q2ea4pB6ObFC7fkfSrs4oKptLiAa8tuRY7i/6XvUaoI8+WT/AbknbPqSk/KXA88APS8ofJgw/\n/yJhKPStyXkwpcTuQeB/ir5/C3ihzP4/k6y/VVHZp5Oyq5LrxLHAA8CTwKtrHM+WhOt74Vr0JeAv\nwDrgvxObbZNzvQ/4dXJN+GiF7Y1JjrUPuKzoGvKGZPnFyXl7N/ADwvX2Z4n+z5Rs66Lk/D0/OXe/\nk6x7E9BV47gK+/k78MNE09WJrhOy7gfYgtBv3UXotz+T/EZ3pDnuChpPTY57FnBQst1LgKOKbN4M\nrCT0hcckv+8fin+fxG7XZFvvLir7AKFN3pi0vSOS7TwL/EeR3dbAowTn/3RC//HN5DcaDWwHnJts\nf0bRsb08S/sD9kx0/znR8q3k2P4G3Fvj96xa/1nON2BY8jv9Gbg/0fvlRMt9hHuzO5L1T0zq8NqS\n/SwAlgOPAWcR7gkWJNv9eJHda5OyA7P+pp32abmAofKhhgOV2DwF3F70vfRG8IhkGy+tso1JSeP+\nZJllI8uUfTlp5MUXhcJN/ddKbHvp72C8L9nXmVX0jCPcKH65pPwNhBv8r9Sot4IDdWVJ+XmJxjdl\n3Q+h0yl34310Yjsm+T49uRjdDHw7KTNCx1x84/ub5MI1vGR7C4ElRd9PAJ4Gtiux+3ay362T7wWn\n5QmKbsSB7uSYp9aos28mdj1VbApt6aNFZcMIHey/i+oglRZg08TuqCr7HJPU3QUl5a9I2v73i8r+\nQLggb11le6kcqKRsFSU3giXnZcGBGkvojE8rsTuWovNksO06sT052cZOwIeT+pteY52a1wB99Mny\nIYxEeRhYWFL++aSt7VpSPrLk+3DCTeA1JeV1OVDJObgSOLfEbouk/Lwax1O4Mf7PorKxwFKKbmrZ\ncNNZsf8q2XcfJX1isuziZH/HlZT/Bfhj0ff3JtvYt8Ruz6T8wzU0FPZzekn5NcAaYLMs+wH2Tbb3\n5nqOu4L9nZT01WVsfg/cTsmDQMJDob8Vfe/nQBH63n8AV5WsN4rg3PyyqOwnyXX4LVV07E+Jg5a1\n/QF/JTxIHF1UtntSZ7UcqJr1n/Z8K2rLq+n/IKLgAD9ImOtbKC84usW2C5KyQ4vKNiI4RQ8BlpSV\nc6BS/aad9tEQvvbiGcLJW4mVyd8PmVUe4lMJT+ZWAZjZaDN7OcE56AL+o8wqPyj5voDw5KbAvoQT\n6cQqu92XcOH7qZm9vPAh3JD/neCE1ZROeKJVzLnJdgsh4kbsZwHh4lQI478nKVuQ/A/hSctmSRkW\nMlO9D/gpsGnJvq8DtjezVyXrfjhZ798ldr9N9ls6UfdSd3+6RJ/R/zcoxz6Ep1hXVbHZE3jM3S8t\nFLj7esKTrk2A/8qo5VlCh/VeM9uswj4/QHC0Li05fic8VXsfgIWhRO8BZrv7wzWOtaG4+yrCDcl+\nJYv2A25x94eS741obzMJHeGPCO37d+5+Xo11BnUNEKIUD3NtLwUmW//htgcSIjk3lNgX9yObEa6H\nC4F+w7YHwR6EfrD0OrEe+BO1z609CY7Ln4o0ryKMpnitme3QIJ2llKZsX0j/a/WHCZH235cc1+2E\n62eaawYM7AvPA0YSsgkCfCTlflYSrmE9FuaDNYKVwJuT4X8DSK7tuxBGtGxWpG9zYD4wwcxeUWHb\nkwj1eUnJcY0hjPh4b7KPYYTEJz9397/WcQyp2l8yBO5NwEXuvqawsrvPB+5NsZ9U9Z/xfJvv7o8U\nfb81+Xu5uz9bprz0XuJ54MKifb9AaNevovw94mB/06hREon2YhNCh1WJywhP6/4XOMXMfksYLvcz\nT9z9apjZNoSngN2E4RkFnHBjW8xz7v7PkrKnStbbDnjE3VdSmdcRHLRy2Y2c9BP4S9e/j+C8jW/g\nfhYRnuS9B7g++fsNwm9ymJltlJQ54QJW2K8R6vWk0g0mtq8kDCfYnuCAPVnFrpgH+xm4r0zumWul\nE34tYQhJNV5DuNEvZTHheF6TRYu7v2BmXwbOAB43s1uAXwI/cvdCm94+2fbvyuzX2TCZu3BRv6vG\nMeTFZcBeZvYud7/FzLYjdN6HF9kMur25+9pkLP6fCDc2B6XUVvc1QIgK/IQwjOhAQrvaGtgZ+F5p\nu0rmeHyNMMS5eB5qo5KxFK6pC8osc4JzUI1xhCfipSxO/r6GdDe4WXimTD9Y2l9uT0hakfb6X451\n7r60pOxeQn2NT76/LuV+bgB+TngAeoyZ/Z4wjH1ucuNcD18nXI/+bmZ3Eh5GXezuhWv59snf7wAD\n5ogV6SunvbDuJWWWAfRZSMe/KcGpqrf/SNv+Cn1kuT7gHmBCjf2kqv+M59uDJd8LfepDZcqNgfcS\nDxc7bAnF7WsRAxnMbxo1cqDahKTD2pTyJyPw4oTfXSxMyPwg4UnJ/sBvzWxKtRsoM+siDDXbjNDQ\n7yGEe7cmzCkqjUaur/9o+tFFcHT2oPw7rZ6pc7ulxzro/bj7OjO7lVDHryWMpb+RcOKPAN5JuKlY\nUuRcFurtDMLTlnL8o8j2ekL4vFz0oLRTr/QbtCLyUFOLu59tZlcRMnftTugYvmpm73P3OwjH74S5\nB+UeFKzLqKlSex/s09SrCQ7NfoQhCIWhHsVOaaPa9R7J340JHdGyasaDuQYIUQl3X2RmSwjzQk8h\nOFJQcrOatLufE27+vkCYL7GWMM9m31q7qVBeer4WrhMHACvK2A9IRNEGpLlWdxGSMnyC8tfwJxqk\nJdV+kmvFvhYSMPw34Zp9ESGpxrtLIhapcPffJ33nXsAUQrs42sw+4+4/YkN/eSrhfqQcD1Q5Lghz\n2v5WweZZBj4MzkpT2l+a+q/jfKvUDvO8lxjMbxo1cqDah08STtpraxm6++8IT/GPMbOvEiIf7yOc\nZJU6qTcTbtA+4e4vpqQ1s90Gofk+YIqZbVYlCnUf4SRd6pXfsZGG0pvLQgSgcGJm2U+1m8wFwHGE\nidVPuvu9AGZ2FyFM/R6KMlIR5kgBrHX3fkNdynAfsEny++XJfYShBdVYRmgTpUwoWp4Zd3+AMAH1\nrKQjvYMwt+yTbPiNnqxRV4U6rXUMTxEeCJQyvpy0GtvaYOi+xsx+CXzEzI4mOFIL3P2xIrNBt2sL\nL7v+OmFC+NuAC83szclwo1oaq10DhKiHnwAnWngf4QHA3929t8RmH8KDtz2SIb8AmNnnU2z/KWCY\nmY0uHvLEwPO1kAXzCQ8ZarOyHNixTPlgrm2NeDBxH6H/WOju9d6EDzez8SVRqMKxFveFqffj7rcQ\nHhSdYGafIDxQ/QhhaHHm4/bwvrA5hEzAYwjzamcm2yv8ti+k6C9LKaz7dLV1zexxQhut1X9UOra0\n7a/QjrYvs6xc+ysvonr9D+Z8q4etzWxkSRRqR0JdLa2wzmB+06jRHKg2wMzeT0gwcD+Vw9OF+Tal\n3EG4kSuEdlcnf0tvLAsnX+lv/iXq7xyuSLY3o4rNlYQn9GVtrCitdhWMkBGmmMPp73Bm2c9qKj+l\nWkCIBnyJDcP0SP7/BGEs8IuhfXd/kjBc5PNmtmWZ/RanBr6cMM9gShm7TRs4Dv0K4K1mVu7FsQV+\nDWxpZvsXaRhGyNazipDEITVmNsoGppV/INlWoXw+IYnG18xswMObQl25+wpC5O+gZNhpJe4jzDt7\nsaNM5puVS6m8mvLOViUuI7yU+rOEoROXliwfVLtOjn8OYWjFEYSshVsSnM9q66W5BghRDz8htKMT\nCQ59ufdCrSe0+xevVckQ1wGvbChD4aHDi3M9zWwTwnW1mGsIEdzjy10TrXy69WJ+Dbzbil6zkOzn\nYOAfhYdiGanUr2bhcsKk/BNKF1hI/502lfn0ku+HEjLuFR7MpdqPlZ+rekfyt9b9RFlKr3vuvprw\nu49Mvj9G6Eu/aGYDhizW+G1vI9zEH2tFrxApXTdxNH4B7G1mb62yvdWE9lh6bKnaXzIf9m+E12OM\nKVq+J1Bznl3K+h/M+VaLcvd9IwlZJAv72ij5/hghKcrAjQzuN40aRaCaiwFTzWwCoe63IEz8/ADh\nZrOnxtjjb5jZLoQU0MuS9b9IeOJWuNm/jzA58Qtm9gzhInELsCRZ9t1k8uPThBBw3R1CEq6/GDjc\nwsTcawkO1XuAG9z9fHe/38xOAL5tZtsSxviuIsxz2ZuQqOLMFLvb1sx+kezj3cDHgB+7+52Jliz7\n6QX2M7PvEuafPOPuv0yW3UwYSrYD/ZNo3Eioa2fg2OhCus87zex/CY7wFsBkwhDJwuTL0wmTW39p\nZnMSHWMIKbv3ITyJ/VeKuqjF6YQJyz81s4uS/byccNH9fFJn/0PIsjUnudFYSnjqNRk4Iun4srAD\nYRjZ5YRUsesIx/RKQnpu3H2VmX2R8GRtkZldShgeOY4wHG0hG+YZHU6o00UW3ovxACH18FR3L9Tn\npYRhA/PM7BxCXX6BMDy1dIJtL7CbmR1JGN7ygLvfRmV+TehEz0iO5crihQ1o118n/O7vT+r6TjM7\nkfC+lSvc/ZoK66W5BgiRGXdfamZ/JAy/cso/zPsV4dycb2ZzCQ+UDiGcc2+ssYtrCNn+5tiG9+0d\nRJgf+uI7oNz932Y2nRCZLVwnVhDmnHyQ4CgcVWU/3yFEja9LrgsrCQ8otqb8w5WauPtqM7sXOMDC\newOfAv7q7otrrFq8jRvMbDYh0jCRMNyp0Nd8mHAeV0v8A2GI2l4Wkhr8iVAfU4BvFkaBZNjPZ8zs\ns4Rr1/3ASwhO5lMkDybrOO57zex6wvX2KcKw973o/2Doi4T+9G9Jf/kA4Tq2E6G/KH6/YPEQ8b5E\n7y+TdecQruVbEzL2PcmGYW1fIdxbLTSzHxDa59aEPu4/kwjonwnOyVeTm/zngevd/V8Z2t9Xkrq8\nKdHzCsL5cBe1H2jVrH8Gd77VotzwvYcJjuNrCVMPDkj2My1JNlOJLL9p5+BtkApwKHzYkC658HmW\n0FivJdyAjymzzgzCpNHC9/cSbuQeTNZ/kJDa9LUl6/03IZ3o88m+PpmU70iIAvybMAflAkKY+0Wb\nxO4i4N+19CRlRriY3JVoeoxwgXtbid3ehKjG08nnLsJ7qV5Xo95mEC7+OxKerK0kXMy+B2xUxr7m\nfgjvgbiYMBl0PSWpsAkZatYBby8q2yqxfaCCzvFJvT1MeBq4nOQpWIndaMJwq3uS+nqc4Ch8iSQF\nKOFCvZ6idw4Vrb8e+HqK9rZZctzLk/0sA2ZTlP4a2JyQcefxxOYvhCGexdtJpQV4GSGD311Jvf8L\n+COwT5n1diE4KP8iOPj3Jtr+o8RuAmHe0T8Tu7uBGSU2u7LhPSB3Ey74MxiYxnwHQsf3TKL7hyXn\n5bgyOgtpg68tXTaYdk1wqJ8Hziop70ra3oNUeI8UKa8B+uhTz4dwI7SeovTbZWw+k1y/1hCewH+c\nMinKk2vPD0rKJhIeUj1LuGk8lDLvgUps30voH59Kztt7kuvV21Icx3aEzKiFa8xNDHxP1bBkv99N\nWTfvZkPClxdf85Gcf/8sY/8t4Pky5Qcn23kmObY/E15p8Moa+y/0WdsRMrw+Q4hgH1/Bvup+kt/i\nJ4SHZ2sIzsiVwFvTHHeFfR5PeGD7z2S/fyO8AqKrxG5bwlC1R9jQP82j/3sTB7wHKil/G2GUxZOJ\n7sLInV1K7LZJ9vFYYvd3wn1DV0kd/YOQkKH0nVOp2h/BaSvc/9xBeFB5MXBPjd8zbf3XPN+o0JYJ\nCaXWU/Rux5K67SkqW0BIEjGJ0HcXoocHV9jmgSXllX7Tiq9Tif1TyOsuhBBCCCGEGGKY2QLCg/xG\nvY6g42mLOVBm9h4zu8rMHjazPgtpG0ttTjSzR8xsjZldb2ava4VWIYQQ7YWZHWpmD5jZs2Z2i5n9\nZw37jczsZDNbambPmdn9ZvbpCrYfTfqlK8ss28rMLjazFUnfdEcybEoIIUQH0xYOFGHuwl8IYzsH\nhMQsvF9mOmEy2zsIocX5yQQ3IYQQQxQLiVC+Sxi6+R+EYTTza0xe/ikha+E0wvDOAwjDZEq3PZ4w\np/DGMss2IwwNe56QgngCIePkU3UfjBBCiChouyF8ZtZHmDdyVVHZI8Dp7n5W8v0lhHkbn3L3y1uj\nVAghRKux8NLmW939iOS7EeaGnePup5Wx34MwZ2I7r/IScAvvzruRMD9vF2BTd9+naPkpwGR3/69G\nHo8QQjSbZAjfaHef1GotsdAuEaiKJBmutgR+Wyhz96cJk60nt0qXEEKI1mJmIwiTnov7BydkHqvU\nP3QDtwNfNrOHzOweMzvdzDYusZsBPO7uF1XbjpldbmaPm9miJKuWEEJEhbu/R85TNmJIY74lYVjf\n4yXljyfLBpCk+NydkN3kuTzFCSGEGMDGhMyU8939nznuZ3NCBqpy/UOll1luR3jVwnOELIqbEzKS\nvoyQ8Qoz25kwvK/ae2S2I2St+y4hu9k7gHPM7Hl3v7jcCuqbhBCiZTS0X4rBgaqH3QnpIYUQQrSO\nj1Hl5eAtoovw/pcD3f0ZADM7ivDetEOAEYR3lR3s7tXmM3UBt7n715Pvd1h4qfMXCGmMy6G+SQgh\nWktD+qUYHKjHCO8a2oL+Txm3ILzXoBxLAX784x8zYcKEXMU1iiOPPJKzzjqrtmGbIL35Ir35Ir35\nsnjxYj7+8Y9Dci3OkRWEd5JsUVK+BaHvKMejwMMF5ylhMaGfeTWwCeH9Z1cn86kgGe5uZi8AO7r7\nA8l2Sl8oupjwAulKLAX1TXkivfkivfkivfnR6H6p7R0od3/AzB4jvPjrr/BiEol3ArMqrPYcwIQJ\nE5g4MY6Msptuumk0WkF680Z680V6m0auw9Tcfa2Z9RL6h6vgxSQSuxJe7FyOm4APm9lod1+TlO1I\niEo9lHx/c8k6JxMcq8MJCSoK2ykdJrgj4QWSlVDflDPSmy/Smy/S2xQa0i+1hQNlZmOA1xGeAAJs\nZ2ZvBf7l7g8S3h59gpn9g+A5fovQ0f2iBXJz4Zlnnqlt1EZIb75Ib75Ib0dxJjAncaRuA44ERgNz\nAMzsO8BW7v6pxP4S4ATgIjObCbwCOA2Y7e7PJzZ3F+/AzFYS8lMUR5zOAm4ys68ClxMe6n0WOLjR\nB9hKYmt70psv0psv0hsPbeFAAW8HfkdIFuGESbkA/wcc5O6nmdlo4AfAZsACYE93f6EVYvPg7rvv\nrm3URkhvvkhvvkhv5+DulyfvfDqRMHTvL8Du7v5kYrIlsE2R/Woz+wBwLvAn4J/AZcDXyYC7325m\nHwJOSdZ9ADjC3S8d5CG1FbG1PenNF+nNF+mNh7ZwoNz9D9RIqe7uM4GZzdDTCt785tIRI+2N9OaL\n9OaL9HYW7n4+cH6FZdPKlN1LSOiQdvsDtpGU/xr4ddrtxEhsbU9680V680V646Ht3wM1VDjooINa\nLSET0psv0psv0itEOmJre9KbL9KbL9IbDxbeOdhZmNlEoLe3tzfGyW1CCBE1ixYtYtKkSQCT3H1R\nq/W0C+qbhBCiNTS6X1IESgghhBBCCCFSIgeqTTj11FNbLSET0psv0psv0itEOmJre9KbL9KbL9Ib\nD3Kg2oQ1a9bUNmojpDdfpDdfpFeIdMTW9qQ3X6Q3X6Q3HjQHSgghREPRHKjyqG8SQojWoDlQQggh\nhBBCCNEi5EAJIYQQQgghRErkQLUJK1asaLWETEhvvkhvvkivEOmIre1Jb75Ib75IbzzIgWoTYnsZ\nmfTmi/Tmi/QKkY7Y2p705ov05ov0xoMcqDZh5syZrZaQCenNF+nNF+kVIh2xtT3pzRfpzRfpjQdl\n4RNCCNFQlIWvPOqbhBCiNSgLnxBCCCGEEEK0CDlQQgghhBBCCJESOVBtwuzZs1stIRPSmy/Smy/S\nK0Q6Ymt70psv0psv0hsPcqDahEWL4pomIL35Ir35Ir1CpCO2tie9+SK9+SK98aAkEkIIIRqKkkiU\nR32TEEK0BiWREEIIIYQQQogWIQdKCCGEEEIIIVIiB0oIIYQQQgghUiIHqk3o6elptYRMSG++SG++\nSK8Q6Yit7UlvvkhvvkhvPMiBahOmT5/eagmZkN58kd58kV4h0hFb25PefJHefJHeeFAWvhq4O2bW\nGGFCCDEEUBa+8igLnxBCtAZl4WsCq1atYsbhh7Pbttuy9zbbsNu22zLj8MNZtWpVqvU70SkVQggh\nhBBCwPBWC2g3Vq1axb6TJ3PU4sXM7OvDAAfmz5rFvjfcwBU338zYsWPLrnfG8cdz09VXM2btWlaP\nGMFO3d0cc/LJZe2FEEIIIYQQ8aEIVAlnHH88Ry1ezB6J8wRgwB59fRy5eDHfPeGEAesUnK7Js2Zx\n/dKl/OLhh7l+6VImz5rFvpMnp4pczZs3r7EHkjPSmy/Smy/SK1rJf//3Fzj88BmpRzW0ktjanvTm\ni/Tmi/TGgxyoEm66+mp27+sru2yPvj5uuuqqAeX1OF2lzJ07dxCqm4/05ov05ov0ilby6KMXMGvW\nZCZP3rftnajY2p705ov05ov0xoOSSBTh7uy9zTb84uGHK9rstfXWzHvwwX6JJXbbdluuX7qUcqkm\nHJgyfjzXP/BA+gMQQoiIURKJ8hT6JugFJtLVdQ3Tp9/K2WfPbLEyIYTobJREIkfMjNUjRlDJpXRg\n9YgR/Zwnd2fM2rVlnScIkajRa9cqsYQQQoh+9PXtwVVX3dRqGUIIITIiB6qEnbq7md9Vvlqu7epi\np+7ufmVppSRXAAAgAElEQVT1OF1CCCEEGGvXjtYDNiGEiAw5UCUcc/LJnDlhAtd0db3oFD0NfAo4\ndtgwFv3sZwPSmtdyunYewm9qFkIIUQlnxIjVesAmhBCRIQeqhLFjx3LFzTdz6/TpTOnq4oObbMLb\nhw9nf+DOtWu5+tFHB2TYK+d0OXBNVxdnTZjA0SedVHO/06ZNy/OwGo705ov05ov0inagq+taenp2\nbrWMqsTW9qQ3X6Q3X6Q3HuRAlWHs2LHMPPtsrt98cya96U2c09fHVKiYYa+f0zVqFHsNH86U8eO5\ndfr0iu+NKmXKlCl5HlLDkd58kd58kV7RWpyurmuYMOEsTjrp6FaLqUpsbU9680V680V646Gjs/D9\n56texZ4f/nD9L7N9+cvZzZ3rn3oqfYa97m783nuxe+6pU70QQsSNsvCVp9A3vepV7+AjH9mTk046\nWi9aF0KIJtDofmn44CW1Lxc8+ihPzprFvjfckDoSVIyvW8cYSJVh78Ux7OvWYRXeIyWEEEL88pcX\nZHrFhhBCiPaio4fwZX2Z7YD1169n9fDh2TLsrV8P69bVI1cIIYQQQgjR5nS0A1Vgj74+brrqquwr\nrl/PTm96U7YMe+vXh09GFi5cmF1fC5HefJHefJFeIdIRW9uT3nyR3nyR3ngYEg5U3S+zXbeOY/be\nO1uGvTodqNNOOy3zOq1EevNFevNFeoVIR2xtT3rzRXrzRXrjoaOTSPQCEwkOzwfGj+c3xcke0tDV\nBd//PqsOOIDvnnACN11yCaNXrGDN+PHs1NPD0SedNHBe1c47wz/+AY89lmlXa9asYfTo0dn0tRDp\nzRfpzRfpzRclkShPoW+69dZe3vGOOOZAxdb2pDdfpDdfpDc/lESiDup6mW1fH7jD8OEvpjXn7W/H\nP/lJbMkSGDmy/Hp1RqBiaYAFpDdfpDdfpFe0kuefb7WC9MTW9qQ3X6Q3X6Q3HjragSoeandFipfZ\n9qPgBA0btqFs2LCQka+ag6QkEkIIIarw3HOtViCEEGIwdPQcqENGjMj0Mtt+FJyg4UU+ZsGZquYg\nrVtXVwRKCCHE0CCmCJQQQoiBdLQDdcGwYcw888z6XlRYLgJVcKZqRaDqcKCOPfbYzOu0EunNF+nN\nF+kVrSQmByq2tie9+SK9+SK98dDRDhTPPQf33FPfutUiUDk4UOPGjcu8TiuR3nyR3nyRXtFKYhrC\nF1vbk958kd58kd546PwsfD/6EXziE9k38s9/wuabw5VXwoc+FMquvhp6euDRR2HLLcuvN2FCyMK3\ndm298oUQImqanYXPzA4FjgG2BO4ADnP3P1Wx3wiYAXwsWecR4ER3n1PG9qPAJcA8d9+nwva+Anwb\n+J67H1VlvxOB3gsv7OUzn4kjC58QQnQCje6XOjsC9epXJ25UHZSLQKUZwrdunZJICCFEkzCz/YHv\nEhyi/yA4UPPNbPMqq/0UeB8wDdgBOAAYMFzBzMYDpwM3Vtn/fwKfS/abipiG8AkhhBhIZztQEybU\n70BVyMLXb1m19fr66tuvEEKILBwJ/MDdf+TuS4AvAGuAg8oZm9kewHuAqe7+O3df7u63uvvNJXZd\nwI+BbwBlXyJoZpskNp8FVqYVLAdKCCHipvMdqD//ub6sePVm4SvsK+M+lyxZksm+1Uhvvkhvvkhv\nZ2BmI4BJwG8LZR7Gpf8GmFxhtW7gduDLZvaQmd1jZqeb2cYldjOAx939oioSZgFXu/sNWXTHNAcq\ntrYnvfkivfkivfHQ+Q7U6tVw773Z1x1MFr5aNmU47rjjMtm3GunNF+nNF+ntGDYHhgGPl5Q/Tpjb\nVI7tCBGoNwJ7A0cAHyY4QwCY2c6E4X2frbTjZG7U24CvZhUdUwQqtrYnvfkivfkivfHQ2Q7U618f\n/i6qY65YvVn4CutldKDOO++8TPatRnrzRXrzRXqHNF1AH3Cgu9/u7tcCRwGfMrORybC8HwEHu/tT\n5TZgZq8Gvgd8zN0zZww688yp9PT09PtMnjyZefPm9bO77rrr6OnpGbD+oYceyuzZs/uVLVq0iJ6e\nHlasWNGvfMaMGZx66qn9ypYvX05PT8+Ap8fnnnvugLTEp59+Oj09PSxcuLBf+dy5c5k2bdoAbfvv\nv39Lj+O8884rexxr1qxpy+M477zzMv0erT6OwrVosO2qWcdR0JvX+dHo4yi+1jfzPK/3OIr1tsP1\nqnAcM2fO7Hd9nTRpElOnTh2gbTB0dha+3l4mfuQjsNdecOaZ2TayZEmIYC1YADvvHMpuvhne/W64\n805405vKr/eKV8CKFbByJWy66aCOQwghYqRZWfiSIXxrgH3d/aqi8jnApu7+oTLrzAHe7e47FJW9\nHriLkFBiE2ARsB6wxKTwsHE9sCPwFuDKEpthgCdlI71M51rom444opfvfU9Z+IQQolk0ul8aXtsk\nciZNqi+RRL1Z+OocwieEECIb7r7WzHqBXYGrAMzMku/nVFjtJuDDZjba3dckZTsSolIPJd/fXLLO\nyQTH6nDgQeCJMjZzgMXAKeWcp2JiGsInhBBiIJ3vQE2cCN/+dsiK15VhxOJgs/DJgRJCiGZwJjAn\ncaRuI2TlG01waDCz7wBbufunEvtLgBOAi8xsJvAK4DRgtrsXXJu7i3dgZisJ+SkWJ0XrytisBv5Z\nZFMROVBCCBE3nT0HCkIEatUq+Pvfs61XiECVc6CqZeGrcw5U6ZjPdkd680V680V6Owd3v5zwEt0T\ngT8Thtft7u5PJiZbAtsU2a8GPgBsBvwJuBj4BSGZxKCkpDWMyYGKre1Jb75Ib75IbzwMjQgUhGF8\nO+6Yfr2CA9SkIXxr1qypbdRGSG++SG++SG9n4e7nA+dXWDZgBrS73wvsnmH7A2dRD7R5f9rtxZTG\nPLa2J735Ir35Ir3x0PlJJCZOhG23hX32wc84gzA8PgV//CPstBP87W/wxjeGsnKJJUoZMSJEoZYu\nhde8phGHI4QQUdGsJBKxUeibpk7t5Ve/UhIJIYRoFo3ulzp+CN+qVauYMWwYu82axd7bbMNu227L\njMMPZ9WqVdVXLBeByvFFukI0gtIHIp34gESI2IlpCJ8QQoiBdPQQvtWrV7Pv5Mkcdf/9zHTHHn4Y\nB+bPmsW+N9zAFTffzNixY8uvXG4OVK0hfH19ULhhlQMlmsSqVas44/jjuenqqxmzdi3/HjaMkZtt\nxtqVKxm7fj2rR4xgp+5ujjn55MrtXQjRNGIawieEEGIgHR2BunjWLI5avJg93F98UYcBe/T1ceTi\nxXz3hBMqr1wtAlXJOSouz+hAlb5MrN2R3nxJq3fVqlXsO3kyk2fN4vqlS/nxww+z0fLlHPHXv/Lb\n5cv5xcMPc/3SpUyeNYt9J0+uHXnNWW+7IL2ilcQUgYqt7UlvvkhvvkhvPHS0A/WXG29k976+ssv2\n6OvjpquuKrsMqC8L3yAcqIMOOiiTfauR3nxJq/eM448PDwn6+jDgDOAoYCpkf2jQBL3tgvSKVhKT\nAxVb25PefJHefJHeeOhoB2rUunVUShlhwOi1ayvPEaknC19xebV5UmWYOXNmJvtWI735klbvTVdf\n3e8hwU1UTi1W86HBIOjU+m0XYtMrqvPss61WkJ7Y2p705ov05ov0xkNHO1DPDh9e8cUcDqweMaJy\nVr5qEahKDlSx05QxAjVxYlwZmaQ3X9LodXfGrF374kMCB8ZA/Q8NBkEn1m87EZteUZ2YIlCxtT3p\nzRfpzRfpjYeOdqDetssuzO8qf4jXdnWxc09P5ZXrycI3iCF8QmTFzFg9YsSLDwkMWE3lt3nWfGgg\nhGgKMTlQQgghBtLRDtQnDj2UMydM4JqurhdvKh24pquLsyZM4OiTTqq8cj1Z+ORAiSazU3d3v4cE\nOwHzK9jWfGgghGgKcqCEECJuOtqBGjNmDFfcfDO3Tp/OFDP22nRTpowfz63Tp1dPYQ5Nz8I3e/bs\nTPatRnrzJa3eY04+ud9DgmOAM4FfQfaHBk3Q2y5Ir2glMaUxj63tSW++SG++SG88dLQDBTB27Fhm\nnn0217/kJcw74QSuf+ABZp59du334dSTha+4PGMSiUWLBv1S5KYivfmSVu/YsWPDQ4IDD2QK8PFX\nvIK148Zx7lvfym5jxrDXRhulf2jQBL3tgvSKVvL88xteGdjuxNb2pDdfpDdfpDceLI8J5Y3GzLqA\nbwIfA7YEHgHmuHvZx+lmNhHo7e3t3TDBbfPN4Zhj4CtfSbfTOXNg2jRYu7b/0L3hw+GHPwzLSlm2\nDMaPD///9rfw/venPUQhBsdf/wpvfSt+yy3YO98Zyg46CF+8GLv55tZqE0OORYsWMWnSJIBJ7j50\ne9gSCn0T9PLssxPZeONWKxJCiKFBo/ul4bVN2oKvAJ8HPgncDbwdmGNmK939vFRbGDEiW1SoXASq\nMNdEc6BEu5G0NysZcmoV3oMmhGgta9YgB0oIISIlFgdqMvALd782+b7czA4E3pF6C8OHh2hSWtav\nDw5TccYys1CmLHyi3Si0ydL3lmUcSiqEaA4xvQtKCCFEf2KZA/VHYFcz2x7AzN5KSDj269RbqCcC\nVRx9KjB8eC7vgRJiUBTaW+mcPbVDIdoSOVBCCBEvsThQpwCXAUvM7AWgF/ieu1+aegv1RKCGlwnQ\nVbspLS7P+OS/J7L00tKbL5n1tjgC1fH122Ji0ytqE4sDFVvbk958kd58kd54iGUI3/7AgcBHCXOg\n3gacbWaPuPvFqbYwYkR2B6pcBGrYsFyG8E2fPj2TfauR3nzJrLfFEaiOr98WE5teUZs1a1qtIB2x\ntT3pzRfpzRfpjYdYIlCnAae4+0/d/S53/wlwFvDVaitNnTqVnp6e8HnwQXrmzWPy5MnMmzevn911\n11030Itet45DX3hhQI77RUDPhReyYsWKfuUzZszg1Asv3FCwfj3Lly+np6eHJUuW9LM999xzOfbY\nY/uV7bzzzvT09LBw4cJ+5XPnzmVamYx/+++/f7rjAA499NCBx7FoET09PeWP49RT+5WVO44pU6aU\nPY41a9a05XFMmTIl0+/R6uOYMmVK2eOA8r8H69ZxLnDs6advKBs+nDUvvNCU4yjoHWy7gub8HgW9\npcdRoN2Oo1hvM8/zNMcxd+7cF6+zkyZNYty4cRx55JED9In+xBKBKm57MSC9+SK9+SK98RBLGvMV\nwNfc/X+Kyr4KfMrdX1/GfmAa87e/PXy+//10Oz3lFDjjDCi58aiaDv2226CQQnruXPjoR9PtS4jB\nct11sPvuIZX+uHGh7Gtfg0svhfvvb602MeRQGvPyFKcx//WvJ7Lnnq1WJIQQQ4Ohmsb8auAEM3sI\nuAuYCBwJXFh1rWKyzgdZt25wc6A0eV80E2XhEyIqYhnCJ4QQYiCxDOGbDvwMmEWYA3UacAHwjdRb\naPYcqIw3rqXDjdod6c2XzHpbPAeq4+u3xcSmV9QmliF8sbU96c0X6c0X6Y2HKBwod1/t7ke5+7bu\nPsbdt3f3Ge6e3ktpVAQqpzTmc+fOzWTfaqQ3XzLrbXEEquPrt8XEplfUJhYHKra2J735Ir35Ir3x\nEIUD1RAaGYHKYQjfZZddlsm+1UhvvmTW2+IIVMfXb4uJTa+ozsiR8ThQsbU96c0X6c0X6Y2HoeNA\nNXIOVA5pzIUYFJoDJUQ0jBypOVBCCBEzQ8eBalQEqtoQPjlQolW0OAIlhEjPxhvHE4ESQggxkKHj\nQDUjC1/x9vXkXzQTRaCEiIaYhvAJIYQYyNBxoJqdhS/jk/9yL9FsZ6Q3XzLrbXEEquPrt8XEpldU\nJ6YhfLG1PenNF+nNF+mNh6HjQDUjC98gHKjY3uYsvfmSWe+6dWAGXUWndBMjUB1fvy0mNr2iOqNG\nxROBiq3tSW++SG++SG88DB0HqplZ+EaMyOxAHXDAAZnsW4305ktmveXa67Bh4A59fY0TVoGOr98W\nE5teUZ2YhvDF1vakN1+kN1+kNx6GjgPVjCx8hfKNNtLkfdFcyrXXwne1RSHaipgcKCGEEAMZOg5U\nM7PwjRypyfuiuVSKQBWWCSHaho03jmcOlBBCiIEMHQeqGVn4ih2ojDetCxcuzGTfaqQ3XzLrrRaB\naoIz3/H122Ji0yuqE1MEKra2J735Ir35Ir3xMHQcqGZm4atjDtRpp52Wyb7VSG++ZNbb4ghUx9dv\ni4lNr6hOTO+Biq3tSW++SG++SG88DB0HqhlZ+NatC1nQqtlU4NJLL81k32qkN18y621xBKrj67fF\nxKZXVCemNOaxtT3pzRfpzRfpjYeh40A1KwvfsGF1vX9n9OjRmexbjfTmS2a9LY5AdXz9tpjY9Irq\nxBSBiq3tSW++SG++SG88DB0HqhlZ+Ao3sU18/44QQMsjUEKI9MQ0B0oIIcRAho4D1awsfHVGoIQY\nFOXaq9KYC9GWxDSETwghxECGjgPVjCx8hXXqcKCOPfbYTPatRnrzJbPecu214FA1IQLV8fXbYmLT\nK6oT0xC+2Nqe9OaL9OaL9MbD0HGgmpWFr84I1Lhx4zLZtxrpzZfMels8hK/j67fFxKZXVGfjjUN3\nFENwOLa2J735Ir35Ir3xMHQcqHoiUE0cwnfYYYdlsm810psvmfW2OIlEx9dvi4lNr6jOyJHhbwxR\nqNjanvTmi/Tmi/TGw9BxoOqJQNXzIl0lkRCtQEkkhIiGggOleVBCCBEnQ8eBKjg17unsK0Wgqg3h\nG8QcKCEGRYsjUEKI9Gy8cfgbQwRKCCHEQIaOAzViRPib9mayUgQqpyF8S5YsyWTfaqQ3XzLrbXEE\nquPrt8XEpldUJ6YhfLG1PenNF+nNF+mNh6HjQGW9mawWgcrBgTruuOMy2bca6c2XzHpbHIHq+Ppt\nMbHpFdUpRKBiGMIXW9uT3nyR3nyR3ngYOg5UIQKVdh5UtTlQOWThO++88zLZtxrpzZfMelscger4\n+m0xsekV1YlpCF9sbU9680V680V642HoOFCNikBVG8JXuImtI4lEbKkgpTdfMuttcQSq4+u3xcSm\nt9mY2aFm9oCZPWtmt5jZf9aw38jMTjazpWb2nJndb2afrmD7UTPrM7MrS8q/ama3mdnTZva4mf3c\nzHZIozemIXyxtT3pzRfpzRfpjYeh40A1MgKVwxA+IQaFsvCJIYqZ7Q98F5gB/AdwBzDfzDavstpP\ngfcB04AdgAOAe8psezxwOnBjmW28BzgXeCewGzACuM7MRtXSHJMDJYQQYiBlPIQOpZFzoNIM4cuS\nMl2IwaIsfGLociTwA3f/EYCZfQH4IHAQcFqpsZntQXB+tnP3lUnx8jJ2XcCPgW8AuwCbFi9396kl\n9p8GngAmAQurCVYacyGEiBtFoCpRTxa+gtNVRwTq1FNPzWTfaqQ3XzLrbXEEquPrt8XEprdZmNkI\ngsPy20KZuzvwG2ByhdW6gduBL5vZQ2Z2j5mdbmYbl9jNAB5394tSytkMcOBftQxjmgMVW9uT3nyR\n3nyR3nhQBKoS9Wbhq/M9UGsiexQpvfmSWW+LI1AdX78tJja9TWRzYBjweEn548COFdbZjhCBeg7Y\nO9nGBcDLgM8AmNnOhOF9b00jwswM+B6w0N3vrmVfmCobgwMVW9uT3nyR3nyR3ohw9477ABMB7+3t\n9RdZsMAd3Bcv9lRssYX7t741sPzrX3d/9avLrzNtmvvkye4HHOD+3vem248QjWCPPdz32ad/2RNP\nhDY/b15rNIkhS29vrxOiMRM932v9q4A+4J0l5acCN1dYZz6wGtikqOxDwDpgJLAJcD+we9Hyi4Ar\nq+i4IFnnVTX0TgR8iy228GHDuv0Nb+j27u7wede73uU///nP+9Xj/Pnzvbu7e0D9HnLIIX7hhRcO\nqPPu7m5/8skn+5V/4xvf8FNOOaVf2bJly7y7u9sXl/SH55xzjh9zzDH9ylavXu3d3d2+YMGCfuWX\nXHKJf/rTnx6gbb/99tNx6Dh0HDqOlh7HjBkzXry2dnd3+8SJE32LLbZoaL9kHi7qHYWZTQR6e3t7\nmThxYii85RaYPBnuvBPe9KbaG9l8czj6aPjqV/uXn3gifP/78MgjA9f51Kfg/vth/HhYtgxuLDfv\nWIgcmDIFNtsMLr98Q9m//gUvfzlccQXss0/rtIkhx6JFi5g0aRLAJHdflNd+kiF8a4B93f2qovI5\nwKbu/qEy68wB3u3uOxSVvR64i5BQYhNgEbAesMSkMNx9PbCjuz9QtO55hGGB73H3AXOpSvb9Yt80\ndepEpk+HE07IdsxCCCGy0+h+SXOgKlFPFr7CPBRl4RPNRln4xBDE3dcCvcCuhbJkON2uwB8rrHYT\nsJWZjS4q25EQyXoIWAK8GXgbYQjfW4GrgBuS/x8s2td5wF7A+2o5T6WMGhXHED4hhBADGXoOVLOy\n8GV0oFasWJHJvtVIb75k1tviOVAdX78tJja9TeZM4GAz+2QSSfo+MBqYA2Bm3zGz/yuyvwT4J3CR\nmU0ws10I2fpmu/vzyefu4g+wEljl7ovdfV2y3fOBjwEHAqvNbIvkU5qMoiyxOFCxtT3pzRfpzRfp\njYeh40AVnsbnmYWvcBNbzaYCBx10UCb7ViO9+ZJZb4sjUB1fvy0mNr3NxN0vB44BTgT+DLyFMH/p\nycRkS2CbIvvVwAcIWfP+BFwM/AI4IuOuvwC8BPg98EjRZ780K48aFUca89janvTmi/Tmi/TGw9DJ\nwpc1AlXuiT6kf5FuxpvWmTNnZrJvNdKbL5n1tjgC1fH122Ji09ts3P184PwKy6aVKbsX2D3D9stt\nY1APIEePjiMCFVvbk958kd58kd54UASqEuWe6EN152gQc6BeTHYRCdKbL5n1lmuvBQeqCRGojq/f\nFhObXlGbWIbwxdb2pDdfpDdfpDceho4DlSUC5Q59feUjUGmG8CmJhGg25SJQZtDVpbYoRBsSyxA+\nIYQQAxk6DlSWCFThhjNrFj45UKJVVIqYDh+uLHxCtCGxDOETQggxkKHjQGWJQBWcn0pzoPr6QpSq\n3Hp1JpGYPXt2JvtWI735kllvPXP2GkjH12+LiU2vqE0sQ/hia3vSmy/Smy/SGw9Dx4HKEoEqOFmV\nnuhD+ZvS4jlQGZ/6L1qU27smc0F68yWz3hZHoDq+fltMbHpFbWJxoGJre9KbL9KbL9IbD0PHgWpk\nBKrYpnS9OofwzZo1K5N9q5HefMmst8URqI6v3xYTm15Rm1jmQMXW9qQ3X6Q3X6Q3HoaOA9WoCFS1\nzGaaAyVaheZACREVmgMlhBDxMvQcqDaNQAkxKFocgRJCZCOWIXxCCCEGMnQcqK6u8GnGHKg6kkgI\nMSgUgRIiKmIZwieEEGIgQ8eBgjAPKksa88FEoDLetPb09GSybzXSmy+Z9bbYger4+m0xsekVtSkM\n4SuX0LWdiK3tSW++SG++SG88DC0HKu3NZAvmQE2fPj2TfauR3nzJrLfFQ/g6vn5bTGx6RW1GjQrO\n0wsvtFpJdWJre9KbL9KbL9IbD0PLgWpEBKraEL5BOFBTpkzJZN9qpDdfMuttcQSq4+u3xcSmV9Rm\n1Kjwt92H8cXW9qQ3X6Q3X6Q3HoaWA9XICFSt90BpDpRoJkoiIURUFBwoJZIQQoj4GFoOVCPnQFUb\nwqckEqLZKImEEFExenT4KwdKCCHiY2g5UI2IQKUdwpfxpnXevHmZ7FuN9OZLZr0tjkB1fP22mNj0\nitrEEoGKre1Jb75Ib75IbzwMLQeqmVn4APr6UkubO3duatt2QHrzJZNe99DWWhiB6uj6bQNi0ytq\nE8scqNjanvTmi/Tmi/TGw9ByoPLOwlc8BwoyPfm/7LLLUtu2A9KbL5n01nL4mxCB6uj6bQNi0ytq\nE8sQvtjanvTmi/Tmi/TGw9ByoJqZha+SjRCNptaQU82BEqLtiGUInxBCiIEMLQcq7yx8xUkkKtkI\n0WjaIAIlhMhGLEP4hBBCDGRoOVB5Z+ErHcKnJ/+iGSgCJUR0KAIlhBDxMrQcqGZm4atkU4Fp06al\ntm0HpDdfMultgwhUR9dvGxCbXlGbjTcOf9vdgYqt7UlvvkhvvkhvPAwtB6rZWfgy3LjG9jZn6c2X\nTHrbIALV0fXbBsSmV9Smqys4Ue3uQMXW9qQ3X6Q3X6Q3HoaWA5V3Fr5BOFAHHHBAatt2QHrzJZPe\nNohAdXT9tgGx6RXpGDWq/edAxdb2pDdfpDdfpDcehpYDlXcWvsIcqIKN5p6IZtAGESghRHZGj27/\nCJQQQoiBDC0HKmsEKssQvsLLTJXGXDSbNohACSGyM2qUHCghhIiRoeVAZY1AZRnC19e3YXkdDtTC\nhQtT27YD0psvmfS2QQSqo+u3DYhNr0hHDEP4Ymt70psv0psv0hsPQ8uBakQEqtIQvuIoQB0O1Gmn\nnZbath2Q3nzJpLcNIlAdXb9tQGx6RTpiiEDF1vakN1+kN1+kNx6GlgPVyAhU6U1pcRSgDgfq0ksv\nTW3bDkhvvmTS2wYRqI6u3zYgNr0iHTHMgYqt7UlvvkhvvkhvPAwtB6qRc6BKt1McBagjicTo0aNT\n27YD0psvmfS2QQSqo+u3DYhNr0hHDBGo2Nqe9OaL9OaL9MbD0HKgGhGBymkInxB10wYRKCFEdmKY\nAyWEEGIgg3KgzGxko4Q0hawRqK4y1VPJOZIDJVpFG0SghBDZiWEInxBCiIFkcqDMbE8z+z8zu9/M\n1gJrzOxpM/uDmR1vZlvlpLMxZIlAlXuaD5WH8A1yDtSxxx6b2rYdkN58yaS3DSJQHV2/bUBsekU6\nYhjCF1vbk958kd58kd54SOVAmdmHzOxe4IfAOuBUYB9gd+CzwB+A3YD7zez7ZvaKnPQOjiwRqHJP\n8wvbgIZHoMaNG5fath2Q3nzJpLcNIlAdXb9tQGx6RTpiGMIXW9uT3nyR3nyR3nioEGYZwHHAkcA1\n7t5XZvnlAGa2NXAY8HHgrIYoTEiiW6cCewKjgb8D09x9UeqNNCICVRjWV82BqiOJxGGHHZbath2Q\n3jn+noMAACAASURBVHzJpLcNIlAdXb9tQGx6RTpiiEDF1vakN1+kN1+kNx5SOVDuPjml3cPAVwal\nqAxmthlwE/BbQtRrBbA98FSmDTUiAmUWnKhqWfg0B0o0kzaIQAkhsjN6NKxZ44D1K3d3zKzi9zQ2\n9ayT1kYIIYY6aSNQreYrwHJ3/2xR2bLMW2lEBArCsga/B0qIummDCJQQIj2rV6/m8MNn8OMf38TK\nlWPYdtvV7L772wFj/vw/sXbtGIYN+zebbTaSlSvXsn79WEaMqG1Tzzppbbq7d+Lkk49h7Nixra08\nIYRoA1I5UGZ2ZR3b/oK7P1HHeuXoBq41s8uB/wIeBs539wszbaURESgo/1R/kBGoJUuW8PrXvz61\nfauR3nzJpLeWA9UER76j67cNiE2vqM6nP30sS5fOpK9vJmAsXfo0P/jB7sAJwLeBZ4B9Wb78CMKo\ndQNq2dSzThqbe4AdmTVrPjfcsC8333xFWztRsZ0r0psv0psvseltJGmz8O0NvAD8O+Xng8AmDdS5\nHfBFwpV8CnABcI6ZfSLTVhoVgRo2rOFD+I477rjUtu2A9OZLJr21hvA1IQLV0fXbBsSmV1TngQc+\nTl/fHmwYuvddYAah6zTgDOAoYGoGm3rWSWNzHGD09e3B4sVHcsIJ321gTTSe2M4V6c0X6c2X2PQ2\nFHev+QH6gFemsU3sVwHbpbVPsb3ngQUlZWcDN1Wwnwj4Flts4d3d3Rs+Eyb4u4YN85///OdezPz5\n8727u3tDwde/7v7qV/shhxziF154YT/b3t5e7x4+3J+cMaNf+Tc+/3k/BdxvucX9kUfcwZfNnu3d\n3d2+ePHifrbnnHOOH3PMMf3KlixZ4t3d3b5gwYJ+5Zdccol/+tOf9lL222+/2seRUPE4urv9ySef\n7H8c3/iGn3LKKf3Kli1bNuA4li1bVvY4Vq9e3ZbHsWzZsrLH4V7+92j1cSxbtqzscRSW9TuOK65w\nBz/nO98ZeBwzZnj3RhvlfhwFvYNtV+7N+T0KekuPo0C7HUex3mae52mO45JLLnnxGjtx4kTfZptt\nfJdddnHAgYneoH6gEz6Fvglud/Ciz64OfVW+p7GpZ500NsuK/u/z8eN383am+FyJAenNF+nNl5j0\n9vb2NrRfSnvR/y9geOqNws7AyEYITLa3FPifkrIvAA9WsJ8IeG9vb//aO/NM9002qV3LX/ua+/jx\nlZe//OXu3/lO/7JFi0J13n67++OPh//nzau9LyEGy+WXh/a2cuXAZaec4v6ylzVfkxjSNLqj6pTP\nBgeqt59TAj1VvqexqWedtDb9P1tv3eN9fX2DbCFCCNFcGt0vpc3C94eMUa2FWexTcBOwY0nZjmRN\nJJF2DtT69bXnQCkLn2gXlERCiMjwov8NWJ2UWZnvaWzqWSetTX/dI0asVlY+IcSQJ+0cqJqY2XAz\ny+uNWmcB7zKzr5rZa83sQMILfM/LtJW0c6DWrcuehU8OlGgVSmMuRFSY3VxSshMwv8r3NDb1rJPW\nJtDVdS09PTuXXSaEEEOJhjlQwBuBBxq4vRdx99uBDwEHAHcCxwNHuPulmTY0YkS4mXSvbpcmAtVg\nB+rUU09NbdsOSG++ZNLbBhGojq7fNiA2vaI62277Y7q6rmFDJOpo4JvAL5OyY4AzgV9lsKlnnTQ2\npwJOV9c1TJhwFieddHQDa6LxxHauSG++SG++xKa3kcTyHijc/dfArwe1kcIN5rp1wZmqRK0IVLkh\nfMU3scX7ScmaNWtS27YD0psvmfS2QQSqo+u3DYhNr6jOnDmn87Of/ZarrjqTtWtHM2LEGvbY473A\nH7n22rNZu3Y0w4at5aUvPZeVK89k3bpNUtnUs041m/vuO5M1ax5i3Ljf0NOzEyed1N4pzCG+c0V6\n80V68yU2vY3EvFY0pmBotqiGyShgB3evErppDmY2Eejt7e1l4sSJGxZccgl87GOwZg2MGlV5A4cc\nArfcAosqHPL228M++0Cx5/2738H73w//+Adssw2MHAlz5sCnPtWIQxKiMj/4QWiz5Ryl//1f+Nzn\nakddhWggixYtYtKkSQCT3L1W3zFozOxQQuhkS+AO4DB3/1MV+40Iubs/lqzzCHCiu88pY/tR4BJg\nnrvvM8j9Duib3H3AnKLSsnpsGrHdL30JrrvOuftuzXkSQsRNo/ulLBGoNwCXUnmY3quAHQYrKFcK\nkaG1a6s7UGkiUJoDJdqFakNOC+V9fdDVyBG7QrQHZrY/4WVGnwNuA44E5pvZDu6+osJqPwVeAUwD\n7iP0XwNOEDMbD5wO3Nig/ZbTX7OsHptGbHejjWDtWjlPQghRShYH6m/Are5+QbmFZvY24OCGqMqL\nwrC9WkPrBpOFb/jwDTeqcqBEM6jm8BcPJ91oo+ZpEqJ5HAn8wN1/BGBmXyC8FfYg4LRSYzPbA3gP\n4V2FK5Pi5WXsuoAfA98AdgE2Hcx+Y2SjjeCFF1qtQggh2o8sj6TLpRIvZhVlntK1FcURqGrUk4Wv\n4FANGwZmwYnK4ECtWJH6gWVbIL35kklvmghUzs58R9dvGxCb3mZhZiOAScBvC2UexqX/BphcYbVu\n4Hbgy2b2kJndY2anm9nGJXYzgMfd/aIG7Tc6NtoInnsurrYX27kivfkivfkSm95GktqBcvcj3P1L\nVZbf5+7va4ysnGhkBKraED7InP3soIMOSm3bDkhvvmTSmzYClSMdXb9tQGx6m8jmwDDg8ZLyxwnz\nksqxHSEC9UZgb+AI4MPArIKBme1MGN732QbuNzpGjoSnnoqr7cV2rkhvvkhvvsSmt5EMrUkRjYpA\n1XqRbuFvhqf+M2fOTG3bDkhvvmTS2wYRqI6u3zYgNr1tThfQBxzo7re7+7XAUcCnzGykmW0C/Ag4\n2N2fykPA1KlT6enp6feZPHky8+bN62d33XXX0dPTM2D9Qw89lNmzZ/crW7RoET09PQOeCM+YMWNA\nquHly5fT09PDkiVL+pWfe+65HHvssS9+32gjGDbsy/T09LBw4cJ+tnPnzmXatGkDtO2///4tPY6Z\nM2cOOA4I2cLa8ThmzpyZ+vdoh+MoXIsG066aeRwFvXmcH3kcR/G1vlnn+WCOo1hvq69Xxccxc+bM\nftfXSZMmMXXq1AHaBkPqLHxlVza7E5jq7g82TtLgqZiF7w9/gPe+F/7+d3jd6ypv4CMfgaefhvnl\nXybI5MnwhjdAcYP46U9hv/1g5UrYdFMYOxa++U046qhGHJIQlTnpJDjvPHjssYHL5s2DD30InnwS\nNt+8+drEkKRZWfiSoXRrgH3d/aqi8jnApu7+oTLrzAHe7e47FJW9HriLkAhpE2ARsB4oZFAoPGxc\nTxjK/lDW/SbLy/dNbcqsWXDkkZoHJYSIn0b3S4ONQI0HqrxQqc1oZASq1hC+Jr1/R4h2iEAJ0Qrc\nfS3QC+xaKLOQRm5X4I8VVrsJ2MrMRheV7UiISj0ELAHeDLwNeGvyuQq4Ifn/wTr3Gx0hC5/egiCE\nEKVE8yLdhtCMLHxyoESzaYM5UEK0kDOBOWbWy4Z04qOBOQBm9h1gK3cvvJTvEuAE4CIzm0lIZ34a\nMNvdn09s7i7egZmtJOSJWJx2v51AIXHn2rVK4imEEMUMNgK1AHi2EUKaQjMjUBmTSJSOD213pDdf\nMultgwhUR9dvGxCb3mbi7pcTXmZ7IvBn4C3A7u7+ZGKyJbBNkf1q4APAZsCfgIuBXxCSSTRyv9Ez\nciTA7KiG8MV2rkhvvkhvvsSmt5EMyoFy96nu/mijxOROoyJQ1dKYFxyvjBGoRYtymyaQC9KbL5n0\ntkEEqqPrtw2ITW+zcffz3X28u49y98nufnvRsmnu/v4S+3vdfXd338TdX+PuxxVFn8ptf5q775Nl\nv51AiDotisqBiu1ckd58kd58iU1vI6lrCJ+ZbQ+8D3glJU6Yu5/YAF350IwIVOEluhkdqFmzZtU2\naiOkN18y6W2DCFRH128bEJte0RkEB2oWz1d0LduP2M4V6c0X6c2X2PQ2kswOlJkdDFwArAAeA4qn\nlzphOEN7UohA1XKg6p0DVbyO5kCJZtEGESghROdRmPcUUwRKCCGaQT0RqBOA49391JqW7Ubam8la\nEahy85vkQIlW0QYRKCHSYmZ/AGYDP3X3eObQDkHkQAkhRHnqmQP1UuCnjRbSFBoZgSo3B6rY6cqY\nREKIulEESsTFn4EzgMfM7H/N7F2tFiTKE5JIyIESQohS6nGgfgpMabSQptCoCFQOQ/jKvb25nZHe\nfMmktw0iUB1dv21AbHqr4e5fArYCphHm0d5oZneb2TFmtkVr1YliQgSqJyoHKrZzRXrzRXrzJTa9\njaSeIXz/AL6VPDW8E+gXznH3cxohLBcaFYEql4VvkA7U9OnTU9u2A9KbL5n0tkEEqqPrtw2ITW8t\n3H0dcCVwpZm9Evgc8C3g22b2a+Acd7+hlRpFwYGaHlUSidjOFenNF+nNl9j0NpJ6HKjPAc8A/5V8\ninGgfR2oRkagGuxATZkSV1BPevMlk942iEB1dP22AbHpTYuZvYMQifoo8AThJbRbA780s/Pd/ZgW\nyhvyBAdqSlQRqNjOFenNF+nNl9j0NpLMDpS7b5uHkKaQZxa+cnOgNHFfNIM2iEAJkZYk4vQJguO0\nPXA1cAAw3909sZkDXEt4Ua1oEUoiIYQQ5anrPVDR0sgsfGkiULppFc1g3bqWR6CEyMBDwH3AD4E5\n7v5kGZu/An9qqioxACWREEKI8qRKImFmZ5rZmLQbNbPvmNnL6peVE2lfpFtPFr5BDuGbN29eatt2\nQHrzJZPe9etbHoHq6PptA2LTW4Nd3X2Cu59ewXnC3Z929/c1W5joT4hAzYvKgYrtXJHefJHefIlN\nbyNJm4XvCGB0hu0eCmyWXU7OmKWLDFV7og+5ZOGbO3duatt2QHrzJZPeNhjC19H12wbEprca7r6g\n1RpEOoIDNTeqJBKxnSvSmy/Smy+x6W0kaYfwGXCvmXlK+9TRqqYzYkS6CFTWIXylN7EZHajLLrss\ntW07IL35kklvtfbapCF8HV2/bUBsekVnEByoy6KKQMV2rkhvvkhvvsSmt5GkdaCm1bHtx+tYJ3/S\nvOA2TQSq1hA+JZEQzeL/2Tv/OKuqcv+/n4EBBDEtzR8hihVKViqj1YjZLRWI7oya3UjrmlDXawqa\nPyALE+zKVbj+yITSjDItIctUqBAs+wWi6IxZ10C/mcQ1E8MUpplBB+b5/rHPGc45c37sc2bvc9ba\n53m/XucFZ5211/7sNWuftZ/zrOdZO3fCsGH5P7MkEoZhVEg675JPBpRhGEY1CGVAqep34xZSNaLw\nQIVdwmcPrUY1cCCNuWEYyWPQoOBlBpRhGEY2YWOg+hCRcwqUDxaRawasKG6i8EDFsJGuYVSMAzFQ\nhhEWETlbRIbmKR8iImfXQpNRmKFDzYAyDMPIpWwDCviaiPxQRPZJF4jI4cCjBHt5uE1UHqiIY6Cm\nTatklWTtML3xUpZeBzxQie5fB/BNbwm+A7whT/nI1GeGQ+zcOc0rA8q3e8X0xovpjRff9EZJJQbU\nMcAo4A8icoqIXAC0AxuBo6IUFwtRxUBFnIXPt92cTW+8lKXXAQ9UovvXAXzTWwIB8iUkGgVsq7IW\nowTDhk30Kgufb/eK6Y0X0xsvvumNkrI30lXVZ0VkAvBVgp3idwGfVlU/chnGlYUvXxKJHTtCyzrz\nTPedd5mY3ngpS68DHqhE968D+KY3HyLyBIHhpMAvRCTTqh8EjCGYUwyH2GuvM73yQPl2r5jeeDG9\n8eKb3igp24BK8RHgE8A6YCzwGRH5taq+EJmyuIgzC1/uEj6LOzGqQTEPVEPD7jqGUVvSOy4eDawC\n/pnx2evAJuCeKmsySjBkiMVAGYZh5FK2ASUitwKfBuYANwD7A98mWNL3OVW9O1qJEVPKA6VaWRa+\nXKPLkkgY1aKYByq9ebSNRaPGqOpVACKyCVimqh4tDKtfLImEYRhGfyqJgZoAvFdVr9eAF1V1CnAl\ngSHlNqU8UL29wb9VzsK3Zs2a0HVdwPTGS1l6i3mgIJzXdYAkun8dwDe9JXgI2C/9RkTeIyJfFZFz\na6jJKMDrr6/xyoDy7V4xvfFieuPFN71RUokB1aSqT+YWqupioGngkmKmlAcqbfSUm4VvgAbUwoUL\nQ9d1AdMbL2XpLeaBgqp4oBLdvw7gm94S3AV8EEBEDgB+DrwHmC8iV9ZSmNGfl19e6FUSCd/uFdMb\nL6Y3XnzTGyVlG1DFll2o6tMDk1MFSv0an/6s3Cx8uV6AfF6qIixbtix0XRcwvfFSll4HPFCJ7l8H\n8E1vCd4JrE/9/+PAH1T1eOCTwDm1EmXk54gjlnnlgfLtXjG98WJ648U3vVFSiQfKb6LwQIVdwlfG\nQ+vw4cND13UB0xsvZel1wAOV6P51AN/0lqARSP8QdzKwPPX/jcCBNVFkFGSPPYZ7ZUD5dq+Y3ngx\nvfHim94oqT8DqtSv8ekHzUqy8FkSCaMWOOCBMowyeAo4T0TeD5zC7tTlBwEv10yVkRdLImEYhtGf\n+jOgSnmg0g+apWKgenuDjH1pzIAyaoUDHijDKIMvAP8J/ApYmhFT28rupX2GI1gac8MwjP7UnwEV\nhQcqbVxlPpTmegHKfGidNWtW6LouYHrjpSy9DnigEt2/DuCb3mKo6q+AfYF9VXV6xkffBM6riSij\nIBs3zvIqiYRv94rpjRfTGy++6Y2SSA0oETlbRN4aZZuRE5UHCrINpFwvQJlJJEaPHh26rguY3ngp\nS68DHqhE968D+KY3BAI0ich/isjIVNnrQFcNNRl5GDlytFceKN/uFdMbL6Y3XnzTGyVRe6BuB/4o\nIjdH3G50RBUDBdntDDCJxMyZM0PXdQHTGy9l6XXAA5Xo/nUA3/QWQ0QOAf4A3A8sZveeUF8ArquV\nLiM/73rXTK8MKN/uFdMbL6Y3XnzTGyWRGlCq2gAcAWyIst1IicIDlW8Jn8VAGbXCAQ+UYZTBTcDj\nwD5Ad0b5vcBJNVFkFMSSSBiGYfSniJVQGar6HPD1qNuNjCg9UBHGQBlGxTjggTKMMng/cLyqvi4i\nmeWbgLfURJFREEsiYRiG0Z9QHigReXcFr8iNs0iIMgaq1BK+MgyojRs3hq7rAqY3XsrS64AHKtH9\n6wC+6S1BA5BvwI4COqqsxShBR8dGrwwo3+4V0xsvpjdefNMbJWGX8P0OeCL1b5hXO+BmZFljYzxZ\n+AaYRGL27Nmh67qA6Y2XsvQ64IFKdP86gG96S7Aa+HzGexWRPYGrgJ/VRpJRiDVrZnuVhc+3e8X0\nxovpjRff9EZJOV6i9wJ/D1FPgP+tTE4VGDy4Oln4ykwisWjRotB1XcD0xktoven9yGrsgUps/zqC\nb3pLcCmwSkT+CAwD7gLeDmwFzqylMKM///qvi7j77lqrCI9v94rpjRfTGy++6Y2SsAbUr4E/qeqr\nYSqLyG/IDg52hyg8UPmW8A0wBsq3VJCmN15C602PsRp7oBLbv47gm95iqOrzInIUMBU4CtgTWAJ8\nX1XdnDfqmP32szTmcWJ648X0xotveqMklAGlqh8sp1FVnVKZnCoQhQfKsvAZrpAer5aFz/AIVd0J\nfD/1MhzGsvAZhmH0x81ED3ESpQfKDCij1jjigTKMsIjIm1T15dT/Dwb+A9gDWKGqv6mpOKMfloXP\nMAyjP2XvAyUig0TkMyJyl4j8XEQeynzFITJSooyBKpaFr8wkEgsWLAhd1wVMb7yE1ht2vMZszCe2\nfx3BN735EJF3icgm4CUR2SgiRwOPARcD/wk8JCKn1VKj0Z9f/nIBr70WhFr6gG/3iumNF9MbL77p\njZJKNtK9KfUaRJAs4smcl9vElYUvXwxUGb/6d3V1ha7rAqY3XkLrDTteY/ZAJbZ/HcE3vQVYCPwB\nOBH4FfAT4KfAG4C9gVuBy2slzsjPrl1dqPqzoMK3e8X0xovpjRff9EaJaJk/K4nIVuBsVXU23ayI\njAfa2traGD9+fPaH11wDN9wAfy+QUPDBB2HiRNi0CQ45JH+dxx6D97wHfvc7OOqooGzUKPjsZ2He\nvOD9N78J//mf/vxsZ/jJli1wwAGwfDm0tOSv85GPBOtw7r23utqMuqW9vZ2mpiaAJlVth76540Oq\n+vtU2vLtwHGq2pb6/AjgEVXdu1a646bo3OQo3/8+fOpT0NkJw4fXWo1hGEZl5JuXBkIlHqjXgT8N\n9MQ1I64sfPlioCBIM20YcRF2vPry87GRZN4IvAigqv8EOoFXMj5/BRhZA11GEYYODf61OCjDMIzd\nVGJAXQ9cJCIStZiqUM0sfLl1DCNqwo5XSyJhuEGuS95c9I4zZEjwrxlQhmEYu6nEgDoB+CTwrIis\nEJEfZ74i1hc9cWXhy42BymdkFWHr1q2h6rmC6Y2X0Hod8UAltn8dwTe9Rbg9Y64YBtyS8f7bNdZm\n5KG7Oxh7r71WYyEh8e1eMb3xYnrjxTe9UVKJAfUqcC/B5rpbgW05L7epVha+fHWKMH369FD1XMH0\nxktovY54oBLbv47gm94CfBd4id1zxfeAFzLevwTcUTN1Rl5uuikYe754oHy7V0xvvJjeePFNb5SU\nvQ+Uqk6LQ0jVaGwM4pJ6e6Ehj/0Y5T5QuXWKMC+dfMITTG+8hNbriAcqsf3rCL7pzUecc4eIXABc\nBhxAkA12pqo+VqT+EGAuwWqKAwgMua+o6u2pz08HvgS8DWgE/h9wvap+L6ONBuCqnDZuV9Wro76+\nWvKZz8xj3Tp/DCjf7hXTGy+mN1580xsl9beRbvqX+p07dy/uzmQgMVC5acxz6xTBl4xMaUxvvITW\n64gHKrH96wi+6a0mIjKVIDb3XGA9wb5Sq0RkrKoWWl/yQ2A/YBrwLHAg2SsyXgauBjYSJE5qAb4j\nIltU9cFUncsJ9q86G/gjcCzBEsVXVXVRhJdYU9797mDs+WJA+XavmN54Mb3x4pveKAllQIlIO3CS\nqr5SsnJQfw0wVVX/OhBxsdDYGPxbyIAaSAyUJZEwqo0jHijDqCEXA7eq6h0AInIe8BFgOsHeU1mI\nyGTg/cBhqvpqqnhzZh1V/U3OYV8TkU8TxACnDahm4H5VfSDdhoicBbxn4JfkDpZEwjAMoz9hPVBH\nA0eJyD/KqD+0Mkkxk/6lvlAcVFQxUGUmkTCMinDEA2UYtUBEGoEm4L/TZaqqIvJzAgMnHy3A48AX\nROTfCdKpLwe+rKo7CpznJGAsQexvmoeB/xCRt6vq/xORo4AJBAZdYkgbUL4kkTAMw6gG5SSR+AXw\nu5CvPaKVGSGZHqh8pA2efPFRaXKNI9XgNYAkEkuWLAlVzxVMb7yE1uuIByqx/esIvumtIvsCg4At\nOeVbCOKS8nEYgQfqSOA04CLgY8DizEoispeIdIjI68AKgriqhzKqXAv8ANiYqtMGfFVVlw3sktzi\nvvuCseeLB8q3e8X0xovpjRff9EZJWANqDMGkMybk6zDgL1GLjYQwHqhBg6DYNle5y/PS/w4gBqq9\nfcCbIlcV0xsvofU64oFKbP86gm96HacB6AXOUtXHU0vwLgE+LSKZKyc6gKMIYpvmADeKyIkZn08F\nzgI+ARwDfBqYlfJqFWXKlCm0trZmvZqbm7nvvvuy6q1evZrW1tZ+x19wwQX9Hlza29tpbW3tl1Z4\n7ty5LFiwIKts8+bNtLa2snHjxqzym2++mVmzZmWV/e//Pgq00t6+Jqt86dKlTJvWPy/I1KlTa3od\n7e3tea+jq6uL1tZW1qxx6zra29vL+nvU+jrS30UDHVfVuo603rjuj6ivI/O7vpr3eaXXkanXhe+r\n9HXMmzcv6/u1qamJKVOm9NM2EEQ1un0MRUQ0ygYr1zEeaGtra+sf4LZqFUyeDJs3w8EH9z948WK4\n5JLi6xVeeQXe+Eb44Q/hYx+DHTtgjz3gzjvhU58K6vziF3DyyfDss3DYYZFdm2Fk8dvfwoknwsaN\ncPjh+etcfDGsXg1PPVVdbUbd0t7eTlNTE0CTqsZm/aWW8HUBZ6jq8ozy24E3qOrpeY65HTheVcdm\nlB0BPAWMVdVnC5zrNmCUqn449X4zcI2qfiOjzhzgk6r6jgJtFJ6bHOWll2D//eH++yHPs5FhGIYX\nRD0vlb0PlIjcLiIj8pQfCuQG3rpHZha+fOQmgyjWRq4HypJIGNXGEQ+UYdQCVe0hWDp3UrpMRCT1\n/uECh60FDhKR4RllhxN4pZ4vcroGsmN7hwO5X/C9VLa/orNYEgnDMIz+VPJFfxTwexHpC9BNZSd6\nkmBjXbdJx0AVWsKXm448H4WW8FkSCaPaOBIDZRg15AaCZA5npzxJtxAYN7cDiMg1IvLdjPp3EaQp\n/46IjEsty1sILFHV11LHXC4iJ4vIGBE5QkQuBT4F3JnRzgrgChGZIiKHpPaOuhj4cbyXW13MgDIM\nw+hPJftAvYcg49GvROR6go0GPwxcoqq3RSkuFqLwQOUmiMjnBSgziYRhVIR5oIw6R1XvFpF9ga8A\n+xMkMpqkqn9PVTkAODijfqeInALcDDxGYEz9APhyRrMjCJJKjAK6CfaD+qSq/iijzgzgv1L13kyw\nke43UmWJwbLwGYZh9KdsD5Sq9qjqLIIMRJcTZDGa6IXxBNF4oGJYwpcv8M5lTG+8hNbriAcqsf3r\nCL7prTaq+nVVPVRV91DVZlV9POOzaar6oZz6z6jqJFXdU1UPUdXZae9T6vMvq+rhqjpCVfdV1RNy\njCdUtVNVL1HVMal6b1fVuaqaqF8rPvrRVkT88UD5dq+Y3ngxvfHim94oqSQGqjHlefoCcA2wDvix\niESb3qK4hstFpFdEbij74Cg8UOkU5xEaUDNmzAhVzxVMb7yE1uuIByqx/esIvuk1ksOMGTMYMsQf\nA8q3e8X0xovpjRff9EZJJUv4HidYX/4vqvpIKmB3NoER9W1VPT9ShTmIyHHAuQQxV+UThQdK/Eoz\nvgAAIABJREFUJDCi0g+lERhQEydODFXPFUxvvITW64gHKrH96wi+6TWSw8SJExk61B8Dyrd7xfTG\ni+mNF9/0RkklSSQeB45W1Ucg2PVdVRcQ7Pp+YtEjB4iI7Al8D/gs8GpFjUThgUq3k34ozecFsCQS\nRjVwxANlGEZy8ckDZRiGUQ0qiYH6jKp25il/AmiKRFVhFgMrcnaDL48oPFCQ/at+MQ+UPbgaceKI\nB8owjOQyZIglkTAMw8gklAGVb9+nfGSkgA1VvxxE5BPA0cAXB9RQVB6oQYMiXcKXuzO165jeeAmt\n1xEPVGL71xF802skh/vuu88rD5Rv94rpjRfTGy++6Y2SsB6oP6USNxxYqIIEnCIiK4ELo5HX1/Yo\n4KsEaWQLuI5CEpUHKnMJXwQG1NKlS0PVcwXTGy+h9aYNoxp7oBLbv47gm14jOSxdutQrA8q3e8X0\nxovpjRff9EaKqpZ8EezSfg+wA3iUYCndHOBS4GqCjQP/BvwfcD4wKEy7YV/AqQQ7vr8O9KRevRll\nklN/PKD777+/trS0ZL3eN3683guq99+vaVatWqUtLS3Bm5kzVd/5TlVVPf/88/Vb3/qWZtLW1qYt\nLS369332Ub3mmqDwD3/QK0GvPf/83RWfe07/Atryvvfphg0bstr42te+ppdddllWWWdnp7a0tOhv\nf/vbrPK77rpLzznnHM3l4x//uN57771ZZVnXkUHR6/j737PKr7zySr322muzyv7yl79oS0uLXYeL\n13Hbbaqg2ttb+Dre9S79bUOD29eRgdd/jzq8jrvuuqvv+3X8+PF68MEH64knnqiAAuM1wrnA91d6\nbmpra1OfeNe7gqnRMAzDV9ra2iKdl0SDL/VQiMho4N+A9wOHAHsAW4EngFXASlWN/Kfu1JLAQ3KK\nbwc2ANeq6oac+uOBtra2NsaPH5991CuvwBvfCD/6EZxxRv+TXXABPPwwPPFEcVH77w8zZ8IVV8CT\nT8LRR8P69XDcccHnzz8PBx8MK1fC5MnhL9YwyuGWW4IxW8zDdNttcO650NsbZJA0jJhpb2+nqakJ\noElV22utxxWKzk0Oc+yxweuWW2qtxDAMozKinpfKSmOuqpuB61OvqqFB0oo/ZpaJSCfwcq7xVJI4\nsvBZEgmjVpSz8XNvb7ixbRiGkYElkTAMw8imkjTmrhDedZZJtbPwWfYzI0527iw9Xm0sGoYxAHyK\ngTIMw6gGYbPw3RD2FbfgNKr6IVW9pOwDS3mgdu0qPwtfvkxoZT60Tps2LVQ9VzC98RJab5jxWmrM\nR0Bi+9cRfNNrJIdp06Z5ZUD5dq+Y3ngxvfHim94oCbuE75ic9+NTxz6dej+WIKFDW0S64iP9sFnI\nAxXmF32IPAufb7s5m954Ca03zHitggGV2P51BN/0Gslh4sSJ3HWXPwaUb/eK6Y0X0xsvvumNklAe\nKFX9YPoFrAB+DYxS1fGqOh44GPgl8NP4pEaESPF9ccrxQBUzoNIPrSENqDPPPDNUPVcwvfESWm+Y\n8VqFJXyJ7V9H8E2vkRzOPPNMrzxQvt0rpjdeTG+8+KY3SiqJgboU+KKqvpIuSP3/itRn7tPYOHAP\nVL6NdPMt4bMkEkacOOKBMgwjuVgSCcMwjGwqMaD2AvbLU74fMHJgcqpEFB6ozCV8+TYztcB9oxo4\n4oEyDCO5+OSBMgzDqAaVGFD3At8RkY+KyKjU6wxgCcGGuu4TlQcqwhioNWvWhKrnCqY3XkLrdcQD\nldj+dQTf9BrJYc2aNV4ZUL7dK6Y3XkxvvPimN0oqMaDOA1YCdwF/Sb3uAh4Azo9OWoxEFQOVu4Qv\n87iGhuzPSrBw4cJQ9VzB9MZLaL2OeKAS27+O4JteIzksXLiQoUP9MaB8u1dMb7yY3njxTW+UlG1A\nqWqXqp4PvIkgO98xwBtV9fzUhrfuE4UHKl8WvszjRLK9VCVYtmxZqHquYHrjJbReRzxQie1fR/BN\nr5Ecli1b5pUHyrd7xfTGi+mNF9/0RknYNOb9SBlLv49QS/WIOgtfvhio9PuQD63Dhw8PVc8VTG+8\nhNbriAcqsf3rCL7pNZLD8OHDvTKgfLtXTG+8mN548U1vlFSyhM9/4srCl8+AssB9b1DVUGVO4YgH\nyjCM5GJZ+AzDMLKp2APlNVFn4TMDyls6Ojq4bs4c1q5YwYieHjobGzl20iQEeGzVqr6yCS0tXDZ/\nPiNHOpZo0hEPlGEYycUnD5RhGEY1MA9ULgPJwpd7XKaRVYJZs2aFqucKSdDb0dHBGc3NNC9ezIOb\nNnH/X//Kjzdt4te33soJt97aV/bgpk00L17MGc3NdHR01ExvXhzxQCVhPLiMb3qN5DBr1iyvDCjf\n7hXTGy+mN1580xsl9WlARZ2FL4IYqNGjR4eq5wpJ0HvdnDlcsmEDk3t7kVTZ9cBc4CPQVybA5N5e\nLt6wgeuvuKJmevPiiAcqCePBZXzTaySH0aNHe5WFz7d7xfTGi+mNF9/0Rkl9GlBxZeEbwBK+mTNn\nhqrnCknQu3bFCib19maXAZMKtDG5t5e1y5dHLy4PofvXEQ9UEsaDy/im10gOM2fO9MoD5du9Ynrj\nxfTGi296o6R+Dagos/Dt2hWkLRcpXMdwClVlRE8PmX8xBUYAUuAYAYb39LiVWMIRD5RhGMllyJBg\nysz5vckwDKNuqU8DavDgaLPwFTrGDChnERE6GxvJNIUE6AQKmUcKdDY2IrmGci1xxANlGEZyGTIk\n+NcXL5RhGEbc1KcBFYUHKncJX75jykgisXHjxlD1XCEJeie0tLCqIfsWmACsKtDGAw0NnNDaGr24\nPITuX0c8UEkYDy7jm14jOWzcuNErA8q3e8X0xovpjRff9EZJfRpQUXmgShlQZSSRmD17dqh6rpAE\nvZfNn88N48axsqGhz+t0KXAV8BN2e6IUWNnQwI3jxnHp1VfXTG9eHPFAJWE8uIxveo3kMHv2bIYO\nDf7vgwHl271ieuPF9MaLb3qjpD4NqKhioDI30i1kQIX81X/RokWh6rlCEvSOHDmSe9at49EZM5g4\nfDinDh3KGYceyr+cdx4Pn3ceE4FT996biYceyqMzZnDPunVV2wcqdP864oFKwnhwGd/0Gslh0aJF\nXnmgfLtXTG+8mN548U1vlNTvRro7duT/rJIsfBHEQPmWCjIpekeOHMm8m26CZ55B99gD+fGPd394\nxx3o3LnI5z9fJZW7Cd2/O3fuDlAoRBU8UEkZD67im14jOYwePZpnngn+/9prtdUSBt/uFdMbL6Y3\nXnzTGyXmgcql0ix8A/RAGTVmxw5kjz2yy4YNQ1x/YnDEA2UYRnLxyQNlGIZRDerTgIo6C18ESSSM\nGrNjBwwbll02bBh0d9dGT1gciYEyDCO5mAFlGIaRTX0aUNXKwldGEokFCxaEqucKidPb3d3fgNpj\nj8JLPWMmdP/u3OmEBypx48ExfNNrJIcFCxZ4lUTCt3vF9MaL6Y0X3/RGSX0aUFFn4YsgBqqrqytU\nPVdInN4dOwKDKZNhw2pmQIXu3127nPBAJW48OIZveo3k0NXV5ZUHyrd7xfTGi+mNF9/0Rkl9GlAO\nxkBdddVVoeq5QuL0OraEL3T/OuKBStx4cAzf9BrJ4aqrruozoFwPCQX/7hXTGy+mN1580xsl9WlA\nlfJA1SCNuVFj8hlQNVzCFxpHPFCGYSQXnzxQhmEY1aA+DahSHqhy05hbEgn/6e52aglfaMIY/A2p\n29zGomEYFWAGlGEYRjb1aUBF5YEKEwMV8lf/rVu3hqrnConTW2gJX40MqND9W47BH6MHKnHjwTF8\n02skh61bt3qVRMK3e8X0xovpjRff9EZJfRpQhTxQvb2gGl0a8zKW8E2fPj1UPVdIlN7e3uDJwKEY\nqND9W0nSkxhI1HhwEN/0Gslh+vTpXnmgfLtXTG+8mN548U1vlNSnAVXIA5V+wIwyjXnIh9Z58+aF\nqucKidKb9jI5FAMVun/LSbsfowcqUePBQXzTaySHefPmeWVA+XavmN54Mb3x4pveKAnx03UCKeSB\nShs75f6iX2gZVRkG1Pjx40PVc4VE6U0bSQ7FQIXu37AeqJgNqESNBwfxTa+RHMaPH49q8H8fsvD5\ndq+Y3ngxvfHim94oMQ9UJukHzHKz8BWKm7IkEn5QyANVwyV8oakk7b5hGEYZiAS/O/rggTIMw6gG\n9WlAReGBCruEz1JHu4+DS/hC44gHyjCMZDNkiBlQhmEYaerTgIrKAxVhDNSSJUtC1XOFROlNe5kc\nWsIXun8d8UAlajw4iG96jeSQHntDh/phQPl2r5jeeDG98eKb3iipTwOqsbF4EolKsvANMAaqvb09\nVD1XSJTeYkv4amRAhe5fRzxQiRoPDuKbXiM5pMeeLx4o3+4V0xsvpjdefNMbJfVpQBV6mCzHA5W5\nhK9QDFQZBtTixYtD1XOFROl1MAYqdP864oFK1HhwEN/0VhsRuUBEnhORbhF5RESOK1F/iIjMF5FN\nIrJDRP4sIudkfH66iDwmIq+IyD9F5AkR+VSedg4SkTtFZKuIdInIkyKSqKjq9NgbMsSPJBK+3Sum\nN15Mb7z4pjdK6jcLn2r/h8+BZOGzJBL+kjaSLAbKMLxDRKYC1wPnAuuBi4FVIjJWVQvt8vhDYD9g\nGvAscCDZPyi+DFwNbAReB1qA74jIFlV9MHXevYG1wC+AScBW4O3AK5FeoCP44oEyDMOoBvVpQKUf\nOHM9R+XGQKU33rUkEn5TLI35rl3hjZRa4IgHyjBqyMXArap6B4CInAd8BJgOLMytLCKTgfcDh6nq\nq6nizZl1VPU3OYd9TUQ+DZwAPJgquxzYrKqfzaj3lwFei7OYAWUYhrGb+lzC19gY/JsbB1VuFr70\nMRHEQBk1pNgSvszPXcQ8UEYdIyKNQBOBFwgAVVXg50BzgcNagMeBL4jI8yLytIj8j4gMK1AfETkJ\nGAv8OrcdEblbRLaISLuIfDZ/C/7jSxIJwzCMalCfBlSmByqTtLET9hf99DERxEC1traGqucKidJb\nLI051CQOKnT/OuKBStR4cBDf9FaRfYFBwJac8i3AAQWOOYzAA3UkcBpwEfAxIGsxv4jsJSIdIvI6\nsAKYqaoP5bTzOeBpYCLwDQJP1b8P6IocIz32fPFA+XavmN54Mb3x4pveKKlPA6qQByptUIWNgUof\nE0Ea8xkzZoSq5wqJ0ps2kIYOzS6voQcqdP864oFK1HhwEN/0Ok4D0AucpaqPq+oDwCXAp0Uk80ug\nAzgKOBaYA9woIifmtNOmql9W1SdV9TbgNuC8UgKmTJlCa2tr1qu5uZn77rsvq97q1avzPqBccMEF\n/dIHt7e309raytat2WFfc+fOZcGCBVllmzdvprW1lY0bN2aV33zzzcyaNSur7LOf/Sytra10d6/J\nSiKxdOlSpk2b1k/b1KlTa3odM2bMyHsdXV1dtLa2smbNmqzyWl/HjBkzyvp71Po60t9FAx1X1bqO\ntN647o+oryPzu76a93ml15Gp14Xvq/R1zJs3L+v7tampiSlTpvTTNhAkWO2QLFJZkNra2toYPz5P\nQqSf/hT+9V/hhRfgwAN3l//+93DUUfDoo/Ce9xQ/yd13w9SpsG0bnHYaHHAA3HVXdp2LL4bVq+Gp\npwZ8TUaM3HwzzJ7d39P061/Dv/wLPPMMvP3tNZFWlN7ewEhfsgSmTy9e9z3vgaOPhm9+szrajLqm\nvb2dpqYmgCZVjS3PbWoJXxdwhqouzyi/HXiDqp6e55jbgeNVdWxG2RHAU8BYVX22wLluA0ap6odT\n7zcBq1X13Iw65wFzVPXgAm0Un5sc5uST4U1vgh/8oNZKDMMwyifqeck8UJlU4oEqFQNlcSfus2NH\n/+V7sLusRqnMS1LOeLUYKCOBqGoP0AaclC4TEUm9f7jAYWuBg0RkeEbZ4QReqeeLnK4ByPRQrU0d\nl8nhJDSRhC9L+AzDMKpBfRpQUcZA7dwZSQyUUUMKGVDpGChXk0iUO15tLBrJ5AbgP0Tk7JQn6RZg\nOHA7gIhcIyLfzah/F0Ga8u+IyLjUsryFwBJVfS11zOUicrKIjBGRI0TkUuBTwJ0Z7dwIvE9Evigi\nbxWRs4DPAovivdzaYEkkDMMwdlOfBlQUHqjcLHwDNKBy18S6TqL0dnf3T2EONY2BCtW/DnmgEjUe\nHMQ3vdVEVe8GLgO+AjwBvBuYpKp/T1U5ADg4o34ncAqwN/AYgVF0P0EyiTQjCJJK/C+wBjgd+KSq\nfiejncdT5WcCfyCIk7pIVZdFf5W1Iz32fPFA+XavmN54Mb3x4pveKKlPAyrqLHwRGFBLly4NVc8V\nEqW31BK+GhhQofrXIQ9UosaDg/imt9qo6tdV9VBV3UNVm1PGTfqzaar6oZz6z6jqJFXdU1UPUdXZ\nae9T6vMvq+rhqjpCVfdV1RNU9Ud5zvszVX23qg5X1SNV9dvxXmn1SY+9IUPISiLhKr7dK6Y3Xkxv\nvPimN0rq04CKOgtfoUxogweHfmj9gWeRuYnSW2oJXw1ioEL1r0MeqESNBwfxTa+RHNJjzxcPlG/3\niumNF9MbL77pjZL6NKCi8ECFXcJngfvu093tnAcqFA55oAzDSDa+GFCGYRjVoD4NqDiy8FkSCX/Z\nscO5GKhQOOSBMgwj2ZgBZRiGsZv6NKCizsJnBpTfFFrCN3gwNDS4n8bcPFCGYcSMZeEzDMPYTX0a\nUFFn4SsUA1XGQ2u+nZ5dJlF6CxlQIoFnqgYeqFD9mx5bDnigEjUeHMQ3vUZySI89XzxQvt0rpjde\nTG+8+KY3SurTgKpWFr4ykkhMnDgxVD1XSJTeQjFQEJTXwIAK1b8OeaASNR4cxDe9RnJIjz1fsvD5\ndq+Y3ngxvfHim94oqU8DKuosfBEkkTjzzDND1XOFROktFAMFNTOgQvWvQx6oRI0HB/FNr5Ec0mPP\nFw+Ub/eK6Y0X0xsvvumNkvo0oKqZhc/iTtyn0BI+CAwri4EyDKPO8cWAMgzDqAb1aUBFnYUvghgo\no4YUM6Bq5IEKhUMeKMMwko0lkTAMw9hNfRpQ1czCB9DbW7K5NWvWlD6nQyRKb3e3c0v4QvVvuQZ/\njMZ8osaDg/im10gO6bGX9kCp1lhQCXy7V0xvvJjeePFNb5TUpwFVygMV1RK+zDolWLhwYelzOkSi\n9JbyQNVgCV+o/i13yWmMHqhEjQcH8U2vkRzSY2/IkOB97rTpGr7dK6Y3XkxvvPimN0rq04Aq5oES\nCfb+KUVuFr5CS/jynScPy5YtK31Oh0iU3lIxUDXwQIXq33I9UDEaUIkaDw7im14jOaTHXtqAcn0Z\nn2/3iumNF9MbL77pjZL6NKAGDQoMpXweqDAPo+k20sfs3Fl8CV8ID9Tw4cPDndcREqXXwTTmofq3\nXA9UjEv4EjUeHMQ3vUZySI89Xwwo3+4V0xsvpjdefNMbJfVpQEGwjC+fByrMwyiEz8KXrmO4ya5d\ngSHtWAxUKMrd+NmSSBiGUSFDhwb/um5AGYZhVIP6NaAGD47GA2UGlN+kd4b0MY15uUlPbBwahlEh\nvnigDMMwqkH9GlAD9UDlZuHLZ3iVkURi1qxZ4c7rCInRm/YuObaEL1T/OuSBSsx4cBTf9BrJIT32\n0gZU+jcnV/HtXjG98WJ648U3vVFSvwbUQD1Q6XrpNop5oEI8uI4ePTrceR0hMXrT3iXHlvCF6l+H\nPFCJGQ+O4pteIzmkx54vHijf7hXTGy+mN1580xsl9WtAReWBSv8cN8AlfDNnzgx3XkdIjN4wHqga\nLOEL1b8OeaASMx4cxTe9RnJIjz1fDCjf7hXTGy+mN1580xsl9WtARRUDlZ5NLAbKT0oZUDVKYx4K\nhzxQhmEkG0siYRiGsZv6NaCiysKX9kAV2wfKHlzdxdEYqFA45IEyDCPZ+OKBMgzDqAb1a0AV8kBF\nuYSvjCQSGzduDHdeR0iMXkdjoEL1r0MeqMSMB0fxTa+RHNJjz5ckEr7dK6Y3XkxvvPimN0rq14Aq\n5IEKu4SvIdV1YZbwhfjlf/bs2eHO6wiJ0RtmCV93N6jGI6wAofrXIQ9UYsaDo/im10gO6bHniwfK\nt3vF9MaL6Y0X3/RGiRcGlIh8UUTWi8h2EdkiIveKyNgBNTpQD5RIUDeiGKhFixaFO68jJEZvmCV8\nvb1VX/4Wqn8d8kAlZjw4im96jeSQHnu+GFC+3SumN15Mb7z4pjdKvDCggPcDNwPvBU4GGoHVIlJg\n3VUIBuqBguChNKIYKN9SQSZGb3oJXzEDCqq+jC9U/6bHb0OI2zhmD1RixoOj+KbXSA6WxjxeTG+8\nmN548U1vlJRhLdQOVZ2S+V5EzgFeApqANRU1OlAPFGQbUAOMgTJqRNowKhYDBYGhNXJkdTSFJZ30\nRKR03UGDAk+aarj6hmEYGVgWPsMwjN344oHKZW9AgX9U3EJUHihLY+43aQMq/fNqLmnDysVMfJVs\n/Gxj0TCMCmhsDP41A8owDMNDA0pEBPgqsEZV/1hxQ1F4oAYPDreRboilUwsWLAh/XgdIjN4dOwIv\nUyGvTI2W8IXq30o2fo7JgErMeHAU3/QaySE99gYNyl504Sq+3SumN15Mb7z4pjdKvDOggK8D7wA+\nUarilClTaG1tzXo1Nzdz3333QWMjmjKgVq9eTWtraz8P1AUXXMCSJUuy2mxvb6e1tZWtW7dmzSZz\n77ij30DavGULrcDGP/85q/zmm29m1qxZWWXbtm2jtbWVNWuyVyQuXbqUadOm9bu2qVOnBteRQd91\n5FDyOjKYO3du/+vYvJnW1tasdJVdXV15r6Orq8vJ6+jq6sp7HXR3c7NI4etI100ZUNW6jq6urrzX\nARl/jxdeyBqvRf8ef/pTUJAy5qO+jrTegY6rktcR0bhK6829jjSuXUem3mre52GuY+nSpX3fr01N\nTYwePZqLL764nz7DTzLH3pAh7nugMvX6gOmNF9MbL77pjRLRKqdnHggisghoAd6vqpuL1BsPtLW1\ntTF+/Piszzo6OrhuzhzWfutbjFCl84ADmNDSwmXz5zPyggvguefgt78NJ2j//eHkk+Guu2DtWjj+\n+OzPn3kGDj8cfvUr+MAHyrpWo0p85Stwyy3wwgv5P//DH+Dd74ZHHoH3vre62kqxcCFcey38I8RK\n1rvvhqlTYds22Guv+LUZdU17eztNTU0ATaraXms9rlBsbvKBvfeGOXMgx542DMNwnqjnJS+SSECf\n8XQq8IFixlMxOjo6OKO5mUs2bGBeby8C6KZNrFq8mDMeeoh73vEORpYTAzV4cPEYKIs7cZ/0Er5C\n1GgJXygqiYGqcjp2wzCSw9Ch7nugDMMwqoEXBpSIfB04E2gFOkVk/9RH21Q19JPtdXPmcMmGDUzu\n7d3dNjC5txfdsIHrX3uNeYccEl5YqSx8lkTCfbq7/TagHImBMgwj+fiwhM8wDKMa+BIDdR6wF/Ar\n4IWM18fLaWTtihVMyjCeMpnc28vanJiSkoTdByrEr/65MQqukxi9O3YUTmEO2WnMq0io/i0na2TM\nHqjEjAdH8U2vkRwyx96QIe4nkfDtXjG98WJ648U3vVHihQGlqg2qOijP644y2mBETw+FdsARYHhv\nLxpmU9I0pZbwlfGr//Tp08Of1wESo7fUEr4apTEP1b8OeaASMx4cxTe9RnLIHHs+eKB8u1dMb7yY\n3njxTW+UeGFARYGI0NnYSKGUGQp0iiDpzS7CEOESvnnz5oU/rwMkRq+jMVCh+tchD1RixoOj+KbX\nSA6ZY88HA8q3e8X0xovpjRff9EZJ3RhQABNaWlhVwMP0QEMDJ7z5zeXtA1VqCV8ZSSR8y8iUGL2l\nYqAGDw7+zlU2oEL1r0MeqMSMB0fxTa+RHDLHng9JJHy7V0xvvJjeePFNb5TUlQF12fz53DBuHCsb\nGvo8UQqsbGjgxnHjuPSww8qLgYpwCZ9RI0rFQEHweZVjoELhkAfKMIzk44MHyjAMoxrUlQE1cuRI\n7lm3jkdnzGDigQdyKjDxoIN4dMYM7lm3jpEilXugihlQ9tDqLqWW8EHwuatZ+MIaUGbMG4YxQHxI\nImEYhlEN6sqAgsCImnfTTTzY1sZ9wIO33sq8m25i5MiR5T2QQvBQGpEHasmSJeHP6wCJ0euoARWq\nf3ftCm/wx+yBSsx4cBTf9BrJIXPs+eCB8u1eMb3xYnrjxTe9UVJ3BlQfb34zMngwPP/87rJyHkgh\neCgNk8Y8hAHV3j7gTZGrSmL0dneXXsI3bFjVl/CF6l+HPFCJGQ+O4pteIzlkjj0fDCjf7hXTGy+m\nN1580xsl9WtADRoEBx2UbUBV4oEqtoSvjCQSixcvDn9eB0iM3jAeqD32qLoHKlT/OuSBSsx4cBTf\n9BrJIXPs+ZBEwrd7xfTGi+mNF9/0Rkn9GlAAo0YNzANVaglfOuOfxZ24i6NL+EJRjsFvSSQMwxgg\nPnigDMMwqoEZUAPxQJXKwpcut4dWdymVxhzcNaDKMfgtiYRhGAPEkkgYhmEE1LcB9Za3DNwD1dMT\n/L+Q4TVokD20uozPaczNA2UYRhUxD5RhGEZAfRtQaQ+UpnaFqiQGKt//c+uEMKBaW1vDn9cBEqPX\n0SV8ofrXIQ9UYsaDo/im10gOmWPPBwPKt3vF9MaL6Y0X3/RGiRlQnZ2wbVvwvpIsfGkKHTd4cKiH\n1hkzZoQ/rwMkQu+uXYEH0UEDKlT/OuSBSsR4cBjf9FYbEblARJ4TkW4ReUREjitRf4iIzBeRTSKy\nQ0T+LCLnZHx+uog8JiKviMg/ReQJEflUkfYuF5FeEbkhwstygsyx54MB5du9YnrjxfTGi296o6QM\nd0sCGTUq+Pf552HvvWvqgZo4cWL48zpAIvSmjSIH05iH6l+HPFCJGA8O45veaiIiU4HrgXOB9cDF\nwCoRGauqWwsc9kNgP2Aa8CxwINk/KL4MXA1sBF4HWoDviMgWVX0w5/zHpc79ZGQX5RBbRzNbAAAg\nAElEQVSZY8+HLHy+3SumN15Mb7z4pjdKzAMFu+OgKomBStNQoCstiYS7pA0oB9OYh8IhD5Rh1JCL\ngVtV9Q5V3QicB3QB0/NVFpHJwPuBKar6S1XdrKqPquq6dB1V/Y2q3q+qT6vqc6r6NeD3wAk5be0J\nfA/4LPBqLFfnED54oAzDMKpBfRtQBx4IIrsNqEqy8EFgJInkr2NJJNwlrAFlWfgMw0lEpBFoAn6R\nLlNVBX4ONBc4rAV4HPiCiDwvIk+LyP+ISMEvAhE5CRgL/Drno8XAClV9aACX4Q2Whc8wDCOgvg2o\nxkY44ICBe6CKHRPSgLrvvvvCn9cBEqHXYQMqVP865IFKxHhwGN/0VpF9gUHAlpzyLcABBY45jMAD\ndSRwGnAR8DECY6gPEdlLRDpE5HVgBTAz01ASkU8ARwNfjOA6nCVz7PnggfLtXjG98WJ648U3vVFS\n3wYUZO8FVWkMVDEDKmQSiaVLl4Y/rwMkQm86rsnBNOah+tchD1QixoPD+KbXcRqAXuAsVX1cVR8A\nLgE+LSJDM+p1AEcBxwJzgBtF5EQAERkFfBX4pKr2lCtgypQptLa2Zr2am5v7PYysXr06b5arCy64\ngCVLlmSVtbe309raytat2WFfc+fOZcGCBVllmzdvprW1lY0bN2aV33zzzcyaNSur7M4776S1tZU1\na9ZkGVBLly5l2rRp/bRNnTq1ptexdOnSvNfR1dXVdx2Z1Po6li5dWtbfo9bXkf4uGui4qtZ1pPXG\ndX9EfR2Z3/XVvM8rvY5MvS58X6WvY968eVnfr01NTUyZMqWftoEgmk7hnSBEZDzQ1tbWxvjx44tX\n/uhHg4fjlSvhjW+Eyy+H2bPDnWjaNLj9dhg5ErZvz19nzBg46yyYP7+cSzCqweOPw3HHwRNPwNFH\nF663YAEsXAgvv1w9bWE44QR429uCMViK9H5Xd94JnyqYTMwwIqG9vZ2mpiaAJlVtj+s8qSV8XcAZ\nqro8o/x24A2qenqeY24HjlfVsRllRwBPAWNV9dkC57oNGKWqHxaRU4EfA7uA9PrtQYCmyoZqnsm1\nrLnJQW69FT73OaW3N3vJuqoiGcvYc9+HqVPJMdZu7dtN4jVZu7VvNw6inpfqOwsfBB6oX/4y+H8c\nHihLIuEuDi/hC4VDHijDqAWq2iMibcBJwHIACWbhk4CvFThsLfAxERmuql2pssMJvFLPFzgGAs9V\n2kP1c+BdOZ/fDmwArs1nPPlMR0cHc+Zcx113rUV1BIce2snkyccCwqpVj9HTM4JBg7ax995DefXV\nHnbtGkljYyeTJhWvU8kx1m7t203iNVm7tW+3sbGTlpYJzJ9/GSNHjqzW11vlqGriXsB4QNva2rQk\n116ruvfewf+HD1f96ldLH5Pm3HNVQfVNbypcZ+xY1UsvDd+mUT1Wrw7+fs89V7zeLbeoNjSo9vZW\nRVZojj02GINh2LUruNZvfSteTYahqm1tbUrgjRmv8X/ff5zAC3U2cARwK0Ea8v1Sn18DfDej/gjg\nL8APgHHAicDTwC0ZdS4HTgbGpNq8FHgNmFZExy+BG0poDT83OcL27dv1yCNP0YaGlQq9Guw8v03h\nfQo/SZVtVzhF4adl1KnkGGu39u0m8Zqs3dq3qwq92tCwUo888hTdvn175N9lUc9LNTd24niVNUl9\n73tBN3R0qA4ZorpoUelj0px/fnDsm99cuM64caqf/3z4No3qsXx58Pd78cXi9b773aDea69VR1dY\njjlG9XOfC19fRPXWW+PTYxgpqmlAafCdfz6wCegG1gHHZnz2HeChnPpjgVXAP1PG1EKCZXfpz/8r\nZVR1AluBNcDHSmh4KIkG1MyZV6aMJ814Xamwssj7MHUqOcbarX27Sbwma7f27e5+NTT8TC+8cG7k\n32VmQIW5qHImqV/9KuiGjRtVBw1S/cY3Sh+TZubM4NiDDipc513vCuqV4Jxzzgl/XgdIhN677w7+\nfq++WvzgH/wgqLdtWzzi8hCqf0OOrT4aG1UXL65cVBESMR4cxje91TagfHn5aEDtueeBuvsX4vTr\npJyy3Pdh6lRyTJg6pjdevefU8NymN7l6M1+9euihJ0f+XRb1vGRZ+NKb6f7f/wXxIXHEQIWIO/Ft\nN+dE6C0nBiqzfhUI1b+VpN2PKQYqEePBYXzTayQDVaWx8UB258mA4PljREZZ7vswdSo5Jmy7pjc+\nvQCn1Ojcpje5enMRenqGo6oFPncDM6De8pbg382bg3/LeSDN3Ei3ECGTSJx55pnhz+sAidDb3R1s\ngDxkSPGD02nOq5jKPFT/VrLxc0wJTRIxHhzGN71GMhAR3vCGfQgeePpKCVY2aoH3YepUckzYdk1v\nfHoBzqrRuU1vcvXmojQ2dsaelW+gmAE1bBjsuy9s2hS8r5EHyqgBO3YEf/9SN2kNPFCh2LnTGQ+U\nYRjJpKVlAg0Nq3JKJxCEkBV6H6ZOJcdYu7Vvt5bntnaT2+5uGhoeoLX1hLyfOUUU6wBde1HuOvOj\nj1Y9++xg8eX3vx/uGFXVL30pOObwwwvXaW5W9Sx+oW5YsEB1n31K11u/Pvg7/+538Wsqh0MOUZ0z\nJ3z9N71J9ZprYpNjGGksBiqiuckBdmfh+5n2z6C1QrOzbP2kjDqVHGPt1r7dJF6TtVv7dlWhVxsa\nfuZNFj7bSBegpSXYCPc3v4Ef/AA+/vFwJ5o7F77yFXjHO+Cpp/LXOfFEOPRQuOOOok2tWbOGE07w\nwOJOkQi9X/kK3HILvPBC8YP/8Ad497vhkUfgve+NT2QGofp31Cj4zGfgqqvCNbr//nDhhTBnzsAF\n5pCI8eAwvumt1ka6vuHjRrpr1qzhqKOO4oorrmf58rX09AynsbGrbx+oBx54jJ6e4QwatJ199gn2\nedm5c89QdSo5plSdzs7XGD68MfJ2Te9uvXvuuUdNzl1Ju6bXH72NjV20tk7g6qsvjWUfKNtINw5G\njYKVK4P/l7skqtQxIZdNLVy40KsHpETo7e7eHd9UjBrEQIXq33KTnsQYA5WI8eAwvuk1ksPChQtZ\nvnw5N900j5tuClat5MYm5JZVUieqdltbW1m+fHnk7Zre/HqreW7TWz96fcBioCAwoJ5PbUBfiQFV\n7CE2ZBKJZcuWhT+vAyRCbzoGqhQ1iIEK1b8OxUAlYjw4jG96jeSQO/byPeTkllVSJ6p2TW919Vbz\n3Ka3fvT6gBlQEGTiSz9YlvuLPkTigRo+fHj48zpAIvQ6bECF6l+HPFCJGA8O45teIzn4NvZMb7yY\n3ngxvf5gBhTs3gsKaraEz6gB3d3hDKgaLOELhUMeKMMwDMMwjHrBDCjINqCiTmM+eLA9tLrKjh3h\nYqCGDt1d3yUc8kAZhmEYhmHUC2ZAwe7NdKGyjXRLxUCFMKBmzZoV/rwOkAi9YZfwDR4cvKpoQIXq\n33I30o3RA5WI8eAwvuk1koNvY8/0xovpjRfT6w9mQAGMHAlveEPw/zg20g3xq//o0aPDn9cBEqE3\nrAEFQb0qGlCh+nfXrvIN/pg8UIkYDw7jm14jOfg29kxvvJjeeDG9/mAGVJr0Mr4axUDNnDkz/Hkd\nIBF6w6Yxh6BeFWOgSvavavlL+EIa85WQiPHgML7pNZKDb2PP9MaL6Y0X0+sPZkClGTUKhZpl4TNq\ngMMeqJL09gb/luuBsrFoGIZhGIYxIOregOro6GDuhRdy8tq1nAacfPrpzL3wQjo6OkofHGYfKHto\ndRefDai0J8mSSBiGYRiGYVSVujagOjo6OKO5mebFi3nwn//kfuDBv/2N5sWLOaO5ubQRFeESvo0b\nN4YX7gCJ0Bs2jTlUfQlfyf5NjylH0pgnYjw4jG96jeTg29gzvfFieuPF9PpDXRtQ182ZwyUbNjC5\nt5f0HsgCTO7t5eING7j+iiuKNxBhEonZs2eH0uwKidAbNo05VN0DVbJ/HfNAJWI8OIxveo3k4NvY\nM73xYnrjxfT6Q10bUGtXrGBSOpYkh8m9vaxdvrx4AxHGQC1atKhkHZdIhF6Hl/CV7F/HPFCJGA8O\n45teIzn4NvZMb7yY3ngxvf5QtwaUqjKip6fP85SLAMN7elDVwo2EiYEK+dDqWyrIROh12IAq2b+O\neaASMR4cxje9RnLwbeyZ3ngxvfFiev2hbg0oEaGzsZFC5pECnY2NiBQysQi3hM+SSLiLwzFQJXHM\nA2UYhmEYhlEv1K0BBTChpYVVDfm74IGGBk5obS3eQNglfJb5zD127gxejsZAlcQxD5RhGIZhGEa9\nUNcG1GXz53PDuHGsbGjo80QpsLKhgRvHjePSq68u3kCEWfgWLFgQSrMreK/3tdeCfx1dwleyfx3z\nQHk/HhzHN71GcvBt7JneeDG98WJ6/aGuDaiRI0dyz7p1PDpjBhMPPZRT3/IWJh56KI/OmME969Yx\ncuTI4g1EGAPV1dVVhvLa473etDHk6BK+kv3rmAfK+/HgOL7pNZKDb2PP9MaL6Y0X0+sPUjRJgqeI\nyHigra2tjfHjx4c+TlWLxzzl8tBDcNJJcN558I1v5K/zpS/B0qXw3HPh2zXi5/nn4eCDYeVKmDy5\ndP2LL4bVq+Gpp+LXFoZnnoHDD4df/xpOPDHcMWedBS++GIxbw4iR9vZ2mpqaAJpUtb3Welyh0rnJ\nMAzDGBhRz0t17YHKpSzjCWJPIpFr3CbR2K0Z5XqgLAbKMAzDMAzDAMp4+jL6EeFGumk6Ojq4bs4c\n1q5YwYieHrYNGsTQvfem59VXGblrF52NjUxoaeGy+fNLLzE0CuO7AeVYDJRhGIZhGEa9YB6ogZD+\n9T+CGKitW7fS0dHBGc3NNC9ezIObNvG9v/6VIZs3c9Hvf88vNm/m/r/+lQc3baJ58WLOaG6mo6Mj\nogspn61bt9bs3JXQT286nsnRGKiS/euYB8r78eA4vuk1koNvY8/0xovpjRfT6w9mQA2ECLPwTZ8+\nnevmzOGSDRuY3NuLANcBlwBToG/DXwEm9/Zy8YYNXH/FFQOSPxCmT59es3NXQj+9aW+So2nMS/av\nYx4o78eD4/im10gOvo090xsvpjdeTK8/mAE1ECKMgZo3bx5rV6xgUm9vX9laYFKB+pN7e1m7fHl4\nrREzb968mp27EvrprXQJX5Xi0Er2r2MeKO/Hg+P4ptdIDr6NPdMbL6Y3XkyvP5gBNRDCbqQbwoA6\n5phjGNHT0+dpUmAEuz1PuQgwvKenZoklfMsg1U9vJWnMVeH116MVVoCS/Zs2hBzxQHk/HhzHN71G\ncvBt7JneeDG98WJ6/cEMqIEQdh+oEL/6iwidjY19G/oK0AkUMo8U6GxsLD9zoBGQjmcqZwkfuJNI\nIm0IOeKBMgzDMAzDqBfMgBoIEcZAAUxoaWFVhkE0AVhVoO4DDQ2c0NoaTqfRn0qW8GUeV2sc80AZ\nhmEYhmHUC2ZADYQIl/B961vf4rKLLuIGEVaKoMBlwA3AT9ntiVJgZUMDN44bx6VXXz0g+QNhyZIl\nNTt3JfTTu2MHiEBjY7gGqmxAlexfxzxQ3o8Hx/FNr5EcfBt7pjdeTG+8mF5/MANqIIRZwlckiURH\nRwdzL7yQk8eMYf7nP8/pRx/N+EGD+O055zDx0EP51FveQs/o0dx81FGcfMghnDpsGBOHDuXRGTO4\nZ926mu4D1d4+4E2cq0o/vTt2BEZR2CWQ6aV+VUplXrJ/HfNAeT8eHMc3vUZy8G3smd54Mb3xYnr9\nQWqVhCBORGQ80NbW1hZvgNvmzXDIIXDddXDppfnrfPvb8JnPBA+uDbvt1fSeT5ds2MCkVNpyBVaJ\ncMM73sE969ax5557ZsU46fXXI1dcAdu3h/ecGPlZsAAWLoSXXw5X//HH4bjj4Ikn4Oij49UWhhUr\noLUVXnwR9t8/3DFXXQXf/Cb89a/xajPqnvb2dpqamgCaVLV+Z9gcqjY3GYZhGFlEPS+ZB2oghF3C\nB/2WTuXu+QSpPZ5U+/Z4yk0QIRMmBJ6T3/0uGv31TNoDFRaLgTIMwzAMwzAwA2pgpB5etaFIN6Yf\ncHMeXHP3fMqk4B5PxxwDQ4fCww9XJNfIoFwDqspL+EriWAyUYRiGYRhGvWAGVIV0dHQw98tf5mTg\ntLlzOXnMGOZeeCEdHR3ZFfMYUKqatedTLgX3eBo6FI491gyoKOjuToYHqhwDyjxQhmEYhmEYA8YM\nqApIxy81L1nCg8D9r77Kg5s20bx4MWc0N2cbUekH3IwH19w9nwAyE5IX3ePp+OOdMKBaPUuh3k/v\njh3h94CCqhtQJfs3PZ7KWcIXowfK+/HgOL7pNZKDb2PP9MaL6Y0X0+sPZkBVQMH4pd7evvilPgos\n4ZvQ0sKqjKV/MzI+K7rH0/HHw/PPw//934CvYyDMmDGjdCWH6KfX8Riokv3rmAfK+/HgOL7pNZKD\nb2PP9MaL6Y0X0+sPZkBVQFnxSwWSSFx69dXcsO++rCTwOE0k5B5Pzc3BvzX2Qk2cOLGm5y+Xfnor\nNaCqFANVsn8d80B5Px4cxze9RnLwbeyZ3ngxvfFiev2hjJ+vDSgvfklEsjxQHR0dXDdnDmtXrGDE\njh28/tJLfHXffbluxAj23LmTrsZGJrS2cs/VVxfe42n//eGtbw0MqKlT47jE+qC7u7wlfIMGBanj\nXYqBEslKjV8SSyJhGIZhGIYxYMyAKpPM+KV8RlS/+KVBg1Dgn9u2ccYpp3DJhg3My9z36R//4Ib9\n9+fOhx9mr732CifCkTgor9mxA8L2d5phw9wxoHbtKs/7BEF9VejtLc/wMgzDMAzDMPqwp6gKyI1f\nyiQdv9TR0cHcCy/k5GnTOA2YcOyxXPTUUwXjps4966zwAo4/PtjQtbNzoJdSMffdd1/Nzl0J/fSW\nu4QPAo9VlZbwlezfnTvLi3+CvAlNosL78eA4vuk1koNvY8/0xovpjRfT6w9eGVAicoGIPCci3SLy\niIgcVwsdl82fzw3jxrGyoaEvk15m/NK5X/hCkKVv8WIe3LKF+4E3d3YypUB7k3t7Wfngg+EFHH88\n7NqFPvZYv49yU5/3S4UeUZ0FCxbE0m7V9HZ3o0OH9munKMOGoTkGVM36d9eu4vuP5SPlDc01oGw8\n1I/epFLu3CAiQ0RkvohsEpEdIvJnETkn4/PTReQxEXlFRP4pIk+IyKdy2viiiKwXke0iskVE7hWR\nsTFdYs3IN/ZcxvTGi+mNF9PrD94s4RORqcD1wLnAeuBiYJWIjFXVrdXUMnLkSO5Zt47rr7iCG5Yv\nZ3hPT1b8UmaWPgiMqxHkX/JHqnyPhobdcVNF6Ojo4LrbbmOtCCNOPZXON76RYydNQoDHVq1iRE8P\n2wYNYujee9Pz6quM3LWLzsbGSOpkvn/upZc4ecyYyNutmt7f/Y4Rf/wjnb/4BRNaWrhs/vyCcWd9\nsWsvvMCIm25i25131r5/N29mZHc3nWPGhNe/bBkjgM7DD+fYD3/YxkOd6O1sbCw5Rnymwrnhh8B+\nwDTgWeBAsn9QfBm4GtgIvA60AN8RkS2qmv616/3AzcDjBHPpNcBqERmnqo7suD1w9ttvv1pLKAvT\nGy+mN15Mr0eoqhcv4BHgpoz3AjwPzM5TdzygbW1tWg16e3uz3p906KHaG0Sb9L1Ogn5l6Vcv6L57\n7FHyPNu3b9dTjjxSVzY09LW1DfR9oD9JtbMd9BTQn2acL4o6ue9bYmq3mnrTfb+yoUFPOfJI3b59\ne8k+d61/y9Vfa70uj4ck6g0zRuKgra1NAQXGq0NzQ+rzycA/gL3LPE8bcFWRz/cFeoETitSp6twU\nBS0tLbWWUBamN15Mb7yY3viIel6quWEUSiQ0Aj1Aa0757cC9eerXbJLq7e3V1re8RXONpCtBV+aU\npV8/a2jQsWPGlGz7ypkzdWVDQ9F2850nijq571tiareaenP/BnMvvLBkn7vWv+Xqr7Vel8dDEvWG\nGSNxUC0Dqty5IfXZYmA1gcfoeeBp4H+AYUXOcxLQAXyoSJ23AbuAdxSpYwZUzJjeeDG98WJ64yPq\necmXGKh9gUHAlpzyLcAB1ZdTmMwsfZlcBtwA/Azyxk299YgjSradb/+ptcCkIu+jqpPEdjPpt39X\n+picPnetH8rVX2u91m51282k0BjxnErmhsMIlt8dCZwGXAR8jMCw6kNE9hKRDhF5HVgBzFTVh/I1\nKMHa668Ca1T1jxVei2EYhuEJ3sRAlckwgA0bNtTk5Ie9970s/stfOF6zzagvAwuBy4YPZ78RI9gx\neDBHf+ADfPn88/m3f/s32tvbC7apqvR0dvJEZhnBT69PFHgfVZ18x6wHDo+h3WrpzcfrnZ20tbX1\nxaHl9rlr/Vuu/lrrdXk8JFFvPnLHSFxkfPeWmeqyKjQQLLU7S1X/CSAilwA/FJHzVfW1VL0O4Chg\nTwIP1I0i8mdV/U2eNr8OvAOYUOLcwwBOOeUU3vnOd2Z98I9//INzzjmHD37wg31l69at4+677+bG\nG2/MqnvttddyxBFHcNppp/WVbdiwgW9+85tceeWV7LPPPn3lt9xyC8OGDeOcc87pK/vb3/7GwoUL\nufDCCxkzZkxf+bJly3jxxRf5/Oc/31f26KOP8oEPfICzzz6bY445pq/8gQce4JFHHmHevHlZ2i6/\n/HImTZpUs+tYv349s2fP7ncd3d3dfOlLX3LuOtavX89Pf/rT0H+PWl/H+vXraW9vH/C4qtZ1pPXG\ndX9EfR1pvWH/HrW+jky9Lnxfpa/j8MMP5+mnn+4rf+mll3jppZfSbyOZl0RzHvJdREQagS7gDFVd\nnlF+O/AGVT09p/5ZwPerKtIwDMPI5ZOqeldcjZc7N2R8dryqjs0oOwJ4Chirqs8WONdtwChV/XBO\n+SKCJBPvV9XNJfQeT+AoNAzDMGrDBFUd8GaqXnigVLVHRNoIfgVcDn1LJk4CvpbnkFXAJ4FNgCM7\nnxqGYdQNw4BDCb6LY6OCuQECA+ZjIjJcVbtSZYcTeKWeL3K6BiBr74OU8XQq8IFSxlOK3wFNIeoZ\nhmEY8bAxika88EABiMjHCQKDz2N3qtqPAUeo6t9rKM0wDMOoEaXmBhG5BjhIVT+dqj8C+CNB9r55\nBOnMbwN+qarnpepcTpCe/FkCo+kjwH8D56nqd1J1vg6cCbQCz2RI2qaq9sOdYRhGgvHCAwWgqneL\nyL7AV4D9CX7Jm2TGk2EYRv0SYm44ADg4o36niJxCsIfTYwR7Pv2AIEw1zQiCpBKjgG6CXyw/qao/\nyqhzHkHo2a9yJE0D7ojk4gzDMAwn8cYDZRiGYRiGYRiGUWt8SWNuGIZhGIZhGIZRc8yAMgzDMAzD\nMAzDCEkiDSgRuUBEnhORbhF5RESOq7UmABF5v4gsF5G/ikiviLTmqfMVEXlBRLpE5EEReVuNtH5R\nRNaLyHYR2SIi94rI2Dz1nNCb0nKeiDwpIttSr4dFZLKrejMRkctTY+KGnHJn9IrI3JTGzNcfc+o4\nozel5yARuVNEtqY0PSki43PqOKE59Z2V27+9InKza1pTWhpE5L9E5M8pPX8SkSvy1HNGcy1xdV4C\nm5ti1uvtvATuz002L8Wu1ealQqhqol7AVILU5WcDRwC3Av8A9nVA22SCQOdTgV1Aa87nX0hp/Vfg\nncB9BFmghtRA68+AfwfGAe8CfkKQFn4PF/Wm9Hwk1cdvBd4GXA28BoxzUW+G7uOAPxPsgXqDw/07\nF/g9QdayN6deb3RY797Ac8C3CFJHHwKcDIxxUTPwpox+fTNBKu5dBPsLOaU1pedLwEupe2408FFg\nOzDDxf6t5QuH56WUPpub4tPr5byU0ub83ITNS3HrtXmp0LlqcYExd94jwE0Z74Vgb4/ZtdaWo7M3\nzyT1AnBxxvu9CDJAfdwBvfumNJ/gg94MTS8D01zVC+wJPA18CPhlziTllN7URNVe5HPX9F4L/LpE\nHac052j7KvCMq1qBFcBtOWU/Au5wVXMN/5ZezEspbTY3xa/Z6XkppcOLucnmparrt3kp9UrUEj4J\ndqVvAn6RLtOgd34ONNdKVxhEZAxBut1M7duBR3FD+94EKXv/Ae7rTblxPwEMBx52WO9iYIWqPpRZ\n6LDet6eW+TwrIt8TkYPBWb0twOMicndqqU+7iHw2/aGjmoG+77JPAktS713U+jBwkoi8HUBEjgIm\nEHgIXNVcdXyel8CLv6M3c5NH8xL4NTfZvFQFbF7Kxpt9oEKyLzAI2JJTvoVgp3mXOYBgEsin/YDq\ny9mNiAjBrw5rVDW9tthJvSLyTmAdMAzoAE5X1adFpBnH9KYm0qOBY/N87GL/PgKcQ/Cr5IEEm5D+\nJtXnLuo9DPgccD0wH3gP8DUReU1V78RNzWlOB94AfDf13kWt1xL8crdRRHYRxNTOUdVlqc9d1FwL\nfJ6XwOG/oy9zk0/zEng3N9m8VD1sXsogaQaUEQ9fB95BYMW7zkbgKIKb/GPAHSJyYm0l9UdERhFM\n/Cerak+t9YRBVVdlvP1fEVkP/AX4OEG/u0YDsF5V0xukPpmaVM8D7qydrFBMB1aq6ou1FlKEqcBZ\nwCeAPxI8cN0kIi+kHgQMI258mZu8mJfAv7nJ5qWqYvNSBolawgdsJQhu2z+nfH/A5T84BPoEx7SL\nyCJgCvAvqvq3jI+c1KuqO1X1z6r6hKrOAZ4ELsI9vU0EQa/tItIjIj3AB4CLROR1gl9DXNLbD1Xd\nBjxDEBjtWv8C/A3YkFO2gSCwFNzUjIiMJggqvi2j2EWtC4FrVfWHqvqUqn4fuBH4YupzFzXXAp/n\nJXD07+jT3OTRvASez002L8WDzUv9SZQBlfq1pI0gSwjQ5+I/iWBdpLOo6nMEf7xM7Xvx/9u7/9C7\n6jqO489XaZobGY2MiLkyITNhliPBsOFaCEYJ/WVREyQowpZFiQnrxx8ZlCwoVlGy0U+1P6IfIGnW\n6I/yn6awWv6h2PpKLiY2bfmdadunPz6fi8frXZ5L+957vt89H3Dg+z3n3HNe3xZKFeEAAAWSSURB\nVHN373vvc8/9HLiYOWVvBepK4LJSykJ32RDzHseLgNMGmPdu6ghSF1LPTK4H/gD8AFhfSnmIYeV9\nniSrqUXqkQEeX4Df8fxLpN5APTs55H/D11D/k3LHaMZAs55BbQy6jtHqykAzz9xyrkswzOdxBdSm\nodYlWOa1ybq0ZKxL4+YxSsZSTtSPbRd57nCxjwGvHEC2VdQ3owvbE3pd+31tW359y/pu6hvYT4EH\nmM/Qld8ADgGXUjvz0XR6Z53B5G15bmp511GHpvwS8B9g0xDzTsg/PtLRoPICXwHe3o7vJcCvqG+o\nawaadwN1uODPUIcQfj/1+wdXDfgYhzok8xcnLBta1l3AAvVTgHXU6+MPAjcNNfO8piHXpZbP2rR0\neZd1XWoZB1ubrEszyWxdmrSvefyBMziAH21P9hHqFzc3zDtTy7WxFaejY9POzjqfpw6xuAjcCZw7\np6yTch4FtoytN4i8Lcst1HtWHKGeYbhrVKSGmHdC/t90i9TQ8gK3UodePtLeoH5E594VQ8vb8lxB\nvUfIIrAPuGbCOoPJDLyzvc4mZhhY1lXAduo9TZ5sBegLwClDzTzPaah1qWWzNi1d3mVdl1q+wdYm\n69JM8lqXJkxpG5IkSZIkvYAV9R0oSZIkSVpKNlCSJEmS1JMNlCRJkiT1ZAMlSZIkST3ZQEmSJElS\nTzZQkiRJktSTDZQkSZIk9WQDJUmSJEk92UBJkiRJUk82UNIyleQvSbbOO4ckSSPWJp0MbKCkHpLs\nSvKT9vPuJNtnuO+rkxyasGgD8O1Z5ZAkDYu1SZqPU+YdQDpZJTm1lPJMn1WBMj6zlPLYiU8lSTqZ\nWZukF+YnUNIUkuwCNgIfT3IsydEkZ7dlFyS5I8nhJH9P8r0kazqP3Z3k60m+muRR4Jdt/ieS7E3y\nryQLSXYkOaMt2wjsBM7s7O+zbdlzLpNIsjbJz9r+n0hye5KzOss/l+S+JB9oj308ya1JVs3g0EmS\nloi1SZotGyhpOluBe4DvAK8CXg08nORM4NfAHuAtwOXAWcCPxx6/Bfg3cAnwkTbvKPAx4Py2/DLg\ny23Z74HrgH929nfzeKgkAX4OvBy4FNgMnAPcNrbq64ErgSuAd1EL7g1THQFJ0tBYm6QZ8hI+aQql\nlMNJngYWSymPjuYnuRa4t5SyrTPvQ8BCknNLKQ+22Q+UUm4Y2+bXOr8uJNkGfBO4tpTyTJIn6mrP\n7m+CzcCbgNeWUh5p+98C7EtyUSllzygWcHUpZbGt833gHcC2CduUJC0D1iZptmygpBNjPbApyeGx\n+YV6Zm1UpPaMLSfJZuqZtvOAl1Ffl6clOb2U8lTP/Z8HPDwqUACllPuTPA68sbPf/aMC1Rygno2U\nJK081iZpCdhASSfGauplCtdTz6R1Hej8/GR3QZJ1wC+AHcCNwD+olzncArwE6Fuk+hr/YnDBS3kl\naaWyNklLwAZKmt7TwIvH5t0LvBf4aynl2BTbughIKeVToxlJruqxv3H3A2uTvKaU8re2nfOp153v\nmyKPJGl5sjZJM2J3L01vP3BxknWdkYx2AK8AbkuyIck5SS5PsrN9ifZ4HgROTbI1yeuSfBD48IT9\nrU6yKcmaJC8d30gp5W7gT8APk7w5yVuB7wK7Syn3/V9/rSRpOdiPtUmaCRsoaXo3U0cn+jNwMMnZ\npZQDwNuor6k7gb3AduBQKWV0n4xJ98vYC3ySennFH4H3MTbyUCnlHuBbwO3AQeDTx9nee4BDwG+B\nu6gFcPyMoSRpZbI2STOSZ18/kiRJkqT/xU+gJEmSJKknGyhJkiRJ6skGSpIkSZJ6soGSJEmSpJ5s\noCRJkiSpJxsoSZIkSerJBkqSJEmSerKBkiRJkqSebKAkSZIkqScbKEmSJEnqyQZKkiRJknr6Lxbm\nkr3Mx/OpAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10322ea58>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# it may take a minute\n",
"opt.run_optimization(max_iter=70)\n",
"opt.plot_convergence()"
]
},
{
"cell_type": "code",
"execution_count": 166,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Misclassification rate: 0.433628318584\n"
]
}
],
"source": [
"# Predict using best parameters found:\n",
"x_best = np.exp(opt.X[np.argmin(opt.Y)])\n",
"svc = svm.SVC(C=x_best[0], gamma=x_best[1])\n",
"svc.fit(traindata.ix[:, 2:], traindata.diagnosis)\n",
"Y_test_pred = svc.predict(testdata.ix[:, 2:])\n",
"print('Misclassification rate:', \n",
" np.sum(testdata.diagnosis != Y_test_pred) / testdata.shape[0])"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#Part 2"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Student Sample 1"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"My comments:\n",
"\n",
"The code doesn't run. The following things should be fixed to get it to run:\n",
"- It should say \"from sklearn.linear_model import LinearRegression\"\n",
"- \"d\" should be \"data\" to match up with the later lines\n",
"- Cross-validation requires you to split up the training set into at least 2 parts to test out-of-sample. So you need to set cv>1. I would recommend cv=10.\n",
"\n",
"There was also a warning. To fix this:\n",
"- mean_absolute_error was renamed to neg_mean_absolute_error and will be deprecated soon, so should change this.\n",
"- sklearn.cross_validation.cross_val_score might be deleted in a future release, so should instead use sklearn.model_selection.cross_val_score\n",
"\n",
"Most of the ContractType's are missing, which you can see by running \"sum(pd.isnull(data.ContractType)) / data.shape[0]\". For these missing values, we don't know whether they're full time or part time, so you shouldn't use them to train the model. \n",
"\n",
"Also, one of the assumptions of ordinary least squares (i.e., linear regression), is that the regressors are linearly independent. Thus, you have to leave off one of the categories when converting to dummies.\n",
"\n",
"I also should mention that mean absolute error (MAE) is not the best cross-validation metric to use here because it doesn't take the variance into account. The linear regression model minimizes the mean squared error (MSE) by construction, so you should do cross-validation using the MSE. If you really want to use a linear model to predict the MAE out-of-sample, you should use the least absolute deviations (LAD) model, which is constructed to minimize the MAE and can be imported via \"statsmodels.regression.quantile_regression import QuantReg\". \n",
"https://github.com/statsmodels/statsmodels/blob/master/examples/notebooks/quantile_regression.ipynb\n",
"https://en.wikipedia.org/wiki/Least_absolute_deviations\n",
"\n",
"Also, just as general practice, you should import all libraries at the beginning of the code. This prevents you from accidentally importing a library twice, which was done here, and makes it easier to read. There were also some unnecessary libraries that were imported.\n",
"\n",
"The code corrected for errors and warnings is below:"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-11193.3080865\n"
]
}
],
"source": [
"#!/usr/bin/env python\n",
"\n",
"import pandas as pd\n",
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.model_selection import cross_val_score\n",
"\n",
"# Load data\n",
"data = pd.read_csv('../data/train.csv')\n",
"\n",
"# Remove rows where ContractType is missing\n",
"data = data[pd.notnull(data['ContractType'])]\n",
"\n",
"# Setup data for prediction\n",
"x1 = data.SalaryNormalized\n",
"x2 = pd.DataFrame(pd.get_dummies(data.ContractType).ix[:, 0])\n",
"\n",
"# Setup model\n",
"model = LinearRegression()\n",
"\n",
"# Evaluate model\n",
"scores = cross_val_score(model, x2, x1, cv=10, scoring='neg_mean_absolute_error')\n",
"print(scores.mean())"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Student Sample 2"
]
},
{
"cell_type": "raw",
"metadata": {},
"source": [
"My comments:\n",
"\n",
"warnings:\n",
"- sklearn.cross_validation.cross_val_score might be deleted in a future release, so should instead use sklearn.model_selection.cross_val_score\n",
"- mean_absolute_error was renamed to neg_mean_absolute_error and will be deprecated soon, so should change this.\n",
"\n",
"Most of the ContractType's are missing, which you can see by running \"sum(pd.isnull(data.ContractType)) / data.shape[0]\". For these missing values, we don't know whether they're full time or part time, so you shouldn't use them to train the model. \n",
"\n",
"Also, one of the assumptions of ordinary least squares (i.e., linear regression), is that the regressors are linearly independent. Thus, you have to leave off one of the categories when converting to dummies.\n",
"\n",
"I also should mention that mean absolute error (MAE) is not the best cross-validation metric to use here because it doesn't take the variance into account. The linear regression model minimizes the mean squared error (MSE) by construction, so you should do cross-validation using the MSE. If you really want to use a linear model to predict the MAE out-of-sample, you should use the least absolute deviations (LAD) model, which is constructed to minimize the MAE and can be imported via \"statsmodels.regression.quantile_regression import QuantReg\". \n",
"https://github.com/statsmodels/statsmodels/blob/master/examples/notebooks/quantile_regression.ipynb\n",
"https://en.wikipedia.org/wiki/Least_absolute_deviations\n",
"\n",
"Also, numpy doesn't need to be imported."
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-11288.4524487\n"
]
}
],
"source": [
"#!/usr/bin/env python\n",
"\n",
"import pandas as pd\n",
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.model_selection import cross_val_score\n",
"\n",
"# Load data\n",
"data = pd.read_csv('../data/train.csv')\n",
"\n",
"# Remove rows where ContractType is missing\n",
"data = data[pd.notnull(data['ContractType'])]\n",
"\n",
"# Setup data for prediction\n",
"y = data.SalaryNormalized\n",
"X = pd.get_dummies(data.ContractType)\n",
"\n",
"# Setup model\n",
"model = LinearRegression()\n",
"\n",
"# Evaluate model\n",
"scores = cross_val_score(model, X, y, cv=5, scoring='neg_mean_absolute_error')\n",
"print(scores.mean())"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [conda root]",
"language": "python",
"name": "conda-root-py"
},
"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.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment