diff --git a/.gitignore b/.gitignore index a925f6b2..5ab4a209 100644 --- a/.gitignore +++ b/.gitignore @@ -116,3 +116,5 @@ UpgradeLog*.XML .idea/ .env SpotifyAPI.Web.Tests/UtilTests/Test.cs + +Properties/launchSettings.json diff --git a/SpotifyAPI.Web.Examples/CLI.CustomHTML/CLI.CustomHTML.csproj b/SpotifyAPI.Web.Examples/Example.CLI.CustomHTML/Example.CLI.CustomHTML.csproj similarity index 100% rename from SpotifyAPI.Web.Examples/CLI.CustomHTML/CLI.CustomHTML.csproj rename to SpotifyAPI.Web.Examples/Example.CLI.CustomHTML/Example.CLI.CustomHTML.csproj diff --git a/SpotifyAPI.Web.Examples/CLI.CustomHTML/Program.cs b/SpotifyAPI.Web.Examples/Example.CLI.CustomHTML/Program.cs similarity index 96% rename from SpotifyAPI.Web.Examples/CLI.CustomHTML/Program.cs rename to SpotifyAPI.Web.Examples/Example.CLI.CustomHTML/Program.cs index fed15b9c..ad9d189c 100644 --- a/SpotifyAPI.Web.Examples/CLI.CustomHTML/Program.cs +++ b/SpotifyAPI.Web.Examples/Example.CLI.CustomHTML/Program.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using System; using System.Collections.Generic; using System.Threading.Tasks; @@ -6,7 +6,7 @@ using SpotifyAPI.Web; using SpotifyAPI.Web.Auth; using static SpotifyAPI.Web.Scopes; -namespace CLI.CustomHTML +namespace Example.CLI.CustomHTML { public class Program { diff --git a/SpotifyAPI.Web.Examples/Example.CLI.CustomHTML/Properties/launchSettings.json b/SpotifyAPI.Web.Examples/Example.CLI.CustomHTML/Properties/launchSettings.json new file mode 100644 index 00000000..c4ef31e5 --- /dev/null +++ b/SpotifyAPI.Web.Examples/Example.CLI.CustomHTML/Properties/launchSettings.json @@ -0,0 +1,11 @@ +{ + "profiles": { + "Example.CLI.CustomHTML": { + "commandName": "Project", + "environmentVariables": { + "SPOTIFY_CLIENT_ID": "Value", + "SPOTIFY_CLIENT_SECRET": "Value" + } + } + } +} \ No newline at end of file diff --git a/SpotifyAPI.Web.Examples/CLI.CustomHTML/Resources/custom_site/index.html b/SpotifyAPI.Web.Examples/Example.CLI.CustomHTML/Resources/custom_site/index.html similarity index 100% rename from SpotifyAPI.Web.Examples/CLI.CustomHTML/Resources/custom_site/index.html rename to SpotifyAPI.Web.Examples/Example.CLI.CustomHTML/Resources/custom_site/index.html diff --git a/SpotifyAPI.Web.Examples/CLI.PersistentConfig/.gitignore b/SpotifyAPI.Web.Examples/Example.CLI.PersistentConfig/.gitignore similarity index 100% rename from SpotifyAPI.Web.Examples/CLI.PersistentConfig/.gitignore rename to SpotifyAPI.Web.Examples/Example.CLI.PersistentConfig/.gitignore diff --git a/SpotifyAPI.Web.Examples/CLI.PersistentConfig/CLI.PersistentConfig.csproj b/SpotifyAPI.Web.Examples/Example.CLI.PersistentConfig/Example.CLI.PersistentConfig.csproj similarity index 100% rename from SpotifyAPI.Web.Examples/CLI.PersistentConfig/CLI.PersistentConfig.csproj rename to SpotifyAPI.Web.Examples/Example.CLI.PersistentConfig/Example.CLI.PersistentConfig.csproj diff --git a/SpotifyAPI.Web.Examples/CLI.PersistentConfig/Program.cs b/SpotifyAPI.Web.Examples/Example.CLI.PersistentConfig/Program.cs similarity index 97% rename from SpotifyAPI.Web.Examples/CLI.PersistentConfig/Program.cs rename to SpotifyAPI.Web.Examples/Example.CLI.PersistentConfig/Program.cs index 77d257ee..136cef0c 100644 --- a/SpotifyAPI.Web.Examples/CLI.PersistentConfig/Program.cs +++ b/SpotifyAPI.Web.Examples/Example.CLI.PersistentConfig/Program.cs @@ -1,4 +1,4 @@ -using System.Diagnostics; +using System.Diagnostics; using System.IO; using System.Threading.Tasks; using System; @@ -9,7 +9,7 @@ using System.Collections.Generic; using Newtonsoft.Json; using static SpotifyAPI.Web.Scopes; -namespace CLI.PersistentConfig +namespace Example.CLI.PersistentConfig { /// /// This is a basic example how to get user access using the Auth package and a CLI Program diff --git a/SpotifyAPI.Web.Examples/Example.UWP/App.xaml b/SpotifyAPI.Web.Examples/Example.UWP/App.xaml new file mode 100644 index 00000000..3cb91fc1 --- /dev/null +++ b/SpotifyAPI.Web.Examples/Example.UWP/App.xaml @@ -0,0 +1,7 @@ + + + diff --git a/SpotifyAPI.Web.Examples/Example.UWP/App.xaml.cs b/SpotifyAPI.Web.Examples/Example.UWP/App.xaml.cs new file mode 100644 index 00000000..0b2017be --- /dev/null +++ b/SpotifyAPI.Web.Examples/Example.UWP/App.xaml.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.ApplicationModel; +using Windows.ApplicationModel.Activation; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Navigation; + +namespace Example.UWP +{ + /// + /// Provides application-specific behavior to supplement the default Application class. + /// + sealed partial class App : Application + { + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + this.Suspending += OnSuspending; + } + + /// + /// Invoked when the application is launched normally by the end user. Other entry points + /// will be used such as when the application is launched to open a specific file. + /// + /// Details about the launch request and process. + protected override void OnLaunched(LaunchActivatedEventArgs e) + { + Frame rootFrame = Window.Current.Content as Frame; + + // Do not repeat app initialization when the Window already has content, + // just ensure that the window is active + if (rootFrame == null) + { + // Create a Frame to act as the navigation context and navigate to the first page + rootFrame = new Frame(); + + rootFrame.NavigationFailed += OnNavigationFailed; + + if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) + { + //TODO: Load state from previously suspended application + } + + // Place the frame in the current Window + Window.Current.Content = rootFrame; + } + + if (e.PrelaunchActivated == false) + { + if (rootFrame.Content == null) + { + // When the navigation stack isn't restored navigate to the first page, + // configuring the new page by passing required information as a navigation + // parameter + rootFrame.Navigate(typeof(MainPage), e.Arguments); + } + // Ensure the current window is active + Window.Current.Activate(); + } + } + + /// + /// Invoked when Navigation to a certain page fails + /// + /// The Frame which failed navigation + /// Details about the navigation failure + void OnNavigationFailed(object sender, NavigationFailedEventArgs e) + { + throw new Exception("Failed to load Page " + e.SourcePageType.FullName); + } + + /// + /// Invoked when application execution is being suspended. Application state is saved + /// without knowing whether the application will be terminated or resumed with the contents + /// of memory still intact. + /// + /// The source of the suspend request. + /// Details about the suspend request. + private void OnSuspending(object sender, SuspendingEventArgs e) + { + var deferral = e.SuspendingOperation.GetDeferral(); + //TODO: Save application state and stop any background activity + deferral.Complete(); + } + } +} diff --git a/SpotifyAPI.Web.Examples/Example.UWP/Assets/LockScreenLogo.scale-200.png b/SpotifyAPI.Web.Examples/Example.UWP/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 00000000..735f57ad Binary files /dev/null and b/SpotifyAPI.Web.Examples/Example.UWP/Assets/LockScreenLogo.scale-200.png differ diff --git a/SpotifyAPI.Web.Examples/Example.UWP/Assets/SplashScreen.scale-200.png b/SpotifyAPI.Web.Examples/Example.UWP/Assets/SplashScreen.scale-200.png new file mode 100644 index 00000000..023e7f1f Binary files /dev/null and b/SpotifyAPI.Web.Examples/Example.UWP/Assets/SplashScreen.scale-200.png differ diff --git a/SpotifyAPI.Web.Examples/Example.UWP/Assets/Square150x150Logo.scale-200.png b/SpotifyAPI.Web.Examples/Example.UWP/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 00000000..af49fec1 Binary files /dev/null and b/SpotifyAPI.Web.Examples/Example.UWP/Assets/Square150x150Logo.scale-200.png differ diff --git a/SpotifyAPI.Web.Examples/Example.UWP/Assets/Square44x44Logo.scale-200.png b/SpotifyAPI.Web.Examples/Example.UWP/Assets/Square44x44Logo.scale-200.png new file mode 100644 index 00000000..ce342a2e Binary files /dev/null and b/SpotifyAPI.Web.Examples/Example.UWP/Assets/Square44x44Logo.scale-200.png differ diff --git a/SpotifyAPI.Web.Examples/Example.UWP/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/SpotifyAPI.Web.Examples/Example.UWP/Assets/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 00000000..f6c02ce9 Binary files /dev/null and b/SpotifyAPI.Web.Examples/Example.UWP/Assets/Square44x44Logo.targetsize-24_altform-unplated.png differ diff --git a/SpotifyAPI.Web.Examples/Example.UWP/Assets/StoreLogo.png b/SpotifyAPI.Web.Examples/Example.UWP/Assets/StoreLogo.png new file mode 100644 index 00000000..7385b56c Binary files /dev/null and b/SpotifyAPI.Web.Examples/Example.UWP/Assets/StoreLogo.png differ diff --git a/SpotifyAPI.Web.Examples/Example.UWP/Assets/Wide310x150Logo.scale-200.png b/SpotifyAPI.Web.Examples/Example.UWP/Assets/Wide310x150Logo.scale-200.png new file mode 100644 index 00000000..288995b3 Binary files /dev/null and b/SpotifyAPI.Web.Examples/Example.UWP/Assets/Wide310x150Logo.scale-200.png differ diff --git a/SpotifyAPI.Web.Examples/Example.UWP/Example.UWP.csproj b/SpotifyAPI.Web.Examples/Example.UWP/Example.UWP.csproj new file mode 100644 index 00000000..8db0e9cc --- /dev/null +++ b/SpotifyAPI.Web.Examples/Example.UWP/Example.UWP.csproj @@ -0,0 +1,168 @@ + + + + + Debug + x86 + {8968B88F-3A6B-4012-8449-B502C7CD658A} + AppContainerExe + Properties + UWP + UWP + en-US + UAP + 10.0.18362.0 + 10.0.17763.0 + 14 + 512 + {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + true + false + + + true + bin\x86\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + x86 + false + prompt + true + + + bin\x86\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + x86 + false + prompt + true + true + + + true + bin\ARM\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + ARM + false + prompt + true + + + bin\ARM\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + ARM + false + prompt + true + true + + + true + bin\ARM64\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + ARM64 + false + prompt + true + true + + + bin\ARM64\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + ARM64 + false + prompt + true + true + + + true + bin\x64\Debug\ + DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP + ;2008 + full + x64 + false + prompt + true + + + bin\x64\Release\ + TRACE;NETFX_CORE;WINDOWS_UWP + true + ;2008 + pdbonly + x64 + false + prompt + true + true + + + PackageReference + + + + App.xaml + + + MainPage.xaml + + + + + + Designer + + + + + + + + + + + + + + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + + + + + 6.2.9 + + + + 14.0 + + + + \ No newline at end of file diff --git a/SpotifyAPI.Web.Examples/Example.UWP/MainPage.xaml b/SpotifyAPI.Web.Examples/Example.UWP/MainPage.xaml new file mode 100644 index 00000000..84656e1e --- /dev/null +++ b/SpotifyAPI.Web.Examples/Example.UWP/MainPage.xaml @@ -0,0 +1,14 @@ + + + + + + diff --git a/SpotifyAPI.Web.Examples/Example.UWP/MainPage.xaml.cs b/SpotifyAPI.Web.Examples/Example.UWP/MainPage.xaml.cs new file mode 100644 index 00000000..e2a9b8c9 --- /dev/null +++ b/SpotifyAPI.Web.Examples/Example.UWP/MainPage.xaml.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.InteropServices.WindowsRuntime; +using Windows.Foundation; +using Windows.Foundation.Collections; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; +using Windows.UI.Xaml.Controls.Primitives; +using Windows.UI.Xaml.Data; +using Windows.UI.Xaml.Input; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Navigation; + +// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 + +namespace Example.UWP +{ + /// + /// An empty page that can be used on its own or navigated to within a Frame. + /// + public sealed partial class MainPage : Page + { + public MainPage() + { + this.InitializeComponent(); + } + } +} diff --git a/SpotifyAPI.Web.Examples/Example.UWP/Package.appxmanifest b/SpotifyAPI.Web.Examples/Example.UWP/Package.appxmanifest new file mode 100644 index 00000000..d0baed70 --- /dev/null +++ b/SpotifyAPI.Web.Examples/Example.UWP/Package.appxmanifest @@ -0,0 +1,49 @@ + + + + + + + + + + UWP + jonas + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SpotifyAPI.Web.Examples/Example.UWP/Properties/AssemblyInfo.cs b/SpotifyAPI.Web.Examples/Example.UWP/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..caff9eed --- /dev/null +++ b/SpotifyAPI.Web.Examples/Example.UWP/Properties/AssemblyInfo.cs @@ -0,0 +1,29 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("UWP")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("UWP")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: ComVisible(false)] \ No newline at end of file diff --git a/SpotifyAPI.Web.Examples/Example.UWP/Properties/Default.rd.xml b/SpotifyAPI.Web.Examples/Example.UWP/Properties/Default.rd.xml new file mode 100644 index 00000000..af00722c --- /dev/null +++ b/SpotifyAPI.Web.Examples/Example.UWP/Properties/Default.rd.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/SpotifyAPI.sln b/SpotifyAPI.sln index 1c06b457..b3b7c618 100644 --- a/SpotifyAPI.sln +++ b/SpotifyAPI.sln @@ -11,41 +11,157 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SpotifyAPI.Web.Auth", "Spot EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SpotifyAPI.Web.Examples", "SpotifyAPI.Web.Examples", "{48A7DE65-29BB-409C-AC45-77F6586C0B15}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CLI.PersistentConfig", "SpotifyAPI.Web.Examples\CLI.PersistentConfig\CLI.PersistentConfig.csproj", "{F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Example.CLI.PersistentConfig", "SpotifyAPI.Web.Examples\Example.CLI.PersistentConfig\Example.CLI.PersistentConfig.csproj", "{F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CLI.CustomHTML", "SpotifyAPI.Web.Examples\CLI.CustomHTML\CLI.CustomHTML.csproj", "{941AB88D-B3A9-407F-BF88-BFE14B401687}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Example.CLI.CustomHTML", "SpotifyAPI.Web.Examples\Example.CLI.CustomHTML\Example.CLI.CustomHTML.csproj", "{941AB88D-B3A9-407F-BF88-BFE14B401687}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{68E44B78-0896-413C-99AC-80D58F35D5B1}" ProjectSection(SolutionItems) = preProject .editorconfig = .editorconfig EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Example.UWP", "SpotifyAPI.Web.Examples\Example.UWP\Example.UWP.csproj", "{8968B88F-3A6B-4012-8449-B502C7CD658A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU + Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Debug|ARM.ActiveCfg = Debug|Any CPU + {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Debug|ARM.Build.0 = Debug|Any CPU + {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Debug|ARM64.Build.0 = Debug|Any CPU + {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Debug|x64.ActiveCfg = Debug|Any CPU + {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Debug|x64.Build.0 = Debug|Any CPU + {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Debug|x86.ActiveCfg = Debug|Any CPU + {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Debug|x86.Build.0 = Debug|Any CPU {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Release|Any CPU.ActiveCfg = Release|Any CPU {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Release|Any CPU.Build.0 = Release|Any CPU + {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Release|ARM.ActiveCfg = Release|Any CPU + {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Release|ARM.Build.0 = Release|Any CPU + {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Release|ARM64.ActiveCfg = Release|Any CPU + {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Release|ARM64.Build.0 = Release|Any CPU + {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Release|x64.ActiveCfg = Release|Any CPU + {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Release|x64.Build.0 = Release|Any CPU + {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Release|x86.ActiveCfg = Release|Any CPU + {EC8A93BA-27C4-4642-B7A0-11B809C35BE4}.Release|x86.Build.0 = Release|Any CPU {47FD780C-47B2-4634-9BB4-83C660101FAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {47FD780C-47B2-4634-9BB4-83C660101FAE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {47FD780C-47B2-4634-9BB4-83C660101FAE}.Debug|ARM.ActiveCfg = Debug|Any CPU + {47FD780C-47B2-4634-9BB4-83C660101FAE}.Debug|ARM.Build.0 = Debug|Any CPU + {47FD780C-47B2-4634-9BB4-83C660101FAE}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {47FD780C-47B2-4634-9BB4-83C660101FAE}.Debug|ARM64.Build.0 = Debug|Any CPU + {47FD780C-47B2-4634-9BB4-83C660101FAE}.Debug|x64.ActiveCfg = Debug|Any CPU + {47FD780C-47B2-4634-9BB4-83C660101FAE}.Debug|x64.Build.0 = Debug|Any CPU + {47FD780C-47B2-4634-9BB4-83C660101FAE}.Debug|x86.ActiveCfg = Debug|Any CPU + {47FD780C-47B2-4634-9BB4-83C660101FAE}.Debug|x86.Build.0 = Debug|Any CPU {47FD780C-47B2-4634-9BB4-83C660101FAE}.Release|Any CPU.ActiveCfg = Release|Any CPU {47FD780C-47B2-4634-9BB4-83C660101FAE}.Release|Any CPU.Build.0 = Release|Any CPU + {47FD780C-47B2-4634-9BB4-83C660101FAE}.Release|ARM.ActiveCfg = Release|Any CPU + {47FD780C-47B2-4634-9BB4-83C660101FAE}.Release|ARM.Build.0 = Release|Any CPU + {47FD780C-47B2-4634-9BB4-83C660101FAE}.Release|ARM64.ActiveCfg = Release|Any CPU + {47FD780C-47B2-4634-9BB4-83C660101FAE}.Release|ARM64.Build.0 = Release|Any CPU + {47FD780C-47B2-4634-9BB4-83C660101FAE}.Release|x64.ActiveCfg = Release|Any CPU + {47FD780C-47B2-4634-9BB4-83C660101FAE}.Release|x64.Build.0 = Release|Any CPU + {47FD780C-47B2-4634-9BB4-83C660101FAE}.Release|x86.ActiveCfg = Release|Any CPU + {47FD780C-47B2-4634-9BB4-83C660101FAE}.Release|x86.Build.0 = Release|Any CPU {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Debug|ARM.ActiveCfg = Debug|Any CPU + {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Debug|ARM.Build.0 = Debug|Any CPU + {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Debug|ARM64.Build.0 = Debug|Any CPU + {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Debug|x64.ActiveCfg = Debug|Any CPU + {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Debug|x64.Build.0 = Debug|Any CPU + {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Debug|x86.ActiveCfg = Debug|Any CPU + {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Debug|x86.Build.0 = Debug|Any CPU {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Release|Any CPU.ActiveCfg = Release|Any CPU {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Release|Any CPU.Build.0 = Release|Any CPU + {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Release|ARM.ActiveCfg = Release|Any CPU + {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Release|ARM.Build.0 = Release|Any CPU + {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Release|ARM64.ActiveCfg = Release|Any CPU + {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Release|ARM64.Build.0 = Release|Any CPU + {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Release|x64.ActiveCfg = Release|Any CPU + {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Release|x64.Build.0 = Release|Any CPU + {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Release|x86.ActiveCfg = Release|Any CPU + {400A3787-FDBE-4A4C-9DDD-AAEB3DCE1DF5}.Release|x86.Build.0 = Release|Any CPU {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Debug|ARM.ActiveCfg = Debug|Any CPU + {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Debug|ARM.Build.0 = Debug|Any CPU + {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Debug|ARM64.Build.0 = Debug|Any CPU + {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Debug|x64.ActiveCfg = Debug|Any CPU + {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Debug|x64.Build.0 = Debug|Any CPU + {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Debug|x86.ActiveCfg = Debug|Any CPU + {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Debug|x86.Build.0 = Debug|Any CPU {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Release|Any CPU.ActiveCfg = Release|Any CPU {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Release|Any CPU.Build.0 = Release|Any CPU + {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Release|ARM.ActiveCfg = Release|Any CPU + {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Release|ARM.Build.0 = Release|Any CPU + {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Release|ARM64.ActiveCfg = Release|Any CPU + {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Release|ARM64.Build.0 = Release|Any CPU + {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Release|x64.ActiveCfg = Release|Any CPU + {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Release|x64.Build.0 = Release|Any CPU + {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Release|x86.ActiveCfg = Release|Any CPU + {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A}.Release|x86.Build.0 = Release|Any CPU {941AB88D-B3A9-407F-BF88-BFE14B401687}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {941AB88D-B3A9-407F-BF88-BFE14B401687}.Debug|Any CPU.Build.0 = Debug|Any CPU + {941AB88D-B3A9-407F-BF88-BFE14B401687}.Debug|ARM.ActiveCfg = Debug|Any CPU + {941AB88D-B3A9-407F-BF88-BFE14B401687}.Debug|ARM.Build.0 = Debug|Any CPU + {941AB88D-B3A9-407F-BF88-BFE14B401687}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {941AB88D-B3A9-407F-BF88-BFE14B401687}.Debug|ARM64.Build.0 = Debug|Any CPU + {941AB88D-B3A9-407F-BF88-BFE14B401687}.Debug|x64.ActiveCfg = Debug|Any CPU + {941AB88D-B3A9-407F-BF88-BFE14B401687}.Debug|x64.Build.0 = Debug|Any CPU + {941AB88D-B3A9-407F-BF88-BFE14B401687}.Debug|x86.ActiveCfg = Debug|Any CPU + {941AB88D-B3A9-407F-BF88-BFE14B401687}.Debug|x86.Build.0 = Debug|Any CPU {941AB88D-B3A9-407F-BF88-BFE14B401687}.Release|Any CPU.ActiveCfg = Release|Any CPU {941AB88D-B3A9-407F-BF88-BFE14B401687}.Release|Any CPU.Build.0 = Release|Any CPU + {941AB88D-B3A9-407F-BF88-BFE14B401687}.Release|ARM.ActiveCfg = Release|Any CPU + {941AB88D-B3A9-407F-BF88-BFE14B401687}.Release|ARM.Build.0 = Release|Any CPU + {941AB88D-B3A9-407F-BF88-BFE14B401687}.Release|ARM64.ActiveCfg = Release|Any CPU + {941AB88D-B3A9-407F-BF88-BFE14B401687}.Release|ARM64.Build.0 = Release|Any CPU + {941AB88D-B3A9-407F-BF88-BFE14B401687}.Release|x64.ActiveCfg = Release|Any CPU + {941AB88D-B3A9-407F-BF88-BFE14B401687}.Release|x64.Build.0 = Release|Any CPU + {941AB88D-B3A9-407F-BF88-BFE14B401687}.Release|x86.ActiveCfg = Release|Any CPU + {941AB88D-B3A9-407F-BF88-BFE14B401687}.Release|x86.Build.0 = Release|Any CPU + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Debug|Any CPU.ActiveCfg = Debug|x86 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Debug|ARM.ActiveCfg = Debug|ARM + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Debug|ARM.Build.0 = Debug|ARM + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Debug|ARM.Deploy.0 = Debug|ARM + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Debug|ARM64.Build.0 = Debug|ARM64 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Debug|x64.ActiveCfg = Debug|x64 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Debug|x64.Build.0 = Debug|x64 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Debug|x64.Deploy.0 = Debug|x64 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Debug|x86.ActiveCfg = Debug|x86 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Debug|x86.Build.0 = Debug|x86 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Debug|x86.Deploy.0 = Debug|x86 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Release|Any CPU.ActiveCfg = Release|x86 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Release|ARM.ActiveCfg = Release|ARM + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Release|ARM.Build.0 = Release|ARM + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Release|ARM.Deploy.0 = Release|ARM + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Release|ARM64.ActiveCfg = Release|ARM64 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Release|ARM64.Build.0 = Release|ARM64 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Release|ARM64.Deploy.0 = Release|ARM64 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Release|x64.ActiveCfg = Release|x64 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Release|x64.Build.0 = Release|x64 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Release|x64.Deploy.0 = Release|x64 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Release|x86.ActiveCfg = Release|x86 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Release|x86.Build.0 = Release|x86 + {8968B88F-3A6B-4012-8449-B502C7CD658A}.Release|x86.Deploy.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -53,6 +169,7 @@ Global GlobalSection(NestedProjects) = preSolution {F4ECE937-99F2-4C4F-9F5C-4AB875D9538A} = {48A7DE65-29BB-409C-AC45-77F6586C0B15} {941AB88D-B3A9-407F-BF88-BFE14B401687} = {48A7DE65-29BB-409C-AC45-77F6586C0B15} + {8968B88F-3A6B-4012-8449-B502C7CD658A} = {48A7DE65-29BB-409C-AC45-77F6586C0B15} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {097062B8-0E87-43C8-BD98-61843A68BE6D}