diff --git a/global.json b/global.json
new file mode 100644
index 0000000..3d26ee6
--- /dev/null
+++ b/global.json
@@ -0,0 +1,5 @@
+{
+ "sdk": {
+ "version": "2.2.401"
+ }
+}
diff --git a/src/AzureStorage.Tests/AzureStorage.Tests.csproj b/src/AzureStorage.Tests/AzureStorage.Tests.csproj
new file mode 100644
index 0000000..2bc7bb4
--- /dev/null
+++ b/src/AzureStorage.Tests/AzureStorage.Tests.csproj
@@ -0,0 +1,28 @@
+
+
+
+ netcoreapp2.2
+ false
+ Squadron.AzureStorage.Tests
+ Squadron.AzureStorage.Tests
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Always
+
+
+
+
diff --git a/src/AzureStorage.Tests/AzureStorageBlobResourceTests.cs b/src/AzureStorage.Tests/AzureStorageBlobResourceTests.cs
new file mode 100644
index 0000000..9c0d6d7
--- /dev/null
+++ b/src/AzureStorage.Tests/AzureStorageBlobResourceTests.cs
@@ -0,0 +1,37 @@
+using System.Text;
+using System.Threading.Tasks;
+using FluentAssertions;
+using Microsoft.Azure.Storage.Blob;
+using Xunit;
+
+namespace Squadron.AzureStorage.Tests
+{
+ public class AzureStorageBlobResourceTests : IClassFixture
+ {
+ private readonly AzureStorageBlobResource _azureStorageResource;
+
+ public AzureStorageBlobResourceTests(AzureStorageBlobResource azureStorageResource)
+ {
+ _azureStorageResource = azureStorageResource;
+ }
+
+ [Fact]
+ public async Task CreateBlobClient_UploadFile_ContentMatch()
+ {
+ //Arrange
+ CloudBlobClient blobClient = _azureStorageResource.CreateBlobClient();
+ CloudBlobContainer container = blobClient.GetContainerReference("foo");
+ await container.CreateIfNotExistsAsync();
+ string inputText = "Hello_AzureStorage";
+ var data = Encoding.UTF8.GetBytes(inputText);
+
+ //Act
+ CloudBlockBlob textFile = container.GetBlockBlobReference("test.txt");
+ await textFile.UploadFromByteArrayAsync(data, 0, data.Length);
+
+ //Assert
+ string downloaded = await textFile.DownloadTextAsync();
+ downloaded.Should().Be(inputText);
+ }
+ }
+}
diff --git a/src/AzureStorage.Tests/AzureStorageQueueResourceTests.cs b/src/AzureStorage.Tests/AzureStorageQueueResourceTests.cs
new file mode 100644
index 0000000..ce1770e
--- /dev/null
+++ b/src/AzureStorage.Tests/AzureStorageQueueResourceTests.cs
@@ -0,0 +1,37 @@
+using System.Threading.Tasks;
+using FluentAssertions;
+using Microsoft.Azure.Storage.Queue;
+using Xunit;
+
+namespace Squadron.AzureStorage.Tests
+{
+ public class AzureStorageQueueResourceTests : IClassFixture
+ {
+ private readonly AzureStorageQueueResource _azureStorageResource;
+
+ public AzureStorageQueueResourceTests(AzureStorageQueueResource azureStorageResource)
+ {
+ _azureStorageResource = azureStorageResource;
+ }
+
+ [Fact]
+ public async Task CreateQueueClient_AddMessage_Peeked()
+ {
+ //Arrange
+ CloudQueueClient queueClient = _azureStorageResource.CreateQueueClient();
+ CloudQueue queue = queueClient.GetQueueReference("foo");
+ string messageText = "Hello_AzureStorage";
+
+ await queue.CreateIfNotExistsAsync();
+ var message = new CloudQueueMessage(messageText);
+
+ //Act
+ queue.AddMessage(message);
+
+ //Assert
+ CloudQueueMessage peekedMessage = await queue.PeekMessageAsync();
+ peekedMessage.AsString.Should().Be(messageText);
+ }
+
+ }
+}
diff --git a/src/AzureStorage.Tests/xunit.runner.json b/src/AzureStorage.Tests/xunit.runner.json
new file mode 100644
index 0000000..bd5fcdd
--- /dev/null
+++ b/src/AzureStorage.Tests/xunit.runner.json
@@ -0,0 +1,4 @@
+{
+ "appDomain": "denied",
+ "parallelizeAssembly": true
+}
\ No newline at end of file
diff --git a/src/AzureStorage/AzureStorage.csproj b/src/AzureStorage/AzureStorage.csproj
new file mode 100644
index 0000000..181d119
--- /dev/null
+++ b/src/AzureStorage/AzureStorage.csproj
@@ -0,0 +1,36 @@
+
+
+
+ netstandard2.0
+ Squadron
+ Squadron.AzureStorage
+ true
+
+
+
+ bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml
+
+
+
+ Full
+ true
+
+
+
+ pdbonly
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/AzureStorage/Blob/AzureStorageBlobImageSettings.cs b/src/AzureStorage/Blob/AzureStorageBlobImageSettings.cs
new file mode 100644
index 0000000..38d8a75
--- /dev/null
+++ b/src/AzureStorage/Blob/AzureStorageBlobImageSettings.cs
@@ -0,0 +1,24 @@
+using System.Collections.Generic;
+
+namespace Squadron
+{
+ public class AzureStorageBlobImageSettings : IImageSettings
+ {
+ public AzureStorageBlobImageSettings()
+ {
+ EnvironmentVariable =
+ new List();
+ }
+
+ public string Name { get; } = ContainerName.Create();
+ public string Image { get; } = "mcr.microsoft.com/azure-storage/azurite";
+ public long ContainerPort { get; } = 10000;
+ public long HostPort { get; set; }
+ public string ContainerId { get; set; }
+ public string ContainerAddress { get; set; }
+ public string Username { get; } = string.Empty;
+ public string Password { get; } = string.Empty;
+ public List EnvironmentVariable { get; }
+ public string Logs { get; set; }
+ }
+}
diff --git a/src/AzureStorage/Blob/AzureStorageBlobResource.cs b/src/AzureStorage/Blob/AzureStorageBlobResource.cs
new file mode 100644
index 0000000..03c4ac7
--- /dev/null
+++ b/src/AzureStorage/Blob/AzureStorageBlobResource.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Threading.Tasks;
+using Microsoft.Azure.Storage;
+using Microsoft.Azure.Storage.Blob;
+using Xunit;
+
+namespace Squadron
+{
+ ///
+ /// Represents a AzureStorage blob resource that can be used by unit tests.
+ /// Currenty Blob and Queues are supported by this resource
+ ///
+ ///
+ public class AzureStorageBlobResource
+ : ResourceBase, IAsyncLifetime
+ {
+ CloudStorageAccount _storageAccount = null;
+
+ public async Task InitializeAsync()
+ {
+ await StartContainerAsync();
+
+ _storageAccount = CloudStorageAccountBuilder.GetForBlob(Settings);
+
+ await Initializer.WaitAsync(
+ new AzureStorageBlobStatus(_storageAccount), Settings);
+ }
+
+ ///
+ /// Creates a Blob client
+ ///
+ ///
+ public CloudBlobClient CreateBlobClient()
+ {
+ return _storageAccount.CreateCloudBlobClient();
+ }
+
+ ///
+ public async Task DisposeAsync()
+ {
+ await StopContainerAsync();
+ }
+ }
+}
diff --git a/src/AzureStorage/Blob/AzureStorageBlobStatus.cs b/src/AzureStorage/Blob/AzureStorageBlobStatus.cs
new file mode 100644
index 0000000..badcda2
--- /dev/null
+++ b/src/AzureStorage/Blob/AzureStorageBlobStatus.cs
@@ -0,0 +1,41 @@
+using System.Threading.Tasks;
+using Microsoft.Azure.Storage;
+using Microsoft.Azure.Storage.Blob;
+using Microsoft.Azure.Storage.Shared.Protocol;
+
+namespace Squadron
+{
+ ///
+ /// Status checker for AzureStorage Blob
+ ///
+ ///
+ public class AzureStorageBlobStatus : IResourceStatusProvider
+ {
+ private readonly CloudStorageAccount _account;
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public AzureStorageBlobStatus(CloudStorageAccount account)
+ {
+ _account = account;
+ }
+
+ ///
+ /// Determines whether Azure Blob is ready
+ ///
+ public async Task IsReadyAsync()
+ {
+ CloudBlobClient blobClient = _account.CreateCloudBlobClient();
+ ServiceProperties serviceProperties =
+ await blobClient.GetServicePropertiesAsync(
+ new BlobRequestOptions(),
+ default);
+ return new Status
+ {
+ IsReady = serviceProperties != null,
+ Message = _account.BlobStorageUri.ToString()
+ };
+ }
+ }
+}
diff --git a/src/AzureStorage/CloudStorageAccountBuilder.cs b/src/AzureStorage/CloudStorageAccountBuilder.cs
new file mode 100644
index 0000000..74e9138
--- /dev/null
+++ b/src/AzureStorage/CloudStorageAccountBuilder.cs
@@ -0,0 +1,29 @@
+using Microsoft.Azure.Storage;
+
+namespace Squadron
+{
+ internal static class CloudStorageAccountBuilder
+ {
+ internal static CloudStorageAccount GetForBlob(IImageSettings settings)
+ {
+ return GetAccountByEndpoint("BlobEndpoint", settings);
+ }
+
+ internal static CloudStorageAccount GetForQueue(IImageSettings settings)
+ {
+ return GetAccountByEndpoint("QueueEndpoint", settings);
+ }
+
+ private static CloudStorageAccount GetAccountByEndpoint(
+ string endpoint,
+ IImageSettings settings)
+ {
+ CloudStorageAccount dev = CloudStorageAccount.DevelopmentStorageAccount;
+ return CloudStorageAccount.Parse(
+ $"DefaultEndpointsProtocol=http;AccountName={dev.Credentials.AccountName};" +
+ $"AccountKey={dev.Credentials.ExportBase64EncodedKey()};" +
+ $"{endpoint}=http://{settings.ContainerAddress}:{settings.HostPort}/" +
+ $"{dev.Credentials.AccountName};");
+ }
+ }
+}
diff --git a/src/AzureStorage/Queue/AzureStorageQueueImageSettings.cs b/src/AzureStorage/Queue/AzureStorageQueueImageSettings.cs
new file mode 100644
index 0000000..b713b0f
--- /dev/null
+++ b/src/AzureStorage/Queue/AzureStorageQueueImageSettings.cs
@@ -0,0 +1,24 @@
+using System.Collections.Generic;
+
+namespace Squadron
+{
+ public class AzureStorageQueueImageSettings : IImageSettings
+ {
+ public AzureStorageQueueImageSettings()
+ {
+ EnvironmentVariable =
+ new List();
+ }
+
+ public string Name { get; } = ContainerName.Create();
+ public string Image { get; } = "mcr.microsoft.com/azure-storage/azurite";
+ public long ContainerPort { get; } = 10001;
+ public long HostPort { get; set; }
+ public string ContainerId { get; set; }
+ public string ContainerAddress { get; set; }
+ public string Username { get; } = string.Empty;
+ public string Password { get; } = string.Empty;
+ public List EnvironmentVariable { get; }
+ public string Logs { get; set; }
+ }
+}
diff --git a/src/AzureStorage/Queue/AzureStorageQueueResource.cs b/src/AzureStorage/Queue/AzureStorageQueueResource.cs
new file mode 100644
index 0000000..7d244e1
--- /dev/null
+++ b/src/AzureStorage/Queue/AzureStorageQueueResource.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Threading.Tasks;
+using Microsoft.Azure.Storage;
+using Microsoft.Azure.Storage.Blob;
+using Microsoft.Azure.Storage.Queue;
+using Xunit;
+
+namespace Squadron
+{
+ ///
+ /// Represents a AzureStorage queue resource that can be used by unit tests.
+ /// Currenty Blob and Queues are supported by this resource
+ ///
+ ///
+ public class AzureStorageQueueResource
+ : ResourceBase, IAsyncLifetime
+ {
+ CloudStorageAccount _storageAccount = null;
+
+ public async Task InitializeAsync()
+ {
+ await StartContainerAsync();
+
+ _storageAccount = CloudStorageAccountBuilder.GetForQueue(Settings);
+
+ await Initializer.WaitAsync(
+ new AzureStorageQueueStatus(_storageAccount), Settings);
+ }
+
+
+ ///
+ /// Creates a Queue client
+ ///
+ ///
+ public CloudQueueClient CreateQueueClient()
+ {
+ return _storageAccount.CreateCloudQueueClient();
+ }
+
+ ///
+ public async Task DisposeAsync()
+ {
+ await StopContainerAsync();
+ }
+ }
+}
diff --git a/src/AzureStorage/Queue/AzureStorageQueueStatus.cs b/src/AzureStorage/Queue/AzureStorageQueueStatus.cs
new file mode 100644
index 0000000..c00a34b
--- /dev/null
+++ b/src/AzureStorage/Queue/AzureStorageQueueStatus.cs
@@ -0,0 +1,42 @@
+using System.Threading.Tasks;
+using Microsoft.Azure.Storage;
+using Microsoft.Azure.Storage.Blob;
+using Microsoft.Azure.Storage.Queue;
+using Microsoft.Azure.Storage.Shared.Protocol;
+
+namespace Squadron
+{
+ ///
+ /// Status checker for AzureStorage Queues
+ ///
+ ///
+ public class AzureStorageQueueStatus : IResourceStatusProvider
+ {
+ private readonly CloudStorageAccount _account;
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public AzureStorageQueueStatus(CloudStorageAccount account)
+ {
+ _account = account;
+ }
+
+ ///
+ /// Determines whether Azure Queue is ready
+ ///
+ public async Task IsReadyAsync()
+ {
+ CloudQueueClient blobClient = _account.CreateCloudQueueClient();
+ ServiceProperties serviceProperties =
+ await blobClient.GetServicePropertiesAsync(
+ new QueueRequestOptions(),
+ default);
+ return new Status
+ {
+ IsReady = serviceProperties != null,
+ Message = _account.QueueStorageUri.ToString()
+ };
+ }
+ }
+}
diff --git a/src/Core.Tests/xunit.runner.json b/src/Core.Tests/xunit.runner.json
index bd5fcdd..e07cdab 100644
--- a/src/Core.Tests/xunit.runner.json
+++ b/src/Core.Tests/xunit.runner.json
@@ -1,4 +1,4 @@
-{
+{
"appDomain": "denied",
"parallelizeAssembly": true
-}
\ No newline at end of file
+}
diff --git a/src/Core/Core.csproj b/src/Core/Core.csproj
index 78edc7f..bf0d291 100644
--- a/src/Core/Core.csproj
+++ b/src/Core/Core.csproj
@@ -6,6 +6,7 @@
Squadron
Squadron.Core
true
+ 8.0
diff --git a/src/Core/DockerManager.cs b/src/Core/DockerManager.cs
index dc51e40..976ca1f 100644
--- a/src/Core/DockerManager.cs
+++ b/src/Core/DockerManager.cs
@@ -74,7 +74,7 @@ public static async Task CreateAndStartContainer(
"Docker container creation/startup failed.");
}
- settings.Logs = await ConsumeLogs(settings, TimeSpan.FromSeconds(15));
+ settings.Logs = await ConsumeLogs(settings, TimeSpan.FromSeconds(10));
var success = await ResolveContainerAddress(settings) &&
await ResolveHostPort(settings);
diff --git a/src/Core/DockerModelsExtensions.cs b/src/Core/DockerModelsExtensions.cs
index c5db2f4..a2b7eb6 100644
--- a/src/Core/DockerModelsExtensions.cs
+++ b/src/Core/DockerModelsExtensions.cs
@@ -1,3 +1,4 @@
+using System.Collections.Generic;
using Docker.DotNet.Models;
namespace Squadron
diff --git a/src/Core/IImageSettings.cs b/src/Core/IImageSettings.cs
index 99e6746..cdb5a76 100644
--- a/src/Core/IImageSettings.cs
+++ b/src/Core/IImageSettings.cs
@@ -1,3 +1,4 @@
+using System;
using System.Collections.Generic;
namespace Squadron
diff --git a/src/Core/Initializer.cs b/src/Core/Initializer.cs
index d90af37..310937d 100644
--- a/src/Core/Initializer.cs
+++ b/src/Core/Initializer.cs
@@ -38,8 +38,8 @@ internal static async Task WaitAsync(
{
// We are not interested in any client errors
}
-
- await Task.Delay(TimeSpan.FromSeconds(2));
+ if (!status.IsReady)
+ await Task.Delay(TimeSpan.FromSeconds(2));
}
if (!status.IsReady)
diff --git a/src/Squadron.sln b/src/Squadron.sln
index 329d322..b720897 100644
--- a/src/Squadron.sln
+++ b/src/Squadron.sln
@@ -1,134 +1,162 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.29009.5
-MinimumVisualStudioVersion = 15.0.26124.0
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core", "Core\Core.csproj", "{CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core.Tests", "Core.Tests\Core.Tests.csproj", "{AD08DDBA-3CFC-47C8-B225-CD64673262DB}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mongo", "Mongo\Mongo.csproj", "{A46FA6B1-4521-4C53-9D38-5369470FB3D4}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mongo.Tests", "Mongo.Tests\Mongo.Tests.csproj", "{9A9BBEA0-1206-423F-B62F-E4ADA728E472}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elasticsearch", "Elasticsearch\Elasticsearch.csproj", "{0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elasticsearch.Tests", "Elasticsearch.Tests\Elasticsearch.Tests.csproj", "{3156BBFC-6475-4229-8B32-B1FCCCD0F385}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SqlServer", "SqlServer\SqlServer.csproj", "{1D2119F0-0EE5-462A-B921-5624037417AF}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SqlServer.Tests", "SqlServer.Tests\SqlServer.Tests.csproj", "{20780AE0-885D-41C9-9451-3C7946CCC279}"
-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
- {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Debug|x64.ActiveCfg = Debug|Any CPU
- {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Debug|x64.Build.0 = Debug|Any CPU
- {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Debug|x86.ActiveCfg = Debug|Any CPU
- {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Debug|x86.Build.0 = Debug|Any CPU
- {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Release|Any CPU.Build.0 = Release|Any CPU
- {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Release|x64.ActiveCfg = Release|Any CPU
- {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Release|x64.Build.0 = Release|Any CPU
- {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Release|x86.ActiveCfg = Release|Any CPU
- {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Release|x86.Build.0 = Release|Any CPU
- {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Debug|x64.ActiveCfg = Debug|Any CPU
- {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Debug|x64.Build.0 = Debug|Any CPU
- {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Debug|x86.ActiveCfg = Debug|Any CPU
- {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Debug|x86.Build.0 = Debug|Any CPU
- {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Release|Any CPU.Build.0 = Release|Any CPU
- {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Release|x64.ActiveCfg = Release|Any CPU
- {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Release|x64.Build.0 = Release|Any CPU
- {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Release|x86.ActiveCfg = Release|Any CPU
- {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Release|x86.Build.0 = Release|Any CPU
- {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Debug|x64.ActiveCfg = Debug|Any CPU
- {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Debug|x64.Build.0 = Debug|Any CPU
- {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Debug|x86.ActiveCfg = Debug|Any CPU
- {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Debug|x86.Build.0 = Debug|Any CPU
- {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Release|Any CPU.Build.0 = Release|Any CPU
- {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Release|x64.ActiveCfg = Release|Any CPU
- {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Release|x64.Build.0 = Release|Any CPU
- {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Release|x86.ActiveCfg = Release|Any CPU
- {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Release|x86.Build.0 = Release|Any CPU
- {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Debug|x64.ActiveCfg = Debug|Any CPU
- {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Debug|x64.Build.0 = Debug|Any CPU
- {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Debug|x86.ActiveCfg = Debug|Any CPU
- {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Debug|x86.Build.0 = Debug|Any CPU
- {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Release|Any CPU.Build.0 = Release|Any CPU
- {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Release|x64.ActiveCfg = Release|Any CPU
- {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Release|x64.Build.0 = Release|Any CPU
- {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Release|x86.ActiveCfg = Release|Any CPU
- {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Release|x86.Build.0 = Release|Any CPU
- {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Debug|x64.ActiveCfg = Debug|Any CPU
- {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Debug|x64.Build.0 = Debug|Any CPU
- {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Debug|x86.ActiveCfg = Debug|Any CPU
- {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Debug|x86.Build.0 = Debug|Any CPU
- {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Release|Any CPU.Build.0 = Release|Any CPU
- {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Release|x64.ActiveCfg = Release|Any CPU
- {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Release|x64.Build.0 = Release|Any CPU
- {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Release|x86.ActiveCfg = Release|Any CPU
- {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Release|x86.Build.0 = Release|Any CPU
- {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Debug|x64.ActiveCfg = Debug|Any CPU
- {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Debug|x64.Build.0 = Debug|Any CPU
- {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Debug|x86.ActiveCfg = Debug|Any CPU
- {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Debug|x86.Build.0 = Debug|Any CPU
- {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Release|Any CPU.Build.0 = Release|Any CPU
- {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Release|x64.ActiveCfg = Release|Any CPU
- {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Release|x64.Build.0 = Release|Any CPU
- {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Release|x86.ActiveCfg = Release|Any CPU
- {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Release|x86.Build.0 = Release|Any CPU
- {1D2119F0-0EE5-462A-B921-5624037417AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1D2119F0-0EE5-462A-B921-5624037417AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1D2119F0-0EE5-462A-B921-5624037417AF}.Debug|x64.ActiveCfg = Debug|Any CPU
- {1D2119F0-0EE5-462A-B921-5624037417AF}.Debug|x64.Build.0 = Debug|Any CPU
- {1D2119F0-0EE5-462A-B921-5624037417AF}.Debug|x86.ActiveCfg = Debug|Any CPU
- {1D2119F0-0EE5-462A-B921-5624037417AF}.Debug|x86.Build.0 = Debug|Any CPU
- {1D2119F0-0EE5-462A-B921-5624037417AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1D2119F0-0EE5-462A-B921-5624037417AF}.Release|Any CPU.Build.0 = Release|Any CPU
- {1D2119F0-0EE5-462A-B921-5624037417AF}.Release|x64.ActiveCfg = Release|Any CPU
- {1D2119F0-0EE5-462A-B921-5624037417AF}.Release|x64.Build.0 = Release|Any CPU
- {1D2119F0-0EE5-462A-B921-5624037417AF}.Release|x86.ActiveCfg = Release|Any CPU
- {1D2119F0-0EE5-462A-B921-5624037417AF}.Release|x86.Build.0 = Release|Any CPU
- {20780AE0-885D-41C9-9451-3C7946CCC279}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {20780AE0-885D-41C9-9451-3C7946CCC279}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {20780AE0-885D-41C9-9451-3C7946CCC279}.Debug|x64.ActiveCfg = Debug|Any CPU
- {20780AE0-885D-41C9-9451-3C7946CCC279}.Debug|x64.Build.0 = Debug|Any CPU
- {20780AE0-885D-41C9-9451-3C7946CCC279}.Debug|x86.ActiveCfg = Debug|Any CPU
- {20780AE0-885D-41C9-9451-3C7946CCC279}.Debug|x86.Build.0 = Debug|Any CPU
- {20780AE0-885D-41C9-9451-3C7946CCC279}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {20780AE0-885D-41C9-9451-3C7946CCC279}.Release|Any CPU.Build.0 = Release|Any CPU
- {20780AE0-885D-41C9-9451-3C7946CCC279}.Release|x64.ActiveCfg = Release|Any CPU
- {20780AE0-885D-41C9-9451-3C7946CCC279}.Release|x64.Build.0 = Release|Any CPU
- {20780AE0-885D-41C9-9451-3C7946CCC279}.Release|x86.ActiveCfg = Release|Any CPU
- {20780AE0-885D-41C9-9451-3C7946CCC279}.Release|x86.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {68767DE6-FA2A-4A9F-A7D3-AF07328CB620}
- EndGlobalSection
-EndGlobal
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29009.5
+MinimumVisualStudioVersion = 15.0.26124.0
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core", "Core\Core.csproj", "{CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Core.Tests", "Core.Tests\Core.Tests.csproj", "{AD08DDBA-3CFC-47C8-B225-CD64673262DB}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mongo", "Mongo\Mongo.csproj", "{A46FA6B1-4521-4C53-9D38-5369470FB3D4}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mongo.Tests", "Mongo.Tests\Mongo.Tests.csproj", "{9A9BBEA0-1206-423F-B62F-E4ADA728E472}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elasticsearch", "Elasticsearch\Elasticsearch.csproj", "{0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elasticsearch.Tests", "Elasticsearch.Tests\Elasticsearch.Tests.csproj", "{3156BBFC-6475-4229-8B32-B1FCCCD0F385}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SqlServer", "SqlServer\SqlServer.csproj", "{1D2119F0-0EE5-462A-B921-5624037417AF}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SqlServer.Tests", "SqlServer.Tests\SqlServer.Tests.csproj", "{20780AE0-885D-41C9-9451-3C7946CCC279}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureStorage", "AzureStorage\AzureStorage.csproj", "{5FBD7383-0AA3-4C25-A4CF-AE884BF4221E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AzureStorage.Tests", "AzureStorage.Tests\AzureStorage.Tests.csproj", "{AB4DC29E-2F8A-410A-8BFF-CD120515BA80}"
+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
+ {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Debug|x64.Build.0 = Debug|Any CPU
+ {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Debug|x86.Build.0 = Debug|Any CPU
+ {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Release|x64.ActiveCfg = Release|Any CPU
+ {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Release|x64.Build.0 = Release|Any CPU
+ {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Release|x86.ActiveCfg = Release|Any CPU
+ {CA387BA6-9CD2-4988-BF75-75D5DB15DA0F}.Release|x86.Build.0 = Release|Any CPU
+ {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Debug|x64.Build.0 = Debug|Any CPU
+ {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Debug|x86.Build.0 = Debug|Any CPU
+ {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Release|x64.ActiveCfg = Release|Any CPU
+ {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Release|x64.Build.0 = Release|Any CPU
+ {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Release|x86.ActiveCfg = Release|Any CPU
+ {AD08DDBA-3CFC-47C8-B225-CD64673262DB}.Release|x86.Build.0 = Release|Any CPU
+ {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Debug|x64.Build.0 = Debug|Any CPU
+ {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Debug|x86.Build.0 = Debug|Any CPU
+ {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Release|x64.ActiveCfg = Release|Any CPU
+ {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Release|x64.Build.0 = Release|Any CPU
+ {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Release|x86.ActiveCfg = Release|Any CPU
+ {A46FA6B1-4521-4C53-9D38-5369470FB3D4}.Release|x86.Build.0 = Release|Any CPU
+ {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Debug|x64.Build.0 = Debug|Any CPU
+ {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Debug|x86.Build.0 = Debug|Any CPU
+ {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Release|x64.ActiveCfg = Release|Any CPU
+ {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Release|x64.Build.0 = Release|Any CPU
+ {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Release|x86.ActiveCfg = Release|Any CPU
+ {9A9BBEA0-1206-423F-B62F-E4ADA728E472}.Release|x86.Build.0 = Release|Any CPU
+ {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Debug|x64.Build.0 = Debug|Any CPU
+ {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Debug|x86.Build.0 = Debug|Any CPU
+ {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Release|x64.ActiveCfg = Release|Any CPU
+ {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Release|x64.Build.0 = Release|Any CPU
+ {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Release|x86.ActiveCfg = Release|Any CPU
+ {0AF1B2A1-1BA5-478C-A18D-7481C7A1DAD7}.Release|x86.Build.0 = Release|Any CPU
+ {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Debug|x64.Build.0 = Debug|Any CPU
+ {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Debug|x86.Build.0 = Debug|Any CPU
+ {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Release|x64.ActiveCfg = Release|Any CPU
+ {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Release|x64.Build.0 = Release|Any CPU
+ {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Release|x86.ActiveCfg = Release|Any CPU
+ {3156BBFC-6475-4229-8B32-B1FCCCD0F385}.Release|x86.Build.0 = Release|Any CPU
+ {1D2119F0-0EE5-462A-B921-5624037417AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1D2119F0-0EE5-462A-B921-5624037417AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1D2119F0-0EE5-462A-B921-5624037417AF}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {1D2119F0-0EE5-462A-B921-5624037417AF}.Debug|x64.Build.0 = Debug|Any CPU
+ {1D2119F0-0EE5-462A-B921-5624037417AF}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1D2119F0-0EE5-462A-B921-5624037417AF}.Debug|x86.Build.0 = Debug|Any CPU
+ {1D2119F0-0EE5-462A-B921-5624037417AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1D2119F0-0EE5-462A-B921-5624037417AF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1D2119F0-0EE5-462A-B921-5624037417AF}.Release|x64.ActiveCfg = Release|Any CPU
+ {1D2119F0-0EE5-462A-B921-5624037417AF}.Release|x64.Build.0 = Release|Any CPU
+ {1D2119F0-0EE5-462A-B921-5624037417AF}.Release|x86.ActiveCfg = Release|Any CPU
+ {1D2119F0-0EE5-462A-B921-5624037417AF}.Release|x86.Build.0 = Release|Any CPU
+ {20780AE0-885D-41C9-9451-3C7946CCC279}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {20780AE0-885D-41C9-9451-3C7946CCC279}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {20780AE0-885D-41C9-9451-3C7946CCC279}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {20780AE0-885D-41C9-9451-3C7946CCC279}.Debug|x64.Build.0 = Debug|Any CPU
+ {20780AE0-885D-41C9-9451-3C7946CCC279}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {20780AE0-885D-41C9-9451-3C7946CCC279}.Debug|x86.Build.0 = Debug|Any CPU
+ {20780AE0-885D-41C9-9451-3C7946CCC279}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {20780AE0-885D-41C9-9451-3C7946CCC279}.Release|Any CPU.Build.0 = Release|Any CPU
+ {20780AE0-885D-41C9-9451-3C7946CCC279}.Release|x64.ActiveCfg = Release|Any CPU
+ {20780AE0-885D-41C9-9451-3C7946CCC279}.Release|x64.Build.0 = Release|Any CPU
+ {20780AE0-885D-41C9-9451-3C7946CCC279}.Release|x86.ActiveCfg = Release|Any CPU
+ {20780AE0-885D-41C9-9451-3C7946CCC279}.Release|x86.Build.0 = Release|Any CPU
+ {5FBD7383-0AA3-4C25-A4CF-AE884BF4221E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5FBD7383-0AA3-4C25-A4CF-AE884BF4221E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5FBD7383-0AA3-4C25-A4CF-AE884BF4221E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5FBD7383-0AA3-4C25-A4CF-AE884BF4221E}.Debug|x64.Build.0 = Debug|Any CPU
+ {5FBD7383-0AA3-4C25-A4CF-AE884BF4221E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5FBD7383-0AA3-4C25-A4CF-AE884BF4221E}.Debug|x86.Build.0 = Debug|Any CPU
+ {5FBD7383-0AA3-4C25-A4CF-AE884BF4221E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5FBD7383-0AA3-4C25-A4CF-AE884BF4221E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5FBD7383-0AA3-4C25-A4CF-AE884BF4221E}.Release|x64.ActiveCfg = Release|Any CPU
+ {5FBD7383-0AA3-4C25-A4CF-AE884BF4221E}.Release|x64.Build.0 = Release|Any CPU
+ {5FBD7383-0AA3-4C25-A4CF-AE884BF4221E}.Release|x86.ActiveCfg = Release|Any CPU
+ {5FBD7383-0AA3-4C25-A4CF-AE884BF4221E}.Release|x86.Build.0 = Release|Any CPU
+ {AB4DC29E-2F8A-410A-8BFF-CD120515BA80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AB4DC29E-2F8A-410A-8BFF-CD120515BA80}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AB4DC29E-2F8A-410A-8BFF-CD120515BA80}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {AB4DC29E-2F8A-410A-8BFF-CD120515BA80}.Debug|x64.Build.0 = Debug|Any CPU
+ {AB4DC29E-2F8A-410A-8BFF-CD120515BA80}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {AB4DC29E-2F8A-410A-8BFF-CD120515BA80}.Debug|x86.Build.0 = Debug|Any CPU
+ {AB4DC29E-2F8A-410A-8BFF-CD120515BA80}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AB4DC29E-2F8A-410A-8BFF-CD120515BA80}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AB4DC29E-2F8A-410A-8BFF-CD120515BA80}.Release|x64.ActiveCfg = Release|Any CPU
+ {AB4DC29E-2F8A-410A-8BFF-CD120515BA80}.Release|x64.Build.0 = Release|Any CPU
+ {AB4DC29E-2F8A-410A-8BFF-CD120515BA80}.Release|x86.ActiveCfg = Release|Any CPU
+ {AB4DC29E-2F8A-410A-8BFF-CD120515BA80}.Release|x86.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {68767DE6-FA2A-4A9F-A7D3-AF07328CB620}
+ EndGlobalSection
+EndGlobal