From 35ce60b5967776153195af4dfa989e20ac1bdab1 Mon Sep 17 00:00:00 2001 From: Ignacio Calvo Date: Thu, 25 May 2023 12:31:01 +0200 Subject: [PATCH] Implemented `AddAsyncDelegate` (#766) --- examples/Cli/Delegates/BarSettings.cs | 2 +- examples/Cli/Delegates/Program.cs | 25 +- examples/Console/Json/Json.csproj | 2 +- examples/Examples.sln | 1127 +++++++++-------- .../ConfiguratorExtensions.cs | 42 + src/Spectre.Console.Cli/IConfigurator.cs | 10 + src/Spectre.Console.Cli/IConfiguratorOfT.cs | 10 + .../Internal/Configuration/Configurator.cs | 10 +- .../Internal/Configuration/ConfiguratorOfT.cs | 209 +-- .../Configuration/ConfiguredCommand.cs | 14 +- .../Internal/DelegateCommand.cs | 6 +- .../Internal/Modelling/CommandInfo.cs | 12 +- .../Unit/CommandAppTests.cs | 65 + 13 files changed, 859 insertions(+), 675 deletions(-) diff --git a/examples/Cli/Delegates/BarSettings.cs b/examples/Cli/Delegates/BarSettings.cs index acff2a1cf..3c8948439 100644 --- a/examples/Cli/Delegates/BarSettings.cs +++ b/examples/Cli/Delegates/BarSettings.cs @@ -9,7 +9,7 @@ public sealed class BarSettings : CommandSettings { [CommandOption("--count")] [Description("The number of bars to print")] - [DefaultValue(1)] + [DefaultValue(3)] public int Count { get; set; } } } diff --git a/examples/Cli/Delegates/Program.cs b/examples/Cli/Delegates/Program.cs index c3c82becc..a91df345b 100644 --- a/examples/Cli/Delegates/Program.cs +++ b/examples/Cli/Delegates/Program.cs @@ -1,3 +1,4 @@ +using System.Threading.Tasks; using Spectre.Console; using Spectre.Console.Cli; @@ -14,7 +15,13 @@ public static int Main(string[] args) .WithDescription("Foos the bars"); config.AddDelegate("bar", Bar) - .WithDescription("Bars the foos"); ; + .WithDescription("Bars the foos"); + + config.AddAsyncDelegate("fooAsync", FooAsync) + .WithDescription("Foos the bars asynchronously"); + + config.AddAsyncDelegate("barAsync", BarAsync) + .WithDescription("Bars the foos asynchronously"); }); return app.Run(args); @@ -35,4 +42,20 @@ private static int Bar(CommandContext context, BarSettings settings) return 0; } + + private static Task FooAsync(CommandContext context) + { + AnsiConsole.WriteLine("Foo"); + return Task.FromResult(0); + } + + private static Task BarAsync(CommandContext context, BarSettings settings) + { + for (var index = 0; index < settings.Count; index++) + { + AnsiConsole.WriteLine("Bar"); + } + + return Task.FromResult(0); + } } diff --git a/examples/Console/Json/Json.csproj b/examples/Console/Json/Json.csproj index 709a57b99..b60095d3b 100644 --- a/examples/Console/Json/Json.csproj +++ b/examples/Console/Json/Json.csproj @@ -9,8 +9,8 @@ - + diff --git a/examples/Examples.sln b/examples/Examples.sln index c0f1b689d..9654ee80f 100644 --- a/examples/Examples.sln +++ b/examples/Examples.sln @@ -1,556 +1,571 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{2571F1BD-6556-4F96-B27B-B6190E1BF13A}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Cli", "Cli", "{4682E9B7-B54C-419D-B92F-470DA4E5674C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Delegates", "Cli\Delegates\Delegates.csproj", "{E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Demo", "Cli\Demo\Demo.csproj", "{7FC2594D-55D6-4688-AB7D-C9C903414448}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dynamic", "Cli\Dynamic\Dynamic.csproj", "{6EA8F935-A230-4171-8618-FDFABA553292}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Injection", "Cli\Injection\Injection.csproj", "{DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Logging", "Cli\Logging\Logging.csproj", "{37024E79-A857-4EB2-9B50-F724ED34E5EB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Shared", "Shared\Shared.csproj", "{DD8EC1B0-F50C-44E4-8399-2D560F95E572}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Borders", "Console\Borders\Borders.csproj", "{036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Calendars", "Console\Calendars\Calendars.csproj", "{C64ADBA3-AED2-4938-8E26-8D6679C395CB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Canvas", "Console\Canvas\Canvas.csproj", "{B3393919-26F1-4200-88CD-B71EEAF0EA51}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Charts", "Console\Charts\Charts.csproj", "{0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Colors", "Console\Colors\Colors.csproj", "{18562660-BF70-4EF3-A765-22713BDE2EB1}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Columns", "Console\Columns\Columns.csproj", "{264EBC5A-B897-4DA8-9C9E-9A445B1E368C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cursor", "Console\Cursor\Cursor.csproj", "{95BE948B-6102-4453-982D-C7B21E51B582}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Emojis", "Console\Emojis\Emojis.csproj", "{6272C7ED-432E-4286-914C-898304A1880E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Exceptions", "Console\Exceptions\Exceptions.csproj", "{20766F18-AEC7-4382-BDE2-0C846F2857AA}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Figlet", "Console\Figlet\Figlet.csproj", "{1C374C51-6C82-4E71-9701-5F378BC0356C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Grids", "Console\Grids\Grids.csproj", "{6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Info", "Console\Info\Info.csproj", "{FBCCBA12-9DBF-403C-9FA4-222CBB080955}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Links", "Console\Links\Links.csproj", "{B9414195-69A2-40E6-B071-751DCCE95AF0}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Live", "Console\Live\Live.csproj", "{4AE3AC67-A927-42CC-B286-E0A0735DC7A2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Panels", "Console\Panels\Panels.csproj", "{12E7F2CE-E91B-446F-A269-F88FB546B6A8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Progress", "Console\Progress\Progress.csproj", "{4554BDF3-0723-4076-B054-616D830942D4}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prompt", "Console\Prompt\Prompt.csproj", "{85A37D38-54D9-4FA2-B311-CA48BD7AF916}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Rules", "Console\Rules\Rules.csproj", "{305E2CE7-9D64-43D7-A26C-11036ACE2A89}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Showcase", "Console\Showcase\Showcase.csproj", "{5BEE8076-59A0-47BB-9CC6-222EC978AE16}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Status", "Console\Status\Status.csproj", "{FCE2405B-A215-434B-A47C-32053E27A907}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tables", "Console\Tables\Tables.csproj", "{3D16490A-9EBA-488C-9B3E-6A11FC1E0300}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Trees", "Console\Trees\Trees.csproj", "{2BD88288-E05D-4978-B045-17937078E63C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LiveTable", "Console\LiveTable\LiveTable.csproj", "{E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Minimal", "Console\Minimal\Minimal.csproj", "{1780A30A-397A-4CC3-B2A0-A385D9081FA2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AlternateScreen", "Console\AlternateScreen\AlternateScreen.csproj", "{8A3B636E-5828-438B-A8F4-83811D2704CD}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console", "..\src\Spectre.Console\Spectre.Console.csproj", "{0C58FB17-F60A-47AB-84BF-961EC8C06AE6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.ImageSharp", "..\src\Spectre.Console.ImageSharp\Spectre.Console.ImageSharp.csproj", "{A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Paths", "Console\Paths\Paths.csproj", "{65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.Cli", "..\src\Spectre.Console.Cli\Spectre.Console.Cli.csproj", "{EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Layout", "Console\Layout\Layout.csproj", "{A9FDE73A-8452-4CA3-B366-3F900597E132}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Json", "Console\Json\Json.csproj", "{ABE3E734-0756-4D5A-B28A-E6E526D9927D}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|x64.ActiveCfg = Debug|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|x64.Build.0 = Debug|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|x86.ActiveCfg = Debug|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|x86.Build.0 = Debug|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|Any CPU.Build.0 = Release|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|x64.ActiveCfg = Release|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|x64.Build.0 = Release|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|x86.ActiveCfg = Release|Any CPU - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|x86.Build.0 = Release|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|x64.ActiveCfg = Debug|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|x64.Build.0 = Debug|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|x86.ActiveCfg = Debug|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|x86.Build.0 = Debug|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|Any CPU.Build.0 = Release|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|x64.ActiveCfg = Release|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|x64.Build.0 = Release|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|x86.ActiveCfg = Release|Any CPU - {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|x86.Build.0 = Release|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|x64.ActiveCfg = Debug|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|x64.Build.0 = Debug|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|x86.ActiveCfg = Debug|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|x86.Build.0 = Debug|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Release|Any CPU.Build.0 = Release|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Release|x64.ActiveCfg = Release|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Release|x64.Build.0 = Release|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Release|x86.ActiveCfg = Release|Any CPU - {6EA8F935-A230-4171-8618-FDFABA553292}.Release|x86.Build.0 = Release|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|x64.ActiveCfg = Debug|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|x64.Build.0 = Debug|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|x86.ActiveCfg = Debug|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|x86.Build.0 = Debug|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|Any CPU.Build.0 = Release|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|x64.ActiveCfg = Release|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|x64.Build.0 = Release|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|x86.ActiveCfg = Release|Any CPU - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|x86.Build.0 = Release|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|x64.ActiveCfg = Debug|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|x64.Build.0 = Debug|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|x86.ActiveCfg = Debug|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|x86.Build.0 = Debug|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|Any CPU.Build.0 = Release|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|x64.ActiveCfg = Release|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|x64.Build.0 = Release|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|x86.ActiveCfg = Release|Any CPU - {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|x86.Build.0 = Release|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|x64.ActiveCfg = Debug|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|x64.Build.0 = Debug|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|x86.ActiveCfg = Debug|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|x86.Build.0 = Debug|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|Any CPU.Build.0 = Release|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|x64.ActiveCfg = Release|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|x64.Build.0 = Release|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|x86.ActiveCfg = Release|Any CPU - {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|x86.Build.0 = Release|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|Any CPU.Build.0 = Debug|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|x64.ActiveCfg = Debug|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|x64.Build.0 = Debug|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|x86.ActiveCfg = Debug|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|x86.Build.0 = Debug|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|Any CPU.ActiveCfg = Release|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|Any CPU.Build.0 = Release|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|x64.ActiveCfg = Release|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|x64.Build.0 = Release|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|x86.ActiveCfg = Release|Any CPU - {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|x86.Build.0 = Release|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|x64.ActiveCfg = Debug|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|x64.Build.0 = Debug|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|x86.ActiveCfg = Debug|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|x86.Build.0 = Debug|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|Any CPU.Build.0 = Release|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|x64.ActiveCfg = Release|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|x64.Build.0 = Release|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|x86.ActiveCfg = Release|Any CPU - {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|x86.Build.0 = Release|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|x64.ActiveCfg = Debug|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|x64.Build.0 = Debug|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|x86.ActiveCfg = Debug|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|x86.Build.0 = Debug|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|Any CPU.Build.0 = Release|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|x64.ActiveCfg = Release|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|x64.Build.0 = Release|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|x86.ActiveCfg = Release|Any CPU - {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|x86.Build.0 = Release|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|x64.ActiveCfg = Debug|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|x64.Build.0 = Debug|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|x86.ActiveCfg = Debug|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|x86.Build.0 = Debug|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|Any CPU.Build.0 = Release|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|x64.ActiveCfg = Release|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|x64.Build.0 = Release|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|x86.ActiveCfg = Release|Any CPU - {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|x86.Build.0 = Release|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|x64.ActiveCfg = Debug|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|x64.Build.0 = Debug|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|x86.ActiveCfg = Debug|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|x86.Build.0 = Debug|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|Any CPU.Build.0 = Release|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|x64.ActiveCfg = Release|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|x64.Build.0 = Release|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|x86.ActiveCfg = Release|Any CPU - {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|x86.Build.0 = Release|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|x64.ActiveCfg = Debug|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|x64.Build.0 = Debug|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|x86.ActiveCfg = Debug|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|x86.Build.0 = Debug|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|Any CPU.Build.0 = Release|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|x64.ActiveCfg = Release|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|x64.Build.0 = Release|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|x86.ActiveCfg = Release|Any CPU - {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|x86.Build.0 = Release|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|Any CPU.Build.0 = Debug|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|x64.ActiveCfg = Debug|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|x64.Build.0 = Debug|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|x86.ActiveCfg = Debug|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|x86.Build.0 = Debug|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Release|Any CPU.ActiveCfg = Release|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Release|Any CPU.Build.0 = Release|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Release|x64.ActiveCfg = Release|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Release|x64.Build.0 = Release|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Release|x86.ActiveCfg = Release|Any CPU - {95BE948B-6102-4453-982D-C7B21E51B582}.Release|x86.Build.0 = Release|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Debug|x64.ActiveCfg = Debug|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Debug|x64.Build.0 = Debug|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Debug|x86.ActiveCfg = Debug|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Debug|x86.Build.0 = Debug|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Release|Any CPU.Build.0 = Release|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Release|x64.ActiveCfg = Release|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Release|x64.Build.0 = Release|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Release|x86.ActiveCfg = Release|Any CPU - {6272C7ED-432E-4286-914C-898304A1880E}.Release|x86.Build.0 = Release|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|x64.ActiveCfg = Debug|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|x64.Build.0 = Debug|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|x86.ActiveCfg = Debug|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|x86.Build.0 = Debug|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|Any CPU.Build.0 = Release|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|x64.ActiveCfg = Release|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|x64.Build.0 = Release|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|x86.ActiveCfg = Release|Any CPU - {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|x86.Build.0 = Release|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|x64.ActiveCfg = Debug|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|x64.Build.0 = Debug|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|x86.ActiveCfg = Debug|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|x86.Build.0 = Debug|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|Any CPU.Build.0 = Release|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|x64.ActiveCfg = Release|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|x64.Build.0 = Release|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|x86.ActiveCfg = Release|Any CPU - {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|x86.Build.0 = Release|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|x64.ActiveCfg = Debug|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|x64.Build.0 = Debug|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|x86.ActiveCfg = Debug|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|x86.Build.0 = Debug|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|Any CPU.Build.0 = Release|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|x64.ActiveCfg = Release|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|x64.Build.0 = Release|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|x86.ActiveCfg = Release|Any CPU - {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|x86.Build.0 = Release|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|x64.ActiveCfg = Debug|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|x64.Build.0 = Debug|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|x86.ActiveCfg = Debug|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|x86.Build.0 = Debug|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|Any CPU.Build.0 = Release|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|x64.ActiveCfg = Release|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|x64.Build.0 = Release|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|x86.ActiveCfg = Release|Any CPU - {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|x86.Build.0 = Release|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|x64.ActiveCfg = Debug|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|x64.Build.0 = Debug|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|x86.ActiveCfg = Debug|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|x86.Build.0 = Debug|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|Any CPU.Build.0 = Release|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|x64.ActiveCfg = Release|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|x64.Build.0 = Release|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|x86.ActiveCfg = Release|Any CPU - {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|x86.Build.0 = Release|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|x64.ActiveCfg = Debug|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|x64.Build.0 = Debug|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|x86.ActiveCfg = Debug|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|x86.Build.0 = Debug|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|Any CPU.Build.0 = Release|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|x64.ActiveCfg = Release|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|x64.Build.0 = Release|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|x86.ActiveCfg = Release|Any CPU - {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|x86.Build.0 = Release|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|x64.ActiveCfg = Debug|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|x64.Build.0 = Debug|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|x86.ActiveCfg = Debug|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|x86.Build.0 = Debug|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|Any CPU.Build.0 = Release|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|x64.ActiveCfg = Release|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|x64.Build.0 = Release|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|x86.ActiveCfg = Release|Any CPU - {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|x86.Build.0 = Release|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Debug|x64.ActiveCfg = Debug|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Debug|x64.Build.0 = Debug|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Debug|x86.ActiveCfg = Debug|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Debug|x86.Build.0 = Debug|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Release|Any CPU.Build.0 = Release|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Release|x64.ActiveCfg = Release|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Release|x64.Build.0 = Release|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Release|x86.ActiveCfg = Release|Any CPU - {4554BDF3-0723-4076-B054-616D830942D4}.Release|x86.Build.0 = Release|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|Any CPU.Build.0 = Debug|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|x64.ActiveCfg = Debug|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|x64.Build.0 = Debug|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|x86.ActiveCfg = Debug|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|x86.Build.0 = Debug|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|Any CPU.ActiveCfg = Release|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|Any CPU.Build.0 = Release|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|x64.ActiveCfg = Release|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|x64.Build.0 = Release|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|x86.ActiveCfg = Release|Any CPU - {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|x86.Build.0 = Release|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|Any CPU.Build.0 = Debug|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|x64.ActiveCfg = Debug|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|x64.Build.0 = Debug|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|x86.ActiveCfg = Debug|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|x86.Build.0 = Debug|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|Any CPU.ActiveCfg = Release|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|Any CPU.Build.0 = Release|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|x64.ActiveCfg = Release|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|x64.Build.0 = Release|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|x86.ActiveCfg = Release|Any CPU - {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|x86.Build.0 = Release|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|x64.ActiveCfg = Debug|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|x64.Build.0 = Debug|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|x86.ActiveCfg = Debug|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|x86.Build.0 = Debug|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|Any CPU.Build.0 = Release|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|x64.ActiveCfg = Release|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|x64.Build.0 = Release|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|x86.ActiveCfg = Release|Any CPU - {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|x86.Build.0 = Release|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|x64.ActiveCfg = Debug|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|x64.Build.0 = Debug|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|x86.ActiveCfg = Debug|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|x86.Build.0 = Debug|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Release|Any CPU.Build.0 = Release|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Release|x64.ActiveCfg = Release|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Release|x64.Build.0 = Release|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Release|x86.ActiveCfg = Release|Any CPU - {FCE2405B-A215-434B-A47C-32053E27A907}.Release|x86.Build.0 = Release|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|x64.ActiveCfg = Debug|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|x64.Build.0 = Debug|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|x86.ActiveCfg = Debug|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|x86.Build.0 = Debug|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|Any CPU.Build.0 = Release|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|x64.ActiveCfg = Release|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|x64.Build.0 = Release|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|x86.ActiveCfg = Release|Any CPU - {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|x86.Build.0 = Release|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Debug|x64.ActiveCfg = Debug|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Debug|x64.Build.0 = Debug|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Debug|x86.ActiveCfg = Debug|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Debug|x86.Build.0 = Debug|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Release|Any CPU.Build.0 = Release|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Release|x64.ActiveCfg = Release|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Release|x64.Build.0 = Release|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Release|x86.ActiveCfg = Release|Any CPU - {2BD88288-E05D-4978-B045-17937078E63C}.Release|x86.Build.0 = Release|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|x64.ActiveCfg = Debug|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|x64.Build.0 = Debug|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|x86.ActiveCfg = Debug|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|x86.Build.0 = Debug|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|Any CPU.Build.0 = Release|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|x64.ActiveCfg = Release|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|x64.Build.0 = Release|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|x86.ActiveCfg = Release|Any CPU - {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|x86.Build.0 = Release|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|x64.ActiveCfg = Debug|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|x64.Build.0 = Debug|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|x86.ActiveCfg = Debug|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|x86.Build.0 = Debug|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|Any CPU.Build.0 = Release|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|x64.ActiveCfg = Release|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|x64.Build.0 = Release|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|x86.ActiveCfg = Release|Any CPU - {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|x86.Build.0 = Release|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|x64.ActiveCfg = Debug|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|x64.Build.0 = Debug|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|x86.ActiveCfg = Debug|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|x86.Build.0 = Debug|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|Any CPU.Build.0 = Release|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|x64.ActiveCfg = Release|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|x64.Build.0 = Release|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|x86.ActiveCfg = Release|Any CPU - {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|x86.Build.0 = Release|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|x64.ActiveCfg = Debug|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|x64.Build.0 = Debug|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|x86.ActiveCfg = Debug|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|x86.Build.0 = Debug|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|Any CPU.Build.0 = Release|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|x64.ActiveCfg = Release|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|x64.Build.0 = Release|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|x86.ActiveCfg = Release|Any CPU - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|x86.Build.0 = Release|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|x64.ActiveCfg = Debug|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|x64.Build.0 = Debug|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|x86.ActiveCfg = Debug|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|x86.Build.0 = Debug|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|Any CPU.Build.0 = Release|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|x64.ActiveCfg = Release|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|x64.Build.0 = Release|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|x86.ActiveCfg = Release|Any CPU - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|x86.Build.0 = Release|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|x64.ActiveCfg = Debug|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|x64.Build.0 = Debug|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|x86.ActiveCfg = Debug|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|x86.Build.0 = Debug|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|Any CPU.Build.0 = Release|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|x64.ActiveCfg = Release|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|x64.Build.0 = Release|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|x86.ActiveCfg = Release|Any CPU - {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|x86.Build.0 = Release|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|x64.ActiveCfg = Debug|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|x64.Build.0 = Debug|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|x86.ActiveCfg = Debug|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|x86.Build.0 = Debug|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|Any CPU.Build.0 = Release|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|x64.ActiveCfg = Release|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|x64.Build.0 = Release|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|x86.ActiveCfg = Release|Any CPU - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|x86.Build.0 = Release|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|x64.ActiveCfg = Debug|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|x64.Build.0 = Debug|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|x86.ActiveCfg = Debug|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|x86.Build.0 = Debug|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|Any CPU.Build.0 = Release|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|x64.ActiveCfg = Release|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|x64.Build.0 = Release|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|x86.ActiveCfg = Release|Any CPU - {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|x86.Build.0 = Release|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|x64.ActiveCfg = Debug|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|x64.Build.0 = Debug|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|x86.ActiveCfg = Debug|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|x86.Build.0 = Debug|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|Any CPU.Build.0 = Release|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|x64.ActiveCfg = Release|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|x64.Build.0 = Release|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|x86.ActiveCfg = Release|Any CPU - {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF} = {4682E9B7-B54C-419D-B92F-470DA4E5674C} - {7FC2594D-55D6-4688-AB7D-C9C903414448} = {4682E9B7-B54C-419D-B92F-470DA4E5674C} - {6EA8F935-A230-4171-8618-FDFABA553292} = {4682E9B7-B54C-419D-B92F-470DA4E5674C} - {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58} = {4682E9B7-B54C-419D-B92F-470DA4E5674C} - {37024E79-A857-4EB2-9B50-F724ED34E5EB} = {4682E9B7-B54C-419D-B92F-470DA4E5674C} - {DD8EC1B0-F50C-44E4-8399-2D560F95E572} = {2571F1BD-6556-4F96-B27B-B6190E1BF13A} - {0C58FB17-F60A-47AB-84BF-961EC8C06AE6} = {2571F1BD-6556-4F96-B27B-B6190E1BF13A} - {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7} = {2571F1BD-6556-4F96-B27B-B6190E1BF13A} - {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7} = {2571F1BD-6556-4F96-B27B-B6190E1BF13A} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {3EE724C5-CAB4-410D-AC63-8D4260EF83ED} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{2571F1BD-6556-4F96-B27B-B6190E1BF13A}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Cli", "Cli", "{4682E9B7-B54C-419D-B92F-470DA4E5674C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Delegates", "Cli\Delegates\Delegates.csproj", "{E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Demo", "Cli\Demo\Demo.csproj", "{7FC2594D-55D6-4688-AB7D-C9C903414448}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Dynamic", "Cli\Dynamic\Dynamic.csproj", "{6EA8F935-A230-4171-8618-FDFABA553292}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Injection", "Cli\Injection\Injection.csproj", "{DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Logging", "Cli\Logging\Logging.csproj", "{37024E79-A857-4EB2-9B50-F724ED34E5EB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Shared", "Shared\Shared.csproj", "{DD8EC1B0-F50C-44E4-8399-2D560F95E572}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Borders", "Console\Borders\Borders.csproj", "{036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Calendars", "Console\Calendars\Calendars.csproj", "{C64ADBA3-AED2-4938-8E26-8D6679C395CB}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Canvas", "Console\Canvas\Canvas.csproj", "{B3393919-26F1-4200-88CD-B71EEAF0EA51}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Charts", "Console\Charts\Charts.csproj", "{0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Colors", "Console\Colors\Colors.csproj", "{18562660-BF70-4EF3-A765-22713BDE2EB1}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Columns", "Console\Columns\Columns.csproj", "{264EBC5A-B897-4DA8-9C9E-9A445B1E368C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cursor", "Console\Cursor\Cursor.csproj", "{95BE948B-6102-4453-982D-C7B21E51B582}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Emojis", "Console\Emojis\Emojis.csproj", "{6272C7ED-432E-4286-914C-898304A1880E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Exceptions", "Console\Exceptions\Exceptions.csproj", "{20766F18-AEC7-4382-BDE2-0C846F2857AA}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Figlet", "Console\Figlet\Figlet.csproj", "{1C374C51-6C82-4E71-9701-5F378BC0356C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Grids", "Console\Grids\Grids.csproj", "{6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Info", "Console\Info\Info.csproj", "{FBCCBA12-9DBF-403C-9FA4-222CBB080955}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Links", "Console\Links\Links.csproj", "{B9414195-69A2-40E6-B071-751DCCE95AF0}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Live", "Console\Live\Live.csproj", "{4AE3AC67-A927-42CC-B286-E0A0735DC7A2}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Panels", "Console\Panels\Panels.csproj", "{12E7F2CE-E91B-446F-A269-F88FB546B6A8}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Progress", "Console\Progress\Progress.csproj", "{4554BDF3-0723-4076-B054-616D830942D4}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Prompt", "Console\Prompt\Prompt.csproj", "{85A37D38-54D9-4FA2-B311-CA48BD7AF916}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Rules", "Console\Rules\Rules.csproj", "{305E2CE7-9D64-43D7-A26C-11036ACE2A89}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Showcase", "Console\Showcase\Showcase.csproj", "{5BEE8076-59A0-47BB-9CC6-222EC978AE16}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Status", "Console\Status\Status.csproj", "{FCE2405B-A215-434B-A47C-32053E27A907}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tables", "Console\Tables\Tables.csproj", "{3D16490A-9EBA-488C-9B3E-6A11FC1E0300}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Trees", "Console\Trees\Trees.csproj", "{2BD88288-E05D-4978-B045-17937078E63C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LiveTable", "Console\LiveTable\LiveTable.csproj", "{E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Minimal", "Console\Minimal\Minimal.csproj", "{1780A30A-397A-4CC3-B2A0-A385D9081FA2}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AlternateScreen", "Console\AlternateScreen\AlternateScreen.csproj", "{8A3B636E-5828-438B-A8F4-83811D2704CD}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console", "..\src\Spectre.Console\Spectre.Console.csproj", "{0C58FB17-F60A-47AB-84BF-961EC8C06AE6}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.ImageSharp", "..\src\Spectre.Console.ImageSharp\Spectre.Console.ImageSharp.csproj", "{A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Paths", "Console\Paths\Paths.csproj", "{65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.Cli", "..\src\Spectre.Console.Cli\Spectre.Console.Cli.csproj", "{EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Layout", "Console\Layout\Layout.csproj", "{A9FDE73A-8452-4CA3-B366-3F900597E132}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Json", "Console\Json\Json.csproj", "{ABE3E734-0756-4D5A-B28A-E6E526D9927D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Spectre.Console.Json", "..\src\Spectre.Console.Json\Spectre.Console.Json.csproj", "{91A5637F-1F89-48B3-A0BA-6CC629807393}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|x64.ActiveCfg = Debug|Any CPU + {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|x64.Build.0 = Debug|Any CPU + {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|x86.ActiveCfg = Debug|Any CPU + {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Debug|x86.Build.0 = Debug|Any CPU + {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|Any CPU.Build.0 = Release|Any CPU + {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|x64.ActiveCfg = Release|Any CPU + {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|x64.Build.0 = Release|Any CPU + {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|x86.ActiveCfg = Release|Any CPU + {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF}.Release|x86.Build.0 = Release|Any CPU + {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|x64.ActiveCfg = Debug|Any CPU + {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|x64.Build.0 = Debug|Any CPU + {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|x86.ActiveCfg = Debug|Any CPU + {7FC2594D-55D6-4688-AB7D-C9C903414448}.Debug|x86.Build.0 = Debug|Any CPU + {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|Any CPU.Build.0 = Release|Any CPU + {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|x64.ActiveCfg = Release|Any CPU + {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|x64.Build.0 = Release|Any CPU + {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|x86.ActiveCfg = Release|Any CPU + {7FC2594D-55D6-4688-AB7D-C9C903414448}.Release|x86.Build.0 = Release|Any CPU + {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|x64.ActiveCfg = Debug|Any CPU + {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|x64.Build.0 = Debug|Any CPU + {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|x86.ActiveCfg = Debug|Any CPU + {6EA8F935-A230-4171-8618-FDFABA553292}.Debug|x86.Build.0 = Debug|Any CPU + {6EA8F935-A230-4171-8618-FDFABA553292}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6EA8F935-A230-4171-8618-FDFABA553292}.Release|Any CPU.Build.0 = Release|Any CPU + {6EA8F935-A230-4171-8618-FDFABA553292}.Release|x64.ActiveCfg = Release|Any CPU + {6EA8F935-A230-4171-8618-FDFABA553292}.Release|x64.Build.0 = Release|Any CPU + {6EA8F935-A230-4171-8618-FDFABA553292}.Release|x86.ActiveCfg = Release|Any CPU + {6EA8F935-A230-4171-8618-FDFABA553292}.Release|x86.Build.0 = Release|Any CPU + {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|x64.ActiveCfg = Debug|Any CPU + {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|x64.Build.0 = Debug|Any CPU + {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|x86.ActiveCfg = Debug|Any CPU + {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Debug|x86.Build.0 = Debug|Any CPU + {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|Any CPU.Build.0 = Release|Any CPU + {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|x64.ActiveCfg = Release|Any CPU + {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|x64.Build.0 = Release|Any CPU + {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|x86.ActiveCfg = Release|Any CPU + {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58}.Release|x86.Build.0 = Release|Any CPU + {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|x64.ActiveCfg = Debug|Any CPU + {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|x64.Build.0 = Debug|Any CPU + {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|x86.ActiveCfg = Debug|Any CPU + {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Debug|x86.Build.0 = Debug|Any CPU + {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|Any CPU.Build.0 = Release|Any CPU + {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|x64.ActiveCfg = Release|Any CPU + {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|x64.Build.0 = Release|Any CPU + {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|x86.ActiveCfg = Release|Any CPU + {37024E79-A857-4EB2-9B50-F724ED34E5EB}.Release|x86.Build.0 = Release|Any CPU + {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|x64.ActiveCfg = Debug|Any CPU + {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|x64.Build.0 = Debug|Any CPU + {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|x86.ActiveCfg = Debug|Any CPU + {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Debug|x86.Build.0 = Debug|Any CPU + {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|Any CPU.Build.0 = Release|Any CPU + {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|x64.ActiveCfg = Release|Any CPU + {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|x64.Build.0 = Release|Any CPU + {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|x86.ActiveCfg = Release|Any CPU + {DD8EC1B0-F50C-44E4-8399-2D560F95E572}.Release|x86.Build.0 = Release|Any CPU + {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|Any CPU.Build.0 = Debug|Any CPU + {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|x64.ActiveCfg = Debug|Any CPU + {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|x64.Build.0 = Debug|Any CPU + {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|x86.ActiveCfg = Debug|Any CPU + {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Debug|x86.Build.0 = Debug|Any CPU + {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|Any CPU.ActiveCfg = Release|Any CPU + {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|Any CPU.Build.0 = Release|Any CPU + {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|x64.ActiveCfg = Release|Any CPU + {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|x64.Build.0 = Release|Any CPU + {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|x86.ActiveCfg = Release|Any CPU + {036D547D-1C9B-4E6F-B7E6-2E375E4CAF01}.Release|x86.Build.0 = Release|Any CPU + {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|x64.ActiveCfg = Debug|Any CPU + {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|x64.Build.0 = Debug|Any CPU + {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|x86.ActiveCfg = Debug|Any CPU + {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Debug|x86.Build.0 = Debug|Any CPU + {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|Any CPU.Build.0 = Release|Any CPU + {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|x64.ActiveCfg = Release|Any CPU + {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|x64.Build.0 = Release|Any CPU + {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|x86.ActiveCfg = Release|Any CPU + {C64ADBA3-AED2-4938-8E26-8D6679C395CB}.Release|x86.Build.0 = Release|Any CPU + {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|x64.ActiveCfg = Debug|Any CPU + {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|x64.Build.0 = Debug|Any CPU + {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|x86.ActiveCfg = Debug|Any CPU + {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Debug|x86.Build.0 = Debug|Any CPU + {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|Any CPU.Build.0 = Release|Any CPU + {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|x64.ActiveCfg = Release|Any CPU + {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|x64.Build.0 = Release|Any CPU + {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|x86.ActiveCfg = Release|Any CPU + {B3393919-26F1-4200-88CD-B71EEAF0EA51}.Release|x86.Build.0 = Release|Any CPU + {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|x64.ActiveCfg = Debug|Any CPU + {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|x64.Build.0 = Debug|Any CPU + {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|x86.ActiveCfg = Debug|Any CPU + {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Debug|x86.Build.0 = Debug|Any CPU + {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|Any CPU.Build.0 = Release|Any CPU + {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|x64.ActiveCfg = Release|Any CPU + {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|x64.Build.0 = Release|Any CPU + {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|x86.ActiveCfg = Release|Any CPU + {0CF6EE4B-4015-4DE0-9D48-1EADCDE296E6}.Release|x86.Build.0 = Release|Any CPU + {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|x64.ActiveCfg = Debug|Any CPU + {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|x64.Build.0 = Debug|Any CPU + {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|x86.ActiveCfg = Debug|Any CPU + {18562660-BF70-4EF3-A765-22713BDE2EB1}.Debug|x86.Build.0 = Debug|Any CPU + {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|Any CPU.Build.0 = Release|Any CPU + {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|x64.ActiveCfg = Release|Any CPU + {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|x64.Build.0 = Release|Any CPU + {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|x86.ActiveCfg = Release|Any CPU + {18562660-BF70-4EF3-A765-22713BDE2EB1}.Release|x86.Build.0 = Release|Any CPU + {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|x64.ActiveCfg = Debug|Any CPU + {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|x64.Build.0 = Debug|Any CPU + {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|x86.ActiveCfg = Debug|Any CPU + {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Debug|x86.Build.0 = Debug|Any CPU + {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|Any CPU.Build.0 = Release|Any CPU + {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|x64.ActiveCfg = Release|Any CPU + {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|x64.Build.0 = Release|Any CPU + {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|x86.ActiveCfg = Release|Any CPU + {264EBC5A-B897-4DA8-9C9E-9A445B1E368C}.Release|x86.Build.0 = Release|Any CPU + {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|Any CPU.Build.0 = Debug|Any CPU + {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|x64.ActiveCfg = Debug|Any CPU + {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|x64.Build.0 = Debug|Any CPU + {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|x86.ActiveCfg = Debug|Any CPU + {95BE948B-6102-4453-982D-C7B21E51B582}.Debug|x86.Build.0 = Debug|Any CPU + {95BE948B-6102-4453-982D-C7B21E51B582}.Release|Any CPU.ActiveCfg = Release|Any CPU + {95BE948B-6102-4453-982D-C7B21E51B582}.Release|Any CPU.Build.0 = Release|Any CPU + {95BE948B-6102-4453-982D-C7B21E51B582}.Release|x64.ActiveCfg = Release|Any CPU + {95BE948B-6102-4453-982D-C7B21E51B582}.Release|x64.Build.0 = Release|Any CPU + {95BE948B-6102-4453-982D-C7B21E51B582}.Release|x86.ActiveCfg = Release|Any CPU + {95BE948B-6102-4453-982D-C7B21E51B582}.Release|x86.Build.0 = Release|Any CPU + {6272C7ED-432E-4286-914C-898304A1880E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6272C7ED-432E-4286-914C-898304A1880E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6272C7ED-432E-4286-914C-898304A1880E}.Debug|x64.ActiveCfg = Debug|Any CPU + {6272C7ED-432E-4286-914C-898304A1880E}.Debug|x64.Build.0 = Debug|Any CPU + {6272C7ED-432E-4286-914C-898304A1880E}.Debug|x86.ActiveCfg = Debug|Any CPU + {6272C7ED-432E-4286-914C-898304A1880E}.Debug|x86.Build.0 = Debug|Any CPU + {6272C7ED-432E-4286-914C-898304A1880E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6272C7ED-432E-4286-914C-898304A1880E}.Release|Any CPU.Build.0 = Release|Any CPU + {6272C7ED-432E-4286-914C-898304A1880E}.Release|x64.ActiveCfg = Release|Any CPU + {6272C7ED-432E-4286-914C-898304A1880E}.Release|x64.Build.0 = Release|Any CPU + {6272C7ED-432E-4286-914C-898304A1880E}.Release|x86.ActiveCfg = Release|Any CPU + {6272C7ED-432E-4286-914C-898304A1880E}.Release|x86.Build.0 = Release|Any CPU + {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|x64.ActiveCfg = Debug|Any CPU + {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|x64.Build.0 = Debug|Any CPU + {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|x86.ActiveCfg = Debug|Any CPU + {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Debug|x86.Build.0 = Debug|Any CPU + {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|Any CPU.Build.0 = Release|Any CPU + {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|x64.ActiveCfg = Release|Any CPU + {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|x64.Build.0 = Release|Any CPU + {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|x86.ActiveCfg = Release|Any CPU + {20766F18-AEC7-4382-BDE2-0C846F2857AA}.Release|x86.Build.0 = Release|Any CPU + {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|x64.ActiveCfg = Debug|Any CPU + {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|x64.Build.0 = Debug|Any CPU + {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|x86.ActiveCfg = Debug|Any CPU + {1C374C51-6C82-4E71-9701-5F378BC0356C}.Debug|x86.Build.0 = Debug|Any CPU + {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|Any CPU.Build.0 = Release|Any CPU + {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|x64.ActiveCfg = Release|Any CPU + {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|x64.Build.0 = Release|Any CPU + {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|x86.ActiveCfg = Release|Any CPU + {1C374C51-6C82-4E71-9701-5F378BC0356C}.Release|x86.Build.0 = Release|Any CPU + {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|x64.ActiveCfg = Debug|Any CPU + {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|x64.Build.0 = Debug|Any CPU + {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|x86.ActiveCfg = Debug|Any CPU + {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Debug|x86.Build.0 = Debug|Any CPU + {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|Any CPU.Build.0 = Release|Any CPU + {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|x64.ActiveCfg = Release|Any CPU + {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|x64.Build.0 = Release|Any CPU + {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|x86.ActiveCfg = Release|Any CPU + {6F7AB11D-D2AE-4D1C-AFEE-7FBA922D6C26}.Release|x86.Build.0 = Release|Any CPU + {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|x64.ActiveCfg = Debug|Any CPU + {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|x64.Build.0 = Debug|Any CPU + {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|x86.ActiveCfg = Debug|Any CPU + {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Debug|x86.Build.0 = Debug|Any CPU + {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|Any CPU.Build.0 = Release|Any CPU + {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|x64.ActiveCfg = Release|Any CPU + {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|x64.Build.0 = Release|Any CPU + {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|x86.ActiveCfg = Release|Any CPU + {FBCCBA12-9DBF-403C-9FA4-222CBB080955}.Release|x86.Build.0 = Release|Any CPU + {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|x64.ActiveCfg = Debug|Any CPU + {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|x64.Build.0 = Debug|Any CPU + {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|x86.ActiveCfg = Debug|Any CPU + {B9414195-69A2-40E6-B071-751DCCE95AF0}.Debug|x86.Build.0 = Debug|Any CPU + {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|Any CPU.Build.0 = Release|Any CPU + {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|x64.ActiveCfg = Release|Any CPU + {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|x64.Build.0 = Release|Any CPU + {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|x86.ActiveCfg = Release|Any CPU + {B9414195-69A2-40E6-B071-751DCCE95AF0}.Release|x86.Build.0 = Release|Any CPU + {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|x64.ActiveCfg = Debug|Any CPU + {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|x64.Build.0 = Debug|Any CPU + {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|x86.ActiveCfg = Debug|Any CPU + {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Debug|x86.Build.0 = Debug|Any CPU + {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|Any CPU.Build.0 = Release|Any CPU + {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|x64.ActiveCfg = Release|Any CPU + {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|x64.Build.0 = Release|Any CPU + {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|x86.ActiveCfg = Release|Any CPU + {4AE3AC67-A927-42CC-B286-E0A0735DC7A2}.Release|x86.Build.0 = Release|Any CPU + {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|x64.ActiveCfg = Debug|Any CPU + {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|x64.Build.0 = Debug|Any CPU + {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|x86.ActiveCfg = Debug|Any CPU + {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Debug|x86.Build.0 = Debug|Any CPU + {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|Any CPU.Build.0 = Release|Any CPU + {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|x64.ActiveCfg = Release|Any CPU + {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|x64.Build.0 = Release|Any CPU + {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|x86.ActiveCfg = Release|Any CPU + {12E7F2CE-E91B-446F-A269-F88FB546B6A8}.Release|x86.Build.0 = Release|Any CPU + {4554BDF3-0723-4076-B054-616D830942D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4554BDF3-0723-4076-B054-616D830942D4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4554BDF3-0723-4076-B054-616D830942D4}.Debug|x64.ActiveCfg = Debug|Any CPU + {4554BDF3-0723-4076-B054-616D830942D4}.Debug|x64.Build.0 = Debug|Any CPU + {4554BDF3-0723-4076-B054-616D830942D4}.Debug|x86.ActiveCfg = Debug|Any CPU + {4554BDF3-0723-4076-B054-616D830942D4}.Debug|x86.Build.0 = Debug|Any CPU + {4554BDF3-0723-4076-B054-616D830942D4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4554BDF3-0723-4076-B054-616D830942D4}.Release|Any CPU.Build.0 = Release|Any CPU + {4554BDF3-0723-4076-B054-616D830942D4}.Release|x64.ActiveCfg = Release|Any CPU + {4554BDF3-0723-4076-B054-616D830942D4}.Release|x64.Build.0 = Release|Any CPU + {4554BDF3-0723-4076-B054-616D830942D4}.Release|x86.ActiveCfg = Release|Any CPU + {4554BDF3-0723-4076-B054-616D830942D4}.Release|x86.Build.0 = Release|Any CPU + {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|Any CPU.Build.0 = Debug|Any CPU + {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|x64.ActiveCfg = Debug|Any CPU + {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|x64.Build.0 = Debug|Any CPU + {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|x86.ActiveCfg = Debug|Any CPU + {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Debug|x86.Build.0 = Debug|Any CPU + {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|Any CPU.ActiveCfg = Release|Any CPU + {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|Any CPU.Build.0 = Release|Any CPU + {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|x64.ActiveCfg = Release|Any CPU + {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|x64.Build.0 = Release|Any CPU + {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|x86.ActiveCfg = Release|Any CPU + {85A37D38-54D9-4FA2-B311-CA48BD7AF916}.Release|x86.Build.0 = Release|Any CPU + {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|Any CPU.Build.0 = Debug|Any CPU + {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|x64.ActiveCfg = Debug|Any CPU + {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|x64.Build.0 = Debug|Any CPU + {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|x86.ActiveCfg = Debug|Any CPU + {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Debug|x86.Build.0 = Debug|Any CPU + {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|Any CPU.ActiveCfg = Release|Any CPU + {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|Any CPU.Build.0 = Release|Any CPU + {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|x64.ActiveCfg = Release|Any CPU + {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|x64.Build.0 = Release|Any CPU + {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|x86.ActiveCfg = Release|Any CPU + {305E2CE7-9D64-43D7-A26C-11036ACE2A89}.Release|x86.Build.0 = Release|Any CPU + {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|x64.ActiveCfg = Debug|Any CPU + {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|x64.Build.0 = Debug|Any CPU + {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|x86.ActiveCfg = Debug|Any CPU + {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Debug|x86.Build.0 = Debug|Any CPU + {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|Any CPU.Build.0 = Release|Any CPU + {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|x64.ActiveCfg = Release|Any CPU + {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|x64.Build.0 = Release|Any CPU + {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|x86.ActiveCfg = Release|Any CPU + {5BEE8076-59A0-47BB-9CC6-222EC978AE16}.Release|x86.Build.0 = Release|Any CPU + {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|x64.ActiveCfg = Debug|Any CPU + {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|x64.Build.0 = Debug|Any CPU + {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|x86.ActiveCfg = Debug|Any CPU + {FCE2405B-A215-434B-A47C-32053E27A907}.Debug|x86.Build.0 = Debug|Any CPU + {FCE2405B-A215-434B-A47C-32053E27A907}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FCE2405B-A215-434B-A47C-32053E27A907}.Release|Any CPU.Build.0 = Release|Any CPU + {FCE2405B-A215-434B-A47C-32053E27A907}.Release|x64.ActiveCfg = Release|Any CPU + {FCE2405B-A215-434B-A47C-32053E27A907}.Release|x64.Build.0 = Release|Any CPU + {FCE2405B-A215-434B-A47C-32053E27A907}.Release|x86.ActiveCfg = Release|Any CPU + {FCE2405B-A215-434B-A47C-32053E27A907}.Release|x86.Build.0 = Release|Any CPU + {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|x64.ActiveCfg = Debug|Any CPU + {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|x64.Build.0 = Debug|Any CPU + {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|x86.ActiveCfg = Debug|Any CPU + {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Debug|x86.Build.0 = Debug|Any CPU + {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|Any CPU.Build.0 = Release|Any CPU + {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|x64.ActiveCfg = Release|Any CPU + {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|x64.Build.0 = Release|Any CPU + {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|x86.ActiveCfg = Release|Any CPU + {3D16490A-9EBA-488C-9B3E-6A11FC1E0300}.Release|x86.Build.0 = Release|Any CPU + {2BD88288-E05D-4978-B045-17937078E63C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2BD88288-E05D-4978-B045-17937078E63C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2BD88288-E05D-4978-B045-17937078E63C}.Debug|x64.ActiveCfg = Debug|Any CPU + {2BD88288-E05D-4978-B045-17937078E63C}.Debug|x64.Build.0 = Debug|Any CPU + {2BD88288-E05D-4978-B045-17937078E63C}.Debug|x86.ActiveCfg = Debug|Any CPU + {2BD88288-E05D-4978-B045-17937078E63C}.Debug|x86.Build.0 = Debug|Any CPU + {2BD88288-E05D-4978-B045-17937078E63C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2BD88288-E05D-4978-B045-17937078E63C}.Release|Any CPU.Build.0 = Release|Any CPU + {2BD88288-E05D-4978-B045-17937078E63C}.Release|x64.ActiveCfg = Release|Any CPU + {2BD88288-E05D-4978-B045-17937078E63C}.Release|x64.Build.0 = Release|Any CPU + {2BD88288-E05D-4978-B045-17937078E63C}.Release|x86.ActiveCfg = Release|Any CPU + {2BD88288-E05D-4978-B045-17937078E63C}.Release|x86.Build.0 = Release|Any CPU + {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|x64.ActiveCfg = Debug|Any CPU + {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|x64.Build.0 = Debug|Any CPU + {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|x86.ActiveCfg = Debug|Any CPU + {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Debug|x86.Build.0 = Debug|Any CPU + {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|Any CPU.Build.0 = Release|Any CPU + {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|x64.ActiveCfg = Release|Any CPU + {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|x64.Build.0 = Release|Any CPU + {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|x86.ActiveCfg = Release|Any CPU + {E5FAAFB4-1D0F-4E29-A94F-A647D64AE64E}.Release|x86.Build.0 = Release|Any CPU + {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|x64.ActiveCfg = Debug|Any CPU + {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|x64.Build.0 = Debug|Any CPU + {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|x86.ActiveCfg = Debug|Any CPU + {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Debug|x86.Build.0 = Debug|Any CPU + {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|Any CPU.Build.0 = Release|Any CPU + {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|x64.ActiveCfg = Release|Any CPU + {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|x64.Build.0 = Release|Any CPU + {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|x86.ActiveCfg = Release|Any CPU + {1780A30A-397A-4CC3-B2A0-A385D9081FA2}.Release|x86.Build.0 = Release|Any CPU + {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|x64.ActiveCfg = Debug|Any CPU + {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|x64.Build.0 = Debug|Any CPU + {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|x86.ActiveCfg = Debug|Any CPU + {8A3B636E-5828-438B-A8F4-83811D2704CD}.Debug|x86.Build.0 = Debug|Any CPU + {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|Any CPU.Build.0 = Release|Any CPU + {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|x64.ActiveCfg = Release|Any CPU + {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|x64.Build.0 = Release|Any CPU + {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|x86.ActiveCfg = Release|Any CPU + {8A3B636E-5828-438B-A8F4-83811D2704CD}.Release|x86.Build.0 = Release|Any CPU + {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|x64.ActiveCfg = Debug|Any CPU + {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|x64.Build.0 = Debug|Any CPU + {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|x86.ActiveCfg = Debug|Any CPU + {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Debug|x86.Build.0 = Debug|Any CPU + {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|Any CPU.Build.0 = Release|Any CPU + {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|x64.ActiveCfg = Release|Any CPU + {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|x64.Build.0 = Release|Any CPU + {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|x86.ActiveCfg = Release|Any CPU + {0C58FB17-F60A-47AB-84BF-961EC8C06AE6}.Release|x86.Build.0 = Release|Any CPU + {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|x64.ActiveCfg = Debug|Any CPU + {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|x64.Build.0 = Debug|Any CPU + {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|x86.ActiveCfg = Debug|Any CPU + {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Debug|x86.Build.0 = Debug|Any CPU + {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|Any CPU.Build.0 = Release|Any CPU + {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|x64.ActiveCfg = Release|Any CPU + {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|x64.Build.0 = Release|Any CPU + {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|x86.ActiveCfg = Release|Any CPU + {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7}.Release|x86.Build.0 = Release|Any CPU + {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|x64.ActiveCfg = Debug|Any CPU + {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|x64.Build.0 = Debug|Any CPU + {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|x86.ActiveCfg = Debug|Any CPU + {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Debug|x86.Build.0 = Debug|Any CPU + {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|Any CPU.Build.0 = Release|Any CPU + {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|x64.ActiveCfg = Release|Any CPU + {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|x64.Build.0 = Release|Any CPU + {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|x86.ActiveCfg = Release|Any CPU + {65CB00B0-A3AE-4E8F-A990-4C8C1A232FE2}.Release|x86.Build.0 = Release|Any CPU + {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|x64.ActiveCfg = Debug|Any CPU + {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|x64.Build.0 = Debug|Any CPU + {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|x86.ActiveCfg = Debug|Any CPU + {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Debug|x86.Build.0 = Debug|Any CPU + {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|Any CPU.Build.0 = Release|Any CPU + {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|x64.ActiveCfg = Release|Any CPU + {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|x64.Build.0 = Release|Any CPU + {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|x86.ActiveCfg = Release|Any CPU + {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7}.Release|x86.Build.0 = Release|Any CPU + {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|x64.ActiveCfg = Debug|Any CPU + {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|x64.Build.0 = Debug|Any CPU + {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|x86.ActiveCfg = Debug|Any CPU + {A9FDE73A-8452-4CA3-B366-3F900597E132}.Debug|x86.Build.0 = Debug|Any CPU + {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|Any CPU.Build.0 = Release|Any CPU + {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|x64.ActiveCfg = Release|Any CPU + {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|x64.Build.0 = Release|Any CPU + {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|x86.ActiveCfg = Release|Any CPU + {A9FDE73A-8452-4CA3-B366-3F900597E132}.Release|x86.Build.0 = Release|Any CPU + {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|x64.ActiveCfg = Debug|Any CPU + {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|x64.Build.0 = Debug|Any CPU + {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|x86.ActiveCfg = Debug|Any CPU + {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Debug|x86.Build.0 = Debug|Any CPU + {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|Any CPU.Build.0 = Release|Any CPU + {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|x64.ActiveCfg = Release|Any CPU + {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|x64.Build.0 = Release|Any CPU + {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|x86.ActiveCfg = Release|Any CPU + {ABE3E734-0756-4D5A-B28A-E6E526D9927D}.Release|x86.Build.0 = Release|Any CPU + {91A5637F-1F89-48B3-A0BA-6CC629807393}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {91A5637F-1F89-48B3-A0BA-6CC629807393}.Debug|Any CPU.Build.0 = Debug|Any CPU + {91A5637F-1F89-48B3-A0BA-6CC629807393}.Debug|x64.ActiveCfg = Debug|Any CPU + {91A5637F-1F89-48B3-A0BA-6CC629807393}.Debug|x64.Build.0 = Debug|Any CPU + {91A5637F-1F89-48B3-A0BA-6CC629807393}.Debug|x86.ActiveCfg = Debug|Any CPU + {91A5637F-1F89-48B3-A0BA-6CC629807393}.Debug|x86.Build.0 = Debug|Any CPU + {91A5637F-1F89-48B3-A0BA-6CC629807393}.Release|Any CPU.ActiveCfg = Release|Any CPU + {91A5637F-1F89-48B3-A0BA-6CC629807393}.Release|Any CPU.Build.0 = Release|Any CPU + {91A5637F-1F89-48B3-A0BA-6CC629807393}.Release|x64.ActiveCfg = Release|Any CPU + {91A5637F-1F89-48B3-A0BA-6CC629807393}.Release|x64.Build.0 = Release|Any CPU + {91A5637F-1F89-48B3-A0BA-6CC629807393}.Release|x86.ActiveCfg = Release|Any CPU + {91A5637F-1F89-48B3-A0BA-6CC629807393}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {E2C9023A-D24F-4F5D-8411-5E2FEA642FEF} = {4682E9B7-B54C-419D-B92F-470DA4E5674C} + {7FC2594D-55D6-4688-AB7D-C9C903414448} = {4682E9B7-B54C-419D-B92F-470DA4E5674C} + {6EA8F935-A230-4171-8618-FDFABA553292} = {4682E9B7-B54C-419D-B92F-470DA4E5674C} + {DEB88B47-658E-4FCB-BD1D-05C99E7EFA58} = {4682E9B7-B54C-419D-B92F-470DA4E5674C} + {37024E79-A857-4EB2-9B50-F724ED34E5EB} = {4682E9B7-B54C-419D-B92F-470DA4E5674C} + {DD8EC1B0-F50C-44E4-8399-2D560F95E572} = {2571F1BD-6556-4F96-B27B-B6190E1BF13A} + {0C58FB17-F60A-47AB-84BF-961EC8C06AE6} = {2571F1BD-6556-4F96-B27B-B6190E1BF13A} + {A127CE7D-A5A7-4745-9809-EBD7CB12CEE7} = {2571F1BD-6556-4F96-B27B-B6190E1BF13A} + {EFAADF6A-C77D-41EC-83F5-BBB4FFC5A6D7} = {2571F1BD-6556-4F96-B27B-B6190E1BF13A} + {91A5637F-1F89-48B3-A0BA-6CC629807393} = {2571F1BD-6556-4F96-B27B-B6190E1BF13A} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {3EE724C5-CAB4-410D-AC63-8D4260EF83ED} + EndGlobalSection +EndGlobal diff --git a/src/Spectre.Console.Cli/ConfiguratorExtensions.cs b/src/Spectre.Console.Cli/ConfiguratorExtensions.cs index 467930203..8445a581e 100644 --- a/src/Spectre.Console.Cli/ConfiguratorExtensions.cs +++ b/src/Spectre.Console.Cli/ConfiguratorExtensions.cs @@ -237,6 +237,26 @@ public static ICommandConfigurator AddDelegate( return configurator.AddDelegate(name, (c, _) => func(c)); } + /// + /// Adds a command without settings that executes an async delegate. + /// + /// The configurator. + /// The name of the command. + /// The delegate to execute as part of command execution. + /// A command configurator that can be used to configure the command further. + public static ICommandConfigurator AddAsyncDelegate( + this IConfigurator configurator, + string name, + Func> func) + { + if (configurator == null) + { + throw new ArgumentNullException(nameof(configurator)); + } + + return configurator.AddAsyncDelegate(name, (c, _) => func(c)); + } + /// /// Adds a command without settings that executes a delegate. /// @@ -259,6 +279,28 @@ public static ICommandConfigurator AddDelegate( return configurator.AddDelegate(name, (c, _) => func(c)); } + /// + /// Adds a command without settings that executes an async delegate. + /// + /// The command setting type. + /// The configurator. + /// The name of the command. + /// The delegate to execute as part of command execution. + /// A command configurator that can be used to configure the command further. + public static ICommandConfigurator AddAsyncDelegate( + this IConfigurator configurator, + string name, + Func> func) + where TSettings : CommandSettings + { + if (configurator == null) + { + throw new ArgumentNullException(nameof(configurator)); + } + + return configurator.AddAsyncDelegate(name, (c, _) => func(c)); + } + /// /// Sets the ExceptionsHandler. /// Setting this way will use the diff --git a/src/Spectre.Console.Cli/IConfigurator.cs b/src/Spectre.Console.Cli/IConfigurator.cs index bbd193ec8..f6bbcb6d3 100644 --- a/src/Spectre.Console.Cli/IConfigurator.cs +++ b/src/Spectre.Console.Cli/IConfigurator.cs @@ -35,6 +35,16 @@ ICommandConfigurator AddCommand(string name) ICommandConfigurator AddDelegate(string name, Func func) where TSettings : CommandSettings; + /// + /// Adds a command that executes an async delegate. + /// + /// The command setting type. + /// The name of the command. + /// The delegate to execute as part of command execution. + /// A command configurator that can be used to configure the command further. + ICommandConfigurator AddAsyncDelegate(string name, Func> func) + where TSettings : CommandSettings; + /// /// Adds a command branch. /// diff --git a/src/Spectre.Console.Cli/IConfiguratorOfT.cs b/src/Spectre.Console.Cli/IConfiguratorOfT.cs index 25a5556ca..6d463fc74 100644 --- a/src/Spectre.Console.Cli/IConfiguratorOfT.cs +++ b/src/Spectre.Console.Cli/IConfiguratorOfT.cs @@ -57,6 +57,16 @@ ICommandConfigurator AddCommand(string name) ICommandConfigurator AddDelegate(string name, Func func) where TDerivedSettings : TSettings; + /// + /// Adds a command that executes an async delegate. + /// + /// The derived command setting type. + /// The name of the command. + /// The delegate to execute as part of command execution. + /// A command configurator that can be used to configure the command further. + ICommandConfigurator AddAsyncDelegate(string name, Func> func) + where TDerivedSettings : TSettings; + /// /// Adds a command branch. /// diff --git a/src/Spectre.Console.Cli/Internal/Configuration/Configurator.cs b/src/Spectre.Console.Cli/Internal/Configuration/Configurator.cs index 9ded6e03e..3108b5dd7 100644 --- a/src/Spectre.Console.Cli/Internal/Configuration/Configurator.cs +++ b/src/Spectre.Console.Cli/Internal/Configuration/Configurator.cs @@ -23,7 +23,7 @@ public Configurator(ITypeRegistrar registrar) public void AddExample(params string[] args) { Examples.Add(args); - } + } public ConfiguredCommand SetDefaultCommand() where TDefaultCommand : class, ICommand @@ -42,6 +42,14 @@ public ICommandConfigurator AddCommand(string name) public ICommandConfigurator AddDelegate(string name, Func func) where TSettings : CommandSettings + { + var command = Commands.AddAndReturn(ConfiguredCommand.FromDelegate( + name, (context, settings) => Task.FromResult(func(context, (TSettings)settings)))); + return new CommandConfigurator(command); + } + + public ICommandConfigurator AddAsyncDelegate(string name, Func> func) + where TSettings : CommandSettings { var command = Commands.AddAndReturn(ConfiguredCommand.FromDelegate( name, (context, settings) => func(context, (TSettings)settings))); diff --git a/src/Spectre.Console.Cli/Internal/Configuration/ConfiguratorOfT.cs b/src/Spectre.Console.Cli/Internal/Configuration/ConfiguratorOfT.cs index fb23cd2be..14b65888d 100644 --- a/src/Spectre.Console.Cli/Internal/Configuration/ConfiguratorOfT.cs +++ b/src/Spectre.Console.Cli/Internal/Configuration/ConfiguratorOfT.cs @@ -1,100 +1,111 @@ -namespace Spectre.Console.Cli; - -internal sealed class Configurator : IUnsafeBranchConfigurator, IConfigurator - where TSettings : CommandSettings -{ - private readonly ConfiguredCommand _command; - private readonly ITypeRegistrar? _registrar; - - public Configurator(ConfiguredCommand command, ITypeRegistrar? registrar) - { - _command = command; - _registrar = registrar; - } - - public void SetDescription(string description) - { - _command.Description = description; - } - - public void AddExample(string[] args) - { - _command.Examples.Add(args); - } - - public void SetDefaultCommand() - where TDefaultCommand : class, ICommandLimiter - { - var defaultCommand = ConfiguredCommand.FromType( - CliConstants.DefaultCommandName, isDefaultCommand: true); - _command.Children.Add(defaultCommand); - } - - public void HideBranch() - { - _command.IsHidden = true; - } - - public ICommandConfigurator AddCommand(string name) - where TCommand : class, ICommandLimiter - { - var command = ConfiguredCommand.FromType(name, isDefaultCommand: false); - var configurator = new CommandConfigurator(command); - - _command.Children.Add(command); - return configurator; - } - - public ICommandConfigurator AddDelegate(string name, Func func) - where TDerivedSettings : TSettings - { - var command = ConfiguredCommand.FromDelegate( - name, (context, settings) => func(context, (TDerivedSettings)settings)); - - _command.Children.Add(command); - return new CommandConfigurator(command); - } - - public IBranchConfigurator AddBranch(string name, Action> action) - where TDerivedSettings : TSettings - { - var command = ConfiguredCommand.FromBranch(name); - action(new Configurator(command, _registrar)); - var added = _command.Children.AddAndReturn(command); - return new BranchConfigurator(added); - } - - ICommandConfigurator IUnsafeConfigurator.AddCommand(string name, Type command) - { - var method = GetType().GetMethod("AddCommand"); - if (method == null) - { - throw new CommandConfigurationException("Could not find AddCommand by reflection."); - } - - method = method.MakeGenericMethod(command); - - if (!(method.Invoke(this, new object[] { name }) is ICommandConfigurator result)) - { - throw new CommandConfigurationException("Invoking AddCommand returned null."); - } - - return result; - } - - IBranchConfigurator IUnsafeConfigurator.AddBranch(string name, Type settings, Action action) - { - var command = ConfiguredCommand.FromBranch(settings, name); - - // Create the configurator. - var configuratorType = typeof(Configurator<>).MakeGenericType(settings); - if (!(Activator.CreateInstance(configuratorType, new object?[] { command, _registrar }) is IUnsafeBranchConfigurator configurator)) - { - throw new CommandConfigurationException("Could not create configurator by reflection."); - } - - action(configurator); - var added = _command.Children.AddAndReturn(command); - return new BranchConfigurator(added); - } +namespace Spectre.Console.Cli; + +internal sealed class Configurator : IUnsafeBranchConfigurator, IConfigurator + where TSettings : CommandSettings +{ + private readonly ConfiguredCommand _command; + private readonly ITypeRegistrar? _registrar; + + public Configurator(ConfiguredCommand command, ITypeRegistrar? registrar) + { + _command = command; + _registrar = registrar; + } + + public void SetDescription(string description) + { + _command.Description = description; + } + + public void AddExample(string[] args) + { + _command.Examples.Add(args); + } + + public void SetDefaultCommand() + where TDefaultCommand : class, ICommandLimiter + { + var defaultCommand = ConfiguredCommand.FromType( + CliConstants.DefaultCommandName, isDefaultCommand: true); + + _command.Children.Add(defaultCommand); + } + + public void HideBranch() + { + _command.IsHidden = true; + } + + public ICommandConfigurator AddCommand(string name) + where TCommand : class, ICommandLimiter + { + var command = ConfiguredCommand.FromType(name, isDefaultCommand: false); + var configurator = new CommandConfigurator(command); + + _command.Children.Add(command); + return configurator; + } + + public ICommandConfigurator AddDelegate(string name, Func func) + where TDerivedSettings : TSettings + { + var command = ConfiguredCommand.FromDelegate( + name, (context, settings) => Task.FromResult(func(context, (TDerivedSettings)settings))); + + _command.Children.Add(command); + return new CommandConfigurator(command); + } + + public ICommandConfigurator AddAsyncDelegate(string name, Func> func) + where TDerivedSettings : TSettings + { + var command = ConfiguredCommand.FromDelegate( + name, (context, settings) => func(context, (TDerivedSettings)settings)); + + _command.Children.Add(command); + return new CommandConfigurator(command); + } + + public IBranchConfigurator AddBranch(string name, Action> action) + where TDerivedSettings : TSettings + { + var command = ConfiguredCommand.FromBranch(name); + action(new Configurator(command, _registrar)); + var added = _command.Children.AddAndReturn(command); + return new BranchConfigurator(added); + } + + ICommandConfigurator IUnsafeConfigurator.AddCommand(string name, Type command) + { + var method = GetType().GetMethod("AddCommand"); + if (method == null) + { + throw new CommandConfigurationException("Could not find AddCommand by reflection."); + } + + method = method.MakeGenericMethod(command); + + if (!(method.Invoke(this, new object[] { name }) is ICommandConfigurator result)) + { + throw new CommandConfigurationException("Invoking AddCommand returned null."); + } + + return result; + } + + IBranchConfigurator IUnsafeConfigurator.AddBranch(string name, Type settings, Action action) + { + var command = ConfiguredCommand.FromBranch(settings, name); + + // Create the configurator. + var configuratorType = typeof(Configurator<>).MakeGenericType(settings); + if (!(Activator.CreateInstance(configuratorType, new object?[] { command, _registrar }) is IUnsafeBranchConfigurator configurator)) + { + throw new CommandConfigurationException("Could not create configurator by reflection."); + } + + action(configurator); + var added = _command.Children.AddAndReturn(command); + return new BranchConfigurator(added); + } } \ No newline at end of file diff --git a/src/Spectre.Console.Cli/Internal/Configuration/ConfiguredCommand.cs b/src/Spectre.Console.Cli/Internal/Configuration/ConfiguredCommand.cs index fbc022ea9..e39663f1f 100644 --- a/src/Spectre.Console.Cli/Internal/Configuration/ConfiguredCommand.cs +++ b/src/Spectre.Console.Cli/Internal/Configuration/ConfiguredCommand.cs @@ -8,7 +8,7 @@ internal sealed class ConfiguredCommand public object? Data { get; set; } public Type? CommandType { get; } public Type SettingsType { get; } - public Func? Delegate { get; } + public Func>? Delegate { get; } public bool IsDefaultCommand { get; } public bool IsHidden { get; set; } @@ -19,7 +19,7 @@ private ConfiguredCommand( string name, Type? commandType, Type settingsType, - Func? @delegate, + Func>? @delegate, bool isDefaultCommand) { Name = name; @@ -27,10 +27,10 @@ private ConfiguredCommand( CommandType = commandType; SettingsType = settingsType; Delegate = @delegate; - IsDefaultCommand = isDefaultCommand; - + IsDefaultCommand = isDefaultCommand; + // Default commands are always created as hidden. - IsHidden = IsDefaultCommand; + IsHidden = IsDefaultCommand; Children = new List(); Examples = new List(); @@ -60,8 +60,8 @@ public static ConfiguredCommand FromType(string name, bool isDefaultCo } public static ConfiguredCommand FromDelegate( - string name, Func? @delegate = null) - where TSettings : CommandSettings + string name, Func>? @delegate = null) + where TSettings : CommandSettings { return new ConfiguredCommand(name, null, typeof(TSettings), @delegate, false); } diff --git a/src/Spectre.Console.Cli/Internal/DelegateCommand.cs b/src/Spectre.Console.Cli/Internal/DelegateCommand.cs index ba66c6de6..4786fdd43 100644 --- a/src/Spectre.Console.Cli/Internal/DelegateCommand.cs +++ b/src/Spectre.Console.Cli/Internal/DelegateCommand.cs @@ -2,16 +2,16 @@ namespace Spectre.Console.Cli; internal sealed class DelegateCommand : ICommand { - private readonly Func _func; + private readonly Func> _func; - public DelegateCommand(Func func) + public DelegateCommand(Func> func) { _func = func; } public Task Execute(CommandContext context, CommandSettings settings) { - return Task.FromResult(_func(context, settings)); + return _func(context, settings); } public ValidationResult Validate(CommandContext context, CommandSettings settings) diff --git a/src/Spectre.Console.Cli/Internal/Modelling/CommandInfo.cs b/src/Spectre.Console.Cli/Internal/Modelling/CommandInfo.cs index a50b4718c..4152dc6d9 100644 --- a/src/Spectre.Console.Cli/Internal/Modelling/CommandInfo.cs +++ b/src/Spectre.Console.Cli/Internal/Modelling/CommandInfo.cs @@ -1,14 +1,14 @@ namespace Spectre.Console.Cli; internal sealed class CommandInfo : ICommandContainer -{ +{ public string Name { get; } public HashSet Aliases { get; } public string? Description { get; } public object? Data { get; } public Type? CommandType { get; } public Type SettingsType { get; } - public Func? Delegate { get; } + public Func>? Delegate { get; } public bool IsDefaultCommand { get; } public CommandInfo? Parent { get; } public IList Children { get; } @@ -16,11 +16,11 @@ internal sealed class CommandInfo : ICommandContainer public IList Examples { get; } public bool IsBranch => CommandType == null && Delegate == null; - IList ICommandContainer.Commands => Children; - + IList ICommandContainer.Commands => Children; + // only branches can have a default command - public CommandInfo? DefaultCommand => IsBranch ? Children.FirstOrDefault(c => c.IsDefaultCommand) : null; - public bool IsHidden { get; } + public CommandInfo? DefaultCommand => IsBranch ? Children.FirstOrDefault(c => c.IsDefaultCommand) : null; + public bool IsHidden { get; } public CommandInfo(CommandInfo? parent, ConfiguredCommand prototype) { diff --git a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.cs b/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.cs index 5d2276453..fed3504ce 100644 --- a/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.cs +++ b/test/Spectre.Console.Cli.Tests/Unit/CommandAppTests.cs @@ -1127,6 +1127,37 @@ public void Should_Execute_Delegate_Command_At_Root_Level() // When var result = app.Run(new[] { "foo", "4", "12" }); + // Then + result.ShouldBe(1); + dog.ShouldNotBeNull(); + dog.Age.ShouldBe(12); + dog.Legs.ShouldBe(4); + data.ShouldBe(2); + } + + [Fact] + public async void Should_Execute_Async_Delegate_Command_At_Root_Level() + { + // Given + var dog = default(DogSettings); + var data = 0; + + var app = new CommandApp(); + app.Configure(config => + { + config.PropagateExceptions(); + config.AddAsyncDelegate( + "foo", (context, settings) => + { + dog = settings; + data = (int)context.Data; + return Task.FromResult(1); + }).WithData(2); + }); + + // When + var result = await app.RunAsync(new[] { "foo", "4", "12" }); + // Then result.ShouldBe(1); dog.ShouldNotBeNull(); @@ -1161,6 +1192,40 @@ public void Should_Execute_Nested_Delegate_Command() // When var result = app.Run(new[] { "foo", "4", "bar", "12" }); + // Then + result.ShouldBe(1); + dog.ShouldNotBeNull(); + dog.Age.ShouldBe(12); + dog.Legs.ShouldBe(4); + data.ShouldBe(2); + } + + [Fact] + public async void Should_Execute_Nested_Async_Delegate_Command() + { + // Given + var dog = default(DogSettings); + var data = 0; + + var app = new CommandApp(); + app.Configure(config => + { + config.PropagateExceptions(); + config.AddBranch("foo", foo => + { + foo.AddAsyncDelegate( + "bar", (context, settings) => + { + dog = settings; + data = (int)context.Data; + return Task.FromResult(1); + }).WithData(2); + }); + }); + + // When + var result = await app.RunAsync(new[] { "foo", "4", "bar", "12" }); + // Then result.ShouldBe(1); dog.ShouldNotBeNull();