{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Logistic Regression\n",
"\n",
"Linear regression allows to model relationships between **continuos independent and dependent variables** and **between qualitative independent variables and continuous variables**. However, it does not allow to model relationships between continuous or qualitative independent variables and **qualitative dependent variables**.\n",
"\n",
"## Example Data\n",
"Establishing such relationships is useful in different contexts. For instance, let us consider the [Breast Cancer Wisconsin](https://archive.ics.uci.edu/dataset/17/breast+cancer+wisconsin+diagnostic) dataset:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
radius1
\n",
"
texture1
\n",
"
perimeter1
\n",
"
area1
\n",
"
smoothness1
\n",
"
compactness1
\n",
"
concavity1
\n",
"
concave_points1
\n",
"
symmetry1
\n",
"
fractal_dimension1
\n",
"
...
\n",
"
texture3
\n",
"
perimeter3
\n",
"
area3
\n",
"
smoothness3
\n",
"
compactness3
\n",
"
concavity3
\n",
"
concave_points3
\n",
"
symmetry3
\n",
"
fractal_dimension3
\n",
"
Diagnosis
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
17.99
\n",
"
10.38
\n",
"
122.80
\n",
"
1001.0
\n",
"
0.11840
\n",
"
0.27760
\n",
"
0.30010
\n",
"
0.14710
\n",
"
0.2419
\n",
"
0.07871
\n",
"
...
\n",
"
17.33
\n",
"
184.60
\n",
"
2019.0
\n",
"
0.16220
\n",
"
0.66560
\n",
"
0.7119
\n",
"
0.2654
\n",
"
0.4601
\n",
"
0.11890
\n",
"
M
\n",
"
\n",
"
\n",
"
1
\n",
"
20.57
\n",
"
17.77
\n",
"
132.90
\n",
"
1326.0
\n",
"
0.08474
\n",
"
0.07864
\n",
"
0.08690
\n",
"
0.07017
\n",
"
0.1812
\n",
"
0.05667
\n",
"
...
\n",
"
23.41
\n",
"
158.80
\n",
"
1956.0
\n",
"
0.12380
\n",
"
0.18660
\n",
"
0.2416
\n",
"
0.1860
\n",
"
0.2750
\n",
"
0.08902
\n",
"
M
\n",
"
\n",
"
\n",
"
2
\n",
"
19.69
\n",
"
21.25
\n",
"
130.00
\n",
"
1203.0
\n",
"
0.10960
\n",
"
0.15990
\n",
"
0.19740
\n",
"
0.12790
\n",
"
0.2069
\n",
"
0.05999
\n",
"
...
\n",
"
25.53
\n",
"
152.50
\n",
"
1709.0
\n",
"
0.14440
\n",
"
0.42450
\n",
"
0.4504
\n",
"
0.2430
\n",
"
0.3613
\n",
"
0.08758
\n",
"
M
\n",
"
\n",
"
\n",
"
3
\n",
"
11.42
\n",
"
20.38
\n",
"
77.58
\n",
"
386.1
\n",
"
0.14250
\n",
"
0.28390
\n",
"
0.24140
\n",
"
0.10520
\n",
"
0.2597
\n",
"
0.09744
\n",
"
...
\n",
"
26.50
\n",
"
98.87
\n",
"
567.7
\n",
"
0.20980
\n",
"
0.86630
\n",
"
0.6869
\n",
"
0.2575
\n",
"
0.6638
\n",
"
0.17300
\n",
"
M
\n",
"
\n",
"
\n",
"
4
\n",
"
20.29
\n",
"
14.34
\n",
"
135.10
\n",
"
1297.0
\n",
"
0.10030
\n",
"
0.13280
\n",
"
0.19800
\n",
"
0.10430
\n",
"
0.1809
\n",
"
0.05883
\n",
"
...
\n",
"
16.67
\n",
"
152.20
\n",
"
1575.0
\n",
"
0.13740
\n",
"
0.20500
\n",
"
0.4000
\n",
"
0.1625
\n",
"
0.2364
\n",
"
0.07678
\n",
"
M
\n",
"
\n",
"
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
\n",
"
\n",
"
564
\n",
"
21.56
\n",
"
22.39
\n",
"
142.00
\n",
"
1479.0
\n",
"
0.11100
\n",
"
0.11590
\n",
"
0.24390
\n",
"
0.13890
\n",
"
0.1726
\n",
"
0.05623
\n",
"
...
\n",
"
26.40
\n",
"
166.10
\n",
"
2027.0
\n",
"
0.14100
\n",
"
0.21130
\n",
"
0.4107
\n",
"
0.2216
\n",
"
0.2060
\n",
"
0.07115
\n",
"
M
\n",
"
\n",
"
\n",
"
565
\n",
"
20.13
\n",
"
28.25
\n",
"
131.20
\n",
"
1261.0
\n",
"
0.09780
\n",
"
0.10340
\n",
"
0.14400
\n",
"
0.09791
\n",
"
0.1752
\n",
"
0.05533
\n",
"
...
\n",
"
38.25
\n",
"
155.00
\n",
"
1731.0
\n",
"
0.11660
\n",
"
0.19220
\n",
"
0.3215
\n",
"
0.1628
\n",
"
0.2572
\n",
"
0.06637
\n",
"
M
\n",
"
\n",
"
\n",
"
566
\n",
"
16.60
\n",
"
28.08
\n",
"
108.30
\n",
"
858.1
\n",
"
0.08455
\n",
"
0.10230
\n",
"
0.09251
\n",
"
0.05302
\n",
"
0.1590
\n",
"
0.05648
\n",
"
...
\n",
"
34.12
\n",
"
126.70
\n",
"
1124.0
\n",
"
0.11390
\n",
"
0.30940
\n",
"
0.3403
\n",
"
0.1418
\n",
"
0.2218
\n",
"
0.07820
\n",
"
M
\n",
"
\n",
"
\n",
"
567
\n",
"
20.60
\n",
"
29.33
\n",
"
140.10
\n",
"
1265.0
\n",
"
0.11780
\n",
"
0.27700
\n",
"
0.35140
\n",
"
0.15200
\n",
"
0.2397
\n",
"
0.07016
\n",
"
...
\n",
"
39.42
\n",
"
184.60
\n",
"
1821.0
\n",
"
0.16500
\n",
"
0.86810
\n",
"
0.9387
\n",
"
0.2650
\n",
"
0.4087
\n",
"
0.12400
\n",
"
M
\n",
"
\n",
"
\n",
"
568
\n",
"
7.76
\n",
"
24.54
\n",
"
47.92
\n",
"
181.0
\n",
"
0.05263
\n",
"
0.04362
\n",
"
0.00000
\n",
"
0.00000
\n",
"
0.1587
\n",
"
0.05884
\n",
"
...
\n",
"
30.37
\n",
"
59.16
\n",
"
268.6
\n",
"
0.08996
\n",
"
0.06444
\n",
"
0.0000
\n",
"
0.0000
\n",
"
0.2871
\n",
"
0.07039
\n",
"
B
\n",
"
\n",
" \n",
"
\n",
"
569 rows × 31 columns
\n",
"
"
],
"text/plain": [
" radius1 texture1 perimeter1 area1 smoothness1 compactness1 \\\n",
"0 17.99 10.38 122.80 1001.0 0.11840 0.27760 \n",
"1 20.57 17.77 132.90 1326.0 0.08474 0.07864 \n",
"2 19.69 21.25 130.00 1203.0 0.10960 0.15990 \n",
"3 11.42 20.38 77.58 386.1 0.14250 0.28390 \n",
"4 20.29 14.34 135.10 1297.0 0.10030 0.13280 \n",
".. ... ... ... ... ... ... \n",
"564 21.56 22.39 142.00 1479.0 0.11100 0.11590 \n",
"565 20.13 28.25 131.20 1261.0 0.09780 0.10340 \n",
"566 16.60 28.08 108.30 858.1 0.08455 0.10230 \n",
"567 20.60 29.33 140.10 1265.0 0.11780 0.27700 \n",
"568 7.76 24.54 47.92 181.0 0.05263 0.04362 \n",
"\n",
" concavity1 concave_points1 symmetry1 fractal_dimension1 ... \\\n",
"0 0.30010 0.14710 0.2419 0.07871 ... \n",
"1 0.08690 0.07017 0.1812 0.05667 ... \n",
"2 0.19740 0.12790 0.2069 0.05999 ... \n",
"3 0.24140 0.10520 0.2597 0.09744 ... \n",
"4 0.19800 0.10430 0.1809 0.05883 ... \n",
".. ... ... ... ... ... \n",
"564 0.24390 0.13890 0.1726 0.05623 ... \n",
"565 0.14400 0.09791 0.1752 0.05533 ... \n",
"566 0.09251 0.05302 0.1590 0.05648 ... \n",
"567 0.35140 0.15200 0.2397 0.07016 ... \n",
"568 0.00000 0.00000 0.1587 0.05884 ... \n",
"\n",
" texture3 perimeter3 area3 smoothness3 compactness3 concavity3 \\\n",
"0 17.33 184.60 2019.0 0.16220 0.66560 0.7119 \n",
"1 23.41 158.80 1956.0 0.12380 0.18660 0.2416 \n",
"2 25.53 152.50 1709.0 0.14440 0.42450 0.4504 \n",
"3 26.50 98.87 567.7 0.20980 0.86630 0.6869 \n",
"4 16.67 152.20 1575.0 0.13740 0.20500 0.4000 \n",
".. ... ... ... ... ... ... \n",
"564 26.40 166.10 2027.0 0.14100 0.21130 0.4107 \n",
"565 38.25 155.00 1731.0 0.11660 0.19220 0.3215 \n",
"566 34.12 126.70 1124.0 0.11390 0.30940 0.3403 \n",
"567 39.42 184.60 1821.0 0.16500 0.86810 0.9387 \n",
"568 30.37 59.16 268.6 0.08996 0.06444 0.0000 \n",
"\n",
" concave_points3 symmetry3 fractal_dimension3 Diagnosis \n",
"0 0.2654 0.4601 0.11890 M \n",
"1 0.1860 0.2750 0.08902 M \n",
"2 0.2430 0.3613 0.08758 M \n",
"3 0.2575 0.6638 0.17300 M \n",
"4 0.1625 0.2364 0.07678 M \n",
".. ... ... ... ... \n",
"564 0.2216 0.2060 0.07115 M \n",
"565 0.1628 0.2572 0.06637 M \n",
"566 0.1418 0.2218 0.07820 M \n",
"567 0.2650 0.4087 0.12400 M \n",
"568 0.0000 0.2871 0.07039 B \n",
"\n",
"[569 rows x 31 columns]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from ucimlrepo import fetch_ucirepo \n",
"from matplotlib import pyplot as plt\n",
" \n",
"# fetch dataset \n",
"breast_cancer_wisconsin_diagnostic = fetch_ucirepo(id=17) \n",
" \n",
"# data (as pandas dataframes) \n",
"X = breast_cancer_wisconsin_diagnostic.data.features \n",
"y = breast_cancer_wisconsin_diagnostic.data.targets \n",
"\n",
"data = X.join(y)\n",
"data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The dataset contains several measurements of given quantities measured from digitized image of a fine needle aspirate (FNA) of a breast mass, together with a categorical variable `Diagnosis` with two levels: `M` (malignant) and `B` (benign).\n",
"\n",
"In this case, it would be good to be able to study whether a relationship exists between some of the considered independent variables and the dependent variable. \n",
"\n",
"We will consider the `radius1` variable for the moment. Let us plot this variable with respect to `Diagnosis`:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"data.plot.scatter(x='radius1',y='Diagnosis', figsize=(8,6))\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From the plot above, we can note that there is some form of relationship between the two variables. Indeed:\n",
"* For low values of `radius1`, we tend to have more benign cases;\n",
"* For large values of `radius1`, we tend to have more malignant cases.\n",
"\n",
"## Limits of Linear Regression\n",
"Of course, we would like to quantify this relationship in a more formal way.\n",
"**As in the case of a linear regressor, we want to define a model which can predict the independent variable $y$ from the dependent variables $x_i$. If such model gives good predictions, than we can trust its interpretation as a means of studying the relationship between the variables.**\n",
"\n",
"We can think of converting `B => 1` and `M => 0`, and then compute a linear regressor:\n",
"\n",
"$$Diagnosis = \\beta_0 + \\beta_1 radius1$$\n",
"\n",
"This would be the result:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import seaborn as sns\n",
"data['Diagnosis']=data['Diagnosis'].replace({'B':0,'M':1})\n",
"plt.figure(figsize=(8,6))\n",
"sns.regplot(x=data['radius1'],y=data['Diagnosis'], ci=None, line_kws={'color':'red'})\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can immediately see that this function does not model the relationship between the two variables very well. While we obtain a statistically relevant regressor with $R^2=0.533$ and statistically relevant coefficients, the residual plot will look like this:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from statsmodels.formula.api import ols\n",
"import statsmodels.api as sm\n",
"#ols(\"Diagnosis ~ radius1\", data).fit().summary()\n",
"fitted=ols(\"Diagnosis ~ radius1\", data).fit().fittedvalues\n",
"plt.figure(figsize=(10,6))\n",
"sns.residplot(x=fitted, y='Diagnosis', data=data.dropna(),lowess=True,line_kws={'color': 'red', 'lw': 1, 'alpha': 0.8})\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The correlation between the residuals and the independent variable is a strong indication that the true relationship between the two variables is not correcly modeled. After all, from a purely predictive point of view, we are using a linear regressor which takes the form:\n",
"\n",
"$$f:\\mathbb{R} \\to \\mathbb{R}$$\n",
"\n",
"while the values `Diagnosis` variable belong to the set $\\{0,1\\}$ and we would need instead a function with the following form:\n",
"\n",
"$$f:\\mathbb{R} \\to \\{0,1\\}$$\n",
"\n",
"However, the linear regressor cannot directly predict **discrete values**. \n",
"\n",
"**In practice, while with a linear regressor we wanted to predict continuous values, now we want to assign observations $\\mathbf{x}$ to discrete bins (in this case only two possible ones). As we will better study later in the course, this problem is known as classification.**\n",
"\n",
"## From Binary Values to Probabilities\n",
"If we want to model some form of continuous value, we could think to transition from $\\{0,1\\}$ to $[0,1]$ using probabilities, which is a way to turn discretized values to \"soft\" values indicating our belief in the fact that `Diagnosis` will take either a $0$ or $1$ value. We could hence think to model the following probability, rather than modeling `Diagnosis` directly:\n",
"\n",
"$$P(Diagnosis=1| radius1)$$\n",
"\n",
"However, even in this case, a model of the form:\n",
"\n",
"$$P(Diagnosis=1|radius1) = \\beta_0 + \\beta_1 radius1$$\n",
"\n",
"Would not be appropriate. Indeed, while $P(Diagnosis=1| radius1)$ needs to be in the $[0,1]$ range, the linear combination $\\beta_0 + \\beta_1 radius1$ will naturally output values **smaller than $0$** and **larger than $1$**. How should we interpret such values?\n",
"\n",
"Intuitively, we would expect to $P(Diagnosis=1| radius1)$ to assume values in the $[0,1]$ range for intermediate values (say `radius` $\\in [10,20]$), while for extremely low values of (say `radius` $<10$) the probability **should saturate to $0$** and for extremely large values (say `radius` $>20$) the probability should saturate to 1.\n",
"\n",
"When `radius1` takes large values (say larger than $20$), we expect **probability to saturate to $1$**.\n",
"\n",
"In practice, we would expect a result similar to the following:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(8,6))\n",
"sns.regplot(x=data['radius1'],y=data['Diagnosis'], logistic=True, ci=None, line_kws={'color':'red'})\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As can be noted, the function above is not linear, and hence it cannot be fit with a linear regressor. However, we have seen that a linear regressor can be tweaked to also represent nonlinear functions."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The Logistic Function\n",
"Similarly to polynomial regression, we need to find a **transformation of the formulation of the linear regressor to transform its output into a nonlinear function of the independent variables**. Of course, we do not want *any* transformation, but one that has the previously highlighted properties. \n",
"\n",
"In practice the **logistic function has some nice properties that, as we will se in a moment, allow to easily interpret the resulting model in a probabilistic way**. The logistic function is defined as:\n",
"\n",
"$$f(x) = \\frac{1}{1+e^{-x}}$$\n",
"\n",
"and has the following shape:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfEAAAGDCAYAAAA72Cm3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAA2Z0lEQVR4nO3deZgU5bn+8e/DDCPbAIqIbApEY0CDENaAxkEwbrhG4xbEDQ+JxPjTY4KJx5gYIzkxcYmihyMGzVHABFxQcFwiLgkkoIKKqAFFISKbCjMg28zz++PtwZ6hh1nomuruuT/XVVd1dVVXP28XzN31di3m7oiIiEj2aRJ3ASIiIlI/CnEREZEspRAXERHJUgpxERGRLKUQFxERyVIKcRERkSylEBfZC2Z2r5n9Vz1ed5CZlZpZXhR1RcnM5pjZ6IjW/W0ze6yWy/7UzO6Loo69eV8zW2FmIxKPrzSzCQ1XnTQ2pvPEpbEwsxXAZe7+XLa+t5ldBEwGvkh6eoq7j9ub9e7h/W4EDnH370Wx/hTvtxAY5+7zE9OnAb8AegDbgcXApe6+oiHqqY/kbW1mzYBlwDfcfW28lUkuyo+7ABGps3nuflTcRaSbmQ0A2iQF+CHAg8CZwF+BVsC3gfLYiqwjd99qZnOAC4Fb465Hco+606XRM7N9zOx2M/s4MdxuZvskzf+xma1OzLvMzDwRMJjZFDP7VeLx/mb2pJl9bmafmtnLZtbEzP4EHATMSnSh/9jMuiXWk5947X5m9sfEe3xW2y7lpBovMrNXqjxXtc67zewpMysxs3+Y2VeSlj3czJ5N1L0m0WV8AvBT4JxE3YsTy841s8sSj5uY2fVm9qGZrTWzB82sTWJeRRtHm9lHZrbezH62h2acCLyYNN0H+MDdn/egxN1nuPtHifXfaGb/l9SGCxN1bDCz/6rSrX2jmf3ZzP4v0f43zeyrZnZdou6VZvbtpHV1MrMnEp/HMjMbkzSv6vuOSnrfVO2bC5y8h3aL1JtCXAR+BgwmhMaRwEDgeoBEkF0NjAAOAY7Zw3quAVYB7YEOhAB0dx8FfASc4u6t3P2/U7z2T0AL4HDgAOC2vW7V7s4jdE3vS+jivRnAzAqB54CngU6Edj7v7k8DvwamJ+o+MsU6L0oMwwhd3q2Au6oscxRwGDAcuMHMelZT39eBd5OmXwO+Zma3mdkwM2tVXcPMrBcwEbgA6Ai0ATpXWewUwue8L/A6UEz4G9gZ+CXwP0nLTiVsy07AWcCvzWx4Ne97DzAqsWw7oEuVxZYS/l2JpJ1CXCT84f+lu69193WEoBuVmPdd4I/uvsTdtyTmVWcHIUAOdvcd7v6y1+KgEzPrSNgLHevunyVe++IeXjI4sbdfMQyuTSOBme7+T3ffCTxE+NICMBL4xN1/5+5bE3u8/6jlOi8Afu/u77t7KXAdcG5FD0PCL9z9C3dfTPhNu7pAawuUVEy4+/tAESFkHwHWJ3oUUoX5WcAsd3/F3bcDNwBVP/uX3b040f4/E75sTXD3HcA0oJuZtTWzroQvHj9JfB6LgPv48t9E1fd90t1fcvdtwH+xe3d/CeFLhUjaKcRFwh7Uh0nTHyaeq5i3Mmle8uOqfkvYw33GzN43s/G1fP+uwKfu/lktl5/v7m2Thvm1fN0nSY+3EPaaK95/eS3XUVWqzy6f0BNR0/tW9RlQmPyEu8939++6e3vgaOBbhJ6TVHWsTHrdFmBDlWXWJD3+Aljv7mVJ0yRq60TYHiVJy3/I7nv2qd53c4r3LQQ2pnityF5TiIvAx8DBSdMHJZ4DWE3l7tGu1a0ksQd7jbv3IHTdXp3UBbunPfKVwH5m1rauhSfZTOiOB8DMDqzDa1cCX6lmXk09Cak+u51UDszaegP4anUz3X0BMBM4IsXsStvJzJoTurbr42PC9kj+QnEQ8O9q3nfXvwkza5HifXsSeiBE0k4hLo1NUzNrljTkE37/vN7M2pvZ/oSu2IoDlx4BLjaznok/0DdUt2IzG2lmh5iZAZuAssQAIdR6pHqdu68G5gATzWxfM2tqZt+qY7sWA4ebWR8LpzXdWIfXPgkcaGZXWTjIr9DMBiXV3c3MqvtbMRX4f2bWPdHNXfEb+s461g8wm6RjDszsKDMbY2YHJKa/BpwKpOp5+AtwipkNMbMCws8eVo8acPeVwN+BWxL/RnoDlxJ+gkj1viMTtRYQfluv+lkdQ9i+ImmnEJfGZjah67RiuBH4FbCQsCf4JuGAql8BuPsc4E7gBUJX+bzEeralWPehhAPEShPLTXT3uYl5txC+KHxuZv+Z4rWjCL+pvwOsBa6qS6Pc/T1CgDwH/At4Zc+vqPTaEuA4Qu/BJ4nXD0vM/nNivMHMXkvx8vsJB4u9BHwAbAV+WJfak+p4DdiY9AXic0Jov2lmpYQD7x4Fdjsw0N2XJN53GmHvuITwOabaTrVxHtCNsFf+KPBzd3+2mve9Ang48b6fEQ6IAyDxheok4IF61iGyR7rYi0gdJI6sfgvYp557m7IHidO8fuDup+/leloRvgQc6u4fpKG0+tbxQ6Cru/84rhoktynERWpgZmcATwEtCXtU5XsbMpJ+ZnYK8DyhG/13wCDCldL0R05ylrrTRWr2H8A6whHcZcD34y1HqnEaofv7Y8JPG+cqwCXXaU9cREQkS2lPXEREJEspxEVERLJU1t3FbP/99/du3bqlbX2bN2+mZcuWaVtfnNSWzJQrbcmVdoDakqlypS1RtOPVV19dn7hyYSVZF+LdunVj4cKFaVvf3LlzKSoqStv64qS2ZKZcaUuutAPUlkyVK22Joh1m9mGq59WdLiIikqUU4iIiIllKIS4iIpKlsu438VR27NjBqlWr2Lp1a51f26ZNG5YuXRpBVQ0vF9vSrFkzunTpQtOmTeMuSUQk4+REiK9atYrCwkK6detGuIFU7ZWUlFBYWFjzglkg19rSqlUrNmzYwKpVq+jevXvcJYmIZJyc6E7funUr7dq1q3OAS2YzM9q1a1evHhYRkcYgJ0IcUIDnKG1XEZHq5UyIx61Vq1Z7vY6FCxdy5ZVXVjt/xYoVPPzww7VevqqioiIOO+ww+vTpQ58+ffjLX/6yV/UmW7RoEbNnz941/cQTTzBhwoS0rV9ERHaXE7+J54r+/fvTv3//audXhPj5559fq+VTeeihh+r8mtpYtGgRCxcu5KSTTgLg1FNP5dRTT037+4iIyJci2xM3s/vNbK2ZvVXNfDOzO81smZm9YWbfiKqWuCxatIjBgwfTu3dvzjjjDD777DMAFixYQO/evfnmN7/JtddeyxFHHAGEq/yMHDkSgBdffHHXHnPfvn0pKSlh/PjxvPzyy/Tp04fbbrut0vKlpaV8//vf5+tf/zq9e/dmxowZtarxoosuqrRHXtGjUHHFobPOOouvfe1rXHDBBVTc8W7BggUMGTKEI488koEDB7Jx40ZuuOEGpk+fTp8+fZg+fTpTpkxh3LhxAHz44YcMHz6c3r17M3z4cD766KNd733llVcyZMgQevTokdaeARGRxiDKPfEpwF3Ag9XMP5Fwz99DgUHAPYnxXrnqKli0qPbLl5U1Jy9vz8v06QO33173Wi688EL+8Ic/cMwxx3DDDTfwi1/8gttvv52LL76YSZMmMWTIEMaPH5/ytbfeeit33303Q4cOpbS0lGbNmjFhwgRuvfVWnnzySSAEbYWbbrqJ1q1b8+abbwLs+sJQ1QUXXEDz5s0BeP755/dY/+uvv86SJUvo1KkTQ4cO5W9/+xsDBw7knHPOYfr06QwYMIBNmzbRokULfvnLX7Jw4ULuuusuAKZMmbJrPePGjePCCy9k9OjR3H///Vx55ZU89thjAKxevZpXXnmFd955h1NPPZWzzjqrxs9VRESCyELc3V8ys257WOQ04EEPu3fzzaytmXV099VR1dSQNm7cyOeff84xxxwDwOjRozn77LP5/PPPKSkpYciQIQCcf/75u0I52dChQ7n66qu54IILOPPMM+nSpcse3++5557jvvvu2zW97777plyuLt3pAwcO3PW+ffr0YcWKFbRp04aOHTsyYMAAAFq3bl3jeubNm8fMmTMBGDVqFD/+8Y93zTv99NNp0qQJvXr1Ys2aNbWqS0QynzuUlcHOnWFc8bi8/Mvp8vLKw7//3Zz33vty2n33x+67P041VNSQarri8Z7GVdtSl+k33tiPoUOhIS5vEedv4p2BlUnTqxLP7RbiZnY5cDlAhw4dKu2BQrgwSElJCQA33VS3IsrKysiraVccSKy+hmVKKj12913PlZaWUl5ezqZNmyo9v3nzZsrLyykpKWHLli3s3LmTkpISrrjiCoqKinjmmWcYNGgQTzzxRKX5QKXpsrKySuutrq2bN2+utIy773rO3dm+ffuuWvLy8nYtW1ZWRmlp6a52VH2frVu37npt1emKupo2bcqOHTt2fT47duyotK7k+svKyiqtq+o2zyalpaVZXX+FXGkHNK62lJfDli15lJbms3lzPlu25PHFFxXjPLZuzWPr1iZs3ZrHtm1N2LYtjLdv/3LYsaMJO3ZYYtyEnTtt1zgMTSgrs0pDeXl9zizZ687YDNGbww9/mVatyiJ/pzhDPNUWTvEdCNx9EjAJoH///l717jBLly6t90VO0nmBlOT1FBYWst9++7Fo0SKOPvpoHn30UYYNG8ZBBx1E69atWbJkCYMHD2bWrFk0adKEwsJCWrRoQX5+PoWFhSxfvpzBgwczePBgXnvtNVauXEnXrl354osvdr1P8vInnHAC9913HxMnTgRCd3rVvfG8vDxatmxZqc5DDz2Ut99+m9GjR/PYY4+xY8eO3WoBKCgooFmzZvTr1481a9bwzjvvMGDAAEpKSmjevDnt27dn27Ztu5Zv1qwZBQUFFBYWMnToUJ566ilGjRrFlClTOProoyksLKRp06Y0b958t8+t6nZp1qwZffv2Tcs2ioPuzJR5srkt7vDZZ7BqFaxeDa+8spR99+3JJ5/AunWwYQOsXx/Gn30GGzem3rtMpXnzykOzZrDPPuFx27ZQUBCmCwrC0LTpl0N+/pfjiiEvb/dxXh40afLlY7Mvn3v33aX06tVz13STJmF+xbhiqDpd3QDVT1c83tM4WdXn9jT96quvcsIJR5PfAAkbZ4ivAromTXcBPo6plr22ZcuWSl3eV199NQ888ABjx45ly5Yt9OjRgz/+8Y8ATJ48mTFjxtCyZUuKiopo06bNbuu7/fbbeeGFF8jLy6NXr16ceOKJNGnShPz8fI488kguuuiiSsF2/fXXc/nll3PEEUeQl5fHz3/+c84888wa6x4zZgynnXYaAwcOZPjw4TXeA7egoIDp06fzwx/+kC+++ILmzZvz3HPPMWzYMCZMmECfPn247rrrKr3mzjvv5JJLLuG3v/0t7du33/U5iEhq27bBv/4Fy5aFYflyeP99+PBDWLkStmxJXronAC1bwgEHQLt2sP/+cNhhsO++YWjbNgytW0Nh4ZdDq1bhdS1bhqBuEvNJx3PnrqGoqGe8RaTBF1+UNEiAA5jX9itafVYefhN/0t2PSDHvZGAccBKhD+VOdx9Y0zr79+/vVe8nvnTpUnr2rN+Gj+NSpaWlpbuOAp8wYQKrV6/mjjvu2Ov15tplVyvasjfbNxNk815fslxpB2RWW1avhoUL4dVX4a23YMmSEOBlST2x++4LX/kKdOsGXbpA165h6NQJVqyYz2mnDSYNl6qIXSZtl70R0f3EX3X33Q5oiuy7gplNBYqA/c1sFfBzoCmAu98LzCYE+DJgC3BxVLVkmqeeeopbbrmFnTt3cvDBB1c6kltEcldZWTh7Zu5cePnlEN7//neY16RJCOrDD4fvfAd69YKvfjU8V81xqgDs2LE1JwJc6ifKo9PPq2G+A1dE9f6Z7JxzzuGcc86JuwwRaQAffgizZsHTT4fg3rQpPH/ooTBsGPTvH4Y+fUK3tkhd6IptIiJptngxPPJICO/EpRs49FA47zwoKoJjjoGOHWMtUXJEzoS4u+tmGTkoymM2RNJp9Wp4+GF48EF4441wxPVRR8Gtt8Ipp4SucZF0y4kQb9asGRs2bNDtSHOMu7NhwwaaNWsWdykiKbnDiy+GKzrOmhXOyR40CO66C845JxwlLhKlnAjxLl26sGrVKtatW1fn127dujVnQiIX29KsWbMar1Yn0tC2b4fp0+G22+D110NY/+QnMHp0OLVLpKHkRIg3bdqU7t271+u1c+fOzeoLiSRTW0SiVVYGDz0EN9wQDljr2RMmTYLvfS+cZy3S0HQ/cRGRGrjDk0+GI8hHjw4XVHnqqXBO95gxCnCJj0JcRGQP3nsPhg8PB6dt3Rq60RcsgJNOSn15TpGGpBAXEUlhxw6YMAF69w6/e0+cCG+/Dd/9bvyXJxWpkBO/iYuIpNNrr8Gll4arq33nO/CHP+i8bslM+j4pIpLgDnfeGU4TW7MGZs6Ev/xFAS6ZS3viIiJAaSlcdln4zfuUU+CBB/Z8zXKRTKA9cRFp9JYuhYED4c9/hltugcceU4BLdtCeuIg0an/9K5x2GrRoAc89F25KIpIttCcuIo3WzJlw4onhPt2vvqoAl+yjEBeRRum+++Dss6FfP3jpJdDVfSUbKcRFpNGZOrUrY8bAt78Nzz6r378leynERaRR+f3vYdKkr3DeefD449CyZdwVidSfQlxEGo0HH4RrroFjjlnLn/4EBQVxVySydxTiItIoPPUUXHJJuA76T3+6lLy8uCsS2XsKcRHJeX/7WziIrW9fePRRKCjwuEsSSQuFuIjktHffhZEjoWtXmD0bCgvjrkgkfRTiIpKzNm8ONzDJz4fiYmjfPu6KRNJLV2wTkZzkDmPGhEuqFheHC7qI5BqFuIjkpLvvhqlT4eabYcSIuKsRiYa600Uk58ybB1dfHe5GNn583NWIREchLiI5Zd26cCR6167hdqJN9FdOcpi600Ukp1xxRQjy+fN1OVXJfQpxEckZM2aEe4LffHM4J1wk16mjSURywvr18IMfwDe+AddeG3c1Ig1De+IikhOuvBI++yzclaxp07irEWkY2hMXkaz3+OPhdLLrr4feveOuRqThKMRFJKt9+imMHQtHHgnXXRd3NSINS93pIpLV/uu/wtHos2erG10aH+2Ji0jWeustuPde+P73dTS6NE4KcRHJSu7hqmytW8ONN8ZdjUg81J0uIllp9uxwJPptt0G7dnFXIxIP7YmLSNbZsQOuuQa++tVwbrhIY6U9cRHJOvfcA+++C7NmQUFB3NWIxEd74iKSVT79NPwGPmIEnHxy3NWIxEshLiJZ5de/ho0b4fe/B7O4qxGJl0JcRLLG2rUwcSJccAF8/etxVyMSP4W4iGSNW2+FbdvgZz+LuxKRzKAQF5GssG4d3H03nHsuHHZY3NWIZAaFuIhkhd//Hr74ItzkREQChbiIZLwNG+Cuu+Ccc6Bnz7irEckcCnERyXi33QabN2svXKQqhbiIZLRPP4U774SzzoLDD4+7GpHMohAXkYx2551QUhJuOSoilSnERSRjbd0azgs/5RSdFy6SikJcRDLW1Knh1LKrroq7EpHMFGmIm9kJZvaumS0zs/Ep5rcxs1lmttjMlpjZxVHWIyLZwx3uuCPsgQ8bFnc1IpkpshA3szzgbuBEoBdwnpn1qrLYFcDb7n4kUAT8zsx0TyIR4cUXYfFi+NGPdI10kepEuSc+EFjm7u+7+3ZgGnBalWUcKDQzA1oBnwI7I6xJRLLEHXdAu3Zw/vlxVyKSuaIM8c7AyqTpVYnnkt0F9AQ+Bt4EfuTu5RHWJCJZ4P334fHHYexYaN487mpEMpe5ezQrNjsbON7dL0tMjwIGuvsPk5Y5CxgKXA18BXgWONLdN1VZ1+XA5QAdOnToN23atLTVWVpaSqtWrdK2vjipLZkpV9rSkO24++6v8OijnZk2bT7777897evPlW0CaksmiqIdw4YNe9Xd++82w90jGYBvAsVJ09cB11VZ5ing6KTpvxKCvtr19uvXz9PphRdeSOv64qS2ZKZcaUtDtWPTJvfWrd3POy+698iVbeKutmSiKNoBLPQUmRhld/oC4FAz6544WO1c4Ikqy3wEDAcwsw7AYcD7EdYkIhluyhTYtCkc0CYie5Yf1YrdfaeZjQOKgTzgfndfYmZjE/PvBW4CppjZm4ABP3H39VHVJCKZzR3uuQcGDoRBg+KuRiTzRRbiAO4+G5hd5bl7kx5/DHw7yhpEJHvMnw9Ll8J998VdiUh20BXbRCRjTJ4MLVvCd78bdyUi2UEhLiIZoaQEpk0L9wwvLIy7GpHsoBAXkYzwyCPhnuGXXhp3JSLZQyEuIhlh8mTo2RO++c24KxHJHgpxEYnd0qUwb17YC9d10kVqTyEuIrGbPBny82HUqLgrEckuCnERidX27fDgg3DqqXDAAXFXI5JdFOIiEqtZs2DdOh3QJlIfCnERidX990PnznD88XFXIpJ9FOIiEpt166C4OPwWnpcXdzUi2UchLiKx+fOfoawMzj8/7kpEspNCXERiM3UqHH44fP3rcVcikp0U4iISi48+glde0V64yN5QiItILKZNC+Nzz423DpFsphAXkVg8/DAMHgw9esRdiUj2UoiLSIN7+21YvBjOOy/uSkSym0JcRBrc1KnQpInuGy6ytxTiItKg3EOIH3ssHHhg3NWIZDeFuIg0qAULYPlyHZUukg4KcRFpUFOnQkEBnHFG3JWIZD+FuIg0mPJymD4dTjoJ2raNuxqR7KcQF5EGM38+rF6tA9pE0kUhLiINZubM0JV+8slxVyKSGxTiItIg3EOIjxgBrVvHXY1IblCIi0iDWLQIPvgAzjwz7kpEcodCXEQaxMyZ4QIvp54adyUiuUMhLiINYuZMOOYYaN8+7kpEcodCXEQi98474Xrp6koXSS+FuIhEbubMMD799FjLEMk5CnERidzMmTBoEHTpEnclIrlFIS4ikfrwQ3j1VXWli0RBIS4ikXr00TBWiIukn0JcRCI1cyb07g2HHBJ3JSK5RyEuIpFZuxZeeUV3LBOJikJcRCIze3a43Kou8CISDYW4iETmySehUyfo2zfuSkRyk0JcRCKxbRsUF8PIkWAWdzUiuUkhLiKRePFFKC2FU06JuxKR3KUQF5FIzJoFzZvD8OFxVyKSuxTiIpJ27uH38BEjQpCLSDQU4iKSdkuWwIoV6koXiZpCXETSbtasMD755HjrEMl1CnERSbtZs6Bfv3B6mYhERyEuImm1bh3Mn6+udJGGoBAXkbSquEqbQlwkegpxEUmrWbN0lTaRhqIQF5G02b5dV2kTaUgKcRFJm5dfDldpGzky7kpEGgeFuIikzZw5UFAAxx4bdyUijYNCXETSZs4c+Na3oGXLuCsRaRwU4iKSFh99BG+/DSeeGHclIo1HpCFuZieY2btmtszMxlezTJGZLTKzJWb2YpT1iEh05swJY4W4SMPJj2rFZpYH3A0cB6wCFpjZE+7+dtIybYGJwAnu/pGZHRBVPSISrTlz4OCD4Wtfi7sSkcYjyj3xgcAyd3/f3bcD04DTqixzPjDT3T8CcPe1EdYjIhHZvh2efz7shevUMpGGY+4ezYrNziLsYV+WmB4FDHL3cUnL3A40BQ4HCoE73P3BFOu6HLgcoEOHDv2mTZuWtjpLS0tp1apV2tYXJ7UlM+VKW/bUjtdea8s11/ThV796k6FDNzRwZXWXK9sE1JZMFEU7hg0b9qq796/6fGTd6UCq7+NVvzHkA/2A4UBzYJ6ZzXf39yq9yH0SMAmgf//+XlRUlLYi586dSzrXFye1JTPlSlv21I6nngqnlv3oR18nG/4G58o2AbUlEzVkO6IM8VVA16TpLsDHKZZZ7+6bgc1m9hJwJPAeIpI15syBo48mKwJcJJdE+Zv4AuBQM+tuZgXAucATVZZ5HDjazPLNrAUwCFgaYU0ikmYrV8KSJToqXSQOke2Ju/tOMxsHFAN5wP3uvsTMxibm3+vuS83saeANoBy4z93fiqomEUm/ilPLTjop3jpEGqMou9Nx99nA7CrP3Vtl+rfAb6OsQ0Sio1PLROKjK7aJSL1t3w7PPadTy0TiohAXkXr7+9/DXctOOCHuSkQaJ4W4iNRbcTHk5+uuZSJxUYiLSL0VF8PQoVBYGHclIo2TQlxE6mXNGnj9dfj2t+OuRKTxUoiLSL08+2wYH398vHWINGYKcRGpl+JiaN8e+vaNuxKRxkshLiJ1Vl4OzzwDxx0HTfRXRCQ2+u8nInW2eDGsXauudJG4KcRFpM6Ki8P4uOPirUOksVOIi0idPfMM9O4NHTvGXYlI46YQF5E6KS2FV15RV7pIJlCIi0idzJ0LO3YoxEUygUJcROqkuBhatICjjoq7EhFRiItInRQXQ1ER7LNP3JWIiEJcRGrtgw/gX/9SV7pIplCIi0itPfNMGOt66SKZQSEuIrX2zDNw0EFw2GFxVyIiAPm1WcjMDgCGAp2AL4C3gIXuXh5hbSKSQcrKjOefh7PPBrO4qxERqCHEzWwYMB7YD3gdWAs0A04HvmJmfwF+5+6bIq5TRGL2zjuFbNyornSRTFLTnvhJwBh3/6jqDDPLB0YCxwEzIqhNRDLIwoX7YgbDh8ddiYhU2GOIu/u1e5i3E3gs3QWJSGZasGA/BgyA/faLuxIRqVCrA9vM7E9m1iZpupuZPR9dWSKSST7/HJYuba2udJEMU9uj018B/mFmJ5nZGOAZ4PbIqhKRjPLXv0J5uen8cJEMU6uj0939f8xsCfACsB7o6+6fRFqZiGSMZ56BFi12MmhQrf5kiEgDqW13+ijgfuBCYAow28yOjLAuEckQ7uFSq337fk7TpnFXIyLJatud/h3gKHef6u7XAWMJYS4iOW75clixAvr3/zTuUkSkitp2p59eZfqfZjYokopEJKNUXGp1wIDP4i1ERHazxz1xM7vezFKeUOLu283sWDMbGU1pIpIJnnkGuneHTp2+iLsUEamipj3xN4FZZrYVeA1YR7hi26FAH+A54NdRFigi8dmxIxyZfv75utSqSCaqKcTPcvehZvZjwiVXOwKbgP8DLnd3fTUXyWH/+AeUlOhSqyKZqqYQ72dmBwMXAMOqzGtOuBmKiOSo4mLIy4Njj4VFi+KuRkSqqinE7wWeBnoAC5OeN8ATz4tIjiouhkGDoG3buCsRkVT2eGCbu9/p7j2B+929R9LQ3d0V4CI5bP16WLgQXaVNJIPV6jxxd/9+1IWISGZ57rlwoReFuEjmqu3FXkSkkSkuhn33hf79465ERKqjEBeR3biH88NHjAgHtolIZlKIi8hu3noLPv5YXekimU4hLiK7qbjUqkJcJLMpxEVkN8XF0KsXdOkSdyUisicKcRGpZMsWeOkl7YWLZAOFuIhU8tJLsG2bQlwkGyjERaSS4mLYZx/41rfirkREaqIQF5FKiotDgDdvHnclIlIThbiI7LJyJSxdqq50kWyhEBeRXYqLw1ghLpIdFOIissvTT0PnznD44XFXIiK1oRAXEQB27IBnn4UTTwSzuKsRkdpQiIsIAPPmwaZNIcRFJDsoxEUEgDlzID8/3PRERLJDpCFuZieY2btmtszMxu9huQFmVmZmZ0VZj4hUb84cGDoUWreOuxIRqa3IQtzM8oC7gROBXsB5ZtarmuV+AxRHVYuI7NnHH8PixepKF8k2Ue6JDwSWufv77r4dmAaclmK5HwIzgLUR1iIie/D002GsEBfJLubu0aw4dI2f4O6XJaZHAYPcfVzSMp2Bh4FjgcnAk+7+lxTruhy4HKBDhw79pk2blrY6S0tLadWqVdrWFye1JTNlQ1tuvLEXS5a04ZFH5lV7ZHo2tKO21JbMlCttiaIdw4YNe9Xd+1d9Pj+t71JZqj8FVb8x3A78xN3LbA/ntLj7JGASQP/+/b2oqChNJcLcuXNJ5/ripLZkpkxvy86dsGgRnHUWDBtWVO1ymd6OulBbMlOutKUh2xFliK8CuiZNdwE+rrJMf2BaIsD3B04ys53u/liEdYlIknnzYONGdaWLZKMoQ3wBcKiZdQf+DZwLnJ+8gLt3r3hsZlMI3emPRViTiFShU8tEsldkIe7uO81sHOGo8zzgfndfYmZjE/Pvjeq9RaT25syBIUOgTZu4KxGRuopyTxx3nw3MrvJcyvB294uirEVEdrd6dfg9/JZb4q5EROpDV2wTacR0aplIdlOIizRis2dDp07Qu3fclYhIfSjERRqp7dvD/cNPPll3LRPJVgpxkUbqpZegpAROOSXuSkSkvhTiIo3UrFnQrBkMHx53JSJSXwpxkUbIPYT4iBHQokXc1YhIfSnERRqht9+GDz6AkSPjrkRE9oZCXKQRmjUrjBXiItlNIS7SCD35JHzjG9C5c9yViMjeUIiLNDLr14ebnuiodJHspxAXaWRmz4bycnWli+QChbhIIzNrFnTsGLrTRSS7KcRFGpGKq7SNHAlN9L9fJOvpv7FII1JxlTZ1pYvkBoW4SCNScZW2ESPirkRE0kEhLtJIuMNjj+kqbSK5RCEu0ki89hp89BF85ztxVyIi6aIQF2kkZs6EvDydHy6SSxTiIo2AO8yYAUVF0K5d3NWISLooxEUagaVL4d134cwz465ERNJJIS7SCMycGcannx5rGSKSZgpxkUZg5kwYMgQ6dYq7EhFJJ4W4SI774AN4/XV1pYvkIoW4SI6r6Eo/44x46xCR9FOIi+S4mTOhTx/o0SPuSkQk3RTiIjls9Wr4+9/VlS6SqxTiIjnsscfCWFdpE8lNCnGRHDZjBhx2GPTsGXclIhIFhbhIjvrkE3jhBTj7bDCLuxoRiYJCXCRHPfIIlJfD+efHXYmIREUhLpKjpk6FI49UV7pILlOIi+Sg99+H+fO1Fy6S6xTiIjlo2rQwPvfceOsQkWgpxEVy0MMPw1FHwUEHxV2JiERJIS6SY958E5YsgfPOi7sSEYmaQlwkxzz8MOTlhVPLRCS3KcRFcoh7OCr9uOOgffu4qxGRqCnERXLIvHnw4Yc6Kl2ksVCIi+SQqVOhWTM4/fS4KxGRhqAQF8kR27fD9OkwciQUFsZdjYg0BIW4SI548klYtw4uvjjuSkSkoSjERXLE5MnQuTMcf3zclYhIQ1GIi+SAf/8bnn4aLroonF4mIo2DQlwkB0yZEu5YdsklcVciIg1JIS6S5crLQ1f6sGHQo0fc1YhIQ1KIi2S5uXPhgw/gssvirkREGppCXCTLTZ4MbdvCGWfEXYmINDSFuEgW++wzmDEDLrgAmjePuxoRaWgKcZEs9vDDsG0bXHpp3JWISBwU4iJZyj10pfftGwYRaXwiDXEzO8HM3jWzZWY2PsX8C8zsjcTwdzM7Msp6RHLJ/Pnw+uswZkzclYhIXCILcTPLA+4GTgR6AeeZWa8qi30AHOPuvYGbgElR1SOSa26/PRzQNmpU3JWISFyi3BMfCCxz9/fdfTswDTgteQF3/7u7f5aYnA90ibAekZyxcmU4oO2yy6BVq7irEZG4RBninYGVSdOrEs9V51JgToT1iOSMiRPDb+LjxsVdiYjEydw9mhWbnQ0c7+6XJaZHAQPd/Ycplh0GTASOcvcNKeZfDlwO0KFDh37Tpk1LW52lpaW0ypFdGbUlM6W7LVu3NuG73/0mfft+zi9+sSRt662JtklmUlsyTxTtGDZs2Kvu3n+3Ge4eyQB8EyhOmr4OuC7Fcr2B5cBXa7Pefv36eTq98MILaV1fnNSWzJTutvzP/7iD+0svpXW1NdI2yUxqS+aJoh3AQk+RiVF2py8ADjWz7mZWAJwLPJG8gJkdBMwERrn7exHWIpIT3OGOO8IpZUcdFXc1IhK3/KhW7O47zWwcUAzkAfe7+xIzG5uYfy9wA9AOmGhmADs9VXeBiADw3HPw9tvwwAMQ/suISGMWWYgDuPtsYHaV5+5NenwZoNs2iNTSHXdAhw5wzjlxVyIimUBXbBPJEm+/DU89BWPHwj77xF2NiGQChbhIlvjVr6BlS51WJiJfUoiLZIF33oFp00KA779/3NWISKZQiItkgZtvDrcaveaauCsRkUyiEBfJcO+9F245+oMfQPv2cVcjIplEIS6S4W6+ORzI9p//GXclIpJpFOIiGWzZMnjoIfj+98OpZSIiyRTiIhns17+Gpk3h2mvjrkREMpFCXCRDLVsGDz4I//EfcOCBcVcjIplIIS6SoX7843BE+vjxcVciIplKIS6SgV54AR59FK67TnvhIlI9hbhIhikrg//3/+Dgg8NYRKQ6kd4ARUTqbsoUWLwYpk8P3ekiItXRnrhIBtm0CX72Mxg6FM4+O+5qRCTTaU9cJIPccgusWQOzZul+4SJSM+2Ji2SI99+H226DCy+EAQPirkZEsoFCXCQDlJfDZZdBQUG4wIuISG2oO10kA0yaFE4rmzQJOneOuxoRyRbaExeJ2YcfhsuqjhgR9sZFRGpLIS4SI3cYMyY8/t//1cFsIlI36k4XidHkyfDsszBxInTrFnc1IpJttCcuEpOVK+Gaa6CoKNzkRESkrhTiIjHYvh3OOScclT55MjTR/0QRqQd1p4vE4NprYd48eOQR6NEj7mpEJFvp+79IA5s6Fe68M9zcRJdWFZG9oRAXaUBLloTTyIYOhd/8Ju5qRCTbKcRFGsimTXDmmVBYGLrRmzaNuyIRyXb6TVykAezYEQ5kW74cnn8eOnWKuyIRyQUKcZGIlZfDxRfD00+HC7occ0zcFYlIrlCIi0TIHSZOPIQZM8KNTXRZVRFJJ/0mLhKhCRNgxowuXHUVjB8fdzUikmsU4iIRmTgRfvpTGDFiDb/7na6LLiLppxAXSTN3uPlmuOIKOOUU+MlP3tEV2UQkEvrTIpJG5eXhIi7XXw+jRsGMGZCf73GXJSI5SiEukiY7dsDo0XDHHXDVVTBlis4FF5Fo6eh0kTRYvx7OPz/cVvTmm+G66/QbuIhETyEuspf+8Y9wDfS1a8MdyS65JO6KRKSxUHe6SD25w913w9FHQ14e/O1vCnARaVgKcZF6WLs2XEZ13Dg4/nh47TXo1y/uqkSksVGIi9SBO/zpT9CzJzz+ONxySxjvu2/clYlIY6TfxEVqacUKGDsWiothyJBwHfReveKuSkQaM+2Ji9Tg00/h2mvha18Lv3vfdRe8/LICXETipz1xkWps3hzO+f7v/w73Ar/wQrjpJujaNe7KREQChbhIFevWwT33hCPP164Nl0799a/hiCPirkxEpDKFuEjCkiVw++3hwLVt2+DEE8MNTI46Ku7KRERSU4hLo7Z+PUyfDg8+CP/8JzRrBhddBD/6UTgCXUQkkynEpdFZtw6eegoefRRmz4adO+HII+HWW8O1z/ffP+4KRURqRyEuOW/nTnj9dXj+eZg1C+bNC+d7d+4cblQyahT07h13lSIidacQl5xTUhKuoDZ/Prz4IrzySngOwlXVfv7zcLBa3766SYmIZDeFuGQtd1i1KhyQtmQJvPEGLFgA77wT5kH4Xft734NjjgnDgQfGW7OISDopxCWjbd0agnrlynDFtGXLYPnyMLz3Xjh/u0LHjtC/P5x7bhgPGADt28dWuohI5CINcTM7AbgDyAPuc/cJVeZbYv5JwBbgInd/LcqaJF7bt8PGjfD557BhQxjWrw/jtWvhk0/CsHx5PzZuDAehJcvLg27d4JBDwm/Zhx/+5dCuXRwtEhGJT2QhbmZ5wN3AccAqYIGZPeHubyctdiJwaGIYBNyTGEuauUN5OZSVhWHnzjBUPN6xI/WwfXsYtm3bffjii7CnXDHevLnyUFoafouuGDZuhC1bqq+xoAA6dAhd3u3bb+PYYwvp2pVdw8EHw0EHQdOmDfe5iYhksij3xAcCy9z9fQAzmwacBiSH+GnAg+7uwHwza2tmHd19dYR17bJwIVxxRV9at/7yuYrfUmuarmlc0zIVQ9XpqkN5+e6Pk8fJj7dtG0qTJl8+X1ZWeRylggJo2RJatPhyXFgYQvmQQ8Ljtm3D0KZNGNq1C6dztWsXhjZtvjzQbO7ctygqKoq2aBGRLBdliHcGViZNr2L3vexUy3QGKoW4mV0OXA7QoUMH5s6dm5YCly1rxT77HMTOnZ9Wer7qEctmXmne7vMrL5fqiOfqlkn1fBh8j4+bNKn8XJMmsHPndpo1C5s0L+/L5Zo0qRg7eXlhOi/PUwzl5Od70lBO06ZhnJ/vFBSU07RpGAoKnIKCMvbZJ0zn5dXlk//Sli1hWLmy8vOlpaVp285xy5W25Eo7QG3JVLnSloZsR5QhnurkHa/HMrj7JGASQP/+/T1de2hFRXDIIXNzZo9v7ly1JRPlSltypR2gtmSqXGlLQ7YjyluRrgKS7/fUBfi4HsuIiIhIClGG+ALgUDPrbmYFwLnAE1WWeQK40ILBwMaG+j1cREQk20XWne7uO81sHFBMOMXsfndfYmZjE/PvBWYTTi9bRjjF7OKo6hEREck1kZ4n7u6zCUGd/Ny9SY8duCLKGkRERHJVlN3pIiIiEiGFuIiISJZSiIuIiGQphbiIiEiWUoiLiIhkKYW4iIhIllKIi4iIZCmFuIiISJZSiIuIiGQp86o3zM5wZrYO+DCNq9wfWJ/G9cVJbclMudKWXGkHqC2ZKlfaEkU7Dnb39lWfzLoQTzczW+ju/eOuIx3UlsyUK23JlXaA2pKpcqUtDdkOdaeLiIhkKYW4iIhIllKIw6S4C0gjtSUz5UpbcqUdoLZkqlxpS4O1o9H/Ji4iIpKttCcuIiKSpRpFiJvZ2Wa2xMzKzax/lXnXmdkyM3vXzI6v5vX7mdmzZvavxHjfhql8z8xsupktSgwrzGxRNcutMLM3E8stbOAya8XMbjSzfye156Rqljshsa2Wmdn4hq6zNszst2b2jpm9YWaPmlnbapbLyO1S02dswZ2J+W+Y2TfiqLMmZtbVzF4ws6WJ//8/SrFMkZltTPp3d0MctdZGTf9esmG7mNlhSZ/1IjPbZGZXVVkmY7eJmd1vZmvN7K2k52qVD5H97XL3nB+AnsBhwFygf9LzvYDFwD5Ad2A5kJfi9f8NjE88Hg/8Ju42pajxd8AN1cxbAewfd4011H8j8J81LJOX2EY9gILEtusVd+0p6vw2kJ94/Jvq/r1k4napzWcMnATMAQwYDPwj7rqraUtH4BuJx4XAeynaUgQ8GXettWzPHv+9ZMt2Sao3D/iEcP5zVmwT4FvAN4C3kp6rMR+i/NvVKPbE3X2pu7+bYtZpwDR33+buHwDLgIHVLPdA4vEDwOmRFFpPZmbAd4GpcdcSsYHAMnd/3923A9MI2yajuPsz7r4zMTkf6BJnPXVUm8/4NOBBD+YDbc2sY0MXWhN3X+3uryUelwBLgc7xVhWprNguSYYDy909nRfvipS7vwR8WuXp2uRDZH+7GkWI70FnYGXS9CpS/yfv4O6rIfxhAA5ogNrq4mhgjbv/q5r5DjxjZq+a2eUNWFddjUt0A95fTZdUbbdXJrmEsHeUSiZul9p8xlm3HcysG9AX+EeK2d80s8VmNsfMDm/Yyuqkpn8v2bZdzqX6HY9s2SZQu3yIbNvkp2MlmcDMngMOTDHrZ+7+eHUvS/FcRh2uX8t2ncee98KHuvvHZnYA8KyZvZP4Rtmg9tQW4B7gJsLnfxPh54FLqq4ixWtj2V612S5m9jNgJ/BQNavJiO1SRW0+44zZDrVhZq2AGcBV7r6pyuzXCN25pYnjMB4DDm3gEmurpn8vWbNdzKwAOBW4LsXsbNomtRXZtsmZEHf3EfV42Sqga9J0F+DjFMutMbOO7r460T21tj411kdN7TKzfOBMoN8e1vFxYrzWzB4ldO00eFjUdhuZ2f8CT6aYVdvtFblabJfRwEhguCd+FEuxjozYLlXU5jPOmO1QEzNrSgjwh9x9ZtX5yaHu7rPNbKKZ7e/uGXf97lr8e8ma7QKcCLzm7muqzsimbZJQm3yIbNs09u70J4BzzWwfM+tO+Lb3z2qWG514PBqobs8+DiOAd9x9VaqZZtbSzAorHhMOunor1bJxqvLb3RmkrnEBcKiZdU98kz+XsG0yipmdAPwEONXdt1SzTKZul9p8xk8AFyaOhh4MbKzoTswkiWNFJgNL3f331SxzYGI5zGwg4W/ihoarsnZq+e8lK7ZLQrW9h9myTZLUJh+i+9sV55F+DTUQQmEVsA1YAxQnzfsZ4ajBd4ETk56/j8SR7EA74HngX4nxfnG3KanOKcDYKs91AmYnHvcgHAm5GFhC6O6Nve4U7fgT8CbwRuIfd8eqbUlMn0Q4ynh5BrdlGeH3r0WJ4d5s2i6pPmNgbMW/M0LX4N2J+W+SdMZHJg3AUYQuyzeStsVJVdoyLvH5LyYchDgk7rqraUvKfy9Zul1aEEK5TdJzWbFNCF88VgM7EplyaXX50FB/u3TFNhERkSzV2LvTRUREspZCXEREJEspxEVERLKUQlxERCRLKcRFRESylEJcREQkSynERUREspRCXET2yMwGJG5M0yxx5bAlZnZE3HWJCLrYi4jUzMx+BTQDmgOr3P2WmEsSERTiIlILies9LwC2Ei6DWRZzSSKCutNFpHb2A1oBhYQ9chHJANoTF5EamdkTwDSgO+HmNONiLklEyKH7iYtINMzsQmCnuz9sZnnA383sWHf/a9y1iTR22hMXERHJUvpNXEREJEspxEVERLKUQlxERCRLKcRFRESylEJcREQkSynERUREspRCXEREJEspxEVERLLU/wdOb0gaw/Yq7AAAAABJRU5ErkJggg==",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Define the logistic (sigmoid) function\n",
"def logistic_function(x):\n",
" return 1 / (1 + np.exp(-x))\n",
"\n",
"# Generate x values\n",
"x = np.linspace(-10, 10, 100) # Creating 100 evenly spaced values from -6 to 6\n",
"\n",
"# Calculate y values using the logistic function\n",
"y = logistic_function(x)\n",
"\n",
"# Plot the logistic function\n",
"plt.figure(figsize=(8, 6))\n",
"plt.plot(x, y, label='Logistic Function', color='blue')\n",
"plt.xlabel('x')\n",
"plt.ylabel('f(x)')\n",
"plt.title('Logistic Function (Sigmoid)')\n",
"plt.grid()\n",
"plt.legend()\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we can see, the function has the properties we need:\n",
"* Its values are comprised between $0$ and $1$;\n",
"* It saturates to $0$ and $1$ for extreme values of $x$.\n",
"\n",
"Additionally, it is differentiable, which will be useful for optimization later."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### The origin of the logistic function (Optional)\n",
"When looking at the logistic function for the first time, one may wonder where it comes from and why we are using this function. The original logistic function was proposed by Belgian mathematician Pierre François Verhulst in 1838 to model the problem of **population growth**, which can be formulated as follows:\n",
"\n",
"> We want to model the growth of a population $P(t)$ as time $t$ passes, under the assumption that resources are limited so that the population can reach at most the **carrying capacity $K$**.\n",
"\n",
"Verhulst tried to model the growth with a linear ODE, i.e., trying to give an analytical formulation for the derivative of the population size $P(t)$ with respect to time $t$. If resources were unlimited, we could model:\n",
"\n",
"$$\\frac{dP(t)}{dt} = rP$$\n",
"\n",
"where $r$ is an unknown growth coefficient. The expression above reflects the fact that, as population grows, it grows faster and faster. The derivative will change with time as follows:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"data": {
"image/png": "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63vrrbdo2rQp1157bdWygw46iJtuummXuK+//nqOOuooli9fHvf67r77bu6//34Avve973HCCScA8Oabb3LppZcycuRISkpKdom5oqKixs+j0tNPP83ZZ59dNf/RRx8xePBgjjjiCP7whz/w6aef0rVrVwDmzJlDz549AejatWtV7dn8+fP56le/Sl5eXtz9lyxZwve//33Gjx9PQUEBJSUltX5mNbngggv4/ve/z7Bhw7jrrrtqjOecc87h6aefrtc5REQk8NprsGxZy2iDcPeMmvr37+/VffDBB1Xvv/Md9+OP3/tp8ODtVe+/853dThlXo0aNvF+/flXTuHHj3N391ltv9Ztvvtmvv/56/9WvfuXu7iUlJQ74u+++6+7uV155pf/2t7/1adOmeZ8+fbysrMw3bNjgvXr18hkzZnhJSYnn5eX5zJkz3d39ggsu8CeffLLq+s8880zftm2bu7tfd911/vjjj9e4T0lJiffu3XuX2Fu1alX1fs2aNe7uvmnTJu/du7evXr16t20q3Xffff7d7363xs+kpKTEzcwnT57s7l7j9U2ePNnPP/98d3cfPHiwDxgwwLdt2+a33367jxo1yktKSrxnz567HLemz6PS1q1bPT8/v2p++/btPmDAAJ8yZUrV53TCCSdUrW/Xrp1/+umnvmPHDr/11lv9kksucXf33/3ud/7II4/Uuv+pp57qc+bM2e36Bw8evMt3onJ6/fXXd9u2R48eftttt9UZT3l5uXfo0KHGzzz27yHZ3n777ZSdSxKnckk/KpP0s99+7medVZr08wDTvIacJisGa00Xlc2R1f3sZz9jwIABNG/evKq2B+CAAw7guOOOA+DSSy/l/vvvp0mTJpx77rm0atUKgPPOO4+JEydy1lln0b17dwoKCgDo378/S5YsAYLaounTpzNgwAAg6AfVqVMnhg4dGnefwYMH13od999/f1WfruXLl7Nw4ULat2+f0Gdwww038O6779K0aVOmTp0KBDVjlU157777btzru+6665g+fTobNmygWbNmHHXUUUybNo2JEyfu8pnFqunzqLR69WratWtXNf/ss8/Ss2dPBg4cCEDv3r1p0aJF1XWWlZVx6qmn0qRJEwYOHMgDDzwAwKuvvsqjjz5a6/4ffvghPXr02C3GiRMnJvS5bdmyhbVr1/Kzn/2sznjy8vJo2rSpBq8VEamnsjJYuxb23z/acRWzLgkLW7f22oYNmxvsB27t2rWUlZWxfft2tmzZUpWAVB/TycwIkub4mjVrVvU+Ly+vqvnN3bn88su56667dtl+yZIlNe5Tk+LiYt544w0mT55My5YtKSoqqnXwz969e/OPf/yjav6BBx5g9erVFBYWVi2rvN7KWONp0qQJ3bp149FHH+XYY4+lb9++vP3223z88cf07NmTpUuX7rZPXdfWokWLXWKfPXs2/fv3r5qfPn06RUVFVetOPPFEXnnllV2OsWnTJtatW0fnzp1r3H/NmjW0bds27qOChgwZwoYNG3Zbfs8993DSSSdVzc+bN49BgwbRuHHjWuOptHXrVpo3bx53nYiI1G7ZsuC1U6etkcaRtD5hZjbGzFaZ2dxatikys1lmNs/MJiQrlqiNGDGCO+64g0suuYQf//jHVcuXLVvG5MmTARg7diyDBw9m6NChPP/882zatImNGzfy3HPPMWTIkFqPf+KJJzJ+/HhWrVoFBElfvKSlUps2beImBgBffvkl++67Ly1btmTBggX85z//qfXcJ5xwAlu2bOHPf/5z1bLKvm3x1HZ9Q4cO5Z577mHo0KEMGTKEUaNGUVBQgJnRpk0bysrKao2lun333ZeKioqqRKx9+/bMnRt8HadPn87YsWOratLmzJlT1UE/1ttvv82wYcNq3b+kpITOnTvHjWHixIm73KxROcUmYJXn79u37y7z8eIBWLNmDR07dtTzIUVE6qnyJzI/P9qasGR2zH8MGF7TSjNrBzwInOXuvYELkhhLSmzevHmXISpGjhzJE088QePGjbn44osZOXIkU6dO5a233gKgZ8+ePP744/Tt25e1a9dy3XXXcdRRR3HFFVcwcOBABg0axNVXX82RRx5Z63l79erFnXfeySmnnELfvn05+eSTWblyZY3bt2/fnuOOO44+ffpUdXKvNHz4cMrLy+nbty+33XZb3DsCY5kZzz//PBMmTKB79+4MHDiQyy+/nN/85jdxt6/t+oYMGcLKlSs55phjyM/Pp3nz5lUJWvv27Rk0aFDcmGtzyimn8O677wJw2WWXMWvWLAoKCrj77rtp165dVcf36klQpX//+98MHz681v0PP/xwVq9eTZ8+fep9l2m8JCxePBAkhqeffnq9ziMiIjtrwvLzo60JS2oneqAbMLeGddcDd+7p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",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from scipy.integrate import odeint\n",
"\n",
"# Define parameters for the exponential growth model\n",
"r_exp = 0.3 # Growth rate\n",
"P0_exp = 5 # Initial population\n",
"t = np.linspace(0, 50, 500) # Time range for the plot\n",
"\n",
"# Define the exponential growth differential equation\n",
"def exponential_growth(P, t, r):\n",
" return r * P\n",
"\n",
"# Solve the ODE for exponential growth\n",
"P_exp = odeint(exponential_growth, P0_exp, t, args=(r_exp,))\n",
"\n",
"# Plot the exponential growth results\n",
"plt.figure(figsize=(10, 6))\n",
"plt.plot(t, P_exp, label=\"Exponential Growth ($dP/dt = rP$)\", color=\"blue\")\n",
"plt.title(\"Exponential Growth Model for Population\")\n",
"plt.xlabel(\"Time\")\n",
"plt.ylabel(\"Population Size\")\n",
"plt.legend()\n",
"plt.grid(True)\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we know that resources are limited, however, we have to assume that the growth rate will at first increase, when many resources are available and population grows, then decrease. Verhulst hence revised the ODE as follows:\n",
"\n",
"$$\\frac{dP(t)}{dt} = rP (1-\\frac{P}{K})$$\n",
"\n",
"where $K$ is the carrying capacity. In practice, as $P$ approaches $K$, the growth rate will slow down, as shown in the following:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Define a range of population sizes to show how the derivative changes\n",
"population_sizes = np.linspace(0, K, 500) # Range from 0 to carrying capacity\n",
"\n",
"# Compute the rate of change (derivative) for each population size\n",
"dP_dt = r * population_sizes * (1 - population_sizes / K)\n",
"\n",
"# Plot the rate of change of population as a function of population size\n",
"plt.figure(figsize=(10, 6))\n",
"plt.plot(population_sizes, dP_dt, label=r\"Growth Rate $\\frac{dP}{dt}$\")\n",
"plt.axhline(0, color='gray', linestyle='--', linewidth=0.5)\n",
"plt.title(\"Rate of Change of Population as a Function of Population Size\")\n",
"plt.xlabel(\"Population Size (P)\")\n",
"plt.ylabel(\"Rate of Change (dP/dt)\")\n",
"plt.grid(True)\n",
"plt.legend()\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To obtain the size of population $P$ for varying $t$, we can solve the ODE above, obtaining the following expression:\n",
"\n",
"$$P = \\frac{K}{1+(\\frac{K-P_0}{P_0})e^{-rt}}$$\n",
"\n",
"From here, it can be shown that we can obtain the standard logistic function:\n",
"\n",
"$$f(t) = \\frac{1}{1+e^{-t}}$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## The Logistic Regression Model\n",
"In practice, we define our model, **the logistic regressor model** as follows (**simple logistic regression**):\n",
"\n",
"$$P(Diagnosis=1|X) = f(\\beta_0 + \\beta_1 X) = \\frac{1}{1+e^{-(\\beta_0 + \\beta_1 X)}}$$\n",
"\n",
"Or, more in general (**multiple logistic regression**):\n",
"\n",
"$$P(y=1|\\mathbf{x}) = \\frac{1}{1+e^{-(\\beta_0 + \\beta_1 x_1 + \\ldots + \\beta_n x_n)}}$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is easy to see that:\n",
"\n",
"$$p=\\frac{1}{1+e^{-x}} \\Rightarrow p+pe^{-x} = 1 \\Rightarrow pe^{-x} = 1-p \\Rightarrow e^{-x} = \\frac{1-p}{p} \\Rightarrow e^{x} = \\frac{p}{1-p}$$\n",
"\n",
"Hence:\n",
"\n",
"$$e^{\\beta_0+\\beta_1x_1 + \\ldots + \\beta_nx_n} = \\frac{P(y=1|\\mathbf{x})}{1-P(y=1|\\mathbf{x})}$$\n",
"\n",
"We note that the term on the right is the odd of $P(y=1|\\mathbf{x})$. We recall that the odd of $P(y=1|\\mathbf{x})$ is the number of times we believe the example will be positive (observed $\\mathbf{x}$) over the number of times we believe the example will be negative. For instance, if we believe that the example will be positive $3$ times out of $10$, then the odd will be $\\frac{3}{7}$."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"By taking the logarithm of both terms, we obtain:\n",
"\n",
"$$\\log \\left(\\frac{P(y=1|\\mathbf{x})}{1-P(y=1|\\mathbf{x})}\\right) = \\beta_0 + \\beta_1 x_1 + \\ldots + \\beta_n x_n$$\n",
"\n",
"The expression:\n",
"\n",
"$$\\log \\left(\\frac{P(y=1|\\mathbf{x})}{1-P(y=1|\\mathbf{x})}\\right)$$\n",
"\n",
"Is the logarithm of the odd (log odd), and it is called **logit**, hence the **logistic regression** is sometimes called **logit regression**."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"The expression above shows how a logistic regressor can be seen as **a linear regressor (the expression on the right side of the equation) on the logit (the log odd)**. This paves the way to useful interpretations of the model, as shown in the next section."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Statistical Interpretation of the Coefficients of a Linear Regressor\n",
"\n",
"Let's now see how to interpret the coefficients of a logistic regressor. Remember that the regression model (in the case of simple logistic regression) is as follows:\n",
"\n",
"$$\n",
"\\log(\\frac{p}{1-p})=\\beta_0 + \\beta_1 x\n",
"$$\n",
"\n",
"Applying what we know about linear regressors, we can write:\n",
"\n",
"$$x=0 \\Rightarrow \\ln(\\frac{p}{1-p})=\\beta_0$$ \n",
"\n",
"To have a clearer picture, we can exponentiate both sides of the equation and write: \n",
"\n",
"$$x=0 \\Rightarrow \\frac{p}{1-p}=e^{\\beta_0}$$ \n",
"\n",
"Remember that $\\frac{p}{1-p}$ is the odds that the dependent variable is equal to 1 when observing $x$ and, as such, it has a clear interpretation. For example, if the odds of an event are $\\frac{3}{1}$, then it is $3$ times more likely to occur than not to occur. So, **for $x=0$, it is $e^{\\beta_0}$ times more likely that the dependent variable is equal to 1, rather than being equal to 0**.\n",
"\n",
"It can be seen that:\n",
"\n",
"$$p=\\frac{odds}{1+odds}$$\n",
"\n",
"Hence, the probability of the event being true when all variables are zero is given by:\n",
"\n",
"$$p(y=1|x) = \\frac{e^\\beta_0}{1+e^\\beta_0}$$\n",
"\n",
"How can we interpret the **coefficient values**? \n",
"\n",
"We know that:\n",
"\n",
"$$odds(p|x) = \\frac{P(y=1|x)}{1-P(y=1|x)}$$\n",
"\n",
"We can write:\n",
"\n",
"$$\n",
"\\log odds(p|x) = \\beta_0 + \\beta_1 x\n",
"$$\n",
"\n",
"Hence:\n",
"\n",
"$$\\log odds(p|x+1) - \\log odds(p|x) = \\beta_0 + \\beta_1 (x+1) - \\beta_0 - \\beta_1 x = \\beta_1 (x+1) - \\beta_1 x = \\beta_1$$\n",
"\n",
"Exponentiating both sides, we get:\n",
"\n",
"$$e^{\\log odds(p|x+1) - \\log odds(p|x)} = e^{\\beta_1} \\Rightarrow \\frac{e^{\\log odds(p|x+1)}}{e^{\\log odds(p|x)}} = e^{\\beta_1} \\Rightarrow \\frac{odds(p|x+1)}{odds(p|x)} = e^{\\beta_1} \\Rightarrow odds(p|x+1) = e^{\\beta_1}odds(p|x)$$\n",
"\n",
"We can thus say that **increasing the variable $x$ by one unit corresponds to a multiplicative increase in odds by $e^{\\beta_1}$**.\n",
"\n",
"This analysis can be easily extended to the case of a multiple logistic regressor. Hence in general, given the model:\n",
"\n",
"$$P(y=1|\\mathbf{x}) = \\beta_0 + \\beta_1 x_1 + \\ldots + \\beta_n x_n$$\n",
"\n",
"We can say that:\n",
"\n",
"* $e^{\\beta_0}$ is the odd of $y$ being equal to $1$ rather than $0$ when $x_i=0 \\forall i$;\n",
"* An increment of one unit in the independent variable $x_i$ corresponds to a multiplicative increment of $e^{\\beta_i}$ in the odds of $y=1$. So if $e^{\\beta_i}=0.05$, then $y=1$ is $5\\%$ more likely for a one-unit increment of $x$."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Geometrical Interpretation of the Coefficients of a Logistic Regressor\n",
"Similar to linear regression, also the coefficients of logistic\n",
"regression have a geometrical interpretation. We will see that, while\n",
"linear regression finds a «curve» that fits the data, logistic\n",
"regression finds a hyperplane that separates the data.\n",
"\n",
"Let us consider a simple example with bi-dimensional data\n",
"$\\mathbf{x} \\in \\mathfrak{R}^{2}$ as the one shown in the following:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"x=np.array(list(np.random.normal(0,1,100))+list(np.random.normal(3,1,100)))\n",
"y=np.array(list(np.random.normal(0,1,100))+list(np.random.normal(3,1,100)))\n",
"l=np.array([0]*100+[1]*100)\n",
"plt.figure(figsize=(10,8))\n",
"sns.scatterplot(x=x,y=y,hue=l)\n",
"plt.xlim([-3,6])\n",
"plt.ylim([-3,7])\n",
"plt.legend()\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us assume that we fit a logistic regressor model to this data\n",
"\n",
"$$P\\left( y=1 | \\mathbf{x} \\right) = \\frac{1}{1 + e^{- {(\\beta}_{0} + \\beta_{1}x_{1} + \\beta_{2}x_{2})}}$$\n",
"\n",
"and find the following values for the parameters:\n",
"\n",
"$$\\left\\{ \\begin{matrix}\n",
"\\beta_{0} = - 3.47 \\\\\n",
"\\beta_{1} = 1.17 \\\\\n",
"\\beta_{2} = 1.43 \\\\\n",
"\\end{matrix} \\right.\\ $$\n",
"\n",
"We know that these parameters allow to find a probability value according to the formula above.\n",
"We can use these values to **classify the observations** $\\mathbf{x}$. In practice, a reasonable criterion to classify observations would be:\n",
"\n",
"$$\\hat y = \\begin{cases}1 & \\text{if } P(y=1|\\mathbf{x}) \\geq 0.5\\\\0 & \\text{otherwise}\\end{cases}$$\n",
"\n",
"This makes sense as we are assigning the observations to the group for which the posterior probability $P(y|\\mathbf{x})$ is higher. \n",
"\n",
"To understand how the data is classified, we can look at those points in\n",
"which the classifier is uncertain, which is often called **the decision boundary**, i.e.,\n",
"those points in which $P\\left( y=1 | \\mathbf{x} \\right) = 0.5$.\n",
"\n",
"We note that:\n",
"\n",
"$$P\\left(y=1 | \\mathbf{x} \\right) = 0.5 \\Leftrightarrow e^{- (\\beta_{0} + \\beta_{1}x_{1} + \\beta_{2}x_{2})} = 1 \\Leftrightarrow 0 = \\beta_{0} + \\beta_{1}x_{1} + \\beta_{2}x_{2}$$\n",
"\n",
"This last equation is the equation of a line (in the form\n",
"$ax + by + c = 0$). We can see it in explicit form:\n",
"\n",
"$$x_{2} = - \\frac{\\beta_{1}}{\\beta_{2}}x_{1} - \\frac{\\beta_{0}}{\\beta_{2}}$$\n",
"\n",
"So, we have found a line which has a\n",
"\n",
"- Angular coefficient equal to $- \\frac{\\beta_{1}}{\\beta_{2}}$;\n",
"\n",
"- Intercept equal to $- \\frac{\\beta_{0}}{\\beta_{2}}$;\n",
"\n",
"If we plot this line, we obtain the **decision boundary** which\n",
"separates the elements from the two classes:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlUAAAHSCAYAAADFWz5PAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAACfAklEQVR4nOzddZiUZffA8e8zO9vdXbCwdHcjKK2oICqIYCB2v9br+zNe87W7OxEUVEIFCUkBQZButmCD7Y75/XEDyzLLsjGzz8zs+VzXXuzcO/PMmc3DHedoJpMJIYQQQgjRNAa9AxBCCCGEcASSVAkhhBBCWIAkVUIIIYQQFiBJlRBCCCGEBUhSJYQQQghhAZJUCSGEEEJYgFGPJ/Xz8zMlJCSc+w4mEyQlQUYGBARAXBxoWrPFZy2FhYV4enrqHUazk9fdssjrblnkdbcsLfV1b968OdNkMgWf7366JFWhoaFs2rSp7juZTPDcc/DQQ9C1K3z/Pfj5NUt81rJixQqGDRumdxjNTl53yyKvu2WR192ytNTXrWnakfrcz3aX/zQNHnwQPv8cVq+GwYPV7JUQQgghhA2y3aTqlGnTYPFiOHoU+veH7dv1jkgIIYQQwoztJ1UAI0bAH3+o9wcNgt9/1zceIYQQQoiz6LKnqlG6dIF162DMGBg9Gj7+GKZO1TsqIYQQDqa8vJzk5GRKSkrOeR9fX1927drVjFHZBkd/3W5ubkRFReHs7Nyox9tPUgUQHa32V116qVoWTEqCBx5wiJOBQgghbENycjLe3t7ExcWhnePvS35+Pt7e3s0cmf4c+XWbTCaysrJITk4mPj6+Udewj+W/M/n5wZIlcNVV6mTgrbdCZaXeUQkhhHAQJSUlBAYGnjOhEo5J0zQCAwPrnKE8H/uaqTrF1RW++AJiYlTZhZQU+Ppr8PDQOzIhhBAOQBKqlqmpX3f7m6k6xWCAZ5+FN96An36CCy5QxUKFEEIIB7BkyRISExNJSEjg2Wef1TscUQ/2m1SdcuutqjDo33+rkgv79+sdkRBCCNEklZWV3HrrrSxevJidO3fy9ddfs3PnTr3DEudh/0kVwMSJqsxCTo5KrDZs0DsiIYQQLcT8LSkMfPZ34h9cyMBnf2f+lpQmX/PPP/8kISGBVq1a4eLiwpVXXsmCBQssEK2wJsdIqkAlU2vXgo8PDB8OP/6od0RCCCEc3PwtKTz0/XZScooxASk5xTz0/fYmJ1YpKSlER0efvh0VFUVKStOTNWFdjpNUAbRtqxKrjh1V2YV33tE7IiGEEA7sf7/sobi85gn04vJK/vfLniZd12QymY3J5nnb51hJFUBoKKxYoYqE3nwzPPywas4shBBCWFhqTnGDxusrKiqKpDP63SYnJxMREdGkawrrc7ykCsDTE+bPhxtvhGeegenToaxM76iEEEI4mAg/9waN11fv3r3Zt28fhw4doqysjG+++YaLL764SdcU1ueYSRWA0Qjvvgv//a+qaTV2LOTm6h2VEEIIB3L/qETcnZ1qjLk7O3H/qMQmXddoNPLGG28watQo2rdvzxVXXEHHjh2bdE1hffZZ/LO+NA0eeQSiouCGG2DwYFi0SN0WQgghmmhi90hA7a1KzSkmws+d+0clnh5virFjxzJ27NgmX0c0H8dOqk659lqIiIDLL1enBBcvhk6d9I5KCCGEA5jYPdIiSZSwf467/He2Cy+EVatUn8BBg2D5cr0jEkIIIYQDaTlJFUC3brB+PURGwqhRql+gEEIIIYQFtKykClQT5tWr1TLg1VfD//4nJReEEEII0WQtL6kC8PeHX3+FKVPgX/+CO+5Qy4JCCCGEEI3UMjaq18bVFb76Sp0EfPFFSE5Wt92bVltECCGEEC1Ty5ypOsVggBdegFdegQULYMQIyMzUOyohhBAt3HXXXUdISAid5KS6XWnZSdUpd94J330Hf/0FAwbAwYN6RySEEKIFmzFjBkuWLNE7DNFAklSdcvnlsGwZZGWpTewbN+odkRBCCHuwbQ683Ake81P/bpvT5EsOGTKEgICApscmmpUkVWcaOBDWrAEPDxg2DBYu1DsiIYQQtmzbHPjpDshNAkzq35/usEhiJeyPJFVna9cO1q1T/15yCbz/vt4RCSGEsFXLnoDy4ppj5cVqXLQ4klTVJiwMVq5UVdhnzYL//EdqWQkhhDCXm9ywceHQJKk6Fy8v+PFHuP56ePJJmDkTysv1jkoIIYQt8Y1q2LhwaJJU1cXZWS3/Pf44fPopjBsHeXl6RyWEEMJWjPgPOJ9V39DZXY03wVVXXUX//v3Zs2cPUVFRfPjhh026nmgeLbf4Z31pmlr+i46GG2+EoUPVBvaICL0jE0IIobcuV6h/lz2hlvx8o1RCdWq8kb6W3rR2SZKq+po5UyVSl1+uSi4sXgwdOugdlRBCCL11uaLJSZRwDLL81xCjRsGqVVBaqsovrFqld0RCCCGEsBGSVDVUjx6wfj2EhqrTgXOkFokQQgghJKlqnLg4WLsWeveGKVPgpZek5IIQQgjRwklS1VgBAbB0qdpjde+9cPfdUFmpd1RCCCGE0IkkVU3h5qaW/+66C159Vc1aFRef92FCCCGEcDySVDWVwQAvv6yWAL//Xu2zysrSOyohhBAO4rHHHuOFF15o1GMHDBhQ58fHjh1LTk5Oo659phkzZjB37twmX6chvLy8mvX56sMiSZWmaX6aps3VNG23pmm7NE3rb4nr2pW774Zvv4VNm9TJwEOH9I5ICCFEC7d27do6P75o0SL8/PyaJxgdmUwmqqqqrP48lpqpehVYYjKZ2gFdgV0Wuq59mTwZfvsN0tNVLavNm/WOSAghhB166qmnSExMZOTIkezZs+f0+IEDBxg9ejQ9e/Zk8ODB7N69G4Djx49z6aWX0rVrV7p27Xo6mTo1m5OWlsaQIUPo1q0bnTp14o8//gAgLi6OzMxMAF566SU6depEp06deOWVVwA4fPgw7du358Ybb6Rjx45ccsklFJ9jm8vSpUsZPHgwbdu25eeffwagpKSEmTNn0rlzZ7p3787y5csB+OSTT7jttttOP3b8+PGsWLHidMyPPPIIXbt2pV+/fhw/fhyAQ4cO0b9/f3r37s2jjz56+rEFBQWMGDGCHj160LlzZxYsWFAj9ltuuYUePXrw5JNPcvfdd59+3Pvvv88999zT0C9NnZpc/FPTNB9gCDADwGQylQFlTb2u3Ro8GNasgTFjVPX1775T7wshhLA/d90FW7eaDbtXVoKTU+Ou2a0bnExaarN582a++eYbtmzZQkVFBT169KBnz54AzJo1i3feeYc2bdqwYcMGbrnlFn7//XfuuOMOhg4dyg8//EBlZSUFBQU1rvnVV18xatQoHnnkESorKykqKjJ7zo8//pgNGzZgMpno27cvQ4cOxd/fn3379vH111/z/vvvc9lllzFv3jymTZtmFvfhw4dZuXIlBw4cYPjw4ezfv58333wTgO3bt7N7924uuugi9u7dW+enp7CwkH79+vHUU0/xr3/9i/fff59///vf3Hnnndx8881Mnz799HUB3Nzc+OGHH/Dx8SEzM5N+/fpx8cUXA7Bnzx4+/vhj3nrrLQoLC+nSpQvPP/88zs7OfPzxx7z77rt1xtJQlqio3grIAD7WNK0rsBm402QyFZ55J03TZgGzAIKDg09npI7K5cUX6fzQQ3iNH8+ee+7h2LhxFBQUOPzrro287pZFXnfL4oiv29fXl/z8fABcy8ow1Hay22SiopEnvqvKyig9ef3a/Pbbb4wdO5bKyko0TWP06NGUlpaSlpbG2rVrufzyy0/ft7S0lPz8fJYtW8abb755Om6DwXD6/fz8fDp27Mgtt9xCQUEB48ePp0uXLuTn52MymSgoKGDp0qWMHTv29BLZuHHjTscRGxtL69atyc/Pp0uXLuzZs+f0tU8pLy/n4osvprCwkLCwMGJjY9m8eTMrVqzgpptuIj8/n8jISKKiotiyZQslJSWUlZWdvk5FRQVFRUXk5+fj4uLC0KFDyc/Pp0OHDixfvpz8/HxWr17NJ598Qn5+PhMnTuSBBx4gPz+f8vJyHnzwQdauXYvBYCAlJYUDBw5QUlJCTEwMHTt2PP08gwcP5rvvviMxMZGSkhLi4uLMXktJSUmjv6ctkVQZgR7A7SaTaYOmaa8CDwKPnnknk8n0HvAeQGJiomnYsGEWeGobd9FFMHky7V54gXYeHqwYNowW8brPsmLFCnndLYi87pbFEV/3rl278Pb2VjfeeqvW++Tn51ffpxFc6viYm5sbbm5up6/v4uKCq6srnp6e+Pn5sW3bNrPHaJqGt7c3rq6uZh/z9vZm9OjRrF69moULFzJ79mzuv/9+pk+fjqZpeHl54erqiqur6+nndHV1xc3NDS8vL9zd3U+POzs7n77mmZydnWvcz8nJCS8vL5ycnPDw8Kgx7unpiZeXF0aj8fR4RUXF6fs5Ozvj4+MDqKXAU69N0zR8fHwwGo2YTtaG9Pb25pNPPiE3N5ctW7bg7OxMXFwcRqMRLy8vvLy8asR688038/TTT9OuXTtuuOGGWr+Gbm5udO/evY6v0LlZYk9VMpBsMpk2nLw9F5VkCW9v+Okn1TfwiSdIfP55KC/XOyohhBA2bMiQIfzwww8UFxeTn5/PTz/9BICPjw/x8fF89913gNp8/ffffwMwYsQI3n77bQAqKyvJy8urcc0jR44QEhLCjTfeyPXXX89ff/1l9pzz58+nqKiIwsJCfvjhBwYPHtyguL/77juqqqo4cOAABw8eJDExkSFDhvDll18CsHfvXo4ePUpiYiJxcXFs3bqVqqoqkpKS+PPPP897/YEDB/LNN98AnL4mQG5uLiEhITg7O7N8+XKOHDlyzmv07duXpKQkvvrqK6666qoGvb76aHJSZTKZjgFJmqYlnhwaAexs6nUdhrMzfPgh/N//Eb5kCUyYAHVM+wohhGjZevTowZQpU+jWrRuXX355jeTmyy+/5MMPP6Rr16507Njx9KbsV199leXLl9O5c2d69uzJjh07alxzxYoVdOvWje7duzNv3jzuvPNOs+ecMWMGffr0oW/fvtxwww0Nnq1JTExk6NChjBkzhnfeeQc3NzduueUWKisr6dy5M1OmTOGTTz7B1dWVgQMHEh8fT+fOnbnvvvvo0eP8czGvvvoqb775Jr179yY3N/f0+NSpU9m0aRO9evXiyy+/pF27dnVe54orrmDgwIH4+/s36PXVh2ayQHsVTdO6AR+gZjQPAjNNJlP2ue6fmJhoOvM0Q0ux+/77affyy9ClCyxcCOHheofULBxxeaA+5HW3LPK6HceuXbto3759nfdp6vKfvXKE1z1+/HjuvvtuRowYUevHa/v6a5q22WQy9TrftS1SUsFkMm01mUy9TCZTF5PJNLGuhKolOzZunFoO3LtXlVzY1TIrTwghhBDNLScnh7Zt2+Lu7n7OhKqppKJ6cxszBlauhJISVSR09Wq9IxJCCCEcnp+fH3v37j29J80aJKnSQ8+esG4dhITAyJGqlpUQQggh7JokVXqJj1dFQnv2VI2Y6ygEJ4QQDqs4B8qKznu35maJ/cbC/jT16y5JlZ4CA2HpUrj0UtU78J57oBl6EwkhhO4KjsOf78EHI+DLSXBwJVRW6B0VoOoUZWVlSWLVwphMJrKysnBzc2v0NSxR/FM0hbs7zJmjEqqXX4bkZPjsM2jCF1UIIWze9nnwy0Pq/az98MWlcN2vEHXeA1ZWFxUVRXJyMhkZGee8T0lJSZP++NorR3/dbm5uREVFNfrxklTZAicntfwXGwv33gtpabBgAQQE6B2ZEEJYXkEGrH+z5lhVJSRvsomkytnZmfj4+Drvs2LFikZX3bZnLfV115cs/9kKTVOzVd98A3/+qU4GHj6sd1RCCGFZ+cchcx+4+ph/zMWz+eMRwoIkqbI1U6bAr7/CsWOqltWWLXpHJIQQllGQAT/fCV9eBl3PahHiGQTRffSJSwgLkeU/WzR0qKpfNWYMDBkCc+fCqFF6RyWEEE1z/B/Ys1i9v+1bGPkY5CRBUBtoNRyCE+t8uBC2TmaqbFXHjrB+PbRuDePGwSef6B2REEI0TUl1vzaO/wNLH4NdC6D1SAipu1+bEPZAkipbFhEBq1bB8OEwcyY8+STIEV8hhL0KbANOzjXHwrqCT8vogyocnyRVts7HRzVfnj4d/vMfmDULKmyjlosQQjRISHuYOlclV5oG7S+GMc+Cq5fekQlhEbKnyh64uKjlv5gY+O9/ITUVvv0WvOQXkRDCjhgM0GoYXPcLlBWCVwg4O27NI9HyyEyVvdA0tfz37ruwZAkMGwbHj+sdlRBCNJxnIPjHSEIlHI4kVfZm1ixVGHTXLlVyYc8evSMSQgghBJJU2afx42HFCigogAEDYO1avSMSQgghWjxJquxV796wbp1qyjxiBHz/vd4RCSGEEC2aJFX2rHVrNUvVrRtMmgSvv653REIIIUSLJaf/7F1QECxbBlOnwh13wNGj8Nxz6pSNEELYqtxk1UA55yiEdYbInuBWSz9AIeyIJFWOwMNDtbK580544QVISoJPPwVXV70jE0IIcwXpMP8WOLSyeuyip6DfLfIfQmHX5LvXUTg5qeW/555TNaxGjYLsbL2jEkIIc+k7ayZUAMv/C9mHdQlHCEuRpMqRaBr861/w5Zdqr9WgQWo5UAghbElZkflYeTFUljZ/LEJYkCRVjujqq+GXXyA5Gfr1g7//1jsiIYSoFtQWXL1rjiVcBH4x+sQjhIVIUuWohg+HNWvUsuDgwbB0qd4RCSGEEpQA18yH1iPAMxh636h6ALp46h2ZEE0iG9UdWadOqpbV2LEwZgx89BFcc43eUQkhBET1gimfQ2kBeASCk/w5EvZPZqocXVQU/PEHDBkC06fD00+DyaR3VEIIoWamvEMloRIOQ5KqlsDXFxYvVrWsHnkEZs+Gigq9oxJCCCEcivz3oKVwcYHPP4eYGHjmGUhJUaUXPGUPgxBCCGEJMlPVkmiaWv576y01czVsGBw/rndUQgghhEOQpKoluvlm+OEH2LEDBgyAvXv1jkgIIYSwe5JUtVQXXwzLl0Nenkqs1q3TOyIhHNOJQ5C0EXKS9I5ECGFlklS1ZH37qmTKzw8uuADmz9c7IiEcR1Ul7PwR3h0MH46E94bCwZXnf5wQwm5JUtXSJSSoxKpLF7jsMnjzTb0jEsIxZO2DeddDab66XZQFc2fKjJUQDkySKgHBwWopcMIEuO02eOABqKrSOyoh7FtOMlSW1RwryoL8Y/rEI4SwOkmqhOLhAfPmqU3szz+vKq+XSnNTIRrNOxS0s37FunqDZ5A+8QghrE6SKlHNaFTLf888A199pVrb5OToHZUQ9ikoEcY8X51YOTnDJW9CQLy+cQkhrEaKf4qaNA0efFC1t7nuOtWMedEiiI7WOzIh7IvRBbpPh5h+kH8cfKMgqI3eUQkhrEhmqkTtpk1TBUKPHoX+/WHbNr0jEsL+OLtCWGdoMxJC2oHBSe+IhBBWJEmVOLcRI1QzZlAzVsuW6RuPEEIIYcMkqRJ169IF1q9XPQPHjIEvvtA7IiGEEMImSVIlzi8qSs1YDRqkTgU+8wyYTHpHJYQQQtgUSapE/fj5qT1WV18NDz8Mt9wCFRV6RyVEy1VZDln7IXO/el8IoTs5/Sfqz9UVPv9cnQR87jlISYGvvwZPT70jE6JlyT8O696ADW+rWeM+N8GA28EnXO/IhGjRZKZKNIzBAM8+C2+8AT//rHoGpqfrHZUQLcv+pbD2NTVDVVUB699UY0IIXUlSJRrn1lvh++9VqYUBA2D/fr0jEqLl2LnAfGz7nOaPQwhRgyRVovEmToTff1dV1/v3hw0b9I5IiJYhoof5WFSf5o9DCFGDJFWiafr3h7VrwccHhg+HH3/UOyIhHF/HieB7RpcD7wjoPEm3cKymtAAqZBO+sB+yUV00Xdu2sG4djB8Pl16q+gfOnq13VEI4rpB2MHMxpO9QG9VDOoB/rN5RWU5eqlri/Osz1UNxwG0Q1UvvqIQ4L0mqhGWEhMDy5XDllXDzzaq9zVNPqV6CQgjL84tWb46mqgo2fgB/vKhup++E/b/CDcsgpL2+sQlxHrL8JyzH0xN++AFmzVIFQqdPh7IyvaMSwjoqSiEnCYpz9I7EseSlwLo3a46VFcLxHfrEI0QDyEyVsCyjEd55B2Jj4ZFHIC0Np7vu0jsqIc4v5yjkJoNHEAS2rrv5ccZeWPks7PoJgtvB6GebL05HZ3ACZ3eoKKk57uSiTzxCNIDMVAnL0zRVdf3TT2HlSrrfeSckJ+sdlRDndng1vDsEPh4D7w6CLV9CeWnt9y3Jh0X3wz/zoLIMjm2DLy6DiuLmjdlR+UTAiP+rOeYbDWGd9YlHiAaQmSphPdOnQ3g4bhMnqlOCixdDp056RyVETXlpMO8GKM5WtytK4ec7IKIrhHet5f7JcGhFzbGKEijNVzNdvlFWD9nhdbpcJVcHlkNAPLQarv4VwsbJTJWwrgsvZMurr6rNp4MGqc3sQtiSwnTIT6s5ZjKpBKk2zh7g6mM+bqqCI2ssH5+tyU2G3Ytg+1w4ZqV9Tm4+0HYUjHkW+t4EwW2t8zxCWJgkVcLqChMSVMmFyEgYNUr1CxTCVngEgVeI+bhPRO3394+FC5+oORY3WC0Xpv5t+fhsSfZh+PpK+OYqmHc9fHCB2kQuhABk+U80l5gYWL1aVWG/+mq1x+q++6TkgtCfbyRMfBfmXANlBWqj9Khn1Ab0c+k0GYxucGK/+jfrAJRkQ9vezRe3HpI2wrHt1bcrStQsX1khuEhjdSEkqRLNx98ffv0Vrr0W/vUvVcvqlVfAqY5TVkI0h4QL4KZVamnLMwgC24CxjtNmbl4Q1Rs2fQzJG9R/Drq9DjH9my9mPeSnmo9VlEpSJcRJklSJ5uXqCl99BdHR8MILasbqq6/A3V3vyERLF9havdVXUAJc/S2cOKgSsF0Z4B1mvfhsQW09Bz0CwDO4+WMRwgbJnirR/AwG+N//4NVXYcECGDECMjP1jkqIhvPwh6ie6ri/1gJ+nUb0gEveAnd/tUza41rwCJRlfCFOkpkqoZ877oCoKJg6FQYMgCVLoFUrvaMSQpyLqyd0nwqth6tlP58oWN0CTjwKUU8t4L9WwqZddhksXQpZWaqW1aZNekckhDgfnwhVN8rorHckQtgUSaqE/gYOhLVrwcMDhg6FRYv0jkgIIYRoMEmqhG1ITFS1rNq3h4svhvff1zsiIYS9M5mgvOT89xPCQiSpErYjLAxWrICLLoJZs+A//1G/FIUQoqHSd8Gv/4aPRsEfL6nCpUJYmWxUF7bFywt+/BFuvhmefFLVsnr/fXCWvRtCiHrKS1WV308lUmlbIelPuPx9cPXWMzLh4GSmStgeoxHeew+eeAI+/RTGjYO8PL2jEkLYi4w95jNTexfDiUO6hCNaDkmqhG3SNHj0Ufj4Y9WEeehQSK2lmrMQQpzNUMsijKap2lpCWJEkVcK2zZgBP/8M+/erkgs7d+odkRDC1gUnqjZCZ+oxAwIaUDFfiEaQPVXC9o0aBatWwdixqvzCggUwZIjeUQkhbJVXCFz2ARz4HVI2QavhEDcYnN30jkw4OEmqhH3o3h3Wr4cxY+DCC+Hzz+GKK/SOStiijL2wZxGk/Q3txkH8EPVHVrQsAXEQcB30vk7vSEQLIkmVsB+xsbB6NUycCFOmqGbMd98tfcdEtZwk+HIy5BxWt3d8D4Pvg2EPgZP8uhNCWJfsqRL2JSAAfv0VJk+Ge+9VSVVlpd5RCVuRvqM6oTpl7WuQc1SXcIQQLYv8103YHzc3+OYbiI6Gl16CpCT44gtwd9c7MqE3U1XtY5YqIlterIpK5h8D3ygIbgdGF8tcW1hfThKU5oFPJLj76R2NcECSVAn7ZDDAiy+qxOqee9Q+qwULIDBQ78iEnoI7qP1TBenVY72uB7+Ypl+7vBQ2fQS/PKxuaxpc8hZ0uVJ9PwrbVVGm9tn9fBcUZ0NED7j4dQjrpHdkwsHIbwJh3+66C+bMgU2b1MnAQ1Lcr0ULiINr5kO/WyG6D4x7EQbdCcZGVOQvSIftc+Hb6bDyf5D6l2p7corJBAvvgRMHLRW9sJb0nTB3hkqoQH0tf74HSqSosLAsmakS9m/SJNU38OKLVS2rhQuhZ0+9oxJ6Ce0Io5+GyorGb06vqoKNH8LKZ9XtXQtg+CPmy4vlxVCUBSQ0KWRhZScOmi8BJ2+A/DRw89EnJuGQZKZKOIZBg2DNGrXfauhQWLxY74iE3ppy2i/nCKx5ueZYZSk4e9Qc8wxWe6uEbfMMNh/zDgM33+aPRTg0SaqE42jfHtatg7ZtYcIE+PBDvSMSdstkPiv11+dqD9WpP9A+kXDFp+Ab2fzhiYYJ7QQ9rq2+bTDC+FdVYiWEBVls+U/TNCdgE5BiMpnGW+q6QjRIeDisXKlKLtxwgzoZ+H//J7WsRMP4xkDfm1U5hlNMlRDZHWatUEt+nqHgYyd/lCsrVDHUY9vB1Rsie0BAvN5RNR8Pfxj5OHSZor52Aa3Uyc38Y2B0k5OAwmIsuafqTmAXIAvUQl/e3vDTT3DTTfD443D0KLz7Ljg3YrOyaJmcjNDvFghMgL+/gsie0PVq8I9TH7e3Jb9Dq+DLy6tn3/zjYNr3EFiPXnjlRWBwsf/iqR7+EDdQvZ+bAqueh40fqJnHC59QrWykPIZoIov8lGiaFgWMA54C7rHENYVoEmdntfwXE6MSq9RU+O47lXAJUR8+4dDzWuh+jX2XTCjJg6WP1VzOzD4MyZvqTqry0mDXT7DlcwhpD31nqxkue2cywdYvYeVz6nZRFnw9BWb+AjF99Y1N2D3NZIGieJqmzQWeAbyB+2pb/tM0bRYwCyA4OLjnnDlzmvy89qagoAAvLy+9w2h2er/usIULSXzpJQpat2b7M89Q1ky1rPR+3XqR121jqiogY7f690w+kbVv4D4lPw0Kjlff1gwQ1FYtl53BZl/3uZzz8xEFnkH1vozdvW4Laamve/jw4ZtNJlOv892vyUmVpmnjgbEmk+kWTdOGcY6k6kyJiYmmPXv2NOl57dGKFSsYNmyY3mE0O5t43YsXq31WQUHq/fbtrf6UNvG6dSCv28aYTGpWZsUz1WOaVvfMTE4SvNETKkprjk/6CDpdXmPIZl/3uRTnwqfj4di2muOXvQ9d6t+k3e5et4W01NetaVq9kipLzGkPBC7WNO0w8A1wgaZpX1jgukJYzpgxagN7SYkqErp6td4RCdE8NE0tYQ75F7j7q9mmK7+GiO7nfozBYDYjpcYbsC+xqhJOHFI1oiorzn//5uLuCyMfUzNvp/jFQuR5/14KcV5N3lNlMpkeAh4COGOmalpTryuExfXsqUoujBkDI0eqfoGTJukdlRDW5xsJwx+GXtepZMnDv+77+0TCBf+GRfefMRYFYZ3r93wF6WoT+JpX1F6uvjerKve2cloyfghc96uarXLzVW1rAlvpHZVwAHZ+nEOIBoqPV0VCL74YrrhCNWS+6y69oxLC+jRNbb6vr85XqNISe3+BoDaQMKL+ZRgOrareCA6qNEVggtr4bwucnCG6t3oTwoIsmlSZTKYVwApLXlMIiwsMhKVLYdo0uPtuVXLhhRfs+4SXEJbm7geJo9VbQ+2Ybz729zf2f5LSmgozIOUvtYk+qK06aekVqndUooFkpkq0TO7uqhHzPffAyy9DcjJ89plqcyOEaJrwrrD7p5pjkT0loTqX8mJY9SJseLt6rPs1MPoZVaxV2A35Dhctl5MTvPKKmqX67ju48EI4cULvqISwLScOqubSP94BO35Q+6XOp/0EtS/rFM9g6HqV9WK0d1n74c93ao5t+Rwy9+oTj2g0makSLZumwb33QmQkXHutasy8eDHExuodmRD6yzsGc66tLj/w16cw4A4Y8R+1L+lcQtrBzMVwfAdggpAOLastTkOVF6nSF2bjxc0fi2gSmakSAuDKK+HXXyEtDfr1gy1b9I5ICP1l7DSv57T+LVUq4Xz8Y6HdWGg3ThKq8/GPV/uozuQbo3oUCrsiSZUQpwwdqupXOTvDkCEqyRKiNB+O/aM2EFeU6R1N86qtvpSpUr0Jy/EKgcmfQadJ4BEIHS6Bq74Gnwi9IxMNJMt/QpypY0dYvx7GjoVx4+D992HGDL2jEno5cQiWPAh7l4DBCfreCgNvV38EW4KQduAdrlrWnNLxcvCL0y0khxXaHia+BcU56uSl0VXviEQjyEyVEGeLiIBVq2DYMJg5E558svb9DsKxmUyw9SuVUIGqEL7uNTi6Xt+4mpNfDEybC71vVIU/Rzym9lO5uOsdmWMyuoJ3qCRUdkxmqoSojY8PLFwIN94I//mPqmX19ttglB8Zu2YyqcMJ9VFaADvnm48fWQMdLrZoWDYttBOMeR4qSsDFQ+9ohLBp8hdCiHNxcYFPPoGYGPjvfyE1Fb79Flpgh3Zd5adDfqrqW+ffyFOZmfvgn+/h0Apof7HaPO0XU/djnN0hup/5sfbQerZqcSQGgyRUQtSDJFVC1EXT1PJfdDTcfLNaEly4EEKl0nGzSN4Ec6+HnMPg5gcXvwaJ48CpAb+68o/BnOmQvlPdPrJWvU18G1zrSJCdjNDvJtj/W/Weopj+ED+4sa9GCOHgZE+VEPUxaxYsWAC7dkH//rBnj94ROb6C9OqECqAkB+bOhIwGfu4z9lQnVKfs+rF+ZQFCO8H1v8G0eXDtT3DFZ42fLRNCODxJqoSor/HjYcUKKCiAAQNg7Vq9I3Js+ceqE6pTqirNx85HO8evuXpurcIvGhJGQvyQlnPqTwjRKJJUCdEQvXvDunWqKfOIEfD993pH5Ljc/dXb2RraZDY4EcK71RzrfEXLK6xYdEK9CSGsRpIqIRqqdWtYswa6dYNJk+D11/WOyDH5RcPFr4PhjP1TQx+E4HYNu45XCEz6CC76L7QdA+NfgZH/By6eFg3XZhXnwt9fwwcj1NvWr6E4r/njyD8GRVnN/7xCNCPZqC5EYwQHw7JlcPXVcMcdquTCc8+pU1LCchLHwk1/QM4R8AxRCZVrI5KhwNYw4Hb11tIcWQ0/zK6+PX82XPmVOgHZHPKPw99fwdrXwcULRj4GbUfLaUJR04nDkH0I3HwhKLFxP+c2QJIqIRrLwwPmzVNJ1QsvQFISfPopuErhPosxOEFoB/VmS45tg5S/1H6tyF62F9+ZtnxpPrb5s+ZLqnb9CEsfU+8XZanDBtN/hFZDG3e90nxI3wUFx8EvViXaRheLhSt0kPQnfDlZHUYB6H87DLlPVZa3M5JUCdEUTk7wxhsQGwsPPADHjsEPP4B/LXuBhGNI3gSfjofyYnXb1RuuXahvTHXxjTQf84tunucuyYeNH5iPH/i9cUlVaQGseRVW/U/d1gxw2fvQeVLT4hT6KcqGhfdUJ1QA616HthepwyF2RtYqhGgqTYN//Qu+/FKdCBw0SC0HCse0+dPqhArUzMkOGz6w0PUqcD5jqc3ZHbpd1TzPbXQB31oSuMY2Cs7YXZ1QAZiq4Oe71NKRsE8lOXBsu/l4Xmqzh2IJMlMlhKVcfTWEh8PEidCvH15PPKGKhQrHYTKp/V1ny0mC4OYPp14ie8D1v0LyRhV/dG8I61K/xxbnqESmrFDtS/OPa9hzG11h8D1waCVUlqkxr5DGL/0VZpqPleZDSTbQwNgsIS8Njq6F1C0Q0UMVh/UJb/447JlHoOpckHRWT83zdTywUZJUCWFJw4fD6tUwdizd7rxTLQteeKHeUQlL0TToOUMlCWfqMhnSdImofsI6q7eGyD8OvzwM/8xVtz0CYNr3ENG9YdeJ6a8KqB7bDkY3iOgGQW0ado1T/GPByaU6QQPwiwOfWpY4rc1UBb/+u/rzYzDChFfVacvMPdDmIogdoD5v4tzcfGDs8/DtNMg5Ck7OcMF/Gv79aiNk+U8IS+vcGdatoyQsDMaOhc8+0zsiYUmthsOE19Syln8cXPoOxA7UOyrLS/2rOmEAVeNq6RNq1qohNE0lUj2uUclnYxMqUKfCpnwBnienBQPbwOSP9CnKWlFS8/PTdzasfA5+fRj++hS+nQpbvlCzg6Ju4V3h+qUq+Z69GvrdrPYq2iGZqRLCGqKi2PLqqwx++WW49lp1MvDhh9UfGGHfPPyh57UnT89p4Bmod0TWkZtkPpayCUpy9avxZTBA21Ewe61a9nP3Bc8gfWI5O1ly9VIzLWda+Sx0nGi3S1nNyjtUvdk5makSwkoqvbxg8WKYOhX+/W+YPRsqKvQOS1iKZ5DjJlSgZoHO1uYitQdGL+XF6uTgz3fB70+o0goVZed9mFUYXSHojEK0tc1IVZap1kqixZCkSghrcnGBzz+Hhx6C995Tm9gLG7h8IoQeIrrD8EeqK9qHd4Uh96tkQi9H1sLnl8KehbBzPnw2AZI26BOLwQhXfAq9b1AtjwJbg5tfzfv0nlX76UfhsGT5Twhr0zR4+mmIjobbblMnAn/+GULtf6pbOICyIlVI09W75lKaux8MuhvaX6xue0eAu48uIQJqJujPD8zHtn0L8YP1iSmkHYx5Xi1Funqrmas/34Pj26Hr1dDhYnByoD+z5SWyR+w8HOirLYSNu/lmiIyEK6+EAQPU0mDbtpZ/nrIiyNyrqlf7x0JgguWfQziGjD3w239g7xI12zLuJYgfWt1uqbIccpNh4/uq1lXv6yG6rzqhpYfaEhSDFWKpqoTCDHD2BLfzbJg2OFVX/o7oChe/ppb9nN0tH5deyorg0CpY+yr4XAZ7SlVhTmk1ZEaW/4RoThdfDMuXQ16eSqzWrbPs9UvzVcXp94bCF5fBu0PVL0MhinPgwHLY+BHs+xWyk+Cnu1RCBXDiIHx1hapLdcqR1fDl5eo+O76HTyeozep60DTofWPNwx4GJ+hyhWWfJ/sw/PYovNVPLS8eWgVVVfV/vMHJsRIqgKPr4Ospavm1rFC9f3St3lHZJEmqhGhuffuqZMrPDy64ABYssNy1j+9QJ45OKSuABbdBfrrlnkM0Xf4x2LkAfn8Kdv6oakJZU0UZrHsTPp8IC+9WfdZWPmveM6+yDLL2n3y/XD3mTKYq2GHB79eGiukH1/4M3adBz5kwYxFE9bbc9SvK4Y+X1esuzlZFPb+4DNJ3WO457NFfn5uPbf60+eOwA7L8J4QeEhJUYjV+PFx2Gbz2Gtx6a9Ovm19LBcqcI1B8Arx1qOXTElSWq0SkrFAtlflG1X3/0nzVYPjvr6vHul8DY54FFy/rxJi1H/54oebY1i9UkcWDK2qOn25iq4FWy58IPfcIGV0gbpB6s4b8VPV5OVNluTplaKfFKC2itppRrjrur7NhMlMlhF6Cg9VS4LhxagP7gw82bJmhNrXVwwluX10sUVhWWaFqGPzOIMjaB+8Ng6Q/635M5r6aCRXAls8hc7/VwqSsUM0yne3s75cOEyGko3rfyQj9b6n5cYOxeuO6NRWdgKMb4Mi62lvTWIvRtfYK6K5WSnbtRfdp1adAQb3f4xr94rFhMlMlhJ48POD77+GOO+C551SR0I8+AtdGHlsP6QDjX4ElD0BFqWpce8kbjl1PSU/pO2HJg9W3CzNgwa0wc8m5P+cVJQ0btwT/OAhqqw4wnOIZDFG9VCXrE/vBM0T1BDwz7tiBMP0nlQQ6u0GXKyGyp/XiBNUcecGtaj8XqOW9S99VJQuszTsMRj0D866vHgvrWv9eiY4qqjdctwT2/AJFoer7O7KH3lHZJEmqhNCb0QhvvgkxMaqeVVqaSrT8/Bp+LWd36DFdLY8UZ6saOdLg1Xpyaqk6nrlXJVfnSqoCWqsTmVlnzEwFtVPj1uIVDJM/geVPq+KZ0X1h5GMQEK/eos+xL8nZDVoNUW/NZd+S6oQKVCPonQtUY+bm0G4czFwEx3aoEhORvc6/pOvoDAaVWEX1hhUrzv39IiSpEsImaJpa/ouKguuug8GDYdEiVduqoQxOTeuvJurPt5ZGvv7xdVcd9w5V/evWvaH2M7W6APrfqhIfawrtCJd/oJbW3P30azVzPgeWm4/t/03VzGqONk/O7mqGzhH7OQqrkz1VQtiSadNU/aqjR6F/f9i2Te+IRF1COsKI/4B28lepmx9MfPP8CVJIe7VMO2sVjH9JFZFsDs7uKhG01YQKoM2F5mOJY+2/b2ZBOuSmNH3fpLBpklQJYWtGjIA//lDvDx4My5bpG484N1cv6Hcr3LRKLenNWln/GQ4nZ7VEqFchTVvV5iJoO7r6dvxwaDdev3iaqqwQts9Vhxje6gsrnoG8VL2jElYiSZUQtqhLF1i/Xu2zGjMGvvji/I8R+nB2U8ftXbwgIE7vaOxbXpo6Hdl9utpAf+Ny1V8vIF7vyBoveZPa+J6XospprHoetn+nd1TCSmRPlRC2KipKzVhddhlcc406Gfjgg/a/DCJEbU4chu9mQNoWddvdH6YvAHdfPaNquiNrzMc2f6ISRw//Zg9HWJckVULYMj8/tcdq5kx4+GG11+r119WJQSGaS1WlmnHZPheqyqHzJIjqY16RvSkOr65OqECdXl37BlzyFhjteIk0ogcMe/BknTANNrwLfrFqhlM4HPnNLIStc3VVy38xMaqWVWoqfP21qnElRHNI3gSfjFHJFcBfn8A1P1q21MKZPQdPSf0LygvB6Ge552lOmftUHbPsQ+q2qzcMfwTCuzpef0AByJ4qIeyDwQDPPgtvvAE//aR6BmZk6B2VaCm2f1edUAGYTPDne+pfS4kbYD7WadIZbXPs0MEV1QkVqD1VSX9CpNR5clSSVAlhT269VRUG/ftvGDAA9luxtYmwH/npcOgPtYRWYIXm2ZVlqv6Z28n9TQYjtL4A1r8NuUmw6ydV/6opovupWRyjq9o32PEy6HZV02PXU9YB87GMXVBpxer5Qley/CeEvZk4EX7/HSZMULWsfv4Z+vbVOyqhl8x9MOdaSN+hbkf2gsves2xbl65Xqsr8RVngFabqXK19FbIPQ+Lj8O1tqkL7wLsaf5DCIwAG3wudLlf7tnxjwcXOl8haD4cNb9cc635N7Q2KhUOQmSoh7FH//rB2Lfj4wPDh8OOPekckrK2sUFUbX3g/rHoRjv2jxv/5vjqhAkjZBHsWW+55C9Lh96dgxbPw5/vw+5NQnKNmrs608nnIOdq05zI4qWQwuJ39J1Sg2gGNeR5cfVQ9sn63qabVwmFJUiWEvWrbFtatg06d4NJL4Z139I5IWNPeX+HzibDxPfj9CfhkHBzfCQdraetyZK3lnjd9Z81efABrXoH2l9Qcqyyrue+qLvnHIGULZB+xSIhNVlUJlRWWv667H/S9CW5ZC7dtggsfr721kXAYsvwnhD0LCYHly+HKK+Hmm1XJhaeeklpWjqYoG5Y/VXOsJEc1G+5wCRxdV/NjtbV6aayyYvOxihLz02u9bgC/evSqPLoe5s5UVcXdfOHiN1QT47NnvppDRRkkrYf176jX1Hc2xA20fBsf30b08BTNLy8VUreqAwXBiRDaCZwaliZJUiWEvfP0hB9+UJvYn3lGFQn98ENwsWANIaEvUyVU1JLcVJZD4ji1SX3PQjXW6XJIGGm55w5uo5KfktzqsbajVSKUkwTl7jD6OWg/4fwtd/LSVIHP/DR1uyQX5l0HN/2h+iE2t5SN8NnF1acYDyyDq7+Dthc1fyxCX7kp8N1MSN6gbhuc4KpvG/wfFEmqhHAERqNa/ouJgX//G9LSYN488LXzatRC8QyCgXfDonurx5xcIKon+MfApe/CiYOq9EZAvGqZYymBCXDNfFj5HKRugY6XQp9Zau/ThFdg5SroN7x+18pPq06oTqksV3ux9Eiqtn9vXhZiw9vqZGMDZyhqOHEYijLBK7R+s3dCf2lbqxMqUEvCix9QxVs9A+t9GUmqhHAUmgaPPKLa29xwg2rGvGiRui3sX8eJ4OoJG95Ty0n9b4Hwbupjbt4Q0dV6zx3ZAyZ/opZFPAKrl+oMTur7rrRQJXnnq3zuEaA2bZfm1Rz3CrVK2OflVMtsrpNr45fPq6pgzyKYf7N6jR6BMOkjaDWsSWGKZlCcYz6WmwTltcwQ10E2qgvhaK69ViVThw+rU4L//KN3RPYh6wD8Mw+2fg3HtusdjTnPIOh6FcxcrP5Qx/Rr3r1zzu7gFVJz71NeGhRmwIcj4fsbVOX1uvjHwSVvqDpXp1z4hNq/oodOl9WMRdOg382N39+VtU8tZ55KGouy1HJnU09FCusLamv+89TlygYn/DJTJYQjuvBCWLUKxo6FQYPUnqvh9VyiaYky9sBnl1QvTRnd4Nof1ZH45paTBPuXqrIIcQPV3qXAhOqP20rPuKoq2PQh5HmpE4LpO2Hfr3Dj73Uv5SWOg9l/QPZR8A5V5RP0atkS2VMlqf98DxWl0Ply1dOwsfJS1HXOVJytkk+/mKbFKqwrvCtc8Tks/hcUHIfOU2Dw3Q3uOylJlRCOqls3WL8exoyBUaPgk0/g6qv1jso2HVxRc69PRQmsfg0mf2zZpsHnU1YIyx5XbWEA9v2iZs+mzlWzRLYkLxXWvQGtHqweKy9S9bPqSqqcjBDSQb3pzWCA6D7qzRK8QtUs15mlJVw81SyjsG1GF3XYIqqvOhTiHd6on31Z/hPCkcXEwOrVahlw6lR4/nnL9mtzFLlJ5mPZB6Cy1Hzcmk4crE6oTkn7W82kWVN5CaT8pWZsjqyDkrzzP8bgVPsM0/lOAOqpONd8JsmSAtvA2BdAO/mn1clZlYwIaGW95xSW5R0C/rGN/s+UzFQJ4ej8/eHXX9VeqwceUCUXXnkFnHSoC2SrWl0Aa1+vOdbzuuZvJ3LOfLeeibDJpBr4lher5ab6xF9VpRK5H2+rHht0Dwy+T22MPxefcLjwv7D7jMbePpFqGcXW5CarGb8tn0NQOxh0F0T1svzzGF2g2zSI6q0KnPpGqURL6sa1GJJUCdESuLrCV19BdDS88AIkJ6vb7g7QCsQSonvDxHdg2WNqCa7/7dDh4uaPIyBeFfPcuaB6LKQDBNVjI3dpPmz9EpY+rpbh4ofCuBfUBty6ZB+ExffXHFv9kloKiexhfv+KMkj9C46sUSf5AhOg/x3gFwmthqvXYEsqK2Dd27D+DXU7cx8c/B1uWGadMg5GFwjrrN5EiyNJlRAthcEA//ufSqzuugtGjFA9A4Nkvweu3tDtKkgYAVUVaj+FHrMLrl5q9id2IOz6EeKHqVIK3medQCpIh9IC8A4DFw81lrpF1dU55dBK+ONlmPBa3Ztti3NrPzZelFX7/Q+thK8mVy8jt38Khk+FkHb1fJHNLC9FtfY5U1khHN+hT20s4dAkqRKipbnjDlW7aupUGDAAliyBVi1kz0dhpjqJ5e5Xe1FGW9gM7h+j+sX1vUndrqpSe6pyjoJ7gJqRWnCLShbajlX95ILbQsZe82vt/hku+Hfd/eZcvcEvDnIOV485e6jyB2crzYff/1udULl4qVpPqVvrl1RVVUJZkUoemytpNRjV66ksqzlutJFTlMKhyEZ1IVqiyy6DpUshK0ttYt+4Ue+IrC9lC3w0Gt4dBO8OVktsleV6R3V+B5bBu0Pgy0nwwQVqButUQrh3Efz2H5Wo+ESYPzakI7j5mI9XVqi3skJY9Tz0m109a+MbrY6Wn1nG4ZSKMlUiAKDnTFVZ3eCk9nFlHaj7dRzfqY6rfzgCfn9S3d9kUjNG/3wP+5ZC/vH6f17qyzcSRvxfzTH/VhDexfLPJVo8makSoqUaOBDWroXRo2HYMPj2Wxg/Xu+orKMwE36YpYozgkoM5s6EWSvr3vtiMsGJA1B0QiUtvs1cnT4vVc1KVZRUj236EIY/ohoTA+xdrMpBRHSHhItg/69q3MULLnq85mb18hK1F2rDO+p2zxmQsVslmB0uVjWxCjPVqb7aZpI8A6HfLarPYMEx2PwxJD4OK5+Fvb/A1Dm1z/blpcLXV0LOEXU7Y486bTjwTvjqiupZpNjBcNm7dc+sNUbnSSquQ6vU1zB2gNSNElYhSZUQLVliIqxbp5KpSy6Bt96Cm27SOyrLyz8GmWctj1VVQvbhcydVFWWw4wf4+S618dszGCZ/BnEDrB1ttaITav+UWWxnlAXwDlO1kLzD4NK31YxQWQEEtVFvZ0paD19cVn17369w0X/ht0dh+9zq8U6Tzh1Tp8tU0vPttJrjaVvU57i2pCpzb3VCdYq7H/z675rLckf+UD3YLJ1UZR9SyamL58nG0Bpc+1PtG/GFaAJZ/hPCxuQVl3M0q4j8kmZamgoLgxUrVIHQ2bNVQ2ZHq2Xl5qv6sJ3Ns449VJl7YP5slVCBascy7zq1J8uaMvaqaupH1qq4z65xpGlgdD35vgHGvqgSKlBFJlsNgXZjzRMqgM2fmY8dXQdhZ5RBCOtS92lDrxDwi639Y1VVtY/X1mPPJ1LNAp7tXBvkm2L7PJVM5aWqJc+yAtjypeWfR7R4klQJYUO2JmVzzUcbGPK/5cz4eCPbk3Ob54m9vNRJwBtugKeeghkzoKzsvA+zG37RMOH1mn3eBt5V9+mv3GQwnZUk5KepFhbWcmQtvDdULZV9PAZ+fwoueVMlIKBmWi5+E2L6w2Xvq5YwbUfV//q1FTR08VLLcK1HwMjHVRV57/Ns2A9oBe0m1BwLbq82zNcmONG8qbCbH3S8zPy+tSWDTZV9yHystoROiCaS5T8hbERKdjHXf7KJrEKVzGw+ks2Nn21i/m0DCPNphnpSRiO8956qwv6f/0BqKsybBz61bHS2R21HwU2r4MQh8ApW9Z9cvdWG7bxk0JzUfptTe4lOzf6cySOg9hkvSyjOUSURTs2MAWz7GrpMUclTbopaMgto1fiTcz2mw7Zvq5NFzaD2VcUOUMt69eXqBaOeVkuhKc4w7GH1+No+Z6A+Zxe/DodXq5OCMf1U2YiyAlUaYveP4O4Po56F8G6Ne2116XKF2uB/ph7TLf88osWTpEoIG3H0RNHphOqUY3klJJ0obp6kCtQf60cfVbWsbrwRhgyBRYsgopaTZfbGyQihHdXbKXmpsO4t+PMdtUQ19CHoPg08/FWj31FPq30/pip1BH/iO7WXYrCE0jw4/o/5eH4KJAw/d8LSEFF9VAPhHT+oJd5Ol0FkIyuL+8eoTesrVqiDDufjFwPdrlZvp4Wqjem5/6caRVt6L9UpcYNVva4Vz6iv5ZD7zWfOhLAASaqEsBHebkY0reZ2JoMG3q46/JjOmAHh4TBpEvTrB4sXQ8eO532Y3dn1E6w72Z6mshx++zcExkO78eoEXK8bIG4IFKarpCCgtfVi8QiGNqPUab4zWfI5nYxqliimn+Wu2VTO7hB01musLFczhwYL7VBx94Oe10LiGHXbFuqRCYcke6qEsBGtgz2ZPbTmH5c7R7QhPqiO/mvWNGoUrFoF5eUwaBCsXKlPHNZSXqLaupwt6yAk/QkHlqtkKryzqrQe1MZyf+Rr4+IOI/8PInqq284eqjlvmJXqKZ04CMmb1N4xW1GYpZYnPxkP829W8VmSV4gkVMKqZKZK2KTsojI2HMxi2a502oR6cUG7UBJCvPQOy6rcXYzMHtqKwW2CSMspIdLfnY7hPrg669j4uHt3WL8exoyBiy6Czz+HK67QLx5LcnKG0E6Q9nf1WOfJ6g/5b4+q257BMHUeRDRTk+CQ9nDN95CTpNrPNGX/1LlUVqhK6z/epiqkewbD5E8gbpBln6cxds6Hhfeo95PWq9s3LJU+esJuyEyVsDkmk4nvNiUz+4u/+G5zMk8v2s21H23g6Imi8z/Yzvm6uzCgdRCX94yiX6tAvN3r6NnWXGJjYfVq6NsXpkyBl15yjJILBidVEdzNt3osrBPsOqOZcWEGrHgaymrpjWct7n5qdiywtXVauWTtg+9vUAkVqNc4d6baCK+ngnT444WaYxUlqhK+rcnYo06BfjMV/v7WuidChV2RpErYnNScYl5dWrNQY0pOCbvS8nSKSBAQAL/+CpMnw733wt13Q2Wl3lE1XUQ3uGEZTP4UrvoGqGVWMGkDlOY0c2BWlJNs3p6nIF2Vi9CTZgBDLf+JMOg4U1ubnKPwxST1+dr9s6rUv/4dNQMoWjxJqoTNqawyUV5pPhNSUXmOwoKiebi5wTffwD33wKuvqlmr4macwbGWoDbQcaLaxBzawfzjCRepRsaOwjvUfAbMzVcVDtWTZxAMf7jmmJuv7VU9P74Dco/WHFv3hnnFeNEiSVIlbE6kvwczB8XVGPNxN9I+3EHqJemsorKK4vJGzjIZDPDii/Dyy/D993Dhhaops6OI6AGD7q2eHQnrDIPvqa5g7giC2sLoZ6sTKycXVWDUP07XsADVe/DqOdD1ahj6AFy7sO4CrbqoZenbVFX7uGhxZKO6sDlOBo3rBsQR5efOd5uT6RDuw7R+sbQKduyN6s1hW3IOH685xN7jBUzpHc2ojqGENqYG1l13QVQUTJumGjMvXgzx8RaPt9l5+MOwB6HLJCgvBv94VfDTkTi7QY8ZEDNA7QXyjbZOFfPzKcyA5M2QvlM9f1QfNYvWdlTDqsQ3t5AO4HVWzbA+N527dY9oUSSpEjYp1Neda/rHcUWvaJydDBgMVtiw28LsPZ7PVe+tp7BMzVL9Z8EO0vNKuOfCxMZ9fidNUn0DL74Y+veHhQuhZ08LR60Do4v6w9lYuSmQslmVKgjtoGa/3GxsltXZDcKtVKqhPsqLYdWLsOHt6rHOV8C4F23vc3U2/zi45gfYsFVVhe9yhaov5mQDh0qE7mT5T9g0V2cnSagsZM+xvNMJ1Snv/3GI1Nwm7IsaNAjWrFH7rYYOVTNWLVlBOiy4DeZcA788BJ9dAlu/cIzTkpaUdUBVsT/T9jmQubf2+9ua0A7gEwHX/qza/PiE6x2RsBGSVAnRQhhrKVzpajTg1NRj++3bw7p10LYtTJhA2KJFTbuePUvfBQd/rzm27EnVb1BUKy+uPdEst7OyKdYsBivsknxHCNFCtI/wIdzXrcbYfaMSCfezQF/B8HBVcX3kSNr973/w2GMtc3amrNB8rLwIKkuaPxZbFhBfswcjqL1dgQn6xCOEhcieKiFaiLhATz67rg+r9mZwMLOQC9qF0CvOv8nXPZhRwMGMQjxcnEj8ei5lV08m/PHH4ehRePddcG5Be02C2oCLF5QVVI+1HgG+MfrFZIs8g+Dyj2DNq3BgmdqbNPhetaQmhB2TpEqIFqRNqDdtQr0tdr2tSdlc88Gf5JeqwoeD2wQx/d77Ce/bFx5/HFJT4bvvwNtyz2nTgtrANfNh2RNwfDt0mAgDbgNXnU6uFp2Ao+vh8B8QnAjxQ9UskS0IaQcTXoOSbFWPypHKVogWS5IqIUSjFJVV8MIve08nVAB/7MtkcoSLWv6LjoabblIb2BcuVEuELUF0b7j6G9UGxiNQv1NhVZWw8QNY/lT1WFhnuPo729lYbXSWBsfCoTR5T5WmadGapi3XNG2Xpmk7NE270xKBCSFsW0FJBTtSc83Gy05Vvr/+evjpJ9i7V5Vc2LWrmSPUkYsneIfpe8w++7B5L71j2yF9hy7hCNESWGKjegVwr8lkag/0A27VNK0JRV6EEPbA39OFMZ3MZzzcnM/o1TZmjNrAXlKiioSuXt2MEdqQskLI3Ad5qc33nFUVUFlmPn523z8hhMU0OakymUxpJpPpr5Pv5wO7gMimXlcIYducnQzcOCSeIW1Uzzg3ZwOPjG2Ph8tZDXB79lQlF0JCYORImDtXh2h1lLEH5lwLb/SCd4fAjvlQUUuyY2l+sdBpcs0xd3+1t0oIYRWayYLHnjVNiwNWAZ1MJlPeWR+bBcwCCA4O7jlnzhyLPa+9KCgowMur5bVakdft2KpMUF5ZhQa4GA3nfN3G3Fw6//vf+OzYwYFbbiF50qTmD9aKan3dpirIPgKlZy2TBrUFZw/rB1VZBsXZ6s3ZAzyDwdkCJTTOUFBQgJenpyodUV6kljydPVRPQQfWUn6+z9ZSX/fw4cM3m0ymXue7n8WSKk3TvICVwFMmk+n7uu6bmJho2rNnj0We156sWLGCYcOG6R1Gs5PX3bLU+bqLi+Gaa2DePLj7bnjhBYcpoFjr6z5xCF7rZn7ny95X7U2aS0meSqbKiyFrn+r9G9ga3P2afOkVK1YwLDAL5l1XPRjSEa7+Fvyim3x9WyU/3y2Lpmn1SqoscvpP0zRnYB7w5fkSKiEqq0ykZBdhMGhE+rmjNbWit7Af7u7w7bdw773w8suQkgKffqra3DgiF0/wi4GcozXH3Zu5SbObj4ph4X2w7xc1Fj8cJrzc9BILVRWqJc+Z0nfAsW0OnVTp6tg/kPY3GJwgorss6dqQJidVmvqL+CGwy2QyvdT0kIStKygpR9PA07XhJ5uO5xXzydrDfLT6MEaDxp0j23JFryj8PBx7qUCcwckJXnkFYmJUcpWWBvPnQ0AzJxrNwSsExr0EX09RJQ4AEseq0gbNbd+v1QkVwKHlsOsnGHhH065rqoLiE+bjtVWXF02XvAk+Ha9mHUHtk7v2J32+p4QZS8y7DwSuAS7QNG3rybexFriusDEFJRUs3JbGFe+uY/I761i0PY3CM2oU1cdvO9N5e8VBSiuqKCyr5OlFu1h/sJZfyDrLKy4nI79lthapqjKRV1xOxanSCNZyzz3wzTewYYNqzHzkiHWfTy+tL4BZK2HSx6ow6ITXwDu0+ePY95v52N7FTW8n5OQM3a81Hwtp17TrCnNVVfDn+9UJFaj9crtbcL9NG9PkmSqTybQakPWbFmDDoSxu/eqv07dv+fIvPp7Rm+Ht6le8r6yiku82JZmNL911nNGdwiwWZ1OUV1axZn8mz/+yh4y8Uq7pH8vkXlGE+1p2c6+tOpRRwDcbk/ht53F6xwcwc0Ac7cJ9rPeEU6aooqCXXAL9+sGiRdC9u/WeTw8GJzWLoPdMQuvhsHdJzbGEC6HJy++amu1y8YStX4B/PIx8DEI6NfG6woypErJrac6dfbjZQxG1c4wdoqJZfP3nUbOx2pKkczEaDLSv5Q90mxDbOUnyT0ou132ykZ2peWQUlPLSb3sb9BrtWV5xOQ//sJ13Vx3kYGYh325M4vpPN5KaU3z+BzfFkCGwZg24uKj3f/3Vus/XUrUdDbGDqm9H9YYOl1jm2v6xKpG6eR1Mnw/xgx3mAIJNcXKGXjPNxztMbPZQRO3ku17UW5CXeW+uwFrGzsVg0JjWLxYf9+oJ0ghfN0a0t502Ff+k5FJ11mrIZ+uOkJ7n+EuBR7IKWXfWUmxKTgkHMwrO8QgL6tBB1bJq3RrGjYNPPrH+c7Y0/nEw5XO47hf1dtU36gSgpRgMalnTtYX0edRLwoUw+lm1X883Cia+DbH99Y5KnCS9/0S9Tekdzfd/pZxuQ+JqNHB5j4bVee0U6cv8Wway+1g+TgaN9uE+xAQ0Q72eevJ2M998H+Tlgquz4///w9nJgKaZb7FxNTrV/gBLi4iAVatg0iSYOROSkuDf/7bA8pQ4zSMAYvrpHYVoCs8g6HczdLwMNAN4BesdkTiDJFWi3rpF+zF3dn/WHcxC06B/qyA6RTZ8v02rYC9aBdvOkt+ZukX7EeXvTnK2WvLSNHhgdHt83R3/dGJckCfT+8fy6drqDeOD2wTRujmXZ318VPPlG2+E//xHJVZvvQVG+VUlRA16HHYQ5yW/qUS9aZpGl2g/ukT76R1Kk1RUVrH7WD4HMwvwdXemQ7gPwd6qTlJckCefX9+HrUdzyC2poHOkL50jfXWOuHm4OTtx2/AE+sUHsvloNh3CfegbH0iAZzMnlM7O8PHHquTCk0+qWlbffgs6VXE2mUwczirieF4xId5uxAV6YjBYePasqhLy08DoqqqeCyHskiRVosX5Y18mN3y2icqTm6eGtwvm+cu7Euyt9ofFB3kRH2SbM2nWFuztxpjO4YzpbN4ouVlpGjzxBERHw803w/Dh8PPPENq8/zs3mUz8tvM4d36zleLyStycDbwwuStjO4VbLrHKOQrr34FNH4JHIIx+BtqMAmcHLYgqhANz/I0iQpwhM7+URxf8czqhAli+O4Mdqbl1PEro5sYbYcEC2LkT+veHvXub9ekPZxVy17cqoQIoKa/i3jl/czDTQoUtTSbY/CmsfxMqSiAvBeZMh9Qtlrm+EKJZSVIlWpTCsgpSaikRkF1YpkM0ol7GjYOVK6GwEAYMgLVrm+2p0/NLKSqrrDFWWlHFcUudBi1Ihy2fmY+nbbXM9YUQzUqSKtGihPq4MapjzUKjmobNbpwXJ/XqpUouBATAiBHwww/N8rQhXq64O9c8/ehqNBDqU/9SInVy8QDfGPNx2VclhF2SpEq0KG7OTtx/USIjTlaBD/Z25a2pPWotSipsTKtWapaqe3e4/HJ44w2rP2VckCcvT+mK28mSGq5GtafKYnvuXL1hxP+B4YztrUGJENnTMte3hIIMOPQHHFgOuSl6RyOETZON6qLFaR3ixRtX9+BYXgkeLk6E+siGYLsRFATLlsHUqXD77XD0KDz7rNWqd2uaxqiOYSy6YzDH80oI8XYjPsjCp//iBsENyyB9l2r1Et5VVSi3BScOww83QdJ6dds/ThUNDWmvZ1RC2CxJqoRVVFaZ+Ccll42HTxBQWMaeY3kkhtnObJC7ixPxQZ56h2FVVVUmtiRlM29zCgUl5UzuHU2vOH/cne38x97dHb77Du66C/73P1XL6pNPwNVCS3Jn0TTNurXVDAaI6KbebM2hFdUJFajiocmbIDBBtUwRQtRg579dha3afOQEV7+/gYoqE/d2ruCxd9bxzaz+dIiwncTKEeQVl7Px8AmW7U4nNsCDC9qF0CZUtQn5OzmHKe+up+LkSccft6U1qAG2TXNygtdeg9hYuP9+SEuD+fPBz0/vyBxL8mb1r5MLXPAoHF0LK56BlE3Q7xYITtQ3PiFsjOypEhZXXlHFu6sOnv5jDpBXUsHyPek6RqWf0opKcosbf7qwsLSCvcfzOZJZSNVZjQl/3pbK9Z9u4qsNR3lm8W6mfriBQyd79S3blV7jawDw7qoDlFXUPM1mtzQN7rsPvv5abWIfNEgtBwrLiR+i/u01E/58F/YsVmUfNn8C38+CohN1Ptwi0v6GxQ/BF5fDP99DUZb1n1OIRpKZKmFxlSYTGfmlZuNZBS2vbMFfR7J5a8V+DmQUMrlnFBO7RxLh517vxx/KLODxn3ayYk8Gbs4G7r8okSt6RePt7szxvBL+98ueGvdPzytlZ1oe8cFemM5u4gdUVZn39ms2FeVQVab2DVnSlVdCWBhMnKhqWS1aBF27WvY5HElBOpw4CEY3CEoAlzqWNeMHQ8/rwM0XcpNrfixtq7qONaXvhk8nQMnJOnL7l8KY56DvbOs+rxCNJDNVwuLcnJ24tn+c2fiI9g6w7NQApRVVTP1gA0t3pXMos5Dnf9nDh6sPUnGyIfX5VFRW8eEfh1ixJwNQhSefXLiLbSnqD0xVlYmyCvNrVVSqrGlE+1CcztpQPWtIK1ydm6lB8ikmEyT9CXNnwocXwaaPIP+4ZZ9j2DBYs0YtCw4eDEuXWvb6jiJ9F3x6MXw0Ct4bCksegYI6vhbeYarCe0x/849pmkrMrOnYtuqE6pSVz0H+Mes+rxCNJEmVsIoL2oXwzGWdiQ30wN3Zifeu6UnPWD+9w2pWJeWVpytxn/LZuiOk5davcOSJwjIW/WP+x2NXWh4AYb5u3DS0VY2Pebg40S5c7anqGu3HN7P6cVmPSC7sEMInM3szICGwMS+laY79A5+Oh90/wfF/4Oe74e+vLP88HTuqZcD4eBgzBj7/3PLPYc8qymHdm5Cxq3rsr08gaWPdj3N2g4ie0GFizfE+N6kN683Own0XW4KqKsg6AGnboVi6R1iTLP8Jq/D3dOGqPjGM7hTGlg1ruOCsgpu2pKrKxOGsQk4UlhHq40Z0gEeTr7k7LY/yWmakPFyMGJ3q90fBy81Ih3AfVu/PrDEeeXL5UNM0ruwTQ6CXK9/8mURCiCfXDog/fcrSyaDROy6A3nEBTXw1TXRsG1SctRy85lXociX4NKDHYE4S5CaBu/+5T59FRsKqVaqO1fTp6mTgQw+pWZWWriQHDiwzHz/+D7QfX/dj3X1h9LPQ8VLI2A1hnSGqj/X7E4Z1UUuPZ85WDX1AzaCJ+inNh61fwtLHoLwYovvChNcgpJ3ekTkkSaqEVfl7uGCw4T9oFZVVLNqexr/mbaOkvAofdyNvXtWDwW0bX9G6oLSc//txBxPDTMQEeHD0RNHpjz0wOpFw3/rtqfJwMXLvRW3ZmpRDQWkFAANbB9I12u/0fUK83ZjaN5bLe0Th7GQwW+6zCcZaSh04e4BTA379HF0P306FwkyVTI16GrpfA861fC59fdW+quuvh0ceUZvX33gDjHby6y7nqHpzD4DANmC0UOkCNz+IH2Y+SxjSoX6P9wmHjhMtE0t9hbSDa3+C7XMhYy90u6p683xLVZKnTmPWN6FN+xsWP1B9O2kDrHwWJr4jTbutwE5+ywhhHQcyCrlnzt+nT8nlFVdwxzdb+On2QUT5N27GKj2vlA2HTjDYq5LxXeIwmSCrsIxBCYFc0MByBt1j/PnxtoEcyCjAw8VIYqg3Qd7mSYpbc++TaojwrqrtSmFG9diI/6t/K5aCDPhhtkqoACrLYdH9akkq6hyVx11c4LPPICYGnn4aUlLgm2/A08Zrkx1ZB99erU7VGYxw0X+hx7WqnU1TGZ1hwO2q7tSpDeZdr1IzF7YsvKt6a+nyj8GO+bDpQ/CNhiH3QXS/8xe+zarlMMGeRernyS/KKqG2ZJJUiRYtLbfYrOxAdlE5Gfml9U6qcorK2JGax/G8EqL9PYj0dyPK3x0T+by14gDuzk54uxm5pFsEXm4Nn3VoFexFuK87R08UkV1cho+7ERejDSdRZwtqo2Yb9i9Tx/ETRkJ0n/o/vjADsg+Zj+clA3W0c9E0eOopiI6GW2+F4cPh558hxEYPTBSkw/zZ1WUKqipgyYMQ1RuielnmOUI7wMzFcOKA2mQe2AbcpHacXdj6FSx7XL2fuRcOr4Lrl56/aKxXLd/voZ3l624lklSJFi3Uxw0ng0blGYmVj7uRIK/6VecuKK3g1WX7+HjN4dNjT1zSgacu7cz2TesAKC6vZELXcDo0sr9gcnYRL/yyhwV/p2LQNKb3j+Xmoa0Jsaf2OiHtG9/axCNI/c88N6nmuHdE/R4/e7baazVliiq5sGQJtGnTuFisqTATsg+bj+emWC6pArUfSfYk2Zf8Y7Du9ZpjleVwbPv5k6qI7uqQwc756raLF4x6SpIqK5HTf8IiMvJLmL8lhdu+/It3Vx7gwMkClLaudbAX/53YCePJvUhuzgZenNyt3pvV96fn10ioAP77826i/d1pE+LFe9f0ZM5N/Xh4bHv8PV0aFeOSf44xf2sqJpNq//PxmsOsPdCCCiB6h8Cl76gNywCaAS58ov57gQAmTIAVKyA/XyVW69ef9yF1KsiAfUvV7MHR9VBWdP7HnI9nEPjFmY/71DN5FI7LYAQXb/Px+uyJ8g6F8S/DjEWqb+OsFRDTz+IhCkVmqkSTlVdW8f4fh3hvlVq7/3l7Gt9uTOKLG/o2qNClHlyMBib1jKJ7jB+Z+aWE+7o3qCdgXnGF2VhZZRV5xeW4Gg0Ma+Kpx7KKSn76O9VsfPmedCZ2j2zSte1K3CCYtVJt4PYIVMtWzg3s9denD6xdq8otDB+u9lhdcknDYynOhl8ehu1zqscmvArENfxaZ/IKgYlvqz1VxdlgcIKRT6glO9GyeQbByMdh7ozqMa8wCO9Rv8d7BEDcQKuEJmqSpEo0WdKJIj5aXXPPy8HMQvYez7f5pArA2clAuzAfaET+ExPggberkfzS6uQqNtCDKH8PciwQm4vRid5xAfydXLO2TNcoPwtc3c4ExKu3pkhIUInVhAlw2WWqf+CttzbsGum7aiZUoJKsvp80LTaAuAFqJiEnSf0hDGwDxsbNcAoH03YUTP8RDq0Er3BoNQSCWusdlTiLLP+JJqsyQVVtLVH0aofSjOKCPPl4Zm/ah6mp+d5x/rw1tUetJ/Qaa3KvaCL8qqf524d5MywxmP3p+azck86OlFxKyx2kn19zCA6G33+H8ePhttvgwQdVccT6KskxHysrBFMDrlEX/zjVHia0oyRUopqLB7QaCiP+A31vlGbWNkpmqkSTRQe4M6V3DF//Wd3MNszXlbahdfQUcyC94gL4ZlY/corLCfR0adQJv7okhnkzd/YA9h7Px8mgkRjqzfaUXG758i9KK6rQNHhkbHum9YvBzVl+pOvFwwO+/x5uvx2ee04VCf3oI3CtRzIc0FrVxyovrh6L6Fl7MVIhRIsiv4FFk7kanbj9ggTah3szf0sqPWP9mNQzqtF1nuyRr4cLvh51zyqk5RSzIzWPorJK2oZ6kRjmjVbPwqgRfu6nl1JTsou577u/KT3Z989kgv8u3EWf+AC6tMRlwcZycoI334TYWDVblZamEi0/v7ofF5wIU+fBwvsgcxe0GQUjH4OdFu5nKISwO5JUCYuI8HNnev84ru4Tg9GpZa0qF57cT+Xpeu4fp6QTRcz+fDM7TvbtczUa+Pz6PvSJb3gvvhNFZWQXlZuNp+epVjBZBaXsTM0jo6CUuCBPOoT72Gxx0O3JOczbnMLhrEKu6B3FgNZB+J0nObUoTYMHHoCoKJg5UzVjXrRI1baqS9xAmLkISvNUEVMXD0mqhBCSVAnLakkJVVFZBav3ZfLG7/uoMsHNwxIY2jYYLzfzH6stR7NPJ1QApRVVPP/LHj6d0QfPWu5flxBvV8J83DiWV92Y2cmgEennTk5RGU/8tJMFZ5wYfGFyVyb1tL3KybvT8rjyvfUUlqn9YCv2ZvD0pZ24um9s8wczdSqEhanN6/37q8SqS5e6H+Phr96EEOKklvMXUAgL23j4BLM+38y2lDz+Sc3j1q/+Yv3B2utHpeeXmo0dziyksNy8JMP5hPq48fpV3Qk+WaDUw8WJFyd3JSHUi93H8mskVACP/7iDpBMWqKNkYf+k5p1OqE55ddk+Mmv5XDWLESPgjz/U+4MHq83sejCZVJ+7fb9Byl9QWqhPHI4m/7iqK/bF5bDsSTi+U++IhAOSmSohGmne5mSzsS/WH2FE+xCzvVKdIn3N7nt5jyiCPBt3SrB3fAALbhvIsdwSAjxdiA30QNM08orNlwXzSytOL1Haktp2k2m1jjajLl1UYdAxY2D0aPj4YzWL1ZwOrYSvr6zeCD/oHhh0t1TAboqqStjwDqx+Sd3evxS2fAHXLWl6mQ4hziAzVUI0UoCHeUIU6OVS6+bzLlG+vDi5K/4ezjgZNK7sHc20frEYDI1PIiL83OkR609ckOfp54wL8sTVWPPHukeMn03WC+sU6YPXWfvQ7hyZYNFyFI0SFaVmrAYNgmnT4Nln1exRc8g/DgturXmycPVLkL6jeZ7fUeUchXVv1BwrOAbpMlslLEtmqoSoh9LySgyahvMZCcvEHhF8vfHo6VN4zk4aV/eJqfXxHi5GLu8ZxYCEQMoqqgj3dbNKU+Q2IV58NKM3j87fzsHMIoYlBvPw2Pb4uNvecf/EMB++vrEvC7amcjirUH1+WgXpHZbi5weLF8N118FDD8HRo/D66+rEoDUVZ0Ou+Qwoeces+7xCCIuQpEqIOuQVl7FybyYfrzmEr7szs4a0plecP85OBrpG+TF3dn9W78+iymRiUEIQnWtZ5jtTuK91Z4w0TWNgQhBzbx5AQUkFQd6ueLjY7o955yg/OttqGQhXV/j8c4iJUbNVKSnw9deqxpW1eIVASEfzmSl/HTbvOxK/GOh/W/XyH6g2Lw3pHylEPdjub1shbMDyPRnc+c3W07dX7s1gzk396RUXgKZpNpsUBHi6ElCP/VpVVSYOZBSQdKKIAE8XEkK9zZbkWjSDAZ55RpVYuP12uOAC+OknVZXdGjwC4JI34Ltr1ZKVszuM+Z/88W8qgxP0nQ1BbWD7dxDRHTpNkv1UwuLkt6cQ51BYWnG6SfQpVSZYtS+DXnEBOkVlWav2ZXDT55tPL2HePLQVtw5PsHhVeLt3yy0QGQlXXQUDBqilwYQE6zxXZA+4finkJYObr6rgXs8isaIO3qHQ7Wr1JoSVyEZ1Ic7BSdPwcDHfQ+PuIK1gjueW8K+5204nVABvrzzI7mP5jb5mVZWJkvIqFm1PY/X+DLIKdCqPYA2XXKLKLOTkqFpWGzZY77m8QyGyJwQmSEIlhB2RpEqIc3BzceLW4TVnI9ydnRjcxkY2UzdRTnF5rfWzahurr7UHMtmfUcAtX/7FtA/+5MHvt5ORX3L+B9qLfv1g7Vrw9YXhw+HHH/WOSNRXQ5pmC9FIjvFfbiGspH+rQL6Z1Y9fdxzD192ZEe1Da605dT6HMgv560g2uSXldI3ypXOkHy5Gff9PE+LtSmKYN3vOmJnSNIgJaNxG7BOFpfxnwT9cGl5dfuC3nceZ2jeGYYluTY7XZrRpoxKr8ePh0ktV/8DZs/WOyjGUl0DaVsjcCx6BEN4NfCObds303bB9DhxZC50uh8Qx4Gt7HQaEY5CkSog6uDo70a9VIP1aNbxH3ymHMguY9sEGUnLUjI2mwUfX9mZ4uxBLhdko/p4u/G9SF27/egtHsorwdHHiyYmdaBvq1ajrFZRWciirCMJrjmcVlFkgWhsTEgLLl8OVV8LNN6uSCxdeqHdU9m/3Qph3XfXtmP4w6WPwCT/3Y+qSkwRfXQE5R9Tto+sg7W8Y+wI4NzHRr6qAEwfBJxKMOtdWEzZDkiohrGzr0ZzTCRWoOpLPLdlFj1g/fN2bsXlwLbpE+TFv9gDScovxcXcmNtCz0dcK9nLlovahQEqN8figxl/Tpnl6wg8/wG23wTPP0G7TJhg4EFz0/Zrarbw0WPJAzbGj6+DY9sYnVRm7qxOqU7Z+ocorhLRr3DXLS2DPIshIhdcnq9mvYQ9DYKvGXU84FNlTJYSV5ZWYt4jJKiivsUFcT0HernSO8mtSQgXg7uLE/aPbnS7J4OfhzCtTutExwoHbqxiN8Pbb8NRThP32G4wdC7m5ekdln8qLoSjTfLw0z3ysvrTa/sRpTdv8n/Y3zJ2pZqpMVapEw5pXoNK8RZRoeSSpEsLKOkf5cnY3mmsHxBLi7UD7jE5KCPEiNtCT3+4ewqI7BjOxeySuzlauQq43TYOHH2bXgw/CypWqGXNyLVXRRd18I6HDpTXHnJwhOLHx1wxpD0Fta471uh78m1CfKnOP+dj2OVBwvPHXFA5DkiohrKxzpC8fz+xDp0gfQrxduX9UWyb1jNY7LKsxaNAm1Nsm+w1a0/FRo2DRIjh8WJVc+OcfvUOyL0ZXuODf0H26Knoa0hGmzlX/NpZPBFz5FYx8HNqNh4lvw+B7wdiEJVr3WmrU+cWDs4Muc4sGkT1VwuqqTCbScosJ9HSxSr87W+fsZGBo22B6RPtRWlGlf8NgYT0XXqiaMY8dqxoy//CDKr0g6iewNYx7CYY9AC5e4O7X9GsGtYFBdzX9OqdEdFcb6E8xGGH00+Dhb7nnEHZLZqqEVf11JJvDmUVc9NIqHv7hHw5kFOgdkm683Z0loWoJunaFdetUBfZRo+Crr/SOyL4YnVXJA0skVNbgG6lOJAa0gss/gBtXQPxQvaMSNkJmqmxIWm4xB9ILMBoMJIR6EeTVuD/AFZVV/HU0hzkbj1JWWcWVvWPoGevf7HtbDmYUcM2HG5idWEF+KczdnExabjHvXtMTL1dpg2JNWQWlpOaW4OtmJKaJG9BFI8TEwOrVqo7V1Klqj9X990t1dEfhEw6uPtB5mN6RCBsjSZWN2Hs8nxs+3cjRE8UAdI/249UruxMT2PBCjFuScrjyvXVUnazB+OPfaXxxQx8GJVipCew5HMgopLCsssbYmv1ZJJ8opl24JFXWsj05hzu+2cKhzCK8XY08ObETYzuHtcilV135+8Mvv8CMGfDAA6qW1auvgpN8HYRwVLL8ZwNMJhNzNiadTqhAJUar9mU06noLtqScTqhO+WTNYarOHrQyL9fa+uY54e7op8F0lF1Uxv1zt3EoswiA/NIK7p6zlT3HG9/PTzSBqyt8+aWapXrzTbj8cigq0jsqIYSVSFJlA0orqlh/KMtsfGtSTqOu17yp07m1DfVmeLuas2P/Gp3YqNk3UT/peaVmDZFNJkg6I2EXzcxggOefh9deU70CR4yAzFrqMQkh7J4kVTbAzdmJMZ3MKwYPSmhc496J3SNrqYsUh+HswXMoKa9ke0oOy3YdZ1daHuWVjStSGejlyrOXdiY20JMnLunIVzf2ZXLPaDTZV2I1fu7OhNSyGT7YS6p86+7222HePNi6FQYMgAMH9I5ICGFhsqfKRkzoEsGWo9ks3ZWOpsFVvWPo37px/ea6Rfvx9Y39+OrPo1RUVnFVn1h6x9XvuG9peSVfbjjCfxfuwmQCJ4PGS1d05eKuEY1KhkJ93fFxM3Jx/7gGP9ZWFJdVcDiriMoqE3GBHni52e5+sFBfN56f1IVZn22m7GQyPGtIK9qFOXBVc3ty6aWwbBlMmKBqWS1cCL176x2VEMJCJKmyETGBHrw6pTuHTxTiZNCID/Rs9Gk9ZycDfVsF0rcRTYD3ZxTw1MmECqCyysRD32+na5QfcY7aw60Ox3OLeem3vXy7SVXIHto2mCcu6djkli7WNKRNMAvvGMSRrCICvVxoE+p9unWMsAEDBsDatTBmDAwbBt9+C+PH6x2VEMICZPnPhni6GekY4Uu7MB/dWntkFpSabXIvKqvkRGGZLvHobe2BrNMJFcDKvRn8uDW1SdcsLa9ka1IOP/6dwroDmeQUWfZzazBotAn1ZmSHULrH+EtCZYsSE1Utq/bt4ZJL4N139Y5ICGEB8ttW1BDp546r0VCj2W+Qlwvhvo7Xp64+1hwwP0CwZMcxbhzSCrdGJL4mk4mftqVy33fbTo9N7xfLfaMS8XFvnmXFY7klmEwmwltYGxmbExoKK1bAlCkwezYkJcGTT0otKyHsmMxUiRpaBXnx5tU98PNQf+BDvF158+oeLfYPcPdoP7OxAa0DcTU27kfn6Iki/m/Bjhpjn60/wr5065c8yC4q46PVhxj1yiouenkV7648QFZBqdWfV9TBywsWLIAbb4SnnlI1rcpa5qywEI5AZqpEDQaDxsgOofx8+yBOFJYR4uNKmI91EqpdaXn8sCWFf1JyubR7JMMSgwn2tq0ZscFtg+kd58/Gw9kAtAry5IpejT/BmF9SYVYQFSCnqLxJcdbHugOZPPHzztO3n1m8m1AfNyZ2j7T6c4s6GI1q+S8mBh59FNLSYO5c8JHDBULYG0mqRK2i/D2I8rdePanDmYVM+2ADWSf3aq09kMUdFyRw18i29S790BxiAjx4Z1pP9qcXUFllonWwF6FNWAqN8HOjbagXe49X90B0NRqICbB+7a4f/04zG5uzKYlLujXuZKewIE2Df/8boqLUrNWQIbBoEURE6B2ZEKIBZPlP6GJXWt7phOqUd1cdJCXH9opUBnq50rdVIAMSgpqUUAEEeLryypRu9IjxAyDK350Pr+1FQoiXBSKtW+tg8xOLbUO9JaGyJTNmqDILBw5Av36wY8d5HyKEsB0yUyV0YajlD7m9/W3PLS4Hkwlfj9oLa5ZXVnEgo4AIX3fcXao3tXeI8OXTmX1ILyjFx82Z4FqKdVrD+C4RfLXhKNknlxp93IxM6hllkWvvT8/nt53p7ErLZYRfOVkFpQQ2siF4i3fRRfDHHzB2LAwaBPPnw9ChekclhKgHSaqELtqFexPi40p6XvVG6VuGtSbSDjbEF5ZWsHJvBq8s3Ut5pYlbhrXmwg6h+J1MrorKKvhpaypZ6QXc+OJKRnUI5cGx7YgPqp6N8nZ3xruZTvud0j7ch7k3D2Bnah4mE7QP96ZNqHeTr5ucXcSMj/4kOacEgDadK/hywxFuG97GppZy7Uq3bqrkwpgxKsn67DN1SlAIYdNk+U/oIjbQk8+v68MdIxIY2T6EV6/sxuhOYazcm8GGQ1lk23BdrE1HTnDLl3+x93gBhzILuX/uNv7YV93LbXtyLg98v53KkwW/ftl5nPdXHWp0ux9Lah3sxYSuEVzcLcIiCRXArrT80wnVKW+tOEBytjQObpLYWFi9Gvr2hSuvhBdf5HRVXiGETZKZKqGbxDAfEk+2T9mWlMPkd9arJTXgwg6h/HdiR0KtdPKwNkVlFZRWVOF/juW8UxZtM9/w/fm6w4zuFIazk4G9x83LI/z0dyp3jGhDmAPW+6qsMk8WK6tMNtPY264FBMCvv8L06XDffXD0KLz0EjjpUxxYCFE3SaqE7orKKvjfL3tOJ1QAv+08zuSeUVzU8fxJlclkYn96AYezCvF1d6ZtqPfppbj6qKwy8eehLF5Zuo+03BKm949lQtcIQn1qT4BqK/sQ6uuG08lNYbXtkUoI8cLT1TH/ELYL8yHA06VG1f0ZA+LsYinXLri5wTffQHS0SqiSk+GLL8BdPr9C2BpJqoRFbU3KYd7mJFJzSriidzQD6tF/ML+kgm0puWbjydn1Owm49kAW132ykdKKKqb1jSHM141/UvPoFx/A8HYh5+3T909KLtd8+CcVJ5fr/rtwF6UVldw6vA1pOcWs3JvBbzuP0zsugIs6hjK6Uxgfrzl0ut6Ui5OBa/vHnd4/1DXaj36tAoB0QJVMeGhsO7wt1Ih5f3oB6w5kklFQyoDWQXSN9sXdWb8f5bggT764vi/fbjzK9pRcIv0KuWJQPEan6t0FVVUmtqfksvZAFk4GGNA6iE6RvrrFbHcMBrX8Fx0N99wDI0fCjz9CYOOargshrEOSKmEx/6TkcuV76ygpV8tBy3an8/IVXfE/z+MCPFy4sEMoczcn1xhvE3r+MgNZBaU8Mn87pRVVDGkTRHJOMV9sOArAkn+O8fP2NN67picBnuc+ibYzNe90QnXKR6sPc2n3SF7+bR/fnYxr2e505m9N5vPr+jL35gFsOpxNeWUVveP8ayQI4b7uvHZld/5ct5q3pnYgIcSbthbav3Qwo4Cr3l9PRr7a4P/asv28Pa0HYzqFW+T6jdUhwofHL+lEeWUVa/5YRahvzVmULUnZXPneesor1efZ1Whgzk396VpLxXpRh7vuUrWspk1TjZmXLIH4eL2jEkKcJBvVhcVsPpJ9OqE65bXf95/esH0uzkYDNw9tRa84lX65OBn416hEukadfyajoKSCw5lqQ3SPWH9W7Mmo8fFNh7PZn15Y5zXOLHdwiq+HM3klFcz9q2ait/tYAXvTC2gf7sM1/WO5blA8naP8zGo9hfi44eVqZGznCIslVKBmAk8lVKf875c9Fm/K3FjOTrX/Svls3ZHTCRVAaUUVP29rWmPqFmvSJFi6FDIyVC2rTZv0jkgIcZLMVAmLqe3wfH0P1LcO8eaja3uTlF2Em7MTsQEeNZaPziXI25VBCUGs3p95zoNRVec5MdUlypcwX1eO5VYnK/8a1Q6N2g9bne961lRcbt7iJq+4nLIK/U8WnktVlanGfqtTMgtsIxG0N8dzS9gbmojblz/T/aarMA4bBnPmqLpWQghdyUyVsJiecf64Odf8lrp9RBuc6lmryMfdmY4RvrQO9qpXQgXg6Wrk0fHt6Rrly860vJN7maq1D/emdXDdy4itgr348vp+PH1pJ+69sC3fzOrH8MRgYgI8uaRbzTYhrYM967UsaS2dInwxnvX5vH5QPCHn2FRvCwwGjWn9Ys3Gpedgwx3MKGD6Rxu45sM/mbwym8unv0hJqwS4+GL44AO9wxOixZOZKmExHSN8+WZWf+ZtTuZYbjFX9I6mX3wgmzfss+rzJob58Nn1fUjNKaHKZGL1vkx+2XGcIW2DuLhrRL0qlrcO8aJ1La1i/jWqHT1j/Fm4PY3+rQOZ0CXCag2m66NzpC9f3NCX13/fx7HcEq7pH8fYTmG6xVNfA1oF8vpV3XlrxX6MBo3bLmhD77jz7bYTZ1u66zh7zugb+XeFO+889iF3vfeI6hmYlASPPWZ/7QmEcBCSVAmL6hbtRzcdNh/7urvg667KKHSM8OWGwa3qPUNWl0h/d6YPiGP6gLgmX8sSDAaNfq0C6RrlR1ll5enXbOu83Z2Z0DWC4YnBaJqGp6v86mmMv45km439cbyUOxb8iOHm2fDEE6qW1XvvgXPzVuwXQkhSJRyUJRKqhjicWcjWpBxyi8vpHOVLpwjrlgtwd3HCHfure+VlobISLdWIDqEs2XG8xtiELuEYXF3gww8hJgYefxxSU2HuXPC23CEJIcT5SVIlRBMdzixk2ocbTtfV0jR446ru5OWW8P6qgwxLDLZYSxjRsg1JCOKafjF8ueEoJuCy7pFc2OHk8q+mqaW/6Gi46SYYMgQWLYJwfcttCNGSSFLlICoqq0jLK8GoaYTbcSXrjPwS/jyUzcbDWXSM9KV/q0Ci/D30DqtOW5JyahQqNZng1WX7mBZbxVOLdvH+6oPMmdWfuKC6i5AKcT6hvu78e3wHpvePo8oEsYHuuJ1d+PX66yEiAiZPViUXliyB9u31CViIFkaSKgeQllPMR2sO8enaI7i5GLh/VCITu0bi7W5fSy2lFZW88ft+Pl135PRY/9aBvHFVdwK9zr/Z3FqOZhWyP70AF2cnEkO9zTa+55eUmz3mRGHZyVN6JtLzStmRmqt7UlVQUk5ZpYkAT/vYhyVq52p0Ov/M55gxsHIljBsHAwfCggUweHDzBChECyZJlQP4eXsq7/9xCICy4ioenb+DaH8PhiWG6BxZwxzKLOTz9UdqjK07kMX+9ALdkqodqaqFzak6Sz1i/Hj1qu5EnzF71inCF02rWdNqTKdw8ksOcapqyZmFL5tbWUUVaw9k8tJvezlRWMZ1g+KZ0CW81h6GwoH07Anr1qkE68IL4fPP1eyVEMJqpE6VncsvKefbjclm46v3ZeoQTdNUVJqorfh6eaXlC1ueKCglLbeYqjqqvZdXVPH+qoM1Clf+dTSHPw+eAGDv8XyWbE+joLSCb27sR/twH4K9XJk9tBUVVVWUnYzb3dmJ9uH67analpzDzE82si05l+TsYp74aSc/b0vTLR7RjOLjYc0alWBNmQIvv6x3REI4NIvMVGmaNhp4FXACPjCZTM9a4rri/FyNBtqGerE/vaDGeGyQbe9Dqk1soAeDEoI4kFHA5T2jAPB0caq1flRjlZZX8vuedJ5auIvswjKm9Y/l2v5xRNSyD62orIKtSTlm4/vT8/nzUBbXfPgnpScrmQ9sHcjbU3vg6eqEhsaSf45RkuTEhC7hXDconsQwH4u9hobadCTbrDL8R2sOMbFbJP6yFOj4AgNVW5tp01Qz5qNHVXNmg/yfWghLa3JSpWmaE/AmcCGQDGzUNO1Hk8m0s6nXFufnYnRi1pBWrNiTQVGZamES7e/OwNZBOkfWcN5uzjx9aSdW78/iiZ93UFJehavRQJS/B2M7u1mkTMK25Fxu/uKv07ffXXkQd6MTd45sY9a/z8fdmfFdInhj+f4a40PbBvPUol2nEyqANQey2Hs8n4s6qpNY0/rHsrzkEDOGdKt3dfhT8orL2Z6SS2pOEdEBnhzPK6Gi0kT7cG/ah/uYxXk+Pm7mP+aBnq44Gx2jQGRBSTkHMgspLa8kLtDTpqvL68bdXbWyueceeOUVSE5Wy4Fu8rkSwpIsMVPVB9hvMpkOAmia9g1wCSBJVTPpFu3P/FsHsudYPi5OBjpE+BAdYH8zVQAVVSae/Hnn6cbMpRVV3Pfd37QP9yHBAjNW21Jyzca+/PMoU/vFmO0x0jSNyb2i2Hs8n193HsfZSePmYQmE+rix/3iB2XXObnSsaTQ4oSqvqOLTdYd58de93H5BAi/+uo9jeSWAmpX88oa+9IoLOM9VauodF0CQl8vpXnuaBnePbIOXq30dZKhNel4Jzy3Zzby/UgCID/LgnWm9SAyTEhZmnJxUQhUTA/fdB8eOqQ3sAQ37fhJCnJtmamJzWE3TJgGjTSbTDSdvXwP0NZlMt511v1nALIDg4OCec+bMadLz2qOCggK8vPTrG2dJ5ZUm8kvKySupwMvVCR83Z1yMtScQDXndhWWVHMwwT1haBXlapAp3TnE5SSeKaox5uDgRH+SJ4RwzQFUmta9LA1yMBkxAanYxJ4pqNgRuFeyFp0t1Qc7GfL1LK6rYd7wATYNALxezRM3HzZmYQI96N6oG9bXKKymnorKKKhMYnTQ8nJ2sVtW8Ob/P80rKOZJV8+vp7+FCpL97gz5HlmBPP9/Bv/9O+2efpTg8nO3PPUdJWONbHdnT67Yked0ty/DhwzebTKZe57ufJZKqycCos5KqPiaT6fZzPSYxMdG0Z8+eJj2vPVqxYgXDhg3TO4wmKyyr4MF52/jp7+rNzp0ifPh4Zp9a++w15HUfyihg7GurKS6vPD3majSw6I7BFtlbdTirkJkfb+RQZiEARoPGp9f1YWBCw5ZLtyfn8tJve1i+JwMfNyMPjW3PJd0i8HCpTlQa8/XecjSbS99aS6iPK0PbhjBnU1KNj7cO9uSHWwfi04DK5L/uOMaszzfjajTg4mQgv7SCVsGezJ09wCrlFZrz+/yVpXt5ZWnN3pLhvm78fPugZj8xanc/36tWwSWXqCXAhQuhR49GXcbuXreFyOtuWTRNq1dSZYn/qiYD0WfcjgJSLXBdYaOOZBbWSKgA/knNY396Qb2aF9clLsiTV6Z04+45Wykqq8TN2cCLk7sSf44aT8fzSvj7ZPHNhBAvukb54etx7oQjLtCTT6/rwz/JuRSVV5AY6k2HBraUOZJVyK1fbSYmwJPbL0iguLySSD+3GglVY8UEeNA62JMDGYXEBZov4U7tG1tnQmUymTiWW4Kzk4Ggk1+L3GJVR6u0our0PrCU7OIaiau96hBufgBgSJugBiWdLdaQIepk4Jgx6v25c2H0aL2jEsKuWSKp2gi00TQtHkgBrgSutsB1hY0619ymCRO5ReVsPHyCNQcyaRXkxaCEwAZdW9M0LuoYysI7BnM8r4QQb1figzxr3ZydU1zGEz/tYOH2Y6fH7h7ZhluGJ+Bcx16mmAAPYhq55yy3WL2+oyeKOXqimNX7VemKZbuO8/3Nfk0+TRfo5cobV/fg+SW7WbEnnQfHtOOTNYcpLK3g+sHxjOt87mWa47nFfPVnEh/8cRAvNyMPjmnHRR3CSAjxMqujdVmPKEKamADbgu4xflzZO5pvNqoZvTahXlw/uBXO51iKFmfp0EHVsho7FsaPV42Yr7tO76iEsFtNTqpMJlOFpmm3Ab+gSip8ZDKZdjQ5MmGz4gI9GdMpjMX/VCcz7cO8aRPixZxNSTy1aNfp8dZBnjzYvWF1pjRNIz7IkxBvV0wm0zlPu+07XlAjoQJ4Y/l+xnYJp02I5TcqH8ks5OH52+ke42/2sazCMkorLDPz0z7chzen9iC7sAxfd2cm9YiivLKKMF+3Ok/+/bz9GK8uU0thhWWV3P3t33x5vRu94wN4d1pPHvtxB+n5pVzWI5LZQ1vVmXjai2BvNx6d0IGp/WJPn/4LcoBksVlFRKilwEmTVIubpCT4z3/UiQYhRINYZKeqyWRaBCyyxLWE7fN0NfLIuPb0jQ9gyY5jDEoIYmzncEorqnh56d4a9z2QWUhJecP+yBWVVfDHvgxeX7afSpOJW4YlMKxtsFnbnaLSCrPHlleaKLHSstaP21JZsz+Lga2DcDJoVJ5ROPTa/nGEWvAov4eL8fRyolc9LptXXM5XG46Yja89kMnANkFc1DGMHjH+lFRUEuLtiovRqZar2CdPFyOdIxu2hCvO4uOj9lXdeKNqynz0KLzzDjjLMqoQDSFtakSjRPl7MGNgPDMGxp8eO5xZSFmF+axUQw9DbDyczU2fV9eSuv3rLbx7TU9Gday59NUq2IsAT5caFc+7RvsSY4UGzGUVlfy64zgA32xM4uGx7fj+rxQy8kuZ2jeGyb2iG1w/ypJcjQai/T04kFFYY/zM5toygyPq5OwMH3+sSi48+SSkpsJ330ELPOklRGPZ//y/sBmRfu5c1Se6xpiPmxFX54bNiqRkF3H7BQncPbINfeJVDZ3P1x0xaykTHeDBpzN7M7RtML7uzlzWI5IXJnfF18PyJ9pcjE4MaaNOCB49UcSzi3cT6efOM5d14s6RbWutyN6cXJ2duO2CBFzP2EsU4edG/1YN29MmWjhNgyeeUHurfvsNhg5V9ayEEPUiM1XCYpyNBm4elkCUvwdzNyfTPtyHGwfHk7V/a72vsT05h5d/20dGgarPNLFbJBd2CMXTxQlDLRXVO0f58fa0HuQXV+Dv6WzVZa3LekTx++50dh3Lp7zSREFpBW1D9Ws/c7aesf58f8sAdqfl42o00DnSl9hznJoUok433qj2Wl1xBfTvD4sXQ7t2ekclhM2TpEqcV0FpBTtTc0nKLibMx42OET74nWM2KMLPnZuGtmZq3xjcnJ0wOhlYsb/Wu5opLKngvwt3nU6oAOZvTeG+i9rSr44ZlzP3H1lT6xAvPru+DwczCnEyaLQO8cLfCrNijaVpGh0jfOnYwBIRQtRq3DhYuVL9O3Ag/Pij+lcIcU6SVIk6VVRW8fWGozVO9M0cEMe9oxLxqqMit1cj6gTlFJex+Ui22bivuzM9ajlxp4dgbzezdjZCOKxevVTJhdGjYcQI+PJLuPxyvaMSwmbJnipRp8NZhTz/y+4aYx+vPcyBdPNWMk3l5+lC/9bmM1Ktgr1qXfoTQjSDVq1g7VpVcX3yZHjtNb0jEsJmSVIl6pRfUkF5pfnpvVNVui3J08XIw2PaER2gNn0bNLjjggQ6RdrOviUhWqSgIFi2DCZOhDvvVA2ZqxpWf06IlkCW/0Sdov09iAvy4HBmddNaH3cjsbW0UKmvpBNFJGUX4efuQutgzxqnA9tH+DJv9gCOnijCy9VIfJBng08PCiGswN1dlVi46y548UVVJPTTT/WOSgibIkmVqFOQtytvXd2Dx3/ayYZDJ+gQ7sOTEzsSG9i4U2UbD5/ghk83kVtcjqbBPSPbMnNgPF5u1d+KIT5uhFiwkGZ9VFWZyCosxcPFiGcde8WEaNGcnNTyX0wM/OtfcOwYxvvu0zsqIWyG/PUQ59UhwpcPr+3FicJyfN2Nja4DlVVQygNz/z69dGgywYu/7aV/60B6xQVYMuQGSTpRxJcbjjBvcwrxwZ7cf1EiveL8dSvmmZFfQlFZJeE+brhYcJauoKScLUdz2Hw0m2h/D3rF+Tc6ORYtmKbB/fdDVBRcey3db78dunSB2Fi9IxNCd5JUiXrxcnNu1Im+M2UXlXPwjGXEU9JyS5p03aYoq6jkjd/38e2mZAAyCkp55IftvHNNT1oFN28l6bKKKlbuTeeV3/YysUcUO1JyKSyt4Mo+MfRtFVjnacv6+GFLCo8uqG7L2T7Mh49m9KpRdV2IervqKggLw3XCBFXLatEi6NZN76iE0JVsVBfNxt3ZwIwBcTWqfgO6ViNPyy1h7l8pALg4Gbh/VCIdI32569utfPDHQVKyzZNAa9mVlseszzczvmsE/1uyh/lbU/ltVzrXf7qJVXszmnTtlOxinl+yp+bzHctjZ1pek64rWrjhw9ny+utqWXDwYPj1V70jEkJXklQJq6uoMvHR6kNc8e56/jyUxb9GJZIY6o3RoPHI2Pa0C/PWLTYXowHvk/u5rh0Qx2frDvPDlhS2Jefy34W7eHnpPkqt1KD5bAcyCvB2M3I8r5Syyponq974fR8FJY0/cVleWUVRLa+jtJZejUI0RGF8PKxfr0ovjBsnm9dFiyZJlbC63OJynvh5Jyk5xexMy+fJhbt4YEwiC+8YzIyBcbpuDA/3deff49oD4OHixPG80hofn/dXMkdPNM9sla+7Wl6tbSuXpmm1jtdXhJ8bk3pG1hjzcHGiTYg0y21OGfmlrDuQxZr9maTn6bfsbXGRkbBqleoVOGMG/Pe/atOkEC2M7KkSVpVbVEZWQSln5+87UvO4oF2oPkGdZUyncCL9PEiuZanPSdMwNNOG9U6RPnSO8CXE2xVXo6HGLNKtwxPwdG38njYXoxO3DW9DqLcb329JoU2IF7df0IY2ofrNErY0hzILuOOrrWxPzQWgTYgXb0/rQUKIg3wNfH3Vvqrrr4dHH4WjR+Gtt8Aof2ZEyyHf7cKqnI0GjAbzCVFb6pnn6Wqkf+tAjuV6kBjqxZ7j1dXiZw6MJyag8TW5GiLUx52XpnRj3/E83ry6O8t2pZNdVMYVvWLo06rppyOjAzy4+8K2zBgYj4eLE25S/6tZLduVfjqhAtiXXsBPf6dy94WJOkZlYS4u8NlnquTC009DSgp8+y14yYyoaBkkqRJW5eFiJMTHFYNWStXJ1YBATxf6xutXQuFcwnzdeeeaXizfnc625ByGtwthQOtAnI3Nt0oe6uNG6MkaXSM7hFn8+pqmEeBpOwltS/LnoRNmY2v2Z3HXSJNu5TusQtPgqacgOhpuvRWGD4eff4ZQ25iZFsKaJKkSVuflamTuzT3ZejQHT1cnesb62+ySR3yQJ/GD4vUOQzigC9qF8OvO4zXGxnQOd6yE6kyzZ6u9VlOmqJILS5ZA27Z6RyWEVclGddEsesT4c92geKb0jrHZhEoIaxrSNpjLe1QfFhjbKYxRHRx89mbCBFixAgoKYMAAWLdO74iEsCqZqRJCiGYQ4efOfyd25obBrTCZTMQGeeLp0gJ+BffpA2vXwpgxcMEF8PXXqjGzEA5IZqqEEKKZuLs40T7chw4Rvi0joTolIUElVl27wmWXwZtv6h2REFbRgn6qhRCWZDKZ2J6Sy+Yj2TgbDPSM86d9uI/eYQlbFRwMv/+u2tvcdpsqufDMM1DL6WAh7JUkVUKIRvnraDZXvbfhdPV3L1cj38zqp3NUwqZ5eMD338Ptt8Pzz0NSEnz8Mbi66h2ZEBYh/0UQQjRYZZWJj1cfrtFOp6C0gl93HtMxKmEXnJzU8t8zz6j9VaNHQ06O3lEJYREyUyWEDTqYUcCaA5kczixiYEIQPWP98HW3nfpSlaYqjtXSZiU9rxQCdQhI2BdNgwcfVLWsZs6EQYNg8WJ1Wwg7JjNVQtiY5OwirvtkI4/O38GHqw9x3Scb+f6vFL3DqsHFyYnp/WPNxsd2DtchGmG3pk5VyVRSEvTrB9u26R2REE0iSZUQNmZXWh6Hs2r2IXzx172knNWbsKyiktScYnKLy5szvNOGtA3mucs7ExvoQZtQL96a2oOesf66xCLs2IgR8McfavZq0CBYtkzviIRoNFn+E8LGlFWYzMZKKyqpqKoeP5RZwJvLD/DztlRaB3vx6PgO9I0PaNbq3H4eLkzpHcOojmEYNA0f98Y3fBYtXJcusH69qmU1ejR89BFcc43eUQnRYDJTJYSNSQzzwsu15v93pvaNJcLPHYCisgqeXribuZuTKSmvYkdqHtd+9Cd7z2gE3Zz8PFwkoRJNFxWlZqwGD4bp09VGdpP5fzCEsGWSVAlhYxJCvPnqxr5M6BJOmxAvHhnbjllDWuHspH5c03JK+G1XzR5ypRVVHMzQJ6kSwmL8/NQeq6uvhocfhltugYoKvaMSot5k+U8IG9Qlyo+XruhGaUUlXm41Z4HcnJ3wcTeSV1zzj83Zs1tC2CVXV/j8c4iJgWefhZQUVXrB01PvyIQ4L5mpEi3O/vR8fvo7lYXbUm16dsfZaDBLqAAi/d15dFyHGmODE4JoJ9XMhaMwGNTy35tvwsKFqmdgerreUQlxXvJfW9Gi7EjN5ar315+e5Qn0dOHLG/raXUIyvks4sYEeHMgoJMjLlc6RvgR7S1Vq4WBuuQUiI1VrmwED1NJgmzZ6RyXEOclMlWhR5mxMqrFsllVYxuJ/0nSMqHHcXYz0iQ/kqj4xXNghlDBfN71DarLM/FJOFJTqHYawNZdconoG5uaqxGr9er0jEuKcJKkSLUZVlYndx/LNxvenF+oQjTglu7CMz9cdZuxrfzD+9dXM3ZREvk61t4SN6tcP1q4FX1+1FLhggd4RCVErSapEi2EwaFzRy7wNxrgu5lXAq6rkKHdzWbUvg0cX7CA9v5TU3BLum7uNDYdP6B2WsDVt2qjEqlMnuOwyeOstvSMSwowkVaJFGZoYzP2jEvFwccLb1ci/x7VnQOvqZnV7j+XzzOJdTH53HZ+tO0xqTrGO0Tq+yioTX204ajb+41bbassjbERICCxfDmPHwq23qv6BVVXnf5wQzUQ2qosWJcjLlVuGtebS7pFoQPjJgpqgeu5d+/GfpOWqRsGbj2SzKy2fxy7ugKvRSaeIHZuTQSM20IMNh2rOTMUEyPF5cQ6envDDD3DbbfDcc6pv4EcfqVIMQuhMZqqE3UjOLuL7v5J5bvEuft1xjKzCxm1q1jSNCD/3GgkVwL7j+acTqlO+3XiUpBMyW2VNV/eNxd25Omn1cTMypnOYjhEJm2c0wttvw9NPw1dfqfY2OTl6RyWEzFQJ+5BVUMp93/3N+oPVMxq3DGvN3SPb4my0zP8NauubZ9A0DM3XTq9F6hbtx7yb+/NPah4GTRU+bRvqrXdYwtZpGjz0kGpvc911qr3NokUQbb5vUojmIjNVwi7sPZ5fI6ECeG/VQY6csNzJvbah3sQH1Vx2unZALNH+HhZ7DlG7DhG+XNErmkk9oyWhEg1zzTWqftWRI9C/P2zfrndEogWTmSphF0orzDejVlSZKKu03CbVCD93Ppjei992Hmdrcg4XdQhlYEKQxWbChBBWMnKkasY8diwMGqT2XF1wgd5RiRZIkiphFxJCvAj2ciXjjOKQQ9sGE2PhWaTWIV60DvGy6DWFEM2ga1dVGHTMGBg9Gj7+GKZO1Tsq0cLIf8GFXYjy9+CT63pzabcIYgI8mD20FY9d3LHW3nhCiBYqOhpWr4aBA2HaNHU60CQ150TzkZmqZnKisIyyiiryS8rxlkSgUTpG+PL8pK4UllXg4+aMQXaQCzuUmlNMak4x/h4uxAV54iTfx5bl5wdLlsCMGaqO1dGj8Npr4CRlUYT1yUxVM9hwMIvJ76xlz/F8Zn78/+3dd3TUVd7H8fc3vRECJISS0KSJDRCRqqC4iyCiYF3UVY8F2y62x7Y+ll13fdyja11duwjrYsOGWFZFQMAFhBUVEBQ0GKS3JJCQ5D5//CKCoSaTuZOZz+scjsyPcfjcEzLzzb33972z+bJwk+9I9VZiQhxZaUkqqKRemr1sPSc/PJ3THpvJkAen8dKcAkq3V/iOFX2Sk2H8eLj++qDz+siRUFLiO5XEABVVdWzZmiIufHY236wJ7lKb890GfvfCPNbp4Ng645zj2zVFTFuyhq8KN+tDSyLCmi3buPrF+awtKgOCmy9umriAr1dXP49SQiAuDu65J5ileuONYOP6mjW+U0mU0/JfHftufQnFZbt+qH+zppgfNmylSYY6ANeFaUvWMnrcXErKKogzuGnIwZxzdCtSk/TPXfxZW1TGig27NpJ1Dgo3bOOwlp5CxYKrrgp6Wf3mN9CnT7A0eNBBvlNJlNJMVR1rmFp9/1RKYhwZKfqArwsrN23l2hf/S0lVIVvp4K5JC/l6VZHnZFJTm7duj4qZ3cZpSTRtUP0HqdxM/XBV5049FT74ANavD3pZzZ7tO5FEKRVVdaxD0wZc0KfNLtduGXIwbZrobLO6sL64bJe2Cz9ZtXnbbp4tkax0ewXvf7WKM/4xg2EPTeeZT5axth4XV7kNU7jvjCNITwo2TMcZ3DykMx2bqdlpWPTpAzNmQEYGDBgAb73lO5FEIU2X1LGMlAR+P6gDJ3TJZfWSebxyWQ8Obt5AG63rSE5GMi0aplC40xl+ZtDyF+f8SeSbV7CRi8fO2fH4jje/IikhjlFHt/aYqnb6dchh0u/6s2JDCY3TkzkoJ53kRN2VFjadOsHMmTB0KAwfHmxiv/RS36kkimimKgyy0pLo0z6brNREjmzdiDTt7akzTTNTuP+srjRJTwIgOSGOe0YeTns19Kx3Plm6ttq1Zz5Zzpat2z2kCZ022en065BDlxaZKqh8yM2FKVOCBqGjR8Mf/qBeVhIy+nSXqNOzbRPevKpf0AsoPYm2TdI1M1gPNa4qjHeWm5msY4Ok9jIy4PXX4fLL4a67oKAAnngCkqr/mxM5ECqqJCq1yEqlhZb86rW+B2XTOD2J9cVBC4L4OOOqgR1I0eyOhEJCAvzjH9CqFdx6KxQWwiuvQGam72RSj6moEpGI1LFZAyZc0ovPvt9ASVkF3fKzOCwvy3csiSZmwfJfXh5cfDH07w9vvw0t1eNCakZFlYhErA65DeiQq7vjpI6dfz60aBF0Xu/dGyZPhkMO8Z1K6iFtThAREfnVr2DqVNi+Hfr1g48/9p1I6iEVVRJ2BetLeOeLlbw27wcWrtyM0503IhIJunWDWbOgefOgyJowwXciqWe0/CdhtWxtERc8M5vl64LDTZMT4hh/0dH0aNPYczIREaB1a5g+HU45Bc46C1asgGuuCfZfieyDZqokrP6zbP2OggqCQ2Uf/GAJW8t06LGIRIjGjeG99+D00+G662DMGKjQe5Tsm2aqZJ9WbChhyaoiEuKNjrkNyM1MqfFrrdxU/biYZeuK2VZeQWpSbN8qv2XbdgzISKl+XqSIhFlKCvzrX5CfD/fdF8xYjRsHqWrVInumokr2avGPmzn/mdk7iqEuzTP5+6jutMmu2dmFR+1mme+so1rRKC12m+4VbdvOR4vX8MhHS4mPM648rj3HdMghPVnfniJexcXBvfcGhdU118CgQfDGG9Ckie9kEqG0/Cd75JxjwuyCXWaXvlq5mY+/XlPj1+yWn8W9px9BdkYSyQlxXNy/Had2i+2eMDO/XcdVL8xj0Y9b+LJwM5eN+4w5y9f7jiUiPxkzBl58EebODQ5mXrbMdyKJUPpRWPaorLyS2cs3VLv++YqNNX7NtOQERh6ZR/8O2ZRVVNK8YSrxMXyEjHOO8bO+r3b9lc9WcGynph4S1b3i0nIWrtzMd+uKyc1M4ZAWDWm0myNpRCLKaadBs2Zw8snQqxcN7rwTBgzwnUoijIoq2aPkxHiGHdGcBT9s2uX6sR1zav3aTWuxLyuamBnZDZKrXc/OqH4tGlRWOl6eW8Btb3y149qoo1tx44mdaaC9ZBLp+vWDGTNg8GC6jhkTLAsOGeI7lUQQLf/JXg05tDnDu7bALDh77eL+bel9kPYThNLZPVuRFP/zt2JyQhwnd43OJdHl64r589uLdrk2/tPvWbKqyFMikQPUuTPMmkVJfn4wa/Xkk74TSQTRTJXsVV7jNO4ecTiXD2hPfJzRunEaiQmqxUOpe6ssXh7dm5nfriM+zujVrjGHtszyHatOFJeWU1peWe36pq3bPaQRqaFmzZh///30f+ih4MzAggK4/Xb1shIVVbJvqUnxdGqm89fqiplxeH4Wh+dn+Y5S51pkpdKhaQZLVv88M5WeFE/rJmkeU4kcuIq0tOBOwNGj4c474fvv4fHHIVHL2LFMUw4iEjZNMpJ58Oxu9KlaQu7crAHPXtCTdjkZnpOJ1EBiYrD8d/vt8OyzcNJJsGWL71TikWaqRCSsDm6eyRPn9mBdcSmZqYlkxXCPMokCZnDbbcGm9UsugWOOgbffDs4PlJijmSoRCbv0lARaNUlXQSXR48IL4a23YMkS6NULFi70nUg8UFElEuHKyisoK9e5YyIRb/Bg+PhjKC0NmoROneo7kYSZiiqRCFVWXsH0pWu56Lk5jHryU975YiVF28p9xxKRvTnySJg5E3Jz4YQTgk7sEjNUVIlEqHnfb+Tcpz5l6pK1zF6+gdHjPuOTpWt9xxKRfWnbFj75BI46Cs48E/72N9+JJExUVEWJtVtK+XDhKp6fuZxpS9awsaTMdySppXe//BHndr321PRlWgoUqQ+aNIH334eRI4PDmMeMgQp970Y73f0XBbZs285fJi/ilc9W7Lg2ZlAHrhjQXo0667G0pOrfnmnJ8cSpwaBI/ZCaChMmwLXXwgMPwIoV8PzzwXWJSvrEjQJLVhftUlABPPzhUpatK67V624oLmPmN2uZvGAli1ZupqLS7ft/kpA5oUsuyTsVxWZwcf92JMTr21ak3oiPh/vvh/vug1deCfZZrVvnO5XUEc1URYHi0uqbl8srHSVlNZ9qXldcyh/f/IrX5hcCkBBnPPnbHgzo1LTGrykH5vC8hrx0aW/+vWgVJaUV/PqQXI7Ib+Q7lojUxNVXQ8uWcO650LcvTJ4c7L2SqFKrH3nN7K9mtsjMPjeziWaWFaJccgDaZqfTOH3Xfj+dmzWgVeOaTzEvLNy8o6CCoEi7+dUFrNmyrcavKQfmp+NrrjmhE384qQtHtW1CUgQs5zrnKC4tx/1yw5eI7N0ZZwT7rFatgt69Ye5c34kkxGr7Dv0+cKhz7nDga+Cm2keSA5XXKI3nLjiK/u2zSU+KZ8hhzXjw7G40Tk+u8WuuK66+0b1w0zbd0h/jvlldxP+9s4gRf5/B3ZMX8c1OZ/iJyH445pjgzsDkZDj22GDGSqJGrZb/nHPv7fRwFnBa7eJITR2Wl8Vj5x3J5q3baZyWRHJifK1er02TdMzY5e6zfu2zaZqZUsukUl+tKyrl6gnz+fyHTQAsXrWF6UvXMvbCnjTJqHkBLxJzunQJelkNHQrDhgUHMV94oe9UEgIWqil8M3sTmOCcG7eHP78EuAQgJyfnyBdjsCFaUVERGRn14+BYB2zeup3CjVspr3SkJyXQslHqLhun91d9GncoRdu4S8oq+GZN9Zmpg3IySEv6uYiPtnHvL407toRi3PElJRxy2200njOHZeefz3fnnRfckRLBYvXrPXDgwLnOuR77et4+iyoz+zfQbDd/dItz7vWq59wC9ABGuP2o0jp16uQWL168r6dFnSlTpjBgwADfMQ5I4catFJWW07xhCg1SEmv0GvVx3KEQbeP+b8FGhj/ySbXrr13Rl675WTseR9u495fGHVtCNu7t24ODmJ99NpiteuwxSKzZe204xOrX28z2q6ja5/Kfc27QPv6i3wInAcfvT0El9UuLLPVTkUC7nHROPLQZk7/4cce1wYc0o112usdUIvVcYiI8/TS0agV33gmFhfDSSxCDs0HRoFZ7qsxsMHADcKxzriQ0kUQkEjVISeTWk7pwQpdc5izfwJGts+h9UDaZqZH7U7VIvWAGd9wB+fkwenSwgX3SJGi2u0UiiWS17VP1MJAMvG/BOvAs59zoWqcSkYjUIiuVEd3zGNE9z3cUkehz0UXQogWcfnrQcmHyZOjc2XcqOQC1aqngnGvvnMt3znWt+qWCSkREpKaGDIGPP4aSEujTB6ZP951IDoD/ToIiIiLysx49gpYLOTkwaFBwvI3UCyqqREREIk27dkGT0O7dg+XABx7wnUj2g4oqERGRSJSdDR98AKecAmPGwHXXQWWl71SyFyqqREREIlVqatBi4cor4d574eyzYZvOYI1Utb37T0REROpSfDw8+CC0bg3XXw8//givvQaNGvlOJr+gmSoREZFIZxYs/73wAsyaBX37wnff+U4lv6CiSkREpL446yx4992g83rv3jB/vu9EshMVVSJhtqG4jLnfrWfe9xvYtLXMdxwRqW8GDAjuDExIgP794b33fCeSKiqqRMJo2doiLnpuNiMfncmpf5/Blf+cR8F6nfAkIgfokEOCXlbt2sHQofDcc74TCSqqRMJq0ucrmfv9xh2Ppy1Zy5TFa/wFEpH6q2VLmDYtOCvw/PPhT38C53ynimkqqkTCpKKikg8XVS+gPlmqokpEaigzE95+G845B269FS69FMrLfaeKWSqqRMIkPj6O4w9uWu163w45HtKISNRISoKxY+Hmm+GJJ2D4cCgq8p0qJqmoEgmjoYc1p2fbn3vLDOyUw8COKqpEpJbM4K674NFH4Z13YOBAWLXKd6qYo+afImHUJjudx8/twbdriokzaJuTQcPURN+xRCRajB4d7LU680zo0wcmT4aOHX2nihmaqRIJs6y0JLq3bkTXVo1UUIlI6A0bBlOmwJYtQWE1c6bvRDFDRZWIiEi06dkTZswIjrI57jiYONF3opigokpERCQatW8fFFZHHAEjR8Ijj/hOFPVUVImIiESrnBz48MNgSfDKK+GGG6Cy0neqqKWiSkREJJqlpcGrr8Jll8E99wQ9rUpLfaeKSrr7T0REJNrFxwfLf61bw403wsqVwT6rrCzfyaKKZqpERERigVmw/DduXHAgc79+UFDgO1VUUVElIiISS0aNChqEFhRAr17w+ee+E0UNFVUiIiKx5rjjYPr0YPaqXz/44APfiaKCiioREZFYdNhhMGtWsM9q8GB4/nnfieo9FVUiIiKxKi8vmLHq3x/OOw/+8hdwzneqektFlYiISCxr2DDYYzVqFNx8c9B6obzcd6p6SS0VREREYl1SEowdC/n5cPfdUFgIL7wA6em+k9UrmqkSERERiIsLlv8eeQQmTQo2s69e7TtVvaKiSkRERH52+eVBB/YFC6BPH1iyxHeiekNFlYiIiOxq+PDgzMBNm4LCatYs34nqBRVVIiIiUl2vXjBjRrCR/bjj4PXXfSeKeCqqREREZPc6dAgKq0MPhREjaKHCaq9UVImIiMieNW0KH30EQ4bQ8f774aaboLLSd6qIpKJKRERE9i49HSZOpHDYsKDlwnnnQVmZ71QRR0WViIiI7FtCAl9ffTX8+c8wfjyceGKwkV12UFElIiIi+8csWP4bOxamTg2Ot1mxwneqiKGiSkRERA7MuefC5MmwfHlwl+CCBb4TRQQVVSIiInLgBg2CadOCA5j79Qv6WsU4cx5OozazLcDisP/F/mUDa32H8EDjji0ad2zRuGNLrI67k3Ouwb6e5OtA5cXOuR6e/m5vzGyOxh07NO7YonHHFo07tpjZnP15npb/REREREJARZWIiIhICPgqqh739Pf6pnHHFo07tmjcsUXjji37NW4vG9VFREREoo2W/0RERERCwFtRZWZ/NLPPzWy+mb1nZi18ZQknM/urmS2qGvtEM8vynSkczOx0M/vSzCrNLKrvHDGzwWa22MyWmtmNvvOEi5k9bWarzewL31nCyczyzewjM1tY9W/8974z1TUzSzGz/5jZf6vGfIfvTOFkZvFmNs/M3vKdJZzMbLmZLaj63N6vu+GigZllmdnLVZ/dC82s956e63Om6q/OucOdc12Bt4D/9ZglnN4HDnXOHQ58DdzkOU+4fAGMAKb6DlKXzCweeAQ4EegCnG1mXfymCptngcG+Q3hQDlzrnDsY6AVcEQNf81LgOOfcEUBXYLCZ9fIbKax+Dyz0HcKTgc65rjHWVuEB4B3nXGfgCPbytfdWVDnnNu/0MB2Iic1dzrn3nHPlVQ9nAXk+84SLc26hcy4WGr72BJY65751zpUB/wKGe84UFs65qcB63znCzTm30jn3WdXvtxC84bb0m6puuUBR1cPEql8x8R5uZnnAUOBJ31mk7plZJnAM8BSAc67MObdxT8/3uqfKzO4yswJgFLEzU7WzC4HJvkNISLUECnZ6vIIo/4CVn5lZG6Ab8KnnKHWuaglsPrAaeN85F/VjrnI/8D9ApeccPjjgPTOba2aX+A4TJu2ANcAzVUu+T5pZ+p6eXKdFlZn928y+2M2v4QDOuVucc/nAeODKuswSTvsad9VzbiFYNhjvL2lo7c+4Y4Dt5lpM/AQf68wsA3gFGPOLmfio5JyrqNq+kQf0NLNDPUeqc2Z2ErDaOTfXdxZP+jrnuhNsb7jCzI7xHSgMEoDuwKPOuW5AMbDHvbJ1ekyNc27Qfj71n8Ak4LY6jBM2+xq3mf0WOAk43kVRT4sD+HpHsxVA/k6P84BCT1kkTMwskaCgGu+ce9V3nnByzm00sykE++mi/SaFvsDJZjYESAEyzWycc+4cz7nCwjlXWPXf1WY2kWC7Q1TvkyV4T1+x00zsy+ylqPJ591+HnR6eDCzylSWczGwwcANwsnOuxHceCbnZQAcza2tmScBZwBueM0kdMjMj2G+x0Dl3n+884WBmOT/duWxmqcAgYuA93Dl3k3MuzznXhuB7+8NYKajMLN3MGvz0e+BXRH8RjXPuR6DAzDpVXToe+GpPz/d1oDLA3VUhK4HvgNEes4TTw0Ay8H7wXsws51zUj93MTgUeAnKASWY23zn3a8+xQs45V25mVwLvAvHA0865Lz3HCgszewEYAGSb2QrgNufcU35ThUVf4FxgQdUeI4CbnXNv+4tU55oDz1Xd7RoHvOici6n2AjEoF5hY9bmVAPzTOfeO30hhcxUwvuoH5W+BC/b0RHVUFxEREQkBdVQXERERCQEVVSIiIiIhoKJKREREJARUVImIiIiEgIoqERERkRBQUSUiIiISAiqqREREREJARZWIiIhICPw/wYcv9feEJ1gAAAAASUVORK5CYII=",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from sklearn.linear_model import LogisticRegression\n",
"lr = LogisticRegression()\n",
"lr.fit(np.vstack([x,y]).T,l)\n",
"xx = np.linspace(-3,6)\n",
"yy = -lr.coef_[0][0]/lr.coef_[0][1]*xx-lr.intercept_/lr.coef_[0][1]\n",
"plt.figure(figsize=(10,8))\n",
"sns.scatterplot(x=x,y=y,hue=l)\n",
"plt.xlim([-3,6])\n",
"plt.ylim([-3,7])\n",
"plt.plot(xx,yy,'r', label='decision boundary')\n",
"plt.legend()\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As can be seen, the decision boundary found by a logistic regressor is a\n",
"line. This is because **a logistic regressor is a linear classifier**,\n",
"despite the logistic function is not linear!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Estimation of the Parameters of a Logistic Regressor\n",
"\n",
"To fit the model and find suitable values for the $\\mathbf{\\beta_i}$\n",
"parameters, we will define a **cost function**, similarly to what we have\n",
"done in the case of linear regression. \n",
"\n",
"Even if we can see the logistic\n",
"regression problem as the linear regression problem of fitting the\n",
"$logit(p) = \\mathbf{\\beta}^{T}\\mathbf{x}$ function, differently from\n",
"linear regression, **we should note that we do not have the ground truth probabilities p**. \n",
"Indeed, our observations only provide input examples\n",
"$\\mathbf{x}^{(i)}$ and the corresponding labels $y^{(i)}$.\n",
"\n",
"Starting from the definition:\n",
"\n",
"$$P\\left( y = 1 \\middle| \\mathbf{x}; \\mathbf{\\beta} \\right) = f_{\\mathbf{\\beta}}\\left( \\mathbf{x} \\right) = \\frac{1}{1 + e^{- \\mathbf{\\beta}^{T}\\mathbf{x}}} = \\sigma(\\mathbf{\\beta}^{T}\\mathbf{x})$$\n",
"\n",
"We can write:\n",
"\n",
"$$P\\left( y = 1 \\middle| \\mathbf{x};\\mathbf{\\beta} \\right) = f_{\\mathbf{\\beta}}(\\mathbf{x})$$\n",
"\n",
"$$P\\left( y = 0 \\middle| \\mathbf{x};\\mathbf{\\beta} \\right) = 1 - f_{\\mathbf{\\beta}}(\\mathbf{x})$$\n",
"\n",
"Since $y$ can only take values $0$ and $1$, this can also be written as follows in a more compact form:\n",
"\n",
"$$P\\left( y \\middle| \\mathbf{x};\\mathbf{\\beta} \\right) = \\left( f_{\\mathbf{\\beta}}\\left( \\mathbf{x} \\right) \\right)^{y}\\left( 1 - f_{\\mathbf{\\beta}}\\left( \\mathbf{x} \\right) \\right)^{1 - y}$$\n",
"\n",
"Indeed, when $y = 1$, the second factor is equal to $1$ and the\n",
"expression reduces to\n",
"$P\\left( y = 1 \\middle| \\mathbf{x};\\mathbf{\\beta} \\right) = f_{\\mathbf{\\beta}}(\\mathbf{x})$.\n",
"Similarly, if $y = 0$, the first factor is equal to $1$ and the\n",
"expression reduces to $1 - f_{\\mathbf{\\beta}}(x)$.\n",
"\n",
"We can estimate the parameters by maximum likelihood, i.e., choosing the\n",
"values of the parameters which maximize the probability of the data\n",
"under the model identified by the parameters $\\mathbf{\\beta}$:\n",
"\n",
"$$L\\left( \\mathbf{\\beta} \\right) = P(Y|X;\\mathbf{\\beta})$$\n",
"\n",
"If we assume that the training examples are all independent, the\n",
"likelihood can be expressed as:\n",
"\n",
"$$L\\left( \\mathbf{\\beta} \\right) = \\prod_{i = 1}^{N}{P(y^{(i)}|\\mathbf{x}^{(i)};\\mathbf{\\beta})} = \\prod_{i = 1}^{N}{f_{\\mathbf{\\beta}}\\left( \\mathbf{x}^{(i)} \\right)^{y^{(i)}}\\left( 1 - f_{\\mathbf{\\beta}}\\left( \\mathbf{x}^{(i)} \\right) \\right)^{{1 - y}^{(i)}}}$$\n",
"\n",
"Maximizing this expression is equivalent to minimizing the negative\n",
"logarithm of $L(\\mathbf{\\beta})$ (negative log-likelihood - nll):\n",
"\n",
"$$nll\\left( \\mathbf{\\beta} \\right) = - \\log{L\\left( \\mathbf{\\beta} \\right)} = - \\sum_{i = 1}^{N}{\\log\\left\\lbrack f_{\\mathbf{\\beta}}\\left( \\mathbf{x}^{(i)} \\right)^{y^{(i)}}\\left( 1 - f_{\\mathbf{\\beta}}\\left( \\mathbf{x}^{(i)} \\right) \\right)^{{1 - y}^{(i)}} \\right\\rbrack} =$$\n",
"\n",
"$$= - \\sum_{i = 1}^{N}{\\lbrack y^{(i)}\\log{f_{\\mathbf{\\beta}}\\left( \\mathbf{x}^{(i)} \\right)}} + \\left( 1 - y^{(i)} \\right)\\log{(1 - f_{\\mathbf{\\beta}}\\left( \\mathbf{x}^{(i)} \\right)})\\rbrack$$\n",
"\n",
"Hence, we will define our cost function as:\n",
"\n",
"$$J\\left( \\mathbf{\\beta} \\right) = - \\sum_{i = 1}^{N}{\\lbrack y^{(i)}\\log{f_{\\mathbf{\\beta}}\\left( \\mathbf{x}^{(i)} \\right)}} + \\left( 1 - y^{(i)} \\right)\\log{(1 - f_{\\mathbf{\\beta}}\\left( \\mathbf{x}^{(i)} \\right)})\\rbrack$$\n",
"\n",
"This can be rewritten more explicitly in terms of the $\\mathbf{\\beta}$\n",
"parameters as follows:\n",
"\n",
"$$J\\left( \\mathbf{\\beta} \\right) = - \\sum_{i = 1}^{N}{\\lbrack y^{(i)}\\log{\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)}} + \\left( 1 - y^{(i)} \\right)\\log{(1 - \\sigma\\left( \\mathbf{\\beta}^{T}\\mathbf{x}^{(i)} \\right)})\\rbrack$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Similarly to linear regression, we now have a cost function to minimize in order to find the values of the $\\beta_i$ parameters. Unfortunately, in this case, $J(\\mathbf{\\beta})$ assumes a nonlinear form **which prevents us to use the least square principles** and **there is no closed form solution for the parameter estimation**. In these cases, parameters can be estimated using some form of **iterative solver**, which begins with an initial guess for the parameters and iteratively refine them to find the final solution. Luckily, the logistic regression cost function **is convex, and hence only a single solution is admitted, independently from the initial guess**.\n",
"\n",
"Different iterative solvers can be used in practice. The most commonly used is the **gradient descent algorithm**, which requires the cost function to be differentiable. We will not see this algorithm in details, but an introduction to it and its application to the estimation of the parameters of a logistic regressor are given in the following (hidden) section."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```{toggle}\n",
"## Estimating the Parameters of a Logistic Regressor through Gradient Descent (Optional)\n",
"\n",
"Given the cost function $J(\\mathcal{\\beta})$ above, we want to find suitable values $\\mathbf{\\beta}$ by\n",
"solving the following optimization problem:\n",
"\n",
"$$\\mathbf{\\beta} = \\arg_{\\mathbf{\\beta}}\\min{J(\\mathbf{\\beta})}$$\n",
"\n",
"As we already discussed, since $J$ is nonlinear, we cannot find a closed form solution for the estimation of the parameters.\n",
"\n",
"Alternatively, we could **compute**\n",
"$\\mathbf{J}\\left( \\mathbf{\\beta} \\right)$ **for all possible values\n",
"of** $\\mathbf{\\beta}$ **and choose the values of** $\\mathbf{\\beta}$\n",
"**which minimizes the cost**. However, this option is unfeasible in\n",
"practice as $\\beta$ may assume an infinite number of values. Hence, we\n",
"need a way to **find the values of** $\\mathbf{\\beta}$ **which\n",
"minimize** $\\mathbf{J(}\\mathbf{\\beta}\\mathbf{)}$ **without computing**\n",
"$\\mathbf{J(}\\mathbf{\\beta}\\mathbf{)}$ **for all possible values of**\n",
"$\\mathbf{\\beta}$**.**\n",
"\n",
"In these cases, we can use **gradient descent**, a numerical optimization strategy\n",
"which allows to **minimize differentiable functions** with respect\n",
"to their parameters.\n",
"\n",
"We will introduce the gradient descent algorithm considering initially\n",
"the problem of minimizing a function of a single variable $J(\\theta)$.\n",
"We will then extend to the case of multiple variables.\n",
"\n",
"**The gradient descent algorithm is based on the observation that, if a\n",
"function** $J(\\theta)$ *is defined and differentiable in a neighborhood\n",
"of a point* $\\theta^{(0)}$*, then* $J(\\theta)$ *decreases fastest if one\n",
"goes from* $\\theta^{(0)}$ *towards the direction of the negative\n",
"derivative of* $J$ *computed in* $\\theta^{(0)}$*.* Consider the function\n",
"$J(\\theta)$ shown in the plot below:\n",
"\n",
"\n",
"In these cases, we can use **gradient descent**, a numerical optimization strategy\n",
"which allows to **minimize differentiable functions** with respect\n",
"to their parameters.\n",
"\n",
"We will introduce the gradient descent algorithm considering initially\n",
"the problem of minimizing a function of a single variable $J(\\theta)$.\n",
"We will then extend to the case of multiple variables.\n",
"\n",
"**The gradient descent algorithm is based on the observation that, if a\n",
"function** $J(\\theta)$ *is defined and differentiable in a neighborhood\n",
"of a point* $\\theta^{(0)}$*, then* $J(\\theta)$ *decreases fastest if one\n",
"goes from* $\\theta^{(0)}$ *towards the direction of the negative\n",
"derivative of* $J$ *computed in* $\\theta^{(0)}$*.* Consider the function\n",
"$J(\\theta)$ shown in the plot below:\n",
"\n",
"\n",
"\n",
"Let us assume that we are at the initial point $\\theta^{(0)}$. From the\n",
"plot, we can see that we should move to the right part of the x axis in\n",
"order to reach the minimum of the function.\n",
"\n",
"\n",
"\n",
"\n",
"The first derivative of the function in that point $J'(\\beta^{(0)})$\n",
"will be equal to the angular coefficient of the tangent to the curve in\n",
"the point $(\\theta^{(0)},J\\left( \\theta^{(0)} \\right))$. Since the curve\n",
"is decreasing in a neighborhood of $\\beta^{(0)}$, the tangent line will\n",
"also be decreasing. Therefore, its angular coefficient\n",
"$J'(\\theta^{(0)})$ will be negative. If we want to move to the right, we\n",
"should follow in the *inverse direction* of the derivative of the curve\n",
"in that point.\n",
"\n",
"The gradient descent is an iterative algorithm; hence we are not trying\n",
"to reach the minimum of the function in one step. Instead, we would like\n",
"to move to another point $\\theta^{(1)}$ such that\n",
"$J\\left( \\theta^{(1)} \\right) < J(\\theta^{(0)})$. If we can do this for\n",
"every point, we can reach the minimum in a number of steps.\n",
"\n",
"At each step, we will move proportionally to the value of the\n",
"derivative. This is based on the observation that larger absolute values\n",
"of the derivative indicate steeper curves. If we choose a multiplier\n",
"factor $\\gamma$, we will move to the point:\n",
"\n",
"$$\\theta^{(1)} = \\theta^{(0)} - \\gamma J'(\\theta^{(0)})$$\n",
"\n",
"For instance, if we choose $\\gamma = 0.02$, we will move to point\n",
"$\\theta^{(1)} = 0.4 + 0.02 \\cdot 1.8 = 0.436$. The procedure works\n",
"iteratively until the derivative is so small that no movement is\n",
"possible, as shown in the following figure:\n",
"\n",
"\n",
"\n",
"In the next step, we compute the derivative of the function in the\n",
"current point $J\\left( \\beta^{(1)} \\right) = - 0.8$ and move to point\n",
"$\\beta^{(2)} = \\beta_{1} - \\gamma J'(\\beta^{(1)})$.\n",
"\n",
"\n",
"\n",
"\n",
"Next, we compute the derivative of the function in the current point\n",
"$f\\left( \\theta^{(2)} \\right) = - 0.4$ and move to point\n",
"$\\theta^{(3)} = \\theta^{(2)} - \\gamma J'(\\theta^{(2)})$:\n",
"\n",
"\n",
"\n",
"\n",
"We then compute the derivative of the current point\n",
"$J\\left( \\theta^{(3)} \\right) \\approx 0$:\n",
"\n",
"\n",
"\n",
"\n",
"This derivative is so small that we cannot advance further. We are in a\n",
"local minimum. The optimization terminates here. We have found the value\n",
"$\\theta^{(3)} = \\arg_{\\theta}\\min{J(\\theta)}$.\n",
"\n",
"In practice, the algorithm is terminated following a **given termination\n",
"criterion**. Two common criteria are:\n",
"\n",
"- A maximum number of iterations is reached.\n",
"\n",
"- The value $\\gamma J'(\\theta)$ is below a given threshold.\n",
"\n",
"\n",
"### Global vs Local Minima\n",
"\n",
"It is important to note that gradient descent can be applied only if the\n",
"cost function is **differentiable with respect to its parameters**.\n",
"Moreover, the algorithm is guaranteed to converge to the global minimum\n",
"**only if the cost function is convex**. In the general case of\n",
"non-convex loss function, the algorithm may converge to a **local\n",
"minimum**, which may represent a **suboptimal solution**. Nevertheless,\n",
"when the number of parameters is very large, gradient descent **usually\n",
"finds a good enough solution**, even if it only converges to a local\n",
"minimum.\n",
"\n",
"\n",
"### One Variable\n",
"\n",
"The gradient descent algorithm can be written in the following form in\n",
"the case of one variable:\n",
"\n",
"1. Choose an initial random point $\\beta$;\n",
"\n",
"2. Compute the first derivative of the function $J'$ in the current\n",
" point $\\theta$: $J'(\\theta)$;\n",
"\n",
"3. Update the position of the current point using the formula\n",
" $\\theta = \\theta - \\gamma J'(\\theta)$;\n",
"\n",
"4. Repeat 2-3 until some termination criteria are met.\n",
"\n",
"\n",
"### Multiple Variables\n",
"\n",
"The gradient descent algorithm generalizes to the case in which the\n",
"function $J$ to optimize depends on multiple variables\n",
"$J(\\theta_{1},\\theta_{2},\\ldots,\\theta_{n})$.\n",
"\n",
"For instance, let's consider a function of two variables\n",
"$J(\\theta_{1},\\theta_{2})$. We can plot such function as a 3D plot\n",
"(left) or as a contour plot (right). In both cases, our goal is to reach\n",
"the point with the minimum value (the 'center' of the two plots). Given\n",
"a point $\\mathbf{\\theta} = (\\theta_{1},\\theta_{2})$, the direction of\n",
"steepest descent is the **gradient** of the function in the point.\n",
"\n",
"\n",
"\n",
"\n",
"The gradient is a multi-variable generalization of the derivative. The\n",
"gradient of a function of $n$ variable computed in a point\n",
"$\\mathbf{\\theta}$ is a vector whose $i^{th}$ variable is given by the\n",
"partial derivative of the function with respect to the $i^{th}$\n",
"variable:\n",
"\n",
"$$\\nabla J\\left( \\mathbf{\\theta} \\right) = \\begin{pmatrix}\n",
"J_{\\theta_{1}}(\\mathbf{\\theta}) \\\\\n",
"J_{\\theta_{2}}(\\mathbf{\\theta}) \\\\\n",
"\\begin{matrix}\n",
"\\ldots \\\\\n",
"J_{\\theta_{n}}(\\mathbf{\\theta}) \\\\\n",
"\\end{matrix} \\\\\n",
"\\end{pmatrix}$$\n",
"\n",
"In the case of two variables, the gradient will be a 2D vector (the\n",
"gradient) indicating the direction to follow. Since in general we want\n",
"to optimize multi-variable functions, the algorithm is called 'gradient\n",
"descent'.\n",
"\n",
"The following figure shows an example of an optimization procedure to\n",
"reach the center of the curve from a given starting point:\n",
"\n",
"\n",
"\n",
"The pseudocode of the procedure, in the case of the multiple variables\n",
"is as follows:\n",
"\n",
"1. Initialize\n",
" $\\mathbf{\\theta} = (\\theta_{1},\\theta_{2},\\ldots,\\theta_{n})$\n",
" randomly.\n",
"\n",
"2. For each variable $x_{i}$:\n",
"\n",
"3. Compute the partial derivative at the point:\n",
"\n",
"4. $\\frac{\\partial}{\\partial\\theta_{i}}J\\left( \\mathbf{\\theta} \\right)$\n",
"\n",
"5. Update the current variable using the formula:\n",
"\n",
"$$\\theta_{i} = \\theta_{i} - \\gamma\\frac{\\partial}{\\partial\\theta_{i}}J(\\mathbf{\\theta})$$\n",
"\n",
"6. Repeat 2-3 until the termination criteria are met.\n",
"\n",
"### Logistic Regression and Gradient Descent\n",
"It can be shown that, in the case of the logistic regressor, the update rule will be:\n",
"\n",
"$$\\beta_{j}\\mathbf{=}\\beta_{j}\\mathbf{-}\\gamma\\sum_{i = 1\\ }^{N}{x_{j}^{(i)}\\left( \\sigma\\left( \\mathbf{\\beta}^{T}\\mathbf{x}^{(i)} \\right) - y^{(i)} \\right)}$$\n",
"\n",
"For the most curious, the details are in the following section.\n",
"\n",
"#### Derivation of the Update Rule\n",
"\n",
"Let us first consider the derivative of the logistic function:\n",
"\n",
"$$\\sigma(x) = \\frac{1}{1 + e^{- x}}$$\n",
"\n",
"This will be:\n",
"\n",
"$\\sigma^{'}(x) = - \\frac{1}{\\left( 1 + e^{- x} \\right)^{2}}D\\left\\lbrack e^{- x} \\right\\rbrack = \\frac{e^{- x}}{\\left( 1 + e^{- x} \\right)^{2}}$\n",
"\\[Applying the rule\n",
"$D\\left\\lbrack \\frac{1}{f(x)} \\right\\rbrack = - \\frac{D\\left\\lbrack f(x) \\right\\rbrack}{f(x)^{2}}$\\]\n",
"\n",
"$\\sigma^{'}(x) = \\frac{1 + e^{- x} - 1}{\\left( 1 + e^{- x} \\right)^{2}}$\n",
"\\[Summing and subtracting $1$ to the numerator\\]\n",
"\n",
"$\\sigma^{'}(x) = \\frac{1 + e^{- x}}{\\left( 1 + e^{- x} \\right)^{2}} - \\frac{1}{\\left( 1 + e^{- x} \\right)^{2}}$\n",
"\\[Splitting the numerator in two terms\\]\n",
"\n",
"$\\sigma^{'}(x) = \\frac{1}{1 + e^{- x}}\\left( 1 - \\frac{1}{1 + e^{- x}} \\right)$\n",
"\\[making the $\\frac{1}{1 + e^{- x}}$ factor explicit\\]\n",
"\n",
"$\\sigma^{'}(x) = \\sigma(x)\\left( 1 - \\sigma(x) \\right)$ \\[replacing the\n",
"formula $\\sigma(x) = \\frac{1}{1 + e^{- x}}$\\]\n",
"\n",
"##### Partial Derivatives of the Cost Function\n",
"\n",
"We now need to obtain the partial derivatives of the cost function with\n",
"respect to the j-th parameter:\n",
"\n",
"$$\\frac{\\partial J\\left( \\mathbf{\\beta} \\right)}{\\partial\\beta_{j}}$$\n",
"\n",
"Remember that the cost function is defined as:\n",
"\n",
"$$J\\left( \\mathbf{\\beta} \\right) = - \\sum_{i = 1}^{N}{y^{(i)}\\log{\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)}} + \\left( 1 - y^{(i)} \\right)\\log{(1 - \\sigma\\left( \\mathbf{\\beta}^{T}\\mathbf{x}^{(i)} \\right)})$$\n",
"\n",
"Let us first compute the derivative of the first term of the addition:\n",
"\n",
"$\\frac{\\partial}{\\partial\\beta_{j}}y^{(i)}\\log{\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)}$\n",
"\\[Initial expression\\]\n",
"\n",
"$= y^{(i)}\\frac{1}{\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)}\\frac{\\partial}{\\beta_{j}}\\left\\lbrack \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) \\right\\rbrack$\n",
"\\[Applying\n",
"$D\\left\\lbrack \\log\\left( f(x) \\right) \\right\\rbrack = \\frac{1}{f(x)}f'(x)$\\]\n",
"\n",
"$= y^{(i)}\\frac{1}{\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)}\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)\\left( 1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) \\right)\\frac{\\partial}{\\beta_{j}}\\left\\lbrack {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right\\rbrack$\n",
"\\[Applying\n",
"$\\sigma^{'}\\left( f(x) \\right) = \\sigma\\left( f(x) \\right)\\left( 1 - \\sigma\\left( f(x) \\right) \\right)f'(x)\\rbrack$\n",
"\n",
"$= y^{(i)}\\frac{1}{\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)}\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)\\left( 1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) \\right)x_{j}^{(i)}$\n",
"\\[Applying\n",
"$\\frac{\\partial}{\\beta_{j}}\\left\\lbrack {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right\\rbrack = x_{j}$\\]\n",
"\n",
"The derivative of the second term will be:\n",
"\n",
"$\\frac{\\partial}{\\partial\\beta_{j}}{(1 - y}^{(i)})\\log\\left( 1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) \\right)$\n",
"\\[Initial Expression\\]\n",
"\n",
"$= \\left( 1 - y^{(i)} \\right)\\frac{1}{1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)}\\frac{\\partial}{\\beta_{j}}\\ \\lbrack 1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)\\rbrack$\n",
"\\[Applying\n",
"$D\\left\\lbrack \\log\\left( f(x) \\right) \\right\\rbrack = \\frac{1}{f(x)}f'(x)$\\]\n",
"\n",
"$= \\left( 1 - y^{(i)} \\right)\\frac{1}{1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)}( - 1)\\sigma\\left( \\mathbf{\\beta}^{T}\\mathbf{x}^{(i)} \\right)\\left( 1 - \\sigma\\left( \\mathbf{\\beta}^{T}x^{(i)} \\right) \\right)x_{j}^{(i)}$\n",
"\\[Applying $\\sigma(x)\\left( 1 - \\sigma(x) \\right)$ and\n",
"$\\frac{\\partial}{\\beta_{j}}\\left\\lbrack {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right\\rbrack = x_{j}$\\]\n",
"\n",
"$= \\frac{y^{(i)} - 1}{1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)}\\sigma\\left( \\mathbf{\\beta}^{T}\\mathbf{x}^{(i)} \\right)\\left( 1 - \\sigma\\left( \\mathbf{\\beta}^{T}x^{(i)} \\right) \\right)x_{j}^{(i)}$\n",
"\\[Simplifying\\]\n",
"\n",
"We can write the sum of the last two derivatives as follows:\n",
"\n",
"$\\frac{\\partial}{\\partial\\beta_{j}}y^{(i)}\\log{\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)} + \\frac{\\partial}{\\partial\\beta_{j}}{(1 - y}^{(i)})\\log\\left( 1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) \\right)$\n",
"\\[Initial Expression\\]\n",
"\n",
"$= \\frac{y^{(i)}}{\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)}\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)\\left( 1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) \\right)x_{j}^{(i)} + \\frac{y^{(i)} - 1}{1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)}\\sigma\\left( \\mathbf{\\beta}^{T}\\mathbf{x}^{(i)} \\right)\\left( 1 - \\sigma\\left( \\mathbf{\\beta}^{T}x^{(i)} \\right) \\right)x_{j}^{(i)}$\n",
"\\[Replacing derivatives\\]\n",
"\n",
"$= \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)\\left( 1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) \\right)x_{j}^{(i)}\\left\\lbrack \\frac{y^{(i)}}{\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)} + \\frac{y^{(i)} - 1}{1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)} \\right\\rbrack$\n",
"\\[Simplifying\\]\n",
"\n",
"$= \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)\\left( 1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) \\right)x_{j}^{(i)}\\left\\lbrack \\frac{y^{(i)}\\left( 1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) \\right) + (y^{(i)} - 1)\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)}{\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)\\left( 1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) \\right)} \\right\\rbrack$\n",
"\\[Simplifying\\]\n",
"\n",
"$= \\frac{\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)\\left( 1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) \\right)}{\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)\\left( 1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) \\right)}x_{j}^{(i)}\\left\\lbrack y^{(i)}\\left( 1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) \\right) + (y^{(i)} - 1)\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) \\right\\rbrack$\n",
"\\[Simplifying\\]\n",
"\n",
"$= x_{j}^{(i)}\\left\\lbrack y^{(i)} - y^{(i)}\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) + y^{(i)}\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) \\right\\rbrack$\n",
"\\[Simplifying\\]\n",
"\n",
"$= x_{j}^{(i)}\\left( y^{(i)} - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) \\right)$\n",
"\\[Simplifying\\]\n",
"\n",
"The derivative of the cost function with respect to the j-th parameter\n",
"will hence be:\n",
"\n",
"$$\\frac{\\partial J\\left( \\mathbf{\\beta} \\right)}{\\partial\\beta_{j}} = - \\sum_{i = 1}^{N}{\\frac{\\partial}{\\partial\\beta_{j}}y^{(i)}\\log{\\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right)} + \\frac{\\partial}{\\partial\\beta_{j}}{(1 - y}^{(i)})\\log\\left( 1 - \\sigma\\left( {\\mathbf{\\beta}^{T}\\mathbf{x}}^{(i)} \\right) \\right)} = \\sum_{i}^{N}{x_{j}^{(i)}\\left( y^{(i)} - \\sigma\\left( \\beta^{T}x^{(i)} \\right) \\right)}$$\n",
"\n",
"The gradient descent update rule for each parameter will be:\n",
"\n",
"$$\\beta_{j}\\mathbf{=}\\beta_{j}\\mathbf{-}\\gamma\\sum_{i = 1\\ }^{N}{x_{j}^{(i)}\\left( \\sigma\\left( \\mathbf{\\beta}^{T}\\mathbf{x}^{(i)} \\right) - y^{(i)} \\right)}$$\n",
"\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example of Logistic Regression\n",
"\n",
"Let us now apply logistic regression to a larger set of variables in our regression problem. We will consider the following independent variables:\n",
"* `radius1`\n",
"* `texture1`\n",
"* `perimeter1`\n",
"* `area1`\n",
"* `smoothness1`\n",
"* `compactness1`\n",
"* `concavity1`\n",
"* `symmetry1`\n",
"\n",
"The dependent variable is again `Diagnosis`.\n",
"\n",
"Once fit to the data, we will obtain the following parameters:\n",
"\n",
"|$R^2$|Adj. $R^2$|F-statistic|Prob(F-statistic)|Log-Likelihood|\n",
"|-|-|-|-|-|\n",
"|0.670|0.666|142.4|1.16e-129|-78.055|\n",
"\n",
"All values have interpretations similar to the ones obtained in the case of linear regression. The Log-Likelihood reports the value of the logarithm of the likelihood which was used to train the data.\n",
"\n",
"The estimates for the coefficients are as follows:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"
\n",
"
coef
std err
t
P>|t|
[0.025
0.975]
\n",
"
\n",
"
\n",
"
Intercept
-2.6591
0.224
-11.896
0.000
-3.098
-2.220
\n",
"
\n",
"
\n",
"
radius1
0.4688
0.133
3.532
0.000
0.208
0.730
\n",
"
\n",
"
\n",
"
texture1
0.0219
0.003
7.376
0.000
0.016
0.028
\n",
"
\n",
"
\n",
"
perimeter1
-0.0473
0.021
-2.272
0.023
-0.088
-0.006
\n",
"
\n",
"
\n",
"
area1
-0.0009
0.000
-3.985
0.000
-0.001
-0.000
\n",
"
\n",
"
\n",
"
smoothness1
5.1389
1.221
4.208
0.000
2.740
7.538
\n",
"
\n",
"
\n",
"
compactness1
0.3080
0.854
0.360
0.719
-1.370
1.986
\n",
"
\n",
"
\n",
"
concavity1
2.0973
0.414
5.065
0.000
1.284
2.911
\n",
"
\n",
"
\n",
"
symmetry1
1.2739
0.568
2.244
0.025
0.159
2.389
\n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ols(\"Diagnosis ~ radius1 + texture1 + perimeter1 + area1 + smoothness1 + compactness1 + concavity1 + symmetry1\",data).fit().summary().tables[1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We notice that not all variables have a statistically relevant relationship with the dependent variable. Applying backward elimination, we remove `compactness1` and obtain the following estimates:"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"
\n",
"
coef
std err
t
P>|t|
[0.025
0.975]
\n",
"
\n",
"
\n",
"
Intercept
-2.6708
0.221
-12.086
0.000
-3.105
-2.237
\n",
"
\n",
"
\n",
"
radius1
0.4360
0.097
4.517
0.000
0.246
0.626
\n",
"
\n",
"
\n",
"
texture1
0.0219
0.003
7.405
0.000
0.016
0.028
\n",
"
\n",
"
\n",
"
perimeter1
-0.0419
0.014
-2.915
0.004
-0.070
-0.014
\n",
"
\n",
"
\n",
"
area1
-0.0010
0.000
-4.477
0.000
-0.001
-0.001
\n",
"
\n",
"
\n",
"
smoothness1
5.3093
1.125
4.719
0.000
3.099
7.519
\n",
"
\n",
"
\n",
"
concavity1
2.1479
0.389
5.517
0.000
1.383
2.913
\n",
"
\n",
"
\n",
"
symmetry1
1.3132
0.557
2.359
0.019
0.220
2.407
\n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ols(\"Diagnosis ~ radius1 + texture1 + perimeter1 + area1 + smoothness1 + concavity1 + symmetry1\",data).fit().summary().tables[1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"These are now all statistically relevant. For instance, we can see that:\n",
"* When all variables are set to zero, the odds of the benign tumor are $e^{-2.6708} \\approx 0.07$, or $\\frac{7}{100}$. This is a base value.\n",
"* An increment in one unit of `texture1` increments the odds of a benign tumor multiplicatively by a factor of $e^{0.0219} \\approx 1.02$ (a +$2\\%$).\n",
"* An increment of one unit of `perimeter1` decrements the odds of benign tumor multiplicatively by a factor of $e^{-0.0419} \\approx 0.96$ (a -$4\\%$)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Multinomial Logistic Regression\n",
"\n",
"In many cases, we want to study the relationship between a set of **continuous or categorical independent variable and a non-binary categorical dependent variable**. \n",
"\n",
"### The Iris Dataset\n",
"An example is given by Fisher's Iris dataset.\n",
"\n",
"The dataset was introduced by Ronald Fisher in 1936 and contains observations related to 150 specimens of iris flowers belonging to 3 different species: \"setosa\", \"versicolor\", and \"virginica\". Example images of the three flowers are given below:\n",
"\n",
"\n",
"\n",
"For each of the observations, the dataset provides measurements of 4 physical characteristics (length and width of sepals and petals), as illustrated in the image below:\n",
"\n",
"\n",
"\n",
"All the variables in the dataset are numeric, except for `species`, which is categorical. Here are some observations from the dataset:"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.pairplot(iris, hue='species')\n",
"plt.plot()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Additional Limitations of a Linear Regression in the Presence of More than Two Classes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us consider again a case with a single independent feature. We will select `petal_length`. The following image plots it with respect to the three classes:"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAaIAAAEHCAYAAADs2kIyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAhFElEQVR4nO3de3zU1Z3/8ddnMoGQhESBEIKKAW+0JIAYqW2txbWl9rJCVxdb2z5q9be4W3e11VbbPpS16HZ7sW699CKt1lJtkeoq1lq13ZZqV6iI3JLqVktR0XARNRAkkGQ+vz/mmzi3JENCOEl4Px8PHs6cnPM958xX5s2cOfl+zd0REREJJRZ6ACIicmhTEImISFAKIhERCUpBJCIiQSmIREQkqHjoAQxGY8aM8erq6l613b17NyUlJQd2QAENpfkMpbmA5jOQDaW5QP7zWb169avuXpFZriDqherqap566qletV2+fDmzZs06sAMKaCjNZyjNBTSfgWwozQXyn4+ZvZCrXEtzIiISlIJIRESCUhCJiEhQCiIREQlKQSQiIkENiV1zZnY+8Ki7vxJ6LF1JJJxNO3aze28bG7c3Uz06udVx047dbN3ZQmVZEdWjS0gknIbGJhqbWqgqH8GUqjLi8Ri79+ylYUszW3fupbJsOFPGldKK85ctuzvLjh+XPGZmWSGW1bbACtjQ2MSWnXsZVzac2qpyiopy/+/Q1pbIOSYRkQNhSAQRcD5QDwzIIEoknIcbtnDZ0rVcPHkfl9/0ODfMm86wuPGvP1tDS2uCosIYt35qBtt37eOq++s7y66bW8MH3l7Br+u3s+CBt8q//4kT2b6rNa3s2jk1FBXG+OI969PaD4vHuCKlbOFZNRxTUcSnbn8qreys2qqsMGprS3D/upezxjR32hEKIxE5IAbsO4mZlZjZr8xsnZnVm9m5ZnaSmf3BzFab2SNmVmVm5wB1wF1mttbMRpjZGWa2xsw2mNntZjY8OubXzezPZrbezK6Pyv7ezP4U1f+tmVUe6Lls2rGby5aupaU1AUBLa4LLlq5l/eamtLJde9o73/A7yq66v55ntuzuDJyO8oJYLKvs6mX1PLetOav98xllCx6opz0Ryyrb0NiUNfaGxqacY2rIUVdEpDdsoN6PyMzOBs5093+KnpcDvwbmuPt2MzsX+IC7X2Bmy4EvuPtTZlYEPAec4e5/MbPFwNPAYmAFMNnd3cwOc/c3zOxw4I2o7P8Bb3P3y3OMZz4wH6CysvKkJUuW5D2X3Xvb2PjqbgAqR8DWPcnysSOL2LarpbPekYePYPPre7LaTxhVzIuvvZlWdtSoYl7KKMt1zK7Kch1zwqhiykcUppXtbGnlhR3Z/Rw9upiyokKam5spLS3N+vlgNJTmAprPQDaU5gL5z+f0009f7e51meUDeWluA3C9mX0DeBB4HagBfmNmAAVAY452JwB/c/e/RM9/AlwM3AK0AD8ys19FxwQ4ErjbzKqAYcDfcg3G3RcBiwDq6up8f34reuP2Zi6/6XFaWhNcXtvGtzfEKSqMMf+0am564vnOerecV8N3V6zr/PQBUFQYY/EFM7jy9ifTyhdfMI0vPbE6q27mMbsqW/yZGVy6aGVa2U8vmMHJE0enjX3dS29wxaIVWf3cPb+OaUcdPqR+Q3wozQU0n4FsKM0F+j6fAbs0FwXJSSQD6T+Bs4EGd58e/al199k5mloXx2sDZgL3AnOBh6Mf3Qzc4u61wEVA0QGdCFA9uoQb5k2nqDD5chcVxrhh3nSmHlmeVjayqIDr5taklV03t4a3jSth4Vnp5e2JRFbZtXNqOG5saVb7YzPKFp5VQ0EskVVWW1WeNfYpVWU5xzQlR10Rkd4YsJ+IzGw88Jq732lmzSSXxSrM7J3uvsLMCoHj3b0B2AWMjJo+C1Sb2bHu/jzwKeAPZlYKFLv7Q2a2Euj4iFAOvBw9/nR/zCUWM86cMo7Jl7yHZ9as5KHZp3TumnvokvewbVcLY0e+tWvuuLGlbGlqYVx5EVOqyonHY3y4ZizVY2Zm7ZpLLevYNbf4gplZu+ZSyzp2zf00payrXXPxeIy5047IOSYRkQNhwAYRUAt8y8wSQCvwL0AbcFP0fVEc+A7QANwB/MDM9gDvBD4D/MLM4sAq4AfAKGBZ9B2SAZ+P+rkmqvsysBKY2B+TicWMSRWlvDgszqSKt9ZSJ1WUpj2PxYxpRx3OtKPS25eMGM7MicOzjjtzYvYHuNxl2W0zl+G6Eo/Hco5JRORAGLBB5O6PAI/k+NFpOereS3LJrcP/ACdmVGskuTSX2XYZsKz3IxURkb7Q+oqIiASlIBIRkaAURCIiEpSCSEREglIQiYhIUAoiEREJSkEkIiJBKYhERCQoBZGIiASlIBIRkaAURCIiEpSCSEREglIQiYhIUAoiEREJSkEkIiJBKYhERCQoBZGIiASlIBIRkaAURCIiEpSCSEREglIQiYhIUAoiEREJSkEkIiJBKYhERCQoBZGIiASlIBIRkaAURCIiEpSCSEREglIQiYhIUAoiEREJSkEkIiJBKYhERCQoBZGIiASlIBIRkaAURCIiEpSCSEREglIQiYhIUAoiEREJSkEkIiJBKYhERCQoBZGIiASlIBIRkaAURCIiEpSCSEREglIQiYhIUAoiEREJSkEkIiJBKYhERCQoBZGIiASlIBIRkaAURCIiEpSCSEREglIQiYhIUAoiEREJSkEkIiJBKYhERCQoBZGIiASlIBIRkaAURCIiEpSCSEREglIQiYhIUAoiEREJSkEkIiJBKYhERCQoBZGIiASlIBIRkaAURCIiEpSCSEREglIQiYhIUAoiEREJSkEkIiJBKYhERCQoBZGIiASlIBIRkaAURCIiEpSCSEREglIQiYhIUAoiEREJKq8gMrNLzazMkm4zs6fNbHZ/D05ERIa+fD8RXeDuO4HZQAXwGeDr/TYqERE5ZOQbRBb990PAj919XUqZiIhIr+UbRKvN7FGSQfSImY0EEv03LBEROVTE86x3ITAd2Ojub5rZaJLLcyIiIn2S7yciB94OXBI9LwGK+mVEIiJySMk3iL4HvBP4ePR8F/DdfhmRiIgcUvJdmnuHu88wszUA7v66mQ3rx3GJiMghIt9PRK1mVkByiQ4zq0CbFURE5ADIN4huAu4DxprZfwB/BL7Wb6MSEZFDRl5Lc+5+l5mtBs4g+ftDc939mX4dmYiIHBK6DSIzK3P3nWY2CtgG/DzlZ6Pc/bX+HqCIiAxtPX0i+hnwEWA10fdDEYueT+qncWUxs4XAY+7+2/1sNwv4grt/pD/GJYNfIuFs2rGb3Xvb2Li9merRJcRi+V84pK0tQUNjE41NLVSVj2BKVRnxePaqd656sZixacdutu5sobKsiOrRJQBZZbGYdY4ztbytLcH6V5rYsrOFqrIiaseX096eYMOWnTTtaeXJv+2gdlwZBQWxrHqJhLOhsYktO/cyrmw4tVXlxOOxnHNpaWnLqtvu7TRsaWbrzr1Ulg1nyrhSCgviXY6no17tuDIKCwuy+gFy9p3r/HT1Gsng1G0Qdbx5u/vEgzEYMzPA3D1rI4S7LzhIY4i7e9vB6EvCSySchxu2cNnStVw8eR+X3/Q4N8ybzplTxuX1xtbWluD+dS9z1f31tLQmKCqMcd3cGuZOOyItjLqqd1hxIf/6szWdZbecdyL72pzLlq7tLLth3nRmv62SR5/ZmlZ+88dP5I03W7l62VvHvPFj02l6s40FD9Rz8eR9XHn7k3zz7Knsa09k9T2sIMYV967vLPvm2VNpSzhfuW9DWr0Pvb2SB+u3suCBt9ovnFNDeVGcS+9e22P7zH6unVNDUWGML96zPq3e8Hh22Vm14/nt/21LOz9dvUb5njMZePK9+vZHzaw85flhZja3m/rfMLPPpjy/xswuN7MvmtkqM1tvZl+NflZtZs+Y2feAp4GjzOwOM6s3sw1m9vmo3h1mdk70+GQze8LM1pnZk2Y20syKzOzHUZs1ZnZ6jnGNMrP7o/5XmtnUlPEtii5jtDif10SGhk07dne+oQG0tCa4bOlaNu3YnVf7hsamzjf4jvZX3V9PQ2NTXvXWb25KK1u/uSnneBoas8s3vNzUGUIdZa1t3hkYHWXPb2/O2ffz25uz6nWESGq9+i27so65YFk9re2eV/vMfq5eVs9z25qz6uUqW/9K9ry7eo3yPWcy8Ji791zJbK27T88oW+PuJ3ZR/0TgO+7+3uj5n0lerftU4CKSS3sPAN8EXgQ2Au9y95VmdhLwdXd/f9T2MHd/w8zuAB6M2j0LnOvuq8ysDHgTuBSocffPmNlk4FHgeOAUoqU5M7sZeNXdv2pmfwfc4O7Tzewa4O+BU919Txdzmg/MB6isrDxpyZIlPb5uuTQ3N1NaWtqrtgPRYJ/P7r1tbHw1+QZWOQK2Rmd/UkUJJcN63suzs6WVF3a8mVV+9OhiyooKe6w3dmQR23a1dPk89XiZ7XPVPfLwEWx+fU/afLo6Zr59TxhVzIuvZY89ta/u2ucqz7cste+e5pPvORsIBvvfm0z5zuf0009f7e51meX5nrVcn5y6bOvua8xsrJmNJ3nbiNeBqSRvI7EmqlYKHEcyiF5w95VR+UZgUhQavyIZKKlOABrdfVXU104AMzsVuDkqe9bMXiAZRKlOBc6O6vzOzEanfNJ7oKsQiuovAhYB1NXV+axZs7qq2q3ly5fT27YD0WCfz8btzVx+0+O0tCa4vLaNb2+IU1QY46HZpzCpoue/WOteeoMrFq3o/Nc5QFFhjLvn1zHtqMN7rDf/tGpueuL5zrJLz6jm1lUbcx7vikUr08pz1b3lvBq+u2Jd2ny6Oma+fS++YAZX3v5kVvn159Tw7cfW9Ng+s5/9KbvrwpO48rY/5TWffM/ZQDDY/95k6ut88v09oqfM7AYzO8bMJpnZf5HcwNCde4BzgHOBJSQ/Bf2nu0+P/hzr7rdFdTs/U7v768A0YDlwMfCjjON2bJTIlM/icK46HcfS5/pDUPXoEm6YN52iwuRfhY7vGzq+EO/JlKoyrptbk9b+urk1TKkqz6ve1CPL08pqjyzPOZ4pVdnlNUeUd37f0lFWWGAsPCu97JiK0px9H1tRmlXvax+tzapXM25k1jEXzqmhsMDyap/Zz7VzajhubGlWvVxlteOz593Va5TvOZOBJ99PRP8GXA3cHT1/FLiqhzZLgB8CY4D3ArXAtWZ2l7s3m9kRQGtmIzMbA+xz93vN7K/AHRlVngXGm9nJ0dLcSGAP8BjwCeB3ZnY8MAH4P5LXyOvQUefaaDfdq9H29DxeAhmKYjHjzCnjmHzJe3hmzUoemn3Kfu3AisdjzJ12BMeNLWVLUwvjyouYEu0+y6deLGY8dMl72LarhbEj39o1NzmjLHWcqeVtbQkmjinp3D02NdqlVj2mmMZnn2bxBTM6d81Vj06vl0g4VRfMfGs3WzTuYypKsuZyVm0VE8cUp9Vt93YWp7Tv2DU3YVRx1nhS63XsmpswqjitHyCrLB6P5Tw/Xb1GMjjl+wutu4EvmVmpuzfn2aYhComX3b0RaDSztwErojf+ZuCTQHtG0yOAH5tZx9/kL2ccd5+ZnQvcbGYjSIbQ+0hemPUHZrYBaAPOd/e9GSFzTXTs9SS/V/p0PnORoS0WMyZVlPLisHivlnbi8RjTjjqcaUf1rt6kitKsfnOVdYwztXzYsALqqkdl9FTAzImjWf5CITMnju4sza4HJ6f8vEOuMRYVxXPUjTNz4vCs9l2NJ59+cpV1dX5yvUYyOOUVRGb2LpJLZKXABDObBlzk7p/trp2712Y8vxG4MUfVmpQ664AZOY51fsrjVSQ3IWQ6P7PA3ZeTXOYj+gXcOTnqXJNr/CIi0v/y/Y7ov4APADugMyxO669BiYjIoSPfIMLdX8ooylxSExER2W/5blZ4KVqe8+g+RJcAuuipiIj0Wb6fiP6Z5FbqI4CXgenRcxERkT7Jd9fcqyS3PYuIiBxQ+V5rbpKZ/dLMtpvZNjNbZmYH7crbIiIydOW7NPczYClQBYwHfkHKvYlERER6K98gMnf/qbu3RX/uJPdldkRERPZLvrvmfm9mXyJ52R4nef24X0V3bu34RVEREZH9lm8QnRv99yLe+iRkwAUc5Du1iojI0JLv0tyVwLToTq0/BtYBZ7v7RHdXCImISK/lG0RXRVepPhV4P8krYn+/30YlIiKHjHyDqONyPh8GfuDuy4Bh/TMkERE5lOQbRC+b2a3APOAhMxu+H21FRES6lG+YzAMeAc509zeAUcAX+2tQIiJy6Mj3Ej9vAv+d8rwRaOyvQYmIyKFDy2siIhKUgkhERIJSEImISFAKIhERCUpBJCIiQSmIREQkKAWRiIgEpSASEZGgFEQiIhKUgkhERIJSEImISFAKIhERCUpBJCIiQSmIREQkKAWRiIgEpSASEZGgFEQiIhKUgkhERIJSEImISFAKIhERCUpBJCIiQSmIREQkKAWRiIgEpSASEZGgFEQiIhKUgkhERIJSEImISFAKIhERCUpBJCIiQSmIREQkKAWRiIgEpSASEZGgFEQiIhKUgkhERIJSEImISFAKIhERCUpBJCIiQSmIREQkKAWRiIgEpSASEZGgFEQiIhKUgkhERIJSEImISFAKIhERCUpBJCIiQSmIREQkKAWRiIgEpSASEZGgFEQiIhKUgkhERIJSEImISFAKIhERCUpBJCIiQSmIREQkKAWRiIgEpSASEZGgFEQiIhKUgkhERIJSEImISFAKIhERCUpBJCIiQSmIREQkKAWRiIgEpSASEZGgFEQiIhKUgkhERIJSEImISFAKIhERCUpBJCIiQSmIREQkKAWRiIgEpSASEZGgFEQiIhKUgkhERIKKhx6AmY0HbnL3c/az3UPAee7+Rjd1FgKPuftv+zZKEcmUSDibduxm684WKsuKqB5dQixmebVta0vQ0NhEY1MLVeUjmFJVRiLhrH+liS07W6gqK6J2fDnDhhWwb187619pomlPK6s3vUbt+HJa29to2NLM1p17qSwbzpRxpQwvLMw6JpBXWa6+29rbqd+yq7OPmnEjKR4xrHM8qXWBrLJYzLrse2dLK+teeqPbeef7mgN5nYdcbRMJzxpjPJ7780lfzndPggeRu78CZIWQmcXdva2bdh/K49gL+jg8EckhkXAebtjCZUvX0tKaoKgwxg3zpnPmlHE9vjm1tSW4f93LXHV/fWfb6+bWMCwe44p71neWLZxTw0emVPJgw1YWLKvn4sn7uPK2P/Gtc6bS0prg6mXdt792Tg1lI+JcuuStMd74sens3NOW1jZXvev/cRp79rWn1Vt4Vg0frKng1w3bWZDRvqgwxhdT+v7mOVNpa3e+ct+GtDEOjyfrXTx5H1csWsGNH5tO0562tOMtnFPD3Knjs8Io12t+y3knsq/NezwPudre+qkZbN+1L+s8zJ12RFYY9eV85+OgLs2Z2TfM7LMpz68xs8vNrD56fr6Z/cLMfgk8ambFZrbUzNab2d1m9iczq4vqbjKzMWZWbWbPmNkPzazBzB41sxFRnTvM7Jzo8clm9oSZrTOzJ81sZNT2cTN7OvrzroP5eogMVpt27O58UwJoaU1w2dK1bNqxu8e2DY1NnW9+HW2vur+e57c1p5UtWFZP/ZZdnW/SHeXPbWvuDIju2l+9rJ7WNk8ra23zrLa56v1l666segseqOeZLbuzxnP1snqey+j7+W3NnSGUOsbMeq1tnnW8BcvqWf9KU16v+frNTXmdh1xtd+1pz3keGhrz6zvf850Pc/cDcqC8OjM7EfiOu783ev5n4J+B77l7jZmdD1wHTHX318zsC8Bx7n6RmdUAa4FT3P0pM9sE1AGlwPNAnbuvNbOlwAPufqeZ3QE8CDwAPAuc6+6rzKwMeBMYBiTcvcXMjgN+7u51XYx9PjAfoLKy8qQlS5b06jVobm6mtLS0V20HoqE0n6E0F+jf+eze28bGV7PfhCZVlFAyrPuFlp0trbyw482s8rEji9i2qyWtbMKoYl58LVm3cgRs3ZO7Xlftjzx8BJtf39Pl867Ku+ojdTzd9d3TGDvm0tV4JowqpnxEYVpZrte8q34yz0Outl31ffToYsqKeu47tZ98/187/fTTV+d6jz2oS3PuvsbMxkbfC1UArwMvZlT7jbu/Fj0+FbgxaltvZuu7OPTf3H1t9Hg1UJ3x8xOARndfFR1rJ4CZlQC3mNl0oB04vpuxLwIWAdTV1fmsWbO6nWtXli9fTm/bDkRDaT5DaS7Qv/PZuL2Zy296vPNfyABFhTEemn0Kkyq6f0Na99IbXLFoRVbb+adVc9MTz6eVLb5gBlfe/iQtrQkur23j2xviXHpGNbeu2phX++vPqeHbj63pLLvlvBq+u2JdVtvMel31kTqe7vruaYwdc+lqPHdeeBJ11aPSXrdcr3lX/WSeh1xtu+r77vl1TDvq8B77Tu2nr/+vhdg1dw/J74TOBXJ9rEiN3XwXH/emPG4nO2ANyPXR7/PAVmAayU9Xw/LsT+SQVj26hBvmTaeoMPkW0vGdQceX592ZUlXGdXNr0tpeN7eGY8eWppUtnFNDzbiRLJyTXvfYsaWd38t01/7aOTUUxi2trLDAstrmqndc5cisegvPquFt40qyxnPtnBqOy+j7mLGlfO2jtVljzKxXWGBZx1s4p4ap0QaInl7z2iPL8zoPudqOLCrIeR6mVOXXd77nOx8hNissAX4IjAHeCwzvpu4fgXnA783s7UBtL/t8FhhvZidHS3MjgT1AObDZ3RNm9mkg91YVEUkTixlnThnH5Evew7ZdLYwdmf8uqng8xtxpR3Dc2FK2NLUwrryIKVXlJBLO+AtHdO7KmhrtHps7dTyTxpTw8jOrufPCk5ga7Zo7evTMrF1zR48qTjsmwN3zT8kqO74yu+87L3xHWt9t7e0cPbo4a9dcx3hS6wJUZYw9FjOOqSjJ6nvCqGJeaHiKu+fXdfadebxcu+a6es2BHs9DV20TCc86D7l2zfXlfOfjoAeRuzdEQfCyuzeaWXU31b8H/CRaklsDrAeyv0nruc99ZnYucHO0kWEP8L7o+Pea2T8Cvyf905iIdCMWMyZVlPa4FJdLPB5j2lGHM+2o9PLM5SiAYcMKqKseRfOmws6fD6OAmROz/w2b65j5lmX2nexjdJfjyZSrrKu+X/9rYdryV662uXT1mudzHnK1jcUs5xj3p+8DIcj2bXevTXm8CaiJHt8B3JFStQX4ZLSZ4Bjgf4AXorrVUZ1XO9pH5denPD4/5fEq4JSMoTwHTE15/uVeTUhERHot+O8R9aCY5LJcIcnvef7F3fcFHpOIiBxAAzqI3H0XyU0EIiIyROlacyIiEpSCSEREgjqoV1YYKsxsO9GmiV4YQ3KDxVAxlOYzlOYCms9ANpTmAvnP52h3r8gsVBAdZGb2VFeXERqMhtJ8htJcQPMZyIbSXKDv89HSnIiIBKUgEhGRoBREB9+i0AM4wIbSfIbSXEDzGciG0lygj/PRd0QiIhKUPhGJiEhQCiIREQlKQXSQmNntZrat47bog5mZHWVmv49u0d5gZpeGHlNfmFlRdPv4ddF8vhp6TH1lZgVmtsbMHgw9lr4ys01mtsHM1prZU6HH01dmdpiZ3WNmz0Z/h94Zeky9YWYnROek489OM/tcr46l74gODjM7DWgGFrt7TU/1BzIzqwKq3P3p6JYeq4G57v7nwEPrFTMzoMTdm6ML7P4RuNTdVwYeWq+Z2WUkr9NY5u4fCT2evjCzTUCduw+JXwA1s58Aj7v7j8xsGFDs7m8EHlafmFkB8DLwDnff71/21yeig8TdHwNe67HiIODuje7+dPR4F/AMcETYUfWeJzVHTwujP4P2X2hmdiTwYeBHocci6cysDDgNuA2S90ob7CEUOQP4a29CCBRE0kfRjQ1PBP4UeCh9Ei1lrQW2Ab9x98E8n+8AVwCJwOM4UBx41MxWm9n80IPpo0nAduDH0dLpj8zswNxvO6yPAT/vbWMFkfSamZUC9wKfc/edocfTF+7e7u7TgSOBmWY2KJdPzewjwDZ3Xx16LAfQu919BvBB4OJomXuwigMzgO+7+4kk7wr9pbBD6ptoefEs4Be9PYaCSHol+i7lXuAud//v0OM5UKJlkuXAmWFH0mvvBs6KvldZAvydmd0Zdkh94+6vRP/dBtwHzAw7oj7ZDGxO+cR9D8lgGsw+CDzt7lt7ewAFkey36Mv924Bn3P2G0OPpKzOrMLPDoscjgPcBzwYdVC+5+5fd/Uh3rya5XPI7d/9k4GH1mpmVRBtiiJawZgODduepu28BXjKzE6KiM4BBucknxcfpw7IcDPA7tA4lZvZzYBYwxsw2A//u7reFHVWvvRv4FLAh+l4F4Cvu/lC4IfVJFfCTaOdPDFjq7oN+2/MQUQncl/y3D3HgZ+7+cNgh9dm/AXdFS1obgc8EHk+vmVkx8H7goj4dR9u3RUQkJC3NiYhIUAoiEREJSkEkIiJBKYhERCQoBZGIiASlIBIRkaAURCIDgJmdb2bj86h3h5md083Pl5tZ3QEe22Fm9tmU57OGwu0lZOBQEIkMDOcDPQZRIIcBn+2pkkhvKYhE+oGZVUc3PvuJma2PboRWbGYnmdkfoitJP2JmVdEnnDqSv22/1sxGmNkCM1tlZvVmtii6rNL+jmG2ma0ws6fN7BfRRWo7bjT31ah8g5lNjsorzOw3UfmtZvaCmY0Bvg4cE43tW9HhS1Nu7nZXb8Yn0kFBJNJ/TgAWuftUYCdwMXAzcI67nwTcDvyHu98DPAV8wt2nu/se4BZ3Pzm6ieIIYL9ubhcFyFXA+6IrVz8FXJZS5dWo/PvAF6Kyfyd5bboZJC8uOiEq/xLJe81Md/cvRmUnAp8D3k7y1gbv3p/xiaTSteZE+s9L7v6/0eM7ga8ANcBvog8QBUBjF21PN7MrgGJgFNAA/HI/+j6FZEj8b9TXMGBFys87rpi+GviH6PGpwEcB3P1hM3u9m+M/6e6bAaLrDVaTvLOtyH5TEIn0n8wLOe4CGtz9nd01MrMi4Hskb4/9kpldAxTtZ99G8gZ/H+/i53uj/7bz1vvA/iyv7U15nHoMkf2mpTmR/jPBzDpC5+PASqCio8zMCs1sSvTzXcDI6HFH6Lwafa/T5S65bqwE3m1mx0Z9FZvZ8T20+SMwL6o/Gzg8x9hEDjgFkUj/eQb4tJmtJ7m8djPJUPmGma0D1gLviureAfwgWubaC/wQ2ADcD6za347dfTvJnXg/j/pfCUzuodlXgdlm9jTJm501ArvcfQfJJb76lM0KIgeMbgMh0g/MrBp4MNpsMCiY2XCg3d3bok9t349uny7Sr7SuKyIdJgBLzSwG7AP+KfB45BChT0Qig5CZ3QdMzCi+0t0fCTEekb5QEImISFDarCAiIkEpiEREJCgFkYiIBKUgEhGRoP4/oVadnGfGa7UAAAAASUVORK5CYII=",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.scatterplot(x='petal_length', y='species', data=iris)\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From the figure above, one may think that a linear regressor, even if not perfect, could still be an option. However, **to fit a linear regressor, we should first convert species values to numeric values**. A possible outcome could be:"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"iris2 = iris.copy(); \n",
"iris2['species'] = iris2['species'].replace({'setosa':1, 'versicolor':2, 'virginica':0})\n",
"sns.scatterplot(x='petal_length', y='species', data=iris2)\n",
"plt.grid()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Even if the two mappings should be equivalent, we can see how a linear model would find very different results.\n",
"\n",
"This is an example of how the linear model is **even more limited when more than two possible outcomes of the dependent variable are possible**."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### The Multinomial Logistic Regression Model\n",
"When the dependent variable can assume more than two values, **we can define the multinomial logistic regression model**. In this case, we select one of the values of the dependent variable $Y$ as **a baseline class**. Without loss of generality, let $K$ be the number of classes and let $Y=1$ be the baseline class. Recall that in the case of the logistic regressor, we modeled the logarithm of the odd as our linear function:\n",
"\n",
"$$\\log \\left(\\frac{P(y=1|\\mathbf{x})}{1-P(y=1|\\mathbf{x})}\\right) = \\beta_0 + \\beta_1 x_1 + \\ldots + \\beta_n x_n$$\n",
"\n",
"Since we have more than one possible outcomes for the dependent variable, rather than modeling the odds, a multinomial logistic regressor models the logarithm of the ratio between a given class $k$ and the baseline class $1$ as follows:\n",
"\n",
"$$\\log\\left( \\frac{P(Y=k|X=\\mathbf{x})}{P(Y=1|X=\\mathbf{x})} \\right) = \\beta_{k0} + \\beta_{k1} x_1 + \\ldots + \\beta_{kn} x_n$$\n",
"\n",
"Note that, in practice, we need to define a different linear function for each class $k = 1 \\ldots K$, hence we need $(n+1) \\times (k-1)$ parameters.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Doing the math, it can be shown that:\n",
"\n",
"$$ P(Y=k|X=\\mathbf{x}) = \\frac{e^{\\mathbf{\\beta_k}^T\\mathbf{X}}}{1+\\sum_{l=2}^K \\mathbf{e^{\\beta_l^T\\mathbf{X}}}}$$\n",
"$$ P(Y=1|X=\\mathbf{x}) = \\frac{1}{1+\\sum_{l=2}^K \\mathbf{e^{\\beta_l^T\\mathbf{X}}}}$$\n",
"\n",
"\n",
"Where $\\mathbf{\\beta_k}=(\\beta_0,\\beta_1,\\ldots,\\beta_k)$ and $\\mathbf{X}=(1,x_1,\\ldots,x_n)$.\n",
"\n",
"\n",
"These two expressions can be used to compute the probabilities of the classes once that the parameters have been estimated and $\\mathcal{x}$ is observed."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```{toggle} \n",
"#### Deriving the last two equations (optional)\n",
"\n",
"From this expression:\n",
"\n",
"$$\\log\\left(\\frac{P(k)}{P(1)}\\right) = \\mathbf{\\beta_k}^T\\mathbf{X} \\Rightarrow P(k)= e^{\\mathbf{\\beta_k}^T\\mathbf{X}} P(1)$$\n",
"\n",
"We can divide the last term by $1=\\sum_{l=1}^K P(l)$:\n",
"\n",
"$$ P(k) = \\frac{e^{\\mathbf{\\beta_k}^T\\mathbf{X}} P(1)}{\\sum_{l=1}^K P(l)} = \\frac{e^{\\mathbf{\\beta_k}^T\\mathbf{X}}}{\\sum_{l=1}^K \\frac{P(l)}{P(1)}} = \\frac{e^{\\mathbf{\\beta_k}^T\\mathbf{X}}}{\\frac{P(1)}{P(1)}+\\sum_{l=2}^K \\frac{P(l)}{P(1)}} = \\frac{e^{\\mathbf{\\beta_k}^T\\mathbf{X}}}{1+\\sum_{l=2}^K \\mathbf{e^{\\beta_l^T\\mathbf{X}}}} \\text{ (A)}$$\n",
"\n",
"Note that the expression above can also be seen as:\n",
"\n",
"$$ P(k) = \\frac{\\frac{P(k)}{P(1)}}{1+\\sum_{l=2}^K \\mathbf{e^{\\beta_l^T\\mathbf{X}}}}$$\n",
"\n",
"Hence:\n",
"\n",
"$$ P(1) = \\frac{1}{1+\\sum_{l=2}^K e^{\\mathbf{\\beta}_l^T\\mathbf{X}}} \\text{ (B)}$$\n",
"\n",
"We can rewrite the results (A) and (B) in the full form:\n",
"\n",
"$$ P(Y=k|X=\\mathbf{x}) = \\frac{e^{\\mathbf{\\beta_k}^T\\mathbf{X}}}{1+\\sum_{l=2}^K \\mathbf{e^{\\beta_l^T\\mathbf{X}}}}$$\n",
"$$ P(Y=1|X=\\mathbf{x}) = \\frac{1}{1+\\sum_{l=2}^K \\mathbf{e^{\\beta_l^T\\mathbf{X}}}}$$\n",
"\n",
"#### Estimating the Parameters of the Multinomial Logistic Regressor Model (Optional)\n",
"We can estimate the paramters of the multinomial logistic regressor model again by maximizing the likelihood of the model on the data. Assuming that all observations are i.i.d., we can write:\n",
"\n",
"$$L(\\mathbf{\\beta}) = \\prod_{i=1}^N P(Y=y^{(i)}|X=\\mathbf{x}^{(i)};\\mathbf{\\beta})$$\n",
"\n",
"Again, we minimize the negative log likelihood:\n",
"\n",
"$$nll(\\mathcal{\\beta})=-\\log L(\\mathbf{\\beta}) = -\\sum_{i=1}^N \\log P(Y=y^{(i)}|X=\\mathbf{x}^{(i)};\\mathbf{\\beta}) = $$\n",
"$$-\\sum_{i=1}^N [y^{(i)} \\neq 1](e^{-\\mathbf{\\beta}_k^T\\mathbf{X}} - \\log(1+\\sum_{l=2}^K {\\beta}_k^T\\mathbf{X})) + [y^{(i)} = 1] (- \\log(1+\\sum_{l=2}^K {\\beta}_k^T\\mathbf{X}))$$\n",
"\n",
"Where $[\\cdot]$ denotes the Iverson brackets:\n",
"\n",
"$$[x] = \\begin{cases}1 & \\text{if } x \\text{ is true} \\\\ 0 & \\text{otherwise}\\end{cases}$$\n",
"\n",
"Similarly to the logistic regressor, there is no close form for the estimation of the parameters, but iterative algorithms such as **gradient descent** are in general used for optimization.\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Interpretation of the Parameters of a Multinomial Logistic Regressor\n",
"The statistical interpretation of the parameters of a multinomial logistic regressor is similar to the one of a logistic regressor, but we should pay attention to the choice of the baseline. \n",
"\n",
"Let us consider our example of studying the relationship between `sepal_lenght` and `species`. We will map `virginica` to $0$, `versicolor` to $1$ and `setosa` to $2$. Once the model is fit, we will find the following values:\n",
"\n",
"|Pseudo $R^2$|LogLikelihood| LLR p-value|\n",
"|-|-|-|\n",
"|0.4476|-91.034|9.276e-33|\n",
"\n",
"The value of LLR p-value is telling us that the model is statistically relevant, even if the pseudo $R^2$ is not very high. The relationship is not completely explained by the multinomial logistic regressor.\n",
"\n",
"The coefficients will be as follows:"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"tags": [
"remove-input"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Optimization terminated successfully.\n",
" Current function value: 0.606893\n",
" Iterations 8\n"
]
},
{
"data": {
"text/html": [
"
\n",
"
\n",
"
species=1
coef
std err
z
P>|z|
[0.025
0.975]
\n",
"
\n",
"
\n",
"
Intercept
12.6771
2.906
4.362
0.000
6.981
18.373
\n",
"
\n",
"
\n",
"
sepal_length
-2.0307
0.466
-4.361
0.000
-2.943
-1.118
\n",
"
\n",
"
\n",
"
species=2
coef
std err
z
P>|z|
[0.025
0.975]
\n",
"
\n",
"
\n",
"
Intercept
38.7590
5.691
6.811
0.000
27.605
49.913
\n",
"
\n",
"
\n",
"
sepal_length
-6.8464
1.022
-6.698
0.000
-8.850
-4.843
\n",
"
\n",
"
"
],
"text/plain": [
""
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from statsmodels.formula.api import mnlogit\n",
"iris2 = iris.copy(); \n",
"iris2['species'] = iris2['species'].replace({'setosa':2, 'versicolor':1, 'virginica':0})\n",
"mnlogit(\"species ~ sepal_length\", iris2).fit().summary().tables[1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that there are two sets of coefficients. One for `species=1` (versicolor) and one for `species=2` (setosa). No coefficients have been estimated for `virginica`, because it has been chosen as the baseline. We can see that all p-values are small, so we can keep all variables. Let us see how to interpret the coefficients:\n",
"* The intercept for `species=1` is $12.6771$. This indicates that the odd of `versicolor` versus `virginica` is $e^{12.6771}=320327.76$, when `sepal_length` is set to zero. This is a very large number, probably due to the fact that `sepal_lenght=0` is not a realistic observation.\n",
"* The intercept for `species=2` is $38.7590$. This indicates that the odd of `setosa` versus `virginica` is $e^{38.7590}=6.8e+16$, when `sepal_length` is set to zero. Also in this case, we obtain a very large number, probably due to the fact that `sepal_lenght=0` is not a realistic observation.\n",
"* The coefficient $-2.0307$ of `sepal_length` for `species=1` indicates that when we observe an increase in one centimeter of `sepal_length`, the odd of `versicolor` versus `virginica` decreases multiplicatively by $e^{-2.0307} = 0.13$ (a large -$87\\%$!).\n",
"* The coefficient $-6.8564$ of `sepal_length` for `species=2` indicates that when we observe an increase in one centimeter of `sepal_length`, the odd of `setosa` versus `virginica` decreases multiplicatively by $e^{-6.8464} = 0.001$ (a large -$99.9\\%$!)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```{toggle}\n",
"#### The Softmax Regressor (Optional)\n",
"Softmax regression is an alternative formulation of multinomial logistic regression which is designed to avoid the definition of a baseline and it is hence symmetrical. In a softmax regressor, the probabilities are modeled as follows:\n",
"\n",
"$$ P(Y=k|X=\\mathbf{x}) = \\frac{e^{\\mathbf{\\beta_k}^T\\mathbf{X}}}{\\sum_{l=1}^K \\mathbf{e^{\\beta_l^T\\mathbf{X}}}}, \\ \\ \\ \\forall k=1,\\ldots,K$$\n",
"\n",
"So, rather than estimating $K-1$ coefficients, we estimate $K$ coefficients.\n",
"\n",
"The optimization of the model is performed defining a similar cost function and optimizing it with iterative methods.\n",
"\n",
"The softmax formulation is widely used in predictive analysis and machine learning, but less pervasive in statistics.\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## References\n",
"* Chapter $4$ of \\[1\\]\n",
"\n",
"\\[1\\] James, Gareth Gareth Michael. An introduction to statistical learning: with applications in Python, 2023.https://www.statlearning.com"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.12"
}
},
"nbformat": 4,
"nbformat_minor": 2
}