diff --git a/.gitignore b/.gitignore index 15a37b0..7717039 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,4 @@ *.ide/ *.ide-wal Tongue extraction_cropresizemethod/packages/OpenCvSharp3-AnyCPU.3.2.0.20170107/.signature.p7s +Tongue extraction_cropresizemethod/packages/ diff --git a/Tongue extraction_cropresizemethod/Tongue extraction.sln b/Tongue extraction_cropresizemethod/Tongue extraction.sln new file mode 100644 index 0000000..f516bea --- /dev/null +++ b/Tongue extraction_cropresizemethod/Tongue extraction.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DeepTongue1.6", "Tongue extraction\DeepTongue1.6.csproj", "{D382F9E7-A41D-4D82-A59B-CF4095134D6B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D382F9E7-A41D-4D82-A59B-CF4095134D6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D382F9E7-A41D-4D82-A59B-CF4095134D6B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D382F9E7-A41D-4D82-A59B-CF4095134D6B}.Debug|x64.ActiveCfg = Debug|x64 + {D382F9E7-A41D-4D82-A59B-CF4095134D6B}.Debug|x64.Build.0 = Debug|x64 + {D382F9E7-A41D-4D82-A59B-CF4095134D6B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D382F9E7-A41D-4D82-A59B-CF4095134D6B}.Release|Any CPU.Build.0 = Release|Any CPU + {D382F9E7-A41D-4D82-A59B-CF4095134D6B}.Release|x64.ActiveCfg = Release|x64 + {D382F9E7-A41D-4D82-A59B-CF4095134D6B}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Tongue extraction_cropresizemethod/Tongue extraction/App.config b/Tongue extraction_cropresizemethod/Tongue extraction/App.config new file mode 100644 index 0000000..8fc0551 --- /dev/null +++ b/Tongue extraction_cropresizemethod/Tongue extraction/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/Tongue extraction_cropresizemethod/Tongue extraction/DeepTongue1.6.csproj b/Tongue extraction_cropresizemethod/Tongue extraction/DeepTongue1.6.csproj new file mode 100644 index 0000000..acea616 --- /dev/null +++ b/Tongue extraction_cropresizemethod/Tongue extraction/DeepTongue1.6.csproj @@ -0,0 +1,188 @@ + + + + + + Debug + AnyCPU + {D382F9E7-A41D-4D82-A59B-CF4095134D6B} + WinExe + Properties + Tongue_extraction + DeepTongue1.6 + v4.7.1 + 512 + true + + + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + prompt + MinimumRecommendedRules.ruleset + true + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + true + + + DeepTongue_Icon.ico + + + + ..\packages\OpenCvSharp3-AnyCPU.3.2.0.20170107\lib\net40\OpenCvSharp.dll + True + + + ..\packages\OpenCvSharp3-AnyCPU.3.2.0.20170107\lib\net40\OpenCvSharp.Blob.dll + True + + + ..\packages\OpenCvSharp3-AnyCPU.3.2.0.20170107\lib\net40\OpenCvSharp.Extensions.dll + True + + + ..\packages\OpenCvSharp3-AnyCPU.3.2.0.20170107\lib\net40\OpenCvSharp.UserInterface.dll + True + + + + + + + ..\packages\System.Management.dll.1.0.0\lib\System.Management.dll + True + + + ..\packages\System.ValueTuple.4.4.0\lib\net47\System.ValueTuple.dll + True + + + + + + + + + + + + ..\packages\TensorFlowSharp.1.11.0\lib\net471\TensorFlowSharp.dll + True + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + False + Microsoft .NET Framework 4.7.1 %28x86 および x64%29 + true + + + False + .NET Framework 3.5 SP1 + false + + + + + + このプロジェクトは、このコンピューター上にない NuGet パッケージを参照しています。それらのパッケージをダウンロードするには、[NuGet パッケージの復元] を使用します。詳細については、http://go.microsoft.com/fwlink/?LinkID=322105 を参照してください。見つからないファイルは {0} です。 + + + + + + + \ No newline at end of file diff --git a/Tongue extraction_cropresizemethod/Tongue extraction/DeepTongue_Icon.ico b/Tongue extraction_cropresizemethod/Tongue extraction/DeepTongue_Icon.ico new file mode 100644 index 0000000..85fef71 --- /dev/null +++ b/Tongue extraction_cropresizemethod/Tongue extraction/DeepTongue_Icon.ico Binary files differ diff --git a/Tongue extraction_cropresizemethod/Tongue extraction/Form1.Designer.cs b/Tongue extraction_cropresizemethod/Tongue extraction/Form1.Designer.cs new file mode 100644 index 0000000..d637bde --- /dev/null +++ b/Tongue extraction_cropresizemethod/Tongue extraction/Form1.Designer.cs @@ -0,0 +1,420 @@ +namespace Tongue_extraction +{ + partial class Form1 + { + /// + /// 必要なデザイナー変数です。 + /// + 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() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); + this.button_start = new System.Windows.Forms.Button(); + this.pictureBox_input = new System.Windows.Forms.PictureBox(); + this.pictureBox_detection = new System.Windows.Forms.PictureBox(); + this.pictureBox_cropResized = new System.Windows.Forms.PictureBox(); + this.pictureBox_extraction = new System.Windows.Forms.PictureBox(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.pictureBox_output = new System.Windows.Forms.PictureBox(); + this.pictureBox_outputSRG = new System.Windows.Forms.PictureBox(); + this.pictureBox_maskSRG = new System.Windows.Forms.PictureBox(); + this.pictureBox_contract = new System.Windows.Forms.PictureBox(); + this.label_processingFileName = new System.Windows.Forms.Label(); + this.label_totalProgress = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.button_pause = new System.Windows.Forms.Button(); + this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_input)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_detection)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_cropResized)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_extraction)).BeginInit(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_output)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_outputSRG)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_maskSRG)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_contract)).BeginInit(); + this.panel2.SuspendLayout(); + this.SuspendLayout(); + // + // button_start + // + this.button_start.Dock = System.Windows.Forms.DockStyle.Fill; + this.button_start.Location = new System.Drawing.Point(0, 0); + this.button_start.Margin = new System.Windows.Forms.Padding(1, 2, 1, 2); + this.button_start.Name = "button_start"; + this.button_start.Size = new System.Drawing.Size(758, 49); + this.button_start.TabIndex = 0; + this.button_start.Text = "Start"; + this.button_start.UseVisualStyleBackColor = true; + this.button_start.Click += new System.EventHandler(this.button_start_Click); + // + // pictureBox_input + // + this.pictureBox_input.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBox_input.Location = new System.Drawing.Point(3, 4); + this.pictureBox_input.Margin = new System.Windows.Forms.Padding(1, 2, 1, 2); + this.pictureBox_input.Name = "pictureBox_input"; + this.pictureBox_input.Size = new System.Drawing.Size(250, 209); + this.pictureBox_input.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox_input.TabIndex = 1; + this.pictureBox_input.TabStop = false; + // + // pictureBox_detection + // + this.pictureBox_detection.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBox_detection.Location = new System.Drawing.Point(257, 4); + this.pictureBox_detection.Margin = new System.Windows.Forms.Padding(1, 2, 1, 2); + this.pictureBox_detection.Name = "pictureBox_detection"; + this.pictureBox_detection.Size = new System.Drawing.Size(250, 209); + this.pictureBox_detection.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox_detection.TabIndex = 2; + this.pictureBox_detection.TabStop = false; + // + // pictureBox_cropResized + // + this.pictureBox_cropResized.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBox_cropResized.Location = new System.Drawing.Point(511, 4); + this.pictureBox_cropResized.Margin = new System.Windows.Forms.Padding(1, 2, 1, 2); + this.pictureBox_cropResized.Name = "pictureBox_cropResized"; + this.pictureBox_cropResized.Size = new System.Drawing.Size(250, 209); + this.pictureBox_cropResized.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox_cropResized.TabIndex = 3; + this.pictureBox_cropResized.TabStop = false; + // + // pictureBox_extraction + // + this.pictureBox_extraction.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBox_extraction.Location = new System.Drawing.Point(511, 241); + this.pictureBox_extraction.Margin = new System.Windows.Forms.Padding(1, 2, 1, 2); + this.pictureBox_extraction.Name = "pictureBox_extraction"; + this.pictureBox_extraction.Size = new System.Drawing.Size(250, 209); + this.pictureBox_extraction.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox_extraction.TabIndex = 4; + this.pictureBox_extraction.TabStop = false; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Outset; + this.tableLayoutPanel1.ColumnCount = 4; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 4); + this.tableLayoutPanel1.Controls.Add(this.pictureBox_detection, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.pictureBox_input, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.label1, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.label2, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.label3, 2, 1); + this.tableLayoutPanel1.Controls.Add(this.label4, 3, 1); + this.tableLayoutPanel1.Controls.Add(this.label5, 0, 3); + this.tableLayoutPanel1.Controls.Add(this.label6, 1, 3); + this.tableLayoutPanel1.Controls.Add(this.label7, 2, 3); + this.tableLayoutPanel1.Controls.Add(this.label8, 3, 3); + this.tableLayoutPanel1.Controls.Add(this.pictureBox_cropResized, 2, 0); + this.tableLayoutPanel1.Controls.Add(this.pictureBox_extraction, 2, 2); + this.tableLayoutPanel1.Controls.Add(this.pictureBox_output, 3, 0); + this.tableLayoutPanel1.Controls.Add(this.pictureBox_outputSRG, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.pictureBox_maskSRG, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.pictureBox_contract, 3, 2); + this.tableLayoutPanel1.Controls.Add(this.label_processingFileName, 0, 5); + this.tableLayoutPanel1.Controls.Add(this.label_totalProgress, 2, 5); + this.tableLayoutPanel1.Controls.Add(this.panel2, 3, 4); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(1, 2, 1, 2); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 6; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 44.44445F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 44.44444F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 11.11111F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1018, 554); + this.tableLayoutPanel1.TabIndex = 5; + // + // panel1 + // + this.tableLayoutPanel1.SetColumnSpan(this.panel1, 3); + this.panel1.Controls.Add(this.button_start); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(3, 478); + this.panel1.Margin = new System.Windows.Forms.Padding(1, 2, 1, 2); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(758, 49); + this.panel1.TabIndex = 6; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.BackColor = System.Drawing.Color.White; + this.label1.Dock = System.Windows.Forms.DockStyle.Fill; + this.label1.Location = new System.Drawing.Point(5, 217); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(246, 20); + this.label1.TabIndex = 7; + this.label1.Text = "Input"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.BackColor = System.Drawing.Color.White; + this.label2.Dock = System.Windows.Forms.DockStyle.Fill; + this.label2.Location = new System.Drawing.Point(259, 217); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(246, 20); + this.label2.TabIndex = 8; + this.label2.Text = "Detection"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.BackColor = System.Drawing.Color.White; + this.label3.Dock = System.Windows.Forms.DockStyle.Fill; + this.label3.Location = new System.Drawing.Point(513, 217); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(246, 20); + this.label3.TabIndex = 9; + this.label3.Text = "Crop+Resize"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.BackColor = System.Drawing.Color.White; + this.label4.Dock = System.Windows.Forms.DockStyle.Fill; + this.label4.Location = new System.Drawing.Point(767, 217); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(246, 20); + this.label4.TabIndex = 10; + this.label4.Text = "Output"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.BackColor = System.Drawing.Color.White; + this.label5.Dock = System.Windows.Forms.DockStyle.Fill; + this.label5.Location = new System.Drawing.Point(5, 454); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(246, 20); + this.label5.TabIndex = 11; + this.label5.Text = "Output+SRG"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.BackColor = System.Drawing.Color.White; + this.label6.Dock = System.Windows.Forms.DockStyle.Fill; + this.label6.Location = new System.Drawing.Point(259, 454); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(246, 20); + this.label6.TabIndex = 12; + this.label6.Text = "Mask+SRG"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.BackColor = System.Drawing.Color.White; + this.label7.Dock = System.Windows.Forms.DockStyle.Fill; + this.label7.Location = new System.Drawing.Point(513, 454); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(246, 20); + this.label7.TabIndex = 13; + this.label7.Text = "Extraction"; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.BackColor = System.Drawing.Color.White; + this.label8.Dock = System.Windows.Forms.DockStyle.Fill; + this.label8.Location = new System.Drawing.Point(767, 454); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(246, 20); + this.label8.TabIndex = 14; + this.label8.Text = "Contract (last input)"; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // pictureBox_output + // + this.pictureBox_output.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBox_output.Location = new System.Drawing.Point(767, 5); + this.pictureBox_output.Name = "pictureBox_output"; + this.pictureBox_output.Size = new System.Drawing.Size(246, 207); + this.pictureBox_output.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox_output.TabIndex = 15; + this.pictureBox_output.TabStop = false; + // + // pictureBox_outputSRG + // + this.pictureBox_outputSRG.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBox_outputSRG.Location = new System.Drawing.Point(5, 242); + this.pictureBox_outputSRG.Name = "pictureBox_outputSRG"; + this.pictureBox_outputSRG.Size = new System.Drawing.Size(246, 207); + this.pictureBox_outputSRG.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox_outputSRG.TabIndex = 16; + this.pictureBox_outputSRG.TabStop = false; + // + // pictureBox_maskSRG + // + this.pictureBox_maskSRG.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBox_maskSRG.Location = new System.Drawing.Point(259, 242); + this.pictureBox_maskSRG.Name = "pictureBox_maskSRG"; + this.pictureBox_maskSRG.Size = new System.Drawing.Size(246, 207); + this.pictureBox_maskSRG.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox_maskSRG.TabIndex = 17; + this.pictureBox_maskSRG.TabStop = false; + // + // pictureBox_contract + // + this.pictureBox_contract.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBox_contract.Location = new System.Drawing.Point(767, 242); + this.pictureBox_contract.Name = "pictureBox_contract"; + this.pictureBox_contract.Size = new System.Drawing.Size(246, 207); + this.pictureBox_contract.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox_contract.TabIndex = 18; + this.pictureBox_contract.TabStop = false; + // + // label_processingFileName + // + this.label_processingFileName.AutoSize = true; + this.label_processingFileName.BackColor = System.Drawing.Color.White; + this.tableLayoutPanel1.SetColumnSpan(this.label_processingFileName, 2); + this.label_processingFileName.Dock = System.Windows.Forms.DockStyle.Fill; + this.label_processingFileName.Location = new System.Drawing.Point(5, 531); + this.label_processingFileName.Name = "label_processingFileName"; + this.label_processingFileName.Size = new System.Drawing.Size(500, 21); + this.label_processingFileName.TabIndex = 19; + this.label_processingFileName.Text = "Processing File: None"; + this.label_processingFileName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // label_totalProgress + // + this.label_totalProgress.AutoSize = true; + this.label_totalProgress.BackColor = System.Drawing.Color.White; + this.tableLayoutPanel1.SetColumnSpan(this.label_totalProgress, 2); + this.label_totalProgress.Dock = System.Windows.Forms.DockStyle.Fill; + this.label_totalProgress.Location = new System.Drawing.Point(513, 531); + this.label_totalProgress.Name = "label_totalProgress"; + this.label_totalProgress.Size = new System.Drawing.Size(500, 21); + this.label_totalProgress.TabIndex = 20; + this.label_totalProgress.Text = "Total Progress: 0/0"; + this.label_totalProgress.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // panel2 + // + this.panel2.Controls.Add(this.button_pause); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(767, 479); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(246, 47); + this.panel2.TabIndex = 21; + // + // button_pause + // + this.button_pause.Dock = System.Windows.Forms.DockStyle.Fill; + this.button_pause.Enabled = false; + this.button_pause.Location = new System.Drawing.Point(0, 0); + this.button_pause.Name = "button_pause"; + this.button_pause.Size = new System.Drawing.Size(246, 47); + this.button_pause.TabIndex = 0; + this.button_pause.Text = "Pause"; + this.button_pause.UseVisualStyleBackColor = true; + this.button_pause.Click += new System.EventHandler(this.button_pause_Click); + // + // backgroundWorker1 + // + this.backgroundWorker1.WorkerSupportsCancellation = true; + this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1018, 554); + this.Controls.Add(this.tableLayoutPanel1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(1, 2, 1, 2); + this.Name = "Form1"; + this.Text = "DeepTongue1.6"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_input)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_detection)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_cropResized)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_extraction)).EndInit(); + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel1.PerformLayout(); + this.panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_output)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_outputSRG)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_maskSRG)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox_contract)).EndInit(); + this.panel2.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button button_start; + private System.Windows.Forms.PictureBox pictureBox_input; + private System.Windows.Forms.PictureBox pictureBox_detection; + private System.Windows.Forms.PictureBox pictureBox_cropResized; + private System.Windows.Forms.PictureBox pictureBox_extraction; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Panel panel1; + private System.ComponentModel.BackgroundWorker backgroundWorker1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.PictureBox pictureBox_output; + private System.Windows.Forms.PictureBox pictureBox_outputSRG; + private System.Windows.Forms.PictureBox pictureBox_maskSRG; + private System.Windows.Forms.PictureBox pictureBox_contract; + private System.Windows.Forms.Label label_processingFileName; + private System.Windows.Forms.Label label_totalProgress; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Button button_pause; + } +} + diff --git a/Tongue extraction_cropresizemethod/Tongue extraction/Form1.cs b/Tongue extraction_cropresizemethod/Tongue extraction/Form1.cs new file mode 100644 index 0000000..6cfcc86 --- /dev/null +++ b/Tongue extraction_cropresizemethod/Tongue extraction/Form1.cs @@ -0,0 +1,710 @@ +using System; +using System.Windows.Forms; +using System.IO; +using System.Drawing; +using System.Drawing.Imaging; +using OpenCvSharp; +using System.ComponentModel; +using System.Runtime.InteropServices; +using TensorFlow; +using System.Threading; + +namespace Tongue_extraction +{ + public partial class Form1 : Form + { + //Use the RemoveSmallRegionDLL + [DllImport(@"RemoveSmallRegionDLL.dll", EntryPoint = "RemoveSmallRegion", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = false, CallingConvention = CallingConvention.StdCall)] + extern static void RemoveSmallRegion(string name, string name2, int AreaLimit, int CheckMode, int NeihborMode); + + Mat mat_input = new Mat(1024, 1280, MatType.CV_8UC3, 1); + Mat mat_drawBox = new Mat(1024, 1280, MatType.CV_8UC3, 1); + Mat mat_roi = new Mat(1024, 1280, MatType.CV_8UC3, 1); + Mat mat_roi256 = new Mat(256, 256, MatType.CV_8UC3, 1); + Mat mat_roisize = new Mat(1024, 1280, MatType.CV_8UC3, 1); + Mat mat_output = new Mat(1024, 1280, MatType.CV_8UC1, 1); + Mat mat_outputNoBox = new Mat(1024, 1280, MatType.CV_8UC1, 1); + Mat mat_outputChanged = new Mat(1024, 1280, MatType.CV_8UC1, 1); + Mat mat_mask = new Mat(1024, 1280, MatType.CV_8UC1, 1); + Mat mat_extraction = new Mat(1024, 1280, MatType.CV_8UC3, 1); + Mat mat_cropped; + Mat mat_outputSRGNoBox = new Mat(1024, 1280, MatType.CV_8UC1, 1); + Mat mat_outputSRG = new Mat(1024, 1280, MatType.CV_8UC1, 1); + Mat mat_maskSRG = new Mat(1024, 1280, MatType.CV_8UC1, 1); + + public static Bitmap bitmap_bitch; + string[] path; + + OpenCvSharp.Rect rectangle; + + byte[] byte_inputDetection; + byte[] byte_inputSegmentation; + OpenCvSharp.Point P1 = new OpenCvSharp.Point(); + OpenCvSharp.Point P2 = new OpenCvSharp.Point(); + + byte[] mask = new byte[200000]; + + string basepath; + string imageFile; + string time; + string modelFile; + int ii = 0; + int count; + + Rect roi = new Rect(); + int mmp = 0; + int pmm = 0; + + int check_detection = 0; + float max_score = 0; + + private ManualResetEvent manualReset = new ManualResetEvent(true); + + public Form1() + { + InitializeComponent(); + } + + private void button_start_Click(object sender, EventArgs e) + { + path = Directory.GetFiles("data"); + button_start.Enabled = false; + button_pause.Enabled = true; + pictureBox_input.Image = null; + pictureBox_input.Refresh(); + pictureBox_detection.Image = null; + pictureBox_detection.Refresh(); + pictureBox_cropResized.Image = null; + pictureBox_cropResized.Refresh(); + pictureBox_output.Image = null; + pictureBox_output.Refresh(); + pictureBox_outputSRG.Image = null; + pictureBox_outputSRG.Refresh(); + pictureBox_maskSRG.Image = null; + pictureBox_maskSRG.Refresh(); + pictureBox_extraction.Image = null; + pictureBox_extraction.Refresh(); + pictureBox_contract.Image = null; + pictureBox_contract.Refresh(); + backgroundWorker1.RunWorkerAsync(); + } + + public static class ImageUtil + { + // Convert the image in filename to a Tensor suitable as input to the Inception model. + public static TFTensor CreateTensorFromImageFile(byte[] contents, TFDataType destinationDataType = TFDataType.UInt8) + { + // DecodeJpeg uses a scalar String-valued tensor as input. + var tensor = TFTensor.CreateString(contents); + + TFGraph graph; + TFOutput input, output; + + // Construct a graph to normalize the image + ConstructGraphToNormalizeImage(out graph, out input, out output, destinationDataType); + + // Execute that graph to normalize this one image + using (var session = new TFSession(graph)) + { + var normalized = session.Run( + inputs: new[] { input }, + inputValues: new[] { tensor }, + outputs: new[] { output }); + + if (session != null) + { + session.Dispose(); + } + if (tensor != null) + { + tensor.Dispose(); + } + if (graph != null) + { + graph.Dispose(); + } + GC.Collect(); + GC.WaitForPendingFinalizers(); + GC.Collect(); + + return normalized[0]; + } + } + + // The inception model takes as input the image described by a Tensor in a very + // specific normalized format (a particular image size, shape of the input tensor, + // normalized pixel values etc.). + // + // This function constructs a graph of TensorFlow operations which takes as + // input a JPEG-encoded string and returns a tensor suitable as input to the + // inception model. + + public static void ConstructGraphToNormalizeImage(out TFGraph graph, out TFOutput input, out TFOutput output, TFDataType destinationDataType = TFDataType.UInt8) + { + const int W = 256; + const int H = 256; + const float Mean = 0; + const float Scale = 1; + graph = new TFGraph(); + input = graph.Placeholder(TFDataType.String); + output = graph.Cast(graph.Div( + x: graph.Sub( + x: graph.ResizeBilinear( + images: graph.ExpandDims( + input: graph.Cast( + graph.DecodeJpeg(contents: input, channels: 3), DstT: destinationDataType), + dim: graph.Const(0, "make_batch")), + size: graph.Const(new int[] { W, H }, "size")), + y: graph.Const(Mean, "mean")), + y: graph.Const(Scale, "scale")), destinationDataType); + GC.Collect(); + GC.WaitForPendingFinalizers(); + GC.Collect(); + } + } + + public static class ImageUtil2 + { + // Convert the image in filename to a Tensor suitable as input to the Inception model. + public static TFTensor CreateTensorFromImageFile(byte[] contents, TFDataType destinationDataType = TFDataType.Float) + { + // DecodeJpeg uses a scalar String-valued tensor as input. + var tensor = TFTensor.CreateString(contents); + + TFGraph graph; + TFOutput input, output; + + // Construct a graph to normalize the image + ConstructGraphToNormalizeImage(out graph, out input, out output, destinationDataType); + + // Execute that graph to normalize this one image + using (var session = new TFSession(graph)) + { + var normalized = session.Run( + inputs: new[] { input }, + inputValues: new[] { tensor }, + outputs: new[] { output }); + + if (session != null) + { + session.Dispose(); + } + if (tensor != null) + { + tensor.Dispose(); + } + if (graph != null) + { + graph.Dispose(); + } + GC.Collect(); + GC.WaitForPendingFinalizers(); + GC.Collect(); + + return normalized[0]; + } + } + + // The inception model takes as input the image described by a Tensor in a very + // specific normalized format (a particular image size, shape of the input tensor, + // normalized pixel values etc.). + // + // This function constructs a graph of TensorFlow operations which takes as + // input a JPEG-encoded string and returns a tensor suitable as input to the + // inception model. + + public static void ConstructGraphToNormalizeImage(out TFGraph graph, out TFOutput input, out TFOutput output, TFDataType destinationDataType = TFDataType.Float) + { + const int W = 256; + const int H = 256; + //const int W = 512; + //const int H = 512; + + const float Mean = 128; + const float Scale = 128; + graph = new TFGraph(); + input = graph.Placeholder(TFDataType.String); + output = graph.Cast(graph.Div( + x: graph.Sub( + x: graph.ResizeBilinear( + images: graph.ExpandDims( + input: graph.Cast( + graph.DecodeJpeg(contents: input, channels: 3), DstT: TFDataType.Float), + dim: graph.Const(0, "make_batch")), + size: graph.Const(new int[] { W, H }, "size")), + y: graph.Const(Mean, "mean")), + y: graph.Const(Scale, "scale")), destinationDataType); + GC.Collect(); + GC.WaitForPendingFinalizers(); + GC.Collect(); + } + } + + public static byte[] Bitmap2Byte(Bitmap bitmap) + { + using (MemoryStream stream = new MemoryStream()) + { + bitmap.Save(stream, ImageFormat.Jpeg); + byte[] data = new byte[stream.Length]; + stream.Seek(0, SeekOrigin.Begin); + stream.Read(data, 0, Convert.ToInt32(stream.Length)); + return data; + } + } + + private static string DownloadDefaultModel(string dir) + { + var modelFile = Path.Combine(dir, "AREinProcess_step12800.pb"); + return modelFile; + } + + private static string DownloadDefaultModel_noBoxPix2Pix(string dir) + { + var modelFile = Path.Combine(dir, "424_256_64_5999_scale300_enhancment_L1loss0.02001.pb"); + return modelFile; + } + + public static Bitmap ToGrayBitmap(byte[] rawValues, int width, int height) + { + //// Apply for a target bitmap variable and lock its memory area + Bitmap bmp = new Bitmap(width, height, PixelFormat.Format8bppIndexed); + BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, width, height), + ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed); + + //// Get image parameters + int stride = bmpData.Stride; // Width of the scan line + int offset = stride - width; // Show gap between width and scan line width + IntPtr iptr = bmpData.Scan0; // Get the memory start position of bmpData + int scanBytes = stride * height;// Use stride width to indicate that this is the size of the memory area + + //// The following is to convert the original display size byte array to the byte array actually stored in memory. + int posScan = 0, posReal = 0;// Set two position pointers respectively, pointing to the source array and the target array + byte[] pixelValues = new byte[scanBytes]; //Allocate memory for the target array + + for (int x = 0; x < height; x++) + { + //// The following loop section is a simulated line scan + for (int y = 0; y < width; y++) + { + pixelValues[posScan++] = rawValues[posReal++]; + } + posScan += offset; //At the end of the line scan, move the target position pointer over that "gap" + } + + //// Use Marshal's Copy method to copy the just obtained memory byte array into BitmapData. + System.Runtime.InteropServices.Marshal.Copy(pixelValues, 0, iptr, scanBytes); + bmp.UnlockBits(bmpData); // Unlock the memory area + + //// The following code is to modify the index table of the generated bitmap, from pseudo color to grayscale + ColorPalette tempPalette; + using (Bitmap tempBmp = new Bitmap(1, 1, PixelFormat.Format8bppIndexed)) + { + tempPalette = tempBmp.Palette; + } + for (int i = 0; i < 256; i++) + { + tempPalette.Entries[i] = Color.FromArgb(i, i, i); + } + + bmp.Palette = tempPalette; + + //// The algorithm ends here and returns the result. + return bmp; + } + + private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) + { + using (MemoryStream ms = new MemoryStream()) + { + for (int a = 0; a < path.Length; a++) + { + manualReset.WaitOne(); + ii = 0; + basepath = Directory.GetCurrentDirectory(); + imageFile = System.Text.RegularExpressions.Regex.Replace(path[a], "data", ""); + label_processingFileName.Text = "Processing File: " + imageFile; + count = a + 1; + label_totalProgress.Text = "Total Progress: " + count + "/" + path.Length; + mat_input = Cv2.ImRead(basepath + "\\data" + imageFile); + bitmap_bitch = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat_input); + pictureBox_input.Image = bitmap_bitch; + pictureBox_input.Refresh(); + label8.BackColor = Color.White; + label1.BackColor = Color.Red; + mat_drawBox = mat_input.Clone(); + mat_cropped = new Mat(mat_input.Size(), MatType.CV_8UC3, 1); + byte_inputDetection = Bitmap2Byte(bitmap_bitch); + //using (var graph = new TFGraph()) + //{ + // var model = File.ReadAllBytes(Directory.GetCurrentDirectory() + "/Detection_Normal.pb"); + // graph.Import(model, ""); + + // using (var session = new TFSession(graph)) + // { + // var tensor = ImageUtil.CreateTensorFromImageFile(byte_inputDetection, TFDataType.UInt8); + + // var runner = session.GetRunner(); + // runner + + // .AddInput(graph["image_tensor"][0], tensor) + // .Fetch("detection_boxes", "detection_scores", "detection_classes", "num_detections"); + + // var output = runner.Run(); + // var boxes = (float[,,])output[0].GetValue(); + // var scores = (float[,])output[1].GetValue(); + // //var classes = (float[,])output[2].GetValue(); + // //var detections = (float[])output[3].GetValue(); + + // check_detection = 0; + // max_score = 0; + + // for (int i = 0; i < scores.Length; i++) + // { + // if ((scores[0, i] > 0.5) && (scores[0, i] > max_score)) + // { + // max_score = scores[0, i]; + // float y_min = boxes[0, i, 0] * (float)bitmap_bitch.Height; + // float x_min = boxes[0, i, 1] * (float)bitmap_bitch.Width; + // float y_max = boxes[0, i, 2] * (float)bitmap_bitch.Height; + // float x_max = boxes[0, i, 3] * (float)bitmap_bitch.Width; + // P1.X = (int)x_min; + // P1.Y = (int)y_min; + // P2.X = (int)x_max; + // P2.Y = (int)y_max; + // Cv2.Rectangle(mat_drawBox, P1, P2, new Scalar(0, 255, 0), 5); + // rectangle.X = (int)x_min; + // rectangle.Y = (int)y_min; + // rectangle.Width = (int)(x_max - x_min); + // rectangle.Height = (int)(y_max - y_min); + + // check_detection = 1; + // } + // } + // } + //} + //if (check_detection == 1) + //{ + // mat_drawBox.SaveImage(basepath + "\\detection" + imageFile); + // bitmap_bitch = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat_drawBox); + // pictureBox_detection.Image = bitmap_bitch; + // pictureBox_detection.Refresh(); + // label1.BackColor = Color.White; + // label2.BackColor = Color.Red; + //} + //else + //{ + // MessageBox.Show("Error: Sorry can not detect any tongue in this image. Press [OK] to skip preprocessing.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + // time = DateTime.Now.ToLocalTime().ToString(); + // File.AppendAllText("DetectionFailedLog.txt ", time + " " + imageFile + "\n"); + // pictureBox_detection.Image = null; + // pictureBox_detection.Refresh(); + // pictureBox_cropResized.Image = null; + // pictureBox_cropResized.Refresh(); + // pictureBox_output.Image = null; + // pictureBox_output.Refresh(); + // pictureBox_outputSRG.Image = null; + // pictureBox_outputSRG.Refresh(); + // pictureBox_maskSRG.Image = null; + // pictureBox_maskSRG.Refresh(); + // pictureBox_extraction.Image = null; + // pictureBox_extraction.Refresh(); + // pictureBox_contract.Image = null; + // pictureBox_contract.Refresh(); + // bitmap_bitch = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat_input); + // byte_inputSegmentation = Bitmap2Byte(bitmap_bitch); + + // Thread.Sleep(1000); + // modelFile = DownloadDefaultModel_noBoxPix2Pix(basepath); + // using (var graph = new TFGraph()) + // { + // var model = File.ReadAllBytes(modelFile); + // graph.Import(model, ""); + + // using (var session = new TFSession(graph)) + // { + // var tensor = ImageUtil2.CreateTensorFromImageFile(byte_inputSegmentation); + + // var runner = session.GetRunner(); + // runner + // .AddInput(graph["generator/input_image"][0], tensor) + // .Fetch(graph["generator/prediction"][0]); + // var output = runner.Run(); + // float[,,,] resultfloat = (float[,,,])output[0].GetValue(jagged: false); + + // for (int p = 0; p < 256; p++) + // { + // for (int q = 0; q < 256; q++) + // { + // float check = resultfloat[0, p, q, 0]; + // if (check < 0) + // { + // mask[ii] = 0; + // } + // else + // { + // mask[ii] = 255; + // } + // ii++; + // } + // } + // } + // } + // Thread.Sleep(1000); + // bitmap_bitch = ToGrayBitmap(mask, 256, 256); + // mat_outputNoBox = OpenCvSharp.Extensions.BitmapConverter.ToMat(bitmap_bitch); + // bitmap_bitch = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat_outputNoBox); + // pictureBox_output.Image = bitmap_bitch; + // pictureBox_output.Refresh(); + // label1.BackColor = Color.White; + // label4.BackColor = Color.Red; + // mat_outputNoBox.SaveImage(basepath + "\\output256" + imageFile); + // try + // { + // RemoveSmallRegion(basepath + "\\output256" + imageFile, basepath + "\\output_changed1" + imageFile, 500, 1, 1); + // RemoveSmallRegion(basepath + "\\output_changed1" + imageFile, basepath + "\\output_changed2" + imageFile, 500, 0, 0); + // } + // catch + // { + // MessageBox.Show("Error: Unable to reprocess! Please check is there [RemoveSmallRegionDLL.dll] file in floder?", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + // break; + // } + // mat_outputSRGNoBox = new Mat(basepath + "\\output_changed2" + imageFile, ImreadModes.GrayScale); + // bitmap_bitch = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat_outputSRGNoBox); + // pictureBox_outputSRG.Image = bitmap_bitch; + // pictureBox_outputSRG.Refresh(); + // label4.BackColor = Color.White; + // label5.BackColor = Color.Red; + // Cv2.Resize(mat_outputSRGNoBox, mat_mask, mat_input.Size()); + // mat_mask.SaveImage(basepath + "\\mask" + imageFile); + // try + // { + // RemoveSmallRegion(basepath + "\\mask" + imageFile, basepath + "\\mask_changed1" + imageFile, 500, 1, 1); + // RemoveSmallRegion(basepath + "\\mask_changed1" + imageFile, basepath + "\\mask_changed2" + imageFile, 500, 0, 0); + // } + // catch + // { + // MessageBox.Show("Error: Unable to reprocess! Please check is there [RemoveSmallRegionDLL.dll] file in floder?", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + // break; + // } + // mat_maskSRG = new Mat(basepath + "\\mask_changed2" + imageFile, ImreadModes.GrayScale); + // Cv2.Threshold(mat_maskSRG, mat_maskSRG, 128, 255, ThresholdTypes.Binary); + // bitmap_bitch = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat_maskSRG); + // pictureBox_maskSRG.Image = bitmap_bitch; + // pictureBox_maskSRG.Refresh(); + // label5.BackColor = Color.White; + // label6.BackColor = Color.Red; + // mat_extraction = mat_input.Clone(); + // for (int i = 0; i < mat_input.Height; i++) + // { + // for (int j = 0; j < mat_input.Width; j++) + // { + // Vec3b pix = mat_extraction.At(i, j); + // if (mat_maskSRG.At(i, j) == 0) + // { + // pix[0] = (byte)(255); + // pix[1] = (byte)(255); + // pix[2] = (byte)(255); + // mat_extraction.Set(i, j, pix); + // } + // else + // { + // pix[0] = (byte)(mat_extraction.At(i, j).Item0); + // pix[1] = (byte)(mat_extraction.At(i, j).Item1); + // pix[2] = (byte)(mat_extraction.At(i, j).Item2); + // mat_extraction.Set(i, j, pix); + // } + // } + // } + // mat_extraction.SaveImage(basepath + "\\extraction" + imageFile); + // bitmap_bitch = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat_extraction); + // pictureBox_extraction.Image = bitmap_bitch; + // pictureBox_extraction.Refresh(); + // label6.BackColor = Color.White; + // label7.BackColor = Color.Red; + // bitmap_bitch = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat_input); + // pictureBox_contract.Image = bitmap_bitch; + // pictureBox_contract.Refresh(); + // label7.BackColor = Color.White; + // label8.BackColor = Color.Red; + // continue; + //} + //for (int i = P1.Y; i < P2.Y; i++) + //{ + // for (int j = P1.X; j < P2.X; j++) + // { + // Vec3b pix = mat_input.At(i, j); + // mat_cropped.Set(i, j, pix); + // } + //} + //mat_cropped.SaveImage(basepath + "\\cropped" + imageFile); + //OpenCvSharp.Size size_roi = new OpenCvSharp.Size(); + //size_roi.Height = rectangle.Height; + //size_roi.Width = rectangle.Width; + //roi = new Rect(P1, size_roi); + //mat_roisize = mat_input.Clone(roi); + //Cv2.Resize(mat_roisize, mat_roi, mat_roi256.Size()); + //mat_roi.SaveImage(basepath + "\\cropresized" + imageFile); + //bitmap_bitch = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat_roi); + //pictureBox_cropResized.Image = bitmap_bitch; + //pictureBox_cropResized.Refresh(); + //label2.BackColor = Color.White; + //label3.BackColor = Color.Red; + //byte_inputSegmentation = Bitmap2Byte(bitmap_bitch); + //Thread.Sleep(1000); + //modelFile = DownloadDefaultModel(basepath); + //using (var graph = new TFGraph()) + //{ + // var model = File.ReadAllBytes(modelFile); + // graph.Import(model, ""); + + // using (var session = new TFSession(graph)) + // { + // var tensor = ImageUtil2.CreateTensorFromImageFile(byte_inputSegmentation); + // var runner = session.GetRunner(); + // runner + // //.AddInput(graph["generator/input_image"][0], tensor) + // //.Fetch(graph["generator/prediction"][0]); + + // .AddInput(graph["input_image"][0], tensor) + // .Fetch(graph["generator1/decoder_1/Tanh"][0]); + + // var output = runner.Run(); + // float[,,,] resultfloat = (float[,,,])output[0].GetValue(jagged: false); + + // for (int p = 0; p < 256; p++) + // { + // for (int q = 0; q < 256; q++) + // { + // float check = resultfloat[0, p, q, 0]; + // if (check < 0) + // { + // mask[ii] = 0; + // } + // else + // { + // mask[ii] = 255; + // } + // ii++; + // } + // } + // } + //} + //Thread.Sleep(1000); + //bitmap_bitch = ToGrayBitmap(mask, 256, 256); + //mat_output = OpenCvSharp.Extensions.BitmapConverter.ToMat(bitmap_bitch); + //bitmap_bitch = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat_output); + //pictureBox_output.Image = bitmap_bitch; + //pictureBox_output.Refresh(); + //label3.BackColor = Color.White; + //label4.BackColor = Color.Red; + //mat_output.SaveImage(basepath + "\\output256" + imageFile); + //try + //{ + // RemoveSmallRegion(basepath + "\\output256" + imageFile, basepath + "\\output_changed1" + imageFile, 500, 1, 1); + // RemoveSmallRegion(basepath + "\\output_changed1" + imageFile, basepath + "\\output_changed2" + imageFile, 500, 0, 0); + //} + //catch + //{ + // MessageBox.Show("Error: Unable to reprocess! Please check is there [RemoveSmallRegionDLL.dll] file in floder?", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + // break; + //} + //mat_outputSRG = new Mat(basepath + "\\output_changed2" + imageFile, ImreadModes.GrayScale); + //bitmap_bitch = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat_outputSRG); + //pictureBox_outputSRG.Image = bitmap_bitch; + //pictureBox_outputSRG.Refresh(); + //label4.BackColor = Color.White; + //label5.BackColor = Color.Red; + //Cv2.Resize(mat_outputSRG, mat_outputChanged, mat_roisize.Size()); + //mat_outputChanged.SaveImage(basepath + "\\output_resized" + imageFile); + //mat_mask = new Mat(mat_input.Size(), MatType.CV_8UC1, 1); + //for (int i = P1.Y; i < P2.Y; i++) + //{ + // for (int j = P1.X; j < P2.X; j++) + // { + // int pix = mat_outputChanged.At(mmp, pmm); + // mat_mask.Set(i, j, pix); + // pmm++; + // } + // mmp++; + // pmm = 0; + //} + //mmp = 0; + //Cv2.Resize(mat_mask, mat_mask, mat_input.Size()); + //mat_mask.SaveImage(basepath + "\\mask" + imageFile); + //try + //{ + // RemoveSmallRegion(basepath + "\\mask" + imageFile, basepath + "\\mask_changed1" + imageFile, 500, 1, 1); + // RemoveSmallRegion(basepath + "\\mask_changed1" + imageFile, basepath + "\\mask_changed2" + imageFile, 500, 0, 0); + //} + //catch + //{ + // MessageBox.Show("Error: Unable to reprocess! Please check is there [RemoveSmallRegionDLL.dll] file in floder?", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + // break; + //} + RemoveSmallRegion(basepath + "\\output256" + imageFile, basepath + "\\mask_changed1" + imageFile, 2000, 1, 1); + RemoveSmallRegion(basepath + "\\mask_changed1" + imageFile, basepath + "\\mask_changed2" + imageFile, 2000, 0, 0); + mat_maskSRG = new Mat(basepath + "\\mask_changed2" + imageFile, ImreadModes.GrayScale); + Cv2.Threshold(mat_maskSRG, mat_maskSRG, 128, 255, ThresholdTypes.Binary); + bitmap_bitch = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat_maskSRG); + pictureBox_maskSRG.Image = bitmap_bitch; + pictureBox_maskSRG.Refresh(); + label5.BackColor = Color.White; + label6.BackColor = Color.Red; + mat_extraction = mat_input.Clone(); + for (int i = 0; i < mat_input.Height; i++) + { + for (int j = 0; j < mat_input.Width; j++) + { + Vec3b pix = mat_extraction.At(i, j); + if (mat_maskSRG.At(i, j) == 0) + { + pix[0] = (byte)(255); + pix[1] = (byte)(255); + pix[2] = (byte)(255); + mat_extraction.Set(i, j, pix); + } + else + { + pix[0] = (byte)(mat_extraction.At(i, j).Item0); + pix[1] = (byte)(mat_extraction.At(i, j).Item1); + pix[2] = (byte)(mat_extraction.At(i, j).Item2); + mat_extraction.Set(i, j, pix); + } + } + } + mat_extraction.SaveImage(basepath + "\\extraction" + imageFile); + bitmap_bitch = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat_extraction); + pictureBox_extraction.Image = bitmap_bitch; + pictureBox_extraction.Refresh(); + label6.BackColor = Color.White; + label7.BackColor = Color.Red; + bitmap_bitch = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat_input); + pictureBox_contract.Image = bitmap_bitch; + pictureBox_contract.Refresh(); + label7.BackColor = Color.White; + label8.BackColor = Color.Red; + time = DateTime.Now.ToLocalTime().ToString(); + File.AppendAllText("Log.txt ", time + " " + imageFile + " Done!\n"); + } + MessageBox.Show("Finished!"); + button_start.Enabled = true; + button_pause.Enabled = false; + label_processingFileName.Text = "Processing File: None"; + } + } + + private void button_pause_Click(object sender, EventArgs e) + { + if (button_pause.Text == "Pause") + { + manualReset.Reset(); + button_pause.Text = "Continue"; + } + else + { + manualReset.Set(); + button_pause.Text = "Pause"; + } + } + } +} \ No newline at end of file diff --git a/Tongue extraction_cropresizemethod/Tongue extraction/Form1.resx b/Tongue extraction_cropresizemethod/Tongue extraction/Form1.resx new file mode 100644 index 0000000..e1424ee --- /dev/null +++ b/Tongue extraction_cropresizemethod/Tongue extraction/Form1.resx @@ -0,0 +1,1080 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 58 + + + + + AAABAAEAa4AAAAEAIAAo3gAAFgAAACgAAABrAAAAAAEAAAEAIAAAAAAAANYAAGM4AABjOAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA5eTmAOXk5gDl5OYA5eTmA+Xk5gLl5OYB5ePlAOjs6gDl5OUA4dznAOfn + 5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXj5gDl5OYA5eTmAOXj5gHl5OYA5enrAObe4QDl5OYC5eTmBOXk + 5gTl5OYD5eTmAebk5wDk5OcA5+XkAOXj6ADl5ecA5+HnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5eTmAOXk5QDl4+UA5eTlCeXk5kPl5OYl5uXmBujl + 5gDn5eYA3OTmAOXl5QDl5eUA5ebjAOXk5gPl5OYE5eTmA+Xk5gLl5OYB5uPmAO3o7gDj5OQA6+LsAObl + 5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADl5OYA5eTmA+Xk5gDl5OZN5eTm/+Xk + 5vjl5Obe5eTmuuXk5pDl5OZj5eTmOeXk5hbx5ewB/+T/AOfk5wDl6OoA5OPlAOTk5QDl5OYB5eTmBOXk + 5gTl5OYD5eTmAuXk5gHk4eYA5uHkAObk5QDk4ugA5eXlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5eTmAOTj5QDl5OYD5eTmAOXk + 5qfl5Ob/5eTm++Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm8eXk5s/l5Oap5eTmfeXk5lDl5OYq5eTmCubn + 5gDm5uYA5d7mAOXm5QDk6OQA5OjkAOXl5gPl5OYE5eTmBOXk5gLl5OYB5eTmAObo5gDt8+IA5ubmAOXl + 5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADm4+YA5eTmAeXk + 5gDl5OYW5eTm7OXk5v/l5Ob95eTm/eXk5vzl5Ob75eTm++Xk5v7l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5vzl5Obl5eTmwOXk5pbl5OZp5eTmP+Xk5hvm5+YC5+jmAObl5gDr5OYA5OTnAOTk5wDm5OcB5eTmBOXk + 5gTl5OYD5eTmAuXk5gHl5OcA4uXkAOTl5QDq5eoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXk + 5gDl5OYD5eTmAOXk5lfl5Ob/5eTm/OXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v7l5Ob95eTm++Xk + 5vvl5Ob85eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm9eXk5tXl5Oau5eTmg+Xk5lbl5OYu5eTnDuPk + 5QDj5OUA5+XoAOXj6ADg89UA4e7XAOXk5gLl5OYE5eTmBOXk5gLl5OYB5eTmAObl5gDl5OUA5uTmAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADj4uMA5uTmAOXk5gPl5OYA5eTmpOXk5v/l5Ob85eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob+5eTm/eXk5vzl5Ob75eTm++Xk5v3l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v7l5Obp5eTmx+Xk5p7l5OZw5eTmROXk5h/m5eYE5eXmAObk5gDl5OYA5eTmAOXk5gDl5OYB5eTmA+Xk + 5gTl5OYD5eTmAuXk5gHl5OUA6tneAOTm5wDk4uQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAOTk5QDl5OYB5eTmAOXk5hDl5Obl5eTm/+Xk5v7l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v7l5Ob95eTm/OXk + 5vvl5Ob85eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm+OXk5tvl5Oa25eTmiuXk5l3l5OYz5uPmEsvl + zQDg5eIA5+PnAObk5gDm5OYA5uTmAOXk5wHp4+UA6uPlALb09QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA5eXnAOXk5gPl5OYA5eTmSeXk5v/l5Ob95eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/uXk5vzl5Ob75eTm++Xk5v3l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Obt5eTmzOXk5qPl5OZ25eTmS+Xk5iXl5ecH5eXnAOPj5QDf398A39/fAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOji6ADk4+UA5eTmBOXk5gDl5OaT5eTm/+Xk5vvl5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v7l5Ob95eTm/OXk + 5vvl5Ob85eTm/uXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm+eXk5ufl5OaY5eXnAOXl5wHl4+UAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5OTlAOXk5wHl5ecA5eXoB+Xk5tjl5Ob/5eTm/eXk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/uXk5v3l5Ob75eTm++Xk5v3l5Ob75eTm/+Xk5n3l5OYA5eTmBOXm + 6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADm5OYA5eTmA+Xk5gDl5OY95eTm/+Xk + 5v7l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/uXk5v/l5Obr5eTmGOXk + 5gDl5OYB4ODgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7entAOXk5gDl5OYE5eTmAOXk + 5onl5Ob/5eTm++Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob75eTm/+Xk + 5pbl5OYA5eTmA+Xk5QDm5ugAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADm5OYA5eTmAePk + 5gDj5OYD5eTm0+Xk5v/l5Ob95eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTmNeXk5gDl5OYC5eTmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXk + 5gDl5OYD5eTmAOXk5j3l5Ob/5eTm/uXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob85eTm/+Xk5r3l5OYA5eTlAeXk5wDl5OUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADl5OcA6OTlAOXk5gTl5OYA5eTmkeXk5v/l5Ob75eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5vzl5Ob/5eTmW+Xk5gDl5OYD5eTmAObm6gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA5eXmAOXj5gDl5OYB5uXmAObk5hLl5Obl5eTm/+Xk5v7l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob+5eTm/+Xk5uPl5OYP5eTmAOXk5gHk5OYAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAObk5gDk5OYA5OPmAOXk5gbl5OYA5eTmcuXk5v/l5Ob85eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5vvl5Ob/5eTmleXk5gDl5OYD5eXmAOfm5wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAOXl5QDl5OYA5uTmAObk5QDl5OYF5eTmAOXk5jfl5Oby5eTm/+Xk5v7l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/eXk5v/l5OZD5eTmAOXk5gPl5OcAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAOTj5wDl5OUA5OPmAOTj5gDl5OYC5eTmBeXk5gDl5OY35eTm6+Xk5v/l5Ob+5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v3l5Ob/5eTm3+Tj5grk4+YA5eTmAeXl + 5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADl5OYA6ungAOfm4wDi4ekA5OTnAOTk5wDl5OYA5uTmAOXj + 5QDl4+UA5eXnAOXk5gHl5OYB5eTmAeXk5gLl5OYE5eTmA+Xk5gHl5OYA5eTmVuXk5vTl5Ob/5eTm/eXk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm++Xk5v/l5Oaf5eTmAOXk + 5gPl5OYA5eXnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADm5ecA3eHjAN3g4wDl5OYC5eTmBOXk5gPm5OUC5+TlAeTk + 5QHi5OYB5unrAOPs7gDT2dsA0NvdANzl5wAAAAAA5eTmAOXk5gHk5OUA5eTmHeXk5qHl5Ob/5eTm/eXk + 5v3l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob85eTm/+Xk + 5l7l5OYA5eTmBOXk5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5eTmAObl5gDm5eYA5eTmAuPh5QDj4uUA5OPmAAAA + AAAAAAAAAAAAAAAAAACl5OYA/+DmAP/R2wDg4OUB5uTmBeXk5hHl5OYp5eTmWOXk5qbl5Ob05eTm/+Xk + 5vzl5Ob+5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/uXk + 5v/l5Ob+5eTmK+Xk5gDl5OYC5OTmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAObm5gDl5OYA4eLlAOTk5gLj5OUA5eTmLOXk + 5oHl5Oat5eTmvuXk5sTl5ObG5eTmyOXk5svl5ObM5eTmz+Xk5tTl5Obd5eTm7OXk5vzl5Ob/5eTm/+Xk + 5v7l5Ob85eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob95eTm/+Xk5uTl5OYM5eTmAOXk5gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5ePmAObl5gDl5OYC5eTmAOXk + 5nXl5Ob/5eTm/+Xk5v7l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5vzl5Ob75eTm/uXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5vzl5Ob/5eTmyuTk5QDk5OUB5eTmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADl5OUA5eTmA+Xk + 5gDl5OZM5eTm/+Xk5v3l5Ob75eTm++Xk5vzl5Ob85eTm/OXk5vzl5Ob85eTm/eXk5v3l5Ob95eTm/eXk + 5v7l5Ob+5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/OXk5v/l5Oa15eTmAOXk5gLl5OYAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXk + 5gDl5OYC5eTmAOXk5rjl5Ob/5eTm++Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob85eTm/+Xk5q3l5OYA5eTmA+bk5gAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA5eTmAebk5gDm5OYX5eTm7uXk5v/l5Ob+5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5vzl5Ob/5eTmsOXk5gDl5OYD5eTmAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAOXl5gDl5OYD5eTmAOXk5kXl5Ob/5eTm/eXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/OXk5v/l5Oa/5eTmAOXk + 5gLl5OYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXk5gTl5OYA5eTmcuXk5v/l5Ob75eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob95eTm/+Xk + 5tbm5eUA5eTmAOXk5gEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADl5uUA5eTmBOXk5gDl5Oac5eTm/+Xk5vvl5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v7l5Ob/5eTm7+Xk5hfl5OYA5eTmAebm5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXk5gDl5OYC5eTmAOXk5rvl5Ob/5eTm/OXk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v7l5Ob/5eTmPOXk5gDl5OYD5eXnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5eTmAOjm7ADj4uIA5eTm1OXk + 5v/l5Ob95eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm++Xk5v/l5OZ15eTmAOXk5gTk4+QAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADm5OYB5uPmAObj + 5gvl5Obj5eTm/+Xk5v3l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob85eTm/+Xk5rXl5OYA5eTmAuXl5gDo6OgAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXk + 5gHl5OYA5eTmFuXk5u/l5Ob/5eTm/uXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v7l5Ob/5eTm7uXk5hbl5OYA5eTmAeXk + 5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA5eTmAuXk5gDl5OYi5eTm++Xk5v/l5Ob+5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5vzl5Ob/5eTmXOXk + 5gDl5OYD5eTmAObm5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADl5OYC5eTmAOXk5i/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/OXk + 5v/l5Oaz5eTmAOXk5gLl5OYA5+PnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXk5gPl5OYA5eTmPuXk5v/l5Ob+5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob+5eTm/+Xk5vfl5OYn5eTmAOXk5gLl4+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5eTmA+Xk5gDl5OZM5eTm/+Xk5v3l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob75eTm/+Xk5oPl5OYA5eTmBOjj5gDl5OUAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOvr6wDl5OYE5eTmAOXk5lzl5Ob/5eTm++Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v3l5Ob/5eTm3+Xk5g3l5OYA5eTmAeXk5gAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5ePlAOXk5gTl5OYA5eTmcuXk + 5v/l5Ob75eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5vzl5Ob/5eTmYOXk5gDl5OYD5eTlAOXl + 5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADf3+wA5eTmBOXk + 5gDl5OaK5eTm/+Xk5vvl5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/eXk5v/l5ObJ5NG+AOTm + 7ADl5OUA5OPnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAObk + 5gDl5OYE5eTmAOXk5qPl5Ob/5eTm++Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/eXk + 5v/l5OZI5eTmAOXk5gPl5eYA5ubmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA5eTmAOXk5gHl5OYA5eTmw+Xk5v/l5Ob85eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob85eTm/+Xk5rLl5OYA5eTmAubk5gDl4+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADl5OYB5eTnAOTk5wrl5Obi5eTm/+Xk5v3l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v7l5Ob/5eTm/eXk5jPl5OYA5eTmAuXk5wDm4uYAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA5OTmAOXk5gLl5OYA5eTmK+Xk5v7l5Ob/5eTm/uXk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5vzl5Ob/5eTmmuXk5gDl5OYD5OPmAOXl5wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADm5OYA5eTmBOXk5gDl5OZe5eTm/+Xk5vzl5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/uXk5v/l5Obx5ePmHuXk5gDl5OYC5eTlAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6OjoAOXl5QDl5OYD5eTmAOXk5qLl5Ob/5eTm++Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/k4+b/4+Lm/+Pj5v/j4+b/4+Pm/+Pj5v/j4+b/4+Pm/+Pi5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/4+Lm/+Pj5v/j4+b/4+Pm/+Pj5v/j4+b/4+Pm/+Pi + 5v/k4+b/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm++Xk5v/l5OZ65eTmAOXk + 5gTn5OUA4+LjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANvb2wDl5OYA5eTmAeXk5gDl5OYQ5eTm5eXk + 5v/l5Ob+5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5OPm/+nn5v/w7OX/7erm/+7q5v/u6ub/7urm/+7q5v/u6ub/7uvm/+bl + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+bk5v/u6+b/7urm/+7q5v/u6ub/7urm/+7q + 5v/t6ub/8Ozl/+nn5v/k4+b/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob95eTm/+Xk + 5trl5OUK5eTlAOXk5QHl5OYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj4+gA5eTmAOXk5gDl5OYE5eTmAOXk + 5ljl5Ob/5eTm/OXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Tj5v/p5+b/0NTn/2WF7f9df+3/X4Ht/1+A7f9fgO3/X4Ht/1t+ + 7f9ujOz/3t/m/+bl5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/m5eb/4ODm/3CN7P9bfu3/X4Ht/1+A + 7f9fgO3/X4Ht/15/7f9khO3/ztPn/+ro5v/k4+b/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob85eTm/+Xk5lrl5OYA5eTmA+Xk5gDk4eQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj4wDl5eYA5uXoAN7e1wDl5OcB5eTmBOTk + 5QLj5OUA5eTmwuXk5v/l5Ob85eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/4uLm//Ht5f+ot+n/Ekfx/x5R8P8cT/H/HE/x/xxP + 8f8dT/H/HE/x/xxP8f/Gzej/7Onm/+Li5v/l5Ob/5eTm/+Xk5v/l5Ob/4uLm/+vp5v/Jz+f/HlDw/xtO + 8f8dT/H/HE/x/xxP8f8cT/H/H1Hw/xBG8f+ktOn/8u3l/+Li5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5vzl5Ob/5eTmvubk5gDm5OYB5eTmAObk5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5ePmAOXh5gDl5uUA5ePlAOXk5gLl5OYE5eTmA+Xk + 5gHn5eIA5ubiAuXk5pXl5Ob/5eTm/eXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/i4ub/8Ozl/6u56f8gUvD/K1rw/ypZ + 8P8pWfD/KVnw/ylZ8P8sW/D/HlHw/2yL7P/07+X/5+Xm/+Hh5v/i4ub/4uLm/+Hh5v/m5eb/9fDl/3GO + 7P8eUfD/LFvw/ylZ8P8pWfD/KVnw/ylZ8P8sW/D/HlDw/6i26f/x7eX/4uLm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTmOuXk5gDl5OYC5eTmAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADq6esA5eTmAOXk5gDm5OcA5eTmA+Xk5gTm5ugB5eXnAOXl + 5wDn5+gA5uXnB+Xk5k/l5ObN5eTm/+Xk5v3l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Li5v/w7OX/qrnp/x5Q + 8P8pWfD/J1fw/ydX8P8nV/D/J1fw/ydX8P8oWPD/HlHw/3eT7P/h4eb/8u7l//Ht5f/x7eX/8u7l/+Lh + 5v97lez/H1Hw/yhY8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ypZ8P8bTvH/p7bp//Ht5f/i4ub/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/OXk5v/l5Oac5eTmAOXk5gPm4+YA5OLlAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5eTlAOXk5gDl5OYA5eTmAuXk5QLl6OcA5d3kAOXg + 5QPl5OYl5eTmXeXk5pzl5Obf5eTm/+Xk5v7l5Ob95eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/4uLm//Ds + 5f+quen/HlDw/ylZ8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8oWPD/HE/x/zxn7/95k+z/mKvq/5mr + 6v96lOz/PWjv/xxP8f8oWPD/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/Klnw/xxO8f+mten/7uvm/+Dg + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob+5eTm/+Xk5u/m5OYb5eTmAOXk + 5gHm5OcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOTk5gDl5OYA5eTmAOXk5gLl5eYB7OHuAOXk + 5jrl5OaT5eTm0+Xk5vrl5Ob/5eTm/+Xk5v/l5Ob85eTm/OXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/i4ub/8Ozl/6q56f8eUPD/KVnw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8qWfD/IlPw/xpN + 8f8aTvH/Gk7x/xpN8f8iU/D/Klnw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8qWfD/G07x/626 + 6f/+9+X/7erm/+Tk5v/k4+b/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob85eTm/+Xk + 5nTl5OYA5eTmBOXk5wDm5eYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5eTnAOXk5wDl5OYC5eTmAOXk + 5ifl5Oa95eTm/+Xk5v7l5Ob/5eTm/+Xk5vzl5Ob75eTm/eXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Li5v/w7OX/qrnp/x5Q8P8pWfD/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX + 8P8oWPD/Klnw/ypZ8P8qWfD/Klnw/yhY8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/yhY + 8P8kVPD/T3Tu/3iT7P+ruen/6efm/+nn5v/j4+b/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v3l5Ob/5eTm0eff6APo3+gA5uPmAeXj5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADk5OcA5eTmAuXk + 5gDl5OY05eTm7eXk5v/l5Ob85eTm++Xk5v3l5Ob+5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/4uLm//Ds5f+quen/HlDw/ylZ8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX + 8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX + 8P8nV/D/J1fw/yhY8P8gUvD/Gk3x/xxO8f9Ye+3/2dvn/+nn5v/k4+b/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v3l5Ob/5eTmR+Xk5gDl5OYD5eTmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXk + 5wHl5ecA5eXoBuXk5tHl5Ob/5eTm+uXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/i4ub/8Ozl/6q56f8eUPD/KVnw/ydX8P8nV/D/J1fw/ydX + 8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX + 8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ylY8P8qWfD/K1rw/xZK8f9ZfO3/6efm/+Tj5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/OXk5v/l5Oaj5eTmAOXk5gPl4+YA5eTlAAAAAAAAAAAAAAAAAAAA + AAAAAAAA5eTmA+Xk5gDl5OZC5eTm/+Xk5vzl5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Li5v/w7OX/qrnp/x5Q8P8pWfD/J1fw/ydX + 8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX + 8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/Klnw/yBR8P+5w+j/7uvm/+Pj + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob+5eTm/+Xk5u7l5OYa5eTmAOXk5gHm5OYAAAAAAAAA + AAAAAAAAAAAAAAAAAADl5OYE5eTmAOXk5lzl5Ob/5eTm/OXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/4uLm//Ds5f+quen/HlDw/ylZ + 8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX + 8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8qWfD/HU/x/6Oz + 6f/x7eX/4uLm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob85eTm/+Xk5mfl5OYA5eTmBOXk + 5gAAAAAAAAAAAAAAAAAAAAAAAAAAAOXk5gPl5OYA5eTmR+Xk5v/l5Ob95eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/i4ub/8Ozl/6q5 + 6f8eUPD/KVnw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX + 8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/KFjw/yhY + 8P8kVfD/xczo/+zp5v/j4+b/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5vzl5Ob/5eTmveXk + 5wDl5OcB5eTlAOXj5gAAAAAAAAAAAAAAAAAAAAAA5eTmAeXk5gDl5OYa5eTm8OXk5v/l5Ob+5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5OPl/+Pi4//i4eP/4+Lk/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Li + 5v/w7OX/qrnp/x5Q8P8pWfD/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX + 8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/KVjw/ypZ + 8P8mVvD/FEnx/3iT7P/v6+b/4+Pm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/uXk + 5v/l5Ob55eTmJ+Xk5gDl5OYC5eTmAAAAAAAAAAAAAAAAAAAAAADl5OYA5eTmAuXk5gDl5Oat5eTm/+Xk + 5vzl5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Pi5P/m5ef/7+/y//Hx9P/s7O//5OLk/+Tj5f/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/4uLm//Ds5f+quen/HlDw/ylZ8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX + 8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/yhY + 8P8eUfD/G07x/yxb8P+Cm+v/6Obm/+bl5v/k5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm++Xk5v/l5OZw5eTmAOXk5gTm5OcAAAAAAAAAAAAAAAAAAAAAAOXl5wDl5OYD5eTmAOXk + 5kfl5Ob/5eTm/eXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/j4uT/6+rt/+Hg4v+tqKb/nJWS/8C9vP/s7O//5uXn/+Tj5f/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/i4ub/8Ozl/6q56f8eUPD/KVnw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX + 8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX + 8P8oWPD/IVLw/2yK7P+ntun/z9Tn//Ht5f/l5Ob/5OPm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob85eTm/+Xk5r7l5eUA5eXmAeXj5gDj4egAAAAAAAAAAAAAAAAA5eTmAOXk + 5gDk5OYB5OTnAOXk5rrl5Ob/5eTm/OXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/4+Lk/+vq7f/Oy8v/VkpC/zEiGP8yIxj/NSYc/4F4c//o5+n/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Li5v/w7OX/qrnp/x5Q8P8pWfD/J1fw/ydX8P8nV/D/J1fw/ydX + 8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX + 8P8nV/D/J1fw/ypZ8P8bTvH/sL3p//735f/n5eb/4uLm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v7l5Ob/5eTm9eXk5h/l5OYA5eTmAubl5QAAAAAAAAAAAAAA + AADk5OcA5ePmAOXk5gLl5OYA5eTmN+Xk5v3l5Ob+5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Tj5f/m5ef/4uHj/1dLQ/8wIRb/QDIo/z8xJ/8+MCb/KxwQ/5KK + h//w8PL/4+Hj/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/4uLm//Ds5f+quen/HlDw/ylZ8P8nV/D/J1fw/ydX + 8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX + 8P8nV/D/J1fw/ydX8P8nV/D/Klnw/xxO8f+ltOn/7uvm/+Hh5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5vzl5Ob/5eTmWuXk5gDl5OYE5OXnAAAA + AAAAAAAAAAAAAAAAAADl4+UA5+nnAOXk5gPl5OYA5eTmkOXk5v/l5Ob75eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/k4+X/4uHj/+Lh4//i4eP/4N/g/+3t8P+knZv/MCEW/0AyKf88LiT/PC4k/z0v + Jv86LCL/Rjkw/9fV1v/l5Ob/4uDi/+Lh4//i4eP/4uHj/+Xk5v/j4ub/8Ozl/6u56f8eUPD/KVjw/ydX + 8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX + 8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX8P8qWfD/G07x/6e26f/x7eX/4uLm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm++Xk5v/l5Oae5eTmAOXk + 5gPk5OYAAAAAAAAAAAAAAAAAAAAAAOno6QDm5OYA5eTlAeTk5ADl5OUN5eTm1uXk5v/l5Ob95eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5OPl/+rq7P/x8fT/8PDz//Hw8//u7vH/+/z//3lvaf8xIhj/PzEn/zwu + JP88LiT/PC4k/z4wJv8zJRr/u7e2//v8///u7vH/8fDz//Hx8//w8PP/5+bo/+Li5v/w7Ob/qrjp/yBS + 8P8sW/D/Klnw/ypZ8P8qWfD/Klnw/ypZ8P8qWfD/J1fw/ydX8P8nV/D/J1fw/ydX8P8nV/D/J1fw/ydX + 8P8nV/D/J1fw/ypZ8P8qWfD/Klnw/ypZ8P8qWfD/Klnw/y1b8P8eUPD/p7bp//Ht5f/i4ub/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob95eTm/+Xk + 5tXk4+YD5eTmAOXk5gHm5uYAAAAAAAAAAAAAAAAAAAAAAOXk5QDl5OYA5eTmA+Xk5gDl5OZA5eTm/eXk + 5v7l5Ob+5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Tj5f/p6Ov/ycXF/6CZlv+knpv/o52a/6Kcmf+noZ//VkpC/zco + Hv89LyX/PC4k/zwuJP88LiT/PTAm/zUnHP98c27/qqSi/6KbmP+jnZv/opyZ/6ein//d3N3/5OTo//Ds + 5f+suun/Ekjx/xxP8f8aTvH/Gk3x/xpN8f8aTfH/Gk3x/xtO8f8mV/D/J1fw/ydX8P8nV/D/J1fw/ydX + 8P8nV/D/J1fw/ydX8P8nV/D/G07x/xpN8f8aTfH/Gk3x/xpN8f8aTvH/HE/x/xBG8f+pt+n/8e3l/+Li + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v7l5Ob/5eTm++Xk5ifl5OYA5eTmAuXk5gAAAAAAAAAAAAAAAAAAAAAA5+fnAOXk5gDl5OYA5eTmBOXk + 5gDl5OZ85eTm/+Xk5vvl5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/4+Lk/+7t8P9rYFn/JxcM/zMkGv8xIhf/MSIX/zAh + F/85KyH/PS8l/zwuJP88LiT/PC4k/zwuJP88LiT/PS8l/zUnHP8wIRb/MSIX/zEiF/8zJBn/KBkN/6ym + pP/v7/L/5ePj/9zd5v+Tp+n/iqDp/4yh6f+Loen/i6Hp/4uh6f+Noun/hJvq/y5c8P8mVvD/J1fw/ydX + 8P8nV/D/J1fw/ydX8P8nV/D/Jlbw/yxb8P+Dm+r/jaPp/4uh6f+Loen/i6Hp/4yh6f+KoOn/kqbp/9rc + 5v/n5ub/5OTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5vzl5Ob/5eTmV+Xk5gDl5OYD5eTnAAAAAAAAAAAAAAAAAAAAAAAAAAAA5eTlAOXk + 5gDl5OYA5ePmAuHi5ADl5Oay5eTm/+Xk5vvl5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/k4uT/7Ozu/2pgWf81Jx3/QDMp/z4x + J/8+MSf/PzEn/z0vJf88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PjAm/z8xJ/8+MSf/PjEn/0E0 + Kv8zJBr/qKKg//Dw8//i4eP/5+bm//Pv6//z7+3/8+/s//Pv7P/z7+z/8+/s//Pv7f/08Ov/SXHu/x9R + 8P8rWvD/J1fw/ydX8P8nV/D/J1fw/ypZ8P8gUvD/RW3u//Lu6//08O3/8+/s//Pv7P/z7+z/8+/s//Pv + 7f/z7+v/5+bm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm++Xk5v/l5OaG5eTmAOXk5gTl5OYAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA5eTmAOTj5QDl5OYC5OPlAOTk5hbl5Obc5eTm/+Xk5v3l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Pi5P/s7O//a2BZ/zMk + Gf8+MCb/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwu + JP88LiT/PjEn/zEiF/+po6H/8PDz/+Ph4//l5Of/3tzM/93bxf/d28f/3dvH/93bx//d28f/2tnG/+nk + zP+ntun/Gk7x/yNU8P8qWvD/Klnw/ypZ8P8qWvD/JFTw/xlN8f+js+n/6eXM/9rZxv/d28f/3dvH/93b + x//d28f/3dvF/97czP/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob85eTm/+Xk5rTl5OYA5eTmA+bl5wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA5eTmAOXk5gDl5OYD5eTmAOXk5jnl5Ob25eTm/+Xk5v7l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/4+Lk/+zs + 7/9qYFn/MyQZ/z4wJv88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwu + JP88LiT/PC4k/zwuJP8+MSf/MSIX/6ijoP/w8PH/5OPs/97buv/GvSz/x74v/8e+L//Hvi7/x74u/8e+ + L//GvSv/x788/+zo2P+gsez/Ml/v/xtO8f8aTvH/Gk7x/xtO8f8xXu//nK7s/+zo2v/Hvzz/xr0r/8e+ + L//Hvi7/x74u/8e+L//Hvi//xr0r/97buf/m5u//5eTk/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v3l5Ob/5eTm1OPg5QHk4uUA5eTmAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADl5ecA5eTmAOTk5gDl5OYE5eTmAOXk5mHl5Ob/5eTm/OXk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/j4uT/7Ozv/2pgWf8zJBn/PjAm/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwu + JP88LiT/PC4k/zwuJP88LiT/PC4k/z4xJ/8xIhf/qKOg//Dw8P/k5O7/29ir/8W8Jf/HvzL/x74w/8e+ + MP/HvjD/x74w/8e+Mv/GvCf/2teu//Lv9P/X2eH/n7Dp/3+Z6/9/mOv/nq/p/9XY4f/y7/T/2tev/8a8 + J//HvjL/x74w/8e+MP/HvjD/x74w/8e/M//FvCT/29ep/+fm8v/l4+P/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/uXk5v/l5Obt5eTmEuXk + 5gDl5OYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADl5eUA5eTmAP///wDl5OYE5eTmAOXk + 5ovl5Ob/5eTm++Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Pi5P/s6+7/al9Y/zMkGv8+MCb/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwu + JP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PzEn/zIjGP+po6H/8PDw/+Tk7v/c2K7/xrwn/8e+ + Mv/HvjD/x74w/8e+MP/HvjD/x74y/8a9K//LwkX/397U/+vq9f/y7uj/8u7l//Lu5f/y7uj/6+r1/+Df + 1f/Lw0b/xr0r/8e+Mv/HvjD/x74w/8e+MP/HvjD/x78z/8W8Jv/b2Kz/5+bx/+Xj4//l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob+5eTm/+Xk + 5vzl5OYp5eTmAOXk5gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADl5OYA5uPlAOXk + 5gHl4+YC3NfmAOXk5rTl5Ob/5eTm++Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/k4+X/4eDi/+/v8f9sYVr/MyQZ/z4wJv88LiT/PC4k/zwuJP88LiT/PC4k/zwu + JP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/z0vJf9AMyn/Lh8U/6agnv/w8PH/5OPt/9vY + rP/FvCf/x74y/8e+MP/HvjD/x74w/8e+MP/HvjD/x74y/8a9Kf/KwUD/2dWh/+Df2P/i4uj/4uLo/+Df + 2P/Z1aL/ysJA/8a9Kf/HvjL/x74w/8e+MP/HvjD/x74w/8e+MP/HvjL/xbwl/9vYrP/n5vH/5ePj/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob95eTm/+Xk5jrl5OYA5eTmAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADl5OYA5eTmAOXk5gLj4+YA5OPmE+Xk5tfl5Ob/5eTm/eXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5OPl/+bl5//u7fD/4+Lk/2RaUv80JRv/PjAm/zwuJP88LiT/PC4k/zwu + JP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP89LyX/OSsh/zUmHP8/MSj/tK+s/+7t + 7P/l5fP/3Nmy/8W8Jv/HvjL/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74y/8a9LP/FvCX/ycA8/8zF + UP/MxVD/ycA8/8W8Jf/GvSz/x74y/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+Mv/FvCX/29is/+fm + 8f/l4+P/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5vzl5Ob/5eTmSuXk5gDl5OYDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPT09QDl5OYA5eTmAOXk5gPm5OYA5eTmMuXk5vPl5Ob/5eTm/uXk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Tj5f/m5uj/5eTm/4qCff9KPTT/PTAm/zwuJP88LiT/PC4k/zwu + JP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PS8l/zgqIP9ENi3/pqCe/9rY + 2P/m5e3/5uXs/+Ti3v/Y1Jj/xrwo/8e+Mv/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74x/8e/ + Mv/HvS3/xrwp/8a8Kf/HvS3/x74y/8e+Mf/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74y/8W8 + Jf/b2Kz/5+bx/+Xj4//l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/OXk5v/l5OZW5eTmAOXk5gMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAObm5gDl5OYA5eTmAOXk5gTl5OYA5eTmXuXk5v/l5Ob85eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5OPl/+zr7v95cGr/KxsQ/zkrIf88LiT/PC4k/zwu + JP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJf87LSP/PC4k/725 + uf/19ff/6Ojx/97cvv/PyGH/ycA5/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+Mf/HvjL/x74y/8e+Mf/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjL/xbwl/9vYrP/n5vH/5ePj/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob85eTm/+Xk5lvl5OYA5eTmBAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOTk5ADl5OYA4+flAOXk5gTl5OYA5eTmluXk + 5v/l5Ob85eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Pi5P/u7vH/trGw/zIjGP8/MSj/PS8l/zwu + JP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PzEn/zEi + F/+DenX/8/P0/+Lh6v/b16v/xr0q/8W8Jf/Hvi7/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+Mv/FvCX/29is/+fm8f/l4+P/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5vzl5Ob/5eTmW+Xk5gDl5OYEAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXk5wD/+eIA5eTmAebk + 5QDm5OYN5eTm1uXk5v/l5Ob95eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/4+Hj//Dv8v97cm3/MSIY/z8x + J/88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwu + JP89LyX/Nige/725t//t7fL/4d/Y/8nAPP/GvSv/yL80/8e+Mf/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+MP/HvjD/x74y/8W8Jf/b2Kz/5+bx/+Xj4//l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/OXk5v/l5OZW5eTmAOXk + 5gMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXk + 5gDl5OYA5eTmA+Xk5gDl5OZL5eTm/+Xk5v7l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/k4+X/6urs/2JX + UP80Jhv/PjAm/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwu + JP88LiT/PS8l/zssIv9BMyr/0c/O/+vr9v/b167/xrwo/8e/M//HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjL/xbwl/9vYrP/n5vH/5ePj/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob95eTm/+Xk + 5knl5OYA5eTmAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA5+bnAOXk5gDl5OYA5uTkAeTj7QHl5ObQ5eTm/+Xk5v3l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Tj + 5f/q6uz/Y1hR/zQlG/8+MCb/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwu + JP88LiT/PC4k/zwuJP88LyX/Oywi/0EzKv/Rzs3/6+v1/9vYsf/GvCj/x78z/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+Mv/FvCX/29is/+fm8f/l4+P/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v3l5Ob/5eTmOeXk5gDl5OYDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA5eXlAOXk5gDl5OYC5eTmAOXk5rTl5Ob/5eTm/OXk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/4+Hj//Dw8v99dG//MSIX/z8xJ/88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwu + JP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP89LyX/Nicd/7u3tf/t7fH/4uDd/8rCRP/GvCf/yL81/8e+ + Mf/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74y/8W8Jf/b2Kz/5+bx/+Xj + 4//l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob+5eTm/+Xk5vzl5OYn5eTmAOXk5gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4+TjAOXk5gTl5OYA5eTmmuXk5v/l5Ob75eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/j4uT/7u3w/7m1tP8zJBn/PzEn/z4wJv88LiT/PC4k/zwuJP88LiT/PC4k/zwu + JP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/z4xJ/8xIhf/f3Zx//Pz9P/i4en/3dq6/8i/ + Nf/FuyP/xr0r/8e+Lv/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjL/xbwl/9vY + rP/n5vH/5ePj/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v7l5Ob/5eTm7eXk5hHl5OYA5eTmAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5eTmBOXk5gDl5OZ05eTm/+Xk + 5vvl5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/k4uT/7ezv/392cf8rGxD/OCof/zwuJP88LiT/PC4k/zwu + JP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP86LCL/uLOy//X2 + 9//p6fL/4d/P/9PNdv/Lw0j/yMA3/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + Mv/FvCX/29is/+fm8f/l4+P/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/eXk5v/l5ObRk73YAOHi5QDl5OYBAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOTk5ADl5OYD5eTmAOXk + 5k7l5Ob/5eTm/OXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Tj5f/m5ef/5+bp/5GKhv9QQzv/PzEn/zwu + JP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PS8l/zkr + If9AMyn/npiV/9XS0f/k4+n/5+bw/+bl7P/a1qP/xrwn/8e+Mv/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74y/8W8Jf/b2Kz/5+bx/+Xj4//l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob85eTm/+Xk5q3l5OYA5eTmA+Tj5gAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXk + 5gLl5OYA5eTmJeXk5vvl5Ob/5eTm/uXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Tj5f/l5Ob/7u7w/+jn + 6f9mW1T/NCUa/z4wJv88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwu + JP88LiT/PS8l/zosIv80JRv/Oiwi/7Ktqv/u7ez/5eTw/9zZsP/FvCb/x74y/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+MP/HvjL/xbwl/9vYrP/n5vH/5ePj/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5vvl5Ob/5eTmf+Xk5gDl5OYE5uXnAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA5uTmAefj5wDo4+gF5eTm2uXk5v/l5Ob95eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xj + 5f/h4OL/7u7w/2thWv8zJBn/PjAm/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwu + JP88LiT/PC4k/zwuJP88LiT/PS8l/0EzKf8vIBX/p6Ge//Dw8f/k4+3/29is/8W8J//HvjL/x74w/8e+ + MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+Mv/FvCX/29is/+fm8f/l4+P/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/eXk5v/l5OZK5eTmAOXk + 5gPj4ucAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADl5OcA5eTmA+Xk5gDl5Oan5eTm/+Xk5vzl5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Pi5P/s6+7/al9Z/zMkGv8+MCb/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwu + JP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PjEn/zIjGP+po6H/8PDw/+Tk7v/c2K7/xrwo/8e/ + M//HvjH/x74x/8e+Mf/HvjH/x74x/8e+Mf/HvjD/x74w/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74x/8e+Mf/HvjH/x74x/8e+Mf/HvjH/yL8z/8W8Jv/b2Kz/5+bx/+Xj4//l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v7l5Ob/5eTm8eXk + 5hnl5OYA5eTmAeXk5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXj5gDl5OYE5eTmAOXk5mbl5Ob/5eTm/OXk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/4+Lk/+zs7/9qYFn/MyQZ/z4wJv88LiT/PC4k/zwuJP88LiT/PC4k/zwu + JP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP8+MSf/MSIX/6ijoP/w8PD/5OTv/9vX + qv/FuyL/x74v/8e9Lf/HvS3/x70t/8e9Lf/HvS3/x70u/8e+MP/HvjD/x74w/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+MP/HvS7/x70t/8e9Lf/HvS3/x70t/8e9Lf/HvjD/xLsh/9vXqf/n5vL/5ePj/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/OXk + 5v/l5ObD5eTmAOXk5wHl5OYA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5+XlAOXk5gLl5OYA5eTmJuXk5vjl5Ob/5eTm/uXk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/j4uT/7Ozv/2pgWf8zJBn/PjAm/zwuJP88LiT/PC4k/zwu + JP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/z4xJ/8xIhf/qKOg//Dw + 8f/k4+v/39zA/8nAO//JwDz/ycE8/8nAPP/JwDz/ycA7/8nBPP/JwDr/x74x/8e+MP/HvjD/x74w/8e+ + MP/HvjD/x74w/8e+MP/HvjD/x74x/8nAOv/JwTz/ycA7/8nAPP/JwDz/ycE8/8nAPP/JwDr/39y//+bm + 7v/l5OT/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob75eTm/+Xk5nvl5OYA5eTmBObk5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzP8A5uTmAOTj5gHk4+YA5eTmwuXk + 5v/l5Ob85eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Pi5P/s7O//a2BZ/zMkGv8+MCb/PC4k/zwu + JP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PC4k/zwuJP88LiT/PjEn/zEi + GP+po6H/8PDz/+Lh4//l5ej/4+Lb/+Lh1v/i4df/4uHW/+Lh1v/i4db/4+HZ/+Hfzv/JwT7/x70u/8e+ + Mf/HvjD/x74w/8e+MP/HvjD/x74x/8e+Lv/JwTz/4d/N/+Ph2f/i4db/4uHW/+Lh1v/i4df/4uHW/+Pi + 2//l5Oj/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTmM+Xk5gDl5OYC5uXnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADl5OYA5eTmBOXk + 5gDl5OZy5eTm/+Xk5vvl5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5OLk/+zs7v9qX1j/NScc/0Ay + Kf8+MCb/PjAm/z4wJv8+MCb/PjAm/z4wJv8+MCb/PjAm/z4wJv8+MCb/PjAm/z4wJv8+MCb/PjAm/z4w + Jv9BMyn/MiQZ/6ehn//w8PP/4uHj/+Xk5f/l5en/5uXq/+bl6v/m5er/5uXq/+bl6v/l5Oj/5+fz/9HL + bv/EuyD/yL82/8e+Mf/HvjD/x74w/8e+Mf/Ivzb/xLsg/9HLbP/n5/P/5eTo/+bl6v/m5er/5uXq/+bl + 6v/m5er/5eXp/+Xk5f/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob95eTm/+Xk5s3m3t4A4P7/AOXk5gDk4+UAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAObl + 5gDl5OYC5eTnAOXk5yHl5Obz5eTm/+Xk5v7l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/j4uT/7u7w/21j + XP8oGQ3/NSYb/zIkGf8yJBn/MiQZ/zIkGf8yJBn/MiQZ/zIkGf8yJBn/MiQZ/zIkGf8yJBn/MiQZ/zIk + Gf8yJBn/MiQZ/zQlG/8qGxD/raim//Dv8v/j4eP/5eTm/+Xk5f/l5OX/5eTl/+Xk5f/l5OX/5eTl/+Xk + 5P/m5en/4uHW/8vESv/EuyD/xr0s/8e+L//Hvi//xr0s/8S7IP/Lw0j/4uDV/+bl6v/l5OT/5eTl/+Xk + 5f/l5OX/5eTl/+Xk5f/l5OX/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5vvl5Ob/5eTmeOXk5gDl5OYE5eTmAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA5OTlAObk5wDl5OYD5eTmAOXk5qjl5Ob/5eTm/OXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Tj + 5f/p6Or/zcrL/6iioP+rpqT/q6Wj/6ulo/+rpaP/q6Wj/6ulo/+rpaP/q6Wj/6ulo/+rpaP/q6Wj/6ul + o/+rpaP/q6Wj/6ulo/+rpqP/qqSi/6+qqP/f3t//5uXo/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5P/m5ez/4+Lc/9TPgP/KwkX/yL80/8i/NP/KwkX/1M9//+Pi2//m5ez/5eTk/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob+5eTm/+Xk5vXl5OYj5eTmAOXk5gLl5OcAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA5+XlAOXk5gPl5OYA5eTmQuXk5v/l5Ob+5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Tj5f/q6ev/8PDz//Dv8v/w8PL/8PDy//Dw8v/w8PL/8PDy//Dw8v/w8PL/8PDy//Dw + 8v/w8PL/8PDy//Dw8v/w8PL/8PDy//Dw8v/w8PL/7+/y/+bl6P/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5P/l5en/5+fy/+Tj4f/h387/4d/N/+Tj4f/n5/L/5eXp/+Xk + 5P/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5vzl5Ob/5eTmpeXk5gDl5OYD5eTmAObl + 5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADk5OcA5eTmAObk5gHm5OYA5eTmwOXk5v/l5Ob85eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Tj5f/i4eP/4+Hj/+Ph4//j4eP/4+Hj/+Ph4//j4eP/4+Hj/+Ph + 4//j4eP/4+Hj/+Ph4//j4eP/4+Hj/+Ph4//j4eP/4+Hj/+Ph4//j4uP/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5f/l4+P/5eTn/+bl7P/m5ez/5eTn/+Xj + 4//l5OX/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/uXk5v/l5OY+5eTmAOXk + 5gPl5OYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADl5OYA5eTmA+Xk5gDl5OZM5eTm/+Xk + 5v3l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5OX/5eTl/+Xk + 5f/l5OX/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5vzl5Ob/5eTmtOXk + 5gDl5OYC5eTmAOXk5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXk5gDn5eYA4+PlAeLj + 5QDl5Oa55eTm/+Xk5vzl5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/uXk + 5v/l5OY/5eTmAOXk5gPl5OcA4uLiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5ubmAOXk + 5gDl5OYC5eTmAOXk5jnl5Ob95eTm/uXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5vzl5Ob/5eTmquXk5gDl5OYC5eTnAOXk5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA5eTmANzi8QDl5OYD5eTmAOXk5pLl5Ob/5eTm++Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob+5eTm/+Xk5vXl5OYq5eTmAOXk5gLl5OYA5uTmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADr6usA5eTmAOXk5gHl5eYA5eXmEeXk5tvl5Ob/5eTm/eXk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5vvl5Ob/5eTmfuXk5gDl5OYD5+TlAOXk5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADk5OcA5eTnAOXk5gPl5OYA5eTmSOXk5v/l5Ob95eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob85eTm/+Xk5svl4+YG6ODkAOXk5gHl5OYA5ubmAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADl5OYA5eTlAOXk5gPl5OYA5eTmh+Xk + 5v/l5Ob75eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/uXk5v/l5Ob35eTmNOXk5gDl5OYC5eXmAOXk5wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOPj5QDm5OYA5eTmAebl + 5gHi4OcC5eTmueXk5v/l5Ob75eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob75eTm/+Xk5m7l5OYA5eTmBObj5gDl5OYA6OjoAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXk + 5gDl5OYA5eTmAuXk5gDl5OYW5eTm2eXk5v/l5Ob85eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm++Xk5v/l5Oaf5eTlAOXk5gPl5ecA5eTmAObm + 5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAOXk5gDl5OYA5eTmA+Xk5gDl5OYp5eTm6uXk5v/l5Ob85eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5vvl5Ob/5eTmxOTl5giU7fsA5eTmAePk + 5wDl5OYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA5OTmAOXk5gDl5OYA5eTmA+Xk5gDl5OY45eTm8OXk5v/l5Ob85eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob75eTm/+Xk5tbl5eYW5eXmAOXk + 5gLl5OYA5eTmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5uXmAOXk5gDl5OYA5eTmBOXk5gDl5OY75eTm8OXk + 5v/l5Ob85eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm++Xk5v/l5Obf5eTmI+bk + 5gDl5OYD5eTmAOXk5gDl5ecAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5eTmAOXk5gDl5OYA5eTmBOXk + 5gDl5OY05eTm5+Xk5v/l5Ob75eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5vvl5Ob/5eTm3uXk + 5iTl5OYA5eTmA+Xk5gDl5OYA4+PoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5eTmAOXl + 5wDl5ecA5eTmBOXk5gDl5OYi5eTm0+Xk5v/l5Ob75eTm/uXk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob75eTm/+Xk + 5tLl5OYf5eTmAOXk5gPl5OYA5eTmAOfl5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA5OPlAOXl5gDl5eYA5eTmA+fk5gDm5OYO5eTmr+Xk5v/l5Ob85eTm/eXk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob95eTm++Xk + 5v/l5Oa65uTmEObj5QDl5OYD5eTmAOXk5gDm5ucAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA5uPmAOXk5gDl5OYA5eTmAuXk5wLi4+cA5eTmeOXk5vzl5Ob/5eTm++Xk + 5v7l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/OXk + 5v3l5Ob/5eTmjePm6QLm5OUB5eTmAuXk5gDl5OYA4eHjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5eTlAOXk5gDl5OYA5eTmAeXk5gTl5OYA5eTmN+Xk + 5tTl5Ob/5eTm/OXk5vzl5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/eXk + 5vvl5Ob/5eTm6+Xk5lTl5OYA5eTmA+Xk5gLl5OYA5eTmAObj5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5eXlAOXk5gDl5OYA5eTmAeXk + 5gTm4+cA5ePmCOXk5oTl5Ob45eTm/+Xk5vzl5Ob85eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/eXk + 5vzl5Ob+5eTm/+Xk5rHm5OYb5eTmAOXk5gTl5OYB5eTmAOXk5gDf398AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOXk + 5wDn5OQA5uTlAOXk5gPl5OYD5eTmAOXk5inl5Oa05eTm/+Xk5v/l5Ob95eTm/OXk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/eXk + 5vzl5Ob+5eTm/+Xk5uDl5OZU4+LlAOTj5gHl5OYD5eTmAOXk5gDl5OYAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAOLi6QDl5OYA5eTmAOXk5gHl5OYD5OLmAeTi5wDl5OZC5eTmw+Xk5v/l5Ob/5eTm/uXk + 5vvl5Ob95eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob+5eTm/OXk + 5vzl5Ob+5eTm/+Xk5uzl5OZ55uTmC+bk5gDl5OYD5eTmAuXk5gDl4+YA5uXmAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADl5ecA5OPlAOTj5QDl5OYC5eTmA/Hs4gD//9kA5eTmQuXk + 5rfl5Ob75eTm/+Xk5v/l5Ob95eTm++Xk5v3l5Ob+5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v7l5Ob85eTm++Xk + 5v/l5Ob+5eTm/+Xk5uPl5OZ65ePlE+Xk5gDl5OcC5eTmA+bk5gDm5OYA5eTmAP///wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADj4+MA5eTmAOXl5gDl5eUA5eTmA+Xk + 5gLk4+EA5OPjAOXk5ivl5OaL5eTm3+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob85eTm++Xk5vzl5Ob95eTm/uXk + 5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/uXk5v7l5Ob95eTm/OXk5vvl5Ob95eTm/+Xk + 5v/l5Ob/5eTm+eXk5r7l5OZa5eTmC+Xj5gDl5OYB5eTmA+Xk5gHm5OYA5uTmAOTk5AAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6ujqAOXk + 5gDm5eYA5uXmAOXk5gPl5OYC5ebnAOXl5gDl5eYI5eTmReXk5pLl5ObW5eTm/OXk5v/l5Ob/5eTm/+Xk + 5v/l5Ob/5eTm/+Xk5v3l5Ob85eTm/OXk5vzl5Ob85eTm/eXk5v7l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk + 5v/l5Obw5eTmu+Xk5nLl4+Yj5ersAObn6gDk5OYB5eTmBOXk5gHl5OYA5eTmAObk5gAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAOXk5wDl5OYA5eTnAOXk5wDl5OYC5eTmBOXl5wDl4eYA5eDnAOTh6QTl5OYq5eTmXuXk + 5pDl5Oa+5eTm3uXk5vPl5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5v/l5Ob/5eTm/+Xk5vvl5Obu5eTm0uXk + 5q7l5OZ+5eTmRubk5hXk5OYA5OTmAOTk5gDl5eYC5eTmBOXk5gHj4+UA5OPmAOfl5wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADm4+YA5eTmAOXl5wDk5ugA5eTmAeXk5gPl5OYE5uPmAObj + 5gDk5OYA5+TmAOnm5gDl5eYF5eTmGuXk5i/l5OY+5eTmT+Xk5lXl5OZY5eTmVOXk5kjl5OY65eTmJ+Xk + 5hLo4eYC6ODnAObj5gDl5OcA5eTnAObk5gLl5OYE5eTmAuXi5QDk4+MA5OTlAOfj5wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAObm5gDk5OUA5uHoAODy + 3ADl4+cB5eTmAuXk5gTl5OYE5OTmAubi5QDm4uYA4ejmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADl5eQA5eXjAOXl4wDl5OYD5eTmBOXk5gPl5OYB5OTmAOfl6wDm5ecA5ePlAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAOTk5ADo5usA5OLkAP///wDm4+YA5eTmAeXk5gHl5OYC5eTmA+Xk5gPl5OYD5eTmA+Xk + 5gPl5OYD5eTmA+Xk5gLl5OYB5ePmAObk5wDi598A6OPoAOTk5gDm5uYAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA/////////////////+AAAP///////oD////////gAAD///////6YB///////4AAA///////8 + hEAf/////+AAAP///////IAVAX/////gAAD///////yAAIgH////4AAA///////5AAACoC///+AAAP// + ////+QAAABCAv//gAAD///////kAAAAAVAX/4AAA///////yAAAAAAIl/+AAAP//////8gAAAAAACv/g + AAD///////IAAAAAAAT/4AAA///////0AAAAAAAE/+AAAP//////5AAAAAAABf/gAAD//////+QAAAAA + AAn/4AAA///////IAAAAAAAJ/+AAAP//////yAAAAAAAEf/gAAD//////4gAAAAAABP/4AAA//////+Q + AAAAAAAT/+AAAP/////+UAAAAAAAJ//gAAD//////SAAAAAAACf/4AAA//////JAAAAAAAAn/+AAAP// + /wAAgAAAAAAAT//gAAD///IAcgAAAAAAAE//4AAA///ovIAAAAAAAABP/+AAAP//6gAAAAAAAAAAX//g + AAD//8QAAAAAAAAAAJ//4AAA///IAAAAAAAAAACf/+AAAP//yAAAAAAAAAAAn//gAAD//9AAAAAAAAAA + AJ//4AAA///QAAAAAAAAAACf/+AAAP//0AAAAAAAAAAAX//gAAD//5AAAAAAAAAAAF//4AAA//+QAAAA + AAAAAABP/+AAAP//sAAAAAAAAAAAT//gAAD//6AAAAAAAAAAAE//4AAA//+gAAAAAAAAAAAn/+AAAP// + oAAAAAAAAAAAJ//gAAD//6AAAAAAAAAAACP/4AAA//+gAAAAAAAAAAAT/+AAAP//oAAAAAAAAAAAE//g + AAD//6AAAAAAAAAAAAn/4AAA//8gAAAAAAAAAAAJ/+AAAP//oAAAAAAAAAAAAP/gAAD//yAAAAAAAAAA + AAT/4AAA//8gAAAAAAAAAAAEf+AAAP//QAAAAAAAAAAAAn/gAAD//kAAAAAAAAAAAAJ/4AAA//5AAAAA + AAAAAAABP+AAAP/+QAAAAAAAAAAAAT/gAAD//IAAAAAAAAAAAACf4AAA//qAAAAAAAAAAAAAn+AAAP/A + gAAAAAAAAAAAAI/gAAD9AgAAAAAAAAAAAABP4AAA9CgAAAAAAAAAAAAAT+AAAOmAAAAAAAAAAAAAACfg + AADQAAAAAAAAAAAAAAAn4AAAqAAAAAAAAAAAAAAAE+AAAJAAAAAAAAAAAAAAABPgAACgAAAAAAAAAAAA + AAAT4AAAoAAAAAAAAAAAAAAACeAAAKAAAAAAAAAAAAAAAAngAACgAAAAAAAAAAAAAAAJ4AAAoAAAAAAA + AAAAAAAABOAAAJAAAAAAAAAAAAAAAATgAACQAAAAAAAAAAAAAAAE4AAAiAAAAAAAAAAAAAAAAuAAAMgA + AAAAAAAAAAAAAAJgAADEAAAAAAAAAAAAAAACYAAA5AAAAAAAAAAAAAAAAWAAAOoAAAAAAAAAAAAAAAFg + AAD1AAAAAAAAAAAAAAABIAAA+IAAAAAAAAAAAAAAASAAAPqAAAAAAAAAAAAAAAEgAAD9QAAAAAAAAAAA + AAAAoAAA/qAAAAAAAAAAAAAAAKAAAP9QAAAAAAAAAAAAAACgAAD/SAAAAAAAAAAAAAAAoAAA/6gAAAAA + AAAAAAAAAKAAAP/UAAAAAAAAAAAAAACgAAD/6gAAAAAAAAAAAAAAoAAA//EAAAAAAAAAAAAAAKAAAP/1 + AAAAAAAAAAAAAACgAAD/+oAAAAAAAAAAAAAAoAAA//wAAAAAAAAAAAAAAKAAAP/+QAAAAAAAAAAAAACg + AAD//kAAAAAAAAAAAAAAoAAA//9AAAAAAAAAAAAAAKAAAP//QAAAAAAAAAAAAAEgAAD//0AAAAAAAAAA + AAABIAAA//9AAAAAAAAAAAAAAWAAAP//IAAAAAAAAAAAAAFgAAD//yAAAAAAAAAAAAACYAAA//8gAAAA + AAAAAAAAAmAAAP//kAAAAAAAAAAAAAJgAAD//5AAAAAAAAAAAAAG4AAA//+QAAAAAAAAAAAABOAAAP// + yAAAAAAAAAAAAATgAAD//8gAAAAAAAAAAAAJ4AAA///EAAAAAAAAAAAACeAAAP//5AAAAAAAAAAAABHg + AAD//+IAAAAAAAAAAAAT4AAA///yAAAAAAAAAAAAI+AAAP//8QAAAAAAAAAAACfgAAD///kAAAAAAAAA + AABX4AAA///6gAAAAAAAAAAAT+AAAP///UAAAAAAAAAAAK/gAAD///4AAAAAAAAAAAFf4AAA///+oAAA + AAAAAAACP+AAAP///1AAAAAAAAAAAr/gAAD///+oAAAAAAAAAAV/4AAA////1AAAAAAAAAAK/+AAAP// + /+oAAAAAAAAAFf/gAAD////lAAAAAAAAACv/4AAA////+oAAAAAAAABX/+AAAP////0gAAAAAAAAL//g + AAD////+kAAAAAAAAl//4AAA/////0gAAAAAAAS//+AAAP////+SAAAAAAARf//gAAD/////6IAAAAAA + Jf//4AAA//////JAAAAAAIv//+AAAP/////9CAAAAAIv///gAAD//////0IAAAAQn///4AAA///////Q + QAAAov///+AAAP//////+hIACQv////gAAD///////8Bf6Bf////4AAA////////9AAD/////+AAAP// + ///////////////gAAA= + + + \ No newline at end of file diff --git a/Tongue extraction_cropresizemethod/Tongue extraction/Program.cs b/Tongue extraction_cropresizemethod/Tongue extraction/Program.cs new file mode 100644 index 0000000..c2f1ac0 --- /dev/null +++ b/Tongue extraction_cropresizemethod/Tongue extraction/Program.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Text; + +namespace Tongue_extraction +{ + static class Program + { + [STAThread] + static void Main() + { + try + { + Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); + Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); + AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); + + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + catch (Exception ex) + { + string str = GetExceptionMsg(ex, string.Empty); + MessageBox.Show(str, "System Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + + static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) + { + string str = GetExceptionMsg(e.Exception, e.ToString()); + MessageBox.Show(str, "System Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + //LogManager.WriteLog(str); + } + + static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) + { + string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString()); + MessageBox.Show(str, "System Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + //LogManager.WriteLog(str); + } + + static string GetExceptionMsg(Exception ex, string backStr) + { + StringBuilder sb = new StringBuilder(); + sb.AppendLine("****************************Exception Text****************************"); + sb.AppendLine("【Time】:" + DateTime.Now.ToString()); + if (ex != null) + { + sb.AppendLine("【Exception Type】:" + ex.GetType().Name); + sb.AppendLine("【Exception Information】:" + ex.Message); + sb.AppendLine("【Stack Call】:" + ex.StackTrace); + } + else + { + sb.AppendLine("【Unhandled Exception】:" + backStr); + } + sb.AppendLine("***************************************************************"); + return sb.ToString(); + } + } +} diff --git a/Tongue extraction_cropresizemethod/Tongue extraction/Properties/AssemblyInfo.cs b/Tongue extraction_cropresizemethod/Tongue extraction/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..604a626 --- /dev/null +++ b/Tongue extraction_cropresizemethod/Tongue extraction/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。 +// アセンブリに関連付けられている情報を変更するには、 +// これらの属性値を変更してください。 +[assembly: AssemblyTitle("Tongue extraction")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Tongue extraction")] +[assembly: AssemblyCopyright("Copyright © 2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible を false に設定すると、その型はこのアセンブリ内で COM コンポーネントから +// 参照不可能になります。COM からこのアセンブリ内の型にアクセスする場合は、 +// その型の ComVisible 属性を true に設定してください。 +[assembly: ComVisible(false)] + +// このプロジェクトが COM に公開される場合、次の GUID が typelib の ID になります +[assembly: Guid("d382f9e7-a41d-4d82-a59b-cf4095134d6b")] + +// アセンブリのバージョン情報は次の 4 つの値で構成されています: +// +// メジャー バージョン +// マイナー バージョン +// ビルド番号 +// Revision +// +// すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を +// 既定値にすることができます: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Tongue extraction_cropresizemethod/Tongue extraction/Properties/Resources.Designer.cs b/Tongue extraction_cropresizemethod/Tongue extraction/Properties/Resources.Designer.cs new file mode 100644 index 0000000..ce5fbbb --- /dev/null +++ b/Tongue extraction_cropresizemethod/Tongue extraction/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// このコードはツールによって生成されました。 +// ランタイム バージョン:4.0.30319.42000 +// +// このファイルへの変更は、以下の状況下で不正な動作の原因になったり、 +// コードが再生成されるときに損失したりします。 +// +//------------------------------------------------------------------------------ + +namespace Tongue_extraction.Properties { + using System; + + + /// + /// ローカライズされた文字列などを検索するための、厳密に型指定されたリソース クラスです。 + /// + // このクラスは StronglyTypedResourceBuilder クラスが ResGen + // または Visual Studio のようなツールを使用して自動生成されました。 + // メンバーを追加または削除するには、.ResX ファイルを編集して、/str オプションと共に + // ResGen を実行し直すか、または 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("Tongue_extraction.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/Tongue extraction_cropresizemethod/Tongue extraction/Properties/Resources.resx b/Tongue extraction_cropresizemethod/Tongue extraction/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/Tongue extraction_cropresizemethod/Tongue extraction/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/Tongue extraction_cropresizemethod/Tongue extraction/Properties/Settings.Designer.cs b/Tongue extraction_cropresizemethod/Tongue extraction/Properties/Settings.Designer.cs new file mode 100644 index 0000000..d8f3798 --- /dev/null +++ b/Tongue extraction_cropresizemethod/Tongue extraction/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// このコードはツールによって生成されました。 +// ランタイム バージョン:4.0.30319.42000 +// +// このファイルへの変更は、以下の状況下で不正な動作の原因になったり、 +// コードが再生成されるときに損失したりします。 +// +//------------------------------------------------------------------------------ + +namespace Tongue_extraction.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.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/Tongue extraction_cropresizemethod/Tongue extraction/Properties/Settings.settings b/Tongue extraction_cropresizemethod/Tongue extraction/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/Tongue extraction_cropresizemethod/Tongue extraction/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Tongue extraction_cropresizemethod/Tongue extraction/packages.config b/Tongue extraction_cropresizemethod/Tongue extraction/packages.config new file mode 100644 index 0000000..6725092 --- /dev/null +++ b/Tongue extraction_cropresizemethod/Tongue extraction/packages.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file