From db866ead1331b95623121520b29ca5d2d640e1e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Boh=C3=A1=C4=8Dek?= Date: Fri, 21 Jan 2022 22:03:13 +0100 Subject: [PATCH] feat(data): add skeleton for NosTale data --- .../IInfoService.cs | 51 ++++++++++++ .../Infos/ICardInfo.cs | 14 ++++ .../Infos/IItemInfo.cs | 14 ++++ .../Infos/IMapInfo.cs | 39 ++++++++++ .../Infos/IMonsterInfo.cs | 14 ++++ .../Infos/ISkillInfo.cs | 14 ++++ .../Infos/IVNumInfo.cs | 18 +++++ .../Language/ILanguageService.cs | 29 +++++++ .../Language/Language.cs | 58 ++++++++++++++ .../Language/LanguageKey.cs | 36 +++++++++ .../Language/LanguageServiceOptions.cs | 18 +++++ .../Language/TranslationRoot.cs | 38 +++++++++ .../NosSmooth.Data.Abstractions.csproj | 13 ++++ .../NosSmooth.Data.CLI.csproj | 10 +++ .../NosSmooth.Data.Database.csproj | 9 +++ .../NosSmooth.Data.NOSFiles.csproj | 14 ++++ NosSmooth.sln | 77 +++++++++++++++++++ 17 files changed, 466 insertions(+) create mode 100644 Data/NosSmooth.Data.Abstractions/IInfoService.cs create mode 100644 Data/NosSmooth.Data.Abstractions/Infos/ICardInfo.cs create mode 100644 Data/NosSmooth.Data.Abstractions/Infos/IItemInfo.cs create mode 100644 Data/NosSmooth.Data.Abstractions/Infos/IMapInfo.cs create mode 100644 Data/NosSmooth.Data.Abstractions/Infos/IMonsterInfo.cs create mode 100644 Data/NosSmooth.Data.Abstractions/Infos/ISkillInfo.cs create mode 100644 Data/NosSmooth.Data.Abstractions/Infos/IVNumInfo.cs create mode 100644 Data/NosSmooth.Data.Abstractions/Language/ILanguageService.cs create mode 100644 Data/NosSmooth.Data.Abstractions/Language/Language.cs create mode 100644 Data/NosSmooth.Data.Abstractions/Language/LanguageKey.cs create mode 100644 Data/NosSmooth.Data.Abstractions/Language/LanguageServiceOptions.cs create mode 100644 Data/NosSmooth.Data.Abstractions/Language/TranslationRoot.cs create mode 100644 Data/NosSmooth.Data.Abstractions/NosSmooth.Data.Abstractions.csproj create mode 100644 Data/NosSmooth.Data.CLI/NosSmooth.Data.CLI.csproj create mode 100644 Data/NosSmooth.Data.Database/NosSmooth.Data.Database.csproj create mode 100644 Data/NosSmooth.Data.NOSFiles/NosSmooth.Data.NOSFiles.csproj diff --git a/Data/NosSmooth.Data.Abstractions/IInfoService.cs b/Data/NosSmooth.Data.Abstractions/IInfoService.cs new file mode 100644 index 0000000..5bfe5ed --- /dev/null +++ b/Data/NosSmooth.Data.Abstractions/IInfoService.cs @@ -0,0 +1,51 @@ +// +// IInfoService.cs +// +// Copyright (c) František Boháček. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using NosSmooth.Data.Abstractions.Infos; +using Remora.Results; + +namespace NosSmooth.Data.Abstractions; + +/// +/// Service for retrieving information about NosTale objects. +/// +public interface IInfoService +{ + /// + /// Gets the information about an item. + /// + /// The vnum identifier of the item. + /// An item info or an error. + public Result GetItemInfo(long vnum); + + /// + /// Gets the information about a map. + /// + /// The vnum identifier of the map. + /// A map info or an error. + public Result GetMapInfo(long vnum); + + /// + /// Gets the information about a monster. + /// + /// The vnum identifier of the monster. + /// A monster or an error. + public Result GetMonsterInfo(long vnum); + + /// + /// Gets the information about a skill. + /// + /// The vnum identifier of the skill. + /// A map or an error. + public Result GetSkillInfo(long vnum); + + /// + /// Gets the information about a card. + /// + /// The vnum identifier of the card. + /// A card or an error. + public Result GetCardInfo(long vnum); +} \ No newline at end of file diff --git a/Data/NosSmooth.Data.Abstractions/Infos/ICardInfo.cs b/Data/NosSmooth.Data.Abstractions/Infos/ICardInfo.cs new file mode 100644 index 0000000..c3bd95d --- /dev/null +++ b/Data/NosSmooth.Data.Abstractions/Infos/ICardInfo.cs @@ -0,0 +1,14 @@ +// +// ICardInfo.cs +// +// Copyright (c) František Boháček. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace NosSmooth.Data.Abstractions.Infos; + +/// +/// The NosTale card information. +/// +public interface ICardInfo : IVNumInfo +{ +} \ No newline at end of file diff --git a/Data/NosSmooth.Data.Abstractions/Infos/IItemInfo.cs b/Data/NosSmooth.Data.Abstractions/Infos/IItemInfo.cs new file mode 100644 index 0000000..3e463a0 --- /dev/null +++ b/Data/NosSmooth.Data.Abstractions/Infos/IItemInfo.cs @@ -0,0 +1,14 @@ +// +// IItemInfo.cs +// +// Copyright (c) František Boháček. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace NosSmooth.Data.Abstractions.Infos; + +/// +/// The NosTale item information. +/// +public interface IItemInfo : IVNumInfo +{ +} \ No newline at end of file diff --git a/Data/NosSmooth.Data.Abstractions/Infos/IMapInfo.cs b/Data/NosSmooth.Data.Abstractions/Infos/IMapInfo.cs new file mode 100644 index 0000000..a6265f3 --- /dev/null +++ b/Data/NosSmooth.Data.Abstractions/Infos/IMapInfo.cs @@ -0,0 +1,39 @@ +// +// IMapInfo.cs +// +// Copyright (c) František Boháček. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace NosSmooth.Data.Abstractions.Infos; + +/// +/// The NosTale map information. +/// +public interface IMapInfo : IVNumInfo +{ + /// + /// Gets the width of the grid. + /// + public short Width { get; } + + /// + /// Gets the height of the grid. + /// + public short Height { get; } + + /// + /// Gets grid data for the given position. + /// + /// The x coordinate. + /// The y coordinate. + /// The grid value. + public byte GetData(short x, short y); + + /// + /// Gets whether the given position is walkable. + /// + /// The x coordinate. + /// The y coordinate. + /// Whether the position is walkable. + public bool IsWalkable(short x, short y); +} \ No newline at end of file diff --git a/Data/NosSmooth.Data.Abstractions/Infos/IMonsterInfo.cs b/Data/NosSmooth.Data.Abstractions/Infos/IMonsterInfo.cs new file mode 100644 index 0000000..7dd1f60 --- /dev/null +++ b/Data/NosSmooth.Data.Abstractions/Infos/IMonsterInfo.cs @@ -0,0 +1,14 @@ +// +// IMonsterInfo.cs +// +// Copyright (c) František Boháček. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace NosSmooth.Data.Abstractions.Infos; + +/// +/// The NosTale monster information. +/// +public interface IMonsterInfo : IVNumInfo +{ +} \ No newline at end of file diff --git a/Data/NosSmooth.Data.Abstractions/Infos/ISkillInfo.cs b/Data/NosSmooth.Data.Abstractions/Infos/ISkillInfo.cs new file mode 100644 index 0000000..82ac8ae --- /dev/null +++ b/Data/NosSmooth.Data.Abstractions/Infos/ISkillInfo.cs @@ -0,0 +1,14 @@ +// +// ISkillInfo.cs +// +// Copyright (c) František Boháček. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace NosSmooth.Data.Abstractions.Infos; + +/// +/// The NosTale skill information. +/// +public interface ISkillInfo +{ +} \ No newline at end of file diff --git a/Data/NosSmooth.Data.Abstractions/Infos/IVNumInfo.cs b/Data/NosSmooth.Data.Abstractions/Infos/IVNumInfo.cs new file mode 100644 index 0000000..cddfd92 --- /dev/null +++ b/Data/NosSmooth.Data.Abstractions/Infos/IVNumInfo.cs @@ -0,0 +1,18 @@ +// +// IVNumInfo.cs +// +// Copyright (c) František Boháček. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace NosSmooth.Data.Abstractions.Infos; + +/// +/// A NosTale info with a vnum key. +/// +public interface IVNumInfo +{ + /// + /// Gets the VNum of the info entry. + /// + public long VNum { get; } +} \ No newline at end of file diff --git a/Data/NosSmooth.Data.Abstractions/Language/ILanguageService.cs b/Data/NosSmooth.Data.Abstractions/Language/ILanguageService.cs new file mode 100644 index 0000000..1afc2b3 --- /dev/null +++ b/Data/NosSmooth.Data.Abstractions/Language/ILanguageService.cs @@ -0,0 +1,29 @@ +// +// ILanguageService.cs +// +// Copyright (c) František Boháček. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +using Remora.Results; + +namespace NosSmooth.Data.Abstractions.Language; + +/// +/// Service for translating NosTale strings. +/// +public interface ILanguageService +{ + /// + /// Gets or sets the current language. + /// + public Language CurrentLanguage { get; set; } + + /// + /// Gets the translation of the given key. + /// + /// The root type of the key. + /// The key to translate. + /// The language, will be used if null. + /// The translated string or an error. + public Result GetTranslation(TranslationRoot root, LanguageKey key, Language? language = default); +} \ No newline at end of file diff --git a/Data/NosSmooth.Data.Abstractions/Language/Language.cs b/Data/NosSmooth.Data.Abstractions/Language/Language.cs new file mode 100644 index 0000000..3956c00 --- /dev/null +++ b/Data/NosSmooth.Data.Abstractions/Language/Language.cs @@ -0,0 +1,58 @@ +// +// Language.cs +// +// Copyright (c) František Boháček. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace NosSmooth.Data.Abstractions.Language; + +/// +/// Languages supported by NosTale. +/// +public enum Language +{ + /// + /// English language. + /// + En, + + /// + /// German language. + /// + De, + + /// + /// French language. + /// + Fr, + + /// + /// Italian language. + /// + It, + + /// + /// Polish language. + /// + Pl, + + /// + /// Spanish language. + /// + Es, + + /// + /// Russian language. + /// + Ru, + + /// + /// Czech language. + /// + Cs, + + /// + /// Turkish language. + /// + Tr +} \ No newline at end of file diff --git a/Data/NosSmooth.Data.Abstractions/Language/LanguageKey.cs b/Data/NosSmooth.Data.Abstractions/Language/LanguageKey.cs new file mode 100644 index 0000000..cc8c77e --- /dev/null +++ b/Data/NosSmooth.Data.Abstractions/Language/LanguageKey.cs @@ -0,0 +1,36 @@ +// +// LanguageKey.cs +// +// Copyright (c) František Boháček. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace NosSmooth.Data.Abstractions.Language; + +/// +/// Key for language translation. +/// +public struct LanguageKey +{ + /// + /// Initializes a new instance of the struct. + /// + /// The key num. + public LanguageKey(long key) + : this($"zts{key}e") + { + } + + /// + /// Initializes a new instance of the struct. + /// + /// The key. + public LanguageKey(string key) + { + Key = key; + } + + /// + /// Gets the key. + /// + public string Key { get; } +} \ No newline at end of file diff --git a/Data/NosSmooth.Data.Abstractions/Language/LanguageServiceOptions.cs b/Data/NosSmooth.Data.Abstractions/Language/LanguageServiceOptions.cs new file mode 100644 index 0000000..7e1dd8c --- /dev/null +++ b/Data/NosSmooth.Data.Abstractions/Language/LanguageServiceOptions.cs @@ -0,0 +1,18 @@ +// +// LanguageServiceOptions.cs +// +// Copyright (c) František Boháček. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace NosSmooth.Data.Abstractions.Language; + +/// +/// Options for . +/// +public class LanguageServiceOptions +{ + /// + /// Get or sets the default language. + /// + public Language Language { get; set; } = Language.En; +} \ No newline at end of file diff --git a/Data/NosSmooth.Data.Abstractions/Language/TranslationRoot.cs b/Data/NosSmooth.Data.Abstractions/Language/TranslationRoot.cs new file mode 100644 index 0000000..947109d --- /dev/null +++ b/Data/NosSmooth.Data.Abstractions/Language/TranslationRoot.cs @@ -0,0 +1,38 @@ +// +// TranslationRoot.cs +// +// Copyright (c) František Boháček. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace NosSmooth.Data.Abstractions.Language; + +/// +/// Root type of a translation. +/// +public enum TranslationRoot +{ + /// + /// The translation is for a card. + /// + Card, + + /// + /// The translation is for an item. + /// + Item, + + /// + /// The translation is for a monster. + /// + Monster, + + /// + /// The translation for a skill. + /// + Skill, + + /// + /// The translation for a map. + /// + Map +} \ No newline at end of file diff --git a/Data/NosSmooth.Data.Abstractions/NosSmooth.Data.Abstractions.csproj b/Data/NosSmooth.Data.Abstractions/NosSmooth.Data.Abstractions.csproj new file mode 100644 index 0000000..dbb5776 --- /dev/null +++ b/Data/NosSmooth.Data.Abstractions/NosSmooth.Data.Abstractions.csproj @@ -0,0 +1,13 @@ + + + + net6.0 + enable + enable + + + + + + + diff --git a/Data/NosSmooth.Data.CLI/NosSmooth.Data.CLI.csproj b/Data/NosSmooth.Data.CLI/NosSmooth.Data.CLI.csproj new file mode 100644 index 0000000..c10fffa --- /dev/null +++ b/Data/NosSmooth.Data.CLI/NosSmooth.Data.CLI.csproj @@ -0,0 +1,10 @@ + + + + net6.0 + enable + enable + Exe + + + diff --git a/Data/NosSmooth.Data.Database/NosSmooth.Data.Database.csproj b/Data/NosSmooth.Data.Database/NosSmooth.Data.Database.csproj new file mode 100644 index 0000000..eb2460e --- /dev/null +++ b/Data/NosSmooth.Data.Database/NosSmooth.Data.Database.csproj @@ -0,0 +1,9 @@ + + + + net6.0 + enable + enable + + + diff --git a/Data/NosSmooth.Data.NOSFiles/NosSmooth.Data.NOSFiles.csproj b/Data/NosSmooth.Data.NOSFiles/NosSmooth.Data.NOSFiles.csproj new file mode 100644 index 0000000..18ab226 --- /dev/null +++ b/Data/NosSmooth.Data.NOSFiles/NosSmooth.Data.NOSFiles.csproj @@ -0,0 +1,14 @@ + + + + net6.0 + enable + enable + + + + + + + + diff --git a/NosSmooth.sln b/NosSmooth.sln index 46881c0..a330349 100644 --- a/NosSmooth.sln +++ b/NosSmooth.sln @@ -28,6 +28,18 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NosSmooth.Packets", "Packet EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NosSmooth.PacketSerializer.Abstractions", "Packets\NosSmooth.PacketSerializer.Abstractions\NosSmooth.PacketSerializer.Abstractions.csproj", "{CF03BCEA-EB5B-427F-8576-7DA7EB869BDC}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NosSmooth.ChatCommands", "Local\NosSmooth.ChatCommands\NosSmooth.ChatCommands.csproj", "{7DC7FC22-EFA6-4EB0-8E75-99F746E50F6E}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Data", "Data", "{1C785A74-19B9-42D2-93B1-F4EC9D6A8CFD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NosSmooth.Data.Abstractions", "Data\NosSmooth.Data.Abstractions\NosSmooth.Data.Abstractions.csproj", "{7901F7FF-FB76-4A4C-8DCA-F74543624130}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NosSmooth.Data.Database", "Data\NosSmooth.Data.Database\NosSmooth.Data.Database.csproj", "{C4114AC1-72E8-46DA-9B4B-A4C942004492}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NosSmooth.Data.NOSFiles", "Data\NosSmooth.Data.NOSFiles\NosSmooth.Data.NOSFiles.csproj", "{4820B9B7-00E6-4E0C-B93A-83BB98C1EE99}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NosSmooth.Data.CLI", "Data\NosSmooth.Data.CLI\NosSmooth.Data.CLI.csproj", "{F1884ADF-6412-4E9B-81FD-357DC5761ADF}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -122,6 +134,66 @@ Global {CF03BCEA-EB5B-427F-8576-7DA7EB869BDC}.Release|x64.Build.0 = Release|Any CPU {CF03BCEA-EB5B-427F-8576-7DA7EB869BDC}.Release|x86.ActiveCfg = Release|Any CPU {CF03BCEA-EB5B-427F-8576-7DA7EB869BDC}.Release|x86.Build.0 = Release|Any CPU + {7DC7FC22-EFA6-4EB0-8E75-99F746E50F6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7DC7FC22-EFA6-4EB0-8E75-99F746E50F6E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7DC7FC22-EFA6-4EB0-8E75-99F746E50F6E}.Debug|x64.ActiveCfg = Debug|Any CPU + {7DC7FC22-EFA6-4EB0-8E75-99F746E50F6E}.Debug|x64.Build.0 = Debug|Any CPU + {7DC7FC22-EFA6-4EB0-8E75-99F746E50F6E}.Debug|x86.ActiveCfg = Debug|Any CPU + {7DC7FC22-EFA6-4EB0-8E75-99F746E50F6E}.Debug|x86.Build.0 = Debug|Any CPU + {7DC7FC22-EFA6-4EB0-8E75-99F746E50F6E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7DC7FC22-EFA6-4EB0-8E75-99F746E50F6E}.Release|Any CPU.Build.0 = Release|Any CPU + {7DC7FC22-EFA6-4EB0-8E75-99F746E50F6E}.Release|x64.ActiveCfg = Release|Any CPU + {7DC7FC22-EFA6-4EB0-8E75-99F746E50F6E}.Release|x64.Build.0 = Release|Any CPU + {7DC7FC22-EFA6-4EB0-8E75-99F746E50F6E}.Release|x86.ActiveCfg = Release|Any CPU + {7DC7FC22-EFA6-4EB0-8E75-99F746E50F6E}.Release|x86.Build.0 = Release|Any CPU + {7901F7FF-FB76-4A4C-8DCA-F74543624130}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7901F7FF-FB76-4A4C-8DCA-F74543624130}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7901F7FF-FB76-4A4C-8DCA-F74543624130}.Debug|x64.ActiveCfg = Debug|Any CPU + {7901F7FF-FB76-4A4C-8DCA-F74543624130}.Debug|x64.Build.0 = Debug|Any CPU + {7901F7FF-FB76-4A4C-8DCA-F74543624130}.Debug|x86.ActiveCfg = Debug|Any CPU + {7901F7FF-FB76-4A4C-8DCA-F74543624130}.Debug|x86.Build.0 = Debug|Any CPU + {7901F7FF-FB76-4A4C-8DCA-F74543624130}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7901F7FF-FB76-4A4C-8DCA-F74543624130}.Release|Any CPU.Build.0 = Release|Any CPU + {7901F7FF-FB76-4A4C-8DCA-F74543624130}.Release|x64.ActiveCfg = Release|Any CPU + {7901F7FF-FB76-4A4C-8DCA-F74543624130}.Release|x64.Build.0 = Release|Any CPU + {7901F7FF-FB76-4A4C-8DCA-F74543624130}.Release|x86.ActiveCfg = Release|Any CPU + {7901F7FF-FB76-4A4C-8DCA-F74543624130}.Release|x86.Build.0 = Release|Any CPU + {C4114AC1-72E8-46DA-9B4B-A4C942004492}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C4114AC1-72E8-46DA-9B4B-A4C942004492}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C4114AC1-72E8-46DA-9B4B-A4C942004492}.Debug|x64.ActiveCfg = Debug|Any CPU + {C4114AC1-72E8-46DA-9B4B-A4C942004492}.Debug|x64.Build.0 = Debug|Any CPU + {C4114AC1-72E8-46DA-9B4B-A4C942004492}.Debug|x86.ActiveCfg = Debug|Any CPU + {C4114AC1-72E8-46DA-9B4B-A4C942004492}.Debug|x86.Build.0 = Debug|Any CPU + {C4114AC1-72E8-46DA-9B4B-A4C942004492}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C4114AC1-72E8-46DA-9B4B-A4C942004492}.Release|Any CPU.Build.0 = Release|Any CPU + {C4114AC1-72E8-46DA-9B4B-A4C942004492}.Release|x64.ActiveCfg = Release|Any CPU + {C4114AC1-72E8-46DA-9B4B-A4C942004492}.Release|x64.Build.0 = Release|Any CPU + {C4114AC1-72E8-46DA-9B4B-A4C942004492}.Release|x86.ActiveCfg = Release|Any CPU + {C4114AC1-72E8-46DA-9B4B-A4C942004492}.Release|x86.Build.0 = Release|Any CPU + {4820B9B7-00E6-4E0C-B93A-83BB98C1EE99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4820B9B7-00E6-4E0C-B93A-83BB98C1EE99}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4820B9B7-00E6-4E0C-B93A-83BB98C1EE99}.Debug|x64.ActiveCfg = Debug|Any CPU + {4820B9B7-00E6-4E0C-B93A-83BB98C1EE99}.Debug|x64.Build.0 = Debug|Any CPU + {4820B9B7-00E6-4E0C-B93A-83BB98C1EE99}.Debug|x86.ActiveCfg = Debug|Any CPU + {4820B9B7-00E6-4E0C-B93A-83BB98C1EE99}.Debug|x86.Build.0 = Debug|Any CPU + {4820B9B7-00E6-4E0C-B93A-83BB98C1EE99}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4820B9B7-00E6-4E0C-B93A-83BB98C1EE99}.Release|Any CPU.Build.0 = Release|Any CPU + {4820B9B7-00E6-4E0C-B93A-83BB98C1EE99}.Release|x64.ActiveCfg = Release|Any CPU + {4820B9B7-00E6-4E0C-B93A-83BB98C1EE99}.Release|x64.Build.0 = Release|Any CPU + {4820B9B7-00E6-4E0C-B93A-83BB98C1EE99}.Release|x86.ActiveCfg = Release|Any CPU + {4820B9B7-00E6-4E0C-B93A-83BB98C1EE99}.Release|x86.Build.0 = Release|Any CPU + {F1884ADF-6412-4E9B-81FD-357DC5761ADF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F1884ADF-6412-4E9B-81FD-357DC5761ADF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F1884ADF-6412-4E9B-81FD-357DC5761ADF}.Debug|x64.ActiveCfg = Debug|Any CPU + {F1884ADF-6412-4E9B-81FD-357DC5761ADF}.Debug|x64.Build.0 = Debug|Any CPU + {F1884ADF-6412-4E9B-81FD-357DC5761ADF}.Debug|x86.ActiveCfg = Debug|Any CPU + {F1884ADF-6412-4E9B-81FD-357DC5761ADF}.Debug|x86.Build.0 = Debug|Any CPU + {F1884ADF-6412-4E9B-81FD-357DC5761ADF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F1884ADF-6412-4E9B-81FD-357DC5761ADF}.Release|Any CPU.Build.0 = Release|Any CPU + {F1884ADF-6412-4E9B-81FD-357DC5761ADF}.Release|x64.ActiveCfg = Release|Any CPU + {F1884ADF-6412-4E9B-81FD-357DC5761ADF}.Release|x64.Build.0 = Release|Any CPU + {F1884ADF-6412-4E9B-81FD-357DC5761ADF}.Release|x86.ActiveCfg = Release|Any CPU + {F1884ADF-6412-4E9B-81FD-357DC5761ADF}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -134,6 +206,11 @@ Global {C4DAFD83-C6DC-4597-AA1F-BA2F3ABB612C} = {54A49AC2-55B3-4156-8023-41C56719EBB5} {86B4ED0C-CD28-4C6C-B58E-B4B1F7AAD683} = {54A49AC2-55B3-4156-8023-41C56719EBB5} {CF03BCEA-EB5B-427F-8576-7DA7EB869BDC} = {54A49AC2-55B3-4156-8023-41C56719EBB5} + {7DC7FC22-EFA6-4EB0-8E75-99F746E50F6E} = {6078AE6E-7CD0-48E4-84E0-EB164D8881DA} + {7901F7FF-FB76-4A4C-8DCA-F74543624130} = {1C785A74-19B9-42D2-93B1-F4EC9D6A8CFD} + {C4114AC1-72E8-46DA-9B4B-A4C942004492} = {1C785A74-19B9-42D2-93B1-F4EC9D6A8CFD} + {4820B9B7-00E6-4E0C-B93A-83BB98C1EE99} = {1C785A74-19B9-42D2-93B1-F4EC9D6A8CFD} + {F1884ADF-6412-4E9B-81FD-357DC5761ADF} = {1C785A74-19B9-42D2-93B1-F4EC9D6A8CFD} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C5F46653-4DEC-429B-8580-4ED18ED9B4CA} -- 2.49.0