diff --git a/.gitignore b/.gitignore index 99cdac4..97de8e8 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,11 @@ Failed Experiments/Mica Discord WinUI 3/bin Failed Experiments/Mica Discord WinUI 3/obj Failed Experiments/SettingsBuilder/bin Failed Experiments/SettingsBuilder/obj +Mica Discord Packager/bin +Mica Discord Packager/obj +Mica Discord Packager/Package.StoreAssociation.xml +Mica Discord Packager/AppPackages +Mica Discord Packager/BundleArtifacts Future/Mica Browser/bin Future/Mica Browser/obj Future/Mica Window/bin diff --git a/Mica Discord WPF/App.xaml.cs b/Mica Discord WPF/App.xaml.cs index 3c0c23a..9f4a68d 100644 --- a/Mica Discord WPF/App.xaml.cs +++ b/Mica Discord WPF/App.xaml.cs @@ -6,6 +6,7 @@ using System.Windows.Forms; using WPFApplication = System.Windows.Application; using WV2::Microsoft.Web.WebView2.Core; +using System.IO; #if WINDOWS10_0_17763_0_OR_GREATER using Microsoft.Windows.ApplicationModel.DynamicDependency; #endif @@ -32,6 +33,7 @@ protected override void OnStartup(StartupEventArgs e) { try { + Directory.SetCurrentDirectory(Path.GetDirectoryName(typeof(MainWindow).Assembly.Location) ?? throw new NullReferenceException()); base.OnStartup(e); NotifyIcon.Click += (_, _) => OpenMenu(); //var mainwindow = (MainWindow)MainWindow; diff --git a/Mica Discord WPF/MainWindow.xaml.cs b/Mica Discord WPF/MainWindow.xaml.cs index fb0d2e0..1e16701 100644 --- a/Mica Discord WPF/MainWindow.xaml.cs +++ b/Mica Discord WPF/MainWindow.xaml.cs @@ -29,14 +29,16 @@ using Color = System.Windows.Media.Color; using Button = System.Windows.Controls.Button; using Control = System.Windows.Forms.Control; - namespace MicaDiscord; - +#if WINDOWS10_0_17763_0_OR_GREATER +using AppSetting = MicaDiscord.Setting; +#endif public partial class MainWindow : Window { public static int WindowsMajorNumber = Environment.OSVersion.Version.Major; public static int WindowsBuildNumber = Environment.OSVersion.Version.Build; #if WINDOWS10_0_17763_0_OR_GREATER + static string StartupPath = "."; // Path.GetDirectoryName(typeof(MainWindow).Assembly.Location) ?? throw new NullReferenceException(); static UISettings UISettings { get; } = new(); public static bool IsNewTitleBarSupported => IsWin11; //AppWindowTitleBar.IsCustomizationSupported(); #else @@ -46,13 +48,13 @@ public static string DefinedCSS #if DEBUG => File.Exists("../../../The CSS.css") ? File.ReadAllText("../../../The CSS.css") : File.ReadAllText("The CSS.css");// Read File Every time #else - = File.ReadAllText("./The CSS.css"); // Read only once + = File.ReadAllText($"{StartupPath}/The CSS.css"); // Read only once #endif public static string DefinedJavascript #if DEBUG => File.Exists("../../../MicaDiscordScript.js") ? File.ReadAllText("../../../MicaDiscordScript.js") : File.ReadAllText("MicaDiscordScript.js");// Read File Every time #else - = File.ReadAllText("./MicaDiscordScript.js"); // Read only once + = File.ReadAllText($"{StartupPath}/MicaDiscordScript.js"); // Read only once #endif public static bool NotSupportedBuild => !IsWin11; public static bool IsWin11 => WindowsBuildNumber is >=22000; @@ -164,7 +166,7 @@ void RefreshFrame() HwndSource mainWindowSrc = HwndSource.FromHwnd(Handle); #if WINDOWS10_0_17763_0_OR_GREATER - if (!NotSupportedBuild || Settings.Default.UseBackdropAnyway) + if (!NotSupportedBuild || AppSetting.UseBackdropAnyway) { mainWindowSrc.CompositionTarget.BackgroundColor = Color.FromArgb(0, 0, 0, 0); DwmApi.DwmExtendFrameIntoClientArea(Handle, new() @@ -208,7 +210,7 @@ static bool IsDarkBackground(WinUIColor color) } //RefreshDarkMode(dark: Dark); - SetBackdrop((CustomPInvoke.BackdropType)Enum.Parse(typeof(CustomPInvoke.BackdropType), Settings.Default.BackdropType, ignoreCase: true)); + SetBackdrop((CustomPInvoke.BackdropType)Enum.Parse(typeof(CustomPInvoke.BackdropType), AppSetting.BackdropType, ignoreCase: true)); #else ThemeChanged += RefreshFrame; #endif @@ -261,7 +263,7 @@ static bool IsDarkBackground(WinUIColor color) RefreshFrame(); }; - CoreWebView2.Settings.AreDevToolsEnabled = Settings.Default.EnableDevTools; + CoreWebView2.Settings.AreDevToolsEnabled = AppSetting.EnableDevTools; void DevToolsCheck(object _, System.Windows.Input.KeyEventArgs e) { if (e.Key == Key.I && Control.ModifierKeys == (Keys.Control | Keys.Shift)) @@ -274,9 +276,9 @@ void DevToolsCheck(object _, System.Windows.Input.KeyEventArgs e) e.Handled = false; return; OK: - if (Settings.Default.EnableDevTools) + if (AppSetting.EnableDevTools) { - if (Settings.Default.ReplaceDiscordBackground) + if (AppSetting.ReplaceDiscordBackground) { #if WINDOWS10_0_17763_0_OR_GREATER WinUIColor PrimaryColor = UISettings.GetColorValue(UIColorType.AccentLight3); @@ -323,7 +325,7 @@ void DevToolsCheck(object _, System.Windows.Input.KeyEventArgs e) { if (!WebView.Source.OriginalString.Contains("discord.com")) return; - DiscordEffectApplied = Settings.Default.ReplaceDiscordBackground; + DiscordEffectApplied = AppSetting.ReplaceDiscordBackground; if (DiscordEffectApplied) { var Dark = (await WebView.CoreWebView2.ExecuteScriptAsync("document.getElementsByTagName('html')[0].classList.contains('theme-dark')")) == "true"; @@ -408,7 +410,7 @@ await WebView.CoreWebView2.ExecuteScriptAsync($@" Closing += (_, e) => { - if (!ForceClose && Settings.Default.UseSystemTray) + if (!ForceClose && AppSetting.UseSystemTray) { e.Cancel = true; Hide(); @@ -498,12 +500,12 @@ async void InitializeAsync() SettingsDialog.OnSettingsChanged += () => { #if WINDOWS10_0_17763_0_OR_GREATER - SetBackdrop((CustomPInvoke.BackdropType)Enum.Parse(typeof(CustomPInvoke.BackdropType), Settings.Default.BackdropType, ignoreCase: true)); + SetBackdrop((CustomPInvoke.BackdropType)Enum.Parse(typeof(CustomPInvoke.BackdropType), AppSetting.BackdropType ?? "Mica", ignoreCase: true)); #endif var w = WebView.CoreWebView2; if (w != null) { - w.Settings.AreDevToolsEnabled = Settings.Default.EnableDevTools; + w.Settings.AreDevToolsEnabled = AppSetting.EnableDevTools; } }; //Icon = ImageSourceFromBitmap(ProgramResources.Logo); diff --git a/Mica Discord WPF/Mica Discord WPF.csproj b/Mica Discord WPF/Mica Discord WPF.csproj index a7db2b1..e6b9171 100644 --- a/Mica Discord WPF/Mica Discord WPF.csproj +++ b/Mica Discord WPF/Mica Discord WPF.csproj @@ -2,7 +2,8 @@ WinExe - net6.0-windows10.0.17763.0;net6.0-windows7.0 + + net6.0-windows10.0.17763.0 enable true MicaDiscord @@ -14,10 +15,11 @@ true 10.0.17763.0;7.0 win-x86;win-x64;win-arm64 + AnyCPU;x64 - + @@ -66,12 +68,14 @@ WV2 - + - + + + MSBuild:Compile @@ -88,6 +92,11 @@ Form + + True + True + Settings.settings + @@ -100,6 +109,10 @@ Never + + SettingsSingleFileGenerator + Settings.Designer.cs + Never diff --git a/Mica Discord WPF/Settings.Designer.cs b/Mica Discord WPF/Settings.Designer.cs index 6f6029f..bc3d515 100644 --- a/Mica Discord WPF/Settings.Designer.cs +++ b/Mica Discord WPF/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace MicaDiscord { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.3.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/Mica Discord WPF/SettingsDialog.xaml.cs b/Mica Discord WPF/SettingsDialog.xaml.cs index cba0dd0..d380cf3 100644 --- a/Mica Discord WPF/SettingsDialog.xaml.cs +++ b/Mica Discord WPF/SettingsDialog.xaml.cs @@ -1,9 +1,49 @@ -using System; +using CustomPInvoke; +using System; using System.Diagnostics; using System.Windows; using System.Windows.Controls; -namespace MicaDiscord; +#if WINDOWS10_0_17763_0_OR_GREATER +using Windows.Storage; +#endif +namespace MicaDiscord; +#if WINDOWS10_0_17763_0_OR_GREATER +static class Setting { + static ApplicationDataContainer ApplicationSetting = ApplicationData.Current.LocalSettings; + public static void Save() { /* Do Nothing */ } + public static bool ReplaceDiscordBackground + { + get => (bool)(ApplicationSetting.Values[nameof(ReplaceDiscordBackground)] ?? false); + set => ApplicationSetting.Values[nameof(ReplaceDiscordBackground)] = value; + } + public static bool UseBackdropAnyway + { + get => (bool)(ApplicationSetting.Values[nameof(UseBackdropAnyway)] ?? false); + set => ApplicationSetting.Values[nameof(UseBackdropAnyway)] = value; + } + public static bool UseSystemTray + { + get => (bool)(ApplicationSetting.Values[nameof(UseSystemTray)] ?? true); + set => ApplicationSetting.Values[nameof(UseSystemTray)] = value; + } + public static bool EnableDevTools + { + get => (bool)(ApplicationSetting.Values[nameof(EnableDevTools)] ?? false); + set => ApplicationSetting.Values[nameof(EnableDevTools)] = value; + } + public static bool ModeAwareCSS + { + get => (bool)(ApplicationSetting.Values[nameof(ModeAwareCSS)] ?? true); + set => ApplicationSetting.Values[nameof(ModeAwareCSS)] = value; + } + public static string? BackdropType + { + get => (string?)(ApplicationSetting.Values[nameof(BackdropType)] ?? "Mica"); + set => ApplicationSetting.Values[nameof(BackdropType)] = value; + } +} +#endif /// /// Interaction logic for SettingsDialog.xaml /// @@ -11,6 +51,9 @@ public partial class SettingsDialog : Grid { public bool RequiresReload { get; private set; } = false; public void ResetRequiresReload() => RequiresReload = false; +#if !WINDOWS10_0_17763_0_OR_GREATER + static Settings Setting = Settings.Default; +#endif public SettingsDialog() { InitializeComponent(); @@ -22,24 +65,24 @@ public SettingsDialog() #if DEBUG ReloadCSSButton.Visibility = Visibility.Hidden; #endif - Backdrop.SelectedItem = Enum.Parse(typeof(CustomPInvoke.BackdropType), Settings.Default.BackdropType); - ReplaceBackgroundToggle.Content = Settings.Default.ReplaceDiscordBackground ? "Disable" : "Enable"; - UseBackdropAnyway.Content = Settings.Default.UseBackdropAnyway ? "Use Solid Color" : "Enable Anyway"; - Systray.IsChecked = Settings.Default.UseSystemTray; - DevTools.Content = Settings.Default.EnableDevTools ? "Disable" : "Enable"; - ModeAwareCSS.IsChecked = Settings.Default.ModeAwareCSS; + Backdrop.SelectedItem = Enum.Parse(typeof(BackdropType), Settings.Default.BackdropType); + ReplaceBackgroundToggle.Content = Setting.ReplaceDiscordBackground ? "Disable" : "Enable"; + UseBackdropAnyway.Content = Setting.UseBackdropAnyway ? "Use Solid Color" : "Enable Anyway"; + Systray.IsChecked = Setting.UseSystemTray; + DevTools.Content = Setting.EnableDevTools ? "Disable" : "Enable"; + ModeAwareCSS.IsChecked = Setting.ModeAwareCSS; RequiresReload = false; } }; Backdrop.SelectionChanged += (_, _) => { - Settings.Default.BackdropType = Backdrop.SelectedItem.ToString(); - Settings.Default.Save(); + Setting.BackdropType = Backdrop.SelectedItem.ToString(); + Setting.Save(); OnSettingsChanged?.Invoke(); }; ReplaceBackgroundToggle.Click += (_, _) => { - bool newValue = !Settings.Default.ReplaceDiscordBackground; + bool newValue = !Setting.ReplaceDiscordBackground; if (newValue) { if (MessageBox.Show( @@ -55,9 +98,9 @@ public SettingsDialog() != MessageBoxResult.Yes) return; } - Settings.Default.ReplaceDiscordBackground = newValue; + Setting.ReplaceDiscordBackground = newValue; ReplaceBackgroundToggle.Content = newValue ? "Disable" : "Enable"; - Settings.Default.Save(); + Setting.Save(); OnSettingsChanged?.Invoke(); RequiresReload = true; }; @@ -79,9 +122,9 @@ public SettingsDialog() != MessageBoxResult.Yes) return; } - Settings.Default.EnableDevTools = newValue; + Setting.EnableDevTools = newValue; DevTools.Content = newValue ? "Disable" : "Enable"; - Settings.Default.Save(); + Setting.Save(); OnSettingsChanged?.Invoke(); RequiresReload = true; }; @@ -100,9 +143,9 @@ public SettingsDialog() != MessageBoxResult.Yes) return; } - Settings.Default.UseBackdropAnyway = newValue; + Setting.UseBackdropAnyway = newValue; UseBackdropAnyway.Content = newValue ? "Use Solid Color" : "Enable Anyway"; - Settings.Default.Save(); + Setting.Save(); OnSettingsChanged?.Invoke(); RequiresReload = true; }; @@ -122,20 +165,19 @@ private void OpenAppFolder(object sender, RoutedEventArgs e) private void SystrayToggled(object sender, RoutedEventArgs e) { - Settings.Default.UseSystemTray = Systray.IsChecked ?? false; - Settings.Default.Save(); + Setting.UseSystemTray = Systray.IsChecked ?? false; + Setting.Save(); } private void ModeAwareCSSToggled(object sender, RoutedEventArgs e) { - Settings.Default.ModeAwareCSS = ModeAwareCSS.IsChecked ?? false; - Settings.Default.Save(); + Setting.ModeAwareCSS = ModeAwareCSS.IsChecked ?? false; + Setting.Save(); RequiresReload = true; } private void ReloadCSS(object sender, RoutedEventArgs e) { -#if DEBUG -#else +#if !DEBUG MainWindow.DefinedCSS = System.IO.File.ReadAllText("./The CSS.css"); RequiresReload = true; #endif diff --git a/Mica Discord.sln b/Mica Discord.sln index 24b8216..66d050d 100644 --- a/Mica Discord.sln +++ b/Mica Discord.sln @@ -5,6 +5,8 @@ VisualStudioVersion = 17.1.31911.260 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mica Discord WPF", "Mica Discord WPF\Mica Discord WPF.csproj", "{335147AD-1414-4847-99A8-C11A142CED09}" EndProject +Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "Mica Discord Packager", "Mica Discord Packager\Mica Discord Packager.wapproj", "{C471A8B0-E899-420D-A4A0-44EA4A2540FD}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -35,150 +37,40 @@ Global {335147AD-1414-4847-99A8-C11A142CED09}.Release|ARM.Build.0 = Release|Any CPU {335147AD-1414-4847-99A8-C11A142CED09}.Release|ARM64.ActiveCfg = Release|Any CPU {335147AD-1414-4847-99A8-C11A142CED09}.Release|ARM64.Build.0 = Release|Any CPU - {335147AD-1414-4847-99A8-C11A142CED09}.Release|x64.ActiveCfg = Release|Any CPU - {335147AD-1414-4847-99A8-C11A142CED09}.Release|x64.Build.0 = Release|Any CPU + {335147AD-1414-4847-99A8-C11A142CED09}.Release|x64.ActiveCfg = Release|x64 + {335147AD-1414-4847-99A8-C11A142CED09}.Release|x64.Build.0 = Release|x64 {335147AD-1414-4847-99A8-C11A142CED09}.Release|x86.ActiveCfg = Release|Any CPU {335147AD-1414-4847-99A8-C11A142CED09}.Release|x86.Build.0 = Release|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Debug|ARM.ActiveCfg = Debug|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Debug|ARM.Build.0 = Debug|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Debug|ARM64.ActiveCfg = Debug|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Debug|ARM64.Build.0 = Debug|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Debug|x64.ActiveCfg = Debug|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Debug|x64.Build.0 = Debug|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Debug|x86.ActiveCfg = Debug|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Debug|x86.Build.0 = Debug|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Release|Any CPU.Build.0 = Release|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Release|ARM.ActiveCfg = Release|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Release|ARM.Build.0 = Release|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Release|ARM64.ActiveCfg = Release|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Release|ARM64.Build.0 = Release|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Release|x64.ActiveCfg = Release|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Release|x64.Build.0 = Release|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Release|x86.ActiveCfg = Release|Any CPU - {2C2200E9-1251-499D-A69A-66D7DB1F96B8}.Release|x86.Build.0 = Release|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Debug|ARM.ActiveCfg = Debug|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Debug|ARM.Build.0 = Debug|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Debug|ARM64.ActiveCfg = Debug|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Debug|ARM64.Build.0 = Debug|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Debug|x64.ActiveCfg = Debug|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Debug|x64.Build.0 = Debug|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Debug|x86.ActiveCfg = Debug|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Debug|x86.Build.0 = Debug|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Release|Any CPU.Build.0 = Release|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Release|ARM.ActiveCfg = Release|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Release|ARM.Build.0 = Release|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Release|ARM64.ActiveCfg = Release|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Release|ARM64.Build.0 = Release|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Release|x64.ActiveCfg = Release|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Release|x64.Build.0 = Release|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Release|x86.ActiveCfg = Release|Any CPU - {753FAE0B-9C6B-4AB3-A079-37AB4965D9B7}.Release|x86.Build.0 = Release|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Debug|ARM.ActiveCfg = Debug|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Debug|ARM.Build.0 = Debug|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Debug|ARM64.ActiveCfg = Debug|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Debug|ARM64.Build.0 = Debug|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Debug|x64.ActiveCfg = Debug|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Debug|x64.Build.0 = Debug|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Debug|x86.ActiveCfg = Debug|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Debug|x86.Build.0 = Debug|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Release|Any CPU.Build.0 = Release|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Release|ARM.ActiveCfg = Release|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Release|ARM.Build.0 = Release|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Release|ARM64.ActiveCfg = Release|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Release|ARM64.Build.0 = Release|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Release|x64.ActiveCfg = Release|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Release|x64.Build.0 = Release|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Release|x86.ActiveCfg = Release|Any CPU - {E3617B44-9CDC-4450-8E5C-994B330987FF}.Release|x86.Build.0 = Release|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Debug|ARM.ActiveCfg = Debug|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Debug|ARM.Build.0 = Debug|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Debug|ARM64.ActiveCfg = Debug|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Debug|ARM64.Build.0 = Debug|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Debug|x64.ActiveCfg = Debug|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Debug|x64.Build.0 = Debug|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Debug|x86.ActiveCfg = Debug|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Debug|x86.Build.0 = Debug|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Release|Any CPU.Build.0 = Release|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Release|ARM.ActiveCfg = Release|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Release|ARM.Build.0 = Release|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Release|ARM64.ActiveCfg = Release|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Release|ARM64.Build.0 = Release|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Release|x64.ActiveCfg = Release|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Release|x64.Build.0 = Release|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Release|x86.ActiveCfg = Release|Any CPU - {7BA273EE-7DF1-4888-850E-01EE0177ADFD}.Release|x86.Build.0 = Release|Any CPU - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Debug|Any CPU.ActiveCfg = Debug|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Debug|Any CPU.Build.0 = Debug|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Debug|Any CPU.Deploy.0 = Debug|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Debug|ARM.ActiveCfg = Debug|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Debug|ARM.Build.0 = Debug|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Debug|ARM.Deploy.0 = Debug|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Debug|ARM64.ActiveCfg = Debug|arm64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Debug|ARM64.Build.0 = Debug|arm64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Debug|ARM64.Deploy.0 = Debug|arm64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Debug|x64.ActiveCfg = Debug|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Debug|x64.Build.0 = Debug|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Debug|x64.Deploy.0 = Debug|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Debug|x86.ActiveCfg = Debug|x86 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Debug|x86.Build.0 = Debug|x86 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Debug|x86.Deploy.0 = Debug|x86 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Release|Any CPU.ActiveCfg = Release|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Release|Any CPU.Build.0 = Release|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Release|Any CPU.Deploy.0 = Release|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Release|ARM.ActiveCfg = Release|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Release|ARM.Build.0 = Release|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Release|ARM.Deploy.0 = Release|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Release|ARM64.ActiveCfg = Release|arm64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Release|ARM64.Build.0 = Release|arm64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Release|ARM64.Deploy.0 = Release|arm64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Release|x64.ActiveCfg = Release|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Release|x64.Build.0 = Release|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Release|x64.Deploy.0 = Release|x64 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Release|x86.ActiveCfg = Release|x86 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Release|x86.Build.0 = Release|x86 - {CE46DAFE-2233-4B9F-B921-CC78ACFF5842}.Release|x86.Deploy.0 = Release|x86 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {349A5302-BF09-4552-8792-9E1966D47F7A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {349A5302-BF09-4552-8792-9E1966D47F7A}.Debug|Any CPU.Deploy.0 = Debug|Any CPU - {349A5302-BF09-4552-8792-9E1966D47F7A}.Debug|ARM.ActiveCfg = Debug|ARM - {349A5302-BF09-4552-8792-9E1966D47F7A}.Debug|ARM.Build.0 = Debug|ARM - {349A5302-BF09-4552-8792-9E1966D47F7A}.Debug|ARM.Deploy.0 = Debug|ARM - {349A5302-BF09-4552-8792-9E1966D47F7A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Debug|ARM64.Build.0 = Debug|ARM64 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Debug|ARM64.Deploy.0 = Debug|ARM64 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Debug|x64.ActiveCfg = Debug|x64 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Debug|x64.Build.0 = Debug|x64 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Debug|x64.Deploy.0 = Debug|x64 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Debug|x86.ActiveCfg = Debug|x86 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Debug|x86.Build.0 = Debug|x86 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Debug|x86.Deploy.0 = Debug|x86 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {349A5302-BF09-4552-8792-9E1966D47F7A}.Release|Any CPU.Build.0 = Release|Any CPU - {349A5302-BF09-4552-8792-9E1966D47F7A}.Release|Any CPU.Deploy.0 = Release|Any CPU - {349A5302-BF09-4552-8792-9E1966D47F7A}.Release|ARM.ActiveCfg = Release|ARM - {349A5302-BF09-4552-8792-9E1966D47F7A}.Release|ARM.Build.0 = Release|ARM - {349A5302-BF09-4552-8792-9E1966D47F7A}.Release|ARM.Deploy.0 = Release|ARM - {349A5302-BF09-4552-8792-9E1966D47F7A}.Release|ARM64.ActiveCfg = Release|ARM64 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Release|ARM64.Build.0 = Release|ARM64 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Release|ARM64.Deploy.0 = Release|ARM64 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Release|x64.ActiveCfg = Release|x64 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Release|x64.Build.0 = Release|x64 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Release|x64.Deploy.0 = Release|x64 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Release|x86.ActiveCfg = Release|x86 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Release|x86.Build.0 = Release|x86 - {349A5302-BF09-4552-8792-9E1966D47F7A}.Release|x86.Deploy.0 = Release|x86 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Debug|ARM.ActiveCfg = Debug|ARM + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Debug|ARM.Build.0 = Debug|ARM + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Debug|ARM.Deploy.0 = Debug|ARM + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Debug|ARM64.Build.0 = Debug|ARM64 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Debug|x64.ActiveCfg = Debug|x64 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Debug|x64.Build.0 = Debug|x64 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Debug|x64.Deploy.0 = Debug|x64 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Debug|x86.ActiveCfg = Debug|x86 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Debug|x86.Build.0 = Debug|x86 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Debug|x86.Deploy.0 = Debug|x86 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Release|Any CPU.Build.0 = Release|Any CPU + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Release|Any CPU.Deploy.0 = Release|Any CPU + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Release|ARM.ActiveCfg = Release|ARM + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Release|ARM.Build.0 = Release|ARM + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Release|ARM.Deploy.0 = Release|ARM + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Release|ARM64.ActiveCfg = Release|ARM64 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Release|ARM64.Build.0 = Release|ARM64 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Release|ARM64.Deploy.0 = Release|ARM64 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Release|x64.ActiveCfg = Release|x64 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Release|x64.Build.0 = Release|x64 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Release|x64.Deploy.0 = Release|x64 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Release|x86.ActiveCfg = Release|x86 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Release|x86.Build.0 = Release|x86 + {C471A8B0-E899-420D-A4A0-44EA4A2540FD}.Release|x86.Deploy.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE