Quellcode durchsuchen

Декомпилированные исходники лаунчера с исправлениями необходимыми для компиляции.

Vieraw vor 1 Jahr
Commit
21c2f9e463
100 geänderte Dateien mit 3966 neuen und 0 gelöschten Zeilen
  1. 13 0
      LauncherIcarus/.idea/.idea.LauncherIcarus/.idea/.gitignore
  2. 4 0
      LauncherIcarus/.idea/.idea.LauncherIcarus/.idea/encodings.xml
  3. 8 0
      LauncherIcarus/.idea/.idea.LauncherIcarus/.idea/indexLayout.xml
  4. 6 0
      LauncherIcarus/.idea/.idea.LauncherIcarus/.idea/vcs.xml
  5. BIN
      LauncherIcarus/.vs/LauncherIcarus/v16/.suo
  6. 24 0
      LauncherIcarus/App.cs
  7. 15 0
      LauncherIcarus/AssemblyInfo.cs
  8. 1 0
      LauncherIcarus/Bin/Debug/AccountSetting
  9. 1 0
      LauncherIcarus/Bin/Debug/Language
  10. BIN
      LauncherIcarus/Bin/Debug/LauncherIcarus.exe
  11. BIN
      LauncherIcarus/Bin/Debug/LauncherIcarus.pdb
  12. 1 0
      LauncherIcarus/Bin/Debug/LauncherVersionSetting
  13. 342 0
      LauncherIcarus/Bin/Debug/Logger/Log-08-13-2024.txt
  14. BIN
      LauncherIcarus/Bin/Debug/Newtonsoft.Json.dll
  15. 1 0
      LauncherIcarus/Bin/Release/AccountSetting
  16. 1 0
      LauncherIcarus/Bin/Release/Language
  17. BIN
      LauncherIcarus/Bin/Release/LauncherApp.exe
  18. BIN
      LauncherIcarus/Bin/Release/LauncherIcarus.exe
  19. 1 0
      LauncherIcarus/Bin/Release/LauncherVersionSetting
  20. BIN
      LauncherIcarus/Bin/Release/Newtonsoft.Json.dll
  21. 1 0
      LauncherIcarus/Bin/Release/RedistInstall
  22. 45 0
      LauncherIcarus/Daemon/Configuration.cs
  23. 309 0
      LauncherIcarus/Daemon/Crc32.cs
  24. 91 0
      LauncherIcarus/Daemon/EncryptionHelper.cs
  25. 32 0
      LauncherIcarus/Daemon/EnvironmentHelper.cs
  26. 35 0
      LauncherIcarus/Daemon/FileConfig.cs
  27. 154 0
      LauncherIcarus/Daemon/HTTP/HTTPREQ.cs
  28. 30 0
      LauncherIcarus/Daemon/Logger.cs
  29. 61 0
      LauncherIcarus/Daemon/SelectAllFocusBehavior.cs
  30. 104 0
      LauncherIcarus/LauncherIcarus.csproj
  31. BIN
      LauncherIcarus/LauncherIcarus.pdb
  32. 26 0
      LauncherIcarus/LauncherIcarus.sln
  33. 513 0
      LauncherIcarus/MainWindow.xaml.cs
  34. 13 0
      LauncherIcarus/Model/AccountModel.cs
  35. 41 0
      LauncherIcarus/Model/MainViewModel.cs
  36. 22 0
      LauncherIcarus/Model/ViewModelBase.cs
  37. 41 0
      LauncherIcarus/Properties/Resources.cs
  38. 120 0
      LauncherIcarus/Properties/Resources.resx
  39. 15 0
      LauncherIcarus/Properties/Settings.cs
  40. 31 0
      LauncherIcarus/ResponseModel/Accountinfos.cs
  41. 17 0
      LauncherIcarus/ResponseModel/Files.cs
  42. 17 0
      LauncherIcarus/ResponseModel/ResponseLauncherVersion.cs
  43. 12 0
      LauncherIcarus/ResponseModel/ResponseListLauncherFiles.cs
  44. 15 0
      LauncherIcarus/ResponseModel/ResponseLogin.cs
  45. BIN
      LauncherIcarus/data/img/acessar.png
  46. BIN
      LauncherIcarus/data/img/acessar_hover.png
  47. BIN
      LauncherIcarus/data/img/atualizando.png
  48. BIN
      LauncherIcarus/data/img/back_img.png
  49. BIN
      LauncherIcarus/data/img/close.png
  50. BIN
      LauncherIcarus/data/img/close_hover.png
  51. BIN
      LauncherIcarus/data/img/icon3.png
  52. BIN
      LauncherIcarus/data/img/icon4.ico
  53. BIN
      LauncherIcarus/data/img/iniciar.png
  54. BIN
      LauncherIcarus/data/img/iniciar_bw.png
  55. BIN
      LauncherIcarus/data/img/iniciar_hover.png
  56. BIN
      LauncherIcarus/data/img/input.png
  57. BIN
      LauncherIcarus/data/img/minimizer.png
  58. BIN
      LauncherIcarus/data/img/minimizer_hover.png
  59. BIN
      LauncherIcarus/data/img/update_bar.png
  60. BIN
      LauncherIcarus/data/img/verificando.png
  61. BIN
      LauncherIcarus/data/img/verificar.png
  62. BIN
      LauncherIcarus/data/img/verificar_hover.png
  63. BIN
      LauncherIcarus/icon4.ico
  64. BIN
      LauncherIcarus/lib/Newtonsoft.Json.dll
  65. 447 0
      LauncherIcarus/mainwindow.xaml
  66. 4 0
      LauncherIcarus/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs
  67. BIN
      LauncherIcarus/obj/Debug/DesignTimeResolveAssemblyReferences.cache
  68. BIN
      LauncherIcarus/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  69. 62 0
      LauncherIcarus/obj/Debug/GeneratedInternalTypeHelper.g.cs
  70. 62 0
      LauncherIcarus/obj/Debug/GeneratedInternalTypeHelper.g.i.cs
  71. BIN
      LauncherIcarus/obj/Debug/LauncherIcarus.Properties.Resources.resources
  72. BIN
      LauncherIcarus/obj/Debug/LauncherIcarus.csproj.AssemblyReference.cache
  73. 0 0
      LauncherIcarus/obj/Debug/LauncherIcarus.csproj.CopyComplete
  74. 1 0
      LauncherIcarus/obj/Debug/LauncherIcarus.csproj.CoreCompileInputs.cache
  75. 17 0
      LauncherIcarus/obj/Debug/LauncherIcarus.csproj.FileListAbsolute.txt
  76. BIN
      LauncherIcarus/obj/Debug/LauncherIcarus.csproj.GenerateResource.cache
  77. 0 0
      LauncherIcarus/obj/Debug/LauncherIcarus.csproj.SuggestedBindingRedirects.cache
  78. BIN
      LauncherIcarus/obj/Debug/LauncherIcarus.exe
  79. BIN
      LauncherIcarus/obj/Debug/LauncherIcarus.g.resources
  80. BIN
      LauncherIcarus/obj/Debug/LauncherIcarus.pdb
  81. 20 0
      LauncherIcarus/obj/Debug/LauncherIcarus_MarkupCompile.cache
  82. 4 0
      LauncherIcarus/obj/Debug/LauncherIcarus_MarkupCompile.lref
  83. BIN
      LauncherIcarus/obj/Debug/mainwindow.baml
  84. 395 0
      LauncherIcarus/obj/Debug/mainwindow.g.cs
  85. 395 0
      LauncherIcarus/obj/Debug/mainwindow.g.i.cs
  86. BIN
      LauncherUpdater/.vs/LauncherUpdater/v16/.suo
  87. 24 0
      LauncherUpdater/App.cs
  88. 15 0
      LauncherUpdater/AssemblyInfo.cs
  89. 12 0
      LauncherUpdater/Bin/Debug/Launcher/Logger/Log-08-13-2024.txt
  90. BIN
      LauncherUpdater/Bin/Debug/LauncherUpdater.exe
  91. BIN
      LauncherUpdater/Bin/Debug/LauncherUpdater.pdb
  92. BIN
      LauncherUpdater/Bin/Debug/Newtonsoft.Json.dll
  93. BIN
      LauncherUpdater/Bin/Release/LauncherUpdater.exe
  94. BIN
      LauncherUpdater/Bin/Release/Newtonsoft.Json.dll
  95. BIN
      LauncherUpdater/Bin/Release/YDEntrance.dll
  96. BIN
      LauncherUpdater/Bin/Release/YDEntrance64.dll
  97. BIN
      LauncherUpdater/Bin/Release/msvcp100.dll
  98. BIN
      LauncherUpdater/Bin/Release/msvcr100.dll
  99. 36 0
      LauncherUpdater/Function/Configuration.cs
  100. 309 0
      LauncherUpdater/Function/Crc32.cs

+ 13 - 0
LauncherIcarus/.idea/.idea.LauncherIcarus/.idea/.gitignore

@@ -0,0 +1,13 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Rider ignored files
+/.idea.LauncherIcarus.iml
+/projectSettingsUpdater.xml
+/modules.xml
+/contentModel.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 4 - 0
LauncherIcarus/.idea/.idea.LauncherIcarus/.idea/encodings.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
+</project>

+ 8 - 0
LauncherIcarus/.idea/.idea.LauncherIcarus/.idea/indexLayout.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="UserContentModel">
+    <attachedFolders />
+    <explicitIncludes />
+    <explicitExcludes />
+  </component>
+</project>

+ 6 - 0
LauncherIcarus/.idea/.idea.LauncherIcarus/.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
+  </component>
+</project>

BIN
LauncherIcarus/.vs/LauncherIcarus/v16/.suo


+ 24 - 0
LauncherIcarus/App.cs

@@ -0,0 +1,24 @@
+using System;
+using System.CodeDom.Compiler;
+using System.Diagnostics;
+using System.Windows;
+
+namespace LauncherIcarus
+{
+    public class App : Application
+    {
+        [DebuggerNonUserCode]
+        [GeneratedCode("PresentationBuildTasks", "4.0.0.0")]
+        private void InitializeComponent() => this.StartupUri = new Uri("MainWindow.xaml", UriKind.Relative);
+
+        [STAThread]
+        [DebuggerNonUserCode]
+        [GeneratedCode("PresentationBuildTasks", "4.0.0.0")]
+        public static void Main()
+        {
+            App app = new App();
+            app.InitializeComponent();
+            app.Run();
+        }
+    }
+}

+ 15 - 0
LauncherIcarus/AssemblyInfo.cs

@@ -0,0 +1,15 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+[assembly: AssemblyTitle("LauncherIcarus")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("LauncherIcarus")]
+[assembly: AssemblyCopyright("Copyright ©  2021")]
+[assembly: AssemblyTrademark("")]
+[assembly: ComVisible(false)]
+[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyVersion("1.0.0.0")]

+ 1 - 0
LauncherIcarus/Bin/Debug/AccountSetting

@@ -0,0 +1 @@
+matar

+ 1 - 0
LauncherIcarus/Bin/Debug/Language

@@ -0,0 +1 @@
+PT-BR

BIN
LauncherIcarus/Bin/Debug/LauncherIcarus.exe


BIN
LauncherIcarus/Bin/Debug/LauncherIcarus.pdb


+ 1 - 0
LauncherIcarus/Bin/Debug/LauncherVersionSetting

@@ -0,0 +1 @@
+eZ0qpvL5EFndQjjO49ZTfg==

+ 342 - 0
LauncherIcarus/Bin/Debug/Logger/Log-08-13-2024.txt

@@ -0,0 +1,342 @@
+
+Log Entry : 
+12:33:16 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+12:33:16 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+12:33:24 13 августа 2024 г.
+  :
+  :Произошла ошибка при отправке запроса.
+-------------------------------
+
+Log Entry : 
+12:33:25 13 августа 2024 г.
+  :
+  :Произошла ошибка при отправке запроса.
+-------------------------------
+
+Log Entry : 
+12:38:19 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+12:38:19 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+12:38:21 13 августа 2024 г.
+  :
+  :Произошла ошибка при отправке запроса.
+-------------------------------
+
+Log Entry : 
+12:38:22 13 августа 2024 г.
+  :
+  :Произошла ошибка при отправке запроса.
+-------------------------------
+
+Log Entry : 
+12:38:28 13 августа 2024 г.
+  :
+  :Произошла ошибка при отправке запроса.
+-------------------------------
+
+Log Entry : 
+12:38:28 13 августа 2024 г.
+  :
+  :Произошла ошибка при отправке запроса.
+-------------------------------
+
+Log Entry : 
+12:39:19 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+12:39:55 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+12:40:03 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+12:40:11 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+12:56:36 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+12:56:36 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+12:56:37 13 августа 2024 г.
+  :
+  :Произошла ошибка при отправке запроса.
+-------------------------------
+
+Log Entry : 
+12:56:45 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+12:56:47 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+12:56:48 13 августа 2024 г.
+  :
+  :Произошла ошибка при отправке запроса.
+-------------------------------
+
+Log Entry : 
+12:57:48 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+12:57:48 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+12:57:56 13 августа 2024 г.
+  :
+  :Произошла ошибка при отправке запроса.
+-------------------------------
+
+Log Entry : 
+12:59:49 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+12:59:49 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+12:59:53 13 августа 2024 г.
+  :
+  :Произошла ошибка при отправке запроса.
+-------------------------------
+
+Log Entry : 
+13:01:26 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:01:26 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:01:35 13 августа 2024 г.
+  :
+  :Произошла ошибка при отправке запроса.
+-------------------------------
+
+Log Entry : 
+13:01:45 13 августа 2024 г.
+  :
+  :Произошла ошибка при отправке запроса.
+-------------------------------
+
+Log Entry : 
+13:01:49 13 августа 2024 г.
+  :
+  :Произошла ошибка при отправке запроса.
+-------------------------------
+
+Log Entry : 
+13:04:39 13 августа 2024 г.
+  :
+  :Произошла ошибка при отправке запроса.
+-------------------------------
+
+Log Entry : 
+13:05:05 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:05:05 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:05:19 13 августа 2024 г.
+  :
+  :Unexpected character encountered while parsing value: <. Path '', line 0, position 0.
+-------------------------------
+
+Log Entry : 
+13:06:44 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:06:44 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:06:49 13 августа 2024 г.
+  :
+  :Unexpected character encountered while parsing value: <. Path '', line 0, position 0.
+-------------------------------
+
+Log Entry : 
+13:06:55 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:06:55 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:08:31 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:11:32 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:11:36 13 августа 2024 г.
+  :
+  :Unexpected character encountered while parsing value: <. Path '', line 0, position 0.
+-------------------------------
+
+Log Entry : 
+13:20:39 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:20:39 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:20:44 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:20:45 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:20:51 13 августа 2024 г.
+  :
+  :Unexpected character encountered while parsing value: <. Path '', line 0, position 0.
+-------------------------------
+
+Log Entry : 
+13:23:01 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:23:01 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:23:05 13 августа 2024 г.
+  :
+  :Unexpected character encountered while parsing value: <. Path '', line 0, position 0.
+-------------------------------
+
+Log Entry : 
+13:31:24 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:31:24 13 августа 2024 г.
+  :
+  :Не удается найти указанный файл
+-------------------------------
+
+Log Entry : 
+13:31:27 13 августа 2024 г.
+  :
+  :Unexpected character encountered while parsing value: <. Path '', line 0, position 0.
+-------------------------------
+
+Log Entry : 
+13:31:29 13 августа 2024 г.
+  :
+  :Не удалось найти часть пути "D:\Icarus\projeto launcher\projeto launcher\launcher\Icarus\bin\start.bat".
+-------------------------------
+
+Log Entry : 
+13:31:31 13 августа 2024 г.
+  :
+  :Не удалось найти часть пути "D:\Icarus\projeto launcher\projeto launcher\launcher\Icarus\bin\start.bat".
+-------------------------------
+
+Log Entry : 
+13:32:26 13 августа 2024 г.
+  :
+  :Не удалось найти часть пути "D:\Icarus\projeto launcher\projeto launcher\launcher\Icarus\bin\start.bat".
+-------------------------------

BIN
LauncherIcarus/Bin/Debug/Newtonsoft.Json.dll


+ 1 - 0
LauncherIcarus/Bin/Release/AccountSetting

@@ -0,0 +1 @@
+quenioTeste

+ 1 - 0
LauncherIcarus/Bin/Release/Language

@@ -0,0 +1 @@
+PT-BR

BIN
LauncherIcarus/Bin/Release/LauncherApp.exe


BIN
LauncherIcarus/Bin/Release/LauncherIcarus.exe


+ 1 - 0
LauncherIcarus/Bin/Release/LauncherVersionSetting

@@ -0,0 +1 @@
+eZ0qpvL5EFndQjjO49ZTfg==

BIN
LauncherIcarus/Bin/Release/Newtonsoft.Json.dll


+ 1 - 0
LauncherIcarus/Bin/Release/RedistInstall

@@ -0,0 +1 @@
+TRUE

+ 45 - 0
LauncherIcarus/Daemon/Configuration.cs

