From ad03dd833c73b7114362bfa50abf2d1d6bad2be2 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 23 Mar 2018 10:11:26 +0100 Subject: [PATCH 01/92] Make the provider csharp project buildable in VS22017 --- .gitignore | 1 + ChocolateyPackageProvider.cs | 2 -- ChocolateyProvider.csproj | 3 ++- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index aa4c089..86809aa 100644 --- a/.gitignore +++ b/.gitignore @@ -98,3 +98,4 @@ policheck* *.orig.sln *pingme* *.GhostDoc.xml +/.vs/ChocolateyProvider diff --git a/ChocolateyPackageProvider.cs b/ChocolateyPackageProvider.cs index d54fccb..5bccbba 100644 --- a/ChocolateyPackageProvider.cs +++ b/ChocolateyPackageProvider.cs @@ -219,8 +219,6 @@ public void RemovePackageSource(string name, Request request) // TODO: support user-defined package sources OR remove this method } - #endregion - /// /// Searches package sources given name and version information /// diff --git a/ChocolateyProvider.csproj b/ChocolateyProvider.csproj index 1b655c1..13f1785 100644 --- a/ChocolateyProvider.csproj +++ b/ChocolateyProvider.csproj @@ -77,6 +77,7 @@ + @@ -101,4 +102,4 @@ for /f "delims=" %25%25a in ('powershell "$p = ((Get-ItemProperty -Path HKCU:\So --> - + \ No newline at end of file From d9d0bac0d4a132178249fffbd6a09e119e362239 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 23 Mar 2018 10:25:21 +0100 Subject: [PATCH 02/92] Moved old code to Obsolete folder --- .gitignore | 1 + {.nuget => Obsolete/.nuget}/NuGet.Config | 0 {.nuget => Obsolete/.nuget}/NuGet.exe | Bin {.nuget => Obsolete/.nuget}/NuGet.targets | 0 .../ChocolateyPackageProvider.cs | 1066 ++++++++--------- .../ChocolateyProvider.csproj | 206 ++-- .../ChocolateyProvider.sln | 58 +- .../Properties}/AssemblyInfo.cs | 104 +- RequestHelper.cs => Obsolete/RequestHelper.cs | 0 RequestLogger.cs => Obsolete/RequestLogger.cs | 0 .../Resources}/Messages.Designer.cs | 146 +-- .../Resources}/Messages.resx | 204 ++-- {Sdk => Obsolete/Sdk}/Constants.cs | 232 ++-- {Sdk => Obsolete/Sdk}/ErrorCategory.cs | 106 +- {Sdk => Obsolete/Sdk}/Request.cs | 680 +++++------ .../install-provider.ps1 | 144 +-- packages.config => Obsolete/packages.config | 14 +- .../provider.manifest | 0 README.md | 10 +- 19 files changed, 1488 insertions(+), 1483 deletions(-) rename {.nuget => Obsolete/.nuget}/NuGet.Config (100%) rename {.nuget => Obsolete/.nuget}/NuGet.exe (100%) rename {.nuget => Obsolete/.nuget}/NuGet.targets (100%) rename ChocolateyPackageProvider.cs => Obsolete/ChocolateyPackageProvider.cs (97%) rename ChocolateyProvider.csproj => Obsolete/ChocolateyProvider.csproj (97%) rename ChocolateyProvider.sln => Obsolete/ChocolateyProvider.sln (97%) rename {Properties => Obsolete/Properties}/AssemblyInfo.cs (97%) rename RequestHelper.cs => Obsolete/RequestHelper.cs (100%) rename RequestLogger.cs => Obsolete/RequestLogger.cs (100%) rename {Resources => Obsolete/Resources}/Messages.Designer.cs (97%) rename {Resources => Obsolete/Resources}/Messages.resx (97%) rename {Sdk => Obsolete/Sdk}/Constants.cs (97%) rename {Sdk => Obsolete/Sdk}/ErrorCategory.cs (95%) rename {Sdk => Obsolete/Sdk}/Request.cs (97%) rename install-provider.ps1 => Obsolete/install-provider.ps1 (96%) rename packages.config => Obsolete/packages.config (98%) rename provider.manifest => Obsolete/provider.manifest (100%) diff --git a/.gitignore b/.gitignore index 86809aa..2602392 100644 --- a/.gitignore +++ b/.gitignore @@ -99,3 +99,4 @@ policheck* *pingme* *.GhostDoc.xml /.vs/ChocolateyProvider +/Obsolete/.vs/ChocolateyProvider/v15/Server/sqlite3 diff --git a/.nuget/NuGet.Config b/Obsolete/.nuget/NuGet.Config similarity index 100% rename from .nuget/NuGet.Config rename to Obsolete/.nuget/NuGet.Config diff --git a/.nuget/NuGet.exe b/Obsolete/.nuget/NuGet.exe similarity index 100% rename from .nuget/NuGet.exe rename to Obsolete/.nuget/NuGet.exe diff --git a/.nuget/NuGet.targets b/Obsolete/.nuget/NuGet.targets similarity index 100% rename from .nuget/NuGet.targets rename to Obsolete/.nuget/NuGet.targets diff --git a/ChocolateyPackageProvider.cs b/Obsolete/ChocolateyPackageProvider.cs similarity index 97% rename from ChocolateyPackageProvider.cs rename to Obsolete/ChocolateyPackageProvider.cs index 5bccbba..3b3f699 100644 --- a/ChocolateyPackageProvider.cs +++ b/Obsolete/ChocolateyPackageProvider.cs @@ -1,533 +1,533 @@ -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -namespace PackageManagement -{ - using chocolatey; - using chocolatey.infrastructure.app.configuration; - using chocolatey.infrastructure.app.domain; - using chocolatey.infrastructure.results; - using NuGet; - using Sdk; - using System; - using System.Collections.Generic; - using System.Diagnostics; - using System.Linq; - using Constants = Sdk.Constants; - - /// - /// A Package provider for OneGet. - /// - /// Important notes: - /// - Required Methods: Not all methods are required; some package providers do not support some features. If the methods isn't used or implemented it should be removed (or commented out) - /// - Error Handling: Avoid throwing exceptions from these methods. To properly return errors to the user, use the request.Error(...) method to notify the user of an error condition and then return. - /// - public class ChocolateyPackageProvider - { - /// - /// The features that this package supports. - /// TODO: fill in the feature strings for this provider - /// - protected static Dictionary Features = new Dictionary { - - // specify the extensions that your provider uses for its package files (if you have any) - { Constants.Features.SupportedExtensions, new[]{"nupkg"}}, - - // you can list the URL schemes that you support searching for packages with - { Constants.Features.SupportedSchemes, new [] {"http", "https", "file"}}, - -#if FOR_EXAMPLE - // add this if you want to 'hide' your provider by default. - { Constants.Features.AutomationOnly, Constants.FeaturePresent }, -#endif - // you can list the magic signatures (bytes at the beginning of a file) that we can use - - // to peek and see if a given file is yours. - { Constants.Features.MagicSignatures, Constants.Signatures.ZipVariants}, - }; - - private GetChocolatey _chocolatey; - - /// - /// Returns the name of the Provider. - /// TODO: Test and verify that we want "choco" vs "chocolatey" - /// TODO: let's keep it as 'choco' until we are ready to punt the prototype provider - /// - /// The name of this provider - public string PackageProviderName - { - get { return "Choco"; } - } - - /// - /// Returns the version of the Provider. - /// - /// The version of this provider - public string ProviderVersion - { - get - { - return "3.0.0.0"; - } - } - - /// - /// This is just here as to give us some possibility of knowing when an unexception happens... - /// At the very least, we'll write it to the system debug channel, so a developer can find it if they are looking for it. - /// - public void OnUnhandledException(string methodName, Exception exception) - { - Debug.WriteLine("Unexpected Exception thrown in '{0}::{1}' -- {2}\\{3}\r\n{4}", PackageProviderName, methodName, exception.GetType().Name, exception.Message, exception.StackTrace); - } - - /// - /// Performs one-time initialization of the $provider. - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void InitializeProvider(Request request) - { - request.Debug("Entering '{0}::InitializeProvider' to set up a chocolatey with custom logging", PackageProviderName); - _chocolatey = Lets.GetChocolatey().SetCustomLogging(new RequestLogger(request)); - } - - /// - /// Returns dynamic option definitions to the HOST - /// - /// example response: - /// request.YieldDynamicOption( "MySwitch", OptionType.String.ToString(), false); - /// - /// - /// The category of dynamic options that the HOST is interested in - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void GetDynamicOptions(string category, Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::GetDynamicOptions' {1}", PackageProviderName, category); - - switch ((category ?? string.Empty).ToLowerInvariant()) - { - case "install": - // TODO: put the options supported for install/uninstall/getinstalledpackages - - break; - - case "provider": - // TODO: put the options used with this provider (so far, not used by OneGet?). - - break; - - case "source": - // TODO: put any options for package sources - - break; - - case "package": - // TODO: put any options used when searching for packages - - break; - default: - request.Debug("Unknown category for '{0}::GetDynamicOptions': {1}", PackageProviderName, category); - break; - } - } - - /// - /// Returns a collection of strings to the client advertizing features this provider supports. - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void GetFeatures(Request request) - { - request.Debug("Entering '{0}::GetFeatures' ", PackageProviderName); - - foreach (var feature in Features) - { - request.Yield(feature); - } - } - - #region Sources - /// - /// Resolves and returns Package Sources to the client. - /// - /// Specified sources are passed in via the request object (request.GetSources()). - /// - /// Sources are returned using request.YieldPackageSource(...) - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void ResolvePackageSources(Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::ResolvePackageSources'", PackageProviderName); - - foreach (var source in GetSource(request.Sources.ToArray())) - { - request.YieldPackageSource(source.Id, source.Value, false, source.Authenticated, false); - } - } - #endregion - - /// - /// This is called when the user is adding (or updating) a package source - /// - /// The name of the package source. If this parameter is null or empty the PROVIDER should use the location as the name (if the PROVIDER actually stores names of package sources) - /// The location (ie, directory, URL, etc) of the package source. If this is null or empty, the PROVIDER should use the name as the location (if valid) - /// A boolean indicating that the user trusts this package source. Packages returned from this source should be marked as 'trusted' - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void AddPackageSource(string name, string location, bool trusted, Request request) - { - // TODO: Make chocolatey store "trusted" property on the sources - request.Debug("Entering {0} source add -n={1} -s'{2}' (we don't support trusted = '{3}')", PackageProviderName, name, - location, trusted); - - _chocolatey.Set(conf => - { - conf.CommandName = "Source"; - conf.SourceCommand.Command = SourceCommandType.add; - conf.SourceCommand.Name = name; - conf.Sources = location; - conf.AllowUnofficialBuild = true; - }).Run(); - } - - /// - /// Removes/Unregisters a package source - /// - /// The name or location of a package source to remove. - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void RemovePackageSource(string name, Request request) - { - request.Debug("Entering {0} source remove -n={1})", PackageProviderName, name); - - _chocolatey.Set(conf => - { - conf.CommandName = "Source"; - conf.SourceCommand.Command = SourceCommandType.remove; - conf.SourceCommand.Name = name; - conf.AllowUnofficialBuild = true; - }).Run(); - // TODO: support user-defined package sources OR remove this method - } - - /// - /// Searches package sources given name and version information - /// - /// Package information must be returned using request.YieldPackage(...) function. - /// - /// a name or partial name of the package(s) requested - /// A specific version of the package. Null or empty if the user did not specify - /// A minimum version of the package. Null or empty if the user did not specify - /// A maximum version of the package. Null or empty if the user did not specify - /// if this is greater than zero (and the number should have been generated using StartFind(...), the core is calling this multiple times to do a batch search request. The operation can be delayed until CompleteFind(...) is called - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void FindPackage(string name, string requiredVersion, string minimumVersion, string maximumVersion, int id, Request request) - { - request.Debug("Entering '{0}::FindPackage' '{1}','{2}','{3}','{4}', '{5}'", PackageProviderName, name, requiredVersion, minimumVersion, maximumVersion, id); - request.Debug("FindPackage:: " + request.PackageSources.@join("|")); - var versions = ParseVersion(requiredVersion, minimumVersion, maximumVersion); - - var sources = GetSource(request.PackageSources.ToArray()); - // TODO: need to support URLs for sources ... - foreach(var package in _chocolatey.Set(conf => - { - conf.CommandName = "List"; - conf.Input = name; - conf.Sources = sources.Select(cs => cs.Value).@join(";"); - conf.Version = requiredVersion; - conf.AllowUnofficialBuild = true; - }).List()) - { - SemanticVersion actual; - if (SemanticVersion.TryParse(package.Version, out actual) && (actual < versions.Item1 || actual > versions.Item2)) - { - continue; - } - request.YieldSoftwareIdentity(package); - } - } - - private static Tuple ParseVersion(string requiredVersion, string minimumVersion, string maximumVersion) - { - SemanticVersion min, max, actual; - - if (!string.IsNullOrEmpty(requiredVersion) && SemanticVersion.TryParse(requiredVersion, out actual)) - { - min = max = actual; - } - else - { - if (string.IsNullOrEmpty(minimumVersion) || !SemanticVersion.TryParse(minimumVersion, out min)) - { - min = new SemanticVersion(new Version()); - } - if (string.IsNullOrEmpty(maximumVersion) || !SemanticVersion.TryParse(maximumVersion, out max)) - { - max = new SemanticVersion(int.MaxValue, int.MaxValue, int.MaxValue, int.MaxValue); - } - } - return new Tuple(min, max); - } - - - private IEnumerable GetSource(params string[] names) - { - IEnumerable sources; - if (names.Any()) - { - var all = new List(); - // the system is requesting sources that match the values passed. - // if the value passed can be a legitimate source, but is not registered, return a package source marked unregistered. - - all.AddRange( _chocolatey.Set(conf => - { - conf.CommandName = "Source"; - conf.SourceCommand.Command = SourceCommandType.list; - conf.Sources = names.@join(";"); - conf.AllowUnofficialBuild = true; - }).List().Where(source => names.Any(name => name == source.Id || name == source.Value))); - - if (!all.Any()) - { - foreach (var n in names) - { - string name = n; - var s = _chocolatey.Set(conf => - { - conf.CommandName = "Source"; - conf.SourceCommand.Command = SourceCommandType.list; - conf.Sources = name; - conf.AllowUnofficialBuild = true; - }).List().Where(source => name == source.Id || name == source.Value).ToList(); - if (!s.Any()) - { - all.Add(new ChocolateySource {Id = name, Value = name}); - } - else - { - all.AddRange(s); - } - } - } - sources = all; - } - else - { - // the system is requesting all the registered sources - sources = _chocolatey.Set(conf => - { - conf.CommandName = "Source"; - conf.SourceCommand.Command = SourceCommandType.list; - conf.AllowUnofficialBuild = true; - }).List(); - } - return sources; - } - -/* - /// - /// Finds packages given a locally-accessible filename - /// - /// Package information must be returned using request.YieldPackage(...) function. - /// - /// the full path to the file to determine if it is a package - /// if this is greater than zero (and the number should have been generated using StartFind(...), the core is calling this multiple times to do a batch search request. The operation can be delayed until CompleteFind(...) is called - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void FindPackageByFile(string file, int id, Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::FindPackageByFile' '{1}','{2}'", PackageProviderName, file, id); - - // TODO: implement searching for a package by analyzing the package file, or remove this method - } - - /// - /// Finds packages given a URI. - /// - /// The function is responsible for downloading any content required to make this work - /// - /// Package information must be returned using request.YieldPackage(...) function. - /// - /// the URI the client requesting a package for. - /// if this is greater than zero (and the number should have been generated using StartFind(...), the core is calling this multiple times to do a batch search request. The operation can be delayed until CompleteFind(...) is called - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void FindPackageByUri(Uri uri, int id, Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::FindPackageByUri' '{1}','{2}'", PackageProviderName, uri, id); - - // TODO: implement searching for a package by it's unique uri (or remove this method) - } - - /// - /// Downloads a remote package file to a local location. - /// - /// - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void DownloadPackage(string fastPackageReference, string location, Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::DownloadPackage' '{1}','{2}'", PackageProviderName, fastPackageReference, location); - - // TODO: actually download the package ... - - } - - /// - /// Returns package references for all the dependent packages - /// - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void GetPackageDependencies(string fastPackageReference, Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::GetPackageDependencies' '{1}'", PackageProviderName, fastPackageReference); - - // TODO: check dependencies - - } - -*/ - - /// - /// Installs a given package. - /// - /// A provider supplied identifier that specifies an exact package - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void InstallPackage(string fastPackageReference, Request request) - { - request.Debug("Entering '{0}::InstallPackage' '{1}'", PackageProviderName, fastPackageReference); - var parts = fastPackageReference.Split(RequestHelper.NullChar); - var force = false; - - var forceStr = request.GetOptionValue("Force"); - if (!string.IsNullOrEmpty(forceStr)) - { - bool.TryParse(forceStr, out force); - } - - foreach (var package in _chocolatey.Set(conf => - { - conf.CommandName = "Install"; - conf.Sources = GetSource(parts[0]).Select(cs => cs.Value).@join(";"); - conf.PackageNames = parts[1]; - conf.Version = parts[2]; - conf.AllowUnofficialBuild = true; - conf.Force = force; - }).List()) - { - request.YieldSoftwareIdentity(package); - } - } - - /// - /// Uninstalls a package - /// - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void UninstallPackage(string fastPackageReference, Request request) - { - // TODO: improve this debug message that tells us what's going on (what about the dynamic parameters) - var parts = fastPackageReference.Split(RequestHelper.NullChar); - request.Debug("Entering '{0}::UninstallPackage' '{1}'", PackageProviderName, parts.@join("' '")); - - // TODO: add dynamic parameters for AllVersions and ForceDependencies - foreach (var package in _chocolatey.Set(conf => - { - conf.CommandName = "Uninstall"; - //conf.Sources = parts[0]; - conf.PackageNames = parts[1]; - conf.Version = parts[2]; - }).List()) - { - request.YieldSoftwareIdentity(package); - } - } - - /// - /// Returns the packages that are installed - /// - /// the package name to match. Empty or null means match everything - /// the specific version asked for. If this parameter is specified (ie, not null or empty string) then the minimum and maximum values are ignored - /// the minimum version of packages to return . If the requiredVersion parameter is specified (ie, not null or empty string) this should be ignored - /// the maximum version of packages to return . If the requiredVersion parameter is specified (ie, not null or empty string) this should be ignored - /// - /// An object passed in from the CORE that contains functions that can be used to interact with - /// the CORE and HOST - /// - public void GetInstalledPackages(string name, string requiredVersion, string minimumVersion, string maximumVersion, Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::GetInstalledPackages' '{1}' '{2}' '{3}' '{4}'", PackageProviderName, name, requiredVersion, minimumVersion, maximumVersion); - var versions = ParseVersion(requiredVersion, minimumVersion, maximumVersion); - - foreach (var package in _chocolatey.Set(conf => - { - conf.CommandName = "List"; - conf.Input = name; - conf.ListCommand.LocalOnly = true; - conf.AllowUnofficialBuild = true; - }).List()) - { - SemanticVersion actual; - if (SemanticVersion.TryParse(package.Version, out actual) && (actual < versions.Item1 || actual > versions.Item2)) - { - continue; - } - request.YieldSoftwareIdentity(package); - } - } - -/* - /// - /// - /// - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void GetPackageDetails(string fastPackageReference, Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::GetPackageDetails' '{1}'", PackageProviderName, fastPackageReference); - - // TODO: This method is for fetching details that are more expensive than FindPackage* (if you don't need that, remove this method) - } - - /// - /// Initializes a batch search request. - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - /// - public int StartFind(Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::StartFind'", PackageProviderName); - - // TODO: batch search implementation - return default(int); - } - - /// - /// Finalizes a batch search request. - /// - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - /// - public void CompleteFind(int id, Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::CompleteFind' '{1}'", PackageProviderName, id); - // TODO: batch search implementation - } -*/ - } -} +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace PackageManagement +{ + using chocolatey; + using chocolatey.infrastructure.app.configuration; + using chocolatey.infrastructure.app.domain; + using chocolatey.infrastructure.results; + using NuGet; + using Sdk; + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.Linq; + using Constants = Sdk.Constants; + + /// + /// A Package provider for OneGet. + /// + /// Important notes: + /// - Required Methods: Not all methods are required; some package providers do not support some features. If the methods isn't used or implemented it should be removed (or commented out) + /// - Error Handling: Avoid throwing exceptions from these methods. To properly return errors to the user, use the request.Error(...) method to notify the user of an error condition and then return. + /// + public class ChocolateyPackageProvider + { + /// + /// The features that this package supports. + /// TODO: fill in the feature strings for this provider + /// + protected static Dictionary Features = new Dictionary { + + // specify the extensions that your provider uses for its package files (if you have any) + { Constants.Features.SupportedExtensions, new[]{"nupkg"}}, + + // you can list the URL schemes that you support searching for packages with + { Constants.Features.SupportedSchemes, new [] {"http", "https", "file"}}, + +#if FOR_EXAMPLE + // add this if you want to 'hide' your provider by default. + { Constants.Features.AutomationOnly, Constants.FeaturePresent }, +#endif + // you can list the magic signatures (bytes at the beginning of a file) that we can use + + // to peek and see if a given file is yours. + { Constants.Features.MagicSignatures, Constants.Signatures.ZipVariants}, + }; + + private GetChocolatey _chocolatey; + + /// + /// Returns the name of the Provider. + /// TODO: Test and verify that we want "choco" vs "chocolatey" + /// TODO: let's keep it as 'choco' until we are ready to punt the prototype provider + /// + /// The name of this provider + public string PackageProviderName + { + get { return "Choco"; } + } + + /// + /// Returns the version of the Provider. + /// + /// The version of this provider + public string ProviderVersion + { + get + { + return "3.0.0.0"; + } + } + + /// + /// This is just here as to give us some possibility of knowing when an unexception happens... + /// At the very least, we'll write it to the system debug channel, so a developer can find it if they are looking for it. + /// + public void OnUnhandledException(string methodName, Exception exception) + { + Debug.WriteLine("Unexpected Exception thrown in '{0}::{1}' -- {2}\\{3}\r\n{4}", PackageProviderName, methodName, exception.GetType().Name, exception.Message, exception.StackTrace); + } + + /// + /// Performs one-time initialization of the $provider. + /// + /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST + public void InitializeProvider(Request request) + { + request.Debug("Entering '{0}::InitializeProvider' to set up a chocolatey with custom logging", PackageProviderName); + _chocolatey = Lets.GetChocolatey().SetCustomLogging(new RequestLogger(request)); + } + + /// + /// Returns dynamic option definitions to the HOST + /// + /// example response: + /// request.YieldDynamicOption( "MySwitch", OptionType.String.ToString(), false); + /// + /// + /// The category of dynamic options that the HOST is interested in + /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST + public void GetDynamicOptions(string category, Request request) + { + // TODO: improve this debug message that tells us what's going on. + request.Debug("Entering '{0}::GetDynamicOptions' {1}", PackageProviderName, category); + + switch ((category ?? string.Empty).ToLowerInvariant()) + { + case "install": + // TODO: put the options supported for install/uninstall/getinstalledpackages + + break; + + case "provider": + // TODO: put the options used with this provider (so far, not used by OneGet?). + + break; + + case "source": + // TODO: put any options for package sources + + break; + + case "package": + // TODO: put any options used when searching for packages + + break; + default: + request.Debug("Unknown category for '{0}::GetDynamicOptions': {1}", PackageProviderName, category); + break; + } + } + + /// + /// Returns a collection of strings to the client advertizing features this provider supports. + /// + /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST + public void GetFeatures(Request request) + { + request.Debug("Entering '{0}::GetFeatures' ", PackageProviderName); + + foreach (var feature in Features) + { + request.Yield(feature); + } + } + + #region Sources + /// + /// Resolves and returns Package Sources to the client. + /// + /// Specified sources are passed in via the request object (request.GetSources()). + /// + /// Sources are returned using request.YieldPackageSource(...) + /// + /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST + public void ResolvePackageSources(Request request) + { + // TODO: improve this debug message that tells us what's going on. + request.Debug("Entering '{0}::ResolvePackageSources'", PackageProviderName); + + foreach (var source in GetSource(request.Sources.ToArray())) + { + request.YieldPackageSource(source.Id, source.Value, false, source.Authenticated, false); + } + } + #endregion + + /// + /// This is called when the user is adding (or updating) a package source + /// + /// The name of the package source. If this parameter is null or empty the PROVIDER should use the location as the name (if the PROVIDER actually stores names of package sources) + /// The location (ie, directory, URL, etc) of the package source. If this is null or empty, the PROVIDER should use the name as the location (if valid) + /// A boolean indicating that the user trusts this package source. Packages returned from this source should be marked as 'trusted' + /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST + public void AddPackageSource(string name, string location, bool trusted, Request request) + { + // TODO: Make chocolatey store "trusted" property on the sources + request.Debug("Entering {0} source add -n={1} -s'{2}' (we don't support trusted = '{3}')", PackageProviderName, name, + location, trusted); + + _chocolatey.Set(conf => + { + conf.CommandName = "Source"; + conf.SourceCommand.Command = SourceCommandType.add; + conf.SourceCommand.Name = name; + conf.Sources = location; + conf.AllowUnofficialBuild = true; + }).Run(); + } + + /// + /// Removes/Unregisters a package source + /// + /// The name or location of a package source to remove. + /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST + public void RemovePackageSource(string name, Request request) + { + request.Debug("Entering {0} source remove -n={1})", PackageProviderName, name); + + _chocolatey.Set(conf => + { + conf.CommandName = "Source"; + conf.SourceCommand.Command = SourceCommandType.remove; + conf.SourceCommand.Name = name; + conf.AllowUnofficialBuild = true; + }).Run(); + // TODO: support user-defined package sources OR remove this method + } + + /// + /// Searches package sources given name and version information + /// + /// Package information must be returned using request.YieldPackage(...) function. + /// + /// a name or partial name of the package(s) requested + /// A specific version of the package. Null or empty if the user did not specify + /// A minimum version of the package. Null or empty if the user did not specify + /// A maximum version of the package. Null or empty if the user did not specify + /// if this is greater than zero (and the number should have been generated using StartFind(...), the core is calling this multiple times to do a batch search request. The operation can be delayed until CompleteFind(...) is called + /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST + public void FindPackage(string name, string requiredVersion, string minimumVersion, string maximumVersion, int id, Request request) + { + request.Debug("Entering '{0}::FindPackage' '{1}','{2}','{3}','{4}', '{5}'", PackageProviderName, name, requiredVersion, minimumVersion, maximumVersion, id); + request.Debug("FindPackage:: " + request.PackageSources.@join("|")); + var versions = ParseVersion(requiredVersion, minimumVersion, maximumVersion); + + var sources = GetSource(request.PackageSources.ToArray()); + // TODO: need to support URLs for sources ... + foreach(var package in _chocolatey.Set(conf => + { + conf.CommandName = "List"; + conf.Input = name; + conf.Sources = sources.Select(cs => cs.Value).@join(";"); + conf.Version = requiredVersion; + conf.AllowUnofficialBuild = true; + }).List()) + { + SemanticVersion actual; + if (SemanticVersion.TryParse(package.Version, out actual) && (actual < versions.Item1 || actual > versions.Item2)) + { + continue; + } + request.YieldSoftwareIdentity(package); + } + } + + private static Tuple ParseVersion(string requiredVersion, string minimumVersion, string maximumVersion) + { + SemanticVersion min, max, actual; + + if (!string.IsNullOrEmpty(requiredVersion) && SemanticVersion.TryParse(requiredVersion, out actual)) + { + min = max = actual; + } + else + { + if (string.IsNullOrEmpty(minimumVersion) || !SemanticVersion.TryParse(minimumVersion, out min)) + { + min = new SemanticVersion(new Version()); + } + if (string.IsNullOrEmpty(maximumVersion) || !SemanticVersion.TryParse(maximumVersion, out max)) + { + max = new SemanticVersion(int.MaxValue, int.MaxValue, int.MaxValue, int.MaxValue); + } + } + return new Tuple(min, max); + } + + + private IEnumerable GetSource(params string[] names) + { + IEnumerable sources; + if (names.Any()) + { + var all = new List(); + // the system is requesting sources that match the values passed. + // if the value passed can be a legitimate source, but is not registered, return a package source marked unregistered. + + all.AddRange( _chocolatey.Set(conf => + { + conf.CommandName = "Source"; + conf.SourceCommand.Command = SourceCommandType.list; + conf.Sources = names.@join(";"); + conf.AllowUnofficialBuild = true; + }).List().Where(source => names.Any(name => name == source.Id || name == source.Value))); + + if (!all.Any()) + { + foreach (var n in names) + { + string name = n; + var s = _chocolatey.Set(conf => + { + conf.CommandName = "Source"; + conf.SourceCommand.Command = SourceCommandType.list; + conf.Sources = name; + conf.AllowUnofficialBuild = true; + }).List().Where(source => name == source.Id || name == source.Value).ToList(); + if (!s.Any()) + { + all.Add(new ChocolateySource {Id = name, Value = name}); + } + else + { + all.AddRange(s); + } + } + } + sources = all; + } + else + { + // the system is requesting all the registered sources + sources = _chocolatey.Set(conf => + { + conf.CommandName = "Source"; + conf.SourceCommand.Command = SourceCommandType.list; + conf.AllowUnofficialBuild = true; + }).List(); + } + return sources; + } + +/* + /// + /// Finds packages given a locally-accessible filename + /// + /// Package information must be returned using request.YieldPackage(...) function. + /// + /// the full path to the file to determine if it is a package + /// if this is greater than zero (and the number should have been generated using StartFind(...), the core is calling this multiple times to do a batch search request. The operation can be delayed until CompleteFind(...) is called + /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST + public void FindPackageByFile(string file, int id, Request request) + { + // TODO: improve this debug message that tells us what's going on. + request.Debug("Entering '{0}::FindPackageByFile' '{1}','{2}'", PackageProviderName, file, id); + + // TODO: implement searching for a package by analyzing the package file, or remove this method + } + + /// + /// Finds packages given a URI. + /// + /// The function is responsible for downloading any content required to make this work + /// + /// Package information must be returned using request.YieldPackage(...) function. + /// + /// the URI the client requesting a package for. + /// if this is greater than zero (and the number should have been generated using StartFind(...), the core is calling this multiple times to do a batch search request. The operation can be delayed until CompleteFind(...) is called + /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST + public void FindPackageByUri(Uri uri, int id, Request request) + { + // TODO: improve this debug message that tells us what's going on. + request.Debug("Entering '{0}::FindPackageByUri' '{1}','{2}'", PackageProviderName, uri, id); + + // TODO: implement searching for a package by it's unique uri (or remove this method) + } + + /// + /// Downloads a remote package file to a local location. + /// + /// + /// + /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST + public void DownloadPackage(string fastPackageReference, string location, Request request) + { + // TODO: improve this debug message that tells us what's going on. + request.Debug("Entering '{0}::DownloadPackage' '{1}','{2}'", PackageProviderName, fastPackageReference, location); + + // TODO: actually download the package ... + + } + + /// + /// Returns package references for all the dependent packages + /// + /// + /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST + public void GetPackageDependencies(string fastPackageReference, Request request) + { + // TODO: improve this debug message that tells us what's going on. + request.Debug("Entering '{0}::GetPackageDependencies' '{1}'", PackageProviderName, fastPackageReference); + + // TODO: check dependencies + + } + +*/ + + /// + /// Installs a given package. + /// + /// A provider supplied identifier that specifies an exact package + /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST + public void InstallPackage(string fastPackageReference, Request request) + { + request.Debug("Entering '{0}::InstallPackage' '{1}'", PackageProviderName, fastPackageReference); + var parts = fastPackageReference.Split(RequestHelper.NullChar); + var force = false; + + var forceStr = request.GetOptionValue("Force"); + if (!string.IsNullOrEmpty(forceStr)) + { + bool.TryParse(forceStr, out force); + } + + foreach (var package in _chocolatey.Set(conf => + { + conf.CommandName = "Install"; + conf.Sources = GetSource(parts[0]).Select(cs => cs.Value).@join(";"); + conf.PackageNames = parts[1]; + conf.Version = parts[2]; + conf.AllowUnofficialBuild = true; + conf.Force = force; + }).List()) + { + request.YieldSoftwareIdentity(package); + } + } + + /// + /// Uninstalls a package + /// + /// + /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST + public void UninstallPackage(string fastPackageReference, Request request) + { + // TODO: improve this debug message that tells us what's going on (what about the dynamic parameters) + var parts = fastPackageReference.Split(RequestHelper.NullChar); + request.Debug("Entering '{0}::UninstallPackage' '{1}'", PackageProviderName, parts.@join("' '")); + + // TODO: add dynamic parameters for AllVersions and ForceDependencies + foreach (var package in _chocolatey.Set(conf => + { + conf.CommandName = "Uninstall"; + //conf.Sources = parts[0]; + conf.PackageNames = parts[1]; + conf.Version = parts[2]; + }).List()) + { + request.YieldSoftwareIdentity(package); + } + } + + /// + /// Returns the packages that are installed + /// + /// the package name to match. Empty or null means match everything + /// the specific version asked for. If this parameter is specified (ie, not null or empty string) then the minimum and maximum values are ignored + /// the minimum version of packages to return . If the requiredVersion parameter is specified (ie, not null or empty string) this should be ignored + /// the maximum version of packages to return . If the requiredVersion parameter is specified (ie, not null or empty string) this should be ignored + /// + /// An object passed in from the CORE that contains functions that can be used to interact with + /// the CORE and HOST + /// + public void GetInstalledPackages(string name, string requiredVersion, string minimumVersion, string maximumVersion, Request request) + { + // TODO: improve this debug message that tells us what's going on. + request.Debug("Entering '{0}::GetInstalledPackages' '{1}' '{2}' '{3}' '{4}'", PackageProviderName, name, requiredVersion, minimumVersion, maximumVersion); + var versions = ParseVersion(requiredVersion, minimumVersion, maximumVersion); + + foreach (var package in _chocolatey.Set(conf => + { + conf.CommandName = "List"; + conf.Input = name; + conf.ListCommand.LocalOnly = true; + conf.AllowUnofficialBuild = true; + }).List()) + { + SemanticVersion actual; + if (SemanticVersion.TryParse(package.Version, out actual) && (actual < versions.Item1 || actual > versions.Item2)) + { + continue; + } + request.YieldSoftwareIdentity(package); + } + } + +/* + /// + /// + /// + /// + /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST + public void GetPackageDetails(string fastPackageReference, Request request) + { + // TODO: improve this debug message that tells us what's going on. + request.Debug("Entering '{0}::GetPackageDetails' '{1}'", PackageProviderName, fastPackageReference); + + // TODO: This method is for fetching details that are more expensive than FindPackage* (if you don't need that, remove this method) + } + + /// + /// Initializes a batch search request. + /// + /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST + /// + public int StartFind(Request request) + { + // TODO: improve this debug message that tells us what's going on. + request.Debug("Entering '{0}::StartFind'", PackageProviderName); + + // TODO: batch search implementation + return default(int); + } + + /// + /// Finalizes a batch search request. + /// + /// + /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST + /// + public void CompleteFind(int id, Request request) + { + // TODO: improve this debug message that tells us what's going on. + request.Debug("Entering '{0}::CompleteFind' '{1}'", PackageProviderName, id); + // TODO: batch search implementation + } +*/ + } +} diff --git a/ChocolateyProvider.csproj b/Obsolete/ChocolateyProvider.csproj similarity index 97% rename from ChocolateyProvider.csproj rename to Obsolete/ChocolateyProvider.csproj index 13f1785..3fab5b2 100644 --- a/ChocolateyProvider.csproj +++ b/Obsolete/ChocolateyProvider.csproj @@ -1,105 +1,103 @@ - - - - - Debug - AnyCPU - {12BC926F-9911-47DB-A490-21E8686514F6} - Library - Properties - PackageManagement - ChocolateyProvider - 512 - $([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), solution.props))\solution.props - - - - - $([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), PackageProvider.sln))\ - $(SolutionDir) - - v4.0 - v4.0 - $(SolutionRootDir)output\$(TargetFrameworkVersion.Replace(".",""))\$(Configuration)\bin\ - $(SolutionRootDir)intermediate\$(TargetFrameworkVersion.Replace(".",""))\$(Configuration)\$(AssemblyName)\ - $(BaseIntermediateOutputPath) - $(OutputPath)$(AssemblyName).XML - 1591 - true - FRAMEWORK$(TargetFrameworkVersion.Replace(".","")) - output\$(TargetFrameworkVersion.Replace(".",""))\$(Configuration)\bin\ - - - true - full - false - $(DefineConstants);DEBUG;TRACE - prompt - 4 - output\v40\Debug\bin\ChocolateyProvider.xml - - - pdbonly - true - TRACE - prompt - 4 - output\v40\Release\bin\ChocolateyProvider.xml - - - - - - - - - - True - True - Messages.resx - - - - - - ResXFileCodeGenerator - Messages.Designer.cs - - - - - packages\chocolatey.lib.0.9.10.3\lib\chocolatey.dll - True - - - packages\log4net.2.0.3\lib\net40-full\log4net.dll - True - - - - - - - - - - - - - - - :Locate MT.EXE Tool: -for /f "delims=" %25%25a in ('powershell "$p = ((Get-ItemProperty -Path HKCU:\Software\PackageManagement\Tools\MT.EXE -Name Path -ea 0).Path) ; if( -not $p ) { $p = ((dir ${env:ProgramFiles(x86)} -recurse -ea 0| where -property name -eq mt.exe | select -first 1 ).FullName) ; $null = mkdir -Path HKCU:\Software\PackageManagement\Tools\MT.EXE -Force ; $null = New-ItemProperty -Path HKCU:\Software\PackageManagement\Tools\MT.EXE -Name Path -Value $p -force } ; $p"') do @set MTEXE=%25%25a - -:Run the tool to add the manifest to the binary. -"%25MTEXE%25" -manifest $(ProjectDir)provider.manifest -outputresource:$(TargetPath);#101 - - - + + + + + Debug + AnyCPU + {12BC926F-9911-47DB-A490-21E8686514F6} + Library + Properties + PackageManagement + ChocolateyProvider + 512 + $([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), solution.props))\solution.props + + + + + $([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), PackageProvider.sln))\ + $(SolutionDir) + + v4.0 + v4.0 + $(SolutionRootDir)output\$(TargetFrameworkVersion.Replace(".",""))\$(Configuration)\bin\ + $(SolutionRootDir)intermediate\$(TargetFrameworkVersion.Replace(".",""))\$(Configuration)\$(AssemblyName)\ + $(BaseIntermediateOutputPath) + $(OutputPath)$(AssemblyName).XML + 1591 + true + FRAMEWORK$(TargetFrameworkVersion.Replace(".","")) + output\$(TargetFrameworkVersion.Replace(".",""))\$(Configuration)\bin\ + + + true + full + false + $(DefineConstants);DEBUG;TRACE + prompt + 4 + output\v40\Debug\bin\ChocolateyProvider.xml + + + pdbonly + true + TRACE + prompt + 4 + output\v40\Release\bin\ChocolateyProvider.xml + + + + + + + + + + True + True + Messages.resx + + + + + + ResXFileCodeGenerator + Messages.Designer.cs + + + + + packages\chocolatey.lib.0.9.10.3\lib\chocolatey.dll + True + + + packages\log4net.2.0.3\lib\net40-full\log4net.dll + True + + + + + + + + + + + + + :Locate MT.EXE Tool: +for /f "delims=" %25%25a in ('powershell "$p = ((Get-ItemProperty -Path HKCU:\Software\PackageManagement\Tools\MT.EXE -Name Path -ea 0).Path) ; if( -not $p ) { $p = ((dir ${env:ProgramFiles(x86)} -recurse -ea 0| where -property name -eq mt.exe | select -first 1 ).FullName) ; $null = mkdir -Path HKCU:\Software\PackageManagement\Tools\MT.EXE -Force ; $null = New-ItemProperty -Path HKCU:\Software\PackageManagement\Tools\MT.EXE -Name Path -Value $p -force } ; $p"') do @set MTEXE=%25%25a + +:Run the tool to add the manifest to the binary. +"%25MTEXE%25" -manifest $(ProjectDir)provider.manifest -outputresource:$(TargetPath);#101 + + + \ No newline at end of file diff --git a/ChocolateyProvider.sln b/Obsolete/ChocolateyProvider.sln similarity index 97% rename from ChocolateyProvider.sln rename to Obsolete/ChocolateyProvider.sln index ddf392f..98ce5c2 100644 --- a/ChocolateyProvider.sln +++ b/Obsolete/ChocolateyProvider.sln @@ -1,29 +1,29 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.31101.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChocolateyProvider", "ChocolateyProvider.csproj", "{12BC926F-9911-47DB-A490-21E8686514F6}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{D4933EC0-5563-4BE5-88D3-FA1ADC0BE218}" - ProjectSection(SolutionItems) = preProject - .nuget\NuGet.Config = .nuget\NuGet.Config - .nuget\NuGet.exe = .nuget\NuGet.exe - .nuget\NuGet.targets = .nuget\NuGet.targets - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {12BC926F-9911-47DB-A490-21E8686514F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {12BC926F-9911-47DB-A490-21E8686514F6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {12BC926F-9911-47DB-A490-21E8686514F6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {12BC926F-9911-47DB-A490-21E8686514F6}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.31101.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChocolateyProvider", "ChocolateyProvider.csproj", "{12BC926F-9911-47DB-A490-21E8686514F6}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{D4933EC0-5563-4BE5-88D3-FA1ADC0BE218}" + ProjectSection(SolutionItems) = preProject + .nuget\NuGet.Config = .nuget\NuGet.Config + .nuget\NuGet.exe = .nuget\NuGet.exe + .nuget\NuGet.targets = .nuget\NuGet.targets + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {12BC926F-9911-47DB-A490-21E8686514F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {12BC926F-9911-47DB-A490-21E8686514F6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {12BC926F-9911-47DB-A490-21E8686514F6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {12BC926F-9911-47DB-A490-21E8686514F6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Properties/AssemblyInfo.cs b/Obsolete/Properties/AssemblyInfo.cs similarity index 97% rename from Properties/AssemblyInfo.cs rename to Obsolete/Properties/AssemblyInfo.cs index a5cb412..62babbc 100644 --- a/Properties/AssemblyInfo.cs +++ b/Obsolete/Properties/AssemblyInfo.cs @@ -1,53 +1,53 @@ -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. - -[assembly: AssemblyTitle("Chocolatey.PackageManagement")] -[assembly: AssemblyDescription("PackageManagement package provider: Chocolatey")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Chocolatey")] -[assembly: AssemblyProduct("Chocolatey Provider for PackageManagement")] -[assembly: AssemblyCopyright("Copyright Chocolatey © 2014")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. - -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM - -[assembly: Guid("bff90b5a-cb46-49b3-a3d5-5df99bf23017")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] - -[assembly: AssemblyVersion("1.0.0.0")] +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. + +[assembly: AssemblyTitle("Chocolatey.PackageManagement")] +[assembly: AssemblyDescription("PackageManagement package provider: Chocolatey")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Chocolatey")] +[assembly: AssemblyProduct("Chocolatey Provider for PackageManagement")] +[assembly: AssemblyCopyright("Copyright Chocolatey © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. + +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM + +[assembly: Guid("bff90b5a-cb46-49b3-a3d5-5df99bf23017")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] + +[assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file diff --git a/RequestHelper.cs b/Obsolete/RequestHelper.cs similarity index 100% rename from RequestHelper.cs rename to Obsolete/RequestHelper.cs diff --git a/RequestLogger.cs b/Obsolete/RequestLogger.cs similarity index 100% rename from RequestLogger.cs rename to Obsolete/RequestLogger.cs diff --git a/Resources/Messages.Designer.cs b/Obsolete/Resources/Messages.Designer.cs similarity index 97% rename from Resources/Messages.Designer.cs rename to Obsolete/Resources/Messages.Designer.cs index 2f03c62..a806b8e 100644 --- a/Resources/Messages.Designer.cs +++ b/Obsolete/Resources/Messages.Designer.cs @@ -1,73 +1,73 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.0 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace PackageManagement.Resources -{ - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Messages - { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Messages() - { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if (object.ReferenceEquals(resourceMan, null)) - { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PackageManagement.Resources.Messages", typeof(Messages).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { - return resourceCulture; - } - set - { - resourceCulture = value; - } - } - } -} - +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.0 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace PackageManagement.Resources +{ + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Messages + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Messages() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PackageManagement.Resources.Messages", typeof(Messages).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} + diff --git a/Resources/Messages.resx b/Obsolete/Resources/Messages.resx similarity index 97% rename from Resources/Messages.resx rename to Obsolete/Resources/Messages.resx index 78916d2..d65ce5c 100644 --- a/Resources/Messages.resx +++ b/Obsolete/Resources/Messages.resx @@ -1,102 +1,102 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + diff --git a/Sdk/Constants.cs b/Obsolete/Sdk/Constants.cs similarity index 97% rename from Sdk/Constants.cs rename to Obsolete/Sdk/Constants.cs index eb3ec11..546d9d9 100644 --- a/Sdk/Constants.cs +++ b/Obsolete/Sdk/Constants.cs @@ -1,116 +1,116 @@ -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -namespace PackageManagement.Sdk -{ - public static partial class Constants - { - #region copy common-constants-implementation /internal/public - - public const string MinVersion = "0.0.0.1"; - public const string MSGPrefix = "MSG:"; - public static string[] FeaturePresent = new string[0]; - public static string[] Empty = new string[0]; - - public static partial class Features - { - public const string AutomationOnly = "automation-only"; - public const string MagicSignatures = "magic-signatures"; - public const string SupportedExtensions = "file-extensions"; - public const string SupportedSchemes = "uri-schemes"; - public const string SupportsPowerShellModules = "supports-powershell-modules"; - public const string SupportsRegexSearch = "supports-regex-search"; - public const string SupportsSubstringSearch = "supports-substring-search"; - public const string SupportsWildcardSearch = "supports-wildcard-search"; - } - - public static partial class Messages - { - public const string CreatefolderFailed = "MSG:CreatefolderFailed"; - public const string DependencyResolutionError = "MSG:UnableToResolveDependency_dependencyPackage"; - public const string DependentPackageFailedInstall = "MSG:DependentPackageFailedInstall_dependency"; - public const string DestinationPathNotSet = "MSG:DestinationPathNotSet"; - public const string FailedProviderBootstrap = "MSG:FailedProviderBootstrap"; - public const string FileFailedVerification = "MSG:FileFailedVerification"; - public const string InvalidFilename = "MSG:InvalidFilename"; - public const string MissingRequiredParameter = "MSG:MissingRequiredParameter"; - public const string PackageFailedInstall = "MSG:UnableToInstallPackage_package_reason"; - public const string PackageSourceExists = "MSG:PackageSourceExists"; - public const string ProtocolNotSupported = "MSG:ProtocolNotSupported"; - public const string ProviderPluginLoadFailure = "MSG:ProviderPluginLoadFailure"; - public const string ProviderSwidtagUnavailable = "MSG:ProviderSwidtagUnavailable"; - public const string RemoveEnvironmentVariableRequiresElevation = "MSG:RemoveEnvironmentVariableRequiresElevation"; - public const string SchemeNotSupported = "MSG:SchemeNotSupported"; - public const string SourceLocationNotValid = "MSG:SourceLocationNotValid_Location"; - public const string UnableToCopyFileTo = "MSG:UnableToCopyFileTo"; - public const string UnableToCreateShortcutTargetDoesNotExist = "MSG:UnableToCreateShortcutTargetDoesNotExist"; - public const string UnableToDownload = "MSG:UnableToDownload"; - public const string UnableToOverwriteExistingFile = "MSG:UnableToOverwriteExistingFile"; - public const string UnableToRemoveFile = "MSG:UnableToRemoveFile"; - public const string UnableToResolvePackage = "MSG:UnableToResolvePackage"; - public const string UnableToResolveSource = "MSG:UnableToResolveSource_NameOrLocation"; - public const string UnableToUninstallPackage = "MSG:UnableToUninstallPackage"; - public const string UnknownFolderId = "MSG:UnknownFolderId"; - public const string UnknownProvider = "MSG:UnknownProvider"; - public const string UnsupportedArchive = "MSG:UnsupportedArchive"; - public const string UnsupportedProviderType = "MSG:UnsupportedProviderType"; - public const string UriSchemeNotSupported = "MSG:UriSchemeNotSupported_Scheme"; - public const string UserDeclinedUntrustedPackageInstall = "MSG:UserDeclinedUntrustedPackageInstall"; - } - - public static partial class OptionType - { - public const string String = "String"; - public const string StringArray = "StringArray"; - public const string Int = "Int"; - public const string Switch = "Switch"; - public const string Folder = "Folder"; - public const string File = "File"; - public const string Path = "Path"; - public const string Uri = "Uri"; - public const string SecureString = "SecureString"; - } - - public static partial class PackageStatus - { - public const string Available = "Available"; - public const string Dependency = "Dependency"; - public const string Installed = "Installed"; - public const string Uninstalled = "Uninstalled"; - } - - public static partial class Parameters - { - public const string IsUpdate = "IsUpdatePackageSource"; - public const string Name = "Name"; - public const string Location = "Location"; - } - - public static partial class Signatures - { - public const string Cab = "4D534346"; - public const string OleCompoundDocument = "D0CF11E0A1B11AE1"; - public const string Zip = "504b0304"; - public static string[] ZipVariants = new[] { Zip, /* should have EXEs? */}; - } - - public static partial class SwidTag - { - public const string SoftwareIdentity = "SoftwareIdentity"; - } - - #endregion - } -} - +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace PackageManagement.Sdk +{ + public static partial class Constants + { + #region copy common-constants-implementation /internal/public + + public const string MinVersion = "0.0.0.1"; + public const string MSGPrefix = "MSG:"; + public static string[] FeaturePresent = new string[0]; + public static string[] Empty = new string[0]; + + public static partial class Features + { + public const string AutomationOnly = "automation-only"; + public const string MagicSignatures = "magic-signatures"; + public const string SupportedExtensions = "file-extensions"; + public const string SupportedSchemes = "uri-schemes"; + public const string SupportsPowerShellModules = "supports-powershell-modules"; + public const string SupportsRegexSearch = "supports-regex-search"; + public const string SupportsSubstringSearch = "supports-substring-search"; + public const string SupportsWildcardSearch = "supports-wildcard-search"; + } + + public static partial class Messages + { + public const string CreatefolderFailed = "MSG:CreatefolderFailed"; + public const string DependencyResolutionError = "MSG:UnableToResolveDependency_dependencyPackage"; + public const string DependentPackageFailedInstall = "MSG:DependentPackageFailedInstall_dependency"; + public const string DestinationPathNotSet = "MSG:DestinationPathNotSet"; + public const string FailedProviderBootstrap = "MSG:FailedProviderBootstrap"; + public const string FileFailedVerification = "MSG:FileFailedVerification"; + public const string InvalidFilename = "MSG:InvalidFilename"; + public const string MissingRequiredParameter = "MSG:MissingRequiredParameter"; + public const string PackageFailedInstall = "MSG:UnableToInstallPackage_package_reason"; + public const string PackageSourceExists = "MSG:PackageSourceExists"; + public const string ProtocolNotSupported = "MSG:ProtocolNotSupported"; + public const string ProviderPluginLoadFailure = "MSG:ProviderPluginLoadFailure"; + public const string ProviderSwidtagUnavailable = "MSG:ProviderSwidtagUnavailable"; + public const string RemoveEnvironmentVariableRequiresElevation = "MSG:RemoveEnvironmentVariableRequiresElevation"; + public const string SchemeNotSupported = "MSG:SchemeNotSupported"; + public const string SourceLocationNotValid = "MSG:SourceLocationNotValid_Location"; + public const string UnableToCopyFileTo = "MSG:UnableToCopyFileTo"; + public const string UnableToCreateShortcutTargetDoesNotExist = "MSG:UnableToCreateShortcutTargetDoesNotExist"; + public const string UnableToDownload = "MSG:UnableToDownload"; + public const string UnableToOverwriteExistingFile = "MSG:UnableToOverwriteExistingFile"; + public const string UnableToRemoveFile = "MSG:UnableToRemoveFile"; + public const string UnableToResolvePackage = "MSG:UnableToResolvePackage"; + public const string UnableToResolveSource = "MSG:UnableToResolveSource_NameOrLocation"; + public const string UnableToUninstallPackage = "MSG:UnableToUninstallPackage"; + public const string UnknownFolderId = "MSG:UnknownFolderId"; + public const string UnknownProvider = "MSG:UnknownProvider"; + public const string UnsupportedArchive = "MSG:UnsupportedArchive"; + public const string UnsupportedProviderType = "MSG:UnsupportedProviderType"; + public const string UriSchemeNotSupported = "MSG:UriSchemeNotSupported_Scheme"; + public const string UserDeclinedUntrustedPackageInstall = "MSG:UserDeclinedUntrustedPackageInstall"; + } + + public static partial class OptionType + { + public const string String = "String"; + public const string StringArray = "StringArray"; + public const string Int = "Int"; + public const string Switch = "Switch"; + public const string Folder = "Folder"; + public const string File = "File"; + public const string Path = "Path"; + public const string Uri = "Uri"; + public const string SecureString = "SecureString"; + } + + public static partial class PackageStatus + { + public const string Available = "Available"; + public const string Dependency = "Dependency"; + public const string Installed = "Installed"; + public const string Uninstalled = "Uninstalled"; + } + + public static partial class Parameters + { + public const string IsUpdate = "IsUpdatePackageSource"; + public const string Name = "Name"; + public const string Location = "Location"; + } + + public static partial class Signatures + { + public const string Cab = "4D534346"; + public const string OleCompoundDocument = "D0CF11E0A1B11AE1"; + public const string Zip = "504b0304"; + public static string[] ZipVariants = new[] { Zip, /* should have EXEs? */}; + } + + public static partial class SwidTag + { + public const string SoftwareIdentity = "SoftwareIdentity"; + } + + #endregion + } +} + diff --git a/Sdk/ErrorCategory.cs b/Obsolete/Sdk/ErrorCategory.cs similarity index 95% rename from Sdk/ErrorCategory.cs rename to Obsolete/Sdk/ErrorCategory.cs index 46c7b46..00516bc 100644 --- a/Sdk/ErrorCategory.cs +++ b/Obsolete/Sdk/ErrorCategory.cs @@ -1,53 +1,53 @@ -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -namespace PackageManagement.Sdk -{ - public enum ErrorCategory - { - NotSpecified, - OpenError, - CloseError, - DeviceError, - DeadlockDetected, - InvalidArgument, - InvalidData, - InvalidOperation, - InvalidResult, - InvalidType, - MetadataError, - NotImplemented, - NotInstalled, - ObjectNotFound, - OperationStopped, - OperationTimeout, - SyntaxError, - ParserError, - PermissionDenied, - ResourceBusy, - ResourceExists, - ResourceUnavailable, - ReadError, - WriteError, - FromStdErr, - SecurityError, - ProtocolError, - ConnectionError, - AuthenticationError, - LimitsExceeded, - QuotaExceeded, - NotEnabled, - } -} - +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace PackageManagement.Sdk +{ + public enum ErrorCategory + { + NotSpecified, + OpenError, + CloseError, + DeviceError, + DeadlockDetected, + InvalidArgument, + InvalidData, + InvalidOperation, + InvalidResult, + InvalidType, + MetadataError, + NotImplemented, + NotInstalled, + ObjectNotFound, + OperationStopped, + OperationTimeout, + SyntaxError, + ParserError, + PermissionDenied, + ResourceBusy, + ResourceExists, + ResourceUnavailable, + ReadError, + WriteError, + FromStdErr, + SecurityError, + ProtocolError, + ConnectionError, + AuthenticationError, + LimitsExceeded, + QuotaExceeded, + NotEnabled, + } +} + diff --git a/Sdk/Request.cs b/Obsolete/Sdk/Request.cs similarity index 97% rename from Sdk/Request.cs rename to Obsolete/Sdk/Request.cs index 1e6db33..fb37437 100644 --- a/Sdk/Request.cs +++ b/Obsolete/Sdk/Request.cs @@ -1,340 +1,340 @@ -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -namespace PackageManagement.Sdk -{ - using System; - using System.Collections.Generic; - using System.Globalization; - using System.Linq; - using System.Security; - using Resources; - - public abstract class Request - { - private Dictionary _options; - private string[] _packageSources; - - #region PackageMangaement Interfaces - public interface IProviderServices - { - bool IsElevated { get; } - - IEnumerable FindPackageByCanonicalId(string canonicalId, Request requestObject); - - string GetCanonicalPackageId(string providerName, string packageName, string version, string source); - - string ParseProviderName(string canonicalPackageId); - - string ParsePackageName(string canonicalPackageId); - - string ParsePackageVersion(string canonicalPackageId); - - string ParsePackageSource(string canonicalPackageId); - - void DownloadFile(Uri remoteLocation, string localFilename, Request requestObject); - - bool IsSupportedArchive(string localFilename, Request requestObject); - - IEnumerable UnpackArchive(string localFilename, string destinationFolder, Request requestObject); - - bool Install(string fileName, string additionalArgs, Request requestObject); - - bool IsSignedAndTrusted(string filename, Request requestObject); - } - - public interface IPackageProvider - { - - } - - public interface IPackageManagementService - { - int Version { get; } - - IEnumerable ProviderNames { get; } - - IEnumerable AllProviderNames { get; } - - IEnumerable PackageProviders { get; } - - IEnumerable SelectProvidersWithFeature(string featureName); - - IEnumerable SelectProvidersWithFeature(string featureName, string value); - - IEnumerable SelectProviders(string providerName, Request requestObject); - - bool RequirePackageProvider(string requestor, string packageProviderName, string minimumVersion, Request requestObject); - } - #endregion - - #region core-apis - - public abstract dynamic PackageManagementService { get; } - - public abstract IProviderServices ProviderServices { get; } - - #endregion - - #region copy host-apis - - /* Synced/Generated code =================================================== */ - public abstract bool IsCanceled { get; } - - public abstract string GetMessageString(string messageText, string defaultText); - - public abstract bool Warning(string messageText); - - public abstract bool Error(string id, string category, string targetObjectValue, string messageText); - - public abstract bool Message(string messageText); - - public abstract bool Verbose(string messageText); - - public abstract bool Debug(string messageText); - - public abstract int StartProgress(int parentActivityId, string messageText); - - public abstract bool Progress(int activityId, int progressPercentage, string messageText); - - public abstract bool CompleteProgress(int activityId, bool isSuccessful); - - /// - /// Used by a provider to request what metadata keys were passed from the user - /// - /// - public abstract IEnumerable OptionKeys { get; } - - /// - /// - /// - /// - public abstract IEnumerable GetOptionValues(string key); - - public abstract IEnumerable Sources { get; } - - public abstract string CredentialUsername { get; } - - public abstract SecureString CredentialPassword { get; } - - public abstract bool ShouldBootstrapProvider(string requestor, string providerName, string providerVersion, string providerType, string location, string destination); - - public abstract bool ShouldContinueWithUntrustedPackageSource(string package, string packageSource); - - public abstract bool AskPermission(string permission); - - public abstract bool IsInteractive { get; } - - public abstract int CallCount { get; } - - #endregion - - #region copy response-apis - - /* Synced/Generated code =================================================== */ - - /// - /// Used by a provider to return fields for a SoftwareIdentity. - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - public abstract string YieldSoftwareIdentity(string fastPath, string name, string version, string versionScheme, string summary, string source, string searchKey, string fullPath, string packageFileName); - - public abstract string AddMetadata(string name, string value); - - public abstract string AddMetadata(string elementPath, string name, string value); - - public abstract string AddMetadata(string elementPath, Uri @namespace, string name, string value); - - public abstract string AddTagId(string tagId); - - public abstract string AddMeta(string elementPath); - - public abstract string AddEntity(string name, string regid, string role, string thumbprint); - - public abstract string AddLink(Uri referenceUri, string relationship, string mediaType, string ownership, string use, string appliesToMedia, string artifact); - - public abstract string AddDependency(string providerName, string packageName, string version, string source, string appliesTo); - - public abstract string AddPayload(); - - public abstract string AddEvidence(DateTime date, string deviceId); - - public abstract string AddDirectory(string elementPath, string directoryName, string location, string root, bool isKey); - - public abstract string AddFile(string elementPath, string fileName, string location, string root, bool isKey, long size, string version); - - public abstract string AddProcess(string elementPath, string processName, int pid); - - public abstract string AddResource(string elementPath, string type); - - /// - /// Used by a provider to return fields for a package source (repository) - /// - /// - /// - /// - /// - /// - /// - public abstract bool YieldPackageSource(string name, string location, bool isTrusted, bool isRegistered, bool isValidated); - - /// - /// Used by a provider to return the fields for a Metadata Definition - /// The cmdlets can use this to supply tab-completion for metadata to the user. - /// - /// the provider-defined name of the option - /// one of ['string','int','path','switch'] - /// if the parameter is mandatory - /// - public abstract bool YieldDynamicOption(string name, string expectedType, bool isRequired); - - public abstract bool YieldKeyValuePair(string key, string value); - - public abstract bool YieldValue(string value); - - #endregion - /// - /// Yield values in a dictionary as key/value pairs. (one pair for each value in each key) - /// - /// - /// - public bool Yield(Dictionary dictionary) - { - return dictionary.All(Yield); - } - - public bool Yield(KeyValuePair pair) - { - if (pair.Value.Length == 0) - { - return YieldKeyValuePair(pair.Key, null); - } - return pair.Value.All(each => YieldKeyValuePair(pair.Key, each)); - } - - public bool Error(ErrorCategory category, string targetObjectValue, string messageText, params object[] args) - { - return Error(messageText, category.ToString(), targetObjectValue, FormatMessageString(messageText, args)); - } - - public bool Warning(string messageText, params object[] args) - { - return Warning(FormatMessageString(messageText, args)); - } - - public bool Message(string messageText, params object[] args) - { - return Message(FormatMessageString(messageText, args)); - } - - public bool Verbose(string messageText, params object[] args) - { - return Verbose(FormatMessageString(messageText, args)); - } - - public bool Debug(string messageText, params object[] args) - { - return Debug(FormatMessageString(messageText, args)); - } - - public int StartProgress(int parentActivityId, string messageText, params object[] args) - { - return StartProgress(parentActivityId, FormatMessageString(messageText, args)); - } - - public bool Progress(int activityId, int progressPercentage, string messageText, params object[] args) - { - return Progress(activityId, progressPercentage, FormatMessageString(messageText, args)); - } - - public string GetOptionValue(string name) - { - // get the value from the request - return (GetOptionValues(name) ?? Enumerable.Empty()).LastOrDefault(); - } - - private static string FixMeFormat(string formatString, object[] args) - { - if (args == null || args.Length == 0) - { - // not really any args, and not really expectng any - return formatString.Replace('{', '\u00ab').Replace('}', '\u00bb'); - } - return args.Aggregate(formatString.Replace('{', '\u00ab').Replace('}', '\u00bb'), (current, arg) => current + string.Format(CultureInfo.CurrentCulture, " \u00ab{0}\u00bb", arg)); - } - - internal string GetMessageStringInternal(string messageText) - { - return Messages.ResourceManager.GetString(messageText); - } - - internal string FormatMessageString(string messageText, params object[] args) - { - if (string.IsNullOrEmpty(messageText)) - { - return string.Empty; - } - - if (args == null) - { - return messageText; - } - - if (messageText.StartsWith(Constants.MSGPrefix, true, CultureInfo.CurrentCulture)) - { - // check with the caller first, then with the local resources, and fall back to using the messageText itself. - messageText = GetMessageString(messageText.Substring(Constants.MSGPrefix.Length), GetMessageStringInternal(messageText) ?? messageText) ?? GetMessageStringInternal(messageText) ?? messageText; - } - - // if it doesn't look like we have the correct number of parameters - // let's return a fix-me-format string. - var c = messageText.ToCharArray().Where(each => each == '{').Count(); - if (c < args.Length) - { - return FixMeFormat(messageText, args); - } - return string.Format(CultureInfo.CurrentCulture, messageText, args); - } - - public bool YieldDynamicOption(string name, string expectedType, bool isRequired, IEnumerable permittedValues) - { - return YieldDynamicOption(name, expectedType, isRequired) && (permittedValues ?? Enumerable.Empty()).All(each => YieldKeyValuePair(name, each)); - } - - public Dictionary Options - { - get - { - return _options ?? (_options = OptionKeys.Where(each => !string.IsNullOrWhiteSpace(each)).ToDictionary(k => k, (k) => (GetOptionValues(k) ?? new string[0]).ToArray())); - } - } - - public IEnumerable PackageSources - { - get - { - return _packageSources ?? (_packageSources = (Sources ?? new string[0]).ToArray()); - } - } - } -} +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +namespace PackageManagement.Sdk +{ + using System; + using System.Collections.Generic; + using System.Globalization; + using System.Linq; + using System.Security; + using Resources; + + public abstract class Request + { + private Dictionary _options; + private string[] _packageSources; + + #region PackageMangaement Interfaces + public interface IProviderServices + { + bool IsElevated { get; } + + IEnumerable FindPackageByCanonicalId(string canonicalId, Request requestObject); + + string GetCanonicalPackageId(string providerName, string packageName, string version, string source); + + string ParseProviderName(string canonicalPackageId); + + string ParsePackageName(string canonicalPackageId); + + string ParsePackageVersion(string canonicalPackageId); + + string ParsePackageSource(string canonicalPackageId); + + void DownloadFile(Uri remoteLocation, string localFilename, Request requestObject); + + bool IsSupportedArchive(string localFilename, Request requestObject); + + IEnumerable UnpackArchive(string localFilename, string destinationFolder, Request requestObject); + + bool Install(string fileName, string additionalArgs, Request requestObject); + + bool IsSignedAndTrusted(string filename, Request requestObject); + } + + public interface IPackageProvider + { + + } + + public interface IPackageManagementService + { + int Version { get; } + + IEnumerable ProviderNames { get; } + + IEnumerable AllProviderNames { get; } + + IEnumerable PackageProviders { get; } + + IEnumerable SelectProvidersWithFeature(string featureName); + + IEnumerable SelectProvidersWithFeature(string featureName, string value); + + IEnumerable SelectProviders(string providerName, Request requestObject); + + bool RequirePackageProvider(string requestor, string packageProviderName, string minimumVersion, Request requestObject); + } + #endregion + + #region core-apis + + public abstract dynamic PackageManagementService { get; } + + public abstract IProviderServices ProviderServices { get; } + + #endregion + + #region copy host-apis + + /* Synced/Generated code =================================================== */ + public abstract bool IsCanceled { get; } + + public abstract string GetMessageString(string messageText, string defaultText); + + public abstract bool Warning(string messageText); + + public abstract bool Error(string id, string category, string targetObjectValue, string messageText); + + public abstract bool Message(string messageText); + + public abstract bool Verbose(string messageText); + + public abstract bool Debug(string messageText); + + public abstract int StartProgress(int parentActivityId, string messageText); + + public abstract bool Progress(int activityId, int progressPercentage, string messageText); + + public abstract bool CompleteProgress(int activityId, bool isSuccessful); + + /// + /// Used by a provider to request what metadata keys were passed from the user + /// + /// + public abstract IEnumerable OptionKeys { get; } + + /// + /// + /// + /// + public abstract IEnumerable GetOptionValues(string key); + + public abstract IEnumerable Sources { get; } + + public abstract string CredentialUsername { get; } + + public abstract SecureString CredentialPassword { get; } + + public abstract bool ShouldBootstrapProvider(string requestor, string providerName, string providerVersion, string providerType, string location, string destination); + + public abstract bool ShouldContinueWithUntrustedPackageSource(string package, string packageSource); + + public abstract bool AskPermission(string permission); + + public abstract bool IsInteractive { get; } + + public abstract int CallCount { get; } + + #endregion + + #region copy response-apis + + /* Synced/Generated code =================================================== */ + + /// + /// Used by a provider to return fields for a SoftwareIdentity. + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + public abstract string YieldSoftwareIdentity(string fastPath, string name, string version, string versionScheme, string summary, string source, string searchKey, string fullPath, string packageFileName); + + public abstract string AddMetadata(string name, string value); + + public abstract string AddMetadata(string elementPath, string name, string value); + + public abstract string AddMetadata(string elementPath, Uri @namespace, string name, string value); + + public abstract string AddTagId(string tagId); + + public abstract string AddMeta(string elementPath); + + public abstract string AddEntity(string name, string regid, string role, string thumbprint); + + public abstract string AddLink(Uri referenceUri, string relationship, string mediaType, string ownership, string use, string appliesToMedia, string artifact); + + public abstract string AddDependency(string providerName, string packageName, string version, string source, string appliesTo); + + public abstract string AddPayload(); + + public abstract string AddEvidence(DateTime date, string deviceId); + + public abstract string AddDirectory(string elementPath, string directoryName, string location, string root, bool isKey); + + public abstract string AddFile(string elementPath, string fileName, string location, string root, bool isKey, long size, string version); + + public abstract string AddProcess(string elementPath, string processName, int pid); + + public abstract string AddResource(string elementPath, string type); + + /// + /// Used by a provider to return fields for a package source (repository) + /// + /// + /// + /// + /// + /// + /// + public abstract bool YieldPackageSource(string name, string location, bool isTrusted, bool isRegistered, bool isValidated); + + /// + /// Used by a provider to return the fields for a Metadata Definition + /// The cmdlets can use this to supply tab-completion for metadata to the user. + /// + /// the provider-defined name of the option + /// one of ['string','int','path','switch'] + /// if the parameter is mandatory + /// + public abstract bool YieldDynamicOption(string name, string expectedType, bool isRequired); + + public abstract bool YieldKeyValuePair(string key, string value); + + public abstract bool YieldValue(string value); + + #endregion + /// + /// Yield values in a dictionary as key/value pairs. (one pair for each value in each key) + /// + /// + /// + public bool Yield(Dictionary dictionary) + { + return dictionary.All(Yield); + } + + public bool Yield(KeyValuePair pair) + { + if (pair.Value.Length == 0) + { + return YieldKeyValuePair(pair.Key, null); + } + return pair.Value.All(each => YieldKeyValuePair(pair.Key, each)); + } + + public bool Error(ErrorCategory category, string targetObjectValue, string messageText, params object[] args) + { + return Error(messageText, category.ToString(), targetObjectValue, FormatMessageString(messageText, args)); + } + + public bool Warning(string messageText, params object[] args) + { + return Warning(FormatMessageString(messageText, args)); + } + + public bool Message(string messageText, params object[] args) + { + return Message(FormatMessageString(messageText, args)); + } + + public bool Verbose(string messageText, params object[] args) + { + return Verbose(FormatMessageString(messageText, args)); + } + + public bool Debug(string messageText, params object[] args) + { + return Debug(FormatMessageString(messageText, args)); + } + + public int StartProgress(int parentActivityId, string messageText, params object[] args) + { + return StartProgress(parentActivityId, FormatMessageString(messageText, args)); + } + + public bool Progress(int activityId, int progressPercentage, string messageText, params object[] args) + { + return Progress(activityId, progressPercentage, FormatMessageString(messageText, args)); + } + + public string GetOptionValue(string name) + { + // get the value from the request + return (GetOptionValues(name) ?? Enumerable.Empty()).LastOrDefault(); + } + + private static string FixMeFormat(string formatString, object[] args) + { + if (args == null || args.Length == 0) + { + // not really any args, and not really expectng any + return formatString.Replace('{', '\u00ab').Replace('}', '\u00bb'); + } + return args.Aggregate(formatString.Replace('{', '\u00ab').Replace('}', '\u00bb'), (current, arg) => current + string.Format(CultureInfo.CurrentCulture, " \u00ab{0}\u00bb", arg)); + } + + internal string GetMessageStringInternal(string messageText) + { + return Messages.ResourceManager.GetString(messageText); + } + + internal string FormatMessageString(string messageText, params object[] args) + { + if (string.IsNullOrEmpty(messageText)) + { + return string.Empty; + } + + if (args == null) + { + return messageText; + } + + if (messageText.StartsWith(Constants.MSGPrefix, true, CultureInfo.CurrentCulture)) + { + // check with the caller first, then with the local resources, and fall back to using the messageText itself. + messageText = GetMessageString(messageText.Substring(Constants.MSGPrefix.Length), GetMessageStringInternal(messageText) ?? messageText) ?? GetMessageStringInternal(messageText) ?? messageText; + } + + // if it doesn't look like we have the correct number of parameters + // let's return a fix-me-format string. + var c = messageText.ToCharArray().Where(each => each == '{').Count(); + if (c < args.Length) + { + return FixMeFormat(messageText, args); + } + return string.Format(CultureInfo.CurrentCulture, messageText, args); + } + + public bool YieldDynamicOption(string name, string expectedType, bool isRequired, IEnumerable permittedValues) + { + return YieldDynamicOption(name, expectedType, isRequired) && (permittedValues ?? Enumerable.Empty()).All(each => YieldKeyValuePair(name, each)); + } + + public Dictionary Options + { + get + { + return _options ?? (_options = OptionKeys.Where(each => !string.IsNullOrWhiteSpace(each)).ToDictionary(k => k, (k) => (GetOptionValues(k) ?? new string[0]).ToArray())); + } + } + + public IEnumerable PackageSources + { + get + { + return _packageSources ?? (_packageSources = (Sources ?? new string[0]).ToArray()); + } + } + } +} diff --git a/install-provider.ps1 b/Obsolete/install-provider.ps1 similarity index 96% rename from install-provider.ps1 rename to Obsolete/install-provider.ps1 index ee4b3de..084a8ca 100644 --- a/install-provider.ps1 +++ b/Obsolete/install-provider.ps1 @@ -1,72 +1,72 @@ -#.Synopsis -# Copy the provider assembly to LocalAppData -#.Description -# By default it will find the newest .*Provider.dll and copy it to the right location -# You can also specify the build name (e.g. 'debug' or 'release') to use. -[CmdletBinding()] -param( - # If specified, force to use the output in a specific build folder - [string]$build = '', - [string]$providerName = 'ChocolateyProvider', - # How many levels UP to check for output folders (defaults to 2) - $depth = 2 -) - -Push-Location $PSScriptRoot - - -while($depth-- -gt 0) { - Write-Verbose "Searching '$pwd' for '${providerName}.dll'" - $candidates = Get-ChildItem -Recurse -Filter "${providerName}.dll" | - Where-Object { $_.FullName -match "\\output\\" } - Sort-Object -Descending -Property LastWriteTime - - if( $build ) { - $candidates = $candidates | Where-Object { $_.FullName -match $build } - } - - $provider = $candidates | Select-Object -First 1 - if( -not $provider ) { - cd .. - } -} - -if( -not $provider ) { - Write-Error "Can't find assembly '${providerName}.dll' under '$Pwd' with '\output\' and '$build' somewhere in the path`n" - Pop-Location - return -} - -$srcpath = $provider.Fullname -$filename = $provider.Name - -$output = "${Env:LocalAppData}\PackageManagement\providerassemblies\$fileName" - -if(Test-Path $output) { - Write-Warning "Found existing provider. Deleting `n '$output' `n" - # delete the old provider assembly - # even if it's in use. - $tmpName = "$filename.delete-me.$(get-random)" - $tmpPath = "$env:localappdata\PackageManagement\providerassemblies\$tmpName" - - Rename-Item $output $tmpName -force -ea SilentlyContinue - Remove-Item -force -ea SilentlyContinue $tmpPath - if(Test-Path $tmpPath) { - # locked. Move to temp folder - Write-Warning "Old provider is in use, moving to `n '$env:TEMP' folder `n However, you must restart any processes using it!" - Move-Item $tmpPath $env:TEMP - } - - if(Test-Path $output) { - Write-Error "Cannot remove existing provider file: `n $output `n" - Pop-Location - return - } - -} - -Write-Host "Copying provider `nFrom: '$srcPath'`nTo: '$output' `n" - -Copy-Item -force $srcPath $output - -Pop-Location +#.Synopsis +# Copy the provider assembly to LocalAppData +#.Description +# By default it will find the newest .*Provider.dll and copy it to the right location +# You can also specify the build name (e.g. 'debug' or 'release') to use. +[CmdletBinding()] +param( + # If specified, force to use the output in a specific build folder + [string]$build = '', + [string]$providerName = 'ChocolateyProvider', + # How many levels UP to check for output folders (defaults to 2) + $depth = 2 +) + +Push-Location $PSScriptRoot + + +while($depth-- -gt 0) { + Write-Verbose "Searching '$pwd' for '${providerName}.dll'" + $candidates = Get-ChildItem -Recurse -Filter "${providerName}.dll" | + Where-Object { $_.FullName -match "\\output\\" } + Sort-Object -Descending -Property LastWriteTime + + if( $build ) { + $candidates = $candidates | Where-Object { $_.FullName -match $build } + } + + $provider = $candidates | Select-Object -First 1 + if( -not $provider ) { + cd .. + } +} + +if( -not $provider ) { + Write-Error "Can't find assembly '${providerName}.dll' under '$Pwd' with '\output\' and '$build' somewhere in the path`n" + Pop-Location + return +} + +$srcpath = $provider.Fullname +$filename = $provider.Name + +$output = "${Env:LocalAppData}\PackageManagement\providerassemblies\$fileName" + +if(Test-Path $output) { + Write-Warning "Found existing provider. Deleting `n '$output' `n" + # delete the old provider assembly + # even if it's in use. + $tmpName = "$filename.delete-me.$(get-random)" + $tmpPath = "$env:localappdata\PackageManagement\providerassemblies\$tmpName" + + Rename-Item $output $tmpName -force -ea SilentlyContinue + Remove-Item -force -ea SilentlyContinue $tmpPath + if(Test-Path $tmpPath) { + # locked. Move to temp folder + Write-Warning "Old provider is in use, moving to `n '$env:TEMP' folder `n However, you must restart any processes using it!" + Move-Item $tmpPath $env:TEMP + } + + if(Test-Path $output) { + Write-Error "Cannot remove existing provider file: `n $output `n" + Pop-Location + return + } + +} + +Write-Host "Copying provider `nFrom: '$srcPath'`nTo: '$output' `n" + +Copy-Item -force $srcPath $output + +Pop-Location diff --git a/packages.config b/Obsolete/packages.config similarity index 98% rename from packages.config rename to Obsolete/packages.config index 98e8b13..b973c7b 100644 --- a/packages.config +++ b/Obsolete/packages.config @@ -1,7 +1,7 @@ - - - - - - - + + + + + + + diff --git a/provider.manifest b/Obsolete/provider.manifest similarity index 100% rename from provider.manifest rename to Obsolete/provider.manifest diff --git a/README.md b/README.md index eaab1f7..82b79c5 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,17 @@ # Chocolatey Provider for PowerShell PackageManagement (aka OneGet) (C#) This will be the official Chocolatey provider for PackageManagement. -## Development Requires: +# Native implementation +Thi part contains plain PowerShell implementation of the provider, development is done only in this part. + +## C# implementation - OBSOLETE +The provider written in C# is obsolete. Requires windows SDK, which contains mt.exe to be able compile the project. No future development here is expected. Related files will be remoted later. + +### Development Requires: - Visual Studio 2013+ - Any official PackageManagement build from February 2015 or later. -## Chat Room +### Chat Room Come join in the conversation about Chocolatey in our Gitter Chat Room From ad577dcb533f6dee1f04cbc8714906d4b9bdaaf9 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 23 Mar 2018 10:27:01 +0100 Subject: [PATCH 03/92] Fixed .gitignore for .vs directory --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 2602392..515bf72 100644 --- a/.gitignore +++ b/.gitignore @@ -98,5 +98,4 @@ policheck* *.orig.sln *pingme* *.GhostDoc.xml -/.vs/ChocolateyProvider -/Obsolete/.vs/ChocolateyProvider/v15/Server/sqlite3 +**/.vs/ChocolateyProvider From fc09094d4409bcd4df2194a4e348bdae34ff0ddb Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 23 Mar 2018 10:51:37 +0100 Subject: [PATCH 04/92] Initial module manifest --- Chocolatey-OneGet.psd1 | Bin 0 -> 6140 bytes Chocolatey-OneGet.psm1 | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Chocolatey-OneGet.psd1 create mode 100644 Chocolatey-OneGet.psm1 diff --git a/Chocolatey-OneGet.psd1 b/Chocolatey-OneGet.psd1 new file mode 100644 index 0000000000000000000000000000000000000000..a22d57b7373d31210d40bed967590a16b80dbe8f GIT binary patch literal 6140 zcmeI0Yfl?T6o%(>rT&K%d@!ksDG_O!N|k~zBuHE$L-XBuZPx|c)E5Y<`q$gO&zv20 z_JR#Wjnt~L)_a*bXU=)gb>^=>*WK6dE4S_vckCuEbqjapdU_kVjvKq7>+5ai=K9jt z_|%WY^BQi?{i2bst}D^ZHUG|Sx>Hg2+&f)!*T~jjC9b#bcYo(O$$o9oPc*kE#ZMZ2 z%nD6+Eh$HCJ6kJojk$f4EK|)IYMrt88t-k_bl+uEu{4v;uS@o`>G%c+?6CK>H@2wIzo{JvYPK85X zGrGDuvPh!2Q`zZ8@2O^>fAH|SHJRTL^`-s?e#OKihmAwDij|9Z@tuKUcW18RPW!fmiYIvbSK6~@&Y8g@f`CAnFtZ` z0;qx2OjqCQ+mzM!-MK~&G-CF@^|D^-+f;mh6VIW4B5E#VZNqCQF5s2tkfz?Tl8s;$ ztPwaM4Y8MG<2T-V*etgf9?Xn7R1(Dy{&6WT6QQ2yEsowqU&li4PB@k0zooIcG$n^s z^{mI+>{RCTIHZFfby$~jN64^P<>cj#5VN}c+2=|HRTdwG7oJ>I!j6Leiw;VzhAbS{n z%p0zQjAzyF%RX|h9M#g5XwB4Hj=XfOYpgf^$zAv|ImBWl=F!%-IO^is2MrmPTGLRR z#F^|^Z)06#HT((98d*gObz)t#W&XR8Waeq8a6z)LO0}ZF@uRF&o5nj8UtY!8_y8L{wOu7zQh&H*ao>uH5@>6*}RnhsBXkWKpGpTxD&R$K-*p zCSB)M@3yBPMwpw58+f95A{odf ziMkqcLMohy{8V2-o(x!~AP$Ip>kb0umcOQoFV+ZL;XrO6@6UZN0(UwW`VuS>atc+G z74436XhpqUg-|g|R8hr-`vpXo+htGErkRGIU_SZ3P0S|UmFN`hQAG2pw)p5hf}Mly z=ALVhIBKgr>!oVAZ?f(`re2pv?8-ZkiO6}bME~8Wr88KLPSHb(Xx7`Jey@%#TIy}~ zbSH1HPg>~7x`F3KZrRo?aqapZtjPVTavlj2%gk1*tbZ!*$nd4&4wmdoW+ux%l>f^T z$5kj_b$QOq=M|-kyNl14>_D1OIr7z(OZ8rJuY|~ z+K>#ZcXMm%g_uYGmdn3Z+T(>a!ky?KgN?ObPaY4l0r~P7)<9$AhK1@QCt37~Te??I zwCcZZih|CXJ?LDNR9SZ4TjE1~! px==jy7>!F(t)^>B8#0&G{1agWGQl5076}N1`yclwTlQrCe* Date: Fri, 23 Mar 2018 22:00:33 +0100 Subject: [PATCH 05/92] Added paket dependencies --- .vscode/launch.json | 45 +++ README.md | 11 + paket.dependencies | 3 + paket.lock | 690 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 749 insertions(+) create mode 100644 .vscode/launch.json create mode 100644 paket.dependencies create mode 100644 paket.lock diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..c9a0336 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,45 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "PowerShell", + "request": "launch", + "name": "PowerShell Launch Current File", + "script": "${file}", + "args": [], + "cwd": "${file}" + }, + { + "type": "PowerShell", + "request": "launch", + "name": "PowerShell Launch Current File in Temporary Console", + "script": "${file}", + "args": [], + "cwd": "${file}", + "createTemporaryIntegratedConsole": true + }, + { + "type": "PowerShell", + "request": "launch", + "name": "PowerShell Launch Current File w/Args Prompt", + "script": "${file}", + "args": [ + "${command:SpecifyScriptArgs}" + ], + "cwd": "${file}" + }, + { + "type": "PowerShell", + "request": "attach", + "name": "PowerShell Attach to Host Process", + "processId": "${command:PickPSHostProcess}", + "runspaceId": 1 + }, + { + "type": "PowerShell", + "request": "launch", + "name": "PowerShell Interactive Session", + "cwd": "${workspaceRoot}" + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md index 82b79c5..1159daf 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,17 @@ This will be the official Chocolatey provider for PackageManagement. # Native implementation Thi part contains plain PowerShell implementation of the provider, development is done only in this part. +Prerequisities +* Recommended development environement is visual Studio Code with PowerShell extension +* Run build/prepareEnvironment.ps1 script to install all tools used for provider development, it installs used tools +* Used tools: +** Pester - powershell testing framework +** PackageManagement - Required dependency, we develop its plugin +** Chocolatey.lib - chocolatey library API +** Paket - dependencies nuget packages downloader + + + ## C# implementation - OBSOLETE The provider written in C# is obsolete. Requires windows SDK, which contains mt.exe to be able compile the project. No future development here is expected. Related files will be remoted later. diff --git a/paket.dependencies b/paket.dependencies new file mode 100644 index 0000000..7fb4e61 --- /dev/null +++ b/paket.dependencies @@ -0,0 +1,3 @@ +source https://www.nuget.org/api/v2 + +nuget chocolatey.lib \ No newline at end of file diff --git a/paket.lock b/paket.lock new file mode 100644 index 0000000..7766072 --- /dev/null +++ b/paket.lock @@ -0,0 +1,690 @@ +NUGET + remote: https://www.nuget.org/api/v2 + chocolatey.lib (0.10.8) + log4net (>= 2.0.3) + log4net (2.0.8) + System.AppContext (>= 4.1) - restriction: && (< net20) (>= netstandard1.3) + System.Collections.NonGeneric (>= 4.0.1) - restriction: && (< net20) (>= netstandard1.3) + System.Console (>= 4.0) - restriction: && (< net20) (>= netstandard1.3) + System.Diagnostics.Debug (>= 4.0.11) - restriction: && (< net20) (>= netstandard1.3) + System.Diagnostics.Process (>= 4.1) - restriction: && (< net20) (>= netstandard1.3) + System.Diagnostics.StackTrace (>= 4.0.1) - restriction: && (< net20) (>= netstandard1.3) + System.Diagnostics.TraceSource (>= 4.0) - restriction: && (< net20) (>= netstandard1.3) + System.IO.FileSystem (>= 4.0.1) - restriction: && (< net20) (>= netstandard1.3) + System.IO.FileSystem.Watcher (>= 4.0) - restriction: && (< net20) (>= netstandard1.3) + System.Linq (>= 4.1) - restriction: && (< net20) (>= netstandard1.3) + System.Net.NameResolution (>= 4.0) - restriction: && (< net20) (>= netstandard1.3) + System.Net.Requests (>= 4.0.11) - restriction: && (< net20) (>= netstandard1.3) + System.Net.Sockets (>= 4.1) - restriction: && (< net20) (>= netstandard1.3) + System.Reflection (>= 4.3) - restriction: && (< net20) (>= netstandard1.3) + System.Reflection.Extensions (>= 4.0.1) - restriction: && (< net20) (>= netstandard1.3) + System.Reflection.TypeExtensions (>= 4.1) - restriction: && (< net20) (>= netstandard1.3) + System.Runtime.Extensions (>= 4.1) - restriction: && (< net20) (>= netstandard1.3) + System.Runtime.InteropServices (>= 4.1) - restriction: && (< net20) (>= netstandard1.3) + System.Runtime.InteropServices.RuntimeInformation (>= 4.0) - restriction: && (< net20) (>= netstandard1.3) + System.Runtime.Serialization.Formatters (>= 4.3) - restriction: && (< net20) (>= netstandard1.3) + System.Text.RegularExpressions (>= 4.1) - restriction: && (< net20) (>= netstandard1.3) + System.Threading (>= 4.0.11) - restriction: && (< net20) (>= netstandard1.3) + System.Threading.Thread (>= 4.0) - restriction: && (< net20) (>= netstandard1.3) + System.Threading.Timer (>= 4.0.1) - restriction: && (< net20) (>= netstandard1.3) + System.Xml.ReaderWriter (>= 4.0.11) - restriction: && (< net20) (>= netstandard1.3) + System.Xml.XmlDocument (>= 4.0.1) - restriction: && (< net20) (>= netstandard1.3) + Microsoft.NETCore.Platforms (2.0.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.0) (>= netstandard1.3)) (&& (< monoandroid) (< net20) (< netstandard1.0) (>= netstandard1.4)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net451) (< netstandard1.3) (>= netstandard1.4)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= net461) (< netstandard2.0)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (>= netcoreapp1.1) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (< netstandard1.3) (>= netstandard1.4) (>= wpa81)) (>= uap10.0) + Microsoft.NETCore.Targets (2.0) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (>= netcoreapp1.1) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) + Microsoft.Win32.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.Win32.Registry (4.4) - restriction: && (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 + NETStandard.Library (>= 1.6.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.AccessControl (>= 4.4) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Principal.Windows (>= 4.4) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + NETStandard.Library (2.0.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (>= monoandroid) (>= monotouch) (&& (>= net45) (< portable-net451+win81+wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (&& (>= net451) (< netstandard1.3)) (&& (>= net46) (< netstandard1.4)) (>= net461) (>= netcoreapp2.0) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8+wpa81) (< portable-net451+win81+wpa81)) (&& (< netstandard1.0) (>= portable-net451+win81+wpa81)) (&& (< netstandard1.3) (>= wpa81)) (>= uap10.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + Microsoft.Win32.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) + System.AppContext (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Console (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Diagnostics.Tools (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Globalization.Calendars (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.IO.Compression (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) + System.IO.Compression.ZipFile (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) + System.IO.FileSystem (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) + System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Linq.Expressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Net.Http (>= 4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Net.Sockets (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) + System.ObjectModel (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= uap10.0) (< uap10.1)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Runtime.InteropServices.RuntimeInformation (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.0) (>= portable-net451+win81+wpa81)) (&& (>= net45) (< portable-net451+win81+wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= net451) (< netstandard1.3)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.0) (>= portable-net45+win8+wpa81) (< portable-net451+win81+wpa81)) (&& (< netstandard1.3) (>= wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Runtime.Numerics (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) + System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Text.Encoding.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Text.RegularExpressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Threading.Timer (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= uap10.0) (< uap10.1)) + System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Xml.XDocument (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + runtime.native.System (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + runtime.native.System.IO.Compression (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1.1) + runtime.native.System.Net.Http (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) + Microsoft.NETCore.Targets (>= 1.1) + runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) + runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) + runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) + runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.AppContext (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3)) (&& (>= uap10.0) (< uap10.1)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) + System.Buffers (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (>= netstandard1.1) (< netstandard2.0) (< xamarinmac) + System.Diagnostics.Tracing (>= 4.3) - restriction: && (>= netstandard1.1) (< netstandard2.0) (< xamarinmac) + System.Resources.ResourceManager (>= 4.3) - restriction: && (>= netstandard1.1) (< netstandard2.0) (< xamarinmac) + System.Runtime (>= 4.3) - restriction: && (>= netstandard1.1) (< netstandard2.0) (< xamarinmac) + System.Threading (>= 4.3) - restriction: && (>= netstandard1.1) (< netstandard2.0) (< xamarinmac) + System.Collections (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Collections.Concurrent (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Collections.Immutable (1.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3)) (&& (< net20) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8)) + NETStandard.Library (>= 1.6.1) - restriction: && (>= netstandard1.0) (< netstandard2.0) (< xamarinmac) + System.Collections.NonGeneric (4.3) - restriction: && (< net20) (>= netstandard1.3) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Console (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.DiagnosticSource (4.4.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) + System.Collections (>= 4.3) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac)) (&& (< net45) (>= netstandard1.1) (< netstandard1.3)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac)) (&& (< net45) (>= netstandard1.1) (< netstandard1.3)) + System.Reflection (>= 4.3) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac)) (&& (< net45) (>= netstandard1.1) (< netstandard1.3)) + System.Runtime (>= 4.3) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac)) (&& (< net45) (>= netstandard1.1) (< netstandard1.3)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac) + System.Threading (>= 4.3) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac)) (&& (< net45) (>= netstandard1.1) (< netstandard1.3)) + System.Diagnostics.Process (4.3) - restriction: && (< net20) (>= netstandard1.3) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.Win32.Registry (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.Text.Encoding.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Thread (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.ThreadPool (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.StackTrace (4.3) - restriction: && (< net20) (>= netstandard1.3) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Metadata (>= 1.4.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tools (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.TraceSource (4.3) - restriction: && (< net20) (>= netstandard1.3) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Tracing (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (< netcoreapp2.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard2.0)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Globalization.Calendars (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization.Extensions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard2.0)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= net463) (< netstandard1.4)) (&& (< net20) (>= net463) (< netstandard1.5)) (&& (< net20) (>= net463) (>= netstandard1.6)) (&& (< net20) (>= net463) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= net463) (>= uap10.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.IO.Compression (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.IO.Compression (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Buffers (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.IO.Compression.ZipFile (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) + System.Buffers (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.Compression (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Watcher (4.3) - restriction: && (< net20) (>= netstandard1.3) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Overlapped (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Thread (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Linq.Expressions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.ObjectModel (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.Emit.Lightweight (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Net.Http (4.3.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Diagnostics.DiagnosticSource (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Globalization.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.IO.Compression (>= 4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81) + System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= net46) (< portable-net45+win8+wpa81) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Net.NameResolution (4.3) - restriction: && (< net20) (>= netstandard1.3) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Security.Principal.Windows (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Net.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Net.Requests (4.3) - restriction: && (< net20) (>= netstandard1.3) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (< portable-net45+win8+wp8+wpa81) + System.Net.Http (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (< portable-net45+win8+wp8+wpa81) + System.Net.WebHeaderCollection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (< portable-net45+win8+wp8+wpa81) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Net.Sockets (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Net.WebHeaderCollection (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.ObjectModel (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (>= netcoreapp1.1) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.Emit (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.Lightweight (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection.Extensions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.Metadata (1.5) - restriction: && (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + NETStandard.Library (>= 1.6.1) - restriction: && (< monoandroid) (< monotouch) (>= netstandard1.1) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections.Immutable (>= 1.4) - restriction: || (>= monoandroid) (>= monotouch) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netstandard1.1) (< netstandard2.0)) (&& (< netstandard1.1) (>= portable-net45+win8)) (&& (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (>= netcoreapp1.1) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection.TypeExtensions (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< netstandard1.3)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< netstandard1.3)) + System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net462)) (&& (< net20) (>= net463) (< netstandard1.4)) (&& (< net20) (>= net463) (< netstandard1.5)) (&& (< net20) (>= net463) (>= netstandard1.6)) (&& (< net20) (>= net463) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= net463) (>= uap10.0)) (>= netcoreapp1.1) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Extensions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (>= netcoreapp1.1) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) + System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= net462) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) + System.Runtime.InteropServices.RuntimeInformation (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.0) (>= netstandard1.4)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net451) (< netstandard1.3) (>= netstandard1.4)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< netstandard1.3) (>= netstandard1.4) (>= wpa81)) (&& (>= uap10.0) (< uap10.1)) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (< win8)) + System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (< win8)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (< win8)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (< win8)) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (< win8)) + System.Runtime.Numerics (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) + System.Runtime.Serialization.Formatters (4.3) - restriction: && (< net20) (>= netstandard1.3) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) + System.Runtime.Serialization.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netstandard1.3) (< netstandard1.4)) (>= net46) + System.Runtime.Serialization.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4)) (&& (< net20) (>= net46)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Security.AccessControl (4.4.1) - restriction: || (&& (< net20) (>= net461)) (&& (< net20) (>= netstandard2.0)) (>= netcoreapp2.0) + Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 + System.Security.Principal.Windows (>= 4.4) - restriction: || (>= monoandroid) (>= monotouch) (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) + System.Security.Claims (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= net46) (< netstandard2.0)) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Principal (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= net461)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= net461) (>= uap10.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) (>= net463) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) (>= net463) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) (>= net463) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Security.Cryptography.Cng (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) + System.Security.Cryptography.Csp (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= net461)) (&& (< net20) (>= net463) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= net461) (>= uap10.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections.Concurrent (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.OpenSsl (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) + Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net461) (< netstandard1.4)) (&& (< net20) (>= net461) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net461) (< netstandard1.5)) (&& (< net20) (>= net463) (< netstandard1.4)) (&& (< net20) (>= net463) (< netstandard1.5)) (&& (< net20) (>= net463) (>= netstandard1.6)) (&& (< net20) (>= net463) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= net461) (>= uap10.0)) (&& (>= net463) (>= uap10.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.X509Certificates (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Globalization.Calendars (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.IO.FileSystem (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Runtime.Numerics (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) (&& (>= net46) (< netstandard1.4)) (>= net461) + System.Security.Cryptography.Cng (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Security.Cryptography.Csp (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) (&& (>= net46) (< netstandard1.4)) (>= net461) + System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) + System.Security.Principal (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= net46) (< netstandard2.0)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Security.Principal.Windows (4.4.1) - restriction: || (&& (>= monoandroid) (>= net461)) (&& (>= monoandroid) (>= netstandard2.0)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= net461)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net20) (>= net461)) (&& (< net20) (>= netstandard2.0)) (&& (>= net461) (>= xamarinios)) (&& (>= net461) (>= xamarinmac)) (&& (>= net461) (>= xamarintvos)) (&& (>= net461) (>= xamarinwatchos)) (>= netcoreapp2.0) (&& (>= netstandard2.0) (>= xamarinios)) (&& (>= netstandard2.0) (>= xamarinmac)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) + Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 + Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Security.Claims (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< net461) (< netstandard2.0)) + System.Security.Principal (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding.Extensions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Text.RegularExpressions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Threading (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Overlapped (4.3) - restriction: && (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< net46) (>= netstandard1.3)) (< netstandard1.3) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< net46) (>= netstandard1.3)) (< netstandard1.3) + System.Runtime (>= 4.3) - restriction: || (&& (< net46) (>= netstandard1.3)) (< netstandard1.3) + System.Runtime.Handles (>= 4.3) - restriction: || (&& (< net46) (>= netstandard1.3)) (< netstandard1.3) + System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Tasks.Extensions (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) + System.Collections (>= 4.3) - restriction: && (>= netstandard1.0) (< netstandard2.0) (< xamarinmac) + System.Runtime (>= 4.3) - restriction: && (>= netstandard1.0) (< netstandard2.0) (< xamarinmac) + System.Threading.Tasks (>= 4.3) - restriction: && (>= netstandard1.0) (< netstandard2.0) (< xamarinmac) + System.Threading.Thread (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.3)) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.ThreadPool (4.3) - restriction: && (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading.Timer (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3)) (&& (>= uap10.0) (< uap10.1)) + Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net451+win81+wpa81) + Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net451+win81+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net451+win81+wpa81) + System.Xml.ReaderWriter (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.IO.FileSystem (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Text.RegularExpressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Threading.Tasks.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Xml.XDocument (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) + System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Diagnostics.Tools (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) + System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) + System.Xml.XmlDocument (4.3) - restriction: && (< net20) (>= netstandard1.3) + System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + System.Xml.ReaderWriter (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) From 6eaccb243e400f6c2fc4d568622368d1c9ea6a60 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sun, 25 Mar 2018 09:09:02 +0200 Subject: [PATCH 06/92] added initial build script to create empty module --- .gitignore | 2 ++ Build/build.ps1 | 20 ++++++++++++++++++ Build/prepareEnvironment.ps1 | 11 ++++++++++ .../Chocolatey-OneGet.psd1 | Bin 6140 -> 6142 bytes .../Chocolatey-OneGet.psm1 | 0 5 files changed, 33 insertions(+) create mode 100644 Build/build.ps1 create mode 100644 Build/prepareEnvironment.ps1 rename Chocolatey-OneGet.psd1 => Chocolatey-OneGet/Chocolatey-OneGet.psd1 (98%) rename Chocolatey-OneGet.psm1 => Chocolatey-OneGet/Chocolatey-OneGet.psm1 (100%) diff --git a/.gitignore b/.gitignore index 515bf72..a1db876 100644 --- a/.gitignore +++ b/.gitignore @@ -99,3 +99,5 @@ policheck* *pingme* *.GhostDoc.xml **/.vs/ChocolateyProvider +/paket-files/ +/.paket/ diff --git a/Build/build.ps1 b/Build/build.ps1 new file mode 100644 index 0000000..d1f5050 --- /dev/null +++ b/Build/build.ps1 @@ -0,0 +1,20 @@ +$targetFolder = Join-Path $PSScriptRoot "Output"; +$module = Join-Path $PSScriptRoot "..\Chocolatey-OneGet"; + +paket restore; + +# TODO compile +if(-not (Test-Path $targetFolder)) { + md $targetFolder | Out-Null; +} + + +# TODO Publish the module to local PsGet repository +Register-PSRepository -Name TargetRepo -SourceLocation $targetFolder -PublishLocation $targetFolder -InstallationPolicy Trusted | Out-Null; +Publish-Module -Path $module -Repository TargetRepo -NuGetApiKey 'irrelevant'; + + +Unregister-PSRepository TargetRepo -ErrorAction SilentlyContinue + + +# TODO Run Pester tests \ No newline at end of file diff --git a/Build/prepareEnvironment.ps1 b/Build/prepareEnvironment.ps1 new file mode 100644 index 0000000..a29ec13 --- /dev/null +++ b/Build/prepareEnvironment.ps1 @@ -0,0 +1,11 @@ +$InstallDir='C:\ProgramData\chocoportable'; +$env:ChocolateyInstall="$InstallDir"; + +Set-ExecutionPolicy Bypass -Scope Process; +Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')); + +# Testing framework +Install-Module -Name Pester -Force -SkipPublisherCheck; +Import-Module -Name Pester; + +choco install paket -y; \ No newline at end of file diff --git a/Chocolatey-OneGet.psd1 b/Chocolatey-OneGet/Chocolatey-OneGet.psd1 similarity index 98% rename from Chocolatey-OneGet.psd1 rename to Chocolatey-OneGet/Chocolatey-OneGet.psd1 index a22d57b7373d31210d40bed967590a16b80dbe8f..3cd38eef21982c68a9fde09ab5a0fce7ae34d806 100644 GIT binary patch delta 14 VcmeyP|4)Cz8FohH&8OK71pqX41;zjX delta 12 TcmeyT|3`nr8TQTR*bM{#EAj=T diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet/Chocolatey-OneGet.psm1 similarity index 100% rename from Chocolatey-OneGet.psm1 rename to Chocolatey-OneGet/Chocolatey-OneGet.psm1 From da447511a632682b538257c860bda58b67dd5bac Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sun, 25 Mar 2018 15:23:24 +0200 Subject: [PATCH 07/92] Implemented psake build scripts --- .vscode/launch.json | 38 ++---------------- Build/build.ps1 | 20 --------- Build/prepareEnvironment.ps1 | 6 ++- Build/psakefile.ps1 | 36 +++++++++++++++++ ...atey-OneGet.psd1 => Chocolatey-OneGet.psd1 | Bin ...atey-OneGet.psm1 => Chocolatey-OneGet.psm1 | 0 6 files changed, 43 insertions(+), 57 deletions(-) delete mode 100644 Build/build.ps1 create mode 100644 Build/psakefile.ps1 rename Chocolatey-OneGet/Chocolatey-OneGet.psd1 => Chocolatey-OneGet.psd1 (100%) rename Chocolatey-OneGet/Chocolatey-OneGet.psm1 => Chocolatey-OneGet.psm1 (100%) diff --git a/.vscode/launch.json b/.vscode/launch.json index c9a0336..49b4903 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,42 +4,10 @@ { "type": "PowerShell", "request": "launch", - "name": "PowerShell Launch Current File", - "script": "${file}", + "name": "Debug build", + "script": "Invoke-Psake", "args": [], - "cwd": "${file}" - }, - { - "type": "PowerShell", - "request": "launch", - "name": "PowerShell Launch Current File in Temporary Console", - "script": "${file}", - "args": [], - "cwd": "${file}", - "createTemporaryIntegratedConsole": true - }, - { - "type": "PowerShell", - "request": "launch", - "name": "PowerShell Launch Current File w/Args Prompt", - "script": "${file}", - "args": [ - "${command:SpecifyScriptArgs}" - ], - "cwd": "${file}" - }, - { - "type": "PowerShell", - "request": "attach", - "name": "PowerShell Attach to Host Process", - "processId": "${command:PickPSHostProcess}", - "runspaceId": 1 - }, - { - "type": "PowerShell", - "request": "launch", - "name": "PowerShell Interactive Session", - "cwd": "${workspaceRoot}" + "cwd": "${workspaceRoot}\\Build" } ] } \ No newline at end of file diff --git a/Build/build.ps1 b/Build/build.ps1 deleted file mode 100644 index d1f5050..0000000 --- a/Build/build.ps1 +++ /dev/null @@ -1,20 +0,0 @@ -$targetFolder = Join-Path $PSScriptRoot "Output"; -$module = Join-Path $PSScriptRoot "..\Chocolatey-OneGet"; - -paket restore; - -# TODO compile -if(-not (Test-Path $targetFolder)) { - md $targetFolder | Out-Null; -} - - -# TODO Publish the module to local PsGet repository -Register-PSRepository -Name TargetRepo -SourceLocation $targetFolder -PublishLocation $targetFolder -InstallationPolicy Trusted | Out-Null; -Publish-Module -Path $module -Repository TargetRepo -NuGetApiKey 'irrelevant'; - - -Unregister-PSRepository TargetRepo -ErrorAction SilentlyContinue - - -# TODO Run Pester tests \ No newline at end of file diff --git a/Build/prepareEnvironment.ps1 b/Build/prepareEnvironment.ps1 index a29ec13..bc9c491 100644 --- a/Build/prepareEnvironment.ps1 +++ b/Build/prepareEnvironment.ps1 @@ -5,7 +5,9 @@ Set-ExecutionPolicy Bypass -Scope Process; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')); # Testing framework -Install-Module -Name Pester -Force -SkipPublisherCheck; +Install-Module -Name Pester -Force -SkipPublisherCheck -Scope "CurrentUser" -RequiredVersion 4.3.1; Import-Module -Name Pester; +Install-Module -Name psake -Force -Scope "CurrentUser" -RequiredVersion 4.7.0; +Import-Module -Name psake; -choco install paket -y; \ No newline at end of file +choco install paket -y -version 5.133.0; \ No newline at end of file diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 new file mode 100644 index 0000000..56bdd18 --- /dev/null +++ b/Build/psakefile.ps1 @@ -0,0 +1,36 @@ +$targetFolder = Join-Path $PSScriptRoot "Output"; +$moduleFolder = Join-Path $targetFolder "Chocolatey-OneGet"; + +Task Default -Depends ` + Clean-Repository,` + Clean,` + Restore-Packages,` + Compile,` + Test; + +Task Restore-Packages { + Exec { + paket restore; + } +} + +Task Clean { + Remove-Item $targetFolder -Force -Recurse -ErrorAction SilentlyContinue; +} + +Task Compile { + md "$targetFolder\Chocolatey-OneGet" -ErrorAction SilentlyContinue | Out-Null; + copy -Path "..\Chocolatey-OneGet.psd1" -Destination "$moduleFolder\Chocolatey-OneGet.psd1" -Force; + copy -Path "..\Chocolatey-OneGet.psm1" -Destination "$moduleFolder\Chocolatey-OneGet.psm1" -Force; + + Register-PSRepository -Name TargetRepo -SourceLocation $targetFolder -PublishLocation $targetFolder -InstallationPolicy Trusted | Out-Null; + Publish-Module -Path $moduleFolder -Repository TargetRepo -Force; +} + +Task Clean-Repository { + Unregister-PSRepository TargetRepo -ErrorAction SilentlyContinue; +} + +Task Test { + # TODO Run Pester tests +} diff --git a/Chocolatey-OneGet/Chocolatey-OneGet.psd1 b/Chocolatey-OneGet.psd1 similarity index 100% rename from Chocolatey-OneGet/Chocolatey-OneGet.psd1 rename to Chocolatey-OneGet.psd1 diff --git a/Chocolatey-OneGet/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 similarity index 100% rename from Chocolatey-OneGet/Chocolatey-OneGet.psm1 rename to Chocolatey-OneGet.psm1 From 68b8f767da5bf44439bff7541d15f0d026623807 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sun, 25 Mar 2018 15:39:39 +0200 Subject: [PATCH 08/92] added publish task --- Build/psakefile.ps1 | 5 +++++ README.md | 23 +++++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index 56bdd18..5f05c79 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -34,3 +34,8 @@ Task Clean-Repository { Task Test { # TODO Run Pester tests } + +Task Publish { + # nugetApi key needs to beprovided by chocolatey owners + Publish-Module -Path $moduleFolder -NuGetApiKey ""; +} diff --git a/README.md b/README.md index 1159daf..2058c1f 100644 --- a/README.md +++ b/README.md @@ -3,21 +3,24 @@ **NOTE:** For now, you may be more interested in using the ChocolateyGet provider as a stop gap solution until this provider is ready. See https://github.com/jianyunt/ChocolateyGet for details # Chocolatey Provider for PowerShell PackageManagement (aka OneGet) (C#) -This will be the official Chocolatey provider for PackageManagement. +This is the official Chocolatey provider for PackageManagement. -# Native implementation -Thi part contains plain PowerShell implementation of the provider, development is done only in this part. +## Native implementation +This part contains plain PowerShell implementation of the provider, development is done only in this part. -Prerequisities +### Prerequisities * Recommended development environement is visual Studio Code with PowerShell extension * Run build/prepareEnvironment.ps1 script to install all tools used for provider development, it installs used tools * Used tools: -** Pester - powershell testing framework -** PackageManagement - Required dependency, we develop its plugin -** Chocolatey.lib - chocolatey library API -** Paket - dependencies nuget packages downloader - - + * Pester - powershell testing framework + * PackageManagement - Required dependency, we develop its plugin + * Chocolatey - chocolatey library API + * Paket - dependencies nuget packages downloader + +### Development +* Run "Invoke-Psake" from build directory +* Outcome is stored in "Build\Output" +* Use "Invoke-Psake Publish" from build directory to publish into PsGet online repository ## C# implementation - OBSOLETE The provider written in C# is obsolete. Requires windows SDK, which contains mt.exe to be able compile the project. No future development here is expected. Related files will be remoted later. From 1ace9a17a1e4b808ad77ecab88dadfac699b8f1c Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sun, 25 Mar 2018 15:59:56 +0200 Subject: [PATCH 09/92] Added initial module api test --- Build/psakefile.ps1 | 3 ++- Tests/ModuleTests.ps1 | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 Tests/ModuleTests.ps1 diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index 5f05c79..89a4d91 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -32,7 +32,8 @@ Task Clean-Repository { } Task Test { - # TODO Run Pester tests + # Run Pester tests + . ..\Tests\ModuleTests.ps1; } Task Publish { diff --git a/Tests/ModuleTests.ps1 b/Tests/ModuleTests.ps1 new file mode 100644 index 0000000..ef79ef3 --- /dev/null +++ b/Tests/ModuleTests.ps1 @@ -0,0 +1,7 @@ +Describe 'Chocolatey-OneGet Module API' { + It "It installs" { + Install-Module Chocolatey-OneGet -Repository TargetRepo -Force -Scope "CurrentUser"; + Import-Module Chocolatey-OneGet -Force; + Get-Module Chocolatey-OneGet | Should -Not -BeNullOrEmpty; + } +} \ No newline at end of file From 65f5458cbbab8d982cb5883b9e4900bed280477b Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sun, 25 Mar 2018 23:30:36 +0200 Subject: [PATCH 10/92] Implemented most of the module manifest --- Chocolatey-OneGet.psd1 | Bin 6142 -> 3668 bytes Tests/ModuleTests.ps1 | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Chocolatey-OneGet.psd1 b/Chocolatey-OneGet.psd1 index 3cd38eef21982c68a9fde09ab5a0fce7ae34d806..28d43ce39038bc35e66f5627eababe4def61d8fc 100644 GIT binary patch delta 149 zcmeyTe??{kALHgpj4@2C3JgFvS(?>c(1byc!GJ-XftP^`BnA|n&L%I6AJYl)Xzr<1|N3im2z9h1QN!FF2f}w;Vm7$0sk0FsE jhryR2pCN^z6v#?taG5-xU2^g}cALrb#6>1oiMId%mi#1Z literal 6142 zcmeI0YfoE85QgV-rT&K__+U~MQzFtdl_~{cNRYThhUUBRtuEN6zCcjbzuxwJcFuBc z#s;EBYE@as=dwGqGw)n?|N3*?zP7Jy-4Z*tv2|>2SJu_r&{{UKf%Wt@wVA&3G(HI< z`FSE35{$0&>Ouv`u0Iz_w_W;7w0q$ zy2KTs+Y`l5bf7V?i-71NI+x+CZP<$n9`EdDJG92VoGts_UfK`##&)D-M+k3A?j3ur zrybd*rO{1|ZtF`=Pp@Q=*OK{--a3+j5vbi3QQBQ;I1Bc}vJazOq{{Rg$<`-Yd#IJ3 zMt?2JiO}h5b-c^h-jLKU^!8G^Aum`~y{jlqLu*e(2e<2ct3;0HqDQt<;n35Jwyu^e zl4$NkcDm7fM>EhrdibI>ncouirT+V2#UvnyjbpTABh|URu-Z^_(RU_pQ~S}j^t%ne zx_DPLtq0%h%SVekf6({aAoW?$?@Agi_U~6q{QFqC6XQd90g~MWj#-3^g$Q{8)WB-0 zs~7aG%j)}fuF(UHxczT~te5&W5ue}0a}b`0nhROm@fwH=cx5@Hu6L~DBUlA%L=H$p z>?P^=O|Tv|%j|^*Gh-1diDC%dK825g zW{l3cJb*a85GHsM**Txpi39w@shHCj?qkjOT+!7ynSv-71=N}EIfN=e_Hg<jju`^dR+R6|#yH9Ns_KvGkRx!G!YdRCyK$!>D`-~qAPd5TZLY@>S4v$PePrFa+S4N9+L;5p0uS? z>}X>)>)I#D?3oe^2;l&PC^mX!-8D3Sxx09eo2&G*2W0xg=3v zLr&-jCnCS2uOLqjEK?8%M85Y25p&O96U7&6M6PfkH<0;fp&Nlay$hWQ7Ku59y2*-u zM>;g8;;urdm?f&HV#ECcqRZ{FCuuvWhM?d+`M*uvChe8z6zx$&^QpG@7(9Z#gYV~_ zYma=?R(UR#s%GD${ePZ%T^_M3??5IZ=eZL7ccYfhU^zNP4=JL#*cOX->)4{9-eymC z@&-Glxt_cmcwXd|ZQT&pcId&1+@C7vkudSh?6u1Kr{bOrUn=fl$-ZP}vg||ozbtXS z3T3M<&w1IrqICK0;`1dtkS0`)Y_;W5z1Q3;A#$iHKqX6bI@8o!zTQ{sVHuAym&k*) zYY#+tLo0K-!?|4CaqwlJIznCYY8!WqUMI0$zDjtfv8sC4MRl5<0dST=b&WNV%DYSs zs%+ft9EKX}J;P?9he>oUMVB1qFGiooP<|CZXY!t*Q=p8eJJsDb{0Gv4p0ul&}f6L@wEA8>(8u3nakikY;uPcuS*@%4k6sxZ>a>HEpk+UrN#4X*c zXIhKDZi<4=nmy=DlvG*v-&^8CeZ!g)y&Wm)_S8k4gmc*9saTXd-d*2cMM>xOCFNf( q*Sb(V3>b|{Qmv+IN*gkl*ZdP<1TxVdVit)A#QPujXIuW{|9=A;YRC!z diff --git a/Tests/ModuleTests.ps1 b/Tests/ModuleTests.ps1 index ef79ef3..5bb3c43 100644 --- a/Tests/ModuleTests.ps1 +++ b/Tests/ModuleTests.ps1 @@ -2,6 +2,6 @@ Describe 'Chocolatey-OneGet Module API' { It "It installs" { Install-Module Chocolatey-OneGet -Repository TargetRepo -Force -Scope "CurrentUser"; Import-Module Chocolatey-OneGet -Force; - Get-Module Chocolatey-OneGet | Should -Not -BeNullOrEmpty; + Get-Module Chocolatey-OneGet | Should -Not -Be $null; } } \ No newline at end of file From 77177275a4ff3b43533cf4380499c7ed3cb29775 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Mon, 26 Mar 2018 00:26:36 +0200 Subject: [PATCH 11/92] Implemented Get-PackageProviderName Provider function --- Build/psakefile.ps1 | 5 ++++- Chocolatey-OneGet.psd1 | Bin 3668 -> 3448 bytes Chocolatey-OneGet.psm1 | 12 ++++++++++++ Tests/ModuleTests.ps1 | 5 +++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index 89a4d91..b6e97ec 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -33,7 +33,10 @@ Task Clean-Repository { Task Test { # Run Pester tests - . ..\Tests\ModuleTests.ps1; + $testResults = Invoke-Pester ..\Tests\ModuleTests.ps1 -EnableExit -PassThru; + if ($testResults.FailedCount -gt 0) { + Write-Error -Message 'One or more Pester tests failed!'; + } } Task Publish { diff --git a/Chocolatey-OneGet.psd1 b/Chocolatey-OneGet.psd1 index 28d43ce39038bc35e66f5627eababe4def61d8fc..dbaa16adb04246fc7d7e4b3e62a9444165708bda 100644 GIT binary patch delta 132 zcmca2^FwOGB-Y7q*mQiA7~C0B8A=#*83Gs*8Il>Yfn+*RB!HoaA)ld)A(J5m$SY#- z1B&MYSxO8#3<^NflOYc%R|3R|3^_ou3Mi*L`5?EjEJPk=svA%|5vZ;dXa-RC;Sn*8+iZ# delta 53 zcmew%bwy^wBvwY{$^ERNn-kas82Qr}N*VGPk{L=EG8yt2@+QZ!i8Ja=Ze_Kcti>s` J*^f<&9RQ$B4eI~^ diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index e69de29..df367b8 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -0,0 +1,12 @@ +function Get-PackageProviderName { + return "Chocolatey-OneGet"; +} + +function Initialize-Provider { + #nothing to do here. +} + +function Get-Feature { + Write-Output -InputObject (New-Feature -name "file-extensions" -values @(".nupkg")); + Write-Output -InputObject (New-Feature -name "uri-schemes" -values @("http", "https", "file")); +} \ No newline at end of file diff --git a/Tests/ModuleTests.ps1 b/Tests/ModuleTests.ps1 index 5bb3c43..2f3249f 100644 --- a/Tests/ModuleTests.ps1 +++ b/Tests/ModuleTests.ps1 @@ -4,4 +4,9 @@ Describe 'Chocolatey-OneGet Module API' { Import-Module Chocolatey-OneGet -Force; Get-Module Chocolatey-OneGet | Should -Not -Be $null; } + + It "It names it self as Chocolatey-OneGet" { + $name = Get-PackageProviderName; + $name | Should -be "Chocolatey-OneGet"; + } } \ No newline at end of file From c481f7f3034e3f72d3d371b3b94b3adc081dc446 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Mon, 26 Mar 2018 00:41:00 +0200 Subject: [PATCH 12/92] Adding not fully implemented Get-Feautre provider method. --- Tests/ModuleTests.ps1 | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Tests/ModuleTests.ps1 b/Tests/ModuleTests.ps1 index 2f3249f..6686e5a 100644 --- a/Tests/ModuleTests.ps1 +++ b/Tests/ModuleTests.ps1 @@ -9,4 +9,13 @@ Describe 'Chocolatey-OneGet Module API' { $name = Get-PackageProviderName; $name | Should -be "Chocolatey-OneGet"; } + + It "It sucessfully initializes provider" { + { Initialize-Provider } | Should -Not -Throw; + } + + It "It returns supported features" { + $features = Get-Feature; + $features.Length | Should -BeExactly 2; + } } \ No newline at end of file From 424d18fe4379881c9bcdedddb5c94a46fce3a79d Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Mon, 26 Mar 2018 21:42:03 +0200 Subject: [PATCH 13/92] added progress to the readme --- README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/README.md b/README.md index 2058c1f..2327a5a 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,23 @@ This part contains plain PowerShell implementation of the provider, development * Outcome is stored in "Build\Output" * Use "Invoke-Psake Publish" from build directory to publish into PsGet online repository +## Progress +Progress: +* Implement metadata - DONE +* Implement install able skeleton - DONE +* Prepare build and test infrastructure - DONE +* API: + * Get-ProviderName - DONE + * Initialize-Provider - DONE + * Find-Package - TODO + * Install-Package - TODO + * Get-InstalledPackage - TODO + * UnInstall-Package - TODO + * Download-Package - TODO + * Resolve-PackageSource - TODO + * Add-PackageSource - TODO + * Remove-PackageSource - TODO + ## C# implementation - OBSOLETE The provider written in C# is obsolete. Requires windows SDK, which contains mt.exe to be able compile the project. No future development here is expected. Related files will be remoted later. From f5aac29ea054927e97fefd5dd80276e54d309e3d Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Tue, 27 Mar 2018 22:46:37 +0200 Subject: [PATCH 14/92] Added initialization of the Provider --- Build/psakefile.ps1 | 5 + Chocolatey-OneGet.psd1 | Bin 3448 -> 3482 bytes Chocolatey-OneGet.psm1 | 134 +++++- Obsolete/ChocolateyProvider.csproj | 5 +- Obsolete/packages.config | 4 +- Tests/ModuleTests.ps1 | 14 +- paket.dependencies | 3 +- paket.lock | 689 +---------------------------- 8 files changed, 150 insertions(+), 704 deletions(-) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index b6e97ec..2f31768 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -16,12 +16,17 @@ Task Restore-Packages { Task Clean { Remove-Item $targetFolder -Force -Recurse -ErrorAction SilentlyContinue; + # This needs to kill the Visual Studio code powershell instance, otherwise the chocolatey.dll is locked. + $installedModule = "$home\Documents\WindowsPowerShell\Modules\Chocolatey-OneGet"; + Remove-Item $installedModule -Force -Recurse -ErrorAction SilentlyContinue; } Task Compile { md "$targetFolder\Chocolatey-OneGet" -ErrorAction SilentlyContinue | Out-Null; copy -Path "..\Chocolatey-OneGet.psd1" -Destination "$moduleFolder\Chocolatey-OneGet.psd1" -Force; copy -Path "..\Chocolatey-OneGet.psm1" -Destination "$moduleFolder\Chocolatey-OneGet.psm1" -Force; + copy -Path "..\packages\chocolatey.lib\lib\chocolatey.dll" -Destination "$moduleFolder\chocolatey.dll" -Force; + copy -Path "..\packages\log4net\lib\net40-client\log4net.dll" -Destination "$moduleFolder\log4net.dll" -Force; Register-PSRepository -Name TargetRepo -SourceLocation $targetFolder -PublishLocation $targetFolder -InstallationPolicy Trusted | Out-Null; Publish-Module -Path $moduleFolder -Repository TargetRepo -Force; diff --git a/Chocolatey-OneGet.psd1 b/Chocolatey-OneGet.psd1 index dbaa16adb04246fc7d7e4b3e62a9444165708bda..5467f0fb48c35e0224e10a2a8d971b9334ee5f19 100644 GIT binary patch delta 53 zcmew%HA{Mf8_VQZ%mS06Smcw`$#YnRCg-sVY~IE)gL!fght=jj4jxtj&nXJl diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index df367b8..bed9692 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -3,10 +3,134 @@ function Get-PackageProviderName { } function Initialize-Provider { - #nothing to do here. + $chocoBinary = Join-Path $PSScriptRoot "\\chocolatey.dll"; + Add-Type -Path $chocoBinary; + $Script:choco = [chocolatey.Lets]::GetChocolatey(); } -function Get-Feature { - Write-Output -InputObject (New-Feature -name "file-extensions" -values @(".nupkg")); - Write-Output -InputObject (New-Feature -name "uri-schemes" -values @("http", "https", "file")); -} \ No newline at end of file +function Resolve-PackageSource { + $SourceName = $request.PackageSources; + + if(-not $SourceName) { + $SourceName = "*"; + } + + foreach($src in $SourceName) { + if($request.IsCanceled) { + return; + } + + #TODO load and call chocolatey + } +} + +function Add-PackageSource { + [CmdletBinding()] + param + ( + [string] + $Name, + + [string] + $Location, + + [bool] + $Trusted + ) + + #TODO +} + +function Remove-PackageSource { + param + ( + [string] + $Name + ) + + #TODO +} + +function Find-Package { + param( + [string] $name, + [string] $requiredVersion, + [string] $minimumVersion, + [string] $maximumVersion + ) + + #TODO +} + +function Get-InstalledPackage { + [CmdletBinding()] + param + ( + [Parameter()] + [string] + $Name, + + [Parameter()] + [string] + $RequiredVersion, + + [Parameter()] + [string] + $MinimumVersion, + + [Parameter()] + [string] + $MaximumVersion + ) + + #TODO +} + +function Install-Package { + [CmdletBinding()] + param + ( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string] + $fastPackageReference + ) + #TODO + } + +function UnInstall-Package { + [CmdletBinding()] + param + ( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string] + $fastPackageReference + ) + + #TODO +} + +function Download-Package { + [CmdletBinding()] + param + ( + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string] + $FastPackageReference, + + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string] + $Location + ) + + #TODO +} + +# TODO ensure it is part of provider API +# function Get-Feature { +# Write-Output -InputObject (New-Feature -name "file-extensions" -values @(".nupkg")); +# Write-Output -InputObject (New-Feature -name "uri-schemes" -values @("http", "https", "file")); +# } \ No newline at end of file diff --git a/Obsolete/ChocolateyProvider.csproj b/Obsolete/ChocolateyProvider.csproj index 3fab5b2..3483510 100644 --- a/Obsolete/ChocolateyProvider.csproj +++ b/Obsolete/ChocolateyProvider.csproj @@ -67,9 +67,8 @@ - - packages\chocolatey.lib.0.9.10.3\lib\chocolatey.dll - True + + packages\chocolatey.lib.0.10.9\lib\chocolatey.dll packages\log4net.2.0.3\lib\net40-full\log4net.dll diff --git a/Obsolete/packages.config b/Obsolete/packages.config index b973c7b..8cb3681 100644 --- a/Obsolete/packages.config +++ b/Obsolete/packages.config @@ -1,7 +1,7 @@  - + - + \ No newline at end of file diff --git a/Tests/ModuleTests.ps1 b/Tests/ModuleTests.ps1 index 6686e5a..1148b0c 100644 --- a/Tests/ModuleTests.ps1 +++ b/Tests/ModuleTests.ps1 @@ -1,6 +1,6 @@ Describe 'Chocolatey-OneGet Module API' { It "It installs" { - Install-Module Chocolatey-OneGet -Repository TargetRepo -Force -Scope "CurrentUser"; + Install-Module Chocolatey-OneGet -Repository TargetRepo -Force -AllowClobber -Scope "CurrentUser"; Import-Module Chocolatey-OneGet -Force; Get-Module Chocolatey-OneGet | Should -Not -Be $null; } @@ -11,11 +11,13 @@ Describe 'Chocolatey-OneGet Module API' { } It "It sucessfully initializes provider" { - { Initialize-Provider } | Should -Not -Throw; + { + Initialize-Provider; + } | Should -Not -Throw; } - It "It returns supported features" { - $features = Get-Feature; - $features.Length | Should -BeExactly 2; - } + # It "It returns supported features" { + # $features = Get-Feature; + # $features.Length | Should -BeExactly 2; + # } } \ No newline at end of file diff --git a/paket.dependencies b/paket.dependencies index 7fb4e61..ab746a3 100644 --- a/paket.dependencies +++ b/paket.dependencies @@ -1,3 +1,4 @@ source https://www.nuget.org/api/v2 -nuget chocolatey.lib \ No newline at end of file +nuget chocolatey.lib +nuget log4net == 2.0.3 \ No newline at end of file diff --git a/paket.lock b/paket.lock index 7766072..317b0d3 100644 --- a/paket.lock +++ b/paket.lock @@ -1,690 +1,5 @@ NUGET remote: https://www.nuget.org/api/v2 - chocolatey.lib (0.10.8) + chocolatey.lib (0.10.9) log4net (>= 2.0.3) - log4net (2.0.8) - System.AppContext (>= 4.1) - restriction: && (< net20) (>= netstandard1.3) - System.Collections.NonGeneric (>= 4.0.1) - restriction: && (< net20) (>= netstandard1.3) - System.Console (>= 4.0) - restriction: && (< net20) (>= netstandard1.3) - System.Diagnostics.Debug (>= 4.0.11) - restriction: && (< net20) (>= netstandard1.3) - System.Diagnostics.Process (>= 4.1) - restriction: && (< net20) (>= netstandard1.3) - System.Diagnostics.StackTrace (>= 4.0.1) - restriction: && (< net20) (>= netstandard1.3) - System.Diagnostics.TraceSource (>= 4.0) - restriction: && (< net20) (>= netstandard1.3) - System.IO.FileSystem (>= 4.0.1) - restriction: && (< net20) (>= netstandard1.3) - System.IO.FileSystem.Watcher (>= 4.0) - restriction: && (< net20) (>= netstandard1.3) - System.Linq (>= 4.1) - restriction: && (< net20) (>= netstandard1.3) - System.Net.NameResolution (>= 4.0) - restriction: && (< net20) (>= netstandard1.3) - System.Net.Requests (>= 4.0.11) - restriction: && (< net20) (>= netstandard1.3) - System.Net.Sockets (>= 4.1) - restriction: && (< net20) (>= netstandard1.3) - System.Reflection (>= 4.3) - restriction: && (< net20) (>= netstandard1.3) - System.Reflection.Extensions (>= 4.0.1) - restriction: && (< net20) (>= netstandard1.3) - System.Reflection.TypeExtensions (>= 4.1) - restriction: && (< net20) (>= netstandard1.3) - System.Runtime.Extensions (>= 4.1) - restriction: && (< net20) (>= netstandard1.3) - System.Runtime.InteropServices (>= 4.1) - restriction: && (< net20) (>= netstandard1.3) - System.Runtime.InteropServices.RuntimeInformation (>= 4.0) - restriction: && (< net20) (>= netstandard1.3) - System.Runtime.Serialization.Formatters (>= 4.3) - restriction: && (< net20) (>= netstandard1.3) - System.Text.RegularExpressions (>= 4.1) - restriction: && (< net20) (>= netstandard1.3) - System.Threading (>= 4.0.11) - restriction: && (< net20) (>= netstandard1.3) - System.Threading.Thread (>= 4.0) - restriction: && (< net20) (>= netstandard1.3) - System.Threading.Timer (>= 4.0.1) - restriction: && (< net20) (>= netstandard1.3) - System.Xml.ReaderWriter (>= 4.0.11) - restriction: && (< net20) (>= netstandard1.3) - System.Xml.XmlDocument (>= 4.0.1) - restriction: && (< net20) (>= netstandard1.3) - Microsoft.NETCore.Platforms (2.0.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.0) (>= netstandard1.3)) (&& (< monoandroid) (< net20) (< netstandard1.0) (>= netstandard1.4)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net451) (< netstandard1.3) (>= netstandard1.4)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= net461) (< netstandard2.0)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (>= netcoreapp1.1) (&& (>= netcoreapp2.0) (< netstandard2.0)) (&& (< netstandard1.3) (>= netstandard1.4) (>= wpa81)) (>= uap10.0) - Microsoft.NETCore.Targets (2.0) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (>= netcoreapp1.1) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) - Microsoft.Win32.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Registry (4.4) - restriction: && (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 - NETStandard.Library (>= 1.6.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.AccessControl (>= 4.4) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Principal.Windows (>= 4.4) - restriction: || (>= monoandroid) (>= monotouch) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - NETStandard.Library (2.0.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (>= monoandroid) (>= monotouch) (&& (>= net45) (< portable-net451+win81+wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.6) (< netstandard2.0)) (&& (< net45) (>= netstandard2.0)) (&& (>= net451) (< netstandard1.3)) (&& (>= net46) (< netstandard1.4)) (>= net461) (>= netcoreapp2.0) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8+wp8+wpa81) (< portable-net45+win8+wpa81)) (&& (< netstandard1.0) (>= portable-net45+win8+wpa81) (< portable-net451+win81+wpa81)) (&& (< netstandard1.0) (>= portable-net451+win81+wpa81)) (&& (< netstandard1.3) (>= wpa81)) (>= uap10.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - Microsoft.Win32.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) - System.AppContext (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Collections.Concurrent (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Console (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Diagnostics.Tools (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Globalization.Calendars (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.IO.Compression (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) - System.IO.Compression.ZipFile (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) - System.IO.FileSystem (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) - System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Linq.Expressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Net.Http (>= 4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) - System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Net.Sockets (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) - System.ObjectModel (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= uap10.0) (< uap10.1)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Runtime.InteropServices.RuntimeInformation (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.0) (>= portable-net451+win81+wpa81)) (&& (>= net45) (< portable-net451+win81+wpa81)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= net451) (< netstandard1.3)) (&& (>= net46) (< netstandard1.4)) (&& (< netstandard1.0) (>= portable-net45+win8+wpa81) (< portable-net451+win81+wpa81)) (&& (< netstandard1.3) (>= wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Runtime.Numerics (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) - System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Text.Encoding.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Text.RegularExpressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Threading.Timer (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (>= uap10.0) (< uap10.1)) - System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= net46) (< netstandard1.4)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Xml.XDocument (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.5) (< netstandard1.6)) (&& (< net45) (>= netstandard1.1) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.0) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - runtime.native.System (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - runtime.native.System.IO.Compression (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1.1) - runtime.native.System.Net.Http (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - Microsoft.NETCore.Targets (>= 1.1) - runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) - runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.AppContext (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3)) (&& (>= uap10.0) (< uap10.1)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) - System.Buffers (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) - System.Diagnostics.Debug (>= 4.3) - restriction: && (>= netstandard1.1) (< netstandard2.0) (< xamarinmac) - System.Diagnostics.Tracing (>= 4.3) - restriction: && (>= netstandard1.1) (< netstandard2.0) (< xamarinmac) - System.Resources.ResourceManager (>= 4.3) - restriction: && (>= netstandard1.1) (< netstandard2.0) (< xamarinmac) - System.Runtime (>= 4.3) - restriction: && (>= netstandard1.1) (< netstandard2.0) (< xamarinmac) - System.Threading (>= 4.3) - restriction: && (>= netstandard1.1) (< netstandard2.0) (< xamarinmac) - System.Collections (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Collections.Concurrent (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Collections.Immutable (1.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3)) (&& (< net20) (< netcoreapp2.0) (>= netstandard2.0)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8)) - NETStandard.Library (>= 1.6.1) - restriction: && (>= netstandard1.0) (< netstandard2.0) (< xamarinmac) - System.Collections.NonGeneric (4.3) - restriction: && (< net20) (>= netstandard1.3) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Console (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.DiagnosticSource (4.4.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) - System.Collections (>= 4.3) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac)) (&& (< net45) (>= netstandard1.1) (< netstandard1.3)) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac)) (&& (< net45) (>= netstandard1.1) (< netstandard1.3)) - System.Reflection (>= 4.3) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac)) (&& (< net45) (>= netstandard1.1) (< netstandard1.3)) - System.Runtime (>= 4.3) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac)) (&& (< net45) (>= netstandard1.1) (< netstandard1.3)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac) - System.Threading (>= 4.3) - restriction: || (&& (< net45) (< netcoreapp2.0) (>= netstandard1.3) (< xamarinmac)) (&& (< net45) (>= netstandard1.1) (< netstandard1.3)) - System.Diagnostics.Process (4.3) - restriction: && (< net20) (>= netstandard1.3) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Registry (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.Text.Encoding.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Thread (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.StackTrace (4.3) - restriction: && (< net20) (>= netstandard1.3) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Metadata (>= 1.4.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Tools (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.TraceSource (4.3) - restriction: && (< net20) (>= netstandard1.3) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Tracing (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (< netcoreapp2.0) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard2.0)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Globalization.Calendars (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization.Extensions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard2.0)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= net463) (< netstandard1.4)) (&& (< net20) (>= net463) (< netstandard1.5)) (&& (< net20) (>= net463) (>= netstandard1.6)) (&& (< net20) (>= net463) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= net463) (>= uap10.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.IO.Compression (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.IO.Compression (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Buffers (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.IO.Compression.ZipFile (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (>= uap10.0) (< uap10.1)) - System.Buffers (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.Compression (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Watcher (4.3) - restriction: && (< net20) (>= netstandard1.3) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Overlapped (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Thread (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Linq.Expressions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Linq (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.ObjectModel (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.Emit (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.Emit.Lightweight (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.TypeExtensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Net.Http (4.3.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Diagnostics.DiagnosticSource (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Globalization.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.IO.Compression (>= 4.3) - restriction: && (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81) - System.IO.FileSystem (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) - System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.X509Certificates (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= net46) (< portable-net45+win8+wpa81) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Net.NameResolution (4.3) - restriction: && (< net20) (>= netstandard1.3) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Security.Principal.Windows (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Net.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (< portable-net45+win8+wp8+wpa81) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Net.Requests (4.3) - restriction: && (< net20) (>= netstandard1.3) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.Tracing (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (< portable-net45+win8+wp8+wpa81) - System.Net.Http (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Net.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (< portable-net45+win8+wp8+wpa81) - System.Net.WebHeaderCollection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (>= netstandard1.0) (< netstandard1.1) (< win8) (< wp8)) (< portable-net45+win8+wp8+wpa81) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Net.Sockets (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Net.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Net.WebHeaderCollection (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.ObjectModel (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (>= netcoreapp1.1) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.Emit (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.Lightweight (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Emit.ILGeneration (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< wp8) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection.Extensions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.Metadata (1.5) - restriction: && (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - NETStandard.Library (>= 1.6.1) - restriction: && (< monoandroid) (< monotouch) (>= netstandard1.1) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections.Immutable (>= 1.4) - restriction: || (>= monoandroid) (>= monotouch) (&& (< netcoreapp2.0) (>= netstandard2.0)) (&& (>= netstandard1.1) (< netstandard2.0)) (&& (< netstandard1.1) (>= portable-net45+win8)) (&& (< portable-net45+win8) (>= portable-net45+win8+wpa81)) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (>= netcoreapp1.1) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection.TypeExtensions (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< netstandard1.3)) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.5) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< netstandard1.3)) - System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.1) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (< netstandard1.2) (>= netstandard1.3) (< win8)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net462)) (&& (< net20) (>= net463) (< netstandard1.4)) (&& (< net20) (>= net463) (< netstandard1.5)) (&& (< net20) (>= net463) (>= netstandard1.6)) (&& (< net20) (>= net463) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= net463) (>= uap10.0)) (>= netcoreapp1.1) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime.Extensions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81) (< win8)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (>= netcoreapp1.1) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) - System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= net462) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wpa81) - System.Runtime.InteropServices.RuntimeInformation (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.0) (>= netstandard1.4)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net451) (< netstandard1.3) (>= netstandard1.4)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< netstandard1.3) (>= netstandard1.4) (>= wpa81)) (&& (>= uap10.0) (< uap10.1)) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (< win8)) - System.Reflection.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (< win8)) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (< win8)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (< win8)) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.1) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.1) (< win8)) - System.Runtime.Numerics (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81)) (< portable-net45+win8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wpa81) - System.Runtime.Serialization.Formatters (4.3) - restriction: && (< net20) (>= netstandard1.3) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) - System.Runtime.Serialization.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (>= netstandard1.3) (< netstandard1.4)) (>= net46) - System.Runtime.Serialization.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4)) (&& (< net20) (>= net46)) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Security.AccessControl (4.4.1) - restriction: || (&& (< net20) (>= net461)) (&& (< net20) (>= netstandard2.0)) (>= netcoreapp2.0) - Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 - System.Security.Principal.Windows (>= 4.4) - restriction: || (>= monoandroid) (>= monotouch) (&& (>= net46) (< netstandard2.0)) (&& (< net46) (>= netstandard1.3) (< netstandard2.0)) (&& (< net46) (>= netstandard2.0)) (>= net461) (>= netcoreapp2.0) (>= xamarinios) (>= xamarinmac) (>= xamarintvos) (>= xamarinwatchos) - System.Security.Claims (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= net46) (< netstandard2.0)) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Principal (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Algorithms (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= net461)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= net461) (>= uap10.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) (>= net463) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) (>= net463) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) (>= net463) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Security.Cryptography.Cng (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) - Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) - System.Security.Cryptography.Csp (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= net461)) (&& (< net20) (>= net463) (>= netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (>= net461) (>= uap10.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections.Concurrent (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.OpenSsl (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) - Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net461) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net461) (< netstandard1.4)) (&& (< net20) (>= net461) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net461) (< netstandard1.5)) (&& (< net20) (>= net463) (< netstandard1.4)) (&& (< net20) (>= net463) (< netstandard1.5)) (&& (< net20) (>= net463) (>= netstandard1.6)) (&& (< net20) (>= net463) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= net461) (>= uap10.0)) (&& (>= net463) (>= uap10.0)) (&& (< netstandard1.3) (>= uap10.0)) (&& (< netstandard1.4) (>= uap10.0)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.X509Certificates (4.3.2) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - runtime.native.System (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Net.Http (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Globalization.Calendars (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.IO.FileSystem (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Runtime.Numerics (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) (&& (>= net46) (< netstandard1.4)) (>= net461) - System.Security.Cryptography.Cng (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Security.Cryptography.Csp (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (< monoandroid) (< netstandard1.3)) (&& (>= net46) (< netstandard1.4)) (>= net461) - System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< netstandard1.3)) - System.Security.Principal (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= net46) (< netstandard2.0)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Security.Principal.Windows (4.4.1) - restriction: || (&& (>= monoandroid) (>= net461)) (&& (>= monoandroid) (>= netstandard2.0)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= monotouch) (>= net461)) (&& (>= monotouch) (>= netstandard2.0)) (&& (< net20) (>= net461)) (&& (< net20) (>= netstandard2.0)) (&& (>= net461) (>= xamarinios)) (&& (>= net461) (>= xamarinmac)) (&& (>= net461) (>= xamarintvos)) (&& (>= net461) (>= xamarinwatchos)) (>= netcoreapp2.0) (&& (>= netstandard2.0) (>= xamarinios)) (&& (>= netstandard2.0) (>= xamarinmac)) (&& (>= netstandard2.0) (>= xamarintvos)) (&& (>= netstandard2.0) (>= xamarinwatchos)) - Microsoft.NETCore.Platforms (>= 2.0) - restriction: >= netcoreapp2.0 - Microsoft.Win32.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Security.Claims (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (>= net46) (< net461) (< netstandard2.0)) - System.Security.Principal (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Text.Encoding.Extensions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Text.RegularExpressions (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (>= netcoreapp1.1) (< portable-net45+win8+wp8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (< netcoreapp1.1) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Threading (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.4) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< monoandroid) (< net20) (< netstandard1.5) (>= netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.3)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= net46) (>= netstandard1.6)) (&& (< net20) (>= net46) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net451+win81+wpa81)) (&& (>= netstandard1.6) (>= uap10.0)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (< portable-net45+win8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Threading.Overlapped (4.3) - restriction: && (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< net46) (>= netstandard1.3)) (< netstandard1.3) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< net46) (>= netstandard1.3)) (< netstandard1.3) - System.Runtime (>= 4.3) - restriction: || (&& (< net46) (>= netstandard1.3)) (< netstandard1.3) - System.Runtime.Handles (>= 4.3) - restriction: || (&& (< net46) (>= netstandard1.3)) (< netstandard1.3) - System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.5) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.6) (< win8) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Threading.Tasks.Extensions (4.4) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wp8+wpa81)) - System.Collections (>= 4.3) - restriction: && (>= netstandard1.0) (< netstandard2.0) (< xamarinmac) - System.Runtime (>= 4.3) - restriction: && (>= netstandard1.0) (< netstandard2.0) (< xamarinmac) - System.Threading.Tasks (>= 4.3) - restriction: && (>= netstandard1.0) (< netstandard2.0) (< xamarinmac) - System.Threading.Thread (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< net20) (>= netstandard1.3)) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.ThreadPool (4.3) - restriction: && (< monoandroid) (< monotouch) (< net20) (>= netstandard1.4) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading.Timer (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3)) (&& (>= uap10.0) (< uap10.1)) - Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net451+win81+wpa81) - Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net451+win81+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net451) (>= netstandard1.2) (< win81) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net451+win81+wpa81) - System.Xml.ReaderWriter (4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.5)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.6)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= net46) (< netstandard1.4)) (&& (< net20) (>= netstandard1.3)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.5) (< portable-net45+win8+wp8+wpa81)) (&& (< net20) (>= netstandard1.6) (< portable-net45+win8+wp8+wpa81)) (&& (< portable-net45+win8+wp8+wpa81) (>= uap10.0)) (&& (>= uap10.0) (< uap10.1)) (&& (>= uap10.0) (< win8) (< wpa81)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.IO.FileSystem (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime.InteropServices (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Text.Encoding.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Text.RegularExpressions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Threading.Tasks.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Xml.XDocument (4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net20) (>= netstandard1.6) (< netstandard2.0) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net20) (>= netstandard1.3) (< netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (< netstandard1.3) (>= netstandard1.4) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.4) (< netstandard1.5) (< wpa81)) (&& (< monoandroid) (< net20) (>= netstandard1.5) (< netstandard1.6)) (&& (< net20) (>= netstandard1.3) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.3) (< portable-net451+win81+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net45+win8+wpa81)) (&& (< net20) (>= netstandard1.4) (< portable-net451+win81+wpa81)) (&& (>= uap10.0) (< uap10.1)) - System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.Debug (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Diagnostics.Tools (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Globalization (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Runtime.Extensions (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Threading (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (< portable-net45+win8+wp8+wpa81) - System.Xml.ReaderWriter (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (< portable-net45+win8+wp8+wpa81) - System.Xml.XmlDocument (4.3) - restriction: && (< net20) (>= netstandard1.3) - System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) - System.Xml.ReaderWriter (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos) + log4net (2.0.3) From 53f16b9612a07f6f62bf2b05b9d4b66354a4af51 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 28 Mar 2018 01:56:13 +0200 Subject: [PATCH 15/92] Implemented Add-PackageSource skeleton --- .vscode/launch.json | 18 ++++++++++++- Build/psakefile.ps1 | 40 +++++++++++++++++++++-------- Chocolatey-OneGet.psd1 | Bin 3482 -> 3494 bytes Chocolatey-OneGet.psm1 | 57 ++++++++++++++++++++++++++++++++++++----- README.md | 2 +- Tests/ModuleTests.ps1 | 49 ++++++++++++++++++++++------------- 6 files changed, 129 insertions(+), 37 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 49b4903..6c9fae7 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,10 +4,26 @@ { "type": "PowerShell", "request": "launch", - "name": "Debug build", + "name": "Build", + "script": "Invoke-Psake", + "args": ["Build"], + "cwd": "${workspaceRoot}\\Build" + }, + { + "type": "PowerShell", + "request": "launch", + "name": "Build and Test", "script": "Invoke-Psake", "args": [], "cwd": "${workspaceRoot}\\Build" + }, + { + "type": "PowerShell", + "request": "launch", + "name": "Test", + "script": "Invoke-Psake", + "args": ["Test"], + "cwd": "${workspaceRoot}\\Build" } ] } \ No newline at end of file diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index 2f31768..d28a2fc 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -1,12 +1,17 @@ $targetFolder = Join-Path $PSScriptRoot "Output"; $moduleFolder = Join-Path $targetFolder "Chocolatey-OneGet"; +$outputRepository = "Chocolatey-OneGet-OutputRepository"; Task Default -Depends ` - Clean-Repository,` + Build,` + Test; + +Task Build -Depends ` + Clean-OutputRepository,` Clean,` Restore-Packages,` - Compile,` - Test; + Register-OutputRepository, ` + Compile Task Restore-Packages { Exec { @@ -22,23 +27,36 @@ Task Clean { } Task Compile { - md "$targetFolder\Chocolatey-OneGet" -ErrorAction SilentlyContinue | Out-Null; copy -Path "..\Chocolatey-OneGet.psd1" -Destination "$moduleFolder\Chocolatey-OneGet.psd1" -Force; copy -Path "..\Chocolatey-OneGet.psm1" -Destination "$moduleFolder\Chocolatey-OneGet.psm1" -Force; copy -Path "..\packages\chocolatey.lib\lib\chocolatey.dll" -Destination "$moduleFolder\chocolatey.dll" -Force; copy -Path "..\packages\log4net\lib\net40-client\log4net.dll" -Destination "$moduleFolder\log4net.dll" -Force; - Register-PSRepository -Name TargetRepo -SourceLocation $targetFolder -PublishLocation $targetFolder -InstallationPolicy Trusted | Out-Null; - Publish-Module -Path $moduleFolder -Repository TargetRepo -Force; + Publish-Module -Path $moduleFolder -Repository $outputRepository -Force; } -Task Clean-Repository { - Unregister-PSRepository TargetRepo -ErrorAction SilentlyContinue; +Task Clean-OutputRepository { + Unregister-PSRepository $outputRepository -ErrorAction SilentlyContinue; } -Task Test { +Task Register-OutputRepository { + md "$targetFolder\Chocolatey-OneGet" -ErrorAction SilentlyContinue | Out-Null; + + if((Get-PSRepository | Where-Object { $_.Name -eq $outputRepository}) -eq $null){ + Register-PSRepository -Name $outputRepository -SourceLocation $targetFolder -PublishLocation $targetFolder -InstallationPolicy Trusted | Out-Null + } +} + +Task Import-CompiledModule { + if((Get-Module -Name Chocolatey-OneGet) -eq $null){ + Install-Module Chocolatey-OneGet -Repository $outputRepository -Force -AllowClobber -Scope "CurrentUser" + Import-Module Chocolatey-OneGet -Force + } +} + +Task Test -Depends Import-CompiledModule { # Run Pester tests - $testResults = Invoke-Pester ..\Tests\ModuleTests.ps1 -EnableExit -PassThru; + $testResults = Invoke-Pester ..\Tests\ModuleTests.ps1 -PassThru; if ($testResults.FailedCount -gt 0) { Write-Error -Message 'One or more Pester tests failed!'; } @@ -47,4 +65,4 @@ Task Test { Task Publish { # nugetApi key needs to beprovided by chocolatey owners Publish-Module -Path $moduleFolder -NuGetApiKey ""; -} +} \ No newline at end of file diff --git a/Chocolatey-OneGet.psd1 b/Chocolatey-OneGet.psd1 index 5467f0fb48c35e0224e10a2a8d971b9334ee5f19..8d3b7a35b88fc161425664a59f390a162b9990a6 100644 GIT binary patch delta 50 zcmbOwy-a$81Dm2FLkbY;G6XOrG9)u(1IcuTREA)Ne1=knBA`g> Date: Thu, 5 Apr 2018 16:30:37 +0200 Subject: [PATCH 16/92] Applied powershell coding style --- Build/prepareEnvironment.ps1 | 18 ++++++------- Build/psakefile.ps1 | 32 +++++++++++----------- Chocolatey-OneGet.psm1 | 51 ++++++++++++++++-------------------- Tests/ModuleTests.ps1 | 10 +++---- 4 files changed, 53 insertions(+), 58 deletions(-) diff --git a/Build/prepareEnvironment.ps1 b/Build/prepareEnvironment.ps1 index bc9c491..bf1e921 100644 --- a/Build/prepareEnvironment.ps1 +++ b/Build/prepareEnvironment.ps1 @@ -1,13 +1,13 @@ -$InstallDir='C:\ProgramData\chocoportable'; -$env:ChocolateyInstall="$InstallDir"; +$InstallDir='C:\ProgramData\chocoportable' +$env:ChocolateyInstall="$InstallDir" -Set-ExecutionPolicy Bypass -Scope Process; -Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')); +Set-ExecutionPolicy Bypass -Scope Process +Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) # Testing framework -Install-Module -Name Pester -Force -SkipPublisherCheck -Scope "CurrentUser" -RequiredVersion 4.3.1; -Import-Module -Name Pester; -Install-Module -Name psake -Force -Scope "CurrentUser" -RequiredVersion 4.7.0; -Import-Module -Name psake; +Install-Module -Name Pester -Force -SkipPublisherCheck -Scope "CurrentUser" -RequiredVersion 4.3.1 +Import-Module -Name Pester +Install-Module -Name psake -Force -Scope "CurrentUser" -RequiredVersion 4.7.0 +Import-Module -Name psake -choco install paket -y -version 5.133.0; \ No newline at end of file +choco install paket -y -version 5.133.0 \ No newline at end of file diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index d28a2fc..e95ba9a 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -1,6 +1,6 @@ -$targetFolder = Join-Path $PSScriptRoot "Output"; -$moduleFolder = Join-Path $targetFolder "Chocolatey-OneGet"; -$outputRepository = "Chocolatey-OneGet-OutputRepository"; +$targetFolder = Join-Path $PSScriptRoot "Output" +$moduleFolder = Join-Path $targetFolder "Chocolatey-OneGet" +$outputRepository = "Chocolatey-OneGet-OutputRepository" Task Default -Depends ` Build,` @@ -20,27 +20,27 @@ Task Restore-Packages { } Task Clean { - Remove-Item $targetFolder -Force -Recurse -ErrorAction SilentlyContinue; + Remove-Item $targetFolder -Force -Recurse -ErrorAction SilentlyContinue # This needs to kill the Visual Studio code powershell instance, otherwise the chocolatey.dll is locked. - $installedModule = "$home\Documents\WindowsPowerShell\Modules\Chocolatey-OneGet"; - Remove-Item $installedModule -Force -Recurse -ErrorAction SilentlyContinue; + $installedModule = "$home\Documents\WindowsPowerShell\Modules\Chocolatey-OneGet" + Remove-Item $installedModule -Force -Recurse -ErrorAction SilentlyContinue } Task Compile { - copy -Path "..\Chocolatey-OneGet.psd1" -Destination "$moduleFolder\Chocolatey-OneGet.psd1" -Force; - copy -Path "..\Chocolatey-OneGet.psm1" -Destination "$moduleFolder\Chocolatey-OneGet.psm1" -Force; - copy -Path "..\packages\chocolatey.lib\lib\chocolatey.dll" -Destination "$moduleFolder\chocolatey.dll" -Force; - copy -Path "..\packages\log4net\lib\net40-client\log4net.dll" -Destination "$moduleFolder\log4net.dll" -Force; + Copy-Item -Path "..\Chocolatey-OneGet.psd1" -Destination "$moduleFolder\Chocolatey-OneGet.psd1" -Force + Copy-Item -Path "..\Chocolatey-OneGet.psm1" -Destination "$moduleFolder\Chocolatey-OneGet.psm1" -Force + Copy-Item -Path "..\packages\chocolatey.lib\lib\chocolatey.dll" -Destination "$moduleFolder\chocolatey.dll" -Force + Copy-Item -Path "..\packages\log4net\lib\net40-client\log4net.dll" -Destination "$moduleFolder\log4net.dll" -Force - Publish-Module -Path $moduleFolder -Repository $outputRepository -Force; + Publish-Module -Path $moduleFolder -Repository $outputRepository -Force } Task Clean-OutputRepository { - Unregister-PSRepository $outputRepository -ErrorAction SilentlyContinue; + Unregister-PSRepository $outputRepository -ErrorAction SilentlyContinue } Task Register-OutputRepository { - md "$targetFolder\Chocolatey-OneGet" -ErrorAction SilentlyContinue | Out-Null; + mkdir "$targetFolder\Chocolatey-OneGet" -ErrorAction SilentlyContinue | Out-Null if((Get-PSRepository | Where-Object { $_.Name -eq $outputRepository}) -eq $null){ Register-PSRepository -Name $outputRepository -SourceLocation $targetFolder -PublishLocation $targetFolder -InstallationPolicy Trusted | Out-Null @@ -56,13 +56,13 @@ Task Import-CompiledModule { Task Test -Depends Import-CompiledModule { # Run Pester tests - $testResults = Invoke-Pester ..\Tests\ModuleTests.ps1 -PassThru; + $testResults = Invoke-Pester ..\Tests\ModuleTests.ps1 -PassThru if ($testResults.FailedCount -gt 0) { - Write-Error -Message 'One or more Pester tests failed!'; + Write-Error -Message 'One or more Pester tests failed!' } } Task Publish { # nugetApi key needs to beprovided by chocolatey owners - Publish-Module -Path $moduleFolder -NuGetApiKey ""; + Publish-Module -Path $moduleFolder -NuGetApiKey "" } \ No newline at end of file diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 72db53f..e1ec0ba 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -1,18 +1,18 @@ function Get-PackageProviderName { - return "Chocolatey-OneGet"; + return "Chocolatey-OneGet" } function Initialize-Provider { - $chocoBinary = Join-Path $PSScriptRoot "\\chocolatey.dll"; - Add-Type -Path $chocoBinary; - $Script:choco = [chocolatey.Lets]::GetChocolatey(); + $chocoBinary = Join-Path $PSScriptRoot "\\chocolatey.dll" + Add-Type -Path $chocoBinary + $Script:choco = [chocolatey.Lets]::GetChocolatey() } function Resolve-PackageSource { - $SourceName = $request.PackageSources; + $SourceName = $request.PackageSources if(-not $SourceName) { - $SourceName = "*"; + $SourceName = "*" } foreach($src in $SourceName) { @@ -26,8 +26,7 @@ function Resolve-PackageSource { function Add-PackageSource { [CmdletBinding()] - param - ( + param( [string] $Name, @@ -51,10 +50,10 @@ function Add-PackageSource { $Script:choco.Set({ param($config) - $config.CommandName = "source"; - $config.SourceCommand.Command = 2; - $config.SourceCommand.Name = $Name; - $config.Sources = $Location; + $config.CommandName = "source" + $config.SourceCommand.Command = 2 + $config.SourceCommand.Name = $Name + $config.Sources = $Location }) $Script:choco.Run() @@ -73,16 +72,16 @@ function Remove-PackageSource { function Find-Package { param( [string] - $name, + $Name, [string] - $requiredVersion, + $RequiredVersion, [string] - $minimumVersion, + $MinimumVersion, [string] - $maximumVersion + $MaximumVersion ) #TODO @@ -90,8 +89,7 @@ function Find-Package { function Get-InstalledPackage { [CmdletBinding()] - param - ( + param( [Parameter()] [string] $Name, @@ -114,24 +112,22 @@ function Get-InstalledPackage { function Install-Package { [CmdletBinding()] - param - ( + param( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] - $fastPackageReference + $FastPackageReference ) #TODO } function UnInstall-Package { [CmdletBinding()] - param - ( + param( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] - $fastPackageReference + $FastPackageReference ) #TODO @@ -139,8 +135,7 @@ function UnInstall-Package { function Download-Package { [CmdletBinding()] - param - ( + param( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] @@ -157,8 +152,8 @@ function Download-Package { # TODO ensure it is part of provider API # function Get-Feature { -# Write-Output -InputObject (New-Feature -name "file-extensions" -values @(".nupkg")); -# Write-Output -InputObject (New-Feature -name "uri-schemes" -values @("http", "https", "file")); +# Write-Output -InputObject (New-Feature -name "file-extensions" -values @(".nupkg")) +# Write-Output -InputObject (New-Feature -name "uri-schemes" -values @("http", "https", "file")) # } function ThrowError(){ diff --git a/Tests/ModuleTests.ps1 b/Tests/ModuleTests.ps1 index 548d92b..12cfefc 100644 --- a/Tests/ModuleTests.ps1 +++ b/Tests/ModuleTests.ps1 @@ -3,18 +3,18 @@ Describe 'Chocolatey-OneGet Module API' { Import-Module Chocolatey-OneGet -Force It "It is loaded" { - Get-Module Chocolatey-OneGet | Should -Not -Be $null; + Get-Module Chocolatey-OneGet | Should -Not -Be $null } It "It names it self as Chocolatey-OneGet" { - $name = Get-PackageProviderName; - $name | Should -be "Chocolatey-OneGet"; + $name = Get-PackageProviderName + $name | Should -be "Chocolatey-OneGet" } It "It sucessfully initializes provider" { { - Initialize-Provider; - } | Should -Not -Throw; + Initialize-Provider + } | Should -Not -Throw } It "It adds repository" { From 824e552f880eda69644395ed7c7dd826cdd5364a Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Thu, 5 Apr 2018 19:57:53 +0200 Subject: [PATCH 17/92] Extended Add-PackageSource by adding output and fixed related tests --- Build/psakefile.ps1 | 19 ++++++++++--------- Chocolatey-OneGet.psd1 | Bin 3494 -> 3824 bytes Chocolatey-OneGet.psm1 | 11 +++++++++++ README.md | 2 ++ Tests/ModuleTests.ps1 | 26 ++++++++++---------------- docs/howto.md | 33 +++++++++++++++++++++++++++++++++ 6 files changed, 66 insertions(+), 25 deletions(-) create mode 100644 docs/howto.md diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index e95ba9a..2d3c147 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -1,6 +1,7 @@ $targetFolder = Join-Path $PSScriptRoot "Output" -$moduleFolder = Join-Path $targetFolder "Chocolatey-OneGet" -$outputRepository = "Chocolatey-OneGet-OutputRepository" +$moduleName = "Chocolatey-OneGet" +$moduleFolder = Join-Path $targetFolder $moduleName +$outputRepository = "$moduleName-OutputRepository" Task Default -Depends ` Build,` @@ -22,13 +23,13 @@ Task Restore-Packages { Task Clean { Remove-Item $targetFolder -Force -Recurse -ErrorAction SilentlyContinue # This needs to kill the Visual Studio code powershell instance, otherwise the chocolatey.dll is locked. - $installedModule = "$home\Documents\WindowsPowerShell\Modules\Chocolatey-OneGet" + $installedModule = "$home\Documents\WindowsPowerShell\Modules\$moduleName" Remove-Item $installedModule -Force -Recurse -ErrorAction SilentlyContinue } Task Compile { - Copy-Item -Path "..\Chocolatey-OneGet.psd1" -Destination "$moduleFolder\Chocolatey-OneGet.psd1" -Force - Copy-Item -Path "..\Chocolatey-OneGet.psm1" -Destination "$moduleFolder\Chocolatey-OneGet.psm1" -Force + Copy-Item -Path "..\$moduleName.psd1" -Destination "$moduleFolder\$moduleName.psd1" -Force + Copy-Item -Path "..\$moduleName.psm1" -Destination "$moduleFolder\$moduleName.psm1" -Force Copy-Item -Path "..\packages\chocolatey.lib\lib\chocolatey.dll" -Destination "$moduleFolder\chocolatey.dll" -Force Copy-Item -Path "..\packages\log4net\lib\net40-client\log4net.dll" -Destination "$moduleFolder\log4net.dll" -Force @@ -40,7 +41,7 @@ Task Clean-OutputRepository { } Task Register-OutputRepository { - mkdir "$targetFolder\Chocolatey-OneGet" -ErrorAction SilentlyContinue | Out-Null + mkdir "$targetFolder\$moduleName" -ErrorAction SilentlyContinue | Out-Null if((Get-PSRepository | Where-Object { $_.Name -eq $outputRepository}) -eq $null){ Register-PSRepository -Name $outputRepository -SourceLocation $targetFolder -PublishLocation $targetFolder -InstallationPolicy Trusted | Out-Null @@ -48,9 +49,9 @@ Task Register-OutputRepository { } Task Import-CompiledModule { - if((Get-Module -Name Chocolatey-OneGet) -eq $null){ - Install-Module Chocolatey-OneGet -Repository $outputRepository -Force -AllowClobber -Scope "CurrentUser" - Import-Module Chocolatey-OneGet -Force + if((Get-Module -Name $moduleName) -eq $null){ + Install-Module $moduleName -Repository $outputRepository -Force -AllowClobber -Scope "CurrentUser" + Import-Module $moduleName -Force -Scope Local } } diff --git a/Chocolatey-OneGet.psd1 b/Chocolatey-OneGet.psd1 index 8d3b7a35b88fc161425664a59f390a162b9990a6..58fd6def97a3915a92e57b327613084d0fad42c4 100644 GIT binary patch delta 330 zcmYjMy-LGS7(EHGaE%c~TSW=PI22Kgii?Y{(A`1&>20lO0!eD1zJM-b_|~p=7P7e& z`anK{CqIM3{eI7P&bhPQU-#QIdM7x>Dav?(E-Qo!&3=u-3&pu<9;(^sYW5gH{ zUt;b!8?cL+L*}ed#+OyRv=*jZsvSu!Z|R6TUvjgZ|7_ZQiuw3A+HN;3`66nbSE{MJ zTW;~FT1GxQD?XN2P4S(M+}LXeG3{lPA2z1OG%-d(t8ry4q*YClR9@}Fy#UX|C)F%Q x!0(jy6IQicBy+X3K58y&)&aU=IIdhdp1i5+jeyLWcwI4RUf28S%0xb$&L8JrMyCJ( delta 258 zcmew$yG(im6C=AJgC2tcgZkz`#-%L$ZVaUic?`)6B@CGi`3!lJ-?B^AJ1}T4C^5J* zqyj~C83Gs*f%4fvG94%qz)%EKR|Zs_0^}7j_yNUpfh;8k9R>v;=?OF~6Kq-{Lk^Ht z1(XAsfvO9p+7W0<3c4M948cGvN`YFEK?YBD5c{7(h)8qucs>uc196*)lc_b%0@yP*M>v@%dEV0SA_{0F@?l@)u diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index e1ec0ba..ac9dfa9 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -57,9 +57,19 @@ function Add-PackageSource { }) $Script:choco.Run() + + $created = New-Object PSCustomObject -Property (@{ + Name = $Name + Location = $Location + Trusted = $False + Registered = $True + }) + + Write-Output -InputObject $created } function Remove-PackageSource { + [CmdletBinding()] param ( [string] @@ -70,6 +80,7 @@ function Remove-PackageSource { } function Find-Package { + [CmdletBinding()] param( [string] $Name, diff --git a/README.md b/README.md index 2c31995..c13c043 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ This is the official Chocolatey provider for PackageManagement. ## Native implementation This part contains plain PowerShell implementation of the provider, development is done only in this part. +### [How to use it](/docs/howto.md) + ### Prerequisities * Recommended development environement is visual Studio Code with PowerShell extension * Run build/prepareEnvironment.ps1 script to install all tools used for provider development, it installs used tools diff --git a/Tests/ModuleTests.ps1 b/Tests/ModuleTests.ps1 index 12cfefc..2eed475 100644 --- a/Tests/ModuleTests.ps1 +++ b/Tests/ModuleTests.ps1 @@ -1,28 +1,22 @@ Describe 'Chocolatey-OneGet Module API' { Context "Installed module" { - Import-Module Chocolatey-OneGet -Force - - It "It is loaded" { - Get-Module Chocolatey-OneGet | Should -Not -Be $null - } - - It "It names it self as Chocolatey-OneGet" { - $name = Get-PackageProviderName - $name | Should -be "Chocolatey-OneGet" - } + $chocolateyOneGet = "Chocolatey-OneGet" + Import-PackageProvider $chocolateyOneGet -force + Initialize-Provider - It "It sucessfully initializes provider" { - { - Initialize-Provider - } | Should -Not -Throw + It "It imports as PackageProvider" { + $provider = Get-PackageProvider -Name $chocolateyOneGet + $provider | Should -Not -be $null } It "It adds repository" { $expectedName = "Chocolatey-TestScriptRoot" choco source remove -n=$expectedName | Out-Null - Add-PackageSource -Name $expectedName -Location $PSScriptRoot -Trusted $false - + Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedName -Location $PSScriptRootPS + #Debug: + #Add-PackageSource -Name $expectedName -Location $PSScriptRoot -Trusted $false + $found = choco source list | Where-Object { $_.Contains($expectedName)} $found | Should -Not -Be $null choco source remove -n=$expectedName | Out-Null diff --git a/docs/howto.md b/docs/howto.md new file mode 100644 index 0000000..bdea266 --- /dev/null +++ b/docs/howto.md @@ -0,0 +1,33 @@ +# How to use Chocolatey-OneGet package manager provider + +## 1. Install the module + +You can install the module from PowershellGet online repository: + +```powershell +Import-Module -Name PackageManagement +Install-Module -Name Chocolatey-OneGet +``` + +You can also copy the provider directory to your modules folder, when the online galery isnt available (usually "$home\WindowsPowerShell\Modules"). + +```powershell +Import-Module Chocolatey-OneGet +Import-PackageProvider -Name Chocolatey-OneGet +``` + +To verify the provider is available: + +```powershell +Get-PackageProvider -Name Chocolatey-OneGet +``` + +## 2. Register package source + +To register chocolatey source you need path (can be local path or http url) and name for the new source. + +```powershell +$expectedName = "LocalProvider" +$sourceLocation "C:\LocalChocolateyPackages" +Register-PackageSource -ProviderName Chocolatey-OneGet -Name $expectedName -Location $sourceLocation +``` \ No newline at end of file From 6e3b6e5d515ff70a10852650632838c9ed1302b5 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 6 Apr 2018 00:33:19 +0200 Subject: [PATCH 18/92] Fixed arguments handling in Add-PackageSource --- Build/psakefile.ps1 | 4 ++-- Chocolatey-OneGet.psm1 | 24 +++++++++++++++--------- Tests/ModuleTests.ps1 | 32 +++++++++++++++++++------------- docs/howto.md | 2 +- 4 files changed, 37 insertions(+), 25 deletions(-) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index 2d3c147..86fae44 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -5,7 +5,7 @@ $outputRepository = "$moduleName-OutputRepository" Task Default -Depends ` Build,` - Test; + Test Task Build -Depends ` Clean-OutputRepository,` @@ -16,7 +16,7 @@ Task Build -Depends ` Task Restore-Packages { Exec { - paket restore; + paket restore } } diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index ac9dfa9..6adeda3 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -5,7 +5,11 @@ function Get-PackageProviderName { function Initialize-Provider { $chocoBinary = Join-Path $PSScriptRoot "\\chocolatey.dll" Add-Type -Path $chocoBinary - $Script:choco = [chocolatey.Lets]::GetChocolatey() +} + +function Get-Chocolatey{ + $choco = [chocolatey.Lets]::GetChocolatey() + return $choco } function Resolve-PackageSource { @@ -37,17 +41,18 @@ function Add-PackageSource { $Trusted ) - if(-not (Test-Path -path $Location)) { - ThrowError "System.ArgumentException" "Name" + if([string]::IsNullOrEmpty($Name)) { + ThrowError "System.ArgumentException" "Source Name is required" return } - if(-not (Test-Path -path $Location)) { - ThrowError "System.ArgumentException" "Location" + if([string]::IsNullOrEmpty($Location)) { + ThrowError "System.ArgumentException" "Source Location is required" return } - $Script:choco.Set({ + $choco = Get-Chocolatey + $choco.Set({ param($config) $config.CommandName = "source" @@ -56,7 +61,7 @@ function Add-PackageSource { $config.Sources = $Location }) - $Script:choco.Run() + $choco.Run() $created = New-Object PSCustomObject -Property (@{ Name = $Name @@ -182,6 +187,7 @@ function ThrowError(){ ) $exception = New-Object $exceptionType $exceptionMessage - $errorRecord = New-Object System.Management.Automation.ErrorRecord $exception, "", "", $Null - $CallerPSCmdlet.ThrowTerminatingError($errorRecord) + $errorCategory = [System.Management.Automation.ErrorCategory]::InvalidOperation + $errorRecord = New-Object System.Management.Automation.ErrorRecord $exception, "Chocolatey", $errorCategory, $Null + $PSCmdlet.ThrowTerminatingError($errorRecord) } \ No newline at end of file diff --git a/Tests/ModuleTests.ps1 b/Tests/ModuleTests.ps1 index 2eed475..323d0f1 100644 --- a/Tests/ModuleTests.ps1 +++ b/Tests/ModuleTests.ps1 @@ -1,25 +1,31 @@ Describe 'Chocolatey-OneGet Module API' { Context "Installed module" { - $chocolateyOneGet = "Chocolatey-OneGet" - Import-PackageProvider $chocolateyOneGet -force - Initialize-Provider + BeforeEach { + $chocolateyOneGet = "Chocolatey-OneGet" + $expectedSourceName = "Chocolatey-TestScriptRoot" + # If import failed, chocolatey.dll is locked and is necessary to reload powershell + Import-PackageProvider $chocolateyOneGet -force + Initialize-Provider - It "It imports as PackageProvider" { - $provider = Get-PackageProvider -Name $chocolateyOneGet - $provider | Should -Not -be $null + Invoke-Expression "choco source remove -n=$expectedSourceName" } - It "It adds repository" { - $expectedName = "Chocolatey-TestScriptRoot" - choco source remove -n=$expectedName | Out-Null + AfterEach { + Invoke-Expression "choco source remove -n=$expectedSourceName" + } - Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedName -Location $PSScriptRootPS + # It "It imports as PackageProvider" { + # $provider = Get-PackageProvider -Name $chocolateyOneGet + # $provider | Should -Not -be $null + # } + + It "It adds repository" { + #Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $PSScriptRoot #Debug: - #Add-PackageSource -Name $expectedName -Location $PSScriptRoot -Trusted $false + Add-PackageSource -Name $expectedSourceName -Location $PSScriptRoot -Trusted $false - $found = choco source list | Where-Object { $_.Contains($expectedName)} + $found = choco source list | Where-Object { $_.Contains($expectedSourceName)} $found | Should -Not -Be $null - choco source remove -n=$expectedName | Out-Null } # It "It returns supported features" { diff --git a/docs/howto.md b/docs/howto.md index bdea266..08b04b4 100644 --- a/docs/howto.md +++ b/docs/howto.md @@ -28,6 +28,6 @@ To register chocolatey source you need path (can be local path or http url) and ```powershell $expectedName = "LocalProvider" -$sourceLocation "C:\LocalChocolateyPackages" +$sourceLocation = "C:\LocalChocolateyPackages" Register-PackageSource -ProviderName Chocolatey-OneGet -Name $expectedName -Location $sourceLocation ``` \ No newline at end of file From d8eda7fa8598345a734f2ea19c7c03ddf36e2caf Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 6 Apr 2018 02:46:04 +0200 Subject: [PATCH 19/92] Extracted and extended development documentation --- README.md | 16 ++-------------- docs/development.md | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 14 deletions(-) create mode 100644 docs/development.md diff --git a/README.md b/README.md index c13c043..93ba9da 100644 --- a/README.md +++ b/README.md @@ -10,22 +10,10 @@ This part contains plain PowerShell implementation of the provider, development ### [How to use it](/docs/howto.md) -### Prerequisities -* Recommended development environement is visual Studio Code with PowerShell extension -* Run build/prepareEnvironment.ps1 script to install all tools used for provider development, it installs used tools -* Used tools: - * Pester - powershell testing framework - * PackageManagement - Required dependency, we develop its plugin - * Chocolatey - chocolatey library API - * Paket - dependencies nuget packages downloader - -### Development -* Run "Invoke-Psake" from build directory -* Outcome is stored in "Build\Output" -* Use "Invoke-Psake Publish" from build directory to publish into PsGet online repository +### [Development](/docs/development.md) ## Progress -Progress: + * Implement metadata - DONE * Implement install able skeleton - DONE * Prepare build and test infrastructure - DONE diff --git a/docs/development.md b/docs/development.md new file mode 100644 index 0000000..1eba523 --- /dev/null +++ b/docs/development.md @@ -0,0 +1,22 @@ +# Provider development + +## Prerequisities + +* Recommended development environement is visual Studio Code with PowerShell extension +* Run build/prepareEnvironment.ps1 script to install all tools used for provider development, it installs used tools +* Used tools: + * Pester - powershell testing framework + * PackageManagement - Required dependency, we develop its plugin + * Chocolatey - chocolatey library API + * Paket - dependencies nuget packages downloader + +## Development + +* Build: Run "powershell Invoke-Psake" from build directory +* Outcome is stored in "Build\Output" +* Use "Invoke-Psake Publish" from build directory to publish into PsGet online repository + +## Debugging + +* If you are unable to import the module, restart powershell, maybe the chocolatey.dll is in use by the process +* From Visual studio Code with powershell extension, you can launch the predefined tasks. Keep in mind to kill the terminal to be able restart debugging \ No newline at end of file From 7a5113dd2a9b3be765b17cc045a3291ae6163ed3 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 6 Apr 2018 02:56:02 +0200 Subject: [PATCH 20/92] Reorganized readme paragraphs --- README.md | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 93ba9da..f5f2a95 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,17 @@ -**NOTE:** Seeking maintainers to help finish this Provider. Please inquire on the issues list or on Gitter (see the chat room below). Thanks! +# Chocolatey Provider for PowerShell PackageManagement -**NOTE:** For now, you may be more interested in using the ChocolateyGet provider as a stop gap solution until this provider is ready. See https://github.com/jianyunt/ChocolateyGet for details +This is the official Chocolatey provider for PackageManagement (aka OneGet). +**NOTE:** For now, you may be more interested in using the ChocolateyGet provider as a stop gap solution until this provider is ready. See https://github.com/jianyunt/ChocolateyGet for details. -# Chocolatey Provider for PowerShell PackageManagement (aka OneGet) (C#) -This is the official Chocolatey provider for PackageManagement. +## Native powershell implementation -## Native implementation This part contains plain PowerShell implementation of the provider, development is done only in this part. ### [How to use it](/docs/howto.md) ### [Development](/docs/development.md) -## Progress +### Progress * Implement metadata - DONE * Implement install able skeleton - DONE @@ -30,14 +29,18 @@ This part contains plain PowerShell implementation of the provider, development * Remove-PackageSource - TODO ## C# implementation - OBSOLETE + The provider written in C# is obsolete. Requires windows SDK, which contains mt.exe to be able compile the project. No future development here is expected. Related files will be remoted later. ### Development Requires: - - Visual Studio 2013+ - - Any official PackageManagement build from February 2015 or later. -### Chat Room +* Visual Studio 2013+ +* Any official PackageManagement build from February 2015 or later. + +## Contribution + +**NOTE:** Seeking maintainers to help finish this Provider. Please inquire on the issues list or on Gitter (see the chat room below). Thanks! -Come join in the conversation about Chocolatey in our Gitter Chat Room +Come join in the conversation about Chocolatey in our Gitter Chat Room. [![Join the chat at https://gitter.im/chocolatey/chocolatey-oneget](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/chocolatey/chocolatey-oneget?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) From 36863cf92dc4d6fa19d09833b54340ef81bdbc11 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 6 Apr 2018 02:57:20 +0200 Subject: [PATCH 21/92] Added space to readme note --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f5f2a95..fab6d25 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # Chocolatey Provider for PowerShell PackageManagement This is the official Chocolatey provider for PackageManagement (aka OneGet). + **NOTE:** For now, you may be more interested in using the ChocolateyGet provider as a stop gap solution until this provider is ready. See https://github.com/jianyunt/ChocolateyGet for details. ## Native powershell implementation From 295d87c8f57bd8e06cbf30f9c2f705918897be57 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sun, 8 Apr 2018 10:03:36 +0200 Subject: [PATCH 22/92] Implemented Get-Features --- Chocolatey-OneGet.psm1 | 12 ++++++------ Tests/ModuleTests.ps1 | 27 +++++++++++++++++---------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 6adeda3..b7284ba 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -7,6 +7,12 @@ function Initialize-Provider { Add-Type -Path $chocoBinary } +function Get-Feature { + # New-Feature commes from PackageProvider functions + Write-Output -InputObject (New-Feature -name "file-extensions" -values @(".nupkg")) + Write-Output -InputObject (New-Feature -name "uri-schemes" -values @("http", "https", "file")) +} + function Get-Chocolatey{ $choco = [chocolatey.Lets]::GetChocolatey() return $choco @@ -166,12 +172,6 @@ function Download-Package { #TODO } -# TODO ensure it is part of provider API -# function Get-Feature { -# Write-Output -InputObject (New-Feature -name "file-extensions" -values @(".nupkg")) -# Write-Output -InputObject (New-Feature -name "uri-schemes" -values @("http", "https", "file")) -# } - function ThrowError(){ [CmdletBinding()] param( diff --git a/Tests/ModuleTests.ps1 b/Tests/ModuleTests.ps1 index 323d0f1..d69e69d 100644 --- a/Tests/ModuleTests.ps1 +++ b/Tests/ModuleTests.ps1 @@ -14,23 +14,30 @@ Describe 'Chocolatey-OneGet Module API' { Invoke-Expression "choco source remove -n=$expectedSourceName" } - # It "It imports as PackageProvider" { - # $provider = Get-PackageProvider -Name $chocolateyOneGet - # $provider | Should -Not -be $null - # } + It "It imports as PackageProvider" { + $provider = Get-PackageProvider -Name $chocolateyOneGet + $provider | Should -Not -be $null + } It "It adds repository" { - #Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $PSScriptRoot + Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $PSScriptRoot #Debug: - Add-PackageSource -Name $expectedSourceName -Location $PSScriptRoot -Trusted $false + #Add-PackageSource -Name $expectedSourceName -Location $PSScriptRoot -Trusted $false $found = choco source list | Where-Object { $_.Contains($expectedSourceName)} $found | Should -Not -Be $null } - # It "It returns supported features" { - # $features = Get-Feature; - # $features.Length | Should -BeExactly 2; - # } + It "It supports '.nupkg' file extension" { + $provider = Get-PackageProvider $chocolateyOneGet + $extensions = $provider.features["file-extensions"] + $extensions | Should -Contain ".nupkg" + } + + It "It supports 'http', 'https' and 'file' repository location types" { + $provider = Get-PackageProvider $chocolateyOneGet + $extensions = $provider.features["uri-schemes"] + $extensions | Should -Be "http https file" + } } } \ No newline at end of file From 7fc04916d17737598bc3875a13313ce572778bec Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sun, 8 Apr 2018 10:16:19 +0200 Subject: [PATCH 23/92] Extending debugging chapter in contributing guideline --- README.md | 2 +- docs/{development.md => contributing.md} | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) rename docs/{development.md => contributing.md} (71%) diff --git a/README.md b/README.md index fab6d25..f85b719 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ This part contains plain PowerShell implementation of the provider, development ### [How to use it](/docs/howto.md) -### [Development](/docs/development.md) +### [Development](/docs/contributing.md) ### Progress diff --git a/docs/development.md b/docs/contributing.md similarity index 71% rename from docs/development.md rename to docs/contributing.md index 1eba523..292750a 100644 --- a/docs/development.md +++ b/docs/contributing.md @@ -19,4 +19,6 @@ ## Debugging * If you are unable to import the module, restart powershell, maybe the chocolatey.dll is in use by the process -* From Visual studio Code with powershell extension, you can launch the predefined tasks. Keep in mind to kill the terminal to be able restart debugging \ No newline at end of file +* From Visual studio Code with powershell extension, you can launch the predefined tasks. Keep in mind to kill the terminal to be able restart debugging +* When debugging tests, breakpoint in the module script wouldnt hit directly, stop on break poin in the test, then manually step into the provider method. After that breakpoint inside the provider should hit. +* See also [OneGet debugging](https://github.com/OneGet/oneget/blob/WIP/docs/writepowershellbasedprovider.md#debugging-your-provider) \ No newline at end of file From f7dd43e06b85c8f1ce2e3b80ad4b095572f5523a Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sun, 8 Apr 2018 16:34:23 +0200 Subject: [PATCH 24/92] added option to debug only selected test --- Build/psakefile.ps1 | 4 ++- Tests/ModuleTests.ps1 | 81 +++++++++++++++++++++---------------------- docs/contributing.md | 1 + 3 files changed, 44 insertions(+), 42 deletions(-) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index 86fae44..df240c5 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -2,6 +2,7 @@ $targetFolder = Join-Path $PSScriptRoot "Output" $moduleName = "Chocolatey-OneGet" $moduleFolder = Join-Path $targetFolder $moduleName $outputRepository = "$moduleName-OutputRepository" +$testsFilter = "*" # all by default Task Default -Depends ` Build,` @@ -57,7 +58,8 @@ Task Import-CompiledModule { Task Test -Depends Import-CompiledModule { # Run Pester tests - $testResults = Invoke-Pester ..\Tests\ModuleTests.ps1 -PassThru + $testResults = Invoke-Pester ..\Tests\ModuleTests.ps1 -PassThru -TestName $testsFilter + if ($testResults.FailedCount -gt 0) { Write-Error -Message 'One or more Pester tests failed!' } diff --git a/Tests/ModuleTests.ps1 b/Tests/ModuleTests.ps1 index d69e69d..0cc0fcc 100644 --- a/Tests/ModuleTests.ps1 +++ b/Tests/ModuleTests.ps1 @@ -1,43 +1,42 @@ -Describe 'Chocolatey-OneGet Module API' { - Context "Installed module" { - BeforeEach { - $chocolateyOneGet = "Chocolatey-OneGet" - $expectedSourceName = "Chocolatey-TestScriptRoot" - # If import failed, chocolatey.dll is locked and is necessary to reload powershell - Import-PackageProvider $chocolateyOneGet -force - Initialize-Provider - - Invoke-Expression "choco source remove -n=$expectedSourceName" - } - - AfterEach { - Invoke-Expression "choco source remove -n=$expectedSourceName" - } - - It "It imports as PackageProvider" { - $provider = Get-PackageProvider -Name $chocolateyOneGet - $provider | Should -Not -be $null - } - - It "It adds repository" { - Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $PSScriptRoot - #Debug: - #Add-PackageSource -Name $expectedSourceName -Location $PSScriptRoot -Trusted $false - - $found = choco source list | Where-Object { $_.Contains($expectedSourceName)} - $found | Should -Not -Be $null - } - - It "It supports '.nupkg' file extension" { - $provider = Get-PackageProvider $chocolateyOneGet - $extensions = $provider.features["file-extensions"] - $extensions | Should -Contain ".nupkg" - } - - It "It supports 'http', 'https' and 'file' repository location types" { - $provider = Get-PackageProvider $chocolateyOneGet - $extensions = $provider.features["uri-schemes"] - $extensions | Should -Be "http https file" - } +$chocolateyOneGet = "Chocolatey-OneGet" +$expectedSourceName = "Chocolatey-TestScriptRoot" +# If import failed, chocolatey.dll is locked and is necessary to reload powershell +Import-PackageProvider $chocolateyOneGet -force +#Initialize-Provider + +Describe "Imported module" { + $provider = Get-PackageProvider -Name $chocolateyOneGet + + It "is loaded as PackageProvider" { + $provider | Should -Not -be $null + } + + It "supports '.nupkg' file extension" { + $extensions = $provider.features["file-extensions"] + $extensions | Should -Contain ".nupkg" + } + + It "supports 'http', 'https' and 'file' repository location types" { + $extensions = $provider.features["uri-schemes"] + $extensions | Should -Be "http https file" + } +} + +Describe "Added packages source" { + BeforeEach { + Invoke-Expression "choco source remove -n=$expectedSourceName" + } + + AfterEach { + Invoke-Expression "choco source remove -n=$expectedSourceName" + } + + It "is saved in choco" { + Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $PSScriptRoot + #Debug: + #Add-PackageSource -Name $expectedSourceName -Location $PSScriptRoot -Trusted $false + + $found = choco source list | Where-Object { $_.Contains($expectedSourceName)} + $found | Should -Not -Be $null } } \ No newline at end of file diff --git a/docs/contributing.md b/docs/contributing.md index 292750a..79eb79a 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -21,4 +21,5 @@ * If you are unable to import the module, restart powershell, maybe the chocolatey.dll is in use by the process * From Visual studio Code with powershell extension, you can launch the predefined tasks. Keep in mind to kill the terminal to be able restart debugging * When debugging tests, breakpoint in the module script wouldnt hit directly, stop on break poin in the test, then manually step into the provider method. After that breakpoint inside the provider should hit. +* To run only selected test add wildcard filter into the $testFilter parameter in psakeFile.ps1 * See also [OneGet debugging](https://github.com/OneGet/oneget/blob/WIP/docs/writepowershellbasedprovider.md#debugging-your-provider) \ No newline at end of file From edf77075434d4e1129705b491faaec3423ac6f55 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sun, 8 Apr 2018 16:34:42 +0200 Subject: [PATCH 25/92] added more options to add-packagesource --- Chocolatey-OneGet.psm1 | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index b7284ba..56465f1 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -62,9 +62,19 @@ function Add-PackageSource { param($config) $config.CommandName = "source" - $config.SourceCommand.Command = 2 + $config.SourceCommand.Command = [chocolatey.infrastructure.app.domain.SourceCommandType]::add $config.SourceCommand.Name = $Name $config.Sources = $Location + + # TODO load from dynamic options + # $config.SourceCommand.Username = source.UserName; + # $config.SourceCommand.Password = source.Password; + # $config.SourceCommand.Certificate = source.Certificate; + # $config.SourceCommand.CertificatePassword = source.CertificatePassword; + # $config.SourceCommand.Priority = source.Priority; + # $config.SourceCommand.BypassProxy = source.BypassProxy; + # $config.SourceCommand.AllowSelfService = source.AllowSelfService; + # $config.SourceCommand.VisibleToAdminsOnly = source.VisibleToAdminsOnly; }) $choco.Run() @@ -76,6 +86,7 @@ function Add-PackageSource { Registered = $True }) + $created = New-PackageSource -Name $Name -Location $Location -Trusted $False -Registered $True Write-Output -InputObject $created } From cfa3475d8f7e5c086d3233de2ec82e93a3688f52 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sun, 8 Apr 2018 23:02:58 +0200 Subject: [PATCH 26/92] Added dynamic options to the source category --- Chocolatey-OneGet.psm1 | 34 ++++++++++++++++++++++++++++++---- Tests/ModuleTests.ps1 | 34 ++++++++++++++++++++++++++-------- 2 files changed, 56 insertions(+), 12 deletions(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 56465f1..0b9e8ab 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -13,9 +13,26 @@ function Get-Feature { Write-Output -InputObject (New-Feature -name "uri-schemes" -values @("http", "https", "file")) } -function Get-Chocolatey{ - $choco = [chocolatey.Lets]::GetChocolatey() - return $choco +function Get-DynamicOptions{ + param( + [Microsoft.PackageManagement.MetaProvider.PowerShell.OptionCategory] + $category + ) + + Write-Debug ("Get-DynamicOptions") + switch($category){ + Source { + # $config.SourceCommand.Username = source.UserName; + # $config.SourceCommand.Password = source.Password; + # $config.SourceCommand.Certificate = source.Certificate; + # $config.SourceCommand.CertificatePassword = source.CertificatePassword; + + Write-Output -InputObject (New-DynamicOption -Category $category -Name "Priority" -ExpectedType int -IsRequired $false) + Write-Output -InputObject (New-DynamicOption -Category $category -Name "BypassProxy" -ExpectedType switch -IsRequired $false) + Write-Output -InputObject (New-DynamicOption -Category $category -Name "AllowSelfService" -ExpectedType switch -IsRequired $false) + Write-Output -InputObject (New-DynamicOption -Category $category -Name "VisibleToAdminsOnly" -ExpectedType switch -IsRequired $false) + } + } } function Resolve-PackageSource { @@ -183,6 +200,13 @@ function Download-Package { #TODO } +#region Helper functions + +function Get-Chocolatey{ + $choco = [chocolatey.Lets]::GetChocolatey() + return $choco +} + function ThrowError(){ [CmdletBinding()] param( @@ -201,4 +225,6 @@ function ThrowError(){ $errorCategory = [System.Management.Automation.ErrorCategory]::InvalidOperation $errorRecord = New-Object System.Management.Automation.ErrorRecord $exception, "Chocolatey", $errorCategory, $Null $PSCmdlet.ThrowTerminatingError($errorRecord) -} \ No newline at end of file +} + +#endregion \ No newline at end of file diff --git a/Tests/ModuleTests.ps1 b/Tests/ModuleTests.ps1 index 0cc0fcc..7f45592 100644 --- a/Tests/ModuleTests.ps1 +++ b/Tests/ModuleTests.ps1 @@ -23,20 +23,38 @@ Describe "Imported module" { } Describe "Added packages source" { - BeforeEach { + BeforeAll { Invoke-Expression "choco source remove -n=$expectedSourceName" } - AfterEach { + AfterAll { Invoke-Expression "choco source remove -n=$expectedSourceName" } - It "is saved in choco" { - Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $PSScriptRoot - #Debug: - #Add-PackageSource -Name $expectedSourceName -Location $PSScriptRoot -Trusted $false + Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $PSScriptRoot ` + -Priority 10 -BypassProxy -AllowSelfService -VisibleToAdminsOnly + #Debug: + #Add-PackageSource -Name $expectedSourceName -Location $PSScriptRoot -Trusted $false + + $registeredSource = choco source list | Where-Object { $_.Contains($expectedSourceName)} - $found = choco source list | Where-Object { $_.Contains($expectedSourceName)} - $found | Should -Not -Be $null + It "is saved in choco" { + $registeredSource | Should -Not -Be $Null } + + # It "saves Priority" { + # $registeredSource | Should -Match "Priority 10" + # } + + # It "saves BypassProxy" { + # $registeredSource | Should -Match "Bypass Proxy - True" + # } + + # It "saves AllowSelfService" { + # $registeredSource | Should -Match "Self-Service - True" + # } + + # It "saves VisibleToAdminsOnly" { + # $registeredSource | Should -Match "Admin Only - True" + # } } \ No newline at end of file From 8add50ab750f3a0e9926761224b7caf92645ed07 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sun, 8 Apr 2018 23:50:57 +0200 Subject: [PATCH 27/92] Implemented usage of dynamic parameters in add-packagesource --- Chocolatey-OneGet.psm1 | 46 +++++++++++++++++++++++++++++++++--------- Tests/ModuleTests.ps1 | 25 ++++++++++++----------- 2 files changed, 50 insertions(+), 21 deletions(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 0b9e8ab..3671134 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -1,3 +1,8 @@ +$optionPriority = "Priority" +$optionBypassProxy = "BypassProxy" +$optionAllowSelfService = "AllowSelfService" +$optionVisibleToAdminsOnly = "VisibleToAdminsOnly" + function Get-PackageProviderName { return "Chocolatey-OneGet" } @@ -27,10 +32,10 @@ function Get-DynamicOptions{ # $config.SourceCommand.Certificate = source.Certificate; # $config.SourceCommand.CertificatePassword = source.CertificatePassword; - Write-Output -InputObject (New-DynamicOption -Category $category -Name "Priority" -ExpectedType int -IsRequired $false) - Write-Output -InputObject (New-DynamicOption -Category $category -Name "BypassProxy" -ExpectedType switch -IsRequired $false) - Write-Output -InputObject (New-DynamicOption -Category $category -Name "AllowSelfService" -ExpectedType switch -IsRequired $false) - Write-Output -InputObject (New-DynamicOption -Category $category -Name "VisibleToAdminsOnly" -ExpectedType switch -IsRequired $false) + Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionPriority -ExpectedType int -IsRequired $false) + Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionBypassProxy -ExpectedType switch -IsRequired $false) + Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionAllowSelfService -ExpectedType switch -IsRequired $false) + Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionVisibleToAdminsOnly -ExpectedType switch -IsRequired $false) } } } @@ -74,6 +79,11 @@ function Add-PackageSource { return } + $priority = ParseDynamicOption $optionPriority 0 + $bypassProxy = ParseDynamicOption $optionBypassProxy $False + $allowSelfService = ParseDynamicOption $optionAllowSelfService $False + $visibleToAdminsOnly = ParseDynamicOption $optionVisibleToAdminsOnly $False + $choco = Get-Chocolatey $choco.Set({ param($config) @@ -88,11 +98,12 @@ function Add-PackageSource { # $config.SourceCommand.Password = source.Password; # $config.SourceCommand.Certificate = source.Certificate; # $config.SourceCommand.CertificatePassword = source.CertificatePassword; - # $config.SourceCommand.Priority = source.Priority; - # $config.SourceCommand.BypassProxy = source.BypassProxy; - # $config.SourceCommand.AllowSelfService = source.AllowSelfService; - # $config.SourceCommand.VisibleToAdminsOnly = source.VisibleToAdminsOnly; - }) + + $config.SourceCommand.Priority = $priority + $config.SourceCommand.BypassProxy = $bypassProxy + $config.SourceCommand.AllowSelfService = $allowSelfService + $config.SourceCommand.VisibleToAdminsOnly = $visibleToAdminsOnly + }) $choco.Run() @@ -207,6 +218,23 @@ function Get-Chocolatey{ return $choco } +function ParseDynamicOption() { + param( + [string] + $optionName, + + $defaultValue + ) + + $options = $request.Options + + if($options.ContainsKey($optionName)){ + return $options[$optionName] + } + + return $defaultValue +} + function ThrowError(){ [CmdletBinding()] param( diff --git a/Tests/ModuleTests.ps1 b/Tests/ModuleTests.ps1 index 7f45592..d807b46 100644 --- a/Tests/ModuleTests.ps1 +++ b/Tests/ModuleTests.ps1 @@ -42,19 +42,20 @@ Describe "Added packages source" { $registeredSource | Should -Not -Be $Null } - # It "saves Priority" { - # $registeredSource | Should -Match "Priority 10" - # } + It "saves Priority" { + $registeredSource | Should -Match "Priority 10" + } - # It "saves BypassProxy" { - # $registeredSource | Should -Match "Bypass Proxy - True" - # } + It "saves BypassProxy" { + $registeredSource | Should -Match "Bypass Proxy - True" + } - # It "saves AllowSelfService" { - # $registeredSource | Should -Match "Self-Service - True" - # } + It "saves AllowSelfService" { + $registeredSource | Should -Match "Self-Service - True" + } - # It "saves VisibleToAdminsOnly" { - # $registeredSource | Should -Match "Admin Only - True" - # } + # Requires business edition + It "saves VisibleToAdminsOnly" -Skip { + $registeredSource | Should -Match "Admin Only - True" + } } \ No newline at end of file From a7753b11d312fcf5c18ebb15a16899108f1a2d92 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Mon, 9 Apr 2018 00:35:46 +0200 Subject: [PATCH 28/92] Added how to use dynamic options --- docs/howto.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/howto.md b/docs/howto.md index 08b04b4..f787272 100644 --- a/docs/howto.md +++ b/docs/howto.md @@ -30,4 +30,11 @@ To register chocolatey source you need path (can be local path or http url) and $expectedName = "LocalProvider" $sourceLocation = "C:\LocalChocolateyPackages" Register-PackageSource -ProviderName Chocolatey-OneGet -Name $expectedName -Location $sourceLocation +``` + +Register package source supports all other options you can use from chocolatey command line. All options to register package source are optional. How to use the dynamic options see related documentation. Following example shows how to use the extra parameters + +``` +Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $PSScriptRoot ` + -Priority 10 -BypassProxy -AllowSelfService -VisibleToAdminsOnly ``` \ No newline at end of file From 389bfb6a48b8b85fcf44fe3f29997212ba5efb8b Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Mon, 9 Apr 2018 00:41:38 +0200 Subject: [PATCH 29/92] fixed formating in howto.md --- docs/howto.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/howto.md b/docs/howto.md index f787272..3ed0234 100644 --- a/docs/howto.md +++ b/docs/howto.md @@ -1,4 +1,4 @@ -# How to use Chocolatey-OneGet package manager provider +# How to use Chocolatey-OneGet provider ## 1. Install the module @@ -34,7 +34,7 @@ Register-PackageSource -ProviderName Chocolatey-OneGet -Name $expectedName -Loca Register package source supports all other options you can use from chocolatey command line. All options to register package source are optional. How to use the dynamic options see related documentation. Following example shows how to use the extra parameters -``` +```powershell Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $PSScriptRoot ` -Priority 10 -BypassProxy -AllowSelfService -VisibleToAdminsOnly ``` \ No newline at end of file From bd932e93712d066b2adb38797b9ae267fafedd2d Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Mon, 9 Apr 2018 00:43:00 +0200 Subject: [PATCH 30/92] fixed values of parameters in howto.md --- docs/howto.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/howto.md b/docs/howto.md index 3ed0234..22ba9d1 100644 --- a/docs/howto.md +++ b/docs/howto.md @@ -35,6 +35,6 @@ Register-PackageSource -ProviderName Chocolatey-OneGet -Name $expectedName -Loca Register package source supports all other options you can use from chocolatey command line. All options to register package source are optional. How to use the dynamic options see related documentation. Following example shows how to use the extra parameters ```powershell -Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $PSScriptRoot ` +Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedName -Location $sourceLocation ` -Priority 10 -BypassProxy -AllowSelfService -VisibleToAdminsOnly ``` \ No newline at end of file From fc5527835d74b0bb46067629b0e427cd6de522fb Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Tue, 10 Apr 2018 21:34:35 +0200 Subject: [PATCH 31/92] Add authentication properties to package source definition --- Chocolatey-OneGet.psm1 | 27 +++++++++++++++------------ Tests/ModuleTests.ps1 | 28 +++++++++++++++++++++++----- docs/howto.md | 21 +++++++++++++++++++-- 3 files changed, 57 insertions(+), 19 deletions(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 3671134..9dc7e7f 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -2,6 +2,8 @@ $optionPriority = "Priority" $optionBypassProxy = "BypassProxy" $optionAllowSelfService = "AllowSelfService" $optionVisibleToAdminsOnly = "VisibleToAdminsOnly" +$optionCertificate = "Certificate" +$optionCertificatePassword = "CertificatePassword" function Get-PackageProviderName { return "Chocolatey-OneGet" @@ -27,15 +29,12 @@ function Get-DynamicOptions{ Write-Debug ("Get-DynamicOptions") switch($category){ Source { - # $config.SourceCommand.Username = source.UserName; - # $config.SourceCommand.Password = source.Password; - # $config.SourceCommand.Certificate = source.Certificate; - # $config.SourceCommand.CertificatePassword = source.CertificatePassword; - Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionPriority -ExpectedType int -IsRequired $false) Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionBypassProxy -ExpectedType switch -IsRequired $false) Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionAllowSelfService -ExpectedType switch -IsRequired $false) Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionVisibleToAdminsOnly -ExpectedType switch -IsRequired $false) + Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionCertificate -ExpectedType string -IsRequired $false) + Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionCertificatePassword -ExpectedType string -IsRequired $false) } } } @@ -83,6 +82,8 @@ function Add-PackageSource { $bypassProxy = ParseDynamicOption $optionBypassProxy $False $allowSelfService = ParseDynamicOption $optionAllowSelfService $False $visibleToAdminsOnly = ParseDynamicOption $optionVisibleToAdminsOnly $False + $certificate = ParseDynamicOption $optionCertificate "" + $certificatePassword = ParseDynamicOption $optionCertificatePassword "" $choco = Get-Chocolatey $choco.Set({ @@ -92,17 +93,19 @@ function Add-PackageSource { $config.SourceCommand.Command = [chocolatey.infrastructure.app.domain.SourceCommandType]::add $config.SourceCommand.Name = $Name $config.Sources = $Location - - # TODO load from dynamic options - # $config.SourceCommand.Username = source.UserName; - # $config.SourceCommand.Password = source.Password; - # $config.SourceCommand.Certificate = source.Certificate; - # $config.SourceCommand.CertificatePassword = source.CertificatePassword; - $config.SourceCommand.Priority = $priority $config.SourceCommand.BypassProxy = $bypassProxy $config.SourceCommand.AllowSelfService = $allowSelfService $config.SourceCommand.VisibleToAdminsOnly = $visibleToAdminsOnly + $config.SourceCommand.Certificate = $certificate + $config.SourceCommand.CertificatePassword = $certificatePassword + + $credential = $request.Credential + + if ($credential -ne $Null){ + $config.SourceCommand.Username = $credential.UserName + $config.SourceCommand.Password = $credential.GetNetworkCredential().Password + } }) $choco.Run() diff --git a/Tests/ModuleTests.ps1 b/Tests/ModuleTests.ps1 index d807b46..14013cf 100644 --- a/Tests/ModuleTests.ps1 +++ b/Tests/ModuleTests.ps1 @@ -1,8 +1,6 @@ $chocolateyOneGet = "Chocolatey-OneGet" -$expectedSourceName = "Chocolatey-TestScriptRoot" # If import failed, chocolatey.dll is locked and is necessary to reload powershell Import-PackageProvider $chocolateyOneGet -force -#Initialize-Provider Describe "Imported module" { $provider = Get-PackageProvider -Name $chocolateyOneGet @@ -23,18 +21,28 @@ Describe "Imported module" { } Describe "Added packages source" { + $expectedSourceName = "Chocolatey-TestScriptRoot" + $expectedCertificateSource = "Chocolatey-CertificateTestScriptRoot" + BeforeAll { Invoke-Expression "choco source remove -n=$expectedSourceName" + Invoke-Expression "choco source remove -n=$expectedCertificateSource" } AfterAll { Invoke-Expression "choco source remove -n=$expectedSourceName" + Invoke-Expression "choco source remove -n=$expectedCertificateSource" } + + $userPassword = "UserPassword" | ConvertTo-SecureString -AsPlainText -Force + $credentials = new-object -typename System.Management.Automation.PSCredential -argumentlist "UserName", $userPassword Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $PSScriptRoot ` - -Priority 10 -BypassProxy -AllowSelfService -VisibleToAdminsOnly - #Debug: - #Add-PackageSource -Name $expectedSourceName -Location $PSScriptRoot -Trusted $false + -Priority 10 -BypassProxy -AllowSelfService -VisibleToAdminsOnly ` + -Credential $credentials + + Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedCertificateSource -Location $PSScriptRoot ` + -Certificate "testCertificate" -CertificatePassword "testCertificatePassword" $registeredSource = choco source list | Where-Object { $_.Contains($expectedSourceName)} @@ -58,4 +66,14 @@ Describe "Added packages source" { It "saves VisibleToAdminsOnly" -Skip { $registeredSource | Should -Match "Admin Only - True" } + + # TODO how to test the user name was used or certificate was used properly? + It "saves user credential properties" { + $registeredSource | Should -Match "(Authenticated)" + } + + It "saves user certificate properties" { + $certificateSource = choco source list | Where-Object { $_.Contains($expectedCertificateSource)} + $certificateSource | Should -Match "(Authenticated)" + } } \ No newline at end of file diff --git a/docs/howto.md b/docs/howto.md index 22ba9d1..667156e 100644 --- a/docs/howto.md +++ b/docs/howto.md @@ -32,9 +32,26 @@ $sourceLocation = "C:\LocalChocolateyPackages" Register-PackageSource -ProviderName Chocolatey-OneGet -Name $expectedName -Location $sourceLocation ``` -Register package source supports all other options you can use from chocolatey command line. All options to register package source are optional. How to use the dynamic options see related documentation. Following example shows how to use the extra parameters +Register package source supports all other options you can use from chocolatey command line. All options to register package source are optional. How to use the dynamic options see related documentation. Following example shows how to use the extra parameters. ```powershell Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedName -Location $sourceLocation ` -Priority 10 -BypassProxy -AllowSelfService -VisibleToAdminsOnly -``` \ No newline at end of file +``` + +> **NOTE**: All additional parameters used in this provider follow the chocolatey command line options, so for more details about their usage values, refer directly to [chocolatey documentation](https://github.com/chocolatey/choco/wiki/CommandsReference). + +If your package source needs authenticate you can use credentials powershell object (as standard One-Get parameter) or crertificate via additional parameters. Both have the same behavior like chocolatey command line. + +```powershell +$credentials = Get-Credential +Register-PackageSource -ProviderName Chocolatey-OneGet -Name $expectedName -Location $sourceLocation -Credential $credentials +``` + +or if your source needs certificate based authentication + +```powershell +$certificate = "C:\Users\bob\Documents\bob.pfx" +$certificatePassword = "CertitificatePassword" +Register-PackageSource -ProviderName Chocolatey-OneGet -Name $expectedName -Location $sourceLocation -Certificate $certificate -CertificatePassword $certificatePassword +``` From be4b737c628ef8c89cf1fb94f080898c4691ed4d Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Tue, 10 Apr 2018 23:55:53 +0200 Subject: [PATCH 32/92] removed helpinfouri from manifest --- Chocolatey-OneGet.psd1 | Bin 3824 -> 3810 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Chocolatey-OneGet.psd1 b/Chocolatey-OneGet.psd1 index 58fd6def97a3915a92e57b327613084d0fad42c4..11b1d1d60389350b307ba808eeb45465c471e408 100644 GIT binary patch delta 94 zcmew$`$%>}52vp(g91Z2Ln@F=VaR95V<-W#iWy273V<-5p$NI@*60~F_F-~#G^K;_AuoQj({xL&XT0Nv3O8~^|S delta 23 fcmaDP`$2X?59j1NoN|+I@d!+g;0f8p^@s%kdsGQt From 63403a79bdf86e07d8aae3bc9c29a6e4663cf6ed Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 11 Apr 2018 00:02:14 +0200 Subject: [PATCH 33/92] changed formating of progress in readme.md --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index f85b719..4fa2a51 100644 --- a/README.md +++ b/README.md @@ -14,20 +14,20 @@ This part contains plain PowerShell implementation of the provider, development ### Progress -* Implement metadata - DONE -* Implement install able skeleton - DONE -* Prepare build and test infrastructure - DONE +* [x] Implement metadata +* [x] Implement install able skeleton +* [x] Prepare build and test infrastructure * API: - * Get-ProviderName - DONE - * Initialize-Provider - DONE - * Find-Package - TODO - * Install-Package - TODO - * Get-InstalledPackage - TODO - * UnInstall-Package - TODO - * Download-Package - TODO - * Resolve-PackageSource - TODO - * Add-PackageSource - IN PROGRESS - * Remove-PackageSource - TODO + * [x] Get-ProviderName + * [x] Initialize-Provider + * [] Find-Package + * [] Install-Package + * [] Get-InstalledPackage + * [] UnInstall-Package + * [] Download-Package + * [] Resolve-PackageSource + * [] Add-PackageSource - IN PROGRESS + * [] Remove-PackageSource ## C# implementation - OBSOLETE From a3635557ae04f7674c9ba8aa943626588737b854 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 11 Apr 2018 00:04:48 +0200 Subject: [PATCH 34/92] fixed formating of progress in readme.md --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 4fa2a51..e64780a 100644 --- a/README.md +++ b/README.md @@ -20,14 +20,14 @@ This part contains plain PowerShell implementation of the provider, development * API: * [x] Get-ProviderName * [x] Initialize-Provider - * [] Find-Package - * [] Install-Package - * [] Get-InstalledPackage - * [] UnInstall-Package - * [] Download-Package - * [] Resolve-PackageSource - * [] Add-PackageSource - IN PROGRESS - * [] Remove-PackageSource + * [ ] Find-Package + * [ ] Install-Package + * [ ] Get-InstalledPackage + * [ ] UnInstall-Package + * [ ] Download-Package + * [ ] Resolve-PackageSource - IN PROGRESS + * [x] Add-PackageSource + * [ ] Remove-PackageSource ## C# implementation - OBSOLETE From be9a35d803c2d645a5d9690f3f74fe25f1efcaf6 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 11 Apr 2018 20:54:15 +0200 Subject: [PATCH 35/92] Implemented Resolve-Package source --- Chocolatey-OneGet.psd1 | Bin 3810 -> 3826 bytes Chocolatey-OneGet.psm1 | 25 +++++++++++++++++++++++-- README.md | 8 ++++++-- Tests/ModuleTests.ps1 | 33 +++++++++++++++++++++++++++++---- docs/howto.md | 10 ++++++++++ 5 files changed, 68 insertions(+), 8 deletions(-) diff --git a/Chocolatey-OneGet.psd1 b/Chocolatey-OneGet.psd1 index 11b1d1d60389350b307ba808eeb45465c471e408..ee092174e17fd7064b13d6916984d7580749655c 100644 GIT binary patch delta 44 wcmaDP`$=}g2PSy~20aEt1`uh Date: Wed, 11 Apr 2018 21:13:58 +0200 Subject: [PATCH 36/92] Extended assert in list all sources test --- Tests/ModuleTests.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/ModuleTests.ps1 b/Tests/ModuleTests.ps1 index 5e59b2c..bac5419 100644 --- a/Tests/ModuleTests.ps1 +++ b/Tests/ModuleTests.ps1 @@ -94,7 +94,7 @@ Describe "Get package sources" { It "lists all registered sources" { $resolved = $registeredSources | Where-Object { $_.Name -eq $expectedSourceName } - $resolved | Should -Not -Be $Null + $resolved -ne $Null -and $registeredSources.Count -ge 2 | Should -Be $True } It "lists only sources by wildcard" { From 2d0b424b49b0729a50e04885a3b83cf926203279 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 11 Apr 2018 21:44:33 +0200 Subject: [PATCH 37/92] Fixed typos in howto.md --- docs/howto.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/howto.md b/docs/howto.md index 7e19607..135d134 100644 --- a/docs/howto.md +++ b/docs/howto.md @@ -39,7 +39,7 @@ Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedName -Loca -Priority 10 -BypassProxy -AllowSelfService -VisibleToAdminsOnly ``` -> **NOTE**: All additional parameters used in this provider follow the chocolatey command line options, so for more details about their usage values, refer directly to [chocolatey documentation](https://github.com/chocolatey/choco/wiki/CommandsReference). +> **NOTE**: All additional parameters used in this provider follow the chocolatey command line options, so for more details about their values usage, refer directly to [chocolatey documentation](https://github.com/chocolatey/choco/wiki/CommandsReference). If your package source needs authenticate you can use credentials powershell object (as standard One-Get parameter) or crertificate via additional parameters. Both have the same behavior like chocolatey command line. @@ -59,7 +59,7 @@ Register-PackageSource -ProviderName Chocolatey-OneGet -Name $expectedName -Loca ## 3. List registered package sources By default chocolatey installs default package source. When you install this provider only, no package source is added by default. Purpose for this is enterprice environment, where comapnies want to use their local package source only. Wildcards are supported in source names. When no filter is provided all sources are returned. -To see al already registered package sources +To see all already registered package sources ```powershell $filter = "*Company*" From 4b8db94e97dad57d4f970c72bfa8a550a88564aa Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 11 Apr 2018 22:27:20 +0200 Subject: [PATCH 38/92] Implemented Unregister-PackageSource --- Chocolatey-OneGet.psm1 | 16 +++++++++++++++- README.md | 8 ++++---- Tests/ModuleTests.ps1 | 25 +++++++++++++++++++++++-- docs/howto.md | 18 +++++++++++++----- 4 files changed, 55 insertions(+), 12 deletions(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index a78d34c..879d1cc 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -150,7 +150,21 @@ function Remove-PackageSource { $Name ) - #TODO + if([string]::IsNullOrEmpty($Name)) { + ThrowError "System.ArgumentException" "Source Name is required" + return + } + + $choco = Get-Chocolatey + $choco.Set({ + param($config) + + $config.CommandName = "source" + $config.SourceCommand.Command = [chocolatey.infrastructure.app.domain.SourceCommandType]::remove + $config.SourceCommand.Name = $Name + }); + + $choco.Run() } function Find-Package { diff --git a/README.md b/README.md index 4ad2462..80150e2 100644 --- a/README.md +++ b/README.md @@ -20,14 +20,14 @@ This part contains plain PowerShell implementation of the provider, development * API: * [x] Get-ProviderName * [x] Initialize-Provider - * [ ] Find-Package + * [x] Resolve-PackageSource + * [x] Add-PackageSource + * [x] Remove-PackageSource + * [ ] Find-Package - IN PROGRESS * [ ] Install-Package * [ ] Get-InstalledPackage * [ ] UnInstall-Package * [ ] Download-Package - * [x] Resolve-PackageSource - * [x] Add-PackageSource - * [ ] Remove-PackageSource - IN PROGRESS Not implemented * Trusted package sources diff --git a/Tests/ModuleTests.ps1 b/Tests/ModuleTests.ps1 index bac5419..04e4eac 100644 --- a/Tests/ModuleTests.ps1 +++ b/Tests/ModuleTests.ps1 @@ -5,6 +5,10 @@ $expectedCertificateSource = "Chocolatey-CertificateTestScriptRoot" # If import failed, chocolatey.dll is locked and is necessary to reload powershell Import-PackageProvider $chocolateyOneGet -force +function Get-ChocolateySource(){ + return choco source list | Where-Object { $_.Contains($expectedSourceName)} +} + Describe "Imported module" { $provider = Get-PackageProvider -Name $chocolateyOneGet @@ -23,7 +27,7 @@ Describe "Imported module" { } } -Describe "Added packages source" { +Describe "Add packages source" { BeforeAll { Invoke-Expression "choco source remove -n=$expectedSourceName" Invoke-Expression "choco source remove -n=$expectedCertificateSource" @@ -44,7 +48,7 @@ Describe "Added packages source" { Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedCertificateSource -Location $PSScriptRoot ` -Certificate "testCertificate" -CertificatePassword "testCertificatePassword" - $registeredSource = choco source list | Where-Object { $_.Contains($expectedSourceName)} + $registeredSource = Get-ChocolateySource It "is saved in choco" { $registeredSource | Should -Not -Be $Null @@ -101,4 +105,21 @@ Describe "Get package sources" { $resolved = $filteredSources | Where-Object { $_.Name -eq $expectedCertificateSource } $resolved.Count | Should -Be 1 } +} + +Describe "Unregister package source" { + BeforeAll { + Invoke-Expression "choco source add -n=$expectedSourceName -s=""$PSScriptRoot""" + } + + AfterAll { + Invoke-Expression "choco source remove -n=$expectedSourceName" + } + + Unregister-PackageSource -ProviderName Chocolatey-OneGet -Name $expectedSourceName + + It "is removed" { + $registeredSource = Get-ChocolateySource + $registeredSource | Should -Be $Null + } } \ No newline at end of file diff --git a/docs/howto.md b/docs/howto.md index 135d134..876a15d 100644 --- a/docs/howto.md +++ b/docs/howto.md @@ -27,15 +27,15 @@ Get-PackageProvider -Name Chocolatey-OneGet To register chocolatey source you need path (can be local path or http url) and name for the new source. ```powershell -$expectedName = "LocalProvider" +$sourceName = "LocalProvider" $sourceLocation = "C:\LocalChocolateyPackages" -Register-PackageSource -ProviderName Chocolatey-OneGet -Name $expectedName -Location $sourceLocation +Register-PackageSource -ProviderName Chocolatey-OneGet -Name $sourceName -Location $sourceLocation ``` Register package source supports all other options you can use from chocolatey command line. All options to register package source are optional. How to use the dynamic options see related documentation. Following example shows how to use the extra parameters. ```powershell -Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedName -Location $sourceLocation ` +Register-PackageSource -ProviderName $chocolateyOneGet -Name $sourceName -Location $sourceLocation ` -Priority 10 -BypassProxy -AllowSelfService -VisibleToAdminsOnly ``` @@ -45,7 +45,7 @@ If your package source needs authenticate you can use credentials powershell obj ```powershell $credentials = Get-Credential -Register-PackageSource -ProviderName Chocolatey-OneGet -Name $expectedName -Location $sourceLocation -Credential $credentials +Register-PackageSource -ProviderName Chocolatey-OneGet -Name $sourceName -Location $sourceLocation -Credential $credentials ``` or if your source needs certificate based authentication @@ -53,7 +53,7 @@ or if your source needs certificate based authentication ```powershell $certificate = "C:\Users\bob\Documents\bob.pfx" $certificatePassword = "CertitificatePassword" -Register-PackageSource -ProviderName Chocolatey-OneGet -Name $expectedName -Location $sourceLocation -Certificate $certificate -CertificatePassword $certificatePassword +Register-PackageSource -ProviderName Chocolatey-OneGet -Name $sourceName -Location $sourceLocation -Certificate $certificate -CertificatePassword $certificatePassword ``` ## 3. List registered package sources @@ -65,3 +65,11 @@ To see all already registered package sources $filter = "*Company*" Get-PackageSource -ProviderName Chocolatey-OneGet $filter ``` + +## 4. Unregister package source + +To remove package source, you only need to know the source name. Package source can be simply removed by + +```powershell +Unregister-PackageSource -ProviderName Chocolatey-OneGet -Name $sourceName +``` \ No newline at end of file From bdd2adc2c260b7dd93e1daba52d01d8d2473f4f6 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Thu, 12 Apr 2018 18:46:37 +0200 Subject: [PATCH 39/92] Added documentation for offline install --- docs/howto.md | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/docs/howto.md b/docs/howto.md index 876a15d..e49bbc4 100644 --- a/docs/howto.md +++ b/docs/howto.md @@ -2,20 +2,40 @@ ## 1. Install the module -You can install the module from PowershellGet online repository: +> **NOTE:** This module requires chocolatey application to be installed. + +To install the provider follow one of these scenarios + +### Online install + +You can install the module directly from PowershellGet online repository: ```powershell Import-Module -Name PackageManagement Install-Module -Name Chocolatey-OneGet +Import-Module Chocolatey-OneGet +Import-PackageProvider -Name Chocolatey-OneGet ``` -You can also copy the provider directory to your modules folder, when the online galery isnt available (usually "$home\WindowsPowerShell\Modules"). +### Offline install + +1. Download chocolatey package from https://chocolatey.org/packages/chocolatey +2. Download Chocolatey-OneGet provider package from ```TODO add link``` +3. Execute following script from current directory, where the downloaded files reside ```powershell +Copy-Item .\chocolatey.0.10.9.nupkg chocolatey.0.10.9.zip +Expand-Archive .\chocolatey.0.10.9.zip +.\chocolatey.0.10.9\tools\chocolateyInstall.ps1 +Register-PackageSource -ProviderName PowerShellGet -Name Downloaded -Location $pwd +Install-Package chocolatey-oneget -Source Downloaded +Unregister-PackageSource -ProviderName PowerShellGet Downloaded Import-Module Chocolatey-OneGet Import-PackageProvider -Name Chocolatey-OneGet ``` +> **NOTE:** If chocolatey is already installed, it is enough to copy the provider directory to your modules folder (usually "$HOME\Documents\WindowsPowerShell\Modules\"). + To verify the provider is available: ```powershell @@ -39,7 +59,7 @@ Register-PackageSource -ProviderName $chocolateyOneGet -Name $sourceName -Locati -Priority 10 -BypassProxy -AllowSelfService -VisibleToAdminsOnly ``` -> **NOTE**: All additional parameters used in this provider follow the chocolatey command line options, so for more details about their values usage, refer directly to [chocolatey documentation](https://github.com/chocolatey/choco/wiki/CommandsReference). +> **NOTE:** All additional parameters used in this provider follow the chocolatey command line options, so for more details about their values usage, refer directly to [chocolatey documentation](https://github.com/chocolatey/choco/wiki/CommandsReference). If your package source needs authenticate you can use credentials powershell object (as standard One-Get parameter) or crertificate via additional parameters. Both have the same behavior like chocolatey command line. From 144db1ee6ede5504e075e83f8260b6b4b98232b1 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Thu, 12 Apr 2018 19:21:31 +0200 Subject: [PATCH 40/92] Added option to find package source by location --- Build/psakefile.ps1 | 2 +- Chocolatey-OneGet.psm1 | 2 +- Tests/{ModuleTests.ps1 => Module.Tests.ps1} | 15 +++++++++------ 3 files changed, 11 insertions(+), 8 deletions(-) rename Tests/{ModuleTests.ps1 => Module.Tests.ps1} (88%) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index df240c5..1024e9c 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -58,7 +58,7 @@ Task Import-CompiledModule { Task Test -Depends Import-CompiledModule { # Run Pester tests - $testResults = Invoke-Pester ..\Tests\ModuleTests.ps1 -PassThru -TestName $testsFilter + $testResults = Invoke-Pester ../Tests/* -PassThru -TestName $testsFilter if ($testResults.FailedCount -gt 0) { Write-Error -Message 'One or more Pester tests failed!' diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 879d1cc..82c5ef8 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -67,7 +67,7 @@ function Resolve-PackageSource { } $wildcardPattern = New-Object System.Management.Automation.WildcardPattern $pattern, $script:wildcardOptions - $filtered = $registered | Where-Object { $wildcardPattern.IsMatch($_.Id) } + $filtered = $registered | Where-Object { $wildcardPattern.IsMatch($_.Id) -or $wildcardPattern.IsMatch($_.Value) } ForEach($source in $filtered){ $packageSource = New-PackageSource -Name $source.Id -Location $source.Value -Trusted $False -Registered $True diff --git a/Tests/ModuleTests.ps1 b/Tests/Module.Tests.ps1 similarity index 88% rename from Tests/ModuleTests.ps1 rename to Tests/Module.Tests.ps1 index 04e4eac..d253369 100644 --- a/Tests/ModuleTests.ps1 +++ b/Tests/Module.Tests.ps1 @@ -3,7 +3,7 @@ $expectedSourceName = "Chocolatey-TestScriptRoot" $expectedCertificateSource = "Chocolatey-CertificateTestScriptRoot" # If import failed, chocolatey.dll is locked and is necessary to reload powershell -Import-PackageProvider $chocolateyOneGet -force +# Import-PackageProvider $chocolateyOneGet -force function Get-ChocolateySource(){ return choco source list | Where-Object { $_.Contains($expectedSourceName)} @@ -93,18 +93,22 @@ Describe "Get package sources" { Invoke-Expression "choco source remove -n=$expectedCertificateSource" } - $registeredSources = Get-PackageSource -ProviderName $chocolateyOneGet - $filteredSources = Get-PackageSource -ProviderName $chocolateyOneGet $expectedCertificateSource* - It "lists all registered sources" { + $registeredSources = Get-PackageSource -ProviderName $chocolateyOneGet $resolved = $registeredSources | Where-Object { $_.Name -eq $expectedSourceName } $resolved -ne $Null -and $registeredSources.Count -ge 2 | Should -Be $True } It "lists only sources by wildcard" { + $filteredSources = Get-PackageSource -ProviderName $chocolateyOneGet $expectedCertificateSource* $resolved = $filteredSources | Where-Object { $_.Name -eq $expectedCertificateSource } $resolved.Count | Should -Be 1 } + + It "lists sources by location" { + $byPathSources = Get-PackageSource -ProviderName $chocolateyOneGet -Location $PSScriptRoot + $byPathSources.Count | Should -Be 2 + } } Describe "Unregister package source" { @@ -116,9 +120,8 @@ Describe "Unregister package source" { Invoke-Expression "choco source remove -n=$expectedSourceName" } - Unregister-PackageSource -ProviderName Chocolatey-OneGet -Name $expectedSourceName - It "is removed" { + Unregister-PackageSource -ProviderName Chocolatey-OneGet -Name $expectedSourceName $registeredSource = Get-ChocolateySource $registeredSource | Should -Be $Null } From 56b39de26318e3ccc0421d61f17670ad1a25d794 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Thu, 12 Apr 2018 19:52:34 +0200 Subject: [PATCH 41/92] Added test package skeleton --- Build/psakefile.ps1 | 9 ++++++++- TestPackage/TestPackage.nuspec | 13 +++++++++++++ TestPackage/tools/chocolateyinstall.ps1 | 1 + TestPackage/tools/chocolateyuninstall.ps1 | 1 + 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 TestPackage/TestPackage.nuspec create mode 100644 TestPackage/tools/chocolateyinstall.ps1 create mode 100644 TestPackage/tools/chocolateyuninstall.ps1 diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index 1024e9c..04f6730 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -13,7 +13,8 @@ Task Build -Depends ` Clean,` Restore-Packages,` Register-OutputRepository, ` - Compile + Compile, ` + Compile-TestPackage Task Restore-Packages { Exec { @@ -56,6 +57,12 @@ Task Import-CompiledModule { } } +Task Compile-TestPackage { + Exec { + choco pack ..\TestPackage\TestPackage.nuspec --outputdirectory $targetFolder + } +} + Task Test -Depends Import-CompiledModule { # Run Pester tests $testResults = Invoke-Pester ../Tests/* -PassThru -TestName $testsFilter diff --git a/TestPackage/TestPackage.nuspec b/TestPackage/TestPackage.nuspec new file mode 100644 index 0000000..51ca2c4 --- /dev/null +++ b/TestPackage/TestPackage.nuspec @@ -0,0 +1,13 @@ + + + + TestPackage + 1.0.1 + TestPackage + TestPackage + TestPackage for Chocolatey oneget package provider + + + + + diff --git a/TestPackage/tools/chocolateyinstall.ps1 b/TestPackage/tools/chocolateyinstall.ps1 new file mode 100644 index 0000000..342cb74 --- /dev/null +++ b/TestPackage/tools/chocolateyinstall.ps1 @@ -0,0 +1 @@ +# This is empty, since we really install nothing \ No newline at end of file diff --git a/TestPackage/tools/chocolateyuninstall.ps1 b/TestPackage/tools/chocolateyuninstall.ps1 new file mode 100644 index 0000000..342cb74 --- /dev/null +++ b/TestPackage/tools/chocolateyuninstall.ps1 @@ -0,0 +1 @@ +# This is empty, since we really install nothing \ No newline at end of file From 0a2de0b5219446d23873166995cd7639f1255f06 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 13 Apr 2018 22:22:54 +0200 Subject: [PATCH 42/92] Added skeleton of Find-Package --- Chocolatey-OneGet.psm1 | 37 ++++++++++++++++++++++++++++++++++++- Tests/Module.Tests.ps1 | 19 +++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 82c5ef8..5aa627a 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -182,8 +182,43 @@ function Find-Package { [string] $MaximumVersion ) + + # if(-Not $Name){ + # $Name = "" + # } - #TODO + $source = "" + if(-Not [String]::IsNullOrEmpty($Request.PackageSources)){ + $source = [String]::Join(";", $Request.PackageSources) + } + + $choco = Get-Chocolatey + $choco.Set({ + param($config) + + $config.CommandName = "list" + $config.Input = $Name + $config.Sources = $source + + if(-Not $RequiredVersion){ + #$config.Version = $RequiredVersion + } + + #$config.AllVersions = $True + }) + + $method = $choco.GetType().GetMethod("List") + $gMethod = $method.MakeGenericMethod([chocolatey.infrastructure.results.PackageResult]) + $packages = $gMethod.Invoke($choco, $Null) + + foreach($found in $packages){ + if($request.IsCanceled) { + return + } + + $identity = New-SoftwareIdentity "fastPackageReference" $found.Name $found.Version "semver" $source $found.Description + Write-Output $identity + } } function Get-InstalledPackage { diff --git a/Tests/Module.Tests.ps1 b/Tests/Module.Tests.ps1 index d253369..ce2ddc7 100644 --- a/Tests/Module.Tests.ps1 +++ b/Tests/Module.Tests.ps1 @@ -1,6 +1,7 @@ $chocolateyOneGet = "Chocolatey-OneGet" $expectedSourceName = "Chocolatey-TestScriptRoot" $expectedCertificateSource = "Chocolatey-CertificateTestScriptRoot" +$testPackageName = "TestPackage" # If import failed, chocolatey.dll is locked and is necessary to reload powershell # Import-PackageProvider $chocolateyOneGet -force @@ -125,4 +126,22 @@ Describe "Unregister package source" { $registeredSource = Get-ChocolateySource $registeredSource | Should -Be $Null } +} + +Describe "Find package" { + BeforeAll { + $buildOutput = Join-Path $PSScriptRoot "..\Build\Output" + $buildOutput = $(Resolve-Path $buildOutput).Path + Invoke-Expression "choco source add -n=""$expectedSourceName"" -s=""$buildOutput""" + } + + AfterAll { + Invoke-Expression "choco source remove -n=$expectedSourceName" + } + + It "finds all packages" { + # TODO no package sources use case - chocolatey expects source + $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Source $expectedSourceName -Verbose + $found.Count | Should -Be 1 # there are two, but only one fits the criteria + } } \ No newline at end of file From 5d95d67bcc52b20137d91f49c3e3abfe2ebee66b Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 13 Apr 2018 22:24:23 +0200 Subject: [PATCH 43/92] Added Find-Package skeleton --- Build/psakefile.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index 04f6730..285ed0f 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -2,7 +2,7 @@ $targetFolder = Join-Path $PSScriptRoot "Output" $moduleName = "Chocolatey-OneGet" $moduleFolder = Join-Path $targetFolder $moduleName $outputRepository = "$moduleName-OutputRepository" -$testsFilter = "*" # all by default +$testsFilter = "Find package" # all by default Task Default -Depends ` Build,` From e5c42eb513793411952640dface1acd8c292995b Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Mon, 16 Apr 2018 20:56:49 +0200 Subject: [PATCH 44/92] Added more test cases for Find-Package --- Build/psakefile.ps1 | 7 +++++-- Tests/Module.Tests.ps1 | 33 ++++++++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index 285ed0f..95f7499 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -43,7 +43,7 @@ Task Clean-OutputRepository { } Task Register-OutputRepository { - mkdir "$targetFolder\$moduleName" -ErrorAction SilentlyContinue | Out-Null + mkdir "$targetFolder\$moduleName" | Out-Null if((Get-PSRepository | Where-Object { $_.Name -eq $outputRepository}) -eq $null){ Register-PSRepository -Name $outputRepository -SourceLocation $targetFolder -PublishLocation $targetFolder -InstallationPolicy Trusted | Out-Null @@ -58,8 +58,11 @@ Task Import-CompiledModule { } Task Compile-TestPackage { + $testPackages = Join-Path $targetFolder "TestPackages" + mkdir $testPackages | Out-Null + Exec { - choco pack ..\TestPackage\TestPackage.nuspec --outputdirectory $targetFolder + choco pack ..\TestPackage\TestPackage.nuspec --outputdirectory $testPackages } } diff --git a/Tests/Module.Tests.ps1 b/Tests/Module.Tests.ps1 index ce2ddc7..e5ec070 100644 --- a/Tests/Module.Tests.ps1 +++ b/Tests/Module.Tests.ps1 @@ -130,7 +130,7 @@ Describe "Unregister package source" { Describe "Find package" { BeforeAll { - $buildOutput = Join-Path $PSScriptRoot "..\Build\Output" + $buildOutput = Join-Path $PSScriptRoot "..\Build\Output\TestPackages" $buildOutput = $(Resolve-Path $buildOutput).Path Invoke-Expression "choco source add -n=""$expectedSourceName"" -s=""$buildOutput""" } @@ -139,9 +139,32 @@ Describe "Find package" { Invoke-Expression "choco source remove -n=$expectedSourceName" } - It "finds all packages" { - # TODO no package sources use case - chocolatey expects source - $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Source $expectedSourceName -Verbose - $found.Count | Should -Be 1 # there are two, but only one fits the criteria + It "finds package in Source" { + $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Source $expectedSourceName + $found.Count | Should -Be 1 + } + + It "finds all packages from all sources" -Skip { + $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet + $found.Count | Should -Be 2 + } + + It "finds package by min. version" -Skip { + + } + + It "finds package by max. version" -Skip { + + } + + It "finds package by required version" -Skip { + + } + + It "finds package by tags" -Skip { + + } + + It "finds prerelease version package" -Skip { } } \ No newline at end of file From 03c1a493ce5d85658b0a116ddf986294494e45f7 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Tue, 17 Apr 2018 00:18:28 +0200 Subject: [PATCH 45/92] Added multiple package sources to Find-Package --- Build/psakefile.ps1 | 2 +- Chocolatey-OneGet.psm1 | 15 +++++++-------- Tests/Module.Tests.ps1 | 4 ++-- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index 95f7499..0e47753 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -2,7 +2,7 @@ $targetFolder = Join-Path $PSScriptRoot "Output" $moduleName = "Chocolatey-OneGet" $moduleFolder = Join-Path $targetFolder $moduleName $outputRepository = "$moduleName-OutputRepository" -$testsFilter = "Find package" # all by default +$testsFilter = "*" # all by default Task Default -Depends ` Build,` diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 5aa627a..5b19832 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -182,15 +182,14 @@ function Find-Package { [string] $MaximumVersion ) - - # if(-Not $Name){ - # $Name = "" - # } - $source = "" - if(-Not [String]::IsNullOrEmpty($Request.PackageSources)){ - $source = [String]::Join(";", $Request.PackageSources) + $sourceNames = $Request.PackageSources + + if($Request.PackageSources.Count -eq 0){ + $sourceNames = Resolve-PackageSource | Select-Object Name } + + $source = [String]::Join(";", $sourceNames) $choco = Get-Chocolatey $choco.Set({ @@ -200,7 +199,7 @@ function Find-Package { $config.Input = $Name $config.Sources = $source - if(-Not $RequiredVersion){ + if($Null -eq $RequiredVersion){ #$config.Version = $RequiredVersion } diff --git a/Tests/Module.Tests.ps1 b/Tests/Module.Tests.ps1 index e5ec070..10180d4 100644 --- a/Tests/Module.Tests.ps1 +++ b/Tests/Module.Tests.ps1 @@ -144,9 +144,9 @@ Describe "Find package" { $found.Count | Should -Be 1 } - It "finds all packages from all sources" -Skip { + It "finds package from all sources" -Skip { $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet - $found.Count | Should -Be 2 + $found.Count | Should -Be 1 } It "finds package by min. version" -Skip { From 3f89911086774e36148da859cc10b049c0cef174 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 18 Apr 2018 20:41:47 +0200 Subject: [PATCH 46/92] Fixed Find-Package from all sources --- Build/psakefile.ps1 | 25 ++++++++++++++----------- Chocolatey-OneGet.psm1 | 26 +++++++++++++++----------- Tests/Module.Tests.ps1 | 2 +- 3 files changed, 30 insertions(+), 23 deletions(-) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index 0e47753..f22b641 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -2,7 +2,7 @@ $targetFolder = Join-Path $PSScriptRoot "Output" $moduleName = "Chocolatey-OneGet" $moduleFolder = Join-Path $targetFolder $moduleName $outputRepository = "$moduleName-OutputRepository" -$testsFilter = "*" # all by default +$testsFilter = "Find package" # all by default Task Default -Depends ` Build,` @@ -14,6 +14,7 @@ Task Build -Depends ` Restore-Packages,` Register-OutputRepository, ` Compile, ` + PublishTo-OutputRepository, ` Compile-TestPackage Task Restore-Packages { @@ -34,8 +35,6 @@ Task Compile { Copy-Item -Path "..\$moduleName.psm1" -Destination "$moduleFolder\$moduleName.psm1" -Force Copy-Item -Path "..\packages\chocolatey.lib\lib\chocolatey.dll" -Destination "$moduleFolder\chocolatey.dll" -Force Copy-Item -Path "..\packages\log4net\lib\net40-client\log4net.dll" -Destination "$moduleFolder\log4net.dll" -Force - - Publish-Module -Path $moduleFolder -Repository $outputRepository -Force } Task Clean-OutputRepository { @@ -50,13 +49,6 @@ Task Register-OutputRepository { } } -Task Import-CompiledModule { - if((Get-Module -Name $moduleName) -eq $null){ - Install-Module $moduleName -Repository $outputRepository -Force -AllowClobber -Scope "CurrentUser" - Import-Module $moduleName -Force -Scope Local - } -} - Task Compile-TestPackage { $testPackages = Join-Path $targetFolder "TestPackages" mkdir $testPackages | Out-Null @@ -66,6 +58,13 @@ Task Compile-TestPackage { } } +Task Import-CompiledModule { + if((Get-Module -Name $moduleName) -eq $null){ + Install-Module $moduleName -Repository $outputRepository -Force -AllowClobber -Scope "CurrentUser" + Import-Module $moduleName -Force -Scope Local + } +} + Task Test -Depends Import-CompiledModule { # Run Pester tests $testResults = Invoke-Pester ../Tests/* -PassThru -TestName $testsFilter @@ -75,7 +74,11 @@ Task Test -Depends Import-CompiledModule { } } +Task PublishTo-OutputRepository { + Publish-Module -Path $moduleFolder -Repository $outputRepository -Force +} + Task Publish { - # nugetApi key needs to beprovided by chocolatey owners + # nugetApi key needs to be provided by chocolatey owners Publish-Module -Path $moduleFolder -NuGetApiKey "" } \ No newline at end of file diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 5b19832..146eb76 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -42,14 +42,16 @@ function Get-DynamicOptions{ } function Resolve-PackageSource { - $SourceName = $request.PackageSources + $SourceNames = $request.PackageSources - if(-not $SourceName) { - $SourceName = "*" + if($SourceNames.Count -eq 0) { + $SourceNames += "*" } $choco = Get-Chocolatey - $choco.Set({ + # fluent API of Set method returns it self, + # without assignment it is written as output object and break Find-Package + $choco = $choco.Set({ param($config) $config.CommandName = "source" @@ -61,7 +63,7 @@ function Resolve-PackageSource { $gMethod = $method.MakeGenericMethod([chocolatey.infrastructure.app.configuration.ChocolateySource]) $registered = $gMethod.Invoke($choco, $Null) - foreach($pattern in $SourceName){ + foreach($pattern in $SourceNames){ if($request.IsCanceled) { return; } @@ -107,7 +109,7 @@ function Add-PackageSource { $certificatePassword = ParseDynamicOption $optionCertificatePassword "" $choco = Get-Chocolatey - $choco.Set({ + $choco = $choco.Set({ param($config) $config.CommandName = "source" @@ -156,7 +158,7 @@ function Remove-PackageSource { } $choco = Get-Chocolatey - $choco.Set({ + $choco = $choco.Set({ param($config) $config.CommandName = "source" @@ -185,14 +187,16 @@ function Find-Package { $sourceNames = $Request.PackageSources - if($Request.PackageSources.Count -eq 0){ - $sourceNames = Resolve-PackageSource | Select-Object Name + if($sourceNames.Count -eq 0){ + Resolve-PackageSource | ForEach-Object{ + $sourceNames += $_.Name + } } $source = [String]::Join(";", $sourceNames) - + $choco = Get-Chocolatey - $choco.Set({ + $choco = $choco.Set({ param($config) $config.CommandName = "list" diff --git a/Tests/Module.Tests.ps1 b/Tests/Module.Tests.ps1 index 10180d4..0980069 100644 --- a/Tests/Module.Tests.ps1 +++ b/Tests/Module.Tests.ps1 @@ -144,7 +144,7 @@ Describe "Find package" { $found.Count | Should -Be 1 } - It "finds package from all sources" -Skip { + It "finds package from all sources" { $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet $found.Count | Should -Be 1 } From 80e73a96c7425281c47e45a81539e00fb67543f1 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 18 Apr 2018 22:12:37 +0200 Subject: [PATCH 47/92] Fixed chocolatey.dll unable to reload config file to make tests independent and not need to reload powershell --- Build/psakefile.ps1 | 28 +++++++++++++++------ Tests/Module.Tests.ps1 | 57 +++++++++++++++++++++++++----------------- 2 files changed, 55 insertions(+), 30 deletions(-) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index f22b641..c287288 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -2,7 +2,9 @@ $targetFolder = Join-Path $PSScriptRoot "Output" $moduleName = "Chocolatey-OneGet" $moduleFolder = Join-Path $targetFolder $moduleName $outputRepository = "$moduleName-OutputRepository" -$testsFilter = "Find package" # all by default +$installedModule = "$home\Documents\WindowsPowerShell\Modules\$moduleName" +$moduleVersion = "0.10.9" +$testsFilter = "*" # all by default Task Default -Depends ` Build,` @@ -26,15 +28,11 @@ Task Restore-Packages { Task Clean { Remove-Item $targetFolder -Force -Recurse -ErrorAction SilentlyContinue # This needs to kill the Visual Studio code powershell instance, otherwise the chocolatey.dll is locked. - $installedModule = "$home\Documents\WindowsPowerShell\Modules\$moduleName" Remove-Item $installedModule -Force -Recurse -ErrorAction SilentlyContinue } Task Compile { - Copy-Item -Path "..\$moduleName.psd1" -Destination "$moduleFolder\$moduleName.psd1" -Force - Copy-Item -Path "..\$moduleName.psm1" -Destination "$moduleFolder\$moduleName.psm1" -Force - Copy-Item -Path "..\packages\chocolatey.lib\lib\chocolatey.dll" -Destination "$moduleFolder\chocolatey.dll" -Force - Copy-Item -Path "..\packages\log4net\lib\net40-client\log4net.dll" -Destination "$moduleFolder\log4net.dll" -Force + Copy-ToTargetFolder $moduleFolder } Task Clean-OutputRepository { @@ -60,7 +58,10 @@ Task Compile-TestPackage { Task Import-CompiledModule { if((Get-Module -Name $moduleName) -eq $null){ - Install-Module $moduleName -Repository $outputRepository -Force -AllowClobber -Scope "CurrentUser" + # equivalent to: Install-Module $moduleName -Repository $outputRepository -Force -AllowClobber -Scope "CurrentUser" + $targetFolder = Join-Path $installedModule $moduleVersion + Copy-ToTargetFolder $targetFolder + Import-Module $moduleName -Force -Scope Local } } @@ -81,4 +82,17 @@ Task PublishTo-OutputRepository { Task Publish { # nugetApi key needs to be provided by chocolatey owners Publish-Module -Path $moduleFolder -NuGetApiKey "" +} + +function Copy-ToTargetFolder(){ + param([String]$targetFolder) + + if(-Not (Test-Path $targetFolder)){ + mkdir $targetFolder | Out-Null + } + + Copy-Item -Path "..\$moduleName.psd1" -Destination "$targetFolder\$moduleName.psd1" -Force + Copy-Item -Path "..\$moduleName.psm1" -Destination "$targetFolder\$moduleName.psm1" -Force + Copy-Item -Path "..\packages\chocolatey.lib\lib\chocolatey.dll" -Destination "$targetFolder\chocolatey.dll" -Force + Copy-Item -Path "..\packages\log4net\lib\net40-client\log4net.dll" -Destination "$targetFolder\log4net.dll" -Force } \ No newline at end of file diff --git a/Tests/Module.Tests.ps1 b/Tests/Module.Tests.ps1 index 0980069..23db2b7 100644 --- a/Tests/Module.Tests.ps1 +++ b/Tests/Module.Tests.ps1 @@ -10,6 +10,26 @@ function Get-ChocolateySource(){ return choco source list | Where-Object { $_.Contains($expectedSourceName)} } +function Clean-Sources (){ + Invoke-Expression "choco source remove -n=$expectedSourceName" + Invoke-Expression "choco source remove -n=$expectedCertificateSource" + # because chocolatey.dll is unable to reload config file, we need to clean up manually + UnRegister-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -ErrorAction SilentlyContinue | Out-Null + Unregister-PackageSource -ProviderName $chocolateyOneGet -Name $expectedCertificateSource -ErrorAction SilentlyContinue | Out-Null +} + +function Register-TestPackageSources(){ + $userPassword = "UserPassword" | ConvertTo-SecureString -AsPlainText -Force + $credentials = new-object -typename System.Management.Automation.PSCredential -argumentlist "UserName", $userPassword + + Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $PSScriptRoot ` + -Priority 10 -BypassProxy -AllowSelfService -VisibleToAdminsOnly ` + -Credential $credentials + + Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedCertificateSource -Location $PSScriptRoot ` + -Certificate "testCertificate" -CertificatePassword "testCertificatePassword" +} + Describe "Imported module" { $provider = Get-PackageProvider -Name $chocolateyOneGet @@ -30,24 +50,14 @@ Describe "Imported module" { Describe "Add packages source" { BeforeAll { - Invoke-Expression "choco source remove -n=$expectedSourceName" - Invoke-Expression "choco source remove -n=$expectedCertificateSource" + Clean-Sources } AfterAll { - Invoke-Expression "choco source remove -n=$expectedSourceName" - Invoke-Expression "choco source remove -n=$expectedCertificateSource" + Clean-Sources } - $userPassword = "UserPassword" | ConvertTo-SecureString -AsPlainText -Force - $credentials = new-object -typename System.Management.Automation.PSCredential -argumentlist "UserName", $userPassword - - Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $PSScriptRoot ` - -Priority 10 -BypassProxy -AllowSelfService -VisibleToAdminsOnly ` - -Credential $credentials - - Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedCertificateSource -Location $PSScriptRoot ` - -Certificate "testCertificate" -CertificatePassword "testCertificatePassword" + Register-TestPackageSources $registeredSource = Get-ChocolateySource @@ -84,14 +94,13 @@ Describe "Add packages source" { } Describe "Get package sources" { - BeforeAll { - Invoke-Expression "choco source add -n=$expectedSourceName -s=""$PSScriptRoot""" - Invoke-Expression "choco source add -n=$expectedCertificateSource -s=""$PSScriptRoot""" + BeforeAll { + Clean-Sources + Register-TestPackageSources } AfterAll { - Invoke-Expression "choco source remove -n=$expectedSourceName" - Invoke-Expression "choco source remove -n=$expectedCertificateSource" + Clean-Sources } It "lists all registered sources" { @@ -114,15 +123,16 @@ Describe "Get package sources" { Describe "Unregister package source" { BeforeAll { - Invoke-Expression "choco source add -n=$expectedSourceName -s=""$PSScriptRoot""" + Clean-Sources + Register-TestPackageSources } AfterAll { - Invoke-Expression "choco source remove -n=$expectedSourceName" + Clean-Sources } It "is removed" { - Unregister-PackageSource -ProviderName Chocolatey-OneGet -Name $expectedSourceName + Unregister-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName $registeredSource = Get-ChocolateySource $registeredSource | Should -Be $Null } @@ -130,13 +140,14 @@ Describe "Unregister package source" { Describe "Find package" { BeforeAll { + Clean-Sources $buildOutput = Join-Path $PSScriptRoot "..\Build\Output\TestPackages" $buildOutput = $(Resolve-Path $buildOutput).Path - Invoke-Expression "choco source add -n=""$expectedSourceName"" -s=""$buildOutput""" + Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $buildOutput } AfterAll { - Invoke-Expression "choco source remove -n=$expectedSourceName" + Clean-Sources } It "finds package in Source" { From 4b79cda6f5f0ef07e3e6954a3e4a1e9ad61c1173 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Thu, 19 Apr 2018 22:00:10 +0200 Subject: [PATCH 48/92] Added Helpers file --- Chocolatey-Helpers.psm1 | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Chocolatey-Helpers.psm1 diff --git a/Chocolatey-Helpers.psm1 b/Chocolatey-Helpers.psm1 new file mode 100644 index 0000000..8c97464 --- /dev/null +++ b/Chocolatey-Helpers.psm1 @@ -0,0 +1,14 @@ +function IsChocolateyInstalled() { + $script:chocolateyDir = $null + if ($env:ChocolateyInstall -ne $null) { + $script:chocolateyDir = $env:ChocolateyInstall; + } + elseif (Test-Path (Join-Path $env:SYSTEMDRIVE Chocolatey)) { + $script:chocolateyDir = Join-Path $env:SYSTEMDRIVE Chocolatey; + } + elseif (Test-Path (Join-Path ([Environment]::GetFolderPath("CommonApplicationData")) Chocolatey)) { + $script:chocolateyDir = Join-Path ([Environment]::GetFolderPath("CommonApplicationData")) Chocolatey; + } + + Test-Path -Path $script:chocolateyDir; +} \ No newline at end of file From 6d13c78e05967d554712f68f6567af5385e7866e Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Thu, 19 Apr 2018 22:09:42 +0200 Subject: [PATCH 49/92] Added function to register default chocolatey source --- Chocolatey-Helpers.psm1 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Chocolatey-Helpers.psm1 b/Chocolatey-Helpers.psm1 index 8c97464..e9132fd 100644 --- a/Chocolatey-Helpers.psm1 +++ b/Chocolatey-Helpers.psm1 @@ -11,4 +11,8 @@ function IsChocolateyInstalled() { } Test-Path -Path $script:chocolateyDir; +} + +function Register-ChocoDefaultSource(){ + Register-PackageSource -ProviderName chocolatey-oneget -Name choco -Location https://chocolatey.org/api/v2/ } \ No newline at end of file From 1219a3708d286cb0b01be388fa7d0e96c2963a2f Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Thu, 19 Apr 2018 23:57:16 +0200 Subject: [PATCH 50/92] Added Find-Package by Tags --- Chocolatey-OneGet.psm1 | 22 ++++++++++++++++++++-- TestPackage/TestPackage.nuspec | 1 + Tests/Module.Tests.ps1 | 12 ++++++++---- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 146eb76..398cf16 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -4,6 +4,7 @@ $optionAllowSelfService = "AllowSelfService" $optionVisibleToAdminsOnly = "VisibleToAdminsOnly" $optionCertificate = "Certificate" $optionCertificatePassword = "CertificatePassword" +$optionTags = "Tag" $script:wildcardOptions = [System.Management.Automation.WildcardOptions]::CultureInvariant -bor ` [System.Management.Automation.WildcardOptions]::IgnoreCase @@ -38,6 +39,10 @@ function Get-DynamicOptions{ Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionCertificate -ExpectedType string -IsRequired $false) Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionCertificatePassword -ExpectedType string -IsRequired $false) } + + Package { + Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionTags -ExpectedType StringArray -IsRequired $false) + } } } @@ -186,6 +191,7 @@ function Find-Package { ) $sourceNames = $Request.PackageSources + $tags = ParseDynamicOption $optionTags @() if($sourceNames.Count -eq 0){ Resolve-PackageSource | ForEach-Object{ @@ -217,9 +223,21 @@ function Find-Package { foreach($found in $packages){ if($request.IsCanceled) { return - } + } + + # Choco has different usage fo the tag filtering option + $packageTags = $found.Package.Tags + $tagFound = $tags.Count -eq 0 + + foreach($tag in $tags){ + $tagFound = $tagFound -or $packageTags.Contains($tag) + } + + if(-Not $tagFound){ + continue + } - $identity = New-SoftwareIdentity "fastPackageReference" $found.Name $found.Version "semver" $source $found.Description + $identity = New-SoftwareIdentity "fastPackageReference" $found.Name $found.Version "semver" $source $found.Description Write-Output $identity } } diff --git a/TestPackage/TestPackage.nuspec b/TestPackage/TestPackage.nuspec index 51ca2c4..f393d5f 100644 --- a/TestPackage/TestPackage.nuspec +++ b/TestPackage/TestPackage.nuspec @@ -6,6 +6,7 @@ TestPackage TestPackage TestPackage for Chocolatey oneget package provider + TagA TagB diff --git a/Tests/Module.Tests.ps1 b/Tests/Module.Tests.ps1 index 23db2b7..78cb502 100644 --- a/Tests/Module.Tests.ps1 +++ b/Tests/Module.Tests.ps1 @@ -155,11 +155,16 @@ Describe "Find package" { $found.Count | Should -Be 1 } - It "finds package from all sources" { + It "finds package from all sources" { $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet $found.Count | Should -Be 1 } + It "finds package by tags" { + $found = PackageManagement\Find-Package -ProviderName $chocolateyOneGet -Tag @("TagC", "TagA") -Debug + $found.Count | Should -Be 1 + } + It "finds package by min. version" -Skip { } @@ -172,10 +177,9 @@ Describe "Find package" { } - It "finds package by tags" -Skip { - + It "finds prerelease versions" -Skip { } - It "finds prerelease version package" -Skip { + It "finds all package versions" -Skip { } } \ No newline at end of file From 7a8c27d1f7f50c8b01f90d20548555ebe584b3e6 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 20 Apr 2018 00:00:24 +0200 Subject: [PATCH 51/92] Removed debug flag in Find-Package test --- Tests/Module.Tests.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/Module.Tests.ps1 b/Tests/Module.Tests.ps1 index 78cb502..48c34e2 100644 --- a/Tests/Module.Tests.ps1 +++ b/Tests/Module.Tests.ps1 @@ -161,7 +161,7 @@ Describe "Find package" { } It "finds package by tags" { - $found = PackageManagement\Find-Package -ProviderName $chocolateyOneGet -Tag @("TagC", "TagA") -Debug + $found = PackageManagement\Find-Package -ProviderName $chocolateyOneGet -Tag @("TagC", "TagA") $found.Count | Should -Be 1 } From 26fa412af02225d560c7ba78cc833f4979a164b7 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 20 Apr 2018 00:19:51 +0200 Subject: [PATCH 52/92] Added Find-Package examples to the how to documentation, simplyfied build command --- Build/build.ps1 | Bin 0 -> 52 bytes Tests/Module.Tests.ps1 | 2 +- docs/contributing.md | 6 +++--- docs/howto.md | 18 ++++++++++++++++-- 4 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 Build/build.ps1 diff --git a/Build/build.ps1 b/Build/build.ps1 new file mode 100644 index 0000000000000000000000000000000000000000..80d1cf790526ec0d87303cd63d7d6d0995ff0bf8 GIT binary patch literal 52 xcmezWuYe(+p`0O=p@^ZFAp=O~0HFdyCPN-W8Biu0D5A?y0F+Avvw0b~7yxY33r7F| literal 0 HcmV?d00001 diff --git a/Tests/Module.Tests.ps1 b/Tests/Module.Tests.ps1 index 48c34e2..c01d997 100644 --- a/Tests/Module.Tests.ps1 +++ b/Tests/Module.Tests.ps1 @@ -161,7 +161,7 @@ Describe "Find package" { } It "finds package by tags" { - $found = PackageManagement\Find-Package -ProviderName $chocolateyOneGet -Tag @("TagC", "TagA") + $found = Find-Package -ProviderName $chocolateyOneGet -Tag @("TagC", "TagA") $found.Count | Should -Be 1 } diff --git a/docs/contributing.md b/docs/contributing.md index 79eb79a..cb68bcb 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -2,7 +2,7 @@ ## Prerequisities -* Recommended development environement is visual Studio Code with PowerShell extension +* Recommended development environnement is visual Studio Code with PowerShell extension * Run build/prepareEnvironment.ps1 script to install all tools used for provider development, it installs used tools * Used tools: * Pester - powershell testing framework @@ -12,7 +12,7 @@ ## Development -* Build: Run "powershell Invoke-Psake" from build directory +* Build: Run ```build\build.ps1``` * Outcome is stored in "Build\Output" * Use "Invoke-Psake Publish" from build directory to publish into PsGet online repository @@ -20,6 +20,6 @@ * If you are unable to import the module, restart powershell, maybe the chocolatey.dll is in use by the process * From Visual studio Code with powershell extension, you can launch the predefined tasks. Keep in mind to kill the terminal to be able restart debugging -* When debugging tests, breakpoint in the module script wouldnt hit directly, stop on break poin in the test, then manually step into the provider method. After that breakpoint inside the provider should hit. +* When debugging tests, breakpoint in the module script wouldnt hit directly, stop on break point in the test, then manually step into the provider method. After that breakpoint inside the provider should hit. * To run only selected test add wildcard filter into the $testFilter parameter in psakeFile.ps1 * See also [OneGet debugging](https://github.com/OneGet/oneget/blob/WIP/docs/writepowershellbasedprovider.md#debugging-your-provider) \ No newline at end of file diff --git a/docs/howto.md b/docs/howto.md index e49bbc4..6d1bb0a 100644 --- a/docs/howto.md +++ b/docs/howto.md @@ -61,7 +61,7 @@ Register-PackageSource -ProviderName $chocolateyOneGet -Name $sourceName -Locati > **NOTE:** All additional parameters used in this provider follow the chocolatey command line options, so for more details about their values usage, refer directly to [chocolatey documentation](https://github.com/chocolatey/choco/wiki/CommandsReference). -If your package source needs authenticate you can use credentials powershell object (as standard One-Get parameter) or crertificate via additional parameters. Both have the same behavior like chocolatey command line. +If your package source needs authenticate you can use credentials powershell object (as standard One-Get parameter) or certificate via additional parameters. Both have the same behavior like chocolatey command line. ```powershell $credentials = Get-Credential @@ -78,7 +78,7 @@ Register-PackageSource -ProviderName Chocolatey-OneGet -Name $sourceName -Locati ## 3. List registered package sources -By default chocolatey installs default package source. When you install this provider only, no package source is added by default. Purpose for this is enterprice environment, where comapnies want to use their local package source only. Wildcards are supported in source names. When no filter is provided all sources are returned. +By default chocolatey installs default package source. When you install this provider only, no package source is added by default. Purpose for this is enterprise environment, where companies want to use their local package source only. Wildcards are supported in source names. When no filter is provided all sources are returned. To see all already registered package sources ```powershell @@ -92,4 +92,18 @@ To remove package source, you only need to know the source name. Package source ```powershell Unregister-PackageSource -ProviderName Chocolatey-OneGet -Name $sourceName +``` + +## 5. Find package + +To find package to be installed you have multiple options. The main difference when comparing to chocolatey command is usage of tags. Se following examples + +```powershell +$packageName = "git" +# Find package by name or description in one source +Find-Package -Name $packageName -ProviderName Chocolatey-OneGet -Source $sourceName +# Find package by name or description in all sources +Find-Package -Name $packageName -ProviderName Chocolatey-OneGet +# Find all packages containing one of these tags +Find-Package -ProviderName Chocolatey-OneGet -Tag @("TagC", "TagA") ``` \ No newline at end of file From 119675871280cc6db7fa7e5b998f8e5d7f8f6d12 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 20 Apr 2018 00:25:36 +0200 Subject: [PATCH 53/92] Univied formating in contributing.md --- docs/contributing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/contributing.md b/docs/contributing.md index cb68bcb..6b72b7b 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -3,7 +3,7 @@ ## Prerequisities * Recommended development environnement is visual Studio Code with PowerShell extension -* Run build/prepareEnvironment.ps1 script to install all tools used for provider development, it installs used tools +* Run ```build/prepareEnvironment.ps1``` script to install all tools used for provider development, it installs used tools * Used tools: * Pester - powershell testing framework * PackageManagement - Required dependency, we develop its plugin @@ -13,7 +13,7 @@ ## Development * Build: Run ```build\build.ps1``` -* Outcome is stored in "Build\Output" +* Outcome is stored in ```Build\Output``` * Use "Invoke-Psake Publish" from build directory to publish into PsGet online repository ## Debugging From 6fbaf286f8882a47c1a34c9e0e43efc7cfb361ce Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 20 Apr 2018 01:00:30 +0200 Subject: [PATCH 54/92] Added helpers as nested module --- Build/psakefile.ps1 | 1 + Chocolatey-OneGet.psd1 | Bin 3826 -> 3832 bytes 2 files changed, 1 insertion(+) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index c287288..00c4301 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -93,6 +93,7 @@ function Copy-ToTargetFolder(){ Copy-Item -Path "..\$moduleName.psd1" -Destination "$targetFolder\$moduleName.psd1" -Force Copy-Item -Path "..\$moduleName.psm1" -Destination "$targetFolder\$moduleName.psm1" -Force + Copy-Item -Path "..\Chocolatey-Helpers.psm1" -Destination "$targetFolder\Chocolatey-Helpers.psm1" -Force Copy-Item -Path "..\packages\chocolatey.lib\lib\chocolatey.dll" -Destination "$targetFolder\chocolatey.dll" -Force Copy-Item -Path "..\packages\log4net\lib\net40-client\log4net.dll" -Destination "$targetFolder\log4net.dll" -Force } \ No newline at end of file diff --git a/Chocolatey-OneGet.psd1 b/Chocolatey-OneGet.psd1 index ee092174e17fd7064b13d6916984d7580749655c..8885c5f213a04c35f74a43457595436d11cfed42 100644 GIT binary patch delta 164 zcmew)`$KlaCl-DM1_<cgs3sYRU4SBK42eL!IY8N9phzjux@4fJ(&j*pg=_%0RwEJs delta 117 zcmew%`$=}gCzj1&tW%gK$FT|UhcP5F6ftB1$s~pxhSbTGY?ku83|tHfP^b)~(bX_= jNXn}-XfdcWpsI8PngBAX7-$Y7hwS7CHnGil99?Vx^|=<~ From 6396596164cbdf9bfb8d7838606bed37f9421bf5 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 20 Apr 2018 19:46:56 +0200 Subject: [PATCH 55/92] Implemented find-package to list all versions --- Build/psakefile.ps1 | 10 +++++++--- Chocolatey-OneGet.psm1 | 5 ++++- Tests/Module.Tests.ps1 | 9 ++++++--- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index 00c4301..6796ee8 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -49,10 +49,14 @@ Task Register-OutputRepository { Task Compile-TestPackage { $testPackages = Join-Path $targetFolder "TestPackages" - mkdir $testPackages | Out-Null - + + if(-Not (Test-Path $testPackages)){ + mkdir $testPackages | Out-Null + } + Exec { - choco pack ..\TestPackage\TestPackage.nuspec --outputdirectory $testPackages + choco pack ..\TestPackage\TestPackage.nuspec --outputdirectory $testPackages --version=1.0.1 + choco pack ..\TestPackage\TestPackage.nuspec --outputdirectory $testPackages --version=1.0.2 } } diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 398cf16..1638e07 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -5,6 +5,7 @@ $optionVisibleToAdminsOnly = "VisibleToAdminsOnly" $optionCertificate = "Certificate" $optionCertificatePassword = "CertificatePassword" $optionTags = "Tag" +$optionAllVersions = "AllVersions" $script:wildcardOptions = [System.Management.Automation.WildcardOptions]::CultureInvariant -bor ` [System.Management.Automation.WildcardOptions]::IgnoreCase @@ -42,6 +43,7 @@ function Get-DynamicOptions{ Package { Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionTags -ExpectedType StringArray -IsRequired $false) + Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionAllVersions -ExpectedType switch -IsRequired $false) } } } @@ -192,6 +194,7 @@ function Find-Package { $sourceNames = $Request.PackageSources $tags = ParseDynamicOption $optionTags @() + $allVersions = ParseDynamicOption $optionAllVersions $false if($sourceNames.Count -eq 0){ Resolve-PackageSource | ForEach-Object{ @@ -213,7 +216,7 @@ function Find-Package { #$config.Version = $RequiredVersion } - #$config.AllVersions = $True + $config.AllVersions = $allVersions }) $method = $choco.GetType().GetMethod("List") diff --git a/Tests/Module.Tests.ps1 b/Tests/Module.Tests.ps1 index c01d997..7a824cb 100644 --- a/Tests/Module.Tests.ps1 +++ b/Tests/Module.Tests.ps1 @@ -165,6 +165,11 @@ Describe "Find package" { $found.Count | Should -Be 1 } + It "finds all package versions" { + $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -AllVersions + $found.Count | Should -Be 2 + } + It "finds package by min. version" -Skip { } @@ -178,8 +183,6 @@ Describe "Find package" { } It "finds prerelease versions" -Skip { - } - - It "finds all package versions" -Skip { + } } \ No newline at end of file From aeebebe265799e38ed0988413963011fe5d4cd36 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 20 Apr 2018 20:55:19 +0200 Subject: [PATCH 56/92] Implemented search for prerelease versions --- Build/psakefile.ps1 | 1 + Chocolatey-OneGet.psm1 | 5 +++++ Tests/Module.Tests.ps1 | 9 +++++---- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index 6796ee8..7663e0e 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -57,6 +57,7 @@ Task Compile-TestPackage { Exec { choco pack ..\TestPackage\TestPackage.nuspec --outputdirectory $testPackages --version=1.0.1 choco pack ..\TestPackage\TestPackage.nuspec --outputdirectory $testPackages --version=1.0.2 + choco pack ..\TestPackage\TestPackage.nuspec --outputdirectory $testPackages --version=1.1.0-beta1 } } diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 1638e07..634e8aa 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -6,6 +6,8 @@ $optionCertificate = "Certificate" $optionCertificatePassword = "CertificatePassword" $optionTags = "Tag" $optionAllVersions = "AllVersions" +$optionPreRelease = "PrereleaseVersions" + $script:wildcardOptions = [System.Management.Automation.WildcardOptions]::CultureInvariant -bor ` [System.Management.Automation.WildcardOptions]::IgnoreCase @@ -44,6 +46,7 @@ function Get-DynamicOptions{ Package { Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionTags -ExpectedType StringArray -IsRequired $false) Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionAllVersions -ExpectedType switch -IsRequired $false) + Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionPreRelease -ExpectedType switch -IsRequired $false) } } } @@ -195,6 +198,7 @@ function Find-Package { $sourceNames = $Request.PackageSources $tags = ParseDynamicOption $optionTags @() $allVersions = ParseDynamicOption $optionAllVersions $false + $preRelease = ParseDynamicOption $optionPreRelease $false if($sourceNames.Count -eq 0){ Resolve-PackageSource | ForEach-Object{ @@ -217,6 +221,7 @@ function Find-Package { } $config.AllVersions = $allVersions + $config.Prerelease = $preRelease }) $method = $choco.GetType().GetMethod("List") diff --git a/Tests/Module.Tests.ps1 b/Tests/Module.Tests.ps1 index 7a824cb..6b093cb 100644 --- a/Tests/Module.Tests.ps1 +++ b/Tests/Module.Tests.ps1 @@ -170,6 +170,11 @@ Describe "Find package" { $found.Count | Should -Be 2 } + It "finds prerelease versions" { + $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -PrereleaseVersions + $found.Version | Should -Be "1.1.0-beta1" + } + It "finds package by min. version" -Skip { } @@ -181,8 +186,4 @@ Describe "Find package" { It "finds package by required version" -Skip { } - - It "finds prerelease versions" -Skip { - - } } \ No newline at end of file From 24fa67eacd88402532770ed920253e6ed5794bbd Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 20 Apr 2018 21:37:10 +0200 Subject: [PATCH 57/92] Split tests to separate files --- Tests/Module.Tests.ps1 | 172 +--------------------------------------- Tests/Package.Tests.ps1 | 51 ++++++++++++ Tests/Source.Tests.ps1 | 91 +++++++++++++++++++++ Tests/TestHelpers.ps1 | 31 ++++++++ 4 files changed, 174 insertions(+), 171 deletions(-) create mode 100644 Tests/Package.Tests.ps1 create mode 100644 Tests/Source.Tests.ps1 create mode 100644 Tests/TestHelpers.ps1 diff --git a/Tests/Module.Tests.ps1 b/Tests/Module.Tests.ps1 index 6b093cb..edd8beb 100644 --- a/Tests/Module.Tests.ps1 +++ b/Tests/Module.Tests.ps1 @@ -1,34 +1,4 @@ -$chocolateyOneGet = "Chocolatey-OneGet" -$expectedSourceName = "Chocolatey-TestScriptRoot" -$expectedCertificateSource = "Chocolatey-CertificateTestScriptRoot" -$testPackageName = "TestPackage" - -# If import failed, chocolatey.dll is locked and is necessary to reload powershell -# Import-PackageProvider $chocolateyOneGet -force - -function Get-ChocolateySource(){ - return choco source list | Where-Object { $_.Contains($expectedSourceName)} -} - -function Clean-Sources (){ - Invoke-Expression "choco source remove -n=$expectedSourceName" - Invoke-Expression "choco source remove -n=$expectedCertificateSource" - # because chocolatey.dll is unable to reload config file, we need to clean up manually - UnRegister-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -ErrorAction SilentlyContinue | Out-Null - Unregister-PackageSource -ProviderName $chocolateyOneGet -Name $expectedCertificateSource -ErrorAction SilentlyContinue | Out-Null -} - -function Register-TestPackageSources(){ - $userPassword = "UserPassword" | ConvertTo-SecureString -AsPlainText -Force - $credentials = new-object -typename System.Management.Automation.PSCredential -argumentlist "UserName", $userPassword - - Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $PSScriptRoot ` - -Priority 10 -BypassProxy -AllowSelfService -VisibleToAdminsOnly ` - -Credential $credentials - - Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedCertificateSource -Location $PSScriptRoot ` - -Certificate "testCertificate" -CertificatePassword "testCertificatePassword" -} +. $PSScriptRoot\TestHelpers.ps1 Describe "Imported module" { $provider = Get-PackageProvider -Name $chocolateyOneGet @@ -47,143 +17,3 @@ Describe "Imported module" { $extensions | Should -Be "http https file" } } - -Describe "Add packages source" { - BeforeAll { - Clean-Sources - } - - AfterAll { - Clean-Sources - } - - Register-TestPackageSources - - $registeredSource = Get-ChocolateySource - - It "is saved in choco" { - $registeredSource | Should -Not -Be $Null - } - - It "saves Priority" { - $registeredSource | Should -Match "Priority 10" - } - - It "saves BypassProxy" { - $registeredSource | Should -Match "Bypass Proxy - True" - } - - It "saves AllowSelfService" { - $registeredSource | Should -Match "Self-Service - True" - } - - # Requires business edition - It "saves VisibleToAdminsOnly" -Skip { - $registeredSource | Should -Match "Admin Only - True" - } - - # Not possible to test user name value was set propertly this way - It "saves user credential properties" { - $registeredSource | Should -Match "(Authenticated)" - } - - It "saves user certificate properties" { - $certificateSource = choco source list | Where-Object { $_.Contains($expectedCertificateSource)} - $certificateSource | Should -Match "(Authenticated)" - } -} - -Describe "Get package sources" { - BeforeAll { - Clean-Sources - Register-TestPackageSources - } - - AfterAll { - Clean-Sources - } - - It "lists all registered sources" { - $registeredSources = Get-PackageSource -ProviderName $chocolateyOneGet - $resolved = $registeredSources | Where-Object { $_.Name -eq $expectedSourceName } - $resolved -ne $Null -and $registeredSources.Count -ge 2 | Should -Be $True - } - - It "lists only sources by wildcard" { - $filteredSources = Get-PackageSource -ProviderName $chocolateyOneGet $expectedCertificateSource* - $resolved = $filteredSources | Where-Object { $_.Name -eq $expectedCertificateSource } - $resolved.Count | Should -Be 1 - } - - It "lists sources by location" { - $byPathSources = Get-PackageSource -ProviderName $chocolateyOneGet -Location $PSScriptRoot - $byPathSources.Count | Should -Be 2 - } -} - -Describe "Unregister package source" { - BeforeAll { - Clean-Sources - Register-TestPackageSources - } - - AfterAll { - Clean-Sources - } - - It "is removed" { - Unregister-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName - $registeredSource = Get-ChocolateySource - $registeredSource | Should -Be $Null - } -} - -Describe "Find package" { - BeforeAll { - Clean-Sources - $buildOutput = Join-Path $PSScriptRoot "..\Build\Output\TestPackages" - $buildOutput = $(Resolve-Path $buildOutput).Path - Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $buildOutput - } - - AfterAll { - Clean-Sources - } - - It "finds package in Source" { - $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Source $expectedSourceName - $found.Count | Should -Be 1 - } - - It "finds package from all sources" { - $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet - $found.Count | Should -Be 1 - } - - It "finds package by tags" { - $found = Find-Package -ProviderName $chocolateyOneGet -Tag @("TagC", "TagA") - $found.Count | Should -Be 1 - } - - It "finds all package versions" { - $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -AllVersions - $found.Count | Should -Be 2 - } - - It "finds prerelease versions" { - $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -PrereleaseVersions - $found.Version | Should -Be "1.1.0-beta1" - } - - It "finds package by min. version" -Skip { - - } - - It "finds package by max. version" -Skip { - - } - - It "finds package by required version" -Skip { - - } -} \ No newline at end of file diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 new file mode 100644 index 0000000..7b6a400 --- /dev/null +++ b/Tests/Package.Tests.ps1 @@ -0,0 +1,51 @@ +. $PSScriptRoot\TestHelpers.ps1 + +Describe "Find package" { + BeforeAll { + Clean-Sources + $buildOutput = Join-Path $PSScriptRoot "..\Build\Output\TestPackages" + $buildOutput = $(Resolve-Path $buildOutput).Path + Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $buildOutput + } + + AfterAll { + Clean-Sources + } + + It "finds package in Source" { + $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Source $expectedSourceName + $found.Count | Should -Be 1 + } + + It "finds package from all sources" { + $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet + $found.Count | Should -Be 1 + } + + It "finds package by tags" { + $found = Find-Package -ProviderName $chocolateyOneGet -Tag @("TagC", "TagA") + $found.Count | Should -Be 1 + } + + It "finds all package versions" { + $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -AllVersions + $found.Count | Should -Be 2 + } + + It "finds prerelease versions" { + $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -PrereleaseVersions + $found.Version | Should -Be "1.1.0-beta1" + } + + It "finds package by min. version" -Skip { + + } + + It "finds package by max. version" -Skip { + + } + + It "finds package by required version" -Skip { + + } +} \ No newline at end of file diff --git a/Tests/Source.Tests.ps1 b/Tests/Source.Tests.ps1 new file mode 100644 index 0000000..7de3921 --- /dev/null +++ b/Tests/Source.Tests.ps1 @@ -0,0 +1,91 @@ +. $PSScriptRoot\TestHelpers.ps1 + +Describe "Add packages source" { + BeforeAll { + Clean-Sources + } + + AfterAll { + Clean-Sources + } + + Register-TestPackageSources + + $registeredSource = Get-ChocolateySource + + It "is saved in choco" { + $registeredSource | Should -Not -Be $Null + } + + It "saves Priority" { + $registeredSource | Should -Match "Priority 10" + } + + It "saves BypassProxy" { + $registeredSource | Should -Match "Bypass Proxy - True" + } + + It "saves AllowSelfService" { + $registeredSource | Should -Match "Self-Service - True" + } + + # Requires business edition + It "saves VisibleToAdminsOnly" -Skip { + $registeredSource | Should -Match "Admin Only - True" + } + + # Not possible to test user name value was set propertly this way + It "saves user credential properties" { + $registeredSource | Should -Match "(Authenticated)" + } + + It "saves user certificate properties" { + $certificateSource = choco source list | Where-Object { $_.Contains($expectedCertificateSource)} + $certificateSource | Should -Match "(Authenticated)" + } +} + +Describe "Get package sources" { + BeforeAll { + Clean-Sources + Register-TestPackageSources + } + + AfterAll { + Clean-Sources + } + + It "lists all registered sources" { + $registeredSources = Get-PackageSource -ProviderName $chocolateyOneGet + $resolved = $registeredSources | Where-Object { $_.Name -eq $expectedSourceName } + $resolved -ne $Null -and $registeredSources.Count -ge 2 | Should -Be $True + } + + It "lists only sources by wildcard" { + $filteredSources = Get-PackageSource -ProviderName $chocolateyOneGet $expectedCertificateSource* + $resolved = $filteredSources | Where-Object { $_.Name -eq $expectedCertificateSource } + $resolved.Count | Should -Be 1 + } + + It "lists sources by location" { + $byPathSources = Get-PackageSource -ProviderName $chocolateyOneGet -Location $PSScriptRoot + $byPathSources.Count | Should -Be 2 + } +} + +Describe "Unregister package source" { + BeforeAll { + Clean-Sources + Register-TestPackageSources + } + + AfterAll { + Clean-Sources + } + + It "is removed" { + Unregister-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName + $registeredSource = Get-ChocolateySource + $registeredSource | Should -Be $Null + } +} diff --git a/Tests/TestHelpers.ps1 b/Tests/TestHelpers.ps1 new file mode 100644 index 0000000..167459c --- /dev/null +++ b/Tests/TestHelpers.ps1 @@ -0,0 +1,31 @@ +$chocolateyOneGet = "Chocolatey-OneGet" +$expectedSourceName = "Chocolatey-TestScriptRoot" +$expectedCertificateSource = "Chocolatey-CertificateTestScriptRoot" +$testPackageName = "TestPackage" + +# If import failed, chocolatey.dll is locked and is necessary to reload powershell +# Import-PackageProvider $chocolateyOneGet -force + +function Get-ChocolateySource(){ + return choco source list | Where-Object { $_.Contains($expectedSourceName)} +} + +function Clean-Sources (){ + Invoke-Expression "choco source remove -n=$expectedSourceName" + Invoke-Expression "choco source remove -n=$expectedCertificateSource" + # because chocolatey.dll is unable to reload config file, we need to clean up manually + UnRegister-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -ErrorAction SilentlyContinue | Out-Null + Unregister-PackageSource -ProviderName $chocolateyOneGet -Name $expectedCertificateSource -ErrorAction SilentlyContinue | Out-Null +} + +function Register-TestPackageSources(){ + $userPassword = "UserPassword" | ConvertTo-SecureString -AsPlainText -Force + $credentials = new-object -typename System.Management.Automation.PSCredential -argumentlist "UserName", $userPassword + + Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $PSScriptRoot ` + -Priority 10 -BypassProxy -AllowSelfService -VisibleToAdminsOnly ` + -Credential $credentials + + Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedCertificateSource -Location $PSScriptRoot ` + -Certificate "testCertificate" -CertificatePassword "testCertificatePassword" +} \ No newline at end of file From 5671cfed5e1a67a2850937326781a8549e68038a Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 20 Apr 2018 21:49:01 +0200 Subject: [PATCH 58/92] Added find-package examples to how to for allversions and prerelease switches --- docs/howto.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/howto.md b/docs/howto.md index 6d1bb0a..0542bd2 100644 --- a/docs/howto.md +++ b/docs/howto.md @@ -100,10 +100,14 @@ To find package to be installed you have multiple options. The main difference w ```powershell $packageName = "git" -# Find package by name or description in one source +# Find latest version of package by name or description in one source Find-Package -Name $packageName -ProviderName Chocolatey-OneGet -Source $sourceName # Find package by name or description in all sources Find-Package -Name $packageName -ProviderName Chocolatey-OneGet # Find all packages containing one of these tags Find-Package -ProviderName Chocolatey-OneGet -Tag @("TagC", "TagA") +# Find all versions of package +Find-Package -Name $packageName -ProviderName Chocolatey-OneGet -AllVersions +# Find latest version of package including prerelease versions +Find-Package -Name $packageName -ProviderName Chocolatey-OneGet -PrereleaseVersions ``` \ No newline at end of file From 7f191c6a65659d1d35cad1d07e671a818dd92e03 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Fri, 20 Apr 2018 22:28:54 +0200 Subject: [PATCH 59/92] Fixed build.ps1 to work from any location --- Build/build.ps1 | Bin 52 -> 162 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Build/build.ps1 b/Build/build.ps1 index 80d1cf790526ec0d87303cd63d7d6d0995ff0bf8..66bdf436c07e7b5cfdc0eecfc2a401918e3f36df 100644 GIT binary patch literal 162 zcmZvVI}U?D3T;$Z5b!s!4-?Gj`aG(Bs`T;#O B9-;sM delta 9 QcmZ3)Xu|aW-^2(b020Fk@&Et; From 55635cd8d62c1d3826132d5822363fd6bc5a4d7e Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sat, 21 Apr 2018 01:13:36 +0200 Subject: [PATCH 60/92] Implemented filtering packages by version --- Chocolatey-OneGet.psm1 | 41 ++++++++++++++++++++++++++++++++++++++--- Tests/Package.Tests.ps1 | 10 ++++++---- 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 634e8aa..290f917 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -199,6 +199,7 @@ function Find-Package { $tags = ParseDynamicOption $optionTags @() $allVersions = ParseDynamicOption $optionAllVersions $false $preRelease = ParseDynamicOption $optionPreRelease $false + $queryVersions = Parse-Version $RequiredVersion $MinimumVersion $MaximumVersion if($sourceNames.Count -eq 0){ Resolve-PackageSource | ForEach-Object{ @@ -216,8 +217,8 @@ function Find-Package { $config.Input = $Name $config.Sources = $source - if($Null -eq $RequiredVersion){ - #$config.Version = $RequiredVersion + if($queryVersions.min -eq $queryVersions.max){ + $config.Version = $RequiredVersion } $config.AllVersions = $allVersions @@ -234,7 +235,8 @@ function Find-Package { } # Choco has different usage fo the tag filtering option - $packageTags = $found.Package.Tags + $package = $found.Package + $packageTags = $package.Tags $tagFound = $tags.Count -eq 0 foreach($tag in $tags){ @@ -245,6 +247,12 @@ function Find-Package { continue } + [NuGet.SemanticVersion]$actual = $null; + if ([NuGet.SemanticVersion]::TryParse($package.Version,[ref] $actual) ` + -and ($actual -lt $queryVersions.min -or $actual > $queryVersions.max)){ + continue + } + $identity = New-SoftwareIdentity "fastPackageReference" $found.Name $found.Version "semver" $source $found.Description Write-Output $identity } @@ -357,4 +365,31 @@ function ThrowError(){ $PSCmdlet.ThrowTerminatingError($errorRecord) } +function Parse-Version(){ + param([string]$requiredVersion, + [string]$minimumVersion, + [string]$maximumVersion + ) + + [NuGet.SemanticVersion]$min = $null + [NuGet.SemanticVersion]$max = $null + [NuGet.SemanticVersion]$actual = $nullon + + if (-Not [string]::IsNullOrEmpty($requiredVersion) -and [NuGet.SemanticVersion]::TryParse($requiredVersion, [ref] $actual)){ + $min = $max = $actual; + } else { + if ([string]::IsNullOrEmpty($minimumVersion) -or -not [NuGet.SemanticVersion]::TryParse($minimumVersion, [ref] $min)){ + $version = New-Object Version + $min = New-Object "NuGet.SemanticVersion" $version + } + + if ([string]::IsNullOrEmpty($maximumVersion) -or -not [NuGet.SemanticVersion]::TryParse($maximumVersion, [ref] $max)){ + $max = New-Object "NuGet.SemanticVersion" @([int32]::MaxValue, [int32]::MaxValue, [int32]::MaxValue, [int32]::MaxValue) + } + } + + return @{ "min" = $min; "max" = $max } +} + + #endregion \ No newline at end of file diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index 7b6a400..9af28c2 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -37,15 +37,17 @@ Describe "Find package" { $found.Version | Should -Be "1.1.0-beta1" } - It "finds package by min. version" -Skip { - + It "finds package by required version" { + $expectedVersion = "1.0.1" + $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -RequiredVersion $expectedVersion + $found.Version | Should -Be $expectedVersion } - It "finds package by max. version" -Skip { + It "finds package by min. version" -Skip { } - It "finds package by required version" -Skip { + It "finds package by max. version" -Skip { } } \ No newline at end of file From 0ff91cf82dc01b4902da0c2d624b4b682a3eefb4 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sat, 21 Apr 2018 02:59:17 +0200 Subject: [PATCH 61/92] Implemented min., max. version parameters from Find-Pacakge --- Build/psakefile.ps1 | 1 + Chocolatey-OneGet.psm1 | 20 ++++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index 7663e0e..57d1fdb 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -57,6 +57,7 @@ Task Compile-TestPackage { Exec { choco pack ..\TestPackage\TestPackage.nuspec --outputdirectory $testPackages --version=1.0.1 choco pack ..\TestPackage\TestPackage.nuspec --outputdirectory $testPackages --version=1.0.2 + choco pack ..\TestPackage\TestPackage.nuspec --outputdirectory $testPackages --version=1.0.3 choco pack ..\TestPackage\TestPackage.nuspec --outputdirectory $testPackages --version=1.1.0-beta1 } } diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 290f917..875f1ca 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -200,6 +200,8 @@ function Find-Package { $allVersions = ParseDynamicOption $optionAllVersions $false $preRelease = ParseDynamicOption $optionPreRelease $false $queryVersions = Parse-Version $RequiredVersion $MinimumVersion $MaximumVersion + $allVersions = ($allVersions -or $queryVersions.defined) + $byIdOnly = -not [string]::IsNullOrEmpty($Name) -or $queryVersions.defined if($sourceNames.Count -eq 0){ Resolve-PackageSource | ForEach-Object{ @@ -216,7 +218,8 @@ function Find-Package { $config.CommandName = "list" $config.Input = $Name $config.Sources = $source - + $config.ListCommand.ByIdOnly = $byIdOnly + if($queryVersions.min -eq $queryVersions.max){ $config.Version = $RequiredVersion } @@ -249,7 +252,7 @@ function Find-Package { [NuGet.SemanticVersion]$actual = $null; if ([NuGet.SemanticVersion]::TryParse($package.Version,[ref] $actual) ` - -and ($actual -lt $queryVersions.min -or $actual > $queryVersions.max)){ + -and ($actual -lt $queryVersions.min -or $actual -gt $queryVersions.max)){ continue } @@ -374,21 +377,30 @@ function Parse-Version(){ [NuGet.SemanticVersion]$min = $null [NuGet.SemanticVersion]$max = $null [NuGet.SemanticVersion]$actual = $nullon + $defined = $false if (-Not [string]::IsNullOrEmpty($requiredVersion) -and [NuGet.SemanticVersion]::TryParse($requiredVersion, [ref] $actual)){ - $min = $max = $actual; + $min = $max = $actual + $defined = $true } else { if ([string]::IsNullOrEmpty($minimumVersion) -or -not [NuGet.SemanticVersion]::TryParse($minimumVersion, [ref] $min)){ $version = New-Object Version $min = New-Object "NuGet.SemanticVersion" $version + } else { + $defined = $true } if ([string]::IsNullOrEmpty($maximumVersion) -or -not [NuGet.SemanticVersion]::TryParse($maximumVersion, [ref] $max)){ $max = New-Object "NuGet.SemanticVersion" @([int32]::MaxValue, [int32]::MaxValue, [int32]::MaxValue, [int32]::MaxValue) + } else { + $defined = $true } } - return @{ "min" = $min; "max" = $max } + return @{ "min" = $min + "max" = $max + "defined" = $defined + } } From ee05914b18d9f7a37a503ed5bde21f46831d3f3a Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sat, 21 Apr 2018 03:01:35 +0200 Subject: [PATCH 62/92] Added tests for min. max. versions in Find-Package --- Tests/Package.Tests.ps1 | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index 9af28c2..b852df6 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -37,17 +37,21 @@ Describe "Find package" { $found.Version | Should -Be "1.1.0-beta1" } + $expectedVersion = "1.0.2" + It "finds package by required version" { - $expectedVersion = "1.0.1" $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -RequiredVersion $expectedVersion $found.Version | Should -Be $expectedVersion } - It "finds package by min. version" -Skip { - + It "finds package by min. version" { + $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -AllVersions -MinimumVersion $expectedVersion + $resolvedVersion = $found[$found.length - 1].Version + $resolvedVersion | Should -Be $expectedVersion } - It "finds package by max. version" -Skip { - + It "finds package by max. version" { + $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -MaximumVersion $expectedVersion + $found.Version | Should -Be $expectedVersion } } \ No newline at end of file From 1bd4d09e9f9150b03cebd8e26dfe697a37180c10 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sat, 21 Apr 2018 03:06:49 +0200 Subject: [PATCH 63/92] Fixed find all package test --- Tests/Package.Tests.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index b852df6..f58b791 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -29,7 +29,7 @@ Describe "Find package" { It "finds all package versions" { $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -AllVersions - $found.Count | Should -Be 2 + $found.Count | Should -Be 3 } It "finds prerelease versions" { From 9ca463a2b462a3c7d238f3e8781c6413588842a5 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sat, 21 Apr 2018 03:08:05 +0200 Subject: [PATCH 64/92] Updated progress in readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 80150e2..a3c575a 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,8 @@ This part contains plain PowerShell implementation of the provider, development * [x] Resolve-PackageSource * [x] Add-PackageSource * [x] Remove-PackageSource - * [ ] Find-Package - IN PROGRESS - * [ ] Install-Package + * [x] Find-Package + * [ ] Install-Package - IN PROGRESS * [ ] Get-InstalledPackage * [ ] UnInstall-Package * [ ] Download-Package From 5a5181d13c14482bbfabc842c567966545f297b6 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sun, 22 Apr 2018 22:03:35 +0200 Subject: [PATCH 65/92] Implemented FastPackageReference in Find-Package --- Chocolatey-OneGet.psm1 | 10 +++++++++- README.md | 1 + Tests/Package.Tests.ps1 | 13 +++++++++---- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 875f1ca..786811d 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -256,7 +256,8 @@ function Find-Package { continue } - $identity = New-SoftwareIdentity "fastPackageReference" $found.Name $found.Version "semver" $source $found.Description + $packageReference = Build-FastPackageReference $found + $identity = New-SoftwareIdentity $packageReference $found.Name $found.Version "semver" $source $found.Description Write-Output $identity } } @@ -403,5 +404,12 @@ function Parse-Version(){ } } +function Build-FastPackageReference($package){ + $name =$package.Name + $version = $package.Version + $source = $package.Source + return "$name|#|$version|#|$source" +} + #endregion \ No newline at end of file diff --git a/README.md b/README.md index a3c575a..1527987 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,7 @@ This part contains plain PowerShell implementation of the provider, development Not implemented * Trusted package sources * Disable package source +* Custom credentials in Find-Package ## C# implementation - OBSOLETE diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index f58b791..02040a4 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -3,9 +3,9 @@ Describe "Find package" { BeforeAll { Clean-Sources - $buildOutput = Join-Path $PSScriptRoot "..\Build\Output\TestPackages" - $buildOutput = $(Resolve-Path $buildOutput).Path - Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $buildOutput + $testPackages = Join-Path $PSScriptRoot "..\Build\Output\TestPackages" + $testPackages = $(Resolve-Path $testPackages).Path + Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $testPackages } AfterAll { @@ -14,7 +14,8 @@ Describe "Find package" { It "finds package in Source" { $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Source $expectedSourceName - $found.Count | Should -Be 1 + $packagesUri = New-Object "System.Uri" $testPackages + $found.FastPackageReference | Should -Be "TestPackage|#|1.0.3|#|$packagesUri" } It "finds package from all sources" { @@ -54,4 +55,8 @@ Describe "Find package" { $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -MaximumVersion $expectedVersion $found.Version | Should -Be $expectedVersion } + + It "uses not registered source by uri" -Skip { + + } } \ No newline at end of file From fd4bebc379b0b7760f368fd1f9c600d2b493c11f Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Mon, 23 Apr 2018 00:16:39 +0200 Subject: [PATCH 66/92] Implemented resolve-packagesource by not registered location --- Chocolatey-OneGet.psm1 | 12 +++++++++++- Tests/Package.Tests.ps1 | 10 ++-------- Tests/Source.Tests.ps1 | 12 +++++++++++- Tests/TestHelpers.ps1 | 7 +++++-- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 786811d..75da6aa 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -81,10 +81,20 @@ function Resolve-PackageSource { $wildcardPattern = New-Object System.Management.Automation.WildcardPattern $pattern, $script:wildcardOptions $filtered = $registered | Where-Object { $wildcardPattern.IsMatch($_.Id) -or $wildcardPattern.IsMatch($_.Value) } - ForEach($source in $filtered){ + forEach($source in $filtered){ $packageSource = New-PackageSource -Name $source.Id -Location $source.Value -Trusted $False -Registered $True Write-Output -InputObject $packageSource } + + if($iltered.Count -eq 0) { + # if the path is valid isnt really not our responsibility, mainly for Url + $parsedUri = $null + + if([System.Uri]::TryCreate($pattern, [System.UriKind]::Absolute, [ref]$parsedUri)){ + $packageSource = New-PackageSource -Name $pattern -Location $pattern -Trusted $False -Registered $False + Write-Output -InputObject $packageSource + } + } } } diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index 02040a4..45b9c75 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -3,9 +3,7 @@ Describe "Find package" { BeforeAll { Clean-Sources - $testPackages = Join-Path $PSScriptRoot "..\Build\Output\TestPackages" - $testPackages = $(Resolve-Path $testPackages).Path - Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $testPackages + Register-TestPackageSources } AfterAll { @@ -14,7 +12,7 @@ Describe "Find package" { It "finds package in Source" { $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Source $expectedSourceName - $packagesUri = New-Object "System.Uri" $testPackages + $packagesUri = New-Object "System.Uri" $testPackagesPath $found.FastPackageReference | Should -Be "TestPackage|#|1.0.3|#|$packagesUri" } @@ -55,8 +53,4 @@ Describe "Find package" { $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -MaximumVersion $expectedVersion $found.Version | Should -Be $expectedVersion } - - It "uses not registered source by uri" -Skip { - - } } \ No newline at end of file diff --git a/Tests/Source.Tests.ps1 b/Tests/Source.Tests.ps1 index 7de3921..d6d6f52 100644 --- a/Tests/Source.Tests.ps1 +++ b/Tests/Source.Tests.ps1 @@ -68,9 +68,19 @@ Describe "Get package sources" { } It "lists sources by location" { - $byPathSources = Get-PackageSource -ProviderName $chocolateyOneGet -Location $PSScriptRoot + $byPathSources = Get-PackageSource -ProviderName $chocolateyOneGet -Location $testPackagesPath $byPathSources.Count | Should -Be 2 } + + $byPathSource = Get-PackageSource -ProviderName $chocolateyOneGet -Location $PSScriptRoot + + It "not registered location returns source by its location" { + $byPathSource.Location | Should -Be $PSScriptRoot + } + + It "not registered location returns not registered source" { + $byPathSource.IsRegistered | Should -Be $false + } } Describe "Unregister package source" { diff --git a/Tests/TestHelpers.ps1 b/Tests/TestHelpers.ps1 index 167459c..675da6e 100644 --- a/Tests/TestHelpers.ps1 +++ b/Tests/TestHelpers.ps1 @@ -3,6 +3,9 @@ $expectedSourceName = "Chocolatey-TestScriptRoot" $expectedCertificateSource = "Chocolatey-CertificateTestScriptRoot" $testPackageName = "TestPackage" +$testPackagesPath = Join-Path $PSScriptRoot "..\Build\Output\TestPackages" +$testPackagesPath = $(Resolve-Path $testPackagesPath).Path + # If import failed, chocolatey.dll is locked and is necessary to reload powershell # Import-PackageProvider $chocolateyOneGet -force @@ -22,10 +25,10 @@ function Register-TestPackageSources(){ $userPassword = "UserPassword" | ConvertTo-SecureString -AsPlainText -Force $credentials = new-object -typename System.Management.Automation.PSCredential -argumentlist "UserName", $userPassword - Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $PSScriptRoot ` + Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedSourceName -Location $testPackagesPath ` -Priority 10 -BypassProxy -AllowSelfService -VisibleToAdminsOnly ` -Credential $credentials - Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedCertificateSource -Location $PSScriptRoot ` + Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedCertificateSource -Location $testPackagesPath ` -Certificate "testCertificate" -CertificatePassword "testCertificatePassword" } \ No newline at end of file From e72b156989572298127d902653bf9b76d441289e Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Thu, 17 May 2018 19:12:16 +0200 Subject: [PATCH 67/92] Added Install package tests --- Chocolatey-OneGet.psm1 | 42 ++++++++++++++++++++++++++++++++++++++++- Tests/Package.Tests.ps1 | 16 ++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 75da6aa..0b90bef 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -303,7 +303,30 @@ function Install-Package { [string] $FastPackageReference ) - #TODO + + $packageReference = Parse-FastPackageReference $FastPackageReference + # No need to check for null, since we build it from valid values + $source = Resolve-PackageSource $packageReference.Source + + + #TODO needs to solve the source as trusted, otherwise automatic test is not able to execute + # use additional chocolatey parameters + # provide additional installer parameters - extend the testpackage + + $choco = Get-Chocolatey + $choco = $choco.Set({ + param($config) + + $config.CommandName = "install" + $config.PackageNames = $packageReference.Name; + $config.Version = $packageReference.Version; + $config.Sources = $packageReference.Source; + }); + + $choco.Run() + + # run installer, report install error + # return package info } function UnInstall-Package { @@ -421,5 +444,22 @@ function Build-FastPackageReference($package){ return "$name|#|$version|#|$source" } +function Parse-FastPackageReference($fastPackageReference){ + $pattern = "(?.*)\|#\|(?.*)\|#\|(?.*)" + $regEx = [regex]::new($pattern, $wildcardOptions) + $parsed = $regEx.Match($fastPackageReference) + + if($parsed.Success){ + $result = @{ + Name = $parsed.Groups["Name"].Value + Version = $parsed.Groups["Version"].Value + Source = $parsed.Groups["Source"].Value + } + + return $result + } + + return $null +} #endregion \ No newline at end of file diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index 45b9c75..92cb540 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -53,4 +53,20 @@ Describe "Find package" { $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -MaximumVersion $expectedVersion $found.Version | Should -Be $expectedVersion } +} + +Describe "Install package" { + BeforeAll { + Clean-Sources + Register-TestPackageSources + } + + AfterAll { + Clean-Sources + } + + It "isntalls required version" -Skip { + $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet #-Version $expectedVersion + $installed | Should -Not -Be $null + } } \ No newline at end of file From a3fe03b9e01798059a461076166fe80abaa69a7b Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Thu, 17 May 2018 19:19:17 +0200 Subject: [PATCH 68/92] Upgrade of chocolatey.lig to 0.10.11 --- paket.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paket.lock b/paket.lock index 317b0d3..f8d0984 100644 --- a/paket.lock +++ b/paket.lock @@ -1,5 +1,5 @@ NUGET remote: https://www.nuget.org/api/v2 - chocolatey.lib (0.10.9) + chocolatey.lib (0.10.11) log4net (>= 2.0.3) log4net (2.0.3) From 469475b11be6c613ee413e472ccad9931c61d38b Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 30 May 2018 00:59:23 +0200 Subject: [PATCH 69/92] Fixed resolution of packagereference for filesystem source path --- Chocolatey-Helpers.psm1 | 1 + Chocolatey-OneGet.psm1 | 10 ++++++++-- Tests/Package.Tests.ps1 | 21 ++++++++++++++++++--- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/Chocolatey-Helpers.psm1 b/Chocolatey-Helpers.psm1 index e9132fd..85c9ec1 100644 --- a/Chocolatey-Helpers.psm1 +++ b/Chocolatey-Helpers.psm1 @@ -14,5 +14,6 @@ function IsChocolateyInstalled() { } function Register-ChocoDefaultSource(){ + # choco source add -n=choco -s=https://chocolatey.org/api/v2/ Register-PackageSource -ProviderName chocolatey-oneget -Name choco -Location https://chocolatey.org/api/v2/ } \ No newline at end of file diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 0b90bef..2fe37e7 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -87,7 +87,7 @@ function Resolve-PackageSource { } if($iltered.Count -eq 0) { - # if the path is valid isnt really not our responsibility, mainly for Url + # if the path is valid isnt really not our responsibility, only for Url values $parsedUri = $null if([System.Uri]::TryCreate($pattern, [System.UriKind]::Absolute, [ref]$parsedUri)){ @@ -308,7 +308,6 @@ function Install-Package { # No need to check for null, since we build it from valid values $source = Resolve-PackageSource $packageReference.Source - #TODO needs to solve the source as trusted, otherwise automatic test is not able to execute # use additional chocolatey parameters # provide additional installer parameters - extend the testpackage @@ -441,6 +440,13 @@ function Build-FastPackageReference($package){ $name =$package.Name $version = $package.Version $source = $package.Source + $parsedUri = $null + + # TODO check the same for UNC path + if([System.Uri]::TryCreate($package.Source, [System.UriKind]::Absolute, [ref]$parsedUri) -and $parsedUri.IsFile){ + $source = $parsedUri.AbsolutePath + } + return "$name|#|$version|#|$source" } diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index 92cb540..4a1ec95 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -65,8 +65,23 @@ Describe "Install package" { Clean-Sources } - It "isntalls required version" -Skip { - $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet #-Version $expectedVersion - $installed | Should -Not -Be $null + It "installs correct version" { + $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Verbose -Force + #$installed | Should -Not -Be $null + $installedInChoco = choco list -l | findstr TestPackage + $installedInChoco | Should -Be "TestPackage 1.0.3" } + + # It "installs correct version" -Skip { + # $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet ` + # -Version $expectedVersion + # $installed | Should -Not -Be $null + # } + + # It "installs from correct source" -Skip { + # $sourceName = "" + # $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet ` + # -Source $sourceName + # $installed | Should -Not -Be $null + # } } \ No newline at end of file From b30e0331f06e5b782126988531bc374afcdd6b24 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 30 May 2018 01:06:02 +0200 Subject: [PATCH 70/92] Fixed broken Find package test --- Tests/Package.Tests.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index 4a1ec95..7810e8f 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -12,7 +12,7 @@ Describe "Find package" { It "finds package in Source" { $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Source $expectedSourceName - $packagesUri = New-Object "System.Uri" $testPackagesPath + $packagesUri = (New-Object "System.Uri" $testPackagesPath).AbsolutePath $found.FastPackageReference | Should -Be "TestPackage|#|1.0.3|#|$packagesUri" } @@ -66,7 +66,7 @@ Describe "Install package" { } It "installs correct version" { - $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Verbose -Force + $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force #$installed | Should -Not -Be $null $installedInChoco = choco list -l | findstr TestPackage $installedInChoco | Should -Be "TestPackage 1.0.3" From 1fd96bccc29e97ad262a047c61a49f4777fad176 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 30 May 2018 01:21:54 +0200 Subject: [PATCH 71/92] Added uninstall of test package into test setup --- Tests/Package.Tests.ps1 | 2 ++ Tests/TestHelpers.ps1 | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index 7810e8f..e4970ea 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -59,10 +59,12 @@ Describe "Install package" { BeforeAll { Clean-Sources Register-TestPackageSources + Uninstall-TestPackage } AfterAll { Clean-Sources + Uninstall-TestPackage } It "installs correct version" { diff --git a/Tests/TestHelpers.ps1 b/Tests/TestHelpers.ps1 index 675da6e..bc9f6d7 100644 --- a/Tests/TestHelpers.ps1 +++ b/Tests/TestHelpers.ps1 @@ -31,4 +31,9 @@ function Register-TestPackageSources(){ Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedCertificateSource -Location $testPackagesPath ` -Certificate "testCertificate" -CertificatePassword "testCertificatePassword" +} + +function Uninstall-TestPackage(){ + # requires atleast one package source + Invoke-Expression "choco uninstall $testPackageName -y" } \ No newline at end of file From d5c765dcac43290d6ad64886480c6fbdf779cc90 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 30 May 2018 01:59:16 +0200 Subject: [PATCH 72/92] Added reporting of installed package --- Chocolatey-OneGet.psm1 | 5 +++-- Tests/Package.Tests.ps1 | 10 +++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 2fe37e7..f4b9be5 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -324,8 +324,9 @@ function Install-Package { $choco.Run() - # run installer, report install error - # return package info + $identity = New-SoftwareIdentity $FastPackageReference $packageReference.Name ` + $packageReference.Version "semver" $packageReference.source + Write-Output $identity } function UnInstall-Package { diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index e4970ea..624b9ae 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -67,13 +67,17 @@ Describe "Install package" { Uninstall-TestPackage } - It "installs correct version" { - $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force - #$installed | Should -Not -Be $null + $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force + + It "installs latest version" { $installedInChoco = choco list -l | findstr TestPackage $installedInChoco | Should -Be "TestPackage 1.0.3" } + It "reports installed package" { + $installed | Should -Not -Be $null + } + # It "installs correct version" -Skip { # $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet ` # -Version $expectedVersion From 458080d0b8d1f1fc93fc75bec5b80677efd5819f Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 30 May 2018 02:35:01 +0200 Subject: [PATCH 73/92] Added to check install required version --- Tests/Package.Tests.ps1 | 35 +++++++++++++++++++++-------------- Tests/TestHelpers.ps1 | 4 ++++ 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index 624b9ae..a4bf10e 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -1,5 +1,7 @@ . $PSScriptRoot\TestHelpers.ps1 +$previousVersion = "1.0.2" + Describe "Find package" { BeforeAll { Clean-Sources @@ -36,22 +38,20 @@ Describe "Find package" { $found.Version | Should -Be "1.1.0-beta1" } - $expectedVersion = "1.0.2" - It "finds package by required version" { - $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -RequiredVersion $expectedVersion - $found.Version | Should -Be $expectedVersion + $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -RequiredVersion $previousVersion + $found.Version | Should -Be $previousVersion } It "finds package by min. version" { - $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -AllVersions -MinimumVersion $expectedVersion + $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -AllVersions -MinimumVersion $previousVersion $resolvedVersion = $found[$found.length - 1].Version - $resolvedVersion | Should -Be $expectedVersion + $resolvedVersion | Should -Be $previousVersion } It "finds package by max. version" { - $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -MaximumVersion $expectedVersion - $found.Version | Should -Be $expectedVersion + $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -MaximumVersion $previousVersion + $found.Version | Should -Be $previousVersion } } @@ -59,6 +59,13 @@ Describe "Install package" { BeforeAll { Clean-Sources Register-TestPackageSources + } + + BeforeEach { + Uninstall-TestPackage + } + + AfterEach { Uninstall-TestPackage } @@ -68,9 +75,9 @@ Describe "Install package" { } $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force + $installedInChoco = Find-InstalledTestPackage It "installs latest version" { - $installedInChoco = choco list -l | findstr TestPackage $installedInChoco | Should -Be "TestPackage 1.0.3" } @@ -78,11 +85,11 @@ Describe "Install package" { $installed | Should -Not -Be $null } - # It "installs correct version" -Skip { - # $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet ` - # -Version $expectedVersion - # $installed | Should -Not -Be $null - # } + It "installs correct version" { + Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` + -RequiredVersion $previousVersion + Find-InstalledTestPackage | Should -Be "TestPackage $previousVersion" + } # It "installs from correct source" -Skip { # $sourceName = "" diff --git a/Tests/TestHelpers.ps1 b/Tests/TestHelpers.ps1 index bc9f6d7..6e71c5e 100644 --- a/Tests/TestHelpers.ps1 +++ b/Tests/TestHelpers.ps1 @@ -36,4 +36,8 @@ function Register-TestPackageSources(){ function Uninstall-TestPackage(){ # requires atleast one package source Invoke-Expression "choco uninstall $testPackageName -y" +} + +function Find-InstalledTestPackage() { + return choco list -l | findstr $testPackageName } \ No newline at end of file From 6b60c3166198870344c0aac6572525610efd0fea Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 13 Jun 2018 21:34:50 +0200 Subject: [PATCH 74/92] Fixed searching sources --- Tests/Source.Tests.ps1 | 16 +++++++++++----- Tests/TestHelpers.ps1 | 3 ++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Tests/Source.Tests.ps1 b/Tests/Source.Tests.ps1 index d6d6f52..8807413 100644 --- a/Tests/Source.Tests.ps1 +++ b/Tests/Source.Tests.ps1 @@ -62,14 +62,20 @@ Describe "Get package sources" { } It "lists only sources by wildcard" { - $filteredSources = Get-PackageSource -ProviderName $chocolateyOneGet $expectedCertificateSource* + $filteredSources = Get-PackageSource -ProviderName $chocolateyOneGet "*Certificate*" $resolved = $filteredSources | Where-Object { $_.Name -eq $expectedCertificateSource } - $resolved.Count | Should -Be 1 + $resolved.Name | Should -Be $expectedCertificateSource } - It "lists sources by location" { - $byPathSources = Get-PackageSource -ProviderName $chocolateyOneGet -Location $testPackagesPath - $byPathSources.Count | Should -Be 2 + It "lists only sources by name parameter" { + $filteredSources = Get-PackageSource -ProviderName $chocolateyOneGet -Name "*Certificate*" + $resolved = $filteredSources | Where-Object { $_.Name -eq $expectedCertificateSource } + $resolved.Name | Should -Be $expectedCertificateSource + } + + It "lists sources by exact location value" { + $byPathSource = Get-PackageSource -ProviderName $chocolateyOneGet -Location $testPackagesPathWrong + $byPathSource.Name | Should -Be $expectedCertificateSource } $byPathSource = Get-PackageSource -ProviderName $chocolateyOneGet -Location $PSScriptRoot diff --git a/Tests/TestHelpers.ps1 b/Tests/TestHelpers.ps1 index 6e71c5e..4c9d393 100644 --- a/Tests/TestHelpers.ps1 +++ b/Tests/TestHelpers.ps1 @@ -5,6 +5,7 @@ $testPackageName = "TestPackage" $testPackagesPath = Join-Path $PSScriptRoot "..\Build\Output\TestPackages" $testPackagesPath = $(Resolve-Path $testPackagesPath).Path +$testPackagesPathWrong = "$testPackagesPath-Wrong" # If import failed, chocolatey.dll is locked and is necessary to reload powershell # Import-PackageProvider $chocolateyOneGet -force @@ -29,7 +30,7 @@ function Register-TestPackageSources(){ -Priority 10 -BypassProxy -AllowSelfService -VisibleToAdminsOnly ` -Credential $credentials - Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedCertificateSource -Location $testPackagesPath ` + Register-PackageSource -ProviderName $chocolateyOneGet -Name $expectedCertificateSource -Location $testPackagesPathWrong ` -Certificate "testCertificate" -CertificatePassword "testCertificatePassword" } From 281407bf52ddf1e2f71eeb125b12c78c4acc8fa2 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 13 Jun 2018 21:50:24 +0200 Subject: [PATCH 75/92] Added new custom switches to install packages --- Chocolatey-OneGet.psm1 | 11 +++++++++++ Tests/Package.Tests.ps1 | 35 ++++++++++++++++++++++++++--------- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index f4b9be5..7d69c83 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -7,6 +7,9 @@ $optionCertificatePassword = "CertificatePassword" $optionTags = "Tag" $optionAllVersions = "AllVersions" $optionPreRelease = "PrereleaseVersions" +$optionAllowMultiple = "AllowMultipleVersions" +$optionForceDependencies = "ForceDependencies" +$optionPackageParameters = "PackageParameters" $script:wildcardOptions = [System.Management.Automation.WildcardOptions]::CultureInvariant -bor ` [System.Management.Automation.WildcardOptions]::IgnoreCase @@ -48,6 +51,14 @@ function Get-DynamicOptions{ Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionAllVersions -ExpectedType switch -IsRequired $false) Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionPreRelease -ExpectedType switch -IsRequired $false) } + + Install { + Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionAllowMultiple -ExpectedType switch -IsRequired $false) + Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionForceDependencies -ExpectedType switch -IsRequired $false) + Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionPreRelease -ExpectedType switch -IsRequired $false) + Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionPreRelease -ExpectedType switch -IsRequired $false) + Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionPackageParameters -ExpectedType string -IsRequired $false) + } } } diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index a4bf10e..ad4afb1 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -74,7 +74,7 @@ Describe "Install package" { Uninstall-TestPackage } - $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force + $latest = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force $installedInChoco = Find-InstalledTestPackage It "installs latest version" { @@ -82,19 +82,36 @@ Describe "Install package" { } It "reports installed package" { - $installed | Should -Not -Be $null + $latest | Should -Not -Be $null } - It "installs correct version" { + It "installs correct version" -Skip { Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` -RequiredVersion $previousVersion Find-InstalledTestPackage | Should -Be "TestPackage $previousVersion" } - # It "installs from correct source" -Skip { - # $sourceName = "" - # $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet ` - # -Source $sourceName - # $installed | Should -Not -Be $null - # } + It "installs from correct source" { + $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` + -Source $expectedSourceName + $installed | Should -Not -Be $null + } + + It "installs prerelease version" -Skip { + $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` + -PrereleaseVersions + $installed | Should -Not -Be $null + } + + It "installs multiple versions side by side" -Skip { + $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` + -AllowMultipleVersions + $installed | Should -Not -Be $null + } + + It "uses package custom arguments" -Skip { + $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` + -PackageParameters "--custom" + $installed | Should -Not -Be $null + } } \ No newline at end of file From 3bc1907b9502c4b025d5a605ff4e18bebb55d99d Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Thu, 14 Jun 2018 00:44:18 +0200 Subject: [PATCH 76/92] Implemented install package with multiple versions --- Chocolatey-OneGet.psm1 | 12 +++++++----- Tests/Package.Tests.ps1 | 27 ++++++++++++++++----------- Tests/TestHelpers.ps1 | 2 +- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 7d69c83..3e41440 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -56,7 +56,6 @@ function Get-DynamicOptions{ Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionAllowMultiple -ExpectedType switch -IsRequired $false) Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionForceDependencies -ExpectedType switch -IsRequired $false) Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionPreRelease -ExpectedType switch -IsRequired $false) - Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionPreRelease -ExpectedType switch -IsRequired $false) Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionPackageParameters -ExpectedType string -IsRequired $false) } } @@ -317,7 +316,8 @@ function Install-Package { $packageReference = Parse-FastPackageReference $FastPackageReference # No need to check for null, since we build it from valid values - $source = Resolve-PackageSource $packageReference.Source + $source = Resolve-PackageSource $packageReference.Source + $multipleVersions = ParseDynamicOption $optionAllowMultiple $false #TODO needs to solve the source as trusted, otherwise automatic test is not able to execute # use additional chocolatey parameters @@ -328,9 +328,11 @@ function Install-Package { param($config) $config.CommandName = "install" - $config.PackageNames = $packageReference.Name; - $config.Version = $packageReference.Version; - $config.Sources = $packageReference.Source; + $config.PackageNames = $packageReference.Name + $config.Version = $packageReference.Version + $config.Sources = $packageReference.Source + $config.PromptForConfirmation = $False + $config.AllowMultipleVersions = $multipleVersions }); $choco.Run() diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index ad4afb1..abdda81 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -1,6 +1,8 @@ . $PSScriptRoot\TestHelpers.ps1 $previousVersion = "1.0.2" +$latestVersion = "1.0.3" +$prereleaseVersion = "1.1.0-beta1" Describe "Find package" { BeforeAll { @@ -35,7 +37,7 @@ Describe "Find package" { It "finds prerelease versions" { $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -PrereleaseVersions - $found.Version | Should -Be "1.1.0-beta1" + $found.Version | Should -Be $prereleaseVersion } It "finds package by required version" { @@ -78,14 +80,14 @@ Describe "Install package" { $installedInChoco = Find-InstalledTestPackage It "installs latest version" { - $installedInChoco | Should -Be "TestPackage 1.0.3" + $installedInChoco | Should -Be "TestPackage $latestVersion" } It "reports installed package" { - $latest | Should -Not -Be $null + $latest.Version | Should -Be $latestVersion } - It "installs correct version" -Skip { + It "installs correct version" { Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` -RequiredVersion $previousVersion Find-InstalledTestPackage | Should -Be "TestPackage $previousVersion" @@ -94,19 +96,22 @@ Describe "Install package" { It "installs from correct source" { $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` -Source $expectedSourceName - $installed | Should -Not -Be $null + $installed.Source -replace '/',"\" | Should -Be $testPackagesPath } - It "installs prerelease version" -Skip { + It "installs prerelease version" { $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` -PrereleaseVersions - $installed | Should -Not -Be $null + $installed.Version | Should -Be $prereleaseVersion } - It "installs multiple versions side by side" -Skip { - $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` - -AllowMultipleVersions - $installed | Should -Not -Be $null + It "installs multiple versions side by side" { + Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` + -RequiredVersion $previousVersion -AllowMultipleVersions + Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` + -AllowMultipleVersions + $installed = Find-InstalledTestPackage | Sort-Object + $installed | Should -Be @("TestPackage $previousVersion", "TestPackage $latestVersion") } It "uses package custom arguments" -Skip { diff --git a/Tests/TestHelpers.ps1 b/Tests/TestHelpers.ps1 index 4c9d393..29e9b11 100644 --- a/Tests/TestHelpers.ps1 +++ b/Tests/TestHelpers.ps1 @@ -40,5 +40,5 @@ function Uninstall-TestPackage(){ } function Find-InstalledTestPackage() { - return choco list -l | findstr $testPackageName + return choco list -localonly --allversions | findstr $testPackageName } \ No newline at end of file From e0526c72b9ade247fcf4da1879e0b638bf4c8546 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Thu, 28 Jun 2018 23:18:12 +0200 Subject: [PATCH 77/92] Added test to check, if installation arguments were used --- TestPackage/tools/chocolateyinstall.ps1 | 7 ++++- TestPackage/tools/chocolateyuninstall.ps1 | 3 ++- Tests/Package.Tests.ps1 | 32 +++++++++++++++-------- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/TestPackage/tools/chocolateyinstall.ps1 b/TestPackage/tools/chocolateyinstall.ps1 index 342cb74..9d5dd3e 100644 --- a/TestPackage/tools/chocolateyinstall.ps1 +++ b/TestPackage/tools/chocolateyinstall.ps1 @@ -1 +1,6 @@ -# This is empty, since we really install nothing \ No newline at end of file +# Only output the used package parameters to text file +$packageArgs = Get-PackageParameters +Write-Host "Used Test package arguments:" +$packageArgs | ConvertTo-Json | Write-Host +$installLog = "$env:ChocolateyInstall\lib\TestPackage\UsedParams.txt" +$packageArgs | ConvertTo-Json | Out-File $installLog \ No newline at end of file diff --git a/TestPackage/tools/chocolateyuninstall.ps1 b/TestPackage/tools/chocolateyuninstall.ps1 index 342cb74..65c3d87 100644 --- a/TestPackage/tools/chocolateyuninstall.ps1 +++ b/TestPackage/tools/chocolateyuninstall.ps1 @@ -1 +1,2 @@ -# This is empty, since we really install nothing \ No newline at end of file +$installLog = "$env:ChocolateyInstall\lib\TestPackage\UsedParams.txt" +Remove-Item $installLog \ No newline at end of file diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index abdda81..9ac89d8 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -79,33 +79,33 @@ Describe "Install package" { $latest = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force $installedInChoco = Find-InstalledTestPackage - It "installs latest version" { + It "installs latest version" -Skip { $installedInChoco | Should -Be "TestPackage $latestVersion" } - It "reports installed package" { + It "reports installed package" -Skip { $latest.Version | Should -Be $latestVersion } - It "installs correct version" { + It "installs correct version" -Skip { Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` -RequiredVersion $previousVersion Find-InstalledTestPackage | Should -Be "TestPackage $previousVersion" } - It "installs from correct source" { + It "installs from correct source" -Skip { $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` -Source $expectedSourceName $installed.Source -replace '/',"\" | Should -Be $testPackagesPath } - It "installs prerelease version" { + It "installs prerelease version" -Skip { $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` -PrereleaseVersions $installed.Version | Should -Be $prereleaseVersion } - It "installs multiple versions side by side" { + It "installs multiple versions side by side" -Skip { Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` -RequiredVersion $previousVersion -AllowMultipleVersions Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` @@ -114,9 +114,19 @@ Describe "Install package" { $installed | Should -Be @("TestPackage $previousVersion", "TestPackage $latestVersion") } - It "uses package custom arguments" -Skip { - $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` - -PackageParameters "--custom" - $installed | Should -Not -Be $null - } + It "uses package custom arguments" { + Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` + -PackageParameters '"/custom:""Path spaced"" /other:value"' + $installLog = "$env:ChocolateyInstall\lib\TestPackage\UsedParams.txt" + + $parametersJson = ' +{ + "custom": "Path spaced", + "other": "value" +}' + + $installLog | Should -FileContentMatch $parametersJson + } + + # TODO Upgrade package } \ No newline at end of file From 33bac0c404c76d63d2b1e43d5aebf375b2ea1a05 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Sun, 29 Jul 2018 22:31:58 +0200 Subject: [PATCH 78/92] Fixed coding style issues and enabled static code analysis in editor --- .vscode/settings.json | 3 ++ Chocolatey-Helpers.psm1 | 2 +- Chocolatey-OneGet.psm1 | 60 ++++++++++++------------- PSScriptAnalyzerSettings.psd1 | 23 ++++++++++ TestPackage/tools/chocolateyinstall.ps1 | 2 +- Tests/Package.Tests.ps1 | 30 ++++++------- Tests/Source.Tests.ps1 | 22 ++++----- 7 files changed, 84 insertions(+), 58 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 PSScriptAnalyzerSettings.psd1 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..a0672fb --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "powershell.scriptAnalysis.settingsPath": "PSScriptAnalyzerSettings.psd1" +} \ No newline at end of file diff --git a/Chocolatey-Helpers.psm1 b/Chocolatey-Helpers.psm1 index 85c9ec1..c3ad23c 100644 --- a/Chocolatey-Helpers.psm1 +++ b/Chocolatey-Helpers.psm1 @@ -1,6 +1,6 @@ function IsChocolateyInstalled() { $script:chocolateyDir = $null - if ($env:ChocolateyInstall -ne $null) { + if ($null -ne $env:ChocolateyInstall) { $script:chocolateyDir = $env:ChocolateyInstall; } elseif (Test-Path (Join-Path $env:SYSTEMDRIVE Chocolatey)) { diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 3e41440..18b7a5b 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -14,11 +14,11 @@ $optionPackageParameters = "PackageParameters" $script:wildcardOptions = [System.Management.Automation.WildcardOptions]::CultureInvariant -bor ` [System.Management.Automation.WildcardOptions]::IgnoreCase -function Get-PackageProviderName { +function Get-PackageProviderName { return "Chocolatey-OneGet" } -function Initialize-Provider { +function Initialize-Provider { $chocoBinary = Join-Path $PSScriptRoot "\\chocolatey.dll" Add-Type -Path $chocoBinary } @@ -35,7 +35,7 @@ function Get-DynamicOptions{ $category ) - Write-Debug ("Get-DynamicOptions") + Write-Debug ("Get-DynamicOptions") switch($category){ Source { Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionPriority -ExpectedType int -IsRequired $false) @@ -80,11 +80,11 @@ function Resolve-PackageSource { }); $method = $choco.GetType().GetMethod("List") - $gMethod = $method.MakeGenericMethod([chocolatey.infrastructure.app.configuration.ChocolateySource]) + $gMethod = $method.MakeGenericMethod([chocolatey.infrastructure.app.configuration.ChocolateySource]) $registered = $gMethod.Invoke($choco, $Null) - + foreach($pattern in $SourceNames){ - if($request.IsCanceled) { + if($request.IsCanceled) { return; } @@ -154,8 +154,8 @@ function Add-PackageSource { $config.SourceCommand.CertificatePassword = $certificatePassword $credential = $request.Credential - - if ($credential -ne $Null){ + + if ($Null -ne $credential){ $config.SourceCommand.Username = $credential.UserName $config.SourceCommand.Password = $credential.GetNetworkCredential().Password } @@ -204,13 +204,13 @@ function Find-Package { param( [string] $Name, - + [string] $RequiredVersion, - + [string] $MinimumVersion, - + [string] $MaximumVersion ) @@ -224,7 +224,7 @@ function Find-Package { $byIdOnly = -not [string]::IsNullOrEmpty($Name) -or $queryVersions.defined if($sourceNames.Count -eq 0){ - Resolve-PackageSource | ForEach-Object{ + Resolve-PackageSource | ForEach-Object{ $sourceNames += $_.Name } } @@ -237,26 +237,26 @@ function Find-Package { $config.CommandName = "list" $config.Input = $Name - $config.Sources = $source + $config.Sources = $source $config.ListCommand.ByIdOnly = $byIdOnly if($queryVersions.min -eq $queryVersions.max){ $config.Version = $RequiredVersion } - + $config.AllVersions = $allVersions $config.Prerelease = $preRelease }) - + $method = $choco.GetType().GetMethod("List") - $gMethod = $method.MakeGenericMethod([chocolatey.infrastructure.results.PackageResult]) + $gMethod = $method.MakeGenericMethod([chocolatey.infrastructure.results.PackageResult]) $packages = $gMethod.Invoke($choco, $Null) foreach($found in $packages){ - if($request.IsCanceled) { + if($request.IsCanceled) { return } - + # Choco has different usage fo the tag filtering option $package = $found.Package $packageTags = $package.Tags @@ -265,7 +265,7 @@ function Find-Package { foreach($tag in $tags){ $tagFound = $tagFound -or $packageTags.Contains($tag) } - + if(-Not $tagFound){ continue } @@ -277,9 +277,9 @@ function Find-Package { } $packageReference = Build-FastPackageReference $found - $identity = New-SoftwareIdentity $packageReference $found.Name $found.Version "semver" $source $found.Description + $identity = New-SoftwareIdentity $packageReference $found.Name $found.Version "semver" $source $found.Description Write-Output $identity - } + } } function Get-InstalledPackage { @@ -316,7 +316,7 @@ function Install-Package { $packageReference = Parse-FastPackageReference $FastPackageReference # No need to check for null, since we build it from valid values - $source = Resolve-PackageSource $packageReference.Source + $source = Resolve-PackageSource $packageReference.Source $multipleVersions = ParseDynamicOption $optionAllowMultiple $false #TODO needs to solve the source as trusted, otherwise automatic test is not able to execute @@ -336,9 +336,9 @@ function Install-Package { }); $choco.Run() - + $identity = New-SoftwareIdentity $FastPackageReference $packageReference.Name ` - $packageReference.Version "semver" $packageReference.source + $packageReference.Version "semver" $packageReference.source Write-Output $identity } @@ -373,7 +373,7 @@ function Download-Package { #region Helper functions -function Get-Chocolatey{ +function Get-Chocolatey{ $choco = [chocolatey.Lets]::GetChocolatey() return $choco } @@ -411,7 +411,7 @@ function ThrowError(){ $exception = New-Object $exceptionType $exceptionMessage $errorCategory = [System.Management.Automation.ErrorCategory]::InvalidOperation - $errorRecord = New-Object System.Management.Automation.ErrorRecord $exception, "Chocolatey", $errorCategory, $Null + $errorRecord = New-Object System.Management.Automation.ErrorRecord $exception, "Chocolatey", $errorCategory, $Null $PSCmdlet.ThrowTerminatingError($errorRecord) } @@ -443,7 +443,7 @@ function Parse-Version(){ $defined = $true } } - + return @{ "min" = $min "max" = $max "defined" = $defined @@ -460,15 +460,15 @@ function Build-FastPackageReference($package){ if([System.Uri]::TryCreate($package.Source, [System.UriKind]::Absolute, [ref]$parsedUri) -and $parsedUri.IsFile){ $source = $parsedUri.AbsolutePath } - - return "$name|#|$version|#|$source" + + return "$name|#|$version|#|$source" } function Parse-FastPackageReference($fastPackageReference){ $pattern = "(?.*)\|#\|(?.*)\|#\|(?.*)" $regEx = [regex]::new($pattern, $wildcardOptions) $parsed = $regEx.Match($fastPackageReference) - + if($parsed.Success){ $result = @{ Name = $parsed.Groups["Name"].Value diff --git a/PSScriptAnalyzerSettings.psd1 b/PSScriptAnalyzerSettings.psd1 new file mode 100644 index 0000000..3be9451 --- /dev/null +++ b/PSScriptAnalyzerSettings.psd1 @@ -0,0 +1,23 @@ +@{ + IncludeRules = @('PSAvoidAssignmentToAutomaticVariable', + 'PSAvoidDefaultValueSwitchParameter', + 'PSAvoidGlobalAliases', + 'PSAvoidGlobalFunctions', + 'PSAvoidGlobalVars', + 'PSAvoidTrailingWhitespace', + 'PSAvoidUsingCmdletAliases', + 'PSAvoidUsingEmptyCatchBlock', + 'PSMisleadingBacktick', + 'PSMissingModuleManifestField', + 'PSPossibleIncorrectComparisonWithNull', + 'PSPossibleIncorrectUsageOfAssignmentOperator', + 'PSPossibleIncorrectUsageOfRedirectionOperator', + 'PSReservedCmdletChar', + 'PSReservedParams', + 'PSReservedParams', + 'PSShouldProcess', + 'PSUseApprovedVerbs', + 'PSUseDeclaredVarsMoreThanAssignments', + 'PSUseLiteralInitializerForHashtable' + ) +} diff --git a/TestPackage/tools/chocolateyinstall.ps1 b/TestPackage/tools/chocolateyinstall.ps1 index 9d5dd3e..f50e46c 100644 --- a/TestPackage/tools/chocolateyinstall.ps1 +++ b/TestPackage/tools/chocolateyinstall.ps1 @@ -2,5 +2,5 @@ $packageArgs = Get-PackageParameters Write-Host "Used Test package arguments:" $packageArgs | ConvertTo-Json | Write-Host -$installLog = "$env:ChocolateyInstall\lib\TestPackage\UsedParams.txt" +$installLog = "$env:ChocolateyInstall\lib\TestPackage\UsedParams.txt" $packageArgs | ConvertTo-Json | Out-File $installLog \ No newline at end of file diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index 9ac89d8..c90dddc 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -5,12 +5,12 @@ $latestVersion = "1.0.3" $prereleaseVersion = "1.1.0-beta1" Describe "Find package" { - BeforeAll { + BeforeAll { Clean-Sources Register-TestPackageSources } - AfterAll { + AfterAll { Clean-Sources } @@ -51,14 +51,14 @@ Describe "Find package" { $resolvedVersion | Should -Be $previousVersion } - It "finds package by max. version" { + It "finds package by max. version" { $found = Find-Package -Name $testPackageName -ProviderName $chocolateyOneGet -MaximumVersion $previousVersion $found.Version | Should -Be $previousVersion } } Describe "Install package" { - BeforeAll { + BeforeAll { Clean-Sources Register-TestPackageSources } @@ -71,37 +71,37 @@ Describe "Install package" { Uninstall-TestPackage } - AfterAll { + AfterAll { Clean-Sources Uninstall-TestPackage } $latest = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force - $installedInChoco = Find-InstalledTestPackage + $installedInChoco = Find-InstalledTestPackage - It "installs latest version" -Skip { + It "installs latest version" -Skip { $installedInChoco | Should -Be "TestPackage $latestVersion" } - It "reports installed package" -Skip { + It "reports installed package" -Skip { $latest.Version | Should -Be $latestVersion } - It "installs correct version" -Skip { + It "installs correct version" -Skip { Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` -RequiredVersion $previousVersion Find-InstalledTestPackage | Should -Be "TestPackage $previousVersion" } - It "installs from correct source" -Skip { + It "installs from correct source" -Skip { $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` - -Source $expectedSourceName + -Source $expectedSourceName $installed.Source -replace '/',"\" | Should -Be $testPackagesPath } It "installs prerelease version" -Skip { $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` - -PrereleaseVersions + -PrereleaseVersions $installed.Version | Should -Be $prereleaseVersion } @@ -117,14 +117,14 @@ Describe "Install package" { It "uses package custom arguments" { Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` -PackageParameters '"/custom:""Path spaced"" /other:value"' - $installLog = "$env:ChocolateyInstall\lib\TestPackage\UsedParams.txt" - + $installLog = "$env:ChocolateyInstall\lib\TestPackage\UsedParams.txt" + $parametersJson = ' { "custom": "Path spaced", "other": "value" }' - + $installLog | Should -FileContentMatch $parametersJson } diff --git a/Tests/Source.Tests.ps1 b/Tests/Source.Tests.ps1 index 8807413..822bf8f 100644 --- a/Tests/Source.Tests.ps1 +++ b/Tests/Source.Tests.ps1 @@ -1,14 +1,14 @@ . $PSScriptRoot\TestHelpers.ps1 Describe "Add packages source" { - BeforeAll { - Clean-Sources + BeforeAll { + Clean-Sources } AfterAll { - Clean-Sources + Clean-Sources } - + Register-TestPackageSources $registeredSource = Get-ChocolateySource @@ -51,7 +51,7 @@ Describe "Get package sources" { Register-TestPackageSources } - AfterAll { + AfterAll { Clean-Sources } @@ -64,13 +64,13 @@ Describe "Get package sources" { It "lists only sources by wildcard" { $filteredSources = Get-PackageSource -ProviderName $chocolateyOneGet "*Certificate*" $resolved = $filteredSources | Where-Object { $_.Name -eq $expectedCertificateSource } - $resolved.Name | Should -Be $expectedCertificateSource + $resolved.Name | Should -Be $expectedCertificateSource } It "lists only sources by name parameter" { $filteredSources = Get-PackageSource -ProviderName $chocolateyOneGet -Name "*Certificate*" $resolved = $filteredSources | Where-Object { $_.Name -eq $expectedCertificateSource } - $resolved.Name | Should -Be $expectedCertificateSource + $resolved.Name | Should -Be $expectedCertificateSource } It "lists sources by exact location value" { @@ -80,22 +80,22 @@ Describe "Get package sources" { $byPathSource = Get-PackageSource -ProviderName $chocolateyOneGet -Location $PSScriptRoot - It "not registered location returns source by its location" { + It "not registered location returns source by its location" { $byPathSource.Location | Should -Be $PSScriptRoot } - It "not registered location returns not registered source" { + It "not registered location returns not registered source" { $byPathSource.IsRegistered | Should -Be $false } } Describe "Unregister package source" { - BeforeAll { + BeforeAll { Clean-Sources Register-TestPackageSources } - AfterAll { + AfterAll { Clean-Sources } From ba04fd480591ac26cf9e18f26dd6519ac2db2bfb Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Mon, 6 Aug 2018 19:56:03 +0200 Subject: [PATCH 79/92] Implemented custom parameters ton install package --- Chocolatey-OneGet.psm1 | 6 ++---- Tests/Package.Tests.ps1 | 13 +++++-------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 18b7a5b..6fc9b71 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -315,13 +315,10 @@ function Install-Package { ) $packageReference = Parse-FastPackageReference $FastPackageReference - # No need to check for null, since we build it from valid values - $source = Resolve-PackageSource $packageReference.Source $multipleVersions = ParseDynamicOption $optionAllowMultiple $false + $packageArgs = ParseDynamicOption $optionPackageParameters "" #TODO needs to solve the source as trusted, otherwise automatic test is not able to execute - # use additional chocolatey parameters - # provide additional installer parameters - extend the testpackage $choco = Get-Chocolatey $choco = $choco.Set({ @@ -333,6 +330,7 @@ function Install-Package { $config.Sources = $packageReference.Source $config.PromptForConfirmation = $False $config.AllowMultipleVersions = $multipleVersions + $config.PackageParameters = $packageArgs }); $choco.Run() diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index c90dddc..fd99799 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -116,16 +116,13 @@ Describe "Install package" { It "uses package custom arguments" { Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` - -PackageParameters '"/custom:""Path spaced"" /other:value"' + -PackageParameters '/customA:""Path spaced"" /customB:""value""' $installLog = "$env:ChocolateyInstall\lib\TestPackage\UsedParams.txt" - $parametersJson = ' -{ - "custom": "Path spaced", - "other": "value" -}' - - $installLog | Should -FileContentMatch $parametersJson + $expected = ConvertFrom-Json '{ "customA": "\"Path spaced\"", "customB": "\"value\"" }' + $installed = ConvertFrom-Json (-Join (Get-Content $installLog)) + $resultsEqual = $expected.custom -eq $installed.custom -and $expected.other -eq $installed.other + $resultsEqual | Should -Be $true } # TODO Upgrade package From d62d10b158ff1fcfffe419ae607f096bfb29f1ff Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Mon, 6 Aug 2018 20:28:55 +0200 Subject: [PATCH 80/92] Implemented upgrade package --- Chocolatey-OneGet.psm1 | 10 +++++++++- Tests/Package.Tests.ps1 | 11 +++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 6fc9b71..d7f5e8c 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -10,6 +10,7 @@ $optionPreRelease = "PrereleaseVersions" $optionAllowMultiple = "AllowMultipleVersions" $optionForceDependencies = "ForceDependencies" $optionPackageParameters = "PackageParameters" +$optionUpgrade = "Upgrade" $script:wildcardOptions = [System.Management.Automation.WildcardOptions]::CultureInvariant -bor ` [System.Management.Automation.WildcardOptions]::IgnoreCase @@ -57,6 +58,7 @@ function Get-DynamicOptions{ Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionForceDependencies -ExpectedType switch -IsRequired $false) Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionPreRelease -ExpectedType switch -IsRequired $false) Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionPackageParameters -ExpectedType string -IsRequired $false) + Write-Output -InputObject (New-DynamicOption -Category $category -Name $optionUpgrade -ExpectedType switch -IsRequired $false) } } } @@ -317,6 +319,12 @@ function Install-Package { $packageReference = Parse-FastPackageReference $FastPackageReference $multipleVersions = ParseDynamicOption $optionAllowMultiple $false $packageArgs = ParseDynamicOption $optionPackageParameters "" + $upgrade = ParseDynamicOption $optionUpgrade $false + $installCommand = [chocolatey.infrastructure.app.domain.CommandNameType]::install + + if ($upgrade) { + $installCommand = [chocolatey.infrastructure.app.domain.CommandNameType]::upgrade + } #TODO needs to solve the source as trusted, otherwise automatic test is not able to execute @@ -324,7 +332,7 @@ function Install-Package { $choco = $choco.Set({ param($config) - $config.CommandName = "install" + $config.CommandName = $installCommand $config.PackageNames = $packageReference.Name $config.Version = $packageReference.Version $config.Sources = $packageReference.Source diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index fd99799..6ff54cb 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -114,7 +114,7 @@ Describe "Install package" { $installed | Should -Be @("TestPackage $previousVersion", "TestPackage $latestVersion") } - It "uses package custom arguments" { + It "uses package custom arguments" -Skip { Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` -PackageParameters '/customA:""Path spaced"" /customB:""value""' $installLog = "$env:ChocolateyInstall\lib\TestPackage\UsedParams.txt" @@ -125,5 +125,12 @@ Describe "Install package" { $resultsEqual | Should -Be $true } - # TODO Upgrade package + It "upgrades package" { + Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` + -RequiredVersion $previousVersion + Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` + -Upgrade + + Find-InstalledTestPackage | Should -Be "TestPackage $latestVersion" + } } \ No newline at end of file From c87c9ed12c0f86699f5055e16b5d5b11380433a4 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Tue, 7 Aug 2018 23:51:57 +0200 Subject: [PATCH 81/92] Fixed package install scripts --- Build/psakefile.ps1 | 7 ++++--- TestPackage/tools/chocolateyinstall.ps1 | 5 +++-- TestPackage/tools/chocolateyuninstall.ps1 | 2 +- Tests/Package.Tests.ps1 | 14 +++++++------- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index 57d1fdb..8ae1a5f 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -5,6 +5,7 @@ $outputRepository = "$moduleName-OutputRepository" $installedModule = "$home\Documents\WindowsPowerShell\Modules\$moduleName" $moduleVersion = "0.10.9" $testsFilter = "*" # all by default +#$testsFilter = "Install package" Task Default -Depends ` Build,` @@ -49,11 +50,11 @@ Task Register-OutputRepository { Task Compile-TestPackage { $testPackages = Join-Path $targetFolder "TestPackages" - + if(-Not (Test-Path $testPackages)){ mkdir $testPackages | Out-Null } - + Exec { choco pack ..\TestPackage\TestPackage.nuspec --outputdirectory $testPackages --version=1.0.1 choco pack ..\TestPackage\TestPackage.nuspec --outputdirectory $testPackages --version=1.0.2 @@ -96,7 +97,7 @@ function Copy-ToTargetFolder(){ if(-Not (Test-Path $targetFolder)){ mkdir $targetFolder | Out-Null } - + Copy-Item -Path "..\$moduleName.psd1" -Destination "$targetFolder\$moduleName.psd1" -Force Copy-Item -Path "..\$moduleName.psm1" -Destination "$targetFolder\$moduleName.psm1" -Force Copy-Item -Path "..\Chocolatey-Helpers.psm1" -Destination "$targetFolder\Chocolatey-Helpers.psm1" -Force diff --git a/TestPackage/tools/chocolateyinstall.ps1 b/TestPackage/tools/chocolateyinstall.ps1 index f50e46c..eca17d8 100644 --- a/TestPackage/tools/chocolateyinstall.ps1 +++ b/TestPackage/tools/chocolateyinstall.ps1 @@ -1,6 +1,7 @@ # Only output the used package parameters to text file $packageArgs = Get-PackageParameters Write-Host "Used Test package arguments:" -$packageArgs | ConvertTo-Json | Write-Host -$installLog = "$env:ChocolateyInstall\lib\TestPackage\UsedParams.txt" +$toReportDir = "$env:ChocolateyInstall\lib\TestPackage" +New-Item -Type Directory $toReportDir -ErrorAction SilentlyContinue | Out-Null +$installLog = "$toReportDir\UsedParams.txt" $packageArgs | ConvertTo-Json | Out-File $installLog \ No newline at end of file diff --git a/TestPackage/tools/chocolateyuninstall.ps1 b/TestPackage/tools/chocolateyuninstall.ps1 index 65c3d87..0b0c1fb 100644 --- a/TestPackage/tools/chocolateyuninstall.ps1 +++ b/TestPackage/tools/chocolateyuninstall.ps1 @@ -1,2 +1,2 @@ $installLog = "$env:ChocolateyInstall\lib\TestPackage\UsedParams.txt" -Remove-Item $installLog \ No newline at end of file +Remove-Item $installLog -ErrorAction SilentlyContinue | Out-Null \ No newline at end of file diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index 6ff54cb..f567fb4 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -79,33 +79,33 @@ Describe "Install package" { $latest = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force $installedInChoco = Find-InstalledTestPackage - It "installs latest version" -Skip { + It "installs latest version" { $installedInChoco | Should -Be "TestPackage $latestVersion" } - It "reports installed package" -Skip { + It "reports installed package" { $latest.Version | Should -Be $latestVersion } - It "installs correct version" -Skip { + It "installs correct version" { Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` -RequiredVersion $previousVersion Find-InstalledTestPackage | Should -Be "TestPackage $previousVersion" } - It "installs from correct source" -Skip { + It "installs from correct source" { $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` -Source $expectedSourceName $installed.Source -replace '/',"\" | Should -Be $testPackagesPath } - It "installs prerelease version" -Skip { + It "installs prerelease version" { $installed = Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` -PrereleaseVersions $installed.Version | Should -Be $prereleaseVersion } - It "installs multiple versions side by side" -Skip { + It "installs multiple versions side by side" { Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` -RequiredVersion $previousVersion -AllowMultipleVersions Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` @@ -114,7 +114,7 @@ Describe "Install package" { $installed | Should -Be @("TestPackage $previousVersion", "TestPackage $latestVersion") } - It "uses package custom arguments" -Skip { + It "uses package custom arguments" { Install-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force ` -PackageParameters '/customA:""Path spaced"" /customB:""value""' $installLog = "$env:ChocolateyInstall\lib\TestPackage\UsedParams.txt" From a084a76f34884555d7a847dffd27f0091e2a2b08 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 8 Aug 2018 00:12:54 +0200 Subject: [PATCH 82/92] Added documentation how to install package --- README.md | 4 ++-- docs/howto.md | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1527987..e1b7a94 100644 --- a/README.md +++ b/README.md @@ -24,8 +24,8 @@ This part contains plain PowerShell implementation of the provider, development * [x] Add-PackageSource * [x] Remove-PackageSource * [x] Find-Package - * [ ] Install-Package - IN PROGRESS - * [ ] Get-InstalledPackage + * [x] Install-Package + * [ ] Get-InstalledPackage - IN PROGRESS * [ ] UnInstall-Package * [ ] Download-Package diff --git a/docs/howto.md b/docs/howto.md index 0542bd2..2ef70d0 100644 --- a/docs/howto.md +++ b/docs/howto.md @@ -110,4 +110,25 @@ Find-Package -ProviderName Chocolatey-OneGet -Tag @("TagC", "TagA") Find-Package -Name $packageName -ProviderName Chocolatey-OneGet -AllVersions # Find latest version of package including prerelease versions Find-Package -Name $packageName -ProviderName Chocolatey-OneGet -PrereleaseVersions +``` + +## 6. Install package + +Because of wide range of chocolatey install arguments not all arguments are supported. Also keep in mind to [escape custom package parameters](https://github.com/chocolatey/choco/wiki/CommandsReference#how-to-pass-options--switches). See following examples + +```powershell +# install latest version of package available on any registered compatible source +Install-Package -Name $packageName -ProviderName Chocolatey-OneGet +# install required version +Install-Package -Name $packageName -ProviderName Chocolatey-OneGet -RequiredVersion 2.18.0 +# install from required source +Install-Package -Name $packageName -ProviderName Chocolatey-OneGet -Source $sourceName +# install prerelease version +Install-Package -Name $packageName -ProviderName Chocolatey-OneGet -PrereleaseVersions +# install multiple versions side by side +Install-Package -Name $packageName -ProviderName Chocolatey-OneGet -AllowMultipleVersions +# install using custom package arguments +Install-Package -Name $packageName -ProviderName Chocolatey-OneGet -PackageParameters '/customA:""Path spaced"" /customB:""value""' +# upgrade package +Install-Package -Name $packageName -ProviderName Chocolatey-OneGet -Upgrade ``` \ No newline at end of file From 90016e2a32a932f45904f6a6fb757b2d5a858040 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 8 Aug 2018 00:34:10 +0200 Subject: [PATCH 83/92] Added test to find installed packages --- Build/psakefile.ps1 | 2 +- Tests/Package.Tests.ps1 | 38 ++++++++++++++++++++++++++++++++++++++ Tests/TestHelpers.ps1 | 7 ++++++- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index 8ae1a5f..681365f 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -5,7 +5,7 @@ $outputRepository = "$moduleName-OutputRepository" $installedModule = "$home\Documents\WindowsPowerShell\Modules\$moduleName" $moduleVersion = "0.10.9" $testsFilter = "*" # all by default -#$testsFilter = "Install package" +$testsFilter = "Get installed package" Task Default -Depends ` Build,` diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index f567fb4..6b4c449 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -133,4 +133,42 @@ Describe "Install package" { Find-InstalledTestPackage | Should -Be "TestPackage $latestVersion" } +} + +Describe "Get installed package" { + BeforeAll { + Clean-Sources + Register-TestPackageSources + } + + BeforeEach { + Install-TestPackage + } + + AfterEach { + Uninstall-TestPackage + } + + AfterAll { + Clean-Sources + Uninstall-TestPackage + } + + It "lists all installed packages" -skip { + $result = Get-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force + + $result | Should -Be "TestPackage $latestVersion" + } + + It "finds installed package by name" -skip { + } + + It "lists required package version" -skip { + } + + It "lists by maximum version number" -skip { + } + + It "lists by minimum version number" -skip { + } } \ No newline at end of file diff --git a/Tests/TestHelpers.ps1 b/Tests/TestHelpers.ps1 index 29e9b11..9b65b90 100644 --- a/Tests/TestHelpers.ps1 +++ b/Tests/TestHelpers.ps1 @@ -36,7 +36,12 @@ function Register-TestPackageSources(){ function Uninstall-TestPackage(){ # requires atleast one package source - Invoke-Expression "choco uninstall $testPackageName -y" + Invoke-Expression "choco uninstall $testPackageName -yf" +} + +function Install-TestPackage(){ + # requires atleast one package source + Invoke-Expression "choco install $testPackageName -yf" } function Find-InstalledTestPackage() { From 7724808008261f674920f9db6489cf3deac0f380 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 8 Aug 2018 17:35:05 +0200 Subject: [PATCH 84/92] Replaced source command by constant --- Chocolatey-OneGet.psm1 | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index d7f5e8c..b5c4f8d 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -1,3 +1,4 @@ +$sourceCommandName = "source" $optionPriority = "Priority" $optionBypassProxy = "BypassProxy" $optionAllowSelfService = "AllowSelfService" @@ -76,7 +77,7 @@ function Resolve-PackageSource { $choco = $choco.Set({ param($config) - $config.CommandName = "source" + $config.CommandName = $sourceCommandName $config.SourceCommand.Command = [chocolatey.infrastructure.app.domain.SourceCommandType]::list $config.QuietOutput = $True }); @@ -144,7 +145,7 @@ function Add-PackageSource { $choco = $choco.Set({ param($config) - $config.CommandName = "source" + $config.CommandName = $sourceCommandName $config.SourceCommand.Command = [chocolatey.infrastructure.app.domain.SourceCommandType]::add $config.SourceCommand.Name = $Name $config.Sources = $Location @@ -193,7 +194,7 @@ function Remove-PackageSource { $choco = $choco.Set({ param($config) - $config.CommandName = "source" + $config.CommandName = $sourceCommandName $config.SourceCommand.Command = [chocolatey.infrastructure.app.domain.SourceCommandType]::remove $config.SourceCommand.Name = $Name }); @@ -237,7 +238,8 @@ function Find-Package { $choco = $choco.Set({ param($config) - $config.CommandName = "list" + $config.CommandName = [chocolatey.infrastructure.app.domain.CommandNameType]::list + $config.Input = $Name $config.Sources = $source $config.ListCommand.ByIdOnly = $byIdOnly From 99dc9572a33c24ee18660f0daa3b2aa977f3d798 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 8 Aug 2018 19:32:21 +0200 Subject: [PATCH 85/92] Reused find package method for local and remote scope --- Chocolatey-OneGet.psm1 | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index b5c4f8d..cc1bd62 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -218,6 +218,27 @@ function Find-Package { $MaximumVersion ) + Find-ChocoPackage $Name $RequiredVersion $MinimumVersion $MaximumVersion | Write-Output +} +function Find-ChocoPackage { + [CmdletBinding()] + param( + [string] + $Name, + + [string] + $RequiredVersion, + + [string] + $MinimumVersion, + + [string] + $MaximumVersion, + + [switch] + $localScope + ) + $sourceNames = $Request.PackageSources $tags = ParseDynamicOption $optionTags @() $allVersions = ParseDynamicOption $optionAllVersions $false @@ -243,6 +264,7 @@ function Find-Package { $config.Input = $Name $config.Sources = $source $config.ListCommand.ByIdOnly = $byIdOnly + $config.ListCommand.LocalOnly = $localScope if($queryVersions.min -eq $queryVersions.max){ $config.Version = $RequiredVersion @@ -306,7 +328,7 @@ function Get-InstalledPackage { $MaximumVersion ) - #TODO + Find-ChocoPackage $Name $RequiredVersion $MinimumVersion $MaximumVersion -localScope | Write-Output } function Install-Package { From ee9dbdaa27b31009948e92cd0c60a7b660e1e407 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 8 Aug 2018 20:43:40 +0200 Subject: [PATCH 86/92] Implemented get package tests --- Build/psakefile.ps1 | 2 +- TestPackage/tools/chocolateyinstall.ps1 | 1 - Tests/Package.Tests.ps1 | 39 ++++++++++++------------- Tests/TestHelpers.ps1 | 11 +++++-- 4 files changed, 27 insertions(+), 26 deletions(-) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index 681365f..a3c6991 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -5,7 +5,7 @@ $outputRepository = "$moduleName-OutputRepository" $installedModule = "$home\Documents\WindowsPowerShell\Modules\$moduleName" $moduleVersion = "0.10.9" $testsFilter = "*" # all by default -$testsFilter = "Get installed package" +#$testsFilter = "Get installed package" Task Default -Depends ` Build,` diff --git a/TestPackage/tools/chocolateyinstall.ps1 b/TestPackage/tools/chocolateyinstall.ps1 index eca17d8..72988de 100644 --- a/TestPackage/tools/chocolateyinstall.ps1 +++ b/TestPackage/tools/chocolateyinstall.ps1 @@ -1,6 +1,5 @@ # Only output the used package parameters to text file $packageArgs = Get-PackageParameters -Write-Host "Used Test package arguments:" $toReportDir = "$env:ChocolateyInstall\lib\TestPackage" New-Item -Type Directory $toReportDir -ErrorAction SilentlyContinue | Out-Null $installLog = "$toReportDir\UsedParams.txt" diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index 6b4c449..1587c41 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -1,9 +1,5 @@ . $PSScriptRoot\TestHelpers.ps1 -$previousVersion = "1.0.2" -$latestVersion = "1.0.3" -$prereleaseVersion = "1.1.0-beta1" - Describe "Find package" { BeforeAll { Clean-Sources @@ -139,36 +135,37 @@ Describe "Get installed package" { BeforeAll { Clean-Sources Register-TestPackageSources - } - - BeforeEach { - Install-TestPackage - } - - AfterEach { - Uninstall-TestPackage + Install-TestPackages } AfterAll { - Clean-Sources Uninstall-TestPackage + Clean-Sources } - It "lists all installed packages" -skip { - $result = Get-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force - - $result | Should -Be "TestPackage $latestVersion" + It "finds all installed package versions" { + $found = Get-Package -Name $testPackageName -ProviderName $chocolateyOneGet -AllVersions -Force + $found.Count | Should -Be 3 } - It "finds installed package by name" -skip { + It "finds installed package by name" { + $found = Get-Package -Name $testPackageName -ProviderName $chocolateyOneGet -Force + $found.Name | Should -Be $testPackageName } - It "lists required package version" -skip { + It "finds required package version" { + $found = Get-Package -Name $testPackageName -ProviderName $chocolateyOneGet -RequiredVersion $previousVersion + $found.Version | Should -Be $previousVersion } - It "lists by maximum version number" -skip { + It "finds by minimum version number" { + # allversions switch cant be used here, so we test latest available + $found = Get-Package -Name $testPackageName -ProviderName $chocolateyOneGet -MinimumVersion $prereleaseVersion + $found.Version | Should -Be $prereleaseVersion } - It "lists by minimum version number" -skip { + It "finds by maximum version number" { + $found = Get-Package -Name $testPackageName -ProviderName $chocolateyOneGet -MaximumVersion $previousVersion + $found.Version | Should -Be $previousVersion } } \ No newline at end of file diff --git a/Tests/TestHelpers.ps1 b/Tests/TestHelpers.ps1 index 9b65b90..7c875e4 100644 --- a/Tests/TestHelpers.ps1 +++ b/Tests/TestHelpers.ps1 @@ -2,6 +2,9 @@ $chocolateyOneGet = "Chocolatey-OneGet" $expectedSourceName = "Chocolatey-TestScriptRoot" $expectedCertificateSource = "Chocolatey-CertificateTestScriptRoot" $testPackageName = "TestPackage" +$previousVersion = "1.0.2" +$latestVersion = "1.0.3" +$prereleaseVersion = "1.1.0-beta1" $testPackagesPath = Join-Path $PSScriptRoot "..\Build\Output\TestPackages" $testPackagesPath = $(Resolve-Path $testPackagesPath).Path @@ -36,12 +39,14 @@ function Register-TestPackageSources(){ function Uninstall-TestPackage(){ # requires atleast one package source - Invoke-Expression "choco uninstall $testPackageName -yf" + Invoke-Expression "choco uninstall $testPackageName --all-versions --yes --force" } -function Install-TestPackage(){ +function Install-TestPackages(){ # requires atleast one package source - Invoke-Expression "choco install $testPackageName -yf" + Invoke-Expression "choco install $testPackageName --version $previousVersion --yes --allow-multiple-versions --force" + Invoke-Expression "choco install $testPackageName --version $latestVersion --yes --allow-multiple-versions --force" + Invoke-Expression "choco install $testPackageName --version $prereleaseVersion --prerelease --yes --allow-multiple-versions --force" } function Find-InstalledTestPackage() { From db204545564479bcd0d4c39f3219f6730e9d1e72 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 8 Aug 2018 20:59:39 +0200 Subject: [PATCH 87/92] updated readme and doc for get installed package --- README.md | 4 ++-- docs/howto.md | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e1b7a94..e1828af 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,8 @@ This part contains plain PowerShell implementation of the provider, development * [x] Remove-PackageSource * [x] Find-Package * [x] Install-Package - * [ ] Get-InstalledPackage - IN PROGRESS - * [ ] UnInstall-Package + * [x] Get-InstalledPackage + * [ ] UnInstall-Package - IN PROGRESS * [ ] Download-Package Not implemented diff --git a/docs/howto.md b/docs/howto.md index 2ef70d0..98922b9 100644 --- a/docs/howto.md +++ b/docs/howto.md @@ -110,6 +110,8 @@ Find-Package -ProviderName Chocolatey-OneGet -Tag @("TagC", "TagA") Find-Package -Name $packageName -ProviderName Chocolatey-OneGet -AllVersions # Find latest version of package including prerelease versions Find-Package -Name $packageName -ProviderName Chocolatey-OneGet -PrereleaseVersions +# search for exact version (similar usage by -MinimumVersion or -MaximumVersion) +Find-Package -Name $packageName -ProviderName Chocolatey-OneGet -RequiredVersion 2.18.0 ``` ## 6. Install package @@ -131,4 +133,21 @@ Install-Package -Name $packageName -ProviderName Chocolatey-OneGet -AllowMultipl Install-Package -Name $packageName -ProviderName Chocolatey-OneGet -PackageParameters '/customA:""Path spaced"" /customB:""value""' # upgrade package Install-Package -Name $packageName -ProviderName Chocolatey-OneGet -Upgrade +``` + +## 7. Get installed package + +To search for installed package is similar to searching for package in remote source by `Find-Package`. See examples + + > **NOTE:** Switch `-AllVersions` can't be used together with `-RequiredVersion` `-MinimumVersion` or `-MaximumVersion` + +```powershell +# list all installed packages (only latest version per package) +Get-Package -ProviderName Chocolatey-OneGet +#find installed package by name +Get-Package -Name $packageName -ProviderName Chocolatey-OneGet +# find all installed package versions +Get-Package -Name $packageName -ProviderName Chocolatey-OneGet -AllVersions +# find required package version (similar usage by -MinimumVersion or -MaximumVersion) +Get-Package -Name $packageName -ProviderName Chocolatey-OneGet -RequiredVersion 2.18.0 ``` \ No newline at end of file From 9a2de2ed7a548dceb00db633112bf8b93a15b834 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 8 Aug 2018 22:01:42 +0200 Subject: [PATCH 88/92] Implemented uninstall package --- Build/psakefile.ps1 | 2 +- Chocolatey-OneGet.psm1 | 19 ++++++++++++++++++- Tests/Package.Tests.ps1 | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/Build/psakefile.ps1 b/Build/psakefile.ps1 index a3c6991..35c2dbf 100644 --- a/Build/psakefile.ps1 +++ b/Build/psakefile.ps1 @@ -5,7 +5,7 @@ $outputRepository = "$moduleName-OutputRepository" $installedModule = "$home\Documents\WindowsPowerShell\Modules\$moduleName" $moduleVersion = "0.10.9" $testsFilter = "*" # all by default -#$testsFilter = "Get installed package" +#$testsFilter = "Uninstall package" Task Default -Depends ` Build,` diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index cc1bd62..1a4879d 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -363,6 +363,7 @@ function Install-Package { $config.PromptForConfirmation = $False $config.AllowMultipleVersions = $multipleVersions $config.PackageParameters = $packageArgs + $config.Features.UsePackageExitCodes = $false }); $choco.Run() @@ -381,7 +382,23 @@ function UnInstall-Package { $FastPackageReference ) - #TODO + $packageReference = Parse-FastPackageReference $FastPackageReference + + $choco = Get-Chocolatey + $choco = $choco.Set({ + param($config) + + $config.CommandName = [chocolatey.infrastructure.app.domain.CommandNameType]::uninstall + $config.PackageNames = $packageReference.Name + $config.Features.UsePackageExitCodes = $false + $config.Version = $packageReference.Version + }); + + $choco.Run() + + $identity = New-SoftwareIdentity $FastPackageReference $packageReference.Name ` + $packageReference.Version "semver" $packageReference.source + Write-Output $identity } function Download-Package { diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index 1587c41..666aa57 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -168,4 +168,39 @@ Describe "Get installed package" { $found = Get-Package -Name $testPackageName -ProviderName $chocolateyOneGet -MaximumVersion $previousVersion $found.Version | Should -Be $previousVersion } +} + +Describe "Uninstall package" { + BeforeAll { + Clean-Sources + Register-TestPackageSources + Install-TestPackages + } + + AfterAll { + Uninstall-TestPackage + Clean-Sources + } + + $removed = Uninstall-Package -Name $testPackageName -ProviderName $chocolateyOneGet -RequiredVersion $latestVersion + + It "reports removed package name" { + $removed.Name | Should -Be $testPackageName + } + + It "reports removed package version" { + $removed.Version | Should -Be $latestVersion + } + + It "removes package from chocolatey" { + $installed = Find-InstalledTestPackage | Sort-Object + $installed | Should -Be @("TestPackage $previousVersion", "TestPackage $prereleaseVersion") + } + + It "removes all versions" { + Install-TestPackages + Uninstall-Package -Name $testPackageName -ProviderName $chocolateyOneGet -AllVersions + $installed = Find-InstalledTestPackage + $installed | Should -Be $null + } } \ No newline at end of file From e66c5675499e9e73b0d3220aec0695cb366ce84d Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 8 Aug 2018 22:14:30 +0200 Subject: [PATCH 89/92] Added uninstall documentation --- README.md | 4 ++-- docs/howto.md | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e1828af..6b7caff 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,8 @@ This part contains plain PowerShell implementation of the provider, development * [x] Find-Package * [x] Install-Package * [x] Get-InstalledPackage - * [ ] UnInstall-Package - IN PROGRESS - * [ ] Download-Package + * [x] UnInstall-Package + * [ ] Download-Package - IN PROGRESS Not implemented * Trusted package sources diff --git a/docs/howto.md b/docs/howto.md index 98922b9..d3362f9 100644 --- a/docs/howto.md +++ b/docs/howto.md @@ -150,4 +150,17 @@ Get-Package -Name $packageName -ProviderName Chocolatey-OneGet Get-Package -Name $packageName -ProviderName Chocolatey-OneGet -AllVersions # find required package version (similar usage by -MinimumVersion or -MaximumVersion) Get-Package -Name $packageName -ProviderName Chocolatey-OneGet -RequiredVersion 2.18.0 +``` + +## 8. Uninstall package + +If no version is provided and multiple versions are installed, only latest version is uninstalled. To uninstall all versions of the package use `-AllVersions` switch. + +```powershell +# remove only latest version +Uninstall-Package -Name $packageName -ProviderName Chocolatey-OneGet +# remove concrete version only +Uninstall-Package -Name $packageName -ProviderName Chocolatey-OneGet -RequiredVersion 2.18.0 +# remove all versions +Uninstall-Package -Name $packageName -ProviderName Chocolatey-OneGet -AllVersions ``` \ No newline at end of file From 546cbb5c4aff89ad14f6e3d5634897fc8ee32a55 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 8 Aug 2018 22:31:59 +0200 Subject: [PATCH 90/92] Removed obsolete C# implementation --- Obsolete/.nuget/NuGet.Config | 6 - Obsolete/.nuget/NuGet.exe | Bin 777728 -> 0 bytes Obsolete/.nuget/NuGet.targets | 144 ------- Obsolete/ChocolateyPackageProvider.cs | 533 ------------------------ Obsolete/ChocolateyProvider.csproj | 102 ----- Obsolete/ChocolateyProvider.sln | 29 -- Obsolete/Properties/AssemblyInfo.cs | 53 --- Obsolete/RequestHelper.cs | 32 -- Obsolete/RequestLogger.cs | 82 ---- Obsolete/Resources/Messages.Designer.cs | 73 ---- Obsolete/Resources/Messages.resx | 102 ----- Obsolete/Sdk/Constants.cs | 116 ------ Obsolete/Sdk/ErrorCategory.cs | 53 --- Obsolete/Sdk/Request.cs | 340 --------------- Obsolete/install-provider.ps1 | 72 ---- Obsolete/packages.config | 7 - Obsolete/provider.manifest | 9 - README.md | 30 +- 18 files changed, 13 insertions(+), 1770 deletions(-) delete mode 100644 Obsolete/.nuget/NuGet.Config delete mode 100644 Obsolete/.nuget/NuGet.exe delete mode 100644 Obsolete/.nuget/NuGet.targets delete mode 100644 Obsolete/ChocolateyPackageProvider.cs delete mode 100644 Obsolete/ChocolateyProvider.csproj delete mode 100644 Obsolete/ChocolateyProvider.sln delete mode 100644 Obsolete/Properties/AssemblyInfo.cs delete mode 100644 Obsolete/RequestHelper.cs delete mode 100644 Obsolete/RequestLogger.cs delete mode 100644 Obsolete/Resources/Messages.Designer.cs delete mode 100644 Obsolete/Resources/Messages.resx delete mode 100644 Obsolete/Sdk/Constants.cs delete mode 100644 Obsolete/Sdk/ErrorCategory.cs delete mode 100644 Obsolete/Sdk/Request.cs delete mode 100644 Obsolete/install-provider.ps1 delete mode 100644 Obsolete/packages.config delete mode 100644 Obsolete/provider.manifest diff --git a/Obsolete/.nuget/NuGet.Config b/Obsolete/.nuget/NuGet.Config deleted file mode 100644 index 67f8ea0..0000000 --- a/Obsolete/.nuget/NuGet.Config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/Obsolete/.nuget/NuGet.exe b/Obsolete/.nuget/NuGet.exe deleted file mode 100644 index c296edf177fc5c0373b2c705a006b8c686098e37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 777728 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≷IF>|OB^!m|k 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�U$(s8uK5CNLY|i ze&aOo-%SJG^!TaqUoZ{)j%nb3p9a3m2~*>5P6NMv8u-)Gz!#i2HU3?ufnPQa{43MI zpPvT4%Slt`d+Rjt=ca-0d-BwHE}jPdk!j#hOatHWl&SF_ISu^MY2dd{1Al57c+aU* z=X?A#@H?l0KRXS4r_-j!f59~HPfY`VY8v>)r%#Rl{Au7HnFfB}H1HRuf$wz2)cKw| z4gAV!;CD|0e{vdl$C*>-yW2GI)2D&oI1T*CY2XXanmXS-r-5HH4g8tOaM^g{7(42R zpTiEs9`NNl-@Ffoyp$TaUx`d&0oQvZxvbR_G@=^u%450cq#I^K68N-j&c0lGyT{@C z*w7q~OaLis8N+SKspv!1+%9@$@arVOJiFON&yB<14lu5cD&y97U;s1b^f57~*N8b4 z)Pj%$Y>gaXPA&Y3K<(G-$@=UBhfW7ak3YvG;XqG4P8Pwu4ju$NMSXt(_2W5eL0kIC zP&dM_g}Sq+b6DqpBQLDtxZw<(&Ke|LTZY|>T5(}?=$z;0~Xb(U~4|H##& z-Kcv>@%1OT&hIw@b};|aLf7AdZTg~L@|~wWQ7N(g@F(!&-bls13AgKazXht=8s)mX zpP2R5ieHKH&0{sW9kn9PG^|1A?Yg^A*|xGTycGm%?TCF>iN10P$&BqQwF9Q@g#eJt zR#FV@jj3x*+>|OK52RSQl7KkIu&8`J6D2gMOy#0z=H;2af_tKwtFk+t>qkd$j6UD` z>fFxeUi7xET0F+~r(Ek8dqADGwx+Uo)(K5c)?IIXx6tTMP(qiJ32H&D2MXc8QMk#; z1hpWSlYOrc=}AR0Ihmj>{kWX$`-MoqRV0&>3EI++$;s?urX*#Ybev6_Q$doI^;S5= zm@F;RxrD$bF00l?RZ_erDtifO9pa;ryOU=4zo+Ww`qacLvYN<-W1VqP@3-MdS2rnJ zV{UI}b3Y>XcJ*}C##WKT;ED9Up01vTN#4eOpiH|)_3?)s_9EDGu8peFTdNAi{+)_# z16EKAN)y|ttzC4#@Yu-hP7BoS!}n0wbr+~)>QUa(rbyLu^fIWS>_K57@iUalm;8)f?81cmFBIPPDo05 zPj?RhRerJ|6Uu67ANI~lAtui2nYET+Vv!ZcTC6+8v$nXhVdBc+x31wKWTV-yY*F<# zs?rLo6vUQNna#m%*`*G7`+8?*Aw9EAy5u;0sQ1(on}g_Yn^2d-Z+Je-bK-U10lfjC zKj!#oL%x^rrH4k6tKf|GrTH<`8*vXKpQ8ky3v3>aEf}LJi~a-D0{-s%&R(3vABhKABDE zXo^4sCq8lejIRwHdiN>l38&#I6D1&m+K*SN|@z!Mstq7|35OTEUn~QsHS9R zG4GL6cQ5vUvJF%Z-f{~kH|4kX&zmxT^UrjadG@bCP0U71bU{+V<#I&ygU`Veo@P+0 zy%)y|x6V9k(o70CtsaNwsN4N2VrQ)Gph$lgsw991y!u&Si55rIQ<}AG2JeGGu*Gx=b6k@vT)? zubhOhG_Uzy@HF4Y4+1|)`BM41)3%Y7+BExiC|_E}q=Od3o{y;6qC&Lh8Q>|0+cCelQ#8dzm=W zqTfs~moU8SCA)983HX}_G8s#EUcRcn%|)}rgdu^1eKXW}R&oP7CX z&ZUI&tw!ucP`@d0I`BaiS1ndbIM`}%ZFNxR!<8zQWTP2+mFk~R*^RC!GhV}v7V3=D z9f(uyU*1`*Ty^SpKP)950u6HJG}b!8x2iL*G$kD#fpzrpTNa&Vd&_Jy=v+6~-@I|Z zOlK40K)HL~$j5W{{E=Ve?r~L1yJ;5AOKydVaaFdphwK>rI~`xD7ga|fzx4i;okCbQ z8abXGIeUiLODLHqot<`4IYu_`$~1I`wF7YW^T!}AUfwgVbL1R#ZE6$MkkZ)CLqEhJ`CMcs=KGQx2jS1T%YT*^aB&pf8>8ouX@*U+Y+TO zg*B7{t+w#EI$<_`cPCtb@u*5rD84+Zc^ladG(V=_0`%hs{e*tK>^jTd zjrgpUJ*(E6k&Yy^H@r((cN@8qnp+qWczrmZx#4zoHjU-#+_?$sedB`-km-hr1Xm>ybc*A%nrO83WWA_&>#UAz(LUhjAf%^x zu*RWbrq-fy{Mx%tPS=^0rt&!{j@J*~9j3rn3aBs9aUEaP zbYpiUUh^dDo^z8^_*VLoll6%cPRM18+T$-^o{>(#PRbvH!yMWT(fuRpa2*k2uSqZF zY&Fa^uhi}{Ut1@jE9#yf%{rJOX%5+fID_EJr`@>8vp$WRD$OAl?#@z~*U@Q1 zKXzuzeIcv+a=Yv|*y-qeZV|%xESY?^J3|lWBh8JGe z-&n0J>*78)kOR-G&V&NotT|EblSXqR`T>xgNjLHp=C^T;q>=mO(l{G=M6T85V#JL9 zTrRfGXOI6vuBR0GOSztv>sNBUAlI+untwK~$8aq=gUO`7zpt-P>k5C1z7`IIz9y;+ zjq%5c(Y_y{p_>`s(;#*CJR8C8ZZ@gA@h3>N>JnO{eYlw{WTHqm0atq zeDxOx%?HNZ#z6|N@Phh`z{Oz!Pl0AT$L`al;{zR&urmSa6VlOEabJAZsbNc{#t<$2 zaw|Exx3|u*vm-Mq)%qPo5VC3i^4am#$1Zw-tdIWXwebcg5Tm1i#ip}MeOo_l@nhq` zwS2uy^%7!mA(q&}P+Gk)U!!Bv2-`X+pRcnxXDy0gny%b{)pFBS9c82l-D((-0PdQN zt);@9U?YOHf<-PmdtKXLxPo|pLgyr4;nud%NKij%1hi7}@!Vneg?AB-d3NE7p}cVG z8!P?kwxuuW1p(@f6%sYiC6|C~aY?7;RJA7-x@yk3hc6ZIc1QbD?p<@*^6ik2+g`}H zb2daqx(73P5?n0=&xlJ4*Pp*2+zD#4y5arpw6>0KW`0Y1zibq# zpR6DKkh&+J?V&xLpIU@Wk&@3(BAR_>TmrG zNKeO{szqWdCEsdq$K2jpbxu9pMdm}>0IS-*bKRwysjGeK8bO`ac?-8mzDATzd&0b$ z+>JXt0XNxMMP@w+Im4Qk(p$^y2%_}42i2m}()tVe_trehkl@yi^yv$zmGo+y7$%5@ zUFY&Q`p``l0^_M5S98IRwDIn0<3csxqiViJt!<4LFWfSq7n9yWymxZoqC();Ck3|q z@Dlnk3gnW`JqOvD@BT_HhLv4s$>ZQ;>ydeN* zv)%#0zU(to#2JhAPB6e?dHQvtar(f^+vA*~q~pAK4Uz%q)964i8nY+Yh`$qEB@64S zRg-rTr`DfbuMgG_Sm<5SGXJHF6f@rU8#+&SePP&Ha+vzU!*`XE7f)y_iQ81_b9a{D zNfJl`zHsxMwIjxHWR~VVg*4_)({PIMAG*;zXMG{oyPlmdEZpKoWE zgC~{C27aqPo`v`frI$O2zq43Ko~XN-?+l+ZDn3hLjIbK+hikAIp{Gg}9jF#?GzfZB zJ3Lj~j#67I$_+#*$#8_XN005#_M|<$`qPSnQ4}sd1%2sURl0w<^`GYD(xnzcF$Ioq zlL&SDXfL&IvNIv+Rl@@*5-kg0NRsL}d6|V71JC&rfTaM;_=4MgzKsbXKQ|h=3!j}G z31wq(=<;`PwX1-aFs34_7e5z+_H*GxId&#KXgDr!!8xNR`->wOn z?$gG$7-!9K{3yr4r8p6qI6Dy3N?pQ;hFaFE}}@icvc=MVVt+; z@|x+~?QQM66=jQ)t@$;{CT_L?4WHuGHF=eNq(e-e!}o6ES+LD|(dP7*SAeJWPo}`+ zURI{Y;FhFfdilDRtQPiJ^^hQnnP6r-xbzUnH-RvRX{jSJ8k>zRzvFfaJzq!jD)z~&RNcG2sjO>T|47csp^2Ch!I4`t;3M1>9@bm=@+ zi;g2~U&36Lp7R1JpX_!De#fNSS&o-EcVpA<+yQPLf~TuwcPwhg?SvatFdbl(5htnO z{mZRv%W5*^lg@RW(Ps2r&XCYk;OzH1bbzi>pl>Z1R-Y`};SV!yExYp5dYTFu<2bQV zf@A+Z#56gqY=oz90r-Oe-v@yEk8*Rq*$98agZg9`d9Pyi1J@UQ@XQ{2Dvvy7u8)g^{+MJ^1Wj_SC7HmsHfkDu3)=|6~V z*x*-%&rd)Jcvb8 z@1xFI3VZRHJ%c-#`lgc*hVmKtsWjUc^K?GllUOC6TICGyCjXRc@X4WMbIF3x%}SAG z+j_P=-$ltUR6CM{fyd^T8ObjNQs=IwGtq0HIdC44+Xm|8KGIo4SVoyVS$j6`8%QCV zA(67B^mLk~fpkv?)A9xU18^E&)HfSj-O)9mdbR2_t*Wf*(pt5-KN*x%|1vpT0bt??~2n*=5X3!6F<&(W4oJ))I!y;&?tjO!B7M%p(U}!*B>iDz|Ga~52*7?M371|3Oo9%(rk~^sE+}Oei zg|7WCdcMw)YzAahp(K*=;qm-cZPi<)mu4B)_7&bgz&N9}-*@_{U;FueAYi%rz$`c}=EemHCp{IjD>eaQ z^Qr01^j|p$X^qOD7^?|!nvc^QX}{*2{|Wi9Tk{*frRI|!2K={j@%>#I{(HVY>yoy? z0?@n7Nl}Y_umZY9wxTlctxm=)Y@{|9<)Plg58$lK*-6*V`=*m$T?sn_0`J z>D8u1zqsF`zchmXC2f3i7X5XF>nFuGf0BPg`Sp{A56Q2e)W5&{`bqsq%C8^yk4qHR zu5e!OJzWv>V-cz&7s#IzSRJ`o{x!Si;cu4zt?l@q!s#5i8mu}lIa)gd_j0Bngq+uqz!NdG%~WFKxH=5i;cMYKM(oWcuyB)bJ!7+$Fr8`pTPEXUZmScnB-$Wzb8B?Z{&hP%fbGt+b|!PrRD zuaSs~RPqy7ZTUOj|Ho_k zI4Vu||8epUg2Ec5e-;;e_m4n7Mvea|A7f?ZA`WmgN`|z`Iz2s=a1wQjOs+a~Ay7um z7Em)NwwM&lSjF@<$dCk2X^L7nQ7IS=L$6RQ6kEfoK!(-)<~t7GVzeHgBV&6W88-!Q z*aob>mqB6%RDdckl*sjg(0?iZzPVC&c}*XJ^{jYmPj=KXlDrL%c6mS?T^!xDbcV?W zIKG`5P9S6A>7AXkX@jF_1HWw=!`P|DlYjHm7!-4b=~3L$qj+8c>Ww@OCsq*9mJpQc z{{3ui-M{7k0gBT2^w{E!}%(#PmdwgO{VV55Nna<&FY70QzuKUEw2G;zv9 zx-GP0h3}jc9~>29TVsLLBT8K-VL*YlFt)4F)!;Zz{R4Ztl@a=lEK@haDYzQtwPENN z?z(~`rMUGxlb%T{NqBCSa9mIeG8A1{WnEKs0CTP?m4Ae=p^HTIoM1zM_#t7 z+4DMHWoxEogG-b_0N6x|n9d;Qs)${nXuVL#@H}OR!RyAjpcWKjs(?CKsRT1s*b;zN z#CdL3ob#0m^VE%TK`khhi4;1l_9O>bfUS|+q45OhavEBIa}2K)hS|a(s0Fp+Lihy= z?@_p*78EKVXaARv&(1+@-VjL9hFzF~(DaQjkM_JV+yB(ep6!XM?4VVkg4`4`-A9YYZF@rs?;eb)#Tfs=j)1cRez+2RrpK@ zDB!7XYIHa}nMbm$JhF*!4){+2f0{0xJCgmFX*z8_ttR{16k2hVn!jr3N-2}Fl_+f; zpHC+kM@Z+P*R!sh7-CZK(tT@tPU*#F%Vp4Ws+BjdSZLZF61DS0$a4W!4esM`#{$p-wy$wGenws{I&zRAc2(B)ejCSCVMq*1-G z@7+*Nz8d@b8h6-!w|yh!Q6Aga6QGkL0P#i*(o26m1Uww-rf*hOM((0M{WOZ#eH8l& zPVW}@VNhk{p<<|TT)~-79{Q^7^0e9UP`>``Mm}d~T&(1DX90Sj|BtlufRC%V_W$~> zbXQu*fGk;Zf!GwAi;U?-5@1XR(;@Uu=xsoYDZXCC^d=xcAfbZ^oj?MiCLx`K5CVjd zij$B=DoI|FM@Yc@zrQoLtqOks_w@N_cJ7%oXJ&qLrnikCL~9|!2NPOgZWaWaFo!$R)aU%psj$%<<}l z4qkH>L3kM@#p|^3@Dleht1cNL?-%isjA7O*GS?O1J#$hRp~cp%k99O&rwgyQ*AKpw!IH~#?9VOWl}mIRn!{+kHi8ab8!IToO9bI% zloYQs#=}e8!>pKOh-`XRra@lDFmwBv>x%FiG`yJQ&+ytr@rxBqXr|i~tH*0Ib5cA* zi>=!n>u9`c!t0zrAOF`3uUw|%vZw-HxkSgwLmWoqMZZ~iQ6D9Ei6Fd;lHzq{0k3_F zh=_Zb6^aazSuUuiHIOpFrk@lE36)`dFG@rLW`~28tZ7h z&JtcvJ#xS~8D66Zw?%P1*cXBY6grih5Rhgmhq z5V^hRDjCDf*JrLP!s{Hvi`n%Iuk8^L#0n-f)9rxOvqCA8n1JOSJUY~ zIx)j5m+5xKOO97A(d}Xmqw!h*9lUl`P==QX!pkTrUW*ENHRzYPhndCC5cyIOFUc5Y z4m@*R5ni$3#msev*KUXiVg(bL>2}BJ@!G?j6h>&Vb$enRjn`t~^;-MfWJzj^Klfnosw(bb5qwzXlczv?`*jgE0xlDH?UUIy0iS8(K7>(D_(822? z3d-;jL3kM@#p{9sUUQ3hiF^3)0wUWKT_t0fxtsqnUKbi(%qnDf9fOD(B;bnvPvD8owx;boK*ugeN}T~I_s z+{4UJWQcsD=qee*jQKOy72$Qc;l*e^!|O~$1hIk%&2$T~dc4juCxsDOY~9&dN8@#c z@cRA_&Nw8)E0^ic!Ap);F43K94x{l}1RcC$1!Z`NAiRu{;x$~rt3kiSJpH`W zQDlbKFd~9j!GvbIE3taKt}-Wu5n62B)mTU4^>N{~=R+6F$neT#x{u){$19iUt}%zv zcwGw}yslGFhL;G!%P1*c*B9_wSVTnJ!;EM%M4l|VO2#l_&&+j2c->%lF^bIa`ZywZ zpp>XG+v(&UY~s6`D-)0a+&Uvc**g~CAu5UVKiPhK?kp! z6_nv6g77j*iq|I#c)d_WMBKxSXfs59Uv!m>VaA@B>x%HY(ePpvnc;N{B6x@wGc?oP ziq+$Fn>i^A-Z8;+w_}XP>n7p#@Qptm$neT#x;yZa86uT)3-y;|3^Vr3TvvqGEru7P$PBMfAtHzsOlYRN8>`3b z9&=I{p~Y4YUygy-t-@=I*3Z9|;g!pD_u(bSE0^f*H;2)9JpdiN9#l|mfu0v4RQBbf3oR@p{;t6h>&Vb&p^j ztzUNtueZvN-J9W+%XFW?OO97A(S6n&M&tD;bntpiK^a~m2rr|gc-=W3Ug92RM4KV9 zT@f$I7-sC5xvmJWrG^)y$PBN~AtHzsOlYQi9IMCc33E~yp~cociFGtycL}ere82tV z46j_KdkQZ(Ub#f~v^k8%>lx_a^?3zlc!?mqjFRH@sRCXH6cG{kFeBOwku!>}k}=HK zGjm-LUUwT_j3P6pTt6~02+{27$GeoW^;w2fwj6E~g72$QC z;l(I2!|Usa2x0{jn(4lQ)#LS?IVp_LV(Y$%bu?c03$OF~zLU>S$~QpFhYy1dkO1kydDx>i{5Geai(9nO!qQga=dbh?iF(wjo0^}gV(DH z%J33Fco`+d>(d3iUMeCY?qNo>86y8Fx=O|{W6#WWMR+}Icrl91@cKR?f>^5mub-Kd z!U!$4?&nxXhb!mIVlYGb78tS zF-GI{xbSLTqqjT5E0^hhhnF0$T%!BEIgG~Z575Euj|$505O&`kGdtRAno%t>K{7F+ihtfTRIN_c%J z*mz2YS1!~26)!nnxkUFja~O@+e?bSYzbh!iO9bI%loYS03wT{t)F5#WGosB9d9mm! z8N-Y{GuIX2^^D=gC^EzAABYHI1rwU-{)yG&_21^CFhYy1dmHO$ygo0ye*X81b69ej z?q7Jx9de289dj6s*T12I*MAh0;U$9bGD?cq7Yca&vxtbehZ)gkh_uCp+D$Ts8GB}~ zE5hrGh8LsA46k<)5yT26G}FC@)#J6?oD@cAv32ib9gWws!fWw6M?9P9S1!|)T8en( z65RxI7>!o|9lXl?c)UaqUPejr`ceU})r*LTdzcYzhR9Y$SIHP=?3uZ)2(K?2UW_6$ zyqXXZ#0n-f(=}uDc!lPqFhYy1t6&|C*H?tsiF3AlIKwNK>00oT>sKz(wVK0dysFT_ zt4%?feu*HwjFRH@)dF4(^_RGZ8PR5l98$zfGKLv@X09v3>uZJ=qsR=ec0>fRf(gxZ z6R~={Rx&4r5n62B%2-F^^>yL(zv!qsR=eE<^;ef(gxZld*cdy3I*p zgce)ZgLO1s-xOXG+AhoYo8&Ux6ujhkSVTnJ!;EM% zMBXgAO2#l_&&+j2czwt4VicL-wH6}S|Aoo^FHAQJ!{asEoD>H8zvQ$w#%R1=6kaQR zWA+6ZUb##c;U(9vT%udY98$c7f?6+x`fhBs_19l<5#+A+vG+talWKqBYHU~2Ul2sw zYMbF*7>RWbexrTFh`aXr@rIH_m78kkuZx0;i9nMIG1P-z>(bMa#|*bYnMXD{>bXmmYxE?32U({HEUj&y<_jz zLynG+uFr4(I+?sPk>~H$uuCZtiJXby6n51MXiZ+9`z4zw7b@0w%jlidynM1OIzn!E zYp?aE5d0FD@TR-L=Ga5ej@ue!t_IkUkMujVu)LeOfaHXRzjH1qtyH@B z;~4y174+2il)ClQ_wqk`>nGX-5oqEbe4vBPC7ttpnKTBmNN!V{bs^!QL?zR`jS|Pr zaFjmky{>~52!DM_Mc_8aX?74R#PXJs88~rI-uTxEg9O8%xHN5P$Ej0>#Mk_)e0c`$ zrPKwV()))S{VNgWk^YT{pXKEl)%nvTW|qaI=fENacBTgxMFAH>WmYV|eCdbsWH+$X z_u&KOKL892BOUm7MHoc~LJ~Yj8a#gAaV++1Z|Z5~S0Zi@@tflja+HJw(b4*u$F>`I z%dfbj**-s;`>FHrgzL!n#=b|GL;K>R_}gtj6>h*qhrgz zavb{4$D#Kx8C%W;5&Y&mz1Lw|o9`cW5*E$6Xu=&M~g zHvf6!&|e*gzWGIC%ei$N`rpQ(?|Jdqavm9nUcO{({)5J$e|{YL)Jw;f{ze`^Yx|+)>lbu@8>IRVUi(!mW;T zoE*`s4Cu0p$$gi;S=>%A#}YiRx2-=BT5z*HP)2qt=qn;JrqCyQ_UYSc8y@p-;!V-3jN2 zCO5*;>-91>`bBd0PjhJ(n15jY0$pQdr=(i!>ivlv{@_Np=%5{R6a*Zt0k+!*B&v@_ zj9$q>ReuAKonhJN>si}+Ll7TGRqXp~J$2dX4&DSD^@C)OWs(@> zIEl?$wY6jD@YN2J7fx%_a&b87qj1!=AT`k^ptmu7hD*gA!iQZt6U6%?*AA_FH+KY1 zc6>ZNuhLn%itv6!c;&&9QLSl?X1iJ~w}k_0W6RxTe{GS!q0U(B#1YSMT7)(YxcTO?jhWkGy6w!mJ?6yLxj*yrJDdDDp^m1Wg9LQa zwoT_Q>2D(D$HY(lvja$uU8Pm_cK0CZfxaJfw*wN}`sTwLqm}I+5hB2QX<5Ak9v6 z`g?oIp+$A}>)>u@Y-gADJ=gc)0$y*p^-2G%$n*`?E$xkh{Y3fUb|Vf0cAV5FP^#ZO zkE5qaQrz`qRg(DK;q9&MftgY~9O~7iaD?R3o^YhedvlEBmEB%&Ozhhlf35BebneXA zI@H|6y((^RoZLPb19tMEBsD;Xtl0X-HEfBlDx6Oq|^{lae|0yA63n ziuw)_yQxYdU_f;XakKg;aj+|k%}bx|^bDfw6+yc|GvVN_do$O)4h4ZZCQ@R{$Sw_ zz^L|3SIkS%fqZZp-fN)}RcT+QKyW$;r@62DL~#QS%YaF3)77gd3$iwDy{&zkIE!z3 zF&oFT0&A7)ssn@C!APpBR!d$rE|u;{Cnln|0Kgs_s2?l_w!8CF(*US`2sUJ?{W+2F zerD+qk=xu4hM|8ys5Xw_$q+W}<6@)8_LdoI%vWnz0oJy#B^mUzblb(jEw9X&xA7~L zx!>g*^h>on5H+ziv~iTXfsa;$(8hq91rgnpFo+Hz3B=_sA3uLG(xU1P#U<$Sv9~xR zjuxH6yrZQ=_wVbVzy7>fmNR8N946JlREx^awziV!yaSaqE8R`CBVe&p!{yqMSfl%h zl=6V1)OL23$(f^amZLM4YlG+`d~nKg3C(i-FdzbA{nUM$1jjy)`K$AX*zA6B=mMJg+_=; zpa@&H(4LX;9i$)kP-2tuwFP@3%)*Gd2>U)M`QFTbm)*&pz!+QZJZj}m5hZg!)w^fk zr;Xz0`o#kO>E3mJc)xc$S2!fq>M=8Ht5;1xYm;IEbKEqA?06~xDTXZ zxwDLt@t^G(3TZn>l#`OcFC_5PYqLAI(eEPfHw`QHpQVDV#UiEdQb6IHgh1OHy%2pM`*5nDuSn`T>aZhR1mL;(> z2N%6S2>x8XkJo!XUKYo9We4~C13x;0tTs`9L41_rs#DF>7skd5GIQ#pdN+HB$6FJI z|5lQ2p#}2Pv<#W&HashD!Sz^0`k5d;P65#EBrK8aa6Vzl9$kZ|x)?m0>Whh`!{KG_ zly==j{t=%3ouK&{%!~P)dL`8t_pfya(NFl)rOKZ7AAAkdx0|puoRX0KnUid$lbNy~ zLn4yC{;1ene7_<*FaHu8^H)C-`Q9gS@b!hCOV`Y?(mH*ES*1(ppZq$D^FYj}PvU@X zs_9m{Rjw;JENdv`G$fYn=obXn{}H70v<1=k6?SxP76ZmMLG&X&m$tZj1bD)6RmQ>P z%w_jCakRQSjN^GeygEc&lo8Ih)+C62hJD#Q!r>YLZsSlM_G@v#i|pV|K#`(Tk>Ngx zVS~%m(J0H{E-kwgqtdUb+0c(`k|-_4cQP+dH=Ae+WIa-PpM>oRe;WBX=hT&6DQD<8 z>8K~1-O*(^r*8I2prD^?Dedxjb~WPpI)0LI4liMqE?ruhw=3DEan1|BDJk}}rKa?D z8IQMid3EkGweQuu{3Y=HhWzYiwS;FNLNX^S$?Z1GYspLU#GtjVBFfD|=Tp+_swoo0 zH9q5oR|AQ`ijd_k7saB*-)8cZ4NzLf9-yEllB>2(1&F&HKeT z=q}8^40H;Q*HNxyOR^gsO}w{w7AqsnGr!^EQL#HI-ZU&J1-`nn>3b`(lei+^Re`12 zr_rJ>v_@^8HzrelI3tLe%ACGIPw6J){~nBk=!bZ-v8}h-gqYp)6_f{goA&hX z=uJ4lNsQ*&GvBhAH;hE;wmGn#1}@FwRc(MA+AJQGWW{sLPFlq`sl!y&s5uOi<}ei) z{Z0Xre(O&kQd)B;or4QY8pi%X@h)fckWGFbvN`pZ;I?u}i*0|D9$BpIvcYN-@x2J; zA6&@jZSY)-Fsiej7wN(qy+nF3jx5bx!q0#@pw0d3VR{ig^Vh)ci%N73k@OWKb#;?R zfy(+$RD;o#@@^mFruxrc5(3L-3!JE@Mdxw))7v=xR~R>x1Y0 z^EkXJ*eUNKhV{QEmb6f(NC}$jJaO6-tkhIL-QuHgHz$O*OqOVN!(0%{`Z7B&lV#aU zk-1QxcgtW|f6|2IlVwfb>DnlWR8kghNNpq?qfd1z5`3R3i2j9JT?9|=mHTN0_jlwj zf+zd;4OLG5qIi{q#b@Fcwd)3+Wv!4k+6`0yQyqa;>g+7Fs{Yg%dnVt1wKU1+7+40; zp9nLVpY{BI8;9TU45B}${N$m8YR|$#{c4QP+H>i@%)emvWhs``8gQ$+Y!0ugS3~}d zr1lo>iE{^&hKbAQ@TehS9^2BC&NVTf;MfQ&3 zdzLf8;8@XjS3`hSjiDvCeY;?0kusO}PzLOwV z@;OcFj;nASx|i75>jKtiV{QLxsC`?(+~Pilb?~FqJ?l`#etp}P(?ZZ_0R8<#VFTwl#T#`M~*=W{mX8~C033qLo+g^g@QPUeQn z?h`oK$fh&wQ#Xf85N*a*V;d$oxyn#LL0yX~bM71V3SWmG-`Jg#iY<3U+DvTk1V%yu zyHyt7=*Kld>G4wU&k?|1Q2KXioi!(D4wUghm7bjcquL~Z**<${6!fJ>anvbS9muz+H}h8d?A@g|5c9T`m9wN$FY)O;3|=A3Rl~F7qZ+<@-koyvuI@%9{3eXr z%@}og_Cvh3J`&TA$yS~x`b?WKV5?)cZDi{_FIjZ(uQE)up8DY3ggr5cC6$}-Zc$jb zVk8;5)P{^cLr2YL6TxQEmq*KsA?ZmQxuA5yqrT6mKFD0?`U|Wa*(HG^Q^@$%Dky{Y zHlks&!1m&yvxS-Fwg;al#xthW&ZK!A&5dES9Yhs2d<~` z(|;b$p*s!h;G8SK++p)Bsw_vj+)fPI=>GH5Gat2L;?Ld5hdUjAepit+rm0BYJCU;4 z)~S3+DfsJ+PM|vQTX&K&y-H~bV%|}_6GT*yUuM&MVF!{GUAGj6g<7Q0YZU4N1WkKc zuJMKj$xRUG8sykSv>eG&ENq^9MQ6%y-EEy+8Nb4mlp z`Z`|vuXzUj!Q0fmPY`L4?>i#fh#Kr|kI9tFds*Ibo4T(jHT{s-UFK!oA2DIFmo-39 z8xh#Ycd?T`M4OEvieYJT!H0Fg2Zg1sbQ+e`%glHB4Pz-a6SVGE$BKdP!?ct(M9{xg zMx#}%k@0uiriFbzvEijw<#{D3s075L71`UpD);l4uU?t71>N-+^`tEbOZ&p6zo5Ku zEi$iuE)GE~Go7E1-F=GOtuK~aIl3GB7%caQ= zFW2rQ^7Tb{EcevzgRV_Ks}Rj)Dr4NHfJ-tdDy!o?n~?FK>}hxSP<&jRpJr|Y2%)+an0zI2&5Swo)v6HijP>Vh97?D&&YG`LNA!po%iSk+yKW|xXZ!x(boMhUip!P1 zrZ?z@z-sGi_v3Bm@b-g&3qBjW6CTG_8))|&RIlSFXtja%l!NMA`H!mk7UnaAn`Ddy zVEvEwKARxv@(x{I*vKF}=Q8Ufb^8#yz37Vf7n;AXz<#>P}Rm&q30vj_Qx;l!HT{ za@noc?|tEuBJgA@Do!Obm7m%@6s)TCU{cECCb!2u!Ec3PY0L7xsh$g?sO)aGxAA+~NRO;Syrno?Do5XHF~XBr&!w%fduZyH2YG zT*lrUJ%u0E97nj{nz=tMcdetSUmp->>be=oTDV?d9poxx9>{}VDv^vYFK1;9pfjPO`PvkKKO*IRx1dDyAMtSb4S8m@OB=y5ZNM7kiSH=b?6TXF0* zr-ntfbWN?j-LI+P-zxhc`ht>2U!-jBDwmbMwCk^SBdo1WFlv-HA2J{mNi1@wDa|&`Y5|D1lE^eC&Q$V==>%6+K1V1S?ZS> zU)_jA1$R+;Sr1Zp?pZ>1U$W?HEUeJdvGVp3ZNVGa#>y8K+;^6{2th2<+%GD)? zf>@@ljVKAW=3y4%qdnV?^4kPvteD@3)%W^C_hn+Gq0lJkv%kHbhhT7^dg=Z+un7GAWd~~(-`Sv(LZi|&6w#=9~UsX24 zPz|T(4M>ue=+J%5B+Y%XV$%l9KYbm-Y<|C?-*nEWQd0HSV)5|kC=nYWCWyAg%=KG2 z(F&jDx3|Kje5Ph)+;d2?aXj;8hHg5J?_@93$@r;yKS9)sr)X=8eswziH`904*hS0> zhTU6g4vry-I1A*h)k7;&ZL8`?(lJ@lq#MVKhp+xyqAmC$cT{fFMyMay=EJ6zw!nEf z$Zs_BE8|Gm4vO`Cv2TmLN3r*1Py5MdVsA%=kEFU=iYIf!TdVd$kNHvK;lm6qy%UXJ zEezZ1`mE2(7?XZLTV+P;K|7?%uKZIgrGM4Ol^HX)n9Z+kL*rdAzXPGn9zF9+PLnPo zcu;THJGoa|_rmV=@1E?_`)yy=lSyHf@^U@_K=oqfzRMTiE-U4|+OMEGBZ$@|NwseR zt@{=Rb*--@tk$x+puy29hfdZz4kkMKORApd@!LIbI}t`!Mu|YHp}wskxX6l-^V%w@ zcZ?{8UcaBf=fhW-Yn0ab<^QH=zU-#%WmES7Wd%G^eJ1;@AHPT0uFozfCCD0~1!dpV z8EvX>m-a8)WKIyP{w=!?NrVKbKdiP*f4;@?EFLWP0&y(6?_eh7=r}giSru+zntNKz zkmc74S3)m>Xa|Czd`qJ>^F4>pAX*R8rioMCo4&y+rCVWHS$?eMH{DO3GbvE=DV1v9 zPLi2VsHn2F(zZVIihGgR_OE5u%dxfxEvC!NFvCO*&}zEOz4=nYWCrH5w$hYLz>M4q z$8(ixrjq_(R66Lqbe^Eo>b6xZ?w0AM8(XRl4WjjhaX~}q6n&TYwDoOn;i~bfSQC~! z7vD32Y<)Lh?kcI@%G~GZa>;A7lf-9rz}9%~ARe?uN*22slY&^?LS2jsm21`L$%G2! zids6|Lb}mQNpv%LYr{NA=?bDqdA18iAvaZ$8gf(hg7%$VioZ_$^{{`~>rQod znr)6Cpp`q|6rX4GBR)Y1(7OL8RWdc_s=QSjw;R9u3!+^K*QOx-yvdxLsA)$d+S32v zcJyx&_Lt;xs%puEpgoyZUsfq-sz=gt76fjA@N>JHxtp2$Vn+L5_&jA?-tG4Xdm`UW z&DOK>-|NY}+1piy)i~;p+Wm0JYl;rzr(LI}=nr3nor{Z3R8-XL;>tN8> zUI$TwSZ1=fssXK%v|{3d%FL`vrlWcPa;#NgR_OIiaw&{FU7 zVsFyYCH;%`hwA;B)z+cPTWVR!?@2g|SY+==C&%~t$Obk(l#}fag;QKr)8#?KhKJVTdf z=&DPU~YqnRx^s$qreNCcH zQ65*r9n>{er$oQ%jjO^{xe*@f->Ui8l>aUGSI4byTMS=T22Z4*_YPiQ=JjSiXy&VC z{>RMDVe!l{a{`<4dI$SuPfD9_YKcCLrZG=+BpE~( zO!fMt(kn1c1;?bAYRW(b)6SZ-^?ef8img(!d%!AB%?Y=-moaSumb?5uoBr ztj+hg`VAJ$^|#vOaC+>rvpKXLPe*grH<^PA@z~L9$2yDWHfvc?vUl)Wmh!R}ZESMl z)GrPU9HxhytovzTR(u;#(DBKoPk+^~k*8_jKj`U+4kDF4t$ukLJW_Yw=1_rRexR## zB&nNb_>A_#8Z_AzIKlTq6?#*D%x?Vvq+g?voEIG@`5ab2Kl%rE11b$Vwev4{`CYx5Xv48z$ z2)#ET`{WgJ**--H$mYb3qT}R9mcD@Gs8WJMtBWE5S<5i5M5~DN-q>%)`uAtUQ;0; zt4it?eja8j{8;9k8-#nEi$6=y=z7)OgtasUu|(ANqWsk##umhuzF2lg;NQ z#8Zb&FWpWloUSt3T~}IsdIvv^2HARMvJ-VZxRb$!maZ6#Yn{;+w5GWalPJG9&|@-e zrY{*oe7mqom9e@sD_Ow}47>g{2*36tgxMk_&w{={(0-*%tC&fAUWM3ds-@b|FCsVh zeGzFaJ?D$a^mc73(Vj279oH@vjw?>R&{>_Wb|}B2b?{dR^DF3@{0O>Oc)lEc>1+u) zTB2*P^{JyD#L5cXK9<*{dd?Gh>clSXsJf-_E>i=^F`gEWKnJ$yN=f6~feC1{J$%uL zNa<*+sghZ=jC@tpUMKQv0p7sos)rRB-U6IOzIV2FwEJ#*d$QbJnm~^$pk`*?qzBb zrJ?Qlvqncl)GP3^Oz~c(Nw*-nK;pW5m|Yg!>t2|<5tnp6+4eT}mUgL?Ci?XEmJYed zrtR1xUao0xQgj*oNg9U`y&7rso9yzjSG7+Q7R5nx#ncByRq-IvJCf)Y(+-wgqpK9z zRdBI=HLcOGzWGFivT^R?A2eV_qTiFbRjGZK(kedQ9i{z_^JB1iWq>uPYi|*Koe_}w zludi^JCB1uO{Q6fS?^}#sy0WZ8x*GVF8f_XNKVnUqE{O(YzRzJDljz6j3hDLA+~jUUN)TO*Sz$c=Q$h)%j|m6Er8($mF6X#d zHhZrv=JR!0P@gd#iz7=@&rPv7vb5e+zOQk35KGZ)631KJ*#yx$2K^k-^}gqA)FU%U zdlzGDR@CxjCMN`+vSbxb2vUt`KaEW&4A7C#c0LvCS)I-OYM^*1*j<@a6a%UdAe@&G z)IEmq&D~QD!DjUaVpKO)`*swI|7h#$&p+DxH0kFDJg0(RvI$ySo0BM{eYK7zzai8g zO&r)twS@ZT$>~Hr7;0ntwBOdRXtwmPo{2vR@qSOL_5D05US?=%Y8l9xPadDSQeZn} ze6}#@38;Nzc647jdwpxyQgI*F7i9oF2~hbLf9>^N`@>X)&a}Ks8ZUK8y|wIqA}~Yi z)u+{$C#CZ|6?;<;A9zvqmaKux>VAr6suSM=tJzB&WlbGrPZZ8CJW2Q5>L?aIeTAnE zhV=uJ^N`th$|i!3kJh2Cli%cE*obu~Iep+d)c%9lqhw3&Md09jvZ<7UTfXP>F(Y&` zM|e1CULD+6x_T5Mw=rY(FMwLM&MtFP8}PwlazgE=VF4kr=zRGZkfH}LLN{n;4b$!F zvrJ57w~Ic?i^wxt7UnP%2J1cD78p?y?Q@=1uA9Zv9#3gzfkq$KV&=2egg3cuygr>T8pqjX{W|3wmZZcM^XS-8NXaLdUqb*~p= z=Iw5l?9$kIySq7#>2Hq@^0%isYTY>^Rcn#fa=I?t4k5G=RhwPS6S~h(@YTPNhTHgX zI{t`#X_oxedN{Di^l_{$W$MU;?sYu)IZQ1mgl;iTt4vs?4(n`d-o>%rnu_L9|G)&UmD88Ws3w(md#7ym27>>wHi;8lq|+wsM(9 za>)uJDZJ7+QfGcv$?u82ttg9bahV-VnVOyj)Sg4ltM;xaP98VEu9HTlo<+uvmc7iU z9~}5zuIfmie^X1RV4w3rVZ4fGzr{O})$f^8x4~!C|0ehZi_Z!F#x!@AK16?MUBxGU zg6evpozHQOY|J4JzPEBlV{$c^b$u91i&IO*^Bje#-NDT72Tbi24}LIdrrd9_VJPq2 zYoUHXCCA6bW%6vkjQOo%tr)a++m-|C&exT~B%Qf{({lkje}({Gz4=LI&rSyV{F`F? zbLLw9Jq?^zmeP`Bgr5~l(nf$1jjtS5jTX-ek*XxGo>E?Q(x26Sp!Gf=JX?ND_3-}~ z-t-ODEKNiK*0=C}4KT^DzfL5I!~Ue!&^)Fe1?Q8QjF~ijOh-?>U-xs2KAVHET(kj) zKkQ}~bhuv>;kq!(3f3c&;k7@V=m%B<=cGN~WHC~!Vb=3)^26gGvPersy636OlLB*5 zCRux*SyIUO{3-|o@H>RK=Z`)Ldy+4{#wK5^zuI29_BP*Nr4IQOTskN4WZKU$3!y@L zDy5ml)1FRgX7RLVQkq$ytr1L%o>x?`tKV}vzjTeM@2Sw(?NEDz#6@3$Bbe?_9EIJ3 zt6fz({ZsU+CWJjhUq+(0PZ``PqfZ@rHlt4)+&iO3zm&MINnCgI4gGN3Ou#{(HEdi>)GX3yO{{*f zCVD;Gu=H3mZWK$AG-rTQ<8Pa<&YOU<&5T#e{f=)2 zM1LW)==-p>abAvm8rT8)Or44~?An|9zl1P-z|`y!O{|@Q$XXOy_C{lU%#% zCtptzZW@|4+@auOGN5h$-Q4oDCBObeHyNhQj2?#hsv@Z^$cNTRt$xDnuec^r(VV6^ z!jhZ^R~xm_;}u(=Y_ZJni;>!k&{i3&eynu5KOOB?^sGJbWq+sA9dG*iF|9W+9bDR! zyzyI@lC4gy^U04=7waw7L9t9q7TO9zlkw2DC2kBaZH5e1#8rTki7Te)zNgF$qZj!Z zT!k0~%flaHuic5JMz3J2HuoQc=ariJ596o1JuDQR?shAc+`%>2jo%huG}~Jy&l8Bz zckoWHPQ_Ds?+d74>}cXkMU)>?^JcH+?R_*!CA+C^@&*r5ulthuYmz#mWVUzH7&Q5! zS?RkPhDjA)G+SCjvcMPphN9Wxi{`3C)So4~UGY+3)QTKs@eaPb=gsA#tFv0WTSb*A ze(!6&Mqlk6ZPTIyq+Wl+Q~f{OZr9Nk>u2ao!0T_@N-1iVCxr!#(N$dCofG@i@#|>q zn3$ha>RhR-b7d9;q}Ux3JK8NyTiT$pqrJ%39lZ>=@cK|YR_a*UuHx#Lh<;AQt542G zcXV~GlE&kUipMJM6Dr4ken!o^`>F)3(y@v!nri)v9y(U>a(y^qR5V)YvTcVk(kqK937X@6Af16HB-m=e%_PssL5 z3~mpkOO(@td&wr<8$3Za>E+n(II zQXUD~?mV7tc0YyUS$5REp<3`Th`&QNCed6gccXJ2HpVjNE8L^eR@zJg`5Qy#hgFYg zM$HG3a7c0?!b)!*$EK2I7^vhsYWGssb%*G?)R|$q{vJOO7ZOy%<>7s*1~`meb(0u_ zcpc;(w5T&ALFM`nND&2K4JKJ?PXsKzzh;`Mu~d^Cvgt>@-KrDIr5siwmX|17ip#-4 zEdNdJ9dgSyjm$u*?h9zOy9WoPx$?3!p?6(5P({=s?^>6ts* zcIgAqxWwyLM``AUd0T!C^eqUZt6ICCWVThx_4i47rK!%@lw@l}C8#fl7F1$6x%JA_ zl-xmdy6s|${y@bU&eNC(rQl8(S$fV*`@kx1F2z0Ky5P2^sQ;a-y@`sru+yUq&Eq-J^?&XhKH0qwqgn&(OX)EQK+Yp#IQM(**ZKHF=&g9$pzEW!M^!`cnPf{Grf~?LB0^1um z51BKT*FLAzqNUA>jOA%TpE*Mw|5RW-gLdF}c=A1XNE2h5pE~*(FUlpO|A3lyaMMjw zdRi`y4&r5q3F4n&`kidi3*e*hQXYl%bA|N z!nzQ&`C}whd&!$$Lnu2cD7K4JAj4>m)h2n~>`}Hd8pOYaGpYO1d^fr@u;8^qyRDjKJY<(4%X~30@DAbpnagel^2+0R8?u)C9gPe6S7R3*vv6 zBkgML=Pd75E5i`YG{OHYh{$BhEC`%kV5132U9wA4t;nmUj|F8P<|lGyf;^uT8C+(@nUB|5x~D z%CGb}{`+WFRjw`UShC%&=x+Uw18mO&*$gLYLGrXl$wMdLoJiUeNeSTI{~AQn7z+NU zkMMtD?tk}@{;!^Ze=!vNuiEH8=%VCH9V$@=bzt<}2}}{cuk4Iv_G^aBTitBh|DltR z=9oN4BYH&c9^vk%M6{jTa~=n$pCQ?aa+oAe9mZgAOUnTTVx9_7T&*#Rg}PsQHnQ$F zT3+{?>J{pKmBPGURGT}2LgwB^Z5!*d0CMdV8iQ^d2uCdOYMsE>3qxi1x(do9qF#2( ztYRwT!JaYV)LB{w>@cDZ2;oWUfM%?D9iXqQ4q&vbE=gR4SeJplMfQs9L^EAq+Su0t zZKW%r?Pzs?1W^Z2x~&dy{PvxJL0PvjV##o{^FD8a#jSitAEzoGSRl6OA&~GBZVzC~ zSCDg$$@z`wLELNq!l*YPgYvEbth~#jY)ac`xsS{zqviQzkt^hrkka`bUzhGQ0>_EC zCOEcZ&2iLMhU2ygj*}qPWq{+#vack29>0hKxY~C%vGiNwytCmbL52R%7jd|Q|GuX% zz|z7AVhM^`C@9uVu6ObY4sz@}SByM~hu!+k^;P5;#QL$$M6?G*pxz;>CvsMq3iu|d z{fzD?W^x~c%d8yv(35c2Qe$^EGonGX9ZBqNOExRb z=i~LXzf9v?TDHueo2Q>4nOR=xE^F02yA&|tptrP(#>D=66PXI2a5uq}QuAt!GV{DP z@CtdY+|(KM1XjZ=*)C}CY0#CI*|W+~D~TVVs}Dw#@mr3n5R&brna(U2p)*t9OmwCP zYpyf;%5-LTlA*HqA&7Mu*r&-pRrZ3;>CkE-#4?At zJU!`P^=~0Tv2nFg756Xof{n0}D3&XVAkJ9Kvw@1|4E-PR>~T5cpcn!E94P6tdS1Bvj0?%6$KfR=;s>vPV{qiths*bE7Q;YiJtT`f>@V$QynfCWA(lCKj8$GzjQ-~d$y0~84Zdk?oiau6T+t-y$xO+bVj-iW_e(|+kEDK8 zFg9$guWiA~96T+nGY7nu8g(eA`uf$V*XC3W6G(}P?94)+nueZesX^q^Z(8~n)6xTg zJJZq+ONUgy7WMQ*fYX0LPnEh+db(#JuRcIe72tS!YI1WuwHO!lRGQ}XG*3&SryiJs2En(L{)GCe(l=t)mEgjkn>eLdOd%3jdZ17So@F~MeUOS=RW+Fotg z`!fH1KT`fou3I=kEI|bw-H1w)$IEm_8xS~#Na8cyIgF2nw)wsH zvie6d8}vnO^F9U4#%Y@sKtWd;+GdlP>x#v&pexF4uPb@n6J0TQ8+B#h5xTM|z7t*9 z1Z%D<`pR_W1fnNh>4R98fqiq?H6RdLCGGDXjziy(80d+G z5le>CP{#l~>Sb>?+?!ci<^F^2EnZj1<2OY*FHD@%7e&nm|( zPZU|&AEV`%T0{z%3YENXyWa@Rw!k&PYyfMHnZ7d2PERnK53w!-%(jw!OW6yUohZ!I zw`D%Iw7+2{L2Pl{!ZzAY-Qp2p_D7GIg%QLOQYc&7@Cg8N?0ZOzK`fFlTl3^N#TF&7^$hz$rNN??^qv(bN~oXzUbVFLc3GLXaC2R<3@Yf7 zw8fWCbFq9$%BN+KFQ42!VDL#VbT7c_r0qcBUXDU0w%9v8gMM9GIJ7;|>`FhTcF!V8 zwF=HlL^Y>~r(x!_w@fNW*J;2g{i!%)Rcn{?J+anHZfT{i;$}j0Gx+RiV&&6*!=W7t z($ALkR!JAtoT4tIyEPN$9Sh9oh`B0eQHNwilf}Gt!n{*~`CKu#iCNSk8Bw>GXC=%# z7nm1`xn0bn4#|kvPCm!2W6Wte(mhh@Lms63j;6p+4Tqm&S5Ch+g>ZCgA|lcaG^&d# z`P)Lw8PIRkoTfViRP?(N-1=QP`CTRX?a;6KhdUtRV8Y5XI*4~AZb`kc0Bc?^=qsxi z&L=^tOLv1VjPj*Z1?>fV!A8Oh5Az+BYRho`qSi^Ah#uGBtz5H;h_9Ww2|w( zU_-scZMCB;g*h5IXXPfTAB~plv;~wWwXT%<`cXI>Is%71aZPa818a_hzA_vxPjJ`^ zVqHcN2X>|jht3lFbV`RA4)R>+8!sf_-|)X541EV+fQQMCCCi-%9)9NU5W$fXhuS9K zOnqFPyv2Mu`Kgr0nIb4mrDQUasg&9zGQPe$k^xe|7?6eVP97^f5r?W{hWA7kp574g z(G&a9oSUZa)sBEj?#vd=_5=}ds|H`O{2BFXJ|33eH9OISFSXi;-y0bD&@5Dop6Rl%1!(3riJi1Kq%zSs*OU5bD#=jq<$MM*Kbpnf__Vb^La1z zdp9G{BhkYe+eoSA%TbFa*-zqwDt|xNJ%Ky6Mc6+hoF)Q|naWz)z8p28yc`5~QeFLM}%+Se!?-9kMcZD zKf&b2lHqt4f_}n_nh0E7naKM}DYXQusDOh~n(LP8iERP@c;Z`jXSb#;xfX59?%eEqrhPMO8}{%D=pw3k z{}={uu^}(ol$yovPb{v7qo2p)SdQjvH7u`7P8fmxNiZeYpNKWbUSD9Z=Cix@Y=ZqM z5bGyn6tRC&*iYx)p>1hSPc-c1xlotTDwWf z7gbbp;3jt=mWd0sFqe%V*hbI_#a}&I&ja*iw>!bw`TvBkeu5%4#nRH#p04*;vVEFt zkUQN5xnBal?)GGK`2{|7-FL$nx1advzc9v?{7m=KwV#s;*pD;6q`=0TUox4w?pkaM zx+_ibDW6}`Sm5LldNzpfM9zfM)c_e%NbPV)Oj8?o8A9C}nHL`i$ zxi1vTz5Hd^D}u};87;@oL=~`8>V5rp7!f#i1U8e=!33LbtT{IN%CPC-L)c8=w>}jE z`!w07d;6-guO>TDO4pq~#5ZNLTH4tdmO1C%-^Sxg1_h#H-jAc5X1a^mD>I z!|>b$jBj-hQ)2cSgb3$nW?eKDQb(n0aFdBj)JVT!y`v+!&0p+>*1PXT@}r55vj_ey>dP!z@G_+Eppd zES`3CN;8Yme7+5&`CtE-SW5JBWpSGW)Qr^}w|U#U!A4_*XZvN*LHlkV@hv~n$-}*S zqHM-`kyz6{_R&Fn9bp9VHD+Fm8Qt!?GmMS=+uei8)4>O5%A<#HV$<;zbQe4hDNoIK zdaoUeXT6u{wM?+P+-O_8%rlMuzA^bzo`uG<>UCquoHlqVbnEAFmsHrh-r&|BhtDFG z`ajG3?|=PR{!^Z_jpw@`$a9YI%)jA-j8B1dNh5HGLOtrDE$8R8b^Qfd`$hKb9cg#<*)9txD`EEr1-^4af*MJ3S#ii z#a9%AGoPhEQ<>ilOZQfq%;s<<*WXv`qEIgNSQ5!!E zdxAT8EA)E!7ZdlgV>c?->o_)~@o;YZ5CMeIAE{5;xf4wv=`Q4nI(r+oaxvBtMj<*s z*kZ?Ox@>)<#f1dp&cSJ&v zs_gD!XkA^_0(Ewmf1{T)YLgLvlO~l~rjuQZ7`J~KZtlU7AKL=$<|)6o#>mHDkCxr3 z1k9~hu=V(pKk6uyoyJ?9oa}?{QQT5prW}0MBEzN)Rc0BTa396NUCfZc=<$37sP@q; zCL`V^rJ2RkwoPefDTI~Erq10C9zxijpJ*zJ8(CRez`k*`o1NvD(GC)2^G9mVhQKaw z@Pl|qT$BFhPFVB)roOWA_V*B^^7Jadbs5;dFZ<4L70bjfd{cK$Exkc|_)*Iz2`Y^L zp2OiT{`8dYKa6W*TgVWWaT_L24TDxJd?T)cTRC9`^k>Y4NMtu)xsaM`$ ztJd~}P~S_`#d~8epM22-da7OZeLSP_#|qG2734!*9_|aJ_F)Vk8RO7~);ZB?3T8j~ zj%A+tBf1w+owmh)w{^Go4TEi^<*wTaiHlP9hszy+(SH#1AXYSn6^rB%R>78V9f;L4 zxP!2EZ#hps3XXMoP6-ENw{+MOkU^}pB)oERhhWUMbGp3Jwe`vBuNqJEA(GH<^Q*BT zV^MO4!tSpr^--uF27zw2GR4M0mOHV4bBD{xgt;TIc5ihXTWE@NrShBgTcs4V`J!3E zRbKLbr-{wgur4jk%c17kI8IWHjx=&sp6DYyPjQOZ2~?K9g*BQ%vNF9->xU(#cQ06x zTv7edM*WbLDZ+ixd|BmiltLfm5S_yOwhSNecd`0_NmJ49OE?7a%W}4(C`Gqd%V1yaEp5xp{FzeNrxfNGDvcWwzy(U}AoSchsIvWVLx&?FCuSlOW1t26_&WYgn5>RB3+bT^|6NKmi_v@^ihBGHCYq)e^nat4BGnsV_Gfc^ z%N&1!W9J1Zi)~RJg*aew(PaE}jm@{%UMa_Kl4N$mt;1 zXW3Td+4cV+Y~*E#1kvGA zK_3sBr#Rl`DGn305S!%Kvr<@y%=-#sT0>++@{xI0jzO#+ADQWCWNe)7y>YTc9@5Ah zL9p4B$H9Dz+EaNWnW6u}oQG1HwH>OP&Ly#QyBQ1kyiNA$XqGDd@7qLxnEU9xIvN-x z^Qc1S^~5erxXoBH+gqlMy(eA?@bf4nGAM0XYTm|2H7Lz2&D}kkRXrP_z1m_O&@@ZIbmc)pe?uRjwKTG?eQWIFfQ*!J3zAeP!kP z6yQ|3ZiQHvfxS)ks_cbweJqTW>y=7NScSjL@?L@pea8cE(48QC`(V&_v~axSZr8&| zpx%y$AePzBONc6+vb(=fP;5LG{S}*APZi~EI?Oy-{5>Y9?@iSaoK292-Q_q@jzO%S z!B1>lI=w48oB?osr2_en)r`Dyf&2zT$Ao*80{IY*7$@Wok-O@X^b<>>ADe170>@p_ zZ+{tKETsCigRW0Av)(;eEWdtBmkNU4g76&q<)5&yjRO+2w9?}tig%%bPj?UuF;rPZ z1US1-1Qbahf#VS6zk|hci?$@m17ihXdsO6cX-h)@$z~NFfaQ9;z&dP(n+0W;br5)$ z1uiIj;K_`<5qMW1Oc=yA^fy(}TBG!xlf<*fE{HvjJ~3jiaeYBp4<&z!coTM6{wc)(N*=Upg3w4&H7wRm3=H~K(-i|X*tDwf5r==b- znRz{8aV^v%DsjFZ$y1Tk1E#i(^?>Fkwj)3F$MFjMmfcoT{dpM4=_J}M+fKNeiK@Xkkr1~#P4p)cI-~Jwa{sT1%DLU?IQ1Ol zpO!1lL&Z#PmxaRHTG1J}4|Ckc=D~Fb@ukFgSZRm`C6y=xhj|(yHCmHiCNHbQ6|IFe znuS61EdEC3nlK!fPjCzQDI_6uXNfS&Qo^oRALp@RzTCf6wMK%G>PE&;ijAGF)b~j# zaJ91`N6fRZ%o3f;kH$|i(<^>{!7T7Yi&L6eJdMjWd>_>;o;EY3nZ;S@B+NlF2rzalfL>z*jQbJ*%KUhw*{r?^~=N&#QLdU zF8fsDX7TwvBAfV4d|9vU3qf>+_@ZI&Q-PiN4+^on5?lQ$QDd2QyFH=>lSMYM-pIG- zaMa{U3eCqrCwJjoU2&CVGoFd>oc$_ z+ueBiKAw+_D0^GLnDh;q9WL|@^_7*q`)CSP_O^srmr?8w-iae+Z&K+!&bO+}gMl>!fong5UnJnHN05t#&ghs`CJkoxI?OK^#r^3%UESH=}{@TLZ7GMe5T3G%avtdp2J*c z!-JR&Sb(qxX0(>p&6~Aqnd$)UjCpb2YixJbe|sClK4O@SfXuJvr4JHyT~Ym-+oq)d z2BqJsS?-9w9=)p{ED6o^L-Z5f0EJx%(JyGdR}P|2@OfbUP@GczppB6S_eoqt(_X-} z`K33&{D*`Lu#CmBUW23w4U(j18mG^Ik^WUj18-ZfSm8xC5Arx+HW3C(yS9 z{L>V0Du0L#nS8r<@XaM$n0D=I^hs|2)13|}U;6uK5D!`!9qYTvtpm0RDNTG5vTjRc zos-Kt*Q6{m)5u;{Y_jH#A&WMrZrqD8>jyH4k>}f4JXvmTLzqo&J0`Gd^D&}5t5(0H z7*Ic407vwewRHI${NZJ{mzK#krh*F=Unmw`D41c-+jAE|Ec;Ecd0&lvGY#XUOJPdd zx=XO;ZJoZdzS=+00hPGRAl79R+qbuH1UJ9;{0`*vLOLw8Z_Jt4jO~{Erf1Ylt_gA< zBdLvN)Fj%-^^395;)&Z9BV{SH5(}u%mMEpY+G}(<7Pr(Yj4Ncl z3#;lO(JdX?XK<&|QSOf3wUk>y4Be;18NGv=TN&0m%ogx26>kq!5k2HEG%wsC>F7jr zc@6yQ;jlOOoqk8wudL-HCuRhi#HYyy4&tSgxN0WCVQ4=hBFyF+J$iu z6H$~I2`%*DIX_+c6&}+0AUXHF4}q?^B+sZuy_z2R3U){eAc*zhzKT)*nkOqhcF8So zI$(`Zm^m+>um0c4{E=9iFEB7NW2BHd02~xX(94k z-cOR&IZCVSKK0SMd=LChyGGK9_UCbAq8)j~vFChX)PG^@sR(3seYz+5{z4v%Gwx7? z#v6B-%)G5I1u3)@(j-6bFc(W`GVZW6H;y~@VT&1BI-oe0qY2Vu+atC}_1=S0e&rSW z>ZHn6<$c@apM~=S(8`V`-ml)wJQCI>J- z12KL?DU7xT6|2$N76&2O)h(-+U{$)0PD6YafYD=cxgS#HM?0&Flhx%5c>mA@oB%Y@ z_6_yN(bO-vQM;J=q(m@MZ>Zz(|CG5tEmsDVxTo%J-&$s?(3jJsCWqG2=GR_dqZs}Ltb8JmS0b8Mym%(qd zFAu`dw=vQ!n>&!;8hw)L5>d^`_d}vzBxTfTB$)M8giXFy`5pYQ7f(LFTM)V+6Dq1X zd7;7L7a&A$AlfFkeSJo}OvFnC5xZt0L>-dR5HIQj1zwISl63(WsVbdL!&Bm#{`x+x z#)+$elm5!?7S+w_X$A2sNGNo=Qau>pc(fKu%JuKT&|7-uWjYJ~yg}K0jgg#t0%!k- zc`O$9q~<8OQ~xQOt4!-&`bB*dV>S-LOm&^RlC_tn3^~PN?ks z6k`1+|Bt;l0gtN4{)W4WqO!P);DXnHBw*461Z0OmSi(Sv1P~O&PP&sc=_U4(5Ef;1 z0|6Hl6%<@?0Z|qK0sk6s#$^-~#hsA|h=7hdGdemmzQ149t-km6mcZ!yy#MF>q9NV) z);V?R)TvXas?Iruf6U`$JYHhFoG)^HtQF&hz!)zlgGBz)qJ9RySQOi?g0aw@H=kkb zh&qr!9;E{dF%4xR;Z5TipW-XVhxjAkEylaheEc(GFW;Rn0L6F_7(~&)2iO5Qum6Ln zLc#|2iU+szf&OFWss9ik;N2@dp6lJs+H#xmO}U--$Q) z%jZ~wrDcAIS0`mo;n0JdRa)jprthjg-n-Ht_45aQrvROXRA{(n8HO)fcmxm9P6}Lu z+gzkyxh#SVW+$C2-v%b(UEp4n7VFs0G4j3x5dNUqCpFSm0P&0;_%R6o%E}pk<41W% z)5o9(%JW-15$B$N_<(Ypcj#I5JatT3 z=4~hkr(2ZLRn1v=2gM@xRJgCg?;X-E(fV^orBO>+2LKncf=1K60c2VLk^jbiOj8?U z1EBcNN^8>i60H|ar^c6b>{TQF_U+XYf4h&zKeFDQPJV2qBNn8z>MusMKrS3Xa7o!- zL@r$rz=B-v2+5jHxkL-x45>X|UXzDwB?Sv4;#SyN1ZMpi?R~brKc1}<`jw4N>&5*i zodIAqpP_N{(KzXLmAOE)6Ona%gxvFxu zR+Aaz5A5H@BJcltQ7<3$FjsqltX2Yx_6Fv2r{P=yEnRxZ8&tG`>XXW~ZhFhT*YvVhaq%$If3$+Y;x@Bmiw8Twp2q(4h%r9y*3> zqpl(2_?HaspqH1$(*pOiJajT~oEuoiZ#LTlddD3wcicZwBHD336BWj{sE2QeUp!R$ zd3Gal+a2QQKo)&vc@?4lC?Aj5PpT~Cof6C+IC%rzwD+K>^^beRN6dt{3P@~yijTjF zkD}~uqwKr*n0W{IX4#t@21jLpH=2fJAc9gLV1_LKdA8$e)E-r~BrIKvEqM|O>9%AV zJ{qO5vxCc21^U0ksnNJE544kmBcf{RuUDNY$dkT;LmmN1;vADAHs7S_Xyx);2^{T z{VnZzyl3nSJbPJcA4+ASHBKqx+bVSLb!D-t)tBW7UCp4=alL!=jq>Ux$3n0TkY_jvgmJK%X5{JpL_(=+_b-0R;D-ca_)?l04N57~3lAO1bB`MVVxnmqpVstsMeOJ5l9!Rs%5 z(*K`ZpRMzL*f}y`-=KGzfAHz}KD(cJHs>Q;VD^VC~Up7g>;&0cGJxasq^Ob>KCYk2v%XD)WW(kHugLU`U3c0ilpOrqRTUM*PVYq@=D6n-*owbDwxqFl+T->MU-{dqv#;K9#@}E2 zXsx^O@QY`Ey=nXW>9=nF*S?ECE6&gU_`Dyczqi0We9tfAoG*-c`>G8+!?vxD?$3E? zPwwOUhV5PQVISX)-H-k9w-4T%eAqMaUmy9q48FB&^{!3Ve;mp_Deu6=X;(}d-sI`m zr#Jts_YEf(KAqbrar*!kfUpn7D{hyy-xAgUo+NUqw zwRZigy?;Ev&${umny+{Cny~G~)!r@tqs`fLY~#9@A859JW7-4nJ|FHe^87=m%*ea@jK9A7 z=&84qe{XO7pH~}uCSG0q5SC4-1!HswCUb*Ad54(^0e&5LN%3j)CcJ!+TSTl?+x`^M}mTlMWif2W%5p1}*&Ip4fsPU+Sa?*=aG zw!eJTlImt}r44EN(&iS8(mS?0dCc}+TXtqP-S)y=*Q~$%q{-_hJo)S1S3AA4Ys379 zKFYdy&F9yyebx0~yYEYmE_-xxq{-dBMo%?9ZCSr=ryrSDc1rM^t8FLG9`^E*bEj_F zzvlAir**$@W3vYrzI#{m?e8CW@!Lpk zy0+cse|%BBHc&m}#g+%JIrY}c$!GlfMz6-D6Pnu3`t>3ABF~!QpWgem!a3+2Z;L7W zo2>Ze-R65o&pD~!)pcn-obAe<{ISLLyG9K0lVr?lqrY^T9`@P51TxYp)Nl zELyYmshtnK^!ZKiyfEbOuN!hM`hMHC+h5)CM$X;qik^6MecO|}?b>p8(t|lF7BM}J=(-q7V(EY zKDVm9$Q|Z%D6B;MEzHg1|CKr8=B^I3s%;va_}0|Be);AF$0Io_7xn1Z_U9XiK6vi@ zo0w^aHX#Eq;1O%9#b0FI59V9R5)$Q#-QjAt+pkT_nSrt{ZCa-p4tpnS8K+hyu$Kk{J}q4C z*3wZrU32>*K6lU=#sG5IFR_A@1>MfDJBZRC0Hq!F%Tp8po$ebVPOlaY$if#{3wzz6 zkO`IESk(mMZ5*BgiN|0|EIYLPuqN=hJ!n|a!a2d zif?)FkJ{}YPV0TgfT!+VbmK+s77sn#ZLz=Ss(agxvM)XB!_bO$-wav#?__oW**MYi62b&u_j_-4NR_Utx0 zP6=JJ2T_P6-gt`VP>?)l@*k-bwN{P9CutAqRQ zY~SvS+rvxtPZ_YF?$r0!9eD4%b_bgrJMHMfR}UUr_~to(eZKX`@BSS8;D;sCzx`p~ zr~^MgbYKf&=+^=@|VyOF=Qn*PP8 z3l3NQa^YqDztBF7+@GF%X`8kWb}MZASypkoW20OdJ#Mpgm^A3p?EKns9al6f$T|D< z2RgNHeQ(#L3#)pp?>E24nAe*R_~LCXujk}j z-#xmmFz8e<^7GoA1`cozihGOR(p*iUJDy3N)S-+#cnpD-1S$1g&_Y@guy&L;Sd za(>`N9Iy>5blc6Ss}r8njfZ-_3N+AV^J>)55@j2q+^fK)fu6niekH!Y%=)qKG!-z@ zP=9OG@gkn{_|=CU`*!&K7wR~MGKcVaBYqzQZM}ed8|u3f^sE3qSP|NuM|)NRKQ zp_qEgZFxfVmx#lb^yDC_*bN|{L-JyS;QZ+XNtKv?IHlZ!;+e^d7oku%O2WVEE6ll; z%?+Z79l?bhQdNovoczP0k*dLp-XNM!L%<`LLGKa)MCv&4TKSR~=uGrcf4)i##JQ>v zB$2_aDKQdkp4)mSM^Xgv2#}PZn#2egmfJHqf-zvW6CIrl+z0S34FQks!F2%a+z`Mb zVG614`2}DX4HZnQjNx)F80od)G|!fmxIkhCTn~VDi2+6knW(@Z2*8B%+t#3Hx5P#3 z;}fzK*mCLvjpb2mjA}=HKvw>Y2T139&`Kke)|xklONp7_0$9(~U>+d}#X#s5gFL9C zr~JYR+E$PXoGmLs!3cQiwvEMa5a{IKNlZ~WPF2Q*oU(Il4e;h3vCBnC(%V;5t(?w+`K{aSty zfV(9IuCHIc0L`fnG`2?<0LW1vkhL$j0whT{$POrmuyf2Pw28U;0nnt6G|kOi*c%4R zVDvLJ81CG)b+8tbi$hA2Tsl*=aL84m_#711ti{blc~G#%who1IX#bSpMrf-b8BC7l z)Gq)Upn&8|YXuzuglu-KVP&;IR>KJFof-|bj~DtkG2adVLFZHm5`$&K0PUX&%&Pel zBZ&aXu!bWsHeq5lp$B{l*h|($Hr_#-CT-aYGyungGbWvnvBnsfspNF*xD)C zI|9u0qtm_kE7iJHYm5ehzNu)U^pQJ;*=glm$aW`CbgK`=D9jUn*zA5WJJ*18>b0K$ znwJW+p|j&~tUCs$LL?biiG~El;9-9x?sTM`Pc1n`7*gE(;^dbMNo%ZYdZwa>n^i=R zn1($7PuZ=;xJ`^89c!{Ksp>ZnShZaR08@?|vwBHpe8cmhAxKgiT1ZT1%PNG}gkVTn zRZrqJ9|l18!~peAL|piy!xGgt8luYGSgu%-Eq7J}9Ah96xWVbfWH-l>7uq>BXsmWF z29TpZAZyPSV#(dD2<-@4md*{~Y#5*e>I1Ex$DadD|N79>$F9cMx#-z&B(aRU9^l;@ z4sK=P-vHd%+|E#g1oJfbjeulh#TyG&0HsI?ODrHxfP?$V!8y*kn_Z1E!K4#u70~oe zg~t3YF(oeoMX|Y9Y(t75T%6K+XWE86E+eyds!toMo-!BUdn5o_%;R50Ld?=%>W|+6Y8hi4i3Rcpm^5qls!B zEEt=7zvM=^2jwINHP{t98Xg6Zqdp)jj}NgPT$l?vlV>?r1|@FS-vQJ&Igm1biHaLq zG*)Qe z*e@K7v#H#|e67M=qm|+?h-XzHcd*JGbl69Ya^qyz&vPW4lLh>xo-+Md%Nf#~TBS2w z?$Ab;dqP^El1Ew^K6%RgfuP%^RhQ$0EE`9;d>E>9mv~A&ZkNM;=@54q<%6gMe+we` zYC#=x*vtHpGUKVhF?96k!bydrMvfcbr#u|4?Aftnr_NW31L#h&5~F})OwpiGeOv*b z)8n5IK~tJH5%?T>1B{aPoRNOF2C{vim<-6S5@&XmPEQbR4)A0PRB9f-PNBozvbP|| z@ASF*$imY#e(7u9VHa)52x%^NsS`)yI!r{K_K^#L;xK3eZ;ER)Z@}ro*`jt?Ze?Yj zGwi%ZE3o@BU~}r@sbAl;DhN37F^*4<=Y1hr-Tan7GB+V=#cj%|NN<3VN#C z;<(c77d5k0kzmm64{I(@&|MM^1Z!~AndkPp!*1EVB^Ayxw?tzWi;MCCIOhv%l{nk1 z49lK&5lkGGwkpy)TZ)a8C2h>8;SPJAd{ralDc>cifuPZyfF!bxN~f$8+!rVlR6kg> zR=plkQ>cS_CYt=zDpEFqD3RL?^4lq0HxrI&~0Xr4A zkW)&vOH!l&4MODbcT#c%`3`#z$!b>7yoq9~sIW2;DmNbWGd}W#mfg>O+O;~CiT1tr zd_RQJ>orSNBt#JvVx^RWrkqc-{89**`l>lGI-?pSOJk$;lIVz1F`^*ML}gYdYT%Wk zqXY`*0+)lRSyCzkOBq!~$W(Wh1}G`WYFNuUO5Idundn{7;gwEwt=H|912ihd9=+WT z`*_p~T_T1ws19MQ$lfmvc;R59ReR7X5Je3EmE@IULT*v>xq=8u8le;QR_WZt ziNB?Lq6|x*U1r&Hz1~1|2&%&!gvM}&q9a}@ToZCJvy^(BWmKM2I6-(kKvn6JOAuTP z&_TnX5Q9Pkp85Q-4>A*w42I{jg)YBxqjw8_NE zc~9slD9fUNHzFoJp=CLK6nk})4twWZ&FcZ*q2ClKQR&5C1h=Bou1>nczQ%4=lpd)l zr4E9WNzqV35U)2C8j8A{q&e!NWGhZU9xyP_RE`V5Hn@6`O!#|vTymIEY@$?q#FRz> z#W*&2!f|l5)DwEmn%nDhnzVy@tT5?aVdxB1!0+)-#zdrL2egu&6G{UCd!`PP@0w0) zV|1WU@;)?BS|f&LZa3OAGLkdJK7KfRgE~a#Am(MsC)ugmfEsEQ&fr|))a#^ zRE`P9VZSW3jECILU`e^d-dahu5@l#azR}?I|Sp-^mcE`kCC;D=!Wagloa+0xPnPtE46Ni4_`w`)W`K~YK2U5a_xUxEoir#PhPUVac>m%9>c z2fP-9!%q_PIF=f!A9Q9o?7g_^BjdpFfnE=2Q{9Mm1wF-)urcR}7O^_TW4CIKvbO{S zRI{vXmpxAxOw%V}PhrWaRzcP9QbdQjU_ZDWWe&{|s)EWICA$Fjg0csN$*bf+SQ`<) zA`5e((_0hba4SX62w90250BBUY`tQ>v94B)jc-LF#gfX90+#|+9@vqB&(30x*8_i5 zhzkYIQ(A)thul6-Nx%!COz)MBzVmu~9$GX?4Wfh9s1%}+NVeA5ts^IDL?~00vZ!ov z_CrV?^Tx2!+w9P;=2}*ghm8OjlcHPX5XsVHF^;UDyDZ{$24hATJ6Nog$XU3e!@jBv z$c3z`Gb%#Etwa+-DnngNlywlN0(8w84g|bVfwapVnth0p6yos)N~GDY<48Qh*%7iq zXit=^i+by&r>nt*HD+{W*`Ww?X^2LNnCKM2)E#nYM1>AEtkSxFy$0pP(>a;|QWa^Ra_xTu$FHOq`BrWHpZ zDC~A&T}J%E;W$s)Rivay#2M)Gp}whv;iYf4unzMaEIQ6%zs@?q7&E|Cvaq{>lfsBb zQS`Zg#fdQF#^i~0xTaSvRO%HuIqHR$*_B!f8Y$G?VJ|XwHSJBsBh>|DQVl4N?wFxE zvEU`as*r`R4*L-`&2nKZC)Ub}GObHa&K0gJyLZbjDY@dxY<%mIU0mua%`WLudWE~Y zyR=8~6;9K{c>KUxc1Y9r%1Yq49`MO=+A$f@WX~P?_)7L(%O0)w!xi0f?CH^c6!K5s zM8VdY**YsPa#m3i{ZTfu2cxF3>^vb`LTA80#uu(spt7j+Tv0em3~)jJ1A!qlWv~+6 z+|6oN6h+4Q4~rHSQrn$?#vYyrmist!$E(-qM*w5*$H_@zr#wMFlu#v@G zKs9YBZ7(z-IFCV=%J{XPQ-Hk-WgpL}agHd9lnubLa_BdgvV)p>6 zIh11Um5M^xJHZ;Uz3s3M>OCB*$LYB)*Yr_tU!cl8UDh)lCONTBA5-Z9oqe&($W~v= zeVd8VPPtarInmy43^bG|ae~diI5&jpy_j18#ukDPB8J+X4*L`KA!4&p?&GRyK#VcJ zyILtKp}NHyLf@(55DUWS(Wk)>o1kw`!PLXVp--4%F3xnwbwHNps4C_gd?*zwgZ5b( zwhH8imavxr8fGMzXDWJ7Q6miVHk`<+gRo1?&uNnZgL?{ijrGm|xl9RJRwMkTMfZLU z-6Wo8JMl`f$l>yO?ai)L+S%ipXdf@TNijl93i=A)*u&LlRm>e?A4>5Ef&!L{Zq|=4 z9PTODM+t}A-cpDCLpzOMWxF~d$uPi#WIM$qCTC}35_WpQB3F&xSjBqSt~>$J8Sc=C z6FqHk3tybxYHlk-2z3q$8#r1vU!21bDpcXY9yJ$9i6(2+Rj7-b`BbE0LCi%bqWHu} zlomvbLfsJYxCF-}6CC!N#4Z8$k;oK%;F|XLV)&SRKQ9Vz0@iztRtHopcbyc&^gSc) zy9_fc1L`HO(X+bzW=0J+ISoYdS~jv^0#pqT1h6?sHmFV(mMWEcxu*;kR9I~snfCix z#5`(z&dD5Yuohrk;FHb+wG$hqUD4^Vj~F9FO3Y6fgV+fxlNOMWF7zS^z~D_>e>BQW zT0RbYPTY=6)J&&D$ZZ!>BOP`arxZEaXzMwOdiHmIrCQ*%suJP^KU-y!8dRD=h4H9 zJO%$;^oOtdEx!NZi|?u^Sh;l2RfP{amt-#+e*g2!9@)70p)U%WJ@Q%2V~@W0##>L0 zu0Hro-k6!sE}3}pnn$Ocx#7DX2EEw(?KYbpo>a7H#ly=tjj#Lj)@Q%@&(>?N`Cxm= z{!d?Nx#rOwi++9Tk6qI5d?Wbpv^V!1>-Cmr=$&ufHSwpncK`jfcluS$dgtC3*6toY z|9^Hjn$l~};F^E$xpBpW1KIwB$ zpD#Y|{@oWH>@)ZG|N8FzT~}7seR{}uF!QG854G&~=#jI^h8=6OVa#6(EB1Z2{O9w( zKYQrU-#2}7*T4T%bJMRM+){V)&5OTm+@$4wr%c$lpvlwEE^TuERqm!!e(KV^O@49n z9ykB#^yM$y)T*av@r7Ia?zr&L%^NSd@|Ql^L;LTz^wWiH)7AWA!qMe zIP}BLS;Kxgb5+5=@O%4Ns|wERw5s5~E~^SI?6s<3W4~1eH;q_T@MGbs0(aS}g79R# z^RFs!RIe(yx#pRXuby5v^2q65k9_Z+%SX+=@#>)#qP;d{^c2PSVA-{JPNuKj7n z;%i?SUo+{Uo#S0|uRNu!@rRXV+TA@p<7)O+yfL7e|8M2}Z?N5Sr=0`$k$Hd_&XuRwTM4SblU<6Q*a{XU3McQ|DYgKtG!xG3BO zcg$DddN>DeD4h_vfOPk^F#K;nLiVX;`2Kf%-h^jafUN?q^8j}`@TLPFfA+y~XDr@t z2hIg)h}uH*#*={Q0K9`h(*U?uJ_C9@@F{o@E+H48{3N_?sced6=G0e!JlNNYt5+&mW-P zchP>_NoV^7I7`uvyTF6RfVBh19cceflx>ga*$6#YjNc#dOHcQ)aK+z@-;3a3e-nO@ zj>gs$e%7n-&X2#l@#{lfb-?p8+FOPC-az}W0-ZJRg%}2!mVsw&@N5t8@4&O(Xm1z% z{Ri5}h`=;{N81?+I3MK(;h6_8O~FJh7hWx;r7TF!6}xAs?Jr=np1YsXgx znAxkkNYqg!{;fgL4lK&vi4S3v$q~qAzIWLckor``RmcUqcR31oOJ3OghOYNAfI`Z` zUjW+OTp+&Ll3*qKX5cjFh%SS`eRd_&H<(jANKbVcTPdCX@*yvk=(Vt|4FD&b0r~3q zA_nM!@3NV>9fCU~#|8cTD)AplBBNclF|l+?+Q@Cnt85x`8H4~vXGx`5Rsb;5OecFZ zjQ=D^$d(Tf0x}M8S8Oe2*H2kv6#!j85wrjvWi5lzEi!b*B{D!5T1SGaSc%i2ld}|k zYLqKS!+~(&3;+#VrhHS|0ic5dkQ|cglbnfHow$y}*3wWd*2-7niqzqcLQov|5Y7!@Ct3g7J zDL~AYglt|Q8fV3A9Vb>q@lCNd+#0%aCyOF zD+gi->r%YF*NUlt^2!G!88pOwx(EW{Ek(GVLd+p z3;uVjA}D6uG%Q4Zw<^LA+6r4gtdTUU3XV;Z6tdZ{2x?(1q-M=lc;&FZGOrTGiW!a8 zs9`FE0CIs9#B2`SgV#x7lc~e4(@Dto35uV|B?E2A!T9Ce{Vg6M=9uw!75Wrt*jdI5 z%%ZXQ8eyU3U`VB5{?yl?EPz}<+RXV%3{zkPUbmK{(->6NO31WIc>_f{kHj2bii%6{ zOAEnDnVCfec+X&>9{|?HOr4dhR|63vSGX3U?I-OsnpkIJ1({<8oTMj4P=U@gdn?6^ zUxK=%sW<>Y2uL$qxz?H9u$`22%m&Et)F3n&8Ehjnns5jrC?ht*07m)^ z0Hq8tCeu{E$w3zsf&9fWBkUa@N-3;~5T%l){@9;M8DDP|38QgbrWt90wg64az~>@; zY370Yp!lh!q-wOGdiMiW2WzcX`DV>>OM{(!j)pb7wRj$wNsCHKqOlO@j-rUnHO8t( zNWUV1e3v6;q))Z(&z2Oy*xkPoa) zS5GD3RuoMy#mbUP7p^9PVycOqIh0Q3O378#d2vMS7hs z+g|`WSk5fw0#?paNgBIA=5itQtt8)NYn)zB@T%mj;xk7}Y>#vSij={jiMPXu#>kN4 zvXuZ0VmghEi`^d0gYw~yq0C6+vfTxM4ygbJp$ClO%TOHrPLAKIvCSnP2WZN;S;d~% zHXQ`uP&203HgTXa=~NgZqqYsKq~2o$Bx>Ntr#FFLz78xncyq!fgpal zg=OYZ1Sp1CA6aWPzcXwRt4b@yXygE`vE2@Ig=Uagj+o!Y_INU++kmvd444Y3RVtF9 z{NZ>|l8ZiYjT(XcGi!6B>6vYztQ$&YtRzhYFrtvnJ!9>LF+$zQJ!mD4j{+#A+?s*R z$Xnn{qqq4%EJMdYVY-Cex)Zkd4j@PpG%dA(GH(fPF!LiTQ3KIs(k$TKCDoP8uA?S$3hNLd4U`zS?K_}L5yEX0XO)!B zJblQVlZi9b;3@cEAeL61QTsXo zwvK&mHI&{#ku08$8L-Bo2(7r-;kh3Gc?N)$XHt);+@8`fi(gI3tWy65q8#gC=p?c9 zG^{G6tc(qpUhUDd#|soYUS|MF&*Md6tj*p8cpTwsTw3i|L!TZ7P?y*`X;H}TFjA6M zg6AA(N`vF>J)0vIkjAMGMdW#GNlXIB8vxSx_&{P=v=%73A0G;XK|?Nw#TpN6WS=7W za>2orCOpHF^GYeCkf-<3P`Vyy;`q$5s|1uwL&}o$4B$zs%hogt?hNU0Bb7dZ8OZjX zL07#>-NViq(lU@$Jj3qD^%Z-{B7q1)$7Fq!rfK(?UbYlcWUW_SQ>;IC|q?bBt;H;v#WDQ733ETL5(>x?B^mtUe+NZ zbW0J829LZZc%^05bS!AE+3hv6vk{=fR6_S@oo67ZMMRGwBmn-=74R-c+y`Q~5m4anXTLOx0^}(0 zP^1LcD}+jsY99XStwpuuzbb1%Z_gPhlhd1=Gi6jDoDG?29k~dQQvgnya8vgMTnKf` z*FD*Zvl!_Ev}`@LYg9C}t59||JbK}u7>&{cgBbJ_id0s@Rhn*HB9L1T zx&|erpXh}fu#guaeD(`~m=Q%abXTP#D1z;P6fJewHRGLdP{&vH4q`M^i57!pMg_1? z1gYtQYtOlM{6uX$Jh_pNL4H69c%0&U!9)!muU$J_{M8@#vkw_ew?iq&daIl+Mhz6Z zOPugD7p|1ik*53KvfD&tv)(EWzRrUw%~~hrhpS?ibXZFuwL{B97q+)|l`!m1u!6&ST){|7RnZ6$o)CoaB7Tt)jf@8< zks+Lt^&ldM1~X$Y=L#HhrS$5}0p^IvAs~d#k)e&pScVn=f8giMU~NSr$wxGX^l*j( zar>)0!GPZf>Y;;!9uZxTA>#o=?2=C5D4AS9==Y3pFyhW|*gt4=_@$*^t$FO=oOuUs z-tgt7`3GKn;m{Ma4&Afr(5m?dwk$fZVBS|RFFmmE;kuc#zncH}S5M43FmKjZYc|P; z(K6p|UGUX&FCM(@?gLwAYF54-dSLGUnad8(yzTJH&HHCAKk(eJRvtwmHmN6hiA_P-wv#u_0^-x z53gAK)vDEpW^Xw#YZ-Wp0vfn^VDW;3a~F|!&&)r3@B9Nx9**JN;aQswub6jW?Hyk| z^}J-+!3E&LOf*xwR$|sUcK6DO+M(xW9)9VeFE>4LVE%SMqQpyEK=Q%+XOqfR&+9BB zkG9?x<&i`)kt7|Qz3R)&4=WZeIy`G3h(569fkSt#1(&{BbNj(1o9bpRNXn(UnRn;_ zv$voexr9ewZom1fm8%Xtwna9V%$c7yve=J!0e|gkL@ax2SJ$qph-j0UP(-V$-BwZ_ zm|DBqhdeQeot34gIxA{dPOV+(4>+`e>i zpPgL0y2RA%8V%3N-9C(H)mRuwMY2JfuXgj!?QD)}X&8KX%ETBSo8zl}*6+t-d_--V z+%Dix+DU9(dBBA!HlneIpexhzJZ`A53fv}xfLM1B@oBh($?J_^Ze@-N5axFw9Nbs? zSnb2eyybE`D=^c0FvY^~aQppQ5fJ2;BPik;1o(M;K0@NH8}lEMTGehWDG$5-Sz7JJ z(o#R3u(%7hNS@H8rEbK%r%V0n_NQxAP^uOkBKoETaXSLg8DWM2zxD?-0e{j3;n}+O zO-G&_s9r^1v@Xz?F8hP^4s|240S1c~S4tsGk-HpZ(gqNy5aC|?7}^3f3~LsKX$YFk_z5Elx2 z-ALKwu&+qVgK_0#@+NdOItnd7R0l$>vP9w-C$brocxu=AK{qDJ8zLwG!YP1kNx2Np zMsXP7$P$De2*S!zvkHQ;F@Xe-ZlxISApIo~rz=Qv7GtS)CFVTNfhC9{0#ZDT>7jCG z84^5UPQ-LXXv~7Jj$EJ*5)^d0FmIcwLR`2s7QIePxRPq7F4ADPAv)X>M3x8@c}s&D zO8|WL1{mnCH>}j@gl}LRh5Mpk3V$o9jlpmq7U{~S>V}2!%IBAwZ z1b`#jMF1g7f>0l+rc*RnO{afM8;S6`oj{mTMwQH#G*iSS~ zz^ACK64y=WA+T>M`W;P$rrUXU#H9@Z5$IPxvdsxRI&m7JaAYr`p8YfL*Vl2cKJ)5| z+z6u?v1HMeT$zS^e{I_nlDO@iiA#>gWIR|tr$y#`WslgKYIkm97HjdcrluoTCfAjZBj zE#IqQ8HZNF(Bd$_%mL*DnLj5|Ya)ik7N%{~4sTJa_ zUN-3E2m@Ad8cbl$Fb)r3(|eDDj41d$c8rzMrWRu?6wybR-gP48Tc?eI^j)HqkZTxn4V~8{Lm8Zb7-}^G#bl)E_75A5rde5 zbvm2;P!C{$9BYIIB^<37a9A=W?X3)IEH&CbNUNK3XWg7Rb+ezZo3piU_NKa7YYuFG z>cG4?b+ev3c;6#1UFv2%d1&s+1GjIkoApfHtf%W{Jz6*GiMm;H>t=1Qn{_{IkwcGc z`ReIA09ZHc;kwzg>SoTeC^ijmv}@~TKV3KHzPi~j*3EgcZqB-iTHTzPb+aF*T-~hu zNY~6+*UCw%Zq|ajId|91c?Lyc^@8{VtCzyo73I*1xv>ogx;Y@}2~bCpWF2VWY!I>r zmBIXjUB@QRo=@^;)y+mrST(*_Xcui=C)fp=bS{YxSOd(Grr?3cZacVSZOU#!ox;2T z1D}ybp=_h#w>90X3s`1kzcAd`;U!|Em(DI_G3q%oT(jIx8dl6i;pg!seQd^ z?U8kxj;@$>blKJ;E0<|UXFq%Nfv1iwS;}HZm)w42(cB{|mupAoK6Z4)k|T?sIx_#( zBl90~Xh#;^e{}g$lsmHGu_I5dw~i|9=+X^G=PlKaESP!h{(H2eb7mcVXz`K9w`xc4 zTYvQ4^_oG**Xw5DbmZ=3EOczv`Xf)Q2I{ZZt3-(q-o#yYE)CE92<$xoFFZV{?`tTM}){vHO>P z{lYddW#-Xam!|3fRwBoVV3pv>u_f!H%vhlT0XU`|edyMsw{OsSWnYk17@S&D4MW1| zhuKo;tU#`&+I7`1&N)#9d^I~C^zu!0&Cc07=9Nr^vU6y;SdmuO1flzO+@eh_3%GXN zPg}gYc3p6)G{5E46sYFhR02aErYaKK`4Su9p2=GEj{B#&ch1&EAbi}lb1M|6L5c?^ z_*B2MWGZye)S8mXJMP!^&wS___ta{q*Ew0C4pe(|9S4KAG62m2BLRfNx~Ygv2I(~- z*_LWwWx!Q36{cZ@FdzceDC@)$&!Jr-nuAR(P!XD{!2rjHXlt34G3>1NIEhi4N*l_* zW1hD2K`b&rL8u~7jjtdtsYXL3G|8)xzbLTtLGTZSISsLL`@u%JQQM*R$=XMSIR-Ti z%hzPtMGZT&lZVN?4dy$U>`rWfYKA}M? zamBS}6Uti}t|OTXoNIS&BsHL9MO>q#8beKMcdY|yb5L}xZ0$BwzFzPX+ys|yi{T=e zwCiQivWc{i?PwZXF4(;ZYp-3a$xRLaknbDG6L#1}!4))Uy=btg4NN5k>+y@8S&v>> zM67J;1^^K!Sh;JnhHCg|Jt|MNC#V+@h=HD!A;5xEmL%L1_*ayfy`EiYPSWQ_y-#Xn!6(8si5L^V+qR^AWat9 ziamRnh{H zw&*H}2-^wdsp0ady^IY-IDWC&NBy zG>?W9YCUH{{6@DHb3#Q$h(tnqd58UMQwy*#6=!1N)Jcv}JwK5>lgTE;Q3{$DmlQ%| zaunwRAbfO@A1fA|6lJiv>a;^57H1xqGMPbKb)v(5v21^! zv=pNQI{${$qhZ`_hNoThrO>{acdbkxM0?_46PhZFXr9M z$W@4(=FA!75b~iHL6*D>!D%F2!9gHSU~w*C9Au#>xj>CXDC`x8kUWY~WQxN%y+<60 z3dW?O6YSN?Um;GV1cqoHMPwhuu_Ug0E+d&B#(J#gu=hy@#G|?>pePh&7hj3)N><|^Z{eh8Z%3Ps%Vb0GErPv@Eg zo1)nFh@QyFRFgP>QYnncejIBJhPa8;;^=$9b}}P|p;=lLlxkR>bx%3Y3Ux{5fY1+r zPqgNCJZZy#jJTO|Dqi3ryHF+$WQ&()-BO`2DWjhK2u;<;ixfU8s}S^4n<9g0hm3BrZ zc5&ES6=L`*i9}%@eCxv81%ibt#OW%An!N8o@;6JXjBT`hfy)zcwnjr)Cg2iU3Tf?l z)O;RO03E5=L=T=#yE#gxlH+nEjV$`O%Dq!H87hSG%%}|OIC?S6=BUL()EZ# zQe6v@`nIe~>0L=T+iWDPV=L`h4JakfHR*3)&t{)69h=^Gk|N9q(Re1$6b=ng`FMfi z1Ly*P`B7#Yqv$JF40(k+Z@5siox^^rp2o~&KSeH_T=sq>Pp>Rml8jbozV%Io{fR)3 zX@HYsU^OZiX=<@%k|Lu|T2VzL8`0g6cWm4-89LHaTG+r*h$|16^S(^fB{UNBJLV-x zJ7rzW!sm=~mtk)a((B@JPY|8l)80vORX&ji_66Xez$3LO29?=!ql*I3c_ZdK10;Ip zZH2lbHI!QnY^WzoRrLS`MIyRbpuB|r)=plB zjXY}Bu7aYE>+Fc1yW_gZMiLVKyH%=M>WJwX=_et^tEn?|lM)*1!hs^S9n}EUhqcGD z_-EhE^w2j$SI~W2k=XBl4NGdknHB6sU+8JftQ?P}N6xJ&5pG8CW zGRlcTBPcRY59};82Su$W&buJ!0%1`^Rid0cgntWiX*U2dW;)Cc#(2lPqf3Ed3bu~H z6SeLorS@^gdwrG@6w7h1rY_j6L3m{d4TjYV&P|cQOgJa8aL|oiau1G7a77H%pj;T> z(vCRHiVw60%r;w#F@79k<4P6X(pARxdFr{e#?|B21L=AqW=u@*avIg=P1@LYZJ@kw z2WcDCTr2Ehk>X91XlZ$(VvQ|4*OMVVIvU?l$QB$F8OrM!wil! z8;r`Ry{yIo)-YpaMmj^ZAsFHrTWG*?x@POnioTOQh#9ce7||DUG;n%UqUx~s9xQyT zV#NY;6|t+w%DD+DCu%e!2eDmDD$=l(1C_`zopNHr@<1d#)eT=^?nRTl>&nt$A3n;B zn;PI`AQU(KeJW{Vz>Nn7A-c&Ngak3krhv@oP zyH@Z?PqizRvrd0?b+to6pa~PPP-ue@Bq*R+6xEwtxv~?a>MuL#e?j`hQ*H96P^M3; z%o#U#b)Z#k)8NFnrr!0-H!nCI$yvFmN58f|-#GNabLZd0ykb-FJJ4>k{SAL>@pmeI z`7?g@9{z-NQ~yAN%PTLW?<($Qk|ljODB?n+7+zM~7veyp9v5q`PS!GF{{x0-)CXJYNjLK9 zLz~i90~>KxkTPKf24VVw05J_-o}vKg#0^&1_fm7_Mb^UD2N9WWbyRv|RTGT2ad-+O z9)m5h?9lRICz2KVZ64rAlyg}2`m-&}`wUqc-+trU?Hq}B;@4YLgC&#Cp_bF3=%-QG zM{@_WG+zk*FBu z{o@;Vh1>0YpmNDO53RrN#;1GVd(Mlmj~KtBqc-xj8-E=8rt|I0FKSPla`4D{*P-0J z?qB&+h3uc9)wyh$8SH9gy)0te2Pxm7ohV2{7%EOi749vpAX{QJd}GH z&prm68_&}5j!FCO!Cz*#d=p#Gft=0gsKXnGZlmLjaA4n%4l*Ef$2KFeFkXe#jGwCYH=E0SX;$jk$~kjU}-X z?CDS+kU`!-6z^t@?`CEMYf{X_QEn$LEa-M-dkqBVIn1lp)zQQ z2$*k!`2=_|htTCT4AdZaFn|Wc1C16uW&BeqbT|`14n_l*E+jG8 z~($h8l=7q5Jc&*i$}r683}zE5`3i1mrOGE0jNWApjfgl zgQjkqytqNk7!bjlvv4&sSBjeoKn|P4trxn9 zyJ%x!4K7cOco7krt|QX<1;N)Q2DldGR%I8pUMt@>E$3h8iry!{?JpCc`oX>RDOM;Zpvbqcg-+@Pp7O_l_qfH>yPb{LS zAPaivn0|6E-OR7jq^OkKBLP`%v#- zAr(<=sTd{LY7wO*-3K?265RIHz`jHLQmkgQRDzx>gm-1IND7~zElLsvJKA&Mq)mt! z*wLY5D0{Q`9UuMUECXGaQw|r#>zKZB1r4VhIg(hh+#AKHO+5Y(xje>i(nhgNz>X!` zEBFDWtt&KjlXjpOoBa&0%DCF&A2m9I+kEW6cs+x4rldrb1fB9@m#!Id>o%jn9Uh1) zn(+YYR@AB{0jUoaD2KaVvE!7^{|gqlZmfy;qc3p3a4(phmNjWbSwc&^1AXIwgN;g+-RT{zkK3HJ&F~2;qxN`2(&3C@`^!sb;o=vl*ufDkNPtR3+UAgJ#&Q~_I z-nV7*1s9fYd3nju9S^UYymM^xH9K!<=6+*zt4H5la`5s$XWFZGU-_3Idptjk*>iK< zoINLP*t_Q+zZ86O$$Qg3{r4M9_Ae^QJT$bb=xFc4i~qj*Z*zbA=(T-6?s)CvpK{u? zv@iM5*KE=HK(pmFLry>Zr|D;$_v{DfHrny|xodZJYc->5*9%Vh%NG}3y(;bEuCI(~ zJN?X?+D-4!Gc)q$_{`N?-^;%2nF~5zx&F+Y)0e-Nv-g3gI-PvWJzd&<@b;A#F8sFl zvJNlysaV^yZ}Bhx=-1|#Vf{}YyJ_IkimrnieR9{}yF3L$AA0BNp`#zUCjX?PuMB_f zsn-hbT@o4nuh2inX}z;D6l;Yi~<2G5rPM=gFg0>_2=RTS?5&wsEFJK{8(trTVN1)k-A zTZd-{Ax^IYj~}0J22IPF+iZ)l*)t5kP0)tbc+V8UKLh7?z*mO9XQO;elxqW8h9WEO zmnfSD`cDGxwRqM7ba2CCAn?rt%xQqX27fDo?=5`pg?A-@KMZ=dHpNvMczy-ye+GXa z1MC~%$2P#80=z3wCLi?AK>Mpv_6OASDQKUAdQJn6?nFDk!0!{F=@OL5!}FdfcM)K2 z!h8PoU;!kQ>-ed?HcI zeeDH;{y!YI)dY^ ziLn@@mSJ<&$n>U`_;;d+BXtq3V9lwe9*YG@lswo-55#TiKLRA(Tnqce2fQ-(nj(hV zXW{}1MQ`F_Dm|u|sQ&;|T%nN+)JToh268NFiS06`hvZ!h=F0`fg3utIdW2l|1nA({ zE@B?rkpN=mDYH0n`(R1}*^pA{0;(*g^{E!10o2VjnUn@8%-mWlf{aiedGN6v0Jvf! z0!fqNBLy{{8i}9Jje+t3fK4}0u*X=R+(EHQc*u4d2CQa?COg3>tomvI3bjjC$cmA7 zL1Y<4dGr&2z;k@Ec``GkIaSXr0Jvm&H*#O<11rvuh1F&zuq&*|sCZODL5ocj9kM;a zMyM7k3e@1_0TDYvCfDVrRclo=Q97ou?FuNlZZgxDRs2c1+P9=OVEQX&#bmA}nL~0U zK-*ICxGTeRFuvd>F}LBkGs7%tEdDeKc40y8)$!;|Ce5qXxyjt&>b?otxr*db(Ef3G z$z=xcAYKWa#+@4R`>X}1+y^2!=(tBn0xyFW?@nS2Ky@s{TukO0PM92y4VUer7W4yH zvjSVYI3EIfD(0C?Ya#21hb4q6G^y})^3QpwK`%2O<*G8LR0Fw)x4LLW)N^&cJ z^o_62tUl|jH47*@$D`nOA4yME^I(8wDKL&}tK{bj(co^f8t2ynp#SjzNP)AC=;=Tr za@Mn_tu4z%T|w}a8cU`PHc00@yvAI=71YXM7Utfvk>c4%3i>A?8LS#%CCyrYeD8*0 z=sg5f!xXAy_2q&V7aA3tNI4$;=`hF&>O*Iii~3RK0A*f%DC6ZMp4zcMl&KIIazgRq zb!bLDZ0g-=6z(|!4=H~fAnZn3FxDd{rIy$v!^m^lHUNBBJh*wHpuNWX1BhBq{c^@8 z;e#MWRJbfdvvYT1YU0sRg#v3dNB0Jwi5U~{eHh#yle=S0a1tNOhkNQTyj zgad@SUtUT^8%u8B$J$?~VPSy7o!Bn7@`0?i>dVIgmOxVK15*>@Nmz#Tt*=(|6s$xp zB&KPyv=>lxh(|$n$i%elM6(K$`o;GEP<3e-D&`6| z7C$|(4lGR!XpFYuXdT(WS;CF>8u$FMEBS^r8|6dd0Nj8W1KIG}mZPc!{a^)+9huUO zQb&RB0!0FmjzvMkj>F7_U;ecsX@+HOVSJO#)BEv{)YgfSjz;b3*2m*VS^%U8#tYf$ zv6#m+B8)!05n!3tHYYdt?m^+61%RiYRWK$aXnk{?%eI!_R@I&h@uoha8A;{BDO`<3 zIbw_)~HF*YqSt%N2k8nTT+;h0uQMQK%zvNc6Q z%4qJFqP^6-3jp5MS{Kb_mAZ5gKFLjizoTGbq2LtdRIUc%`$`%h#Lh{JEa3`*HnvpR z)**cfwtB|?Hb`T!1c4fSVb3<4UPCbV0KD(d^ySKd7p#uKzjEYJHrWstq$W|>en5+a@Z58#)Vr01<3*4nrj~v_ z0JSE06~OG*O)HLtv8as+&fT_qQKXAX^RE0lsiksZa?|eO#K8q{Y!2dA0N9PTrWy@$ zbBe8D8{*f_`9MR2A=}SvODrh)r;;MaDh2NAG{b&sdMco+(W8TH1t``zwiv}g`Ye#e ziLgHdFp+KD+!`yGROY)-@FL<@Y1z5OVYZjQMgig3k*t6rO4JjvY&{LzvYA%=W{bxv zc|A~AFftS;7;-R{qZ_>tN~z(g>wUIy02)fcqn?WuREngvOW8VFxaJ#(%c9f7b3oQP zHWRcOW7bK@*bWKV-eW71fsFvU+z=ysDC7S?;o-4`txPWxS?f782te_rC~>dO4XFs@ zSMDatW?zDB{Ry!M*=`E2u||~x(^?TXhq>q zqPE49OUAB9Bw2c7z2T!h#ZiqX&JoOF}Do;%D*J{*9%OkNY=ECbdHc2+UVwh=|=vA%4rCi`gL}@2vO_!;) zA=aXp&YcV+LW^${v;f8zgs|xa+u)d+g9g7C0M$XHyQ9!S@R6HGbQZ#OatA3sM5)l3 zB$>z@3(+@1gr$#@@(Tlsp@R(0KuC~>PtPRsxShB|NSNn?x0IgUT8vvpRbt2@9xG4nmU$NBbch9V?RXZRph(+bnbLT zk1n0zO)(PCl3Ri)lpVv-#bIA-A1Ly6&{qV#?1u&;k6C-E8{;z?GDJlxg+!4I#GX>P z0#Qe?yv}D8)14`UE2FMHg}R2-Bj%&2+}o2|(oc;2iKD!LV(1jOXW+l>%5%TLq zPk6lu2oUM!5uZipJD(HTeOU@IX)a1RlXoJ7fZYk7mxxF{f(b&UwZhy5|C0dbB8)kx zKiLm>kbYTiWo4c-?7VD(=y3Tj`jNvd-C>_b;Zpp}&y$QN8)PPVrPG+46LGqbKDJuK zCJJ39xoN-)Y4k=QUKt}0u`1&H_0bUh?kE!QaCK=b2NT*$p-{enN(faHOg38J6_K$Z zOU=!Mq#A+)SIi6@ll_E=61;GLGHG2YT=sJ@y--Lc5#SY-sQs*b)Pc^4zCn5fF%d)` zNL?lhpEE{zAVuFIyao~bYAP~9$c;(Ko|C#jyk4@mlr$>+rF%Uw>%_%H=Fslw3#DZ* zBbyYMoDQO{uap;kdWWx?kr+UC#RIFsQsWil68X8K5mQhl z$wt@x_FN_h;oKWUvz-V;g^n@IRNZHq6pOh^Xe{IjuYqPj2sWlK+~OhCHKLI9 z`HIS&c#YDU)QHeka;%6psp7g<i~Szib$5Zxw>PWvQwVYFM&YT-|Gh6K zKI&_vrH8&jo)@PJGnVMf%=UNK1_lh6D1i!(r2yNrgQhtxL2&I(^zl^^P{| z_(nt&EPg-~vvKI85#!7n2*FyU|ewQPV}R#b7ZKFla^2 z7(KfKW?X$vHgW|;`z9)}4tqDlh>z-Uos-HLUg~N&oM8$0VIgBc9Uq(mD`U?I!j(X& zehleWDl%8o*iq_1Ru0wSEQX0L!{EcfAujnrIceIe(qN-l<05N@k!=gM8FM3vil96l zI^(qFO~gcY6-mdTC%*=MMA#ZMWGO3NJE0bI#n|6ijt)o)a6 zs-bUT{p6|CP?9`z3mx{N|C&N}LPj>S>Zu9MVIT2dBbB5I4GVjRBPY80QiFlwBUZB= z4GBcAL2)P{5EG&(r1 z1DUQ$rj^SWi5(#^51_7SREyDvkWhKWRC`i`lrM}Q;qnhA8t<-Td{*o~FlSrsyomN9;M)WMcS;nLDZ&X@y@q zP%db(3}csw^{ni)=xoJ`5h{Sx&LJ&d#4#ZgoJj5=V{QHwNqzdo8x2WuHBFc!Jtx(YdO#?8w{5U5~8ae zY5G}n&}68DH2RQIvl)U!m^(!nuDHhr)2+l6V*VO8?#wV1L|b4^GFJ@3Ty!ncIer}o zgQKh*I~`oX%VK)h76&<|9rj_#Hr|lMM=p1xVOml`AQ_S>R1d|?d)Xx7p6|3o_;J4} zzNiN4litaZla3vZ5}4xtvOejNaA|h;^nQJtH|aek)Kl*|kE>6*Oo5Z$yorV%Id}_{ zJ=;f^=<=0r@eRh#N1n`;*e9K7AVm6F9UKJsLuMfHpr{H%OzRT<4V_V=5sg{=}%FB&AeIEbUX2P^GNxr?N5) z)mXaX6`5Ic5oPQTNw!uI)n&hPJz)=$vZrVblv12pKK|B7OD>e69`Nuts0XKRFr!mc z^V>8>-`5xu#9WfJf6P_EiXJm6-y21kvEQWyDmc@?RwpyhV==4m32a>TD$!q2T<2yz6vgu;x?Q86!2E9%Q>!G! zwg>`cvL$~*0ZwiNC+elxXY7jDrI6Zwj|$2lT{M?{5a*= z41OH4t-u7xaVWgwr0zHOZekAkakzpTs=UbAglBgS| z*;%rIdL}WwDabu8%c|idM+Y4~5Gr;83I$8z_F@~{t!Cu>oTvgh*POWMG^7rk6Veyx zx2dE7vTCNO9=TOTMX`EhrvWvms4ZCyNwCIXlF(w~zi)eF>G^*?eRBuoq2Z67-Rgf< zte$u4>0=k9w-|F@t8X7!KKqL{tA$m5niFfbWV(azki<>X}JikrgyT3m1-QR8ZEcj(nn$7-^>z8Ji+5d6g`L`as z^uD`qXtVRByhK+0b!^rG2yNp`6Bxm&UZ8OI| z(Wb?L$Bon)q!rJMtAMmYJ)e&bDG}Ykz`qi3ma@RmB_&Qb0#*NpHCje~vwNgKjT7N% zjQn~4NQVEnNMuMHvu%ZKZvtThd)J^Uws#qG&8*QfK9l<}7`;XzBvY@UvJ>p? z_{xezLPZTSW$KeAR%F~J zkq@*dIMl54C+l7(D!A^qU{JCOLbj?CXN|I%s9%E^3r>ir%6M=)&^Bm-iRXACv_-I0 zSV`FS6cC@Fs^+LQrgN#HM}umW;)U;B=-`lT4JtXojwKRCc&FB(`%auaOrXfTdATC% zgUtLC!s0`w^7;P6*<((jW3Y)K@ga+{bJ_lYMN)%|r})k-0&^%QTo|bq)WD`SdV#lK zcu!2`>qpMsVLl}0Ug6BZ70^FXVS{Yo)U7d$>JC_o4roXVtg8iO*em((3^aX@AB{{g zK#rE#CIE%qG1|EJl%Ay`3WI*5!ZR5z%YFnuAgo2dSpgaTqsj9bnmRmy-1UraP(fet zP36s3!iyPLMBKPjc(e$IrYv!NnDL!a^0*EWVNmc9Gf)^0_fFo-atRnrNc_Fit;m+Z58Qh8HWT>`e*c~P~ zLADG!PylR~rF?p_@^ohue*gc6w0GT&E7|h=c41(DGhmN_F+6~cfx8X&U_6?VRCO*e zQ2?bYSo%p{d9lF7-Pl*ImE_$~ZA{$M|cAH~1_xt|jmw7~6-~IQxm{7dE$@uGA-FC+v-WvVx zzdc^9Xj$&=k<_aNYT1y=;A1jzaZR^IHN@9?89Kq@yZ^m`u6BX1SN}d67pP#tyFC*a zH9qAynKO2S3$;6PF5beS)E7!R!zTh}doB~#_j@_SotnOOb{nKzX!N)M-~HEI7@xrXzf|I=0lP5scV(Z!1uO`=^gsU_ z;(q+w@BW46|IKHDN6B@8RnJi5s{Uqo89-Cg2b18XSCLi|jnOA)0xD20ng~woV z1(xT_H5khv;k$qK3JD$&z{K*ZU%q{6DAy~Tu!Ly09c=E(;a8&DsW|xyW#&C*!;)NT z{j^-&GKj>*-+f=Mo-?q)PX3#}3#>6(&;M{wjq6pS8mpxHDgXAn|C}o$+JnEVw{r59 zN5F_~I<^?>zsi@Jg_o^N_w4BJpMBS%v*CXzQM*rix$w#Ne}3`@rTk~`ElJX)+Z)KL8z`4-fSoBGqs2uIhn@H-yPjPM^3(^^P$x_&+P;1P>;O?okHxZt>2%2s2zBhR=o#j&nsCOe<7@@{d?B5^&UuZ7c@ zYxCA`d`)xC?rK`o3ju#7RSvhLy;*#ol-s>xkDDcfg<7mxDK6@9jjj&j_3WQk&BDE2 z5)G>6nm^fKJ<4_VTF9FIWpE&hcT%%B2Lrf1hH+SI$_0(u+U2bN-qhd6ykrWh?+#CO z4@vw;cSLw9#`aEr`2D7fg@LsClWn5}N@hyAJhdS5vhP$$YKoN|wy;oHvQ6DqIOyu6 zxTRZ#^@@mIeZT*SU|F)%ce;sBjstCX(s=cDC$~LLqw%s+d^M=AJAql!C8cifxj$cT zxa8x>$us6fo4@F}sBVwNTiveD7FxHTCb><6S#WzZ``jQ7pF z?(ft}K6r>$IwHp0+wKYO53t7yfxrs$`gJh(N0(eE-0zQwMt1h0dw%q{dq4g8-8`ndrRcL;A|g#&hzk6P5l@R8^jiK&`h#%z>BErd;|C(~$6(uskdDWH zdSJPSj_>S&?Ge@WA>(`U!1+G;@qz6w$lZ{2?S;YjA{AAuG5?&Ffu3I zk?#SHpNrZ0m{6FLk{&@WK#)6SohQVVubOahW>?N4`(#R#PN3EKQ_9 z5iJ_i&m{zyNI<{1I=v*e9Wvfz(p-<{e)c5!&5EI3-Aw1Pw|}#Q$V_S^D}mOlJNW=< z)s%!C<|y>U@-YzZl}9?=Rv^rK$v;p5qThF;ezoHz<>Psf#sfbqH%B? zTlRr93;H(2bAc)wtQ~i~f-r)e2_N>>#gm%W8-|@E2U@2RR7;BZ(k@A3pJrn(y1i!r zNZJ!(7yliVcUNGuwswDhprN3h4*bI!#P>b*_#sb6Shf{O@XdU{7uw(t>GmrCadsui(aG`wr%wV~C>arh>VB;G%T0 zXe>^6gidiyFS~!dT`o4=&kIx&JhjdbyYu)9(F%oz{_^A%Qr6jB`F>n}9T5<9jVKKo zj8Hd!%DiagCC6d0M#Z%Lv{eStlaLvK&)#@mEX_(+4CX_FOo}Zkx9S_pld=x%FnR|wWMU3`cZndhC%Jhux z`S5DR$^4xBFHcTFwb78#pK9u>#iuR2J7f6XbQIoYE9y>eMnFCp;vS0W@#>#MfKeAt zo)hK`z>73TRZ2s&CQL$#Fq1}-v`jKiJifw|Lb}-krpF?7Z2{BD`Ar(t!|sygz&6vo zU=XJnA-PV12uw?cGH{yF@|e@yS8)M-njn5JCRK z!-&cQ<(bD15Y;d!Tzy)s^J`?Gh!AqH8uetrQ%M)p?_bYN@$=QHb#1cfU+0@b z1uX1ZW}FbrtZ4EK>3NJr*$3ib4ykSGCh@z5hXeKP-b(z4*dQkLdc)1CCU&-QG3ik6v8Q->xwJdF_rAxZcaF`gyECf$>=w zMhPR%l$nHbhFjR`is1`z;1n{jVj&09Q-6|CY@-&B8`k;$Wwu^Q-)eC8)@6{GL;}Dt z72uF=*VeRIH!<*lJ5`POO-7>t1cGsBQtBB*eQoiTrU3Q!_7opBEIwPZe2m#aZEaFC z7-VD=%uI`Uhz}+^l*wTV25b;hvdGOY5PYr8LdC_2M-8ebFl!gn71^Bgwe0{gLSYTd);Y8dV zg@cW}av01#1TZ38`*N1blF3R+P9sDM0DL0=4v8rs_2d*i#{2a$jTEwyri2!t6GCk( zVTGDM&F))DG>D+BsKb2?`)Y@!9C80D3dB75o-C7&nXytN1BIK2I~<8bOe(n!$Br+M!$Ri0uuD5(d|vQCvD!gZLV;oHJ0C6jEH9#^F0c9tnblk}6dq)HR0H};ekof`S;(JdhU z8^%9c{xix=J)(6dgyV;7jrPDyCNNzD7v0>MXocyCnckkNvJqL=%P5-nEj2pd8CRp7 zoRbQdQS>!Il|y@DUvb3yYSStUXr_5iS8mrC6<`5G5-%^eNO+ElHIh-ElSO$Dcm4FC zw(AF~O`o#Fuoj$sxtXxW0b)*b^GjGIfDYQH-B3Og>hKpROXG$wSt3<_3(YXitF})x z!F!yn0$qYGAG8)v9%!?{$!+gw!#SOFw%6c{NhX1co9u4?l#_%8?C=KCWJgDQzy|Zy z-LpGlpBWcndZxl~2=!RXZ-hD)vr%&5kiEP`r;riAN_;Qx~Mq9z5jts7$t?Fe-U)uwx6`KM)1aWPn|{lvk%!8zeEF`L6mIo&o- z&V_qX9N?A+>Wh3K@(1nK;|D_I<8uKO!gy#=G>@}2Gc+r#VGhF)HUwU~z=jxVYyodR zo+YJ&J+W73EtU?J!vqX7B#FWbQVY-*-at7bh;U{N<$usLpZu{Cp*F8{dc2$$`G8mY zHee&jgP4^w7S^cEWHY3X(9;8}_5PYerkDJvHZ6v4S+qUPlNL+nf?wB*E$ZdW-B~@^ zsrB0xBb{QkWTwLV&N!1qh?~r`RP7$J!L75%zS_yy1&(2e?wB`^nnJ;Qq1&8H?PMdS zH`o$6^Ew&hVRt9dpfg2hyuC5!5fs;`%TVa^40EtZj0k1i8h)TbUI+7pw>94yBcb z9BQmvKz*;A>B-3U{CG^$!FG~5xBGH=_(`4OAZ?TS?-p}&*I3Nmiek$)5K)Yoy5h;D zpqw2nmU)vQIKw3@uXk=V;@%QB8+-x!txh(a#QW;bzT8tc{QM^KN%>GKJIOTU^7G>K z_9C^Kg-%bwa8K7@F7GK2FwtxPd+s({ly4@rIaXP^JH*(Qgix-}D()I}tM0`k2OI$aoFcbzu za_`2h^=AJR&U~v{G|V(^0_wLGdBvTgZ6kff3#cvxZxPn=*-Cufx3QDKYUl}p$?THr zR_1;_FEA~2(7%Gb_4#hrwgUU7$WJ_^^_7B$m-FodF>u@Bl(3hx+s3oA(nlzOp55tR z9SwLfaA&Ydb=QJFD{xn#-?bV=IVA=AFL*~Md-e=J@}o~@j-*hX%^)uI8*`X%N?+4X z6n)=uP9c$X3JmXdEv~=tC>rq9De5O%mp}ZFD7m1_XbaqK6|=1v;TCJc0Un%%fJ)9a zuAh~`6$F`?Oi~VP^~IoxOhxzvGWtB)~{jshq(aD@VGeM{HrM&xhjf&2l|0adOT}mRi}Gr~}CW}3f?5-09_808A!Nb1>t zSl%ez+1Xq8PTAmgIbZ46S`f2Wl&F8W@hl15yZ!_+^ zU`u1{-(TOPx-b#LT`AF*VTFY}`Ns5&mFjD9l+M;?#}bRXH_aW115;J&ZjO?lOPENF zVUv|_a&60dg&1(mUEss@3#mI`Szlrl#&$YP^aanhkw47b>w28hEUKTW=F)j|6r7v8 zoac$X-ctt%JXs2d^Bl2=PY4v+L(S`WRhmz2X`2~UGRqimo(^ALZtlX=1I@}|Ybg7d z%UR$3?cX{8fB)qV-+%x8pT9r*_m4+u-=966q@Dfv18L<7S#>SYs0;hmxE!PyVjY(| zX0=|uMOM?)R@200bSb75yqT0TcDE_uIzn~c6ormmHJ|I^Q`98(rZ8_3Zp27WT5eL> z9@sj&QC7?EzK=Aim$E>u%%!sWvAZR1mDOUOToP+i1W$gitd`o{*wd!w^>F=!Nl;|L zVAY0RY-xP9Wxs7@M!S^P%bM2wu42=E!cj#bO=h9ofd;o^Az#<#FPh&d52m%?I;V-v zHM82(?giwYSuHlYXjU`)rdjiCSIz2oxocLFTu{}$f|^!uo7J>(==-Li9O#?RkvX@? z;l^2QiYsU31MrkzC;m~A?cC$V{Fl~?3#5@`!FUr>_iKw~yhHOT8v&A}*`$>D#vWSl z^z*GQgh=OnmYypm1(_WN3Nh+8>1mt@8Y$-LQ9@YXp^s3RqZ=OW>$?JaY}zZDKXQ|b zkRvk3oR1jJt0|8{Ke0B*VLEuH3Ws*Q=L5_ zRz!v46*_(|@CJ^$?+`{@qrczRxIS;z$~lg|nVzz!9yOjVF7x4)NB z`AT@d?QdV0ZNq1QEGkDCWhd-pP?3ftB_Pu5XM~5)HEFwE#9M4)yKOgd=O*;V`jZI` zWqddQaP|GwYKFX10TrDAHY-m_=!~>^M6Kx3h9@3KWCySpA#Wh^AQEB|{WG_;%qo%r zN?4vQ_*MOkYPRc)-R{cU$8)`zjWpP!u%2Uigu~Phb^E%FD}6T{0#496BTH1Hy7-v~ zD-%kIngzFadET^oxVD6BG(LUfh1QvGcw}hZOwpu&Bp>Q@+r9h(%#$O55bL8J90@?_ zF#H6%Qdf)XxBzRrw0hxj*uaeTz~C^?fRCX-<}go;r66Z6WmWS01yHSOFzbc>b-C@6 zj1RMZ%ScHzTix8eB8klgyDpUI2E5$bLgH*&&&Sj2efQ!DHh2E9C$qG(^_`SK6Q+63 z^xrO_PcvQBWkoOqvi2+hW10$;Qpx^Rha7H{-7F<1O$yXNesxscxy+hJlVs}@xdTOW z&;dgnvf>E%zX*PPH04lqHi8Jt)0N_xuu)q~!%UFRUH$Rb#$TxGPoSNS4SJa|I3C`1 zrdbQVR-Ux?)6L1r5!n96uKfH%hhhXvInFQcv&?7Q0d^nm4l;9vqk^6PQVq5_8{>9F z{(M@0{s8_ollD71uX$guE4L7XB|&fh(+?*ndIYu;tDG(qi`ECVJJp3Th?F5_71L<6 zxOm+c=_`Abuhvil@zax&R6Wt%;}h&OGFa{Xba{f&$Ia9@<<90Pj4A`|nuI@{aK#Rt zagWNtQM+M=n4O)<)Fa{=F3W}TCy*576RXE3`ZaLy(*BL4&YAUsy$cRT7!?0>J%7Hs z1OaBcZh^PyP)K5u*x|3c@kf3>JxQfWx0gI7jO33eCyzV%S5yJnn45E057Tt-;rjub z18${YM-_t`KfSA2-}#po6&_@fKYOR7TQ3+;Xo5rZAeCpe|oIyHOI9W70gC z1Rc;JoMgd^^t?|FPYvZZXEcr!K4|=lRT)LTOk#;Jv;l#W*ns>wt3OZc&ogbY{7i}h zp({c`H$)fZbR|lFlZ5q!ht<`%VPYYUeuu}+bq1beU!1vL8=gDQ*=w~}%0`>c_?#o; z?6917opapX9@gjE=}PUD?H~7qYnYe-@ffVxEtu+Z_Rn|LN-rS5%-=5-*ZN5wcfT5l zIkyDwk$hcG+6WRX~R_^DLPmuq6?>w*BO9bf|s7yhYtkcY7{y2Gty_4#eN+zs;3 zR1EyE+q#wKty717jAVZVPRtjrVDP(S811OQeaj4SyjWiaUMS!|2ia&C=js^X{oNoZT+0hOe5@l8h%_A}$`)~#SH}$FZ_LuW9H%9xXD|Um(O>Wnni+n8 za$;p%{!$uPXR=x~7cAtIv1~=nV|Gzf?J&Q#9WA<&nd+zkr8bkEK_ffkXQWIthHB63 zFOz-Hp*lbi;n?@QQmpRtB^w1I6!=K-i2?FEp!|z;B13_&R04Uo|3^V5+hO`BCqp86Cnr-})aZXnU69t{j!nBH4&eGK}<{8U$2zu+7Mf!EQ zvi~9x$&Xhrw$^6OZA&g7!bs2aGHjp_%XMtx>~ZXBky!eU^*c;E98#qD*oc-s4-cxj zP1_o(2D|WjOBA_5N^;-JopHGS1QOLHb>o-8HnDHU7X^~@xoJh?SBevjvr?>gYYVgO zt9ZQ=5XPqZPhTyhU;_@{+;LjU_I9d(4bG((seK1fL986W0H;_@5F2Q`3?(UfnT0DFx@Irmqs2E`)r56mBCDfVvaxC2~`=XE# z+mZSs3B6ze#MVaq9dZPJsB77e_w8qBWBnW#^oxm1K>d8(HR1eMF*O2=~yJtj{nG`}s~ zLx_2L{8sv|2x3-nXJ)CnYl!OpzK~<09bRBdl(E|PwoKJ*y0yaXcWF7}y_KS(`B8m~$pnWA%R1AZ+ z@>)2n@Ff{?>h$CUX=B*kPb4DqHk~R3K5&%sCkAVyrK{+@SGV!I`I+;8Xv<%Wh=(@( zZm*VB7f);#BePP77 zv4JN3tC#$(^zbvwBxR41RH~7CRigP+ZiH5|zVo-z<$ViVEqE4pqMD;5l{y;7SF?iC zRFxeCTChu1W#%pJfQ9Xf!$-mby5BZ4UYxQi(dPVo)DvwThDTl-EsYc8u67U+!Gsw@&dma zzbEkG3ph--C6!QSWtuF1{iUw9~HLbs;)U|S;PKIX~Bc@C!}%9pQc*h z79Gw<=0BAh1}RM|e)@)3A28l=QB5YJ+KDrb2a$5eUqf$?UP1}I)SZ)1YlS4c0T*D{ ztoK3xlK9sM+EGcD0eC4Y z7fk4lyVof5j~Is38I>TqUs^X+MO`%;>YnSA;{>5d$#LlyXw4<_nkG{0D}iZ0?>?EvBq?8Q3-8X zc;%pS-I;|TJlYzo0c#bF4c4-^OhotHnGB;Wk1dK-0oyc7%IshgltJ_eWt2&9wNB%y z->AU`-+#7q+0eowO4yGJj;GwdOKSO0PF_{;!;gThSgKB39UD&q{CRJ?GTl^sxDIL* zqjCt14+f9FO?IqAYw!%KJ!KV* z@ybHXAWJk!*a0H7@06TvTeBMIB{wf&-}bVOk8$wH*=%z;5BXX9R5dib+cP+-O-3^$ z)#5bn&P2ba%y!hOgY9QqGBzMBCRp2i-9!lUx6)gii1ONRmLjp~01xm9;bHKI+RU7xzunlS+S1iIj%FV`@Q=d_M9P~X#OGbZy-@K6s(H+ie z%-Er4l4QhgSc*f{uFhaeYK5~k${$QjMMQ@NLscRNs2!e?oY0jKE6EiDdB;bPlD}h@ zf)cz%-`vTq~orlxUQr zB$YZMmZSlr{je1I!l|_Rz$r!BDgw_1-iRS-`CF2mzJMrVYR*3e6a2E`3}+W?TmzD1 zEtIFvr6iH zG?Qbnfq5nsDYi-NilpYHoaWCNtA%o35J&?9iTQ}7;z?FOz7@3dHLTySvr6ik6i2fwx7R+5@?S zBiYGv#loCyzo+1S&~ux&^8QY(u2OV zYv7_qjrNSaE>%N z(1`NUB~XP-YIK6!z+=5}%R{Y+10CJDc2P6Q7^YgK{H=7Y6c`Lt8YIaQxn6p4%X=Ql z1P&5ifoI(tGQrvsGjpkp@3Qz-Dq0Z~og|pqm`pB;Twtx(xFb_=65#kc9O`%G_%%)M zt^!dNfvjSiF%EM!E+8!)TB{Z!$3+Ih*3W*SFlIA0IYh1#Ir$2sLQ!*iDg|N4weinq zIBH8(HOC$8$g^mr>#3j`>W1#1WBVA`|6A7j=JMk=&*x@y`ptFLx8Dvsn{|%ulhi{)vtht~ zp~>;>R0!I5yKpYXH_I9b_Dd;poQ#89V(t3?U%_)ID!R>3?na_pLWE&3h%@MgUoQ=# zZSC~U$~83gteH+nObHR#K`z!qh8u}yeTYSg=MATZ0o5@MJ#eE@)m|rxd4~hP&}h(* zXfbAK*sv_tD33azd&5yK2Q*~iD@BWZ=8~({c34Awioq*-@4JJZyMNagF^jL424C&2 z5YwNi5~c$&25C%yhrL^oA|~xYuHR@1rft+>UtPLr-$!+e{S-Io zX@m0ETb|z)VY`C;aC}F%gskWtZX@UC)q=qJ-1^`&G%X9_Z7OVAqcgFt5uVGrabRuw ztC`V(WbNGNCX=7^5oN4nq)l-@$+74FAZ2D&vH(&ZF;P7HYo?BC!!^FQAd$x_cwHn4J1F&(W@Z>q(_oQCRO>g(D1wnu z1V;mtJoP(CjC1Xnrfq3}Su+E*4fD=ATr}0)G)-?*z=h7a~X61=?Q={}(iQy$?d;3I2GTF(2MWL@f|u~0u^Yx#j*RNtoGGTq;|7=C zemv;W<`|e1(o6(Ixg}Ymq-~?{D1TpY>8^ZgT5)#W^QC+!$3y%U1%LR)*t0!N;%i(h z8t;@)u^nETnyX9E!UEsfjz}w5tAk1j#(HULakod;JcT`C+k3Q9Rc%Q;6$OZ1Ui-$B zpN|a!v%Ao?oIG2cXbVmb*C%E-8y0$vE>%UIEjFLIskS{+3wH7vTXbO0(nZ#8LKkgs zp(#)U9%+FmO=Vo9?d@dlR~pF);|>y&-cx7E%Z29BmydX49;Tyuf^ap-taw2>e>^zX=h2qOzZ^2I`QX{wm0|w8m4%4p?mI8uHRm;v>?2&d1L zOO`BuYx&A^Ns$weCrQO!Xb9(`b;+{!iaM~YXG$R$E!6Pfkt8+8cI%F*@*FP~bKK~2 zSaZ*uv;{Lyt!}(WWWW9G0{a=S3fb>hC;{=&B!;Ga29?auV3MPdE0d*-wX&_3dHa}< zw;S&V*@wMssmYWDs4(K)y1<>hSg{`XIu+_`Zwpxk5ra{tNV9gVlulZmts2Ct#3UiC zpRT93Mw*{t6Si*0Vs;!$HF{50Zi9-&Ht1)w^!jX;UZ1&1`n_`-l$qP$1-Y)1?}jQN zpK*#wabH5)P?pFR6umpn`0^xEjfdx1@m)Jww(yAOpoTr{$kMxjjdrIZD-%})@;hqx1?eLcaw=X~}N&E#XJl)TRQEfm|2;6L5*W}Yn_oai1@KS1zW{D(4_-qxh#$u{mB-id zo66%7@=fJ&(7LDm&YiWz!|U&N*Jb5@cU|0Res^6q^mo_AfAOBW1#aUUKm=@+Sm6P) zG5}aBac(w!_%3@?*+0UudhlVqx}}sOCLA|Rv9B#-vGhUTUa=&JXvsgo2%NO^^68va z1HHP^a9P1Yy3&B^Ng9wlNn5avd@I~$m}uQp(z>@p#L50KF*@W3D^w+3ga zt?78BY)wBe9Dq}x)WMYPa6X{@IRnz@dw9P zylrJ{<%|;y07`mfg)@x3x=*TwuPBlI4o}TX!+sZm&%SK)shz3Wpx#Jx7%eUNh_-d2 zVX>b(2jRoMfPR{RN330CBEKi7n51zIPH{is(+@!YFvkv{Qd$?wv4l7H2rMMq<18Qn z(d*<7OBxh$gT0sX-}#)Ejg2W!FSRKrG&F#KamaGGN|j7rT2Y!@65LL(Jd3gR=AE^z z-3Wkkyz=4XL`}HG`LBDsy16C7qes)~%jaM|Inz=}kepM}@6vWA(#_%8QB)>LXBLBb zb|_B!S&IKsnqaPMfaMKS7(;VA zE+1**dT0e5yO-6W!3I#yHj075Gxp~Te1nL@u#n0_VSovH<~+5z7QS2Xp!@=SXi+US z{SrbUmgA5x9Maeg(m@-l7qDMH40C0U;i>$9rqp7FTCGR5V92t3LD*w7$~zl;&6%%X z6X!j3)DcWfq4OB^&x^D5ouZ}tin1|;TWnJ(qw5l0;5VK@+($x1>xyTL z9Q0Vs&9WydvK>E@TCMxQ8osDp9;h{9c}hKf|7Z{pw%(%R@eOwaa80}bF3NjeHCdpv zB^h;+RzmSm6}3r~j|iM5Un*i|>J!a}#d^wYvCpPQQ>MRCWOD-_ez}u+3KfDqw`jjb z1pM^)JwI+3OKJiQsau_YUs0(hy#-I%7OL$P1h<%wToZ|yjH8d0l z@eXClpq7H_?_Xj<&jBA1R_+py!AO3#U?}qgVh8xx@aNfFULErO;~LG?3T(1o+|2ML zJU+@I;NW)))IU5?O{%+mYV7%&UXw&8t95o|;lw2eO(WMxZ>O)2e^3zszSAN2Rz!7u*%AGyJVkyal?4Bw>|d5*rX zycro1Ha2r9WeDGWX|ehg1Cg*`CKhZduTA5Ck83IU2Q3m~1bWJK^mv|9(_tykfhA`l z%7=Re5b#GQI#R3t*Zq8>qDXwv=v%arqj@#~GL0`!%8y5p2X|hY4b6y)`z|huv^Zkm&?)tt5>$5og9+GRg=9JwaBmMmxLV_xrr)pCUR8HFQ-581>%wlmpMd&s}w70 zfc&j1KLeAjSad3%M%gfEx0ci9cW>jpu)|UxT{TjzEtDOB>kD?fAqJr3H{`2@jWidI zZK>N7-^@1Ush#j#?y9gKI}}Yz6gz{)I?b*o#mq~q!LFt=e`~{;S(^=Kkh1XOX2JKS8hJ|xP42kiCaX5+ zixD8=&!;TeN(9vfW!ciWM8Vo}WRi1-xf6wM~E`nJg!DM3BhA79W z%~do#xn%DDgEXP6hydt9P@p8@u4{|pO9P17lk}zquwFa?#xIp`-iVgL%jskFKq`EF z;8L+1wH&9(9@Ra%#1iYAkbDc8%TU61Zmw$*wKg&A;!;bPI+2lS`m`_yb$e-LG{uVq zh9kzX^)_c)g=r6^hO(SEuL>P@?l)0nYbS!PX(UeP;6Xl&fX7;u| zE$^OQOFnaoDVJ`C%s@>ZtXNGx=nwP4h&etzx?R0>ENq_LR)QjOdc z^uqIW?;kc%V~d}v;SK#ZyZmTzsPv79y!k1s#a3qR;hZVPI`|^)os?s9|UB4zKa3-BWwoQ-Echsbo_Y)Xr2# z$xj>p9frFpptqbknKq`Pd^G)37Q!TCYwwSBYkeaMkF9U}pnd4q{Oy1lGGscV+cPDq z3H_I&ifY=6LQdwmylkOXO);Dwp#l5_e<~A7y{O1wbLkR2Y*Y;)<2B)fRYrGSO>610 zj8$WL*Y@Kj{&P+2YOReIGu585hX0crRHnLessiP+E=u9opTRF>`Z69{?S2I&ME{`e5vpS z>zmqtG*$jxEm29l3sr9}#lpAY7XS%|uEv4| zMJp~*Xh6zuH{u1VaTyr3N+Vrsg%m-3JWIn0PteaqU$(-ot_iW-QamI?n{uWjQ9)JP z9Nl|J=ds$QDWFr+cRGbpW0YqHM};KZ+s%aqVcv8PilrFMi77QHrbEzx9n`~e7K>ZH za4A{~6zyqe^=(>Y>y=cHTB|C5;#cE>#55Duo=;O9JH61Wfbie^8~BLD@DB$Lc!W(FP0Wu%^)opnl|kTLm0OQ z%m}V!^N83P_DgA%UGtOCemj=2MK`T@jUS064bvARs%DC(ETNf|LTMgmr}%n*tyfiI zb7c_OzhEUJ^T=%^mgI88dPV4mzTf}E`8A5L4k2Zd0T8@hEIuNW{YQIXLUSr4(aw7P zQr_DI5uq&B644lAHMXVIkl?m-E`GV`$dL#76Dc4-$#R<>B9>`hs8i*fB*_os`G?iK z%hYJ(&L%H3O~b&Hq~)0SFfs7*GYek(Qr02tyQcC>`&I47g7aw)M@eDBexrp2?%V-#&&T3bQueVWWx2ugh z!(AoLApLd?t8XBXlnA*CsKqz%_JR+Bd&I&?H_62}+%Wg^y51?)@^mI-Sq_ zH{36jP4{}Uh_i{t({N7vKx)N>h1r@d>P)ssy?qu~&J^D=G>tN}wH^m4C~TR8$ZDhT zFX={ZLT4X!jQKCK5;kHOAGlxbEIhyJ?)#_^b?o zi)%%?h7EeoZVZ4Y#E?@wrd4_tW|GFa8jVBkJ#lt%xY~yEM@bh#{4OKH!eZ%wnLXQJ zjrYP^b5w`Wg~2sg!RAxB++S&Pn@{D+wLnzk*Y(1qQwaVfV+ITm3bKl7Ba4Zirq-atscuiRzE}(E9(_#< z&ve{FfoKj+m zyF>Abq17zy@WM4Einw?WL9r5cUoViLCA_~r8+@X-*P`T-IkmE+_^G)8-MZ)_?-R>v zzm*@NPG!8=-Wq{^cP@(o<6NuhwMeSso;2B#2IvlDU>-5ortKTqOscr*2Z$v#2Ppy7 z54K4rh|R;O;WV*YII?(f0VDG>iiF%7C-@4W!LXsSJ&4)AxI`(|8bt+be0a{LWCE#~ z)a1ggWcndT;Bt0jo}PjExGD-2$H3Ke$T?qKTW4DoHF44M(LvST>>dB~NMNWP)JW!=mc!pb515S+(!d@6a+FZz~xW=1UAwxp%HAg}C;BQuyL* zSr^rZ6-=~TM|cz$4v=dybITg3I&#fdO2Aisr374NuC|)gi<7p@wy>7MBu6Ps2$WDu zm|SWvG}bgm&wlt;STpAK6v{Fw#sRayhgPX_;J@)&@Y#$2;rZiugg1$gNB`p(%FdC&w zqL>hGtl*vINVDefRadhkdE3Hv#{@Fhz8Toy+ZmLDKI3~CjcYzH0Ez>`97we|kIek?yfk^6+S%e13Xl{R z*G=KWbWzTcZ|h5R7FcKeErnj58){&hs_v3u&Qgt6tL$1X5cxRA-&wV~(8iI~6@BZn z{Z?nq_x|Mtk8f{2T#XA3GY4zaWr^Kgn)f9|h z<%kCfLlSOxabxv{Ie9>=1mxT~)jSl=y~fJ8clQ96$4McGWCh3WgBk)$$cLf*Ne1A% zJp=NxJ>#hkd9YT7S^13K3&ssL6#mOzG8wEH%RNqpYDEhLw-K*1qTz;mE(#b?s+mr( zQgSV|```q}tqS30yA0cFFH-UaANZ{hbn(b0?s{F?WRT7vZpkn{a-8mrq&Up2IckhC zm?qEM`D0DF6`?S}ja*`-q?UL+ySbrSFZQPKw=F|#rl(B@<2|Sx{K|vMK^GrX4utxk za_FERR1RAEpmHGU$x>+@ctz!+Vw>hnA9DSqHE;^8WHn@Sy zP>+Md`XeVV9mw@*>TOOA8V-M$&Aog0)O}FP@RT9?tfHa48|9~Te7Cdw8-JGzOM_Y^wM5BR z<<2+)%QHYLwv)o(*svTdCqvNSIGKZfVl>L)FpkEkRIx$ZlAi=QN2LkVz1KC@bu)}?XF9|+eSAhV{I!>kisig>&esXw@|2O%-lU(0JOGG$Q6NUyMxFr4}VKS)fWelRG-f{(;6LA2O?Mz}U1++b8N#aU1u52h)nQ8vAn?Uq}2I3j73#OI{wFW_! zZTwE9(c7UcGed%<)^E73WAtoh;u|eqY|{PnRiQ??qfa4*ug%QL0jKRmEDanzNrQWs zq=CJr^R^Z^fttSkK9{hduUK4Ln1r~&hgQ;j7FBw(DZP~~Tcbxn>^#;KtIMo|3$o9^ z@cjrx+|1>XG|}vuob6j}8(H_Jz{i>pr)2|u+Bu15cK}m}7ZL(&STZ{1>1Yp`)?{?- zY?+{C+ox^0##L{bt}^BDG@P}ia)?VR_WhWnWkFWR@=4TLSr!E3p2?}mQ;67fj+O&3 z?Z`nzvLgpz+mZ99xM#w6{1~RB$Emac1wM!P7&+xyf$Dub`jn+;W-M)}>uB=e++!fX zV5vvp7E?T7mYFZU9G=S}`SVH*g(orIU<;xqbbGZMV{zEYQ3_izN?{F0DG-uTiiZRE zb+fr~VLfk$i~LSgFGywR%gu@?84WyQKNEXzq-Wr<$&^E1ZJr!14A}b{P7-Z3^31CB z=gYOY@fwa*${nY-mYrPCdc9g}_3~i4=QKldCTWuGp4vYzPH!(X19w!m;f&IbS51Ik z&#NKw z1hKiqW z;nVskw0cGv2+gl2pRZ12(EKbHY;&|>re#8TM>HQz$nShtKv9F$M-SAMRd(pTzkabUMzJ#3H>)^A`^D`vJDz4qRTRpyEEMg3&ezvQFh;fYQ0G)A+olp1xeO z7U%_vbucO=+G7q<0bAg^ak-FlwV&N-NqD2}Z6N_&-p+Lj%_biJPDBwoq@v@nL6`Op z=2+X^z$wv*&{CtJMg572Sesm1xwi9Ax!p1$zdkiCShjIA7;mQJmP0+R@9045Ss$z| zWe9vd1lTsGJ|0j~OLzVKOJB={1T!3b?ndlexIAw!liK(D3cd1Jur7fs%xiRjWHks9 zTjt@&!P5V!|>%k_o1 zE3j>KbD~6$j2LFl)Yddguw@Brj?lNHJIF@{fE;6^!wk1H7?!-h@y!)q;yp#gm@-pP z(z(&OD?ETWqAfUN$e4QyXOVjwuj`z}$1Q5+dD;1%GDkOxt*3nnOxnCjQXty$%a@KF z)VC#ZR)FyHEZxvI0_ptK3L}C#NCFDKm=WrD_?!Ke`)YHg*7swoYipiUGZ#K)_$I=> zsd+h!DSr5~#r`M|zV+U|ZBT_pGh+<${aJ$qnz-MYl|7R{NrNgOknE@vx#{%w{@NaW z2ylyb+9X@R^W|B9VOwHo)Yhbl)$bwnT_ax&k(SxB9l^Df7b;+;`rro({>;e#N|-+D z*5gS)HSOfw`*o#_wrz(KI7fuQ4EGzg@8wup}cB3zro#2)+{a3 zX&?oMuda1zFca*ep2P>}k*?ny^wX4d>yIMXD-`>^l&k6jQ^$mpp!s$RLJ^Xs^1Vdi zbJG{#HO&gA`$I`VOQI;NH`3XbxOz&XfoFFcBqsAqA%;&%y~>o6j^g~mfGfI>WO3cD zVIGB4)X-BN>5C$vtXJtgJksi9yvO49?_zKH1T^hvl?2T%&ajTO85!E|sK4Nzv-*+nNb0@QL#;dj$W z+DzNYigDf1t~Jvw;)WB=Yaijw9i}Vit0fDcILTtZF`$x zY1@%`-$*9&44nA5iO#Zj;Wy8>=@ zJJ(#H(z(*oUGoOcmH$Q=K`&dfl$#dVkl#s_JdFduod=R%xw}G}>c5|Vz&jHyY7RC! zC{5xXsf$L=k?JtqZWf2v3)3PUp119lF$F%PSIGb-4r6z)n`zoTcBuK%p0txSNHl{6 zuIRAvBEyE4pKmaVt|nX9H% z*qCv(95G9~X>ttjsRnHO$JvF4h|@O<=TDHV@vXx(VHM9W_7*?I+re)&epFSEcgxDH z6;V$u?fvxO3pDt{WWzzh|2_+`Y577O9g(v*x^a{t(@*wsTa`>rDo}hR4dE$q-MAyyf_FBBa?L8UgPL$mj-F4qe@ss&SaMdw{9| zhuUmfT(WtfY;WC5hjJ-*#Q9#%#}&aXcHHFt=+}N<}j`_-!Z-XJVS| zD^n_!RYZdN>dZ?mP|~+{WT)#}E5#(RPykUoHn|Kc3ctayGvcehvIeChlAs^<$Z}-f?EdqwNew$(47g#zkcV8uY2*8Y(KAEpg-tE>+g*U5L zxENS0xUVdMSG^DK2dxqL(4OoVOO(>}!r4W4!~!+AKr4 z*}cC~xiV6t433nkHk$(NQ6G+oD@j0jQ}mZhUS~&hxB7T{!?K<)zj*UvDgN+-|9<|n z?$z6H#ND~jP`_hSSR|8%tsFW$V@T`+Vp68z)krB?zATbbMSLq35kiHRmp`CLQizIH z1m#KinajQ{W>@U2Wxbny_8-P(kNUQ>VegidjSEDr6`h^fg@6N3#{GV!H%P{7(X6W4 z@bk(m2E91Y;}we57I(oLf31jGLH%z>2Pg7c+ccrub5tidGcO;s!m4b|uyNYKtjIYZ zDQUV?!}ZfovVWUaq9SAj9!VWX9&*VVPP`DyXieq92(B@BaPaE09}rk@MM zSQ|dUG>5AjsTk&L&+Ic-!rv%y%1})kQs|_G+2=*d^&Hi`n_(kuF!lmj?Q%4UEJOX0 z0BEbBrLrINIKbojcyn9c^wnp<4eGa|aR&+iF0x)(rQv3dS}mm}&6k`qW^2eSb_B6W zRI6YFe%?m?4+e$3V8g!RVii2Oub-D`m#dsa7k%x`frD!=UGfN#etS9{p8`+_eoVeJ zn}^qPU{oB%Dsi(Hr6{rpnxA+qKwgQ;IhLKqH;6AVLd1}t{RP?q)8os;4jN{&kY!K398#tY|ydam{f*_oCA#|O7!a6 zT$c%(^y0G}3HQb|ryAy$<(;K0YMphfH#h?{SW&K1F#4!WSc3TV2A?JD&}shQ`~V7FppV%uqm1 zv}v0yuG1}n&A#T^E9ni8dbC;GXx)w#Pp(be=a5!(XUY>O$pUp9HJS|EG0d4XEXM_L zG)3w_UP2UTH)x^n+B0d>@a@G_HJhTCV-;h*G%D8;iI=FxA9(?=v1#QNxfuW{8N8P75|Z0wh_#%WsE0P>Rytg zzhROFYFSP1WN@#pt#UMbE#C}otdf$H~iNd3oD}LOU>kzx8~W15`-0z z5T?NK_>v&*qWLO8Ti}p_a%x61cu#!UuzO)u?9XO53$9UEfpF}S++d!fL}NYWeaH>A zu7AK)y%;EsuR>rb92X5onr%U@k5?eV9w8rDF8h?N&9A30?hOx}yB*Y26w2e;60L2| z^IIz0^Zc%;WIUMS+DVguNjiAy1FpiaXGEj8G|Qi)0aK;UF09bL(x3!Ql+o|~oRXnQ}gE{ax$abGLLn3bpCDzt&yBc_FJ;6!~ z`Ydbqgv+q;eY|RxmfPuSBkXYDKxD*Fr*cd3Ug%=tW`kCpuGpR|s}wqu+zyyTsuE>i zHp!t}oT=Bhjo~$0tnDL3SsA@Fp$UN9%wD5La1^62W2d4`J`2)R65a!<|C@F2N9L5^s;%%b9~9``h5huR_P{4*LFfF$SUsG$h#B){u520jT(Q)ahCf zqjUVoq=kv(pRP{u14g-YdB+kpU-pPV!8V3Q4!Lw>Hb`5`^rlure$d(!R+9y8Q+x;7 z6u+I@ru^Zd%NUFF4khC9YVj!S=J0usijiN!%%NB;t4!sbo)=6$TxS^&WjTzCqZzih`8-GTWNtBoEKFRDb@Y2 z-BHeXc=}ZL4lN|BI7zqEh z7tavK$cIl0yC8!tb2c9I_Fqba&30xi%`e|#`d(!uWqNUN%G7L5K91!{ROMdN$Sl9WI#_&t~3oVxNGY9-;m*;%VcK!6=@d>PIAaCdZMB$O>Um6n=xjsRF<>uV7)30Lc6Y6*DtM&-tt6C1&?Hz%_r2NY<-Gx6+b+9<`Ly5f&4!OAP-6-8u_+0 z2}Dx?@yCa5kPkCC$Afg#`kmXhv$es%i+V^D-wz9@Rr<_K;2ec)s%((cF#G#($$Q_Y zIsz>XE{fo#fn24^Af`#0M=?0CcrDJE%bm`J-zqdYA_tA?7P^{(W%z2SQ-<)>GQcbo zrPW;R0&j*(88J%aRJ!Dnh)liA02$jN^=X8UIi`czmXPxjbWPFA#s}Ae3hHn+XQ2I}Pi01+9W!q=q*tkE@eICBsycAF;?z$(??nCspn|soA}H#Br%!$-+KZl|iHjCV2S09G!i3sScDv5P3P9RMDLgnjNn&G1rF2LadO53r zBfj2~BsO(&xlXIeu<&_VV?2c#Ivut3=isc|d>T?(6y`XwWfgLY8cD#tJM+myH^hm^ z=z8t%+?gG14YsJ24mHKc4#_*OQK^iMYO@I6beqcRI}XW3yubeRQk69!mMr2kG*@zz z#g6XC0W93!uVR4%QdK|-O~P|BD!D1C2oO2B&4MsGNu#NeU#9^yG(}4-UeztI`bw&& zDvCTabZPVPi(xD3wz%vwb{{yyOJw77rGY651r8+g&97NF-2kn+3e1I0cli!r9yJ&1@|Lm zc`V#lEYoYQdjVo@dE_c6#zgdP+?+Dkld6~AzrO2qU*6NLw-6qlqeRt9TW+xK{(iN* zw(P^B&>j2Gcs=zTQ=!aHji|`i^WoEz?s3A^Zi7y%Tf!5ff5O8_O%yV2T09a&t?ajy z89BuZjvd5EK7JGp~7~uoN}y6nwqlOis;KGQqC0!k;pW;{$bNE*{T!MH&!exn~9+FhAB{d*xwFm5~nP0vw7XL`EmZ^+d z;ej*Vtb2B6@ArxVcB`8cY-il10uX{2Tk-eTxi(-z3#cTF&H?aOG}L0yDj^g@Ii;J& z77D=*RY+O;!m{Y0!+&S>*~ zE3}+MJIcmKGC3%x+yNo{f^l;F+%}l40P!n-*m1wFhGlb(?~dpIe?vk@bgooCTY*7s z*jxs*-%97y;U3`W$JmT6UlZ(O$(vPH;&^3jxz(DSWj3hi-n^kFGcYvcvu|Crzf60) zwekM=mp^Gf84<$0z{6GPm}q5a+6rQ_qmK6*Eto^@YX<5r6Qaoq0LPh{T_)0nd3M{b z^#rwD=oY3VyvuMAeTEF)rp@MaJ(PL2xCF+;1StMDBfbDO{4Spk_PC|Dv-zvVxdVdm z9XBVH#GOrg!xumdTcMzoOP;V=<-Z?e~=VH ziOPq`lUnEC=7!&2_DG z#oG*w0o1!Z2W^1M%}6B_5zInH=)al;@1cWKD4o$Ga~*TKqfBf4g*<3=?Z^+x&nv6{ z-hx>AtRW{$v(TzDhwkc7=LFbR$I59(y^Pkx_^0B+CEu0uAp+>}mT~-mqAq66F@cZ+ zWpjv4m{BsQO{|&vpee&{ z`Yi)$k!fOL_-WS3X3!x~s{=TQn;9Vz>`f-u)Re+nd#|Qnw7X@Q7>=#<@c6J@_Vl97 zTLR#%PvsvLi<|w+^_oX5%eDqnuk_!Jj@K~Q=y2%UvMe$Z zA5N3Xq08eU!wyQ+Yn6x6IH&f3NJcPEy4kKqor?z{)`D-qa3{w4eRm(VyqnfKlx4LHKD}89_YrNxOp25#R`pXUNo}7Bz(br zb;R4#0*HJGXA!<*@LjwutYQsNVxR2Nxn>EXb4JEe;e@n0equtPl@PAYc#ctinGsPz z^Ge&l-9W!K%d?+hR_mL-7gl_N5*^_LPBcapnwqQ|>qJX|YD}ZH80pKLP4v;bC5K5c z`(hThO$lRZGhGdoi9sLWy?x_a90Ll_BdagWjknvstYZF9q%KHHNXF6d3+(1XU3j-c za&(_lGdCXLCId#6FWYhD7r%Da9*kgN@|$;oj$}wwh%A*g7C1$=)X+5dJXA(3=u=*I z+_>vMC&SnPtIrb>+($WOxx6_DA1(V_<)jvDZs-~++aFR;V^u~mbO{S%0+sLy`-b}Q zvR`%Ht#jQ%-JcdZZ?+P;aFO_%n0<1GJF^_%g`nq%N0$AvaDje!Az~qy$0Q0XXx~B< zSNjd4D zlO~<@_WLmi>*qE;A#CHjlC`m`8$(ND5 ze|KQBMQGEFVl8w0RL7$WqlcfbM>p2g4!3?J9?#tuq#T*&vl}V*i~(0Mdq%D7eA6#% z)Tc3)5O6eX7f8dD0~*t_rY>$gc$d(t=nmN6hxq(N+V%t_g{YS(=>oJ{!|_ zcA(ar?+|^_?ven)`a}Ta5J2-w)qY(u+)yt1XuT%`VVj3-Wk9wixQ1-*Qfs_lHWu^M z^oviS=Sy9X5{10%EEnnrRy+~`H0>dHVr>z;ttY`{VVF>q8PH7+VdGYjY`!ed-0wWaZE$lobY zZ&_EVTvHFwMhmK@?wSgB9W#?|7S#}s-w_2S^o@Oo1C>~b*(LnVJfdV&1!FX$aTN9V zJVSGe5aNO5SK(Ep@8-*Ox6BR3GlQLory1dj_Svzp<3On+jR485f7^J z@H)#NF^g@NE`m>6a)-b2i2_*jof9m;*6zdN@P=IHSu6l@DPg~9pogF>2z8G##Dd01<%WQ7fkg<;QV&k>&ZY=Dz0=e<`oSfwAmts`eHySF-b!7E*c!e~z ztT%(NkagZ2*KYDD`8aEdOacmU-Jd% zv1^Jiut92x4A%3M8?c-&aoHB!a=a8AFjk($j)b-}peyEvcBC%?PzS0c6q!1@KQ{;k z=8JJ8Fmw{?75C7_1G#Sk^Og}PPj{_67GVihr>1-19@9=$M;0)r*0qz0m57L4sZd~~ z`;xdjYr{ghK7J9QH$V%?xzt5VEm2L$b~bvEE+6_S9cFHeA2Lnn7_Hd?meP^??wEhr zK<|mPxH}IwXp8dKU2CN{jjTJ!^=f7-*L-(q+BbDlby3TTX-zA9z0EuDw4t-_z+6%t zQ{TEs2GuU=C}7#Z?IWg?rK!a_(L;7|iM)08f#m=_)nLlrkO0@f=xR$5>MtSXc8XMx zlY~;z{&6g6J?0wU7+;cKF&t|ffU$#Ua5xwZLqxI>leQL5%|i9TTSM4F?qmWo?sli$ zsd)|@Ne-Grx9@nyiQ{H}H)z=U?h{2h#(-B+obL8|k|f$7*~Bny>LKi4+GqtlOwZ2w z;`-Bay}GuTG;9$fc_`itn=s+}36^jt<+_#r&53qJ7zoH%GO(T}%y?SCx|w;jC>Vu} z?qS-o_m#`A^3{P*DC3;XaGonZtZ@9cowB8lgo<3s;ZYgZu1rom4!AB)Z1A^EEh`0D ze7S)G@u!{wyPtr^(UgH&1M}C;0)B01HD5hP-Q9-^KZBiza>gF(WETp6NC@DBGO;@~ zW!%k&yS~Iwzp~(+R~ESQ^i~Y8Hp0}fJy(~Jth4eeoIiphU|j<4ptdUeIDha^Y316^ z!cX89QDOf=ry{1EO^R_6cW_2HFmhQ!&go($OW49>WD6?GcWxaWarsSCT8we@*JyxjFuNNPP}b#4SL$jeqOo>c$oh& zhWU#}jVe@KqdixshkN$#Ng+#l+U(LL#54xMEP^XA8J!56#@IPMPKUd0EnbDA3Rwfw zi&eGAA)u(64otGX6IKCr*m7!|Ch+y;K1}3DBLR{d%wXX}!x6xj+M55Wu&&w0Zs&5U zXC?0j-yehD6mAd$vAZNrH9HT1g$gnBVh0_*_eDL-e@UEL*kLOaaQwWinTU>*jOP~P z4k~ruxN*teIhx03-7GCTxeX?sNDSxK36Ln6^m>y9i^PLrI>-%BHL$b&(V2Ky3a|^klnd_Oyd7-JOlg zIi0hN8`l>JDF0Ew2P>-~<9!C6(nC+(mkuVaM|e`^Gf%-KFg7E}F%zoJl%Gkt!s)44w1r)VNt$SThOnN~{LN@)o=rkR!3- z^Wrqg@fC;=R{=GcFqa5Wx=IGbE+9(F*~tENKagM*Y?T5FB~rrNt9>-}WYRdz*e50s z1RDJ#aKe6Y--XW;wzXie48_>$q!Ebz0I*97J?nTfI&-DfD+8Sjtu zIQE})|zeJ(nsv>r>t$k=&v{Nc5^ z1iMmNM3ZID?(!Z6oXoPD$HR^O3}*uzrXS(5^sM_JWiI@tthwMy>2{4GJ6?RDOKWAa z^=bDe$qtu7Jj2pS-vN*aI0sh^N*S%B4A|*D$*~iK(je*!EBY!Z)YK>F+15}b*ofHH zkX*IH$2>q>XwciV9L)#?}^I0HArcDnRrAAQC3N2c`UAlorqu$1CJ& zc*;(Q3CPUKZ4`6Ns&}q0)ZJsu3mG5%)+MDlNkS62Mh9qNB<6>D2n{y)2y%dCT0W6l zDvA3Lgc?y@^!}0qEVZ&nKw-f@JZ4Ip4^J44TL`QoyiTh5krQ|`33_V{#gPiUSC2S) zncxc=6NqcrH~=7bBS)+A^PUrPxwyWNwr71taEsgZ^0EGTlI%IVfiT0;phm-gNL@pK zmp#g_&_~JESKe3&!k8FgR3ww-WumiIq=Do~nUH$8PFXZrE0=-=g8oZrj`Kn!0sm#M zI+(h{^vR+fT3UB+2S=kJb1|t=W(8VP7d5p$q(J-jh=Kjhf%DkkA9=adnIB-?uAB>Pv06J$`SM$2RxV!hjzD*Dt_3GXW|a42NJk1~~e)1-4yXmt{G+S%HGl*(P_?ch13ACw3TSQ&mdU zOFCl*bKn|oCMlcc2Q4rxpg|=14qWgfI$$osM zd3*yBtJ)?TNe+%!yCJRQViHLZo*Qiwu=3f0Ik}%>$OV#GR;Oa*%1pa+P9@LBMSJIb z2pB6w%BnJ7BKX=-VEt&@h66LgPe&Yb`Sx#Cwuz^v4~wG)0hOM$`_cp)V||NS7#eh( zD&l<+(V7)!KKMgp?&CKG2!9%gR-KWr#Lk9Ddf^qNh%4RMF_Z9qS9)z?w6b-xn;AZ< zP_6_3tKp`>+DwS@6oOoP7$~rrK0yB3Vu+KKk<+Q7#%lg`=}prplOL%zUdJA_zhjXe*g}4^ZW{$zucCgVXw7shghk)}f?{mJaO}0e zcJ~&im@Awn1{Ex0S8JBZ3j-2_rnREEZrp??L^b&wX$lnp7>^xhXIDeW;H<)rEV^H@ zUqlW3cRZ-+Hie$NGX~?K;gHCZZM{VPHvx;d(E|!N?P}_a%{m>-*TwTtc$VYUZIE4e^%y@3o zJ7a+5bS7JCU27YOZmpVhCCCzw?Sf;69~}PG=AHc;v|{zyjc)j^3;_}lk!vGGIO{3v z#!XvDMlAZ^m?!k7FEoa10W>x?M{-?xVJ6Q@NpL{z>=Fn4Me7a?d{^`sHD#zh2~$*@ zoycL2(8u^AyKzMAY^|?ehk0yks=q)i_oK835LGP@@E}pG1Ym!^4I=-3(aW0IpkF|i!pf&PPQG4!6b z^Z4x(iPeuN%Um-8JcDV#5s+b!O^1M( zvT_<~KjHoPhZTw}qm~8@r6&AfMIOeyTwccNhB`BvE4W79$uf&XDf*S}Q5Qcfd6XTs zhfmNBTNrl`{pP{mQCN;iiGdk|!}vFpJvl>V@NMPIF}s<18ThuboSgM{-_-tmar;f> z7yb1&l}BFrrt(XqwQpIUf4cd$@q9$&`Ih!?ED-u!gMPvI0olfp6`U^wWaq1>d~mMwhX5uW@Pw0* zXFn50v&9qi{+)WY=*x#;q{|!93%9UkvizXYmEt5grICzK&H;!oCBb{n#Wd+ZnQl>?e7_ zvv~PF%Gh`;oP*@0OS>1O=vF>{qy%$Biq;#pD5Qz`s6@yRr4f6f!;^iGt({yCb`&Dj}gHo3I z{)YSD40o87qt*NpsSN670iWyk_Ps*0x5E}R;2fLxE)3=igF3~sjOAag>#iv|cfq7G zp`${~B)W%8m)8jeJH|)s%qaV}tEQ8k%+;O^uzF^soZs*OnKgfc%1^&|ki7iizSY%Y`(%g5!?8?ojYGrXl?_)kMtY5?WKxW*TDqX-X^gEKnLq7va z=81ol60JM%PqK6Ac4Rjzx}!w1&^t=xX6?w1J=~EyT#{Xr+`T0`n%%aqMoh|5hg>E& z(RIJ6`)OcLu$e)pG?R`e2gOsmEBF9HwsfJYCP~X5zI1SI=2|I_A1$15mcN>FW8X=3 zxL#bQ@;Q`U7JUJQw%JG&f#@xwwEap$wOLlgFV?v5)9jrLTft4&=gUIJ&%o7*=mauGbB|C3za_%_Bv|gy*?v7hVAo zuo7xr#Zk=F3wNMeg$ zNB)#QmU{km%`>j~k(t&mXmI^@Mf-QmHoVB%OYItS2Hi2TK%|2k^E6#cvyVRx>_oN* z@mXTl#MQ5tQ4>>clQa9$D9N4DVv9t9N}rshN*jk!B5asX^u(HL3NAAB+H ztBV*<#?JBKL}{*$#;>xZWwreY_%G)=WD0T|?S%yAD^-R{=w z{9PlKnN(wfQp~-3zFc!_VOGUffdYq+26N1Y@1!&?le;HNocihQg#ys{)sXQwm&siT z;pM7&+~F+ihx*6(NH5u>NLx8*CG)c76di!OU=8x*<{ZxM6a>SU<@NGQNfw?=Kmx!n zgch8o?0&wL?k!+>>Y%v{I3f8zYVu z*BRi#j$Q9V^{x-|fhiLTv&6tYp5|fWPF4%-;rPxHFb~`j3tilQz~1hjEfp*{+8kEH zD_E53EG{nI(ZXx!-brGBaktksR*U|IgmL$JlvX zcY@VTQ6xpP>28XqD3ao(B$}dSHv7TmL!uGJOo=vcmU1!D_%wqG02S|Vc)&V@&1n>g+WBy104`2fckN^p=UO0da%wQ29^T%K( z!2W*c)TyfPahpv_aRBqgQy7@f0L>#(D(u|UAe1$y)X+&YhK3Pb_gofo5OEGvyvqQ zU@9;n!Qkno*h;5@R?EcAtF&$I3=LJy0FG2)(Z-hFB)8BvM-1v9y$zuDg~C zbO^zIK}zV5@;`P~$d31LwQ(lE9dc7KgCIjnad=!^Bl=VxMkuvBR`V*a7IXbZ6mSjq znVK@-Zb;cJoWL2Y!M^L2TBro323v z$cJo4CQDOwF(9ObhMVol8Oy+Lz=|KY2zg2yb^RE4r>~fAw!2*c9|wuSBM%stFNcs* zXjBDw6XT~AcoPNT_Ngv?QO|GKDr~U+5>@Jq|Ih?n=IxmYdrq{EtLKK|6F;e+l)gLjj zXSgWOzJ-hr8F7XRJ!3A@ASeNvG8#=}7 zqE$@bqoN#vwkvCxav zxCK{Ps#xYFoI{G=&K_Te(YmcYESA+Dra_+Snp>cPkgoOgn&{s{#gP z5N%DLlXeoPv<&zSxAE2Fd&GAw02$!fsuHB+vS#b0omXgA4w?cAdD#|iz)OWuy~KeG zz00h!6$^`+nBj>BOipnZ47NrU3z?n6&TMR84ZE=07li7cnOmCMsOTm-5(13|N30a~ z7}+s|vfhVE;u&MPRxhx&X+;s|P$5tXQnz6*Lk)!4@1+5eh7QY;2Pl!i9UxGk}8?BP&cH8#xPe#a0zj6Q_CJ3g>Sfp zqh}ls>{d5AfS-6h30yf*k236Z&ScndN`g2hNF^x&CAoBvu`0SfP?c}V0US8!y6V8a z=iw&8faI8-A@%TtT&OKK+hks{<+5*iVBjL$)fhdto0#kne+iNLmi#2t$wh?e=|D@6 z6M}I+DF_otPMYWx8mS10+(KM|ak?gtldz#M1(7cJdk(F|_`wQBu5o`S?&$HcF5TNE zDOfB6(r5@#JZy++)~_S5HqGE?V=iPw9^@Gw-dcb|OgfO-<3JfrOxn@}J-oHycjE!r zJ{zvG@_euFW!VSD#<(kni#`jDP|Q2+=@oLDY*%CYzP{{b-LP?gS9EWJgrSbTV=bHv zvK<)k$n)Q7-=I?)zztL5&3;M!9-E0@2Dgf2{o4|%wV=LihY~sE)N39*;}F8feShFi zohfXR+!H7r3Cy({n}G3DRoQTtQ6@8JK@uWd>xiDD1CBb=4GSd*|Ag=DhD2x)?($`H zeY2g3Eg}@oa2?y*L)2NJq>rvEAg7w94WRf3I zG>UGrvf`ABLPRL!B#o^Yw(&~~7j@Agnau_bgMb(9gSV%Qh2l-)q1XrG?@Pe4;)nVo zT4>E1fb(Eb9Q%9TA5aL{SYVPvtHc4C5MtrRd=jQ@P?Yk`sX1)ZwpYuxntqwoSAu4j z^%(z}o^rJlkP}!&;N@YQs&15zB??(3Fi<{#Wx`D7SoWP;zIuJOt32H~3~uHI2rEcy zV$W2W;W_TC&+d!WL#ei&q3r}~txQ4~a8$eoj&g*%HKufV0w2)0g+(r&BM;jHmU*}r zBo-JlrImZ^JwhCl(nN;M_5RtUWCUsyN-|$<$(I~CwtD*5|HcSi=+D@t@$|%;ii#^u zl-(fQtipI1x9l5_$U36$n-BOPOE2G%%Mp15)!YtGGd-1>;9RzS%@ayk)`+d+AvhZ; z4WAI&&5jvY{NzJi$k%lok1JOOInOYZ;wBb@=nK+M_m6;pyWHkP92RhmfKme5S1uvR zDG%5Uo}Y(LD-<~Y{M3yb!}AOC%X14$O#=iQvh7F^5FS;r z`6U#Elo*|)h;D9;+q4krmR(`8eMtZ+KidK0ULBVFvZJmEOL zB<3D!YHy{m)wG73B^dvWfgfmq@zE>q&Ku`jJXP;+veeLs^(id##PT6YP_UW-1xq0J zLIUEe-lf<$!5a=YbJ}Hoo~9)^ui?8O)ZN9#67}Mpe5^?)iTY89 zB*D`wtkx%4a;+VCHc7LtBuTszBzg6tm!yz$g2*N52^rPRjNOsj4wCLkSb29I zXd}H$mHcj3uI9CDv8`g1% zPk=X8W-Zuh7&-~pQ+?`X-EORq{uT`fKJnt$&;WIcTA-MeeE6-Hsh>Rvwj(|2?7)A# zKip>q(KP{(kc90(5g%=icJ()A@Tnu+Q1I&fw`3{D-bGFOaZZ;jqi=v-aEpR2Ur5M< zp_DP*+3dmiy;EZ^G6atbxkfwWRB}w_~Jgmb( z($hL&{0j|`dRVij%Lr#9Y%TTel3mQo#a!_(tv%n-92H|>eDy?c)QDzQ4PkuGnR4ik zIe2Sf@sI2XX2T#ShkbR_gPwyD6_=Vq!?B6)I?7o$#k!PBEm({|OYyz2a|&Syyf>$-FFGarL8XCmn?)o;nU($rPc+koqBmRvg#+q5!}<57BHj=NeY6vtvYwA z#=1Vq%xGF#z-H=OLrHx}^0m=g+`fISE?ej#JIA53nbFud_9cbAQ!yVqmf=Am<^`8~ z5hWUAnZ-r@m}4>$UN!jpTg^G48cGVaYr~4$ReQO+a!e=WlA|bEeb~o29R3Qg(KaPW znBY*Bg8ir9H*jZxSNHCEdaWDi7PrI3qh!)Kp1{MI9ixsL^9D%P{c*xCT>k3WKNJk& zV5-|DPpbFE_$eDsj1YNZ>^Z(As9f_G=VG&Q*sg2yH&3*r<2IE;*lZdO69zImC6S@I znqsRWRDcqr=6rm1)<1g8gIxBk=*6ttFdG> zOg@z3t&Rpn{EOMBR?~9rsF{Bc9r3C(>5-wF%;%M%Vwr>`qCH6x19am|(-EGsYLhY* zTGOUcMF&wKTfzwS@j`~Ihy&mQAPE2s{3Qt<1uqg1MuTQ2v4K4)qV6=pP<<@x-aq zeWy;G9e#1-ME}_{FZGR%oH=#o)W|!9SVeh6qnO%{I7cycpfq)`H1$+z>QHIw>C)6Q zrKx92Q_q#AR!dWFmZnaYrq)VR>!qnvrK$Z485K#{UryovauWBK)40E!$o=J1?k^{E ze>t7|%L(0IPU-$~QumkBy1$&*{pHl|FDG|@IlTu+?=eWJ1?X*|*!x7-Ww&+fpb3y< z3*YJTGgn)sd|75N5(Jnlz)gGl&8A>V<2p!8LQO96nkR@?uac4!YG^K~8%c%Ey5uWo zJwnsiSTZ;3GhoPMPk^jL`=x!0gxV|Gz6C^Q=2?2S2=vSHyDOCCa zOH_;*<*oR!h3Q2o*RO%=HmR{GzgdIp9hf}Iv=ttUEpErnjJ9-Lnu*)QVRmP3>Boql zU$}8&9B2GUTg;Z~4Sv;P^2QBLA#h*#2=0MxLUHsLQ-|Dn-IY@>!05xaQJFPft79gK zeTL>aaUjG6D6}zIY@i=4;B1Uu>_=aw`F!ohjedUUB8T8Wy_h!0Z`9<<4Gv;8Up{Yu zD__B>+3>5k<5zhVexd5wV$#iGQVE%;a&u_#lUBJTP#t#&`%held3%AdB{k0#f#HMQ z=e=WGC&~JtPV@_3FzSBUR+)4uw=3 zxvVg>HFq9thrsNld>LC%2j|K1e3*j;|GEUJGBzDV;#GXwgh%lM}R-av_77$|9DV6qJHffAt|EF)h@xl^Z%rV>XPm9IV& z`-bnXfUms2%fVJ{QPRjj2^j`JhFCpJN4z-Xq86BZqLbp%OGE}Q$#lwOO#osWJO}7Z zh!>!&PWO3vQ$BQie%yZ-M9&wpX4&vS7Xep4cf$S+mP4N~mEm^Lat=PHOVivKf_S9= z`UoeE+`7$KtanO+{Z1$uCg(+}mvBY@nG((`)0HJkd!R&t*7c+G`bjSRWN#a-1HGm3 zmeQrXpg4Slx6qjZs*3Z;l~zL7vrNp3`9Mh@2OypKa)Tvx!QvP_yBgaMUq1?pp1U&T zS*DbXXNU~>bO9C|j)kAQDXW*UN{KuT@C!vb^8?MBPwKBacm~+PIx{I>!sbdaeNBGd z@43?(Sk{?b&Om1rgw_GP0V!;J8tNnSdP{?!okn*pgRFjzRPB+D>O`AkSs3pi>>`WvSL zBug2@g&%cM0Nuau4LXTJ?iz}1?QwI z24RCsO08i8vt55)?*U6UfhzzwE%)BL7&y;jkOvLu`aF{;D;tMI?}hiv$l@hNDeySz z0R*5Z@7Mtcv}7YOW=^~|$IsjH^_VPZLJXTw`@9)K=9jk43K8KaFO8t`;>~jM%xEl# z%Ns3x<`_vWz0EfnD5rZ?F|?5}R6_<<#5!P+D`Q%-SG9)h#C2mY`wvEe+SJH?G_Qx* zt!D;kXWSqH@w8B)yDnpRJl)b%?;-7#IMZ$CtvBjV!ok zrrzQwzLI&G*A=|=$=r>+fDx=5Ddaf$^16A#YWTz?ZdH|a6r*0)`=`1QK`30%!Y#DE zz=fGAu8hJ|cv2Ty!AYX5`^8mfNJ*RuAcFV`7vz0CnqN6qt`bYf!!Gjzt;3pjB$iAk zdFx852Ly_JY^61V!JEZLl}el7mP1(&0V#U1OfU!C_7-;J7<+BL@+<5v^m#zis)FgU z=>QbfRs5tubl-ofEO2a1Iv%`_yW;F{%5`iGTP@UJM#50R@!(BN$uDsDFe`$FTbsz|beakPUi-8uL6T@nIpyfoFpwNWnl2FL$x$p18=uP$Vjig+r5LkT~cx3cx91T1RVn;g0 zTUUZnoNL;gm-!ntX5jooEoHVo%c- z#Uj@98~uo&chFc@Z}&_F>$UNLzP>Xo<##R^w|KEt-9;Y`i;hrRqWMnYU=~c7!Sy{% zYXl*)`NU9gj&bwim8om|FhT4HEDk@1XA}bU&Dp>;ZSd4A=mcLNu=CiJUJZ*-QTYG~ zZr4@WoSwl~x(r-duB8!TQc?vVa)dF8XnD^xek8>4(ObWpPP{Swn?M_>F3N3vV_DsA z+JfgBO-55dKUQ;~DYaM^_1MNGco?J&(|q+qBfmYWJQ$P4aT6)z`f z?SdcV3rHt{oZ3@|W^Am3ZvT$2aNG5M6AzEj;)Msf)dh+c^luGoGI@7)<6+!Egs+v)A7zIIgFo ze9;JoY7KluR|P)^YXX^=n=~Snlg7);Yxj)RD;VskfZZ~%jEd)?c-(YPH0n?{<`)!7&MrD30o z3FYLppBvJ9k%b#-NqEg*3H}YSo)Lc1B`#vQ7ngBwCX{=anZ zLjp-qnpyHflO+lul37Y~LLIJOapSKH4-B2wxhAfAmpA2q&$R&)mE|V#!S9K0YJ&ElmwrK^5PCi?Dojw4Ehz3lEWm90L!BLT;ym(H01-u0nlXN*v z7Kq->A!Iq5eyO_XULIjqj42YVe}e`_SR!WWQ*c4JgwGRJqMPt+PCg#lf^O#adN+&J zh596BrJ_h2AVAmp=v#bYPa!gdg(n#@Jjc~~i@H$GGjj+UjOgn3!p+B$u8RnPrcpMZtV^xyLuqH@fh2TW~Lng=RyB%`BiMi<#m2`8Z4L6tPCxf7m$*XsDNdsvAhW|DtOjJNpvxM}t(6{BO8S};dVanU2 ziGiPk&%%bfIvb;DifP`fCRl*FDTm}@Zct<~Ni9i;#l#Fw+u3Qq#Ushkxk57c!|bYt z8wLCq9BrH+qcz-T6DwMV%HWbRTrnG~@HOm2Z@dw+&>i3ZnC4w8o8b$g78cE_VaB|K zxIUcnrhan9J}3|YgeUn3YIvhr$3!l^kImy|U__EJ$I51e;gs%&VF_Ms4I3)vWai1i zce!hq+=b=&>Ks-rLPeWh^&Ygt{X`|G|(h3gBC}H_g-tpRa5% zw){0i5flLyBx%aU{NuTpTB>&CVbw6jQAuC5X^0qbXV5j}_Fb@J4PK zYH$&##%xbf)=k_NJ)p`&Kj<(pu@3zhgoG1O0|oWY=~xI!x@d&ukC+PlbZ<>Hs&Vl& zG=>%nT0dWz!Iia%a!3e@6c zOioC{=}~vudq|h%_LcG0GFIAU5YarnY)(}t;Z(`A&^x_41$39{aISrIm_{^CJ%|e0 zXZ`rGG^ol`9*Ltb=Buh%qtoo$P~X-!qP&Al)b+_qs?!+&l|1^;@T+dbkI+#LR^x_PD_ zn|3Yyx9D!*A3mb(Zo6gIi{~n!HQn1tX|UYRx11!vW=%b6a=0hn(x? zU;cXn|5fmx+h1|n_N;^(v?rEj=~vNO6|m|8fwlSHJbJ>k7M@*)>o@4EaRpemfWZPv zHKo>hyjR^#P@?XhmlSuxATh7uQ!UMYnO8%e+xeRGsYUATxC~fxd^&dCo%AKxzSXkd zP9j(||<#020q z{Aj&|C#9Zp&>K$c&7jpf^4zXr)NZ+HY1M5VBkbK@mOOl_UfOUwC-BsgzPdf^!6JB* zJa-HATF&iFTV$UI&m9>9_AjH>0yu%azlu7n%XV9U;C8-QD-UMD8g9VgmLT+bK0%?1D(I#ohF_}Vc1GU_~aVbX%Dy=Ty7gX)0+{Tdw zoc&RPdXYm}nL=5}?4bs*T0{!zt)ssjdmws(9H4waX<%LU<08t>V;tR)*YJK5R3hKs z1PyNCIn%~bD?zGJDydcK`BDP0iMHG>mYYLMZ{gSN8bv!M4{kU6NFAZ_?RLE?bmOR_ z>``+5w=rJt0Q$FGKYqXM2JpAyzKW+oJbeuiwS?xo-B~$sJ9Wfm)OS3I)@traaOIO| z!T1pGd!7{R8bUYH1ZfAJMAk8QN{=DbF7q>1W&v!29d&Ibi)c z{QatX98XN)@8|scapzt${rwDd)JcrrHR#2E=0+jM6VU0e;{76iUqQ+>{JVkNYxsKs z&lmA;LeeIXKL(9{18HNBfYAb6rjH=~GD;E3eZ&1y7GFZW0;nGX;vQ;&TNv>Qdc&sy z=N866akX*{NPGnxHHE*E&<~U(YP}}jX$3iM72)U##(7$JtO8j|`PJ$(pQW=>2CI53 z%Sn|s+~AIkqeau-lp1O!>Q&Vx&`rCQL&?kJVRyvdv%2vaVBt$#T0&n`lWQtvpyJMp zBt}dBJkq|3a@5dG@DSgq6-|R^nrlvgUc{>6j-dsG#a_=MwG8Spq^e%32z9g^<)VVt zDrk$)CP7!~ok^rnLqxoKUB|IuNK_TMv-qphoi9a+a4*mfH2{Gcf+M8kW?GS&K(*oL zk@FUwRkN91aJ%%0x$v2GkV^c|9WAGz(wB9pN8Dc8k{Mt~TmsDQEDeF>ZbB#Jd^=lE zcWcEx4NZ{uhKSKqp30ErEsLm4OPIjlUpDR>6Kp)c*S=(1q!b@MK{U?f?JtMdzkdJOuCfb_MLD#*Ge{MG|Le#mgyBB?11}EGE zFNnq5tz}<_{^yh1=6|~lMzFKpO+cCyxE}g`wOVHF*rLxl6m4=$C8Q?g)9t3cBZt$& z_@=zS1&q@7sWcy!e?I04o#?sKd%!{xew&aX+V&;E5O!^=^koYvkh87u8=9y$559rr zKh#WW>8Mcxs9ET3jYGo^gO7*YY3H7x?Bp%~OTdHv4J8YD=!wg~;boL-fu6KiQDW8p z12+zK!>@$jw?Emg#sp-{#vW{Wd68q_z91l`W3OEvb{0r^tgG zWgRVYDD^W(<0P!MafsVXj-oB)On@HiZTzF38}V>QWBI%utoTs_Po2nO$^KKqQb-XW z_x8P%HdrUoo4gNy60M{>e!}xq9ds|2?tngj3UWuCeGHa_mW|%6+pYY}InFY$cE`#k z=Z1R?)M|h_{$0kui_p2$TQkl* zH-cYsGHna3vPLIv!1t`XHvySFY5|L~Qtn)N`VEgMBNXK&-0|{sdY7Dc;2b_Mk=bh7 zlJw*6Za9(leukrzTt^)=^voB@Ipc9Lc~mr5lj zt)1m5cSIvRHck^5Q??&xfh<8g$ywhLa%p99Fb)?>ToHcoGx3o)V^)q;p0PP`IuFN{iw~Za075_|Y9tG2|G~ zN@{s*|3G=xl2}Ow{|llD;MhCM5h znG;slxYo4Z2t2d}v`4%q@J}q=e$GrZLY8auK)W2s{1-W1)PrR)I_7E2m0nzyUy38^ zp4$kP_Lp;8S{wE@TiT6g-?JQ;ZF?AF)j+>#?QsSJ{pUQZg@5iVn}<^D0qe&8W@kO_ z#=Su%KIB`oq}2V?)_Dzc1EV-i%s*E6u%aI$e0pskAN(39xAZZ>r}n@M=3}GJ6u6-J zF~VnD@Z*I4O=#eclRj^VoP2!r=Sl@4#UI=F(q~1K{9}X9m9&pjKQOk>NP1TL4I`Dl z8a-9&Enu)OTf(f9JDE*Sy|yolU7@cXEwDR~EuUIh_cZ6u>X)Z;A!^O64FEpfEX$b8 zOZX?=!I_IFw}9Tv0Own>W~4KTXyI6{0O{l2_t`LxZHa<*I+#yBL`Rwl?}7W1&aCR+39jo~bT3N{nUuLWHI zy*RqcYtdhJ=Tev|q1G~~tkQ5r##Li6EHAMJj4!RybZ*|t7E%qC;NPZ3iUDU?3RSfE zpuJ^jW~qvAw!S+-ubx^_XW4mOZyJ>|2&{rXtEH(4(^($JMAzv#B9p>x^yC?vwzVnu zLcXr$WU2iMC`KElbFv889UBKcjer^D$<^7p8?4+J)zGQ6$!SmfYR9sCq0((WDPwF_jxt(S!>muVQQ+NvVr?=@50b4=GF3~P-W>(!(qh4neIZ|i z@N^Fob@(tioi@VuTXA)RbLg5#ALi00^Yw`ry}=mQORb_i(yqMq#~p81B5S|U+qNY+ zLKz?HTplK8KQ;%*!=>)vIw@)91~;ym&Rs$ej^LWs&y>PVE*NF=36oM7 zAMQ6(&d9=|CrnG5ox`Q&L8C9G@A>+)HPm7Bg{g0JkD#q{#nlk<1lG%j+QW)vS%#c< z!QS8;zy26jCi@dj+*NeHQACI5X2-9j-sSn#tW|sdr=ACdMP&@V(Y3$ltT~ z3L%;86!0}U%X*Jd54xdzYqau8d7WV^ZOHki1K{7B%-5n*4 zyj8QQ&^Y_^d1iIo;cK~C^x( z+f~4Yy4RtCeNfyF$X$WdQ^iP=FR``4eTCSCZo8e`zFKK{cVtrVRHVM_r-bq4tmgb#DHbW&i@qCo&~q1~_JlDbYL&X* zdFl2pB9}V}6~9;UhDgb7+6s=ofA1&$agNSNe1tTNXTDM1sSEk+c2o1j{m`mW*&pt8 z!Dp!eonuMPVN1Dl7Tw&J%a}g37d0#ODxXk(KRKk-D>$ZWZyW(T1CsUqz4st{$Flot z0C(ptp~MnkyFKi0wuF1)ZqT9Y_7-tN>Nef|>2|RXwqwWbu0zYmy%X+mn#*XM%98cO z?blsGaUNsR=7ypM?}bH)JfL2g?qoB&$TJ~La!c4fsJrthqx8k;El|cc+5x$UG8To^ zHcn#SV;}aX_F#XnNZL?q6Jo{^JQ+xaC>nHcCa`)%2leUA>CMo>u z>!-Fk)UM6r>d(@@qy8v6A4RVhdmxTZLW<}CQs>de&_b&Z9e4J)r&DgmiBf1I^9T!N zyA^UWuh^4MfhIYuX_q~I#30r{zMR^lE~EyGIqtv(yjwb9&|>)gaC^-ja0NpncQ}>R zZK**Q98kT@boG>JX*`VmQBS;{@u(ektoNcdYJ9Cp{heulo9-}myWSEi>V8VMjZqZ( z)zo9u?eKtc){Pp37J_HECa`jIN%m_q>PW56abVBgu1t&jG{R#ZFKy!#%DX+(lQEhj z5uc-aPQ=b#@s}qi_{(!w--b^Bzv57NDJ|pnW^?_SizC!$q%V18w!{$? zhmGO0XmRirt$cTF;-&{d$Q(phP~IIe=2ORB+uEHTOm>IMQhUX?$&>>d0BlqG2~2)y z@MyYC=sHfM`4sTfb1BY=^_H(b;GVdS{-=13Lu|*9#_0?Nf8KSpEkg_`EOV}7{{-Ob)Gjy4 z+{aQ8D;pKJlZ!}n73nhS=8BNFi_=1~wa^&{P^mCgB`cL>dbx*7S={ua&Yeua4y2)I zTWqHz4A-_>L%D=`9XK;3_R^;uZ%2<&5w)wJ3aQ?59Y@=hj4;20?fS;8?il-;-Q-$y z^)Mn^aCmDcl_gy=DAheh=hN+1*WDx{F(f!wW|cH%^(d*rF5`OE*O& z3Fr7D&U=bLxrlxV6I{Ws6gvH&U2`J9*$;# zLpfzrGe&;&hsO7}tL1Pkj66+U!O0FKk=W8XA*Fd-Td`LeV_z7~Cl?xBqts?6lB|*F zjYC-{Czp$~*DGN5^xbNtSd9S-byG>HqF%Tl<3Vjk2g@wA>%UvQB35^+kzn;4 zwGQntLmLc{)Fk{vT5@ZM;nD`TGn=bjz_5RF^%6WsiZy7}DYfxBh?me8%0wG%OZwU# zMgixNzP7KOU_PjrQ$DCoX+vTFstu+mHmXy=?AS)76HJ~>M>H$7^b0g_*ajnPHHqBN zu5JM{Y!JD7trSB_9JL*%V7Kr*BnWJ_Ia7L9`_JvE@Gq4!wu&x3MVi?ypN*~Pv`vm3Avf$INE*E zb-a0Z4A{1{$|=)_Y;hL{#bPCH+f_u1vF?P=^O!@fE0a3IJc+W5XK)BlfEF!bKe~?{ zyVAQs+#Z(UjQ=E@i5BwVq94wm+s?We?r`3b%B{-f+#j-o;SHxtBJ@1%s;+8&7h$e+ zf41#3cSQPB1O74I1o+)t^QP-YCyOo}UEV6vlH0DH;GSNc?o8m9{V$Z+!BrF9s=-LI zsS&PGl({W#>j{+X*!ncfAEu$AsnHmi-dkdkXxt!ilq)qOLKDIw_W3e^vX`ZZm6hS7 z+U=mL%BhM2Kg3aW2i`_Gw#id#c6%3lh`7};jr?eNo~2`pIt_@CIZ$q|x{Pd()beqx zot)$^NgdvwrBftMAg`cBQon&!NyOcs$iAD}VE?!#LnGmKaRrVkQsYSaR$6|?xa?KI z8o`bU^o5gScl0T^bGPsx@w|mp_L=vPL@vX*ZCO*!I+uPu0uwoPk*}d1YuO~i?O{#~ z4{$o;4n@~;L~@BgM@5|P{kD5#7C2E3bq`Aw)5%!c?XVWz?raP0u*SVO`O&x~scDqQ zh)6WfR(t$-AdaWgZ;qlnps}ZuK3b&rji|P9J2;u*s5>9QE0!XUX@m|m+rwZ2F(7@F zFVi#1Cp^#C>eb8O3c7qv1X7g4OqaL=TATcc?*#!C&*ph)+^K;HxrJh%wnr{xFRuY# z;ccAAC53TGx8P&>mjqJWOZFY`?5J?2wiJRHhtpK@FKMNm&;F@Kh$9V3;~YGBJjQ^> zAUWh8POIIX6rT3SCelf8WcMgE35`4_4&cV=W7I#w$$&ee z+BB|>QBu+ocd!8QCJ75PS#ZmNTQuTIs{lG-O@LG)2arOf*D(I+PF+%xqvFdR<~jGM zQ7FUdim%&CdFBd0DoJiH`~7x4^>D@l=Z2X|@&5-5eA4QseEw8q!7V zr?6{-xXt4hl&0Wpt9mEELHRJw36$U|m}fx$CVqP{b?OJz(-9{$a=*%Z&^1Rk?m2iE z!ARB9{>DCN7t%A1(~B9}xm^sqaEeZfx&!&r)-o+aHqUEP2?)_axaO05&I$jU1C>+mebf*#zg1TYHuTRsm9Yy3#AiX4*qdTxKO;6$yj zwuP&~HM}v*MD8HQCAm9!`w{=)mY%H=RM}xEZY!VM9^OuOQhea2@Jm0KIrbrd`%_rVwM}PcvUxQvT?{1Rc1F6L1WOgfWFk?yDRa#E!2(vxBd&anl+B=mWjz-ku z$bBMfb-4?WJ2gmg+7ht{IA_V*5^UAiZg^_0EQ?$Y*=$oWmWVPNzJ?H5auTeH(8 zq#VuSFbr&FbGi_vj*w%_OD%?R2qz191oTs0qP}7qa*}oHG2ATIvF#`<8G^X`xCWNB zDAcVTd!t{aH_wnJ?vMt8)Tm3-b@%$&K?l-rV;c&MjohlN0i1y>r^bh*ggiM%bLey7Yg zB%f#fD7ExnF=Ds{hzo7X9m;`4JQOn16W%`&d4ju-7jVCr&h{;eVw}erLwX|*$B{OU zQiM-c;W@Q0?ns2o(TOF)2p(%!A`8paIrpJ7Xxt@#@}B1nq70_JCe@W{X4@|U3N1|$ zhC60>S$|E^I5SLUSBI?}$A>w(1ClsW4&9kDd&(Zsl5wV{J<$L(J!CyM=#G-BCIM5u zL26o!Vlj}*83fC^A(rC)4(|F@n;D}siUX~aj)`GfyaB@ByCBduT3|6xn-au5E5z2F zBMz|^H8QQfdaBlT6Zok&&N@E6a3otZJI>;b9M6`>%9h$??VCGE{!{&=QOafCYaKte z(TVRc9?O^CZ$K`kU8j_gvRUj*mt?HfIfKa!4m^oD@3m#NE+J>icfq2tElzd7Y$CkmZB}q)-1wy zSMCOjb!`0e{(T9&(YwJb@&jp>#nT-(D3Kq?LnZqE*-M}eIm~u<(v!%>3{1Na+vr`v zANyjlZmQQglQui47Flg6@f`)XkS;pghGi_lqXoWvR6o z=KzPkTr5-Uant*Y8*t~)=HM`bFbb~rC$UPX!PZk5%F2Oy8@8bChRa(`>(lEYU)vtl z9E4kUgK!bNNXpZ`)FJuBlO z>}N85DeZhRg2%J;EXG8PhuyQ6QB!BmS#RiW)(KqtY*u?0Pn6sUb2^oVgu`=nv)*o& zO8GI$-(#aXI|H=m0$X%Bb<3jIxPaiJ#%Djdz$rJrhdxyBiY z`x4{x=|;!mn5cI^xU?~(0VR_2aa$Z*s`TWahhjCw6wjo=Y zw6nO>G>jk83!;stG!)K@pP{#BGklHLum`ok)hb0g104elLW3L@?)0EPs4E6`qa9_T zhVt~$xOSg!DXsAuM((AOdo4KDT-VUpWnOa#T)D9#?LoGVYG8MWt=sJvg)^GCgQ0zH zsHoRY$qO{ONql$y$#XIlvenZ&&9Muw=Z4ZHQ*QlrNdrv|Pm^x3e_)lANMD0mxJ2 zb9#W#5W2tHCa38z78DHxGCe%sV2&-dUtab zj#On^67}D?=%27jEIeaHU3P;WU>7AfR7 z@k=2^?!XB7uOlp?uh3KYy2rdwm2^ftKiM%s>32IB?Iew03%BV?uS-sl={GuTPk_V9 zbvmcz7UxM|7V;0+!GNOPatEeBQH^rhY1iP#Y||ZUTt#eiupoE1fppXz684=N?kC}z zC%>Igf4pP&Q`kjiU(-R_&REWEdrJ3LZFvf-=@s``{Kp+mx_XMIEw#rxww`AizI&Fn zrfy$5{HS?LdcBK%w9$9_$hAdjciR*yzkK4KFa|teQ37$d=Fr0+PjiJPmxA3=lm%|8 zbVn_hUJ*BsmSTzR@$~5DAiZwuIJ|AQ^=)vN+pUmlsKu{^xNUC>WVesfK97IH_*)aG zGvuH>mQJg|cnZ9N-IhjA5FEIRIx0|PS7xPc>uZn@w}XGrU^Ly<5n6yF=1s9aza^39 zBe%o8l;^f-Puy1C|KWD97Yb>TeZze#q>S|^9{b>$c~&z&2YJ;UD(=QOYS~H|Bfom& zqrA=_WJ15ul=TRoL+re~?R&-QjI?k+wLsCyd+E!md+v+S`W~r#R{L{LRMt8iflX7{ zZydI3r8Dg_oaRYf%eiqYECU+#F&p`?TY% z!8n4=uZxoHOXB;A{5qb0JDjg)R@LXrjU-u1W!U=?f(<jY^%*Xh;jc+%4$y z_YnvBowgpG!eVRm1bo_lVwlCi=SWWirKOzC57`o9eZJfxdrjXN}b z?tS-o&|2QZ-q5;`>#a@ph*BJP9S}3iWsOnE<9OSi(KMIiS}G+;Z#Z^Wvm79}l zWcR}PmV{=da&wXx=4J63`j?HL@~e{~;nHqS&Yotw$nLSyig7|1ym%` z{!Nj4OJ!}1C{Y{uRP27Pzzd)^#Th%{1eyq6q;({p2{h zY?rg6L~n@}O{0`;wJ5#;T0v|4dZzSPq@ViNzas{3J|gv;eh=?8w8d}n>Y?eVho*!| z+(|kPPt%QE2bC^DPhEpu;n!SW!nj{U8t*>SyU@7CLu*3+$-WmA;}euK@fTm-3?%M` ztpQ$MHj~)LYny??9a^LS@ANVaYdzzfPqoHv=m^_UL?r_$#s*Io#SEh<@d7o5C_j*L? zaGglcH<%VfTzXR;PjNKIL6a)}aaGE2U&c(KiqYih3XJI7{qgqQA#+5y>xJ=bYI@E} zHs`5s+>gZX9oY=-SwG&qZsT+J!o9=LwKh@_>r-1#BF5#mJcNH=z}t5m{_fPvo@m|N z{&|#}6MkVdh5Ygi{=>PjCvFJO$FJQOPRXpL`Z~rp`?j>}mxovmb%ML_Z?~WZ#%|@8c%0ZtY~8i&Q|IdfQ1*947+18Lg+U zNe&=w9PSJz_K8d!I*F1tu5s*%9k^thKZUrPrSw_Sccn9Q_s#@#G@~$elrg`Pl#21h z2-#K@E8rmN8kV8<)Vmdz@Wy(?lF@C2+XD63yLh=yyyVbz=i_^BPq9Dl*8N|Zr83GB zaan5e>c2c*9k|z&F)eZnz549BJ0$WrPt~UWL%PpG_oCczPoRw3aU79rdD?oM>$0nd zU&kT0*D>TrQ<-k|l|(+a{jOeGWBVLv>zbl8UlU{TRA=9%U$;gm)|lQ8(N^ zk0YI5M;;G_9>?!@HUTM%Sqg_O9Yw1O?K{536d${C#rkEn6~`B(H^+gCy&uKXJFerL z(&tIMnKGgQ;>|s(1lbQNE*?7WMf<#3h6h}ouldBi*WC44z}6*?XR%nDZI9}iYMDds zwsPFatl6>Rh2)x|y>we;$aiwmtL)(R#b<6^3K#hwipGdbXcU$)^p&m*E=b+OkTBVk z!q1Q=!UFrR16Q^;4dZB=izHxhqzEflVmCt#+?1ywSGQM}4(<4l-&DGnMpqRwm6lJ% zjhzfbg{#u{QvevarRZiZI+qI;(m=axNb06KU=MkGxXGnDEcN>*T*FSqK+02*^E!T{{v}u4XkGhE1H%6BYWrSD7jFW!J3aI7x>23S z7zrVFr1hPTqkYnrVI3+U{g^3DfNp`J`xW@Ad9SUH17T{@xnnT19r9?>XE##WiZXZG$C7Kuks|NmAbU%Ylt|bFc)z#>m}$ zB!(enL?=Y9_D$jUEFhl-+t%=W8n-dm@r(8F)xGIEr~WVwlrCTBp5ArOsZ>Bj|LgF=)(5bB(BZ)dUnuu{5dDS7jwZC8V6v>4P$Wf!x% zTOVzU*`6k{h%F=Wn)F`S4r)2#q>H&Jr)@^>8LLP6``)xLI9sGN!19?41q|`$XbyzXv^mlY^ zd8nfca7H`!_KZEybLn7L*N*V?DNX;<7N!G)KA_&$Iu4@VL3!#zb6@Lt%xz<fh;Gm44+5Bf^64x8o*iPkf7&T@>{`a9@fiIrs&DVPa{+&my<)Ez3y|#2g)TIOhqa&ftXS!SBe!Su2)n*|6v@E# zkdEP@E{qdi@b?e~12sXUm0zI@$RfXJVC7eq@mB<~@>e>lUBDX|tH+ttjj9;Wq-#i7 z?a!nDDv7-P(+_nf<&Yp_vVA*AyghX5&V>h&0MaNjYunk@5PDEU^Ms5%k`nB-2D1KC zs*`>oB}7EhFq|B~)pP7W`NTgFvJzMz3I_puq@l+CSOZOh-m3>Yg>(m54Z{J14w3wE z%oKMtE=ax_$7cPPVJN=tfIV?TeVR;&)&`;<9k}=U=Mi}$ZX#( zJZiGPeGgOZ4dnQ1Fak>2@9H}$b0GY7q7OI}PjW0qn6NP7Rvl^ro%d=8FQA=&(c%X| zZxIMK(v4B{xxP7~yvhLv)Yabx6@^y=_jXZb#kAGm5y=5gYul-~VvWvNkaPm-E5A_A zU#-cj@Ew4!{E}P@`mx6-wpx>Ms*x2|Yo0wp0Fe}Qcl97pB!{m;JrSyh{!3zxax1@- z5&oqg;gw%XDdvh;{1U|}7M5UWy!(?*6ahZ({zN<5g(n65?oR-buY@Fthxp58q_F6Z zcYnh6IoLm7cUGb6QF`^y@B&HgdH@g%?pmM1UF#FL@(PG+eXJ4Qerk$|dJY;|1eo;t zl`!(kuRw0v3DugSq(zgO0$AIj{aM=~<=1v7^;dqOgYiq!cjXr#1bAfa5CDA*=-yGx zR_`$Jh$VUnUH>sy9P&bG-O;nwjk3UJ2Q?<@?jTG0Hdjv&i!}=R36cr#G75M2cl}A} z=MPYVBeHgmn&_`P_qaVBfVlRRjy<$q{O#~SR(>H}>C&;~4m8(6g)BbU~SbG||N$qK?J&lneLes>qZlR` zgPzsVy*+ncN8!<)wPjE-Jb#+ROWr&En1uqMOakH?2?%>O5cVEGSOR+B#{vkQN}$ye zX!dN->^(rU1a#OFc~mGhiZ>c*S`w08N0eRnqz_#I#j}LiMb({VCvWJtfWK%^tTzFQ zB`6eo^H`jf;k{$2Ab~)mlo3hgLXyM4TlWHZOHlCkreN*OxR?~7B^VXqgvI}YZ|4ib zDB>-xy^8`Dy~VjGXso>{40N$)?M-60_9hh1+IPWVYro|It^F1NLAv&C7lpB%{x6;> zNY_z>3eA`gQif!+9%u<#5cyrglJd6xnV+LyNC|0N#MM75^BVi7NVxhN+i6 z@Xg2r<@^qFnYFIfAT z{=PShU-aUT{_MvObPdhR+V{8jytgRr-0O)+k0n3$A^i=J9W~bgz96%yWIm zL-qvBVEJYCwZ2_{F@2GDsDAl{3=s!Tp7DyRK>ocI?^3+C63edr9XXB+_UC+n z8I2EfNZ~AG6%XBO|IpFB_A7Gvk&Z5?E&3kohd4>?SwC_RJ&7-9J?3`N#n!y8gI4e8 zR!jzW9PE;M;U!b=V61nLE}sbW-xH(13$_8K!Fz2hKR17m-T*{Ttp@(mGg?2vdBNW+ zU+ z^JPG;5L>u7-jX4~v+-&LV0Do3XxZySod6=UqScB=q9UzSL~*f_e~>CvM=L*Pf%ReO z3>(*a>qC+}gg3DF`jB)1>V8_xDVy<+W`8sT;4qM4A!p&QQuW;7gH*>KUkPGGKf%9! z3a)K<*(o+gp>=VJ=nGjVNfo7cMOtD_wg83{kbHhf0rGK&fD0)2!ab|hDo_-wi)cJ1 ziX$rCBl6biGLdQ4E`*jA0g`>H{V1O_>{onV|^Xn_vgbc*VyCYC0W6yUBAW=niGL{$tha!WkcU zLhzR+@q-;YqeD&4Umu`?a19?A0kQhZGV4DMeQVJa_6c+7qcMlRA&+X+Dsbd9!`MOJ zJUi%%vV%S=JLofDp<^=bhratgMP5uRHTrg-CQ}3NRbwgtXlAg z#0;t0=d~Yl^d$ukA_>!I0+Ur?4h+&B=Z9aOkq2YA$DuZ?H5hA;L*RpAz(-{MH~g@W z{r(Z&!EF2SgIUiW2YGt$r5|NGbY^$1EsS_jxuga~JMXg6dX@>vr1Vi_UJZxfa6cmvzR2%#-& zl0F(E=^JXo4Fo5z^?8ZmfWtsy z5(`RKmeFi)gJc)0h$0QdBh-P<@SyF7) z{)ow*o%+a9a=qBp@Uhp%xKU z`0)i4CH64^u1l_b7j z{QjqHIKRVj27v9zx}z^>g+|p6B!^4WZMgK!50}2kkcWbuI(j~feC#0rrWg*PI31R? zKSg8Io$`QIyVv_EWbcR*&No4(d;Q-^FoKrgr-Hf8idHx~qOHE8Pmig@`!^)tVcVJq zB@TJZrF_O$$d>DTq%;|AC2fBY+SVsHoMLqK4K4j9+t#-(FkI%{d)b+^&a%WV!!U&g zL~JayZ;+6bAbXXua(z801ECcPgxDiSI!lJnNQG=#(zNfIHLb5;dh&FpV~+})Qo3|Y zvuWQz1dM(TLXSX5i*-F*NCIl$d@$9j%(B7%0L5S)_3!!v(1rYc1ixUI_b)J5B~M?F zCoBBN_V9mdX;JzJ+tYo8(65f_>>dxm@n0|j|A!$8&lS%HmWQnGkrV8_i(HsZu`$l3 zb{eE?GHQQ6Y1W<%JzeNf^!|;M)98skTd*X&%M6?%`2H(2C-1+)e*c;3G(Qu?S`lZV zbmlR*^2kC5Q3$`#HS0eUOY}2vC7qj}F%fxSjrE^B<}6-d6bSJGOE7-TcJwhB;ZP<| zH09WA6>G_eq9C$m68dSJ!V1&&Fl0?eHJp3o2pRLc62=*%BTF0=H>%!a-N-@|7bOnn7RKlR0f43#yD-_V%pMQu9h zMgQtYPT#zh3MB&!z%wu&6KO7Bt=7$FnYz+folE#E^;`5su-Az=BVL@-toyk1+H$H= zejhS(9;K;L?Ac^CyrYEgN=OnuqbN#{c>O%;BaWi5Fxs3!o)<=C2v}M$MmG?F(Jet@ zEfEQ+q&&3#3P30ity5n>>8^|RSbs%^6mM`j{uWazWXdlZgA3wckPSk`LLdm;n)O%w z01HfF{0awJ8q3yS-68sh0es9c#AA=kD4hK0f(jWb1~EEgFrxDy=!cow>KLfpL8kN+ zw`VUZ2RUpUd_Dk}#A8^N=^!xHoOKpY0?eXaI9CUI-v1u+pi$RnAuT{qLLWb)yG9qC z!8kfx+v5yUM4lDCA^rLW`}KEfuuxqL7YL*V>^JcnYjUA#?MYcy7dJ}0a3~L3OIRPm zRMiU-M;_56gebrq;RU$TZI?g?4P1qumaN83;{hpmF8D=KiOF)HxO~@r2l%cY^h^|? zalqJS;5BIx#b8TfqslYB&F=SqPp5)ictXzmKTxeDk)1jczJ`|S;yAAI6)1SagYq&` z_+eL4m#RJ2*gb0%2uOCsYTIg~Sf*7`bf<>NFnvHD%tLOD`?RL-VStY>Qo7f!z z%CN3taZ%n`j}KCd4^l_Fw)Q4UB0Nn2;GDh&P%<5UlN~@jQ+R?};K#af%vdBnbTE`g zaN_#`m37j1<>wggSa7vQcd3x>=asQwXR(bt7o-%JIu-+;(0Pjqn1kjE9Lf}s`AIAf zznK6^FrqDw<vEV*NzcW>}7hVbj%Fx`}kE9!BO|2W=ZLwE%TkK6lTo`us zM=AuXKawcT>W_e|^gUIbT4a5iVhm5aXZ=r<%f)Mk%Z&t4Y=1(b&|=h`S$$|Ri0#|K znP`IgmU~LJcfbFa7?1Fbj_5Ofp^VnHd-pjM5H64@<}T=gzw87!zX8U;NoPZOfS^L` z_ic&3V2gKN^(kI=90c2jM~nSZ*&UR)3boWhQ4Fyla$z9YX+A*vLrLo#Wmf7OLY>(( zSwS(`Kxw>KnlVoN5%Hqh5ybDfJTp6(0rgZ-qYFY$HnvnH{&QVjVI9>AWHfAWJ`5yFgEHvd)`;D*pc|OnL)B8RiQw z$mCk!Z+l{+SvV=AoH9D#_;>J{FgT_JSkFQ^C5q>K42jO%q^^{O7cWB?O9YI3k~e$U zJH=qPM3;UlM$M;CasAZG=*llTqfg=aOuSuBK(q^{_S2Hb9Q}t69){7DHiR0SJ3#Rw z=8nk-6h40`@LcfvuKu4IWA(ctCR{!1G=={kz}|QML`Vb?fW=(n-m5$LWHPjsQvJ00 zl!nQLDtG?0b322$^6Minz}_dI2!n)~1g~bWV(N=(~68z zVnW7t%-pBh2mHD=^Yd+5|1yneNGt`hy_jS(bU6Lr@G|ftMif(*=cgh`>hjpLr^}u2 zE4LZp`@;v2Tj+H;4;sBql`~jJ3`G)>_JBTY88yw2SFLwJ`^trfs}Ni6-47Xr&9PCzX! zV$nm{7J=~>2T53S8C$+OjZgUky8Siyl#kTw_H29_-q)7B8C%BOUO9ek*{`RsUJ@0> zxEOe9ZJBRt%XowOT3a@+oe9i-$7j4F#on=OCIeNLmkrlIkH!kBYOjA^^?$bEV^R`Kq9d7*cmRg#y*h8 z81lycG49mllf)3^sTR_v!_#bdS`1IE@N_#oeJ4Dvgr_^<>4Wg}o8jqSgs1O?r|*ZS ze-oa5FFgGqJpF!n`gh^!hvDf*;pvaU(~rZ`pMGg?Lb~(2 z9@3rP6(0Ie^7sEjgy+s*U_A^!e#YJC5<=PS6V%^h3vg?35=cdO zyG{G#+zB=kkN{lFr#$HblRSMvxCP^P$Y))Z1ZoJ3#M&Q{cx!(sZS8@B#1Os)+dCNC z!!BTe{oog99KVQ-$pQh;TCMAhyiP!vO^agzzQB$);SV@Sm>YPzXwN#QMLJL@6_sBO_Vq43Jv@gKemtT4Sv!q?11GF_59DneMdOiPJ?t;q(yjW zyY7K>0N?|i{6o+WgxAldpTHf(rIHi4bcWYO>J^dW@_{#A8Tm?5bGsdtevl7~ZTj$e zG}5q9(JycFW)1r~A`d#x0d2hlJ>GB00h+_PxRg-r+%2RH;3n^W{5y$%XYiL)<~{rk2XL^;E~kGET-AHP*XoCE+~6v>+}(v0H}f?qI4K>vHu=%Vj-L2lF&Y&oWEba)_n(fi>OddCgHXK`qS-Y3l3HTV@%Vi7jCCTlJNmK5-a(D=!3_Q_T*Ezz$*Xw@$5D9$30yIL=Arr#$n~h zkJSVcJ>HsPR=xuTA64yf(#v}Vm%ON?A9qi-%i=+I6)+Tv4V~~8i`Zod@5%uDlcsw%YfXJ(cwgTqW)>RubaO8cpSM0Z-4=AxJT^+8^tTrKW$mG zG$h+2mOw4d%N$MVb=Ds5tUs=u71oISfm`iL*(GP{AK1onV0`xgZjQq??RM3Wo^oDz zO@%tDdToV*zP*EDh5sGwzz2+$Uaq$)BMWnL)%jZG;>>)#GO@6LdxutE?{KSMmh9e% zdb9QU%GITtvon)ltS>*;*EevgkN-P$R({UuTVLPlz5z+_`9lLkgQxlj`&m-b`NV%` zYW-8yp)-@Gs`c8rslMvqK>h5gYPD~wTA!-*)#~T!XQyhXtM$pVQ)kai-Rv7YbNck; z*}+qj=gyrQ=&#=#7`$0ObFNxDR~xELPWIPocpex$-9I?c-#2isukYrWfx*eCb7%X` z4V{^qJXP;MbEd!V?9}AxzB6aeoSGT{{K0{~`niF6wQs0CSwB@jJJ3JbR~@QPq2>P5 zr-mj^P4-Qm8=UN~-b9mUhiaz>1}3Z3(?bJjZmL>4Jy<()3aL{AwffLh|C#zwy*ky0 zw$34E;B^1w*=qm5sln4j{bvXIPS+;;&J7NpI#nA2p63Q-3^*Tx*`p&j(fOIz8r8+i z3-hD5C+mx?nT7d@>Bhp_%?{BlFL!`9FON>V)TqwY-(G0E@%b;;8%-2??yXb3eW>2` zaLBqa(_EabE?-8;PqR)XQ)Zw*I^{+1Yw+ zWTDZhPqt>4w_u2OT&g#l)m!zk+Ky(uRb8BUqrN=RwRL=QVX?lw;o(elJvdQq+^V+@ z>d?wxFWkLWsJZgbKWdaZ>r?lO%lAHNTs}3q)NC!xDPivytKa&lvD!MnwD`uY`$gw} z{HW2{GPSU9zsUSgA2l-D=4a-=2}ZwPgg*Mgs?W|LVJ!2b=Xdpm(2`J=)>+22%p3t+BYECfm8hw!hKgrbZSPmm4#;rdySPzW%{VsMK2# zlTevyR_3a;dS!8;*_^pKTd&+)uC%7>l`BiFdSh~_@m9U^5;;>Gg8zHvcbgTMnfZz; z)yiUHf%4jmTR`bhX8sb9f!@=-eTq|k{=}=}-cS9kdZwN5cXkcW&Mv%tX=%1Kvp8Ev z!j7@|>3UvWGL3 zeE};!db>IYdZgv|X3F~l%`(gnbhxf-)o(2{UarsA!50gSZT-Fdy?q>tSbi1$W=Yq! z&CEAjke&Tw`kQpFF(V%7R_Wu+Jo|_)ZobElWoclGxII{tKOWMooOvU4wXIBclw#(w-#n<^vfYBZ`DU;tIg)f!qVa_ z95zqaRq%WXN$IBzFV0}XbYR?`HYTgEPL7c_Bv2&}I8RL@Q3)d+EUkNYhCEbSuSnb# zI4vbq*`_+AxqnucH{ytVxbCX?WO^>xSnCY_g zyNwlkU~#EAeex>)6g&Owh5A$#KA5@~2_~uL$QmWlBO6=o14(0oYXaC9_T|%8#5KEtc;L;2CY%=Uk(?+kz1NpU zoRQ(aMs>0Uk0x~vkC)c#_VtuaUYdc!o;Z{d^Rg%G!zdYpoD*DckwsFVCrhjC%lN{> z&8yYcbiQUp0$!QKSi!(C@k}Y;!&!GxeT;-{o!b}cjd>xywnRES6VlU(!sA(Zm{lz< zwJyvwG9b^ER;^^K`bcl4qVy(O#IZ}&$!P@cUz@4b;hVJ>Np$XurO=OMp~J16U8>cK zjbxbbHe$>rgZM}m*3|~A%xoReiaFR8TIFp)($)`WYu&YN z>HoP>P)D+$Fi4F85}U7n74uE3`P4Ffkm_Tlt@meJ9|s45ofO8{{0IcJF;TxQ3fIrL zJ%_i^WXbGgxQXc1&DmvByV?4KrRW?;>c6yrrH*1h@}i!+Unqt7SZ1=YxuGf_^-2cP z*msZ%5RJc@ayir?t zdp@nzMz!O!iZox?Y?7~|59G2tYQC8b_ zGz;=YSjch-5{PZQf-DR_6m4kL)!}wPwZj}^KIq(LA#z2z4a7}>@Xo}C0WrQjcM~SP z4T$|36NXIY6*9{Z2+`!E3*h(UhwlRPbqk5k(1h}&pd={ zOY_6?)!F6djMYXYphUeK%~td+jzYUFn_~i>!6WcODTrfP5M%S=D_%3kszF(D6~KTz zTMFcfERg7~WC;1zN9W``Ju%J24fS+t3-x9N-dw8==jP^2tFkafA4g)jScMnrZ))rj zSR9$1fjj8cR625T4CB*_rNlUx%vTG_I5jo&ZUopp*qU}S5NG}qGjsI?%tK0QiTH49%#CNR3ae2P9-e)t-U8`ehYKHD}xvp$u?J_XNt5YTJ#-?i4XQzr} zY9r*CHaFJHZKkyu2<3KbGi`Hb&KWXxX|;yMt-l+aMuz?MK4A-*Zhwl+mL$c@jh|Nj z=MwdCf^($7foI0Jpf(4|9dBWdQ*Fpnjzmp3!D}^^I7h>xU4F9k{A+bgk>-!JD)U(1 zmc`M@SfTRv^vvXRr8>#&TFnaJ)MaB&1!Y=ruRqjG>7$wJMw%V#aF1*7e7ueracgGM zYcbB4L4~(4<=f=KXaxF?`n2+|OGf;&GUENuTv)ig&>E?>CZ}~FbQZ?XZ>mFoONROq zhWc&LrP5lE@tc`ns$*_^3(PW$RX-Yy>ilx0-e@c|DsR^-aI3I34w6+c(h^0RzeS59 zUf{ir{3p31EB`V>WXxd^Svn3PV=v`1WAMWnS-@5c-L>{g6^o;~VQqYAYHH?oQKViX zzj5n9b-pt8rKNgfnXwKDJz)C*BHe8W}1}yN$rg`*Y58>su+|t4!Re%8-AEUduq5cU2RTRn%E}n$7Oz@C1W!) zk3A?xw9+jJQ0n?W!8H3;hJ4$!Pj$F$iyDRZHf=9bhL;e}YBbf9NJC8Z>jvC6?f<8P z_h}fNvD!{c#HUr&3L$Y@aO*I~*m<$qY^h1EaWA(2-$%4rpluibu`)htYqQyYWDP#< zO-c4Pr3;#ep>fXk_v=24SLY`g7{%OU<}EDZj4agZMLqMppJgm#kJEC6+=@Wv5_Z)g znpvsC+AUWQ5R*_=1#Je8Py){aJyS_Dlwcz^>cW{;&#XV_p(Rs z>5<`qfq^s6#K1yaGP2{5*Xq^UmHFA_;>_=H8A}XfL-+91c&_F8rHhDOVCU=X%(v=| z=@QO)jFCg^nU%=l=xwY#)FpH{Gs*Sjl8E6GcWjjVoAWX~T^MLTKHGrp zOwGAp2i6zD;{F&mamfy>nvjg4AI#agI_tFU{ci$NVigrCgiy zi0tfe4=QK-1marPJ$3&dd+!5aS5@8n?|bf@nLCr@X6ED%3CzR^1Pw940fGh^lxSju z21S7ye4+#rozw}0kXT~T-gEDrKY4||phQ854_-qBg&Hg#9j1HDY6OjEs=efsi*pSMDu=zdnNaFlOYxB4P!71s9{qgF8w3t}fE%i3Cv zH{|m`mw2=q7yk2Aeow(o3rc^PXU`&Ao70g9=WzXwgSGh?v*%r!F7oFBos(V;yJnFN zZODkzUhU%HaKAss*@V}Yqk$FYziR{M7@X67ru8ed;rC!B(Z73O>pn%(b~f>{uw%<% ztZUlli2(*ewj7U-d$8C&f($1er(E=g4FdyO$Z@mB?9rO$hq7Fwj_P-=^r2h7YaNH^ z4tu&d>;-j>0e*k;phwQ&KAod}&+1iwbmsZ;>W;cM#yT@v-m_w0!>axL8MDsdm@Az{ z`&_lCp=CS_26>4u+OXEUfsfvBV9C$SFriernJI_GWac~apIl6T&+QWH?fV%|zx@V% zp_;#$nfYtA=Cp#FwEt#E+j2FvaL`?n`?da&c^?Vq-tvAF_g`5Tp(l-Q_4Akc9DP8{ z=R!9;KcWT6 zkMiR`DYWqECI!d+Ker}v+~=yNTL#x2js?dYn=gZ})-?^RwqTvDw8MOC3bwlm4z|H* zu~~Ik=YGE%_QwWIW_w>_)}5U|!c1Ot{>n4Y|0C`p(=z!A3?hyV_j3A&ZE$P27U4ft zb8)(|X_rjXirN3Wkq(@>9TAtv{4TPl4als1t=CO%O-o(>srdMeD-%a>%W3S}GtT^l z41$B;zZxUtH(I>p)o1?xvs(WXpH4UbzqTknt5iJyZCU+18~8{4_NTAn!YIz3_u;xf zrfWzB}IUFUIVPZyyuiJy1DT5T`2{o3nnuj%<0u-iaB3@!y+w`%2YM-g-N zQalE>zgI-Es1s+;iHqj>nT9?8BDo(04DY`k0X@V7biLolEZ1xh)BVbSE?%|L{Os8< z3-_~OF6cdX;DYnmzJs@H)y1oN-^s~XtVVo}y{m0I{CeB^^Uf7WwqK`tw(C6B78v{X zY?t*ye$U?!b?!mL_%~e2_q}tC-FwKm@SkKY|7nHu`O$LEPpMDKgckyyg|2%L?RpT@ z3#@(?SpC~$;sw7gqlX<*?EDR9w?-}VgVp4HzbzVU+0JN)n~1cJ#UI|t=L-LoOFvj^ z{2DmAx&L<{P|Xf9GV5|?e&@kY^4`F9qp(rRCUmEqe=4VHR;@do{pTyzZ(!5+fzGnI z`4mroJ$V)*P$uIIgaBRjj^snap+>EZ-=e%c&8iBqaqdym;R=nttM^dRli z()m0DaDB(q-O^en0+ZNi*$_$KV8)IF_eJ>60&Vd#0k_fN`_IHn>UxWMA z!Do|=3z{_LDC2bLPi~gMv=!@RyXj7ecmvSUFOcy&$clm19TN-y$uh=-Zc@m|q`-=J7S=v8X z?f-+}sv~1IuDp5G!0PZDM|0S+!OyXts9z1$j*1J;wHrOLfpN&K>K)(;Mz#rFq~Dl4 z&`gqb$rg{^^R$al@m6rU;g7;yc)_DbD8r9GOM-3jyF-aJAwO~Zn;E+YGNa3EE5_3} zcNi6t^#>{DHy-d`0@wY$gt=vJ8w`6_vImDYScx@fmzX^-h3@xbr%n4R|J^r{^c`>$ z$?7~B-72zr9UA-sHZUp^GA3BM89yPn&N*+aMFSs2UMXaCV>QzyTnY4)&g z6$@YI_nyz8$goo?TpW7Ad2Ewp2coWy`-HF68&;N4Jsw{=fz2>WT*Q#EH`5`WBq{2K}m;?rjLyRh@CcnQQUZorkaDz%h8{ z8y9m8zm33LOOE>ICq^+n6j@`%hE>mqv%hYwo}GAq{A|kS(a7hzRr9=|u%dU3Y`cs2 zsYCrTOw$Z^fU$I4?*->SJ2m*Pk&E_1Kb;UyHzA&XqJ9Ep^*cAd22IAA_$lYV^MbJl zm8XOsHu5sguNp0r-0pvH`OVsefpsaLj+T)ybJnd|!=dr~G|wCLBNX9cYPjZ86AE$}5{{P&td0KAB+ZA`c{LJfx{DJ^?hCUa}QZ)~lk^II}h51dx z(!d4G&$#_Gy0h#azCT*Aj^AEa$V#*VKl&Ux|L+PN|2EI7L(hUOaNsb~r;Zk;t=7qy z8*?R;uBw(yoEK)ra-wpc4p;c^Jhz^eC5LBj7d*p-WBs1vv)4IZmv@ep_UpNtPqOm2 z?t*jq#WdVY{ruW_>?|yl$as^}N&SeH_dl4{+-3f4Q9W2Fo1;d5&Hd z2}54~9h9geH{E1<%n{Eh`LRbFtjV5R90GDc{h#svyBTj#JFK_}3jzr--<^ION1i)v zuY7K6_(EyV-&Fhs-am)Dmx=IOQ1&l9xN>C|E)*Xhk>!S#Mn4f}!&99#xuYBV+1 zX`?@{ekdd1f@6<8QNO_GH#=Xn=puevh#%EC(2{(U-Mheqo8_y1_B3-DC70BMvDp72 zfpl>E4GmVfurSy7y+{YWgrR!#7{Z#2h9hk$Ck)ZAVbKM%fEX$qPp$qLbZ|mi^9Qs{aVTz-A~Fi_2~RG{wQwIdT!f4cY}6$tzjv5-N5Q| z=l1@Azftw1@cYy>GNr34 zNyn#CDsA@KZQsWf((baor`<|bF14n$ZLMIADO7-~4UkI#vPX)oUHt+sQIr85^;t?; z9ZV_~bE{IFUFc3)yA`8PuRVpzc)ln+t=?Wp5(26ZD(TfCqWW!L#vUK1r=s+gNqK^Y zleAV&8;g0i8xFWK&O^0bX>D=9X1*#Dl1dUV)kiAa+* zE|29>d9o)XFb!fKqMpUp9@RD5s8r-u-5YYxR@!?br>Xjgu{S$YHSDThAIclNCns_6 zo{IA5DWvrsAu#I}e`;M5z}I>To?P*NbttV?R_$SU+D|Py^KBxi)Y_A_OBBx$P7U2yY<+4|A(#DZnaS#U#j5JDNRNik z10WGMtG5=@+Lh&WXl=j`t?l+QO-r4SbQ91$CGab}o74`io#wH0knVsnA@CX1b{Cqn zOae=W)>2r2>D#sCIlLTLT7Y_{*@bDgPo(ZZkh41iABL<7yM%wLDQ4|4t3UlHyI*0K z+AD&t*RJeGdaXW&-0unXtM19WV0Dl2=SdZS9?S;30yE@=#O|u?D|FS5Q84{1TN!}b z#g^wLQ2n`Xx!9sq_k^ZGH&p~mH>O!{9zW8M_2vx8dMP)Tm)=n->&J(_g_QP_2~N`Zl%mi)3 zU(ne!ZKaYcaC^yFSKko^6(Va~spK+O-%-h>r?Fll+c!$Le+L!HtnPuTnvFP{RiYG| zgyI@iVy{S~tJlh=CutwW?5bU%$JI)Becm41^QhZ%@@m^7J^hKYJ{xVCWrayjeAuLf zwR?F}osTg^JISS1o}x~21pksR_dS{TAY)R0& zo>QAmJ7-H~=Jm)CRN@NNB!3^JZ!9{ADaYbTdS%EvmK>}cU-H!!TH6>$p&Vg#PV2ix z^<{Y%$p+JGP=Zt6gXj*QW0eyNCL}G=UA6mjeZu$`+6fY_u||p*U-C9X#vbcmM@8Dd zSEBs+canyB)Hcdu$xdk=cqOrh?CRGmx#`JmHnu+I$JUI|HrO(P%mNcGS|Ro0(Xlz#WdAUvq0ucj`n?|! zWXJRdV?5WNUBlM|%~b(}s%&v!L3VQ9s#rw9HiJV=7FRYu#K2ahfd_W*%oo>X?Cg_1+=%%%A7b_?a#ufg$skp3mZ@i&mMguYALf|MeIY=gr#bjUGu7_Df zYQ9_2`WYY^3l9rfG;WlN596;X!E8Wbm?gAyb0Fg+e^L!*vXtRFF}B-~k#$GO$`J&s z!;BG@bF76WTAmpiRs&n={gtG(L;U#e7#WF*zFbzVHK5xQqPvD4P!s!6i|=nE0OeeD zc`Q-9VmDEnknkP{{%#7-o3wk>2$1M#6d(4Mi)9)scZ=25W<*if+~!*;3=GtGhefKD z{jg)RJ{vQV&}1LZ0^)4dN9;k*V6}-ivva9p_GL2)WVpIFj_?Re zAR{*KPN-|#k&}&d`79;-vxB8zr8n+M%H@1CARkf*Ls&Vlz2&Y($MV;BW+D=hvUTps z8Nqxo&uI)Y=066j?$DT=w*>vv3~CX0iz)hMY1?HLX_B@aL7TN;kXLVDIBFLUqo7oJ z%z%)Zrlt5SZ6FBEaRm--s5>JM%`U?;5$<r+VDXW8@a14K4*5T&~A71#H!WsYTkDqK7nW<0?Hi@yKo$q+A9| zdUQ)AHg?+tcW|~aeTwiU<-1I;r|I=adOWPhBYNDaPN})A7$nvYHZ<>E0_K!bdTMv2 zA_nR8O+~$`8WR}dDtRoS)4ARGt6JyOZgXKU2-M{9=u;R&g13vRHh69aKfkF1=dJ}2 zu!Bd|tIEvuBvm(qso%(>wvx(Z4~{KNR9CGsQgBsi>FNVKtlL%}7sb;xDhU6i9=}we zhL}uz%gTC;4=tG8om;AnCnEGzg!bjopm|Da7b@+^dWgfdHB?J2l|g5k^=tkzyes%dN(vGwYpUOOEkwSfa(_IbyMIk#h-XpZ%?v4mek5wt1FqCaOy^>zWZ%>?DDTHbkGh>ufQ_*u z2e~v%J_mE2`z%^s($Xs&DW_wvIC#^-1r$K+j^g*Uj zIW8KH^B9DAT_cYO_n2O<(IcPOSr-~o7aA5}!&c1jHaK4Fb(KjYo zxN=KxQm9ngdW#@Y8@%ytaVB@@g%N~KQf4E1H_p)R_Fh9VsFYoSafGnLItwi`m;|0( z&~rjE!-2Q2N@biPX$ZxWS_1AaI#($7TI{r&V(_Dm?}cTIqC_ziIH)VM5IyY{$>laB zz{A?Y3+`4`pth~dSHxBuhOIUff2onbRN!PK$sVyle6qbRQKfmfu71VRlL(ji2$xs^ z1HOO(z0_yfOMO51?2dFzXrN2Nn- zuWb`p=}nNDZ4`p5q_%59{%U$U?QKyYvbdaK+fXFUQIv@8CERk|R%vsz8?h(!mWVNM50ezoE4E3I!=5-jQ2)SO|3Jk#nE9yP_s z+dk1@j3OWv%8<`GHx`k^#ja;gdTTJ^!n5li%Z_(>g;C48B( zxNvi0Rh2s>J9KrKWX6^Ws(XFAA?Xpwke4swWZgtFikXA-lGSahj>#6(BG@Ljl>{O@ z{bjWdQ3$h48TZsbDm~qB7>kGcix<^L;RTVLPu5fEbe^C{IE7YJJK;sRy=UF_RejV* zs+Gt4^nuJ?7+c@bMsW-+SCo58g>*6;Rr%$#+@cIsm$Xcmp+}`dKAcjD_kk<1aiDVr>IqHjwvH~zpY0~OuBKHXe zG_ALdk|pA4eYOGH@#ryQGNob_2HQ?UGCif?$Ph25m)pU6jHbbRa$eMTL|)W)SY=pj zaOz8Ru5yQC!dF|VKBx{xAGp;j!@D)?@-(~CBeL#JhnpDJ;4GGYtUe)No=H-6Z&!97 z`9oQStjOt-3X)o=SkLkOUn(Inx-qDF&?O0dMOr%H4S7qXPr9;i8=2W2g|j3>I1WJd z=IpWYsBFGukWp{4PqRG}drN7y&s@e&;VVw8-#_SytL`4xi-M3KJZg$T-^S(#DOjym zvurvs(R;0xXlwXF4FJ?hyjIT|EernqOIbHuQs1J9gz$WQ#E%Kftqp6-#p|q7{4uSQ^Rr6hGUDv^E#2#T zrhJ&y-C{IPg7HxY_SY^p23p7L&ym?mi?q@6*1Ry5U3Is`=%L_+UiJ;l+qZThMzb$> zqv=W6R>o<7m~#GT%J~twU=+C^B2ODdp4Q=eI@7$0n56Zt`EUTWIzQJN8IG}lJ1ydt zrP*o5)jgz6w07+NfLt=@D^X@H^0d77eh|w#mZ4ukc-Lr zHtM1kIGz<)(}c0=EE|j9?VJM=Bat1cUD z)n)X&vUC|UQE~G!2|B)~#loXKk}^i5p=vj%f2LC;!r3{p3ur*=!HvaHfLWUy4N%t+ zqe)I{Q9Mbq^(ff!^hFP`P>yW_aTj)`wE{ZPM$975WP(%{ix;-~B4exREiuKXHLa0K zGB!vtWf$ZrCtANBeWwfxu}V~>Do`*LGaL9u0*a_Vp)f(EXS{SYgsDhY(07^MdMczP z(h^KFk}Q!kcZn6H6rScJFFHq9F&5YAf2s|}A?|qUXEjxx=sLcXtr27pZ&C7V+bo8W z#USTN!oO#o5xZKNE}7{3$gw`n)@bAyr%V}1G??^s7R=%sodmF4q!*^sGu*^ZubT7F z4&JTqGn|Q@)~c>FUevB^M$oH<)m^lZvFH&sC1{tS zwc-O&EtqVybjzPrZfLDKLG4Q3yE=24$RdMk6+|ms((X$7f&)M_7Z8@7$0eh<#PmC% zlgVg?^OJJb7}voJH$l|+Ng)R8R4YppByY|N!ia!4y#tN5Om0~)XB4Gc_VvB*7BBu< z`jyRW&0tcv!}>M&3pFCu9+lp&{n&S%r!4AIgiWAPX&xIy!XzMDW9irXj4xqn*xv8A z3?8%MA0wqPF1v7sYe{QQ_$;zDh#n?=wkFN)N;CB3dLv>dF?{r$)D7|}SrFr(AcB;} z5L(0DS(bs7T?jpN6`UnyW2GPe2~Yxs8(Dj$80eSuAeNCe^!ZimaW*=6*mLS}`>O6C zb(%dceWann^5UykSw3!AJ_(K}PX_LX$i%hrN#4laDyYjZbDQ>~^lTtPVQ9qg_3XaT zhzaq%j#Pq`5o7_xlPe>--v$D!52H|+7-DR0Gm5ibV<|p;12on#7lHWNVhgVyPjU?q zezlv?!qjPaB_{D@WD!HF-xVsU*n%1C(`;>cDNCQBJeQ+Eh%BFm7LgI6)d&VGkoha( z^esM;7!IMnaN}Uk_o4{A?PiTrNqT!*eBWk*M&)pec)b^teZ8L?5QxR(fCi)&kP~K- zm0|?w&14d@9_tNC>N`opz`T<_r-_5_FSdBEDym*u$XC5;lfz3JQ-?DD!nX*f)*HR9 z=38<>PBe9>|2S8aMqVXe80#5?H)8rRitzyH1v&OeVo`&%zB+BkYG=;2I$hoEn>Xwn zFs8AeNO~Kp%Vl*!xa50bnf#z&n*y9HQicd(ruC{R9F1w#Hx#R0^-@@S6b{(@u&JPJ ze)xgUW}HH44%Pb;Gx!?|O{XV}iDJSf)-d%Qhd|Ego6WLqcY~UE=$2ri_fYzdai}vt zx@dkx9qa`t3_4ySiAGcIV1Q2Rvo!MLaMHzCqB)xaOd8@$kpgQ2BxjApQrnCZ1fI&Ct8Mr7ukZEpvzLO%wTyI0=J+$b z_d-|_>C4(R1Rw!yqfiXd##~)JN#cBE^NX@DQDwEOb_KNXRF?7UYQynFcWJ0s9x_hU z*^mS&QM2>a&q&CUqnQ@9>&ex}wb?hTZ*64TLye#Z+Vurl{;l3W9bs2=>x#BLL%TOH zj*=JmwjLzJ%o*YnC)=cG=CiUb0(7@kVrsTY&-&nmJ`LtJLV^>2>X!)s%^;R-f@)Uh z2(SszBsbAB%7~C}-TXD?sz&hT-?j*GQ%SZ7`%PK4`@9gydBIXr1ys~HKPq^*PlIj1 zBWDMoM+sZ`?C|7UnAD3;Gq%gKs2OFNSJkp)w4}Z%%Q8hNnSRD_^|fpG-8C9I zYj>d$cvAJ5xCzk8mWw^R>eorP(vY`W)O+ZU%6Pd<9Y3|TF#tgdL&2`t5W8py-wwOb zRkFSoSxP#+%v20ndsi0&gd0dejsZ#_6^&5^y98Cfq}yJ{ZrO?9lcl}V{r34xrCPQX za%>`>uivRd_@S0>^X3~e3ZXvN<}i#^7&B&H4`usen&X+Oct~|)7mszpeZHdmOs_rw zR>mL3v^w6MWt<~?;UzI{+=@14L}rb33!=l*_*mUyL)knewMAnm!<}^g8vOL6qF=A3 z84zc|>i*=FbWU=nuOtbCjt_(Jc(x7s&LJrF)=jd@g5D`NWqNxP{DpC*MC#L^ywYWT z%ERW8?jCQUT1-gmw?YBKUU$V}8LmC8e@W~ZUaGnbFC{ntjI9B)2o_nFl{}1xMS4+w z_gTlw=e(OG8UAmEwc!C9k@6TpI>v_kH2Gd7+H`EN>EyhqrY%Y+1K-*?PF#k8rc7@I z@H*C5!ka0VI!wkrM`Ia;`^)$eQla*;O=6qPxn}ZZ)8_hR#siB=jGJ=cIu$?)n(1=l z=IB8hxU8LDL8fXed<`~eI^W{kdZ$?^+i)X7Nq7lXS?&H@M_I>&Y~$=AWK8wt&$ROB z#wsZi>s;4Z2lbt5o5A3NYV_~CsL%M9n9jeNyw{gn4>A9Vwo{!7>8$%}5M?-7h_K^2 zw6?F|0}I-{z7ULPF!fw}P%(K!W}0iV#ByF_<{5$Px-wCT+q5h>Xz0svv4wL)hmxTG z>kBL9Bk~|Co9N0AU`++aa<_0Fu+(Vr8@%dEW9p?S!qL=A^VH%sm8dVxb!dI5v_&0< z)CQhZf-poIZ1m zS9b#?2G-9KIK|jJllE-hgeGdlV&#C48Z6lmlWR{PH0H;%c|}>n1EWiQ03A`9;h4lT zyv)Gqy*0t!phY`zE?6mH(+PGOImim*5BdVsskth!hE9zitl_h&91vJdhV!DZJ{Z)f zJe2Ah>wDUa=GOwx3B9gf6(gC0)%wwfUYcau;F_2!K3j!xVu28atmR4TLbo?_`+Tpn{zrX67wpr*h~l&D8LM9jNPDUE40bY* znN`te#Tqk(r*-BDdJ?rlY8qDa5KYf~d|J>ux7C)G5}VZM(i|}B^UIpr;pbZbXwHeSxrw|Vqz`%+4Ju+OF@ zuM#T_-If9p`t{Cv411?w@6Xp+6~ipRLE<}V;}l{d+!y+G4)ePmaEiH;q=PT9tv=oh z{djwMz`s0TFJ@w;b^leHZ>m~VT*+!24LZ7MlQz_fJ7)guPC5#_puaUom@cB@VnlNY zInm&wSt)H}aWlpmu(k~+uX?ie?8ZU>k;uGGavr`w)5E zsMkVIi~6{}+4j!hqVGeDeR0TuUh~XKW1uzFV{&f*T1g1vt0H17k=X+R$UdSmgp z+V+FyXarIlS2d;gZ9w0Pebze*C0-`$a^rcS$Fb)DYJ0q=-+!?$mz+X#qIzjt$%jPb z>Llr6J|AAmOPI;|f;e%uYm5@o$~Ql|lz#0JD&WTxYPFg4)7U5yYT`pX!&~%o5b=^O zG{_pyi4d%&ROK7_PFrsh?+6SeVC<$T=CuA?rDvy4jq}K7+DtlBZ8y>n=`H6q6sb*B zQmgb)!!G$6kY;OzZ;POm?y?^$@@?~2zHQD~WFwQ`y6Xoo51WfjIiIbJSqw4`gjX*a z+Ie7_WVUZNeX++w4l^Hb7mhq5%Qk*M=q_n7IrDc(SddxkHC95%Ij#5SrXHpe1?Mqr z#oZ!R_o4z(eRxOxH#%%$FekNmNw4r;Zq!wioLVWl*%>RAq*#9pc$pc0_GKg5Sd_}G zXuFqp^4ju-PXXQnr~7RD9ylyWL)wEemnjEFG0fG9^|V)Zya-^FRW(|erX?DhnXJ;V zT4hm3l)9y&f)r@q@Q!ga2RlhjT%L+!jz)tlR^{9BOZ1;nj8N2{wkOigZabYV`)!C&EE+US4DI5zU1M^#0EI1LI_~_m6|1 zdX~u`E}Ljmm%hn<7nrBWvL`7H73lWjL5NS6%{E24A6o5i60@m$N-&<(0>&efYIW7i zkMWOz3M2|=CwVsSpf>}h5jMx;d+`ECoPdJO#y#2EYHG6C=Be%0ifz*yE1=D(O`b+@(@VRIU_(7zS=d9eF3rt>xTJNMh>~S@&UzJ!boT4669Lj0p^` zrRJUenol%v)OdHLj9J#&r5zdb>`m>(P@7$Nh$wGh*uhU3*s>3F{={m~SQu+GLu_b@ zXY3!1&iW^v)Q7XctL$*Rm|8F>51Gnh-)JgN&n=Zok89C1=pZ4T&~hjeUO(etfo3X0 zu(v_{D60O|8xS;8GPsVtN;Y?Q=X%Q zhzV2{*`1_^RJyooP-w@laYdf2ZMjmr0p!w7e%MOwOem6erY^Tz`4@VfDx1l#qHdIU z*f4>1%JZ-Hn@pe%S@_a4mx)Nb)bbw9P<;FP)w|ff#>73uu-+z#K)o)PVgP3n#mOQ6 z1_G#quN=y>vSxmPjS(vi$loM$-8JsV$scl=;iegmGL-X}AQQ6216mQ-KMX`C={!Ef z(7puao2RJoPIuF!uexW3^JRPWp5y4LFq7>W9yrxBhVL;rF;121JG}X?Q!BZ@Lq3ik z4S@pq^D^A*88QA4*2qvvh;1G*zF>Ol@VOm?$s4cdKXgdTFdHobdA-mWC?G_e*|?nF$}m$-V7R!GK>(&-io9^$rSM@9qi_dCK3XN37AL7g;^#iuq-mt(0Ig16~)MCyC_x?Lk>{wEnV^ANXS3|&0TXG!_-ahI&9)h9w6qpu z3H+e#D(T1_KHICHj-0MC;h6%vfcZmBHD$vkGV(|!sWvQ77Doh_n`r7|ZU(bQ{ayj= z0y7ULOEZM=F!#p!`73Ixo4nZI&$CAdOQ->dL^yik`KG=1etO0LhNM;fLVb0!*w5^D zoBwV+Mg`EskJ?v_O%;|8duJ`tBl*mf2~l;g5iiba|15f3p6Pa}L==gsrR;9|YG^+a zEO^R)?X$1JLd<(l4%M`K3b&GFd2%H$jQz0LG74kgqJ=c5p7!I{uC(Y^29NLU_;#&x z`JLALY;NhfMKbKIcFQo|tD}Cw#)oXgW5b3A!!ihOH=1m%+-Gkf4K<0@VG1C(GOV#R zb-dwfAg#7rh|e%AFDpY?(0$NA`}Sc6T3dT$8yQk#kBu{nt`NtX-4ZL8swQYA>NrB` z$M{nGaA|1FrjDl;h&X#!X%jtY2;}n};M5;@7Gd(*?HPtBGJ;4a1 z{kpaEpcdrYLVIz`nuSdsXc4CBc3MJ4r!hGj2tsX(Y;wjNZ_F~AnOz~4$~KF1^}-nM zT0)u#N^GY@bga-wp|ZKFrCUw2pMQmB_mgQWof~dYO_;P5pVu9?zP1G&y~n8 zkHba=wbcGG$X6MLPMwpK+tp$X8!)W!>J7*jS$NZFlH;vo^etz3zMWB?KbaXYB$z%P z@xI6|Ss;M}xj`bC%INi+d9Z!;1&+ok8DD7DLpf7 zZ(6^u-7FJCh59|D-a7S9+fT~o7&G65!r+DfqfyGT@Vp`IT^9If4(arB_Zi62Xf`tn zn1wpMg4p;H@cUqVPpaXvhw%(|tc}I$d|lPcS?1#Sr{FFFZH94G z&|F#-qa`>#C)*dw9_FvG=+UR4t7${nba0@C84a&Nd=?u3DXW; z*@RB-O}8jL$czr|P=lxR)iubLQ0W=kbx?=sh_4D~U8eq#cVg}{{B-rj>JwHB=P0`d zzikpWC7oiU1KFq9%vLcrJMyrDwu-e-!H>|ay>K{Z6n+p@Xp4A8Ce)cK%#JbU`3=}T zQ7~q9Cipy1HZvm1kCl=F?c5dz5Jq>X(Q(j-)`3}jm{d5@avCHM@QEn>%|y#$Sh`% z;+$!X(M|)f{*Boxee}KqDlL&QzgXTan5`Gd6oUp$Fo>8iyGW}ybqzjjrsQR)K%~`g z8MiGIAZWM28NP%qRsv(F@(W%qwuu$kCNBa4e!t*^!fbZG(fWf;ieF@`JqX1#6Fch* z$S@WbeSxFCED>f~Ctzhw(E9|L&$yV1gjc#6M+V9$lP1n7$i1|*w_4{qZ@}HqHTdXg zHM1K8Tiwxk_=4C+;;T=EHyL}G2r)&HGoqqJ7M)PD2|@xv;6xnp10-5?amUOqNMOGMYqPOOEw<=|tYq!w&{MiXkmmbIX-W}3c2+|t#p4lU0}iq44~ zl*Tk=af7S^4FYgnN7PW5ZLqX<6nD;H^fSu%lWXeUo3cGgT3qVhI?!dHm9J0!7o7PX29 z>KO3Gg%!rCRpiL#61)Se(%RW-BHrkAW$Se%=ePz@g`bI_Ko2>K4_?BaRt;Fr8aU|t zW{BeSIYqT8qrtJ#QS{dJb-@CVoQNS`QLfV@VoKNG6ULjtrzDlNYtz~m{AKNE*4lN@ ztNADc6S|cSYdyMbdJ1N%hRCPc>y*q^eQJ=wK8v6^jZ6@sjK-%-KKB_{7|rBCxsU=1 z(+|+h_+)5|83nH^*+g`pQa!x081?O#p-G)lL(~j*+DNRp1yH+25O~#nlACM^SvHpT zn4yR~CsW(%-RSQhlY*%l8}tYFd3CIp(7=UBy+v_UlLSaKreaIe8HWm8LoIZr4q_tM z)$1fEEr@BM!))5<9MlMh{E=*%Sn6BshB zM9i5;-w(QJyye%NFY_E2+N1Ud~nrz@Xg7(1G~!LW+%4T%G(($xwZb|HGDm z%WNppe`vv56=dZ?G9=kqCO_1ev|52?=+Usi^aqIdwEjNozuSe%(F=n?_%h)^dy8B;IqO-F z6DDLP(H*3^?hkDH@g~V zoV5Qn6jgjdo20Z4PK!OOsUEO4g9+Rq01>qnwGvG5eUHudbmZ z863-UCNdlpy0K?P)f&W^V6=1*W0Wr>pT;!Vl<0R29i{ef^sr!`))x`GYiJ&`Y+lq8 z=qtwE1P+>S7qJ*`Y+eO=|Isdq}G{yx8;=qrsRav(^c`G!51r zmQZuk-8WxQ^Jcg<&a`2GhJqoLZp~`Q((D#7CNERN=V&ITiPe3nR+`C3^WOJhuSnk0 z)!z0!sG9Z!pzTc+>#zdl%Z>PB^d{Uf#i+`kWgQm-aPZrjW5vp97^D zmYU91%0(&gqK-v)lW2y^+X0rDNggTm`XV26ye(sT!Z(45G4Gm(+px|80Ruys4T|E4 z4?)Y&)A*A%s9&B>;Odw2QgVev9`Uqs6^ern-?+{i(zHCuFclHyFDPYWEA_Y6E%qv} zr0*?v8}?phQ(vWJ0piM!NL!?}E!LH9mnx@69dC3t9;B_T)U9STHoooKa1_5sYD`7i zpO1Eld&f?ZFOoGYcfvz)NUX35lOF ztA`A>pk>RQmbz=`gtSir%xEofose|1oAtmQ7a~5b-K-~D++Crgv%`95)^2VNGzn%U z^?)j|L*IA{Y=5KoM#DlC2xCt2UyDo}y~}FI44kf^Q|uOvuAx)AhTg<+FvJyRinr~> z*<2Gen;U`v$^y!5vmuu?mKI((d&iRtc6ct;W3t}4Q)f2!EzH(+I(ogtq7LZEojFQw zo@>2Vw_0|(7)Nh6mn~Em#Hu-Ri4nibF zjmE85ekAIac?v~b*TAD-IsCM}>;>9#WNk9frMf2&WmIsBf{2o!U)&MMOSAqQ$t?;Z zWTORTwp-PLde9CFEgxNrpmf5_kI;e$ofe^GqCPt(meN>kh^jqzh-l94Qd;fDhFNdV z`+fAs;LILFJSjw1IFTAi&jw1QTdlSB|Kun5&gj&GUGZg$^2( z;zFN=-DS^vEKJR;11aQ~?bCC3sh+j_^E7x-$&Ve=VC&~tyfuco+Bdj13X4+X-^vKq zF1DzPBZE%n9b3k-8E?-A>}f^g6%Vy#?~fqc+}0&%CVG~RihG!E%iizgvc$7R3Hu=w zG2a0p6c!>+6F;r&Q8Ej8RDgviJulOfwL8Ig+Vd)VPSKOa7loD#_Gzt{!M+J9W^|oJ zu}o;QRdkwe#jjd(u%-dbnuDHK8qI#Sz^Z2cehb=V9PH6$YRXw2@NvE-=JHk?&wZ8! zfwT7BHhhge-os_TWq_Sn)Rfuo+M3eSJ)>=6rMm|&0lJT{lu70Zl7FmG{U6^}vc((j z;p*u=qOHx39B48PBq+PVD@>u;{Ld-DG~K`kW4l=r^Jn@&D)DqtBL6m*d@)610R`t_ zIUSE%v5iZNxP%Y?7njJSwHwpy;?}le50@EEX=~$bDLzF8HalX9s_yBY(AHw+GX@85 zlU3q$`9zI)|E!Qudnb4-r<~5VHZ)U@uJ7?zF-&MQF&5=1JrVUFr9xw+XOFM zbkd`s_CX(D49OFigXO`o2^)($sqcL5h_a1q^PvCmw(;~T3XrV&r;HTV1NoO`z5E?X z;|$(1y3j~0UAm|3(P{uOnwJ;1v5lp6KWy|pd@=1Z+CqxM{ynY>X~Qn==QugR$F#MG z!Da+e7E70wv4H8#SX(mjOE+!iH|*d`h8inG6Ol`?d^c^#ZDF?=4{tlEt;?j`ZXn}E zOll;B?-xe{UB;+%@D9z)2tuy(tqQk8MK$fTGCc?=N`^<9})1m9wop^i6oN91<0 z#KZ6v7`sCoHhQ`br%%;yvv$LshollATc~-kYPLdMQx)RUp0*Cf;zBP=r?kkSbO5F3 zzY)*k*6E+37s@Cze825KBt;Unc5EC2SnOj2#nRu0vh^Q@+*&6yngTMNmp zJDr=(ozpfB!J(CyK}b}xLHf?%LBCXk+79D0S<|b%kVy(hp)!p@o!RWz#$LDT?w;%G)n@9J&qphwLg z+pp<&@$LTYs{s~-<|-{>PjEVMTM$mF*1Y8quZ`fQVkK})&K1OVmVR>FVD z|6KA~psPpo+&1eJCKxoTbl^Fb)R)0}2E^AoiQ7Tg%5)`AWoBEua_XT5_oz^Wq0cMM z!FxdA`J~{qx*51rIieWv;>ORkQIf7xC+MEtHZdLC#l@ZWcl9XqrCI6Y2(xZBNY~75 z8y6dP@cz)KfkOXgzIoJ8S{s3>T>pkbOa~tj<#<5S#_Tc!02@BCFNi9v?b>oWfSQBR z!NgGl&UmEIy9qVochm4wC2pLTW?ASVtFDbFj05=l{H+g`$CD=C3`(TGP=h3?;0>BW z>r#C4CpKA=f0qHF3==|slFPiU!~$m-(clGUCd5c2Ihg-#MfuD5sAl!+XQ*TMNY(P_ zp{n{o3%{$A4(=_djEicG3|>$!opm2Wyjt3iuOa}qxg_rqd;Z9tkK6M}tCqHzwZpz& z@+I_;n}7fem5@G3;9kR(dr|79Yy1;W5h_W;zem>ADq5`z!S`~)Rm===p0WT582GN6~&gp!?VVqTW^%^yDMDhLe${g{4zI{!)=!*%qhsNC3!sW6aRvNm6IB>z7$>Y}XlDdKem1 zefn~f{MuFWan*1>@ON1o-AsB!9eQXPb}2fnhjqWShL4(Fm##trw^%vLjW?(9#N%P` z8TMSRUR`5!vpn7=L6-pO5{0ah4xuYm=|-8N_^MQi?;l|LiKaF^C%&6KVXZRS z7BY!w47G<8$%U0p%dRPcv1O$_O`x*Ic*!*V{cg#N3Bu3-6NiaXlRY+rn9ehqsS2Vb zun*uFH+MmJTDy|J9D}L}VYY1^dKF3HL-`qBPZF!4145TDkb&|jU* zcINo}+uCwxT5p&94RO8QOWV>k+pGS}oI#VOeBzYPpqg;ws7gDRGUM~_X3R0gmF>-Y za!_YikHfN|S&)-}xl%K&F8hs~L+%rp54@>w^_&k?Y5s5D|$py=K%CW>)y5 zwidG0?`M%nk#r4@)W9{N6b(p8u=LpAs-{{iSs&WgWK~$_UoP7R3yx#&C@E`Nv_+Bm zp&vY!A3ACepm$eepkI-HEB4U!jI8MpMo=|xHc3MLE)fi!>Ckp$rYTffkWfjQxrqtl z4_bPVqzey0%vG*qSqTrfuz*itr=k}7cEIOV{hBoys(XJT7I_HLzPEh z626se#QL4S=#v>5Xe1rFO`HmvMLo8@;|R@Txy;8V>;4&L?v-#g6xSYMY-v)#-=V>R zmvKP0h6|R6sUEwDrY{}Z(UY2CrFswDfzK8rhxnXp;-FKCL0_ZMAV9{NCeUoCl>tkEcUVT73;=D)yHsQn6;(9fzC^m-3$3^44ta0gJp4Nz@1Noz29ju`?e_1>d8e0~w9+V6;Dc%X+i=G! z`L=Fpw}+8PzXOS$P(L;PG?$dH?xqnngNmOG&TMPtYI7EkW26X>l0V;;{b}e2G@BQU zfkeX|TW5V!thEN_A_C2Ml7yy`99Y}qxP&~qu&F+qme~m$MlZ%88=nHRym>afUUUv$ z?A0Q++GvwzIKCJGC5<$&WI+QKx3XA<{%P!5cuX5BJBz?D5RKkG!<&@hLjGc#Na@NV zn`LA+MQ@IqM>>o;`$h5a#YW!zCYo1yk1&2>syh19VfIQlTwxc8L|z`3^s7VjCjOlGxcS3J&~s6SerH;6J%2e%cCmAGmIVUJ>6<2ylj&D zbaULAIrBpo~>9Xw5yE__=kJbs(l;@(j9+`%U1aJ7q#A@mDfmrK)_ zX)G0>y2xp%F@Kw!`gG>nEU&%fxG;jymg-X7=55mXJVrVhY7na{0{Din`$aW&+JHHH zb%nUz8)9Ep@e@?Z#$tKcOQGvPnA|t8N9LPiaiK^UgtL>G)&;Aje!SRFzikdid{;wk zhI{g~s%o$!zj~z!#L)EJtyh${$&%KDf`?R$>>B0ib>o3}=1ydNF_v`$X0S zbp{`fXK?t&o+1onm!x0HCrSwI0YrnePzL@N3`Q7Tgn#T-WDiB!IEDoZDF;81GlArS zDAbGm*T-95;BuA4)`*w+fk6s2h%#&Fex`Sdb(S6)^umgH9@UXo+GO4vV!WHJV{Db! z+MsoF)9h69QtT(0jhwQE3&*KJ$TC|g+nl*#I(qwvYUkNn-P4Sh($egN!4+wkAo-We z#!dlS{!cDxo9J^Lu&-KBfAljIC5MYwANJdGaK*c~E@m|~;MK+zdOpRUNs57V_%^Xn za&MW$lnr5~k4;H#;v%bz%7NoN{Y*8q&;mC4}cYM0N-m^BO}`YV8h8 z#O+=@F&bD73#qi~Y3UQxIo?IR>7${6!_R7OQy3<4R*@&gcjA}txz|C-K5mDh4x%_h&Ppt2P4zc+Oj~uRha>N*Hp&55qiVi&=D*c{cU8fm!R2(*6;dY1j!%^ zjYkY-EwMR9%+9Vcm=x0yZkw`-id@@%HdV}E;m7nE(h+WV2u3?%%wJ`W=C)Rd*B|sS zjaF6&!A+`zS*ouQ9nz|3Y#TXQiWlK$5a$RpCb|YJ3pXV{vQ)5N+|Y1z&WUZ~Z8}Bf z=?ENaxPzfrH| za=daBP4Fl`ww0tKXXH$PdYm36SnPwab4<+G8z(;qo)E1X)(JD0`eg{B#|*GMdL* zFFcvZ&87$l4VsL4K$*|!V!q^m9=XIv?eL2ld)_GNRRIXc(|-9NTQ>}(90aBS{#1$D zMypEIo{f2!Un3*FlW+8$z+B4#e4kbs8d(@?lLcDolNOfunLqkE+Y=g@M~29LTt>R{ zAsU3tzmZFQ_cN1gWV5ZQagraBMy_DThgBnG7xHKcUYm_vi8ezj2PIcX^B^iEXbMfp zG0|Cis#jxY`6a zn&6Qp_|hhLa}#_;6MSV8e039iO%uGW3BJAwzOf13-UQ#$1mD&K?`VSWXo7b(!FM&m z_cXz~n&A7J;0K!EhYZ$w1>R891)EjbcqxZ!yBDyLZ7F{QGJOf_kWwOScw{~=al!7F zJm6{7B%sV~50a$qIHy}=;$NQNJ}Y_cjb3bAbwu7{7|dDO1-A;UR;=?#2}+LLMm|(Z z&i2U4+LI(zx!IKaDCD0g7qL@HN^iSXt6RF-n6z3wGutv(KS4OF+t{%_z> z(%__(t-)!mVqw~_iCMlLUl$6Jk>9w?+sBPBQ7KK!rCbNcGXO{pvs^qE{bqyT;9M!= zLAHQPAI}ON1nLzk=b35u3V2$oTg3FnWfpHi6t?%AuRCjZg2X&|WZS87kDLftQ z70t#wFmOX*T3IL;HJcY(nbScT_A<)iK~0wRWUCl0Yg`}fRXCY(kpznr*6FR4;b%|x zthNbOJ))$IO`)=od8e+Q(AcE*2*cDo_TczDE!cmJ#+fo+e7yJu9a721B%hZ7=pW& z?xK%q&|Xgy-uigi04z%KrlrXaZ;0=OI+2ylVpXeYuE(6Jc_PSb)6~yTxN=LL?d+5u z%zG<@ADC@RiW=|G0$PaU0v)=~Rq&7saO6dsJ?_S|fjUP${h2))-=Fv$4?>B{mVtzNMf~AZ7sc}a4{HR(&COVeLI;@@CX4Y&+g(z*NX>||`{;Y}+ z@NmTFoF5pRN6J}oR$C?#C}oz`M6$j^OxFKGOgno=aqOk$vI4y6J&|~P9`z$z@~TWK zC6h`NQlFP6t#9?2+9@eAXTPx(f_vL)V5go)!OSBsY?cqf?*;n_`SvJVFkBQ%)$qr+ zVNf_mLEij;xaDnU8;H~JCuPc?eec`;VEX*;ZYpno)jR&AYj?+q;XveDzVn%vw!es%UlfjWQ~61@|6Zw?+`~#nD zeC84`iEro5J*HqW9B1xU&nmdvZYThKk*9}tM(A&WzG$$}ftr`1j4Im@6|@O+Iy%Xxa5*8%xjzAxe~i_ldO+7_YD0C{fwO@#jU zI|}YT-iF<`c^2~msqV4}Z3X%ypH}y^L0{jg z?r(Tk&Qsk##&|!B(9Z+Z>Xw|F)7THOOcp5|+3dZ^;|gcPmraUjWG#r-PcCT-7C^i!HoJ83AF;-d)l()6+j zoe1Qm`1A;E1o~4xt?v2&rS5hh&&jU?`JBHMp&tPKoKLI!*VpHvZ8zu8Ody|jUW68e zP`C@^xqE7a-Ws5(ZUE>{_)K+IN9g7Np;X^kaCh_8>b}X-*KH5b4-B`Dr>C^^=^Ppt zpwvwUI-C!Z7@$`7`ysT|y%k9EceuL%XizcSr+I$apdUqOUxdd0RUSGM=mb8k?!WQ$ z6kG)4c`yj%<^IYT`tblZFLw9w+-p$BEjiR3pjI~zNV<52TL|R)!tV!Yjyn}- zIiFT{9#2ofTA*P*bKG@2Kh3Ar?d0jHx-UWx1!#_Y6iB(uasOY0T5iqLP6YCrdP;<5 z2563(2egRK9QW1;t&LC($kX>ffFwDoyB5gn#G8RUhwhBfeL$*5#r-3Y*9VUTT&w$O zg#HysS~PVNK9kE;H&7p+)V(p{mPcr1fLh%}Kq@13?~kE>8ljIx=r1Gmxd0vQz7F(V zKJ-hTp5wm?(9y2tv*gOB)xC_T4_y$UGk_#(t?r!xcdXk0l<_&%-T%%U+7fYp6``*N zsMUQN$mjf%2>l{JsVm>+^;+s)^^zQ#5^;w`=%o=l4oLl@)x8eL=X^Sl?`7`*@{;r3 z82X`z+ZLdT`zs)?*S;K~`vcVKz60cS*gpeFPjZs=_Sk|zlGtNi50FaxV|NUY{=MA2 z3g}cmt?mzbdL7mP5~U})KLfg!&x!5}5!xN0pGBzib9uZYBJ}bIy)Hs4BD5|-mj)FWVvi~aJH!2L2%X{X56~R%VOP~pVt+aD^dWo11BuW|IBJ_43-)A;N=+7eb$q0P~ zNc!|>cOQ_~aC?A!em{)Rz6g!`VjemTNMls1J1#<}N9Y0|KTg*JuHvqZp|=2ei}qfi z@AGMOt#{-!zbHbljL=y?YxuOfOL=;$;4gth>EZ4xKpK+|cYhzC)crG1>z9O^!Be3X zcQlZv`BgxoZ;pE#kow2rZcT`nx(rCY>~Qyyh`TM|THQB*Jcqs)p?`@``O7}%SGpsB zWNDq~P5@fY=R~(YKreQe0;#{vaUTQnJ@n=PwYskYiN065hk(4j_S1lCb>+XwDL549 zC_dQZ5n2&LFA7kH8v@ciufu&TKvUgzAk7F4bzcCI-F~S1z=u7=j1Qcbp>G2D(cobq zU-PE|l)CXdJ#MO-3?yrAjynR#_r_xa)ap(G@?-azK*}X`=LM+MtqIW4?jj&b;vc&z zkp8v0D}Xdxe7U<8NLnRzw*pB|p6I>`q|qRCe;07fNP$H2vF&b;?b z2U0FCZJ7(?OZz<_Pv0^iKT56uQhS`}E(Y>#xj8^eHGm!N|7mt#D0I4AulMtOZZ!y) z4a8Bb79_C;sM8Gw%sgm+iMy7t4+o5M)1X~(J|5#tQ~inanHc9#x6oz8`68IF@|i~q zzRFVleZcg(qukpKvp2?>>&_z=ZXO)=sb-UIwZ-WTm|piXccI03S-{Mrqz_q~SH?JR zXY3J$Z;Y6CxbGR}?Gdxm{eOn}!-zTGwG@=b6^1uL*G`m%i$5wVcn% zIt{RVe+i9a8CL(ZRXI4;kitjRIX-+_@t z9Tze8yTh%llOtxgJJRBu*@SsR0Se|E*9c-S8>XStuc7OwW}bngZ8AwKim&jRL? zO&DGO+3CL0gqdKNhng^5hIu?<9(Pj=Gx1OJod4BLGtA);^K*A-QL=g>7+n9b1(Ad^BLV)v)ktOLa?3RVpkt%$-e` zw-{!36Xq<-`JV!29yf%))iC=arnT@6!yIyHUW;;JrD5hoOh;k0VO|k26ASB#>K98R z=GemLEY4dZ=9PtS7-n_EoLu;OOZEPUd3E6-tLYU1)8bxV_&*lsrWj{g;bF^XXT+RQ z_-DgB7%^uSerA}TM9fB(^hI!+%oQH2OaK8@u)MK2Lh1Xar3M5SDG-VmLyT%i`g7U$?D%+^vB z&M%CZ4;HR73YP_pa~~}HrPX3Zz?=om|&6rHr!12h2P$4_ZFc17>{k`9c?W z0d~515p!4J$QJ3Slk!xBZxoJiDbPCa2$-|nHwp_{B;gwZ#<~9;F#o*?bArXWx(V}p zhPk;3v(PYiH(^dP%tK9>R~zQ>Cd_LL(|LJb)BjyqVwgEinAf(5&#w-cc~H2tMcjBp z#N1zaqorCIQ{7)U(^6d&FiVsB3(Ji^mx1}8eCD}-DD<}!W_G$yg*fxvgN0#B^~HcW zD)~;~I>S5^<9w%Zy_NNYfN}2oh1(7DizduB4Ab#}yk6fge9!Wk88D2Dg@0H-hi3sCI~~Ee~fV^CMQ{(AICV8!HB|r0pr{u$r4=A zov!_Zc|ScQd5fi*7BSP40ZaALfN}1yWYFTgHpV$D8Mb`RjhGiDmsy;P0%mFQlH@N8 zGaTbANbWMswK2{K$vuX-Ens#gCnt{>=FXUEaq@G+JQOiYl3yC;()rH80@~{oE%{Tg zAICUnavWLw`BlK2<=&FKq)n|{xgxLoTfs=L_BCOSYLn()6ftKfFSAsqN6g!kV-2&i z33FVV_`Eh?kcs5whN(4S7O*1Q>8^;WRwO4H&DR9X&BgPQR~hEhG0v)FiDAALG5yII zmh*Q4#<_PV%Pr2&Vw`s;@3c4*w&XH@Nph)SUetuS+)^DEF!S6c$p?(WQv+s8v6@_C zsm_V1YRR7)=DkgrZIa(v{DEO!7BJP~ zmy>mtYH^HnXY$7u=jMCf~PO{QY@3g~j56 zcD2_JVw~3EQp5Z#V!DcJ3{$u=Pc^+b)P60LP7WC7URiv|;v5y@yt25*FpDGR9q5mT)!zQr&f zkC=htJ1n1D17>`(wz$s9x+BJUf03(tDeD^n^P^&|c!j0=l;C-PaWzzua1}-iiL5)oDng9RXox#Ya`~1 z#nZ=$8-o$Ev-s|DqFM80KjPn2TxY317UO)a_$|YHCSv}s_@i;s#$Rs2JZ?GvUBv7z z{=!myKVlvzCgYXr=S`UMc+p(`NZvXR6x$6mwFy%hulAZ5FwQ+tJjCMkHN`n%yy|sg z#QalnmX)&ET6NRFfTXEK*a1TzFiw}+@FBazj>}$dM`i5*Xedf zOl!dWAY#g;s>N|1%~N%hh72<`V#b#)HO$bzcu zm%eV884)w9biZNdN6d>$-!#nYBW8B#yM{S8V&;^-Zqimu@=}Lkid*wqEGTsv=Fo^au{6~%$3)D+Qnz82 zM$9Wqha2V{5p!~Bwqf2AF|RHiZJ5g2izno+iu|!+bDe-deiWFt-HEO{KS${$fHEdhUyH-d_5OVZIeG<6GWU z`ktlwNsROE(xZmi7ci4s21-9M%*6lc>ouixacM$D{5c|E=#8aW?4D!R7BKU`yqGOu z&b=;R&T^Ydud9fjGh&=AU?d4|3z)erA1SRcjMlTo`ME70Ev+=nyJMV>mfmTYIe#)5 zr@!KQnN8$57d~2gcg4-@bejX_Wb#=_^r?lIbHNNFDrJD@%?!RJhAoUXFQ-*oX zr#)sRm`@v~<3*#XZZV9z#$yJE^BLn|XTT_*+bque`+S`BEuSrY&M=dkFgpzMve`aP zCvpDTFo%VF=DE+7?l8=Pfaz@ceCcb3+4?^jdS1sPuttTX*I3?|JQ!FZ+9wYlng?nL3*H3O+#VI z=s}@jN{Esogi#?W?oo|6Lo<3XGAJcskd%rjH7W{4nDn4DO`}2xMd|;!u66CT?;g%M z-|zSJ|MhyEb3W(2uj^Wmd#$zC+V>tNsIggUGs^wSuM{%hdVS+pAL6yn|5eBr)@FnM zhmft7eCO{Gve%ML{$E0lof4Fy(sz&LQZ%$=tM3bGZOJx2dMxL#izU^5Ovo*k{NNug zUV|*z;U6nxv?V+JWFaM%{N&dW@|q>P{NoR?`Ncm$$OqQuH~+*#Y@#HQwpLD~OQ64v1!KUHi_wKjYGhC+;NV7wT8#(t7;ziOA ziQ`9F971YF+8p9lHI>= zEotY-gNJxs9vLa*9&3{m`InGop)USIB3U4hVV1ramP?Njyq~kzb6s zLc++?BYqN(5@ptFMkFdWVOzWwsVyWN6JC!TD5 zdaaD43%Sga&m%2`+-S+_NQRI>mV6n>6jETxH<1g3OtNHcq^*#dmaLClB&6Ju?;=@3 zDlFL)X)k1_C0ireQe*T|Q1)$+4q_ADl|Mwf2npMCXXJ7rVcCCYJMEf5m+-n8f#A@A5YXGR|v66Pm8I$r8| ziM2T|I#I}HN|M}`(Pt0wY88D>NZ7+$M_&+9ZR4CDog!qvCGDcG3JH7ECDAe=$Y z&W^qzB+TLE(YZpxa$OmnFCp`jQ}m;xnuvU*dex5fk1i9Na9q7L`iYRRAKn&SDJ1N51EZfwt@g30-x*ykWQZkq zMZXfSu%vfK*9sY9ZStb)gp^t`D7s$AOiKnwHwr1YWJq+AkP1tNM!y%b(~{xQN+Ds5 zJru1%KO{P!HrG--T78JkNG0J2IV!qcY{D^WbabbXS})^GDEtR|r_rCJ?3d#Inbqmz z(Lcl{9Mub>{~QwM$*7ae<7#++jg5Lj!k$nRjR*8`sBy7Q_qsI#AZu49cO%@Wi*Q97&Az@n2M(YW=!+MoQPY@Ee*Q?P6Lc;cXBYK9A zaQt~QdX|v5jWaXaNXU3g-i|gFGQ*PD(WXMe72}-fIYJg#n|aaZLO!?T-ROBjwp#LG zw2hFkoZ_G_qtv^d=!~E!h~oSxA_}@1p&Mgmt(ndaIByhnu6f z2?=xfee@0?VQp-Q-YF!UyDOu23+ZN4-x|F~$jz2iMF$HB@5<`veaUrDr2EyTcI1cX zP$AxsFAK>~uV(a5^c5kOS>hb^nvfeo z%qZa=^}3MZ)+Tz?93e%P)HrIckZG3GJZip>u)S&@^&SY(-djy6uEj@w-%oaE7tZ^y z`kGJM_FGjGXSjx)V%3>eT>{lzJZ`e=ajT|6T`N}?SoM{?dcdk?IAt_xggFSKgpq^P zQt29a^g`rxx)rJqR5Fc#x>?jTt5!e_685XAR5}qSS;K@ign9%jCw>`}$w5!3e}Or4 zJJeWF1yJKfO@Vq=)VolVMSTOsc|rX_O%ruI&QUm5cuN!N6;T~5y9LUm_6XGLaF?H{S380uKopOA|Hpp7y6N~v!P6$yFh&cmQMYkRzs!IV5l{sMnSEW ztN1&I8l@D<H=ka?^2dbT&J6mMoxUJUd@R=XVvRg&9`cq zRo_^(%__o)0;iD^uVvNAs#57Zs2_3Fp*B#zin;`f>olD%hx!vLm9B>}^%u6$tzahi zBcTq6?=&b=%5tlIwknF0$Rtz0ASYxTy6|kBQlVIz#Q5DWlFijsz0Diz0|`G z(aqJSR)uvHw2?#Yadorgiu+5IEzvHhRJsLM|ANYi-v`B!bK*s+Qt25e9(U0XFoy9c zpG;+7UIpIgkA4Zox$hBQ2gM_LkNEdiRjbONU!XX01`ePDm1NaPR%KXqg;o8n8ltKN z6{)I2ldPI%)nZi{)(&+F#<|a+&3ZL)7TOJFYBDG#e#?5i8Aa3ST&UWIls5~E>$FGw zQmd|1h2J<}bUY3o>C{7glM_^5um*B<5ES1PrcSxPq|%dMX}Fq9B~ZF6IO{O2gxI|_J&`#oU>l+p3D#%M>4vwuy)CC@?bSl)9 z;`^UG9BK)>t0f0rpg5-v^|k6@Rq6B$R8QC?_MFLJ?As$gLsd@v4fV*0e_+*DR{aFU zy)Kz*oM6TmoJ`vhn8%2||28kj!NcUQiKCBDc5ddaG`>ipMZBb{?LFLt%S7 zXg$VTHPfnox6pyU$i{kP0Q&Buytrg{*g!@tykFjQaZUpwHux?P^T25mq)Ul#?z0pwA zWUywUWaS}hIao)iblL^QvsE(jD1WtF<&{itQJj~-qBt+3Me*w98Bx5td0iCeWuYkN zWTG!caT?!=IveaaQ8`eNZ#mruptv76^bC|~^RVZ<33ejvu8yzJt5?U@S+&EezpbiS z-$c1OezK}`Y64}-b_vw!h-X@%8I(iZC(Ss1J+2ycyH!K2dfTdvs?zCCsMa=~X+dsP zZr^l@;sYyfaW$2KJ1Uiuz}g+cP6g{CQFwN_TCO$*yFt`NP_uByr`i>5x{R@X9h_i>=6&bBbm6LJ|>F$ z={Qlm(wZuY*8=lJaXupaRNs&e8Fs&7ubP!(o&C|YLO6#CnTHkiUc=qFGja2#`SG$0jvUP*Xpr18L26^~?54TYUoodw?RyDJ# zl~rw3<-|K!)zhk5RVCI2&(7B&-5znCosGH=c1Dd<<dq{g7vn!zfBbPoWY_# z#MKc8UCoJqsZny`JFIdVm{O)nk2Upj5*XJ@PQ003b*LlMBVZ04JdPham+?6MFR{BG z9!Bx#{gf~s+l}I}-KhWRh<>DTJe*wyBeka`jd0}WQGSXr9_3#Z^(5@xhB9sbK2$o* z2m4gi=TK(7Qk6;r zY~;aErrpB*lHp)iNIXvMYEg%;s&e9!V0RO)rqdLtTSU!Ol}cYinQ@KBY%}j~QI-?; zPB&L`;&oJ|QUjtf z*~qJHMl|Jp$3b(A8NR$kx)D*hckOJ@oYKJ6yGeXfmQX7yV845Q3w@eb^giC1omMDgsrN)-1EbCrA3_riF^ zXm*);VsGg;VVQ`xUsN9`)6!$0c*ahpnNYPivU;Ddidq51qh2a)gfh7bMuBiA)s(j( zJd%m?!YU{JBRse!bK-lUxDK?n#Ey5tE`~C!Gt`l1jg!yBm?KwtJ;~2AsdN#TsZ-9g z*|`fwsbu0hxLVTSm2`hmypkR*itFV$QM`JcD~fCAV^P_NyiFAE*Xv0)f_6ZKQGs-J>uV}%AgHUt;FMds0*OXlNYOW+75OxR8D*k6qhI`e)L&^N>i0e zt)VWFD3?I-b1j~V^r}O*K$#x6OX5%OyA|Pv%6e<+j=a7x)CfVz7)!| z(HBs+i5jNmJOq@(y%B#hLdsuH#oacK) zah^wt;=VRc6!*2MqShh`kE}Uy=WLUPLp7~B!K!dypn+vsR^4jVNUNq;wOExI_2wYm zblL*8P}HBQ5?3v?8=JhCbxFD8lxKqqQ9K*$6vZ_}n>k(sc+`SQrE{T9fl6F~hI4$F z`%5*Abh;6W*9WO|JJgx*&7k|CE|AFlI+bJ+N-Rtj=#ztXt#8FAIhvtmO_~)*Hu2zgRo0nQ3TI#4pqR;tVK6KagV@GhgC^U z0@e(Qdy^TnIi9IWvo7hTc6hpj;&`caAJk~rrP4^K$0Y}2q0H**H7L_NS6H^qvZI=! zU%|tSqQ6S68i1MnIXX**BX#0oad|K&#OwMx1mhQ|NGO#%aW_>8xR@w|Ke%F zL_YY*;Y~?*C2~4n)E1~EqMk%v_!$EC0!Bw(<(l$_yYb=r$|zp*8^tS2W5=_-VLa}d z9eSQ&%?=Qcwr0jO$gst#=s7{|2P2Ak<~$Ybe#uoEC?1C#+L{vB{pX#^BR$vhZmr4Rb%5( zW$Nz(tHQp^ebRVrvmW@+j;tOq{y`0w*5a1V7sVt0L{Yp}ep?i`{!*yK`J)wlO}hL& zVl!F{vTCkXFIW|<(H-gx-*qM))Fx36Ky8I`C>S>|nxQ9}Q6(H->fveP7uY2e_qsns zanC+(3p4J2=ZNCfNC#28!n+O%qYu*H+Q^B&WYrv1_%a|?8D>@WG1#r}NTsi!xP~0! zd74i`9I6HzD3Q6=?iIy%g;{6wlc7<3=RJ(84*dm>$Dpw4YaX=6;j@rKse0Ay+?hFr z>z?P74C;cbg@}?tJyqdc9I6;Bm2QT50m`g9nVDxg!?-OC<9N()atn`FL_GktKsDs2Vh-kC~!tvW6pM|u+FRHzf7 zuntQL-Z}`MqQky+4(zy}nmTO=4>O9I_T|226z8ay9Vz!4aP@h3B%bf@wI0C^ftjOB z?zyFn;$C7D_Y#xSa5a4Lc|qUh8k!+xZ*hf$`w{o6;wCea4K|HQ2Gf#6}rHUQz2DB2zeZ0FU?&Ehr zrPGD*%@@@HssPHNKB`Q6Fgw!etGSb(lB=AqQ9Rq5bh*4HU9KyWF4q;On@n6+#)F?& zN`-N~%!W#*!N>u(OgiO5EeFeqKMrN?_~%un(kxY1$3L`cgH?a2%AjLg8s7|RVAXk6 zU1C)?t9n~?msJm1#b1x$yx==@P&}_@(Cbiq0+T_XKplFb_zf8EB&5@BsL!NC`=LyU z>b45hxmIIPLAGzf}!Au=f6suES{^cEDSn@$U%cxNJ=R$H~ns{K}_WZ;ZNYP=cL z_fTe3F>hY*J!2HNuTk8ujN9a-glXWYoI!-&Jb}=jJ z4wWtJHmJ*?QfUN~IX@o@#pmaV?Bye{WtOe8zS}MHTLwN^4 zXW7HnuGq5YEPKRg3>+9N&;S6Mmq2&=DIjf1)dEGIq% z%B-_zLG=;44=r11)mp1|K=HemM;dJ%I)JNdC5_}Z!M@{ZP$u0BC^P?FWz{WE{UzPO zP`8U326eZnQBXrfjfHwZ)HEm)WrZ9hMEZEFa3GF&4^{ZGu%(pq`Q_Z$LdQ>H{c~#-~swjkQ*7gDMrfzpScx zAincUx9j8 z*jrXDwpUkKwau!ZtlA4@$`-lEsKlOl9N1z+?h#M1s-ablt!iOawpHD&>TT6+R^4UQ z!>aJt6;OYsL}B|riK~W%eIw{E$@C1aE|Zdn_3|RvO0dLo@L3G^zaH_|aMdW@6*7wV zf><5uv06Ol!o#SqRXMa1ihD^5+5^S;Ye6+H4sv?3RcAw)-qgmbOQF7ouR}pO9O?nK zPS~wbn?w~@^#YXX8*{As2x_a?t${Kv_=COr7u0sSS|bZHr>L``OigxxGV$`PdIoBr z*uADKgBC-vM+PmoYK>J}top+$uU(KvT`0aQlBpFG-vP;#WmT@KdUPw4vyG@84T4I7 ziqZ(EQ$-b8^)wXcB}&h!szZ4z4~-)uWzZQ^g~!gD}s5GIcNu zc1Ny*FfTVF9`9~NDGzF{MCKY=AS$%Ww|N;0Wq#qo_58m}<2m^9?zCxz4< `zWs> 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 z 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 diff --git a/Obsolete/.nuget/NuGet.targets b/Obsolete/.nuget/NuGet.targets deleted file mode 100644 index 3f8c37b..0000000 --- a/Obsolete/.nuget/NuGet.targets +++ /dev/null @@ -1,144 +0,0 @@ - - - - $(MSBuildProjectDirectory)\..\ - - - false - - - false - - - true - - - false - - - - - - - - - - - $([System.IO.Path]::Combine($(SolutionDir), ".nuget")) - - - - - $(SolutionDir).nuget - - - - $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName.Replace(' ', '_')).config - $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config - - - - $(MSBuildProjectDirectory)\packages.config - $(PackagesProjectConfig) - - - - - $(NuGetToolsPath)\NuGet.exe - @(PackageSource) - - "$(NuGetExePath)" - mono --runtime=v4.0.30319 "$(NuGetExePath)" - - $(TargetDir.Trim('\\')) - - -RequireConsent - -NonInteractive - - "$(SolutionDir) " - "$(SolutionDir)" - - - $(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir) - $(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols - - - - RestorePackages; - $(BuildDependsOn); - - - - - $(BuildDependsOn); - BuildPackage; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Obsolete/ChocolateyPackageProvider.cs b/Obsolete/ChocolateyPackageProvider.cs deleted file mode 100644 index 3b3f699..0000000 --- a/Obsolete/ChocolateyPackageProvider.cs +++ /dev/null @@ -1,533 +0,0 @@ -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -namespace PackageManagement -{ - using chocolatey; - using chocolatey.infrastructure.app.configuration; - using chocolatey.infrastructure.app.domain; - using chocolatey.infrastructure.results; - using NuGet; - using Sdk; - using System; - using System.Collections.Generic; - using System.Diagnostics; - using System.Linq; - using Constants = Sdk.Constants; - - /// - /// A Package provider for OneGet. - /// - /// Important notes: - /// - Required Methods: Not all methods are required; some package providers do not support some features. If the methods isn't used or implemented it should be removed (or commented out) - /// - Error Handling: Avoid throwing exceptions from these methods. To properly return errors to the user, use the request.Error(...) method to notify the user of an error condition and then return. - /// - public class ChocolateyPackageProvider - { - /// - /// The features that this package supports. - /// TODO: fill in the feature strings for this provider - /// - protected static Dictionary Features = new Dictionary { - - // specify the extensions that your provider uses for its package files (if you have any) - { Constants.Features.SupportedExtensions, new[]{"nupkg"}}, - - // you can list the URL schemes that you support searching for packages with - { Constants.Features.SupportedSchemes, new [] {"http", "https", "file"}}, - -#if FOR_EXAMPLE - // add this if you want to 'hide' your provider by default. - { Constants.Features.AutomationOnly, Constants.FeaturePresent }, -#endif - // you can list the magic signatures (bytes at the beginning of a file) that we can use - - // to peek and see if a given file is yours. - { Constants.Features.MagicSignatures, Constants.Signatures.ZipVariants}, - }; - - private GetChocolatey _chocolatey; - - /// - /// Returns the name of the Provider. - /// TODO: Test and verify that we want "choco" vs "chocolatey" - /// TODO: let's keep it as 'choco' until we are ready to punt the prototype provider - /// - /// The name of this provider - public string PackageProviderName - { - get { return "Choco"; } - } - - /// - /// Returns the version of the Provider. - /// - /// The version of this provider - public string ProviderVersion - { - get - { - return "3.0.0.0"; - } - } - - /// - /// This is just here as to give us some possibility of knowing when an unexception happens... - /// At the very least, we'll write it to the system debug channel, so a developer can find it if they are looking for it. - /// - public void OnUnhandledException(string methodName, Exception exception) - { - Debug.WriteLine("Unexpected Exception thrown in '{0}::{1}' -- {2}\\{3}\r\n{4}", PackageProviderName, methodName, exception.GetType().Name, exception.Message, exception.StackTrace); - } - - /// - /// Performs one-time initialization of the $provider. - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void InitializeProvider(Request request) - { - request.Debug("Entering '{0}::InitializeProvider' to set up a chocolatey with custom logging", PackageProviderName); - _chocolatey = Lets.GetChocolatey().SetCustomLogging(new RequestLogger(request)); - } - - /// - /// Returns dynamic option definitions to the HOST - /// - /// example response: - /// request.YieldDynamicOption( "MySwitch", OptionType.String.ToString(), false); - /// - /// - /// The category of dynamic options that the HOST is interested in - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void GetDynamicOptions(string category, Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::GetDynamicOptions' {1}", PackageProviderName, category); - - switch ((category ?? string.Empty).ToLowerInvariant()) - { - case "install": - // TODO: put the options supported for install/uninstall/getinstalledpackages - - break; - - case "provider": - // TODO: put the options used with this provider (so far, not used by OneGet?). - - break; - - case "source": - // TODO: put any options for package sources - - break; - - case "package": - // TODO: put any options used when searching for packages - - break; - default: - request.Debug("Unknown category for '{0}::GetDynamicOptions': {1}", PackageProviderName, category); - break; - } - } - - /// - /// Returns a collection of strings to the client advertizing features this provider supports. - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void GetFeatures(Request request) - { - request.Debug("Entering '{0}::GetFeatures' ", PackageProviderName); - - foreach (var feature in Features) - { - request.Yield(feature); - } - } - - #region Sources - /// - /// Resolves and returns Package Sources to the client. - /// - /// Specified sources are passed in via the request object (request.GetSources()). - /// - /// Sources are returned using request.YieldPackageSource(...) - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void ResolvePackageSources(Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::ResolvePackageSources'", PackageProviderName); - - foreach (var source in GetSource(request.Sources.ToArray())) - { - request.YieldPackageSource(source.Id, source.Value, false, source.Authenticated, false); - } - } - #endregion - - /// - /// This is called when the user is adding (or updating) a package source - /// - /// The name of the package source. If this parameter is null or empty the PROVIDER should use the location as the name (if the PROVIDER actually stores names of package sources) - /// The location (ie, directory, URL, etc) of the package source. If this is null or empty, the PROVIDER should use the name as the location (if valid) - /// A boolean indicating that the user trusts this package source. Packages returned from this source should be marked as 'trusted' - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void AddPackageSource(string name, string location, bool trusted, Request request) - { - // TODO: Make chocolatey store "trusted" property on the sources - request.Debug("Entering {0} source add -n={1} -s'{2}' (we don't support trusted = '{3}')", PackageProviderName, name, - location, trusted); - - _chocolatey.Set(conf => - { - conf.CommandName = "Source"; - conf.SourceCommand.Command = SourceCommandType.add; - conf.SourceCommand.Name = name; - conf.Sources = location; - conf.AllowUnofficialBuild = true; - }).Run(); - } - - /// - /// Removes/Unregisters a package source - /// - /// The name or location of a package source to remove. - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void RemovePackageSource(string name, Request request) - { - request.Debug("Entering {0} source remove -n={1})", PackageProviderName, name); - - _chocolatey.Set(conf => - { - conf.CommandName = "Source"; - conf.SourceCommand.Command = SourceCommandType.remove; - conf.SourceCommand.Name = name; - conf.AllowUnofficialBuild = true; - }).Run(); - // TODO: support user-defined package sources OR remove this method - } - - /// - /// Searches package sources given name and version information - /// - /// Package information must be returned using request.YieldPackage(...) function. - /// - /// a name or partial name of the package(s) requested - /// A specific version of the package. Null or empty if the user did not specify - /// A minimum version of the package. Null or empty if the user did not specify - /// A maximum version of the package. Null or empty if the user did not specify - /// if this is greater than zero (and the number should have been generated using StartFind(...), the core is calling this multiple times to do a batch search request. The operation can be delayed until CompleteFind(...) is called - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void FindPackage(string name, string requiredVersion, string minimumVersion, string maximumVersion, int id, Request request) - { - request.Debug("Entering '{0}::FindPackage' '{1}','{2}','{3}','{4}', '{5}'", PackageProviderName, name, requiredVersion, minimumVersion, maximumVersion, id); - request.Debug("FindPackage:: " + request.PackageSources.@join("|")); - var versions = ParseVersion(requiredVersion, minimumVersion, maximumVersion); - - var sources = GetSource(request.PackageSources.ToArray()); - // TODO: need to support URLs for sources ... - foreach(var package in _chocolatey.Set(conf => - { - conf.CommandName = "List"; - conf.Input = name; - conf.Sources = sources.Select(cs => cs.Value).@join(";"); - conf.Version = requiredVersion; - conf.AllowUnofficialBuild = true; - }).List()) - { - SemanticVersion actual; - if (SemanticVersion.TryParse(package.Version, out actual) && (actual < versions.Item1 || actual > versions.Item2)) - { - continue; - } - request.YieldSoftwareIdentity(package); - } - } - - private static Tuple ParseVersion(string requiredVersion, string minimumVersion, string maximumVersion) - { - SemanticVersion min, max, actual; - - if (!string.IsNullOrEmpty(requiredVersion) && SemanticVersion.TryParse(requiredVersion, out actual)) - { - min = max = actual; - } - else - { - if (string.IsNullOrEmpty(minimumVersion) || !SemanticVersion.TryParse(minimumVersion, out min)) - { - min = new SemanticVersion(new Version()); - } - if (string.IsNullOrEmpty(maximumVersion) || !SemanticVersion.TryParse(maximumVersion, out max)) - { - max = new SemanticVersion(int.MaxValue, int.MaxValue, int.MaxValue, int.MaxValue); - } - } - return new Tuple(min, max); - } - - - private IEnumerable GetSource(params string[] names) - { - IEnumerable sources; - if (names.Any()) - { - var all = new List(); - // the system is requesting sources that match the values passed. - // if the value passed can be a legitimate source, but is not registered, return a package source marked unregistered. - - all.AddRange( _chocolatey.Set(conf => - { - conf.CommandName = "Source"; - conf.SourceCommand.Command = SourceCommandType.list; - conf.Sources = names.@join(";"); - conf.AllowUnofficialBuild = true; - }).List().Where(source => names.Any(name => name == source.Id || name == source.Value))); - - if (!all.Any()) - { - foreach (var n in names) - { - string name = n; - var s = _chocolatey.Set(conf => - { - conf.CommandName = "Source"; - conf.SourceCommand.Command = SourceCommandType.list; - conf.Sources = name; - conf.AllowUnofficialBuild = true; - }).List().Where(source => name == source.Id || name == source.Value).ToList(); - if (!s.Any()) - { - all.Add(new ChocolateySource {Id = name, Value = name}); - } - else - { - all.AddRange(s); - } - } - } - sources = all; - } - else - { - // the system is requesting all the registered sources - sources = _chocolatey.Set(conf => - { - conf.CommandName = "Source"; - conf.SourceCommand.Command = SourceCommandType.list; - conf.AllowUnofficialBuild = true; - }).List(); - } - return sources; - } - -/* - /// - /// Finds packages given a locally-accessible filename - /// - /// Package information must be returned using request.YieldPackage(...) function. - /// - /// the full path to the file to determine if it is a package - /// if this is greater than zero (and the number should have been generated using StartFind(...), the core is calling this multiple times to do a batch search request. The operation can be delayed until CompleteFind(...) is called - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void FindPackageByFile(string file, int id, Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::FindPackageByFile' '{1}','{2}'", PackageProviderName, file, id); - - // TODO: implement searching for a package by analyzing the package file, or remove this method - } - - /// - /// Finds packages given a URI. - /// - /// The function is responsible for downloading any content required to make this work - /// - /// Package information must be returned using request.YieldPackage(...) function. - /// - /// the URI the client requesting a package for. - /// if this is greater than zero (and the number should have been generated using StartFind(...), the core is calling this multiple times to do a batch search request. The operation can be delayed until CompleteFind(...) is called - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void FindPackageByUri(Uri uri, int id, Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::FindPackageByUri' '{1}','{2}'", PackageProviderName, uri, id); - - // TODO: implement searching for a package by it's unique uri (or remove this method) - } - - /// - /// Downloads a remote package file to a local location. - /// - /// - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void DownloadPackage(string fastPackageReference, string location, Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::DownloadPackage' '{1}','{2}'", PackageProviderName, fastPackageReference, location); - - // TODO: actually download the package ... - - } - - /// - /// Returns package references for all the dependent packages - /// - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void GetPackageDependencies(string fastPackageReference, Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::GetPackageDependencies' '{1}'", PackageProviderName, fastPackageReference); - - // TODO: check dependencies - - } - -*/ - - /// - /// Installs a given package. - /// - /// A provider supplied identifier that specifies an exact package - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void InstallPackage(string fastPackageReference, Request request) - { - request.Debug("Entering '{0}::InstallPackage' '{1}'", PackageProviderName, fastPackageReference); - var parts = fastPackageReference.Split(RequestHelper.NullChar); - var force = false; - - var forceStr = request.GetOptionValue("Force"); - if (!string.IsNullOrEmpty(forceStr)) - { - bool.TryParse(forceStr, out force); - } - - foreach (var package in _chocolatey.Set(conf => - { - conf.CommandName = "Install"; - conf.Sources = GetSource(parts[0]).Select(cs => cs.Value).@join(";"); - conf.PackageNames = parts[1]; - conf.Version = parts[2]; - conf.AllowUnofficialBuild = true; - conf.Force = force; - }).List()) - { - request.YieldSoftwareIdentity(package); - } - } - - /// - /// Uninstalls a package - /// - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void UninstallPackage(string fastPackageReference, Request request) - { - // TODO: improve this debug message that tells us what's going on (what about the dynamic parameters) - var parts = fastPackageReference.Split(RequestHelper.NullChar); - request.Debug("Entering '{0}::UninstallPackage' '{1}'", PackageProviderName, parts.@join("' '")); - - // TODO: add dynamic parameters for AllVersions and ForceDependencies - foreach (var package in _chocolatey.Set(conf => - { - conf.CommandName = "Uninstall"; - //conf.Sources = parts[0]; - conf.PackageNames = parts[1]; - conf.Version = parts[2]; - }).List()) - { - request.YieldSoftwareIdentity(package); - } - } - - /// - /// Returns the packages that are installed - /// - /// the package name to match. Empty or null means match everything - /// the specific version asked for. If this parameter is specified (ie, not null or empty string) then the minimum and maximum values are ignored - /// the minimum version of packages to return . If the requiredVersion parameter is specified (ie, not null or empty string) this should be ignored - /// the maximum version of packages to return . If the requiredVersion parameter is specified (ie, not null or empty string) this should be ignored - /// - /// An object passed in from the CORE that contains functions that can be used to interact with - /// the CORE and HOST - /// - public void GetInstalledPackages(string name, string requiredVersion, string minimumVersion, string maximumVersion, Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::GetInstalledPackages' '{1}' '{2}' '{3}' '{4}'", PackageProviderName, name, requiredVersion, minimumVersion, maximumVersion); - var versions = ParseVersion(requiredVersion, minimumVersion, maximumVersion); - - foreach (var package in _chocolatey.Set(conf => - { - conf.CommandName = "List"; - conf.Input = name; - conf.ListCommand.LocalOnly = true; - conf.AllowUnofficialBuild = true; - }).List()) - { - SemanticVersion actual; - if (SemanticVersion.TryParse(package.Version, out actual) && (actual < versions.Item1 || actual > versions.Item2)) - { - continue; - } - request.YieldSoftwareIdentity(package); - } - } - -/* - /// - /// - /// - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - public void GetPackageDetails(string fastPackageReference, Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::GetPackageDetails' '{1}'", PackageProviderName, fastPackageReference); - - // TODO: This method is for fetching details that are more expensive than FindPackage* (if you don't need that, remove this method) - } - - /// - /// Initializes a batch search request. - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - /// - public int StartFind(Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::StartFind'", PackageProviderName); - - // TODO: batch search implementation - return default(int); - } - - /// - /// Finalizes a batch search request. - /// - /// - /// An object passed in from the CORE that contains functions that can be used to interact with the CORE and HOST - /// - public void CompleteFind(int id, Request request) - { - // TODO: improve this debug message that tells us what's going on. - request.Debug("Entering '{0}::CompleteFind' '{1}'", PackageProviderName, id); - // TODO: batch search implementation - } -*/ - } -} diff --git a/Obsolete/ChocolateyProvider.csproj b/Obsolete/ChocolateyProvider.csproj deleted file mode 100644 index 3483510..0000000 --- a/Obsolete/ChocolateyProvider.csproj +++ /dev/null @@ -1,102 +0,0 @@ - - - - - Debug - AnyCPU - {12BC926F-9911-47DB-A490-21E8686514F6} - Library - Properties - PackageManagement - ChocolateyProvider - 512 - $([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), solution.props))\solution.props - - - - - $([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), PackageProvider.sln))\ - $(SolutionDir) - - v4.0 - v4.0 - $(SolutionRootDir)output\$(TargetFrameworkVersion.Replace(".",""))\$(Configuration)\bin\ - $(SolutionRootDir)intermediate\$(TargetFrameworkVersion.Replace(".",""))\$(Configuration)\$(AssemblyName)\ - $(BaseIntermediateOutputPath) - $(OutputPath)$(AssemblyName).XML - 1591 - true - FRAMEWORK$(TargetFrameworkVersion.Replace(".","")) - output\$(TargetFrameworkVersion.Replace(".",""))\$(Configuration)\bin\ - - - true - full - false - $(DefineConstants);DEBUG;TRACE - prompt - 4 - output\v40\Debug\bin\ChocolateyProvider.xml - - - pdbonly - true - TRACE - prompt - 4 - output\v40\Release\bin\ChocolateyProvider.xml - - - - - - - - - - True - True - Messages.resx - - - - - - ResXFileCodeGenerator - Messages.Designer.cs - - - - - packages\chocolatey.lib.0.10.9\lib\chocolatey.dll - - - packages\log4net.2.0.3\lib\net40-full\log4net.dll - True - - - - - - - - - - - - - :Locate MT.EXE Tool: -for /f "delims=" %25%25a in ('powershell "$p = ((Get-ItemProperty -Path HKCU:\Software\PackageManagement\Tools\MT.EXE -Name Path -ea 0).Path) ; if( -not $p ) { $p = ((dir ${env:ProgramFiles(x86)} -recurse -ea 0| where -property name -eq mt.exe | select -first 1 ).FullName) ; $null = mkdir -Path HKCU:\Software\PackageManagement\Tools\MT.EXE -Force ; $null = New-ItemProperty -Path HKCU:\Software\PackageManagement\Tools\MT.EXE -Name Path -Value $p -force } ; $p"') do @set MTEXE=%25%25a - -:Run the tool to add the manifest to the binary. -"%25MTEXE%25" -manifest $(ProjectDir)provider.manifest -outputresource:$(TargetPath);#101 - - - - \ No newline at end of file diff --git a/Obsolete/ChocolateyProvider.sln b/Obsolete/ChocolateyProvider.sln deleted file mode 100644 index 98ce5c2..0000000 --- a/Obsolete/ChocolateyProvider.sln +++ /dev/null @@ -1,29 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.31101.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChocolateyProvider", "ChocolateyProvider.csproj", "{12BC926F-9911-47DB-A490-21E8686514F6}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{D4933EC0-5563-4BE5-88D3-FA1ADC0BE218}" - ProjectSection(SolutionItems) = preProject - .nuget\NuGet.Config = .nuget\NuGet.Config - .nuget\NuGet.exe = .nuget\NuGet.exe - .nuget\NuGet.targets = .nuget\NuGet.targets - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {12BC926F-9911-47DB-A490-21E8686514F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {12BC926F-9911-47DB-A490-21E8686514F6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {12BC926F-9911-47DB-A490-21E8686514F6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {12BC926F-9911-47DB-A490-21E8686514F6}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/Obsolete/Properties/AssemblyInfo.cs b/Obsolete/Properties/AssemblyInfo.cs deleted file mode 100644 index 62babbc..0000000 --- a/Obsolete/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,53 +0,0 @@ -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. - -[assembly: AssemblyTitle("Chocolatey.PackageManagement")] -[assembly: AssemblyDescription("PackageManagement package provider: Chocolatey")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Chocolatey")] -[assembly: AssemblyProduct("Chocolatey Provider for PackageManagement")] -[assembly: AssemblyCopyright("Copyright Chocolatey © 2014")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. - -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM - -[assembly: Guid("bff90b5a-cb46-49b3-a3d5-5df99bf23017")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] - -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file diff --git a/Obsolete/RequestHelper.cs b/Obsolete/RequestHelper.cs deleted file mode 100644 index 0fc7040..0000000 --- a/Obsolete/RequestHelper.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace PackageManagement -{ - using chocolatey.infrastructure.results; - using Sdk; - - public static class RequestHelper - { - public static readonly char NullChar = Convert.ToChar(0x0); - public static readonly string NullString = new string(NullChar, 1); - - public static string YieldSoftwareIdentity(this Request request, PackageResult package) - { - var fastPath = string.Join(NullString, package.Source, package.Package.Id, package.Version); - var fileName = string.Format("{0}.{1}.nupkg", package.Package.Id, package.Version); - var uri = package.SourceUri ?? (package.Package.ProjectUrl == null ? "" : package.Package.ProjectUrl.AbsoluteUri); - return request.YieldSoftwareIdentity( - fastPath, // this should be what we need to figure out how to find the package again - package.Package.Id, // this is the friendly name of the package - package.Version, "semver", // the version and version scheme - package.Package.Summary ?? package.Package.Description, // the summary (sometimes NuGet puts it in Description?) - package.Source, // the package SOURCE name - package.Name, // the search that returned this package - uri, // should be the full path to the file (I pass a project URL otherwise?) - package.InstallLocation ?? fileName); // a file name in case they want to download it... - } - } -} diff --git a/Obsolete/RequestLogger.cs b/Obsolete/RequestLogger.cs deleted file mode 100644 index 94c10fc..0000000 --- a/Obsolete/RequestLogger.cs +++ /dev/null @@ -1,82 +0,0 @@ -namespace PackageManagement -{ - using System; - using System.Collections.Generic; - using System.Linq; - using System.Text; - using chocolatey.infrastructure.logging; - using PackageManagement.Sdk; - - public class RequestLogger : ILog - { - private readonly Request _request; - - public RequestLogger(Request request) - { - _request = request; - } - - public void InitializeFor(string loggerName) - { - // TODO: I don't think I'm allowed to do this - } - - public void Debug(string message, params object[] formatting) - { - _request.Debug(message, formatting); - } - - public void Debug(Func message) - { - _request.Debug(message.Invoke()); - } - - public void Info(string message, params object[] formatting) - { - _request.Verbose(message, formatting); - } - - public void Info(Func message) - { - _request.Verbose(message.Invoke()); - } - - public void Warn(string message, params object[] formatting) - { - _request.Warning(message, formatting); - } - - public void Warn(Func message) - { - _request.Warning(message.Invoke()); - } - public void Error(string id, string category, string targetObject, string message) - { - _request.Error(id, category, targetObject, message); - } - public void Error(ErrorCategory category, string targetObject, string message, params object[] formatting) - { - _request.Error(category, targetObject, message, formatting); - } - - public void Error(string message, params object[] formatting) - { - _request.Error(ErrorCategory.NotSpecified, "", message, formatting); - } - - public void Error(Func message) - { - _request.Error(ErrorCategory.NotSpecified, "", message.Invoke()); - } - - public void Fatal(string message, params object[] formatting) - { - _request.Error(ErrorCategory.NotSpecified, "FATAL", message, formatting); - } - - public void Fatal(Func message) - { - _request.Error(ErrorCategory.NotSpecified, "FATAL", message.Invoke()); - } - } -} diff --git a/Obsolete/Resources/Messages.Designer.cs b/Obsolete/Resources/Messages.Designer.cs deleted file mode 100644 index a806b8e..0000000 --- a/Obsolete/Resources/Messages.Designer.cs +++ /dev/null @@ -1,73 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.0 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace PackageManagement.Resources -{ - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Messages - { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Messages() - { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if (object.ReferenceEquals(resourceMan, null)) - { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PackageManagement.Resources.Messages", typeof(Messages).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { - return resourceCulture; - } - set - { - resourceCulture = value; - } - } - } -} - diff --git a/Obsolete/Resources/Messages.resx b/Obsolete/Resources/Messages.resx deleted file mode 100644 index d65ce5c..0000000 --- a/Obsolete/Resources/Messages.resx +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 1.3 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - diff --git a/Obsolete/Sdk/Constants.cs b/Obsolete/Sdk/Constants.cs deleted file mode 100644 index 546d9d9..0000000 --- a/Obsolete/Sdk/Constants.cs +++ /dev/null @@ -1,116 +0,0 @@ -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -namespace PackageManagement.Sdk -{ - public static partial class Constants - { - #region copy common-constants-implementation /internal/public - - public const string MinVersion = "0.0.0.1"; - public const string MSGPrefix = "MSG:"; - public static string[] FeaturePresent = new string[0]; - public static string[] Empty = new string[0]; - - public static partial class Features - { - public const string AutomationOnly = "automation-only"; - public const string MagicSignatures = "magic-signatures"; - public const string SupportedExtensions = "file-extensions"; - public const string SupportedSchemes = "uri-schemes"; - public const string SupportsPowerShellModules = "supports-powershell-modules"; - public const string SupportsRegexSearch = "supports-regex-search"; - public const string SupportsSubstringSearch = "supports-substring-search"; - public const string SupportsWildcardSearch = "supports-wildcard-search"; - } - - public static partial class Messages - { - public const string CreatefolderFailed = "MSG:CreatefolderFailed"; - public const string DependencyResolutionError = "MSG:UnableToResolveDependency_dependencyPackage"; - public const string DependentPackageFailedInstall = "MSG:DependentPackageFailedInstall_dependency"; - public const string DestinationPathNotSet = "MSG:DestinationPathNotSet"; - public const string FailedProviderBootstrap = "MSG:FailedProviderBootstrap"; - public const string FileFailedVerification = "MSG:FileFailedVerification"; - public const string InvalidFilename = "MSG:InvalidFilename"; - public const string MissingRequiredParameter = "MSG:MissingRequiredParameter"; - public const string PackageFailedInstall = "MSG:UnableToInstallPackage_package_reason"; - public const string PackageSourceExists = "MSG:PackageSourceExists"; - public const string ProtocolNotSupported = "MSG:ProtocolNotSupported"; - public const string ProviderPluginLoadFailure = "MSG:ProviderPluginLoadFailure"; - public const string ProviderSwidtagUnavailable = "MSG:ProviderSwidtagUnavailable"; - public const string RemoveEnvironmentVariableRequiresElevation = "MSG:RemoveEnvironmentVariableRequiresElevation"; - public const string SchemeNotSupported = "MSG:SchemeNotSupported"; - public const string SourceLocationNotValid = "MSG:SourceLocationNotValid_Location"; - public const string UnableToCopyFileTo = "MSG:UnableToCopyFileTo"; - public const string UnableToCreateShortcutTargetDoesNotExist = "MSG:UnableToCreateShortcutTargetDoesNotExist"; - public const string UnableToDownload = "MSG:UnableToDownload"; - public const string UnableToOverwriteExistingFile = "MSG:UnableToOverwriteExistingFile"; - public const string UnableToRemoveFile = "MSG:UnableToRemoveFile"; - public const string UnableToResolvePackage = "MSG:UnableToResolvePackage"; - public const string UnableToResolveSource = "MSG:UnableToResolveSource_NameOrLocation"; - public const string UnableToUninstallPackage = "MSG:UnableToUninstallPackage"; - public const string UnknownFolderId = "MSG:UnknownFolderId"; - public const string UnknownProvider = "MSG:UnknownProvider"; - public const string UnsupportedArchive = "MSG:UnsupportedArchive"; - public const string UnsupportedProviderType = "MSG:UnsupportedProviderType"; - public const string UriSchemeNotSupported = "MSG:UriSchemeNotSupported_Scheme"; - public const string UserDeclinedUntrustedPackageInstall = "MSG:UserDeclinedUntrustedPackageInstall"; - } - - public static partial class OptionType - { - public const string String = "String"; - public const string StringArray = "StringArray"; - public const string Int = "Int"; - public const string Switch = "Switch"; - public const string Folder = "Folder"; - public const string File = "File"; - public const string Path = "Path"; - public const string Uri = "Uri"; - public const string SecureString = "SecureString"; - } - - public static partial class PackageStatus - { - public const string Available = "Available"; - public const string Dependency = "Dependency"; - public const string Installed = "Installed"; - public const string Uninstalled = "Uninstalled"; - } - - public static partial class Parameters - { - public const string IsUpdate = "IsUpdatePackageSource"; - public const string Name = "Name"; - public const string Location = "Location"; - } - - public static partial class Signatures - { - public const string Cab = "4D534346"; - public const string OleCompoundDocument = "D0CF11E0A1B11AE1"; - public const string Zip = "504b0304"; - public static string[] ZipVariants = new[] { Zip, /* should have EXEs? */}; - } - - public static partial class SwidTag - { - public const string SoftwareIdentity = "SoftwareIdentity"; - } - - #endregion - } -} - diff --git a/Obsolete/Sdk/ErrorCategory.cs b/Obsolete/Sdk/ErrorCategory.cs deleted file mode 100644 index 00516bc..0000000 --- a/Obsolete/Sdk/ErrorCategory.cs +++ /dev/null @@ -1,53 +0,0 @@ -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -namespace PackageManagement.Sdk -{ - public enum ErrorCategory - { - NotSpecified, - OpenError, - CloseError, - DeviceError, - DeadlockDetected, - InvalidArgument, - InvalidData, - InvalidOperation, - InvalidResult, - InvalidType, - MetadataError, - NotImplemented, - NotInstalled, - ObjectNotFound, - OperationStopped, - OperationTimeout, - SyntaxError, - ParserError, - PermissionDenied, - ResourceBusy, - ResourceExists, - ResourceUnavailable, - ReadError, - WriteError, - FromStdErr, - SecurityError, - ProtocolError, - ConnectionError, - AuthenticationError, - LimitsExceeded, - QuotaExceeded, - NotEnabled, - } -} - diff --git a/Obsolete/Sdk/Request.cs b/Obsolete/Sdk/Request.cs deleted file mode 100644 index fb37437..0000000 --- a/Obsolete/Sdk/Request.cs +++ /dev/null @@ -1,340 +0,0 @@ -// -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -namespace PackageManagement.Sdk -{ - using System; - using System.Collections.Generic; - using System.Globalization; - using System.Linq; - using System.Security; - using Resources; - - public abstract class Request - { - private Dictionary _options; - private string[] _packageSources; - - #region PackageMangaement Interfaces - public interface IProviderServices - { - bool IsElevated { get; } - - IEnumerable FindPackageByCanonicalId(string canonicalId, Request requestObject); - - string GetCanonicalPackageId(string providerName, string packageName, string version, string source); - - string ParseProviderName(string canonicalPackageId); - - string ParsePackageName(string canonicalPackageId); - - string ParsePackageVersion(string canonicalPackageId); - - string ParsePackageSource(string canonicalPackageId); - - void DownloadFile(Uri remoteLocation, string localFilename, Request requestObject); - - bool IsSupportedArchive(string localFilename, Request requestObject); - - IEnumerable UnpackArchive(string localFilename, string destinationFolder, Request requestObject); - - bool Install(string fileName, string additionalArgs, Request requestObject); - - bool IsSignedAndTrusted(string filename, Request requestObject); - } - - public interface IPackageProvider - { - - } - - public interface IPackageManagementService - { - int Version { get; } - - IEnumerable ProviderNames { get; } - - IEnumerable AllProviderNames { get; } - - IEnumerable PackageProviders { get; } - - IEnumerable SelectProvidersWithFeature(string featureName); - - IEnumerable SelectProvidersWithFeature(string featureName, string value); - - IEnumerable SelectProviders(string providerName, Request requestObject); - - bool RequirePackageProvider(string requestor, string packageProviderName, string minimumVersion, Request requestObject); - } - #endregion - - #region core-apis - - public abstract dynamic PackageManagementService { get; } - - public abstract IProviderServices ProviderServices { get; } - - #endregion - - #region copy host-apis - - /* Synced/Generated code =================================================== */ - public abstract bool IsCanceled { get; } - - public abstract string GetMessageString(string messageText, string defaultText); - - public abstract bool Warning(string messageText); - - public abstract bool Error(string id, string category, string targetObjectValue, string messageText); - - public abstract bool Message(string messageText); - - public abstract bool Verbose(string messageText); - - public abstract bool Debug(string messageText); - - public abstract int StartProgress(int parentActivityId, string messageText); - - public abstract bool Progress(int activityId, int progressPercentage, string messageText); - - public abstract bool CompleteProgress(int activityId, bool isSuccessful); - - /// - /// Used by a provider to request what metadata keys were passed from the user - /// - /// - public abstract IEnumerable OptionKeys { get; } - - /// - /// - /// - /// - public abstract IEnumerable GetOptionValues(string key); - - public abstract IEnumerable Sources { get; } - - public abstract string CredentialUsername { get; } - - public abstract SecureString CredentialPassword { get; } - - public abstract bool ShouldBootstrapProvider(string requestor, string providerName, string providerVersion, string providerType, string location, string destination); - - public abstract bool ShouldContinueWithUntrustedPackageSource(string package, string packageSource); - - public abstract bool AskPermission(string permission); - - public abstract bool IsInteractive { get; } - - public abstract int CallCount { get; } - - #endregion - - #region copy response-apis - - /* Synced/Generated code =================================================== */ - - /// - /// Used by a provider to return fields for a SoftwareIdentity. - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - public abstract string YieldSoftwareIdentity(string fastPath, string name, string version, string versionScheme, string summary, string source, string searchKey, string fullPath, string packageFileName); - - public abstract string AddMetadata(string name, string value); - - public abstract string AddMetadata(string elementPath, string name, string value); - - public abstract string AddMetadata(string elementPath, Uri @namespace, string name, string value); - - public abstract string AddTagId(string tagId); - - public abstract string AddMeta(string elementPath); - - public abstract string AddEntity(string name, string regid, string role, string thumbprint); - - public abstract string AddLink(Uri referenceUri, string relationship, string mediaType, string ownership, string use, string appliesToMedia, string artifact); - - public abstract string AddDependency(string providerName, string packageName, string version, string source, string appliesTo); - - public abstract string AddPayload(); - - public abstract string AddEvidence(DateTime date, string deviceId); - - public abstract string AddDirectory(string elementPath, string directoryName, string location, string root, bool isKey); - - public abstract string AddFile(string elementPath, string fileName, string location, string root, bool isKey, long size, string version); - - public abstract string AddProcess(string elementPath, string processName, int pid); - - public abstract string AddResource(string elementPath, string type); - - /// - /// Used by a provider to return fields for a package source (repository) - /// - /// - /// - /// - /// - /// - /// - public abstract bool YieldPackageSource(string name, string location, bool isTrusted, bool isRegistered, bool isValidated); - - /// - /// Used by a provider to return the fields for a Metadata Definition - /// The cmdlets can use this to supply tab-completion for metadata to the user. - /// - /// the provider-defined name of the option - /// one of ['string','int','path','switch'] - /// if the parameter is mandatory - /// - public abstract bool YieldDynamicOption(string name, string expectedType, bool isRequired); - - public abstract bool YieldKeyValuePair(string key, string value); - - public abstract bool YieldValue(string value); - - #endregion - /// - /// Yield values in a dictionary as key/value pairs. (one pair for each value in each key) - /// - /// - /// - public bool Yield(Dictionary dictionary) - { - return dictionary.All(Yield); - } - - public bool Yield(KeyValuePair pair) - { - if (pair.Value.Length == 0) - { - return YieldKeyValuePair(pair.Key, null); - } - return pair.Value.All(each => YieldKeyValuePair(pair.Key, each)); - } - - public bool Error(ErrorCategory category, string targetObjectValue, string messageText, params object[] args) - { - return Error(messageText, category.ToString(), targetObjectValue, FormatMessageString(messageText, args)); - } - - public bool Warning(string messageText, params object[] args) - { - return Warning(FormatMessageString(messageText, args)); - } - - public bool Message(string messageText, params object[] args) - { - return Message(FormatMessageString(messageText, args)); - } - - public bool Verbose(string messageText, params object[] args) - { - return Verbose(FormatMessageString(messageText, args)); - } - - public bool Debug(string messageText, params object[] args) - { - return Debug(FormatMessageString(messageText, args)); - } - - public int StartProgress(int parentActivityId, string messageText, params object[] args) - { - return StartProgress(parentActivityId, FormatMessageString(messageText, args)); - } - - public bool Progress(int activityId, int progressPercentage, string messageText, params object[] args) - { - return Progress(activityId, progressPercentage, FormatMessageString(messageText, args)); - } - - public string GetOptionValue(string name) - { - // get the value from the request - return (GetOptionValues(name) ?? Enumerable.Empty()).LastOrDefault(); - } - - private static string FixMeFormat(string formatString, object[] args) - { - if (args == null || args.Length == 0) - { - // not really any args, and not really expectng any - return formatString.Replace('{', '\u00ab').Replace('}', '\u00bb'); - } - return args.Aggregate(formatString.Replace('{', '\u00ab').Replace('}', '\u00bb'), (current, arg) => current + string.Format(CultureInfo.CurrentCulture, " \u00ab{0}\u00bb", arg)); - } - - internal string GetMessageStringInternal(string messageText) - { - return Messages.ResourceManager.GetString(messageText); - } - - internal string FormatMessageString(string messageText, params object[] args) - { - if (string.IsNullOrEmpty(messageText)) - { - return string.Empty; - } - - if (args == null) - { - return messageText; - } - - if (messageText.StartsWith(Constants.MSGPrefix, true, CultureInfo.CurrentCulture)) - { - // check with the caller first, then with the local resources, and fall back to using the messageText itself. - messageText = GetMessageString(messageText.Substring(Constants.MSGPrefix.Length), GetMessageStringInternal(messageText) ?? messageText) ?? GetMessageStringInternal(messageText) ?? messageText; - } - - // if it doesn't look like we have the correct number of parameters - // let's return a fix-me-format string. - var c = messageText.ToCharArray().Where(each => each == '{').Count(); - if (c < args.Length) - { - return FixMeFormat(messageText, args); - } - return string.Format(CultureInfo.CurrentCulture, messageText, args); - } - - public bool YieldDynamicOption(string name, string expectedType, bool isRequired, IEnumerable permittedValues) - { - return YieldDynamicOption(name, expectedType, isRequired) && (permittedValues ?? Enumerable.Empty()).All(each => YieldKeyValuePair(name, each)); - } - - public Dictionary Options - { - get - { - return _options ?? (_options = OptionKeys.Where(each => !string.IsNullOrWhiteSpace(each)).ToDictionary(k => k, (k) => (GetOptionValues(k) ?? new string[0]).ToArray())); - } - } - - public IEnumerable PackageSources - { - get - { - return _packageSources ?? (_packageSources = (Sources ?? new string[0]).ToArray()); - } - } - } -} diff --git a/Obsolete/install-provider.ps1 b/Obsolete/install-provider.ps1 deleted file mode 100644 index 084a8ca..0000000 --- a/Obsolete/install-provider.ps1 +++ /dev/null @@ -1,72 +0,0 @@ -#.Synopsis -# Copy the provider assembly to LocalAppData -#.Description -# By default it will find the newest .*Provider.dll and copy it to the right location -# You can also specify the build name (e.g. 'debug' or 'release') to use. -[CmdletBinding()] -param( - # If specified, force to use the output in a specific build folder - [string]$build = '', - [string]$providerName = 'ChocolateyProvider', - # How many levels UP to check for output folders (defaults to 2) - $depth = 2 -) - -Push-Location $PSScriptRoot - - -while($depth-- -gt 0) { - Write-Verbose "Searching '$pwd' for '${providerName}.dll'" - $candidates = Get-ChildItem -Recurse -Filter "${providerName}.dll" | - Where-Object { $_.FullName -match "\\output\\" } - Sort-Object -Descending -Property LastWriteTime - - if( $build ) { - $candidates = $candidates | Where-Object { $_.FullName -match $build } - } - - $provider = $candidates | Select-Object -First 1 - if( -not $provider ) { - cd .. - } -} - -if( -not $provider ) { - Write-Error "Can't find assembly '${providerName}.dll' under '$Pwd' with '\output\' and '$build' somewhere in the path`n" - Pop-Location - return -} - -$srcpath = $provider.Fullname -$filename = $provider.Name - -$output = "${Env:LocalAppData}\PackageManagement\providerassemblies\$fileName" - -if(Test-Path $output) { - Write-Warning "Found existing provider. Deleting `n '$output' `n" - # delete the old provider assembly - # even if it's in use. - $tmpName = "$filename.delete-me.$(get-random)" - $tmpPath = "$env:localappdata\PackageManagement\providerassemblies\$tmpName" - - Rename-Item $output $tmpName -force -ea SilentlyContinue - Remove-Item -force -ea SilentlyContinue $tmpPath - if(Test-Path $tmpPath) { - # locked. Move to temp folder - Write-Warning "Old provider is in use, moving to `n '$env:TEMP' folder `n However, you must restart any processes using it!" - Move-Item $tmpPath $env:TEMP - } - - if(Test-Path $output) { - Write-Error "Cannot remove existing provider file: `n $output `n" - Pop-Location - return - } - -} - -Write-Host "Copying provider `nFrom: '$srcPath'`nTo: '$output' `n" - -Copy-Item -force $srcPath $output - -Pop-Location diff --git a/Obsolete/packages.config b/Obsolete/packages.config deleted file mode 100644 index 8cb3681..0000000 --- a/Obsolete/packages.config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/Obsolete/provider.manifest b/Obsolete/provider.manifest deleted file mode 100644 index 49d5918..0000000 --- a/Obsolete/provider.manifest +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/README.md b/README.md index 6b7caff..7d17ee3 100644 --- a/README.md +++ b/README.md @@ -2,17 +2,21 @@ This is the official Chocolatey provider for PackageManagement (aka OneGet). -**NOTE:** For now, you may be more interested in using the ChocolateyGet provider as a stop gap solution until this provider is ready. See https://github.com/jianyunt/ChocolateyGet for details. +## Features -## Native powershell implementation +* search/find installed/install/uninstall packages +* upgrade packages +* download package +* manage package sources +* online/offline installation -This part contains plain PowerShell implementation of the provider, development is done only in this part. +## [How to use it](/docs/howto.md) -### [How to use it](/docs/howto.md) +## [License](LICENSE) -### [Development](/docs/contributing.md) +# [Development](/docs/contributing.md) -### Progress +## Progress * [x] Implement metadata * [x] Implement install able skeleton @@ -29,23 +33,15 @@ This part contains plain PowerShell implementation of the provider, development * [x] UnInstall-Package * [ ] Download-Package - IN PROGRESS -Not implemented +## Not implemented * Trusted package sources * Disable package source * Custom credentials in Find-Package - -## C# implementation - OBSOLETE - -The provider written in C# is obsolete. Requires windows SDK, which contains mt.exe to be able compile the project. No future development here is expected. Related files will be remoted later. - -### Development Requires: - -* Visual Studio 2013+ -* Any official PackageManagement build from February 2015 or later. +* Advanced chocolatey switches ## Contribution -**NOTE:** Seeking maintainers to help finish this Provider. Please inquire on the issues list or on Gitter (see the chat room below). Thanks! +> **NOTE:** Seeking maintainers to help finish this Provider. Please inquire on the issues list or on Gitter (see the chat room below). Thanks! Come join in the conversation about Chocolatey in our Gitter Chat Room. From 2d073d975f0c87251fb47b9adcda4b67cc0fdd54 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Wed, 8 Aug 2018 23:01:37 +0200 Subject: [PATCH 91/92] commented skeleton for package download --- Chocolatey-OneGet.psm1 | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 1a4879d..8aef0a4 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -415,7 +415,18 @@ function Download-Package { $Location ) - #TODO + if(-not $Location -or -not (Test-Path $Location)){ + ThrowError "System.ArgumentException" "Target location is required" + } + + # $packageReference = Parse-FastPackageReference $FastPackageReference + # $packageInfo = Find-ChocoPackage $packageReference.Name $packageReference.Version + # $downloadUrl = $packageInfo. + # $packageFile = "" + # $targetFile = Join-Path $Location $packageFile + + # # https://chocolatey.org/api/v2/package/chocolatey/0.10.11 + # Invoke-WebRequest -Uri $downloadUrl -OutFile $targetFile } #region Helper functions From c50c77000e4084a77b698ce897cee95ea5c6c350 Mon Sep 17 00:00:00 2001 From: JirkaPok Date: Mon, 15 Oct 2018 22:58:33 +0000 Subject: [PATCH 92/92] Implemented draft of save-package --- Chocolatey-OneGet.psm1 | 54 ++++++++++++++++++++++++++++++++--------- Tests/Package.Tests.ps1 | 28 +++++++++++++++++++++ 2 files changed, 70 insertions(+), 12 deletions(-) diff --git a/Chocolatey-OneGet.psm1 b/Chocolatey-OneGet.psm1 index 8aef0a4..08e1ae6 100644 --- a/Chocolatey-OneGet.psm1 +++ b/Chocolatey-OneGet.psm1 @@ -283,7 +283,7 @@ function Find-ChocoPackage { return } - # Choco has different usage fo the tag filtering option + # Choco has different usage for the tag filtering option $package = $found.Package $packageTags = $package.Tags $tagFound = $tags.Count -eq 0 @@ -302,8 +302,25 @@ function Find-ChocoPackage { continue } + $packageName = $found.Name + $packageVersion = $found.Version + $fileName = "$packageName.$packageVersion.nupkg" $packageReference = Build-FastPackageReference $found - $identity = New-SoftwareIdentity $packageReference $found.Name $found.Version "semver" $source $found.Description + + # web server sends Uri, but local and Unc paths fill only source with full directory path + $fullPath = $found.SourceUri + if($Null -eq $fullPath) { + $parsedUri = $null + + if([System.Uri]::TryCreate($found.Source, [System.UriKind]::Absolute, [ref]$parsedUri) -and $parsedUri.IsFile) { + $fullPath = Join-Path $parsedUri.AbsolutePath $fileName + } else { + ThrowError "System.FormatException" "Unable to parse local file path from '$fullPath'" + } + } + + $identity = New-SoftwareIdentity $packageReference $packageName $packageVersion "semver" ` + $source $found.Description $Name $fullPath $fileName Write-Output $identity } } @@ -419,14 +436,28 @@ function Download-Package { ThrowError "System.ArgumentException" "Target location is required" } - # $packageReference = Parse-FastPackageReference $FastPackageReference - # $packageInfo = Find-ChocoPackage $packageReference.Name $packageReference.Version - # $downloadUrl = $packageInfo. - # $packageFile = "" - # $targetFile = Join-Path $Location $packageFile + $force = ParseDynamicOption "Force" $false + $packageReference = Parse-FastPackageReference $FastPackageReference + $found = Find-ChocoPackage $packageReference.Name $packageReference.Version + $downloadUrl = $found.FullPath + $fileName = $found.PackageFilename + $output = Join-Path $outputDirectory $fileName - # # https://chocolatey.org/api/v2/package/chocolatey/0.10.11 - # Invoke-WebRequest -Uri $downloadUrl -OutFile $targetFile + if (!(Test-Path $outputDirectory)) { + New-Item -ItemType Directory $outputDirectory + } + + $parsedUri = $null + + if([System.Uri]::TryCreate($downloadUrl, [System.UriKind]::Absolute, [ref]$parsedUri)) { + if($parsedUri.IsFile){ + Copy-Item -Path $parsedUri.AbsolutePath -Destination $output -Force:$force + } else { + Invoke-WebRequest -Uri $downloadUrl -OutFile $output + } + } else { + ThrowError "System.FormatException" "Unable to parse download address from '$downloadUrl'" + } } #region Helper functions @@ -481,7 +512,7 @@ function Parse-Version(){ [NuGet.SemanticVersion]$min = $null [NuGet.SemanticVersion]$max = $null - [NuGet.SemanticVersion]$actual = $nullon + [NuGet.SemanticVersion]$actual = $null $defined = $false if (-Not [string]::IsNullOrEmpty($requiredVersion) -and [NuGet.SemanticVersion]::TryParse($requiredVersion, [ref] $actual)){ @@ -509,12 +540,11 @@ function Parse-Version(){ } function Build-FastPackageReference($package){ - $name =$package.Name + $name = $package.Name $version = $package.Version $source = $package.Source $parsedUri = $null - # TODO check the same for UNC path if([System.Uri]::TryCreate($package.Source, [System.UriKind]::Absolute, [ref]$parsedUri) -and $parsedUri.IsFile){ $source = $parsedUri.AbsolutePath } diff --git a/Tests/Package.Tests.ps1 b/Tests/Package.Tests.ps1 index 666aa57..b11cd86 100644 --- a/Tests/Package.Tests.ps1 +++ b/Tests/Package.Tests.ps1 @@ -203,4 +203,32 @@ Describe "Uninstall package" { $installed = Find-InstalledTestPackage $installed | Should -Be $null } +} + + +Describe "Download package" { + $downLoadDirectory = "$PSScriptRoot\..\Build\Output\Downloaded\" + + BeforeEach { + Remove-Item $downLoadDirectory -Recurse -Force -ErrorAction Ignore + } + BeforeAll { + Clean-Sources + Register-TestPackageSources + } + + AfterAll { + Clean-Sources + } + + It "copies from local path" { + # Example paths: + # web: "https://chocolatey.org/api/v2/package/chocolatey/0.10.11" + # local "c:\Workspace\Build\Output\TestPackages\TestPackage.1.0.1.nupkg" + # unc "\\localhost\c$\Workspaces\Chocolatey-OneGet_GitHub\Build\Output\TestPackages\TestPackage.1.0.1.nupkg" + + Save-Package -ProviderName $chocolateyOneGet -Name $testPackageName -Path $downLoadDirectory -Force + $outputFile = Join-Path $downLoadDirectory "testPackage.1.0.3.nupkg" + $outputFile | Should -Exist + } } \ No newline at end of file