From 1fc89494ebe9d5867f1f9422f0a21c7a805c6bad Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Wed, 3 Feb 2021 11:54:52 -0800 Subject: [PATCH 01/59] WIP --- src/Simulation/CSharpGeneration/RewriteStep.fs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Simulation/CSharpGeneration/RewriteStep.fs b/src/Simulation/CSharpGeneration/RewriteStep.fs index 47e35baf0ca..1cb4f66d517 100644 --- a/src/Simulation/CSharpGeneration/RewriteStep.fs +++ b/src/Simulation/CSharpGeneration/RewriteStep.fs @@ -28,7 +28,7 @@ type Emitter() = member this.AssemblyConstants = upcast _AssemblyConstants member this.GeneratedDiagnostics = upcast _Diagnostics - member this.ImplementsPreconditionVerification = true + member this.ImplementsPreconditionVerification = false member this.ImplementsPostconditionVerification = false member this.ImplementsTransformation = true @@ -61,7 +61,7 @@ type Emitter() = if content <> null then CompilationLoader.GeneratedFile(source, dir, ".dll.g.cs", content) |> ignore if not compilation.EntryPoints.IsEmpty then - let callable = context.allCallables.[Seq.exactlyOne compilation.EntryPoints] + let callable = context.allCallables.[Seq.head compilation.EntryPoints] let content = EntryPoint.generate context callable CompilationLoader.GeneratedFile(callable.SourceFile, dir, ".EntryPoint.g.cs", content) |> ignore From 451f28bcd197b7b7c4e5b0d3cffa877601cc9560 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Thu, 11 Feb 2021 12:18:06 -0800 Subject: [PATCH 02/59] Removed type parameters for IEntryPoint interface. --- src/Simulation/EntryPointDriver/Azure.cs | 64 +++++++++---------- src/Simulation/EntryPointDriver/Driver.cs | 30 +++------ .../EntryPointDriver/IEntryPoint.cs | 36 ++++++----- src/Simulation/EntryPointDriver/Simulation.cs | 41 ++++++------ 4 files changed, 80 insertions(+), 91 deletions(-) diff --git a/src/Simulation/EntryPointDriver/Azure.cs b/src/Simulation/EntryPointDriver/Azure.cs index e94624f5602..e0393465e10 100644 --- a/src/Simulation/EntryPointDriver/Azure.cs +++ b/src/Simulation/EntryPointDriver/Azure.cs @@ -2,13 +2,13 @@ // Licensed under the MIT License. using System; -using System.CommandLine.Parsing; using System.Linq; using System.Threading.Tasks; using Microsoft.Azure.Quantum; -using Microsoft.Azure.Quantum.Exceptions; +using Microsoft.Azure.Quantum.Exceptions; using Microsoft.Quantum.Runtime; using Microsoft.Quantum.Simulation.Common.Exceptions; +using Microsoft.Quantum.Simulation.Core; using static Microsoft.Quantum.EntryPointDriver.Driver; namespace Microsoft.Quantum.EntryPointDriver @@ -16,19 +16,20 @@ namespace Microsoft.Quantum.EntryPointDriver /// /// Provides entry point submission to Azure Quantum. /// - internal static class Azure + public static class Azure { - /// - /// Submits the entry point to Azure Quantum. + /// + /// Submits the entry point to Azure Quantum. /// - /// The entry point. - /// The command-line parsing result. - /// The submission settings. /// The entry point's argument type. - /// The entry point's return type. + /// The entry point's return type. + /// The entry point. + /// The information about the entry point. + /// The input argument tuple to the entry point. + /// The submission settings. /// The exit code. - internal static async Task Submit( - IEntryPoint entryPoint, ParseResult parseResult, AzureSettings settings) + public static async Task Submit( + IEntryPoint entryPoint, EntryPointInfo info, TIn input, AzureSettings settings) { if (settings.Verbose) { @@ -44,28 +45,27 @@ internal static async Task Submit( return 1; } - var input = entryPoint.CreateArgument(parseResult); return settings.DryRun - ? Validate(machine, entryPoint, input) - : await SubmitJob(machine, entryPoint, input, settings); + ? Validate(machine, info, input) + : await SubmitJob(machine, info, input, settings); } - /// - /// Submits a job to Azure Quantum. + /// + /// Submits a job to Azure Quantum. /// - /// The quantum machine target. - /// The program entry point. - /// The program input. - /// The submission settings. /// The input type. /// The output type. + /// The quantum machine target. + /// The information about the entry point. + /// The input argument tuple to the entry point. + /// The submission settings. /// The exit code. private static async Task SubmitJob( - IQuantumMachine machine, IEntryPoint entryPoint, TIn input, AzureSettings settings) + IQuantumMachine machine, EntryPointInfo info, TIn input, AzureSettings settings) { try { - var job = await machine.SubmitAsync(entryPoint.Info, input, new SubmissionContext + var job = await machine.SubmitAsync(info, input, new SubmissionContext { FriendlyName = settings.JobName, Shots = settings.Shots @@ -90,18 +90,18 @@ private static async Task SubmitJob( } } - /// - /// Validates the program for the quantum machine target. + /// + /// Validates the program for the quantum machine target. /// - /// The quantum machine target. - /// The program entry point. - /// The program input. /// The input type. - /// The output type. + /// The output type. + /// The quantum machine target. + /// The information about the entry point. + /// The input argument tuple to the entry point. /// The exit code. - private static int Validate(IQuantumMachine machine, IEntryPoint entryPoint, TIn input) + private static int Validate(IQuantumMachine machine, EntryPointInfo info, TIn input) { - var (isValid, message) = machine.Validate(entryPoint.Info, input); + var (isValid, message) = machine.Validate(info, input); Console.WriteLine(isValid ? "✔️ The program is valid!" : "❌ The program is invalid."); if (!string.IsNullOrWhiteSpace(message)) { @@ -186,7 +186,7 @@ private sealed class SubmissionContext : IQuantumMachineSubmissionContext /// /// The information to show in the output after the job is submitted. /// - internal enum OutputFormat + public enum OutputFormat { /// /// Show a friendly message with a URI that can be used to see the job results. @@ -202,7 +202,7 @@ internal enum OutputFormat /// /// Settings for a submission to Azure Quantum. /// - internal sealed class AzureSettings + public sealed class AzureSettings { /// /// The subscription ID. diff --git a/src/Simulation/EntryPointDriver/Driver.cs b/src/Simulation/EntryPointDriver/Driver.cs index fa521c50b80..f21875f605d 100644 --- a/src/Simulation/EntryPointDriver/Driver.cs +++ b/src/Simulation/EntryPointDriver/Driver.cs @@ -13,18 +13,13 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -using Microsoft.Quantum.Simulation.Core; -using static Microsoft.Quantum.EntryPointDriver.Driver; namespace Microsoft.Quantum.EntryPointDriver { /// - /// The entry point driver is the entry point for the C# application that executes the Q# entry point. + /// The entry point driver is the entry point for the C# application that executes Q# entry points. /// - /// The entry point's callable type. - /// The entry point's argument type. - /// The entry point's return type. - public sealed class Driver where TCallable : AbstractCallable, ICallable + public sealed class Driver { /// /// The driver settings. @@ -34,7 +29,7 @@ public sealed class Driver where TCallable : AbstractCalla /// /// The entry point. /// - private readonly IEntryPoint entryPoint; + private readonly IEntryPoint entryPoint; /// /// The simulator option. @@ -51,7 +46,7 @@ public sealed class Driver where TCallable : AbstractCalla /// /// The driver settings. /// The entry point. - public Driver(DriverSettings settings, IEntryPoint entryPoint) + public Driver(DriverSettings settings, IEntryPoint entryPoint) { this.settings = settings; this.entryPoint = entryPoint; @@ -137,17 +132,16 @@ public async Task Run(string[] args) /// The command-line parsing result. /// The simulator to use. /// The exit code. - private async Task Simulate(ParseResult parseResult, string simulator) => - await Simulation.Simulate( - settings, entryPoint, parseResult, DefaultIfShadowed(SimulatorOption, simulator)); + private Task Simulate(ParseResult parseResult, string simulator) => + this.entryPoint.Simulate(parseResult, settings, DefaultIfShadowed(SimulatorOption, simulator)); /// /// Submits the entry point to Azure Quantum. /// /// The command-line parsing result. /// The Azure submission settings. - private async Task Submit(ParseResult parseResult, AzureSettings azureSettings) => - await Azure.Submit(entryPoint, parseResult, new AzureSettings + private Task Submit(ParseResult parseResult, AzureSettings azureSettings) => + this.entryPoint.Submit(parseResult, new AzureSettings { Subscription = azureSettings.Subscription, ResourceGroup = azureSettings.ResourceGroup, @@ -242,13 +236,7 @@ private void MarkOptionsAsMutuallyExclusive(Command command, string[] primaryAli return default; }); - } - - /// - /// Static members for . - /// - internal static class Driver - { + // TODO: Define the aliases as constants. /// diff --git a/src/Simulation/EntryPointDriver/IEntryPoint.cs b/src/Simulation/EntryPointDriver/IEntryPoint.cs index 1018fc10f89..66cfcae98bf 100644 --- a/src/Simulation/EntryPointDriver/IEntryPoint.cs +++ b/src/Simulation/EntryPointDriver/IEntryPoint.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.CommandLine; using System.CommandLine.Parsing; +using System.Threading.Tasks; using Microsoft.Quantum.Simulation.Core; namespace Microsoft.Quantum.EntryPointDriver @@ -16,9 +17,7 @@ namespace Microsoft.Quantum.EntryPointDriver /// Contains entry point properties needed by the command-line interface and allows the entry point to use /// command-line arguments. The implementation of this interface is code-generated. /// - /// The entry point's argument type. - /// The entry point's return type. - public interface IEntryPoint + public interface IEntryPoint { /// /// The summary from the entry point's documentation comment. @@ -38,12 +37,24 @@ public interface IEntryPoint /// /// The default execution target when to use when submitting the entry point to Azure Quantum. /// - string DefaultExecutionTarget { get; } - - /// - /// Additional information about the entry point. - /// - EntryPointInfo Info { get; } + string DefaultExecutionTarget { get; } + + /// + /// Submits the entry point to Azure Quantum. + /// + /// The command-line parsing result. + /// The submission settings. + /// The exit code. + Task Submit(ParseResult parseResult, AzureSettings settings); + + /// + /// + /// + /// The command-line parsing result. + /// The driver settings. + /// The simulator to use. + /// The exit code. + Task Simulate(ParseResult parseResult, DriverSettings settings, string simulator); /// /// Creates an instance of the default simulator if it is a custom simulator. @@ -53,12 +64,5 @@ public interface IEntryPoint /// Thrown if the default simulator is not a custom simulator. /// IOperationFactory CreateDefaultCustomSimulator(); - - /// - /// Creates the argument to the entry point based on the command-line parsing result. - /// - /// The command-line parsing result. - /// The argument to the entry point. - TIn CreateArgument(ParseResult parseResult); } } diff --git a/src/Simulation/EntryPointDriver/Simulation.cs b/src/Simulation/EntryPointDriver/Simulation.cs index 4e942364fe4..3cb54cc6865 100644 --- a/src/Simulation/EntryPointDriver/Simulation.cs +++ b/src/Simulation/EntryPointDriver/Simulation.cs @@ -2,12 +2,11 @@ // Licensed under the MIT License. using System; -using System.CommandLine.Parsing; using System.Linq; using System.Reflection; using System.Threading.Tasks; using Microsoft.Quantum.Simulation.Core; -using Microsoft.Quantum.Simulation.Simulators; +using Microsoft.Quantum.Simulation.Simulators; using static Microsoft.Quantum.EntryPointDriver.Driver; namespace Microsoft.Quantum.EntryPointDriver @@ -18,18 +17,18 @@ namespace Microsoft.Quantum.EntryPointDriver /// The entry point's callable type. /// The entry point's argument type. /// The entry point's return type. - internal static class Simulation where TCallable : AbstractCallable, ICallable + public static class Simulation where TCallable : AbstractCallable, ICallable { - /// - /// Simulates the entry point. - /// - /// The driver settings. - /// The entry point. - /// The command-line parsing result. - /// The simulator to use. + /// + /// Simulates the entry point. + /// + /// The entry point. + /// The input argument tuple to the entry point. + /// The driver settings. + /// The simulator to use. /// The exit code. - internal static async Task Simulate( - DriverSettings settings, IEntryPoint entryPoint, ParseResult parseResult, string simulator) + public static async Task Simulate( + IEntryPoint entryPoint, TIn input, DriverSettings settings, string simulator) { if (simulator == settings.ResourcesEstimatorName) { @@ -42,7 +41,7 @@ internal static async Task Simulate( var coreAssembly = Assembly.Load(coreAssemblyName.FullName); var resourcesEstimator = new ResourcesEstimator(coreAssembly); - await resourcesEstimator.Run(entryPoint.CreateArgument(parseResult)); + await resourcesEstimator.Run(input); Console.WriteLine(resourcesEstimator.ToTSV()); } else @@ -58,24 +57,22 @@ internal static async Task Simulate( DisplayCustomSimulatorError(simulator); return 1; } - await RunSimulator(entryPoint, parseResult, createSimulator); + await RunSimulator(input, createSimulator); } return 0; } - /// - /// Runs the entry point on a simulator and displays its return value. - /// - /// The entry point. - /// The command-line parsing result. + /// + /// Runs the entry point on a simulator and displays its return value. + /// + /// The input argument tuple to the entry point. /// A function that creates an instance of the simulator to use. - private static async Task RunSimulator( - IEntryPoint entryPoint, ParseResult parseResult, Func createSimulator) + private static async Task RunSimulator(TIn input, Func createSimulator) { var simulator = createSimulator(); try { - var value = await simulator.Run(entryPoint.CreateArgument(parseResult)); + var value = await simulator.Run(input); if (!(value is QVoid)) { Console.WriteLine(value); From 71abbfef0c24f3852f32705d3fb13860c6ddcbb9 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Sun, 14 Feb 2021 22:01:37 -0800 Subject: [PATCH 03/59] Allowed Diver to handle multiple entry points. --- src/Simulation/EntryPointDriver/Driver.cs | 501 ++++++++++-------- .../EntryPointDriver/IEntryPoint.cs | 37 +- 2 files changed, 308 insertions(+), 230 deletions(-) diff --git a/src/Simulation/EntryPointDriver/Driver.cs b/src/Simulation/EntryPointDriver/Driver.cs index f21875f605d..5d2abf52a4a 100644 --- a/src/Simulation/EntryPointDriver/Driver.cs +++ b/src/Simulation/EntryPointDriver/Driver.cs @@ -22,52 +22,121 @@ namespace Microsoft.Quantum.EntryPointDriver public sealed class Driver { /// - /// The driver settings. + /// The subscription option. /// - private readonly DriverSettings settings; + private static readonly OptionInfo SubscriptionOption = new OptionInfo( + ImmutableList.Create("--subscription"), "The subscription ID."); + + /// + /// The resource group option. + /// + private static readonly OptionInfo ResourceGroupOption = new OptionInfo( + ImmutableList.Create("--resource-group"), "The resource group name."); + + /// + /// The workspace option. + /// + private static readonly OptionInfo WorkspaceOption = new OptionInfo( + ImmutableList.Create("--workspace"), "The workspace name."); + + /// + /// The storage option. + /// + private static readonly OptionInfo StorageOption = new OptionInfo( + ImmutableList.Create("--storage"), default, "The storage account connection string."); + + /// + /// The AAD token option. + /// + private static readonly OptionInfo AadTokenOption = new OptionInfo( + ImmutableList.Create("--aad-token"), default, "The Azure Active Directory authentication token."); + + /// + /// The base URI option. + /// + private static readonly OptionInfo BaseUriOption = new OptionInfo( + ImmutableList.Create("--base-uri"), default, "The base URI of the Azure Quantum endpoint."); + + /// + /// The location to use with the default endpoint option. + /// + private static readonly OptionInfo LocationOption = new OptionInfo( + ImmutableList.Create("--location"), + default, + "The location to use with the default endpoint.", + validator: result => + { + var location = result.Tokens.SingleOrDefault()?.Value; + if (location == null) + { + return default; + } + + var normalizedLocation = AzureSettings.NormalizeLocation(location); + return Uri.CheckHostName(normalizedLocation) == UriHostNameType.Unknown ? + $"\"{location}\" is an invalid value for the --location option." : + default; + }); + + /// + /// The job name option. + /// + private static readonly OptionInfo JobNameOption = new OptionInfo( + ImmutableList.Create("--job-name"), default, "The name of the submitted job."); + + /// + /// The shots option. + /// + private static readonly OptionInfo ShotsOption = new OptionInfo( + ImmutableList.Create("--shots"), + 500, + "The number of times the program is executed on the target machine.", + validator: result => + int.TryParse(result.Tokens.SingleOrDefault()?.Value, out var value) && value <= 0 + ? "The number of shots must be a positive number." + : default); + + /// + /// The output option. + /// + private static readonly OptionInfo OutputOption = new OptionInfo( + ImmutableList.Create("--output"), + OutputFormat.FriendlyUri, + "The information to show in the output after the job is submitted."); + + /// + /// The dry run option. + /// + private static readonly OptionInfo DryRunOption = new OptionInfo( + ImmutableList.Create("--dry-run"), + false, + "Validate the program and options, but do not submit to Azure Quantum."); /// - /// The entry point. + /// The verbose option. /// - private readonly IEntryPoint entryPoint; + private static readonly OptionInfo VerboseOption = new OptionInfo( + ImmutableList.Create("--verbose"), false, "Show additional information about the submission."); /// - /// The simulator option. + /// The driver settings. /// - private OptionInfo SimulatorOption { get; } + private readonly DriverSettings settings; /// - /// The target option. + /// All the registered entry points of the program. /// - private OptionInfo TargetOption { get; } + private readonly IEnumerable entryPoints; /// /// Creates a new driver for the entry point. /// /// The driver settings. - /// The entry point. - public Driver(DriverSettings settings, IEntryPoint entryPoint) + /// The entry points. + public Driver(DriverSettings settings, IEnumerable entryPoints) { this.settings = settings; - this.entryPoint = entryPoint; - - SimulatorOption = new OptionInfo( - settings.SimulatorOptionAliases, - entryPoint.DefaultSimulatorName, - "The name of the simulator to use.", - suggestions: new[] - { - settings.QuantumSimulatorName, - settings.ToffoliSimulatorName, - settings.ResourcesEstimatorName, - entryPoint.DefaultSimulatorName - }); - - var targetAliases = ImmutableList.Create("--target"); - const string targetDescription = "The target device ID."; - TargetOption = string.IsNullOrWhiteSpace(entryPoint.DefaultExecutionTarget) - ? new OptionInfo(targetAliases, targetDescription) - : new OptionInfo(targetAliases, entryPoint.DefaultExecutionTarget, targetDescription); + this.entryPoints = entryPoints; } /// @@ -77,47 +146,19 @@ public Driver(DriverSettings settings, IEntryPoint entryPoint) /// The exit code. public async Task Run(string[] args) { - var simulate = new Command("simulate", "(default) Run the program using a local simulator.") - { - Handler = CommandHandler.Create(Simulate) - }; - AddOptionIfAvailable(simulate, SimulatorOption); + var simulateSubCommands = this.entryPoints.Select(this.CreateSimulateEntryPointCommand); + var submitSubCommands = this.entryPoints.Select(this.CreateSubmitEntryPointCommand); - var submit = new Command("submit", "Submit the program to Azure Quantum.") - { - IsHidden = true, - Handler = CommandHandler.Create(Submit) - }; - AddOptionIfAvailable(submit, SubscriptionOption); - AddOptionIfAvailable(submit, ResourceGroupOption); - AddOptionIfAvailable(submit, WorkspaceOption); - AddOptionIfAvailable(submit, TargetOption); - AddOptionIfAvailable(submit, StorageOption); - AddOptionIfAvailable(submit, AadTokenOption); - AddOptionIfAvailable(submit, BaseUriOption); - AddOptionIfAvailable(submit, LocationOption); - AddOptionIfAvailable(submit, JobNameOption); - AddOptionIfAvailable(submit, ShotsOption); - AddOptionIfAvailable(submit, OutputOption); - AddOptionIfAvailable(submit, DryRunOption); - AddOptionIfAvailable(submit, VerboseOption); - MarkOptionsAsMutuallyExclusive( - submit, - new[] { BaseUriOption.Aliases.First(), LocationOption.Aliases.First() }); + var simulate = CreateSimulateCommand(simulateSubCommands); + var submit = CreateSubmitCommand(submitSubCommands); - var root = new RootCommand(entryPoint.Summary) { simulate, submit }; - foreach (var option in entryPoint.Options) + var root = new RootCommand(/*entryPoint.Summary*/) { simulate, submit }; + if (this.entryPoints.Count() == 1) { - root.AddGlobalOption(option); + SetSubCommandAsDefault(root, simulate); + root.Description = this.entryPoints.First().Summary; } - // Set the simulate command as the default. - foreach (var option in simulate.Options) - { - root.AddOption(option); - } - root.Handler = simulate.Handler; - Console.OutputEncoding = Encoding.UTF8; return await new CommandLineBuilder(root) .UseDefaults() @@ -127,56 +168,49 @@ public async Task Run(string[] args) } /// - /// Simulates the entry point. + /// Displays a message to the console using the given color and text writer. /// - /// The command-line parsing result. - /// The simulator to use. - /// The exit code. - private Task Simulate(ParseResult parseResult, string simulator) => - this.entryPoint.Simulate(parseResult, settings, DefaultIfShadowed(SimulatorOption, simulator)); + /// The text color. + /// The text writer for the console output stream. + /// The message to display. + internal static void DisplayWithColor(ConsoleColor color, TextWriter writer, string message) + { + var originalForeground = Console.ForegroundColor; + Console.ForegroundColor = color; + writer.WriteLine(message); + Console.ForegroundColor = originalForeground; + } - /// - /// Submits the entry point to Azure Quantum. - /// - /// The command-line parsing result. - /// The Azure submission settings. - private Task Submit(ParseResult parseResult, AzureSettings azureSettings) => - this.entryPoint.Submit(parseResult, new AzureSettings + private static void SetSubCommandAsDefault(Command root, Command subCommand) + { + root.Handler = subCommand.Handler; + foreach (var option in subCommand.Options) { - Subscription = azureSettings.Subscription, - ResourceGroup = azureSettings.ResourceGroup, - Workspace = azureSettings.Workspace, - Target = DefaultIfShadowed(TargetOption, azureSettings.Target), - Storage = DefaultIfShadowed(StorageOption, azureSettings.Storage), - AadToken = DefaultIfShadowed(AadTokenOption, azureSettings.AadToken), - BaseUri = DefaultIfShadowed(BaseUriOption, azureSettings.BaseUri), - Location = DefaultIfShadowed(LocationOption, azureSettings.Location), - JobName = DefaultIfShadowed(JobNameOption, azureSettings.JobName), - Shots = DefaultIfShadowed(ShotsOption, azureSettings.Shots), - Output = DefaultIfShadowed(OutputOption, azureSettings.Output), - DryRun = DefaultIfShadowed(DryRunOption, azureSettings.DryRun), - Verbose = DefaultIfShadowed(VerboseOption, azureSettings.Verbose) - }); + root.AddOption(option); + } + } /// - /// Returns true if the alias is not already used by an entry point option. + /// Returns true if the alias is not already used by an existing option. /// /// The alias to check. + /// Existing options to check against. /// True if the alias is available for use by the driver. - private bool IsAliasAvailable(string alias) => - !entryPoint.Options.SelectMany(option => option.RawAliases).Contains(alias); + private static bool IsAliasAvailable(string alias, IEnumerable /// The command to add the validator to. /// The primary aliases of the options to be marked as mutually exclusive. - private void MarkOptionsAsMutuallyExclusive(Command command, string[] primaryAliases) => + private static void MarkOptionsAsMutuallyExclusive(Command command, string[] primaryAliases) => command.AddValidator(result => { var presentAliases = new List(); @@ -236,139 +270,178 @@ private void MarkOptionsAsMutuallyExclusive(Command command, string[] primaryAli return default; }); - - // TODO: Define the aliases as constants. - /// - /// The subscription option. - /// - internal static readonly OptionInfo SubscriptionOption = new OptionInfo( - ImmutableList.Create("--subscription"), "The subscription ID."); + private static Command CreateSimulateCommand(IEnumerable entryPointCommands) + { + var simulate = new Command("simulate", "(default) Run the program using a local simulator."); + if (entryPointCommands.Count() == 1) + { + var epCommand = entryPointCommands.First(); + simulate.AddCommand(epCommand); + SetSubCommandAsDefault(simulate, epCommand); + } + else + { + foreach (var epCommand in entryPointCommands) + { + simulate.AddCommand(epCommand); + } + } - /// - /// The resource group option. - /// - internal static readonly OptionInfo ResourceGroupOption = new OptionInfo( - ImmutableList.Create("--resource-group"), "The resource group name."); + return simulate; + } - /// - /// The workspace option. - /// - internal static readonly OptionInfo WorkspaceOption = new OptionInfo( - ImmutableList.Create("--workspace"), "The workspace name."); + private static Command CreateSubmitCommand(IEnumerable entryPointCommands) + { + var submit = new Command("submit", "Submit the program to Azure Quantum.") + { + IsHidden = true, + }; + if (entryPointCommands.Count() == 1) + { + var epCommand = entryPointCommands.First(); + submit.AddCommand(epCommand); + SetSubCommandAsDefault(submit, epCommand); + } + else + { + foreach (var epCommand in entryPointCommands) + { + submit.AddCommand(epCommand); + } + } - /// - /// The storage option. - /// - internal static readonly OptionInfo StorageOption = new OptionInfo( - ImmutableList.Create("--storage"), default, "The storage account connection string."); + return submit; + } - /// - /// The AAD token option. - /// - internal static readonly OptionInfo AadTokenOption = new OptionInfo( - ImmutableList.Create("--aad-token"), default, "The Azure Active Directory authentication token."); + private static Func> MakeHandle(Func> handle, IEntryPoint entryPoint) + { + return (ParseResult parseResult, TArg arg) => handle(parseResult, arg, entryPoint); + } - /// - /// The base URI option. - /// - internal static readonly OptionInfo BaseUriOption = new OptionInfo( - ImmutableList.Create("--base-uri"), default, "The base URI of the Azure Quantum endpoint."); + private Command CreateSimulateEntryPointCommand(IEntryPoint entryPoint) + { + var command = new Command(entryPoint.Name, entryPoint.Summary) + { + Handler = CommandHandler.Create(MakeHandle(Simulate, entryPoint)) + }; + foreach (var option in entryPoint.Options) + { + command.AddOption(option); + } - /// - /// The location to use with the default endpoint option. - /// - internal static readonly OptionInfo LocationOption = new OptionInfo( - ImmutableList.Create("--location"), - default, - "The location to use with the default endpoint.", - validator: result => - { - var location = result.Tokens.SingleOrDefault()?.Value; - if (location == null) - { - return default; - } + AddOptionIfAvailable(command, this.BuildSimulatorOption(entryPoint)); - var normalizedLocation = AzureSettings.NormalizeLocation(location); - return Uri.CheckHostName(normalizedLocation) == UriHostNameType.Unknown ? - $"\"{location}\" is an invalid value for the --location option." : - default; - }); + return command; + } - /// - /// The job name option. - /// - internal static readonly OptionInfo JobNameOption = new OptionInfo( - ImmutableList.Create("--job-name"), default, "The name of the submitted job."); + private Command CreateSubmitEntryPointCommand(IEntryPoint entryPoint) + { + var command = new Command(entryPoint.Name, entryPoint.Summary) + { + Handler = CommandHandler.Create(MakeHandle(Submit, entryPoint)) + }; + foreach (var option in entryPoint.Options) + { + command.AddOption(option); + } - /// - /// The shots option. - /// - internal static readonly OptionInfo ShotsOption = new OptionInfo( - ImmutableList.Create("--shots"), - 500, - "The number of times the program is executed on the target machine.", - validator: result => - int.TryParse(result.Tokens.SingleOrDefault()?.Value, out var value) && value <= 0 - ? "The number of shots must be a positive number." - : default); + AddOptionIfAvailable(command, SubscriptionOption); + AddOptionIfAvailable(command, ResourceGroupOption); + AddOptionIfAvailable(command, WorkspaceOption); + AddOptionIfAvailable(command, this.BuildTargetOption(entryPoint)); + AddOptionIfAvailable(command, StorageOption); + AddOptionIfAvailable(command, AadTokenOption); + AddOptionIfAvailable(command, BaseUriOption); + AddOptionIfAvailable(command, LocationOption); + AddOptionIfAvailable(command, JobNameOption); + AddOptionIfAvailable(command, ShotsOption); + AddOptionIfAvailable(command, OutputOption); + AddOptionIfAvailable(command, DryRunOption); + AddOptionIfAvailable(command, VerboseOption); + MarkOptionsAsMutuallyExclusive( + command, + new[] { BaseUriOption.Aliases.First(), LocationOption.Aliases.First() }); - /// - /// The output option. - /// - internal static readonly OptionInfo OutputOption = new OptionInfo( - ImmutableList.Create("--output"), - OutputFormat.FriendlyUri, - "The information to show in the output after the job is submitted."); + return command; + } - /// - /// The dry run option. - /// - internal static readonly OptionInfo DryRunOption = new OptionInfo( - ImmutableList.Create("--dry-run"), - false, - "Validate the program and options, but do not submit to Azure Quantum."); + private OptionInfo BuildSimulatorOption(IEntryPoint entryPoint) => + new OptionInfo( + this.settings.SimulatorOptionAliases, + entryPoint.DefaultSimulatorName, + "The name of the simulator to use.", + suggestions: new[] + { + this.settings.QuantumSimulatorName, + this.settings.ToffoliSimulatorName, + this.settings.ResourcesEstimatorName, + entryPoint.DefaultSimulatorName + }); + + private OptionInfo BuildTargetOption(IEntryPoint entryPoint) + { + var targetAliases = ImmutableList.Create("--target"); + const string targetDescription = "The target device ID."; + return string.IsNullOrWhiteSpace(entryPoint.DefaultExecutionTarget) + ? new OptionInfo(targetAliases, targetDescription) + : new OptionInfo(targetAliases, entryPoint.DefaultExecutionTarget, targetDescription); + } /// - /// The verbose option. + /// Simulates the entry point. /// - internal static readonly OptionInfo VerboseOption = new OptionInfo( - ImmutableList.Create("--verbose"), false, "Show additional information about the submission."); + /// The command-line parsing result. + /// The simulator to use. + /// The entry point to simulate. + /// The exit code. + private Task Simulate(ParseResult parseResult, string simulator, IEntryPoint entryPoint) => + entryPoint.Simulate(parseResult, settings, DefaultIfShadowed(entryPoint, BuildSimulatorOption(entryPoint), simulator)); /// - /// Displays a message to the console using the given color and text writer. + /// Submits the entry point to Azure Quantum. /// - /// The text color. - /// The text writer for the console output stream. - /// The message to display. - internal static void DisplayWithColor(ConsoleColor color, TextWriter writer, string message) - { - var originalForeground = Console.ForegroundColor; - Console.ForegroundColor = color; - writer.WriteLine(message); - Console.ForegroundColor = originalForeground; - } - } - - /// - /// A modification of the command-line class. - /// - internal sealed class QsHelpBuilder : HelpBuilder - { + /// The command-line parsing result. + /// The Azure submission settings. + /// The entry point to submit. + private Task Submit(ParseResult parseResult, AzureSettings azureSettings, IEntryPoint entryPoint) => + entryPoint.Submit(parseResult, new AzureSettings + { + Subscription = azureSettings.Subscription, + ResourceGroup = azureSettings.ResourceGroup, + Workspace = azureSettings.Workspace, + Target = DefaultIfShadowed(entryPoint, BuildTargetOption(entryPoint), azureSettings.Target), + Storage = DefaultIfShadowed(entryPoint, StorageOption, azureSettings.Storage), + AadToken = DefaultIfShadowed(entryPoint, AadTokenOption, azureSettings.AadToken), + BaseUri = DefaultIfShadowed(entryPoint, BaseUriOption, azureSettings.BaseUri), + Location = DefaultIfShadowed(entryPoint, LocationOption, azureSettings.Location), + JobName = DefaultIfShadowed(entryPoint, JobNameOption, azureSettings.JobName), + Shots = DefaultIfShadowed(entryPoint, ShotsOption, azureSettings.Shots), + Output = DefaultIfShadowed(entryPoint, OutputOption, azureSettings.Output), + DryRun = DefaultIfShadowed(entryPoint, DryRunOption, azureSettings.DryRun), + Verbose = DefaultIfShadowed(entryPoint, VerboseOption, azureSettings.Verbose) + }); + /// - /// Creates a new help builder using the given console. + /// A modification of the command-line class. /// - /// The console to use. - internal QsHelpBuilder(IConsole console) : base(console) + private sealed class QsHelpBuilder : HelpBuilder { - } + /// + /// Creates a new help builder using the given console. + /// + /// The console to use. + internal QsHelpBuilder(IConsole console) : base(console) + { + } - protected override string ArgumentDescriptor(IArgument argument) - { - // Hide long argument descriptors. - var descriptor = base.ArgumentDescriptor(argument); - return descriptor.Length > 30 ? argument.Name : descriptor; + protected override string ArgumentDescriptor(IArgument argument) + { + // Hide long argument descriptors. + var descriptor = base.ArgumentDescriptor(argument); + return descriptor.Length > 30 ? argument.Name : descriptor; + } } } + } diff --git a/src/Simulation/EntryPointDriver/IEntryPoint.cs b/src/Simulation/EntryPointDriver/IEntryPoint.cs index 66cfcae98bf..f87f63df916 100644 --- a/src/Simulation/EntryPointDriver/IEntryPoint.cs +++ b/src/Simulation/EntryPointDriver/IEntryPoint.cs @@ -5,7 +5,7 @@ using System.Collections.Generic; using System.CommandLine; using System.CommandLine.Parsing; -using System.Threading.Tasks; +using System.Threading.Tasks; using Microsoft.Quantum.Simulation.Core; namespace Microsoft.Quantum.EntryPointDriver @@ -19,6 +19,11 @@ namespace Microsoft.Quantum.EntryPointDriver /// public interface IEntryPoint { + /// + /// The name of the entry point operation. + /// + string Name { get; } + /// /// The summary from the entry point's documentation comment. /// @@ -37,22 +42,22 @@ public interface IEntryPoint /// /// The default execution target when to use when submitting the entry point to Azure Quantum. /// - string DefaultExecutionTarget { get; } - - /// - /// Submits the entry point to Azure Quantum. - /// - /// The command-line parsing result. - /// The submission settings. + string DefaultExecutionTarget { get; } + + /// + /// Submits the entry point to Azure Quantum. + /// + /// The command-line parsing result. + /// The submission settings. /// The exit code. - Task Submit(ParseResult parseResult, AzureSettings settings); - - /// - /// - /// - /// The command-line parsing result. - /// The driver settings. - /// The simulator to use. + Task Submit(ParseResult parseResult, AzureSettings settings); + + /// + /// + /// + /// The command-line parsing result. + /// The driver settings. + /// The simulator to use. /// The exit code. Task Simulate(ParseResult parseResult, DriverSettings settings, string simulator); From 7823083c9009ec061f53d7725fdc36de371a0211 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Sun, 14 Feb 2021 22:31:12 -0800 Subject: [PATCH 04/59] Documentation. --- src/Simulation/EntryPointDriver/Driver.cs | 61 +++++++++++++++++++---- 1 file changed, 52 insertions(+), 9 deletions(-) diff --git a/src/Simulation/EntryPointDriver/Driver.cs b/src/Simulation/EntryPointDriver/Driver.cs index 5d2abf52a4a..695a80ee798 100644 --- a/src/Simulation/EntryPointDriver/Driver.cs +++ b/src/Simulation/EntryPointDriver/Driver.cs @@ -181,6 +181,11 @@ internal static void DisplayWithColor(ConsoleColor color, TextWriter writer, str Console.ForegroundColor = originalForeground; } + /// + /// Copies the handle and options from the given sub command to the given command. + /// + /// The command whose handle and options will be set. + /// The sub command that will be copied from. private static void SetSubCommandAsDefault(Command root, Command subCommand) { root.Handler = subCommand.Handler; @@ -271,6 +276,11 @@ private static void MarkOptionsAsMutuallyExclusive(Command command, string[] pri return default; }); + /// + /// Creates the simulate command. + /// + /// The entry point commands that will be the sub commands to the created command. + /// The created simulate command. private static Command CreateSimulateCommand(IEnumerable entryPointCommands) { var simulate = new Command("simulate", "(default) Run the program using a local simulator."); @@ -291,6 +301,11 @@ private static Command CreateSimulateCommand(IEnumerable entryPointComm return simulate; } + /// + /// Creates the Azure submit command. + /// + /// The entry point commands that will be the sub commands to the created command. + /// The created submit command. private static Command CreateSubmitCommand(IEnumerable entryPointCommands) { var submit = new Command("submit", "Submit the program to Azure Quantum.") @@ -314,32 +329,49 @@ private static Command CreateSubmitCommand(IEnumerable entryPointComman return submit; } - private static Func> MakeHandle(Func> handle, IEntryPoint entryPoint) + /// + /// Creates a wrapper for a command handle that is specific to an entry point. + /// + /// The input argument type to the handle. + /// The handle. + /// The entry point this handle is specific to. + /// The handle wrapper for the given handle. + private static Func> CreateHandle(Func> handle, IEntryPoint entryPoint) { return (ParseResult parseResult, TArg arg) => handle(parseResult, arg, entryPoint); } + /// + /// Creates a sub command specific to the given entry point for the simulate command. + /// + /// The entry point to make a command for. + /// The command corresponding to the given entry point. private Command CreateSimulateEntryPointCommand(IEntryPoint entryPoint) { var command = new Command(entryPoint.Name, entryPoint.Summary) { - Handler = CommandHandler.Create(MakeHandle(Simulate, entryPoint)) + Handler = CommandHandler.Create(CreateHandle(Simulate, entryPoint)) }; foreach (var option in entryPoint.Options) { command.AddOption(option); } - AddOptionIfAvailable(command, this.BuildSimulatorOption(entryPoint)); + AddOptionIfAvailable(command, this.CreateSimulatorOption(entryPoint)); return command; } + /// + /// Creates a sub command specific to the given entry point for the submit command. + /// + /// The entry point to make a command for. + /// The command corresponding to the given entry point. private Command CreateSubmitEntryPointCommand(IEntryPoint entryPoint) { var command = new Command(entryPoint.Name, entryPoint.Summary) { - Handler = CommandHandler.Create(MakeHandle(Submit, entryPoint)) + Handler = CommandHandler.Create(CreateHandle(Submit, entryPoint)) }; foreach (var option in entryPoint.Options) { @@ -349,7 +381,7 @@ private Command CreateSubmitEntryPointCommand(IEntryPoint entryPoint) AddOptionIfAvailable(command, SubscriptionOption); AddOptionIfAvailable(command, ResourceGroupOption); AddOptionIfAvailable(command, WorkspaceOption); - AddOptionIfAvailable(command, this.BuildTargetOption(entryPoint)); + AddOptionIfAvailable(command, this.CreateTargetOption(entryPoint)); AddOptionIfAvailable(command, StorageOption); AddOptionIfAvailable(command, AadTokenOption); AddOptionIfAvailable(command, BaseUriOption); @@ -366,7 +398,12 @@ private Command CreateSubmitEntryPointCommand(IEntryPoint entryPoint) return command; } - private OptionInfo BuildSimulatorOption(IEntryPoint entryPoint) => + /// + /// Creates the simulation option for the simulate command with the given entry point. + /// + /// The entry point. + /// The OptionInfor for the simulator option. + private OptionInfo CreateSimulatorOption(IEntryPoint entryPoint) => new OptionInfo( this.settings.SimulatorOptionAliases, entryPoint.DefaultSimulatorName, @@ -379,7 +416,12 @@ private OptionInfo BuildSimulatorOption(IEntryPoint entryPoint) => entryPoint.DefaultSimulatorName }); - private OptionInfo BuildTargetOption(IEntryPoint entryPoint) + /// + /// Creates the target option for the Azure submit command with the given entry point. + /// + /// The entry point. + /// The OptionInfo for the --target option. + private OptionInfo CreateTargetOption(IEntryPoint entryPoint) { var targetAliases = ImmutableList.Create("--target"); const string targetDescription = "The target device ID."; @@ -396,7 +438,7 @@ private OptionInfo BuildSimulatorOption(IEntryPoint entryPoint) => /// The entry point to simulate. /// The exit code. private Task Simulate(ParseResult parseResult, string simulator, IEntryPoint entryPoint) => - entryPoint.Simulate(parseResult, settings, DefaultIfShadowed(entryPoint, BuildSimulatorOption(entryPoint), simulator)); + entryPoint.Simulate(parseResult, settings, DefaultIfShadowed(entryPoint, CreateSimulatorOption(entryPoint), simulator)); /// /// Submits the entry point to Azure Quantum. @@ -404,13 +446,14 @@ private Task Simulate(ParseResult parseResult, string simulator, IEntryPoin /// The command-line parsing result. /// The Azure submission settings. /// The entry point to submit. + /// The exit code. private Task Submit(ParseResult parseResult, AzureSettings azureSettings, IEntryPoint entryPoint) => entryPoint.Submit(parseResult, new AzureSettings { Subscription = azureSettings.Subscription, ResourceGroup = azureSettings.ResourceGroup, Workspace = azureSettings.Workspace, - Target = DefaultIfShadowed(entryPoint, BuildTargetOption(entryPoint), azureSettings.Target), + Target = DefaultIfShadowed(entryPoint, CreateTargetOption(entryPoint), azureSettings.Target), Storage = DefaultIfShadowed(entryPoint, StorageOption, azureSettings.Storage), AadToken = DefaultIfShadowed(entryPoint, AadTokenOption, azureSettings.AadToken), BaseUri = DefaultIfShadowed(entryPoint, BaseUriOption, azureSettings.BaseUri), From 6cb13cfe624d577fe01aca1ec5657bd24fd322f8 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Mon, 22 Feb 2021 17:08:01 -0800 Subject: [PATCH 05/59] Got Entry Point Classes to generate. --- src/Simulation/CSharpGeneration/EntryPoint.fs | 124 ++++++++++++++---- .../CSharpGeneration/RewriteStep.fs | 15 ++- 2 files changed, 109 insertions(+), 30 deletions(-) diff --git a/src/Simulation/CSharpGeneration/EntryPoint.fs b/src/Simulation/CSharpGeneration/EntryPoint.fs index 4bd9317a3c9..686b99a532b 100644 --- a/src/Simulation/CSharpGeneration/EntryPoint.fs +++ b/src/Simulation/CSharpGeneration/EntryPoint.fs @@ -119,22 +119,76 @@ let private callableTypeNames context (callable : QsCallable) = let returnTypeName = SimulationCode.roslynTypeName context callable.Signature.ReturnType callableName, argTypeName, returnTypeName -/// The main method for the standalone executable. -let private mainMethod context entryPoint = +let private submitMethod context entryPoint = + let callableName, _, _ = callableTypeNames context entryPoint + //let driverType = generic (driverNamespace + ".Driver") ``<<`` [callableName; argTypeName; returnTypeName] ``>>`` + //let entryPointInstance = ``new`` (``type`` entryPointClassName) ``(`` [] ``)`` + //let driver = ``new`` driverType ``(`` [driverSettings; entryPointInstance] ``)`` + let parseResultParamName = "parseResult" + let settingsParamName = "settings" + let args = + [ + ident "this" :> ExpressionSyntax + ident callableName <|.|> ident "Info" + ident "this" <.> (ident "CreateArgument", [ident parseResultParamName]) + ident settingsParamName :> ExpressionSyntax + ] + arrow_method "System.Threading.Tasks.Task" "Submit" ``<<`` [] ``>>`` + ``(`` + [ + param parseResultParamName ``of`` (``type`` "System.CommandLine.Parsing.ParseResult") + param settingsParamName ``of`` (``type`` (driverNamespace + ".AzureSettings")) + ] + ``)`` + [``public``] + (Some (``=>`` (ident (driverNamespace + ".Azure") <.> (ident "Submit", args)))) + +let private simulateMethod context entryPoint = let callableName, argTypeName, returnTypeName = callableTypeNames context entryPoint - let driverType = generic (driverNamespace + ".Driver") ``<<`` [callableName; argTypeName; returnTypeName] ``>>`` - let entryPointInstance = ``new`` (``type`` entryPointClassName) ``(`` [] ``)`` - let driver = ``new`` driverType ``(`` [driverSettings; entryPointInstance] ``)`` - let commandLineArgsName = "args" - arrow_method "System.Threading.Tasks.Task" "Main" ``<<`` [] ``>>`` - ``(`` [param commandLineArgsName ``of`` (``type`` "string[]")] ``)`` - [``private``; ``static``; async] - (Some (``=>`` (await (driver <.> (ident "Run", [ident commandLineArgsName]))))) + let simulationType = generic (driverNamespace + ".Simulation") ``<<`` [callableName; argTypeName; returnTypeName] ``>>`` + //let entryPointInstance = ``new`` (``type`` entryPointClassName) ``(`` [] ``)`` + //let driver = ``new`` driverType ``(`` [driverSettings; entryPointInstance] ``)`` + let parseResultParamName = "parseResult" + let settingsParamName = "settings" + let simulatorParamName = "simulator" + let args = + [ + ident "this" :> ExpressionSyntax + ident "this" <.> (ident "CreateArgument", [ident parseResultParamName]) + ident settingsParamName :> ExpressionSyntax + ident simulatorParamName :> ExpressionSyntax + ] + arrow_method "System.Threading.Tasks.Task" "Simulate" ``<<`` [] ``>>`` + ``(`` + [ + param parseResultParamName ``of`` (``type`` "System.CommandLine.Parsing.ParseResult") + param settingsParamName ``of`` (``type`` (driverNamespace + ".DriverSettings")) + param simulatorParamName ``of`` (``type`` "string") + ] + ``)`` + [``public``] + (Some (``=>`` (simulationType <.> (ident "Simulate", args)))) + +/// The main method for the standalone executable. +//let private mainMethod context entryPoint = +// let callableName, argTypeName, returnTypeName = callableTypeNames context entryPoint +// let driverType = generic (driverNamespace + ".Driver") ``<<`` [callableName; argTypeName; returnTypeName] ``>>`` +// let entryPointInstance = ``new`` (``type`` entryPointClassName) ``(`` [] ``)`` +// let driver = ``new`` driverType ``(`` [driverSettings; entryPointInstance] ``)`` +// let commandLineArgsName = "args" +// arrow_method "System.Threading.Tasks.Task" "Main" ``<<`` [] ``>>`` +// ``(`` [param commandLineArgsName ``of`` (``type`` "string[]")] ``)`` +// [``private``; ``static``; async] +// (Some (``=>`` (await (driver <.> (ident "Run", [ident commandLineArgsName]))))) /// The class that adapts the entry point for use with the command-line parsing library and the driver. -let private entryPointClass context entryPoint = - let callableName, argTypeName, returnTypeName = callableTypeNames context entryPoint +let private entryPointClass context (entryPoint : QsCallable) = + //let callableName, argTypeName, returnTypeName = callableTypeNames context entryPoint let property name typeName value = ``property-arrow_get`` typeName name [``public``] get (``=>`` value) + let nameProperty = + entryPoint.FullName.ToString() + |> literal + |> property "Name" "string" let summaryProperty = (PrintSummary entryPoint.Documentation false).Trim () |> literal @@ -149,35 +203,51 @@ let private entryPointClass context entryPoint = |> (fun (_, value) -> if value = null then "" else value) |> literal |> property "DefaultExecutionTarget" "string" - let infoProperty = - property "Info" (sprintf "EntryPointInfo<%s, %s>" argTypeName returnTypeName) - (ident callableName <|.|> ident "Info") + //let infoProperty = + // property "Info" (sprintf "EntryPointInfo<%s, %s>" argTypeName returnTypeName) + // (ident callableName <|.|> ident "Info") let members : MemberDeclarationSyntax list = [ + nameProperty summaryProperty parameterOptionsProperty parameters defaultSimulatorNameProperty defaultExecutionTargetProperty - infoProperty + //infoProperty customSimulatorFactory defaultSimulator createArgument context entryPoint - mainMethod context entryPoint + submitMethod context entryPoint + simulateMethod context entryPoint + //mainMethod context entryPoint ] - let baseName = sprintf "%s.IEntryPoint<%s, %s>" driverNamespace argTypeName returnTypeName - ``class`` entryPointClassName``<<`` [] ``>>`` + //let baseName = sprintf "%s.IEntryPoint<%s, %s>" driverNamespace argTypeName returnTypeName + let baseName = sprintf "%s.IEntryPoint" driverNamespace + ``class`` (entryPointClassName + entryPoint.FullName.Name) ``<<`` [] ``>>`` ``:`` (Some (simpleBase baseName)) ``,`` [] [``internal``] ``{`` members ``}`` +let private entryPointNamespace context name (entryPoints : seq) = + ``namespace`` name + ``{`` + (Seq.map using SimulationCode.autoNamespaces) + [for ep in entryPoints -> entryPointClass context ep] + ``}`` + /// Generates C# source code for a standalone executable that runs the Q# entry point. -let generate context (entryPoint : QsCallable) = - let ns = - ``namespace`` entryPoint.FullName.Namespace - ``{`` - (Seq.map using SimulationCode.autoNamespaces) - [entryPointClass context entryPoint] - ``}`` - ``compilation unit`` [] [] [ns] +let generateEntryPointSource context (entryPoints : seq) (generateMain : bool) = + //let tempEntryPoint = Seq.head entryPoints + + let entryPointNamespaces = entryPoints |> Seq.groupBy (fun ep -> ep.FullName.Namespace) + + //let ns = + // ``namespace`` tempEntryPoint.FullName.Namespace + // ``{`` + // (Seq.map using SimulationCode.autoNamespaces) + // [entryPointClass context tempEntryPoint] + // ``}`` + // ToDo: look into including the autoNamespaces only once per file + ``compilation unit`` [] [] [for ns, eps in entryPointNamespaces -> entryPointNamespace context ns eps] |> ``with leading comments`` SimulationCode.autogenComment |> SimulationCode.formatSyntaxTree diff --git a/src/Simulation/CSharpGeneration/RewriteStep.fs b/src/Simulation/CSharpGeneration/RewriteStep.fs index 1cb4f66d517..79cc385ac57 100644 --- a/src/Simulation/CSharpGeneration/RewriteStep.fs +++ b/src/Simulation/CSharpGeneration/RewriteStep.fs @@ -61,9 +61,18 @@ type Emitter() = if content <> null then CompilationLoader.GeneratedFile(source, dir, ".dll.g.cs", content) |> ignore if not compilation.EntryPoints.IsEmpty then - let callable = context.allCallables.[Seq.head compilation.EntryPoints] - let content = EntryPoint.generate context callable - CompilationLoader.GeneratedFile(callable.SourceFile, dir, ".EntryPoint.g.cs", content) |> ignore + let entryPointSources = + compilation.EntryPoints + |> Seq.map (fun ep -> context.allCallables.[ep]) + |> Seq.groupBy (fun ep -> ep.SourceFile) + + let (sourceFile, callables) = Seq.head entryPointSources + let content = EntryPoint.generateEntryPointSource context callables true + CompilationLoader.GeneratedFile(sourceFile, dir, ".EntryPoint.g.cs", content) |> ignore + + for (sourceFile, callables) in Seq.tail entryPointSources do + let content = EntryPoint.generateEntryPointSource context callables false + CompilationLoader.GeneratedFile(sourceFile, dir, ".EntryPoint.g.cs", content) |> ignore transformed <- compilation true From 1591e09eb43b88641910599483dcaca4de6a1fb3 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Tue, 23 Feb 2021 13:45:10 -0800 Subject: [PATCH 06/59] generated main class/method for entry point driver --- src/Simulation/CSharpGeneration/EntryPoint.fs | 60 ++++++++++++++----- .../CSharpGeneration/RewriteStep.fs | 12 +++- 2 files changed, 55 insertions(+), 17 deletions(-) diff --git a/src/Simulation/CSharpGeneration/EntryPoint.fs b/src/Simulation/CSharpGeneration/EntryPoint.fs index 686b99a532b..ba589ae1495 100644 --- a/src/Simulation/CSharpGeneration/EntryPoint.fs +++ b/src/Simulation/CSharpGeneration/EntryPoint.fs @@ -21,7 +21,7 @@ type private Parameter = Description : string } /// The name of the generated entry point class. -let entryPointClassName = "__QsEntryPoint__" +//let entryPointClassName = "__QsEntryPoint__" /// The namespace containing the non-generated parts of the entry point driver. let private driverNamespace = "Microsoft.Quantum.EntryPointDriver" @@ -119,6 +119,10 @@ let private callableTypeNames context (callable : QsCallable) = let returnTypeName = SimulationCode.roslynTypeName context callable.Signature.ReturnType callableName, argTypeName, returnTypeName +let private entryPointClassName (entryPoint : QsCallable) = + let prefix = "__QsEntryPoint__" + (entryPoint.FullName.Namespace, prefix + entryPoint.FullName.Name) + let private submitMethod context entryPoint = let callableName, _, _ = callableTypeNames context entryPoint //let driverType = generic (driverNamespace + ".Driver") ``<<`` [callableName; argTypeName; returnTypeName] ``>>`` @@ -170,16 +174,35 @@ let private simulateMethod context entryPoint = (Some (``=>`` (simulationType <.> (ident "Simulate", args)))) /// The main method for the standalone executable. -//let private mainMethod context entryPoint = -// let callableName, argTypeName, returnTypeName = callableTypeNames context entryPoint -// let driverType = generic (driverNamespace + ".Driver") ``<<`` [callableName; argTypeName; returnTypeName] ``>>`` -// let entryPointInstance = ``new`` (``type`` entryPointClassName) ``(`` [] ``)`` -// let driver = ``new`` driverType ``(`` [driverSettings; entryPointInstance] ``)`` -// let commandLineArgsName = "args" -// arrow_method "System.Threading.Tasks.Task" "Main" ``<<`` [] ``>>`` -// ``(`` [param commandLineArgsName ``of`` (``type`` "string[]")] ``)`` -// [``private``; ``static``; async] -// (Some (``=>`` (await (driver <.> (ident "Run", [ident commandLineArgsName]))))) +let private mainMethod context (entryPoints : seq) = + //let callableName, argTypeName, returnTypeName = callableTypeNames context entryPoint + //let driverType = generic (driverNamespace + ".Driver") ``<<`` [callableName; argTypeName; returnTypeName] ``>>`` + //let entryPointInstance = ``new`` (``type`` entryPointClassName) ``(`` [] ``)`` + + let entryPointArrayMembers = + [ + for ep in entryPoints do + let ns, name = entryPointClassName ep + ``new`` (``type`` (ns + "." + name)) ``(`` [] ``)`` + ] + + let entryPointArray = + ``new array`` (Some (driverNamespace + ".IEntryPoint")) entryPointArrayMembers + + let driver = ``new`` (``type`` (driverNamespace + ".Driver")) ``(`` [driverSettings; entryPointArray] ``)`` + let commandLineArgsName = "args" + arrow_method "System.Threading.Tasks.Task" "Main" ``<<`` [] ``>>`` + ``(`` [param commandLineArgsName ``of`` (``type`` "string[]")] ``)`` + [``private``; ``static``; async] + (Some (``=>`` (await (driver <.> (ident "Run", [ident commandLineArgsName]))))) + +let mainClass context (entryPoints : seq) = + ``class`` "__QsEntryPoint__" ``<<`` [] ``>>`` + ``:`` None ``,`` [] + [``internal``] + ``{`` + [mainMethod context entryPoints] + ``}`` /// The class that adapts the entry point for use with the command-line parsing library and the driver. let private entryPointClass context (entryPoint : QsCallable) = @@ -221,7 +244,7 @@ let private entryPointClass context (entryPoint : QsCallable) = ] //let baseName = sprintf "%s.IEntryPoint<%s, %s>" driverNamespace argTypeName returnTypeName let baseName = sprintf "%s.IEntryPoint" driverNamespace - ``class`` (entryPointClassName + entryPoint.FullName.Name) ``<<`` [] ``>>`` + ``class`` (entryPointClassName entryPoint |> snd) ``<<`` [] ``>>`` ``:`` (Some (simpleBase baseName)) ``,`` [] [``internal``] ``{`` @@ -236,11 +259,20 @@ let private entryPointNamespace context name (entryPoints : seq) = ``}`` /// Generates C# source code for a standalone executable that runs the Q# entry point. -let generateEntryPointSource context (entryPoints : seq) (generateMain : bool) = +let generateEntryPointSource context (entryPoints : seq) (generatedMain : ClassDeclarationSyntax option) = //let tempEntryPoint = Seq.head entryPoints let entryPointNamespaces = entryPoints |> Seq.groupBy (fun ep -> ep.FullName.Namespace) + let namespaces = + let ns, eps = Seq.head entryPointNamespaces + let firstNS = + match generatedMain with + | Some main -> (entryPointNamespace context ns eps).AddMembers(main) + | None -> entryPointNamespace context ns eps + :> MemberDeclarationSyntax + firstNS :: [for ns, eps in Seq.tail entryPointNamespaces -> entryPointNamespace context ns eps] + //let ns = // ``namespace`` tempEntryPoint.FullName.Namespace // ``{`` @@ -248,6 +280,6 @@ let generateEntryPointSource context (entryPoints : seq) (generateMa // [entryPointClass context tempEntryPoint] // ``}`` // ToDo: look into including the autoNamespaces only once per file - ``compilation unit`` [] [] [for ns, eps in entryPointNamespaces -> entryPointNamespace context ns eps] + ``compilation unit`` [] [] namespaces |> ``with leading comments`` SimulationCode.autogenComment |> SimulationCode.formatSyntaxTree diff --git a/src/Simulation/CSharpGeneration/RewriteStep.fs b/src/Simulation/CSharpGeneration/RewriteStep.fs index 79cc385ac57..1cb98afb758 100644 --- a/src/Simulation/CSharpGeneration/RewriteStep.fs +++ b/src/Simulation/CSharpGeneration/RewriteStep.fs @@ -61,17 +61,23 @@ type Emitter() = if content <> null then CompilationLoader.GeneratedFile(source, dir, ".dll.g.cs", content) |> ignore if not compilation.EntryPoints.IsEmpty then - let entryPointSources = + + let entryPointCallables = compilation.EntryPoints |> Seq.map (fun ep -> context.allCallables.[ep]) + + let main = EntryPoint.mainClass context entryPointCallables + + let entryPointSources = + entryPointCallables |> Seq.groupBy (fun ep -> ep.SourceFile) let (sourceFile, callables) = Seq.head entryPointSources - let content = EntryPoint.generateEntryPointSource context callables true + let content = EntryPoint.generateEntryPointSource context callables (Some main) CompilationLoader.GeneratedFile(sourceFile, dir, ".EntryPoint.g.cs", content) |> ignore for (sourceFile, callables) in Seq.tail entryPointSources do - let content = EntryPoint.generateEntryPointSource context callables false + let content = EntryPoint.generateEntryPointSource context callables None CompilationLoader.GeneratedFile(sourceFile, dir, ".EntryPoint.g.cs", content) |> ignore transformed <- compilation From 685f6fd7d78e059a8c510b74530c3d36aca3855e Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Tue, 23 Feb 2021 18:32:38 -0800 Subject: [PATCH 07/59] WIP --- src/Simulation/CSharpGeneration/EntryPoint.fs | 11 +++++------ src/Simulation/EntryPointDriver.Tests/Tests.fs | 5 +++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Simulation/CSharpGeneration/EntryPoint.fs b/src/Simulation/CSharpGeneration/EntryPoint.fs index ba589ae1495..b34418a3a17 100644 --- a/src/Simulation/CSharpGeneration/EntryPoint.fs +++ b/src/Simulation/CSharpGeneration/EntryPoint.fs @@ -21,7 +21,7 @@ type private Parameter = Description : string } /// The name of the generated entry point class. -//let entryPointClassName = "__QsEntryPoint__" +let entryPointClassName = "__QsEntryPoint__" /// The namespace containing the non-generated parts of the entry point driver. let private driverNamespace = "Microsoft.Quantum.EntryPointDriver" @@ -119,9 +119,8 @@ let private callableTypeNames context (callable : QsCallable) = let returnTypeName = SimulationCode.roslynTypeName context callable.Signature.ReturnType callableName, argTypeName, returnTypeName -let private entryPointClassName (entryPoint : QsCallable) = - let prefix = "__QsEntryPoint__" - (entryPoint.FullName.Namespace, prefix + entryPoint.FullName.Name) +let private generateEntryPointClassName (entryPoint : QsCallable) = + (entryPoint.FullName.Namespace, entryPointClassName + entryPoint.FullName.Name) let private submitMethod context entryPoint = let callableName, _, _ = callableTypeNames context entryPoint @@ -182,7 +181,7 @@ let private mainMethod context (entryPoints : seq) = let entryPointArrayMembers = [ for ep in entryPoints do - let ns, name = entryPointClassName ep + let ns, name = generateEntryPointClassName ep ``new`` (``type`` (ns + "." + name)) ``(`` [] ``)`` ] @@ -244,7 +243,7 @@ let private entryPointClass context (entryPoint : QsCallable) = ] //let baseName = sprintf "%s.IEntryPoint<%s, %s>" driverNamespace argTypeName returnTypeName let baseName = sprintf "%s.IEntryPoint" driverNamespace - ``class`` (entryPointClassName entryPoint |> snd) ``<<`` [] ``>>`` + ``class`` (generateEntryPointClassName entryPoint |> snd) ``<<`` [] ``>>`` ``:`` (Some (simpleBase baseName)) ``,`` [] [``internal``] ``{`` diff --git a/src/Simulation/EntryPointDriver.Tests/Tests.fs b/src/Simulation/EntryPointDriver.Tests/Tests.fs index c386ef1014f..fdbd1bc598f 100644 --- a/src/Simulation/EntryPointDriver.Tests/Tests.fs +++ b/src/Simulation/EntryPointDriver.Tests/Tests.fs @@ -70,10 +70,11 @@ let private compileQSharp source = /// Generates C# source code from the compiled Q# syntax tree using the given assembly constants. let private generateCSharp constants (compilation : QsCompilation) = let context = CodegenContext.Create (compilation, constants) - let entryPoint = context.allCallables.[Seq.exactlyOne compilation.EntryPoints] + let entryPoints = seq { for ep in compilation.EntryPoints -> context.allCallables.[ep] } + let main = EntryPoint.mainClass context entryPoints [ SimulationCode.generate testFile context - EntryPoint.generate context entryPoint + EntryPoint.generateEntryPointSource context entryPoints (Some main) ] /// The full path to a referenced assembly given its short name. From 6e09bd203f9dfee3a07e99a66ec81706aaf9c91d Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Tue, 23 Feb 2021 19:43:04 -0800 Subject: [PATCH 08/59] temp --- src/Simulation/EntryPointDriver/Azure.cs | 18 ++++++++++++++++++ src/Simulation/EntryPointDriver/Simulation.cs | 12 ++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/Simulation/EntryPointDriver/Azure.cs b/src/Simulation/EntryPointDriver/Azure.cs index e0393465e10..641f309716f 100644 --- a/src/Simulation/EntryPointDriver/Azure.cs +++ b/src/Simulation/EntryPointDriver/Azure.cs @@ -31,6 +31,21 @@ public static class Azure public static async Task Submit( IEntryPoint entryPoint, EntryPointInfo info, TIn input, AzureSettings settings) { + /**/ + + Console.WriteLine("Submit"); + Console.WriteLine($"EntryPoint: {entryPoint.Name}"); + Console.WriteLine($"Arguments: {input}"); + Console.WriteLine("With Azure Settings:"); + foreach (var prop in typeof(AzureSettings).GetProperties()) + { + Console.WriteLine($"\t{prop.Name}: {prop.GetValue(settings)}"); + } + + return 0; + + /*/ + if (settings.Verbose) { Console.WriteLine(settings); @@ -48,6 +63,9 @@ public static async Task Submit( return settings.DryRun ? Validate(machine, info, input) : await SubmitJob(machine, info, input, settings); + + /**/ + } /// diff --git a/src/Simulation/EntryPointDriver/Simulation.cs b/src/Simulation/EntryPointDriver/Simulation.cs index 3cb54cc6865..73fb7339721 100644 --- a/src/Simulation/EntryPointDriver/Simulation.cs +++ b/src/Simulation/EntryPointDriver/Simulation.cs @@ -30,6 +30,15 @@ public static class Simulation where TCallable : AbstractC public static async Task Simulate( IEntryPoint entryPoint, TIn input, DriverSettings settings, string simulator) { + /**/ + + Console.WriteLine("Simulate"); + Console.WriteLine($"EntryPoint: {entryPoint.Name}"); + Console.WriteLine($"Arguments: {input}"); + Console.WriteLine($"On Simulator: {simulator}"); + + /*/ + if (simulator == settings.ResourcesEstimatorName) { // Force the explicit load of the QSharp.Core assembly so that the ResourcesEstimator @@ -59,6 +68,9 @@ public static async Task Simulate( } await RunSimulator(input, createSimulator); } + + /**/ + return 0; } From 0813a2ff006b892172287d8f338f27bacc9b6f94 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Tue, 23 Feb 2021 22:02:45 -0800 Subject: [PATCH 09/59] Got the simulator option working again --- src/Simulation/EntryPointDriver/Driver.cs | 29 ++++++++++++++++------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/Simulation/EntryPointDriver/Driver.cs b/src/Simulation/EntryPointDriver/Driver.cs index 695a80ee798..ef8f48b788f 100644 --- a/src/Simulation/EntryPointDriver/Driver.cs +++ b/src/Simulation/EntryPointDriver/Driver.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. +using Microsoft.Quantum.Simulation.Simulators.QCTraceSimulators.Circuits; using System; using System.Collections.Generic; using System.Collections.Immutable; @@ -336,9 +337,19 @@ private static Command CreateSubmitCommand(IEnumerable entryPointComman /// The handle. /// The entry point this handle is specific to. /// The handle wrapper for the given handle. - private static Func> CreateHandle(Func> handle, IEntryPoint entryPoint) + //private Func> CreateHandle(Func> handle, IEntryPoint entryPoint) + //{ + // return (ParseResult parseResult, TArg arg) => handle(parseResult, arg, entryPoint); + //} + + private Func> CreateSimulateHandle(Func> handle, IEntryPoint entryPoint) + { + return (ParseResult parseResult, string simulator) => handle(parseResult, simulator, entryPoint); + } + + private Func> CreateSubmitHandle(Func> handle, IEntryPoint entryPoint) { - return (ParseResult parseResult, TArg arg) => handle(parseResult, arg, entryPoint); + return (ParseResult parseResult, AzureSettings settings) => handle(parseResult, settings, entryPoint); } /// @@ -350,7 +361,7 @@ private Command CreateSimulateEntryPointCommand(IEntryPoint entryPoint) { var command = new Command(entryPoint.Name, entryPoint.Summary) { - Handler = CommandHandler.Create(CreateHandle(Simulate, entryPoint)) + Handler = CommandHandler.Create(CreateSimulateHandle(Simulate, entryPoint)) }; foreach (var option in entryPoint.Options) { @@ -371,7 +382,7 @@ private Command CreateSubmitEntryPointCommand(IEntryPoint entryPoint) { var command = new Command(entryPoint.Name, entryPoint.Summary) { - Handler = CommandHandler.Create(CreateHandle(Submit, entryPoint)) + Handler = CommandHandler.Create(CreateSubmitHandle(Submit, entryPoint)) }; foreach (var option in entryPoint.Options) { @@ -406,7 +417,7 @@ private Command CreateSubmitEntryPointCommand(IEntryPoint entryPoint) private OptionInfo CreateSimulatorOption(IEntryPoint entryPoint) => new OptionInfo( this.settings.SimulatorOptionAliases, - entryPoint.DefaultSimulatorName, + "QuantumSimulator", "The name of the simulator to use.", suggestions: new[] { @@ -437,8 +448,8 @@ private OptionInfo CreateSimulatorOption(IEntryPoint entryPoint) => /// The simulator to use. /// The entry point to simulate. /// The exit code. - private Task Simulate(ParseResult parseResult, string simulator, IEntryPoint entryPoint) => - entryPoint.Simulate(parseResult, settings, DefaultIfShadowed(entryPoint, CreateSimulatorOption(entryPoint), simulator)); + private async Task Simulate(ParseResult parseResult, string simulator, IEntryPoint entryPoint) => + await entryPoint.Simulate(parseResult, settings, DefaultIfShadowed(entryPoint, CreateSimulatorOption(entryPoint), simulator)); /// /// Submits the entry point to Azure Quantum. @@ -447,8 +458,8 @@ private Task Simulate(ParseResult parseResult, string simulator, IEntryPoin /// The Azure submission settings. /// The entry point to submit. /// The exit code. - private Task Submit(ParseResult parseResult, AzureSettings azureSettings, IEntryPoint entryPoint) => - entryPoint.Submit(parseResult, new AzureSettings + private async Task Submit(ParseResult parseResult, AzureSettings azureSettings, IEntryPoint entryPoint) => + await entryPoint.Submit(parseResult, new AzureSettings { Subscription = azureSettings.Subscription, ResourceGroup = azureSettings.ResourceGroup, From f26fc221cf1f98e488919ae7230f6716bb1992db Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Tue, 23 Feb 2021 22:12:06 -0800 Subject: [PATCH 10/59] return --- src/Simulation/EntryPointDriver/Azure.cs | 2 +- src/Simulation/EntryPointDriver/Simulation.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Simulation/EntryPointDriver/Azure.cs b/src/Simulation/EntryPointDriver/Azure.cs index 641f309716f..9556732ad4e 100644 --- a/src/Simulation/EntryPointDriver/Azure.cs +++ b/src/Simulation/EntryPointDriver/Azure.cs @@ -31,7 +31,7 @@ public static class Azure public static async Task Submit( IEntryPoint entryPoint, EntryPointInfo info, TIn input, AzureSettings settings) { - /**/ + /*/ Console.WriteLine("Submit"); Console.WriteLine($"EntryPoint: {entryPoint.Name}"); diff --git a/src/Simulation/EntryPointDriver/Simulation.cs b/src/Simulation/EntryPointDriver/Simulation.cs index 73fb7339721..1e17935d3d2 100644 --- a/src/Simulation/EntryPointDriver/Simulation.cs +++ b/src/Simulation/EntryPointDriver/Simulation.cs @@ -30,7 +30,7 @@ public static class Simulation where TCallable : AbstractC public static async Task Simulate( IEntryPoint entryPoint, TIn input, DriverSettings settings, string simulator) { - /**/ + /*/ Console.WriteLine("Simulate"); Console.WriteLine($"EntryPoint: {entryPoint.Name}"); From bd5eab444d47aa35e8614171847dc78e4c48d8bc Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Wed, 24 Feb 2021 11:28:31 -0800 Subject: [PATCH 11/59] Moved Main into separate ns --- src/Simulation/CSharpGeneration/EntryPoint.fs | 34 +++++++++++++------ .../CSharpGeneration/RewriteStep.fs | 2 +- .../EntryPointDriver.Tests/Tests.fs | 6 ++-- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/Simulation/CSharpGeneration/EntryPoint.fs b/src/Simulation/CSharpGeneration/EntryPoint.fs index b34418a3a17..623c45c4f7d 100644 --- a/src/Simulation/CSharpGeneration/EntryPoint.fs +++ b/src/Simulation/CSharpGeneration/EntryPoint.fs @@ -195,14 +195,21 @@ let private mainMethod context (entryPoints : seq) = [``private``; ``static``; async] (Some (``=>`` (await (driver <.> (ident "Run", [ident commandLineArgsName]))))) -let mainClass context (entryPoints : seq) = - ``class`` "__QsEntryPoint__" ``<<`` [] ``>>`` +let private mainClass context (entryPoints : seq) = + ``class`` entryPointClassName ``<<`` [] ``>>`` ``:`` None ``,`` [] [``internal``] ``{`` [mainMethod context entryPoints] ``}`` +let mainNamespace context (entryPoints : seq) = + ``namespace`` entryPointClassName + ``{`` + (Seq.map using SimulationCode.autoNamespaces) + [mainClass context entryPoints] + ``}`` + /// The class that adapts the entry point for use with the command-line parsing library and the driver. let private entryPointClass context (entryPoint : QsCallable) = //let callableName, argTypeName, returnTypeName = callableTypeNames context entryPoint @@ -256,21 +263,28 @@ let private entryPointNamespace context name (entryPoints : seq) = (Seq.map using SimulationCode.autoNamespaces) [for ep in entryPoints -> entryPointClass context ep] ``}`` + :> MemberDeclarationSyntax /// Generates C# source code for a standalone executable that runs the Q# entry point. -let generateEntryPointSource context (entryPoints : seq) (generatedMain : ClassDeclarationSyntax option) = +let generateEntryPointSource context (entryPoints : seq) (mainNamespace : NamespaceDeclarationSyntax option) = //let tempEntryPoint = Seq.head entryPoints let entryPointNamespaces = entryPoints |> Seq.groupBy (fun ep -> ep.FullName.Namespace) + let epNamespaces = [for ns, eps in entryPointNamespaces -> entryPointNamespace context ns eps] + let namespaces = - let ns, eps = Seq.head entryPointNamespaces - let firstNS = - match generatedMain with - | Some main -> (entryPointNamespace context ns eps).AddMembers(main) - | None -> entryPointNamespace context ns eps - :> MemberDeclarationSyntax - firstNS :: [for ns, eps in Seq.tail entryPointNamespaces -> entryPointNamespace context ns eps] + match mainNamespace with + | Some mainNamespace -> (mainNamespace :> MemberDeclarationSyntax) :: epNamespaces + | None -> epNamespaces + + //let ns, eps = Seq.head entryPointNamespaces + //let firstNS = + // match mainNamespace with + // | Some mainNS -> (entryPointNamespace context ns eps).AddMembers(mainNS) + // | None -> entryPointNamespace context ns eps + // :> MemberDeclarationSyntax + //firstNS :: [for ns, eps in Seq.tail entryPointNamespaces -> entryPointNamespace context ns eps] //let ns = // ``namespace`` tempEntryPoint.FullName.Namespace diff --git a/src/Simulation/CSharpGeneration/RewriteStep.fs b/src/Simulation/CSharpGeneration/RewriteStep.fs index 1cb98afb758..c5fba46f032 100644 --- a/src/Simulation/CSharpGeneration/RewriteStep.fs +++ b/src/Simulation/CSharpGeneration/RewriteStep.fs @@ -66,7 +66,7 @@ type Emitter() = compilation.EntryPoints |> Seq.map (fun ep -> context.allCallables.[ep]) - let main = EntryPoint.mainClass context entryPointCallables + let main = EntryPoint.mainNamespace context entryPointCallables let entryPointSources = entryPointCallables diff --git a/src/Simulation/EntryPointDriver.Tests/Tests.fs b/src/Simulation/EntryPointDriver.Tests/Tests.fs index fdbd1bc598f..0fd3f84c339 100644 --- a/src/Simulation/EntryPointDriver.Tests/Tests.fs +++ b/src/Simulation/EntryPointDriver.Tests/Tests.fs @@ -71,10 +71,10 @@ let private compileQSharp source = let private generateCSharp constants (compilation : QsCompilation) = let context = CodegenContext.Create (compilation, constants) let entryPoints = seq { for ep in compilation.EntryPoints -> context.allCallables.[ep] } - let main = EntryPoint.mainClass context entryPoints + let mainNS = EntryPoint.mainNamespace context entryPoints [ SimulationCode.generate testFile context - EntryPoint.generateEntryPointSource context entryPoints (Some main) + EntryPoint.generateEntryPointSource context entryPoints (Some mainNS) ] /// The full path to a referenced assembly given its short name. @@ -129,7 +129,7 @@ let private testAssembly testName constants = /// Runs the entry point in the assembly with the given command-line arguments, and returns the output, errors, and exit /// code. let private run (assembly : Assembly) (args : string[]) = - let entryPoint = assembly.GetType (sprintf "%s.%s" testNamespace EntryPoint.entryPointClassName) + let entryPoint = assembly.GetType (sprintf "%s.%s" EntryPoint.entryPointClassName EntryPoint.entryPointClassName) let main = entryPoint.GetMethod("Main", BindingFlags.NonPublic ||| BindingFlags.Static) let previousCulture = CultureInfo.DefaultThreadCurrentCulture let previousOut = Console.Out From dbc18cd282db881766e0ecd5218babf233d6ab6d Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Wed, 24 Feb 2021 12:30:01 -0800 Subject: [PATCH 12/59] fixed hard-coded simulator name --- src/Simulation/EntryPointDriver/Driver.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Simulation/EntryPointDriver/Driver.cs b/src/Simulation/EntryPointDriver/Driver.cs index ef8f48b788f..13a6fb4776c 100644 --- a/src/Simulation/EntryPointDriver/Driver.cs +++ b/src/Simulation/EntryPointDriver/Driver.cs @@ -417,7 +417,7 @@ private Command CreateSubmitEntryPointCommand(IEntryPoint entryPoint) private OptionInfo CreateSimulatorOption(IEntryPoint entryPoint) => new OptionInfo( this.settings.SimulatorOptionAliases, - "QuantumSimulator", + entryPoint.DefaultSimulatorName, "The name of the simulator to use.", suggestions: new[] { From 1a9090e85b13c568d0c8b852d124b5a9b0593274 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Wed, 24 Feb 2021 16:09:41 -0800 Subject: [PATCH 13/59] Support validators from being elevated to super-command when sub-command is set as default. --- .../EntryPointDriver.Tests/Tests.fs | 32 ++--- src/Simulation/EntryPointDriver/Driver.cs | 110 +++++++++++------- 2 files changed, 88 insertions(+), 54 deletions(-) diff --git a/src/Simulation/EntryPointDriver.Tests/Tests.fs b/src/Simulation/EntryPointDriver.Tests/Tests.fs index 0fd3f84c339..af1d60a96f1 100644 --- a/src/Simulation/EntryPointDriver.Tests/Tests.fs +++ b/src/Simulation/EntryPointDriver.Tests/Tests.fs @@ -192,7 +192,7 @@ let private testWithTarget defaultTarget = |> testWithConstants /// Standard command-line arguments for the "submit" command without specifying a target. -let private submitWithoutTarget = +let private submitWithoutTarget = [ "submit" "--subscription" "mySubscription" @@ -421,7 +421,7 @@ let ``Accepts one-tuple`` () = let given = test "Accepts one-tuple" given ["-x"; "7"; "-y"; "8"] |> yields "7 8" -[] +[] let ``Accepts two-tuple`` () = let given = test "Accepts two-tuple" given ["-x"; "7"; "-y"; "8"; "-z"; "9"] |> yields "7 8 9" @@ -452,7 +452,7 @@ let ``Shadows --simulator`` () = |> yields (sprintf "Warning: Option --simulator is overridden by an entry point parameter name. Using default value QuantumSimulator. %s" AssemblyConstants.ResourcesEstimator) - given ["-s"; AssemblyConstants.ResourcesEstimator; "--simulator"; "foo"] |> fails + given ["-s"; AssemblyConstants.ResourcesEstimator; "--simulator"; "foo"] |> fails given ["-s"; "foo"] |> fails [] @@ -834,9 +834,12 @@ let ``Shows help text for submit command`` () = let message = name |> sprintf "Usage: - %s submit [options] + %s submit [options] [command] Options: + -n (REQUIRED) A number. + --pauli (REQUIRED) The name of a Pauli matrix. + --my-cool-bool (REQUIRED) A neat bit. --subscription (REQUIRED) The subscription ID. --resource-group (REQUIRED) The resource group name. --workspace (REQUIRED) The workspace name. @@ -850,10 +853,10 @@ let ``Shows help text for submit command`` () = --output The information to show in the output after the job is submitted. --dry-run Validate the program and options, but do not submit to Azure Quantum. --verbose Show additional information about the submission. - -n (REQUIRED) A number. - --pauli (REQUIRED) The name of a Pauli matrix. - --my-cool-bool (REQUIRED) A neat bit. - -?, -h, --help Show help and usage information" + -?, -h, --help Show help and usage information + + Commands: + EntryPointTest.Help This test checks that the entry point documentation appears correctly in the command line help message." let given = test "Help" given ["submit"; "--help"] |> yields message @@ -863,9 +866,12 @@ let ``Shows help text for submit command with default target`` () = let message = name |> sprintf "Usage: - %s submit [options] + %s submit [options] [command] Options: + -n (REQUIRED) A number. + --pauli (REQUIRED) The name of a Pauli matrix. + --my-cool-bool (REQUIRED) A neat bit. --subscription (REQUIRED) The subscription ID. --resource-group (REQUIRED) The resource group name. --workspace (REQUIRED) The workspace name. @@ -879,9 +885,9 @@ let ``Shows help text for submit command with default target`` () = --output The information to show in the output after the job is submitted. --dry-run Validate the program and options, but do not submit to Azure Quantum. --verbose Show additional information about the submission. - -n (REQUIRED) A number. - --pauli (REQUIRED) The name of a Pauli matrix. - --my-cool-bool (REQUIRED) A neat bit. - -?, -h, --help Show help and usage information" + -?, -h, --help Show help and usage information + + Commands: + EntryPointTest.Help This test checks that the entry point documentation appears correctly in the command line help message." let given = testWithTarget "foo.target" "Help" given ["submit"; "--help"] |> yields message diff --git a/src/Simulation/EntryPointDriver/Driver.cs b/src/Simulation/EntryPointDriver/Driver.cs index 13a6fb4776c..fd27c4467d8 100644 --- a/src/Simulation/EntryPointDriver/Driver.cs +++ b/src/Simulation/EntryPointDriver/Driver.cs @@ -150,13 +150,13 @@ public async Task Run(string[] args) var simulateSubCommands = this.entryPoints.Select(this.CreateSimulateEntryPointCommand); var submitSubCommands = this.entryPoints.Select(this.CreateSubmitEntryPointCommand); - var simulate = CreateSimulateCommand(simulateSubCommands); - var submit = CreateSubmitCommand(submitSubCommands); + var (simulate, simulateValids) = CreateSimulateCommand(simulateSubCommands); + var (submit, submitValids) = CreateSubmitCommand(submitSubCommands); - var root = new RootCommand(/*entryPoint.Summary*/) { simulate, submit }; + var root = new RootCommand() { simulate, submit }; if (this.entryPoints.Count() == 1) { - SetSubCommandAsDefault(root, simulate); + SetSubCommandAsDefault(root, simulate, simulateValids); root.Description = this.entryPoints.First().Summary; } @@ -187,13 +187,17 @@ internal static void DisplayWithColor(ConsoleColor color, TextWriter writer, str /// /// The command whose handle and options will be set. /// The sub command that will be copied from. - private static void SetSubCommandAsDefault(Command root, Command subCommand) + private static void SetSubCommandAsDefault(Command root, Command subCommand, IEnumerable> validators) { root.Handler = subCommand.Handler; foreach (var option in subCommand.Options) { root.AddOption(option); } + foreach (var validator in validators) + { + root.AddValidator(validator); + } } /// @@ -236,17 +240,24 @@ private static T DefaultIfShadowed(IEntryPoint entryPoint, OptionInfo opti /// The command to add the option to. /// The option to add. /// The type of the option's argument. - private static void AddOptionIfAvailable(Command command, OptionInfo option) + private static IEnumerable> AddOptionIfAvailable(Command command, OptionInfo option) { + var validators = Enumerable.Empty>(); + if (IsAliasAvailable(option.Aliases.First(), command.Options)) { command.AddOption(option.Create(option.Aliases.Where(alias => IsAliasAvailable(alias, command.Options)))); } else if (option.Required) { - command.AddValidator(commandResult => - $"The required option {option.Aliases.First()} conflicts with an entry point parameter name."); + ValidateSymbol validator = commandResult => + $"The required option {option.Aliases.First()} conflicts with an entry point parameter name."; + + command.AddValidator(validator); + validators = new[] { validator }; } + + return validators; } /// @@ -254,8 +265,11 @@ private static void AddOptionIfAvailable(Command command, OptionInfo optio /// /// The command to add the validator to. /// The primary aliases of the options to be marked as mutually exclusive. - private static void MarkOptionsAsMutuallyExclusive(Command command, string[] primaryAliases) => - command.AddValidator(result => + private static IEnumerable> MarkOptionsAsMutuallyExclusive(Command command, string[] primaryAliases) + { + var validators = Enumerable.Empty>(); + + ValidateSymbol validator = result => { var presentAliases = new List(); foreach (var rawAlias in primaryAliases) @@ -275,31 +289,38 @@ private static void MarkOptionsAsMutuallyExclusive(Command command, string[] pri } return default; - }); + }; + + command.AddValidator(validator); + return new[] { validator }; + } /// /// Creates the simulate command. /// /// The entry point commands that will be the sub commands to the created command. /// The created simulate command. - private static Command CreateSimulateCommand(IEnumerable entryPointCommands) + private static (Command, IEnumerable>) CreateSimulateCommand(IEnumerable<(Command, IEnumerable>)> entryPointCommands) { + var validators = Enumerable.Empty>(); + var simulate = new Command("simulate", "(default) Run the program using a local simulator."); if (entryPointCommands.Count() == 1) { - var epCommand = entryPointCommands.First(); + var (epCommand, valids) = entryPointCommands.First(); simulate.AddCommand(epCommand); - SetSubCommandAsDefault(simulate, epCommand); + SetSubCommandAsDefault(simulate, epCommand, valids); + validators = valids; } else { - foreach (var epCommand in entryPointCommands) + foreach (var (epCommand, _) in entryPointCommands) { simulate.AddCommand(epCommand); } } - return simulate; + return (simulate, validators); } /// @@ -307,27 +328,30 @@ private static Command CreateSimulateCommand(IEnumerable entryPointComm /// /// The entry point commands that will be the sub commands to the created command. /// The created submit command. - private static Command CreateSubmitCommand(IEnumerable entryPointCommands) + private static (Command, IEnumerable>) CreateSubmitCommand(IEnumerable<(Command, IEnumerable>)> entryPointCommands) { + var validators = Enumerable.Empty>(); + var submit = new Command("submit", "Submit the program to Azure Quantum.") { IsHidden = true, }; if (entryPointCommands.Count() == 1) { - var epCommand = entryPointCommands.First(); + var (epCommand, valids) = entryPointCommands.First(); submit.AddCommand(epCommand); - SetSubCommandAsDefault(submit, epCommand); + SetSubCommandAsDefault(submit, epCommand, valids); + validators = valids; } else { - foreach (var epCommand in entryPointCommands) + foreach (var (epCommand, _) in entryPointCommands) { submit.AddCommand(epCommand); } } - return submit; + return (submit, validators); } /// @@ -357,8 +381,10 @@ private Func> CreateSubmitHandle(Func /// The entry point to make a command for. /// The command corresponding to the given entry point. - private Command CreateSimulateEntryPointCommand(IEntryPoint entryPoint) + private (Command, IEnumerable>) CreateSimulateEntryPointCommand(IEntryPoint entryPoint) { + var validators = Enumerable.Empty>(); + var command = new Command(entryPoint.Name, entryPoint.Summary) { Handler = CommandHandler.Create(CreateSimulateHandle(Simulate, entryPoint)) @@ -368,9 +394,9 @@ private Command CreateSimulateEntryPointCommand(IEntryPoint entryPoint) command.AddOption(option); } - AddOptionIfAvailable(command, this.CreateSimulatorOption(entryPoint)); + validators = validators.Concat(AddOptionIfAvailable(command, this.CreateSimulatorOption(entryPoint))); - return command; + return (command, validators); } /// @@ -378,8 +404,10 @@ private Command CreateSimulateEntryPointCommand(IEntryPoint entryPoint) /// /// The entry point to make a command for. /// The command corresponding to the given entry point. - private Command CreateSubmitEntryPointCommand(IEntryPoint entryPoint) + private (Command, IEnumerable>) CreateSubmitEntryPointCommand(IEntryPoint entryPoint) { + var validators = Enumerable.Empty>(); + var command = new Command(entryPoint.Name, entryPoint.Summary) { Handler = CommandHandler.Create(CreateSubmitHandle(Submit, entryPoint)) @@ -389,24 +417,24 @@ private Command CreateSubmitEntryPointCommand(IEntryPoint entryPoint) command.AddOption(option); } - AddOptionIfAvailable(command, SubscriptionOption); - AddOptionIfAvailable(command, ResourceGroupOption); - AddOptionIfAvailable(command, WorkspaceOption); - AddOptionIfAvailable(command, this.CreateTargetOption(entryPoint)); - AddOptionIfAvailable(command, StorageOption); - AddOptionIfAvailable(command, AadTokenOption); - AddOptionIfAvailable(command, BaseUriOption); - AddOptionIfAvailable(command, LocationOption); - AddOptionIfAvailable(command, JobNameOption); - AddOptionIfAvailable(command, ShotsOption); - AddOptionIfAvailable(command, OutputOption); - AddOptionIfAvailable(command, DryRunOption); - AddOptionIfAvailable(command, VerboseOption); - MarkOptionsAsMutuallyExclusive( + validators = validators.Concat(AddOptionIfAvailable(command, SubscriptionOption)); + validators = validators.Concat(AddOptionIfAvailable(command, ResourceGroupOption)); + validators = validators.Concat(AddOptionIfAvailable(command, WorkspaceOption)); + validators = validators.Concat(AddOptionIfAvailable(command, this.CreateTargetOption(entryPoint))); + validators = validators.Concat(AddOptionIfAvailable(command, StorageOption)); + validators = validators.Concat(AddOptionIfAvailable(command, AadTokenOption)); + validators = validators.Concat(AddOptionIfAvailable(command, BaseUriOption)); + validators = validators.Concat(AddOptionIfAvailable(command, LocationOption)); + validators = validators.Concat(AddOptionIfAvailable(command, JobNameOption)); + validators = validators.Concat(AddOptionIfAvailable(command, ShotsOption)); + validators = validators.Concat(AddOptionIfAvailable(command, OutputOption)); + validators = validators.Concat(AddOptionIfAvailable(command, DryRunOption)); + validators = validators.Concat(AddOptionIfAvailable(command, VerboseOption)); + validators = validators.Concat(MarkOptionsAsMutuallyExclusive( command, - new[] { BaseUriOption.Aliases.First(), LocationOption.Aliases.First() }); + new[] { BaseUriOption.Aliases.First(), LocationOption.Aliases.First() })); - return command; + return (command, validators); } /// From 20296b3996aec775d153390737c996ff0d4e823c Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Wed, 24 Feb 2021 22:20:01 -0800 Subject: [PATCH 14/59] cleaned up stuff --- src/Simulation/EntryPointDriver/Azure.cs | 58 ++++++---------- src/Simulation/EntryPointDriver/Driver.cs | 69 +++++++------------ src/Simulation/EntryPointDriver/Simulation.cs | 35 ++++------ 3 files changed, 57 insertions(+), 105 deletions(-) diff --git a/src/Simulation/EntryPointDriver/Azure.cs b/src/Simulation/EntryPointDriver/Azure.cs index 9556732ad4e..2fa8cf9a0a8 100644 --- a/src/Simulation/EntryPointDriver/Azure.cs +++ b/src/Simulation/EntryPointDriver/Azure.cs @@ -5,10 +5,10 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.Azure.Quantum; -using Microsoft.Azure.Quantum.Exceptions; +using Microsoft.Azure.Quantum.Exceptions; using Microsoft.Quantum.Runtime; using Microsoft.Quantum.Simulation.Common.Exceptions; -using Microsoft.Quantum.Simulation.Core; +using Microsoft.Quantum.Simulation.Core; using static Microsoft.Quantum.EntryPointDriver.Driver; namespace Microsoft.Quantum.EntryPointDriver @@ -18,34 +18,19 @@ namespace Microsoft.Quantum.EntryPointDriver /// public static class Azure { - /// - /// Submits the entry point to Azure Quantum. + /// + /// Submits the entry point to Azure Quantum. /// /// The entry point's argument type. - /// The entry point's return type. - /// The entry point. - /// The information about the entry point. - /// The input argument tuple to the entry point. - /// The submission settings. + /// The entry point's return type. + /// The entry point. + /// The information about the entry point. + /// The input argument tuple to the entry point. + /// The submission settings. /// The exit code. public static async Task Submit( IEntryPoint entryPoint, EntryPointInfo info, TIn input, AzureSettings settings) { - /*/ - - Console.WriteLine("Submit"); - Console.WriteLine($"EntryPoint: {entryPoint.Name}"); - Console.WriteLine($"Arguments: {input}"); - Console.WriteLine("With Azure Settings:"); - foreach (var prop in typeof(AzureSettings).GetProperties()) - { - Console.WriteLine($"\t{prop.Name}: {prop.GetValue(settings)}"); - } - - return 0; - - /*/ - if (settings.Verbose) { Console.WriteLine(settings); @@ -63,20 +48,17 @@ public static async Task Submit( return settings.DryRun ? Validate(machine, info, input) : await SubmitJob(machine, info, input, settings); - - /**/ - } - /// - /// Submits a job to Azure Quantum. + /// + /// Submits a job to Azure Quantum. /// /// The input type. /// The output type. - /// The quantum machine target. - /// The information about the entry point. + /// The quantum machine target. + /// The information about the entry point. /// The input argument tuple to the entry point. - /// The submission settings. + /// The submission settings. /// The exit code. private static async Task SubmitJob( IQuantumMachine machine, EntryPointInfo info, TIn input, AzureSettings settings) @@ -108,14 +90,14 @@ private static async Task SubmitJob( } } - /// - /// Validates the program for the quantum machine target. + /// + /// Validates the program for the quantum machine target. /// /// The input type. - /// The output type. - /// The quantum machine target. - /// The information about the entry point. - /// The input argument tuple to the entry point. + /// The output type. + /// The quantum machine target. + /// The information about the entry point. + /// The input argument tuple to the entry point. /// The exit code. private static int Validate(IQuantumMachine machine, EntryPointInfo info, TIn input) { diff --git a/src/Simulation/EntryPointDriver/Driver.cs b/src/Simulation/EntryPointDriver/Driver.cs index fd27c4467d8..43af128c031 100644 --- a/src/Simulation/EntryPointDriver/Driver.cs +++ b/src/Simulation/EntryPointDriver/Driver.cs @@ -1,7 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -using Microsoft.Quantum.Simulation.Simulators.QCTraceSimulators.Circuits; using System; using System.Collections.Generic; using System.Collections.Immutable; @@ -187,6 +186,7 @@ internal static void DisplayWithColor(ConsoleColor color, TextWriter writer, str /// /// The command whose handle and options will be set. /// The sub command that will be copied from. + /// The validators associated with the sub command. private static void SetSubCommandAsDefault(Command root, Command subCommand, IEnumerable> validators) { root.Handler = subCommand.Handler; @@ -194,9 +194,9 @@ private static void SetSubCommandAsDefault(Command root, Command subCommand, IEn { root.AddOption(option); } - foreach (var validator in validators) - { - root.AddValidator(validator); + foreach (var validator in validators) + { + root.AddValidator(validator); } } @@ -237,9 +237,10 @@ private static T DefaultIfShadowed(IEntryPoint entryPoint, OptionInfo opti /// Adds the option to the command using only the aliases that are available, and only if the primary (first) /// alias is available. If a required option is not available, the command is disabled. /// + /// The type of the option's argument. /// The command to add the option to. /// The option to add. - /// The type of the option's argument. + /// The list of validators added to the command during this function. private static IEnumerable> AddOptionIfAvailable(Command command, OptionInfo option) { var validators = Enumerable.Empty>(); @@ -265,10 +266,11 @@ private static IEnumerable> AddOptionIfAvailable /// The command to add the validator to. /// The primary aliases of the options to be marked as mutually exclusive. - private static IEnumerable> MarkOptionsAsMutuallyExclusive(Command command, string[] primaryAliases) - { - var validators = Enumerable.Empty>(); - + /// The list of validators added to the command during this function. + private static IEnumerable> MarkOptionsAsMutuallyExclusive(Command command, string[] primaryAliases) + { + var validators = Enumerable.Empty>(); + ValidateSymbol validator = result => { var presentAliases = new List(); @@ -289,18 +291,19 @@ private static IEnumerable> MarkOptionsAsMutuallyE } return default; - }; - - command.AddValidator(validator); - return new[] { validator }; + }; + + command.AddValidator(validator); + return new[] { validator }; } /// /// Creates the simulate command. /// /// The entry point commands that will be the sub commands to the created command. - /// The created simulate command. - private static (Command, IEnumerable>) CreateSimulateCommand(IEnumerable<(Command, IEnumerable>)> entryPointCommands) + /// Tuple with the created simulate command and the validators for that command. + private static (Command, IEnumerable>) CreateSimulateCommand( + IEnumerable<(Command, IEnumerable>)> entryPointCommands) { var validators = Enumerable.Empty>(); @@ -327,7 +330,7 @@ private static (Command, IEnumerable>) CreateSimul /// Creates the Azure submit command. /// /// The entry point commands that will be the sub commands to the created command. - /// The created submit command. + /// Tuple with the created submit command and the validators for that command. private static (Command, IEnumerable>) CreateSubmitCommand(IEnumerable<(Command, IEnumerable>)> entryPointCommands) { var validators = Enumerable.Empty>(); @@ -354,40 +357,18 @@ private static (Command, IEnumerable>) CreateSubmi return (submit, validators); } - /// - /// Creates a wrapper for a command handle that is specific to an entry point. - /// - /// The input argument type to the handle. - /// The handle. - /// The entry point this handle is specific to. - /// The handle wrapper for the given handle. - //private Func> CreateHandle(Func> handle, IEntryPoint entryPoint) - //{ - // return (ParseResult parseResult, TArg arg) => handle(parseResult, arg, entryPoint); - //} - - private Func> CreateSimulateHandle(Func> handle, IEntryPoint entryPoint) - { - return (ParseResult parseResult, string simulator) => handle(parseResult, simulator, entryPoint); - } - - private Func> CreateSubmitHandle(Func> handle, IEntryPoint entryPoint) - { - return (ParseResult parseResult, AzureSettings settings) => handle(parseResult, settings, entryPoint); - } - /// /// Creates a sub command specific to the given entry point for the simulate command. /// /// The entry point to make a command for. - /// The command corresponding to the given entry point. + /// Tuple with the command corresponding to the given entry point and the validators for that command. private (Command, IEnumerable>) CreateSimulateEntryPointCommand(IEntryPoint entryPoint) { var validators = Enumerable.Empty>(); var command = new Command(entryPoint.Name, entryPoint.Summary) { - Handler = CommandHandler.Create(CreateSimulateHandle(Simulate, entryPoint)) + Handler = CommandHandler.Create((ParseResult parseResult, string simulator) => this.Simulate(parseResult, simulator, entryPoint)) }; foreach (var option in entryPoint.Options) { @@ -403,14 +384,14 @@ private Func> CreateSubmitHandle(Func /// The entry point to make a command for. - /// The command corresponding to the given entry point. + /// Tuple with the command corresponding to the given entry point and the validators for that command. private (Command, IEnumerable>) CreateSubmitEntryPointCommand(IEntryPoint entryPoint) { var validators = Enumerable.Empty>(); var command = new Command(entryPoint.Name, entryPoint.Summary) { - Handler = CommandHandler.Create(CreateSubmitHandle(Submit, entryPoint)) + Handler = CommandHandler.Create((ParseResult parseResult, AzureSettings settings) => this.Submit(parseResult, settings, entryPoint)) }; foreach (var option in entryPoint.Options) { @@ -477,7 +458,7 @@ private OptionInfo CreateSimulatorOption(IEntryPoint entryPoint) => /// The entry point to simulate. /// The exit code. private async Task Simulate(ParseResult parseResult, string simulator, IEntryPoint entryPoint) => - await entryPoint.Simulate(parseResult, settings, DefaultIfShadowed(entryPoint, CreateSimulatorOption(entryPoint), simulator)); + await entryPoint.Simulate(parseResult, settings, DefaultIfShadowed(entryPoint, this.CreateSimulatorOption(entryPoint), simulator)); /// /// Submits the entry point to Azure Quantum. @@ -492,7 +473,7 @@ private async Task Submit(ParseResult parseResult, AzureSettings azureSetti Subscription = azureSettings.Subscription, ResourceGroup = azureSettings.ResourceGroup, Workspace = azureSettings.Workspace, - Target = DefaultIfShadowed(entryPoint, CreateTargetOption(entryPoint), azureSettings.Target), + Target = DefaultIfShadowed(entryPoint, this.CreateTargetOption(entryPoint), azureSettings.Target), Storage = DefaultIfShadowed(entryPoint, StorageOption, azureSettings.Storage), AadToken = DefaultIfShadowed(entryPoint, AadTokenOption, azureSettings.AadToken), BaseUri = DefaultIfShadowed(entryPoint, BaseUriOption, azureSettings.BaseUri), diff --git a/src/Simulation/EntryPointDriver/Simulation.cs b/src/Simulation/EntryPointDriver/Simulation.cs index 1e17935d3d2..ac5ee502ed0 100644 --- a/src/Simulation/EntryPointDriver/Simulation.cs +++ b/src/Simulation/EntryPointDriver/Simulation.cs @@ -6,7 +6,7 @@ using System.Reflection; using System.Threading.Tasks; using Microsoft.Quantum.Simulation.Core; -using Microsoft.Quantum.Simulation.Simulators; +using Microsoft.Quantum.Simulation.Simulators; using static Microsoft.Quantum.EntryPointDriver.Driver; namespace Microsoft.Quantum.EntryPointDriver @@ -19,26 +19,17 @@ namespace Microsoft.Quantum.EntryPointDriver /// The entry point's return type. public static class Simulation where TCallable : AbstractCallable, ICallable { - /// - /// Simulates the entry point. - /// - /// The entry point. - /// The input argument tuple to the entry point. - /// The driver settings. - /// The simulator to use. + /// + /// Simulates the entry point. + /// + /// The entry point. + /// The input argument tuple to the entry point. + /// The driver settings. + /// The simulator to use. /// The exit code. public static async Task Simulate( IEntryPoint entryPoint, TIn input, DriverSettings settings, string simulator) { - /*/ - - Console.WriteLine("Simulate"); - Console.WriteLine($"EntryPoint: {entryPoint.Name}"); - Console.WriteLine($"Arguments: {input}"); - Console.WriteLine($"On Simulator: {simulator}"); - - /*/ - if (simulator == settings.ResourcesEstimatorName) { // Force the explicit load of the QSharp.Core assembly so that the ResourcesEstimator @@ -69,15 +60,13 @@ public static async Task Simulate( await RunSimulator(input, createSimulator); } - /**/ - return 0; } - /// - /// Runs the entry point on a simulator and displays its return value. - /// - /// The input argument tuple to the entry point. + /// + /// Runs the entry point on a simulator and displays its return value. + /// + /// The input argument tuple to the entry point. /// A function that creates an instance of the simulator to use. private static async Task RunSimulator(TIn input, Func createSimulator) { From 319bc7332d988e76c2c15ab55299e8cb553e3c38 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Wed, 24 Feb 2021 22:56:22 -0800 Subject: [PATCH 15/59] further cleanup --- src/Simulation/CSharpGeneration/EntryPoint.fs | 52 ++++--------------- .../CSharpGeneration/RewriteStep.fs | 4 +- .../EntryPointDriver/IEntryPoint.cs | 2 +- 3 files changed, 13 insertions(+), 45 deletions(-) diff --git a/src/Simulation/CSharpGeneration/EntryPoint.fs b/src/Simulation/CSharpGeneration/EntryPoint.fs index 623c45c4f7d..67a941a1dca 100644 --- a/src/Simulation/CSharpGeneration/EntryPoint.fs +++ b/src/Simulation/CSharpGeneration/EntryPoint.fs @@ -124,9 +124,6 @@ let private generateEntryPointClassName (entryPoint : QsCallable) = let private submitMethod context entryPoint = let callableName, _, _ = callableTypeNames context entryPoint - //let driverType = generic (driverNamespace + ".Driver") ``<<`` [callableName; argTypeName; returnTypeName] ``>>`` - //let entryPointInstance = ``new`` (``type`` entryPointClassName) ``(`` [] ``)`` - //let driver = ``new`` driverType ``(`` [driverSettings; entryPointInstance] ``)`` let parseResultParamName = "parseResult" let settingsParamName = "settings" let args = @@ -149,8 +146,6 @@ let private submitMethod context entryPoint = let private simulateMethod context entryPoint = let callableName, argTypeName, returnTypeName = callableTypeNames context entryPoint let simulationType = generic (driverNamespace + ".Simulation") ``<<`` [callableName; argTypeName; returnTypeName] ``>>`` - //let entryPointInstance = ``new`` (``type`` entryPointClassName) ``(`` [] ``)`` - //let driver = ``new`` driverType ``(`` [driverSettings; entryPointInstance] ``)`` let parseResultParamName = "parseResult" let settingsParamName = "settings" let simulatorParamName = "simulator" @@ -173,10 +168,7 @@ let private simulateMethod context entryPoint = (Some (``=>`` (simulationType <.> (ident "Simulate", args)))) /// The main method for the standalone executable. -let private mainMethod context (entryPoints : seq) = - //let callableName, argTypeName, returnTypeName = callableTypeNames context entryPoint - //let driverType = generic (driverNamespace + ".Driver") ``<<`` [callableName; argTypeName; returnTypeName] ``>>`` - //let entryPointInstance = ``new`` (``type`` entryPointClassName) ``(`` [] ``)`` +let private mainMethod (entryPoints : seq) = let entryPointArrayMembers = [ @@ -195,24 +187,23 @@ let private mainMethod context (entryPoints : seq) = [``private``; ``static``; async] (Some (``=>`` (await (driver <.> (ident "Run", [ident commandLineArgsName]))))) -let private mainClass context (entryPoints : seq) = - ``class`` entryPointClassName ``<<`` [] ``>>`` - ``:`` None ``,`` [] - [``internal``] - ``{`` - [mainMethod context entryPoints] - ``}`` +let mainNamespace (entryPoints : seq) = + let mainClass = + ``class`` entryPointClassName ``<<`` [] ``>>`` + ``:`` None ``,`` [] + [``internal``] + ``{`` + [mainMethod entryPoints] + ``}`` -let mainNamespace context (entryPoints : seq) = ``namespace`` entryPointClassName ``{`` (Seq.map using SimulationCode.autoNamespaces) - [mainClass context entryPoints] + [mainClass] ``}`` /// The class that adapts the entry point for use with the command-line parsing library and the driver. let private entryPointClass context (entryPoint : QsCallable) = - //let callableName, argTypeName, returnTypeName = callableTypeNames context entryPoint let property name typeName value = ``property-arrow_get`` typeName name [``public``] get (``=>`` value) let nameProperty = entryPoint.FullName.ToString() @@ -232,23 +223,17 @@ let private entryPointClass context (entryPoint : QsCallable) = |> (fun (_, value) -> if value = null then "" else value) |> literal |> property "DefaultExecutionTarget" "string" - //let infoProperty = - // property "Info" (sprintf "EntryPointInfo<%s, %s>" argTypeName returnTypeName) - // (ident callableName <|.|> ident "Info") let members : MemberDeclarationSyntax list = [ nameProperty summaryProperty parameterOptionsProperty parameters defaultSimulatorNameProperty defaultExecutionTargetProperty - //infoProperty customSimulatorFactory defaultSimulator createArgument context entryPoint submitMethod context entryPoint simulateMethod context entryPoint - //mainMethod context entryPoint ] - //let baseName = sprintf "%s.IEntryPoint<%s, %s>" driverNamespace argTypeName returnTypeName let baseName = sprintf "%s.IEntryPoint" driverNamespace ``class`` (generateEntryPointClassName entryPoint |> snd) ``<<`` [] ``>>`` ``:`` (Some (simpleBase baseName)) ``,`` [] @@ -267,8 +252,6 @@ let private entryPointNamespace context name (entryPoints : seq) = /// Generates C# source code for a standalone executable that runs the Q# entry point. let generateEntryPointSource context (entryPoints : seq) (mainNamespace : NamespaceDeclarationSyntax option) = - //let tempEntryPoint = Seq.head entryPoints - let entryPointNamespaces = entryPoints |> Seq.groupBy (fun ep -> ep.FullName.Namespace) let epNamespaces = [for ns, eps in entryPointNamespaces -> entryPointNamespace context ns eps] @@ -277,21 +260,6 @@ let generateEntryPointSource context (entryPoints : seq) (mainNamesp match mainNamespace with | Some mainNamespace -> (mainNamespace :> MemberDeclarationSyntax) :: epNamespaces | None -> epNamespaces - - //let ns, eps = Seq.head entryPointNamespaces - //let firstNS = - // match mainNamespace with - // | Some mainNS -> (entryPointNamespace context ns eps).AddMembers(mainNS) - // | None -> entryPointNamespace context ns eps - // :> MemberDeclarationSyntax - //firstNS :: [for ns, eps in Seq.tail entryPointNamespaces -> entryPointNamespace context ns eps] - - //let ns = - // ``namespace`` tempEntryPoint.FullName.Namespace - // ``{`` - // (Seq.map using SimulationCode.autoNamespaces) - // [entryPointClass context tempEntryPoint] - // ``}`` // ToDo: look into including the autoNamespaces only once per file ``compilation unit`` [] [] namespaces |> ``with leading comments`` SimulationCode.autogenComment diff --git a/src/Simulation/CSharpGeneration/RewriteStep.fs b/src/Simulation/CSharpGeneration/RewriteStep.fs index c5fba46f032..e99ed51d4ed 100644 --- a/src/Simulation/CSharpGeneration/RewriteStep.fs +++ b/src/Simulation/CSharpGeneration/RewriteStep.fs @@ -28,7 +28,7 @@ type Emitter() = member this.AssemblyConstants = upcast _AssemblyConstants member this.GeneratedDiagnostics = upcast _Diagnostics - member this.ImplementsPreconditionVerification = false + member this.ImplementsPreconditionVerification = true member this.ImplementsPostconditionVerification = false member this.ImplementsTransformation = true @@ -66,7 +66,7 @@ type Emitter() = compilation.EntryPoints |> Seq.map (fun ep -> context.allCallables.[ep]) - let main = EntryPoint.mainNamespace context entryPointCallables + let main = EntryPoint.mainNamespace entryPointCallables let entryPointSources = entryPointCallables diff --git a/src/Simulation/EntryPointDriver/IEntryPoint.cs b/src/Simulation/EntryPointDriver/IEntryPoint.cs index f87f63df916..918c0b25027 100644 --- a/src/Simulation/EntryPointDriver/IEntryPoint.cs +++ b/src/Simulation/EntryPointDriver/IEntryPoint.cs @@ -53,7 +53,7 @@ public interface IEntryPoint Task Submit(ParseResult parseResult, AzureSettings settings); /// - /// + /// Simulates the entry point. /// /// The command-line parsing result. /// The driver settings. From 4cd5b01752288dc0bffa1e50d7fd6e46e917b8b8 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Wed, 24 Feb 2021 23:06:19 -0800 Subject: [PATCH 16/59] Moved using statements to be file-wide for the entry point files. --- src/Simulation/CSharpGeneration/EntryPoint.fs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Simulation/CSharpGeneration/EntryPoint.fs b/src/Simulation/CSharpGeneration/EntryPoint.fs index 67a941a1dca..ea5a53a061e 100644 --- a/src/Simulation/CSharpGeneration/EntryPoint.fs +++ b/src/Simulation/CSharpGeneration/EntryPoint.fs @@ -198,7 +198,7 @@ let mainNamespace (entryPoints : seq) = ``namespace`` entryPointClassName ``{`` - (Seq.map using SimulationCode.autoNamespaces) + [] [mainClass] ``}`` @@ -245,7 +245,7 @@ let private entryPointClass context (entryPoint : QsCallable) = let private entryPointNamespace context name (entryPoints : seq) = ``namespace`` name ``{`` - (Seq.map using SimulationCode.autoNamespaces) + [] [for ep in entryPoints -> entryPointClass context ep] ``}`` :> MemberDeclarationSyntax @@ -260,7 +260,6 @@ let generateEntryPointSource context (entryPoints : seq) (mainNamesp match mainNamespace with | Some mainNamespace -> (mainNamespace :> MemberDeclarationSyntax) :: epNamespaces | None -> epNamespaces - // ToDo: look into including the autoNamespaces only once per file - ``compilation unit`` [] [] namespaces + ``compilation unit`` [] (Seq.map using SimulationCode.autoNamespaces) namespaces |> ``with leading comments`` SimulationCode.autogenComment |> SimulationCode.formatSyntaxTree From b7fde3c88cc25535ad45d6ad63cf9e9d6d5151ea Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Wed, 24 Feb 2021 23:35:21 -0800 Subject: [PATCH 17/59] fixed --- src/Simulation/EntryPointDriver.Tests/Tests.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Simulation/EntryPointDriver.Tests/Tests.fs b/src/Simulation/EntryPointDriver.Tests/Tests.fs index af1d60a96f1..d6fe89fbc5e 100644 --- a/src/Simulation/EntryPointDriver.Tests/Tests.fs +++ b/src/Simulation/EntryPointDriver.Tests/Tests.fs @@ -71,7 +71,7 @@ let private compileQSharp source = let private generateCSharp constants (compilation : QsCompilation) = let context = CodegenContext.Create (compilation, constants) let entryPoints = seq { for ep in compilation.EntryPoints -> context.allCallables.[ep] } - let mainNS = EntryPoint.mainNamespace context entryPoints + let mainNS = EntryPoint.mainNamespace entryPoints [ SimulationCode.generate testFile context EntryPoint.generateEntryPointSource context entryPoints (Some mainNS) From 9379191351497305d32483dec3a86192f48892d9 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Wed, 24 Feb 2021 23:36:45 -0800 Subject: [PATCH 18/59] Fixed vs solution issue --- Simulation.sln | 1376 ++++++++++++++++++++++++------------------------ 1 file changed, 688 insertions(+), 688 deletions(-) diff --git a/Simulation.sln b/Simulation.sln index b13975b999a..60cf221c4a5 100644 --- a/Simulation.sln +++ b/Simulation.sln @@ -1,688 +1,688 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.28809.33 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Runtime.Core", "src\Simulation\Core\Microsoft.Quantum.Runtime.Core.csproj", "{E9123D45-C1B0-4462-8810-D26ED6D31944}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime", "src\Simulation\QCTraceSimulator\Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj", "{058CB08D-BFA7-41E2-BE6B-0A0A72054F91}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Simulation.Common", "src\Simulation\Common\Microsoft.Quantum.Simulation.Common.csproj", "{8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Simulators", "src\Simulation\Simulators\Microsoft.Quantum.Simulators.csproj", "{72B7E75C-D305-45BD-929E-C86298AAA8DE}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime", "src\Simulation\QCTraceSimulator.Tests\Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj", "{DD50D2D9-2765-449B-8C4B-835A428E160D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulators", "src\Simulation\Simulators.Tests\Tests.Microsoft.Quantum.Simulators.csproj", "{23461B29-F9DE-4F5B-BC30-50BBE1A10B48}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "simulation", "simulation", "{34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.QSharp.Core", "src\Simulation\QSharpCore\Microsoft.Quantum.QSharp.Core.csproj", "{A6C5BA7A-DF6F-476F-9106-95905932B810}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "xunit", "xunit", "{34117E2A-DEDC-4274-AAA4-3C61ACF86284}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "core", "core", "{03736C2E-DB2A-46A9-B7B2-C1216BDECB4F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Xunit", "src\Xunit\Microsoft.Quantum.Xunit.csproj", "{ECFE1CE8-46A1-4D14-99D6-AAF76B704638}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "generation", "generation", "{A567C185-A429-418B-AFDE-6F1785BA4A77}" -EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Tests.CSharpGeneration", "src\Simulation\CSharpGeneration.Tests\Tests.CSharpGeneration.fsproj", "{10D7C395-4F79-4DAF-9289-A4B8FAF6183A}" -EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Microsoft.Quantum.RoslynWrapper", "src\Simulation\RoslynWrapper\Microsoft.Quantum.RoslynWrapper.fsproj", "{618FBF9D-4EF3-435D-9728-81C726236668}" -EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Tests.RoslynWrapper", "src\Simulation\RoslynWrapper.Tests\Tests.RoslynWrapper.fsproj", "{48206BD6-48DD-4442-A395-3A6594E4C9C6}" -EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Microsoft.Quantum.CSharpGeneration", "src\Simulation\CSharpGeneration\Microsoft.Quantum.CSharpGeneration.fsproj", "{B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestProjects", "TestProjects", "{09C842CB-930C-4C7D-AD5F-E30DE4A55820}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QSharpExe", "src\Simulation\Simulators.Tests\TestProjects\QSharpExe\QSharpExe.csproj", "{2F5796A7-4AF8-4B78-928A-0A3A80752F9D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.EntryPointDriver", "src\Simulation\EntryPointDriver\Microsoft.Quantum.EntryPointDriver.csproj", "{944FE7EF-9220-4CC6-BB20-CE517195B922}" -EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Tests.Microsoft.Quantum.EntryPointDriver", "src\Simulation\EntryPointDriver.Tests\Tests.Microsoft.Quantum.EntryPointDriver.fsproj", "{E2F30496-19D8-46A8-9BC0-26936FFE70D2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Library1", "src\Simulation\Simulators.Tests\TestProjects\Library1\Library1.csproj", "{7256B986-6705-42FC-9F57-485D72D9DE51}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Library2", "src\Simulation\Simulators.Tests\TestProjects\Library2\Library2.csproj", "{A85277B3-4E07-4E15-8F0C-07CC855A3BCB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Library with Spaces", "src\Simulation\Simulators.Tests\TestProjects\Library with Spaces\Library with Spaces.csproj", "{418E79F7-9FCF-4128-AA35-1334A685377D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnitTests", "src\Simulation\Simulators.Tests\TestProjects\UnitTests\UnitTests.csproj", "{46278108-D247-4EFC-AC34-23D4A676F62F}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Azure", "Azure", "{37CDC768-16D4-4574-8553-07D99D0A72F7}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Azure.Quantum.Client", "src\Azure\Azure.Quantum.Client\Microsoft.Azure.Quantum.Client.csproj", "{7F05FD87-A2FB-4915-A988-4EF92AB82179}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Azure.Quantum.Client.Test", "src\Azure\Azure.Quantum.Client.Test\Microsoft.Azure.Quantum.Client.Test.csproj", "{4858E5E3-23FA-4928-B99A-54065875A2B9}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HoneywellExe", "src\Simulation\Simulators.Tests\TestProjects\HoneywellExe\HoneywellExe.csproj", "{1448512E-132F-4DA8-BCBA-D98F16B31600}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IonQExe", "src\Simulation\Simulators.Tests\TestProjects\IonQExe\IonQExe.csproj", "{55833C6C-6E91-4413-9F77-96B3A09666B8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QCIExe", "src\Simulation\Simulators.Tests\TestProjects\QCIExe\QCIExe.csproj", "{C015FF41-9A51-4AF0-AEFC-2547D596B10A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TargetedExe", "src\Simulation\Simulators.Tests\TestProjects\TargetedExe\TargetedExe.csproj", "{D292BF18-3956-4827-820E-254C3F81EF09}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.QSharp.Foundation", "src\Simulation\QSharpFoundation\Microsoft.Quantum.QSharp.Foundation.csproj", "{DB45AD73-4D91-43F3-85CC-C63614A96FB0}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Type2.Core", "src\Simulation\Type2Core\Microsoft.Quantum.Type2.Core.csproj", "{AF6CD304-8E03-433D-AAA2-6E0094B53071}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulators.Type2", "src\Simulation\Simulators.Type2.Tests\Tests.Microsoft.Quantum.Simulators.Type2.csproj", "{ED3D7040-4B3F-4217-A75E-9DF63DD84707}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IntrinsicTests", "src\Simulation\Simulators.Tests\TestProjects\IntrinsicTests\IntrinsicTests.csproj", "{4EF958CA-B4A6-4E5F-924A-100B5615BEC3}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulators.Type1", "src\Simulation\Simulators.Type1.Tests\Tests.Microsoft.Quantum.Simulators.Type1.csproj", "{EB6E3DBD-C884-4241-9BC4-8281191D1F53}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Type1.Core", "src\Simulation\Type1Core\Microsoft.Quantum.Type1.Core.csproj", "{E1A463D7-2E23-4134-BE04-1EFF7A546813}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "targeting", "targeting", "{93409CC3-8DF9-45FA-AE21-16A19FDEF650}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Targets.Interfaces", "src\Simulation\TargetDefinitions\Interfaces\Microsoft.Quantum.Targets.Interfaces.csproj", "{789C86D9-CE77-40DA-BDDD-979436952512}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Type3.Core", "src\Simulation\Type3Core\Microsoft.Quantum.Type3.Core.csproj", "{7E24885B-D86D-477E-A840-06FA53C33FE1}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulators.Type3", "src\Simulation\Simulators.Type3.Tests\Tests.Microsoft.Quantum.Simulators.Type3.csproj", "{7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - MinSizeRel|Any CPU = MinSizeRel|Any CPU - MinSizeRel|x64 = MinSizeRel|x64 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - RelWithDebInfo|Any CPU = RelWithDebInfo|Any CPU - RelWithDebInfo|x64 = RelWithDebInfo|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|x64.ActiveCfg = Debug|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|x64.Build.0 = Debug|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.MinSizeRel|x64.ActiveCfg = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.MinSizeRel|x64.Build.0 = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.Release|Any CPU.Build.0 = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.Release|x64.ActiveCfg = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.Release|x64.Build.0 = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Debug|Any CPU.Build.0 = Debug|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Debug|x64.ActiveCfg = Debug|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Debug|x64.Build.0 = Debug|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.MinSizeRel|x64.ActiveCfg = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.MinSizeRel|x64.Build.0 = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Release|Any CPU.ActiveCfg = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Release|Any CPU.Build.0 = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Release|x64.ActiveCfg = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Release|x64.Build.0 = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Debug|x64.ActiveCfg = Debug|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Debug|x64.Build.0 = Debug|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.MinSizeRel|x64.ActiveCfg = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.MinSizeRel|x64.Build.0 = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Release|Any CPU.Build.0 = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Release|x64.ActiveCfg = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Release|x64.Build.0 = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Debug|x64.ActiveCfg = Debug|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Debug|x64.Build.0 = Debug|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.MinSizeRel|x64.ActiveCfg = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.MinSizeRel|x64.Build.0 = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Release|Any CPU.Build.0 = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Release|x64.ActiveCfg = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Release|x64.Build.0 = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.Debug|x64.ActiveCfg = Debug|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.Debug|x64.Build.0 = Debug|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.Release|Any CPU.Build.0 = Release|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.Release|x64.ActiveCfg = Release|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.Release|x64.Build.0 = Release|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Debug|Any CPU.Build.0 = Debug|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Debug|x64.ActiveCfg = Debug|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Debug|x64.Build.0 = Debug|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Release|Any CPU.ActiveCfg = Release|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Release|Any CPU.Build.0 = Release|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Release|x64.ActiveCfg = Release|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Release|x64.Build.0 = Release|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.Debug|x64.ActiveCfg = Debug|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.Debug|x64.Build.0 = Debug|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.Release|Any CPU.Build.0 = Release|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.Release|x64.ActiveCfg = Release|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.Release|x64.Build.0 = Release|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Debug|x64.ActiveCfg = Debug|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Debug|x64.Build.0 = Debug|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Release|Any CPU.Build.0 = Release|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Release|x64.ActiveCfg = Release|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Release|x64.Build.0 = Release|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Debug|x64.ActiveCfg = Debug|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Debug|x64.Build.0 = Debug|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Release|Any CPU.Build.0 = Release|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Release|x64.ActiveCfg = Release|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Release|x64.Build.0 = Release|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.Debug|Any CPU.Build.0 = Debug|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.Debug|x64.ActiveCfg = Debug|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.Debug|x64.Build.0 = Debug|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.Release|Any CPU.ActiveCfg = Release|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.Release|Any CPU.Build.0 = Release|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.Release|x64.ActiveCfg = Release|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.Release|x64.Build.0 = Release|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Debug|x64.ActiveCfg = Debug|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Debug|x64.Build.0 = Debug|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Release|Any CPU.Build.0 = Release|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Release|x64.ActiveCfg = Release|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Release|x64.Build.0 = Release|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Debug|x64.ActiveCfg = Debug|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Debug|x64.Build.0 = Debug|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Release|Any CPU.Build.0 = Release|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Release|x64.ActiveCfg = Release|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Release|x64.Build.0 = Release|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Debug|x64.ActiveCfg = Debug|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Debug|x64.Build.0 = Debug|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Release|Any CPU.Build.0 = Release|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Release|x64.ActiveCfg = Release|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Release|x64.Build.0 = Release|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.Debug|Any CPU.Build.0 = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.Debug|x64.ActiveCfg = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.Debug|x64.Build.0 = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.Release|Any CPU.ActiveCfg = Release|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.Release|Any CPU.Build.0 = Release|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.Release|x64.ActiveCfg = Release|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.Release|x64.Build.0 = Release|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Debug|x64.ActiveCfg = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Debug|x64.Build.0 = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Release|Any CPU.Build.0 = Release|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Release|x64.ActiveCfg = Release|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Release|x64.Build.0 = Release|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.Debug|x64.ActiveCfg = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.Debug|x64.Build.0 = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.Release|Any CPU.Build.0 = Release|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.Release|x64.ActiveCfg = Release|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.Release|x64.Build.0 = Release|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Debug|x64.ActiveCfg = Debug|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Debug|x64.Build.0 = Debug|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Release|Any CPU.Build.0 = Release|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Release|x64.ActiveCfg = Release|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Release|x64.Build.0 = Release|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.Debug|x64.ActiveCfg = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.Debug|x64.Build.0 = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.Release|Any CPU.Build.0 = Release|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.Release|x64.ActiveCfg = Release|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.Release|x64.Build.0 = Release|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.Debug|x64.ActiveCfg = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.Debug|x64.Build.0 = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.Release|Any CPU.Build.0 = Release|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.Release|x64.ActiveCfg = Release|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.Release|x64.Build.0 = Release|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|x64.ActiveCfg = Debug|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|x64.Build.0 = Debug|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|Any CPU.Build.0 = Release|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|x64.ActiveCfg = Release|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|x64.Build.0 = Release|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|x64.ActiveCfg = Debug|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|x64.Build.0 = Debug|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|Any CPU.Build.0 = Release|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|x64.ActiveCfg = Release|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|x64.Build.0 = Release|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.Debug|x64.ActiveCfg = Debug|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.Debug|x64.Build.0 = Debug|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.Release|Any CPU.Build.0 = Release|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.Release|x64.ActiveCfg = Release|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.Release|x64.Build.0 = Release|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.Debug|x64.ActiveCfg = Debug|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.Debug|x64.Build.0 = Debug|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.Release|Any CPU.Build.0 = Release|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.Release|x64.ActiveCfg = Release|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.Release|x64.Build.0 = Release|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Debug|x64.ActiveCfg = Debug|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Debug|x64.Build.0 = Debug|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Release|Any CPU.Build.0 = Release|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Release|x64.ActiveCfg = Release|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Release|x64.Build.0 = Release|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.Debug|x64.ActiveCfg = Debug|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.Debug|x64.Build.0 = Debug|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.Release|Any CPU.Build.0 = Release|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.Release|x64.ActiveCfg = Release|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.Release|x64.Build.0 = Release|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Debug|x64.ActiveCfg = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Debug|x64.Build.0 = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Release|Any CPU.Build.0 = Release|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Release|x64.ActiveCfg = Release|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Release|x64.Build.0 = Release|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Debug|x64.ActiveCfg = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Debug|x64.Build.0 = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Release|Any CPU.Build.0 = Release|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Release|x64.ActiveCfg = Release|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Release|x64.Build.0 = Release|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Debug|x64.ActiveCfg = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Debug|x64.Build.0 = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Release|Any CPU.Build.0 = Release|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Release|x64.ActiveCfg = Release|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Release|x64.Build.0 = Release|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Debug|x64.ActiveCfg = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Debug|x64.Build.0 = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Release|Any CPU.Build.0 = Release|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Release|x64.ActiveCfg = Release|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Release|x64.Build.0 = Release|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Debug|x64.ActiveCfg = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Debug|x64.Build.0 = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Release|Any CPU.Build.0 = Release|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Release|x64.ActiveCfg = Release|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Release|x64.Build.0 = Release|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Debug|x64.ActiveCfg = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Debug|x64.Build.0 = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Release|Any CPU.Build.0 = Release|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Release|x64.ActiveCfg = Release|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Release|x64.Build.0 = Release|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.Debug|Any CPU.Build.0 = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.Debug|x64.ActiveCfg = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.Debug|x64.Build.0 = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.Release|Any CPU.ActiveCfg = Release|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.Release|Any CPU.Build.0 = Release|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.Release|x64.ActiveCfg = Release|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.Release|x64.Build.0 = Release|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.Debug|x64.ActiveCfg = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.Debug|x64.Build.0 = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.Release|Any CPU.Build.0 = Release|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.Release|x64.ActiveCfg = Release|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.Release|x64.Build.0 = Release|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Debug|x64.ActiveCfg = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Debug|x64.Build.0 = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Release|Any CPU.Build.0 = Release|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Release|x64.ActiveCfg = Release|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Release|x64.Build.0 = Release|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {E9123D45-C1B0-4462-8810-D26ED6D31944} = {03736C2E-DB2A-46A9-B7B2-C1216BDECB4F} - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {72B7E75C-D305-45BD-929E-C86298AAA8DE} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {DD50D2D9-2765-449B-8C4B-835A428E160D} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {A6C5BA7A-DF6F-476F-9106-95905932B810} = {03736C2E-DB2A-46A9-B7B2-C1216BDECB4F} - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638} = {34117E2A-DEDC-4274-AAA4-3C61ACF86284} - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A} = {A567C185-A429-418B-AFDE-6F1785BA4A77} - {618FBF9D-4EF3-435D-9728-81C726236668} = {A567C185-A429-418B-AFDE-6F1785BA4A77} - {48206BD6-48DD-4442-A395-3A6594E4C9C6} = {A567C185-A429-418B-AFDE-6F1785BA4A77} - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC} = {A567C185-A429-418B-AFDE-6F1785BA4A77} - {09C842CB-930C-4C7D-AD5F-E30DE4A55820} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {944FE7EF-9220-4CC6-BB20-CE517195B922} = {A567C185-A429-418B-AFDE-6F1785BA4A77} - {E2F30496-19D8-46A8-9BC0-26936FFE70D2} = {A567C185-A429-418B-AFDE-6F1785BA4A77} - {7256B986-6705-42FC-9F57-485D72D9DE51} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {418E79F7-9FCF-4128-AA35-1334A685377D} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {46278108-D247-4EFC-AC34-23D4A676F62F} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {7F05FD87-A2FB-4915-A988-4EF92AB82179} = {37CDC768-16D4-4574-8553-07D99D0A72F7} - {4858E5E3-23FA-4928-B99A-54065875A2B9} = {37CDC768-16D4-4574-8553-07D99D0A72F7} - {1448512E-132F-4DA8-BCBA-D98F16B31600} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {55833C6C-6E91-4413-9F77-96B3A09666B8} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {C015FF41-9A51-4AF0-AEFC-2547D596B10A} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {D292BF18-3956-4827-820E-254C3F81EF09} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {DB45AD73-4D91-43F3-85CC-C63614A96FB0} = {03736C2E-DB2A-46A9-B7B2-C1216BDECB4F} - {AF6CD304-8E03-433D-AAA2-6E0094B53071} = {93409CC3-8DF9-45FA-AE21-16A19FDEF650} - {ED3D7040-4B3F-4217-A75E-9DF63DD84707} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {EB6E3DBD-C884-4241-9BC4-8281191D1F53} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {E1A463D7-2E23-4134-BE04-1EFF7A546813} = {93409CC3-8DF9-45FA-AE21-16A19FDEF650} - {789C86D9-CE77-40DA-BDDD-979436952512} = {93409CC3-8DF9-45FA-AE21-16A19FDEF650} - {7E24885B-D86D-477E-A840-06FA53C33FE1} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {929C0464-86D8-4F70-8835-0A5EAF930821} - EndGlobalSection -EndGlobal \ No newline at end of file + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.28809.33 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Runtime.Core", "src\Simulation\Core\Microsoft.Quantum.Runtime.Core.csproj", "{E9123D45-C1B0-4462-8810-D26ED6D31944}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime", "src\Simulation\QCTraceSimulator\Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj", "{058CB08D-BFA7-41E2-BE6B-0A0A72054F91}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Simulation.Common", "src\Simulation\Common\Microsoft.Quantum.Simulation.Common.csproj", "{8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Simulators", "src\Simulation\Simulators\Microsoft.Quantum.Simulators.csproj", "{72B7E75C-D305-45BD-929E-C86298AAA8DE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime", "src\Simulation\QCTraceSimulator.Tests\Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj", "{DD50D2D9-2765-449B-8C4B-835A428E160D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulators", "src\Simulation\Simulators.Tests\Tests.Microsoft.Quantum.Simulators.csproj", "{23461B29-F9DE-4F5B-BC30-50BBE1A10B48}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "simulation", "simulation", "{34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.QSharp.Core", "src\Simulation\QSharpCore\Microsoft.Quantum.QSharp.Core.csproj", "{A6C5BA7A-DF6F-476F-9106-95905932B810}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "xunit", "xunit", "{34117E2A-DEDC-4274-AAA4-3C61ACF86284}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "core", "core", "{03736C2E-DB2A-46A9-B7B2-C1216BDECB4F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Xunit", "src\Xunit\Microsoft.Quantum.Xunit.csproj", "{ECFE1CE8-46A1-4D14-99D6-AAF76B704638}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "generation", "generation", "{A567C185-A429-418B-AFDE-6F1785BA4A77}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Tests.CSharpGeneration", "src\Simulation\CSharpGeneration.Tests\Tests.CSharpGeneration.fsproj", "{10D7C395-4F79-4DAF-9289-A4B8FAF6183A}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Microsoft.Quantum.RoslynWrapper", "src\Simulation\RoslynWrapper\Microsoft.Quantum.RoslynWrapper.fsproj", "{618FBF9D-4EF3-435D-9728-81C726236668}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Tests.RoslynWrapper", "src\Simulation\RoslynWrapper.Tests\Tests.RoslynWrapper.fsproj", "{48206BD6-48DD-4442-A395-3A6594E4C9C6}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Microsoft.Quantum.CSharpGeneration", "src\Simulation\CSharpGeneration\Microsoft.Quantum.CSharpGeneration.fsproj", "{B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestProjects", "TestProjects", "{09C842CB-930C-4C7D-AD5F-E30DE4A55820}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QSharpExe", "src\Simulation\Simulators.Tests\TestProjects\QSharpExe\QSharpExe.csproj", "{2F5796A7-4AF8-4B78-928A-0A3A80752F9D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.EntryPointDriver", "src\Simulation\EntryPointDriver\Microsoft.Quantum.EntryPointDriver.csproj", "{944FE7EF-9220-4CC6-BB20-CE517195B922}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Tests.Microsoft.Quantum.EntryPointDriver", "src\Simulation\EntryPointDriver.Tests\Tests.Microsoft.Quantum.EntryPointDriver.fsproj", "{E2F30496-19D8-46A8-9BC0-26936FFE70D2}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Library1", "src\Simulation\Simulators.Tests\TestProjects\Library1\Library1.csproj", "{7256B986-6705-42FC-9F57-485D72D9DE51}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Library2", "src\Simulation\Simulators.Tests\TestProjects\Library2\Library2.csproj", "{A85277B3-4E07-4E15-8F0C-07CC855A3BCB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Library with Spaces", "src\Simulation\Simulators.Tests\TestProjects\Library with Spaces\Library with Spaces.csproj", "{418E79F7-9FCF-4128-AA35-1334A685377D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnitTests", "src\Simulation\Simulators.Tests\TestProjects\UnitTests\UnitTests.csproj", "{46278108-D247-4EFC-AC34-23D4A676F62F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Azure", "Azure", "{37CDC768-16D4-4574-8553-07D99D0A72F7}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Azure.Quantum.Client", "src\Azure\Azure.Quantum.Client\Microsoft.Azure.Quantum.Client.csproj", "{7F05FD87-A2FB-4915-A988-4EF92AB82179}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Azure.Quantum.Client.Test", "src\Azure\Azure.Quantum.Client.Test\Microsoft.Azure.Quantum.Client.Test.csproj", "{4858E5E3-23FA-4928-B99A-54065875A2B9}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HoneywellExe", "src\Simulation\Simulators.Tests\TestProjects\HoneywellExe\HoneywellExe.csproj", "{1448512E-132F-4DA8-BCBA-D98F16B31600}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IonQExe", "src\Simulation\Simulators.Tests\TestProjects\IonQExe\IonQExe.csproj", "{55833C6C-6E91-4413-9F77-96B3A09666B8}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QCIExe", "src\Simulation\Simulators.Tests\TestProjects\QCIExe\QCIExe.csproj", "{C015FF41-9A51-4AF0-AEFC-2547D596B10A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TargetedExe", "src\Simulation\Simulators.Tests\TestProjects\TargetedExe\TargetedExe.csproj", "{D292BF18-3956-4827-820E-254C3F81EF09}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.QSharp.Foundation", "src\Simulation\QSharpFoundation\Microsoft.Quantum.QSharp.Foundation.csproj", "{DB45AD73-4D91-43F3-85CC-C63614A96FB0}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Type2.Core", "src\Simulation\Type2Core\Microsoft.Quantum.Type2.Core.csproj", "{AF6CD304-8E03-433D-AAA2-6E0094B53071}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulators.Type2", "src\Simulation\Simulators.Type2.Tests\Tests.Microsoft.Quantum.Simulators.Type2.csproj", "{ED3D7040-4B3F-4217-A75E-9DF63DD84707}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntrinsicTests", "src\Simulation\Simulators.Tests\TestProjects\IntrinsicTests\IntrinsicTests.csproj", "{4EF958CA-B4A6-4E5F-924A-100B5615BEC3}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulators.Type1", "src\Simulation\Simulators.Type1.Tests\Tests.Microsoft.Quantum.Simulators.Type1.csproj", "{EB6E3DBD-C884-4241-9BC4-8281191D1F53}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Type1.Core", "src\Simulation\Type1Core\Microsoft.Quantum.Type1.Core.csproj", "{E1A463D7-2E23-4134-BE04-1EFF7A546813}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "targeting", "targeting", "{93409CC3-8DF9-45FA-AE21-16A19FDEF650}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Targets.Interfaces", "src\Simulation\TargetDefinitions\Interfaces\Microsoft.Quantum.Targets.Interfaces.csproj", "{789C86D9-CE77-40DA-BDDD-979436952512}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Type3.Core", "src\Simulation\Type3Core\Microsoft.Quantum.Type3.Core.csproj", "{7E24885B-D86D-477E-A840-06FA53C33FE1}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulators.Type3", "src\Simulation\Simulators.Type3.Tests\Tests.Microsoft.Quantum.Simulators.Type3.csproj", "{7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + MinSizeRel|Any CPU = MinSizeRel|Any CPU + MinSizeRel|x64 = MinSizeRel|x64 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + RelWithDebInfo|Any CPU = RelWithDebInfo|Any CPU + RelWithDebInfo|x64 = RelWithDebInfo|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|x64.ActiveCfg = Debug|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|x64.Build.0 = Debug|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.MinSizeRel|x64.ActiveCfg = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.MinSizeRel|x64.Build.0 = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.Release|Any CPU.Build.0 = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.Release|x64.ActiveCfg = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.Release|x64.Build.0 = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Debug|Any CPU.Build.0 = Debug|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Debug|x64.ActiveCfg = Debug|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Debug|x64.Build.0 = Debug|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.MinSizeRel|x64.ActiveCfg = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.MinSizeRel|x64.Build.0 = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Release|Any CPU.ActiveCfg = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Release|Any CPU.Build.0 = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Release|x64.ActiveCfg = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Release|x64.Build.0 = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Debug|x64.ActiveCfg = Debug|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Debug|x64.Build.0 = Debug|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.MinSizeRel|x64.ActiveCfg = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.MinSizeRel|x64.Build.0 = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Release|Any CPU.Build.0 = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Release|x64.ActiveCfg = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Release|x64.Build.0 = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Debug|x64.ActiveCfg = Debug|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Debug|x64.Build.0 = Debug|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.MinSizeRel|x64.ActiveCfg = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.MinSizeRel|x64.Build.0 = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Release|Any CPU.Build.0 = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Release|x64.ActiveCfg = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Release|x64.Build.0 = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.Debug|x64.ActiveCfg = Debug|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.Debug|x64.Build.0 = Debug|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.Release|Any CPU.Build.0 = Release|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.Release|x64.ActiveCfg = Release|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.Release|x64.Build.0 = Release|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Debug|Any CPU.Build.0 = Debug|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Debug|x64.ActiveCfg = Debug|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Debug|x64.Build.0 = Debug|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Release|Any CPU.ActiveCfg = Release|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Release|Any CPU.Build.0 = Release|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Release|x64.ActiveCfg = Release|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Release|x64.Build.0 = Release|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.Debug|x64.ActiveCfg = Debug|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.Debug|x64.Build.0 = Debug|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.Release|Any CPU.Build.0 = Release|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.Release|x64.ActiveCfg = Release|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.Release|x64.Build.0 = Release|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Debug|x64.ActiveCfg = Debug|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Debug|x64.Build.0 = Debug|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Release|Any CPU.Build.0 = Release|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Release|x64.ActiveCfg = Release|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Release|x64.Build.0 = Release|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Debug|x64.ActiveCfg = Debug|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Debug|x64.Build.0 = Debug|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Release|Any CPU.Build.0 = Release|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Release|x64.ActiveCfg = Release|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Release|x64.Build.0 = Release|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.Debug|Any CPU.Build.0 = Debug|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.Debug|x64.ActiveCfg = Debug|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.Debug|x64.Build.0 = Debug|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.Release|Any CPU.ActiveCfg = Release|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.Release|Any CPU.Build.0 = Release|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.Release|x64.ActiveCfg = Release|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.Release|x64.Build.0 = Release|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Debug|x64.ActiveCfg = Debug|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Debug|x64.Build.0 = Debug|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Release|Any CPU.Build.0 = Release|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Release|x64.ActiveCfg = Release|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Release|x64.Build.0 = Release|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Debug|x64.ActiveCfg = Debug|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Debug|x64.Build.0 = Debug|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Release|Any CPU.Build.0 = Release|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Release|x64.ActiveCfg = Release|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Release|x64.Build.0 = Release|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Debug|x64.ActiveCfg = Debug|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Debug|x64.Build.0 = Debug|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Release|Any CPU.Build.0 = Release|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Release|x64.ActiveCfg = Release|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Release|x64.Build.0 = Release|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.Debug|Any CPU.Build.0 = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.Debug|x64.ActiveCfg = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.Debug|x64.Build.0 = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.Release|Any CPU.ActiveCfg = Release|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.Release|Any CPU.Build.0 = Release|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.Release|x64.ActiveCfg = Release|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.Release|x64.Build.0 = Release|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Debug|x64.ActiveCfg = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Debug|x64.Build.0 = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Release|Any CPU.Build.0 = Release|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Release|x64.ActiveCfg = Release|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Release|x64.Build.0 = Release|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.Debug|x64.ActiveCfg = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.Debug|x64.Build.0 = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.Release|Any CPU.Build.0 = Release|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.Release|x64.ActiveCfg = Release|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.Release|x64.Build.0 = Release|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Debug|x64.ActiveCfg = Debug|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Debug|x64.Build.0 = Debug|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Release|Any CPU.Build.0 = Release|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Release|x64.ActiveCfg = Release|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Release|x64.Build.0 = Release|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.Debug|x64.ActiveCfg = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.Debug|x64.Build.0 = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.Release|Any CPU.Build.0 = Release|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.Release|x64.ActiveCfg = Release|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.Release|x64.Build.0 = Release|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.Debug|x64.ActiveCfg = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.Debug|x64.Build.0 = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.Release|Any CPU.Build.0 = Release|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.Release|x64.ActiveCfg = Release|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.Release|x64.Build.0 = Release|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|x64.ActiveCfg = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|x64.Build.0 = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|Any CPU.Build.0 = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|x64.ActiveCfg = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|x64.Build.0 = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|x64.ActiveCfg = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|x64.Build.0 = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|Any CPU.Build.0 = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|x64.ActiveCfg = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|x64.Build.0 = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.Debug|x64.ActiveCfg = Debug|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.Debug|x64.Build.0 = Debug|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.Release|Any CPU.Build.0 = Release|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.Release|x64.ActiveCfg = Release|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.Release|x64.Build.0 = Release|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.Debug|x64.ActiveCfg = Debug|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.Debug|x64.Build.0 = Debug|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.Release|Any CPU.Build.0 = Release|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.Release|x64.ActiveCfg = Release|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.Release|x64.Build.0 = Release|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Debug|x64.ActiveCfg = Debug|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Debug|x64.Build.0 = Debug|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Release|Any CPU.Build.0 = Release|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Release|x64.ActiveCfg = Release|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Release|x64.Build.0 = Release|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.Debug|x64.ActiveCfg = Debug|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.Debug|x64.Build.0 = Debug|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.Release|Any CPU.Build.0 = Release|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.Release|x64.ActiveCfg = Release|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.Release|x64.Build.0 = Release|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Debug|x64.ActiveCfg = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Debug|x64.Build.0 = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Release|Any CPU.Build.0 = Release|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Release|x64.ActiveCfg = Release|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Release|x64.Build.0 = Release|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Debug|x64.ActiveCfg = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Debug|x64.Build.0 = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Release|Any CPU.Build.0 = Release|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Release|x64.ActiveCfg = Release|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Release|x64.Build.0 = Release|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Debug|x64.ActiveCfg = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Debug|x64.Build.0 = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Release|Any CPU.Build.0 = Release|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Release|x64.ActiveCfg = Release|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Release|x64.Build.0 = Release|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Debug|x64.ActiveCfg = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Debug|x64.Build.0 = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Release|Any CPU.Build.0 = Release|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Release|x64.ActiveCfg = Release|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Release|x64.Build.0 = Release|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Debug|x64.ActiveCfg = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Debug|x64.Build.0 = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Release|Any CPU.Build.0 = Release|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Release|x64.ActiveCfg = Release|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Release|x64.Build.0 = Release|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Debug|x64.ActiveCfg = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Debug|x64.Build.0 = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Release|Any CPU.Build.0 = Release|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Release|x64.ActiveCfg = Release|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Release|x64.Build.0 = Release|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.Debug|Any CPU.Build.0 = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.Debug|x64.ActiveCfg = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.Debug|x64.Build.0 = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.Release|Any CPU.ActiveCfg = Release|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.Release|Any CPU.Build.0 = Release|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.Release|x64.ActiveCfg = Release|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.Release|x64.Build.0 = Release|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.Debug|x64.ActiveCfg = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.Debug|x64.Build.0 = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.Release|Any CPU.Build.0 = Release|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.Release|x64.ActiveCfg = Release|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.Release|x64.Build.0 = Release|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Debug|x64.ActiveCfg = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Debug|x64.Build.0 = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Release|Any CPU.Build.0 = Release|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Release|x64.ActiveCfg = Release|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Release|x64.Build.0 = Release|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {E9123D45-C1B0-4462-8810-D26ED6D31944} = {03736C2E-DB2A-46A9-B7B2-C1216BDECB4F} + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {72B7E75C-D305-45BD-929E-C86298AAA8DE} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {DD50D2D9-2765-449B-8C4B-835A428E160D} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {A6C5BA7A-DF6F-476F-9106-95905932B810} = {03736C2E-DB2A-46A9-B7B2-C1216BDECB4F} + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638} = {34117E2A-DEDC-4274-AAA4-3C61ACF86284} + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A} = {A567C185-A429-418B-AFDE-6F1785BA4A77} + {618FBF9D-4EF3-435D-9728-81C726236668} = {A567C185-A429-418B-AFDE-6F1785BA4A77} + {48206BD6-48DD-4442-A395-3A6594E4C9C6} = {A567C185-A429-418B-AFDE-6F1785BA4A77} + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC} = {A567C185-A429-418B-AFDE-6F1785BA4A77} + {09C842CB-930C-4C7D-AD5F-E30DE4A55820} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {944FE7EF-9220-4CC6-BB20-CE517195B922} = {A567C185-A429-418B-AFDE-6F1785BA4A77} + {E2F30496-19D8-46A8-9BC0-26936FFE70D2} = {A567C185-A429-418B-AFDE-6F1785BA4A77} + {7256B986-6705-42FC-9F57-485D72D9DE51} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {418E79F7-9FCF-4128-AA35-1334A685377D} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {46278108-D247-4EFC-AC34-23D4A676F62F} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {7F05FD87-A2FB-4915-A988-4EF92AB82179} = {37CDC768-16D4-4574-8553-07D99D0A72F7} + {4858E5E3-23FA-4928-B99A-54065875A2B9} = {37CDC768-16D4-4574-8553-07D99D0A72F7} + {1448512E-132F-4DA8-BCBA-D98F16B31600} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {55833C6C-6E91-4413-9F77-96B3A09666B8} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {C015FF41-9A51-4AF0-AEFC-2547D596B10A} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {D292BF18-3956-4827-820E-254C3F81EF09} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {DB45AD73-4D91-43F3-85CC-C63614A96FB0} = {03736C2E-DB2A-46A9-B7B2-C1216BDECB4F} + {AF6CD304-8E03-433D-AAA2-6E0094B53071} = {93409CC3-8DF9-45FA-AE21-16A19FDEF650} + {ED3D7040-4B3F-4217-A75E-9DF63DD84707} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {EB6E3DBD-C884-4241-9BC4-8281191D1F53} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {E1A463D7-2E23-4134-BE04-1EFF7A546813} = {93409CC3-8DF9-45FA-AE21-16A19FDEF650} + {789C86D9-CE77-40DA-BDDD-979436952512} = {93409CC3-8DF9-45FA-AE21-16A19FDEF650} + {7E24885B-D86D-477E-A840-06FA53C33FE1} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {929C0464-86D8-4F70-8835-0A5EAF930821} + EndGlobalSection +EndGlobal From f64ceda5e0b9883242696ffff2d5ff1a780cd3b7 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Thu, 25 Feb 2021 11:26:47 -0800 Subject: [PATCH 19/59] Added test for multiple entry points. It is skipped until this is supported in the compiler repo. --- .../EntryPointDriver.Tests/Tests.fs | 8 ++++++++ .../EntryPointDriver.Tests/Tests.qs | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/Simulation/EntryPointDriver.Tests/Tests.fs b/src/Simulation/EntryPointDriver.Tests/Tests.fs index d6fe89fbc5e..0bc3b003bd9 100644 --- a/src/Simulation/EntryPointDriver.Tests/Tests.fs +++ b/src/Simulation/EntryPointDriver.Tests/Tests.fs @@ -891,3 +891,11 @@ let ``Shows help text for submit command with default target`` () = EntryPointTest.Help This test checks that the entry point documentation appears correctly in the command line help message." let given = testWithTarget "foo.target" "Help" given ["submit"; "--help"] |> yields message + +[] +let ``Supports multiple entry points`` () = + let given = test "Multiple entry points" + given ["simulate"; "EntryPointTest.MultipleEntryPoints1"] |> yields "Hello from Entry Point 1!" + given ["simulate"; "EntryPointTest.MultipleEntryPoints2"] |> yields "Hello from Entry Point 2!" + given ["simulate"] |> fails + given [] |> fails \ No newline at end of file diff --git a/src/Simulation/EntryPointDriver.Tests/Tests.qs b/src/Simulation/EntryPointDriver.Tests/Tests.qs index 516f8bca50d..b0401698888 100644 --- a/src/Simulation/EntryPointDriver.Tests/Tests.qs +++ b/src/Simulation/EntryPointDriver.Tests/Tests.qs @@ -360,3 +360,22 @@ namespace EntryPointTest { @EntryPoint() operation Help(n : Int, pauli : Pauli, myCoolBool : Bool) : Unit { } } + +// +// Multiple Entry Points +// + +// --- Multiple entry points + +namespace EntryPointTest { + + @EntryPoint() + operation MultipleEntryPoints1() : String { + return "Hello from Entry Point 1!"; + } + + @EntryPoint() + operation MultipleEntryPoints2() : String { + return "Hello from Entry Point 2!"; + } +} From 2853b5680e1f08f9896a99ef7e13d18092333daa Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Thu, 25 Feb 2021 14:03:18 -0800 Subject: [PATCH 20/59] PR comments and cleanup --- src/Simulation/CSharpGeneration/EntryPoint.fs | 15 ++-- .../CSharpGeneration/RewriteStep.fs | 6 +- .../EntryPointDriver.Tests/Tests.fs | 2 +- .../EntryPointDriver.Tests/Tests.qs | 1 - src/Simulation/EntryPointDriver/Azure.cs | 26 +++--- src/Simulation/EntryPointDriver/Driver.cs | 82 ++++++++----------- .../EntryPointDriver/IEntryPoint.cs | 2 +- 7 files changed, 64 insertions(+), 70 deletions(-) diff --git a/src/Simulation/CSharpGeneration/EntryPoint.fs b/src/Simulation/CSharpGeneration/EntryPoint.fs index ea5a53a061e..cc0a5f7e4ec 100644 --- a/src/Simulation/CSharpGeneration/EntryPoint.fs +++ b/src/Simulation/CSharpGeneration/EntryPoint.fs @@ -119,9 +119,11 @@ let private callableTypeNames context (callable : QsCallable) = let returnTypeName = SimulationCode.roslynTypeName context callable.Signature.ReturnType callableName, argTypeName, returnTypeName +/// Generates the class name for an entry point class. let private generateEntryPointClassName (entryPoint : QsCallable) = - (entryPoint.FullName.Namespace, entryPointClassName + entryPoint.FullName.Name) + { Namespace = entryPoint.FullName.Namespace; Name = entryPointClassName + entryPoint.FullName.Name } +/// Generates the Submit method for an entry point class. let private submitMethod context entryPoint = let callableName, _, _ = callableTypeNames context entryPoint let parseResultParamName = "parseResult" @@ -143,6 +145,7 @@ let private submitMethod context entryPoint = [``public``] (Some (``=>`` (ident (driverNamespace + ".Azure") <.> (ident "Submit", args)))) +/// Generates the Simulate method for an entry point class. let private simulateMethod context entryPoint = let callableName, argTypeName, returnTypeName = callableTypeNames context entryPoint let simulationType = generic (driverNamespace + ".Simulation") ``<<`` [callableName; argTypeName; returnTypeName] ``>>`` @@ -173,8 +176,8 @@ let private mainMethod (entryPoints : seq) = let entryPointArrayMembers = [ for ep in entryPoints do - let ns, name = generateEntryPointClassName ep - ``new`` (``type`` (ns + "." + name)) ``(`` [] ``)`` + let name = generateEntryPointClassName ep + ``new`` (``type`` (name.ToString())) ``(`` [] ``)`` ] let entryPointArray = @@ -187,6 +190,7 @@ let private mainMethod (entryPoints : seq) = [``private``; ``static``; async] (Some (``=>`` (await (driver <.> (ident "Run", [ident commandLineArgsName]))))) +/// Generates a namespace for the main function let mainNamespace (entryPoints : seq) = let mainClass = ``class`` entryPointClassName ``<<`` [] ``>>`` @@ -235,13 +239,14 @@ let private entryPointClass context (entryPoint : QsCallable) = simulateMethod context entryPoint ] let baseName = sprintf "%s.IEntryPoint" driverNamespace - ``class`` (generateEntryPointClassName entryPoint |> snd) ``<<`` [] ``>>`` + ``class`` ((generateEntryPointClassName entryPoint).Name) ``<<`` [] ``>>`` ``:`` (Some (simpleBase baseName)) ``,`` [] [``internal``] ``{`` members ``}`` +/// Generates a namespace for a set of entry points that share the namespace let private entryPointNamespace context name (entryPoints : seq) = ``namespace`` name ``{`` @@ -251,7 +256,7 @@ let private entryPointNamespace context name (entryPoints : seq) = :> MemberDeclarationSyntax /// Generates C# source code for a standalone executable that runs the Q# entry point. -let generateEntryPointSource context (entryPoints : seq) (mainNamespace : NamespaceDeclarationSyntax option) = +let generateSource context (entryPoints : seq) (mainNamespace : NamespaceDeclarationSyntax option) = let entryPointNamespaces = entryPoints |> Seq.groupBy (fun ep -> ep.FullName.Namespace) let epNamespaces = [for ns, eps in entryPointNamespaces -> entryPointNamespace context ns eps] diff --git a/src/Simulation/CSharpGeneration/RewriteStep.fs b/src/Simulation/CSharpGeneration/RewriteStep.fs index e99ed51d4ed..86f20ff9cbf 100644 --- a/src/Simulation/CSharpGeneration/RewriteStep.fs +++ b/src/Simulation/CSharpGeneration/RewriteStep.fs @@ -70,14 +70,14 @@ type Emitter() = let entryPointSources = entryPointCallables - |> Seq.groupBy (fun ep -> ep.SourceFile) + |> Seq.groupBy (fun ep -> ep.Source.CodeFile) let (sourceFile, callables) = Seq.head entryPointSources - let content = EntryPoint.generateEntryPointSource context callables (Some main) + let content = EntryPoint.generateSource context callables (Some main) CompilationLoader.GeneratedFile(sourceFile, dir, ".EntryPoint.g.cs", content) |> ignore for (sourceFile, callables) in Seq.tail entryPointSources do - let content = EntryPoint.generateEntryPointSource context callables None + let content = EntryPoint.generateSource context callables None CompilationLoader.GeneratedFile(sourceFile, dir, ".EntryPoint.g.cs", content) |> ignore transformed <- compilation diff --git a/src/Simulation/EntryPointDriver.Tests/Tests.fs b/src/Simulation/EntryPointDriver.Tests/Tests.fs index 0bc3b003bd9..9c1bbc68c9c 100644 --- a/src/Simulation/EntryPointDriver.Tests/Tests.fs +++ b/src/Simulation/EntryPointDriver.Tests/Tests.fs @@ -74,7 +74,7 @@ let private generateCSharp constants (compilation : QsCompilation) = let mainNS = EntryPoint.mainNamespace entryPoints [ SimulationCode.generate testFile context - EntryPoint.generateEntryPointSource context entryPoints (Some mainNS) + EntryPoint.generateSource context entryPoints (Some mainNS) ] /// The full path to a referenced assembly given its short name. diff --git a/src/Simulation/EntryPointDriver.Tests/Tests.qs b/src/Simulation/EntryPointDriver.Tests/Tests.qs index b0401698888..03d8bc4e17e 100644 --- a/src/Simulation/EntryPointDriver.Tests/Tests.qs +++ b/src/Simulation/EntryPointDriver.Tests/Tests.qs @@ -368,7 +368,6 @@ namespace EntryPointTest { // --- Multiple entry points namespace EntryPointTest { - @EntryPoint() operation MultipleEntryPoints1() : String { return "Hello from Entry Point 1!"; diff --git a/src/Simulation/EntryPointDriver/Azure.cs b/src/Simulation/EntryPointDriver/Azure.cs index 2fa8cf9a0a8..9aab6322ab5 100644 --- a/src/Simulation/EntryPointDriver/Azure.cs +++ b/src/Simulation/EntryPointDriver/Azure.cs @@ -207,69 +207,69 @@ public sealed class AzureSettings /// /// The subscription ID. /// - public string? Subscription { get; set; } + internal string? Subscription { get; set; } /// /// The resource group name. /// - public string? ResourceGroup { get; set; } + internal string? ResourceGroup { get; set; } /// /// The workspace name. /// - public string? Workspace { get; set; } + internal string? Workspace { get; set; } /// /// The target device ID. /// - public string? Target { get; set; } + internal string? Target { get; set; } /// /// The storage account connection string. /// - public string? Storage { get; set; } + internal string? Storage { get; set; } /// /// The Azure Active Directory authentication token. /// - public string? AadToken { get; set; } + internal string? AadToken { get; set; } /// /// The base URI of the Azure Quantum endpoint. /// If both and properties are not null, takes precedence. /// - public Uri? BaseUri { get; set; } + internal Uri? BaseUri { get; set; } /// /// The location to use with the default Azure Quantum endpoint. /// If both and properties are not null, takes precedence. /// - public string? Location { get; set; } + internal string? Location { get; set; } /// /// The name of the submitted job. /// - public string? JobName { get; set; } + internal string? JobName { get; set; } /// /// The number of times the program is executed on the target machine. /// - public int Shots { get; set; } + internal int Shots { get; set; } /// /// The information to show in the output after the job is submitted. /// - public OutputFormat Output { get; set; } + internal OutputFormat Output { get; set; } /// /// Validate the program and options, but do not submit to Azure Quantum. /// - public bool DryRun { get; set; } + internal bool DryRun { get; set; } /// /// Show additional information about the submission. /// - public bool Verbose { get; set; } + internal bool Verbose { get; set; } /// /// Creates a based on the settings. diff --git a/src/Simulation/EntryPointDriver/Driver.cs b/src/Simulation/EntryPointDriver/Driver.cs index 43af128c031..91907191550 100644 --- a/src/Simulation/EntryPointDriver/Driver.cs +++ b/src/Simulation/EntryPointDriver/Driver.cs @@ -126,7 +126,7 @@ public sealed class Driver /// /// All the registered entry points of the program. /// - private readonly IEnumerable entryPoints; + private readonly IReadOnlyCollection entryPoints; /// /// Creates a new driver for the entry point. @@ -136,7 +136,7 @@ public sealed class Driver public Driver(DriverSettings settings, IEnumerable entryPoints) { this.settings = settings; - this.entryPoints = entryPoints; + this.entryPoints = entryPoints.ToList().AsReadOnly(); } /// @@ -149,13 +149,13 @@ public async Task Run(string[] args) var simulateSubCommands = this.entryPoints.Select(this.CreateSimulateEntryPointCommand); var submitSubCommands = this.entryPoints.Select(this.CreateSubmitEntryPointCommand); - var (simulate, simulateValids) = CreateSimulateCommand(simulateSubCommands); - var (submit, submitValids) = CreateSubmitCommand(submitSubCommands); + var (simulate, simulateValidators) = CreateSimulateCommand(simulateSubCommands); + var (submit, _) = CreateSubmitCommand(submitSubCommands); var root = new RootCommand() { simulate, submit }; if (this.entryPoints.Count() == 1) { - SetSubCommandAsDefault(root, simulate, simulateValids); + SetSubCommandAsDefault(root, simulate, simulateValidators); root.Description = this.entryPoints.First().Summary; } @@ -243,8 +243,6 @@ private static T DefaultIfShadowed(IEntryPoint entryPoint, OptionInfo opti /// The list of validators added to the command during this function. private static IEnumerable> AddOptionIfAvailable(Command command, OptionInfo option) { - var validators = Enumerable.Empty>(); - if (IsAliasAvailable(option.Aliases.First(), command.Options)) { command.AddOption(option.Create(option.Aliases.Where(alias => IsAliasAvailable(alias, command.Options)))); @@ -255,10 +253,10 @@ private static IEnumerable> AddOptionIfAvailable>(); } /// @@ -269,8 +267,6 @@ private static IEnumerable> AddOptionIfAvailableThe list of validators added to the command during this function. private static IEnumerable> MarkOptionsAsMutuallyExclusive(Command command, string[] primaryAliases) { - var validators = Enumerable.Empty>(); - ValidateSymbol validator = result => { var presentAliases = new List(); @@ -305,15 +301,13 @@ private static IEnumerable> MarkOptionsAsMutuallyE private static (Command, IEnumerable>) CreateSimulateCommand( IEnumerable<(Command, IEnumerable>)> entryPointCommands) { - var validators = Enumerable.Empty>(); - var simulate = new Command("simulate", "(default) Run the program using a local simulator."); if (entryPointCommands.Count() == 1) { - var (epCommand, valids) = entryPointCommands.First(); + var (epCommand, validators) = entryPointCommands.First(); simulate.AddCommand(epCommand); - SetSubCommandAsDefault(simulate, epCommand, valids); - validators = valids; + SetSubCommandAsDefault(simulate, epCommand, validators); + return (simulate, validators); } else { @@ -321,9 +315,8 @@ private static (Command, IEnumerable>) CreateSimul { simulate.AddCommand(epCommand); } + return (simulate, Enumerable.Empty>()); } - - return (simulate, validators); } /// @@ -333,18 +326,16 @@ private static (Command, IEnumerable>) CreateSimul /// Tuple with the created submit command and the validators for that command. private static (Command, IEnumerable>) CreateSubmitCommand(IEnumerable<(Command, IEnumerable>)> entryPointCommands) { - var validators = Enumerable.Empty>(); - var submit = new Command("submit", "Submit the program to Azure Quantum.") { IsHidden = true, }; if (entryPointCommands.Count() == 1) { - var (epCommand, valids) = entryPointCommands.First(); + var (epCommand, validators) = entryPointCommands.First(); submit.AddCommand(epCommand); - SetSubCommandAsDefault(submit, epCommand, valids); - validators = valids; + SetSubCommandAsDefault(submit, epCommand, validators); + return (submit, validators); } else { @@ -352,9 +343,8 @@ private static (Command, IEnumerable>) CreateSubmi { submit.AddCommand(epCommand); } + return (submit, Enumerable.Empty>()); } - - return (submit, validators); } /// @@ -398,22 +388,23 @@ private static (Command, IEnumerable>) CreateSubmi command.AddOption(option); } - validators = validators.Concat(AddOptionIfAvailable(command, SubscriptionOption)); - validators = validators.Concat(AddOptionIfAvailable(command, ResourceGroupOption)); - validators = validators.Concat(AddOptionIfAvailable(command, WorkspaceOption)); - validators = validators.Concat(AddOptionIfAvailable(command, this.CreateTargetOption(entryPoint))); - validators = validators.Concat(AddOptionIfAvailable(command, StorageOption)); - validators = validators.Concat(AddOptionIfAvailable(command, AadTokenOption)); - validators = validators.Concat(AddOptionIfAvailable(command, BaseUriOption)); - validators = validators.Concat(AddOptionIfAvailable(command, LocationOption)); - validators = validators.Concat(AddOptionIfAvailable(command, JobNameOption)); - validators = validators.Concat(AddOptionIfAvailable(command, ShotsOption)); - validators = validators.Concat(AddOptionIfAvailable(command, OutputOption)); - validators = validators.Concat(AddOptionIfAvailable(command, DryRunOption)); - validators = validators.Concat(AddOptionIfAvailable(command, VerboseOption)); - validators = validators.Concat(MarkOptionsAsMutuallyExclusive( - command, - new[] { BaseUriOption.Aliases.First(), LocationOption.Aliases.First() })); + validators = validators + .Concat(AddOptionIfAvailable(command, SubscriptionOption)) + .Concat(AddOptionIfAvailable(command, ResourceGroupOption)) + .Concat(AddOptionIfAvailable(command, WorkspaceOption)) + .Concat(AddOptionIfAvailable(command, this.CreateTargetOption(entryPoint))) + .Concat(AddOptionIfAvailable(command, StorageOption)) + .Concat(AddOptionIfAvailable(command, AadTokenOption)) + .Concat(AddOptionIfAvailable(command, BaseUriOption)) + .Concat(AddOptionIfAvailable(command, LocationOption)) + .Concat(AddOptionIfAvailable(command, JobNameOption)) + .Concat(AddOptionIfAvailable(command, ShotsOption)) + .Concat(AddOptionIfAvailable(command, OutputOption)) + .Concat(AddOptionIfAvailable(command, DryRunOption)) + .Concat(AddOptionIfAvailable(command, VerboseOption)) + .Concat(MarkOptionsAsMutuallyExclusive( + command, + new[] { BaseUriOption.Aliases.First(), LocationOption.Aliases.First() })); return (command, validators); } @@ -457,8 +448,8 @@ private OptionInfo CreateSimulatorOption(IEntryPoint entryPoint) => /// The simulator to use. /// The entry point to simulate. /// The exit code. - private async Task Simulate(ParseResult parseResult, string simulator, IEntryPoint entryPoint) => - await entryPoint.Simulate(parseResult, settings, DefaultIfShadowed(entryPoint, this.CreateSimulatorOption(entryPoint), simulator)); + private Task Simulate(ParseResult parseResult, string simulator, IEntryPoint entryPoint) => + entryPoint.Simulate(parseResult, settings, DefaultIfShadowed(entryPoint, this.CreateSimulatorOption(entryPoint), simulator)); /// /// Submits the entry point to Azure Quantum. @@ -467,8 +458,8 @@ private async Task Simulate(ParseResult parseResult, string simulator, IEnt /// The Azure submission settings. /// The entry point to submit. /// The exit code. - private async Task Submit(ParseResult parseResult, AzureSettings azureSettings, IEntryPoint entryPoint) => - await entryPoint.Submit(parseResult, new AzureSettings + private Task Submit(ParseResult parseResult, AzureSettings azureSettings, IEntryPoint entryPoint) => + entryPoint.Submit(parseResult, new AzureSettings { Subscription = azureSettings.Subscription, ResourceGroup = azureSettings.ResourceGroup, @@ -506,5 +497,4 @@ protected override string ArgumentDescriptor(IArgument argument) } } } - } diff --git a/src/Simulation/EntryPointDriver/IEntryPoint.cs b/src/Simulation/EntryPointDriver/IEntryPoint.cs index 918c0b25027..d5ee15f64fb 100644 --- a/src/Simulation/EntryPointDriver/IEntryPoint.cs +++ b/src/Simulation/EntryPointDriver/IEntryPoint.cs @@ -20,7 +20,7 @@ namespace Microsoft.Quantum.EntryPointDriver public interface IEntryPoint { /// - /// The name of the entry point operation. + /// The name of the entry point. /// string Name { get; } From e079d75f5a71d2718ae3f7d2e9296ece8653a674 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Thu, 25 Feb 2021 15:23:42 -0800 Subject: [PATCH 21/59] Removed precondition for C# generation on only having one entry point. --- src/Simulation/CSharpGeneration/RewriteStep.fs | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/Simulation/CSharpGeneration/RewriteStep.fs b/src/Simulation/CSharpGeneration/RewriteStep.fs index 86f20ff9cbf..5548d8277e3 100644 --- a/src/Simulation/CSharpGeneration/RewriteStep.fs +++ b/src/Simulation/CSharpGeneration/RewriteStep.fs @@ -28,20 +28,11 @@ type Emitter() = member this.AssemblyConstants = upcast _AssemblyConstants member this.GeneratedDiagnostics = upcast _Diagnostics - member this.ImplementsPreconditionVerification = true + member this.ImplementsPreconditionVerification = false member this.ImplementsPostconditionVerification = false member this.ImplementsTransformation = true - member this.PreconditionVerification compilation = - if compilation.EntryPoints.Length > 1 then - _Diagnostics <- IRewriteStep.Diagnostic - (Message = DiagnosticItem.Message (ErrorCode.MultipleEntryPoints, []), - Severity = DiagnosticSeverity.Error, - Stage = IRewriteStep.Stage.PreconditionVerification) :: _Diagnostics - false - else - true - + member this.PreconditionVerification compilation = NotImplementedException() |> raise member this.PostconditionVerification _ = NotImplementedException() |> raise member this.Transformation (compilation, transformed) = From d206778c6bfea238213e321448dc179c743b573f Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Thu, 25 Feb 2021 17:05:06 -0800 Subject: [PATCH 22/59] . --- src/Simulation/CSharpGeneration/RewriteStep.fs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Simulation/CSharpGeneration/RewriteStep.fs b/src/Simulation/CSharpGeneration/RewriteStep.fs index 5548d8277e3..f35b879b443 100644 --- a/src/Simulation/CSharpGeneration/RewriteStep.fs +++ b/src/Simulation/CSharpGeneration/RewriteStep.fs @@ -32,7 +32,7 @@ type Emitter() = member this.ImplementsPostconditionVerification = false member this.ImplementsTransformation = true - member this.PreconditionVerification compilation = NotImplementedException() |> raise + member this.PreconditionVerification _ = NotImplementedException() |> raise member this.PostconditionVerification _ = NotImplementedException() |> raise member this.Transformation (compilation, transformed) = @@ -42,7 +42,7 @@ type Emitter() = | _ -> step.Name let context = CodegenContext.Create (compilation, step.AssemblyConstants) - let allSources = GetSourceFiles.Apply compilation.Namespaces + let allSources = GetSourceFiles.Apply compilation.Namespaces for source in allSources |> Seq.filter context.GenerateCodeForSource do let content = SimulationCode.generate source context From 91224eefe62c6e0c9c1b40754abd9b9e18abc231 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Fri, 26 Feb 2021 11:01:26 -0800 Subject: [PATCH 23/59] Updates version number, will need to be reverted --- .../CSharpGeneration/Microsoft.Quantum.CSharpGeneration.fsproj | 2 +- ....Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj | 2 +- src/Simulation/QSharpCore/Microsoft.Quantum.QSharp.Core.csproj | 2 +- .../QSharpFoundation/Microsoft.Quantum.QSharp.Foundation.csproj | 2 +- .../TestProjects/HoneywellExe/HoneywellExe.csproj | 2 +- .../TestProjects/IntrinsicTests/IntrinsicTests.csproj | 2 +- .../Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj | 2 +- .../TestProjects/Library with Spaces/Library with Spaces.csproj | 2 +- .../Simulators.Tests/TestProjects/Library1/Library1.csproj | 2 +- .../Simulators.Tests/TestProjects/Library2/Library2.csproj | 2 +- .../Simulators.Tests/TestProjects/QCIExe/QCIExe.csproj | 2 +- .../Simulators.Tests/TestProjects/QSharpExe/QSharpExe.csproj | 2 +- .../TestProjects/TargetedExe/TargetedExe.csproj | 2 +- .../Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj | 2 +- .../Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj | 2 +- .../Tests.Microsoft.Quantum.Simulators.Type1.csproj | 2 +- .../Tests.Microsoft.Quantum.Simulators.Type2.csproj | 2 +- .../Tests.Microsoft.Quantum.Simulators.Type3.csproj | 2 +- src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj | 2 +- src/Simulation/Type1Core/Microsoft.Quantum.Type1.Core.csproj | 2 +- src/Simulation/Type2Core/Microsoft.Quantum.Type2.Core.csproj | 2 +- src/Simulation/Type3Core/Microsoft.Quantum.Type3.Core.csproj | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/Simulation/CSharpGeneration/Microsoft.Quantum.CSharpGeneration.fsproj b/src/Simulation/CSharpGeneration/Microsoft.Quantum.CSharpGeneration.fsproj index 589624b2877..e18b03df1e0 100644 --- a/src/Simulation/CSharpGeneration/Microsoft.Quantum.CSharpGeneration.fsproj +++ b/src/Simulation/CSharpGeneration/Microsoft.Quantum.CSharpGeneration.fsproj @@ -22,7 +22,7 @@ - + diff --git a/src/Simulation/QCTraceSimulator.Tests/Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj b/src/Simulation/QCTraceSimulator.Tests/Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj index 6d68cbcfd1f..fed4aefa376 100644 --- a/src/Simulation/QCTraceSimulator.Tests/Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj +++ b/src/Simulation/QCTraceSimulator.Tests/Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/QSharpCore/Microsoft.Quantum.QSharp.Core.csproj b/src/Simulation/QSharpCore/Microsoft.Quantum.QSharp.Core.csproj index ca3c3be6651..c48264e6738 100644 --- a/src/Simulation/QSharpCore/Microsoft.Quantum.QSharp.Core.csproj +++ b/src/Simulation/QSharpCore/Microsoft.Quantum.QSharp.Core.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/QSharpFoundation/Microsoft.Quantum.QSharp.Foundation.csproj b/src/Simulation/QSharpFoundation/Microsoft.Quantum.QSharp.Foundation.csproj index d06dc33ddc3..010e6699eb9 100644 --- a/src/Simulation/QSharpFoundation/Microsoft.Quantum.QSharp.Foundation.csproj +++ b/src/Simulation/QSharpFoundation/Microsoft.Quantum.QSharp.Foundation.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Simulators.Tests/TestProjects/HoneywellExe/HoneywellExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/HoneywellExe/HoneywellExe.csproj index 0e85b9642da..754a20205bf 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/HoneywellExe/HoneywellExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/HoneywellExe/HoneywellExe.csproj @@ -1,4 +1,4 @@ - + Exe diff --git a/src/Simulation/Simulators.Tests/TestProjects/IntrinsicTests/IntrinsicTests.csproj b/src/Simulation/Simulators.Tests/TestProjects/IntrinsicTests/IntrinsicTests.csproj index 676d025b48b..ee91bebd29c 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/IntrinsicTests/IntrinsicTests.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/IntrinsicTests/IntrinsicTests.csproj @@ -1,4 +1,4 @@ - + netcoreapp3.1 diff --git a/src/Simulation/Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj index 885b0acb808..73bde6c37cd 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj @@ -1,4 +1,4 @@ - + Exe diff --git a/src/Simulation/Simulators.Tests/TestProjects/Library with Spaces/Library with Spaces.csproj b/src/Simulation/Simulators.Tests/TestProjects/Library with Spaces/Library with Spaces.csproj index 8236575e628..630d687243c 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/Library with Spaces/Library with Spaces.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/Library with Spaces/Library with Spaces.csproj @@ -1,4 +1,4 @@ - + netstandard2.1 false diff --git a/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj b/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj index df41722f72e..562a505a373 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj @@ -1,4 +1,4 @@ - + netstandard2.1 diff --git a/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj b/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj index df41722f72e..562a505a373 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj @@ -1,4 +1,4 @@ - + netstandard2.1 diff --git a/src/Simulation/Simulators.Tests/TestProjects/QCIExe/QCIExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/QCIExe/QCIExe.csproj index b4470d362ec..ab77c1b3fce 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/QCIExe/QCIExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/QCIExe/QCIExe.csproj @@ -1,4 +1,4 @@ - + Exe diff --git a/src/Simulation/Simulators.Tests/TestProjects/QSharpExe/QSharpExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/QSharpExe/QSharpExe.csproj index c009660dcd5..cef60ae0adb 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/QSharpExe/QSharpExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/QSharpExe/QSharpExe.csproj @@ -1,4 +1,4 @@ - + Exe diff --git a/src/Simulation/Simulators.Tests/TestProjects/TargetedExe/TargetedExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/TargetedExe/TargetedExe.csproj index d9647d6c65a..b96f770c319 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/TargetedExe/TargetedExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/TargetedExe/TargetedExe.csproj @@ -1,4 +1,4 @@ - + Exe diff --git a/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj b/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj index f9f22b5d19d..a8d7eb3c442 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj @@ -1,4 +1,4 @@ - + netcoreapp3.1 diff --git a/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj b/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj index 013448b7f74..2a9e0981336 100644 --- a/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj +++ b/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Simulators.Type1.Tests/Tests.Microsoft.Quantum.Simulators.Type1.csproj b/src/Simulation/Simulators.Type1.Tests/Tests.Microsoft.Quantum.Simulators.Type1.csproj index 7717b8f1682..d42aef933e2 100644 --- a/src/Simulation/Simulators.Type1.Tests/Tests.Microsoft.Quantum.Simulators.Type1.csproj +++ b/src/Simulation/Simulators.Type1.Tests/Tests.Microsoft.Quantum.Simulators.Type1.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Simulators.Type2.Tests/Tests.Microsoft.Quantum.Simulators.Type2.csproj b/src/Simulation/Simulators.Type2.Tests/Tests.Microsoft.Quantum.Simulators.Type2.csproj index 7f7435faf90..fa72f437eb2 100644 --- a/src/Simulation/Simulators.Type2.Tests/Tests.Microsoft.Quantum.Simulators.Type2.csproj +++ b/src/Simulation/Simulators.Type2.Tests/Tests.Microsoft.Quantum.Simulators.Type2.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Simulators.Type3.Tests/Tests.Microsoft.Quantum.Simulators.Type3.csproj b/src/Simulation/Simulators.Type3.Tests/Tests.Microsoft.Quantum.Simulators.Type3.csproj index fa4bb43fa21..7f040cd32a1 100644 --- a/src/Simulation/Simulators.Type3.Tests/Tests.Microsoft.Quantum.Simulators.Type3.csproj +++ b/src/Simulation/Simulators.Type3.Tests/Tests.Microsoft.Quantum.Simulators.Type3.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj b/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj index bccfd4022a8..63e0d37f95d 100644 --- a/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj +++ b/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Type1Core/Microsoft.Quantum.Type1.Core.csproj b/src/Simulation/Type1Core/Microsoft.Quantum.Type1.Core.csproj index 48d17d33cfa..a9e853cf59c 100644 --- a/src/Simulation/Type1Core/Microsoft.Quantum.Type1.Core.csproj +++ b/src/Simulation/Type1Core/Microsoft.Quantum.Type1.Core.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Type2Core/Microsoft.Quantum.Type2.Core.csproj b/src/Simulation/Type2Core/Microsoft.Quantum.Type2.Core.csproj index 0bdc65ac1aa..feafb22c783 100644 --- a/src/Simulation/Type2Core/Microsoft.Quantum.Type2.Core.csproj +++ b/src/Simulation/Type2Core/Microsoft.Quantum.Type2.Core.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Type3Core/Microsoft.Quantum.Type3.Core.csproj b/src/Simulation/Type3Core/Microsoft.Quantum.Type3.Core.csproj index a0d68f37051..506bad55448 100644 --- a/src/Simulation/Type3Core/Microsoft.Quantum.Type3.Core.csproj +++ b/src/Simulation/Type3Core/Microsoft.Quantum.Type3.Core.csproj @@ -1,4 +1,4 @@ - + From df3bfe141b9ae5118e40b86297557d83f1e698a2 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Fri, 26 Feb 2021 17:34:30 -0800 Subject: [PATCH 24/59] make default ep commands hidden --- src/Simulation/EntryPointDriver/Driver.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Simulation/EntryPointDriver/Driver.cs b/src/Simulation/EntryPointDriver/Driver.cs index 91907191550..61c42e0ba99 100644 --- a/src/Simulation/EntryPointDriver/Driver.cs +++ b/src/Simulation/EntryPointDriver/Driver.cs @@ -305,6 +305,7 @@ private static (Command, IEnumerable>) CreateSimul if (entryPointCommands.Count() == 1) { var (epCommand, validators) = entryPointCommands.First(); + epCommand.IsHidden = true; simulate.AddCommand(epCommand); SetSubCommandAsDefault(simulate, epCommand, validators); return (simulate, validators); @@ -333,6 +334,7 @@ private static (Command, IEnumerable>) CreateSubmi if (entryPointCommands.Count() == 1) { var (epCommand, validators) = entryPointCommands.First(); + epCommand.IsHidden = true; submit.AddCommand(epCommand); SetSubCommandAsDefault(submit, epCommand, validators); return (submit, validators); From 969b807191d200f6a97ddd30d3bb899f15d94836 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Fri, 26 Feb 2021 18:29:55 -0800 Subject: [PATCH 25/59] Added custom type for commands with their validators. --- src/Simulation/EntryPointDriver/Driver.cs | 75 ++++++++++++++++++++--- 1 file changed, 66 insertions(+), 9 deletions(-) diff --git a/src/Simulation/EntryPointDriver/Driver.cs b/src/Simulation/EntryPointDriver/Driver.cs index 61c42e0ba99..a0b628d25de 100644 --- a/src/Simulation/EntryPointDriver/Driver.cs +++ b/src/Simulation/EntryPointDriver/Driver.cs @@ -297,9 +297,9 @@ private static IEnumerable> MarkOptionsAsMutuallyE /// Creates the simulate command. /// /// The entry point commands that will be the sub commands to the created command. - /// Tuple with the created simulate command and the validators for that command. - private static (Command, IEnumerable>) CreateSimulateCommand( - IEnumerable<(Command, IEnumerable>)> entryPointCommands) + /// The created simulate command with the validators for that command. + private static CommandWithValidators CreateSimulateCommand( + IEnumerable entryPointCommands) { var simulate = new Command("simulate", "(default) Run the program using a local simulator."); if (entryPointCommands.Count() == 1) @@ -324,8 +324,8 @@ private static (Command, IEnumerable>) CreateSimul /// Creates the Azure submit command. /// /// The entry point commands that will be the sub commands to the created command. - /// Tuple with the created submit command and the validators for that command. - private static (Command, IEnumerable>) CreateSubmitCommand(IEnumerable<(Command, IEnumerable>)> entryPointCommands) + /// The created submit command with the validators for that command. + private static CommandWithValidators CreateSubmitCommand(IEnumerable entryPointCommands) { var submit = new Command("submit", "Submit the program to Azure Quantum.") { @@ -353,8 +353,8 @@ private static (Command, IEnumerable>) CreateSubmi /// Creates a sub command specific to the given entry point for the simulate command. /// /// The entry point to make a command for. - /// Tuple with the command corresponding to the given entry point and the validators for that command. - private (Command, IEnumerable>) CreateSimulateEntryPointCommand(IEntryPoint entryPoint) + /// The command corresponding to the given entry point with the validators for that command. + private CommandWithValidators CreateSimulateEntryPointCommand(IEntryPoint entryPoint) { var validators = Enumerable.Empty>(); @@ -376,8 +376,8 @@ private static (Command, IEnumerable>) CreateSubmi /// Creates a sub command specific to the given entry point for the submit command. /// /// The entry point to make a command for. - /// Tuple with the command corresponding to the given entry point and the validators for that command. - private (Command, IEnumerable>) CreateSubmitEntryPointCommand(IEntryPoint entryPoint) + /// The command corresponding to the given entry point with the validators for that command. + private CommandWithValidators CreateSubmitEntryPointCommand(IEntryPoint entryPoint) { var validators = Enumerable.Empty>(); @@ -498,5 +498,62 @@ protected override string ArgumentDescriptor(IArgument argument) return descriptor.Length > 30 ? argument.Name : descriptor; } } + + /// + /// Struct for housing a command with its validators. + /// + private struct CommandWithValidators + { + public Command Command; + public IEnumerable> Validators; + + /// + /// Basic constructor. + /// + public CommandWithValidators(Command command, IEnumerable> validators) + { + Command = command; + Validators = validators; + } + + /// + public override bool Equals(object? obj) + { + return obj is CommandWithValidators other && + EqualityComparer.Default.Equals(Command, other.Command) && + EqualityComparer>>.Default.Equals(Validators, other.Validators); + } + + /// + public override int GetHashCode() + { + return HashCode.Combine(Command, Validators); + } + + /// + /// Allows the type to be deconstructed as a tuple. + /// + public void Deconstruct(out Command command, out IEnumerable> validators) + { + command = Command; + validators = Validators; + } + + /// + /// Allows the type to be converted to a tuple. + /// + public static implicit operator (Command Command, IEnumerable> Validators)(CommandWithValidators value) + { + return (value.Command, value.Validators); + } + + /// + /// Allows the type to be converted from a tuple. + /// + public static implicit operator CommandWithValidators((Command Command, IEnumerable> Validators) value) + { + return new CommandWithValidators(value.Command, value.Validators); + } + } } } From 2d772a2c7942531e587454a2084593ae683c5ea9 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Fri, 26 Feb 2021 18:43:32 -0800 Subject: [PATCH 26/59] Added more tests for multiple entry points --- .../EntryPointDriver.Tests/Tests.fs | 38 ++++++++++++++++++- .../EntryPointDriver.Tests/Tests.qs | 14 +++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/Simulation/EntryPointDriver.Tests/Tests.fs b/src/Simulation/EntryPointDriver.Tests/Tests.fs index 9c1bbc68c9c..c039f476948 100644 --- a/src/Simulation/EntryPointDriver.Tests/Tests.fs +++ b/src/Simulation/EntryPointDriver.Tests/Tests.fs @@ -893,9 +893,45 @@ let ``Shows help text for submit command with default target`` () = given ["submit"; "--help"] |> yields message [] -let ``Supports multiple entry points`` () = +let ``Supports simulating multiple entry points`` () = let given = test "Multiple entry points" given ["simulate"; "EntryPointTest.MultipleEntryPoints1"] |> yields "Hello from Entry Point 1!" given ["simulate"; "EntryPointTest.MultipleEntryPoints2"] |> yields "Hello from Entry Point 2!" given ["simulate"] |> fails + given [] |> fails + +[] +let ``Supports simulating multiple entry points with different parameters`` () = + let given = test "Multiple entry points with different parameters" + given ["simulate"; "EntryPointTest.MultipleEntryPoints1"; "-n"; "42"] |> yields "42" + given ["simulate"; "EntryPointTest.MultipleEntryPoints1"; "-s"; "Hello, World!"] |> fails + given ["simulate"; "EntryPointTest.MultipleEntryPoints1"] |> fails + given ["simulate"; "EntryPointTest.MultipleEntryPoints2"; "-s"; "Hello, World!"] |> yields "Hello, World!" + given ["simulate"; "EntryPointTest.MultipleEntryPoints2"; "-n"; "42"] |> fails + given ["simulate"; "EntryPointTest.MultipleEntryPoints2"] |> fails + given ["simulate"] |> fails + given [] |> fails + +[] +let ``Supports submitting multiple entry points`` () = + let given = test "Multiple entry points" + given (submitWithNothingTarget @ ["EntryPointTest.MultipleEntryPoints1"]) + |> yields "https://www.example.com/00000000-0000-0000-0000-0000000000000" + given (submitWithNothingTarget @ ["EntryPointTest.MultipleEntryPoints2"]) + |> yields "https://www.example.com/00000000-0000-0000-0000-0000000000000" + given submitWithNothingTarget |> fails + given [] |> fails + +[] +let ``Supports submitting multiple entry points with different parameters`` () = + let given = test "Multiple entry points with different parameters" + given (submitWithNothingTarget @ ["EntryPointTest.MultipleEntryPoints1"; "-n"; "42"]) + |> yields "https://www.example.com/00000000-0000-0000-0000-0000000000000" + given (submitWithNothingTarget @ ["EntryPointTest.MultipleEntryPoints1"; "-s"; "Hello, World!"]) |> fails + given (submitWithNothingTarget @ ["EntryPointTest.MultipleEntryPoints1"]) |> fails + given (submitWithNothingTarget @ ["EntryPointTest.MultipleEntryPoints2"; "-s"; "Hello, World!"]) + |> yields "https://www.example.com/00000000-0000-0000-0000-0000000000000" + given (submitWithNothingTarget @ ["EntryPointTest.MultipleEntryPoints2"; "-n"; "42"]) |> fails + given (submitWithNothingTarget @ ["EntryPointTest.MultipleEntryPoints2"]) |> fails + given submitWithNothingTarget |> fails given [] |> fails \ No newline at end of file diff --git a/src/Simulation/EntryPointDriver.Tests/Tests.qs b/src/Simulation/EntryPointDriver.Tests/Tests.qs index 03d8bc4e17e..4091aa89cbd 100644 --- a/src/Simulation/EntryPointDriver.Tests/Tests.qs +++ b/src/Simulation/EntryPointDriver.Tests/Tests.qs @@ -378,3 +378,17 @@ namespace EntryPointTest { return "Hello from Entry Point 2!"; } } + +// --- Multiple entry points with different parameters + +namespace EntryPointTest { + @EntryPoint() + operation MultipleEntryPoints1(n : Double) : Double { + return n; + } + + @EntryPoint() + operation MultipleEntryPoints2(s : String) : String { + return s; + } +} From 250eb65ac5496ce18f65cda9a2331716dfa0ee2d Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Fri, 26 Feb 2021 18:44:56 -0800 Subject: [PATCH 27/59] Revert "Updates version number, will need to be reverted" This reverts commit 91224eefe62c6e0c9c1b40754abd9b9e18abc231. --- .../CSharpGeneration/Microsoft.Quantum.CSharpGeneration.fsproj | 2 +- ....Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj | 2 +- src/Simulation/QSharpCore/Microsoft.Quantum.QSharp.Core.csproj | 2 +- .../QSharpFoundation/Microsoft.Quantum.QSharp.Foundation.csproj | 2 +- .../TestProjects/HoneywellExe/HoneywellExe.csproj | 2 +- .../TestProjects/IntrinsicTests/IntrinsicTests.csproj | 2 +- .../Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj | 2 +- .../TestProjects/Library with Spaces/Library with Spaces.csproj | 2 +- .../Simulators.Tests/TestProjects/Library1/Library1.csproj | 2 +- .../Simulators.Tests/TestProjects/Library2/Library2.csproj | 2 +- .../Simulators.Tests/TestProjects/QCIExe/QCIExe.csproj | 2 +- .../Simulators.Tests/TestProjects/QSharpExe/QSharpExe.csproj | 2 +- .../TestProjects/TargetedExe/TargetedExe.csproj | 2 +- .../Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj | 2 +- .../Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj | 2 +- .../Tests.Microsoft.Quantum.Simulators.Type1.csproj | 2 +- .../Tests.Microsoft.Quantum.Simulators.Type2.csproj | 2 +- .../Tests.Microsoft.Quantum.Simulators.Type3.csproj | 2 +- src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj | 2 +- src/Simulation/Type1Core/Microsoft.Quantum.Type1.Core.csproj | 2 +- src/Simulation/Type2Core/Microsoft.Quantum.Type2.Core.csproj | 2 +- src/Simulation/Type3Core/Microsoft.Quantum.Type3.Core.csproj | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/Simulation/CSharpGeneration/Microsoft.Quantum.CSharpGeneration.fsproj b/src/Simulation/CSharpGeneration/Microsoft.Quantum.CSharpGeneration.fsproj index e18b03df1e0..589624b2877 100644 --- a/src/Simulation/CSharpGeneration/Microsoft.Quantum.CSharpGeneration.fsproj +++ b/src/Simulation/CSharpGeneration/Microsoft.Quantum.CSharpGeneration.fsproj @@ -22,7 +22,7 @@ - + diff --git a/src/Simulation/QCTraceSimulator.Tests/Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj b/src/Simulation/QCTraceSimulator.Tests/Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj index fed4aefa376..6d68cbcfd1f 100644 --- a/src/Simulation/QCTraceSimulator.Tests/Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj +++ b/src/Simulation/QCTraceSimulator.Tests/Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/QSharpCore/Microsoft.Quantum.QSharp.Core.csproj b/src/Simulation/QSharpCore/Microsoft.Quantum.QSharp.Core.csproj index c48264e6738..ca3c3be6651 100644 --- a/src/Simulation/QSharpCore/Microsoft.Quantum.QSharp.Core.csproj +++ b/src/Simulation/QSharpCore/Microsoft.Quantum.QSharp.Core.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/QSharpFoundation/Microsoft.Quantum.QSharp.Foundation.csproj b/src/Simulation/QSharpFoundation/Microsoft.Quantum.QSharp.Foundation.csproj index 010e6699eb9..d06dc33ddc3 100644 --- a/src/Simulation/QSharpFoundation/Microsoft.Quantum.QSharp.Foundation.csproj +++ b/src/Simulation/QSharpFoundation/Microsoft.Quantum.QSharp.Foundation.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Simulators.Tests/TestProjects/HoneywellExe/HoneywellExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/HoneywellExe/HoneywellExe.csproj index 754a20205bf..0e85b9642da 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/HoneywellExe/HoneywellExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/HoneywellExe/HoneywellExe.csproj @@ -1,4 +1,4 @@ - + Exe diff --git a/src/Simulation/Simulators.Tests/TestProjects/IntrinsicTests/IntrinsicTests.csproj b/src/Simulation/Simulators.Tests/TestProjects/IntrinsicTests/IntrinsicTests.csproj index ee91bebd29c..676d025b48b 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/IntrinsicTests/IntrinsicTests.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/IntrinsicTests/IntrinsicTests.csproj @@ -1,4 +1,4 @@ - + netcoreapp3.1 diff --git a/src/Simulation/Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj index 73bde6c37cd..885b0acb808 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/IonQExe/IonQExe.csproj @@ -1,4 +1,4 @@ - + Exe diff --git a/src/Simulation/Simulators.Tests/TestProjects/Library with Spaces/Library with Spaces.csproj b/src/Simulation/Simulators.Tests/TestProjects/Library with Spaces/Library with Spaces.csproj index 630d687243c..8236575e628 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/Library with Spaces/Library with Spaces.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/Library with Spaces/Library with Spaces.csproj @@ -1,4 +1,4 @@ - + netstandard2.1 false diff --git a/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj b/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj index 562a505a373..df41722f72e 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/Library1/Library1.csproj @@ -1,4 +1,4 @@ - + netstandard2.1 diff --git a/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj b/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj index 562a505a373..df41722f72e 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/Library2/Library2.csproj @@ -1,4 +1,4 @@ - + netstandard2.1 diff --git a/src/Simulation/Simulators.Tests/TestProjects/QCIExe/QCIExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/QCIExe/QCIExe.csproj index ab77c1b3fce..b4470d362ec 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/QCIExe/QCIExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/QCIExe/QCIExe.csproj @@ -1,4 +1,4 @@ - + Exe diff --git a/src/Simulation/Simulators.Tests/TestProjects/QSharpExe/QSharpExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/QSharpExe/QSharpExe.csproj index cef60ae0adb..c009660dcd5 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/QSharpExe/QSharpExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/QSharpExe/QSharpExe.csproj @@ -1,4 +1,4 @@ - + Exe diff --git a/src/Simulation/Simulators.Tests/TestProjects/TargetedExe/TargetedExe.csproj b/src/Simulation/Simulators.Tests/TestProjects/TargetedExe/TargetedExe.csproj index b96f770c319..d9647d6c65a 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/TargetedExe/TargetedExe.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/TargetedExe/TargetedExe.csproj @@ -1,4 +1,4 @@ - + Exe diff --git a/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj b/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj index a8d7eb3c442..f9f22b5d19d 100644 --- a/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj +++ b/src/Simulation/Simulators.Tests/TestProjects/UnitTests/UnitTests.csproj @@ -1,4 +1,4 @@ - + netcoreapp3.1 diff --git a/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj b/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj index 2a9e0981336..013448b7f74 100644 --- a/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj +++ b/src/Simulation/Simulators.Tests/Tests.Microsoft.Quantum.Simulators.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Simulators.Type1.Tests/Tests.Microsoft.Quantum.Simulators.Type1.csproj b/src/Simulation/Simulators.Type1.Tests/Tests.Microsoft.Quantum.Simulators.Type1.csproj index d42aef933e2..7717b8f1682 100644 --- a/src/Simulation/Simulators.Type1.Tests/Tests.Microsoft.Quantum.Simulators.Type1.csproj +++ b/src/Simulation/Simulators.Type1.Tests/Tests.Microsoft.Quantum.Simulators.Type1.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Simulators.Type2.Tests/Tests.Microsoft.Quantum.Simulators.Type2.csproj b/src/Simulation/Simulators.Type2.Tests/Tests.Microsoft.Quantum.Simulators.Type2.csproj index fa72f437eb2..7f7435faf90 100644 --- a/src/Simulation/Simulators.Type2.Tests/Tests.Microsoft.Quantum.Simulators.Type2.csproj +++ b/src/Simulation/Simulators.Type2.Tests/Tests.Microsoft.Quantum.Simulators.Type2.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Simulators.Type3.Tests/Tests.Microsoft.Quantum.Simulators.Type3.csproj b/src/Simulation/Simulators.Type3.Tests/Tests.Microsoft.Quantum.Simulators.Type3.csproj index 7f040cd32a1..fa4bb43fa21 100644 --- a/src/Simulation/Simulators.Type3.Tests/Tests.Microsoft.Quantum.Simulators.Type3.csproj +++ b/src/Simulation/Simulators.Type3.Tests/Tests.Microsoft.Quantum.Simulators.Type3.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj b/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj index 63e0d37f95d..bccfd4022a8 100644 --- a/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj +++ b/src/Simulation/Simulators/Microsoft.Quantum.Simulators.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Type1Core/Microsoft.Quantum.Type1.Core.csproj b/src/Simulation/Type1Core/Microsoft.Quantum.Type1.Core.csproj index a9e853cf59c..48d17d33cfa 100644 --- a/src/Simulation/Type1Core/Microsoft.Quantum.Type1.Core.csproj +++ b/src/Simulation/Type1Core/Microsoft.Quantum.Type1.Core.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Type2Core/Microsoft.Quantum.Type2.Core.csproj b/src/Simulation/Type2Core/Microsoft.Quantum.Type2.Core.csproj index feafb22c783..0bdc65ac1aa 100644 --- a/src/Simulation/Type2Core/Microsoft.Quantum.Type2.Core.csproj +++ b/src/Simulation/Type2Core/Microsoft.Quantum.Type2.Core.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Simulation/Type3Core/Microsoft.Quantum.Type3.Core.csproj b/src/Simulation/Type3Core/Microsoft.Quantum.Type3.Core.csproj index 506bad55448..a0d68f37051 100644 --- a/src/Simulation/Type3Core/Microsoft.Quantum.Type3.Core.csproj +++ b/src/Simulation/Type3Core/Microsoft.Quantum.Type3.Core.csproj @@ -1,4 +1,4 @@ - + From 112aa3bc5be62213905c9b821b362c9b5ad7bf26 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Fri, 26 Feb 2021 19:19:53 -0800 Subject: [PATCH 28/59] changed line endings in Simulation.sln --- Simulation.sln | 1376 ++++++++++++++++++++++++------------------------ 1 file changed, 688 insertions(+), 688 deletions(-) diff --git a/Simulation.sln b/Simulation.sln index 60cf221c4a5..e67c2fd1259 100644 --- a/Simulation.sln +++ b/Simulation.sln @@ -1,688 +1,688 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.28809.33 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Runtime.Core", "src\Simulation\Core\Microsoft.Quantum.Runtime.Core.csproj", "{E9123D45-C1B0-4462-8810-D26ED6D31944}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime", "src\Simulation\QCTraceSimulator\Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj", "{058CB08D-BFA7-41E2-BE6B-0A0A72054F91}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Simulation.Common", "src\Simulation\Common\Microsoft.Quantum.Simulation.Common.csproj", "{8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Simulators", "src\Simulation\Simulators\Microsoft.Quantum.Simulators.csproj", "{72B7E75C-D305-45BD-929E-C86298AAA8DE}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime", "src\Simulation\QCTraceSimulator.Tests\Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj", "{DD50D2D9-2765-449B-8C4B-835A428E160D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulators", "src\Simulation\Simulators.Tests\Tests.Microsoft.Quantum.Simulators.csproj", "{23461B29-F9DE-4F5B-BC30-50BBE1A10B48}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "simulation", "simulation", "{34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.QSharp.Core", "src\Simulation\QSharpCore\Microsoft.Quantum.QSharp.Core.csproj", "{A6C5BA7A-DF6F-476F-9106-95905932B810}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "xunit", "xunit", "{34117E2A-DEDC-4274-AAA4-3C61ACF86284}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "core", "core", "{03736C2E-DB2A-46A9-B7B2-C1216BDECB4F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Xunit", "src\Xunit\Microsoft.Quantum.Xunit.csproj", "{ECFE1CE8-46A1-4D14-99D6-AAF76B704638}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "generation", "generation", "{A567C185-A429-418B-AFDE-6F1785BA4A77}" -EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Tests.CSharpGeneration", "src\Simulation\CSharpGeneration.Tests\Tests.CSharpGeneration.fsproj", "{10D7C395-4F79-4DAF-9289-A4B8FAF6183A}" -EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Microsoft.Quantum.RoslynWrapper", "src\Simulation\RoslynWrapper\Microsoft.Quantum.RoslynWrapper.fsproj", "{618FBF9D-4EF3-435D-9728-81C726236668}" -EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Tests.RoslynWrapper", "src\Simulation\RoslynWrapper.Tests\Tests.RoslynWrapper.fsproj", "{48206BD6-48DD-4442-A395-3A6594E4C9C6}" -EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Microsoft.Quantum.CSharpGeneration", "src\Simulation\CSharpGeneration\Microsoft.Quantum.CSharpGeneration.fsproj", "{B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestProjects", "TestProjects", "{09C842CB-930C-4C7D-AD5F-E30DE4A55820}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QSharpExe", "src\Simulation\Simulators.Tests\TestProjects\QSharpExe\QSharpExe.csproj", "{2F5796A7-4AF8-4B78-928A-0A3A80752F9D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.EntryPointDriver", "src\Simulation\EntryPointDriver\Microsoft.Quantum.EntryPointDriver.csproj", "{944FE7EF-9220-4CC6-BB20-CE517195B922}" -EndProject -Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Tests.Microsoft.Quantum.EntryPointDriver", "src\Simulation\EntryPointDriver.Tests\Tests.Microsoft.Quantum.EntryPointDriver.fsproj", "{E2F30496-19D8-46A8-9BC0-26936FFE70D2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Library1", "src\Simulation\Simulators.Tests\TestProjects\Library1\Library1.csproj", "{7256B986-6705-42FC-9F57-485D72D9DE51}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Library2", "src\Simulation\Simulators.Tests\TestProjects\Library2\Library2.csproj", "{A85277B3-4E07-4E15-8F0C-07CC855A3BCB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Library with Spaces", "src\Simulation\Simulators.Tests\TestProjects\Library with Spaces\Library with Spaces.csproj", "{418E79F7-9FCF-4128-AA35-1334A685377D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnitTests", "src\Simulation\Simulators.Tests\TestProjects\UnitTests\UnitTests.csproj", "{46278108-D247-4EFC-AC34-23D4A676F62F}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Azure", "Azure", "{37CDC768-16D4-4574-8553-07D99D0A72F7}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Azure.Quantum.Client", "src\Azure\Azure.Quantum.Client\Microsoft.Azure.Quantum.Client.csproj", "{7F05FD87-A2FB-4915-A988-4EF92AB82179}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Azure.Quantum.Client.Test", "src\Azure\Azure.Quantum.Client.Test\Microsoft.Azure.Quantum.Client.Test.csproj", "{4858E5E3-23FA-4928-B99A-54065875A2B9}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HoneywellExe", "src\Simulation\Simulators.Tests\TestProjects\HoneywellExe\HoneywellExe.csproj", "{1448512E-132F-4DA8-BCBA-D98F16B31600}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IonQExe", "src\Simulation\Simulators.Tests\TestProjects\IonQExe\IonQExe.csproj", "{55833C6C-6E91-4413-9F77-96B3A09666B8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QCIExe", "src\Simulation\Simulators.Tests\TestProjects\QCIExe\QCIExe.csproj", "{C015FF41-9A51-4AF0-AEFC-2547D596B10A}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TargetedExe", "src\Simulation\Simulators.Tests\TestProjects\TargetedExe\TargetedExe.csproj", "{D292BF18-3956-4827-820E-254C3F81EF09}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.QSharp.Foundation", "src\Simulation\QSharpFoundation\Microsoft.Quantum.QSharp.Foundation.csproj", "{DB45AD73-4D91-43F3-85CC-C63614A96FB0}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Type2.Core", "src\Simulation\Type2Core\Microsoft.Quantum.Type2.Core.csproj", "{AF6CD304-8E03-433D-AAA2-6E0094B53071}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulators.Type2", "src\Simulation\Simulators.Type2.Tests\Tests.Microsoft.Quantum.Simulators.Type2.csproj", "{ED3D7040-4B3F-4217-A75E-9DF63DD84707}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntrinsicTests", "src\Simulation\Simulators.Tests\TestProjects\IntrinsicTests\IntrinsicTests.csproj", "{4EF958CA-B4A6-4E5F-924A-100B5615BEC3}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulators.Type1", "src\Simulation\Simulators.Type1.Tests\Tests.Microsoft.Quantum.Simulators.Type1.csproj", "{EB6E3DBD-C884-4241-9BC4-8281191D1F53}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Type1.Core", "src\Simulation\Type1Core\Microsoft.Quantum.Type1.Core.csproj", "{E1A463D7-2E23-4134-BE04-1EFF7A546813}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "targeting", "targeting", "{93409CC3-8DF9-45FA-AE21-16A19FDEF650}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Targets.Interfaces", "src\Simulation\TargetDefinitions\Interfaces\Microsoft.Quantum.Targets.Interfaces.csproj", "{789C86D9-CE77-40DA-BDDD-979436952512}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Type3.Core", "src\Simulation\Type3Core\Microsoft.Quantum.Type3.Core.csproj", "{7E24885B-D86D-477E-A840-06FA53C33FE1}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulators.Type3", "src\Simulation\Simulators.Type3.Tests\Tests.Microsoft.Quantum.Simulators.Type3.csproj", "{7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - MinSizeRel|Any CPU = MinSizeRel|Any CPU - MinSizeRel|x64 = MinSizeRel|x64 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - RelWithDebInfo|Any CPU = RelWithDebInfo|Any CPU - RelWithDebInfo|x64 = RelWithDebInfo|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|x64.ActiveCfg = Debug|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|x64.Build.0 = Debug|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.MinSizeRel|x64.ActiveCfg = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.MinSizeRel|x64.Build.0 = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.Release|Any CPU.Build.0 = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.Release|x64.ActiveCfg = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.Release|x64.Build.0 = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {E9123D45-C1B0-4462-8810-D26ED6D31944}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Debug|Any CPU.Build.0 = Debug|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Debug|x64.ActiveCfg = Debug|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Debug|x64.Build.0 = Debug|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.MinSizeRel|x64.ActiveCfg = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.MinSizeRel|x64.Build.0 = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Release|Any CPU.ActiveCfg = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Release|Any CPU.Build.0 = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Release|x64.ActiveCfg = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Release|x64.Build.0 = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Debug|x64.ActiveCfg = Debug|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Debug|x64.Build.0 = Debug|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.MinSizeRel|x64.ActiveCfg = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.MinSizeRel|x64.Build.0 = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Release|Any CPU.Build.0 = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Release|x64.ActiveCfg = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Release|x64.Build.0 = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Debug|x64.ActiveCfg = Debug|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Debug|x64.Build.0 = Debug|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.MinSizeRel|x64.ActiveCfg = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.MinSizeRel|x64.Build.0 = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Release|Any CPU.Build.0 = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Release|x64.ActiveCfg = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Release|x64.Build.0 = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {72B7E75C-D305-45BD-929E-C86298AAA8DE}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.Debug|x64.ActiveCfg = Debug|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.Debug|x64.Build.0 = Debug|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.Release|Any CPU.Build.0 = Release|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.Release|x64.ActiveCfg = Release|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.Release|x64.Build.0 = Release|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {DD50D2D9-2765-449B-8C4B-835A428E160D}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Debug|Any CPU.Build.0 = Debug|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Debug|x64.ActiveCfg = Debug|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Debug|x64.Build.0 = Debug|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Release|Any CPU.ActiveCfg = Release|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Release|Any CPU.Build.0 = Release|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Release|x64.ActiveCfg = Release|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Release|x64.Build.0 = Release|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.Debug|x64.ActiveCfg = Debug|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.Debug|x64.Build.0 = Debug|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.Release|Any CPU.Build.0 = Release|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.Release|x64.ActiveCfg = Release|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.Release|x64.Build.0 = Release|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {A6C5BA7A-DF6F-476F-9106-95905932B810}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Debug|x64.ActiveCfg = Debug|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Debug|x64.Build.0 = Debug|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Release|Any CPU.Build.0 = Release|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Release|x64.ActiveCfg = Release|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Release|x64.Build.0 = Release|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Debug|x64.ActiveCfg = Debug|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Debug|x64.Build.0 = Debug|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Release|Any CPU.Build.0 = Release|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Release|x64.ActiveCfg = Release|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Release|x64.Build.0 = Release|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.Debug|Any CPU.Build.0 = Debug|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.Debug|x64.ActiveCfg = Debug|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.Debug|x64.Build.0 = Debug|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.Release|Any CPU.ActiveCfg = Release|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.Release|Any CPU.Build.0 = Release|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.Release|x64.ActiveCfg = Release|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.Release|x64.Build.0 = Release|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {618FBF9D-4EF3-435D-9728-81C726236668}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Debug|x64.ActiveCfg = Debug|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Debug|x64.Build.0 = Debug|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Release|Any CPU.Build.0 = Release|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Release|x64.ActiveCfg = Release|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Release|x64.Build.0 = Release|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {48206BD6-48DD-4442-A395-3A6594E4C9C6}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Debug|x64.ActiveCfg = Debug|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Debug|x64.Build.0 = Debug|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Release|Any CPU.Build.0 = Release|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Release|x64.ActiveCfg = Release|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Release|x64.Build.0 = Release|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Debug|x64.ActiveCfg = Debug|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Debug|x64.Build.0 = Debug|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Release|Any CPU.Build.0 = Release|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Release|x64.ActiveCfg = Release|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Release|x64.Build.0 = Release|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.Debug|Any CPU.Build.0 = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.Debug|x64.ActiveCfg = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.Debug|x64.Build.0 = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.Release|Any CPU.ActiveCfg = Release|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.Release|Any CPU.Build.0 = Release|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.Release|x64.ActiveCfg = Release|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.Release|x64.Build.0 = Release|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {944FE7EF-9220-4CC6-BB20-CE517195B922}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Debug|x64.ActiveCfg = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Debug|x64.Build.0 = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Release|Any CPU.Build.0 = Release|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Release|x64.ActiveCfg = Release|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Release|x64.Build.0 = Release|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.Debug|x64.ActiveCfg = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.Debug|x64.Build.0 = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.Release|Any CPU.Build.0 = Release|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.Release|x64.ActiveCfg = Release|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.Release|x64.Build.0 = Release|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {7256B986-6705-42FC-9F57-485D72D9DE51}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Debug|x64.ActiveCfg = Debug|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Debug|x64.Build.0 = Debug|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Release|Any CPU.Build.0 = Release|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Release|x64.ActiveCfg = Release|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Release|x64.Build.0 = Release|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.Debug|x64.ActiveCfg = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.Debug|x64.Build.0 = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.Release|Any CPU.Build.0 = Release|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.Release|x64.ActiveCfg = Release|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.Release|x64.Build.0 = Release|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {418E79F7-9FCF-4128-AA35-1334A685377D}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.Debug|x64.ActiveCfg = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.Debug|x64.Build.0 = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.Release|Any CPU.Build.0 = Release|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.Release|x64.ActiveCfg = Release|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.Release|x64.Build.0 = Release|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|x64.ActiveCfg = Debug|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|x64.Build.0 = Debug|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|Any CPU.Build.0 = Release|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|x64.ActiveCfg = Release|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|x64.Build.0 = Release|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|x64.ActiveCfg = Debug|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|x64.Build.0 = Debug|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|Any CPU.Build.0 = Release|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|x64.ActiveCfg = Release|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|x64.Build.0 = Release|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.Debug|x64.ActiveCfg = Debug|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.Debug|x64.Build.0 = Debug|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.Release|Any CPU.Build.0 = Release|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.Release|x64.ActiveCfg = Release|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.Release|x64.Build.0 = Release|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {1448512E-132F-4DA8-BCBA-D98F16B31600}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.Debug|x64.ActiveCfg = Debug|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.Debug|x64.Build.0 = Debug|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.Release|Any CPU.Build.0 = Release|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.Release|x64.ActiveCfg = Release|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.Release|x64.Build.0 = Release|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {55833C6C-6E91-4413-9F77-96B3A09666B8}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Debug|x64.ActiveCfg = Debug|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Debug|x64.Build.0 = Debug|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Release|Any CPU.Build.0 = Release|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Release|x64.ActiveCfg = Release|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Release|x64.Build.0 = Release|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.Debug|x64.ActiveCfg = Debug|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.Debug|x64.Build.0 = Debug|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.Release|Any CPU.Build.0 = Release|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.Release|x64.ActiveCfg = Release|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.Release|x64.Build.0 = Release|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU - {D292BF18-3956-4827-820E-254C3F81EF09}.RelWithDebInfo|x64.Build.0 = Release|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Debug|x64.ActiveCfg = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Debug|x64.Build.0 = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Release|Any CPU.Build.0 = Release|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Release|x64.ActiveCfg = Release|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Release|x64.Build.0 = Release|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Debug|x64.ActiveCfg = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Debug|x64.Build.0 = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Release|Any CPU.Build.0 = Release|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Release|x64.ActiveCfg = Release|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Release|x64.Build.0 = Release|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {AF6CD304-8E03-433D-AAA2-6E0094B53071}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Debug|x64.ActiveCfg = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Debug|x64.Build.0 = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Release|Any CPU.Build.0 = Release|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Release|x64.ActiveCfg = Release|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Release|x64.Build.0 = Release|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Debug|x64.ActiveCfg = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Debug|x64.Build.0 = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Release|Any CPU.Build.0 = Release|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Release|x64.ActiveCfg = Release|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Release|x64.Build.0 = Release|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Debug|x64.ActiveCfg = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Debug|x64.Build.0 = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Release|Any CPU.Build.0 = Release|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Release|x64.ActiveCfg = Release|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Release|x64.Build.0 = Release|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Debug|x64.ActiveCfg = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Debug|x64.Build.0 = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Release|Any CPU.Build.0 = Release|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Release|x64.ActiveCfg = Release|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Release|x64.Build.0 = Release|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {E1A463D7-2E23-4134-BE04-1EFF7A546813}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.Debug|Any CPU.Build.0 = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.Debug|x64.ActiveCfg = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.Debug|x64.Build.0 = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.Release|Any CPU.ActiveCfg = Release|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.Release|Any CPU.Build.0 = Release|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.Release|x64.ActiveCfg = Release|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.Release|x64.Build.0 = Release|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {789C86D9-CE77-40DA-BDDD-979436952512}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.Debug|x64.ActiveCfg = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.Debug|x64.Build.0 = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.Release|Any CPU.Build.0 = Release|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.Release|x64.ActiveCfg = Release|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.Release|x64.Build.0 = Release|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {7E24885B-D86D-477E-A840-06FA53C33FE1}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Debug|x64.ActiveCfg = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Debug|x64.Build.0 = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.MinSizeRel|x64.Build.0 = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Release|Any CPU.Build.0 = Release|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Release|x64.ActiveCfg = Release|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Release|x64.Build.0 = Release|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {E9123D45-C1B0-4462-8810-D26ED6D31944} = {03736C2E-DB2A-46A9-B7B2-C1216BDECB4F} - {058CB08D-BFA7-41E2-BE6B-0A0A72054F91} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {72B7E75C-D305-45BD-929E-C86298AAA8DE} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {DD50D2D9-2765-449B-8C4B-835A428E160D} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {23461B29-F9DE-4F5B-BC30-50BBE1A10B48} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {A6C5BA7A-DF6F-476F-9106-95905932B810} = {03736C2E-DB2A-46A9-B7B2-C1216BDECB4F} - {ECFE1CE8-46A1-4D14-99D6-AAF76B704638} = {34117E2A-DEDC-4274-AAA4-3C61ACF86284} - {10D7C395-4F79-4DAF-9289-A4B8FAF6183A} = {A567C185-A429-418B-AFDE-6F1785BA4A77} - {618FBF9D-4EF3-435D-9728-81C726236668} = {A567C185-A429-418B-AFDE-6F1785BA4A77} - {48206BD6-48DD-4442-A395-3A6594E4C9C6} = {A567C185-A429-418B-AFDE-6F1785BA4A77} - {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC} = {A567C185-A429-418B-AFDE-6F1785BA4A77} - {09C842CB-930C-4C7D-AD5F-E30DE4A55820} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {2F5796A7-4AF8-4B78-928A-0A3A80752F9D} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {944FE7EF-9220-4CC6-BB20-CE517195B922} = {A567C185-A429-418B-AFDE-6F1785BA4A77} - {E2F30496-19D8-46A8-9BC0-26936FFE70D2} = {A567C185-A429-418B-AFDE-6F1785BA4A77} - {7256B986-6705-42FC-9F57-485D72D9DE51} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {A85277B3-4E07-4E15-8F0C-07CC855A3BCB} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {418E79F7-9FCF-4128-AA35-1334A685377D} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {46278108-D247-4EFC-AC34-23D4A676F62F} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {7F05FD87-A2FB-4915-A988-4EF92AB82179} = {37CDC768-16D4-4574-8553-07D99D0A72F7} - {4858E5E3-23FA-4928-B99A-54065875A2B9} = {37CDC768-16D4-4574-8553-07D99D0A72F7} - {1448512E-132F-4DA8-BCBA-D98F16B31600} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {55833C6C-6E91-4413-9F77-96B3A09666B8} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {C015FF41-9A51-4AF0-AEFC-2547D596B10A} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {D292BF18-3956-4827-820E-254C3F81EF09} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {DB45AD73-4D91-43F3-85CC-C63614A96FB0} = {03736C2E-DB2A-46A9-B7B2-C1216BDECB4F} - {AF6CD304-8E03-433D-AAA2-6E0094B53071} = {93409CC3-8DF9-45FA-AE21-16A19FDEF650} - {ED3D7040-4B3F-4217-A75E-9DF63DD84707} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {4EF958CA-B4A6-4E5F-924A-100B5615BEC3} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} - {EB6E3DBD-C884-4241-9BC4-8281191D1F53} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {E1A463D7-2E23-4134-BE04-1EFF7A546813} = {93409CC3-8DF9-45FA-AE21-16A19FDEF650} - {789C86D9-CE77-40DA-BDDD-979436952512} = {93409CC3-8DF9-45FA-AE21-16A19FDEF650} - {7E24885B-D86D-477E-A840-06FA53C33FE1} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {929C0464-86D8-4F70-8835-0A5EAF930821} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.28809.33 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Runtime.Core", "src\Simulation\Core\Microsoft.Quantum.Runtime.Core.csproj", "{E9123D45-C1B0-4462-8810-D26ED6D31944}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime", "src\Simulation\QCTraceSimulator\Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj", "{058CB08D-BFA7-41E2-BE6B-0A0A72054F91}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Simulation.Common", "src\Simulation\Common\Microsoft.Quantum.Simulation.Common.csproj", "{8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Simulators", "src\Simulation\Simulators\Microsoft.Quantum.Simulators.csproj", "{72B7E75C-D305-45BD-929E-C86298AAA8DE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime", "src\Simulation\QCTraceSimulator.Tests\Tests.Microsoft.Quantum.Simulation.QCTraceSimulatorRuntime.csproj", "{DD50D2D9-2765-449B-8C4B-835A428E160D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulators", "src\Simulation\Simulators.Tests\Tests.Microsoft.Quantum.Simulators.csproj", "{23461B29-F9DE-4F5B-BC30-50BBE1A10B48}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "simulation", "simulation", "{34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.QSharp.Core", "src\Simulation\QSharpCore\Microsoft.Quantum.QSharp.Core.csproj", "{A6C5BA7A-DF6F-476F-9106-95905932B810}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "xunit", "xunit", "{34117E2A-DEDC-4274-AAA4-3C61ACF86284}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "core", "core", "{03736C2E-DB2A-46A9-B7B2-C1216BDECB4F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Xunit", "src\Xunit\Microsoft.Quantum.Xunit.csproj", "{ECFE1CE8-46A1-4D14-99D6-AAF76B704638}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "generation", "generation", "{A567C185-A429-418B-AFDE-6F1785BA4A77}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Tests.CSharpGeneration", "src\Simulation\CSharpGeneration.Tests\Tests.CSharpGeneration.fsproj", "{10D7C395-4F79-4DAF-9289-A4B8FAF6183A}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Microsoft.Quantum.RoslynWrapper", "src\Simulation\RoslynWrapper\Microsoft.Quantum.RoslynWrapper.fsproj", "{618FBF9D-4EF3-435D-9728-81C726236668}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Tests.RoslynWrapper", "src\Simulation\RoslynWrapper.Tests\Tests.RoslynWrapper.fsproj", "{48206BD6-48DD-4442-A395-3A6594E4C9C6}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Microsoft.Quantum.CSharpGeneration", "src\Simulation\CSharpGeneration\Microsoft.Quantum.CSharpGeneration.fsproj", "{B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TestProjects", "TestProjects", "{09C842CB-930C-4C7D-AD5F-E30DE4A55820}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QSharpExe", "src\Simulation\Simulators.Tests\TestProjects\QSharpExe\QSharpExe.csproj", "{2F5796A7-4AF8-4B78-928A-0A3A80752F9D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.EntryPointDriver", "src\Simulation\EntryPointDriver\Microsoft.Quantum.EntryPointDriver.csproj", "{944FE7EF-9220-4CC6-BB20-CE517195B922}" +EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Tests.Microsoft.Quantum.EntryPointDriver", "src\Simulation\EntryPointDriver.Tests\Tests.Microsoft.Quantum.EntryPointDriver.fsproj", "{E2F30496-19D8-46A8-9BC0-26936FFE70D2}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Library1", "src\Simulation\Simulators.Tests\TestProjects\Library1\Library1.csproj", "{7256B986-6705-42FC-9F57-485D72D9DE51}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Library2", "src\Simulation\Simulators.Tests\TestProjects\Library2\Library2.csproj", "{A85277B3-4E07-4E15-8F0C-07CC855A3BCB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Library with Spaces", "src\Simulation\Simulators.Tests\TestProjects\Library with Spaces\Library with Spaces.csproj", "{418E79F7-9FCF-4128-AA35-1334A685377D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnitTests", "src\Simulation\Simulators.Tests\TestProjects\UnitTests\UnitTests.csproj", "{46278108-D247-4EFC-AC34-23D4A676F62F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Azure", "Azure", "{37CDC768-16D4-4574-8553-07D99D0A72F7}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Azure.Quantum.Client", "src\Azure\Azure.Quantum.Client\Microsoft.Azure.Quantum.Client.csproj", "{7F05FD87-A2FB-4915-A988-4EF92AB82179}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Azure.Quantum.Client.Test", "src\Azure\Azure.Quantum.Client.Test\Microsoft.Azure.Quantum.Client.Test.csproj", "{4858E5E3-23FA-4928-B99A-54065875A2B9}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HoneywellExe", "src\Simulation\Simulators.Tests\TestProjects\HoneywellExe\HoneywellExe.csproj", "{1448512E-132F-4DA8-BCBA-D98F16B31600}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IonQExe", "src\Simulation\Simulators.Tests\TestProjects\IonQExe\IonQExe.csproj", "{55833C6C-6E91-4413-9F77-96B3A09666B8}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QCIExe", "src\Simulation\Simulators.Tests\TestProjects\QCIExe\QCIExe.csproj", "{C015FF41-9A51-4AF0-AEFC-2547D596B10A}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TargetedExe", "src\Simulation\Simulators.Tests\TestProjects\TargetedExe\TargetedExe.csproj", "{D292BF18-3956-4827-820E-254C3F81EF09}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.QSharp.Foundation", "src\Simulation\QSharpFoundation\Microsoft.Quantum.QSharp.Foundation.csproj", "{DB45AD73-4D91-43F3-85CC-C63614A96FB0}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Type2.Core", "src\Simulation\Type2Core\Microsoft.Quantum.Type2.Core.csproj", "{AF6CD304-8E03-433D-AAA2-6E0094B53071}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulators.Type2", "src\Simulation\Simulators.Type2.Tests\Tests.Microsoft.Quantum.Simulators.Type2.csproj", "{ED3D7040-4B3F-4217-A75E-9DF63DD84707}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IntrinsicTests", "src\Simulation\Simulators.Tests\TestProjects\IntrinsicTests\IntrinsicTests.csproj", "{4EF958CA-B4A6-4E5F-924A-100B5615BEC3}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulators.Type1", "src\Simulation\Simulators.Type1.Tests\Tests.Microsoft.Quantum.Simulators.Type1.csproj", "{EB6E3DBD-C884-4241-9BC4-8281191D1F53}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Type1.Core", "src\Simulation\Type1Core\Microsoft.Quantum.Type1.Core.csproj", "{E1A463D7-2E23-4134-BE04-1EFF7A546813}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "targeting", "targeting", "{93409CC3-8DF9-45FA-AE21-16A19FDEF650}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Targets.Interfaces", "src\Simulation\TargetDefinitions\Interfaces\Microsoft.Quantum.Targets.Interfaces.csproj", "{789C86D9-CE77-40DA-BDDD-979436952512}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Quantum.Type3.Core", "src\Simulation\Type3Core\Microsoft.Quantum.Type3.Core.csproj", "{7E24885B-D86D-477E-A840-06FA53C33FE1}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.Microsoft.Quantum.Simulators.Type3", "src\Simulation\Simulators.Type3.Tests\Tests.Microsoft.Quantum.Simulators.Type3.csproj", "{7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + MinSizeRel|Any CPU = MinSizeRel|Any CPU + MinSizeRel|x64 = MinSizeRel|x64 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + RelWithDebInfo|Any CPU = RelWithDebInfo|Any CPU + RelWithDebInfo|x64 = RelWithDebInfo|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|x64.ActiveCfg = Debug|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.Debug|x64.Build.0 = Debug|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.MinSizeRel|x64.ActiveCfg = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.MinSizeRel|x64.Build.0 = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.Release|Any CPU.Build.0 = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.Release|x64.ActiveCfg = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.Release|x64.Build.0 = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {E9123D45-C1B0-4462-8810-D26ED6D31944}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Debug|Any CPU.Build.0 = Debug|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Debug|x64.ActiveCfg = Debug|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Debug|x64.Build.0 = Debug|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.MinSizeRel|x64.ActiveCfg = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.MinSizeRel|x64.Build.0 = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Release|Any CPU.ActiveCfg = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Release|Any CPU.Build.0 = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Release|x64.ActiveCfg = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.Release|x64.Build.0 = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Debug|x64.ActiveCfg = Debug|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Debug|x64.Build.0 = Debug|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.MinSizeRel|x64.ActiveCfg = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.MinSizeRel|x64.Build.0 = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Release|Any CPU.Build.0 = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Release|x64.ActiveCfg = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.Release|x64.Build.0 = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Debug|x64.ActiveCfg = Debug|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Debug|x64.Build.0 = Debug|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.MinSizeRel|Any CPU.ActiveCfg = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.MinSizeRel|Any CPU.Build.0 = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.MinSizeRel|x64.ActiveCfg = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.MinSizeRel|x64.Build.0 = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Release|Any CPU.Build.0 = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Release|x64.ActiveCfg = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.Release|x64.Build.0 = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {72B7E75C-D305-45BD-929E-C86298AAA8DE}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.Debug|x64.ActiveCfg = Debug|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.Debug|x64.Build.0 = Debug|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.Release|Any CPU.Build.0 = Release|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.Release|x64.ActiveCfg = Release|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.Release|x64.Build.0 = Release|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {DD50D2D9-2765-449B-8C4B-835A428E160D}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Debug|Any CPU.Build.0 = Debug|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Debug|x64.ActiveCfg = Debug|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Debug|x64.Build.0 = Debug|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Release|Any CPU.ActiveCfg = Release|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Release|Any CPU.Build.0 = Release|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Release|x64.ActiveCfg = Release|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.Release|x64.Build.0 = Release|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.Debug|x64.ActiveCfg = Debug|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.Debug|x64.Build.0 = Debug|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.Release|Any CPU.Build.0 = Release|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.Release|x64.ActiveCfg = Release|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.Release|x64.Build.0 = Release|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {A6C5BA7A-DF6F-476F-9106-95905932B810}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Debug|x64.ActiveCfg = Debug|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Debug|x64.Build.0 = Debug|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Release|Any CPU.Build.0 = Release|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Release|x64.ActiveCfg = Release|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.Release|x64.Build.0 = Release|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Debug|x64.ActiveCfg = Debug|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Debug|x64.Build.0 = Debug|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Release|Any CPU.Build.0 = Release|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Release|x64.ActiveCfg = Release|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.Release|x64.Build.0 = Release|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.Debug|Any CPU.Build.0 = Debug|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.Debug|x64.ActiveCfg = Debug|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.Debug|x64.Build.0 = Debug|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.Release|Any CPU.ActiveCfg = Release|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.Release|Any CPU.Build.0 = Release|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.Release|x64.ActiveCfg = Release|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.Release|x64.Build.0 = Release|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {618FBF9D-4EF3-435D-9728-81C726236668}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Debug|x64.ActiveCfg = Debug|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Debug|x64.Build.0 = Debug|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Release|Any CPU.Build.0 = Release|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Release|x64.ActiveCfg = Release|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.Release|x64.Build.0 = Release|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {48206BD6-48DD-4442-A395-3A6594E4C9C6}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Debug|x64.ActiveCfg = Debug|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Debug|x64.Build.0 = Debug|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Release|Any CPU.Build.0 = Release|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Release|x64.ActiveCfg = Release|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.Release|x64.Build.0 = Release|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Debug|x64.ActiveCfg = Debug|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Debug|x64.Build.0 = Debug|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Release|Any CPU.Build.0 = Release|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Release|x64.ActiveCfg = Release|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.Release|x64.Build.0 = Release|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.Debug|Any CPU.Build.0 = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.Debug|x64.ActiveCfg = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.Debug|x64.Build.0 = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.Release|Any CPU.ActiveCfg = Release|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.Release|Any CPU.Build.0 = Release|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.Release|x64.ActiveCfg = Release|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.Release|x64.Build.0 = Release|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {944FE7EF-9220-4CC6-BB20-CE517195B922}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Debug|x64.ActiveCfg = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Debug|x64.Build.0 = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Release|Any CPU.Build.0 = Release|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Release|x64.ActiveCfg = Release|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.Release|x64.Build.0 = Release|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {E2F30496-19D8-46A8-9BC0-26936FFE70D2}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.Debug|x64.ActiveCfg = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.Debug|x64.Build.0 = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.Release|Any CPU.Build.0 = Release|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.Release|x64.ActiveCfg = Release|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.Release|x64.Build.0 = Release|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {7256B986-6705-42FC-9F57-485D72D9DE51}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Debug|x64.ActiveCfg = Debug|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Debug|x64.Build.0 = Debug|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Release|Any CPU.Build.0 = Release|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Release|x64.ActiveCfg = Release|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.Release|x64.Build.0 = Release|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.Debug|x64.ActiveCfg = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.Debug|x64.Build.0 = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.Release|Any CPU.Build.0 = Release|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.Release|x64.ActiveCfg = Release|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.Release|x64.Build.0 = Release|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {418E79F7-9FCF-4128-AA35-1334A685377D}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.Debug|x64.ActiveCfg = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.Debug|x64.Build.0 = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.Release|Any CPU.Build.0 = Release|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.Release|x64.ActiveCfg = Release|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.Release|x64.Build.0 = Release|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {46278108-D247-4EFC-AC34-23D4A676F62F}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|x64.ActiveCfg = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Debug|x64.Build.0 = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|Any CPU.Build.0 = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|x64.ActiveCfg = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.Release|x64.Build.0 = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {7F05FD87-A2FB-4915-A988-4EF92AB82179}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|x64.ActiveCfg = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Debug|x64.Build.0 = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|Any CPU.Build.0 = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|x64.ActiveCfg = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.Release|x64.Build.0 = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {4858E5E3-23FA-4928-B99A-54065875A2B9}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.Debug|x64.ActiveCfg = Debug|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.Debug|x64.Build.0 = Debug|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.Release|Any CPU.Build.0 = Release|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.Release|x64.ActiveCfg = Release|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.Release|x64.Build.0 = Release|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {1448512E-132F-4DA8-BCBA-D98F16B31600}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.Debug|x64.ActiveCfg = Debug|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.Debug|x64.Build.0 = Debug|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.Release|Any CPU.Build.0 = Release|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.Release|x64.ActiveCfg = Release|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.Release|x64.Build.0 = Release|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {55833C6C-6E91-4413-9F77-96B3A09666B8}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Debug|x64.ActiveCfg = Debug|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Debug|x64.Build.0 = Debug|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Release|Any CPU.Build.0 = Release|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Release|x64.ActiveCfg = Release|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.Release|x64.Build.0 = Release|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {C015FF41-9A51-4AF0-AEFC-2547D596B10A}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.Debug|x64.ActiveCfg = Debug|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.Debug|x64.Build.0 = Debug|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.Release|Any CPU.Build.0 = Release|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.Release|x64.ActiveCfg = Release|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.Release|x64.Build.0 = Release|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.RelWithDebInfo|Any CPU.ActiveCfg = Release|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.RelWithDebInfo|Any CPU.Build.0 = Release|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.RelWithDebInfo|x64.ActiveCfg = Release|Any CPU + {D292BF18-3956-4827-820E-254C3F81EF09}.RelWithDebInfo|x64.Build.0 = Release|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Debug|x64.ActiveCfg = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Debug|x64.Build.0 = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Release|Any CPU.Build.0 = Release|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Release|x64.ActiveCfg = Release|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.Release|x64.Build.0 = Release|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {DB45AD73-4D91-43F3-85CC-C63614A96FB0}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Debug|x64.ActiveCfg = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Debug|x64.Build.0 = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Release|Any CPU.Build.0 = Release|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Release|x64.ActiveCfg = Release|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.Release|x64.Build.0 = Release|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {AF6CD304-8E03-433D-AAA2-6E0094B53071}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Debug|x64.ActiveCfg = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Debug|x64.Build.0 = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Release|Any CPU.Build.0 = Release|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Release|x64.ActiveCfg = Release|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.Release|x64.Build.0 = Release|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {ED3D7040-4B3F-4217-A75E-9DF63DD84707}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Debug|x64.ActiveCfg = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Debug|x64.Build.0 = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Release|Any CPU.Build.0 = Release|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Release|x64.ActiveCfg = Release|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.Release|x64.Build.0 = Release|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Debug|x64.ActiveCfg = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Debug|x64.Build.0 = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Release|Any CPU.Build.0 = Release|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Release|x64.ActiveCfg = Release|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.Release|x64.Build.0 = Release|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {EB6E3DBD-C884-4241-9BC4-8281191D1F53}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Debug|x64.ActiveCfg = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Debug|x64.Build.0 = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Release|Any CPU.Build.0 = Release|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Release|x64.ActiveCfg = Release|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.Release|x64.Build.0 = Release|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {E1A463D7-2E23-4134-BE04-1EFF7A546813}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.Debug|Any CPU.Build.0 = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.Debug|x64.ActiveCfg = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.Debug|x64.Build.0 = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.Release|Any CPU.ActiveCfg = Release|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.Release|Any CPU.Build.0 = Release|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.Release|x64.ActiveCfg = Release|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.Release|x64.Build.0 = Release|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {789C86D9-CE77-40DA-BDDD-979436952512}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.Debug|x64.ActiveCfg = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.Debug|x64.Build.0 = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.Release|Any CPU.Build.0 = Release|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.Release|x64.ActiveCfg = Release|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.Release|x64.Build.0 = Release|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {7E24885B-D86D-477E-A840-06FA53C33FE1}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Debug|x64.ActiveCfg = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Debug|x64.Build.0 = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.MinSizeRel|Any CPU.ActiveCfg = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.MinSizeRel|Any CPU.Build.0 = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.MinSizeRel|x64.ActiveCfg = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.MinSizeRel|x64.Build.0 = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Release|Any CPU.Build.0 = Release|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Release|x64.ActiveCfg = Release|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.Release|x64.Build.0 = Release|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.RelWithDebInfo|Any CPU.ActiveCfg = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.RelWithDebInfo|Any CPU.Build.0 = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.RelWithDebInfo|x64.ActiveCfg = Debug|Any CPU + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1}.RelWithDebInfo|x64.Build.0 = Debug|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {E9123D45-C1B0-4462-8810-D26ED6D31944} = {03736C2E-DB2A-46A9-B7B2-C1216BDECB4F} + {058CB08D-BFA7-41E2-BE6B-0A0A72054F91} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {8EC46ADB-7FAA-49EA-BA63-E7B32C4F4445} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {72B7E75C-D305-45BD-929E-C86298AAA8DE} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {DD50D2D9-2765-449B-8C4B-835A428E160D} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {23461B29-F9DE-4F5B-BC30-50BBE1A10B48} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {A6C5BA7A-DF6F-476F-9106-95905932B810} = {03736C2E-DB2A-46A9-B7B2-C1216BDECB4F} + {ECFE1CE8-46A1-4D14-99D6-AAF76B704638} = {34117E2A-DEDC-4274-AAA4-3C61ACF86284} + {10D7C395-4F79-4DAF-9289-A4B8FAF6183A} = {A567C185-A429-418B-AFDE-6F1785BA4A77} + {618FBF9D-4EF3-435D-9728-81C726236668} = {A567C185-A429-418B-AFDE-6F1785BA4A77} + {48206BD6-48DD-4442-A395-3A6594E4C9C6} = {A567C185-A429-418B-AFDE-6F1785BA4A77} + {B96E97F4-2DC8-45AC-ADF5-861D0D3073FC} = {A567C185-A429-418B-AFDE-6F1785BA4A77} + {09C842CB-930C-4C7D-AD5F-E30DE4A55820} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {2F5796A7-4AF8-4B78-928A-0A3A80752F9D} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {944FE7EF-9220-4CC6-BB20-CE517195B922} = {A567C185-A429-418B-AFDE-6F1785BA4A77} + {E2F30496-19D8-46A8-9BC0-26936FFE70D2} = {A567C185-A429-418B-AFDE-6F1785BA4A77} + {7256B986-6705-42FC-9F57-485D72D9DE51} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {A85277B3-4E07-4E15-8F0C-07CC855A3BCB} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {418E79F7-9FCF-4128-AA35-1334A685377D} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {46278108-D247-4EFC-AC34-23D4A676F62F} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {7F05FD87-A2FB-4915-A988-4EF92AB82179} = {37CDC768-16D4-4574-8553-07D99D0A72F7} + {4858E5E3-23FA-4928-B99A-54065875A2B9} = {37CDC768-16D4-4574-8553-07D99D0A72F7} + {1448512E-132F-4DA8-BCBA-D98F16B31600} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {55833C6C-6E91-4413-9F77-96B3A09666B8} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {C015FF41-9A51-4AF0-AEFC-2547D596B10A} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {D292BF18-3956-4827-820E-254C3F81EF09} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {DB45AD73-4D91-43F3-85CC-C63614A96FB0} = {03736C2E-DB2A-46A9-B7B2-C1216BDECB4F} + {AF6CD304-8E03-433D-AAA2-6E0094B53071} = {93409CC3-8DF9-45FA-AE21-16A19FDEF650} + {ED3D7040-4B3F-4217-A75E-9DF63DD84707} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {4EF958CA-B4A6-4E5F-924A-100B5615BEC3} = {09C842CB-930C-4C7D-AD5F-E30DE4A55820} + {EB6E3DBD-C884-4241-9BC4-8281191D1F53} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {E1A463D7-2E23-4134-BE04-1EFF7A546813} = {93409CC3-8DF9-45FA-AE21-16A19FDEF650} + {789C86D9-CE77-40DA-BDDD-979436952512} = {93409CC3-8DF9-45FA-AE21-16A19FDEF650} + {7E24885B-D86D-477E-A840-06FA53C33FE1} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + {7F80466B-A6B5-4EF1-A9E9-22ABAE3C20C1} = {34D419E9-CCF1-4E48-9FA4-3AD4B86BEEB4} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {929C0464-86D8-4F70-8835-0A5EAF930821} + EndGlobalSection +EndGlobal From 0405951b1066a819fb7a21c8ba5dbc285b8939e2 Mon Sep 17 00:00:00 2001 From: Scott Carda Date: Sun, 28 Feb 2021 19:52:25 -0800 Subject: [PATCH 29/59] Moved the simulator and execution target options to the driver settings, off of IEntryPoint. --- src/Simulation/CSharpGeneration/EntryPoint.fs | 138 +++++++++--------- .../CSharpGeneration/RewriteStep.fs | 11 +- src/Simulation/EntryPointDriver/Driver.cs | 69 +++++---- .../EntryPointDriver/DriverSettings.cs | 36 ++++- .../EntryPointDriver/IEntryPoint.cs | 21 --- src/Simulation/EntryPointDriver/Simulation.cs | 4 +- 6 files changed, 139 insertions(+), 140 deletions(-) diff --git a/src/Simulation/CSharpGeneration/EntryPoint.fs b/src/Simulation/CSharpGeneration/EntryPoint.fs index cc0a5f7e4ec..f8546df05de 100644 --- a/src/Simulation/CSharpGeneration/EntryPoint.fs +++ b/src/Simulation/CSharpGeneration/EntryPoint.fs @@ -26,24 +26,6 @@ let entryPointClassName = "__QsEntryPoint__" /// The namespace containing the non-generated parts of the entry point driver. let private driverNamespace = "Microsoft.Quantum.EntryPointDriver" -/// The driver settings object. -let private driverSettings = - let newDriverSettings = driverNamespace + ".DriverSettings" |> ``type`` |> SyntaxFactory.ObjectCreationExpression - let namedArg (name : string) expr = SyntaxFactory.NameColon name |> (SyntaxFactory.Argument expr).WithNameColon - let immutableList elements = invoke (ident "System.Collections.Immutable.ImmutableList.Create") ``(`` elements ``)`` - let simulatorOptionAliases = - [ literal <| "--" + fst CommandLineArguments.SimulatorOption - literal <| "-" + snd CommandLineArguments.SimulatorOption ] - |> immutableList - [ namedArg "simulatorOptionAliases" simulatorOptionAliases - namedArg "quantumSimulatorName" <| literal AssemblyConstants.QuantumSimulator - namedArg "toffoliSimulatorName" <| literal AssemblyConstants.ToffoliSimulator - namedArg "resourcesEstimatorName" <| literal AssemblyConstants.ResourcesEstimator ] - |> SyntaxFactory.SeparatedList - |> SyntaxFactory.ArgumentList - |> newDriverSettings.WithArgumentList - :> ExpressionSyntax - /// A sequence of all of the named parameters in the argument tuple and their respective C# and Q# types. let rec private parameters context doc = function | QsTupleItem variable -> @@ -87,11 +69,7 @@ let private customSimulatorFactory name = if isCustomSimulator then ``new`` (``type`` name) ``(`` [] ``)`` else upcast SyntaxFactory.ThrowExpression (``new`` (``type`` "InvalidOperationException") ``(`` [] ``)``) - - arrow_method "IOperationFactory" "CreateDefaultCustomSimulator" ``<<`` [] ``>>`` - ``(`` [] ``)`` - [``public``] - (Some (``=>`` factory)) + ``() =>`` [] factory :> ExpressionSyntax /// A method that creates the argument tuple for the entry point, given the command-line parsing result. let private createArgument context entryPoint = @@ -170,42 +148,6 @@ let private simulateMethod context entryPoint = [``public``] (Some (``=>`` (simulationType <.> (ident "Simulate", args)))) -/// The main method for the standalone executable. -let private mainMethod (entryPoints : seq) = - - let entryPointArrayMembers = - [ - for ep in entryPoints do - let name = generateEntryPointClassName ep - ``new`` (``type`` (name.ToString())) ``(`` [] ``)`` - ] - - let entryPointArray = - ``new array`` (Some (driverNamespace + ".IEntryPoint")) entryPointArrayMembers - - let driver = ``new`` (``type`` (driverNamespace + ".Driver")) ``(`` [driverSettings; entryPointArray] ``)`` - let commandLineArgsName = "args" - arrow_method "System.Threading.Tasks.Task" "Main" ``<<`` [] ``>>`` - ``(`` [param commandLineArgsName ``of`` (``type`` "string[]")] ``)`` - [``private``; ``static``; async] - (Some (``=>`` (await (driver <.> (ident "Run", [ident commandLineArgsName]))))) - -/// Generates a namespace for the main function -let mainNamespace (entryPoints : seq) = - let mainClass = - ``class`` entryPointClassName ``<<`` [] ``>>`` - ``:`` None ``,`` [] - [``internal``] - ``{`` - [mainMethod entryPoints] - ``}`` - - ``namespace`` entryPointClassName - ``{`` - [] - [mainClass] - ``}`` - /// The class that adapts the entry point for use with the command-line parsing library and the driver. let private entryPointClass context (entryPoint : QsCallable) = let property name typeName value = ``property-arrow_get`` typeName name [``public``] get (``=>`` value) @@ -218,22 +160,10 @@ let private entryPointClass context (entryPoint : QsCallable) = |> literal |> property "Summary" "string" let parameters = parameters context entryPoint.Documentation entryPoint.ArgumentTuple - let defaultSimulator = - context.assemblyConstants.TryGetValue AssemblyConstants.DefaultSimulator - |> fun (_, value) -> if String.IsNullOrWhiteSpace value then AssemblyConstants.QuantumSimulator else value - let defaultSimulatorNameProperty = literal defaultSimulator |> property "DefaultSimulatorName" "string" - let defaultExecutionTargetProperty = - context.assemblyConstants.TryGetValue AssemblyConstants.ExecutionTarget - |> (fun (_, value) -> if value = null then "" else value) - |> literal - |> property "DefaultExecutionTarget" "string" let members : MemberDeclarationSyntax list = [ nameProperty summaryProperty parameterOptionsProperty parameters - defaultSimulatorNameProperty - defaultExecutionTargetProperty - customSimulatorFactory defaultSimulator createArgument context entryPoint submitMethod context entryPoint simulateMethod context entryPoint @@ -255,6 +185,72 @@ let private entryPointNamespace context name (entryPoints : seq) = ``}`` :> MemberDeclarationSyntax +/// Returns the driver settings object. +let private driverSettings context = + let newDriverSettings = driverNamespace + ".DriverSettings" |> ``type`` |> SyntaxFactory.ObjectCreationExpression + let namedArg (name : string) expr = SyntaxFactory.NameColon name |> (SyntaxFactory.Argument expr).WithNameColon + let immutableList elements = invoke (ident "System.Collections.Immutable.ImmutableList.Create") ``(`` elements ``)`` + let simulatorOptionAliases = + [ literal <| "--" + fst CommandLineArguments.SimulatorOption + literal <| "-" + snd CommandLineArguments.SimulatorOption ] + |> immutableList + let defaultSimulator = + context.assemblyConstants.TryGetValue AssemblyConstants.DefaultSimulator + |> fun (_, value) -> if String.IsNullOrWhiteSpace value then AssemblyConstants.QuantumSimulator else value + let defaultExecutionTarget = + context.assemblyConstants.TryGetValue AssemblyConstants.ExecutionTarget + |> (fun (_, value) -> if value = null then "" else value) + |> literal + [ + namedArg "simulatorOptionAliases" simulatorOptionAliases + namedArg "quantumSimulatorName" <| literal AssemblyConstants.QuantumSimulator + namedArg "toffoliSimulatorName" <| literal AssemblyConstants.ToffoliSimulator + namedArg "resourcesEstimatorName" <| literal AssemblyConstants.ResourcesEstimator + namedArg "defaultSimulatorName" <| literal defaultSimulator + namedArg "defaultExecutionTarget" <| defaultExecutionTarget + namedArg "createDefaultCustomSimulator" <| customSimulatorFactory defaultSimulator + ] + |> SyntaxFactory.SeparatedList + |> SyntaxFactory.ArgumentList + |> newDriverSettings.WithArgumentList + :> ExpressionSyntax + +/// The main method for the standalone executable. +let private mainMethod context (entryPoints : seq) = + + let entryPointArrayMembers = + [ + for ep in entryPoints do + let name = generateEntryPointClassName ep + ``new`` (``type`` (name.ToString())) ``(`` [] ``)`` + ] + + let entryPointArray = + ``new array`` (Some (driverNamespace + ".IEntryPoint")) entryPointArrayMembers + + let driver = ``new`` (``type`` (driverNamespace + ".Driver")) ``(`` [driverSettings context; entryPointArray] ``)`` + let commandLineArgsName = "args" + arrow_method "System.Threading.Tasks.Task" "Main" ``<<`` [] ``>>`` + ``(`` [param commandLineArgsName ``of`` (``type`` "string[]")] ``)`` + [``private``; ``static``; async] + (Some (``=>`` (await (driver <.> (ident "Run", [ident commandLineArgsName]))))) + +/// Generates a namespace for the main function +let mainNamespace context (entryPoints : seq) = + let mainClass = + ``class`` entryPointClassName ``<<`` [] ``>>`` + ``:`` None ``,`` [] + [``internal``] + ``{`` + [mainMethod context entryPoints] + ``}`` + + ``namespace`` entryPointClassName + ``{`` + [] + [mainClass] + ``}`` + /// Generates C# source code for a standalone executable that runs the Q# entry point. let generateSource context (entryPoints : seq) (mainNamespace : NamespaceDeclarationSyntax option) = let entryPointNamespaces = entryPoints |> Seq.groupBy (fun ep -> ep.FullName.Namespace) diff --git a/src/Simulation/CSharpGeneration/RewriteStep.fs b/src/Simulation/CSharpGeneration/RewriteStep.fs index f35b879b443..3c7095764ab 100644 --- a/src/Simulation/CSharpGeneration/RewriteStep.fs +++ b/src/Simulation/CSharpGeneration/RewriteStep.fs @@ -6,11 +6,8 @@ namespace Microsoft.Quantum.QsCompiler.CsharpGeneration open System open System.Collections.Generic open System.IO -open Microsoft.CodeAnalysis open Microsoft.Quantum.QsCompiler open Microsoft.Quantum.QsCompiler.CsharpGeneration -open Microsoft.Quantum.QsCompiler.DataTypes -open Microsoft.Quantum.QsCompiler.Diagnostics open Microsoft.Quantum.QsCompiler.ReservedKeywords open Microsoft.Quantum.QsCompiler.SyntaxTree open Microsoft.Quantum.QsCompiler.Transformations.BasicTransformations @@ -27,15 +24,15 @@ type Emitter() = member this.Priority = -1 // doesn't matter because this rewrite step is the only one in the dll member this.AssemblyConstants = upcast _AssemblyConstants member this.GeneratedDiagnostics = upcast _Diagnostics - + member this.ImplementsPreconditionVerification = false member this.ImplementsPostconditionVerification = false member this.ImplementsTransformation = true member this.PreconditionVerification _ = NotImplementedException() |> raise member this.PostconditionVerification _ = NotImplementedException() |> raise - - member this.Transformation (compilation, transformed) = + + member this.Transformation (compilation, transformed) = let step = this :> IRewriteStep let dir = step.AssemblyConstants.TryGetValue AssemblyConstants.OutputPath |> function | true, outputFolder when outputFolder <> null -> Path.Combine(outputFolder, "src") @@ -57,7 +54,7 @@ type Emitter() = compilation.EntryPoints |> Seq.map (fun ep -> context.allCallables.[ep]) - let main = EntryPoint.mainNamespace entryPointCallables + let main = EntryPoint.mainNamespace context entryPointCallables let entryPointSources = entryPointCallables diff --git a/src/Simulation/EntryPointDriver/Driver.cs b/src/Simulation/EntryPointDriver/Driver.cs index a0b628d25de..e5d025d1253 100644 --- a/src/Simulation/EntryPointDriver/Driver.cs +++ b/src/Simulation/EntryPointDriver/Driver.cs @@ -118,6 +118,16 @@ public sealed class Driver private static readonly OptionInfo VerboseOption = new OptionInfo( ImmutableList.Create("--verbose"), false, "Show additional information about the submission."); + /// + /// The target option. + /// + private readonly OptionInfo TargetOption; + + /// + /// The simulator option. + /// + private readonly OptionInfo SimulatorOption; + /// /// The driver settings. /// @@ -136,6 +146,25 @@ public sealed class Driver public Driver(DriverSettings settings, IEnumerable entryPoints) { this.settings = settings; + + this.SimulatorOption = new OptionInfo( + this.settings.SimulatorOptionAliases, + this.settings.DefaultSimulatorName, + "The name of the simulator to use.", + suggestions: new[] + { + this.settings.QuantumSimulatorName, + this.settings.ToffoliSimulatorName, + this.settings.ResourcesEstimatorName, + this.settings.DefaultSimulatorName + }); + + var targetAliases = ImmutableList.Create("--target"); + const string targetDescription = "The target device ID."; + this.TargetOption = string.IsNullOrWhiteSpace(settings.DefaultExecutionTarget) + ? new OptionInfo(targetAliases, targetDescription) + : new OptionInfo(targetAliases, this.settings.DefaultExecutionTarget, targetDescription); + this.entryPoints = entryPoints.ToList().AsReadOnly(); } @@ -367,7 +396,7 @@ private CommandWithValidators CreateSimulateEntryPointCommand(IEntryPoint entryP command.AddOption(option); } - validators = validators.Concat(AddOptionIfAvailable(command, this.CreateSimulatorOption(entryPoint))); + validators = validators.Concat(AddOptionIfAvailable(command, this.SimulatorOption)); return (command, validators); } @@ -394,7 +423,7 @@ private CommandWithValidators CreateSubmitEntryPointCommand(IEntryPoint entryPoi .Concat(AddOptionIfAvailable(command, SubscriptionOption)) .Concat(AddOptionIfAvailable(command, ResourceGroupOption)) .Concat(AddOptionIfAvailable(command, WorkspaceOption)) - .Concat(AddOptionIfAvailable(command, this.CreateTargetOption(entryPoint))) + .Concat(AddOptionIfAvailable(command, this.TargetOption)) .Concat(AddOptionIfAvailable(command, StorageOption)) .Concat(AddOptionIfAvailable(command, AadTokenOption)) .Concat(AddOptionIfAvailable(command, BaseUriOption)) @@ -411,38 +440,6 @@ private CommandWithValidators CreateSubmitEntryPointCommand(IEntryPoint entryPoi return (command, validators); } - /// - /// Creates the simulation option for the simulate command with the given entry point. - /// - /// The entry point. - /// The OptionInfor for the simulator option. - private OptionInfo CreateSimulatorOption(IEntryPoint entryPoint) => - new OptionInfo( - this.settings.SimulatorOptionAliases, - entryPoint.DefaultSimulatorName, - "The name of the simulator to use.", - suggestions: new[] - { - this.settings.QuantumSimulatorName, - this.settings.ToffoliSimulatorName, - this.settings.ResourcesEstimatorName, - entryPoint.DefaultSimulatorName - }); - - /// - /// Creates the target option for the Azure submit command with the given entry point. - /// - /// The entry point. - /// The OptionInfo for the --target option. - private OptionInfo CreateTargetOption(IEntryPoint entryPoint) - { - var targetAliases = ImmutableList.Create("--target"); - const string targetDescription = "The target device ID."; - return string.IsNullOrWhiteSpace(entryPoint.DefaultExecutionTarget) - ? new OptionInfo(targetAliases, targetDescription) - : new OptionInfo(targetAliases, entryPoint.DefaultExecutionTarget, targetDescription); - } - /// /// Simulates the entry point. /// @@ -451,7 +448,7 @@ private OptionInfo CreateSimulatorOption(IEntryPoint entryPoint) => /// The entry point to simulate. /// The exit code. private Task Simulate(ParseResult parseResult, string simulator, IEntryPoint entryPoint) => - entryPoint.Simulate(parseResult, settings, DefaultIfShadowed(entryPoint, this.CreateSimulatorOption(entryPoint), simulator)); + entryPoint.Simulate(parseResult, settings, DefaultIfShadowed(entryPoint, this.SimulatorOption, simulator)); /// /// Submits the entry point to Azure Quantum. @@ -466,7 +463,7 @@ private Task Submit(ParseResult parseResult, AzureSettings azureSettings, I Subscription = azureSettings.Subscription, ResourceGroup = azureSettings.ResourceGroup, Workspace = azureSettings.Workspace, - Target = DefaultIfShadowed(entryPoint, this.CreateTargetOption(entryPoint), azureSettings.Target), + Target = DefaultIfShadowed(entryPoint, this.TargetOption, azureSettings.Target), Storage = DefaultIfShadowed(entryPoint, StorageOption, azureSettings.Storage), AadToken = DefaultIfShadowed(entryPoint, AadTokenOption, azureSettings.AadToken), BaseUri = DefaultIfShadowed(entryPoint, BaseUriOption, azureSettings.BaseUri), diff --git a/src/Simulation/EntryPointDriver/DriverSettings.cs b/src/Simulation/EntryPointDriver/DriverSettings.cs index 17ec8e551a3..91ccf79aa6f 100644 --- a/src/Simulation/EntryPointDriver/DriverSettings.cs +++ b/src/Simulation/EntryPointDriver/DriverSettings.cs @@ -1,4 +1,6 @@ -using System.Collections.Immutable; +using Microsoft.Quantum.Simulation.Core; +using System; +using System.Collections.Immutable; namespace Microsoft.Quantum.EntryPointDriver { @@ -27,23 +29,51 @@ public sealed class DriverSettings /// internal string ResourcesEstimatorName { get; } + /// + /// The name of the default simulator to use when simulating the entry point. + /// + internal string DefaultSimulatorName { get; } + + /// + /// The default execution target when to use when submitting the entry point to Azure Quantum. + /// + internal string DefaultExecutionTarget { get; } + + /// + /// Creates an instance of the default simulator if it is a custom simulator. + /// + /// An instance of the default custom simulator. + /// + /// Thrown if the default simulator is not a custom simulator. + /// + internal Func CreateDefaultCustomSimulator; + /// /// Creates a new driver settings instance. /// /// The aliases for the simulator command-line option. /// The name of the quantum simulator. /// The name of the Toffoli simulator. - /// The name of the resources estimator. + /// The name of the resources estimator. + /// The name of the default simulator to use. + /// The name of the default execution target to use. + /// The function for crating a new instance of the default simulator if it is a custom simulator. public DriverSettings( IImmutableList simulatorOptionAliases, string quantumSimulatorName, string toffoliSimulatorName, - string resourcesEstimatorName) + string resourcesEstimatorName, + string defaultSimulatorName, + string defaultExecutionTarget, + Func createDefaultCustomSimulator) { SimulatorOptionAliases = simulatorOptionAliases; QuantumSimulatorName = quantumSimulatorName; ToffoliSimulatorName = toffoliSimulatorName; ResourcesEstimatorName = resourcesEstimatorName; + DefaultSimulatorName = defaultSimulatorName; + DefaultExecutionTarget = defaultExecutionTarget; + CreateDefaultCustomSimulator = createDefaultCustomSimulator; } } } diff --git a/src/Simulation/EntryPointDriver/IEntryPoint.cs b/src/Simulation/EntryPointDriver/IEntryPoint.cs index d5ee15f64fb..67964abb05d 100644 --- a/src/Simulation/EntryPointDriver/IEntryPoint.cs +++ b/src/Simulation/EntryPointDriver/IEntryPoint.cs @@ -1,12 +1,10 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -using System; using System.Collections.Generic; using System.CommandLine; using System.CommandLine.Parsing; using System.Threading.Tasks; -using Microsoft.Quantum.Simulation.Core; namespace Microsoft.Quantum.EntryPointDriver { @@ -34,16 +32,6 @@ public interface IEntryPoint /// IEnumerable