@@ -0,0 +1,45 @@
+namespace LauncherIcarus.Daemon
+{
+    public class Configuration
+    {
+        public static readonly Configuration Default = new Configuration()
+        {
+            ServerIP = "http://192.168.183.129:5000",
+            LoginUrl = "/api/LoginAction",
+            ListFileUrl = "/api/LauncherListDownloadFiles",
+            LauncherNewsUrl = "/LauncherIndex",
+            CheckClientFiles = "/api/CheckClientFiles",
+            GetLauncherVersion = "/api/getLauncherVersion",
+            UpdateLauncherVersion = "/api/UpdateLauncherVersion",
+            DownloadClientFileUrl = "/ClientFiles/",
+            DownloadUpdateFileUrl = "/DownloadFiles/",
+            GetTranslate = "/api/GetTranslate",
+            LauncherDir = "./Launcher/",
+            DownloadDir = "./DownloadFiles/"
+        };
+
+        public string ServerIP { get; set; }
+
+        public string LoginUrl { get; set; }
+
+        public string ListFileUrl { get; set; }
+
+        public string LauncherNewsUrl { get; set; }
+
+        public string CheckClientFiles { get; set; }
+
+        public string GetLauncherVersion { get; set; }
+
+        public string LauncherDir { get; set; }
+
+        public string DownloadDir { get; set; }
+
+        public string UpdateLauncherVersion { get; set; }
+
+        public string DownloadClientFileUrl { get; set; }
+
+        public string DownloadUpdateFileUrl { get; set; }
+
+        public string GetTranslate { get; set; }
+    }
+}

+ 309 - 0
LauncherIcarus/Daemon/Crc32.cs

@@ -0,0 +1,309 @@
+using System.Security.Cryptography;
+using System.Text;
+
+namespace LauncherIcarus.Daemon
+{
+    public class Crc32 : HashAlgorithm
+    {
+        public const uint DefaultSeed = 4294967295;
+
+        private static readonly uint[] CrcTable = new uint[256]
+        {
+            0U,
+            1996959894U,
+            3993919788U,
+            2567524794U,
+            124634137U,
+            1886057615U,
+            3915621685U,
+            2657392035U,
+            249268274U,
+            2044508324U,
+            3772115230U,
+            2547177864U,
+            162941995U,
+            2125561021U,
+            3887607047U,
+            2428444049U,
+            498536548U,
+            1789927666U,
+            4089016648U,
+            2227061214U,
+            450548861U,
+            1843258603U,
+            4107580753U,
+            2211677639U,
+            325883990U,
+            1684777152U,
+            4251122042U,
+            2321926636U,
+            335633487U,
+            1661365465U,
+            4195302755U,
+            2366115317U,
+            997073096U,
+            1281953886U,
+            3579855332U,
+            2724688242U,
+            1006888145U,
+            1258607687U,
+            3524101629U,
+            2768942443U,
+            901097722U,
+            1119000684U,
+            3686517206U,
+            2898065728U,
+            853044451U,
+            1172266101U,
+            3705015759U,
+            2882616665U,
+            651767980U,
+            1373503546U,
+            3369554304U,
+            3218104598U,
+            565507253U,
+            1454621731U,
+            3485111705U,
+            3099436303U,
+            671266974U,
+            1594198024U,
+            3322730930U,
+            2970347812U,
+            795835527U,
+            1483230225U,
+            3244367275U,
+            3060149565U,
+            1994146192U,
+            31158534U,
+            2563907772U,
+            4023717930U,
+            1907459465U,
+            112637215U,
+            2680153253U,
+            3904427059U,
+            2013776290U,
+            251722036U,
+            2517215374U,
+            3775830040U,
+            2137656763U,
+            141376813U,
+            2439277719U,
+            3865271297U,
+            1802195444U,
+            476864866U,
+            2238001368U,
+            4066508878U,
+            1812370925U,
+            453092731U,
+            2181625025U,
+            4111451223U,
+            1706088902U,
+            314042704U,
+            2344532202U,
+            4240017532U,
+            1658658271U,
+            366619977U,
+            2362670323U,
+            4224994405U,
+            1303535960U,
+            984961486U,
+            2747007092U,
+            3569037538U,
+            1256170817U,
+            1037604311U,
+            2765210733U,
+            3554079995U,
+            1131014506U,
+            879679996U,
+            2909243462U,
+            3663771856U,
+            1141124467U,
+            855842277U,
+            2852801631U,
+            3708648649U,
+            1342533948U,
+            654459306U,
+            3188396048U,
+            3373015174U,
+            1466479909U,
+            544179635U,
+            3110523913U,
+            3462522015U,
+            1591671054U,
+            702138776U,
+            2966460450U,
+            3352799412U,
+            1504918807U,
+            783551873U,
+            3082640443U,
+            3233442989U,
+            3988292384U,
+            2596254646U,
+            62317068U,
+            1957810842U,
+            3939845945U,
+            2647816111U,
+            81470997U,
+            1943803523U,
+            3814918930U,
+            2489596804U,
+            225274430U,
+            2053790376U,
+            3826175755U,
+            2466906013U,
+            167816743U,
+            2097651377U,
+            4027552580U,
+            2265490386U,
+            503444072U,
+            1762050814U,
+            4150417245U,
+            2154129355U,
+            426522225U,
+            1852507879U,
+            4275313526U,
+            2312317920U,
+            282753626U,
+            1742555852U,
+            4189708143U,
+            2394877945U,
+            397917763U,
+            1622183637U,
+            3604390888U,
+            2714866558U,
+            953729732U,
+            1340076626U,
+            3518719985U,
+            2797360999U,
+            1068828381U,
+            1219638859U,
+            3624741850U,
+            2936675148U,
+            906185462U,
+            1090812512U,
+            3747672003U,
+            2825379669U,
+            829329135U,
+            1181335161U,
+            3412177804U,
+            3160834842U,
+            628085408U,
+            1382605366U,
+            3423369109U,
+            3138078467U,
+            570562233U,
+            1426400815U,
+            3317316542U,
+            2998733608U,
+            733239954U,
+            1555261956U,
+            3268935591U,
+            3050360625U,
+            752459403U,
+            1541320221U,
+            2607071920U,
+            3965973030U,
+            1969922972U,
+            40735498U,
+            2617837225U,
+            3943577151U,
+            1913087877U,
+            83908371U,
+            2512341634U,
+            3803740692U,
+            2075208622U,
+            213261112U,
+            2463272603U,
+            3855990285U,
+            2094854071U,
+            198958881U,
+            2262029012U,
+            4057260610U,
+            1759359992U,
+            534414190U,
+            2176718541U,
+            4139329115U,
+            1873836001U,
+            414664567U,
+            2282248934U,
+            4279200368U,
+            1711684554U,
+            285281116U,
+            2405801727U,
+            4167216745U,
+            1634467795U,
+            376229701U,
+            2685067896U,
+            3608007406U,
+            1308918612U,
+            956543938U,
+            2808555105U,
+            3495958263U,
+            1231636301U,
+            1047427035U,
+            2932959818U,
+            3654703836U,
+            1088359270U,
+            936918000U,
+            2847714899U,
+            3736837829U,
+            1202900863U,
+            817233897U,
+            3183342108U,
+            3401237130U,
+            1404277552U,
+            615818150U,
+            3134207493U,
+            3453421203U,
+            1423857449U,
+            601450431U,
+            3009837614U,
+            3294710456U,
+            1567103746U,
+            711928724U,
+            3020668471U,
+            3272380065U,
+            1510334235U,
+            755167117U
+        };
+
+        private uint crcValue;
+
+        public uint CrcValue =>
+            (uint) ((int) this.HashValue[0] << 24 | (int) this.HashValue[1] << 16 | (int) this.HashValue[2] << 8) |
+            (uint) this.HashValue[3];
+
+        public override int HashSize => 32;
+
+        public static uint Calculate(string data)
+        {
+            UTF8Encoding utF8Encoding = new UTF8Encoding();
+            Crc32 crc32 = new Crc32();
+            crc32.ComputeHash(utF8Encoding.GetBytes(data));
+            return crc32.CrcValue;
+        }
+
+        public override void Initialize() => this.crcValue = 0U;
+
+        protected override void HashCore(byte[] buffer, int start, int length)
+        {
+            this.crcValue ^= uint.MaxValue;
+            while (--length >= 0)
+                this.crcValue = Crc32.CrcTable[((int) this.crcValue ^ (int) buffer[start++]) & (int) byte.MaxValue] ^
+                                this.crcValue >> 8;
+            this.crcValue ^= uint.MaxValue;
+        }
+
+        protected override byte[] HashFinal()
+        {
+            this.HashValue = new byte[4]
+            {
+                (byte) (this.crcValue >> 24 & (uint) byte.MaxValue),
+                (byte) (this.crcValue >> 16 & (uint) byte.MaxValue),
+                (byte) (this.crcValue >> 8 & (uint) byte.MaxValue),
+                (byte) (this.crcValue & (uint) byte.MaxValue)
+            };
+            return this.HashValue;
+        }
+    }
+}

+ 91 - 0
LauncherIcarus/Daemon/EncryptionHelper.cs

@@ -0,0 +1,91 @@
+using System;
+using System.IO;
+using System.Security.Cryptography;
+using System.Text;
+
+namespace LauncherIcarus.Daemon
+{
+    public static class EncryptionHelper
+    {
+        public static string Encrypt(string clearText)
+        {
+            string password = "N1PEUPQX";
+            byte[] bytes = Encoding.Unicode.GetBytes(clearText);
+            using (Aes aes = Aes.Create())
+            {
+                Rfc2898DeriveBytes rfc2898DeriveBytes = new Rfc2898DeriveBytes(password, new byte[13]
+                {
+                    (byte) 73,
+                    (byte) 118,
+                    (byte) 97,
+                    (byte) 110,
+                    (byte) 32,
+                    (byte) 77,
+                    (byte) 101,
+                    (byte) 100,
+                    (byte) 118,
+                    (byte) 101,
+                    (byte) 100,
+                    (byte) 101,
+                    (byte) 118
+                });
+                aes.Key = rfc2898DeriveBytes.GetBytes(32);
+                aes.IV = rfc2898DeriveBytes.GetBytes(16);
+                using (MemoryStream memoryStream = new MemoryStream())
+                {
+                    using (CryptoStream cryptoStream = new CryptoStream((Stream) memoryStream, aes.CreateEncryptor(),
+                               CryptoStreamMode.Write))
+                    {
+                        cryptoStream.Write(bytes, 0, bytes.Length);
+                        cryptoStream.Close();
+                    }
+
+                    clearText = Convert.ToBase64String(memoryStream.ToArray());
+                }
+            }
+
+            return clearText;
+        }
+
+        public static string Decrypt(string cipherText)
+        {
+            string password = "N1PEUPQX";
+            cipherText = cipherText.Replace(" ", "+");
+            byte[] buffer = Convert.FromBase64String(cipherText);
+            using (Aes aes = Aes.Create())
+            {
+                Rfc2898DeriveBytes rfc2898DeriveBytes = new Rfc2898DeriveBytes(password, new byte[13]
+                {
+                    (byte) 73,
+                    (byte) 118,
+                    (byte) 97,
+                    (byte) 110,
+                    (byte) 32,
+                    (byte) 77,
+                    (byte) 101,
+                    (byte) 100,
+                    (byte) 118,
+                    (byte) 101,
+                    (byte) 100,
+                    (byte) 101,
+                    (byte) 118
+                });
+                aes.Key = rfc2898DeriveBytes.GetBytes(32);
+                aes.IV = rfc2898DeriveBytes.GetBytes(16);
+                using (MemoryStream memoryStream = new MemoryStream())
+                {
+                    using (CryptoStream cryptoStream = new CryptoStream((Stream) memoryStream, aes.CreateDecryptor(),
+                               CryptoStreamMode.Write))
+                    {
+                        cryptoStream.Write(buffer, 0, buffer.Length);
+                        cryptoStream.Close();
+                    }
+
+                    cipherText = Encoding.Unicode.GetString(memoryStream.ToArray());
+                }
+            }
+
+            return cipherText;
+        }
+    }
+}

+ 32 - 0
LauncherIcarus/Daemon/EnvironmentHelper.cs

@@ -0,0 +1,32 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace LauncherIcarus.Daemon
+{
+    public static class EnvironmentHelper
+    {
+        [DllImport("kernel32.dll")]
+        private static extern IntPtr GetCurrentProcess();
+
+        [DllImport("kernel32.dll")]
+        private static extern IntPtr GetModuleHandle(string moduleName);
+
+        [DllImport("kernel32")]
+        private static extern IntPtr GetProcAddress(IntPtr hModule, string procName);
+
+        [DllImport("kernel32.dll")]
+        private static extern bool IsWow64Process(IntPtr hProcess, out bool wow64Process);
+
+        public static bool Is64BitOperatingSystem()
+        {
+            if (IntPtr.Size == 8)
+                return true;
+            IntPtr moduleHandle = EnvironmentHelper.GetModuleHandle("kernel32");
+            bool wow64Process;
+            return moduleHandle != IntPtr.Zero &&
+                   EnvironmentHelper.GetProcAddress(moduleHandle, "IsWow64Process") != IntPtr.Zero &&
+                   EnvironmentHelper.IsWow64Process(EnvironmentHelper.GetCurrentProcess(), out wow64Process) &
+                   wow64Process;
+        }
+    }
+}

+ 35 - 0
LauncherIcarus/Daemon/FileConfig.cs

@@ -0,0 +1,35 @@
+using System;
+using System.IO;
+
+namespace LauncherIcarus.Daemon
+{
+    public class FileConfig
+    {
+        private string AccountSetting = nameof(AccountSetting);
+        private string LauncherVersionSetting = nameof(LauncherVersionSetting);
+        private string RedistInstall = nameof(RedistInstall);
+        private string Language = nameof(Language);
+
+        public void SetUsername(string Username) =>
+            File.WriteAllText(this.AccountSetting, Username + Environment.NewLine);
+
+        public string GetUsername() => File.Exists(this.AccountSetting)
+            ? File.ReadAllText(this.AccountSetting).Replace("\r\n", string.Empty)
+            : "";
+
+        public void SetLauncherIsChecked(string text) =>
+            File.WriteAllText(this.LauncherVersionSetting, text + Environment.NewLine);
+
+        public string GetLauncherIsChecked() => File.Exists(this.LauncherVersionSetting)
+            ? File.ReadAllText(this.LauncherVersionSetting).Replace("\r\n", string.Empty)
+            : "FALSE";
+
+        public void SetRedistIsInstaled() => File.WriteAllText(this.RedistInstall, "TRUE");
+
+        public void SetLanguage(string text) => File.WriteAllText(this.Language, text + Environment.NewLine);
+
+        public string GetLanguage() => File.Exists(this.Language)
+            ? File.ReadAllText(this.Language).Replace("\r\n", string.Empty)
+            : "";
+    }
+}

+ 154 - 0
LauncherIcarus/Daemon/HTTP/HTTPREQ.cs

