From edf48f6b007f73c8e37f8b3ec0ceeb62023ef67d Mon Sep 17 00:00:00 2001 From: Sai Kanth Date: Wed, 25 May 2022 16:28:33 +0530 Subject: [PATCH] Removing the Search Scorer tool changes --- SearchScorer/.gitignore | 233 - SearchScorer/.vscode/launch.json | 26 - SearchScorer/.vscode/tasks.json | 41 - SearchScorer/Common/Bucket.cs | 16 - SearchScorer/Common/ConsoleUtility.cs | 14 - .../Common/CuratedSearchQueriesCsvReader.cs | 153 - SearchScorer/Common/CuratedSearchQuery.cs | 16 - .../ExtensionBadgeConverter.cs | 68 - .../ExtensionFileConverter.cs | 93 - .../ExtensionVersionConverter.cs | 186 - .../PublishedExtensionConverter.cs | 123 - .../ServerExtensionVersionConverter.cs | 114 - SearchScorer/Common/FeedbackDisposition.cs | 11 - .../Common/FeedbackQueriesCsvReader.cs | 111 - SearchScorer/Common/FeedbackSearchQuery.cs | 32 - SearchScorer/Common/GitHubRepository.cs | 24 - SearchScorer/Common/GitHubUsageCsvWriter.cs | 34 - SearchScorer/Common/GitHubUsageJsonReader.cs | 19 - ...GoogleAnalyticsSearchReferralsCsvReader.cs | 66 - .../Common/HashedSearchQueryCsvWriter.cs | 47 - SearchScorer/Common/Hasher.cs | 31 - .../Common/Models/CdnUriPathBuilder.cs | 30 - SearchScorer/Common/Models/ExtensionFile.cs | 38 - SearchScorer/Common/Models/ExtensionQuery.cs | 467 -- .../Common/Models/ExtensionStatistic.cs | 20 - SearchScorer/Common/Models/PackageDetails.cs | 34 - .../Common/Models/PublishedExtension.cs | 557 -- SearchScorer/Common/Models/Publisher.cs | 55 - .../Models/PublisherAssetConfiguration.cs | 16 - SearchScorer/Common/Models/QueryFilter.cs | 111 - SearchScorer/Common/Models/SearchParams.cs | 256 - SearchScorer/Common/Models/SearchRequest.cs | 14 - .../Common/PackageIdPatternValidator.cs | 107 - SearchScorer/Common/SearchClient.cs | 77 - SearchScorer/Common/SearchProbesCsvWriter.cs | 42 - SearchScorer/Common/SearchQuerySource.cs | 16 - .../Common/SearchQueryWithSelections.cs | 16 - SearchScorer/Common/SearchResponse.cs | 10 - SearchScorer/Common/SearchResult.cs | 8 - SearchScorer/Common/SearchResultDebug.cs | 8 - .../Common/SearchResultDebugDocument.cs | 7 - SearchScorer/Common/SearchSelectionCount.cs | 14 - .../Common/SearchService/ArgumentUtility.cs | 81 - .../SearchService/AzureSearchDataTypes.cs | 193 - .../Common/SearchServiceClientExtensions.cs | 77 - .../Common/TopClientSearchQueriesCsvReader.cs | 54 - .../Common/TopSearchQueriesCsvReader.cs | 81 - .../Common/TopSearchSelectionsCsvReader.cs | 63 - .../Common/TopSearchSelectionsV2CsvWriter.cs | 45 - .../Common/TopV3SearchQueriesCsvReader.cs | 53 - SearchScorer/Common/WildcardUtility.cs | 36 - SearchScorer/CuratedSearchQueries.csv | 3 - SearchScorer/FeedbackSearchQueries.csv | 3 - .../GoogleAnalyticsSearchReferrals.csv | 5007 ----------------- .../NormalizedDiscountedCumulativeGain.cs | 123 - SearchScorer/IREvalutation/RelevancyReport.cs | 14 - .../IREvalutation/RelevancyScoreBuilder.cs | 130 - .../IREvalutation/RelevancyScoreEvaluator.cs | 294 - .../IREvalutation/RelevancyScoreResult.cs | 31 - .../IREvalutation/SearchQueriesReport.cs | 16 - .../SearchQueryRelevancyScores.cs | 29 - SearchScorer/IREvalutation/VariantReport.cs | 21 - .../WeightedRelevancyScoreResult.cs | 15 - SearchScorer/Program.cs | 56 - SearchScorer/SearchScorer.csproj | 19 - SearchScorer/SearchScorer.sln | 25 - SearchScorer/SearchScorerSettings.cs | 34 - SearchScorer/TopClientSearchQueries.csv | 3 - SearchScorer/TopSearchQueries.csv | 3 - SearchScorer/TopSearchSelections.csv | 3 - 70 files changed, 9873 deletions(-) delete mode 100644 SearchScorer/.gitignore delete mode 100644 SearchScorer/.vscode/launch.json delete mode 100644 SearchScorer/.vscode/tasks.json delete mode 100644 SearchScorer/Common/Bucket.cs delete mode 100644 SearchScorer/Common/ConsoleUtility.cs delete mode 100644 SearchScorer/Common/CuratedSearchQueriesCsvReader.cs delete mode 100644 SearchScorer/Common/CuratedSearchQuery.cs delete mode 100644 SearchScorer/Common/CustomConverters/ExtensionBadgeConverter.cs delete mode 100644 SearchScorer/Common/CustomConverters/ExtensionFileConverter.cs delete mode 100644 SearchScorer/Common/CustomConverters/ExtensionVersionConverter.cs delete mode 100644 SearchScorer/Common/CustomConverters/PublishedExtensionConverter.cs delete mode 100644 SearchScorer/Common/CustomConverters/ServerExtensionVersionConverter.cs delete mode 100644 SearchScorer/Common/FeedbackDisposition.cs delete mode 100644 SearchScorer/Common/FeedbackQueriesCsvReader.cs delete mode 100644 SearchScorer/Common/FeedbackSearchQuery.cs delete mode 100644 SearchScorer/Common/GitHubRepository.cs delete mode 100644 SearchScorer/Common/GitHubUsageCsvWriter.cs delete mode 100644 SearchScorer/Common/GitHubUsageJsonReader.cs delete mode 100644 SearchScorer/Common/GoogleAnalyticsSearchReferralsCsvReader.cs delete mode 100644 SearchScorer/Common/HashedSearchQueryCsvWriter.cs delete mode 100644 SearchScorer/Common/Hasher.cs delete mode 100644 SearchScorer/Common/Models/CdnUriPathBuilder.cs delete mode 100644 SearchScorer/Common/Models/ExtensionFile.cs delete mode 100644 SearchScorer/Common/Models/ExtensionQuery.cs delete mode 100644 SearchScorer/Common/Models/ExtensionStatistic.cs delete mode 100644 SearchScorer/Common/Models/PackageDetails.cs delete mode 100644 SearchScorer/Common/Models/PublishedExtension.cs delete mode 100644 SearchScorer/Common/Models/Publisher.cs delete mode 100644 SearchScorer/Common/Models/PublisherAssetConfiguration.cs delete mode 100644 SearchScorer/Common/Models/QueryFilter.cs delete mode 100644 SearchScorer/Common/Models/SearchParams.cs delete mode 100644 SearchScorer/Common/Models/SearchRequest.cs delete mode 100644 SearchScorer/Common/PackageIdPatternValidator.cs delete mode 100644 SearchScorer/Common/SearchClient.cs delete mode 100644 SearchScorer/Common/SearchProbesCsvWriter.cs delete mode 100644 SearchScorer/Common/SearchQuerySource.cs delete mode 100644 SearchScorer/Common/SearchQueryWithSelections.cs delete mode 100644 SearchScorer/Common/SearchResponse.cs delete mode 100644 SearchScorer/Common/SearchResult.cs delete mode 100644 SearchScorer/Common/SearchResultDebug.cs delete mode 100644 SearchScorer/Common/SearchResultDebugDocument.cs delete mode 100644 SearchScorer/Common/SearchSelectionCount.cs delete mode 100644 SearchScorer/Common/SearchService/ArgumentUtility.cs delete mode 100644 SearchScorer/Common/SearchService/AzureSearchDataTypes.cs delete mode 100644 SearchScorer/Common/SearchServiceClientExtensions.cs delete mode 100644 SearchScorer/Common/TopClientSearchQueriesCsvReader.cs delete mode 100644 SearchScorer/Common/TopSearchQueriesCsvReader.cs delete mode 100644 SearchScorer/Common/TopSearchSelectionsCsvReader.cs delete mode 100644 SearchScorer/Common/TopSearchSelectionsV2CsvWriter.cs delete mode 100644 SearchScorer/Common/TopV3SearchQueriesCsvReader.cs delete mode 100644 SearchScorer/Common/WildcardUtility.cs delete mode 100644 SearchScorer/CuratedSearchQueries.csv delete mode 100644 SearchScorer/FeedbackSearchQueries.csv delete mode 100644 SearchScorer/GoogleAnalyticsSearchReferrals.csv delete mode 100644 SearchScorer/IREvalutation/NormalizedDiscountedCumulativeGain.cs delete mode 100644 SearchScorer/IREvalutation/RelevancyReport.cs delete mode 100644 SearchScorer/IREvalutation/RelevancyScoreBuilder.cs delete mode 100644 SearchScorer/IREvalutation/RelevancyScoreEvaluator.cs delete mode 100644 SearchScorer/IREvalutation/RelevancyScoreResult.cs delete mode 100644 SearchScorer/IREvalutation/SearchQueriesReport.cs delete mode 100644 SearchScorer/IREvalutation/SearchQueryRelevancyScores.cs delete mode 100644 SearchScorer/IREvalutation/VariantReport.cs delete mode 100644 SearchScorer/IREvalutation/WeightedRelevancyScoreResult.cs delete mode 100644 SearchScorer/Program.cs delete mode 100644 SearchScorer/SearchScorer.csproj delete mode 100644 SearchScorer/SearchScorer.sln delete mode 100644 SearchScorer/SearchScorerSettings.cs delete mode 100644 SearchScorer/TopClientSearchQueries.csv delete mode 100644 SearchScorer/TopSearchQueries.csv delete mode 100644 SearchScorer/TopSearchSelections.csv diff --git a/SearchScorer/.gitignore b/SearchScorer/.gitignore deleted file mode 100644 index 1ec9856..0000000 --- a/SearchScorer/.gitignore +++ /dev/null @@ -1,233 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -build/ -bld/ -bin/ -Bin/ -obj/ -Obj/ - -# Visual Studio 2015 cache/options directory -.vs/ -/wwwroot/dist/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# TODO: Comment the next line if you want to checkin your web deploy settings -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/packages/* -# except build/, which is used as an MSBuild target. -!**/packages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/packages/repositories.config - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Microsoft Azure ApplicationInsights config file -ApplicationInsights.config - -# Windows Store app package directory -AppPackages/ -BundleArtifacts/ - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.pfx -*.publishsettings -orleans.codegen.cs - -/node_modules - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe - -# FAKE - F# Make -.fake/ -.ionide \ No newline at end of file diff --git a/SearchScorer/.vscode/launch.json b/SearchScorer/.vscode/launch.json deleted file mode 100644 index 1d44f0e..0000000 --- a/SearchScorer/.vscode/launch.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - // Use IntelliSense to find out which attributes exist for C# debugging - // Use hover for the description of the existing attributes - // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md - "name": ".NET Core Launch (console)", - "type": "coreclr", - "request": "launch", - "preLaunchTask": "build", - // If you have changed target frameworks, make sure to update the program path. - "program": "${workspaceFolder}/bin/Debug/net6.0/SearchScorer.dll", - "args": [], - "cwd": "${workspaceFolder}", - // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console - "console": "internalConsole", - "stopAtEntry": false - }, - { - "name": ".NET Core Attach", - "type": "coreclr", - "request": "attach" - } - ] -} \ No newline at end of file diff --git a/SearchScorer/.vscode/tasks.json b/SearchScorer/.vscode/tasks.json deleted file mode 100644 index fcb4667..0000000 --- a/SearchScorer/.vscode/tasks.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "build", - "command": "dotnet", - "type": "process", - "args": [ - "build", - "${workspaceFolder}/SearchScorer.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "publish", - "command": "dotnet", - "type": "process", - "args": [ - "publish", - "${workspaceFolder}/SearchScorer.csproj", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "problemMatcher": "$msCompile" - }, - { - "label": "watch", - "command": "dotnet", - "type": "process", - "args": [ - "watch", - "run", - "--project", - "${workspaceFolder}/SearchScorer.csproj" - ], - "problemMatcher": "$msCompile" - } - ] -} \ No newline at end of file diff --git a/SearchScorer/Common/Bucket.cs b/SearchScorer/Common/Bucket.cs deleted file mode 100644 index 964c18e..0000000 --- a/SearchScorer/Common/Bucket.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace SearchScorer.Common -{ - public enum Bucket - { - Acronym, - Author, - CommonName, - ExactMatch, - Freshness, - MultiTerm, - PartialId, - Prefix, - Tags, - TopDownloads, - } -} diff --git a/SearchScorer/Common/ConsoleUtility.cs b/SearchScorer/Common/ConsoleUtility.cs deleted file mode 100644 index 9a7dd65..0000000 --- a/SearchScorer/Common/ConsoleUtility.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; - -namespace SearchScorer.Common -{ - public static class ConsoleUtility - { - public static void WriteHeading(string heading, char fence) - { - Console.WriteLine(); - Console.WriteLine(heading); - Console.WriteLine(new string(fence, heading.Length)); - } - } -} diff --git a/SearchScorer/Common/CuratedSearchQueriesCsvReader.cs b/SearchScorer/Common/CuratedSearchQueriesCsvReader.cs deleted file mode 100644 index 7c23b13..0000000 --- a/SearchScorer/Common/CuratedSearchQueriesCsvReader.cs +++ /dev/null @@ -1,153 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using CsvHelper; -using SearchScorer.IREvalutation; - -namespace SearchScorer.Common -{ - public static class CuratedSearchQueriesCsvReader - { - public static IReadOnlyList Read(string path, string fallbackDataPath) - { - var directData = Read(path, includeEmpty: true); - var fallbackData = Read(fallbackDataPath, includeEmpty: false); - var searchQueryToFallback = fallbackData.ToDictionary(x => x.SearchQuery, x => x); - - var data = new List(); - foreach (var query in directData) - { - if (query.PackageIdToScore.Any()) - { - data.Add(query); - } - else - { - if (searchQueryToFallback.TryGetValue(query.SearchQuery, out var fallback)) - { - data.Add(fallback); - } - else - { - WarnEmpty(query.SearchQuery); - } - } - } - - return data; - } - - public static IReadOnlyList Read(string path) - { - return Read(path, includeEmpty: false); - } - - private static IReadOnlyList Read(string path, bool includeEmpty) - { - using (var fileStream = File.OpenRead(path)) - using (var streamReader = new StreamReader(fileStream)) - using (var csvReader = new CsvReader(streamReader)) - { - var existingScores = new Dictionary>(); - - var output = new List(); - int lineNumber = 1; // The header is read automatically - foreach (var record in csvReader.GetRecords()) - { - lineNumber++; - - var searchQuery = record.SearchQuery.Trim(); - if (existingScores.ContainsKey(searchQuery)) - { - throw new InvalidOperationException($"The search query '{searchQuery}' is a duplicate in file, line {lineNumber}: {path}"); - } - - var pairs = new[] - { - new { PackageId = record.ID0, Score = record.S0 }, - new { PackageId = record.ID1, Score = record.S1 }, - new { PackageId = record.ID2, Score = record.S2 }, - new { PackageId = record.ID3, Score = record.S3 }, - new { PackageId = record.ID4, Score = record.S4 }, - }; - - var packageIdToScore = new Dictionary(StringComparer.OrdinalIgnoreCase); - foreach (var pair in pairs) - { - var packageId = pair.PackageId?.Trim(); - if (!string.IsNullOrWhiteSpace(packageId)) - { - if (packageIdToScore.ContainsKey(packageId)) - { - throw new InvalidOperationException($"The package ID '{packageId}' is duplicate for search query '{searchQuery}' in file, line {lineNumber}: {path}"); - } - - if (string.IsNullOrWhiteSpace(pair.Score)) - { - throw new InvalidOperationException($"The package ID '{packageId}' has a missing score for search query '{searchQuery}' in file, line {lineNumber}: {path}"); - } - - if (!int.TryParse(pair.Score.Trim(), out var score)) - { - throw new InvalidOperationException($"The package ID '{packageId}' has an invalid score for search query '{searchQuery}' in file, line {lineNumber}: {path}"); - } - - if (score < 1 || score > RelevancyScoreBuilder.MaximumRelevancyScore) - { - throw new InvalidOperationException( - $"The package ID '{packageId}' has a score out of range [1, " + - $"{RelevancyScoreBuilder.MaximumRelevancyScore}] for search query " + - $"'{searchQuery}' in file, line {lineNumber}: {path}"); - } - - packageIdToScore.Add(packageId, score); - } - else - { - if (!string.IsNullOrWhiteSpace(pair.Score)) - { - throw new InvalidOperationException($"There is a score without a package ID for search query '{searchQuery}' in file, line {lineNumber}: {path}"); - } - } - } - - if (includeEmpty || packageIdToScore.Any()) - { - existingScores.Add(searchQuery, packageIdToScore); - - output.Add(new CuratedSearchQuery( - searchQuery, - packageIdToScore)); - } - else - { - WarnEmpty(searchQuery); - } - } - - return output; - } - } - - private static void WarnEmpty(string searchQuery) - { - Console.WriteLine($"[ WARN ] Skipping at search query '{searchQuery}' since it has no scores."); - } - - private class Record - { - public string SearchQuery { get; set; } - public string ID0 { get; set; } - public string S0 { get; set; } - public string ID1 { get; set; } - public string S1 { get; set; } - public string ID2 { get; set; } - public string S2 { get; set; } - public string ID3 { get; set; } - public string S3 { get; set; } - public string ID4 { get; set; } - public string S4 { get; set; } - } - } -} diff --git a/SearchScorer/Common/CuratedSearchQuery.cs b/SearchScorer/Common/CuratedSearchQuery.cs deleted file mode 100644 index af4ceda..0000000 --- a/SearchScorer/Common/CuratedSearchQuery.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Collections.Generic; - -namespace SearchScorer.Common -{ - public class CuratedSearchQuery - { - public CuratedSearchQuery(string searchQuery, IReadOnlyDictionary packageIdToScore) - { - SearchQuery = searchQuery; - PackageIdToScore = packageIdToScore; - } - - public string SearchQuery { get; } - public IReadOnlyDictionary PackageIdToScore { get; } - } -} diff --git a/SearchScorer/Common/CustomConverters/ExtensionBadgeConverter.cs b/SearchScorer/Common/CustomConverters/ExtensionBadgeConverter.cs deleted file mode 100644 index b791d10..0000000 --- a/SearchScorer/Common/CustomConverters/ExtensionBadgeConverter.cs +++ /dev/null @@ -1,68 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using System; -using System.Text.Json; -using System.Text.Json.Serialization; -using SearchScorer.Common; - -namespace SearchScorer.Common -{ - public class ExtensionBadgeConverter : JsonConverter - { - public override ExtensionBadge Read( - ref Utf8JsonReader reader, - Type typeToConvert, - JsonSerializerOptions options) - { - if (reader.TokenType != JsonTokenType.StartObject) - { - throw new JsonException(); - } - - var extensionFile = new ExtensionBadge(); - - while (reader.Read()) - { - if (reader.TokenType == JsonTokenType.EndObject) - { - return extensionFile; - } - - if (reader.TokenType == JsonTokenType.PropertyName) - { - string propertyName = reader.GetString().ToLowerInvariant(); - reader.Read(); - switch (propertyName) - { - case "link": - extensionFile.Link = reader.GetString(); - break; - case "imguri": - extensionFile.ImgUri = reader.GetString(); - break; - case "description": - extensionFile.Description = reader.GetString(); - break; - } - } - } - - throw new JsonException(); - } - - public override void Write(Utf8JsonWriter writer, - ExtensionBadge extensionFile, - JsonSerializerOptions options) - { - writer.WriteStartObject(); - - writer.WriteString("link", extensionFile.Link); - writer.WriteString("imgUri", extensionFile.ImgUri); - writer.WriteString("description", extensionFile.Description); - - writer.WriteEndObject(); - } - } -} \ No newline at end of file diff --git a/SearchScorer/Common/CustomConverters/ExtensionFileConverter.cs b/SearchScorer/Common/CustomConverters/ExtensionFileConverter.cs deleted file mode 100644 index f25d76c..0000000 --- a/SearchScorer/Common/CustomConverters/ExtensionFileConverter.cs +++ /dev/null @@ -1,93 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using System; -using System.Text.Json; -using System.Text.Json.Serialization; -using SearchScorer.Common; - -namespace SearchScorer.Common -{ - public class ExtensionFileConverter : JsonConverter - { - public override ExtensionFile Read( - ref Utf8JsonReader reader, - Type typeToConvert, - JsonSerializerOptions options) - { - if (reader.TokenType != JsonTokenType.StartObject) - { - throw new JsonException(); - } - - var extensionFile = new ExtensionFile(); - - while (reader.Read()) - { - if (reader.TokenType == JsonTokenType.EndObject) - { - return extensionFile; - } - - if (reader.TokenType == JsonTokenType.PropertyName) - { - string propertyName = reader.GetString().ToLowerInvariant(); - reader.Read(); - switch (propertyName) - { - case "assettype": - extensionFile.AssetType = reader.GetString(); - break; - case "language": - extensionFile.Language = reader.GetString(); - break; - case "source": - extensionFile.Source = reader.GetString(); - break; - case "version": - extensionFile.Version = reader.GetString(); - break; - case "contenttype": - extensionFile.ContentType = reader.GetString(); - break; - case "fileid": - extensionFile.FileId = reader.GetInt32(); - break; - case "shortdescription": - extensionFile.ShortDescription = reader.GetString(); - break; - case "isdefault": - extensionFile.IsDefault = reader.GetBoolean(); - break; - case "ispublic": - extensionFile.IsPublic = reader.GetBoolean(); - break; - } - } - } - - throw new JsonException(); - } - - public override void Write(Utf8JsonWriter writer, - ExtensionFile extensionFile, - JsonSerializerOptions options) - { - writer.WriteStartObject(); - - writer.WriteString("assetType", extensionFile.AssetType); - if (extensionFile.Language != null) - { - writer.WriteString("language", extensionFile.Language); - } - - if (extensionFile.Source != null) - { - writer.WriteString("source", extensionFile.Source); - } - - writer.WriteEndObject(); - } - } -} \ No newline at end of file diff --git a/SearchScorer/Common/CustomConverters/ExtensionVersionConverter.cs b/SearchScorer/Common/CustomConverters/ExtensionVersionConverter.cs deleted file mode 100644 index 877e8e5..0000000 --- a/SearchScorer/Common/CustomConverters/ExtensionVersionConverter.cs +++ /dev/null @@ -1,186 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text.Json; -using System.Text.Json.Serialization; -using SearchScorer.Common; - -namespace SearchScorer.Common -{ - public class ExtensionVersionConverter : JsonConverter - { - public override ExtensionVersion Read( - ref Utf8JsonReader reader, - Type typeToConvert, - JsonSerializerOptions options) - { - if (reader.TokenType != JsonTokenType.StartObject) - { - throw new JsonException(); - } - - var extensionVersion = new ExtensionVersion(); - - while (reader.Read()) - { - if (reader.TokenType == JsonTokenType.EndObject) - { - return extensionVersion; - } - - if (reader.TokenType == JsonTokenType.PropertyName) - { - string propertyName = reader.GetString().ToLowerInvariant(); - reader.Read(); - switch (propertyName) - { - case "version": - extensionVersion.Version = reader.GetString(); - break; - case "flags": - var extensionVersionFlags = reader.GetString(); - var versionFlags = extensionVersionFlags.Split(",") - .Select(x => x.Trim()) - .ToList(); - ExtensionVersionFlags flags = default(ExtensionVersionFlags); - foreach (var flag in versionFlags) - { - flags = flags | (ExtensionVersionFlags)Enum.Parse(typeof(ExtensionVersionFlags), flag, true); - } - extensionVersion.Flags = flags; - break; - case "lastupdated": - extensionVersion.LastUpdated = reader.GetDateTime(); - break; - case "versiondescription": - extensionVersion.VersionDescription = reader.GetString(); - break; - case "validationresultmessage": - extensionVersion.ValidationResultMessage = reader.GetString(); - break; - case "files": - string files; - using (var jsonDoc = JsonDocument.ParseValue(ref reader)) - { - files = jsonDoc.RootElement.GetRawText(); - } - - extensionVersion.Files = JsonSerializer.Deserialize>(files); - break; - case "properties": - string properties; - using (var jsonDoc = JsonDocument.ParseValue(ref reader)) - { - properties = jsonDoc.RootElement.GetRawText(); - } - extensionVersion.Properties = JsonSerializer.Deserialize>>(properties); - break; - case "badges": - string badges; - using (var jsonDoc = JsonDocument.ParseValue(ref reader)) - { - badges = jsonDoc.RootElement.GetRawText(); - } - extensionVersion.Badges = JsonSerializer.Deserialize>(badges); - break; - case "asseturi": - extensionVersion.AssetUri = reader.GetString(); - break; - case "fallbackasseturi": - extensionVersion.FallbackAssetUri = reader.GetString(); - break; - case "cdndirectory": - extensionVersion.CdnDirectory = reader.GetString(); - break; - case "iscdnenabled": - extensionVersion.IsCdnEnabled = reader.GetBoolean(); - break; - case "targetplatform": - extensionVersion.TargetPlatform = reader.GetString(); - break; - } - } - } - - throw new JsonException(); - } - - public override void Write(Utf8JsonWriter writer, - ExtensionVersion extensionVersion, - JsonSerializerOptions options) - { - writer.WriteStartObject(); - writer.WriteString("version", extensionVersion.Version); - if (extensionVersion.TargetPlatform != null) - { - writer.WriteString("targetPlatform", extensionVersion.TargetPlatform); - } - - writer.WriteString("flags", extensionVersion.Flags.ToString().ConvertFlagsToString()); - writer.WriteString("lastUpdated", extensionVersion.LastUpdated); - if (extensionVersion.VersionDescription != null) - { - writer.WriteString("versionDescription", extensionVersion.VersionDescription); - } - - if (extensionVersion.ValidationResultMessage != null) - { - writer.WriteString("validationResultMessage", extensionVersion.ValidationResultMessage); - } - - if (extensionVersion.Files != null) - { - writer.WriteStartArray("files"); - ExtensionFileConverter extensionFileConverter = new ExtensionFileConverter(); - foreach (var file in extensionVersion.Files) - { - extensionFileConverter.Write(writer, file, options); - } - - writer.WriteEndArray(); - } - - if (extensionVersion.Properties != null) - { - writer.WriteStartArray("properties"); - foreach (var property in extensionVersion.Properties) - { - writer.WriteStartObject(); - writer.WriteString("key", property.Key); - writer.WriteString("value", property.Value); - writer.WriteEndObject(); - } - - writer.WriteEndArray(); - } - - if (extensionVersion.Badges != null) - { - writer.WriteStartArray("badges"); - ExtensionBadgeConverter extensionBadgeConverter = new ExtensionBadgeConverter(); - foreach (var file in extensionVersion.Badges) - { - extensionBadgeConverter.Write(writer, file, options); - } - - writer.WriteEndArray(); - } - - if (extensionVersion.AssetUri != null) - { - writer.WriteString("assetUri", extensionVersion.AssetUri); - } - - if (extensionVersion.FallbackAssetUri != null) - { - writer.WriteString("fallbackAssetUri", extensionVersion.FallbackAssetUri); - } - - writer.WriteEndObject(); - } - } -} diff --git a/SearchScorer/Common/CustomConverters/PublishedExtensionConverter.cs b/SearchScorer/Common/CustomConverters/PublishedExtensionConverter.cs deleted file mode 100644 index 32893f2..0000000 --- a/SearchScorer/Common/CustomConverters/PublishedExtensionConverter.cs +++ /dev/null @@ -1,123 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using System; -using System.Collections.Generic; -using System.Text.Json; -using System.Text.Json.Serialization; -using SearchScorer.Common; - -namespace SearchScorer.Common -{ - public class PublishedExtensionConverter : JsonConverter - { - public override PublishedExtension Read( - ref Utf8JsonReader reader, - Type typeToConvert, - JsonSerializerOptions options) - { - throw new NotImplementedException(); - } - - public override void Write(Utf8JsonWriter writer, - PublishedExtension publishedExtension, - JsonSerializerOptions options) - { - writer.WriteStartObject(); - - writer.WriteStartObject("publisher"); - writer.WriteString("publisherId", publishedExtension.Publisher.PublisherId); - writer.WriteString("publisherName", publishedExtension.Publisher.PublisherName); - writer.WriteString("displayName", publishedExtension.Publisher.DisplayName); - writer.WriteString("flags", publishedExtension.Publisher.Flags.ToString().ConvertFlagsToString()); - writer.WriteString("domain", publishedExtension.Publisher.Domain); - writer.WriteBoolean("isDomainVerified", publishedExtension.Publisher.IsDomainVerified); - writer.WriteEndObject(); - - writer.WriteString("extensionId", publishedExtension.ExtensionId); - writer.WriteString("extensionName", publishedExtension.ExtensionName); - writer.WriteString("displayName", publishedExtension.DisplayName); - writer.WriteString("flags", publishedExtension.Flags.ToString().ConvertFlagsToString()); - writer.WriteString("lastUpdated", publishedExtension.LastUpdated); - writer.WriteString("publishedDate", publishedExtension.PublishedDate); - if (publishedExtension.ReleaseDate != null) - { - writer.WriteString("releaseDate", publishedExtension.ReleaseDate); - } - - if (publishedExtension.ShortDescription != null) - { - writer.WriteString("shortDescription", publishedExtension.ShortDescription); - } - - if (publishedExtension.LongDescription != null) - { - writer.WriteString("longDescription", publishedExtension.LongDescription); - } - - if (publishedExtension.Versions != null) - { - writer.WriteStartArray("versions"); - foreach (var version in publishedExtension.Versions) - { - ExtensionVersionConverter evc = new ExtensionVersionConverter(); - evc.Write(writer, version, options); - } - - writer.WriteEndArray(); - } - - if (publishedExtension.Categories != null) - { - writer.WriteStartArray("categories"); - foreach (var category in publishedExtension.Categories) - { - writer.WriteStringValue(category); - } - - writer.WriteEndArray(); - } - - if (publishedExtension.Tags != null) - { - writer.WriteStartArray("tags"); - foreach (var tag in publishedExtension.Tags) - { - writer.WriteStringValue(tag); - } - - writer.WriteEndArray(); - } - - if (publishedExtension.Statistics != null) - { - writer.WriteStartArray("statistics"); - foreach (var statistics in publishedExtension.Statistics) - { - writer.WriteStartObject(); - writer.WriteString("statisticName", statistics.StatisticName); - writer.WriteNumber("value", statistics.Value); - writer.WriteEndObject(); - } - writer.WriteEndArray(); - } - - if (publishedExtension.InstallationTargets != null) - { - writer.WriteStartArray("installationTargets"); - foreach (var installationTarget in publishedExtension.InstallationTargets) - { - writer.WriteStartObject(); - writer.WriteString("target", installationTarget.Target); - writer.WriteString("targetVersion", installationTarget.TargetVersion); - writer.WriteEndObject(); - } - writer.WriteEndArray(); - } - - writer.WriteNumber("deploymentType", (int)publishedExtension.DeploymentType); - writer.WriteEndObject(); - } - } -} \ No newline at end of file diff --git a/SearchScorer/Common/CustomConverters/ServerExtensionVersionConverter.cs b/SearchScorer/Common/CustomConverters/ServerExtensionVersionConverter.cs deleted file mode 100644 index 7df6a53..0000000 --- a/SearchScorer/Common/CustomConverters/ServerExtensionVersionConverter.cs +++ /dev/null @@ -1,114 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text.Json; -using System.Text.Json.Serialization; -using SearchScorer.Common; - -namespace SearchScorer.Common -{ - public class ServerExtensionVersionConverter : JsonConverter - { - public override ServerExtensionVersion Read( - ref Utf8JsonReader reader, - Type typeToConvert, - JsonSerializerOptions options) - { - if (reader.TokenType != JsonTokenType.StartObject) - { - throw new JsonException(); - } - - var serverExtensionVersion = new ServerExtensionVersion(); - - while (reader.Read()) - { - if (reader.TokenType == JsonTokenType.EndObject) - { - return serverExtensionVersion; - } - - if (reader.TokenType == JsonTokenType.PropertyName) - { - string propertyName = reader.GetString().ToLowerInvariant(); - reader.Read(); - switch (propertyName) - { - case "version": - serverExtensionVersion.Version = reader.GetString(); - break; - case "flags": - string extensionVersionFlags = reader.GetString(); - ExtensionVersionFlags flags = default(ExtensionVersionFlags); - var versionFlags = extensionVersionFlags.Split(",") - .Select(x => x.Trim()) - .ToList(); - - foreach (var flag in versionFlags) - { - flags = flags | (ExtensionVersionFlags)Enum.Parse(typeof(ExtensionVersionFlags), flag, true); - } - - serverExtensionVersion.Flags = flags; - break; - case "lastupdated": - serverExtensionVersion.LastUpdated = reader.GetDateTime(); - break; - case "versiondescription": - serverExtensionVersion.VersionDescription = reader.GetString(); - break; - case "validationresultmessage": - serverExtensionVersion.ValidationResultMessage = reader.GetString(); - break; - case "files": - string files; - using (var jsonDoc = JsonDocument.ParseValue(ref reader)) - { - files = jsonDoc.RootElement.GetRawText(); - } - - serverExtensionVersion.Files = JsonSerializer.Deserialize>(files); - break; - case "properties": - string properties; - using (var jsonDoc = JsonDocument.ParseValue(ref reader)) - { - properties = jsonDoc.RootElement.GetRawText(); - } - - serverExtensionVersion.Properties = JsonSerializer.Deserialize>>(properties); - break; - case "badges": - string badges; - using (var jsonDoc = JsonDocument.ParseValue(ref reader)) - { - badges = jsonDoc.RootElement.GetRawText(); - } - serverExtensionVersion.Badges = JsonSerializer.Deserialize>(badges); - break; - case "asseturi": - serverExtensionVersion.AssetUri = reader.GetString(); - break; - case "fallbackasseturi": - serverExtensionVersion.FallbackAssetUri = reader.GetString(); - break; - case "targetplatform": - serverExtensionVersion.TargetPlatform = reader.GetString(); - break; - } - } - } - - throw new JsonException(); - } - - public override void Write(Utf8JsonWriter writer, ServerExtensionVersion value, JsonSerializerOptions options) - { - throw new NotImplementedException(); - } - } -} diff --git a/SearchScorer/Common/FeedbackDisposition.cs b/SearchScorer/Common/FeedbackDisposition.cs deleted file mode 100644 index 04aa581..0000000 --- a/SearchScorer/Common/FeedbackDisposition.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace SearchScorer.Common -{ - public enum FeedbackDisposition - { - Unknown, - OldIsBetter, - NeitherIsBetter, - NewIsBetterButNeedsWork, - NewIsGreat, - } -} diff --git a/SearchScorer/Common/FeedbackQueriesCsvReader.cs b/SearchScorer/Common/FeedbackQueriesCsvReader.cs deleted file mode 100644 index f8546c4..0000000 --- a/SearchScorer/Common/FeedbackQueriesCsvReader.cs +++ /dev/null @@ -1,111 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using CsvHelper; -using CsvHelper.Configuration; -using CsvHelper.TypeConversion; - -namespace SearchScorer.Common -{ - public static class FeedbackSearchQueriesCsvReader - { - public static IReadOnlyList Read(string path) - { - using (var fileStream = File.OpenRead(path)) - using (var streamReader = new StreamReader(fileStream)) - using (var csvReader = new CsvReader(streamReader)) - { - csvReader.Configuration.RegisterClassMap(); - - return csvReader - .GetRecords() - .Select(x => new FeedbackSearchQuery( - x.Source, - x.FeedbackDisposition, - x.SearchQuery, - x.Buckets, - x.MostRelevantPackageIds)) - .ToList(); - } - } - - private class Record - { - public SearchQuerySource Source { get; set; } - public FeedbackDisposition FeedbackDisposition { get; set; } - public string SearchQuery { get; set; } - public List Buckets { get; set; } - public List MostRelevantPackageIds { get; set; } - } - - private class RecordMap : ClassMap - { - public RecordMap() - { - Map(x => x.Source); - Map(x => x.FeedbackDisposition); - Map(x => x.SearchQuery); - Map(x => x.Buckets).TypeConverter>(); - Map(x => x.MostRelevantPackageIds).TypeConverter>(); - } - } - - private class PipeDelimitedListConverter : ITypeConverter - { - private static readonly Func _converter; - - static PipeDelimitedListConverter() - { - if (typeof(T).IsEnum) - { - _converter = x => Enum.Parse(typeof(T), x); - } - else if (typeof(T) == typeof(string)) - { - _converter = x => x; - } - } - - public object ConvertFromString(string text, IReaderRow row, MemberMapData memberMapData) - { - if (string.IsNullOrEmpty(text)) - { - return new List(); - } - - var output = text - .Split('|') - .Select(x => x.Trim()) - .Where(x => !string.IsNullOrEmpty(x)) - .Select(x => (T)_converter(x)) - .ToList(); - - return output; - } - - public string ConvertToString(object value, IWriterRow row, MemberMapData memberMapData) - { - if (value == null) - { - return string.Empty; - } - - var sb = new StringBuilder(); - var sequence = (IEnumerable)value; - foreach (var item in sequence) - { - if (sb.Length > 0) - { - sb.Append(" | "); - } - - sb.Append(item?.ToString()); - } - - return sb.ToString(); - } - } - } -} diff --git a/SearchScorer/Common/FeedbackSearchQuery.cs b/SearchScorer/Common/FeedbackSearchQuery.cs deleted file mode 100644 index d1f86e3..0000000 --- a/SearchScorer/Common/FeedbackSearchQuery.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System.Collections.Generic; - -namespace SearchScorer.Common -{ - public class FeedbackSearchQuery - { - public FeedbackSearchQuery( - SearchQuerySource source, - FeedbackDisposition feedbackDisposition, - string searchQuery, - IReadOnlyList buckets, - IReadOnlyList mostRelevantPackageIds) - { - Source = source; - FeedbackDisposition = feedbackDisposition; - SearchQuery = searchQuery; - Buckets = buckets; - MostRelevantPackageIds = mostRelevantPackageIds; - } - - public SearchQuerySource Source { get; } - public FeedbackDisposition FeedbackDisposition { get; } - public string SearchQuery { get; } - public IReadOnlyList Buckets { get; } - public IReadOnlyList MostRelevantPackageIds { get; } - - public override string ToString() - { - return $"{SearchQuery} => {string.Join(" | ", MostRelevantPackageIds)}"; - } - } -} diff --git a/SearchScorer/Common/GitHubRepository.cs b/SearchScorer/Common/GitHubRepository.cs deleted file mode 100644 index 5d5fd38..0000000 --- a/SearchScorer/Common/GitHubRepository.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Collections.Generic; -using Newtonsoft.Json; - -namespace SearchScorer.Common -{ - public class GitHubRepository - { - [JsonConstructor] - public GitHubRepository(string url, int stars, string id, string description, IReadOnlyList dependencies) - { - Url = url; - Stars = stars; - Id = id; - Description = description; - Dependencies = dependencies; - } - - public string Url { get; } - public int Stars { get; } - public string Id { get; } - public string Description { get; } - public IReadOnlyList Dependencies { get; } - } -} diff --git a/SearchScorer/Common/GitHubUsageCsvWriter.cs b/SearchScorer/Common/GitHubUsageCsvWriter.cs deleted file mode 100644 index f82e1a3..0000000 --- a/SearchScorer/Common/GitHubUsageCsvWriter.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using System.Linq; -using CsvHelper; - -namespace SearchScorer.Common -{ - public static class GitHubUsageCsvWriter - { - public static void Write(string path, IReadOnlyList repositories) - { - using (var fileStream = new FileStream(path, FileMode.Create)) - using (var streamWriter = new StreamWriter(fileStream)) - using (var csvWriter = new CsvWriter(streamWriter)) - { - var records = repositories - .SelectMany(x => x - .Dependencies - .Select(d => new Record { RepositoryId = x.Id, Stars = x.Stars, Dependency = d })); - - csvWriter.WriteHeader(); - csvWriter.NextRecord(); - csvWriter.WriteRecords(records); - } - } - - private class Record - { - public string RepositoryId { get; set; } - public int Stars { get; set; } - public string Dependency { get; set; } - } - } -} diff --git a/SearchScorer/Common/GitHubUsageJsonReader.cs b/SearchScorer/Common/GitHubUsageJsonReader.cs deleted file mode 100644 index 943db60..0000000 --- a/SearchScorer/Common/GitHubUsageJsonReader.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using Newtonsoft.Json; - -namespace SearchScorer.Common -{ - public static class GitHubUsageJsonReader - { - public static IReadOnlyList Read(string path) - { - using (var fileStream = File.OpenRead(path)) - using (var streamReader = new StreamReader(fileStream)) - using (var jsonReader = new JsonTextReader(streamReader)) - { - return new JsonSerializer().Deserialize>(jsonReader); - } - } - } -} diff --git a/SearchScorer/Common/GoogleAnalyticsSearchReferralsCsvReader.cs b/SearchScorer/Common/GoogleAnalyticsSearchReferralsCsvReader.cs deleted file mode 100644 index 467a514..0000000 --- a/SearchScorer/Common/GoogleAnalyticsSearchReferralsCsvReader.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Web; -using CsvHelper; - -namespace SearchScorer.Common -{ - public class GoogleAnalyticsSearchReferralsCsvReader - { - public static IReadOnlyDictionary Read(string path) - { - using (var fileStream = File.OpenRead(path)) - using (var streamReader = new StreamReader(fileStream)) - using (var csvReader = new CsvReader(streamReader)) - { - csvReader.Configuration.HasHeaderRecord = true; - csvReader.Configuration.IgnoreBlankLines = true; - - var output = new Dictionary(); - - csvReader.Read(); // comment - csvReader.Read(); // comment - csvReader.Read(); // comment - csvReader.Read(); // comment - csvReader.Read(); // comment - csvReader.Read(); // empty line - csvReader.ReadHeader(); - - while (csvReader.Read()) - { - var landingPage = csvReader.GetField("Landing Page"); - var landingUri = new Uri("http://example" + landingPage); - var queryString = HttpUtility.ParseQueryString(landingUri.Query); - - // Skip queries where we are not hitting the first page. - if (int.TryParse(queryString["page"], out var page) && page != 1) - { - continue; - } - - var searchTerm = csvReader.GetField("Search Term"); - var sessions = int.Parse(csvReader.GetField("Sessions").Replace(",", string.Empty)); - - if (output.TryGetValue(searchTerm, out var existingSessions)) - { - output[searchTerm] += sessions; - } - else - { - output.Add(searchTerm, sessions); - } - } - - return output; - } - } - - private class Record - { - public string LandingPage { get; set; } - public string SearcTerm { get; set; } - public int Sessions { get; set; } - } - } -} diff --git a/SearchScorer/Common/HashedSearchQueryCsvWriter.cs b/SearchScorer/Common/HashedSearchQueryCsvWriter.cs deleted file mode 100644 index 8406c49..0000000 --- a/SearchScorer/Common/HashedSearchQueryCsvWriter.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using System.Linq; -using CsvHelper; - -namespace SearchScorer.Common -{ - public static class HashedSearchQueryCsvWriter - { - public static void Write(string key, string path, IReadOnlyDictionary searchQueries) - { - using (var fileStream = new FileStream(path, FileMode.Create)) - using (var streamWriter = new StreamWriter(fileStream)) - using (var csvWriter = new CsvWriter(streamWriter)) - { - csvWriter.WriteField("Query"); - csvWriter.WriteField("HashedQuery"); - csvWriter.WriteField("Count"); - csvWriter.NextRecord(); - - var additional = new[] { string.Empty, " ", " ", " " }; - var localSearchQueries = new Dictionary(); - foreach (var pair in searchQueries) - { - localSearchQueries[pair.Key] = pair.Value; - } - - foreach (var a in additional) - { - if (!localSearchQueries.ContainsKey(a)) - { - localSearchQueries[a] = 0; - } - } - - var hasher = new Hasher(key); - foreach (var pair in localSearchQueries.OrderByDescending(x => x.Value)) - { - csvWriter.WriteField(pair.Key); - csvWriter.WriteField(hasher.Hash(pair.Key)); - csvWriter.WriteField(pair.Value); - csvWriter.NextRecord(); - } - } - } - } -} diff --git a/SearchScorer/Common/Hasher.cs b/SearchScorer/Common/Hasher.cs deleted file mode 100644 index aaba9be..0000000 --- a/SearchScorer/Common/Hasher.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using System.Security.Cryptography; -using System.Text; - -namespace SearchScorer.Common -{ - public class Hasher - { - private class FipsHMACSHA256 : HMAC - { - public FipsHMACSHA256(byte[] key) - { - HashName = typeof(SHA256CryptoServiceProvider).AssemblyQualifiedName; - HashSizeValue = 256; - Key = key; - } - } - - private readonly HashAlgorithm _encrypter; - - public Hasher(string key) - { - _encrypter = new FipsHMACSHA256(Encoding.UTF8.GetBytes(key)); - } - - public string Hash(string value) - { - return BitConverter.ToString(_encrypter.ComputeHash(Encoding.UTF8.GetBytes(value))).Replace("-", string.Empty); - } - } -} diff --git a/SearchScorer/Common/Models/CdnUriPathBuilder.cs b/SearchScorer/Common/Models/CdnUriPathBuilder.cs deleted file mode 100644 index 5616a1c..0000000 --- a/SearchScorer/Common/Models/CdnUriPathBuilder.cs +++ /dev/null @@ -1,30 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using System; - -namespace SearchScorer.Common -{ - public class CdnUriPathBuilder - { - public string PublisherName { get; set; } - public string ExtensionName { get; set; } - public string ExtensionVersion { get; set; } - public string AssetRoot { get; set; } - - public const string CdnUrlFormat = "{0}/{1}/{2}/{3}"; - - public static string GetExtensionAssetUploadPath(string publisherName, - string extensionName, - string extensionVersion, - string assetRoot) - { - return string.Format(CdnUrlFormat, - Uri.EscapeDataString(publisherName.ToLowerInvariant()), - Uri.EscapeDataString(extensionName.ToLowerInvariant()), - Uri.EscapeDataString(extensionVersion.ToLowerInvariant()), - assetRoot != null ? Uri.EscapeDataString(assetRoot) : string.Empty); - } - } -} \ No newline at end of file diff --git a/SearchScorer/Common/Models/ExtensionFile.cs b/SearchScorer/Common/Models/ExtensionFile.cs deleted file mode 100644 index e18a31d..0000000 --- a/SearchScorer/Common/Models/ExtensionFile.cs +++ /dev/null @@ -1,38 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using System; -using System.Text.Json.Serialization; - -namespace SearchScorer.Common -{ - [JsonConverter(typeof(ExtensionFileConverter))] - public class ExtensionFile - { - internal Guid ReferenceId { get; set; } - - public String AssetType { get; set; } - - public String Language { get; set; } - - public String Source { get; set; } - - public String Version { get; set; } - - public String ContentType { get; set; } - - public Int32 FileId { get; set; } - - public String ShortDescription { get; set; } - - public Boolean IsDefault { get; set; } - - public Boolean IsPublic { get; set; } - - internal ExtensionFile ShallowCopy() - { - return (ExtensionFile)this.MemberwiseClone(); - } - } -} diff --git a/SearchScorer/Common/Models/ExtensionQuery.cs b/SearchScorer/Common/Models/ExtensionQuery.cs deleted file mode 100644 index e8fbde7..0000000 --- a/SearchScorer/Common/Models/ExtensionQuery.cs +++ /dev/null @@ -1,467 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using System; -using System.Collections.Generic; -using System.Runtime.Serialization; - -namespace SearchScorer.Common -{ - public static class WellKnownTags - { - public const String Tag_BuiltIn = "$BuiltIn"; - public const String Tag_Featured = "$Featured"; - public const String Tag_FromMS = "$FromMS"; - public const String Tag_TopFree = "$TopFree"; - public const String Tag_TopPaid = "$TopPaid"; - public const String Tag_TopRated = "$TopRated"; - } - - /// - /// Type of extension filters that are supported in the queries. - /// - [DataContract] - public enum ExtensionQueryFilterType - { - /// - /// The values are used as tags. All tags are treated as "OR" conditions - /// with each other. There may be some value put on the number of matched - /// tags from the query. - /// - [DataMember] - Tag = 1, - - /// - /// The Values are an ExtensionName or fragment that is used to match other - /// extension names. - /// - [DataMember] - DisplayName = 2, - - /// - /// The Filter is one or more tokens that define what scope to return - /// private extensions for. - /// - [DataMember] - Private = 3, - - /// - /// Retrieve a set of extensions based on their id's. The values should be - /// the extension id's encoded as strings. - /// - [DataMember] - Id = 4, - - /// - /// The category is unlike other filters. It is AND'd with the other filters - /// instead of being a separate query. - /// - [DataMember] - Category = 5, - - /// - /// Certain contribution types may be indexed to allow for query by type. - /// User defined types can't be indexed at the moment. - /// - [DataMember] - ContributionType = 6, - - /// - /// Retrieve an set extension based on the name based identifier. This - /// differs from the internal id (which is being deprecated). - /// - [DataMember] - Name = 7, - - /// - /// The InstallationTarget for an extension defines the target consumer - /// for the extension. This may be something like VS, VSOnline, or VSCode - /// - [DataMember] - InstallationTarget = 8, - - /// - /// Query for featured extensions, no value is allowed when using the - /// query type. - /// - [DataMember] - Featured = 9, - - /// - /// The SearchText provided by the user to search for extensions - /// - [DataMember] - SearchText = 10, - - /// - /// Query for extensions that are featured in their own category, The filterValue - /// for this is name of category of extensions. - /// - [DataMember] - FeaturedInCategory = 11, - - /// - /// When retrieving extensions from a query, exclude the extensions which are - /// having the given flags. The value specified for this filter should be a string - /// representing the integer values of the flags to be excluded. In case of multiple flags - /// to be specified, a logical OR of the interger values should be given as value for this filter - /// This should be at most one filter of this type. - /// This only acts as a restrictive filter after. - /// In case of having a particular flag in both IncludeWithFlags and ExcludeWithFlags, - /// excludeFlags will remove the included extensions giving empty result for that flag. - /// - [DataMember] - ExcludeWithFlags = 12, - - /// - /// When retrieving extensions from a query, include the extensions which are - /// having the given flags. The value specified for this filter should be a string - /// representing the integer values of the flags to be included. In case of multiple flags - /// to be specified, a logical OR of the integer values should be given as value for this filter - /// This should be at most one filter of this type. - /// This only acts as a restrictive filter after. - /// In case of having a particular flag in both IncludeWithFlags and ExcludeWithFlags, - /// excludeFlags will remove the included extensions giving empty result for that flag. - /// In case of multiple flags given in IncludeWithFlags in ORed fashion, extensions having any of the given flags will be included. - /// - [DataMember] - IncludeWithFlags = 13, - - /// - /// Filter the extensions based on the LCID values applicable. Any extensions which are not having any LCID values - /// will also be filtered. This is currently only supported for VS extensions. - /// - [DataMember] - Lcid = 14, - - /// - /// Filter to provide the version of the installation target. This filter will be used along with InstallationTarget filter. - /// The value should be a valid version string. Currently supported only if search text is provided. - /// - [DataMember] - InstallationTargetVersion = 15, - - /// - /// Filter type for specifying a range of installation target version. The filter will be used along with InstallationTarget filter. - /// The value should be a pair of well formed version values separated by hyphen(-). Currently supported only if search text is provided. - /// - [DataMember] - InstallationTargetVersionRange = 16, - - /// - /// Filter type for specifying metadata key and value to be used for filtering. - /// - [DataMember] - VsixMetadata = 17, - - /// - /// Filter to get extensions published by a publisher having supplied internal name - /// - [DataMember] - PublisherName = 18, - - /// - /// Filter to get extensions published by all publishers having supplied display name - /// - [DataMember] - PublisherDisplayName = 19, - - /// - /// When retrieving extensions from a query, include the extensions which have a publisher - /// having the given flags. The value specified for this filter should be a string - /// representing the integer values of the flags to be included. In case of multiple flags - /// to be specified, a logical OR of the integer values should be given as value for this filter - /// There should be at most one filter of this type. - /// This only acts as a restrictive filter after. - /// In case of multiple flags given in IncludeWithFlags in ORed fashion, extensions having any of the given flags will be included. - /// - [DataMember] - IncludeWithPublisherFlags = 20, - - /// - /// Filter to get extensions shared with particular organization - /// - [DataMember] - [Obsolete] - OrganizationSharedWith = 21, - - /// - /// Filter to get VS IDE extensions by Product Architecture - /// - [DataMember] - ProductArchitecture = 22, - - /// - /// Filter to get VS Code extensions by target platform. - /// - [DataMember] - TargetPlatform = 23 - } - - /// - /// Defines the sort order that can be defined for Extensions query - /// - [DataContract] - public enum SortByType - { - /// - /// The results will be sorted by relevance in case search query is given, if no search query resutls will be provided as is - /// - [DataMember] - Relevance = 0, - - /// - /// The results will be sorted as per Last Updated date of the extensions with recently updated at the top - /// - [DataMember] - LastUpdatedDate = 1, - - /// - /// Results will be sorted Alphabetically as per the title of the extension - /// - [DataMember] - Title = 2, - - /// - /// Results will be sorted Alphabetically as per Publisher title - /// - [DataMember] - Publisher = 3, - - /// - /// Results will be sorted by Install Count - /// - [DataMember] - InstallCount = 4, - - /// - /// The results will be sorted as per Published date of the extensions - /// - [DataMember] - PublishedDate = 5, - - /// - /// The results will be sorted as per Average ratings of the extensions - /// - [DataMember] - AverageRating = 6, - - /// - /// The results will be sorted as per Trending Daily Score of the extensions - /// - [DataMember] - TrendingDaily = 7, - - /// - /// The results will be sorted as per Trending weekly Score of the extensions - /// - [DataMember] - TrendingWeekly = 8, - - /// - /// The results will be sorted as per Trending monthly Score of the extensions - /// - [DataMember] - TrendingMonthly = 9, - - /// - /// The results will be sorted as per ReleaseDate of the extensions (date on which the extension first went public) - /// - [DataMember] - ReleaseDate = 10, - - /// - /// The results will be sorted as per Author defined in the VSix/Metadata. If not defined, publisher name is used - /// This is specifically needed by VS IDE, other (new and old) clients are not encouraged to use this - /// - [DataMember] - Author = 11, - - /// - /// The results will be sorted as per Weighted Rating of the extension. - /// - [DataMember] - WeightedRating = 12 - } - - /// - /// Defines the sort order that can be defined for Extensions query - /// - [DataContract] - public enum SortOrderType - { - /// - /// Results will be sorted in the default order as per the sorting type defined. - /// The default varies for each type, e.g. for Relevance, default is Descending, for Title default is Ascending etc. - /// - [DataMember] - Default = 0, - - /// - /// The results will be sorted in Ascending order - /// - [DataMember] - Ascending = 1, - - /// - /// The results will be sorted in Descending order - /// - [DataMember] - Descending = 2 - } - - /// - /// An ExtensionQuery is used to search the gallery for a set of - /// extensions that match one of many filter values. - /// - public class ExtensionQuery - { - /// - /// Each filter is a unique query and will have matching set of extensions - /// returned from the request. Each result will have the same index in the - /// resulting array that the filter had in the incoming query. - /// - public List Filters { get; set; } - - /// - /// The Flags are used to determine which set of information the caller would - /// like returned for the matched extensions. - /// - public ExtensionQueryFlags Flags { get; set; } - - /// - /// When retrieving extensions with a query; frequently the caller only - /// needs a small subset of the assets. The caller may specify a list - /// of asset types that should be returned if the extension contains it. - /// All other assets will not be returned. - /// - public List AssetTypes { get; set; } - - /// - /// The flags are used to determine what metadata is to be sent along with the - /// query response. This works only for SearchExtensions query and not for QueryExtensions. - /// - // internal ExtensionQueryResultMetadataFlags? MetadataFlags { get; set; } - public ExtensionQueryResultMetadataFlags? MetadataFlags { get; set; } - } - - /// - /// This is the set of extensions that matched a supplied query through the - /// filters given. - /// - public class ExtensionQueryResult - { - /// - /// For each filter supplied in the query, a filter result will be returned - /// in the query result. - /// - public List Results { get; set; } - } - - /// - /// The FilterResult is the set of extensions that matched a particular - /// query filter. - /// - public class ExtensionFilterResult - { - /// - /// This is the set of applications that matched the query filter - /// supplied. - /// - public List Extensions { get; set; } - - /// - /// The PagingToken is returned from a request when more records exist - /// that match the result than were requested or could be returned. A - /// follow-up query with this paging token can be used to retrieve - /// more results. - /// - public String PagingToken { get; set; } - - /// - /// This is the additional optional metadata for the given result. - /// E.g. Total count of results which is useful in case of paged results - /// - public List ResultMetadata { get; set; } - } - - /// - /// ExtensionFilterResultMetadata is one set of metadata for the result e.g. Total count. - /// There can be multiple metadata items for one metadata. - /// - public class ExtensionFilterResultMetadata - { - /// - /// Defines the category of metadata items - /// - public String MetadataType { get; set; } - - /// - /// The metadata items for the category - /// - public List MetadataItems { get; set; } - } - - /// - /// MetadataItem is one value of metadata under a given category of metadata - /// - public class MetadataItem - { - /// - /// The name of the metadata item - /// - public String Name { get; set; } - - /// - /// The count of the metadata item - /// - public int Count { get; set; } - } - - /// - /// Parameters which can be given as part of search query - /// All parameters restrict the result set by default. - /// Multiple params of same type means OR for the given values - /// - public static class EqlParams - { - /// - /// Name parameter to restrict the results matching extension name only to the given value following the parameter - /// If nothing else is given all extension names matching the given value are returned. - /// Multiple params of name within same query means extensions matching any one of the given values - /// - public const string Name = "name:"; - - /// - /// Publisher parameter to restrict the results matching publisher name only to the given value following the parameter - /// If nothing else is given all extension by publishers whose name is matching the given value are returned. - /// Multiple params of publisher within same query means extensions' publisher name matching any one of the given values - /// - public const string Publisher = "publisher:"; - - /// - /// Tag parameter to restrict the results matching tag name only to the given value following the parameter - /// If nothing else is given all extension with tag name matching the given value are returned. - /// Multiple params of tag within same query means extensions' having tag name matching any one of the given values - /// - public const string Tag = "tag:"; - - /// - /// Category parameter to restrict the results matching "Exact" category name only to the given value following the parameter - /// If nothing else is given all extension having category name matching the given value are returned. - /// Multiple params of category within same query means extensions' belonging to any one of the given values - /// - public const string Category = "category:"; - - /// - /// Installation target parameter to restrict the results matching "Exact" installation target name only to the given value - /// following the parameter. - /// If nothing else is given all extension having installation target matching the given value are returned. - /// Multiple params of installation target within same query means extensions' belonging to any one of the given values - /// The installation targets should be encloseed in double quotes as it may contain '.'s and search query will not interpret - /// the dots without double quotes. - /// - public const string Target = "target:"; - } -} diff --git a/SearchScorer/Common/Models/ExtensionStatistic.cs b/SearchScorer/Common/Models/ExtensionStatistic.cs deleted file mode 100644 index 9330a26..0000000 --- a/SearchScorer/Common/Models/ExtensionStatistic.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using System; - -namespace SearchScorer.Common -{ - public class ExtensionStatistic - { - public String StatisticName { get; set; } - - public Double Value { get; set; } - - public ExtensionStatistic ShallowCopy() - { - return (ExtensionStatistic)this.MemberwiseClone(); - } - } -} diff --git a/SearchScorer/Common/Models/PackageDetails.cs b/SearchScorer/Common/Models/PackageDetails.cs deleted file mode 100644 index 519be9b..0000000 --- a/SearchScorer/Common/Models/PackageDetails.cs +++ /dev/null @@ -1,34 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using System; -using System.Text.Json.Serialization; - -namespace SearchScorer.Common -{ - [JsonConverter(typeof(ExtensionBadgeConverter))] - public class ExtensionBadge - { - public String Link { get; set; } - - public String ImgUri { get; set; } - - public String Description { get; set; } - } - - public class InstallationTarget - { - public String Target { get; set; } - - public String TargetVersion { get; set; } - - public Version MinVersion { get; set; } - - public Version MaxVersion { get; set; } - - public bool MinInclusive { get; set; } - - public bool MaxInclusive { get; set; } - } -} diff --git a/SearchScorer/Common/Models/PublishedExtension.cs b/SearchScorer/Common/Models/PublishedExtension.cs deleted file mode 100644 index 990f2fc..0000000 --- a/SearchScorer/Common/Models/PublishedExtension.cs +++ /dev/null @@ -1,557 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using System; -using System.Collections.Generic; -using System.Text.Json.Serialization; - -namespace SearchScorer.Common -{ - /// - /// Set of flags that can be associated with a given extension. These flags - /// apply to all versions of the extension and not to a specific version. - /// - [Flags] - public enum PublishedExtensionFlags - { - /// - /// No flags exist for this extension. - /// - None = 0x0000, - - /// - /// The Disabled flag for an extension means the extension can't be - /// changed and won't be used by consumers. The disabled flag is managed - /// by the service and can't be supplied by the Extension Developers. - /// - Disabled = 0x0001, - - /// - /// BuiltIn Extension are available to all Tenants. An explicit registration - /// is not required. This attribute is reserved and can't be supplied by - /// Extension Developers. - /// - /// BuiltIn extensions are by definition Public. There is no need to set - /// the public flag for extensions marked BuiltIn. - /// - BuiltIn = 0x0002, - - /// - /// This extension has been validated by the service. The extension - /// meets the requirements specified. This attribute is reserved and can't - /// be supplied by the Extension Developers. Validation is a process - /// that ensures that all contributions are well formed. They meet the - /// requirements defined by the contribution type they are extending. - /// Note this attribute will be updated asynchronously as the extension - /// is validated by the developer of the contribution type. There will - /// be restricted access to the extension while this process is performed. - /// - Validated = 0x0004, - - /// - /// Trusted extensions are ones that are given special capabilities. These - /// tend to come from Microsoft and can't be published by the general - /// public. - /// - /// Note: BuiltIn extensions are always trusted. - /// - Trusted = 0x0008, - - /// - /// The Paid flag indicates that the commerce can be enabled for this extension. - /// Publisher needs to setup Offer/Pricing plan in Azure. If Paid flag is set and a corresponding Offer is not available, - /// the extension will automatically be marked as Preview. If the publisher intends to make the extension Paid in the future, - /// it is mandatory to set the Preview flag. This is currently available only for VSTS extensions only. - /// - Paid = 0x0010, - - /// - /// This extension registration is public, making its visibility open - /// to the public. This means all tenants have the ability to install - /// this extension. Without this flag the extension will be private and - /// will need to be shared with the tenants that can install it. - /// - Public = 0x0100, - - /// - /// This extension has multiple versions active at one time and version - /// discovery should be done using the defined "Version Discovery" protocol - /// to determine the version available to a specific user or tenant. - /// - /// @TODO: Link to Version Discovery Protocol. - /// - MultiVersion = 0x0200, - - /// - /// The system flag is reserved, and cant be used by publishers. - /// - System = 0x0400, - - /// - /// The Preview flag indicates that the extension is still under preview (not yet of "release" quality). - /// These extensions may be decorated differently in the gallery and may have different policies applied to them. - /// - Preview = 0x0800, - - /// - /// The Unpublished flag indicates that the extension can't be installed/downloaded. - /// Users who have installed such an extension can continue to use the extension. - /// - Unpublished = 0x1000, - - /// - /// The Trial flag indicates that the extension is in Trial version. - /// The flag is right now being used only with respect to Visual Studio extensions. - /// - Trial = 0x2000, - - /// - /// The Locked flag indicates that extension has been locked from Marketplace. - /// Further updates/acquisitions are not allowed on the extension until this is present. - /// This should be used along with making the extension private/unpublished. - /// - Locked = 0x4000, - - /// - /// This flag is set for extensions we want to hide from Marketplace home and search pages. - /// This will be used to override the exposure of builtIn flags. - /// - Hidden = 0x8000 - } - - /// - /// Set of flags that can be associated with a given extension version. These flags - /// apply to a specific version of the extension. - /// - [Flags] - public enum ExtensionVersionFlags - { - /// - /// No flags exist for this version. - /// - None = 0x0000, - - /// - /// The Validated flag for a version means the extension version - /// has passed validation and can be used.. - /// - Validated = 0x0001 - } - - - /// - /// - public enum ExtensionDeploymentTechnology - { - Exe = 1, - - Msi, - - Vsix, - - ReferralLink - } - - /// - /// Set of flags used to determine which set of information is retrieved - /// when reading published extensions - /// - [Flags] - public enum ExtensionQueryFlags - { - /// - /// None is used to retrieve only the basic extension details. - /// - None = 0x0, - - /// - /// IncludeVersions will return version information for extensions returned - /// - IncludeVersions = 0x1, - - /// - /// IncludeFiles will return information about which files were found - /// within the extension that were stored independent of the manifest. - /// When asking for files, versions will be included as well since files - /// are returned as a property of the versions. - /// - /// These files can be retrieved using the path to the file without - /// requiring the entire manifest be downloaded. - /// - IncludeFiles = 0x2, - - /// - /// Include the Categories and Tags that were added to the extension definition. - /// - IncludeCategoryAndTags = 0x4, - - /// - /// Include the details about which accounts the extension has been shared - /// with if the extension is a private extension. - /// - // IncludeSharedAccounts = 0x8, - - /// - /// Include properties associated with versions of the extension - /// - IncludeVersionProperties = 0x10, - - /// - /// Excluding non-validated extensions will remove any extension versions that - /// either are in the process of being validated or have failed validation. - /// - ExcludeNonValidated = 0x20, - - /// - /// Include the set of installation targets the extension has requested. - /// - IncludeInstallationTargets = 0x40, - - /// - /// Include the base uri for assets of this extension - /// - IncludeAssetUri = 0x80, - - /// - /// Include the statistics associated with this extension - /// - IncludeStatistics = 0x100, - - /// - /// When retrieving versions from a query, only include the latest - /// version of the extensions that matched. This is useful when the - /// caller doesn't need all the published versions. It will save a - /// significant size in the returned payload. - /// - IncludeLatestVersionOnly = 0x200, - - /// - /// This flag switches the asset uri to use GetAssetByName instead of CDN - /// When this is used, values of base asset uri and base asset uri fallback are switched - /// When this is used, source of asset files are pointed to Gallery service always even if CDN is available - /// - UseFallbackAssetUri = 0x400, - - /// - /// This flag is used to get all the metadata values associated with the extension. This is not applicable to VSTS or - /// VSCode extensions and usage is only internal. - /// - IncludeMetadata = 0x800, - - /// - /// This flag is used to indicate to return very small data for extension required by VS IDE. This flag is only compatible - /// when querying is done by VS IDE - /// - IncludeMinimalPayloadForVsIde = 0x1000, - - /// - /// This flag is used to get Lcid values associated with the extension. This is not applicable to VSTS - /// or VSCode extensions and usage is only internal - /// - IncludeLcids = 0x2000, - - /// - /// AllAttributes is designed to be a mask that defines all sub-elements of - /// the extension should be returned. - /// - /// NOTE: This is not actually All flags. This is now locked to the set - /// defined since changing this enum would be a breaking change and would - /// change the behavior of anyone using it. Try not to use this value when - /// making calls to the service, instead be explicit about the options - /// required. - /// - // AllAttributes = IncludeVersions | IncludeFiles | IncludeCategoryAndTags | IncludeSharedAccounts | IncludeVersionProperties | IncludeInstallationTargets | IncludeAssetUri | IncludeStatistics | IncludeSharedOrganizations, - AllAttributes = IncludeVersions | IncludeFiles | IncludeCategoryAndTags | IncludeVersionProperties | IncludeInstallationTargets | IncludeAssetUri | IncludeStatistics, - } - - [Flags] - // internal enum ExtensionQueryResultMetadataFlags - public enum ExtensionQueryResultMetadataFlags - { - /// - /// No metadata will be returned - /// - None = 0x0, - - /// - /// Include the result total count metadata - /// - IncludeResultCount = 0x1, - - /// - /// Include Categories metadata before applying any category filtering. This is useful to show the counts of other categories - /// even though the user has filtered on one of the category - /// - IncludePreCategoryFilterCategories = 0x2, - - /// - /// Include Categories metadata of the final result set - /// - IncludeResultSetCategories = 0x4, - - /// - /// Include ProjectType metadata of the final result set. This is required for Programming Language Filter in Visual Studio IDE integration. - /// - IncludeResultSetProjectType = 0x8, - - /// - /// Include the target platforms metadata. This is useful to show the counts of each TargetPlatform on the target platforms filter while searching VSCode extensions. - /// - IncludeTargetPlatforms = 0x10 - } - - /// - /// Class to hold extension metadata value - /// Currently this is internal. We may not want to make every metadata value public. - /// - // internal class ExtensionMetadata - public class ExtensionMetadata - { - public String Key { get; set; } - - public String Value { get; set; } - - public ExtensionMetadata ShallowCopy() - { - return (ExtensionMetadata)this.MemberwiseClone(); - } - } - - /// - /// High-level information about the publisher, like id's and names - /// - public class PublisherFacts - { - public Guid PublisherId { get; set; } - - public String PublisherName { get; set; } - - public String DisplayName { get; set; } - - public PublisherFlags Flags { get; set; } - - public String Domain { get; set; } - - public Boolean IsDomainVerified { get; set; } - } - - /// - /// - /// - [JsonConverter(typeof(PublishedExtensionConverter))] - public class PublishedExtension - { - public PublisherFacts Publisher { get; set; } - - public Guid ExtensionId { get; set; } - - public String ExtensionName { get; set; } - - public String DisplayName { get; set; } - - public PublishedExtensionFlags Flags { get; set; } - - public DateTime LastUpdated { get; set; } - - /// - /// Date on which the extension was first uploaded. - /// - public DateTime PublishedDate { get; set; } - - /// - /// Date on which the extension first went public. - /// - public DateTime ReleaseDate { get; set; } - - public String ShortDescription { get; set; } - - public String LongDescription { get; set; } - - public List Versions { get; set; } - - public List Categories { get; set; } - - public List Tags { get; set; } - - - public List Statistics { get; set; } - - public List InstallationTargets { get; set; } - - public List Metadata { get; set; } - - public List Lcids { get; set; } - - public ExtensionDeploymentTechnology DeploymentType { get; set; } - - public String GetProperty( - String version, - String propertyName) - { - if (!String.IsNullOrEmpty(version) && Versions != null && Versions.Count > 0) - { - ExtensionVersion extensionVersion = null; - - if (version.Equals("latest")) - { - extensionVersion = Versions[0]; - } - else - { - foreach (ExtensionVersion ev in Versions) - { - if (ev.Version.Equals(version)) - { - extensionVersion = ev; - break; - } - } - } - - if (extensionVersion != null && extensionVersion.Properties != null) - { - foreach (KeyValuePair kvp in extensionVersion.Properties) - { - if (kvp.Key.Equals(propertyName)) - { - return kvp.Value; - } - } - } - } - - return null; - } - - public PublishedExtension ShallowCopy() - { - return (PublishedExtension)this.MemberwiseClone(); - } - } - - /// - /// - /// - /// Note: We have created a copy of ExtensionVersion named ServerExtensionVersion. - /// If you are doing any change in ExtensionVersion, please make sure that it should be added to ServerExtensionVersion too. - [JsonConverter(typeof(ExtensionVersionConverter))] - public class ExtensionVersion - { - internal Guid ExtensionId { get; set; } - - public String Version { get; set; } - - public String TargetPlatform { get; set; } - - public ExtensionVersionFlags Flags { get; set; } - - public DateTime LastUpdated { get; set; } - - public String VersionDescription { get; set; } - - public String ValidationResultMessage { get; set; } - - public List Files { get; set; } - - public List> Properties { get; set; } - - public List Badges { get; set; } - - public String AssetUri { get; set; } - - public String FallbackAssetUri { get; set; } - - public string CdnDirectory { get; set; } - - public bool IsCdnEnabled { get; set; } - - public ExtensionVersion ShallowCopy() - { - return (ExtensionVersion)this.MemberwiseClone(); - } - - public string GetCdnDirectory() - { - return CdnDirectory; - } - } - - /// - public class ExtensionCategory - { - /// - /// This is the internal name for a category - /// - public String CategoryName { get; set; } - - /// - /// This is the internal name of the parent if this is associated with a parent - /// - public String ParentCategoryName { get; set; } - - /// - /// The name of the products with which this category is associated to. - /// - public List AssociatedProducts { get; set; } - - internal int MigratedId { get; set; } - internal int ParentId { get; set; } - public ExtensionCategory Parent { get; set; } - - /// - /// This parameter is obsolete. Refer to LanguageTitles for language specific titles - /// - public String Language { get; set; } - - public Int32 CategoryId { get; set; } - - /// - /// The list of all the titles of this category in various languages - /// - public List LanguageTitles { get; set; } - - internal ExtensionCategory ShallowCopy() - { - return (ExtensionCategory)this.MemberwiseClone(); - } - - public string GetCategoryTitleForLanguage(string language) - { - if (LanguageTitles != null && LanguageTitles.Count > 0) - { - foreach (CategoryLanguageTitle categoryLanguageTitle in LanguageTitles) - { - if (categoryLanguageTitle.Lang != null && - categoryLanguageTitle.Lang.Equals(language, StringComparison.OrdinalIgnoreCase)) - { - return categoryLanguageTitle.Title; - } - } - } - - return null; - } - } - - /// - /// Definition of one title of a category - /// - public class CategoryLanguageTitle - { - /// - /// The language for which the title is applicable - /// - public string Lang { get; set; } - /// - /// Actual title to be shown on the UI - /// - public string Title { get; set; } - /// - /// The language culture id of the lang parameter - /// - public int Lcid { get; set; } - } -} diff --git a/SearchScorer/Common/Models/Publisher.cs b/SearchScorer/Common/Models/Publisher.cs deleted file mode 100644 index 0c9ab52..0000000 --- a/SearchScorer/Common/Models/Publisher.cs +++ /dev/null @@ -1,55 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using System; - -namespace SearchScorer.Common -{ - [Flags] - public enum PublisherFlags - { - /// - /// This should never be returned, it is used to represent a publisher - /// who's flags haven't changed during update calls. - /// - UnChanged = 0x40000000, - - /// - /// No flags exist for this publisher. - /// - None = 0x0000, - - /// - /// The Disabled flag for a publisher means the publisher can't be changed - /// and won't be used by consumers, this extends to extensions owned by - /// the publisher as well. The disabled flag is managed by the service and - /// can't be supplied by the Extension Developers. - /// - Disabled = 0x0001, - - /// - /// A verified publisher is one that Microsoft has done some review of - /// and ensured the publisher meets a set of requirements. The - /// requirements to become a verified publisher are not listed here. - /// - /// They can be found in public documentation (TBD). - /// - Verified = 0x0002, - - /// - /// A Certified publisher is one that is Microsoft verified and in addition - /// meets a set of requirements for its published extensions. The - /// requirements to become a certified publisher are not listed here. - /// - /// They can be found in public documentation (TBD). - /// - Certified = 0x0004, - - /// - /// This is the set of flags that can't be supplied by the developer and - /// is managed by the service itself. - /// - ServiceFlags = (Disabled | Verified | Certified) - } -} diff --git a/SearchScorer/Common/Models/PublisherAssetConfiguration.cs b/SearchScorer/Common/Models/PublisherAssetConfiguration.cs deleted file mode 100644 index 6d7ce47..0000000 --- a/SearchScorer/Common/Models/PublisherAssetConfiguration.cs +++ /dev/null @@ -1,16 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using System; - -namespace SearchScorer.Common -{ - public class PublisherAssetConfiguration - { - public String Host { get; set; } - public String CdnHost { get; set; } - public String ChinaCdnHost { get; set; } - public String VirtualPath { get; set; } = "/"; - } -} \ No newline at end of file diff --git a/SearchScorer/Common/Models/QueryFilter.cs b/SearchScorer/Common/Models/QueryFilter.cs deleted file mode 100644 index a2d8d71..0000000 --- a/SearchScorer/Common/Models/QueryFilter.cs +++ /dev/null @@ -1,111 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using System; -using System.Collections.Generic; - -namespace SearchScorer.Common -{ - /// - /// PagingDirection is used to define which set direction to move the returned - /// result set based on a previous query. - /// - public enum PagingDirection - { - /// - /// Backward will return results from earlier in the resultset. - /// - Backward = 1, - - /// - /// Forward will return results from later in the resultset. - /// - Forward = 2, - } - - /// - /// One condition in a QueryFilter. - /// - public class FilterCriteria - { - /// The FilterType defines how the filters are to be applied to the - /// extensions. See the documentation on the filter type to understand - /// how the filters are matched. - /// - public Int32 FilterType { get; set; } - - /// - /// The value used in the match based on the filter type. - /// - public String Value { get; set; } - } - - /// - /// A filter used to define a set of extensions to return during a query. - /// - public class QueryFilter - { - /// - /// The filter values define the set of values in this query. They are - /// applied based on the QueryFilterType. - /// - public List Criteria { get; set; } - - /// - /// The page size defines the number of results the caller wants for this - /// filter. The count can't exceed the overall query size limits. - /// - public Int32 PageSize { get; set; } - - /// - /// The page number requested by the user. If not provided 1 is assumed by default. - /// - public Int32 PageNumber { get; set; } - - /// - /// Defines the type of sorting to be applied on the results. - /// The page slice is cut of the sorted results only. - /// - public Int32 SortBy { get; set; } - - /// - /// Defines the order of sorting, 1 for Ascending, 2 for Descending, else default ordering based on the SortBy value - /// - public Int32 SortOrder { get; set; } - - /// - /// The paging token is a distinct type of filter and the other filter - /// fields are ignored. The paging token represents the continuation of - /// a previously executed query. The information about where in the result - /// and what fields are being filtered are embedded in the token. - /// - public String PagingToken { get; set; } - - /// - /// The PagingDirection is applied to a paging token if one exists. If - /// not the direction is ignored, and Forward from the start of the - /// resultset is used. Direction should be left out of the request unless - /// a paging token is used to help prevent future issues. - /// - public PagingDirection Direction { get; set; } - - /// - /// This is an internal identifier used to correlate results back to the - /// result from the SQL Query. - /// - // internal Int32 QueryIndex { get; set; } - - /// - /// This is an internal parameter to not apply max page size restriction to the - /// query - /// - // internal bool ForcePageSize { get; set; } - - /// - /// This is an internal parameter to specify that if true, cache should not be used to - /// provide the results of the query - /// - // internal bool DoNotUseCache { get; set; } - } -} diff --git a/SearchScorer/Common/Models/SearchParams.cs b/SearchScorer/Common/Models/SearchParams.cs deleted file mode 100644 index ac42ee3..0000000 --- a/SearchScorer/Common/Models/SearchParams.cs +++ /dev/null @@ -1,256 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using System; -using System.Collections.Generic; - -namespace SearchScorer.Common -{ - internal class ExtensionSearchResult - { - public List Results { get; set; } - - public List ResultMetadata { get; set; } - } - - public enum SearchFilterType - { - /// - /// SearchPhrase defines the search string provided by the user - /// - SearchPhrase = 0, - - /// - /// Separate words to be searched for prefixes. - /// This covers the cases where the given word is a pharase and individual words can act as a matching prefix for an extension - /// name e.g. Sonar Qube will be divided to Sonar and Qube and both will also be checked for prefix matches. - /// - SearchWord = 1, - - /// - /// Filter for targets. The search results will be restricted based on given values. - /// - InstallationTarget = 2, - - /// - /// Filters for categories. The search results will be restricted to only the defined categories. - /// - Category = 3, - - /// - /// Filters for extension tags. The search results will be restricted to only the extesnions containing the given tags. - /// - Tag = 4, - - /// - /// Filters for extension flags. The search results will be restricted to only the extesnions not containing the given flags. - /// In case of having a particular flag in both IncludeWithFlags and ExcludeWithFlags, - /// excludeFlags will remove the included extensions giving empty result for that flag. - /// - ExcludeExtensionsWithFlags = 5, - - /// - /// Filter type to search for given value in extension name and restrict search results - /// - Name = 6, - - /// - /// Filter type to search for given value in publisher names and restrict the search results - /// - Publisher = 7, - - /// - /// Filter type to search for given value only in tags names - /// - TagName = 8, - - /// - /// Filter type to signify actual user query given by user - /// - UserQuery = 9, - - /// - /// Filters for extension flags. The search results will be restricted to only the extesnions containing the given flags. - /// In case of having a particular flag in both IncludeWithFlags and ExcludeWithFlags, - /// excludeFlags will remove the included extensions giving empty result for that flag. - /// In case of multiple flags given in IncludeWithFlags in ORed fashion, extensions having any of the given flags will be included. - /// - IncludeExtensionsWithFlags = 10, - - /// - /// Filters the result extensions based on the LCID value specified. This can be given multiple times. - /// The extensions matching any one of them will be selected - /// Only applicable for VS Extensions. - /// - Lcid = 11, - - /// - /// Filtering based on the metadata for the extensions. - /// The filter value should be of the form : - /// This can be provided multiple times. Multiple filters with the same keyname will act as OR - /// Different key names will act as AND - /// The final filtered extensions will contain all the key names and matching values at least one of filter value among same - /// key names. - /// The matching operator supported are Equal Or NotEqual only. - /// Only applicable for VS Extensions - /// - Metadata = 12, - - /// Filter type for specifying the target version. This filter will be used along with InstallationTarget filter. - /// The value should be a valid version string - /// - InstallationTargetVersion = 13, - - /// - /// Filter type for specifying a range of installation target version. The filter will be used along with InstallationTarget filter. - /// The value should be a pair of well formed version values separated by hyphen(-) - /// - InstallationTargetVersionRange = 14, - - /// - /// This flag ensures that even private extensions are not excluded from the search results. - /// This is internal and cannot be used from outside. - /// - IncludePrivateExtensions = 15, - - /// - /// Filter type to search for exact match of publisher display names and restrict the search results - /// - ExactPublisherDisplayName = 16, - - /// - /// Filters for extension publisher's flags. The search results will be restricted to only the extesnions from - /// publishers containing the given flags. - /// In case of multiple flags given in IncludeWithFlags in ORed fashion, extensions with publishers having any of the given flags will be included. - /// - IncludeExtensionsWithPublisherFlags = 17, - - /// - /// This flag ensures that private extensions shared with organization are included in the search results. - /// - [Obsolete] - OrganizationSharedWith = 18, - - /// - /// Filter for product architecture for VS IDE extensions. The search results will be restricted based on given values. - /// - ProductArchitecture = 19, - - /// - /// Filter type for specifying target platform for VS Code extensions. The search result will be restricted to VS Code extensions supporting given target platform. - /// - TargetPlatform = 20 - } - - [Flags] - internal enum SearchFeatureFlags - { - UseRatingsDownloadsForRelevance = 0x02, - UseNewRelevanceForVSTS = 0x04, - DoNotUseInternalNameForSearch = 0x08 - } - - public enum SearchFilterOperatorType - { - /// - /// The filter adds the matching values to the result - /// - Or = 0, - - /// - /// The filter restrict the result only to the matching values - /// - And = 1, - - /// - /// Will check for equality for the given filter value. Applicable only for Metadata type filter - /// - Equal = 2, - - /// - /// Will check for not equality for the given filter value. Applicable only for Metadata type filter - /// - NotEqual = 3 - } - - public class SearchCriteria - { - public SearchFilterType FilterType { get; set; } - - public String FilterValue { get; set; } - - public SearchFilterOperatorType OperatorType { get; set; } - } - - /// - /// ExtensionSearchParams defines the various parameters needed for search - /// This is an internal structure and is filled based on given inputs by the caller of the API - /// - // internal class ExtensionSearchParams - public class ExtensionSearchParams - { - public List CriteriaList { get; set; } - - /// - /// The page size that the user wants. Should be less than or equal to max supported page size. - /// - public Int32 PageSize { get; set; } - - /// - /// The page number requested by the user. If not provided 1 is assumed by default. - /// - public Int32 PageNumber { get; set; } - - /// - /// Defines the type of sorting to be applied on the results. - /// The page slice is cut of the sorted results only. - /// - public Int32 SortBy { get; set; } - - /// - /// Defines the order of sorting, 1 for Ascending, 2 for Descending, else default ordering based on the SortBy value - /// - public Int32 SortOrder { get; set; } - - /// - /// This is internal field to record the actual unsanitized query which was provided by the user - /// - internal string RawQuery { get; set; } - - /// - /// These define the metadata that will be returned along with the query result. - /// - public ExtensionQueryResultMetadataFlags MetadataFlags { get; set; } - - /// - /// Product type for which the query extensions is being called. - /// This is used for calculating the weighted average. - /// - public string Product { get; set; } - - /// - /// Way to pass feature flags for selective functionality - /// - internal SearchFeatureFlags FeatureFlags { get; set; } - } - - [Flags] - public enum SearchOverrideFlags - { - None = 0x0, - DoNotTranslateCategoryFilter = 0x1, - // IncludePrivate = 0x2, - // UseDbForSearch = 0x4 - } - - internal class QueryMetadataConstants - { - public static readonly string Categories = "Categories"; - public static readonly string TotalCount = "TotalCount"; - public static readonly string ResultCount = "ResultCount"; - public static readonly string ResultSetCategories = "ResultSetCategories"; - public static readonly string ResultSetProjectTypes = "ResultSetProjectTypes"; - public static readonly string TargetPlatforms = "TargetPlatforms"; - } -} diff --git a/SearchScorer/Common/Models/SearchRequest.cs b/SearchScorer/Common/Models/SearchRequest.cs deleted file mode 100644 index ebfce5f..0000000 --- a/SearchScorer/Common/Models/SearchRequest.cs +++ /dev/null @@ -1,14 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using Microsoft.Azure.Search.Models; - -namespace SearchScorer.Common -{ - public class SearchRequest - { - public string SearchText { get; set; } - public SearchParameters SearchParams { get; set; } - } -} diff --git a/SearchScorer/Common/PackageIdPatternValidator.cs b/SearchScorer/Common/PackageIdPatternValidator.cs deleted file mode 100644 index ca7922f..0000000 --- a/SearchScorer/Common/PackageIdPatternValidator.cs +++ /dev/null @@ -1,107 +0,0 @@ -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using NuGet.Packaging; - -namespace SearchScorer.Common -{ - public class PackageIdPatternValidator - { - private static readonly char[] Separators = new[] { '.', '-', '_' }; - - private readonly SearchClient _searchClient; - - public PackageIdPatternValidator(SearchClient searchClient) - { - _searchClient = searchClient; - } - - public async Task> GetNonExistentPackageIdsAsync(IEnumerable packageIds, SearchScorerSettings settings) - { - var distinct = packageIds.Distinct(StringComparer.OrdinalIgnoreCase); - var work = new ConcurrentBag(distinct); - var output = new ConcurrentBag(); - - var workers = Enumerable - .Range(0, 16) - .Select(async workerId => - { - while (work.TryTake(out var packageIdPattern)) - { - var exists = await DoesPackageIdExistAsync(packageIdPattern, settings); - Console.Write("."); - if (!exists) - { - output.Add(packageIdPattern); - } - } - }) - .ToList(); - - await Task.WhenAll(workers); - - return output - .OrderBy(x => x, StringComparer.OrdinalIgnoreCase) - .ToList(); - } - - public async Task DoesPackageIdExistAsync( - string packageIdPattern, - SearchScorerSettings settings) - { - Task controlExistsTask; - Task treatmentExistsTask; - - if (PackageIdValidator.IsValidPackageId(packageIdPattern)) - { - var query = $"packageid:{packageIdPattern}"; - controlExistsTask = DoesPackageIdExistInQueryAsync(packageIdPattern, settings.ControlBaseUrl, query, take: 1); - treatmentExistsTask = DoesPackageIdExistInQueryAsync(packageIdPattern, settings.TreatmentBaseUrl, query, take: 1); - - } - else if (packageIdPattern.EndsWith("*")) - { - var prefix = packageIdPattern.Substring(0, packageIdPattern.Length - 1).TrimEnd(Separators); - if (!PackageIdValidator.IsValidPackageId(prefix)) - { - throw new ArgumentException($"The package ID '{packageIdPattern}' looks like a pattern but the part before the wildcard is not a valid package ID."); - } - - var pieces = prefix - .Split(Separators) - .Where(x => !string.IsNullOrWhiteSpace(x)); - var query = string.Join(" ", pieces); - controlExistsTask = DoesPackageIdExistInQueryAsync(packageIdPattern, settings.ControlBaseUrl, query, take: 1000); - treatmentExistsTask = DoesPackageIdExistInQueryAsync(packageIdPattern, settings.TreatmentBaseUrl, query, take: 1000); - } - else - { - throw new NotSupportedException(); - } - - await Task.WhenAll(controlExistsTask, treatmentExistsTask); - - if (controlExistsTask.Result != treatmentExistsTask.Result) - { - throw new ArgumentNullException( - $"The package ID '{packageIdPattern}' has inconsistent availability. " + - $"Exists in control: {controlExistsTask.Result}. " + - $"Exists in treatment: {treatmentExistsTask.Result}."); - } - - return controlExistsTask.Result; - } - - private async Task DoesPackageIdExistInQueryAsync( - string packageId, - string baseUrl, - string query, - int take) - { - var response = await _searchClient.SearchAsync(baseUrl, query, take); - return response.Results[0].Extensions.Any(x => WildcardUtility.Matches(x.ExtensionName, packageId)); - } - } -} diff --git a/SearchScorer/Common/SearchClient.cs b/SearchScorer/Common/SearchClient.cs deleted file mode 100644 index c3bb6dc..0000000 --- a/SearchScorer/Common/SearchClient.cs +++ /dev/null @@ -1,77 +0,0 @@ -using System; -using System.Collections.Concurrent; -using System.Net.Http; -using System.Net.Http.Headers; -using System.Text; -using System.Threading.Tasks; -using System.Web; -using Newtonsoft.Json; - -namespace SearchScorer.Common -{ - public class SearchClient - { - private readonly HttpClient _httpClient; - private readonly ConcurrentDictionary>> _cache = new ConcurrentDictionary>>(); - - public SearchClient(HttpClient httpClient) - { - _httpClient = httpClient; - } - - public async Task SearchAsync(string baseUrl, string query, int take) - { - //var queryString = HttpUtility.ParseQueryString(string.Empty); - - var uriBuilder = new UriBuilder(baseUrl) - { - //Path = "/query", - - //Query = "{\"assetTypes\":null,\"filters\":[{\"criteria\":[{\"filterType\":10,\"value\":\"python\"}]," + - //"\"direction\":2,\"pageSize\":100,\"pageNumber\":1,\"sortBy\":0,\"sortOrder\":0,\"pagingToken\":null}],\"flags\":103}" - - }; - - var queryStr = "{\"filters\":[{\"criteria\":[{\"filterType\":10,\"value\":\"" + query + "\"}, {\"filterType\":8,\"value\":\"Microsoft.VisualStudio.Code\"}]," + - "\"direction\":2,\"pageSize\":50,\"pageNumber\":1,\"sortBy\":0,\"sortOrder\":0,\"pagingToken\":null}],\"flags\":947, \"assetTypes\":[]}"; - - var requestUri = uriBuilder.Uri; //baseUrl;// - - var lazyTask = _cache.GetOrAdd(requestUri, _ => new Lazy>( - async () => - { - var attempt = 0; - while (true) - { - attempt++; - try - { - using (var request = new HttpRequestMessage(HttpMethod.Post, requestUri)) - { - //request.Headers.Add("Content-Type", "application/json"); - //request.Content = queryStr;// new StringContent(queryStr, Encoding.UTF8, "application/json"); ; - request.Content = new StringContent(queryStr); - //_httpClient.DefaultRequestHeaders.Add("Content-Type", "application/json; charset=utf-8"); - request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); - request.Content.Headers.ContentType.CharSet = "utf-8"; - - using (var response = await _httpClient.SendAsync(request)) - { - response.EnsureSuccessStatusCode(); - var json = await response.Content.ReadAsStringAsync(); - return JsonConvert.DeserializeObject(json); - } - } - } - catch (Exception ex) when (attempt < 3) - { - Console.WriteLine($"[ WARN ] Search query '{query}' failed: " + ex.Message); - await Task.Delay(TimeSpan.FromSeconds(1)); - } - } - })); - - return await lazyTask.Value; - } - } -} diff --git a/SearchScorer/Common/SearchProbesCsvWriter.cs b/SearchScorer/Common/SearchProbesCsvWriter.cs deleted file mode 100644 index 5c73a91..0000000 --- a/SearchScorer/Common/SearchProbesCsvWriter.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using CsvHelper; - -namespace SearchScorer.Common -{ - public static class SearchProbesCsvWriter - { - public static void Append(string path, SearchProbesRecord score) - { - var exists = File.Exists(path); - - using (var streamWriter = new StreamWriter(path, append: true)) - using (var csvWriter = new CsvWriter(streamWriter)) - { - if (!exists) - { - csvWriter.WriteHeader(); - csvWriter.NextRecord(); - } - - csvWriter.WriteRecord(score); - streamWriter.WriteLine(); - } - } - } - - public class SearchProbeTest - { - public double PackageIdWeight { get; set; } - public double TokenizedPackageIdWeight { get; set; } - public double TagsWeight { get; set; } - public double DownloadScoreBoost { get; set; } - } - - public class SearchProbesRecord : SearchProbeTest - { - public double CuratedSearchScore { get; set; } - public double ClientCuratedSearchScore { get; set; } - public double FeedbackScore { get; set; } - } -} diff --git a/SearchScorer/Common/SearchQuerySource.cs b/SearchScorer/Common/SearchQuerySource.cs deleted file mode 100644 index 5d7a1cd..0000000 --- a/SearchScorer/Common/SearchQuerySource.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace SearchScorer.Common -{ - public enum SearchQuerySource - { - NuGetPartnersInternal, - InternalAdHoc, - Mvps, - V3Internal, - V2Internal, - GitHubOrTwitter, - TopQuery, - V5External, - Hats, - VSMPartnersInternal - } -} diff --git a/SearchScorer/Common/SearchQueryWithSelections.cs b/SearchScorer/Common/SearchQueryWithSelections.cs deleted file mode 100644 index 0b4ad9b..0000000 --- a/SearchScorer/Common/SearchQueryWithSelections.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Collections.Generic; - -namespace SearchScorer.Common -{ - public class SearchQueryWithSelections - { - public SearchQueryWithSelections(string searchQuery, IReadOnlyList selections) - { - SearchQuery = searchQuery; - Selections = selections; - } - - public string SearchQuery { get; } - public IReadOnlyList Selections { get; } - } -} diff --git a/SearchScorer/Common/SearchResponse.cs b/SearchScorer/Common/SearchResponse.cs deleted file mode 100644 index 3ac07f5..0000000 --- a/SearchScorer/Common/SearchResponse.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Collections.Generic; - -namespace SearchScorer.Common -{ - public class Search1Response - { - public int TotalHits { get; set; } - public List Data { get; set; } - } -} diff --git a/SearchScorer/Common/SearchResult.cs b/SearchScorer/Common/SearchResult.cs deleted file mode 100644 index 7430c1c..0000000 --- a/SearchScorer/Common/SearchResult.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace SearchScorer.Common -{ - public class SearchResult - { - public string Id { get; set; } - public SearchResultDebug Debug { get; set; } - } -} diff --git a/SearchScorer/Common/SearchResultDebug.cs b/SearchScorer/Common/SearchResultDebug.cs deleted file mode 100644 index deae9a4..0000000 --- a/SearchScorer/Common/SearchResultDebug.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace SearchScorer.Common -{ - public class SearchResultDebug - { - public double Score { get; set; } - public SearchResultDebugDocument Document { get; set; } - } -} diff --git a/SearchScorer/Common/SearchResultDebugDocument.cs b/SearchScorer/Common/SearchResultDebugDocument.cs deleted file mode 100644 index 06df2cb..0000000 --- a/SearchScorer/Common/SearchResultDebugDocument.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace SearchScorer.Common -{ - public class SearchResultDebugDocument - { - public long TotalDownloadCount { get; set; } - } -} diff --git a/SearchScorer/Common/SearchSelectionCount.cs b/SearchScorer/Common/SearchSelectionCount.cs deleted file mode 100644 index 8a03bdf..0000000 --- a/SearchScorer/Common/SearchSelectionCount.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace SearchScorer.Common -{ - public class SearchSelectionCount - { - public SearchSelectionCount(string packageId, int count) - { - PackageId = packageId; - Count = count; - } - - public string PackageId { get; } - public int Count { get; } - } -} diff --git a/SearchScorer/Common/SearchService/ArgumentUtility.cs b/SearchScorer/Common/SearchService/ArgumentUtility.cs deleted file mode 100644 index b8cd814..0000000 --- a/SearchScorer/Common/SearchService/ArgumentUtility.cs +++ /dev/null @@ -1,81 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Runtime.CompilerServices; - -namespace SearchScorer.Common -{ - [EditorBrowsable(EditorBrowsableState.Never)] - public static class ArgumentUtility - { - /// - /// Throw an exception if the object is null. - /// - /// the object to check - /// the variable or parameter name to display - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void CheckForNull(object var, string varName) - { - if (var == null) - { - throw new ArgumentNullException(varName); - } - } - - /// - /// Throw an exception if a string is null or empty. - /// - /// string to check - /// the variable or parameter name to display - public static void CheckStringForNullOrEmpty(string stringVar, string stringVarName) - { - CheckForNull(stringVar, stringVarName); - if (stringVar.Length == 0) - { - throw new ArgumentException("The string must have at least one character.", stringVarName); - } - } - - //******************************************************************************************** - /// - /// Throw an exception if a string is null, empty, or consists only of white-space characters. - /// - /// string to check - /// the variable or parameter name to display - //******************************************************************************************** - public static void CheckStringForNullOrWhiteSpace(string stringVar, string stringVarName) - { - CheckForNull(stringVar, stringVarName); - if (string.IsNullOrWhiteSpace(stringVar) == true) - { - throw new ArgumentException("The string must have at least one non-white-space character.", stringVarName); - } - } - - /// - /// Converts comma separated values to camelcase comma separated value - /// Example: ConvertFlagsToString("Public, BuiltIn") to - /// "public, builtIn" - /// - /// - /// - public static string ConvertFlagsToString(this string s) - { - List response = new List(); - var flags = s.Split(",") - .Select(x => x.Trim()); - - foreach (var flag in flags) - { - response.Add(flag[0].ToString().ToLowerInvariant() + flag.Substring(1)); - } - - return String.Join(", ", response.ToArray()); - } - } -} diff --git a/SearchScorer/Common/SearchService/AzureSearchDataTypes.cs b/SearchScorer/Common/SearchService/AzureSearchDataTypes.cs deleted file mode 100644 index ad8b72f..0000000 --- a/SearchScorer/Common/SearchService/AzureSearchDataTypes.cs +++ /dev/null @@ -1,193 +0,0 @@ -// ----------------------------------------------------------------------------- -// Copyright (c) Microsoft Corporation. All rights reserved. -// ----------------------------------------------------------------------------- - -using System; -using System.Collections.Generic; -using System.Text.Json.Serialization; -using Microsoft.Azure.Search; - -namespace SearchScorer.Common -{ - public class AzureIndexDocument - { - [System.ComponentModel.DataAnnotations.Key] - [IsSearchable, IsFilterable] - public string ExtensionId { get; set; } - - [IsSearchable, IsSortable, IndexAnalyzer("DefaultIndexAnalyzer"), SearchAnalyzer("SearchTermAnalyzer")] - public string ExtensionName { get; set; } - - [IsSearchable, IsFilterable, IsSortable, IndexAnalyzer("DefaultIndexAnalyzer"), SearchAnalyzer("SearchTermAnalyzer")] - public string ExtensionDisplayName { get; set; } - - [IsSearchable, IsFilterable, IsSortable, IndexAnalyzer("PrefixAnalyzer"), SearchAnalyzer("SearchTermAnalyzer")] - public string ExtensionDisplayNameForPrefixMatch { get; set; } - - [IsSearchable, IndexAnalyzer("DefaultIndexAnalyzer"), SearchAnalyzer("SearchTermAnalyzer")] - public string ShortDescription { get; set; } - - [IsSearchable, IndexAnalyzer("PrefixAnalyzer"), SearchAnalyzer("SearchTermAnalyzer")] - public string ShortDescriptionForPrefixMatch { get; set; } - - public string PublisherName { get; set; } - - [IsSearchable, IsFilterable, IsSortable, IndexAnalyzer("DefaultIndexAnalyzer"), SearchAnalyzer("SearchTermAnalyzer")] - public string PublisherDisplayName { get; set; } - - [IsSearchable, IsFilterable, IsSortable, IndexAnalyzer("PrefixAnalyzer"), SearchAnalyzer("SearchTermAnalyzer")] - public string PublisherDisplayNameForPrefixMatch { get; set; } - - [IsSearchable, IsRetrievable(false), Analyzer("KeywordIndexAnalyzer")] - public string PublisherDisplayNameForExactMatch { get; set; } - - [IsSearchable, IsRetrievable(false), Analyzer("KeywordIndexAnalyzer")] - public string ExtensionFullyQualifiedNameForExactMatch { get; set; } - - [IsSearchable, IsRetrievable(false), Analyzer("KeywordIndexAnalyzer")] - public string ExtensionNameForExactMatch { get; set; } - - [IsSearchable, IsRetrievable(false), Analyzer("KeywordIndexAnalyzer")] - public string PublisherNameForExactMatch { get; set; } - - [IsSearchable, IsRetrievable(false), Analyzer("KeywordIndexAnalyzer")] - public string ExtensionDisplayNameForExactMatch { get; set; } - - [IsFilterable] - public List ExtensionFlags { get; set; } - - [IsFilterable, IsRetrievable(false)] - public List PublisherFlags { get; set; } - - public string Publisher { get; set; } - - [IsFilterable] - public Boolean? IsDomainVerified { get; set; } - - [IsSortable] - public DateTime? LastUpdated { get; set; } - - public DateTime? PublishedDate { get; set; } - - [IsSortable] - public DateTime? ReleasedDate { get; set; } - - public List Tags { get; set; } - - [IsRetrievable(false), IsSearchable, IsFilterable, IndexAnalyzer("PrefixAnalyzer"), SearchAnalyzer("SearchTermAnalyzer")] - public List SearchableTags { get; set; } - - [IsFilterable, IsFacetable] - public List Categories { get; set; } - - [IsFilterable, IsFacetable, IsRetrievable(false)] - public List TargetPlatforms { get; set; } - - /// - /// The total number of installs, including updates. - /// This is deprecated, use InstallCount for sorting. - /// - [IsSortable, IsFilterable] - public double DownloadCount { get; set; } - - /// - /// The number of unique installations, not including updates. - /// Used to support to sort by InstallCount. - /// - [IsSortable, IsFilterable] - public double? InstallCount { get; set; } - - [IsSortable, IsFilterable, IsRetrievable(false)] - public double WeightedRating { get; set; } - - [IsSortable] - public double TrendingScore { get; set; } - - [IsFilterable, IsRetrievable(false)] - public List InstallationTargetList { get; set; } - - [IsFilterable, IsRetrievable(false)] - public List SearchableMetadata { get; set; } - - public string Metadata { get; set; } - - public string DeploymentType { get; set; } - - public string ValidatedVersions { get; set; } - - public string AllVersions { get; set; } - - public string Statistics { get; set; } - - public string SharedWith { get; set; } - - public string InstallationTargets { get; set; } - - [IsFilterable, IsRetrievable(false)] - public List EnterpriseSharedWithIds { get; set; } - - [IsFilterable, IsRetrievable(false)] - public List OrgSharedWithIds { get; set; } - - [IsFilterable] - public List Lcids { get; set; } - - // This field is currently used only for VS index. - // However for sake of simplicity, keeping this field for all index types. - // In case we see in future that the number of independent values are increasing, - // we can split accordingly. - [IsFilterable, IsFacetable, IsRetrievable(false)] - public string ProjectType { get; set; } - - public AzureIndexDocument ShallowCopy() - { - return (AzureIndexDocument)this.MemberwiseClone(); - } - } - - public class ServerExtensionFile : ExtensionFile - { - public Int32 SerializableFileId { get; set; } - } - - /// - /// We are creating a new type here, FileId was not serializable in ExtensionFile - /// - [JsonConverter(typeof(ServerExtensionVersionConverter))] - public class ServerExtensionVersion - { - internal Guid ExtensionId { get; set; } - - public String Version { get; set; } - - public String TargetPlatform { get; set; } - - public ExtensionVersionFlags Flags { get; set; } - - public DateTime LastUpdated { get; set; } - - public String VersionDescription { get; set; } - - public String ValidationResultMessage { get; set; } - - public List Files { get; set; } - - public List> Properties { get; set; } - - public List Badges { get; set; } - - public String AssetUri { get; set; } - - public String FallbackAssetUri { get; set; } - internal string CdnDirectory { get; set; } - internal bool IsCdnEnabled { get; set; } - public ServerExtensionVersion ShallowCopy() - { - return (ServerExtensionVersion)this.MemberwiseClone(); - } - public string GetCdnDirectory() - { - return CdnDirectory; - } - } -} diff --git a/SearchScorer/Common/SearchServiceClientExtensions.cs b/SearchScorer/Common/SearchServiceClientExtensions.cs deleted file mode 100644 index 8072f59..0000000 --- a/SearchScorer/Common/SearchServiceClientExtensions.cs +++ /dev/null @@ -1,77 +0,0 @@ -using System; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.Azure.Search; -using Microsoft.Azure.Search.Models; -using Index = Microsoft.Azure.Search.Models.Index; - -namespace SearchScorer.Common -{ - public static class SearchServiceClientExtensions - { - private const string ScoringProfileName = "nuget_scoring_profile"; - - private const string PackageIdFieldName = "packageId"; - private const string TokenizedPackageIdFieldName = "tokenizedPackageId"; - private const string TagsFieldName = "tags"; - - private const string DownloadScoreBoostName = "downloadScore"; - - public static async Task GetNuGetSearchIndexAsync(this ISearchServiceClient client, SearchScorerSettings settings) - { - var index = await client.Indexes.GetAsync(settings.AzureSearchIndexName); - index.EnsureValidNuGetSearchIndex(settings); - - return index; - } - - public static async Task UpdateNuGetSearchIndexAsync( - this ISearchServiceClient client, - SearchScorerSettings settings, - Index index, - double packageIdWeight, - double tokenizedPackageIdWeight, - double tagsWeight, - double downloadScoreBoost) - { - Console.WriteLine($"Updating Azure Search service '{settings.AzureSearchServiceName}', index '{settings.AzureSearchIndexName}'"); - - Console.WriteLine($"Package ID weight: {packageIdWeight}"); - Console.WriteLine($"Tokenized package ID weight: {tokenizedPackageIdWeight}"); - Console.WriteLine($"Tags weight: {tagsWeight}"); - Console.WriteLine($"Download score boost: {downloadScoreBoost}"); - - index.EnsureValidNuGetSearchIndex(settings); - - var indexFieldWeights = index.ScoringProfiles[0].TextWeights.Weights; - var downloadScoreFunction = index.ScoringProfiles[0].Functions[0]; - - indexFieldWeights.Clear(); - indexFieldWeights[PackageIdFieldName] = packageIdWeight; - indexFieldWeights[TokenizedPackageIdFieldName] = tokenizedPackageIdWeight; - indexFieldWeights[TagsFieldName] = tagsWeight; - - downloadScoreFunction.Boost = downloadScoreBoost; - - await client.Indexes.CreateOrUpdateAsync(index); - - Console.WriteLine($"Updated Azure Search service '{settings.AzureSearchServiceName}', index '{settings.AzureSearchIndexName}'"); - } - - private static void EnsureValidNuGetSearchIndex(this Index index, SearchScorerSettings settings) - { - if (index.ScoringProfiles.Count != 1 || index.ScoringProfiles[0].Name != ScoringProfileName) - { - throw new InvalidOperationException( - $"Azure Search index '{settings.AzureSearchIndexName}' should have one scoring profile named '{ScoringProfileName}'"); - } - - var scoringProfile = index.ScoringProfiles[0]; - if (scoringProfile.Functions.Count != 1 || scoringProfile.Functions[0].FieldName != DownloadScoreBoostName) - { - throw new InvalidOperationException( - $"Azure Search index '{settings.AzureSearchIndexName}' should have one scoring function on the '{DownloadScoreBoostName}' field"); - } - } - } -} diff --git a/SearchScorer/Common/TopClientSearchQueriesCsvReader.cs b/SearchScorer/Common/TopClientSearchQueriesCsvReader.cs deleted file mode 100644 index 8f2e324..0000000 --- a/SearchScorer/Common/TopClientSearchQueriesCsvReader.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using System.Linq; -using CsvHelper; - -namespace SearchScorer.Common -{ - public static class TopClientSearchQueriesCsvReader - { - /* This is the query that generates the data: - -.drop table LOOKUP_TABLE; - -.create table LOOKUP_TABLE ( - Query: string, - HashedQuery: string, - Count: int -); - -let lookup = materialize (cluster("CLUSTER").database("DATABASE").LOOKUP_TABLE); -RawEventsNuGet -| where AdvancedServerTimestampUtc > ago(45d) -| where EventName == "vs/nuget/search" -| extend HashedQuery = tostring(Properties['vs.nuget.query']) -| join kind=leftouter (lookup) on HashedQuery -| extend Query = iff(isnull(Count), "", Query) -| extend Query = trim("[\\s\\.\\-_]+", Query) -| summarize QueryCount = count() by Query -| order by QueryCount desc -| take 2000 - - */ - - public static IReadOnlyDictionary Read(string path) - { - using (var fileStream = File.OpenRead(path)) - using (var streamReader = new StreamReader(fileStream)) - using (var csvReader = new CsvReader(streamReader)) - { - return csvReader - .GetRecords() - .Where(x => !string.IsNullOrEmpty(x.Query)) - .Where(x => x.Query != "") - .ToDictionary(x => x.Query, x => x.QueryCount); - } - } - - private class Record - { - public string Query { get; set; } - public int QueryCount { get; set; } - } - } -} diff --git a/SearchScorer/Common/TopSearchQueriesCsvReader.cs b/SearchScorer/Common/TopSearchQueriesCsvReader.cs deleted file mode 100644 index 028ef96..0000000 --- a/SearchScorer/Common/TopSearchQueriesCsvReader.cs +++ /dev/null @@ -1,81 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using System.Linq; -using CsvHelper; - -namespace SearchScorer.Common -{ - public static class TopSearchQueriesCsvReader - { - /* This is the query that generates the data: - -let minTimestamp = todatetime('2019-07-02T18:57:00Z'); -customMetrics -| where timestamp > minTimestamp -| where name == "BrowserSearchPage" -| where customDimensions.PageIndex == 0 -| extend Query = trim("\\s", tostring(customDimensions.SearchTerm)) -| distinct Query, session_Id -| summarize QueryCount = count() by Query -| order by QueryCount desc -| take 10000 - - This query is an attempt to remove search queries where the first page in the session is the search query - indicating that it was a non-organic search. - -let minTimestamp = todatetime('2019-07-02T18:57:00Z'); -pageViews -| where timestamp > minTimestamp -| where session_Id != "" -| summarize min(timestamp), min(url) by session_Id -| project session_Id, firstPageViewTimestamp = min_timestamp, firstPageViewUrl = min_url -| join kind=inner ( - pageViews - | where timestamp > minTimestamp - | where session_Id != "" - | extend parsedUrl = parse_url(url) - | where parsedUrl.Path == "/packages" - | extend searchQuery = url_decode(trim("\\s", tostring(parsedUrl["Query Parameters"]["q"]))) - | extend page = tostring(parsedUrl["Query Parameters"]["page"]) - | extend prerel = tolower(tostring(parsedUrl["Query Parameters"]["prerel"])) != "false" - | extend page = iff(page == "", 1, toint(page)) - | where page > 0 - | project session_Id, timestamp, searchQuery, page, prerel, url -) on session_Id -| project timestamp, session_Id, firstPageViewTimestamp, firstPageViewUrl, searchQuery, page, prerel, url -| join kind=innerunique ( - customMetrics - | where timestamp > minTimestamp - | where name == "BrowserSearchPage" - | project session_Id -) on session_Id -| project timestamp, session_Id, firstPageViewTimestamp, firstPageViewUrl, searchQuery, page, prerel, url -| where page == 1 -| where searchQuery != "" -| summarize searchCount = count(), nonLandingSearchCount = countif(timestamp != firstPageViewTimestamp) by searchQuery -| order by nonLandingSearchCount desc -| project Query = searchQuery, QueryCount = nonLandingSearchCount -| take 10000 - - */ - - public static IReadOnlyDictionary Read(string path) - { - using (var fileStream = File.OpenRead(path)) - using (var streamReader = new StreamReader(fileStream)) - using (var csvReader = new CsvReader(streamReader)) - { - return csvReader - .GetRecords() - .Where(x => !string.IsNullOrEmpty(x.Query)) - .ToDictionary(x => x.Query, x => x.QueryCount); - } - } - - private class Record - { - public string Query { get; set; } - public int QueryCount { get; set; } - } - } -} diff --git a/SearchScorer/Common/TopSearchSelectionsCsvReader.cs b/SearchScorer/Common/TopSearchSelectionsCsvReader.cs deleted file mode 100644 index 37c4e6a..0000000 --- a/SearchScorer/Common/TopSearchSelectionsCsvReader.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using CsvHelper; -using Newtonsoft.Json; - -namespace SearchScorer.Common -{ - public static class TopSearchSelectionsCsvReader - { - /* This is the query that generates the data: - -let minTimestamp = todatetime('2019-07-02T18:57:00Z'); -customMetrics -| where timestamp > minTimestamp -| where name == "BrowserSearchSelection" -| extend SearchQuery = trim("\\s", tostring(customDimensions.SearchTerm)) -| extend selectedPackageId = tolower(tostring(customDimensions.PackageId)) -| project timestamp, SearchQuery, selectedPackageId -| summarize count() by SearchQuery, selectedPackageId -| extend selectedPackageIdAndCount = strcat(selectedPackageId, ":", count_) -| order by count_ desc -| summarize sum(count_), makelist(selectedPackageIdAndCount) by SearchQuery -| order by sum_count_ -| project SearchQuery, Selections = list_selectedPackageIdAndCount -| take 10000 - - */ - public static IReadOnlyList Read(string path) - { - using (var fileStream = File.OpenRead(path)) - using (var streamReader = new StreamReader(fileStream)) - using (var csvReader = new CsvReader(streamReader)) - { - var output = new List(); - foreach (var record in csvReader.GetRecords()) - { - var pairs = JsonConvert.DeserializeObject>(record.Selections); - var selections = new List(); - - foreach (var pair in pairs) - { - var pieces = pair.Split(new[] { ':' }, 2); - selections.Add(new SearchSelectionCount( - pieces[0].Trim(), - int.Parse(pieces[1]))); - } - - output.Add(new SearchQueryWithSelections( - record.SearchQuery, - selections)); - } - - return output; - } - } - - private class Record - { - public string SearchQuery { get; set; } - public string Selections { get; set; } - } - } -} diff --git a/SearchScorer/Common/TopSearchSelectionsV2CsvWriter.cs b/SearchScorer/Common/TopSearchSelectionsV2CsvWriter.cs deleted file mode 100644 index cc0def6..0000000 --- a/SearchScorer/Common/TopSearchSelectionsV2CsvWriter.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using System.Linq; -using CsvHelper; - -namespace SearchScorer.Common -{ - public static class TopSearchSelectionsV2CsvWriter - { - public static void Write(string path, IEnumerable selections) - { - using (var fileStream = new FileStream(path, FileMode.Create)) - using (var streamWriter = new StreamWriter(fileStream)) - using (var csvWriter = new CsvWriter(streamWriter)) - { - csvWriter.WriteField("SearchQuery"); - csvWriter.WriteField("Total"); - csvWriter.WriteField("ID0"); - csvWriter.WriteField("S0"); - csvWriter.WriteField("ID1"); - csvWriter.WriteField("S1"); - csvWriter.WriteField("ID2"); - csvWriter.WriteField("S2"); - csvWriter.WriteField("ID3"); - csvWriter.WriteField("S3"); - csvWriter.WriteField("ID4"); - csvWriter.WriteField("S4"); - csvWriter.NextRecord(); - - foreach (var ts in selections) - { - csvWriter.WriteField(ts.SearchQuery); - csvWriter.WriteField(ts.Selections.Sum(x => x.Count)); - foreach (var s in ts.Selections.OrderByDescending(x => x.Count).Take(5)) - { - csvWriter.WriteField(s.PackageId); - csvWriter.WriteField(s.Count); - } - - csvWriter.NextRecord(); - } - } - } - } -} diff --git a/SearchScorer/Common/TopV3SearchQueriesCsvReader.cs b/SearchScorer/Common/TopV3SearchQueriesCsvReader.cs deleted file mode 100644 index f4ead0e..0000000 --- a/SearchScorer/Common/TopV3SearchQueriesCsvReader.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System.Collections.Generic; -using System.IO; -using CsvHelper; - -namespace SearchScorer.Common -{ - public static class TopV3SearchQueriesCsvReader - { - /* This is the query that generates the data: - - requests - | where timestamp > ago(90d) - | where name == "GET Search/V3SearchAsync" - | where operation_SyntheticSource != "Application Insights Availability Monitoring" - | extend parsedUrl = parse_url(url) - | extend q = tostring(parsedUrl["Query Parameters"]["q"]) - | where (tolower(q) matches regex "^packageid(:|%3a)[\\w\\._-]+$") == false - | summarize sum(itemCount) by q - | order by sum_itemCount desc - // | where sum_itemCount < 296 // Use this filter to get the next "page" of 10,000 - | take 10000 - - */ - - public static Dictionary Read(string pathPattern) - { - var output = new Dictionary(); - - foreach (var path in Directory.EnumerateFiles( - Path.GetDirectoryName(pathPattern), - Path.GetFileName(pathPattern))) - { - using (var fileStream = File.OpenRead(path)) - using (var streamReader = new StreamReader(fileStream)) - using (var csvReader = new CsvReader(streamReader)) - { - foreach (var record in csvReader.GetRecords()) - { - output[record.q] = record.sum_itemCount; - } - } - } - - return output; - } - - private class Record - { - public string q { get; set; } - public int sum_itemCount { get; set; } - } - } -} diff --git a/SearchScorer/Common/WildcardUtility.cs b/SearchScorer/Common/WildcardUtility.cs deleted file mode 100644 index 60daea9..0000000 --- a/SearchScorer/Common/WildcardUtility.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Text.RegularExpressions; - -namespace SearchScorer.Common -{ - public static class WildcardUtility - { - public static Regex GetPackageIdWildcareRegex(string packageIdPattern) - { - return new Regex(WildcardToRegular(packageIdPattern), RegexOptions.IgnoreCase); - } - - public static bool IsWildcard(string value) - { - return value.Contains("?") || value.Contains("*"); - } - - /// - /// Source: https://stackoverflow.com/a/30300521 - /// - private static string WildcardToRegular(string value) - { - return "^" + Regex.Escape(value).Replace("\\?", ".").Replace("\\*", ".*") + "$"; - } - - public static bool Matches(string packageId, string packageIdPattern) - { - if (!IsWildcard(packageIdPattern)) - { - return StringComparer.OrdinalIgnoreCase.Equals(packageId, packageIdPattern); - } - - return GetPackageIdWildcareRegex(packageIdPattern).IsMatch(packageId); - } - } -} diff --git a/SearchScorer/CuratedSearchQueries.csv b/SearchScorer/CuratedSearchQueries.csv deleted file mode 100644 index 256f458..0000000 --- a/SearchScorer/CuratedSearchQueries.csv +++ /dev/null @@ -1,3 +0,0 @@ -Batch,User,SearchQuery,Number,ID0,S0,ID1,S1,ID2,S2,ID3,S3,ID4,S4 -0,loshar,java,1,vscode-maven,4,vscode-tomcat,4,vscode-gradle,3,java-fill,2,, -1,jver,mysql,1,vscode-mysql-client2,4,vscode-mysql,4,sqlite-snippet,4,vscode-postgresql-client2,3,, diff --git a/SearchScorer/FeedbackSearchQueries.csv b/SearchScorer/FeedbackSearchQueries.csv deleted file mode 100644 index 9d613e0..0000000 --- a/SearchScorer/FeedbackSearchQueries.csv +++ /dev/null @@ -1,3 +0,0 @@ -Source,FeedbackDisposition,SearchQuery,Buckets,MostRelevantPackageIds,Result,Control Result Bucket,Treatment Result Bucket,Control Result Index,Treatment Result Index,Result Index Delta -VSMPartnersInternal,OldIsBetter,java,Tags,vscode-maven,BothFixed,AboveFold,AboveFold,0,0,0 -VSMPartnersInternal,NewIsGreat,mysql,PartialId,vscode-mysql-client2,BothBroken,BelowFold,BelowFold,0,0,0 diff --git a/SearchScorer/GoogleAnalyticsSearchReferrals.csv b/SearchScorer/GoogleAnalyticsSearchReferrals.csv deleted file mode 100644 index 44cd6eb..0000000 --- a/SearchScorer/GoogleAnalyticsSearchReferrals.csv +++ /dev/null @@ -1,5007 +0,0 @@ -# ---------------------------------------- -# All Web Site Data -# Search Referrals -# 20190703-20190804 -# ---------------------------------------- - -Landing Page,Search Term,Sessions -/packages?q=windowsazureofficial,windowsazureofficial,"1,586" -"/packages?q=Tags:""aws-sdk-v3""","Tags:""aws-sdk-v3""","1,221" -/packages?q=accord.net,accord.net,452 -"/packages?q=Tags:""SharpDX""","Tags:""SharpDX""",322 -"/packages?q=Tags:""serilog""","Tags:""serilog""",314 -"/packages?q=Owner:""Autofac""+Autofac*","Owner:""Autofac"" Autofac*",306 -/packages?q=skin,skin,279 -"/packages?q=Tags:""pdf-to-image""","Tags:""pdf-to-image""",271 -"/packages?q=Tags:""word-to-pdf""","Tags:""word-to-pdf""",203 -"/packages?q=Tags:""System.Web.Script.Serialization""","Tags:""System.Web.Script.Serialization""",179 -/packages?q=oxyplot,oxyplot,165 -/packages?q=ZPL,ZPL,165 -/packages?q=DotNetty,DotNetty,160 -"/packages?q=Tags:""Excel""","Tags:""Excel""",157 -"/packages?q=Tags:""html-to-image""","Tags:""html-to-image""",157 -/packages?q=Random+Name+Generator,Random Name Generator,154 -/packages?q=accord,accord,143 -/packages?q=Author:SimpleInjector-Contributors&sortOrder=package-download-count,Author:SimpleInjector-Contributors,141 -/packages?q=google.apis&prerelease=true&sortOrder=relevance,google.apis,141 -/packages?q=RTF,RTF,138 -/packages?q=Microsoft.ReportViewer,Microsoft.ReportViewer,133 -"/packages?q=Tags:""OCR""","Tags:""OCR""",133 -/packages?q=XLSX,XLSX,125 -/packages?q=AForge.NET,AForge.NET,119 -/packages?q=system.web,system.web,119 -"/packages?q=Tags:""excel-to-pdf""","Tags:""excel-to-pdf""",119 -/packages?q=sftp,sftp,114 -/packages?q=dapper,dapper,111 -/packages?q=NSwag,NSwag,111 -/packages?q=pdf,pdf,108 -/packages?q=socket.io,socket.io,108 -/packages?q=System.Drawing,System.Drawing,108 -/packages?q=facebook,facebook,103 -/packages?q=Google.Apis.drive&prerelease=true&sortOrder=relevance,Google.Apis.drive,103 -/packages?q=gpio,gpio,103 -"/packages?q=Tags:""rtsp""","Tags:""rtsp""",103 -/packages?q=CatFactory,CatFactory,100 -/packages?q=epplus,epplus,100 -/packages?q=Google.Apis.oauth2&prerelease=true&sortOrder=relevance,Google.Apis.oauth2,100 -/packages?q=socket,socket,100 -/packages?q=system.windows.forms,system.windows.forms,97 -/packages?q=smarttests,smarttests,95 -"/packages?q=Tags:""seq-app""","Tags:""seq-app""",95 -/packages?q=2007+Office+System+Driver:+Data+Connectivity+Components,2007 Office System Driver: Data Connectivity Components,92 -/packages?q=GDAL,GDAL,92 -/packages?q=Google.Apis.sheets&prerelease=true&sortOrder=relevance,Google.Apis.sheets,92 -/packages?q=nlog,nlog,92 -"/packages?q=Tags:""AndroidX""+Authors:""Microsoft""","Tags:""AndroidX"" Authors:""Microsoft""",92 -/packages?q=CSV,CSV,89 -/packages?q=Google.Apis.firestore&prerelease=true&sortOrder=relevance,Google.Apis.firestore,89 -/packages?q=QRCode,QRCode,89 -/packages?q=helixtoolkit,helixtoolkit,87 -/packages?q=javascriptserializer,javascriptserializer,87 -/packages?q=Nethereum,Nethereum,87 -"/packages?q=Tags:""syncfusion.xamarin""","Tags:""syncfusion.xamarin""",87 -/packages?q=Levenshtein,Levenshtein,84 -/packages?q=email,email,78 -/packages?q=groupdocs,groupdocs,78 -/packages?q=Oracle.DataAccess,Oracle.DataAccess,78 -/packages?q=SAML,SAML,78 -/packages?q=DataMatrix,DataMatrix,76 -/packages?q=TeamFoundation,TeamFoundation,76 -/packages?q=xbim,xbim,76 -/packages?q=Microsoft.AspNet.WebHooks.Receivers,Microsoft.AspNet.WebHooks.Receivers,73 -/packages?q=WebRTC,WebRTC,73 -/packages?q=zip,zip,73 -/packages?q=ioc.configuration,ioc.configuration,70 -/packages?q=OpenStreetMap,OpenStreetMap,70 -/packages?q=Firebase.Notification,Firebase.Notification,68 -/packages?q=Microsoft.ReportViewer.WebForms,Microsoft.ReportViewer.WebForms,68 -/packages?q=System.Net.Http.Formatting,System.Net.Http.Formatting,68 -"/packages?q=Tags:""html-to-pdf""","Tags:""html-to-pdf""",68 -/packages?q=DataGridView,DataGridView,65 -/packages?q=npoi,npoi,65 -"/packages?q=Tags:""Argon2""","Tags:""Argon2""",65 -"/packages?q=Tags:""pdfviewer""","Tags:""pdfviewer""",65 -/packages?q=dbf,dbf,62 -"/packages?q=Tags:""ffmpeg""","Tags:""ffmpeg""",62 -/packages?q=Google.Apis.analyticsreporting&prerelease=true&sortOrder=relevance,Google.Apis.analyticsreporting,60 -/packages?q=Google.Apis.calendar&prerelease=true&sortOrder=relevance,Google.Apis.calendar,60 -/packages?q=Persian,Persian,60 -/packages?q=R.NET.Community,R.NET.Community,60 -/packages?q=ssh,ssh,60 -"/packages?q=Tags:""Blazor""","Tags:""Blazor""",60 -"/packages?q=Tags:""IBAN""","Tags:""IBAN""",60 -/packages?q=ColorPicker,ColorPicker,57 -/packages?q=Google.Apis.youtube&prerelease=true&sortOrder=relevance,Google.Apis.youtube,57 -/packages?q=Hangfire,Hangfire,57 -"/packages?q=Id:""Firebase""+Authors:""Microsoft""+Tags:""Xamarin.Android""","Id:""Firebase"" Authors:""Microsoft"" Tags:""Xamarin.Android""",57 -/packages?q=predicatebuilder,predicatebuilder,57 -/packages?q=PriorityQueue,PriorityQueue,57 -/packages?q=SharePoint+PnP+Core+Library,SharePoint PnP Core Library,57 -"/packages?q=Tags:""dotnet-core""","Tags:""dotnet-core""",57 -/packages?q=barcode,barcode,54 -/packages?q=Bluetooth,Bluetooth,54 -/packages?q=DOCX,DOCX,54 -/packages?q=Google.Apis.analytics&prerelease=true&sortOrder=relevance,Google.Apis.analytics,54 -/packages?q=Serilog.sinks.azure,Serilog.sinks.azure,54 -/packages?q=WebBrowser,WebBrowser,54 -/packages?q=websocket,websocket,54 -/packages?q=DefinitelyTyped,DefinitelyTyped,51 -/packages?q=excel,excel,51 -/packages?q=iso8583,iso8583,51 -/packages?q=keyboard,keyboard,51 -/packages?q=parse xml,parse xml,51 -/packages?q=PDF417,PDF417,51 -/packages?q=R.NET,R.NET,51 -"/packages?q=Tags:""serilog""""","Tags:""serilog""""",51 -"/packages?q=Tags:""socks5""","Tags:""socks5""",51 -/packages?q=Google.Apis.speech&prerelease=true&sortOrder=relevance,Google.Apis.speech,49 -/packages?q=json,json,49 -/packages?q=OCR,OCR,49 -/packages?q=owners:aspnet-contrib+title:OAuth,owners:aspnet-contrib title:OAuth,49 -/packages?q=RADARE2,RADARE2,49 -/packages?q=search,search,49 -/packages?q=SSE,SSE,49 -/packages?q=telerik,telerik,49 -/packages?q=xslt,xslt,49 -/packages?q=Docking,Docking,46 -/packages?q=GPX,GPX,46 -/packages?q=MJPEG,MJPEG,46 -/packages?q=PostScript,PostScript,46 -/packages?q=pubsub,pubsub,46 -"/packages?q=Tags:""rtf-to-pdf""","Tags:""rtf-to-pdf""",46 -/packages?q=XBRL,XBRL,46 -/packages?q=Google.Apis.translate&prerelease=true&sortOrder=relevance,Google.Apis.translate,43 -/packages?q=GSM,GSM,43 -/packages?q=httpcontext,httpcontext,43 -/packages?q=MailMerge,MailMerge,43 -/packages?q=Microsoft.ML.Probabilistic,Microsoft.ML.Probabilistic,43 -/packages?q=openblas,openblas,43 -/packages?q=spell-checker,spell-checker,43 -/packages?q=Syslog,Syslog,43 -"/packages?q=Tags:""FCM""","Tags:""FCM""",43 -"/packages?q=Tags:""RDLC""","Tags:""RDLC""",43 -"/packages?q=Tags:""url-shortener""","Tags:""url-shortener""",43 -"/packages?q=Tags:""wkhtmltopdf""","Tags:""wkhtmltopdf""",43 -/packages?q=TIFF,TIFF,43 -/packages?q=webcam,webcam,43 -/packages?q=couchdb,couchdb,41 -/packages?q=Google.Apis.gmail&prerelease=true&sortOrder=relevance,Google.Apis.gmail,41 -/packages?q=ics,ics,41 -/packages?q=scss,scss,41 -/packages?q=Stemmer,Stemmer,41 -/packages?q=Sybase,Sybase,41 -/packages?q=system.web.mvc,system.web.mvc,41 -"/packages?q=Tags:""svg-to-image""","Tags:""svg-to-image""",41 -"/packages?q=Tags:""tabcontrol""","Tags:""tabcontrol""",41 -/packages?q=ThinkGeo,ThinkGeo,41 -/packages?q=TWAIN,TWAIN,41 -/packages?q=antixss,antixss,38 -/packages?q=Com.Ctrip.Framework.Apollo,Com.Ctrip.Framework.Apollo,38 -/packages?q=command-line-parser,command-line-parser,38 -/packages?q=cron,cron,38 -/packages?q=etl,etl,38 -/packages?q=FTP,FTP,38 -/packages?q=id:morelinq,id:morelinq,38 -/packages?q=Krypton,Krypton,38 -/packages?q=Matlab,Matlab,38 -/packages?q=RDLC,RDLC,38 -/packages?q=System.Data.SQLite,System.Data.SQLite,38 -"/packages?q=Tags:""Fixed-Width""","Tags:""Fixed-Width""",38 -"/packages?q=Tags:""richtexteditor""","Tags:""richtexteditor""",38 -/packages?q=WKT,WKT,38 -/packages?q=7zip,7zip,35 -/packages?q=base32,base32,35 -/packages?q=dotnet,dotnet,35 -/packages?q=hangfire,hangfire,35 -/packages?q=ldap,ldap,35 -/packages?q=NMEA,NMEA,35 -/packages?q=npgsql,npgsql,35 -/packages?q=Ocaramba,Ocaramba,35 -/packages?q=oledb,oledb,35 -/packages?q=powershell,powershell,35 -/packages?q=RichTextBox,RichTextBox,35 -/packages?q=roslyn,roslyn,35 -/packages?q=Shopify,Shopify,35 -/packages?q=Syncfusion.EJ2.MVC,Syncfusion.EJ2.MVC,35 -"/packages?q=Tags:""dicom""","Tags:""dicom""",35 -"/packages?q=Tags:""RTF""","Tags:""RTF""",35 -/packages?q=tar,tar,35 -/packages?q=UserAgent,UserAgent,35 -/packages?q=xls,xls,35 -/packages?q=asterisk,asterisk,32 -/packages?q=chart,chart,32 -/packages?q=Google.Apis.dialogflow&prerelease=true&sortOrder=relevance,Google.Apis.dialogflow,32 -/packages?q=GS1-128,GS1-128,32 -"/packages?q=Id:""Xamarin.GooglePlayServices""+Authors:""Microsoft""+Tags:""Xamarin.Android","Id:""Xamarin.GooglePlayServices"" Authors:""Microsoft"" Tags:""Xamarin.Android",32 -/packages?q=lazziya,lazziya,32 -/packages?q=Microsoft.AspNet.WebHooks.Common,Microsoft.AspNet.WebHooks.Common,32 -/packages?q=Microsoft.EntityFrameworkCore,Microsoft.EntityFrameworkCore,32 -/packages?q=Newtonsoft.Json,Newtonsoft.Json,32 -/packages?q=nunit,nunit,32 -/packages?q=sitemap,sitemap,32 -"/packages?q=Tags:""date-picker""","Tags:""date-picker""",32 -"/packages?q=Tags:""DOCX""","Tags:""DOCX""",32 -"/packages?q=Tags:""DXF""","Tags:""DXF""",32 -"/packages?q=Tags:""HttpClient""","Tags:""HttpClient""",32 -"/packages?q=Tags:""Instagram""","Tags:""Instagram""",32 -"/packages?q=Tags:""JPEG2000""","Tags:""JPEG2000""",32 -"/packages?q=Tags:""progressbar""","Tags:""progressbar""",32 -"/packages?q=Tags:""winforms""","Tags:""winforms""",32 -/packages?q=usps,usps,32 -/packages?q=winforms,winforms,32 -/packages?q=wsdl,wsdl,32 -/packages?q=XPS,XPS,32 -/packages?q=BITBUCKET,BITBUCKET,30 -/packages?q=consulta,consulta,30 -/packages?q=DateTimePicker,DateTimePicker,30 -/packages?q=dependency-injection,dependency-injection,30 -/packages?q=diff,diff,30 -/packages?q=dotnetify,dotnetify,30 -/packages?q=exif,exif,30 -/packages?q=fedex,fedex,30 -/packages?q=Google.Apis.androidpublisher&prerelease=true&sortOrder=relevance,Google.Apis.androidpublisher,30 -/packages?q=Google.Apis.vision&prerelease=true&sortOrder=relevance,Google.Apis.vision,30 -/packages?q=grpc,grpc,30 -/packages?q=ImageProcessing,ImageProcessing,30 -/packages?q=imap,imap,30 -/packages?q=JSON-RPC,JSON-RPC,30 -/packages?q=log4net,log4net,30 -/packages?q=OpenCL,OpenCL,30 -/packages?q=REST,REST,30 -/packages?q=snmp,snmp,30 -/packages?q=Subversion,Subversion,30 -"/packages?q=Tags:""clipboard""","Tags:""clipboard""",30 -"/packages?q=Tags:""Code128""","Tags:""Code128""",30 -"/packages?q=Tags:""emoji""","Tags:""emoji""",30 -"/packages?q=Tags:""free-html-to-pdf""","Tags:""free-html-to-pdf""",30 -"/packages?q=Tags:""http-server""","Tags:""http-server""",30 -"/packages?q=Tags:""print""","Tags:""print""",30 -"/packages?q=Tags:""query-builder""","Tags:""query-builder""",30 -"/packages?q=Tags:""SmtpClient""","Tags:""SmtpClient""",30 -"/packages?q=Tags:""speech""","Tags:""speech""",30 -"/packages?q=Tags:""syncfusion.windowsforms""","Tags:""syncfusion.windowsforms""",30 -"/packages?q=Tags:""webp""","Tags:""webp""",30 -/packages?q=TreeView,TreeView,30 -/packages?q=browser,browser,27 -/packages?q=captcha,captcha,27 -/packages?q=Cropper,Cropper,27 -/packages?q=Definitelytyped,Definitelytyped,27 -/packages?q=Google.Apis.people&prerelease=true&sortOrder=relevance,Google.Apis.people,27 -/packages?q=Instagram,Instagram,27 -/packages?q=LZMA,LZMA,27 -/packages?q=Microsoft.AspNet.WebHooks,Microsoft.AspNet.WebHooks,27 -/packages?q=Microsoft.AspNet.WebHooks.Receivers.Custom,Microsoft.AspNet.WebHooks.Receivers.Custom,27 -/packages?q=OAuth-1.0a,OAuth-1.0a,27 -/packages?q=OOXML,OOXML,27 -/packages?q=pop3,pop3,27 -/packages?q=rebus,rebus,27 -/packages?q=SAP,SAP,27 -/packages?q=sltoolkit,sltoolkit,27 -"/packages?q=Tags:""Calendar""","Tags:""Calendar""",27 -"/packages?q=Tags:""fab""","Tags:""fab""",27 -"/packages?q=Tags:""Fuzzy""","Tags:""Fuzzy""",27 -"/packages?q=Tags:""ListView""","Tags:""ListView""",27 -"/packages?q=Tags:""Notification""","Tags:""Notification""",27 -"/packages?q=Tags:""OpenOffice""","Tags:""OpenOffice""",27 -"/packages?q=Tags:""pdf-to-text""","Tags:""pdf-to-text""",27 -"/packages?q=Tags:""System.Windows.Automation""","Tags:""System.Windows.Automation""",27 -"/packages?q=Tags:""user-agent""","Tags:""user-agent""",27 -"/packages?q=Tags:""vCard""","Tags:""vCard""",27 -"/packages?q=Tags:""wpf""","Tags:""wpf""",27 -"/packages?q=Tags:""Zebra""","Tags:""Zebra""",27 -/packages?q=vs2008,vs2008,27 -/packages?q=vxsdk,vxsdk,27 -/packages?q=webm,webm,27 -/packages?q=XSL-FO,XSL-FO,27 -/packages?q=EWS,EWS,24 -/packages?q=ftp,ftp,24 -/packages?q=GPIO,GPIO,24 -/packages?q=Intellisense,Intellisense,24 -/packages?q=kafka,kafka,24 -/packages?q=MediaElement,MediaElement,24 -/packages?q=Microsoft.Extensions,Microsoft.Extensions,24 -/packages?q=mpxj,mpxj,24 -/packages?q=pdfsharp,pdfsharp,24 -/packages?q=radiobutton,radiobutton,24 -/packages?q=report+viewer+control,report viewer control,24 -/packages?q=Scraping,Scraping,24 -/packages?q=soap,soap,24 -"/packages?q=Tags:"".xlsb""","Tags:"".xlsb""",24 -"/packages?q=Tags:""badge""","Tags:""badge""",24 -"/packages?q=Tags:""Bluetooth""","Tags:""Bluetooth""",24 -"/packages?q=Tags:""chromium""","Tags:""chromium""",24 -"/packages?q=Tags:""Chromium""","Tags:""Chromium""",24 -"/packages?q=Tags:""Code-128""","Tags:""Code-128""",24 -"/packages?q=Tags:""datetimepicker""","Tags:""datetimepicker""",24 -"/packages?q=Tags:""Encryption""","Tags:""Encryption""",24 -"/packages?q=Tags:""h264""","Tags:""h264""",24 -"/packages?q=Tags:""HL7""","Tags:""HL7""",24 -"/packages?q=Tags:""ID3""","Tags:""ID3""",24 -"/packages?q=Tags:""modbus""","Tags:""modbus""",24 -"/packages?q=Tags:""pdf-to-html""","Tags:""pdf-to-html""",24 -"/packages?q=Tags:""pgp""","Tags:""pgp""",24 -"/packages?q=Tags:""screen-capture""","Tags:""screen-capture""",24 -"/packages?q=Tags:""System.Web.Http.Filters""","Tags:""System.Web.Http.Filters""",24 -"/packages?q=Tags:""tensorflow""","Tags:""tensorflow""",24 -"/packages?q=Tags:""USB""","Tags:""USB""",24 -"/packages?q=Tags:""WIA""","Tags:""WIA""",24 -"/packages?q=Tags:""windows-service""","Tags:""windows-service""",24 -/packages?q=tags:native,tags:native,24 -/packages?q=uml,uml,24 -/packages?q=Yunpian.Sdk,Yunpian.Sdk,24 -/packages?q=activedirectory,activedirectory,22 -/packages?q=ado.net,ado.net,22 -/packages?q=aes,aes,22 -/packages?q=avscan,avscan,22 -/packages?q=Chat,Chat,22 -/packages?q=Documentation,Documentation,22 -/packages?q=dotmim.sync,dotmim.sync,22 -/packages?q=DynamoVisualProgramming,DynamoVisualProgramming,22 -/packages?q=Encrypt,Encrypt,22 -/packages?q=Google.Apis.chat&prerelease=true&sortOrder=relevance,Google.Apis.chat,22 -/packages?q=Google.Apis.content&prerelease=true&sortOrder=relevance,Google.Apis.content,22 -/packages?q=Google.Apis.customsearch&prerelease=true&sortOrder=relevance,Google.Apis.customsearch,22 -/packages?q=Google.Apis.urlshortener&prerelease=true&sortOrder=relevance,Google.Apis.urlshortener,22 -/packages?q=Google.Apis.webmasters&prerelease=true&sortOrder=relevance,Google.Apis.webmasters,22 -/packages?q=google+login,google login,22 -/packages?q=IEDriver,IEDriver,22 -/packages?q=ini,ini,22 -/packages?q=Microsoft.AspNet.WebHooks.Custom,Microsoft.AspNet.WebHooks.Custom,22 -/packages?q=Microsoft.Extensions.Configuration,Microsoft.Extensions.Configuration,22 -/packages?q=newtonsoft.json,newtonsoft.json,22 -"/packages?q=ODAC,","ODAC,",22 -/packages?q=opc,opc,22 -/packages?q=orleans,orleans,22 -/packages?q=selenium,selenium,22 -/packages?q=seq-app,seq-app,22 -/packages?q=System.Web.Http,System.Web.Http,22 -"/packages?q=Tags:""7-Zip""","Tags:""7-Zip""",22 -"/packages?q=Tags:""ASN.1""","Tags:""ASN.1""",22 -"/packages?q=Tags:""Barcode""","Tags:""Barcode""",22 -"/packages?q=Tags:""DeepClone""","Tags:""DeepClone""",22 -"/packages?q=Tags:""EventAggregator""","Tags:""EventAggregator""",22 -"/packages?q=Tags:""Gantt""","Tags:""Gantt""",22 -"/packages?q=Tags:""GS1-128""","Tags:""GS1-128""",22 -"/packages?q=Tags:""longpress""","Tags:""longpress""",22 -"/packages?q=Tags:""materialdesign""","Tags:""materialdesign""",22 -"/packages?q=Tags:""MetroFramework""","Tags:""MetroFramework""",22 -"/packages?q=Tags:""mime-type""","Tags:""mime-type""",22 -"/packages?q=Tags:""mp4""","Tags:""mp4""",22 -"/packages?q=Tags:""MTProto""","Tags:""MTProto""",22 -"/packages?q=Tags:""OPC-UA""","Tags:""OPC-UA""",22 -"/packages?q=Tags:""pdf-converter""","Tags:""pdf-converter""",22 -"/packages?q=Tags:""PDF417""","Tags:""PDF417""",22 -"/packages?q=Tags:""progress-bar""","Tags:""progress-bar""",22 -"/packages?q=Tags:""ProgressBar""","Tags:""ProgressBar""",22 -"/packages?q=Tags:""Qna""","Tags:""Qna""",22 -"/packages?q=Tags:""rating""","Tags:""rating""",22 -"/packages?q=Tags:""replace""","Tags:""replace""",22 -"/packages?q=Tags:""RichTextEditor""","Tags:""RichTextEditor""",22 -"/packages?q=Tags:""rtp""","Tags:""rtp""",22 -"/packages?q=Tags:""Shapefile""","Tags:""Shapefile""",22 -"/packages?q=Tags:""template-engine""","Tags:""template-engine""",22 -"/packages?q=Tags:""Thermal""","Tags:""Thermal""",22 -/packages?q=tstack,tstack,22 -/packages?q=WebView,WebView,22 -/packages?q=WIA,WIA,22 -/packages?q=Xamarin+Google+Play+Services,Xamarin Google Play Services,22 -/packages?q=XmlSerializer,XmlSerializer,22 -/packages?q=3D,3D,19 -/packages?q=bar-code,bar-code,19 -/packages?q=Blowfish,Blowfish,19 -/packages?q=bluetooth+low+energy,bluetooth low energy,19 -/packages?q=bzip2,bzip2,19 -/packages?q=chinook,chinook,19 -/packages?q=cpprestsdk.v120,cpprestsdk.v120,19 -/packages?q=Credential,Credential,19 -/packages?q=csv,csv,19 -/packages?q=Datepicker+thai,Datepicker thai,19 -/packages?q=delimited,delimited,19 -/packages?q=device-detection,device-detection,19 -/packages?q=DirectShow,DirectShow,19 -"/packages?q=expander,","expander,",19 -"/packages?q=FileUpload,","FileUpload,",19 -/packages?q=Google.Apis.firebasedynamiclinks&prerelease=true&sortOrder=relevance,Google.Apis.firebasedynamiclinks,19 -/packages?q=HTMLEditor,HTMLEditor,19 -/packages?q=HttpRequest,HttpRequest,19 -/packages?q=interpolation,interpolation,19 -/packages?q=JWT,JWT,19 -/packages?q=magick.net.core,magick.net.core,19 -/packages?q=Microsoft.EntityFrameworkCore.Tools,Microsoft.EntityFrameworkCore.Tools,19 -/packages?q=MP3,MP3,19 -/packages?q=mt940,mt940,19 -/packages?q=nathanaeljones,nathanaeljones,19 -/packages?q=nuget,nuget,19 -/packages?q=ODS,ODS,19 -/packages?q=ODT,ODT,19 -/packages?q=paging,paging,19 -/packages?q=PDF/A,PDF/A,19 -/packages?q=Print,Print,19 -/packages?q=regex,regex,19 -/packages?q=RestClient,RestClient,19 -/packages?q=saea,saea,19 -/packages?q=samsung+xamarin,samsung xamarin,19 -/packages?q=SASS,SASS,19 -/packages?q=smtp,smtp,19 -/packages?q=SQL,SQL,19 -/packages?q=sqlite,sqlite,19 -/packages?q=Swagger,Swagger,19 -/packages?q=System.IdentityModel.Tokens.Jwt,System.IdentityModel.Tokens.Jwt,19 -"/packages?q=Tags:""delimited""","Tags:""delimited""",19 -"/packages?q=Tags:""Deribit""","Tags:""Deribit""",19 -"/packages?q=Tags:""EAN13""","Tags:""EAN13""",19 -"/packages?q=Tags:""email-validation""","Tags:""email-validation""",19 -"/packages?q=Tags:""Gauges""","Tags:""Gauges""",19 -"/packages?q=Tags:""Hex""","Tags:""Hex""",19 -"/packages?q=Tags:""html-parser""","Tags:""html-parser""",19 -"/packages?q=Tags:""latex""","Tags:""latex""",19 -"/packages?q=Tags:""map""","Tags:""map""",19 -"/packages?q=Tags:""material-design""","Tags:""material-design""",19 -"/packages?q=Tags:""psd""","Tags:""psd""",19 -"/packages?q=Tags:""Roslyn","Tags:""Roslyn",19 -"/packages?q=Tags:""SAML2""","Tags:""SAML2""",19 -"/packages?q=Tags:""soundex""","Tags:""soundex""",19 -"/packages?q=Tags:""Speech-Recognition""","Tags:""Speech-Recognition""",19 -"/packages?q=Tags:""TWAIN.NET""","Tags:""TWAIN.NET""",19 -/packages?q=thumbnails,thumbnails,19 -/packages?q=Trie,Trie,19 -/packages?q=ups,ups,19 -/packages?q=vb.net,vb.net,19 -/packages?q=XAML,XAML,19 -/packages?q=XLSM,XLSM,19 -/packages?q=+aws-sdk-v3,aws-sdk-v3,16 -/packages?q=actionresult,actionresult,16 -/packages?q=Angular&page=7,Angular,16 -/packages?q=AspNetCore.HealthChecks,AspNetCore.HealthChecks,16 -/packages?q=audio,audio,16 -/packages?q=Autofac,Autofac,16 -/packages?q=automapper,automapper,16 -/packages?q=Bonjour,Bonjour,16 -/packages?q=combobox,combobox,16 -/packages?q=coordinates,coordinates,16 -/packages?q=Costura.Fody,Costura.Fody,16 -/packages?q=Crop,Crop,16 -/packages?q=DateRange,DateRange,16 -/packages?q=DGML,DGML,16 -/packages?q=dos.orm,dos.orm,16 -/packages?q=Elastic.apm,Elastic.apm,16 -/packages?q=enterprise+library+6,enterprise library 6,16 -/packages?q=Filepicker,Filepicker,16 -/packages?q=geojson,geojson,16 -/packages?q=geolocation,geolocation,16 -/packages?q=getopt,getopt,16 -/packages?q=Google.Apis.blogger&prerelease=true&sortOrder=relevance,Google.Apis.blogger,16 -/packages?q=Google.Apis.texttospeech&prerelease=true&sortOrder=relevance,Google.Apis.texttospeech,16 -/packages?q=GZIP,GZIP,16 -/packages?q=HttpClient,HttpClient,16 -/packages?q=informix,informix,16 -/packages?q=linq-to-sql,linq-to-sql,16 -/packages?q=Linux,Linux,16 -/packages?q=math,math,16 -/packages?q=MediaTypeFormatter,MediaTypeFormatter,16 -/packages?q=MessageBox,MessageBox,16 -/packages?q=MetroUI,MetroUI,16 -/packages?q=Microsoft.VisualStudio.Web.CodeGeneration.Design,Microsoft.VisualStudio.Web.CodeGeneration.Design,16 -/packages?q=mongodb,mongodb,16 -/packages?q=monogame.extended,monogame.extended,16 -/packages?q=moq,moq,16 -/packages?q=NLog,NLog,16 -/packages?q=openssl,openssl,16 -/packages?q=openxml,openxml,16 -/packages?q=postgres,postgres,16 -/packages?q=powerappswebapiutils,powerappswebapiutils,16 -/packages?q=progressbar,progressbar,16 -/packages?q=qrcode,qrcode,16 -/packages?q=rar,rar,16 -/packages?q=RTF&page=2,RTF,16 -/packages?q=servicestack+ormlite,servicestack ormlite,16 -/packages?q=SharePointPnPCore*,SharePointPnPCore*,16 -/packages?q=shiny,shiny,16 -/packages?q=SMTP,SMTP,16 -/packages?q=SonarLint,SonarLint,16 -/packages?q=SqlBulkCopy,SqlBulkCopy,16 -/packages?q=Stanford.NLP,Stanford.NLP,16 -/packages?q=Swashbuckle.AspNetCore,Swashbuckle.AspNetCore,16 -/packages?q=System.Web.Routing,System.Web.Routing,16 -"/packages?q=Tags:""3d-chart""","Tags:""3d-chart""",16 -"/packages?q=Tags:""Analyzers""","Tags:""Analyzers""",16 -"/packages?q=Tags:""BulkInsert""","Tags:""BulkInsert""",16 -"/packages?q=Tags:""button""","Tags:""button""",16 -"/packages?q=Tags:""Chatbot""","Tags:""Chatbot""",16 -"/packages?q=Tags:""Cmd""","Tags:""Cmd""",16 -"/packages?q=Tags:""CometD""","Tags:""CometD""",16 -"/packages?q=Tags:""credit-card""","Tags:""credit-card""",16 -"/packages?q=Tags:""CRUD""","Tags:""CRUD""",16 -"/packages?q=Tags:""datetime""","Tags:""datetime""",16 -"/packages?q=Tags:""DNG""","Tags:""DNG""",16 -"/packages?q=Tags:""Docker""","Tags:""Docker""",16 -"/packages?q=Tags:""Full-Text""","Tags:""Full-Text""",16 -"/packages?q=Tags:""glTF""","Tags:""glTF""",16 -"/packages?q=Tags:""GS1""","Tags:""GS1""",16 -"/packages?q=Tags:""heatmap""","Tags:""heatmap""",16 -"/packages?q=Tags:""imdb""","Tags:""imdb""",16 -"/packages?q=Tags:""java""","Tags:""java""",16 -"/packages?q=Tags:""kalman""","Tags:""kalman""",16 -"/packages?q=Tags:""keccak""","Tags:""keccak""",16 -"/packages?q=Tags:""keyboard-hook""","Tags:""keyboard-hook""",16 -"/packages?q=Tags:""LibreOffice""","Tags:""LibreOffice""",16 -"/packages?q=Tags:""Moles""","Tags:""Moles""",16 -"/packages?q=Tags:""Multipart""","Tags:""Multipart""",16 -"/packages?q=Tags:""NumericUpDown""","Tags:""NumericUpDown""",16 -"/packages?q=Tags:""PDF-To-Image""","Tags:""PDF-To-Image""",16 -"/packages?q=Tags:""pdf""","Tags:""pdf""",16 -"/packages?q=Tags:""picker""","Tags:""picker""",16 -"/packages?q=Tags:""plotly""","Tags:""plotly""",16 -"/packages?q=Tags:""RatingBar""","Tags:""RatingBar""",16 -"/packages?q=Tags:""ReportViewer""","Tags:""ReportViewer""",16 -"/packages?q=Tags:""rules-engine""","Tags:""rules-engine""",16 -"/packages?q=Tags:""scaffolding""","Tags:""scaffolding""",16 -"/packages?q=Tags:""screenshot""","Tags:""screenshot""",16 -"/packages?q=Tags:""serialport""","Tags:""serialport""",16 -"/packages?q=Tags:""smb""","Tags:""smb""",16 -"/packages?q=Tags:""SSRS""","Tags:""SSRS""",16 -"/packages?q=Tags:""syncfusion.aspnet""","Tags:""syncfusion.aspnet""",16 -"/packages?q=Tags:""ThreadPool""","Tags:""ThreadPool""",16 -"/packages?q=Tags:""throttle""","Tags:""throttle""",16 -"/packages?q=Tags:""TIFF""","Tags:""TIFF""",16 -"/packages?q=Tags:""Translator""","Tags:""Translator""",16 -"/packages?q=Tags:""video-streaming""","Tags:""video-streaming""",16 -"/packages?q=Tags:""Word""","Tags:""Word""",16 -/packages?q=Thermal,Thermal,16 -/packages?q=wcf,wcf,16 -/packages?q=WebDAV,WebDAV,16 -/packages?q=webp,webp,16 -/packages?q=websocketrpc,websocketrpc,16 -/packages?q=Windows-Forms,Windows-Forms,16 -/packages?q=wysiwyg,wysiwyg,16 -/packages?q=yandex maps,yandex maps,16 -/packages?q=51degrees,51degrees,14 -/packages?q=apirio,apirio,14 -/packages?q=appdynamics,appdynamics,14 -/packages?q=AssemblyVersion,AssemblyVersion,14 -/packages?q=autocomplete,autocomplete,14 -/packages?q=autofac,autofac,14 -/packages?q=AutoMapper.Extensions.Microsoft.DependencyInjection,AutoMapper.Extensions.Microsoft.DependencyInjection,14 -/packages?q=Azure+Media+Services+.NET+SDK,Azure Media Services .NET SDK,14 -/packages?q=badge,badge,14 -/packages?q=Bar-Chart,Bar-Chart,14 -/packages?q=bcrypt,bcrypt,14 -/packages?q=BingMaps,BingMaps,14 -/packages?q=BitCoin,BitCoin,14 -/packages?q=bulk,bulk,14 -/packages?q=cameras,cameras,14 -/packages?q=Chinese,Chinese,14 -/packages?q=circuit+breaker,circuit breaker,14 -/packages?q=codeer,codeer,14 -/packages?q=core.net zip,core.net zip,14 -/packages?q=crc16,crc16,14 -/packages?q=currency,currency,14 -/packages?q=DbContext,DbContext,14 -/packages?q=delete,delete,14 -/packages?q=discriminated+unions,discriminated unions,14 -/packages?q=dotnetrdf,dotnetrdf,14 -/packages?q=Elastic.Apm,Elastic.Apm,14 -/packages?q=embedded-resources,embedded-resources,14 -/packages?q=entity,entity,14 -/packages?q=EZNEW,EZNEW,14 -/packages?q=FaceDetection,FaceDetection,14 -/packages?q=ffmpeg,ffmpeg,14 -/packages?q=flags,flags,14 -/packages?q=fody,fody,14 -/packages?q=Freitas,Freitas,14 -/packages?q=geospatial,geospatial,14 -/packages?q=Glass.Mapper.Sc.91,Glass.Mapper.Sc.91,14 -/packages?q=Google.Apis.iam&prerelease=true&sortOrder=relevance,Google.Apis.iam,14 -/packages?q=Google.Apis.tagmanager&prerelease=true&sortOrder=relevance,Google.Apis.tagmanager,14 -/packages?q=grid,grid,14 -/packages?q=Grpc.Auth.Google,Grpc.Auth.Google,14 -/packages?q=HLSL,HLSL,14 -/packages?q=httpcontextbase,httpcontextbase,14 -/packages?q=identityserver4,identityserver4,14 -/packages?q=Logstash,Logstash,14 -/packages?q=mailchimp,mailchimp,14 -/packages?q=mailkit,mailkit,14 -/packages?q=mapsurfer.net,mapsurfer.net,14 -/packages?q=markdown,markdown,14 -/packages?q=Microsoft.AI,Microsoft.AI,14 -/packages?q=Microsoft.ApplicationInsights,Microsoft.ApplicationInsights,14 -/packages?q=Microsoft.AspNet.WebApi.Client,Microsoft.AspNet.WebApi.Client,14 -/packages?q=Microsoft.AspNet.WebHooks.Receivers.GitHub,Microsoft.AspNet.WebHooks.Receivers.GitHub,14 -/packages?q=Microsoft.AspNetCore.App,Microsoft.AspNetCore.App,14 -/packages?q=microsoft.azure.kusto,microsoft.azure.kusto,14 -/packages?q=Microsoft.Configuration.ConfigurationBuilders,Microsoft.Configuration.ConfigurationBuilders,14 -/packages?q=Microsoft.Extensions.DependencyInjection,Microsoft.Extensions.DependencyInjection,14 -/packages?q=Microsoft.Practices.Unity,Microsoft.Practices.Unity,14 -/packages?q=Microsoft.SourceLink,Microsoft.SourceLink,14 -/packages?q=Microsoft.VisualStudio.Services.NuGet.Bootstrap,Microsoft.VisualStudio.Services.NuGet.Bootstrap,14 -/packages?q=Microsoft.VisualStudio.TestTools.UnitTesting,Microsoft.VisualStudio.TestTools.UnitTesting,14 -/packages?q=mime,mime,14 -/packages?q=Moq,Moq,14 -/packages?q=MPP,MPP,14 -/packages?q=mysql,mysql,14 -/packages?q=Ninject&sortOrder=package-download-count,Ninject,14 -/packages?q=Office365,Office365,14 -/packages?q=ogg,ogg,14 -/packages?q=OWASP,OWASP,14 -/packages?q=owin,owin,14 -/packages?q=Parallax,Parallax,14 -/packages?q=PDS,PDS,14 -"/packages?q=Places,","Places,",14 -/packages?q=png,png,14 -/packages?q=price,price,14 -/packages?q=printer,printer,14 -/packages?q=ProgressDialog,ProgressDialog,14 -/packages?q=python,python,14 -/packages?q=qt,qt,14 -/packages?q=receipt,receipt,14 -/packages?q=recurring,recurring,14 -/packages?q=RFID,RFID,14 -/packages?q=rhino3dmio,rhino3dmio,14 -/packages?q=serilog,serilog,14 -/packages?q=signalr,signalr,14 -/packages?q=Skype,Skype,14 -/packages?q=solr,solr,14 -/packages?q=SQLRSNuget,SQLRSNuget,14 -/packages?q=SSDT,SSDT,14 -/packages?q=StoredProcedure,StoredProcedure,14 -/packages?q=swashbuckle,swashbuckle,14 -/packages?q=syncfusion.ej2.wordeditor,syncfusion.ej2.wordeditor,14 -"/packages?q=Tags:"".ods""","Tags:"".ods""",14 -"/packages?q=Tags:""acmesharp""","Tags:""acmesharp""",14 -"/packages?q=Tags:""APNS""","Tags:""APNS""",14 -"/packages?q=Tags:""Balloon""","Tags:""Balloon""",14 -"/packages?q=Tags:""datatable""","Tags:""datatable""",14 -"/packages?q=Tags:""Document-Viewer""","Tags:""Document-Viewer""",14 -"/packages?q=Tags:""embedded-database""","Tags:""embedded-database""",14 -"/packages?q=Tags:""Encryption.Decryption""","Tags:""Encryption.Decryption""",14 -"/packages?q=Tags:""fingerprint""","Tags:""fingerprint""",14 -"/packages?q=Tags:""floating-action-button""","Tags:""floating-action-button""",14 -"/packages?q=Tags:""gauge""&page=3","Tags:""gauge""",14 -"/packages?q=Tags:""health-check""","Tags:""health-check""",14 -"/packages?q=Tags:""Honeywell""","Tags:""Honeywell""",14 -"/packages?q=Tags:""hotkey""","Tags:""hotkey""",14 -"/packages?q=Tags:""HttpWebRequest""","Tags:""HttpWebRequest""",14 -"/packages?q=Tags:""ibeacon""","Tags:""ibeacon""",14 -"/packages?q=Tags:""IFC""","Tags:""IFC""",14 -"/packages?q=Tags:""image-resizing""","Tags:""image-resizing""",14 -"/packages?q=Tags:""Luhn""","Tags:""Luhn""",14 -"/packages?q=Tags:""MASK""","Tags:""MASK""",14 -"/packages?q=Tags:""MD5""","Tags:""MD5""",14 -"/packages?q=Tags:""MongoDB-Repository""","Tags:""MongoDB-Repository""",14 -"/packages?q=Tags:""MTP""","Tags:""MTP""",14 -"/packages?q=Tags:""OPC-DA""","Tags:""OPC-DA""",14 -"/packages?q=Tags:""OpenGL""","Tags:""OpenGL""",14 -"/packages?q=Tags:""pdf-to-png""","Tags:""pdf-to-png""",14 -"/packages?q=Tags:""Pdf417""","Tags:""Pdf417""",14 -"/packages?q=Tags:""PDFium""","Tags:""PDFium""",14 -"/packages?q=Tags:""PersianCalendar""","Tags:""PersianCalendar""",14 -"/packages?q=Tags:""PPTX""","Tags:""PPTX""",14 -"/packages?q=Tags:""RADIUS""","Tags:""RADIUS""",14 -"/packages?q=Tags:""Repository-Pattern""","Tags:""Repository-Pattern""",14 -"/packages?q=Tags:""ResX""","Tags:""ResX""",14 -"/packages?q=Tags:""RFID""","Tags:""RFID""",14 -"/packages?q=Tags:""sexy-proxy""","Tags:""sexy-proxy""",14 -"/packages?q=Tags:""SHA512""","Tags:""SHA512""",14 -"/packages?q=Tags:""sound""","Tags:""sound""",14 -"/packages?q=Tags:""SPSite""","Tags:""SPSite""",14 -"/packages?q=Tags:""Stepper""","Tags:""Stepper""",14 -"/packages?q=Tags:""swipe""","Tags:""swipe""",14 -"/packages?q=Tags:""Sybase""","Tags:""Sybase""",14 -"/packages?q=Tags:""syncfusion.wpf""","Tags:""syncfusion.wpf""",14 -"/packages?q=Tags:""TCP""","Tags:""TCP""",14 -"/packages?q=Tags:""Telemetry""","Tags:""Telemetry""",14 -"/packages?q=Tags:""textbox""","Tags:""textbox""",14 -"/packages?q=Tags:""toast""","Tags:""toast""",14 -"/packages?q=Tags:""Tree""","Tags:""Tree""",14 -"/packages?q=Tags:""WebDAV""","Tags:""WebDAV""",14 -"/packages?q=Tags:""winforms-controls""","Tags:""winforms-controls""",14 -"/packages?q=Tags:""x12""","Tags:""x12""",14 -"/packages?q=Tags:""Zoom""","Tags:""Zoom""",14 -/packages?q=Thumbnail,Thumbnail,14 -/packages?q=Tidy,Tidy,14 -/packages?q=timeline,timeline,14 -/packages?q=timeout,timeout,14 -/packages?q=TimePicker,TimePicker,14 -/packages?q=tor,tor,14 -/packages?q=treeview,treeview,14 -/packages?q=unity,unity,14 -/packages?q=unzip,unzip,14 -/packages?q=VTK,VTK,14 -/packages?q=webclient,webclient,14 -/packages?q=WindowsAPICodePack,WindowsAPICodePack,14 -/packages?q=x64,x64,14 -/packages?q=XtremeDocumentStudio,XtremeDocumentStudio,14 -/packages?q=ya,ya,14 -/packages?q=zlib,zlib,14 -/packages?q=zoho,zoho,14 -/packages?q=zxing.net.bindings,zxing.net.bindings,14 -"/packages?q=""playfab+party""","""playfab party""",11 -/packages?q=ajaxcontroltoolkit,ajaxcontroltoolkit,11 -/packages?q=Amazon.CDK,Amazon.CDK,11 -/packages?q=Amazon.Lambda,Amazon.Lambda,11 -/packages?q=android,android,11 -/packages?q=ApiController,ApiController,11 -/packages?q=aspnetcore,aspnetcore,11 -"/packages?q=Auto-Update,","Auto-Update,",11 -/packages?q=Bitbucket,Bitbucket,11 -/packages?q=buttplug,buttplug,11 -/packages?q=Cinchoo,Cinchoo,11 -/packages?q=Common.logging,Common.logging,11 -/packages?q=compare,compare,11 -/packages?q=crop,crop,11 -/packages?q=csla,csla,11 -/packages?q=curl,curl,11 -/packages?q=dashboard,dashboard,11 -/packages?q=database-migrations,database-migrations,11 -/packages?q=DataContract,DataContract,11 -/packages?q=Datagrid,Datagrid,11 -/packages?q=DHL,DHL,11 -/packages?q=Digest,Digest,11 -/packages?q=dropdown,dropdown,11 -/packages?q=ELMAH,ELMAH,11 -/packages?q=enterpriselibrary,enterpriselibrary,11 -/packages?q=EntityFramework.SqlServer,EntityFramework.SqlServer,11 -/packages?q=ethernet/ip,ethernet/ip,11 -/packages?q=event-sourcing,event-sourcing,11 -/packages?q=ExtractText,ExtractText,11 -/packages?q=Firebase,Firebase,11 -/packages?q=forum,forum,11 -/packages?q=FtpClient,FtpClient,11 -/packages?q=fxcop,fxcop,11 -/packages?q=geckofx,geckofx,11 -/packages?q=ghpr,ghpr,11 -/packages?q=Glass.Mapper.Sc.82,Glass.Mapper.Sc.82,11 -/packages?q=Google.Apis.cloudfunctions&prerelease=true&sortOrder=relevance,Google.Apis.cloudfunctions,11 -/packages?q=Google.Apis.discovery&prerelease=true&sortOrder=relevance,Google.Apis.discovery,11 -/packages?q=Google.Apis.fitness&prerelease=true&sortOrder=relevance,Google.Apis.fitness,11 -/packages?q=google+translate,google translate,11 -/packages?q=Graylog2,Graylog2,11 -/packages?q=gridview,gridview,11 -/packages?q=HAL,HAL,11 -"/packages?q=Highcharts,","Highcharts,",11 -/packages?q=Hpcsharp,Hpcsharp,11 -/packages?q=html,html,11 -"/packages?q=Id:""cef.redist"",""cef.sdk""","Id:""cef.redist"",""cef.sdk""",11 -/packages?q=indexeddb,indexeddb,11 -/packages?q=interop,interop,11 -/packages?q=ipsum,ipsum,11 -/packages?q=jpeg,jpeg,11 -/packages?q=jquery,jquery,11 -/packages?q=jquery.ui,jquery.ui,11 -/packages?q=json-api,json-api,11 -/packages?q=json.net,json.net,11 -/packages?q=kendo,kendo,11 -/packages?q=Linq2Sql,Linq2Sql,11 -"/packages?q=loading,","loading,",11 -/packages?q=log4net.appender,log4net.appender,11 -/packages?q=lupusa87,lupusa87,11 -/packages?q=MDB,MDB,11 -/packages?q=Microsoft.AspNet.WebApi.Core,Microsoft.AspNet.WebApi.Core,11 -/packages?q=Microsoft.AspNetCore,Microsoft.AspNetCore,11 -/packages?q=Microsoft.Bcl,Microsoft.Bcl,11 -/packages?q=Microsoft.EntityFrameworkCore.Design,Microsoft.EntityFrameworkCore.Design,11 -/packages?q=Microsoft.Extensions.Configuration.Binder,Microsoft.Extensions.Configuration.Binder,11 -/packages?q=Microsoft.InformationProtection,Microsoft.InformationProtection,11 -/packages?q=Microsoft.ReportViewer&page=2,Microsoft.ReportViewer,11 -/packages?q=mouse,mouse,11 -/packages?q=MVVM,MVVM,11 -/packages?q=NEST,NEST,11 -/packages?q=netmq,netmq,11 -"/packages?q=nfc,","nfc,",11 -/packages?q=NLP,NLP,11 -/packages?q=notification,notification,11 -/packages?q=NTP,NTP,11 -/packages?q=odp.net,odp.net,11 -/packages?q=office,office,11 -/packages?q=OLAP,OLAP,11 -/packages?q=OpenAL,OpenAL,11 -/packages?q=opencv,opencv,11 -/packages?q=oracle,oracle,11 -/packages?q=orchard,orchard,11 -/packages?q=phantomjs,phantomjs,11 -/packages?q=POCO,POCO,11 -/packages?q=PowerCollections,PowerCollections,11 -/packages?q=Pub/Sub,Pub/Sub,11 -/packages?q=QR,QR,11 -/packages?q=querybuilder,querybuilder,11 -/packages?q=rating,rating,11 -/packages?q=rebex,rebex,11 -/packages?q=Renci,Renci,11 -/packages?q=ReportViewer&page=2,ReportViewer,11 -/packages?q=ReportViewer&page=3,ReportViewer,11 -/packages?q=restsharp,restsharp,11 -/packages?q=Rhino3dmIo,Rhino3dmIo,11 -/packages?q=Ribbon,Ribbon,11 -/packages?q=RoslynPad,RoslynPad,11 -/packages?q=RSA,RSA,11 -/packages?q=SEO,SEO,11 -/packages?q=Serilog.Enrichers,Serilog.Enrichers,11 -/packages?q=signalr+aspnetcore,signalr aspnetcore,11 -/packages?q=sitecore,sitecore,11 -/packages?q=SMO,SMO,11 -/packages?q=sms,sms,11 -/packages?q=STUN,STUN,11 -/packages?q=StyleCop,StyleCop,11 -/packages?q=SVG,SVG,11 -/packages?q=System.Net.Http,System.Net.Http,11 -/packages?q=system.net.mail,system.net.mail,11 -/packages?q=System.Web.Mvc,System.Web.Mvc,11 -/packages?q=System.Web.routing,System.Web.routing,11 -"/packages?q=Tags:""autoupdate""","Tags:""autoupdate""",11 -"/packages?q=Tags:""BarCode""","Tags:""BarCode""",11 -"/packages?q=Tags:""Base58""","Tags:""Base58""",11 -"/packages?q=Tags:""calendar""","Tags:""calendar""",11 -"/packages?q=Tags:""CEF""","Tags:""CEF""",11 -"/packages?q=Tags:""central""","Tags:""central""",11 -"/packages?q=Tags:""Chart""","Tags:""Chart""",11 -"/packages?q=Tags:""circular-progress""","Tags:""circular-progress""",11 -"/packages?q=Tags:""cldr""","Tags:""cldr""",11 -"/packages?q=Tags:""ColorPicker""","Tags:""ColorPicker""",11 -"/packages?q=Tags:""combobox""","Tags:""combobox""",11 -"/packages?q=Tags:""ComboBox""","Tags:""ComboBox""",11 -"/packages?q=Tags:""Compression""","Tags:""Compression""",11 -"/packages?q=Tags:""CoreScanner""","Tags:""CoreScanner""",11 -"/packages?q=Tags:""CPF""","Tags:""CPF""",11 -"/packages?q=Tags:""database""","Tags:""database""",11 -"/packages?q=Tags:""DependencyService""","Tags:""DependencyService""",11 -"/packages?q=Tags:""Diagram""","Tags:""Diagram""",11 -"/packages?q=Tags:""Dictionary""","Tags:""Dictionary""",11 -"/packages?q=Tags:""DirectX""","Tags:""DirectX""",11 -"/packages?q=Tags:""EAN-13""","Tags:""EAN-13""",11 -"/packages?q=Tags:""EPL""","Tags:""EPL""",11 -"/packages?q=Tags:""EWS""","Tags:""EWS""",11 -"/packages?q=Tags:""EXPORT-EXCEL""","Tags:""EXPORT-EXCEL""",11 -"/packages?q=Tags:""EZPL""","Tags:""EZPL""",11 -"/packages?q=Tags:""ffmpeg-wrapper""","Tags:""ffmpeg-wrapper""",11 -"/packages?q=Tags:""FFMpeg""","Tags:""FFMpeg""",11 -"/packages?q=Tags:""ftps""","Tags:""ftps""",11 -"/packages?q=Tags:""gamepad""","Tags:""gamepad""",11 -"/packages?q=Tags:""graph""","Tags:""graph""",11 -"/packages?q=Tags:""image-processing""","Tags:""image-processing""",11 -"/packages?q=Tags:""Intermec""","Tags:""Intermec""",11 -"/packages?q=Tags:""iwshruntimelibrary""","Tags:""iwshruntimelibrary""",11 -"/packages?q=Tags:""kanban""","Tags:""kanban""",11 -"/packages?q=Tags:""Kerberos""","Tags:""Kerberos""",11 -"/packages?q=Tags:""kubernetes""","Tags:""kubernetes""",11 -"/packages?q=Tags:""localization""","Tags:""localization""",11 -"/packages?q=Tags:""message-queue""","Tags:""message-queue""",11 -"/packages?q=Tags:""minify""","Tags:""minify""",11 -"/packages?q=Tags:""Mocking""","Tags:""Mocking""",11 -"/packages?q=Tags:""MSBuild""","Tags:""MSBuild""",11 -"/packages?q=Tags:""named-pipes""","Tags:""named-pipes""",11 -"/packages?q=Tags:""netsh""","Tags:""netsh""",11 -"/packages?q=Tags:""ObservableDictionary""","Tags:""ObservableDictionary""",11 -"/packages?q=Tags:""ODT""","Tags:""ODT""",11 -"/packages?q=Tags:""OpenApi""","Tags:""OpenApi""",11 -"/packages?q=Tags:""OpenXml""","Tags:""OpenXml""",11 -"/packages?q=Tags:""password-hashing""","Tags:""password-hashing""",11 -"/packages?q=Tags:""pdf-to-tiff""","Tags:""pdf-to-tiff""",11 -"/packages?q=Tags:""PDF/A""","Tags:""PDF/A""",11 -"/packages?q=Tags:""Picker""","Tags:""Picker""",11 -"/packages?q=Tags:""Pinterest""","Tags:""Pinterest""",11 -"/packages?q=Tags:""PPT""","Tags:""PPT""",11 -"/packages?q=Tags:""qr-code""","Tags:""qr-code""",11 -"/packages?q=Tags:""RBAC""","Tags:""RBAC""",11 -"/packages?q=Tags:""recyclerview""","Tags:""recyclerview""",11 -"/packages?q=Tags:""Rtmp""","Tags:""Rtmp""",11 -"/packages?q=Tags:""scp""","Tags:""scp""",11 -"/packages?q=Tags:""serial""","Tags:""serial""",11 -"/packages?q=Tags:""Siemens""","Tags:""Siemens""",11 -"/packages?q=Tags:""Slide""","Tags:""Slide""",11 -"/packages?q=Tags:""smartcard""","Tags:""smartcard""",11 -"/packages?q=Tags:""smpp""","Tags:""smpp""",11 -"/packages?q=Tags:""spreadsheet""","Tags:""spreadsheet""",11 -"/packages?q=Tags:""sql-query-builder""","Tags:""sql-query-builder""",11 -"/packages?q=Tags:""SqlBulkCopy""","Tags:""SqlBulkCopy""",11 -"/packages?q=Tags:""SSH""","Tags:""SSH""",11 -"/packages?q=Tags:""ssl""","Tags:""ssl""",11 -"/packages?q=Tags:""sunrise""","Tags:""sunrise""",11 -"/packages?q=Tags:""syncfusion.uwp""","Tags:""syncfusion.uwp""",11 -"/packages?q=Tags:""TCPClient""","Tags:""TCPClient""",11 -"/packages?q=Tags:""Theme""","Tags:""Theme""",11 -"/packages?q=Tags:""TitleBar""","Tags:""TitleBar""",11 -"/packages?q=Tags:""TSV""","Tags:""TSV""",11 -"/packages?q=Tags:""UiPath""","Tags:""UiPath""",11 -"/packages?q=Tags:""UML""","Tags:""UML""",11 -"/packages?q=Tags:""unit-test""","Tags:""unit-test""",11 -"/packages?q=Tags:""Upload""","Tags:""Upload""",11 -"/packages?q=Tags:""vb.net""","Tags:""vb.net""",11 -"/packages?q=Tags:""Vimeo""","Tags:""Vimeo""",11 -"/packages?q=Tags:""VS2017""","Tags:""VS2017""",11 -"/packages?q=Tags:""VSIX""","Tags:""VSIX""",11 -"/packages?q=Tags:""Webhooks""","Tags:""Webhooks""",11 -"/packages?q=Tags:""websocket-server""","Tags:""websocket-server""",11 -"/packages?q=Tags:""wia""","Tags:""wia""",11 -"/packages?q=Tags:""youtube-dl""","Tags:""youtube-dl""",11 -/packages?q=tesseract,tesseract,11 -/packages?q=timer,timer,11 -/packages?q=TLS,TLS,11 -/packages?q=Unity,Unity,11 -/packages?q=Visio,Visio,11 -/packages?q=vlc,vlc,11 -/packages?q=weak+event+manager&prerel=false,weak event manager,11 -/packages?q=web.config,web.config,11 -/packages?q=Webkit,Webkit,11 -/packages?q=WIC,WIC,11 -/packages?q=wiki,wiki,11 -/packages?q=wizard,wizard,11 -/packages?q=Xamarin.Firebase.ML,Xamarin.Firebase.ML,11 -/packages?q=xlabs.ioc,xlabs.ioc,11 -/packages?q=XMPP,XMPP,11 -/packages?q=xsd,xsd,11 -/packages?q=XSD,XSD,11 -/packages?q=xss,xss,11 -/packages?q=xunit,xunit,11 -/packages?q=yandex,yandex,11 -/packages?q=ZLIB,ZLIB,11 -/packages?q=Accord.NET,Accord.NET,8 -"/packages?q=AdMob,","AdMob,",8 -/packages?q=Adobe,Adobe,8 -/packages?q=AForge,AForge,8 -/packages?q=AMap,AMap,8 -/packages?q=amp,amp,8 -/packages?q=AMQP,AMQP,8 -/packages?q=androidx,androidx,8 -/packages?q=Angular+core,Angular core,8 -/packages?q=animated,animated,8 -/packages?q=AOP,AOP,8 -/packages?q=Apache.Ignite,Apache.Ignite,8 -/packages?q=arabic,arabic,8 -/packages?q=argparse,argparse,8 -/packages?q=AspNetCore.HealthChecks&source=post_page---------------------------,AspNetCore.HealthChecks,8 -/packages?q=Autocomplete,Autocomplete,8 -/packages?q=Autocomplete&page=2,Autocomplete,8 -/packages?q=AWSXRayRecorder,AWSXRayRecorder,8 -/packages?q=Aztec,Aztec,8 -"/packages?q=barcode,","barcode,",8 -"/packages?q=barcode,&page=8","barcode,",8 -/packages?q=Barcode&page=4,Barcode,8 -/packages?q=basic-authentication,basic-authentication,8 -/packages?q=Bittorrent,Bittorrent,8 -/packages?q=boost,boost,8 -/packages?q=Bot.Builder.RealTimeMediaCalling,Bot.Builder.RealTimeMediaCalling,8 -/packages?q=BusyIndicator,BusyIndicator,8 -/packages?q=calendars,calendars,8 -/packages?q=Camera,Camera,8 -/packages?q=cameras&page=2,cameras,8 -/packages?q=campaign,campaign,8 -/packages?q=Cdbc,Cdbc,8 -/packages?q=Certificate,Certificate,8 -/packages?q=charts,charts,8 -/packages?q=Checkbox,Checkbox,8 -/packages?q=chrome,chrome,8 -/packages?q=cinchoo,cinchoo,8 -/packages?q=cloudscribe.Core,cloudscribe.Core,8 -/packages?q=Comparison,Comparison,8 -/packages?q=ComputerVision,ComputerVision,8 -/packages?q=Cordova,Cordova,8 -/packages?q=core,core,8 -/packages?q=Crc32,Crc32,8 -/packages?q=Cropping,Cropping,8 -/packages?q=CRUD,CRUD,8 -"/packages?q=Datepicker,","Datepicker,",8 -/packages?q=detection,detection,8 -/packages?q=directx,directx,8 -/packages?q=dns,dns,8 -/packages?q=doc,doc,8 -/packages?q=DotNext,DotNext,8 -/packages?q=EAN13,EAN13,8 -/packages?q=entityframework,entityframework,8 -/packages?q=epub,epub,8 -/packages?q=exporting,exporting,8 -/packages?q=fhir,fhir,8 -/packages?q=flipview,flipview,8 -/packages?q=gelf,gelf,8 -/packages?q=geometric,geometric,8 -/packages?q=GIT,GIT,8 -/packages?q=Google.Apis.cloudbilling&prerelease=true&sortOrder=relevance,Google.Apis.cloudbilling,8 -/packages?q=Google.Apis.indexing&prerelease=true&sortOrder=relevance,Google.Apis.indexing,8 -/packages?q=Google.Apis.pagespeedonline&prerelease=true&sortOrder=relevance,Google.Apis.pagespeedonline,8 -/packages?q=Google.Apis.searchconsole&prerelease=true&sortOrder=relevance,Google.Apis.searchconsole,8 -/packages?q=Google.Apis.storage&prerelease=true&sortOrder=relevance,Google.Apis.storage,8 -/packages?q=Google.Protobuf,Google.Protobuf,8 -/packages?q=hangfire+storage,hangfire storage,8 -/packages?q=hashing,hashing,8 -/packages?q=hid,hid,8 -/packages?q=hl7.fhir.stu3,hl7.fhir.stu3,8 -/packages?q=HockeySDK&prerelease=true&sortOrder=relevance,HockeySDK,8 -/packages?q=httppost,httppost,8 -/packages?q=HttpServer,HttpServer,8 -/packages?q=hue,hue,8 -/packages?q=IBM,IBM,8 -/packages?q=idependencyresolver,idependencyresolver,8 -"/packages?q=ILMerge,","ILMerge,",8 -/packages?q=INI,INI,8 -/packages?q=ini-file,ini-file,8 -/packages?q=integration+services,integration services,8 -/packages?q=ipaddress,ipaddress,8 -/packages?q=irc,irc,8 -/packages?q=ironpython,ironpython,8 -/packages?q=iseries,iseries,8 -/packages?q=IServiceProvider,IServiceProvider,8 -/packages?q=iso3166,iso3166,8 -/packages?q=jamesmontemagno,jamesmontemagno,8 -/packages?q=jira,jira,8 -/packages?q=Json.NET,Json.NET,8 -/packages?q=Label,Label,8 -/packages?q=Line-Chart,Line-Chart,8 -/packages?q=lti,lti,8 -/packages?q=Mac,Mac,8 -/packages?q=mail,mail,8 -/packages?q=MailMessage,MailMessage,8 -/packages?q=Maxicode,Maxicode,8 -/packages?q=MembershipProvider LDAP,MembershipProvider LDAP,8 -/packages?q=mesh,mesh,8 -/packages?q=metatrader,metatrader,8 -/packages?q=Microsoft.ApplicationInsights.,Microsoft.ApplicationInsights.,8 -/packages?q=Microsoft.AspNetCore.All,Microsoft.AspNetCore.All,8 -/packages?q=microsoft.aspnetcore.app,microsoft.aspnetcore.app,8 -/packages?q=Microsoft.AspNetCore.Identity.EntityFrameworkCore,Microsoft.AspNetCore.Identity.EntityFrameworkCore,8 -/packages?q=Microsoft.AspNetCore.Mvc,Microsoft.AspNetCore.Mvc,8 -/packages?q=Microsoft.AspNetCore.Mvc.NewtonsoftJson,Microsoft.AspNetCore.Mvc.NewtonsoftJson,8 -/packages?q=Microsoft.Azure.Devices,Microsoft.Azure.Devices,8 -/packages?q=Microsoft.Azure.Management.DataLake,Microsoft.Azure.Management.DataLake,8 -/packages?q=Microsoft.Azure.WebJobs.Extensions.ServiceBus,Microsoft.Azure.WebJobs.Extensions.ServiceBus,8 -/packages?q=Microsoft.CSharp,Microsoft.CSharp,8 -/packages?q=Microsoft.EntityFrameworkCore.SqlServer,Microsoft.EntityFrameworkCore.SqlServer,8 -/packages?q=Microsoft.Extensions.Caching,Microsoft.Extensions.Caching,8 -/packages?q=Microsoft.Extensions.Logging,Microsoft.Extensions.Logging,8 -/packages?q=Microsoft.NET.Test.Sdk,Microsoft.NET.Test.Sdk,8 -/packages?q=microsoft.netcore.app,microsoft.netcore.app,8 -/packages?q=Microsoft.SourceLink.*,Microsoft.SourceLink.*,8 -/packages?q=Microsoft.WindowsAzure.ServiceRuntime,Microsoft.WindowsAzure.ServiceRuntime,8 -/packages?q=modal,modal,8 -/packages?q=mono,mono,8 -/packages?q=month,month,8 -/packages?q=mp3,mp3,8 -/packages?q=mp4,mp4,8 -/packages?q=mqtt,mqtt,8 -/packages?q=nakedobjects,nakedobjects,8 -/packages?q=neodynamic,neodynamic,8 -/packages?q=newtonsoft,newtonsoft,8 -/packages?q=newtonsoft+json,newtonsoft json,8 -/packages?q=nhibernate,nhibernate,8 -/packages?q=ninject,ninject,8 -/packages?q=Node.js,Node.js,8 -/packages?q=nodejs,nodejs,8 -/packages?q=Npgsql,Npgsql,8 -/packages?q=Npgsql.EntityFrameworkCore.PostgreSQL,Npgsql.EntityFrameworkCore.PostgreSQL,8 -/packages?q=obfuscator,obfuscator,8 -/packages?q=OBJ,OBJ,8 -/packages?q=ObservableCollection,ObservableCollection,8 -/packages?q=observablecollection&page=2,observablecollection,8 -/packages?q=OCR&page=3,OCR,8 -/packages?q=ORM,ORM,8 -/packages?q=pagedlist,pagedlist,8 -/packages?q=Payments&page=4,Payments,8 -/packages?q=PdfSharp,PdfSharp,8 -/packages?q=persian,persian,8 -"/packages?q=Pie,","Pie,",8 -/packages?q=pinyin,pinyin,8 -/packages?q=pivot,pivot,8 -/packages?q=polly,polly,8 -/packages?q=powerpoint,powerpoint,8 -/packages?q=PPT,PPT,8 -/packages?q=PrettyPrint,PrettyPrint,8 -/packages?q=priority+queue,priority queue,8 -/packages?q=Prism,Prism,8 -/packages?q=profanity,profanity,8 -/packages?q=protobuf,protobuf,8 -"/packages?q=provider,","provider,",8 -/packages?q=PST,PST,8 -/packages?q=Pyton,Pyton,8 -/packages?q=quartz,quartz,8 -/packages?q=Raspberrypi,Raspberrypi,8 -/packages?q=rbac,rbac,8 -/packages?q=ReportViewer,ReportViewer,8 -/packages?q=rollbar,rollbar,8 -/packages?q=rss,rss,8 -/packages?q=sass,sass,8 -/packages?q=Scanner,Scanner,8 -/packages?q=scheduler,scheduler,8 -/packages?q=SendGrid,SendGrid,8 -/packages?q=Serilog,Serilog,8 -/packages?q=SharpSvn,SharpSvn,8 -/packages?q=sharpziplib,sharpziplib,8 -/packages?q=Signature,Signature,8 -/packages?q=similarity,similarity,8 -/packages?q=simpleinjector,simpleinjector,8 -/packages?q=Sin.Net,Sin.Net,8 -/packages?q=skiasharp,skiasharp,8 -/packages?q=slider,slider,8 -/packages?q=Snippets,Snippets,8 -/packages?q=Socks,Socks,8 -/packages?q=SpatiaLite,SpatiaLite,8 -/packages?q=specflow,specflow,8 -/packages?q=sqlite-net-pcl,sqlite-net-pcl,8 -/packages?q=steema,steema,8 -/packages?q=StringUtils,StringUtils,8 -/packages?q=Stylecop.Analyzers,Stylecop.Analyzers,8 -/packages?q=Syncfusion,Syncfusion,8 -/packages?q=System.ComponentModel.DataAnnotations,System.ComponentModel.DataAnnotations,8 -/packages?q=System.IO.Compression,System.IO.Compression,8 -/packages?q=System.IO.Pipelines,System.IO.Pipelines,8 -/packages?q=system.memory,system.memory,8 -/packages?q=system.net.http,system.net.http,8 -/packages?q=System.Web.Optimization,System.Web.Optimization,8 -/packages?q=System.Windows.Interactivity,System.Windows.Interactivity,8 -/packages?q=system.xml,system.xml,8 -/packages?q=Tagbuilder,Tagbuilder,8 -"/packages?q=Tags:"".xlsm""","Tags:"".xlsm""",8 -"/packages?q=Tags:""2fa""","Tags:""2fa""",8 -"/packages?q=Tags:""7Zip""","Tags:""7Zip""",8 -"/packages?q=Tags:""AAMVA""","Tags:""AAMVA""",8 -"/packages?q=Tags:""American""","Tags:""American""",8 -"/packages?q=Tags:""angular-cli""","Tags:""angular-cli""",8 -"/packages?q=Tags:""async-await""","Tags:""async-await""",8 -"/packages?q=Tags:""audio""","Tags:""audio""",8 -"/packages?q=Tags:""aws-sdk-v3""&refid=s3-gs","Tags:""aws-sdk-v3""",8 -"/packages?q=Tags:""Aztec""","Tags:""Aztec""",8 -"/packages?q=Tags:""Azure-DevOps""","Tags:""Azure-DevOps""",8 -"/packages?q=Tags:""Bar-code""","Tags:""Bar-code""",8 -"/packages?q=Tags:""barcode-scanner""","Tags:""barcode-scanner""",8 -"/packages?q=Tags:""base64""","Tags:""base64""",8 -"/packages?q=Tags:""BI""","Tags:""BI""",8 -"/packages?q=Tags:""bit""","Tags:""bit""",8 -"/packages?q=Tags:""BPMN""","Tags:""BPMN""",8 -"/packages?q=Tags:""CAB""","Tags:""CAB""",8 -"/packages?q=Tags:""caching""","Tags:""caching""",8 -"/packages?q=Tags:""caldav""","Tags:""caldav""",8 -"/packages?q=Tags:""CAML""","Tags:""CAML""",8 -"/packages?q=Tags:""candlestick""","Tags:""candlestick""",8 -"/packages?q=Tags:""CardView""","Tags:""CardView""",8 -"/packages?q=Tags:""circle""","Tags:""circle""",8 -"/packages?q=Tags:""ClosedXML""","Tags:""ClosedXML""",8 -"/packages?q=Tags:""clustering""","Tags:""clustering""",8 -"/packages?q=Tags:""code-generator""","Tags:""code-generator""",8 -"/packages?q=Tags:""color-picker""","Tags:""color-picker""",8 -"/packages?q=Tags:""Color""","Tags:""Color""",8 -"/packages?q=Tags:""compress""","Tags:""compress""",8 -"/packages?q=Tags:""config-transform""","Tags:""config-transform""",8 -"/packages?q=Tags:""CR2""","Tags:""CR2""",8 -"/packages?q=Tags:""crc32""","Tags:""crc32""",8 -"/packages?q=Tags:""Cropper""","Tags:""Cropper""",8 -"/packages?q=Tags:""CSV""","Tags:""CSV""",8 -"/packages?q=Tags:""curve25519""","Tags:""curve25519""",8 -"/packages?q=Tags:""data-access-layer""","Tags:""data-access-layer""",8 -"/packages?q=Tags:""data-generation""","Tags:""data-generation""",8 -"/packages?q=Tags:""DataGridView""","Tags:""DataGridView""",8 -"/packages?q=Tags:""DateTimePicker""","Tags:""DateTimePicker""",8 -"/packages?q=Tags:""DICOM""","Tags:""DICOM""",8 -"/packages?q=Tags:""document-viewer""","Tags:""document-viewer""",8 -"/packages?q=Tags:""Drawing""","Tags:""Drawing""",8 -"/packages?q=Tags:""DWG""","Tags:""DWG""",8 -"/packages?q=Tags:""e.164""","Tags:""e.164""",8 -"/packages?q=Tags:""email""","Tags:""email""",8 -"/packages?q=Tags:""ENCRYPTED""","Tags:""ENCRYPTED""",8 -"/packages?q=Tags:""Entry""","Tags:""Entry""",8 -"/packages?q=Tags:""eps""","Tags:""eps""",8 -"/packages?q=Tags:""Ethereum""","Tags:""Ethereum""",8 -"/packages?q=Tags:""eval""","Tags:""eval""",8 -"/packages?q=Tags:""Exception-Handling""","Tags:""Exception-Handling""",8 -"/packages?q=Tags:""extract""","Tags:""extract""",8 -"/packages?q=Tags:""ffprobe""","Tags:""ffprobe""",8 -"/packages?q=Tags:""FlexCel""","Tags:""FlexCel""",8 -"/packages?q=Tags:""Formatting""","Tags:""Formatting""",8 -"/packages?q=Tags:""forum""","Tags:""forum""",8 -"/packages?q=Tags:""FTP""","Tags:""FTP""",8 -"/packages?q=Tags:""git""","Tags:""git""",8 -"/packages?q=Tags:""google-analytics""","Tags:""google-analytics""",8 -"/packages?q=Tags:""gradient""","Tags:""gradient""",8 -"/packages?q=Tags:""hotkeys""","Tags:""hotkeys""",8 -"/packages?q=Tags:""html-to-pdf-converter""","Tags:""html-to-pdf-converter""",8 -"/packages?q=Tags:""HTTP/2""","Tags:""HTTP/2""",8 -"/packages?q=Tags:""HTTP2""","Tags:""HTTP2""",8 -"/packages?q=Tags:""HttpContext""","Tags:""HttpContext""",8 -"/packages?q=Tags:""Icons""","Tags:""Icons""",8 -"/packages?q=Tags:""idisposable""","Tags:""idisposable""",8 -"/packages?q=Tags:""IFTTT""","Tags:""IFTTT""",8 -"/packages?q=Tags:""IHostedService""","Tags:""IHostedService""",8 -"/packages?q=Tags:""image-editor""","Tags:""image-editor""",8 -"/packages?q=Tags:""image-resize""","Tags:""image-resize""",8 -"/packages?q=Tags:""Image-Viewer""","Tags:""Image-Viewer""",8 -"/packages?q=Tags:""ipaddress""","Tags:""ipaddress""",8 -"/packages?q=Tags:""jQueryUI""","Tags:""jQueryUI""",8 -"/packages?q=Tags:""jws""","Tags:""jws""",8 -"/packages?q=Tags:""leader-election""","Tags:""leader-election""",8 -"/packages?q=Tags:""libimobiledevice""","Tags:""libimobiledevice""",8 -"/packages?q=Tags:""license""","Tags:""license""",8 -"/packages?q=Tags:""line-chart""","Tags:""line-chart""",8 -"/packages?q=Tags:""Logstash""","Tags:""Logstash""",8 -"/packages?q=Tags:""MailMessage""","Tags:""MailMessage""",8 -"/packages?q=Tags:""marshal""","Tags:""marshal""",8 -"/packages?q=Tags:""matrix""","Tags:""matrix""",8 -"/packages?q=Tags:""mdns""","Tags:""mdns""",8 -"/packages?q=Tags:""MessageBox""","Tags:""MessageBox""",8 -"/packages?q=Tags:""mhtml""","Tags:""mhtml""",8 -"/packages?q=Tags:""MICR""","Tags:""MICR""",8 -"/packages?q=Tags:""migrations""","Tags:""migrations""",8 -"/packages?q=Tags:""MIME""","Tags:""MIME""",8 -"/packages?q=Tags:""mqtt""","Tags:""mqtt""",8 -"/packages?q=Tags:""MSAL""","Tags:""MSAL""",8 -"/packages?q=Tags:""msi""","Tags:""msi""",8 -"/packages?q=Tags:""MSTest""","Tags:""MSTest""",8 -"/packages?q=Tags:""natural-sort""","Tags:""natural-sort""",8 -"/packages?q=Tags:""Networking""","Tags:""Networking""",8 -"/packages?q=Tags:""NFC""","Tags:""NFC""",8 -"/packages?q=Tags:""Notifications""","Tags:""Notifications""",8 -"/packages?q=Tags:""ntlm""","Tags:""ntlm""",8 -"/packages?q=Tags:""ntp""","Tags:""ntp""",8 -"/packages?q=Tags:""ODP.NET""","Tags:""ODP.NET""",8 -"/packages?q=Tags:""OPC""","Tags:""OPC""",8 -"/packages?q=Tags:""opus""","Tags:""opus""",8 -"/packages?q=Tags:""orgchart""","Tags:""orgchart""",8 -"/packages?q=Tags:""pathfinding""","Tags:""pathfinding""",8 -"/packages?q=Tags:""pdf-generation""","Tags:""pdf-generation""",8 -"/packages?q=Tags:""pdf-to-bmp""","Tags:""pdf-to-bmp""",8 -"/packages?q=Tags:""Pdfium""","Tags:""Pdfium""",8 -"/packages?q=Tags:""PDFViewer""","Tags:""PDFViewer""",8 -"/packages?q=Tags:""playlist""","Tags:""playlist""",8 -"/packages?q=Tags:""poppler""","Tags:""poppler""",8 -"/packages?q=Tags:""principalcontext""","Tags:""principalcontext""",8 -"/packages?q=Tags:""Printer""","Tags:""Printer""",8 -"/packages?q=Tags:""printing""","Tags:""printing""",8 -"/packages?q=Tags:""push-notifications""","Tags:""push-notifications""",8 -"/packages?q=Tags:""recognition""","Tags:""recognition""",8 -"/packages?q=Tags:""Redis""","Tags:""Redis""",8 -"/packages?q=Tags:""rounded-button""","Tags:""rounded-button""",8 -"/packages?q=Tags:""S7""","Tags:""S7""",8 -"/packages?q=Tags:""sankakuchannel""","Tags:""sankakuchannel""",8 -"/packages?q=Tags:""SapHana""","Tags:""SapHana""",8 -"/packages?q=Tags:""Scraping""","Tags:""Scraping""",8 -"/packages?q=Tags:""Scripting""","Tags:""Scripting""",8 -"/packages?q=Tags:""search""","Tags:""search""",8 -"/packages?q=Tags:""shimmer""","Tags:""shimmer""",8 -"/packages?q=Tags:""SOAP""","Tags:""SOAP""",8 -"/packages?q=Tags:""spectrum""","Tags:""spectrum""",8 -"/packages?q=Tags:""Speech-To-Text""","Tags:""Speech-To-Text""",8 -"/packages?q=Tags:""sql-parser""","Tags:""sql-parser""",8 -"/packages?q=Tags:""SqlDataReader""","Tags:""SqlDataReader""",8 -"/packages?q=Tags:""sqlmembershipprovider""","Tags:""sqlmembershipprovider""",8 -"/packages?q=Tags:""SSIS""","Tags:""SSIS""",8 -"/packages?q=Tags:""sunat""","Tags:""sunat""",8 -"/packages?q=Tags:""syncfusion.javascript""","Tags:""syncfusion.javascript""",8 -"/packages?q=Tags:""syntax-highlighting""","Tags:""syntax-highlighting""",8 -"/packages?q=Tags:""system.data.entity.spatial""","Tags:""system.data.entity.spatial""",8 -"/packages?q=Tags:""system.windows.forms""","Tags:""system.windows.forms""",8 -"/packages?q=Tags:""t4""","Tags:""t4""",8 -"/packages?q=Tags:""TabbedPage""","Tags:""TabbedPage""",8 -"/packages?q=Tags:""tabs""","Tags:""tabs""",8 -"/packages?q=Tags:""TCPServer""","Tags:""TCPServer""",8 -"/packages?q=Tags:""teamcity""","Tags:""teamcity""",8 -"/packages?q=Tags:""Template""","Tags:""Template""",8 -"/packages?q=Tags:""Tesseract""","Tags:""Tesseract""",8 -"/packages?q=Tags:""TextFieldParser""","Tags:""TextFieldParser""",8 -"/packages?q=Tags:""Three.js""","Tags:""Three.js""",8 -"/packages?q=Tags:""timezone""","Tags:""timezone""",8 -"/packages?q=Tags:""toml""","Tags:""toml""",8 -"/packages?q=Tags:""TraceListener""","Tags:""TraceListener""",8 -"/packages?q=Tags:""TransactionScope""","Tags:""TransactionScope""",8 -"/packages?q=Tags:""transform""","Tags:""transform""",8 -"/packages?q=Tags:""Trello""","Tags:""Trello""",8 -"/packages?q=Tags:""Trx""","Tags:""Trx""",8 -"/packages?q=Tags:""twitter""","Tags:""twitter""",8 -"/packages?q=Tags:""Udp""","Tags:""Udp""",8 -"/packages?q=Tags:""viewpager""","Tags:""viewpager""",8 -"/packages?q=Tags:""virtual-keyboard""","Tags:""virtual-keyboard""",8 -"/packages?q=Tags:""Visio""","Tags:""Visio""",8 -"/packages?q=Tags:""VPN""","Tags:""VPN""",8 -"/packages?q=Tags:""VSTS""","Tags:""VSTS""",8 -"/packages?q=Tags:""WebView""","Tags:""WebView""",8 -"/packages?q=Tags:""whois""","Tags:""whois""",8 -"/packages?q=Tags:""Windows-Forms""","Tags:""Windows-Forms""",8 -"/packages?q=Tags:""Windows.Forms""","Tags:""Windows.Forms""",8 -"/packages?q=Tags:""WkHtmlToImage""","Tags:""WkHtmlToImage""",8 -"/packages?q=Tags:""WMF""","Tags:""WMF""",8 -"/packages?q=Tags:""word""","Tags:""word""",8 -"/packages?q=Tags:""wpf-chart""","Tags:""wpf-chart""",8 -"/packages?q=Tags:""wysiwyg""","Tags:""wysiwyg""",8 -"/packages?q=Tags:""Xamarin.iOS""","Tags:""Xamarin.iOS""",8 -"/packages?q=Tags:""xfa""","Tags:""xfa""",8 -"/packages?q=Tags:""XLS""","Tags:""XLS""",8 -"/packages?q=Tags:""XPS""","Tags:""XPS""",8 -"/packages?q=Tags:""Zipkin""","Tags:""Zipkin""",8 -/packages?q=taskbar,taskbar,8 -/packages?q=Transitions,Transitions,8 -/packages?q=translation,translation,8 -/packages?q=Turkish,Turkish,8 -/packages?q=unit-test,unit-test,8 -/packages?q=visioforge,visioforge,8 -/packages?q=vmware,vmware,8 -/packages?q=watermark,watermark,8 -/packages?q=WEBFORMS,WEBFORMS,8 -/packages?q=WebPush,WebPush,8 -/packages?q=wgs84,wgs84,8 -/packages?q=Win2D,Win2D,8 -/packages?q=Windows+10+IoT+Extension+SDK,Windows 10 IoT Extension SDK,8 -/packages?q=winform,winform,8 -/packages?q=wix,wix,8 -/packages?q=wmf,wmf,8 -"/packages?q=workbook,","workbook,",8 -/packages?q=WorkItemTracking,WorkItemTracking,8 -/packages?q=worksheet,worksheet,8 -/packages?q=Xamarin forms labs&page=3,Xamarin forms labs,8 -/packages?q=xamarin.forms,xamarin.forms,8 -/packages?q=xmlrpc,xmlrpc,8 -/packages?q=youtube,youtube,8 -/packages?q= LP,LP,5 -/packages?q=.net35,.net35,5 -/packages?q=+Microsoft.ReportingServices.ReportViewerControl,Microsoft.ReportingServices.ReportViewerControl,5 -/packages?q=+SD.LLBLGen.Pro.ORMSupportClasses&prerel=false,SD.LLBLGen.Pro.ORMSupportClasses,5 -/packages?q=404,404,5 -/packages?q=404-not-found,404-not-found,5 -/packages?q=7-Zip,7-Zip,5 -/packages?q=Accenture,Accenture,5 -/packages?q=Actipro,Actipro,5 -/packages?q=address,address,5 -/packages?q=ADFS,ADFS,5 -/packages?q=ADHA,ADHA,5 -/packages?q=admin,admin,5 -/packages?q=admob,admob,5 -/packages?q=amap.xamarin,amap.xamarin,5 -/packages?q=amf,amf,5 -/packages?q=android+video,android video,5 -/packages?q=animation,animation,5 -/packages?q=Animation&page=2,Animation,5 -/packages?q=app.config,app.config,5 -/packages?q=appcenter,appcenter,5 -/packages?q=ASCII,ASCII,5 -/packages?q=asp,asp,5 -/packages?q=aspark,aspark,5 -/packages?q=AspNetCore.HealthChecks.UI.Client,AspNetCore.HealthChecks.UI.Client,5 -/packages?q=async-await,async-await,5 -/packages?q=Atom+Feed,Atom Feed,5 -"/packages?q=Author:""DwayneNeed""","Author:""DwayneNeed""",5 -/packages?q=Autofac.Integration.Mvc,Autofac.Integration.Mvc,5 -/packages?q=autofixture,autofixture,5 -/packages?q=aws,aws,5 -/packages?q=AWSSDK.Core,AWSSDK.Core,5 -/packages?q=AWSSDK.CORE,AWSSDK.CORE,5 -/packages?q=awssdk&page=1,awssdk,5 -/packages?q=azure+iot,azure iot,5 -/packages?q=AzureSiteExtension,AzureSiteExtension,5 -/packages?q=BackgroundWorker,BackgroundWorker,5 -"/packages?q=barcode,&page=5","barcode,",5 -/packages?q=barcode+scanner+uwp,barcode scanner uwp,5 -/packages?q=base64,base64,5 -/packages?q=Bayeux,Bayeux,5 -/packages?q=BCrypt.Net-Next+3.1.3,BCrypt.Net-Next 3.1.3,5 -/packages?q=bitcoin,bitcoin,5 -/packages?q=blend,blend,5 -/packages?q=Bluetooth&page=2,Bluetooth,5 -/packages?q=blur,blur,5 -/packages?q=brightness,brightness,5 -/packages?q=bubble,bubble,5 -/packages?q=button,button,5 -/packages?q=C++/CX,C /CX,5 -/packages?q=cache,cache,5 -/packages?q=cake,cake,5 -/packages?q=cdbc,cdbc,5 -/packages?q=cefsharp,cefsharp,5 -/packages?q=checkbox,checkbox,5 -"/packages?q=Checkout,","Checkout,",5 -/packages?q=ckeditor,ckeditor,5 -/packages?q=clamav,clamav,5 -/packages?q=CocosSharp,CocosSharp,5 -/packages?q=Code-Coverage,Code-Coverage,5 -/packages?q=Code128,Code128,5 -/packages?q=CodeAnalysis,CodeAnalysis,5 -/packages?q=CodedUI,CodedUI,5 -/packages?q=CodeJam.PerfTests,CodeJam.PerfTests,5 -/packages?q=codes,codes,5 -/packages?q=com.google.firebase:firebase-messaging,com.google.firebase:firebase-messaging,5 -/packages?q=combobox&page=2,combobox,5 -/packages?q=common.logging,common.logging,5 -/packages?q=CommonServiceLocator,CommonServiceLocator,5 -/packages?q=consul,consul,5 -/packages?q=Contrast,Contrast,5 -/packages?q=control,control,5 -/packages?q=Controller,Controller,5 -/packages?q=convention,convention,5 -/packages?q=Corners,Corners,5 -/packages?q=counters,counters,5 -/packages?q=cpprestsdk,cpprestsdk,5 -/packages?q=crossgen,crossgen,5 -/packages?q=csom,csom,5 -/packages?q=csv+linq,csv linq,5 -/packages?q=Dapper,Dapper,5 -/packages?q=Dapper&page=7,Dapper,5 -/packages?q=dark theme wpf,dark theme wpf,5 -/packages?q=dashboards,dashboards,5 -/packages?q=datagrid,datagrid,5 -/packages?q=DataGrid,DataGrid,5 -/packages?q=DataReader,DataReader,5 -/packages?q=DataTable,DataTable,5 -/packages?q=DataTables.AspNet.AspNetCore,DataTables.AspNet.AspNetCore,5 -/packages?q=DatePicker,DatePicker,5 -/packages?q=Decoder&page=3,Decoder,5 -/packages?q=Decompiler,Decompiler,5 -/packages?q=decryption,decryption,5 -/packages?q=DependencyResolver,DependencyResolver,5 -/packages?q=deprecated,deprecated,5 -/packages?q=deserialization,deserialization,5 -/packages?q=DisplayAttribute,DisplayAttribute,5 -/packages?q=dnsrlvr,dnsrlvr,5 -/packages?q=DOC,DOC,5 -/packages?q=documentdb,documentdb,5 -/packages?q=Dolittle.AspNetCore.Debugging,Dolittle.AspNetCore.Debugging,5 -/packages?q=dotcover,dotcover,5 -/packages?q=download,download,5 -/packages?q=DropDown,DropDown,5 -/packages?q=dynamic+linq,dynamic linq,5 -/packages?q=Eeplus,Eeplus,5 -/packages?q=ef+core,ef core,5 -/packages?q=effort,effort,5 -/packages?q=elasticsearch,elasticsearch,5 -/packages?q=electron,electron,5 -"/packages?q=Elevation,","Elevation,",5 -/packages?q=elmahr,elmahr,5 -/packages?q=ensure.that,ensure.that,5 -/packages?q=entity+framework,entity framework,5 -/packages?q=entity+framework+core,entity framework core,5 -/packages?q=entityframeworkcore,entityframeworkcore,5 -/packages?q=entlib,entlib,5 -/packages?q=envdte,envdte,5 -/packages?q=EPL,EPL,5 -/packages?q=EPPlus,EPPlus,5 -/packages?q=error-handling,error-handling,5 -/packages?q=ETW,ETW,5 -/packages?q=Excel,Excel,5 -/packages?q=exchange,exchange,5 -/packages?q=export,export,5 -/packages?q=export&page=3,export,5 -/packages?q=extended,extended,5 -/packages?q=extjs,extjs,5 -/packages?q=Face,Face,5 -/packages?q=Faceit,Faceit,5 -/packages?q=farshid,farshid,5 -/packages?q=feature-flags,feature-flags,5 -/packages?q=FFmpeg,FFmpeg,5 -/packages?q=fft,fft,5 -/packages?q=Firewall,Firewall,5 -/packages?q=fixed-length,fixed-length,5 -/packages?q=flatfile,flatfile,5 -"/packages?q=Fluent-API,","Fluent-API,",5 -/packages?q=fluentassertions,fluentassertions,5 -/packages?q=FluentAssertions,FluentAssertions,5 -/packages?q=FluentValidation,FluentValidation,5 -/packages?q=flurl,flurl,5 -/packages?q=flyout,flyout,5 -/packages?q=font,font,5 -/packages?q=fontawesome,fontawesome,5 -/packages?q=FontAwesome,FontAwesome,5 -/packages?q=FontAwesome&page=3,FontAwesome,5 -/packages?q=free,free,5 -/packages?q=FtpProxyType,FtpProxyType,5 -/packages?q=fulltext,fulltext,5 -/packages?q=FullText,FullText,5 -/packages?q=fuzzy string,fuzzy string,5 -/packages?q=Gaussian,Gaussian,5 -/packages?q=gecko,gecko,5 -/packages?q=Gecko,Gecko,5 -/packages?q=geocode,geocode,5 -/packages?q=geocoding,geocoding,5 -/packages?q=geofencing,geofencing,5 -/packages?q=geoip,geoip,5 -/packages?q=ghostscript,ghostscript,5 -/packages?q=glob,glob,5 -/packages?q=gmap.net.windows+4,gmap.net.windows 4,5 -/packages?q=gocardless&sortOrder=package-download-count,gocardless,5 -/packages?q=google maps,google maps,5 -/packages?q=Google.Apis.admin.directory&prerelease=true&sortOrder=relevance,Google.Apis.admin.directory,5 -/packages?q=Google.Apis.admin.reports&prerelease=true&sortOrder=relevance,Google.Apis.admin.reports,5 -/packages?q=Google.Apis.books&prerelease=true&sortOrder=relevance,Google.Apis.books,5 -/packages?q=Google.Apis.cloudbuild&prerelease=true&sortOrder=relevance,Google.Apis.cloudbuild,5 -/packages?q=Google.Apis.cloudresourcemanager&prerelease=true&sortOrder=relevance,Google.Apis.cloudresourcemanager,5 -/packages?q=Google.Apis.dataflow&prerelease=true&sortOrder=relevance,Google.Apis.dataflow,5 -/packages?q=Google.Apis.HangoutsChat&prerelease=true&sortOrder=relevance,Google.Apis.HangoutsChat,5 -/packages?q=Google.Apis.iamcredentials&prerelease=true&sortOrder=relevance,Google.Apis.iamcredentials,5 -/packages?q=Google.Apis.identitytoolkit&prerelease=true&sortOrder=relevance,Google.Apis.identitytoolkit,5 -/packages?q=Google.Apis.plusDomains&prerelease=true&sortOrder=relevance,Google.Apis.plusDomains,5 -/packages?q=Google.Apis.proximitybeacon&prerelease=true&sortOrder=relevance,Google.Apis.proximitybeacon,5 -/packages?q=Google.Apis.safebrowsing&prerelease=true&sortOrder=relevance,Google.Apis.safebrowsing,5 -/packages?q=Google.Apis.streetviewpublish&prerelease=true&sortOrder=relevance,Google.Apis.streetviewpublish,5 -/packages?q=google.protobuf,google.protobuf,5 -/packages?q=grapecity.documents,grapecity.documents,5 -/packages?q=graphviz,graphviz,5 -/packages?q=Gravatar,Gravatar,5 -/packages?q=GridView,GridView,5 -"/packages?q=Hebrew,","Hebrew,",5 -/packages?q=hedgehog experimental&sortOrder=package-download-count,hedgehog experimental,5 -/packages?q=Hive,Hive,5 -/packages?q=HockeySDK,HockeySDK,5 -/packages?q=hostedservice,hostedservice,5 -/packages?q=HSM,HSM,5 -/packages?q=html+to+pdf,html to pdf,5 -/packages?q=HTML5,HTML5,5 -/packages?q=httpget,httpget,5 -"/packages?q=HttpWebRequest,","HttpWebRequest,",5 -/packages?q=IDataReader,IDataReader,5 -/packages?q=identityserver,identityserver,5 -/packages?q=IdentityServer4,IdentityServer4,5 -/packages?q=IdentityServer4.EntityFramework,IdentityServer4.EntityFramework,5 -/packages?q=IISExpress,IISExpress,5 -/packages?q=Imageflow.NativeRuntime,Imageflow.NativeRuntime,5 -/packages?q=ImageSharp,ImageSharp,5 -"/packages?q=IndexedDB,","IndexedDB,",5 -/packages?q=InputBox,InputBox,5 -/packages?q=InsightHQCore.Messaging,InsightHQCore.Messaging,5 -/packages?q=Instabug,Instabug,5 -/packages?q=instrumentation,instrumentation,5 -/packages?q=Instrumentation,Instrumentation,5 -/packages?q=InterProcess,InterProcess,5 -/packages?q=intersection,intersection,5 -/packages?q=itext,itext,5 -/packages?q=itextsharp,itextsharp,5 -/packages?q=Jenkins,Jenkins,5 -/packages?q=JPEG,JPEG,5 -"/packages?q=jQuery,&page=35","jQuery,",5 -/packages?q=Jsish,Jsish,5 -/packages?q=JSON,JSON,5 -/packages?q=KML,KML,5 -/packages?q=kusto,kusto,5 -/packages?q=lemmatizer,lemmatizer,5 -/packages?q=linkedin,linkedin,5 -/packages?q=linqbuilder,linqbuilder,5 -/packages?q=LinqToSql,LinqToSql,5 -/packages?q=log4net appender&page=2,log4net appender,5 -/packages?q=Long-Polling,Long-Polling,5 -/packages?q=lorem,lorem,5 -/packages?q=machine+learning,machine learning,5 -/packages?q=MacOS,MacOS,5 -/packages?q=mapguide-api-web,mapguide-api-web,5 -/packages?q=masstransit,masstransit,5 -/packages?q=Mdi,Mdi,5 -/packages?q=MembershipProvider LDAP&page=2,MembershipProvider LDAP,5 -/packages?q=MemoryCache,MemoryCache,5 -/packages?q=metroframework,metroframework,5 -/packages?q=Microsoft,Microsoft,5 -/packages?q=Microsoft.AI.Agent.Intercept,Microsoft.AI.Agent.Intercept,5 -/packages?q=Microsoft.AI.Skills,Microsoft.AI.Skills,5 -/packages?q=Microsoft.AnalysisServices.Core,Microsoft.AnalysisServices.Core,5 -/packages?q=Microsoft.ApplicationInsights.Extensibility,Microsoft.ApplicationInsights.Extensibility,5 -/packages?q=Microsoft.AspNet.Identity,Microsoft.AspNet.Identity,5 -/packages?q=Microsoft.AspNet.Identity.Core,Microsoft.AspNet.Identity.Core,5 -/packages?q=Microsoft.AspNetCore.Blazor,Microsoft.AspNetCore.Blazor,5 -/packages?q=Microsoft.AspNetCore.Blazor.Server,Microsoft.AspNetCore.Blazor.Server,5 -/packages?q=Microsoft.AspNetCore.Components,Microsoft.AspNetCore.Components,5 -/packages?q=Microsoft.AspNetCore.Connections.Abstractions,Microsoft.AspNetCore.Connections.Abstractions,5 -/packages?q=Microsoft.AspNetCore.SignalR.Client,Microsoft.AspNetCore.SignalR.Client,5 -/packages?q=Microsoft.AspNetCore.SpaServices.Extensions,Microsoft.AspNetCore.SpaServices.Extensions,5 -/packages?q=Microsoft.Azure.CognitiveServices.Vision,Microsoft.Azure.CognitiveServices.Vision,5 -/packages?q=Microsoft.Azure.Webjobs.Extensions,Microsoft.Azure.Webjobs.Extensions,5 -/packages?q=Microsoft.CodeAnalysis,Microsoft.CodeAnalysis,5 -/packages?q=microsoft.csharp,microsoft.csharp,5 -/packages?q=Microsoft.Data,Microsoft.Data,5 -/packages?q=Microsoft.Diagnostics.EventFlow,Microsoft.Diagnostics.EventFlow,5 -/packages?q=Microsoft.EntityFrameWorkCore,Microsoft.EntityFrameWorkCore,5 -/packages?q=microsoft.entityframeworkcore.design,microsoft.entityframeworkcore.design,5 -/packages?q=Microsoft.EntityFrameworkCore.Metadata,Microsoft.EntityFrameworkCore.Metadata,5 -/packages?q=Microsoft.EntityFrameworkCore.Tools.DotNet,Microsoft.EntityFrameworkCore.Tools.DotNet,5 -/packages?q=Microsoft.Extensions.Logging.Abstractions,Microsoft.Extensions.Logging.Abstractions,5 -/packages?q=microsoft.extensions.logging.debug,microsoft.extensions.logging.debug,5 -/packages?q=Microsoft.IdentityModel.Clients.ActiveDirectory,Microsoft.IdentityModel.Clients.ActiveDirectory,5 -/packages?q=microsoft.informationprotection,microsoft.informationprotection,5 -/packages?q=Microsoft.NET.Sdk,Microsoft.NET.Sdk,5 -/packages?q=Microsoft.NETCore.App,Microsoft.NETCore.App,5 -/packages?q=Microsoft.NETCore.UniversalWindowsPlatform,Microsoft.NETCore.UniversalWindowsPlatform,5 -/packages?q=Microsoft.Office.Interop,Microsoft.Office.Interop,5 -/packages?q=Microsoft.OpenApi,Microsoft.OpenApi,5 -/packages?q=Microsoft.Packaging.Tools.Trimming,Microsoft.Packaging.Tools.Trimming,5 -/packages?q=microsoft.practices,microsoft.practices,5 -/packages?q=Microsoft.ProjectOxford,Microsoft.ProjectOxford,5 -/packages?q=Microsoft.TeamFoundation.Common,Microsoft.TeamFoundation.Common,5 -/packages?q=migrations&page=6,migrations,5 -/packages?q=mimekit,mimekit,5 -/packages?q=mindscape.raygun4net,mindscape.raygun4net,5 -/packages?q=minify,minify,5 -/packages?q=miris,miris,5 -/packages?q=mkl,mkl,5 -/packages?q=Mobile+scanner,Mobile scanner,5 -/packages?q=Momentjs,Momentjs,5 -/packages?q=mongo,mongo,5 -/packages?q=MongoDB,MongoDB,5 -/packages?q=MongoDB.Driver,MongoDB.Driver,5 -/packages?q=monitor,monitor,5 -/packages?q=MonoGame.Extended,MonoGame.Extended,5 -/packages?q=monotouch,monotouch,5 -/packages?q=msdeploy,msdeploy,5 -/packages?q=MSDeploy,MSDeploy,5 -/packages?q=MSI,MSI,5 -/packages?q=msmq,msmq,5 -/packages?q=mstest,mstest,5 -/packages?q=MSTest,MSTest,5 -/packages?q=mustache,mustache,5 -/packages?q=MVVM+wpf,MVVM wpf,5 -/packages?q=MySql.Data,MySql.Data,5 -/packages?q=net&page=25,net,5 -/packages?q=netstandard,netstandard,5 -/packages?q=netstandard.library,netstandard.library,5 -/packages?q=NETStandard.Library,NETStandard.Library,5 -/packages?q=network,network,5 -/packages?q=neural,neural,5 -/packages?q=newrelic,newrelic,5 -/packages?q=NEwton,NEwton,5 -/packages?q=Newtonsoft,Newtonsoft,5 -/packages?q=Newtonsoft.json,Newtonsoft.json,5 -/packages?q=Nlog,Nlog,5 -/packages?q=NLog.Web.AspNetCore,NLog.Web.AspNetCore,5 -/packages?q=node.extend,node.extend,5 -/packages?q=noise,noise,5 -/packages?q=notepad,notepad,5 -/packages?q=nuget.server,nuget.server,5 -/packages?q=nuget+explorer,nuget explorer,5 -/packages?q=nugetvss,nugetvss,5 -/packages?q=oauth1,oauth1,5 -"/packages?q=OAuth2,","OAuth2,",5 -/packages?q=OAuth2&page=3,OAuth2,5 -/packages?q=objectcache,objectcache,5 -/packages?q=ocr,ocr,5 -/packages?q=odata,odata,5 -/packages?q=ODBC,ODBC,5 -"/packages?q=opencv,","opencv,",5 -/packages?q=OpenDocument,OpenDocument,5 -/packages?q=Openswan,Openswan,5 -/packages?q=Optimizer,Optimizer,5 -/packages?q=Oracle,Oracle,5 -/packages?q=Oracleclient,Oracleclient,5 -/packages?q=orchardcore,orchardcore,5 -/packages?q=orm,orm,5 -/packages?q=Outlook,Outlook,5 -/packages?q=panglib,panglib,5 -/packages?q=parsec,parsec,5 -/packages?q=paypal&page=3,paypal,5 -/packages?q=PDB,PDB,5 -/packages?q=PDFsharp,PDFsharp,5 -/packages?q=picker&page=8,picker,5 -/packages?q=Pipelines.Sockets.Unofficial,Pipelines.Sockets.Unofficial,5 -/packages?q=plex,plex,5 -/packages?q=plugin for xamarin&page=47,plugin for xamarin,5 -/packages?q=POS,POS,5 -/packages?q=prism.mvvm,prism.mvvm,5 -/packages?q=Probability+Distributions,Probability Distributions,5 -/packages?q=project-management,project-management,5 -/packages?q=propertygrid,propertygrid,5 -/packages?q=Push,Push,5 -/packages?q=quartz.net,quartz.net,5 -/packages?q=queue,queue,5 -/packages?q=Queue,Queue,5 -/packages?q=QuickOPC,QuickOPC,5 -/packages?q=rabbitmq,rabbitmq,5 -/packages?q=ras,ras,5 -/packages?q=ratings,ratings,5 -/packages?q=RawRabbit.*.*,RawRabbit.*.*,5 -/packages?q=razorengine,razorengine,5 -/packages?q=reactjs,reactjs,5 -/packages?q=redirect,redirect,5 -/packages?q=refit,refit,5 -/packages?q=reflection,reflection,5 -/packages?q=rename,rename,5 -/packages?q=REPL,REPL,5 -/packages?q=report,report,5 -/packages?q=restart,restart,5 -/packages?q=restore,restore,5 -/packages?q=resx,resx,5 -/packages?q=retry,retry,5 -/packages?q=RFC,RFC,5 -/packages?q=roleprovider,roleprovider,5 -/packages?q=rsa,rsa,5 -/packages?q=ruby,ruby,5 -/packages?q=saga,saga,5 -/packages?q=scaffold,scaffold,5 -/packages?q=scanning,scanning,5 -/packages?q=schema,schema,5 -/packages?q=screen,screen,5 -/packages?q=SD.LLBLGen.Pro.&prerel=false,SD.LLBLGen.Pro.,5 -/packages?q=SD.LLBLGen.Pro.ORMSupportClasses&prerel=false,SD.LLBLGen.Pro.ORMSupportClasses,5 -/packages?q=seleniumlog,seleniumlog,5 -/packages?q=serialize+object+to+string,serialize object to string,5 -/packages?q=Serilog.AspNetCore,Serilog.AspNetCore,5 -/packages?q=ServiceBus.AttachmentPlugin.KeyVaultProvider,ServiceBus.AttachmentPlugin.KeyVaultProvider,5 -/packages?q=sessionstate,sessionstate,5 -/packages?q=Shapes,Shapes,5 -/packages?q=sharepoint,sharepoint,5 -/packages?q=Sharepoint,Sharepoint,5 -/packages?q=SharePoint,SharePoint,5 -/packages?q=sharpdx,sharpdx,5 -/packages?q=sitemap&page=5,sitemap,5 -/packages?q=Skin,Skin,5 -/packages?q=smsc,smsc,5 -/packages?q=Socket PCL&source=post_page---------------------------,Socket PCL,5 -/packages?q=Socket+PCL,Socket PCL,5 -/packages?q=sockets,sockets,5 -/packages?q=Sockets,Sockets,5 -/packages?q=Sonar,Sonar,5 -/packages?q=SpecFlow.Tools.MsBuild.Generation,SpecFlow.Tools.MsBuild.Generation,5 -/packages?q=speech,speech,5 -/packages?q=spreadsheet,spreadsheet,5 -/packages?q=Spreadsheet,Spreadsheet,5 -/packages?q=sprite,sprite,5 -/packages?q=sql-server,sql-server,5 -/packages?q=SqlClient,SqlClient,5 -/packages?q=StackExchange.Redis,StackExchange.Redis,5 -/packages?q=state-machine,state-machine,5 -/packages?q=Steeltoe.Discovery.ClientCore,Steeltoe.Discovery.ClientCore,5 -/packages?q=stratis+smart+contracts,stratis smart contracts,5 -/packages?q=super+speed+usb,super speed usb,5 -/packages?q=SuperWebSocket,SuperWebSocket,5 -/packages?q=surging,surging,5 -/packages?q=svg&page=7,svg,5 -/packages?q=swashbuckle.aspnetcore,swashbuckle.aspnetcore,5 -/packages?q=swf,swf,5 -/packages?q=syncfusion.xamarin,syncfusion.xamarin,5 -/packages?q=synchronization,synchronization,5 -/packages?q=System.Buffers,System.Buffers,5 -/packages?q=System.ComponentModel.Annotations,System.ComponentModel.Annotations,5 -/packages?q=System.Data,System.Data,5 -/packages?q=System.Data.Entity.Spatial,System.Data.Entity.Spatial,5 -/packages?q=System.DirectoryServices,System.DirectoryServices,5 -/packages?q=System.IO,System.IO,5 -/packages?q=system.net.http.formatting,system.net.http.formatting,5 -/packages?q=System.Net.Http.WebRequest,System.Net.Http.WebRequest,5 -/packages?q=System.Reactive,System.Reactive,5 -/packages?q=System.Runtime,System.Runtime,5 -/packages?q=System.Runtime.Serialization,System.Runtime.Serialization,5 -/packages?q=system.text.json,system.text.json,5 -/packages?q=System.Text.Json,System.Text.Json,5 -/packages?q=System.ValueTuple,System.ValueTuple,5 -/packages?q=System.Web,System.Web,5 -/packages?q=system.web.http,system.web.http,5 -/packages?q=System.web.Providers,System.web.Providers,5 -/packages?q=System.Web.Script.Serialization,System.Web.Script.Serialization,5 -/packages?q=System.Web.WebPages,System.Web.WebPages,5 -/packages?q=t4,t4,5 -"/packages?q=Tags:"".docx""","Tags:"".docx""",5 -"/packages?q=Tags:"".nupkg","Tags:"".nupkg",5 -"/packages?q=Tags:""10mail""","Tags:""10mail""",5 -"/packages?q=Tags:""2.122.1.0""","Tags:""2.122.1.0""",5 -"/packages?q=Tags:""aes""","Tags:""aes""",5 -"/packages?q=Tags:""Ajax""","Tags:""Ajax""",5 -"/packages?q=Tags:""angular2""","Tags:""angular2""",5 -"/packages?q=Tags:""API""","Tags:""API""",5 -"/packages?q=Tags:""app.config""","Tags:""app.config""",5 -"/packages?q=Tags:""appsettings.json""","Tags:""appsettings.json""",5 -"/packages?q=Tags:""AppSettings""","Tags:""AppSettings""",5 -"/packages?q=Tags:""arguments""","Tags:""arguments""",5 -"/packages?q=Tags:""ARP""","Tags:""ARP""",5 -"/packages?q=Tags:""asp.net-core""","Tags:""asp.net-core""",5 -"/packages?q=Tags:""AssemblyInfo""","Tags:""AssemblyInfo""",5 -"/packages?q=Tags:""async""","Tags:""async""",5 -"/packages?q=Tags:""Authorize""","Tags:""Authorize""",5 -"/packages?q=Tags:""AutoComplete""&page=2","Tags:""AutoComplete""",5 -"/packages?q=Tags:""aws-sdk-v3""&refid=gs_card","Tags:""aws-sdk-v3""",5 -"/packages?q=Tags:""B2C""","Tags:""B2C""",5 -"/packages?q=Tags:""BinaryReader""","Tags:""BinaryReader""",5 -"/packages?q=Tags:""BottomSheet""","Tags:""BottomSheet""",5 -"/packages?q=Tags:""box2d""","Tags:""box2d""",5 -"/packages?q=Tags:""BrokeredMessage""","Tags:""BrokeredMessage""",5 -"/packages?q=Tags:""cache""","Tags:""cache""",5 -"/packages?q=Tags:""CAD""","Tags:""CAD""",5 -"/packages?q=Tags:""camera""","Tags:""camera""",5 -"/packages?q=Tags:""capture""","Tags:""capture""",5 -"/packages?q=Tags:""cardview""","Tags:""cardview""",5 -"/packages?q=Tags:""cart""","Tags:""cart""",5 -"/packages?q=Tags:""Chart.js""","Tags:""Chart.js""",5 -"/packages?q=Tags:""CheckBox""","Tags:""CheckBox""",5 -"/packages?q=Tags:""checkedComboBox""","Tags:""checkedComboBox""",5 -"/packages?q=Tags:""checksum""","Tags:""checksum""",5 -"/packages?q=Tags:""Chromecast""","Tags:""Chromecast""",5 -"/packages?q=Tags:""circuit-breaker""","Tags:""circuit-breaker""",5 -"/packages?q=Tags:""cloudflare""","Tags:""cloudflare""",5 -"/packages?q=Tags:""CLR""","Tags:""CLR""",5 -"/packages?q=Tags:""cmake""","Tags:""cmake""",5 -"/packages?q=Tags:""code-analysis""","Tags:""code-analysis""",5 -"/packages?q=Tags:""codec""","Tags:""codec""",5 -"/packages?q=Tags:""collectionview""","Tags:""collectionview""",5 -"/packages?q=Tags:""combination""","Tags:""combination""",5 -"/packages?q=Tags:""Compress""","Tags:""Compress""",5 -"/packages?q=Tags:""Console""","Tags:""Console""",5 -"/packages?q=Tags:""Consul.NET""","Tags:""Consul.NET""",5 -"/packages?q=Tags:""Coreldraw""","Tags:""Coreldraw""",5 -"/packages?q=Tags:""correlationid""","Tags:""correlationid""",5 -"/packages?q=Tags:""cqs""","Tags:""cqs""",5 -"/packages?q=Tags:""Crawler""","Tags:""Crawler""",5 -"/packages?q=Tags:""crontab""","Tags:""crontab""",5 -"/packages?q=Tags:""Cryptography""","Tags:""Cryptography""",5 -"/packages?q=Tags:""CrystalReports""","Tags:""CrystalReports""",5 -"/packages?q=Tags:""csproj""","Tags:""csproj""",5 -"/packages?q=Tags:""DACPAC""","Tags:""DACPAC""",5 -"/packages?q=Tags:""data-mining""","Tags:""data-mining""",5 -"/packages?q=Tags:""DataMatrix""","Tags:""DataMatrix""",5 -"/packages?q=Tags:""DbContext""","Tags:""DbContext""",5 -"/packages?q=Tags:""dbf""","Tags:""dbf""",5 -"/packages?q=Tags:""DbGeography""","Tags:""DbGeography""",5 -"/packages?q=Tags:""DDE""","Tags:""DDE""",5 -"/packages?q=Tags:""DDTek""","Tags:""DDTek""",5 -"/packages?q=Tags:""decimal""","Tags:""decimal""",5 -"/packages?q=Tags:""dependencies""","Tags:""dependencies""",5 -"/packages?q=Tags:""design-patterns""","Tags:""design-patterns""",5 -"/packages?q=Tags:""diff""","Tags:""diff""",5 -"/packages?q=Tags:""DllImport""","Tags:""DllImport""",5 -"/packages?q=Tags:""docx""","Tags:""docx""",5 -"/packages?q=Tags:""domain-driven-design""","Tags:""domain-driven-design""",5 -"/packages?q=Tags:""DotCode""","Tags:""DotCode""",5 -"/packages?q=Tags:""dotnet-cli""","Tags:""dotnet-cli""",5 -"/packages?q=Tags:""DPL""","Tags:""DPL""",5 -"/packages?q=Tags:""DTO""","Tags:""DTO""",5 -"/packages?q=Tags:""dwg""","Tags:""dwg""",5 -"/packages?q=Tags:""EDIFACT""","Tags:""EDIFACT""",5 -"/packages?q=Tags:""elf""","Tags:""elf""",5 -"/packages?q=Tags:""EntityFrameworkCore""","Tags:""EntityFrameworkCore""",5 -"/packages?q=Tags:""epson""","Tags:""epson""",5 -"/packages?q=Tags:""Equals""","Tags:""Equals""",5 -"/packages?q=Tags:""ESB""","Tags:""ESB""",5 -"/packages?q=Tags:""expandable""","Tags:""expandable""",5 -"/packages?q=Tags:""expressions""","Tags:""expressions""",5 -"/packages?q=Tags:""extension-methods""","Tags:""extension-methods""",5 -"/packages?q=Tags:""fbx""","Tags:""fbx""",5 -"/packages?q=Tags:""filestream""","Tags:""filestream""",5 -"/packages?q=Tags:""filesystemwatcher""","Tags:""filesystemwatcher""",5 -"/packages?q=Tags:""Fileupload""","Tags:""Fileupload""",5 -"/packages?q=Tags:""FileUpload""","Tags:""FileUpload""",5 -"/packages?q=Tags:""filter""","Tags:""filter""",5 -"/packages?q=Tags:""FineUploader""","Tags:""FineUploader""",5 -"/packages?q=Tags:""fire-and-forget""","Tags:""fire-and-forget""",5 -"/packages?q=Tags:""firebase-client""","Tags:""firebase-client""",5 -"/packages?q=Tags:""firebase""","Tags:""firebase""",5 -"/packages?q=Tags:""fixer.io""","Tags:""fixer.io""",5 -"/packages?q=Tags:""flipview""","Tags:""flipview""",5 -"/packages?q=Tags:""flowchart""","Tags:""flowchart""",5 -"/packages?q=Tags:""ForEachAsync""","Tags:""ForEachAsync""",5 -"/packages?q=Tags:""formula""","Tags:""formula""",5 -"/packages?q=Tags:""functional-programming""","Tags:""functional-programming""",5 -"/packages?q=Tags:""FurryBooru""","Tags:""FurryBooru""",5 -"/packages?q=Tags:""GeoCoordinateWatcher""","Tags:""GeoCoordinateWatcher""",5 -"/packages?q=Tags:""GeoHash""","Tags:""GeoHash""",5 -"/packages?q=Tags:""geoip""","Tags:""geoip""",5 -"/packages?q=Tags:""Gettext""","Tags:""Gettext""",5 -"/packages?q=Tags:""glob""","Tags:""glob""",5 -"/packages?q=Tags:""godot""","Tags:""godot""",5 -"/packages?q=Tags:""Google-Maps""","Tags:""Google-Maps""",5 -"/packages?q=Tags:""google""","Tags:""google""",5 -"/packages?q=Tags:""Google""","Tags:""Google""",5 -"/packages?q=Tags:""GPIO""","Tags:""GPIO""",5 -"/packages?q=Tags:""GraphServiceClient""","Tags:""GraphServiceClient""",5 -"/packages?q=Tags:""GridView""","Tags:""GridView""",5 -"/packages?q=Tags:""gRPC""","Tags:""gRPC""",5 -"/packages?q=Tags:""grunt""","Tags:""grunt""",5 -"/packages?q=Tags:""gtmp""","Tags:""gtmp""",5 -"/packages?q=Tags:""hashcode""","Tags:""hashcode""",5 -"/packages?q=Tags:""HATEOAS""","Tags:""HATEOAS""",5 -"/packages?q=Tags:""healthcheck""","Tags:""healthcheck""",5 -"/packages?q=Tags:""HID""","Tags:""HID""",5 -"/packages?q=Tags:""highlight""","Tags:""highlight""",5 -"/packages?q=Tags:""highlighter""","Tags:""highlighter""",5 -"/packages?q=Tags:""HOCR""","Tags:""HOCR""",5 -"/packages?q=Tags:""html-minifier""","Tags:""html-minifier""",5 -"/packages?q=Tags:""html-to-pdf-c#""","Tags:""html-to-pdf-c",5 -"/packages?q=Tags:""html2canvas""","Tags:""html2canvas""",5 -"/packages?q=Tags:""html2pdf""","Tags:""html2pdf""",5 -"/packages?q=Tags:""HTMLAGILITYPACK""","Tags:""HTMLAGILITYPACK""",5 -"/packages?q=Tags:""httppostedfilebase""","Tags:""httppostedfilebase""",5 -"/packages?q=Tags:""HttpResponseException""","Tags:""HttpResponseException""",5 -"/packages?q=Tags:""iana""","Tags:""iana""",5 -"/packages?q=Tags:""IConfiguration""","Tags:""IConfiguration""",5 -"/packages?q=Tags:""id-generator""","Tags:""id-generator""",5 -"/packages?q=Tags:""IdentityManager""","Tags:""IdentityManager""",5 -"/packages?q=Tags:""image-picker""","Tags:""image-picker""",5 -"/packages?q=Tags:""Image""","Tags:""Image""",5 -"/packages?q=Tags:""import""","Tags:""import""",5 -"/packages?q=Tags:""infinite""","Tags:""infinite""",5 -"/packages?q=Tags:""Informix""","Tags:""Informix""",5 -"/packages?q=Tags:""IntelliSense""","Tags:""IntelliSense""",5 -"/packages?q=Tags:""Interpreter""","Tags:""Interpreter""",5 -"/packages?q=Tags:""Inversion-Of-Control""","Tags:""Inversion-Of-Control""",5 -"/packages?q=Tags:""Invoice""","Tags:""Invoice""",5 -"/packages?q=Tags:""IP""","Tags:""IP""",5 -"/packages?q=Tags:""IPP""","Tags:""IPP""",5 -"/packages?q=Tags:""jar""","Tags:""jar""",5 -"/packages?q=Tags:""JavaScriptSerializer""","Tags:""JavaScriptSerializer""",5 -"/packages?q=Tags:""json-ld""","Tags:""json-ld""",5 -"/packages?q=Tags:""Kendo""","Tags:""Kendo""",5 -"/packages?q=Tags:""keyboard"",""hook""","Tags:""keyboard"",""hook""",5 -"/packages?q=Tags:""kml""","Tags:""kml""",5 -"/packages?q=Tags:""Lexer""","Tags:""Lexer""",5 -"/packages?q=Tags:""libcurl""","Tags:""libcurl""",5 -"/packages?q=Tags:""linq-expression""","Tags:""linq-expression""",5 -"/packages?q=Tags:""Loading""","Tags:""Loading""",5 -"/packages?q=Tags:""LocalDB""","Tags:""LocalDB""",5 -"/packages?q=Tags:""Logger""","Tags:""Logger""",5 -"/packages?q=Tags:""login""","Tags:""login""",5 -"/packages?q=Tags:""lru-cache""","Tags:""lru-cache""",5 -"/packages?q=Tags:""lru""","Tags:""lru""",5 -"/packages?q=Tags:""lzo""","Tags:""lzo""",5 -"/packages?q=Tags:""machine-learning""","Tags:""machine-learning""",5 -"/packages?q=Tags:""mail-merge""","Tags:""mail-merge""",5 -"/packages?q=Tags:""mailgun""","Tags:""mailgun""",5 -"/packages?q=Tags:""Maps""&page=2","Tags:""Maps""",5 -"/packages?q=Tags:""MariaDB""","Tags:""MariaDB""",5 -"/packages?q=Tags:""memoization""","Tags:""memoization""",5 -"/packages?q=Tags:""memory-leak""","Tags:""memory-leak""",5 -"/packages?q=Tags:""MetaData""","Tags:""MetaData""",5 -"/packages?q=Tags:""MimeType""","Tags:""MimeType""",5 -"/packages?q=Tags:""mindmap""","Tags:""mindmap""",5 -"/packages?q=Tags:""Minecraft""","Tags:""Minecraft""",5 -"/packages?q=Tags:""minification""","Tags:""minification""",5 -"/packages?q=Tags:""Minify""","Tags:""Minify""",5 -"/packages?q=Tags:""mkl""","Tags:""mkl""",5 -"/packages?q=Tags:""ModelState""","Tags:""ModelState""",5 -"/packages?q=Tags:""mrz""","Tags:""mrz""",5 -"/packages?q=Tags:""mshtml""","Tags:""mshtml""",5 -"/packages?q=Tags:""Multicast""","Tags:""Multicast""",5 -"/packages?q=Tags:""Multilanguage""","Tags:""Multilanguage""",5 -"/packages?q=Tags:""multipart/form-data""","Tags:""multipart/form-data""",5 -"/packages?q=Tags:""multiselect""","Tags:""multiselect""",5 -"/packages?q=Tags:""mvc5""","Tags:""mvc5""",5 -"/packages?q=Tags:""MXGraph""","Tags:""MXGraph""",5 -"/packages?q=Tags:""natural-language""","Tags:""natural-language""",5 -"/packages?q=Tags:""NAudio""","Tags:""NAudio""",5 -"/packages?q=Tags:""NEF""","Tags:""NEF""",5 -"/packages?q=Tags:""netstandard2.0""","Tags:""netstandard2.0""",5 -"/packages?q=Tags:""NumPy""","Tags:""NumPy""",5 -"/packages?q=Tags:""OBJ""","Tags:""OBJ""",5 -"/packages?q=Tags:""ODBC""","Tags:""ODBC""",5 -"/packages?q=Tags:""OfficeOpenXML""","Tags:""OfficeOpenXML""",5 -"/packages?q=Tags:""olap""","Tags:""olap""",5 -"/packages?q=Tags:""omron""","Tags:""omron""",5 -"/packages?q=Tags:""Onvif""","Tags:""Onvif""",5 -"/packages?q=Tags:""ooxml""","Tags:""ooxml""",5 -"/packages?q=Tags:""OpenCL""","Tags:""OpenCL""",5 -"/packages?q=Tags:""opencv""","Tags:""opencv""",5 -"/packages?q=Tags:""OpenDocument""","Tags:""OpenDocument""",5 -"/packages?q=Tags:""openxml""","Tags:""openxml""",5 -"/packages?q=Tags:""Pandas""","Tags:""Pandas""",5 -"/packages?q=Tags:""parser-generator""","Tags:""parser-generator""",5 -"/packages?q=Tags:""password-generator""","Tags:""password-generator""",5 -"/packages?q=Tags:""password-hash""","Tags:""password-hash""",5 -"/packages?q=Tags:""pdf-print""","Tags:""pdf-print""",5 -"/packages?q=Tags:""pdf-split""","Tags:""pdf-split""",5 -"/packages?q=Tags:""PDF""","Tags:""PDF""",5 -"/packages?q=Tags:""peer-to-peer""","Tags:""peer-to-peer""",5 -"/packages?q=Tags:""Perforce""","Tags:""Perforce""",5 -"/packages?q=Tags:""pkcs11""","Tags:""pkcs11""",5 -"/packages?q=Tags:""Places""","Tags:""Places""",5 -"/packages?q=Tags:""PlantUML""","Tags:""PlantUML""",5 -"/packages?q=Tags:""PLC""","Tags:""PLC""",5 -"/packages?q=Tags:""polyline""","Tags:""polyline""",5 -"/packages?q=Tags:""Popup""","Tags:""Popup""",5 -"/packages?q=Tags:""producer-consumer""","Tags:""producer-consumer""",5 -"/packages?q=Tags:""proxy""","Tags:""proxy""",5 -"/packages?q=Tags:""PUSH""","Tags:""PUSH""",5 -"/packages?q=Tags:""RadialMenu""","Tags:""RadialMenu""",5 -"/packages?q=Tags:""ragemp""","Tags:""ragemp""",5 -"/packages?q=Tags:""random-number""","Tags:""random-number""",5 -"/packages?q=Tags:""random-string""","Tags:""random-string""",5 -"/packages?q=Tags:""razor-components""","Tags:""razor-components""",5 -"/packages?q=Tags:""red-black""","Tags:""red-black""",5 -"/packages?q=Tags:""Redistributable""","Tags:""Redistributable""",5 -"/packages?q=Tags:""Refresh""","Tags:""Refresh""",5 -"/packages?q=Tags:""registry""","Tags:""registry""",5 -"/packages?q=Tags:""RelayCommand""","Tags:""RelayCommand""",5 -"/packages?q=Tags:""render""","Tags:""render""",5 -"/packages?q=Tags:""reniec""","Tags:""reniec""",5 -"/packages?q=Tags:""reportviewer""","Tags:""reportviewer""",5 -"/packages?q=Tags:""retry""","Tags:""retry""",5 -"/packages?q=Tags:""Rfc2898DeriveBytes""","Tags:""Rfc2898DeriveBytes""",5 -"/packages?q=Tags:""rfid""","Tags:""rfid""",5 -"/packages?q=Tags:""rijndael""","Tags:""rijndael""",5 -"/packages?q=Tags:""robotframework""","Tags:""robotframework""",5 -"/packages?q=Tags:""RSACryptoServiceProvider""","Tags:""RSACryptoServiceProvider""",5 -"/packages?q=Tags:""rtf""","Tags:""rtf""",5 -"/packages?q=Tags:""saga""","Tags:""saga""",5 -"/packages?q=Tags:""salesforce""","Tags:""salesforce""",5 -"/packages?q=Tags:""SBPL""","Tags:""SBPL""",5 -"/packages?q=Tags:""Scheduler""&page=2","Tags:""Scheduler""",5 -"/packages?q=Tags:""schema-org""","Tags:""schema-org""",5 -"/packages?q=Tags:""SCSS""","Tags:""SCSS""",5 -"/packages?q=Tags:""seekbar""","Tags:""seekbar""",5 -"/packages?q=Tags:""Segmented""","Tags:""Segmented""",5 -"/packages?q=Tags:""sftp""","Tags:""sftp""",5 -"/packages?q=Tags:""sha512""","Tags:""sha512""",5 -"/packages?q=Tags:""similarity""","Tags:""similarity""",5 -"/packages?q=Tags:""SingleInstance""","Tags:""SingleInstance""",5 -"/packages?q=Tags:""sitemap.xml""","Tags:""sitemap.xml""",5 -"/packages?q=Tags:""sln""","Tags:""sln""",5 -"/packages?q=Tags:""Slug""","Tags:""Slug""",5 -"/packages?q=Tags:""SMPP""","Tags:""SMPP""",5 -"/packages?q=Tags:""Smtp""","Tags:""Smtp""",5 -"/packages?q=Tags:""socket""","Tags:""socket""",5 -"/packages?q=Tags:""Sort""","Tags:""Sort""",5 -"/packages?q=Tags:""Sorting""","Tags:""Sorting""",5 -"/packages?q=Tags:""source-code""","Tags:""source-code""",5 -"/packages?q=Tags:""sparkline""","Tags:""sparkline""",5 -"/packages?q=Tags:""specflow""","Tags:""specflow""",5 -"/packages?q=Tags:""SplashScreen""","Tags:""SplashScreen""",5 -"/packages?q=Tags:""SpreadSheet""","Tags:""SpreadSheet""",5 -"/packages?q=Tags:""SQLCE""","Tags:""SQLCE""",5 -"/packages?q=Tags:""SqlCommand""","Tags:""SqlCommand""",5 -"/packages?q=Tags:""SqlDataAdapter""","Tags:""SqlDataAdapter""",5 -"/packages?q=Tags:""sqlgeometry""","Tags:""sqlgeometry""",5 -"/packages?q=Tags:""SQLHelper""","Tags:""SQLHelper""",5 -"/packages?q=Tags:""SSAS""","Tags:""SSAS""",5 -"/packages?q=Tags:""ssdp""","Tags:""ssdp""",5 -"/packages?q=Tags:""statistics""","Tags:""statistics""",5 -"/packages?q=Tags:""sunburst""","Tags:""sunburst""",5 -"/packages?q=Tags:""Svf""","Tags:""Svf""",5 -"/packages?q=Tags:""Swagger""","Tags:""Swagger""",5 -"/packages?q=Tags:""switch-button""","Tags:""switch-button""",5 -"/packages?q=Tags:""Sync""","Tags:""Sync""",5 -"/packages?q=Tags:""syncfusion.aspnetcore""","Tags:""syncfusion.aspnetcore""",5 -"/packages?q=Tags:""System.Configuration""","Tags:""System.Configuration""",5 -"/packages?q=Tags:""System.Drawing""","Tags:""System.Drawing""",5 -"/packages?q=Tags:""table""","Tags:""table""",5 -"/packages?q=Tags:""TagHelper""","Tags:""TagHelper""",5 -"/packages?q=Tags:""TCP/IP""","Tags:""TCP/IP""",5 -"/packages?q=Tags:""Telephony""","Tags:""Telephony""",5 -"/packages?q=Tags:""Telerik""","Tags:""Telerik""",5 -"/packages?q=Tags:""Terraform""","Tags:""Terraform""",5 -"/packages?q=Tags:""tfs""","Tags:""tfs""",5 -"/packages?q=Tags:""thermal-printer""","Tags:""thermal-printer""",5 -"/packages?q=Tags:""thumbnail""","Tags:""thumbnail""",5 -"/packages?q=Tags:""Thumbnail""","Tags:""Thumbnail""",5 -"/packages?q=Tags:""time-picker""","Tags:""time-picker""",5 -"/packages?q=Tags:""timepicker""","Tags:""timepicker""",5 -"/packages?q=Tags:""timespan""","Tags:""timespan""",5 -"/packages?q=Tags:""TLS1.2""","Tags:""TLS1.2""",5 -"/packages?q=Tags:""Toast""","Tags:""Toast""",5 -"/packages?q=Tags:""toastr""","Tags:""toastr""",5 -"/packages?q=Tags:""torrent""","Tags:""torrent""",5 -"/packages?q=Tags:""transliteration""","Tags:""transliteration""",5 -"/packages?q=Tags:""TSP""","Tags:""TSP""",5 -"/packages?q=Tags:""tts""","Tags:""tts""",5 -"/packages?q=Tags:""tween""","Tags:""tween""",5 -"/packages?q=Tags:""UIAutomation""","Tags:""UIAutomation""",5 -"/packages?q=Tags:""unit-of-work""","Tags:""unit-of-work""",5 -"/packages?q=Tags:""ups""","Tags:""ups""",5 -"/packages?q=Tags:""UserAgent""","Tags:""UserAgent""",5 -"/packages?q=Tags:""UTF8""","Tags:""UTF8""",5 -"/packages?q=Tags:""uuid""","Tags:""uuid""",5 -"/packages?q=Tags:""Visa""","Tags:""Visa""",5 -"/packages?q=Tags:""Visualization""","Tags:""Visualization""",5 -"/packages?q=Tags:""vs2005""","Tags:""vs2005""",5 -"/packages?q=Tags:""vs2010""","Tags:""vs2010""",5 -"/packages?q=Tags:""Watchdog""","Tags:""Watchdog""",5 -"/packages?q=Tags:""WAV""","Tags:""WAV""",5 -"/packages?q=Tags:""WCF""","Tags:""WCF""",5 -"/packages?q=Tags:""Weather""","Tags:""Weather""",5 -"/packages?q=Tags:""WebDeploy""","Tags:""WebDeploy""",5 -"/packages?q=Tags:""WebGL""","Tags:""WebGL""",5 -"/packages?q=Tags:""WebP""","Tags:""WebP""",5 -"/packages?q=Tags:""wf""","Tags:""wf""",5 -"/packages?q=Tags:""Wildcard""","Tags:""Wildcard""",5 -"/packages?q=Tags:""WKB""","Tags:""WKB""",5 -"/packages?q=Tags:""WordML""","Tags:""WordML""",5 -"/packages?q=Tags:""workflow-engine""","Tags:""workflow-engine""",5 -"/packages?q=Tags:""WPF""","Tags:""WPF""",5 -"/packages?q=Tags:""XAML""","Tags:""XAML""",5 -"/packages?q=Tags:""xls""","Tags:""xls""",5 -"/packages?q=Tags:""XMP""","Tags:""XMP""",5 -"/packages?q=Tags:""xsd""","Tags:""xsd""",5 -"/packages?q=Tags:""xslt""","Tags:""xslt""",5 -"/packages?q=Tags:""xss""","Tags:""xss""",5 -"/packages?q=Tags:""xxHash""","Tags:""xxHash""",5 -"/packages?q=Tags:""XZ""","Tags:""XZ""",5 -"/packages?q=Tags:""YouTube""","Tags:""YouTube""",5 -"/packages?q=Tags:""zebra""","Tags:""zebra""",5 -"/packages?q=Tags:""zipcode""","Tags:""zipcode""",5 -"/packages?q=Tags:""ZKTeco""","Tags:""ZKTeco""",5 -/packages?q=tail,tail,5 -/packages?q=task+dialog,task dialog,5 -/packages?q=tcp,tcp,5 -/packages?q=tensorflow,tensorflow,5 -/packages?q=theme,theme,5 -/packages?q=Thrift,Thrift,5 -/packages?q=thycotic,thycotic,5 -/packages?q=timepicker,timepicker,5 -/packages?q=timezone,timezone,5 -/packages?q=token,token,5 -/packages?q=topshelf,topshelf,5 -/packages?q=Topshelf,Topshelf,5 -/packages?q=tray,tray,5 -/packages?q=TrueType,TrueType,5 -/packages?q=tuple,tuple,5 -/packages?q=TWAIN&page=2,TWAIN,5 -/packages?q=Tweetinvi,Tweetinvi,5 -/packages?q=Umbrella Project&page=41,Umbrella Project,5 -"/packages?q=unit-testing,","unit-testing,",5 -/packages?q=unity.mvc,unity.mvc,5 -/packages?q=unity+mvc,unity mvc,5 -/packages?q=Unity3d,Unity3d,5 -/packages?q=unityengine,unityengine,5 -"/packages?q=unzip,","unzip,",5 -/packages?q=updater,updater,5 -/packages?q=utm,utm,5 -/packages?q=UWP.SDKforGoogleAnalytics,UWP.SDKforGoogleAnalytics,5 -/packages?q=video,video,5 -/packages?q=Viewer,Viewer,5 -/packages?q=vim,vim,5 -"/packages?q=vkontakte,","vkontakte,",5 -/packages?q=vsix,vsix,5 -/packages?q=VSSDK,VSSDK,5 -/packages?q=wcf+data+services,wcf data services,5 -/packages?q=WebActivator,WebActivator,5 -/packages?q=webapi.client,webapi.client,5 -/packages?q=WebRequest,WebRequest,5 -/packages?q=webserver,webserver,5 -/packages?q=wifi,wifi,5 -/packages?q=Windows-Service,Windows-Service,5 -/packages?q=windows+form,windows form,5 -/packages?q=WindowsAzure.Storage,WindowsAzure.Storage,5 -/packages?q=windowsazureofficial+servicefabric&prerel=false,windowsazureofficial servicefabric,5 -"/packages?q=WinForms,&page=13","WinForms,",5 -/packages?q=wkt,wkt,5 -/packages?q=Wordnet,Wordnet,5 -/packages?q=wpf+converters,wpf converters,5 -/packages?q=wpf+input&sortOrder=package-download-count,wpf input,5 -/packages?q=ws-federation,ws-federation,5 -/packages?q=wse,wse,5 -/packages?q=WYSIWYG,WYSIWYG,5 -/packages?q=xamarians,xamarians,5 -/packages?q=Xamarin.OneDrive,Xamarin.OneDrive,5 -/packages?q=Xamarin.UITest,Xamarin.UITest,5 -/packages?q=xlsx,xlsx,5 -/packages?q=xml-rpc,xml-rpc,5 -/packages?q=Xps+read+with+formating,Xps read with formating,5 -/packages?q=xUnit.net,xUnit.net,5 -/packages?q=yaml,yaml,5 -/packages?q=zookeeper,zookeeper,5 -/packages?q=zxing,zxing,5 -/packages?q=ZXing,ZXing,5 -/packages?q=zxing.portable,zxing.portable,5 -/packages?q= MSBuild NUnit Task Project,MSBuild NUnit Task Project,3 -/packages?q=.EntityFrameworkCore.Tools.DotNet,.EntityFrameworkCore.Tools.DotNet,3 -/packages?q=.Net Framework 4.6.2,.Net Framework 4.6.2,3 -/packages?q=.NET HTTP Abstractions Working Group&page=605,.NET HTTP Abstractions Working Group,3 -"/packages?q=.net,&page=405",".net,",3 -"/packages?q=.NET,&page=456",".NET,",3 -"/packages?q=.NET,&page=754",".NET,",3 -"/packages?q=.NET,&sortOrder=package-download-count&page=35",".NET,",3 -/packages?q=.Net&page=193,.Net,3 -/packages?q=.NET&page=338,.NET,3 -/packages?q=.NET&sortOrder=package-download-count&page=53&prerelease=False,.NET,3 -/packages?q=.net+core,.net core,3 -/packages?q=.net+httpclient,.net httpclient,3 -/packages?q=.net4&page=12,.net4,3 -/packages?q=.NET4&page=202,.NET4,3 -/packages?q=.NET4&page=68,.NET4,3 -/packages?q=.net462+++System.Runtime.CompilerServices.Unsafe&prerel=false,.net462 System.Runtime.CompilerServices.Unsafe,3 -/packages?q=.netcore+dapper+extentions,.netcore dapper extentions,3 -/packages?q=.netcoreapp2.1,.netcoreapp2.1,3 -/packages?q='Microsoft.NET.Sdk.Web,'Microsoft.NET.Sdk.Web,3 -"/packages?q='System.Runtime,+Version=4.0.20.0","'System.Runtime, Version=4.0.20.0",3 -"/packages?q="";",""";",3 -"/packages?q=""Application Insights""&page=6","""Application Insights""",3 -"/packages?q=""Newtonsoft.Json""+Version=""10.0.3""","""Newtonsoft.Json"" Version=""10.0.3""",3 -"/packages?q=""unit&page=22","""unit",3 -"/packages?q=""unit&page=37","""unit",3 -/packages?q=[BBCode Helper - John Katsiotis]&sortOrder=relevance&page=24&prerelease=False,[BBCode Helper - John Katsiotis],3 -/packages?q=[GraffitiCMS - Telligent and GraffitiCMS Open Source Team]&page=72,[GraffitiCMS - Telligent and GraffitiCMS Open Source Team],3 -/packages?q=\MSTest.TestAdapter.1.1.18,\MSTest.TestAdapter.1.1.18,3 -/packages?q=+Abp.AspNetZeroCore.Fixed,Abp.AspNetZeroCore.Fixed,3 -/packages?q=+FakeItEasy.Analyzer.VisualBasic,FakeItEasy.Analyzer.VisualBasic,3 -/packages?q=+Fluent+NHibernate,Fluent NHibernate,3 -/packages?q=+ILMerge,ILMerge,3 -/packages?q=+java.io.IOException,java.io.IOException,3 -/packages?q=+Kendo.Mvc.UI.Fluent,Kendo.Mvc.UI.Fluent,3 -/packages?q=+Microsoft.AspNet+core,Microsoft.AspNet core,3 -/packages?q=+Microsoft.AspNetCore.Mvc.NewtonsoftJson,Microsoft.AspNetCore.Mvc.NewtonsoftJson,3 -/packages?q=+Microsoft.EntityFrameworkCore,Microsoft.EntityFrameworkCore,3 -/packages?q=+MySql.Data.Entity.EF6,MySql.Data.Entity.EF6,3 -/packages?q=+scanner,scanner,3 -/packages?q=+Swagger+definitions,Swagger definitions,3 -/packages?q=+Syncfusion.Pdf.WinForms,Syncfusion.Pdf.WinForms,3 -/packages?q=+System.Text,System.Text,3 -/packages?q=+Xamarin.Android.Support.AppCompat,Xamarin.Android.Support.AppCompat,3 -/packages?q=+Xander-+ul+Framework,Xander- ul Framework,3 -/packages?q=1.1&page=2,1.1,3 -/packages?q=13.0.24.2970,13.0.24.2970,3 -/packages?q=2D,2D,3 -/packages?q=3.3.100.0,3.3.100.0,3 -/packages?q=3D&page=6,3D,3 -/packages?q=3DS,3DS,3 -"/packages?q=4.0,&page=3","4.0,",3 -/packages?q=4.0&page=9,4.0,3 -/packages?q=4.7.2,4.7.2,3 -/packages?q=4&sortOrder=relevance&page=36&prerelease=False,4,3 -/packages?q=404&sortOrder=package-download-count&page=1,404,3 -/packages?q=5 Limes,5 Limes,3 -/packages?q=5 Limes&page=99,5 Limes,3 -/packages?q=6,6,3 -/packages?q=7.5&page=1,7.5,3 -/packages?q=7z,7z,3 -/packages?q=A/B,A/B,3 -/packages?q=A2v10.Web.Runtime,A2v10.Web.Runtime,3 -/packages?q=abp,abp,3 -/packages?q=Abp.Zero,Abp.Zero,3 -/packages?q=access&page=60,access,3 -/packages?q=Accord.Video.FFMPEG.x64+for+nuget+2.8.6,Accord.Video.FFMPEG.x64 for nuget 2.8.6,3 -/packages?q=Accordion&page=2,Accordion,3 -/packages?q=Active Home&page=2,Active Home,3 -/packages?q=active-directory&page=7,active-directory,3 -/packages?q=activemq,activemq,3 -/packages?q=adal,adal,3 -/packages?q=adb,adb,3 -/packages?q=Add-In&page=29,Add-In,3 -/packages?q=add-migration,add-migration,3 -/packages?q=Add-Migration,Add-Migration,3 -/packages?q=add&page=30,add,3 -/packages?q=add+migration,add migration,3 -/packages?q=AddIn&page=31,AddIn,3 -/packages?q=adfast,adfast,3 -/packages?q=adminlte&sortOrder=package-download-count,adminlte,3 -/packages?q=ado,ado,3 -/packages?q=ADO.NET&page=11,ADO.NET,3 -/packages?q=ADO.net&prerel=false,ADO.net,3 -/packages?q=ads,ads,3 -/packages?q=advanceddocclean,advanceddocclean,3 -/packages?q=aero,aero,3 -/packages?q=aerospike-client-c,aerospike-client-c,3 -/packages?q=aforge,aforge,3 -/packages?q=aforge.net,aforge.net,3 -/packages?q=AForge.NET&page=3,AForge.NET,3 -/packages?q=agility.web,agility.web,3 -/packages?q=ajax,ajax,3 -/packages?q=ajaxmin,ajaxmin,3 -/packages?q=Akavache,Akavache,3 -/packages?q=akka,akka,3 -/packages?q=akka.serialization,akka.serialization,3 -/packages?q=aktiv,aktiv,3 -"/packages?q=alert,&page=3","alert,",3 -"/packages?q=alerts,","alerts,",3 -/packages?q=Alex Sabchyshyn,Alex Sabchyshyn,3 -/packages?q=algebra,algebra,3 -/packages?q=Algorithms&page=3,Algorithms,3 -/packages?q=algorithms&page=9,algorithms,3 -/packages?q=alias,alias,3 -/packages?q=alipay,alipay,3 -/packages?q=aliyun-net-sdk-core,aliyun-net-sdk-core,3 -/packages?q=aliyun+oss,aliyun oss,3 -/packages?q=all&page=89,all,3 -/packages?q=alphafs,alphafs,3 -/packages?q=altazion,altazion,3 -/packages?q=Alturos.Yolo,Alturos.Yolo,3 -/packages?q=Amazon Web Services&page=184,Amazon Web Services,3 -/packages?q=Amazon Web Services&page=3,Amazon Web Services,3 -/packages?q=Amazon.CDK.AWS.ECS,Amazon.CDK.AWS.ECS,3 -/packages?q=Amazon.CDK.AWS.SNS,Amazon.CDK.AWS.SNS,3 -/packages?q=Amazon.Jsii,Amazon.Jsii,3 -/packages?q=Amazon.Lambda.SNSEvent,Amazon.Lambda.SNSEvent,3 -/packages?q=analytics,analytics,3 -/packages?q=analytics&page=3,analytics,3 -/packages?q=and&page=1007,and,3 -/packages?q=and&page=2329,and,3 -/packages?q=and&page=373,and,3 -/packages?q=and&page=776,and,3 -/packages?q=and&page=783,and,3 -/packages?q=Android&page=28,Android,3 -/packages?q=Android&page=40,Android,3 -/packages?q=AndroidX.EXIF,AndroidX.EXIF,3 -/packages?q=angular,angular,3 -/packages?q=angular-strap.TypeScript.DefinitelyTyped,angular-strap.TypeScript.DefinitelyTyped,3 -/packages?q=angular+2,angular 2,3 -/packages?q=angular+animate+1.6.10,angular animate 1.6.10,3 -/packages?q=anima,anima,3 -"/packages?q=animation,&page=3","animation,",3 -"/packages?q=animation,&page=5","animation,",3 -/packages?q=animation&page=5,animation,3 -/packages?q=Annotation,Annotation,3 -/packages?q=annotations,annotations,3 -/packages?q=Annotations&page=3,Annotations,3 -/packages?q=ansl,ansl,3 -/packages?q=anti&page=2,anti,3 -/packages?q=Antlr,Antlr,3 -/packages?q=Antlr.3.4.1.9004,Antlr.3.4.1.9004,3 -/packages?q=AnySerializer,AnySerializer,3 -/packages?q=Anywhere,Anywhere,3 -/packages?q=Apache Software Foundation&page=38,Apache Software Foundation,3 -"/packages?q=API,&page=126","API,",3 -"/packages?q=API,&page=159","API,",3 -"/packages?q=api,&page=36","api,",3 -/packages?q=API&page=211,API,3 -/packages?q=api&page=258,api,3 -/packages?q=API&page=264,API,3 -/packages?q=api&page=269,api,3 -/packages?q=api+key,api key,3 -/packages?q=API+Key,API Key,3 -/packages?q=apigateway,apigateway,3 -/packages?q=apm,apm,3 -/packages?q=APO+Key,APO Key,3 -"/packages?q=app,&page=52","app,",3 -/packages?q=app.metrics,app.metrics,3 -/packages?q=App.net,App.net,3 -/packages?q=AppCente,AppCente,3 -/packages?q=appd,appd,3 -/packages?q=appdomain,appdomain,3 -/packages?q=AppDomain,AppDomain,3 -/packages?q=AppDynamics,AppDynamics,3 -/packages?q=appium,appium,3 -/packages?q=Apple&page=2,Apple,3 -/packages?q=applicationinsights,applicationinsights,3 -/packages?q=appsettings,appsettings,3 -/packages?q=arctocore,arctocore,3 -/packages?q=arcus,arcus,3 -/packages?q=Ardalis,Ardalis,3 -/packages?q=ardalis.guradclauses,ardalis.guradclauses,3 -/packages?q=AreasRazorPages,AreasRazorPages,3 -/packages?q=argu,argu,3 -/packages?q=ARM,ARM,3 -/packages?q=asky,asky,3 -/packages?q=asn1,asn1,3 -/packages?q=asn1sharp,asn1sharp,3 -/packages?q=asp-net&page=211,asp-net,3 -"/packages?q=Asp,&page=8","Asp,",3 -/packages?q=asp:Image&page=12,asp:Image,3 -/packages?q=asp:Image&sortOrder=package-download-count&page=1&prerelease=False,asp:Image,3 -/packages?q=ASP.NET-MVC&page=6,ASP.NET-MVC,3 -/packages?q=ASP.NET-MVC&sortOrder=package-download-count&page=6,ASP.NET-MVC,3 -"/packages?q=ASP.NET,&page=14","ASP.NET,",3 -/packages?q=ASP.NET+Core+CDN+helpers,ASP.NET Core CDN helpers,3 -/packages?q=asp.net+core+identity,asp.net core identity,3 -/packages?q=asp.netcore+jsonpatch,asp.netcore jsonpatch,3 -/packages?q=aspec,aspec,3 -/packages?q=aspectcore,aspectcore,3 -/packages?q=AspectCore,AspectCore,3 -/packages?q=aspnet_compiler,aspnet_compiler,3 -/packages?q=aspnet-codegenerator,aspnet-codegenerator,3 -/packages?q=aspnet.core,aspnet.core,3 -/packages?q=aspnet.mvc,aspnet.mvc,3 -/packages?q=aspnet.signalr,aspnet.signalr,3 -/packages?q=aspnet.webpages,aspnet.webpages,3 -/packages?q=aspnetcore-runtime,aspnetcore-runtime,3 -/packages?q=aspnetcore.abstractions,aspnetcore.abstractions,3 -/packages?q=aspnetcore.all,aspnetcore.all,3 -/packages?q=aspnetcore.app,aspnetcore.app,3 -/packages?q=aspnetcore.dataprotection,aspnetcore.dataprotection,3 -/packages?q=Aspnetcore.healthchecks,Aspnetcore.healthchecks,3 -/packages?q=AspNetCore.HealthChecks.UI,AspNetCore.HealthChecks.UI,3 -/packages?q=AspNetCore.Sca,AspNetCore.Sca,3 -/packages?q=AspNetCore.SwaggerUI,AspNetCore.SwaggerUI,3 -/packages?q=AspNetCore.SwaggerUI+Version,AspNetCore.SwaggerUI Version,3 -/packages?q=aspnetmvc&page=12,aspnetmvc,3 -/packages?q=AspNetMvc&page=62,AspNetMvc,3 -/packages?q=aspose,aspose,3 -/packages?q=aspose.cells+,aspose.cells,3 -/packages?q=aspose.pdf,aspose.pdf,3 -/packages?q=Aspose.Slides,Aspose.Slides,3 -/packages?q=Aspose.Word,Aspose.Word,3 -/packages?q=aspose.words,aspose.words,3 -/packages?q=aspose.worlds,aspose.worlds,3 -/packages?q=AssemblyInfo,AssemblyInfo,3 -/packages?q=assemblyinfo&page=2,assemblyinfo,3 -/packages?q=assert,assert,3 -/packages?q=AssessmentClient,AssessmentClient,3 -/packages?q=ast,ast,3 -/packages?q=Async,Async,3 -/packages?q=async&page=18,async,3 -/packages?q=at+modem,at modem,3 -/packages?q=athena,athena,3 -/packages?q=ATLASSIAN,ATLASSIAN,3 -/packages?q=ATLFTPLib,ATLFTPLib,3 -/packages?q=atom,atom,3 -/packages?q=attributes&sortOrder=package-download-count&page=6&prerelease=False,attributes,3 -/packages?q=Audit,Audit,3 -/packages?q=aurelia,aurelia,3 -/packages?q=auth0,auth0,3 -/packages?q=Auth0&page=14,Auth0,3 -/packages?q=authentication,authentication,3 -"/packages?q=Author:"" S.A.""","Author:"" S.A.""",3 -"/packages?q=Author:""&page=1518","Author:""",3 -"/packages?q=Author:""&page=3378","Author:""",3 -"/packages?q=Author:""Dave Gandy""","Author:""Dave Gandy""",3 -"/packages?q=Author:""Mike Hadlow""","Author:""Mike Hadlow""",3 -"/packages?q=Author:""Remi Caput""","Author:""Remi Caput""",3 -"/packages?q=Author:""Serilog Contributors""&page=3","Author:""Serilog Contributors""",3 -"/packages?q=Author:""Telerik""","Author:""Telerik""",3 -/packages?q=Author:Microsoft Tags:dotnetcore,Author:Microsoft Tags:dotnetcore,3 -/packages?q=authorization,authorization,3 -/packages?q=Authorization,Authorization,3 -/packages?q=authorization&page=13,authorization,3 -/packages?q=Authorize.NET,Authorize.NET,3 -/packages?q=auto-ss,auto-ss,3 -/packages?q=auto+mapper,auto mapper,3 -/packages?q=AutoFac,AutoFac,3 -/packages?q=Autofac.Configuration,Autofac.Configuration,3 -/packages?q=Autofac.Extensions.DependencyInjection,Autofac.Extensions.DependencyInjection,3 -/packages?q=Autofac.Integration.Mef,Autofac.Integration.Mef,3 -/packages?q=autofac.mvc,autofac.mvc,3 -/packages?q=Autofac.MVC4,Autofac.MVC4,3 -/packages?q=Autofac.Signalr2,Autofac.Signalr2,3 -/packages?q=autofac+moq+html,autofac moq html,3 -/packages?q=AutoFixture,AutoFixture,3 -/packages?q=AutoMapper,AutoMapper,3 -/packages?q=automatically&page=4,automatically,3 -/packages?q=automationmanagement,automationmanagement,3 -/packages?q=autosuggest,autosuggest,3 -/packages?q=AutoUpdate,AutoUpdate,3 -/packages?q=Autoupdater+,Autoupdater,3 -/packages?q=avalon,avalon,3 -/packages?q=AvalonDock,AvalonDock,3 -/packages?q=avalonia,avalonia,3 -/packages?q=avanti-schema,avanti-schema,3 -/packages?q=avif,avif,3 -/packages?q=Awerson,Awerson,3 -/packages?q=AWS&page=1,AWS,3 -/packages?q=aws+dynmo,aws dynmo,3 -/packages?q=aws+sdk,aws sdk,3 -/packages?q=AWSPowerShell,AWSPowerShell,3 -/packages?q=awssdk,awssdk,3 -/packages?q=awssdk.core,awssdk.core,3 -/packages?q=AWSSDK.Extensions.NETCore.Setup,AWSSDK.Extensions.NETCore.Setup,3 -/packages?q=AWSSDK.Extensions.NETCore.SetUp,AWSSDK.Extensions.NETCore.SetUp,3 -/packages?q=awssdk+AmazonSimpleSystemsManagement,awssdk AmazonSimpleSystemsManagement,3 -/packages?q=axe+windows,axe windows,3 -/packages?q=Azure tools for Powershell&page=111,Azure tools for Powershell,3 -/packages?q=Azure-Table-Storage,Azure-Table-Storage,3 -"/packages?q=Azure,&page=70","Azure,",3 -/packages?q=Azure.Functions.v2.DI.Services,Azure.Functions.v2.DI.Services,3 -/packages?q=Azure.Security.KeyVault.Keys,Azure.Security.KeyVault.Keys,3 -/packages?q=azure.servicebus,azure.servicebus,3 -/packages?q=Azure.Storage,Azure.Storage,3 -/packages?q=azure+queue,azure queue,3 -/packages?q=Azure+Stroage,Azure Stroage,3 -/packages?q=b,b,3 -/packages?q=babel+-+a+compiler+for+writing+next+generation+javascript,babel - a compiler for writing next generation javascript,3 -/packages?q=background,background,3 -/packages?q=bank,bank,3 -/packages?q=Bar,Bar,3 -/packages?q=bar&page=5,bar,3 -/packages?q=BarCode,BarCode,3 -"/packages?q=barcode,&page=3","barcode,",3 -"/packages?q=barcode,&page=7","barcode,",3 -/packages?q=barcode+Scanner,barcode Scanner,3 -/packages?q=baresip,baresip,3 -/packages?q=BasicAuthentication&page=2,BasicAuthentication,3 -/packages?q=BC.UnblockedPlatform,BC.UnblockedPlatform,3 -/packages?q=BD.Core.ExceptionHandling+version+1.0.1,BD.Core.ExceptionHandling version 1.0.1,3 -/packages?q=BDD,BDD,3 -/packages?q=Be.Vlaanderen.Basisregisters.DataDog.Tracing,Be.Vlaanderen.Basisregisters.DataDog.Tracing,3 -/packages?q=benchmark,benchmark,3 -/packages?q=benchmarkdotnet,benchmarkdotnet,3 -/packages?q=BenchmarkDotNet,BenchmarkDotNet,3 -/packages?q=benchmarkdotnet&sortOrder=package-download-count,benchmarkdotnet,3 -/packages?q=BerkeleyDB,BerkeleyDB,3 -/packages?q=BigDecimal,BigDecimal,3 -/packages?q=biginteger,biginteger,3 -/packages?q=bikeman868,bikeman868,3 -/packages?q=bin&page=5,bin,3 -/packages?q=binance.net,binance.net,3 -/packages?q=Binance.Net,Binance.Net,3 -/packages?q=binary tree&page=25,binary tree,3 -/packages?q=BinaryFormatter,BinaryFormatter,3 -/packages?q=Binder,Binder,3 -/packages?q=Binding.Salesforce.MarketingCloud,Binding.Salesforce.MarketingCloud,3 -/packages?q=bingo.valida,bingo.valida,3 -/packages?q=bitmap,bitmap,3 -/packages?q=Bitmap&page=1,Bitmap,3 -/packages?q=bitmap&page=3,bitmap,3 -/packages?q=blackfox commandline&sortOrder=package-download-count,blackfox commandline,3 -/packages?q=BLAS,BLAS,3 -/packages?q=blazor,blazor,3 -/packages?q=Blazor.Extensions.SignalR,Blazor.Extensions.SignalR,3 -/packages?q=Blazor.GoogleMap,Blazor.GoogleMap,3 -/packages?q=blazor+,blazor,3 -/packages?q=Blazor+indexeddb,Blazor indexeddb,3 -/packages?q=Blazor+Toast,Blazor Toast,3 -"/packages?q=blizzard,","blizzard,",3 -/packages?q=Blob,Blob,3 -/packages?q=BlueBooth+,BlueBooth,3 -/packages?q=bluefin,bluefin,3 -/packages?q=BMP&page=2,BMP,3 -/packages?q=bodi,bodi,3 -/packages?q=bolero&sortOrder=package-download-count,bolero,3 -/packages?q=boom,boom,3 -/packages?q=boost-python,boost-python,3 -/packages?q=boost-vc142,boost-vc142,3 -/packages?q=boots,boots,3 -/packages?q=bootstrap,bootstrap,3 -/packages?q=Bootstrap,Bootstrap,3 -"/packages?q=Bootstrap,&page=20","Bootstrap,",3 -/packages?q=Bootstrap&page=3,Bootstrap,3 -/packages?q=Bootstrap&sortOrder=relevance&page=4,Bootstrap,3 -/packages?q=Bot&page=3,Bot,3 -/packages?q=Bouncy Castle Project Contributors&page=75,Bouncy Castle Project Contributors,3 -/packages?q=Bouncy Castle Project Contributors&sortOrder=relevance&page=10,Bouncy Castle Project Contributors,3 -/packages?q=Bouncycastle,Bouncycastle,3 -/packages?q=BouncyCastle,BouncyCastle,3 -/packages?q=BouncyCastle.Crypto,BouncyCastle.Crypto,3 -/packages?q=BouncyCastle.NetCore,BouncyCastle.NetCore,3 -/packages?q=BouncyCastle+1.8.3.0,BouncyCastle 1.8.3.0,3 -/packages?q=box+api,box api,3 -/packages?q=Boyer,Boyer,3 -/packages?q=braintree,braintree,3 -/packages?q=breadcrumb,breadcrumb,3 -/packages?q=Brian Lagunas,Brian Lagunas,3 -/packages?q=bucket,bucket,3 -"/packages?q=Build,&sortOrder=relevance&page=15&prerelease=False","Build,",3 -/packages?q=BuildWebCompiler,BuildWebCompiler,3 -/packages?q=bullseye,bullseye,3 -/packages?q=Bundler,Bundler,3 -/packages?q=BundlerMinifier,BundlerMinifier,3 -"/packages?q=Button,&page=4","Button,",3 -/packages?q=Button&page=8,Button,3 -/packages?q=Bytescout.PDFExtractor,Bytescout.PDFExtractor,3 -"/packages?q=c#,&page=61",c,3 -/packages?q=C#;&page=295,C,3 -"/packages?q=C#.NET,&page=6",C,3 -/packages?q=C#&page=107,C,3 -/packages?q=C#&page=56,C,3 -/packages?q=c#&page=81,c,3 -/packages?q=C#+mdb,C,3 -/packages?q=C1.C1Excel,C1.C1Excel,3 -/packages?q=c1.web.api,c1.web.api,3 -"/packages?q=CAB,","CAB,",3 -/packages?q=caching&page=9,caching,3 -/packages?q=Cake.AzureStorage,Cake.AzureStorage,3 -/packages?q=Cake.cmakebuild,Cake.cmakebuild,3 -/packages?q=Cake.CoreCLR,Cake.CoreCLR,3 -/packages?q=Cake.Deploy.Azure.Management.WebSites,Cake.Deploy.Azure.Management.WebSites,3 -/packages?q=cake.filehelpers,cake.filehelpers,3 -/packages?q=Cake.Json,Cake.Json,3 -/packages?q=calamara,calamara,3 -/packages?q=calamari,calamari,3 -/packages?q=calendar,calendar,3 -/packages?q=Calendar,Calendar,3 -"/packages?q=Calendar,&page=7","Calendar,",3 -/packages?q=caliburn.micro,caliburn.micro,3 -"/packages?q=Caliburn.Micro,","Caliburn.Micro,",3 -/packages?q=caliburn.micro&page=4,caliburn.micro,3 -/packages?q=Caliburn+Micro,Caliburn Micro,3 -/packages?q=cam+scanner,cam scanner,3 -/packages?q=camera+android,camera android,3 -/packages?q=camera+integrata,camera integrata,3 -/packages?q=cannorin,cannorin,3 -/packages?q=Canvas,Canvas,3 -/packages?q=canvas+js,canvas js,3 -/packages?q=capableobjects,capableobjects,3 -/packages?q=Captcha,Captcha,3 -/packages?q=capture,capture,3 -/packages?q=Card&page=7,Card,3 -"/packages?q=cards,","cards,",3 -/packages?q=cardsuit,cardsuit,3 -/packages?q=carousel,carousel,3 -/packages?q=CarouselView.FormsPlugin,CarouselView.FormsPlugin,3 -/packages?q=Cassandra,Cassandra,3 -/packages?q=cassia,cassia,3 -/packages?q=castle.core,castle.core,3 -/packages?q=Castle.Core,Castle.Core,3 -/packages?q=Castle.DynamicProxy,Castle.DynamicProxy,3 -/packages?q=Castle.Windsor,Castle.Windsor,3 -/packages?q=castle+windsor,castle windsor,3 -/packages?q=Castle+Windsor,Castle Windsor,3 -/packages?q=catcherwong,catcherwong,3 -/packages?q=CCOW,CCOW,3 -/packages?q=cef,cef,3 -/packages?q=cef.redist.x86+3.3578.1870,cef.redist.x86 3.3578.1870,3 -/packages?q=central,central,3 -/packages?q=Central.Business,Central.Business,3 -/packages?q=Central+Dogma,Central Dogma,3 -/packages?q=cep,cep,3 -/packages?q=certificate,certificate,3 -/packages?q=change-tracking,change-tracking,3 -/packages?q=Chart&page=4,Chart,3 -/packages?q=Chart&page=9,Chart,3 -/packages?q=charting,charting,3 -/packages?q=charting&page=5,charting,3 -/packages?q=charts&page=3,charts,3 -/packages?q=charts&page=7,charts,3 -/packages?q=Chat&page=7,Chat,3 -/packages?q=checkboxlist,checkboxlist,3 -/packages?q=checkpoint,checkpoint,3 -/packages?q=chem,chem,3 -/packages?q=chilkat,chilkat,3 -/packages?q=chocole,chocole,3 -/packages?q=ChromeDevTools,ChromeDevTools,3 -/packages?q=chromedriver,chromedriver,3 -/packages?q=CImg,CImg,3 -/packages?q=Cisco,Cisco,3 -/packages?q=citrix,citrix,3 -/packages?q=CKEditor,CKEditor,3 -/packages?q=Classes&page=22,Classes,3 -/packages?q=ClickHouse Net,ClickHouse Net,3 -/packages?q=ClientScript,ClientScript,3 -/packages?q=clock,clock,3 -/packages?q=Clone,Clone,3 -/packages?q=closedxml,closedxml,3 -/packages?q=Cloudcraft,Cloudcraft,3 -/packages?q=cloudevents,cloudevents,3 -/packages?q=CloudWatch,CloudWatch,3 -/packages?q=CMD,CMD,3 -"/packages?q=Cmdlet,","Cmdlet,",3 -/packages?q=CMS,CMS,3 -/packages?q=cnn,cnn,3 -/packages?q=cntk,cntk,3 -/packages?q=Code Gecko Developments Ltd.&page=133,Code Gecko Developments Ltd.,3 -/packages?q=Code&page=4,Code,3 -/packages?q=CODE+BEHIND+FILE+GERERATION,CODE BEHIND FILE GERERATION,3 -/packages?q=code+generation,code generation,3 -/packages?q=Code39&page=232,Code39,3 -/packages?q=codeanalysis.analyzers,codeanalysis.analyzers,3 -/packages?q=codec,codec,3 -/packages?q=CodeCoverage&page=1,CodeCoverage,3 -/packages?q=codedom,codedom,3 -/packages?q=Codeplex Foundation&page=13,Codeplex Foundation,3 -/packages?q=Cofoundry,Cofoundry,3 -/packages?q=coim,coim,3 -/packages?q=collsoft,collsoft,3 -/packages?q=color,color,3 -/packages?q=ColoredConsoleAppender,ColoredConsoleAppender,3 -/packages?q=colorful.console&sortOrder=package-download-count,colorful.console,3 -/packages?q=com.squareup.okhttp3,com.squareup.okhttp3,3 -/packages?q=combinator,combinator,3 -/packages?q=comma,comma,3 -/packages?q=command,command,3 -/packages?q=command line argument parser&page=19,command line argument parser,3 -/packages?q=command-line,command-line,3 -/packages?q=commandline,commandline,3 -/packages?q=commandlineparser,commandlineparser,3 -/packages?q=CommandLineParser,CommandLineParser,3 -/packages?q=Commerce,Commerce,3 -/packages?q=Common.Logging,Common.Logging,3 -/packages?q=common.logginG.log4net,common.logginG.log4net,3 -/packages?q=common+service+locator+adapter,common service locator adapter,3 -/packages?q=CommonDomain,CommonDomain,3 -/packages?q=commonmark.net,commonmark.net,3 -/packages?q=commonServiceLocator,commonServiceLocator,3 -/packages?q=community.nservicebus,community.nservicebus,3 -/packages?q=Compact,Compact,3 -/packages?q=comparer&page=3,comparer,3 -/packages?q=compass,compass,3 -/packages?q=compile&page=6,compile,3 -/packages?q=Compiled Experience&page=6,Compiled Experience,3 -/packages?q=compiler+warning,compiler warning,3 -/packages?q=component,component,3 -/packages?q=Component&page=16,Component,3 -/packages?q=compress,compress,3 -/packages?q=configuration.entityframework,configuration.entityframework,3 -/packages?q=Configuration&page=7,Configuration,3 -/packages?q=configurationmanager,configurationmanager,3 -/packages?q=configurationoptions,configurationoptions,3 -/packages?q=configurationSection,configurationSection,3 -/packages?q=confluent,confluent,3 -/packages?q=Confluent,Confluent,3 -/packages?q=console+notification,console notification,3 -/packages?q=console+wpf,console wpf,3 -/packages?q=ConsoleTables,ConsoleTables,3 -"/packages?q=Constraint,","Constraint,",3 -/packages?q=contains&page=78,contains,3 -/packages?q=ContinuousIntegration&page=2,ContinuousIntegration,3 -/packages?q=Control&page=36,Control,3 -"/packages?q=Controls,&page=9","Controls,",3 -"/packages?q=controls,&sortOrder=package-download-count&page=3","controls,",3 -/packages?q=controls&page=23,controls,3 -/packages?q=convert&page=15,convert,3 -/packages?q=convert&page=17,convert,3 -/packages?q=convert&page=19,convert,3 -/packages?q=convert&page=9,convert,3 -/packages?q=Convert&sortOrder=package-download-count&page=6&prerelease=False,Convert,3 -/packages?q=convert&sortOrder=relevance&page=2&prerelease=False,convert,3 -/packages?q=Converter&page=4,Converter,3 -/packages?q=coordinates&page=2,coordinates,3 -/packages?q=Core,Core,3 -/packages?q=corecompat.system.drawingv2,corecompat.system.drawingv2,3 -/packages?q=corelibrary.pieroviano,corelibrary.pieroviano,3 -/packages?q=correlation albumprinter,correlation albumprinter,3 -/packages?q=cors,cors,3 -/packages?q=Cors,Cors,3 -/packages?q=cosmos.table,cosmos.table,3 -/packages?q=Couchbase Inc for couchbase-aspnet,Couchbase Inc for couchbase-aspnet,3 -/packages?q=couchbase&sortOrder=package-download-count,couchbase,3 -/packages?q=counter,counter,3 -/packages?q=Counting,Counting,3 -/packages?q=Coverage,Coverage,3 -/packages?q=coveralls,coveralls,3 -/packages?q=coverlet,coverlet,3 -/packages?q=coverlet.collector,coverlet.collector,3 -/packages?q=crash,crash,3 -/packages?q=crawler,crawler,3 -/packages?q=crc16+crc32,crc16 crc32,3 -/packages?q=create&page=66,create,3 -/packages?q=CreateNewNuGetPackageFromProjectAfterEachBuild,CreateNewNuGetPackageFromProjectAfterEachBuild,3 -/packages?q=crm.sdk,crm.sdk,3 -/packages?q=CRM&page=1,CRM,3 -/packages?q=crm&page=15,crm,3 -/packages?q=cronos,cronos,3 -/packages?q=Cropping&sortOrder=relevance&page=1,Cropping,3 -/packages?q=CrossGeolocator,CrossGeolocator,3 -/packages?q=crypto,crypto,3 -/packages?q=crystal,crystal,3 -/packages?q=Crystal,Crystal,3 -/packages?q=CrystalDecisions,CrystalDecisions,3 -/packages?q=CrystalDecisions.CrystalReports.Engine,CrystalDecisions.CrystalReports.Engine,3 -/packages?q=CrystalDecisions.Shared,CrystalDecisions.Shared,3 -/packages?q=CrystalDesicions,CrystalDesicions,3 -/packages?q=crystalquartz,crystalquartz,3 -/packages?q=CrystalQuartz,CrystalQuartz,3 -/packages?q=cscript,cscript,3 -/packages?q=csharp&page=9,csharp,3 -/packages?q=csharp8583,csharp8583,3 -/packages?q=csom+,csom,3 -/packages?q=csp,csp,3 -/packages?q=CSRedisClient+,CSRedisClient,3 -/packages?q=CSS&page=35,CSS,3 -/packages?q=csv c,csv c,3 -/packages?q=csv&page=17,csv,3 -/packages?q=CSV&sortOrder=relevance&page=2,CSV,3 -/packages?q=csvhelper,csvhelper,3 -/packages?q=CsvHelper,CsvHelper,3 -/packages?q=ctrader,ctrader,3 -/packages?q=cucumber,cucumber,3 -/packages?q=cuda,cuda,3 -/packages?q=CUDA,CUDA,3 -/packages?q=currency&page=2,currency,3 -/packages?q=cyrillic,cyrillic,3 -/packages?q=Daniel Mohl&page=20,Daniel Mohl,3 -/packages?q=Daniel Palme&page=10,Daniel Palme,3 -/packages?q=dannycabrera,dannycabrera,3 -/packages?q=dapper.Common,dapper.Common,3 -/packages?q=Dapper.Common,Dapper.Common,3 -/packages?q=dapper.fluentmap.dommel,dapper.fluentmap.dommel,3 -/packages?q=Dapper.Oracle,Dapper.Oracle,3 -/packages?q=dapper.oracle.strongname,dapper.oracle.strongname,3 -/packages?q=Dapper+,Dapper,3 -/packages?q=dapper+1.42,dapper 1.42,3 -/packages?q=dapper+builk,dapper builk,3 -/packages?q=Dapper+Plus,Dapper Plus,3 -/packages?q=DapperExtensions.NetCore,DapperExtensions.NetCore,3 -/packages?q=DAQNavi,DAQNavi,3 -/packages?q=data-access,data-access,3 -/packages?q=data&sortOrder=relevance&page=47&prerelease=False,data,3 -/packages?q=data+movement,data movement,3 -/packages?q=dataaccessfactory,dataaccessfactory,3 -/packages?q=DataAnnotation,DataAnnotation,3 -/packages?q=DataAnnotationsExtensions,DataAnnotationsExtensions,3 -/packages?q=DataBase,DataBase,3 -/packages?q=Datadog.Trace.ClrProfiler.Managed,Datadog.Trace.ClrProfiler.Managed,3 -/packages?q=dataflow,dataflow,3 -"/packages?q=datagrid,&page=4","datagrid,",3 -/packages?q=dataGridView+desctop+C,dataGridView desctop C,3 -/packages?q=datalayer,datalayer,3 -"/packages?q=DataLayer,&page=2","DataLayer,",3 -/packages?q=datastreams,datastreams,3 -/packages?q=datatable,datatable,3 -/packages?q=datatable+view,datatable view,3 -/packages?q=datatables,datatables,3 -/packages?q=Datatables,Datatables,3 -/packages?q=DataVisualization,DataVisualization,3 -/packages?q=DateTime,DateTime,3 -"/packages?q=DateTime,&page=8","DateTime,",3 -/packages?q=datetime&page=3,datetime,3 -/packages?q=datetime+picker,datetime picker,3 -/packages?q=David Hall&sortOrder=relevance&page=4,David Hall,3 -/packages?q=Dawn,Dawn,3 -/packages?q=db2,db2,3 -/packages?q=DB2,DB2,3 -/packages?q=DbContext&page=7,DbContext,3 -/packages?q=DbGrid,DbGrid,3 -/packages?q=DbProvider,DbProvider,3 -/packages?q=DbSet,DbSet,3 -/packages?q=dbupgrade,dbupgrade,3 -/packages?q=dcuapihelper,dcuapihelper,3 -/packages?q=deb,deb,3 -/packages?q=Debugger,Debugger,3 -/packages?q=debugging&page=4,debugging,3 -/packages?q=decompiler,decompiler,3 -/packages?q=decorator,decorator,3 -/packages?q=definitelytyped,definitelytyped,3 -/packages?q=DelegateDecompiler,DelegateDecompiler,3 -/packages?q=DelegatingHandler,DelegatingHandler,3 -/packages?q=dependency.,dependency.,3 -/packages?q=dependencyinjection,dependencyinjection,3 -/packages?q=DependencyInjection,DependencyInjection,3 -"/packages?q=deploy,&page=10","deploy,",3 -/packages?q=deployment,deployment,3 -/packages?q=deserialize,deserialize,3 -/packages?q=deserializer,deserializer,3 -/packages?q=detech+signature,detech signature,3 -"/packages?q=detection,&page=6","detection,",3 -/packages?q=Deusty Designs and the .NET Community&page=562,Deusty Designs and the .NET Community,3 -/packages?q=devart.data.oracle,devart.data.oracle,3 -/packages?q=developerforce.force,developerforce.force,3 -/packages?q=DevExpress,DevExpress,3 -/packages?q=devexpress xamarin,devexpress xamarin,3 -/packages?q=DevExpress.AspNetCore.Reporting,DevExpress.AspNetCore.Reporting,3 -/packages?q=Devexpress.WPF,Devexpress.WPF,3 -/packages?q=devextreme,devextreme,3 -/packages?q=DevExtreme.AspNet.Core.19.1.4,DevExtreme.AspNet.Core.19.1.4,3 -/packages?q=DevExtreme.AspNet.Mvc,DevExtreme.AspNet.Mvc,3 -/packages?q=DevExtreme+,DevExtreme,3 -/packages?q=device&page=4,device,3 -/packages?q=DevOps,DevOps,3 -"/packages?q=DI,&page=15","DI,",3 -"/packages?q=diagnostics,","diagnostics,",3 -/packages?q=Dialogflow,Dialogflow,3 -/packages?q=dictionary,dictionary,3 -"/packages?q=dictionary,","dictionary,",3 -/packages?q=diff-match-patch,diff-match-patch,3 -/packages?q=diff+editor,diff editor,3 -/packages?q=digest&page=2,digest,3 -/packages?q=DinkToPdf,DinkToPdf,3 -/packages?q=DinkToPDF,DinkToPDF,3 -/packages?q=directed,directed,3 -/packages?q=directory,directory,3 -/packages?q=directory&page=1,directory,3 -/packages?q=DirectWrite,DirectWrite,3 -/packages?q=Discord.Addons.Interactive,Discord.Addons.Interactive,3 -/packages?q=dispatcher,dispatcher,3 -/packages?q=distance,distance,3 -/packages?q=Distributed&page=12,Distributed,3 -/packages?q=djangorestframework,djangorestframework,3 -/packages?q=dll&page=27,dll,3 -/packages?q=docker,docker,3 -/packages?q=dockpanel,dockpanel,3 -/packages?q=documentDB,documentDB,3 -/packages?q=documentdb.core,documentdb.core,3 -/packages?q=DocumentFormat.OpenXml,DocumentFormat.OpenXml,3 -/packages?q=documentformat+html,documentformat html,3 -"/packages?q=DOCX+,+Pdf","DOCX , Pdf",3 -/packages?q=docx+html,docx html,3 -/packages?q=DOM,DOM,3 -/packages?q=domain-driven,domain-driven,3 -/packages?q=Domino,Domino,3 -/packages?q=donut,donut,3 -/packages?q=dos.common,dos.common,3 -/packages?q=dosbox,dosbox,3 -/packages?q=dotCover,dotCover,3 -/packages?q=Dotless,Dotless,3 -/packages?q=dotliquid,dotliquid,3 -/packages?q=dotmcs,dotmcs,3 -/packages?q=dotnet-sdk,dotnet-sdk,3 -/packages?q=dotnet-serve,dotnet-serve,3 -/packages?q=DotNet.Xdt,DotNet.Xdt,3 -/packages?q=DotNetCompilerPlatform,DotNetCompilerPlatform,3 -/packages?q=DotNetCore.NPOI+,DotNetCore.NPOI,3 -/packages?q=dotnetnuke.core,dotnetnuke.core,3 -"/packages?q=dotnetzip,","dotnetzip,",3 -/packages?q=dotras,dotras,3 -/packages?q=dottrace,dottrace,3 -/packages?q=download&page=6,download,3 -/packages?q=DPI,DPI,3 -/packages?q=DPL,DPL,3 -"/packages?q=dropdown,&page=1","dropdown,",3 -"/packages?q=dropdown,&page=4","dropdown,",3 -/packages?q=dryioc,dryioc,3 -/packages?q=dryioczero,dryioczero,3 -/packages?q=dto,dto,3 -/packages?q=dto&page=6,dto,3 -/packages?q=dump,dump,3 -/packages?q=Dump,Dump,3 -/packages?q=duoweb,duoweb,3 -/packages?q=dupfinder,dupfinder,3 -/packages?q=DwayneNeed,DwayneNeed,3 -/packages?q=DWG,DWG,3 -/packages?q=Dymo,Dymo,3 -/packages?q=dynamicquery,dynamicquery,3 -"/packages?q=Dynamics,CRM&page=6","Dynamics,CRM",3 -/packages?q=dynamics&page=4,dynamics,3 -/packages?q=dynamo,dynamo,3 -/packages?q=Dynamo visual programming&page=55,Dynamo visual programming,3 -/packages?q=Dynamo visual programming&page=69,Dynamo visual programming,3 -/packages?q=Dynomite,Dynomite,3 -/packages?q=e-mail,e-mail,3 -"/packages?q=ean-13,","ean-13,",3 -"/packages?q=ean,","ean,",3 -/packages?q=EAN128,EAN128,3 -/packages?q=EasyCrud,EasyCrud,3 -/packages?q=easymodbus,easymodbus,3 -/packages?q=eBay,eBay,3 -/packages?q=eBay.com,eBay.com,3 -/packages?q=eBay.Service,eBay.Service,3 -/packages?q=echarts,echarts,3 -/packages?q=eCommerce,eCommerce,3 -/packages?q=eddlonzanida,eddlonzanida,3 -/packages?q=EdgePageLoadStrategy,EdgePageLoadStrategy,3 -/packages?q=EDi,EDi,3 -/packages?q=editable,editable,3 -/packages?q=editor,editor,3 -/packages?q=editor.md,editor.md,3 -/packages?q=editor&page=3,editor,3 -/packages?q=EditorTemplates,EditorTemplates,3 -/packages?q=edmx,edmx,3 -/packages?q=edtFTPnet-PRO,edtFTPnet-PRO,3 -/packages?q=EFCore,EFCore,3 -/packages?q=egonsoft,egonsoft,3 -/packages?q=eigen,eigen,3 -/packages?q=elasticsearch+in+memory+server,elasticsearch in memory server,3 -/packages?q=ElasticsearchQuery,ElasticsearchQuery,3 -/packages?q=elcamino,elcamino,3 -/packages?q=ellipses,ellipses,3 -/packages?q=elmah,elmah,3 -/packages?q=ELMAH&sortOrder=relevance&page=2&prerelease=False,ELMAH,3 -/packages?q=elmish,elmish,3 -/packages?q=elmish.streams,elmish.streams,3 -"/packages?q=Email,&page=19","Email,",3 -/packages?q=embeded,embeded,3 -/packages?q=Ember.js,Ember.js,3 -/packages?q=emdk,emdk,3 -/packages?q=EMF,EMF,3 -/packages?q=emgu+cv,emgu cv,3 -/packages?q=EML,EML,3 -/packages?q=emotes,emotes,3 -/packages?q=empira Software GmbH&page=43,empira Software GmbH,3 -/packages?q=encoding,encoding,3 -/packages?q=encryption,encryption,3 -"/packages?q=Endian,","Endian,",3 -/packages?q=EnergyPlus,EnergyPlus,3 -/packages?q=enigmatry,enigmatry,3 -/packages?q=enigmatry&prerel=false,enigmatry,3 -/packages?q=enterprise library&page=2,enterprise library,3 -/packages?q=enterprise library&page=229,enterprise library,3 -/packages?q=EnterpriseLibrary,EnterpriseLibrary,3 -/packages?q=EnterpriseLibrary.TransientFaultHandling,EnterpriseLibrary.TransientFaultHandling,3 -/packages?q=entity framework&page=15,entity framework,3 -/packages?q=entity+framework+4.4.0.0,entity framework 4.4.0.0,3 -/packages?q=Entity+Framework+Core,Entity Framework Core,3 -/packages?q=entity+framework+core+Bulk,entity framework core Bulk,3 -/packages?q=Entity+framework+effort,Entity framework effort,3 -/packages?q=entity+framework+extension,entity framework extension,3 -/packages?q=Entity+Framework+tools,Entity Framework tools,3 -/packages?q=EntityFramework,EntityFramework,3 -/packages?q=EntityFrameWork,EntityFrameWork,3 -/packages?q=Entityframework.core,Entityframework.core,3 -/packages?q=EntityFramework.Extended,EntityFramework.Extended,3 -/packages?q=EntityFramework&page=47,EntityFramework,3 -/packages?q=EntityFramework+6.2.0,EntityFramework 6.2.0,3 -/packages?q=EntityFramework+bulk+insert+ef+4.5.2,EntityFramework bulk insert ef 4.5.2,3 -/packages?q=entityframework+core+design,entityframework core design,3 -/packages?q=EntityFroameowrk,EntityFroameowrk,3 -/packages?q=entlib6,entlib6,3 -/packages?q=EntotyFramework,EntotyFramework,3 -/packages?q=Enum,Enum,3 -/packages?q=environmentVariables,environmentVariables,3 -/packages?q=EPPLUS,EPPLUS,3 -/packages?q=EPPlus+,EPPlus,3 -/packages?q=epplus+mvc,epplus mvc,3 -/packages?q=eqtec,eqtec,3 -/packages?q=equin.applicationframework.bin,equin.applicationframework.bin,3 -/packages?q=ERP,ERP,3 -/packages?q=esc/pos+,esc/pos,3 -/packages?q=escape,escape,3 -/packages?q=esent,esent,3 -/packages?q=Eshopworld.Generators,Eshopworld.Generators,3 -/packages?q=esia.net,esia.net,3 -/packages?q=Etl,Etl,3 -"/packages?q=etl,","etl,",3 -/packages?q=etl&prerel=false,etl,3 -/packages?q=eto,eto,3 -/packages?q=Etsy,Etsy,3 -/packages?q=ETW&page=2,ETW,3 -/packages?q=European,European,3 -/packages?q=evaluator&page=2,evaluator,3 -/packages?q=Event&sortOrder=relevance&page=1&prerelease=False,Event,3 -/packages?q=EventAggregator,EventAggregator,3 -/packages?q=eventlog,eventlog,3 -/packages?q=EventLogNotFoundException,EventLogNotFoundException,3 -/packages?q=eventstore&sortOrder=package-download-count,eventstore,3 -/packages?q=everdroid.activity.core,everdroid.activity.core,3 -/packages?q=Evernote,Evernote,3 -/packages?q=evoleap,evoleap,3 -/packages?q=evopdf,evopdf,3 -/packages?q=excel&page=11,excel,3 -/packages?q=excel+html,excel html,3 -/packages?q=ExcelData,ExcelData,3 -/packages?q=exceldna,exceldna,3 -/packages?q=ExcelFinancialFunctions,ExcelFinancialFunctions,3 -/packages?q=ExcelNumberFormat+,ExcelNumberFormat,3 -/packages?q=ExcelReport,ExcelReport,3 -/packages?q=exception,exception,3 -/packages?q=Exclude,Exclude,3 -/packages?q=Executable&page=3,Executable,3 -/packages?q=execute,execute,3 -/packages?q=execute+timed+task,execute timed task,3 -/packages?q=expandframework,expandframework,3 -/packages?q=expat,expat,3 -/packages?q=expecto,expecto,3 -/packages?q=expertpdf,expertpdf,3 -/packages?q=expressioncache,expressioncache,3 -/packages?q=ExpressionVisitor,ExpressionVisitor,3 -/packages?q=ext,ext,3 -/packages?q=Extended&page=2,Extended,3 -/packages?q=extension-method,extension-method,3 -/packages?q=extension-methods,extension-methods,3 -/packages?q=extensions.configuration.memory,extensions.configuration.memory,3 -/packages?q=extensions.http,extensions.http,3 -/packages?q=F#+excelwrite,F,3 -/packages?q=fable,fable,3 -/packages?q=Fable.Browser.Websocket,Fable.Browser.Websocket,3 -/packages?q=Fable.Electron,Fable.Electron,3 -/packages?q=fable.elmish.nile,fable.elmish.nile,3 -/packages?q=fable.fontawesome,fable.fontawesome,3 -/packages?q=fable.localstorage,fable.localstorage,3 -/packages?q=fable.promise,fable.promise,3 -/packages?q=Facebook,Facebook,3 -/packages?q=Fairway Technologies,Fairway Technologies,3 -/packages?q=fake,fake,3 -/packages?q=Faker.Portable,Faker.Portable,3 -/packages?q=Farseer Physics Engine&page=2,Farseer Physics Engine,3 -/packages?q=faster,faster,3 -/packages?q=Fasterflect,Fasterflect,3 -/packages?q=FastMember+,FastMember,3 -/packages?q=FastZip,FastZip,3 -/packages?q=FB,FB,3 -/packages?q=feature toggle&page=9,feature toggle,3 -/packages?q=FeatureToggle&page=2,FeatureToggle,3 -/packages?q=feed,feed,3 -/packages?q=feliz,feliz,3 -/packages?q=fiddler,fiddler,3 -/packages?q=FIDO,FIDO,3 -/packages?q=FIFO+Queue+sqlserver+,FIFO Queue sqlserver,3 -/packages?q=file+encrpyt,file encrpyt,3 -/packages?q=file+helper,file helper,3 -/packages?q=file+pattern+exclude,file pattern exclude,3 -/packages?q=filepicker,filepicker,3 -/packages?q=Files&page=56,Files,3 -/packages?q=filesystemwatcher,filesystemwatcher,3 -/packages?q=FileZilla,FileZilla,3 -/packages?q=Filter&page=4,Filter,3 -/packages?q=fingerprint,fingerprint,3 -/packages?q=firebase,firebase,3 -/packages?q=Firebase-Auth,Firebase-Auth,3 -/packages?q=firestore,firestore,3 -/packages?q=Fix,Fix,3 -/packages?q=flac,flac,3 -/packages?q=flat+files+xml+,flat files xml,3 -/packages?q=Fleck,Fleck,3 -/packages?q=flow&page=6,flow,3 -/packages?q=Fluent,Fluent,3 -/packages?q=Fluent+Validation,Fluent Validation,3 -/packages?q=fluentlayout,fluentlayout,3 -/packages?q=fluentMigrator,fluentMigrator,3 -/packages?q=FluentMigrator,FluentMigrator,3 -/packages?q=fluentmigrator.runner,fluentmigrator.runner,3 -/packages?q=fluentvalidation,fluentvalidation,3 -/packages?q=FluentValidation.Results,FluentValidation.Results,3 -/packages?q=fluid.core,fluid.core,3 -/packages?q=flurl.http,flurl.http,3 -/packages?q=fo-dicom,fo-dicom,3 -/packages?q=fo+dicom,fo dicom,3 -/packages?q=Fody,Fody,3 -/packages?q=FodyWeavers,FodyWeavers,3 -/packages?q=font+awesom,font awesom,3 -/packages?q=font+awesone,font awesone,3 -/packages?q=foolproofcore,foolproofcore,3 -/packages?q=formatting,formatting,3 -"/packages?q=formula,","formula,",3 -/packages?q=foundatio+redis,foundatio redis,3 -/packages?q=FParser,FParser,3 -/packages?q=framwork+windform,framwork windform,3 -/packages?q=free chat api&page=169,free chat api,3 -/packages?q=free chat api&page=171,free chat api,3 -/packages?q=free+barcode,free barcode,3 -/packages?q=free+chat+api,free chat api,3 -/packages?q=free+spphire,free spphire,3 -/packages?q=freeimage,freeimage,3 -/packages?q=freetype6,freetype6,3 -/packages?q=fscheck,fscheck,3 -/packages?q=FSharp.Compiler.Services,FSharp.Compiler.Services,3 -/packages?q=fsharp.core,fsharp.core,3 -/packages?q=Fsharp.Core,Fsharp.Core,3 -/packages?q=fsharp.data.graphql,fsharp.data.graphql,3 -/packages?q=fsharp+core+data,fsharp core data,3 -/packages?q=FSharpLint.Core,FSharpLint.Core,3 -/packages?q=FTCAPI.dll,FTCAPI.dll,3 -/packages?q=Ftp&page=4,Ftp,3 -/packages?q=Ftp&page=6,Ftp,3 -/packages?q=FTpClient,FTpClient,3 -/packages?q=ftps,ftps,3 -/packages?q=FTPS,FTPS,3 -/packages?q=ftps&page=3,ftps,3 -/packages?q=Fullcalendar,Fullcalendar,3 -/packages?q=functions.extensions,functions.extensions,3 -/packages?q=funq,funq,3 -/packages?q=gabriel,gabriel,3 -/packages?q=game,game,3 -/packages?q=gamedev,gamedev,3 -/packages?q=gatt,gatt,3 -/packages?q=gauge+screenshot,gauge screenshot,3 -/packages?q=GaussNewton,GaussNewton,3 -/packages?q=GCC,GCC,3 -/packages?q=gcode,gcode,3 -/packages?q=GDAL+binary+32+1500,GDAL binary 32 1500,3 -/packages?q=gdata,gdata,3 -/packages?q=gelf4net,gelf4net,3 -/packages?q=Gemini,Gemini,3 -/packages?q=Gemini.Modules,Gemini.Modules,3 -/packages?q=generic+database+factory,generic database factory,3 -/packages?q=GenericRepository&page=4,GenericRepository,3 -/packages?q=geneticsharp,geneticsharp,3 -/packages?q=Geo&page=7,Geo,3 -/packages?q=Geocoding.Here,Geocoding.Here,3 -/packages?q=GeoHeights,GeoHeights,3 -/packages?q=germstone,germstone,3 -/packages?q=getit,getit,3 -/packages?q=getlatest,getlatest,3 -/packages?q=gfkeogh,gfkeogh,3 -/packages?q=gherkin,gherkin,3 -/packages?q=Ghostscript.NET,Ghostscript.NET,3 -"/packages?q=Gif,","Gif,",3 -/packages?q=giraffe,giraffe,3 -/packages?q=GIS,GIS,3 -"/packages?q=GitHub,&page=20","GitHub,",3 -/packages?q=GitSharp,GitSharp,3 -/packages?q=Glass.Mapper,Glass.Mapper,3 -/packages?q=Glass.Mapper.Sc.81,Glass.Mapper.Sc.81,3 -/packages?q=Glass.Mapper.Sc.90,Glass.Mapper.Sc.90,3 -/packages?q=glimpse,glimpse,3 -/packages?q=glm,glm,3 -/packages?q=Global,Global,3 -/packages?q=Globalization&page=5,Globalization,3 -/packages?q=Globals.LoggedInUser+=+t.Result.Profile,Globals.LoggedInUser = t.Result.Profile,3 -/packages?q=GlobalStore,GlobalStore,3 -/packages?q=glog,glog,3 -/packages?q=Gmail,Gmail,3 -/packages?q=GMap,GMap,3 -/packages?q=gmaps,gmaps,3 -/packages?q=gnuboard5,gnuboard5,3 -/packages?q=gnupg,gnupg,3 -/packages?q=gofer.net,gofer.net,3 -/packages?q=gong,gong,3 -/packages?q=Google.Api.Gax.Gr,Google.Api.Gax.Gr,3 -/packages?q=Google.Api.Gax.Grpc,Google.Api.Gax.Grpc,3 -/packages?q=google.apis,google.apis,3 -/packages?q=Google.Apis,Google.Apis,3 -/packages?q=Google.APis,Google.APis,3 -/packages?q=Google.Apis.acceleratedmobilepageurl&prerelease=true&sortOrder=relevance,Google.Apis.acceleratedmobilepageurl,3 -/packages?q=Google.Apis.adexchangebuyer&prerelease=true&sortOrder=relevance,Google.Apis.adexchangebuyer,3 -/packages?q=Google.Apis.Admin.Directory.directory_v1,Google.Apis.Admin.Directory.directory_v1,3 -/packages?q=Google.Apis.adsense&prerelease=true&sortOrder=relevance,Google.Apis.adsense,3 -/packages?q=Google.Apis.adsensehost&prerelease=true&sortOrder=relevance,Google.Apis.adsensehost,3 -/packages?q=Google.Apis.alertcenter&prerelease=true&sortOrder=relevance,Google.Apis.alertcenter,3 -/packages?q=Google.Apis.androidmanagement&prerelease=true&sortOrder=relevance,Google.Apis.androidmanagement,3 -/packages?q=Google.Apis.bigquery&prerelease=true&sortOrder=relevance,Google.Apis.bigquery,3 -/packages?q=Google.Apis.classroom&prerelease=true&sortOrder=relevance,Google.Apis.classroom,3 -/packages?q=Google.Apis.cloudkms&prerelease=true&sortOrder=relevance,Google.Apis.cloudkms,3 -/packages?q=Google.Apis.CloudNaturalLanguageAPI&prerelease=true&sortOrder=relevance,Google.Apis.CloudNaturalLanguageAPI,3 -/packages?q=Google.Apis.compute&prerelease=true&sortOrder=relevance,Google.Apis.compute,3 -/packages?q=Google.Apis.Core,Google.Apis.Core,3 -/packages?q=Google.Apis.dfareporting&prerelease=true&sortOrder=relevance,Google.Apis.dfareporting,3 -/packages?q=Google.Apis.Dfareporting&prerelease=true&sortOrder=relevance,Google.Apis.Dfareporting,3 -/packages?q=Google.Apis.dlp&prerelease=true&sortOrder=relevance,Google.Apis.dlp,3 -/packages?q=Google.Apis.doubleclickbidmanager&prerelease=true&sortOrder=relevance,Google.Apis.doubleclickbidmanager,3 -/packages?q=google.apis.drive&prerelease=true&sortOrder=relevance,google.apis.drive,3 -/packages?q=Google.Apis.file&prerelease=true&sortOrder=relevance,Google.Apis.file,3 -/packages?q=Google.Apis.firebaserules&prerelease=true&sortOrder=relevance,Google.Apis.firebaserules,3 -/packages?q=Google.Apis.fusiontables&prerelease=true&sortOrder=relevance,Google.Apis.fusiontables,3 -/packages?q=Google.Apis.games&prerelease=true&sortOrder=relevance,Google.Apis.games,3 -/packages?q=Google.Apis.iap&prerelease=true&sortOrder=relevance,Google.Apis.iap,3 -/packages?q=Google.Apis.playcustomapp&prerelease=true&sortOrder=relevance,Google.Apis.playcustomapp,3 -/packages?q=Google.Apis.sqladmin&prerelease=true&sortOrder=relevance,Google.Apis.sqladmin,3 -/packages?q=Google.Apis.tasks&prerelease=true&sortOrder=relevance,Google.Apis.tasks,3 -/packages?q=Google.Apis.webfonts&prerelease=true&sortOrder=relevance,Google.Apis.webfonts,3 -/packages?q=Google.Apis.youtubeAnalytics&prerelease=true&sortOrder=relevance,Google.Apis.youtubeAnalytics,3 -/packages?q=google.apis&prerel=false,google.apis,3 -/packages?q=Google.Cloud,Google.Cloud,3 -/packages?q=Google.Cloud.AspNetCore&source=post_page---------------------------,Google.Cloud.AspNetCore,3 -/packages?q=Google.OR.Tools,Google.OR.Tools,3 -"/packages?q=Google.Visualization,","Google.Visualization,",3 -/packages?q=google+apis,google apis,3 -/packages?q=google+calendar,google calendar,3 -/packages?q=google+free+api,google free api,3 -/packages?q=google+maps,google maps,3 -/packages?q=Google+Play+Services,Google Play Services,3 -/packages?q=google+speech+to+text,google speech to text,3 -/packages?q=googleIMA+ios,googleIMA ios,3 -/packages?q=GooglePlayServices+Ads,GooglePlayServices Ads,3 -/packages?q=GoServicePro.Webservices+1.2.0+GoServicePro+Webservices+GoServicePro+Webservices++Package+Manager+.NET+CLI+PackageReference+Paket+CLI+Install-Package+GoServicePro.Webservices+-Version+1.2.0++Dependencies++GitHub+Usage++Version+History,GoServicePro.Webservices 1.2.0 GoServicePro Webservices GoServicePro Webservices Package Manager .NET CLI PackageReference Paket CLI Install-Package GoServicePro.Webservices -Version 1.2.0 Dependencies GitHub Usage Version History,3 -/packages?q=gpstools.net,gpstools.net,3 -/packages?q=GrapeCity.Documents,GrapeCity.Documents,3 -/packages?q=graphic&page=2,graphic,3 -/packages?q=graphics,graphics,3 -/packages?q=graphml,graphml,3 -/packages?q=graphql,graphql,3 -/packages?q=graphql-dotnet,graphql-dotnet,3 -/packages?q=graphql.client,graphql.client,3 -/packages?q=graphql+builder+.net+core,graphql builder .net core,3 -/packages?q=graphql+dynamic,graphql dynamic,3 -/packages?q=grayscale,grayscale,3 -/packages?q=Grayscale&page=1,Grayscale,3 -/packages?q=greenvile+near+indiana,greenvile near indiana,3 -/packages?q=Greg Young,Greg Young,3 -"/packages?q=Grid,&page=5","Grid,",3 -"/packages?q=grid,&page=7","grid,",3 -/packages?q=gridview&page=1,gridview,3 -/packages?q=GridView&page=2,GridView,3 -/packages?q=gRPC,gRPC,3 -/packages?q=Grpc.AspNetCore.Server,Grpc.AspNetCore.Server,3 -/packages?q=Grpc.Core,Grpc.Core,3 -/packages?q=Grpc.Net.Client,Grpc.Net.Client,3 -/packages?q=gtk,gtk,3 -/packages?q=Gtk,Gtk,3 -/packages?q=gtk-sharp,gtk-sharp,3 -/packages?q=Gu.Wpf.PropertyGrid,Gu.Wpf.PropertyGrid,3 -"/packages?q=gui,","gui,",3 -/packages?q=guid,guid,3 -/packages?q=guilherme+caixeta,guilherme caixeta,3 -/packages?q=hadoop,hadoop,3 -/packages?q=handle&page=12,handle,3 -/packages?q=hangfire storage&page=5,hangfire storage,3 -/packages?q=Hangfire.Dashboard.Authorization,Hangfire.Dashboard.Authorization,3 -/packages?q=hangfire.rabbit,hangfire.rabbit,3 -/packages?q=Hangfire.Sqlite,Hangfire.Sqlite,3 -/packages?q=hardware,hardware,3 -/packages?q=Hardware,Hardware,3 -/packages?q=hashwords,hashwords,3 -/packages?q=hbase,hbase,3 -/packages?q=HDF5DotNet,HDF5DotNet,3 -/packages?q=health&page=10,health,3 -/packages?q=heap,heap,3 -/packages?q=hedgehog-experimental&sortOrder=package-download-count,hedgehog-experimental,3 -/packages?q=hedgehog&sortOrder=package-download-count,hedgehog,3 -/packages?q=HelixToolkit,HelixToolkit,3 -/packages?q=hello.js,hello.js,3 -/packages?q=helper,helper,3 -/packages?q=HeyCoder.AspNetCore.MvcPager,HeyCoder.AspNetCore.MvcPager,3 -/packages?q=hiera,hiera,3 -/packages?q=highlight,highlight,3 -/packages?q=history,history,3 -/packages?q=hmac&page=3,hmac,3 -/packages?q=Holiday,Holiday,3 -/packages?q=Hololens+,Hololens,3 -/packages?q=hot+towel,hot towel,3 -/packages?q=Hotcache,Hotcache,3 -/packages?q=HotChocolate.AspNetCore,HotChocolate.AspNetCore,3 -/packages?q=how+to+remove+advertising+windows+phone+lumia,how to remove advertising windows phone lumia,3 -/packages?q=hpsocket&tdsourcetag=s_pcqq_aiomsg,hpsocket,3 -/packages?q=hpsocket&tdsourcetag=s_pctim_aiomsg,hpsocket,3 -/packages?q=HSL,HSL,3 -/packages?q=HTML&page=11,HTML,3 -/packages?q=Html&page=46,Html,3 -/packages?q=html+agilit,html agilit,3 -/packages?q=html+pdf,html pdf,3 -/packages?q=html+to+pdf+,html to pdf,3 -/packages?q=html5-boilerplate,html5-boilerplate,3 -"/packages?q=html5,&page=33","html5,",3 -"/packages?q=Html5,&page=9","Html5,",3 -/packages?q=html5&page=14,html5,3 -/packages?q=HtmlHelper,HtmlHelper,3 -"/packages?q=HtmlHelper,","HtmlHelper,",3 -/packages?q=HttoContent+net+core,HttoContent net core,3 -"/packages?q=http,&page=76","http,",3 -/packages?q=HttpContext.Current,HttpContext.Current,3 -"/packages?q=HttpModule,","HttpModule,",3 -/packages?q=HTTPS&page=127,HTTPS,3 -/packages?q=HttpServerChannel,HttpServerChannel,3 -/packages?q=Hubble.Core,Hubble.Core,3 -/packages?q=hyperscan,hyperscan,3 -/packages?q=i18N,i18N,3 -/packages?q=i18N&page=3,i18N,3 -/packages?q=i18n&sortOrder=package-download-count,i18n,3 -/packages?q=i18next,i18next,3 -/packages?q=ib,ib,3 -/packages?q=IBAN,IBAN,3 -/packages?q=IBM WebSphere MQ,IBM WebSphere MQ,3 -/packages?q=IBM.Data,IBM.Data,3 -/packages?q=ibm.data.db2,ibm.data.db2,3 -/packages?q=IBM.Data.DB2.dll,IBM.Data.DB2.dll,3 -/packages?q=IBundleTransform,IBundleTransform,3 -"/packages?q=iCal,","iCal,",3 -/packages?q=ical.net,ical.net,3 -/packages?q=ICO,ICO,3 -/packages?q=ICommunicationListeners,ICommunicationListeners,3 -/packages?q=icon,icon,3 -/packages?q=ICSharpCode,ICSharpCode,3 -/packages?q=icu+net,icu net,3 -/packages?q=ID3,ID3,3 -/packages?q=idbconnection,idbconnection,3 -/packages?q=IDbContext,IDbContext,3 -/packages?q=identity&page=22,identity,3 -/packages?q=identity+core+,identity core,3 -/packages?q=IdentityExpress.Manager.Api.Community,IdentityExpress.Manager.Api.Community,3 -/packages?q=identitymodel,identitymodel,3 -/packages?q=IdentityModel,IdentityModel,3 -/packages?q=IdentityModel.OidcClient,IdentityModel.OidcClient,3 -/packages?q=IdentityModel&page=4,IdentityModel,3 -/packages?q=identityserver3,identityserver3,3 -/packages?q=IdentityServer4.2.3.2,IdentityServer4.2.3.2,3 -/packages?q=IdentityServer4.AccessTokenValidation,IdentityServer4.AccessTokenValidation,3 -/packages?q=IdentityServer4.AspNetIdentity,IdentityServer4.AspNetIdentity,3 -/packages?q=idintity,idintity,3 -/packages?q=iedriver,iedriver,3 -/packages?q=IEnumerable,IEnumerable,3 -"/packages?q=If+this+error+persists,+it+is+possible+that+this+site+uses+an+unsupported+protocol+or+cipher+suite+such+as+RC4","If this error persists, it is possible that this site uses an unsupported protocol or cipher suite such as RC4",3 -/packages?q=iGrid,iGrid,3 -/packages?q=il&page=3,il,3 -/packages?q=ILLink.Tasks,ILLink.Tasks,3 -/packages?q=ILSpy+decompile+vb,ILSpy decompile vb,3 -"/packages?q=Image,&page=35","Image,",3 -/packages?q=Image&page=15,Image,3 -/packages?q=image+recognition,image recognition,3 -/packages?q=imagemagic,imagemagic,3 -/packages?q=ImageMagick,ImageMagick,3 -/packages?q=imageresizer,imageresizer,3 -"/packages?q=images,&page=15","images,",3 -/packages?q=include&page=16,include,3 -/packages?q=Indicator,Indicator,3 -/packages?q=Indicator&page=2,Indicator,3 -/packages?q=indigo,indigo,3 -/packages?q=inflector,inflector,3 -/packages?q=information&page=35,information,3 -/packages?q=Informix,Informix,3 -/packages?q=Infragistics,Infragistics,3 -/packages?q=ini file&page=5,ini file,3 -/packages?q=ini+file,ini file,3 -/packages?q=init&sortOrder=package-download-count&page=2,init,3 -/packages?q=injection&page=34,injection,3 -/packages?q=InjectNetCoreFrameworkBlockIfLockFileExists,InjectNetCoreFrameworkBlockIfLockFileExists,3 -/packages?q=InlineKeyboardButton,InlineKeyboardButton,3 -"/packages?q=INotifyDataErrorInfo,","INotifyDataErrorInfo,",3 -/packages?q=inotifypropertychanged,inotifypropertychanged,3 -"/packages?q=INotifyPropertyChanged,","INotifyPropertyChanged,",3 -/packages?q=Instagram&prerel=false,Instagram,3 -/packages?q=Install-Package+Auth0.AuthenticationApi,Install-Package Auth0.AuthenticationApi,3 -/packages?q=Install-Package+Microsoft.AspNet.WebApi+-IncludePrerelease,Install-Package Microsoft.AspNet.WebApi -IncludePrerelease,3 -/packages?q=Install-Package+Microsoft.AspNetCore.All,Install-Package Microsoft.AspNetCore.All,3 -/packages?q=Install-Package+Microsoft.EntityFrameworkCore.SqlServer,Install-Package Microsoft.EntityFrameworkCore.SqlServer,3 -/packages?q=install+package+override+dependency,install package override dependency,3 -"/packages?q=Installation,","Installation,",3 -/packages?q=Installer&page=5,Installer,3 -/packages?q=instant+client,instant client,3 -/packages?q=Intellisense&sortOrder=relevance&page=2&prerelease=False,Intellisense,3 -/packages?q=intelmkl,intelmkl,3 -/packages?q=interactive,interactive,3 -/packages?q=Interface,Interface,3 -"/packages?q=interface,&page=47","interface,",3 -/packages?q=Interop.LabelManager2,Interop.LabelManager2,3 -/packages?q=Interop.WIA,Interop.WIA,3 -/packages?q=interop&page=18,interop,3 -/packages?q=interprocess-communication,interprocess-communication,3 -/packages?q=Intuit,Intuit,3 -/packages?q=inventpr,inventpr,3 -/packages?q=Invoice,Invoice,3 -/packages?q=Ionic.Zip,Ionic.Zip,3 -/packages?q=iOS,iOS,3 -/packages?q=ip+camera,ip camera,3 -/packages?q=IPAddress,IPAddress,3 -/packages?q=IPL,IPL,3 -/packages?q=IPNetwork2,IPNetwork2,3 -/packages?q=ironocr+languages,ironocr languages,3 -/packages?q=IronPDF,IronPDF,3 -/packages?q=Irony.Core,Irony.Core,3 -"/packages?q=ISO,","ISO,",3 -/packages?q=iso&prerel=false,iso,3 -/packages?q=iso3166&page=1,iso3166,3 -/packages?q=IsolatedStorage,IsolatedStorage,3 -/packages?q=Isolation,Isolation,3 -/packages?q=Itext7,Itext7,3 -/packages?q=iTextAsian,iTextAsian,3 -/packages?q=iTextSharp,iTextSharp,3 -/packages?q=iTextSharp+Core,iTextSharp Core,3 -/packages?q=ithit,ithit,3 -/packages?q=ithit&fbclid=IwAR1p30ILz1lHqv1Xftebl_uhYkHLhl-oDo4ScyQVdvOyPOTzv1Ga_pI3HQ0,ithit,3 -/packages?q=ivinf13,ivinf13,3 -/packages?q=IVSPackagemetadata,IVSPackagemetadata,3 -/packages?q=IWebHostEnvironment,IWebHostEnvironment,3 -/packages?q=iXBRL,iXBRL,3 -/packages?q=jabber,jabber,3 -/packages?q=Jan Kallman,Jan Kallman,3 -/packages?q=Japanese,Japanese,3 -/packages?q=Java,Java,3 -/packages?q=Javascript .Net,Javascript .Net,3 -/packages?q=Javascript .Net&page=1144,Javascript .Net,3 -/packages?q=Javascript .Net&page=831,Javascript .Net,3 -/packages?q=JavaScript&page=16,JavaScript,3 -/packages?q=JavaScriptEngineSwitcher,JavaScriptEngineSwitcher,3 -/packages?q=JavaScriptSerializer,JavaScriptSerializer,3 -/packages?q=Jcrop,Jcrop,3 -/packages?q=Jeff Doolittle,Jeff Doolittle,3 -/packages?q=Jeff Heaton&page=43,Jeff Heaton,3 -/packages?q=jellequin,jellequin,3 -/packages?q=jeremyansel.directx,jeremyansel.directx,3 -/packages?q=jetbrains annotations&sortOrder=package-download-count,jetbrains annotations,3 -/packages?q=JetBrains.Annotations.2018.3.0,JetBrains.Annotations.2018.3.0,3 -/packages?q=JetBrains+,JetBrains,3 -/packages?q=jeylabs,jeylabs,3 -/packages?q=JMeter,JMeter,3 -"/packages?q=Jonathan ""Peli"" de Halleux&page=48","Jonathan ""Peli"" de Halleux",3 -/packages?q=JonSkeet.MiscUtil+,JonSkeet.MiscUtil,3 -/packages?q=Josh Garverick (Obliteracy Dot Net)&page=730,Josh Garverick (Obliteracy Dot Net),3 -/packages?q=JPEG2000,JPEG2000,3 -/packages?q=jQuery Mobile in ASP.NET MVC 5&page=46,jQuery Mobile in ASP.NET MVC 5,3 -/packages?q=jQuery Mobile in ASP.NET MVC 5&page=48,jQuery Mobile in ASP.NET MVC 5,3 -/packages?q=jQuery Mobile in ASP.NET MVC 5&page=6,jQuery Mobile in ASP.NET MVC 5,3 -/packages?q=jquery-3.3.1.slim,jquery-3.3.1.slim,3 -/packages?q=jquery-mobile-flat-ui-theme,jquery-mobile-flat-ui-theme,3 -"/packages?q=jQuery,&page=12","jQuery,",3 -/packages?q=jquery.min.js,jquery.min.js,3 -/packages?q=jquery.mousewheel,jquery.mousewheel,3 -/packages?q=jquery.signalR-2.2.3.js,jquery.signalR-2.2.3.js,3 -/packages?q=jquery.validation,jquery.validation,3 -/packages?q=JQuery&page=11,JQuery,3 -/packages?q=Jquery&page=52,Jquery,3 -/packages?q=jquery+1.10.2,jquery 1.10.2,3 -/packages?q=JQuery+Mask,JQuery Mask,3 -/packages?q=jQuery+Tag,jQuery Tag,3 -/packages?q=jquery+ui,jquery ui,3 -/packages?q=jqueryui,jqueryui,3 -/packages?q=jquiry+font,jquiry font,3 -/packages?q=jQurey+Notification,jQurey Notification,3 -/packages?q=jQurry+Tags-it,jQurry Tags-it,3 -/packages?q=jrevolt,jrevolt,3 -/packages?q=js&page=23,js,3 -/packages?q=jshint,jshint,3 -/packages?q=jsm,jsm,3 -/packages?q=Json,Json,3 -/packages?q=json-serialize,json-serialize,3 -/packages?q=JSON.NET,JSON.NET,3 -/packages?q=JSON&page=37,JSON,3 -/packages?q=JsonRpc,JsonRpc,3 -/packages?q=jstree,jstree,3 -/packages?q=jwt,jwt,3 -/packages?q=kafka-net,kafka-net,3 -/packages?q=kaliko,kaliko,3 -/packages?q=kaltura-client,kaltura-client,3 -/packages?q=KellermanSoftware,KellermanSoftware,3 -/packages?q=Kendo UI&page=42,Kendo UI,3 -/packages?q=kendo ui&page=63,kendo ui,3 -/packages?q=kendo.gird,kendo.gird,3 -/packages?q=kendo+mvc+5,kendo mvc 5,3 -/packages?q=KendoUI,KendoUI,3 -/packages?q=KendoUICore,KendoUICore,3 -/packages?q=KentorOwinCookieSaver,KentorOwinCookieSaver,3 -/packages?q=kestrel,kestrel,3 -/packages?q=Kevin Berridge&page=10,Kevin Berridge,3 -/packages?q=key&page=27,key,3 -/packages?q=keyboard+winform,keyboard winform,3 -/packages?q=KeyValue,KeyValue,3 -"/packages?q=Kinect,","Kinect,",3 -/packages?q=kinesisConsumer,kinesisConsumer,3 -/packages?q=Kiosk,Kiosk,3 -/packages?q=Korzh.DbTool,Korzh.DbTool,3 -/packages?q=KryptonToolkitSuite5/,KryptonToolkitSuite5/,3 -/packages?q=kudocode,kudocode,3 -/packages?q=lambda,lambda,3 -/packages?q=language server&sortOrder=package-download-count,language server,3 -/packages?q=languages&page=11,languages,3 -/packages?q=latitude,latitude,3 -/packages?q=launcher,launcher,3 -/packages?q=layout,layout,3 -/packages?q=Leadtools,Leadtools,3 -/packages?q=Leadtools.Viewer.Controls,Leadtools.Viewer.Controls,3 -/packages?q=Lee Irving Barlin,Lee Irving Barlin,3 -/packages?q=lesscss,lesscss,3 -/packages?q=levelDB-vc120,levelDB-vc120,3 -/packages?q=Lex,Lex,3 -/packages?q=libav,libav,3 -/packages?q=libevince,libevince,3 -/packages?q=libfabric,libfabric,3 -/packages?q=libgit2,libgit2,3 -/packages?q=libnmap,libnmap,3 -/packages?q=libphonenumber,libphonenumber,3 -/packages?q=libpng,libpng,3 -/packages?q=Library&page=68,Library,3 -/packages?q=librdkafka,librdkafka,3 -/packages?q=Libsodium,Libsodium,3 -/packages?q=libspatialite,libspatialite,3 -/packages?q=libupnp,libupnp,3 -/packages?q=Libvlc+,Libvlc,3 -/packages?q=libvlcsharp,libvlcsharp,3 -/packages?q=libxsmm,libxsmm,3 -/packages?q=lifetime,lifetime,3 -/packages?q=Light&sortOrder=package-download-count&page=4,Light,3 -/packages?q=Lijun(Copied from Tim Heuer)&page=136,Lijun(Copied from Tim Heuer),3 -/packages?q=Lijun(Copied from Tim Heuer)&page=98,Lijun(Copied from Tim Heuer),3 -/packages?q=Limilabs,Limilabs,3 -/packages?q=line+graphs,line graphs,3 -/packages?q=LinkedIn,LinkedIn,3 -/packages?q=Links&page=2,Links,3 -/packages?q=linq,linq,3 -/packages?q=LINQ,LINQ,3 -/packages?q=LINQ to LDAP,LINQ to LDAP,3 -"/packages?q=Linq,&page=2","Linq,",3 -/packages?q=Linqkit,Linqkit,3 -/packages?q=LINQKit.Core,LINQKit.Core,3 -/packages?q=LinqOptimizer,LinqOptimizer,3 -/packages?q=ListBox,ListBox,3 -/packages?q=listview drag drop,listview drag drop,3 -/packages?q=litedb,litedb,3 -/packages?q=litenetlib,litenetlib,3 -/packages?q=LiteX.HealthChecks&source=post_page---------------------------,LiteX.HealthChecks,3 -/packages?q=litjson,litjson,3 -/packages?q=livecharts,livecharts,3 -/packages?q=LLBLGen,LLBLGen,3 -/packages?q=load&page=14,load,3 -/packages?q=locks,locks,3 -/packages?q=LOG4NET,LOG4NET,3 -/packages?q=log4net appender&page=21,log4net appender,3 -/packages?q=log4net.1.2.13,log4net.1.2.13,3 -/packages?q=log4net.Ext.Json,log4net.Ext.Json,3 -/packages?q=log4net+,log4net,3 -/packages?q=log4net+1.2,log4net 1.2,3 -/packages?q=log4net+appender,log4net appender,3 -/packages?q=Log4NetAdapter,Log4NetAdapter,3 -/packages?q=logexptert,logexptert,3 -"/packages?q=logger,&page=23","logger,",3 -/packages?q=logging,logging,3 -/packages?q=logging&page=5,logging,3 -/packages?q=Logging&page=77,Logging,3 -/packages?q=LoggingServer,LoggingServer,3 -/packages?q=login,login,3 -/packages?q=login&page=2,login,3 -/packages?q=login+form,login form,3 -/packages?q=logix,logix,3 -/packages?q=loomo,loomo,3 -/packages?q=loopback,loopback,3 -/packages?q=Luabind,Luabind,3 -/packages?q=lucene.net&page=5,lucene.net,3 -/packages?q=Luhn,Luhn,3 -/packages?q=lynicon,lynicon,3 -/packages?q=lz4,lz4,3 -"/packages?q=lzma,","lzma,",3 -/packages?q=LZMA&prerel=false,LZMA,3 -/packages?q=MachinaTrader,MachinaTrader,3 -/packages?q=machine-learning,machine-learning,3 -/packages?q=maching+learning,maching learning,3 -/packages?q=Mads Kristensen,Mads Kristensen,3 -/packages?q=magic,magic,3 -/packages?q=magic+Onion,magic Onion,3 -/packages?q=Magick.NET,Magick.NET,3 -/packages?q=magicknet,magicknet,3 -/packages?q=Magnifier,Magnifier,3 -/packages?q=Mah+apps+metro,Mah apps metro,3 -/packages?q=MahApps.Metro.IconPacks,MahApps.Metro.IconPacks,3 -/packages?q=mail.net,mail.net,3 -/packages?q=mail&page=3,mail,3 -/packages?q=MailChimp.Net.V3,MailChimp.Net.V3,3 -/packages?q=mailerlite&sortOrder=package-download-count,mailerlite,3 -/packages?q=Mailkit,Mailkit,3 -/packages?q=Malcolm Crowe,Malcolm Crowe,3 -/packages?q=Managed&page=11,Managed,3 -/packages?q=managed&page=13,managed,3 -/packages?q=managedcuda+netstandard,managedcuda netstandard,3 -/packages?q=ManagedCuda+NETStandard,ManagedCuda NETStandard,3 -/packages?q=Mandrill,Mandrill,3 -/packages?q=manifest,manifest,3 -"/packages?q=map,&sortOrder=relevance&page=2&prerelease=False","map,",3 -/packages?q=mapbox,mapbox,3 -/packages?q=mapbox&sortOrder=package-download-count,mapbox,3 -/packages?q=mapper&page=2,mapper,3 -/packages?q=mapping,mapping,3 -/packages?q=maps,maps,3 -/packages?q=Maps&page=7,Maps,3 -/packages?q=mariadb+connector,mariadb connector,3 -/packages?q=MarkdownGenerator,MarkdownGenerator,3 -/packages?q=marketing,marketing,3 -/packages?q=marketplace,marketplace,3 -/packages?q=markov,markov,3 -/packages?q=marqmetrix,marqmetrix,3 -/packages?q=mask&page=1,mask,3 -/packages?q=mask&page=2,mask,3 -/packages?q=MassTransit.Quartz,MassTransit.Quartz,3 -/packages?q=matErIAlDESIGN,matErIAlDESIGN,3 -/packages?q=MaterialDesignThemes,MaterialDesignThemes,3 -/packages?q=materialskin,materialskin,3 -/packages?q=mathematical,mathematical,3 -/packages?q=mathnet.numerics,mathnet.numerics,3 -/packages?q=MathParser,MathParser,3 -/packages?q=mathparser.org,mathparser.org,3 -/packages?q=MatrixFactorization+,MatrixFactorization,3 -/packages?q=Matt Hidinger&sortOrder=package-download-count&page=2,Matt Hidinger,3 -/packages?q=Max Toro Q.&sortOrder=package-download-count&page=2,Max Toro Q.,3 -/packages?q=McDonald Consulting,McDonald Consulting,3 -/packages?q=McMaster.Extensions.CommandLineUtils,McMaster.Extensions.CommandLineUtils,3 -/packages?q=MD5,MD5,3 -/packages?q=MDB+,MDB,3 -/packages?q=MDS-Tools,MDS-Tools,3 -/packages?q=MDX,MDX,3 -/packages?q=MEDIAELEMENT,MEDIAELEMENT,3 -/packages?q=mediaR,mediaR,3 -/packages?q=mediatr,mediatr,3 -/packages?q=MediatR,MediatR,3 -/packages?q=mediatr+dependancy+injection,mediatr dependancy injection,3 -/packages?q=megaphone&source=post_page---------------------------,megaphone,3 -/packages?q=membership,membership,3 -/packages?q=Membership,Membership,3 -/packages?q=membershipprovider,membershipprovider,3 -/packages?q=memolist,memolist,3 -/packages?q=memorycache,memorycache,3 -/packages?q=menu,menu,3 -/packages?q=MercadoPago,MercadoPago,3 -/packages?q=merge,merge,3 -/packages?q=message-bus,message-bus,3 -/packages?q=MethodTimer,MethodTimer,3 -/packages?q=Método+no+encontrado:+'System.Collections.Generic.Dictionary`2+NLog.Config.LoggingConfiguration.get_Variables()'.,Método no encontrado: 'System.Collections.Generic.Dictionary`2 NLog.Config.LoggingConfiguration.get_Variables()'.,3 -/packages?q=metrics&page=6,metrics,3 -/packages?q=metro,metro,3 -/packages?q=Michael Kennedy&page=3,Michael Kennedy,3 -/packages?q=micjahn,micjahn,3 -/packages?q=MicroFramework&page=1,MicroFramework,3 -/packages?q=microphone,microphone,3 -/packages?q=microsft+dependency+injection,microsft dependency injection,3 -/packages?q=microsoft,microsoft,3 -/packages?q=Microsoft ASP.NET WebHooks Receiver&page=103,Microsoft ASP.NET WebHooks Receiver,3 -/packages?q=Microsoft ASP.NET WebHooks Receiver&page=353,Microsoft ASP.NET WebHooks Receiver,3 -/packages?q=Microsoft ASP.NET WebHooks Receiver&page=411,Microsoft ASP.NET WebHooks Receiver,3 -/packages?q=Microsoft ASP.NET WebHooks Receiver&page=92,Microsoft ASP.NET WebHooks Receiver,3 -/packages?q=Microsoft Corporation&page=70,Microsoft Corporation,3 -/packages?q=Microsoft ECO&page=60,Microsoft ECO,3 -/packages?q=microsoft.,microsoft.,3 -/packages?q=Microsoft.Activities,Microsoft.Activities,3 -/packages?q=Microsoft.AnalysisServices.AdomdClient,Microsoft.AnalysisServices.AdomdClient,3 -/packages?q=Microsoft.ApplicationInsights.DependencyCollector,Microsoft.ApplicationInsights.DependencyCollector,3 -/packages?q=Microsoft.ApplicationInsights.Web,Microsoft.ApplicationInsights.Web,3 -/packages?q=Microsoft.ApplicationServer.Caching,Microsoft.ApplicationServer.Caching,3 -/packages?q=Microsoft.AspNet.Cors,Microsoft.AspNet.Cors,3 -/packages?q=Microsoft.Aspnet.Identity,Microsoft.Aspnet.Identity,3 -/packages?q=Microsoft.AspNet.Identity.Core+2.2.1,Microsoft.AspNet.Identity.Core 2.2.1,3 -/packages?q=Microsoft.AspNet.Mvc,Microsoft.AspNet.Mvc,3 -/packages?q=Microsoft.AspNet.Razor,Microsoft.AspNet.Razor,3 -/packages?q=Microsoft.AspNet.Scaffolding.Mvc,Microsoft.AspNet.Scaffolding.Mvc,3 -/packages?q=Microsoft.AspNet.Scaffolding.Webforms.0.1.0-pre,Microsoft.AspNet.Scaffolding.Webforms.0.1.0-pre,3 -/packages?q=Microsoft.AspNet.ScriptManager.WebForms,Microsoft.AspNet.ScriptManager.WebForms,3 -/packages?q=Microsoft.AspNet.SignalR.Client.Connection,Microsoft.AspNet.SignalR.Client.Connection,3 -/packages?q=Microsoft.AspNet.WebApi.Core.5.2.6,Microsoft.AspNet.WebApi.Core.5.2.6,3 -/packages?q=Microsoft.AspNet.WebHelpers,Microsoft.AspNet.WebHelpers,3 -/packages?q=Microsoft.AspNet.WebHooks.Receivers.Salesforce,Microsoft.AspNet.WebHooks.Receivers.Salesforce,3 -/packages?q=microsoft.aspnetcore.all,microsoft.aspnetcore.all,3 -/packages?q=Microsoft.AspNetCore.App+,Microsoft.AspNetCore.App,3 -/packages?q=Microsoft.aspNETCore.authentication.ab,Microsoft.aspNETCore.authentication.ab,3 -/packages?q=Microsoft.AspNetCore.Authentication.OpenIdConnect,Microsoft.AspNetCore.Authentication.OpenIdConnect,3 -/packages?q=Microsoft.AspNetCore.Cors,Microsoft.AspNetCore.Cors,3 -/packages?q=Microsoft.AspNetCore.Diagnostics,Microsoft.AspNetCore.Diagnostics,3 -/packages?q=Microsoft.AspNetCore.EntityFrameworkCore.Proxies,Microsoft.AspNetCore.EntityFrameworkCore.Proxies,3 -/packages?q=Microsoft.AspNetCore.Hosting.WindowsServiecs,Microsoft.AspNetCore.Hosting.WindowsServiecs,3 -/packages?q=Microsoft.AspNetCore.Http.HttpRequest,Microsoft.AspNetCore.Http.HttpRequest,3 -/packages?q=Microsoft.AspNetCore.HttpsPolicy,Microsoft.AspNetCore.HttpsPolicy,3 -/packages?q=Microsoft.AspNetCore.Identity,Microsoft.AspNetCore.Identity,3 -/packages?q=microsoft.aspnetcore.identity.entityframeworkcore,microsoft.aspnetcore.identity.entityframeworkcore,3 -/packages?q=microsoft.aspnetcore.mvc,microsoft.aspnetcore.mvc,3 -/packages?q=Microsoft.AspNetCore.Mvc.Abstractions,Microsoft.AspNetCore.Mvc.Abstractions,3 -/packages?q=Microsoft.AspNetCore.Mvc.Api.Analyzers,Microsoft.AspNetCore.Mvc.Api.Analyzers,3 -/packages?q=Microsoft.AspNetCore.Mvc.ApiExplorer,Microsoft.AspNetCore.Mvc.ApiExplorer,3 -/packages?q=Microsoft.AspNetCore.Mvc.Core,Microsoft.AspNetCore.Mvc.Core,3 -/packages?q=Microsoft.AspNetCore.Mvc.Cors,Microsoft.AspNetCore.Mvc.Cors,3 -/packages?q=Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation,Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation,3 -/packages?q=Microsoft.AspNetCore.Mvc.ViewFeatures,Microsoft.AspNetCore.Mvc.ViewFeatures,3 -/packages?q=Microsoft.AspNetCore.OData,Microsoft.AspNetCore.OData,3 -/packages?q=Microsoft.AspNetCore.Razor.Design,Microsoft.AspNetCore.Razor.Design,3 -/packages?q=Microsoft.AspNetCore.Server.HttpSys,Microsoft.AspNetCore.Server.HttpSys,3 -/packages?q=Microsoft.AspNetCore.SignalR.Protocols.MessagePack,Microsoft.AspNetCore.SignalR.Protocols.MessagePack,3 -/packages?q=Microsoft.AspNetCore.SpaTemplates,Microsoft.AspNetCore.SpaTemplates,3 -/packages?q=Microsoft.AspNetCore.Test,Microsoft.AspNetCore.Test,3 -/packages?q=Microsoft.AspNetCore.TestHost,Microsoft.AspNetCore.TestHost,3 -/packages?q=Microsoft.AspNetCore.WebUtilities,Microsoft.AspNetCore.WebUtilities,3 -/packages?q=microsoft.azure,microsoft.azure,3 -/packages?q=Microsoft.Azure.CognitiveServices,Microsoft.Azure.CognitiveServices,3 -/packages?q=Microsoft.Azure.CognitiveServices.Vision.Face,Microsoft.Azure.CognitiveServices.Vision.Face,3 -/packages?q=microsoft.azure.common,microsoft.azure.common,3 -/packages?q=microsoft.azure.cosmos.table,microsoft.azure.cosmos.table,3 -/packages?q=Microsoft.Azure.Cosmos.Table,Microsoft.Azure.Cosmos.Table,3 -/packages?q=Microsoft.Azure.Devices.Client,Microsoft.Azure.Devices.Client,3 -/packages?q=microsoft.azure.documentdb,microsoft.azure.documentdb,3 -/packages?q=Microsoft.Azure.DocumentDb,Microsoft.Azure.DocumentDb,3 -/packages?q=Microsoft.Azure.DocumentDB.Core,Microsoft.Azure.DocumentDB.Core,3 -/packages?q=Microsoft.Azure.Documents.ServiceInterop.,Microsoft.Azure.Documents.ServiceInterop.,3 -/packages?q=microsoft.azure.functions.extensions.dependencyinjection,microsoft.azure.functions.extensions.dependencyinjection,3 -/packages?q=Microsoft.Azure.Functions.Extensions.DependencyInjection,Microsoft.Azure.Functions.Extensions.DependencyInjection,3 -/packages?q=Microsoft.Azure.KeyVault.Core,Microsoft.Azure.KeyVault.Core,3 -/packages?q=Microsoft.Azure.Management.DataLake.Analytics,Microsoft.Azure.Management.DataLake.Analytics,3 -/packages?q=Microsoft.Azure.Management.Fluent,Microsoft.Azure.Management.Fluent,3 -/packages?q=Microsoft.Azure.Management.HDInsight,Microsoft.Azure.Management.HDInsight,3 -/packages?q=microsoft.azure.management.resourcemanager,microsoft.azure.management.resourcemanager,3 -/packages?q=Microsoft.Azure.Mobile.Client,Microsoft.Azure.Mobile.Client,3 -/packages?q=Microsoft.Azure.Services.AppAuthentication,Microsoft.Azure.Services.AppAuthentication,3 -/packages?q=Microsoft.Azure.SignalR.AspNet,Microsoft.Azure.SignalR.AspNet,3 -/packages?q=Microsoft.Azure.Storage,Microsoft.Azure.Storage,3 -/packages?q=Microsoft.Azure.WebJobs.Extensions,Microsoft.Azure.WebJobs.Extensions,3 -/packages?q=Microsoft.Bcl.AsyncInterfaces,Microsoft.Bcl.AsyncInterfaces,3 -/packages?q=Microsoft.Bot.Builder.Abstractions;,Microsoft.Bot.Builder.Abstractions;,3 -/packages?q=Microsoft.Bot.Builder.Integration.AspNet.Core,Microsoft.Bot.Builder.Integration.AspNet.Core,3 -/packages?q=Microsoft.Bot.Builder.Integration.AspNet.WebApi.,Microsoft.Bot.Builder.Integration.AspNet.WebApi.,3 -/packages?q=Microsoft.Bot.Builder.Teams,Microsoft.Bot.Builder.Teams,3 -/packages?q=microsoft.chakracore.vc140,microsoft.chakracore.vc140,3 -/packages?q=Microsoft.Charp,Microsoft.Charp,3 -/packages?q=Microsoft.Cis.Monitoring.Events,Microsoft.Cis.Monitoring.Events,3 -/packages?q=microsoft.codeanalysis.,microsoft.codeanalysis.,3 -/packages?q=Microsoft.CodeAnalysis.FlowAnalysis.Utilities,Microsoft.CodeAnalysis.FlowAnalysis.Utilities,3 -/packages?q=Microsoft.CodeAnalysis.FxCopAnalyzers,Microsoft.CodeAnalysis.FxCopAnalyzers,3 -/packages?q=Microsoft.CodeDom.Providers.DotNetCompilerPlatform,Microsoft.CodeDom.Providers.DotNetCompilerPlatform,3 -/packages?q=Microsoft.CommonSchema,Microsoft.CommonSchema,3 -/packages?q=Microsoft.Composition,Microsoft.Composition,3 -/packages?q=Microsoft.Configuration.ConfigurationBuilders.Base,Microsoft.Configuration.ConfigurationBuilders.Base,3 -/packages?q=Microsoft.Configuration.ConfigurationBuilders.Json,Microsoft.Configuration.ConfigurationBuilders.Json,3 -/packages?q=Microsoft.Core.App,Microsoft.Core.App,3 -/packages?q=microsoft.csharp.runtimebinder,microsoft.csharp.runtimebinder,3 -/packages?q=microsoft.data,microsoft.data,3 -/packages?q=Microsoft.Data.Services.Client,Microsoft.Data.Services.Client,3 -/packages?q=Microsoft.Data.Sqlclient,Microsoft.Data.Sqlclient,3 -/packages?q=Microsoft.Data.SqlClient,Microsoft.Data.SqlClient,3 -/packages?q=Microsoft.Data.SqlLite,Microsoft.Data.SqlLite,3 -/packages?q=Microsoft.Data.Tools.Msbuild,Microsoft.Data.Tools.Msbuild,3 -/packages?q=microsoft.diagnostics,microsoft.diagnostics,3 -/packages?q=Microsoft.Diagnostics.Tracing,Microsoft.Diagnostics.Tracing,3 -/packages?q=Microsoft.Dotnet.arcade.sdk,Microsoft.Dotnet.arcade.sdk,3 -/packages?q=Microsoft.DotNet.Build.Tasks.Packaging,Microsoft.DotNet.Build.Tasks.Packaging,3 -/packages?q=Microsoft.DotNet.BuildTools,Microsoft.DotNet.BuildTools,3 -/packages?q=Microsoft.DotNet.Helix.Sdk,Microsoft.DotNet.Helix.Sdk,3 -/packages?q=microsoft.entiryframeworkcore,microsoft.entiryframeworkcore,3 -/packages?q=Microsoft.EntityFramework,Microsoft.EntityFramework,3 -/packages?q=Microsoft.EntityFrameworkCore.,Microsoft.EntityFrameworkCore.,3 -/packages?q=Microsoft.EntityFrameworkCore.Att,Microsoft.EntityFrameworkCore.Att,3 -/packages?q=microsoft.EntityFrameworkCore.Design,microsoft.EntityFrameworkCore.Design,3 -/packages?q=Microsoft.EntityFrameworkCore.Desing,Microsoft.EntityFrameworkCore.Desing,3 -/packages?q=microsoft.entityframeworkcore.inmemory,microsoft.entityframeworkcore.inmemory,3 -/packages?q=Microsoft.EntityFrameworkCore.Migrations,Microsoft.EntityFrameworkCore.Migrations,3 -/packages?q=Microsoft.EntityFrameworkCore.proxies,Microsoft.EntityFrameworkCore.proxies,3 -/packages?q=Microsoft.EntityFrameworkCore.Relational,Microsoft.EntityFrameworkCore.Relational,3 -/packages?q=Microsoft.EntityFrameworkCore.Sqlite+2.1.1,Microsoft.EntityFrameworkCore.Sqlite 2.1.1,3 -/packages?q=Microsoft.EntityFrameworkCore.sqlserver,Microsoft.EntityFrameworkCore.sqlserver,3 -/packages?q=Microsoft.EntityFrameworkCore.SqlServer.Design,Microsoft.EntityFrameworkCore.SqlServer.Design,3 -/packages?q=microsoft.entityframeworkcore.tools,microsoft.entityframeworkcore.tools,3 -/packages?q=Microsoft.EntityFrameworkCore.Tools+,Microsoft.EntityFrameworkCore.Tools,3 -/packages?q=Microsoft.Expression.Interactions,Microsoft.Expression.Interactions,3 -/packages?q=Microsoft.Exten,Microsoft.Exten,3 -/packages?q=microsoft.extension.configuration,microsoft.extension.configuration,3 -/packages?q=Microsoft.Extensions.ApiDescription,Microsoft.Extensions.ApiDescription,3 -/packages?q=microsoft.extensions.apidescription.client,microsoft.extensions.apidescription.client,3 -/packages?q=Microsoft.Extensions.ApiDescription.Client,Microsoft.Extensions.ApiDescription.Client,3 -/packages?q=microsoft.extensions.caching.,microsoft.extensions.caching.,3 -/packages?q=Microsoft.Extensions.Caching.Memory,Microsoft.Extensions.Caching.Memory,3 -/packages?q=microsoft.Extensions.Configuration,microsoft.Extensions.Configuration,3 -/packages?q=Microsoft.Extensions.Configuration.com,Microsoft.Extensions.Configuration.com,3 -/packages?q=Microsoft.Extensions.Configuration.Json,Microsoft.Extensions.Configuration.Json,3 -/packages?q=microsoft.extensions.configuration.zookeeper,microsoft.extensions.configuration.zookeeper,3 -/packages?q=microsoft.extensions.de,microsoft.extensions.de,3 -/packages?q=Microsoft.Extensions.DependencyInjection.Abstractions,Microsoft.Extensions.DependencyInjection.Abstractions,3 -/packages?q=Microsoft.Extensions.DependencyInjection.Abstractions+2.2.0+,Microsoft.Extensions.DependencyInjection.Abstractions 2.2.0,3 -/packages?q=Microsoft.Extensions.FileProviders,Microsoft.Extensions.FileProviders,3 -/packages?q=microsoft.extensions.hosting.abstractions,microsoft.extensions.hosting.abstractions,3 -/packages?q=Microsoft.Extensions.Http,Microsoft.Extensions.Http,3 -/packages?q=microsoft.extensions.logging,microsoft.extensions.logging,3 -/packages?q=Microsoft.extensions.logging,Microsoft.extensions.logging,3 -/packages?q=microsoft.extensions.logging.applicationinsights,microsoft.extensions.logging.applicationinsights,3 -/packages?q=Microsoft.Extensions.Logging.ApplicationInsights,Microsoft.Extensions.Logging.ApplicationInsights,3 -/packages?q=Microsoft.Extensions.Logging.Console,Microsoft.Extensions.Logging.Console,3 -/packages?q=Microsoft.Extensions.Logging.Log4Net.AspNetcore,Microsoft.Extensions.Logging.Log4Net.AspNetcore,3 -/packages?q=Microsoft.Extensions.Logging.Log4Net.AspNetCore,Microsoft.Extensions.Logging.Log4Net.AspNetCore,3 -/packages?q=microsoft.extensions.options,microsoft.extensions.options,3 -/packages?q=Microsoft.Extensions.Options,Microsoft.Extensions.Options,3 -/packages?q=microsoft.extensions.options.configurationextensions,microsoft.extensions.options.configurationextensions,3 -/packages?q=Microsoft.Extensions.Options.ConfigurationExtensions,Microsoft.Extensions.Options.ConfigurationExtensions,3 -/packages?q=Microsoft.Extensions.Primitives,Microsoft.Extensions.Primitives,3 -/packages?q=Microsoft.Graph.Auth,Microsoft.Graph.Auth,3 -/packages?q=microsoft.graph.core,microsoft.graph.core,3 -/packages?q=Microsoft.Identity.ServerAuthorization,Microsoft.Identity.ServerAuthorization,3 -/packages?q=Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext,Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext,3 -/packages?q=Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms,Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms,3 -/packages?q=Microsoft.IdentityModel.Logging,Microsoft.IdentityModel.Logging,3 -/packages?q=Microsoft.IdentityModel.Protocols.OpenIdConnect,Microsoft.IdentityModel.Protocols.OpenIdConnect,3 -/packages?q=Microsoft.Intune.MAM.Xamarin,Microsoft.Intune.MAM.Xamarin,3 -/packages?q=Microsoft.Management.Infrastructure,Microsoft.Management.Infrastructure,3 -/packages?q=microsoft.net.compilers,microsoft.net.compilers,3 -/packages?q=Microsoft.Net.Compilers,Microsoft.Net.Compilers,3 -/packages?q=Microsoft.Net.Http.Headers,Microsoft.Net.Http.Headers,3 -/packages?q=microsoft.net.sdk,microsoft.net.sdk,3 -/packages?q=microsoft.net.sdk.functions,microsoft.net.sdk.functions,3 -/packages?q=Microsoft.NET.Sdk.Web,Microsoft.NET.Sdk.Web,3 -/packages?q=Microsoft.NetCore.*,Microsoft.NetCore.*,3 -/packages?q=Microsoft.NETCore.DotNetHostPolicy,Microsoft.NETCore.DotNetHostPolicy,3 -/packages?q=Microsoft.NETCore.DotNetHostResolver,Microsoft.NETCore.DotNetHostResolver,3 -/packages?q=Microsoft.NetCore.Platforms,Microsoft.NetCore.Platforms,3 -/packages?q=microsoft.netfx20,microsoft.netfx20,3 -/packages?q=Microsoft.Office.Interop.Excel,Microsoft.Office.Interop.Excel,3 -/packages?q=microsoft.office.intterop,microsoft.office.intterop,3 -/packages?q=microsoft.orleans,microsoft.orleans,3 -/packages?q=Microsoft.Orleans.Clustering.,Microsoft.Orleans.Clustering.,3 -/packages?q=Microsoft.Owin,Microsoft.Owin,3 -/packages?q=microsoft.owin.cors,microsoft.owin.cors,3 -/packages?q=Microsoft.Owin.Cors,Microsoft.Owin.Cors,3 -/packages?q=Microsoft.Owin.Host.SystemWeb,Microsoft.Owin.Host.SystemWeb,3 -/packages?q=microsoft.owin.security,microsoft.owin.security,3 -/packages?q=Microsoft.Owin.Security,Microsoft.Owin.Security,3 -/packages?q=Microsoft.Owin.Security.jwt,Microsoft.Owin.Security.jwt,3 -/packages?q=microsoft.owin.security.oauth\,microsoft.owin.security.oauth\,3 -/packages?q=Microsoft.Owin.Security.OpenIdConnect,Microsoft.Owin.Security.OpenIdConnect,3 -/packages?q=microsoft.PowerBi.api,microsoft.PowerBi.api,3 -/packages?q=Microsoft.PowerShell.Test.SDK,Microsoft.PowerShell.Test.SDK,3 -/packages?q=Microsoft.Practices.Unity;,Microsoft.Practices.Unity;,3 -/packages?q=Microsoft.Report.Viewer+14.0.0,Microsoft.Report.Viewer 14.0.0,3 -/packages?q=Microsoft.Reporting.WinForms.LocalProcessingException'+occurred+in+Microsoft.ReportViewer.WinForms.dll,Microsoft.Reporting.WinForms.LocalProcessingException' occurred in Microsoft.ReportViewer.WinForms.dll,3 -/packages?q=Microsoft.ReportViewer.WinForms,Microsoft.ReportViewer.WinForms,3 -/packages?q=Microsoft.Rest.ClientRuntime,Microsoft.Rest.ClientRuntime,3 -/packages?q=microsoft.sdk.expression.blend,microsoft.sdk.expression.blend,3 -/packages?q=microsoft.server.dac,microsoft.server.dac,3 -/packages?q=microsoft.servicebus,microsoft.servicebus,3 -/packages?q=microsoft.servicefabric,microsoft.servicefabric,3 -/packages?q=microsoft.servicefabric.fabricttransport,microsoft.servicefabric.fabricttransport,3 -/packages?q=Microsoft.ServiceFabric.Services,Microsoft.ServiceFabric.Services,3 -/packages?q=Microsoft.SharePoint,Microsoft.SharePoint,3 -/packages?q=Microsoft.SharePoint.Library,Microsoft.SharePoint.Library,3 -/packages?q=microsoft.sourcelink.common,microsoft.sourcelink.common,3 -/packages?q=microsoft.sqlserver.dac+microsoft.sqlserver.dacfx,microsoft.sqlserver.dac microsoft.sqlserver.dacfx,3 -/packages?q=Microsoft.SqlServer.SqlManagementObjects,Microsoft.SqlServer.SqlManagementObjects,3 -/packages?q=Microsoft.TeamFoundation.WorkItemTracking.Proxy,Microsoft.TeamFoundation.WorkItemTracking.Proxy,3 -/packages?q=Microsoft.TeamFoundationServer,Microsoft.TeamFoundationServer,3 -/packages?q=Microsoft.Threading.Tasks,Microsoft.Threading.Tasks,3 -/packages?q=Microsoft.Toolkit,Microsoft.Toolkit,3 -/packages?q=Microsoft.Toolkit.Wpf.UI.Controls.WebView,Microsoft.Toolkit.Wpf.UI.Controls.WebView,3 -/packages?q=microsoft.typescript.msbuild,microsoft.typescript.msbuild,3 -/packages?q=Microsoft.VisualBasic.Devices,Microsoft.VisualBasic.Devices,3 -/packages?q=Microsoft.VisualStudio.Azure.Fabric.MSBuild,Microsoft.VisualStudio.Azure.Fabric.MSBuild,3 -/packages?q=microsoft.visualstudio.commanding,microsoft.visualstudio.commanding,3 -/packages?q=Microsoft.VisualStudio.LanguageServer,Microsoft.VisualStudio.LanguageServer,3 -/packages?q=Microsoft.VisualStudio.QualityTools.UnitTestFramework,Microsoft.VisualStudio.QualityTools.UnitTestFramework,3 -/packages?q=Microsoft.VisualStudio.TestPlatform.ObjectModel&sortOrder=package-download-count,Microsoft.VisualStudio.TestPlatform.ObjectModel,3 -/packages?q=microsoft.visualstudio.web.codegeneration.design,microsoft.visualstudio.web.codegeneration.design,3 -/packages?q=Microsoft.Web.Administration,Microsoft.Web.Administration,3 -/packages?q=Microsoft.Web.RedisSessionStateProvider,Microsoft.Web.RedisSessionStateProvider,3 -/packages?q=Microsoft.Win32.Primitives,Microsoft.Win32.Primitives,3 -/packages?q=Microsoft.Win32.Registry,Microsoft.Win32.Registry,3 -/packages?q=Microsoft.Windows.Compatibility,Microsoft.Windows.Compatibility,3 -/packages?q=Microsoft.Windows.Design.Extensibility,Microsoft.Windows.Design.Extensibility,3 -/packages?q=Microsoft.WindowsAzure.ConfigurationManager,Microsoft.WindowsAzure.ConfigurationManager,3 -/packages?q=Microsoft.WindowsAzure.Management,Microsoft.WindowsAzure.Management,3 -/packages?q=Microsoft.WindowsAzure.MediaServices.Client,Microsoft.WindowsAzure.MediaServices.Client,3 -/packages?q=Microsoft.WindowsAzure.Storage,Microsoft.WindowsAzure.Storage,3 -/packages?q=microsoft.xrm.sdk,microsoft.xrm.sdk,3 -/packages?q=Microsoft&page=177,Microsoft,3 -/packages?q=microsoft&page=185,microsoft,3 -/packages?q=Microsoft+ASP.NET+WebHooks+Receiver,Microsoft ASP.NET WebHooks Receiver,3 -/packages?q=microsoft+compilers,microsoft compilers,3 -/packages?q=Microsoft+cross+origin+support,Microsoft cross origin support,3 -/packages?q=Microsoft+EntityFrame'workCore.Tools,Microsoft EntityFrame'workCore.Tools,3 -/packages?q=microsoft+extensions,microsoft extensions,3 -/packages?q=microsoft+logging,microsoft logging,3 -/packages?q=microsoft+office,microsoft office,3 -/packages?q=microsoft+owin,microsoft owin,3 -/packages?q=Microsoft+Shell+Controls+And+Automation+,Microsoft Shell Controls And Automation,3 -/packages?q=microsoft+visual+studio,microsoft visual studio,3 -/packages?q=Microsoft+web+redissessionstateprovider,Microsoft web redissessionstateprovider,3 -/packages?q=MicrosoftWin32.SystemEvents,MicrosoftWin32.SystemEvents,3 -/packages?q=MigraDoc,MigraDoc,3 -/packages?q=migration,migration,3 -/packages?q=migrationreport,migrationreport,3 -/packages?q=Mindrouting Inc.&page=28,Mindrouting Inc.,3 -/packages?q=Minecraft+pe,Minecraft pe,3 -/packages?q=miniprofiler,miniprofiler,3 -"/packages?q=MiniProfiler,&page=4","MiniProfiler,",3 -/packages?q=MiniProfiler+owner:StackExchange,MiniProfiler owner:StackExchange,3 -/packages?q=MISP,MISP,3 -/packages?q=mm7,mm7,3 -/packages?q=Mocking,Mocking,3 -/packages?q=ModalContentPresenter,ModalContentPresenter,3 -/packages?q=modem,modem,3 -/packages?q=Modern,Modern,3 -/packages?q=modulus,modulus,3 -/packages?q=moles,moles,3 -/packages?q=mollie&sortOrder=package-download-count,mollie,3 -/packages?q=MomDevelop,MomDevelop,3 -/packages?q=moment,moment,3 -/packages?q=Moment,Moment,3 -/packages?q=money,money,3 -/packages?q=mongo+helper,mongo helper,3 -/packages?q=mongocsharpdriver,mongocsharpdriver,3 -/packages?q=MongoDB.Bson,MongoDB.Bson,3 -/packages?q=mongorepository,mongorepository,3 -/packages?q=Monitor.Fluent,Monitor.Fluent,3 -/packages?q=monkeycache,monkeycache,3 -/packages?q=Mono,Mono,3 -/packages?q=Mono.Reflection,Mono.Reflection,3 -/packages?q=monogame,monogame,3 -/packages?q=morelinq c#sources&page=166,morelinq c,3 -/packages?q=Morten Nielsen,Morten Nielsen,3 -/packages?q=MouseKeyHook,MouseKeyHook,3 -/packages?q=mq,mq,3 -/packages?q=MQ,MQ,3 -/packages?q=MQTTnet.AspNetCore,MQTTnet.AspNetCore,3 -/packages?q=MS+SQL+Server+Express,MS SQL Server Express,3 -/packages?q=MSBuild.Community.Tasks.Zip,MSBuild.Community.Tasks.Zip,3 -/packages?q=MSBuildLocator,MSBuildLocator,3 -/packages?q=msc,msc,3 -"/packages?q=mscorlib,+Version=4.0.0.0","mscorlib, Version=4.0.0.0",3 -/packages?q=MSG,MSG,3 -/packages?q=msg&page=3,msg,3 -/packages?q=MsgPack,MsgPack,3 -/packages?q=mshtml,mshtml,3 -/packages?q=msi,msi,3 -/packages?q=msmq+nservicebus,msmq nservicebus,3 -/packages?q=Mspec,Mspec,3 -/packages?q=msserver,msserver,3 -/packages?q=MSTEST,MSTEST,3 -/packages?q=mstest.test,mstest.test,3 -/packages?q=MSTest.TestAdapter,MSTest.TestAdapter,3 -/packages?q=MSTest.TestFramework,MSTest.TestFramework,3 -/packages?q=MugenMvvmToolkit https://mugenmvvmtoolkit.readme.io/docs/getting-started,MugenMvvmToolkit https://mugenmvvmtoolkit.readme.io/docs/getting-started,3 -/packages?q=MulitTouch+Windows+Forms,MulitTouch Windows Forms,3 -/packages?q=MultiMap,MultiMap,3 -/packages?q=music,music,3 -/packages?q=Music,Music,3 -/packages?q=Mustache,Mustache,3 -/packages?q=mvc.grid,mvc.grid,3 -/packages?q=Mvc&page=151,Mvc,3 -/packages?q=mvcsitemapprovider.mvc,mvcsitemapprovider.mvc,3 -/packages?q=mvcsitemapprovider.mvc*.di&prerelease=&sortOrder=package-download-count,mvcsitemapprovider.mvc*.di,3 -/packages?q=mvgrid.net.ajax,mvgrid.net.ajax,3 -/packages?q=MVVM&page=31,MVVM,3 -/packages?q=Mvvm&page=40,Mvvm,3 -/packages?q=mvvmcross,mvvmcross,3 -/packages?q=MvvmCross,MvvmCross,3 -/packages?q=MvvmCross Plugin&page=22,MvvmCross Plugin,3 -/packages?q=MvvmCross&page=11,MvvmCross,3 -/packages?q=mvvmvalidation,mvvmvalidation,3 -/packages?q=mvvmzero,mvvmzero,3 -/packages?q=mws,mws,3 -/packages?q=mysql-server,mysql-server,3 -/packages?q=mysql.data,mysql.data,3 -/packages?q=mysql+auth,mysql auth,3 -/packages?q=mysql+core,mysql core,3 -/packages?q=mysqlbackup.net,mysqlbackup.net,3 -/packages?q=MySqlConnector,MySqlConnector,3 -/packages?q=MyUmbracoPropertyEditor,MyUmbracoPropertyEditor,3 -/packages?q=nagedobjects,nagedobjects,3 -/packages?q=naked+objects,naked objects,3 -/packages?q=Named+Pipe,Named Pipe,3 -/packages?q=namegenerator&sortOrder=package-download-count,namegenerator,3 -/packages?q=Namotion.Reflection,Namotion.Reflection,3 -/packages?q=nancy.json,nancy.json,3 -/packages?q=nancy.viewengines,nancy.viewengines,3 -/packages?q=nancyfx,nancyfx,3 -/packages?q=Nathan Totten (Unofficial Package of Microsoft Code Contracts)&page=108,Nathan Totten (Unofficial Package of Microsoft Code Contracts),3 -/packages?q=Nathan Totten (Unofficial Package of Microsoft Code Contracts)&page=506,Nathan Totten (Unofficial Package of Microsoft Code Contracts),3 -/packages?q=Nathan Totten (Unofficial Package of Microsoft Code Contracts)&page=771,Nathan Totten (Unofficial Package of Microsoft Code Contracts),3 -/packages?q=Nathan Totten (Unofficial Package of Microsoft Code Contracts)&page=788,Nathan Totten (Unofficial Package of Microsoft Code Contracts),3 -/packages?q=Nathan Totten (Unofficial Package of Microsoft Code Contracts)&page=798,Nathan Totten (Unofficial Package of Microsoft Code Contracts),3 -/packages?q=Nathan Totten (Unofficial Package of Microsoft Code Contracts)&page=801,Nathan Totten (Unofficial Package of Microsoft Code Contracts),3 -/packages?q=Nathan Totten (Unofficial Package of Microsoft Code Contracts)&page=820,Nathan Totten (Unofficial Package of Microsoft Code Contracts),3 -/packages?q=NATS,NATS,3 -/packages?q=NAudio,NAudio,3 -/packages?q=navigationmenu,navigationmenu,3 -/packages?q=nbuilder,nbuilder,3 -/packages?q=ncache,ncache,3 -/packages?q=NCache,NCache,3 -/packages?q=ncalc,ncalc,3 -/packages?q=NCO,NCO,3 -/packages?q=NDepend,NDepend,3 -/packages?q=Nebula Applications&page=1,Nebula Applications,3 -/packages?q=Nemiro.OAuth,Nemiro.OAuth,3 -/packages?q=nerdbank,nerdbank,3 -/packages?q=nest,nest,3 -/packages?q=net-snmp,net-snmp,3 -/packages?q=Net&page=105,Net,3 -/packages?q=net&page=267,net,3 -/packages?q=Net&page=307,Net,3 -/packages?q=Net&page=542,Net,3 -/packages?q=net+core+print+object,net core print object,3 -/packages?q=net+standard+library,net standard library,3 -/packages?q=netcore+app,netcore app,3 -/packages?q=NetTopologySuite.IO,NetTopologySuite.IO,3 -/packages?q=News,News,3 -/packages?q=newton,newton,3 -/packages?q=Newton,Newton,3 -/packages?q=newton+json,newton json,3 -/packages?q=newton+soft,newton soft,3 -/packages?q=newtonjson+,newtonjson,3 -/packages?q=Newtonsoft.Json.11.0.2,Newtonsoft.Json.11.0.2,3 -/packages?q=Newtonsoft.Json.4.5.6,Newtonsoft.Json.4.5.6,3 -/packages?q=Newtonsoft.Json.JsonConvert,Newtonsoft.Json.JsonConvert,3 -/packages?q=newtonsoftjson,newtonsoftjson,3 -/packages?q=Newtown.Json,Newtown.Json,3 -/packages?q=nfc,nfc,3 -/packages?q=NHibernate,NHibernate,3 -/packages?q=NHibernate community&page=12,NHibernate community,3 -/packages?q=NHibernate Community&page=42,NHibernate Community,3 -/packages?q=NHibernate.Caches.Redis,NHibernate.Caches.Redis,3 -/packages?q=nhunspell+component,nhunspell component,3 -/packages?q=nickstrupat,nickstrupat,3 -/packages?q=Nicolas Gallagher & Jonathan Neal=&page=23,Nicolas Gallagher,3 -/packages?q=Ninject,Ninject,3 -/packages?q=nisocountries,nisocountries,3 -/packages?q=Nito.AsyncEx.Interop.WaitHandles,Nito.AsyncEx.Interop.WaitHandles,3 -/packages?q=Nivaes.Droid.Hdodenhof.CircleImageView,Nivaes.Droid.Hdodenhof.CircleImageView,3 -/packages?q=njson+schema,njson schema,3 -/packages?q=njsonschema.code,njsonschema.code,3 -/packages?q=nlipsum,nlipsum,3 -/packages?q=NLOg,NLOg,3 -/packages?q=NLog.,NLog.,3 -/packages?q=NLog.AuthenticationConfig,NLog.AuthenticationConfig,3 -/packages?q=nlog&sortOrder=package-download-count&page=6&prerelease=False,nlog,3 -/packages?q=nltk,nltk,3 -/packages?q=nmea,nmea,3 -/packages?q=NMock3,NMock3,3 -/packages?q=nmodbus,nmodbus,3 -/packages?q=node.js,node.js,3 -/packages?q=normalization,normalization,3 -/packages?q=normalize,normalize,3 -"/packages?q=notification,&page=11","notification,",3 -/packages?q=notification&page=4,notification,3 -/packages?q=notifications,notifications,3 -"/packages?q=notifications,","notifications,",3 -/packages?q=notifications&page=9,notifications,3 -/packages?q=npgsql&sortOrder=package-download-count,npgsql,3 -/packages?q=npm,npm,3 -/packages?q=NPOI,NPOI,3 -/packages?q=NServiceBus.Metrics.ServiceControl.Msmq,NServiceBus.Metrics.ServiceControl.Msmq,3 -/packages?q=nservicebus.nhibernate,nservicebus.nhibernate,3 -/packages?q=nsis,nsis,3 -/packages?q=nspec,nspec,3 -/packages?q=nsub,nsub,3 -/packages?q=Nsubstitute,Nsubstitute,3 -/packages?q=NSubstitute,NSubstitute,3 -/packages?q=nswag,nswag,3 -/packages?q=NSwag&prerel=false,NSwag,3 -/packages?q=NTS,NTS,3 -/packages?q=NTS+TopologySuite,NTS TopologySuite,3 -/packages?q=NuGet,NuGet,3 -/packages?q=nuget.,nuget.,3 -/packages?q=nuget.build.tasks.pack,nuget.build.tasks.pack,3 -/packages?q=NuGet.CommandLine,NuGet.CommandLine,3 -/packages?q=nuget.org+version,nuget.org version,3 -/packages?q=nuget.packaging,nuget.packaging,3 -/packages?q=NuGet.ProjectModel,NuGet.ProjectModel,3 -/packages?q=nuget+c#+cace,nuget c,3 -/packages?q=nuget+client+2.12,nuget client 2.12,3 -/packages?q=nuget+package+manager,nuget package manager,3 -/packages?q=NuGet+Provider,NuGet Provider,3 -/packages?q=nuget+viewer,nuget viewer,3 -/packages?q=nugetv4,nugetv4,3 -/packages?q=NUI,NUI,3 -/packages?q=nuke,nuke,3 -/packages?q=Null,Null,3 -/packages?q=nullfx,nullfx,3 -/packages?q=numbering,numbering,3 -"/packages?q=Numeric,","Numeric,",3 -/packages?q=numpy,numpy,3 -/packages?q=nunit-console,nunit-console,3 -/packages?q=nunit.core.interfaces,nunit.core.interfaces,3 -/packages?q=nunit.core.interfaces.dll,nunit.core.interfaces.dll,3 -/packages?q=nunit+adapter,nunit adapter,3 -/packages?q=nunit+console+runner,nunit console runner,3 -/packages?q=nunit+test+3adapter+,nunit test 3adapter,3 -/packages?q=nunit+test+adapter,nunit test adapter,3 -/packages?q=nunit3,nunit3,3 -/packages?q=NUnit3TestAdapter,NUnit3TestAdapter,3 -/packages?q=NUnitTestAdapter,NUnitTestAdapter,3 -/packages?q=nuproj,nuproj,3 -/packages?q=nuspec,nuspec,3 -/packages?q=Nustache.Core,Nustache.Core,3 -/packages?q=nwtonsoft,nwtonsoft,3 -/packages?q=OASIS,OASIS,3 -"/packages?q=oauth,&page=18","oauth,",3 -/packages?q=OAuth+JWT,OAuth JWT,3 -/packages?q=oauth2&page=19,oauth2,3 -/packages?q=objectdumper,objectdumper,3 -/packages?q=Obliteracy Dot Net&page=173,Obliteracy Dot Net,3 -/packages?q=Obliteracy Dot Net&page=80,Obliteracy Dot Net,3 -/packages?q=observablecollection,observablecollection,3 -/packages?q=OCR&page=4,OCR,3 -/packages?q=Octo,Octo,3 -/packages?q=octopack,octopack,3 -/packages?q=OctoPack,OctoPack,3 -/packages?q=octopus+platform,octopus platform,3 -/packages?q=ODBC&page=2,ODBC,3 -/packages?q=ODP.NET+Managed+Driver,ODP.NET Managed Driver,3 -/packages?q=Office UI Fabric,Office UI Fabric,3 -/packages?q=office.interop,office.interop,3 -/packages?q=office+core,office core,3 -/packages?q=OfficeApps.Model,OfficeApps.Model,3 -/packages?q=officedev,officedev,3 -/packages?q=officedevpnp,officedevpnp,3 -/packages?q=OfficeOpenXml,OfficeOpenXml,3 -/packages?q=OLAP&page=2,OLAP,3 -/packages?q=ole+dotnet+core,ole dotnet core,3 -/packages?q=OmniSharp.Extensions,OmniSharp.Extensions,3 -/packages?q=omnisharp.roslyn,omnisharp.roslyn,3 -/packages?q=onedrive,onedrive,3 -/packages?q=onionarch,onionarch,3 -/packages?q=opc+ua,opc ua,3 -/packages?q=open+office,open office,3 -/packages?q=open+xml+sdk,open xml sdk,3 -"/packages?q=opencv,&page=4","opencv,",3 -/packages?q=OpenCV.overlay-x64_v120,OpenCV.overlay-x64_v120,3 -/packages?q=opencv.win.native.static,opencv.win.native.static,3 -/packages?q=Opencv+mobile,Opencv mobile,3 -/packages?q=opencvsharp,opencvsharp,3 -/packages?q=OPENCVsharp,OPENCVsharp,3 -/packages?q=opendnp3,opendnp3,3 -/packages?q=OpenGL&page=4,OpenGL,3 -/packages?q=openid,openid,3 -/packages?q=openid+connect+client,openid connect client,3 -/packages?q=openidconnect,openidconnect,3 -/packages?q=Openiddict,Openiddict,3 -/packages?q=openrasta,openrasta,3 -/packages?q=openssl cpp&page=5,openssl cpp,3 -/packages?q=openssl+windows+arm64,openssl windows arm64,3 -/packages?q=openvino,openvino,3 -/packages?q=OpenWebKitSharp+,OpenWebKitSharp,3 -/packages?q=opera,opera,3 -/packages?q=opera&page=2,opera,3 -/packages?q=Opten,Opten,3 -/packages?q=optional,optional,3 -/packages?q=options,options,3 -/packages?q=opus,opus,3 -/packages?q=OR&page=2005,OR,3 -/packages?q=Oracle Corporation&page=2,Oracle Corporation,3 -/packages?q=Oracle.DataAccess.Client,Oracle.DataAccess.Client,3 -/packages?q=Oracle.DataAccess+1.122.1.0,Oracle.DataAccess 1.122.1.0,3 -/packages?q=Oracle.DataAccess+2.102.2.20,Oracle.DataAccess 2.102.2.20,3 -/packages?q=Oracle.ManagedDataAccess,Oracle.ManagedDataAccess,3 -/packages?q=Oracle.ManagedDataAccess.Client,Oracle.ManagedDataAccess.Client,3 -/packages?q=Oracle.ManagedDataAccess.Core,Oracle.ManagedDataAccess.Core,3 -/packages?q=Oracle.ManagedDataAccess&prerel=false,Oracle.ManagedDataAccess,3 -/packages?q=oracle+core,oracle core,3 -/packages?q=oracle+dapper,oracle dapper,3 -/packages?q=oracled+managed+data+access,oracled managed data access,3 -/packages?q=oraclemanageddataaccess,oraclemanageddataaccess,3 -/packages?q=OrbintSoft.Yauaa,OrbintSoft.Yauaa,3 -/packages?q=organizacion+tree,organizacion tree,3 -"/packages?q=ORM,&page=38","ORM,",3 -/packages?q=ormlite,ormlite,3 -/packages?q=osharpns,osharpns,3 -/packages?q=OsmSharp+xamarin,OsmSharp xamarin,3 -/packages?q=outputcache,outputcache,3 -/packages?q=overlay,overlay,3 -/packages?q=Owin.Hosting contributors&page=11,Owin.Hosting contributors,3 -/packages?q=Owin.Security.AesDataProtectorProvider,Owin.Security.AesDataProtectorProvider,3 -/packages?q=owin+google,owin google,3 -"/packages?q=Owner:""Autofac""+Autofac*+webapi","Owner:""Autofac"" Autofac* webapi",3 -"/packages?q=owner:""bush""+tags:""revit""","owner:""bush"" tags:""revit""",3 -/packages?q=oxyplor+xamarin+wpf,oxyplor xamarin wpf,3 -/packages?q=oxyplot.core.drawing,oxyplot.core.drawing,3 -/packages?q=oxyplot&prerel=false,oxyplot,3 -/packages?q=p2p,p2p,3 -/packages?q=pack&page=9,pack,3 -/packages?q=Package_for_Deploy_V1.0.1,Package_for_Deploy_V1.0.1,3 -/packages?q=Package&page=177,Package,3 -/packages?q=package&page=228,package,3 -/packages?q=package&page=396,package,3 -/packages?q=PagedList,PagedList,3 -/packages?q=Pagedlist&prerel=false,Pagedlist,3 -/packages?q=pager,pager,3 -/packages?q=Pager,Pager,3 -/packages?q=pagespeed,pagespeed,3 -"/packages?q=Pagination,&page=5","Pagination,",3 -/packages?q=Pagination&page=4,Pagination,3 -/packages?q=Paho,Paho,3 -/packages?q=Panuon.UI,Panuon.UI,3 -/packages?q=Papertrail,Papertrail,3 -/packages?q=parse,parse,3 -/packages?q=password,password,3 -/packages?q=Password+Protected+PDF+Using+PDFsharp,Password Protected PDF Using PDFsharp,3 -/packages?q=patagames,patagames,3 -/packages?q=patagames.ocr.xml,patagames.ocr.xml,3 -/packages?q=patch,patch,3 -/packages?q=path,path,3 -/packages?q=Patrick,Patrick,3 -/packages?q=pattern&page=43,pattern,3 -/packages?q=Paul Hiles (the DLL and original C#bootstraper)&page=133,Paul Hiles (the DLL and original C,3 -/packages?q=Paul Hiles (the DLL and original C#bootstraper)&page=145,Paul Hiles (the DLL and original C,3 -/packages?q=Paul Hiles (the DLL and original C#bootstraper)&page=179,Paul Hiles (the DLL and original C,3 -/packages?q=Paul Hiles (the DLL and original C#bootstraper)&page=208,Paul Hiles (the DLL and original C,3 -/packages?q=Paul Jenkins; Jake Ginnivan&page=3,Paul Jenkins; Jake Ginnivan,3 -/packages?q=paypal,paypal,3 -/packages?q=PayPalCheckoutSdk,PayPalCheckoutSdk,3 -/packages?q=pcl&page=46,pcl,3 -/packages?q=pclstorage,pclstorage,3 -/packages?q=pcsc,pcsc,3 -"/packages?q=pdf,&page=7","pdf,",3 -/packages?q=PDF.NET,PDF.NET,3 -/packages?q=PDF&page=20,PDF,3 -/packages?q=PDF&page=22,PDF,3 -/packages?q=pdf+convert,pdf convert,3 -/packages?q=pdf+to+image,pdf to image,3 -/packages?q=pdf+xamarin+shared,pdf xamarin shared,3 -"/packages?q=PDF417,&page=2","PDF417,",3 -/packages?q=PDF417&page=5,PDF417,3 -/packages?q=pdf417+reader,pdf417 reader,3 -/packages?q=pdfbox,pdfbox,3 -/packages?q=pdflibrary,pdflibrary,3 -/packages?q=Pdfsharp,Pdfsharp,3 -/packages?q=PDFSharp,PDFSharp,3 -/packages?q=pdu,pdu,3 -/packages?q=Pechkin,Pechkin,3 -/packages?q=pem,pem,3 -/packages?q=pemutils,pemutils,3 -/packages?q=PerformanceCounters,PerformanceCounters,3 -/packages?q=permission,permission,3 -/packages?q=PetaPoco,PetaPoco,3 -/packages?q=pgp,pgp,3 -/packages?q=phantom+js,phantom js,3 -/packages?q=phoesion,phoesion,3 -/packages?q=phonegap,phonegap,3 -/packages?q=phonenumber,phonenumber,3 -/packages?q=php,php,3 -/packages?q=physics,physics,3 -/packages?q=piechart,piechart,3 -/packages?q=Pieter van Ginkel,Pieter van Ginkel,3 -/packages?q=Pipe,Pipe,3 -/packages?q=pipeline,pipeline,3 -/packages?q=pipelines.sockets.unofficial,pipelines.sockets.unofficial,3 -/packages?q=pivotal,pivotal,3 -/packages?q=pkcs11,pkcs11,3 -/packages?q=plaid.net,plaid.net,3 -/packages?q=platform&page=52,platform,3 -/packages?q=platform+abstrac,platform abstrac,3 -/packages?q=playfab&sortOrder=package-download-count,playfab,3 -/packages?q=PList,PList,3 -/packages?q=plot&page=3,plot,3 -/packages?q=Plugin,Plugin,3 -/packages?q=plugin for xamarin&page=121,plugin for xamarin,3 -/packages?q=plugin for xamarin&page=128,plugin for xamarin,3 -/packages?q=plugin for xamarin&page=16,plugin for xamarin,3 -/packages?q=plugin for xamarin&page=29,plugin for xamarin,3 -/packages?q=plugin for xamarin&page=7,plugin for xamarin,3 -/packages?q=plugins for xamarin&page=88,plugins for xamarin,3 -/packages?q=plugins+for+xamarin,plugins for xamarin,3 -/packages?q=plural,plural,3 -/packages?q=pnp,pnp,3 -/packages?q=poco,poco,3 -/packages?q=POCO&prerel=false,POCO,3 -/packages?q=pomelo,pomelo,3 -/packages?q=Pomelo,Pomelo,3 -/packages?q=pomelo.entityframeworkcore.mysql,pomelo.entityframeworkcore.mysql,3 -/packages?q=pomelo+mysql,pomelo mysql,3 -/packages?q=Pool,Pool,3 -"/packages?q=POP3,","POP3,",3 -/packages?q=popup,popup,3 -/packages?q=Popup,Popup,3 -/packages?q=portable+accord.net,portable accord.net,3 -/packages?q=portaudio,portaudio,3 -/packages?q=POS&page=2,POS,3 -/packages?q=Posh-Git,Posh-Git,3 -/packages?q=postcss,postcss,3 -/packages?q=postgres+,postgres,3 -/packages?q=PowerPoint&page=2,PowerPoint,3 -/packages?q=ppmd,ppmd,3 -/packages?q=PPS,PPS,3 -/packages?q=pptx,pptx,3 -/packages?q=practices,practices,3 -/packages?q=Practices.unity+,Practices.unity,3 -/packages?q=praeclarum,praeclarum,3 -/packages?q=print+to+barcode,print to barcode,3 -/packages?q=print+to+pdf,print to pdf,3 -/packages?q=printdocument,printdocument,3 -/packages?q=prism,prism,3 -"/packages?q=Prism,&page=5","Prism,",3 -/packages?q=prism.unity,prism.unity,3 -/packages?q=prism+5.0,prism 5.0,3 -/packages?q=Process,Process,3 -/packages?q=process&page=14,process,3 -/packages?q=ProcessRunner,ProcessRunner,3 -/packages?q=Profiler,Profiler,3 -/packages?q=profiling,profiling,3 -/packages?q=progress,progress,3 -/packages?q=progress+bar,progress bar,3 -/packages?q=Project Extensions&page=314,Project Extensions,3 -/packages?q=ProjectServerServices,ProjectServerServices,3 -/packages?q=projnet,projnet,3 -/packages?q=prometheus-net.AspNetCore,prometheus-net.AspNetCore,3 -/packages?q=protector,protector,3 -/packages?q=Proto.Actor,Proto.Actor,3 -/packages?q=protobuf.cpp+vs2013,protobuf.cpp vs2013,3 -/packages?q=protobuf+tool,protobuf tool,3 -/packages?q=PrototypeJS,PrototypeJS,3 -/packages?q=proxy,proxy,3 -/packages?q=PSeq,PSeq,3 -/packages?q=PSGTestLibrary,PSGTestLibrary,3 -/packages?q=pt-br,pt-br,3 -/packages?q=publish,publish,3 -/packages?q=PubSub,PubSub,3 -/packages?q=puppeteer,puppeteer,3 -/packages?q=Puppeteer,Puppeteer,3 -/packages?q=PushNotification,PushNotification,3 -/packages?q=PushNotification&page=2,PushNotification,3 -/packages?q=PushSharp.Amazon,PushSharp.Amazon,3 -/packages?q=Pushwoosh,Pushwoosh,3 -/packages?q=qr,qr,3 -/packages?q=qr&page=3,qr,3 -/packages?q=qrcode&prerel=false,qrcode,3 -/packages?q=QRCode+c,QRCode c,3 -/packages?q=QRCoder,QRCoder,3 -/packages?q=Quartz,Quartz,3 -/packages?q=Quartz.Log,Quartz.Log,3 -/packages?q=Quartz.NET+,Quartz.NET,3 -/packages?q=Quartz.Plugin,Quartz.Plugin,3 -/packages?q=quartz+2.3.3.0,quartz 2.3.3.0,3 -/packages?q=queryable,queryable,3 -"/packages?q=querystring,","querystring,",3 -/packages?q=QueryStringDotNET,QueryStringDotNET,3 -/packages?q=Queue+job+Queue+FIFO,Queue job Queue FIFO,3 -/packages?q=QuickFix.Net.NETCore.FIX44,QuickFix.Net.NETCore.FIX44,3 -/packages?q=quill,quill,3 -/packages?q=R.Scheduler,R.Scheduler,3 -/packages?q=r4mvc,r4mvc,3 -/packages?q=rabbimq.clinet,rabbimq.clinet,3 -/packages?q=RabbitMQ,RabbitMQ,3 -/packages?q=RabbitMQ.Client,RabbitMQ.Client,3 -/packages?q=radar,radar,3 -/packages?q=radar+chart,radar chart,3 -/packages?q=radial+menu,radial menu,3 -/packages?q=radius,radius,3 -/packages?q=RAML.Api.Core,RAML.Api.Core,3 -/packages?q=Range&page=6,Range,3 -/packages?q=Rank,Rank,3 -/packages?q=ranorex,ranorex,3 -/packages?q=Raspberry,Raspberry,3 -/packages?q=Raspberry&page=2,Raspberry,3 -/packages?q=raster,raster,3 -/packages?q=ratelimit&sortOrder=package-download-count,ratelimit,3 -/packages?q=raven,raven,3 -/packages?q=raygun,raygun,3 -/packages?q=razor,razor,3 -/packages?q=Razor Client Templates&page=29,Razor Client Templates,3 -/packages?q=RazorTemplates Project&page=35,RazorTemplates Project,3 -/packages?q=RDF,RDF,3 -/packages?q=reactive,reactive,3 -/packages?q=Reactive+Extensions,Reactive Extensions,3 -"/packages?q=Readability,","Readability,",3 -/packages?q=readme,readme,3 -/packages?q=ReadOnlyCollection,ReadOnlyCollection,3 -/packages?q=Realm,Realm,3 -/packages?q=Realm.Database,Realm.Database,3 -/packages?q=realtime,realtime,3 -/packages?q=recognition,recognition,3 -/packages?q=rectangles,rectangles,3 -/packages?q=redis,redis,3 -/packages?q=Redis,Redis,3 -/packages?q=redis&page=20,redis,3 -/packages?q=redis+stackexchange,redis stackexchange,3 -/packages?q=refactoring,refactoring,3 -/packages?q=reference+dll+embed,reference dll embed,3 -/packages?q=reflection&page=4,reflection,3 -"/packages?q=regex,&page=4","regex,",3 -/packages?q=registration&page=6,registration,3 -/packages?q=remesh,remesh,3 -/packages?q=remote&page=2,remote,3 -/packages?q=remove package,remove package,3 -/packages?q=renderer&page=2,renderer,3 -/packages?q=repl,repl,3 -/packages?q=replace&page=2,replace,3 -/packages?q=report+generator,report generator,3 -/packages?q=Report+viewer+,Report viewer,3 -/packages?q=reporting&page=5,reporting,3 -/packages?q=reports&page=2,reports,3 -/packages?q=ReportViewerForMVC,ReportViewerForMVC,3 -/packages?q=reportviewerformvc+core,reportviewerformvc core,3 -/packages?q=repository,repository,3 -/packages?q=Repository,Repository,3 -/packages?q=request,request,3 -/packages?q=resharper,resharper,3 -/packages?q=resizer&page=4,resizer,3 -/packages?q=response,response,3 -/packages?q=Response,Response,3 -"/packages?q=responsive,&page=6","responsive,",3 -/packages?q=rest,rest,3 -"/packages?q=REST,&page=13","REST,",3 -"/packages?q=REST,&page=32","REST,",3 -"/packages?q=REST,&page=51","REST,",3 -/packages?q=Rest&page=12,Rest,3 -/packages?q=Rest&page=27,Rest,3 -/packages?q=REST&page=50,REST,3 -/packages?q=REST&sortOrder=relevance&page=17&prerelease=False,REST,3 -/packages?q=restcake,restcake,3 -/packages?q=restful,restful,3 -/packages?q=restore&page=3,restore,3 -/packages?q=restshap,restshap,3 -/packages?q=RestSharp,RestSharp,3 -/packages?q=RestSharp&page=2,RestSharp,3 -/packages?q=retry&page=5,retry,3 -/packages?q=Reverse,Reverse,3 -/packages?q=Rezoom,Rezoom,3 -/packages?q=RGB,RGB,3 -/packages?q=riaservices.server,riaservices.server,3 -/packages?q=RibbonBar,RibbonBar,3 -/packages?q=rich,rich,3 -/packages?q=Rich,Rich,3 -/packages?q=Richard Dingwall&page=5,Richard Dingwall,3 -/packages?q=rightnow,rightnow,3 -/packages?q=Robin Herbots,Robin Herbots,3 -/packages?q=rolosoft,rolosoft,3 -/packages?q=rosyln,rosyln,3 -/packages?q=rotativa,rotativa,3 -/packages?q=routeconfig,routeconfig,3 -/packages?q=rspec,rspec,3 -/packages?q=RSS14&page=1,RSS14,3 -/packages?q=rtf,rtf,3 -/packages?q=RuleEngine,RuleEngine,3 -/packages?q=rules,rules,3 -/packages?q=Run&page=25,Run,3 -/packages?q=runtime.linux-musl-x64.microsoft.netcore.app,runtime.linux-musl-x64.microsoft.netcore.app,3 -/packages?q=runtime.native,runtime.native,3 -/packages?q=Runtime&page=39,Runtime,3 -/packages?q=rust,rust,3 -/packages?q=Rx,Rx,3 -/packages?q=s22,s22,3 -/packages?q=s3,s3,3 -/packages?q=SaasKit.Multitenancy.WebApi,SaasKit.Multitenancy.WebApi,3 -/packages?q=Sage Software,Sage Software,3 -/packages?q=Sage+Data+Object,Sage Data Object,3 -/packages?q=samplebrowser.core,samplebrowser.core,3 -/packages?q=samsung xamarin&page=43,samsung xamarin,3 -/packages?q=saraff.twain,saraff.twain,3 -/packages?q=save+file,save file,3 -/packages?q=scaffolding,scaffolding,3 -"/packages?q=Scaffolding,&page=5","Scaffolding,",3 -/packages?q=scaffolding&sortOrder=package-download-count,scaffolding,3 -/packages?q=ScalingClever,ScalingClever,3 -/packages?q=scan,scan,3 -/packages?q=scentry,scentry,3 -/packages?q=schedule,schedule,3 -/packages?q=scheduling,scheduling,3 -/packages?q=scientific,scientific,3 -/packages?q=Scott (nuget package only)&page=295,Scott (nuget package only),3 -/packages?q=Scott Hanselman&sortOrder=relevance&page=2,Scott Hanselman,3 -/packages?q=scraper,scraper,3 -/packages?q=Screen&page=7,Screen,3 -/packages?q=script#&page=183,script,3 -"/packages?q=scripts,","scripts,",3 -/packages?q=scripts&page=18,scripts,3 -/packages?q=scrolling,scrolling,3 -/packages?q=sdk,sdk,3 -"/packages?q=sdk,&page=20","sdk,",3 -"/packages?q=sdk,&sortOrder=package-download-count&page=6&prerelease=False","sdk,",3 -/packages?q=sdk&page=21,sdk,3 -/packages?q=SDK&page=26,SDK,3 -/packages?q=SDK&page=91,SDK,3 -/packages?q=SDL2_image,SDL2_image,3 -/packages?q=secure-peer,secure-peer,3 -/packages?q=secure&page=5,secure,3 -/packages?q=secureblackbox,secureblackbox,3 -/packages?q=SecureBlackbox+10,SecureBlackbox 10,3 -/packages?q=security,security,3 -/packages?q=segment.io,segment.io,3 -/packages?q=selectr,selectr,3 -"/packages?q=Selenium,&page=8","Selenium,",3 -/packages?q=selenium?utm_medium=email&utm_language=csharp&__s=p8vukpcerof2v9xz8ess,selenium?utm_medium=email,3 -/packages?q=Self-Host&page=3,Self-Host,3 -/packages?q=SelfHost&page=2,SelfHost,3 -/packages?q=semantic,semantic,3 -/packages?q=SendEx,SendEx,3 -/packages?q=sendgrid,sendgrid,3 -/packages?q=SendGridMail,SendGridMail,3 -/packages?q=senparc,senparc,3 -/packages?q=Senparc.Weixin,Senparc.Weixin,3 -/packages?q=sentry,sentry,3 -/packages?q=sequencial+guid,sequencial guid,3 -/packages?q=serde-yaml,serde-yaml,3 -/packages?q=serialization,serialization,3 -/packages?q=Serialization&page=13,Serialization,3 -/packages?q=SerialPortStream,SerialPortStream,3 -/packages?q=serilog.aspnetcore,serilog.aspnetcore,3 -/packages?q=Serilog.Extensions.Logging.File,Serilog.Extensions.Logging.File,3 -/packages?q=serilog.settings,serilog.settings,3 -/packages?q=Serilog.Settings.Configuration,Serilog.Settings.Configuration,3 -/packages?q=serilog.sinks,serilog.sinks,3 -/packages?q=Serilog.Sinks.Async,Serilog.Sinks.Async,3 -/packages?q=Serilog.Sinks.Console,Serilog.Sinks.Console,3 -/packages?q=Serilog.Sinks.ElasticSearch,Serilog.Sinks.ElasticSearch,3 -/packages?q=Serilog.Sinks.PeriodicBatching,Serilog.Sinks.PeriodicBatching,3 -/packages?q=serilog.sinks.udp,serilog.sinks.udp,3 -/packages?q=serilog+elasticsearch,serilog elasticsearch,3 -/packages?q=serilog+sink,serilog sink,3 -/packages?q=Service,Service,3 -/packages?q=service-locator,service-locator,3 -/packages?q=service+model,service model,3 -/packages?q=servicebus,servicebus,3 -/packages?q=ServiceRuntime,ServiceRuntime,3 -/packages?q=servicestack,servicestack,3 -/packages?q=ServiceStack,ServiceStack,3 -/packages?q=ServiceStack.Api.OpenApi,ServiceStack.Api.OpenApi,3 -/packages?q=servicestack.interfaces,servicestack.interfaces,3 -/packages?q=ServiceStack.Ormlite,ServiceStack.Ormlite,3 -/packages?q=servicestack.text,servicestack.text,3 -/packages?q=ServiceStack.Text,ServiceStack.Text,3 -/packages?q=session,session,3 -/packages?q=Session;&page=3,Session;,3 -/packages?q=sevenzipsharp,sevenzipsharp,3 -/packages?q=SFA.DAS.EmployerUrlHelper,SFA.DAS.EmployerUrlHelper,3 -/packages?q=SFA.DAS.Notifications.Api.Client,SFA.DAS.Notifications.Api.Client,3 -/packages?q=SFA.DAS.Reservations.Api.Client,SFA.DAS.Reservations.Api.Client,3 -/packages?q=sfa.das.sas,sfa.das.sas,3 -/packages?q=sfdataform,sfdataform,3 -/packages?q=sflistview,sflistview,3 -/packages?q=sftp&source=post_page---------------------------,sftp,3 -/packages?q=sftp+server,sftp server,3 -/packages?q=SGML,SGML,3 -"/packages?q=SHA,","SHA,",3 -/packages?q=shader&sortOrder=package-download-count&page=2,shader,3 -/packages?q=Shapefile,Shapefile,3 -/packages?q=shapefile+geojson,shapefile geojson,3 -/packages?q=shared+management+objects,shared management objects,3 -/packages?q=SharePoint 2013 client&page=204,SharePoint 2013 client,3 -/packages?q=SharePoint PnP Core Library,SharePoint PnP Core Library,3 -/packages?q=SharePoint PnP Core Library&page=15,SharePoint PnP Core Library,3 -/packages?q=SharePoint PnP Core Library&page=8,SharePoint PnP Core Library,3 -"/packages?q=SharePoint,","SharePoint,",3 -/packages?q=sharepoint.dll,sharepoint.dll,3 -/packages?q=SharePoint.dll,SharePoint.dll,3 -/packages?q=SharePoint+2013+client,SharePoint 2013 client,3 -/packages?q=SharePointDSC,SharePointDSC,3 -/packages?q=Sharp Architecture Dev Team&page=63,Sharp Architecture Dev Team,3 -/packages?q=Sharp Architecture Dev Team&sortOrder=package-download-count&page=22,Sharp Architecture Dev Team,3 -/packages?q=SharpBucket,SharpBucket,3 -/packages?q=sharpbuckettest,sharpbuckettest,3 -/packages?q=SharpDevelop,SharpDevelop,3 -/packages?q=sharpgl,sharpgl,3 -/packages?q=SharpKml.Base,SharpKml.Base,3 -/packages?q=Sharpnado,Sharpnado,3 -/packages?q=sharppcap,sharppcap,3 -/packages?q=SharpShell,SharpShell,3 -/packages?q=SharpSvn Project&page=139,SharpSvn Project,3 -/packages?q=SharpSvn Project&page=16,SharpSvn Project,3 -/packages?q=SharpVG,SharpVG,3 -/packages?q=shorthand,shorthand,3 -/packages?q=showme,showme,3 -/packages?q=SignalR,SignalR,3 -/packages?q=signalr://&page=107,signalr://,3 -/packages?q=signalr://&page=233,signalr://,3 -/packages?q=SILVERLIGHT&sortOrder=relevance&page=4,SILVERLIGHT,3 -"/packages?q=simple,&page=161","simple,",3 -/packages?q=simple.odata.client,simple.odata.client,3 -/packages?q=simple&page=70,simple,3 -/packages?q=simpleinject,simpleinject,3 -/packages?q=simulator,simulator,3 -/packages?q=single+sign+on,single sign on,3 -/packages?q=singler,singler,3 -/packages?q=singleton,singleton,3 -/packages?q=sitecore&page=5,sitecore,3 -/packages?q=Sitefinity&page=158,Sitefinity,3 -/packages?q=Sitefinity&page=23,Sitefinity,3 -/packages?q=SkiaSharp,SkiaSharp,3 -/packages?q=skiaSharp+linux,skiaSharp linux,3 -/packages?q=sl50&page=4,sl50,3 -/packages?q=slackapi,slackapi,3 -/packages?q=slackclient,slackclient,3 -/packages?q=slf4net,slf4net,3 -/packages?q=slider&page=3,slider,3 -/packages?q=slow+cheetah,slow cheetah,3 -/packages?q=Smagger,Smagger,3 -/packages?q=SMART,SMART,3 -/packages?q=SmartThings,SmartThings,3 -/packages?q=SMPP,SMPP,3 -/packages?q=SMS,SMS,3 -/packages?q=SMS&sortOrder=package-download-count&page=3&prerelease=False,SMS,3 -/packages?q=Smtp,Smtp,3 -/packages?q=SmtpClient,SmtpClient,3 -/packages?q=SnapObjects,SnapObjects,3 -/packages?q=Snapshot,Snapshot,3 -/packages?q=snmp+server,snmp server,3 -/packages?q=Snowball,Snowball,3 -/packages?q=snowflake,snowflake,3 -/packages?q=soap+validator&prerel=false,soap validator,3 -/packages?q=soapcore,soapcore,3 -/packages?q=socket+autoreconnect,socket autoreconnect,3 -/packages?q=socket+com,socket com,3 -/packages?q=SoftCircuits.EasyEncryption,SoftCircuits.EasyEncryption,3 -/packages?q=solidworks,solidworks,3 -/packages?q=sonar,sonar,3 -/packages?q=sonarsharp,sonarsharp,3 -/packages?q=sort,sort,3 -/packages?q=sound&page=3,sound,3 -/packages?q=source,source,3 -/packages?q=sourcelink,sourcelink,3 -/packages?q=spam,spam,3 -/packages?q=SpanapiWrapper,SpanapiWrapper,3 -/packages?q=spark,spark,3 -/packages?q=sparkpost,sparkpost,3 -/packages?q=Spatial&page=4,Spatial,3 -/packages?q=spatial&sortOrder=relevance&page=2&prerelease=False,spatial,3 -/packages?q=spd+log,spd log,3 -/packages?q=spdlog,spdlog,3 -/packages?q=specf;pw,specf;pw,3 -/packages?q=SpecFlow,SpecFlow,3 -/packages?q=specflow.tools.msbuild.generation,specflow.tools.msbuild.generation,3 -/packages?q=specification,specification,3 -/packages?q=Speech,Speech,3 -/packages?q=spinner,spinner,3 -/packages?q=spinner&page=2,spinner,3 -/packages?q=spire,spire,3 -/packages?q=Splunk&prerel=false,Splunk,3 -/packages?q=Sportradar,Sportradar,3 -/packages?q=spreadsheet&page=4,spreadsheet,3 -/packages?q=spreadsheetgear,spreadsheetgear,3 -/packages?q=spring,spring,3 -/packages?q=Spring.Data.NHibernate,Spring.Data.NHibernate,3 -/packages?q=spring.net,spring.net,3 -/packages?q=Sprites,Sprites,3 -/packages?q=Sql&page=19,Sql,3 -/packages?q=sql&page=87,sql,3 -/packages?q=Sql&sortOrder=relevance&page=17&prerelease=False,Sql,3 -/packages?q=sql+server+driver,sql server driver,3 -/packages?q=SqlBulkTools,SqlBulkTools,3 -/packages?q=sqlcompact,sqlcompact,3 -/packages?q=SQLite Development Team,SQLite Development Team,3 -/packages?q=sqlite&sortOrder=package-download-count,sqlite,3 -/packages?q=sqlite+bulk+insert,sqlite bulk insert,3 -/packages?q=sqlite+core,sqlite core,3 -/packages?q=sqlitepcl,sqlitepcl,3 -/packages?q=SQLitePCL,SQLitePCL,3 -/packages?q=SQLitePCL.raw,SQLitePCL.raw,3 -/packages?q=SQLitePCLRaw.bundle_e_sqlite3,SQLitePCLRaw.bundle_e_sqlite3,3 -/packages?q=SqlLite,SqlLite,3 -/packages?q=sqlmanagement,sqlmanagement,3 -/packages?q=SQLProj,SQLProj,3 -/packages?q=sqlprovider,sqlprovider,3 -/packages?q=sqlservercompact,sqlservercompact,3 -/packages?q=sqs,sqs,3 -/packages?q=ss.net,ss.net,3 -/packages?q=ss.pangu,ss.pangu,3 -/packages?q=ssh.net,ssh.net,3 -/packages?q=StackExchange+Redis,StackExchange Redis,3 -/packages?q=StackifyLib.AspNetCore,StackifyLib.AspNetCore,3 -/packages?q=StackOverflow,StackOverflow,3 -/packages?q=stanford,stanford,3 -/packages?q=Starksoft,Starksoft,3 -/packages?q=stars,stars,3 -/packages?q=State+Machine+,State Machine,3 -/packages?q=statechart,statechart,3 -/packages?q=statistics,statistics,3 -/packages?q=status,status,3 -/packages?q=steam,steam,3 -/packages?q=Steeltoe.Discovery.Eureka.Client,Steeltoe.Discovery.Eureka.Client,3 -/packages?q=Steeltoe.Management.Diagnostics.2.1.0,Steeltoe.Management.Diagnostics.2.1.0,3 -/packages?q=Steven van Deursen&page=12,Steven van Deursen,3 -/packages?q=StoredProcedures,StoredProcedures,3 -/packages?q=stratis+smart+contract,stratis smart contract,3 -/packages?q=streaming,streaming,3 -/packages?q=streaming&page=5,streaming,3 -/packages?q=Streaming&page=5,Streaming,3 -/packages?q=String,String,3 -/packages?q=string.format,string.format,3 -/packages?q=stringbuilder,stringbuilder,3 -/packages?q=StringBuilder,StringBuilder,3 -/packages?q=StringComparison,StringComparison,3 -/packages?q=Strings,Strings,3 -/packages?q=stripe,stripe,3 -/packages?q=Strongly-Typed&page=4,Strongly-Typed,3 -/packages?q=StronglyTypedId,StronglyTypedId,3 -/packages?q=structuremap.automocking,structuremap.automocking,3 -/packages?q=stun,stun,3 -/packages?q=stylecop.analyzers,stylecop.analyzers,3 -/packages?q=StyleCop.Analyzers.Codefixes,StyleCop.Analyzers.Codefixes,3 -/packages?q=stylet,stylet,3 -/packages?q=submenu,submenu,3 -/packages?q=subsonic,subsonic,3 -/packages?q=supersocket,supersocket,3 -/packages?q=sustainsys.saml2.mvc,sustainsys.saml2.mvc,3 -/packages?q=svg,svg,3 -/packages?q=SVM,SVM,3 -/packages?q=svn+c,svn c,3 -/packages?q=sw,sw,3 -/packages?q=swagger,swagger,3 -/packages?q=Swashbuckle,Swashbuckle,3 -/packages?q=Swashbuckle.AspNetCore.Filters,Swashbuckle.AspNetCore.Filters,3 -/packages?q=Swashbuckle.AspNetCore.SwaggerGen,Swashbuckle.AspNetCore.SwaggerGen,3 -/packages?q=Swashbuckle.AspNetCore+,Swashbuckle.AspNetCore,3 -/packages?q=Swashbuckle.Core,Swashbuckle.Core,3 -/packages?q=swashbuckle.mvc,swashbuckle.mvc,3 -/packages?q=Swashbuckle.Swagger,Swashbuckle.Swagger,3 -/packages?q=Swipyrefresh,Swipyrefresh,3 -/packages?q=switch,switch,3 -/packages?q=Switch,Switch,3 -/packages?q=SYBase,SYBase,3 -/packages?q=Sybase.Data.AseDataProvider,Sybase.Data.AseDataProvider,3 -/packages?q=symbol+server,symbol server,3 -/packages?q=Symbols,Symbols,3 -/packages?q=Syncfusion.Compression.Base,Syncfusion.Compression.Base,3 -/packages?q=Syncfusion.ej2.blazor,Syncfusion.ej2.blazor,3 -/packages?q=Syncfusion.ExcelToPdfConverter.AspNet.Mvc5,Syncfusion.ExcelToPdfConverter.AspNet.Mvc5,3 -/packages?q=syncfusion.licensing,syncfusion.licensing,3 -/packages?q=syncfusion+blazor,syncfusion blazor,3 -/packages?q=synchronize&page=2,synchronize,3 -/packages?q=Syntax,Syntax,3 -/packages?q=syslog+tcp+client,syslog tcp client,3 -/packages?q=system.collections.immutable,system.collections.immutable,3 -/packages?q=system.collections.specialized,system.collections.specialized,3 -/packages?q=System.Collections.Specialized,System.Collections.Specialized,3 -/packages?q=System.Composition,System.Composition,3 -/packages?q=system.configuration,system.configuration,3 -/packages?q=System.configuration,System.configuration,3 -/packages?q=System.Configuration,System.Configuration,3 -/packages?q=System.Configuration.ConfigurationManager,System.Configuration.ConfigurationManager,3 -/packages?q=System.Configuration.ConfigurationManager.,System.Configuration.ConfigurationManager.,3 -/packages?q=System.Configuration.ConfigurationManager&sortOrder=package-download-count,System.Configuration.ConfigurationManager,3 -/packages?q=System.Configuration.ConfigurationManager+,System.Configuration.ConfigurationManager,3 -/packages?q=System.Configuration.ConfigurationSettings,System.Configuration.ConfigurationSettings,3 -/packages?q=system.data.datasetextensions,system.data.datasetextensions,3 -/packages?q=System.Data.Entity+.net+core+2.0,System.Data.Entity .net core 2.0,3 -/packages?q=system.data.sqlClient,system.data.sqlClient,3 -/packages?q=System.Data.Sqlite,System.Data.Sqlite,3 -/packages?q=System.Device.Gpio,System.Device.Gpio,3 -/packages?q=system.device.location,system.device.location,3 -/packages?q=System.Diagnostics,System.Diagnostics,3 -/packages?q=system.diagnostics.diagnosticsource,system.diagnostics.diagnosticsource,3 -/packages?q=System.Diagnostics.DiagnosticSource,System.Diagnostics.DiagnosticSource,3 -/packages?q=System.Diagnostics.StackTrace,System.Diagnostics.StackTrace,3 -/packages?q=System.Diagnostics.TraceSource,System.Diagnostics.TraceSource,3 -/packages?q=system.drawing.common,system.drawing.common,3 -/packages?q=System.Drawing.Common,System.Drawing.Common,3 -/packages?q=System.Drawing.dll,System.Drawing.dll,3 -/packages?q=System.Drawing&page=2,System.Drawing,3 -/packages?q=system.globalization,system.globalization,3 -/packages?q=System.Globalization.Extensions,System.Globalization.Extensions,3 -/packages?q=System.IdentityModel,System.IdentityModel,3 -/packages?q=system.identitymodel.tokens.jwt,system.identitymodel.tokens.jwt,3 -/packages?q=System.Interactive,System.Interactive,3 -/packages?q=system.io,system.io,3 -/packages?q=system.io.compression.native,system.io.compression.native,3 -/packages?q=System.IO.FileSystem.Watcher,System.IO.FileSystem.Watcher,3 -/packages?q=System.IO.Packaging,System.IO.Packaging,3 -/packages?q=system.io+4.3,system.io 4.3,3 -/packages?q=System.link.dynamic,System.link.dynamic,3 -/packages?q=System.Management.Automation,System.Management.Automation,3 -/packages?q=System.Management.Automation.dll,System.Management.Automation.dll,3 -/packages?q=System.memory,System.memory,3 -/packages?q=System.Messaging.Message,System.Messaging.Message,3 -/packages?q=system.net,system.net,3 -/packages?q=System.Net.Http.Extensions.Compression.Core.Compressors,System.Net.Http.Extensions.Compression.Core.Compressors,3 -/packages?q=System.Net.Jsaon,System.Net.Jsaon,3 -/packages?q=system.net.websockets,system.net.websockets,3 -/packages?q=System.Object,System.Object,3 -/packages?q=System.ObjectModel,System.ObjectModel,3 -/packages?q=System.Reflection.DispatchProxy,System.Reflection.DispatchProxy,3 -/packages?q=System.Reflection.Emit,System.Reflection.Emit,3 -/packages?q=System.Reflection.Metadata&sortOrder=package-download-count,System.Reflection.Metadata,3 -/packages?q=System.Reflection.TypeExtensions,System.Reflection.TypeExtensions,3 -/packages?q=System.Runtime.Caching.ObjectCache,System.Runtime.Caching.ObjectCache,3 -/packages?q=system.runtime.compilerservices.unsafe,system.runtime.compilerservices.unsafe,3 -/packages?q=System.Runtime.Loader,System.Runtime.Loader,3 -/packages?q=System.Runtime.Serialization.Formatters.Soap,System.Runtime.Serialization.Formatters.Soap,3 -/packages?q=System.Runtime+,System.Runtime,3 -/packages?q=system.runtine,system.runtine,3 -/packages?q=System.Security,System.Security,3 -/packages?q=System.Security.Claims,System.Security.Claims,3 -/packages?q=System.Security.Cryptography,System.Security.Cryptography,3 -/packages?q=System.Security.Cryptography.X509Certificates,System.Security.Cryptography.X509Certificates,3 -/packages?q=System.Security.Cyptography,System.Security.Cyptography,3 -/packages?q=System.Security.Principal.windows,System.Security.Principal.windows,3 -/packages?q=System.Security.Principal.Windows,System.Security.Principal.Windows,3 -/packages?q=System.ServiceModel,System.ServiceModel,3 -/packages?q=System.ServiceModel.Channels,System.ServiceModel.Channels,3 -/packages?q=system.servicemodel.primitives,system.servicemodel.primitives,3 -/packages?q=System.ServiceModel.Syndicatio,System.ServiceModel.Syndicatio,3 -/packages?q=System.ServiceModel.Syndication,System.ServiceModel.Syndication,3 -/packages?q=System.ServiceProcess.ServiceController,System.ServiceProcess.ServiceController,3 -/packages?q=System.Text.json,System.Text.json,3 -/packages?q=System.Text.Json.Serialization,System.Text.Json.Serialization,3 -/packages?q=system.valuetask,system.valuetask,3 -/packages?q=system.web.extensions,system.web.extensions,3 -/packages?q=System.Web.Extensions,System.Web.Extensions,3 -/packages?q=System.Web.Http+,System.Web.Http,3 -"/packages?q=System.Web.Mvc,+Version=5.2.3.0","System.Web.Mvc, Version=5.2.3.0",3 -/packages?q=System.Web.Razor,System.Web.Razor,3 -/packages?q=System.Web.Services.Protocols.SoapMessage,System.Web.Services.Protocols.SoapMessage,3 -/packages?q=system.web.webpages,system.web.webpages,3 -/packages?q=System.Web.Webpages,System.Web.Webpages,3 -/packages?q=system.web.webpages.razor,system.web.webpages.razor,3 -/packages?q=System.Xml.ReaderWriter,System.Xml.ReaderWriter,3 -/packages?q=System.Xml.XmlSerializer,System.Xml.XmlSerializer,3 -/packages?q=system.xml.xpath.xmldocument,system.xml.xpath.xmldocument,3 -/packages?q=system+numerics,system numerics,3 -/packages?q=system+web+mvc,system web mvc,3 -/packages?q=Systems.Xml,Systems.Xml,3 -"/packages?q=T-SQL,","T-SQL,",3 -/packages?q=T.dump,T.dump,3 -/packages?q=tab&page=1,tab,3 -/packages?q=TabControl wpf,TabControl wpf,3 -"/packages?q=Table,&page=4","Table,",3 -/packages?q=tagif,tagif,3 -"/packages?q=Tags:"".Net,MVC,WebApi""","Tags:"".Net,MVC,WebApi""",3 -"/packages?q=Tags:"".net""","Tags:"".net""",3 -"/packages?q=Tags:"".net47""","Tags:"".net47""",3 -"/packages?q=Tags:"".nupkg""","Tags:"".nupkg""",3 -"/packages?q=Tags:""'.Net""&page=200","Tags:""'.Net""",3 -"/packages?q=Tags:""'.NET""&page=68","Tags:""'.NET""",3 -"/packages?q=Tags:""'API""&page=69","Tags:""'API""",3 -"/packages?q=Tags:""'C#""&page=38","Tags:""'C",3 -"/packages?q=Tags:""'Data""&page=29","Tags:""'Data""",3 -"/packages?q=Tags:""'Decrypt'""","Tags:""'Decrypt'""",3 -"/packages?q=Tags:""'Encrypt'""","Tags:""'Encrypt'""",3 -"/packages?q=Tags:""'Test""&page=7","Tags:""'Test""",3 -"/packages?q=Tags:""""virtual""","Tags:""""virtual""",3 -"/packages?q=Tags:""&page=990","Tags:""",3 -"/packages?q=Tags:""#bot""&page=3","Tags:""",3 -"/packages?q=Tags:""#Emoji""","Tags:""",3 -"/packages?q=Tags:""#Generator""&page=9","Tags:""",3 -"/packages?q=Tags:""1C""","Tags:""1C""",3 -"/packages?q=Tags:""2Captcha""","Tags:""2Captcha""",3 -"/packages?q=Tags:""61850""","Tags:""61850""",3 -"/packages?q=Tags:""ACBr""","Tags:""ACBr""",3 -"/packages?q=Tags:""accessibility""","Tags:""accessibility""",3 -"/packages?q=Tags:""Acrylic""","Tags:""Acrylic""",3 -"/packages?q=Tags:""ActionFilter""","Tags:""ActionFilter""",3 -"/packages?q=Tags:""ActivePDF""","Tags:""ActivePDF""",3 -"/packages?q=Tags:""AddJsonFile""","Tags:""AddJsonFile""",3 -"/packages?q=Tags:""ADFS""","Tags:""ADFS""",3 -"/packages?q=Tags:""ADO.NET""","Tags:""ADO.NET""",3 -"/packages?q=Tags:""Ads""","Tags:""Ads""",3 -"/packages?q=Tags:""aead""","Tags:""aead""",3 -"/packages?q=Tags:""aes-encryption""","Tags:""aes-encryption""",3 -"/packages?q=Tags:""aes128gcm""","Tags:""aes128gcm""",3 -"/packages?q=Tags:""aes256""","Tags:""aes256""",3 -"/packages?q=Tags:""AfterEffects""","Tags:""AfterEffects""",3 -"/packages?q=Tags:""AI""","Tags:""AI""",3 -"/packages?q=Tags:""ajax""","Tags:""ajax""",3 -"/packages?q=Tags:""akka""&page=6","Tags:""akka""",3 -"/packages?q=Tags:""alert-dialog""","Tags:""alert-dialog""",3 -"/packages?q=Tags:""algebra""&page=2","Tags:""algebra""",3 -"/packages?q=Tags:""aliyun-sdk""","Tags:""aliyun-sdk""",3 -"/packages?q=Tags:""alpr""","Tags:""alpr""",3 -"/packages?q=Tags:""Amazon.Product.API""","Tags:""Amazon.Product.API""",3 -"/packages?q=Tags:""Amazon""","Tags:""Amazon""",3 -"/packages?q=Tags:""amd64""","Tags:""amd64""",3 -"/packages?q=Tags:""android-material""","Tags:""android-material""",3 -"/packages?q=Tags:""android,""&page=2","Tags:""android,""",3 -"/packages?q=Tags:""angular-modal""","Tags:""angular-modal""",3 -"/packages?q=Tags:""AngularJS""","Tags:""AngularJS""",3 -"/packages?q=Tags:""Annotate""","Tags:""Annotate""",3 -"/packages?q=Tags:""anticaptcha""","Tags:""anticaptcha""",3 -"/packages?q=Tags:""AntiXSS""","Tags:""AntiXSS""",3 -"/packages?q=Tags:""API-Client""&page=2","Tags:""API-Client""",3 -"/packages?q=Tags:""API""""&page=58","Tags:""API""""",3 -"/packages?q=Tags:""Apiary""","Tags:""Apiary""",3 -"/packages?q=Tags:""APM""","Tags:""APM""",3 -"/packages?q=Tags:""app-intro""","Tags:""app-intro""",3 -"/packages?q=Tags:""AppFabric""","Tags:""AppFabric""",3 -"/packages?q=Tags:""application""","Tags:""application""",3 -"/packages?q=Tags:""appointment""","Tags:""appointment""",3 -"/packages?q=Tags:""are""","Tags:""are""",3 -"/packages?q=Tags:""ARES""","Tags:""ARES""",3 -"/packages?q=Tags:""args""","Tags:""args""",3 -"/packages?q=Tags:""argument-checking""","Tags:""argument-checking""",3 -"/packages?q=Tags:""Arithmetic""","Tags:""Arithmetic""",3 -"/packages?q=Tags:""as400""","Tags:""as400""",3 -"/packages?q=Tags:""ASCII""","Tags:""ASCII""",3 -"/packages?q=Tags:""ASCII85""","Tags:""ASCII85""",3 -"/packages?q=Tags:""ASM""","Tags:""ASM""",3 -"/packages?q=Tags:""asp-net""&page=46","Tags:""asp-net""",3 -"/packages?q=Tags:""asp.net-mvc-5""","Tags:""asp.net-mvc-5""",3 -"/packages?q=Tags:""ASP.NETcore""","Tags:""ASP.NETcore""",3 -"/packages?q=Tags:""aspnetcore,""&page=19","Tags:""aspnetcore,""",3 -"/packages?q=Tags:""assemblyinfo""","Tags:""assemblyinfo""",3 -"/packages?q=Tags:""assert""","Tags:""assert""",3 -"/packages?q=Tags:""AStar""","Tags:""AStar""",3 -"/packages?q=Tags:""ATLASSIAN""","Tags:""ATLASSIAN""",3 -"/packages?q=Tags:""atom""","Tags:""atom""",3 -"/packages?q=Tags:""audio-converter""","Tags:""audio-converter""",3 -"/packages?q=Tags:""audio""&page=2","Tags:""audio""",3 -"/packages?q=Tags:""augmented-reality""","Tags:""augmented-reality""",3 -"/packages?q=Tags:""Auth""&page=2","Tags:""Auth""",3 -"/packages?q=Tags:""authenticator""","Tags:""authenticator""",3 -"/packages?q=Tags:""Authorization""","Tags:""Authorization""",3 -"/packages?q=Tags:""Authorization""&page=1","Tags:""Authorization""",3 -"/packages?q=Tags:""Authorize.Net""","Tags:""Authorize.Net""",3 -"/packages?q=Tags:""autocomplete""","Tags:""autocomplete""",3 -"/packages?q=Tags:""Autoit""","Tags:""Autoit""",3 -"/packages?q=Tags:""Automapper""","Tags:""Automapper""",3 -"/packages?q=Tags:""AutoMapper""","Tags:""AutoMapper""",3 -"/packages?q=Tags:""AvalonDock""","Tags:""AvalonDock""",3 -"/packages?q=Tags:""Avatar""","Tags:""Avatar""",3 -"/packages?q=Tags:""AVX""","Tags:""AVX""",3 -"/packages?q=Tags:""Awesome""&page=2","Tags:""Awesome""",3 -"/packages?q=Tags:""Awesomium""","Tags:""Awesomium""",3 -"/packages?q=Tags:""aws-dynamodb""","Tags:""aws-dynamodb""",3 -"/packages?q=Tags:""aws-sdk-cpp""","Tags:""aws-sdk-cpp""",3 -"/packages?q=Tags:""aws-sdk-v3""&refid=ha_awssm-evergreen","Tags:""aws-sdk-v3""",3 -"/packages?q=Tags:""aws-sdk-v3""+sns","Tags:""aws-sdk-v3"" sns",3 -"/packages?q=Tags:""aws-sdk""","Tags:""aws-sdk""",3 -"/packages?q=Tags:""Axapta""","Tags:""Axapta""",3 -"/packages?q=Tags:""azure-functions""","Tags:""azure-functions""",3 -"/packages?q=Tags:""azure-table-storage""&page=2","Tags:""azure-table-storage""",3 -"/packages?q=Tags:""background""","Tags:""background""",3 -"/packages?q=Tags:""Backup""","Tags:""Backup""",3 -"/packages?q=Tags:""bank""","Tags:""bank""",3 -"/packages?q=Tags:""BankMellat""","Tags:""BankMellat""",3 -"/packages?q=Tags:""bar-chart""","Tags:""bar-chart""",3 -"/packages?q=Tags:""Bar-Chart""","Tags:""Bar-Chart""",3 -"/packages?q=Tags:""bar-code""","Tags:""bar-code""",3 -"/packages?q=Tags:""Bar-Code""","Tags:""Bar-Code""",3 -"/packages?q=Tags:""BarChart""","Tags:""BarChart""",3 -"/packages?q=Tags:""barcode""","Tags:""barcode""",3 -"/packages?q=Tags:""basic-authentication""","Tags:""basic-authentication""",3 -"/packages?q=Tags:""bat""","Tags:""bat""",3 -"/packages?q=Tags:""bcp""","Tags:""bcp""",3 -"/packages?q=Tags:""beanstalk""","Tags:""beanstalk""",3 -"/packages?q=Tags:""best-practices""","Tags:""best-practices""",3 -"/packages?q=Tags:""Betfair""","Tags:""Betfair""",3 -"/packages?q=Tags:""bezier""","Tags:""bezier""",3 -"/packages?q=Tags:""BGP""","Tags:""BGP""",3 -"/packages?q=Tags:""BHoM""","Tags:""BHoM""",3 -"/packages?q=Tags:""Binance""","Tags:""Binance""",3 -"/packages?q=Tags:""BinaryWriter""","Tags:""BinaryWriter""",3 -"/packages?q=Tags:""binlist.net""","Tags:""binlist.net""",3 -"/packages?q=Tags:""Biometric""","Tags:""Biometric""",3 -"/packages?q=Tags:""BitBucket""","Tags:""BitBucket""",3 -"/packages?q=Tags:""bitfinex""","Tags:""bitfinex""",3 -"/packages?q=Tags:""bitmap""","Tags:""bitmap""",3 -"/packages?q=Tags:""BitmapImage""","Tags:""BitmapImage""",3 -"/packages?q=Tags:""BITS""","Tags:""BITS""",3 -"/packages?q=Tags:""Ble""","Tags:""Ble""",3 -"/packages?q=Tags:""BLE""","Tags:""BLE""",3 -"/packages?q=Tags:""bleno""","Tags:""bleno""",3 -"/packages?q=Tags:""Block.io""","Tags:""Block.io""",3 -"/packages?q=Tags:""blockchain""","Tags:""blockchain""",3 -"/packages?q=Tags:""blog""","Tags:""blog""",3 -"/packages?q=Tags:""Blowfish""","Tags:""Blowfish""",3 -"/packages?q=Tags:""bluetooth""","Tags:""bluetooth""",3 -"/packages?q=Tags:""Blur""","Tags:""Blur""",3 -"/packages?q=Tags:""bmp""","Tags:""bmp""",3 -"/packages?q=Tags:""BMP""","Tags:""BMP""",3 -"/packages?q=Tags:""bnf""","Tags:""bnf""",3 -"/packages?q=Tags:""bookmarks""","Tags:""bookmarks""",3 -"/packages?q=Tags:""bootstrap-table""","Tags:""bootstrap-table""",3 -"/packages?q=Tags:""Bootstrap.modal""","Tags:""Bootstrap.modal""",3 -"/packages?q=Tags:""bootstrap""","Tags:""bootstrap""",3 -"/packages?q=Tags:""bootstrap""&page=6","Tags:""bootstrap""",3 -"/packages?q=Tags:""bootstraper""","Tags:""bootstraper""",3 -"/packages?q=Tags:""border-radius""","Tags:""border-radius""",3 -"/packages?q=Tags:""Borderless""","Tags:""Borderless""",3 -"/packages?q=Tags:""bot-detection""","Tags:""bot-detection""",3 -"/packages?q=Tags:""botbuilder""","Tags:""botbuilder""",3 -"/packages?q=Tags:""bottom""","Tags:""bottom""",3 -"/packages?q=Tags:""bounce-inspector""","Tags:""bounce-inspector""",3 -"/packages?q=Tags:""boundary""","Tags:""boundary""",3 -"/packages?q=Tags:""Bowser""","Tags:""Bowser""",3 -"/packages?q=Tags:""brazil""","Tags:""brazil""",3 -"/packages?q=Tags:""Broker""","Tags:""Broker""",3 -"/packages?q=Tags:""Browser,""&page=4","Tags:""Browser,""",3 -"/packages?q=Tags:""BTree""","Tags:""BTree""",3 -"/packages?q=Tags:""buildvu""","Tags:""buildvu""",3 -"/packages?q=Tags:""BulkCopy""","Tags:""BulkCopy""",3 -"/packages?q=Tags:""bypass-recaptcha-v2""","Tags:""bypass-recaptcha-v2""",3 -"/packages?q=Tags:""Bypass""","Tags:""Bypass""",3 -"/packages?q=Tags:""c""","Tags:""c""",3 -"/packages?q=Tags:""c++""","Tags:""c """,3 -"/packages?q=Tags:""C++/CLI""","Tags:""C /CLI""",3 -"/packages?q=Tags:""Cache.""&page=4","Tags:""Cache.""",3 -"/packages?q=Tags:""Cache""","Tags:""Cache""",3 -"/packages?q=Tags:""cadru""","Tags:""cadru""",3 -"/packages?q=Tags:""cake-build""","Tags:""cake-build""",3 -"/packages?q=Tags:""Calendar""&page=3","Tags:""Calendar""",3 -"/packages?q=Tags:""camelcase""","Tags:""camelcase""",3 -"/packages?q=Tags:""CamelCase""","Tags:""CamelCase""",3 -"/packages?q=Tags:""Camera""","Tags:""Camera""",3 -"/packages?q=Tags:""CAN""","Tags:""CAN""",3 -"/packages?q=Tags:""candlestick-charts""","Tags:""candlestick-charts""",3 -"/packages?q=Tags:""canvasjs""","Tags:""canvasjs""",3 -"/packages?q=Tags:""carousel""","Tags:""carousel""",3 -"/packages?q=Tags:""Carousel""","Tags:""Carousel""",3 -"/packages?q=Tags:""Cash""","Tags:""Cash""",3 -"/packages?q=Tags:""CasperJs""","Tags:""CasperJs""",3 -"/packages?q=Tags:""cdn""","Tags:""cdn""",3 -"/packages?q=Tags:""CEFGlue""","Tags:""CEFGlue""",3 -"/packages?q=Tags:""Center""","Tags:""Center""",3 -"/packages?q=Tags:""cfdi""","Tags:""cfdi""",3 -"/packages?q=Tags:""ChakraCore""","Tags:""ChakraCore""",3 -"/packages?q=Tags:""ChannelFactory""","Tags:""ChannelFactory""",3 -"/packages?q=Tags:""Chaos-engineering""","Tags:""Chaos-engineering""",3 -"/packages?q=Tags:""Charset""","Tags:""Charset""",3 -"/packages?q=Tags:""chart,""&page=4","Tags:""chart,""",3 -"/packages?q=Tags:""checkbox""","Tags:""checkbox""",3 -"/packages?q=Tags:""Checkbox""","Tags:""Checkbox""",3 -"/packages?q=Tags:""CheckBoxList""","Tags:""CheckBoxList""",3 -"/packages?q=Tags:""checker""","Tags:""checker""",3 -"/packages?q=Tags:""chess""","Tags:""chess""",3 -"/packages?q=Tags:""choosefont""","Tags:""choosefont""",3 -"/packages?q=Tags:""CI/CD""","Tags:""CI/CD""",3 -"/packages?q=Tags:""CISCO""","Tags:""CISCO""",3 -"/packages?q=Tags:""CKFinder""","Tags:""CKFinder""",3 -"/packages?q=Tags:""Clang""","Tags:""Clang""",3 -"/packages?q=Tags:""Classification""","Tags:""Classification""",3 -"/packages?q=Tags:""Clean""","Tags:""Clean""",3 -"/packages?q=Tags:""ClickHouse""","Tags:""ClickHouse""",3 -"/packages?q=Tags:""ClickOnce""","Tags:""ClickOnce""",3 -"/packages?q=Tags:""ClientCredentials""","Tags:""ClientCredentials""",3 -"/packages?q=Tags:""clock""","Tags:""clock""",3 -"/packages?q=Tags:""Clone""","Tags:""Clone""",3 -"/packages?q=Tags:""cloud-messaging""","Tags:""cloud-messaging""",3 -"/packages?q=Tags:""Codabar""","Tags:""Codabar""",3 -"/packages?q=Tags:""Code-Coverage""","Tags:""Code-Coverage""",3 -"/packages?q=Tags:""Code,""&page=8","Tags:""Code,""",3 -"/packages?q=Tags:""code93""","Tags:""code93""",3 -"/packages?q=Tags:""CodeDOM""","Tags:""CodeDOM""",3 -"/packages?q=Tags:""CodeGeneration""","Tags:""CodeGeneration""",3 -"/packages?q=Tags:""CodeGenerator""","Tags:""CodeGenerator""",3 -"/packages?q=Tags:""Coinbase""","Tags:""Coinbase""",3 -"/packages?q=Tags:""color-wheel""","Tags:""color-wheel""",3 -"/packages?q=Tags:""colorpicker""","Tags:""colorpicker""",3 -"/packages?q=Tags:""column""","Tags:""column""",3 -"/packages?q=Tags:""CommandLine""","Tags:""CommandLine""",3 -"/packages?q=Tags:""CommonJS""","Tags:""CommonJS""",3 -"/packages?q=Tags:""Comparison""","Tags:""Comparison""",3 -"/packages?q=Tags:""Compiler""","Tags:""Compiler""",3 -"/packages?q=Tags:""composite-c1""","Tags:""composite-c1""",3 -"/packages?q=Tags:""compress-pdf""","Tags:""compress-pdf""",3 -"/packages?q=Tags:""ConcurrentList""","Tags:""ConcurrentList""",3 -"/packages?q=Tags:""configuration""&page=7","Tags:""configuration""",3 -"/packages?q=Tags:""connectivity""","Tags:""connectivity""",3 -"/packages?q=Tags:""Connector/NET""","Tags:""Connector/NET""",3 -"/packages?q=Tags:""console-shell""","Tags:""console-shell""",3 -"/packages?q=Tags:""console""","Tags:""console""",3 -"/packages?q=Tags:""Consul""","Tags:""Consul""",3 -"/packages?q=Tags:""content-management""","Tags:""content-management""",3 -"/packages?q=Tags:""ContentPage""","Tags:""ContentPage""",3 -"/packages?q=Tags:""context-menu""","Tags:""context-menu""",3 -"/packages?q=Tags:""contour""","Tags:""contour""",3 -"/packages?q=Tags:""controller""","Tags:""controller""",3 -"/packages?q=Tags:""ControllerBase""","Tags:""ControllerBase""",3 -"/packages?q=Tags:""conversion""","Tags:""conversion""",3 -"/packages?q=Tags:""Convey""","Tags:""Convey""",3 -"/packages?q=Tags:""cookie""","Tags:""cookie""",3 -"/packages?q=Tags:""Copy""","Tags:""Copy""",3 -"/packages?q=Tags:""coreml""","Tags:""coreml""",3 -"/packages?q=Tags:""correios""","Tags:""correios""",3 -"/packages?q=Tags:""correlation""","Tags:""correlation""",3 -"/packages?q=Tags:""CosmosDb""","Tags:""CosmosDb""",3 -"/packages?q=Tags:""CosmosDB""","Tags:""CosmosDB""",3 -"/packages?q=Tags:""country-picker""","Tags:""country-picker""",3 -"/packages?q=Tags:""coupon""","Tags:""coupon""",3 -"/packages?q=Tags:""Coverity""","Tags:""Coverity""",3 -"/packages?q=Tags:""crashlytics""","Tags:""crashlytics""",3 diff --git a/SearchScorer/IREvalutation/NormalizedDiscountedCumulativeGain.cs b/SearchScorer/IREvalutation/NormalizedDiscountedCumulativeGain.cs deleted file mode 100644 index 7d8e793..0000000 --- a/SearchScorer/IREvalutation/NormalizedDiscountedCumulativeGain.cs +++ /dev/null @@ -1,123 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text.RegularExpressions; -using System.Threading.Tasks; -using SearchScorer.Common; - -namespace SearchScorer.IREvalutation -{ - public class NormalizedDiscountedCumulativeGain - { - private readonly SearchClient _searchClient; - - public NormalizedDiscountedCumulativeGain(SearchClient searchClient) - { - _searchClient = searchClient; - } - - public async Task> ScoreAsync( - SearchQueryRelevancyScores query, - string baseUrl, - int resultsToEvaluate) - { - var response = await _searchClient.SearchAsync( - baseUrl, - query.SearchQuery, - resultsToEvaluate); - - if (!query.PackageIdToScore.Any() || query.PackageIdToScore.Max(x => x.Value) == 0) - { - return new RelevancyScoreResult( - 0, - query, - response); - } - - var patternToScorePairs = new List>(); - foreach (var pair in query.PackageIdToScore.Where(x => x.Value > 0)) - { - if (WildcardUtility.IsWildcard(pair.Key)) - { - patternToScorePairs.Add(new KeyValuePair( - WildcardUtility.GetPackageIdWildcareRegex(pair.Key), - pair.Value)); - } - } - - // Determine the score for each of the returns package IDs. - var scores = new List(); - for (var i = 0; i < response.Results[0].Extensions.Count; i++) - { - var packageId = response.Results[0].Extensions[i].ExtensionName; - if (query.PackageIdToScore.TryGetValue(packageId, out var score)) - { - scores.Add(score); - } - else - { - // It might be that the score map contains wildcards. Let's try those. Execute them from longest to - // shortest. This is a hueristic to perform the most specific ones first. - var match = false; - foreach (var pair in patternToScorePairs.OrderByDescending(x => x.Key.ToString().Length)) - { - if (pair.Key.IsMatch(packageId)) - { - scores.Add(pair.Value); - patternToScorePairs.Remove(pair); - match = true; - break; - } - } - - if (match) - { - continue; - } - - scores.Add(0); - } - } - - // Determine the ideal scores by taking the top N scores. - var idealScores = query - .PackageIdToScore - .Select(x => x.Value) - .OrderByDescending(x => x) - .Take(resultsToEvaluate); - - // Calculate the NDCG. - var resultScore = NDCG(scores, idealScores); - - if (resultScore > 1.0) - { - throw new InvalidOperationException("An NDCG score cannot be greater than 1.0. There's a bug!"); - } - - return new RelevancyScoreResult( - resultScore, - query, - response); - } - - private static double NDCG(IEnumerable scores, IEnumerable idealScores) - { - return DCG(scores) / DCG(idealScores); - } - - private static double DCG(IEnumerable scores) - { - var sum = 0.0; - var i = 1; - - foreach (var score in scores) - { - sum += score / Math.Log(i + 1, 2); - i++; - } - - return sum; - } - } -} diff --git a/SearchScorer/IREvalutation/RelevancyReport.cs b/SearchScorer/IREvalutation/RelevancyReport.cs deleted file mode 100644 index 9fc3f29..0000000 --- a/SearchScorer/IREvalutation/RelevancyReport.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace SearchScorer.IREvalutation -{ - public class RelevancyReport - { - public RelevancyReport(VariantReport controlReport, VariantReport treatmentReport) - { - ControlReport = controlReport; - TreatmentReport = treatmentReport; - } - - public VariantReport ControlReport { get; } - public VariantReport TreatmentReport { get; } - } -} diff --git a/SearchScorer/IREvalutation/RelevancyScoreBuilder.cs b/SearchScorer/IREvalutation/RelevancyScoreBuilder.cs deleted file mode 100644 index 9b46913..0000000 --- a/SearchScorer/IREvalutation/RelevancyScoreBuilder.cs +++ /dev/null @@ -1,130 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using SearchScorer.Common; - -namespace SearchScorer.IREvalutation -{ - public static class RelevancyScoreBuilder - { - /// - /// The number possible relevancy scores minus one. There are a lot of options, the simplest being a binary - /// option set: - /// - /// { relevant, not relevant } - /// - /// We'll take a slightly more complex range: - /// - /// { perfect, excellent, good, fair, bad } - /// - /// This is mentioned by Oliver Chapell's "Expected Reciprocal Rank for Graded Relevance" paper. He worked for - /// Yahoo Labs so it's good enough for me. - /// - public const int MaximumRelevancyScore = 4; - - public static IReadOnlyList> FromCuratedSearchQueriesCsv(SearchScorerSettings settings) - { - var queries = CuratedSearchQueriesCsvReader.Read(settings.CuratedSearchQueriesCsvPath); - return FromCuratedSearchQueries(queries); - } - - public static IReadOnlyList> FromClientCuratedSearchQueriesCsv(SearchScorerSettings settings) - { - var queries = CuratedSearchQueriesCsvReader.Read( - settings.ClientCuratedSearchQueriesCsvPath, - settings.CuratedSearchQueriesCsvPath); - return FromCuratedSearchQueries(queries); - } - - private static IReadOnlyList> FromCuratedSearchQueries(IReadOnlyList queries) - { - var output = new List>(); - foreach (var query in queries) - { - output.Add(new SearchQueryRelevancyScores( - query.SearchQuery, - query.PackageIdToScore, - query)); - } - - return output; - } - - public static IReadOnlyList> FromFeedbackSearchQueriesCsv(SearchScorerSettings settings) - { - var output = new List>(); - var feedbackSearchQueries = FeedbackSearchQueriesCsvReader.Read(settings.FeedbackSearchQueriesCsvPath); - foreach (var feedback in feedbackSearchQueries) - { - // Give expected package IDs the maximum relevancy score. - var scores = feedback - .MostRelevantPackageIds - .ToDictionary(x => x, x => MaximumRelevancyScore, StringComparer.OrdinalIgnoreCase);; - - output.Add(new SearchQueryRelevancyScores( - feedback.SearchQuery, - scores, - feedback)); - } - - return output; - } - - public static IReadOnlyList> FromTopSearchSelectionsCsv(string path) - { - // The goal here is to take the frequency that a package ID was clicked for each search query and somehow - // use this frequency compared to other clicked package IDs to assign a relevancy score. This is of course - // only an educated guess since people may be clicking results because today's relevancy algorithm puts - // them at the not because they are actually good results. - // - // This mapping must take a package ID frequency and map it to an integer in the range: - // - // [0, MaximumRelevancyScore] - // - // We do this by taking a ratio of clickCount / maxClickCount where clickCount is the number of times a - // package ID was clicked for a given search query and maxClickCount is the click count of the package ID - // that was clicked the most. We then bucket that ratio into into "MaximumRelevancyScore" + 1 evenly-sized - // buckets covering the range [0.00, 1.00]. - // - // For example, suppose MaximumRelevancyScore is 4, the search query is "nuget", NuGet.Versioning has 601 - // clicks, NuGet.Frameworks has 501 clicks, and NuGet.Core has 79 clicks. The mapping of ratio buckets - // to resulting score are: - // - // [0.00, 0.20) => 0 - // [0.20, 0.40) => 1 - // [0.40, 0.60) => 2 - // [0.60, 0.80) => 3 - // [0.80, 1.00] => 4 - // - // The highest click count is 601. - // - // NuGet.Versioning's score will be: 601 / 601 = 1.00 => 4. - // NuGet.Framework's score will be: 501 / 601 = 0.83 => 4. - // NuGet.Core's score will be: 79 / 601 = 0.13 => 0. - - var firstBucketUpperBound = 1.0 / (MaximumRelevancyScore + 1); - - var output = new List>(); - var topSearchSelections = TopSearchSelectionsCsvReader.Read(path); - foreach (var searchQueryWithSelections in topSearchSelections) - { - var maxClickCount = searchQueryWithSelections.Selections.Max(x => x.Count); - var packageIdToScore = new Dictionary(StringComparer.OrdinalIgnoreCase); - foreach (var selection in searchQueryWithSelections.Selections) - { - var clickCount = selection.Count; - var ratio = (double)clickCount / maxClickCount; - var score = (int)Math.Ceiling(ratio / firstBucketUpperBound) - 1; - packageIdToScore.Add(selection.PackageId, score); - } - - output.Add(new SearchQueryRelevancyScores( - searchQueryWithSelections.SearchQuery, - packageIdToScore, - searchQueryWithSelections)); - } - - return output; - } - } -} diff --git a/SearchScorer/IREvalutation/RelevancyScoreEvaluator.cs b/SearchScorer/IREvalutation/RelevancyScoreEvaluator.cs deleted file mode 100644 index 087f9ae..0000000 --- a/SearchScorer/IREvalutation/RelevancyScoreEvaluator.cs +++ /dev/null @@ -1,294 +0,0 @@ -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using System.Xml; -using SearchScorer.Common; - -namespace SearchScorer.IREvalutation -{ - public class RelevancyScoreEvaluator - { - /// - /// This is the number of results to include in the scoring. We use 5 because this is the number of results - /// above the fold. - /// - private const int ResultsToEvaluate = 5; - - private readonly NormalizedDiscountedCumulativeGain _ndcg; - - public RelevancyScoreEvaluator(SearchClient searchClient) - { - _ndcg = new NormalizedDiscountedCumulativeGain(searchClient); - } - - public async Task RunAsync(SearchScorerSettings settings) - { - var report = await GetReportAsync(settings); - - ConsoleUtility.WriteHeading("Curated Search Queries", '='); - WriteBiggestWinnersAndLosersToConsole(report, v => v.CuratedSearchQueries); - - ConsoleUtility.WriteHeading("Client Curated Search Queries", '='); - WriteBiggestWinnersAndLosersToConsole(report, v => v.ClientCuratedSearchQueries); - - ConsoleUtility.WriteHeading("Feedback", '='); - WriteBiggestWinnersAndLosersToConsole(report, v => v.FeedbackSearchQueries); - } - - private static void WriteBiggestWinnersAndLosersToConsole( - RelevancyReport report, - Func> getReport) - { - Console.WriteLine($"Control: {getReport(report.ControlReport).Score}"); - Console.WriteLine($"Treatment: {getReport(report.TreatmentReport).Score}"); - - var toTreatment = getReport(report.TreatmentReport) - .Queries - .GroupBy(x => x.Result.Input.SearchQuery) - .ToDictionary(x => x.Key, x => x.First().Score); - var scoreChanges = getReport(report.ControlReport) - .Queries - .GroupBy(x => x.Result.Input.SearchQuery) - .ToDictionary(x => x.Key, x => toTreatment[x.Key] - x.First().Score) - .OrderBy(x => x.Key) - .ToList(); - WriteSearchQueriesAndScoresToConsole( - "Biggest Winners", - scoreChanges.Where(x => x.Value > 0).OrderByDescending(x => x.Value).Take(10)); - WriteSearchQueriesAndScoresToConsole( - "Biggest Losers", - scoreChanges.Where(x => x.Value < 0).OrderBy(x => x.Value).Take(10)); - - var treatmentFailures = getReport(report.TreatmentReport) - .Queries - .OrderBy(x => x.Score) // Lowest scores first - .ThenByDescending(x => x.Weight) // Most significant first - .Take(10) - .ToList(); - WriteQueryScoreAndWeights("Lowest Treatment Scores", treatmentFailures); - } - - private static void WriteSearchQueriesAndScoresToConsole( - string heading, - IEnumerable> pairs) - { - var pairList = pairs.ToList(); - - ConsoleUtility.WriteHeading($"{heading} ({pairList.Count})", '-'); - if (!pairList.Any()) - { - Console.WriteLine("(none)"); - return; - } - - var longestSearchQuery = pairList.Max(x => x.Key.Length); - foreach (var pair in pairList) - { - Console.WriteLine($"{pair.Key.PadRight(longestSearchQuery)} => {pair.Value:+0.0000;-0.0000;0}"); - } - } - - private static void WriteQueryScoreAndWeights( - string heading, - IReadOnlyList> queries) - { - ConsoleUtility.WriteHeading($"{heading} ({queries.Count})", '-'); - var longestSearchQuery = queries.Max(x => x.Result.Input.SearchQuery.Length); - foreach (var query in queries) - { - Console.WriteLine($"{query.Result.Input.SearchQuery.PadRight(longestSearchQuery)} => {query.Score:+0.0000;-0.0000;0}"); - } - } - - private async Task GetReportAsync(SearchScorerSettings settings) - { - var topQueries = TopSearchQueriesCsvReader.Read(settings.TopSearchQueriesCsvPath); - var topClientQueries = TopClientSearchQueriesCsvReader.Read(settings.TopClientSearchQueriesCsvPath); - var topSearchReferrals = GoogleAnalyticsSearchReferralsCsvReader.Read(settings.GoogleAnalyticsSearchReferralsCsvPath); - - var controlReport = await GetVariantReport( - settings.ControlBaseUrl, - settings, - topQueries, - topClientQueries, - topSearchReferrals); - - var treatmentReport = await GetVariantReport( - settings.TreatmentBaseUrl, - settings, - topQueries, - topClientQueries, - topSearchReferrals); - - return new RelevancyReport( - controlReport, - treatmentReport); - } - - public async Task GetCustomVariantReportAsync( - SearchScorerSettings settings, - string customVariantUrl) - { - var topQueries = TopSearchQueriesCsvReader.Read(settings.TopSearchQueriesCsvPath); - var topClientQueries = TopClientSearchQueriesCsvReader.Read(settings.TopClientSearchQueriesCsvPath); - var topSearchReferrals = GoogleAnalyticsSearchReferralsCsvReader.Read(settings.GoogleAnalyticsSearchReferralsCsvPath); - - return await GetVariantReport( - customVariantUrl, - settings, - topQueries, - topClientQueries, - topSearchReferrals); - } - - private async Task GetVariantReport( - string baseUrl, - SearchScorerSettings settings, - IReadOnlyDictionary topQueries, - IReadOnlyDictionary topClientQueries, - IReadOnlyDictionary topSearchReferrals) - { - var curatedSearchQueriesReport = await GetCuratedSearchQueriesScoreAsync(baseUrl, settings, topQueries, topSearchReferrals); - var clientCuratedSearchQueriesReport = await GetClientCuratedSearchQueriesScoreAsync(baseUrl, settings, topClientQueries); - var feedbackSearchQueriesReport = await GetFeedbackSearchQueriesScoreAsync(baseUrl, settings); - - return new VariantReport( - curatedSearchQueriesReport, - clientCuratedSearchQueriesReport, - feedbackSearchQueriesReport); - } - - private async Task> GetCuratedSearchQueriesScoreAsync( - string baseUrl, - SearchScorerSettings settings, - IReadOnlyDictionary topQueries, - IReadOnlyDictionary topSearchReferrals) - { - var minQueryCount = topQueries.Min(x => x.Value); - var adjustedTopQueries = topQueries.ToDictionary( - x => x.Key, - x => - { - if (topSearchReferrals.TryGetValue(x.Key, out var referrals)) - { - return Math.Max(x.Value - referrals, minQueryCount); - } - - return x.Value; - }); - - var scores = RelevancyScoreBuilder.FromCuratedSearchQueriesCsv(settings); - - var results = await ProcessAsync( - scores, - baseUrl); - - return WeightByTopQueries(adjustedTopQueries, results); - } - - private async Task> GetClientCuratedSearchQueriesScoreAsync( - string baseUrl, - SearchScorerSettings settings, - IReadOnlyDictionary topClientQueries) - { - var scores = RelevancyScoreBuilder.FromClientCuratedSearchQueriesCsv(settings); - - var results = await ProcessAsync( - scores, - baseUrl); - - return WeightByTopQueries(topClientQueries, results); - } - - private async Task> GetFeedbackSearchQueriesScoreAsync( - string baseUrl, - SearchScorerSettings settings) - { - var scores = RelevancyScoreBuilder.FromFeedbackSearchQueriesCsv(settings); - - var results = await ProcessAsync( - scores, - baseUrl); - - return WeightEvently(results); - } - - private static SearchQueriesReport WeightEvently(ConcurrentBag> results) - { - var totalCount = 1.0 * results.Count; - - var weightedResults = results - .Select(x => new WeightedRelevancyScoreResult( - x, - x.ResultScore / totalCount)) - .ToList(); - - return new SearchQueriesReport(weightedResults); - } - - private static SearchQueriesReport WeightByTopQueries( - IReadOnlyDictionary topQueries, - ConcurrentBag> results) - { - // Weight the queries that came from top search selections by their query count. - var totalQueryCount = 0; - var resultsAndWeights = new List, int>>(); - foreach (var result in results) - { - if (!topQueries.TryGetValue(result.Input.SearchQuery, out var queryCount)) - { - queryCount = 0; - } - resultsAndWeights.Add(new KeyValuePair, int>(result, queryCount)); - totalQueryCount += queryCount; - } - - var weightedResults = new List>(); - foreach (var pair in resultsAndWeights) - { - weightedResults.Add(new WeightedRelevancyScoreResult( - pair.Key, - 1.0 * pair.Value / totalQueryCount)); - } - - return new SearchQueriesReport(weightedResults); - } - - private async Task>> ProcessAsync( - IEnumerable> queries, - string baseUrl) - { - var work = new ConcurrentBag>(queries); - var output = new ConcurrentBag>(); - - var workers = Enumerable - .Range(0, 8) - .Select(async x => - { - await Task.Yield(); - - while (work.TryTake(out var query)) - { - try - { - var result = await _ndcg.ScoreAsync(query, baseUrl, ResultsToEvaluate); - Console.WriteLine($"[{baseUrl}] {query.SearchQuery} => {result.ResultScore}"); - output.Add(result); - } - catch (Exception ex) - { - Console.WriteLine($"[{baseUrl}] {query.SearchQuery} => {ex}"); - throw; - } - } - }) - .ToList(); - - await Task.WhenAll(workers); - - return output; - } - } -} diff --git a/SearchScorer/IREvalutation/RelevancyScoreResult.cs b/SearchScorer/IREvalutation/RelevancyScoreResult.cs deleted file mode 100644 index da09bf5..0000000 --- a/SearchScorer/IREvalutation/RelevancyScoreResult.cs +++ /dev/null @@ -1,31 +0,0 @@ -using SearchScorer.Common; - -namespace SearchScorer.IREvalutation -{ - public class RelevancyScoreResult - { - public RelevancyScoreResult(double resultScore, SearchQueryRelevancyScores input, ExtensionQueryResult response) - { - ResultScore = resultScore; - Input = input; - Response = response; - } - - public double ResultScore { get; } - public SearchQueryRelevancyScores Input { get; } - public ExtensionQueryResult Response { get; } - } - - public class RelevancyScoreResult : RelevancyScoreResult - { - public RelevancyScoreResult( - double resultScore, - SearchQueryRelevancyScores input, - ExtensionQueryResult response) : base(resultScore, input, response) - { - Input = input; - } - - public new SearchQueryRelevancyScores Input { get; } - } -} diff --git a/SearchScorer/IREvalutation/SearchQueriesReport.cs b/SearchScorer/IREvalutation/SearchQueriesReport.cs deleted file mode 100644 index 32dde5c..0000000 --- a/SearchScorer/IREvalutation/SearchQueriesReport.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Collections.Generic; -using System.Linq; - -namespace SearchScorer.IREvalutation -{ - public class SearchQueriesReport - { - public SearchQueriesReport(IReadOnlyList> queries) - { - Queries = queries; - } - - public double Score => Queries.Sum(x => x.Score); - public IReadOnlyList> Queries { get; } - } -} diff --git a/SearchScorer/IREvalutation/SearchQueryRelevancyScores.cs b/SearchScorer/IREvalutation/SearchQueryRelevancyScores.cs deleted file mode 100644 index b335b5b..0000000 --- a/SearchScorer/IREvalutation/SearchQueryRelevancyScores.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Collections.Generic; - -namespace SearchScorer.IREvalutation -{ - public class SearchQueryRelevancyScores - { - public SearchQueryRelevancyScores(string searchQuery, IReadOnlyDictionary packageIdToScore) - { - SearchQuery = searchQuery; - PackageIdToScore = packageIdToScore; - } - - public string SearchQuery { get; } - public IReadOnlyDictionary PackageIdToScore { get; } - } - - public class SearchQueryRelevancyScores : SearchQueryRelevancyScores - { - public SearchQueryRelevancyScores( - string searchQuery, - IReadOnlyDictionary packageIdToScore, - TSource source) : base(searchQuery, packageIdToScore) - { - Source = source; - } - - public TSource Source { get; } - } -} diff --git a/SearchScorer/IREvalutation/VariantReport.cs b/SearchScorer/IREvalutation/VariantReport.cs deleted file mode 100644 index 3f8d420..0000000 --- a/SearchScorer/IREvalutation/VariantReport.cs +++ /dev/null @@ -1,21 +0,0 @@ -using SearchScorer.Common; - -namespace SearchScorer.IREvalutation -{ - public class VariantReport - { - public VariantReport( - SearchQueriesReport curatedSearchQueries, - SearchQueriesReport clientCuratedSearchQueries, - SearchQueriesReport feedbackSearchQueries) - { - CuratedSearchQueries = curatedSearchQueries; - ClientCuratedSearchQueries = clientCuratedSearchQueries; - FeedbackSearchQueries = feedbackSearchQueries; - } - - public SearchQueriesReport CuratedSearchQueries { get; } - public SearchQueriesReport ClientCuratedSearchQueries { get; } - public SearchQueriesReport FeedbackSearchQueries { get; } - } -} diff --git a/SearchScorer/IREvalutation/WeightedRelevancyScoreResult.cs b/SearchScorer/IREvalutation/WeightedRelevancyScoreResult.cs deleted file mode 100644 index 7638839..0000000 --- a/SearchScorer/IREvalutation/WeightedRelevancyScoreResult.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace SearchScorer.IREvalutation -{ - public class WeightedRelevancyScoreResult - { - public WeightedRelevancyScoreResult(RelevancyScoreResult result, double weight) - { - Result = result; - Weight = weight; - } - - public double Score => Weight * Result.ResultScore; - public RelevancyScoreResult Result { get; } - public double Weight { get; } - } -} diff --git a/SearchScorer/Program.cs b/SearchScorer/Program.cs deleted file mode 100644 index 22fd7aa..0000000 --- a/SearchScorer/Program.cs +++ /dev/null @@ -1,56 +0,0 @@ -using SearchScorer.Common; -using SearchScorer.IREvalutation; - -ServicePointManager.DefaultConnectionLimit = 64; - -var assemblyDir = Path.GetDirectoryName(Environment.CurrentDirectory); -assemblyDir = Path.Combine(assemblyDir, "files"); - -var settings = new SearchScorerSettings -{ - ControlBaseUrl = "https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery", //TODO: Add marketplace url - TreatmentBaseUrl = "https://marketplace.vsallin.net/_apis/public/gallery/extensionquery", - //ControlBaseUrl = "https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery?api-version=6.0-preview.1", //TODO: Add marketplace url - //TreatmentBaseUrl = "https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery?api-version=6.0-preview.1", - - CuratedSearchQueriesCsvPath = @"curatedsearchqueries.csv", - TopSearchQueriesCsvPath = @"topsearchqueries.csv", - TopSearchSelectionsCsvPath = @"topsearchselections.csv", - - TopClientSearchQueriesCsvPath = @"topclientsearchqueries.csv", - GoogleAnalyticsSearchReferralsCsvPath = @"GoogleAnalyticsSearchReferrals.csv", - - ClientCuratedSearchQueriesCsvPath = @"curatedsearchqueries.csv", - FeedbackSearchQueriesCsvPath = @"feedbacksearchqueries.csv", - - PackageIdWeights = CreateRange(lower: 1, upper: 10, increments: 3), - TokenizedPackageIdWeights = CreateRange(lower: 1, upper: 10, increments: 3), - TagsWeights = CreateRange(lower: 1, upper: 10, increments: 3), - DownloadWeights = CreateRange(lower: 1, upper: 10, increments: 3) -}; - -using (var httpClientHandler = new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip }) -using (var httpClient = new HttpClient()) -{ - //if (args.Length == 0 || args[0] == "score") - { - httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json; charset=utf-8"); - await RunScoreCommandAsync(settings, httpClient); - } -} - -static async Task RunScoreCommandAsync(SearchScorerSettings settings, HttpClient httpClient) -{ - var searchClient = new SearchClient(httpClient); - var scoreEvaluator = new RelevancyScoreEvaluator(searchClient); - await scoreEvaluator.RunAsync(settings); -} - -static IReadOnlyList CreateRange(int lower, int upper, double increments) -{ - var count = (upper - lower) / increments + 1; - return Enumerable - .Range(0, (int)count) - .Select(i => (i * increments + lower)) - .ToList(); -} \ No newline at end of file diff --git a/SearchScorer/SearchScorer.csproj b/SearchScorer/SearchScorer.csproj deleted file mode 100644 index 394ba88..0000000 --- a/SearchScorer/SearchScorer.csproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - Exe - net6.0 - enable - - - - - - - - - - - - - \ No newline at end of file diff --git a/SearchScorer/SearchScorer.sln b/SearchScorer/SearchScorer.sln deleted file mode 100644 index 5cb1715..0000000 --- a/SearchScorer/SearchScorer.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 25.0.1700.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SearchScorer", "SearchScorer.csproj", "{FBF337A7-4B2A-4225-9212-3169B89E8386}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {FBF337A7-4B2A-4225-9212-3169B89E8386}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FBF337A7-4B2A-4225-9212-3169B89E8386}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FBF337A7-4B2A-4225-9212-3169B89E8386}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FBF337A7-4B2A-4225-9212-3169B89E8386}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {8C4FD292-3138-4A3B-8983-C67219968C04} - EndGlobalSection -EndGlobal diff --git a/SearchScorer/SearchScorerSettings.cs b/SearchScorer/SearchScorerSettings.cs deleted file mode 100644 index ebc2258..0000000 --- a/SearchScorer/SearchScorerSettings.cs +++ /dev/null @@ -1,34 +0,0 @@ - -public class SearchScorerSettings -{ - public string ControlBaseUrl { get; set; } - public string TreatmentBaseUrl { get; set; } - public string CuratedSearchQueriesCsvPath { get; set; } - public string TopSearchQueriesCsvPath { get; set; } - public string TopSearchSelectionsCsvPath { get; set; } - public string TopClientSearchQueriesCsvPath { get; set; } - public string GoogleAnalyticsSearchReferralsCsvPath { get; set; } - public string ClientCuratedSearchQueriesCsvPath { get; set; } - public string FeedbackSearchQueriesCsvPath { get; set; } - - //public string TopSearchSelectionsV2CsvPath { get; set; } - //public string GitHubUsageJsonPath { get; set; } - //public string GitHubUsageCsvPath { get; set; } - //public string ProbeResultsCsvPath { get; set; } - //public string TopV3SearchQueriesPathPattern { get; set; } - //public string HashedSearchQueryLookupCsvPath { get; set; } - - - public string HasherKeyFile { get; set; } - - // The following settings are only necessary for the "probe" command - public string AzureSearchServiceName { get; set; } - public string AzureSearchIndexName { get; set; } - public string AzureSearchApiKey { get; set; } - - public IReadOnlyList PackageIdWeights { get; set; } - public IReadOnlyList TokenizedPackageIdWeights { get; set; } - public IReadOnlyList TagsWeights { get; set; } - public IReadOnlyList DownloadWeights { get; set; } -} - diff --git a/SearchScorer/TopClientSearchQueries.csv b/SearchScorer/TopClientSearchQueries.csv deleted file mode 100644 index b96edca..0000000 --- a/SearchScorer/TopClientSearchQueries.csv +++ /dev/null @@ -1,3 +0,0 @@ -Query,QueryCount -python,2196 -azure,1801 diff --git a/SearchScorer/TopSearchQueries.csv b/SearchScorer/TopSearchQueries.csv deleted file mode 100644 index ba4054c..0000000 --- a/SearchScorer/TopSearchQueries.csv +++ /dev/null @@ -1,3 +0,0 @@ -Query,QueryCount -java,2196 -mysql,1801 \ No newline at end of file diff --git a/SearchScorer/TopSearchSelections.csv b/SearchScorer/TopSearchSelections.csv deleted file mode 100644 index 2cff55c..0000000 --- a/SearchScorer/TopSearchSelections.csv +++ /dev/null @@ -1,3 +0,0 @@ -SearchQuery,Selections -java,"[""vscode-maven:1390"",""vscode-tomcat:108""]" -mysql,"[""vscode-mysql-client2:554"", ""vscode-mysql:1""]" \ No newline at end of file