From 2f9aff990f1fae60db1261b23160b112c41af3aa Mon Sep 17 00:00:00 2001 From: j4587698 Date: Sun, 5 Feb 2017 15:30:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 63 + .gitignore | 189 +++ AutoPackage.sln | 22 + AutoPekage/AutoPackage.csproj | 152 ++ AutoPekage/FodyWeavers.xml | 5 + .../Folder_Zip_128px_1163283_easyicon.net.ico | Bin 0 -> 67646 bytes AutoPekage/Form1.Designer.cs | 169 +++ AutoPekage/Form1.cs | 270 ++++ AutoPekage/Form1.resx | 1259 +++++++++++++++++ AutoPekage/GetFileIcon.cs | 69 + AutoPekage/LiteDbHelper.cs | 180 +++ AutoPekage/MailToDao.cs | 12 + AutoPekage/Program.cs | 21 + AutoPekage/Properties/AssemblyInfo.cs | 36 + AutoPekage/Properties/Resources.Designer.cs | 63 + AutoPekage/Properties/Resources.resx | 117 ++ AutoPekage/Properties/Settings.Designer.cs | 26 + AutoPekage/Properties/Settings.settings | 7 + AutoPekage/SenderDao.cs | 22 + AutoPekage/SettingsDao.cs | 64 + AutoPekage/StmpServerDao.cs | 14 + AutoPekage/ZipControl.cs | 202 +++ AutoPekage/app.config | 3 + AutoPekage/frmAddSender.Designer.cs | 259 ++++ AutoPekage/frmAddSender.cs | 103 ++ AutoPekage/frmAddSender.resx | 120 ++ AutoPekage/frmPackage.Designer.cs | 288 ++++ AutoPekage/frmPackage.cs | 182 +++ AutoPekage/frmPackage.resx | 123 ++ AutoPekage/frmSettings.Designer.cs | 330 +++++ AutoPekage/frmSettings.cs | 122 ++ AutoPekage/frmSettings.resx | 120 ++ AutoPekage/frmStmpServer.Designer.cs | 122 ++ AutoPekage/frmStmpServer.cs | 35 + AutoPekage/frmStmpServer.resx | 120 ++ AutoPekage/packages.config | 7 + 36 files changed, 4896 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 AutoPackage.sln create mode 100644 AutoPekage/AutoPackage.csproj create mode 100644 AutoPekage/FodyWeavers.xml create mode 100644 AutoPekage/Folder_Zip_128px_1163283_easyicon.net.ico create mode 100644 AutoPekage/Form1.Designer.cs create mode 100644 AutoPekage/Form1.cs create mode 100644 AutoPekage/Form1.resx create mode 100644 AutoPekage/GetFileIcon.cs create mode 100644 AutoPekage/LiteDbHelper.cs create mode 100644 AutoPekage/MailToDao.cs create mode 100644 AutoPekage/Program.cs create mode 100644 AutoPekage/Properties/AssemblyInfo.cs create mode 100644 AutoPekage/Properties/Resources.Designer.cs create mode 100644 AutoPekage/Properties/Resources.resx create mode 100644 AutoPekage/Properties/Settings.Designer.cs create mode 100644 AutoPekage/Properties/Settings.settings create mode 100644 AutoPekage/SenderDao.cs create mode 100644 AutoPekage/SettingsDao.cs create mode 100644 AutoPekage/StmpServerDao.cs create mode 100644 AutoPekage/ZipControl.cs create mode 100644 AutoPekage/app.config create mode 100644 AutoPekage/frmAddSender.Designer.cs create mode 100644 AutoPekage/frmAddSender.cs create mode 100644 AutoPekage/frmAddSender.resx create mode 100644 AutoPekage/frmPackage.Designer.cs create mode 100644 AutoPekage/frmPackage.cs create mode 100644 AutoPekage/frmPackage.resx create mode 100644 AutoPekage/frmSettings.Designer.cs create mode 100644 AutoPekage/frmSettings.cs create mode 100644 AutoPekage/frmSettings.resx create mode 100644 AutoPekage/frmStmpServer.Designer.cs create mode 100644 AutoPekage/frmStmpServer.cs create mode 100644 AutoPekage/frmStmpServer.resx create mode 100644 AutoPekage/packages.config diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7964536 --- /dev/null +++ b/.gitignore @@ -0,0 +1,189 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +x64/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ + +# Roslyn cache directories +*.ide/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +#NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding addin-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +## TODO: Comment the next line if you want to checkin your +## web deploy settings but do note that will include unencrypted +## passwords +#*.pubxml + +# NuGet Packages Directory +packages/* +## TODO: If the tool you use requires repositories.config +## uncomment the next line +#!packages/repositories.config + +# Enable "build/" folder in the NuGet Packages folder since +# NuGet packages use it for MSBuild targets. +# This line needs to be after the ignore of the build folder +# (and the packages folder if the line above has been uncommented) +!packages/build/ + +# Windows Azure Build Output +csx/ +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# LightSwitch generated files +GeneratedArtifacts/ +_Pvt_Extensions/ +ModelManifest.xml \ No newline at end of file diff --git a/AutoPackage.sln b/AutoPackage.sln new file mode 100644 index 0000000..23505c0 --- /dev/null +++ b/AutoPackage.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.31101.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AutoPackage", "AutoPekage\AutoPackage.csproj", "{2BFA2AB8-A979-4C70-B1E7-5FCA3DEFFD46}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2BFA2AB8-A979-4C70-B1E7-5FCA3DEFFD46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2BFA2AB8-A979-4C70-B1E7-5FCA3DEFFD46}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2BFA2AB8-A979-4C70-B1E7-5FCA3DEFFD46}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2BFA2AB8-A979-4C70-B1E7-5FCA3DEFFD46}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/AutoPekage/AutoPackage.csproj b/AutoPekage/AutoPackage.csproj new file mode 100644 index 0000000..46d8ca4 --- /dev/null +++ b/AutoPekage/AutoPackage.csproj @@ -0,0 +1,152 @@ + + + + + Debug + AnyCPU + {2BFA2AB8-A979-4C70-B1E7-5FCA3DEFFD46} + WinExe + Properties + AutoPackage + AutoPackage + v4.0 + 512 + + 13a4b414 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + Folder_Zip_128px_1163283_easyicon.net.ico + + + + ..\packages\LiteDB.2.0.4\lib\net35\LiteDB.dll + + + ..\packages\SharpCompress.0.14.1\lib\net40\SharpCompress.dll + True + + + + + + + + + + + Form + + + frmAddSender.cs + + + Form + + + Form1.cs + + + Form + + + frmPackage.cs + + + Form + + + frmSettings.cs + + + Form + + + frmStmpServer.cs + + + + + + + + + + + + frmAddSender.cs + + + Form1.cs + + + frmPackage.cs + + + frmSettings.cs + + + frmStmpServer.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + 这台计算机上缺少此项目引用的 NuGet 程序包。启用“NuGet 程序包还原”可下载这些程序包。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。 + + + + + \ No newline at end of file diff --git a/AutoPekage/FodyWeavers.xml b/AutoPekage/FodyWeavers.xml new file mode 100644 index 0000000..2e6d4a7 --- /dev/null +++ b/AutoPekage/FodyWeavers.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/AutoPekage/Folder_Zip_128px_1163283_easyicon.net.ico b/AutoPekage/Folder_Zip_128px_1163283_easyicon.net.ico new file mode 100644 index 0000000000000000000000000000000000000000..0ab83af79dc80b3e0b7887aa2c39903ce2e6b28e GIT binary patch literal 67646 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 + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); + this.lvFileList = new System.Windows.Forms.ListView(); + this.cmsFileContextMenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.打开文件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.移除文件ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.打开所在目录ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.ilFileList = new System.Windows.Forms.ImageList(this.components); + this.btnStart = new System.Windows.Forms.Button(); + this.btnExit = new System.Windows.Forms.Button(); + this.btnSettings = new System.Windows.Forms.Button(); + this.cmsFileContextMenu.SuspendLayout(); + this.SuspendLayout(); + // + // lvFileList + // + this.lvFileList.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lvFileList.ContextMenuStrip = this.cmsFileContextMenu; + this.lvFileList.LargeImageList = this.ilFileList; + this.lvFileList.Location = new System.Drawing.Point(0, 1); + this.lvFileList.Name = "lvFileList"; + this.lvFileList.Size = new System.Drawing.Size(452, 328); + this.lvFileList.TabIndex = 0; + this.lvFileList.UseCompatibleStateImageBehavior = false; + this.lvFileList.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.lvFileList_ItemCheck); + this.lvFileList.DoubleClick += new System.EventHandler(this.lvFileList_DoubleClick); + // + // cmsFileContextMenu + // + this.cmsFileContextMenu.ImageScalingSize = new System.Drawing.Size(20, 20); + this.cmsFileContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.打开文件ToolStripMenuItem, + this.移除文件ToolStripMenuItem, + this.打开所在目录ToolStripMenuItem}); + this.cmsFileContextMenu.Name = "cmsFileContextMenu"; + this.cmsFileContextMenu.Size = new System.Drawing.Size(149, 70); + this.cmsFileContextMenu.Opening += new System.ComponentModel.CancelEventHandler(this.cmsFileContextMenu_Opening); + // + // 打开文件ToolStripMenuItem + // + this.打开文件ToolStripMenuItem.Name = "打开文件ToolStripMenuItem"; + this.打开文件ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.打开文件ToolStripMenuItem.Text = "打开文件"; + this.打开文件ToolStripMenuItem.Click += new System.EventHandler(this.打开文件ToolStripMenuItem_Click); + // + // 移除文件ToolStripMenuItem + // + this.移除文件ToolStripMenuItem.Name = "移除文件ToolStripMenuItem"; + this.移除文件ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.移除文件ToolStripMenuItem.Text = "移除文件"; + this.移除文件ToolStripMenuItem.Click += new System.EventHandler(this.移除文件ToolStripMenuItem_Click); + // + // 打开所在目录ToolStripMenuItem + // + this.打开所在目录ToolStripMenuItem.Name = "打开所在目录ToolStripMenuItem"; + this.打开所在目录ToolStripMenuItem.Size = new System.Drawing.Size(148, 22); + this.打开所在目录ToolStripMenuItem.Text = "打开所在目录"; + this.打开所在目录ToolStripMenuItem.Click += new System.EventHandler(this.打开所在目录ToolStripMenuItem_Click); + // + // ilFileList + // + this.ilFileList.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit; + this.ilFileList.ImageSize = new System.Drawing.Size(48, 48); + this.ilFileList.TransparentColor = System.Drawing.Color.Transparent; + // + // btnStart + // + this.btnStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnStart.Location = new System.Drawing.Point(41, 347); + this.btnStart.Name = "btnStart"; + this.btnStart.Size = new System.Drawing.Size(75, 23); + this.btnStart.TabIndex = 2; + this.btnStart.Text = "开始打包"; + this.btnStart.UseVisualStyleBackColor = true; + this.btnStart.Click += new System.EventHandler(this.btnStart_Click); + // + // btnExit + // + this.btnExit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnExit.Location = new System.Drawing.Point(321, 347); + this.btnExit.Name = "btnExit"; + this.btnExit.Size = new System.Drawing.Size(75, 23); + this.btnExit.TabIndex = 3; + this.btnExit.Text = "退出"; + this.btnExit.UseVisualStyleBackColor = true; + this.btnExit.Click += new System.EventHandler(this.btnExit_Click); + // + // btnSettings + // + this.btnSettings.Anchor = System.Windows.Forms.AnchorStyles.Bottom; + this.btnSettings.Location = new System.Drawing.Point(183, 347); + this.btnSettings.Name = "btnSettings"; + this.btnSettings.Size = new System.Drawing.Size(75, 23); + this.btnSettings.TabIndex = 4; + this.btnSettings.Text = "设置"; + this.btnSettings.UseVisualStyleBackColor = true; + this.btnSettings.Click += new System.EventHandler(this.btnSettings_Click); + // + // Form1 + // + this.AllowDrop = true; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(452, 382); + this.Controls.Add(this.btnSettings); + this.Controls.Add(this.btnExit); + this.Controls.Add(this.btnStart); + this.Controls.Add(this.lvFileList); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.KeyPreview = true; + this.Name = "Form1"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "文件修改打包"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing); + this.Load += new System.EventHandler(this.Form1_Load); + this.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop); + this.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter); + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown); + this.cmsFileContextMenu.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ListView lvFileList; + private System.Windows.Forms.ImageList ilFileList; + private System.Windows.Forms.ContextMenuStrip cmsFileContextMenu; + private System.Windows.Forms.ToolStripMenuItem 打开文件ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 移除文件ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 打开所在目录ToolStripMenuItem; + private System.Windows.Forms.Button btnStart; + private System.Windows.Forms.Button btnExit; + private System.Windows.Forms.Button btnSettings; + } +} + diff --git a/AutoPekage/Form1.cs b/AutoPekage/Form1.cs new file mode 100644 index 0000000..20ccbde --- /dev/null +++ b/AutoPekage/Form1.cs @@ -0,0 +1,270 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Text; +using System.Windows.Forms; +using System.Linq; + +namespace AutoPekage +{ + public partial class Form1 : Form + { + + public static string tempPath = Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), Path.Combine("AutoPackage", "tempfile")); + //Dictionary + public Form1() + { + InitializeComponent(); + } + + private void Form1_Load(object sender, EventArgs e) + { + var dao = LiteDbHelper.Settings; + if (Directory.Exists(tempPath) && + ((dao.AskAutoLoadFile && MessageBox.Show("发现临时目录存在文件,是否自动加载内容?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) || + (!dao.AskAutoLoadFile && dao.AutoLoadFile == 1))) + { + var files = Directory.GetFiles(tempPath); + foreach (var file in files) + { + AddNewFile(file); + } + } + } + + private void Form1_DragEnter(object sender, DragEventArgs e) + { + if (e.Data.GetDataPresent(DataFormats.FileDrop)) + { + e.Effect = DragDropEffects.Link; + } + else + { + e.Effect = DragDropEffects.None; + } + } + + private void Form1_DragDrop(object sender, DragEventArgs e) + { + var dropList = (System.Array)e.Data.GetData(DataFormats.FileDrop); + foreach (var item in dropList) + { + string filePath = item.ToString(); + AddDropFile(filePath); + } + } + + private void AddDropFile(string filePath) + { + FileInfo fi = new FileInfo(filePath); + if (fi.Attributes == FileAttributes.Directory) + { + var files = Directory.EnumerateFiles(filePath, "*", SearchOption.AllDirectories); + foreach (var file in files) + { + AddDropFile(file); + } + return; + } + + string extension = Path.GetExtension(filePath); + if (extension.ToLower() == ".zip" || extension.ToLower() == ".rar" || extension.ToLower() == ".7z" || extension.ToLower() == ".gzip" || extension.ToLower() == ".tar") + { + ZipControl.NewFileDecompress += AddNewFile; + //ZipControl.UnZip(filePath, ""); + ZipControl.FileWillDecompress += ZipControl_FileWillDecompress; + ZipControl.UnCompress(filePath, tempPath); + ZipControl.FileWillDecompress -= ZipControl_FileWillDecompress; + ZipControl.NewFileDecompress -= AddNewFile; + } + else + { + var itemlist = lvFileList.Items.Cast().Where(x => Path.GetFileName(x.Tag as string) == Path.GetFileName(filePath)); + if (itemlist.Count() > 0) + { + if (itemlist.First().Tag as string == filePath) + { + return; + } + else + { + if (MessageBox.Show(Path.GetFileName(filePath) + "已存在并且与目前列表中文件不同,是否替换?" + , "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) + { + AddNewFile(filePath); + } + } + } + else + { + AddNewFile(filePath); + } + + } + } + + private void AddNewFile(string filePath) + { + var itemlist = lvFileList.Items.Cast().Where(x => Path.GetFileName(x.Tag as string) == Path.GetFileName(filePath)); + if (itemlist.Count() > 0) + { + itemlist.First().Tag = filePath; + } + else + { + ilFileList.Images.Add(GetIcon.GetFileIcon(filePath)); + string filename = Path.GetFileName(filePath); + var item = new ListViewItem(filename); + item.ImageIndex = ilFileList.Images.Count - 1; + item.Tag = filePath; + lvFileList.Items.Add(item); + } + + } + + private void Form1_FormClosing(object sender, FormClosingEventArgs e) + { + var dao = LiteDbHelper.Settings; + if (Directory.Exists(tempPath) && + ((dao.AskAutoDeleteFile && MessageBox.Show("发现临时目录存在文件,是否删除?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)|| + (!dao.AskAutoDeleteFile && dao.AutoDeleteFile == 1))) + { + Directory.Delete(tempPath, true); + } + } + + private void cmsFileContextMenu_Opening(object sender, CancelEventArgs e) + { + bool showMenu = false; + + //要判断是否点击项,控件里至少要有一个项 + if (this.lvFileList.Items.Count > 0) + { + Point point = this.lvFileList.PointToClient(MousePosition); + ListViewHitTestInfo hitTest = this.lvFileList.HitTest(point); + + if ( hitTest.Item != null) + {//点击的不是列且不是空白区域 + showMenu = true; + } + } + + e.Cancel = !showMenu; + } + + private void 打开文件ToolStripMenuItem_Click(object sender, EventArgs e) + { + + foreach (ListViewItem item in lvFileList.SelectedItems) + { + Process.Start(item.Tag as string); + } + } + + private void 移除文件ToolStripMenuItem_Click(object sender, EventArgs e) + { + foreach (ListViewItem item in lvFileList.SelectedItems) + { + lvFileList.Items.Remove(item); + } + + } + + private void 打开所在目录ToolStripMenuItem_Click(object sender, EventArgs e) + { + + foreach (ListViewItem item in lvFileList.SelectedItems) + { + Process.Start("Explorer.exe", Path.GetDirectoryName(item.Tag as string)); + } + } + + private void lvFileList_ItemCheck(object sender, ItemCheckEventArgs e) + { + + } + + private void lvFileList_DoubleClick(object sender, EventArgs e) + { + //要判断是否点击项,控件里至少要有一个项 + if (this.lvFileList.Items.Count > 0) + { + Point point = this.lvFileList.PointToClient(MousePosition); + ListViewHitTestInfo hitTest = this.lvFileList.HitTest(point); + + if (hitTest.Item != null) + {//点击的不是列且不是空白区域 + Process.Start(lvFileList.SelectedItems[0].Tag as string); + } + } + } + + private void btnStart_Click(object sender, EventArgs e) + { + if (lvFileList.Items.Count == 0) + { + MessageBox.Show("打包前至少应该有一个文件", "自动打包", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + frmPackage package = new frmPackage(lvFileList.Items.Cast().Select(x => x.Tag as string).ToList()); + package.ShowDialog(); + + } + + bool ZipControl_FileWillDecompress(string filePath) + { + if (lvFileList.Items.Cast().Where(x => Path.GetFileName(x.Tag as string) == Path.GetFileName(filePath)).Count() > 0) + { + if (MessageBox.Show(Path.GetFileName(filePath) + "已存在在列表中,是否覆盖?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) + { + return true; + } + else + { + return false; + } + } + return true; + } + + private void btnExit_Click(object sender, EventArgs e) + { + Close(); + } + + private void btnSettings_Click(object sender, EventArgs e) + { + new frmSettings().ShowDialog(); + } + + private void Form1_KeyDown(object sender, KeyEventArgs e) + { + //要判断是否点击项,控件里至少要有一个项 + if (this.lvFileList.SelectedItems.Count > 0) + { + if(e.Shift && e.KeyCode == Keys.Delete) + { + if (MessageBox.Show("确实要同时删除此文件吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) + { + foreach (ListViewItem item in lvFileList.SelectedItems) + { + File.Delete(item.Tag as string); + lvFileList.Items.Remove(item); + } + } + } + else if (e.KeyCode == Keys.Delete) + { + foreach (ListViewItem item in lvFileList.SelectedItems) + { + lvFileList.Items.Remove(item); + } + } + } + } + } +} diff --git a/AutoPekage/Form1.resx b/AutoPekage/Form1.resx new file mode 100644 index 0000000..d738843 --- /dev/null +++ b/AutoPekage/Form1.resx @@ -0,0 +1,1259 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 115, 17 + + + 17, 17 + + + + + AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA + 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 + 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 + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAKioqAEtLSwBGRkYAWVlZAFFRUQBHR0cAQEBAADY2NgAzMzMANDQ0ADo6 + OgBOTk4ASkpKAEZGRgBBQUEAQEBAAD4+PgBISEgAU1NTAFJSUgBSUlIAUVFRAE5OTgBVVVUAWFhYAFlZ + WQBfX18AWlpaAKqqqgD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wBra2sAXV1dAFlZWQBWVlYAVFRUAE1NTQBQUFAAUVFRAFFR + UQBLS0sAQkJCAEhISABHR0cASEhIAEpKSgBUVFQANTU1ADU1NQA0NDQANjY2ADs7OwBFRUUASkpKAFpa + WgBLS0sAR0dHAEpKSgAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAA6OjoAPDw8AFRU + VABGRkYAR0dHAFBQUABTU1MAUFBQAFRUVABWVlYAT09PAJeXlwCSkpIAgICAAP///wAAAAAAMDAwAAAA + AAD///8AODg4ACMjIwAaGhoAFBQUARAQEAEMDAwBEBAQADk5OQAvLy8BKysrASIiIgEhISEBHx8fAUJC + QgFTU1MBUFBQAVFRUQFQUFABTU1NAVtbWwFgYGABX19fAmVlZQFhYWEBUFBQAktLSwJISEgCSEhIAkhI + SAJISEgCSEhIAkhISAJISEgCSEhIAkhISAJISEgCSEhIAkhISAJISEgCSEhIAkhISAJJSUkCTU1NAllZ + WQFjY2MBX19fAV5eXgFYWFgBTExMAVBQUAFQUFABUFBQAUdHRwExMTEBOjo6ATIyMgEtLS0BMTExAUtL + SwAKCgoAERERAREREQETExMBGBgYACEhIQAqKioAXFxcAAAAAAATExMAJSUlAP///wCbm5sA////AP// + /wBoaGgAkJCQAFRUVABPT08AUFBQAEBAQAA9PT0AREREAFBQUAA8PDwAOTk5AExMTAAKCgoAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEhISABFRUUAT09PAExM + TABBQUEATU1NAFxcXAD///8AAAAAAA0NDQAJCQkARUVFACsrKwAzMzMASkpKAVJSUgFPT08BVlZWAldX + VwJOTk4CRkZGA0lJSQNOTk4DS0tLBEpKSgRQUFAFUlJSBVJSUgZVVVUHVVVVB1BQUAdPT08IT09PCVJS + UglQUFAJUVFRClRUVAtUVFQLUVFRDFBQUAxSUlIMUFBQDVVVVQ5VVVUOVFRUDlNTUw9RUVEPUlJSD1JS + UhBTU1MQV1dXEFZWVhBUVFQRU1NTEVJSUhJSUlISU1NTElNTUxJTU1MSU1NTElNTUxJTU1MSU1NTElNT + UxJTU1MSU1NTElNTUxJTU1MSU1NTElJSUhJTU1MRVVVVEFZWVhBTU1MQUVFREFJSUg9RUVEPU1NTD1RU + VA5UVFQOUFBQDVFRUQ1RUVEMUVFRDFVVVQtSUlILUlJSClBQUApSUlIJT09PCU9PTwhPT08IUlJSB1ZW + VgdTU1MGUVFRBU5OTgVOTk4FTExMBE9PTwNJSUkDQUFBA0xMTAJTU1MCWVlZAk1NTQFNTU0BICAgARoa + GgApKSkAOTk5AAAAAAAAAAAAAAAAAIWFhQD///8AV1dXALu7uwBjY2MASEhIAFFRUQBMTEwAEhISAAAA + AAAAAAAAAAAAAAAAAAAbGxsAEhISAD09PQBBQUEAOjo6AC4uLgFNTU0BTU1NAkhISANHR0cEUFBQBU5O + TgZTU1MHUlJSCVJSUgpSUlILU1NTDVJSUg9TU1MRU1NTElNTUxRSUlIWU1NTF1NTUxlTU1MaU1NTHFNT + Ux5TU1MfU1NTIVNTUyNTU1MkU1NTJlRUVCdTU1MoVFRUKlNTUytTU1MsU1NTLlRUVC9TU1MwU1NTMlNT + UzNTU1M0VFRUNVVVVTZTU1M2U1NTN1NTUzhTU1M4VFRUOVNTUzpTU1M7U1NTO1RUVDxTU1M8U1NTPVNT + Uz1TU1M9VFRUPVRUVD1UVFQ9VFRUPVRUVD1UVFQ9VFRUPVRUVD1UVFQ9U1NTPVNTUz1TU1M9U1NTPVRU + VDxUVFQ7U1NTOlNTUzpUVFQ5U1NTOVNTUzhTU1M3U1NTN1RUVDZTU1M1VFRUM1NTUzJUVFQwVFRUL1NT + Uy1TU1MsU1NTK1RUVCpTU1MpU1NTJ1NTUyZTU1MlU1NTI1NTUyJTU1MgU1NTHlNTUx1TU1McU1NTGVJS + UhhSUlIWUlJSFVNTUxNTU1MRUlJSEFJSUg5RUVEMUVFRC1FRUQlTU1MIUFBQB1BQUAZSUVEFSkpKA0ZG + RgNGRkYCSEhIAkFBQQE4ODgAVFRUAERERAAAAAAAaWlpACgoKAAAAAAAAAAAAAYGBgAAAAAAOjo6AVJS + UgNRUVEGUlJSCVJSUgxTU1MPVFRUE1RUVBZWVlYaWFhYHVhYWCFYV1clVlZWKVZWVixWVlYwV1dXM1ZW + VjdWVlY6VlZWPlZWVkFWVVVEVVVVR1ZVVUtVVVVNVVVVUFVVVVNVVVVVVVVVV1VVVVpWVlZcVlZWXlVV + VWBVVVViVVVVZFVVVWVVVVVnVVVVaVVVVWpVVVVsVVVVbVVVVW9VVVVwVlZWcVVVVXJWVlZzVlZWc1VV + VXRVVVV1VlZWdlZWVnZVVVV3VlZWeFVVVXlVVVV6VlZWelZWVnpWVlZ6VlZWelZWVnpWVlZ6VlZWelZW + VnpWVlZ6VlZWelZWVnpWVlZ6VlZWelZWVnpVVVV5VVVVeVVVVXhVVVV3VVVVd1ZWVnZVVVV1VVVVdFZW + VnNVVVVzVVVVclVVVXBVVVVvVVVVbVVVVWtVVVVqVVVVaFVVVWdVVVVlVlZWY1VVVWJVVVVgVVVVXlVV + VV1WVVVaVVVVWFVVVVZVVVVTVlZWUVZWVk5WVlZKVlZWSFZWVkRWVlZBVlZWPlZWVjpWVlY3VlZWM1ZW + Vi9XV1csV1dXKFdXVyRXV1chWFhYHlhYWBpYWFgXWVlZE1paWhBdXV0NV1dXC1NTUwlRUVEGTk5OBUlJ + SQNAQEABDAwMAGdnZwAAAAAAWFhYADc3NwFMTEwFU1NTC1RUVBJVVVUYWlpaHVRUVCZMTEwzS0xMO0VF + RUg/Pz9UQUFBWUJCQl5CQkJiQ0NDZkRERGpEREVuREVFckVFRXVFRkZ4RkZGe0ZGRn1GRkaARkdHg0dH + R4ZHR0eIR0dHi0dISIxISEiOSEhIkEhISJJISEiTSEhIlEhISJZISUiXSEhImElJSZpJSUmbSUlJnElJ + SZ5JSUmeSUlJn0pJSqBKSUmhSUpKoUpKSqJKSkqiSkpKo0pKSqNKSkqkSkpKpEpKSqVLS0ulS0tLpkpK + SqZKSkqnS0tLp0tLS6dLS0unS0tLp0pKSqdHR0enSEhIp0lJSadLTEynS0xMqEtMTKhLS0uoS0tLqEtL + S6hKSkqnSkpKp0pKSqZKSkqmSkpKpUpKSqVKSkqlSkpKpUpKSqRKSkqjSkpKo0lJSaJJSUmhSUlJoElJ + SZ9JSUmeSUlJnUlJSZxJSUmaSUlJmUlJSZhISUmXSElJlkhJSZVISEiUSEhIkkhISJBHSEiOR0hIi0hI + SIlHR0eGR0dHg0ZHR4FGRkZ+RkZGekVGRndFRUVzREREb0NERGtDQ0NmQkNDYkJCQl5BQUFZP0BAVD4+ + Pk89PT1KOzs7RTk6Oj9BQUEwUVFRIF1cXBZWVlYSUlJSDFBQUAdCQkIDHh4eAKGhoQAAAAAAOjo6AlJS + UghVVVURW1tbGElKSisvMTFpJigoqCQmJsUlJibLJCUl2CIjI+UiJCTmIyQk5yMlJOckJSXoJCUl6SQm + JukkJibqJSYm6iUnJ+olJyfrJicn6yYoKOwmKCjsJygo7CcpKe0nKSntKCkp7SgpKe0oKiruKCoq7ikq + Ku4pKyruKisr7iosK+8rLCzvKy0s7ywtLe8tLi3vLS4u7y4vL+8vMDDwMDEw8DAxMfAxMjLwMjMz8DM0 + NPA0NTXwNTY28DY2N/A3NzfwNzg48Dg5OfA5OTnwOTo68Do7O/A6OzvwOjs78Do7O/A5OjrwQkND8Gdo + Z/BhYWHwSktL8DEyMvAwMTHxMTIy8TM0NPE1NjbxNjc38TY4N/E2NzfxNjc28TU2NvE0NTXxMzQ08TIz + M/EyMzLxMTIx8TAxMfAvMTDwLzAv8C4vL/AtLi7wLC4t8CwuLfArLS3wKyws8CosLPAqKyzwKisr7ykr + K+8pKyvvKSsr7ykqKu8oKirvKCoq7ygpKe4nKSnuJykp7icoKO0nKCjtJigo7SYnJ+wmJyfsJicn6yUn + JuslJibqJCYm6iQlJekkJSXoIyUl5yMkJOYjJCTmIiQk5SIjI+QiIyPjISMi4SIkJM4lJyevKy0tcURF + RCtYWFgWUVFRDlBQUAY9PT0B////AAAAAAAyMjICTk5OBmBgYAw4OjooJCYlpCEjI/MhIyP/IiQj/yIk + JP8kJSX/JCYl/yQmJv8lJyb/Jicn/yYoJ/8nKSj/KCkp/ykqKf8qKyr/Kisr/yssLP8rLS3/LS4u/y0u + Lv8uMDD/LzAw/zAxMf8xMjL/MjMz/zI0NP80NDT/NDU1/zU2Nv82Nzf/Nzg4/zg5Of85Ojr/Ojs7/zs8 + PP87PT3/PT4+/z4/P/8/QED/QEFB/0FCQv9CQ0P/RERE/0RFRf9FRkb/RkdH/0hISP9JSUr/SUpK/0pL + S/9KTEz/SkxL/0lLS/9ISkr/R0lI/0VHR/9QU1L/foB//4iJiP+MjYz/dXV2/z5AP/8vMTD/OTo6/0BC + Qf9GR0f/SUpK/0pKS/9KSkv/SUlJ/0hISP9HR0f/RUZG/0VFRf9ERET/Q0ND/0FCQv9AQUH/P0BA/z4/ + P/89Pj3/PD09/zs8PP86Ozv/OTo6/zg5Of82ODj/Njc3/zU3N/80Njb/MzQ0/zI0NP8yMzP/MTIy/zAx + Mf8vMTH/Li8v/y0vLv8tLi7/Ky0s/yssLP8qKyv/Kisq/ygqKf8oKSn/Jyko/ycoKP8mJyf/JScm/yQm + Jv8kJiX/JCUl/yIlJP8iJCP/IiQj/yEjI/8hIyL3IyUlqzc4OCtVVVUOUVFRB0BAQAH///8A+Pj4ABsb + GwBDQ0MCMDExCSEjI4wgIiL8ISMj/yEjI/8iJCT/IyUk/yQlJf8kJiX/JScm/yYnJ/8mKCf/Jyko/ygp + Kf8pKir/KSsq/yssK/8rLCz/LC0t/y0uLv8uLy//LjAw/y8xMf8wMTH/MTIy/zIzM/8zNDT/NDU1/zU1 + Nf81Njb/Njc3/zc4OP84OTn/OTo6/zk7O/87PDz/PD09/z0+Pv8+Pz//P0BA/0BBQf9BQUH/QkND/0NE + RP9ERUX/RkZG/0ZHR/9ISEj/SElJ/0pKSv9LS0v/S0xM/0xNTf9LTU3/S0xM/0lLS/9HSkn/RUhH/1ZY + V/+en57/nJyb/4WGhv9bXFz/ODo5/y8yMP85Ozr/QUNC/0dISP9KS0v/S0xM/0pLS/9KSkr/SUlJ/0hI + SP9HR0f/RkZG/0VFRf9ERET/QkND/0FCQv9AQUH/P0BA/z5AP/89Pj7/PD09/zs8PP86Ozv/OTo6/zg5 + Of83OTn/Njg4/zY3N/80Njb/MzU1/zM0NP8yMzP/MTIy/zAyMv8vMTH/LjAw/y4vL/8tLi7/LC0t/yss + LP8rLCv/KSsq/ygqKf8oKSn/Jyko/ycoKP8mJyf/JScn/yQmJv8kJSX/IyUk/yIkJP8iJCP/ISMj/yEj + Iv8gIiL9IiMjijk5OQpKSkoDOzs7AZ+fnwAAAAAAIiMjACIkJAAgIiIpICIi3iEjIv8hIyP/IiQj/yMl + I/8jJST/JCUl/yQmJf8lJyb/Jicn/ycoKP8nKSj/KCkp/ygqKf8pKyr/Kywr/ystLP8sLS3/LS4u/y4v + L/8uMDD/LzEx/zAxMf8wMjL/MjMz/zM0NP8zNTX/NTU1/zU2Nv82Nzf/Nzg4/zg5Of85Ojr/OTs7/zs8 + PP88PT3/PT4+/z4/P/8/QED/QEFB/0FBQf9CQ0P/Q0RE/0RFRf9FRkX/RkdH/0hISP9JSUn/SUpK/0pL + S/9LTEz/TExN/0tNTf9LTEz/SUtL/0hKSf9GSEf/VVdX/5iZmP+YmZj/h4eH/2BhYf85Ozr/LzIw/zk7 + Ov9BQkL/R0hI/0pLS/9KS0v/SktL/0pKSv9JSUn/SEhI/0ZHR/9FRkb/RUVF/0NERP9CQ0L/QkJC/0BB + Qf8/QED/Pj8//z0+Pv88PT3/Ozw8/zo7O/85Ojr/ODk5/zc4OP82ODj/Njc3/zU2Nv80NTX/MjMz/zIz + M/8xMjL/MDEx/y8xMf8uLy//Li8v/y0uLv8sLS3/Kyws/yssK/8pKyr/KCoq/ygqKf8nKSj/Jign/yYo + J/8lJyf/JCYl/yQlJf8jJSX/IyUk/yIkI/8hIyP/ISMj/yAiI/8hIyPZISMjJR4gIAAAAAAADAwMAAAA + AAAhIyMAICIiACAiIk8gIiPyISMj/yEjI/8iJCT/IiQk/yMlJP8kJiT/JCYl/yQnJv8mJyf/Jign/yco + KP8oKSn/KCkp/ykqKv8qLCv/Ky0s/ywtLf8sLS3/LS8u/y4vMP8vMTH/MDEx/zAyMv8yMzP/MjMz/zQ1 + Nf80NTX/NTY2/zY3N/83ODj/ODk5/zg6Ov85Ozv/Ozw8/zw9Pf88PT3/Pj8//z5AP/9AQEH/QUFB/0JD + Qv9DRET/RERF/0VGRf9GR0f/R0dI/0hISf9JSkr/SktL/0tLTP9LTEz/S01N/0tMTP9KS0v/SEpK/0ZI + R/9SVFT/hoiH/46Pjv+LjIv/bm5u/zw+Pf8uMC//ODo5/0BBQf9GR0f/SUpK/0pLS/9KS0v/SUpK/0hJ + Sf9HSEj/RkdH/0VGRf9EREX/Q0RE/0JDQ/9BQUH/QEFB/z5AQP8+Pz//PT4+/zw9Pf87PDz/Ojs7/zk6 + Ov84OTn/Nzg4/zY3N/81Njb/NTU1/zM1Nf8yNDT/MjMz/zEyMv8wMTH/LzAw/y4vL/8tLy//LS4u/ywt + Lf8rLCz/Kiwr/ykrKv8oKir/KCkp/ycpKP8mKCf/Jicn/yUnJv8kJiX/JCUl/yMlJP8iJCT/ISMj/yEj + I/8hIyP/ISMj/yEjI/AhIyNIISMjACEjIwAlJSUAAAAAACEjIwAhIyMAISMjXiEjI/chIyL/ISMj/yIk + JP8iJCT/IyUk/yQmJP8kJiX/JCcm/yUnJ/8mJyf/Jygo/ygpKf8oKin/KSoq/yorK/8rLCz/Ky0s/ywt + Lf8tLi7/LjAv/y8wMP8wMTH/MDIy/zEyMv8yMzP/MzU1/zQ1Nf81Njb/Njc3/zc4OP84OTn/OTo6/zk7 + O/87PDz/PD09/zw9Pf89Pz7/PkA//z9AQf9BQUH/QkJC/0NERP9ERET/RUVF/0ZGRv9HR0f/SEhI/0lJ + Sf9JSkr/S0tM/0tLTP9LTEz/S0xM/0lLS/9ISkn/RUdH/1hbWv+qrKv/pKWj/4KDg/9SVFP/NDY1/y0w + Lv83ODj/P0BA/0VGRv9ISUn/SkpK/0pKSv9JSUn/SEhI/0dHR/9GRkb/RUVF/0RERP9DRET/QkNC/0BB + Qf8/QEH/PkA//z0/Pv88PT3/PD09/zs8PP85Ozv/ODk5/zg5Of83ODj/Njc3/zU2Nv80NTX/NDU1/zIz + M/8yMzP/MTIy/zAxMf8vMTH/Li8w/y0uLv8sLi3/LC0t/yssLP8qKyv/KSoq/ygqKf8oKSn/Jygo/yYo + J/8mJyf/JScm/yQmJf8kJSX/IiQk/yIkJP8iJCP/ISMj/yEjIv8hIyP/ISMj9CEjI1UhIyMAISMjAAAA + AAAAAAAAISMjACEjIwAhIyNfICIj+CEjI/8iJCP/IiQj/yIkJP8iJST/JCYl/yQmJf8lJib/Jicm/yYo + J/8nKCj/Jyko/ygqKf8oKir/Kisr/yssLP8sLS3/LC0t/y0uLv8uLy//LjAw/zAxMf8wMTH/MjIy/zIz + M/8zNDT/NDU1/zU2Nv81Nzf/Njg4/zc4OP84OTn/OTs7/zo8PP87PDz/PD09/z0/Pv8+QD//P0BA/0FB + Qf9BQkL/QkND/0NERP9FRUX/RkZG/0ZHR/9HSEj/SElJ/0lKSv9KS0v/SktM/0pLTP9KS0z/SUtL/0hK + Sf9GSEf/T1FQ/3d5eP+FhoX/kZKS/35/gP8/QUD/Ky0s/zU3Nv89Pz7/RERE/0dISP9JSkr/SUpK/0hJ + Sf9HSEj/R0dH/0ZGRv9FRUX/RERE/0NEQ/9BQkL/QUFB/z9AQP8+QD//PT4+/zw9Pf87PDz/Ozw8/zo7 + O/84OTn/Nzk5/zc4OP82Nzf/NTY2/zQ1Nf8zNTX/MzQ0/zEyMv8wMjL/LzEx/y4wMP8uMC//LS4u/ywt + Lf8sLS3/Kyws/yosK/8pKir/KCkp/ygpKf8nKCj/Jign/yUnJ/8kJyb/JCYl/yMlJP8iJST/IiQj/yIk + I/8hIyL/ISMj/yEjI/8hIyP0ISMjVSEjIwAhIyMAAAAAAAAAAAAhIyMAISMjACEjI18hIyP4ISMj/yEj + I/8hIyP/IiQj/yMlJP8kJSX/JCYl/yQmJv8lJyb/Jign/ycoKP8nKSj/KCop/ykqKv8qKyr/Kyws/yss + LP8sLS3/LS4u/y4vL/8uMDD/LzEx/zAxMf8xMjL/MjMz/zM0NP80NTX/NTY2/zU2Nv82ODj/Nzg4/zg5 + Of85Ojr/Ojs7/zs8PP88PT3/PT4+/z4/P/8/QED/QEFB/0FCQf9CQ0P/Q0RE/0RFRf9FRkX/RkdH/0dH + R/9ISEj/SUlJ/0lKSv9KS0v/SktL/0pLS/9JSkr/R0lJ/0RHRv9bXVz/uru6/62urP9+fn7/REZF/y4x + L/8qLCv/MzU0/zs9PP9CQ0P/RkdH/0hJSf9JSUn/SEhJ/0dHSP9GR0f/RUZF/0RFRf9DRET/QkND/0FB + Qv9AQUH/P0BA/z4/P/89Pj7/PD09/zs8PP86Ozv/OTo6/zg5Of83OTn/Njg4/zU3N/81Njb/NDU1/zM0 + NP8zNDT/MTIy/zAxMf8wMTH/LjAw/y4vL/8tLi7/LC0t/ystLP8rLCz/Kisr/ykqKv8oKin/Jyko/yco + KP8mJyf/JScm/yUmJv8lJib/JCUk/yMlJP8iJCT/ISMk/yEjI/8hIyP/ISMj/yEjI/QhIyNVISMjACEj + IwAAAAAAAAAAACEjIwAhIyMAISMjXyEjI/ghIyP/ISMi/yEjI/8iJCP/IiUk/yMlJP8kJSX/JCYm/yUn + Jv8mJyf/Jygo/ycpKP8oKSn/KCop/yorK/8qLCv/Ky0s/ywtLf8tLi7/LS8u/y4wMP8vMDD/MDEx/zEy + Mv8yMzP/MzQ0/zQ1Nf80NTX/NTY2/zY4OP83ODj/ODk5/zk6Ov86Ozv/Ozw8/zw9Pf89Pj7/Pj8//z5A + P/9AQEH/QUFB/0JDQv9DRET/RERE/0VFRf9GRkb/RkdH/0dISP9ISUn/SUpK/0lKSv9JSkv/SUpK/0hK + Sf9HSUj/RUhH/01QT/9wcnH/gIKB/5OUlP+FhYb/P0FA/ygqKf8yMzP/Ojs7/0FCQv9FRkb/R0hI/0hI + SP9HSEj/R0dH/0ZGRv9FRUX/RERE/0NERP9BQ0L/QUFB/0BAQf8/QD//Pj8//z0+Pv88PT3/Ozw8/zo7 + O/85Ojr/ODk5/zc4OP82ODj/NTY2/zQ1Nf80NTX/MzQ0/zIzM/8xMjL/MDEx/y8xMf8uMDD/LS8v/y0u + Lv8sLS3/Kyws/yssLP8qKyv/KSoq/ygqKf8nKSj/Jygo/yYnJ/8lJyb/JCYm/yQmJf8kJST/IyUl/yIk + I/8hIyP/ISMj/yEjI/8gIiP/ISMj9CEjI1chIyMAISMjAAAAAAAAAAAAISMjACEjIwAhIyNfISMj+CAi + I/8hIyL/ISMj/yIkI/8iJCT/IyUk/yQlJf8kJiX/JScm/yYnJ/8mKCf/Jyko/ygpKf8oKin/KSsq/yss + K/8rLCz/LC0t/ywuLf8tLy7/Li8v/y8wMP8wMTH/MTIy/zIzM/8yMzP/MzU1/zU1Nf81Njb/Njc3/zc4 + OP84OTn/ODk5/zk7O/87PDz/Ozw8/zw9Pf89Pj7/P0BA/z9AQP9AQUH/QUJC/0JDQ/9DRET/RERF/0VF + Rf9GR0f/R0dH/0hISP9ISUn/SUpK/0lKSv9ISkr/SElJ/0ZJSP9ERkb/W11c/7u8u/+ur67/fX19/z9A + QP8sLi3/KCop/zAyMf85Ojn/QEFA/0VFRf9HR0f/R0hI/0dHR/9GR0b/RUZF/0VERf9DRET/QkND/0FC + Qv9AQUH/P0BA/z5AP/89Pj7/PD09/zw9Pf87PDz/OTs7/zk6Ov84OTn/Nzg4/zY3N/81Njb/NDU1/zM0 + NP8zNDT/MjMz/zExMf8wMTH/LzAw/y4wMP8tLy7/LS4u/ywtLf8rLCz/Kiwr/yorKv8oKin/KCkp/ycp + KP8mKCf/Jicn/yUnJv8kJiX/JCYl/yMlJP8iJCT/IiQj/yEjI/8hIyL/ICIj/yEjI/8hIyP3ISMjXCEj + IwAhIyMAAAAAAAAAAAAhIyMAISMjACEjI2EhIyP4ICIj/yEjIv8hIyP/IiQj/yIkJP8jJST/JCUl/yQm + Jf8lJib/JScm/yYoJ/8nKCj/Jyko/ygqKf8pKin/Kiwr/yssLP8sLS3/LC0t/y0uLv8uLy//LzAw/zAx + Mf8wMjL/MTMz/zIzM/8zNDT/NDU1/zU2Nv82Nzf/Njg4/zc5Of84OTn/OTo6/zo7O/87PDz/PD09/z0+ + Pv8+Pz//P0BA/0BAQf9BQUH/QkNC/0NERP9ERET/RUVF/0ZGRf9GR0f/R0dH/0hISP9ISEn/SElJ/0hJ + Sf9HSUj/RkhI/0VHRv9NUE//cnNz/4OEg/+UlZT/goOD/z0/Pv8mKCf/LzEw/zc5OP8+QD//Q0RE/0ZG + Rv9HR0f/RkdH/0ZGRv9FRUX/Q0RE/0NEQ/9CQ0L/QUFB/0BAQf8/QED/Pj8//z0+Pv88PT3/Ozw8/zo7 + O/85Ojr/ODk5/zc5Of82ODj/Njc3/zU2Nv80NTX/MzQ0/zIzM/8xMjL/MTIy/zAxMf8vMDD/Li8v/y0v + Lv8sLS3/LC0t/yssLP8qLCv/KSoq/ygqKf8oKSn/Jygo/yYoJ/8mJyb/JScm/yQmJf8kJSX/IyUk/yIk + JP8iJCP/ISMj/yEjIv8gIiP/ISMj/yEjI/chIyNdISMjACEjIwAAAAAAAAAAACEjIwAhIyMAISMjaCEj + I/sgIiP/ISMi/yEjI/8iJCP/IiQk/yMlJP8kJSX/JCYl/yQmJv8lJyb/Jicn/ycoKP8nKSj/KCkp/ykq + Kv8qKyv/Kyws/ystLP8sLS3/LS4u/y4vL/8uMDD/LzEx/zAxMf8xMjL/MjMz/zM0NP80NTX/NDU1/zU2 + Nv82ODj/Nzg4/zg5Of85Ojr/Ojs7/zs8PP88PT3/PT4+/z4/P/8+QD//P0BA/0BBQf9BQkL/QkNC/0NE + RP9ERET/RUVF/0ZGRv9GR0f/R0dH/0hISP9ISEj/R0hI/0dISP9GSEf/REZF/1pcW/+3t7f/r6+v/4WF + hf9JS0r/LTAu/yYoJ/8uMC//Njc3/z0+Pv9CQ0P/RUZG/0ZHR/9GRkb/RUVF/0RERf9DRET/QkND/0FC + Qv9AQUH/P0BA/z4/P/8+Pj//PD09/zw9Pf87PDz/OTs7/zk6Ov84OTn/Nzg4/zY4OP81Nzf/NTY2/zQ1 + Nf8zNDT/MjMz/zEyMv8wMjL/LzEx/y4wMP8uLy//LS4u/ywtLf8rLSz/Kyws/yorK/8pKir/KCop/ycp + KP8nKCj/Jign/yUnJv8lJib/JCYl/yQlJf8jJST/IiQk/yIkI/8hIyP/ISMi/yAiI/8hIyP/ISMj9yEj + I10hIyMAISMjAAAAAAAAAAAAAAAAACEjIwAhIyNpISMj+yAiI/8hIyP/ISMi/yEjI/8iJCP/IiQk/yMl + JP8kJiX/JCYm/yUnJv8mJyf/Jygo/ycpKP8oKSn/KSoq/yorKv8rLCz/Kyws/ywtLf8tLi7/Li8v/y4w + L/8vMDD/MDEx/zEyMv8yMzP/MzQ0/zM0NP80NTX/NTY2/zY3N/83ODj/ODk5/zg5Of85Ojr/Ojs7/zs8 + PP88PT3/PT4+/z4/P/8+QED/P0BB/0FBQf9BQkL/QkND/0NERP9EREX/RUVF/0ZGRv9GR0f/R0dH/0dI + SP9HSEf/RkdH/0ZHR/9ERkX/UFNS/4aHhv+Sk5L/lZaV/3l5ev86PDv/JCcl/y0vLv81Nzb/PD09/0FC + Qv9ERUX/RUZF/0VFRf9EREX/Q0RE/0JDQ/9BQkL/QUFB/z9AQf8+QED/Pj8//z0+Pv88PT3/Ozw8/zs8 + PP85Ozv/ODo6/zg5Of83ODj/Njc3/zU2Nv80NTX/MzU1/zM0NP8yMzP/MTIy/zAxMf8vMTH/LjAw/y0v + L/8sLi7/LC0t/yssLP8rLCz/Kisq/ygqKv8oKSn/Jyko/ycoKP8mJyf/JScm/yQmJv8kJiX/JCUk/yMk + JP8iJCP/IiQj/yEjI/8hIyL/ICIj/yEjI/8hIyP3ISMjXSEjIwAhIyMAAAAAAAAAAAAAAAAAISMjACEj + I2khIyP7ICIj/yAiI/8hIyL/ISMj/yIkI/8iJCT/JCUk/yQlJf8kJib/JScm/yYnJ/8nKCj/Jyko/ygp + Kf8oKin/KSoq/yosK/8rLCz/LC0t/ywtLf8tLy7/Li8v/y8wMP8wMTH/MTIy/zIyMv8yMzP/MzQ0/zQ1 + Nf81Njb/NTY2/zY4OP83ODj/ODk5/zk6Ov85Ozv/Ozw8/zw9Pf88PT3/PT4+/z4/P/8/QED/QEBB/0FB + Qf9CQkL/QkND/0NERP9EREX/RUVF/0VGRf9GRkf/RkdH/0ZHR/9FR0f/RUdG/0NGRf9WWFj/qKmo/6ip + qP+Pj4//X2Bg/zI1M/8kJyX/LC4t/zQ2Nf87PTz/QUFB/0NERP9ERUX/RERF/0NERP9CQ0P/QkJC/0FB + Qf9AQUH/P0BA/z5AP/89Pj7/PD09/zw9Pf87PDz/Ojs7/zk6Ov84OTn/Nzk5/zY4OP81Njb/NTU1/zQ1 + Nf8zNDT/MjMz/zIzM/8xMjL/MDEx/y8wMP8uLy//LS4u/ywtLf8sLS3/Kyws/yosK/8qKyr/KCop/ygp + Kf8nKSj/Jign/yYnJ/8lJyb/JCYm/yQmJf8jJST/IiQk/yIkI/8hIyP/ISMi/yEjI/8gIiP/ISMj/yEj + I/chIyNeISMjACEjIwAAAAAAAAAAACEjIwAhIyMAISMjaSEjI/shIyP/ICIj/yEjIv8hIyP/IiQj/yIk + JP8jJST/JCUl/yQmJf8lJyb/JScm/yYoJ/8nKCj/Jyko/ygqKf8pKir/Kiwr/yssLP8rLSz/LC0t/y0u + Lv8uLy//LjAw/y8xMf8wMTH/MTIy/zIzM/8yNDT/MzU1/zQ1Nf81Njb/Njc3/zc4OP84OTn/ODk5/zk7 + O/86PDz/Ozw8/zw9Pf89Pj7/PT4+/z5AP/8/QED/QEFB/0FBQf9CQkL/QkND/0NERP9ERET/REVF/0VG + Rf9GRkb/RkdG/0VHRv9FRkb/Q0VF/1RWVv+dnp7/pKWk/5WVlP9tbW3/Nzk4/yQmJf8sLi3/MzU0/zs8 + O/9AQUD/QkND/0NERP9DRET/QkND/0JDQv9BQUH/QEFB/z9AQP8+QD//PT8+/z0+Pv88PT3/Ozw8/zo8 + PP85Ojr/OTk5/zg5Of83ODj/Njc3/zU2Nv81NTX/NDU1/zM0NP8yMzP/MTIy/zAxMf8wMTH/LjAw/y4v + L/8tLi7/LC0t/ywtLf8rLCz/Kiwr/ykqKv8oKin/Jyko/ycpKP8mKCf/Jicn/yUnJv8kJiX/JCUl/yMl + JP8iJCT/IiQj/yEjI/8hIyL/ICIj/yEjI/8hIyP/ISMj+SEjI2QhIyMAISMjAAAAAAAAAAAAISMjACEj + IwAhIyNvISMj/SEjI/8gIiP/ISMi/yEjI/8iJCP/IiQk/yMlJP8kJSX/JCYl/yQmJv8lJyb/Jign/yco + KP8nKSj/KCkp/ykqKv8qKyr/Kyws/yssLP8sLS3/LS4u/y4vL/8uMDD/LzAw/zAxMf8xMjL/MjMz/zMz + M/8zNDT/NDU1/zU2Nv81Njb/Njg4/zc4OP84OTn/OTo6/zk7O/87PDz/PD09/zw9Pf89Pj7/Pj8//z5A + P/8/QED/QEFB/0FBQf9CQkL/QkND/0NERP9DRET/RERE/0VFRf9FRkX/RUZG/0VGRv9ERUT/UlRT/5GS + kv+en57/m5yb/3p6ev86PTv/IyYk/ywuLP8zNTP/Ojs6/z9AP/9BQkL/QkND/0JDQ/9CQ0L/QUFB/0BB + Qf8/QED/PkA//z4/P/89Pj7/PD09/zs8PP87PDz/Ojs7/zg6Ov84OTn/Nzk5/zY4OP82Nzf/NTY2/zQ1 + Nf8zNDT/MjMz/zIyMv8xMjL/MDEx/y8xMf8uMDD/Li8v/y0uLv8sLS3/Ky0s/yssLP8qKyv/KSoq/ygp + Kf8nKSj/Jygo/yYoJ/8lJyb/JSYm/yQmJf8kJSX/IyUk/yIkJP8iJCP/ISMj/yEjIv8gIiP/ISMj/yEj + I/8hIyP5ISMjZCEjIwAAAAAAAAAAAAAAAAAhIyMAISMjACEjI3MhIyP/ISMj/yAiI/8hIyL/ISMj/yEj + JP8iJCP/IiQk/yMlJP8kJiX/JCYm/yUnJv8mJyf/Jign/ycpKP8oKSn/KCop/yorKv8qLCv/Kyws/ywt + Lf8sLS3/LS4u/y4vL/8uMDD/LzEx/zAxMf8xMjL/MjMz/zM0NP80NTX/NDU1/zU2Nv82Nzf/Nzg4/zg5 + Of84OTn/OTo6/zo7O/87PDz/Ozw8/zw9Pf89Pj7/Pj8//z5AP/8/QED/QEFB/0FBQf9BQkL/QkNC/0JD + Q/9DRET/Q0RE/0RFRf9FRkX/REZG/0NFRP9ZW1r/tLW1/7e3tv+VlZT/XF1c/zI1Mv8kJiT/Ky0r/zI0 + Mv85Ojn/Pj8//0FBQv9CQ0L/QUJC/0FBQf9AQUH/P0BA/z5AP/8+Pz//PT4+/zw9Pf88PT3/Ozw8/zo7 + O/85Ojr/ODk5/zg5Of83ODj/Njg4/zU2Nv80NTX/MzU1/zM0NP8yMzP/MTIy/zAyMv8wMTH/LzAw/y4v + L/8tLy7/LS0u/ywtLf8rLCz/Kiwr/yorKv8oKin/KCkp/ycpKP8mKCf/Jicn/yUnJv8kJib/JCYl/yQl + Jf8iJCT/IiQj/yEjI/8hIyP/ISMi/yAiI/8hIyP/ISMj/yEjI/khIyNkISMjAAAAAAAAAAAAAAAAACEj + IwAhIyMAISMjcyEjI/8hIyP/ISMj/yAiI/8hIyL/ISMj/yIkI/8iJCT/IyUk/yQlJf8kJiX/JScm/yYn + J/8mKCf/Jygo/ycpKP8oKin/KSoq/yorK/8rLCz/Ky0s/ywtLf8tLi7/Li8v/y4wMP8vMTH/MDEx/zEy + Mv8xMzP/MjMz/zM0NP80NTX/NTY2/zU2Nv82ODj/Nzg4/zg5Of84OTn/OTo6/zo7O/87PDz/PD09/zw9 + Pf89Pj7/Pj8//z5AP/8/QED/QEFB/0FBQf9BQkH/QkJC/0JDQ/9DREP/Q0VF/0RFRf9ERkb/REVF/0pM + TP9hY2L/dHV0/5WWlf+Xl5f/REZF/yIlI/8qLCv/MTMy/zg5Of89Pj7/QEFA/0FCQf9BQUH/QEFB/z9A + QP8+QD//Pj8//z0+Pv88PT3/PD09/zs8PP86Ozv/OTs7/zk6Ov84OTn/Nzg4/zY4OP82Njb/NDU1/zQ1 + Nf8zNDT/MjMz/zIzM/8xMjL/MDEx/y8xMf8uMDD/Li8v/y0uLv8sLS3/Ky0s/yssLP8qKyv/KSoq/ygq + Kf8nKSj/Jyko/yYoJ/8mJyf/JScm/yQmJf8kJSX/IyUk/yIkJP8iJCP/ISMj/yEjIv8hIyP/ICIj/yEj + I/8hIyP/ISMj+iEjI2UhIyMAAAAAAAAAAAAAAAAAISMjACEjIwAhIyN0ISMj/yEjI/8hIyP/ICIj/yEj + Iv8hIyP/IiQj/yIkJP8jJST/JCUl/yQmJf8lJib/JScm/yYnJ/8nKCj/Jyko/ygpKf8oKir/Kisq/yos + LP8rLCz/LC0t/y0uLv8tLy7/Li8v/y4wMP8wMTH/MDEx/zEyMv8yMzP/MjQ0/zQ1Nf80NTX/NTY2/zY3 + N/82ODj/Nzg4/zg5Of85Ojr/OTs7/zs7O/87PDz/PD09/zw9Pf89Pj7/Pj8//z4/P/8/QED/P0BA/0BB + Qf9BQUH/QUJC/0JDQv9DREP/REVF/0RGRv9LTU3/T1FQ/2lrav9ucG//amxr/2RlZf9NT07/LjAv/ykr + Kv8wMzH/Nzg3/zw9PP8/Pz//QEFB/z9AQf8/QED/PkA//z4/P/89Pj7/PD09/zw9Pf87PDz/Ojs7/zk7 + O/85Ojr/ODk5/zc4OP82ODj/Njc3/zU2Nv80NTX/NDU1/zM0NP8yMzP/MTIy/zAyMv8wMTH/LzAw/y4v + L/8tLy7/LS0u/ywtLf8rLCz/Kyws/yorKv8pKir/KCkp/ycpKP8nKCj/Jign/yUnJv8lJib/JCYl/yQl + Jf8jJST/IiQk/yIkI/8hIyP/ISMi/yAiI/8hIyP/ISMj/yEjI/8hIyP8ISMjayEjIwAAAAAAAAAAAAAA + AAAhIyMAISMjACEjI3whIyP/ISMj/yEjI/8gIiP/ISMi/yEjIv8hIyP/IiQj/yIkJP8jJST/JCYl/yQm + Jv8lJyb/Jicn/yYoJ/8nKSj/KCkp/ygqKf8pKir/Kiwr/yssLP8rLSz/LC0t/y0uLv8tLy//LjAw/y8x + Mf8wMTH/MTIy/zIzM/8yMzP/MzQ0/zQ1Nf80NTX/NTY2/zY3N/82ODj/Nzk5/zg5Of85Ojr/OTs7/zo7 + O/87PDz/PD09/zw9Pf89Pj7/PT4+/z4/P/8+QD//P0BA/z9AQf9AQUH/QUJC/0JDQ/9DRET/QkRD/3Z3 + dv+sraz/vb6+/8HCwf+8vbz/sbKy/5mamv9bXVz/KSoq/zAyMf83ODf/Ozw8/z4+P/8/QED/PkA//z4/ + P/89Pz7/PT4+/zw9Pf88PT3/Ozw8/zs8PP85Ozv/OTo6/zg5Of83OTn/Njg4/zY3N/81Njb/NTY2/zQ1 + Nf8zNDT/MjMz/zEyMv8xMjL/MDEx/y8xMf8uMDD/Li8v/y0uLv8sLS3/LC0t/yssLP8qLCv/KSoq/ygq + Kf8oKSn/Jyko/ycoKP8mJyf/JScm/yQmJv8kJiX/JCUl/yIkJP8iJCT/ISMj/yEjI/8hIyL/ICIj/yEj + I/8hIyP/ISMj/yEjI/whIyNqISMjAAAAAAAAAAAAAAAAACEjIwAhIyMAISMjgCEjI/8hIyP/ISMj/yAi + I/8hIyP/ISMi/yEjI/8iJCP/IiQk/yMlJP8kJSX/JCYl/yUmJv8lJyb/Jign/ycoKP8nKSj/KCkp/ykq + Kv8qKyr/Kyws/yssLP8sLS3/LC0t/y0vLv8uLy//LjAw/y8xMf8wMTH/MTIy/zIzM/8zNDT/MzQ0/zQ1 + Nf81Njb/NTY2/zY3N/83ODj/Nzk5/zg5Of85Ojr/OTs7/zo8PP87PDz/PDw8/zw9Pf89Pj7/PT4+/z4/ + P/8+QD//PkA//z9AQP9AQUH/QUJC/0NERP9CQ0P/hIWF/52enf/Jysr/yMnI/5WWlf9LTUz/bG5t/3p7 + e/8pLCr/LzEw/zU3Nv86PDv/PT49/z4/P/8+Pz//PT4+/z0+Pv88PT3/PD09/zs8PP86Ozv/OTs7/zk6 + Ov84OTn/Nzk5/zc4OP82ODj/NTY2/zU2Nv80NTX/MzU1/zM0NP8yMzP/MTIy/zAxMf8wMTH/LzAw/y4v + L/8tLy7/LS0u/ywtLf8rLCz/Kyws/yorKv8pKin/KCkp/ycpKP8nKCj/Jign/yYnJ/8lJyb/JCYl/yQl + Jf8jJST/IiQk/yIkI/8hIyP/ISMi/yEjI/8gIiP/ISMj/yEjI/8hIyP/ISMj+yEjI2ghIyMAISMjAAAA + AAAhIyMAISMjACEjIwAhIyOAISMj/yEjI/8hIyP/ISMj/yAiI/8hIyL/ISMj/yIkI/8iJCT/IyUk/yQl + Jf8kJiX/JCYm/yUnJv8mJyf/Jygo/ycpKP8oKSn/KCop/ykqKv8qLCv/Kyws/ywtLf8sLS3/LS4u/y4v + L/8uMDD/LzAw/zAxMf8wMjL/MTIy/zIzM/8zNDT/MzU1/zQ1Nf81Njb/NTY2/zY4OP83ODj/Nzk5/zg5 + Of85Ojr/OTs7/zo7O/87PDz/Ozw8/zw9Pf88PT3/PT4+/z0+Pv8+Pz//PkA//z9BQP9BQkL/QkRE/0FD + Q/96fHv/hYaF/3V3d/+XmJf/tLW0/6CgoP+FhoX/e3x7/yksKv8vMTD/NDc1/zk7Ov88PT3/PT4+/z0+ + Pv88PT3/PD09/zs8PP87PDz/Ojs7/zk7O/85Ojr/ODk5/zc5Of83ODj/Njg4/zU2Nv81Njb/NDU1/zQ1 + Nf8zNDT/MjMz/zEyMv8wMTH/MDEx/y8wMP8uMDD/Li8v/y0uLv8sLS3/LC0t/yssLP8qLCv/Kioq/ygq + Kf8oKSn/Jyko/ycoKP8mJyf/JScm/yQmJv8kJiX/JCUl/yMlJP8iJCT/IiQj/yEjI/8hIyL/ICIj/yEj + I/8hIyP/ISMj/yEjI/8hIyP8ISMjbCEjIwAhIyMAAAAAACEjIwAhIyMAISMjACEjI4IhIyP/ISMj/yEj + I/8hIyP/ICIj/yEjIv8hIyL/ISMj/yIkI/8iJCT/IyUk/yQmJf8kJib/JScm/yYnJ/8mKCf/Jygo/ycp + KP8oKSn/KSoq/yorKv8rLCv/Kyws/ywtLf8sLS3/LS4u/y4vL/8uMDD/LzEx/zAxMf8xMjL/MTIy/zIz + M/8zNDT/NDU1/zQ1Nf81Njb/NTY2/zY4OP83ODj/Nzk5/zg5Of85Ojr/OTo6/zo7O/87PDz/Ozw8/zw9 + Pf88PT3/PD09/z0+Pv8+Pz//P0BA/0BBQf9CQ0P/QkND/2xubf+Kior/j5CQ/5mbmv+UlZT/gIGA/5ia + mf+EhYT/KCsp/y8xMP80NTX/ODo5/zs8PP88PT3/PD09/zs8PP87PDz/Ozw8/zo7O/85Ojr/OTo6/zg5 + Of83OTn/Nzg4/zY4OP81Njb/NTY2/zQ1Nf80NTX/MzQ0/zIzM/8yMzP/MTIy/zAxMf8vMTH/LjAw/y4v + L/8tLy7/LS4u/ywtLf8rLCz/Kyws/yorK/8pKir/KCop/ycpKP8nKSj/Jign/yYnJ/8lJyb/JCYm/yQm + Jf8jJST/IiQk/yIkI/8hIyP/ISMj/yEjIv8gIiP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyNzISMjACEj + IwAAAAAAISMjACEjIwAhIyMBISMjiyEjI/8hIyP/ISMj/yEjI/8gIiP/ICIj/yEjIv8hIyP/IiQj/yIk + JP8jJST/JCUl/yQmJf8kJib/JScm/yYnJ/8nKCj/Jyko/ygpKf8oKin/KSoq/yosK/8rLCz/Ky0s/ywt + Lf8tLi7/LS8u/y4vMP8uMDD/LzEx/zAxMf8xMjL/MjMz/zIzM/8zNDT/NDU1/zQ1Nf81Njb/NTY2/zY4 + OP83ODj/Nzg4/zg5Of84OTn/OTo6/zk7O/86Ozv/Ozw8/zs8PP87PDz/PD09/zw9Pf89Pz7/P0FA/0FD + Qv9CREP/YmNj/5WWlv+pqan/wcHA/9DQ0P/W19b/29zb/4iKif8nKij/LjEv/zM1NP84OTn/Ojs7/zs8 + PP87PDz/Ozw8/zo7O/85Ozv/OTo6/zg5Of84OTn/Nzk5/zc4OP82ODj/NTc3/zU2Nv80NTX/NDU1/zM0 + NP8yMzP/MjMz/zEyMv8wMTH/LzEx/y8wMP8uMC//LS8u/y0uLv8sLS3/Ky0s/yssLP8qLCv/KSoq/ygq + Kf8oKSn/Jyko/ycoKP8mJyf/JScm/yUmJv8kJiX/JCUl/yMlJP8iJCT/IiQj/yEjI/8hIyL/ICIj/yAi + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI3MhIyMAISMjAAAAAAAhIyMAISMjACEjIwEhIyOMISMj/yEj + I/8hIyP/ISMj/yEjI/8gIiP/ISMi/yEjI/8hIyP/IiQj/yIkJP8jJST/JCUl/yQmJv8lJyb/Jicm/yYo + J/8nKCj/Jyko/ygpKf8oKir/KSsq/yssK/8rLCz/LC0t/ywtLf8tLi7/Li8v/y4wMP8vMDD/LzEx/zAx + Mf8xMjL/MjMz/zIzM/8zNDT/NDU1/zQ1Nf81Njb/NTY2/zY4OP83ODj/Nzg4/zg5Of84OTn/ODo6/zk6 + Ov85Ozv/Ojs7/zs8PP87PDz/Ozw9/z0+Pv8/QED/QUNC/0JEQ/9cXl3/ioqL/5ubm/+1tbT/z8/O/9vc + 2//c3dz/goSD/yYpJ/8uMS//MzU0/zc4OP85Ozr/Ozw8/zo8PP86Ozv/OTo6/zk6Ov84OTn/ODk5/zc4 + OP83ODj/Njg4/zU2Nv81Njb/NDU1/zQ1Nf8zNDT/MjMz/zIzM/8xMjL/MDIy/zAxMf8vMDD/LjAw/y4v + L/8tLi7/LC0t/ywtLf8rLCz/Kiws/yorK/8pKin/KCkp/ycpKP8nKCj/Jign/yYnJ/8lJyb/JCYl/yQm + Jf8jJST/IiQk/yIkI/8hIyP/ISMj/yEjIv8gIiP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMjdCEj + IwAhIyMAAAAAACEjIwAhIyMAISMjASEjI40hIyP/ISMj/yEjI/8hIyP/ISMj/yAiI/8gIiP/ISMi/yEj + I/8iJCP/IiQk/yMlJP8kJSX/JCYl/yQmJv8lJyb/Jicn/ycoKP8nKCj/KCko/ygqKf8pKir/Kisq/yss + LP8rLCz/LC0t/ywtLf8tLi7/Li8v/y4wMP8vMDD/MDEx/zAyMv8xMjL/MjMz/zIzM/8zNDT/NDU1/zQ1 + Nf81Njb/NTY2/zY3N/82ODj/Nzg4/zc4OP84OTn/ODk5/zk6Ov85Ojr/OTs7/zo7O/87PDz/PD49/z5A + P/9BQkL/QkRD/2JkY/+Gh4f/i4uL/56en/+1tbX/ysrJ/9HS0f99fn3/Jykn/y4wLv8yNDP/Njc3/zg5 + Of85Ojr/OTo6/zk6Ov84OTn/ODk5/zc5Of83ODj/Njg4/zY3N/81Njb/NTY2/zQ1Nf80NTX/MzQ0/zIz + M/8yMzP/MTIy/zAyMv8wMTH/LzAw/y4wMP8uLy//LS4u/ywtLf8sLS3/Ky0s/yssLP8qKyv/KSoq/ygq + Kf8oKSn/Jyko/ycoKP8mJyf/JScm/yQmJv8kJiX/JCUl/yMlJP8iJCT/IiQj/yEjI/8hIyL/ISMi/yAi + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyN9ISMjACEjIwAAAAAAISMjACEjIwAhIyMDISMjlSEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yAiI/8hIyL/ISMj/yEjI/8iJCP/IiQk/yMlJP8kJSX/JCYl/yUn + Jv8lJyb/Jign/ycoKP8nKSj/KCkp/ygqKf8pKyr/Kiwr/yssLP8rLSz/LC0t/y0tLf8tLi7/Li8v/y4w + MP8vMTH/MDEx/zAyMv8xMjL/MjMz/zIzM/8zNDT/MzU1/zQ1Nf80NTX/NTY2/zY3N/82ODj/Nzg4/zc4 + OP83OTn/ODk5/zg5Of84Ojr/OTo6/zk7O/87PTz/PT8//0BCQf9BQkL/aGpp/6usq/+QkJD/jY2O/5eY + mP+lpaX/vb69/3R2dP8lKCb/LC8t/zAyMv80Njb/Nzg4/zg5Of84OTn/ODk5/zg5Of83ODj/Nzg4/zY4 + OP82Nzf/NTY2/zU2Nv80NTX/NDU1/zM0NP8yMzP/MjMz/zEyMv8wMjL/MDEx/y8xMf8uMDD/Li8v/y0v + Lv8tLi7/LC0t/ystLP8rLCz/Kiwr/yoqKv8pKir/KCkp/ycpKP8nKCj/Jign/yYnJ/8lJyb/JCYm/yQl + Jf8jJST/IiUk/yIkJP8iJCP/ISMj/yEjIv8gIiP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I4AhIyMAISMjAAAAAAAhIyMAISMjACEjIwQhIyOYISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ICIj/yEj + I/8hIyL/ISMj/yIkI/8iJCT/IyUk/yQlJf8kJiX/JCYm/yUnJv8mJyf/Jign/ycpKP8nKSj/KCkp/ykq + Kf8qKyr/Kiwr/yssLP8rLSz/LC0t/y0uLv8tLy7/Li8v/y4wMP8vMTH/MDEx/zAyMv8xMjL/MjMz/zIz + M/8zNDT/MzU1/zQ1Nf80NTX/NTY2/zU2Nv82Nzf/Njg4/zc4OP83ODj/Nzk5/zg5Of84OTn/ODo6/zo7 + O/88PT3/PkBA/0BBQf9eX17/xcbF/7m6uv+BgYH/eXp6/5+fn//Kysr/aGlo/yIlIv8pLCr/Li8v/zIz + M/81Njb/Nzg4/zg5Of83ODj/Nzg4/zY4OP82Nzf/NTc3/zU2Nv80NTX/NDU1/zQ1Nf8zNDT/MjMz/zIz + M/8xMjL/MDIy/zAxMf8vMTH/LjAw/y4vL/8tLy7/LS4u/ywtLf8sLS3/Kyws/yosK/8qKyr/KSoq/ygq + Kf8nKSj/Jygo/yYoJ/8mJyf/JScm/yQmJv8kJiX/JCUl/yMlJP8iJCT/IiQj/yEjI/8hIyL/ICIi/yAi + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMjgCEjIwAhIyMAISMjACEjIwAhIyMAISMjBCEj + I5ghIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ICIj/yEjIv8hIyP/ISMj/yIkI/8iJCT/IyUk/yQl + Jf8kJiX/JSYm/yUnJv8mJyf/Jygo/ycpKP8oKSn/KCop/ykqKv8qKyr/Kiwr/yssLP8sLS3/LC0t/y0u + Lv8tLy7/Li8v/y4wMP8vMTH/MDEx/zAxMf8xMjL/MjMz/zIzM/8zNDT/MzQ0/zQ1Nf80NTX/NDU1/zU2 + Nv81Njb/Njc3/zY4OP83ODj/Nzg4/zc5Of84OTn/OTo6/zo7PP89Pj7/PkA//1ZYV/+trq3/oqOi/1lb + Wf9TVVT/hYWF/6urq/9WVlb/HiEf/yYoJ/8rLSz/MDIx/zQ1Nf82Nzf/Nzg4/zY4OP82Nzf/NTY2/zU2 + Nv81Njb/NDU1/zQ1Nf8zNTX/MzQ0/zIzM/8yMzP/MTIy/zAxMf8wMTH/LzEx/y4wMP8uLy//LS8u/y0u + Lv8sLS3/LC0t/yssLP8rLCz/Kisr/ykqKv8oKin/KCkp/ycpKP8nKCj/Jign/yYnJv8kJib/JCYl/yQm + Jf8jJST/IiQk/yIkI/8hIyP/ISMj/yEjIv8gIiP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyOIISMjACEjIwAhIyMAISMjACEjIwAhIyMGISMjnCEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8gIiP/ISMj/yEjIv8hIyP/IiQj/yIkJP8iJST/JCUl/yQmJf8kJib/JScm/yYnJv8mKCf/Jygo/ycp + KP8oKSn/KCop/ykqKv8qKyv/Kyws/yssLP8sLS3/LC0t/y0uLv8tLy7/Li8v/y4wMP8vMDD/MDEx/zAx + Mf8xMjL/MTIy/zIzM/8yMzP/MzQ0/zM1Nf80NTX/NDU1/zU2Nv81Njb/NTY2/zY3N/82Nzf/Njg4/zY4 + OP83OTj/ODo6/zo8O/86PDv/V1lY/7y8vP+jo6P/cnNy/3BxcP+AgYD/nZ2d/0VGRv8aHBv/IyUk/ygq + Kf8uLy//MjQ0/zU3N/82Nzf/NTY2/zU2Nv81Njb/NDU1/zQ1Nf8zNTX/MzQ0/zI0NP8yMzP/MjMz/zEy + Mv8wMTH/MDEx/y8xMf8uMDD/Li8v/y0vLv8tLi7/LC0t/ywtLf8rLCz/Kyws/yorK/8pKir/KCop/ygp + Kf8nKSj/Jygo/yYoJ/8mJyf/JScm/yQmJv8kJiX/JCUl/yMlJP8iJCT/IiQj/yEjI/8hIyL/ISMj/yAi + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI40hIyMBISMjACEjIwAhIyMAISMjACEj + IwchIyOfISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8gIiP/ISMi/yEjI/8hIyP/IiQj/yIk + JP8jJST/JCUl/yQmJf8kJib/JScm/yYnJ/8mKCf/Jygo/ycpKP8oKSn/KCop/ykqKv8qKyv/Kyws/yss + LP8sLS3/LC0t/y0uLv8tLy7/Li8v/y4wMP8vMDD/MDEx/zAxMf8xMjL/MTIy/zIzM/8yMzP/MzQ0/zM0 + NP80NTX/NDU1/zQ1Nf81Njb/NTY2/zU2Nv82Nzf/Njc3/zY3N/82ODj/Nzk5/zY4N/9sbmz/0tPS/7Gx + sf+XmJj/k5SU/3t8e/+bm5z/REVF/xQVFP8eHx//JCUl/yssLP8wMTH/NDU1/zU2Nv80NTX/NDU1/zQ1 + Nf80NTX/MzQ0/zM0NP8yMzP/MjMz/zEyMv8xMjL/MDEx/zAxMf8vMDD/LjAw/y4vL/8tLy7/LS4u/ywt + Lf8sLS3/Kyws/yssLP8qLCv/KSoq/ygqKf8oKSn/Jyko/ycoKP8mKCf/Jicn/yUnJv8kJib/JCYl/yQl + Jf8jJST/IiQk/yIkI/8hIyP/ISMi/yEjIv8gIiP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMjjSEjIwEhIyMAISMjACEjIwAhIyMAISMjByEjI58hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yAiI/8gIiP/ISMi/yEjI/8iJCP/IiQj/yIkJP8jJST/JCUl/yQmJf8lJib/JScm/yYn + J/8mKCf/Jygo/ycpKP8oKSn/KCop/ykqKv8qLCv/Kyws/yssLP8sLS3/LC0t/y0uLv8tLy7/Li8v/y4w + MP8vMDD/LzEx/zAxMf8wMjL/MTIy/zIzM/8yMzP/MjMz/zM0NP8zNDT/MzU1/zQ1Nf80NTX/NDU1/zU2 + Nv81Njb/NTY2/zU3Nv80Nzb/OTw7/5OVlP/V1tX/t7e3/5qam/+NjY7/dnd3/8DBwP9pamr/FRYV/xka + Gv8hIiL/KCkp/y8wL/8yMzP/NDU1/zQ1Nf80NTX/MzQ0/zM0NP8yMzP/MjMz/zEzM/8xMjL/MDIy/zAx + Mf8vMTH/LzAw/y4wMP8uLy//LS8u/y0uLv8sLS3/LC0t/yssLP8rLCz/Kiwr/yoqKv8oKir/KCkp/ycp + KP8nKCj/Jign/yYnJ/8lJyb/JSYm/yQmJf8kJSX/IyUk/yIkJP8iJCT/IiQj/yEjI/8hIyL/ICIj/yAi + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyOUISMjAyEjIwAhIyMAISMjACEj + IwAhIyMJISMjpiEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yAiI/8hIyL/ISMi/yEj + I/8iJCP/IiQk/yMlJP8kJST/JCYl/yQmJf8lJyb/Jicm/yYnJ/8nKCj/Jyko/ycpKP8oKSn/KCop/yor + Kv8qKyv/Kyws/yssLP8sLS3/LC0t/y0uLv8tLy7/Li8v/y4wMP8vMDD/LzEx/zAxMf8wMTH/MTIy/zEy + Mv8xMzP/MjMz/zIzM/8zNDT/MzQ0/zM1Nf80NTX/NDU1/zQ1Nf80NjX/NDc2/zM1NP9UVlX/pqem/8XF + xf/AwcD/j5CQ/39/f/94eXj/tre2/4GCgf8qKyr/FhcX/yAgIP8nKCf/LS4u/zEyMv8zNDT/MzQ0/zM0 + NP8yMzP/MjMz/zIzM/8xMjL/MTIy/zAxMf8wMTH/LzEx/y8wMP8uMDD/Li8v/y0vLv8tLi7/LC0t/ywt + Lf8rLCz/Kyws/yosK/8qKyr/KSoq/ygqKf8nKSj/Jyko/ycoKP8mKCf/JScm/yUnJv8kJib/JCYl/yQl + Jf8jJST/IiQk/yIkI/8hIyP/ISMj/yEjIv8gIiP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI5ghIyMEISMjACEjIwAhIyMAISMjACEjIwohIyOqISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ICIj/yAiI/8hIyL/ISMj/yEjI/8iJCP/IiQk/yMlJP8kJSX/JCYl/yQm + Jv8lJyb/JScm/yYoJ/8nKCj/Jyko/ygpKf8oKSn/KCop/yorKv8qKyv/Kyws/yssLP8sLS3/LC0t/ywt + Lf8tLi7/LS8v/y4vL/8uMDD/LzAw/y8xMf8wMTH/MDEx/zEyMv8xMjL/MTMz/zIzM/8yMzP/MjMz/zM0 + NP8zNDT/MzU1/zQ2Nf80Njb/NDc2/3d5eP+mpqb/pqam/7Gysv+EhIT/dHRz/3Nzcv+Ghob/ent7/0lK + Sv8XFxf/Hh8f/yUmJv8sLS3/MDAw/zIzM/8yMzP/MjMz/zIzM/8xMjL/MTIy/zAxMf8wMTH/LzEx/y8w + MP8uMDD/Li8v/y4vL/8tLi7/LC4t/ywtLf8sLS3/Kyws/yssLP8qLCv/Kisq/ygqKv8oKin/KCkp/ycp + KP8nKCj/Jign/yYnJ/8lJyb/JCYm/yQmJf8kJSX/IyUk/yIkJP8iJCP/ISMj/yEjI/8hIyL/ICIj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMjmCEjIwQhIyMAISMjACEj + IwAhIyMAISMjCiEjI6shIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ICIj/yAi + I/8hIyL/ISMj/yEjI/8iJCP/IiQk/yMlJP8kJSX/JCYl/yQmJv8lJyb/Jicn/yYoJ/8nKCj/Jyko/ygp + Kf8oKSn/KCop/ykqKv8qKyv/Kyws/yssLP8rLSz/LC0t/ywtLf8tLi7/LS8u/y4vL/8uMC//LjAw/y8x + Mf8vMTH/MDEx/zAyMv8wMjL/MTIy/zEyMv8yMzP/MjMz/zIzM/8yNDT/MzU0/zQ2Nf82OTj/hoeG/6an + p/+pqan/rKys/5mamv+Xl5f/gYKB/4WGhf98fX3/WFlY/xoaGv8dHh7/JCUl/yorK/8uLy//MDEx/zEy + Mv8xMjL/MTIy/zAxMf8wMTH/LzEx/y8wMP8vMDD/LjAw/y4vL/8tLy7/LS4u/ywtLf8sLS3/LC0t/yss + LP8rLCz/Kisr/yorKv8pKir/KCop/ygpKf8nKSj/Jygo/yYoJ/8mJyf/JScm/yQmJv8kJiX/JCUl/yMl + JP8iJCT/IiQj/yIkI/8hIyP/ISMi/yAiIv8gIiP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyOeISMjBiEjIwAhIyMAISMjACEjIwAhIyMNISMjsyEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ICIj/yEjIv8hIyL/ISMj/yIkI/8iJCT/IiQk/yMl + JP8kJSX/JCYl/yQmJv8lJyb/Jicn/yYoJ/8nKCj/Jyko/ygpKf8oKSn/KCop/ykqKv8qKyv/Kyws/yss + LP8rLCz/LC0t/ywtLf8tLS7/LS4u/y0vLv8uLy//LjAw/y4wMP8vMDD/LzEx/zAxMf8wMTH/MDIy/zEy + Mv8xMjL/MTIy/zI0NP8zNTT/NDY2/zQ3Nf92eHf/rK2t/6qqq/+ioqL/ycrJ/9na2P+SkpH/hISE/3x9 + fP9RUlL/GBkZ/xwdHf8iJCP/KCop/y0uLv8vMDD/MDEx/zAxMf8wMTH/LzEx/y8xMf8vMDD/LjAw/y4v + L/8uLy//LS4u/ywuLf8sLS3/LC0t/ystLP8rLCz/Kywr/yorK/8pKir/KSoq/ygqKf8nKSj/Jyko/yco + KP8mKCf/Jicn/yUnJv8kJib/JCYl/yQlJf8jJST/IiQk/yIkJP8iJCP/ISMj/yEjIv8hIyL/ICIj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI58hIyMHISMjACEj + IwAhIyMAISMjACEjIw4hIyO1ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ICIj/yEjIv8hIyL/ISMj/yIkI/8iJCT/IiQk/yMlJP8kJSX/JCYl/yQmJv8lJyb/Jicn/yYo + J/8nKCj/Jyko/ycpKP8oKSn/KCop/ykqKv8qKyr/Kiwr/yssLP8rLCz/LC0t/ywtLf8sLS3/LS4u/y0v + Lv8uLy//Li8v/y4wMP8uMDD/LzAw/y8xMf8wMTH/MDEx/zAxMf8xMjL/MTMz/zM1NP80Nzb/NDc2/01P + Tv+foJ//tLW0/6mpqf/Y2Nj/5eXl/5mZmf+Pj4//j5CQ/0tMTP8UFRX/Gx0c/yEiIv8nKCj/Ky0t/y4v + L/8vMDD/LzEx/y8wMP8uMDD/LjAw/y4vL/8uLy//LS4u/y0uLv8sLS3/LC0t/ywtLf8rLCz/Kyws/yos + K/8qKyr/KSoq/ygqKf8oKSn/Jyko/ycpKP8nKCj/Jign/yYnJ/8lJyb/JCYm/yQmJf8kJSX/IyUk/yMl + JP8iJCT/IiQj/yEjI/8hIyL/ISMi/yAiI/8gIiP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMjoiEjIwchIyMAISMjACEjIwAhIyMAISMjDyEjI7ghIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8gIiP/ICIj/yEjIv8hIyP/ISMj/yIk + I/8iJCT/IyQk/yMlJP8kJSX/JCYl/yQmJv8lJyb/Jicn/yYoJ/8nKCj/Jyko/ycpKP8oKSn/KCop/ykq + Kv8qKyr/Kisr/yosLP8rLCz/Kyws/ywtLf8sLS3/LC0t/y0uLv8tLy7/LS8v/y4vL/8uLy//LjAw/y4w + MP8vMTH/LzEx/zAyMv8xMzP/MzU0/zU3Nv81ODf/f4GA/7Gzsf+cnZz/lJSU/5SUlP+RkZH/j5CQ/52d + nf9xcnH/NDY1/xUXF/8aGxv/ICEh/yUmJv8qKyv/LS4u/y0vL/8uMDD/LjAw/y4vL/8uLy//LS8u/y0u + Lv8sLS3/LC0t/ywtLf8rLCz/Kyws/yssLP8qKyv/Kisq/ykqKv8oKin/KCkp/ycpKP8nKSj/Jygo/yYo + J/8mJyf/JScm/yUmJv8kJiX/JCYl/yMlJP8jJST/IiQk/yIkI/8iJCP/ISMj/yEjIv8gIiP/ICIj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyOpISMjCiEj + IwAhIyMAISMjACEjIwAhIyMRISMjvyEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8gIiP/ICIj/yEjIv8hIyP/IiQj/yIkI/8iJCT/IyUk/yMlJP8kJSX/JCYl/yQm + Jv8lJyb/Jicm/yYnJ/8nKCj/Jygo/ycpKP8oKSn/KCop/ykqKf8pKir/Kisr/yosK/8rLCz/Kyws/yst + LP8sLS3/LC0t/ywtLf8tLi7/LS4u/y0vLv8uLy//LjAv/y4wMP8uMDD/MDEx/zEzM/8zNTT/NTc2/zo9 + PP9rbWz/l5iX/5eXlv9mZmb/Wlpb/1paW/9dXV3/a2tr/2hoaP9ycnL/Kiws/xcZGf8eIB//IyUl/ygq + Kv8sLS3/LS8v/y4vL/8tLy7/LS4u/y0uLv8sLi3/LC0t/ywtLf8sLS3/Kyws/yssLP8qLCv/Kisq/ykq + Kv8pKir/KCop/ygpKf8nKSj/Jygo/yYoJ/8mKCf/Jicn/yUnJv8kJib/JCYl/yQlJf8jJST/IyUk/yIk + JP8iJCP/ISMj/yEjI/8hIyL/ICIi/yAiI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI6ohIyMKISMjACEjIwAhIyMAISMjACEjIxEhIyO/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8gIiP/ICIi/yEj + Iv8hIyP/ISMj/yIkI/8iJCT/IyUk/yMlJP8kJSX/JCYl/yQmJv8lJyb/Jicm/yYnJ/8mKCf/Jygo/ycp + KP8nKSj/KCkp/ygqKf8pKir/Kisq/yorK/8qLCv/Kyws/yssLP8rLSz/LC0t/ywtLf8sLS3/LS4u/y0u + Lv8tLi7/LS8u/y4vL/8vMTD/MTMy/zM1NP8zNjT/YmRj/6aop/95eXn/aGho/15eXv9dXV7/XV1d/1tb + W/9+fn3/jo+P/1xcXP8mKCf/FxkY/x0eHv8iJCP/Jygo/yosK/8sLS3/LS4u/ywuLf8sLS3/LC0t/ywt + Lf8sLS3/Kyws/yssLP8qLCv/Kisr/yorKv8pKir/KCop/ygpKf8oKSn/Jyko/ycoKP8mKCf/Jicn/yYn + J/8lJyb/JCYm/yQmJf8kJSX/IyUk/yMlJP8iJCT/IiQj/yEjI/8hIyP/ISMi/yEjI/8gIiP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMjsSEj + IwwhIyMAISMjACEjIwAhIyMAISMjFCEjI8chIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8gIiP/ICIi/yEjIv8hIyP/ISMj/yIkI/8iJCT/IyUk/yMl + JP8kJSX/JCYl/yQmJv8lJyb/JScm/yYnJ/8mKCf/Jygo/ycpKP8nKSj/KCkp/ygqKf8pKin/KSoq/yor + Kv8qKyv/Kiwr/yssLP8rLSz/Ky0s/ywtLf8sLS3/LC0t/ywtLf8tLi7/Li8v/y8wMP8xMzL/MzU0/zc5 + N/9YW1n/iouJ/5eXlv9wcHD/W1tc/11dXf9dXF3/W1tc/2BgYP9paWn/ampq/2JjY/8eHx//Gxwc/yEi + Iv8lJyb/KSoq/yssLP8sLS3/LC0t/ywtLf8rLSz/Kyws/yssLP8rLCz/Kiwr/yorKv8pKir/KSoq/ygq + Kf8oKSn/Jyko/ycpKP8nKCj/Jign/yYnJ/8lJyb/JScm/yQmJv8kJiX/JCUl/yMlJP8jJST/IiQk/yIk + I/8hIyP/ISMj/yEjIv8hIyL/ICIj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyO1ISMjDiEjIwAhIyMAISMjACEjIwAhIyMUISMjyiEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8gIiP/ISMj/yEjIv8iJCP/ISMj/yIkI/8iJCT/IyUk/yMlJP8kJSX/JCYl/yQmJv8lJyb/JScm/yYn + J/8mJyf/Jygo/ycoKP8nKSj/Jykp/ygpKf8oKin/KCop/ykqKv8qKyr/Kisr/yosK/8rLCz/Kyws/yss + LP8sLS3/LC0t/ywuLf8tLy7/LzAw/zEzMv8yNTP/S01M/6ChoP+Cg4L/Z2dn/11dXf9bW1v/W1xc/1xb + W/9bW1v/Wlpb/4WFhf9+fn7/SUlJ/yAhIf8aGxv/HyEg/yQlJf8oKSn/Kisr/yssLP8rLCz/Kyws/yss + LP8rLCv/Kisr/yorKv8pKir/KSop/ygqKf8oKSn/Jyko/ycpKP8nKSj/Jygo/yYoJ/8mJyf/JScm/yUn + Jv8kJib/JCYl/yQlJf8jJST/IyUk/yIkJP8iJCP/ISMj/yEjI/8hIyL/ISMi/yAiI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I7ghIyMPISMjACEjIwAhIyMAISMjACEjIxUhIyPNISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8gIiP/ISMi/yEjIv8hIyP/ISMj/yIk + I/8iJCT/IiQk/yMlJP8kJSX/JCYl/yQmJf8lJib/JScm/yYnJv8mJyf/Jign/ycoKP8nKCj/Jyko/ygp + Kf8oKSn/KCop/ykqKf8pKir/Kisq/yorK/8qLCv/Kywr/yssLP8rLCz/LC0t/y0uLv8vMTD/MjQz/zQ2 + Nf9MTk3/eXp5/4+Pjv95eXn/WVlZ/1paW/9aWlv/W1tb/1paWv9ZWVn/YF9g/2VlZf9sbGz/T1BQ/xoc + G/8eHx//IyQk/ycoJ/8pKir/Kisr/yssLP8qLCv/Kisr/yorKv8pKir/KSop/ygqKf8oKSn/Jyko/ycp + KP8nKSj/Jygo/yYoJ/8mJyf/Jicn/yUnJv8lJib/JCYl/yQmJf8kJSX/IyUk/yIkJP8iJCT/IiQj/yEj + I/8hIyP/ISMi/yEjIv8gIiP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMjvyEjIxEhIyMAISMjACEjIwAhIyMAISMjFiEj + I9EhIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8gIiP/ISMi/yEjIv8hIyP/ISMj/yIkI/8iJCT/IiQk/yMlJP8kJSX/JCUl/yQm + Jf8kJib/JScm/yUnJv8mJyf/Jicn/yYoJ/8nKCj/Jygo/ycpKP8oKSn/KCkp/ygqKf8pKin/KSoq/ykr + Kv8qKyr/Kisr/yosK/8rLSz/LS8u/zAxMf8yNDP/PD89/5GSkf+Njo3/aGlp/11dXf9aWlr/W1tb/1ta + W/9bW1v/Wlpb/1lZWv9fXl//h4iI/2tra/86Ozv/Hh8f/x0eHv8iIyL/JScm/ygqKf8pKyr/Kisq/ykq + Kv8pKir/KSop/ygqKf8oKSn/KCkp/ycpKP8nKSj/Jygo/yYoJ/8mKCf/Jicn/yUnJv8lJyb/JCYm/yQm + Jf8kJiX/JCUl/yMlJP8iJCT/IiQk/yIkI/8hIyP/ISMj/yEjIv8hIyL/ICIj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyPAISMjESEjIwAhIyMAISMjACEjIwAhIyMZISMj0yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8gIiP/ICIi/yEj + Iv8hIyP/ISMj/yIkI/8iJCT/IiQk/yMlJP8jJST/JCUl/yQmJf8kJib/JSYm/yUnJv8mJyf/Jicn/yYo + J/8mKCf/Jygo/ycpKP8nKSj/Jyko/ygpKf8oKSn/KCop/ykqKv8pKir/Kisr/ystLP8tLy7/MDIx/zM1 + NP9FSEb/a21r/4OEg/9/f3//Wlpa/1paWv9bW1v/W1tb/1tbW/9aW1v/Wlpa/1lZWv9iYmP/Z2dn/29w + cP8/QED/Ghwb/yAiIf8kJSX/Jygo/ygqKf8pKin/KCop/ygpKf8oKSn/KCkp/ycpKP8nKSj/Jygo/yco + KP8mKCf/Jicn/yYnJv8lJyb/JSYm/yQmJf8kJiX/JCUl/yMlJf8jJST/IiQk/yIkJP8iJCP/ISMj/yEj + I/8hIyL/ISMj/yAiI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI8khIyMUISMjACEjIwAhIyMAISMjACEj + Ix4hIyPZISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8gIiP/ICIj/yEjIv8iJCP/ISMj/yIkI/8iJCP/IiQk/yMl + JP8jJST/JCUl/yQlJf8kJiX/JCYm/yUnJv8lJyb/Jicn/yYnJ/8mKCf/Jign/ycoKP8nKSj/Jyko/ycp + KP8oKSn/KCop/ygqKf8pKyr/Ky0s/y0vLv8xMzL/NDY1/4CBgP+ampn/bGxs/1xcXP9ZWFn/WVla/1pa + Wv9bW1v/W1tb/1tbW/9aWlr/WVlZ/2VlZf+Ghob/XV1d/zIzM/8dHx7/HiAf/yMkI/8lJyb/Jygo/ygp + Kf8oKSn/Jyko/ycpKP8nKSj/Jygo/ycoKP8mKCf/Jicn/yYnJ/8lJyb/JSYm/yQmJv8kJiX/JCUl/yQl + Jf8jJST/IyUk/yIkJP8iJCP/IiQj/yEjI/8hIyP/ISMi/yEjIv8gIiP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMjyiEjIxQhIyMAISMjACEjIwAhIyMAISMjICEjI9shIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8gIiP/ICIj/yEjIv8hIyL/ISMj/yEjI/8iJCP/IiQk/yIkJP8jJST/IyUk/yQlJf8kJiX/JCYl/yQm + Jv8lJyb/JScm/yUnJ/8mJyf/Jign/yYoJ/8nKCj/Jygo/ycpKP8nKSj/KCkp/ykqKv8rLSz/LjAv/zAz + Mv8/QkH/Y2Rj/3t8e/+CgoL/W1tc/1hXWP9ZWVn/Wlpa/1paWv9bW1v/W1tb/1tbW/9aWlr/WVla/2Vl + Zf9qa2v/bW1t/zAxMP8cHR3/ISMi/yQmJf8mKCf/Jyko/ycpKP8nKSj/Jygo/ycoKP8mKCf/Jicn/yYn + J/8lJyb/JScm/yQmJv8kJiX/JCYl/yQlJf8kJSX/IyUk/yIkJP8iJCT/IiQj/yEjI/8hIyP/IiQi/yEj + Iv8gIiP/ICIj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyPPISMjFiEjIwAhIyMAISMjACEj + IwAhIyMmISMj4iEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8gIiP/ICIj/yEjIv8hIyL/ISMj/yEj + I/8iJCP/IiQj/yIkJP8jJST/IyUk/yQlJf8kJSX/JCYl/yQmJf8kJib/JSYm/yUnJv8lJyb/Jicn/yYo + J/8mKCf/Jygo/ycoKP8oKSn/KSsq/ywuLf8vMTD/MDMy/2ttbP+hoqH/c3Nz/11dXf9WVlb/V1dX/1hY + Wf9ZWVr/Wlpb/1tbW/9bW1z/W1tb/1taW/9YWFn/bW1t/4CAgP9PUFD/Li8u/x0fHv8fISD/IyQk/yUm + Jv8mKCf/Jign/yYoJ/8mJyf/Jicn/yYnJ/8lJyb/JScm/yQmJv8kJiX/JCYl/yQlJf8kJSX/IyUk/yMl + JP8iJCT/IiQj/yIkI/8hIyP/IiQj/yEjIv8hIyL/ICIj/yAiI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI9EhIyMXISMjACEjIwAhIyMAISMjACEjIyghIyPkISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ICIj/yAiI/8hIyL/IiQj/yEjI/8hIyP/IiQj/yIkJP8iJCT/IyUk/yMl + JP8jJSX/JCUl/yQmJf8kJiX/JCYm/yUmJv8lJyb/JScm/yYnJ/8mKCf/Jign/ycpKP8qKyv/LS4u/zAy + Mf89Pz7/X2Ff/3BxcP+BgYH/X19f/1VVVf9WV1f/WFhY/1lZWv9aWlr/W1tb/1tbW/9bW1v/Wlpb/1lZ + Wv9ZWVr/aGho/3BwcP9mZmb/Jicn/x0fHv8hIyL/IyUk/yUmJv8mJyf/Jicn/yUnJv8lJyb/JScm/yQm + Jv8kJyX/JCYl/yQmJf8kJSX/IyUk/yMlJP8iJCT/IiQk/yIkI/8iJCP/ISMj/yIkIv8hIyL/ISMj/yAi + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj1yEjIxwhIyMAISMjACEj + IwAhIyMAISMjLiEjI+ghIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ICIj/yAi + I/8hIyL/ISMi/yIkI/8hIyP/IiQj/yIkI/8iJCT/IiQk/yMlJP8jJSX/JCUl/yQlJf8kJiX/JCYl/yQm + Jv8lJib/JScm/yUnJv8mKCf/Jyko/yorK/8uMC//LzEw/1lbWf+lpqT/fn9+/15eXv9UVFT/VVVW/1ZW + V/9YWFj/WFlZ/1lZWv9aWlr/Wlpa/1paWv9ZWVn/WVlZ/1ZXV/9ycnL/dHR0/0RERP8sLi3/HR8e/yAh + If8iJCP/JCUl/yQmJf8lJib/JCYm/yQmJv8kJiX/JCYl/yQmJf8kJSX/IyUk/yMlJP8iJCT/IiQk/yIk + I/8iJCP/ISMj/yEjI/8hIyL/ISMi/yAiI/8gIiP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyPaISMjHyEjIwAhIyMAISMjACEjIwAhIyMxISMj6SEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ICIj/yAiI/8hIyL/ISMi/yEjIv8hIyP/ISMj/yIk + I/8iJCP/IiQk/yIkJP8jJST/IyUk/yMlJf8kJSX/JCUl/yUmJf8kJiX/JCYm/yUnJ/8nKSn/Ky0s/y8x + MP85Ozr/XF5d/2dpaP97fHv/Y2Nj/1NTU/9VVFX/VVVV/1ZWVv9XV1j/WFhY/1hZWf9ZWVn/WFhZ/1hY + WP9XV1f/VlZW/1dXV/9paWn/dXV2/1xdXf8gIiH/HR8e/yAiIf8iJCT/IyUk/yQmJf8kJiX/JCYl/yQl + Jf8kJSX/IyUl/yMlJP8iJCT/IiQk/yIkI/8iJCP/ISMj/yIkI/8iJCP/ISMi/yEjIv8gIiP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI+EhIyMlISMjACEj + IwAhIyMAISMjACEjIzghIyPsISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8gIiP/ISMi/yEjIv8iJCL/ISMj/yEjI/8iJCP/IiQj/yIkJP8iJCT/IyUl/yMl + JP8jJST/JCUl/yQlJf8kJiX/Jign/ygqKf8sLi3/LzEw/0pMS/+foJ//iYqJ/2BhYf9SUlL/U1NT/1RU + VP9UVFX/VVVV/1ZWVv9XV1f/WFhY/1hYWP9YWFj/V1dX/1dWV/9WVlb/VVVV/3V1df9paWn/PT4+/ywu + Lf8cHh3/HiAf/yAiIv8iJCP/IyQk/yMlJP8jJST/IyUk/yMlJP8iJCT/IiQk/yIkI/8iJCP/ISMj/yEj + I/8iJCP/ISMi/yEjIv8gIiP/ICIj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj5CEjIyghIyMAISMjACEjIwAhIyMAISMjPSEjI+0hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yAiI/8gIiP/ICIj/yEj + Iv8hIyP/IiQj/yEjI/8hIyP/IiQj/yIkJP8iJCT/IiQk/yMkJP8jJST/IyUk/yQmJf8mKCf/KSsq/y0v + Lv82ODf/XV9e/2NlY/9zdHT/ZmZn/1FRUv9TU1P/VFRU/1VVVf9VVVX/VlZW/1dXV/9XV1j/V1dY/1dX + WP9XV1f/VlZX/1ZWVv9VVVX/V1dX/29vb/95enr/UlNT/xsdHP8cHh3/HyAf/yAiIf8hIyP/IiQj/yIk + JP8iJCT/IiQk/yIkI/8iJCP/ISMj/yEjI/8iJCP/ISMi/yEjI/8gIiP/ICIj/yAiI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyPoISMjLSEj + IwAhIyMAISMjACEjIwAhIyNEISMj7yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ICIj/yAiI/8hIyL/ISMi/yIkI/8iJCP/ISMj/yIk + I/8iJCP/IiQk/yIkJP8jJST/JCYm/ycpKP8qLSz/LjAv/0FDQv+VlpX/k5ST/2dnZ/9RUVH/UlJT/1NT + U/9UVFT/VVVV/1ZVVv9WVlf/V1dX/1dXV/9YWFj/V1dY/1dXV/9XV1f/VlZW/1VVVf9VVVX/dnZ2/11d + Xf8+Pz7/LjAv/xocG/8cHx7/HiAg/yAiIf8hIyL/ISMi/yEjI/8iJCP/IiQj/yIkI/8iJCP/ISMi/yEj + I/8hIyP/ICIj/yAiI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI+khIyMxISMjACEjIwAhIyMAISMjACEjI0ohIyPxISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yAiI/8hIyP/ISMj/yEjIv8hIyL/IiQj/yIkI/8hIyP/IiQj/yMlJP8lJyb/KCop/ywu + Lf80NjX/YWNh/2NkY/9pamr/aGho/1BQUf9SUlL/U1NT/1RUVf9VVVb/VlZW/1ZWV/9XV1f/WFhY/1hY + WP9YWFj/V1dX/1ZWV/9VVVb/VFRU/1JSU/9XV1j/dnZ2/319fv9KS0v/GRsa/xsdHP8cHx7/HiAf/x8h + If8gIiL/ICIi/yEiIv8hIyL/ISMi/yEjIv8gIiP/ICIj/yAiI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj7CEj + IzkhIyMAISMjACEjIwAhIyMAISMjTyEjI/IhIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8gIiP/ICIj/yEj + Iv8hIyL/ISMi/yEjIv8hIyP/IyUk/yUnJ/8pLCv/LTAv/zs9PP+Ki4r/mpqa/21ubv9PT1D/UFBQ/1JS + Uv9TU1P/VFRU/1VVVf9VVVb/VlZW/1dXV/9XV1f/V1dX/1dXV/9WVlb/VlZW/1VVVf9UVFT/U1NT/1VV + Vf90dHT/U1RU/0NFRP8wMjH/GBsa/xsdHP8cHx7/HiAf/x8hIP8gIiH/ICIh/yEjIv8gIiL/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyPtISMjPyEjIwAhIyMAISMjACEjIwAhIyNXISMj9SEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ICIj/yAiI/8gIiP/ISMi/yIkI/8kJiX/Jyko/yst + Lf8yNDP/Y2Vk/2dpZ/9hYWH/aGho/09PT/9QUFD/UVFR/1JSU/9TU1T/VFRV/1VVVf9WVlb/VlZW/1dX + V/9WVlf/VlZW/1ZWVv9VVVX/VVVV/1NTVP9TUlP/UVFR/1lZWv99fX3/fn9//0JEQ/8XGRj/GRwb/xse + HP8cHx7/HiAf/x4hIP8fISH/HyEh/yAiIv8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I+8hIyNFISMjACEjIwAhIyMAISMjACEjI10hIyP3ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yAiIv8gIiP/IiQk/yQnJv8oKyr/LS8u/zc5OP99f33/nJ2b/3V1df9PT0//T09P/1BP + UP9RUVH/UlJT/1NTVP9UVFX/VVVV/1ZVVv9WVlb/V1dW/1ZWVv9WVlb/VlVW/1VVVf9UVFX/U1NU/1JS + U/9RUVL/VlZW/3BwcP9OTk7/TExM/zAyMf8XGhj/GRwb/xsdHP8cHh7/HiAf/x8gIP8fISH/ICIi/yAi + Iv8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj8SEjI0whIyMAISMjACEjIwAhIyMAISMjYiEj + I/khIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ICIi/yEjI/8jJSX/Jigo/yst + LP8wMjH/Z2hn/3BycP9bXFv/ZGRk/05OT/9PT1D/UFBQ/1FRUf9SUlP/VFRU/1VVVf9WVlb/VlZX/1ZW + V/9XV1f/V1dX/1ZWV/9WVlb/VVVV/1RUVf9TU1T/UlJT/1FRUv9PT0//XFxc/4SFhf97e3z/Ojs6/xcZ + GP8ZGxr/Ghwc/xwdHf8dHx7/HiAf/x8hIP8fISH/ICIi/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP0ISMjUyEjIwAhIyMAISMjACEjIwAhIyNoISMj+yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yAiIv8gIyL/IiQk/yQmJv8oKir/LS8v/zY4N/9wcXD/mZqZ/3x8fP9PUFD/TU1O/09P + T/9QUFH/UlJS/1NTU/9UVFT/VVVV/1ZWVv9WVlf/V1dX/1dXV/9XV1f/VlZX/1VWVv9VVVX/VFRU/1NT + U/9SUlL/UVFS/1BQUP9VVVb/aGho/0xMTP9YWVn/MTMz/xcZGP8ZGxv/Gh0c/xweHf8dIB//HiEg/x8h + If8gIiL/ICIi/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/YhIyNaISMjACEjIwAhIyMAISMjACEj + I3EhIyP9ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ICIi/yEjI/8jJSX/Jigo/yst + Lf8wMjH/amtr/3x9fP9YWFj/X19f/05OTv9OTk7/T09P/1BQUP9RUVL/UlJT/1RUVP9VVVX/VlZW/1ZW + V/9XV1f/V1dX/1ZWVv9VVlb/VVVW/1RUVf9UVFT/U1NT/1JSU/9SUlL/UFBR/01NTf9dXV7/iYmJ/3N0 + dP8zNTT/FxoY/xgbGv8aHRv/Gx4d/x0fHv8eIB//HiEg/x8hIf8gIiL/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj+CEjI2EhIyMAISMjACEjIwAhIyMAISMjeiEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yAiIv8gIyL/IiQk/yUnJ/8pKyv/LS8v/zc6Of9maGf/kpKS/4GBgf9QUFD/TExM/05O + Tv9OTk//T09Q/1FRUf9SUlL/U1NT/1RUVP9VVVX/VlZW/1ZWVv9WV1f/VlZX/1ZWVv9VVVX/VFVV/1RU + VP9TU1T/UlJS/1BQUf9PT1D/TU1O/1JSU/9hYWH/T09P/2NkZP8xMzL/FhkX/xkcGv8aHRz/HB4e/x0g + H/8eISD/HyEh/yAiIv8gIiL/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP6ISMjZyEjIwAhIyMAISMjACEj + IwAhIyOEISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ICIi/yEjI/8jJSX/Jyko/ysu + Lf8vMjH/a21s/4mKif9aWlr/W1tb/0xMTf9MTEz/TU1O/05OT/9PT0//UVFR/1JSUv9TU1P/VFRU/1VU + Vf9VVVX/VlZW/1ZWVv9VVVb/VVVV/1VVVf9UVFX/U1RU/1JSU/9RUVL/UFBQ/09PT/9NTU7/SkpK/2Bg + Yf+JiYr/aGho/y8yMP8ZHBr/GRsa/xodHP8cHh3/HR8f/x4gIP8fISH/HyEh/yAiIv8gIiP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/0hIyNvISMjACEjIwAhIyMAISMjASEjI44hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yAiIv8hIyP/IiQk/yUnJ/8pLCv/LjEw/zs+PP9hY2L/iImI/4OEhP9RUVH/S0tL/0xM + Tf9NTU7/Tk9P/09PUP9RUVH/UVFS/1NTU/9UVFT/VVVV/1VVVv9WVVb/VlZW/1VVVv9VVVX/VVVV/1RU + VP9TU1P/UlJS/1FRUf9QUFD/Tk5O/01NTf9LS0v/T09Q/1xcXP9VVVX/bm5u/zEzMv8XGhj/Gh0b/xse + HP8cHx7/HiAf/x8hIP8fISH/ICIi/yAiIv8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI3ohIyMAISMjACEj + IwAhIyMEISMjmCEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8gIiL/ICIi/yIkI/8kJiX/Jyop/ywu + Lv8wMzL/bnBv/5WWlf9eX17/VVVV/0tLS/9LTEz/TU1N/05OTv9PT0//UFBQ/1FRUf9SUlL/UlNT/1RU + VP9VVVX/VVVV/1ZWVv9WVlb/VVVV/1VVVf9UVFX/U1NU/1JSU/9RUVH/UFBQ/09PT/9NTU7/TExM/0tL + S/9ISEj/YmJi/4eHh/9bXFz/MTMy/xseHf8ZGxr/Gh0c/xweHf8dHx//HiEg/x8hIf8gIiH/ICIi/yAi + Iv8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMjhSEjIwAhIyMAISMjACEjIwchIyOhISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yAiIv8hIyP/IyUl/yYoJ/8qLCz/LjEw/0FEQ/9gYWD/eXp5/4GBgf9QUFD/SklK/0tL + TP9MTU3/Tk5O/09PT/9QUFD/UVFR/1JSUv9TU1P/U1RU/1RUVf9VVVX/VVVW/1VVVf9VVVX/VFRV/1RU + VP9TU1P/UlFS/1FQUf9QT1D/Tk5O/0xMTf9LS0z/SkpL/0lJSf9LS0z/WFdX/2BgYP93d3j/MjQz/xca + GP8aHRz/HB4d/x0fH/8eICD/HyEh/x8hIf8gIiL/ICIi/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyOQISMjASEj + IwAhIyMAISMjCyEjI6ohIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8gIiL/ICIi/yIkJP8kJib/KCoq/y0v + L/8xMzL/cHJx/5+fnv9lZmb/UVFR/0lJSf9KSUr/S0tL/0xMTP9OTk7/T09P/09PUP9RUVH/UlJS/1NT + U/9TU1P/VFRU/1RUVP9VVVX/VFRV/1RUVP9TU1P/U1NT/1JSUv9RUVH/T09Q/05OT/9NTU3/TExN/0tL + S/9KSkr/SUlJ/0ZGRv9gYGD/gICA/1BRUP83OTj/HyIg/xocG/8bHh3/HB8e/x4gH/8fISD/HyEh/yAi + Iv8gIiL/ICIi/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI5shIyMFISMjACEjIwAhIyMNISMjtSEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ICIi/yAiIv8hIyP/IyUl/yYpKP8rLS3/LzEx/0pMSv9jZWP/bW5t/3x9fP9QUFD/SEhI/0lJ + Sv9LS0v/TExM/01NTf9OTk7/T09Q/1BQUf9SUlL/UlJS/1NTU/9TU1P/U1NU/1NTVP9TU1P/U1NT/1JS + Uv9RUVL/UFBQ/09PUP9OT0//TU1O/0xNTf9LS0z/SkpL/0lJSf9ISEj/R0dH/0dHR/9VVVX/ampq/3t7 + fP8yNDP/GBsZ/xsdHP8cHh3/HSAf/x4gIP8fISH/HyEh/yAiIv8gIiL/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMjpSEj + IwkhIyMAISMjACEjIxEhIyPBISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8gIiL/ISMj/yIkJP8lJyf/KSsr/y4w + MP8yNDP/cHJw/6Okov9sbGz/Tk5O/0dHR/9ISEn/SUlK/0tLS/9MTEz/TU1N/05OTv9PT1D/UFBQ/1FR + Uf9SUlP/U1NT/1NTU/9TU1P/U1NT/1NTU/9SUlL/UVFS/1BQUf9QUFD/T09P/05OTv9NTE3/TEtM/0tL + S/9JSUr/SUlJ/0hISP9GRkb/RERE/1xdXf94eHj/SElJ/z5AP/8jJST/Ghwb/xweHf8dHx7/HiAg/x8h + If8fISH/ICIi/yAiIv8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyOwISMjDCEjIwAhIyMAISMjFSEjI88hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ICIi/yEjI/8iJCT/JCYm/ycpKf8sLi7/MDIy/1RWVf9rbWz/YWJi/3R0dP9NTU3/R0dH/0hI + SP9KSkr/S0tL/0xMTP9NTU3/Tk5O/09PT/9QUFD/UVFR/1FRUv9SUlL/UlJT/1JSUv9SUlL/UlJS/1FR + Uf9QUFH/T09Q/09PT/9OTk7/TU1N/0xMTP9LS0z/SkpK/0lJSf9ISEn/R0dH/0ZGRv9ERUX/Q0RE/1VW + Vf90dHT/eXp6/zAyMf8ZGxr/HB4d/x0fHv8eICD/HyEh/x8hIf8gIiL/ICIi/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I74hIyMQISMjACEjIwAhIyMfISMj3CEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yAiIv8gIiL/ISMj/yMlJf8mKCj/Kiws/y8x + Mf80NjX/bm9v/6Kjov9zdHP/SktL/0VFRf9HR0f/SEhI/0lJSf9KSkv/TExM/01NTf9OTk7/T09P/1BQ + UP9RUVH/UVFS/1JSUv9SUlL/UlFS/1FRUv9RUVH/UFBR/09PUP9PT0//Tk5O/01NTf9MTE3/TExM/0tL + S/9KSkr/SUlJ/0hISP9GR0f/RUVF/0RERP9BQkL/VlZW/21ubv9DREP/S01M/ykrKv8aHRz/HB8e/x0g + H/8fISD/HyEh/yAiIv8gIiL/ISMi/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMjzSEjIxUhIyMAISMjACEjIy8hIyPnISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ICIi/yEjI/8iJCT/JScm/ygqKv8tLy7/MTMz/2JjY/92eHf/VldW/2hpaP9JSUn/RUVF/0ZG + Rv9ISEj/SUlJ/0pKSv9LS0z/TExN/05OTv9PT0//T09Q/1BQUP9RUVH/UVFR/1FRUv9RUVL/UVFR/1BQ + Uf9QUFD/T09P/05OT/9OTU7/TU1N/0xMTP9LS0z/SkpL/0lJSv9ISUn/R0dH/0ZGRv9FRUX/Q0RE/0JC + Qv8/QED/U1NT/3x8ff90dHT/MDIx/xodG/8cHh3/HR8e/x4gH/8fISH/HyIh/yAiIv8gIiL/ISMi/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyPdISMjICEjIwAhIyMAISMjPiEjI+0hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yAiIv8hIyP/IiQj/yMlJf8nKSj/Ky0s/y8y + Mf83Ojn/aWtq/5qamv94eXn/R0hI/0JDQ/9FRUX/RkZG/0dHR/9ISEn/SklK/0tLS/9MTEz/TU1O/09P + T/9PT1D/UFBQ/1BRUf9RUVH/UVFR/1FRUf9RUVH/UFBR/1BPUP9PT0//Tk5O/01NTv9MTE3/S0tM/0pL + S/9KSkr/SUlJ/0dHR/9GRkb/RkZG/0RERP9CQ0P/QUFB/z8/P/9MTU3/YmJi/0JDQv9ZWlr/LzEw/xod + G/8cHx7/HSAf/x8hIP8fISH/ICIh/yAiIv8hIyL/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI+khIyMvISMjACEjIwAlJydAISMj7SEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8gIiL/ICIi/yEjI/8iJCT/JScn/ygqKv8tLy7/MTQz/2xubf9+f37/UFFQ/1xdXf9ERET/QkNC/0RE + RP9FRUX/RkZG/0hISP9JSUn/SkpK/0tLTP9NTU3/TU1O/09PT/9QUFD/UFBR/1FRUf9RUVL/UlJS/1JS + Uv9RUVH/UFBR/1BQUP9PT1D/Tk5O/01NTf9MTEz/S0tL/0pKSv9ISEj/R0dH/0ZGRv9ERUX/Q0RD/0JC + Qv9AQUH/P0A//zw8PP9RUVL/gYGB/2tsbP8xMzL/HB4d/xweHf8dHx//HiAg/x8hIf8fISH/ICIi/yEj + Iv8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj6iEjIzIhIyMAKy0tADEyMi4kJiblICIi/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yAiIv8gIiL/ISMj/yMlJf8mKCj/Kiwr/y4w + MP88Pj7/Y2Vk/4qLiv93eHj/QkND/0BAQP9CQkL/Q0ND/0RERP9FRUX/RkdG/0hISP9JSUn/SkpK/0tL + S/9MTEz/TU1N/05OTv9OTk//T09P/1BQUP9QUFD/T09Q/09PUP9PT0//Tk5P/01NTv9NTU3/TEtM/0tK + S/9JSUr/SEhI/0dHR/9GRkb/REVF/0NERP9CQkL/QUFB/z9AQP8+Pj7/PD09/0RFRf9XWFj/RkdH/2Zn + Z/84Ojj/Ghwb/x0fHv8eIB//HyEg/x8hIf8gIiL/ISMi/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyPbISMjISEjIwBCQ0MASktLDDY4 + OK0lJyf/ICIi/yAiIv8gIiL/ICIi/yAiIv8gIiL/ICIi/yAiIv8gIiL/ICIi/yAiIv8gIiL/ICIi/yAi + Iv8gIiL/ICIi/yAiIv8gIiL/ICIi/yAiIv8gIiL/ICIi/yAiIv8gIiL/ICIi/yEiIv8hIyP/ISMj/yIk + JP8iJCT/IiQk/yMlJf8kJib/Jigo/yosLP8uMDD/NTc2/3J0c/+AgYD/TE1N/05PT/8+Pz//P0A//0BB + Qf9BQkL/QkND/0RERP9FRkX/RkdG/0hISP9ISEj/SUlJ/0pKS/9LS0v/TExM/0xMTf9NTU3/TU1O/01N + Tv9NTU7/TU1N/01MTf9MTEz/TEtM/0tKS/9KSkr/SUlJ/0hISP9HR0f/RkZG/0RFRf9DRET/QkNC/0FB + Qf8/QED/Pj8//zw9Pv88PDz/OTo6/0xNTf+BgoL/X2Bg/zY4N/8jJST/HR8e/x4hIP8gIiL/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI50hIyMHISMjAIiFhgA8Pj4AUVFROURFRtA3ODj/Li8v/y0uLv8tLy//LS8v/y0v + L/8tLy//LS8v/y0uLv8sLi7/LC4u/ywuLv8sLi7/LC4u/ywtLv8sLS3/Ky0t/ystLf8rLS3/Kyws/yss + LP8qLCz/Kyws/ystLP8sLS3/LS4u/y4vL/8wMTH/MTIy/zM0NP80Njb/Njg4/zk6Ov87PDz/Pj9A/0BC + Qv9DRUX/WVpa/3N0dP9tbm7/PD4+/zw9Pf8+Pj7/P0A//0BBQf9BQkL/QkND/0RERP9FRUX/RkZG/0dH + R/9ISEj/SUlJ/0lJSf9KSkr/SkpL/0tLS/9LS0z/TEtM/0tLTP9LS0v/S0pL/0pKS/9KSkr/SUlJ/0hI + SP9HR0f/RkdG/0ZGRv9ERUX/Q0RE/0JDQ/9BQUH/QEBA/z4/P/89Pj7/PDw9/zo7O/85Ojr/PD09/01O + Tv9PUE//c3R0/0VHR/8hIyL/Jign/ycoKP8lJyf/JCYl/yMlJP8iJCP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEj + I/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj/yEjI/8hIyPGISMjLiEjIwAhIyMAX2BfAF1d + XQA+PT4AV1ZYLlRUVIlRUlK0UlNTt1NTVLZSU1S2T1BQu0dISO5ERkX/Q0VF/0NERP9DRET/QkND/0JC + Q/9BQkL/QUJC/0BCQf9AQUH/QEFA/z9BQP9AQED/Pz8//z4/P/8+Pz//Pj8//z4/Pv8+Pz7/Pj4+/z4+ + Pv8+Pj7/PT4+/z0+Pv89Pj7/PT4+/z0+Pv89Pj7/PT4+/z0/P/85Ozr/OTo6/0JCQ/86Ozv/Ozw8/zw9 + Pv8+Pj7/P0A//0BBQf9BQkL/QkND/0NERP9EREX/RkZG/0ZGRv9HR0f/SEhI/0hISP9ISEn/SUlJ/0lJ + Sf9KSkr/SUlK/0lJSf9JSUn/SEhJ/0hISP9HR0f/R0dH/0ZGRv9FRUX/RERE/0NEQ/9CQ0L/QUFB/z9A + QP8+Pz//PT4+/zw9Pf87PDz/Ojs7/zg5Of83ODj/Q0RE/3x8fP9WV1f/LzEw/ykqKv8pKyr/KSoq/ygp + Kf8nKSj/Jygo/yYoJ/8mKCf/Jicn/yUmJv8kJiX/JCYl/yMlJf8jJSX/IyUk/yMlJP8iJCT/IiQk/yIk + I/8iJCP/IiQj/yEjI/8hIyP/ICIj/yEjI/8hIyP/ISMj/yEjI/8hIyP/ISMj5SEjI7ghIyO2ISMjtiEj + I7chIyOyISMjgiEjIychIyMAISMjACEjIwBUU1UAU1RUAFFSUgBXVlcAUFFRA1ZWVg1XWFgPWFhZD1la + Wg02ODcgJykoxyMlJP8jJSX/IyUl/yQlJf8kJiX/JCYm/yQmJv8lJib/Jicn/yYoJ/8nKCf/Jyko/ycp + KP8oKSn/KSoq/ykqKv8qKyv/Kyws/ystLP8sLi3/LS4u/y4vL/8vMDD/MDEx/zEyMv8xMjL/MjQ0/zM1 + Nf80NTX/NTY2/zY3N/83ODj/ODk5/zk6Ov86Ozv/PDw8/zw9Pv8+Pj7/P0A//0BBQP9BQkH/QkNC/0ND + Q/9ERET/REVF/0VGRv9GRkb/RkdH/0dHR/9HR0f/SEhI/0hISP9ISEj/SEhI/0dHR/9HR0f/RkZG/0ZG + Rv9FRUX/RERE/0NERP9CQ0P/QkJC/0FBQf8/QED/Pj8//z0+Pv88PT3/Ozw8/zo7O/84OTn/ODk5/zc4 + OP82Nzf/PT4+/zIzM/8xMjL/MTIy/zAxMf8vMDD/Li8v/y0uLv8sLS3/Ky0s/yosK/8qLCr/KSoq/ygq + Kf8nKSj/Jygo/yYoJ/8mJyf/JScm/yUmJv8kJiX/JCUl/yMlJP8iJCT/IiQk/yIkI/8hIyP/ISMj/yIk + Iv8hIyP/ISMj/yAiI/8hIyOpISMjFiEjIw4hIyMPISMjDyEjIw0dHh4CIiQkAB8hIQAhIyMAISMjAAAA + AAAAAAAA////AP///wBrbW0AUVJSAFJTUwBSUlMAOz09ACosKxMkJiXGIiQi/yIkIv8hIyP/ISMj/yIk + I/8iJCT/IiQk/yMlJP8kJSX/JCYl/yUmJv8lJyb/Jicn/yYoJ/8nKCj/KCkp/ygqKf8pKir/Kisr/yss + LP8sLS3/LC4t/y4vLv8uLzD/LzAw/zAxMf8xMjL/MjMz/zM0NP80NTX/NTY2/zY3N/84OTn/ODk5/zk6 + Ov86Ozv/PDw8/zw9Pf89Pj7/Pz8//0BAQP9BQUH/QUJC/0JDQv9DREP/RERE/0RERP9FRUX/RUVF/0ZG + Rv9GRkb/RkZG/0ZGRv9GRkb/RUZG/0VFRf9FRUX/RERE/0NDQ/9CQ0P/QkNC/0FBQf9AQUH/P0BA/z4/ + P/89Pj7/PD09/zs8PP86Ozv/OTo6/zg5Of83ODj/Njc3/zQ1Nv8zNDX/MzQ0/zIzM/8xMjL/MDEx/y8w + MP8uLy//LS4u/ywtLf8rLSz/Kiwr/yorK/8oKin/KCop/ycpKP8nKCj/Jicn/yYnJ/8lJyb/JSYm/yQm + Jf8kJSX/IyUk/yIkJP8iJCP/IiQj/yEjI/8iJCP/IiQi/yEjI/8hIyP/ICIj/yEjI6UhIyMIISMjACEj + IwAhIyMAISMjAB4fHwAZGhoAODs7ACEjIwAAAAAAAAAAAAAAAAAAAAAAAAAAAENERABVVlYAVlZXAFNU + VAAsLi0ALS8uFCUnJswhIyL/IiQi/yIkI/8hIyP/IiQj/yIkI/8iJCT/IyUk/yQlJf8kJiX/JSYm/yUm + Jv8lJyb/Jicn/ycoKP8nKSj/KCkp/ykqKv8qKyv/Kyws/ystLP8sLS3/LS4u/y4vLv8vMDD/MDEx/zAx + Mv8xMjL/MjQ0/zM1Nf80NTb/NTY2/zc4OP84OTn/ODk5/zk6Ov86Ozv/Ozw8/zw9Pf89Pj7/Pj8+/z9A + P/9AQUD/QUFB/0FCQv9CQ0L/Q0ND/0NDQ/9DRET/RERE/0RERP9ERUX/REVF/0RERP9ERET/Q0RE/0ND + Q/9CQ0P/QkJC/0FCQf9AQUH/P0BA/z9AP/8+Pj7/PT0+/zw8PP87PDz/Ojs7/zk6Ov84OTn/Nzg4/zY3 + N/81Njb/NDU1/zM0NP8yMzP/MTIy/zAxMf8wMTH/Li8v/y4vLv8tLi3/LC0t/yssLP8qKyv/KSoq/ygq + Kf8oKSn/Jygo/yYoJ/8mJyf/JScm/yUmJv8kJiX/JCUl/yMlJP8iJCT/IiQk/yIkI/8iJCT/ISMj/yIk + Iv8iJCL/ISMj/yAiI/8gIiP/ISMjpSEjIwkhIyMAISMjACEjIwAhIyMAISMjACEjIwAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiQjAC0vLwAwMjIVJScnzSEjI/8iJCL/IiQj/yEj + I/8iJCP/IiQj/yIkJP8jJST/JCUk/yQlJf8kJiX/JSYm/yUnJv8mJyf/Jign/ycoKP8oKSn/KCop/ykq + Kv8qLCv/Kiwr/ywtLf8sLS3/LS4u/y4vL/8vMDD/MDEx/zEyMv8yMzP/MjQ0/zQ1Nf80NTb/NTY2/zc4 + N/83ODj/ODk5/zk6Ov86Ozv/Ozw8/zw9Pf88PT7/PT4+/z4/P/8/QD//QEBA/0FBQf9BQUH/QkJC/0JC + Qv9CQ0L/QkND/0NDQ/9CQ0P/QkND/0JDQv9CQkL/QUFB/0FBQf9AQUD/P0BA/z8/P/8+Pz//PT4+/zw9 + Pf88PDz/Ojs7/zk6Ov85Ojr/ODk5/zc4OP82Nzf/NTY2/zQ1Nf8zNDT/MjMz/zEyMv8xMjL/MDEx/y8w + MP8uLy7/LS4u/ywtLf8rLSz/Kiwr/yorK/8oKin/KCkp/ycpKP8nKCj/Jign/yYnJ/8lJyb/JSYm/yQm + Jf8kJSX/IyUk/yIkJP8iJCT/IiQj/yEjJP8iJCP/IiQi/yEjI/8hIyP/ICIj/yAiIv8hIyOhISMjByAi + IgAhIyMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAALzExADM1NRUmKCjNISMj/yEjI/8iJCL/IiQj/yEjI/8iJCP/IiQk/yIkJP8jJST/JCUl/yQm + Jf8lJib/JScm/yYnJ/8mKCf/Jygo/ycpKP8oKSn/KSoq/yorK/8qLCv/Ky0s/ywtLf8sLi7/Li8u/y4w + MP8vMDD/MDEx/zEyMv8yMzP/MzMz/zQ1Nf80NTb/NTY2/zc4N/83ODj/ODk5/zk6Ov86Ozv/Ojs7/zs8 + PP88PT3/PT0+/z0+Pv8+Pz7/Pz8//z9AQP9AQED/QEFB/0BBQf9BQUH/QUFB/0FBQf9AQUH/QEFB/0BB + QP8/QED/P0A//z4/P/8+Pj7/PT4+/zw9Pf88PD3/Ozw8/zo7O/85Ojr/ODk5/zg5Of83ODj/Njc3/zU2 + Nv80NTX/MzQ0/zIzM/8xMjL/MDEx/zAwMP8uMDD/LS8u/y0uLv8sLS3/Kyws/yosK/8pKyr/KCop/ycp + KP8nKCj/Jign/yUnJv8lJib/JCYl/yQlJf8jJST/IyQk/yMkJP8iJCT/IiQk/yIkI/8hIyP/ISMj/yIk + Iv8hIyL/ISMi/yAiI/8gIiL/ISMj+iIkI2smJyYAICIiACEjIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvMTEAMzU1FSYoKM0hIyP/IiQj/yIk + Iv8iJCP/ISMj/yIkJP8iJCP/IiQk/yMlJP8kJST/JCUl/yQmJf8lJib/JScm/yYnJ/8mKCf/Jygo/ygp + Kf8oKin/KSoq/yorK/8qLCv/Ky0s/ywtLf8tLi7/Li8u/y8wMP8wMTH/MDEx/zEyMv8yMzP/MzQ0/zQ1 + Nf80NTb/NTY2/zY3N/83ODj/ODk5/zg5Of85Ojr/Ojs7/zo8O/87PDz/PD09/zw9Pf89Pj7/PT4+/z4/ + P/8/Pz//Pz8//z8/P/8/QD//Pz8//z8/P/8+Pz//Pj8//z4+Pv89Pj7/PT4+/zw9Pf88PT3/Ozw8/zo7 + PP86Ozv/OTo6/zk6Ov84OTn/Nzg4/zY3N/82Nzf/Njc3/zY3N/81Njb/NTY2/zU2Nv81Njb/NDU1/zQ2 + Nf80NTX/NDU1/zQ1Nf80NjX/NDY1/zQ1Nf80NTX/NDY1/zU2Nv81Njb/NTc2/zY3N/82Nzf/NDU1/zI0 + M/8xMjL/LjAw/ywuL/8rLS3/Kiwr/ygqKv8nKSn/Jign/yUnJv8kJiX/JCUm/yQmJvImJyecJicnFCUn + JwAqLCwAISMjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAPj8/AC4wMAAxMzMVJicozSAiI/8hIyP/IiQj/yIkIv8hIyP/ISMj/yIkI/8iJCT/IiQk/yMl + JP8kJSX/JCYl/yUmJv8lJyb/JScm/yYnJ/8mKCf/Jygo/ygpKf8oKin/KSoq/yosK/8rLCz/Ky0s/ywt + Lf8tLi7/Li8v/y8wMP8wMTH/MDEx/zEyMv8yMzP/MzQ0/zM1Nf80NTX/NTY2/zY3N/83ODj/ODk5/zg5 + Of85Ojr/OTo6/zo7O/86Ozv/Ozw8/zs8PP88PT3/PD09/z09Pf89Pj71PT4+rj4+Pn8+Pj58Pj4+fD4+ + P3w9Pj98PT4+fD0+Pnw9Pj58PT09fD09PXw8PT18PD09fDw9PXw8PT18Ozw8fDs8PHw6Ozx8Ozw8fD4+ + PnxAQUJ8REVFfEdISHxLS018T09RfFJTVXxWV1l8W1xdfF9gYnxkZWZ8aWprfG5ub3xyc3R8d3h5fHx9 + fnyCgoN8hoeHfIyMjXySkpN8mJmZfJubm3yTk5N8iImJfH9/gHx1dnd8bG1vfGRlZnxcXF58U1RWfEtM + TnxERkZ8PT4/fDg5OoQ0NTZ8MDIyTy8xMQ4nKSkAHR0eACssLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+Pz8ALC0tAC4vLxomKCjUICIj/yEj + I/8hIyP/IiQi/yIkI/8hIyP/IiQj/yIkI/8iJCT/IyUk/yMlJP8kJSX/JCYl/yUmJv8lJyb/Jicn/yYo + J/8nKCj/Jyko/ygpKf8oKin/KSsq/yosK/8rLCz/Ky0s/ywuLf8tLi7/Li8v/y8wMP8wMTH/MDEx/zEy + Mv8yMzP/MjMz/zM1Nf80NTX/NDY2/zU2Nv82Nzf/Nzg4/zg5Of84OTn/OTo6/zk6Ov85Ojr/Ojs7/zo7 + O/87PDv/Ozw8/zw9PbI+Pz8TPj4+AD8+PgA+Pj4APj4+AD0+PgA8PT4APD09ADw9PQA8PDwAOjs7ADk6 + OgA5OjoAODk5ADc4OAA3ODgANjc3ADU2NgA0NTQAMTMzADAyMQAuLy8ALC0sACkqKwAnKCkAJSYmACMk + IwAgIiEAHh8eABwdHAAZGxsAHB4eACEjJAAnKCgALC0uADEyMwA2ODgAPD0+AENDRABJS0oATE1NAENE + RAA3OTgALS4uACIkJQAXGRsAEBISABATEQASFBQAFBcWABcZFwAdHx4AAAAAABweHgAoKioAKCkpACgp + KwBGQk8AKSoqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAD9AQAAwMDAAMDExGygpKdYgIiP/ICIj/yEjI/8iJCL/IiQi/yEjI/8hIyP/IiQj/yIk + JP8iJCT/IyUk/yQlJf8kJiX/JCYl/yUmJv8lJyb/Jicn/yYoJ/8nKCj/Jyko/ygqKf8pKir/Kisr/yos + K/8rLSz/LC0t/ywuLf8tLi7/Li8v/y8wMP8wMTH/MDEx/zEyMv8yMzP/MjMz/zM0NP80NTX/NDU1/zU2 + Nv82Nzf/Njc3/zc4OP83ODj/ODk5/zg5Of85Ojr/OTo6/zk6Ov86Ozv/PD09kk5PTwE+Pz8APT8/AD0/ + PwA9Pz8APj8/AD9AQAA/QEAAPkBAAD9BQQBBQUEAQkNDAEJDQwBDREQAQ0REAENERABERUUARUZGAElJ + SQBUVFQAX15gAGtsbgB5e34AiIeLAJaWmgClpaoAtbW7AMbFzADX2N0A6enuAPv6/QD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD8+v4A5ePqAMjI + zgCvr7MAl5abAHV1eQCeoKQAa2tuAD0+PwA5PDsAKSorAC8xMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzc3ADAxMQAxMjIaKCkp1SAi + Iv8gIiP/ISMj/yEjI/8iJCL/IiQj/yEjI/8iJCP/IiQj/yIkJP8iJCT/IyUk/yQlJf8kJiX/JSYm/yUn + Jv8lJyb/Jicn/yYoJ/8nKSj/KCkp/ygqKf8pKir/Kisr/yosK/8rLSz/LC0t/ywuLf8tLi7/Li8v/y4w + MP8vMTH/MDEx/zEyMv8xMjL/MjMz/zIzM/8zNTX/NDU1/zQ1Nf81Njb/NTY3/zY3N/83ODf/Nzg4/zc4 + OP84OTn/ODk5/zg5Of87PDyMfX5+AD9AQAA9Pj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABISkoAUFNTACgpKQAvMDAAJycoAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAyNDQAOTs7AD0/PxAqLCy7ICIi/yAiI/8hIyP/ISMj/yEjIv8iJCP/ISMj/yEj + I/8iJCP/IiQj/yIkJP8jJST/IyUk/yQlJf8kJiX/JSYm/yUnJv8mJyf/Jign/ycoKP8nKSj/KCkp/ygq + Kf8pKir/Kisr/yosK/8rLSz/LC0t/ywuLf8tLi7/Li8u/y4vL/8vMDD/MDEx/zAyMf8xMjL/MTIy/zIz + M/8zNDT/MzU1/zQ1Nf80NTX/NDU2/zU2Nv81Njf/Njc3/zY3N/83ODj/ODk5+js8PGQ5OjoAPT4+AD0+ + PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD0/PwBJSkoA////ADU2 + Nl0oKiroIiQk/yEjI/8iIyP/IiQj/yIkI/8iJCP/IiQk/yIkJP8jJST/IyUk/yMlJf8kJiX/JSYm/yUn + Jv8mKCf/Jigo/ycpKP8oKSn/KCop/ykrK/8qLCv/Kyws/ywtLf8tLi7/Li8v/y4wL/8vMDD/LzEw/y8w + MP8wMTH/MDEx/zEyMv8xMjL/MTIy/zIzM/8yMzP/MjMz/zIzM/8zNDT/MzQ0/zM0NP80NTX/NDU1/zQ2 + Nv81Njb/NTY2/zY3N/45Ojq8Pj8/HTw9PQA9Pj4APT4+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAPD4+AGltbQBAQUEAR0dHBjc4OEMuMDCELC0ulywtLZcsLi6XLC4tly0u + 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 + 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 + 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//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////////wAAA/ + ///////////AAAAAAAAAAAAAAD////wAAAAAAAAAAAAAAAAAAH+AAAAAAAAAAAAAAAAAAAADAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAA + AACAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA + AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABwAAAAAAA + AAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAA4AA + AAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAA + AAOAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAA + AAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAA + AAHAAAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAH//AAAAAAAAAAAA + AAAAAAB//gAAAAAAAAAAAAAAAAAA//4AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAH//gAAAAAA + AAD///////4P//4AAAAAAAAA///////////+AAAAAAAAAP///////////gAAAAAAAAH///////////8A + AAAAAAAB////////////gAAAAAAAA////////////+AAAAAAAA////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////8= + + + \ No newline at end of file diff --git a/AutoPekage/GetFileIcon.cs b/AutoPekage/GetFileIcon.cs new file mode 100644 index 0000000..1275842 --- /dev/null +++ b/AutoPekage/GetFileIcon.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Runtime.InteropServices; +using System.Text; + +namespace AutoPekage +{ + class GetIcon + { + [StructLayout(LayoutKind.Sequential)] + public struct SHFILEINFO + { + public IntPtr hIcon; + public IntPtr iIcon; + public uint dwAttributes; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] + public string szDisplayName; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)] + public string szTypeName; + } + + /// + /// 返回系统设置的图标 + /// + /// 文件路径 如果为"" 返回文件夹的 + /// 0 + /// 结构体 + /// 结构体大小 + /// 枚举类型 + /// -1失败 + [DllImport("shell32.dll")] + public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags); + + public enum SHGFI + { + SHGFI_ICON = 0x100, + SHGFI_LARGEICON = 0x0, + SHGFI_USEFILEATTRIBUTES = 0x10 + } + + + /// + /// 获取文件图标 zgke@sina.com qq:116149 + /// + /// 文件全路径 + /// 图标 + public static Icon GetFileIcon(string p_Path) + { + SHFILEINFO _SHFILEINFO = new SHFILEINFO(); + IntPtr _IconIntPtr = SHGetFileInfo(p_Path, 0, ref _SHFILEINFO, (uint)Marshal.SizeOf(_SHFILEINFO), (uint)(SHGFI.SHGFI_ICON | SHGFI.SHGFI_LARGEICON | SHGFI.SHGFI_USEFILEATTRIBUTES)); + if (_IconIntPtr.Equals(IntPtr.Zero)) return null; + Icon _Icon = System.Drawing.Icon.FromHandle(_SHFILEINFO.hIcon); + return _Icon; + } + /// + /// 获取文件夹图标 zgke@sina.com qq:116149 + /// + /// 图标 + public static Icon GetDirectoryIcon() + { + SHFILEINFO _SHFILEINFO = new SHFILEINFO(); + IntPtr _IconIntPtr = SHGetFileInfo(@"", 0, ref _SHFILEINFO, (uint)Marshal.SizeOf(_SHFILEINFO), (uint)(SHGFI.SHGFI_ICON | SHGFI.SHGFI_LARGEICON)); + if (_IconIntPtr.Equals(IntPtr.Zero)) return null; + Icon _Icon = System.Drawing.Icon.FromHandle(_SHFILEINFO.hIcon); + return _Icon; + } + } +} diff --git a/AutoPekage/LiteDbHelper.cs b/AutoPekage/LiteDbHelper.cs new file mode 100644 index 0000000..8fa6ceb --- /dev/null +++ b/AutoPekage/LiteDbHelper.cs @@ -0,0 +1,180 @@ +using LiteDB; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; + +namespace AutoPekage +{ + class LiteDbHelper + { + private static string liteDbPath = Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "AutoPackage", "sittings.db"); + + public static void init() + { + if (!File.Exists(liteDbPath)) + { + Directory.CreateDirectory(Path.GetDirectoryName(liteDbPath)); + AddStmpServer("qq", "smtp.qq.com"); + CreateDefaultSettings(); + } + + } + + public static SettingsDao CreateDefaultSettings() + { + SettingsDao dao = new SettingsDao(); + dao.AskAutoDeleteFile = true; + dao.AskAutoLoadFile = true; + dao.AutoDeleteFile = 0; + dao.AutoLoadFile = 0; + dao.DefaultFileName = "我的打包文件.zip"; + dao.LastPath = null; + dao.SendMail = false; + dao.TitleModel = 0; + Settings = dao; + return dao; + } + + public static void AddStmpServer(string serverName, string stmp) + { + var dao = new StmpServerDao(); + dao.ServerName = serverName; + dao.Stmp = stmp; + AddStmpServer(dao); + } + + public static void AddStmpServer(StmpServerDao dao) + { + using (var db = new LiteDatabase(liteDbPath)) + { + var col = db.GetCollection("stmpservers"); + col.Insert(dao); + } + } + + public static List GetAllStmpServer() + { + using (var db = new LiteDatabase(liteDbPath)) + { + var col = db.GetCollection("stmpservers"); + return col.FindAll().ToList(); + } + } + + public static void AddSender(string name) + { + var dao = new SenderDao(); + dao.Name = name; + AddSender(dao); + } + + public static void AddSender(string name, string username, string password, string nikename, string stmpServer) + { + var dao = new SenderDao(); + dao.Name = name; + dao.NickName = nikename; + dao.Password = password; + dao.StmpServer = stmpServer; + dao.UserName = username; + AddSender(dao); + } + + public static void AddSender(SenderDao dao) + { + using (var db = new LiteDatabase(liteDbPath)) + { + var col = db.GetCollection("senders"); + if (dao.Id == 0) + { + col.Insert(dao); + } + else + { + col.Update(dao); + } + } + } + + public static void DelSender(SenderDao dao) + { + using (var db = new LiteDatabase(liteDbPath)) + { + var col = db.GetCollection("senders"); + col.Delete(dao.Id); + } + } + + public static List GetAllSender() + { + using (var db = new LiteDatabase(liteDbPath)) + { + var col = db.GetCollection("senders"); + return col.FindAll().ToList(); + } + } + + public static SenderDao GetSenderById(int id) + { + using (var db = new LiteDatabase(liteDbPath)) + { + var col = db.GetCollection("senders"); + return col.FindById(id); + } + } + + public static void AddMailTo(string mailto) + { + var mailToDao = new MailToDao(); + mailToDao.MailTo = mailto; + using (var db = new LiteDatabase(liteDbPath)) + { + var col = db.GetCollection("mailto"); + col.Insert(mailToDao); + } + } + + public static List GetAllMailTo() + { + using (var db = new LiteDatabase(liteDbPath)) + { + var col = db.GetCollection("mailto"); + return col.FindAll().ToList(); + } + } + + public static SettingsDao Settings + { + get + { + using (var db = new LiteDatabase(liteDbPath)) + { + var col = db.GetCollection("settings"); + var dao = col.FindOne(Query.All()); + if (dao == null) + { + dao = CreateDefaultSettings(); + } + return dao; + } + } + set + { + using (var db = new LiteDatabase(liteDbPath)) + { + var col = db.GetCollection("settings"); + if (col.Count() > 0) + { + col.Update(value); + } + else + { + col.Insert(value); + } + + } + } + } + } +} diff --git a/AutoPekage/MailToDao.cs b/AutoPekage/MailToDao.cs new file mode 100644 index 0000000..9d8c67d --- /dev/null +++ b/AutoPekage/MailToDao.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace AutoPekage +{ + public class MailToDao + { + public string MailTo { get; set; } + } +} diff --git a/AutoPekage/Program.cs b/AutoPekage/Program.cs new file mode 100644 index 0000000..8e5475c --- /dev/null +++ b/AutoPekage/Program.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; + +namespace AutoPekage +{ + static class Program + { + /// + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main() + { + LiteDbHelper.init(); + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/AutoPekage/Properties/AssemblyInfo.cs b/AutoPekage/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..9fef6c2 --- /dev/null +++ b/AutoPekage/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("自动打包发邮件")] +[assembly: AssemblyDescription("一个可以自动解压压缩包,并打包发邮件的程序")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("JX")] +[assembly: AssemblyProduct("AutoPackage")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("7d8db1ae-da15-4a37-bb28-5377390b520c")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/AutoPekage/Properties/Resources.Designer.cs b/AutoPekage/Properties/Resources.Designer.cs new file mode 100644 index 0000000..789e4e2 --- /dev/null +++ b/AutoPekage/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace AutoPackage.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AutoPackage.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/AutoPekage/Properties/Resources.resx b/AutoPekage/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/AutoPekage/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/AutoPekage/Properties/Settings.Designer.cs b/AutoPekage/Properties/Settings.Designer.cs new file mode 100644 index 0000000..94e63e9 --- /dev/null +++ b/AutoPekage/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace AutoPackage.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/AutoPekage/Properties/Settings.settings b/AutoPekage/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/AutoPekage/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/AutoPekage/SenderDao.cs b/AutoPekage/SenderDao.cs new file mode 100644 index 0000000..18243a1 --- /dev/null +++ b/AutoPekage/SenderDao.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace AutoPekage +{ + public class SenderDao + { + public int Id { get; set; } + + public string Name { get; set; } + + public string StmpServer { get; set; } + + public string UserName { get; set; } + + public string Password { get; set; } + + public string NickName { get; set; } + } +} diff --git a/AutoPekage/SettingsDao.cs b/AutoPekage/SettingsDao.cs new file mode 100644 index 0000000..ff9f105 --- /dev/null +++ b/AutoPekage/SettingsDao.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace AutoPekage +{ + public class SettingsDao + { + + public int Id { get; set; } + + /// + /// 默认打包文件名 + /// + public string DefaultFileName { get; set; } + + /// + /// 最后一次打包路径 + /// + public string LastPath { get; set; } + + /// + /// 是否勾选发送邮件 + /// + public bool SendMail { get; set; } + + /// + /// 是否询问自动加载temp目录的文件 + /// + public bool AskAutoLoadFile { get; set; } + + /// + /// 是否自动加载temp目录文件 + /// 1:加载文件 + /// 0:不加载文件 + /// + public int AutoLoadFile { get; set; } + + /// + /// 询问是否自动删除temp目录文件 + /// + public bool AskAutoDeleteFile { get; set; } + + /// + /// 是否自动删除temp目录文件 + /// 1:删除文件 + /// 0:不删除文件 + /// + public int AutoDeleteFile { get; set; } + + /// + /// 邮件标题模式 + /// 1:自定义标题 + /// 0:使用文件名作为标题 + /// + public int TitleModel { get; set; } + + /// + /// 邮件标题 + /// + public string Title { get; set; } + } +} diff --git a/AutoPekage/StmpServerDao.cs b/AutoPekage/StmpServerDao.cs new file mode 100644 index 0000000..984ff8e --- /dev/null +++ b/AutoPekage/StmpServerDao.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace AutoPekage +{ + public class StmpServerDao + { + public string ServerName { get; set; } + + public string Stmp { get; set; } + } +} diff --git a/AutoPekage/ZipControl.cs b/AutoPekage/ZipControl.cs new file mode 100644 index 0000000..b8249f3 --- /dev/null +++ b/AutoPekage/ZipControl.cs @@ -0,0 +1,202 @@ +using SharpCompress.Archives; +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Linq; +using SharpCompress.Readers; +using SharpCompress.Writers; +using SharpCompress.Common; + +namespace AutoPekage +{ + class ZipControl + { + + + + public delegate void NewFileDecompressHandle(string filePath); + + public static event NewFileDecompressHandle NewFileDecompress; + + public delegate bool FileWillDecompressHandle(string filePath); + + public static event FileWillDecompressHandle FileWillDecompress; + /// + /// ZIP:解压一个zip文件 + /// add yuangang by 2016-06-13 + /// + /// 需要解压的Zip文件(绝对路径) + /// 解压密码 + /// 是否覆盖已存在的文件 + public static void UnZip(string ZipFile, string Password, bool OverWrite = true) + { + //如果解压到的目录不存在,则报错 + //if (!System.IO.Directory.Exists(Form1.tempPath)) + //{ + // Directory.CreateDirectory(Form1.tempPath); + //} + + //using (ZipInputStream zipfiles = new ZipInputStream(File.OpenRead(ZipFile))) + //{ + // zipfiles.Password = Password; + // ZipEntry theEntry; + + // while ((theEntry = zipfiles.GetNextEntry()) != null) + // { + // string pathToZip = ""; + // pathToZip = theEntry.Name; + + // string fileName = Path.GetFileName(pathToZip); + + // if (fileName != "") + // { + // string filePath = Path.Combine(Form1.tempPath, fileName); + // if ((File.Exists(Form1.tempPath + fileName) && OverWrite) || (!File.Exists(filePath))) + // { + // using (FileStream streamWriter = File.Create(filePath)) + // { + // int size = 2048; + // byte[] data = new byte[2048]; + // while (true) + // { + // size = zipfiles.Read(data, 0, data.Length); + + // if (size > 0) + // streamWriter.Write(data, 0, size); + // else + // break; + // } + // streamWriter.Close(); + // } + // if (NewFileDecompress != null) + // { + // NewFileDecompress(filePath); + // } + // } + // } + // } + + // zipfiles.Close(); + //} + } + + /// + /// 压缩文件 + /// + /// 压缩文件路径 + /// 文件列表 + public static void Zip(string zipPath, List fileList) + { + //ZipOutputStream zipStream = null; + //FileStream streamWriter = null; + //try + //{ + // //Use Crc32 + // Crc32 crc32 = new Crc32(); + + // //Create Zip File + // zipStream = new ZipOutputStream(File.Create(zipPath)); + + // //Specify Level + // zipStream.SetLevel(9); + + // //Foreach File + // foreach (string file in fileList) + // { + // //Check Whether the file exists + // if (!File.Exists(file)) + // { + // throw new FileNotFoundException(file); + // } + + // //Read the file to stream + // streamWriter = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); + // byte[] buffer = new byte[streamWriter.Length]; + // streamWriter.Read(buffer, 0, buffer.Length); + // streamWriter.Close(); + + // //Specify ZipEntry + // crc32.Reset(); + // crc32.Update(buffer); + // ZipEntry zipEntry = new ZipEntry(Path.GetFileName(file)); + // zipEntry.DateTime = DateTime.Now; + // zipEntry.Size = buffer.Length; + // zipEntry.Crc = crc32.Value; + + // //Put file info into zip stream + // zipStream.PutNextEntry(zipEntry); + + // //Put file data into zip stream + // zipStream.Write(buffer, 0, buffer.Length); + // } + //} + //catch + //{ + // throw; + //} + //finally + //{ + // //Clear Resource + // if (streamWriter != null) + // { + // streamWriter.Close(); + // } + // if (zipStream != null) + // { + // zipStream.Finish(); + // zipStream.Close(); + // } + //} + + using (Stream stream = File.OpenWrite(zipPath)) + { + using (var writer = WriterFactory.Open(stream, ArchiveType.Zip, new WriterOptions(CompressionType.Deflate) + { + LeaveStreamOpen = true + })) + { + foreach (var file in fileList) + { + writer.Write(Path.GetFileName(file), file); + } + } + if (!stream.CanWrite) + { + throw new InvalidOperationException(); + } + } + } + + public static void UnCompress(string ZipFile, string unCompressPath, bool OverWrite = true) + { + if (!Directory.Exists(unCompressPath)) + { + Directory.CreateDirectory(unCompressPath); + } + using (Stream stream = File.OpenRead(ZipFile)) + using (var archive = ArchiveFactory.Open(stream)) + { + SharpCompress.Common.ArchiveEncoding.Default = Encoding.Default; + foreach (var entry in archive.Entries.Where(entry => !entry.IsDirectory)) + { + if (FileWillDecompress != null) + { + if (!FileWillDecompress(entry.Key)) + { + continue; + } + } + entry.WriteToDirectory(unCompressPath, new ExtractionOptions() + { + Overwrite = true + }); + if (NewFileDecompress != null) + { + NewFileDecompress(Path.Combine(unCompressPath, Path.GetFileName(entry.Key))); + } + } + } + } + } +} diff --git a/AutoPekage/app.config b/AutoPekage/app.config new file mode 100644 index 0000000..fcd0c93 --- /dev/null +++ b/AutoPekage/app.config @@ -0,0 +1,3 @@ + + + diff --git a/AutoPekage/frmAddSender.Designer.cs b/AutoPekage/frmAddSender.Designer.cs new file mode 100644 index 0000000..5e9c46c --- /dev/null +++ b/AutoPekage/frmAddSender.Designer.cs @@ -0,0 +1,259 @@ +namespace AutoPekage +{ + partial class frmAddSender + { + /// + /// 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() + { + this.label1 = new System.Windows.Forms.Label(); + this.cbStmpAll = new System.Windows.Forms.ComboBox(); + this.txtMailAddr = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.txtPassword = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.cbShowPwd = new System.Windows.Forms.CheckBox(); + this.txtNickName = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.btnModify = new System.Windows.Forms.Button(); + this.btnAddStmpServer = new System.Windows.Forms.Button(); + this.btnCencel = new System.Windows.Forms.Button(); + this.lbSender = new System.Windows.Forms.ListBox(); + this.txtName = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.btnAd = new System.Windows.Forms.Button(); + this.btnDel = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(130, 41); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(77, 12); + this.label1.TabIndex = 0; + this.label1.Text = "发信服务器:"; + // + // cbStmpAll + // + this.cbStmpAll.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbStmpAll.FormattingEnabled = true; + this.cbStmpAll.Location = new System.Drawing.Point(213, 38); + this.cbStmpAll.Name = "cbStmpAll"; + this.cbStmpAll.Size = new System.Drawing.Size(146, 20); + this.cbStmpAll.TabIndex = 1; + this.cbStmpAll.SelectedIndexChanged += new System.EventHandler(this.cbStmpAll_SelectedIndexChanged); + // + // txtMailAddr + // + this.txtMailAddr.Location = new System.Drawing.Point(213, 91); + this.txtMailAddr.Name = "txtMailAddr"; + this.txtMailAddr.Size = new System.Drawing.Size(146, 21); + this.txtMailAddr.TabIndex = 5; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(130, 94); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(65, 12); + this.label3.TabIndex = 4; + this.label3.Text = "邮箱地址:"; + // + // txtPassword + // + this.txtPassword.Location = new System.Drawing.Point(213, 145); + this.txtPassword.Name = "txtPassword"; + this.txtPassword.PasswordChar = '*'; + this.txtPassword.Size = new System.Drawing.Size(146, 21); + this.txtPassword.TabIndex = 7; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(130, 148); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(41, 12); + this.label4.TabIndex = 6; + this.label4.Text = "密钥:"; + // + // cbShowPwd + // + this.cbShowPwd.AutoSize = true; + this.cbShowPwd.Location = new System.Drawing.Point(287, 172); + this.cbShowPwd.Name = "cbShowPwd"; + this.cbShowPwd.Size = new System.Drawing.Size(72, 16); + this.cbShowPwd.TabIndex = 8; + this.cbShowPwd.Text = "显示密钥"; + this.cbShowPwd.UseVisualStyleBackColor = true; + this.cbShowPwd.CheckedChanged += new System.EventHandler(this.cbShowPwd_CheckedChanged); + // + // txtNickName + // + this.txtNickName.Location = new System.Drawing.Point(213, 118); + this.txtNickName.Name = "txtNickName"; + this.txtNickName.Size = new System.Drawing.Size(146, 21); + this.txtNickName.TabIndex = 6; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(130, 121); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(41, 12); + this.label5.TabIndex = 9; + this.label5.Text = "昵称:"; + // + // btnModify + // + this.btnModify.Location = new System.Drawing.Point(179, 201); + this.btnModify.Name = "btnModify"; + this.btnModify.Size = new System.Drawing.Size(75, 23); + this.btnModify.TabIndex = 11; + this.btnModify.Text = "修改"; + this.btnModify.UseVisualStyleBackColor = true; + this.btnModify.Click += new System.EventHandler(this.btnAdd_Click); + // + // btnAddStmpServer + // + this.btnAddStmpServer.Location = new System.Drawing.Point(250, 64); + this.btnAddStmpServer.Name = "btnAddStmpServer"; + this.btnAddStmpServer.Size = new System.Drawing.Size(109, 23); + this.btnAddStmpServer.TabIndex = 14; + this.btnAddStmpServer.Text = "添加发信服务器"; + this.btnAddStmpServer.UseVisualStyleBackColor = true; + this.btnAddStmpServer.Click += new System.EventHandler(this.btnAddStmpServer_Click); + // + // btnCencel + // + this.btnCencel.Location = new System.Drawing.Point(269, 201); + this.btnCencel.Name = "btnCencel"; + this.btnCencel.Size = new System.Drawing.Size(75, 23); + this.btnCencel.TabIndex = 13; + this.btnCencel.Text = "关闭"; + this.btnCencel.UseVisualStyleBackColor = true; + this.btnCencel.Click += new System.EventHandler(this.btnCencel_Click); + // + // lbSender + // + this.lbSender.FormattingEnabled = true; + this.lbSender.HorizontalScrollbar = true; + this.lbSender.ItemHeight = 12; + this.lbSender.Location = new System.Drawing.Point(4, 10); + this.lbSender.Name = "lbSender"; + this.lbSender.Size = new System.Drawing.Size(120, 184); + this.lbSender.TabIndex = 15; + this.lbSender.SelectedIndexChanged += new System.EventHandler(this.lbSender_SelectedIndexChanged); + // + // txtName + // + this.txtName.Location = new System.Drawing.Point(213, 10); + this.txtName.Name = "txtName"; + this.txtName.Size = new System.Drawing.Size(146, 21); + this.txtName.TabIndex = 17; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(130, 13); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(41, 12); + this.label2.TabIndex = 16; + this.label2.Text = "名称:"; + // + // btnAd + // + this.btnAd.Location = new System.Drawing.Point(23, 201); + this.btnAd.Name = "btnAd"; + this.btnAd.Size = new System.Drawing.Size(31, 23); + this.btnAd.TabIndex = 18; + this.btnAd.Text = "+"; + this.btnAd.UseVisualStyleBackColor = true; + this.btnAd.Click += new System.EventHandler(this.btnAd_Click); + // + // btnDel + // + this.btnDel.Location = new System.Drawing.Point(71, 201); + this.btnDel.Name = "btnDel"; + this.btnDel.Size = new System.Drawing.Size(31, 23); + this.btnDel.TabIndex = 19; + this.btnDel.Text = "-"; + this.btnDel.UseVisualStyleBackColor = true; + this.btnDel.Click += new System.EventHandler(this.btnDel_Click); + // + // frmAddSender + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(367, 233); + this.Controls.Add(this.btnDel); + this.Controls.Add(this.btnAd); + this.Controls.Add(this.txtName); + this.Controls.Add(this.label2); + this.Controls.Add(this.lbSender); + this.Controls.Add(this.btnCencel); + this.Controls.Add(this.btnAddStmpServer); + this.Controls.Add(this.btnModify); + this.Controls.Add(this.txtNickName); + this.Controls.Add(this.label5); + this.Controls.Add(this.cbShowPwd); + this.Controls.Add(this.txtPassword); + this.Controls.Add(this.label4); + this.Controls.Add(this.txtMailAddr); + this.Controls.Add(this.label3); + this.Controls.Add(this.cbStmpAll); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "frmAddSender"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "配置发件人"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ComboBox cbStmpAll; + private System.Windows.Forms.TextBox txtMailAddr; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox txtPassword; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.CheckBox cbShowPwd; + private System.Windows.Forms.TextBox txtNickName; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Button btnModify; + private System.Windows.Forms.Button btnAddStmpServer; + private System.Windows.Forms.Button btnCencel; + private System.Windows.Forms.ListBox lbSender; + private System.Windows.Forms.TextBox txtName; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button btnAd; + private System.Windows.Forms.Button btnDel; + } +} \ No newline at end of file diff --git a/AutoPekage/frmAddSender.cs b/AutoPekage/frmAddSender.cs new file mode 100644 index 0000000..c969f1a --- /dev/null +++ b/AutoPekage/frmAddSender.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace AutoPekage +{ + public partial class frmAddSender : Form + { + public frmAddSender() + { + InitializeComponent(); + cbStmpAll.DataSource = LiteDbHelper.GetAllStmpServer(); + cbStmpAll.DisplayMember = "ServerName"; + cbStmpAll.ValueMember = "Stmp"; + lbSender.DataSource = LiteDbHelper.GetAllSender(); + lbSender.DisplayMember = "Name"; + //lbSender.ValueMember = "Id"; + if (lbSender.SelectedIndex == -1) + { + btnModify.Enabled = false; + } + } + + private void cbStmpAll_SelectedIndexChanged(object sender, EventArgs e) + { + + } + + private void btnAddStmpServer_Click(object sender, EventArgs e) + { + if (new frmStmpServer().ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + cbStmpAll.DataSource = LiteDbHelper.GetAllStmpServer(); + } + } + + private void cbShowPwd_CheckedChanged(object sender, EventArgs e) + { + if (cbShowPwd.Checked) + { + txtPassword.PasswordChar = '\0'; + } + else + { + txtPassword.PasswordChar = '*'; + } + } + + private void btnAdd_Click(object sender, EventArgs e) + { + //LiteDbHelper.AddSender(txtName.Text, txtMailAddr.Text, txtPassword.Text, txtNickName.Text, cbStmpAll.SelectedValue.ToString()); + var mailSender = lbSender.SelectedValue as SenderDao; + mailSender.Name = txtName.Text; + mailSender.UserName = txtMailAddr.Text; + mailSender.NickName = txtNickName.Text; + mailSender.Password = txtPassword.Text; + mailSender.StmpServer = cbStmpAll.SelectedValue.ToString(); + LiteDbHelper.AddSender(mailSender); + lbSender.DataSource = LiteDbHelper.GetAllSender(); + } + + private void btnCencel_Click(object sender, EventArgs e) + { + Close(); + } + + private void btnAd_Click(object sender, EventArgs e) + { + LiteDbHelper.AddSender("新建发件人"); + lbSender.DataSource = LiteDbHelper.GetAllSender(); + btnModify.Enabled = true; + } + + private void lbSender_SelectedIndexChanged(object sender, EventArgs e) + { + var mailSender = lbSender.SelectedValue as SenderDao; + txtName.Text = mailSender.Name; + txtMailAddr.Text = mailSender.UserName; + txtNickName.Text = mailSender.NickName; + txtPassword.Text = mailSender.Password; + if (mailSender.StmpServer != null) + { + cbStmpAll.SelectedValue = mailSender.StmpServer; + } + + } + + private void btnDel_Click(object sender, EventArgs e) + { + LiteDbHelper.DelSender(lbSender.SelectedValue as SenderDao); + lbSender.DataSource = LiteDbHelper.GetAllSender(); + if (lbSender.SelectedIndex == -1) + { + btnModify.Enabled = false; + } + } + } +} diff --git a/AutoPekage/frmAddSender.resx b/AutoPekage/frmAddSender.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/AutoPekage/frmAddSender.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/AutoPekage/frmPackage.Designer.cs b/AutoPekage/frmPackage.Designer.cs new file mode 100644 index 0000000..e7f6665 --- /dev/null +++ b/AutoPekage/frmPackage.Designer.cs @@ -0,0 +1,288 @@ +namespace AutoPekage +{ + partial class frmPackage + { + /// + /// 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() + { + this.rbDesktop = new System.Windows.Forms.RadioButton(); + this.rbCustom = new System.Windows.Forms.RadioButton(); + this.label1 = new System.Windows.Forms.Label(); + this.txtPackagePath = new System.Windows.Forms.TextBox(); + this.btnSelectPath = new System.Windows.Forms.Button(); + this.sfdPackagePath = new System.Windows.Forms.SaveFileDialog(); + this.btnOK = new System.Windows.Forms.Button(); + this.btnExit = new System.Windows.Forms.Button(); + this.gbMail = new System.Windows.Forms.GroupBox(); + this.txtContext = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.txtCaption = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.cbMailTo = new System.Windows.Forms.ComboBox(); + this.btnAddSender = new System.Windows.Forms.Button(); + this.label2 = new System.Windows.Forms.Label(); + this.cbSender = new System.Windows.Forms.ComboBox(); + this.cbSendMail = new System.Windows.Forms.CheckBox(); + this.gbMail.SuspendLayout(); + this.SuspendLayout(); + // + // rbDesktop + // + this.rbDesktop.AutoSize = true; + this.rbDesktop.Checked = true; + this.rbDesktop.Location = new System.Drawing.Point(9, 13); + this.rbDesktop.Name = "rbDesktop"; + this.rbDesktop.Size = new System.Drawing.Size(83, 16); + this.rbDesktop.TabIndex = 0; + this.rbDesktop.TabStop = true; + this.rbDesktop.Text = "打包到桌面"; + this.rbDesktop.UseVisualStyleBackColor = true; + this.rbDesktop.CheckedChanged += new System.EventHandler(this.rbDesktop_CheckedChanged); + // + // rbCustom + // + this.rbCustom.AutoSize = true; + this.rbCustom.Location = new System.Drawing.Point(139, 13); + this.rbCustom.Name = "rbCustom"; + this.rbCustom.Size = new System.Drawing.Size(107, 16); + this.rbCustom.TabIndex = 1; + this.rbCustom.Text = "打包到指定路径"; + this.rbCustom.UseVisualStyleBackColor = true; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(9, 40); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(41, 12); + this.label1.TabIndex = 2; + this.label1.Text = "路径:"; + // + // txtPackagePath + // + this.txtPackagePath.Enabled = false; + this.txtPackagePath.Location = new System.Drawing.Point(56, 37); + this.txtPackagePath.Name = "txtPackagePath"; + this.txtPackagePath.ReadOnly = true; + this.txtPackagePath.Size = new System.Drawing.Size(311, 21); + this.txtPackagePath.TabIndex = 3; + this.txtPackagePath.TextChanged += new System.EventHandler(this.txtPackagePath_TextChanged); + this.txtPackagePath.DoubleClick += new System.EventHandler(this.txtPackagePath_DoubleClick); + // + // btnSelectPath + // + this.btnSelectPath.Enabled = false; + this.btnSelectPath.Location = new System.Drawing.Point(374, 37); + this.btnSelectPath.Name = "btnSelectPath"; + this.btnSelectPath.Size = new System.Drawing.Size(40, 23); + this.btnSelectPath.TabIndex = 4; + this.btnSelectPath.Text = "..."; + this.btnSelectPath.UseVisualStyleBackColor = true; + this.btnSelectPath.Click += new System.EventHandler(this.btnSelectPath_Click); + // + // sfdPackagePath + // + this.sfdPackagePath.DefaultExt = "zip"; + this.sfdPackagePath.FileName = "我的打包文件.zip"; + this.sfdPackagePath.Filter = "zip文件|*.zip|所有文件|*.*"; + // + // btnOK + // + this.btnOK.Location = new System.Drawing.Point(56, 295); + this.btnOK.Name = "btnOK"; + this.btnOK.Size = new System.Drawing.Size(75, 23); + this.btnOK.TabIndex = 5; + this.btnOK.Text = "确定"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.btnOK_Click); + // + // btnExit + // + this.btnExit.Location = new System.Drawing.Point(292, 295); + this.btnExit.Name = "btnExit"; + this.btnExit.Size = new System.Drawing.Size(75, 23); + this.btnExit.TabIndex = 6; + this.btnExit.Text = "返回"; + this.btnExit.UseVisualStyleBackColor = true; + this.btnExit.Click += new System.EventHandler(this.btnExit_Click); + // + // gbMail + // + this.gbMail.Controls.Add(this.txtContext); + this.gbMail.Controls.Add(this.label5); + this.gbMail.Controls.Add(this.txtCaption); + this.gbMail.Controls.Add(this.label4); + this.gbMail.Controls.Add(this.label3); + this.gbMail.Controls.Add(this.cbMailTo); + this.gbMail.Controls.Add(this.btnAddSender); + this.gbMail.Controls.Add(this.label2); + this.gbMail.Controls.Add(this.cbSender); + this.gbMail.Enabled = false; + this.gbMail.Location = new System.Drawing.Point(9, 72); + this.gbMail.Name = "gbMail"; + this.gbMail.Size = new System.Drawing.Size(405, 217); + this.gbMail.TabIndex = 7; + this.gbMail.TabStop = false; + this.gbMail.Text = "发送邮件"; + // + // txtContext + // + this.txtContext.Location = new System.Drawing.Point(53, 100); + this.txtContext.Multiline = true; + this.txtContext.Name = "txtContext"; + this.txtContext.Size = new System.Drawing.Size(348, 106); + this.txtContext.TabIndex = 14; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(6, 103); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(41, 12); + this.label5.TabIndex = 13; + this.label5.Text = "内容:"; + // + // txtCaption + // + this.txtCaption.Location = new System.Drawing.Point(53, 73); + this.txtCaption.Name = "txtCaption"; + this.txtCaption.Size = new System.Drawing.Size(348, 21); + this.txtCaption.TabIndex = 12; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(6, 76); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(41, 12); + this.label4.TabIndex = 11; + this.label4.Text = "标题:"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(6, 48); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(77, 12); + this.label3.TabIndex = 10; + this.label3.Text = "收件人信息:"; + // + // cbMailTo + // + this.cbMailTo.FormattingEnabled = true; + this.cbMailTo.Location = new System.Drawing.Point(89, 45); + this.cbMailTo.Name = "cbMailTo"; + this.cbMailTo.Size = new System.Drawing.Size(310, 20); + this.cbMailTo.TabIndex = 9; + // + // btnAddSender + // + this.btnAddSender.Location = new System.Drawing.Point(326, 15); + this.btnAddSender.Name = "btnAddSender"; + this.btnAddSender.Size = new System.Drawing.Size(75, 23); + this.btnAddSender.TabIndex = 8; + this.btnAddSender.Text = "添加发件人"; + this.btnAddSender.UseVisualStyleBackColor = true; + this.btnAddSender.Click += new System.EventHandler(this.btnAddSender_Click); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(6, 20); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(77, 12); + this.label2.TabIndex = 2; + this.label2.Text = "发件人信息:"; + // + // cbSender + // + this.cbSender.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbSender.FormattingEnabled = true; + this.cbSender.Location = new System.Drawing.Point(89, 17); + this.cbSender.Name = "cbSender"; + this.cbSender.Size = new System.Drawing.Size(231, 20); + this.cbSender.TabIndex = 1; + // + // cbSendMail + // + this.cbSendMail.AutoSize = true; + this.cbSendMail.Location = new System.Drawing.Point(318, 12); + this.cbSendMail.Name = "cbSendMail"; + this.cbSendMail.Size = new System.Drawing.Size(96, 16); + this.cbSendMail.TabIndex = 0; + this.cbSendMail.Text = "同时发送邮件"; + this.cbSendMail.UseVisualStyleBackColor = true; + this.cbSendMail.CheckedChanged += new System.EventHandler(this.cbSendMail_CheckedChanged); + // + // frmPackage + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(427, 330); + this.Controls.Add(this.gbMail); + this.Controls.Add(this.btnExit); + this.Controls.Add(this.cbSendMail); + this.Controls.Add(this.btnOK); + this.Controls.Add(this.btnSelectPath); + this.Controls.Add(this.txtPackagePath); + this.Controls.Add(this.label1); + this.Controls.Add(this.rbCustom); + this.Controls.Add(this.rbDesktop); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.Name = "frmPackage"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "打包选项"; + this.gbMail.ResumeLayout(false); + this.gbMail.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.RadioButton rbDesktop; + private System.Windows.Forms.RadioButton rbCustom; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtPackagePath; + private System.Windows.Forms.Button btnSelectPath; + private System.Windows.Forms.SaveFileDialog sfdPackagePath; + private System.Windows.Forms.Button btnOK; + private System.Windows.Forms.Button btnExit; + private System.Windows.Forms.GroupBox gbMail; + private System.Windows.Forms.TextBox txtContext; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox txtCaption; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ComboBox cbMailTo; + private System.Windows.Forms.Button btnAddSender; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ComboBox cbSender; + private System.Windows.Forms.CheckBox cbSendMail; + } +} \ No newline at end of file diff --git a/AutoPekage/frmPackage.cs b/AutoPekage/frmPackage.cs new file mode 100644 index 0000000..3b5626e --- /dev/null +++ b/AutoPekage/frmPackage.cs @@ -0,0 +1,182 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Net; +using System.Net.Mail; +using System.Text; +using System.Windows.Forms; +using System.Linq; + +namespace AutoPekage +{ + public partial class frmPackage : Form + { + List fileList; + public frmPackage(List fileList) + { + this.fileList = fileList; + InitializeComponent(); + cbSender.DataSource = LiteDbHelper.GetAllSender(); + cbSender.DisplayMember = "Name"; + cbSender.ValueMember = "Id"; + cbMailTo.DataSource = LiteDbHelper.GetAllMailTo(); + cbMailTo.DisplayMember = "MailTo"; + var dao = LiteDbHelper.Settings; + cbSendMail.Checked = dao.SendMail; + if (dao.LastPath == null) + { + rbDesktop.Checked = true; + } + else + { + rbCustom.Checked = true; + txtPackagePath.Text = dao.LastPath; + + } + } + + private void btnSelectPath_Click(object sender, EventArgs e) + { + var dao = LiteDbHelper.Settings; + sfdPackagePath.FileName = dao.DefaultFileName; + if (sfdPackagePath.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + txtPackagePath.Text = sfdPackagePath.FileName; + } + } + + private void rbDesktop_CheckedChanged(object sender, EventArgs e) + { + if (rbDesktop.Checked) + { + txtPackagePath.Enabled = false; + btnSelectPath.Enabled = false; + txtCaption.Text = LiteDbHelper.Settings.DefaultFileName; + } + else + { + txtPackagePath.Enabled = true; + btnSelectPath.Enabled = true; + if (txtPackagePath.Text != null) + { + txtCaption.Text = Path.GetFileName(txtPackagePath.Text); + } + } + } + + private void txtPackagePath_DoubleClick(object sender, EventArgs e) + { + btnSelectPath.PerformClick(); + } + + private void btnOK_Click(object sender, EventArgs e) + { + string filePath; + var dao = LiteDbHelper.Settings; + if (rbDesktop.Checked) + { + filePath = Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory), dao.DefaultFileName); + if (dao.LastPath != null) + { + dao.LastPath = null; + LiteDbHelper.Settings = dao; + } + + } + else + { + filePath = txtPackagePath.Text; + if (dao.LastPath != filePath) + { + dao.LastPath = filePath; + LiteDbHelper.Settings = dao; + } + } + if (File.Exists(filePath)) + { + if (MessageBox.Show("该文件已存在,是否替换?", "自动打包", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) + { + File.Delete(filePath); + } + else + { + return; + } + } + ZipControl.Zip(filePath, fileList); + if (cbSendMail.Checked) + { + var info = LiteDbHelper.GetSenderById((int)cbSender.SelectedValue); + MailMessage msg = new MailMessage(); + msg.To.Add(cbMailTo.Text); + msg.From = new MailAddress(info.UserName, info.NickName, System.Text.Encoding.UTF8); + msg.Subject = txtCaption.Text;//邮件标题 + msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码 + msg.Body = txtContext.Text;//邮件内容 + msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码 + msg.IsBodyHtml = false;//是否是HTML邮件 + msg.Priority = MailPriority.Normal;//邮件优先级 + msg.Attachments.Add(new Attachment(filePath)); + SmtpClient client = new SmtpClient(info.StmpServer); + client.Credentials = new NetworkCredential(info.UserName, info.Password); + client.EnableSsl = true; + try + { + client.Send(msg); + //简单一点儿可以client.Send(msg); + MessageBox.Show("打包并发送邮件成功"); + if (LiteDbHelper.GetAllMailTo().Where(x => x.MailTo == cbMailTo.Text).Count() == 0) + { + LiteDbHelper.AddMailTo(cbMailTo.Text); + cbMailTo.DataSource = LiteDbHelper.GetAllMailTo(); + } + + } + catch (System.Net.Mail.SmtpException ex) + { + MessageBox.Show(ex.Message, "打包成功,发送邮件出错"); + return; + } + } + else + { + MessageBox.Show("打包完成"); + } + + } + + private void btnExit_Click(object sender, EventArgs e) + { + Close(); + } + + private void cbSendMail_CheckedChanged(object sender, EventArgs e) + { + if (cbSendMail.Checked) + { + gbMail.Enabled = true; + } + else + { + gbMail.Enabled = false; + } + } + + private void btnAddSender_Click(object sender, EventArgs e) + { + new frmAddSender().ShowDialog(); + cbSender.DataSource = LiteDbHelper.GetAllSender(); + } + + private void txtPackagePath_TextChanged(object sender, EventArgs e) + { + if (txtPackagePath.Text != null) + { + txtCaption.Text = Path.GetFileName(txtPackagePath.Text); + } + } + } +} diff --git a/AutoPekage/frmPackage.resx b/AutoPekage/frmPackage.resx new file mode 100644 index 0000000..499a9f3 --- /dev/null +++ b/AutoPekage/frmPackage.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + \ No newline at end of file diff --git a/AutoPekage/frmSettings.Designer.cs b/AutoPekage/frmSettings.Designer.cs new file mode 100644 index 0000000..6920806 --- /dev/null +++ b/AutoPekage/frmSettings.Designer.cs @@ -0,0 +1,330 @@ +namespace AutoPekage +{ + partial class frmSettings + { + /// + /// 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() + { + this.label1 = new System.Windows.Forms.Label(); + this.txtPackageName = new System.Windows.Forms.TextBox(); + this.rbLoad = new System.Windows.Forms.RadioButton(); + this.cbSendMail = new System.Windows.Forms.CheckBox(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.rbUnload = new System.Windows.Forms.RadioButton(); + this.cbAskLoad = new System.Windows.Forms.CheckBox(); + this.label2 = new System.Windows.Forms.Label(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.rbUnDelete = new System.Windows.Forms.RadioButton(); + this.cbAskDelete = new System.Windows.Forms.CheckBox(); + this.rbDelete = new System.Windows.Forms.RadioButton(); + this.btnOK = new System.Windows.Forms.Button(); + this.btnCancel = new System.Windows.Forms.Button(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.label3 = new System.Windows.Forms.Label(); + this.rbFileName = new System.Windows.Forms.RadioButton(); + this.rbCustom = new System.Windows.Forms.RadioButton(); + this.txtTitle = new System.Windows.Forms.TextBox(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(9, 19); + this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(101, 12); + this.label1.TabIndex = 0; + this.label1.Text = "默认打包文件名:"; + // + // txtPackageName + // + this.txtPackageName.Location = new System.Drawing.Point(117, 17); + this.txtPackageName.Margin = new System.Windows.Forms.Padding(2); + this.txtPackageName.Name = "txtPackageName"; + this.txtPackageName.Size = new System.Drawing.Size(140, 21); + this.txtPackageName.TabIndex = 1; + // + // rbLoad + // + this.rbLoad.AutoSize = true; + this.rbLoad.Location = new System.Drawing.Point(130, 18); + this.rbLoad.Margin = new System.Windows.Forms.Padding(2); + this.rbLoad.Name = "rbLoad"; + this.rbLoad.Size = new System.Drawing.Size(47, 16); + this.rbLoad.TabIndex = 2; + this.rbLoad.TabStop = true; + this.rbLoad.Text = "加载"; + this.rbLoad.UseVisualStyleBackColor = true; + // + // cbSendMail + // + this.cbSendMail.AutoSize = true; + this.cbSendMail.Location = new System.Drawing.Point(112, 15); + this.cbSendMail.Margin = new System.Windows.Forms.Padding(2); + this.cbSendMail.Name = "cbSendMail"; + this.cbSendMail.Size = new System.Drawing.Size(108, 16); + this.cbSendMail.TabIndex = 3; + this.cbSendMail.Text = "是否勾选发邮件"; + this.cbSendMail.UseVisualStyleBackColor = true; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.rbUnload); + this.groupBox1.Controls.Add(this.cbAskLoad); + this.groupBox1.Controls.Add(this.rbLoad); + this.groupBox1.Location = new System.Drawing.Point(11, 42); + this.groupBox1.Margin = new System.Windows.Forms.Padding(2); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Padding = new System.Windows.Forms.Padding(2); + this.groupBox1.Size = new System.Drawing.Size(244, 38); + this.groupBox1.TabIndex = 4; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "自动加载临时目录文件"; + // + // rbUnload + // + this.rbUnload.AutoSize = true; + this.rbUnload.Location = new System.Drawing.Point(181, 19); + this.rbUnload.Margin = new System.Windows.Forms.Padding(2); + this.rbUnload.Name = "rbUnload"; + this.rbUnload.Size = new System.Drawing.Size(59, 16); + this.rbUnload.TabIndex = 8; + this.rbUnload.TabStop = true; + this.rbUnload.Text = "不加载"; + this.rbUnload.UseVisualStyleBackColor = true; + // + // cbAskLoad + // + this.cbAskLoad.AutoSize = true; + this.cbAskLoad.Location = new System.Drawing.Point(4, 18); + this.cbAskLoad.Margin = new System.Windows.Forms.Padding(2); + this.cbAskLoad.Name = "cbAskLoad"; + this.cbAskLoad.Size = new System.Drawing.Size(96, 16); + this.cbAskLoad.TabIndex = 7; + this.cbAskLoad.Text = "询问是否加载"; + this.cbAskLoad.UseVisualStyleBackColor = true; + this.cbAskLoad.CheckedChanged += new System.EventHandler(this.cbAskLoad_CheckedChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(4, 16); + this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(101, 12); + this.label2.TabIndex = 5; + this.label2.Text = "勾选自动发邮件:"; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.rbUnDelete); + this.groupBox2.Controls.Add(this.cbAskDelete); + this.groupBox2.Controls.Add(this.rbDelete); + this.groupBox2.Location = new System.Drawing.Point(11, 84); + this.groupBox2.Margin = new System.Windows.Forms.Padding(2); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Padding = new System.Windows.Forms.Padding(2); + this.groupBox2.Size = new System.Drawing.Size(244, 40); + this.groupBox2.TabIndex = 9; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "自动删除临时目录文件"; + // + // rbUnDelete + // + this.rbUnDelete.AutoSize = true; + this.rbUnDelete.Location = new System.Drawing.Point(181, 18); + this.rbUnDelete.Margin = new System.Windows.Forms.Padding(2); + this.rbUnDelete.Name = "rbUnDelete"; + this.rbUnDelete.Size = new System.Drawing.Size(59, 16); + this.rbUnDelete.TabIndex = 8; + this.rbUnDelete.TabStop = true; + this.rbUnDelete.Text = "不删除"; + this.rbUnDelete.UseVisualStyleBackColor = true; + // + // cbAskDelete + // + this.cbAskDelete.AutoSize = true; + this.cbAskDelete.Location = new System.Drawing.Point(4, 18); + this.cbAskDelete.Margin = new System.Windows.Forms.Padding(2); + this.cbAskDelete.Name = "cbAskDelete"; + this.cbAskDelete.Size = new System.Drawing.Size(96, 16); + this.cbAskDelete.TabIndex = 7; + this.cbAskDelete.Text = "询问是否删除"; + this.cbAskDelete.UseVisualStyleBackColor = true; + this.cbAskDelete.CheckedChanged += new System.EventHandler(this.cbAskDelete_CheckedChanged); + // + // rbDelete + // + this.rbDelete.AutoSize = true; + this.rbDelete.Location = new System.Drawing.Point(130, 18); + this.rbDelete.Margin = new System.Windows.Forms.Padding(2); + this.rbDelete.Name = "rbDelete"; + this.rbDelete.Size = new System.Drawing.Size(47, 16); + this.rbDelete.TabIndex = 2; + this.rbDelete.TabStop = true; + this.rbDelete.Text = "删除"; + this.rbDelete.UseVisualStyleBackColor = true; + // + // btnOK + // + this.btnOK.Location = new System.Drawing.Point(41, 219); + this.btnOK.Margin = new System.Windows.Forms.Padding(2); + this.btnOK.Name = "btnOK"; + this.btnOK.Size = new System.Drawing.Size(75, 23); + this.btnOK.TabIndex = 10; + this.btnOK.Text = "确定"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.btnOK_Click); + // + // btnCancel + // + this.btnCancel.Location = new System.Drawing.Point(162, 219); + this.btnCancel.Margin = new System.Windows.Forms.Padding(2); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(75, 23); + this.btnCancel.TabIndex = 11; + this.btnCancel.Text = "取消"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.txtTitle); + this.groupBox3.Controls.Add(this.rbCustom); + this.groupBox3.Controls.Add(this.rbFileName); + this.groupBox3.Controls.Add(this.label3); + this.groupBox3.Controls.Add(this.label2); + this.groupBox3.Controls.Add(this.cbSendMail); + this.groupBox3.Location = new System.Drawing.Point(11, 128); + this.groupBox3.Margin = new System.Windows.Forms.Padding(2); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Padding = new System.Windows.Forms.Padding(2); + this.groupBox3.Size = new System.Drawing.Size(244, 87); + this.groupBox3.TabIndex = 10; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "邮件相关"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(4, 38); + this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(65, 12); + this.label3.TabIndex = 6; + this.label3.Text = "邮件标题:"; + // + // rbFileName + // + this.rbFileName.AutoSize = true; + this.rbFileName.Location = new System.Drawing.Point(85, 36); + this.rbFileName.Margin = new System.Windows.Forms.Padding(2); + this.rbFileName.Name = "rbFileName"; + this.rbFileName.Size = new System.Drawing.Size(59, 16); + this.rbFileName.TabIndex = 9; + this.rbFileName.TabStop = true; + this.rbFileName.Text = "文件名"; + this.rbFileName.UseVisualStyleBackColor = true; + // + // rbCustom + // + this.rbCustom.AutoSize = true; + this.rbCustom.Location = new System.Drawing.Point(157, 36); + this.rbCustom.Margin = new System.Windows.Forms.Padding(2); + this.rbCustom.Name = "rbCustom"; + this.rbCustom.Size = new System.Drawing.Size(83, 16); + this.rbCustom.TabIndex = 10; + this.rbCustom.TabStop = true; + this.rbCustom.Text = "自定义内容"; + this.rbCustom.UseVisualStyleBackColor = true; + this.rbCustom.CheckedChanged += new System.EventHandler(this.rbCustom_CheckedChanged); + // + // txtTitle + // + this.txtTitle.Enabled = false; + this.txtTitle.Location = new System.Drawing.Point(4, 56); + this.txtTitle.Margin = new System.Windows.Forms.Padding(2); + this.txtTitle.Name = "txtTitle"; + this.txtTitle.Size = new System.Drawing.Size(236, 21); + this.txtTitle.TabIndex = 12; + // + // frmSettings + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(270, 249); + this.Controls.Add(this.groupBox3); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnOK); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.txtPackageName); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.Margin = new System.Windows.Forms.Padding(2); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "frmSettings"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "设置"; + this.Load += new System.EventHandler(this.frmSettings_Load); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtPackageName; + private System.Windows.Forms.RadioButton rbLoad; + private System.Windows.Forms.CheckBox cbSendMail; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.RadioButton rbUnload; + private System.Windows.Forms.CheckBox cbAskLoad; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.RadioButton rbUnDelete; + private System.Windows.Forms.CheckBox cbAskDelete; + private System.Windows.Forms.RadioButton rbDelete; + private System.Windows.Forms.Button btnOK; + private System.Windows.Forms.Button btnCancel; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.TextBox txtTitle; + private System.Windows.Forms.RadioButton rbCustom; + private System.Windows.Forms.RadioButton rbFileName; + private System.Windows.Forms.Label label3; + } +} \ No newline at end of file diff --git a/AutoPekage/frmSettings.cs b/AutoPekage/frmSettings.cs new file mode 100644 index 0000000..9aa3052 --- /dev/null +++ b/AutoPekage/frmSettings.cs @@ -0,0 +1,122 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace AutoPekage +{ + public partial class frmSettings : Form + { + + private SettingsDao dao; + public frmSettings() + { + InitializeComponent(); + } + + private void frmSettings_Load(object sender, EventArgs e) + { + dao = LiteDbHelper.Settings; + txtPackageName.Text = dao.DefaultFileName; + cbSendMail.Checked = dao.SendMail; + cbAskLoad.Checked = dao.AskAutoLoadFile; + cbAskDelete.Checked = dao.AskAutoDeleteFile; + rbLoad.Checked = dao.AutoLoadFile == 1 ? true : false; + rbUnload.Checked = dao.AutoLoadFile == 0 ? true : false; + rbDelete.Checked = dao.AutoDeleteFile == 1 ? true : false; + rbUnDelete.Checked = dao.AutoDeleteFile == 0 ? true : false; + rbCustom.Checked = dao.TitleModel == 1 ? true : false; + rbFileName.Checked = dao.TitleModel == 0 ? true : false; + if (rbCustom.Checked) + { + txtTitle.Text = dao.Title; + txtTitle.Enabled = true; + } + + } + + private void cbAskLoad_CheckedChanged(object sender, EventArgs e) + { + if (cbAskLoad.Checked) + { + rbLoad.Enabled = false; + rbUnload.Enabled = false; + } + else + { + rbLoad.Enabled = true; + rbUnload.Enabled = true; + } + } + + private void cbAskDelete_CheckedChanged(object sender, EventArgs e) + { + if (cbAskDelete.Checked) + { + rbDelete.Enabled = false; + rbUnDelete.Enabled = false; + } + else + { + rbDelete.Enabled = true; + rbUnDelete.Enabled = true; + } + } + + private void btnOK_Click(object sender, EventArgs e) + { + dao.DefaultFileName = txtPackageName.Text; + dao.SendMail = cbSendMail.Checked; + dao.AskAutoLoadFile = cbAskLoad.Checked; + dao.AskAutoDeleteFile = cbAskDelete.Checked; + if (rbLoad.Checked) + { + dao.AutoLoadFile = 1; + } + else + { + dao.AutoLoadFile = 0; + } + if (rbDelete.Checked) + { + dao.AutoDeleteFile = 1; + } + else + { + dao.AutoDeleteFile = 0; + } + if (rbFileName.Checked) + { + dao.TitleModel = 0; + } + else + { + dao.TitleModel = 1; + dao.Title = txtTitle.Text; + } + LiteDbHelper.Settings = dao; + Close(); + } + + private void btnCancel_Click(object sender, EventArgs e) + { + Close(); + } + + private void rbCustom_CheckedChanged(object sender, EventArgs e) + { + if (rbCustom.Checked) + { + txtTitle.Enabled = true; + } + else + { + txtTitle.Enabled = false; + } + } + } +} diff --git a/AutoPekage/frmSettings.resx b/AutoPekage/frmSettings.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/AutoPekage/frmSettings.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/AutoPekage/frmStmpServer.Designer.cs b/AutoPekage/frmStmpServer.Designer.cs new file mode 100644 index 0000000..1519fa6 --- /dev/null +++ b/AutoPekage/frmStmpServer.Designer.cs @@ -0,0 +1,122 @@ +namespace AutoPekage +{ + partial class frmStmpServer + { + /// + /// 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() + { + this.label1 = new System.Windows.Forms.Label(); + this.txtServerName = new System.Windows.Forms.TextBox(); + this.txtStmpAddr = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.btnOK = new System.Windows.Forms.Button(); + this.btnCencel = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 24); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(101, 12); + this.label1.TabIndex = 0; + this.label1.Text = "发信服务器名称:"; + // + // txtServerName + // + this.txtServerName.Location = new System.Drawing.Point(119, 21); + this.txtServerName.Name = "txtServerName"; + this.txtServerName.Size = new System.Drawing.Size(153, 21); + this.txtServerName.TabIndex = 1; + // + // txtStmpAddr + // + this.txtStmpAddr.Location = new System.Drawing.Point(119, 53); + this.txtStmpAddr.Name = "txtStmpAddr"; + this.txtStmpAddr.Size = new System.Drawing.Size(153, 21); + this.txtStmpAddr.TabIndex = 3; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 56); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(65, 12); + this.label2.TabIndex = 2; + this.label2.Text = "Smtp地址:"; + // + // btnOK + // + this.btnOK.Location = new System.Drawing.Point(26, 88); + this.btnOK.Name = "btnOK"; + this.btnOK.Size = new System.Drawing.Size(75, 23); + this.btnOK.TabIndex = 4; + this.btnOK.Text = "确定"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.btnOK_Click); + // + // btnCencel + // + this.btnCencel.Location = new System.Drawing.Point(181, 88); + this.btnCencel.Name = "btnCencel"; + this.btnCencel.Size = new System.Drawing.Size(75, 23); + this.btnCencel.TabIndex = 5; + this.btnCencel.Text = "返回"; + this.btnCencel.UseVisualStyleBackColor = true; + this.btnCencel.Click += new System.EventHandler(this.btnCencel_Click); + // + // frmStmpServer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(284, 126); + this.Controls.Add(this.btnCencel); + this.Controls.Add(this.btnOK); + this.Controls.Add(this.txtStmpAddr); + this.Controls.Add(this.label2); + this.Controls.Add(this.txtServerName); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "frmStmpServer"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "添加发信服务器"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtServerName; + private System.Windows.Forms.TextBox txtStmpAddr; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button btnOK; + private System.Windows.Forms.Button btnCencel; + } +} \ No newline at end of file diff --git a/AutoPekage/frmStmpServer.cs b/AutoPekage/frmStmpServer.cs new file mode 100644 index 0000000..291dea5 --- /dev/null +++ b/AutoPekage/frmStmpServer.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace AutoPekage +{ + public partial class frmStmpServer : Form + { + public frmStmpServer() + { + InitializeComponent(); + } + + private void btnOK_Click(object sender, EventArgs e) + { + if (LiteDbHelper.GetAllStmpServer().Where(x => x.Stmp == txtStmpAddr.Text || x.ServerName == txtServerName.Text).Count() > 0) + { + MessageBox.Show("stmp地址或发信服务器名字已经存在,请检查!", "自动打包", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + LiteDbHelper.AddStmpServer(txtServerName.Text, txtStmpAddr.Text); + this.DialogResult = DialogResult.OK; + } + + private void btnCencel_Click(object sender, EventArgs e) + { + this.DialogResult = DialogResult.Cancel; + } + } +} diff --git a/AutoPekage/frmStmpServer.resx b/AutoPekage/frmStmpServer.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/AutoPekage/frmStmpServer.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/AutoPekage/packages.config b/AutoPekage/packages.config new file mode 100644 index 0000000..3a31189 --- /dev/null +++ b/AutoPekage/packages.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file