@@ -0,0 +1,154 @@
+using System.Collections.Generic;
+using System.Net.Http;
+using System.Threading.Tasks;
+
+namespace LauncherIcarus.Daemon.HTTP
+{
+    public class HTTPREQ
+    {
+        private string LoginUrl = Configuration.Default.ServerIP + Configuration.Default.LoginUrl;
+
+        private string GetLauncherVersionUrl =
+            Configuration.Default.ServerIP + Configuration.Default.GetLauncherVersion;
+
+        private string UpdateLauncherVersionUrl =
+            Configuration.Default.ServerIP + Configuration.Default.UpdateLauncherVersion;
+
+        private string GetLauncherFilesUrl = Configuration.Default.ServerIP + Configuration.Default.ListFileUrl;
+        private string CheckClientFiles = Configuration.Default.ServerIP + Configuration.Default.CheckClientFiles;
+        private string GetTranslate = Configuration.Default.ServerIP + Configuration.Default.GetTranslate;
+
+        public async Task<string> LoginAsync(string accountName, string password)
+        {
+            string str;
+            using (FormUrlEncodedContent content = new FormUrlEncodedContent(
+                       (IEnumerable<KeyValuePair<string, string>>) new Dictionary<string, string>()
+                       {
+                           {
+                               "Username",
+                               accountName
+                           },
+                           {
+                               "Password",
+                               password
+                           }
+                       }))
+            {
+                using (HttpClient client = new HttpClient())
+                    str = await (await client.PostAsync(this.LoginUrl, (HttpContent) content)).Content
+                        .ReadAsStringAsync();
+            }
+
+            return str;
+        }
+
+        public async Task<string> GetLauncherVersionAsync(string token, string Username)
+        {
+            string launcherVersionAsync;
+            using (FormUrlEncodedContent content = new FormUrlEncodedContent(
+                       (IEnumerable<KeyValuePair<string, string>>) new Dictionary<string, string>()
+                       {
+                           {
+                               nameof(token),
+                               token
+                           },
+                           {
+                               nameof(Username),
+                               Username
+                           }
+                       }))
+            {
+                using (HttpClient client = new HttpClient())
+                    launcherVersionAsync =
+                        await (await client.PostAsync(this.GetLauncherVersionUrl, (HttpContent) content)).Content
+                            .ReadAsStringAsync();
+            }
+
+            return launcherVersionAsync;
+        }
+
+        public async Task<string> UpdateLauncherVersionAsync(
+            string token,
+            string UpdatedVersion,
+            string Username)
+        {
+            string str;
+            using (FormUrlEncodedContent content = new FormUrlEncodedContent(
+                       (IEnumerable<KeyValuePair<string, string>>) new Dictionary<string, string>()
+                       {
+                           {
+                               nameof(token),
+                               token
+                           },
+                           {
+                               nameof(Username),
+                               Username
+                           },
+                           {
+                               "UpdaterVersion",
+                               UpdatedVersion
+                           }
+                       }))
+            {
+                using (HttpClient client = new HttpClient())
+                    str = await (await client.PostAsync(this.UpdateLauncherVersionUrl, (HttpContent) content)).Content
+                        .ReadAsStringAsync();
+            }
+
+            return str;
+        }
+
+        public async Task<string> GetLauncherListFilesAsync(string token, string clientVersion)
+        {
+            string launcherListFilesAsync;
+            using (FormUrlEncodedContent content = new FormUrlEncodedContent(
+                       (IEnumerable<KeyValuePair<string, string>>) new Dictionary<string, string>()
+                       {
+                           {
+                               nameof(token),
+                               token
+                           },
+                           {
+                               nameof(clientVersion),
+                               clientVersion
+                           }
+                       }))
+            {
+                using (HttpClient client = new HttpClient())
+                    launcherListFilesAsync =
+                        await (await client.PostAsync(this.GetLauncherFilesUrl, (HttpContent) content)).Content
+                            .ReadAsStringAsync();
+            }
+
+            return launcherListFilesAsync;
+        }
+
+        public async Task<string> GetClientFilesCheckListAsync(string token)
+        {
+            string filesCheckListAsync;
+            using (FormUrlEncodedContent content = new FormUrlEncodedContent(
+                       (IEnumerable<KeyValuePair<string, string>>) new Dictionary<string, string>()
+                       {
+                           {
+                               nameof(token),
+                               token
+                           }
+                       }))
+            {
+                using (HttpClient client = new HttpClient())
+                    filesCheckListAsync = await (await client.PostAsync(this.CheckClientFiles, (HttpContent) content))
+                        .Content.ReadAsStringAsync();
+            }
+
+            return filesCheckListAsync;
+        }
+
+        public async Task<string> GetLauncherTranslateAsync()
+        {
+            string launcherTranslateAsync;
+            using (HttpClient client = new HttpClient())
+                launcherTranslateAsync = await (await client.GetAsync(this.GetTranslate)).Content.ReadAsStringAsync();
+            return launcherTranslateAsync;
+        }
+    }
+}

+ 30 - 0
LauncherIcarus/Daemon/Logger.cs

@@ -0,0 +1,30 @@
+using System;
+using System.IO;
+
+namespace LauncherIcarus.Daemon
+{
+    public class Logger
+    {
+        public static void WriteLog(string strLog)
+        {
+            string path = "./Logger";
+            Path.Combine(Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName, "Top-Level Folder");
+            Directory.CreateDirectory(path);
+            string str = path + "/Log-" + DateTime.Today.ToString("MM-dd-yyyy") + ".txt";
+            FileInfo fileInfo = new FileInfo(str);
+            DirectoryInfo directoryInfo = new DirectoryInfo(fileInfo.DirectoryName);
+            if (!directoryInfo.Exists)
+                directoryInfo.Create();
+            StreamWriter streamWriter = new StreamWriter(fileInfo.Exists
+                ? (Stream) new FileStream(str, FileMode.Append)
+                : (Stream) fileInfo.Create());
+            streamWriter.WriteLine("\r\nLog Entry : ");
+            streamWriter.WriteLine("{0} {1}", (object) DateTime.Now.ToLongTimeString(),
+                (object) DateTime.Now.ToLongDateString());
+            streamWriter.WriteLine("  :");
+            streamWriter.WriteLine("  :{0}", (object) strLog);
+            streamWriter.WriteLine("-------------------------------");
+            streamWriter.Close();
+        }
+    }
+}

+ 61 - 0
LauncherIcarus/Daemon/SelectAllFocusBehavior.cs

@@ -0,0 +1,61 @@
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Input;
+
+namespace LauncherIcarus.Daemon
+{
+    public class SelectAllFocusBehavior
+    {
+        public static readonly DependencyProperty EnableProperty = DependencyProperty.RegisterAttached("Enable",
+            typeof(bool), typeof(SelectAllFocusBehavior),
+            (PropertyMetadata) new FrameworkPropertyMetadata((object) false,
+                new PropertyChangedCallback(SelectAllFocusBehavior.OnEnableChanged)));
+
+        public static bool GetEnable(FrameworkElement frameworkElement) =>
+            (bool) frameworkElement.GetValue(SelectAllFocusBehavior.EnableProperty);
+
+        public static void SetEnable(FrameworkElement frameworkElement, bool value) =>
+            frameworkElement.SetValue(SelectAllFocusBehavior.EnableProperty, (object) value);
+
+        private static void OnEnableChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
+        {
+            if (!(d is FrameworkElement frameworkElement) || !(e.NewValue is bool))
+                return;
+            if ((bool) e.NewValue)
+            {
+                frameworkElement.GotFocus += new RoutedEventHandler(SelectAllFocusBehavior.SelectAll);
+                frameworkElement.PreviewMouseDown +=
+                    new MouseButtonEventHandler(SelectAllFocusBehavior.IgnoreMouseButton);
+            }
+            else
+            {
+                frameworkElement.GotFocus -= new RoutedEventHandler(SelectAllFocusBehavior.SelectAll);
+                frameworkElement.PreviewMouseDown -=
+                    new MouseButtonEventHandler(SelectAllFocusBehavior.IgnoreMouseButton);
+            }
+        }
+
+        private static void SelectAll(object sender, RoutedEventArgs e)
+        {
+            FrameworkElement originalSource = e.OriginalSource as FrameworkElement;
+            switch (originalSource)
+            {
+                case TextBox _:
+                    ((TextBoxBase) originalSource).SelectAll();
+                    break;
+                case PasswordBox _:
+                    ((PasswordBox) originalSource).SelectAll();
+                    break;
+            }
+        }
+
+        private static void IgnoreMouseButton(object sender, MouseButtonEventArgs e)
+        {
+            if (!(sender is FrameworkElement frameworkElement) || frameworkElement.IsKeyboardFocusWithin)
+                return;
+            e.Handled = true;
+            frameworkElement.Focus();
+        }
+    }
+}

+ 104 - 0
LauncherIcarus/LauncherIcarus.csproj

@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <!--Project was exported from assembly: C:\Users\Administrator\Desktop\Launcher\Launcher\LauncherIcarus.exe-->
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{1C762126-981C-4830-A940-E1C6A0E00BCE}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <AssemblyName>LauncherIcarus</AssemblyName>
+    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
+    <ApplicationVersion>1.0.0.0</ApplicationVersion>
+    <FileAlignment>512</FileAlignment>
+    <RootNamespace>LauncherIcarus</RootNamespace>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Newtonsoft.Json">
+      <HintPath>lib\Newtonsoft.Json.dll</HintPath>
+    </Reference>
+    <Reference Include="PresentationCore" />
+    <Reference Include="PresentationFramework" />
+    <Reference Include="System" />
+    <Reference Include="System.IO.Compression" />
+    <Reference Include="System.IO.Compression.FileSystem" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Xaml" />
+    <Reference Include="WindowsBase" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="App.cs" />
+    <Compile Include="Properties\Resources.cs" />
+    <Compile Include="Properties\Settings.cs" />
+    <Compile Include="ResponseModel\ResponseLauncherVersion.cs" />
+    <Compile Include="ResponseModel\ResponseListLauncherFiles.cs" />
+    <Compile Include="ResponseModel\Files.cs" />
+    <Compile Include="ResponseModel\ResponseLogin.cs" />
+    <Compile Include="ResponseModel\Accountinfos.cs" />
+    <Compile Include="Model\AccountModel.cs" />
+    <Compile Include="Model\MainViewModel.cs" />
+    <Compile Include="Model\ViewModelBase.cs" />
+    <Compile Include="Daemon\Crc32.cs" />
+    <Compile Include="Daemon\EncryptionHelper.cs" />
+    <Compile Include="Daemon\EnvironmentHelper.cs" />
+    <Compile Include="Daemon\FileConfig.cs" />
+    <Compile Include="Daemon\Logger.cs" />
+    <Compile Include="Daemon\SelectAllFocusBehavior.cs" />
+    <Compile Include="Daemon\Configuration.cs" />
+    <Compile Include="Daemon\HTTP\HTTPREQ.cs" />
+    <Compile Include="MainWindow.xaml.cs">
+      <DependentUpon>mainwindow.xaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <Resource Include="data\img\acessar.png" />
+    <Resource Include="data\img\acessar_hover.png" />
+    <Resource Include="data\img\atualizando.png" />
+    <Resource Include="data\img\back_img.png" />
+    <Resource Include="data\img\close.png" />
+    <Resource Include="data\img\close_hover.png" />
+    <Resource Include="data\img\icon3.png" />
+    <Resource Include="data\img\icon4.ico" />
+    <Resource Include="data\img\iniciar.png" />
+    <Resource Include="data\img\iniciar_bw.png" />
+    <Resource Include="data\img\iniciar_hover.png" />
+    <Resource Include="data\img\input.png" />
+    <Resource Include="data\img\minimizer.png" />
+    <Resource Include="data\img\minimizer_hover.png" />
+    <Resource Include="data\img\update_bar.png" />
+    <Resource Include="data\img\verificando.png" />
+    <Resource Include="data\img\verificar.png" />
+    <Resource Include="data\img\verificar_hover.png" />
+    <Resource Include="icon4.ico" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Properties\Resources.resx" />
+  </ItemGroup>
+  <ItemGroup>
+    <Page Include="mainwindow.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project>

BIN
LauncherIcarus/LauncherIcarus.pdb


+ 26 - 0
LauncherIcarus/LauncherIcarus.sln

@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LauncherIcarus", "LauncherIcarus.csproj", "{1C762126-981C-4830-A940-E1C6A0E00BCE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LauncherUpdater", "..\LauncherUpdater\LauncherUpdater.csproj", "{3626DC35-20ED-476A-B9A3-047B88C5FCB9}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{1C762126-981C-4830-A940-E1C6A0E00BCE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1C762126-981C-4830-A940-E1C6A0E00BCE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1C762126-981C-4830-A940-E1C6A0E00BCE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1C762126-981C-4830-A940-E1C6A0E00BCE}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3626DC35-20ED-476A-B9A3-047B88C5FCB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3626DC35-20ED-476A-B9A3-047B88C5FCB9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3626DC35-20ED-476A-B9A3-047B88C5FCB9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3626DC35-20ED-476A-B9A3-047B88C5FCB9}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

+ 513 - 0
LauncherIcarus/MainWindow.xaml.cs

