diff --git a/.windsurf/rules/readexcelfilerules.md b/.windsurf/rules/readexcelfilerules.md index 13aa180..0300044 100644 --- a/.windsurf/rules/readexcelfilerules.md +++ b/.windsurf/rules/readexcelfilerules.md @@ -1,18 +1,20 @@ --- trigger: always_on --- -1. 读取ExcelFile/20251218161818.xlsx文件,这个是其他系统导出的Excel模板文件,文件名称里面是时间信息,里面有多个Sheet,每个Sheet都是一个表 +1. 读取ExcelFile/20260120155036.xlsx文件,这个是其他系统导出的Excel模板文件,文件名称里面是时间信息,里面有多个Sheet,每个Sheet都是一个表 2. 根据这个Excel文件和里面的多个Sheet帮我建立一个多个数据模型,数据模型建立在FATrace.Model/FileModel 下面 3. 数据模型/表的翻译如下: - 工厂-入库 :FactoryInbound - 工厂-领料:FactoryMaterial Withdrawal - 工厂-出入库:**FactoryInventoryTransaction** - 工厂-原料生产信息:FactoryProductionRecord + 工厂-成品入库 :FactoryInbound + 工厂-成品入库与出库:FactoryInOutbound 工厂-成品出库:FactoryOutbound + 工厂-包袋生产:FactoryProductionRecord + 工厂-原料入库:FactoryRawInbound + 工厂-原料出库:FactoryRawOutbound + 工厂-原料出入库:FactoryRawInOutbound OEM-入库:OEMInbound OEM-出库:OEMOutbound - OEM-出入库:OEMInventoryTransaction - OEM-原料使用信息:OEMRawUsageInfo + OEM-出入库:OEMInOutbound + OEM-原料使用:OEMRawUsageInfo 4. 每个表/模型的字段属性的名称,你可以读取excel里面的列头中文进行翻译,要求简洁。 很多的字段属性在FATrace.Model下其他的表/模型里面有有了,你可以借鉴他们的属性字段英文名称,这样属性字段能统一。 这些sheet里面的数据我后期只是展示用,表/模型的主键用long,其他Excel数据属性字段数据类型全部用string 类型, @@ -22,52 +24,59 @@ trigger: always_on 8. 有不理解的地方需要跟我确认,你要列一个任务清单,一个一个的执行 9. 你可以联网查询你需要的内容 10. 这些逻辑放到FATrace.WPLApp.Services.ReadFileServices 中,查询界面(View + ViewModel)放到FATrace.WPLApp中 - - - 11. 每个Sheet的列头内容 -工厂-入库 +工厂-原料入库 -| 产地 | 原料代码 | 原料名称 | 重量 | 登录日 | 登录时间 | 登录日期时间 | -| ---- | -------- | -------- | ---- | ------ | -------- | ------------ | +| 产地 | 原料代码 | 原料名称 | 重量(KG) | 登录日期时间 | +| ---- | -------- | -------- | -------- | ------------ | -工厂-领料 +工厂-原料出库 -| 产地 | 原料代码 | 原料名称 | 重量 | 登录日 | 登录时间 | 登录日期时间 | -| ---- | -------- | -------- | ---- | ------ | -------- | ------------ | +| 产地 | 原料代码 | 原料名称 | 重量(KG) | 登录日期时间 | +| ---- | -------- | -------- | -------- | ------------ | -工厂-出入库 +工厂-原料出入库 -| 入库时间 | 出库时间 | 产地 | 原料代码 | 原料名称 | 入库总重量KG | 出库总重量KG | 剩余重量KG | -| -------- | -------- | ---- | -------- | -------- | ------------ | ------------ | ---------- | +| 入库时间 | 出库时间 | 产地 | 原料代码 | 原料名称 | 入库总重量(KG) | 出库总重量(KG) | 剩余重量(KG) | +| -------- | -------- | ---- | -------- | -------- | -------------- | -------------- | ------------ | -工厂-原料生产信息 +工厂-包袋生产 -| 原料编号 | 原料名称 | 产地 | 内袋二维码 | 外箱二维码 | 批号 | 保质期 | 称重重量(g) | 配料日期 | 剩余重量(Kg) | 入库总重量(Kg) | 称重时间 | 操作者 | 确认者 | 外箱扫码时间 | +| 原料编号 | 原料名称 | 产地 | 内袋二维码 | 外箱二维码 | 批号 | 保质期 | 称重重量(G) | 配料日期 | 剩余重量(KG) | 入库总重量(KG) | 称重时间 | 操作者 | 确认者 | 外箱扫码时间 | | -------- | -------- | ---- | ---------- | ---------- | ---- | ------ | ----------- | -------- | ------------ | -------------- | -------- | ------ | ------ | ------------ | +工厂-成品入库 + +| 批号 | 重量(G) | 保质期 | 产地 | 原料代码 | 原料名称 | 序号 | 登录日期时间 | +| ---- | ------- | ------ | ---- | -------- | -------- | ---- | ------------ | + 工厂-成品出库 -| 批号 | 重量 | 保质期 | 产地 | 原料代码 | 原料名称 | 序号 | 登录日 | 登录时间 | 登录日期时间 | -| ---- | ---- | ------ | ---- | -------- | -------- | ---- | ------ | -------- | ------------ | +| 批号 | 重量(G) | 保质期 | 产地 | 原料代码 | 原料名称 | 序号 | 登录日期时间 | +| ---- | ------- | ------ | ---- | -------- | -------- | ---- | ------------ | + +工厂-成品入库与出库 + +| 入库时间 | 出库时间 | 产地 | 批号 | 原料代码 | 原料名称 | 入库总箱数 | 出库总箱数 | 剩余箱数 | +| -------- | -------- | ---- | ---- | -------- | -------- | ---------- | ---------- | -------- | OEM-入库 -| 批号 | 重量 | 保质期 | 产地 | 原料代码 | 原料名称 | 序号 | 登录日 | 登录时间 | 登录日期时间 | -| ---- | ---- | ------ | ---- | -------- | -------- | ---- | ------ | -------- | ------------ | +| 批号 | 重量(G) | 保质期 | 产地 | 原料代码 | 原料名称 | 序号 | 登录日期时间 | +| ---- | ------- | ------ | ---- | -------- | -------- | ---- | ------------ | OEM-出库 -| 批号 | 重量 | 保质期 | 产地 | 原料代码 | 原料名称 | 序号 | 登录日 | 登录时间 | 登录日期时间 | -| ---- | ---- | ------ | ---- | -------- | -------- | ---- | ------ | -------- | ------------ | +| 批号 | 重量(G) | 保质期 | 产地 | 原料代码 | 原料名称 | 序号 | 登录日期时间 | +| ---- | ------- | ------ | ---- | -------- | -------- | ---- | ------------ | OEM-出入库 -| 入库时间 | 出库时间 | 产地 | 原料代码 | 原料名称 | 入库总重量KG | 出库总重量KG | 剩余重量KG | -| -------- | -------- | ---- | -------- | -------- | ------------ | ------------ | ---------- | +| 入库时间 | 出库时间 | 产地 | 批号 | 原料代码 | 原料名称 | 入库总箱数 | 出库总箱数 | 剩余箱数 | +| -------- | -------- | ---- | ---- | -------- | -------- | ---------- | ---------- | -------- | -OEM-原料使用信息 +OEM-原料使用 -| 原料使用时间 | 内袋二维码 | 原料产地 | 原料名称 | 原料代码 | 视频链接 | -| ------------ | ---------- | -------- | -------- | -------- | -------- | +| 原料使用时间 | 内袋二维码 | 原料产地 | 原料名称 | 原料代码 | +| ------------ | ---------- | -------- | -------- | -------- | diff --git a/FATrace.App/frmMain.Designer.cs b/FATrace.App/frmMain.Designer.cs index f715ea5..ffa9113 100644 --- a/FATrace.App/frmMain.Designer.cs +++ b/FATrace.App/frmMain.Designer.cs @@ -105,6 +105,7 @@ namespace FATrace.App dtpSearchStartTime = new DateTimePicker(); dataGridView1 = new DataGridView(); label22 = new Label(); + btnReprint = new Button(); statusStrip1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit(); splitContainer1.Panel1.SuspendLayout(); @@ -346,6 +347,7 @@ namespace FATrace.App // panel3 // panel3.BorderStyle = BorderStyle.FixedSingle; + panel3.Controls.Add(btnReprint); panel3.Controls.Add(pictureBox4); panel3.Controls.Add(btnWeightPrint); panel3.Controls.Add(txtCode); @@ -681,6 +683,7 @@ namespace FATrace.App // // btnRawName3 // + btnRawName3.Enabled = false; btnRawName3.Font = new Font("Microsoft YaHei UI", 10.5F, FontStyle.Bold, GraphicsUnit.Point, 134); btnRawName3.Location = new Point(321, 53); btnRawName3.Name = "btnRawName3"; @@ -692,6 +695,7 @@ namespace FATrace.App // // btnRawName2 // + btnRawName2.Enabled = false; btnRawName2.Font = new Font("Microsoft YaHei UI", 10.5F, FontStyle.Bold, GraphicsUnit.Point, 134); btnRawName2.Location = new Point(24, 107); btnRawName2.Name = "btnRawName2"; @@ -980,6 +984,18 @@ namespace FATrace.App label22.Text = "历史数据"; label22.TextAlign = ContentAlignment.MiddleCenter; // + // btnReprint + // + btnReprint.Font = new Font("微软雅黑", 14.25F, FontStyle.Bold, GraphicsUnit.Point, 134); + btnReprint.ForeColor = SystemColors.ControlDarkDark; + btnReprint.Location = new Point(670, 5); + btnReprint.Name = "btnReprint"; + btnReprint.Size = new Size(190, 44); + btnReprint.TabIndex = 17; + btnReprint.Text = "重新打印当前"; + btnReprint.UseVisualStyleBackColor = true; + btnReprint.Click += btnReprint_Click; + // // frmMain // AutoScaleDimensions = new SizeF(7F, 17F); @@ -1102,5 +1118,6 @@ namespace FATrace.App private PictureBox pictureBox4; private TextBox txtOpName; private Label label28; + private Button btnReprint; } } \ No newline at end of file diff --git a/FATrace.App/frmMain.cs b/FATrace.App/frmMain.cs index e40f68b..16a2a28 100644 --- a/FATrace.App/frmMain.cs +++ b/FATrace.App/frmMain.cs @@ -664,23 +664,24 @@ namespace FATrace.App //确认数据 // 显示消息框,并等待用户响应 - DialogResult result = MessageBox.Show("确定要【打印】操作吗?", "确认操作", MessageBoxButtons.OKCancel); - if (result==DialogResult.Cancel) + DialogResult result = frmMessage.ShowConfirm("确定要【打印】操作吗?", "确认操作", this); + if (result == DialogResult.Cancel) { return; } - if (CurWeight<2.0) + if (CurWeight < 2.0) { //确认数据 // 显示消息框,并等待用户响应 - DialogResult resultWeightCheck = MessageBox.Show("检测到当前的重量小于2g,确定要【打印】操作吗?", "确认操作", MessageBoxButtons.OKCancel); + DialogResult resultWeightCheck = frmMessage.ShowConfirm("检测到当前的重量小于2g,确定要【打印】操作吗?", "确认操作", this); if (resultWeightCheck == DialogResult.Cancel) { return; } } - + + //新的剩余重量 Kg var NewRemainWeight = CurSelectedRawProInput.RemainWeight - CurWeight / 1000.0; @@ -726,7 +727,7 @@ namespace FATrace.App RawName = CurSelectedRawProInput.RawName, RemainWeight = NewRemainWeight, Weight = CurWeight, - DeliveryDate= DateTime.Now.ToString("yyyy-MM-dd"), + DeliveryDate = DateTime.Now.ToString("yyyy-MM-dd"), WeightTime = DateTime.Now, StockWeight = CurSelectedRawProInput.Weight, }).ExecuteAffrows(); @@ -786,13 +787,19 @@ namespace FATrace.App } /// - /// 格式化重量显示,整数部分至少2位(不足补0),小数部分固定2位 + /// 格式化重量显示,自动适配整数部分位数(2-4位),小数部分固定2位 /// /// 原始重量值 - /// 格式化后的重量字符串(如:09.50, 81.10, 100.00) + /// /// 格式化后的重量字符串(如:09.50, 81.10, 100.00, 1000.00) private string FormatWeight(double weight) { - return weight.ToString("00.00"); + // 根据重量值大小决定格式 + if (weight >= 1000) + return weight.ToString("0000.00"); // 四位整数:1000.00-9999.99 + else if (weight >= 100) + return weight.ToString("000.00"); // 三位整数:100.00-999.99 + else + return weight.ToString("00.00"); // 两位整数:00.00-99.99 } /// @@ -1276,5 +1283,62 @@ namespace FATrace.App } } + + /// + /// 重新打印之前最新的一个 + /// + /// + /// + private void btnReprint_Click(object sender, EventArgs e) + { + try + { + if (CurSelectedRawProInput == null) + { + MessageBox.Show("请先选择要称重的产品", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + + var LastData = FSqlContext.FDb.Select().OrderByDescending(a => a.WeightTime).First(); + if (LastData == null) + { + MessageBox.Show("没有找到最新的消息", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + + // 显示消息框,并等待用户响应 + DialogResult result = frmMessage.ShowConfirm($"确定要【重复打印】{LastData.InBagCode} 条码数据吗?", "确认操作", this); + if (result == DialogResult.Cancel) + { + return; + } + + // 执行打印 + try + { + UpdateStatusLabel(tslPrintState, "正在打印...", Color.Goldenrod, Color.White); + CurZebraPrint.PrintWeight(LastData.InBagCode!, CurSelectedRawProInput.RawName!, + CurWeight, + CurSelectedRawProInput.Batch!, + CurSelectedRawProInput.ShelfLife + ); + SetPrinterStatusOk("打印成功"); + logger.Info($"打印成功:{CurSelectedRawProInput.RawName} {CurWeight}g 批号{CurSelectedRawProInput.Batch}"); + } + catch (Exception ex) + { + SetPrinterStatusFail($"打印失败:{ex.Message}"); + logger.Error(ex, "打印失败"); + MessageBox.Show($"打印失败:{ex.Message}", "打印机错误", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + catch (Exception ex) + { + logger.Error(String.Format("ErrSource : {0} ErrMsg : {1}", ex.StackTrace.ToString(), ex.Message.ToString())); + } + + + } } } diff --git a/FATrace.App/frmMessage.Designer.cs b/FATrace.App/frmMessage.Designer.cs new file mode 100644 index 0000000..a4fafa9 --- /dev/null +++ b/FATrace.App/frmMessage.Designer.cs @@ -0,0 +1,94 @@ +namespace FATrace.App +{ + partial class frmMessage + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmMessage)); + lblMessage = new Label(); + btnTrue = new Button(); + bntCancel = new Button(); + SuspendLayout(); + // + // lblMessage + // + lblMessage.Font = new Font("微软雅黑", 21.75F, FontStyle.Bold, GraphicsUnit.Point, 134); + lblMessage.ForeColor = Color.Blue; + lblMessage.Location = new Point(22, 36); + lblMessage.Name = "lblMessage"; + lblMessage.Size = new Size(710, 165); + lblMessage.TabIndex = 0; + lblMessage.Text = "消息内容"; + lblMessage.TextAlign = ContentAlignment.MiddleCenter; + // + // btnTrue + // + btnTrue.Font = new Font("Microsoft YaHei UI", 21.75F, FontStyle.Bold, GraphicsUnit.Point, 134); + btnTrue.ForeColor = SystemColors.ControlDarkDark; + btnTrue.Location = new Point(180, 246); + btnTrue.Name = "btnTrue"; + btnTrue.Size = new Size(146, 66); + btnTrue.TabIndex = 1; + btnTrue.Text = "确 认"; + btnTrue.UseVisualStyleBackColor = true; + btnTrue.Click += btnTrue_Click; + // + // bntCancel + // + bntCancel.Font = new Font("Microsoft YaHei UI", 21.75F, FontStyle.Bold, GraphicsUnit.Point, 134); + bntCancel.ForeColor = SystemColors.ControlDarkDark; + bntCancel.Location = new Point(384, 246); + bntCancel.Name = "bntCancel"; + bntCancel.Size = new Size(146, 66); + bntCancel.TabIndex = 2; + bntCancel.Text = "取 消"; + bntCancel.UseVisualStyleBackColor = true; + bntCancel.Click += bntCancel_Click; + // + // frmMessage + // + AutoScaleDimensions = new SizeF(7F, 17F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(744, 398); + Controls.Add(bntCancel); + Controls.Add(btnTrue); + Controls.Add(lblMessage); + Icon = (Icon)resources.GetObject("$this.Icon"); + MaximizeBox = false; + MinimizeBox = false; + Name = "frmMessage"; + Text = "消息确认"; + ResumeLayout(false); + } + + #endregion + + private Label lblMessage; + private Button btnTrue; + private Button bntCancel; + } +} \ No newline at end of file diff --git a/FATrace.App/frmMessage.cs b/FATrace.App/frmMessage.cs new file mode 100644 index 0000000..f2378a2 --- /dev/null +++ b/FATrace.App/frmMessage.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace FATrace.App +{ + public partial class frmMessage : Form + { + public frmMessage() + { + InitializeComponent(); + + StartPosition = FormStartPosition.CenterParent; + FormBorderStyle = FormBorderStyle.FixedDialog; + ShowInTaskbar = false; + AcceptButton = btnTrue; + CancelButton = bntCancel; + } + + /// + /// 显示确认对话框(OK/Cancel)。 + /// + /// 提示内容 + /// 标题 + /// 父窗口 + /// DialogResult.OK 表示确认;DialogResult.Cancel 表示取消 + public static DialogResult ShowConfirm(string message, string title = "确认操作", IWin32Window? owner = null) + { + using (var f = new frmMessage()) + { + if (!string.IsNullOrWhiteSpace(title)) + f.Text = title; + + f.SetMessageText(message); + + return owner == null ? f.ShowDialog() : f.ShowDialog(owner); + } + } + + /// + /// 设置提示文本。 + /// + /// 提示内容 + private void SetMessageText(string message) + { + lblMessage.Text = (message ?? string.Empty).Trim(); + } + + private void btnTrue_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.OK; + Close(); + } + + private void bntCancel_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Cancel; + Close(); + } + } +} diff --git a/FATrace.App/frmMessage.resx b/FATrace.App/frmMessage.resx new file mode 100644 index 0000000..893cbf0 --- /dev/null +++ b/FATrace.App/frmMessage.resx @@ -0,0 +1,1253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABABMLAAATCwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAWAAAAJgAAADUAAABLAAAAXAAAAGoAAABpAAAAaQAA + AGkAAABpAAAAagAAAFwAAABLAAAANQAAACYAAAAWAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAkAAAATgAAAH4AAACqAAAAywAA + AOEAAADzAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAA + AOEAAADLAAAAqgAAAH4AAABOAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAA + AFQAAACQAAAA0QAAAO8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADvAAAA0QAA + AJAAAABUAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAdAAAAYAAAAK8AAADrAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADrAAAArwAAAGAAAAAdAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAABDAAAAnwAAAOgAAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAOgAAACfAAAAQwAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAwAAABjAAAAxwAAAP4AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AgUA/wMJAP8FDgD/BQ4A/wUOAP8FDgD/BQ4A/wUNAP8DCQD/AgQA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD+AAAAxwAAAGMAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAABnAAAA1AAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8FDAD/DB4A/xU0AP8dTAD/JmIA/ytwAP8wfAD/M4UA/zaP + AP83kQD/N5IA/zeRAP82kAD/No4A/zOEAP8wfAD/Km8A/yZhAP8dSwD/FDQA/wweAP8FDAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANQAAABnAAAADgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAABbAAAA0gAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BAoA/xAoAP8cRwD/K2sA/zSC + AP85kgD/PJoA/z2cAP89nwD/Pp8A/z2gAP89oAD/PaEA/z6jAP8+pAD/PqMA/z2iAP89oAD/PZ8A/z2f + AP89ngD/PZ0A/z2bAP88mQD/OZEA/zSCAP8ragD/HEcA/xAoAP8ECgD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADSAAAAWwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAA5AAAAugAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8FDAD/FDEA/yVcAP8zfgD/Oo4A/zuVAP88lAD/O5QA/zqVAP86lQD/O5cA/zuZAP88mgD/PJwA/zyd + AP88nwD/PaEA/z2iAP89oQD/PKAA/zyeAP88nAD/PJsA/zuZAP87lwD/O5YA/zqUAP86lAD/O5MA/zuU + AP87lAD/Oo4A/zN9AP8lXAD/FDEA/wUMAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAAugAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAiAAAAPMAAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wECAP8NIQD/IlIA/zJ6AP85iwD/Oo8A/zqNAP85jQD/OY8A/zqQ + AP86kgD/OpQA/zqVAP87lwD/O5kA/zyaAP88nAD/PJ0A/zyfAP89oQD/PaIA/z2hAP88oAD/PJ4A/zyc + AP88mwD/O5kA/zuXAP87lgD/OpQA/zqTAP86kQD/OZAA/zmOAP85jgD/Oo0A/zqOAP85igD/MnkA/yJR + AP8NIQD/AQIA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8wAAAIgAAAAPAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAPQAAAMoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wIGAP8TLgD/KmQA/zeD + AP86igD/OYkA/ziIAP84igD/OYsA/zmNAP85jwD/OpAA/zqSAP86lAD/OpUA/zuXAP87mQD/PJkA/z2b + AP89nAD/PZ4A/z6gAP8+oAD/Pp8A/z2fAP89nQD/PZsA/z2aAP87mAD/O5cA/zuWAP86lAD/OpMA/zqR + AP85kAD/OY4A/zmNAP85iwD/OIkA/ziHAP85iAD/OokA/zeDAP8qZAD/Ey0A/wIGAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAMoAAAA9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAHcAAAD0AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wIEAP8VMgD/LWoA/ziDAP84hQD/N4MA/ziFAP84hwD/OIgA/ziKAP85iwD/OY0A/zmP + AP86jwD/O5AA/zuSAP87kwD/PJUA/zuaAf86ngj/OKMN/zemEv82qRX/N6sV/zOwH/8zsB//NqoW/zWp + Fv82pRP/OKIO/zieCf86mAH/PJQA/zuRAP87kAD/O48A/zmPAP85jgD/OY0A/zmLAP84iQD/OIcA/ziG + AP84hAD/N4MA/ziFAP84gwD/LWkA/xUyAP8CBAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + APIAAAB2AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ABQAAACmAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8QJQD/K2EA/ziAAP83gQD/N4AA/zeB + AP83gwD/OIUA/ziHAP84iAD/OIkA/zqJAP86igD/OY4A/zeWCv8zoRv/La4s/yi5QP8jxVL/IMte/x3R + af8b1XD/GNh4/xfbff8X3H7/FtyA/xbdgf8W3YH/Fd6C/xbcf/8Y2Xn/GtVy/xzQaf8gyV3/Jb1K/yux + NP8xox//NpcM/zmNAP86igD/OogA/ziIAP84hwD/OIYA/ziEAP83gwD/N4EA/zeAAP83gQD/OH8A/yth + AP8QJQD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAACmAAAAFAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAygAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8IEgD/I1AA/zZ6AP83fgD/NnwA/zZ+AP83gAD/N4EA/zeDAP84hAD/OYQA/zmGAP82jwf/MZ8e/ymy + Of8ixFX/Hc9n/xrWc/8Y2nn/GNp6/xjbe/8Y23v/F9p7/xjbe/8Y2nz/F9t8/xfbff8X3H7/Ftx//xbd + gf8W3YH/Fd6D/xXfhf8U34f/E+GJ/xPii/8T44z/EuOO/xPgiP8X2X3/HM1p/yW3R/8voiX/NY8K/zmF + AP85gwD/OIMA/zeDAP83gQD/N4AA/zZ+AP82fAD/N34A/zZ6AP8jUAD/CBIA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAADKAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAA + AOMAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAgD/FS8A/zFsAP83fAD/NXoA/zZ7AP82fAD/Nn4A/zeA + AP84fwD/OIAA/zaLCf8vnyT/JrhF/x/MYf8b1W//Gtl1/xrYdP8a13P/Gtdz/xrXdP8a13X/Gdh2/xnY + d/8Z2Xj/GNl5/xjaev8Y2nv/F9t8/xfbff8X3H7/F9x//xbdgP8W3YH/Fd6C/xXeg/8V3oT/Fd+F/xTf + hv8U4Ij/FOGJ/xLijP8S5I//EeaR/xLjjf8W2X7/IMFb/yykLv81iwz/OIAA/zh+AP83gAD/Nn4A/zZ8 + AP82ewD/NXkA/zd8AP8xbAD/FS8A/wECAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADjAAAAPAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAADvAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Bg0A/yNO + AP82dwD/NngA/zV3AP81eQD/NnsA/zZ7AP83ewD/N4AA/zGUF/8nsT3/IMle/xzVbf8b1nD/HNVu/xzU + bv8b1W//G9Vw/xvWcP8a1nL/Gtdz/xrXdP8Z2HX/Gdh2/xnZd/8Z2Xj/GNl5/xjaev8Y2nv/F9t8/xfb + ff8X3H7/F9x//xbdgf8W3YH/Fd6C/xXehP8V3oT/FN+G/xTfhv8U4Ij/FOGJ/xPhiv8T4Yv/E+KM/xHj + j/8R5pP/EeWS/xbZf/8gvFX/Lpch/zd/AP83egD/NnsA/zZ7AP81eQD/NXcA/zZ4AP82dwD/I04A/wYN + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADvAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJAAAA7gAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/w0dAP8tYgD/NncA/zV0AP81dgD/NXcA/zV5AP83eAD/NX4D/y6Z + If8ku0v/HtBl/x3Va/8d02r/HdJq/xzTa/8c02z/HNRt/xzUbv8b1W//G9Vw/xvWcf8a1nL/Gtdz/xrX + dP8Z2HX/Gdh2/xnZd/8Z2Xj/GNl5/xjaev8Y2nv/F9t8/xfbff8X3H7/Ftx//xbdgP8W3YH/Fd6C/xXe + g/8V34X/FN+G/xTfhv8U4Ij/FOGJ/xPhiv8T4ov/E+KM/xLijf8S447/EeSR/xDnlf8R45D/G8ps/yqg + MP81fwT/N3cA/zV4AP81dwD/NXYA/zV0AP82dwD/LWMA/w0dAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAADuAAAASQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAPAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8VLgD/M2wA/zVz + AP80cwD/NXQA/zV2AP82dAD/NXsD/y2aJP8jv0//H9Fm/x7TaP8e0Wb/HtFm/x7SaP8d0mj/HdJp/x3T + a/8c02v/HNRt/xzUbf8b1W//G9Vw/xvWcP8b1nH/Gtdz/xrXdP8Z2HX/Gdh2/xnYd/8Z2Xj/GNl5/xja + ev8Y2nv/F9t8/xfbff8X3H7/F9x//xbdgP8W3YH/Fd6C/xXeg/8V3oT/Fd+F/xTfhv8U4Ij/FOCI/xPh + iv8T4Yv/E+KL/xLijf8S443/EuOP/xHkkf8Q55b/EOeU/xjRdv8oojf/NXoE/zZzAP81dgD/NXQA/zRz + AP81dAD/M2wA/xUuAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADwAAAASAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEAAADvAAAA/wAA + AP8AAAD/AAAA/wAAAP8BAgD/HDsA/zRvAP81cAD/NHEA/zRzAP81cgD/NXUA/y+RHP8ku0r/INBi/x/R + ZP8fz2L/H9Bk/x/QZP8e0Wb/HtFm/x7SaP8d0mn/HdJp/x3Ta/8c02z/HNRt/xzUbv8b1W//G9Vw/xvW + cP8a1nL/Gtdz/xrXdP8Z2HX/Gdh2/xnZd/8Z2Xj/GNl5/xjaev8Y2nv/F9t8/xfbff8X3H7/F9x//xbd + gf8W3YH/Fd6C/xXehP8V3oT/FN+G/xTfhv8U4Ij/FOGJ/xPhiv8T4Yv/E+KM/xLijf8S447/EuOP/xHk + kP8R5JH/EOeW/xDolv8YzXP/Kpcs/zZ0AP82cgD/NHMA/zRxAP81cAD/NG8A/xw7AP8BAgD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAADvAAAAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAvAAAA5gAAAP8AAAD/AAAA/wAAAP8AAAD/AQMA/yBDAP81bwD/M28A/zRv + AP80cAD/NXAA/zGCD/8nsD7/Ic5e/yDPYf8gzl//IM5g/x/PYf8fz2L/H89j/x/QZP8e0WX/HtFm/x7S + Z/8d0mj/HdJp/x3Ta/8c02v/HNRs/xzUbv8b1W//G9Vv/xvWcP8b1nH/Gtdz/xrXdP8a13X/Gdh2/xnY + d/8Z2Xf/GNl5/xjaev8Y2nv/F9t8/xfbff8X3H7/F9x//xbdgP8W3YH/Fd6C/xXeg/8V3oT/Fd+F/xTf + hv8U4If/FOCI/xPhif8T4Yv/E+KL/xLijP8S447/EuOP/xLjj/8R5JH/EeWS/w/ol/8Q5pX/HMJk/y+G + Gf81bwD/NHAA/zRvAP8zbwD/NXAA/yBEAP8BAwD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADlAAAALQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAANAAAAD/AAAA/wAA + AP8AAAD/AAAA/wEDAP8gQwD/NW8A/zNsAP8zbgD/NG0A/zRxAv8smCb/I8VT/yDPX/8hzV3/Ic1d/yDN + Xv8gzl//IM5g/x/PYf8fz2L/H9Bj/x/QZP8e0WX/HtFm/x7SaP8d0mj/HdJp/x3Ta/8c02v/HNRt/xzU + bf8b1W//G9Vw/xvWcP8a1nL/Gtdz/xrXdP8Z2HX/Gdh2/xnYd/8Z2Xj/GNl5/xjaev8Y2nv/F9t8/xfb + ff8X3H7/F9x//xbdgP8W3YH/Fd6C/xXeg/8V3oT/Fd+F/xTfhv8U4Ij/FOCI/xPhiv8T4Yv/E+KL/xLi + jf8S443/EuOP/xHkkP8R5JH/EeWS/xHmk/8P6Zr/E92K/yWkQP8zcgP/NWwA/zNuAP8zbAD/NW8A/yBD + AP8BAwD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADPAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAcAAACxAAAA/wAAAP8AAAD/AAAA/wAAAP8BAwD/IEQA/zVvAP8zawD/M2wA/zRq + AP8yewz/J7A+/yLNWv8izFr/Isxa/yHMW/8hzFz/Ic1d/yDNXv8gzl//IM5g/x/PYf8fz2L/H9Bk/x/Q + ZP8e0Wb/HtFm/x7SaP8d0mn/HdJp/x3Ta/8c02z/HNRt/xzUbv8b1W//G9Vw/xvWcf8a1nL/Gtdz/xrX + dP8Z2HX/Gdh2/xnZd/8Z2Xj/GNl5/xjaev8Y2nv/F9t8/xfbff8X3H7/Ftx//xbdgf8W3YH/Fd6C/xXe + hP8V3oT/FN+G/xTfhv8U4Ij/FOGJ/xPhiv8T4Yv/E+KM/xLijf8S447/EuOP/xHkkP8R5JH/EeWS/xHl + k/8Q55b/D+mZ/xrFa/8vfxX/NGkA/zNsAP8zawD/NW8A/yBEAP8BAwD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAACxAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAP8AAAD/AAAA/wAA + AP8AAAD/AAEA/x4+AP81bwD/M2sA/zNqAP80aQD/Losb/yXATP8jzFn/I8pX/yLKV/8iy1n/Ista/yHM + W/8hzFz/Ic1d/yDNXv8gzl//IM5g/x/PYf8fz2L/H89j/x/QZP8e0WX/HtFm/x7SaP8d0mj/HdJp/x3T + a/8c02v/HNRs/xzUbv8b1W//G9Vw/xvWcP8b1nH/Gtdz/xrXdP8a13X/Gdh2/xnYd/8Z2Xf/GNl5/xja + ev8Y2nv/F9t8/xfbff8X3H7/F9x//xbdgP8W3YH/Fd6C/xXeg/8V3oT/Fd+F/xTfhv8U4If/FOCI/xPh + if8T4Yv/E+KL/xLijP8S447/EuOP/xHkkP8R5JH/EeSS/xHlk/8Q5ZT/D+qa/xPbhv8olTH/NGkA/zNq + AP8zawD/NW8A/x4+AP8AAQD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAB+AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAEQAAAD4AAAA/wAAAP8AAAD/AAAA/wAAAP8YMwD/NW4A/zNsAP8zaQD/M2sB/yub + Kf8kyFL/I8tW/yPJVf8jyVb/I8pX/yLLWP8iy1n/Ista/yHMW/8hzFz/Ic1d/yDNXv8gzl//IM5g/x/P + Yf8fz2L/H9Bj/x/QZP8e0WX/HtFm/x7SaP8d0mj/HdJp/x3Ta/8c02v/HNRt/xzUbf8b1W//G9Vw/xvW + cP8a1nL/Gtdz/xrXdP8Z2HX/Gdh2/xnYd/8Z2Xj/GNl5/xjaev8Y2nv/F9t8/xfbff8X3H7/F9x//xbd + gP8W3YH/Fd6C/xXeg/8V3oT/Fd+F/xTfhv8U4Ij/FOCI/xPhiv8T4Yv/E+KL/xLijf8S443/EuOP/xHk + kP8R5JH/EeWS/xHlk/8Q5ZT/D+mY/xDmlf8hqkz/M2sC/zRpAP8zbAD/NW4A/xgzAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAPgAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAA1QAAAP8AAAD/AAAA/wAA + AP8AAAD/EiUA/zNrAP8zbAD/M2kA/zJuBP8qpjP/JMpT/yTJUv8kyFP/JMlU/yPJVf8jyVb/IspX/yLL + WP8iy1n/Isxa/yHMW/8hzVz/Ic1d/yDNXv8gzl//IM5g/x/PYf8fz2L/H9Bk/x/QZP8e0Wb/HtFm/x7S + aP8d0mn/HdJp/x3Ta/8c02z/HNRu/xvVb/8a1nL/Gtdz/xrYdP8Z2Hb/Gdl3/xnZef8Y2nn/GNp6/xja + ev8Y2nr/F9p7/xjbe/8Y2nv/F9t8/xfbff8X3H7/Ftx//xbdgf8W3YH/Fd6C/xXehP8V3oT/FN+G/xTf + hv8U4Ij/FOGJ/xPhiv8T4Yv/E+KM/xLijf8S447/EuOP/xHkkP8R5JH/EeWS/xHlk/8Q5ZT/EOeW/w/q + mv8cul//MnAI/zRoAP8zbAD/M2sA/xIlAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANUAAAATAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAJMAAAD/AAAA/wAAAP8AAAD/AAAA/wkUAP8wZAD/NG0A/zNpAP8xcwj/Ka86/yXK + Uv8lx1D/JcdQ/yTIUf8kyFP/JMlU/yPJVf8jyVb/I8pX/yLKV/8iy1n/Ista/yHMW/8hzFz/Ic1d/yDN + Xv8gzl//IM5g/x/PYf8fz2L/H89j/x/QZP8e0WX/HtFn/x3Tav8c02z/HNRt/xzTa/8e0GT/IM5f/yPJ + Vv8lxk3/J8NI/ynAQf8pvz7/Kb8//ynAQ/8mxUz/JMhS/yDNXf8d02n/GtVx/xjae/8X3H//Ft2A/xbc + gP8X3H//F9x//xbdgP8W3YH/Fd6C/xXeg/8V3oT/Fd+F/xTfhv8U4Ij/FOCI/xPhif8T4Yv/E+KL/xLi + jf8S447/EuOP/xHkkP8R5JH/EeSS/xHlk/8Q5ZT/EOaV/w/rm/8Zx2//L3YQ/zRoAP80bQD/MGQA/wkU + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAJMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAA+QAAAP8AAAD/AAAA/wAA + AP8DBgD/KFQA/zVuAP8zaAD/MXMI/ymyPP8lyVD/JcZN/yXGT/8lx1D/JcdQ/yTIUv8kyFP/JMlU/yPJ + Vf8jyVb/I8pX/yLLWP8iy1n/Isxa/yHMW/8hzFz/Ic1d/yDNXv8gzl//IM5g/x/PYf8fz2P/HtFm/x7R + Z/8f0GP/I8lW/yjBRP8uuC//M7Ae/zerE/86pwn/O6UE/zukA/88pAP/PKMC/zyjAf88owH/PKMB/zyk + A/88pAP/O6UE/zqnCv82rBX/MrIi/yy7Nv8lxlD/HdFo/xjae/8W3oL/Ft6D/xbdgf8W3YH/Fd6C/xXe + g/8V3oT/Fd+F/xTfhv8U4Ij/FOCI/xPhiv8T4Yv/E+KM/xLijf8S443/EuOP/xHkkP8R5JH/EeWS/xHl + k/8Q5ZT/EOaV/w7rm/8XzHb/L3YP/zRoAP80bgD/KFQA/wMGAP8AAAD/AAAA/wAAAP8AAAD/AAAA+QAA + AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAACAAAAMYAAAD/AAAA/wAAAP8AAAD/AAAA/xs5AP81bwD/M2kA/zJzB/8psTn/JsdN/ybF + S/8mxk3/JcZO/yXGT/8lx1D/JMdR/yTIUv8kyFP/JMlU/yPJVf8jyVb/IspX/yLLWP8iy1n/Isxa/yHM + W/8hzVz/Ic1d/yDNXv8gz2H/H89j/yDNXv8mxUv/Lrgx/zWuGf85pwv/PKQE/zykBP87pAT/O6UG/zul + B/87pgf/O6YH/zumB/87pgf/O6YH/zumB/87pgf/O6YH/zumB/87pgf/O6UH/zulBf88pAT/PKQD/zyk + A/85qAv/M7Ae/yq+Pf8gzmD/GNp7/xXfhf8V3oP/Fd6C/xXeg/8V3oT/FN+G/xTfhv8U4Ij/FOGJ/xPh + iv8T4ov/E+KM/xLijf8S447/EuOP/xHkkP8R5JH/EeWS/xHlk/8Q5ZT/EOaU/w/qmv8Xy3X/L3YP/zRo + AP81bwD/GzkA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAxgAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAA/wAAAP8AAAD/AAAA/wAA + AP8MGgD/MmkA/zRqAP8ycgf/KrA4/yfHS/8nxEn/JsRL/ybFS/8mxk3/JcZO/yXGT/8lx1D/JcdQ/yTI + Uf8kyFP/JMlU/yPJVf8jyVb/I8pX/yLLWP8iy1n/Ista/yHMW/8gzV7/IM5f/yTHUf8tujT/Nq0Y/zqm + Cf87pQX/O6YH/zqmCP86pwn/OqcJ/zqnCf86pwn/OqcJ/zqnCf86pwn/OqcJ/zqnCf86pwn/OqcJ/zqn + Cf86pwn/OqcJ/zqnCf86pwn/OqcJ/zqnCf86pwn/OqcJ/zqmCP87pQb/O6QE/zqmCP80sB3/KMFE/xvU + b/8V34T/FN+F/xXehP8V3oT/Fd+F/xTfhv8U4Ij/FOCI/xPhiv8T4Yv/E+KL/xLijf8S447/EuOP/xHk + kP8R5JH/EeSS/xHlk/8Q5ZT/EOaU/w/qmv8XzHb/MHUO/zRpAP8yaQD/DBoA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAFQAAAN0AAAD/AAAA/wAAAP8AAAD/AwUA/yhWAP81bQD/Mm4D/yuqMv8nxkn/J8NH/yfE + Sf8nxEn/JsRL/ybFTP8mxk3/JcZO/yXGT/8lx1D/JcdQ/yTIUv8kyFP/JMlU/yPJVf8jyVb/IspX/yLL + WP8hzFv/Icxb/ybESv8wtSr/OKkP/zqmCP86pgn/OacL/zmnC/85pwv/OacL/zmnC/85pwv/OacL/zmn + C/85pwv/OacL/zmnC/85pwv/OacL/zmnC/85pwv/OacL/zmnC/85pwv/OacL/zmnC/85pwv/OacL/zmn + C/85pwv/OacL/zmnC/85pwv/OacL/zqmCP87pQb/N6kR/yy8OP8d0mj/Fd+F/xTfhv8V3oT/Fd+F/xTf + hv8U4Ij/FOGJ/xPhiv8T4Yv/E+KM/xLijf8S447/EuOP/xHkkP8R5JH/EeWS/xHlk/8Q5ZT/EOaV/w/r + m/8axGz/Mm8H/zVsAP8oVgD/AwUA/wAAAP8AAAD/AAAA/wAAAP8AAADdAAAAFQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2AAAA/wAAAP8AAAD/AAAA/wAA + AP8XMAD/NW4A/zNqAP8soCr/KMVH/yjCRf8ow0b/J8NI/yfESf8nxEn/JsRL/ybFTP8mxk3/JcZO/yXG + T/8lx1D/JMdR/yTIUv8kyFP/JMlU/yPJVf8jylf/IstZ/yXFTP8wtCn/OagO/zqnCv85qA3/OagN/zmo + Df85qA3/OagN/zmoDf85qA3/OagN/zmoDf85qA3/N6cL/zWmCP8zpQb/MaUE/zCkA/8wpAP/MKQD/zCk + A/8wpAP/MKQD/zGlBP8zpQb/NaYI/zenC/85qA3/OagN/zmoDf85qA3/OagN/zmoDf85qA3/OagN/zmo + Df85qAz/OqYJ/zipD/8suzj/G9Vv/xTgh/8V34b/FN+F/xTfhv8U4Ij/FOGJ/xPhiv8T4ov/E+KM/xLi + jf8S447/EuOP/xHkkP8R5JH/EeWS/xHlk/8Q5ZT/EOaV/w/rmv8dt1z/M2oB/zVuAP8XMAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAB2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAEQAAAN4AAAD/AAAA/wAAAP8AAAD/BgwA/y5hAP80aQD/LpMe/ynERP8owUT/KMJE/yjC + Rf8ow0b/J8NH/yfDSP8nxEn/JsRL/ybFS/8mxk3/JcZN/yXGT/8lx1D/JcdQ/yTIUf8kyFP/I8pW/yTH + UP8uuDH/N6oT/zmnDf84qA//OKkQ/zipEP84qRD/OKkQ/zipEP84qRD/OKkQ/zioD/81pwz/MaYH/zKm + Cf9CrRz/W7g6/3bEWv+T0Hz/qtqY/7Ldov+y3aL/st2i/7Ldov+q2pj/k9B8/3nEXf9buDr/Qq0c/zKm + Cf8xpgf/NacM/zioD/84qRD/OKkQ/zipEP84qRD/OKkQ/zipEP84qRD/OKgP/zmmC/82qxX/J8JG/xfb + fP8U4In/Fd+G/xTfhv8U4Ij/FOCI/xPhiv8T4Yv/E+KL/xLijf8S443/EuOP/xHkkP8R5JH/EeSS/xHl + k/8Q5ZT/EOaV/w/qmv8ipEX/NWgA/y5hAP8GDAD/AAAA/wAAAP8AAAD/AAAA/wAAAN4AAAARAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpAAAA/wAAAP8AAAD/AAAA/wAA + AP8cPAD/NWwA/zCCEv8pv0D/KcFC/ynBQv8owUT/KMJE/yjCRf8ow0b/J8NH/yfESf8nxEn/JsRL/ybF + TP8mxk3/JcZO/yXGT/8lx1D/JcdR/yTIU/8pwEH/NK8c/zioDv84qRD/OKkR/zipEf84qRH/OKkR/zip + Ef84qRH/OKkR/zepEP8ypwr/MqcK/02zK/+ByWj/uuGt/+Dx2f/7/fr///////////////////////// + //////////////////////////////v9+v/g8dn/uuGt/4HJaP9Nsyv/MqcK/zKnCv83qRD/OKkR/zip + Ef84qRH/OKkR/zipEf84qRH/OKkR/zipEP85pw3/MrIk/x7PZP8U4Ij/FN+H/xTfhv8U4Ij/FOGJ/xPh + iv8T4Yv/E+KM/xLijf8S447/EuOP/xHkkP8R5JH/EeWS/xHlk/8Q5ZT/EOeW/xDkk/8pjSr/NmsA/xw8 + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAGkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAABgAAAMwAAAD/AAAA/wAAAP8AAAD/Bw4A/zBjAP8zdAb/K7Q2/yrCQP8pwED/KcFC/ynB + Qv8owUP/KMJF/yjCRf8ow0b/J8NI/yfESf8nxEr/JsRL/ybFTP8mxk3/JcZO/yXHUP8mxk//Lrgx/zer + FP83qhL/N6sT/zeqE/83qhP/N6oT/zeqE/83qhP/N6sU/zeqE/8xqA3/N6sT/2W+Sf+z36X/7/jt//// + //////////////////////////////////////////////////////////////////////////////// + /////////////+/47f+z36X/Zb5J/zerE/8xqA3/N6oT/zerFP83qhP/N6oT/zeqE/83qhP/N6oT/zer + FP84qRH/N6oU/ybDSf8W3YP/FOCI/xTfhv8U4Ij/FOGJ/xPhiv8T4ov/E+KM/xLijf8S447/EuOP/xHk + kP8R5JH/EeWS/xHlk/8Q5ZT/D+mY/xXWgf8weBD/MGIA/wcOAP8AAAD/AAAA/wAAAP8AAAD/AAAAzAAA + AAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGAAAA/QAAAP8AAAD/AAAA/wAA + AP8cOQD/NW8B/y6iKP8qwkD/Kr8+/yq/P/8pwED/KcBB/ynBQv8owUP/KMJE/yjCRf8ow0b/J8NH/yfD + SP8nxEn/JsRL/ybFS/8mx07/J8NH/zGyJf82qhT/NqsV/zarFv82qxb/NqsW/zarFv82qxb/NqsW/zar + Fv8zqhL/MakQ/2a/Tf/I6L///v79//////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////+/v3/yOi//2a/ + Tf8xqRD/M6oS/zarFv82qxb/NqsW/zarFv82qxb/NqsW/zarFv82qxX/OKkR/y25NP8Y2Xj/E+GJ/xTf + hv8U4Ij/FOCI/xPhiv8T4Yv/E+KL/xLijf8S443/EuOP/xHkkP8R5JH/EeSS/xHlk/8Q5ZT/D+ua/xu9 + Y/81bgL/HDkA/wAAAP8AAAD/AAAA/wAAAP8AAAD9AAAARgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAKIAAAD/AAAA/wAAAP8AAAD/BAoA/y5dAP8xixX/K788/yu+PP8qvj3/Kr8+/yrA + P/8pwED/KcBB/ynBQv8owUT/KMJE/yjCRf8ow0b/J8NH/yfESf8nxEn/JsVM/ynAQf8zsB//NqsV/zas + F/82rBf/NqwX/zasF/82rBf/NqwX/zasF/81rBf/L6kQ/0izLf+u3qL/+v35//////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////+v35/67eov9Isy3/L6kQ/zWsF/82rBf/NqwX/zas + F/82rBf/NqwX/zasF/82rBf/N6oT/zGzJ/8c1G//E+GJ/xTfhv8U4Ij/FOGJ/xPhiv8T4Yv/E+KM/xLi + jf8S447/EuOP/xHkkP8R5JH/EeWS/xHlk/8Q5ZT/D+iY/yeaNv8vXAD/BAoA/wAAAP8AAAD/AAAA/wAA + AP8AAACiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAA6AAAAP8AAAD/AAAA/wAA + AP8VKwD/NHYF/y2zMv8rvzv/K707/yu+PP8rvj3/Kr8+/yq/P/8pwED/KcBB/ynBQv8pwUP/KMJE/yjC + Rf8owkb/J8NH/ybESv8qvTz/NK4d/zWsGP81rRr/Na0a/zWtGv81rRr/Na0a/zWtGv81rRr/NKwY/y+q + E/9wxVz/4vPe//////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////+Lz3v9wxVz/L6oT/zSsGP81rRr/Na0a/zWtGv81rRr/Na0a/zWtGv81rRr/NqsX/zOw + If8e0Wf/E+GJ/xTfhv8U4If/FOCI/xPhif8T4Yv/E+KL/xLijP8S447/EuOP/xLjj/8R5JH/EeSS/xHl + k/8P55f/FNeD/zF6Dv8WKgD/AAAA/wAAAP8AAAD/AAAA/wAAAOgAAAAaAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAFwAAAD/AAAA/wAAAP8AAAD/AQIA/ydQAP8wnB//LL86/yy9Of8rvTr/K707/yu+ + PP8qvj3/Kr8+/yq/P/8pwED/KcBB/ynBQv8owUP/KMJE/yjCRf8nw0j/Kr07/zOuHv80rRv/NK0c/zSt + HP80rRz/NK0c/zStHP80rRz/NK0c/zKsGf8wrBj/kNKD//n8+P////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////n8+P+Q0oP/MKwY/zKs + Gf80rRz/NK0c/zStHP80rRz/NK0c/zStHP80rRz/NawZ/zKwIf8d0Wj/E+GJ/xTfhv8U4Ij/FOCI/xPh + iv8T4Yv/E+KL/xLijf8S443/EuOP/xHkkP8R5JH/EeWS/xHlk/8P6pn/ILNU/yhPAP8BAgD/AAAA/wAA + AP8AAAD/AAAA/wAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqgAAAP8AAAD/AAAA/wAA + AP8KEwD/MXkK/y25NP8svTf/LLw4/yy9Of8rvTr/K707/yu+PP8qvj3/Kr8+/yrAP/8pwED/KcBB/ynB + Qv8owUT/KMJG/yq8O/8yryD/NK4d/zSuHv80rh7/NK4e/zSuHv80rh7/NK4e/zSuHv8yrRv/Na8f/6Ha + l/////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////+h2pf/Na8f/zKtG/80rh7/NK4e/zSuHv80rh7/NK4e/zSu + Hv80rh7/NK0b/zKwI/8c0mv/FOGJ/xTfhv8U4Ij/FOGJ/xPhiv8T4Yv/E+KM/xLijf8S447/EuOP/xHk + kP8R5JH/EeWS/xDmlP8R4Y//K4Ed/wsSAP8AAAD/AAAA/wAAAP8AAAD/AAAAqgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAABUAAADmAAAA/wAAAP8AAAD/AAAA/xs2AP8xpCP/Lb43/y27Nv8svDf/LLw3/yy9 + Of8rvTr/K707/yu+PP8rvj3/Kr8+/yq/P/8pwED/KcBB/ynCQ/8qvj3/MrEj/zOvH/8zryD/M68g/zOv + IP8zryD/M68g/zOvIP8zryD/Mq4e/y+uHP+n3Z////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //+n3Z//L64c/zKuHv8zryD/M68g/zOvIP8zryD/M68g/zOvIP8zryD/NK4d/zCzKf8a1nL/FOCI/xTf + hv8U4Ij/FOCI/xPhif8T4Yv/E+KL/xLijP8S447/EuOP/xHkkP8R5JH/EeSS/w/pmP8ewmP/GzYA/wAA + AP8AAAD/AAAA/wAAAP8AAADmAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUQAAAP8AAAD/AAAA/wAA + AP8BAAD/J2cL/y+7Mv8tuzT/Lbs1/y27Nv8svDf/LLw4/yy9Of8rvTr/K707/yu+PP8qvj3/Kr8+/yq/ + P/8pwEH/Kb8//zCzJ/8zryH/MrAi/zKwIv8ysCL/MrAi/zKwIv8ysCL/MrAi/zKwIv8srRv/k9WK//// + //////////////////////////////////////////////////////////////////////////////// + /////////v/+/+/89v/i++7/4vvu/+/89v/+//7///////////////////////////////////////// + //////////////////////////////////////////////////+T1Yr/LK0b/zKwIv8ysCL/MrAi/zKw + Iv8ysCL/MrAi/zKwIv8ysCL/M64f/y24M/8X233/FOCH/xTfhv8U4Ij/FOCI/xPhiv8T4Yv/E+KL/xLi + jf8S443/EuOP/xHkkP8R5JH/EeWT/xPmkf8gcSH/AgAA/wAAAP8AAAD/AAAA/wAAAP8AAABRAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAACcAAAA/wAAAP8AAAD/AAAA/woTAP8unSD/Lr0z/y66M/8tujT/Lbs1/y27 + Nv8svDf/LLw4/yy9Of8rvTr/K707/yu+PP8qvj3/Kr8+/yq/P/8utS7/MrAj/zKwJP8ysCT/MrAk/zKw + JP8ysCT/MrAk/zKwJP8ysST/K64d/2/IZf/6/fr///////////////////////////////////////// + ///////////////////////////////////d+ev/o/DL/2roq/9D4pb/MuCN/ynfiP8p34j/MuCN/0Pi + lv9q6Kv/o/DL/9356/////////////////////////////////////////////////////////////// + //////////////r9+v9vyGX/K64d/zKxJP8ysCT/MrAk/zKwJP8ysCT/MrAk/zKwJP8ysCT/M64g/yjA + RP8V3oX/FN+G/xTfhv8U4Ij/FOGJ/xPhiv8T4Yv/E+KM/xLijf8S447/EuOP/xHkkP8R5JH/EOqX/xq7 + Yv8KEgD/AAAA/wAAAP8AAAD/AAAA/wAAAJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAN4AAAD/AAAA/wAA + AP8AAAD/Fj8I/zC6Lv8uuTH/Lrkx/y66M/8tujT/Lbs1/y27Nv8svDf/LLw4/yy9Of8rvTr/K707/yu+ + PP8qvz7/LLgz/zGxJf8xsSb/MbEm/zGxJv8xsSb/MbEm/zGxJv8xsSb/MbEm/y2wIv9GuTz/5vXk//// + ///////////////////////////////////////////////////////////////////E9d3/Y+Wl/yTc + gf8Q1nD/FNJo/xrNXf8fyFT/IcZQ/yHGUP8fyFT/Gs1d/xTSaP8Q1nD/JNyB/2Plpf/E9d3///////// + /////////////////////////////////////////////////////////////+b15P9GuTz/LbAi/zGx + Jv8xsSb/MbEm/zGxJv8xsSb/MbEm/zGxJv8xsSb/MrAj/yHKWf8U4Ij/Fd+F/xTfhv8U4Ij/FOCI/xPh + if8T4Yv/E+KL/xLijf8S447/EuOP/xHkkP8R5ZL/FOWN/xFHGv8AAAD/AAAA/wAAAP8AAAD/AAAA3gAA + AAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAABCAAAA/QAAAP8AAAD/AAAA/wAAAP8kexn/ML4w/y64MP8uuTD/Lrky/y66 + M/8tujT/Lbs1/y27Nv8svDf/LLw4/yy9Of8rvTr/K747/yy8Of8wsin/MLIn/zCyKP8wsij/MLIo/zCy + KP8wsij/MLIo/zCyKP8wsij/K7Ai/7Dirf////////////////////////////////////////////// + ///////////////////o+/H/ceeq/xrYdv8Vz2L/I8NL/yu5N/8vtCv/MbIm/zGxJf8xsSX/MbEl/zGx + Jf8xsib/L7Qr/yu5N/8jw0v/Fc9i/xrYdv9x56r/6Pvx//////////////////////////////////// + /////////////////////////////7Dirf8rsCL/MLIo/zCyKP8wsij/MLIo/zCyKP8wsij/MLIo/zCy + KP8xsib/L7Qs/xrWc/8V4If/Fd+F/xTfhv8U4Ij/FOCI/xPhiv8T4Yv/E+KM/xLijf8S443/EuOP/xHk + kP8R65b/E5RS/wEAAP8AAAD/AAAA/wAAAP8AAAD9AAAAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIoAAAD/AAAA/wAA + AP8AAAD/BxUD/y2pJ/8wuS7/L7gv/y64MP8uuTH/Lrky/y66M/8tujT/Lbs1/yy7Nv8svDf/LLw4/yy9 + Of8rvTr/LrYv/zCzKf8wsyr/MLMq/zCzKv8wsyr/MLMq/zCzKv8wsyr/MLMq/yqxJP9exFn/+f35//// + ////////////////////////////////////////////////////////yfXd/zvdh/8Uz2L/Jr9D/y+0 + LP8xsSf/MLIo/zCzKf8wsyr/MLMq/zCzKv8wsyr/MLMq/zCzKv8wsyn/MLIo/zGxJ/8vtCz/Jr9D/xTP + Yv873Yf/yfXd////////////////////////////////////////////////////////////+f35/17E + Wf8qsST/MLMq/zCzKv8wsyr/MLMq/zCzKv8wsyr/MLMq/zCzKv8xsSf/KL9C/xXeg/8V3oX/FN+G/xTf + hv8U4Ij/FOGJ/xPhiv8T4ov/E+KM/xLijf8S447/EuOP/xHmkv8S0YH/BRkL/wAAAP8AAAD/AAAA/wAA + AP8AAACKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAJAAAA0QAAAP8AAAD/AAAA/wAAAP8TRQ//Mrwt/y+3LP8vty3/L7gu/y64 + MP8uuTD/Lrkx/y66M/8tujT/Lbs1/y27Nv8svDf/LLw4/y25NP8vsyz/L7Qs/y+0LP8vtCz/L7Qs/y+0 + LP8vtCz/L7Qs/y+0LP8vsyz/K7Io/7vmuv////////////////////////////////////////////// + /////////////8L02f8p13f/HcZP/y62Mf8wsin/L7Mr/y+0LP8vtCz/L7Qs/y+0LP8vtCz/L7Qs/y+0 + LP8vtCz/L7Qs/y+0LP8vtCz/L7Qs/y+zK/8wsin/LrYx/x3GT/8p13f/wvTZ//////////////////// + ////////////////////////////////////////u+a6/yuyKP8vsyz/L7Qs/y+0LP8vtCz/L7Qs/y+0 + LP8vtCz/L7Qs/y+0LP8wsyn/H81h/xTfhv8V3oT/Fd+F/xTfhv8U4Ij/FOCI/xPhiv8T4Yv/E+KL/xLi + jf8S443/EuOP/xLrk/8IVTP/AAAA/wAAAP8AAAD/AAAA/wAAANEAAAAJAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMAAAD5AAAA/wAA + AP8AAAD/AAEA/yJ9HP8yvCz/MLcs/y+3LP8vty3/L7gv/y64MP8uuTD/Lrky/y66M/8tujT/Lbs1/y27 + Nv8suzb/LrUw/y+0Lv8vtC7/L7Qu/y+0Lv8vtC7/L7Qu/y+0Lv8vtC7/L7Qu/yqzKv9VwlT/9/z3//// + ///////////////////////////////////////////////////Q9uH/LNZ1/yHBRf8wtCz/L7Qt/y+0 + Lv8vtC7/L7Qu/y+0Lv8vtC7/L7Qu/y+0Lv8vtC7/L7Qu/y+0Lv8vtC7/L7Qu/y+0Lv8vtC7/L7Qu/y+0 + Lv8vtC3/MLQs/yHBRf8t1nX/0/fj//////////////////////////////////////////////////// + ///3/Pf/VcJU/yqzKv8vtC7/L7Qu/y+0Lv8vtC7/L7Qu/y+0Lv8vtC7/L7Qu/y+0LP8rujr/F9t9/xXe + hP8V3oT/Fd+F/xTfhv8U4Ij/FOGJ/xPhiv8T4Yv/E+KM/xLijf8S447/EuuU/w2dYf8AAQD/AAAA/wAA + AP8AAAD/AAAA+QAAADMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAcwAAAP8AAAD/AAAA/wAAAP8FEgT/LaYl/zG4Kv8wtiv/MLcs/y+3 + LP8vuC7/L7gv/y64MP8uuTH/Lrky/y26M/8tujT/Lbs1/y24M/8utTD/LrUw/y61MP8utTD/LrUw/y61 + MP8utTD/LrUw/y61MP8utTD/JrIo/5zcnf////////////////////////////////////////////// + ////////8/33/0rbhv8fwEP/L7Qu/y61MP8utTD/LrUw/y61MP8utTD/LrUw/y61MP8utTD/LrUw/y61 + MP8utTD/LrUw/y61MP8utTD/LrUw/y61MP8utTD/LrUw/y61MP8utTD/L7Qu/x/AQ/9L24f/8v33//// + //////////////////////////////////////////////////+c3J3/JrIo/y61MP8utTD/LrUw/y61 + MP8utTD/LrUw/y61MP8utTD/LrUw/y+zLf8hylv/FN+F/xXeg/8V3oT/FN+F/xTfhv8U4Ij/FOGJ/xPh + iv8T4ov/E+KM/xLijf8S5Y//ENCD/wEWDv8AAAD/AAAA/wAAAP8AAAD/AAAAcwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAC0AAAA/wAA + AP8AAAD/AAAA/xA+Df8yuSj/MbUo/zC2Kf8wtir/MLYr/y+3LP8vty3/L7gu/y64MP8uuTD/Lrky/y66 + M/8tujP/LbYy/y22Mv8ttjL/LbYy/y22Mv8ttjL/LbYy/y22Mv8ttjL/LbYy/yy1MP8zuDf/1/HY//// + //////////////////////////////////////////////////+P6LT/HMJH/y61MP8ttjL/LbYy/y22 + Mv8ttjL/LbYy/y22Mv8ttjL/LbYy/y22Mv8ttjL/LbYy/y22Mv8ttjL/LbYy/y22Mv8ttjL/LbYy/y22 + Mv8ttjL/LbYy/y22Mv8ttjL/LrUw/xzCR/+R6bb///////////////////////////////////////// + /////////////9fx2P8zuDf/LLUw/y22Mv8ttjL/LbYy/y22Mv8ttjL/LbYy/y22Mv8ttjL/LrUw/yq7 + PP8X23z/Fd6C/xXegv8V3oP/Fd+F/xTfhv8U4Ij/FOCI/xPhiv8T4Yv/E+KL/xLijf8S6JD/Bk0x/wAA + AP8AAAD/AAAA/wAAAP8AAAC0AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAOUAAAD/AAAA/wAAAP8AAAD/Hm0W/zO7KP8xtSf/MbUp/zC2 + Kf8wtir/MLcs/y+3LP8vty3/L7gv/y64MP8uuTH/Lrky/y25M/8ttzT/Lbc0/y23NP8ttzT/Lbc0/y23 + NP8ttzT/Lbc0/y23NP8ttzT/KLUw/0/DVv/5/fr///////////////////////////////////////// + ////////6fvx/zbOZv8ptzP/LbY0/y23NP8ttzT/Lbc0/y23NP8ttzT/Lbc0/y23NP8ttzT/Lbc0/y23 + NP8ttzT/Lbc0/y23NP8ttzT/Lbc0/y23NP8ttzT/Lbc0/y23NP8ttzT/Lbc0/y23NP8ttjT/Kbcz/zjO + aP/q+/H/////////////////////////////////////////////////+f36/0/DVv8otTD/Lbc0/y23 + NP8ttzT/Lbc0/y23NP8ttzT/Lbc0/y23NP8ttzT/LbYy/x/OY/8V34P/Fd6B/xXeg/8V3oP/FN+F/xTf + hv8U4Ij/FOGJ/xPhiv8T4Yv/E+KM/xPrkv8Lilb/AAAA/wAAAP8AAAD/AAAA/wAAAOUAAAASAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3AAAA/QAA + AP8AAAD/AAAA/wEFAf8pkx7/M7gm/zG0Jv8xtSj/MbUp/zC2Kf8wtiv/MLcs/y+3LP8vuC7/L7gv/y64 + MP8uuDH/LLc1/yy3Nv8stzb/LLc2/yy3Nv8stzb/LLc2/yy3Nv8stzb/LLc2/yy3Nv8ktS7/ddB7//// + //////////////////////////////////////////////////+k673/Ibw8/yy2Nf8stzb/LLc2/yy3 + Nv8stzb/LLc2/yy3Nv8stzb/LLc2/yy3Nv8stzb/LLc2/yy3Nv8stzb/LLc2/yy3Nv8stzb/LLc2/yy3 + Nv8stzb/LLc2/yy3Nv8stzb/LLc2/yy3Nv8stjX/Ibw8/6Trvf////////////////////////////// + ////////////////////////ddB7/yS1Lv8stzb/LLc2/yy3Nv8stzb/LLc2/yy3Nv8stzb/LLc2/yy3 + Nv8ttjT/JsBH/xbdf/8W3YH/Fd6B/xXegv8V34T/FN+F/xTfhv8U4Ij/FOGJ/xPhiv8T4ov/E+eP/w+6 + dP8BBgT/AAAA/wAAAP8AAAD/AAAA/QAAADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGUAAAD/AAAA/wAAAP8AAAD/CBwF/zCrIv8ytCX/MrQl/zG0 + Jv8xtSf/MbUo/zC2Kf8wtir/MLYr/y+3LP8vty3/L7gu/y64Mv8ruDj/K7g4/yu4OP8ruDj/K7g4/yu4 + OP8ruDj/K7g4/yu4OP8ruDj/K7g4/yO1MP+Y3J7///////////////////////////////////////// + /////////////2TWg/8ktjP/K7g4/yu4OP8ruDj/K7g4/yu4OP8ruDj/K7g4/yu4OP8ruDj/K7g4/yu4 + OP8otzX/JbYy/yW2Mv8otzX/K7g4/yu4OP8ruDj/K7g4/yu4OP8ruDj/K7g4/yu4OP8ruDj/K7g4/yu4 + OP8ktjP/ZNaD//////////////////////////////////////////////////////+Y3J7/I7Uw/yu3 + OP8rtzj/K7g4/yu4OP8ruDj/K7g4/yu4OP8ruDj/K7g4/yu4OP8ruTn/G9Vw/xXegf8W3YD/Fd6B/xXe + gv8V3oP/Fd+F/xTfhv8U4Ij/FOCI/xPhiv8T44z/EtiF/wMhFf8AAAD/AAAA/wAAAP8AAAD/AAAAZQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAA + AP8AAAD/AAAA/wAAAP8ROgv/M7Yi/zK0JP8ysyT/MbQl/zG0Jv8xtSf/MbUp/zC2Kf8wtir/MLcs/y+3 + LP8vty3/Lbg1/yu5O/8ruTr/K7k6/yu5Ov8ruTr/K7k6/yu5Ov8ruTr/K7k6/yu5Ov8ruTr/Jrc3/7Hl + t//////////////////////////////////////////////////x/PX/P8da/yi3N/8ruTr/K7k6/yu5 + Ov8ruTr/K7k6/yu5Ov8ruTr/K7k6/yu5Ov8mtzb/Kbg4/0fCVf9kzG//ZMxv/0fCVf8puDj/Jrc2/yu5 + Ov8ruTr/K7k6/yu5Ov8ruTr/K7k6/yu5Ov8ruTr/K7k6/yi3N/8/x1r/8fz1//////////////////// + /////////////////////////////7Hlt/8mtjf/K7g6/yu4Ov8ruDr/K7k6/yu5Ov8ruTr/K7k6/yu5 + Ov8ruTr/K7k6/yy4N/8hylv/Ft2B/xbdgP8W3YD/Fd6B/xXeg/8V3oP/FN+F/xTfhv8U4Ij/FOGJ/xPi + iv8T5o7/Bkot/wAAAP8AAAD/AAAA/wAAAP8AAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4AAAA/wAAAP8AAAD/AAAA/xlYEP81uSP/M7Ii/zKz + I/8ysyT/MrQl/zG0Jv8xtSf/MbUo/zC1Kf8wtir/MLYs/y+3Lf8ruTn/Kro9/yq6PP8qujz/Kro8/yq6 + PP8qujz/Kro8/yq6PP8qujz/Kro8/yq6PP8ouTv/venD//////////////////////////////////// + /////////////9335P81wEr/KLk6/yq6PP8qujz/Kro8/yq6PP8qujz/Kro8/yq6PP8qujz/JLg3/03F + XP+86cL/8vv0////////////8vv0/73qwv9NxVz/JLg3/yq6PP8qujz/Kro8/yq6PP8qujz/Kro8/yq6 + PP8qujz/KLk6/zXASv/d9+T/////////////////////////////////////////////////venD/yi4 + O/8quTz/Krk8/yq5PP8quTz/Kro8/yq6PP8qujz/Kro8/yq6PP8qujz/K7k7/ybASf8Y233/F9yA/xbd + f/8W3YD/Fd6B/xXegv8V3oT/Fd+F/xTfhv8U4If/FOCI/xTrkP8JcEX/AAAA/wAAAP8AAAD/AAAA/wAA + ALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAA + ANwAAAD/AAAA/wAAAP8AAAD/I3cV/zW3If8zsiH/M7Ii/zKzI/8ysyT/MrQl/zG0Jv8xtSf/MbUo/zC2 + Kf8wtir/L7cv/ym7Pv8puz7/Kbs+/ym7Pv8puz7/Kbs+/ym7Pv8puz7/Kbs+/ym7Pv8puz7/KLs9/yq7 + P//P8NT/////////////////////////////////////////////////0PLX/y29Q/8ouz3/Kbs+/ym7 + Pv8puz7/Kbs+/ym7Pv8puz7/Kbs//yK4OP9YyWj/6vjs/////////////////////////////////+r4 + 7P9YyWj/Irg4/ym7P/8puz7/Kbs+/ym7Pv8puz7/Kbs+/ym7Pv8ouz3/Lb1D/9Dy1/////////////// + ///////////////////////////////////P79T/Kro//yi6Pf8puj7/Kbo+/ym6Pv8puj7/Kbs+/ym7 + Pv8puz7/Kbs+/ym7Pv8puz7/KbxA/xrWc/8X3X//F9x//xbdgP8W3YD/Fd6B/xXegv8V3oP/Fd+F/xTf + hv8U4Ij/FOeN/w2VW/8AAAD/AAAA/wAAAP8AAAD/AAAA3AAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAA6wAAAP8AAAD/AAAA/wACAP8qjxj/NbUg/zOx + IP8zsiH/MrIi/zKzJP8ysyT/MbQl/zG0Jv8xtSf/MbUp/zC2Kf8tuDP/KbtB/ym7QP8pu0D/KbtA/ym7 + QP8pu0D/KbtA/ym7QP8pu0D/KbtA/ym7QP8pu0D/Jbs+/7rqwv////////////////////////////// + ///////////////////L79H/KLtA/yi7QP8pu0D/KbtA/ym7QP8pu0D/KbtA/ym7QP8juTv/RsVa/+L2 + 5v///////////////////////////////////////////+L25v9GxVr/I7k7/ym7QP8pu0D/KbtA/ym7 + QP8pu0D/KbtA/yi7QP8ou0D/y+/R/////////////////////////////////////////////////7rq + w/8luT3/Kbo//ym6P/8puj//Kbo//ym6QP8pu0D/KbtA/ym7QP8pu0D/KbtA/ym7QP8puz//Hs5l/xbc + f/8X3H7/Ftx//xbdgP8W3YD/Fd6B/xXeg/8V3oP/FN+G/xTfhv8U5Yv/ELVu/wACAf8AAAD/AAAA/wAA + AP8AAADrAAAAGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ADAAAAD2AAAA/wAAAP8AAAD/BA0C/y6bGv81sx7/NLEf/zOxIP8zsiH/M7Ii/zKzI/8ysyT/MrQl/zG0 + Jv8xtSf/MbUo/yu5OP8ovET/KLxD/yi8Q/8ovEP/KLxD/yi8Q/8ovEP/KLxD/yi8Q/8ovEP/KLxD/yi8 + Q/8gujz/etmO/////////////////////////////////////////////////4vdnf8gujz/KLxD/yi8 + Q/8ovEP/KLxD/yi8Q/8ovEP/I7s//znBUf/V8tr///////////////////////////////////////// + /////////////9Xy2v85wVH/I7s//yi8Q/8ovEP/KLxD/yi8Q/8ovEP/KLxD/yC5PP+L3Zz///////// + ////////////////////////////////////////etiO/yC5O/8ou0L/KLtC/yi7Qv8ou0L/KLtC/yi7 + Qv8ou0P/KLxD/yi8Q/8ovEP/KLxD/ym7QP8iyFj/F9t+/xfbff8X3H7/F9x//xbdf/8W3YD/Fd6B/xXe + gv8V3oT/Fd+F/xTjiP8SxXf/AREK/wAAAP8AAAD/AAAA/wAAAPUAAAAvAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQQAAAP4AAAD/AAAA/wAAAP8HGAT/MaQa/zWy + Hv80sR7/NLEf/zOxIP8zsiH/M7Ii/zKzJP8ysyT/MrQl/zG0Jv8xtSj/Kbs+/yi9Rv8ovUX/KL1F/yi9 + Rf8ovUX/KL1F/yi9Rf8ovUX/KL1F/yi9Rf8ovUX/KL1F/ya8Q/8twk3/yPDR//////////////////// + ///////////////////R8tj/NMVT/ya8Q/8ovUX/KL1F/yi9Rf8ovUX/KL1F/yW8Qv8uv0r/wuzK//// + /////////////////////////////////////////////////////////////8Lsyv8uv0r/JbxC/yi9 + Rf8ovUX/KLxE/yi8RP8ovET/JrtC/zTEU//R8tj//////////////////////////////////////8jw + 0f8twkz/JrtC/yi8RP8ovET/KLxE/yi8RP8ovET/KLxE/yi8RP8ovEX/KL1F/yi9Rf8ovUX/KLxD/yTD + UP8Y2nr/F9t8/xfbff8X3H7/F9x//xbdgP8W3YD/Fd6B/xXegv8V3oP/FeGG/xLQff8DHxP/AAAA/wAA + AP8AAAD/AAAA/gAAAD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABQAAAA/wAAAP8AAAD/AAAA/wohBf8zqxr/NLEc/zSwHf80sR7/M7Ef/zOxIP8zsiH/MrIi/zKz + I/8ysyT/MbQl/zG1KP8ovET/J71H/ye9Rv8nvUb/J71G/ye9Rv8nvUb/J71G/ye9Rv8nvUb/J71G/ye9 + Rv8nvUb/J71H/yO9Q/87yFf/teq///v+/P/////////////////8/v3/vu3H/z/JWv8ivkP/J71H/ye9 + Rv8nvUb/J71G/ye9R/8lvUX/Jr1G/6/nu/////////////////////////////////////////////// + /////////////////////////////6/nu/8mvUb/JbxF/ya9Rv8mvEX/J7xF/ye8Rf8nvEb/Ir1C/z/J + Wv++7cf//P79//////////////////v+/P+16r//O8hX/yO9Q/8nvEb/J7xF/ye8Rf8nvEX/J7xF/ye8 + Rf8nvEX/J7xF/ye8R/8nvUb/J71G/ye9Rv8nvUX/JcBM/xjYd/8Y2nv/F9t8/xfbff8X3H7/Ftx//xbd + gP8W3YD/Fd6B/xXegv8V34T/FNmC/wQqGv8AAAD/AAAA/wAAAP8AAAD/AAAATgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAD/AAAA/wAAAP8AAAD/DCoG/zay + G/81rxv/NLAc/zSwHf80sR7/NLEf/zOxIP8zsiH/M7Ii/zKzI/8ysyP/MLYr/ye+R/8mvkn/Jr5J/ya+ + Sf8mvkn/Jr5J/ya+Sf8mvkn/Jr5J/ya+Sf8mvkn/Jr5J/ya+Sf8mvkn/J75J/yO/RP8nwUL/WM9s/4jc + lv+a4ab/jN6Z/1nPbf8pwkT/I79D/ye+Sf8mvkn/Jr5J/ya+Sf8mvkn/Jr5I/yK9Rf+Y4Kn///////// + /////////////////////////////////////////////////////////////////////////////5jg + qP8hvET/Jb1H/yW9SP8lvUj/Jr1I/ya9SP8nvUj/I75D/ynCRP9Zz23/jN6Z/5rhpv+I3Jb/WM9s/yfB + Qv8jvkP/J71I/ya9SP8mvUj/Jr1I/ya9SP8mvUj/Jr1I/ya9SP8mvUj/Jr1I/ya9Sf8mvUn/Jr5J/ya+ + SP8mwEv/G9Vx/xjae/8Y2nv/F9t8/xfbff8X3H7/F9x//xbdf/8W3YD/Fd6B/xXegv8W4ob/BTUg/wAA + AP8AAAD/AAAA/wAAAP8AAABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAVgAAAP8AAAD/AAAA/wAAAP8NKwb/NrMZ/zWvGv81rxv/NLAc/zSwHf80sR7/NLEf/zOx + IP8zsiH/M7Ii/zKzIv8vti7/Jr9L/ya/S/8mv0v/Jr9L/ya/S/8mv0v/Jr9L/ya/S/8mv0v/Jr9L/ya/ + S/8mv0v/Jr9L/ya/S/8mv0v/Jr9L/ya/R/8jvj7/IL05/yK+Ov8gvTn/Ir4+/ya/R/8mv0v/Jr9L/ya/ + S/8mv0v/Jr9L/ya/Sv8evUT/hNuZ//////////////////////////////////////////////////// + /////////////////////////////////////////////4TamP8dvEP/Jb5J/yW+Sv8lvkr/Jr5K/ya+ + Sv8mvkr/Jr5G/yK+Pv8gvTn/Ir46/yC9Of8jvj7/Jr5H/ya+Sv8mvkr/Jr5K/ya+Sv8mvkr/Jr5K/ya+ + Sv8mvkr/Jr5K/ya+Sv8mvkr/Jr5K/ya+S/8mvkv/Jr9L/ya/S/8c0mz/GNp6/xjaev8Y2nv/F9t8/xfb + ff8X3H7/F9x//xbdgP8W3YD/Fd6B/xbkhv8FNyH/AAAA/wAAAP8AAAD/AAAA/wAAAFcAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABfAAAA/wAAAP8AAAD/AAAA/w4r + Bv83shj/Na4Z/zWvGv81rxv/NLAc/zSwHf80sR7/M7Ef/zOxIP8zsiH/M7Ih/y63MP8lwE7/JcBN/yXA + Tf8lwE3/JcBN/yXATf8lwE3/JcBN/yXATf8lwE3/JcBN/yXATf8lwE3/JcBN/yXATf8lwE3/JcBN/yXA + Tf8mwEv/JsBL/yXAS/8lwE3/JcBN/yXATf8lwE3/JcBN/yXATf8lwE3/Hb5G/3DVif/5/fr///////// + //////////////////////////////////////////////////////////////////////////////// + ////////+f36/2/Uif8cvET/JL5L/yS+S/8kvkv/Jb5L/yW+TP8lvkz/Jb9M/yW/S/8mv0r/Jr9L/yW/ + TP8lv0z/Jb9M/yW/TP8lv0z/Jb9M/yW/TP8lv0z/Jb9M/yW/TP8lv0z/Jb9M/yW/TP8lv0z/Jb9M/yW/ + Tf8lv03/Jr9L/x3Raf8Y2nn/GNl5/xjaev8Y2nv/F9t8/xfbff8X3H7/Ftx//xbdgP8W3YD/FuSF/wU3 + If8AAAD/AAAA/wAAAP8AAAD/AAAAVwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAFsAAAD/AAAA/wAAAP8AAAD/DSsF/zexF/82rhj/Na4Z/zWvGv81rxv/NLAc/zSw + Hf80sR7/NLEf/zOxIP80sR//Lrcy/yPCUf8kwU//JMFP/yTBT/8kwU//JMFP/yTBT/8kwU//JMFP/yTB + T/8kwU//JMFP/yTBT/8kwU//JMFP/yTBT/8kwU//JMFP/yTBT/8kwU//JMFP/yTBT/8kwU//JMFP/yTB + T/8kwU//JcFP/xy+Sf9b0Hr/8vv1//////////////////////////////////////////////////// + ////////////////////////////////////////////////////////8vv0/1rPef8bvEb/JL9N/yO/ + Tf8jv03/JL9N/yS/Tv8kv07/JL9O/yTATv8kwE7/JMBO/yTATv8kwE7/JMBO/yTATv8kwE7/JMBO/yTA + Tv8kwE7/JMBO/yTATv8kwE7/JMBO/yTATv8kwE7/JMBO/yTAT/8lv03/HdBo/xnZeP8Z2Xj/GNl5/xja + ev8Y2nv/F9t8/xfbff8X3H7/F9x//xbdf/8X44T/BTcg/wAAAP8AAAD/AAAA/wAAAP8AAABXAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVwAAAP8AAAD/AAAA/wAA + AP8NKwX/N7EW/zatF/82rhj/Na4Z/zWvGv81rxv/NLAc/zSwHf80sR7/NLEf/zSxHv8utzL/I8JT/yTB + Uf8kwVH/JMFR/yTBUf8kwVH/JMFR/yTBUf8kwVH/JMFR/yTBUf8kwVH/JMFR/yTBUf8kwVH/JMFR/yTB + Uf8kwVH/JMFR/yTBUf8kwVH/JMFR/yTBUf8kwVH/JMFR/yTBUf8dwEz/Scxu/+b46/////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////5vjr/0jKbf8cvUr/I79P/yO/T/8jv0//JL9P/yS/UP8kv1D/JMBQ/yTA + UP8kwFD/JMBQ/yTAUP8kwFD/JMBQ/yTAUP8kwFD/JMBQ/yTAUP8kwFD/JMBQ/yTAUP8kwFD/JMBQ/yTA + UP8kwFD/JMBQ/yS/T/8dz2n/Gdl4/xnZd/8Z2Xj/GNl5/xjaev8Y2nv/F9t8/xfbff8X3H7/F9x//xfj + g/8FNyD/AAAA/wAAAP8AAAD/AAAA/wAAAFcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAABYAAAA/wAAAP8AAAD/AAAA/w4rBf84sRX/Nq0W/zatF/82rhj/Na4Z/zWv + Gv81rxv/NLAc/zSwHf80sR7/NLAd/y23M/8iw1X/I8JT/yPCU/8jwlP/I8JT/yPCU/8jwlP/I8JT/yPC + U/8jwlP/I8JT/yPCU/8jwlP/I8JT/yPCU/8jwlP/I8JT/yPCU/8jwlP/I8JT/yPCU/8jwlP/I8JT/yPC + U/8jwlP/HsFP/zrIZP/Z9OH///////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////2fTh/zjG + Y/8dv03/IsBR/yLAUf8jwFH/I8BR/yPAUv8jwFL/I8FS/yPBUv8jwVL/I8FS/yPBUv8jwVL/I8FS/yPB + Uv8jwVL/I8FS/yPBUv8jwVL/I8FS/yPBUv8jwVL/I8FS/yPBUv8jwVL/I8BR/x3PaP8Z2Hb/Gdh2/xnZ + d/8Z2Xj/GNl5/xjaev8Y2nv/F9t8/xfbff8X3H7/F+KC/wU3IP8AAAD/AAAA/wAAAP8AAAD/AAAAWAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEsAAAD/AAAA/wAA + AP8AAAD/DCYE/zetE/83rRX/Nq0W/zatF/82rhj/Na4Z/zWvGv81rxv/NLAc/zSwHf81sBz/Lrcy/yLE + V/8jw1X/I8NV/yPDVf8jw1X/I8NV/yPDVf8jw1X/I8NV/yPDVf8jw1X/I8NV/yPDVf8jw1X/I8NV/yPD + Vf8jw1X/I8NV/yPDVf8jw1X/I8NV/yPDVf8jw1X/I8NV/x/CUv8uxl3/yfDV//////////////////// + /////////////////////////////////////////////8rty//K7cv///////////////////////// + ////////////////////////////////////////ye/V/y3EW/8ewFD/IsFT/yLBU/8iwVP/I8FT/yPB + VP8jwVT/I8JU/yPCVP8jwlT/I8JU/yPCVP8jwlT/I8JU/yPCVP8jwlT/I8JU/yPCVP8jwlT/I8JU/yPC + VP8jwlT/I8JU/yPCVP8jwVP/Hc9o/xrXdf8Z13X/Gdh2/xnYd/8Z2Xj/GNl5/xjaev8Y2nv/F9t8/xfc + fv8X3X//BTEd/wAAAP8AAAD/AAAA/wAAAP8AAABLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAPQAAAPwAAAD/AAAA/wAAAP8JHgP/NaQS/zetFP82rBX/Nq0W/zat + F/82rhj/Na4Z/zWvGv81rxv/NLAc/zWvG/8utzL/IcVZ/yLEV/8ixFf/IsRX/yLEV/8ixFf/IsRX/yLE + V/8ixFf/IsRX/yLEV/8ixFf/IsRX/yLEV/8ixFf/IsRX/yLEV/8ixFf/IsRX/yLEV/8ixFf/IsRX/yLE + V/8gw1X/JMVZ/7brx/////////////////////////////////////////////////////////////// + ///a8tn/QL0//0C9P//a8tn///////////////////////////////////////////////////////// + ////////tevG/yPDV/8fwVP/IcJV/yHCVf8hwlX/IsJV/yLCVv8iwlb/IsNW/yLDVv8iw1b/IsNW/yLD + Vv8iw1b/IsNW/yLDVv8iw1b/IsNW/yLDVv8iw1b/IsNW/yLDVv8iw1b/IsNW/yLCVf8dz2f/Gtdz/xrW + dP8Z13X/Gdh2/xnZd/8Z2Xj/GNl5/xjaev8Y2nv/F9x9/xbSeP8EJhX/AAAA/wAAAP8AAAD/AAAA/AAA + AD0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArAAAA8wAA + AP8AAAD/AAAA/wcTAv8ynBD/OK0T/zesE/83rBT/Nq0W/zatF/82rRf/Na4Z/zWvGv81rxv/Na8a/y+2 + Lv8hxVr/IcVZ/yHFWf8hxVn/IcVZ/yHFWf8hxVn/IcVZ/yHFWf8hxVn/IcVZ/yHFWf8hxVn/IcVZ/yHF + Wf8hxVn/IcVZ/yHFWf8hxVn/IcVZ/yHFWf8hxVn/IMRY/x7EVv+i5rn///////////////////////// + ////////////////////////////////////////5/bm/1HBS/8huz7/Ibs+/1HBS//n9ub///////// + ////////////////////////////////////////////////////////oeW4/x3CVf8fwlb/IMNX/yDD + V/8hw1f/IcNX/yHCWP8hw1j/IcNY/yHEWP8hxFj/IcRY/yHEWP8hxFj/IcRY/yHEWP8hxFj/IcRY/yHE + WP8hxFj/IcRY/yHEWP8hxFj/IcNY/x3Qaf8a1nH/GtZy/xrWdP8a13X/Gdh2/xnYd/8Z2Xf/GNl5/xja + ev8Y3X3/Fcdx/wMZD/8AAAD/AAAA/wAAAP8AAADzAAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAADqAAAA/wAAAP8AAAD/AgcB/zCSDv84rhL/N6sT/zes + E/82rBX/Nq0W/zatF/82rhj/Na4Z/zWvGv81rxn/MLQq/yHFWv8hxVv/IcVb/yHFW/8hxVv/IcVb/yHF + W/8hxVv/IcVb/yHFW/8hxVv/IcVb/yHFW/8hxVv/IcVb/yHFW/8hxVv/IcVb/yHFW/8hxVv/IcVb/yDF + Wv8Zw1X/jOGq//////////////////////////////////////////////////////////////////L6 + 8f9hxVj/Ibk2/x/CWP8fwlj/Ibk2/2HFWP/y+vH///////////////////////////////////////// + ////////////////////////jOCp/xjBU/8fw1j/IMNZ/yDDWf8gw1n/IcNZ/yHDWv8hw1r/IcRa/yHE + Wv8hxFr/IcRa/yHEWv8hxFr/IcRa/yHEWv8hxFr/IcRa/yHEWv8hxFr/IcRa/yHEWv8hxVv/HNFq/xvV + cP8a1XH/GtZy/xrWdP8Z13X/Gdh2/xnYd/8Z2Xj/GNl5/xjefP8Uumn/AQkG/wAAAP8AAAD/AAAA/wAA + AOoAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAA + ANcAAAD/AAAA/wAAAP8AAAD/K4IM/zmvEf83qxL/N6sT/zesFP82rBX/Nq0W/zatF/82rhj/Na4Z/zWv + Gf8ysiL/IcRZ/yDGXv8gxl3/IMZd/yDGXf8gxl3/IMZd/yDGXf8gxl3/IMZd/yDGXf8gxl3/IMZd/yDG + Xf8gxl3/IMZd/yDGXf8gxl3/IMZd/yDGXf8gxl3/F8RX/3Xcm//9//7///////////////////////// + ///////////////////////////////////5/fn/dctp/yO2MP8fwlj/H8NZ/x/DWv8fw1n/I7Yx/3XL + af/5/fn////////////////////////////////////////////////////////////9/v7/ddqa/xfC + Vf8fxFv/H8Rb/x/EW/8fxFv/IMRb/yDEXP8gxFz/IMVc/yDFXP8gxVz/IMVc/yDFXP8gxVz/IMVc/yDF + XP8gxVz/IMVc/yDFXP8gxVz/IMVc/yDGXf8b0mz/G9Vv/xvVcP8a1XH/GtZy/xrWdP8Z13X/Gdh2/xnZ + d/8Z2Xj/Gd98/xKlXP8AAAD/AAAA/wAAAP8AAAD/AAAA1QAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAP8AAAD/AAAA/wAAAP8iaAn/OrAQ/ziq + EP84qxH/N6sT/zesE/83rBT/Nq0W/zatF/82rRf/Na4Y/zSvHP8jw1X/H8dh/x/HX/8fx1//H8df/x/H + X/8fx1//H8df/x/HX/8fx1//H8df/x/HX/8fx1//H8df/x/HX/8fx1//H8df/yDHX/8gx1//H8Zf/xfB + Vf9g1Ir/9fz4/////////////////////////////////////////////////////////////v/+/4rR + fP8mtCn/H8JY/x7DW/8ew1r/HsRb/x7EW/8fw1n/JrQq/4rRfP/+//7///////////////////////// + ///////////////////////////////////1/Pj/YdaM/xbDV/8fxV3/H8Vd/x/FXf8fxV3/H8Ve/x/F + Xv8fxV7/H8Ze/x/GXv8fxl7/H8Ze/x/GXv8fxl7/H8Ze/x/GXv8fxl7/H8Ze/x/GXv8fxl7/H8hg/xzT + bP8b1G7/G9Rv/xvVb/8b1XD/GtZy/xrWdP8a13X/Gdh2/xnYd/8a4Xz/D4VK/wAAAP8AAAD/AAAA/wAA + AP8AAACxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAACHAAAA/wAAAP8AAAD/AAAA/xhJBv87sQ//OKoQ/ziqEP83qxL/N6sT/zesE/82rBX/Nq0W/zat + F/82rhf/Na4Y/yXATP8eyWP/H8hh/x/IYf8fyGH/H8hh/x/IYf8fyGH/H8hh/x/IYf8fyGH/H8hh/x/I + Yf8fyGH/H8hh/x/IYf8fyGH/HsZf/x7EXP8Vv1P/Tc16/+v58P////////////////////////////// + //////////////////////////////////+c147/KrIk/x/CVf8dxF3/HsRc/x7EXP8exFz/HsRc/x3F + Xv8fw1f/KrIk/5zXjv////////////////////////////////////////////////////////////// + ///s+vH/TtGB/xfEWf8fxl//H8Zf/x/GX/8fxl//H8Zf/x/GX/8fxl//H8df/x/HX/8fx1//H8dg/x/H + YP8fx2D/H8dg/x/HYP8fx2D/H8dg/x/HYP8eymP/HNNs/xzTbP8b1G7/G9Rv/xvVb/8a1XH/GtZy/xrW + dP8Z13X/Gdh2/xrhfP8KXDL/AAAA/wAAAP8AAAD/AAAA/wAAAIcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF4AAAD/AAAA/wAAAP8AAAD/Dy0D/zmp + Df84qg//OKoQ/zirEf83qxL/N6sT/zesFP82rBX/Nq0W/zatF/83rRT/Kbs//x3JZ/8eyGP/Hshj/x7I + Y/8eyGP/Hshj/x7IY/8eyGP/Hshj/x7IY/8eyGP/Hslk/x7JZP8eyGP/HcZg/xzCW/8cwVn/Fb5U/zrI + bv/h9+n/////////////////////////////////////////////////////////////////suCm/zCx + I/8fwFL/HcRf/x3EXf8dxF7/HcRe/x3EXv8dxF7/HcVe/x3GYP8fwlT/MLIj/7Lgpv////////////// + ///////////////////////////////////////////////////h9+r/PM52/xjFXf8exmH/HsZh/x7G + Yf8exmH/HsZh/x7GYf8ex2H/Hsdh/x7HYf8ex2L/Hsdi/x7HYv8ex2L/Hsdi/x7HYv8ex2L/Hsdi/x3M + Zv8c02v/HNNs/xzTbf8b1G7/G9Rv/xvVcP8a1XH/GtZy/xrWdP8Z2HX/Gdh2/wY5H/8AAAD/AAAA/wAA + AP8AAAD/AAAAXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAALwAAAPsAAAD/AAAA/wAAAP8FDwH/NZwL/zqrDf84qQ7/OKoQ/ziqEP84qxH/N6sT/zes + E/83rBT/Nq0W/zesFf8vtS3/Hslm/x7JZf8eyWX/Hsll/x7JZf8eyWX/Hsll/x7JZf8eyWX/Hspm/x7J + Zf8dx2P/HMRf/xvBWv8bwFn/G8BZ/xa/Vv8txmf/0PLd//////////////////////////////////// + /////////////////////////////8PmuP84sSL/Hr9N/xzFYf8dxF//HcVf/x3FX/8dxV//HcVf/x3F + YP8dxWD/HcZg/xzHY/8fwE//OLEj/8PmuP////////////////////////////////////////////// + ///////////////////R89//MMxv/xrGYP8ex2P/Hsdj/x7HY/8ex2P/Hsdj/x7HY/8ex2P/Hshj/x7I + Y/8eyGT/Hshk/x7IZP8eyGT/Hshk/x7IZP8eyGT/Hc9n/x3Sav8c0mr/HNNs/xzTbf8b1G7/G9Rv/xvV + b/8b1XD/GtZy/xrZdf8Xx2z/AhMK/wAAAP8AAAD/AAAA/wAAAPsAAAAvAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAA3gAAAP8AAAD/AAAA/wAB + AP8rgAn/O60N/zmpDf84qg//OKoQ/ziqEP83qxL/N6sT/zesE/82rBX/NqwV/zSvHf8fx2D/Hcpo/x3K + Z/8dymf/Hcpn/x3KZ/8dymj/Hcpo/x3JZ/8cx2P/G8Nd/xrAWf8awFn/GsBa/xrAWv8XwFj/IMNg/73t + 0P/////////////////////////////////////////////////////////////////V7c3/RLIo/x+8 + Rf8bxmP/HMVg/xzFYf8cxWH/HMZh/xzGYf8cxmH/HMZh/xzGYv8cxmL/HMdi/xvIZv8fvUj/RLMn/9Xt + zf////////////////////////////////////////////////////////////////+979L/JMlq/xrH + Y/8dyGX/Hchl/x3IZf8dyGX/Hchl/x3IZf8dyGX/Hcll/x3JZf8dyWb/Hclm/x3JZv8dyWb/Hclm/x3K + Zv8d0Gf/HdFo/x3Sav8c0mv/HNNs/xzTbP8b1G7/G9Rv/xvVb/8a1XH/G9x1/xOjWP8AAgH/AAAA/wAA + AP8AAAD/AAAA3gAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAACsAAAA/wAAAP8AAAD/AAAA/x5WBf88rwv/OagM/zmpDv84qg//OKoQ/zir + Ef83qxL/N6sT/zesFP82rBX/NqwU/yTBTv8bzGz/HMtp/xzLaf8cy2r/HMtq/xzJZ/8axWH/GcFc/xnA + Wf8ZwFr/GcFa/xnBW/8ZwVv/F8Ba/xjAW/+q6MP///////////////////////////////////////// + ////////////////////////4/Pd/1G1MP8guTz/GcZl/xrFYv8bxmL/G8Zi/xvGYv8bxmL/G8Zj/xvH + Y/8bx2P/G8dj/xvHZP8bx2T/G8dk/xrJaP8huj7/UbUw/+Pz3P////////////////////////////// + //////////////////////////////////+r68f/G8lm/xrIZv8cyWf/HMln/xzJZ/8cyWf/HMln/xzJ + Z/8cyWf/HMpn/xzKZ/8cymj/HMpo/xzKaP8cymj/Hcxn/x7RZv8d0Wj/HdFo/xzSav8c0mv/HNNs/xzT + bf8b1G7/G9Rv/xvVcP8b3XX/DW47/wAAAP8AAAD/AAAA/wAAAP8AAACsAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAD/AAAA/wAA + AP8AAAD/DSgC/zqnCv85qAv/OagM/zmpDf84qQ7/OKoQ/ziqEP84qxH/N6sT/zesE/83qxL/LLg1/xvN + bv8czGz/HMtr/xvIZv8Zw1//GL9a/xi/Wf8Yv1r/GcBa/xnBW/8ZwVz/GcJc/xjBXP8UwFn/kuKz//// + /////////////////////////////////////////////////////////////+z36P9guTz/IrYy/xnG + Zv8axmT/GsZk/xrGZP8ax2T/G8dl/xvHZf8bx2T/G8dm/xvIZv8byGb/G8hm/xvIZv8byGb/G8ln/xrJ + af8itzT/YLo8/+z36P////////////////////////////////////////////////////////////// + //+T5rj/Fsll/xvJaP8cymr/HMpq/xzKav8cymr/HMpq/xzKav8cymr/HMpq/xzLaf8cy2r/HMtr/xzL + a/8dzmb/HtBl/x7RZ/8d0Wf/HdFo/x3Sav8c0mr/HNNs/xzTbf8b1G7/G9Vv/xvVb/8GMhv/AAAA/wAA + AP8AAAD/AAAA/wAAAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAPUAAAD/AAAA/wAAAP8DCQH/MY4I/zurCv85qAv/OagM/zmp + Df84qg//OKoQ/ziqEP83qxL/N6sT/zisEv80rx3/Hchi/xnGZf8YwVz/F75Y/xe+Wf8Xv1r/F79a/xi/ + W/8YwFv/GMBb/xjBXf8YwV3/EMBY/3vco/////////////////////////////////////////////// + ///////////////////3+/X/c8BN/ySxJ/8Zx2X/GcZl/xnGZP8axmX/GsZl/xrGZf8ax2b/Gsdm/xrH + Zv8ax2b/Gshn/xrIZ/8ayGf/Gshn/xrIZ/8ayGf/Gslp/xrJaf8ksyr/c8BN//f79f////////////// + //////////////////////////////////////////////////994ar/E8hl/xvKav8bymv/G8pr/xvK + a/8bymv/G8pr/xvKa/8bymv/G8tr/xvLa/8by2z/G8tr/x7PZP8e0GT/HtBl/x7RZ/8d0Wj/HdFo/x3S + av8c0mv/HNNs/xzTbf8c2HD/F7Ve/wELBf8AAAD/AAAA/wAAAP8AAAD1AAAAKgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAyQAA + AP8AAAD/AAAA/wAAAP8hYAX/PK4K/zqoCv85qAv/OagM/zmpDv84qg//OKoQ/zirEf83qxH/NakS/zKj + D/8hsjz/Fb9b/xa/Wf8Xv1r/F79a/xe/W/8XwFv/F8Bc/xjAXf8YwV3/GMFe/w/AWP9j1pP/+P36//// + /////////////////////////////////////////////////////////P78/4bGYv8orh3/GcZk/xjH + Z/8Zx2X/Gcdm/xnHZv8Zx2f/Gsdn/xrHaP8ayGj/Gsho/xrIaP8ayGj/Gshp/xrJaf8ayWn/Gslp/xrJ + af8ayWr/Gcpr/xrJaf8prx//hsZi//z++/////////////////////////////////////////////// + //////////////j++/9k3Jz/Esln/xvLbf8by23/G8tt/xvLbf8by23/G8tt/xvLbf8by23/G8xt/xvM + bv8czGj/H89i/x/PY/8e0GX/HtBl/x7RZ/8d0Wj/HdFo/xzSav8c0mv/HNNr/x3bcf8Pdz7/AAAA/wAA + AP8AAAD/AAAA/wAAAMkAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAA/wAAAP8AAAD/AAAA/w4oAv86pwj/OqgJ/zqo + Cv85qAv/OakM/zmpDf83qQ7/NKQO/zCfDf8unQ7/Lp0N/ymlHv8Wvln/Fr9b/xa/W/8Wv1z/Fr9d/xbA + Xf8WwV7/F8Fe/xfBX/8Ov1n/UdGH//L79v////////////////////////////////////////////// + //////////////////+Yznf/LKoV/xnEYf8Xx2n/GMdn/xjIaP8YyGj/GMhp/xjIaf8YyGn/Gchq/xnI + av8ZyWr/Gclq/xnJa/8ZyWv/Gclr/xnKa/8Zymz/Gcps/xnKbP8Zymz/GMtu/xrIZ/8sqxb/mM52//// + //////////////////////////////////////////////////////////////L89/9S2JL/Ecpp/xrM + b/8azHD/Gsxw/xrMcP8azHD/Gsxw/xrMcP8azHD/Gsxv/x7NY/8fzmD/H85i/x/PY/8e0GT/HtBl/x7R + Z/8d0Wf/HdFo/x3Sav8c02v/HNJr/wcwGf8AAAD/AAAA/wAAAP8AAAD/AAAAewAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACoAAAD1AAAA/wAAAP8AAAD/AQQA/y6DBv88qwn/OqgJ/zqoCv83pQr/MqAL/y+bCv8tmgv/LZsM/y6c + Df8unQ3/Lp4O/xy1RP8UwF7/Fb9c/xW/Xf8Vv13/FcBd/xXBX/8WwV//D8Bb/z7Ne//l+O3///////// + ////////////////////////////////////////////////////////q9aN/zOoDv8aw1v/F8hr/xfH + aP8Xx2j/F8hp/xfIaf8XyGr/F8hq/xjIav8YyGr/GMhr/xjJa/8YyWv/GMlr/xjJbP8YyWz/GMps/xjK + bP8Yym3/GMpt/xjKbf8Yym3/GMxx/xvGYf8zqQ//q9aN//////////////////////////////////// + /////////////////////////////+X67/9A1Yn/Ests/xnMcP8ZzHH/Gcxx/xnMcf8ZzHH/Gcxx/xnM + cv8bzGv/IM1e/x/OX/8fzmH/H89j/x/PY/8e0GX/HtBl/x7RZ/8d0Wj/HdFo/x3Xbf8WplT/AQUC/wAA + AP8AAAD/AAAA/wAAAPUAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAALkAAAD/AAAA/wAAAP8AAAD/GEMD/zyr + B/82oQj/MZsH/y6YB/8tlwj/LpgJ/y6aCv8tmwr/LpsM/y6cDf8vnAv/J6Yi/xW/XP8UwF3/FcBe/xXA + Xv8VwF//FcFg/xHAXf8ryHD/1/Tk//////////////////////////////////////////////////// + /////////////8Dgqf87pw3/G8BU/xbIbP8XyGn/F8hq/xfIav8XyGv/F8lr/xfJa/8XyWv/F8ls/xjJ + bP8YyWz/GMlt/xjKbf8Yym3/GMpt/xjKbv8Yym7/GMtu/xjLb/8Yy2//GMtv/xjLb/8Yy2//F81z/xzE + Wv87pw3/wOCp/////////////////////////////////////////////////////////////////9f3 + 5/8u0oD/Fcxw/xnNc/8ZzXP/Gc1z/xnNc/8ZzXT/Gc1z/x7MY/8gzF3/IM1e/x/OX/8fzmH/H89i/x7P + ZP8e0GX/HtBl/x7RZ/8d0Wj/Hths/wtVK/8AAAD/AAAA/wAAAP8AAAD/AAAAuQAAAAIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAWgAAAP8AAAD/AAAA/wAAAP8EDQD/KoYE/y6WBf8tlAb/LZYG/y6XB/8tmAj/LpgJ/y6Z + Cv8tmwr/LZsM/y6cDP8vnAz/HbRB/xPCYf8UwV//FMFg/xTBYP8UwWH/EcFe/6zpx/////////////// + ///////////////////////////////////////////////////O57z/Q6kQ/xy9S/8VyW7/Fshr/xbI + a/8WyWz/Fsls/xbJbP8WyW3/Fslt/xbJbv8WyW7/Fspu/xfKb/8Xym//F8pv/xfLcP8Xy3D/F8tw/xfL + cP8Xy3D/F8xx/xfMcf8XzHH/F8xx/xfMcv8XzHL/Fs92/x3BUf9DqBH/zua8//////////////////// + /////////////////////////////////////////////63uzv8UzXP/GM51/xjOdf8Yznb/GM52/xjO + d/8bzWz/Ictb/yDLXf8gzF7/IM1e/x/OX/8fzmD/H89i/x/PY/8e0GT/HtBl/x7UaP8aulz/AhEI/wAA + AP8AAAD/AAAA/wAAAP8AAABaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAA2QAAAP8AAAD/AAAA/wAA + AP8XTAL/L5oE/y6UBf8tlQb/LZYG/y6XB/8tmAn/LpgJ/y6aCv8tmwv/LZsM/y+cC/8qoxr/Fb9a/xPB + Yf8TwWD/E8Fh/xDBYP8yynb/8fv1//////////////////////////////////////////////////// + ////////2+7P/1CsG/8euUD/E8lw/xXIbP8VyWz/Fclt/xXJbf8Vym7/Fcpu/xXKbv8Vym//Fcpv/xXK + b/8Wym//Fspw/xbLcP8Wy3H/Fstx/xbLcf8WzHL/Fsxy/xbMcv8WzHL/Fs1z/xbNc/8WzXP/Fs1z/xbN + dP8WzXT/Fc94/x+9Rv9PrBv/2+7P//////////////////////////////////////////////////// + ////////8fz3/zTViP8TznX/F893/xfPd/8Xz3j/F892/x/LXv8gylr/Ictc/yDLXf8gzF7/IM1e/x/O + X/8fzmH/H89j/x/PY/8e0GX/H9lq/w9sNf8AAAD/AAAA/wAAAP8AAAD/AAAA2QAAAA4AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAB5AAAA/wAAAP8AAAD/AAAA/wUSAP8phwP/LpYE/y6UBv8tlQb/LZYG/y6X + B/8tmAj/LpgK/y6ZCv8tmwr/LZsM/y+bCv8hrTP/EsJj/xPBYf8TwmL/DMBe/0vRiP/9//////////// + /////////////////////////////////////////////+n04f9csSf/ILQ1/xTJcP8VyW3/Fclt/xXI + bf8VyW3/Fcpu/xXJbv8Vym//Fctv/xXLcP8Vy3D/Fctw/xbLcP8WynH/Fstx/xbMcv8WzHL/Fstz/xbM + c/8WzXP/Fs10/xbNdP8WzHT/Fs10/xbOdf8WznX/Fs51/xbOdf8Wznb/FdB6/yC5O/9csSf/6fTh//// + ///////////////////////////////////////////////////9////TtuZ/xHOdP8X0Hn/F9B4/xfQ + ev8czGb/IclW/yDKWf8gylr/Ictc/yHLXf8gzF7/IM1e/x/OX/8fzmH/H85i/x/SZf8bvlz/AxkM/wAA + AP8AAAD/AAAA/wAAAP8AAAB2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAADmAAAA/wAA + AP8AAAD/AAAA/xZIAf8vmAP/LZQE/y6UBf8tlQb/LZYG/y6XB/8tmAj/LpgJ/y6ZCv8tmwv/LZsL/y2d + Dv8YuU3/EcNl/xLCY/8NwWH/Pst6//j89/////////////////////////////////////////////// + ///y+e3/bbg7/yOxKv8TyXD/FMhu/xTIbv8UyW//FMlv/xTJb/8UynD/FMpw/xTKcf8Uy3H/FMty/xTL + cv8Uy3L/FMtz/xXLc/8Vy3P/Fcx0/xXMdP8VzHT/Fcx1/xXNdf8VzXX/Fc12/xXNdv8VzXb/Fc53/xXO + d/8Vznf/Fc53/xXOeP8Vznn/FNB7/yO0L/9tuDr/8vnt//////////////////////////////////// + //////////////j8+P9A1ov/EdB5/xbQe/8W0Hz/Gc5y/yHJVv8hyVf/IclY/yDKWf8gylr/Ictc/yDL + Xf8gzF7/IM1e/x/OX/8fzmD/INdm/w9lMP8AAAD/AAAA/wAAAP8AAAD/AAAA5gAAABoAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAD/AAAA/wAAAP8AAAD/BAsA/yd/A/8ulgP/LZQE/y6U + Bv8tlQb/LZYG/y6XB/8tmAn/LpgJ/y6aCv8tmwv/LpoJ/ymiG/8Tv13/EcNl/xDDZv8evFH/0+vH//// + ////////////////////////////////////////+fz4/37AUP8mrR//E8ht/xPIb/8TyG7/E8lv/xPJ + cP8TynD/E8px/xPKcf8Ty3H/E8ty/xPLcv8TzHP/E8xz/xPMc/8UzHT/FMx0/xTMdf8UzHX/FMx1/xTN + dv8UzXb/FM12/xTNd/8Uznf/FM53/xTOeP8Uznj/FM94/xTPeP8Uz3n/FM95/xTPef8Uz3r/FNB6/yaw + I/9+wE//+fz4////////////////////////////////////////////0+vH/yDHYv8T0n//FdF9/xbQ + ev8gyVv/IshU/yHJVv8hyVf/IcpY/yDKWf8gylr/Ictc/yDLXf8gzF7/IM1e/yDSYf8bs1T/AhAI/wAA + AP8AAAD/AAAA/wAAAP8AAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAA + AOAAAAD/AAAA/wAAAP8AAAD/ETcA/y6VA/8tkwP/LZQE/y6UBf8tlQb/LZYG/y6XB/8tmAj/LpgJ/y6Z + Cv8tmwv/L5oJ/yOqK/8Qw2X/EMRn/xC9VP9mu0T/9fnw//////////////////////////////////// + //+Ox2X/KqoW/xTHav8SyXD/E8lv/xPJcP8TyXD/E8px/xPKcf8Ty3L/E8ty/xPLc/8TzHP/E8xz/xPM + dP8TzXX/E811/xPNdf8UzXb/FM12/xTNd/8UzXf/FM13/xTOeP8Uznj/FM54/xTOef8Uz3n/FM95/xTP + ef8Uz3r/FNB6/xTQev8U0Hr/FNB7/xTQev8T0Xz/Fc94/yusGv+Ox2T///////////////////////// + //////////////X57/9mvEb/E8pq/xTTf/8V0n7/Hsph/yPHUf8ix1T/IshV/yHIVf8hyVf/IclY/yDK + Wf8gylr/Ictc/yDLXf8gzF7/IdJh/wxNJP8AAAD/AAAA/wAAAP8AAAD/AAAA4AAAABcAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAP8AAAD/AAAA/wAAAP8BAwD/IWsB/y6X + A/8tkwP/LZQE/y6UBf8tlQb/LZYG/y6XB/8tmAj/LpgJ/y6ZCv8tmwr/LpoJ/x6vOv8PxGj/EMVq/ySv + Kf9wuD3/1+zK///////////////////////m897/iMRf/zCoEv8TxGX/Eclx/xLJb/8SyXD/Espx/xLK + cv8SynL/Esty/xLLc/8Sy3T/Esx0/xLMdP8SzHX/Es12/xLNdv8SzXf/E813/xPNd/8TzXj/E854/xPO + ef8Tznn/E855/xPPev8Tz3r/E896/xPPe/8T0Hv/E9B7/xPQe/8T0Hz/E9B8/xPRfP8T0X3/E9F9/xPR + ff8S0oD/Fs1z/zCqFf+IxF//5vPe///////////////////////X7Mr/b7g8/yW2NP8T1IT/E9KC/xvM + aP8kxk//I8dS/yLHU/8ix1T/IshV/yHJVv8hyVf/IclY/yDKWf8gylr/Ictc/yHSYP8Xk0P/AQQC/wAA + AP8AAAD/AAAA/wAAAP8AAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAMAAAAzgAAAP8AAAD/AAAA/wAAAP8JHAD/K4sC/y6UA/8tkwP/LZQE/y6UBv8tlQb/LZYG/y6X + B/8tmAj/LpgJ/y6aCv8tmgr/LZsM/xu1Rf8Pxmz/EsNl/ymrHP9FpQj/cLk//5bMc/+aznj/eL1K/02o + EP8upw7/FcNg/xDJcv8RyHD/Eslx/xLJcf8SynL/Espz/xLKc/8Sy3T/Est1/xLLdf8SzHb/Esx2/xLM + dv8SzXf/Es13/xLNeP8SzXj/E815/xPNef8Tznn/E856/xPOev8Tznr/E897/xPPe/8Tz3z/E898/xPQ + ff8T0H3/E9B9/xPQfv8T0H7/E9F+/xPRfv8T0X//E9F//xPRf/8S04L/F8xv/y+pEv9NpxD/eL1K/5rO + eP+WzHP/cLk+/0WkB/8pryT/FdF9/xLThv8azW7/I8VO/yPGT/8jxlH/I8dS/yLHU/8ix1T/IchV/yHJ + Vv8hyVf/IcpY/yDKWf8hzVv/H8FY/wYmEf8AAAD/AAAA/wAAAP8AAAD/AAAAzgAAAAwAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFAAAA+gAAAP8AAAD/AAAA/wAA + AP8TQAD/LpYC/y2SA/8tkgP/LZQE/y6UBf8tlQb/LZYG/y6XB/8tmAj/LpgJ/y6ZCv8tmgn/LZwP/xq3 + Sf8Oxm3/EcRo/yC3P/8tqBP/MaMC/zGjAf8vpw3/JLU2/xPGZ/8PynL/EMlw/xHJcf8RyXL/Ecpy/xHK + c/8Ry3T/Ect0/xHLdf8RzHb/Ecx2/xHMd/8RzXf/Ec13/xHNeP8Rznj/Ec55/xHOef8Sznr/Es56/xLO + e/8Sznv/Es98/xLPfP8Sz3z/Es99/xLQff8S0H3/EtB+/xLRfv8S0X7/EtF//xLRf/8S0X//EtJ//xLS + gP8S0oD/EtKA/xLSgP8R04T/FdB4/yW6P/8vqRH/MaQD/zGkBP8urBn/Ir9O/xPSgP8Q1Yf/GM5w/yPF + Tv8kxUz/JMVO/yPGT/8jxlH/I8dS/yLHU/8ix1T/IshV/yHIVf8hyVf/IcpY/yHQW/8OWSf/AAAA/wAA + AP8AAAD/AAAA/wAAAPoAAABFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAACaAAAA/wAAAP8AAAD/AAAA/wECAP8eYgH/L5cC/y2SA/8tkwP/LZQE/y6U + Bf8tlQb/LZYG/y6XB/8tmAj/LpgJ/y6ZCv8umgn/LZwO/xm3Sv8Ox2//Dcdv/w/GbP8TxGT/E8Rk/xDH + bP8OyXP/Dslx/w/Jcf8QynL/EMpy/xDKc/8QynT/EMp0/xDLdf8Qy3b/EMx2/xDMd/8QzHj/EM14/xDN + ef8Qznn/EM56/xDOev8Qz3r/Ec97/xHPe/8Rz3z/Ec98/xHPfP8Rz33/EdB+/xHQfv8R0H7/EdB//xHR + f/8R0YD/EdGA/xHRgP8R0oH/EdKB/xHSgf8R0oH/EdOC/xHTgv8R04L/EdOC/xHTg/8Q1IX/ENWI/xLT + gf8Vz3j/FdB5/xHUhf8Q1on/EdWJ/xnOcP8kxEv/JcRK/yTETf8kxU3/JMVO/yPGUP8jxlH/I8dS/yLH + U/8ix1T/IshV/yHJVv8i0Vr/Fok8/wEDAf8AAAD/AAAA/wAAAP8AAAD/AAAAmgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAADbAAAA/wAA + AP8AAAD/AAAA/wUQAP8mfQH/LpYC/y2SA/8tkwP/LZQE/y6UBv8tlQb/LZYG/y6XB/8tmAj/LpgJ/y6a + Cv8tmgn/LZwO/xu1Rv8Nx2//Dsdt/w7Hb/8OyHD/Dshw/w/JcP8PyXH/D8py/w/Kcv8QynP/EMp0/xDK + dP8Qy3X/EMt1/xDMdv8QzHf/EM14/xDNef8QzXn/EM56/xDOev8Qz3v/EM98/xDPfP8Q0Hz/EdB9/xHQ + ff8R0H7/EdB+/xHQfv8R0H//EdF//xHRgP8R0YD/EdGA/xHSgf8R0oH/EdKC/xHSgv8R04P/EdOD/xHT + g/8R04P/EdOE/xHUhP8R1IT/EdSE/xHUhf8R1IX/ENWF/xDVh/8Q1Yf/ENWH/xDWif8ZzW7/JcJJ/yXD + R/8lxEr/JMRM/yTETf8kxU3/I8VO/yPGUP8jxlH/I8dS/yLHU/8ix1T/I81X/xysSv8DFgr/AAAA/wAA + AP8AAAD/AAAA/wAAANsAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEkAAAD6AAAA/wAAAP8AAAD/AAAA/wsjAP8qiQH/LZQC/y2S + A/8tkgP/LZQE/y6UBf8tlQb/LZYG/y6XB/8tmAj/LpgJ/y6ZCv8tmgn/LZsM/x6xPP8Ox23/Dchw/w7I + b/8OyHD/Dslx/w7Jcv8PynP/D8pz/w/LdP8Py3X/D8t1/w/Ldv8PzHb/D8x3/w/NeP8PzXn/D855/w/O + e/8Pznv/D897/w/PfP8Pz33/D9B9/xDQff8Q0H7/ENB+/xDQf/8Q0H//ENGA/xDRgP8Q0YH/ENGB/xDS + gv8Q0oL/ENKD/xDTg/8Q04P/ENOD/xDThP8Q1IT/ENSE/xDUhP8Q1IX/ENSG/xDVhv8Q1Yb/ENWG/xDV + h/8Q1Yf/ENWH/w/Wif8Q1Yj/G8pl/ybBRf8mwUX/JcFI/yXDSP8lxEr/JMRL/yTETf8kxU3/JMVO/yPG + T/8jxlH/I8dS/yLKVP8gvlD/CC4U/wAAAP8AAAD/AAAA/wAAAP8AAAD6AAAASQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AIEAAAD/AAAA/wAAAP8AAAD/AAAA/xA0AP8skQH/LZMC/y2SA/8tkwP/LZQE/y6UBf8tlQb/LZYG/y6X + B/8tmAj/LpgJ/y6ZCv8tmgr/LpoJ/yOpLP8Qw2b/DMp0/w3Icf8NyXL/Dclz/w7Kc/8OynT/Dst1/w7L + dv8Oy3f/Dst3/w7MeP8OzHj/Ds15/w7Nev8Oznv/Ds57/w7OfP8Oz33/Ds99/w7Pfv8O0H7/D9B//w/Q + f/8P0ID/D9CA/w/Qgf8P0YH/D9GC/w/Rgv8P0YL/D9KD/w/ShP8P0oT/D9OF/w/Thf8P04X/D9OG/w/U + hv8P1Ib/D9SG/w/Uh/8P1If/D9WI/w/ViP8P1Yj/D9WI/w/Vif8O1oz/EdSC/x/GWP8ov0H/JsBE/ybB + Rv8mwUb/JcFI/yXDSf8lxEr/JMRL/yTETf8kxU3/JMVO/yPGUP8jyFL/I8hS/wxIHv8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAALQAAAD/AAAA/wAAAP8AAAD/AAAA/xVF + AP8tkgH/LZMC/y2SA/8tkwP/LZQE/y6UBv8tlQb/LZYG/y6XB/8tmAj/LpgJ/y6aCv8tmwr/LpkI/ymi + G/8WvFb/DMp1/wzKdf8NynP/Dcp0/w7Ldf8Oy3b/Dst3/w7Ld/8OzHj/Dsx6/w7Mef8OzXr/Ds57/w7O + e/8Ozn3/Ds99/w7Pfv8O0H//DtB//w7QgP8O0YH/D9GB/w/Rgf8P0YH/D9GC/w/Rg/8P0oT/D9KE/w/S + hP8P0oT/D9OF/w/Thf8P04X/D9OH/w/Uh/8P1If/D9SH/w/ViP8P1Yj/D9WI/w/Vif8P1Yn/D9aJ/w/W + if8O14v/DteN/xXPdv8jwUv/KL4//ye/Qv8nwEP/JsBF/ybBRv8mwUf/JcJI/yXDSf8lxEr/JMRM/yTE + Tf8kxU3/JMZP/yTJUf8RXyf/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAC0AAAABwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAGQAAANUAAAD/AAAA/wAAAP8AAAD/AAAA/xhPAP8ulQH/LZIC/y2SA/8tkgP/LZQE/y6U + Bf8tlQb/LZYG/y6XB/8tmAj/LpgJ/y6ZCv8tmwr/LpoJ/y6cDf8fsDn/DsZq/wvMeP8Ny3b/Dct2/w3M + dv8NzHj/Dcx4/w3Mef8NzXr/Dc16/w3Ne/8Nznz/Dc59/w3Pff8Nz3//DdB//w3QgP8N0ID/DdGB/w7R + gf8O0oL/DtKD/w7Sg/8O0oP/DtKE/w7ShP8O04X/DtOF/w7Thf8O04b/DtSH/w7Uh/8O1If/DtSI/w7V + iP8O1Yn/DtWK/w7Viv8O1or/DtaK/w7Wi/8O1ov/DdiO/xDVhP8cx17/J7w+/yi8Pf8nvUD/J79B/ye/ + Qv8nwEP/JsBE/ybARf8mwUb/JcFI/yXDSP8lxEr/JMRL/yTFTf8lzFD/E2oq/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA1QAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAAOgAAAD/AAAA/wAA + AP8AAAD/AQIA/xlRAP8ulQH/LZMC/y2SA/8tkwP/LZQE/y6UBf8tlQb/LZYG/y6XB/8tmAn/LpgJ/y6Z + Cv8tmwv/LZsL/y+bCf8qoxv/GblO/w3JdP8MzXv/DMx4/w3MeP8NzHn/Dcx6/w3Ne/8NzXz/Dc18/w3O + ff8Nzn7/Dc9+/w3Pf/8N0ID/DdCB/w3Qgf8N0YL/DtGD/w7Rg/8O0oT/DtKE/w7ShP8O0oX/DtKG/w7S + hv8O04f/DtOH/w7Th/8O1Ij/DtSJ/w7Uif8O1Ir/DtWK/w7Viv8O1Yv/DtWL/w7Wi/8N14z/DdeP/w7W + i/8Yy2z/Jb5F/ym6OP8nvDz/J7w9/ye9P/8nvUH/J79B/ye/Qv8nwEP/JsBE/ybBRv8mwUb/JcJI/yXD + Sf8lxUr/JcpO/xRvK/8BAwH/AAAA/wAAAP8AAAD/AAAA/wAAAOgAAAAxAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAPMAAAD/AAAA/wAAAP8AAAD/AQEA/xhNAP8tkwH/LZMC/y2S + A/8tkwP/LZQE/y6UBv8tlQb/LZYG/y6XB/8tmAj/LpgJ/y6aCv8tmwr/LpsM/y+cC/8vnAv/Jqgm/xa+ + V/8Ny3b/C85+/wvNe/8MzHv/DM18/wzNff8Mzn7/DM5//wzOf/8Mz4D/DNCA/wzQgf8M0YL/DNGD/w3R + g/8N0oT/DdKE/w3Shf8N04b/DdOG/w3Th/8N04f/DdOH/w3Tif8N1In/DdSJ/w3Uiv8N1Ir/DdWL/w3V + jP8N1Yz/DdWM/w3WjP8M147/DNeR/w7Wi/8VznP/IsBL/yq5Nv8pujj/KLs6/yi8O/8nvDz/J709/ye9 + P/8nvUH/J79C/ye/Qv8nwEP/JsBF/ybBRv8mwUb/JcRJ/yXGSv8TaSf/AAIB/wAAAP8AAAD/AAAA/wAA + AP8AAADzAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUQAA + APQAAAD/AAAA/wAAAP8AAAD/AAAA/xRAAP8sjwH/LpQC/y2SA/8tkgP/LZQE/y6UBf8tlQb/LZYG/y6X + B/8tmAj/LpgJ/y6ZCv8tmwr/LZsM/y6cDP8vnAv/L50M/yeoJP8ZulD/Dsly/wrPf/8KzoD/C85+/wvO + fv8Lz3//C89//wvPgf8L0IH/C9CC/wvRg/8M0YT/DNKE/wzShf8M0oX/DNOG/wzTh/8M04f/DNOI/wzT + iP8M1Ij/DNSJ/wzUiv8M1Yr/DNWL/wzVi/8M1Yz/DNaN/wzWjv8L15D/C9iR/w7Uhv8Xymr/JL1F/yq3 + M/8quDP/Kbk3/ym6OP8pujn/KLs6/yi7O/8nvDz/J7w9/ye9P/8nvUD/J79B/ye/Qv8nwEP/JsBE/yfE + R/8mwEf/EVcg/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA9AAAAFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAPMAAAD/AAAA/wAAAP8AAAD/AAAA/w8y + AP8qiAH/LpYC/y2SA/8tkwP/LZQE/y6UBf8tlQb/LZYG/y6XB/8tmAn/LpgJ/y6aCv8tmwv/LZsM/y6c + Df8unQ3/L50M/y+eDP8qoxv/H7I9/xTBYP8MzHn/CtCC/wnRhP8K0YL/CtCD/wvQgv8L0YL/C9GE/wvS + hP8M0oX/DNOG/wzTh/8M04f/DNSI/wzUiP8M1In/DNSK/wzUiv8M1Ir/DNWL/wzVjP8L1o3/C9eP/wrX + kf8L15H/DdWK/xXNdP8dwlf/J7k6/yu1L/8qtjH/Krcz/yq4Nf8puTb/Kbk3/ym6OP8oujn/KLs6/yi8 + O/8nvDz/J7w9/ye9P/8nvUH/J79B/ye/Qv8oxUX/JLVA/w1DGP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + APMAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAUgAAAPQAAAD/AAAA/wAAAP8AAAD/AAAA/wkfAP8leAH/L5cC/y2SA/8tkwP/LZQE/y6U + Bv8tlQb/LZYG/y6XB/8tmAj/LpgK/y6ZCv8tmwr/LZsM/y6cDP8unQ3/Lp4P/y6eDv8vnQ3/Lp8R/ymn + If8hsjv/F75X/xDJcP8Mzn7/CdKG/wnTiP8J04n/CtOI/wrUif8K1In/CtSK/wrUiv8K1Yv/CtWM/wrW + jP8K1o7/CtaP/wrWj/8K15H/CteQ/w3Uif8Q0H7/F8lo/x+/UP8ntzn/K7Mt/yyzK/8qtC//KrUx/ym2 + Mv8ptzP/Krcz/yq4Nf8puTb/Kbk3/ym6OP8pujn/KLs6/yi7O/8nvDz/J7w9/ye9P/8nvkH/KMZE/yCf + N/8IKA7/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD0AAAAUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAOsAAAD/AAAA/wAA + AP8AAAD/AAAA/wQNAP8dXQD/LpUC/y6UA/8tkwP/LZQE/y6UBf8tlQb/LZYG/y6XB/8tmAj/LpgJ/y6Z + Cv8tmwv/LZsM/y6cDP8unQ7/Lp4P/y6fD/8tnxD/Lp8Q/y+fDv8voRD/LaQX/yiqJ/8jsjj/HblJ/xjA + Wv8Uxmb/Espv/xHLc/8Pznr/D898/w/Pff8Pz3z/Ec13/xLMdf8Uym7/GMVi/x3AVP8iu0X/JrU3/yqx + K/8ssCb/LLEm/yyxKf8rsiv/K7Mt/yu0L/8qtDD/KrUx/yq2Mv8ptzP/Krc0/yq4Nf8puTb/Kbk3/ym6 + OP8oujn/KLs6/yi7O/8nvDz/J78+/yjCQf8Zeir/AxEG/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA6wAA + AE0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAANwAAAD/AAAA/wAAAP8AAAD/AAAA/wABAP8SOwH/KocC/y+X + A/8tkwP/LZQE/y6UBv8tlQb/LZYG/y6XB/8tmAn/LpgJ/y6aCv8tmwv/LZsM/y6cDf8unQ7/Lp4P/y6f + EP8tnxH/LqAS/y6hEv8uoRL/L6ER/y+iEf8vohL/LqQU/y6kFf8tpxr/LKgd/yqqI/8qrCX/Kq0m/yqt + Jv8srCP/LKwh/y2rHv8tqx//Lawg/y2sIf8triT/LK8m/yuwJ/8rsSn/K7Iq/yuyK/8rsiz/K7Mt/yu0 + L/8qtDD/KrUx/yq2Mv8qtzP/Krc0/yq4Nf8puTb/Kbk3/ym6OP8oujn/KLw6/ynDPf8krjj/EE0Z/wAB + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANwAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAA + AL8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8HFwD/HmMB/y6UA/8ulgP/LZQE/y6UBf8tlQb/LZYG/y6X + B/8tmAj/LpgJ/y6ZCv8tmgr/LZsM/y6cDP8unQ3/Lp4P/y6fD/8unxD/LqAS/y6hEv8uohP/LqIU/y6j + Ff8upBb/LaUX/y2lGP8uphj/LqcZ/y2nGv8tqBv/Lakc/y2qHv8tqh//Lawg/yysIf8srSL/LK0j/yyu + JP8sryX/LK8m/yuwJ/8rsSj/K7Ip/yuyK/8rsiz/K7Mt/yu0L/8qtDD/KrUx/yq2Mv8ptzP/Krcz/yq4 + Nf8puTb/Kbk3/yq+Ov8pvTr/G34n/wYeCf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAC/AAAAIgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAJMAAAD+AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/EDMB/yV5Av8vmAP/LpcE/y6UBf8tlQb/LZYG/y6XB/8tmAj/LpgJ/y6ZCv8tmwv/LZsM/y6c + DP8unQ7/Lp4P/y6fD/8tnxH/LqAS/y6hEv8uohP/LqIU/y6jFf8upBb/LaUX/y2lGP8tpxn/Lqca/y2n + G/8tqBz/Lakd/y2qH/8tqh//Lawg/yysIf8srSL/LK0k/yyuJP8sryX/LLAn/yuwJ/8rsSj/K7Iq/yuy + K/8rsiz/K7Mt/yu0L/8qtDD/KrUx/yq2Mv8ptzP/Krc0/yu8Nv8qwDj/Ipou/w5BFP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD+AAAAkwAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAF0AAADmAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AwkA/xVEAf8oggP/L5oE/y+W + Bv8tlQb/LZYG/y6XB/8tmAj/LpgJ/y6aCv8tmwv/LZsM/y6dDf8unQ7/Lp4P/y6fEP8tnxH/LqAS/y6h + Ev8uohP/LqIU/y6jFf8upBb/LaUX/y2lGP8tpxn/Laca/y2nG/8tqBz/Lakd/y2qHv8tqx//LKwg/yys + If8srSP/LK0k/yyuJP8sryb/LLAn/yuwJ/8rsSn/K7Iq/yuyK/8rsiz/K7Mt/yu0L/8qtDD/KrUx/yq5 + M/8rvzX/JaIu/xNVGP8CCwP/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA5QAAAF0AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAACzAAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wUPAP8VRwL/J4EE/y+YBf8umQb/LpcG/y6XB/8tmAj/LpgJ/y6Z + Cv8tmgr/LZsM/y6cDP8unQ3/Lp4P/y6fD/8tnxH/LqAS/y6hEv8uohP/LqIU/y6jFf8upBb/LaUX/y2l + GP8tpxn/Lqca/y2nG/8tqBz/Lakd/y2qHv8tqh//Lawg/yysIf8srSL/LK0j/yyuJP8sryX/LK8m/yuw + J/8rsSj/K7Ip/yuyK/8rsiz/K7Mt/yy5MP8rujH/JZ4r/xRYGP8EEwX/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAALMAAAAmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAABmAAAA4wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8EDQD/Ez4B/yR1BP8tlQb/L5wH/y+aB/8tmAj/LpgJ/y6ZCv8tmwv/LZsM/y6cDP8unQ7/Lp4P/y6f + D/8tnxH/LqAS/y6hEv8uohP/LqIU/y6jFf8upBb/LaUX/y2lGP8tpxn/Lqca/y2nG/8tqBz/Lakd/y2q + H/8tqh//LKwg/yysIf8srSL/LK0k/yyuJP8sryX/LLAn/yuwJ/8rsij/LLUq/y25LP8rsyz/Io4k/xJL + E/8DEAT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAOEAAABjAAAABAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAfAAAAlQAAAPcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQQA/wwmAf8bWwT/KIYF/y+a + B/8vngn/L5sJ/y6aCv8tmwv/LZsM/y6cDf8unQ7/Lp4P/y6fEP8tnxH/LqAS/y6hEv8uohP/LqIU/y6j + Ff8upBb/LaUX/y2lGP8tpxn/Laca/y2nG/8tqBz/Lakd/y2qHv8tqyD/LKwg/yysIf8srSP/LK0k/yyu + JP8tsib/LrYo/yyzKP8mniT/GmwZ/wsuC/8BBAH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + APcAAACVAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAK0AAAD7AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8DCwD/Di8C/xtaBP8mgAf/LZYJ/zCeCv8voAv/L58M/y6e + DP8ung3/Lp4P/y6fD/8tnxH/LqAS/y6hEv8uohP/LqIU/y6jFf8upBb/LaUX/y2lGP8tpxn/Lqca/y2n + G/8tqBz/Lakd/y2rHv8urCD/LrAh/y6yI/8usyP/LKoj/yWSH/8aaBb/DTYM/wMMA/8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPsAAACtAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACvAAAA+QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wIFAP8JHgL/Ez8E/x1gBv8kewn/Ko8L/y6bDP8voA7/MKQP/zCmEP8vpRH/L6US/y+l + E/8vpRP/L6YU/y+nFv8vqBb/L6kY/y6qGf8vrRr/MK8b/y+uHP8uqx3/Lagd/ymdHP8khxn/G2sU/xJG + Df8JIgf/AgYB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPkAAACvAAAAQAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAA5AAAAnwAAAOwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEE + AP8EDwH/CiAC/xE5BP8WTAf/G10J/x5oCv8gcQz/I3sO/yWCDv8lgw//JYMQ/yWEEf8kfhH/IHYR/x1s + EP8bYg7/FlEN/xA9Cv8KIwb/BBAD/wEEAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAOwAAACfAAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAHIAAADHAAAA+wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAQD/AQMA/wEDAP8BAwD/AQMA/wABAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA+wAAAMcAAAByAAAAIgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA2AAAAgQAAAMoAAAD5AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD5AAAAygAA + AIEAAAA2AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAABwAAAC4AAABqAAAAqQAAAN4AAAD2AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA9gAAAN4AAACpAAAAagAAAC4AAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAA + ADEAAABZAAAAhwAAALIAAADPAAAA5QAAAPcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD3AAAA5QAAAM8AAACyAAAAhwAAAFkAAAAxAAAACwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAZAAAAKgAA + ADcAAABNAAAAXgAAAGoAAABpAAAAaQAAAGkAAABpAAAAagAAAF4AAABNAAAANwAAACoAAAAZAAAABgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////+AAB///////////////// + wAAAA////////////////gAAAAB///////////////AAAAAAD/////////////+AAAAAAAH///////// + ///+AAAAAAAAf///////////+AAAAAAAAB///////////+AAAAAAAAAH///////////AAAAAAAAAA/// + ////////AAAAAAAAAAD//////////gAAAAAAAAAAf/////////gAAAAAAAAAAB/////////wAAAAAAAA + AAAP////////4AAAAAAAAAAAB////////8AAAAAAAAAAAAP///////+AAAAAAAAAAAAB////////AAAA + AAAAAAAAAP///////gAAAAAAAAAAAAB///////wAAAAAAAAAAAAAP//////4AAAAAAAAAAAAAB////// + 8AAAAAAAAAAAAAAP/////+AAAAAAAAAAAAAAB//////gAAAAAAAAAAAAAAf/////wAAAAAAAAAAAAAAD + /////4AAAAAAAAAAAAAAAf////+AAAAAAAAAAAAAAAH/////AAAAAAAAAAAAAAAA/////gAAAAAAAAAA + AAAAAH////4AAAAAAAAAAAAAAAB////8AAAAAAAAAAAAAAAAP////AAAAAAAAAAAAAAAAD////gAAAAA + AAAAAAAAAAAf///4AAAAAAAAAAAAAAAAH///8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAP///w + AAAAAAAAAAAAAAAAD///4AAAAAAAAAAAAAAAAAf//+AAAAAAAAAAAAAAAAAH///gAAAAAAAAAAAAAAAA + B///wAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///gAAAAAAAAAAA + AAAAAAH//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//AAAAAAAAAAAAAAAAAAD//wAAAAAA + AAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/4A + AAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAA + AH/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAA + AAAAAAA//AAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAA//AAAAAAA + AAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/wA + AAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAA + AD/8AAAAAAAAAAAAAAAAAAA//gAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAA + AAAAAAB//gAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAH//AAAAAAAAAAAAAAAAAAD//wAAAAAA + AAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//4AAAAAAAAAAAAAAAAAB//+A + AAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//8AAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAA + A///4AAAAAAAAAAAAAAAAAf//+AAAAAAAAAAAAAAAAAH///wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAA + AAAAAA////gAAAAAAAAAAAAAAAAf///4AAAAAAAAAAAAAAAAH////AAAAAAAAAAAAAAAAD////4AAAAA + AAAAAAAAAAB////+AAAAAAAAAAAAAAAAf////wAAAAAAAAAAAAAAAP////+AAAAAAAAAAAAAAAH///// + gAAAAAAAAAAAAAAB/////8AAAAAAAAAAAAAAA//////gAAAAAAAAAAAAAAf/////8AAAAAAAAAAAAAAP + //////gAAAAAAAAAAAAAH//////8AAAAAAAAAAAAAD///////gAAAAAAAAAAAAB///////8AAAAAAAAA + AAAA////////gAAAAAAAAAAAAf///////8AAAAAAAAAAAAP////////gAAAAAAAAAAAH////////+AAA + AAAAAAAAH/////////wAAAAAAAAAAD/////////+AAAAAAAAAAB//////////4AAAAAAAAAB//////// + ///gAAAAAAAAB///////////+AAAAAAAAB////////////4AAAAAAAB/////////////gAAAAAAB//// + /////////+AAAAAAB//////////////8AAAAAD///////////////8AAAAP////////////////+AAB/ + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////8= + + + \ No newline at end of file diff --git a/FATrace.Model/FATrace.Model.csproj b/FATrace.Model/FATrace.Model.csproj index 3d9c1d1..cbcb056 100644 --- a/FATrace.Model/FATrace.Model.csproj +++ b/FATrace.Model/FATrace.Model.csproj @@ -10,8 +10,4 @@ - - - - diff --git a/FATrace.Model/FileModel/FactoryInOutbound.cs b/FATrace.Model/FileModel/FactoryInOutbound.cs new file mode 100644 index 0000000..9fb4dd7 --- /dev/null +++ b/FATrace.Model/FileModel/FactoryInOutbound.cs @@ -0,0 +1,62 @@ +using FreeSql.DataAnnotations; + +namespace FATrace.Model +{ + /// + /// 工厂-成品入库与出库(Excel 导入数据,仅展示用) + /// + [Table(Name = "FactoryInOutbound")] + public class FactoryInOutbound + { + /// + /// 主键 + /// + [Column(IsPrimary = true, IsIdentity = true)] + public long Id { get; set; } + + /// + /// 入库时间 + /// + public string? InTime { get; set; } + + /// + /// 出库时间 + /// + public string? OutTime { get; set; } + + /// + /// 产地 + /// + public string? Origin { get; set; } + + /// + /// 批号 + /// + public string? Batch { get; set; } + + /// + /// 原料代码 + /// + public string? RawCode { get; set; } + + /// + /// 原料名称 + /// + public string? RawName { get; set; } + + /// + /// 入库总箱数 + /// + public string? TotalInPcs { get; set; } + + /// + /// 出库总箱数 + /// + public string? TotalOutPcs { get; set; } + + /// + /// 剩余箱数 + /// + public string? RemainPcs { get; set; } + } +} diff --git a/FATrace.Model/FileModel/FactoryInbound.cs b/FATrace.Model/FileModel/FactoryInbound.cs index d740813..00fd0b6 100644 --- a/FATrace.Model/FileModel/FactoryInbound.cs +++ b/FATrace.Model/FileModel/FactoryInbound.cs @@ -3,7 +3,7 @@ using FreeSql.DataAnnotations; namespace FATrace.Model { /// - /// 工厂-入库(Excel 导入数据,仅展示用) + /// 工厂-成品入库(Excel 导入数据,仅展示用) /// [Table(Name = "FactoryInbound")] public class FactoryInbound @@ -14,6 +14,21 @@ namespace FATrace.Model [Column(IsPrimary = true, IsIdentity = true)] public long Id { get; set; } + /// + /// 批号 + /// + public string? Batch { get; set; } + + /// + /// 重量(G) + /// + public string? Weight { get; set; } + + /// + /// 保质期 + /// + public string? ShelfLife { get; set; } + /// /// 产地 /// @@ -30,19 +45,9 @@ namespace FATrace.Model public string? RawName { get; set; } /// - /// 重量 + /// 序号 /// - public string? Weight { get; set; } - - /// - /// 登录日 - /// - public string? LoginDate { get; set; } - - /// - /// 登录时间 - /// - public string? LoginTime { get; set; } + public string? SequenceNo { get; set; } /// /// 登录日期时间 diff --git a/FATrace.Model/FileModel/FactoryOutbound.cs b/FATrace.Model/FileModel/FactoryOutbound.cs index e8ae57c..61c465b 100644 --- a/FATrace.Model/FileModel/FactoryOutbound.cs +++ b/FATrace.Model/FileModel/FactoryOutbound.cs @@ -49,16 +49,6 @@ namespace FATrace.Model /// public string? SequenceNo { get; set; } - /// - /// 登录日 - /// - public string? LoginDate { get; set; } - - /// - /// 登录时间 - /// - public string? LoginTime { get; set; } - /// /// 登录日期时间 /// diff --git a/FATrace.Model/FileModel/FactoryProductionRecord.cs b/FATrace.Model/FileModel/FactoryProductionRecord.cs index e873085..5194a14 100644 --- a/FATrace.Model/FileModel/FactoryProductionRecord.cs +++ b/FATrace.Model/FileModel/FactoryProductionRecord.cs @@ -3,7 +3,7 @@ using FreeSql.DataAnnotations; namespace FATrace.Model { /// - /// 工厂-原料生产信息(Excel 导入数据,仅展示用) + /// 工厂-包袋生产(Excel 导入数据,仅展示用) /// [Table(Name = "FactoryProductionRecord")] public class FactoryProductionRecord diff --git a/FATrace.Model/FileModel/FactoryInventoryTransaction.cs b/FATrace.Model/FileModel/FactoryRawInOutbound.cs similarity index 80% rename from FATrace.Model/FileModel/FactoryInventoryTransaction.cs rename to FATrace.Model/FileModel/FactoryRawInOutbound.cs index bd7fe8b..8cbe665 100644 --- a/FATrace.Model/FileModel/FactoryInventoryTransaction.cs +++ b/FATrace.Model/FileModel/FactoryRawInOutbound.cs @@ -3,10 +3,10 @@ using FreeSql.DataAnnotations; namespace FATrace.Model { /// - /// 工厂-出入库(Excel 导入数据,仅展示用) + /// 工厂-原料出入库(Excel 导入数据,仅展示用) /// - [Table(Name = "FactoryInventoryTransaction")] - public class FactoryInventoryTransaction + [Table(Name = "FactoryRawInOutbound")] + public class FactoryRawInOutbound { /// /// 主键 @@ -20,7 +20,7 @@ namespace FATrace.Model public string? InTime { get; set; } /// - /// 领料时间 + /// 出库时间 /// public string? OutTime { get; set; } @@ -40,17 +40,17 @@ namespace FATrace.Model public string? RawName { get; set; } /// - /// 入库总重量 KG + /// 入库总重量(KG) /// public string? TotalInWeightKg { get; set; } /// - /// 领料总重量 KG + /// 出库总重量(KG) /// public string? TotalOutWeightKg { get; set; } /// - /// 剩余重量 KG + /// 剩余重量(KG) /// public string? RemainWeightKg { get; set; } } diff --git a/FATrace.Model/FileModel/FactoryMaterialWithdrawal.cs b/FATrace.Model/FileModel/FactoryRawInbound.cs similarity index 68% rename from FATrace.Model/FileModel/FactoryMaterialWithdrawal.cs rename to FATrace.Model/FileModel/FactoryRawInbound.cs index 242f8a6..7ad39a5 100644 --- a/FATrace.Model/FileModel/FactoryMaterialWithdrawal.cs +++ b/FATrace.Model/FileModel/FactoryRawInbound.cs @@ -3,10 +3,10 @@ using FreeSql.DataAnnotations; namespace FATrace.Model { /// - /// 工厂-领料(Excel 导入数据,仅展示用) + /// 工厂-原料入库(Excel 导入数据,仅展示用) /// - [Table(Name = "FactoryMaterialWithdrawal")] - public class FactoryMaterialWithdrawal + [Table(Name = "FactoryRawInbound")] + public class FactoryRawInbound { /// /// 主键 @@ -34,16 +34,6 @@ namespace FATrace.Model /// public string? Weight { get; set; } - /// - /// 登录日 - /// - public string? LoginDate { get; set; } - - /// - /// 登录时间 - /// - public string? LoginTime { get; set; } - /// /// 登录日期时间 /// diff --git a/FATrace.Model/FileModel/FactoryRawOutbound.cs b/FATrace.Model/FileModel/FactoryRawOutbound.cs new file mode 100644 index 0000000..db062e0 --- /dev/null +++ b/FATrace.Model/FileModel/FactoryRawOutbound.cs @@ -0,0 +1,42 @@ +using FreeSql.DataAnnotations; + +namespace FATrace.Model +{ + /// + /// 工厂-原料出库(Excel 导入数据,仅展示用) + /// + [Table(Name = "FactoryRawOutbound")] + public class FactoryRawOutbound + { + /// + /// 主键 + /// + [Column(IsPrimary = true, IsIdentity = true)] + public long Id { get; set; } + + /// + /// 产地 + /// + public string? Origin { get; set; } + + /// + /// 原料代码 + /// + public string? RawCode { get; set; } + + /// + /// 原料名称 + /// + public string? RawName { get; set; } + + /// + /// 重量 + /// + public string? Weight { get; set; } + + /// + /// 登录日期时间 + /// + public string? LoginDateTime { get; set; } + } +} diff --git a/FATrace.Model/FileModel/OEMInventoryTransaction.cs b/FATrace.Model/FileModel/OEMInOutbound.cs similarity index 94% rename from FATrace.Model/FileModel/OEMInventoryTransaction.cs rename to FATrace.Model/FileModel/OEMInOutbound.cs index be3b9b0..31ce36c 100644 --- a/FATrace.Model/FileModel/OEMInventoryTransaction.cs +++ b/FATrace.Model/FileModel/OEMInOutbound.cs @@ -5,8 +5,8 @@ namespace FATrace.Model /// /// OEM-出入库(Excel 导入数据,仅展示用) /// - [Table(Name = "OEMInventoryTransaction")] - public class OEMInventoryTransaction + [Table(Name = "OEMInOutbound")] + public class OEMInOutbound { /// /// 主键 diff --git a/FATrace.Model/FileModel/OEMInbound.cs b/FATrace.Model/FileModel/OEMInbound.cs index 8676ef6..56412f5 100644 --- a/FATrace.Model/FileModel/OEMInbound.cs +++ b/FATrace.Model/FileModel/OEMInbound.cs @@ -49,16 +49,6 @@ namespace FATrace.Model /// public string? SequenceNo { get; set; } - /// - /// 登录日 - /// - public string? LoginDate { get; set; } - - /// - /// 登录时间 - /// - public string? LoginTime { get; set; } - /// /// 登录日期时间 /// diff --git a/FATrace.Model/FileModel/OEMOutbound.cs b/FATrace.Model/FileModel/OEMOutbound.cs index b11cc14..c7f3b06 100644 --- a/FATrace.Model/FileModel/OEMOutbound.cs +++ b/FATrace.Model/FileModel/OEMOutbound.cs @@ -49,16 +49,6 @@ namespace FATrace.Model /// public string? SequenceNo { get; set; } - /// - /// 登录日 - /// - public string? LoginDate { get; set; } - - /// - /// 登录时间 - /// - public string? LoginTime { get; set; } - /// /// 登录日期时间 /// diff --git a/FATrace.Model/FileModel/OEMRawUsageInfo.cs b/FATrace.Model/FileModel/OEMRawUsageInfo.cs index b42880d..1d456ee 100644 --- a/FATrace.Model/FileModel/OEMRawUsageInfo.cs +++ b/FATrace.Model/FileModel/OEMRawUsageInfo.cs @@ -39,9 +39,5 @@ namespace FATrace.Model /// public string? RawCode { get; set; } - /// - /// 视频链接 - /// - public string? VideoUrl { get; set; } } } diff --git a/FATrace.WPLApp/App.xaml.cs b/FATrace.WPLApp/App.xaml.cs index 04e6df9..6de2503 100644 --- a/FATrace.WPLApp/App.xaml.cs +++ b/FATrace.WPLApp/App.xaml.cs @@ -273,11 +273,13 @@ namespace FATrace.WPLApp containerRegistry.RegisterForNavigation(); // 工厂/OEM Excel 导入数据查询页 + containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); + containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); containerRegistry.RegisterForNavigation(); diff --git a/FATrace.WPLApp/ExcelFile/20251218161818.xlsx b/FATrace.WPLApp/ExcelFile/20251218161818.xlsx deleted file mode 100644 index f16383a..0000000 Binary files a/FATrace.WPLApp/ExcelFile/20251218161818.xlsx and /dev/null differ diff --git a/FATrace.WPLApp/ExcelFile/20260120155036.xlsx b/FATrace.WPLApp/ExcelFile/20260120155036.xlsx new file mode 100644 index 0000000..66c8f6a Binary files /dev/null and b/FATrace.WPLApp/ExcelFile/20260120155036.xlsx differ diff --git a/FATrace.WPLApp/Services/NavigationServices.cs b/FATrace.WPLApp/Services/NavigationServices.cs index 84b75ff..853aa03 100644 --- a/FATrace.WPLApp/Services/NavigationServices.cs +++ b/FATrace.WPLApp/Services/NavigationServices.cs @@ -137,29 +137,36 @@ namespace FATrace.WPLApp.Services { new NavItemDto { - Name = "工厂-入库", - CmdPar = "工厂-入库", + Name = "工厂-原料入库", + CmdPar = "工厂-原料入库", Icon = "\uea25", IsParent = false, }, new NavItemDto { - Name = "工厂-领料", - CmdPar = "工厂-领料", + Name = "工厂-原料出库", + CmdPar = "工厂-原料出库", Icon = "\uea25", IsParent = false, }, new NavItemDto { - Name = "工厂-出入库", - CmdPar = "工厂-出入库", + Name = "工厂-原料出入库", + CmdPar = "工厂-原料出入库", Icon = "\uea25", IsParent = false, }, new NavItemDto { - Name = "工厂-原料生产信息", - CmdPar = "工厂-原料生产信息", + Name = "工厂-包袋生产", + CmdPar = "工厂-包袋生产", + Icon = "\uea25", + IsParent = false, + }, + new NavItemDto + { + Name = "工厂-成品入库", + CmdPar = "工厂-成品入库", Icon = "\uea25", IsParent = false, }, @@ -169,6 +176,13 @@ namespace FATrace.WPLApp.Services CmdPar = "工厂-成品出库", Icon = "\uea25", IsParent = false, + }, + new NavItemDto + { + Name = "工厂-成品入库与出库", + CmdPar = "工厂-成品入库与出库", + Icon = "\uea25", + IsParent = false, } } }, @@ -205,8 +219,8 @@ namespace FATrace.WPLApp.Services }, new NavItemDto { - Name = "OEM-原料使用信息", - CmdPar = "OEM-原料使用信息", + Name = "OEM-原料使用", + CmdPar = "OEM-原料使用", Icon = "\ueab4", IsParent = false, } diff --git a/FATrace.WPLApp/Services/ReadFileServices.cs b/FATrace.WPLApp/Services/ReadFileServices.cs index 86ed997..2dcafae 100644 --- a/FATrace.WPLApp/Services/ReadFileServices.cs +++ b/FATrace.WPLApp/Services/ReadFileServices.cs @@ -57,7 +57,7 @@ namespace FATrace.WPLApp.Services } // 每小时扫描一次(3600000 ms),如有需要可后续改为配置项 - _timer = new System.Timers.Timer(TimeSpan.FromMinutes(1).TotalMilliseconds)//TimeSpan.FromHours(1).TotalMilliseconds + _timer = new System.Timers.Timer(TimeSpan.FromHours(1).TotalMilliseconds) { AutoReset = true, Enabled = true @@ -221,14 +221,17 @@ namespace FATrace.WPLApp.Services IWorkbook workbook = new XSSFWorkbook(fs); var formatter = new DataFormatter(); - sheetStats["FactoryInbound"] = ImportFactoryInbound(workbook, formatter); - sheetStats["FactoryMaterialWithdrawal"] = ImportFactoryMaterialWithdrawal(workbook, formatter); - sheetStats["FactoryInventoryTransaction"] = ImportFactoryInventoryTransaction(workbook, formatter); + sheetStats["FactoryRawInbound"] = ImportFactoryRawInbound(workbook, formatter); + sheetStats["FactoryRawOutbound"] = ImportFactoryRawOutbound(workbook, formatter); + sheetStats["FactoryRawInOutbound"] = ImportFactoryRawInOutbound(workbook, formatter); sheetStats["FactoryProductionRecord"] = ImportFactoryProductionRecord(workbook, formatter); + sheetStats["FactoryInbound"] = ImportFactoryInbound(workbook, formatter); sheetStats["FactoryOutbound"] = ImportFactoryOutbound(workbook, formatter); + sheetStats["FactoryInOutbound"] = ImportFactoryInOutbound(workbook, formatter); + sheetStats["OEMInbound"] = ImportOEMInbound(workbook, formatter); sheetStats["OEMOutbound"] = ImportOEMOutbound(workbook, formatter); - sheetStats["OEMInventoryTransaction"] = ImportOEMInventoryTransaction(workbook, formatter); + sheetStats["OEMInOutbound"] = ImportOEMInOutbound(workbook, formatter); sheetStats["OEMRawUsageInfo"] = ImportOEMRawUsageInfo(workbook, formatter); } @@ -306,29 +309,27 @@ namespace FATrace.WPLApp.Services return cell == null ? string.Empty : formatter.FormatCellValue(cell).Trim(); } - private int ImportFactoryInbound(IWorkbook workbook, DataFormatter formatter) + private int ImportFactoryRawInbound(IWorkbook workbook, DataFormatter formatter) { - var sheet = workbook.GetSheet("工厂-入库"); + var sheet = workbook.GetSheet("工厂-原料入库"); if (sheet == null) return 0; - var list = new List(); + var list = new List(); for (int i = 1; i <= sheet.LastRowNum; i++) { var row = sheet.GetRow(i); if (IsRowEmpty(row, formatter)) continue; - var entity = new FactoryInbound + var entity = new FactoryRawInbound { Origin = GetCellString(row, 0, formatter), RawCode = GetCellString(row, 1, formatter), RawName = GetCellString(row, 2, formatter), Weight = GetCellString(row, 3, formatter), - LoginDate = GetCellString(row, 4, formatter), - LoginTime = GetCellString(row, 5, formatter), - LoginDateTime = GetCellString(row, 6, formatter) + LoginDateTime = GetCellString(row, 4, formatter) }; - if (IsAllEmpty(entity.Origin, entity.RawCode, entity.RawName, entity.Weight, entity.LoginDate, entity.LoginTime, entity.LoginDateTime)) + if (IsAllEmpty(entity.Origin, entity.RawCode, entity.RawName, entity.Weight, entity.LoginDateTime)) continue; list.Add(entity); @@ -341,29 +342,27 @@ namespace FATrace.WPLApp.Services return list.Count; } - private int ImportFactoryMaterialWithdrawal(IWorkbook workbook, DataFormatter formatter) + private int ImportFactoryRawOutbound(IWorkbook workbook, DataFormatter formatter) { - var sheet = workbook.GetSheet("工厂-领料"); + var sheet = workbook.GetSheet("工厂-原料出库"); if (sheet == null) return 0; - var list = new List(); + var list = new List(); for (int i = 1; i <= sheet.LastRowNum; i++) { var row = sheet.GetRow(i); if (IsRowEmpty(row, formatter)) continue; - var entity = new FactoryMaterialWithdrawal + var entity = new FactoryRawOutbound { Origin = GetCellString(row, 0, formatter), RawCode = GetCellString(row, 1, formatter), RawName = GetCellString(row, 2, formatter), Weight = GetCellString(row, 3, formatter), - LoginDate = GetCellString(row, 4, formatter), - LoginTime = GetCellString(row, 5, formatter), - LoginDateTime = GetCellString(row, 6, formatter) + LoginDateTime = GetCellString(row, 4, formatter) }; - if (IsAllEmpty(entity.Origin, entity.RawCode, entity.RawName, entity.Weight, entity.LoginDate, entity.LoginTime, entity.LoginDateTime)) + if (IsAllEmpty(entity.Origin, entity.RawCode, entity.RawName, entity.Weight, entity.LoginDateTime)) continue; list.Add(entity); @@ -376,18 +375,18 @@ namespace FATrace.WPLApp.Services return list.Count; } - private int ImportFactoryInventoryTransaction(IWorkbook workbook, DataFormatter formatter) + private int ImportFactoryRawInOutbound(IWorkbook workbook, DataFormatter formatter) { - var sheet = workbook.GetSheet("工厂-出入库"); + var sheet = workbook.GetSheet("工厂-原料出入库"); if (sheet == null) return 0; - var list = new List(); + var list = new List(); for (int i = 1; i <= sheet.LastRowNum; i++) { var row = sheet.GetRow(i); if (IsRowEmpty(row, formatter)) continue; - var entity = new FactoryInventoryTransaction + var entity = new FactoryRawInOutbound { InTime = GetCellString(row, 0, formatter), OutTime = GetCellString(row, 1, formatter), @@ -414,7 +413,7 @@ namespace FATrace.WPLApp.Services private int ImportFactoryProductionRecord(IWorkbook workbook, DataFormatter formatter) { - var sheet = workbook.GetSheet("工厂-原料生产信息"); + var sheet = workbook.GetSheet("工厂-包袋生产信息"); if (sheet == null) return 0; var list = new List(); @@ -457,9 +456,45 @@ namespace FATrace.WPLApp.Services return list.Count; } + private int ImportFactoryInbound(IWorkbook workbook, DataFormatter formatter) + { + var sheet = workbook.GetSheet("工厂-成品入库信息"); + if (sheet == null) return 0; + + var list = new List(); + for (int i = 1; i <= sheet.LastRowNum; i++) + { + var row = sheet.GetRow(i); + if (IsRowEmpty(row, formatter)) continue; + + var entity = new FactoryInbound + { + Batch = GetCellString(row, 0, formatter), + Weight = GetCellString(row, 1, formatter), + ShelfLife = GetCellString(row, 2, formatter), + Origin = GetCellString(row, 3, formatter), + RawCode = GetCellString(row, 4, formatter), + RawName = GetCellString(row, 5, formatter), + SequenceNo = GetCellString(row, 6, formatter), + LoginDateTime = GetCellString(row, 7, formatter) + }; + + if (IsAllEmpty(entity.Batch, entity.Weight, entity.ShelfLife, entity.Origin, entity.RawCode, entity.RawName, entity.SequenceNo, entity.LoginDateTime)) + continue; + + list.Add(entity); + } + + if (list.Count > 0) + { + _fsql.Insert(list).ExecuteAffrows(); + } + return list.Count; + } + private int ImportFactoryOutbound(IWorkbook workbook, DataFormatter formatter) { - var sheet = workbook.GetSheet("工厂-成品出库"); + var sheet = workbook.GetSheet("工厂-成品出库信息"); if (sheet == null) return 0; var list = new List(); @@ -477,13 +512,48 @@ namespace FATrace.WPLApp.Services RawCode = GetCellString(row, 4, formatter), RawName = GetCellString(row, 5, formatter), SequenceNo = GetCellString(row, 6, formatter), - LoginDate = GetCellString(row, 7, formatter), - LoginTime = GetCellString(row, 8, formatter), - LoginDateTime = GetCellString(row, 9, formatter) + LoginDateTime = GetCellString(row, 7, formatter) }; if (IsAllEmpty(entity.Batch, entity.Weight, entity.ShelfLife, entity.Origin, entity.RawCode, entity.RawName, - entity.SequenceNo, entity.LoginDate, entity.LoginTime, entity.LoginDateTime)) + entity.SequenceNo, entity.LoginDateTime)) + continue; + + list.Add(entity); + } + + if (list.Count > 0) + { + _fsql.Insert(list).ExecuteAffrows(); + } + return list.Count; + } + + private int ImportFactoryInOutbound(IWorkbook workbook, DataFormatter formatter) + { + var sheet = workbook.GetSheet("工厂-成品入库与出库信息"); + if (sheet == null) return 0; + + var list = new List(); + for (int i = 1; i <= sheet.LastRowNum; i++) + { + var row = sheet.GetRow(i); + if (IsRowEmpty(row, formatter)) continue; + + var entity = new FactoryInOutbound + { + InTime = GetCellString(row, 0, formatter), + OutTime = GetCellString(row, 1, formatter), + Origin = GetCellString(row, 2, formatter), + Batch = GetCellString(row, 3, formatter), + RawCode = GetCellString(row, 4, formatter), + RawName = GetCellString(row, 5, formatter), + TotalInPcs = GetCellString(row, 6, formatter), + TotalOutPcs = GetCellString(row, 7, formatter), + RemainPcs = GetCellString(row, 8, formatter) + }; + + if (IsAllEmpty(entity.InTime, entity.OutTime, entity.Origin, entity.Batch, entity.RawCode, entity.RawName, entity.TotalInPcs, entity.TotalOutPcs, entity.RemainPcs)) continue; list.Add(entity); @@ -516,13 +586,11 @@ namespace FATrace.WPLApp.Services RawCode = GetCellString(row, 4, formatter), RawName = GetCellString(row, 5, formatter), SequenceNo = GetCellString(row, 6, formatter), - LoginDate = GetCellString(row, 7, formatter), - LoginTime = GetCellString(row, 8, formatter), - LoginDateTime = GetCellString(row, 9, formatter) + LoginDateTime = GetCellString(row, 7, formatter) }; if (IsAllEmpty(entity.Batch, entity.Weight, entity.ShelfLife, entity.Origin, entity.RawCode, entity.RawName, - entity.SequenceNo, entity.LoginDate, entity.LoginTime, entity.LoginDateTime)) + entity.SequenceNo, entity.LoginDateTime)) continue; list.Add(entity); @@ -555,13 +623,11 @@ namespace FATrace.WPLApp.Services RawCode = GetCellString(row, 4, formatter), RawName = GetCellString(row, 5, formatter), SequenceNo = GetCellString(row, 6, formatter), - LoginDate = GetCellString(row, 7, formatter), - LoginTime = GetCellString(row, 8, formatter), - LoginDateTime = GetCellString(row, 9, formatter) + LoginDateTime = GetCellString(row, 7, formatter) }; if (IsAllEmpty(entity.Batch, entity.Weight, entity.ShelfLife, entity.Origin, entity.RawCode, entity.RawName, - entity.SequenceNo, entity.LoginDate, entity.LoginTime, entity.LoginDateTime)) + entity.SequenceNo, entity.LoginDateTime)) continue; list.Add(entity); @@ -574,18 +640,18 @@ namespace FATrace.WPLApp.Services return list.Count; } - private int ImportOEMInventoryTransaction(IWorkbook workbook, DataFormatter formatter) + private int ImportOEMInOutbound(IWorkbook workbook, DataFormatter formatter) { var sheet = workbook.GetSheet("OEM-出入库"); if (sheet == null) return 0; - var list = new List(); + var list = new List(); for (int i = 1; i <= sheet.LastRowNum; i++) { var row = sheet.GetRow(i); if (IsRowEmpty(row, formatter)) continue; - var entity = new OEMInventoryTransaction + var entity = new OEMInOutbound { InTime = GetCellString(row, 0, formatter), OutTime = GetCellString(row, 1, formatter), @@ -629,11 +695,10 @@ namespace FATrace.WPLApp.Services InBagCode = GetCellString(row, 1, formatter), Origin = GetCellString(row, 2, formatter), RawName = GetCellString(row, 3, formatter), - RawCode = GetCellString(row, 4, formatter), - VideoUrl = GetCellString(row, 5, formatter) + RawCode = GetCellString(row, 4, formatter) }; - if (IsAllEmpty(entity.RawUseTime, entity.InBagCode, entity.Origin, entity.RawName, entity.RawCode, entity.VideoUrl)) + if (IsAllEmpty(entity.RawUseTime, entity.InBagCode, entity.Origin, entity.RawName, entity.RawCode)) continue; list.Add(entity); diff --git a/FATrace.WPLApp/ViewModels/FactoryInOutboundViewModel.cs b/FATrace.WPLApp/ViewModels/FactoryInOutboundViewModel.cs new file mode 100644 index 0000000..3733361 --- /dev/null +++ b/FATrace.WPLApp/ViewModels/FactoryInOutboundViewModel.cs @@ -0,0 +1,272 @@ +using FATrace.Model; +using FATrace.WPLApp.Core; +using FATrace.WPLApp.Services; +using FreeSql; +using Prism.Commands; +using System; +using System.Collections.ObjectModel; +using System.Threading.Tasks; +using System.Windows; + +namespace FATrace.WPLApp.ViewModels +{ + /// + /// 工厂-成品入库与出库 查询 VM(展示 FactoryInOutbound) + /// + public class FactoryInOutboundViewModel : NavigationViewModel + { + private readonly IFreeSql _fsql; + private readonly ILogService _log; + + /// + /// 构造函数 + /// + /// FreeSql 实例 + /// 日志服务 + public FactoryInOutboundViewModel(IFreeSql fsql, ILogService log) + { + _fsql = fsql; + _log = log; + + Items = new ObservableCollection(); + + SearchCommand = new DelegateCommand(async () => await SearchAsync(), () => !IsBusy) + .ObservesProperty(() => IsBusy); + ClearCommand = new DelegateCommand(ClearFilters, () => !IsBusy) + .ObservesProperty(() => IsBusy); + + FirstPageCommand = new DelegateCommand(async () => { if (PageIndex == 1) return; PageIndex = 1; await SearchAsync(); }, () => !IsBusy && PageIndex > 1) + .ObservesProperty(() => IsBusy) + .ObservesProperty(() => PageIndex); + PrevPageCommand = new DelegateCommand(async () => { if (PageIndex <= 1) return; PageIndex -= 1; await SearchAsync(); }, () => !IsBusy && PageIndex > 1) + .ObservesProperty(() => IsBusy) + .ObservesProperty(() => PageIndex); + NextPageCommand = new DelegateCommand(async () => { if (PageIndex >= TotalPages) return; PageIndex += 1; await SearchAsync(); }, () => !IsBusy && PageIndex < TotalPages) + .ObservesProperty(() => IsBusy) + .ObservesProperty(() => PageIndex) + .ObservesProperty(() => TotalPages); + LastPageCommand = new DelegateCommand(async () => { if (TotalPages <= 0 || PageIndex == TotalPages) return; PageIndex = TotalPages; await SearchAsync(); }, () => !IsBusy && PageIndex < TotalPages) + .ObservesProperty(() => IsBusy) + .ObservesProperty(() => PageIndex) + .ObservesProperty(() => TotalPages); + } + + #region 查询条件 + private string? _origin; + /// + /// 产地(模糊匹配) + /// + public string? Origin { get => _origin; set { _origin = value; RaisePropertyChanged(); } } + + private string? _batch; + /// + /// 批号(模糊匹配) + /// + public string? Batch { get => _batch; set { _batch = value; RaisePropertyChanged(); } } + + private string? _rawCode; + /// + /// 原料代码(模糊匹配) + /// + public string? RawCode { get => _rawCode; set { _rawCode = value; RaisePropertyChanged(); } } + + private string? _rawName; + /// + /// 原料名称(模糊匹配) + /// + public string? RawName { get => _rawName; set { _rawName = value; RaisePropertyChanged(); } } + + private DateTime? _startDate; + /// + /// 入库时间起(基于 InTime) + /// + public DateTime? StartDate { get => _startDate; set { _startDate = value; RaisePropertyChanged(); } } + + private DateTime? _endDate; + /// + /// 入库时间止(基于 InTime,包含当天) + /// + public DateTime? EndDate { get => _endDate; set { _endDate = value; RaisePropertyChanged(); } } + #endregion + + #region 列表与分页 + /// + /// 列表数据 + /// + public ObservableCollection Items { get; } + + private bool _isBusy; + /// + /// 是否忙碌 + /// + public bool IsBusy { get => _isBusy; set { _isBusy = value; RaisePropertyChanged(); } } + + private int _totalCount; + /// + /// 总记录数 + /// + public int TotalCount { get => _totalCount; set { _totalCount = value; RaisePropertyChanged(); } } + + private int _pageIndex = 1; + /// + /// 当前页码 + /// + public int PageIndex { get => _pageIndex; set { _pageIndex = value < 1 ? 1 : value; RaisePropertyChanged(); } } + + private int _pageSize = 20; + /// + /// 页大小 + /// + public int PageSize + { + get => _pageSize; + set + { + var v = value <= 0 ? 20 : value; + if (_pageSize != v) + { + _pageSize = v; + RaisePropertyChanged(); + PageIndex = 1; + if (!IsBusy) _ = SearchAsync(); + } + } + } + + private int _totalPages; + /// + /// 总页数 + /// + public int TotalPages { get => _totalPages; set { _totalPages = value; RaisePropertyChanged(); } } + #endregion + + #region 命令 + /// + /// 查询 + /// + public DelegateCommand SearchCommand { get; } + + /// + /// 清空 + /// + public DelegateCommand ClearCommand { get; } + + /// + /// 首页 + /// + public DelegateCommand FirstPageCommand { get; } + + /// + /// 上一页 + /// + public DelegateCommand PrevPageCommand { get; } + + /// + /// 下一页 + /// + public DelegateCommand NextPageCommand { get; } + + /// + /// 末页 + /// + public DelegateCommand LastPageCommand { get; } + #endregion + + /// + /// 清空筛选条件 + /// + private void ClearFilters() + { + Origin = Batch = RawCode = RawName = string.Empty; + StartDate = null; + EndDate = null; + } + + /// + /// 执行查询 + /// + private async Task SearchAsync() + { + if (IsBusy) return; + try + { + IsBusy = true; + _log.Info("FactoryInOutbound 查询开始"); + + var data = await Task.Run(() => + { + var q = _fsql.Select(); + + if (!string.IsNullOrWhiteSpace(Origin)) + q = q.Where(a => a.Origin != null && a.Origin.Contains(Origin)); + if (!string.IsNullOrWhiteSpace(Batch)) + q = q.Where(a => a.Batch != null && a.Batch.Contains(Batch)); + if (!string.IsNullOrWhiteSpace(RawCode)) + q = q.Where(a => a.RawCode != null && a.RawCode.Contains(RawCode)); + if (!string.IsNullOrWhiteSpace(RawName)) + q = q.Where(a => a.RawName != null && a.RawName.Contains(RawName)); + + DateTime? start = StartDate; + DateTime? end = EndDate; + if (start.HasValue) + { + var s = start.Value.Date; + q = q.Where("TRY_CONVERT(datetime, InTime) >= @start", new { start = s }); + } + if (end.HasValue) + { + var e = end.Value.Date.AddDays(1).AddTicks(-1); + q = q.Where("TRY_CONVERT(datetime, InTime) <= @end", new { end = e }); + } + + q = q.OrderByDescending(a => a.Id); + + var page = PageIndex < 1 ? 1 : PageIndex; + var size = PageSize <= 0 ? 20 : PageSize; + + var list = q.Count(out var total) + .Page(page, size) + .ToList(); + + var pages = total <= 0 || size <= 0 ? 0 : (int)Math.Ceiling(total * 1.0 / size); + if (pages > 0 && page > pages) + { + page = pages; + list = q.Page(page, size).ToList(); + } + + return (items: list, total: (int)total, normalizedPage: page, totalPages: pages); + }); + + Application.Current.Dispatcher.Invoke(() => + { + Items.Clear(); + foreach (var it in data.items) Items.Add(it); + TotalCount = data.total; + TotalPages = data.totalPages; + PageIndex = data.normalizedPage == 0 ? 1 : data.normalizedPage; + }); + + _log.Info($"FactoryInOutbound 查询完成,记录数: {TotalCount}"); + } + catch (Exception ex) + { + _log.Error($"FactoryInOutbound 查询失败: {ex}"); + MessageBox.Show($"查询失败: {ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error); + } + finally + { + IsBusy = false; + } + } + + /// + /// 导航进入时自动查询 + /// + /// 导航上下文 + public override async void OnNavigatedTo(Prism.Regions.NavigationContext navigationContext) + { + await SearchAsync(); + } + } +} diff --git a/FATrace.WPLApp/ViewModels/FactoryInboundViewModel.cs b/FATrace.WPLApp/ViewModels/FactoryInboundViewModel.cs index 1c53c1d..534f4a8 100644 --- a/FATrace.WPLApp/ViewModels/FactoryInboundViewModel.cs +++ b/FATrace.WPLApp/ViewModels/FactoryInboundViewModel.cs @@ -11,7 +11,7 @@ using System.Windows; namespace FATrace.WPLApp.ViewModels { /// - /// 工厂-入库 数据查询 VM + /// 工厂-成品入库 数据查询 VM /// 仅展示从 Excel 导入的 FactoryInbound 数据,支持简单条件与分页。 /// public class FactoryInboundViewModel : NavigationViewModel diff --git a/FATrace.WPLApp/ViewModels/FactoryInventoryTransactionViewModel.cs b/FATrace.WPLApp/ViewModels/FactoryInventoryTransactionViewModel.cs index 3a7f14b..d45f77a 100644 --- a/FATrace.WPLApp/ViewModels/FactoryInventoryTransactionViewModel.cs +++ b/FATrace.WPLApp/ViewModels/FactoryInventoryTransactionViewModel.cs @@ -11,8 +11,8 @@ using System.Windows; namespace FATrace.WPLApp.ViewModels { /// - /// 工厂-出入库 数据查询 VM - /// 仅展示从 Excel 导入的 FactoryInventoryTransaction 数据,支持简单条件与分页。 + /// 工厂-原料出入库 数据查询 VM + /// 仅展示从 Excel 导入的 FactoryRawInOutbound 数据,支持简单条件与分页。 /// public class FactoryInventoryTransactionViewModel : NavigationViewModel { @@ -24,7 +24,7 @@ namespace FATrace.WPLApp.ViewModels _fsql = fsql; _log = log; - Items = new ObservableCollection(); + Items = new ObservableCollection(); SearchCommand = new DelegateCommand(async () => await SearchAsync(), () => !IsBusy) .ObservesProperty(() => IsBusy); @@ -79,7 +79,7 @@ namespace FATrace.WPLApp.ViewModels #endregion #region 列表与分页 - public ObservableCollection Items { get; } + public ObservableCollection Items { get; } private bool _isBusy; public bool IsBusy { get => _isBusy; set { _isBusy = value; RaisePropertyChanged(); } } @@ -133,11 +133,11 @@ namespace FATrace.WPLApp.ViewModels try { IsBusy = true; - _log.Info("FactoryInventoryTransaction 查询开始"); + _log.Info("FactoryRawInOutbound 查询开始"); var data = await Task.Run(() => { - var q = _fsql.Select(); + var q = _fsql.Select(); if (!string.IsNullOrWhiteSpace(Origin)) q = q.Where(a => a.Origin != null && a.Origin.Contains(Origin)); @@ -187,11 +187,11 @@ namespace FATrace.WPLApp.ViewModels PageIndex = data.normalizedPage == 0 ? 1 : data.normalizedPage; }); - _log.Info($"FactoryInventoryTransaction 查询完成,记录数: {TotalCount}"); + _log.Info($"FactoryRawInOutbound 查询完成,记录数: {TotalCount}"); } catch (Exception ex) { - _log.Error($"FactoryInventoryTransaction 查询失败: {ex}"); + _log.Error($"FactoryRawInOutbound 查询失败: {ex}"); MessageBox.Show($"查询失败: {ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } finally diff --git a/FATrace.WPLApp/ViewModels/FactoryMaterialWithdrawalViewModel.cs b/FATrace.WPLApp/ViewModels/FactoryMaterialWithdrawalViewModel.cs index 3fc6843..05f993a 100644 --- a/FATrace.WPLApp/ViewModels/FactoryMaterialWithdrawalViewModel.cs +++ b/FATrace.WPLApp/ViewModels/FactoryMaterialWithdrawalViewModel.cs @@ -11,8 +11,8 @@ using System.Windows; namespace FATrace.WPLApp.ViewModels { /// - /// 工厂-领料 数据查询 VM - /// 仅展示从 Excel 导入的 FactoryMaterialWithdrawal 数据,支持简单条件与分页。 + /// 工厂-原料出库 数据查询 VM + /// 仅展示从 Excel 导入的 FactoryRawOutbound 数据,支持简单条件与分页。 /// public class FactoryMaterialWithdrawalViewModel : NavigationViewModel { @@ -24,7 +24,7 @@ namespace FATrace.WPLApp.ViewModels _fsql = fsql; _log = log; - Items = new ObservableCollection(); + Items = new ObservableCollection(); SearchCommand = new DelegateCommand(async () => await SearchAsync(), () => !IsBusy) .ObservesProperty(() => IsBusy); @@ -79,7 +79,7 @@ namespace FATrace.WPLApp.ViewModels #endregion #region 列表与分页 - public ObservableCollection Items { get; } + public ObservableCollection Items { get; } private bool _isBusy; public bool IsBusy { get => _isBusy; set { _isBusy = value; RaisePropertyChanged(); } } @@ -133,11 +133,11 @@ namespace FATrace.WPLApp.ViewModels try { IsBusy = true; - _log.Info("FactoryMaterialWithdrawal 查询开始"); + _log.Info("FactoryRawOutbound 查询开始"); var data = await Task.Run(() => { - var q = _fsql.Select(); + var q = _fsql.Select(); if (!string.IsNullOrWhiteSpace(Origin)) q = q.Where(a => a.Origin != null && a.Origin.Contains(Origin)); @@ -187,11 +187,11 @@ namespace FATrace.WPLApp.ViewModels PageIndex = data.normalizedPage == 0 ? 1 : data.normalizedPage; }); - _log.Info($"FactoryMaterialWithdrawal 查询完成,记录数: {TotalCount}"); + _log.Info($"FactoryRawOutbound 查询完成,记录数: {TotalCount}"); } catch (Exception ex) { - _log.Error($"FactoryMaterialWithdrawal 查询失败: {ex}"); + _log.Error($"FactoryRawOutbound 查询失败: {ex}"); MessageBox.Show($"查询失败: {ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } finally diff --git a/FATrace.WPLApp/ViewModels/FactoryProductionRecordViewModel.cs b/FATrace.WPLApp/ViewModels/FactoryProductionRecordViewModel.cs index dc71775..df6706e 100644 --- a/FATrace.WPLApp/ViewModels/FactoryProductionRecordViewModel.cs +++ b/FATrace.WPLApp/ViewModels/FactoryProductionRecordViewModel.cs @@ -11,7 +11,7 @@ using System.Windows; namespace FATrace.WPLApp.ViewModels { /// - /// 工厂-原料生产信息 查询 VM(展示 FactoryProductionRecord) + /// 工厂-包袋生产 查询 VM(展示 FactoryProductionRecord) /// public class FactoryProductionRecordViewModel : NavigationViewModel { @@ -141,7 +141,7 @@ namespace FATrace.WPLApp.ViewModels try { IsBusy = true; - _log.Info("FactoryProductionRecord 查询开始"); + _log.Info("FactoryProductionRecord(工厂-包袋生产) 查询开始"); var data = await Task.Run(() => { @@ -195,11 +195,11 @@ namespace FATrace.WPLApp.ViewModels PageIndex = data.normalizedPage == 0 ? 1 : data.normalizedPage; }); - _log.Info($"FactoryProductionRecord 查询完成,记录数: {TotalCount}"); + _log.Info($"FactoryProductionRecord(工厂-包袋生产) 查询完成,记录数: {TotalCount}"); } catch (Exception ex) { - _log.Error($"FactoryProductionRecord 查询失败: {ex}"); + _log.Error($"FactoryProductionRecord(工厂-包袋生产) 查询失败: {ex}"); MessageBox.Show($"查询失败: {ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error); } finally diff --git a/FATrace.WPLApp/ViewModels/FactoryRawInboundViewModel.cs b/FATrace.WPLApp/ViewModels/FactoryRawInboundViewModel.cs new file mode 100644 index 0000000..1830efb --- /dev/null +++ b/FATrace.WPLApp/ViewModels/FactoryRawInboundViewModel.cs @@ -0,0 +1,264 @@ +using FATrace.Model; +using FATrace.WPLApp.Core; +using FATrace.WPLApp.Services; +using FreeSql; +using Prism.Commands; +using System; +using System.Collections.ObjectModel; +using System.Threading.Tasks; +using System.Windows; + +namespace FATrace.WPLApp.ViewModels +{ + /// + /// 工厂-原料入库 数据查询 VM(展示 FactoryRawInbound) + /// + public class FactoryRawInboundViewModel : NavigationViewModel + { + private readonly IFreeSql _fsql; + private readonly ILogService _log; + + /// + /// 构造函数 + /// + /// FreeSql 实例 + /// 日志服务 + public FactoryRawInboundViewModel(IFreeSql fsql, ILogService log) + { + _fsql = fsql; + _log = log; + + Items = new ObservableCollection(); + + SearchCommand = new DelegateCommand(async () => await SearchAsync(), () => !IsBusy) + .ObservesProperty(() => IsBusy); + ClearCommand = new DelegateCommand(ClearFilters, () => !IsBusy) + .ObservesProperty(() => IsBusy); + + FirstPageCommand = new DelegateCommand(async () => { if (PageIndex == 1) return; PageIndex = 1; await SearchAsync(); }, () => !IsBusy && PageIndex > 1) + .ObservesProperty(() => IsBusy) + .ObservesProperty(() => PageIndex); + PrevPageCommand = new DelegateCommand(async () => { if (PageIndex <= 1) return; PageIndex -= 1; await SearchAsync(); }, () => !IsBusy && PageIndex > 1) + .ObservesProperty(() => IsBusy) + .ObservesProperty(() => PageIndex); + NextPageCommand = new DelegateCommand(async () => { if (PageIndex >= TotalPages) return; PageIndex += 1; await SearchAsync(); }, () => !IsBusy && PageIndex < TotalPages) + .ObservesProperty(() => IsBusy) + .ObservesProperty(() => PageIndex) + .ObservesProperty(() => TotalPages); + LastPageCommand = new DelegateCommand(async () => { if (TotalPages <= 0 || PageIndex == TotalPages) return; PageIndex = TotalPages; await SearchAsync(); }, () => !IsBusy && PageIndex < TotalPages) + .ObservesProperty(() => IsBusy) + .ObservesProperty(() => PageIndex) + .ObservesProperty(() => TotalPages); + } + + #region 查询条件 + private string? _origin; + /// + /// 产地(模糊匹配) + /// + public string? Origin { get => _origin; set { _origin = value; RaisePropertyChanged(); } } + + private string? _rawCode; + /// + /// 原料代码(模糊匹配) + /// + public string? RawCode { get => _rawCode; set { _rawCode = value; RaisePropertyChanged(); } } + + private string? _rawName; + /// + /// 原料名称(模糊匹配) + /// + public string? RawName { get => _rawName; set { _rawName = value; RaisePropertyChanged(); } } + + private DateTime? _startDate; + /// + /// 登录日期起(基于 LoginDateTime) + /// + public DateTime? StartDate { get => _startDate; set { _startDate = value; RaisePropertyChanged(); } } + + private DateTime? _endDate; + /// + /// 登录日期止(基于 LoginDateTime,包含当天) + /// + public DateTime? EndDate { get => _endDate; set { _endDate = value; RaisePropertyChanged(); } } + #endregion + + #region 列表与分页 + /// + /// 列表数据 + /// + public ObservableCollection Items { get; } + + private bool _isBusy; + /// + /// 是否忙碌 + /// + public bool IsBusy { get => _isBusy; set { _isBusy = value; RaisePropertyChanged(); } } + + private int _totalCount; + /// + /// 总记录数 + /// + public int TotalCount { get => _totalCount; set { _totalCount = value; RaisePropertyChanged(); } } + + private int _pageIndex = 1; + /// + /// 当前页码 + /// + public int PageIndex { get => _pageIndex; set { _pageIndex = value < 1 ? 1 : value; RaisePropertyChanged(); } } + + private int _pageSize = 20; + /// + /// 页大小 + /// + public int PageSize + { + get => _pageSize; + set + { + var v = value <= 0 ? 20 : value; + if (_pageSize != v) + { + _pageSize = v; + RaisePropertyChanged(); + PageIndex = 1; + if (!IsBusy) _ = SearchAsync(); + } + } + } + + private int _totalPages; + /// + /// 总页数 + /// + public int TotalPages { get => _totalPages; set { _totalPages = value; RaisePropertyChanged(); } } + #endregion + + #region 命令 + /// + /// 查询命令 + /// + public DelegateCommand SearchCommand { get; } + + /// + /// 清空命令 + /// + public DelegateCommand ClearCommand { get; } + + /// + /// 首页 + /// + public DelegateCommand FirstPageCommand { get; } + + /// + /// 上一页 + /// + public DelegateCommand PrevPageCommand { get; } + + /// + /// 下一页 + /// + public DelegateCommand NextPageCommand { get; } + + /// + /// 末页 + /// + public DelegateCommand LastPageCommand { get; } + #endregion + + /// + /// 清空筛选条件 + /// + private void ClearFilters() + { + Origin = RawCode = RawName = string.Empty; + StartDate = null; + EndDate = null; + } + + /// + /// 执行查询 + /// + private async Task SearchAsync() + { + if (IsBusy) return; + try + { + IsBusy = true; + _log.Info("FactoryRawInbound 查询开始"); + + var data = await Task.Run(() => + { + var q = _fsql.Select(); + + if (!string.IsNullOrWhiteSpace(Origin)) + q = q.Where(a => a.Origin != null && a.Origin.Contains(Origin)); + if (!string.IsNullOrWhiteSpace(RawCode)) + q = q.Where(a => a.RawCode != null && a.RawCode.Contains(RawCode)); + if (!string.IsNullOrWhiteSpace(RawName)) + q = q.Where(a => a.RawName != null && a.RawName.Contains(RawName)); + + DateTime? start = StartDate; + DateTime? end = EndDate; + if (start.HasValue) + { + var s = start.Value.Date; + q = q.Where("TRY_CONVERT(datetime, LoginDateTime) >= @start", new { start = s }); + } + if (end.HasValue) + { + var e = end.Value.Date.AddDays(1).AddTicks(-1); + q = q.Where("TRY_CONVERT(datetime, LoginDateTime) <= @end", new { end = e }); + } + + q = q.OrderByDescending(a => a.Id); + + var page = PageIndex < 1 ? 1 : PageIndex; + var size = PageSize <= 0 ? 20 : PageSize; + + var list = q.Count(out var total) + .Page(page, size) + .ToList(); + + var pages = total <= 0 || size <= 0 ? 0 : (int)Math.Ceiling(total * 1.0 / size); + if (pages > 0 && page > pages) + { + page = pages; + list = q.Page(page, size).ToList(); + } + + return (items: list, total: (int)total, normalizedPage: page, totalPages: pages); + }); + + Application.Current.Dispatcher.Invoke(() => + { + Items.Clear(); + foreach (var it in data.items) Items.Add(it); + TotalCount = data.total; + TotalPages = data.totalPages; + PageIndex = data.normalizedPage == 0 ? 1 : data.normalizedPage; + }); + + _log.Info($"FactoryRawInbound 查询完成,记录数: {TotalCount}"); + } + catch (Exception ex) + { + _log.Error($"FactoryRawInbound 查询失败: {ex}"); + MessageBox.Show($"查询失败: {ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error); + } + finally + { + IsBusy = false; + } + } + + /// + /// 导航进入时自动查询 + /// + /// 导航上下文 + public override async void OnNavigatedTo(Prism.Regions.NavigationContext navigationContext) + { + await SearchAsync(); + } + } +} diff --git a/FATrace.WPLApp/ViewModels/MainViewModel.cs b/FATrace.WPLApp/ViewModels/MainViewModel.cs index 9631190..25d4c4a 100644 --- a/FATrace.WPLApp/ViewModels/MainViewModel.cs +++ b/FATrace.WPLApp/ViewModels/MainViewModel.cs @@ -193,21 +193,27 @@ namespace FATrace.WPLApp.ViewModels this.regionManager.Regions["ContentRegion"].RequestNavigate("FileImportLogView"); break; // 工厂/OEM Excel 导入数据查询 - case "工厂-入库": - this.regionManager.Regions["ContentRegion"].RequestNavigate("FactoryInboundView"); + case "工厂-原料入库": + this.regionManager.Regions["ContentRegion"].RequestNavigate("FactoryRawInboundView"); break; - case "工厂-领料": + case "工厂-原料出库": this.regionManager.Regions["ContentRegion"].RequestNavigate("FactoryMaterialWithdrawalView"); break; - case "工厂-出入库": + case "工厂-原料出入库": this.regionManager.Regions["ContentRegion"].RequestNavigate("FactoryInventoryTransactionView"); break; - case "工厂-原料生产信息": + case "工厂-包袋生产": this.regionManager.Regions["ContentRegion"].RequestNavigate("FactoryProductionRecordView"); break; + case "工厂-成品入库": + this.regionManager.Regions["ContentRegion"].RequestNavigate("FactoryInboundView"); + break; case "工厂-成品出库": this.regionManager.Regions["ContentRegion"].RequestNavigate("FactoryOutboundView"); break; + case "工厂-成品入库与出库": + this.regionManager.Regions["ContentRegion"].RequestNavigate("FactoryInOutboundView"); + break; case "OEM-入库": this.regionManager.Regions["ContentRegion"].RequestNavigate("OEMInboundView"); break; @@ -217,7 +223,7 @@ namespace FATrace.WPLApp.ViewModels case "OEM-出入库": this.regionManager.Regions["ContentRegion"].RequestNavigate("OEMInventoryTransactionView"); break; - case "OEM-原料使用信息": + case "OEM-原料使用": this.regionManager.Regions["ContentRegion"].RequestNavigate("OEMRawUsageInfoView"); break; case "历史报警": diff --git a/FATrace.WPLApp/ViewModels/OEMInventoryTransactionViewModel.cs b/FATrace.WPLApp/ViewModels/OEMInventoryTransactionViewModel.cs index c57caf9..4176e07 100644 --- a/FATrace.WPLApp/ViewModels/OEMInventoryTransactionViewModel.cs +++ b/FATrace.WPLApp/ViewModels/OEMInventoryTransactionViewModel.cs @@ -23,7 +23,7 @@ namespace FATrace.WPLApp.ViewModels _fsql = fsql; _log = log; - Items = new ObservableCollection(); + Items = new ObservableCollection(); SearchCommand = new DelegateCommand(async () => await SearchAsync(), () => !IsBusy) .ObservesProperty(() => IsBusy); @@ -67,7 +67,7 @@ namespace FATrace.WPLApp.ViewModels #endregion #region 列表与分页 - public ObservableCollection Items { get; } + public ObservableCollection Items { get; } private bool _isBusy; public bool IsBusy { get => _isBusy; set { _isBusy = value; RaisePropertyChanged(); } } @@ -125,7 +125,7 @@ namespace FATrace.WPLApp.ViewModels var data = await Task.Run(() => { - var q = _fsql.Select(); + var q = _fsql.Select(); if (!string.IsNullOrWhiteSpace(Origin)) q = q.Where(a => a.Origin != null && a.Origin.Contains(Origin)); diff --git a/FATrace.WPLApp/ViewModels/OEMRawUsageInfoViewModel.cs b/FATrace.WPLApp/ViewModels/OEMRawUsageInfoViewModel.cs index 0a88469..c43fb5a 100644 --- a/FATrace.WPLApp/ViewModels/OEMRawUsageInfoViewModel.cs +++ b/FATrace.WPLApp/ViewModels/OEMRawUsageInfoViewModel.cs @@ -11,7 +11,7 @@ using System.Windows; namespace FATrace.WPLApp.ViewModels { /// - /// OEM-原料使用信息 查询 VM(展示 OEMRawUsageInfo) + /// OEM-原料使用 查询 VM(展示 OEMRawUsageInfo) /// public class OEMRawUsageInfoViewModel : NavigationViewModel { diff --git a/FATrace.WPLApp/Views/FactoryInOutboundView.xaml b/FATrace.WPLApp/Views/FactoryInOutboundView.xaml new file mode 100644 index 0000000..8f4579e --- /dev/null +++ b/FATrace.WPLApp/Views/FactoryInOutboundView.xaml @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +