diff --git a/.envrc b/.envrc
new file mode 100644
index 0000000..3550a30
--- /dev/null
+++ b/.envrc
@@ -0,0 +1 @@
+use flake
diff --git a/.gitignore b/.gitignore
index 2bd36c6..736c799 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,6 +32,9 @@ obj/
*.opensdf
*.sln.docstates
+# Zed files
+.zed/
+
# NuGet packages
*.nupkg
packages/
@@ -60,3 +63,7 @@ _ReSharper*/
artifacts/
# Scanner configuration file (user-specific)
scan_config.ini
+
+result
+out
+.direnv
diff --git a/.zed/settings.json b/.zed/settings.json
new file mode 100644
index 0000000..37c2501
--- /dev/null
+++ b/.zed/settings.json
@@ -0,0 +1,17 @@
+{
+ "lsp": {
+ "roslyn": {
+ "binary": {
+ "path": "csharp-ls",
+ "arguments": ["-s", "BFD9010/BFD9010.sln"],
+ "env": {
+ "RuntimeIdentifier": "win-x86",
+ "PlatformTarget": "x86",
+ "TargetPlatformIdentifier": "Windows",
+ "TargetPlatformMinVersion": "7.0",
+ "EnableKnownPlatformsReference": "true",
+ },
+ },
+ },
+ },
+}
diff --git a/BFD9010/BFD9010.Cli/BFD9010.Cli.csproj b/BFD9010/BFD9010.Cli/BFD9010.Cli.csproj
index d2ab827..ec46c73 100644
--- a/BFD9010/BFD9010.Cli/BFD9010.Cli.csproj
+++ b/BFD9010/BFD9010.Cli/BFD9010.Cli.csproj
@@ -2,11 +2,10 @@
Exe
- net8.0
+ net8.0-windows
enable
enable
true
- AnyCPU;x86
x86
bfd9010_cli
diff --git a/BFD9010/BFD9010.FhirApi.Tests/BFD9010.FhirApi.Tests.csproj b/BFD9010/BFD9010.FhirApi.Tests/BFD9010.FhirApi.Tests.csproj
index a6965d8..f8af37b 100644
--- a/BFD9010/BFD9010.FhirApi.Tests/BFD9010.FhirApi.Tests.csproj
+++ b/BFD9010/BFD9010.FhirApi.Tests/BFD9010.FhirApi.Tests.csproj
@@ -1,30 +1,29 @@
-
-
-
- net8.0
- enable
- enable
- AnyCPU;x86
- x86
- false
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ net8.0-windows
+ enable
+ enable
+ x86
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BFD9010/BFD9010.FhirApi/BFD9010.FhirApi.csproj b/BFD9010/BFD9010.FhirApi/BFD9010.FhirApi.csproj
index 342bb16..a6cdffd 100644
--- a/BFD9010/BFD9010.FhirApi/BFD9010.FhirApi.csproj
+++ b/BFD9010/BFD9010.FhirApi/BFD9010.FhirApi.csproj
@@ -1,28 +1,30 @@
-
-
-
- net8.0
- enable
- enable
- true
- AnyCPU;x86
- x86
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ net8.0-windows
+ enable
+ enable
+ true
+ x86
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BFD9010/BFD9010.Gui/BFD9010.Gui.csproj b/BFD9010/BFD9010.Gui/BFD9010.Gui.csproj
index a653f8b..97124e7 100644
--- a/BFD9010/BFD9010.Gui/BFD9010.Gui.csproj
+++ b/BFD9010/BFD9010.Gui/BFD9010.Gui.csproj
@@ -7,19 +7,24 @@
true
enable
bfd9010
- AnyCPU;x86
x86
- ..\..\documentation\images\BFD9000_logo_white.ico
+ true
+ ..\..\documentation\images\BFD9000_logo_white.ico
-
+
Resources\BFD9000_logo_white.ico
-
+
Resources\BFD9000_logo_white.png
diff --git a/BFD9010/BFD9010.Scanner/BFD9010.Scanner.csproj b/BFD9010/BFD9010.Scanner/BFD9010.Scanner.csproj
index e0f0b9e..ed5bf51 100644
--- a/BFD9010/BFD9010.Scanner/BFD9010.Scanner.csproj
+++ b/BFD9010/BFD9010.Scanner/BFD9010.Scanner.csproj
@@ -1,22 +1,21 @@
-
-
-
- net8.0
- enable
- enable
- true
- AnyCPU;x86
- x86
-
-
-
-
-
-
-
-
- PreserveNewest
-
-
-
-
+
+
+
+ net8.0-windows
+ enable
+ enable
+ true
+ x86
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+
+
diff --git a/BFD9010/BFD9010.Scanner/ScanConfig.cs b/BFD9010/BFD9010.Scanner/ScanConfig.cs
index 5bd0ea7..c701f4e 100644
--- a/BFD9010/BFD9010.Scanner/ScanConfig.cs
+++ b/BFD9010/BFD9010.Scanner/ScanConfig.cs
@@ -296,9 +296,16 @@ private void SetValue(string key, string value)
private static string GetConfigPath()
{
- // Place config file in the same directory as the executable
- string exeDir = AppDomain.CurrentDomain.BaseDirectory;
- return Path.Combine(exeDir, CONFIG_FILENAME);
+ string outDir = Path.Combine(
+ Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
+ "VidarScans"
+ );
+ Directory.CreateDirectory(outDir);
+ string configPath = Path.Combine(
+ outDir,
+ CONFIG_FILENAME
+ );
+ return configPath;
}
private static string ExpandPath(string path)
diff --git a/BFD9010/Directory.Build.props b/BFD9010/Directory.Build.props
index 532daf0..35d1f79 100644
--- a/BFD9010/Directory.Build.props
+++ b/BFD9010/Directory.Build.props
@@ -5,5 +5,8 @@
$(Version)
$(Version)
$(Version)
+ $(MSBuildThisFileDirectory)../.nuget/packages
+ false
+ true
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..6aa5981
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,61 @@
+{
+ "nodes": {
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1779357205,
+ "narHash": "sha256-cCO8aTqss5x9Ky8GWkpY0Hy5fyTZEbtifSUV8QjSzic=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "f83fc3c307e74bc5fd5adb7eb6b8b13ffd2a36e1",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "nixpkgs": "nixpkgs",
+ "utils": "utils"
+ }
+ },
+ "systems": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "type": "github"
+ }
+ },
+ "utils": {
+ "inputs": {
+ "systems": "systems"
+ },
+ "locked": {
+ "lastModified": 1731533236,
+ "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..851b9aa
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,48 @@
+{
+ description = "BFD9010: An HL7 FHIR API for Scanners";
+
+ inputs = {
+ nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
+ utils.url = "github:numtide/flake-utils";
+ };
+
+ outputs =
+ { nixpkgs, utils, ... }:
+ utils.lib.eachDefaultSystem (
+ system:
+ let
+ pkgs = import nixpkgs { inherit system; };
+ dn = (
+ with pkgs.dotnetCorePackages;
+ combinePackages [
+ sdk_8_0
+ sdk_10_0
+ ]
+ );
+ in
+ {
+ packages = {
+ app = pkgs.callPackage ./nix/build.nix { };
+ default = pkgs.callPackage ./nix/build.nix { };
+ };
+
+ devShells.default = pkgs.mkShell {
+ buildInputs = with pkgs; [
+ dn
+ nuget-to-json
+ nil
+ nixd
+ csharp-ls
+ wine
+ ];
+
+ shellHook = ''
+ export DOTNET_ROOT="${dn}/share/dotnet"
+ '';
+ };
+
+ # Cannot do windows checks on linux as we do not have the necessary 32-bit runtimes.
+ # Possible solution: run in a Windows VM to test
+ }
+ );
+}
diff --git a/nix/build.nix b/nix/build.nix
new file mode 100644
index 0000000..c67662c
--- /dev/null
+++ b/nix/build.nix
@@ -0,0 +1,67 @@
+{
+ dotnetCorePackages,
+ cacert,
+ wine,
+ stdenv,
+ ...
+}:
+let
+ nugetDeps = dotnetCorePackages.addNuGetDeps {
+ nugetDeps = ../nix/deps.json;
+ };
+ base = {
+ pname = "BFD9010.Gui";
+ version = "1.0.0";
+ src = ./..;
+
+ nativeBuildInputs = [
+ dotnetCorePackages.sdk_8_0
+ cacert
+ ];
+
+ # Explicitly set runtimeId to null to block the host-side targeting pack additions
+ runtimeId = null;
+
+ configurePhase = ''
+ export HOME=$TMPDIR
+ export DOTNET_CLI_HOME=$TMPDIR
+ export NUGET_PACKAGES=$nugetDeps
+ '';
+
+ buildPhase = ''
+ # Pure offline compilation phase using only the decoupled Windows targets
+
+ dotnet restore BFD9010/BFD9010.Gui/BFD9010.Gui.csproj \
+ -r win-x86 \
+ --source "$nugetDeps" \
+ -p:EnableWindowsTargeting=true
+
+ dotnet publish BFD9010/BFD9010.Gui/BFD9010.Gui.csproj \
+ -c Release \
+ -r win-x86 \
+ --no-restore \
+ -p:TargetFramework=net8.0-windows \
+ --self-contained true \
+ -o $out/share/bfd9010
+ '';
+
+ installPhase = ''
+ mkdir -p $out/bin
+
+ cat < $out/bin/bfd9010-server
+ #!/usr/bin/env bash
+ export WINEDEBUG=-all
+ export WINEARCH=win32
+ export WINEPREFIX=\$HOME/.local/share/bfd9010-wine
+ if [ ! -d "\$WINEPREFIX" ]; then
+ echo "Initializing 32-bit Wine environment..."
+ ${wine}/bin/wineboot -u
+ fi
+ exec ${wine}/bin/wine $out/share/bfd9010/bfd9010.exe "\$@"
+ EOF
+
+ chmod +x $out/bin/bfd9010-server
+ '';
+ };
+in
+stdenv.mkDerivation (nugetDeps base)
diff --git a/nix/deps.json b/nix/deps.json
new file mode 100644
index 0000000..c661600
--- /dev/null
+++ b/nix/deps.json
@@ -0,0 +1,727 @@
+[
+ {
+ "pname": "Castle.Core",
+ "version": "5.1.1",
+ "hash": "sha256-oVkQB+ON7S6Q27OhXrTLaxTL0kWB58HZaFFuiw4iTrE="
+ },
+ {
+ "pname": "coverlet.collector",
+ "version": "6.0.0",
+ "hash": "sha256-IEmweTMapcPhFHpmJsPXfmMhravYOrWupgjeOvMmQ4o="
+ },
+ {
+ "pname": "Fhir.Metrics",
+ "version": "1.3.1",
+ "hash": "sha256-bHv51AUyWAUn/AukcB4icB65vddDLxR5+QGnd43Qz2w="
+ },
+ {
+ "pname": "Hl7.Fhir.Base",
+ "version": "5.12.2",
+ "hash": "sha256-EbtO66N+864Q2nQO/v90FfWbbj2a61iFJ4V3lBxtcFQ="
+ },
+ {
+ "pname": "Hl7.Fhir.Conformance",
+ "version": "5.12.2",
+ "hash": "sha256-R78em2Mqlb2KA2E5ZT7DG0ITlO2grglC7shB6Zmwpyg="
+ },
+ {
+ "pname": "Hl7.Fhir.R5",
+ "version": "5.12.2",
+ "hash": "sha256-SW7mSv+gLCJ/iPZ5VW9CYUGLiNYXkNoLAOiBdX2SzbQ="
+ },
+ {
+ "pname": "Microsoft.AspNetCore.App.Runtime.win-x86",
+ "version": "8.0.27",
+ "hash": "sha256-ezmkuuRx5X3Jj+k4lAOVI/4A0Ko5KCaH3h+lyRE+QAU="
+ },
+ {
+ "pname": "Microsoft.AspNetCore.OpenApi",
+ "version": "8.0.20",
+ "hash": "sha256-Fe8of7wvOn3d7ZaP3GMJIXxhjqX05qCylPIjBsw3HE8="
+ },
+ {
+ "pname": "Microsoft.CodeCoverage",
+ "version": "17.8.0",
+ "hash": "sha256-cv/wAXfTNS+RWEsHWNKqRDHC7LOQSSdFJ1a9cZuSfJw="
+ },
+ {
+ "pname": "Microsoft.Extensions.ApiDescription.Server",
+ "version": "6.0.5",
+ "hash": "sha256-RJjBWz+UHxkQE2s7CeGYdTZ218mCufrxl0eBykZdIt4="
+ },
+ {
+ "pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
+ "version": "8.0.0",
+ "hash": "sha256-75KzEGWjbRELczJpCiJub+ltNUMMbz5A/1KQU+5dgP8="
+ },
+ {
+ "pname": "Microsoft.Extensions.Logging.Abstractions",
+ "version": "8.0.0",
+ "hash": "sha256-Jmddjeg8U5S+iBTwRlVAVLeIHxc4yrrNgqVMOB7EjM4="
+ },
+ {
+ "pname": "Microsoft.NET.Test.Sdk",
+ "version": "17.8.0",
+ "hash": "sha256-uz7QvW+NsVRsp8FR1wjnGEOkUaPX4JyieywvCN6g2+s="
+ },
+ {
+ "pname": "Microsoft.NETCore.App.Host.win-x86",
+ "version": "8.0.27",
+ "hash": "sha256-3sPhI/cwhgVltKhte6D6TXf38qhYfz9NaLIvc+IjJIo="
+ },
+ {
+ "pname": "Microsoft.NETCore.App.Runtime.win-x86",
+ "version": "8.0.27",
+ "hash": "sha256-NHZl1Uu39QkqT1gT4DwlGU1M5bxMpKdYntB7eDSGXZA="
+ },
+ {
+ "pname": "Microsoft.NETCore.Platforms",
+ "version": "1.1.0",
+ "hash": "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM="
+ },
+ {
+ "pname": "Microsoft.NETCore.Targets",
+ "version": "1.1.0",
+ "hash": "sha256-0AqQ2gMS8iNlYkrD+BxtIg7cXMnr9xZHtKAuN4bjfaQ="
+ },
+ {
+ "pname": "Microsoft.OpenApi",
+ "version": "1.4.3",
+ "hash": "sha256-vk47e78OwopXJx2LhDRbKFObqF3GShHfNHR2SzvbQeA="
+ },
+ {
+ "pname": "Microsoft.OpenApi",
+ "version": "1.6.14",
+ "hash": "sha256-dSJUic2orPGfYVgto9DieRckbtLpPyxHtf+RJ2tmKPM="
+ },
+ {
+ "pname": "Microsoft.TestPlatform.ObjectModel",
+ "version": "17.8.0",
+ "hash": "sha256-9TwGrjVvbtyetw67Udp3EMK5MX8j0RFRjduxPCs9ESw="
+ },
+ {
+ "pname": "Microsoft.TestPlatform.TestHost",
+ "version": "17.8.0",
+ "hash": "sha256-+CTYFu631uovLCO47RKe86YaAqfoLA4r73vKORJUsjg="
+ },
+ {
+ "pname": "Microsoft.Win32.Primitives",
+ "version": "4.3.0",
+ "hash": "sha256-mBNDmPXNTW54XLnPAUwBRvkIORFM7/j0D0I2SyQPDEg="
+ },
+ {
+ "pname": "Microsoft.WindowsDesktop.App.Ref",
+ "version": "8.0.27",
+ "hash": "sha256-Pi1DhrjL6Co82lAGUuFSM5MViM3DDCqzHhhoGX+wK4g="
+ },
+ {
+ "pname": "Microsoft.WindowsDesktop.App.Runtime.win-x86",
+ "version": "8.0.27",
+ "hash": "sha256-4hoShQ7+atWgO4YsB0nH5qCibIKxhyNmUD+mH+t8AxA="
+ },
+ {
+ "pname": "Moq",
+ "version": "4.20.72",
+ "hash": "sha256-+uAc/6xtzij9YnmZrhZwc+4vUgx6cppZsWQli3CGQ8o="
+ },
+ {
+ "pname": "NETStandard.Library",
+ "version": "1.6.1",
+ "hash": "sha256-iNan1ix7RtncGWC9AjAZ2sk70DoxOsmEOgQ10fXm4Pw="
+ },
+ {
+ "pname": "Newtonsoft.Json",
+ "version": "13.0.1",
+ "hash": "sha256-K2tSVW4n4beRPzPu3rlVaBEMdGvWSv/3Q1fxaDh4Mjo="
+ },
+ {
+ "pname": "Newtonsoft.Json",
+ "version": "13.0.3",
+ "hash": "sha256-hy/BieY4qxBWVVsDqqOPaLy1QobiIapkbrESm6v2PHc="
+ },
+ {
+ "pname": "NuGet.Frameworks",
+ "version": "6.5.0",
+ "hash": "sha256-ElqfN4CcKxT3hP2qvxxObb4mnBlYG89IMxO0Sm5oZ2g="
+ },
+ {
+ "pname": "runtime.any.System.Collections",
+ "version": "4.3.0",
+ "hash": "sha256-4PGZqyWhZ6/HCTF2KddDsbmTTjxs2oW79YfkberDZS8="
+ },
+ {
+ "pname": "runtime.any.System.Diagnostics.Tools",
+ "version": "4.3.0",
+ "hash": "sha256-8yLKFt2wQxkEf7fNfzB+cPUCjYn2qbqNgQ1+EeY2h/I="
+ },
+ {
+ "pname": "runtime.any.System.Diagnostics.Tracing",
+ "version": "4.3.0",
+ "hash": "sha256-dsmTLGvt8HqRkDWP8iKVXJCS+akAzENGXKPV18W2RgI="
+ },
+ {
+ "pname": "runtime.any.System.Globalization",
+ "version": "4.3.0",
+ "hash": "sha256-PaiITTFI2FfPylTEk7DwzfKeiA/g/aooSU1pDcdwWLU="
+ },
+ {
+ "pname": "runtime.any.System.Globalization.Calendars",
+ "version": "4.3.0",
+ "hash": "sha256-AYh39tgXJVFu8aLi9Y/4rK8yWMaza4S4eaxjfcuEEL4="
+ },
+ {
+ "pname": "runtime.any.System.IO",
+ "version": "4.3.0",
+ "hash": "sha256-vej7ySRhyvM3pYh/ITMdC25ivSd0WLZAaIQbYj/6HVE="
+ },
+ {
+ "pname": "runtime.any.System.Reflection",
+ "version": "4.3.0",
+ "hash": "sha256-ns6f++lSA+bi1xXgmW1JkWFb2NaMD+w+YNTfMvyAiQk="
+ },
+ {
+ "pname": "runtime.any.System.Reflection.Extensions",
+ "version": "4.3.0",
+ "hash": "sha256-Y2AnhOcJwJVYv7Rp6Jz6ma0fpITFqJW+8rsw106K2X8="
+ },
+ {
+ "pname": "runtime.any.System.Reflection.Primitives",
+ "version": "4.3.0",
+ "hash": "sha256-LkPXtiDQM3BcdYkAm5uSNOiz3uF4J45qpxn5aBiqNXQ="
+ },
+ {
+ "pname": "runtime.any.System.Resources.ResourceManager",
+ "version": "4.3.0",
+ "hash": "sha256-9EvnmZslLgLLhJ00o5MWaPuJQlbUFcUF8itGQNVkcQ4="
+ },
+ {
+ "pname": "runtime.any.System.Runtime",
+ "version": "4.3.0",
+ "hash": "sha256-qwhNXBaJ1DtDkuRacgHwnZmOZ1u9q7N8j0cWOLYOELM="
+ },
+ {
+ "pname": "runtime.any.System.Runtime.Handles",
+ "version": "4.3.0",
+ "hash": "sha256-PQRACwnSUuxgVySO1840KvqCC9F8iI9iTzxNW0RcBS4="
+ },
+ {
+ "pname": "runtime.any.System.Runtime.InteropServices",
+ "version": "4.3.0",
+ "hash": "sha256-Kaw5PnLYIiqWbsoF3VKJhy7pkpoGsUwn4ZDCKscbbzA="
+ },
+ {
+ "pname": "runtime.any.System.Text.Encoding",
+ "version": "4.3.0",
+ "hash": "sha256-Q18B9q26MkWZx68exUfQT30+0PGmpFlDgaF0TnaIGCs="
+ },
+ {
+ "pname": "runtime.any.System.Text.Encoding.Extensions",
+ "version": "4.3.0",
+ "hash": "sha256-6MYj0RmLh4EVqMtO/MRqBi0HOn5iG4x9JimgCCJ+EFM="
+ },
+ {
+ "pname": "runtime.any.System.Threading.Tasks",
+ "version": "4.3.0",
+ "hash": "sha256-agdOM0NXupfHbKAQzQT8XgbI9B8hVEh+a/2vqeHctg4="
+ },
+ {
+ "pname": "runtime.any.System.Threading.Timer",
+ "version": "4.3.0",
+ "hash": "sha256-BgHxXCIbicVZtpgMimSXixhFC3V+p5ODqeljDjO8hCs="
+ },
+ {
+ "pname": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl",
+ "version": "4.3.0",
+ "hash": "sha256-LXUPLX3DJxsU1Pd3UwjO1PO9NM2elNEDXeu2Mu/vNps="
+ },
+ {
+ "pname": "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl",
+ "version": "4.3.0",
+ "hash": "sha256-qeSqaUI80+lqw5MK4vMpmO0CZaqrmYktwp6L+vQAb0I="
+ },
+ {
+ "pname": "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl",
+ "version": "4.3.0",
+ "hash": "sha256-SrHqT9wrCBsxILWtaJgGKd6Odmxm8/Mh7Kh0CUkZVzA="
+ },
+ {
+ "pname": "runtime.native.System",
+ "version": "4.3.0",
+ "hash": "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y="
+ },
+ {
+ "pname": "runtime.native.System.IO.Compression",
+ "version": "4.3.0",
+ "hash": "sha256-DWnXs4vlKoU6WxxvCArTJupV6sX3iBbZh8SbqfHace8="
+ },
+ {
+ "pname": "runtime.native.System.Net.Http",
+ "version": "4.3.0",
+ "hash": "sha256-c556PyheRwpYhweBjSfIwEyZHnAUB8jWioyKEcp/2dg="
+ },
+ {
+ "pname": "runtime.native.System.Security.Cryptography.Apple",
+ "version": "4.3.0",
+ "hash": "sha256-2IhBv0i6pTcOyr8FFIyfPEaaCHUmJZ8DYwLUwJ+5waw="
+ },
+ {
+ "pname": "runtime.native.System.Security.Cryptography.OpenSsl",
+ "version": "4.3.0",
+ "hash": "sha256-Jy01KhtcCl2wjMpZWH+X3fhHcVn+SyllWFY8zWlz/6I="
+ },
+ {
+ "pname": "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl",
+ "version": "4.3.0",
+ "hash": "sha256-wyv00gdlqf8ckxEdV7E+Ql9hJIoPcmYEuyeWb5Oz3mM="
+ },
+ {
+ "pname": "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl",
+ "version": "4.3.0",
+ "hash": "sha256-zi+b4sCFrA9QBiSGDD7xPV27r3iHGlV99gpyVUjRmc4="
+ },
+ {
+ "pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple",
+ "version": "4.3.0",
+ "hash": "sha256-serkd4A7F6eciPiPJtUyJyxzdAtupEcWIZQ9nptEzIM="
+ },
+ {
+ "pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl",
+ "version": "4.3.0",
+ "hash": "sha256-gybQU6mPgaWV3rBG2dbH6tT3tBq8mgze3PROdsuWnX0="
+ },
+ {
+ "pname": "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl",
+ "version": "4.3.0",
+ "hash": "sha256-VsP72GVveWnGUvS/vjOQLv1U80H2K8nZ4fDAmI61Hm4="
+ },
+ {
+ "pname": "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl",
+ "version": "4.3.0",
+ "hash": "sha256-4yKGa/IrNCKuQ3zaDzILdNPD32bNdy6xr5gdJigyF5g="
+ },
+ {
+ "pname": "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl",
+ "version": "4.3.0",
+ "hash": "sha256-HmdJhhRsiVoOOCcUvAwdjpMRiyuSwdcgEv2j9hxi+Zc="
+ },
+ {
+ "pname": "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl",
+ "version": "4.3.0",
+ "hash": "sha256-pVFUKuPPIx0edQKjzRon3zKq8zhzHEzko/lc01V/jdw="
+ },
+ {
+ "pname": "runtime.win.Microsoft.Win32.Primitives",
+ "version": "4.3.0",
+ "hash": "sha256-ZnzR82+YDpNYf1GICTbzPjB20AjSy8dlRhfocK1FMEw="
+ },
+ {
+ "pname": "runtime.win.System.Console",
+ "version": "4.3.0",
+ "hash": "sha256-TCb+x4hHljj7sPIQLDsM10x5OyGZVnueYb+wlZ1UXnQ="
+ },
+ {
+ "pname": "runtime.win.System.Diagnostics.Debug",
+ "version": "4.3.0",
+ "hash": "sha256-DpU+PGIUCtaK6gQEl/OWSO/JKg/TA9yeD01Zzxaxy5k="
+ },
+ {
+ "pname": "runtime.win.System.IO.FileSystem",
+ "version": "4.3.0",
+ "hash": "sha256-6JnGF9kj6jYd9xneKQdTvb3zNTSHdeWW/pr7vui0AbA="
+ },
+ {
+ "pname": "runtime.win.System.Net.Primitives",
+ "version": "4.3.0",
+ "hash": "sha256-jqUpP60h/kkampLU9Bt8T5gSDaVXwxPsOOTEVVKAPbY="
+ },
+ {
+ "pname": "runtime.win.System.Net.Sockets",
+ "version": "4.3.0",
+ "hash": "sha256-k2lTk08ryI2NSEI3IFlO0y2cltiT8TIhNnqHgeL8I1M="
+ },
+ {
+ "pname": "runtime.win.System.Runtime.Extensions",
+ "version": "4.3.0",
+ "hash": "sha256-+TMflNyjP+Lf5bge0xVN5AKxMAk4/caWY6zZrqtyAJw="
+ },
+ {
+ "pname": "SixLabors.ImageSharp",
+ "version": "3.1.11",
+ "hash": "sha256-MlRF+3SGfahbsB1pZGKMOrsfUCx//hCo7ECrXr03DpA="
+ },
+ {
+ "pname": "Swashbuckle.AspNetCore",
+ "version": "6.6.2",
+ "hash": "sha256-kKz+NiXNfmrvrtbzsqnW1ItflNib3rymr3rf9yI5B1M="
+ },
+ {
+ "pname": "Swashbuckle.AspNetCore.Swagger",
+ "version": "6.6.2",
+ "hash": "sha256-HqMmHMZXYHlRMoT3vIZF8iwhYmfknQmi3N8VmyfwI0k="
+ },
+ {
+ "pname": "Swashbuckle.AspNetCore.SwaggerGen",
+ "version": "6.6.2",
+ "hash": "sha256-km+bNoRDakEBa2dIjtxK0V6YVvm9hEpdi8xWQ8TJigI="
+ },
+ {
+ "pname": "Swashbuckle.AspNetCore.SwaggerUI",
+ "version": "6.6.2",
+ "hash": "sha256-ED24tUcwiOkAIMQVQeQFths296yf3lL/Z1sVizQTEHA="
+ },
+ {
+ "pname": "System.AppContext",
+ "version": "4.3.0",
+ "hash": "sha256-yg95LNQOwFlA1tWxXdQkVyJqT4AnoDc+ACmrNvzGiZg="
+ },
+ {
+ "pname": "System.Buffers",
+ "version": "4.3.0",
+ "hash": "sha256-XqZWb4Kd04960h4U9seivjKseGA/YEIpdplfHYHQ9jk="
+ },
+ {
+ "pname": "System.Collections",
+ "version": "4.3.0",
+ "hash": "sha256-afY7VUtD6w/5mYqrce8kQrvDIfS2GXDINDh73IjxJKc="
+ },
+ {
+ "pname": "System.Collections.Concurrent",
+ "version": "4.3.0",
+ "hash": "sha256-KMY5DfJnDeIsa13DpqvyN8NkReZEMAFnlmNglVoFIXI="
+ },
+ {
+ "pname": "System.ComponentModel.Annotations",
+ "version": "5.0.0",
+ "hash": "sha256-0pST1UHgpeE6xJrYf5R+U7AwIlH3rVC3SpguilI/MAg="
+ },
+ {
+ "pname": "System.Console",
+ "version": "4.3.0",
+ "hash": "sha256-Xh3PPBZr0pDbDaK8AEHbdGz7ePK6Yi1ZyRWI1JM6mbo="
+ },
+ {
+ "pname": "System.Diagnostics.Debug",
+ "version": "4.3.0",
+ "hash": "sha256-fkA79SjPbSeiEcrbbUsb70u9B7wqbsdM9s1LnoKj0gM="
+ },
+ {
+ "pname": "System.Diagnostics.DiagnosticSource",
+ "version": "4.3.0",
+ "hash": "sha256-OFJRb0ygep0Z3yDBLwAgM/Tkfs4JCDtsNhwDH9cd1Xw="
+ },
+ {
+ "pname": "System.Diagnostics.EventLog",
+ "version": "6.0.0",
+ "hash": "sha256-zUXIQtAFKbiUMKCrXzO4mOTD5EUphZzghBYKXprowSM="
+ },
+ {
+ "pname": "System.Diagnostics.Tools",
+ "version": "4.3.0",
+ "hash": "sha256-gVOv1SK6Ape0FQhCVlNOd9cvQKBvMxRX9K0JPVi8w0Y="
+ },
+ {
+ "pname": "System.Diagnostics.Tracing",
+ "version": "4.3.0",
+ "hash": "sha256-hCETZpHHGVhPYvb4C0fh4zs+8zv4GPoixagkLZjpa9Q="
+ },
+ {
+ "pname": "System.Globalization",
+ "version": "4.3.0",
+ "hash": "sha256-caL0pRmFSEsaoeZeWN5BTQtGrAtaQPwFi8YOZPZG5rI="
+ },
+ {
+ "pname": "System.Globalization.Calendars",
+ "version": "4.3.0",
+ "hash": "sha256-uNOD0EOVFgnS2fMKvMiEtI9aOw00+Pfy/H+qucAQlPc="
+ },
+ {
+ "pname": "System.Globalization.Extensions",
+ "version": "4.3.0",
+ "hash": "sha256-mmJWA27T0GRVuFP9/sj+4TrR4GJWrzNIk2PDrbr7RQk="
+ },
+ {
+ "pname": "System.IO",
+ "version": "4.3.0",
+ "hash": "sha256-ruynQHekFP5wPrDiVyhNiRIXeZ/I9NpjK5pU+HPDiRY="
+ },
+ {
+ "pname": "System.IO.Compression",
+ "version": "4.3.0",
+ "hash": "sha256-f5PrQlQgj5Xj2ZnHxXW8XiOivaBvfqDao9Sb6AVinyA="
+ },
+ {
+ "pname": "System.IO.Compression.ZipFile",
+ "version": "4.3.0",
+ "hash": "sha256-WQl+JgWs+GaRMeiahTFUbrhlXIHapzcpTFXbRvAtvvs="
+ },
+ {
+ "pname": "System.IO.FileSystem",
+ "version": "4.3.0",
+ "hash": "sha256-vNIYnvlayuVj0WfRfYKpDrhDptlhp1pN8CYmlVd2TXw="
+ },
+ {
+ "pname": "System.IO.FileSystem.Primitives",
+ "version": "4.3.0",
+ "hash": "sha256-LMnfg8Vwavs9cMnq9nNH8IWtAtSfk0/Fy4s4Rt9r1kg="
+ },
+ {
+ "pname": "System.Linq",
+ "version": "4.3.0",
+ "hash": "sha256-R5uiSL3l6a3XrXSSL6jz+q/PcyVQzEAByiuXZNSqD/A="
+ },
+ {
+ "pname": "System.Linq.Expressions",
+ "version": "4.3.0",
+ "hash": "sha256-+3pvhZY7rip8HCbfdULzjlC9FPZFpYoQxhkcuFm2wk8="
+ },
+ {
+ "pname": "System.Net.Http",
+ "version": "4.3.0",
+ "hash": "sha256-UoBB7WPDp2Bne/fwxKF0nE8grJ6FzTMXdT/jfsphj8Q="
+ },
+ {
+ "pname": "System.Net.NameResolution",
+ "version": "4.3.0",
+ "hash": "sha256-eGZwCBExWsnirWBHyp2sSSSXp6g7I6v53qNmwPgtJ5c="
+ },
+ {
+ "pname": "System.Net.Primitives",
+ "version": "4.3.0",
+ "hash": "sha256-MY7Z6vOtFMbEKaLW9nOSZeAjcWpwCtdO7/W1mkGZBzE="
+ },
+ {
+ "pname": "System.Net.Sockets",
+ "version": "4.3.0",
+ "hash": "sha256-il7dr5VT/QWDg/0cuh+4Es2u8LY//+qqiY9BZmYxSus="
+ },
+ {
+ "pname": "System.ObjectModel",
+ "version": "4.3.0",
+ "hash": "sha256-gtmRkWP2Kwr3nHtDh0yYtce38z1wrGzb6fjm4v8wN6Q="
+ },
+ {
+ "pname": "System.Private.Uri",
+ "version": "4.3.0",
+ "hash": "sha256-fVfgcoP4AVN1E5wHZbKBIOPYZ/xBeSIdsNF+bdukIRM="
+ },
+ {
+ "pname": "System.Reflection",
+ "version": "4.3.0",
+ "hash": "sha256-NQSZRpZLvtPWDlvmMIdGxcVuyUnw92ZURo0hXsEshXY="
+ },
+ {
+ "pname": "System.Reflection.Emit",
+ "version": "4.3.0",
+ "hash": "sha256-5LhkDmhy2FkSxulXR+bsTtMzdU3VyyuZzsxp7/DwyIU="
+ },
+ {
+ "pname": "System.Reflection.Emit.ILGeneration",
+ "version": "4.3.0",
+ "hash": "sha256-mKRknEHNls4gkRwrEgi39B+vSaAz/Gt3IALtS98xNnA="
+ },
+ {
+ "pname": "System.Reflection.Emit.Lightweight",
+ "version": "4.3.0",
+ "hash": "sha256-rKx4a9yZKcajloSZHr4CKTVJ6Vjh95ni+zszPxWjh2I="
+ },
+ {
+ "pname": "System.Reflection.Emit.Lightweight",
+ "version": "4.7.0",
+ "hash": "sha256-V0Wz/UUoNIHdTGS9e1TR89u58zJjo/wPUWw6VaVyclU="
+ },
+ {
+ "pname": "System.Reflection.Extensions",
+ "version": "4.3.0",
+ "hash": "sha256-mMOCYzUenjd4rWIfq7zIX9PFYk/daUyF0A8l1hbydAk="
+ },
+ {
+ "pname": "System.Reflection.Metadata",
+ "version": "1.6.0",
+ "hash": "sha256-JJfgaPav7UfEh4yRAQdGhLZF1brr0tUWPl6qmfNWq/E="
+ },
+ {
+ "pname": "System.Reflection.Primitives",
+ "version": "4.3.0",
+ "hash": "sha256-5ogwWB4vlQTl3jjk1xjniG2ozbFIjZTL9ug0usZQuBM="
+ },
+ {
+ "pname": "System.Reflection.TypeExtensions",
+ "version": "4.3.0",
+ "hash": "sha256-4U4/XNQAnddgQIHIJq3P2T80hN0oPdU2uCeghsDTWng="
+ },
+ {
+ "pname": "System.Resources.ResourceManager",
+ "version": "4.3.0",
+ "hash": "sha256-idiOD93xbbrbwwSnD4mORA9RYi/D/U48eRUsn/WnWGo="
+ },
+ {
+ "pname": "System.Runtime",
+ "version": "4.3.0",
+ "hash": "sha256-51813WXpBIsuA6fUtE5XaRQjcWdQ2/lmEokJt97u0Rg="
+ },
+ {
+ "pname": "System.Runtime.Extensions",
+ "version": "4.3.0",
+ "hash": "sha256-wLDHmozr84v1W2zYCWYxxj0FR0JDYHSVRaRuDm0bd/o="
+ },
+ {
+ "pname": "System.Runtime.Handles",
+ "version": "4.3.0",
+ "hash": "sha256-KJ5aXoGpB56Y6+iepBkdpx/AfaJDAitx4vrkLqR7gms="
+ },
+ {
+ "pname": "System.Runtime.InteropServices",
+ "version": "4.3.0",
+ "hash": "sha256-8sDH+WUJfCR+7e4nfpftj/+lstEiZixWUBueR2zmHgI="
+ },
+ {
+ "pname": "System.Runtime.InteropServices.RuntimeInformation",
+ "version": "4.3.0",
+ "hash": "sha256-MYpl6/ZyC6hjmzWRIe+iDoldOMW1mfbwXsduAnXIKGA="
+ },
+ {
+ "pname": "System.Runtime.Numerics",
+ "version": "4.3.0",
+ "hash": "sha256-P5jHCgMbgFMYiONvzmaKFeOqcAIDPu/U8bOVrNPYKqc="
+ },
+ {
+ "pname": "System.Security.Claims",
+ "version": "4.3.0",
+ "hash": "sha256-Fua/rDwAqq4UByRVomAxMPmDBGd5eImRqHVQIeSxbks="
+ },
+ {
+ "pname": "System.Security.Cryptography.Algorithms",
+ "version": "4.3.0",
+ "hash": "sha256-tAJvNSlczYBJ3Ed24Ae27a55tq/n4D3fubNQdwcKWA8="
+ },
+ {
+ "pname": "System.Security.Cryptography.Cng",
+ "version": "4.3.0",
+ "hash": "sha256-u17vy6wNhqok91SrVLno2M1EzLHZm6VMca85xbVChsw="
+ },
+ {
+ "pname": "System.Security.Cryptography.Csp",
+ "version": "4.3.0",
+ "hash": "sha256-oefdTU/Z2PWU9nlat8uiRDGq/PGZoSPRgkML11pmvPQ="
+ },
+ {
+ "pname": "System.Security.Cryptography.Encoding",
+ "version": "4.3.0",
+ "hash": "sha256-Yuge89N6M+NcblcvXMeyHZ6kZDfwBv3LPMDiF8HhJss="
+ },
+ {
+ "pname": "System.Security.Cryptography.OpenSsl",
+ "version": "4.3.0",
+ "hash": "sha256-DL+D2sc2JrQiB4oAcUggTFyD8w3aLEjJfod5JPe+Oz4="
+ },
+ {
+ "pname": "System.Security.Cryptography.Primitives",
+ "version": "4.3.0",
+ "hash": "sha256-fnFi7B3SnVj5a+BbgXnbjnGNvWrCEU6Hp/wjsjWz318="
+ },
+ {
+ "pname": "System.Security.Cryptography.X509Certificates",
+ "version": "4.3.0",
+ "hash": "sha256-MG3V/owDh273GCUPsGGraNwaVpcydupl3EtPXj6TVG0="
+ },
+ {
+ "pname": "System.Security.Principal",
+ "version": "4.3.0",
+ "hash": "sha256-rjudVUHdo8pNJg2EVEn0XxxwNo5h2EaYo+QboPkXlYk="
+ },
+ {
+ "pname": "System.Security.Principal.Windows",
+ "version": "4.3.0",
+ "hash": "sha256-mbdLVUcEwe78p3ZnB6jYsizNEqxMaCAWI3tEQNhRQAE="
+ },
+ {
+ "pname": "System.Text.Encoding",
+ "version": "4.3.0",
+ "hash": "sha256-GctHVGLZAa/rqkBNhsBGnsiWdKyv6VDubYpGkuOkBLg="
+ },
+ {
+ "pname": "System.Text.Encoding.Extensions",
+ "version": "4.3.0",
+ "hash": "sha256-vufHXg8QAKxHlujPHHcrtGwAqFmsCD6HKjfDAiHyAYc="
+ },
+ {
+ "pname": "System.Text.RegularExpressions",
+ "version": "4.3.0",
+ "hash": "sha256-VLCk1D1kcN2wbAe3d0YQM/PqCsPHOuqlBY1yd2Yo+K0="
+ },
+ {
+ "pname": "System.Threading",
+ "version": "4.3.0",
+ "hash": "sha256-ZDQ3dR4pzVwmaqBg4hacZaVenQ/3yAF/uV7BXZXjiWc="
+ },
+ {
+ "pname": "System.Threading.Overlapped",
+ "version": "4.3.0",
+ "hash": "sha256-tUX099CChkqWiHyP/1e4jGYzZAjgIthMOdMmiOGMUNk="
+ },
+ {
+ "pname": "System.Threading.Tasks",
+ "version": "4.3.0",
+ "hash": "sha256-Z5rXfJ1EXp3G32IKZGiZ6koMjRu0n8C1NGrwpdIen4w="
+ },
+ {
+ "pname": "System.Threading.Tasks.Extensions",
+ "version": "4.3.0",
+ "hash": "sha256-X2hQ5j+fxcmnm88Le/kSavjiGOmkcumBGTZKBLvorPc="
+ },
+ {
+ "pname": "System.Threading.Timer",
+ "version": "4.3.0",
+ "hash": "sha256-pmhslmhQhP32TWbBzoITLZ4BoORBqYk25OWbru04p9s="
+ },
+ {
+ "pname": "System.Xml.ReaderWriter",
+ "version": "4.3.0",
+ "hash": "sha256-QQ8KgU0lu4F5Unh+TbechO//zaAGZ4MfgvW72Cn1hzA="
+ },
+ {
+ "pname": "System.Xml.XDocument",
+ "version": "4.3.0",
+ "hash": "sha256-rWtdcmcuElNOSzCehflyKwHkDRpiOhJJs8CeQ0l1CCI="
+ },
+ {
+ "pname": "xunit",
+ "version": "2.5.3",
+ "hash": "sha256-X4TkN9y/572LnqOX+fiX6dqsqKe/HbAWZq6PhdD0qGM="
+ },
+ {
+ "pname": "xunit.abstractions",
+ "version": "2.0.3",
+ "hash": "sha256-0D1y/C34iARI96gb3bAOG8tcGPMjx+fMabTPpydGlAM="
+ },
+ {
+ "pname": "xunit.analyzers",
+ "version": "1.4.0",
+ "hash": "sha256-2m8ikSNvEzQ53rtqhruTpQZpJ+nzI9lhLj0x9w5FKO0="
+ },
+ {
+ "pname": "xunit.assert",
+ "version": "2.5.3",
+ "hash": "sha256-+cbNHWwm1no316xMJsdzO7TAV7bIlm3dz8dvKHQ66CU="
+ },
+ {
+ "pname": "xunit.core",
+ "version": "2.5.3",
+ "hash": "sha256-TEL6tBUxWDU9rVOj4KaxBpL+uZQ/3kcZWVDDueeQkhw="
+ },
+ {
+ "pname": "xunit.extensibility.core",
+ "version": "2.5.3",
+ "hash": "sha256-IjyXgVi/AAnilPsD4IrnqtSrr7Ugu75DguPnI2bVSFs="
+ },
+ {
+ "pname": "xunit.extensibility.execution",
+ "version": "2.5.3",
+ "hash": "sha256-zN7R4kZGsujpo8aAn4OHdtA0u/r5aeiZaw6A53B69KU="
+ },
+ {
+ "pname": "xunit.runner.visualstudio",
+ "version": "2.5.3",
+ "hash": "sha256-GZN1E9rOGorQvVSbGTsmXgJxj2TtJwJxCuo+oh+NEBI="
+ }
+]