@@ -0,0 +1,513 @@
+using LauncherIcarus.Daemon;
+using LauncherIcarus.Daemon.HTTP;
+using LauncherIcarus.Model;
+using LauncherIcarus.ResponseModel;
+using Newtonsoft.Json;
+using System;
+using System.Diagnostics;
+using System.IO;
+using System.IO.Compression;
+using System.Net;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Input;
+
+namespace LauncherIcarus
+{
+    public partial class MainWindow : Window
+    {
+        private readonly HTTPREQ httpRequest;
+        private readonly MainViewModel mainViewModel;
+        private readonly FileConfig fileConfig;
+        private DirectoryInfo lDir;
+
+        public MainWindow()
+        {
+            this.httpRequest = new HTTPREQ();
+            this.mainViewModel = new MainViewModel();
+            this.fileConfig = new FileConfig();
+            this.InitializeComponent();
+            this.Initialize();
+        }
+
+        private void Initialize()
+        {
+            try
+            {
+                this.lblTotalQtd.Content = (object) "0.0MB";
+                this.lblTotalAtualizadoQtd.Content = (object) "0.0MB";
+                this.lblAtualQtd.Content = (object) "0.0MB";
+                this.lblDownloadSpeed.Visibility = Visibility.Hidden;
+                this.lblDownloadSpeedQtd.Visibility = Visibility.Hidden;
+                this.lblWellcome.Visibility = Visibility.Hidden;
+                this.lblFileDownloading.Visibility = Visibility.Hidden;
+                this.lblFileDownloadingName.Visibility = Visibility.Hidden;
+                this.wbSlide.Visibility = Visibility.Hidden;
+                this.mainViewModel.IsChecking = false;
+                this.mainViewModel.IsUpdating = false;
+                this.mainViewModel.IsLogged = false;
+                this.mainViewModel.Lang = this.fileConfig.GetLanguage();
+                this.DataContext = (object) this.mainViewModel;
+                this.wbSlide.Navigate(Configuration.Default.ServerIP + Configuration.Default.LauncherNewsUrl);
+                AccountModel.Username = this.fileConfig.GetUsername();
+                this.lDir = new DirectoryInfo(Environment.CurrentDirectory);
+                this.InstallRedist();
+                if (AccountModel.Username.ToString() != "")
+                    this.textUsername.Text = AccountModel.Username.ToString();
+                if (!System.IO.File.Exists("LauncherVersionSetting"))
+                    this.fileConfig.SetLauncherIsChecked(EncryptionHelper.Encrypt("FALSE"));
+                if (!(EncryptionHelper.Decrypt(this.fileConfig.GetLauncherIsChecked()) == "FALSE"))
+                    return;
+                Process.Start(new ProcessStartInfo()
+                {
+                    WorkingDirectory = this.lDir.Parent.FullName,
+                    FileName = "LauncherUpdater.exe",
+                    CreateNoWindow = false
+                });
+            }
+            catch (Exception ex)
+            {
+                Logger.WriteLog(ex.Message);
+            }
+        }
+
+        private void InstallRedist()
+        {
+            if (System.IO.File.Exists("RedistInstall"))
+                return;
+            try
+            {
+                string str = string.Format(this.lDir.Parent.FullName + "\\Tools\\Redist");
+                Process process = new Process();
+                process.StartInfo.WorkingDirectory = str;
+                process.StartInfo.FileName = "Installer.cmd";
+                process.StartInfo.Arguments = string.Format("10");
+                process.StartInfo.CreateNoWindow = false;
+                process.Start();
+                process.WaitForExit();
+                this.fileConfig.SetRedistIsInstaled();
+            }
+            catch (Exception ex)
+            {
+                Logger.WriteLog(ex.Message);
+            }
+        }
+
+        private void buttonMinimizer_Click(object sender, RoutedEventArgs e) =>
+            this.WindowState = WindowState.Minimized;
+
+        private void buttonClose_Click(object sender, RoutedEventArgs e) => this.Close();
+
+        private async void buttonAccess_Click(object sender, RoutedEventArgs e)
+        {
+            try
+            {
+                this.lblWellcome.Visibility = Visibility.Hidden;
+                ResponseLogin responseLogin = JsonConvert.DeserializeObject<ResponseLogin>(
+                    await this.httpRequest.LoginAsync(this.textUsername.Text, this.textPassword.Password.ToString()));
+                if (responseLogin.Code == 0)
+                {
+                    this.fileConfig.SetUsername(responseLogin.Accountinfo.Username);
+                    AccountModel.Token = responseLogin.Token;
+                    AccountModel.Username = responseLogin.Accountinfo.Username;
+                    AccountModel.Version = responseLogin.Accountinfo.Version;
+                    this.fileConfig.SetLauncherIsChecked(EncryptionHelper.Encrypt("FALSE"));
+                    this.lblWellcome.Visibility = Visibility.Visible;
+                    this.lblWellcome.Content = (object) ("Seja bem vindo " + AccountModel.Username);
+                    this.lblMsgStatus.Visibility = Visibility.Hidden;
+                    this.inputUsername.Visibility = Visibility.Hidden;
+                    this.inputPassword.Visibility = Visibility.Hidden;
+                    this.textUsername.Visibility = Visibility.Hidden;
+                    this.textPassword.Visibility = Visibility.Hidden;
+                    this.buttonAccess.Visibility = Visibility.Hidden;
+                    this.wbSlide.Visibility = Visibility.Visible;
+                    this.mainViewModel.IsLogged = true;
+                    this.GetUpdate();
+                }
+
+                this.lblMsgStatus.Content = (object) responseLogin.message;
+            }
+            catch (Exception ex)
+            {
+                this.lblMsgStatus.Content = (object) ex.Message;
+                Logger.WriteLog(ex.Message);
+            }
+        }
+
+        private void buttonVerify_Click(object sender, RoutedEventArgs e)
+        {
+            if (!this.mainViewModel.IsLogged)
+            {
+                this.lblMsgStatus.Content = (object) "Antes de verificar os arquivos faça login!";
+            }
+            else
+            {
+                if (this.mainViewModel.IsUpdating || this.mainViewModel.IsChecking)
+                    return;
+                this.CheckClientFiles();
+            }
+        }
+
+        private async Task GetUpdate()
+        {
+            MainWindow mainWindow = this;
+            try
+            {
+                HTTPREQ httpRequest = new HTTPREQ();
+                if (!Directory.Exists(Configuration.Default.DownloadDir))
+                    Directory.CreateDirectory(Configuration.Default.DownloadDir);
+                ResponseLauncherVersion getVersionResponse =
+                    JsonConvert.DeserializeObject<ResponseLauncherVersion>(
+                        await httpRequest.GetLauncherVersionAsync(AccountModel.Token, AccountModel.Username));
+                ResponseListLauncherFiles getLauncherListResponse =
+                    JsonConvert.DeserializeObject<ResponseListLauncherFiles>(
+                        await httpRequest.GetLauncherListFilesAsync(AccountModel.Token,
+                            getVersionResponse.UpdaterVersion.ToString()));
+                if (getLauncherListResponse.TotalBytes > 0.0)
+                {
+                    double totalDownloaded = 0.0;
+                    mainWindow.progressBar.Width = 0.0;
+                    mainWindow.mainViewModel.IsUpdating = true;
+                    mainWindow.lblDownloadSpeed.Visibility = Visibility.Visible;
+                    mainWindow.lblDownloadSpeedQtd.Visibility = Visibility.Visible;
+                    mainWindow.lblFileDownloading.Visibility = Visibility.Visible;
+                    mainWindow.lblFileDownloadingName.Visibility = Visibility.Visible;
+                    int LastVersion = 0;
+                    int ClientVersion = getVersionResponse.UpdaterVersion;
+                    mainWindow.lblTotalQtd.Content =
+                        (object) (Math.Round(getLauncherListResponse.TotalBytes / 1024.0, 2).ToString() + "MB");
+                    foreach (Files file in getLauncherListResponse.File)
+                    {
+                        LastVersion = (int) file.version;
+                        double num1;
+                        if (LastVersion > ClientVersion)
+                        {
+                            Label lblAtualQtd = mainWindow.lblAtualQtd;
+                            num1 = Math.Round(file.size / 1024.0, 2);
+                            string str = num1.ToString() + "MB";
+                            lblAtualQtd.Content = (object) str;
+                            int num2 = await mainWindow.DownloadArchiveAsync(file.filename,
+                                Configuration.Default.DownloadDir, file.url)
+                                ? 1
+                                : 0;
+                        }
+
+                        double num3 = file.size / getLauncherListResponse.TotalBytes * 656.0;
+                        totalDownloaded += file.size;
+                        mainWindow.progressBar.Width += (double) (int) num3;
+                        mainWindow.ExtractFiles();
+                        Label totalAtualizadoQtd = mainWindow.lblTotalAtualizadoQtd;
+                        num1 = Math.Round(totalDownloaded / 1024.0, 2);
+                        string str1 = num1.ToString() + "MB";
+                        totalAtualizadoQtd.Content = (object) str1;
+                    }
+
+                    JsonConvert.DeserializeObject<ResponseLauncherVersion>(
+                        await httpRequest.UpdateLauncherVersionAsync(AccountModel.Token, LastVersion.ToString(),
+                            AccountModel.Username));
+                }
+
+                mainWindow.mainViewModel.IsUpdating = false;
+                mainWindow.DataContext = (object) mainWindow.mainViewModel;
+                mainWindow.lblTotalQtd.Content = (object) "0.0MB";
+                mainWindow.lblTotalAtualizadoQtd.Content = (object) "0.0MB";
+                mainWindow.lblAtualQtd.Content = (object) "0.0MB";
+                mainWindow.lblDownloadSpeed.Visibility = Visibility.Hidden;
+                mainWindow.lblDownloadSpeedQtd.Visibility = Visibility.Hidden;
+                mainWindow.lblFileDownloading.Visibility = Visibility.Hidden;
+                mainWindow.lblFileDownloadingName.Visibility = Visibility.Hidden;
+                httpRequest = (HTTPREQ) null;
+                getVersionResponse = (ResponseLauncherVersion) null;
+                getLauncherListResponse = (ResponseListLauncherFiles) null;
+            }
+            catch (Exception ex)
+            {
+                Logger.WriteLog(ex.Message);
+            }
+        }
+
+        public async Task CheckClientFiles()
+        {
+            MainWindow mainWindow = this;
+            try
+            {
+                mainWindow.progressBar.Width = 0.0;
+                mainWindow.mainViewModel.IsChecking = true;
+                double totalDownloaded = 0.0;
+                Crc32 c = new Crc32();
+                ResponseListLauncherFiles get =
+                    JsonConvert.DeserializeObject<ResponseListLauncherFiles>(
+                        await mainWindow.httpRequest.GetClientFilesCheckListAsync(AccountModel.Token));
+                if (get.TotalBytes > 0.0)
+                {
+                    Label lblTotalQtd = mainWindow.lblTotalQtd;
+                    double num1 = Math.Round(get.TotalBytes / 1024.0, 2);
+                    string str1 = num1.ToString() + "MB";
+                    lblTotalQtd.Content = (object) str1;
+                    mainWindow.lblDownloadSpeed.Visibility = Visibility.Visible;
+                    mainWindow.lblDownloadSpeedQtd.Visibility = Visibility.Visible;
+                    mainWindow.lblFileDownloading.Visibility = Visibility.Visible;
+                    mainWindow.lblFileDownloadingName.Visibility = Visibility.Visible;
+                    foreach (Files k in get.File)
+                    {
+                        string filename = k.filename;
+                        string empty = string.Empty;
+                        string path = mainWindow.lDir.Parent.FullName + "\\" + k.filename.Replace("/", "\\");
+                        Label lblAtualQtd = mainWindow.lblAtualQtd;
+                        num1 = Math.Round(k.size / 1024.0, 2);
+                        string str2 = num1.ToString() + "MB";
+                        lblAtualQtd.Content = (object) str2;
+                        if (System.IO.File.Exists(path))
+                        {
+                            using (FileStream inputStream = System.IO.File.Open(path, FileMode.Open))
+                            {
+                                foreach (byte num2 in c.ComputeHash((Stream) inputStream))
+                                    empty += num2.ToString("x2").ToLower();
+                            }
+
+                            if (k.crc32 != empty)
+                            {
+                                int num3 = await mainWindow.DownloadArchiveAsync(filename,
+                                    mainWindow.lDir.Parent.FullName, k.url)
+                                    ? 1
+                                    : 0;
+                            }
+                        }
+                        else
+                        {
+                            int num4 = await mainWindow.DownloadArchiveAsync(filename, mainWindow.lDir.Parent.FullName,
+                                k.url)
+                                ? 1
+                                : 0;
+                        }
+
+                        totalDownloaded += k.size;
+                        double num5 = k.size / get.TotalBytes * 656.0;
+                        Label totalAtualizadoQtd = mainWindow.lblTotalAtualizadoQtd;
+                        num1 = Math.Round(totalDownloaded / 1024.0, 2);
+                        string str3 = num1.ToString() + "MB";
+                        totalAtualizadoQtd.Content = (object) str3;
+                        mainWindow.progressBar.Width += Math.Round(num5, 0);
+                    }
+                }
+
+                mainWindow.mainViewModel.IsChecking = false;
+                mainWindow.DataContext = (object) mainWindow.mainViewModel;
+                mainWindow.lblTotalQtd.Content = (object) "0.0MB";
+                mainWindow.lblTotalAtualizadoQtd.Content = (object) "0.0MB";
+                mainWindow.lblAtualQtd.Content = (object) "0.0MB";
+                mainWindow.lblDownloadSpeed.Visibility = Visibility.Hidden;
+                mainWindow.lblDownloadSpeedQtd.Visibility = Visibility.Hidden;
+                mainWindow.lblFileDownloading.Visibility = Visibility.Hidden;
+                mainWindow.lblFileDownloadingName.Visibility = Visibility.Hidden;
+                c = (Crc32) null;
+                get = (ResponseListLauncherFiles) null;
+            }
+            catch (Exception ex)
+            {
+                Logger.WriteLog(ex.Message);
+            }
+        }
+
+        private async Task<bool> DownloadArchiveAsync(
+            string filename,
+            string downloadPath,
+            string url)
+        {
+            DateTime _startedAt = DateTime.Now;
+            DownloadProgressChangedEventHandler changedEventHandler = (DownloadProgressChangedEventHandler) ((s, e) =>
+            {
+                if (_startedAt == new DateTime())
+                {
+                    _startedAt = DateTime.Now;
+                }
+                else
+                {
+                    TimeSpan timeSpan = DateTime.Now - _startedAt;
+                    if (timeSpan.TotalSeconds <= 0.0)
+                        return;
+                    this.lblDownloadSpeedQtd.Content = (object) string.Format("{0} MB/s",
+                        (object) Math.Round((double) e.BytesReceived / (timeSpan.TotalSeconds * 1000000.0), 2));
+                    this.lblFileDownloadingName.Content = (object) filename;
+                }
+            });
+            DownloadDataCompletedEventHandler completedEventHandler =
+                (DownloadDataCompletedEventHandler) ((s, e) => { });
+            int num1 = filename.IndexOf("/");
+            string str = filename;
+            string fileName;
+            if (num1 > 0)
+            {
+                int num2 = 0;
+                string[] strArray = filename.Split(new string[1]
+                {
+                    "/"
+                }, StringSplitOptions.None);
+                downloadPath += "\\";
+                for (int index = 0; index < strArray.Length - 1; ++index)
+                {
+                    downloadPath = downloadPath + strArray[index] + "\\";
+                    num2 = index;
+                }
+
+                if (!Directory.Exists(downloadPath))
+                    Directory.CreateDirectory(downloadPath);
+                fileName = downloadPath + strArray[num2 + 1].Replace("/", "\\");
+                Logger.WriteLog(filename);
+            }
+            else
+                fileName = downloadPath + filename;
+
+            using (WebClient webClient = new WebClient())
+            {
+                webClient.DownloadProgressChanged += changedEventHandler;
+                webClient.DownloadDataCompleted += completedEventHandler;
+                await webClient.DownloadFileTaskAsync(new Uri(Configuration.Default.ServerIP + url), fileName);
+            }
+
+            return true;
+        }
+
+        private void ExtractFiles()
+        {
+            try
+            {
+                foreach (string file in Directory.GetFiles(Configuration.Default.DownloadDir, "*.zip"))
+                {
+                    using (ZipArchive zipArchive = ZipFile.Open(file, ZipArchiveMode.Read))
+                    {
+                        foreach (ZipArchiveEntry entry in zipArchive.Entries)
+                        {
+                            if (entry.Length > 0L || entry.Name != "")
+                            {
+                                entry.ExtractToFile(Path.Combine(this.lDir.Parent.FullName, entry.FullName), true);
+                            }
+                            else
+                            {
+                                string[] strArray = entry.FullName.Split(new string[1]
+                                {
+                                    "/"
+                                }, StringSplitOptions.None);
+                                string path2 = "";
+                                for (int index = 0; index < strArray.Length; ++index)
+                                    path2 = path2 + strArray[index] + "/";
+                                if (!Directory.Exists(Path.Combine(this.lDir.Parent.FullName, path2)))
+                                    Directory.CreateDirectory(Path.Combine(this.lDir.Parent.FullName, path2));
+                            }
+                        }
+                    }
+
+                    System.IO.File.Delete(file);
+                }
+            }
+            catch (Exception ex)
+            {
+                Logger.WriteLog(ex.Message);
+            }
+        }
+
+        private void buttonStart_Click(object sender, RoutedEventArgs e)
+        {
+            if (!mainViewModel.IsLogged || mainViewModel.IsUpdating || mainViewModel.IsChecking)
+            {
+                return;
+            }
+
+            try
+            {
+                var folder = lDir.Parent?.FullName.Replace("Launcher", "");
+                var sw = new StreamWriter(folder + @"\start.bat");
+                sw.WriteLine(
+                    $"cd {folder} && start Bin64/Launcher.exe /i:{AccountModel.Token} /r:123456 /O /u:3913056 /m:P");
+                sw.Close();
+                var param = folder + @"\start.bat";
+                Process.Start(param);
+
+                Environment.Exit(0);
+            }
+            catch (Exception ex)
+            {
+                Logger.WriteLog(ex.Message);
+            }
+        }
+
+        private void Window_MouseMove(object sender, MouseEventArgs e)
+        {
+            if (e.LeftButton != MouseButtonState.Pressed)
+                return;
+            this.DragMove();
+        }
+
+        private async void cmbLanguage_DropDownClosed(object sender, EventArgs e)
+        {
+            MainWindow mainWindow = this;
+            try
+            {
+                if (mainWindow.fileConfig.GetLanguage() != mainWindow.mainViewModel.Lang &&
+                    mainWindow.mainViewModel.Lang != string.Empty)
+                {
+                    mainWindow.fileConfig.SetLanguage(mainWindow.mainViewModel.Lang);
+                    HTTPREQ httpreq = new HTTPREQ();
+                    if (!Directory.Exists(Configuration.Default.DownloadDir))
+                        Directory.CreateDirectory(Configuration.Default.DownloadDir);
+                    ResponseListLauncherFiles listLauncherFiles =
+                        JsonConvert.DeserializeObject<ResponseListLauncherFiles>(
+                            await httpreq.GetLauncherTranslateAsync());
+                    if (listLauncherFiles.TotalBytes > 0.0)
+                    {
+                        double totalDownloaded = 0.0;
+                        mainWindow.progressBar.Width = 0.0;
+                        mainWindow.mainViewModel.IsUpdating = true;
+                        mainWindow.lblDownloadSpeed.Visibility = Visibility.Visible;
+                        mainWindow.lblDownloadSpeedQtd.Visibility = Visibility.Visible;
+                        mainWindow.lblFileDownloading.Visibility = Visibility.Visible;
+                        mainWindow.lblFileDownloadingName.Visibility = Visibility.Visible;
+                        foreach (Files file in listLauncherFiles.File)
+                        {
+                            if (file.filename == mainWindow.mainViewModel.Lang.ToLower() + ".zip")
+                            {
+                                Label lblTotalQtd = mainWindow.lblTotalQtd;
+                                double num1 = Math.Round(file.size / 1024.0, 2);
+                                string str1 = num1.ToString() + "MB";
+                                lblTotalQtd.Content = (object) str1;
+                                Label lblAtualQtd = mainWindow.lblAtualQtd;
+                                num1 = Math.Round(file.size / 1024.0, 2);
+                                string str2 = num1.ToString() + "MB";
+                                lblAtualQtd.Content = (object) str2;
+                                int num2 = await mainWindow.DownloadArchiveAsync(file.filename,
+                                    Configuration.Default.DownloadDir, file.url)
+                                    ? 1
+                                    : 0;
+                                double num3 = file.size / file.size * 656.0;
+                                totalDownloaded += file.size;
+                                mainWindow.progressBar.Width += (double) (int) num3;
+                                mainWindow.ExtractFiles();
+                                Label totalAtualizadoQtd = mainWindow.lblTotalAtualizadoQtd;
+                                num1 = Math.Round(totalDownloaded / 1024.0, 2);
+                                string str3 = num1.ToString() + "MB";
+                                totalAtualizadoQtd.Content = (object) str3;
+                            }
+                        }
+                    }
+
+                    mainWindow.mainViewModel.IsUpdating = false;
+                    mainWindow.DataContext = (object) mainWindow.mainViewModel;
+                    mainWindow.lblTotalQtd.Content = (object) "0.0MB";
+                    mainWindow.lblTotalAtualizadoQtd.Content = (object) "0.0MB";
+                    mainWindow.lblAtualQtd.Content = (object) "0.0MB";
+                    mainWindow.lblDownloadSpeed.Visibility = Visibility.Hidden;
+                    mainWindow.lblDownloadSpeedQtd.Visibility = Visibility.Hidden;
+                    mainWindow.lblFileDownloading.Visibility = Visibility.Hidden;
+                    mainWindow.lblFileDownloadingName.Visibility = Visibility.Hidden;
+                }
+                else
+                    mainWindow.lblMsgStatus.Content = (object) "Escolha um idioma para continuar!";
+            }
+            catch (Exception ex)
+            {
+                Logger.WriteLog(ex.Message);
+            }
+        }
+    }
+}

+ 13 - 0
LauncherIcarus/Model/AccountModel.cs

@@ -0,0 +1,13 @@
+namespace LauncherIcarus.Model
+{
+    public static class AccountModel
+    {
+        public static string Username { get; set; }
+
+        public static string Token { get; set; }
+
+        public static string Version { get; set; }
+
+        public static string Lang { get; set; }
+    }
+}

+ 41 - 0
LauncherIcarus/Model/MainViewModel.cs

