1610 lines
350 KiB
Plaintext
1610 lines
350 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "a07da69b-4328-420a-81f7-8ea7a78748e6",
|
||
"metadata": {},
|
||
"source": [
|
||
"<h1 align=\"center\">研究生《深度学习》课程<br>实验报告</h1>\n",
|
||
"<div style=\"text-align: center;\">\n",
|
||
" <div><span style=\"display: inline-block; width: 65px; text-align: center;\">课程名称</span><span style=\"display: inline-block; width: 25px;\">:</span><span style=\"display: inline-block; width: 210px; font-weight: bold; text-align: left;\">深度学习 M502019B</span></div>\n",
|
||
" <div><span style=\"display: inline-block; width: 65px; text-align: center;\">实验题目</span><span style=\"display: inline-block; width: 25px;\">:</span><span style=\"display: inline-block; width: 210px; font-weight: bold; text-align: left;\">Pytorch基本操作实验</span></div>\n",
|
||
" <div><span style=\"display: inline-block; width: 65px; text-align: center;\">学号</span><span style=\"display: inline-block; width: 25px;\">:</span><span style=\"display: inline-block; width: 210px; font-weight: bold; text-align: left;\">25120323</span></div>\n",
|
||
" <div><span style=\"display: inline-block; width: 65px; text-align: center;\">姓名</span><span style=\"display: inline-block; width: 25px;\">:</span><span style=\"display: inline-block; width: 210px; font-weight: bold; text-align: left;\">柯劲帆</span></div>\n",
|
||
" <div><span style=\"display: inline-block; width: 65px; text-align: center;\">授课老师</span><span style=\"display: inline-block; width: 25px;\">:</span><span style=\"display: inline-block; width: 210px; font-weight: bold; text-align: left;\">原继东</span></div>\n",
|
||
" <div><span style=\"display: inline-block; width: 65px; text-align: center;\">报告日期</span><span style=\"display: inline-block; width: 25px;\">:</span><span style=\"display: inline-block; width: 210px; font-weight: bold; text-align: left;\">2025年7月28日</span></div>\n",
|
||
"</div>"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"id": "a4e12268-bad4-44c4-92d5-883624d93e25",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Pytorch version: 2.7.1+cu118\n",
|
||
"CUDA version: 11.8\n",
|
||
"CUDA device count: 1\n",
|
||
"CUDA device name: NVIDIA TITAN Xp\n",
|
||
"CUDA device capability: (6, 1)\n",
|
||
"CUDA device memory: 11.90 GB\n",
|
||
"CPU count: 8\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"import torch\n",
|
||
"from torch.autograd import Variable\n",
|
||
"from torch.utils.data import Dataset, DataLoader, random_split\n",
|
||
"from torch import nn\n",
|
||
"from torchvision import datasets, transforms\n",
|
||
"from multiprocessing import cpu_count\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"from tqdm.notebook import tqdm\n",
|
||
"from typing import Literal, Union\n",
|
||
"\n",
|
||
"print('Pytorch version:',torch.__version__)\n",
|
||
"if not torch.cuda.is_available():\n",
|
||
" print('CUDA is_available:', torch.cuda.is_available())\n",
|
||
"else:\n",
|
||
" print('CUDA version:', torch.version.cuda)\n",
|
||
" print('CUDA device count:', torch.cuda.device_count())\n",
|
||
" print('CUDA device name:', torch.cuda.get_device_name())\n",
|
||
" print('CUDA device capability:', torch.cuda.get_device_capability())\n",
|
||
" print('CUDA device memory:', f'{torch.cuda.get_device_properties(0).total_memory/1024/1024/1024:.2f}', 'GB')\n",
|
||
"print('CPU count:', cpu_count())\n",
|
||
"\n",
|
||
"device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
|
||
"seed = 42\n",
|
||
"np.random.seed(seed)\n",
|
||
"torch.manual_seed(seed)\n",
|
||
"torch.cuda.manual_seed(seed)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "59a43d35-56ac-4ade-995d-1c6fcbcd1262",
|
||
"metadata": {
|
||
"editable": true,
|
||
"slideshow": {
|
||
"slide_type": ""
|
||
},
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"# 一、Pytorch基本操作考察\n",
|
||
"## 题目1\n",
|
||
"**使用 𝐓𝐞𝐧𝐬𝐨𝐫 初始化一个 𝟏×𝟑 的矩阵 𝑴 和一个 𝟐×𝟏 的矩阵 𝑵,对两矩阵进行减法操作(要求实现三种不同的形式),给出结果并分析三种方式的不同(如果出现报错,分析报错的原因),同时需要指出在计算过程中发生了什么。**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"id": "79ea46db-cf49-436c-9b5b-c6562d0da9e2",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"M矩阵:\n",
|
||
"tensor([[1., 2., 3.]], device='cuda:0')\n",
|
||
"N矩阵:\n",
|
||
"tensor([[4.],\n",
|
||
" [5.]], device='cuda:0')\n",
|
||
"运行结果:\n",
|
||
"方法1 - 使用PyTorch的减法操作符:\n",
|
||
"tensor([[-3., -2., -1.],\n",
|
||
" [-4., -3., -2.]], device='cuda:0')\n",
|
||
"方法2 - 使用PyTorch的sub函数:\n",
|
||
"tensor([[-3., -2., -1.],\n",
|
||
" [-4., -3., -2.]], device='cuda:0')\n",
|
||
"方法3 - 手动实现广播机制并作差:\n",
|
||
"tensor([[-3., -2., -1.],\n",
|
||
" [-4., -3., -2.]], device='cuda:0')\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"M = torch.tensor([[1, 2, 3]], dtype=torch.float32, device=device)\n",
|
||
"N = torch.tensor([[4], [5]], dtype=torch.float32, device=device)\n",
|
||
"\n",
|
||
"# 方法1: 使用PyTorch的减法操作符\n",
|
||
"result1 = M - N\n",
|
||
"\n",
|
||
"# 方法2: 使用PyTorch的sub函数\n",
|
||
"result2 = torch.sub(M, N)\n",
|
||
"\n",
|
||
"# 方法3: 手动实现广播机制并作差\n",
|
||
"def my_sub(a: torch.Tensor, b: torch.Tensor):\n",
|
||
" if not ((a.size(0) == 1 and b.size(1) == 1) or (a.size(1) == 1 and b.size(0) == 1)):\n",
|
||
" raise ValueError(\"输入的张量大小无法满足广播机制的条件。\")\n",
|
||
" else:\n",
|
||
" target_shape = torch.Size([max(a.size(0), b.size(0)), max(a.size(1), b.size(1))])\n",
|
||
" a_broadcasted = a.expand(target_shape)\n",
|
||
" b_broadcasted = b.expand(target_shape)\n",
|
||
" result = torch.zeros(target_shape, dtype=a_broadcasted.dtype, device=a_broadcasted.device)\n",
|
||
" for i in range(target_shape[0]):\n",
|
||
" for j in range(target_shape[1]):\n",
|
||
" result[i, j] = a_broadcasted[i, j] - b_broadcasted[i, j]\n",
|
||
" return result\n",
|
||
"result3 = my_sub(M, N)\n",
|
||
"\n",
|
||
"print(f\"M矩阵:\\n{M}\")\n",
|
||
"print(f\"N矩阵:\\n{N}\")\n",
|
||
"print(\"运行结果:\")\n",
|
||
"print(f\"方法1 - 使用PyTorch的减法操作符:\\n{result1}\")\n",
|
||
"print(f\"方法2 - 使用PyTorch的sub函数:\\n{result2}\")\n",
|
||
"print(f\"方法3 - 手动实现广播机制并作差:\\n{result3}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "bd9bd5cc-b6da-4dd6-a599-76498bc5247d",
|
||
"metadata": {},
|
||
"source": [
|
||
"第1、2、3种减法形式实质是一样的。\n",
|
||
"\n",
|
||
"步骤如下:\n",
|
||
"1. 对A、B两个张量进行广播,将A、B向广播的方向复制,得到两个$\\max(A.size(0), B.size(0))\\times \\max(A.size(1), B.size(1))$的张量;\n",
|
||
"2. 对广播后的两个张量作差,尺寸不变。\n",
|
||
"\n",
|
||
"第1种减法形式和第2种是等价的,前者是后者的符号化表示。\n",
|
||
"\n",
|
||
"第3种形式是手动实现的,将上述两个步骤分别手动实现了。但是torch.Tensor还内置了其他机制,这里仅模拟了广播和作差。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "2489a3ad-f6ff-4561-bb26-e02654090b98",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 题目2\n",
|
||
"1. **利用Tensor创建两个大小分别$3\\times 2$和$4\\times 2$的随机数矩阵$P$和$Q$,要求服从均值为$0$,标准差$0.01$为的正态分布;**\n",
|
||
"2. **对第二步得到的矩阵$Q$进行形状变换得到$Q$的转置$Q^T$;**\n",
|
||
"3. **对上述得到的矩阵$P$和矩阵$Q^T$求矩阵相乘。**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"id": "41e4ee02-1d05-4101-b3f0-477bac0277fb",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"矩阵 P:\n",
|
||
"tensor([[ 0.0019, 0.0216],\n",
|
||
" [-0.0017, 0.0085],\n",
|
||
" [-0.0192, 0.0065]], device='cuda:0')\n",
|
||
"矩阵 Q:\n",
|
||
"tensor([[ 1.3914e-03, -1.0822e-03],\n",
|
||
" [-7.1742e-03, 7.5665e-03],\n",
|
||
" [ 3.7149e-03, -1.0049e-02],\n",
|
||
" [ 8.2947e-05, 3.2766e-03]], device='cuda:0')\n",
|
||
"矩阵 Q^T:\n",
|
||
"tensor([[ 1.3914e-03, -7.1742e-03, 3.7149e-03, 8.2947e-05],\n",
|
||
" [-1.0822e-03, 7.5665e-03, -1.0049e-02, 3.2766e-03]], device='cuda:0')\n",
|
||
"矩阵相乘的结果:\n",
|
||
"tensor([[-2.0690e-05, 1.4962e-04, -2.1000e-04, 7.0980e-05],\n",
|
||
" [-1.1582e-05, 7.6587e-05, -9.1717e-05, 2.7677e-05],\n",
|
||
" [-3.3842e-05, 1.8747e-04, -1.3711e-04, 1.9799e-05]], device='cuda:0')\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"P = torch.normal(mean=0, std=0.01, size=(3, 2), device=device)\n",
|
||
"Q = torch.normal(mean=0, std=0.01, size=(4, 2), device=device)\n",
|
||
"\n",
|
||
"print(\"矩阵 P:\")\n",
|
||
"print(P)\n",
|
||
"print(\"矩阵 Q:\")\n",
|
||
"print(Q)\n",
|
||
"\n",
|
||
"# 对矩阵Q进行转置操作,得到矩阵Q的转置Q^T\n",
|
||
"QT = Q.T\n",
|
||
"print(f\"矩阵 Q^T:\\n{QT}\")\n",
|
||
"\n",
|
||
"# 计算矩阵P和矩阵Q^T的矩阵相乘\n",
|
||
"print(f\"矩阵相乘的结果:\\n{torch.matmul(P, QT)}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "cea9cb6d-adde-4e08-b9f2-8c417abf4231",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 题目3\n",
|
||
"**给定公式$ y_3=y_1+y_2=𝑥^2+𝑥^3$,且$x=1$。利用学习所得到的Tensor的相关知识,求$y_3$对$x$的梯度,即$\\frac{dy_3}{dx}$。**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"id": "951512cd-d915-4d04-959f-eb99d1971e2d",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"仅通过y_1传递的梯度: 2.0\n",
|
||
"仅通过y_2传递的梯度: 3.0\n",
|
||
"dy_3/dx: 5.0\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"x = torch.tensor(1.0, requires_grad=True, device=device)\n",
|
||
"\n",
|
||
"y_1 = x ** 2\n",
|
||
"with torch.no_grad():\n",
|
||
" y_2 = x ** 3\n",
|
||
"y_3 = y_1 + y_2\n",
|
||
"y_3.backward()\n",
|
||
"print(\"仅通过y_1传递的梯度: \", x.grad.item())\n",
|
||
"\n",
|
||
"x.grad.data.zero_()\n",
|
||
"with torch.no_grad():\n",
|
||
" y_1 = x ** 2\n",
|
||
"y_2 = x ** 3\n",
|
||
"y_3 = y_1 + y_2\n",
|
||
"y_3.backward()\n",
|
||
"print(\"仅通过y_2传递的梯度: \", x.grad.item())\n",
|
||
"\n",
|
||
"x.grad.data.zero_()\n",
|
||
"y_1 = x ** 2\n",
|
||
"y_2 = x ** 3\n",
|
||
"y_3 = y_1 + y_2\n",
|
||
"y_3.backward()\n",
|
||
"\n",
|
||
"print(\"dy_3/dx: \", x.grad.item())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "3269dbf6-889a-49eb-8094-1e588e1a6c30",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 二、动手实现logistic回归\n",
|
||
"## 题目1\n",
|
||
"**要求动手从0实现 logistic 回归(只借助Tensor和Numpy相关的库)在人工构造的数据集上进行训练和测试,并从loss以及训练集上的准确率等多个角度对结果进行分析(可借助nn.BCELoss或nn.BCEWithLogitsLoss作为损失函数,从零实现二元交叉熵为选作)**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "bcd12aa9-f187-4d88-8c59-af6d16107edb",
|
||
"metadata": {},
|
||
"source": [
|
||
"给定预测输出$ \\hat{y} $和目标标签$ y$(通常是0或1),BCELoss的计算公式如下:\n",
|
||
"$$\n",
|
||
" \\text{BCELoss}(\\hat{y}, y) = -\\frac{1}{N} \\sum_{i=1}^{N} \\left(y_i \\cdot \\log(\\hat{y}_i) + (1 - y_i) \\cdot \\log(1 - \\hat{y}_i)\\right) \n",
|
||
"$$\n",
|
||
"其中,$N $是样本数量,$\\hat{y}_i $表示模型的预测概率向量中的第$ i $个元素,$y_i $表示实际的目标标签中的第$ i $个元素。在二分类问题中,$y_i $通常是0或1。这个公式表示对所有样本的二分类交叉熵损失进行了求和并取平均。\n",
|
||
"\n",
|
||
"因此BCELoss的手动实现如下。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"id": "e31b86ec-4114-48dd-8d73-fe4e0686419a",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"输入:\n",
|
||
"tensor([0.6900], device='cuda:0')\n",
|
||
"标签:\n",
|
||
"tensor([1.], device='cuda:0')\n",
|
||
"My_BCELoss损失值: 0.37110066413879395\n",
|
||
"nn.BCELoss损失值: 0.37110066413879395\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"class My_BCELoss:\n",
|
||
" def __call__(self, prediction: torch.Tensor, target: torch.Tensor):\n",
|
||
" eps = 1e-9\n",
|
||
" loss = -torch.mean(target * torch.log(prediction + eps) + (1 - target) * torch.log(1 - prediction + eps))\n",
|
||
" return loss\n",
|
||
"\n",
|
||
"\n",
|
||
"# 测试\n",
|
||
"prediction = torch.sigmoid(torch.tensor([0.8], device=device))\n",
|
||
"target = torch.tensor([1.0], device=device)\n",
|
||
"print(f\"输入:\\n{prediction}\")\n",
|
||
"print(f\"标签:\\n{target}\")\n",
|
||
"\n",
|
||
"my_bce_loss = My_BCELoss()\n",
|
||
"my_loss = my_bce_loss(prediction, target)\n",
|
||
"print(\"My_BCELoss损失值:\", my_loss.item())\n",
|
||
"\n",
|
||
"nn_bce_loss = nn.BCELoss()\n",
|
||
"nn_loss = nn_bce_loss(prediction, target)\n",
|
||
"print(\"nn.BCELoss损失值:\", nn_loss.item())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "345b0300-8808-4c43-9bf9-05a7e6e1f5af",
|
||
"metadata": {},
|
||
"source": [
|
||
"Optimizer的实现较为简单。\n",
|
||
"\n",
|
||
"主要实现:\n",
|
||
"- 传入参数:`__init__()`\n",
|
||
"- 对传入的参数进行更新:`step()`\n",
|
||
"- 清空传入参数存储的梯度:`zero_grad()`\n",
|
||
"\n",
|
||
"但是有一点需要注意,就是需要将传进来的`params`参数转化为`list`类型。因为`nn.Module`的`parameters()`方法会以`<class 'generator'>`的类型返回模型的参数,但是该类型变量无法像`list`一样使用`for`循环遍历。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"id": "0297066c-9fc1-448d-bdcb-29a6f1519117",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"x的初始值: 1.0\n",
|
||
"学习率: 0.1\n",
|
||
"y.backward()之后,x的梯度: 2.0\n",
|
||
"optimizer_test.step()之后,x的值: 0.800000011920929\n",
|
||
"optimizer_test.zero_grad()之后,x的梯度: 0.0\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"class My_Optimizer:\n",
|
||
" def __init__(self, params: list[torch.Tensor], lr: float):\n",
|
||
" self.params = list(params)\n",
|
||
" self.lr = lr\n",
|
||
"\n",
|
||
" def step(self):\n",
|
||
" for param in self.params:\n",
|
||
" if param.grad is not None:\n",
|
||
" param.data = param.data - self.lr * param.grad.data\n",
|
||
"\n",
|
||
" def zero_grad(self):\n",
|
||
" for param in self.params:\n",
|
||
" if param.grad is not None:\n",
|
||
" param.grad.data.zero_()\n",
|
||
"\n",
|
||
"\n",
|
||
"# 测试\n",
|
||
"x = torch.tensor(1.0, requires_grad=True, device=device)\n",
|
||
"print(\"x的初始值: \", x.item())\n",
|
||
"\n",
|
||
"optimizer_test = My_Optimizer([x], lr=0.1)\n",
|
||
"print(\"学习率: \", optimizer_test.lr)\n",
|
||
"\n",
|
||
"y = x ** 2\n",
|
||
"y.backward()\n",
|
||
"print(\"y.backward()之后,x的梯度: \", x.grad.item())\n",
|
||
"\n",
|
||
"optimizer_test.step()\n",
|
||
"print(\"optimizer_test.step()之后,x的值: \", x.item())\n",
|
||
"\n",
|
||
"optimizer_test.zero_grad()\n",
|
||
"print(\"optimizer_test.zero_grad()之后,x的梯度: \", x.grad.item())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "8cbc476a-2438-4d0d-854a-4cdd2f726363",
|
||
"metadata": {},
|
||
"source": [
|
||
"接下来实现Logistic回归的Trainer,包括训练流程和画图。\n",
|
||
"\n",
|
||
"训练进行如下步骤:\n",
|
||
"1. 定义模型、数据集、损失函数、优化器和其他超参数\n",
|
||
"2. 训练\n",
|
||
" 1. 从训练dataloader中获取批量数据\n",
|
||
" 2. 传入模型\n",
|
||
" 3. 使用损失函数计算与ground_truth的损失\n",
|
||
" 4. 使用优化器进行反向传播\n",
|
||
" 5. 循环以上步骤"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"id": "d28d5245-bb60-4baf-be54-8c4944ec9180",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"class LogisticTrainer():\n",
|
||
" def __init__(\n",
|
||
" self,\n",
|
||
" model,\n",
|
||
" dataset: Union[Dataset, DataLoader],\n",
|
||
" optimizer: Literal['torch', 'manual'],\n",
|
||
" criterion: Literal['torch', 'manual'],\n",
|
||
" learning_rate: float,\n",
|
||
" num_epochs: int,\n",
|
||
" batch_size: int,\n",
|
||
" ):\n",
|
||
" self.model = model\n",
|
||
" self.learning_rate = learning_rate\n",
|
||
" self.num_epochs = num_epochs\n",
|
||
" self.batch_size = batch_size\n",
|
||
"\n",
|
||
" if isinstance(dataset, Dataset):\n",
|
||
" self.dataloader = DataLoader(\n",
|
||
" dataset=dataset, batch_size=batch_size, shuffle=True, num_workers=cpu_count()\n",
|
||
" )\n",
|
||
" else:\n",
|
||
" self.dataloader = dataset\n",
|
||
"\n",
|
||
" if optimizer == 'torch':\n",
|
||
" self.optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)\n",
|
||
" else:\n",
|
||
" self.optimizer = My_Optimizer(model.parameters(), lr=learning_rate)\n",
|
||
"\n",
|
||
" if criterion == 'torch':\n",
|
||
" self.criterion = nn.BCELoss()\n",
|
||
" else:\n",
|
||
" self.criterion = My_BCELoss()\n",
|
||
"\n",
|
||
" def train(self):\n",
|
||
" loss_curve = []\n",
|
||
" step = 0\n",
|
||
" total_train_steps = self.num_epochs * len(self.dataloader)\n",
|
||
" num_sample_per_epoch = len(self.dataloader) * self.batch_size\n",
|
||
" with tqdm(total=total_train_steps) as pbar:\n",
|
||
" for epoch in range(self.num_epochs):\n",
|
||
" total_epoch_loss = 0\n",
|
||
" total_epoch_acc = 0\n",
|
||
" for x, targets in self.dataloader:\n",
|
||
" x = x.to(device=device, dtype=torch.float32)\n",
|
||
" targets = targets.to(device=device, dtype=torch.float32)\n",
|
||
"\n",
|
||
" self.optimizer.zero_grad()\n",
|
||
" output = self.model(x)\n",
|
||
" loss = self.criterion(output, targets)\n",
|
||
" total_epoch_loss += loss.item()\n",
|
||
" loss_curve.append(loss.item())\n",
|
||
" \n",
|
||
" preds = (output >= 0.5).float()\n",
|
||
" total_epoch_acc += (preds == targets).float().sum().item()\n",
|
||
" \n",
|
||
" loss.backward()\n",
|
||
" self.optimizer.step()\n",
|
||
"\n",
|
||
" step += 1\n",
|
||
" pbar.update(1)\n",
|
||
"\n",
|
||
" log_info = {\n",
|
||
" 'Epoch': f'{epoch + 1}/{self.num_epochs}',\n",
|
||
" 'Total Loss': f'{total_epoch_loss:.2f}',\n",
|
||
" 'Avg Acc': f'{total_epoch_acc / num_sample_per_epoch:.2%}'\n",
|
||
" }\n",
|
||
" print(log_info)\n",
|
||
" \n",
|
||
" self.plot_results(loss_curve)\n",
|
||
" \n",
|
||
" def plot_results(self, loss_curve):\n",
|
||
" fig, axes = plt.subplots(1, 2, figsize=(10, 4))\n",
|
||
"\n",
|
||
" axes[0].plot(loss_curve, label='Training Loss')\n",
|
||
" axes[0].set_xlabel('Step')\n",
|
||
" axes[0].set_ylabel('Loss')\n",
|
||
" axes[0].set_title('Loss Curve')\n",
|
||
" axes[0].legend()\n",
|
||
" axes[0].grid(True)\n",
|
||
"\n",
|
||
" x, label = next(iter(self.dataloader))\n",
|
||
" inputs = x.cpu().numpy()\n",
|
||
" labels = label.cpu().numpy()\n",
|
||
" x_data = inputs[:, 0]\n",
|
||
" y_data = inputs[:, 1]\n",
|
||
" \n",
|
||
" w = self.model.linear.weight.detach().cpu().numpy()[0]\n",
|
||
" w_x, w_y = w[0], w[1]\n",
|
||
" b = self.model.linear.bias.detach().cpu().numpy()[0]\n",
|
||
" x_vals = np.linspace(-1, 1, 100)\n",
|
||
" y_model = - (w_x * x_vals + b) / w_y\n",
|
||
" y_target = 4 - 3 * x_vals\n",
|
||
" \n",
|
||
" axes[1].plot(x_vals, y_target, label='Target Line: y=4-3x', linestyle='--', color='green')\n",
|
||
" axes[1].plot(x_vals, y_model, label='Model Decision Boundary', color='red')\n",
|
||
"\n",
|
||
" label_0_shown, label_1_shown = False, False\n",
|
||
" for i in range(min(100, len(x_data))):\n",
|
||
" label_val = int(labels[i].item())\n",
|
||
" if label_val == 1:\n",
|
||
" color = 'blue'\n",
|
||
" label_name = 'Label=1' if not label_1_shown else \"\"\n",
|
||
" label_1_shown = True\n",
|
||
" else:\n",
|
||
" color = 'orange'\n",
|
||
" label_name = 'Label=0' if not label_0_shown else \"\"\n",
|
||
" label_0_shown = True\n",
|
||
" axes[1].scatter(x_data[i], y_data[i], color=color, label=label_name)\n",
|
||
" \n",
|
||
" axes[1].set_xlabel('x')\n",
|
||
" axes[1].set_ylabel('y')\n",
|
||
" axes[1].set_title('Fitted Line vs Target Line')\n",
|
||
" axes[1].legend()\n",
|
||
" axes[1].grid(True)\n",
|
||
" \n",
|
||
" plt.tight_layout()\n",
|
||
" plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "6ab83528-a88b-4d66-b0c9-b1315cf75c22",
|
||
"metadata": {},
|
||
"source": [
|
||
"线性层主要有一个权重(weight)和一个偏置(bias)。\n",
|
||
"线性层的数学公式如下:\n",
|
||
"$$\n",
|
||
"x:=x \\times weight^T+bias\n",
|
||
"$$\n",
|
||
"因此代码实现如下:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"id": "8e18695a-d8c5-4f77-8b5c-de40d9240fb9",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"输入:\n",
|
||
"tensor([[1.],\n",
|
||
" [2.]], device='cuda:0', requires_grad=True)\n",
|
||
"权重:\n",
|
||
"tensor([[ 0.8815],\n",
|
||
" [-0.7336],\n",
|
||
" [ 0.8692]], device='cuda:0')\n",
|
||
"偏置:\n",
|
||
"tensor([0.1872, 0.7388, 0.1354], device='cuda:0')\n",
|
||
"My_Linear输出:\n",
|
||
"tensor([[ 1.0687, 0.0052, 1.0046],\n",
|
||
" [ 1.9502, -0.7284, 1.8738]], device='cuda:0', grad_fn=<AddBackward0>)\n",
|
||
"nn.Linear输出:\n",
|
||
"tensor([[ 1.0687, 0.0052, 1.0046],\n",
|
||
" [ 1.9502, -0.7284, 1.8738]], device='cuda:0',\n",
|
||
" grad_fn=<AddmmBackward0>)\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"class My_Linear:\n",
|
||
" def __init__(self, input_feature: int, output_feature: int):\n",
|
||
" self.weight = torch.randn((output_feature, input_feature), requires_grad=True, dtype=torch.float32)\n",
|
||
" self.bias = torch.zeros(1, requires_grad=True, dtype=torch.float32)\n",
|
||
" self.params = [self.weight, self.bias]\n",
|
||
"\n",
|
||
" def __call__(self, x: torch.Tensor):\n",
|
||
" return self.forward(x)\n",
|
||
"\n",
|
||
" def forward(self, x: torch.Tensor):\n",
|
||
" x = torch.matmul(x, self.weight.T) + self.bias\n",
|
||
" return x\n",
|
||
"\n",
|
||
" def to(self, device: str):\n",
|
||
" for param in self.params:\n",
|
||
" param.data = param.data.to(device=device)\n",
|
||
" return self\n",
|
||
"\n",
|
||
" def parameters(self):\n",
|
||
" return self.params\n",
|
||
"\n",
|
||
" \n",
|
||
"# 测试\n",
|
||
"my_linear = My_Linear(1, 3).to(device)\n",
|
||
"nn_linear = nn.Linear(1, 3).to(device)\n",
|
||
"my_linear.weight = nn_linear.weight.clone().requires_grad_()\n",
|
||
"my_linear.bias = nn_linear.bias.clone().requires_grad_()\n",
|
||
"x = torch.tensor([[1.], [2.]], requires_grad=True, device=device)\n",
|
||
"print(f\"输入:\\n{x}\")\n",
|
||
"print(f\"权重:\\n{my_linear.weight.data}\")\n",
|
||
"print(f\"偏置:\\n{my_linear.bias.data}\")\n",
|
||
"y_my_linear = my_linear(x)\n",
|
||
"print(f\"My_Linear输出:\\n{y_my_linear}\")\n",
|
||
"y_nn_linear = nn_linear(x)\n",
|
||
"print(f\"nn.Linear输出:\\n{y_nn_linear}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "5ff813cc-c1f0-4c73-a3e8-d6796ef5d366",
|
||
"metadata": {},
|
||
"source": [
|
||
"手动实现logistic回归模型。\n",
|
||
"\n",
|
||
"模型很简单,主要由一个线性层和一个sigmoid层组成。\n",
|
||
"\n",
|
||
"Sigmoid函数(又称为 Logistic函数)是一种常用的激活函数,通常用于神经网络的输出层或隐藏层,其作用是将输入的实数值压缩到一个范围在0和1之间的数值:\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\sigma(x) = {(1 + e^{-x})}^{-1}\n",
|
||
"$$\n",
|
||
"\n",
|
||
"由于当$x << 0$时,$e^{-x}$较大,进而导致${(1 + e^{-x})}^{-1}$产生数值下溢。因此对Sigmoid函数公式进行优化:\n",
|
||
"$$\n",
|
||
"\\sigma(x) = \n",
|
||
"\\begin{cases}\n",
|
||
"\\frac{1}{1 + e^{-x}}, & \\text{if } x \\geq 0 \\\\\n",
|
||
"\\frac{e^{x}}{1 + e^{x}}, & \\text{if } x < 0\n",
|
||
"\\end{cases}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"id": "e7de7e4b-a084-4793-812e-46e8550ecd8d",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def my_sigmoid(x: torch.Tensor):\n",
|
||
" z = torch.exp(-x.abs())\n",
|
||
" return torch.where(x >= 0, 1 / (1 + z), z / (1 + z))\n",
|
||
"\n",
|
||
"\n",
|
||
"class Model_2_1():\n",
|
||
" def __init__(self):\n",
|
||
" self.linear = My_Linear(2, 1)\n",
|
||
" self.params = self.linear.params\n",
|
||
"\n",
|
||
" def __call__(self, x):\n",
|
||
" return self.forward(x)\n",
|
||
"\n",
|
||
" def forward(self, x):\n",
|
||
" x = self.linear(x)\n",
|
||
" x = my_sigmoid(x)\n",
|
||
" return x\n",
|
||
"\n",
|
||
" def to(self, device: str):\n",
|
||
" for param in self.params:\n",
|
||
" param.data = param.data.to(device=device)\n",
|
||
" return self\n",
|
||
"\n",
|
||
" def parameters(self):\n",
|
||
" return self.params"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "e14acea9-e5ef-4c24-aea9-329647224ce1",
|
||
"metadata": {},
|
||
"source": [
|
||
"人工随机构造数据集。\n",
|
||
"\n",
|
||
"我的y设置为$4-3\\times x + noise$,noise为随机噪声。\n",
|
||
"\n",
|
||
"生成完x和y后判断给出ground truth,并写好DataLoader访问数据集的接口`__getitem__()`。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"id": "c39fbafb-62e4-4b8c-9d65-6718d25f2970",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"测试数据集大小:1000000\n",
|
||
"测试数据集第0对数据:\n",
|
||
"x_0 = tensor([-0.2509, 3.0322])\n",
|
||
"y_0 = tensor([0.])\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"class My_Dataset(Dataset):\n",
|
||
" def __init__(self, data_size=1000000):\n",
|
||
" x = np.random.uniform(low=-1, high=1, size=(data_size, 1))\n",
|
||
" noise = np.random.normal(loc=0, scale=1, size=(data_size, 1))\n",
|
||
" y = 4 - 3 * x + noise\n",
|
||
" labels = (y > 4 - 3 * x).astype(np.float32)\n",
|
||
" self.inputs = torch.tensor(np.concatenate([x, y], axis=1), dtype=torch.float32)\n",
|
||
" self.labels = torch.tensor(labels, dtype=torch.float32)\n",
|
||
"\n",
|
||
" def __len__(self):\n",
|
||
" return self.inputs.shape[0]\n",
|
||
"\n",
|
||
" def __getitem__(self, index):\n",
|
||
" return self.inputs[index], self.labels[index]\n",
|
||
"\n",
|
||
"\n",
|
||
"# 测试,并后面的训练创建变量\n",
|
||
"dataset = My_Dataset()\n",
|
||
"dataset_size = len(dataset)\n",
|
||
"print(f\"测试数据集大小:{dataset_size}\")\n",
|
||
"x0, y0 = dataset[0]\n",
|
||
"print(f\"测试数据集第0对数据:\")\n",
|
||
"print(f\"x_0 = {x0}\")\n",
|
||
"print(f\"y_0 = {y0}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "957a76a2-b306-47a8-912e-8fbf00cdfd42",
|
||
"metadata": {},
|
||
"source": [
|
||
"训练Logistic回归模型。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"id": "5612661e-2809-4d46-96c2-33ee9f44116d",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"application/vnd.jupyter.widget-view+json": {
|
||
"model_id": "131f3f0073f247b6901a50dde366d2c2",
|
||
"version_major": 2,
|
||
"version_minor": 0
|
||
},
|
||
"text/plain": [
|
||
" 0%| | 0/4885 [00:00<?, ?it/s]"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"{'Epoch': '1/5', 'Total Loss': '549.42', 'Avg Acc': '76.43%'}\n",
|
||
"{'Epoch': '2/5', 'Total Loss': '428.66', 'Avg Acc': '90.51%'}\n",
|
||
"{'Epoch': '3/5', 'Total Loss': '363.90', 'Avg Acc': '94.13%'}\n",
|
||
"{'Epoch': '4/5', 'Total Loss': '322.87', 'Avg Acc': '95.72%'}\n",
|
||
"{'Epoch': '5/5', 'Total Loss': '294.15', 'Avg Acc': '96.61%'}\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 1000x400 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"hyper_params = {\n",
|
||
" 'learning_rate': 5.0e-2,\n",
|
||
" 'num_epochs': 5,\n",
|
||
" 'batch_size': 1024,\n",
|
||
"}\n",
|
||
"\n",
|
||
"model = Model_2_1().to(device)\n",
|
||
"trainer = LogisticTrainer(model=model, dataset=dataset, optimizer='manual', criterion='manual', **hyper_params)\n",
|
||
"trainer.train()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "9e416582-a30d-4084-acc6-6e05f80a6aff",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 题目2\n",
|
||
"**利用 torch.nn 实现 logistic 回归在人工构造的数据集上进行训练和测试,并对结果进行分析,并从loss以及训练集上的准确率等多个角度对结果进行分析**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "0460d125-7d03-44fe-845c-c4d13792e241",
|
||
"metadata": {},
|
||
"source": [
|
||
"使用torch.nn实现模型。\n",
|
||
"\n",
|
||
"将之前的Model_2_1中的手动实现函数改为torch.nn内置函数即可,再加上继承nn.Module以使用torch.nn内置模型模板特性。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"id": "fa121afd-a1af-4193-9b54-68041e0ed068",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"class Model_2_2(nn.Module):\n",
|
||
" def __init__(self):\n",
|
||
" super(Model_2_2, self).__init__()\n",
|
||
" self.linear = nn.Linear(2, 1, dtype=torch.float32)\n",
|
||
"\n",
|
||
" def forward(self, x):\n",
|
||
" x = self.linear(x)\n",
|
||
" x = torch.sigmoid(x)\n",
|
||
" return x"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "176eee7e-4e3d-470e-8af2-8761bca039f8",
|
||
"metadata": {},
|
||
"source": [
|
||
"训练与测试过程与之前手动实现的一致。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"id": "93b0fdb6-be8b-4663-b59e-05ed19a9ea09",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"application/vnd.jupyter.widget-view+json": {
|
||
"model_id": "9520af64d1cd4867850624e0605f3745",
|
||
"version_major": 2,
|
||
"version_minor": 0
|
||
},
|
||
"text/plain": [
|
||
" 0%| | 0/4885 [00:00<?, ?it/s]"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"{'Epoch': '1/5', 'Total Loss': '563.82', 'Avg Acc': '73.82%'}\n",
|
||
"{'Epoch': '2/5', 'Total Loss': '434.00', 'Avg Acc': '90.11%'}\n",
|
||
"{'Epoch': '3/5', 'Total Loss': '367.07', 'Avg Acc': '93.98%'}\n",
|
||
"{'Epoch': '4/5', 'Total Loss': '325.00', 'Avg Acc': '95.66%'}\n",
|
||
"{'Epoch': '5/5', 'Total Loss': '295.70', 'Avg Acc': '96.55%'}\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAGGCAYAAABmGOKbAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjUsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvWftoOwAAAAlwSFlzAAAPYQAAD2EBqD+naQAA2NVJREFUeJzs3Xd4U9UbwPFvku7F3i0te29kF4qMspHKEJDpAkGWgKAiIEtQljIFGT+UJZaNQBmVKRtEloiMCmWPUjpok/z+uCQ2bdqmTdq08H6eJ0/Ivefee+5t6c17zznvUen1ej1CCCGEEEIIIYSwObW9KyCEEEIIIYQQQrysJOgWQgghhBBCCCEyiATdQgghhBBCCCFEBpGgWwghhBBCCCGEyCASdAshhBBCCCGEEBlEgm4hhBBCCCGEECKDSNAthBBCCCGEEEJkEAm6hRBCCCGEEEKIDCJBtxBCCCGEEEIIkUEk6BZCCCGEEJnm2rVrqFQqli1bZtd6LFu2DJVKxbVr16zeV2hoKCqVitDQUKv3JbKmgIAAAgIC7F0NkU1J0C1EFmX4MnD8+HF7V8Uip0+f5u2338bHxwdnZ2dy585N06ZNWbp0KVqt1t7VE0IIkUkM9y9zr1GjRpndZtu2bYwbNy7J8qioKMaNG2fXYHbcuHGoVCru379vtzrYQ0o/x4QvPz8/e1c1iXnz5qXpoY5KpWLgwIEZVyHxynOwdwWEENnf4sWL6devHwUKFKBHjx6UKlWKp0+fsnv3bt555x3Cw8P59NNP7V1NIYQQmejLL7+kWLFiJssqVqyIr68v0dHRODo6Gpdv27aNuXPnJgm8o6KiGD9+PECWbmVs2LAh0dHRODk52bsqNtOwYUNWrFhhsuzdd9+lVq1avP/++8ZlHh4emV21VM2bN4+8efPSu3dvm+1z586dNtuXePVI0C2EsMrvv/9Ov379qFu3Ltu2bcPT09O4bsiQIRw/fpw///zTJsd69uwZ7u7uNtmXEEKIjNWyZUtq1qxpdp2Li0sm1yZjqdXql+6cihcvTvHixU2W9evXj+LFi/P2229bvf+YmBicnJxQq7NHx9uX6YGKyHzZ47dcCJGsU6dO0bJlS7y8vPDw8KBJkyb8/vvvJmXi4uIYP348pUqVwsXFhTx58tCgQQNCQkKMZW7fvk2fPn3w9vbG2dmZQoUK0b59+1THuo0fPx6VSsVPP/1kEnAb1KxZ0/ikObkxb+bG9/Xu3RsPDw+uXLlCq1at8PT0pHv37gwcOBAPDw+ioqKSHKtr164ULFjQpDv7r7/+ir+/P+7u7nh6etK6dWvOnTuX4jkJIYTIOIn/5vfu3Zu5c+cCmHRbvnbtGvny5QP+u9eoVCqT1vCLFy/SsWNHcufOjYuLCzVr1mTTpk1Jjnnu3Dlef/11XF1d8fb2ZuLEieh0Opudk7n7W0BAABUrVuT8+fM0btwYNzc3ihQpwrRp05JsHxsby9ixYylZsiTOzs74+PgwcuRIYmNjUzxuWu6Jx48fJzAwkLx58+Lq6kqxYsXo27evVef98OFDhg8fTqVKlfDw8MDLy4uWLVty5swZk3KG67N69Wo+//xzihQpgpubGxEREQD8/PPPlC9fHhcXFypWrMj69evp3bt3kq7rOp2OWbNmUaFCBVxcXChQoAAffPABjx49Mpbx8/Pj3Llz/Pbbb8bfGVv0kkg8pttwTmvXrmXSpEl4e3vj4uJCkyZN+Pvvv5Nsf+TIEVq0aEGOHDlwc3OjUaNGHDx40Op6iexBWrqFyMbOnTuHv78/Xl5ejBw5EkdHRxYuXEhAQAC//fYbtWvXBpTxaFOmTDF2C4uIiOD48eOcPHmSZs2aAfDmm29y7tw5PvroI/z8/Lh79y4hISHcuHEj2fFaUVFR7N69m4YNG1K0aFGbn198fDyBgYE0aNCAb775Bjc3N/z8/Jg7dy5bt26lU6dOJnXZvHkzvXv3RqPRALBixQp69epFYGAgU6dOJSoqivnz59OgQQNOnTqVJcehCSHEy+LJkydJxkHnzZs3SbkPPviAW7duERISYtKdOV++fMyfP5/+/fvToUMHgoKCAKhcuTKg3APr169PkSJFGDVqFO7u7qxdu5Y33niDX375hQ4dOgDKQ+XGjRsTHx9vLPf999/j6uqaUadu9OjRI1q0aEFQUBCdO3dm3bp1fPLJJ1SqVImWLVsCSiDZrl07Dhw4wPvvv0+5cuU4e/YsM2fO5K+//mLDhg3J7r9Lly4W3RPv3r1L8+bNyZcvH6NGjSJnzpxcu3aN4OBgq87vn3/+YcOGDXTq1IlixYpx584dFi5cSKNGjTh//jyFCxc2KT9hwgScnJwYPnw4sbGxODk5sXXrVrp06UKlSpWYMmUKjx494p133qFIkSJJjvfBBx+wbNky+vTpw6BBg7h69Spz5szh1KlTHDx4EEdHR2bNmsVHH32Eh4cHn332GQAFChSw6jxT8tVXX6FWqxk+fDhPnjxh2rRpdO/enSNHjhjL7Nmzh5YtW1KjRg3Gjh2LWq1m6dKlvP766+zfv59atWplWP1EFqEXQmRJS5cu1QP6Y8eOJVvmjTfe0Ds5OemvXLliXHbr1i29p6envmHDhsZlVapU0bdu3TrZ/Tx69EgP6L/++us01fHMmTN6QD948GCLyu/du1cP6Pfu3Wuy/OrVq3pAv3TpUuOyXr166QH9qFGjTMrqdDp9kSJF9G+++abJ8rVr1+oB/b59+/R6vV7/9OlTfc6cOfXvvfeeSbnbt2/rc+TIkWS5EEII2zDcv8y99Hrzf/MHDBigN/e19N69e3pAP3bs2CTrmjRpoq9UqZI+JibGuEyn0+nr1aunL1WqlHHZkCFD9ID+yJEjxmV3797V58iRQw/or169muL5jB07Vg/o7927l2wZc/e3Ro0a6QH9//73P+Oy2NhYfcGCBU3uYStWrNCr1Wr9/v37Tfa5YMECPaA/ePBgsse19J64fv36VL9TWMLd3V3fq1cv4+eYmBi9Vqs1KXP16lW9s7Oz/ssvvzQuM1yf4sWL66OiokzKV6pUSe/t7a1/+vSpcVloaKge0Pv6+hqX7d+/Xw/of/rpJ5Ptt2/fnmR5hQoV9I0aNbL4vAD9gAEDUizTqFEjk30azqlcuXL62NhY4/LZs2frAf3Zs2f1er3yMypVqpQ+MDBQr9PpjOWioqL0xYoV0zdr1szieorsS7qXC5FNabVadu7cyRtvvGEy5qpQoUJ069aNAwcOGLtt5cyZk3PnznH58mWz+3J1dcXJyYnQ0FCTLlqpMezfXLdyW+nfv7/JZ5VKRadOndi2bRuRkZHG5WvWrKFIkSI0aNAAgJCQEB4/fkzXrl25f/++8aXRaKhduzZ79+7NsDoLIYSAuXPnEhISYvKylYcPH7Jnzx46d+7M06dPjX/jHzx4QGBgIJcvX+bmzZuAkqStTp06Jq2J+fLlo3v37jarT3I8PDxMxj87OTlRq1Yt/vnnH+Oyn3/+mXLlylG2bFmT+9Xrr78OkOL9ytJ7Ys6cOQHYsmULcXFxNjs/Z2dn45hsrVbLgwcP8PDwoEyZMpw8eTJJ+V69epn0MLh16xZnz56lZ8+eJgnZGjVqRKVKlUy2/fnnn8mRIwfNmjUzuU41atTAw8PDbvf1Pn36mIz39vf3BzD+jE+fPs3ly5fp1q0bDx48MNb72bNnNGnShH379tl0qIPImiToFiKbunfvHlFRUZQpUybJunLlyqHT6QgLCwOUDLKPHz+mdOnSVKpUiREjRvDHH38Yyzs7OzN16lR+/fVXChQoQMOGDZk2bRq3b99OsQ5eXl4APH361IZn9h8HBwe8vb2TLO/SpQvR0dHGcXuRkZFs27aNTp06oVKpAIwPGF5//XXy5ctn8tq5cyd3797NkDoLIYRQ1KpVi6ZNm5q8bOXvv/9Gr9czZsyYJH/jx44dC2D8O3/9+nVKlSqVZB/m7p+25u3tbbwvGeTKlcvkAffly5c5d+5ckvMoXbo0QKr3K0vuiY0aNeLNN99k/Pjx5M2bl/bt27N06dJUx4ynRqfTMXPmTEqVKoWzszN58+YlX758/PHHHzx58iRJ+cTZ7K9fvw5AyZIlk5RNvOzy5cs8efKE/PnzJ7lWkZGRdruvJx5elytXLgDjz9jwfaRXr15J6r148WJiY2PNXivxcpEx3UK8Aho2bMiVK1fYuHEjO3fuZPHixcycOZMFCxbw7rvvAkqm8bZt27JhwwZ27NjBmDFjmDJlCnv27KFatWpm91uyZEkcHBw4e/asRfVI/MXDILl5vBM+QU+oTp06+Pn5sXbtWrp168bmzZuJjo6mS5cuxjKGp8YrVqygYMGCSfbh4CB//oQQIrsy/I0fPnw4gYGBZsuYC+QymyHHSGJ6vd74b51OR6VKlZgxY4bZsj4+Pikew5J7okqlYt26dfz+++9s3ryZHTt20LdvX6ZPn87vv/+e7mm/Jk+ezJgxY+jbty8TJkwgd+7cqNVqhgwZYrb11ppx9Dqdjvz58/PTTz+ZXW9IupfZUvsZG67D119/TdWqVc2WzYrTrgnbkm+dQmRT+fLlw83NjUuXLiVZd/HiRdRqtcmNOnfu3PTp04c+ffoQGRlJw4YNGTdunDHoBihRogQff/wxH3/8MZcvX6Zq1apMnz6dH3/80Wwd3NzceP3119mzZw9hYWGpfjEwPP19/PixyXLDk+606Ny5M7NnzyYiIoI1a9bg5+dHnTp1TM4FIH/+/DZtXRFCCGF7yT2UTW65YViVo6Njqn/jfX19zQ6vMnf/tIcSJUpw5swZmjRpkuz5pia1e6JBnTp1qFOnDpMmTWLlypV0796d1atXm3wXSIt169bRuHFjfvjhB5Pljx8/Nps0LzFfX18As9m+Ey8rUaIEu3bton79+qkG7+m9jhnB8H3Ey8tLvo+8wqR7uRDZlEajoXnz5mzcuNFkWq87d+6wcuVKGjRoYOz+/eDBA5NtPTw8KFmypLFbWVRUFDExMSZlSpQogaenZ6pdz8aOHYter6dHjx4m48kMTpw4wfLlywHl5qrRaNi3b59JmXnz5ll20gl06dKF2NhYli9fzvbt2+ncubPJ+sDAQLy8vJg8ebLZ8Wv37t1L8zGFEEJkDHd3dyDpQ1k3Nzezy/Pnz09AQAALFy4kPDw8yf4S/o1v1aoVv//+O0ePHjVZn1yLaWbr3LkzN2/eZNGiRUnWRUdH8+zZs1T3kdo98dGjRyat64Cx1dWaLuYajSbJfn/++WfjePrUFC5cmIoVK/K///3P5DvEb7/9lqQXXefOndFqtUyYMCHJfuLj401+R9zd3ZP8zthLjRo1KFGiBN98843Z70nyfeTVIC3dQmRxS5YsYfv27UmWDx48mIkTJxISEkKDBg348MMPcXBwYOHChcTGxprMA1q+fHkCAgKoUaMGuXPn5vjx46xbt46BAwcC8Ndff9GkSRM6d+5M+fLlcXBwYP369dy5c4e33norxfrVq1ePuXPn8uGHH1K2bFl69OhBqVKlePr0KaGhoWzatImJEycCkCNHDjp16sR3332HSqWiRIkSbNmyJV3jsKpXr07JkiX57LPPiI2NNelGB8oT5fnz59OjRw+qV6/OW2+9Rb58+bhx4wZbt26lfv36zJkzJ83HFUIIYXs1atQAYNCgQQQGBqLRaHjrrbdwdXWlfPnyrFmzhtKlS5M7d24qVqxIxYoVmTt3Lg0aNKBSpUq89957FC9enDt37nD48GH+/fdf41zRI0eOZMWKFbRo0YLBgwcbpwzz9fU1yW+SmhkzZhgfAhio1Wo+/fRTq869R48erF27ln79+rF3717q16+PVqvl4sWLrF27lh07dlCzZs0U95HaPXH58uXMmzePDh06UKJECZ4+fcqiRYvw8vKiVatW6a57mzZt+PLLL+nTpw/16tXj7Nmz/PTTTyYJXlMzefJk2rdvT/369enTpw+PHj1izpw5VKxY0SRIbdSoER988AFTpkzh9OnTNG/eHEdHRy5fvszPP//M7Nmz6dixI6D8Ps2fP5+JEydSsmRJ8ufPb0xMl5zjx48bv68kFBAQYExIlx5qtZrFixfTsmVLKlSoQJ8+fShSpAg3b95k7969eHl5sXnz5nTvX2QT9kydLoRIXkpTrgD6sLAwvV6v1588eVIfGBio9/Dw0Lu5uekbN26sP3TokMm+Jk6cqK9Vq5Y+Z86celdXV33ZsmX1kyZN0j9//lyv1+v19+/f1w8YMEBftmxZvbu7uz5Hjhz62rVr69euXWtxfU+cOKHv1q2bvnDhwnpHR0d9rly59E2aNNEvX77cZDqRe/fu6d988029m5ubPleuXPoPPvhA/+eff5qdMszd3T3FY3722Wd6QF+yZMlky+zdu1cfGBioz5Ejh97FxUVfokQJfe/evfXHjx+3+NyEEEJYLrUpL81NGRYfH6//6KOP9Pny5dOrVCqT6cMOHTqkr1Gjht7JySnJ9GFXrlzR9+zZU1+wYEG9o6OjvkiRIvo2bdro161bZ3LMP/74Q9+oUSO9i4uLvkiRIvoJEybof/jhhzRNGWbupdFo9Hp98lOGVahQIcn+evXqZTIVll6v1z9//lw/depUfYUKFfTOzs76XLly6WvUqKEfP368/smTJynWzyCle+LJkyf1Xbt21RctWlTv7Oysz58/v75NmzZpvheamzLs448/1hcqVEjv6uqqr1+/vv7w4cPJTq/1888/m93v6tWr9WXLltU7OzvrK1asqN+0aZP+zTff1JctWzZJ2e+//15fo0YNvaurq97T01NfqVIl/ciRI/W3bt0ylrl9+7a+devWek9PTz2Q6vRhKX3fmjBhgl6vT37KsMTnZO73W6/X60+dOqUPCgrS58mTR+/s7Kz39fXVd+7cWb979+4U6yZeDiq9PlGfECGEEEIIIYSwo6pVq5IvXz6bTjUnhL3ImG4hhBBCCCGEXcTFxREfH2+yLDQ0lDNnzhAQEGCfSglhY9LSLYQQQgghhLCLa9eu0bRpU95++20KFy7MxYsXWbBgATly5ODPP/8kT5489q6iEFaTRGpCCCGEEEIIu8iVKxc1atRg8eLF3Lt3D3d3d1q3bs1XX30lAbd4aUhLtxBCCCGEEEIIkUFkTLcQQgghhBBCCJFBJOgWQgghhBBCCCEyyCs3plun03Hr1i08PT1RqVT2ro4QQgiRLL1ez9OnTylcuDBq9avznFzu1UIIIbIDS+/Tr1zQfevWLXx8fOxdDSGEEMJiYWFheHt727samUbu1UIIIbKT1O7Tr1zQ7enpCSgXxsvLy+r9xcXFsXPnTpo3b46jo6PV+3uVyLWzjlw/68j1s45cv/RLy7WLiIjAx8fHeO96VdjyXv0y/K7KOdhfdq8/yDlkBdm9/iDnkJil9+lXLug2dFPz8vKyWdDt5uaGl5dXtv3Fsxe5dtaR62cduX7WkeuXfum5dq9aF2tb3qtfht9VOQf7y+71BzmHrCC71x/kHJKT2n361RkgJoQQQgghhBBCZDIJuoUQQgghhBBCiAwiQbcQQgghhBBCCJFBXrkx3UIIkZm0Wi1xcXH2robNxcXF4eDgQExMDFqt1t7VyVYM1y42Nha1Wo1Go7F3lYQQWZwt7iUvw9/t7H4O2b3+8Oqdg6Ojo03u0xJ0CyFEBtDr9dy+fZvHjx/buyoZQq/XU7BgQcLCwl65JF/WMly7GzduoFKpyJkzJwULFpTrKIRIwpb3kpfh73Z2P4fsXn94Nc/BFvdpCbqFECIDGL4k5c+fHzc3t2x7Y0qOTqcjMjISDw8P1GoZqZQWhmvn7u5OTEwMd+/eBaBQoUJ2rpkQIqux5b3kZfi7nd3PIbvXH16tc9Dr9URFRdnkPi1BtxBC2JhWqzV+ScqTJ4+9q5MhdDodz58/x8XFJdvedO3FcO1cXV1xd3cH4O7du+TPn1+6mossQauF/fshPBwKFQJ/f5Bfzcxn63vJy/B3O7ufQ3avP7x65+Dq6gpYf5/OnldKCCGyMMO4Ozc3NzvXRGQHht+Tl3Hsv8h+goPBzw8aN4Zu3ZR3Pz9luchcci8RImuwxX1agm4hhMggL1uXcpEx5PdEZBXBwdCxI/z7r+nymzeV5RJ424f8jRDCvmzxf1CCbiGEEEKIV5xWC4MHg16fdJ1h2ZAhSjkhhBBpI0G3FQ5cvk/A9H0sviiXUQghzPHz82PWrFkWlw8NDUWlUr20Wd+FyKr270/awp2QXg9hYUo5IV5ly5YtI2fOnPauhshmJFq0QkyclpuPY4iIk24/QojsTaVSpfgaN25cuvZ77Ngx3n//fYvL16tXj/DwcHLkyJGu41lKgnshTIWH27aceHVl1P3EVnXbsGGDVeW6dOnCX3/9ZduK2dnff/+Np6enRQ8T5s+fT/369cmZMydeXl7UrVuXX3/9NeMrmc1J9nIrGLr3m+uKJYQQ2Ul4gm/Sa9as4YsvvuDSpUvGZR4eHsZ/6/V64uPjLdpvvnz50lQPJycnChYsmKZthBDWs3QmHJnZTqQmLfcTSzx//hwnJyeb1c9arq6uxozWL4O4uDi6du2Kv78/hw4dSrW8t7c3Y8eOpUqVKqhUKpYvX0779u05deoUFSpUyIQaZ0/S0m0FY9Bt32oIIYTVChYsaHzlyJEDlUpl/Hzx4kU8PT359ddfqVGjBs7Ozhw4cICrV6/yxhtvUKBAATw8PHjttdfYtWuXyX4Tdy9XqVQsXryYDh064ObmRqlSpdi0aZNxfeIWaEM3vh07dlCuXDk8PDxo0aKFyZe6+Ph4Bg0aRM6cOcmTJw+ffPIJvXr14o033kj39Xj06BE9e/YkV65cuLm50bJlSy5fvmxcf/36ddq2bUuuXLlwd3enQoUKbNu2zbht9+7dyZcvH66urpQqVYqlS5emuy5CZAZ/f/D2/u+7TWIqFfj4KOWESElK95Nnz57RvXv3VO8bEyZMoGfPnnh5eRl7Sy1atAhfX18KFy5MUFAQM2bMSNIyu3HjRqpXr46LiwvFixdn/PjxxofEfn5+AHTo0AGVSmX8nFaJu5ePGzeOqlWrsmLFCvz8/MiRIwdvvfUWT58+NZbR6XRMmTKFEiVKUKhQIapVq8a6dessPqZer6dkyZJ88803JstPnz6NSqXi77//Tte5AHz++eeULVuWzp07W1S+bdu2NG/enFKlSlG6dGkmTZqEh4cHv//+O6Dcx52cnNifYCzKtGnTyJ8/P3fu3El3PbM7CbqtoEK6lQshLKPX64l6Hp/pL70Nu+KMGjWKr776igsXLlC5cmUiIyNp2bIlu3fv5tSpU7Ro0YK2bdty48aNFPczfvx4OnfuzB9//EGrVq3o3r07Dx8+TLZ8VFQU33zzDStWrGDfvn3cuHGD4cOHG9dPnTqVn376iaVLl3Lw4EEiIiIs6j6Ykt69e3P8+HE2bdrE4cOH0ev1tGrVyjhdyIABA4iNjWXfvn2cPXuWqVOnGltvxowZw/nz5/n111+5cOEC8+fPJ2/evFbVR4iMptHA7NnKvxMH3obPs2bJfN1ZxbPnz5J9xcTHJF82zrRsdFy0Rfu1lcjISFq1apXqfeObb76hSpUqnDp1ijFjxnDw4EH69evHoEGD2LdvH82aNWPSpEkm2+zfv5+ePXsyePBgzp8/z8KFC1m2bJmx3LFjxwBYunQp4eHhxs+2cOXKFTZs2MCWLVvYsmULv/32G1999ZVx/ZQpU/jf//7HvHnzOHz4MIMHD+btt9/mt99+M5bx8/NLtuu9SqWib9++SR7gLl26lIYNG1KyZEkAWrZsiYeHR7KvxC3Re/bs4eeff2bu3LnpOm+tVsvq1at59uwZdevWBSAgIIAhQ4bQo0cPnjx5YvwZLl68mAIFCqTrOC8D6V4uhBCZIDpOS/kvdmT6cc9/GYibk23+1H/55Zc0a9YMUJ7aV6pUifr166NWK89vJ0yYwPr169m0aRMDBw5Mdj+9e/ema9euAEyePJlvv/2Wo0eP0qJFC7Pl4+LiWLBgASVKlABg4MCBfPnll8b13333HaNHj6ZDhw4AzJkzx9jqnB6XL19m06ZNHDx4kHr16gHw008/4ePjw4YNG+jUqRM3btzgzTffpFKlSgAUL17cuP2NGzeoVq0aNWvWBEh3a4oQmS0oCNatU7KYJ0yq5u2tBNxBQXarmkjEY0ryXbRblWrF1m5bjZ/zf5OfqLgos2Ub+TYitHeo8bPfbD/uR91PUk4/1jYPcKtUqUKVKlWMn5O7b7z++ut8/PHHxs+fffYZLVu25OOPPyYiIoLq1atz+PBhtmzZYiwzfvx4Ro0aRa9evQDl7/KECRMYOXIkY8eONQ53ypkzp82HMel0OpYtW4anpycAPXr0YPfu3UyaNInY2FgmT57Mrl27qF27NhEREVSuXJlDhw6xcOFCGjVqBECJEiVSfEDbu3dvvvjiC44ePUqtWrWIi4tj5cqVJq3fixcvJjo6Otl9ODo6Gv/94MEDevfuzY8//oiXl1eazvfcuXMEBgYSExODh4cH69evp3z58sb1EydOJCQkhPfff58///yTXr160a5duzQd42UjQbc1pHu5EOIVYggiDSIjI5kwYQLbtm0jPDyc+Ph4oqOjU23prly5svHf7u7ueHl5cffu3WTLu7m5GQNugEKFChnLP3nyhDt37lCrVi3jeo1GQ40aNdDpdGk6P4MLFy7g4OBA7dq1jcvy5MlDmTJluHDhAgCDBg2if//+7Ny5k6ZNm/Lmm28az6t///68+eabnDx5kubNm/PGG28Yg3chsrqgIGjfXslSHh6ujOH295cWbmEbkZGRjBs3jq1bt6Z430h8v7l06ZLxwapBrVq1TILuM2fOcPDgQZMWcK1WS0xMDFFRUbi5uWXAGSn8/PyMATeY3qf+/vtvoqKijA+tDZ4/f061atWMn3fv3p3iMQoXLkzr1q1ZsmQJtWrVYvPmzcTGxtKpUydjmSJFilhc5/fee49u3brRsGFDs+v3799Py5YtjZ8XLlxI9+7dAShVqhQnT57k6dOnrFu3jl69evHbb78ZA28nJyd++uknKleujK+vLzNnzrS4Xi8rCbqtIJ3LhRCWcnXUcP7LQLsc11bc3d1NPo8ZM4Z9+/bxzTffULJkSVxdXenYsSPPnz9PcT8Jn7SD0m0upQDZXHlbdptPj3fffZfAwEC2bt3Kzp07mTJlCtOnT+ejjz6iZcuWXL9+nW3bthESEkKTJk0YMGBAkrF4QmRVGg0EBNi7FiIlkaMjk12nUZv+3b87XAn+dDodEU8j8PL0MvZQUqtMR5peG3zNthVNZPjw4YSEhKR630h8v7FEZGQk48ePJ8hMlwwXF5d019kSKd3XIiOVn9XWrVspVKgQkZGReHh4oFarcXZ2TtNx3n33XXr06MHMmTNZunQpXbp0MXmY0LJlS5Ox1In5+vpy7tw5QOlavmnTJuO9Sa/Xo9PpcHBw4Pvvv6dr166cPn3auG3CruFOTk6ULFkStVpNjRo1OHbsGLNnz2bhwoXGMoakbA8fPuThw4fp+pm+TCTotoLqxSAnyV4uhEiNSqWyWTfvrOLIkSP06tXL2PoQGRnJtWvXMrUOOXLkoECBAhw7dsz4tF6r1XLy5EmqVq2arn2WK1eO+Ph4jhw5YmyhfvDgAZcuXTLpPufj40O/fv3o168fo0ePZtGiRXz00UeAkrW9V69e9OrVC39/f0aMGCFBtxDCZtydLA9gDGV1Oh1aRy3uTu7GoNua/abHwYMH6d27d5rvG2XKlEkyBjvx5+rVq3Pp0iXj+GZzHB0d0Wq1aa+4FcqXL4+zszM3btzA39+fiIgIvLy8kv0ZpKRVq1a4u7szf/58tm/fzr59+0zWp6V7+eHDh02uxcaNG5k6dSqHDh2iSJEiuLq6pngtE9LpdMTGxho/X7lyhaFDh7Jo0SLWrFlDr1692LVrV7rO+WXxcn0DzGTS0i2EeJWVKFGC9evX065dO1QqFWPGjEl3l25rfPTRR0yZMoWSJUtStmxZvvvuOx49emR8MJqSs2fPmnQJVKlUVKlShfbt2/Pee++xcOFCPD09GTVqFEWKFKF9+/YADBkyhJYtW1K6dGkePXrE3r17KVeuHABffPEFNWrUoEKFCsTGxrJlyxbjOiGEeJWVKlWK4OBg2rZtm6b7xkcffUTDhg2ZOXMmAQEBHD16lF9//dXk7/wXX3xBmzZtKFq0KB07dkStVnPmzBn+/PNPJk6cCCjdwHfv3k39+vVxdnYmV65cyR7z6tWrJi29hvqnlaenJ8OHD2fo0KHEx8dTtWpVtFothw8fxsvLyzgGvUmTJnTo0CHFnCgajYbevXszevRoSpUqZUxeZpCW7uWJ70vHjx9HrVZTsWLFFLf79NNP8ff3p1y5cjx79oyVK1cSGhrKjh1K3hqtVsvbb79NYGAgffr0oUWLFlSqVInp06czYsQIi+v3snl1HzcIIYSwyqRJk8iVKxf16tWjbdu2BAYGUr169UyvxyeffELXrl3p2bMndevWxcPDg8DAQIu6EzZs2JBq1aoZXzVq1ACUjLA1atSgTZs21K1bF71ez7Zt24ytBFqtlgEDBlCuXDlatGhB6dKlmTdvHqB0uxs9ejSVK1emYcOGaDQaVq9enXEXQAghsokZM2ak675Rv359FixYwMyZM/H392fHjh0MHTrU5O98YGAgW7ZsYefOnbz22mvUqVOHmTNn4uvraywzffp0QkJC8PHxMRlPbc6wYcNM7g/VqlXj1KlT6TrvCRMmMGbMGKZOnUrt2rVp1aoVW7dupVixYsYyV65c4f79pEnsEnvnnXd4/vw5ffr0SVddrHX37l369+9PuXLlaNKkCceOHWPHjh3GMeuTJk3i+vXrxq7mhQoV4vvvv+fzzz/nzJkzdqlzVqDS23tgXCaLiIggR44cPHnyJM2Z+hLbf/kePX44SmE3Pb+NDkwynkOkLC4ujm3bttGqVSu5dukg1886GXn9YmJiuHr1KsWKFcvwcWT2otPprOoil5F0Oh3lypWjc+fOTJgwwd7VSSLxtUvp98WW96zsxJbn/TL8rZRzsD971N/W95Ks/HfbUgnP4YMPPuDixYspjmHOamzxM9i/fz9NmjQhLCzMLlNwvWy/R5acgy3u09K93AqGebpfqacWQgiRxVy/fp2dO3fSqFEjYmNjmTNnDlevXqVbt272rpoQQggb+eabb2jSpAl6vZ4DBw6wfPlyYw+jV0FsbCz37t1j3LhxdOrU6ZWe8zo7yp6PJ7II4zASibqFEMJu1Go1y5Yt47XXXqN+/fqcPXuWXbt2yThqIYR4iRw9epTAwEDq16/PwoUL+fbbb3n33XftXa1Ms2rVKnx9fXn8+DHTpk2zd3VEGklLtxUk5hZCCPvz8fHh4MGD9q6GEEKIDLR27dqXomtzevXu3ZvevXvbuxoinV6t31YhhBBCZCitVsuYMWMoVqwYrq6ulChRggkTJth9bnUhhBDCXqSl2xoyZ5gQQghhYurUqcyfP5/ly5dToUIFjh8/Tp8+fciRIweDBg2yd/WEEEKITCdBtxUkkZoQIiX2mLNaZD8v2+/JoUOHaN++Pa1btwaUeXFXrVrF0aNH7VwzIYQQwj4k6LaCSlq6hRBmODk5oVaruXXrFvny5cPJyQnVS/YHQ6fT8fz5c2JiYl65cXXWMly76Oho4uPjuXfvHmq1GicnJ3tXzSbq1avH999/z19//UXp0qU5c+YMBw4cYMaMGfaumhBCCGEXEnRbwZhITZq6hRAJqNVqihUrRnh4OLdu3bJ3dTKEXq8nOjoaV1fXl+6BQkZLfO3c3NwoWrToS/PwYtSoUURERFC2bFk0Gg1arZZJkybRvXv3ZLeJjY0lNjbW+DkiIgJQ5kaOi4uzqj6G7a3djz3JOdifPeofFxeHXq9Hp9PZpEeMIa+CYZ/ZUXY/h+xef3g1z0Gn06HX64mLi0Oj0Ziss/RvggTdVpAvmkKI5Dg5OVG0aFHi4+PRarX2ro7NxcXFsW/fPho2bIijo6O9q5OtGK5do0aNcHZ2xsHB4aW6n6xdu5affvqJlStXUqFCBU6fPs2QIUMoXLgwvXr1MrvNlClTGD9+fJLlO3fuxM3NzSb1CgkJscl+7EnOwf4ys/4ODg4ULFiQyMhInj9/brP9Pn361Gb7spfsfg7Zvf7wap2DoXfavn37iI+PN1kXFRVl0T4k6BZCiAyiUqlwdHR8KYNSjUZDfHw8Li4uL+X5ZSTDtXN2dn4pr92IESMYNWoUb731FgCVKlXi+vXrTJkyJdmge/To0QwbNsz4OSIiAh8fH5o3b46Xl5dV9YmLiyMkJIRmzZpl2+st52B/9qh/TEwMYWFheHh44OLiYvX+9Ho9T58+xdPTM9s+6Et4Dr/99htNmjThwYMH5MyZ06LtixcvzuDBgxk8eHDGVjQZCevfpEkTqlSpwsyZM1Pd7vXXX7e4bEaz5+9Rnz59ePz4MevXr7dqP2k9h5iYGFxdXWnYsGGS/4uGnlmpkaDbCoafkfQuF0IIIRRRUVFJusprNJoUu/A5Ozvj7OycZLktH1q9DA/A5BzsLzPrr9VqUalUqNVqmww/MfwfNOwzI/Xu3Zvly5fzwQcfsGDBApN1AwYMYN68efTq1Ytly5alab/mziGt1yel8x83bpyx141GoyFnzpyUL1+eoKAg+vfvb/bvVHrrHxwcjKOjo0V1T0vZ9Lp27RrFihUzfnZ0dKRo0aL07t2bzz77zBicZubvUWIqlcomx03rOajV6mQbUiz9e/ByDCCzE+OYbrvWQgghhMg62rZty6RJk9i6dSvXrl1j/fr1zJgxgw4dOti7akKITOTj48Pq1auJjo42LouJiWHlypUULVrUjjVLWYUKFQgPD+fGjRvs3buXTp06MWXKFOrVq2fTLtW5c+fG09PT5mWttWvXLsLDw7l8+TLjx49n0qRJLFmyJFOOnRnslVdCgm4rqCTqFkIIIUx89913dOzYkQ8//JBy5coxfPhwPvjgAyZMmGDvqgkhMlH16tXx8fEhODjYuCw4OJiiRYtSrVo1k7KxsbEMGjSI/Pnz4+LiQoMGDTh27JhJmW3btlG2bFkKFSpEkyZNuHbtWpJjHjhwAH9/f1xdXfHx8WHQoEE8e/YsTfU2jKUvXLgwlSpV4qOPPuK3337jzz//ZOrUqSZ1Hj58OEWKFMHd3Z3atWsTGhpqsq+DBw8SEBCAm5sbuXLlokWLFjx+/BiAgIAAhgwZYiw7b948SpUqhYuLCwUKFKBjx47GdYnLPnr0iJ49e5IrVy7c3Nxo2bIlly9fNq5ftmwZOXPmZMeOHZQrVw4PDw9atGhBeHh4quefJ08eChYsiK+vL927d6d+/fqcPHnSuF6n0zFt2jSKFi2Ks7MzVatWZfv27cb1oaGhqFQq43kCnD59GpVKZfyZWVI/rVbLsGHDyJkzJ3ny5GHkyJHGBGgG27dvp0GDBsYybdq04cqVK8b1165dQ6VSsWbNGho1aoSLiwvff/89OXPmZOPGjSb72rBhA+7u7hk2Vt2uQfe+ffto27YthQsXRqVSsWHDhhTLBwcH06xZM/Lly4eXlxd169Zlx44dmVNZs2SebiGEECIhT09PZs2axfXr14mOjubKlStMnDjxpZkSTQi70uvh2TP7vNIxXU/fvn1ZunSp8fOSJUvo06dPknIjR47kl19+Yfny5Zw8eZKSJUsSGBjIw4cPAQgLCyMoKIg2bdqwb98++vbty6hRo0z2ceXKFVq0aMGbb77JH3/8wZo1azhw4AADBw5Mc70TK1u2LC1btjR5gDBw4EAOHz7M6tWr+eOPP+jUqRMtWrQwBr+nT5+mSZMmlC9fnsOHD3PgwAHatm1rNrnq8ePHGTRoEF9++SWXLl1i+/btNGzYMNn69O7dm+PHj7Np0yYOHz6MXq+nVatWJq24UVFRfPPNN6xYsYJ9+/Zx48YNhg8fnqbzPn78OCdOnKB27drGZd9++y1z5sxh2rRp/PHHHwQGBtKuXTuToN8SqdVv+vTpLFu2jCVLlnDgwAEePnyYZCz3s2fPGDZsGMePH2f37t2o1Wo6dOiQZDjTqFGjGDx4MBcuXCAoKIguXbrw008/mZRZunQpHTt2zLAeBXYd0/3s2TOqVKlC3759CQoKSrX8vn37aNasGZMnTyZnzpwsXbqUtm3bcuTIkSRPzIQQQgghhHipREWBh0e6NlUDOa05dmQkuLunaZO3336b0aNHc/36dUBp+V29erVJi/CzZ8+YP38+y5Yto2XLlgAsWrSIkJAQfvjhB0aMGMH8+fMpUaIE33zzDREREdSoUYNz586ZtDxPmTKF7t27G1uES5UqxbfffkujRo2YP3++1cnoypYty86dOwG4ceMGS5cu5caNGxQuXBiA4cOHs337dpYuXcrkyZOZNm0aNWvWZN68ecZ9lCtXzmzirRs3buDu7k6bNm3w9PTE19c32djm8uXLbNq0iYMHD1KvXj0AfvrpJ3x8fNiwYQOdOnUClG7UCxYsoESJEoDykODLL79M9Tzr1auHWq3m+fPnxMXF8f7779OzZ0/j+unTpzN48GDeeust1Go1U6dOZe/evcyaNYu5c+daciktqt+sWbMYPXq0MUZcsGBBksbWN9980+TzkiVLyJcvH+fPn6dixYrG5UOGDDGJNd955x0aNGhAeHg4RYoU4e7du2zbto1du3ZZXP+0smvQ3bJlS+N/LkvMmjXL5PPkyZPZuHEjmzdvtkvQnU0TPwohhBBCCJHh8uXLR+vWrVm2bBl6vZ7WrVuTN29ekzJXrlwhLi6O+vXrG5c5OjpSq1YtLly4AMCFCxdMWlsB6tata/L5zJkz/PHHHyYtmIZ5mK9evUq5cuWsOhe9Xm9MJnb27Fm0Wi2lS5c2KRMbG0uePHkApaXbEACnplmzZvj6+lK8eHFatGhBixYt6NChg9kpEy9cuICDg4PJ9ciTJw9lypQxXi8ANzc3Y0ALUKhQIe7evZtqXdasWUO5cuWIi4vjzz//5KOPPiJXrlx89dVXREREcOvWLerUqWOyTf369Tlz5oxF52pJ/Z48eUJ4eLjJOTo4OFCzZk2TLuaXL1/miy++4MiRI9y/f9/Ywn3jxg2ToLtmzZomx65VqxZly5blf//7H6NHj+bHH3/E19c3xd4F1srW2ct1Oh1Pnz4ld+7cyZaJjY0lNjbW+NnwdCkuLs7qgfTaF/O06bHfoPzszHDN5Nqlj1w/68j1s45cv/RLy7WT6yuEMOHmprQ4p4NOpyMiIgIvL6/0ZX82EwBaom/fvsYu3mlpCU2ryMhIPvjgAwYNGpRknS0St124cMGY3TsyMhKNRsOJEyfQaDQm5Txe9ERwdXW1eN+enp6cPHmS0NBQdu7cyRdffMG4ceM4duyYxdOhJZY4q7ZKpUoyJtocHx8fSpYsCSgt81euXGHMmDGMGzfOouMafrcSHsvcvSy99Uuobdu2+Pr6smjRIgoXLoxOp6NixYpJ5rV3N9NDo2fPnixZsoTRo0ezdOlS+vTpk6FToGXroPubb74hMjKSzp07J1tmypQpxtT/Ce3cudPs06O0uP4UDJcwJCTEqn29yuTaWUeun3Xk+llHrl/6WXLtoqKiMqEmQohsQ6VKcxdvI50OtFpl+0yc6qlFixY8f/4clUpFYGBgkvUlSpTAycmJgwcP4uvrCyhB2rFjx4xdxcuVK8emTZtMtvv9999NPlevXp3z588bA0ZbunjxItu3b2f06NEAVKtWDa1Wy927d/H39ze7TeXKldm9e7fZOMQcBwcHmjZtStOmTRk7diw5c+Zkz549SYbglitXjvj4eI4cOWLsXv7gwQMuXbpE+fLlrThL8zQaDfHx8Tx//hwvLy8KFy7M77//btJb+eDBg9SqVQtQejcAhIeHkytXLkBp9U+LHDlyUKhQIY4cOWJsfY6Pj+fEiRNUr14d+O+cFy1aZPwZHDhwwOJjdO7cmbFjx/Ltt99y/vx5evXqlaY6plW2DbpXrlzJ+PHj2bhxI/nz50+23OjRoxk2bJjxc0REBD4+PjRv3hwvLy+r6vDHv0+Y8ecR9HqlW0h2nnfSHuLi4ggJCZFrl05y/awj1886cv3SLy3XztzYPyGEyE40Go2x23PiVmFQWiH79+/PiBEjyJ07N0WLFmXatGlERUXxzjvvANCvXz+mT5/OyJEj6dKlC5cuXUoyx/cnn3xCnTp1GDhwIO+++y7u7u6cP3+ekJAQ5syZY3F94+PjuX37NjqdjgcPHhAaGsrEiROpWrUqI0aMAKB06dJ0796dnj17Mn36dKpVq8a9e/fYvXs3lStXpnXr1owePZpKlSrx4Ycf0q9fP5ycnNi9ezctWrRIEoNs2bKFf/75h4YNG5IrVy62bduGTqejTJkySepXqlQp2rdvz3vvvcfChQvx9PRk1KhRFClShPbt21t8nsl58OABt2/fJj4+nrNnzzJ79mwaN25srPPw4cMZO3Ys5cuXp3r16ixdupTTp08bu/WXLFkSHx8fxo0bx6RJk/jrr7+YPn16musxePBgvvrqK0qVKkXZsmWZMWOGSUb0XLlykSdPHr7//nsKFSrEjRs3kiTXS0nOnDnp0KEDI0aMoHnz5nh7e6e5jmmRLYPu1atX8+677/Lzzz/TtGnTFMs6Ozubncje3OTmaeXgoFw+vY3296qSa2cduX7WketnHbl+6WfJtZNrK4R4GaTW0PXVV1+h0+no0aMHT58+pWbNmuzYscPYUlq0aFF++eUXhg4dypw5c6hVqxaTJ0+mb9++xn1UrlyZ3377jc8++wx/f3/0ej0lSpSgS5cuaarruXPnKFSoEBqNhhw5clC+fHlGjx5N//79TWKKpUuXMnHiRD7++GNu3rxJ3rx5qVOnDm3atAGUwHznzp18+umn1KpVC1dXV2rVqmVcn1DOnDkJDg5m3LhxxMTEUKpUKVatWkWFChXM1nHp0qUMHjyYNm3a8Pz5cxo2bMi2bdtscs8wxFYajYZChQrRqlUrJk2aZFz/0UcfcffuXUaMGMHdu3cpX748mzZtolSpUoBy31q1ahX9+/encuXKvPbaa0ycONHi8e0GH3/8MeHh4fTq1Qu1Wk3fvn3p0KEDT548AZRu7KtXr2bQoEFUrFiRMmXK8O233xIQEGDxMfr27cuqVatMfo8yikqf1s7zGUSlUrF+/XreeOONFMsZLszq1avT9TQnIiKCHDly8OTJExu0dD+m3ZyD5HTSc2xMoHw5SqO4uDi2bdtGq1at5Nqlg1w/68j1s45cv/RLy7Wz5T0rO7Hleb8Mv6tyDvZnj/rHxMRw9epVihUrZnXmbbDBmO4sILufQ3avP7xc57Bx40Y+/vhjbt26leK0lin9X7T0fmXXlu7IyEj+/vtv4+erV69y+vRpY9eS0aNHc/PmTf73v/8BSpfyXr16MXv2bGrXrs3t27cBJVFBjhw5Mr3+KiR9uRBCCCGEEEJkF1FRUVy9epVp06bxwQcfpBhw24pdH08cP36catWqGaf7GjZsGNWqVeOLL74AlAH4N27cMJb//vvviY+PZ8CAARQqVMj4Gjx4sF3qb0hwlyW6CgghhBBCCCGESNHXX39NrVq1KFiwoDE5Xkaza0t3QEBAiqnhEydICA0NzdgKpZdE3UIIIYQQQgiR5Y0dO5ahQ4dmahf5bJlILauRmFsIIYTIPrRa2L8fwsOhUCHw9wczSZWFEEIIm5Cg2woZOH+6EEIIITJAcDAMHgz//vvfMm9vmD0bEk2HK4QQQthE9kw5l0VIIjUhhBAi+wgOho4dTQNugJs3leXBwfaplxBCiJebtHRbQRKpCSGEENmDVqu0cJtLJWNY1q8fREdDkSLS5VwIIYTtSNBtBQm6hRBCiOzh8OGkLdyJ3bsHb7+t/DuzupzL+HIhhHj5SfdyW5CoWwghhMjSbt9OW/nM6HIeHAx+ftC4MXTrprz7+Uk3dyGEeNlI0G0FGdMthBBCZA8FC6atvKHL+eDBsHs3rFoFoaFKy7QtyPhyIcxbtmwZOXPmtHo/KpWKDRs2WL0fIWxBgm4rSPdyIYQQInuoW1fpMp6WmUf0eiUobtrUti3RlowvHzLEdgG+EJmtd+/evPHGG/auRrqFh4fTrVs3SpcujVqtZsiQIfauksjmJOi2grRzCyGEENmDRqOM0Qbrpvy0RUv0/v0pjy/X6yEsTCknhC1otUpPjXXrHG3aY+NlFRsbS758+fj888+pUqWKvasjXgISdFtBWrqFEEKI7CMoCNatU7KTp5ctWqLDw21bToiUGHIHNGmi5r333GnSRG3X3AEzZsygUqVKuLu74+Pjw4cffkhkZGSSchs2bKBUqVK4uLgQGBhIWFiYyfqNGzdSvXp1XFxcKF68OOPHjyc+Pt4mdfTz82P27Nn07NmTHDly2GSf4tUmQbctSNQthBBCZAtBQXDtGuzdCz/+CPnypb3l29qW6EKFbFtOiORkxdwBarWab7/9lnPnzrF8+XL27NnDyJEjTcpERUUxadIk/ve//3Hw4EEeP37MW2+9ZVy/f/9+evbsyeDBgzl//jwLFy5k2bJlTJo0KdnjVqhQAQ8Pj2RfLVu2zLBzFkKmDLOKcpeWmFsIIYTIPjQaCAhQ/u3qqgQfKpX5MdYpSW9LtL+/Mr785k3zx1SplPX+/unbvxCQeu4AlUrpsdG+feZOU5dwfLSfnx8TJ06kX79+zJs3z7g8Li6OOXPmULt2bQCWL19OuXLlOHr0KGXLlmXChAmMGjWKXr16AVC8eHEmTJjAyJEjGTt2rNnjbtu2jbi4uGTr5erqaoOzE8I8CbqtYM2YMCGEEELYn6HL+eDBqc/jnVh6W6IN48vNBfuG7xazZsl83cI6ackdYHgIlRl27drFlClTuHjxIhEREcTHxxMTE0NUVBRubm4AODg48Nprrxm3KVu2LDlz5uTChQuULVuWM2fOcPDgQZOWba1Wm2Q/Cfn6+mb8yQmRDOlebgWJuYUQQoisL1YXiz6FZuyEXc5XroRdu1LOdK5SgY+PdS3R7dvDuHGQK5fpcm9v5SFAUFD69y0EZM3cAdeuXaNNmzZUrlyZX375hRMnTjB37lwAnj9/bvF+IiMjGT9+PKdPnza+zp49y+XLl3FxcTG7jXQvF/YkLd1WUKmke7kQQgiR1c0Lm8fM/83kU/9PaVO6jfH+nVDCLueQsS3RwcFJW9Zz51aWffaZtHAL28iKuQNOnDiBTqdj+vTpqNVK29/atWuTlIuPj+f48ePUqlULgEuXLvH48WPKlSsHQPXq1bl06RIlS5a0+NjSvVzYkwTdVjDcsiXoFkIIIbKmxzGPOfLkCDGPYmi3uh2V8ldidIPRdKrQCQd18l+Dkut27u2tBNzpbYk2JLZK3PD+6JHS8l2xYtZs5dZqlW7I4eFKkObvLw8Hsjp75w548uQJp0+fNlmWN29e4uLi+O6772jbti0HDx5kwYIFSbZ1dHTko48+4ttvv8XBwYGBAwdSp04datWqRUREBJ9//jnt2rWjaNGidOzYEbVazZkzZ/jzzz+ZOHGi2fqktXu5oe6RkZHcu3eP06dP4+TkRPny5dO0HyFAupfbhkTdQgghRJaU0yUn88vNZ3jd4Xg6eXL27lm6BXej7JyyfH/ie2LjY5PdNnG387174erV9AfFqSW2AuumIjPMxbxqFTadi9kw5VTjxtCtm/JuzymnhGVSmps+M3IHhIaGUq1aNZPXihUrmDFjBlOnTqVixYr89NNPTJkyJcm2bm5ufPLJJ3Tr1o369evj4eHBmjVrjOsDAwPZsmULO3fu5LXXXqNOnTrMnDnTpuO2DXU+ceIEK1eupFq1arRq1cpm+xevFmnptoIkUhNCCCGyvlyOuZjceDKf+n/KnKNzmH1kNlceXeGDLR/w7PkzhtYdmuy2ibudWyMjE1uZ67Lu7a0EXda0nCfXMm+YckrGn2dtGdVjIzXLli1j2bJlya4fOtT0/1yPHj2M/+7duze9e/cGIChRBXU6nfHfgYGBBAYGJnuMlPI4WMLa7YVISFq6raCSKcOEEEKIrO3mTTTR0QDkcs3FmEZjuD7kOjMDZ1Ixf0Xeqf6Osej5e+d5GP0ww6qSUYmtMmou5oxumReZw9BjY/duHYsWPWP3bp1VPTaEEGknQbcVpKVbCCGEyNo0w4bR/N13UX/+uTGadXdyZ0idIfzR7w+8nL0ApVWr5/qe+M7yZcTOEYQ/tX1K54xIbJWRgXFaWuZF1mbosdGxYxwBATIeX4jMJkG3DUhLtxBCCJEFxcSgOn8ep2fP0EybpgxEfucduHABwCSL+f2o+8Tr4ol8Hsk3h7/Bb7Yf/bf0559H/9isOobEVraciiwjA+OsOOWUEEJkRxJ024JE3UIIIUTW4+JC/JkzHBk1Cl3duvD8OSxZAuXLQ9u2sG+fsTk4n3s+Tn1wii1dt1DPpx7Ptc9ZcGIBpb8rzdvBb3Px/kWrq5MRia0yMjC2tMX9zh3pYi6EECmRoNsKhhukxNxCCCFEFqVWc7tOHbS//QYHD8Ibbyg38C1boFEjqFMHfv4ZtFpUKhWtS7fmQJ8D/Nb7NwJLBKLVa/np7E82Cbrhv8RWRYqYLvf2Tl9Ssoycizm1lnmDoUMlm7kQQqREgm4rqGRQtxBCCJF91KsH69fDxYvwwQfg7AxHj0LnzlC6NMydC1FRqFQqGvo2ZPvb2znx/gkG1x5MuzLtjLtZ8+cadv+zO93ZjW05FVlGdFk3SKllPjFrk7YJIcTLTIJuKxjuP9LSLYQQQmQjpUvDggVw4waMGQN58sA//8DAgVC0KHzxBdy9C0D1QtWZ1WIWapXylSkqLoqPfv2IpiuaUntxbTZc3IBOr0vpaGYZElt17YpVia0yei7m5FrmE5Ns5kIIkTwJuq0gDd1CCCFENpY/P3z5JVy/DnPmQPHi8OABTJgAvr7Qrx9cvmyySWx8LF0rdsXVwZVjt47RYU0HKs2vxI9//Ei8Lt4up2HrLuvm9n/tGsycmXI5yWYuhBDmSdBtA9LSLYQQQmRj7u4wYAD89ResXQuvvQYxMbBwIZQpo0Sdhw8Dylzfs1vO5tqQa3za4FO8nL04f+88Pdb3oNR3pdj9z267nIItu6ybo9FAgQKWlZVs5kIIYUqCbiuokExqQgghxEtDo4FOneDIEQgNhdatlebb9euV8eANGsDGjaDTkd89P5OaTOLGkBtMfn0y+dzyce3xNQp6FLRr9W3RZT05GZm0TQiDZcuWkTNnTqv3o1Kp2LBhg9X7EcIWJOi2gnQvF0IIIV5CKpWS2XzLFjh3Dvr2BSen/7KflysH338PMTHkcMnBaP/RXBtyjU1vbaJC/grG3QzdPpQv9n7B/aj79jsXG8rIpG3i5dK7d2/eeOMNe1fDKqGhoVSvXh1nZ2dKlizJsmXL7F0lkY1J0G0FSaQmhBBCvOTKl4cfflD6bo8eDTlzKt3QP/hAGfc9YQI8eICboxtty7Q1bhb2JIw5x+YwYd8EfGf5MmzHMG5G3LTbadhCRidtExlIp4U7oTjeWgd3QpXPIllXr16ldevWNG7cmNOnTzNkyBDeffddduzYYe+qiWxKgm5rSEu3EEII8WooVAgmT1Yyns+cqWQ5v3tXyXRetCh89JGSAf2Fwp6FWfXmKqoVrEZUXBQzf59JsdnFeG/Te/z98G87noh1Mjppm8gAYcGwyQ/13ia4n34P9d4msMlPWW4HM2bMoFKlSri7u+Pj48OHH35IZGRkknIbNmygVKlSuLi4EBgYSFhYmMn6jRs3Ur16dVxcXChevDjjx48nPt42yQwXLFhAsWLFmD59OuXKlWPgwIF07NiRmallExQiGRJ024Beom8hhBDi1eDpqcyLdeWKkrGsWjWIilKyn5cqpcz5fewYGrWGjuU7cuL9E2zvvp2Gvg2J08Wx+NRiyswpwy/nf7H3maRbRidtEzYUFgz7O0LUv6bLo24qy+0QeKvVar799lvOnTvH8uXL2bNnDyNHjjStXlQUkyZN4n//+x8HDx7k8ePHvPXWW8b1+/fvp2fPngwePJjz58+zcOFCli1bxqRJk5I9boUKFfDw8Ej21bJlS2PZw4cP07RpU5PtAwMDOfwioaIQaeVg7wpkZyoJtoUQQohXk4ODkrHsrbdgzx74+mvYsQN+/ll5NWoEI0agatmSwJKBBJYM5MCNA0w5MIX91/fzerHXjbt6GvsUT2dPO55M2hmStoksTKeFE4MxPxBSD6jgxBAo0h7UmTcmYMiQIcZ/+/n5MXHiRPr168e8efOMy+Pi4pgzZw61a9cGYPny5ZQrV46jR49StmxZJkyYwKhRo+jVqxcAxYsXZ8KECYwcOZKxY8eaPe62bduIi4tLtl6urq7Gf9++fZsCidL1FyhQgIiICKKjo03KCmEJCbqtkHA8k14vI7uFEEKIl4JOC/f2Q3Q4uBaCfP7JByUqFTRporz++AO++QZWrYLfflNe5cvD8OHQrRsNijZga7et3H12l1yuuQDl+0PzH5vjrHHmU/9PaVa8GSrJ1Cps4d7+pC3cJvQQFaaUKxCQWbVi165dTJkyhYsXLxIREUF8fDwxMTFERUXh5uYGgIODA6+99ppxm7Jly5IzZ04uXLhA2bJlOXPmDAcPHjRp2dZqtUn2k5Cvr2/Gn5wQyZDu5VaQW6IQQgjxknkx/pXdjeFQN+Xd0vGvlSvD//6njO3++GOlK/r580r282LF4Kuv4PFj8rvnN25y+eFlTtw6wW/XfyPwx0BqLqrJL+d/QafXZdgpildEtIUTpltazgauXbtGmzZtqFy5Mr/88gsnTpxg7ty5ADx//tzi/URGRjJ+/HhOnz5tfJ09e5bLly/j4uJidpu0dC8vWLAgd+7cMdn+zp07eHl5SSu3SBdp6bZCwifR0tAthBBCZHOG8a+Ju+Maxr/6rwMfCwYu+/goLd5jxihTi82eDTdvKtnPJ02C995TxoUXLUrpPKX5Z/A/TD80ne9Pfs/J8JN0/LkjZfOWZVT9UXSr1C0jzlS8ClwtnDDd0nI2cOLECXQ6HdOnT0etVtr+1q5dm6RcfHw8x48fp1atWgBcunSJx48fU65cOQCqV6/OpUuXKFmypMXHTkv38rp167Jt2zaT9SEhIdStW9fi4wmRkATdNiIxtxBCCJGNZcT41xw5YMQIGDwYVq9WAvGzZ5Xs599+C126wPDheFerxswWM/ms4WfM/n02c47N4eL9i/Te2BtPZ0/almyb+rGESCyfP7h5Kw+NzP5eq5T1+TJmYvUnT55w+vRpk2V58+YlLi6O7777jrZt23Lw4EEWLFiQZFtHR0c++ugjvv32WxwcHBg4cCB16tShVq1aRERE8Pnnn9OuXTuKFi1Kx44dUavVnDlzhj///JOJEyearU9aupf369ePOXPmMHLkSPr27cuePXtYu3YtW7duTdM1EMJAupdbIWH3chnTLYQQQmRjaRn/mlZOTtCzJ5w5A7/+qoz/1mqV1N/Vq0PTprBzJ3ld8zDh9QlcH3KdqU2n4l/Un/Zl2ht3c+zWMZ7EPEn78cWrSa2BGi8mVk8yKPLF5xqzMiyJWmhoKNWqVTN5rVixghkzZjB16lQqVqzITz/9xJQpU5Js6+bmxieffEK3bt2oX78+Hh4erFmzxrg+MDCQLVu2sHPnTl577TXq1KnDzJkzbTZuu1ixYmzdupWQkBCqVKnC9OnTWbx4MYGBgTbZv3j1SEu3FUwSqdmvGkIIIYSwVmaMf1WpoEUL5XXypNLyvXYt7N6tvCpXhuHD8XrrLUbWH8nI+so0SjqtjjhdHB3XdSQqLooBrw1gSJ0h5HPPl/66iFeDT5AyLOLEYNOHSm7eSsBtyXCJdFi2bBnLli1Ldv3QoUNNPvfo0cP47969e9O7d28AghLNQ6fT/ZfrIDAwMMUg2NoGsYCAAE6dOmXVPoQwkJZuK8iUYUIIIcRLIrPHv1avrrR0//230v3c3V3Jft6zJxQvDtOnQ0SEsfi9uHvkcM7Bk9gnTD4wGd9Zvgz+dTBhT8JsUx/x8vIJgnbX0DXezbOqi9A13g3trmZYwC2ESEqCbmuYTBlmv2oIIYQQwkqG8a/JPlBXgZuP7ce/+vnBrFlw44aSZK1AAfj3X2WaMR8f+OQTuHmTws6FOf3+aYI7B1OzcE2i46P59ui3FP+2OO9sfIdrj6/Ztl5ZlFYLoaHKrGyhocpnYQG1BgoEEFe4ozI9WCbOyy2EkKDbZiTmFkIIIRQ3b97k7bffJk+ePLi6ulKpUiWOHz9u72qlzM7jX8mdGz79FK5dg8WLoWxZpaV72jQcSpem2uzZqM+dp0O5Dhx99yg7395JgF8A8bp4lpxewuOYxxlTrywkOFh5RtG4MXTrprz7+SnLhRAiK7Nr0L1v3z7atm1L4cKFUalUbNiwIdVtQkNDqV69Os7OzpQsWTLF8SIZTWWaSc1u9RBCCCGyikePHlG/fn0cHR359ddfOX/+PNOnTydXrlz2rlrqDONf3YqYLnfztny6MGu5uMA778C5c7BpEzRsiCoujqJ79+JYvTq0bIlq716aFW/K3l57OfzOYSY0nkDVglWNu5h7dC77r6cj4ZuVMrIVOjgYOnZUOgEkdPOmsjytgbe0mAshMpNdE6k9e/aMKlWq0Ldv3ySJEsy5evUqrVu3pl+/fvz000/s3r2bd999l0KFCtklm6BJzJ3pRxdCCCGynqlTp+Lj48PSpUuNy4oVK2bHGqWRT5AyLdi9/UrSNNdCSpfyzO6Oq1ZD27bQti3xBw9yZ+RICv/+O6rt22H7dmVM+IgR1OnYkTredYyb3Yy4ybCdw3iufU6Dog34tMGntCjZApXKfLd5rRb274fwcChUCPz9QZOOUw0OVoamJwyKvb2VKcot+IqXIq1W2be59g29XmkEGTIE2re3rO4ZWdeMIDPkCGFftvg/aNeW7pYtWzJx4kQ6dOhgUfkFCxZQrFgxpk+fTrly5Rg4cCAdO3Zk5syZGVxT85K7gQkhhBCvqk2bNlGzZk06depE/vz5qVatGosWLbJ3tdLmxfhX/LpmifGv+lq1OD5yJPHnzsGAAeDqqmQ/79oVSpZUosXISKXqKjV9qvbBSePEgRsHaLWyFdW/r87P535GqzNtzrVVd21bt0Intn9/0n0npNdDWJhSLrHELdo//5yxdbUlR0dHAKKiouxcEyFebYb/g4b/k+mRraYMO3z4ME2bNjVZFhgYyJAhQ+xSH+ldLoQQQpj6559/mD9/PsOGDePTTz/l2LFjDBo0CCcnJ3r16mV2m9jYWGJjY42fI15k7Y6LiyMuLs6q+hi2t3Y/NqXTwv3DEHMbXApC3ropBvbGcyhaFGbOhM8+Qz1/Pur581Fdvw5DhqAfPx7d+++Td8AAvgv8jtH1RjP76Gy+P/k9p2+fpvO6zpTKXYoV7VdQvVB1Nm+GHj2U7y+urv8d6+FDZTkoDe2p0WqVXG8uLubXq1QwahQ0b57+n0N4uGkdUyqXcPebNxvz0BlpNKnXtVWrpC3m9vo98vT05M6dO+h0Otzc3Kxq8NHr9Tx//pzo6Ohs23CU3c8hu9cfXq1z0Ov1REVFce/ePby8vNDpdCbT1oHlfxOyVdB9+/ZtChQoYLKsQIECREREEB0djauZv8gZeyOPN/77eVwccXGSCTItsuQXoWxErp915PpZR65f+qXl2mXH66vT6ahZsyaTJ08GoFq1avz5558sWLAg2aB7ypQpjB8/PsnynTt34ubmZpN6hYSE2GQ/tuUGRAA7LCptcg41aqCeO5eie/dSYuNGPMLD0UydCjNmEBYQwJX27Wnk3YhqZaqx7f42ttzbwo3HN/jr2F/cdriNRqPMWJaSbdssO4tvvkm9zO7dZs7BQm5uSku1JRLWWaOxrG6J7Ujhx2GP3yNPT0+ePXuGWi35j4XIbDqdjqdPn3L58mWz6y3tiZKtgu70yMgbeawWDJdwz549OEvMnS5Z84tQ9iHXzzpy/awj1y/9LLl22bFbaaFChShfvrzJsnLlyvHLL78ku83o0aMZNmyY8XNERAQ+Pj40b94cLy8vq+oTFxdHSEgIzZo1s6proE3c3AyHepA0E8yLlpZ6K6BI0ublFM+hQweYOZP4zZtRz5iB5vff8QsJwS8kBF3r1ug+/pi32i4nMu4Zx28dJ8AvgAMHoHVriH2jC+o7VXE42R9VbM4kx926FRo0SPmU1q1T8r6l5ocf4nBzS9/PQauFSpXg1i3zPQtVKihSRJnmXKP5r3zCFu60+OEHpat5Qvb+PdJqtcTHxxvHlu7dq0zlfufOf2UKFICPP1aGCZgTHx/PoUOHqFevHg4O2TMEyO7nkN3rD6/WOahUKhwcHNCkkCzC0KCbmmx1pQoWLMidhH9dgDt37uDl5WW2lRsy9kYe/VzLyKPKo9vGjRuT08OCvk/CyN43sOxOrp915PpZR65f+qXl2ll6M89K6tevz6VLl0yW/fXXX/j6+ia7jbOzM87OzkmWOzo62uz3y5b7ShedFk4PBpJ7kKKC00OgaPtku5onew6OjtCpk/I6eBC+/ho2bUK9dSvqrVuhdm1yjRhBszfeAI2G27chOs/vUGY9ujLria/9DRz7EA4PhWf/9Si8fVvZdUoKFYLo6NRPv2BBZQa09PwcHB1h6tT/AuGEgbehZ+hXX/3XbfzgQfj77zQdwkShQv+dd8JEc25uoFbb5/co4TENY+gTP4D46y+lruvWmU8IFxcXR3x8PB4eHtn273Z2P4fsXn+Qc0jM0u2zVdBdt25dtiXq6xQSEkLdunWT3SYjb+TaBHnoNA52vplnY3b/IpTNyfWzjlw/68j1Sz9Lrl12vLZDhw6lXr16TJ48mc6dO3P06FG+//57vv/+e3tXzb7u7YeoFLKBoYeoMKVcgYD0H6d+feV16RLMmAHLl8ORI0qUVqIEDBtGEb8ecKsm/PIjNPgKCvwJDaZC7dlw6h04OAKe+FKogBZIuRufv7+S+fvmzeRbob29oW7dlLttpyYoSAkmzWUdnzXLNMgMD0/fMQx19fdXPifMcu7qqnRxr1RJeQBgryznts7kLoTIHHYdHBIZGcnp06c5ffo0oEwJdvr0aW7cuAEordQ9e/Y0lu/Xrx///PMPI0eO5OLFi8ybN4+1a9cydOhQe1RfCCGEEIm89tprrF+/nlWrVlGxYkUmTJjArFmz6N69u72rZl/RFkaClpZLTZkysHAhXL8On38OuXPDlSswYAD+PXyY7jSCfGebwoIzsGoj/FsbHGOg1lwYVJL8FX7Bv2zqc31rNErydPiv1dnA8HnWLNsEgEFBcO2a0rV65Url/erVpAFwoUJp33fiuiaXkf3WLftmObcmk7sQwn7sGnQfP36catWqUa1aNQCGDRtGtWrV+OKLLwAIDw83BuCgzPO5detWQkJCqFKlCtOnT2fx4sV2maMbEt9cJH25EEIIAdCmTRvOnj1LTEwMFy5c4L333rN3lezP1cJI0NJylipQACZMgBs34LvvoFgxVA+fMCxmFtfxY77+Q0pcKg+LD8Py3XClCUT4MKfZCjTPlQcAj6IfpXgIQyt0kSKmy729k+/qnF4aDQQEKLOlBQSYD+YNre8pJVZOvF3CuqbWmgxKa7JWm3R9eiWe2iy5fVvaip/e1n4hRMawa/fygICAFCcbX7ZsmdltTp06lYG1Sh+ZMkwIIYQQycrnD27eEHUT8w/qVcr6fP4Zc3x3dxg4EPr1gyUTYOqXuP4TQz8W8j7fs54OfH11BLeeLGFirw/pVHMjuA7hufY5VRZUoVy+cnza4FMa+jY0O8VOUJDSpdkw/rlQISX4TWsLd8Ix1Ondh6H1vWNHJfA2NwZ89WrIm9f8cdLSmhwQkLa6mZOwG7uBt7dyDultxU9Pa78QIuNkqzHdWY0qwUzdEnMLIYQQIllqDdSYDfs7omQrT/jN4cX3iRqzUpyv2yYcHODdLyDfD3DiJvotoD6j502CeZNg9HlfBKYuygOA38MOcuvpLcIiwth5ZSd1vevyqf+ntC7VOknwbWiFTq+0BJ+pScsY8MQyszU5uaRoN28qyxP3FLB0DL1/Bj27EUKkj0z4Z4WE9xpp6RZCCCFEinyCwH8duCXqh+3mrSz3yaTsXGoN1PwWyqtQjVTBVKARoAHVX8AMYKQOflhCwwK1+HvQ33xY80OcNc4c/vcwbVe1perCqqw6u4p4XbxNqpTcGGpD8JmeMdSWjgFPLLNak9PTjT0zx9ALIWxHgm4rpDBUSAghhBAiKZ8gaHcNmuyFeiuV93ZXMy/gTlgPwwMAb+B9YDbQwRU8nODKLXj/ffD1xW/Oj8ytO4FrQ64xst5IPJ08+ePOH3QL7saZ22esrkpGjqG2ZAx4YqmNCVepwMfH+tbk9CZFy8wx9EII25Cg2woJu1XppYO5EEIIISyh1ijTgvl1Vd5T61KuexFt3lgHd0L/+2ythA8AygyBgvmgYzTMeg5vA3k1cPcujBkDPj4U/HQyU0v24/qQ60xoPIEuFbpQo3AN4+72XN1D5PPINFcjq2XkzqzWZGu6sae3FV8IYR8SdNuIdC8XQgghBDqtEhhfW2WbADksGH6tpPz7yDuwuzFs8lOW24JaA88fwqXZEHtPWeYKtASma+FDoLwfREUp2c9LliRXn/587t6S1R1XG3dzJ/IOrVe2xneWL1/+9iUPox9aXIWsmJE7udbkIkVs15psbTf29LTiCyHsQ4JuKyR8+CkxtxBCCPGKCwtWAuLdjeFQN+sD5LBgJfFa1E3T5VE3leW2CLx1WjgxGLPfZByA+iqYGA/bf4VmzUCngzVroGZNeP112LYN9HpuPLmBt5c3D6MfMjZ0LL4zvRmxrg3h//yS6oOHrJqRO2Fr8g8/KMv++MN2rcmZ1Y1dCGF/EnRbweSPpDR1CyGEEK8uY4CcqJ90egPklIJhw7ITQ6xvSb+3P2mdEx8r+l+o6gI7d8Lp0/D220oW9L17oXVrqFSJ10LOcfG9P1gdMIzKLo5ExkXzzbmtFPuxI/3m5eD23/9L9ghZOfg0tCZ37PjfZ1vuW5KiCfFqkKDbCqZjuoUQQgjxSsqIANmSYDgqTClnjWgL+2wbylWpAitWwD//wLBh4OkJ585Bnz5o/LzpsmAGp3PFsaUw1HOBWD0se/gMjn2U7K5f5eBTkqIJ8WqQoFsIIYQQwhoZESCnNRhOL1cL+2wnLufjA9Onw40bMHUqFC4Mdx7CalANhtbr4YAr/OYNM/NCQYcX0bNOy/jQ8Ry9edRkdy9z8KnVQmgorFqlvCfOwi5J0YR4+TnYuwIvC+ldLoQQQryiMiJATm8wnFb5/JV5wqNuYr6lXqWsz5dM3+6cOWHkSOhaDSY1h63Av8CvoNoJDetAw9YQl1PZ9/ELSxn32zjG/TaO14u9zqcNPuX1Yq+jUqkICoL27ZUs5eHhyhhuf//s3cIdHKxMh5YwO7u3t9KynzCoNnRjF0K8nKSl20qGbk8ScwshhBCvqIwIkA3BMMkMdEYFbj7JB8OWUmugxuz/9pn4GAA1ZqU+rZn2PjQEvgJGAOUBLXAQ+BQ0U2LJd+oUeYilT9U+OKgd2HN1D01XNKXOD3XYcHEDOr3upcrIHRysjAVPPB3azZvK8mAbJaAXQmR9EnRbyXB70ktTtxBCCPFqyogA2VbBsCV8gsB/Hbgl6tvt5q0s97Ggn7PhgYIKqAp8BkwE6irL1H/qqDd+PKW6z2HJ09e50v8iA18biIuDC0dvHqXDmg5Uml+JKw+vWH8+WYBWq7Rwm/t6aFg2ZEjSrua2OnZK3dmFEJlPgm4rGZKpScgthBBCvKIyKkA2BsOFTZenJRhOy7HaXYMme6HeSuW93VXLj2HuwUMxYCAwE7SBDsQ7O6M6fwV69KBo9cZ8d7EYN945x+gGo/Fy9iIiNgKfHD62Oyc72r8/aQt3Qno9hIUp5WwpOBj8/KBxY+jWTXn385NWdSHsTYJuK/3X0m3XagghhBDCnmzRWpzcflueVf5d+4e0B8NpodYowbNrIWX8+b39lmdcT+nBQz4Vup5O7Fy8GO348VCggBJxfvwx+cpWZ3KIjhudfye4czBOGicA4nXxNFjSgK8Pfs3T2Ke2O8dMEm7h8H1Ly1kite7smzfb7lhCiLSRoNtKyc0pKYQQQohXjLWtxckxtJAX7QgFAmzTpdycsGDY5Ae7G8Ohbsr7Rj84+yVcWwV3QlMOwlN68FBvBXGenuhGj1ZSdS9aBGXKwJMnMHUqOcpW4bXP5ynTjwG/nP+Fg2EHGblrJL6zfBm7dywPoh5kzHlngEIWDt+3tFxqLOnOPmqUbY4lhEg7CbqtpH4RdeukqVsIIYQQao0SGPt1zdgA2dbCgmF/x6RTn0X/C2fH/heEb/JTyiYnuQcPRdr+V8bFBd59F86fh40boUEDiIuDZcugYkVo3ZqgO7lZ2m4JpfOU5lHMI77c9yVFZxVl2I5h3Iy4mQEXwLb8/ZUs5ck1zqhUyqxr/gmG+VszFtuS7uwprRdCZCwJuq1k+GMqQbcQQgghsiWdFk4MxqIMNVE3leA8pcDb0gcPajW0a6dEjIcPw5tvKl+stm3DsWlzer8/jwt5xrGuw2qqFaxGVFwUM3+fSbHZxfjn0T/pONHMo9Eo04JB0sDb8HnWrP+ys1s7FtuW3dSFELYnQbeVDC3dEnMLIYQQIlu6tz9pC3eyXnzhOTHE8vHelqhTB9atg7/+gv79ldbw48dRd+vGm2+M5kRsb0I6bKChb0Pq+tSleK7ixk3vPg1Xur5b0gU+EwUFKadUJFFve29vZblhnm5bTC1mq27qQoiMIUG3lYzzdEvQLYQQQojsKDqtzaR6iApTgnVbK1kS5s2DGzdg3DjImxeuXkU1eDBNG/fltysN2fr6EmPx+5eXUXxWEdquaMzh3RZ2gc9EQUHKEPa9e2HlSuX96tX/Am5bTS1mSXd2b+/0noUQwloSdFtJhYzpFkIIIUQ25prOZtLocKVVOSNamfPlg7Fj4fp1JQgvUQIePoSJE/EoXQHefx9Cv2P3nj5E6fRseQb1/oXG/0LIvX/R73szywTeGg0EBEDXrsq7JkFve1tNLWZJd/avvkprzYUQtiJBt5XU0tIthBBCiOzM3Bzblnh6OWm2c1u3Mru5Kd3NL12CX35RuqHHxirZz18fRJdFcD0W3vEERyA0GprfgtfCIHj3++i0cbariw0Zkqb98otl5S0Zs51ad/a2bc1vJ4TIeBJ0W0mylwshhBAiW0tpjm2zVOCcR8lqnngsuCWJ1tJDo1GiykOHlGbfwHrK8PIT4DMFFs+HW/dhqBe4qeBELLx1/QHh1zbYth42kDBp2pw5lm1j6Zjt1LqzCyHsQ4JuKxnHdNu3GkIIIYQQ6ZfcHNtJpPbFx4aJ1sx1XVeplCnGFgyEr4EAwAH4G/LOgRlT4c4/MM4DBueEIpp44+42XtxIdFy0dXWyUnJJ05Jjbmqx1KTUnV0IYR8O9q5AdvdfIjUJu4UQQgiRjfkEQZH2SoK06HCl+/jf30N0gnmx3byhxLtKK3eyEiRaKxCQvrqEBSvTmCVsSXfzVlrkfYKUceiFgfeATsBOYBdwBzyWw1hPoBnQ1BWA07dP88aaN8jvnp+hdYbSv2Z/crjkSF/d0imlpGnmmJtaTAiRPUlLt5X+615u54oIIYQQQlgr4Rzblb6A9tehyV6ot1J5b3cVPEtZtq80Z0V/ISxY6aKeUtf1hOPQcwKdgW+BHkA+4CkQDLzWDT78kKfnTuGX04+7z+4yevdofGf58vmez7n37F766pgOqSVNSyzx1GJCiOxLgm4rGUY+SUO3EEIIIV46CYPwAgHKZ0uznacnK7pOC0fex3z/9QRd1yHpOHQXoAUwHRgIVCoB0dEwfz7+zd7hyr5qbCsxlnJ5y/Ek9gmT9k/Cd5YvQ7YP4XHM47TXNRFDcrRVq5T3xNN8WZIMDWDgQBmLLcTLRoJuK0kiNSGEEEK8UmLugyql/s4qcPNRWqPT6twkeP4ghQIJuq4nNw7d0wdG/gJnLsOePdCyJej1qIPX07LHeM6tycvBfKN4rWANouOjWXtuLS4OLmmvawIJk6N166a8+/kpyw0sTYb25psyFluIl40E3VZSyZRhQgghhHhVhAXDwc6gTyVJWo1ZSqt4Wui0cGl26uXgv67rPkHQ7lrSLvA+QcqXtMaNYds2OHsWevUCR0dU+/dTb8BXHJn1jHOOQ5nz+jfGoFur0zLo10GcCj9lcbWTS45286ay3BB4+/srXcYTz6NtkJ6kaUKI7EGCbiupXvzl1Ev+ciGEEEK8zHRaJblZSt95VBposEYJelPbV+LM5Pf2w/OHltUlYdd1c13gE6tYEZYtU/psjxwJXl6oLl6k/GczCWo5DCZPhocPCb4QzHdHv6P699Vp9VMrDtw4kGI1UkqOZlg2ZIhSTqOB2S+eKSQOvO2VNC21LvFCCNuQoNtK6hd/JCWRmhBCCCFeavf2J01ulpheC875Ui4TFgyb/GB3YzjUTXnf5Af/brSsHk550td1HaBIEZg6FcLCYPp0pWn5zh347DMoWpQmszcxqEA71Co1v/79K/5L/Wm4tCE7ruwwO1NNasnR9HrlUPv3K5+DgpTkaEUS9Yg3lzQtowNiS7rECyFsQ6YMs5JKxnQLIYQQ4lVgaTbylMrd3AyHOpKktTzqJlyaZdn+ywyyrOu6ofU8OlxpGc/n/992Xl4wbBh89BGsXQtffw1nzpB70Y/MVquZ2L4l3zV0ZnzkFvbf2M/+G/sp7lqcOpWgoCbauL/wcMuapRMmUQsKgvbtlUA8PFwZ6+3vb9rCHRystKAnDOi9vZWWclskVzN0iU/89dXQJV6ypgthWxJ0W8nYO0hibiGEEEK8zGyRtfz0JySfmVwFKnXK48Wd8kCFz1KvQ2rzfBs4OkL37kpT765dSvAdEoLn+q18uh4+bliPFc0LMkS/FUeVI7l/7wqqGKXGrkUopFkJNEy1OomTqGk0SrI0czI6IE6tS7xKpXSJb99ekrkJYSvSvdxKkr1cCCGEEK+EhHNjm2VB1vKomykcQJ8g4E7mGLW/T72V25J5vhNTqaBZM9i5E06dUgJxjQbnfYd49/NgHi18zpyrr6F6Ub1HWqh48San7wZQ2Oe+zZKjpWWMeMJt0tIN/fDhtHWJF0JYT4JuKxnGdEvILYQQQoiXmlqTdG5soxef05O1PLEyQ5JOA+bmA/6/WJagLdlkbwnm+dalEJlWrQo//gj//ANDBoOLCsd/9TSd/yMOQ2JgC/zvDpx/DkMf6Ins64PefyK4PDbZTXqSo6V1jHh6xmXfvm1ZXSydV1wIkToJuq2kMiZSk7BbCCGEEC+55ObGdvNWlqcWFFvCu33y04ClJtVkbwnm+U5N0aIw6g34Vo/2LQdicuVC9QhYBYPGwOn9UPcZRKhi4PUxqIYVhSajwf2OchpmkqOlxtJANzzc8qnKEitY0LJjWDqvuBAidTKm20rGKcMk5hZCCCHEq8AnCIq0Tz5JWUrcikDUFcy3RKuU4N2wrwIBaa+bLZK9JS7nDrq2joS8+T0tQ7rhsDUO1U2oshsOhsK1mvBxLVif5yn4f4Vrw29ZW+8WLRvnSPOYaEsD3fz5oXfv9I3LrltXeSBw86b57VUqZb3MFy6E7UhLt5UMnask6BZCCCHEK8OSubHNqTr1xT8yqHu6LZK9JVNO5+iIvpEDfAWMAMqBSgvFjkDwd3BnLQwMg87uUbQps9sY7N6MSGkcuyl/fyXgTW2MOKR/XHZWnC9ciJedBN1WkkRqQgghhBAWKtI2Y7un2yLZW2r7UwNVgc+BCUBtZXX+8/DdD7DkO2DmexAbw7m75yg6qyhvrn2TE7dOpHo4SwPiu3ctq35y3dXTMl+4EMJ6EnRbSW0c023fegghhBBCZAs+Qekfs50aWyd7M9mfGcWBQcAMoDngDOrrwMyHUMKP+5M/xy1GR/CFYGouqkngj4H8du039Ck01lgSEFvaDT2lckFBcO0a7N0LK1cq71evvroBd1qzwAuRFuka0x0WFoZKpcLb2xuAo0ePsnLlSsqXL8/7779v0wpmeYYx3ZK/XAghhBDCMukds50anRacckOZwXDtR4i9/986p1zK8iLt07ZPnyCoB5xJoUx+oBcQBOwCdgI379Bo9gYe5/BiWxMf+he/wM4rO9l5ZSf1fOoxusFoWpdqbcwPlFBQkDIee/9+pbW6UCGl67mhy7ehG7q147JTmi/8VRIcrEzVlrDLvre30uvgVX0IIWwrXS3d3bp1Y+/evQDcvn2bZs2acfToUT777DO+/PJLm1YwqzNOGSYxtxBCCCGE/YQFwyY/2N0YLs1SAm5HL3DwUNY/fwhnxyplzM3VnZIibZX3RluhwufJl/MEOgCzga+HQenSaJ5E0Db4HGHfOnDwYFmqPHDkUNgh+m7sS3R8dLK7MgTEXbsq7wnHWMu4bNtJbxZ4IdIiXUH3n3/+Sa1atQBYu3YtFStW5NChQ/z0008sW7bMlvXL8mRMtxBCCCGEnYUFw/6OSacLi4uA+EjTZVE3lbJpDbwB8jeASuNSHzee0weGTYMLF2DDBqhfH9Xz59QLucjp7+I4/2tx5rl3wc3BFQCdXsfKsyuJjY+1uCoyLtt6Wq3Swp1cFnhQssBLV3NhrXQF3XFxcTg7OwOwa9cu2rVrB0DZsmUJt3SCwZeESlq6hRBCCCHsR6eFE4MxPw2ZOS/KnRiibJtWaRk3rlYr/cQPHIBDh5RIWKWi3JF/6DhgDtSuDWvXsvnceroHd6f4t8WZeXgmkc8TPShIhozLts7+/enPAi9EWqQr6K5QoQILFixg//79hISE0KJFCwBu3bpFnjx50rSvuXPn4ufnh4uLC7Vr1+bo0aMplp81axZlypTB1dUVHx8fhg4dSkxMTHpOwyZUxkRqEnULIYQQQmS6e/uTtnCnSg9RYcq26eETlPYs7HXrwi+/wKVL0K8fuLjAsWPQpQtNWn7IZ2dy8PjBLYbtHIbvLF++/O1LHkY/TLUqKXVDFymztK3wFWtTFBkgXUH31KlTWbhwIQEBAXTt2pUqVaoAsGnTJmO3c0usWbOGYcOGMXbsWE6ePEmVKlUIDAzkbjLzIKxcuZJRo0YxduxYLly4wA8//MCaNWv49NNP03MaNqE2NnXbrQpCCCGEEK+uaCsiImu2TW8W9lKlYP58uH4dvvgC8uTB49+7TFz/hAdz3fnuUC4c7j1kbOhYfGf5MmLniDR1OxeWs0UWeCEska7s5QEBAdy/f5+IiAhy5cplXP7+++/j5uZm8X5mzJjBe++9R58+fQBYsGABW7duZcmSJYwaNSpJ+UOHDlG/fn26desGgJ+fH127duXIkSPpOQ2bMHQqkinDhBBCCCHswNWKiMiabcG6LOz588P48fDJJ7BsGUyfjss//zBw5zP6hzqyvpYnn1Z9yJ48e3DSOFlXT2GWrbLAC5GadLV0R0dHExsbawy4r1+/zqxZs7h06RL58+e3aB/Pnz/nxIkTNG3a9L/KqNU0bdqUw4cPm92mXr16nDhxwtgF/Z9//mHbtm20atUqPadhE5JITQghhBDCjvL5p5LYzBwVuPko29qbmxt8+CH89Rf8/DPUqoXmeRwdDzzk0lwV239xRfXiu3FEbATvbnqXc3fP2bnSLwfJAi8yS7pautu3b09QUBD9+vXj8ePH1K5dG0dHR+7fv8+MGTPo379/qvu4f/8+Wq2WAgUKmCwvUKAAFy9eNLtNt27duH//Pg0aNECv1xMfH0+/fv1S7F4eGxtLbOx/XXIiIiIAJRlcXFycJaebCiXYjtfG22h/rw7D9ZLrlj5y/awj1886cv3SLy3XTq6vEBYwJDbb3xEl8E6tISRRsrOsQqNR5qh6800l8drXX6PavJl8Ow/CzvpQty672pRgaeyP/HDqB94o+wajG4ymVhHLh3aKpAxZ4M3N0z1rliSlE7aRrqD75MmTzJw5E4B169ZRoEABTp06xS+//MIXX3xhUdCdHqGhoUyePJl58+ZRu3Zt/v77bwYPHsyECRMYM2aM2W2mTJnC+PHjkyzfuXNnmrrCJ+fxIw2g4vSZP1D9e8bq/b2KQkJC7F2FbE2un3Xk+llHrl/6WXLtoqKiMqEmil69evHOO+/QsGHDTDumEDZjSGx2YrBpUjXnPEoM/vzBf8vcvJWAO7Wx1/aiUin9mf39lSnHpk+HFSvg8GGCDh8mrJAHE6pHsixuAxsubqBJsSZ86v8pjf0ao0rcXCssEhSkJJnfv19JmlaokHL5pYVb2Eq6gu6oqCg8PT0BJXgNCgpCrVZTp04drl+/btE+8ubNi0aj4c6dOybL79y5Q8GCBc1uM2bMGHr06MG7774LQKVKlXj27Bnvv/8+n332GWp10t7yo0ePZtiwYcbPERER+Pj40Lx5c7y8vCyqa0p+unWUK08fU6lSJVpV9bZ6f6+SuLg4QkJCaNasGY6OjvauTrYj1886cv2sI9cv/dJy7Qy9szLDkydPaNq0Kb6+vvTp04devXpRJPEEwEJkZT5BUKS9kpE8OlwZr23oPp54WXpbuHVauHPQNvuyRLlysHgxTJwI330H8+ZROPwx87fC1AMuzKj+nDnPdtPk6m7q+dQjtFcojhr5m5wehizwQmSEdAXdJUuWZMOGDXTo0IEdO3YwdOhQAO7evWtxIOvk5ESNGjXYvXs3b7zxBgA6nY7du3czcOBAs9tERUUlCaw1Lx5B6ZMZU+3s7GycUzwhR0dHm3xR1GiU+qjVGvnimU62+lm8quT6WUeun3Xk+qWfJdcuM6/thg0buHfvHitWrGD58uWMHTuWpk2b8s4779C+fft01+Wrr75i9OjRDB48mFmzZtm20kIkllxis/QmO0vs10oQ9fd/n928la7tGd1qXrAgTJoEo0fDDz/AzJl4Xb/OuL3w6SEHllTVc6lnHpOAW6/XS8u3EFlEuhKpffHFFwwfPhw/Pz9q1apF3bp1AaXVu1q1ahbvZ9iwYSxatIjly5dz4cIF+vfvz7Nnz4zZzHv27Mno0aON5du2bcv8+fNZvXo1V69eJSQkhDFjxtC2bVtj8J3ZJHu5EEKIl0W+fPkYNmwYZ86c4ciRI5QsWZIePXpQuHBhhg4dyuXLl9O0v2PHjrFw4UIqV66cQTUWIpPc3Ky8R900XR51UxlLHhacOfXw8FAGH//9N6xcCdWq4RQbT78jWmZ8tBU6dYKjR/nrwV+UnlOaBccXEBMfk2HV0WohNBRWrVLetdoMO5QQ2Vq6gu6OHTty48YNjh8/zo4dO4zLmzRpYhzrbYkuXbrwzTff8MUXX1C1alVOnz7N9u3bjcnVbty4QXiC2eg///xzPv74Yz7//HPKly/PO++8Q2BgIAsXLkzPadiE4Qlici3tQgghRHYTHh5OSEgIISEhaDQaWrVqxdmzZylfvrzF9/nIyEi6d+/OokWLTKYXFSLb0Wnh9CfJrHzx/e/EEKVcZnFwgK5d4cQJ2LULWrRApdMpGcFq10YV0Jgyh//mw839KTa7GF8f/JqnsU9tWoXgYPDzg8aNoVs35d3PT1kuhDCVru7lAAULFqRgwYL8+yLNn7e3N7VqpT174sCBA5PtTh4aGmry2cHBgbFjxzJ27Ng0HyejqF80dUvILYQQIjuLi4tj06ZNLF26lJ07d1K5cmWGDBlCt27djEPH1q9fT9++fY3DylIyYMAAWrduTdOmTZk4cWKKZTNyppGXIdO+nIOd3T1AXNRDcIc4XM2XiboP4fsgfwPL9qnTwv3DEHMbXApC3ropjw1PqXzDhsrr7Fk0M2eiWr2aUn/eYsufcLmAA1/Vvs3nj0cy5cAUmudoTvWI6hT0Mp8/yVKbN0OPHsrc1q4JLsnDh8pygLZtrTqEWan9Hmm1cPgw3L6t9MivWzdrJUPL1v8PXpBzML+v1KQr6NbpdEycOJHp06cTGRkJgKenJx9//HGyCc1eVoahMjJPtxBCiOysUKFC6HQ6unbtytGjR6latWqSMo0bNyZnzpyp7mv16tWcPHmSY8eOWXTsjJ5pBF6OTPtyDnbkvgSAkBfvZh2PALalccduQASwI7WClpXv2BGXxo0pvnkzfjt3UupOFD9sgsl71cyq9YgFNdewZ+EeFpRfgEaV/mhUo1F6t6dkW1ovRRqk9nvk5gYREbDD0suaybLt/4ME5BwUls4ykq6g+7PPPuOHH37gq6++on79+gAcOHCAcePGERMTw6RJk9Kz22zJ0L1cxnQLIYTIzmbOnEmnTp1wcXFJtkzOnDm5evVqivsJCwtj8ODBhISEpLivhDJyppGXIdO+nIOd3T1A3G8dCXFfQrNnfXEk2ny5RluTb+k2tFTf2gqX55kp8KIVp94KKJKgifjmZjjUg6R9KhOVv7lZ6QIfdRNcgE5Ap0Joz/mj/t9uCvz7L1N2w+f7VZxp7cdrnSuDry96vZ7rT67jl9PP0qvBgQPQunXq5bZuhQYWNvxbKrnfo4Qt7wkZGsdWrMiYlve0ytb/D16QczBl6Swj6Qq6ly9fzuLFi2nXrp1xWeXKlSlSpAgffvjhKxV0G7uXS9AthBAiG+th6BNqpRMnTnD37l2qV69uXKbVatm3bx9z5swhNjY2SfLTjJ5pxNb7shc5Bzsp1BDccgPgSLSZoFulZDEv1NB8F/Gw4KTzh5ulgtNDoGh7ZT86LZweDCTXkvaivFoLh7qQNDC/ChWuQugqOPQc/bRpuP/5J/XWH4NNZaFzZw50qUujM0PoUqELoxqMonKB1JMe3r4N0ck8d0hcLqN+1Al/j7RaJbdccg2OKhUMGaLMw51Vuppny/8Hicg5/LcPS6SrH/jDhw8pW7ZskuVly5bl4cOH6dlltqVCEqkJIYQQBk2aNOHs2bOcPn3a+KpZsybdu3fn9OnTdpttRIh0U2ug6tQXHxJPwfXic41ZyQfc+ztaEHAD6CEqTJlTHJT3FLd7Uf7Yh5jPLvRi2dkR0L0b8SdOcGjsWHSvv65EqqtW0eCNQexYpuPBhlVUmV+FtqvacvjGAbgTCtdWKe+JEsQVKmTBqaShnLX274d/U7hMej2EhSnlhLCXdAXdVapUYc6cOUmWz5kz55WbFkQSqQkhhBD/8fT0pGLFiiYvd3d38uTJQ8WKFe1dPSHSx9Dl262w6XI3b/BfZ36ebp1WaeFO67fE6HDT99TE3k9hZYJAXqXiXrVqaLdvV7Ked+0KGg1Nr8KOH+HMfMi1dguNFvkTsLwxO0O6od/VGDb5mUyJ5u8P3t7/dd1OTKUCHx+lXGYIt/AyWVpOiIyQru7l06ZNo3Xr1uzatcs4R/fhw4cJCwtjW0ZmTciC/hvTLWG3EEIIIcRLreVZePy7EhC7FoJ8/slnHU+1pToZroVM320hcQBfvbqSCW3KFJg5AxZ9T+W7MfxvA0zeDbPqwPi60Kw0/81F/uLhgkYDs2dDx45KgJ3wK7AhEJ81K/O6clvaon75csrrtVqlNTw8XNmnv3/W6Y4usr90tXQ3atSIv/76iw4dOvD48WMeP35MUFAQ586dY8WKFbauY5b2X/Zy+9ZDCCGEyKpCQ0OZNWuWvashhPXUGigQAH5dlfeUpvmytKXaSAVuPkogD8q7mzdJu7QnKO+cz7JdJxfAq09AQDDMioEuQE7wfgrfhEDoNFCtAh7oidTpWRHyHnFxMQAEBSlTghcpYro7b29leZCZhv+MYmh5T82iRUpgbY7MOS4yWrrn9ipcuDCTJk3il19+4ZdffmHixIk8evSIH374wZb1y/LUKsmkJoQQQgghEklTS7WZseFqDdSYbbo+cfma81IPzBMG8gklHG/uDrQDZgHvAYXBMQbYCgyFG9/B18ceUupbP+YenUt0XDRBQXDtGuzdqzSa790LV69mbsANSmv0e++lXu7ff82P6w4OVlrtE48Lv3lTWS6Bt7CFV2dC7QyieRF0x0tTtxBCCCGEMEi1pTqB5MaG+wQpy92KmC/v2zH1wNxckrfkxps7AgHAVGA4UA7QQvmj8McCWDD/DsFzB+I3y5evDnxFZNwTAgKU4eEBAfbrjl2qlGXlEo/rNmQ+N9d2Zlg2ZEjyLeRCWCpdY7rFf1yclOcWMXE6O9dECCGEEEJkGYaW6v0dUQJgM5FdmSHg3T7lseE+QVCkvTJG3NxYckNgfnwQRN/8bzvXIlBztvkkb6mNN1cD1V68rgBbQX8UWlxRXicL3uPr+qMpXm0KA+oNZnzAeGOeI3tIb0b1tGQ+DwhId/WEkJZuazk7KJcwNl4egQkhhBBCiASSban2Af9foMbM1MeGg4VjydMQ9KZlvHkJYJAK1dxC8OGH6F1dqX4bVv0CJ76OoNj/NqF69szy/WWA9GZUl8znIrOkqaU7KJVBGo8fP7amLtmSg1oJuqV7uRBCCCGESCK1lmprGcZmJ25JjzbNOm4iPePN28yB/kGovvwS5s1D/913+N27R59lZ2CDD/Tvz/Ue7ZhweTEj64+kdJ7Sye7R1pnC05tRPavNOS5eXmlq6c6RI0eKL19fX3r27JlRdc2SNC8m6tZK0C2EEEIIIcxJS9bztEhxLvAXy04MUcolZM148zx5YMwYVNevw8KFyoDqx49hyhQKV65P3XE/8MbYMnRZ14XTt08n2V1aM4VrtRAaCqtWwYEDyVczPRnVU2shB8idW6mDjOsW1khTS/fSpUszqh7ZlgTdQgghhBAi0+i0/7Wax9xJZS5wPUSFKeVz1/9vcYrjzV98LjMECrdRPsbchTuhpi30rq7w/vvw7ruwaRN8/TWOhw7xzil45xRsDlnLoHpr8WjSgk8bfkaDog2MmcITJy4zZApPHBwHByuJzgzjrl1dleB782bzQXRQELRvn7ZW9Pfeg7Fjk1//8CE0baoE57NnZ352dvFykERqVnKQoFsIIYQQQmSGsGClZTvFQNsMc2O4DePNE+/PzVvJeA5wpLeZdYmSs6nV8MYbyuvQIfj6a/QbN9L2Lz1t/4IjIdv5pt52prVrzcnRm9HrkzYr6/VKa/OQIUrQrNGQbIAO0KOH8m4uANZoLEt6ljigT01yDwaEsIQkUrOStHQLIYQQQogMl3Be7bRKbgy3TxC0uwZN9kK9lcp7u6vKOnPHinoxTjwsmb7g9erB+vWoLl6EDz5A5+xE7Zvw88+waNhB2v87D1eiAD2oTPtrJ8wUntJUXgbWTOWV3NzcKZEpxIQ1JOi2kiHolkRqQgghhBAiQ6Q4djslKiVTej7/5IskHm8O6RsnnlDp0rBgAeobYfDFF2hz56LAvcfMZSA3KMq4nD3J27c0VFsCmucmm4aHp20qr7SyJKDPiOOKV5sE3VbSvMi8EBOnRSeBtxBCCCGESCudVhkzfW2V8p44oE1tXm2zXnTjrjErbYnbUj1WgnHiqcmfH8aPR3MjjL8GzeEKxcnLA8Y+/pEby/9hvvodSvYoiqr2LBpU3M5bdVdRLncot29Z1pScnqm8UgvoM+q44tUmQbeVImLiAFh/Opy3vv/dzrURQgghhBDZSlgwbPKD3Y3hUDflfZOfaRfutMyrbZA467ilLD1WWurk7k6JGQNoUuQSnVnLUVV1XOOh3wm4tOwO654MxbNuSyp164bf3ca8ofajQ81kurAnkJ6pvGwRMMsUYiKtJOi20g8Hrxv/ffTaQzvWRAghhBBCZCvJjdNOPHba0nm1q880HZud1oA7LcdK01zfSoKzGd86sE7ViTr64zQilGM5qqEGgi7CtkXQaBpMDgHn+H9ZN6QjQa+ZD7xVKvDxUTKTp5U1AbM1x30ZJZzOLTRUxrqnRIJuG7t856m9qyCEEEIIIbK6tMyxneq82i/Gbpf+yPq5wC09VkrjxJNhnEvbW8UBVQMKTriHbiroGoHWAeqHwbQVoBoJqr16vuryEepc/5jd16xZKU8FlhxL5uaGpOsNn9N73JfN5s1pm2/9VSdBt5Vq+eUy+Xzs2iM71UQIIYQQQmQbaRk7bZhXG0gaDKdz7HZyMvhYQUFw7Rqc+HU/Pnn+Re0N6vdBMwv0bUHvBoSD6gcoMv4Wn1UpSe5Wb0HeC8Z9rFiR/mm7NBplvm0wH1irVDBiBBQpYrrO21umC0uoR4+kY+MN06pJ4J2UBN1WWvh2NZPPn64/y/pT/6JPT0pEIYQQQgjxakjr2GnDvNpuiaLB9I7dTkkGH0ujgaplEp1/LlC9BapvgbeBPOD2FL4M1XMjZA3fFS9P20/a8HfU37Rta36/lnZ3Nra4JxNYT5umPBjYuxdWrlTer16VgBv+u6bmQh2ZVi15DvauQHbn4Zz0Eg5dc4b5oVeo7J2TbzpVsUOthBBCCCFElpaesdM+QVCkvdL6HR2urMvnb5sW7sQy+ljJnb8r0BJoBhyBZ3u8cb/4LwOPQv9jO1lXfidD/lpL517TaOTXyLhZcLAyFVjC1ldvb6VV21ywHBQE7dsr2czDw5Wx3v7+/3Ud12ggIMA2p/oyOXw45fUJp1WT6/cfaenOIH/diWTdCSvnIxBCCCGEEC+n9I6dTjyvdkYE3JlxrNTO30EFzXxw//Mq7NrF08b10eihyzmYO+4ouVu9CVu3gk5HcLDSrTmt3Z0NgXXXrsq7jNVO3e3blpWTadVMSdAthBBCCCFEZsvMcdpZkaXnr3GAJk3w3HOAuOPH+athHbQaNZUuPIA2bdBXqsT+Ad/gWG4FqEz7NEt3Z9srWNCycraYVu1lyo4uQbcNNCmss3cVhBBCCCFEdpOZ47SzotTOv0h7uBMK11Yp7xUrcGHYKHSX/4bhw8HTE9X588y8PYKrN3rySd385Kg8GzSxxl0l7O4srFe3rvKeXPZ3W02rFhz8cmVHl6DbBtr56rg8obnZdU9j4jK5NkIIIYQQItvwCYJ215S5ta2dYzs7Su78ATb5we7GcKib8v5rJWW5tzd8/TWEhXGq6zT+dcpB4Uj46tBDwi4OYXqVPPhU+wKcIo2Hke7OtpGwC35GTauW3uECWZkE3Rms0ridLD141d7VEEIIIYQQWVVmjtNOSKc1bUnW2an/buLzv7kR9ndMOqVa1C3l/eZm5T1HDp68P4Liz+/SU7OQP9wK4fkchp18xj+nJ/BjiTxUrTwMSF9355epe7OtrViRMdOqabVKQryXLTu6BN02NKOz+Uzl4zefJ+DrvQTNO0icVrqiCyGEEEIIOwsLTtqSvMlPWW5POi2cGAyYm373xbLTo4wPCPz9oYC3Ez/q3qdK1E1aqDex27MsDnrofuE5p/6YyT7nZvhH7zQfySXjZevebGtt22bMtGr79ydt4U4ouw4XkKDbhoKqezOzi/nA+9qDKE7eeMyBv+9ncq2EEEIIIYRIICw4mZbkm8pyewbe9/YnrVdiUf8q5VC6Mc9+kY9NpVKxQ9eWpk8vUF11hFU56hKPBv/YXWhaBRJZvhRLhzXh6t2/Utz9y9i9OSNkRPZ3S4cBZLfhAhJ021iHat40Kp0v2fXxWsufsAkhhBBCCGFTlrQknxhiv67m0RZGUwnKBQUp3ZoTdnc+pa/FJ16H2DX/b6W/srs7Hhev0GfmHhxKlWFl7xpcuHIkyW5f1u7N2YWlwwBskR09M0nQnQF+6FWTMgU8za7T6iToFkIIIYQQdnL/cCotyXqICjO2JGc6VwujqUTlgoLMd3du0c9Pyex14wb/DH+Hhzmc8ImAbstPUrhCHda3K8Wp41uM+3lZuzdnF/7+ytjwjM6Ontkk6M4ADho1K96tZXZdvx9P8Ntf99CnYUyJEEIIIYQQNhFz27JylrY421o+f2XKsCRzdyfg5q2USyTF7s65c1P868Xkvv2Ea998zr+FPckRCx02/02F2m051KQ0/PnnS9u9ObswHS5gus5W2dHtQYLuDJLf04XPWpUzu67XkqP0XHIUnbR6CyGEEEKIzORS0LJylrY420LCLOr39kP1GS9WJA68X3yu+lX6M7y7uOD38QS8wx7z74/zuFihAE46qLfnMlSqRPNZLWmsCgFS7j+e3bo324JWCwcOKP8+cCDjutibGy4AtsmObi8SdGeg9xoW54OGxc2u23/5Pu3nHiTqeTyHrzwgXrKaCyGEEEKIjJa3biotySpw8zHbkpwhzGVRPzkMyg0Ht0RRl+FzkbbWH1etxrt7f8r+eZvwkPVo3wwCtZo8R7ezR9+c4/k86FJ0ABpVjMlm2bV7szlpmRLNkM29dWvlc+vWGZvNPbnhAtkx4AYJujPckKalKZbX3ey6szef0G3REbou+p35oVcyuWZCCCGEEOKVo9ZAjRf9d5NrSa4xK3PmCk8pi/qFb6DaTGiyF+qtVN5b/pEh1SjU9A00636Bv/6CDz8k2lFFjXsxrL4xj8uennzk0xl3zf1s3b05sbRMiWavbO4ZkR3dXiTozmCuThr2Dg9Idv3psMcA/HTkRuZUSAghhBBCvNp8gsB/nZmWZG9luU8mNCdakkX91DClxd2vKxQIyPgHASVKwNy5PP/nMuvaNOGeq4piEfF8G/YzNxzzM614E35e+He2bW01SEsQLdncbUOC7kyy5aMGKa7XSWI1IYQQQgiRWXyCoN0105bkdlczJ+AGC+bjtl8W9RzeJei4eRcu/95lde9O/JPHgdwxeoZf2UO7D8vAe+/BxYuZXi9bSGsQLdncbUOC7kxSsUgOjn/eNNn1d5/GsuTAVU7deJSJtRJCCCGEEK8stUZpQbZ1S3LCxGh3Qs3P+Z2O+bgzm2fuvLy1dC3etyLY8/UATvm54Bivg8WLoVw5Ylu34N72YPMRbBaV1iBasrnbhgTdmSivhzNj2pRPdv2XW87TYd4hvt6RPZ+cCSGEEEKIV5y5xGib/JTlCaVzPm57cHJy5fXhc6hyJVKJRtu3B5UK5207yNfyTf4pW5Dby+Zkiz7WGzdaVs4QRFuapf1VzOaeFhJ0Z7J3GhRLscUbYO7eKyw5cJU4rU6mFRNCCCGEENlDSonR9nc0DbxTnY87k7OoW0Ct1kCDBrBhA/rz59nW2IcYDRT/6y4F+3zEbe+c3PzqM4iKsndVzQoOVpLAWcIQRPv7K1N1JZ4z2+BlyuaekSTotoO8Hs5c+6o1FYt4JVvmyy3nKfXZrxT/dFsm1kwIIYQQQoh0sCQx2okh/3U1z0pZ1NNBVbYsrfbc4MyRjax6oyQPXaDg7UiKjJ7Mk4K5+HfYu3Dvnr2raWQYy52axEG0RgOzZ/+3LnFZsC6be1qmLcvO7B50z507Fz8/P1xcXKhduzZHjx5Nsfzjx48ZMGAAhQoVwtnZmdKlS7NtW/YMTGd2rmpRuTiZw1sIIYQQQmRl6UmMlhWyqFupdo12dF1/mX/PHWJp32pczQk5nj7He+YPULQo9O8Pf/9t72qmOpbbQK9PGkQHBcG6dVAk0Y/J21tZnt5s7mmZtiy7s2vQvWbNGoYNG8bYsWM5efIkVapUITAwkLt375ot//z5c5o1a8a1a9dYt24dly5dYtGiRRRJ/BuQTZQq4MnlSS1Z8U4tqhfNmWy5b3df5ocDV/l0/VmOX3uYeRUUQgghhBDCEulNjGbvLOo2Url4Xfr8cJK4i+dYMKIxz6tVhpgYWLAAfenS3GxeB/3vh+1WP0sTnQ0ZYj6IDgqCa9dg61bl89atcPWqdQG3Peb+thcHex58xowZvPfee/Tp0weABQsWsHXrVpYsWcKoUaOSlF+yZAkPHz7k0KFDODo6AuDn55eZVbY5R40a/1L5qOGbi/Jf7DBb5rs9/z0dW3nkBhsH1KeKT85MqqEQQgghhBCpsCYxmiGL+kugdIHylJ62R2ky/u03+PprVNu2USTkCIQ0omKpwujiZkHQm6DOvPZPSxOdtW+f/DrNiyHt27Yp79Z0KU9p2jKVSgn+27dP/zGyGrsF3c+fP+fEiROMHj3auEytVtO0aVMOHzb/FGjTpk3UrVuXAQMGsHHjRvLly0e3bt345JNP0CTzE4mNjSU2Ntb4OSIiAoC4uDji4uKsPg/DPqzdl6MKjn/amJqT96Zatv3cg1ye0Nyq42UFtrp2ryq5ftaR62cduX7pl5ZrJ9dXCJFtGBKjRd3E/LhulbI+CyVGy1AqFQQEoG/UiDlL+5Nr3hI6n4qjxOVb0Kkzj3wL4D5qDE693wEXlwyvjiEh2s2b5oNdlUpZnxkJ0dIybVlAQMbXJzPYLei+f/8+Wq2WAgUKmCwvUKAAF//f3p2HRVX9fwB/zwwzA8iqrAKCK7gruIF7IG6VppapuZalaWloqZV7qW2mlWnf3PpVZmlamuaGorgrbriLguICIiogIAzM+f0xMjEsMsAsIO/X8/jIvffcO+ecmWHmwzn3fIpJNn/t2jXs3r0bQ4YMwdatWxETE4O3334bKpUKM2fOLPKc+fPnY/bs2YX279ixA9bW1uVvyBM7d+40yHU+aQV8fLzkp+WHP7bCy8YgD2l2huq7qor9Vz7sv/Jh/5WdPn2XUUFXwCUiKiRvYbTIAdAshJY/sivHwmjqXM194Jl3ALmbYepqQhKJBO+MWobUIZ9j2ZZ5yF28CCOPZMHxeiIwdjwyP5oGq7Apmnu/q1cv8+Pk5mqC1Dt3NKPaHTvqjhLnLYg2YIAmwM4feBtiQbTSqIq5v806vby01Go1XFxc8L///Q8ymQwBAQG4desWvvjii2KD7mnTpiEsLEy7nZqaCi8vL4SGhsLOrvjVw/WlUqmwc+dOdOvWTTvlvbx6dVfB/9Onj3h/Ga156lYO90dg7eqwkJl9TbxSM0bfVSXsv/Jh/5UP+6/sStN3ebOziIgqhbyF0aIm6C6qZu2pCbhLe592/IYC17ICqv0G3NoM+FSue77tlHYY+8JcbJT4Y63ddSR9Ox/D9zxArftpwMcfA/PmAa+/Drz3HlC7dqmuvWGDZrp2/tFjT09NkJ3/nuu8BdGKKrtoUdnvzy6tqpj722xBt5OTE2QyGRITE3X2JyYmws2t6L9iubu7Qy6X60wlb9iwIRISEpCdnQ2FQlHoHKVSCaVSWWi/XC436BdFQ16vulyOVt6OOH79QYllR/10AlN7+mFM57oGeWxzMPRzUdWw/8qH/Vc+7L+y06fv2LdEVOl49QM8+vw3Om3lrplSXtoR7ryc30VNVT84FJChciy2VmCkXilV4vVOE4EuE/HHqV/x8jkBxcLFwOnTwLffQr3kOzzu+zysP5wJBAQUecn8o9pXrgCzZhWeMp63IFnB1cX79dPcK/20UXFjq0hT3U3FbMOjCoUCAQEBCA8P1+5Tq9UIDw9HYGBgkee0b98eMTExUKv/S6F1+fJluLu7FxlwV2a/jm6L3ZM64/TMku/dXvDvRfhM3YLvdl/BiRsPIIp69RIRERERmULewmg+gzT/l2VKebE5v5/In/O7oorfAGzyAcK7AgcHA3t7a/bf2gy5TI4hASOgGDYSOHkS6u3bcMDPGlK1gPWGzUCrVsjo2E6zalm+7/YF02zNnFn8gmSAZkGygrmvZTLNvdKDBmn+N/ViZcbO/V0RmXVOclhYGH788Uf89NNPuHDhAsaOHYv09HTtaubDhg3TWWht7NixuH//PiZMmIDLly9jy5YtmDdvHsaNG2euJhiN0kKGOs42sLeSY9WI1nijQ8nTTL7ccRn9vj+IRbuuIO5eOn4+FIfsHOb4JiIiIqJKpCw5vyuavJH6otpxcKjmeB6JBJJuocj45y+8MacVfm4GqKSA9f4jQO/eyGxYH1i9Ght/zy4yzVZx8i9IVtEYK/d3RWXWe7oHDhyIpKQkzJgxAwkJCWjRogW2bdumXVztxo0bkOZbSt/Lywvbt2/He++9h2bNmsHDwwMTJkzAlClTzNUEk+jq54Kufi7wc7fDwZh7GPdcPQR/tbfY8ovDr2Bx+BUAQHJ6NiaGNDBVVYmIiIioKso/jbqsU8rzlDXnd0Wh70i9Rx9tH0kkEnSr2w3dpnfDwWGReHP9RDT+8wTejALsLl0FRo5EkPRDvC8m4Ae8hRQ46F2dirogWUWY6m4qZl9Ibfz48Rg/fnyRxyIiIgrtCwwMxOHDh41cq4ppQIAnBgR4AgB8algjLrnkVW0X7bqCPRfv4s+xQZVysTUiIiIiquAKLXiGJ4unLS7bfdflyfldEZRmpL5gfvL4DQg6OQFB7jdxZjTwXi+gxj5g5nFbuD64g88wFR/jE/yIN7AI7yEetUqsTkVekCxvqvuzjlFYJTWuaz29y56+mYI5/5w3Ym2IiIiIqEoqbhp1xi3N/vzTqPWVl/MbkmIKSABrr4qb87usI/UF+rKZElhRBxg3BLBamIZvfcbhLBrDFo8QhkW4ijr4GUPQDKeLvLxEAnh5PVsLkpVGbi4QEQH89pvm/4L3tpsSg+5K6oXmNdHGR/9cfv936DqOXEuGEAJ/Rt3E5cQ0I9aOiIiIiJ55T51G/WRfWRY8y8v5DaDYwLssOb9NpSwj9U/pS285IJEDfd7bhGaS4+jVtzr2+ABy5OI1rMFptMB2hCAEO7XnP6sLkumr4IJzXbtqtjeU4W9AhsCgu5KylMvwx5iiV3kvzsD/HcaiXVcwad1phH69Dyv3xyIjO8dINSQiIiKiZ5oxFzzLy/lt7VH4WNDPFTtdWFlG6kvoS4kEqOUUj85+B/Hv9st4zmcGWg2zxdrGQK4ECEU4diIUJ9EcQ/ALfDxUz+SCZPrYsAFFLjiXl0Zt82bT14lBdyX39cDmcLSW45O+TfQqn7fAGgDM+ec8vth+yVhVIyIiIqJnmbEXPPPqB7wYBwTvAYLWAJ23aPZ7vFC265VEnQskRgBxv2n+L2tKsrKM1OvZR+4OdyDJdAQiZiNq7S0Msv8C9V53wuK2QLocaIFo/IKhuCqpi35xC4G0qjW7NTcXmDDh6WnUpk41bZ0ABt2V3kstPXFieje81s4bIQ1dYGtZurXxVh2Iw2vLj2DoiiNGqiEREVUl8+fPR+vWrWFrawsXFxf07dsXly7xD7xEzyRTLHiWP+e3S4eyX6ckBXNqh3fVbJflnnSg9CP1evbRmJBl8Kh+S7ORbQscnIycXfE4//pSdJ1bF/c/mgS4uEASHw9MmgS1l6cmyrx9u2ztqGQiI5+eUk0I/VOuGRKD7meA5MlNG8uHt8bpGaGlPn9/zD1EXrmHQ1eTDV01IiKqYvbu3Ytx48bh8OHD2LlzJ1QqFUJDQ5Genm7uqhGRoVX2Bc/yGGMxOKB0I/Ul9qVGJ7/9iFvsgz0fdcGaxQexZw8QF2OJH0aPwZEPrqD6J18C168D//sfbtW0gTQlFfjsMwgfH2DkSODcubK1pZKoqOnRzJ4yjAxLKpXgs/5NkZqZgz9P3MTFBP2nlAz68b9UbBvfDkLLWo7GqCIRET3Dtm3bprO9evVquLi4ICoqCp06dTJTrYjIKPKmUUcOgCZYzD+n90nwWJEXPAP0WAxOUiindqnkjdQDgEoFYGvx5bR9+XQyqRpdGu0FgrMB1//25w3EwdISWSOH4WWsgNPuI3j/INDxhgpYvVrzr1cvYPJkTa4uydOD/MqmoqZHY9D9DBrYWpOvb3iQDx5mZmPhjstYeyy+VNd46fuD6NzAGSuGt2J+byIiKrOUlBQAQPXqxWfcyMrKQlZWlnY7NTUVAKBSqaBSqcr1+Hnnl/c65sQ2mF9lrz9gxDa4vQAErQdOTdGMDOex9gRaLNAcN9BjGqUNd/cDGckArIovk3EPuPAdUO+tcv0BocT65/XlySlA5q2iywDQzCDwABzaFdu3UkgRMXwf9nTeg1mHPkd65G68fxB46QIg3boV2LoVan9/qMPCIPr1Ayz0CwtN9V7IzQUOHQISEgA3NyAwUL9V2Nu1A+rV08ymL+q+bokEqFPHcG3Q9xoSIYqqzrMrNTUV9vb2SElJgZ2dXbmvp1KpsHXrVvTq1QtyudwANTSOxNTHaDsvvNTn9WjshmVDA5CTq8aBq8nIzM5BVz8XKC3K/xfLytJ3FRX7r3zYf+XD/iu70vSdoT+zTE2tVuPFF1/Ew4cPsX///mLLzZo1C7Nnzy60f82aNbC2tjZmFYmIqoTL6Zfx590/kXztCN47BLxxWgaFSrNQXLqrK66+8AJuhIQg19LSzDWtXDIyMjB48OASP6c50l1FuNpZYu/7XfDDvmsY3bEOMrJz0Pub4r8A5dl2LgE+U7fo7BsR5INZLzY2VlWJiOgZMW7cOJw9e/apATcATJs2DWFhYdrt1NRUeHl5ITQ0tNx/bFCpVNi5cye6detWaf9AxDaYX2WvP8A2FOvufmBvbz0LP5mKHfRz8Suoq3OBe4eAxwmApRvgFKgdHS91/W9tLn4GQSlXcO+FXpiIiTiXdA5Lji3B4xZTIVu+GtKlS1EtMRHNli9H0w0boH7rLajffhtwdS3yOsZ+HW3eDAwdWniUOm8W/M8/Ay/o0fTNm4EpUzRpwvJ4egILFgA9ehiuDXkzs0rCoLsK8a5RDfNealru66w+GIf3u/uimpIvHyIiKtr48ePxzz//YN++ffD09HxqWaVSCaVSWWi/XC432Jc6Q17LXNgG86vs9QfYhkLcOwHWNZ4EtvpMAJYApyYCtYq4xzt+g+b+8PwLsll7au7Vzrdaud719+mneZykSE1KMSt3zYJr5Zji3qJmC/zY50fNxty5UE+dgk/eaIBB2++g3v37kM2fD+nChZAMGwZMmgT4+hZ5HWO8jvLSfWVkFH1cIgEmTgT69Cl5qnm/fppykZGaxdXc3YGOHTXn5c0IN0Qb9D2fN+tWYQtfaV7mcxvP3I6Yu49wMSEVanWVukOBiIieQgiB8ePHY+PGjdi9ezdq165t7ioRERVPn5zaOgSQEa8JhPMz1gro+VOmuXYx+KJ0WQoZ0ka9hoBJ1dD/FeCwByDJygJ+/BHw89NErvv3F32DtIHpk+4rPl5TTh8ymWatuEGDNP/rc0+4sTDorsL6+XsibkFvnJkViqHtvEt9fsjCveixKBJ1PtSswiiEQBVbIoCIiAoYN24cfvnlF6xZswa2trZISEhAQkICMjMzzV01IqKiPS2ndnEy8+WmKnEFdGhWQFfnlqOSxmElt8Ln3T5HXFg8Wrw9B73fcUSHkcDfeQPcmzZphoiDgoANGzTD0Uaib7qvipoW7GkYdBPsLOWY27cJTs8IxaRuDcp0jYMx99Bv6UEM/OEwR76JiKqwpUuXIiUlBV26dIG7u7v23++//27uqhERFS8vp7b/1/qVt8qXmyopsvAIt44no+P3DpWnhkblaOWI6Z2n4/p7N9B/9EK8/WZN+I0D4gf2AJRK4PBhoH9/WDRtCp9t2wAj/CFV33RfFTUt2NMw6CYte2s53gmuj+hZoejR2K1U5w5efgQnbzzE0bj7mLf1Arad1SzA9sk/541UWyIiqojyZj0V/DdixAhzV42I6OmkMqDBO5r7sIudai4BrL0091bnydRz6PVxQnlraHQ2Chu8F/gerr17DXPG/g7P37YCcXHARx8h09YKkpgYNF+2DBb16gFz5gD37pXr8XJzgYgI4LffND97eBSfOlwiAby8NAPvlQ2DbirE1lKOZUMD8M5z9dDEo/Srxi7fH4sxv0RpfyYiIiIiqhSeeo/3k+2ARbr3VlvpOfRq+WRQ6+5+IO43IDGiQk45BwClhRKvNH4FEokEcHPDoxlT0WCyEu/2AGIdAElSEjBzJlCrFjBuHHD1aqkfY8MGwMcH6NoVGDwYCAkBHj/W3LtdMPDO2160yLz3ZpcVg24q1qRQX/zzTkdc+qQHvnq5Od7uUrdM17n5IAO7Lybyfm8iIiIiqviKu8fb2lOzP99K5AA0o976jI5nJWs29/YGDg4GwrsCm3zKvsiaCVWTV8PSV3/Gsf7tUP8dYOAA4HhNaKaZf/89UL8+MGAAcOSIXtfbsEFTvODCaffva/6vXl13v6cnsH69ZlXyyog5n6hESgsZ+gdo0r2octX4MbJ0o9cdPtsDAPh+iD9c7ZRoXNMeyenZcKnGlx8RERERVUBe/QAPPdN15Y2ORw6AJvDOP9D0JBD3fhU4PByotkb33LzVzYsK5isQiUSC5xs8j1CfUHz+x+fYV28fWjfeiS5xwPsHgF4xAvjzT82/jh2ByZOB558HpIXHePNSgxU1Hpc3ym1lBezaBdy9q5vuq7Ji1EOl8lHvRviodyMAwNWkRwj+aq/e57796wmd7V9GtTJo3YiIiIiIDCYvXZc+8kbHi8rT7f8VcCIMxa9uLtGsbu5RRO7vCkYikaCpbVNM6TUFZ5LOYP7++ehT92/EdP0L3ivWA7/+qsnpFRmpSTk2aRLw2muApaX2GvqkBrt5UxNkDxpkgkaZAKeXU5nVdbZB3ILeWD8msEznv7byOGZEyXDwajKycirm/SxERERERHrJWwE9eA8QtEbz/4uxgNJZv9XNC+b+ruACagZg/SvrcWPiDXh36A2sWgXExmJTHz88spIBFy8Co0drbtyeN087d/xZTg1WHAbdVG6tfKpj49tBqO1UrdTnpmRLMHx1FHw/3oY3fjqOlAwVzt5KMUItiYiIiIiMLG903GeQ5n+pTP/VzfUtV8G42/63kNz96lYY3CYeNSfkYlIokOBgASQmAh99pFl0bcIE1JbE6XfdSpgarDgMuskgWtZyxJ7JXfBeSNnyfAPArguJaD5nB57/dj9eWXYIO85V/LQKRERERERPpe/q5vqWq8CqW1XH1XevYlzwVCzvagevd3Iw9CXgQk0FkJ4OfPMN2r5WD39ZDYI/ThR5jcqcGqw4DLrJoCaE1Me1eb3Qr6UHPBysynydo3H38ebPUZiy/gxG/99x/HE83oC1JCIiIiIyEX1XN3d+NqJMV2snzG/aHdf7fYXZga9jW6ATGo3ORuhrwI3WDSDJzUWfzLWIQgB2IRjdsQ1597s/LTVY/pzeERGa7cqCQTcZnFQqwcKBLXBg6nPoUM+pXNf6/Xg8dp5PxAfrz2B55DW88O1+XE5MM1BNiYiIiIiMTCf3d0HF5P6urOI3aNKghXeFw/HR+PDBClyvq8DidqNwt31zOEYeB06eBIYMgVoqQzB2Yxt64gyaYRh+Qm2P7CJTgxXM6d21q2Z7Q8XPtgaAq5eTkf38ehukZKrgYK1ATq4a/55NQEZ2Dqb8GV3qa32y5QIAIPTrfTj6YTAkEgmcbZWGrjIRERERkWF59QOCAJwusN/aUxNwV+B0YXqL3/AkbZruKu3Wj+/g3cer8E6vdZAobYEWLSB+/hnPNz6Fnlsu4Y3jEjTNOoufMAJCfATJ1QlAypuAvT2A/3J6F0wxduuWZn9lyN/NoJuMSiKRwMFaAQCwkEnxQvOaAFCmoDu/NvPCtT+PCPKBvZUcr3esDTtLebmuS0RERERkFB4vAKe3Ap23AKqEp+f+rojUucDd/Zqf7+4H3Dv9V3d1riZd2lPSoklOvAd49gWkMiRlJOFOdTne7ZaD6R2At0/I8EGUEg63bgEffADMnQu8+SZyx0/AhAleT83pPWGCJj6vyDm9Ob2czM7ZRlGu81cfjMPi8Ct48/+OQwgBVa7aQDUjIiIiIjIwlw66q5tXBnnTxvf21mzv7a3Zjn8yvzspslRp0VyqueDEmyewdfBWNPXtgPntc+H6dgZG9ZUg3sseSEsDvvoKknp1MO/mUDTFmaKv+iSnd0hIxZ52zqCbzOLzAc0AAAFOahyc0gWbxrcv9zUPX7uP2tO2ov5H/+LDjeUbSSciIiIiIvw3bbxgUJ1xS7M/fkOZ0qJJJBL0rN8TkSMjsW/EPgT79cSqFgLeI1Nw+IfpQJcukObmYCh+wRk0xzZ0RzB2oejR9P/kTTuvSIE3g24yi1daeSHy/U4YWk8zKt3M0wE73uuEYYHeqGlvidfa1SrX9dccuQGfqVsw8IdDuPUwE9/tvoKYu1yAjYiIiIhIbyVOGwcQNRGwdNHvesWkRevo3RFbh2zFiTdP4L2gMLQZPQvYswdRy47hd7t2yIUU3bEDu9ANJ+CPQVgDC6iKvFbeVPSJEyvOCucMusls3OwstWkBAKCBqy3m9GmCg9OC8UnfpuUOvAHgSOx9tF+wG1/uuIyQhfuQnpWDfZeTkJldQd6BREREREQVlb7TxgUMkhatpXtLfNX9K0glmjC1wfBGGDw2BvXfVeObxi5IlyjREqewBkMQg3qYiK9hg8IDa0IA8fFAZKRerTQ6Bt1UYc15sQm6NXLV2ffn2KByXbPxzO0YtvIoGs7Yhs2nb+Nq0iP0+W4/dpxLgBACiamPy3V9IiIiIqJnhr7TxrPu5kuLVjDwLntatByRhR6egxFra4UJL99Frfez8HFbZyRa2MEbN/A1wnADtTAP0+CGwnW9o2f1jY1BN1VYUqkEPw5rhV1hnQAATjZKBHg7Ys3otga5/ju/nUTwV3tx+mYK3vw5Cl2+jEDbeeFYHnnNINcnIiIiIqrUipkOXmQ5r35Ax/WAtYfuMWtPzf4ypEVztHLElvGLsbLZddie/Bj3pfb4tGcSvKekYnRwdVySe8IRDzENCxAHH6zAKDTEee357npW39gYdFOFV8/FFpEfdMW+D7oAABq62Rnlca4nZwDQ5ANfsT8Wx+Lu43T8Q6M8FhERERFRhefcsXTTxr36AS/GAcF7gKA1mv9fjC13HvKRrzjjwZ9z8U/wDbzqNB9W1i5Y3vE+Gtr/iz74C/vRHkpkYxRW4TwaYzOexwDnvejY4emLrpkK83RTpeBV3Vr7s2M1Bf4cGwQhBBQWUjT1sMedlMcIWrDbYI8395///kK2bWJHNHCxhVQqgVotIJVKsONcAmrVsIafkf4AQERERERkdlKZZtp45ADoPW1cKtOkQzMwmQzoHWKH3iFTkamagE9+3Y35yU2wWdIEm0QftGv3Mt6PiUbfe5fxPLbg+aQtQFBr4P33gX79zJq8m0E3VUoB3o462zUdrBC3oDe+230F5++kItjPFZPWnTbIY/VYpLsCw8SQ+li06woAIGJyF8ikEjzMUKGJhx0kkuL+CkhEREREVAnlTRuPmgBkJP+339pTE3CXcxS7LKzkVvh0RG8E2AETJgA3067jcOhG9O+RiwaJSnwd3QA9jl+G9Ngx4JVXgNq1gbAwYORIQKEweX0ZdNMzZfxz9bU/J6dnYd7WiwZ/jLyAGwC6fBmh/TnYzwVLhvjDUm6+v6IRERERERmcVz/Aow9wZx9wPBXovAVw71TqhdEMrV8/oE8fYO8+L2y+8ge2ps3DZUSht2s0agZZYOn1lui9Mxay2FjgnXeAmTMhHTMGigYNTFpPBt30zBrVvjacbJRoU7s6PB2tIYRA7WlbjfZ44Rfvwm/6NgCaVdavJT1C2uMcDA/ygUzKEXAiIiIiqsSkMsClA4Ctmv/NHHBDnQskRUKWeQfPNXLHc537YKHkJey8thPz989HRFwE+jQ8Ceu6wAHpG2ixZjdw7Rpk8+YhoHlzYPBgk1WVC6nRM8tCJkU/f094OmruB5dIJFg1ojUaudth0/j2qJXvPvEhbWvBRmm4v0H1X3oQ768/gzn/nMeyvVd1jqU+VkGtrhiLOhARERERVTrxG4BNPkB4V+DgYM3/m3wgubkRoXVDsWf4HhwYdQDPN3geclt7+Hz0BXD5MrBuHVSt/HHthRdMWl2OdFOV0tXPBV39XAAA+z7oiocZ2bBRWsBCJsWnLzVFUloWWn+6y6CP+cX2S3i9Q22kZKowZPkRxNx9hF5N3fD9kACDPg4RERER0TMvfsOThd0KDGJl3NLsf5KeLMgrCJsHbca9jHtwsHQAAIj+/fGR7RG0zzTt93COdFOV5mCtgIXsv7eBs63SKI/jN30b2s4LR8zdRwCArdEJaPDRv7j9MBMAoMpV40DMPWRm5xrl8YmIiIiIKj11rmZBt4IBN/DfvqiJmnJPOFk7aX++nHwZIXW6ASZe/Jgj3UQFbBrfHn+fug0JABtLC+3CabWdqiH2XrrBHic7V61Nc+bnZouLCWkIbeSKxa+2hJWCi7EREREREelIigQybj6lgAAy4jXlikhb5uvkizr2dbD1vPHWeSoKg26iApp5OqCZp4N2e2LIf6sbfhN+BUdj7+P5Zu6YuiHaYI95MSENALDjfCIaztgGPzdbrBrZGk42Sjx6nAO5hRSHryajQ30nro5ORERERFVT5h3DljMRBt1EpfBu8H8pydrWqYHQr/dClWv4RdEuJqQhcP7uIo9dmNMDb/zfMRyISUZTRynads6Gm4O8yLIP0rNhZyXn6ulEREREVPlZuRu2nIlUiHu6lyxZAh8fH1haWqJt27Y4evSoXuetXbsWEokEffv2NW4FiYpQ26karnzaCxPyBeL/G2r8RRkaztiGAzHJAIDoB1J8sqXoXORXEtPQcu5ODPrfYaPXiYiIiIjI6Jw7AtaeAIobUJIA1l6achWI2YPu33//HWFhYZg5cyZOnDiB5s2bo3v37rh79+5Tz4uLi8PkyZPRsWPF6lCqet7r1gCXP+mJiMldENrYDW93qWvSx/8nOgE+U7fAZ+oWBM4Px4GYewCAZXuvAQCOxt3Xlk3PysH3ETG4lvTIpHUkIiIiIio3qQwIWPxko2Dg/WQ7YJH5c4gXYPbp5QsXLsTo0aMxcuRIAMCyZcuwZcsWrFy5ElOnTi3ynNzcXAwZMgSzZ89GZGQkHj58aMIaExWmsJDCx6kaAGBCSH208HJAu7o1AADXktLhZmeJdvPDAQANXG1wOdE4Qe+dlMcYsvxIof2T/jgNN3slluzR5Az/cvslXJ3XC+uO34Svmy2aezkYpT5ERERERAbl1U+TFixqgu6iataemoDbq5/ZqlYcswbd2dnZiIqKwrRp07T7pFIpQkJCcOjQoWLPmzNnDlxcXPD6668jMjLyqY+RlZWFrKws7XZqaioAQKVSQaVSlbMF0F7DENeqap7VvpMC6Nqghna7sZsmGN87qSOOxj3AC83cEXsvHZZyGboufPrr11D+PKG7yqNaALWn/bdq47FpXbHx1G14OVrhh8hYpGbmYM6LDdG2dnWT1M8cntXXn6mw/8quNH3H/iUiomeCOlezonjmHc391s4dyzca7dUP8Ohj2GsakVmD7nv37iE3Nxeurq46+11dXXHxYtH3qe7fvx8rVqzAqVOn9HqM+fPnY/bs2YX279ixA9bW1qWuc3F27txpsGtVNVWp7xQAtt8+pd2e0RKYe1IG8WQ6TG1bgdg00y961nr+nkL7Xlt5HIsDc3A8SYJNN6To5KZGcE2hTWuYmg3cewzUsTNxZQ2sKr3+jIH9V3b69F1GRoYJakJERGRE8RuKGZVeXL5RaamsyLRgFZHZp5eXRlpaGoYOHYoff/wRTk5OJZ8AYNq0aQgLC9Nup6amwsvLC6GhobCzK3+0oFKpsHPnTnTr1g1yedErSFPR2HcaQ/sBf526jRy1wAB/D+y5lIQ3fzmpU6ZHY1dsO5do8roJL3/8fOgMAGDzDRlat2gIX1db1HOuhlbz90AIYM3rrdHax9HkdSsvvv7Kh/1XdqXpu7zZWURERJVS/AYgcgCAAtl+Mm5p9ndcXyGngxuaWYNuJycnyGQyJCbqBhOJiYlwc3MrVP7q1auIi4vDCy+8oN2nVqsBABYWFrh06RLq1tVdxEqpVEKpVBa6llwuN+gXRUNfryph3wEvt/bW/hzapCYuzHHFjvMJsJLLcDctC6+188bvx25gx7lEhF98+iKDhjTxjzM62zM2XShUZvCKY1g/JhDWCgv4udlC+iQ9WUqGCoeu3UNXPxcoLSrmVB+Ar7/yYv+VnT59x74lIqJKS52rGeEuGHADT/ZJgKiJmmniFXRauKGYNehWKBQICAhAeHi4Nu2XWq1GeHg4xo8fX6i8n58foqOjdfZ9/PHHSEtLw+LFi+Hl5WWKahMZnZVChj4tPHT2DWxdCwNb1wIAZGTn4KMNZ7Dx1B1zVK+QAcs0azCM71oPk7v7AgBGrj6KEzceon29Gght5IaeTd3gYmtpzmoSERERkakkRepOKS9EABnxmnKVZJp4WZl9enlYWBiGDx+OVq1aoU2bNli0aBHS09O1q5kPGzYMHh4emD9/PiwtLdGkSROd8x0cHACg0H6iZ5m1wgKf92+KLlbxmHDI7G9jre/2xKCGjQLro27i3G3NtNgDMck4EJOMmZvOwcPBCjve64RqSgusj7qJf87cxoggH3TxdTFzzYmIiIjIoDL1HBzSt1wlZvZv6wMHDkRSUhJmzJiBhIQEtGjRAtu2bdMurnbjxg1IpWZPJ05UYa1/qy1OxKdg7bF4XEtKL3S8q68zPnmpKf7vYBx+2HfN6PWZvfl8scduPcxE45nb8dvodpi87jQAIOJSEtaPCUQrH81K6Y9VuXiQkQ1ruQXsrTm1loiIiKhSsnI3bLlKzOxBNwCMHz++yOnkABAREfHUc1evXm34ChFVIs097dGqthMeZKiwNEKTh3vliFZoV6cGrBX/vcWn9WqIMzdTcOhaMvzcbOFub4k9l5LMUudBPx7W2c6bnm5raYHM7FzkqDX3/sx4vhGae9nj6t10vNKat48QERERVRrOHTWrlGfcQtH3dUs0x507mrpmJlchgm4iKr+JIfVR19kGneo7wcWu6Hun/+/1Nrj1IBM+Tprc4cfi7uPItWSM7VIPaiHQ6fM9uJPy2JTV1pH2OEdne84//42a21lZoEcTdwghoMrV/OK+nJiGxjU1WQgyVbk6f2QgIiIiIjOSyjRpwSIHAJBAN/B+koM2YNEzv4gawKCb6JmhtJBhQIDnU8vIZVJtwA0ArX2qo/WTad0ySNCrqTtW7I8FAMR82hMn4x/iyLVkfLnjsvEqrqcxv5wocv/MFxrhyt1HWHPkBt7oUBvL98cipKELnGyUGNO5LpLTs/Hr4et4r1sDeFW3LnS+EEX95ZWIiIiIys2rnyYtWJF5uhdViXRhAINuIsrnpZYeWLE/Fo1r2sFCJtUG5RUh6C5O/nvIlz/5g8GuC5q0amuPxWuPbTh5C0c/CtZZQf10sgSzFkTgm0Et0bG+s4lqTERERFSFePXTpAVLitQsmmblrplSXgVGuPMw6CYirSYe9jg8LRjVqyl09m99tyMOxNxDPRcb+NdyxOOcXIQs3As3O0tcufsIAPDvhI7ouTjSHNXWW5tPw7U/B9RyQNQNGQAVhq44irl9m6CllwPSHudgXVQ8ZjzfCFeT0qG0kKKJh32ha6VkqJCVm8s0aEREREQlkcqe+bRgT8Ogm4h0uNkXDiIb1bRDoyf3TgOAPeQ4Ob0bLGRSrD16A17VrdHQ3Q5xC3oDANYevQG5TIoMVS5+PhSHy4mPTFZ/fUXdeKizPf2vszrbJ64/QFxyBgDg2rxekEolUKsFpFLNPUjN5+wAAETPCoWtJVdZJyIiIqKiMegmojKxkGlS+b3aplahY/n3DW3njcgrSRi64igA4OPeDdG+nlOFHxXPC7gBoM6HW7U/e9ewxvV8x5rO2oE+LWoiVy3Qt4UHuvg6a/smT/5gnYiIiIiqFgbdRGR0Hes7I2JyF9SwUWhHhS990gMLd1zW5g6/9EkP9Pv+IM7dTjVnVUuUP+DO8/ep2wCAf87cAQCET+qMNUduoEN9J2w+fRsbTtzCtJ5+aOXjiADv6sVeOyHlMVztlJBIGKATERERPSsYdBORSeRfNR3QrLY+rVdDtKldHRYyKZQWMizo1wwD/3cIE0Pqw95Kjil/RqNN7eo4Gntfe16Hek7YH3PP1NUvleCv9gKAdiV4AJj/70Xtz6tGtkZXXxft9t3Ux1hz9AYW7boCR2s5Qhq64q3OdZGY+hgWUgna1qlhusoTERERkUEx6CYiswpu6Kr9uamnPc7MDNVOz37OzxVONgpEXX+AXLVATQcreFW3hipXjeNxD3A5MQ0zN50zV9XLbOSqY9g+sROs5DKcvvkQ7/x2UnvsQYYK66JuYl3Uf2k1lgz2R+pjFUIbuaKGjVKbq/xo7H0cunYPYd18ISti+vpjVS4ys3PhWGBhPCIiIiIyHQbdRFSh5L8f2tlWCQBo5aM7JVsukyKwbg20qV0d34RfgVoIvNbOG9/ujkG/lh4Y0d4HE38/hWtJ6Sate2l0X7RP77Lj1mhylE/bEI3pzzfC8shruJPyWHs8/MJdLB/eCl/vvILXO9TGsbj7+G5PDJLSsgAAJ6Z3w5XENFxKTMPao/H4YWgAqiktcCkhDe3qaPp29ubzqFFNgXeC6xuwlURERETEoJuIKi2ZVIJD04IhIKC0kGFSqK/22J9jgnAkNhm3Hz7GoWvJeL6ZO7o3doNCJkXnL/cg/n6mGWtednP/OV9o38WENHT4bA8A4M8TNwsdX7TrMv7v0HXt9qxN53D65kPce5SNJYP94etmg9UH4wAAw9v7wK6Uq7Ev3HEJznaWGNrOu1TnEREREVUF0pKLEBFVXAoLzf3gBTlWU6BHE3eM6lAbPw5rhT4tPGApl0EqlWD3pC5YPSIAADC5W31tqrNnVf6AGwDCL97FvUfZADSj6CEL/xt1bzZrB5ZHXkOPRftwOv6hdv/O84kY9L/DCL+QiHuPspCVo8Yf16SY8PtpfLM7plDKtYKEEPhs20X8cSzecA2jCm3JkiXw8fGBpaUl2rZti6NHj5q7SkRERGbBkW4iqnLkMina162BxYE56NWpNgDgr3Ht0XfJAW2Z74f44+1fT2i3j34YjMnrz2Df5SST19fUPtlyAQDQZ8kBBNWtAZlUgsgrmsXrDl1LzldSCiQmFjr/sSoXE9eeQlc/ZwwI8IJUAkRdf4ClEVcBAK+09ir2sYUQSH2cA3sr5j6vzH7//XeEhYVh2bJlaNu2LRYtWoTu3bvj0qVLcHFxKfkCREREzxAG3UREAFp4OWhHvPPyasct6I31UTfh52YLFztL/N+oNniQng0rhQwjVh1F45r26NXUHf2XHgQAbJvYEZtP38aSPVfN2RSDOng1ueRCTwR/FYFeTd3xY+Q1PFapse1cAj7ZcgFejtZ4qaWHXtdYsO0ifth7DStHtIKLrSV+OhiHSaG+cLO3LGsTyAwWLlyI0aNHY+TIkQCAZcuWYcuWLVi5ciWmTp1q5toRERGZFoNuIqICpPlWAh8Q4KlzLG8l8LVvBmr3Hf0wGAmpj+HnZgc/Nzu82roWPtwYjbjkdNR3scXui3fRxqc6lgzxR+tPdwEA3Ows4WyrRPStFBO0yDSuJqXj290xOvvSHufg/J1UnL/zX/71576MwGvtvNHP3wN2lnI8zsnFsr3X0KOxG37Yq8nbPmr1cW35a/fS0cLLAd0auaKdnunT8v5wQqaXnZ2NqKgoTJs2TbtPKpUiJCQEhw4dMmPNiIiIzINBNxFRObnYWcLF7r+RWK/q1vj59bZFlt3ybgesOXIDE0Lqw8XWEtE3U/DCd/u1x31qWCMuOcPodTana/fSMeef85hTYFG4b8KvFFk+6voDRF1/gBX7YzGnT2Oo1QKzNp+HpVyKtzrVRUhDVzT1tMejrBz8duQGLiWmIfxCIv54KxD1XGwQc/cRvGtUg8JC/2VMhBDIVOXCWsGPydK6d+8ecnNz4erqqrPf1dUVFy9eLPKcrKwsZGVlabdTUzV/pFGpVFCpVOWqT9755b2OObEN5lfZ6w+wDRVBZa8/wDYUd62S8NsEEZEJNa5pj09faqrdbuppj92TOqNGNSUEBB6r1FgeeQ1DA73hXaMasnPUCFoQDjtLOa7dS0eAtyOirj8wYwvMa8bf/+Vlf6xSY3H4FSwOv4Llw1rhjf87rlO229e6adlOzegGB2sFVLlqHI29jy3RdzAiyAeZ2blo7uWgU3bSutPYcOIWdoV1gld1a+SqRYkBuBACEglH18ti/vz5mD17dqH9O3bsgLW1tUEeY+fOnQa5jjmxDeZX2esPsA0VQWWvP8A25MnI0G+ghEE3EZGZ1XG20dn++PlG2p8VFlIc/7ibznGfqVsAaBZ/m7npnHaV8VHta2PlgVgAmmnx66MKpw/L07OJG/49m2CI6lcIBQPuorSYU/jDdc2RGwCAFcNbIbihZmT23qMsbDhxCwAw8fdTSEh5jHuPsnFxbg9YyjUr5e84l4A9l+5i1ouNobSQYfK60zgWdx+f9m2KlrUcUE1ZdT9enZycIJPJkFhgkb3ExES4ubkVec60adMQFham3U5NTYWXlxdCQ0NhZ2dXrvqoVCrs3LkT3bp1g1xeORfoYxvMr7LXH2AbKoLKXn+AbSgob2ZWSarutwIiokrq73HtEZesuc+5SwNnnI5/CHsrOWa80Ajvd/eFlUITGH4xoBmSHmVh/K8ncTTuPn4b3Q4pmSq42VuinovNMxV0l9frPx1HUN0aeJChwoV895+fvfXfzwdi7qG5lwP+jb6D6U9G3H87Go/P+jfV/oHjtRVH0NzLAX+Pa2/aBlQgCoUCAQEBCA8PR9++fQEAarUa4eHhGD9+fJHnKJVKKJXKQvvlcrnBvtQZ8lrmwjaYX2WvP8A2VASVvf4A25D/Gvpg0E1EVMk093LQTod+u2tdeDhaoWN9JwDQBtwAIJFI4GJriSVD/HE37TEa17TXuc66MYFISHmMF5rXROy9dGw4cRPDg3zwzpqTBVKDAWO71NWm/HpWlbRS++s/FT2aPuXPaJ3t/PnNq6qwsDAMHz4crVq1Qps2bbBo0SKkp6drVzMnIiKqShh0ExFVYkoLGV5pVXzeawBwtlXC2bbwKGJrn+ran2s7VcOkUF8AwKqRrXHhTirqutigx9f70K5uDUwO9UXb2tXRxMMe52+nYtf5BNRXXcP0KN2PEZlUgojJXdDx8z0GaB1VVgMHDkRSUhJmzJiBhIQEtGjRAtu2bSu0uBoREVFVwKCbiIh0WMplaFnLEQCwf8pz2tRbXXxdAACdGjgjsLYDtm69hnMzQ6BQyFH/o38BAD2auMGrujVmvdAIszZrVie/9EkP7DyfiJX7Y/HtYH9YWkgReeUeJv5+yvSNM5FctYCsiqcsGz9+fLHTyYmIiKoSBt1ERFSsknJdKyykkMukGN+1HlYdiMWkbg0AAEPaeePeo2x0rO8EpYUMzzerieeb1dSe17elB6pXUyAjOwd1nG3w2vIjuJuWhQBvR7wX0gAPMrLR1c8Fx+LuY+SqY0ZtozEkpWXBzd6y5IJERERUPupcICkSyLwDWLkDzh0Bqazk80yIQTcREZXb5O6+eK9bA+3orlwmxeTuvk89p1MDZ+3PRz4MLjLdVldfF6wbE4jIy0kYGuiD1p/uKvZ6f44NQv+lB7Xbz/m5YPfFu6VtikFYyvXPCU5ERERlFL8BiJoAZOTL2GLtCQQsBrz6ma9eBfBbARERGUR5plM/Lb91a5/qCAv1hbOtEkc/DMa4rnXx/RB/OFjL8eXLzXF2dnfELeiNAG9HRH7QFQAwpYcfVo5oXehaAd6OiJjcBedmdy/28RrXtMPlT3qWuS2A5l57IiIiMqL4DUDkAN2AGwAybmn2x28wT72KwJFuIiKqNFzsLPF+dz8AmlzjBYN1r+rWiFvQW7vdoZ4T9sfcQ58WNbH41ZY6Zaf19INaaHKaf7f7Cn46dB3fDGqJF5trpsFfm9cLQQt2w8lWgbc61cU7v53Uu55KC/5Nm4iIyGjUuZoRbogiDgoAEiBqIuDRp0JMNWfQTUREldLTRsfzLBnijz0X76Jbo8KrZr/Vua7259l9mmB2nyY6x6VSCQ5/GKzdtlFaYMX+WFgpZLifno1vBrVEyFd7kanK1ZbZ+m5HVFPKSrwXnoiIiMohKbLwCLcOAWTEa8q5djFVrYrFoJuIiJ5Z9lZy9G3pYZBrdfVzQVc/F519F+b2wLnbKXjv91P4oLsfGtW0M8hjERER0VNk3jFsOSNj0E1ERFQOjWvaY8d7nc1dDSIioqrDyt2w5YyMN50RERERERFR5eHcUbNKOYq7nUsCWHtpylUADLqJiIiIiIio8pDKNGnBABQOvJ9sByyqEIuoAQy6iYiIiIiIqLLx6gd0XA9YF1i7xdpTs78C5enmPd1ERERERERU+Xj106QFS4rULJpm5a6ZUl5BRrjzMOgmIiIiIiKiykkqqxBpwZ6G08uJiIiIiIiIjIRBNxEREREREZGRMOgmIiIiIiIiMhIG3URERERERERGwqCbiIiIiIiIyEgYdBMREREREREZSZVLGSaEAACkpqYa5HoqlQoZGRlITU2FXC43yDWrCvZd+bD/yof9Vz7sv7IrTd/lfVblfXZVFYb8rH4WXqtsg/lV9voDbENFUNnrD7ANBen7OV3lgu60tDQAgJeXl5lrQkREpJ+0tDTY29ubuxomw89qIiKqTEr6nJaIKvbnc7Vajdu3b8PW1hYSiaTc10tNTYWXlxfi4+NhZ2dngBpWHey78mH/lQ/7r3zYf2VXmr4TQiAtLQ01a9aEVFp17ggz5Gf1s/BaZRvMr7LXH2AbKoLKXn+AbShI38/pKjfSLZVK4enpafDr2tnZVdoXnrmx78qH/Vc+7L/yYf+Vnb59V5VGuPMY47P6WXitsg3mV9nrD7ANFUFlrz/ANuSnz+d01fmzOREREREREZGJMegmIiIiIiIiMhIG3eWkVCoxc+ZMKJVKc1el0mHflQ/7r3zYf+XD/is79p1pPQv9zTaYX2WvP8A2VASVvf4A21BWVW4hNSIiIiIiIiJT4Ug3ERERERERkZEw6CYiIiIiIiIyEgbdREREREREREbCoLsclixZAh8fH1haWqJt27Y4evSouatkcvv27cMLL7yAmjVrQiKR4K+//tI5LoTAjBkz4O7uDisrK4SEhODKlSs6Ze7fv48hQ4bAzs4ODg4OeP311/Ho0SOdMmfOnEHHjh1haWkJLy8vfP7558ZumknMnz8frVu3hq2tLVxcXNC3b19cunRJp8zjx48xbtw41KhRAzY2Nujfvz8SExN1yty4cQO9e/eGtbU1XFxc8P777yMnJ0enTEREBPz9/aFUKlGvXj2sXr3a2M0zqqVLl6JZs2baHIuBgYH4999/tcfZb6WzYMECSCQSTJw4UbuPfVi8WbNmQSKR6Pzz8/PTHmffmdann36KoKAgWFtbw8HBQa9zDPX5ZAilfZy4uLhCr7+8f+vWrdOWK+r42rVrDV7/srQBALp06VKofmPGjNEpo8/7xFxtuH//Pt555x34+vrCysoKtWrVwrvvvouUlBSdcsZ6Hkr7PXTdunXw8/ODpaUlmjZtiq1bt+oc1+c9YWilacOPP/6Ijh07wtHREY6OjggJCSlUfsSIEYX6ukePHhWmDatXry5UP0tLS50ypn4eSlP/ot6zEokEvXv31pYx9XNQUixSFH0+Ww0e5wkqk7Vr1wqFQiFWrlwpzp07J0aPHi0cHBxEYmKiuatmUlu3bhUfffSR2LBhgwAgNm7cqHN8wYIFwt7eXvz111/i9OnT4sUXXxS1a9cWmZmZ2jI9evQQzZs3F4cPHxaRkZGiXr16YtCgQdrjKSkpwtXVVQwZMkScPXtW/Pbbb8LKykr88MMPpmqm0XTv3l2sWrVKnD17Vpw6dUr06tVL1KpVSzx69EhbZsyYMcLLy0uEh4eL48ePi3bt2omgoCDt8ZycHNGkSRMREhIiTp48KbZu3SqcnJzEtGnTtGWuXbsmrK2tRVhYmDh//rz49ttvhUwmE9u2bTNpew1p06ZNYsuWLeLy5cvi0qVL4sMPPxRyuVycPXtWCMF+K42jR48KHx8f0axZMzFhwgTtfvZh8WbOnCkaN24s7ty5o/2XlJSkPc6+M60ZM2aIhQsXirCwMGFvb6/XOYb4fDKU0j5OTk6Ozmvvzp07Yvbs2cLGxkakpaVpywEQq1at0imXv33mbIMQQnTu3FmMHj1ap34pKSk67SzpfWLONkRHR4t+/fqJTZs2iZiYGBEeHi7q168v+vfvr1POGM9Dab+HHjhwQMhkMvH555+L8+fPi48//ljI5XIRHR2tLaPPe8KQStuGwYMHiyVLloiTJ0+KCxcuiBEjRgh7e3tx8+ZNbZnhw4eLHj166PT1/fv3jVL/srRh1apVws7OTqd+CQkJOmVM+TyUtv7Jyck6dT979qyQyWRi1apV2jKmfg5KikUK0uez1RhxHoPuMmrTpo0YN26cdjs3N1fUrFlTzJ8/34y1Mq+CL3S1Wi3c3NzEF198od338OFDoVQqxW+//SaEEOL8+fMCgDh27Ji2zL///iskEom4deuWEEKI77//Xjg6OoqsrCxtmSlTpghfX18jt8j07t69KwCIvXv3CiE0/SWXy8W6deu0ZS5cuCAAiEOHDgkhNL9spFKpzi/tpUuXCjs7O22fffDBB6Jx48Y6jzVw4EDRvXt3YzfJpBwdHcXy5cvZb6WQlpYm6tevL3bu3Ck6d+6sDbrZh083c+ZM0bx58yKPse/MZ9WqVXoF3Yb6fDIEQz1OixYtxKhRo3T26fMF1BDK2ob8v3OKos/7xFAM9Tz88ccfQqFQCJVKpd1njOehtN9DX3nlFdG7d2+dfW3bthVvvfWWEEK/94Shlfe7dE5OjrC1tRU//fSTdt/w4cNFnz59DF3VYpW2DSX9jjL181De5+Drr78Wtra2OoNFpn4O8tPnvabPZ6sx4jxOLy+D7OxsREVFISQkRLtPKpUiJCQEhw4dMmPNKpbY2FgkJCTo9JO9vT3atm2r7adDhw7BwcEBrVq10pYJCQmBVCrFkSNHtGU6deoEhUKhLdO9e3dcunQJDx48MFFrTCNvSlr16tUBAFFRUVCpVDp96Ofnh1q1aun0YdOmTeHq6qot0717d6SmpuLcuXPaMvmvkVfmWXm95ubmYu3atUhPT0dgYCD7rRTGjRuH3r17F2on+7BkV65cQc2aNVGnTh0MGTIEN27cAMC+qwwM9flkCIZ4nKioKJw6dQqvv/56oWPjxo2Dk5MT2rRpg5UrV0IYIVNsedrw66+/wsnJCU2aNMG0adOQkZGhc92S3icVoQ35paSkwM7ODhYWFjr7Dfk8lOV7aEm/T/R5TxiSIb5LZ2RkQKVSab8z5YmIiICLiwt8fX0xduxYJCcnG7TuecrahkePHsHb2xteXl7o06ePzmvZlM+DIZ6DFStW4NVXX0W1atV09pvqOSiLkt4LxorzLEouQgXdu3cPubm5Oh8CAODq6oqLFy+aqVYVT0JCAgAU2U95xxISEuDi4qJz3MLCAtWrV9cpU7t27ULXyDvm6OholPqbmlqtxsSJE9G+fXs0adIEgKZ9CoWi0D2KBfuwqD7OO/a0MqmpqcjMzISVlZUxmmR00dHRCAwMxOPHj2FjY4ONGzeiUaNGOHXqFPtND2vXrsWJEydw7NixQsf42nu6tm3bYvXq1fD19cWdO3cwe/ZsdOzYEWfPnmXfVQKG+nwyVF3K+zgrVqxAw4YNERQUpLN/zpw5eO6552BtbY0dO3bg7bffxqNHj/Duu+8arP5A2dswePBgeHt7o2bNmjhz5gymTJmCS5cuYcOGDdrrlvQ+MXcb8rt37x7mzp2LN998U2e/oZ+HsnwPLa4v87/e8/YVV8aQDPFdesqUKahZs6ZOcNSjRw/069cPtWvXxtWrV/Hhhx+iZ8+eOHToEGQymdnb4Ovri5UrV6JZs2ZISUnBl19+iaCgIJw7dw6enp4mfR7K+xwcPXoUZ8+exYoVK3T2m/I5KIuSPlsfPHhglDiPQTdRBTFu3DicPXsW+/fvN3dVKg1fX1+cOnUKKSkpWL9+PYYPH469e/eau1qVQnx8PCZMmICdO3cWWsSFStazZ0/tz82aNUPbtm3h7e2NP/74g8GwgUydOhWfffbZU8tcuHBBZwG7ikTf+pdXZmYm1qxZg+nTpxc6ln9fy5YtkZ6eji+++ELvYM/YbcgfnDZt2hTu7u4IDg7G1atXUbdu3TJfNz9TPQ+pqano3bs3GjVqhFmzZukcK+/zQIUtWLAAa9euRUREhM5n2Kuvvqr9uWnTpmjWrBnq1q2LiIgIBAcHm6OqOgIDAxEYGKjdDgoKQsOGDfHDDz9g7ty5ZqxZ6a1YsQJNmzZFmzZtdPZX9OfAXBh0l4GTkxNkMlmhlWgTExPh5uZmplpVPHl9kZiYCHd3d+3+xMREtGjRQlvm7t27Oufl5OTg/v372vPd3NyK7Ov8j1HZjR8/Hv/88w/27dsHT09P7X43NzdkZ2fj4cOHOqNm+V9rbm5uhVZULNg/xfWhnZ1dpQ4QFAoF6tWrBwAICAjAsWPHsHjxYgwcOJD9VoKoqCjcvXsX/v7+2n25ubnYt28fvvvuO2zfvp19WAoODg5o0KABYmJi0K1bN/adAUyaNAkjRox4apk6deqU6dqG+nx6Gn3rX97HWb9+PTIyMjBs2LASy7Zt2xZz585FVlYWlEplieVN1Yb89QOAmJgY1K1bV6/3SUlM0Ya0tDT06NEDtra22LhxI+Ry+VPLl/Z5KKgs30OL+32S//dN3r7i3hOGVJ7v0l9++SUWLFiAXbt2oVmzZk8tW6dOHTg5OSEmJsbgAZ8h4gG5XI6WLVsiJiYGgGmfh/LUPz09HWvXrsWcOXNKfBxjPgdlUdJnq0wmM0qcx3u6y0ChUCAgIADh4eHafWq1GuHh4Tp/varqateuDTc3N51+Sk1NxZEjR7T9FBgYiIcPHyIqKkpbZvfu3VCr1doP38DAQOzbtw8qlUpbZufOnfD19a30U8uFEBg/fjw2btyI3bt3F5pGHxAQALlcrtOHly5dwo0bN3T6MDo6WufLws6dO2FnZ4dGjRppy+S/Rl6ZZ+31qlarkZWVxX7TQ3BwMKKjo3Hq1Cntv1atWmHIkCHan9mH+nv06BGuXr0Kd3d3vv4MxNnZGX5+fk/9l3+tj9Iw1OeTIepf3sdZsWIFXnzxRTg7O5dY9tSpU3B0dNQ70DNVG/LXD4A22NDnfWLuNqSmpiI0NBQKhQKbNm3Sa+ZQaZ+HgsryPbSk3yf6vCcMqazfpT///HPMnTsX27Zt07n/vjg3b95EcnKyTgBrKIaIB3JzcxEdHa2tnymfh/LUf926dcjKysJrr71W4uMY8zkoi5LeC0aL88q8BFsVt3btWqFUKsXq1avF+fPnxZtvvikcHBwKLfv/rEtLSxMnT54UJ0+eFADEwoULxcmTJ8X169eFEJq0Bw4ODuLvv/8WZ86cEX369CkyJUvLli3FkSNHxP79+0X9+vV1UnQ8fPhQuLq6iqFDh4qzZ8+KtWvXCmtr62ciZdjYsWOFvb29iIiI0EmtkJGRoS0zZswYUatWLbF7925x/PhxERgYKAIDA7XH81KqhIaGilOnTolt27YJZ2fnIlMPvf/+++LChQtiyZIllT710NSpU8XevXtFbGysOHPmjJg6daqQSCRix44dQgj2W1kUXEmYfVi8SZMmiYiICBEbGysOHDggQkJChJOTk7h7964Qgn1natevXxcnT57Ups3K+1zKnz7L19dXbNiwQbttiM8nQynpcW7evCl8fX3FkSNHdM67cuWKkEgk4t9//y10zU2bNokff/xRREdHiytXrojvv/9eWFtbixkzZhi8/mVpQ0xMjJgzZ444fvy4iI2NFX///beoU6eO6NSpk/Ycfd4n5mxDSkqKaNu2rWjatKmIiYnR+RzPyckRQhjveSjpe+jQoUPF1KlTteUPHDggLCwsxJdffikuXLggZs6cWWTKsJLeE4ZU2jYsWLBAKBQKsX79ep2+znufp6WlicmTJ4tDhw6J2NhYsWvXLuHv7y/q168vHj9+XCHaMHv2bLF9+3Zx9epVERUVJV599VVhaWkpzp07p9NOUz0Ppa1/ng4dOoiBAwcW2m+O56CkWGTq1Kli6NCh2vL6fLYaI85j0F0O3377rahVq5ZQKBSiTZs24vDhw+auksnt2bNHACj0b/jw4UIITeqD6dOnC1dXV6FUKkVwcLC4dOmSzjWSk5PFoEGDhI2NjbCzsxMjR47U+aIkhBCnT58WHTp0EEqlUnh4eIgFCxaYqolGVVTf4Uk+zzyZmZni7bffFo6OjsLa2lq89NJL4s6dOzrXiYuLEz179hRWVlbCyclJTJo0SSddiRCa56pFixZCoVCIOnXq6DxGZTRq1Cjh7e0tFAqFcHZ2FsHBwdqAWwj2W1kUDLrZh8UbOHCgcHd3FwqFQnh4eIiBAweKmJgY7XH2nWkNHz68yN+le/bs0ZYp+LvVUJ9PhlDS48TGxhZqjxBCTJs2TXh5eYnc3NxC1/z3339FixYthI2NjahWrZpo3ry5WLZsWZFlzdGGGzduiE6dOonq1asLpVIp6tWrJ95//32dPN1C6Pc+MVcbivsOBEDExsYKIYz7PDzte2jnzp2138Xy/PHHH6JBgwZCoVCIxo0biy1btugc1+c9YWilaYO3t3eRfT1z5kwhhBAZGRkiNDRUODs7C7lcLry9vcXo0aONPiBWmjZMnDhRW9bV1VX06tVLnDhxQud6pn4eSvs6unjxogCg850rjzmeg5JikeHDh4vOnTsXOqekz1ZDx3kSIYyQO4KIiIiIiIiIeE83ERERERERkbEw6CYiIiIiIiIyEgbdREREREREREbCoJuIiIiIiIjISBh0ExERERERERkJg24iIiIiIiIiI2HQTURERERERGQkDLqJiIiIiIiIjIRBNxEREREREZGRMOgmIh1JSUkYO3YsatWqBaVSCTc3N3Tv3h0HDhwAAEgkEvz111/mrSQRERERUSVhYe4KEFHF0r9/f2RnZ+Onn35CnTp1kJiYiPDwcCQnJ5u7akRERERElQ5HuolI6+HDh4iMjMRnn32Grl27wtvbG23atMG0adPw4osvwsfHBwDw0ksvQSKRaLcB4O+//4a/vz8sLS1Rp04dzJ49Gzk5OdrjEokES5cuRc+ePWFlZYU6depg/fr1Jm4hERFR1ZGUlAQ3NzfMmzdPu+/gwYNQKBQIDw83Y82IqhYG3USkZWNjAxsbG/z111/IysoqdPzYsWMAgFWrVuHOnTva7cjISAwbNgwTJkzA+fPn8cMPP2D16tX49NNPdc6fPn06+vfvj9OnT2PIkCF49dVXceHCBeM3jIiIqApydnbGypUrMWvWLBw/fhxpaWkYOnQoxo8fj+DgYHNXj6jKkAghhLkrQUQVx59//onRo0cjMzMT/v7+6Ny5M1599VU0a9YMgGbEeuPGjejbt6/2nJCQEAQHB2PatGnafb/88gs++OAD3L59W3vemDFjsHTpUm2Zdu3awd/fH99//71pGkdERFQFjRs3Drt27UKrVq0QHR2NY8eOQalUmrtaRFUGR7qJSEf//v1x+/ZtbNq0CT169EBERAT8/f2xevXqYs85ffo05syZox0pt7GxwejRo3Hnzh1kZGRoywUGBuqcFxgYyJFuIiIiI/vyyy+Rk5ODdevW4ddff2XATWRiDLqJqBBLS0t069YN06dPx8GDBzFixAjMnDmz2PKPHj3C7NmzcerUKe2/6OhoXLlyBZaWliasORERERV09epV3L59G2q1GnFxceauDlGVw9XLiahEjRo10qYJk8vlyM3N1Tnu7++PS5cuoV69ek+9zuHDhzFs2DCd7ZYtWxq8vkRERKSRnZ2N1157DQMHDoSvry/eeOMNREdHw8XFxdxVI6oyGHQTkVZycjJefvlljBo1Cs2aNYOtrS2OHz+Ozz//HH369AEA+Pj4IDw8HO3bt4dSqYSjoyNmzJiB559/HrVq1cKAAQMglUpx+vRpnD17Fp988on2+uvWrUOrVq3QoUMH/Prrrzh69ChWrFhhruYSERE98z766COkpKTgm2++gY2NDbZu3YpRo0bhn3/+MXfViKoMLqRGRFpZWVmYNWsWduzYgatXr0KlUsHLywsvv/wyPvzwQ1hZWWHz5s0ICwtDXFwcPDw8tNPUtm/fjjlz5uDkyZOQy+Xw8/PDG2+8gdGjRwPQLKS2ZMkS/PXXX9i3bx/c3d3x2Wef4ZVXXjFji4mIiJ5dERER6NatG/bs2YMOHToAAOLi4tC8eXMsWLAAY8eONXMNiaoGBt1EZBJFrXpORERERPSs40JqREREREREREbCoJuIiIiIiIjISLiQGhGZBO9kISIiIqKqiCPdREREREREREbCoJuIiIiIiIjISBh0ExERERERERkJg24iIiIiIiIiI2HQTURERERERGQkDLqJiIiIiIiIjIRBNxEREREREZGRMOgmIiIiIiIiMhIG3URERERERERG8v8mCIIEamagQQAAAABJRU5ErkJggg==",
|
||
"text/plain": [
|
||
"<Figure size 1000x400 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"hyper_params = {\n",
|
||
" 'learning_rate': 5.0e-2,\n",
|
||
" 'num_epochs': 5,\n",
|
||
" 'batch_size': 1024,\n",
|
||
"}\n",
|
||
"\n",
|
||
"model = Model_2_2().to(device)\n",
|
||
"trainer = LogisticTrainer(model=model, dataset=dataset, optimizer='torch', criterion='torch', **hyper_params)\n",
|
||
"trainer.train()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "e6bff679-f8d2-46cc-bdcb-82af7dab38b3",
|
||
"metadata": {},
|
||
"source": [
|
||
"对比发现,手动实现的损失函数和优化器与torch.nn的内置损失函数和优化器相比,表现差不多。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "ef41d7fa-c2bf-4024-833b-60af0a87043a",
|
||
"metadata": {},
|
||
"source": [
|
||
"# 三、动手实现softmax回归\n",
|
||
"\n",
|
||
"## 问题1\n",
|
||
"\n",
|
||
"**要求动手从0实现softmax回归(只借助Tensor和Numpy相关的库)在Fashion-MNIST数据集上进行训练和测试,并从loss、训练集以及测试集上的准确率等多个角度对结果进行分析(要求从零实现交叉熵损失函数)**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "902603a6-bfb9-4ce3-bd0d-b00cebb1d3cb",
|
||
"metadata": {},
|
||
"source": [
|
||
"手动实现CrossEntropyLoss。\n",
|
||
"\n",
|
||
"CrossEntropyLoss由一个log_softmax和一个nll_loss组成。\n",
|
||
"\n",
|
||
"softmax的数学表达式如下:\n",
|
||
"$$\n",
|
||
"\\text{softmax}(x_i) = \\frac{e^{x_i}}{\\sum_{j=1}^{N} e^{x_j}} = \\frac{e^{x_i - \\text{max}(x)}}{\\sum_{j=1}^{N} e^{x_j - \\text{max}(x)}} \n",
|
||
"$$\n",
|
||
"log_softmax即为$\\log(\\text{softmax}(x))$,但可以进一步优化:\n",
|
||
"$$\n",
|
||
"\\text{logsoftmax}(x_i) = \\log{\\frac{e^{x_i - \\text{max}(x)}}{\\sum_{j=1}^{N} e^{x_j - \\text{max}(x)}}} = x_i - \\text{max}(x) - \\log{\\sum_{j=1}^{N} e^{x_j - \\text{max}(x)}}\n",
|
||
"$$\n",
|
||
"\n",
|
||
"CrossEntropyLoss的数学表达式如下:\n",
|
||
"$$\n",
|
||
"\\text{CrossEntropyLoss}(x, \\hat{x}) = -\\frac{1}{N} \\sum_{i=1}^{N} \\hat{x}_i \\cdot \\log(\\text{softmax}(x_i)) \n",
|
||
"$$\n",
|
||
"\n",
|
||
"故代码如下:"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"id": "759a3bb2-b5f4-4ea5-a2d7-15f0c4cdd14b",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"输入:\n",
|
||
"tensor([[-0.1808, -0.6778, -0.5920, -0.6382, -1.9187],\n",
|
||
" [-0.6441, -0.6061, -0.1425, 0.9727, 2.0038],\n",
|
||
" [ 0.6622, 0.5332, 2.7489, -0.3841, -1.9623]], requires_grad=True)\n",
|
||
"标签:\n",
|
||
"tensor([2, 0, 1])\n",
|
||
"My_CrossEntropyLoss损失值: 2.377387762069702\n",
|
||
"nn.CrossEntropyLoss损失值: 2.377387762069702\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"class My_Softmax:\n",
|
||
" def __init__(self, dim: int):\n",
|
||
" self.dim = dim\n",
|
||
" def __call__(self, x: torch.Tensor):\n",
|
||
" max_x = torch.max(x, dim=self.dim, keepdim=True).values\n",
|
||
" exp_x = torch.exp(x - max_x)\n",
|
||
" return exp_x / torch.sum(exp_x, dim=self.dim, keepdim=True)\n",
|
||
"\n",
|
||
"def my_logsoftmax(x: torch.Tensor):\n",
|
||
" max_x = torch.max(x, dim=1, keepdim=True).values\n",
|
||
" exp_x = torch.exp(x - max_x)\n",
|
||
" return x - max_x - torch.log(torch.sum(exp_x, dim=1, keepdim=True))\n",
|
||
"\n",
|
||
"class My_CrossEntropyLoss:\n",
|
||
" def __call__(\n",
|
||
" self, \n",
|
||
" predictions: torch.Tensor, \n",
|
||
" targets: torch.Tensor, \n",
|
||
" reduction: Literal[\"mean\", \"sum\"] = \"mean\"\n",
|
||
" ):\n",
|
||
" log_probs = my_logsoftmax(predictions)\n",
|
||
" \n",
|
||
" if len(predictions.shape) == len(targets.shape) + 1:\n",
|
||
" nll_loss = -log_probs.gather(1, targets.unsqueeze(-1)).squeeze()\n",
|
||
" else:\n",
|
||
" nll_loss = -torch.sum(targets * log_probs, dim=1)\n",
|
||
" \n",
|
||
" if reduction == \"mean\": \n",
|
||
" return torch.mean(nll_loss)\n",
|
||
" else: \n",
|
||
" return torch.sum(nll_loss)\n",
|
||
"\n",
|
||
" \n",
|
||
"# 测试\n",
|
||
"input = torch.randn(3, 5, requires_grad=True)\n",
|
||
"target = torch.randn(3, 5).softmax(dim=1).argmax(1)\n",
|
||
"print(f\"输入:\\n{input}\")\n",
|
||
"print(f\"标签:\\n{target}\")\n",
|
||
"\n",
|
||
"my_crossentropyloss = My_CrossEntropyLoss()\n",
|
||
"my_loss = my_crossentropyloss(input, target)\n",
|
||
"print(\"My_CrossEntropyLoss损失值:\", my_loss.item())\n",
|
||
"\n",
|
||
"nn_crossentropyloss = nn.CrossEntropyLoss()\n",
|
||
"nn_loss = nn_crossentropyloss(input, target)\n",
|
||
"print(\"nn.CrossEntropyLoss损失值:\", nn_loss.item())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "92c224a3-8c27-4392-9017-aa526030a0a6",
|
||
"metadata": {},
|
||
"source": [
|
||
"接下来实现Softmax回归的Trainer,包括训练流程、测试和画图。\n",
|
||
"\n",
|
||
"训练softmax回归模型,进行如下步骤:\n",
|
||
"1. 定义模型、数据集、损失函数、优化器和其他超参数\n",
|
||
"2. 训练\n",
|
||
" 1. 从训练dataloader中获取批量数据\n",
|
||
" 2. 传入模型\n",
|
||
" 3. 使用损失函数计算与ground_truth的损失\n",
|
||
" 4. 使用优化器进行反向传播\n",
|
||
" 5. 循环以上步骤\n",
|
||
"3. 验证及测试\n",
|
||
" 1. 从验证或测试dataloader中获取批量数据\n",
|
||
" 2. 传入模型,验证时需要将模型输出与ground_truth进行比较得计算loss\n",
|
||
" 3. 将预测值与ground_truth进行比较,得出正确率\n",
|
||
" 4. 对整个训练集统计正确率,从而分析训练效果"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"id": "159fc93c-fa21-4a94-b460-dda9e8557a43",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"class SoftmaxTrainer():\n",
|
||
" def __init__(\n",
|
||
" self,\n",
|
||
" model,\n",
|
||
" train_dataset: Union[Dataset, DataLoader],\n",
|
||
" eval_dataset: Union[Dataset, DataLoader],\n",
|
||
" test_dataset: Union[Dataset, DataLoader],\n",
|
||
" optimizer: Literal['torch', 'manual'],\n",
|
||
" criterion: Literal['torch', 'manual'],\n",
|
||
" learning_rate: float,\n",
|
||
" num_epochs: int,\n",
|
||
" batch_size: int,\n",
|
||
" ):\n",
|
||
" self.model = model\n",
|
||
" self.learning_rate = learning_rate\n",
|
||
" self.num_epochs = num_epochs\n",
|
||
" self.batch_size = batch_size\n",
|
||
"\n",
|
||
" if isinstance(train_dataset, Dataset):\n",
|
||
" self.train_dataloader = DataLoader(\n",
|
||
" dataset=train_dataset, batch_size=batch_size, shuffle=True, num_workers=cpu_count()\n",
|
||
" )\n",
|
||
" else:\n",
|
||
" self.train_dataloader = train_dataset\n",
|
||
" if isinstance(eval_dataset, Dataset):\n",
|
||
" self.eval_dataloader = DataLoader(\n",
|
||
" dataset=eval_dataset, batch_size=batch_size, shuffle=True, num_workers=cpu_count()\n",
|
||
" )\n",
|
||
" else:\n",
|
||
" self.eval_dataloader = eval_dataset\n",
|
||
" if isinstance(test_dataset, Dataset):\n",
|
||
" self.test_dataloader = DataLoader(\n",
|
||
" dataset=test_dataset, batch_size=batch_size, shuffle=True, num_workers=cpu_count()\n",
|
||
" )\n",
|
||
" else:\n",
|
||
" self.test_dataloader = test_dataset\n",
|
||
"\n",
|
||
" if optimizer == 'torch':\n",
|
||
" self.optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)\n",
|
||
" else:\n",
|
||
" self.optimizer = My_Optimizer(model.parameters(), lr=learning_rate)\n",
|
||
"\n",
|
||
" if criterion == 'torch':\n",
|
||
" self.criterion = nn.CrossEntropyLoss()\n",
|
||
" self.softmax = nn.Softmax(dim=1)\n",
|
||
" else:\n",
|
||
" self.criterion = My_CrossEntropyLoss()\n",
|
||
" self.softmax = My_Softmax(dim=1)\n",
|
||
"\n",
|
||
" def train(self):\n",
|
||
" train_loss_curve = []\n",
|
||
" eval_loss_curve = []\n",
|
||
" eval_acc_curve = []\n",
|
||
" step = 0\n",
|
||
" total_train_steps = self.num_epochs * len(self.train_dataloader)\n",
|
||
" with tqdm(total=total_train_steps) as pbar:\n",
|
||
" for epoch in range(self.num_epochs):\n",
|
||
" total_train_loss = 0\n",
|
||
" for x, targets in self.train_dataloader:\n",
|
||
" x = x.to(device=device, dtype=torch.float32)\n",
|
||
" targets = targets.to(device=device, dtype=torch.long)\n",
|
||
"\n",
|
||
" self.optimizer.zero_grad()\n",
|
||
" output = self.model(x)\n",
|
||
" loss = self.criterion(output, targets)\n",
|
||
" total_train_loss += loss.item()\n",
|
||
" train_loss_curve.append(loss.item())\n",
|
||
" \n",
|
||
" loss.backward()\n",
|
||
" self.optimizer.step()\n",
|
||
" step += 1\n",
|
||
" pbar.update(1)\n",
|
||
"\n",
|
||
" avg_eval_loss, avg_eval_acc = self.eval()\n",
|
||
" eval_loss_curve.append(avg_eval_loss)\n",
|
||
" eval_acc_curve.append(avg_eval_acc)\n",
|
||
" log_info = {\n",
|
||
" 'Epoch': f'{epoch + 1}/{self.num_epochs}',\n",
|
||
" 'Total Train Loss': f'{total_train_loss:.2f}',\n",
|
||
" 'Scaled Total Valid Loss': f'{avg_eval_loss * len(self.train_dataloader):.2f}',\n",
|
||
" 'Avg Valid Acc': f'{avg_eval_acc:.2%}'\n",
|
||
" }\n",
|
||
" print(log_info)\n",
|
||
"\n",
|
||
" print('Avg Test Acc:', f'{self.test():.2%}')\n",
|
||
" self.plot_results(train_loss_curve, eval_loss_curve, eval_acc_curve)\n",
|
||
"\n",
|
||
" def eval(self):\n",
|
||
" total_eval_loss = 0\n",
|
||
" total_eval_acc = 0\n",
|
||
" with torch.inference_mode():\n",
|
||
" for x, targets in self.eval_dataloader:\n",
|
||
" x = x.to(device=device, dtype=torch.float32)\n",
|
||
" targets = targets.to(device=device, dtype=torch.long)\n",
|
||
" output = self.model(x)\n",
|
||
" loss = self.criterion(output, targets)\n",
|
||
" total_eval_loss += loss.item()\n",
|
||
" preds = self.softmax(output).argmax(dim=1)\n",
|
||
" total_eval_acc += (preds == targets).float().sum().item()\n",
|
||
" \n",
|
||
" avg_eval_loss = total_eval_loss / len(self.eval_dataloader)\n",
|
||
" num_eval_sample = len(self.eval_dataloader) * self.batch_size\n",
|
||
" avg_eval_acc = total_eval_acc / num_eval_sample\n",
|
||
" return avg_eval_loss, avg_eval_acc\n",
|
||
"\n",
|
||
" def test(self):\n",
|
||
" total_test_acc = 0\n",
|
||
" with torch.inference_mode():\n",
|
||
" for x, targets in self.test_dataloader:\n",
|
||
" x = x.to(device=device, dtype=torch.float32)\n",
|
||
" targets = targets.to(device=device, dtype=torch.long)\n",
|
||
" output = self.model(x)\n",
|
||
" preds = self.softmax(output).argmax(dim=1)\n",
|
||
" total_test_acc += (preds == targets).float().sum().item()\n",
|
||
" num_test_sample = len(self.test_dataloader) * self.batch_size\n",
|
||
" avg_test_acc = total_test_acc / num_test_sample\n",
|
||
" return avg_test_acc\n",
|
||
" \n",
|
||
" def plot_results(self, train_loss_curve, eval_loss_curve, eval_acc_curve):\n",
|
||
" fig, axes = plt.subplots(1, 2, figsize=(10, 4))\n",
|
||
" \n",
|
||
" axes[0].plot(train_loss_curve, label='Training Loss', color='blue')\n",
|
||
" axes[0].plot(\n",
|
||
" np.linspace(len(self.train_dataloader), len(train_loss_curve), len(eval_loss_curve), endpoint=True),\n",
|
||
" eval_loss_curve, label='Validation Loss', color='orange'\n",
|
||
" )\n",
|
||
" axes[0].set_xlabel('Step')\n",
|
||
" axes[0].set_ylabel('Loss')\n",
|
||
" axes[0].set_title('Loss Curve')\n",
|
||
" axes[0].legend()\n",
|
||
" axes[0].grid(True)\n",
|
||
" \n",
|
||
" axes[1].plot(eval_acc_curve, label='Validation Accuracy', color='green', marker='o')\n",
|
||
" axes[1].set_xlabel('Epoch')\n",
|
||
" axes[1].set_ylabel('Accuracy')\n",
|
||
" axes[1].set_title('Validation Accuracy Curve')\n",
|
||
" axes[1].legend()\n",
|
||
" axes[1].grid(True)\n",
|
||
" \n",
|
||
" plt.tight_layout()\n",
|
||
" plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "dbf78501-f5be-4008-986c-d331d531491f",
|
||
"metadata": {},
|
||
"source": [
|
||
"手动实现Flatten。\n",
|
||
"\n",
|
||
"原理很简单,就是把多维的张量拉直成一个向量。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"id": "74322629-8325-4823-b80f-f28182d577c1",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Flatten之前的x:\n",
|
||
"tensor([[[1., 2.],\n",
|
||
" [3., 4.]],\n",
|
||
"\n",
|
||
" [[5., 6.],\n",
|
||
" [7., 8.]]])\n",
|
||
"My_Flatten之后的x:\n",
|
||
"tensor([[1., 2., 3., 4.],\n",
|
||
" [5., 6., 7., 8.]])\n",
|
||
"nn.Flatten之后的x:\n",
|
||
"tensor([[1., 2., 3., 4.],\n",
|
||
" [5., 6., 7., 8.]])\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"class My_Flatten:\n",
|
||
" def __call__(self, x: torch.Tensor):\n",
|
||
" return self.forward(x)\n",
|
||
"\n",
|
||
" def forward(self, x: torch.Tensor):\n",
|
||
" x = x.view(x.shape[0], -1)\n",
|
||
" return x\n",
|
||
"\n",
|
||
"\n",
|
||
"# 测试\n",
|
||
"my_flatten = My_Flatten()\n",
|
||
"nn_flatten = nn.Flatten()\n",
|
||
"x = torch.tensor(\n",
|
||
" [[[1., 2.], [3., 4.]],\n",
|
||
" [[5., 6.], [7., 8.]]]\n",
|
||
")\n",
|
||
"print(f\"Flatten之前的x:\\n{x}\")\n",
|
||
"x_my_flatten = my_flatten(x)\n",
|
||
"print(f\"My_Flatten之后的x:\\n{x_my_flatten}\")\n",
|
||
"x_nn_flatten = nn_flatten(x)\n",
|
||
"print(f\"nn.Flatten之后的x:\\n{x_nn_flatten}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "35aee905-ae37-4faa-a7f1-a04cd8579f78",
|
||
"metadata": {},
|
||
"source": [
|
||
"手动实现softmax回归模型。\n",
|
||
"\n",
|
||
"模型很简单,主要由一个Flatten层和一个线性层组成。\n",
|
||
"\n",
|
||
"Flatten层主要用于将2维的图像展开,直接作为1维的特征量输入网络。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"id": "bb31a75e-464c-4b94-b927-b219a765e35d",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"class Model_3_1:\n",
|
||
" def __init__(self, num_classes):\n",
|
||
" self.flatten = My_Flatten()\n",
|
||
" self.linear = My_Linear(28 * 28, num_classes)\n",
|
||
" self.params = self.linear.params\n",
|
||
"\n",
|
||
" def __call__(self, x: torch.Tensor):\n",
|
||
" return self.forward(x)\n",
|
||
"\n",
|
||
" def forward(self, x: torch.Tensor):\n",
|
||
" x = self.flatten(x)\n",
|
||
" x = self.linear(x)\n",
|
||
" return x\n",
|
||
"\n",
|
||
" def to(self, device: str):\n",
|
||
" for param in self.params:\n",
|
||
" param.data = param.data.to(device=device)\n",
|
||
" return self\n",
|
||
"\n",
|
||
" def parameters(self):\n",
|
||
" return self.params"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "17e686d1-9c9a-4727-8fdc-9990d348c523",
|
||
"metadata": {},
|
||
"source": [
|
||
"训练与测试过程与之前手动实现的几乎一致。由于数据集的变化,对应超参数也进行了调整。\n",
|
||
"\n",
|
||
"数据集也使用了现成的FashionMNIST数据集,且划分了训练集和测试集。\n",
|
||
"\n",
|
||
"FashionMNIST数据集直接调用API获取。数据集的image为28*28的单通道灰白图片,label为单个数值标签。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"id": "02f7d7dc-e2a8-4127-b505-f31993a75131",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Train Dataset Size: 59000\n",
|
||
"Valid Dataset Size: 1000\n",
|
||
"Test Dataset Size: 10000\n",
|
||
"A Train Sample:\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 150x150 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"{'Image Type': <class 'torch.Tensor'>, 'Image Shape': torch.Size([1, 28, 28]), 'Label Type': <class 'int'>, 'Label Value': 2}\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"transform = transforms.Compose(\n",
|
||
" [\n",
|
||
" transforms.ToTensor(),\n",
|
||
" transforms.Normalize((0.5,), (0.5,)),\n",
|
||
" ]\n",
|
||
")\n",
|
||
"train_dataset = datasets.FashionMNIST(root=\"./dataset\", train=True, transform=transform, download=True)\n",
|
||
"eval_size = min(int(len(train_dataset) * 0.1), 1000)\n",
|
||
"train_dataset, eval_dataset = random_split(train_dataset, [len(train_dataset) - eval_size, eval_size])\n",
|
||
"test_dataset = datasets.FashionMNIST(root=\"./dataset\", train=False, transform=transform, download=True)\n",
|
||
"print('Train Dataset Size:', len(train_dataset))\n",
|
||
"print('Valid Dataset Size:', len(eval_dataset))\n",
|
||
"print('Test Dataset Size:', len(test_dataset))\n",
|
||
"\n",
|
||
"image, label = train_dataset[0]\n",
|
||
"sample = {\n",
|
||
" 'Image Type': type(image),\n",
|
||
" 'Image Shape': image.shape,\n",
|
||
" 'Label Type': type(label),\n",
|
||
" 'Label Value': label\n",
|
||
"}\n",
|
||
"print('A Train Sample:\\n')\n",
|
||
"image = image * 0.5 + 0.5 # 将图像从 [-1, 1] 还原到 [0, 1] 以便更好地可视化\n",
|
||
"plt.figure(figsize=(1.5, 1.5))\n",
|
||
"plt.imshow(image.squeeze(), cmap='gray')\n",
|
||
"plt.title(f\"Label: {label}\")\n",
|
||
"plt.axis('off')\n",
|
||
"plt.show()\n",
|
||
"print(sample)\n",
|
||
"\n",
|
||
"num_classes = 10"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "24594cbc-18b2-47eb-a526-c2ab37facf63",
|
||
"metadata": {},
|
||
"source": [
|
||
"开始训练。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"id": "d816dae1-5fbe-4c29-9597-19d66b5eb6b4",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"application/vnd.jupyter.widget-view+json": {
|
||
"model_id": "2cd0298a4a254c018e497a76ccfd0246",
|
||
"version_major": 2,
|
||
"version_minor": 0
|
||
},
|
||
"text/plain": [
|
||
" 0%| | 0/1160 [00:00<?, ?it/s]"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"{'Epoch': '1/20', 'Total Train Loss': '395.61', 'Scaled Total Valid Loss': '209.01', 'Avg Valid Acc': '59.18%'}\n",
|
||
"{'Epoch': '2/20', 'Total Train Loss': '199.74', 'Scaled Total Valid Loss': '160.59', 'Avg Valid Acc': '65.82%'}\n",
|
||
"{'Epoch': '3/20', 'Total Train Loss': '163.67', 'Scaled Total Valid Loss': '138.08', 'Avg Valid Acc': '67.68%'}\n",
|
||
"{'Epoch': '4/20', 'Total Train Loss': '144.33', 'Scaled Total Valid Loss': '124.88', 'Avg Valid Acc': '70.61%'}\n",
|
||
"{'Epoch': '5/20', 'Total Train Loss': '131.63', 'Scaled Total Valid Loss': '115.56', 'Avg Valid Acc': '71.97%'}\n",
|
||
"{'Epoch': '6/20', 'Total Train Loss': '122.55', 'Scaled Total Valid Loss': '111.07', 'Avg Valid Acc': '72.75%'}\n",
|
||
"{'Epoch': '7/20', 'Total Train Loss': '115.34', 'Scaled Total Valid Loss': '105.69', 'Avg Valid Acc': '72.75%'}\n",
|
||
"{'Epoch': '8/20', 'Total Train Loss': '109.65', 'Scaled Total Valid Loss': '101.89', 'Avg Valid Acc': '74.02%'}\n",
|
||
"{'Epoch': '9/20', 'Total Train Loss': '105.07', 'Scaled Total Valid Loss': '99.39', 'Avg Valid Acc': '74.61%'}\n",
|
||
"{'Epoch': '10/20', 'Total Train Loss': '101.13', 'Scaled Total Valid Loss': '97.08', 'Avg Valid Acc': '74.02%'}\n",
|
||
"{'Epoch': '11/20', 'Total Train Loss': '97.67', 'Scaled Total Valid Loss': '93.67', 'Avg Valid Acc': '74.41%'}\n",
|
||
"{'Epoch': '12/20', 'Total Train Loss': '94.52', 'Scaled Total Valid Loss': '90.90', 'Avg Valid Acc': '75.00%'}\n",
|
||
"{'Epoch': '13/20', 'Total Train Loss': '91.81', 'Scaled Total Valid Loss': '90.16', 'Avg Valid Acc': '74.61%'}\n",
|
||
"{'Epoch': '14/20', 'Total Train Loss': '89.44', 'Scaled Total Valid Loss': '86.88', 'Avg Valid Acc': '75.78%'}\n",
|
||
"{'Epoch': '15/20', 'Total Train Loss': '87.39', 'Scaled Total Valid Loss': '85.19', 'Avg Valid Acc': '76.56%'}\n",
|
||
"{'Epoch': '16/20', 'Total Train Loss': '85.36', 'Scaled Total Valid Loss': '84.65', 'Avg Valid Acc': '76.17%'}\n",
|
||
"{'Epoch': '17/20', 'Total Train Loss': '83.82', 'Scaled Total Valid Loss': '82.86', 'Avg Valid Acc': '76.07%'}\n",
|
||
"{'Epoch': '18/20', 'Total Train Loss': '81.66', 'Scaled Total Valid Loss': '81.72', 'Avg Valid Acc': '76.37%'}\n",
|
||
"{'Epoch': '19/20', 'Total Train Loss': '80.21', 'Scaled Total Valid Loss': '80.09', 'Avg Valid Acc': '77.15%'}\n",
|
||
"{'Epoch': '20/20', 'Total Train Loss': '78.73', 'Scaled Total Valid Loss': '78.63', 'Avg Valid Acc': '77.25%'}\n",
|
||
"Avg Test Acc: 75.25%\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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oYq3t7dy7949o+f37t1bcXV1TbMPhfmS6eVCmAmdTsf27dvp0qULFSpUMBz39vamb9++HDhwgJiYGACKFSvGP//8w6VLl9Ksy97eHhsbG/bs2cPDhw+zHENK/WlNK88rb731ltFjlUpFjx492Lx5M7GxsYbjK1eupHTp0obpXqGhoURHR9OnTx/u3btn+NFoNPj7+7N79+58i1kIIUTOaDQaevfuTVhYmNGU7WXLllGyZElatmwJgK2treFeV51Ox/3793FycqJq1aocP348W9fcvHkzAKNHjzY6ntbIoL29veHPWq2W+/fvU6lSJYoVK5bt6z57fS8vL/r06WM4Zm1tzejRo4mNjWXv3r1G5Xv16oWbm5vhcdOmTYHkBb4ys2LFCtRqNd26dTMc69OnD1u2bDF6///tt98oXrw4o0aNSlVHyqjyb7/9hkqlYvLkyemWyYk333wz1bFn+z0+Pp579+7x0ksvARj6Xa/Xs379ejp27JjmKHtKTD179sTOzo6lS5cazm3bto179+7Rv3//DGOLiYnJ1888gwYNMmorJP++tVota9euNRzbvn070dHR9OrVCwBFUfjtt9/o2LEjiqIYfe4JDAzk0aNHOf77KUxDkm4hzMTdu3d58uQJVatWTXWuevXq6PV6bty4AcC0adOIjo6mSpUq+Pn58e6773Lq1ClDeVtbW7788ku2bNlCyZIladasGTNmzCAyMjLDGFxcXAAy3N4lN6ysrChTpkyq47169eLp06eGaV6xsbFs3ryZHj16GN5UU75geOWVV/D09DT62b59e5r3CwohhDC9lIXSli1bBsDNmzfZv38/vXv3Ntw+pNfr+eabb6hcuTK2trYUL14cT09PTp06xaNHj7J1vevXr6NWqw1TplOk9f769OlTJk2aZNgeM+W60dHR2b7us9evXLlyqgWzUqajX79+3ej487dzpSTgWfnS/Ndff6Vhw4bcv3+fy5cvc/nyZerWrUtiYiKrV682lLty5QpVq1bNcMG5K1euUKpUKdzd3TO9bnaUL18+1bEHDx4wZswYSpYsib29PZ6enoZyKf1+9+5dYmJiqFmzZob1FytWjI4dOxr+fkHy1PLSpUvzyiuvZPhcFxeXfPvMA2m3vXbt2lSrVo2VK1cajq1cuZLixYsb4r179y7R0dH88MMPqT7zDBkyBEA+9xQyck+3EIVQs2bNuHLlChs2bGD79u389NNPfPPNN8yfP5/XX38dSP5Gv2PHjqxfv55t27YxceJEpk+fzq5du6hbt26a9VaqVAkrKytOnz6dpTjS++Y7vX28nx3JeNZLL72Er68vq1atom/fvvz+++88ffrU8I0vYNh39JdffsHLyytVHaZcuVYIIUT66tevT7Vq1Vi+fDkffvghy5cvR1EUo1XLP//8cyZOnMhrr73GJ598gru7O2q1mrFjx+brvtOjRo1i0aJFjB07lkaNGuHq6opKpaJ3794Ftt91yhcPz1P+//7n9Fy6dMmw4FrlypVTnV+6dCnDhw/PfYDPyO77PpBqpBeSR6cPHjzIu+++S506dXByckKv19O2bdsc9fvAgQNZvXo1Bw8exM/Pj40bNzJixIhMVwqvVq0af//9Nzdu3MDHxyfT62TU/rR+j2m1HZIHGz777DPu3buHs7MzGzdupE+fPobPMil90L9//1T3fqeoVatWpvEK8yGfUoUwE56enjg4OHDhwoVU586fP49arTZ6Q3B3d2fIkCEMGTKE2NhYmjVrxpQpUwxJN0DFihV5++23efvtt7l06RJ16tRh5syZ/Prrr2nG4ODgwCuvvMKuXbuy9AaU8m18dHS00fHnv8XPip49e/Ltt98SExPDypUr8fX1NUw1S2kLQIkSJcx2KxQhhBBp69evHxMnTuTUqVMsW7aMypUr8+KLLxrOr1mzxrAv8rOio6MpXrx4tq5Vrlw59Hq9YXQ3RVrvr2vWrGHQoEHMnDnTcCw+Pj7V+1p2pleXK1eOU6dOodfrjZK+8+fPG87nhaVLl2Jtbc0vv/ySKuE7cOAAs2fPJjw8nLJly1KxYkUOHz6MVqtNd3G2ihUrsm3bNh48eJDuaHdevO8/fPiQnTt3MnXqVCZNmmQ4/vwtc56enri4uGRpm9K2bdvi6enJ0qVL8ff358mTJ1laHK1jx44sX76cX3/9lQkTJmRa3s3NLVXbIbn9z94amJlevXoxdepUfvvtN0qWLElMTAy9e/c2nE9ZdV+n08lnHgsh08uFMBMajYY2bdqwYcMGo/veoqKiWLZsGU2aNDFM/35+Sw0nJycqVapEQkICkLzy9/PbhVSsWBFnZ2dDmfRMnjwZRVEYMGCA0T3WKY4dO2bY6qJcuXJoNBr27dtnVOb777/PWqOf0atXLxISEliyZAlbt26lZ8+eRucDAwNxcXHh888/R6vVpnr+3bt3s31NIYQQBSNlVHvSpEmcOHEi1d7cGo0m1cju6tWruXXrVrav1a5dOwBmz55tdDwkJCRV2bSu+91336UauU3ZWzqthOt57du3JzIy0mj6cFJSEt999x1OTk40b948K83I1NKlS2natCm9evWie/fuRj/vvvsugGG7rG7dunHv3j3mzJmTqp6U9nfr1g1FUZg6dWq6ZVxcXChevHiu3vdTviB4vt+f//2o1Wq6dOnC77//btiyLK2YIHm2W58+fVi1ahWLFy/Gz88vSyPB3bt3x8/Pj88++4ywsLBU5x8/fsxHH31keFyxYkUOHTpEYmKi4dgff/xhuP0vq6pXr46fnx8rV65k5cqVeHt706xZM8N5jUZDt27d+O2339L80kE+8xQ+MtItRAFbuHAhW7duTXV8zJgxfPrpp4SGhtKkSRNGjBiBlZUV//vf/0hISGDGjBmGsi+88AIBAQHUr18fd3d3jh49ypo1awzbsVy8eJGWLVvSs2dPXnjhBaysrFi3bh1RUVFG36SmpXHjxsydO5cRI0ZQrVo1BgwYQOXKlXn8+DF79uxh48aNfPrppwC4urrSo0cPvvvuO1QqFRUrVuSPP/7I0X1G9erVo1KlSnz00UckJCQYTS2H5Df6efPmMWDAAOrVq0fv3r3x9PQkPDycTZs28fLLL6f5YUIIIYTplS9fnsaNG7NhwwaAVEn3q6++yrRp0xgyZAiNGzfm9OnTLF26NFujhynq1KlDnz59+P7773n06BGNGzdm586dXL58OVXZV199lV9++QVXV1deeOEFwsLC2LFjBx4eHqnq1Gg0fPnllzx69AhbW1teeeUVSpQokarO4cOH87///Y/Bgwdz7NgxfH19WbNmDX/++SchISF5snDX4cOHDVuSpaV06dLUq1ePpUuX8v777zNw4EB+/vlnxo8fz5EjR2jatClxcXHs2LGDESNG0LlzZ1q0aMGAAQOYPXs2ly5dMkz13r9/Py1atDBc6/XXX+eLL77g9ddfp0GDBuzbt4+LFy9mOXYXFxfDWjNarZbSpUuzfft2rl69mqrs559/zvbt22nevDnDhw+nevXqREREsHr1ag4cOECxYsUMZQcOHMjs2bPZvXs3X375ZZZisba2Zu3atbRq1YpmzZrRs2dPXn75Zayt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",
|
||
"text/plain": [
|
||
"<Figure size 1000x400 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"hyper_params = {\n",
|
||
" 'learning_rate': 2.0e-1,\n",
|
||
" 'num_epochs': 20,\n",
|
||
" 'batch_size': 1024,\n",
|
||
"}\n",
|
||
"\n",
|
||
"model = Model_3_1(num_classes).to(device)\n",
|
||
"\n",
|
||
"trainer = SoftmaxTrainer(\n",
|
||
" model=model, \n",
|
||
" train_dataset=train_dataset, eval_dataset=eval_dataset, test_dataset=test_dataset, \n",
|
||
" optimizer='manual', criterion='manual', **hyper_params\n",
|
||
")\n",
|
||
"trainer.train()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "a49d0165-aeb7-48c0-9b67-956bb08cb356",
|
||
"metadata": {},
|
||
"source": [
|
||
"模型正常收敛。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "3ef5240f-8a11-4678-bfce-f1cbc7e71b77",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 问题2\n",
|
||
"\n",
|
||
"**利用torch.nn实现softmax回归在Fashion-MNIST数据集上进行训练和测试,并从loss,训练集以及测试集上的准确率等多个角度对结果进行分析**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "5c4a88c6-637e-4af5-bed5-f644685dcabc",
|
||
"metadata": {},
|
||
"source": [
|
||
"使用torch.nn实现模型。\n",
|
||
"\n",
|
||
"将之前的Model_3_1中的手动实现函数改为torch.nn内置函数即可,再加上继承nn.Module以使用torch.nn内置模型模板特性。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 20,
|
||
"id": "0163b9f7-1019-429c-8c29-06436d0a4c98",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"class Model_3_2(nn.Module):\n",
|
||
" def __init__(self, num_classes):\n",
|
||
" super(Model_3_2, self).__init__()\n",
|
||
" self.flatten = nn.Flatten()\n",
|
||
" self.linear = nn.Linear(28 * 28, num_classes)\n",
|
||
"\n",
|
||
" def forward(self, x: torch.Tensor):\n",
|
||
" x = self.flatten(x)\n",
|
||
" x = self.linear(x)\n",
|
||
" return x"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "6e765ad7-c1c6-4166-bd7f-361666bd4016",
|
||
"metadata": {},
|
||
"source": [
|
||
"训练与测试过程与之前手动实现的几乎一致。"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"id": "6d241c05-b153-4f56-a845-0f2362f6459b",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"application/vnd.jupyter.widget-view+json": {
|
||
"model_id": "36bd868142c14b278e0c64868d513a84",
|
||
"version_major": 2,
|
||
"version_minor": 0
|
||
},
|
||
"text/plain": [
|
||
" 0%| | 0/1160 [00:00<?, ?it/s]"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"{'Epoch': '1/20', 'Total Train Loss': '64.68', 'Scaled Total Valid Loss': '44.60', 'Avg Valid Acc': '73.63%'}\n",
|
||
"{'Epoch': '2/20', 'Total Train Loss': '42.82', 'Scaled Total Valid Loss': '37.81', 'Avg Valid Acc': '75.00%'}\n",
|
||
"{'Epoch': '3/20', 'Total Train Loss': '38.36', 'Scaled Total Valid Loss': '34.98', 'Avg Valid Acc': '76.66%'}\n",
|
||
"{'Epoch': '4/20', 'Total Train Loss': '36.04', 'Scaled Total Valid Loss': '33.33', 'Avg Valid Acc': '77.15%'}\n",
|
||
"{'Epoch': '5/20', 'Total Train Loss': '34.46', 'Scaled Total Valid Loss': '31.78', 'Avg Valid Acc': '77.83%'}\n",
|
||
"{'Epoch': '6/20', 'Total Train Loss': '33.34', 'Scaled Total Valid Loss': '30.91', 'Avg Valid Acc': '78.22%'}\n",
|
||
"{'Epoch': '7/20', 'Total Train Loss': '32.49', 'Scaled Total Valid Loss': '30.01', 'Avg Valid Acc': '78.81%'}\n",
|
||
"{'Epoch': '8/20', 'Total Train Loss': '31.77', 'Scaled Total Valid Loss': '29.30', 'Avg Valid Acc': '79.49%'}\n",
|
||
"{'Epoch': '9/20', 'Total Train Loss': '31.17', 'Scaled Total Valid Loss': '28.90', 'Avg Valid Acc': '79.30%'}\n",
|
||
"{'Epoch': '10/20', 'Total Train Loss': '30.72', 'Scaled Total Valid Loss': '28.57', 'Avg Valid Acc': '79.69%'}\n",
|
||
"{'Epoch': '11/20', 'Total Train Loss': '30.29', 'Scaled Total Valid Loss': '28.35', 'Avg Valid Acc': '79.69%'}\n",
|
||
"{'Epoch': '12/20', 'Total Train Loss': '29.93', 'Scaled Total Valid Loss': '27.78', 'Avg Valid Acc': '80.86%'}\n",
|
||
"{'Epoch': '13/20', 'Total Train Loss': '29.60', 'Scaled Total Valid Loss': '27.42', 'Avg Valid Acc': '80.76%'}\n",
|
||
"{'Epoch': '14/20', 'Total Train Loss': '29.29', 'Scaled Total Valid Loss': '27.29', 'Avg Valid Acc': '81.15%'}\n",
|
||
"{'Epoch': '15/20', 'Total Train Loss': '29.05', 'Scaled Total Valid Loss': '27.15', 'Avg Valid Acc': '81.05%'}\n",
|
||
"{'Epoch': '16/20', 'Total Train Loss': '28.81', 'Scaled Total Valid Loss': '26.83', 'Avg Valid Acc': '81.74%'}\n",
|
||
"{'Epoch': '17/20', 'Total Train Loss': '28.57', 'Scaled Total Valid Loss': '26.79', 'Avg Valid Acc': '81.84%'}\n",
|
||
"{'Epoch': '18/20', 'Total Train Loss': '28.38', 'Scaled Total Valid Loss': '26.50', 'Avg Valid Acc': '81.84%'}\n",
|
||
"{'Epoch': '19/20', 'Total Train Loss': '28.22', 'Scaled Total Valid Loss': '26.42', 'Avg Valid Acc': '82.13%'}\n",
|
||
"{'Epoch': '20/20', 'Total Train Loss': '28.05', 'Scaled Total Valid Loss': '26.12', 'Avg Valid Acc': '81.84%'}\n",
|
||
"Avg Test Acc: 80.20%\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 1000x400 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"hyper_params = {\n",
|
||
" 'learning_rate': 2.0e-2,\n",
|
||
" 'num_epochs': 20,\n",
|
||
" 'batch_size': 1024,\n",
|
||
"}\n",
|
||
"\n",
|
||
"model = Model_3_2(num_classes).to(device)\n",
|
||
"\n",
|
||
"trainer = SoftmaxTrainer(\n",
|
||
" model=model, \n",
|
||
" train_dataset=train_dataset, eval_dataset=eval_dataset, test_dataset=test_dataset, \n",
|
||
" optimizer='manual', criterion='manual', **hyper_params\n",
|
||
")\n",
|
||
"trainer.train()"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3 (ipykernel)",
|
||
"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.11.13"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|