{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Machine Learning Accelerator - Natural Language Processing - Lecture 3\n",
"\n",
"## Neural Networks with Gluon\n",
"\n",
"In this notebook, we will build, train and validate a Neural Network using Gluon/MXNet.\n",
"1. Implementing a neural network with Gluon\n",
"2. Loss Functions\n",
"3. Training\n",
"4. Example - Binary Classification\n",
"5. Natural Language Processing Context"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Note: you may need to restart the kernel to use updated packages.\n"
]
}
],
"source": [
"%pip install -q -r ../requirements.txt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Implementing a neural network with Gluon\n",
"(Go to top)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's implement a simple neural network with two hidden layers of size 64 and 128 using the sequential mode (Adding things in sequence). We will have 3 inputs, 2 hidden layers and 1 output layer. Some drop-outs attached to the hidden layers."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sequential(\n",
" (0): Dense(3 -> 64, Activation(tanh))\n",
" (1): Dropout(p = 0.4, axes=())\n",
" (2): Dense(None -> 64, Activation(tanh))\n",
" (3): Dropout(p = 0.3, axes=())\n",
" (4): Dense(None -> 1, linear)\n",
")\n"
]
}
],
"source": [
"from mxnet.gluon import nn\n",
"\n",
"net = nn.Sequential()\n",
"\n",
"net.add(nn.Dense(64, # Dense layer-1 with 64 units\n",
" in_units=3, # Input size of 3 is expected\n",
" activation='tanh'), # Tanh activation is applied\n",
" nn.Dropout(.4), # Apply random 40% drop-out to layer_1\n",
" \n",
" nn.Dense(64, # Dense layer-2 with 64 units \n",
" activation='tanh' # Tanh activation is applied\n",
" ),\n",
" nn.Dropout(.3), # Apply random 30% drop-out to layer_2\n",
" \n",
" nn.Dense(1)) # Output layer with single unit\n",
"\n",
"print(net)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can initialize the weights of the network with 'initialize()' function. We prefer to use the following:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from mxnet import init\n",
"\n",
"net.initialize(init=init.Xavier())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's look at our layers and dropouts on them. We can easily access them wth net[layer_index]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dense(3 -> 64, Activation(tanh))\n",
"Dropout(p = 0.4, axes=())\n",
"Dense(None -> 64, Activation(tanh))\n",
"Dropout(p = 0.3, axes=())\n",
"Dense(None -> 1, linear)\n"
]
}
],
"source": [
"print(net[0])\n",
"print(net[1])\n",
"print(net[2])\n",
"print(net[3])\n",
"print(net[4])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Loss Functions\n",
"(Go to top)\n",
"\n",
"We will go over some popular loss functions here. We can select loss functions according to our problem. Full list of supported loss functions are available [here](https://mxnet.incubator.apache.org/api/python/docs/api/gluon/loss/index.html)\n",
"\n",
"\n",
"__Binary Cross-entropy Loss:__ A common loss function for binary classification. It is given by: \n",
"$$\n",
"\\mathrm{BinaryCrossEntropyLoss} = -\\sum_{examples}{(y\\log(p) + (1 - y)\\log(1 - p))}\n",
"$$\n",
"where p is the prediction (between 0 and 1, ie. 0.831) and y is the true class (either 1 or 0). \n",
"\n",
"In gluon, we can use binary cross entropy with `SigmoidBinaryCrossEntropyLoss`. It also applies sigmoid function on the predictions. Therefore, p is always between 0 and 1.\n",
"\n",
"\n",
"```python\n",
"from mxnet.gluon.loss import SigmoidBinaryCrossEntropyLoss\n",
"loss = SigmoidBinaryCrossEntropyLoss()\n",
"```\n",
"__Categorical Cross-entropy Loss:__ It is used for multi-class classification. We apply the softmax function on prediction probabilities and then extend the equation of binary cross-entropy. After the softmax function, summation of the predictions are equal to 1. Equation is below. y becomes 1 for true class and 0 for other classes.\n",
"$$\n",
"\\mathrm{CategoricalCrossEntropyLoss} = -\\sum_{examples}\\sum_{classes}{y_j\\log(p_j)}\n",
"$$\n",
"In gluon, `SoftmaxCrossEntropyLoss` implements the categorical cross-entropy loss with softmax function\n",
"\n",
"\n",
"```python\n",
"from mxnet.gluon.loss import SoftmaxCrossEntropyLoss\n",
"loss = SoftmaxCrossEntropyLoss()\n",
"```\n",
"__L2 Loss:__ This is a loss function for regression problems. It measures the squared difference between target values (y) and predictions (p). Here, square makes sure the offsets with different signs don't cancel out each other.\n",
"$$\n",
"\\mathrm{L2 loss} = \\frac{1}{2} \\sum_{examples}(y - p)^2\n",
"$$\n",
"In gluon, we can use it with `L2Loss`:\n",
"```python\n",
"from mxnet.gluon.loss import L2Loss\n",
"loss = L2Loss()\n",
"```\n",
"__L1 Loss:__ This is similar to L2 loss. It measures the abolsute difference between target values (y) and predictions (p).\n",
"$$\n",
"\\mathrm{L1 loss} = \\frac{1}{2} \\sum_{examples}|y - p|\n",
"$$\n",
"In gluon, we can use it with `L1Loss`:\n",
"```python\n",
"from mxnet.gluon.loss import L1Loss\n",
"loss = L1Loss()\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. Training\n",
"(Go to top)\n",
"\n",
"`mxnet.gluon.Trainer()` module provides necessary training algorithms for neural networks. We can use the following for training a network using Stochastic Gradient Descent method and learning rate of 0.001.\n",
"\n",
"```python\n",
"from mxnet import gluon\n",
"\n",
"trainer = gluon.Trainer(net.collect_params(),\n",
" 'sgd', \n",
" {'learning_rate': 0.001}\n",
" )\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4. Example - Binary Classification\n",
"(Go to top)\n",
"\n",
"Let's train a neural network on a random dataset. We have two classes and will learn to classify them."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.datasets import make_circles\n",
"\n",
"X, y = make_circles(n_samples=750, shuffle=True, random_state=42, noise=0.05, factor=0.3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's plot the dataset"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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mDRpEp544gnzvqtWrcK7776LixcvQpIkfPbZZ2jdujU+//xzLF++HL///juaNWuG+++/HwkJCZg1a5Z5nx9//BHp6en45ptvkJubi5iYGFxzzTWYNGkSOnfubNGGLVu24N1338WJEyeg1WrRqlUr9O/fH2PGjEGLFi0AALm5uZg9eza+/vprlJWVoUePHnjrrbdU/u0SkTcxyCIiIiJSAXOyiIiIiFTg10HW7t278dhjj6F///7o2rUrhg4dim3btjmdli3LMtatW4cbb7wR11xzDe6991589913jXPRREREFBT8OsjatGkTIiIiMGPGDKxevRr9+/fHc889h9dff93hcevXr8eKFSswduxYrF27Fs2bN8e4ceNw+vTpRrpyIiIiCnR+nZOVn59vVbzvueeew65du/D1119Do7GOIauqqnD99dfjwQcfxFNPPQXAOL16wIAB6N+/P+bOndsYl05EREQBzq97smxVR+7QoQNKS0tRXl5u85hvvvkGpaWlSElJMW/T6XS47bbbsHfvXtWulYiIiIKLXwdZthw5cgQtW7a0mMJd38mTJwEAycnJFtvbtm2L7OxsVFZWqn6NREREFPgCKsj63//+h127dmHcuHF29ykuLoZOp0NYWJjFdr1eD1mWUVRUpPZlEhERURAImCDr3LlzePLJJ9GzZ0+MHj26ya7Dj1PciIiIyIsCYlmd4uJijB8/HnFxcVi5cqXNhHcTvV6P6upqVFVVWfRmFRcXQxAExMbGenQtgiCguLgCoih5dB5/otVqoNdHsN1Bgu1mu4MB2x1c7Y6NjXAYO7jL74OsyspKTJgwASUlJXjvvfcQExPjcH9TLtapU6dw1VVXmbefPHkSBoMB4eHhHl+TKEqorQ2eF6cJ2x1c2O7gwnYHl2Brt1qDUH49XFhbW4upU6fi5MmT2LBhA1q2bOn0mGuvvRbR0dHYvXu3eVtNTQ0+/vhj8yKuRERERJ7y656sF154AV988QVmzJiB0tJSi6rtHTt2hE6nw5gxY5CdnY1PPvkEABAWFoYJEyZg5cqVSEhIQLt27bB582YUFhYiNTW1iVpCREREgcavg6ysrCwAwKJFi6we++yzz9C6dWtIkgRRFC0eGz9+PGRZxsaNG5Gfn48OHTogPT0dbdq0aZTrJiIiosDn1xXffVVBQVlQjWWHhGgQHx/FdgcJtpvt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oWR4/8NcAKDNy4X+0VRI8QnGWYp2FrmWomOA0FBEvPtv8/aI1SudLjBd27sP0Lo15LNnXV42yJ7iN98FZBn6h8fYnVnpiBwXB6Gw0PyzlGSwWW3dXOfMyVAv1xok8i6/DrIOHz6MmTMvrfO1b98+7NtnrEz9yy+/mLeLogipwRDD8uXLsXDhQsyZMwe1tbXo27cv0tLSWO2dSAmtFrV9+7uds+H0Qx/uJZkL+ZdmHtpcU0+WoSktAUpLLI6rP+RoN9DSaoFXXwVGjLA+t+n5G7Sh4bb61yIlGVBzfV9jtXQ3F34uTn8L0GicV1vnWoNETcKv1y70VcG25lOwrnXFdnvWbvOyN4DNgAVwL9CSBQFSXDwQHg5tTr019ZIMECorIRTkOwx88o8csxlsmNpd+uY7iJj5rOV6ffEJEACLhZylhAQI+fmAnaDGFNCF7dgK/aOprrfRwbXa485ag3yds93BgGsXElFAsbesi2RohcphIxD+/laHyfH2CLIMbUE+CrdlAFqtuZcHkoS4u+90fFz2WYQeOuBwmZiaO4ei4vaB1uv1AVbbdLt3WrevwZCeq0OnnvQ8ca1BosbFIIuImoyjD/3ytLmIXLoAUa8sdevcmtyLqBp+abZy2I6tyo5TkpRvZ72+htuUBDWuDp3ay7tSjGsNEjUaBllE1LTsfehrtajpdyPgZpDVsIeoyWbYOQtqnOVLyTJKp82ClNyWPU9EfiYoSzgQkX8w9fLILiwsVn+haFfOZe+4xmAaOpWSkiy2S0kGFG98GxXPzEDV8JHGYI0BFpHfYE8WEfkuR708df+3mNHnKF/Jx2fYMV+KKPCwJ4uIfJq9Xh45IQFSfLzFNmdFUR32GLlQTFU1dUOL7LUiCgzsySIin2e3lwfWM/qcBSbsMSKixsIgi4j8g8IZfZ6ci4jImzhcSERERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKQCBllEREREKmCQRURERKSCkKa+AE9kZWVhx44dOHr0KE6fPo0HH3wQc+bMcXrcmTNncMstt1ht79KlC7Zs2aLGpRIREVGQ8esga9++ffj555/RvXt3FBUVuXz8U089hZ49e5p/joqK8ublERERURDz6yBr2rRpmDFjBgDg8OHDLh9/+eWXo2vXrl6+KiIiIiI/z8nSaPz68omIiCiA+XVPlqfmzp2LJ598EnFxcbjlllvwzDPPIC4uzuPzarXBFfyZ2st2Bwe2m+0OBmx3cLVbENQ5b1AGWTqdDvfffz/69u0LvV6Po0ePYs2aNTh27Bi2bt2K0NBQj86v10d46Ur9C9sdXNju4MJ2B5dgbbe3+VSQVVJSggsXLjjdr02bNtDpdG4/T4sWLTB37lzzzz169MCVV16JCRMm4JNPPsHAgQPdPjcAFBdXQBQlj87hT7RaDfT6CLY7SLDdbHcwYLuDq92xsRGqpCD5VJC1Z88epKWlOd1v165daNu2rVef+4YbbkBkZCSOHz/ucZAlihJqa4PnxWnCdgcXtju4sN3BJdjaLcvqnNengqyRI0di5MiRTX0ZRERERB4Lrsw2B7744guUl5fj6quvbupLISIiogDgUz1Zrjp79ix++OEHAEBFRQX+/PNP7NmzBwAwYMAA834dO3bEXXfdhQULFgAAFi1aBEEQ0LVrV+j1enz//fdYu3YtOnfujFtvvbXxG0JEREQBx6+DrMOHD2PmzJnmn/ft24d9+/YBAH755RfzdlEUIUmXxpbbtm2LzZs3Y8uWLaisrETLli0xYsQITJ48GSEhfv0rISIiIh8hyLJa6V7Bq6CgLKgSBkNCNIiPj2K7gwTbzXYHA7Y7uNqdkBClSm0w5mQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqYBBFhEREZEKGGQRERERqSCkqS/AXaIoYuPGjfjyyy/x22+/QZZltG/fHlOmTMF1113n9PiSkhIsXLgQn376KWpqatCvXz+kpaWhRYsWjXD1REREFOj8tiersrIS69atQ6dOnbB48WK8/PLLiI2NxejRo3Hw4EGnx0+dOhVZWVmYO3cuXn75ZZw6dQrjx49HbW1tI1w9ERERBTq/7ckKDw/Hp59+itjYWPO2Pn36YPDgwXjjjTfQu3dvu8d+++232L9/P9LT09G3b18AwBVXXIGBAwfi448/xsCBA1W/fiIiIgpsftuTpdVqLQIs07b27dvjwoULDo/du3cv9Ho9+vTpY96WnJyMDh06YO/evapcLxEREQUXv+3JsqW2thZHjx5Ft27dHO538uRJXHHFFRAEwWJ7cnIyTp486fF1xMZGQJY9Po3fMP0a2e7gwHaz3cGA7Q6udms0gvOd3BBQQdaGDRtw/vx5jB071uF+xcXFiImJsdoeGxuLY8eOeXwdGo3fdhB6hO0OLmx3cGG7g0uwttvbfCrIKikpcTrUBwBt2rSBTqez2JaVlYWVK1di4sSJ6Ny5s1qXSERERKSITwVZe/bsQVpamtP9du3ahbZt25p/Pn78OJ544gkMHjwYkyZNcnq8Xq/HuXPnrLYXFRVZ5XkRERERucOngqyRI0di5MiRLh3zxx9/YPz48fj73/+O+fPnKzomOTkZBw8ehCzLFnlZp06dQrt27Vx6fiIiIiJb/HrQ9cKFCxg3bhySkpKwYsUKhIaGKjquf//+KCoqsqinderUKfz444/o37+/WpdLREREQUSQZf+cP1BZWYl7770Xp0+fxssvv4yEhATzYzqdDh07djT/3LFjR9x1111YsGCBeVtqaipOnDiB6dOnIywsDMuWLYNGo8H27dsREuJTHXxERETkh/w2msjNzcXPP/8MAHjssccsHmvVqhU+//xz88+iKEKSJIt9li9fjoULF2LOnDmora1F3759kZaWxgCLiIiIvMJve7KIiIiIfJlf52QRERER+SoGWUREREQqYJBFREREpAIGWUREREQqYJBFREREpAIGWUREREQqYFEoN4miiI0bN+LLL7/Eb7/9BlmW0b59e0yZMgXXXXed0+NLSkqwcOFCfPrpp6ipqUG/fv2QlpaGFi1aNMLVeyYrKws7duzA0aNHcfr0aTz44IOYM2eO0+POnDmDW265xWp7ly5dsGXLFjUu1avcbTfg3/cbAD7//HMsX74cp06dgsFgwCOPPIK7777b4TH+dL9PnDiB+fPn49tvv0VUVBSGDh2KqVOnWi1E35Asy1i/fj3eeecd5Ofno0OHDpg5cya6du3aOBfuIXfbffPNN+Ps2bNW27///nuEhYWpdble8ccffyA9PR1Hjx7Fr7/+iuTkZGRmZjo9zt/vtbvt9ud7DQC7d+9GRkYGjh8/juLiYlx++eV46KGHcPfdd1ssq9eQt+43gyw3VVZWYt26dRg2bBjGjx8PjUaDLVu2YPTo0UhPT0fv3r0dHj916lT89ttvmDt3LsLCwrB8+XKMHz/eLyrO79u3Dz///DO6d++OoqIil49/6qmn0LNnT/PPUVFR3rw81XjSbn++3//73/8wadIkjBgxArNmzcKhQ4cwe/ZsREVFYcCAAU6P9/X7XVRUhDFjxuCvf/0rVq5cifPnz2PRokWorKx0GkSvX78eK1aswDPPPIP27dvj3//+N8aNG4cPP/wQbdq0aaQWuMeTdgPAHXfcgXHjxllscxac+YJff/0VX331Fbp06QJJkqC0VKQ/32vA/XYD/nuvAWDTpk1o1aoVZsyYgfj4eBw4cADPPfcczp07h0mTJtk9zmv3Wya31NbWyoWFhVbbBgwYIE+YMMHhsd98843crl07ed++feZtJ06ckNu3by/v3LlTlev1JlEUzf++6aab5BdeeEHRcadPn5bbtWsn7969W61LU5W77fb3+z1u3Dj53nvvtdj21FNPySkpKQ6P85f7vWbNGrlr165yQUGBedu7774rd+jQQT537pzd4yorK+Vrr71W/uc//2neVlVVJd90003y888/r+IVe4e77ZZl117/vqb++3j69OnyoEGDnB7j7/dalt1rtyz7972WZVnOy8uz2paWliZfe+21Fr+T+rx5v5mT5SatVovY2Firbe3bt8eFCxccHrt3717o9Xr06dPHvC05ORkdOnTA3r17Vbleb9JogvNl4267/fl+V1dX4/Dhw1Y9VgMHDsSJEydw5syZJroy79m7dy969+6NuLg487aUlBRIkoSsrCy7x33zzTcoLS1FSkqKeZtOp8Ntt93m8/cVcL/d/s6d97G/32sgeP9u11/X2KRDhw4oLS1FeXm5zWO8eb+D87euktraWhw9ehTJyckO9zt58iSuuOIKq/Hg5ORknDx5Us1L9Alz585Fhw4d0Lt3b6Sl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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"def plot_dataset(X, y, title):\n",
" \n",
" # Activate Seaborn visualization\n",
" sns.set()\n",
" \n",
" # Plot both classes: Class1->Blue, Class2->Red\n",
" plt.scatter(X[y==1, 0], X[y==1, 1], c='blue', label=\"class 1\")\n",
" plt.scatter(X[y==0, 0], X[y==0, 1], c='red', label=\"class 2\")\n",
" plt.legend(loc='upper right')\n",
" plt.xlabel('x1')\n",
" plt.ylabel('x2')\n",
" plt.xlim(-2, 2)\n",
" plt.ylim(-2, 2)\n",
" plt.title(title)\n",
" plt.show()\n",
" \n",
"plot_dataset(X, y, title=\"Dataset\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Importing the necessary libraries"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"import time\n",
"import mxnet as mx\n",
"from mxnet import gluon, autograd\n",
"import mxnet.ndarray as nd\n",
"from mxnet.gluon.loss import SigmoidBinaryCrossEntropyLoss"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We are creating the network below. We will have two hidden layers. Since the data seems easily seperable, we can have a small network (2 hidden layers) with 10 units at each layer."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"from mxnet import init\n",
"from mxnet.gluon import nn\n",
"\n",
"net = nn.Sequential()\n",
"net.add(nn.Dense(10, in_units=2, activation='relu'),\n",
" nn.Dense(10, activation='relu'),\n",
" nn.Dense(1, activation='sigmoid'))\n",
"net.initialize(init=init.Xavier())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's define the training parameters"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"batch_size = 4 # How many samples to use for each weight update \n",
"epochs = 50 # Total number of iterations\n",
"learning_rate = 0.01 # Learning rate\n",
"context = mx.cpu() # Using CPU resource\n",
"\n",
"# Define the loss. As we used sigmoid in the last layer, use from_sigmoid=True\n",
"binary_cross_loss = SigmoidBinaryCrossEntropyLoss(from_sigmoid=True)\n",
"\n",
"# Define the trainer, SGD with learning rate\n",
"trainer = gluon.Trainer(net.collect_params(),\n",
" 'sgd',\n",
" {'learning_rate': learning_rate}\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"# Splitting the dataset into two parts: 80%-20% split\n",
"X_train, X_val = X[0:int(len(X)*0.8), :], X[int(len(X)*0.8):, :]\n",
"y_train, y_val = y[:int(len(X)*0.8)], y[int(len(X)*0.8):]\n",
"\n",
"# Convert to ND arrays for gluon\n",
"X_train = nd.array(X_train)\n",
"X_val = nd.array(X_val)\n",
"y_train = nd.array(y_train)\n",
"y_val = nd.array(y_val)\n",
"\n",
"# Using Gluon Data loaders to load the data in batches\n",
"train_dataset = gluon.data.ArrayDataset(X_train, y_train)\n",
"train_loader = gluon.data.DataLoader(train_dataset, batch_size=batch_size)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's start the training process. We will have training and validation sets and print our losses at each step."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 0. Train_loss 0.717287 Validation_loss 0.707328 Seconds 0.466028\n",
"Epoch 1. Train_loss 0.698457 Validation_loss 0.694622 Seconds 0.378597\n",
"Epoch 2. Train_loss 0.683981 Validation_loss 0.681235 Seconds 0.330993\n",
"Epoch 3. Train_loss 0.670197 Validation_loss 0.667785 Seconds 0.402593\n",
"Epoch 4. Train_loss 0.653411 Validation_loss 0.648352 Seconds 0.349503\n",
"Epoch 5. Train_loss 0.632768 Validation_loss 0.627517 Seconds 0.315740\n",
"Epoch 6. Train_loss 0.611411 Validation_loss 0.606206 Seconds 0.315187\n",
"Epoch 7. Train_loss 0.588618 Validation_loss 0.582911 Seconds 0.362654\n",
"Epoch 8. Train_loss 0.564000 Validation_loss 0.557464 Seconds 0.359108\n",
"Epoch 9. Train_loss 0.536602 Validation_loss 0.528374 Seconds 0.315541\n",
"Epoch 10. Train_loss 0.505457 Validation_loss 0.494894 Seconds 0.396428\n",
"Epoch 11. Train_loss 0.470475 Validation_loss 0.457515 Seconds 0.416723\n",
"Epoch 12. Train_loss 0.432076 Validation_loss 0.416653 Seconds 0.498043\n",
"Epoch 13. Train_loss 0.391388 Validation_loss 0.374049 Seconds 0.500873\n",
"Epoch 14. Train_loss 0.349958 Validation_loss 0.330396 Seconds 0.371929\n",
"Epoch 15. Train_loss 0.309373 Validation_loss 0.289564 Seconds 0.340768\n",
"Epoch 16. Train_loss 0.272011 Validation_loss 0.252969 Seconds 0.341112\n",
"Epoch 17. Train_loss 0.238545 Validation_loss 0.221302 Seconds 0.410799\n",
"Epoch 18. Train_loss 0.209346 Validation_loss 0.194521 Seconds 0.406427\n",
"Epoch 19. Train_loss 0.183823 Validation_loss 0.171154 Seconds 0.409105\n",
"Epoch 20. Train_loss 0.157312 Validation_loss 0.139015 Seconds 0.406448\n",
"Epoch 21. Train_loss 0.122792 Validation_loss 0.108570 Seconds 0.418938\n",
"Epoch 22. Train_loss 0.097598 Validation_loss 0.087676 Seconds 0.412663\n",
"Epoch 23. Train_loss 0.079057 Validation_loss 0.071903 Seconds 0.353745\n",
"Epoch 24. Train_loss 0.065036 Validation_loss 0.060049 Seconds 0.414701\n",
"Epoch 25. Train_loss 0.054316 Validation_loss 0.050988 Seconds 0.365269\n",
"Epoch 26. Train_loss 0.046060 Validation_loss 0.043861 Seconds 0.404951\n",
"Epoch 27. Train_loss 0.039583 Validation_loss 0.038183 Seconds 0.375408\n",
"Epoch 28. Train_loss 0.034440 Validation_loss 0.033622 Seconds 0.315408\n",
"Epoch 29. Train_loss 0.030300 Validation_loss 0.029884 Seconds 0.385614\n",
"Epoch 30. Train_loss 0.026918 Validation_loss 0.026790 Seconds 0.386093\n",
"Epoch 31. Train_loss 0.024119 Validation_loss 0.024206 Seconds 0.316170\n",
"Epoch 32. Train_loss 0.021771 Validation_loss 0.022016 Seconds 0.313672\n",
"Epoch 33. Train_loss 0.019779 Validation_loss 0.020145 Seconds 0.328363\n",
"Epoch 34. Train_loss 0.018077 Validation_loss 0.018535 Seconds 0.339953\n",
"Epoch 35. Train_loss 0.016609 Validation_loss 0.017139 Seconds 0.372699\n",
"Epoch 36. Train_loss 0.015334 Validation_loss 0.015918 Seconds 0.377074\n",
"Epoch 37. Train_loss 0.014218 Validation_loss 0.014844 Seconds 0.392896\n",
"Epoch 38. Train_loss 0.013235 Validation_loss 0.013891 Seconds 0.408250\n",
"Epoch 39. Train_loss 0.012365 Validation_loss 0.013041 Seconds 0.394251\n",
"Epoch 40. Train_loss 0.011589 Validation_loss 0.012281 Seconds 0.409285\n",
"Epoch 41. Train_loss 0.010894 Validation_loss 0.011598 Seconds 0.368799\n",
"Epoch 42. Train_loss 0.010268 Validation_loss 0.010978 Seconds 0.313839\n",
"Epoch 43. Train_loss 0.009702 Validation_loss 0.010416 Seconds 0.314766\n",
"Epoch 44. Train_loss 0.009189 Validation_loss 0.009902 Seconds 0.323163\n",
"Epoch 45. Train_loss 0.008720 Validation_loss 0.009432 Seconds 0.314554\n",
"Epoch 46. Train_loss 0.008292 Validation_loss 0.009001 Seconds 0.402744\n",
"Epoch 47. Train_loss 0.007899 Validation_loss 0.008603 Seconds 0.411461\n",
"Epoch 48. Train_loss 0.007537 Validation_loss 0.008237 Seconds 0.362417\n",
"Epoch 49. Train_loss 0.007204 Validation_loss 0.007897 Seconds 0.315366\n"
]
}
],
"source": [
"import time\n",
"\n",
"train_losses = []\n",
"val_losses = []\n",
"for epoch in range(epochs):\n",
" start = time.time()\n",
" training_loss = 0\n",
" # Training loop, train the network\n",
" for idx, (data, target) in enumerate(train_loader):\n",
"\n",
" data = data.as_in_context(context)\n",
" target = target.as_in_context(context)\n",
" \n",
" with autograd.record():\n",
" output = net(data)\n",
" L = binary_cross_loss(output, target)\n",
" training_loss += nd.sum(L).asscalar()\n",
" L.backward()\n",
" trainer.step(data.shape[0])\n",
" \n",
" # Get validation predictions\n",
" val_predictions = net(X_val.as_in_context(context))\n",
" # Calculate validation loss\n",
" val_loss = nd.sum(binary_cross_loss(val_predictions, y_val)).asscalar()\n",
" \n",
" # Let's take the average losses\n",
" training_loss = training_loss / len(y_train)\n",
" val_loss = val_loss / len(y_val)\n",
" \n",
" train_losses.append(training_loss)\n",
" val_losses.append(val_loss)\n",
" \n",
" end = time.time()\n",
" print(\"Epoch %s. Train_loss %f Validation_loss %f Seconds %f\" % \\\n",
" (epoch, training_loss, val_loss, end-start))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see the training and validation loss plots below. Losses go down as the training process continues as expected."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkEAAAHPCAYAAABUVg6YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAA9hAAAPYQGoP6dpAAB4RElEQVR4nO3dd3hUddrG8e+Zlsqk0DsEJCAt0iEQulTFggoWEBu4oK+oa9l17WvBdS1gVxSxIGJFKSKKdBSQIh1CL6EkZNKnvn8EssZQAiQzk+T+XFcuMqf85pnHMbnzO2fOMXw+nw8RERGRCsYU6AJEREREAkEhSERERCokhSARERGpkBSCREREpEJSCBIREZEKSSFIREREKiSFIBEREamQFIJERESkQlIIEhERkQpJIUhE5BxNnDiR+Pj4QJchIhdIIUhEztuXX35JfHw869evD3QpIiLnTCFIREREKiSFIBEREamQFIJEpNRt3LiR2267jTZt2nDJJZcwcuRI1qxZU2gbl8vFpEmTuPTSS2nZsiUdO3Zk+PDhLFmypGCbI0eO8PDDD5OUlESLFi3o2rUrd955J/v27Tvtc7/33nvEx8ezf//+IutefPFFWrRoQXp6OgArV67k7rvvpkePHrRo0YLu3bvzzDPPkJube8bXt2/fPuLj4/nyyy+LrIuPj2fixImFlqWkpPDwww/TpUsXWrRowaBBg5gxY0aRfadOncqgQYNo3bo17du356qrrmLmzJlnrEVEis8S6AJEpHzbtm0bN9xwAxEREdx2221YLBY+++wzbrrpJj766CNat24NwKRJk3jrrbe45ppraNWqFZmZmfzxxx9s2LCBxMREAO666y62b9/OjTfeSO3atUlNTWXJkiUcPHiQOnXqnPL5BwwYwAsvvMDs2bO57bbbCq2bPXs2iYmJREVFATBnzhxyc3MZPnw40dHRrFu3jo8++ohDhw7x6quvlkg/jh49yrXXXothGNxwww3ExsaycOFC/vnPf5KZmcnNN98MwPTp03n66afp168fI0aMIC8vjy1btrB27Vouu+yyEqlFpKJTCBKRUvXyyy/jcrn49NNPqVu3LgBXXHEF/fv354UXXuCjjz4CYMGCBXTv3p2nnnrqlOM4HA5+//13HnjgAW699daC5aNHjz7j89eqVYuEhARmzZpVKAStW7eOvXv3Mm7cuIJl999/P6GhoQWPr7vuOurXr89///tfDhw4QK1atc69AX/x0ksv4fF4mDlzJjExMQAMHz6ce++9l0mTJjFs2DBCQ0NZsGABF110UYmFLxEpSofDRKTUeDwelixZQp8+fQoCEEC1atUYPHgwq1atIjMzEwC73c62bdvYtWvXKccKDQ3FarXy66+/Fhy+Kq4BAwawYcMG9uzZU7Bs9uzZ2Gw2+vTpU+g5TsrOziY1NZVLLrkEn8/Hxo0bz+k5T8Xn8/HDDz/Qq1cvfD4fqampBV9du3YlIyODDRs2APn9OHToEOvWrbvg5xWRU9NMkIiUmtTUVHJycmjYsGGRdY0aNcLr9XLw4EEuuugi7r77bv72t7/Rr18/mjRpQteuXRkyZAhNmzYFwGazcf/99/P888+TmJhI69at6dGjB1dccQVVq1Y9Yx39+/fnueeeY9asWYwZMwafz8ecOXNISkoiMjKyYLsDBw7w6quv8tNPPxUJWifD2oX2w+Fw8Nlnn/HZZ5+ddhuA22+/naVLl3LNNddQv359EhMTGTx4MG3btr3gOkQkn0KQiASF9u3bM2/ePObPn8+SJUuYMWMGU6ZM4YknnuCaa64B4Oabb6ZXr178+OOPLF68mFdeeYW3336bKVOmcPHFF5927OrVq9OuXTtmz57NmDFjWLNmDQcOHOD+++8v2Mbj8TBq1CjS09O57bbbiIuLIzw8nJSUFB566CG8Xu9pxzcM45TLPR5Poccnx7j88su58sorT7nPyYswNmrUiDlz5rBgwQIWLVrEDz/8wCeffMLYsWO5++67T1uLiBSfQpCIlJrY2FjCwsLYuXNnkXXJycmYTCZq1qxZsCw6Opqrr76aq6++mqysLG688UYmTpxYEIIA6tWrxy233MItt9zCrl27uOKKK5g8eTL/+c9/zljLgAEDeOKJJ0hOTmbWrFmEhYXRs2fPgvVbt25l165dPP/881xxxRUFy//86bTTOXlitcPhKLT8wIEDRfoRERGB1+ulS5cuZx03PDycgQMHMnDgQJxOJ3fddRdvvvkmo0ePJiQk5Kz7i8iZ6ZwgESk1ZrOZxMRE5s+fX+hj7EePHuW7776jbdu2BYej0tLSCu0bERFBvXr1cDqdAOTk5JCXl1dom3r16hEREVGwzZn069cPs9nM999/z5w5c+jRowfh4eEF602m/B+HPp+vYJnP5+PDDz8869iRkZHExMSwcuXKQss/+eSTQo/NZjP9+vVj7ty5bN26tcg4Jw+FQdF+2Gw2GjVqhM/nw+VynbUmETk7zQSJyAX74osvWLRoUZHlI0aM4J577mHp0qVcf/31XH/99ZjNZj777DOcTid///vfC7YdNGgQHTp0oHnz5kRHR7N+/Xrmzp3LjTfeCMCuXbu4+eab6d+/P40bN8ZsNvPjjz9y9OhRBg0adNYaK1euTMeOHXn//ffJyspi4MCBhdbHxcVRr149nn/+eVJSUoiMjGTu3LlFZndO55prruHtt9/mn//8Jy1atGDlypWnnAG77777WLFiBddeey3XXHMNjRs3Jj09nQ0bNrBs2TJ+/fVXAG699VaqVKlCmzZtqFy5MsnJyXz00Ud079690HlMInL+FIJE5IJ9+umnp1x+1VVXcdFFF/Hxxx/z4osv8tZbb+Hz+WjVqhUvvPBCwTWCAG666SZ++uknlixZgtPppFatWtxzzz0FH4evUaMGgwYNYtmyZXz77beYzWbi4uJ4+eWX6devX7HqHDhwIEuXLiUiIoLu3bsXWme1WnnzzTd5+umneeuttwgJCaFv377ccMMNDBky5Kxjjx07ltTUVObOncvs2bNJSkri3XffpXPnzoW2q1KlCp9//jmvvfYa8+bN49NPPyU6OprGjRsXOkfpuuuuY+bMmbz//vtkZ2dTo0YNbrrpJv72t78V67WKyNkZvj/P/YqIiIhUEDonSERERCokhSARERGpkBSCREREpEJSCBIREZEKSSFIREREKiSFIBEREamQFIJERESkQtLFEs/A5/Ph9ZbOZZRMJqPUxpai1G//Ur/9S/32L/Xbv8613yaTcdqbGv+VQtAZeL0+UlOzSnxci8VETEwEDkc2bvfp70wtJUP99i/127/Ub/9Sv/3rfPodGxuB2Vy8EKTDYSIiIlIhKQSJiIhIhaQQJCIiIhWSQpCIiIhUSDoxWkRETsnr9eLxuANdRlDxeg1yc804nXl4PPqEWGn7a7/NZgsmU8nN3ygEiYhIIT6fD4cjlZyczECXEpSOHjXh9eqTYf7y136HhUVit8cW+2PwZ6IQJCIihZwMQJGRMdhsISXyy6Y8MZsNzQL50cl++3w+nM48MjPTAIiKqnzBYysEiYhIAa/XUxCAIiPtgS4nKFksJl0jyI/+3G+bLQSAzMw0KlWKueBDYzoxWkRECng8HuB/v2xEgs3J92ZJnK+mECQiIkXoEJgEq5J8byoEiYiISIWkECQiIiIVkk6MFhGRcqdr13Zn3eYf/3iMgQMvO6/xx427g/DwcCZMePmc9hs69DK6dOnKvfc+eF7Pe65Wr17J3XeP4d13P6Rp04v98pxliUKQnzmynSxce4B+XRoSVsy73IqIyLl58833Cz0eM2YUQ4deR58+/QuW1a5d57zHv+++hzCbz/1gyjPPvEClSvrUXbBQCPKz37ce4ctfkpm/ah9/H34JtSpHBLokEZFyp0WLlkWWVatW45TLT8rLyyUkJLRY4zdsGHdedTVp0vS89pPSoXOC/Kx902o0qFGJ9Ewnz360ml2HHIEuSUSkwnnvvbfo27cbGzf+wejRo+jVqwtffPE5AG+8MZERI66jb99uXHHFAB577B8cPXq00P7jxt3BAw/cU2S8HTu2c+edt9K7dyI33XQtK1YsK7Tf0KGX8d//Pl/w+N//fpybbrqW1atXMmrU9fTp05Xbbx/B5s2bCu2XmZnJk0/+i759kxg8uC9vvfUan376UbEO+52Nw5HOM888waBBvenVK5ExY25hzZrVhbZZt24NY8feTr9+3enbN4kRI65j9uzvir0+WGkmyM/CQ608eGMbXv58HVt2p/HCp78z/toEGteOCnRpIiKn5fP5cLoCd4FAm9VU4h/bd7lcPPHEI1x77fWMHj0Wuz3/53BaWio33TSKKlWqcvx4GtOmfcy4cXfw0UfTsVhO/2vT7Xbz5JOPMHToMG6++TY+/ngKjzzyADNmzCQqKvq0+6WmHuOVV/7DDTfcTGRkJG+9NYl//ON+pk//puD5nnnmCVav/o2//e1uatSowbfffs2WLZtOO2ZxeTwe7rvvbg4e3M+dd95FTExlZsyYxvjxY3njjck0bdqMrKxMHnjgHlq1SuDxx/+N1Wpj165kMjIyAM66PpgFXQjasWMHTz/9NL///jsREREMGTKEe+65B5vNdtp9VqxYwYgRI065rmHDhsyZM6e0yj0vEaFWnryjM4++uZQte4/z4mdruGdoK+LrxQS6NBGRInw+H89+tJrt+9MDVkPjOlE8fEObEg1CbrebO+74G717X1po+T/+8VjB9x6PhxYtWnHllQNZvXolHTp0Ou14LpeLMWPG0blzVwDq1avPNddczvLlS+nXb+Bp93M4HEyc+DZxcY0ACA0N5e67x7Bhwx+0bp3Azp3JLFz4M4888gT9+w8CoGPHLlx//dDzfu0nLVu2mE2bNvDiixPp2LHzibE7c911VzB16mT+/e8X2Lt3D5mZmYwePY5GjRoD0K5dh4IxzrY+mAXV4bD09HRGjhyJy+Vi4sSJjB8/nunTp/Pcc8+dcb/mzZvz2WefFfp67733MJlMJCUl+an64vEc3Y3jiydw/v49913Ximb1Y8hzenhp+lo27EoNdHkiIqdWTj/HcTKw/NmyZUsYM+YW+vXrTvfuHbnyyvwAs3fv7jOOZTKZaNeuY8HjmjVrERISwuHDh8+4X5UqVQsCEPzvfKMjR1IA2Lx5IwBdu3Yv9FyJid3OOG5xrF27hoiIiIIABGCxWOjevSfr1q0FoFatOkRERPCf/zzL/PnzSEtLKzTG2dYHs6CaCZo2bRpZWVlMmjSJ6OhoID+FP/HEE4wePZrq1aufcr/IyEgSEhIKLfvyyy/xer0MHjy4lKs+N15HCp6UHaSm7MBcdTF39bqZNxeaWLfjGK98vo5xV7WgVaMqgS5TRKSAYRg8fEObcnc4LDQ0lPDw8ELLNm3awEMP3Uu3bt258caRREfn36189OibyctznnG8kJAQrFZroWVWqxWnM++M+0VGRhZ6bLHkj+F05j/f0aNHsVgsRbaLibnwowcZGQ5iYmKLLI+JqYzDkT/zZ7fbeeml13jvvbd5+ulH8Xg8tGqVwPjxD9CoUeOzrg9mQTUTtHDhQjp37lwQgAAGDBiA1+tlyZIl5zTWd999R4MGDWjVqlUJV3lhLA3bE97rdkyhEXiO7MQ180nuqL+Dto1jcHu8TPxiPau3Hgl0mSIihRiGQYjNHLCv0riNx6nGXLhwAZGRkTz55HN07dqdFi1aUrnyhd+t/EJUqVIFt9tNZmZmoeUlMeNit9tJSyt6FCIt7VjBOVIAF1/cghdffJU5c37m+ef/y/HjaTz88H3FXh+sgioEJScnExdX+GOHdrudqlWrkpycXOxxjh49yvLly4NuFghO/CBp2o06d7yCtWFb8HrwrPmWkb4Z9G/sweP18fpXf/DrppRAlyoiUuHk5eVisVgKBaQffpgdwIogPr4ZAIsWLShYlj85sOiCx27VKoGsrCx+/XV5wTK3283ChQto1ap1ke1DQkLp3LkrV1xxNQcPHiAvL++c1geboDoc5nA4sNuLXkQqKiqK9PTin5A3a9YsPB5PiYQgi6Xkc6LZbMJSKQb7oHvI3bqc7EUf4kvbzwDjExrWa8+7exrz1rcbyHN56HFJbd3I8AKdvKDZ+VzYTM6d+u1fJd1vr7di/7xp374j06d/yksvTSApqSd//LGOuXNnFaw/+ePYnz+W4+IakZTUk1de+Q95eblUr16Tb7/9Cqczr9i/H1at+o2DBw8UWlazZm06d+5Ks2bNefLJfzFmzDhiYyszY8ZnHDt2lJtuugWApUsX891335CU1IPq1WuQmnqMGTOm07Jla0JCQs66/kL8ud8+X+F1ZrNxwb+jgyoElZSZM2fSvHlzGjZseEHjmEwGMTGldzHDqKhwotr3wtO8Hcd+mEzmhkU0zfyVJ6pv571j7Xl/FuxKyeTOq1sTFlIu/1P5ld0eFugSKhT1279Kqt+5uWaOHjWVyC+YYPPn12Qy5f92/etr7NYtibFj7+bzzz9j1qyZtGqVwIsvvsq1116B2Wz8KWwaGAZnHe/kuj8v//NjwzAwjMLr/zzmye//9a/H+c9/nuO1117BZgth4MDBNG7cmBkzPjvjf6eT9b7xxsQi6y677Ar++c9Hefnlibz66ku8/vqr5ObmEB/flFdeeZ0WLZoDUL9+PcxmE++88wZpaalERUXRoUMn/va3u7BYTGddXxL+HPK9XgOTyURUVDihocW7uOXpGD7fX7NV4HTu3JmhQ4dy332FjyN269aNIUOGcP/99591jD179tC3b18efvhhbr755guqx+Px4nDkXNAYp2I2m7Dbw3A4cvB4/neioXPX72T/8gG+rPzjvAtz4/k2uy1VKtsZe1VL6lWvVOK1VASn67eUDvXbv0q6305nHocPH6By5ZpYrae/NElFZRj5Pfd4vEVmJvxt7NjbMZlMTJz4VmALKUWn6rfL5eTYsYNUq1YLm63oTJPdHlbsmdGgml6Ii4srcu5PRkYGR44cKXKu0OnMnDkTk8nEwIGnvybDuXC7S++HuMfjLTS+qU5rIoY+Td6Kz3BtXkhS6BYuDjnEh8e78PjkXK7vcxHdE2rp8Nh5+mu/pXSp3/5VUv32eILm7+KgdPIXsb8D0IIF80lJOURcXGPy8nKZN28Oa9f+zjPP/Me/hfjZmfrt8fgu+D0fVCEoKSmJN998s9C5QXPmzDlxPYTEYo3x/fff06FDB6pVq1aapZYaIySC0KRbsMR1IPeX96iSlcY9UXP4IaclH811s3lPGiP7N9XhMRGRCiQsLJy5c2exd+9e3G4X9eo14NFHnyIpqUegSyvTguo36bBhw5g6dSpjx45l9OjRpKSkMGHCBIYNG1boGkEjR47kwIEDzJs3r9D+GzduZMeOHYwaNcrfpZc4S50WRAx9mtwlU3FvX07/sHU0t+5j6pauPHEwgzuvaEH9Gjo8JiJSEXTs2LnQBQ2lZATVWW9RUVFMmTIFs9nM2LFjefHFFxk6dCgPPfRQoe28Xi8ej6fI/jNnzsRms9GvXz9/lVyqjJAIwnqNIbT33yAkgrqWVB6I+p6Lc1bxzNTf+HHlXoLolC4REZEyJahOjA42Ho+X1NSsEh/XYjERExNBWlpWsY9nerPSyF34Pp696wDY5qrOJ1mJ1G/UgFEDmxEZZj3LCBXX+fRbzp/67V8l3e+TJ53qxOjTs1hMem/70V/7fbb3aGxsRLFPjA6qmSA5PVNEDGH9xxPS7WawhHCRNYUHo2Zi272cR99brvuOiYiInCOFoDLEMAxszXoQMfQpzNUvItRwcX3kUq7mB976bBnT5m/Dpb9OREREikUhqAwy2asRdtnD2DpcAyYzrWx7eShqJgfWLOWpKSvZfyTz7IOIiIhUcApBZZRhMhGSMIjwKx/DFFuHSqZcbq/0M92yf+D5KUt10rSIiMhZKASVcebK9Qi/8jGsrQbgw6BTyHbujfiW5QsW89Lna0nPDO6b14mIiASKQlA5YJithHa6jvDLHsKIrExlcyZ3VZpL3MF5PP7eMtZsOxroEkVE/OqBB8YzbNiVp10/Y8Y0unZtx/79+4o1Xteu7fjkk6kFj8eNu4MHHrjnrPv179+D9947t9tabNu2hffee4vc3NxCy2fNmknXru04fvz4OY13vg4ePEDXru34+ecf/fJ8gaAQVI5YasYTMfRpLE26YTKgd9gGxli/ZsbXC5i5dJcOj4lIhdG3bz/27dvLpk0bTrn+xx9/oHnzltSuXee8xr/vvocYN+6eC6jw9LZt28r7779TJAR17tyVN998n8jIyFJ53opIIaicMWxhhPW4ldBL74bQStSyHOde+yw2LVvE+7M349YNLUWkAujWrQdhYeHMmzenyLqDBw/wxx/r6Nv3/C+s27BhHPXqNbiACs9dTEwMLVq0xGIJqps9lGnqZDllbdAGc/XG5C54B/au57bIn3l3E7yUnsvYK1sQHqqLK4pI+RUaGkq3bt356acfGTduPCbT//7m//HHuZjNZnr3vpSjR4/y9tuv8fvvqzl27CjVqlWjZ88+jBp1Ozbb6S8WOW7cHYSHhzNhwssFyxYtWsAbb0zk0KGDNGrUmHvvfbDIfkuXLmb69E/Yvn0bTqeT+vUbcOuto+nUqQuQf8jrmWeeAGDw4D4A1KhRkxkzZhas++67H4mOjgbA4Uhn0qSXWbJkITk5uTRpEs+YMeNISGhTpNYBAwbz9tuvc/ToEZo1a86DDz5y3jNhJ+Xl5fH226/x448/kJHhoF69BowadTvdu/cs2CY5eQevv/4KGzduIC8vl2rVqjN48BBuuGFksdaXJoWgcswUZies3/+R++MbsGsVt0Uu4N0D8MxHTu65phVVosICXaKIlBE+nw/czsAVYLFhGMY57dK3bz9++GE2v/++irZt2xcsnzdvDu3adSQmJpYdO7Zjt0dx113jqVSpEnv37mHy5Lc5duwo//jHY8V+rm3btvDIIw/SsWMX7rprPAcOHODRRx/G6XQV2u7gwf0kJiYxfPhNmEwGy5cv5e9//z9eeeUN2rRpR+fOXRk58lamTHmPF1+cSEREJDbbqf9o9Xg83Hff3Rw8uJ8777yLmJjKzJgxjfHjx/LGG5Np2rTZn+rbSlraVMaMuQuv18PEiS/x5JP/4q233j+nnv7Vk08+wooVy7jjjr9Rr14D5sz5nkceeYBnn/0PXbt2B+DBB+8lNjaWhx76F5GRkezbt5cjRw4XjHG29aVJIaicM0wWQvvcWTgIpcPTH7r4v6GtaFjTHugSRSTI+Xw+sr/9N96U7QGrwVz9IsIu/8c5BaH27TsRHR3Djz/OLQhBycnbSU7ewfXXjwCgUaPGhc7tadmyNaGhYfz7349x770PEhoaWqzn+uijD6hWrQbPPvsfzGYzACEhITz33FOFtrv66usKvvd6vVxySTt27kzm22+/ok2bdsTExBTMzsTHNyuY8TmVZcsWs2nTBl58cWLBzVU7duzMddddwdSpk/n3v18o2DYzM4PJkz8mJiYGgJycHJ555gkOH06hWrXqpxz/bLZv38Yvv/zM/fc/zBVXXA1Ap05dOHToIJMnv0PXrt05fvw4Bw/u5//+7z66dk0CoE2bdgVjnG19adM5QRXAySBkadAWq+Hh9ko/U9u5k+c/Xs3qrUcCXZ6IlAEG5zYLEwwsFgs9e/ZhwYKfcLnyZ2TmzZtLaGgoSUn5h2t8Ph/Tp3/CjTdeQ69eifTo0Yknn3wEj8fDgQPF++QYwMaNG0hM7FYQgAB69uxdZLvDh1N4+unHuOKKAXTv3pEePTrx66/L2bt3zzm/vrVr1xAREVHo7vIWi4Xu3Xuybt3aQts2btykIAABNGjQ8EQ95z/jsnbt7wD06tWn0PJevfqybdsWcnJyiIqKokaNmrz11iRmz/6Ow4dTCm17tvWlTTNBFcRfZ4Rur7SAdzJ68NqXXq7rfRF929U556lmEakYDMMg7PJ/lLnDYZB/SOyrrz5nxYqldO3anR9//IHExCTCw8MBmD79E1577RWuv34Ebdq0o1KlSmzatJH//vd5nM7iv95jx44WChnAiUNZIQWPvV4vDz10L5mZmdx222hq165LWFgY7777Jikph875tWVkOIiJiS2yPCamMg5HeqFllSpVKvTYas0/xOZ0nv+15DIyHFgsFuz2qELLY2Nj8fl8ZGZmEBYWxn//O4m3336d//73eXJycoiPb8Zdd40nIaENhmGccX1pUwiqQE4XhKbNhyNpOQzvcxEmk4KQiBRlGAZYQ86+YZBp2bI1NWvWYt68uURHxxYcejnp55/nk5iYxJgx4wqW7dq185yfp3LlKqSlpRValpWVWShk7Nu3l61bt/Dss/+hW7ceBcvz8s4viNjtdtLSit48Oy3tWJFgUhrs9ijcbjcOhwO7/X+nVqSmpmIYBpGR+cGrXr36PP3087jdbtavX8vbb7/Ggw+O56uvZhMeHn7W9aVJh8MqmD8fGjPj4Q77AppZ9zN/9T4+mL0Zr64lJCLliGEY9OnTjyVLFjJz5ldERUUVfBILIC8vt2BW5KQffph9zs/TrFlzlixZhMfjKVj288/zC21zMuxYLP97vkOHDrJ+feFDVyfXn22WplWrBLKysvj11+UFy9xuNwsXLqBVq9bn/BrOVatWCQBFLqb4888/ctFF8YSFFf7wjcVi4ZJL2nLDDTeTlZXF0aNHzml9adBMUAX05xkh965V3GFfwDuOHixeD6EhZob3vkiHxkSk3Ojbtx9Tp77PrFkzGTLkqkLX2WnfviOffz6NL774jLp16zN37iz27Sv+uUAn3XjjSG6/fSQPP3w/V145lAMH9jNt2keFDofVr9+AatWq8+abk/B6veTkZPPee29RtWq1QmM1aNAAgC+//Jxu3XoQGhpKo0aNizxn585dadasOU8++S/GjBlHbGxlZsz4jGPHjnLTTbec82s4nQ0b/iiyLDa2Mq1bX0L37j2ZNOkl8vLyqFevPj/8MJs//ljHs8++COSfPD1p0kv07n0ptWvXITMzk6lT36dmzVrUrl3nrOtLm0JQBfXXIHS7fQFvpvfkx5UQHmLhim5xgS5RRKRExMU1plGji9ixYxt9+/YvtO7mm2/n+PHjvPtu/q0tevTozT333M+DD44/p+do0qQpTz75HG++OZF//vPvNGzYiMcff4b77vvfYTabzca//z2B//73ef71r4eoVq06I0fewurVK9m8eWOhsW655Q6+++4bPvnkQ6pVq86MGTOLPKfZbOY//3mF1157hddff5Xc3ByaNGnKf/87qdDH4y/UtGkfFVnWtm0HXnnldR599Cneeus1Pv74AxyO/OsEPf308wWf9KpcuTKVK1dm6tT3OXr0CBERkbRuncCjjz6F2Ww+6/rSZvh0L4XT8ni8pKZmlfi4FouJmJgI0tKycLsDewVnn9dN7vw3ce9cicdk5dXjvdnlrsa1PRvTv2O9gNZWUoKp3xWB+u1fJd1vl8vJsWMHqVy5Jlbr6S8WWJFZLCa9t/3or/0+23s0NjYCs7l4Z/vonKAKzjBZCO01BnPdlpi9LsZFL6CWOY3pP2/nlzX7A12eiIhIqVEIEgyzhbC+4zBXvwirN5d7Yn+iqsnBh3O2sGKjf6/ZICIi4i8KQQKAYQkhrP89mCrXI8STxfjKP2M3snj3u42s3X400OWJiIiUOIUgKWCERBA24D6MqOpEeNK5r8oCQn05vP71H2zenXb2AURERMoQhSApxBQeRfigBzAiYonyHOPeKr9gcufyyhfrSD7gCHR5IuIn+syMBKuSfG8qBEkRpsjKhA26HyO0ElU8KdxTdRFeZx4vTV/DviOZgS5PRErRyY8lX8jtFERK08n3ptl84Vf50XWC5JTM0bUIG3gf2TOfp5ZrP3+rspSJR7vy38/W8I8b21IlOuzsg4hImWMymQkLiyQzM/8QuM0Wooun/oXXa+DxaKbMX0722+fz4XTmkZmZRlhYJCbThc/jKATJaZmrNCCs/z3kzPoPcZ5d3BZr453Ujrw4fS0P39gGe7iuISJSHtnt+TflPBmEpDCTyYTXq+sE+ctf+x0WFlnwHr1QCkFyRpaa8YT1HUfO3Fdp7tvK9dEWPk5ty8vT1/L34ZcQFqK3kEh5YxgGUVGVqVQpBo/HHehygorZbBAVFU56erZmg/zgr/02my0lMgN0kn6DyVlZ6rUmtOft5P70Fh1MG0mvFMp3h1rw2lfrueea1liKeWVOESlbTCYTJpNmfP/MYjERGhpKTo5HV432g9Lut357SbFYG3cipMsNAPS1riYpfBsbd6Xx7ncbded5EREpkzQTJMVma9EHX64D5+pvuSp0ORmeEH7dBJXCbVzfR3eeFxGRskUzQXJObG2vxNqsBwY+RkQuorHlEPNX7eO7ZbsDXZqIiMg5UQiSc2IYBiGJI7A0bIfJ5+HO6F+obT7GVwuTdcNVEREpUxSC5JwZJhOhPe/AXKsZFm8e/xe7gComBx/O3cKqLUcCXZ6IiEixKATJeTEsNsIuvRtT5fqEeLK4t/LPVCKbt77dwJY9uraIiIgEP4UgOW+GLYywAfdi2KsR4UlnfJUFWL25TPxiPQePZQW6PBERkTMKuhC0Y8cORo0aRUJCAomJiUyYMAGn01msfVNSUnjwwQfp1KkTrVq1YsCAAXz77belXHHFZgqPInzg/RhhUcR6jnJX5YW48nJ5+fO1ZGQX77+biIhIIARVCEpPT2fkyJG4XC4mTpzI+PHjmT59Os8999xZ9z18+DDXXXcdhw8f5qmnnuKtt95i+PDhxQ5Qcv5M9mqEDbwPrGHU9h7g1pilHD2ew8Qv1+NyewJdnoiIyCkF1XWCpk2bRlZWFpMmTSI6OhoAj8fDE088wejRo6levfpp933hhReoUaMG7777bsFdkDt37uyPsgUwV66Xf5+x71+gmXcXl0fa+WZfAu/P2sztl12sawiJiEjQCaqZoIULF9K5c+eCAAQwYMAAvF4vS5YsOe1+mZmZzJ49m+uvv74gAIn/WWrGE9r9FgB62dbRISSZ5RtT+HbJrsAWJiIicgpBNROUnJzM1VdfXWiZ3W6natWqJCcnn3a/DRs24HK5sFgs3Hjjjfz+++9ER0dzxRVXcM8992C1Ws+7Joul5HOi+cS9tszl8J5blmZdIf0guatnMjxyGYc9lfhmMdSsHE6XljUDUlN57ncwUr/9S/32L/Xbv0q730EVghwOB3a7vcjyqKgo0tPTT7vf0aNHAXjkkUe49tprGTduHOvWrePVV1/FZDJx3333nVc9JpNBTEzEee1bHHZ7WKmNHUjR/UeQkplC9tZfGRu7kGeO9uPd7zbRoE4MzeMqB6yu8trvYKV++5f67V/qt3+VVr+DKgSdL683/86yXbp04aGHHgKgU6dOZGVlMXnyZMaOHUtoaOh5jOvD4cgu0VohP9Ha7WE4HDl4POXzLsS27reRl3oI29E93F1lEc8e7sPTk1fw2Kj2VI8N92stFaHfwUT99i/127/Ub/86n37b7WHFnjkKqhBkt9vJyMgosjw9PZ2oqKgz7gf5wefPOnfuzJtvvsnu3buJj48/r5rc7tJ7k3s83lIdP6AMG6GX/h/ZXz1BbM4RxlRexsRj3fjPtDU8MqItEaHnf4jyfJXrfgch9du/1G//Ur/9q7T6HVQHNePi4oqc+5ORkcGRI0eIi4s77X6NGzc+47h5eXklUp+cG1NkZcL6/R+YLTTy7WJo9DpSUrN57cv1uPUXlIiIBFhQhaCkpCSWLl2Kw+EoWDZnzhxMJhOJiYmn3a927do0adKEpUuXFlq+dOlSQkNDzxqSpPSYqzUitPutAHQ1raVL+E427znOh3O24PP5AlydiIhUZEEVgoYNG0ZERARjx45l8eLFfPHFF0yYMIFhw4YVukbQyJEj6du3b6F9x48fz08//cS///1vlixZwptvvsnkyZO5+eabCQ/37zkoUpi1cWdsl1wGwLVhS4mzHGbx+oP8tFp3nRcRkcAJqhAUFRXFlClTMJvNjB07lhdffJGhQ4cWnOx8ktfrxeMpfCXiXr168d///pdly5YxevRopk+fzl133cU999zjx1cgp2NrdyWWhu0wfB7ujF1ErCmTafO3sW3f8UCXJiIiFZTh0zGJ0/J4vKSmlvyNQC0WEzExEaSlZVWoE+t8rjyyv30G77HdpFmq8O/DlxIeEc5jo9oTHRlSas9bUfsdKOq3f6nf/qV++9f59Ds2NqLYnw4LqpkgKd8Mawhh/f4PIyyKGPdRbq68kvSsPF7/6g+dKC0iIn6nECR+ZYqMJbT3nWAYtPBtJSkime3705k2f1ugSxMRkQpGIUj8zlKrKbb2QwG4MmwFtc3H+Gn1fpasPxjgykREpCJRCJKAsLUegLlea0xeN+OqLCXMcPLh3C3sPlT0YpkiIiKlQSFIAsIwTIT1uB2jUhXCXWmMqfYbLreHSV+uJzPHFejyRESkAlAIkoAxQiMJ6zMWTBYauHZwWfQ2jjlyeeubP/B69aFFEREpXQpBElDmqg0J6XI9AL3Nv9Ik9AgbdqXx5cLks+wpIiJyYRSCJOCszXpiadQJw+fljuglRBo5zFq+m5WbDwe6NBERKccUgiTgDMMgNOlmTNG1sDodjK/1GwZe3pu1iZTU7ECXJyIi5ZRCkAQFwxpKaN+xYLFRJWcXN1TfSp7Tw9szN+hCiiIiUioUgiRomGNqE9rtZgDauX4jIfwQOw9m8O2SnYEtTEREyiWFIAkq1ou6YG3WEwMfN0Uuxm5k8/2y3WzdezzQpYmISDmjECRBJ6TzcEyV62NxZ3Nnzd/x+Xy8M3MD2bm6fpCIiJQchSAJOobFRmjPO8BkoVbuDnpH7+WYI4+Pftga6NJERKQcUQiSoGSOrY2t7RUADLatIMaUzfKNKSzbcCiwhYmISLmhECRBy9Z6AKaqDTG5c7irzlrAx0c/bOHo8ZxAlyYiIuWAQpAELcNkJrTHbWCyUDlzG4OrHyQnz8Pb323E49XH5kVE5MIoBElQM8fUxtbuCgD6sIRqIbls35fOrGW7A1uYiIiUeQpBEvRsrQZgqhqH4crh7tr5h8W+WbyLHQfSA12aiIiUYQpBEvQKDouZLVQ6voXhDY7g9fl459uN5OS5A12eiIiUUQpBUiaYY2pha3sVAJ1yfqGB3cXh4zl8On9bgCsTEZGySiFIygxbq/6YqsWBK4c7a/yOgY/F6w6yeuuRQJcmIiJlkEKQlBmGyVRwWCz06GZubZYKwMfztuqwmIiInDOFIClTzNG1CGmXf1isZepPNIr2kJaRx1eLkgNcmYiIlDUKQVLmWFv2x1StEbhyuL3qSsDH/FX72HXIEejSRESkDFEIkjLHMJkI63EbmK2EHdvC8IZH8flgyuwtuoiiiIgUm0KQlEmm6JoF9xbrmLeE6BAfu1My+GnV/sAWJiIiZYZCkJRZtpaXYtirY+Q6uLPxLgC+XJRMqiM3sIWJiEiZoBAkZZZhthLaeTgANVKW0raWjzynh4/nbQ1wZSIiUhYoBEmZZq7XGnPdluD1MDz6d8wmg9+3HdW1g0RE5KwUgqRMMwyDkM7DwTBjPfQHN7RwAbp2kIiInJ1CkJR55uhaWFv0AaBtxs9Uj7aRlpHHN4t3BrgyEREJZgpBUi6EtLkcI7QSpB9kTNP8Q2HzVu5l96GMAFcmIiLBSiFIygUjJAJbh6EAxO76gaSmlfD54IM5m/F6fQGuTkREglHQhaAdO3YwatQoEhISSExMZMKECTidzrPu16tXL+Lj44t85eXl+aFqCQbWJt0wVa4PzhyuqrSW8BALuw9l8OPKvYEuTUREgpAl0AX8WXp6OiNHjqRBgwZMnDiRlJQUnnvuOXJzc3n00UfPun+/fv245ZZbCi2z2WylVa4EGcNkIiTxBnK+fQZjxxJuat+atxZnMGPBDnp3bIA50AWKiEhQCaoQNG3aNLKyspg0aRLR0dEAeDwennjiCUaPHk316tXPuH+VKlVISEgo/UIlaFlqNMHSqBPuHctpcewHGtW6lB0HMpg8cwO3D24W6PJERCSIBNXhsIULF9K5c+eCAAQwYMAAvF4vS5YsCVxhUqaEdLwWLDa8Kdu4pXkWBrBozX6270sPdGkiIhJEgmomKDk5mauvvrrQMrvdTtWqVUlOTj7r/jNnzmT69OlYrVbatWvH/fffT3x8/AXVZLGUfE40m02F/pUSFl0FT5vB5P76JZU2f0vPVqP4ad0Rps3fxj9HtMUwjEBXWK7p/e1f6rd/qd/+Vdr9DqoQ5HA4sNvtRZZHRUWRnn7mv+J79epFq1atqFWrFnv37uXNN9/k+uuv5+uvv6Zu3brnVY/JZBATE3Fe+xaH3R5WamNXdFE9hrJvy2Lc6Ye59uJklmyOZuve42za5yCxVa1Al1ch6P3tX+q3f6nf/lVa/Q6qEHQhHnnkkYLv27VrR2JiIgMGDOC9997j8ccfP68xvV4fDkd2CVX4P2azCbs9DIcjB4/HW+LjS76QTtfhnjuRvNXfcV2n/+PDhYeZ/O0fNKlVCYv+iis1en/7l/rtX+q3f51Pv+32sGLPHAVVCLLb7WRkFL24XXp6OlFRUec0VrVq1Wjbti0bNmy4oJrc7tJ7k3s83lIdv6Iz6rXBXLMpnoObSXQv45vIZhxOy2Her3vp2/78Zgel+PT+9i/127/Ub/8qrX4H1Z/DcXFxRc79ycjI4MiRI8TFxQWoKimrCu4rBuRuXsoN7fIPbX67ZCdZua5AliYiIkEgqEJQUlISS5cuxeFwFCybM2cOJpOJxMTEcxorJSWFVatW0bJly5IuU8oQc5X6WBt1AHw0dyyidtUIsnLdfLd0V6BLExGRAAuqEDRs2DAiIiIYO3Ysixcv5osvvmDChAkMGzas0DWCRo4cSd++fQsef/fdd9x33318++23LF++nM8//5wbb7wRs9nMqFGjAvFSJIiEdbgKDBPuXau5sU3+xTPnr9rH4eM5Aa5MREQCKahCUFRUFFOmTMFsNjN27FhefPFFhg4dykMPPVRoO6/Xi8fjKXhcp04dDh8+zDPPPMOtt97Kiy++SPPmzZk2bdp5fzJMyg9zTC0iW3YHoO6BH2neMBa3x8cXC3YEuDIREQkkw+fz6e6Sp+HxeElNzSrxcS0WEzExEaSlZenEOj+wWExEGlnsfWMceD1kJt7NIzOP4wP+cVNbGtc+t5Pu5cz0/vYv9du/1G//Op9+x8ZGFPvTYUE1EyRSWqzR1Qi5uAcA9u2zSGxZA4DpP21HfweIiFRMCkFSYYS2vRzMVrwp27mqcTY2q4nt+9NZteVIoEsTEZEAUAiSCsMUEYO1eW8ArH/MpP+JawV9vmA7bl30TESkwlEIkgrFljAIrKF4j+3m0hpHiIqwceR4Lj+t3h/o0kRExM8UgqRCMYVWwtayHwC+Nd9wZbcGAMxcspPMHF1AUUSkIlEIkgrH1qofhETgPX6QjqE7dQFFEZEKSiFIKhzDFo6t9SAAXL9/w3XdGwDw0+r9pGXkBbAyERHxJ4UgqZBsLXpjhEXhyzhKk7w/aFInCrfHy/fLdgW6NBER8ROFIKmQDEsItksuA8D5+0yGdKkDwMK1B0h15AayNBER8ROFIKmwrM26Y0RWxpd9nEaZq2laLxq3x8d3y3YHujQREfEDhSCpsAyzlZA2QwBw/v49V3SqCcCitQc4mq6bq4qIlHcKQVKhWZokYkTVwJeXSf20X2lWPwaP18d3SzUbJCJS3ikESYVmmMyEtL0CAOf6uVx5YjZoyfqDHDmu2SARkfJMIUgqPEtcB0xRNcCZTd301bRoGIvH62OmrhskIlKuKQRJhWeYTPm30wBc6+cwpEttAJauP0RKWnYgSxMRkVKkECQCWC7qnP9JsRwHdTPW06pRZbw+H98t2RXo0kREpJQoBIkAhsmCrdUAAJxrZzGkSz0Alm44xKFUzQaJiJRHCkEiJ1ibJmGE2fFlHKVO1kYSGlfB54Nvl+wMdGkiIlIKFIJETjAsNqwtLwXAueZ7hiTWB2DFxhQOHM0KZGkiIlIKFIJE/sR2cS+wheE9foBaudu55CLNBomIlFcKQSJ/YtjCsV3cGwDnmu8YktgAgN82HWb/kcwAViYiIiVNIUjkL6wtLwWzDe+RndRy76FdfFV8wDf6pJiISLmiECTyF6YwO9Zm3YH8c4Mu79oQA1i5+TB7D2s2SESkvFAIEjkFW6v+YJjxHNhETe8h2jerBsA3i3VukIhIeaEQJHIKpsjKWJt0ASDv9++4PDF/Nmj11iPs02yQiEi5oBAkchq21oMAA8+eNVQ3UmnXNH826PvlusO8iEh5oBAkchqm6BpY4toD+ecGDeqcf92gXzel6J5iIiLlgEKQyBmcvLGqO3kFdUKzadWoMj4fzF6+J8CViYjIhVIIEjkDc5X6mOu2Ap8P59pZDO7cAIAl6w+S6sgNbHEiInJBFIJEzsJ2yWAAXFuXEBfjJb5uNB6vj7m/7g1wZSIiciEUgkTOwlKjCeYaTcDrxrluDoO7NADgl7X7cWQ7A1uciIicN4UgkWIomA3a9DPNalhpUKMSTpeXH1dqNkhEpKxSCBIpBnOdlpgq1wW3E9emnxl04tyg+av2k53rDmxxIiJyXhSCRIrBMAxsrQYA4NrwIwlxUdSqEkFOnpuff98X4OpEROR8BF0I2rFjB6NGjSIhIYHExEQmTJiA03lu51188MEHxMfHM3r06FKqUioiS6MOGBGx+HIceLYvZVCn/OsG/fDbXvJcngBXJyIi5yqoQlB6ejojR47E5XIxceJExo8fz/Tp03nuueeKPcaRI0d47bXXqFy5cilWKhWRYbJga3kpAK51c2jfrApVokLJyHaxaO2BAFcnIiLnKqhC0LRp08jKymLSpEl069aNoUOH8ve//51p06aRkpJSrDFeeOEFevXqRaNGjUq5WqmIrE27gy0Mb/ohfHvXMfDEbNDsFXtwe7wBrk5ERM5FUIWghQsX0rlzZ6KjowuWDRgwAK/Xy5IlS866/8qVK/nxxx+57777SrFKqcgMWxi2Zj2B/NmgxJY1iIq0kZaRx7I/DgW4OhERORdBFYKSk5OJi4srtMxut1O1alWSk5PPuK/H4+Gpp55izJgxVKtWrTTLlArO2qIvmMx4Dm3FdGwn/drXA2DW8t14vb4AVyciIsVlCXQBf+ZwOLDb7UWWR0VFkZ6efsZ9P/nkE3Jycrj55ptLtCaLpeRzotlsKvSvlK4S73dUZVxNuuDcvAjX+jn06fU3vl++m5S0HFZvO0Kn5jVK5nnKKL2//Uv99i/1279Ku99BFYLO17Fjx3j11Vd5/vnnsdlsJTauyWQQExNRYuP9ld0eVmpjS1El2e+IpKvZt3kRruRV1OiXxZCkRnwydzOzlu+hf2IchmGU2HOVVXp/+5f67V/qt3+VVr+DKgTZ7XYyMjKKLE9PTycqKuq0+73yyivEx8fTrl07HA4HAG63G7fbjcPhIDw8HIvl3F+q1+vD4cg+5/3Oxmw2YbeH4XDk4NHJtKWuVPpticVavzWu3WtJWfgV3TrcwJc/b2PXQQc//7abSy6qWjLPUwbp/e1f6rd/qd/+dT79ttvDij1zFFQhKC4ursi5PxkZGRw5cqTIuUJ/tnPnTn777Tfat29fZF379u155513SEpKOq+a3O7Se5N7PN5SHV8KK+l+W1r2x7V7Lc7Ni4hocwU9L6nN7BV7+HbRTlo0iK3ws0F6f/uX+u1f6rd/lVa/LygEHThwgAMHDtCuXbuCZZs3b2by5Mk4nU4GDx5Mnz59ij1eUlISb775ZqFzg+bMmYPJZCIxMfG0+/3jH/8omAE66ZlnniE0NJR7772X+Pj4c3xlImdnrtkUU9WGeI/sxLVhPpe2H8i8lfvYccDB5j3HaVY/JtAliojIGVxQCHr66afJzs7mgw8+AODo0aOMGDECl8tFREQEc+fO5ZVXXuHSSy8t1njDhg1j6tSpjB07ltGjR5OSksKECRMYNmwY1atXL9hu5MiRHDhwgHnz5gHQrFmzImPZ7XbCw8Pp2LHjhbxEkdM6eSuN3Pmv49owH3vCQLq1rsnPq/cze/luhSARkSB3Qadbr1u3ji5duhQ8/vrrr8nNzeWbb74puObP5MmTiz1eVFQUU6ZMwWw2M3bsWF588UWGDh3KQw89VGg7r9eLx6PbFEjgWRq2xahUFV9eJq4ti+nfoR4mw+CPnansPlT0/DYREQkeFzQTlJ6eXuj2FAsWLKB9+/bUq5d/3ZS+ffvy0ksvndOYjRo1KphZOp2pU6eedZzibCNyoQyTGVvLfuQt/Qjn+rlUadaTDs2qsXxjCrNX7GbMkBaBLlFERE7jgmaCYmNjOXAg/55JDoeDNWvW0K1bt4L1Ho8Ht9t9YRWKBDlrfDcIicDnOIx71yoGnLiVxm+bD5OSVvKfLhQRkZJxQSGoS5cuTJ06lffff58HHngAn89H7969C9Zv376dmjVrXnCRIsHMsIZga57/vneunU2dqhG0alQZnw/mrNgT4OpEROR0LigE3XfffcTFxfH888+zZMkSHnjgAerWrQuA0+lk9uzZdO7cuUQKFQlm1uZ9wGzBeyQZz6GtBTdWXbL+IMcz8wJcnYiInMoFnRNUpUoVpk2bRkZGBiEhIYWu1uz1epkyZQo1alTsWwhIxWAKs2O9qCuuzQtwrp1Nk/730LhOFNv3pTPvt71c07NxoEsUEZG/KJGbcVSqVKnI7SpCQ0Np2rRpoTvCi5Rntlb9AQPPnjV40g4UzAb9/Pt+snNdgS1ORESKuKAQtGzZMt59991Cy2bMmEGPHj3o0qULzzzzjD7KLhWGKboGlgaXAOBa/wOtGlWmdtUIcp0efv59f4CrExGRv7qgEDRx4kQ2b95c8HjLli089thjxMbG0qFDB6ZOncp77713wUWKlBXWlv0AcG1bArkZDOyYPxs077e9OF36g0BEJJhcUAjasWMHLVr87zoo33zzDZGRkXz88ce8/PLLXHPNNXzzzTcXXKRIWWGu0QRT1YbgceHa9DPtm1Wjsj0UR7aLJesPBro8ERH5kwsKQTk5OURGRhY8XrRoEV27diUsLP+W9y1btiy4jpBIRWAYBraTs0Eb5mP2uenfMf/iobNX7MHj1Q0XRUSCxQWFoJo1a7J+/XoAdu/ezbZt2+jatWvB+vT09CInTIuUd5a4dhgRsfhyHLh3rKBrq5pEhlk5mp7Lb5sOB7o8ERE54YJC0GWXXcb06dMZM2YMt956K1FRUYUulrhhwwYaNGhwoTWKlCmGyYKtRR8AnOvmYrOY6NuuDgCzlu/G5/MFsjwRETnhgkLQmDFjuOOOOzh06BA1a9bktddew263A3D8+HF+/fVXevXqVSKFipQl1qbdwRKCN20fnv0b6NW2DiE2M/uOZLE++VigyxMRES7wYokWi4Xx48czfvz4Iuuio6NZsmTJhQwvUmYZIRFYmybh+mMezvVziRjQgp4JtZnz6x5mLdtNq0ZVAl2iiEiFVyIXSwTIyspix44d7Nixg6ysrJIaVqTMsrXoCxh49q7Hk7qfvu3rYjEbbN2XzrZ9xwNdnohIhXfBIWjdunXcdNNNdOjQgcGDBzN48GA6dOjAiBEjCk6aFqmITPZqWBq0AcD1x1xiKoXQpUX+bWRmL9eNVUVEAu2CDoetXbuWm266CavVytChQ2nUqBGQf/2g77//nhtvvJGpU6fSqlWrEilWpKyxtuqPe9cqXNuWYms/lP4d67No7UHWbD/KviOZ1KkaefZBRESkVFxQCHrppZeoXr06n3zyCVWrVi207q677mL48OG89NJLvP/++xdUpEhZZa7eGFPVOLxHknFt/Ikaba+gbXxVVm45wqxlu7nj8uaBLlFEpMK6oMNha9eu5brrrisSgCD/DvPXXnsta9asuZCnECnTDMPA1up/F0/0uZ0M6twAgBWbUjiclh3A6kREKrYLCkEmk+mMN0j1er2YTCV27rVImWRp2A4jsjK+3Axc25dRv0YlWsZVxueDWTo3SEQkYC4ooVxyySV8/PHH7N9f9A7ZBw4c4JNPPqFNmzYX8hQiZZ5hMhdcPNG1fi4+n49BnfNvrLpk/UFSHbmBLE9EpMK6oHOC7r33Xm644QYGDBhA3759C64OvXPnTubPn4/JZOK+++4riTpFyjRr0+7krfoGb9oBPPv+oEndljSpG83WvceZ++tehve5KNAliohUOBc0E3TxxRfz+eef061bN3766Sdee+01XnvtNX7++We6devGp59+SkxMTEnVKlJmGbZwrPFJADjXzQFgcJf82aBf1uzHke0MWG0iIhXVBc0EATRu3JjXXnsNr9dLamoqALGxsZhMJt544w1effVVNm3adMGFipR1thZ9cW2Yh2f/Bjype2neoA4NalRi16EM5v22l6u7Nwp0iSIiFUqJnbVsMpmoUqUKVapU0cnQIqdgslfF0qAtAM51P2AYRsEnxX5avY/sXHcAqxMRqXiUVkT8yNaqPwDu7cvwZh/nkiZVqF0lgpw8Dz+t3hfg6kREKhaFIBE/MldvjKlaI/C6cf3xIybDYOCJT4r98Nte8pynv+SEiIiULIUgET+zJQwEwLlhPj5nNh2aVaNqdCiZOS5+WXsgwNWJiFQc53xi9IYNG4q97eHDh891eJFyz1L/EkwxtfCmHcC54SdCLhnMgE71+XDOFub+uoeel9TGatHfJyIipe2cQ9DVV1+NYRjF2tbn8xV7W5GKwjBM2BIGk/vz27jWz8XWsi+JLWoyc8ku0jLyWPrHQbon1A50mSIi5d45h6Bnn322NOoQqVAsjTpirPwSX8ZRXJsXYmvRl34d6jFt/jZmLd9N11Y1MetTliIipeqcQ9CVV15ZGnWIVCiGyYyt9UDyFn+Ic+1srM160r11Lb5buosjx3P5bdNhOjWvEegyRUTKNf2pKRIg1iZdMcKi8GWl4t6+jBCbmb7t6wLw/bLdeH2+AFcoIlK+KQSJBIhhsWFr1Q8A55rv8Xm99G5Tm7AQM/uPZrFm29EAVygiUr4pBIkEkLVZT7CF400/hHvXKsJDrfRqUweA75ftwqfZIBGRUqMQJBJAhi0MW4u+ADh//w6fz0ff9nWxWUzsPJjBxl1pAa5QRKT8CroQtGPHDkaNGkVCQgKJiYlMmDABp/Psd9i+//77ufTSS0lISKB9+/bccMMNLF682A8Vi1wYW4u+YAnBe2w3nn3rsYfbSEqoBcA3i3dqNkhEpJQEVQhKT09n5MiRuFwuJk6cyPjx45k+fTrPPffcWfd1uVzcfPPNvP7660yYMIHo6GjuuOMOVq5c6YfKRc6fERqJtVkPIH82CGBgp/rYLCa2709nffKxAFYnIlJ+nfNH5EvTtGnTyMrKYtKkSURHRwPg8Xh44oknGD16NNWrVz/tvq+88kqhx0lJSfTu3ZtvvvmGdu3alWbZIhfM1qo/rg3z8RzaivvQVqJrNKFX2zrMWbGHL39JpkVcZUy68KiISIkKqpmghQsX0rlz54IABDBgwAC8Xi9Lliw5p7HMZjOVKlXC5XKVcJUiJc8UEYO1SVeg8GxQqM3MnsOZrNpyJJDliYiUS0E1E5ScnMzVV19daJndbqdq1aokJyefdX+fz4fH4yEjI4Mvv/yS3bt38+STT15QTZZSuIeT2Wwq9K+UrrLS77C2g3Bt+QXP3nVwfC/RVerTv2M9vl60k68XJdPx4uqYTME/G1RW+l1eqN/+pX77V2n3O6hCkMPhwG63F1keFRVFenr6WfefMWMGjzzyCADh4eG89NJLXHLJJeddj8lkEBMTcd77n43dHlZqY0tRQd/vmDi8F3clc8MivOtnE3PVfQzv34z5q/Zx8Fg2a5JT6d2+XqCrLLag73c5o377l/rtX6XV76AKQReqd+/eNG3alLS0NObMmcM999zDpEmT6N69+3mN5/X6cDiyS7jK/ERrt4fhcOTg8XhLfHwprCz129SiP2xYRNamZRzduR1zdE0Gdq7PZ/O389HsTbRqGIMlyP8CLUv9Lg/Ub/9Sv/3rfPptt4cVe+YoqEKQ3W4nIyOjyPL09HSioqLOun9sbCyxsbFA/onR6enpvPDCC+cdggDc7tJ7k3s83lIdXworE/2Oqo2l/iW4d/9OzqrvCO1+Kz0SajNn+R6Opufy06p9BRdTDHZlot/liPrtX+q3f5VWv4PqT8q4uLgi5/5kZGRw5MgR4uLiznm85s2bs3v37pIqT8QvbAmDAHBtXYo38xghVjODuzQAYObSXeS5PAGsTkSk/AiqEJSUlMTSpUtxOBwFy+bMmYPJZCIxMfGcx1u1ahV169YtyRJFSp25emPMtZqBz4NzzSwAuifUorI9lPRMJz+v3h/gCkVEyoegCkHDhg0jIiKCsWPHsnjxYr744gsmTJjAsGHDCl0jaOTIkfTt27fg8YIFC7jnnnv4+uuvWbFiBT/88AN33303ixcvZuzYsYF4KSIXxNbmcgBcmxfgdRzGYjYxpGtDIP+eYjl57kCWJyJSLgRVCIqKimLKlCmYzWbGjh3Liy++yNChQ3nooYcKbef1evF4/ndIoG7dujidTl588UVuvfVWnnrqKbKzs5k6dSqDBg3y98sQuWCWWs0w12kBXg95K78CoHOL6tSIDScr180Pv+0NcIUiImWf4dONiU7L4/GSmppV4uNaLCZiYiJIS8vSiXV+UFb77Tm6i+wvHwcMwq9+EnPluvy6KYU3v9lAqM3MhDu7EBlmDXSZRZTVfpdV6rd/qd/+dT79jo2NKPanw4JqJkhE/sdcpQGWuA6Aj7zfZgDQrmk16laLJNfpYdZynfQvInIhFIJEglhI+6vAMOHZsxb3oa2YDIMrk/I/KfnTqn0cz8wLcIUiImWXQpBIEDNF1cDaNAkA54rP8fl8tG5UmUa17TjdXr5buiuwBYqIlGEKQSJBztZmCJiteFK24dm7FsMwuCqpEQC/rDnA0eM5Aa5QRKRsUggSCXKmiBhsLfIvCZH36wx8Pi/N6sfQrH4MHq+PbxbvDHCFIiJlk0KQSBlgSxgEtnC8qftwb18OwFXd888NWvrHIXYdcpxpdxEROQWFIJEywAiJwJYwEIC8lV/i87hpVCuKTs2r4wM+mbcNXe1CROTcKASJlBG2Fn0xwqPxZRzFtWkBANf0aIzNamL7/nRWbEwJbIEiImWMQpBIGWFYQgpup+H8/Vt8rlxiKoUwqHMDAD5fsIM8p26uKiJSXApBImWItWkShr0avhwHzvU/ANC/Q12qRIWSlpHH98t3BbZAEZEyRCFIpAwxTBZC2l0FgHPtbLy5GVgtZq7rdREAc1bs5bA+Mi8iUiwKQSJljKVRB0yV64ErB+ea7wFo06QKzerH4PZ4+fyn7QGuUESkbFAIEiljDMNESIehALg2/Ig38xiGYTC8z0WYDINVW4+waVdqgKsUEQl+CkEiZZC5TkvMNePB4yZv5dcA1KkaSc9LagPwyfxteLy6w7WIyJkoBImUQYZhENLhGgDcWxfhSck/BDakW0MiQi3sP5LFgt8PBLJEEZGgpxAkUkaZqzfG0qQrALmLp+DzeogMsxbcZf7rRclk5rgCWaKISFBTCBIpw0I6XgshEXiP7cX1x48AdE+oRZ2qEWTluvlqUXKAKxQRCV4KQSJlmCnMXnBYLG/VV3gzUzGbTFzfpwkAC37fz97DmYEsUUQkaCkEiZRx1qZJmKo3Blcuecs+AaBp/RjaxVfF54NPf9yq+4qJiJyCQpBIGWcYJkK7jgDDhHvnStx71gFwbc/GWC0mNu85zqotRwJcpYhI8FEIEikHzJXrYW3RF4DcJVPxuZ1UiQ6jf4d6AHz203Zyne5AligiEnQUgkTKiZC2V2BExODLOILz95kADOxUn8r2UI45cpmxYEeAKxQRCS4KQSLlhGELI6Tz9QA4187Cc/wAITYzNw9sCsBPq/ezeXdaIEsUEQkqCkEi5YilYTvMdVuB10Pe4qn4fD6aN4ile0ItACbP2qTDYiIiJygEiZQjhmEQmngjmK14DmzCvX0ZkH+SdGV7CEfTc/liga4dJCICCkEi5Y7JXg3bJZcBkLd8Gr68LMJCLNw8oBkA81fv02ExEREUgkTKJVvrAZiiauDLcZD32xcANG9Y+LBYntMTyBJFRAJOIUikHDLMVkK6jQTAtfFnPIfzD4H9+bCYPi0mIhWdQpBIOWWp1QxL486Aj9xFU/B53EUOi23Zo8NiIlJxKQSJlGMhnYaduMHqbpwrvwTyD4sltdZhMRERhSCRcswUHkVot5uB/GsHufdtAOC6Xo2JtYdw5LgOi4lIxaUQJFLOWePaY23WA4Dcn9/Gm+M4cVgs/yKKOiwmIhWVQpBIBRDSeTimmFr4ctLJXfAuPp+PFg0r67CYiFRoCkEiFYBhCSG0951gtuDZuw7XH/OAvxwW+0WHxUSkYgm6ELRjxw5GjRpFQkICiYmJTJgwAafTecZ9Dh8+zIQJExgyZAiXXHIJSUlJ3Hfffezfv99PVYsEP3NsXUI6DQcgb8V0PEd3Fz4stmoffyQfC2SJIiJ+FVQhKD09nZEjR+JyuZg4cSLjx49n+vTpPPfcc2fcb8OGDcybN48BAwbw+uuv89BDD7F161auueYaUlNT/VS9SPCzXtwLS/1LwOsmZ/4b+Fy5tGhYmR6X1Abg7ZkbSXXkBrhKERH/sAS6gD+bNm0aWVlZTJo0iejoaAA8Hg9PPPEEo0ePpnr16qfcr23btsyePRuL5X8vp02bNvTo0YOvv/6aW265xR/liwQ9wzAI7X4rWV/8C1/6IfKWfkxo91sZ3rsxyQfS2ZOSyRvf/MGD17fBYg6qv5FEREpcUP2UW7hwIZ07dy4IQAADBgzA6/WyZMmS0+5nt9sLBSCAGjVqEBsby+HDh0urXJEyyQiNJLTnaMDAtWURrh0rsFrM/O3KloSFWNix36GPzYtIhRBUM0HJyclcffXVhZbZ7XaqVq1KcvK53fl6586dHDt2jEaNGl1QTRZLyedE84m/sM36S9sv1O+iLPUuxtf2MnJXfUvuog+w1WxMrSpVuePyi3nl83X88Nte4uvH0L5ptXMeW/32L/Xbv9Rv/yrtfgdVCHI4HNjt9iLLo6KiSE9PL/Y4Pp+Pp59+mmrVqjFo0KDzrsdkMoiJiTjv/c/Gbg8rtbGlKPW7sOhLb+TAoS3k7d9C3s9vUeump+jTqSG7D2fx9S87eO+7jbS4qCq1qkSe1/jqt3+p3/6lfvtXafU7qEJQSZk4cSLLly/n3XffJTw8/LzH8Xp9OBzZJVhZPrPZhN0ehsORg8fjLfHxpTD1+/RCet6Bc/q/yNu/lYPzPias41Au71KfDTuOsm1fOv+evIJHb26PzWou9pjqt3+p3/6lfvvX+fTbbg8r9sxRUIUgu91ORkZGkeXp6elERUUVa4zp06fz2muv8e9//5vOnTtfcE1ud+m9yT0eb6mOL4Wp36cQXpmQpJvJ/fF1clfNxKjaCEu91oy+vDmPv/8be1Iy+XDOloKP0Z8L9du/1G//Ur/9q7T6HVQHNePi4oqc+5ORkcGRI0eIi4s76/7z5s3j8ccf5+6772bo0KGlVaZIuWKN64C1WU/AR878N/Ck7ifWHsroy5tjAAvXHmDpHwcDXaaISIkLqhCUlJTE0qVLcTgcBcvmzJmDyWQiMTHxjPuuWLGCe++9l2uuuYaxY8eWdqki5UpIlxsw14wHVy45c1/Gm5tB84axXN61IQAfzt3C/iOZAa5SRKRkBVUIGjZsGBEREYwdO5bFixfzxRdfMGHCBIYNG1boGkEjR46kb9++BY937NjB2LFjadCgAUOGDGHNmjUFX3v27AnESxEpUwyzhbC+d2FUqoov4wi58ybh87i5rEsDmjeIweny8vrXf5DrdAe6VBGREhNUISgqKoopU6ZgNpsZO3YsL774IkOHDuWhhx4qtJ3X68Xj+d/NHteuXUtGRgZbt25l+PDhXHfddQVfr7/+ur9fhkiZZIRGEtb/HrCG4Tm4hbzFH2IYcPvlzYmpFMLBY9lMmbMFn88X6FJFREqE4dNPtNPyeLykpmaV+LgWi4mYmAjS0rJ0Yp0fqN/nxr1nHTlzXwKfj5BOw7G16se2fcd5/uPf8fp8jOgXX3CbjVNRv/1L/fYv9du/zqffsbERxf50WFDNBIlI4FnqtSKk4zAA8lZMw71nHRfViWZoj/wLj346fxv7dH6QiJQDCkEiUoS15aVY45PAd+ITY2n7ubRDXVrGVcbl9vLmNxvIc3nOPpCISBBTCBKRIgzDIKTriBOfGMshZ87LkJfJrYOaERVp48DRLD79cVugyxQRuSAKQSJySobZQmjfcYU+MVYp1MQdgy8uuH7Qr5tSAl2miMh5UwgSkdMyhVYirN89YA3N/8TYkqk0rR/DoC71AZgyZzOHj+cEtkgRkfOkECQiZ2SOrU1Y7zGAgWvzL7i3LWFI14Y0rhNFTp6Ht77ZgFv3UBKRMkghSETOylIvAVu7KwHIW/4ZJmc2oy9rTniIhZ0HHXy1MPksI4iIBB+FIBEpFlvCQEwxtfHlZpD32xdUjgpl1MBmAMxesYc/ko8FuEIRkXOjECQixWKYLIQk3gSAa9MCPIeTaRtflV5t8i+c+M53GzmemRfIEkVEzolCkIgUm6VWUyyNOwM+cpdMxef1cl2vxtSpGklGtot3Zm7Eq4vQi0gZoRAkIuckpNN1YA3De2Qnrs0LsFrMjBnSHJvVxKbdaXy/dFegSxQRKRaFIBE5J6bwaELaXwVA3m9f4M1xUKtKBDf0bQLAFwuS2bwrNZAliogUi0KQiJwz68W9MFWuB3lZ5K34HICuLWvS6eLqeH0+XpuxFq9Xh8VEJLgpBInIOTNMZkK7jgDAvXUR7kPbMAyD6/s2ISLUwq6DDhauPRDgKkVEzkwhSETOi7l6Y6zx3QDIW/whPq+HyDArQ7rFAfDFgh3k5LkDWaKIyBkpBInIebN1uAZCIvCm7sW1YT4AfdrVoVaVCNKznMxesTvAFYqInJ5CkIicN1OYnZD2QwHIW/kl3uzjWMwmRl3WHIC5v+7lWHpuIEsUETkthSARuSDWpt0xVW0Irlzylk8DoGPzGjSrH4PL7eWLX3YEuEIRkVNTCBKRC2KYTCdOkjZwb1+Oa/9GDMNgeJ+LMIDlG1PYcSA90GWKiBShECQiF8xctSHWi3sCkL3wQ3weFw1q2unSsgYAn83fjk9XkhaRIKMQJCIlIqT91RihlfCmHSB9xXcAXJXUCJvVxPb96fy2+XCAKxQRKUwhSERKhBESkX9LDSBt0XQ86SnEVAphYMf6AMxYsAOX2xPIEkVEClEIEpESY7koEUvti/G5nWT/8j4+n49+HeoRUymEo+m5/LhyX6BLFBEpoBAkIiXGMAzCe4zCsNhw79uIe+tiQmxmrkrKv4DizKW7cGQ5A1yliEg+hSARKVHmqOrEJOUfFstdPg1vdjqdW9SgfvVK5Do9fL14Z4ArFBHJpxAkIiUuquNlmKucuMHqsk8wGQbDejcG4Jc1+9l/JDPAFYqIKASJSCkwTGbCe9wKhoF7xwrce9YQXy+Gtk2q4vPBZz9vD3SJIiIKQSJSOizVGmJt2Q+A3EUf4nPmMLRnI8wmgz+SU1mffCzAFYpIRacQJCKlJqTtlRiVquLLSiVv5ZdUjwmnd9s6AHz8w1ayc3WXeREJHIUgESk1hjWE0G4jAXD98SOelO1cntiAyvYQDh/P4b3vN+pK0iISMApBIlKqLHVaYLmoC+Ajd+EHhFkN/nZlSyxmg9+3HWXur3sDXaKIVFAKQSJS6kI6Dz9xS419ONfOomFNO8P7NAHyryS9ZU9agCsUkYpIIUhESp0ptBIhnYcD4Fz9LZ7jB+iRUIvOzavj9fl485sNHM/MC3CVIlLRKASJiF9YGnfGXLcleN3kLfwA8DGiX1NqV40gPcvJm1//gdvjDXSZIlKBBF0I2rFjB6NGjSIhIYHExEQmTJiA03n2y+x//PHHjB49mk6dOhEfH8+cOXP8UK2IFJdhGIR2HQEWG55DW3FtWkCIzczYK1sSajOzdV86X/6SHOgyRaQCCaoQlJ6ezsiRI3G5XEycOJHx48czffp0nnvuubPu+80335CWlkb37t39UKmInA9TpaqEtL8agLyln+Dev5EaseHcOqgZAHN+3cOqLYcDWaKIVCCWQBfwZ9OmTSMrK4tJkyYRHR0NgMfj4YknnmD06NFUr179jPuaTCb27dvH119/7Z+CReScWZv3xXNwK+5dq8iZ+wrhgx+gbXwj+nWoy9xf9zJ51ibqVI2kemx4oEsVkXIuqGaCFi5cSOfOnQsCEMCAAQPwer0sWbLkjPuaTEH1UkTkNAyTidDeYzDXvhjceWTP/i+e1P1c3b0RF9WJIifPw2tfrSfP5Ql0qSJSzgVVckhOTiYuLq7QMrvdTtWqVUlO1rkCIuWFYbYSdundmKrFQV4WObNewJR1jDFDWmCPsLHvSBYfztmiCymKSKkKqsNhDocDu91eZHlUVBTp6ekBqAgslpLPiWazqdC/UrrUb/8qdr8t4VQafD8ZXz+DN3UfObNeoPKVjzD2yhY89/Fqlm04RHy9aHqduM2GnJre3/6lfvtXafc7qEJQsDGZDGJiIkptfLs9rNTGlqLUb/8qXr8jiLrxMQ58+E/cxw+TM/s/dLzxKUYOvJgPvt/I1LlbqFY5km6X1C71ess6vb/9S/32r9Lqd1CFILvdTkZGRpHl6enpREVF+b0er9eHw5Fd4uOazSbs9jAcjhw8ui5KqVO//evc+x1C+KC/k/HV0zgP72Hfx0/R47IH2LanJkvWH+SFj1eSejybpIRapV57WaT3t3+p3/51Pv2228OKPXMUVCEoLi6uyLk/GRkZHDlypMi5Qv7idpfem9zj8Zbq+FKY+u1f59TviKqEDbyf7G+fxZOyncw5r3Jzv7uxmg0WrDnAu99tJCfPXXAHeilK72//Ur/9q7T6HVQHNZOSkli6dCkOh6Ng2Zw5czCZTCQmJgawMhEpbebYuoQPuDf/Yor7/sC54B1u7HsRl7avC8DH87by/bJdgS1SRMqVoJoJGjZsGFOnTmXs2LGMHj2alJQUJkyYwLBhwwpdI2jkyJEcOHCAefPmFSxbv349+/fvJzU1FYC1a9cCEBsbS4cOHfz7QkTkvJirNybs0rvJmfMS7uTfwBLKtT1GEmoz8+2SXXzxSzJ5Lg9XdovDMIxAlysiZVxQhaCoqCimTJnCU089xdixY4mIiGDo0KGMHz++0HZerxePp/A1RD7++GO++uqrgseTJ08GoEOHDkydOrX0ixeREmGp04LQXmPInf867q2L8GUdY0jvvxFiNfP5gh18t3Q3eU4vw3o3VhASkQti+HQhjtPyeLykpmaV+LgWi4mYmAjS0rJ0TNkP1G//Kql+u3auIvfnt8Gdh1GpKmH97uaXXQYf/bAVgKTWNRnRrykmU8UOQnp/+5f67V/n0+/Y2IhinxgdVOcEiYicZG3YlvArHsGoVBVfxhGyv36abjGHuHVQMwwDFq49yLvfbcTj1S8iETk/CkEiErTMsXWJuPIxzLWbgzuP3HmTaJe3jDGXX4zZZLB8Ywqvf/UHuU53oEsVkTJIIUhEgpoRGknYgHuxtuwHgHP1t7TY8xnjLr8Ii9nE79uO8sQHK9l1yHGWkUREClMIEpGgZ5jMhHYeTmiP28Bswb37dxqvf50HL6tNTKUQUlKz+feHq5izYg9eneYoIsWkECQiZYa1SVfCL/sHRng03rQDVFv+Eo/3D6dNk6p4vD6m/7ydlz5bw/HMvECXKiJlgEKQiJQp5mpxhF/1OKZqjcCZDfNf5dYqqxjVpy42i4kNu9J49L1fWbv9aKBLFZEgpxAkImWOKTya8Msewtq0B+DDvXkBl2x8lSd7uqlbNYLMHBevzFjHx/O24nJ7zjaciFRQCkEiUiYZZiuhSTcTNvghTDG18OVmELbqI/5e5UeuahUCwPxV+3hqykr2Hy35632JSNmnECQiZZqlVlPCr3oSW4drwWLDl7KN7vvf44mE3VQOh31Hsnjyg9/4elGyPkovIoUoBIlImWeYLYQkDCTi2mexNGgLPi/Re37hXzHfMrjOMVxuD98u2cXDby1nwZr9usCiiAAKQSJSjpgiKxN26V2E9b8Ho1JVjJzj9M3+nn83WkGr6EzSs5x8OGcLj03+jTXbj6K7BolUbEF1A1URkZJgqZdARK2Lca75DueaWUSmbeVW01aO12/EF0cuYt3Rqrw6Yx1N60Vzba/GNKhhD3TJIhIACkEiUi4ZFhsh7a7C2rgLeau/xr3jV6IzdnBr6A7So2rydWo8v+/x8uQHK+nUvDpXdYujSnRYoMsWET9SCBKRcs0UXYOwXmPwtr8a57o5uDYvIirvICMjDnKVPZrvHU35bYOHlZsPk9iyJr3b1qFO1chAly0ifqAQJCIVgqlSVUITb8LWZgiuDT/i3DCfSnnHGRaxnMsi1zE/qynL1ubwy5oDNK0XTe+2dUi4qApmk06dFCmvFIJEpEIxhdkJaXcVttYDcW3+Bee6uURkpXJ5+GoGha9hg7M2vx1sxJtfHSPKHk7PS2qT1LoWlcJtgS5dREqYQpCIVEiGNRRby35Ym/fGvX0FzvU/wLHdtLLtpZVtL9m+EFblNeC3xXF8s7gaHZtVp3e7OjqJWqQcUQgSkQrNMFmwNknE2iQRT+o+3NuW4tq2lPDs43QL3UK30C0c9lTit+2NmLQxjsiqNWjftBrtmlajekx4oMsXkQtg+HShjNPyeLykppb85fYtFhMxMRGkpWXhduuibaVN/fav8tBvn9eL58BGXFuX4N61CtzOgnW73FXY4KzDRldtTJXr0b5Z9YAGovLQ77JE/fav8+l3bGwEZnPxzuXTTJCIyF8YJhOWOi2w1GmBz5mDe9dqXNuW4Nm/iQaWozSwHGUQa0h3hrFpZW0+XVqbrOiLSLi4jmaIRMoQhSARkTMwbGEFh8u8WWm4967Ds2ct7n0biHLn0ClkO51CtuN2L2LH6mrMXV6H1EqNqF6/ERc3jKVJ3WjCQvSjViQY6f9MEZFiMkXEYGvaHZp2x+dx4Tm4Bfeetbh2r8WScZh46yHirYfAu5KsHTaSt1TjK091cqMbUrlBE5rFVSOulh1LMafqRaR0KQSJiJwHw2wtOGQW2uUGvOmHcO9ZS97ONXgPbycCJy1t+2jJPshbhWuzid1/VOF7Xw1csXFE1W9Gg/rVqVe9EiFWc6BfjkiFpBAkIlICTFE1sLWsga1lP3xeN96je/Ac2kr23s14U7ZhdWfR2HqYxhyGzHWw4WuOrovkN08sGaE1MFWuj71uI+o1qEvNyuGYDCPQL0mk3FMIEhEpYYbJgrlaHOZqcdha9cfn8+FLT8F1aAsZuzbhPbSVMGcqVcyZVDFngncPHPkVjoBjZSirvZXJCq+JUbkelWrUp2rd+tSoqsNoIiVNIUhEpJQZhoERXYOQ6BqENO0OgC83E/fR3WQdSCZr/w5M6fsIdx7DbsrFbtoPzv1wcCUcBM9qg93eSqSbY3GGV8McU4uIGnWpWq8h1WtUDvCrEym7FIJERALACI3EWqc50XWaE31imc+Vh+vYHtJ2bSP7YDKm9P1EOo9iM1xUMzuohgOyd0E2sB9YBXu84WywxJAXEoM3ogq26OpEVq1JbK06RMbEYtK9z0ROSyFIRCRIGNYQbDUuonqNiwqW+Xw+vFlpOA7s5viB3TiP7ceckUKE8yiRZBNlyibKmw05+yEHOApsz9831WfBYYoi1xaNNywWc2RlQqKrEFG5GlHVahASVRnDpJOypeJSCBIRCWKGYWCOjCWmSSwxTS4ptM6dk0nagT04049wfP8evI4jWHNTiXAfx04mIYabqr5jkHcM8nbAcWBf/r4uIM9nkG2Ek2Ox4wqJwgiLxhwZg80eQ1hULJGxVbHZYzBCIzEMzShJ+aMQJCJSRlnCIqkZ3+KUtxVw5uVy7OBBHIf2k3PsEJ7MY5hy0ghxphPuzSDKyMZieIkki0h3FrgPQhb5M0knuE58eTCRY4TjtETitlWCkEoYYZWwRkRhi4wizB5NWFQM5ogojNBKGBabv1shcl4UgkREyiFbSCg1GzSkZoOGp1yflZNH6uGjZBxNISftCC7HMcg+jtnpwObKJMybRSUjm0hTHma8RPoywZUJrkP5Yekvcv/0vQsreaZQ3OZwPNYwsEVghERiCovEGl4Ja0QlQiOjCImIxAiJwAgJx7CFgzUUQ5cGED9SCBIRqYAiwkKIqF8b6tc+5Xqfz0dOnps0RzYZqcfITjtKniMNd+ZxyMvAyMvE4srC5skizJdDpCmPSCMXi+HFigur1wXejPyppOyi43vJP4Wp8DIDlxGC2xSC2xKGzxKGzxqKYQvDsIVhCgnHEhqONTQCa1g4tvAITCHhGNZQDGtofoiyhoLFpjAlxaIQJCIiRRiGQXiolfDQKKgWBcSddluP10tmtgtHlpMMRwY56WnkZTlwZ2Xgyc3El5cJeVmYXdlYPDlYPTmEGXmEGU7CDSdhhhOL4cWEjxBfLiGeXPCkQ97p6/Nx+tVeDNyGFY/JhscUgtdsw2cJBbMNrCEYlhBM1hAMWyhmWygWWyiW0FAsIWFYQkIxrCH5QcpiO/Hv/x77zCEX0lYJMgpBIiJyQcwmE1GRIURFhkD1SkCts+7jdHnIynWTneviSI6LnJxc8rIc5GVl4s7JwpObhTc3C1w54MrFcOdi9uRh9uZh9eYSgotQw0Wo4STEcBNiuAg13ACY8GHzOcHjBE9m/mxUMbhPfJ3NMcOMx7DiNSx4TRa8Jis+kxWf2ZoftE78a1isBV8msw2T1YrJYsNsC8FstWG2WDHbTmxntoL55L+WP31vBZP5f8tNFs1ylSCFIBER8Tub1YzNaiam0p9nVmoWe3+X20NOnoecPDc5TjeZeR5y81w4c3Nw5mbjzs3Fk5uNx5mD15mLz5UL7jxwOzHceRgeJyavE7PXhdnnwuJzEWK4seLGZrixGh5sf/7e8BQ8t9nnwew78dhzmgLPwkfxQ9dfeTDlBzDDjM8w5/9rsuA78S+mk//mf8+J7w2zGeNkkDKf+DKZMVksmE48NpktmCz535tPfG8yW+DEthR8/fmxKT+onXw+4+TjP29vDspPGAZdCNqxYwdPP/00v//+OxEREQwZMoR77rkHm+3Mnzbw+Xy88847fPLJJ6SmptKsWTMefvhhEhIS/FO4iIj4jdVixmoxY48omU+ieb0+8lwenG4vTpcHp8tDnstLtsuD0+3B6XTjzMvD587DavKS5cjElZeLz+3C63Lic+fhdbvA7QSPC7xuTB4Xhs+F4XVj8roxeV2YfW5MPg8Ww4PVcGPBm/89HiyGFwv56yx4sRoeLHgwG75CtZrxYvY585NUKTkZ0kp6TC9mfIYJLybcljDC+vwNe90mJfxMxRdUISg9PZ2RI0fSoEEDJk6cSEpKCs899xy5ubk8+uijZ9z3nXfe4dVXX+X+++8nPj6ejz/+mFtuuYVvvvmGunXr+ukViIhIWWQyGYSFWAg7yyk/FovplJckOBc+nw+P14fT5cXtyf9yub24Tnyf6/biPvHY5fbhdrvxuF14XC687qJfPo87/8vrxud2gdeDz+MGrxu8Hgyv63/f+7wYXjeG7+T3Hkw+DwYeTD4vJp8Hs+HFhDc/bBlezPgwG578fwuWndjm5PoT3+fv58NkFE1oBmDGAydm0WyuPJK37aK1QlC+adOmkZWVxaRJk4iOjgbA4/HwxBNPMHr0aKpXr37K/fLy8njrrbe45ZZbuPnmmwFo27Yt/fv357333uPxxx/3zwsQERE5C8MwsJiNoL0hrtfrw+P14vbkhzWP14fH48V94t/8xz68Ph95nvxt/7fdyX/d+DwePB4PXo/nREjz4HW78Z4IaeaQMDq2jQ/oaw2qELRw4UI6d+5cEIAABgwYwGOPPcaSJUu46qqrTrnf6tWryczMZMCAAQXLbDYbffv2Zd68eaVdtoiISLlhMhmYTGasQZUQSkdQvcTk5GSuvvrqQsvsdjtVq1YlOTn5jPsBxMUV/ghno0aNmDJlCrm5uYSGhp5XTRZLySd184n0bw7SvwLKG/Xbv9Rv/1K//Uv99q/S7ndQhSCHw4Hdbi+yPCoqivT09DPuZ7PZCAkpfDDXbrfj8/lIT08/rxBkMhnExESc837FZbeHldrYUpT67V/qt3+p3/6lfvtXafU7qEJQsPF6fTgcp7jU6QUym03Y7WE4HDl4POd3Yp0Un/rtX+q3f6nf/qV++9f59NtuDyv2zFFQhSC73U5GRkaR5enp6URFRZ1xP6fTSV5eXqHZIIfDgWEYZ9z3bM737P/i8Hi8pTq+FKZ++5f67V/qt3+p3/5VWv0OqoOacXFxRc79ycjI4MiRI0XO9/nrfgA7d+4stDw5OZlatWqd9/lAIiIiUn4FVQhKSkpi6dKlOByOgmVz5szBZDKRmJh42v3atGlDZGQks2fPLljmcrn44YcfSEpKKtWaRUREpGwKqsNhw4YNY+rUqYwdO5bRo0eTkpLChAkTGDZsWKFrBI0cOZIDBw4UfPw9JCSE0aNHM3HiRGJjY2nSpAmffvopx48f59Zbbw3UyxEREZEgFlQhKCoqiilTpvDUU08xduxYIiIiGDp0KOPHjy+0ndfrxeMpfMOW22+/HZ/Px+TJkwtum/Hee+/patEiIiJySobP5yvFu4+UbR6Pl9TUrBIftyQuuy7Fp377l/rtX+q3f6nf/nU+/Y6NjSj2p8OC6pwgEREREX9RCBIREZEKSSFIREREKiSFIBEREamQdGL0Gfh8Prze0mmP2WzSJdf9SP32L/Xbv9Rv/1K//etc+20yGRiGUaxtFYJERESkQtLhMBEREamQFIJERESkQlIIEhERkQpJIUhEREQqJIUgERERqZAUgkRERKRCUggSERGRCkkhSERERCokhSARERGpkBSCREREpEJSCBIREZEKSSFIREREKiSFIBEREamQFIL8aMeOHYwaNYqEhAQSExOZMGECTqcz0GWVC7t37+bRRx9lyJAhXHzxxQwePPiU233++ef069ePli1bcvnll/Pzzz/7udKyb/bs2dx5550kJSWRkJDAkCFDmDFjBj6fr9B26nXJ+OWXX7jxxhvp1KkTLVq0oHfv3jz77LNkZGQU2u6nn37i8ssvp2XLlvTr148vvvgiQBWXL1lZWSQlJREfH8/69esLrdN7/MJ9+eWXxMfHF/n6z3/+U2i70uq1pURGkbNKT09n5MiRNGjQgIkTJ5KSksJzzz1Hbm4ujz76aKDLK/O2bdvGL7/8QuvWrfF6vUV+IQN8//33/Otf/2LMmDF06tSJWbNmMW7cOD7++GMSEhL8X3QZ9cEHH1C7dm0eeughYmJiWLp0Kf/61784dOgQ48aNA9TrknT8+HFatWrFTTfdRHR0NNu2bWPixIls27aNyZMnA7By5UrGjRvH0KFD+cc//sHy5cv55z//SUREBP379w/wKyjbXn/9dTweT5Hleo+XrHfffZdKlSoVPK5evXrB96Xaa5/4xZtvvulLSEjwpaWlFSybNm2ar1mzZr5Dhw4FrrBywuPxFHz/4IMP+gYNGlRkm0svvdR37733Flp23XXX+W677bZSr688OXbsWJFljzzyiK9NmzYF/x3U69L12Wef+Zo0aVLws+OWW27xXXfddYW2uffee30DBgwIRHnlxvbt230JCQm+Tz/91NekSRPfunXrCtbpPV4yvvjiC1+TJk1O+XPlpNLstQ6H+cnChQvp3Lkz0dHRBcsGDBiA1+tlyZIlgSusnDCZzvxW3rt3L7t27WLAgAGFlg8cOJBly5bpsOQ5iI2NLbKsWbNmZGZmkp2drV77wcmfIy6XC6fTyYoVK4rM+AwcOJAdO3awb9++AFRYPjz99NMMGzaMhg0bFlqu97j/lHavFYL8JDk5mbi4uELL7HY7VatWJTk5OUBVVRwne/zXH2aNGjXC5XKxd+/eQJRVbqxatYrq1asTGRmpXpcSj8dDXl4eGzZs4LXXXqNXr17UqVOHPXv24HK5ivx8adSoEYB+vpynOXPmsHXrVsaOHVtknd7jJW/w4ME0a9aM3r1789ZbbxUcgiztXuucID9xOBzY7fYiy6OiokhPTw9ARRXLyR7/9b/Bycf6b3D+Vq5cyaxZs3jwwQcB9bq09OzZk5SUFAC6devGiy++CKjfpSEnJ4fnnnuO8ePHExkZWWS9el5yqlatyl133UXr1q0xDIOffvqJl19+mZSUFB599NFS77VCkIict0OHDjF+/Hg6duzIiBEjAl1Oufb222+Tk5PD9u3beeONNxgzZgzvv/9+oMsql9544w0qV67M1VdfHehSyr1u3brRrVu3gsddu3YlJCSEKVOmMGbMmFJ/fh0O8xO73V7kI62Qn2KjoqICUFHFcrLHf/1v4HA4Cq2X4nM4HNx+++1ER0czceLEgvOy1OvS0bRpUy655BKuueYaXn/9dVasWMG8efPU7xK2f/9+Jk+ezN13301GRgYOh4Ps7GwAsrOzycrKUs9L2YABA/B4PGzatKnUe60Q5CdxcXFFjs1nZGRw5MiRIsfypeSd7PFf/xskJydjtVqpW7duIMoqs3Jzcxk9ejQZGRlFPtqqXpe++Ph4rFYre/bsoV69elit1lP2G9DPl3O0b98+XC4Xd9xxB+3bt6d9+/YFMxIjRoxg1KhReo/7UWn3WiHIT5KSkli6dGlBeoX8E+9MJhOJiYkBrKxiqFu3Lg0aNGDOnDmFls+aNYvOnTtjs9kCVFnZ43a7ueeee0hOTubdd98tdD0PUK/9Ye3atbhcLurUqYPNZqNjx47MnTu30DazZs2iUaNG1KlTJ0BVlk3NmjXjww8/LPT18MMPA/DEE0/w2GOP6T1eymbNmoXZbObiiy8u9V7rnCA/GTZsGFOnTmXs2LGMHj2alJQUJkyYwLBhw4r8EpFzl5OTwy+//ALkT2dnZmYW/E/ToUMHYmNjueuuu7j//vupV68eHTt2ZNasWaxbt46PPvookKWXOU888QQ///wzDz30EJmZmaxZs6Zg3cUXX4zNZlOvS9C4ceNo0aIF8fHxhIaGsnnzZt577z3i4+Pp06cPAHfeeScjRozg8ccfZ8CAAaxYsYLvvvuOl156KcDVlz12u52OHTuecl3z5s1p3rw5gN7jJeTWW2+lY8eOxMfHAzB//nymT5/OiBEjqFq1KlC6vTZ8vlNcWldKxY4dO3jqqaf4/fffiYiIYMiQIYwfP15/NZSAffv20bt371Ou+/DDDwt+qH3++ee88847HDhwgIYNG3LvvffSs2dPf5Za5vXq1Yv9+/efct38+fMLZh7U65Lx9ttvM2vWLPbs2YPP56N27dr07duXW2+9tdAnl+bPn8/LL7/Mzp07qVWrFnfccQdDhw4NYOXlx4oVKxgxYgQzZsygZcuWBcv1Hr9wTz/9NIsWLeLQoUN4vV4aNGjANddcw0033YRhGAXblVavFYJERESkQtI5QSIiIlIhKQSJiIhIhaQQJCIiIhWSQpCIiIhUSApBIiIiUiEpBImIiEiFpBAkIiIiFZJCkIiIiFRICkEiIufoyy+/JD4+nvXr1we6FBG5ALp3mIgEpS+//LLgxpWn8tlnn5GQkOC/gkSk3FEIEpGgdvfdd5/yTuj16tULQDUiUp4oBIlIUEtKSip000oRkZKic4JEpMzat28f8fHxvPfee3zwwQf07NmTVq1aceONN7J169Yi2y9btozrr7+ehIQE2rVrx5133smOHTuKbJeSksI//vEPunbtSosWLejVqxePPfYYTqez0HZOp5Nnn32WTp06kZCQwNixY0lNTS211ysiJUszQSIS1DIzM4sEC8MwiImJKXj89ddfk5WVxfXXX09eXh5Tp05l5MiRzJw5kypVqgCwdOlSbr/9durUqcO4cePIzc3lo48+Yvjw4Xz55ZcFh9xSUlIYOnQoGRkZXHvttcTFxZGSksLcuXPJzc3FZrMVPO/TTz+N3W5n3Lhx7N+/nylTpvDkk0/y8ssvl35jROSCKQSJSFC7+eabiyyz2WyFPpm1Z88efvjhB6pXrw7kH0K75ppreOeddwpOrp4wYQJRUVF89tlnREdHA9CnTx+uvPJKJk6cyPPPPw/Af//7X44ePcr06dMLHYb7v//7P3w+X6E6oqOjmTx5MoZhAOD1epk6dSoZGRlUqlSpxHogIqVDIUhEgtqjjz5Kw4YNCy0zmQofye/Tp09BAAJo1aoVrVu35pdffuHhhx/m8OHDbNq0idtuu60gAAE0bdqULl268MsvvwD5IebHH3+kZ8+epzwP6WTYOenaa68ttKxdu3Z88MEH7N+/n6ZNm573axYR/1AIEpGg1qpVq7OeGF2/fv0iyxo0aMDs2bMBOHDgAECRMAXQqFEjFi9eTHZ2NtnZ2WRmZnLRRRcVq7ZatWoVemy32wFwOBzF2l9EAksnRouInKe/zkid9NfDZiISnDQTJCJl3u7du4ss27VrF7Vr1wb+N2Ozc+fOItslJycTExNDeHg4oaGhREZGsm3bttItWESCgmaCRKTM+/HHH0lJSSl4vG7dOtauXUtSUhIA1apVo1mzZnz99deFDlVt3bqVJUuW0L17dyB/ZqdPnz78/PPPp7wlhmZ4RMoXzQSJSFBbuHAhycnJRZa3adOm4KTkevXqMXz4cIYPH47T6eTDDz8kOjqa2267rWD7Bx54gNtvv53rrruOoUOHFnxEvlKlSowbN65gu3vvvZclS5Zw0003ce2119KoUSOOHDnCnDlz+OSTTwrO+xGRsk8hSESC2quvvnrK5c8++ywdOnQA4IorrsBkMjFlyhSOHTtGq1at+Ne//kW1atUKtu/SpQvvvvsur776Kq+++ioWi4X27dvz97//nbp16xZsV716daZPn84rr7zCzJkzyczMpHr16iQlJREaGlq6L1ZE/MrwaX5XRMqoffv20bt3bx544AFuvfXWQJcjImWMzgkSERGRCkkhSERERCokhSARERGpkHROkIiIiFRImgkSERGRCkkhSERERCokhSARERGpkBSCREREpEJSCBIREZEKSSFIREREKiSFIBEREamQFIJERESkQvp/UDP0xrOK5UYAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"plt.plot(train_losses, label=\"Training Loss\")\n",
"plt.plot(val_losses, label=\"Validation Loss\")\n",
"plt.title(\"Loss values\")\n",
"plt.xlabel(\"Epoch\")\n",
"plt.ylabel(\"Loss\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 5. Natural Language Processing Context\n",
"(Go to top)\n",
"\n",
"If we want to use the same type of architecture for text classification, we need to apply some feature extraction methods first. For example: We can get TF-IDF vectors of text fields. After that, we can use neural networks on those features. \n",
"\n",
"We will also look at __more advanced neural network architrectures__ such as __Recurrent Neural Networks (RNNs)__, __Long Short-Term Memory networks (LSTMs)__ and __Transformers__. "
]
}
],
"metadata": {
"kernelspec": {
"display_name": "conda_pytorch_p39",
"language": "python",
"name": "conda_pytorch_p39"
},
"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.13"
}
},
"nbformat": 4,
"nbformat_minor": 2
}