diff --git a/Avalonia.sln b/Avalonia.sln index 207f673c26..5a6f0d473c 100644 --- a/Avalonia.sln +++ b/Avalonia.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 +# Visual Studio Version 18 +VisualStudioVersion = 18.4.11519.219 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Base", "src\Avalonia.Base\Avalonia.Base.csproj", "{B09B78D8-9B26-48B0-9149-D64A2F120F3F}" EndProject @@ -201,13 +201,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution CONTRIBUTING.md = CONTRIBUTING.md Directory.Build.props = Directory.Build.props Directory.Build.targets = Directory.Build.targets + Directory.Packages.props = Directory.Packages.props dirs.proj = dirs.proj global.json = global.json licence.md = licence.md NOTICE.md = NOTICE.md NuGet.Config = NuGet.Config readme.md = readme.md - Directory.Packages.props = Directory.Packages.props EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Avalonia.Generators", "src\tools\Avalonia.Generators\Avalonia.Generators.csproj", "{DDA28789-C21A-4654-86CE-D01E81F095C5}" @@ -284,392 +284,1178 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.FreeDesktop.AtSpi" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.DBus.Generators", "src\tools\Avalonia.DBus.Generators\Avalonia.DBus.Generators.csproj", "{98A16FFD-0C99-4665-AC64-DC17E86879A2}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ControlGallery.WinUI", "samples\ControlGallery.WinUI\ControlGallery.WinUI.csproj", "{1B99CF0D-85B8-5386-EE88-A7BA65281F7F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Avalonia.WinUI", "src\Windows\Avalonia.WinUI\Avalonia.WinUI.csproj", "{3E66DE97-B578-4752-92D0-496A3124C947}" +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 {B09B78D8-9B26-48B0-9149-D64A2F120F3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B09B78D8-9B26-48B0-9149-D64A2F120F3F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B09B78D8-9B26-48B0-9149-D64A2F120F3F}.Debug|x64.ActiveCfg = Debug|Any CPU + {B09B78D8-9B26-48B0-9149-D64A2F120F3F}.Debug|x64.Build.0 = Debug|Any CPU + {B09B78D8-9B26-48B0-9149-D64A2F120F3F}.Debug|x86.ActiveCfg = Debug|Any CPU + {B09B78D8-9B26-48B0-9149-D64A2F120F3F}.Debug|x86.Build.0 = Debug|Any CPU {B09B78D8-9B26-48B0-9149-D64A2F120F3F}.Release|Any CPU.ActiveCfg = Release|Any CPU {B09B78D8-9B26-48B0-9149-D64A2F120F3F}.Release|Any CPU.Build.0 = Release|Any CPU + {B09B78D8-9B26-48B0-9149-D64A2F120F3F}.Release|x64.ActiveCfg = Release|Any CPU + {B09B78D8-9B26-48B0-9149-D64A2F120F3F}.Release|x64.Build.0 = Release|Any CPU + {B09B78D8-9B26-48B0-9149-D64A2F120F3F}.Release|x86.ActiveCfg = Release|Any CPU + {B09B78D8-9B26-48B0-9149-D64A2F120F3F}.Release|x86.Build.0 = Release|Any CPU {811A76CF-1CF6-440F-963B-BBE31BD72A82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {811A76CF-1CF6-440F-963B-BBE31BD72A82}.Debug|Any CPU.Build.0 = Debug|Any CPU + {811A76CF-1CF6-440F-963B-BBE31BD72A82}.Debug|x64.ActiveCfg = Debug|Any CPU + {811A76CF-1CF6-440F-963B-BBE31BD72A82}.Debug|x64.Build.0 = Debug|Any CPU + {811A76CF-1CF6-440F-963B-BBE31BD72A82}.Debug|x86.ActiveCfg = Debug|Any CPU + {811A76CF-1CF6-440F-963B-BBE31BD72A82}.Debug|x86.Build.0 = Debug|Any CPU {811A76CF-1CF6-440F-963B-BBE31BD72A82}.Release|Any CPU.ActiveCfg = Release|Any CPU {811A76CF-1CF6-440F-963B-BBE31BD72A82}.Release|Any CPU.Build.0 = Release|Any CPU + {811A76CF-1CF6-440F-963B-BBE31BD72A82}.Release|x64.ActiveCfg = Release|Any CPU + {811A76CF-1CF6-440F-963B-BBE31BD72A82}.Release|x64.Build.0 = Release|Any CPU + {811A76CF-1CF6-440F-963B-BBE31BD72A82}.Release|x86.ActiveCfg = Release|Any CPU + {811A76CF-1CF6-440F-963B-BBE31BD72A82}.Release|x86.Build.0 = Release|Any CPU {D2221C82-4A25-4583-9B43-D791E3F6820C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D2221C82-4A25-4583-9B43-D791E3F6820C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D2221C82-4A25-4583-9B43-D791E3F6820C}.Debug|x64.ActiveCfg = Debug|Any CPU + {D2221C82-4A25-4583-9B43-D791E3F6820C}.Debug|x64.Build.0 = Debug|Any CPU + {D2221C82-4A25-4583-9B43-D791E3F6820C}.Debug|x86.ActiveCfg = Debug|Any CPU + {D2221C82-4A25-4583-9B43-D791E3F6820C}.Debug|x86.Build.0 = Debug|Any CPU {D2221C82-4A25-4583-9B43-D791E3F6820C}.Release|Any CPU.ActiveCfg = Release|Any CPU {D2221C82-4A25-4583-9B43-D791E3F6820C}.Release|Any CPU.Build.0 = Release|Any CPU + {D2221C82-4A25-4583-9B43-D791E3F6820C}.Release|x64.ActiveCfg = Release|Any CPU + {D2221C82-4A25-4583-9B43-D791E3F6820C}.Release|x64.Build.0 = Release|Any CPU + {D2221C82-4A25-4583-9B43-D791E3F6820C}.Release|x86.ActiveCfg = Release|Any CPU + {D2221C82-4A25-4583-9B43-D791E3F6820C}.Release|x86.Build.0 = Release|Any CPU {3E10A5FA-E8DA-48B1-AD44-6A5B6CB7750F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3E10A5FA-E8DA-48B1-AD44-6A5B6CB7750F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3E10A5FA-E8DA-48B1-AD44-6A5B6CB7750F}.Debug|x64.ActiveCfg = Debug|Any CPU + {3E10A5FA-E8DA-48B1-AD44-6A5B6CB7750F}.Debug|x64.Build.0 = Debug|Any CPU + {3E10A5FA-E8DA-48B1-AD44-6A5B6CB7750F}.Debug|x86.ActiveCfg = Debug|Any CPU + {3E10A5FA-E8DA-48B1-AD44-6A5B6CB7750F}.Debug|x86.Build.0 = Debug|Any CPU {3E10A5FA-E8DA-48B1-AD44-6A5B6CB7750F}.Release|Any CPU.ActiveCfg = Release|Any CPU {3E10A5FA-E8DA-48B1-AD44-6A5B6CB7750F}.Release|Any CPU.Build.0 = Release|Any CPU + {3E10A5FA-E8DA-48B1-AD44-6A5B6CB7750F}.Release|x64.ActiveCfg = Release|Any CPU + {3E10A5FA-E8DA-48B1-AD44-6A5B6CB7750F}.Release|x64.Build.0 = Release|Any CPU + {3E10A5FA-E8DA-48B1-AD44-6A5B6CB7750F}.Release|x86.ActiveCfg = Release|Any CPU + {3E10A5FA-E8DA-48B1-AD44-6A5B6CB7750F}.Release|x86.Build.0 = Release|Any CPU {5CCB5571-7C30-4E7D-967D-0E2158EBD91F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5CCB5571-7C30-4E7D-967D-0E2158EBD91F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5CCB5571-7C30-4E7D-967D-0E2158EBD91F}.Debug|x64.ActiveCfg = Debug|Any CPU + {5CCB5571-7C30-4E7D-967D-0E2158EBD91F}.Debug|x64.Build.0 = Debug|Any CPU + {5CCB5571-7C30-4E7D-967D-0E2158EBD91F}.Debug|x86.ActiveCfg = Debug|Any CPU + {5CCB5571-7C30-4E7D-967D-0E2158EBD91F}.Debug|x86.Build.0 = Debug|Any CPU {5CCB5571-7C30-4E7D-967D-0E2158EBD91F}.Release|Any CPU.ActiveCfg = Release|Any CPU {5CCB5571-7C30-4E7D-967D-0E2158EBD91F}.Release|Any CPU.Build.0 = Release|Any CPU + {5CCB5571-7C30-4E7D-967D-0E2158EBD91F}.Release|x64.ActiveCfg = Release|Any CPU + {5CCB5571-7C30-4E7D-967D-0E2158EBD91F}.Release|x64.Build.0 = Release|Any CPU + {5CCB5571-7C30-4E7D-967D-0E2158EBD91F}.Release|x86.ActiveCfg = Release|Any CPU + {5CCB5571-7C30-4E7D-967D-0E2158EBD91F}.Release|x86.Build.0 = Release|Any CPU {2905FF23-53FB-45E6-AA49-6AF47A172056}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2905FF23-53FB-45E6-AA49-6AF47A172056}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2905FF23-53FB-45E6-AA49-6AF47A172056}.Debug|x64.ActiveCfg = Debug|Any CPU + {2905FF23-53FB-45E6-AA49-6AF47A172056}.Debug|x64.Build.0 = Debug|Any CPU + {2905FF23-53FB-45E6-AA49-6AF47A172056}.Debug|x86.ActiveCfg = Debug|Any CPU + {2905FF23-53FB-45E6-AA49-6AF47A172056}.Debug|x86.Build.0 = Debug|Any CPU {2905FF23-53FB-45E6-AA49-6AF47A172056}.Release|Any CPU.ActiveCfg = Release|Any CPU {2905FF23-53FB-45E6-AA49-6AF47A172056}.Release|Any CPU.Build.0 = Release|Any CPU + {2905FF23-53FB-45E6-AA49-6AF47A172056}.Release|x64.ActiveCfg = Release|Any CPU + {2905FF23-53FB-45E6-AA49-6AF47A172056}.Release|x64.Build.0 = Release|Any CPU + {2905FF23-53FB-45E6-AA49-6AF47A172056}.Release|x86.ActiveCfg = Release|Any CPU + {2905FF23-53FB-45E6-AA49-6AF47A172056}.Release|x86.Build.0 = Release|Any CPU {99135EAB-653D-47E4-A378-C96E1278CA44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {99135EAB-653D-47E4-A378-C96E1278CA44}.Debug|Any CPU.Build.0 = Debug|Any CPU + {99135EAB-653D-47E4-A378-C96E1278CA44}.Debug|x64.ActiveCfg = Debug|Any CPU + {99135EAB-653D-47E4-A378-C96E1278CA44}.Debug|x64.Build.0 = Debug|Any CPU + {99135EAB-653D-47E4-A378-C96E1278CA44}.Debug|x86.ActiveCfg = Debug|Any CPU + {99135EAB-653D-47E4-A378-C96E1278CA44}.Debug|x86.Build.0 = Debug|Any CPU {99135EAB-653D-47E4-A378-C96E1278CA44}.Release|Any CPU.ActiveCfg = Release|Any CPU {99135EAB-653D-47E4-A378-C96E1278CA44}.Release|Any CPU.Build.0 = Release|Any CPU + {99135EAB-653D-47E4-A378-C96E1278CA44}.Release|x64.ActiveCfg = Release|Any CPU + {99135EAB-653D-47E4-A378-C96E1278CA44}.Release|x64.Build.0 = Release|Any CPU + {99135EAB-653D-47E4-A378-C96E1278CA44}.Release|x86.ActiveCfg = Release|Any CPU + {99135EAB-653D-47E4-A378-C96E1278CA44}.Release|x86.Build.0 = Release|Any CPU {3E53A01A-B331-47F3-B828-4A5717E77A24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3E53A01A-B331-47F3-B828-4A5717E77A24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3E53A01A-B331-47F3-B828-4A5717E77A24}.Debug|x64.ActiveCfg = Debug|Any CPU + {3E53A01A-B331-47F3-B828-4A5717E77A24}.Debug|x64.Build.0 = Debug|Any CPU + {3E53A01A-B331-47F3-B828-4A5717E77A24}.Debug|x86.ActiveCfg = Debug|Any CPU + {3E53A01A-B331-47F3-B828-4A5717E77A24}.Debug|x86.Build.0 = Debug|Any CPU {3E53A01A-B331-47F3-B828-4A5717E77A24}.Release|Any CPU.ActiveCfg = Release|Any CPU {3E53A01A-B331-47F3-B828-4A5717E77A24}.Release|Any CPU.Build.0 = Release|Any CPU + {3E53A01A-B331-47F3-B828-4A5717E77A24}.Release|x64.ActiveCfg = Release|Any CPU + {3E53A01A-B331-47F3-B828-4A5717E77A24}.Release|x64.Build.0 = Release|Any CPU + {3E53A01A-B331-47F3-B828-4A5717E77A24}.Release|x86.ActiveCfg = Release|Any CPU + {3E53A01A-B331-47F3-B828-4A5717E77A24}.Release|x86.Build.0 = Release|Any CPU {6417E941-21BC-467B-A771-0DE389353CE6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6417E941-21BC-467B-A771-0DE389353CE6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6417E941-21BC-467B-A771-0DE389353CE6}.Debug|x64.ActiveCfg = Debug|Any CPU + {6417E941-21BC-467B-A771-0DE389353CE6}.Debug|x64.Build.0 = Debug|Any CPU + {6417E941-21BC-467B-A771-0DE389353CE6}.Debug|x86.ActiveCfg = Debug|Any CPU + {6417E941-21BC-467B-A771-0DE389353CE6}.Debug|x86.Build.0 = Debug|Any CPU {6417E941-21BC-467B-A771-0DE389353CE6}.Release|Any CPU.ActiveCfg = Release|Any CPU {6417E941-21BC-467B-A771-0DE389353CE6}.Release|Any CPU.Build.0 = Release|Any CPU + {6417E941-21BC-467B-A771-0DE389353CE6}.Release|x64.ActiveCfg = Release|Any CPU + {6417E941-21BC-467B-A771-0DE389353CE6}.Release|x64.Build.0 = Release|Any CPU + {6417E941-21BC-467B-A771-0DE389353CE6}.Release|x86.ActiveCfg = Release|Any CPU + {6417E941-21BC-467B-A771-0DE389353CE6}.Release|x86.Build.0 = Release|Any CPU {8EF392D5-1416-45AA-9956-7CBBC3229E8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8EF392D5-1416-45AA-9956-7CBBC3229E8A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8EF392D5-1416-45AA-9956-7CBBC3229E8A}.Debug|x64.ActiveCfg = Debug|Any CPU + {8EF392D5-1416-45AA-9956-7CBBC3229E8A}.Debug|x64.Build.0 = Debug|Any CPU + {8EF392D5-1416-45AA-9956-7CBBC3229E8A}.Debug|x86.ActiveCfg = Debug|Any CPU + {8EF392D5-1416-45AA-9956-7CBBC3229E8A}.Debug|x86.Build.0 = Debug|Any CPU {8EF392D5-1416-45AA-9956-7CBBC3229E8A}.Release|Any CPU.ActiveCfg = Release|Any CPU {8EF392D5-1416-45AA-9956-7CBBC3229E8A}.Release|Any CPU.Build.0 = Release|Any CPU + {8EF392D5-1416-45AA-9956-7CBBC3229E8A}.Release|x64.ActiveCfg = Release|Any CPU + {8EF392D5-1416-45AA-9956-7CBBC3229E8A}.Release|x64.Build.0 = Release|Any CPU + {8EF392D5-1416-45AA-9956-7CBBC3229E8A}.Release|x86.ActiveCfg = Release|Any CPU + {8EF392D5-1416-45AA-9956-7CBBC3229E8A}.Release|x86.Build.0 = Release|Any CPU {08B3E6B9-1CD5-443C-9F61-6D49D1C5F162}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {08B3E6B9-1CD5-443C-9F61-6D49D1C5F162}.Debug|Any CPU.Build.0 = Debug|Any CPU + {08B3E6B9-1CD5-443C-9F61-6D49D1C5F162}.Debug|x64.ActiveCfg = Debug|Any CPU + {08B3E6B9-1CD5-443C-9F61-6D49D1C5F162}.Debug|x64.Build.0 = Debug|Any CPU + {08B3E6B9-1CD5-443C-9F61-6D49D1C5F162}.Debug|x86.ActiveCfg = Debug|Any CPU + {08B3E6B9-1CD5-443C-9F61-6D49D1C5F162}.Debug|x86.Build.0 = Debug|Any CPU {08B3E6B9-1CD5-443C-9F61-6D49D1C5F162}.Release|Any CPU.ActiveCfg = Release|Any CPU {08B3E6B9-1CD5-443C-9F61-6D49D1C5F162}.Release|Any CPU.Build.0 = Release|Any CPU + {08B3E6B9-1CD5-443C-9F61-6D49D1C5F162}.Release|x64.ActiveCfg = Release|Any CPU + {08B3E6B9-1CD5-443C-9F61-6D49D1C5F162}.Release|x64.Build.0 = Release|Any CPU + {08B3E6B9-1CD5-443C-9F61-6D49D1C5F162}.Release|x86.ActiveCfg = Release|Any CPU + {08B3E6B9-1CD5-443C-9F61-6D49D1C5F162}.Release|x86.Build.0 = Release|Any CPU {7B92AF71-6287-4693-9DCB-BD5B6E927E23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7B92AF71-6287-4693-9DCB-BD5B6E927E23}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7B92AF71-6287-4693-9DCB-BD5B6E927E23}.Debug|x64.ActiveCfg = Debug|Any CPU + {7B92AF71-6287-4693-9DCB-BD5B6E927E23}.Debug|x64.Build.0 = Debug|Any CPU + {7B92AF71-6287-4693-9DCB-BD5B6E927E23}.Debug|x86.ActiveCfg = Debug|Any CPU + {7B92AF71-6287-4693-9DCB-BD5B6E927E23}.Debug|x86.Build.0 = Debug|Any CPU {7B92AF71-6287-4693-9DCB-BD5B6E927E23}.Release|Any CPU.ActiveCfg = Release|Any CPU {7B92AF71-6287-4693-9DCB-BD5B6E927E23}.Release|Any CPU.Build.0 = Release|Any CPU + {7B92AF71-6287-4693-9DCB-BD5B6E927E23}.Release|x64.ActiveCfg = Release|Any CPU + {7B92AF71-6287-4693-9DCB-BD5B6E927E23}.Release|x64.Build.0 = Release|Any CPU + {7B92AF71-6287-4693-9DCB-BD5B6E927E23}.Release|x86.ActiveCfg = Release|Any CPU + {7B92AF71-6287-4693-9DCB-BD5B6E927E23}.Release|x86.Build.0 = Release|Any CPU {4488AD85-1495-4809-9AA4-DDFE0A48527E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4488AD85-1495-4809-9AA4-DDFE0A48527E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4488AD85-1495-4809-9AA4-DDFE0A48527E}.Debug|x64.ActiveCfg = Debug|Any CPU + {4488AD85-1495-4809-9AA4-DDFE0A48527E}.Debug|x64.Build.0 = Debug|Any CPU + {4488AD85-1495-4809-9AA4-DDFE0A48527E}.Debug|x86.ActiveCfg = Debug|Any CPU + {4488AD85-1495-4809-9AA4-DDFE0A48527E}.Debug|x86.Build.0 = Debug|Any CPU {4488AD85-1495-4809-9AA4-DDFE0A48527E}.Release|Any CPU.ActiveCfg = Release|Any CPU {4488AD85-1495-4809-9AA4-DDFE0A48527E}.Release|Any CPU.Build.0 = Release|Any CPU + {4488AD85-1495-4809-9AA4-DDFE0A48527E}.Release|x64.ActiveCfg = Release|Any CPU + {4488AD85-1495-4809-9AA4-DDFE0A48527E}.Release|x64.Build.0 = Release|Any CPU + {4488AD85-1495-4809-9AA4-DDFE0A48527E}.Release|x86.ActiveCfg = Release|Any CPU + {4488AD85-1495-4809-9AA4-DDFE0A48527E}.Release|x86.Build.0 = Release|Any CPU {E1AA3DBF-9056-4530-9376-18119A7A3FFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E1AA3DBF-9056-4530-9376-18119A7A3FFE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E1AA3DBF-9056-4530-9376-18119A7A3FFE}.Debug|x64.ActiveCfg = Debug|Any CPU + {E1AA3DBF-9056-4530-9376-18119A7A3FFE}.Debug|x64.Build.0 = Debug|Any CPU + {E1AA3DBF-9056-4530-9376-18119A7A3FFE}.Debug|x86.ActiveCfg = Debug|Any CPU + {E1AA3DBF-9056-4530-9376-18119A7A3FFE}.Debug|x86.Build.0 = Debug|Any CPU {E1AA3DBF-9056-4530-9376-18119A7A3FFE}.Release|Any CPU.ActiveCfg = Release|Any CPU {E1AA3DBF-9056-4530-9376-18119A7A3FFE}.Release|Any CPU.Build.0 = Release|Any CPU + {E1AA3DBF-9056-4530-9376-18119A7A3FFE}.Release|x64.ActiveCfg = Release|Any CPU + {E1AA3DBF-9056-4530-9376-18119A7A3FFE}.Release|x64.Build.0 = Release|Any CPU + {E1AA3DBF-9056-4530-9376-18119A7A3FFE}.Release|x86.ActiveCfg = Release|Any CPU + {E1AA3DBF-9056-4530-9376-18119A7A3FFE}.Release|x86.Build.0 = Release|Any CPU {88060192-33D5-4932-B0F9-8BD2763E857D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {88060192-33D5-4932-B0F9-8BD2763E857D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {88060192-33D5-4932-B0F9-8BD2763E857D}.Debug|x64.ActiveCfg = Debug|Any CPU + {88060192-33D5-4932-B0F9-8BD2763E857D}.Debug|x64.Build.0 = Debug|Any CPU + {88060192-33D5-4932-B0F9-8BD2763E857D}.Debug|x86.ActiveCfg = Debug|Any CPU + {88060192-33D5-4932-B0F9-8BD2763E857D}.Debug|x86.Build.0 = Debug|Any CPU {88060192-33D5-4932-B0F9-8BD2763E857D}.Release|Any CPU.ActiveCfg = Release|Any CPU {88060192-33D5-4932-B0F9-8BD2763E857D}.Release|Any CPU.Build.0 = Release|Any CPU + {88060192-33D5-4932-B0F9-8BD2763E857D}.Release|x64.ActiveCfg = Release|Any CPU + {88060192-33D5-4932-B0F9-8BD2763E857D}.Release|x64.Build.0 = Release|Any CPU + {88060192-33D5-4932-B0F9-8BD2763E857D}.Release|x86.ActiveCfg = Release|Any CPU + {88060192-33D5-4932-B0F9-8BD2763E857D}.Release|x86.Build.0 = Release|Any CPU {410AC439-81A1-4EB5-B5E9-6A7FC6B77F4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {410AC439-81A1-4EB5-B5E9-6A7FC6B77F4B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {410AC439-81A1-4EB5-B5E9-6A7FC6B77F4B}.Debug|x64.ActiveCfg = Debug|Any CPU + {410AC439-81A1-4EB5-B5E9-6A7FC6B77F4B}.Debug|x64.Build.0 = Debug|Any CPU + {410AC439-81A1-4EB5-B5E9-6A7FC6B77F4B}.Debug|x86.ActiveCfg = Debug|Any CPU + {410AC439-81A1-4EB5-B5E9-6A7FC6B77F4B}.Debug|x86.Build.0 = Debug|Any CPU {410AC439-81A1-4EB5-B5E9-6A7FC6B77F4B}.Release|Any CPU.ActiveCfg = Release|Any CPU {410AC439-81A1-4EB5-B5E9-6A7FC6B77F4B}.Release|Any CPU.Build.0 = Release|Any CPU + {410AC439-81A1-4EB5-B5E9-6A7FC6B77F4B}.Release|x64.ActiveCfg = Release|Any CPU + {410AC439-81A1-4EB5-B5E9-6A7FC6B77F4B}.Release|x64.Build.0 = Release|Any CPU + {410AC439-81A1-4EB5-B5E9-6A7FC6B77F4B}.Release|x86.ActiveCfg = Release|Any CPU + {410AC439-81A1-4EB5-B5E9-6A7FC6B77F4B}.Release|x86.Build.0 = Release|Any CPU {799A7BB5-3C2C-48B6-85A7-406A12C420DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {799A7BB5-3C2C-48B6-85A7-406A12C420DA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {799A7BB5-3C2C-48B6-85A7-406A12C420DA}.Debug|x64.ActiveCfg = Debug|Any CPU + {799A7BB5-3C2C-48B6-85A7-406A12C420DA}.Debug|x64.Build.0 = Debug|Any CPU + {799A7BB5-3C2C-48B6-85A7-406A12C420DA}.Debug|x86.ActiveCfg = Debug|Any CPU + {799A7BB5-3C2C-48B6-85A7-406A12C420DA}.Debug|x86.Build.0 = Debug|Any CPU {799A7BB5-3C2C-48B6-85A7-406A12C420DA}.Release|Any CPU.ActiveCfg = Release|Any CPU {799A7BB5-3C2C-48B6-85A7-406A12C420DA}.Release|Any CPU.Build.0 = Release|Any CPU + {799A7BB5-3C2C-48B6-85A7-406A12C420DA}.Release|x64.ActiveCfg = Release|Any CPU + {799A7BB5-3C2C-48B6-85A7-406A12C420DA}.Release|x64.Build.0 = Release|Any CPU + {799A7BB5-3C2C-48B6-85A7-406A12C420DA}.Release|x86.ActiveCfg = Release|Any CPU + {799A7BB5-3C2C-48B6-85A7-406A12C420DA}.Release|x86.Build.0 = Release|Any CPU {D0A739B9-3C68-4BA6-A328-41606954B6BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D0A739B9-3C68-4BA6-A328-41606954B6BD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D0A739B9-3C68-4BA6-A328-41606954B6BD}.Debug|x64.ActiveCfg = Debug|Any CPU + {D0A739B9-3C68-4BA6-A328-41606954B6BD}.Debug|x64.Build.0 = Debug|Any CPU + {D0A739B9-3C68-4BA6-A328-41606954B6BD}.Debug|x86.ActiveCfg = Debug|Any CPU + {D0A739B9-3C68-4BA6-A328-41606954B6BD}.Debug|x86.Build.0 = Debug|Any CPU {D0A739B9-3C68-4BA6-A328-41606954B6BD}.Release|Any CPU.ActiveCfg = Release|Any CPU {D0A739B9-3C68-4BA6-A328-41606954B6BD}.Release|Any CPU.Build.0 = Release|Any CPU + {D0A739B9-3C68-4BA6-A328-41606954B6BD}.Release|x64.ActiveCfg = Release|Any CPU + {D0A739B9-3C68-4BA6-A328-41606954B6BD}.Release|x64.Build.0 = Release|Any CPU + {D0A739B9-3C68-4BA6-A328-41606954B6BD}.Release|x86.ActiveCfg = Release|Any CPU + {D0A739B9-3C68-4BA6-A328-41606954B6BD}.Release|x86.Build.0 = Release|Any CPU {2B888490-D14A-4BCA-AB4B-48676FA93C9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2B888490-D14A-4BCA-AB4B-48676FA93C9B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2B888490-D14A-4BCA-AB4B-48676FA93C9B}.Debug|x64.ActiveCfg = Debug|Any CPU + {2B888490-D14A-4BCA-AB4B-48676FA93C9B}.Debug|x64.Build.0 = Debug|Any CPU + {2B888490-D14A-4BCA-AB4B-48676FA93C9B}.Debug|x86.ActiveCfg = Debug|Any CPU + {2B888490-D14A-4BCA-AB4B-48676FA93C9B}.Debug|x86.Build.0 = Debug|Any CPU {2B888490-D14A-4BCA-AB4B-48676FA93C9B}.Release|Any CPU.ActiveCfg = Release|Any CPU {2B888490-D14A-4BCA-AB4B-48676FA93C9B}.Release|Any CPU.Build.0 = Release|Any CPU + {2B888490-D14A-4BCA-AB4B-48676FA93C9B}.Release|x64.ActiveCfg = Release|Any CPU + {2B888490-D14A-4BCA-AB4B-48676FA93C9B}.Release|x64.Build.0 = Release|Any CPU + {2B888490-D14A-4BCA-AB4B-48676FA93C9B}.Release|x86.ActiveCfg = Release|Any CPU + {2B888490-D14A-4BCA-AB4B-48676FA93C9B}.Release|x86.Build.0 = Release|Any CPU {F1381F98-4D24-409A-A6C5-1C5B1E08BB08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F1381F98-4D24-409A-A6C5-1C5B1E08BB08}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F1381F98-4D24-409A-A6C5-1C5B1E08BB08}.Debug|x64.ActiveCfg = Debug|Any CPU + {F1381F98-4D24-409A-A6C5-1C5B1E08BB08}.Debug|x64.Build.0 = Debug|Any CPU + {F1381F98-4D24-409A-A6C5-1C5B1E08BB08}.Debug|x86.ActiveCfg = Debug|Any CPU + {F1381F98-4D24-409A-A6C5-1C5B1E08BB08}.Debug|x86.Build.0 = Debug|Any CPU {F1381F98-4D24-409A-A6C5-1C5B1E08BB08}.Release|Any CPU.ActiveCfg = Release|Any CPU {F1381F98-4D24-409A-A6C5-1C5B1E08BB08}.Release|Any CPU.Build.0 = Release|Any CPU + {F1381F98-4D24-409A-A6C5-1C5B1E08BB08}.Release|x64.ActiveCfg = Release|Any CPU + {F1381F98-4D24-409A-A6C5-1C5B1E08BB08}.Release|x64.Build.0 = Release|Any CPU + {F1381F98-4D24-409A-A6C5-1C5B1E08BB08}.Release|x86.ActiveCfg = Release|Any CPU + {F1381F98-4D24-409A-A6C5-1C5B1E08BB08}.Release|x86.Build.0 = Release|Any CPU {FBCAF3D0-2808-4934-8E96-3F607594517B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FBCAF3D0-2808-4934-8E96-3F607594517B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FBCAF3D0-2808-4934-8E96-3F607594517B}.Debug|x64.ActiveCfg = Debug|Any CPU + {FBCAF3D0-2808-4934-8E96-3F607594517B}.Debug|x64.Build.0 = Debug|Any CPU + {FBCAF3D0-2808-4934-8E96-3F607594517B}.Debug|x86.ActiveCfg = Debug|Any CPU + {FBCAF3D0-2808-4934-8E96-3F607594517B}.Debug|x86.Build.0 = Debug|Any CPU {FBCAF3D0-2808-4934-8E96-3F607594517B}.Release|Any CPU.ActiveCfg = Release|Any CPU {FBCAF3D0-2808-4934-8E96-3F607594517B}.Release|Any CPU.Build.0 = Release|Any CPU + {FBCAF3D0-2808-4934-8E96-3F607594517B}.Release|x64.ActiveCfg = Release|Any CPU + {FBCAF3D0-2808-4934-8E96-3F607594517B}.Release|x64.Build.0 = Release|Any CPU + {FBCAF3D0-2808-4934-8E96-3F607594517B}.Release|x86.ActiveCfg = Release|Any CPU + {FBCAF3D0-2808-4934-8E96-3F607594517B}.Release|x86.Build.0 = Release|Any CPU {F1FDC5B0-4654-416F-AE69-E3E9BBD87801}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F1FDC5B0-4654-416F-AE69-E3E9BBD87801}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F1FDC5B0-4654-416F-AE69-E3E9BBD87801}.Debug|x64.ActiveCfg = Debug|Any CPU + {F1FDC5B0-4654-416F-AE69-E3E9BBD87801}.Debug|x64.Build.0 = Debug|Any CPU + {F1FDC5B0-4654-416F-AE69-E3E9BBD87801}.Debug|x86.ActiveCfg = Debug|Any CPU + {F1FDC5B0-4654-416F-AE69-E3E9BBD87801}.Debug|x86.Build.0 = Debug|Any CPU {F1FDC5B0-4654-416F-AE69-E3E9BBD87801}.Release|Any CPU.ActiveCfg = Release|Any CPU {F1FDC5B0-4654-416F-AE69-E3E9BBD87801}.Release|Any CPU.Build.0 = Release|Any CPU + {F1FDC5B0-4654-416F-AE69-E3E9BBD87801}.Release|x64.ActiveCfg = Release|Any CPU + {F1FDC5B0-4654-416F-AE69-E3E9BBD87801}.Release|x64.Build.0 = Release|Any CPU + {F1FDC5B0-4654-416F-AE69-E3E9BBD87801}.Release|x86.ActiveCfg = Release|Any CPU + {F1FDC5B0-4654-416F-AE69-E3E9BBD87801}.Release|x86.Build.0 = Release|Any CPU {29132311-1848-4FD6-AE0C-4FF841151BD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {29132311-1848-4FD6-AE0C-4FF841151BD3}.Debug|Any CPU.Build.0 = Debug|Any CPU {29132311-1848-4FD6-AE0C-4FF841151BD3}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {29132311-1848-4FD6-AE0C-4FF841151BD3}.Debug|x64.ActiveCfg = Debug|Any CPU + {29132311-1848-4FD6-AE0C-4FF841151BD3}.Debug|x64.Build.0 = Debug|Any CPU + {29132311-1848-4FD6-AE0C-4FF841151BD3}.Debug|x86.ActiveCfg = Debug|Any CPU + {29132311-1848-4FD6-AE0C-4FF841151BD3}.Debug|x86.Build.0 = Debug|Any CPU {29132311-1848-4FD6-AE0C-4FF841151BD3}.Release|Any CPU.ActiveCfg = Release|Any CPU {29132311-1848-4FD6-AE0C-4FF841151BD3}.Release|Any CPU.Build.0 = Release|Any CPU {29132311-1848-4FD6-AE0C-4FF841151BD3}.Release|Any CPU.Deploy.0 = Release|Any CPU + {29132311-1848-4FD6-AE0C-4FF841151BD3}.Release|x64.ActiveCfg = Release|Any CPU + {29132311-1848-4FD6-AE0C-4FF841151BD3}.Release|x64.Build.0 = Release|Any CPU + {29132311-1848-4FD6-AE0C-4FF841151BD3}.Release|x86.ActiveCfg = Release|Any CPU + {29132311-1848-4FD6-AE0C-4FF841151BD3}.Release|x86.Build.0 = Release|Any CPU {7D2D3083-71DD-4CC9-8907-39A0D86FB322}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7D2D3083-71DD-4CC9-8907-39A0D86FB322}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7D2D3083-71DD-4CC9-8907-39A0D86FB322}.Debug|x64.ActiveCfg = Debug|Any CPU + {7D2D3083-71DD-4CC9-8907-39A0D86FB322}.Debug|x64.Build.0 = Debug|Any CPU + {7D2D3083-71DD-4CC9-8907-39A0D86FB322}.Debug|x86.ActiveCfg = Debug|Any CPU + {7D2D3083-71DD-4CC9-8907-39A0D86FB322}.Debug|x86.Build.0 = Debug|Any CPU {7D2D3083-71DD-4CC9-8907-39A0D86FB322}.Release|Any CPU.ActiveCfg = Release|Any CPU {7D2D3083-71DD-4CC9-8907-39A0D86FB322}.Release|Any CPU.Build.0 = Release|Any CPU + {7D2D3083-71DD-4CC9-8907-39A0D86FB322}.Release|x64.ActiveCfg = Release|Any CPU + {7D2D3083-71DD-4CC9-8907-39A0D86FB322}.Release|x64.Build.0 = Release|Any CPU + {7D2D3083-71DD-4CC9-8907-39A0D86FB322}.Release|x86.ActiveCfg = Release|Any CPU + {7D2D3083-71DD-4CC9-8907-39A0D86FB322}.Release|x86.Build.0 = Release|Any CPU {854568D5-13D1-4B4F-B50D-534DC7EFD3C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {854568D5-13D1-4B4F-B50D-534DC7EFD3C9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {854568D5-13D1-4B4F-B50D-534DC7EFD3C9}.Debug|x64.ActiveCfg = Debug|Any CPU + {854568D5-13D1-4B4F-B50D-534DC7EFD3C9}.Debug|x64.Build.0 = Debug|Any CPU + {854568D5-13D1-4B4F-B50D-534DC7EFD3C9}.Debug|x86.ActiveCfg = Debug|Any CPU + {854568D5-13D1-4B4F-B50D-534DC7EFD3C9}.Debug|x86.Build.0 = Debug|Any CPU {854568D5-13D1-4B4F-B50D-534DC7EFD3C9}.Release|Any CPU.ActiveCfg = Release|Any CPU {854568D5-13D1-4B4F-B50D-534DC7EFD3C9}.Release|Any CPU.Build.0 = Release|Any CPU + {854568D5-13D1-4B4F-B50D-534DC7EFD3C9}.Release|x64.ActiveCfg = Release|Any CPU + {854568D5-13D1-4B4F-B50D-534DC7EFD3C9}.Release|x64.Build.0 = Release|Any CPU + {854568D5-13D1-4B4F-B50D-534DC7EFD3C9}.Release|x86.ActiveCfg = Release|Any CPU + {854568D5-13D1-4B4F-B50D-534DC7EFD3C9}.Release|x86.Build.0 = Release|Any CPU {CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}.Debug|x64.ActiveCfg = Debug|Any CPU + {CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}.Debug|x64.Build.0 = Debug|Any CPU + {CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}.Debug|x86.ActiveCfg = Debug|Any CPU + {CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}.Debug|x86.Build.0 = Debug|Any CPU {CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}.Release|Any CPU.ActiveCfg = Release|Any CPU {CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}.Release|Any CPU.Build.0 = Release|Any CPU + {CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}.Release|x64.ActiveCfg = Release|Any CPU + {CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}.Release|x64.Build.0 = Release|Any CPU + {CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}.Release|x86.ActiveCfg = Release|Any CPU + {CBC4FF2F-92D4-420B-BE21-9FE0B930B04E}.Release|x86.Build.0 = Release|Any CPU {E1582370-37B3-403C-917F-8209551B1634}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E1582370-37B3-403C-917F-8209551B1634}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E1582370-37B3-403C-917F-8209551B1634}.Debug|x64.ActiveCfg = Debug|Any CPU + {E1582370-37B3-403C-917F-8209551B1634}.Debug|x64.Build.0 = Debug|Any CPU + {E1582370-37B3-403C-917F-8209551B1634}.Debug|x86.ActiveCfg = Debug|Any CPU + {E1582370-37B3-403C-917F-8209551B1634}.Debug|x86.Build.0 = Debug|Any CPU {E1582370-37B3-403C-917F-8209551B1634}.Release|Any CPU.ActiveCfg = Release|Any CPU {E1582370-37B3-403C-917F-8209551B1634}.Release|Any CPU.Build.0 = Release|Any CPU + {E1582370-37B3-403C-917F-8209551B1634}.Release|x64.ActiveCfg = Release|Any CPU + {E1582370-37B3-403C-917F-8209551B1634}.Release|x64.Build.0 = Release|Any CPU + {E1582370-37B3-403C-917F-8209551B1634}.Release|x86.ActiveCfg = Release|Any CPU + {E1582370-37B3-403C-917F-8209551B1634}.Release|x86.Build.0 = Release|Any CPU {D78A720C-C0C6-478B-8564-F167F9BDD01B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D78A720C-C0C6-478B-8564-F167F9BDD01B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D78A720C-C0C6-478B-8564-F167F9BDD01B}.Debug|x64.ActiveCfg = Debug|Any CPU + {D78A720C-C0C6-478B-8564-F167F9BDD01B}.Debug|x64.Build.0 = Debug|Any CPU + {D78A720C-C0C6-478B-8564-F167F9BDD01B}.Debug|x86.ActiveCfg = Debug|Any CPU + {D78A720C-C0C6-478B-8564-F167F9BDD01B}.Debug|x86.Build.0 = Debug|Any CPU {D78A720C-C0C6-478B-8564-F167F9BDD01B}.Release|Any CPU.ActiveCfg = Release|Any CPU {D78A720C-C0C6-478B-8564-F167F9BDD01B}.Release|Any CPU.Build.0 = Release|Any CPU + {D78A720C-C0C6-478B-8564-F167F9BDD01B}.Release|x64.ActiveCfg = Release|Any CPU + {D78A720C-C0C6-478B-8564-F167F9BDD01B}.Release|x64.Build.0 = Release|Any CPU + {D78A720C-C0C6-478B-8564-F167F9BDD01B}.Release|x86.ActiveCfg = Release|Any CPU + {D78A720C-C0C6-478B-8564-F167F9BDD01B}.Release|x86.Build.0 = Release|Any CPU {050CC912-FF49-4A8B-B534-9544017446DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {050CC912-FF49-4A8B-B534-9544017446DD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {050CC912-FF49-4A8B-B534-9544017446DD}.Debug|x64.ActiveCfg = Debug|Any CPU + {050CC912-FF49-4A8B-B534-9544017446DD}.Debug|x64.Build.0 = Debug|Any CPU + {050CC912-FF49-4A8B-B534-9544017446DD}.Debug|x86.ActiveCfg = Debug|Any CPU + {050CC912-FF49-4A8B-B534-9544017446DD}.Debug|x86.Build.0 = Debug|Any CPU {050CC912-FF49-4A8B-B534-9544017446DD}.Release|Any CPU.ActiveCfg = Release|Any CPU {050CC912-FF49-4A8B-B534-9544017446DD}.Release|Any CPU.Build.0 = Release|Any CPU + {050CC912-FF49-4A8B-B534-9544017446DD}.Release|x64.ActiveCfg = Release|Any CPU + {050CC912-FF49-4A8B-B534-9544017446DD}.Release|x64.Build.0 = Release|Any CPU + {050CC912-FF49-4A8B-B534-9544017446DD}.Release|x86.ActiveCfg = Release|Any CPU + {050CC912-FF49-4A8B-B534-9544017446DD}.Release|x86.Build.0 = Release|Any CPU {E1240B49-7B4B-4371-A00E-068778C5CF0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E1240B49-7B4B-4371-A00E-068778C5CF0B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E1240B49-7B4B-4371-A00E-068778C5CF0B}.Debug|x64.ActiveCfg = Debug|Any CPU + {E1240B49-7B4B-4371-A00E-068778C5CF0B}.Debug|x64.Build.0 = Debug|Any CPU + {E1240B49-7B4B-4371-A00E-068778C5CF0B}.Debug|x86.ActiveCfg = Debug|Any CPU + {E1240B49-7B4B-4371-A00E-068778C5CF0B}.Debug|x86.Build.0 = Debug|Any CPU {E1240B49-7B4B-4371-A00E-068778C5CF0B}.Release|Any CPU.ActiveCfg = Release|Any CPU {E1240B49-7B4B-4371-A00E-068778C5CF0B}.Release|Any CPU.Build.0 = Release|Any CPU + {E1240B49-7B4B-4371-A00E-068778C5CF0B}.Release|x64.ActiveCfg = Release|Any CPU + {E1240B49-7B4B-4371-A00E-068778C5CF0B}.Release|x64.Build.0 = Release|Any CPU + {E1240B49-7B4B-4371-A00E-068778C5CF0B}.Release|x86.ActiveCfg = Release|Any CPU + {E1240B49-7B4B-4371-A00E-068778C5CF0B}.Release|x86.Build.0 = Release|Any CPU {7CCAEFC4-135D-401D-BDDD-896B9B7D3569}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7CCAEFC4-135D-401D-BDDD-896B9B7D3569}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7CCAEFC4-135D-401D-BDDD-896B9B7D3569}.Debug|x64.ActiveCfg = Debug|Any CPU + {7CCAEFC4-135D-401D-BDDD-896B9B7D3569}.Debug|x64.Build.0 = Debug|Any CPU + {7CCAEFC4-135D-401D-BDDD-896B9B7D3569}.Debug|x86.ActiveCfg = Debug|Any CPU + {7CCAEFC4-135D-401D-BDDD-896B9B7D3569}.Debug|x86.Build.0 = Debug|Any CPU {7CCAEFC4-135D-401D-BDDD-896B9B7D3569}.Release|Any CPU.ActiveCfg = Release|Any CPU {7CCAEFC4-135D-401D-BDDD-896B9B7D3569}.Release|Any CPU.Build.0 = Release|Any CPU + {7CCAEFC4-135D-401D-BDDD-896B9B7D3569}.Release|x64.ActiveCfg = Release|Any CPU + {7CCAEFC4-135D-401D-BDDD-896B9B7D3569}.Release|x64.Build.0 = Release|Any CPU + {7CCAEFC4-135D-401D-BDDD-896B9B7D3569}.Release|x86.ActiveCfg = Release|Any CPU + {7CCAEFC4-135D-401D-BDDD-896B9B7D3569}.Release|x86.Build.0 = Release|Any CPU {12A91A62-C064-42CA-9A8C-A1272F354388}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {12A91A62-C064-42CA-9A8C-A1272F354388}.Debug|Any CPU.Build.0 = Debug|Any CPU + {12A91A62-C064-42CA-9A8C-A1272F354388}.Debug|x64.ActiveCfg = Debug|Any CPU + {12A91A62-C064-42CA-9A8C-A1272F354388}.Debug|x64.Build.0 = Debug|Any CPU + {12A91A62-C064-42CA-9A8C-A1272F354388}.Debug|x86.ActiveCfg = Debug|Any CPU + {12A91A62-C064-42CA-9A8C-A1272F354388}.Debug|x86.Build.0 = Debug|Any CPU {12A91A62-C064-42CA-9A8C-A1272F354388}.Release|Any CPU.ActiveCfg = Release|Any CPU {12A91A62-C064-42CA-9A8C-A1272F354388}.Release|Any CPU.Build.0 = Release|Any CPU + {12A91A62-C064-42CA-9A8C-A1272F354388}.Release|x64.ActiveCfg = Release|Any CPU + {12A91A62-C064-42CA-9A8C-A1272F354388}.Release|x64.Build.0 = Release|Any CPU + {12A91A62-C064-42CA-9A8C-A1272F354388}.Release|x86.ActiveCfg = Release|Any CPU + {12A91A62-C064-42CA-9A8C-A1272F354388}.Release|x86.Build.0 = Release|Any CPU {D49233F8-F29C-47DD-9975-C4C9E4502720}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D49233F8-F29C-47DD-9975-C4C9E4502720}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Debug|x64.ActiveCfg = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Debug|x64.Build.0 = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Debug|x86.ActiveCfg = Debug|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Debug|x86.Build.0 = Debug|Any CPU {D49233F8-F29C-47DD-9975-C4C9E4502720}.Release|Any CPU.ActiveCfg = Release|Any CPU {D49233F8-F29C-47DD-9975-C4C9E4502720}.Release|Any CPU.Build.0 = Release|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Release|x64.ActiveCfg = Release|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Release|x64.Build.0 = Release|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Release|x86.ActiveCfg = Release|Any CPU + {D49233F8-F29C-47DD-9975-C4C9E4502720}.Release|x86.Build.0 = Release|Any CPU {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Debug|x64.ActiveCfg = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Debug|x64.Build.0 = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Debug|x86.ActiveCfg = Debug|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Debug|x86.Build.0 = Debug|Any CPU {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Release|Any CPU.ActiveCfg = Release|Any CPU {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Release|Any CPU.Build.0 = Release|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Release|x64.ActiveCfg = Release|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Release|x64.Build.0 = Release|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Release|x86.ActiveCfg = Release|Any CPU + {3C471044-3640-45E3-B1B2-16D2FF8399EE}.Release|x86.Build.0 = Release|Any CPU {BF28998D-072C-439A-AFBB-2FE5021241E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BF28998D-072C-439A-AFBB-2FE5021241E0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BF28998D-072C-439A-AFBB-2FE5021241E0}.Debug|x64.ActiveCfg = Debug|Any CPU + {BF28998D-072C-439A-AFBB-2FE5021241E0}.Debug|x64.Build.0 = Debug|Any CPU + {BF28998D-072C-439A-AFBB-2FE5021241E0}.Debug|x86.ActiveCfg = Debug|Any CPU + {BF28998D-072C-439A-AFBB-2FE5021241E0}.Debug|x86.Build.0 = Debug|Any CPU {BF28998D-072C-439A-AFBB-2FE5021241E0}.Release|Any CPU.ActiveCfg = Release|Any CPU {BF28998D-072C-439A-AFBB-2FE5021241E0}.Release|Any CPU.Build.0 = Release|Any CPU + {BF28998D-072C-439A-AFBB-2FE5021241E0}.Release|x64.ActiveCfg = Release|Any CPU + {BF28998D-072C-439A-AFBB-2FE5021241E0}.Release|x64.Build.0 = Release|Any CPU + {BF28998D-072C-439A-AFBB-2FE5021241E0}.Release|x86.ActiveCfg = Release|Any CPU + {BF28998D-072C-439A-AFBB-2FE5021241E0}.Release|x86.Build.0 = Release|Any CPU {3F00BC43-5095-477F-93D8-E65B08179A00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3F00BC43-5095-477F-93D8-E65B08179A00}.Debug|x64.ActiveCfg = Debug|Any CPU + {3F00BC43-5095-477F-93D8-E65B08179A00}.Debug|x64.Build.0 = Debug|Any CPU + {3F00BC43-5095-477F-93D8-E65B08179A00}.Debug|x86.ActiveCfg = Debug|Any CPU + {3F00BC43-5095-477F-93D8-E65B08179A00}.Debug|x86.Build.0 = Debug|Any CPU {3F00BC43-5095-477F-93D8-E65B08179A00}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3F00BC43-5095-477F-93D8-E65B08179A00}.Release|x64.ActiveCfg = Release|Any CPU + {3F00BC43-5095-477F-93D8-E65B08179A00}.Release|x64.Build.0 = Release|Any CPU + {3F00BC43-5095-477F-93D8-E65B08179A00}.Release|x86.ActiveCfg = Release|Any CPU + {3F00BC43-5095-477F-93D8-E65B08179A00}.Release|x86.Build.0 = Release|Any CPU {41B02319-965D-4945-8005-C1A3D1224165}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {41B02319-965D-4945-8005-C1A3D1224165}.Debug|Any CPU.Build.0 = Debug|Any CPU + {41B02319-965D-4945-8005-C1A3D1224165}.Debug|x64.ActiveCfg = Debug|Any CPU + {41B02319-965D-4945-8005-C1A3D1224165}.Debug|x64.Build.0 = Debug|Any CPU + {41B02319-965D-4945-8005-C1A3D1224165}.Debug|x86.ActiveCfg = Debug|Any CPU + {41B02319-965D-4945-8005-C1A3D1224165}.Debug|x86.Build.0 = Debug|Any CPU {41B02319-965D-4945-8005-C1A3D1224165}.Release|Any CPU.ActiveCfg = Release|Any CPU {41B02319-965D-4945-8005-C1A3D1224165}.Release|Any CPU.Build.0 = Release|Any CPU + {41B02319-965D-4945-8005-C1A3D1224165}.Release|x64.ActiveCfg = Release|Any CPU + {41B02319-965D-4945-8005-C1A3D1224165}.Release|x64.Build.0 = Release|Any CPU + {41B02319-965D-4945-8005-C1A3D1224165}.Release|x86.ActiveCfg = Release|Any CPU + {41B02319-965D-4945-8005-C1A3D1224165}.Release|x86.Build.0 = Release|Any CPU {D775DECB-4E00-4ED5-A75A-5FCE58ADFF0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D775DECB-4E00-4ED5-A75A-5FCE58ADFF0B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D775DECB-4E00-4ED5-A75A-5FCE58ADFF0B}.Debug|x64.ActiveCfg = Debug|Any CPU + {D775DECB-4E00-4ED5-A75A-5FCE58ADFF0B}.Debug|x64.Build.0 = Debug|Any CPU + {D775DECB-4E00-4ED5-A75A-5FCE58ADFF0B}.Debug|x86.ActiveCfg = Debug|Any CPU + {D775DECB-4E00-4ED5-A75A-5FCE58ADFF0B}.Debug|x86.Build.0 = Debug|Any CPU {D775DECB-4E00-4ED5-A75A-5FCE58ADFF0B}.Release|Any CPU.ActiveCfg = Release|Any CPU {D775DECB-4E00-4ED5-A75A-5FCE58ADFF0B}.Release|Any CPU.Build.0 = Release|Any CPU + {D775DECB-4E00-4ED5-A75A-5FCE58ADFF0B}.Release|x64.ActiveCfg = Release|Any CPU + {D775DECB-4E00-4ED5-A75A-5FCE58ADFF0B}.Release|x64.Build.0 = Release|Any CPU + {D775DECB-4E00-4ED5-A75A-5FCE58ADFF0B}.Release|x86.ActiveCfg = Release|Any CPU + {D775DECB-4E00-4ED5-A75A-5FCE58ADFF0B}.Release|x86.Build.0 = Release|Any CPU {4D55985A-1EE2-4F25-AD39-6EA8BC04F8FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4D55985A-1EE2-4F25-AD39-6EA8BC04F8FB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4D55985A-1EE2-4F25-AD39-6EA8BC04F8FB}.Debug|x64.ActiveCfg = Debug|Any CPU + {4D55985A-1EE2-4F25-AD39-6EA8BC04F8FB}.Debug|x64.Build.0 = Debug|Any CPU + {4D55985A-1EE2-4F25-AD39-6EA8BC04F8FB}.Debug|x86.ActiveCfg = Debug|Any CPU + {4D55985A-1EE2-4F25-AD39-6EA8BC04F8FB}.Debug|x86.Build.0 = Debug|Any CPU {4D55985A-1EE2-4F25-AD39-6EA8BC04F8FB}.Release|Any CPU.ActiveCfg = Release|Any CPU {4D55985A-1EE2-4F25-AD39-6EA8BC04F8FB}.Release|Any CPU.Build.0 = Release|Any CPU + {4D55985A-1EE2-4F25-AD39-6EA8BC04F8FB}.Release|x64.ActiveCfg = Release|Any CPU + {4D55985A-1EE2-4F25-AD39-6EA8BC04F8FB}.Release|x64.Build.0 = Release|Any CPU + {4D55985A-1EE2-4F25-AD39-6EA8BC04F8FB}.Release|x86.ActiveCfg = Release|Any CPU + {4D55985A-1EE2-4F25-AD39-6EA8BC04F8FB}.Release|x86.Build.0 = Release|Any CPU {4D36CEC8-53F2-40A5-9A37-79AAE356E2DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4D36CEC8-53F2-40A5-9A37-79AAE356E2DA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4D36CEC8-53F2-40A5-9A37-79AAE356E2DA}.Debug|x64.ActiveCfg = Debug|Any CPU + {4D36CEC8-53F2-40A5-9A37-79AAE356E2DA}.Debug|x64.Build.0 = Debug|Any CPU + {4D36CEC8-53F2-40A5-9A37-79AAE356E2DA}.Debug|x86.ActiveCfg = Debug|Any CPU + {4D36CEC8-53F2-40A5-9A37-79AAE356E2DA}.Debug|x86.Build.0 = Debug|Any CPU {4D36CEC8-53F2-40A5-9A37-79AAE356E2DA}.Release|Any CPU.ActiveCfg = Release|Any CPU {4D36CEC8-53F2-40A5-9A37-79AAE356E2DA}.Release|Any CPU.Build.0 = Release|Any CPU + {4D36CEC8-53F2-40A5-9A37-79AAE356E2DA}.Release|x64.ActiveCfg = Release|Any CPU + {4D36CEC8-53F2-40A5-9A37-79AAE356E2DA}.Release|x64.Build.0 = Release|Any CPU + {4D36CEC8-53F2-40A5-9A37-79AAE356E2DA}.Release|x86.ActiveCfg = Release|Any CPU + {4D36CEC8-53F2-40A5-9A37-79AAE356E2DA}.Release|x86.Build.0 = Release|Any CPU {C42D2FC1-A531-4ED4-84B9-89AEC7C962FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C42D2FC1-A531-4ED4-84B9-89AEC7C962FC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C42D2FC1-A531-4ED4-84B9-89AEC7C962FC}.Debug|x64.ActiveCfg = Debug|Any CPU + {C42D2FC1-A531-4ED4-84B9-89AEC7C962FC}.Debug|x64.Build.0 = Debug|Any CPU + {C42D2FC1-A531-4ED4-84B9-89AEC7C962FC}.Debug|x86.ActiveCfg = Debug|Any CPU + {C42D2FC1-A531-4ED4-84B9-89AEC7C962FC}.Debug|x86.Build.0 = Debug|Any CPU {C42D2FC1-A531-4ED4-84B9-89AEC7C962FC}.Release|Any CPU.ActiveCfg = Release|Any CPU {C42D2FC1-A531-4ED4-84B9-89AEC7C962FC}.Release|Any CPU.Build.0 = Release|Any CPU + {C42D2FC1-A531-4ED4-84B9-89AEC7C962FC}.Release|x64.ActiveCfg = Release|Any CPU + {C42D2FC1-A531-4ED4-84B9-89AEC7C962FC}.Release|x64.Build.0 = Release|Any CPU + {C42D2FC1-A531-4ED4-84B9-89AEC7C962FC}.Release|x86.ActiveCfg = Release|Any CPU + {C42D2FC1-A531-4ED4-84B9-89AEC7C962FC}.Release|x86.Build.0 = Release|Any CPU {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Debug|x64.ActiveCfg = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Debug|x64.Build.0 = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Debug|x86.ActiveCfg = Debug|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Debug|x86.Build.0 = Debug|Any CPU {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Release|Any CPU.ActiveCfg = Release|Any CPU {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Release|Any CPU.Build.0 = Release|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Release|x64.ActiveCfg = Release|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Release|x64.Build.0 = Release|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Release|x86.ActiveCfg = Release|Any CPU + {8C89950F-F5D9-47FC-8066-CBC1EC3DF8FC}.Release|x86.Build.0 = Release|Any CPU {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Debug|x64.ActiveCfg = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Debug|x64.Build.0 = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Debug|x86.ActiveCfg = Debug|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Debug|x86.Build.0 = Debug|Any CPU {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Release|Any CPU.ActiveCfg = Release|Any CPU {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Release|Any CPU.Build.0 = Release|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Release|x64.ActiveCfg = Release|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Release|x64.Build.0 = Release|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Release|x86.ActiveCfg = Release|Any CPU + {B859AE7C-F34F-4A9E-88AE-E0E7229FDE1E}.Release|x86.Build.0 = Release|Any CPU {909A8CBD-7D0E-42FD-B841-022AD8925820}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {909A8CBD-7D0E-42FD-B841-022AD8925820}.Debug|Any CPU.Build.0 = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Debug|x64.ActiveCfg = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Debug|x64.Build.0 = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Debug|x86.ActiveCfg = Debug|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Debug|x86.Build.0 = Debug|Any CPU {909A8CBD-7D0E-42FD-B841-022AD8925820}.Release|Any CPU.ActiveCfg = Release|Any CPU {909A8CBD-7D0E-42FD-B841-022AD8925820}.Release|Any CPU.Build.0 = Release|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Release|x64.ActiveCfg = Release|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Release|x64.Build.0 = Release|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Release|x86.ActiveCfg = Release|Any CPU + {909A8CBD-7D0E-42FD-B841-022AD8925820}.Release|x86.Build.0 = Release|Any CPU {11BE52AF-E2DD-4CF0-B19A-05285ACAF571}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {11BE52AF-E2DD-4CF0-B19A-05285ACAF571}.Debug|Any CPU.Build.0 = Debug|Any CPU + {11BE52AF-E2DD-4CF0-B19A-05285ACAF571}.Debug|x64.ActiveCfg = Debug|Any CPU + {11BE52AF-E2DD-4CF0-B19A-05285ACAF571}.Debug|x64.Build.0 = Debug|Any CPU + {11BE52AF-E2DD-4CF0-B19A-05285ACAF571}.Debug|x86.ActiveCfg = Debug|Any CPU + {11BE52AF-E2DD-4CF0-B19A-05285ACAF571}.Debug|x86.Build.0 = Debug|Any CPU {11BE52AF-E2DD-4CF0-B19A-05285ACAF571}.Release|Any CPU.ActiveCfg = Release|Any CPU {11BE52AF-E2DD-4CF0-B19A-05285ACAF571}.Release|Any CPU.Build.0 = Release|Any CPU + {11BE52AF-E2DD-4CF0-B19A-05285ACAF571}.Release|x64.ActiveCfg = Release|Any CPU + {11BE52AF-E2DD-4CF0-B19A-05285ACAF571}.Release|x64.Build.0 = Release|Any CPU + {11BE52AF-E2DD-4CF0-B19A-05285ACAF571}.Release|x86.ActiveCfg = Release|Any CPU + {11BE52AF-E2DD-4CF0-B19A-05285ACAF571}.Release|x86.Build.0 = Release|Any CPU {FE2F3E5E-1E34-4972-8DC1-5C2C588E5ECE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FE2F3E5E-1E34-4972-8DC1-5C2C588E5ECE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FE2F3E5E-1E34-4972-8DC1-5C2C588E5ECE}.Debug|x64.ActiveCfg = Debug|Any CPU + {FE2F3E5E-1E34-4972-8DC1-5C2C588E5ECE}.Debug|x64.Build.0 = Debug|Any CPU + {FE2F3E5E-1E34-4972-8DC1-5C2C588E5ECE}.Debug|x86.ActiveCfg = Debug|Any CPU + {FE2F3E5E-1E34-4972-8DC1-5C2C588E5ECE}.Debug|x86.Build.0 = Debug|Any CPU {FE2F3E5E-1E34-4972-8DC1-5C2C588E5ECE}.Release|Any CPU.ActiveCfg = Release|Any CPU {FE2F3E5E-1E34-4972-8DC1-5C2C588E5ECE}.Release|Any CPU.Build.0 = Release|Any CPU + {FE2F3E5E-1E34-4972-8DC1-5C2C588E5ECE}.Release|x64.ActiveCfg = Release|Any CPU + {FE2F3E5E-1E34-4972-8DC1-5C2C588E5ECE}.Release|x64.Build.0 = Release|Any CPU + {FE2F3E5E-1E34-4972-8DC1-5C2C588E5ECE}.Release|x86.ActiveCfg = Release|Any CPU + {FE2F3E5E-1E34-4972-8DC1-5C2C588E5ECE}.Release|x86.Build.0 = Release|Any CPU {BC594FD5-4AF2-409E-A1E6-04123F54D7C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BC594FD5-4AF2-409E-A1E6-04123F54D7C5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BC594FD5-4AF2-409E-A1E6-04123F54D7C5}.Debug|x64.ActiveCfg = Debug|Any CPU + {BC594FD5-4AF2-409E-A1E6-04123F54D7C5}.Debug|x64.Build.0 = Debug|Any CPU + {BC594FD5-4AF2-409E-A1E6-04123F54D7C5}.Debug|x86.ActiveCfg = Debug|Any CPU + {BC594FD5-4AF2-409E-A1E6-04123F54D7C5}.Debug|x86.Build.0 = Debug|Any CPU {BC594FD5-4AF2-409E-A1E6-04123F54D7C5}.Release|Any CPU.ActiveCfg = Release|Any CPU {BC594FD5-4AF2-409E-A1E6-04123F54D7C5}.Release|Any CPU.Build.0 = Release|Any CPU + {BC594FD5-4AF2-409E-A1E6-04123F54D7C5}.Release|x64.ActiveCfg = Release|Any CPU + {BC594FD5-4AF2-409E-A1E6-04123F54D7C5}.Release|x64.Build.0 = Release|Any CPU + {BC594FD5-4AF2-409E-A1E6-04123F54D7C5}.Release|x86.ActiveCfg = Release|Any CPU + {BC594FD5-4AF2-409E-A1E6-04123F54D7C5}.Release|x86.Build.0 = Release|Any CPU {676D6BFD-029D-4E43-BFC7-3892265CE251}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {676D6BFD-029D-4E43-BFC7-3892265CE251}.Debug|Any CPU.Build.0 = Debug|Any CPU + {676D6BFD-029D-4E43-BFC7-3892265CE251}.Debug|x64.ActiveCfg = Debug|Any CPU + {676D6BFD-029D-4E43-BFC7-3892265CE251}.Debug|x64.Build.0 = Debug|Any CPU + {676D6BFD-029D-4E43-BFC7-3892265CE251}.Debug|x86.ActiveCfg = Debug|Any CPU + {676D6BFD-029D-4E43-BFC7-3892265CE251}.Debug|x86.Build.0 = Debug|Any CPU {676D6BFD-029D-4E43-BFC7-3892265CE251}.Release|Any CPU.ActiveCfg = Release|Any CPU {676D6BFD-029D-4E43-BFC7-3892265CE251}.Release|Any CPU.Build.0 = Release|Any CPU + {676D6BFD-029D-4E43-BFC7-3892265CE251}.Release|x64.ActiveCfg = Release|Any CPU + {676D6BFD-029D-4E43-BFC7-3892265CE251}.Release|x64.Build.0 = Release|Any CPU + {676D6BFD-029D-4E43-BFC7-3892265CE251}.Release|x86.ActiveCfg = Release|Any CPU + {676D6BFD-029D-4E43-BFC7-3892265CE251}.Release|x86.Build.0 = Release|Any CPU {CE728F96-A593-462C-B8D4-1D5AFFDB5B4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CE728F96-A593-462C-B8D4-1D5AFFDB5B4F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CE728F96-A593-462C-B8D4-1D5AFFDB5B4F}.Debug|x64.ActiveCfg = Debug|Any CPU + {CE728F96-A593-462C-B8D4-1D5AFFDB5B4F}.Debug|x64.Build.0 = Debug|Any CPU + {CE728F96-A593-462C-B8D4-1D5AFFDB5B4F}.Debug|x86.ActiveCfg = Debug|Any CPU + {CE728F96-A593-462C-B8D4-1D5AFFDB5B4F}.Debug|x86.Build.0 = Debug|Any CPU {CE728F96-A593-462C-B8D4-1D5AFFDB5B4F}.Release|Any CPU.ActiveCfg = Release|Any CPU {CE728F96-A593-462C-B8D4-1D5AFFDB5B4F}.Release|Any CPU.Build.0 = Release|Any CPU + {CE728F96-A593-462C-B8D4-1D5AFFDB5B4F}.Release|x64.ActiveCfg = Release|Any CPU + {CE728F96-A593-462C-B8D4-1D5AFFDB5B4F}.Release|x64.Build.0 = Release|Any CPU + {CE728F96-A593-462C-B8D4-1D5AFFDB5B4F}.Release|x86.ActiveCfg = Release|Any CPU + {CE728F96-A593-462C-B8D4-1D5AFFDB5B4F}.Release|x86.Build.0 = Release|Any CPU {F2CE566B-E7F6-447A-AB1A-3F574A6FE43A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F2CE566B-E7F6-447A-AB1A-3F574A6FE43A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F2CE566B-E7F6-447A-AB1A-3F574A6FE43A}.Debug|x64.ActiveCfg = Debug|Any CPU + {F2CE566B-E7F6-447A-AB1A-3F574A6FE43A}.Debug|x64.Build.0 = Debug|Any CPU + {F2CE566B-E7F6-447A-AB1A-3F574A6FE43A}.Debug|x86.ActiveCfg = Debug|Any CPU + {F2CE566B-E7F6-447A-AB1A-3F574A6FE43A}.Debug|x86.Build.0 = Debug|Any CPU {F2CE566B-E7F6-447A-AB1A-3F574A6FE43A}.Release|Any CPU.ActiveCfg = Release|Any CPU {F2CE566B-E7F6-447A-AB1A-3F574A6FE43A}.Release|Any CPU.Build.0 = Release|Any CPU + {F2CE566B-E7F6-447A-AB1A-3F574A6FE43A}.Release|x64.ActiveCfg = Release|Any CPU + {F2CE566B-E7F6-447A-AB1A-3F574A6FE43A}.Release|x64.Build.0 = Release|Any CPU + {F2CE566B-E7F6-447A-AB1A-3F574A6FE43A}.Release|x86.ActiveCfg = Release|Any CPU + {F2CE566B-E7F6-447A-AB1A-3F574A6FE43A}.Release|x86.Build.0 = Release|Any CPU {26A98DA1-D89D-4A95-8152-349F404DA2E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {26A98DA1-D89D-4A95-8152-349F404DA2E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {26A98DA1-D89D-4A95-8152-349F404DA2E2}.Debug|x64.ActiveCfg = Debug|Any CPU + {26A98DA1-D89D-4A95-8152-349F404DA2E2}.Debug|x64.Build.0 = Debug|Any CPU + {26A98DA1-D89D-4A95-8152-349F404DA2E2}.Debug|x86.ActiveCfg = Debug|Any CPU + {26A98DA1-D89D-4A95-8152-349F404DA2E2}.Debug|x86.Build.0 = Debug|Any CPU {26A98DA1-D89D-4A95-8152-349F404DA2E2}.Release|Any CPU.ActiveCfg = Release|Any CPU {26A98DA1-D89D-4A95-8152-349F404DA2E2}.Release|Any CPU.Build.0 = Release|Any CPU + {26A98DA1-D89D-4A95-8152-349F404DA2E2}.Release|x64.ActiveCfg = Release|Any CPU + {26A98DA1-D89D-4A95-8152-349F404DA2E2}.Release|x64.Build.0 = Release|Any CPU + {26A98DA1-D89D-4A95-8152-349F404DA2E2}.Release|x86.ActiveCfg = Release|Any CPU + {26A98DA1-D89D-4A95-8152-349F404DA2E2}.Release|x86.Build.0 = Release|Any CPU {A0D0A6A4-5C72-4ADA-9B27-621C7D94F270}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A0D0A6A4-5C72-4ADA-9B27-621C7D94F270}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A0D0A6A4-5C72-4ADA-9B27-621C7D94F270}.Debug|x64.ActiveCfg = Debug|Any CPU + {A0D0A6A4-5C72-4ADA-9B27-621C7D94F270}.Debug|x64.Build.0 = Debug|Any CPU + {A0D0A6A4-5C72-4ADA-9B27-621C7D94F270}.Debug|x86.ActiveCfg = Debug|Any CPU + {A0D0A6A4-5C72-4ADA-9B27-621C7D94F270}.Debug|x86.Build.0 = Debug|Any CPU {A0D0A6A4-5C72-4ADA-9B27-621C7D94F270}.Release|Any CPU.ActiveCfg = Release|Any CPU {A0D0A6A4-5C72-4ADA-9B27-621C7D94F270}.Release|Any CPU.Build.0 = Release|Any CPU + {A0D0A6A4-5C72-4ADA-9B27-621C7D94F270}.Release|x64.ActiveCfg = Release|Any CPU + {A0D0A6A4-5C72-4ADA-9B27-621C7D94F270}.Release|x64.Build.0 = Release|Any CPU + {A0D0A6A4-5C72-4ADA-9B27-621C7D94F270}.Release|x86.ActiveCfg = Release|Any CPU + {A0D0A6A4-5C72-4ADA-9B27-621C7D94F270}.Release|x86.Build.0 = Release|Any CPU {70B9F5CC-E2F9-4314-9514-EDE762ACCC4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {70B9F5CC-E2F9-4314-9514-EDE762ACCC4B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {70B9F5CC-E2F9-4314-9514-EDE762ACCC4B}.Debug|x64.ActiveCfg = Debug|Any CPU + {70B9F5CC-E2F9-4314-9514-EDE762ACCC4B}.Debug|x64.Build.0 = Debug|Any CPU + {70B9F5CC-E2F9-4314-9514-EDE762ACCC4B}.Debug|x86.ActiveCfg = Debug|Any CPU + {70B9F5CC-E2F9-4314-9514-EDE762ACCC4B}.Debug|x86.Build.0 = Debug|Any CPU {70B9F5CC-E2F9-4314-9514-EDE762ACCC4B}.Release|Any CPU.ActiveCfg = Release|Any CPU {70B9F5CC-E2F9-4314-9514-EDE762ACCC4B}.Release|Any CPU.Build.0 = Release|Any CPU + {70B9F5CC-E2F9-4314-9514-EDE762ACCC4B}.Release|x64.ActiveCfg = Release|Any CPU + {70B9F5CC-E2F9-4314-9514-EDE762ACCC4B}.Release|x64.Build.0 = Release|Any CPU + {70B9F5CC-E2F9-4314-9514-EDE762ACCC4B}.Release|x86.ActiveCfg = Release|Any CPU + {70B9F5CC-E2F9-4314-9514-EDE762ACCC4B}.Release|x86.Build.0 = Release|Any CPU {2B390431-288C-435C-BB6B-A374033BD8D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2B390431-288C-435C-BB6B-A374033BD8D1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2B390431-288C-435C-BB6B-A374033BD8D1}.Debug|x64.ActiveCfg = Debug|Any CPU + {2B390431-288C-435C-BB6B-A374033BD8D1}.Debug|x64.Build.0 = Debug|Any CPU + {2B390431-288C-435C-BB6B-A374033BD8D1}.Debug|x86.ActiveCfg = Debug|Any CPU + {2B390431-288C-435C-BB6B-A374033BD8D1}.Debug|x86.Build.0 = Debug|Any CPU {2B390431-288C-435C-BB6B-A374033BD8D1}.Release|Any CPU.ActiveCfg = Release|Any CPU {2B390431-288C-435C-BB6B-A374033BD8D1}.Release|Any CPU.Build.0 = Release|Any CPU + {2B390431-288C-435C-BB6B-A374033BD8D1}.Release|x64.ActiveCfg = Release|Any CPU + {2B390431-288C-435C-BB6B-A374033BD8D1}.Release|x64.Build.0 = Release|Any CPU + {2B390431-288C-435C-BB6B-A374033BD8D1}.Release|x86.ActiveCfg = Release|Any CPU + {2B390431-288C-435C-BB6B-A374033BD8D1}.Release|x86.Build.0 = Release|Any CPU {7BF6C69D-FC14-43EB-9ED0-782C16F3D5D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7BF6C69D-FC14-43EB-9ED0-782C16F3D5D9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7BF6C69D-FC14-43EB-9ED0-782C16F3D5D9}.Debug|x64.ActiveCfg = Debug|Any CPU + {7BF6C69D-FC14-43EB-9ED0-782C16F3D5D9}.Debug|x64.Build.0 = Debug|Any CPU + {7BF6C69D-FC14-43EB-9ED0-782C16F3D5D9}.Debug|x86.ActiveCfg = Debug|Any CPU + {7BF6C69D-FC14-43EB-9ED0-782C16F3D5D9}.Debug|x86.Build.0 = Debug|Any CPU {7BF6C69D-FC14-43EB-9ED0-782C16F3D5D9}.Release|Any CPU.ActiveCfg = Release|Any CPU {7BF6C69D-FC14-43EB-9ED0-782C16F3D5D9}.Release|Any CPU.Build.0 = Release|Any CPU + {7BF6C69D-FC14-43EB-9ED0-782C16F3D5D9}.Release|x64.ActiveCfg = Release|Any CPU + {7BF6C69D-FC14-43EB-9ED0-782C16F3D5D9}.Release|x64.Build.0 = Release|Any CPU + {7BF6C69D-FC14-43EB-9ED0-782C16F3D5D9}.Release|x86.ActiveCfg = Release|Any CPU + {7BF6C69D-FC14-43EB-9ED0-782C16F3D5D9}.Release|x86.Build.0 = Release|Any CPU {EABE2161-989B-42BF-BD8D-1E34B20C21F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EABE2161-989B-42BF-BD8D-1E34B20C21F1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EABE2161-989B-42BF-BD8D-1E34B20C21F1}.Debug|x64.ActiveCfg = Debug|Any CPU + {EABE2161-989B-42BF-BD8D-1E34B20C21F1}.Debug|x64.Build.0 = Debug|Any CPU + {EABE2161-989B-42BF-BD8D-1E34B20C21F1}.Debug|x86.ActiveCfg = Debug|Any CPU + {EABE2161-989B-42BF-BD8D-1E34B20C21F1}.Debug|x86.Build.0 = Debug|Any CPU {EABE2161-989B-42BF-BD8D-1E34B20C21F1}.Release|Any CPU.ActiveCfg = Release|Any CPU {EABE2161-989B-42BF-BD8D-1E34B20C21F1}.Release|Any CPU.Build.0 = Release|Any CPU + {EABE2161-989B-42BF-BD8D-1E34B20C21F1}.Release|x64.ActiveCfg = Release|Any CPU + {EABE2161-989B-42BF-BD8D-1E34B20C21F1}.Release|x64.Build.0 = Release|Any CPU + {EABE2161-989B-42BF-BD8D-1E34B20C21F1}.Release|x86.ActiveCfg = Release|Any CPU + {EABE2161-989B-42BF-BD8D-1E34B20C21F1}.Release|x86.Build.0 = Release|Any CPU {1BBFAD42-B99E-47E0-B00A-A4BC6B6BB4BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1BBFAD42-B99E-47E0-B00A-A4BC6B6BB4BB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1BBFAD42-B99E-47E0-B00A-A4BC6B6BB4BB}.Debug|x64.ActiveCfg = Debug|Any CPU + {1BBFAD42-B99E-47E0-B00A-A4BC6B6BB4BB}.Debug|x64.Build.0 = Debug|Any CPU + {1BBFAD42-B99E-47E0-B00A-A4BC6B6BB4BB}.Debug|x86.ActiveCfg = Debug|Any CPU + {1BBFAD42-B99E-47E0-B00A-A4BC6B6BB4BB}.Debug|x86.Build.0 = Debug|Any CPU {1BBFAD42-B99E-47E0-B00A-A4BC6B6BB4BB}.Release|Any CPU.ActiveCfg = Release|Any CPU {1BBFAD42-B99E-47E0-B00A-A4BC6B6BB4BB}.Release|Any CPU.Build.0 = Release|Any CPU + {1BBFAD42-B99E-47E0-B00A-A4BC6B6BB4BB}.Release|x64.ActiveCfg = Release|Any CPU + {1BBFAD42-B99E-47E0-B00A-A4BC6B6BB4BB}.Release|x64.Build.0 = Release|Any CPU + {1BBFAD42-B99E-47E0-B00A-A4BC6B6BB4BB}.Release|x86.ActiveCfg = Release|Any CPU + {1BBFAD42-B99E-47E0-B00A-A4BC6B6BB4BB}.Release|x86.Build.0 = Release|Any CPU {3B8519C1-2F51-4F12-A348-120AB91D4532}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3B8519C1-2F51-4F12-A348-120AB91D4532}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3B8519C1-2F51-4F12-A348-120AB91D4532}.Debug|x64.ActiveCfg = Debug|Any CPU + {3B8519C1-2F51-4F12-A348-120AB91D4532}.Debug|x64.Build.0 = Debug|Any CPU + {3B8519C1-2F51-4F12-A348-120AB91D4532}.Debug|x86.ActiveCfg = Debug|Any CPU + {3B8519C1-2F51-4F12-A348-120AB91D4532}.Debug|x86.Build.0 = Debug|Any CPU {3B8519C1-2F51-4F12-A348-120AB91D4532}.Release|Any CPU.ActiveCfg = Release|Any CPU {3B8519C1-2F51-4F12-A348-120AB91D4532}.Release|Any CPU.Build.0 = Release|Any CPU + {3B8519C1-2F51-4F12-A348-120AB91D4532}.Release|x64.ActiveCfg = Release|Any CPU + {3B8519C1-2F51-4F12-A348-120AB91D4532}.Release|x64.Build.0 = Release|Any CPU + {3B8519C1-2F51-4F12-A348-120AB91D4532}.Release|x86.ActiveCfg = Release|Any CPU + {3B8519C1-2F51-4F12-A348-120AB91D4532}.Release|x86.Build.0 = Release|Any CPU {4A39637C-9338-4925-A4DB-D072E292EC78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4A39637C-9338-4925-A4DB-D072E292EC78}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4A39637C-9338-4925-A4DB-D072E292EC78}.Debug|x64.ActiveCfg = Debug|Any CPU + {4A39637C-9338-4925-A4DB-D072E292EC78}.Debug|x64.Build.0 = Debug|Any CPU + {4A39637C-9338-4925-A4DB-D072E292EC78}.Debug|x86.ActiveCfg = Debug|Any CPU + {4A39637C-9338-4925-A4DB-D072E292EC78}.Debug|x86.Build.0 = Debug|Any CPU {4A39637C-9338-4925-A4DB-D072E292EC78}.Release|Any CPU.ActiveCfg = Release|Any CPU {4A39637C-9338-4925-A4DB-D072E292EC78}.Release|Any CPU.Build.0 = Release|Any CPU + {4A39637C-9338-4925-A4DB-D072E292EC78}.Release|x64.ActiveCfg = Release|Any CPU + {4A39637C-9338-4925-A4DB-D072E292EC78}.Release|x64.Build.0 = Release|Any CPU + {4A39637C-9338-4925-A4DB-D072E292EC78}.Release|x86.ActiveCfg = Release|Any CPU + {4A39637C-9338-4925-A4DB-D072E292EC78}.Release|x86.Build.0 = Release|Any CPU {15B93A4C-1B46-43F6-B534-7B25B6E99932}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {15B93A4C-1B46-43F6-B534-7B25B6E99932}.Debug|Any CPU.Build.0 = Debug|Any CPU + {15B93A4C-1B46-43F6-B534-7B25B6E99932}.Debug|x64.ActiveCfg = Debug|Any CPU + {15B93A4C-1B46-43F6-B534-7B25B6E99932}.Debug|x64.Build.0 = Debug|Any CPU + {15B93A4C-1B46-43F6-B534-7B25B6E99932}.Debug|x86.ActiveCfg = Debug|Any CPU + {15B93A4C-1B46-43F6-B534-7B25B6E99932}.Debug|x86.Build.0 = Debug|Any CPU {15B93A4C-1B46-43F6-B534-7B25B6E99932}.Release|Any CPU.ActiveCfg = Release|Any CPU {15B93A4C-1B46-43F6-B534-7B25B6E99932}.Release|Any CPU.Build.0 = Release|Any CPU + {15B93A4C-1B46-43F6-B534-7B25B6E99932}.Release|x64.ActiveCfg = Release|Any CPU + {15B93A4C-1B46-43F6-B534-7B25B6E99932}.Release|x64.Build.0 = Release|Any CPU + {15B93A4C-1B46-43F6-B534-7B25B6E99932}.Release|x86.ActiveCfg = Release|Any CPU + {15B93A4C-1B46-43F6-B534-7B25B6E99932}.Release|x86.Build.0 = Release|Any CPU {C810060E-3809-4B74-A125-F11533AF9C1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C810060E-3809-4B74-A125-F11533AF9C1B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C810060E-3809-4B74-A125-F11533AF9C1B}.Debug|x64.ActiveCfg = Debug|Any CPU + {C810060E-3809-4B74-A125-F11533AF9C1B}.Debug|x64.Build.0 = Debug|Any CPU + {C810060E-3809-4B74-A125-F11533AF9C1B}.Debug|x86.ActiveCfg = Debug|Any CPU + {C810060E-3809-4B74-A125-F11533AF9C1B}.Debug|x86.Build.0 = Debug|Any CPU {C810060E-3809-4B74-A125-F11533AF9C1B}.Release|Any CPU.ActiveCfg = Release|Any CPU {C810060E-3809-4B74-A125-F11533AF9C1B}.Release|Any CPU.Build.0 = Release|Any CPU + {C810060E-3809-4B74-A125-F11533AF9C1B}.Release|x64.ActiveCfg = Release|Any CPU + {C810060E-3809-4B74-A125-F11533AF9C1B}.Release|x64.Build.0 = Release|Any CPU + {C810060E-3809-4B74-A125-F11533AF9C1B}.Release|x86.ActiveCfg = Release|Any CPU + {C810060E-3809-4B74-A125-F11533AF9C1B}.Release|x86.Build.0 = Release|Any CPU {C692FE73-43DB-49CE-87FC-F03ED61F25C9}.Debug|Any CPU.ActiveCfg = Release|Any CPU {C692FE73-43DB-49CE-87FC-F03ED61F25C9}.Debug|Any CPU.Build.0 = Release|Any CPU + {C692FE73-43DB-49CE-87FC-F03ED61F25C9}.Debug|x64.ActiveCfg = Debug|Any CPU + {C692FE73-43DB-49CE-87FC-F03ED61F25C9}.Debug|x64.Build.0 = Debug|Any CPU + {C692FE73-43DB-49CE-87FC-F03ED61F25C9}.Debug|x86.ActiveCfg = Debug|Any CPU + {C692FE73-43DB-49CE-87FC-F03ED61F25C9}.Debug|x86.Build.0 = Debug|Any CPU {C692FE73-43DB-49CE-87FC-F03ED61F25C9}.Release|Any CPU.ActiveCfg = Release|Any CPU {C692FE73-43DB-49CE-87FC-F03ED61F25C9}.Release|Any CPU.Build.0 = Release|Any CPU + {C692FE73-43DB-49CE-87FC-F03ED61F25C9}.Release|x64.ActiveCfg = Release|Any CPU + {C692FE73-43DB-49CE-87FC-F03ED61F25C9}.Release|x64.Build.0 = Release|Any CPU + {C692FE73-43DB-49CE-87FC-F03ED61F25C9}.Release|x86.ActiveCfg = Release|Any CPU + {C692FE73-43DB-49CE-87FC-F03ED61F25C9}.Release|x86.Build.0 = Release|Any CPU {DDA28789-C21A-4654-86CE-D01E81F095C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DDA28789-C21A-4654-86CE-D01E81F095C5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DDA28789-C21A-4654-86CE-D01E81F095C5}.Debug|x64.ActiveCfg = Debug|Any CPU + {DDA28789-C21A-4654-86CE-D01E81F095C5}.Debug|x64.Build.0 = Debug|Any CPU + {DDA28789-C21A-4654-86CE-D01E81F095C5}.Debug|x86.ActiveCfg = Debug|Any CPU + {DDA28789-C21A-4654-86CE-D01E81F095C5}.Debug|x86.Build.0 = Debug|Any CPU {DDA28789-C21A-4654-86CE-D01E81F095C5}.Release|Any CPU.ActiveCfg = Release|Any CPU {DDA28789-C21A-4654-86CE-D01E81F095C5}.Release|Any CPU.Build.0 = Release|Any CPU + {DDA28789-C21A-4654-86CE-D01E81F095C5}.Release|x64.ActiveCfg = Release|Any CPU + {DDA28789-C21A-4654-86CE-D01E81F095C5}.Release|x64.Build.0 = Release|Any CPU + {DDA28789-C21A-4654-86CE-D01E81F095C5}.Release|x86.ActiveCfg = Release|Any CPU + {DDA28789-C21A-4654-86CE-D01E81F095C5}.Release|x86.Build.0 = Release|Any CPU {13F1135D-BA1A-435C-9C5B-A368D1D63DE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {13F1135D-BA1A-435C-9C5B-A368D1D63DE4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {13F1135D-BA1A-435C-9C5B-A368D1D63DE4}.Debug|x64.ActiveCfg = Debug|Any CPU + {13F1135D-BA1A-435C-9C5B-A368D1D63DE4}.Debug|x64.Build.0 = Debug|Any CPU + {13F1135D-BA1A-435C-9C5B-A368D1D63DE4}.Debug|x86.ActiveCfg = Debug|Any CPU + {13F1135D-BA1A-435C-9C5B-A368D1D63DE4}.Debug|x86.Build.0 = Debug|Any CPU {13F1135D-BA1A-435C-9C5B-A368D1D63DE4}.Release|Any CPU.ActiveCfg = Release|Any CPU {13F1135D-BA1A-435C-9C5B-A368D1D63DE4}.Release|Any CPU.Build.0 = Release|Any CPU + {13F1135D-BA1A-435C-9C5B-A368D1D63DE4}.Release|x64.ActiveCfg = Release|Any CPU + {13F1135D-BA1A-435C-9C5B-A368D1D63DE4}.Release|x64.Build.0 = Release|Any CPU + {13F1135D-BA1A-435C-9C5B-A368D1D63DE4}.Release|x86.ActiveCfg = Release|Any CPU + {13F1135D-BA1A-435C-9C5B-A368D1D63DE4}.Release|x86.Build.0 = Release|Any CPU {A82AD1BC-EBE6-4FC3-A13B-D52A50297533}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A82AD1BC-EBE6-4FC3-A13B-D52A50297533}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A82AD1BC-EBE6-4FC3-A13B-D52A50297533}.Debug|x64.ActiveCfg = Debug|Any CPU + {A82AD1BC-EBE6-4FC3-A13B-D52A50297533}.Debug|x64.Build.0 = Debug|Any CPU + {A82AD1BC-EBE6-4FC3-A13B-D52A50297533}.Debug|x86.ActiveCfg = Debug|Any CPU + {A82AD1BC-EBE6-4FC3-A13B-D52A50297533}.Debug|x86.Build.0 = Debug|Any CPU {A82AD1BC-EBE6-4FC3-A13B-D52A50297533}.Release|Any CPU.ActiveCfg = Release|Any CPU {A82AD1BC-EBE6-4FC3-A13B-D52A50297533}.Release|Any CPU.Build.0 = Release|Any CPU + {A82AD1BC-EBE6-4FC3-A13B-D52A50297533}.Release|x64.ActiveCfg = Release|Any CPU + {A82AD1BC-EBE6-4FC3-A13B-D52A50297533}.Release|x64.Build.0 = Release|Any CPU + {A82AD1BC-EBE6-4FC3-A13B-D52A50297533}.Release|x86.ActiveCfg = Release|Any CPU + {A82AD1BC-EBE6-4FC3-A13B-D52A50297533}.Release|x86.Build.0 = Release|Any CPU {F8928267-688E-4A51-989C-612A72446D33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F8928267-688E-4A51-989C-612A72446D33}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F8928267-688E-4A51-989C-612A72446D33}.Debug|x64.ActiveCfg = Debug|Any CPU + {F8928267-688E-4A51-989C-612A72446D33}.Debug|x64.Build.0 = Debug|Any CPU + {F8928267-688E-4A51-989C-612A72446D33}.Debug|x86.ActiveCfg = Debug|Any CPU + {F8928267-688E-4A51-989C-612A72446D33}.Debug|x86.Build.0 = Debug|Any CPU {F8928267-688E-4A51-989C-612A72446D33}.Release|Any CPU.ActiveCfg = Release|Any CPU {F8928267-688E-4A51-989C-612A72446D33}.Release|Any CPU.Build.0 = Release|Any CPU + {F8928267-688E-4A51-989C-612A72446D33}.Release|x64.ActiveCfg = Release|Any CPU + {F8928267-688E-4A51-989C-612A72446D33}.Release|x64.Build.0 = Release|Any CPU + {F8928267-688E-4A51-989C-612A72446D33}.Release|x86.ActiveCfg = Release|Any CPU + {F8928267-688E-4A51-989C-612A72446D33}.Release|x86.Build.0 = Release|Any CPU {6B60A970-D5D2-49C2-8BAB-F9C7973B74B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6B60A970-D5D2-49C2-8BAB-F9C7973B74B6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6B60A970-D5D2-49C2-8BAB-F9C7973B74B6}.Debug|x64.ActiveCfg = Debug|Any CPU + {6B60A970-D5D2-49C2-8BAB-F9C7973B74B6}.Debug|x64.Build.0 = Debug|Any CPU + {6B60A970-D5D2-49C2-8BAB-F9C7973B74B6}.Debug|x86.ActiveCfg = Debug|Any CPU + {6B60A970-D5D2-49C2-8BAB-F9C7973B74B6}.Debug|x86.Build.0 = Debug|Any CPU {6B60A970-D5D2-49C2-8BAB-F9C7973B74B6}.Release|Any CPU.ActiveCfg = Release|Any CPU {6B60A970-D5D2-49C2-8BAB-F9C7973B74B6}.Release|Any CPU.Build.0 = Release|Any CPU + {6B60A970-D5D2-49C2-8BAB-F9C7973B74B6}.Release|x64.ActiveCfg = Release|Any CPU + {6B60A970-D5D2-49C2-8BAB-F9C7973B74B6}.Release|x64.Build.0 = Release|Any CPU + {6B60A970-D5D2-49C2-8BAB-F9C7973B74B6}.Release|x86.ActiveCfg = Release|Any CPU + {6B60A970-D5D2-49C2-8BAB-F9C7973B74B6}.Release|x86.Build.0 = Release|Any CPU {22E3BC08-EAF7-4889-BDC4-B4D3046C4E2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {22E3BC08-EAF7-4889-BDC4-B4D3046C4E2D}.Debug|Any CPU.Build.0 = Debug|Any CPU {22E3BC08-EAF7-4889-BDC4-B4D3046C4E2D}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {22E3BC08-EAF7-4889-BDC4-B4D3046C4E2D}.Debug|x64.ActiveCfg = Debug|Any CPU + {22E3BC08-EAF7-4889-BDC4-B4D3046C4E2D}.Debug|x64.Build.0 = Debug|Any CPU + {22E3BC08-EAF7-4889-BDC4-B4D3046C4E2D}.Debug|x86.ActiveCfg = Debug|Any CPU + {22E3BC08-EAF7-4889-BDC4-B4D3046C4E2D}.Debug|x86.Build.0 = Debug|Any CPU {22E3BC08-EAF7-4889-BDC4-B4D3046C4E2D}.Release|Any CPU.ActiveCfg = Release|Any CPU {22E3BC08-EAF7-4889-BDC4-B4D3046C4E2D}.Release|Any CPU.Build.0 = Release|Any CPU {22E3BC08-EAF7-4889-BDC4-B4D3046C4E2D}.Release|Any CPU.Deploy.0 = Release|Any CPU + {22E3BC08-EAF7-4889-BDC4-B4D3046C4E2D}.Release|x64.ActiveCfg = Release|Any CPU + {22E3BC08-EAF7-4889-BDC4-B4D3046C4E2D}.Release|x64.Build.0 = Release|Any CPU + {22E3BC08-EAF7-4889-BDC4-B4D3046C4E2D}.Release|x86.ActiveCfg = Release|Any CPU + {22E3BC08-EAF7-4889-BDC4-B4D3046C4E2D}.Release|x86.Build.0 = Release|Any CPU {4CDAD037-34A2-4CCF-A03A-C6C7B988A572}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4CDAD037-34A2-4CCF-A03A-C6C7B988A572}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4CDAD037-34A2-4CCF-A03A-C6C7B988A572}.Debug|x64.ActiveCfg = Debug|Any CPU + {4CDAD037-34A2-4CCF-A03A-C6C7B988A572}.Debug|x64.Build.0 = Debug|Any CPU + {4CDAD037-34A2-4CCF-A03A-C6C7B988A572}.Debug|x86.ActiveCfg = Debug|Any CPU + {4CDAD037-34A2-4CCF-A03A-C6C7B988A572}.Debug|x86.Build.0 = Debug|Any CPU {4CDAD037-34A2-4CCF-A03A-C6C7B988A572}.Release|Any CPU.ActiveCfg = Release|Any CPU {4CDAD037-34A2-4CCF-A03A-C6C7B988A572}.Release|Any CPU.Build.0 = Release|Any CPU + {4CDAD037-34A2-4CCF-A03A-C6C7B988A572}.Release|x64.ActiveCfg = Release|Any CPU + {4CDAD037-34A2-4CCF-A03A-C6C7B988A572}.Release|x64.Build.0 = Release|Any CPU + {4CDAD037-34A2-4CCF-A03A-C6C7B988A572}.Release|x86.ActiveCfg = Release|Any CPU + {4CDAD037-34A2-4CCF-A03A-C6C7B988A572}.Release|x86.Build.0 = Release|Any CPU {FC956F9A-4C3A-4A1A-ACDD-BB54DCB661DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FC956F9A-4C3A-4A1A-ACDD-BB54DCB661DD}.Debug|Any CPU.Build.0 = Debug|Any CPU {FC956F9A-4C3A-4A1A-ACDD-BB54DCB661DD}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {FC956F9A-4C3A-4A1A-ACDD-BB54DCB661DD}.Debug|x64.ActiveCfg = Debug|Any CPU + {FC956F9A-4C3A-4A1A-ACDD-BB54DCB661DD}.Debug|x64.Build.0 = Debug|Any CPU + {FC956F9A-4C3A-4A1A-ACDD-BB54DCB661DD}.Debug|x86.ActiveCfg = Debug|Any CPU + {FC956F9A-4C3A-4A1A-ACDD-BB54DCB661DD}.Debug|x86.Build.0 = Debug|Any CPU {FC956F9A-4C3A-4A1A-ACDD-BB54DCB661DD}.Release|Any CPU.ActiveCfg = Release|Any CPU {FC956F9A-4C3A-4A1A-ACDD-BB54DCB661DD}.Release|Any CPU.Build.0 = Release|Any CPU {FC956F9A-4C3A-4A1A-ACDD-BB54DCB661DD}.Release|Any CPU.Deploy.0 = Release|Any CPU + {FC956F9A-4C3A-4A1A-ACDD-BB54DCB661DD}.Release|x64.ActiveCfg = Release|Any CPU + {FC956F9A-4C3A-4A1A-ACDD-BB54DCB661DD}.Release|x64.Build.0 = Release|Any CPU + {FC956F9A-4C3A-4A1A-ACDD-BB54DCB661DD}.Release|x86.ActiveCfg = Release|Any CPU + {FC956F9A-4C3A-4A1A-ACDD-BB54DCB661DD}.Release|x86.Build.0 = Release|Any CPU {F47F8316-4D4B-4026-8EF3-16B2CFDA8119}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F47F8316-4D4B-4026-8EF3-16B2CFDA8119}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F47F8316-4D4B-4026-8EF3-16B2CFDA8119}.Debug|x64.ActiveCfg = Debug|Any CPU + {F47F8316-4D4B-4026-8EF3-16B2CFDA8119}.Debug|x64.Build.0 = Debug|Any CPU + {F47F8316-4D4B-4026-8EF3-16B2CFDA8119}.Debug|x86.ActiveCfg = Debug|Any CPU + {F47F8316-4D4B-4026-8EF3-16B2CFDA8119}.Debug|x86.Build.0 = Debug|Any CPU {F47F8316-4D4B-4026-8EF3-16B2CFDA8119}.Release|Any CPU.ActiveCfg = Release|Any CPU {F47F8316-4D4B-4026-8EF3-16B2CFDA8119}.Release|Any CPU.Build.0 = Release|Any CPU + {F47F8316-4D4B-4026-8EF3-16B2CFDA8119}.Release|x64.ActiveCfg = Release|Any CPU + {F47F8316-4D4B-4026-8EF3-16B2CFDA8119}.Release|x64.Build.0 = Release|Any CPU + {F47F8316-4D4B-4026-8EF3-16B2CFDA8119}.Release|x86.ActiveCfg = Release|Any CPU + {F47F8316-4D4B-4026-8EF3-16B2CFDA8119}.Release|x86.Build.0 = Release|Any CPU {ED976634-B118-43F8-8B26-0279C7A7044F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {ED976634-B118-43F8-8B26-0279C7A7044F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ED976634-B118-43F8-8B26-0279C7A7044F}.Debug|x64.ActiveCfg = Debug|Any CPU + {ED976634-B118-43F8-8B26-0279C7A7044F}.Debug|x64.Build.0 = Debug|Any CPU + {ED976634-B118-43F8-8B26-0279C7A7044F}.Debug|x86.ActiveCfg = Debug|Any CPU + {ED976634-B118-43F8-8B26-0279C7A7044F}.Debug|x86.Build.0 = Debug|Any CPU {ED976634-B118-43F8-8B26-0279C7A7044F}.Release|Any CPU.ActiveCfg = Release|Any CPU {ED976634-B118-43F8-8B26-0279C7A7044F}.Release|Any CPU.Build.0 = Release|Any CPU + {ED976634-B118-43F8-8B26-0279C7A7044F}.Release|x64.ActiveCfg = Release|Any CPU + {ED976634-B118-43F8-8B26-0279C7A7044F}.Release|x64.Build.0 = Release|Any CPU + {ED976634-B118-43F8-8B26-0279C7A7044F}.Release|x86.ActiveCfg = Release|Any CPU + {ED976634-B118-43F8-8B26-0279C7A7044F}.Release|x86.Build.0 = Release|Any CPU {4B8EBBEB-A1AD-49EC-8B69-B93ED15BFA64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4B8EBBEB-A1AD-49EC-8B69-B93ED15BFA64}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4B8EBBEB-A1AD-49EC-8B69-B93ED15BFA64}.Debug|x64.ActiveCfg = Debug|Any CPU + {4B8EBBEB-A1AD-49EC-8B69-B93ED15BFA64}.Debug|x64.Build.0 = Debug|Any CPU + {4B8EBBEB-A1AD-49EC-8B69-B93ED15BFA64}.Debug|x86.ActiveCfg = Debug|Any CPU + {4B8EBBEB-A1AD-49EC-8B69-B93ED15BFA64}.Debug|x86.Build.0 = Debug|Any CPU {4B8EBBEB-A1AD-49EC-8B69-B93ED15BFA64}.Release|Any CPU.ActiveCfg = Release|Any CPU {4B8EBBEB-A1AD-49EC-8B69-B93ED15BFA64}.Release|Any CPU.Build.0 = Release|Any CPU + {4B8EBBEB-A1AD-49EC-8B69-B93ED15BFA64}.Release|x64.ActiveCfg = Release|Any CPU + {4B8EBBEB-A1AD-49EC-8B69-B93ED15BFA64}.Release|x64.Build.0 = Release|Any CPU + {4B8EBBEB-A1AD-49EC-8B69-B93ED15BFA64}.Release|x86.ActiveCfg = Release|Any CPU + {4B8EBBEB-A1AD-49EC-8B69-B93ED15BFA64}.Release|x86.Build.0 = Release|Any CPU {60B4ED1F-ECFA-453B-8A70-1788261C8355}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {60B4ED1F-ECFA-453B-8A70-1788261C8355}.Debug|Any CPU.Build.0 = Debug|Any CPU + {60B4ED1F-ECFA-453B-8A70-1788261C8355}.Debug|x64.ActiveCfg = Debug|Any CPU + {60B4ED1F-ECFA-453B-8A70-1788261C8355}.Debug|x64.Build.0 = Debug|Any CPU + {60B4ED1F-ECFA-453B-8A70-1788261C8355}.Debug|x86.ActiveCfg = Debug|Any CPU + {60B4ED1F-ECFA-453B-8A70-1788261C8355}.Debug|x86.Build.0 = Debug|Any CPU {60B4ED1F-ECFA-453B-8A70-1788261C8355}.Release|Any CPU.ActiveCfg = Release|Any CPU {60B4ED1F-ECFA-453B-8A70-1788261C8355}.Release|Any CPU.Build.0 = Release|Any CPU + {60B4ED1F-ECFA-453B-8A70-1788261C8355}.Release|x64.ActiveCfg = Release|Any CPU + {60B4ED1F-ECFA-453B-8A70-1788261C8355}.Release|x64.Build.0 = Release|Any CPU + {60B4ED1F-ECFA-453B-8A70-1788261C8355}.Release|x86.ActiveCfg = Release|Any CPU + {60B4ED1F-ECFA-453B-8A70-1788261C8355}.Release|x86.Build.0 = Release|Any CPU {B0FD6A48-FBAB-4676-B36A-DE76B0922B12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B0FD6A48-FBAB-4676-B36A-DE76B0922B12}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B0FD6A48-FBAB-4676-B36A-DE76B0922B12}.Debug|x64.ActiveCfg = Debug|Any CPU + {B0FD6A48-FBAB-4676-B36A-DE76B0922B12}.Debug|x64.Build.0 = Debug|Any CPU + {B0FD6A48-FBAB-4676-B36A-DE76B0922B12}.Debug|x86.ActiveCfg = Debug|Any CPU + {B0FD6A48-FBAB-4676-B36A-DE76B0922B12}.Debug|x86.Build.0 = Debug|Any CPU {B0FD6A48-FBAB-4676-B36A-DE76B0922B12}.Release|Any CPU.ActiveCfg = Release|Any CPU {B0FD6A48-FBAB-4676-B36A-DE76B0922B12}.Release|Any CPU.Build.0 = Release|Any CPU + {B0FD6A48-FBAB-4676-B36A-DE76B0922B12}.Release|x64.ActiveCfg = Release|Any CPU + {B0FD6A48-FBAB-4676-B36A-DE76B0922B12}.Release|x64.Build.0 = Release|Any CPU + {B0FD6A48-FBAB-4676-B36A-DE76B0922B12}.Release|x86.ActiveCfg = Release|Any CPU + {B0FD6A48-FBAB-4676-B36A-DE76B0922B12}.Release|x86.Build.0 = Release|Any CPU {0A948D71-99C5-43E9-BACB-B0BA59EA25B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0A948D71-99C5-43E9-BACB-B0BA59EA25B4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0A948D71-99C5-43E9-BACB-B0BA59EA25B4}.Debug|x64.ActiveCfg = Debug|Any CPU + {0A948D71-99C5-43E9-BACB-B0BA59EA25B4}.Debug|x64.Build.0 = Debug|Any CPU + {0A948D71-99C5-43E9-BACB-B0BA59EA25B4}.Debug|x86.ActiveCfg = Debug|Any CPU + {0A948D71-99C5-43E9-BACB-B0BA59EA25B4}.Debug|x86.Build.0 = Debug|Any CPU {0A948D71-99C5-43E9-BACB-B0BA59EA25B4}.Release|Any CPU.ActiveCfg = Release|Any CPU {0A948D71-99C5-43E9-BACB-B0BA59EA25B4}.Release|Any CPU.Build.0 = Release|Any CPU + {0A948D71-99C5-43E9-BACB-B0BA59EA25B4}.Release|x64.ActiveCfg = Release|Any CPU + {0A948D71-99C5-43E9-BACB-B0BA59EA25B4}.Release|x64.Build.0 = Release|Any CPU + {0A948D71-99C5-43E9-BACB-B0BA59EA25B4}.Release|x86.ActiveCfg = Release|Any CPU + {0A948D71-99C5-43E9-BACB-B0BA59EA25B4}.Release|x86.Build.0 = Release|Any CPU {D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0}.Debug|x64.ActiveCfg = Debug|Any CPU + {D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0}.Debug|x64.Build.0 = Debug|Any CPU + {D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0}.Debug|x86.ActiveCfg = Debug|Any CPU + {D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0}.Debug|x86.Build.0 = Debug|Any CPU {D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0}.Release|Any CPU.ActiveCfg = Release|Any CPU {D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0}.Release|Any CPU.Build.0 = Release|Any CPU + {D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0}.Release|x64.ActiveCfg = Release|Any CPU + {D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0}.Release|x64.Build.0 = Release|Any CPU + {D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0}.Release|x86.ActiveCfg = Release|Any CPU + {D7FE3E0F-3FE0-4F87-A2F5-24F1454D84C0}.Release|x86.Build.0 = Release|Any CPU {DA5F1FF9-4259-4C54-B443-85CFA226EE6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DA5F1FF9-4259-4C54-B443-85CFA226EE6A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DA5F1FF9-4259-4C54-B443-85CFA226EE6A}.Debug|x64.ActiveCfg = Debug|Any CPU + {DA5F1FF9-4259-4C54-B443-85CFA226EE6A}.Debug|x64.Build.0 = Debug|Any CPU + {DA5F1FF9-4259-4C54-B443-85CFA226EE6A}.Debug|x86.ActiveCfg = Debug|Any CPU + {DA5F1FF9-4259-4C54-B443-85CFA226EE6A}.Debug|x86.Build.0 = Debug|Any CPU {DA5F1FF9-4259-4C54-B443-85CFA226EE6A}.Release|Any CPU.ActiveCfg = Release|Any CPU {DA5F1FF9-4259-4C54-B443-85CFA226EE6A}.Release|Any CPU.Build.0 = Release|Any CPU + {DA5F1FF9-4259-4C54-B443-85CFA226EE6A}.Release|x64.ActiveCfg = Release|Any CPU + {DA5F1FF9-4259-4C54-B443-85CFA226EE6A}.Release|x64.Build.0 = Release|Any CPU + {DA5F1FF9-4259-4C54-B443-85CFA226EE6A}.Release|x86.ActiveCfg = Release|Any CPU + {DA5F1FF9-4259-4C54-B443-85CFA226EE6A}.Release|x86.Build.0 = Release|Any CPU {3E2DE2B6-13BC-4C27-BCB9-A423B86CAF77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3E2DE2B6-13BC-4C27-BCB9-A423B86CAF77}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3E2DE2B6-13BC-4C27-BCB9-A423B86CAF77}.Debug|x64.ActiveCfg = Debug|Any CPU + {3E2DE2B6-13BC-4C27-BCB9-A423B86CAF77}.Debug|x64.Build.0 = Debug|Any CPU + {3E2DE2B6-13BC-4C27-BCB9-A423B86CAF77}.Debug|x86.ActiveCfg = Debug|Any CPU + {3E2DE2B6-13BC-4C27-BCB9-A423B86CAF77}.Debug|x86.Build.0 = Debug|Any CPU {3E2DE2B6-13BC-4C27-BCB9-A423B86CAF77}.Release|Any CPU.ActiveCfg = Release|Any CPU {3E2DE2B6-13BC-4C27-BCB9-A423B86CAF77}.Release|Any CPU.Build.0 = Release|Any CPU + {3E2DE2B6-13BC-4C27-BCB9-A423B86CAF77}.Release|x64.ActiveCfg = Release|Any CPU + {3E2DE2B6-13BC-4C27-BCB9-A423B86CAF77}.Release|x64.Build.0 = Release|Any CPU + {3E2DE2B6-13BC-4C27-BCB9-A423B86CAF77}.Release|x86.ActiveCfg = Release|Any CPU + {3E2DE2B6-13BC-4C27-BCB9-A423B86CAF77}.Release|x86.Build.0 = Release|Any CPU {9AE1B827-21AC-4063-AB22-C8804B7F931E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9AE1B827-21AC-4063-AB22-C8804B7F931E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9AE1B827-21AC-4063-AB22-C8804B7F931E}.Debug|x64.ActiveCfg = Debug|Any CPU + {9AE1B827-21AC-4063-AB22-C8804B7F931E}.Debug|x64.Build.0 = Debug|Any CPU + {9AE1B827-21AC-4063-AB22-C8804B7F931E}.Debug|x86.ActiveCfg = Debug|Any CPU + {9AE1B827-21AC-4063-AB22-C8804B7F931E}.Debug|x86.Build.0 = Debug|Any CPU {9AE1B827-21AC-4063-AB22-C8804B7F931E}.Release|Any CPU.ActiveCfg = Release|Any CPU {9AE1B827-21AC-4063-AB22-C8804B7F931E}.Release|Any CPU.Build.0 = Release|Any CPU + {9AE1B827-21AC-4063-AB22-C8804B7F931E}.Release|x64.ActiveCfg = Release|Any CPU + {9AE1B827-21AC-4063-AB22-C8804B7F931E}.Release|x64.Build.0 = Release|Any CPU + {9AE1B827-21AC-4063-AB22-C8804B7F931E}.Release|x86.ActiveCfg = Release|Any CPU + {9AE1B827-21AC-4063-AB22-C8804B7F931E}.Release|x86.Build.0 = Release|Any CPU {0097673D-DBCE-476E-82FE-E78A56E58AA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0097673D-DBCE-476E-82FE-E78A56E58AA2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0097673D-DBCE-476E-82FE-E78A56E58AA2}.Debug|x64.ActiveCfg = Debug|Any CPU + {0097673D-DBCE-476E-82FE-E78A56E58AA2}.Debug|x64.Build.0 = Debug|Any CPU + {0097673D-DBCE-476E-82FE-E78A56E58AA2}.Debug|x86.ActiveCfg = Debug|Any CPU + {0097673D-DBCE-476E-82FE-E78A56E58AA2}.Debug|x86.Build.0 = Debug|Any CPU {0097673D-DBCE-476E-82FE-E78A56E58AA2}.Release|Any CPU.ActiveCfg = Release|Any CPU {0097673D-DBCE-476E-82FE-E78A56E58AA2}.Release|Any CPU.Build.0 = Release|Any CPU + {0097673D-DBCE-476E-82FE-E78A56E58AA2}.Release|x64.ActiveCfg = Release|Any CPU + {0097673D-DBCE-476E-82FE-E78A56E58AA2}.Release|x64.Build.0 = Release|Any CPU + {0097673D-DBCE-476E-82FE-E78A56E58AA2}.Release|x86.ActiveCfg = Release|Any CPU + {0097673D-DBCE-476E-82FE-E78A56E58AA2}.Release|x86.Build.0 = Release|Any CPU {255614F5-CB64-4ECA-A026-E0B1AF6A2EF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {255614F5-CB64-4ECA-A026-E0B1AF6A2EF4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {255614F5-CB64-4ECA-A026-E0B1AF6A2EF4}.Debug|x64.ActiveCfg = Debug|Any CPU + {255614F5-CB64-4ECA-A026-E0B1AF6A2EF4}.Debug|x64.Build.0 = Debug|Any CPU + {255614F5-CB64-4ECA-A026-E0B1AF6A2EF4}.Debug|x86.ActiveCfg = Debug|Any CPU + {255614F5-CB64-4ECA-A026-E0B1AF6A2EF4}.Debug|x86.Build.0 = Debug|Any CPU {255614F5-CB64-4ECA-A026-E0B1AF6A2EF4}.Release|Any CPU.ActiveCfg = Release|Any CPU {255614F5-CB64-4ECA-A026-E0B1AF6A2EF4}.Release|Any CPU.Build.0 = Release|Any CPU + {255614F5-CB64-4ECA-A026-E0B1AF6A2EF4}.Release|x64.ActiveCfg = Release|Any CPU + {255614F5-CB64-4ECA-A026-E0B1AF6A2EF4}.Release|x64.Build.0 = Release|Any CPU + {255614F5-CB64-4ECA-A026-E0B1AF6A2EF4}.Release|x86.ActiveCfg = Release|Any CPU + {255614F5-CB64-4ECA-A026-E0B1AF6A2EF4}.Release|x86.Build.0 = Release|Any CPU {DE3C28DD-B602-4750-831D-345102A54CA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DE3C28DD-B602-4750-831D-345102A54CA0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DE3C28DD-B602-4750-831D-345102A54CA0}.Debug|x64.ActiveCfg = Debug|Any CPU + {DE3C28DD-B602-4750-831D-345102A54CA0}.Debug|x64.Build.0 = Debug|Any CPU + {DE3C28DD-B602-4750-831D-345102A54CA0}.Debug|x86.ActiveCfg = Debug|Any CPU + {DE3C28DD-B602-4750-831D-345102A54CA0}.Debug|x86.Build.0 = Debug|Any CPU {DE3C28DD-B602-4750-831D-345102A54CA0}.Release|Any CPU.ActiveCfg = Release|Any CPU {DE3C28DD-B602-4750-831D-345102A54CA0}.Release|Any CPU.Build.0 = Release|Any CPU + {DE3C28DD-B602-4750-831D-345102A54CA0}.Release|x64.ActiveCfg = Release|Any CPU + {DE3C28DD-B602-4750-831D-345102A54CA0}.Release|x64.Build.0 = Release|Any CPU + {DE3C28DD-B602-4750-831D-345102A54CA0}.Release|x86.ActiveCfg = Release|Any CPU + {DE3C28DD-B602-4750-831D-345102A54CA0}.Release|x86.Build.0 = Release|Any CPU {14342787-B4EF-4076-8C91-BA6C523DE8DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {14342787-B4EF-4076-8C91-BA6C523DE8DF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {14342787-B4EF-4076-8C91-BA6C523DE8DF}.Debug|x64.ActiveCfg = Debug|Any CPU + {14342787-B4EF-4076-8C91-BA6C523DE8DF}.Debug|x64.Build.0 = Debug|Any CPU + {14342787-B4EF-4076-8C91-BA6C523DE8DF}.Debug|x86.ActiveCfg = Debug|Any CPU + {14342787-B4EF-4076-8C91-BA6C523DE8DF}.Debug|x86.Build.0 = Debug|Any CPU {14342787-B4EF-4076-8C91-BA6C523DE8DF}.Release|Any CPU.ActiveCfg = Release|Any CPU {14342787-B4EF-4076-8C91-BA6C523DE8DF}.Release|Any CPU.Build.0 = Release|Any CPU + {14342787-B4EF-4076-8C91-BA6C523DE8DF}.Release|x64.ActiveCfg = Release|Any CPU + {14342787-B4EF-4076-8C91-BA6C523DE8DF}.Release|x64.Build.0 = Release|Any CPU + {14342787-B4EF-4076-8C91-BA6C523DE8DF}.Release|x86.ActiveCfg = Release|Any CPU + {14342787-B4EF-4076-8C91-BA6C523DE8DF}.Release|x86.Build.0 = Release|Any CPU {E2BFA463-6402-4EF8-8945-FD9A10A914D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E2BFA463-6402-4EF8-8945-FD9A10A914D1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E2BFA463-6402-4EF8-8945-FD9A10A914D1}.Debug|x64.ActiveCfg = Debug|Any CPU + {E2BFA463-6402-4EF8-8945-FD9A10A914D1}.Debug|x64.Build.0 = Debug|Any CPU + {E2BFA463-6402-4EF8-8945-FD9A10A914D1}.Debug|x86.ActiveCfg = Debug|Any CPU + {E2BFA463-6402-4EF8-8945-FD9A10A914D1}.Debug|x86.Build.0 = Debug|Any CPU {E2BFA463-6402-4EF8-8945-FD9A10A914D1}.Release|Any CPU.ActiveCfg = Release|Any CPU {E2BFA463-6402-4EF8-8945-FD9A10A914D1}.Release|Any CPU.Build.0 = Release|Any CPU + {E2BFA463-6402-4EF8-8945-FD9A10A914D1}.Release|x64.ActiveCfg = Release|Any CPU + {E2BFA463-6402-4EF8-8945-FD9A10A914D1}.Release|x64.Build.0 = Release|Any CPU + {E2BFA463-6402-4EF8-8945-FD9A10A914D1}.Release|x86.ActiveCfg = Release|Any CPU + {E2BFA463-6402-4EF8-8945-FD9A10A914D1}.Release|x86.Build.0 = Release|Any CPU {A175EFAE-476C-4DAA-87D5-742C18CFCC27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A175EFAE-476C-4DAA-87D5-742C18CFCC27}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A175EFAE-476C-4DAA-87D5-742C18CFCC27}.Debug|x64.ActiveCfg = Debug|Any CPU + {A175EFAE-476C-4DAA-87D5-742C18CFCC27}.Debug|x64.Build.0 = Debug|Any CPU + {A175EFAE-476C-4DAA-87D5-742C18CFCC27}.Debug|x86.ActiveCfg = Debug|Any CPU + {A175EFAE-476C-4DAA-87D5-742C18CFCC27}.Debug|x86.Build.0 = Debug|Any CPU {A175EFAE-476C-4DAA-87D5-742C18CFCC27}.Release|Any CPU.ActiveCfg = Release|Any CPU {A175EFAE-476C-4DAA-87D5-742C18CFCC27}.Release|Any CPU.Build.0 = Release|Any CPU + {A175EFAE-476C-4DAA-87D5-742C18CFCC27}.Release|x64.ActiveCfg = Release|Any CPU + {A175EFAE-476C-4DAA-87D5-742C18CFCC27}.Release|x64.Build.0 = Release|Any CPU + {A175EFAE-476C-4DAA-87D5-742C18CFCC27}.Release|x86.ActiveCfg = Release|Any CPU + {A175EFAE-476C-4DAA-87D5-742C18CFCC27}.Release|x86.Build.0 = Release|Any CPU {09EC467F-0F25-4E6F-A836-2BAEC8F6AB0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {09EC467F-0F25-4E6F-A836-2BAEC8F6AB0C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {09EC467F-0F25-4E6F-A836-2BAEC8F6AB0C}.Debug|x64.ActiveCfg = Debug|Any CPU + {09EC467F-0F25-4E6F-A836-2BAEC8F6AB0C}.Debug|x64.Build.0 = Debug|Any CPU + {09EC467F-0F25-4E6F-A836-2BAEC8F6AB0C}.Debug|x86.ActiveCfg = Debug|Any CPU + {09EC467F-0F25-4E6F-A836-2BAEC8F6AB0C}.Debug|x86.Build.0 = Debug|Any CPU {09EC467F-0F25-4E6F-A836-2BAEC8F6AB0C}.Release|Any CPU.ActiveCfg = Release|Any CPU {09EC467F-0F25-4E6F-A836-2BAEC8F6AB0C}.Release|Any CPU.Build.0 = Release|Any CPU + {09EC467F-0F25-4E6F-A836-2BAEC8F6AB0C}.Release|x64.ActiveCfg = Release|Any CPU + {09EC467F-0F25-4E6F-A836-2BAEC8F6AB0C}.Release|x64.Build.0 = Release|Any CPU + {09EC467F-0F25-4E6F-A836-2BAEC8F6AB0C}.Release|x86.ActiveCfg = Release|Any CPU + {09EC467F-0F25-4E6F-A836-2BAEC8F6AB0C}.Release|x86.Build.0 = Release|Any CPU {342D2657-2F84-493C-B74B-9D2CAE5D9DAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {342D2657-2F84-493C-B74B-9D2CAE5D9DAB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {342D2657-2F84-493C-B74B-9D2CAE5D9DAB}.Debug|x64.ActiveCfg = Debug|Any CPU + {342D2657-2F84-493C-B74B-9D2CAE5D9DAB}.Debug|x64.Build.0 = Debug|Any CPU + {342D2657-2F84-493C-B74B-9D2CAE5D9DAB}.Debug|x86.ActiveCfg = Debug|Any CPU + {342D2657-2F84-493C-B74B-9D2CAE5D9DAB}.Debug|x86.Build.0 = Debug|Any CPU {342D2657-2F84-493C-B74B-9D2CAE5D9DAB}.Release|Any CPU.ActiveCfg = Release|Any CPU {342D2657-2F84-493C-B74B-9D2CAE5D9DAB}.Release|Any CPU.Build.0 = Release|Any CPU + {342D2657-2F84-493C-B74B-9D2CAE5D9DAB}.Release|x64.ActiveCfg = Release|Any CPU + {342D2657-2F84-493C-B74B-9D2CAE5D9DAB}.Release|x64.Build.0 = Release|Any CPU + {342D2657-2F84-493C-B74B-9D2CAE5D9DAB}.Release|x86.ActiveCfg = Release|Any CPU + {342D2657-2F84-493C-B74B-9D2CAE5D9DAB}.Release|x86.Build.0 = Release|Any CPU {26918642-829D-4FA2-B60A-BE8D83F4E063}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {26918642-829D-4FA2-B60A-BE8D83F4E063}.Debug|Any CPU.Build.0 = Debug|Any CPU + {26918642-829D-4FA2-B60A-BE8D83F4E063}.Debug|x64.ActiveCfg = Debug|Any CPU + {26918642-829D-4FA2-B60A-BE8D83F4E063}.Debug|x64.Build.0 = Debug|Any CPU + {26918642-829D-4FA2-B60A-BE8D83F4E063}.Debug|x86.ActiveCfg = Debug|Any CPU + {26918642-829D-4FA2-B60A-BE8D83F4E063}.Debug|x86.Build.0 = Debug|Any CPU {26918642-829D-4FA2-B60A-BE8D83F4E063}.Release|Any CPU.ActiveCfg = Release|Any CPU {26918642-829D-4FA2-B60A-BE8D83F4E063}.Release|Any CPU.Build.0 = Release|Any CPU + {26918642-829D-4FA2-B60A-BE8D83F4E063}.Release|x64.ActiveCfg = Release|Any CPU + {26918642-829D-4FA2-B60A-BE8D83F4E063}.Release|x64.Build.0 = Release|Any CPU + {26918642-829D-4FA2-B60A-BE8D83F4E063}.Release|x86.ActiveCfg = Release|Any CPU + {26918642-829D-4FA2-B60A-BE8D83F4E063}.Release|x86.Build.0 = Release|Any CPU {11522B0D-BF31-42D5-8FC5-41E58F319AF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {11522B0D-BF31-42D5-8FC5-41E58F319AF9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {11522B0D-BF31-42D5-8FC5-41E58F319AF9}.Debug|x64.ActiveCfg = Debug|Any CPU + {11522B0D-BF31-42D5-8FC5-41E58F319AF9}.Debug|x64.Build.0 = Debug|Any CPU + {11522B0D-BF31-42D5-8FC5-41E58F319AF9}.Debug|x86.ActiveCfg = Debug|Any CPU + {11522B0D-BF31-42D5-8FC5-41E58F319AF9}.Debug|x86.Build.0 = Debug|Any CPU {11522B0D-BF31-42D5-8FC5-41E58F319AF9}.Release|Any CPU.ActiveCfg = Release|Any CPU {11522B0D-BF31-42D5-8FC5-41E58F319AF9}.Release|Any CPU.Build.0 = Release|Any CPU + {11522B0D-BF31-42D5-8FC5-41E58F319AF9}.Release|x64.ActiveCfg = Release|Any CPU + {11522B0D-BF31-42D5-8FC5-41E58F319AF9}.Release|x64.Build.0 = Release|Any CPU + {11522B0D-BF31-42D5-8FC5-41E58F319AF9}.Release|x86.ActiveCfg = Release|Any CPU + {11522B0D-BF31-42D5-8FC5-41E58F319AF9}.Release|x86.Build.0 = Release|Any CPU {FDFB9C25-552D-420B-9D4A-DB0BB6472239}.Debug|Any CPU.ActiveCfg = Release|Any CPU {FDFB9C25-552D-420B-9D4A-DB0BB6472239}.Debug|Any CPU.Build.0 = Release|Any CPU + {FDFB9C25-552D-420B-9D4A-DB0BB6472239}.Debug|x64.ActiveCfg = Debug|Any CPU + {FDFB9C25-552D-420B-9D4A-DB0BB6472239}.Debug|x64.Build.0 = Debug|Any CPU + {FDFB9C25-552D-420B-9D4A-DB0BB6472239}.Debug|x86.ActiveCfg = Debug|Any CPU + {FDFB9C25-552D-420B-9D4A-DB0BB6472239}.Debug|x86.Build.0 = Debug|Any CPU {FDFB9C25-552D-420B-9D4A-DB0BB6472239}.Release|Any CPU.ActiveCfg = Release|Any CPU {FDFB9C25-552D-420B-9D4A-DB0BB6472239}.Release|Any CPU.Build.0 = Release|Any CPU + {FDFB9C25-552D-420B-9D4A-DB0BB6472239}.Release|x64.ActiveCfg = Release|Any CPU + {FDFB9C25-552D-420B-9D4A-DB0BB6472239}.Release|x64.Build.0 = Release|Any CPU + {FDFB9C25-552D-420B-9D4A-DB0BB6472239}.Release|x86.ActiveCfg = Release|Any CPU + {FDFB9C25-552D-420B-9D4A-DB0BB6472239}.Release|x86.Build.0 = Release|Any CPU {A7644C3B-B843-44F1-9940-560D56CB0936}.Debug|Any CPU.ActiveCfg = Release|Any CPU {A7644C3B-B843-44F1-9940-560D56CB0936}.Debug|Any CPU.Build.0 = Release|Any CPU + {A7644C3B-B843-44F1-9940-560D56CB0936}.Debug|x64.ActiveCfg = Debug|Any CPU + {A7644C3B-B843-44F1-9940-560D56CB0936}.Debug|x64.Build.0 = Debug|Any CPU + {A7644C3B-B843-44F1-9940-560D56CB0936}.Debug|x86.ActiveCfg = Debug|Any CPU + {A7644C3B-B843-44F1-9940-560D56CB0936}.Debug|x86.Build.0 = Debug|Any CPU {A7644C3B-B843-44F1-9940-560D56CB0936}.Release|Any CPU.ActiveCfg = Release|Any CPU {A7644C3B-B843-44F1-9940-560D56CB0936}.Release|Any CPU.Build.0 = Release|Any CPU + {A7644C3B-B843-44F1-9940-560D56CB0936}.Release|x64.ActiveCfg = Release|Any CPU + {A7644C3B-B843-44F1-9940-560D56CB0936}.Release|x64.Build.0 = Release|Any CPU + {A7644C3B-B843-44F1-9940-560D56CB0936}.Release|x86.ActiveCfg = Release|Any CPU + {A7644C3B-B843-44F1-9940-560D56CB0936}.Release|x86.Build.0 = Release|Any CPU {742C3613-514C-4D6B-804A-2A7925F278F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {742C3613-514C-4D6B-804A-2A7925F278F3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {742C3613-514C-4D6B-804A-2A7925F278F3}.Debug|x64.ActiveCfg = Debug|Any CPU + {742C3613-514C-4D6B-804A-2A7925F278F3}.Debug|x64.Build.0 = Debug|Any CPU + {742C3613-514C-4D6B-804A-2A7925F278F3}.Debug|x86.ActiveCfg = Debug|Any CPU + {742C3613-514C-4D6B-804A-2A7925F278F3}.Debug|x86.Build.0 = Debug|Any CPU {742C3613-514C-4D6B-804A-2A7925F278F3}.Release|Any CPU.ActiveCfg = Release|Any CPU {742C3613-514C-4D6B-804A-2A7925F278F3}.Release|Any CPU.Build.0 = Release|Any CPU + {742C3613-514C-4D6B-804A-2A7925F278F3}.Release|x64.ActiveCfg = Release|Any CPU + {742C3613-514C-4D6B-804A-2A7925F278F3}.Release|x64.Build.0 = Release|Any CPU + {742C3613-514C-4D6B-804A-2A7925F278F3}.Release|x86.ActiveCfg = Release|Any CPU + {742C3613-514C-4D6B-804A-2A7925F278F3}.Release|x86.Build.0 = Release|Any CPU {98A16FFD-0C99-4665-AC64-DC17E86879A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {98A16FFD-0C99-4665-AC64-DC17E86879A2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {98A16FFD-0C99-4665-AC64-DC17E86879A2}.Debug|x64.ActiveCfg = Debug|Any CPU + {98A16FFD-0C99-4665-AC64-DC17E86879A2}.Debug|x64.Build.0 = Debug|Any CPU + {98A16FFD-0C99-4665-AC64-DC17E86879A2}.Debug|x86.ActiveCfg = Debug|Any CPU + {98A16FFD-0C99-4665-AC64-DC17E86879A2}.Debug|x86.Build.0 = Debug|Any CPU {98A16FFD-0C99-4665-AC64-DC17E86879A2}.Release|Any CPU.ActiveCfg = Release|Any CPU {98A16FFD-0C99-4665-AC64-DC17E86879A2}.Release|Any CPU.Build.0 = Release|Any CPU + {98A16FFD-0C99-4665-AC64-DC17E86879A2}.Release|x64.ActiveCfg = Release|Any CPU + {98A16FFD-0C99-4665-AC64-DC17E86879A2}.Release|x64.Build.0 = Release|Any CPU + {98A16FFD-0C99-4665-AC64-DC17E86879A2}.Release|x86.ActiveCfg = Release|Any CPU + {98A16FFD-0C99-4665-AC64-DC17E86879A2}.Release|x86.Build.0 = Release|Any CPU + {1B99CF0D-85B8-5386-EE88-A7BA65281F7F}.Debug|Any CPU.ActiveCfg = Debug|x64 + {1B99CF0D-85B8-5386-EE88-A7BA65281F7F}.Debug|Any CPU.Build.0 = Debug|x64 + {1B99CF0D-85B8-5386-EE88-A7BA65281F7F}.Debug|Any CPU.Deploy.0 = Debug|x64 + {1B99CF0D-85B8-5386-EE88-A7BA65281F7F}.Debug|x64.ActiveCfg = Debug|Any CPU + {1B99CF0D-85B8-5386-EE88-A7BA65281F7F}.Debug|x64.Build.0 = Debug|Any CPU + {1B99CF0D-85B8-5386-EE88-A7BA65281F7F}.Debug|x86.ActiveCfg = Debug|Any CPU + {1B99CF0D-85B8-5386-EE88-A7BA65281F7F}.Debug|x86.Build.0 = Debug|Any CPU + {1B99CF0D-85B8-5386-EE88-A7BA65281F7F}.Release|Any CPU.ActiveCfg = Release|x64 + {1B99CF0D-85B8-5386-EE88-A7BA65281F7F}.Release|Any CPU.Build.0 = Release|x64 + {1B99CF0D-85B8-5386-EE88-A7BA65281F7F}.Release|Any CPU.Deploy.0 = Release|x64 + {1B99CF0D-85B8-5386-EE88-A7BA65281F7F}.Release|x64.ActiveCfg = Release|Any CPU + {1B99CF0D-85B8-5386-EE88-A7BA65281F7F}.Release|x64.Build.0 = Release|Any CPU + {1B99CF0D-85B8-5386-EE88-A7BA65281F7F}.Release|x86.ActiveCfg = Release|Any CPU + {1B99CF0D-85B8-5386-EE88-A7BA65281F7F}.Release|x86.Build.0 = Release|Any CPU + {3E66DE97-B578-4752-92D0-496A3124C947}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3E66DE97-B578-4752-92D0-496A3124C947}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3E66DE97-B578-4752-92D0-496A3124C947}.Debug|x64.ActiveCfg = Debug|Any CPU + {3E66DE97-B578-4752-92D0-496A3124C947}.Debug|x64.Build.0 = Debug|Any CPU + {3E66DE97-B578-4752-92D0-496A3124C947}.Debug|x86.ActiveCfg = Debug|Any CPU + {3E66DE97-B578-4752-92D0-496A3124C947}.Debug|x86.Build.0 = Debug|Any CPU + {3E66DE97-B578-4752-92D0-496A3124C947}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3E66DE97-B578-4752-92D0-496A3124C947}.Release|Any CPU.Build.0 = Release|Any CPU + {3E66DE97-B578-4752-92D0-496A3124C947}.Release|x64.ActiveCfg = Release|Any CPU + {3E66DE97-B578-4752-92D0-496A3124C947}.Release|x64.Build.0 = Release|Any CPU + {3E66DE97-B578-4752-92D0-496A3124C947}.Release|x86.ActiveCfg = Release|Any CPU + {3E66DE97-B578-4752-92D0-496A3124C947}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -757,6 +1543,8 @@ Global {A7644C3B-B843-44F1-9940-560D56CB0936} = {4ED8B739-6F4E-4CD4-B993-545E6B5CE637} {742C3613-514C-4D6B-804A-2A7925F278F3} = {86C53C40-57AA-45B8-AD42-FAE0EFDF0F2B} {98A16FFD-0C99-4665-AC64-DC17E86879A2} = {4ED8B739-6F4E-4CD4-B993-545E6B5CE637} + {1B99CF0D-85B8-5386-EE88-A7BA65281F7F} = {9B9E3891-2366-4253-A952-D08BCEB71098} + {3E66DE97-B578-4752-92D0-496A3124C947} = {B39A8919-9F95-48FE-AD7B-76E08B509888} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {87366D66-1391-4D90-8999-95A620AD786A} diff --git a/Directory.Packages.props b/Directory.Packages.props index 58650e1729..e7c8ab084a 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -30,6 +30,8 @@ + + diff --git a/build/TargetFrameworks.props b/build/TargetFrameworks.props index 96541e7ecf..a380009e23 100644 --- a/build/TargetFrameworks.props +++ b/build/TargetFrameworks.props @@ -8,6 +8,7 @@ $(AvsCurrentTargetFramework)-ios26.0 $(AvsCurrentTargetFramework)-tvos26.0 $(AvsCurrentTargetFramework)-browser + $(AvsCurrentTargetFramework)-windows10.0.19041.0 net8.0 diff --git a/samples/ControlGallery.WinUI/App.xaml b/samples/ControlGallery.WinUI/App.xaml new file mode 100644 index 0000000000..88b20eca37 --- /dev/null +++ b/samples/ControlGallery.WinUI/App.xaml @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/samples/ControlGallery.WinUI/App.xaml.cs b/samples/ControlGallery.WinUI/App.xaml.cs new file mode 100644 index 0000000000..649aa094ea --- /dev/null +++ b/samples/ControlGallery.WinUI/App.xaml.cs @@ -0,0 +1,31 @@ +using global::Avalonia; +using global::Avalonia.Skia; +using global::Avalonia.Win32; +using WinUIApplication = Microsoft.UI.Xaml.Application; +using LaunchActivatedEventArgs = Microsoft.UI.Xaml.LaunchActivatedEventArgs; +using Window = Microsoft.UI.Xaml.Window; + +namespace ControlGallery.WinUI +{ + public partial class App : WinUIApplication + { + private Window? _window; + + public App() + { + InitializeComponent(); + } + + protected override void OnLaunched(LaunchActivatedEventArgs args) + { + AppBuilder.Configure() + .UseWin32() + .UseSkia() + .UseHarfBuzz() + .SetupWithoutStarting(); + + _window = new MainWindow(); + _window.Activate(); + } + } +} diff --git a/samples/ControlGallery.WinUI/Assets/LockScreenLogo.scale-200.png b/samples/ControlGallery.WinUI/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000..7440f0d4bf Binary files /dev/null and b/samples/ControlGallery.WinUI/Assets/LockScreenLogo.scale-200.png differ diff --git a/samples/ControlGallery.WinUI/Assets/SplashScreen.scale-200.png b/samples/ControlGallery.WinUI/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000..32f486a867 Binary files /dev/null and b/samples/ControlGallery.WinUI/Assets/SplashScreen.scale-200.png differ diff --git a/samples/ControlGallery.WinUI/Assets/Square150x150Logo.scale-200.png b/samples/ControlGallery.WinUI/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 0000000000..53ee3777ea Binary files /dev/null and b/samples/ControlGallery.WinUI/Assets/Square150x150Logo.scale-200.png differ diff --git a/samples/ControlGallery.WinUI/Assets/Square44x44Logo.scale-200.png b/samples/ControlGallery.WinUI/Assets/Square44x44Logo.scale-200.png new file mode 100644 index 0000000000..f713bba67f Binary files /dev/null and b/samples/ControlGallery.WinUI/Assets/Square44x44Logo.scale-200.png differ diff --git a/samples/ControlGallery.WinUI/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/samples/ControlGallery.WinUI/Assets/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 0000000000..dc9f5bea0c Binary files /dev/null and b/samples/ControlGallery.WinUI/Assets/Square44x44Logo.targetsize-24_altform-unplated.png differ diff --git a/samples/ControlGallery.WinUI/Assets/StoreLogo.png b/samples/ControlGallery.WinUI/Assets/StoreLogo.png new file mode 100644 index 0000000000..a4586f26bd Binary files /dev/null and b/samples/ControlGallery.WinUI/Assets/StoreLogo.png differ diff --git a/samples/ControlGallery.WinUI/Assets/Wide310x150Logo.scale-200.png b/samples/ControlGallery.WinUI/Assets/Wide310x150Logo.scale-200.png new file mode 100644 index 0000000000..8b4a5d0dd5 Binary files /dev/null and b/samples/ControlGallery.WinUI/Assets/Wide310x150Logo.scale-200.png differ diff --git a/samples/ControlGallery.WinUI/ControlGallery.WinUI.csproj b/samples/ControlGallery.WinUI/ControlGallery.WinUI.csproj new file mode 100644 index 0000000000..4b3d246aaf --- /dev/null +++ b/samples/ControlGallery.WinUI/ControlGallery.WinUI.csproj @@ -0,0 +1,67 @@ + + + WinExe + $(AvsCurrentWinUITargetFramework) + 10.0.17763.0 + ControlGallery.WinUI + app.manifest + x86;x64;ARM64 + win-x86;win-x64;win-arm64 + win-$(Platform).pubxml + true + false + true + enable + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + False + True + False + True + + \ No newline at end of file diff --git a/samples/ControlGallery.WinUI/MainWindow.xaml b/samples/ControlGallery.WinUI/MainWindow.xaml new file mode 100644 index 0000000000..9595ef8253 --- /dev/null +++ b/samples/ControlGallery.WinUI/MainWindow.xaml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/samples/ControlGallery.WinUI/MainWindow.xaml.cs b/samples/ControlGallery.WinUI/MainWindow.xaml.cs new file mode 100644 index 0000000000..e75dcc3ee8 --- /dev/null +++ b/samples/ControlGallery.WinUI/MainWindow.xaml.cs @@ -0,0 +1,11 @@ +namespace ControlGallery.WinUI +{ + public sealed partial class MainWindow : Microsoft.UI.Xaml.Window + { + public MainWindow() + { + InitializeComponent(); + AvaloniaPanel.Content = new ControlCatalog.MainView(); + } + } +} diff --git a/samples/ControlGallery.WinUI/Package.appxmanifest b/samples/ControlGallery.WinUI/Package.appxmanifest new file mode 100644 index 0000000000..1f2d157a2b --- /dev/null +++ b/samples/ControlGallery.WinUI/Package.appxmanifest @@ -0,0 +1,53 @@ + + + + + + + + + + ControlGallery.WinUI + drasticactions + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/ControlGallery.WinUI/Properties/launchSettings.json b/samples/ControlGallery.WinUI/Properties/launchSettings.json new file mode 100644 index 0000000000..ddb3c41a5a --- /dev/null +++ b/samples/ControlGallery.WinUI/Properties/launchSettings.json @@ -0,0 +1,10 @@ +{ + "profiles": { + "ControlGallery.WinUI (Package)": { + "commandName": "MsixPackage" + }, + "ControlGallery.WinUI (Unpackaged)": { + "commandName": "Project" + } + } +} \ No newline at end of file diff --git a/samples/ControlGallery.WinUI/app.manifest b/samples/ControlGallery.WinUI/app.manifest new file mode 100644 index 0000000000..e6d75d93fc --- /dev/null +++ b/samples/ControlGallery.WinUI/app.manifest @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + PerMonitorV2 + + + \ No newline at end of file diff --git a/src/Windows/Avalonia.Win32/Avalonia.Win32.csproj b/src/Windows/Avalonia.Win32/Avalonia.Win32.csproj index f2e75c8f6b..4488757762 100644 --- a/src/Windows/Avalonia.Win32/Avalonia.Win32.csproj +++ b/src/Windows/Avalonia.Win32/Avalonia.Win32.csproj @@ -36,6 +36,8 @@ + + diff --git a/src/Windows/Avalonia.WinUI/Avalonia.WinUI.csproj b/src/Windows/Avalonia.WinUI/Avalonia.WinUI.csproj new file mode 100644 index 0000000000..45b64b9e59 --- /dev/null +++ b/src/Windows/Avalonia.WinUI/Avalonia.WinUI.csproj @@ -0,0 +1,29 @@ + + + $(AvsCurrentWinUITargetFramework) + 10.0.17763.0 + true + false + true + true + enable + + + + + + + + + + + + + + $(NoWarn);CA1416 + + + + + + diff --git a/src/Windows/Avalonia.WinUI/AvaloniaSwapChainPanel.cs b/src/Windows/Avalonia.WinUI/AvaloniaSwapChainPanel.cs new file mode 100644 index 0000000000..092c894f67 --- /dev/null +++ b/src/Windows/Avalonia.WinUI/AvaloniaSwapChainPanel.cs @@ -0,0 +1,427 @@ +using System; +using System.Runtime.InteropServices; +using global::Avalonia; +using global::Avalonia.Controls.Embedding; +using global::Avalonia.Input; +using global::Avalonia.Input.Raw; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Input; +using AvControl = global::Avalonia.Controls.Control; +using AvSize = global::Avalonia.Size; +using AvPoint = global::Avalonia.Point; +using AvVector = global::Avalonia.Vector; +using AvRect = global::Avalonia.Rect; + +namespace Avalonia.WinUI; + +public partial class AvaloniaSwapChainPanel : SwapChainPanel +{ + private SwapChainGlSurface? _glSurface; + private SwapChainPanelTopLevelImpl? _topLevelImpl; + private EmbeddableControlRoot? _root; + private AvControl? _content; + private readonly MouseDevice _mouseDevice = new(); + private readonly TouchDevice _touchDevice = new(); + private readonly PenDevice _penDevice = new(releasePointerOnPenUp: false); + private PixelSize _cachedPixelSize = new(1, 1); + private double _cachedScaling = 1.0; + + public AvaloniaSwapChainPanel() + { + IsTabStop = true; + + Loaded += OnLoaded; + Unloaded += OnUnloaded; + SizeChanged += OnSizeChanged; + CompositionScaleChanged += OnCompositionScaleChanged; + + PointerPressed += OnPointerPressed; + PointerMoved += OnPointerMoved; + PointerReleased += OnPointerReleased; + PointerWheelChanged += OnPointerWheelChanged; + PointerCanceled += OnPointerCanceled; + KeyDown += OnKeyDown; + KeyUp += OnKeyUp; + CharacterReceived += OnCharacterReceived; + } + + public AvControl? Content + { + get => _content; + set + { + _content = value; + if (_root is not null) + _root.Content = value; + } + } + + private void UpdateCachedSize() + { + var w = Math.Max(1, (int)(ActualWidth * CompositionScaleX)); + var h = Math.Max(1, (int)(ActualHeight * CompositionScaleY)); + _cachedPixelSize = new PixelSize(w, h); + _cachedScaling = CompositionScaleX; + } + + private PixelSize GetPixelSize() => _cachedPixelSize; + + private double GetScaling() => _cachedScaling; + + private void OnLoaded(object sender, RoutedEventArgs e) + { + if (_glSurface is not null) + return; + + UpdateCachedSize(); + + // Create the GL surface — swap chain creation is deferred to CreateGlRenderTarget + // where we have the actual rendering context's D3D device + _glSurface = new SwapChainGlSurface(GetPixelSize, GetScaling, OnSwapChainCreated); + _topLevelImpl = new SwapChainPanelTopLevelImpl(_glSurface); + _topLevelImpl.ClientSize = new AvSize(ActualWidth, ActualHeight); + _topLevelImpl.RenderScaling = CompositionScaleX; + + // Create and start the EmbeddableControlRoot + _root = new EmbeddableControlRoot(_topLevelImpl); + _root.Content = _content; + _root.Prepare(); + _root.StartRendering(); + } + + private unsafe void OnSwapChainCreated(IntPtr swapChainPtr) + { + // Called from the render thread when the swap chain is first created. + // Set it on the panel via ISwapChainPanelNative COM interop. + DispatcherQueue.TryEnqueue(() => + { + var panelUnknown = Marshal.GetIUnknownForObject(this); + try + { + var iid = new Guid("63aad0b8-7c24-40ff-85a8-640d944cc325"); + Marshal.QueryInterface(panelUnknown, in iid, out var nativePtr); + if (nativePtr != IntPtr.Zero) + { + try + { + var vtable = *(IntPtr**)nativePtr; + var setSwapChain = (delegate* unmanaged[Stdcall])vtable[3]; + var hr = setSwapChain(nativePtr, swapChainPtr); + Marshal.ThrowExceptionForHR(hr); + } + finally + { + Marshal.Release(nativePtr); + } + } + } + finally + { + Marshal.Release(panelUnknown); + } + }); + } + + private void OnUnloaded(object sender, RoutedEventArgs e) + { + _root?.StopRendering(); + _root?.Dispose(); + _root = null; + _topLevelImpl = null; + _glSurface?.DisposeSwapChain(); + _glSurface = null; + _touchDevice.Dispose(); + _penDevice.Dispose(); + } + + private void OnSizeChanged(object sender, SizeChangedEventArgs e) + { + UpdateCachedSize(); + if (_topLevelImpl is not null) + _topLevelImpl.ClientSize = new AvSize(e.NewSize.Width, e.NewSize.Height); + } + + private void OnCompositionScaleChanged(SwapChainPanel sender, object args) + { + UpdateCachedSize(); + if (_topLevelImpl is not null) + _topLevelImpl.RenderScaling = CompositionScaleX; + } + + // Input forwarding + + private IPointerDevice GetPointerDevice(PointerRoutedEventArgs e) + { + return e.Pointer.PointerDeviceType switch + { + Microsoft.UI.Input.PointerDeviceType.Touch => _touchDevice, + Microsoft.UI.Input.PointerDeviceType.Pen => _penDevice, + _ => _mouseDevice + }; + } + + private RawPointerPoint CreateRawPointerPoint(PointerRoutedEventArgs e) + { + var point = e.GetCurrentPoint(this); + var props = point.Properties; + var pos = point.Position; + + var rawPoint = new RawPointerPoint + { + Position = new AvPoint(pos.X, pos.Y), + Pressure = props.Pressure, + Twist = props.Twist, + XTilt = props.XTilt, + YTilt = props.YTilt, + }; + + if (props.ContactRect is { Width: > 0 } or { Height: > 0 }) + { + var cr = props.ContactRect; + rawPoint.ContactRect = new AvRect(cr.X, cr.Y, cr.Width, cr.Height); + } + + return rawPoint; + } + + private RawPointerEventArgs CreatePointerArgs( + IInputDevice device, ulong timestamp, IInputRoot inputRoot, + RawPointerEventType type, RawPointerPoint point, + RawInputModifiers modifiers, uint pointerId) + { + return device is TouchDevice + ? new RawTouchEventArgs(device, timestamp, inputRoot, type, point, modifiers, pointerId) + : new RawPointerEventArgs(device, timestamp, inputRoot, type, point, modifiers) + { + RawPointerId = pointerId + }; + } + + private ulong GetTimestamp(PointerRoutedEventArgs e) + { + // WinUI PointerPoint.Timestamp is in microseconds; Avalonia expects milliseconds. + return e.GetCurrentPoint(this).Timestamp / 1000; + } + + private RawInputModifiers GetPointerModifiers(PointerRoutedEventArgs e) + { + var point = e.GetCurrentPoint(this); + var props = point.Properties; + var mods = WinUIKeyInterop.ModifiersFromVirtualKeyModifiers(e.KeyModifiers); + if (props.IsLeftButtonPressed) + mods |= RawInputModifiers.LeftMouseButton; + if (props.IsRightButtonPressed) + mods |= RawInputModifiers.RightMouseButton; + if (props.IsMiddleButtonPressed) + mods |= RawInputModifiers.MiddleMouseButton; + + if (e.Pointer.PointerDeviceType == Microsoft.UI.Input.PointerDeviceType.Pen) + { + if (props.IsBarrelButtonPressed) + mods |= RawInputModifiers.PenBarrelButton; + if (props.IsEraser) + mods |= RawInputModifiers.PenEraser; + if (props.IsInverted) + mods |= RawInputModifiers.PenInverted; + } + + return mods; + } + + private void OnPointerPressed(object sender, PointerRoutedEventArgs e) + { + if (_topLevelImpl?.Input is not { } input || _topLevelImpl.InputRoot is not { } inputRoot) + return; + + var device = GetPointerDevice(e); + var timestamp = GetTimestamp(e); + var rawPoint = CreateRawPointerPoint(e); + var modifiers = GetPointerModifiers(e); + var pointerId = e.Pointer.PointerId; + + RawPointerEventType type; + if (device is TouchDevice) + { + type = RawPointerEventType.TouchBegin; + } + else + { + var point = e.GetCurrentPoint(this); + var props = point.Properties; + if (props.IsLeftButtonPressed) + type = RawPointerEventType.LeftButtonDown; + else if (props.IsRightButtonPressed) + type = RawPointerEventType.RightButtonDown; + else if (props.IsMiddleButtonPressed) + type = RawPointerEventType.MiddleButtonDown; + else + return; + } + + Focus(FocusState.Pointer); + CapturePointer(e.Pointer); + + input(CreatePointerArgs(device, timestamp, inputRoot, type, rawPoint, modifiers, pointerId)); + e.Handled = true; + } + + private void OnPointerMoved(object sender, PointerRoutedEventArgs e) + { + if (_topLevelImpl?.Input is not { } input || _topLevelImpl.InputRoot is not { } inputRoot) + return; + + var device = GetPointerDevice(e); + var timestamp = GetTimestamp(e); + var rawPoint = CreateRawPointerPoint(e); + var modifiers = GetPointerModifiers(e); + var pointerId = e.Pointer.PointerId; + + var type = device is TouchDevice ? RawPointerEventType.TouchUpdate : RawPointerEventType.Move; + + input(CreatePointerArgs(device, timestamp, inputRoot, type, rawPoint, modifiers, pointerId)); + } + + private void OnPointerReleased(object sender, PointerRoutedEventArgs e) + { + if (_topLevelImpl?.Input is not { } input || _topLevelImpl.InputRoot is not { } inputRoot) + return; + + var device = GetPointerDevice(e); + var timestamp = GetTimestamp(e); + var rawPoint = CreateRawPointerPoint(e); + var modifiers = GetPointerModifiers(e); + var pointerId = e.Pointer.PointerId; + + RawPointerEventType type; + if (device is TouchDevice) + { + type = RawPointerEventType.TouchEnd; + } + else + { + var point = e.GetCurrentPoint(this); + var props = point.Properties; + switch (props.PointerUpdateKind) + { + case Microsoft.UI.Input.PointerUpdateKind.LeftButtonReleased: + type = RawPointerEventType.LeftButtonUp; + break; + case Microsoft.UI.Input.PointerUpdateKind.RightButtonReleased: + type = RawPointerEventType.RightButtonUp; + break; + case Microsoft.UI.Input.PointerUpdateKind.MiddleButtonReleased: + type = RawPointerEventType.MiddleButtonUp; + break; + default: + return; + } + } + + ReleasePointerCapture(e.Pointer); + input(CreatePointerArgs(device, timestamp, inputRoot, type, rawPoint, modifiers, pointerId)); + e.Handled = true; + } + + private void OnPointerWheelChanged(object sender, PointerRoutedEventArgs e) + { + if (_topLevelImpl?.Input is not { } input || _topLevelImpl.InputRoot is not { } inputRoot) + return; + + var device = GetPointerDevice(e); + var timestamp = GetTimestamp(e); + var point = e.GetCurrentPoint(this); + var delta = point.Properties.MouseWheelDelta; + var pos = point.Position; + + input(new RawMouseWheelEventArgs(device as MouseDevice ?? _mouseDevice, timestamp, inputRoot, + new AvPoint(pos.X, pos.Y), new AvVector(0, delta), GetPointerModifiers(e))); + e.Handled = true; + } + + private void OnPointerCanceled(object sender, PointerRoutedEventArgs e) + { + if (_topLevelImpl?.Input is not { } input || _topLevelImpl.InputRoot is not { } inputRoot) + return; + + var device = GetPointerDevice(e); + var timestamp = GetTimestamp(e); + var rawPoint = CreateRawPointerPoint(e); + var modifiers = GetPointerModifiers(e); + var pointerId = e.Pointer.PointerId; + + var type = device is TouchDevice ? RawPointerEventType.TouchCancel : RawPointerEventType.LeaveWindow; + + input(CreatePointerArgs(device, timestamp, inputRoot, type, rawPoint, modifiers, pointerId)); + e.Handled = true; + } + + private void OnKeyDown(object sender, KeyRoutedEventArgs e) + { + if (_topLevelImpl?.Input is not { } input || _topLevelImpl.InputRoot is not { } inputRoot) + return; + + var key = WinUIKeyInterop.KeyFromVirtualKey(e.Key); + if (key != Key.None) + { + var keyboard = GetKeyboardDevice(); + if (keyboard is null) return; + input(new RawKeyEventArgs(keyboard, (ulong)Environment.TickCount64, inputRoot, + RawKeyEventType.KeyDown, key, GetCurrentModifiers(), + PhysicalKey.None, null)); + e.Handled = true; + } + } + + private void OnKeyUp(object sender, KeyRoutedEventArgs e) + { + if (_topLevelImpl?.Input is not { } input || _topLevelImpl.InputRoot is not { } inputRoot) + return; + + var key = WinUIKeyInterop.KeyFromVirtualKey(e.Key); + if (key != Key.None) + { + var keyboard = GetKeyboardDevice(); + if (keyboard is null) return; + input(new RawKeyEventArgs(keyboard, (ulong)Environment.TickCount64, inputRoot, + RawKeyEventType.KeyUp, key, GetCurrentModifiers(), + PhysicalKey.None, null)); + e.Handled = true; + } + } + + private void OnCharacterReceived(UIElement sender, CharacterReceivedRoutedEventArgs e) + { + if (_topLevelImpl?.Input is not { } input || _topLevelImpl.InputRoot is not { } inputRoot) + return; + + var keyboard = GetKeyboardDevice(); + if (keyboard is null) return; + + var ch = e.Character; + if (!char.IsControl(ch) || ch == '\r' || ch == '\n' || ch == '\t') + { + input(new RawTextInputEventArgs(keyboard, (ulong)Environment.TickCount64, inputRoot, + new string(ch, 1))); + e.Handled = true; + } + } + + private static IKeyboardDevice? GetKeyboardDevice() + => AvaloniaLocator.Current.GetService(); + + private static RawInputModifiers GetCurrentModifiers() + { + var mods = RawInputModifiers.None; + var ctrlState = Microsoft.UI.Input.InputKeyboardSource.GetKeyStateForCurrentThread(Windows.System.VirtualKey.Control); + if (ctrlState.HasFlag(Windows.UI.Core.CoreVirtualKeyStates.Down)) + mods |= RawInputModifiers.Control; + var shiftState = Microsoft.UI.Input.InputKeyboardSource.GetKeyStateForCurrentThread(Windows.System.VirtualKey.Shift); + if (shiftState.HasFlag(Windows.UI.Core.CoreVirtualKeyStates.Down)) + mods |= RawInputModifiers.Shift; + var altState = Microsoft.UI.Input.InputKeyboardSource.GetKeyStateForCurrentThread(Windows.System.VirtualKey.Menu); + if (altState.HasFlag(Windows.UI.Core.CoreVirtualKeyStates.Down)) + mods |= RawInputModifiers.Alt; + return mods; + } +} diff --git a/src/Windows/Avalonia.WinUI/SwapChainGlSurface.cs b/src/Windows/Avalonia.WinUI/SwapChainGlSurface.cs new file mode 100644 index 0000000000..2ee4a2008d --- /dev/null +++ b/src/Windows/Avalonia.WinUI/SwapChainGlSurface.cs @@ -0,0 +1,248 @@ +using System; +using System.Runtime.InteropServices; +using global::Avalonia; +using global::Avalonia.OpenGL; +using global::Avalonia.OpenGL.Egl; +using global::Avalonia.OpenGL.Surfaces; +using global::Avalonia.Platform; +using global::Avalonia.Win32.DirectX; +using global::Avalonia.Win32.OpenGl.Angle; +using MicroCom.Runtime; + +namespace Avalonia.WinUI; + +internal unsafe class SwapChainGlSurface : EglGlPlatformSurfaceBase +{ + // QI for IDXGISwapChain2 fails on some Windows builds even though + // IDXGISwapChain3/4 succeed. Use IDXGISwapChain3 which inherits from + // IDXGISwapChain2 and has SetMatrixTransform at the same vtable slot. + private static readonly Guid IDXGISwapChain3Guid = new("94d99bdb-f1f8-4ab0-b236-7da0170edab1"); + + [DllImport("dxgi.dll", ExactSpelling = true)] + private static extern int CreateDXGIFactory2(uint Flags, in Guid riid, out IntPtr ppFactory); + + private readonly Func _getSizeFunc; + private readonly Func _getScalingFunc; + private readonly Action _setSwapChainCallback; + private IDXGISwapChain1? _swapChain; + private IntPtr _swapChain3Ptr; + + public SwapChainGlSurface( + Func getSizeFunc, + Func getScalingFunc, + Action setSwapChainCallback) + { + _getSizeFunc = getSizeFunc; + _getScalingFunc = getScalingFunc; + _setSwapChainCallback = setSwapChainCallback; + } + + public override IGlPlatformSurfaceRenderTarget CreateGlRenderTarget(IGlContext context) + { + var eglContext = (EglContext)context; + + if (_swapChain is null) + { + _swapChain = CreateSwapChain(eglContext); + + var swapChainPtr = MicroComRuntime.GetNativeIntPtr(_swapChain); + var guid = IDXGISwapChain3Guid; + var qiHr = Marshal.QueryInterface(swapChainPtr, in guid, out _swapChain3Ptr); + if (qiHr != 0 || _swapChain3Ptr == IntPtr.Zero) + throw new InvalidOperationException( + $"QI for IDXGISwapChain3 failed: HR=0x{qiHr:X8}, ptr={_swapChain3Ptr}"); + + SetInverseScaleTransform(_getScalingFunc()); + + _setSwapChainCallback(swapChainPtr); + } + + return new SwapChainGlRenderTarget(eglContext, _swapChain, _getSizeFunc, _getScalingFunc, _swapChain3Ptr, this); + } + + [StructLayout(LayoutKind.Sequential)] + internal struct DXGI_MATRIX_3X2_F + { + public float _11, _12; + public float _21, _22; + public float _31, _32; + } + + internal void SetInverseScaleTransform(double scaling) + { + if (_swapChain3Ptr == IntPtr.Zero || scaling <= 0) + return; + + var inverseScale = new DXGI_MATRIX_3X2_F + { + _11 = 1.0f / (float)scaling, + _22 = 1.0f / (float)scaling + }; + + // IDXGISwapChain2::SetMatrixTransform vtable slot: + // IUnknown(3) + IDXGIObject(4) + IDXGIDeviceSubObject(1) + + // IDXGISwapChain(10) + IDXGISwapChain1(11) + + // SetSourceSize, GetSourceSize, SetMaximumFrameLatency, + // GetMaximumFrameLatency, GetFrameLatencyWaitableObject = 5 + // → SetMatrixTransform is at slot 34 + var vtable = *(IntPtr**)_swapChain3Ptr; + var setMatrixTransform = (delegate* unmanaged[Stdcall])vtable[34]; + var hr = setMatrixTransform(_swapChain3Ptr, &inverseScale); + Marshal.ThrowExceptionForHR(hr); + } + + private IDXGISwapChain1 CreateSwapChain(EglContext eglContext) + { + var eglDisplay = (AngleWin32EglDisplay)eglContext.Display; + var d3dDevicePtr = eglDisplay.GetDirect3DDevice(); + var d3dDevice = MicroComRuntime.CreateProxyFor(d3dDevicePtr, false); + + IDXGIDevice dxgiDevice; + using (d3dDevice) + dxgiDevice = d3dDevice.QueryInterface(); + + Guid factoryGuid = MicroComRuntime.GetGuidFor(typeof(IDXGIFactory2)); + var hr = CreateDXGIFactory2(0, in factoryGuid, out var factoryPtr); + Marshal.ThrowExceptionForHR(hr); + var dxgiFactory = MicroComRuntime.CreateProxyFor(factoryPtr, true); + + var pixelSize = _getSizeFunc(); + var desc = new DXGI_SWAP_CHAIN_DESC1 + { + Format = DXGI_FORMAT.DXGI_FORMAT_B8G8R8A8_UNORM, + SampleDesc = new DXGI_SAMPLE_DESC { Count = 1, Quality = 0 }, + BufferUsage = DxgiRenderTarget.DXGI_USAGE_RENDER_TARGET_OUTPUT, + BufferCount = 2, + SwapEffect = DXGI_SWAP_EFFECT.DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL, + AlphaMode = DXGI_ALPHA_MODE.DXGI_ALPHA_MODE_PREMULTIPLIED, + Width = (uint)pixelSize.Width, + Height = (uint)pixelSize.Height, + Flags = 0 + }; + + var swapChain = dxgiFactory.CreateSwapChainForComposition(dxgiDevice, &desc, null); + + dxgiFactory.Dispose(); + dxgiDevice.Dispose(); + + return swapChain; + } + + public void DisposeSwapChain() + { + if (_swapChain3Ptr != IntPtr.Zero) + { + Marshal.Release(_swapChain3Ptr); + _swapChain3Ptr = IntPtr.Zero; + } + _swapChain?.Dispose(); + _swapChain = null; + } +} + +internal unsafe class SwapChainGlRenderTarget : EglPlatformSurfaceRenderTargetBase +{ + private static readonly Guid ID3D11Texture2DGuid = Guid.Parse("6F15AAF2-D208-4E89-9AB4-489535D34F9C"); + + private readonly IDXGISwapChain1 _swapChain; + private readonly Func _getSizeFunc; + private readonly Func _getScalingFunc; + private readonly IntPtr _swapChain3Ptr; + private readonly SwapChainGlSurface _owner; + + private IUnknown? _renderTexture; + private EglSurface? _surface; + private PixelSize _lastSize; + private double _lastScaling; + + public SwapChainGlRenderTarget( + EglContext context, + IDXGISwapChain1 swapChain, + Func getSizeFunc, + Func getScalingFunc, + IntPtr swapChain3Ptr, + SwapChainGlSurface owner) : base(context) + { + _swapChain = swapChain; + _getSizeFunc = getSizeFunc; + _getScalingFunc = getScalingFunc; + _swapChain3Ptr = swapChain3Ptr; + _owner = owner; + } + + public override IGlPlatformSurfaceRenderingSession BeginDrawCore(IRenderTarget.RenderTargetSceneInfo sceneInfo) + { + var contextLock = Context.EnsureCurrent(); + var success = false; + try + { + var size = _getSizeFunc(); + var scaling = _getScalingFunc(); + + if (scaling != _lastScaling) + { + _owner.SetInverseScaleTransform(scaling); + _lastScaling = scaling; + } + + if (size != _lastSize) + { + _surface?.Dispose(); + _surface = null; + _renderTexture?.Dispose(); + _renderTexture = null; + + _swapChain.ResizeBuffers(2, + (ushort)size.Width, + (ushort)size.Height, + DXGI_FORMAT.DXGI_FORMAT_B8G8R8A8_UNORM, + 0); + + _lastSize = size; + } + + if (_renderTexture is null) + { + _surface?.Dispose(); + _surface = null; + + Guid textureGuid = ID3D11Texture2DGuid; + _renderTexture = MicroComRuntime.CreateProxyFor( + _swapChain.GetBuffer(0, &textureGuid), true); + } + + if (_surface is null) + { + _surface = ((AngleWin32EglDisplay)Context.Display).WrapDirect3D11Texture( + MicroComRuntime.GetNativeIntPtr(_renderTexture), + 0, 0, size.Width, size.Height); + } + + var res = base.BeginDraw(_surface, size, scaling, () => + { + _swapChain.Present(1, 0); + contextLock?.Dispose(); + }, true); + success = true; + return res; + } + finally + { + if (!success) + { + _surface?.Dispose(); + _surface = null; + _renderTexture?.Dispose(); + _renderTexture = null; + contextLock.Dispose(); + } + } + } + + public override void Dispose() + { + base.Dispose(); + _surface?.Dispose(); + _renderTexture?.Dispose(); + } +} diff --git a/src/Windows/Avalonia.WinUI/SwapChainPanelTopLevelImpl.cs b/src/Windows/Avalonia.WinUI/SwapChainPanelTopLevelImpl.cs new file mode 100644 index 0000000000..6c1445fa29 --- /dev/null +++ b/src/Windows/Avalonia.WinUI/SwapChainPanelTopLevelImpl.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections.Generic; +using global::Avalonia; +using global::Avalonia.Controls; +using global::Avalonia.Input; +using global::Avalonia.Input.Raw; +using global::Avalonia.OpenGL.Surfaces; +using global::Avalonia.Platform; +using global::Avalonia.Platform.Surfaces; +using global::Avalonia.Rendering.Composition; +using Size = global::Avalonia.Size; +using Point = global::Avalonia.Point; +using Rect = global::Avalonia.Rect; +using PixelPoint = global::Avalonia.PixelPoint; + +namespace Avalonia.WinUI; + +internal class SwapChainPanelTopLevelImpl : ITopLevelImpl +{ + private readonly IGlPlatformSurface _glSurface; + private Size _clientSize; + private double _scaling = 1.0; + + public SwapChainPanelTopLevelImpl(IGlPlatformSurface glSurface) + { + _glSurface = glSurface; + var platformGraphics = AvaloniaLocator.Current.GetService(); + Compositor = new Compositor(platformGraphics); + } + + public Size ClientSize + { + get => _clientSize; + set + { + _clientSize = value; + Resized?.Invoke(value, WindowResizeReason.Unspecified); + } + } + + public double RenderScaling + { + get => _scaling; + set + { + _scaling = value; + ScalingChanged?.Invoke(value); + } + } + + public double DesktopScaling => _scaling; + + public IPlatformHandle? Handle => null; + + public Compositor Compositor { get; } + + public IPlatformRenderSurface[] Surfaces => [_glSurface]; + + public Action? Input { get; set; } + + public Action? Paint { get; set; } + + public Action? Resized { get; set; } + + public Action? ScalingChanged { get; set; } + + public Action? TransparencyLevelChanged { get; set; } + + public Action? Closed { get; set; } + + public Action? LostFocus { get; set; } + + public WindowTransparencyLevel TransparencyLevel => WindowTransparencyLevel.None; + + public AcrylicPlatformCompensationLevels AcrylicCompensationLevels { get; } = new(1, 1, 1); + + public IInputRoot? InputRoot { get; private set; } + + public void SetInputRoot(IInputRoot inputRoot) => InputRoot = inputRoot; + + public Point PointToClient(PixelPoint point) => point.ToPoint(_scaling); + + public PixelPoint PointToScreen(Point point) => PixelPoint.FromPoint(point, _scaling); + + public void SetCursor(ICursorImpl? cursor) { } + + // Uses overlays instead of popups. + public IPopupImpl? CreatePopup() => null; + + public void SetTransparencyLevelHint(IReadOnlyList transparencyLevels) { } + + public void SetFrameThemeVariant(PlatformThemeVariant themeVariant) { } + + public object? TryGetFeature(Type featureType) => null; + + public void Dispose() + { + Closed?.Invoke(); + } +} diff --git a/src/Windows/Avalonia.WinUI/WinUIKeyInterop.cs b/src/Windows/Avalonia.WinUI/WinUIKeyInterop.cs new file mode 100644 index 0000000000..a7f9ecbb73 --- /dev/null +++ b/src/Windows/Avalonia.WinUI/WinUIKeyInterop.cs @@ -0,0 +1,31 @@ +using global::Avalonia.Input; +using global::Avalonia.Input.Raw; +using global::Avalonia.Win32.Input; +using Windows.System; + +namespace Avalonia.WinUI; + +internal static class WinUIKeyInterop +{ + public static Key KeyFromVirtualKey(VirtualKey virtualKey) + { + // WinUI VirtualKey enum values match Win32 VK_ constants. + // Pass keyData=0; modifier disambiguation (L/R shift etc.) won't work + // via scan codes, but WinUI doesn't distinguish those anyway. + return KeyInterop.KeyFromVirtualKey((int)virtualKey, 0); + } + + public static RawInputModifiers ModifiersFromVirtualKeyModifiers(VirtualKeyModifiers modifiers) + { + var result = RawInputModifiers.None; + if (modifiers.HasFlag(VirtualKeyModifiers.Control)) + result |= RawInputModifiers.Control; + if (modifiers.HasFlag(VirtualKeyModifiers.Shift)) + result |= RawInputModifiers.Shift; + if (modifiers.HasFlag(VirtualKeyModifiers.Menu)) + result |= RawInputModifiers.Alt; + if (modifiers.HasFlag(VirtualKeyModifiers.Windows)) + result |= RawInputModifiers.Meta; + return result; + } +}