@@ -0,0 +1,41 @@
+namespace LauncherIcarus.Model
+{
+    public class MainViewModel : ViewModelBase
+    {
+        private bool _isUpdating;
+        private bool _isChecking;
+        private bool _isLogged;
+        private int _Version;
+        private string _Lang;
+
+        public bool IsUpdating
+        {
+            get => this._isUpdating;
+            set => this.SetProperty<bool>(ref this._isUpdating, value, nameof(IsUpdating));
+        }
+
+        public bool IsChecking
+        {
+            get => this._isChecking;
+            set => this.SetProperty<bool>(ref this._isChecking, value, nameof(IsChecking));
+        }
+
+        public bool IsLogged
+        {
+            get => this._isLogged;
+            set => this.SetProperty<bool>(ref this._isLogged, value, nameof(IsLogged));
+        }
+
+        public int Version
+        {
+            get => this._Version;
+            set => this.SetProperty<int>(ref this._Version, value, nameof(Version));
+        }
+
+        public string Lang
+        {
+            get => this._Lang;
+            set => this.SetProperty<string>(ref this._Lang, value, nameof(Lang));
+        }
+    }
+}

+ 22 - 0
LauncherIcarus/Model/ViewModelBase.cs

@@ -0,0 +1,22 @@
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Runtime.CompilerServices;
+
+namespace LauncherIcarus.Model
+{
+    public abstract class ViewModelBase : INotifyPropertyChanged
+    {
+        public event PropertyChangedEventHandler PropertyChanged;
+
+        protected bool SetProperty<T>(ref T field, T newValue, [CallerMemberName] string propertyName = null)
+        {
+            if (EqualityComparer<T>.Default.Equals(field, newValue))
+                return false;
+            field = newValue;
+            PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if (propertyChanged != null)
+                propertyChanged((object) this, new PropertyChangedEventArgs(propertyName));
+            return true;
+        }
+    }
+}

+ 41 - 0
LauncherIcarus/Properties/Resources.cs

@@ -0,0 +1,41 @@
+using System.CodeDom.Compiler;
+using System.ComponentModel;
+using System.Diagnostics;
+using System.Globalization;
+using System.Resources;
+using System.Runtime.CompilerServices;
+
+namespace LauncherIcarus.Properties
+{
+    [GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [DebuggerNonUserCode]
+    [CompilerGenerated]
+    internal class Resources
+    {
+        private static ResourceManager resourceMan;
+        private static CultureInfo resourceCulture;
+
+        internal Resources()
+        {
+        }
+
+        [EditorBrowsable(EditorBrowsableState.Advanced)]
+        internal static ResourceManager ResourceManager
+        {
+            get
+            {
+                if (LauncherIcarus.Properties.Resources.resourceMan == null)
+                    LauncherIcarus.Properties.Resources.resourceMan = new ResourceManager(
+                        "LauncherIcarus.Properties.Resources", typeof(LauncherIcarus.Properties.Resources).Assembly);
+                return LauncherIcarus.Properties.Resources.resourceMan;
+            }
+        }
+
+        [EditorBrowsable(EditorBrowsableState.Advanced)]
+        internal static CultureInfo Culture
+        {
+            get => LauncherIcarus.Properties.Resources.resourceCulture;
+            set => LauncherIcarus.Properties.Resources.resourceCulture = value;
+        }
+    }
+}

+ 120 - 0
LauncherIcarus/Properties/Resources.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 15 - 0
LauncherIcarus/Properties/Settings.cs

@@ -0,0 +1,15 @@
+using System.CodeDom.Compiler;
+using System.Configuration;
+using System.Runtime.CompilerServices;
+
+namespace LauncherIcarus.Properties
+{
+    [CompilerGenerated]
+    [GeneratedCode("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+    internal sealed class Settings : ApplicationSettingsBase
+    {
+        private static Settings defaultInstance = (Settings) SettingsBase.Synchronized((SettingsBase) new Settings());
+
+        public static Settings Default => Settings.defaultInstance;
+    }
+}

+ 31 - 0
LauncherIcarus/ResponseModel/Accountinfos.cs

@@ -0,0 +1,31 @@
+using Newtonsoft.Json;
+
+namespace LauncherIcarus.ResponseModel
+{
+    public class Accountinfos
+    {
+        [JsonProperty("AccountDBID")] public int AccountDBID { get; set; }
+
+        [JsonProperty("Username")] public string Username { get; set; }
+
+        [JsonProperty("RegisterTime")] public string RegisterTime { get; set; }
+
+        [JsonProperty("RegisterIP")] public string RegisterIP { get; set; }
+
+        [JsonProperty("LastLoginTime")] public string LastLoginTime { get; set; }
+
+        [JsonProperty("LastLoginIP")] public string LastLoginIP { get; set; }
+
+        [JsonProperty("IsBlocked")] public int IsBlocked { get; set; }
+
+        [JsonProperty("Real_Balance")] public double Real_Balance { get; set; }
+
+        [JsonProperty("Bonus_Balance")] public double Bonus_Balance { get; set; }
+
+        [JsonProperty("BirthDate")] public string BirthDate { get; set; }
+
+        [JsonProperty("Email")] public string Email { get; set; }
+
+        [JsonProperty("Version")] public string Version { get; set; }
+    }
+}

+ 17 - 0
LauncherIcarus/ResponseModel/Files.cs

@@ -0,0 +1,17 @@
+using Newtonsoft.Json;
+
+namespace LauncherIcarus.ResponseModel
+{
+    public class Files
+    {
+        [JsonProperty("filename")] public string filename { get; set; }
+
+        [JsonProperty("url")] public string url { get; set; }
+
+        [JsonProperty("version")] public long version { get; set; }
+
+        [JsonProperty("size")] public double size { get; set; }
+
+        [JsonProperty("crc32")] public string crc32 { get; set; }
+    }
+}

+ 17 - 0
LauncherIcarus/ResponseModel/ResponseLauncherVersion.cs

@@ -0,0 +1,17 @@
+using Newtonsoft.Json;
+
+namespace LauncherIcarus.ResponseModel
+{
+    internal class ResponseLauncherVersion
+    {
+        [JsonProperty("id")] public int? id { get; set; }
+
+        [JsonProperty("User_ID")] public string User_ID { get; set; }
+
+        [JsonProperty("UpdaterVersion")] public int UpdaterVersion { get; set; }
+
+        [JsonProperty("UpdatedDate")] public string UpdatedDate { get; set; }
+
+        [JsonProperty("IP")] public string IP { get; set; }
+    }
+}

+ 12 - 0
LauncherIcarus/ResponseModel/ResponseListLauncherFiles.cs

@@ -0,0 +1,12 @@
+using Newtonsoft.Json;
+using System.Collections.Generic;
+
+namespace LauncherIcarus.ResponseModel
+{
+    internal class ResponseListLauncherFiles
+    {
+        [JsonProperty("totalBytes")] public double TotalBytes { get; set; }
+
+        [JsonProperty("files")] public List<Files> File { get; set; }
+    }
+}

+ 15 - 0
LauncherIcarus/ResponseModel/ResponseLogin.cs

@@ -0,0 +1,15 @@
+using Newtonsoft.Json;
+
+namespace LauncherIcarus.ResponseModel
+{
+    internal class ResponseLogin
+    {
+        [JsonProperty("code")] public int Code { get; set; }
+
+        [JsonProperty("msg")] public string message { get; set; }
+
+        [JsonProperty("token")] public string Token { get; set; }
+
+        [JsonProperty("accountinfo")] public Accountinfos Accountinfo { get; set; }
+    }
+}

BIN
LauncherIcarus/data/img/acessar.png


BIN
LauncherIcarus/data/img/acessar_hover.png


BIN
LauncherIcarus/data/img/atualizando.png


BIN
LauncherIcarus/data/img/back_img.png


BIN
LauncherIcarus/data/img/close.png


BIN
LauncherIcarus/data/img/close_hover.png


BIN
LauncherIcarus/data/img/icon3.png


BIN
LauncherIcarus/data/img/icon4.ico


BIN
LauncherIcarus/data/img/iniciar.png


BIN
LauncherIcarus/data/img/iniciar_bw.png


BIN
LauncherIcarus/data/img/iniciar_hover.png


BIN
LauncherIcarus/data/img/input.png


BIN
LauncherIcarus/data/img/minimizer.png


BIN
LauncherIcarus/data/img/minimizer_hover.png


BIN
LauncherIcarus/data/img/update_bar.png


BIN
LauncherIcarus/data/img/verificando.png


BIN
LauncherIcarus/data/img/verificar.png


BIN
LauncherIcarus/data/img/verificar_hover.png


BIN
LauncherIcarus/icon4.ico


BIN
LauncherIcarus/lib/Newtonsoft.Json.dll


+ 447 - 0
LauncherIcarus/mainwindow.xaml

@@ -0,0 +1,447 @@
+<Window x:Class="LauncherIcarus.MainWindow"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:LauncherIcarus"
+        xmlns:local1="clr-namespace:LauncherIcarus.Daemon"
+        xmlns:model="clr-namespace:LauncherIcarus.Model"
+        MouseMove="Window_MouseMove" WindowStyle="None" ResizeMode="NoResize" ShowInTaskbar="true"
+        WindowStartupLocation="CenterScreen" Title="MainWindow" Height="500" Width="900">
+  <FrameworkElement.Resources>
+    <ImageBrush x:Key="close_icon" ImageSource="Data/Img/close_hover.png" Stretch="Fill"/>
+    <ImageBrush x:Key="minimizer_icon" ImageSource="Data/Img/minimizer_hover.png" Stretch="Fill"/>
+    <ImageBrush x:Key="access_icon" ImageSource="Data/Img/acessar_hover.png" Stretch="Fill"/>
+    <ImageBrush x:Key="start_icon" ImageSource="Data/Img/iniciar_hover.png" Stretch="Fill"/>
+    <ImageBrush x:Key="start_icon_locked" ImageSource="Data/Img/iniciar_bw.png" Stretch="Fill"/>
+    <ImageBrush x:Key="start_icon_updating" ImageSource="Data/Img/atualizando.png" Stretch="Fill"/>
+    <ImageBrush x:Key="start_icon_verifing" ImageSource="Data/Img/verificando.png" Stretch="Fill"/>
+    <ImageBrush x:Key="verify_icon" ImageSource="Data/Img/verificar_hover.png" Stretch="Fill"/>
+    <Style x:Key="FocusVisual">
+      <Setter Property="Control.Template">
+        <Setter.Value>
+          <ControlTemplate>
+            <Rectangle Margin="2" SnapsToDevicePixels="true"
+                       Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1"
+                       StrokeDashArray="1 2"/>
+          </ControlTemplate>
+        </Setter.Value>
+      </Setter>
+    </Style>
+    <SolidColorBrush x:Key="Button.Static.Background" Color="#FFDDDDDD"/>
+    <SolidColorBrush x:Key="Button.Static.Border" Color="#FF707070"/>
+    <SolidColorBrush x:Key="Button.MouseOver.Background" Color="#FFBEE6FD"/>
+    <SolidColorBrush x:Key="Button.MouseOver.Border" Color="#FF3C7FB1"/>
+    <SolidColorBrush x:Key="Button.Pressed.Background" Color="#FFC4E5F6"/>
+    <SolidColorBrush x:Key="Button.Pressed.Border" Color="#FF2C628B"/>
+    <SolidColorBrush x:Key="Button.Disabled.Background" Color="#FFF4F4F4"/>
+    <SolidColorBrush x:Key="Button.Disabled.Border" Color="#FFADB2B5"/>
+    <SolidColorBrush x:Key="Button.Disabled.Foreground" Color="#FF838383"/>
+    <Style x:Key="closeButtonStyle" TargetType="{x:Type Button}">
+      <Setter Property="FrameworkElement.FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
+      <Setter Property="Control.Background" Value="{StaticResource Button.Static.Background}"/>
+      <Setter Property="Control.BorderBrush" Value="{StaticResource Button.Static.Border}"/>
+      <Setter Property="Control.Foreground"
+              Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
+      <Setter Property="Control.BorderThickness" Value="1"/>
+      <Setter Property="Control.HorizontalContentAlignment" Value="Center"/>
+      <Setter Property="Control.VerticalContentAlignment" Value="Center"/>
+      <Setter Property="Control.Padding" Value="1"/>
+      <Setter Property="Control.Template">
+        <Setter.Value>
+          <ControlTemplate TargetType="{x:Type Button}">
+            <Border x:Name="border" BorderBrush="{TemplateBinding Control.BorderBrush}"
+                    BorderThickness="{TemplateBinding Control.BorderThickness}"
+                    Background="{TemplateBinding Control.Background}" SnapsToDevicePixels="true">
+              <ContentPresenter x:Name="contentPresenter" Focusable="false"
+                                HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}"
+                                Margin="{TemplateBinding Control.Padding}" RecognizesAccessKey="true"
+                                SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}"
+                                VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}"/>
+            </Border>
+            <ControlTemplate.Triggers>
+              <Trigger Property="Button.IsDefaulted" Value="true">
+                <Setter TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"
+                        Property="Border.BorderBrush"/>
+              </Trigger>
+              <Trigger Property="UIElement.IsMouseOver" Value="true">
+                <Setter TargetName="border" Value="{StaticResource close_icon}" Property="Border.Background"/>
+                <Setter TargetName="border" Value="{StaticResource Button.MouseOver.Border}" Property="Border.BorderBrush"/>
+              </Trigger>
+              <Trigger Property="ButtonBase.IsPressed" Value="true">
+                <Setter TargetName="border" Value="{StaticResource close_icon}" Property="Border.Background"/>
+                <Setter TargetName="border" Value="{StaticResource Button.Pressed.Border}" Property="Border.BorderBrush"/>
+              </Trigger>
+              <Trigger Property="UIElement.IsEnabled" Value="false">
+                <Setter TargetName="border" Value="{StaticResource Button.Disabled.Background}"
+                        Property="Border.Background"/>
+                <Setter TargetName="border" Value="{StaticResource Button.Disabled.Border}" Property="Border.BorderBrush"/>
+                <Setter TargetName="contentPresenter" Value="{StaticResource Button.Disabled.Foreground}"
+                        Property="TextElement.Foreground"/>
+              </Trigger>
+            </ControlTemplate.Triggers>
+          </ControlTemplate>
+        </Setter.Value>
+      </Setter>
+    </Style>
+    <Style x:Key="minimizerButtonStyle" TargetType="{x:Type Button}">
+      <Setter Property="FrameworkElement.FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
+      <Setter Property="Control.Background" Value="{StaticResource Button.Static.Background}"/>
+      <Setter Property="Control.BorderBrush" Value="{StaticResource Button.Static.Border}"/>
+      <Setter Property="Control.Foreground"
+              Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
+      <Setter Property="Control.BorderThickness" Value="1"/>
+      <Setter Property="Control.HorizontalContentAlignment" Value="Center"/>
+      <Setter Property="Control.VerticalContentAlignment" Value="Center"/>
+      <Setter Property="Control.Padding" Value="1"/>
+      <Setter Property="Control.Template">
+        <Setter.Value>
+          <ControlTemplate TargetType="{x:Type Button}">
+            <Border x:Name="border" BorderBrush="{TemplateBinding Control.BorderBrush}"
+                    BorderThickness="{TemplateBinding Control.BorderThickness}"
+                    Background="{TemplateBinding Control.Background}" SnapsToDevicePixels="true">
+              <ContentPresenter x:Name="contentPresenter" Focusable="false"
+                                HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}"
+                                Margin="{TemplateBinding Control.Padding}" RecognizesAccessKey="true"
+                                SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}"
+                                VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}"/>
+            </Border>
+            <ControlTemplate.Triggers>
+              <Trigger Property="Button.IsDefaulted" Value="true">
+                <Setter TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"
+                        Property="Border.BorderBrush"/>
+              </Trigger>
+              <Trigger Property="UIElement.IsMouseOver" Value="true">
+                <Setter TargetName="border" Value="{StaticResource minimizer_icon}" Property="Border.Background"/>
+                <Setter TargetName="border" Value="{StaticResource Button.MouseOver.Border}" Property="Border.BorderBrush"/>
+              </Trigger>
+              <Trigger Property="ButtonBase.IsPressed" Value="true">
+                <Setter TargetName="border" Value="{StaticResource minimizer_icon}" Property="Border.Background"/>
+                <Setter TargetName="border" Value="{StaticResource Button.Pressed.Border}" Property="Border.BorderBrush"/>
+              </Trigger>
+              <Trigger Property="UIElement.IsEnabled" Value="false">
+                <Setter TargetName="border" Value="{StaticResource Button.Disabled.Background}"
+                        Property="Border.Background"/>
+                <Setter TargetName="border" Value="{StaticResource Button.Disabled.Border}" Property="Border.BorderBrush"/>
+                <Setter TargetName="contentPresenter" Value="{StaticResource Button.Disabled.Foreground}"
+                        Property="TextElement.Foreground"/>
+              </Trigger>
+            </ControlTemplate.Triggers>
+          </ControlTemplate>
+        </Setter.Value>
+      </Setter>
+    </Style>
+    <Style x:Key="accessButtonStyle" TargetType="{x:Type Button}">
+      <Setter Property="FrameworkElement.FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
+      <Setter Property="Control.Background" Value="{StaticResource Button.Static.Background}"/>
+      <Setter Property="Control.BorderBrush" Value="{StaticResource Button.Static.Border}"/>
+      <Setter Property="Control.Foreground"
+              Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
+      <Setter Property="Control.BorderThickness" Value="1"/>
+      <Setter Property="Control.HorizontalContentAlignment" Value="Center"/>
+      <Setter Property="Control.VerticalContentAlignment" Value="Center"/>
+      <Setter Property="Control.Padding" Value="1"/>
+      <Setter Property="Control.Template">
+        <Setter.Value>
+          <ControlTemplate TargetType="{x:Type Button}">
+            <Border x:Name="border" BorderBrush="{TemplateBinding Control.BorderBrush}"
+                    BorderThickness="{TemplateBinding Control.BorderThickness}"
+                    Background="{TemplateBinding Control.Background}" SnapsToDevicePixels="true">
+              <ContentPresenter x:Name="contentPresenter" Focusable="false"
+                                HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}"
+                                Margin="{TemplateBinding Control.Padding}" RecognizesAccessKey="true"
+                                SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}"
+                                VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}"/>
+            </Border>
+            <ControlTemplate.Triggers>
+              <Trigger Property="Button.IsDefaulted" Value="true">
+                <Setter TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"
+                        Property="Border.BorderBrush"/>
+              </Trigger>
+              <Trigger Property="UIElement.IsMouseOver" Value="true">
+                <Setter TargetName="border" Value="{StaticResource access_icon}" Property="Border.Background"/>
+                <Setter TargetName="border" Value="{StaticResource Button.MouseOver.Border}" Property="Border.BorderBrush"/>
+              </Trigger>
+              <Trigger Property="ButtonBase.IsPressed" Value="true">
+                <Setter TargetName="border" Value="{StaticResource access_icon}" Property="Border.Background"/>
+                <Setter TargetName="border" Value="{StaticResource Button.Pressed.Border}" Property="Border.BorderBrush"/>
+              </Trigger>
+              <Trigger Property="UIElement.IsEnabled" Value="false">
+                <Setter TargetName="border" Value="{StaticResource Button.Disabled.Background}"
+                        Property="Border.Background"/>
+                <Setter TargetName="border" Value="{StaticResource Button.Disabled.Border}" Property="Border.BorderBrush"/>
+                <Setter TargetName="contentPresenter" Value="{StaticResource Button.Disabled.Foreground}"
+                        Property="TextElement.Foreground"/>
+              </Trigger>
+            </ControlTemplate.Triggers>
+          </ControlTemplate>
+        </Setter.Value>
+      </Setter>
+    </Style>
+    <Style x:Key="startButtonStyle" TargetType="{x:Type Button}">
+      <Setter Property="FrameworkElement.FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
+      <Setter Property="Control.Background" Value="{StaticResource Button.Static.Background}"/>
+      <Setter Property="Control.BorderBrush" Value="{StaticResource Button.Static.Border}"/>
+      <Setter Property="Control.Foreground"
+              Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
+      <Setter Property="Control.BorderThickness" Value="1"/>
+      <Setter Property="Control.HorizontalContentAlignment" Value="Center"/>
+      <Setter Property="Control.VerticalContentAlignment" Value="Center"/>
+      <Setter Property="Control.Padding" Value="1"/>
+      <Setter Property="Control.Template">
+        <Setter.Value>
+          <ControlTemplate TargetType="{x:Type Button}">
+            <Border x:Name="border" BorderBrush="{TemplateBinding Control.BorderBrush}"
+                    BorderThickness="{TemplateBinding Control.BorderThickness}"
+                    Background="{TemplateBinding Control.Background}" SnapsToDevicePixels="true">
+              <ContentPresenter x:Name="contentPresenter" Focusable="false"
+                                HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}"
+                                Margin="{TemplateBinding Control.Padding}" RecognizesAccessKey="true"
+                                SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}"
+                                VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}"/>
+            </Border>
+            <ControlTemplate.Triggers>
+              <DataTrigger Value="False" Binding="{Binding Path=IsLogged}">
+                <Setter TargetName="border" Value="{StaticResource start_icon_locked}" Property="Border.Background"/>
+                <Setter TargetName="border" Value="{StaticResource Button.Disabled.Border}" Property="Border.BorderBrush"/>
+              </DataTrigger>
+              <MultiDataTrigger>
+                <MultiDataTrigger.Conditions>
+                  <Condition Binding="{Binding Path=IsLogged}" Value="true"/>
+                  <Condition Binding="{Binding Path=IsUpdating}" Value="true"/>
+                </MultiDataTrigger.Conditions>
+                <Setter TargetName="border" Value="{StaticResource start_icon_updating}" Property="Border.Background"/>
+              </MultiDataTrigger>
+              <MultiDataTrigger>
+                <MultiDataTrigger.Conditions>
+                  <Condition Binding="{Binding Path=IsLogged}" Value="true"/>
+                  <Condition Binding="{Binding Path=IsChecking}" Value="true"/>
+                </MultiDataTrigger.Conditions>
+                <Setter TargetName="border" Value="{StaticResource start_icon_verifing}" Property="Border.Background"/>
+              </MultiDataTrigger>
+              <MultiDataTrigger>
+                <MultiDataTrigger.Conditions>
+                  <Condition Binding="{Binding Path=IsLogged}" Value="true"/>
+                  <Condition Binding="{Binding Path=IsUpdating}" Value="false"/>
+                  <Condition Binding="{Binding Path=IsChecking}" Value="false"/>
+                  <Condition Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsMouseOver}" Value="True"/>
+                </MultiDataTrigger.Conditions>
+                <Setter TargetName="border" Value="{StaticResource start_icon}" Property="Border.Background"/>
+                <Setter TargetName="border" Value="{StaticResource Button.MouseOver.Border}" Property="Border.BorderBrush"/>
+              </MultiDataTrigger>
+              <MultiDataTrigger>
+                <MultiDataTrigger.Conditions>
+                  <Condition Binding="{Binding Path=IsLogged}" Value="true"/>
+                  <Condition Binding="{Binding Path=IsUpdating}" Value="false"/>
+                  <Condition Binding="{Binding Path=IsChecking}" Value="false"/>
+                  <Condition Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsPressed}" Value="True"/>
+                </MultiDataTrigger.Conditions>
+                <Setter TargetName="border" Value="{StaticResource start_icon}" Property="Border.Background"/>
+                <Setter TargetName="border" Value="{StaticResource Button.Pressed.Border}" Property="Border.BorderBrush"/>
+              </MultiDataTrigger>
+            </ControlTemplate.Triggers>
+          </ControlTemplate>
+        </Setter.Value>
+      </Setter>
+    </Style>
+    <Style x:Key="verifyButtonStyle" TargetType="{x:Type Button}">
+      <Setter Property="FrameworkElement.FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
+      <Setter Property="Control.Background" Value="{StaticResource Button.Static.Background}"/>
+      <Setter Property="Control.BorderBrush" Value="{StaticResource Button.Static.Border}"/>
+      <Setter Property="Control.Foreground"
+              Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
+      <Setter Property="Control.BorderThickness" Value="1"/>
+      <Setter Property="Control.HorizontalContentAlignment" Value="Center"/>
+      <Setter Property="Control.VerticalContentAlignment" Value="Center"/>
+      <Setter Property="Control.Padding" Value="1"/>
+      <Setter Property="Control.Template">
+        <Setter.Value>
+          <ControlTemplate TargetType="{x:Type Button}">
+            <Border x:Name="border" BorderBrush="{TemplateBinding Control.BorderBrush}"
+                    BorderThickness="{TemplateBinding Control.BorderThickness}"
+                    Background="{TemplateBinding Control.Background}" SnapsToDevicePixels="true">
+              <ContentPresenter x:Name="contentPresenter" Focusable="false"
+                                HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}"
+                                Margin="{TemplateBinding Control.Padding}" RecognizesAccessKey="true"
+                                SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}"
+                                VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}"/>
+            </Border>
+            <ControlTemplate.Triggers>
+              <Trigger Property="Button.IsDefaulted" Value="true">
+                <Setter TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"
+                        Property="Border.BorderBrush"/>
+              </Trigger>
+              <MultiDataTrigger>
+                <MultiDataTrigger.Conditions>
+                  <Condition Binding="{Binding Path=IsLogged}" Value="true"/>
+                  <Condition Binding="{Binding Path=IsUpdating}" Value="false"/>
+                  <Condition Binding="{Binding Path=IsChecking}" Value="false"/>
+                  <Condition Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsMouseOver}" Value="True"/>
+                </MultiDataTrigger.Conditions>
+                <Setter TargetName="border" Value="{StaticResource verify_icon}" Property="Border.Background"/>
+                <Setter TargetName="border" Value="{StaticResource Button.MouseOver.Border}" Property="Border.BorderBrush"/>
+              </MultiDataTrigger>
+              <Trigger Property="ButtonBase.IsPressed" Value="true">
+                <Setter TargetName="border" Value="{StaticResource verify_icon}" Property="Border.Background"/>
+                <Setter TargetName="border" Value="{StaticResource Button.Pressed.Border}" Property="Border.BorderBrush"/>
+              </Trigger>
+              <Trigger Property="UIElement.IsEnabled" Value="false">
+                <Setter TargetName="border" Value="{StaticResource Button.Disabled.Background}"
+                        Property="Border.Background"/>
+                <Setter TargetName="border" Value="{StaticResource Button.Disabled.Border}" Property="Border.BorderBrush"/>
+                <Setter TargetName="contentPresenter" Value="{StaticResource Button.Disabled.Foreground}"
+                        Property="TextElement.Foreground"/>
+              </Trigger>
+            </ControlTemplate.Triggers>
+          </ControlTemplate>
+        </Setter.Value>
+      </Setter>
+    </Style>
+    <Style TargetType="{x:Type TextBox}">
+      <Setter Property="Control.Padding" Value="5"/>
+      <Setter Property="FrameworkElement.Margin" Value="5"/>
+      <Setter Property="Control.FontSize" Value="15"/>
+      <Setter Property="FrameworkElement.MinHeight" Value="20"/>
+      <Setter Property="Control.Foreground" Value="White"/>
+      <Setter Property="Control.Template">
+        <Setter.Value>
+          <ControlTemplate TargetType="{x:Type TextBox}">
+            <Border x:Name="border" CornerRadius="2" BorderBrush="#000" BorderThickness="1" Background="Transparent">
+              <ScrollViewer x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden"
+                            VerticalScrollBarVisibility="Hidden"/>
+            </Border>
+            <ControlTemplate.Triggers>
+              <Trigger Property="UIElement.IsMouseOver" Value="true">
+                <Setter TargetName="border" Property="Border.BorderBrush" Value="#909090"/>
+                <Setter Property="Control.Foreground" Value="White"/>
+                <Setter Property="Control.FontWeight" Value="Bold"/>
+              </Trigger>
+              <Trigger Property="UIElement.IsFocused" Value="true">
+                <Setter Property="Control.Foreground" Value="White"/>
+                <Setter TargetName="border" Property="Border.BorderBrush" Value="White"/>
+                <Setter Property="TextBox.Text" Value=""/>
+              </Trigger>
+            </ControlTemplate.Triggers>
+          </ControlTemplate>
+        </Setter.Value>
+      </Setter>
+    </Style>
+    <Style TargetType="{x:Type PasswordBox}">
+      <Setter Property="Control.Padding" Value="5"/>
+      <Setter Property="FrameworkElement.Margin" Value="5"/>
+      <Setter Property="Control.FontSize" Value="15"/>
+      <Setter Property="FrameworkElement.MinHeight" Value="20"/>
+      <Setter Property="Control.Foreground" Value="White"/>
+      <Setter Property="Control.Template">
+        <Setter.Value>
+          <ControlTemplate TargetType="{x:Type PasswordBox}">
+            <Border x:Name="border" CornerRadius="2" BorderBrush="#000" BorderThickness="1" Background="Transparent">
+              <ScrollViewer x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden"
+                            VerticalScrollBarVisibility="Hidden"/>
+            </Border>
+            <ControlTemplate.Triggers>
+              <Trigger Property="UIElement.IsMouseOver" Value="true">
+                <Setter TargetName="border" Property="Border.BorderBrush" Value="#909090"/>
+                <Setter Property="Control.Foreground" Value="White"/>
+                <Setter Property="Control.FontWeight" Value="Bold"/>
+              </Trigger>
+              <Trigger Property="UIElement.IsFocused" Value="true">
+                <Setter Property="Control.Foreground" Value="White"/>
+                <Setter TargetName="border" Property="Border.BorderBrush" Value="White"/>
+              </Trigger>
+            </ControlTemplate.Triggers>
+          </ControlTemplate>
+        </Setter.Value>
+      </Setter>
+    </Style>
+  </FrameworkElement.Resources>
+  <Grid>
+    <Grid.ColumnDefinitions>
+      <ColumnDefinition Width="55*"/>
+      <ColumnDefinition Width="268*"/>
+      <ColumnDefinition Width="422*"/>
+    </Grid.ColumnDefinitions>
+    <Panel.Background>
+      <ImageBrush ImageSource="Data/Img/back_img.png" Stretch="Fill"/>
+    </Panel.Background>
+    <Button Click="buttonClose_Click" x:Name="buttonClose" Panel.ZIndex="1000" BorderThickness="0"
+            Style="{DynamicResource closeButtonStyle}" Grid.Column="2" Margin="470,6,13,467"
+            RenderTransformOrigin="0.486,0.139">
+      <Control.Background>
+        <ImageBrush ImageSource="Data/Img/close.png" Stretch="Fill"/>
+      </Control.Background>
+    </Button>
+    <Button Click="buttonMinimizer_Click" x:Name="buttonMinimizer" Panel.ZIndex="1000" BorderThickness="0"
+            Style="{DynamicResource minimizerButtonStyle}" Grid.Column="2" Margin="435,6,48,467">
+      <Control.Background>
+        <ImageBrush ImageSource="Data/Img/minimizer.png" Stretch="Fill"/>
+      </Control.Background>
+    </Button>
+    <Button Click="buttonAccess_Click" x:Name="buttonAccess" Panel.ZIndex="1000" BorderThickness="0"
+            Style="{DynamicResource accessButtonStyle}" Grid.Column="1" Margin="177,233,476,223"
+            Grid.ColumnSpan="2">
+      <Control.Background>
+        <ImageBrush ImageSource="Data/Img/acessar.png" Stretch="Fill"/>
+      </Control.Background>
+    </Button>
+    <Button Click="buttonStart_Click" x:Name="buttonStart" Panel.ZIndex="1000" BorderThickness="0"
+            Style="{DynamicResource startButtonStyle}" Grid.Column="2" Margin="335,431,15,16">
+      <Control.Background>
+        <ImageBrush ImageSource="Data/Img/iniciar.png" Stretch="Fill"/>
+      </Control.Background>
+    </Button>
+    <Button Click="buttonVerify_Click" x:Name="buttonVerify" Panel.ZIndex="1000" BorderThickness="0"
+            Style="{DynamicResource verifyButtonStyle}" Grid.Column="2" Margin="202,437,220,39">
+      <Control.Background>
+        <ImageBrush ImageSource="Data/Img/verificar.png" Stretch="Fill"/>
+      </Control.Background>
+    </Button>
+    <Image Name="inputUsername" Source="Data/Img/input.png" Stretch="Fill" Grid.Column="1"
+           Margin="32,111,476,350" Grid.ColumnSpan="2"/>
+    <Image Name="inputPassword" Source="Data/Img/input.png" Stretch="Fill" Grid.Column="1"
+           Margin="32,179,476,281" Grid.ColumnSpan="2"/>
+    <TextBox x:Name="textUsername" Background="Transparent" BorderBrush="Transparent" TextAlignment="Center"
+             Text="" local1:SelectAllFocusBehavior.Enable="true" HorizontalAlignment="Left" Height="39"
+             Margin="32,111,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Padding="5" Width="326"
+             Grid.ColumnSpan="2" Grid.Column="1"/>
+    <PasswordBox x:Name="textPassword" PasswordChar="*" HorizontalContentAlignment="Center" Height="39"
+                 local1:SelectAllFocusBehavior.Enable="true" MaxLength="50" Grid.Column="1" Margin="32,179,476,282"
+                 Grid.ColumnSpan="2"/>
+    <Image x:Name="progressBar" Stretch="Fill" Source="Data/Img/update_bar.png" HorizontalAlignment="Left"
+           VerticalAlignment="Top" Height="6" Width="656" Grid.ColumnSpan="3" Margin="24,478,0,0"/>
+    <Label x:Name="lblWellcome" Content="Bem vindo Quenio" Grid.Column="1" HorizontalAlignment="Left"
+           Margin="10,6,0,0" VerticalAlignment="Top" Foreground="#FFF3EEEE" FontWeight="Bold"/>
+    <Label x:Name="lblTotalQtd" Content="17000MB" Grid.Column="1" HorizontalAlignment="Left"
+           Margin="32,437,0,0" VerticalAlignment="Top" Foreground="#FFF3EEEE"/>
+    <Label x:Name="label_Copy1" Content="Tamanho total:" HorizontalAlignment="Left" Margin="17,437,0,0"
+           VerticalAlignment="Top" Foreground="#FF999999" Grid.ColumnSpan="2"/>
+    <Label x:Name="lblAtualQtd" Content="17000MB" Grid.Column="1" HorizontalAlignment="Left"
+           Margin="254,437,0,0" VerticalAlignment="Top" Foreground="#FFF3EEEE"/>
+    <Label x:Name="label_Copy3" Content="Tamanho do arquivo atual:" HorizontalAlignment="Left"
+           Margin="111,437,0,0" VerticalAlignment="Top" Foreground="#FF999999" Grid.Column="1"/>
+    <Label x:Name="label_Copy4" Content="Tamanho atualizado:" HorizontalAlignment="Left" Margin="10,437,0,0"
+           VerticalAlignment="Top" Foreground="#FF999999" Grid.Column="2"/>
+    <Label x:Name="lblTotalAtualizadoQtd" Content="17000MB" Grid.Column="2" HorizontalAlignment="Left"
+           Margin="121,437,0,0" VerticalAlignment="Top" Foreground="#FFF3EEEE"/>
+    <Label x:Name="lblMsgStatus" Foreground="Wheat" HorizontalAlignment="Center"
+           HorizontalContentAlignment="Center" Margin="32,324,473,0" VerticalAlignment="Top" Width="329"
+           Grid.ColumnSpan="2" Grid.Column="1"/>
+    <Label x:Name="lblDownloadSpeedQtd" Content="17000MB" Grid.Column="1" HorizontalAlignment="Left"
+           Margin="82,478,0,-4" VerticalAlignment="Top" Foreground="#FFF3EEEE"/>
+    <Label x:Name="lblDownloadSpeed" Content="Fazendo o download á:" HorizontalAlignment="Left"
+           Margin="17,478,0,-4" VerticalAlignment="Top" Foreground="#FF999999" Grid.ColumnSpan="2"/>
+    <Label x:Name="lblFileDownloadingName" Content="----" Grid.Column="2" HorizontalAlignment="Left"
+           Margin="94,478,0,-4" VerticalAlignment="Top" Foreground="#FFF3EEEE"/>
+    <WebBrowser x:Name="wbSlide" HorizontalAlignment="Left" Height="230" Margin="17,82,0,0" VerticalAlignment="Top"
+                Width="467" Grid.ColumnSpan="3"/>
+    <Label x:Name="lblFileDownloading" Content="Fazendo o download do arquivo:" HorizontalAlignment="Left"
+           Margin="234,478,0,-4" VerticalAlignment="Top" Foreground="#FF999999" Grid.ColumnSpan="2"
+           Grid.Column="1"/>
+    <ComboBox DropDownClosed="cmbLanguage_DropDownClosed" x:Name="cmbLanguage" Grid.Column="2"
+              HorizontalAlignment="Left" Margin="377,48,0,0" VerticalAlignment="Top" Width="120"
+              Text="{Binding Path=Lang}">
+      <ComboBoxItem Content="PT-BR" IsSelected="true"/>
+      <ComboBoxItem Content="ENG"/>
+    </ComboBox>
+  </Grid>
+</Window>

+ 4 - 0
LauncherIcarus/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs

@@ -0,0 +1,4 @@
+// <autogenerated />
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]

BIN
LauncherIcarus/obj/Debug/DesignTimeResolveAssemblyReferences.cache


BIN
LauncherIcarus/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


+ 62 - 0
LauncherIcarus/obj/Debug/GeneratedInternalTypeHelper.g.cs

@@ -0,0 +1,62 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан программой.
+//     Исполняемая версия:4.0.30319.42000
+//
+//     Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+//     повторной генерации кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace XamlGeneratedNamespace {
+    
+    
+    /// <summary>
+    /// GeneratedInternalTypeHelper
+    /// </summary>
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+    public sealed class GeneratedInternalTypeHelper : System.Windows.Markup.InternalTypeHelper {
+        
+        /// <summary>
+        /// CreateInstance
+        /// </summary>
+        protected override object CreateInstance(System.Type type, System.Globalization.CultureInfo culture) {
+            return System.Activator.CreateInstance(type, ((System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic) 
+                            | (System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.CreateInstance)), null, null, culture);
+        }
+        
+        /// <summary>
+        /// GetPropertyValue
+        /// </summary>
+        protected override object GetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, System.Globalization.CultureInfo culture) {
+            return propertyInfo.GetValue(target, System.Reflection.BindingFlags.Default, null, null, culture);
+        }
+        
+        /// <summary>
+        /// SetPropertyValue
+        /// </summary>
+        protected override void SetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, object value, System.Globalization.CultureInfo culture) {
+            propertyInfo.SetValue(target, value, System.Reflection.BindingFlags.Default, null, null, culture);
+        }
+        
+        /// <summary>
+        /// CreateDelegate
+        /// </summary>
+        protected override System.Delegate CreateDelegate(System.Type delegateType, object target, string handler) {
+            return ((System.Delegate)(target.GetType().InvokeMember("_CreateDelegate", (System.Reflection.BindingFlags.InvokeMethod 
+                            | (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)), null, target, new object[] {
+                        delegateType,
+                        handler}, null)));
+        }
+        
+        /// <summary>
+        /// AddEventHandler
+        /// </summary>
+        protected override void AddEventHandler(System.Reflection.EventInfo eventInfo, object target, System.Delegate handler) {
+            eventInfo.AddEventHandler(target, handler);
+        }
+    }
+}
+

+ 62 - 0
LauncherIcarus/obj/Debug/GeneratedInternalTypeHelper.g.i.cs

@@ -0,0 +1,62 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан программой.
+//     Исполняемая версия:4.0.30319.42000
+//
+//     Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+//     повторной генерации кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace XamlGeneratedNamespace {
+    
+    
+    /// <summary>
+    /// GeneratedInternalTypeHelper
+    /// </summary>
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+    public sealed class GeneratedInternalTypeHelper : System.Windows.Markup.InternalTypeHelper {
+        
+        /// <summary>
+        /// CreateInstance
+        /// </summary>
+        protected override object CreateInstance(System.Type type, System.Globalization.CultureInfo culture) {
+            return System.Activator.CreateInstance(type, ((System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic) 
+                            | (System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.CreateInstance)), null, null, culture);
+        }
+        
+        /// <summary>
+        /// GetPropertyValue
+        /// </summary>
+        protected override object GetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, System.Globalization.CultureInfo culture) {
+            return propertyInfo.GetValue(target, System.Reflection.BindingFlags.Default, null, null, culture);
+        }
+        
+        /// <summary>
+        /// SetPropertyValue
+        /// </summary>
+        protected override void SetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, object value, System.Globalization.CultureInfo culture) {
+            propertyInfo.SetValue(target, value, System.Reflection.BindingFlags.Default, null, null, culture);
+        }
+        
+        /// <summary>
+        /// CreateDelegate
+        /// </summary>
+        protected override System.Delegate CreateDelegate(System.Type delegateType, object target, string handler) {
+            return ((System.Delegate)(target.GetType().InvokeMember("_CreateDelegate", (System.Reflection.BindingFlags.InvokeMethod 
+                            | (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)), null, target, new object[] {
+                        delegateType,
+                        handler}, null)));
+        }
+        
+        /// <summary>
+        /// AddEventHandler
+        /// </summary>
+        protected override void AddEventHandler(System.Reflection.EventInfo eventInfo, object target, System.Delegate handler) {
+            eventInfo.AddEventHandler(target, handler);
+        }
+    }
+}
+

BIN
LauncherIcarus/obj/Debug/LauncherIcarus.Properties.Resources.resources


BIN
LauncherIcarus/obj/Debug/LauncherIcarus.csproj.AssemblyReference.cache


+ 0 - 0
LauncherIcarus/obj/Debug/LauncherIcarus.csproj.CopyComplete


+ 1 - 0
LauncherIcarus/obj/Debug/LauncherIcarus.csproj.CoreCompileInputs.cache

@@ -0,0 +1 @@
+06426b5156282686637ba54025cb74ce381d9078

+ 17 - 0
LauncherIcarus/obj/Debug/LauncherIcarus.csproj.FileListAbsolute.txt

@@ -0,0 +1,17 @@
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\obj\Debug\LauncherIcarus.csproj.AssemblyReference.cache
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\obj\Debug\mainwindow.g.cs
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\obj\Debug\GeneratedInternalTypeHelper.g.cs
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\obj\Debug\LauncherIcarus_MarkupCompile.cache
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\obj\Debug\LauncherIcarus_MarkupCompile.lref
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\obj\Debug\LauncherIcarus.csproj.SuggestedBindingRedirects.cache
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\obj\Debug\LauncherIcarus.exe
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\obj\Debug\LauncherIcarus.pdb
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\bin\Debug\LauncherIcarus.exe
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\bin\Debug\LauncherIcarus.pdb
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\bin\Debug\Newtonsoft.Json.dll
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\obj\Debug\mainwindow.baml
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\obj\Debug\LauncherIcarus.g.resources
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\obj\Debug\LauncherIcarus.Properties.Resources.resources
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\obj\Debug\LauncherIcarus.csproj.GenerateResource.cache
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\obj\Debug\LauncherIcarus.csproj.CoreCompileInputs.cache
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\obj\Debug\LauncherIcarus.csproj.CopyComplete

BIN
LauncherIcarus/obj/Debug/LauncherIcarus.csproj.GenerateResource.cache


+ 0 - 0
LauncherIcarus/obj/Debug/LauncherIcarus.csproj.SuggestedBindingRedirects.cache


BIN
LauncherIcarus/obj/Debug/LauncherIcarus.exe


BIN
LauncherIcarus/obj/Debug/LauncherIcarus.g.resources


BIN
LauncherIcarus/obj/Debug/LauncherIcarus.pdb


+ 20 - 0
LauncherIcarus/obj/Debug/LauncherIcarus_MarkupCompile.cache

@@ -0,0 +1,20 @@
+LauncherIcarus
+
+
+winexe
+C#
+.cs
+D:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\obj\Debug\
+LauncherIcarus
+none
+false
+DEBUG;TRACE
+
+11150301917
+
+21-1820941277
+11370672440
+mainwindow.xaml;
+
+False
+

+ 4 - 0
LauncherIcarus/obj/Debug/LauncherIcarus_MarkupCompile.lref

@@ -0,0 +1,4 @@
+
+
+FD:\Icarus\projeto launcher\projeto launcher\launcher\LauncherIcarus\mainwindow.xaml;;
+

BIN
LauncherIcarus/obj/Debug/mainwindow.baml


+ 395 - 0
LauncherIcarus/obj/Debug/mainwindow.g.cs

@@ -0,0 +1,395 @@
+#pragma checksum "..\..\mainwindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "D08DFFC073B33285D95B227F27B09061B04EF4704A3D4A96E2C943378754AB44"
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан программой.
+//     Исполняемая версия:4.0.30319.42000
+//
+//     Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+//     повторной генерации кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using LauncherIcarus;
+using LauncherIcarus.Daemon;
+using LauncherIcarus.Model;
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace LauncherIcarus {
+    
+    
+    /// <summary>
+    /// MainWindow
+    /// </summary>
+    public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
+        
+        
+        #line 367 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button buttonClose;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 374 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button buttonMinimizer;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 380 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button buttonAccess;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 387 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button buttonStart;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 393 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button buttonVerify;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 399 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Image inputUsername;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 401 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Image inputPassword;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 403 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.TextBox textUsername;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 407 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.PasswordBox textPassword;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 410 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Image progressBar;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 412 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblWellcome;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 414 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblTotalQtd;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 416 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label label_Copy1;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 418 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblAtualQtd;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 420 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label label_Copy3;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 422 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label label_Copy4;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 424 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblTotalAtualizadoQtd;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 426 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblMsgStatus;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 429 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblDownloadSpeedQtd;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 431 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblDownloadSpeed;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 433 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblFileDownloadingName;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 435 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.WebBrowser wbSlide;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 437 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblFileDownloading;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 440 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.ComboBox cmbLanguage;
+        
+        #line default
+        #line hidden
+        
+        private bool _contentLoaded;
+        
+        /// <summary>
+        /// InitializeComponent
+        /// </summary>
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        public void InitializeComponent() {
+            if (_contentLoaded) {
+                return;
+            }
+            _contentLoaded = true;
+            System.Uri resourceLocater = new System.Uri("/LauncherIcarus;component/mainwindow.xaml", System.UriKind.Relative);
+            
+            #line 1 "..\..\mainwindow.xaml"
+            System.Windows.Application.LoadComponent(this, resourceLocater);
+            
+            #line default
+            #line hidden
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal System.Delegate _CreateDelegate(System.Type delegateType, string handler) {
+            return System.Delegate.CreateDelegate(delegateType, this, handler);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+            switch (connectionId)
+            {
+            case 1:
+            
+            #line 9 "..\..\mainwindow.xaml"
+            ((LauncherIcarus.MainWindow)(target)).MouseMove += new System.Windows.Input.MouseEventHandler(this.Window_MouseMove);
+            
+            #line default
+            #line hidden
+            return;
+            case 2:
+            this.buttonClose = ((System.Windows.Controls.Button)(target));
+            
+            #line 367 "..\..\mainwindow.xaml"
+            this.buttonClose.Click += new System.Windows.RoutedEventHandler(this.buttonClose_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 3:
+            this.buttonMinimizer = ((System.Windows.Controls.Button)(target));
+            
+            #line 374 "..\..\mainwindow.xaml"
+            this.buttonMinimizer.Click += new System.Windows.RoutedEventHandler(this.buttonMinimizer_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 4:
+            this.buttonAccess = ((System.Windows.Controls.Button)(target));
+            
+            #line 380 "..\..\mainwindow.xaml"
+            this.buttonAccess.Click += new System.Windows.RoutedEventHandler(this.buttonAccess_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 5:
+            this.buttonStart = ((System.Windows.Controls.Button)(target));
+            
+            #line 387 "..\..\mainwindow.xaml"
+            this.buttonStart.Click += new System.Windows.RoutedEventHandler(this.buttonStart_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 6:
+            this.buttonVerify = ((System.Windows.Controls.Button)(target));
+            
+            #line 393 "..\..\mainwindow.xaml"
+            this.buttonVerify.Click += new System.Windows.RoutedEventHandler(this.buttonVerify_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 7:
+            this.inputUsername = ((System.Windows.Controls.Image)(target));
+            return;
+            case 8:
+            this.inputPassword = ((System.Windows.Controls.Image)(target));
+            return;
+            case 9:
+            this.textUsername = ((System.Windows.Controls.TextBox)(target));
+            return;
+            case 10:
+            this.textPassword = ((System.Windows.Controls.PasswordBox)(target));
+            return;
+            case 11:
+            this.progressBar = ((System.Windows.Controls.Image)(target));
+            return;
+            case 12:
+            this.lblWellcome = ((System.Windows.Controls.Label)(target));
+            return;
+            case 13:
+            this.lblTotalQtd = ((System.Windows.Controls.Label)(target));
+            return;
+            case 14:
+            this.label_Copy1 = ((System.Windows.Controls.Label)(target));
+            return;
+            case 15:
+            this.lblAtualQtd = ((System.Windows.Controls.Label)(target));
+            return;
+            case 16:
+            this.label_Copy3 = ((System.Windows.Controls.Label)(target));
+            return;
+            case 17:
+            this.label_Copy4 = ((System.Windows.Controls.Label)(target));
+            return;
+            case 18:
+            this.lblTotalAtualizadoQtd = ((System.Windows.Controls.Label)(target));
+            return;
+            case 19:
+            this.lblMsgStatus = ((System.Windows.Controls.Label)(target));
+            return;
+            case 20:
+            this.lblDownloadSpeedQtd = ((System.Windows.Controls.Label)(target));
+            return;
+            case 21:
+            this.lblDownloadSpeed = ((System.Windows.Controls.Label)(target));
+            return;
+            case 22:
+            this.lblFileDownloadingName = ((System.Windows.Controls.Label)(target));
+            return;
+            case 23:
+            this.wbSlide = ((System.Windows.Controls.WebBrowser)(target));
+            return;
+            case 24:
+            this.lblFileDownloading = ((System.Windows.Controls.Label)(target));
+            return;
+            case 25:
+            this.cmbLanguage = ((System.Windows.Controls.ComboBox)(target));
+            
+            #line 440 "..\..\mainwindow.xaml"
+            this.cmbLanguage.DropDownClosed += new System.EventHandler(this.cmbLanguage_DropDownClosed);
+            
+            #line default
+            #line hidden
+            return;
+            }
+            this._contentLoaded = true;
+        }
+    }
+}
+

+ 395 - 0
LauncherIcarus/obj/Debug/mainwindow.g.i.cs

@@ -0,0 +1,395 @@
+#pragma checksum "..\..\mainwindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "D08DFFC073B33285D95B227F27B09061B04EF4704A3D4A96E2C943378754AB44"
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан программой.
+//     Исполняемая версия:4.0.30319.42000
+//
+//     Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+//     повторной генерации кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using LauncherIcarus;
+using LauncherIcarus.Daemon;
+using LauncherIcarus.Model;
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace LauncherIcarus {
+    
+    
+    /// <summary>
+    /// MainWindow
+    /// </summary>
+    public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
+        
+        
+        #line 367 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button buttonClose;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 374 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button buttonMinimizer;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 380 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button buttonAccess;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 387 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button buttonStart;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 393 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button buttonVerify;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 399 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Image inputUsername;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 401 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Image inputPassword;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 403 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.TextBox textUsername;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 407 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.PasswordBox textPassword;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 410 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Image progressBar;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 412 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblWellcome;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 414 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblTotalQtd;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 416 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label label_Copy1;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 418 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblAtualQtd;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 420 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label label_Copy3;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 422 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label label_Copy4;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 424 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblTotalAtualizadoQtd;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 426 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblMsgStatus;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 429 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblDownloadSpeedQtd;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 431 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblDownloadSpeed;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 433 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblFileDownloadingName;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 435 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.WebBrowser wbSlide;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 437 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Label lblFileDownloading;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 440 "..\..\mainwindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.ComboBox cmbLanguage;
+        
+        #line default
+        #line hidden
+        
+        private bool _contentLoaded;
+        
+        /// <summary>
+        /// InitializeComponent
+        /// </summary>
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        public void InitializeComponent() {
+            if (_contentLoaded) {
+                return;
+            }
+            _contentLoaded = true;
+            System.Uri resourceLocater = new System.Uri("/LauncherIcarus;component/mainwindow.xaml", System.UriKind.Relative);
+            
+            #line 1 "..\..\mainwindow.xaml"
+            System.Windows.Application.LoadComponent(this, resourceLocater);
+            
+            #line default
+            #line hidden
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal System.Delegate _CreateDelegate(System.Type delegateType, string handler) {
+            return System.Delegate.CreateDelegate(delegateType, this, handler);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+            switch (connectionId)
+            {
+            case 1:
+            
+            #line 9 "..\..\mainwindow.xaml"
+            ((LauncherIcarus.MainWindow)(target)).MouseMove += new System.Windows.Input.MouseEventHandler(this.Window_MouseMove);
+            
+            #line default
+            #line hidden
+            return;
+            case 2:
+            this.buttonClose = ((System.Windows.Controls.Button)(target));
+            
+            #line 367 "..\..\mainwindow.xaml"
+            this.buttonClose.Click += new System.Windows.RoutedEventHandler(this.buttonClose_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 3:
+            this.buttonMinimizer = ((System.Windows.Controls.Button)(target));
+            
+            #line 374 "..\..\mainwindow.xaml"
+            this.buttonMinimizer.Click += new System.Windows.RoutedEventHandler(this.buttonMinimizer_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 4:
+            this.buttonAccess = ((System.Windows.Controls.Button)(target));
+            
+            #line 380 "..\..\mainwindow.xaml"
+            this.buttonAccess.Click += new System.Windows.RoutedEventHandler(this.buttonAccess_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 5:
+            this.buttonStart = ((System.Windows.Controls.Button)(target));
+            
+            #line 387 "..\..\mainwindow.xaml"
+            this.buttonStart.Click += new System.Windows.RoutedEventHandler(this.buttonStart_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 6:
+            this.buttonVerify = ((System.Windows.Controls.Button)(target));
+            
+            #line 393 "..\..\mainwindow.xaml"
+            this.buttonVerify.Click += new System.Windows.RoutedEventHandler(this.buttonVerify_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 7:
+            this.inputUsername = ((System.Windows.Controls.Image)(target));
+            return;
+            case 8:
+            this.inputPassword = ((System.Windows.Controls.Image)(target));
+            return;
+            case 9:
+            this.textUsername = ((System.Windows.Controls.TextBox)(target));
+            return;
+            case 10:
+            this.textPassword = ((System.Windows.Controls.PasswordBox)(target));
+            return;
+            case 11:
+            this.progressBar = ((System.Windows.Controls.Image)(target));
+            return;
+            case 12:
+            this.lblWellcome = ((System.Windows.Controls.Label)(target));
+            return;
+            case 13:
+            this.lblTotalQtd = ((System.Windows.Controls.Label)(target));
+            return;
+            case 14:
+            this.label_Copy1 = ((System.Windows.Controls.Label)(target));
+            return;
+            case 15:
+            this.lblAtualQtd = ((System.Windows.Controls.Label)(target));
+            return;
+            case 16:
+            this.label_Copy3 = ((System.Windows.Controls.Label)(target));
+            return;
+            case 17:
+            this.label_Copy4 = ((System.Windows.Controls.Label)(target));
+            return;
+            case 18:
+            this.lblTotalAtualizadoQtd = ((System.Windows.Controls.Label)(target));
+            return;
+            case 19:
+            this.lblMsgStatus = ((System.Windows.Controls.Label)(target));
+            return;
+            case 20:
+            this.lblDownloadSpeedQtd = ((System.Windows.Controls.Label)(target));
+            return;
+            case 21:
+            this.lblDownloadSpeed = ((System.Windows.Controls.Label)(target));
+            return;
+            case 22:
+            this.lblFileDownloadingName = ((System.Windows.Controls.Label)(target));
+            return;
+            case 23:
+            this.wbSlide = ((System.Windows.Controls.WebBrowser)(target));
+            return;
+            case 24:
+            this.lblFileDownloading = ((System.Windows.Controls.Label)(target));
+            return;
+            case 25:
+            this.cmbLanguage = ((System.Windows.Controls.ComboBox)(target));
+            
+            #line 440 "..\..\mainwindow.xaml"
+            this.cmbLanguage.DropDownClosed += new System.EventHandler(this.cmbLanguage_DropDownClosed);
+            
+            #line default
+            #line hidden
+            return;
+            }
+            this._contentLoaded = true;
+        }
+    }
+}
+

BIN
LauncherUpdater/.vs/LauncherUpdater/v16/.suo


+ 24 - 0
LauncherUpdater/App.cs

@@ -0,0 +1,24 @@
+using System;
+using System.CodeDom.Compiler;
+using System.Diagnostics;
+using System.Windows;
+
+namespace LauncherUpdater
+{
+    public class App : Application
+    {
+        [DebuggerNonUserCode]
+        [GeneratedCode("PresentationBuildTasks", "4.0.0.0")]
+        public void InitializeComponent() => this.StartupUri = new Uri("MainWindow.xaml", UriKind.Relative);
+
+        [STAThread]
+        [DebuggerNonUserCode]
+        [GeneratedCode("PresentationBuildTasks", "4.0.0.0")]
+        public static void Main()
+        {
+            App app = new App();
+            app.InitializeComponent();
+            app.Run();
+        }
+    }
+}

+ 15 - 0
LauncherUpdater/AssemblyInfo.cs

@@ -0,0 +1,15 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+[assembly: AssemblyTitle("LauncherUpdater")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("LauncherUpdater")]
+[assembly: AssemblyCopyright("Copyright ©  2021")]
+[assembly: AssemblyTrademark("")]
+[assembly: ComVisible(false)]
+[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyVersion("1.0.0.0")]

+ 12 - 0
LauncherUpdater/Bin/Debug/Launcher/Logger/Log-08-13-2024.txt

@@ -0,0 +1,12 @@
+
+Log Entry : 
+12:38:56 13 августа 2024 г.
+  :
+  :LauncherUpdater.App : Указан недопустимый URI запроса. URI запроса должен быть абсолютным URI, или необходимо задать BaseAddress.
+-------------------------------
+
+Log Entry : 
+12:56:21 13 августа 2024 г.
+  :
+  :LauncherUpdater.App : Указан недопустимый URI запроса. URI запроса должен быть абсолютным URI, или необходимо задать BaseAddress.
+-------------------------------

BIN
LauncherUpdater/Bin/Debug/LauncherUpdater.exe


BIN
LauncherUpdater/Bin/Debug/LauncherUpdater.pdb


BIN
LauncherUpdater/Bin/Debug/Newtonsoft.Json.dll


BIN
LauncherUpdater/Bin/Release/LauncherUpdater.exe


BIN
LauncherUpdater/Bin/Release/Newtonsoft.Json.dll


BIN
LauncherUpdater/Bin/Release/YDEntrance.dll


BIN
LauncherUpdater/Bin/Release/YDEntrance64.dll


BIN
LauncherUpdater/Bin/Release/msvcp100.dll


BIN
LauncherUpdater/Bin/Release/msvcr100.dll


+ 36 - 0
LauncherUpdater/Function/Configuration.cs

@@ -0,0 +1,36 @@
+namespace LauncherUpdater.Function
+{
+    public class Configuration
+    {
+        public static readonly Configuration Default = new Configuration()
+        {
+            ServerIP = "191.96.224.202",
+            LauncherDir = "./Launcher/",
+            CheckLauncherVersion = "/api/CheckLauncherVersion"
+        };
+
+        public string ServerIP { get; set; }
+
+        public string LoginUrl { get; set; }
+
+        public string ListFileUrl { get; set; }
+
+        public string LauncherNewsUrl { get; set; }
+
+        public string CheckClientFiles { get; set; }
+
+        public string GetLauncherVersion { get; set; }
+
+        public string LauncherDir { get; set; }
+
+        public string DownloadDir { get; set; }
+
+        public string UpdateLauncherVersion { get; set; }
+
+        public string DownloadClientFileUrl { get; set; }
+
+        public string DownloadUpdateFileUrl { get; set; }
+
+        public string CheckLauncherVersion { get; set; }
+    }
+}

+ 309 - 0
LauncherUpdater/Function/Crc32.cs

@@ -0,0 +1,309 @@
+using System.Security.Cryptography;
+using System.Text;
+
+namespace LauncherUpdater.Function
+{
+    public class Crc32 : HashAlgorithm
+    {
+        public const uint DefaultSeed = 4294967295;
+
+        private static readonly uint[] CrcTable = new uint[256]
+        {
+            0U,
+            1996959894U,
+            3993919788U,
+            2567524794U,
+            124634137U,
+            1886057615U,
+            3915621685U,
+            2657392035U,
+            249268274U,
+            2044508324U,
+            3772115230U,
+            2547177864U,
+            162941995U,
+            2125561021U,
+            3887607047U,
+            2428444049U,
+            498536548U,
+            1789927666U,
+            4089016648U,
+            2227061214U,
+            450548861U,
+            1843258603U,
+            4107580753U,
+            2211677639U,
+            325883990U,
+            1684777152U,
+            4251122042U,
+            2321926636U,
+            335633487U,
+            1661365465U,
+            4195302755U,
+            2366115317U,
+            997073096U,
+            1281953886U,
+            3579855332U,
+            2724688242U,
+            1006888145U,
+            1258607687U,
+            3524101629U,
+            2768942443U,
+            901097722U,
+            1119000684U,
+            3686517206U,
+            2898065728U,
+            853044451U,
+            1172266101U,
+            3705015759U,
+            2882616665U,
+            651767980U,
+            1373503546U,
+            3369554304U,
+            3218104598U,
+            565507253U,
+            1454621731U,
+            3485111705U,
+            3099436303U,
+            671266974U,
+            1594198024U,
+            3322730930U,
+            2970347812U,
+            795835527U,
+            1483230225U,
+            3244367275U,
+            3060149565U,
+            1994146192U,
+            31158534U,
+            2563907772U,
+            4023717930U,
+            1907459465U,
+            112637215U,
+            2680153253U,
+            3904427059U,
+            2013776290U,
+            251722036U,
+            2517215374U,
+            3775830040U,
+            2137656763U,
+            141376813U,
+            2439277719U,
+            3865271297U,
+            1802195444U,
+            476864866U,
+            2238001368U,
+            4066508878U,
+            1812370925U,
+            453092731U,
+            2181625025U,
+            4111451223U,
+            1706088902U,
+            314042704U,
+            2344532202U,
+            4240017532U,
+            1658658271U,
+            366619977U,
+            2362670323U,
+            4224994405U,
+            1303535960U,
+            984961486U,
+            2747007092U,
+            3569037538U,
+            1256170817U,
+            1037604311U,
+            2765210733U,
+            3554079995U,
+            1131014506U,
+            879679996U,
+            2909243462U,
+            3663771856U,
+            1141124467U,
+            855842277U,
+            2852801631U,
+            3708648649U,
+            1342533948U,
+            654459306U,
+            3188396048U,
+            3373015174U,
+            1466479909U,
+            544179635U,
+            3110523913U,
+            3462522015U,
+            1591671054U,
+            702138776U,
+            2966460450U,
+            3352799412U,
+            1504918807U,
+            783551873U,
+            3082640443U,
+            3233442989U,
+            3988292384U,
+            2596254646U,
+            62317068U,
+            1957810842U,
+            3939845945U,
+            2647816111U,
+            81470997U,
+            1943803523U,
+            3814918930U,
+            2489596804U,
+            225274430U,
+            2053790376U,
+            3826175755U,
+            2466906013U,
+            167816743U,
+            2097651377U,
+            4027552580U,
+            2265490386U,
+            503444072U,
+            1762050814U,
+            4150417245U,
+            2154129355U,
+            426522225U,
+            1852507879U,
+            4275313526U,
+            2312317920U,
+            282753626U,
+            1742555852U,
+            4189708143U,
+            2394877945U,
+            397917763U,
+            1622183637U,
+            3604390888U,
+            2714866558U,
+            953729732U,
+            1340076626U,
+            3518719985U,
+            2797360999U,
+            1068828381U,
+            1219638859U,
+            3624741850U,
+            2936675148U,
+            906185462U,
+            1090812512U,
+            3747672003U,
+            2825379669U,
+            829329135U,
+            1181335161U,
+            3412177804U,
+            3160834842U,
+            628085408U,
+            1382605366U,
+            3423369109U,
+            3138078467U,
+            570562233U,
+            1426400815U,
+            3317316542U,
+            2998733608U,
+            733239954U,
+            1555261956U,
+            3268935591U,
+            3050360625U,
+            752459403U,
+            1541320221U,
+            2607071920U,
+            3965973030U,
+            1969922972U,
+            40735498U,
+            2617837225U,
+            3943577151U,
+            1913087877U,
+            83908371U,
+            2512341634U,
+            3803740692U,
+            2075208622U,
+            213261112U,
+            2463272603U,
+            3855990285U,
+            2094854071U,
+            198958881U,
+            2262029012U,
+            4057260610U,
+            1759359992U,
+            534414190U,
+            2176718541U,
+            4139329115U,
+            1873836001U,
+            414664567U,
+            2282248934U,
+            4279200368U,
+            1711684554U,
+            285281116U,
+            2405801727U,
+            4167216745U,
+            1634467795U,
+            376229701U,
+            2685067896U,
+            3608007406U,
+            1308918612U,
+            956543938U,
+            2808555105U,
+            3495958263U,
+            1231636301U,
+            1047427035U,
+            2932959818U,
+            3654703836U,
+            1088359270U,
+            936918000U,
+            2847714899U,
+            3736837829U,
+            1202900863U,
+            817233897U,
+            3183342108U,
+            3401237130U,
+            1404277552U,
+            615818150U,
+            3134207493U,
+            3453421203U,
+            1423857449U,
+            601450431U,
+            3009837614U,
+            3294710456U,
+            1567103746U,
+            711928724U,
+            3020668471U,
+            3272380065U,
+            1510334235U,
+            755167117U
+        };
+
+        private uint crcValue;
+
+        public uint CrcValue =>
+            (uint) ((int) this.HashValue[0] << 24 | (int) this.HashValue[1] << 16 | (int) this.HashValue[2] << 8) |
+            (uint) this.HashValue[3];
+
+        public override int HashSize => 32;
+
+        public static uint Calculate(string data)
+        {
+            UTF8Encoding utF8Encoding = new UTF8Encoding();
+            Crc32 crc32 = new Crc32();
+            crc32.ComputeHash(utF8Encoding.GetBytes(data));
+            return crc32.CrcValue;
+        }
+
+        public override void Initialize() => this.crcValue = 0U;
+
+        protected override void HashCore(byte[] buffer, int start, int length)
+        {
+            this.crcValue ^= uint.MaxValue;
+            while (--length >= 0)
+                this.crcValue = Crc32.CrcTable[((int) this.crcValue ^ (int) buffer[start++]) & (int) byte.MaxValue] ^
+                                this.crcValue >> 8;
+            this.crcValue ^= uint.MaxValue;
+        }
+
+        protected override byte[] HashFinal()
+        {
+            this.HashValue = new byte[4]
+            {
+                (byte) (this.crcValue >> 24 & (uint) byte.MaxValue),
+                (byte) (this.crcValue >> 16 & (uint) byte.MaxValue),
+                (byte) (this.crcValue >> 8 & (uint) byte.MaxValue),
+                (byte) (this.crcValue & (uint) byte.MaxValue)
+            };
+            return this.HashValue;
+        }
+    }
+}

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.