{"id":15631943,"url":"https://github.com/christianhelle/refitter","last_synced_at":"2026-01-22T01:04:25.930Z","repository":{"id":65946657,"uuid":"598846021","full_name":"christianhelle/refitter","owner":"christianhelle","description":"A tool for generating Refit interfaces and contracts from OpenAPI specifications","archived":false,"fork":false,"pushed_at":"2025-05-12T19:50:16.000Z","size":4094,"stargazers_count":285,"open_issues_count":28,"forks_count":53,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-05-12T20:51:11.546Z","etag":null,"topics":["csharp-sourcegenerator","openapi","openapi3","refit","rest","swagger"],"latest_commit_sha":null,"homepage":"https://refitter.github.io","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/christianhelle.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"christianhelle","patreon":null,"open_collective":null,"ko_fi":"christianhelle","tidelift":null,"community_bridge":null,"liberapay":"christianhelle","issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://paypal.me/christianhelle","https://buymeacoffee.com/christianhelle"]}},"created_at":"2023-02-07T23:18:12.000Z","updated_at":"2025-05-12T19:50:16.000Z","dependencies_parsed_at":"2023-09-22T22:13:26.863Z","dependency_job_id":"930864b7-aaf2-4375-9e32-25b2236eceef","html_url":"https://github.com/christianhelle/refitter","commit_stats":{"total_commits":1966,"total_committers":35,"mean_commits":56.17142857142857,"dds":"0.34028484231943035","last_synced_commit":"1fba29dc59c933b2437f06bc1339321fb6b1400f"},"previous_names":[],"tags_count":83,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christianhelle%2Frefitter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christianhelle%2Frefitter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christianhelle%2Frefitter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christianhelle%2Frefitter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/christianhelle","download_url":"https://codeload.github.com/christianhelle/refitter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253823352,"owners_count":21969844,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp-sourcegenerator","openapi","openapi3","refit","rest","swagger"],"created_at":"2024-10-03T10:42:06.727Z","updated_at":"2026-01-22T01:04:25.918Z","avatar_url":"https://github.com/christianhelle.png","language":"C#","funding_links":["https://github.com/sponsors/christianhelle","https://ko-fi.com/christianhelle","https://liberapay.com/christianhelle","https://paypal.me/christianhelle","https://buymeacoffee.com/christianhelle","https://www.buymeacoffee.com/christianhelle"],"categories":[],"sub_categories":[],"readme":"[![Build](https://github.com/christianhelle/refitter/actions/workflows/build.yml/badge.svg)](https://github.com/christianhelle/refitter/actions/workflows/build.yml)\n[![Smoke Tests](https://github.com/christianhelle/refitter/actions/workflows/smoke-tests.yml/badge.svg)](https://github.com/christianhelle/refitter/actions/workflows/smoke-tests.yml)\n[![NuGet](https://img.shields.io/nuget/v/refitter?color=blue)](https://www.nuget.org/packages/refitter)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=christianhelle_refitter\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=christianhelle_refitter)\n[![codecov](https://codecov.io/gh/christianhelle/refitter/graph/badge.svg?token=242YT1N6T2)](https://codecov.io/gh/christianhelle/refitter)\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![All Contributors](https://img.shields.io/badge/all_contributors-88-orange.svg?style=flat-square)](#contributors-)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\n# Refitter\n\nRefitter is a tool for generating a C# REST API Client using the [Refit](https://github.com/reactiveui/refit) library. Refitter can generate the Refit interface and contracts from OpenAPI specifications. Refitter could format the generated Refit interface to be managed by [Apizr](https://www.apizr.net) (v6+) and generate some registration helpers too.\n\nRefitter comes in 3 forms:\n\n- A [.NET CLI Tool](#cli-tool) distributed via [nuget.org](http://www.nuget.org/packages/refitter) that outputs a single C# file on disk\n- An [MSBuild Task](#msbuild) via the [Refitter.MSBuild](http://www.nuget.org/packages/refitter.msbuild) package that integrates seamlessly into your build pipeline and automatically generates code at build time based on [.refitter](#.refitter-file-format) files within the project directory\n- A [C# Source Generator](#source-generator) via the [Refitter.SourceGenerator](http://www.nuget.org/packages/refitter.sourcegenerator) package that generates code on compile time based on a [.refitter](#.refitter-file-format) within the project directory\n\n## CLI Tool\n\n### Installation\n\nThe tool is packaged as a .NET Tool and is published to nuget.org. You can install the latest version of this tool like this:\n\n```shell\ndotnet tool install --global Refitter\n```\n\n### Usage\n\n```shell\nrefitter --help\n```\n\n```text\nUSAGE:\n    refitter [URL or input file] [OPTIONS]\n\nEXAMPLES:\n    refitter ./openapi.json\n    refitter https://petstore3.swagger.io/api/v3/openapi.yaml\n    refitter ./openapi.json --settings-file ./openapi.refitter --output ./GeneratedCode.cs\n    refitter ./openapi.json --namespace \"Your.Namespace.Of.Choice.GeneratedCode\" --output ./GeneratedCode.cs\n    refitter ./openapi.json --namespace \"Your.Namespace.Of.Choice.GeneratedCode\" --internal\n    refitter ./openapi.json --output ./IGeneratedCode.cs --interface-only\n    refitter ./openapi.json --output ./GeneratedContracts.cs --contract-only\n    refitter ./openapi.json --use-api-response\n    refitter ./openapi.json --cancellation-tokens\n    refitter ./openapi.json --no-operation-headers\n    refitter ./openapi.json --ignored-operation-headers \"header-one\" --ignored-operation-headers \"Header-Two\"\n    refitter ./openapi.json --no-accept-headers\n    refitter ./openapi.json --use-iso-date-format\n    refitter ./openapi.json --additional-namespace \"Your.Additional.Namespace\" --additional-namespace \"Your.Other.Additional.Namespace\"\n    refitter ./openapi.json --multiple-interfaces ByEndpoint\n    refitter ./openapi.json --tag Pet --tag Store --tag User\n    refitter ./openapi.json --match-path '^/pet/.*'\n    refitter ./openapi.json --trim-unused-schema\n    refitter ./openapi.json --trim-unused-schema  --keep-schema '^Model$' --keep-schema '^Person.+'\n    refitter ./openapi.json --no-deprecated-operations\n    refitter ./openapi.json --operation-name-template '{operationName}Async'\n    refitter ./openapi.json --optional-nullable-parameters\n    refitter ./openapi.json --use-polymorphic-serialization\n    refitter ./openapi.json --collection-format Csv\n    refitter ./openapi.json --simple-output\n    refitter ./openapi.json --no-inline-json-converters\n\nARGUMENTS:\n    [URL or input file]    URL or file path to OpenAPI Specification file\n\nOPTIONS:\n                                                DEFAULT\n    -h, --help                                                   Prints help information\n    -v, --version                                                Prints version information\n    -s, --settings-file                                          Path to .refitter settings file. Specifying this will ignore all other settings (except for --output)\n    -n, --namespace                             GeneratedCode    Default namespace to use for generated types\n        --contracts-namespace                                    Default namespace to use for generated contracts\n    -o, --output                                Output.cs        Path to Output file or folder (if multiple files are generated)\n        --contracts-output                                       Output path for generated contracts. Enabling this automatically enables generating multiple files\n        --no-auto-generated-header                               Don't add \u003cauto-generated\u003e header to output file\n        --no-accept-headers                                      Don't add \u003cAccept\u003e header to output file\n        --interface-only                                         Don't generate contract types\n        --contract-only                                          Don't generate clients\n        --use-api-response                                       Return Task\u003cIApiResponse\u003cT\u003e\u003e instead of Task\u003cT\u003e\n        --use-observable-response                                Return IObservable instead of Task\n        --internal                                               Set the accessibility of the generated types to 'internal'\n        --cancellation-tokens                                    Use cancellation tokens\n        --no-operation-headers                                   Don't generate operation headers\n        --no-logging                                             Don't log errors or collect telemetry\n        --additional-namespace                                   Add additional namespace to generated types\n        --exclude-namespace                                      Exclude namespace on generated types\n        --use-iso-date-format                                    Explicitly format date query string parameters in ISO 8601 standard date format using delimiters (2023-06-15)\n        --multiple-interfaces                                    Generate a Refit interface for each endpoint. May be one of ByEndpoint, ByTag\n        --multiple-files                                         Generate multiple files instead of a single large file.\n                                                                 The output files can be the following:\n                                                                 - RefitInterfaces.cs\n                                                                 - DependencyInjection.cs\n                                                                 - Contracts.cs\n        --match-path                                             Only include Paths that match the provided regular expression. May be set multiple times\n        --tag                                                    Only include Endpoints that contain this tag. May be set multiple times and result in OR'ed evaluation\n        --skip-validation                                        Skip validation of the OpenAPI specification\n        --no-deprecated-operations                               Don't generate deprecated operations\n        --operation-name-template                                Generate operation names using pattern. When using --multiple-interfaces ByEndpoint, this is name of the Execute() method in the interface where all instances of the string '{operationName}' is replaced with 'Execute'\n        --optional-nullable-parameters                           Generate nullable parameters as optional parameters\n        --trim-unused-schema                                     Removes unreferenced components schema to keep the generated output to a minimum\n        --keep-schema                                            Force to keep matching schema, uses regular expressions. Use together with \"--trim-unused-schema\". Can be set multiple times\n        --include-inheritance-hierarchy                          Keep all possible inherited types/union types even if they are not directly used\n        --no-banner                                              Don't show donation banner\n        --simple-output                                          Generate simple, plain-text console output without ASCII art, tables, emojis, or color formatting (suitable for IDE output windows)\n        --skip-default-additional-properties                     Set to true to skip default additional properties\n        --collection-format                      Multi           Determines the format of collection parameters. May be one of Multi, Csv, Ssv, Tsv, Pipes\n        --operation-name-generator              Default          The NSwag IOperationNameGenerator implementation to use.\n                                                                 May be one of:\n                                                                 - Default\n                                                                 - MultipleClientsFromOperationId\n                                                                 - MultipleClientsFromPathSegments\n                                                                 - MultipleClientsFromFirstTagAndOperationId\n                                                                 - MultipleClientsFromFirstTagAndOperationName\n                                                                 - MultipleClientsFromFirstTagAndPathSegments\n                                                                 - SingleClientFromOperationId\n                                                                 - SingleClientFromPathSegments\n                                                                 See https://refitter.github.io/api/Refitter.Core.OperationNameGeneratorTypes.html for more information\n        --immutable-records                                      Generate contracts as immutable records instead of classes\n        --use-apizr                                              Use Apizr by:\n                                                                 - Adding a final IApizrRequestOptions options parameter to all generated methods\n                                                                 - Providing cancellation tokens by Apizr request options instead of a dedicated parameter\n                                                                 - Using method overloads instead of optional parameters\n                                                                 See https://refitter.github.io for more information and https://www.apizr.net to get started with Apizr\n        --use-dynamic-querystring-parameters                     Enable wrapping multiple query parameters into a single complex one. Default is no wrapping.\n                                                                 See https://github.com/reactiveui/refit?tab=readme-ov-file#dynamic-querystring-parameters for more information\n        --use-polymorphic-serialization                          Use System.Text.Json polymorphic serialization.\n                                                                 Replaces NSwag JsonInheritanceConverter attributes with System.Text.Json JsonPolymorphicAttributes.\n                                                                 To have the native support of inheritance (de)serialization and fallback to base types when\n                                                                 payloads with (yet) unknown types are offered by newer versions of an API\n                                                                 See https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json/polymorphism for more information\n        --disposable                                             Generate refit clients that implement IDisposable\n        --no-inline-json-converters                              Don't inline JsonConverter attributes for enum properties. When disabled, enum properties will not have [JsonConverter(typeof(JsonStringEnumConverter))] attributes\n        --integer-type                           int             The .NET type to use for OpenAPI integer types without a format specifier. Common values: 'int' (default), 'long'\n        --custom-template-directory                              Custom directory with NSwag fluid templates for code generation. Default is null which uses the default NSwag templates. See \u003chttps://github.com/RicoSuter/NSwag/wiki/Templates\u003e\n```\n\nTo generate code from an OpenAPI specifications file, run the following:\n\n```shell\nrefitter [path to OpenAPI spec file] --namespace \"[Your.Namespace.Of.Choice.GeneratedCode]\"\n```\n\nThis will generate a file called `Output.cs` which contains the Refit interface and contract classes generated using [NSwag](https://github.com/RicoSuter/NSwag)\n\n### CLI Tool Output Example\n\nHere's what the console output looks like when running the Refitter CLI tool:\n\n![Console Output](images/console-output.png)\n\n### Simple Output Mode\n\nFor integration with IDEs and build tools that don't support rich console formatting, Refitter provides a `--simple-output` option:\n\n```shell\nrefitter ./openapi.json --simple-output\n```\n\nThis mode generates plain text output without:\n\n- ASCII art and banners\n- Colored text and rich formatting\n- Unicode characters and emojis\n- Tables and panels\n\nThis is particularly useful when:\n\n- Running Refitter from Visual Studio extensions\n- Integrating with build systems that capture console output\n- Using tools that don't support ANSI escape sequences\n- Running in environments with limited console capabilities\n\n\n## .Refitter File format\n\nThe following is an example `.refitter` file\n\n```js\n{\n  \"openApiPath\": \"/path/to/your/openAPI\", // Required\n  \"namespace\": \"Org.System.Service.Api.GeneratedCode\", // Optional. Default=GeneratedCode\n  \"contractsNamespace\": \"Org.System.Service.Api.GeneratedCode.Contracts\", // Optional. Default=GeneratedCode\n  \"naming\": {\n    \"useOpenApiTitle\": false, // Optional. Default=true\n    \"interfaceName\": \"MyApiClient\" // Optional. Default=ApiClient\n  },\n  \"generateContracts\": true, // Optional. Default=true\n  \"generateClients\": true, // Optional. Default=true\n  \"generateXmlDocCodeComments\": true, // Optional. Default=true\n  \"generateStatusCodeComments\": true, // Optional. Default=true\n  \"addAutoGeneratedHeader\": true, // Optional. Default=true\n  \"addAcceptHeaders\": true, // Optional. Default=true\n  \"addContentTypeHeaders\": true, // Optional. Default=true\n  \"returnIApiResponse\": false, // Optional. Default=false\n  \"responseTypeOverride\": { // Optional. Default={}\n    \"File_Upload\": \"IApiResponse\",\n    \"File_Download\": \"System.Net.Http.HttpContent\"\n  },\n  \"generateOperationHeaders\": true, // Optional. Default=true\n  \"ignoredOperationHeaders\": [\"apiKey\"], // Optional. Default=[]\n  \"typeAccessibility\": \"Public\", // Optional. Values=Public|Internal. Default=Public\n  \"useCancellationTokens\": false, // Optional. Default=false\n  \"useIsoDateFormat\": false, // Optional. Default=false\n  \"multipleInterfaces\": \"ByEndpoint\", // Optional. May be one of \"ByEndpoint\" or \"ByTag\"\n  \"generateDeprecatedOperations\": false, // Optional. Default=true\n  \"operationNameTemplate\": \"{operationName}Async\", // Optional. Must contain {operationName}. When multipleInterfaces == \"ByEndpoint\", this is name of the Execute() method in the interface where all instances of the string '{operationName}' is replaced with 'Execute'\n  \"optionalParameters\": false, // Optional. Default=false\n  \"outputFolder\": \"../CustomOutput\" // Optional. Default=./Generated\n  \"outputFilename\": \"RefitInterface.cs\", // Optional. Default=Output.cs for CLI tool\n  \"contractsOutputFolder\": \"../Contracts\", // Optional. Default=NULL\n  \"generateMultipleFiles\": false, // Optional. Default=false\n  \"additionalNamespaces\": [ // Optional\n    \"Namespace1\",\n    \"Namespace2\"\n  ],\n  \"includeTags\": [ // Optional. OpenAPI Tag to include when generating code\n    \"Pet\",\n    \"Store\",\n    \"User\"\n  ],\n  \"includePathMatches\": [ // Optional. Only include Paths that match the provided regular expression\n    \"^/pet/.*\",\n    \"^/store/.*\"\n  ],\n  \"trimUnusedSchema\": false, // Optional. Default=false\n  \"keepSchemaPatterns\": [ // Optional. Force to keep matching schema, uses regular expressions. Use together with trimUnusedSchema=true\n    \"^Model$\",\n    \"^Person.+\"\n  ],\n  \"includeInheritanceHierarchy\": false, // Optional. Default=false. Set to true to keep all possible type-instances of inheritance/union types. This works in conjunction with trimUnusedSchema.\n  \"generateDefaultAdditionalProperties\": true, // Optional. default=true\n  \"operationNameGenerator\": \"Default\", // Optional. May be one of Default, MultipleClientsFromOperationId, MultipleClientsFromPathSegments, MultipleClientsFromFirstTagAndOperationId, MultipleClientsFromFirstTagAndOperationName, MultipleClientsFromFirstTagAndPathSegments, SingleClientFromOperationId, SingleClientFromPathSegments\n  \"immutableRecords\": false,\n  \"useDynamicQuerystringParameters\": true, // Optional. Default=false\n  \"usePolymorphicSerialization\": true, // Optional. Default=false\n  \"generateDisposableClients\": true, // Optional. Default=false\n  \"dependencyInjectionSettings\": { // Optional\n    \"baseUrl\": \"https://petstore3.swagger.io/api/v3\", // Optional. Leave this blank to set the base address manually\n    \"httpMessageHandlers\": [ // Optional\n        \"AuthorizationMessageHandler\",\n        \"TelemetryMessageHandler\"\n    ],\n    \"usePolly\": true, // DEPRECATED - Use \"transientErrorHandler\": \"None|Polly|HttpResilience\" instead\n    \"transientErrorHandler\": \"HttpResilience\", // Optional. Set this to configure transient error handling with a retry policy that uses a jittered backoff. May be one of None, Polly, HttpResilience\n    \"maxRetryCount\": 3, // Optional. Default=6\n    \"firstBackoffRetryInSeconds\": 0.5 // Optional. Default=1.0\n  },\n  \"apizrSettings\": { // Optional\n    \"withRequestOptions\": true, // Optional. Default=true\n    \"withRegistrationHelper\": true, // Optional. Default=false\n    \"withCacheProvider\": \"InMemory\", // Optional. Values=None|Akavache|MonkeyCache|InMemory|DistributedAsString|DistributedAsByteArray. Default=None\n    \"withPriority\": true, // Optional. Default=false\n    \"withMediation\": true, // Optional. Default=false\n    \"withOptionalMediation\": true, // Optional. Default=false\n    \"withMappingProvider\": \"AutoMapper\", // Optional. Values=None|AutoMapper|Mapster. Default=None\n    \"withFileTransfer\": true // Optional. Default=false\n  },\n  \"codeGeneratorSettings\": { // Optional. Default settings are the values set in this example\n    \"requiredPropertiesMustBeDefined\": true,\n    \"generateDataAnnotations\": true,\n    \"anyType\": \"object\",\n    \"dateType\": \"System.DateTimeOffset\",\n    \"dateTimeType\": \"System.DateTimeOffset\",\n    \"timeType\": \"System.TimeSpan\",\n    \"timeSpanType\": \"System.TimeSpan\",\n    \"arrayType\": \"System.Collections.Generic.ICollection\",\n    \"dictionaryType\": \"System.Collections.Generic.IDictionary\",\n    \"arrayInstanceType\": \"System.Collections.ObjectModel.Collection\",\n    \"dictionaryInstanceType\": \"System.Collections.Generic.Dictionary\",\n    \"arrayBaseType\": \"System.Collections.ObjectModel.Collection\",\n    \"dictionaryBaseType\": \"System.Collections.Generic.Dictionary\",\n    \"integerType\": \"Int32\", // Optional. Default=\"Int32\". The .NET type for OpenAPI integers without a format. Possible values: \"Int32\", \"Int64\"\n    \"propertySetterAccessModifier\": \"\",\n    \"generateImmutableArrayProperties\": false,\n    \"generateImmutableDictionaryProperties\": false,\n    \"handleReferences\": false,\n    \"jsonSerializerSettingsTransformationMethod\": null,\n    \"generateJsonMethods\": false,\n    \"enforceFlagEnums\": false,\n    \"inlineNamedDictionaries\": false,\n    \"inlineNamedTuples\": true,\n    \"inlineNamedArrays\": false,\n    \"generateOptionalPropertiesAsNullable\": false,\n    \"generateNullableReferenceTypes\": false,\n    \"generateNativeRecords\": false,\n    \"generateDefaultValues\": true,\n    \"inlineNamedAny\": false,\n    \"inlineJsonConverters\": true, // Optional. Default=true. Set to false to not generate JsonConverter attributes for enum properties\n    \"dateFormat\": \"yyyy-MM-dd\",\n    \"dateTimeFormat\": \"yyyy-MM-dd\",\n    \"excludedTypeNames\": [\n      \"ExcludedTypeFoo\",\n      \"ExcludedTypeBar\"\n    ],\n    \"customTemplateDirectory\": \"./path/to/directory/\" // Optional. See \u003chttps://github.com/RicoSuter/NSwag/wiki/Templates\u003e\n  }\n}\n```\n\n- `openApiPath` - points to the OpenAPI Specifications file. This can be the path to a file stored on disk, relative to the `.refitter` file. This can also be a URL to a remote file that will be downloaded over HTTP/HTTPS\n- `namespace` - the namespace used in the generated code. If not specified, this defaults to `GeneratedCode`\n- `naming.useOpenApiTitle` - a boolean indicating whether the OpenApi title should be used. Default is `true`\n- `naming.interfaceName` - the name of the generated interface. The generated code will automatically prefix this with `I` so if this set to `MyApiClient` then the generated interface is called `IMyApiClient`. Default is `ApiClient`\n- `generateContracts` - a boolean indicating whether contracts should be generated. A use case for this is several API clients use the same contracts. Default is `true`\n- `generateClients`:  - a boolean indicating whether clients should be generated. A use case for this is to seperate clients and contracts in two generation\n- `generateXmlDocCodeComments` - a boolean indicating whether XML doc comments should be generated. Default is `true`\n- `generateStatusCodeComments` - a boolean indicating whether the XML docs for `ApiException` and `IApiResponse` contain detailed descriptions for every documented status code. Default is `true`\n- `addAutoGeneratedHeader` - a boolean indicating whether XML doc comments should be generated. Default is `true`\n- `addAcceptHeaders` -  a boolean indicating whether to add accept headers [Headers(\"Accept: application/json\")]. Default is `true`\n- `returnIApiResponse` - a boolean indicating whether to return `IApiResponse\u003cT\u003e` objects. Default is `false`\n- `responseTypeOverride` - a dictionary with operation ids (as specified in the OpenAPI document) and a particular return type to use. The types are wrapped in a task, but otherwise unmodified (so make sure to specify or import their namespaces). Default is `{}`\n- `generateOperationHeaders` - a boolean indicating whether to use operation headers in the generated methods. Default is `true`\n- `ignoredOperationHeaders` - A collection of headers to omit from operation signatures. Default is `[]`\n- `typeAccessibility` - the generated type accessibility. Possible values are `Public` and `Internal`. Default is `Public`\n- `useCancellationTokens` - Use cancellation tokens in the generated methods. Default is `false`\n- `useIsoDateFormat` - Set to `true` to explicitly format date query string parameters in ISO 8601 standard date format using delimiters (for example: 2023-06-15). Default is `false`\n- `multipleInterfaces` - Set to `ByEndpoint` to generate an interface for each endpoint, or `ByTag` to group Endpoints by their Tag (like SwaggerUI groups them).\n- `outputFolder` - a string describing a relative path to a desired output folder. Default is `./Generated`\n- `outputFilename` - Output filename. Default is `Output.cs` when used from the CLI tool, otherwise its the .refitter filename. So `Petstore.refitter` becomes `Petstore.cs`.\n- `additionalNamespaces` - A collection of additional namespaces to include in the generated file. A use case for this is when you want to reuse contracts from a different namespace than the generated code. Default is empty\n- `includeTags` - A collection of tags to use a filter for including endpoints that contain this tag.\n- `includePathMatches` - A collection of regular expressions used to filter paths.\n- `generateDeprecatedOperations` - a boolean indicating whether deprecated operations should be generated or skipped. Default is `true`\n- `operationNameTemplate` - Generate operation names using pattern. This must contain the string {operationName}. An example usage of this could be `{operationName}Async` to suffix all method names with Async. When using multiple interfaces with `ByEndpoint`, this is name of the Execute() method in the interface where all instances of the string '{operationName}' is replaced with 'Execute'\n- `optionalParameters` - Generate non-required parameters as nullable optional parameters\n- `trimUnusedSchema` - Removes unreferenced components schema to keep the generated output to a minimum\n- `keepSchemaPatterns`: A collection of regular expressions to force to keep matching schema. This is used together with `trimUnusedSchema`\n- `includeInheritanceHierarchy`: Set to true to keep all possible type-instances of inheritance/union types. If this is false only directly referenced types will be kept. This works in conjunction with `trimUnusedSchema`\n- `generateDefaultAdditionalProperties`: Set to `false` to skip default additional properties. Default is `true`\n- `operationNameGenerator`: The NSwag `IOperationNameGenerator` implementation to use. See \u003chttps://refitter.github.io/api/Refitter.Core.OperationNameGeneratorTypes.html\u003e\n- `immutableRecords`: Set to `true` to generate contracts as immutable records instead of classes. Default is `false`\n- `useDynamicQuerystringParameters`: Set to `true` to wrap multiple query parameters into a single complex one. Default is `false` (no wrapping). See \u003chttps://github.com/reactiveui/refit?tab=readme-ov-file#dynamic-querystring-parameters\u003e for more information.\n- `dependencyInjectionSettings` - Setting this will generated extension methods to `IServiceCollection` for configuring Refit clients\n  - `baseUrl` - Used as the HttpClient base address. Leave this blank to manually set the base URL\n  - `httpMessageHandlers` - A collection of `HttpMessageHandler` that is added to the HttpClient pipeline\n  - `usePolly` - Set this to `true` to configure the HttpClient to use Polly using a retry policy with a jittered backoff.  This is **DEPRECATED**, use `transientErrorHandler` instead\n  - `transientErrorHandler`: Set this to configure transient error handling with a retry policy that uses a jittered backoff. See \u003chttps://refitter.github.io/api/Refitter.Core.TransientErrorHandler.html\u003e\n  - `firstBackoffRetryInSeconds` - This is the duration of the initial retry backoff. Default is 1 second\n- `apizrSettings` - Setting this will format Refit interface to be managed by Apizr. See \u003chttps://www.apizr.net\u003e for more information\n  - `withRequestOptions` - Tells if the Refit interface methods should have a final IApizrRequestOptions options parameter\n  - `withRegistrationHelper` - Tells if Refitter should generate Apizr registration helpers (extended with dependencyInjectionSettings set, otherwise static)\n  - `withCacheProvider` - Set the cache provider to be used\n  - `withPriority` - Tells if Apizr should handle request priority\n  - `withMediation` - Tells if Apizr should handle request mediation (extended only)\n  - `withOptionalMediation` - Tells if Apizr should handle optional request mediation (extended only)\n  - `withMappingProvider` - Set the mapping provider to be used\n  - `withFileTransfer` - Tells if Apizr should handle file transfer\n- `codeGeneratorSettings` - Setting this allows customization of the NSwag generated types and contracts\n  - `requiredPropertiesMustBeDefined` - Default is true,\n  - `generateDataAnnotations` - Default is true,\n  - `anyType` - Default is `object`,\n  - `dateType` - Default is `System.DateTimeOffset`,\n  - `dateTimeType` - Default is `System.DateTimeOffset`,\n  - `timeType` - Default is `System.TimeSpan`,\n  - `timeSpanType` - Default is `System.TimeSpan`,\n  - `arrayType` - Default is `System.Collections.Generic.ICollection`,\n  - `dictionaryType` - Default is `System.Collections.Generic.IDictionary`,\n  - `arrayInstanceType` - Default is `System.Collections.ObjectModel.Collection`,\n  - `dictionaryInstanceType` - Default is `System.Collections.Generic.Dictionary`,\n  - `arrayBaseType` - Default is `System.Collections.ObjectModel.Collection`,\n  - `dictionaryBaseType` - Default is `System.Collections.Generic.Dictionary`,\n  - `integerType` - Default is `Int32`. The .NET type to use for OpenAPI integer types without a format specifier. Possible values: `Int32`, `Int64`\n  - `propertySetterAccessModifier` - Default is ``,\n  - `generateImmutableArrayProperties` - Default is false,\n  - `generateImmutableDictionaryProperties` - Default is false,\n  - `handleReferences` - Default is false,\n  - `jsonSerializerSettingsTransformationMethod` - Default is null,\n  - `generateJsonMethods` - Default is false,\n  - `enforceFlagEnums` - Default is false,\n  - `inlineNamedDictionaries` - Default is false,\n  - `inlineNamedTuples` - Default is true,\n  - `inlineNamedArrays` - Default is false,\n  - `generateOptionalPropertiesAsNullable` - Default is false,\n  - `generateNullableReferenceTypes` - Default is false,\n  - `generateNativeRecords` - Default is false\n  - `generateDefaultValues` - Default is true\n  - `inlineNamedAny` - Default is false\n  - `inlineJsonConverters` - Default is true. When set to false, enum properties will not have `[JsonConverter(typeof(JsonStringEnumConverter))]` attributes\n  - `dateFormat` - Default is null\n  - `dateTimeFormat` - Default is null\n  - `excludedTypeNames` - Default is empty\n\n## MSBuild\n\nThis is the recommended approach for generating code from OpenAPI specifications at build time. The MSBuild approach integrates seamlessly into your build pipeline, automatically generates code at build time\n\n### Why Choose MSBuild over Source Generator?\n\nThe MSBuild task offers several advantages over the Source Generator:\n\n- **Build-time Generation**: Code is generated during the pre-build process, which ensures that the Refit source generator will work without needing to rebuild a second time.\n- **No Manual Commits**: Generated files are created automatically during build, eliminating the need to commit generated code to source control\n- **No Additional Tools Required**: Works out of the box without requiring separate CLI tool installation\n\n### Installation\n\nThe MSBuild task is distributed as a NuGet package:\n\n```shell\ndotnet add package Refitter.MSBuild\n```\n\n### Usage\n\nOnce installed, the MSBuild task will automatically scan your project for `.refitter` files and generate code during build. Simply create a `.refitter` file in your project directory with your OpenAPI specification settings.\n\nThe MSBuild package includes a custom `.target` file which executes the `RefitterGenerateTask` custom task:\n\n```xml\n\u003cUsingTask TaskName=\"RefitterGenerateTask\"\n           AssemblyFile=\"$(MSBuildThisFileDirectory)Refitter.MSBuild.dll\"\n           Condition=\"Exists('$(MSBuildThisFileDirectory)Refitter.MSBuild.dll')\" /\u003e\n\u003cTarget Name=\"RefitterGenerate\" BeforeTargets=\"BeforeCompile\"\u003e\n    \u003cRefitterGenerateTask ProjectFileDirectory=\"$(MSBuildProjectDirectory)\"\n                          DisableLogging=\"$(RefitterNoLogging)\"\n                          SkipValidation=\"$(RefitterSkipValidation)\"\u003e\n        \u003cOutput TaskParameter=\"GeneratedFiles\" ItemName=\"RefitterGeneratedFiles\" /\u003e\n    \u003c/RefitterGenerateTask\u003e\n    \u003cItemGroup\u003e\n        \u003cCompile Include=\"@(RefitterGeneratedFiles)\" /\u003e\n    \u003c/ItemGroup\u003e\n\u003c/Target\u003e\n```\n\nThe `RefitterGenerateTask` task will scan the project folder for `.refitter` files and execute them all.\n\n### Configuration\n\nBy default, telemetry collection is enabled. To opt-out, add the following to your `.csproj` file:\n\n```xml\n\u003cPropertyGroup\u003e\n  \u003cRefitterNoLogging\u003etrue\u003c/RefitterNoLogging\u003e\n\u003c/PropertyGroup\u003e\n```\n\nYou can also skip OpenAPI validation by setting:\n\n```xml\n\u003cPropertyGroup\u003e\n  \u003cRefitterSkipValidation\u003etrue\u003c/RefitterSkipValidation\u003e\n\u003c/PropertyGroup\u003e\n```\n\n### Example\n\nCreate a `.refitter` file in your project:\n\n```json\n{\n  \"openApiPath\": \"https://petstore3.swagger.io/api/v3/openapi.json\",\n  \"namespace\": \"Petstore.Api\",\n  \"outputFolder\": \"./Generated\"\n}\n```\n\nNow, every time you build your project, Refitter will automatically generate the API client code based on your OpenAPI specification.\n\n### Alternative: Using CLI with MSBuild Exec Task\n\nIf you prefer more control or need to use the CLI tool directly, you can invoke the Refitter CLI from MSBuild pre-build events:\n\n```xml\n\u003cTarget Name=\"Refitter\" AfterTargets=\"PreBuildEvent\"\u003e\n    \u003cExec WorkingDirectory=\"$(ProjectDir)\" Command=\"dotnet tool restore\" /\u003e\n    \u003cExec WorkingDirectory=\"$(ProjectDir)\" Command=\"refitter --settings-file .refitter --skip-validation\" /\u003e\n\u003c/Target\u003e\n```\n\nThis approach requires that Refitter is installed as a local tool using a manifest file, as described in [this tutorial](https://learn.microsoft.com/en-us/dotnet/core/tools/local-tools-how-to-use?WT.mc_id=DT-MVP-5004822).\n\n## Source Generator\n\n\u003e **Note:** We recommend using the [MSBuild](#msbuild) approach instead of the Source Generator because the code is generated at pre-compile, ensuring that the Refit source generator will generated code from the Refit interfaces added to the compilation\n\nRefitter is available as a C# Source Generator that uses the [Refitter.Core](https://github.com/christianhelle/refitter/tree/main/src/Refitter.Core) library for generating a REST API Client using the [Refit](https://github.com/reactiveui/refit) library. Refitter can generate the Refit interface from OpenAPI specifications. Refitter could format the generated Refit interface to be managed by [Apizr](https://www.apizr.net) and generate some registration helpers too.\n\nThe Refitter source generator is a bit untraditional in a sense that it creates a folder called `Generated` in the same location as the `.refitter` file and generates files to disk under the `Generated` folder (can be changed with `--outputFolder`). The source generator output should be included in the project and committed to source control. This is done because there is no other way to trigger the Refit source generator to pickup the Refitter generated code\n\n***(Translation: I couldn't for the life of me figure how to get that to work, sorry)***\n\n### Installation\n\nThe source generator is distributed as a NuGet package and should be installed to the project that will contain the generated code\n\n```shell\ndotnet add package Refitter.SourceGenerator\n```\n\n### Usage\n\nThis source generator generates code based on any `.refitter` file included to the project as `AdditionalFiles`.\n\nThe generator can automatically detect all `.refitter` files inside the project that referenced the `Refitter.SourceGenerator` package and there is no need to include them manually as `AdditionalFiles`\n\n# Using the generated code\n\nHere's an example generated output from the [Swagger Petstore example](https://petstore3.swagger.io) using the default settings\n\n**CLI Tool**\n\n```bash\nrefitter ./openapi.json --namespace \"Your.Namespace.Of.Choice.GeneratedCode\"\n```\n\n**Source Generator ***.refitter*** file**\n\n```json\n{\n  \"openApiPath\": \"./openapi.json\",\n  \"namespace\": \"Your.Namespace.Of.Choice.GeneratedCode\"\n}\n```\n\n**Output (Snippet)**\n\nFull output is available [here](docs/DefaultOutput.cs)\n\n```cs\nusing Refit;\nusing System.Collections.Generic;\nusing System.Text.Json.Serialization;\nusing System.Threading.Tasks;\n\nnamespace Your.Namespace.Of.Choice.GeneratedCode\n{\n    [System.CodeDom.Compiler.GeneratedCode(\"Refitter\", \"1.0.0.0\")]\n    public partial interface ISwaggerPetstore\n    {\n        /// \u003csummary\u003eUpdate an existing pet\u003c/summary\u003e\n        /// \u003cremarks\u003eUpdate an existing pet by Id\u003c/remarks\u003e\n        /// \u003cparam name=\"body\"\u003eUpdate an existent pet in the store\u003c/param\u003e\n        /// \u003creturns\u003eSuccessful operation\u003c/returns\u003e\n        /// \u003cexception cref=\"ApiException\"\u003e\n        /// Thrown when the request returns a non-success status code:\n        /// \u003clist type=\"table\"\u003e\n        /// \u003clistheader\u003e\n        /// \u003cterm\u003eStatus\u003c/term\u003e\n        /// \u003cdescription\u003eDescription\u003c/description\u003e\n        /// \u003c/listheader\u003e\n        /// \u003citem\u003e\n        /// \u003cterm\u003e400\u003c/term\u003e\n        /// \u003cdescription\u003eInvalid ID supplied\u003c/description\u003e\n        /// \u003c/item\u003e\n        /// \u003citem\u003e\n        /// \u003cterm\u003e404\u003c/term\u003e\n        /// \u003cdescription\u003ePet not found\u003c/description\u003e\n        /// \u003c/item\u003e\n        /// \u003citem\u003e\n        /// \u003cterm\u003e405\u003c/term\u003e\n        /// \u003cdescription\u003eValidation exception\u003c/description\u003e\n        /// \u003c/item\u003e\n        /// \u003c/list\u003e\n        /// \u003c/exception\u003e\n        [Headers(\"Accept: application/xml, application/json\")]\n        [Put(\"/pet\")]\n        Task\u003cPet\u003e UpdatePet([Body] Pet body);\n\n        ...\n    }\n}\n```\n\nHere's an example generated output from the [Swagger Petstore example](https://petstore3.swagger.io) configured to wrap the return type in `IApiResponse\u003cT\u003e`\n\n**CLI Tool**\n\n```bash\nrefitter ./openapi.json --namespace \"Your.Namespace.Of.Choice.GeneratedCode\" --use-api-response\n```\n\n**Source Generator ***.refitter*** file**\n\n```json\n{\n  \"openApiPath\": \"./openapi.json\",\n  \"namespace\": \"Your.Namespace.Of.Choice.GeneratedCode\",\n  \"returnIApiResponse\": true\n}\n```\n\n**Output (Snippet)**\n\nFull output is available [here](docs/IApiResponseOutput.cs)\n\n```cs\nusing Refit;\nusing System.Collections.Generic;\nusing System.Text.Json.Serialization;\nusing System.Threading.Tasks;\n\nnamespace Your.Namespace.Of.Choice.GeneratedCode\n{\n    [System.CodeDom.Compiler.GeneratedCode(\"Refitter\", \"1.0.0.0\")]\n    public partial interface ISwaggerPetstore\n    {\n        /// \u003csummary\u003eUpdate an existing pet\u003c/summary\u003e\n        /// \u003cremarks\u003eUpdate an existing pet by Id\u003c/remarks\u003e\n        /// \u003cparam name=\"body\"\u003eUpdate an existent pet in the store\u003c/param\u003e\n        /// \u003creturns\u003e\n        /// A \u003csee cref=\"Task\"/\u003e representing the \u003csee cref=\"IApiResponse\"/\u003e instance containing the result:\n        /// \u003clist type=\"table\"\u003e\n        /// \u003clistheader\u003e\n        /// \u003cterm\u003eStatus\u003c/term\u003e\n        /// \u003cdescription\u003eDescription\u003c/description\u003e\n        /// \u003c/listheader\u003e\n        /// \u003citem\u003e\n        /// \u003cterm\u003e200\u003c/term\u003e\n        /// \u003cdescription\u003eSuccessful operation\u003c/description\u003e\n        /// \u003c/item\u003e\n        /// \u003citem\u003e\n        /// \u003cterm\u003e400\u003c/term\u003e\n        /// \u003cdescription\u003eInvalid ID supplied\u003c/description\u003e\n        /// \u003c/item\u003e\n        /// \u003citem\u003e\n        /// \u003cterm\u003e404\u003c/term\u003e\n        /// \u003cdescription\u003ePet not found\u003c/description\u003e\n        /// \u003c/item\u003e\n        /// \u003citem\u003e\n        /// \u003cterm\u003e405\u003c/term\u003e\n        /// \u003cdescription\u003eValidation exception\u003c/description\u003e\n        /// \u003c/item\u003e\n        /// \u003c/list\u003e\n        /// \u003c/returns\u003e\n        [Headers(\"Accept: application/xml, application/json\")]\n        [Put(\"/pet\")]\n        Task\u003cIApiResponse\u003cPet\u003e\u003e UpdatePet([Body] Pet body);\n\n        ...\n    }\n}\n```\n\nHere's an example generated output from the [Swagger Petstore example](https://petstore3.swagger.io) configured to generate an interface for each endpoint\n\n**CLI Tool**\n\n```bash\nrefitter ./openapi.json --namespace \"Your.Namespace.Of.Choice.GeneratedCode\" --multiple-interfaces ByEndpoint\n```\n\n**Source Generator ***.refitter*** file**\n\n```json\n{\n  \"openApiPath\": \"./openapi.json\",\n  \"namespace\": \"Your.Namespace.Of.Choice.GeneratedCode\",\n  \"multipleInterfaces\": \"ByEndpoint\"\n}\n```\n\n**Output (Snippet)**\n\nFull output is available [here](docs/IApiResponseOutput.cs)\n\n```cs\n/// \u003csummary\u003eUpdate an existing pet\u003c/summary\u003e\n[System.CodeDom.Compiler.GeneratedCode(\"Refitter\", \"1.0.0.0\")]\npublic partial interface IUpdatePetEndpoint\n{\n    /// \u003csummary\u003eUpdate an existing pet\u003c/summary\u003e\n    /// \u003cremarks\u003eUpdate an existing pet by Id\u003c/remarks\u003e\n    /// \u003cparam name=\"body\"\u003eUpdate an existent pet in the store\u003c/param\u003e\n    /// \u003creturns\u003eSuccessful operation\u003c/returns\u003e\n    /// \u003cexception cref=\"ApiException\"\u003e\n    /// Thrown when the request returns a non-success status code:\n    /// \u003clist type=\"table\"\u003e\n    /// \u003clistheader\u003e\n    /// \u003cterm\u003eStatus\u003c/term\u003e\n    /// \u003cdescription\u003eDescription\u003c/description\u003e\n    /// \u003c/listheader\u003e\n    /// \u003citem\u003e\n    /// \u003cterm\u003e400\u003c/term\u003e\n    /// \u003cdescription\u003eInvalid ID supplied\u003c/description\u003e\n    /// \u003c/item\u003e\n    /// \u003citem\u003e\n    /// \u003cterm\u003e404\u003c/term\u003e\n    /// \u003cdescription\u003ePet not found\u003c/description\u003e\n    /// \u003c/item\u003e\n    /// \u003citem\u003e\n    /// \u003cterm\u003e405\u003c/term\u003e\n    /// \u003cdescription\u003eValidation exception\u003c/description\u003e\n    /// \u003c/item\u003e\n    /// \u003c/list\u003e\n    /// \u003c/exception\u003e\n    [Headers(\"Accept: application/xml, application/json\")]\n    [Put(\"/pet\")]\n    Task\u003cPet\u003e Execute([Body] Pet body);\n}\n```\n\nHere's an example generated output from the [Swagger Petstore example](https://petstore3.swagger.io) configured to generate an interface with dynamic querystring parameters\n\n**CLI Tool**\n\n```bash\nrefitter ./openapi.json --namespace \"Your.Namespace.Of.Choice.GeneratedCode\" --use-dynamic-querystring-parameters\n```\n\n**Output (Snippet)**\n\nFull output is available [here](docs/DynamicQueryStringParameters.cs)\n\n```cs\n[System.CodeDom.Compiler.GeneratedCode(\"Refitter\", \"1.0.0.0\")]\npublic partial interface ISwaggerPetstoreOpenAPI30\n{\n    /// \u003csummary\u003eUpdates a pet in the store with form data\u003c/summary\u003e\n    /// \u003cparam name=\"petId\"\u003eID of pet that needs to be updated\u003c/param\u003e\n    /// \u003cparam name=\"queryParams\"\u003eThe dynamic querystring parameter wrapping all others.\u003c/param\u003e\n    /// \u003creturns\u003eA \u003csee cref=\"Task\"/\u003e that completes when the request is finished.\u003c/returns\u003e\n    /// \u003cexception cref=\"ApiException\"\u003e\n    /// Thrown when the request returns a non-success status code:\n    /// \u003clist type=\"table\"\u003e\n    /// \u003clistheader\u003e\n    /// \u003cterm\u003eStatus\u003c/term\u003e\n    /// \u003cdescription\u003eDescription\u003c/description\u003e\n    /// \u003c/listheader\u003e\n    /// \u003citem\u003e\n    /// \u003cterm\u003e405\u003c/term\u003e\n    /// \u003cdescription\u003eInvalid input\u003c/description\u003e\n    /// \u003c/item\u003e\n    /// \u003c/list\u003e\n    /// \u003c/exception\u003e\n    [Post(\"/pet/{petId}\")]\n    Task UpdatePetWithForm(long petId, [Query] UpdatePetWithFormQueryParams queryParams);\n}\n\npublic class UpdatePetWithFormQueryParams\n{\n    /// \u003csummary\u003e\n    /// Name of pet that needs to be updated\n    /// \u003c/summary\u003e\n    [Query]\n    public string Name { get; set; }\n\n    /// \u003csummary\u003e\n    /// Status of pet that needs to be updated\n    /// \u003c/summary\u003e\n    [Query]\n    public string Status { get; set; }\n}\n```\n\n## RestService\n\nHere's an example usage of the generated code above\n\n```cs\nusing Refit;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace Your.Namespace.Of.Choice.GeneratedCode;\n\ninternal class Program\n{\n    private static async Task Main(string[] args)\n    {\n        var client = RestService.For\u003cISwaggerPetstore\u003e(\"https://petstore3.swagger.io/api/v3\");\n        var pet = await client.GetPetById(1);\n\n        Console.WriteLine(\"## Using Task\u003cT\u003e as return type ##\");\n        Console.WriteLine($\"Name: {pet.Name}\");\n        Console.WriteLine($\"Category: {pet.Category.Name}\");\n        Console.WriteLine($\"Status: {pet.Status}\");\n        Console.WriteLine();\n\n        var client2 = RestService.For\u003cWithApiResponse.ISwaggerPetstore\u003e(\"https://petstore3.swagger.io/api/v3\");\n        var response = await client2.GetPetById(2);\n\n        Console.WriteLine(\"## Using Task\u003cIApiResponse\u003cT\u003e\u003e as return type ##\");\n        Console.WriteLine($\"HTTP Status Code: {response.StatusCode}\");\n        Console.WriteLine($\"Name: {response.Content.Name}\");\n        Console.WriteLine($\"Category: {response.Content.Category.Name}\");\n        Console.WriteLine($\"Status: {response.Content.Status}\");\n    }\n}\n```\n\nThe `RestService` class generates an implementation of `ISwaggerPetstore` that uses `HttpClient` to make its calls.\n\nThe code above when run will output something like this:\n\n```\n## Using Task\u003cT\u003e as return type ##\nName: Gatitotototo\nCategory: Chaucito\nStatus: Sold\n\n## Using Task\u003cIApiResponse\u003cT\u003e\u003e as return type ##\nHTTP Status Code: OK\nName: Gatitotototo\nCategory: Chaucito\nStatus: Sold\n```\n\n## ASP.NET Core and HttpClientFactory\n\nHere's an example Minimal API with the [`Refit.HttpClientFactory`](https://www.nuget.org/packages/Refit.HttpClientFactory) library:\n\n```cs\nusing Refit;\nusing Your.Namespace.Of.Choice.GeneratedCode;\n\nvar builder = WebApplication.CreateBuilder(args);\nbuilder.Services.AddEndpointsApiExplorer();\nbuilder.Services.AddSwaggerGen();\nbuilder.Services\n    .AddRefitClient\u003cISwaggerPetstore\u003e()\n    .ConfigureHttpClient(c =\u003e c.BaseAddress = new Uri(\"https://petstore3.swagger.io/api/v3\"));\n\nvar app = builder.Build();\napp.MapGet(\n        \"/pet/{id:long}\",\n        async (ISwaggerPetstore petstore, long id) =\u003e\n        {\n            try\n            {\n                return Results.Ok(await petstore.GetPetById(id));\n            }\n            catch (Refit.ApiException e)\n            {\n                return Results.StatusCode((int)e.StatusCode);\n            }\n        })\n    .WithName(\"GetPetById\")\n    .WithOpenApi();\n\napp.UseHttpsRedirection();\napp.UseSwaggerUI();\napp.UseSwagger();\napp.Run();\n```\n\n.NET Core supports registering the generated `ISwaggerPetstore` interface via `HttpClientFactory`\n\nThe following request to the API above\n\n```shell\ncurl -X 'GET' 'https://localhost:5001/pet/1' -H 'accept: application/json'\n```\n\nReturns a response that looks something like this:\n\n```json\n{\n  \"id\": 1,\n  \"name\": \"Special_char_owner_!@#$^\u0026()`.testing\",\n  \"photoUrls\": [\n    \"https://petstore3.swagger.io/resources/photos/623389095.jpg\"\n  ],\n  \"tags\": [],\n  \"status\": \"Sold\"\n}\n```\n\n## Dependency Injection\n\nRefitter supports generating bootstrapping code that allows the user to conveniently configure all generated Refit interfaces by calling a single extension method to `IServiceCollection`.\n\nThis is enabled through the `.refitter` settings file like this:\n\n```json\n{\n  \"openApiPath\": \"../OpenAPI/v3.0/petstore.json\",\n  \"namespace\": \"Petstore\",\n  \"dependencyInjectionSettings\": {\n    \"baseUrl\": \"https://petstore3.swagger.io/api/v3\",\n    \"httpMessageHandlers\": [ \"TelemetryDelegatingHandler\" ],\n    \"transientErrorHandler\": \"Polly\",\n    \"maxRetryCount\": 3,\n    \"firstBackoffRetryInSeconds\": 0.5\n  }\n}\n```\n\nwhich will generate an extension method to `IServiceCollection` called `ConfigureRefitClients()`. The generated extension method depends on [`Refit.HttpClientFactory`](https://www.nuget.org/packages/Refit.HttpClientFactory) library and looks like this:\n\n```cs\npublic static IServiceCollection ConfigureRefitClients(\n    this IServiceCollection services,\n    Action\u003cIHttpClientBuilder\u003e? builder = default,\n    RefitSettings? settings = default)\n{\n    var clientBuilderISwaggerPetstore = services\n        .AddRefitClient\u003cISwaggerPetstore\u003e(settings)\n        .ConfigureHttpClient(c =\u003e c.BaseAddress = new Uri(\"https://petstore3.swagger.io/api/v3\"))\n        .AddHttpMessageHandler\u003cTelemetryDelegatingHandler\u003e();\n\n    clientBuilderISwaggerPetstore\n        .AddPolicyHandler(\n            HttpPolicyExtensions\n                .HandleTransientHttpError()\n                .WaitAndRetryAsync(\n                    Backoff.DecorrelatedJitterBackoffV2(\n                        TimeSpan.FromSeconds(0.5),\n                        3)));\n\n    builder?.Invoke(clientBuilderISwaggerPetstore);\n\n    return services;\n}\n```\n\nThis comes in handy especially when generating multiple interfaces, by tag or endpoint. For example, the following `.refitter` settings file\n\n```json\n{\n  \"openApiPath\": \"../OpenAPI/v3.0/petstore.json\",\n  \"namespace\": \"Petstore\",\n  \"multipleInterfaces\": \"ByTag\",\n  \"dependencyInjectionSettings\": {\n    \"baseUrl\": \"https://petstore3.swagger.io/api/v3\",\n    \"httpMessageHandlers\": [ \"TelemetryDelegatingHandler\" ],\n    \"transientErrorHandler\": \"Polly\",\n    \"maxRetryCount\": 3,\n    \"firstBackoffRetryInSeconds\": 0.5\n  }\n}\n```\n\nWill generate a single `ConfigureRefitClients()` extension methods that may contain dependency injection configuration code for multiple interfaces like this\n\n```csharp\npublic static IServiceCollection ConfigureRefitClients(\n    this IServiceCollection services,\n    Action\u003cIHttpClientBuilder\u003e? builder = default,\n    RefitSettings? settings = default)\n{\n    var clientBuilderIPetApi = services\n        .AddRefitClient\u003cIPetApi\u003e(settings)\n        .ConfigureHttpClient(c =\u003e c.BaseAddress = new Uri(\"https://petstore3.swagger.io/api/v3\"))\n        .AddHttpMessageHandler\u003cTelemetryDelegatingHandler\u003e();\n\n    clientBuilderIPetApi\n        .AddPolicyHandler(\n            HttpPolicyExtensions\n                .HandleTransientHttpError()\n                .WaitAndRetryAsync(\n                    Backoff.DecorrelatedJitterBackoffV2(\n                        TimeSpan.FromSeconds(0.5),\n                        3)));\n\n    builder?.Invoke(clientBuilderIPetApi);\n\n    var clientBuilderIStoreApi = services\n        .AddRefitClient\u003cIStoreApi\u003e(settings)\n        .ConfigureHttpClient(c =\u003e c.BaseAddress = new Uri(\"https://petstore3.swagger.io/api/v3\"))\n        .AddHttpMessageHandler\u003cTelemetryDelegatingHandler\u003e();\n\n    clientBuilderIStoreApi\n        .AddPolicyHandler(\n            HttpPolicyExtensions\n                .HandleTransientHttpError()\n                .WaitAndRetryAsync(\n                    Backoff.DecorrelatedJitterBackoffV2(\n                        TimeSpan.FromSeconds(0.5),\n                        3)));\n\n    builder?.Invoke(clientBuilderIStoreApi);\n\n    var clientBuilderIUserApi = services\n        .AddRefitClient\u003cIUserApi\u003e(settings)\n        .ConfigureHttpClient(c =\u003e c.BaseAddress = new Uri(\"https://petstore3.swagger.io/api/v3\"))\n        .AddHttpMessageHandler\u003cTelemetryDelegatingHandler\u003e();\n\n    clientBuilderIUserApi\n        .AddPolicyHandler(\n            HttpPolicyExtensions\n                .HandleTransientHttpError()\n                .WaitAndRetryAsync(\n                    Backoff.DecorrelatedJitterBackoffV2(\n                        TimeSpan.FromSeconds(0.5),\n                        3)));\n\n    builder?.Invoke(clientBuilderIUserApi);\n\n    return services;\n}\n```\n\nPersonally, they I use Refitter is to generate an interface per endpoint, so when generating code for a large and complex API, I might have several interfaces.\n\n## Apizr\n\n[Apizr](https://www.apizr.net) is a Refit client manager that provides a set of features to enhance requesting experience with resilience, caching, priority, mediation, mapping, logging, authentication, file transfer capabilities and many more...\n\n### Generating the interfaces\n\nRefitter supports generating Apizr formatted Refit interfaces that can be managed then by Apizr (v6+).\n\nYou can enable Apizr formatted Refit interface generation either:\n\n- With the `--use-apizr` command line argument\n- By setting the `apizrSettings` section in the `.refitter` settings file\n\nNote that `--use-apizr` uses default Apizr settings with `withRequestOptions` set to `true` as recommended, while the `.refitter` settings file allows you to configure it deeper.\n\nIn both cases, it will format the generated Refit interfaces to be Apizr ready by:\n\n- Adding a final IApizrRequestOptions options parameter to all generated methods (if `withRequestOptions` is set to `true`)\n- Providing cancellation tokens by Apizr request options instead of a dedicated parameter (if `withRequestOptions` is set to `true`)\n- Using method overloads instead of optional parameters (note that setting `useDynamicQuerystringParameters` to `true` improve overloading experience)\n\nFrom here, you're definitely free to use the formatted interface with Apizr by registering, configuring and using it following the [Apizr documentation](https://www.apizr.net). But Refitter can go further by generating some helpers to make the configuration easier.\n\n### Generating the helpers\n\nRefitter supports generating Apizr (v6+) bootstrapping code that allows the user to conveniently configure all generated Apizr formatted Refit interfaces by calling a single method.\nIt could be either an extension method to `IServiceCollection` if DependencyInjectionSettings are set, or a static builder method if not.\n\n### [Extended](#tab/tabid-extended)\n\nTo enable Apizr registration code generation for `IServiceCollection`, you need at least to set the `withRegistrationHelper` property to `true` and configure the `DependencyInjectionSettings` section in the `.refitter` settings file.\nThis is what the `.refitter` settings file may look like, depending on you configuration:\n\n```json\n{\n  \"openApiPath\": \"../OpenAPI/v3.0/petstore.json\",\n  \"namespace\": \"Petstore\",\n  \"useDynamicQuerystringParameters\": true,\n  \"dependencyInjectionSettings\": {\n    \"baseUrl\": \"https://petstore3.swagger.io/api/v3\",\n    \"httpMessageHandlers\": [ \"MyDelegatingHandler\" ],\n    \"transientErrorHandler\": \"HttpResilience\",\n    \"maxRetryCount\": 3,\n    \"firstBackoffRetryInSeconds\": 0.5\n  },\n  \"apizrSettings\": {\n    \"withRequestOptions\": true, // Recommended to include an Apizr request options parameter to Refit interface methods\n    \"withRegistrationHelper\": true, // Mandatory to actually generate the Apizr registration extended method\n    \"withCacheProvider\": \"InMemory\", // Optional, default is None\n    \"withPriority\": true, // Optional, default is false\n    \"withMediation\": true, // Optional, default is false\n    \"withOptionalMediation\": true, // Optional, default is false\n    \"withMappingProvider\": \"AutoMapper\", // Optional, default is None\n    \"withFileTransfer\": true // Optional, default is false\n  }\n}\n```\n\nwhich will generate an extension method to `IServiceCollection` called `ConfigurePetstoreApiApizrManager()`. The generated extension method depends on [`Apizr.Extensions.Microsoft.DependencyInjection`](https://www.nuget.org/packages/Apizr.Extensions.Microsoft.DependencyInjection) library and looks like this:\n\n```cs\npublic static IServiceCollection ConfigurePetstoreApiApizrManager(\n    this IServiceCollection services,\n    Action\u003cIApizrExtendedManagerOptionsBuilder\u003e? optionsBuilder = null)\n{\n    optionsBuilder ??= _ =\u003e { }; // Default empty options if null\n    optionsBuilder += options =\u003e options\n        .WithBaseAddress(\"https://petstore3.swagger.io/api/v3\", ApizrDuplicateStrategy.Ignore)\n        .WithDelegatingHandler\u003cMyDelegatingHandler\u003e()\n        .ConfigureHttpClientBuilder(builder =\u003e builder\n            .AddStandardResilienceHandler(config =\u003e\n            {\n                config.Retry = new HttpRetryStrategyOptions\n                {\n                    UseJitter = true,\n                    MaxRetryAttempts = 3,\n                    Delay = TimeSpan.FromSeconds(0.5)\n                };\n            }))\n        .WithInMemoryCacheHandler()\n        .WithAutoMapperMappingHandler()\n        .WithPriority()\n        .WithOptionalMediation()\n        .WithFileTransferOptionalMediation();\n\n    return services.AddApizrManagerFor\u003cIPetstoreApi\u003e(optionsBuilder);\n}\n```\n\nThis comes in handy especially when generating multiple interfaces, by tag or endpoint. For example, the following `.refitter` settings file\n\n```json\n{\n  \"openApiPath\": \"../OpenAPI/v3.0/petstore.json\",\n  \"namespace\": \"Petstore\",\n  \"useDynamicQuerystringParameters\": true,\n  \"multipleInterfaces\": \"ByTag\",\n  \"naming\": {\n    \"useOpenApiTitle\": false,\n    \"interfaceName\": \"Petstore\"\n  },\n  \"dependencyInjectionSettings\": {\n    \"baseUrl\": \"https://petstore3.swagger.io/api/v3\",\n    \"httpMessageHandlers\": [ \"MyDelegatingHandler\" ],\n    \"transientErrorHandler\": \"HttpResilience\",\n    \"maxRetryCount\": 3,\n    \"firstBackoffRetryInSeconds\": 0.5\n  },\n  \"apizrSettings\": {\n    \"withRequestOptions\": true, // Recommended to include an Apizr request options parameter to Refit interface methods\n    \"withRegistrationHelper\": true, // Mandatory to actually generate the Apizr registration extended method\n    \"withCacheProvider\": \"InMemory\", // Optional, default is None\n    \"withPriority\": true, // Optional, default is false\n    \"withMediation\": true, // Optional, default is false\n    \"withOptionalMediation\": true, // Optional, default is false\n    \"withMappingProvider\": \"AutoMapper\", // Optional, default is None\n    \"withFileTransfer\": true // Optional, default is false\n  }\n}\n```\n\nWill generate a single `ConfigurePetstoreApizrManagers()` extension method that may contain dependency injection configuration code for multiple interfaces like this\n\n```csharp\npublic static IServiceCollection ConfigurePetstoreApizrManagers(\n    this IServiceCollection services,\n    Action\u003cIApizrExtendedCommonOptionsBuilder\u003e? optionsBuilder = null)\n{\n    optionsBuilder ??= _ =\u003e { }; // Default empty options if null\n    optionsBuilder += options =\u003e options\n        .WithBaseAddress(\"https://petstore3.swagger.io/api/v3\", ApizrDuplicateStrategy.Ignore)\n        .WithDelegatingHandler\u003cMyDelegatingHandler\u003e()\n        .ConfigureHttpClientBuilder(builder =\u003e builder\n            .AddStandardResilienceHandler(config =\u003e\n            {\n                config.Retry = new HttpRetryStrategyOptions\n                {\n                    UseJitter = true,\n                    MaxRetryAttempts = 3,\n                    Delay = TimeSpan.FromSeconds(0.5)\n                };\n            }))\n        .WithInMemoryCacheHandler()\n        .WithAutoMapperMappingHandler()\n        .WithPriority()\n        .WithOptionalMediation()\n        .WithFileTransferOptionalMediation();\n\n    return services.AddApizr(\n        registry =\u003e registry\n            .AddManagerFor\u003cIPetApi\u003e()\n            .AddManagerFor\u003cIStoreApi\u003e()\n            .AddManagerFor\u003cIUserApi\u003e(),\n        optionsBuilder);\n\n}\n```\n\nHere, `IPetApi`, `IStoreApi` and `IUserApi` are the generated interfaces which share the same common configuration defined from the `.refitter` file.\n\n### [Static](#tab/tabid-static)\n\nTo enable Apizr static builder code generation, you need at least to set the `withRegistrationHelper` property to `true` and leave the `DependencyInjectionSettings` section to null in the `.refitter` settings file.\nThis is what the `.refitter` settings file may look like, depending on you configuration:\n\n```json\n{\n  \"openApiPath\": \"../OpenAPI/v3.0/petstore.json\",\n  \"namespace\": \"Petstore\",\n  \"useDynamicQuerystringParameters\": true,\n  \"apizrSettings\": {\n    \"withRequestOptions\": true, // Recommended to include an Apizr request options parameter to Refit interface methods\n    \"withRegistrationHelper\": true, // Mandatory to actually generate the Apizr registration extended method\n    \"withCacheProvider\": \"Akavache\", // Optional, default is None\n    \"withPriority\": true, // Optional, default is false\n    \"withMappingProvider\": \"AutoMapper\", // Optional, default is None\n    \"withFileTransfer\": true // Optional, default is false\n  }\n}\n```\n\nwhich will generate a static builder method called `BuildPetstore30ApizrManager()`. The generated builder method depends on [`Apizr`](https://www.nuget.org/packages/Apizr) library and looks like this:\n\n```cs\npublic static IApizrManager\u003cISwaggerPetstoreOpenAPI30\u003e BuildPetstore30ApizrManager(Action\u003cIApizrManagerOptionsBuilder\u003e optionsBuilder)\n{\n    optionsBuilder ??= _ =\u003e { }; // Default empty options if null\n    optionsBuilder += options =\u003e options\n        .WithAkavacheCacheHandler()\n        .WithAutoMapperMappingHandler(new MapperConfiguration(config =\u003e { /* YOUR_MAPPINGS_HERE */ }))\n        .WithPriority();\n\n    return ApizrBuilder.Current.CreateManagerFor\u003cISwaggerPetstoreOpenAPI30\u003e(optionsBuilder);\n}\n```\n\nThis comes in handy especially when generating multiple interfaces, by tag or endpoint. For example, the following `.refitter` settings file\n\n```json\n{\n  \"openApiPath\": \"../OpenAPI/v3.0/petstore.json\",\n  \"namespace\": \"Petstore\",\n  \"useDynamicQuerystringParameters\": true,\n  \"multipleInterfaces\": \"ByTag\",\n  \"naming\": {\n    \"useOpenApiTitle\": false,\n    \"interfaceName\": \"Petstore\"\n  },\n  \"dependencyInjectionSettings\": {\n    \"baseUrl\": \"https://petstore3.swagger.io/api/v3\",\n    \"httpMessageHandlers\": [ \"MyDelegatingHandler\" ],\n    \"transientErrorHandler\": \"HttpResilience\",\n    \"maxRetryCount\": 3,\n    \"firstBackoffRetryInSeconds\": 0.5\n  },\n  \"apizrSettings\": {\n    \"withRequestOptions\": true, // Recommended to include an Apizr request options parameter to Refit interface methods\n    \"withRegistrationHelper\": true, // Mandatory to actually generate the Apizr registration extended method\n    \"withCacheProvider\": \"InMemory\", // Optional, default is None\n    \"withPriority\": true, // Optional, default is false\n    \"withMediation\": true, // Optional, default is false\n    \"withOptionalMediation\": true, // Optional, default is false\n    \"withMappingProvider\": \"AutoMapper\", // Optional, default is None\n    \"withFileTransfer\": true // Optional, default is false\n  }\n}\n```\n\nWill generate a single `BuildPetstoreApizrManagers()` builder method that may contain configuration code for multiple interfaces like this\n\n```csharp\npublic static IApizrRegistry BuildPetstoreApizrManagers(Action\u003cIApizrCommonOptionsBuilder\u003e optionsBuilder)\n{\n    optionsBuilder ??= _ =\u003e { }; // Default empty options if null\n    optionsBuilder += options =\u003e options\n        .WithAkavacheCacheHandler()\n        .WithAutoMapperMappingHandler(new MapperConfiguration(config =\u003e { /* YOUR_MAPPINGS_HERE */ }))\n        .WithPriority();\n\n    return ApizrBuilder.Current.CreateRegistry(\n        registry =\u003e registry\n            .AddManagerFor\u003cIPetApi\u003e()\n            .AddManagerFor\u003cIStoreApi\u003e()\n            .AddManagerFor\u003cIUserApi\u003e(),\n        optionsBuilder);\n}\n```\n\nHere, `IPetApi`, `IStoreApi` and `IUserApi` are the generated interfaces which share the same common configuration defined from the `.refitter` file.\n\n***\n\n### Customizing the configuration\n\nYou may want to adjust apis configuration, for example, to add a custom header to requests. This can be done using the `Action\u003cTApizrOptionsBuilder\u003e` parameter while calling the generated method.\nTo know how to make Apizr fit your needs, please refer to the [Apizr documentation](https://www.apizr.net).\n\n### Using the managers\n\nOnce you called the generated method, you will get an `IApizrManager\u003cT\u003e` instance that you can use to make requests to the API. Here's an example of how to use it:\n\n```csharp\nvar result = await petstoreManager.ExecuteAsync((api, opt) =\u003e api.GetPetById(1, opt),\n    options =\u003e options // Whatever final request options you want to apply\n        .WithPriority(Priority.Background)\n        .WithHeaders([\"HeaderKey1: HeaderValue1\"])\n        .WithRequestTimeout(\"00:00:10\")\n        .WithCancellation(cts.Token));\n```\n\nPlease head to the [Apizr documentation](https://www.apizr.net) to get more.\n\n## System requirements\n\n.NET 8.0 or .NET 9.0\n\n## Testing\n\nRefitter uses [TUnit](https://github.com/thomhurst/TUnit) as its testing framework instead of xUnit. TUnit was chosen for its superior performance, providing 3x faster test execution compared to xUnit. This significantly improves the developer experience when running the test suite locally and in CI/CD pipelines.\n\nTo run the tests:\n\n```bash\ndotnet test --solution src/Refitter.slnx -c Release\n```\n\n## Contributing\n\nPlease read our [contribution guidelines](CONTRIBUTING.md) if you'd like to contribute to the project.\n\n## Contributors\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/neoGeneva\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/804724?v=4?s=100\" width=\"100px;\" alt=\"Philip Cox\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePhilip Cox\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=neoGeneva\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://cam.macfar.land/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1298847?v=4?s=100\" width=\"100px;\" alt=\"Cameron MacFarland\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCameron MacFarland\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=distantcam\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://kgame.tw\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/3646532?v=4?s=100\" width=\"100px;\" alt=\"kgame\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ekgame\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=kgamecarter\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://yrki.no\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/11573601?v=4?s=100\" width=\"100px;\" alt=\"Thomas Pettersen / Yrki\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eThomas Pettersen / Yrki\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/1kvin\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/46425980?v=4?s=100\" width=\"100px;\" alt=\"Artem\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eArtem\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3A1kvin\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/m7clarke\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/47439144?v=4?s=100\" width=\"100px;\" alt=\"m7clarke\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003em7clarke\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Am7clarke\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/kirides\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/13602143?v=4?s=100\" width=\"100px;\" alt=\"kirides\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ekirides\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Akirides\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/commits?author=kirides\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/guillaumeserale\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/6672406?v=4?s=100\" width=\"100px;\" alt=\"guillaumeserale\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eguillaumeserale\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=guillaumeserale\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Aguillaumeserale\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Roflincopter\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1690243?v=4?s=100\" width=\"100px;\" alt=\"Dennis Brentjes\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDennis Brentjes\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=Roflincopter\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-Roflincopter\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.linkedin.com/in/hickeydamian/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/57436?v=4?s=100\" width=\"100px;\" alt=\"Damian Hickey\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDamian Hickey\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Adamianh\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/richardhu-lmg\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/126430787?v=4?s=100\" width=\"100px;\" alt=\"richardhu-lmg\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003erichardhu-lmg\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Arichardhu-lmg\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/brease-colin\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/47358935?v=4?s=100\" width=\"100px;\" alt=\"brease-colin\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ebrease-colin\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Abrease-colin\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/angelofb\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2032257?v=4?s=100\" width=\"100px;\" alt=\"angelofb\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eangelofb\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=angelofb\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/NoGRo\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/5665273?v=4?s=100\" width=\"100px;\" alt=\"Dim Nogro\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDim Nogro\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=NoGRo\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/yadanilov19\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/17161065?v=4?s=100\" width=\"100px;\" alt=\"yadanilov19\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eyadanilov19\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-yadanilov19\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/commits?author=yadanilov19\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/danpowell88\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1100397?v=4?s=100\" width=\"100px;\" alt=\"Daniel Powell\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDaniel Powell\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Adanpowell88\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Ekkeir\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/36194685?v=4?s=100\" width=\"100px;\" alt=\"Ekkeir\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEkkeir\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=Ekkeir\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3AEkkeir\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/waylonmtz\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/4604579?v=4?s=100\" width=\"100px;\" alt=\"Waylon Martinez\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eWaylon Martinez\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Awaylonmtz\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/vinaymadupathi\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/38102900?v=4?s=100\" width=\"100px;\" alt=\"vkmadupa\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003evkmadupa\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Avinaymadupathi\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Noblix\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/22076883?v=4?s=100\" width=\"100px;\" alt=\"Noblix\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNoblix\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=Noblix\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-Noblix\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.veezla.io\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/230432?v=4?s=100\" width=\"100px;\" alt=\"Attila Hajdrik\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAttila Hajdrik\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-attilah\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/bielik01\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/920950?v=4?s=100\" width=\"100px;\" alt=\"bielik01\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ebielik01\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Abielik01\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#ideas-bielik01\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/naaeef\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/43339071?v=4?s=100\" width=\"100px;\" alt=\"naaeef\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003enaaeef\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-naaeef\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/alrz\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/3105979?v=4?s=100\" width=\"100px;\" alt=\"Alireza Habibi\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlireza Habibi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Aalrz\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/EEParker\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/15874076?v=4?s=100\" width=\"100px;\" alt=\"Jeff Parker, PE\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJeff Parker, PE\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3AEEParker\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/jods4\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/3832820?v=4?s=100\" width=\"100px;\" alt=\"jods\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ejods\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-jods4\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Ajods4\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/edimarquez\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/41791719?v=4?s=100\" width=\"100px;\" alt=\"Edimarquez Medeiros\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEdimarquez Medeiros\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=edimarquez\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/safakkesikci\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/7067252?v=4?s=100\" width=\"100px;\" alt=\"safakkesikci\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003esafakkesikci\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Asafakkesikci\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/folbrecht\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/145537846?v=4?s=100\" width=\"100px;\" alt=\"folbrecht\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003efolbrecht\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Afolbrecht\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/mortenlaursen\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/28759737?v=4?s=100\" width=\"100px;\" alt=\"mortenlaursen\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003emortenlaursen\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=mortenlaursen\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/manuel-fernandez-rodriguez\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/48520205?v=4?s=100\" width=\"100px;\" alt=\"manuel-fernandez-rodriguez\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003emanuel-fernandez-rodriguez\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Amanuel-fernandez-rodriguez\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/eliyammine\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/6644807?v=4?s=100\" width=\"100px;\" alt=\"Eli Yammine\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEli Yammine\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Aeliyammine\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/kami-poi\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/47322691?v=4?s=100\" width=\"100px;\" alt=\"kami-poi\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ekami-poi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-kami-poi\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Xeevis\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/5835044?v=4?s=100\" width=\"100px;\" alt=\"Xeevis\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eXeevis\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3AXeevis\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/DJ4ddi\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1696102?v=4?s=100\" width=\"100px;\" alt=\"DJ4ddi\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDJ4ddi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=DJ4ddi\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-DJ4ddi\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/direncancatalkaya\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/57223732?v=4?s=100\" width=\"100px;\" alt=\"direncancatalkaya\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003edirencancatalkaya\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=direncancatalkaya\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/robpalm\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/14939530?v=4?s=100\" width=\"100px;\" alt=\"Robert Palmqvist\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRobert Palmqvist\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-robpalm\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/commits?author=robpalm\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/TimothyMakkison\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/49349513?v=4?s=100\" width=\"100px;\" alt=\"Tim M\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTim M\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=TimothyMakkison\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/janfolbrecht\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/42186604?v=4?s=100\" width=\"100px;\" alt=\"janfolbrecht\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ejanfolbrecht\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-janfolbrecht\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/commits?author=janfolbrecht\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/osc-nseguin\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/133910309?v=4?s=100\" width=\"100px;\" alt=\"Nick Seguin\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eNick Seguin\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=osc-nseguin\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/david-brink-talogy\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/43828739?v=4?s=100\" width=\"100px;\" alt=\"David Brink\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDavid Brink\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Adavid-brink-talogy\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/commits?author=david-brink-talogy\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/dammitjanet\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/952723?v=4?s=100\" width=\"100px;\" alt=\"Stu Wilson\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eStu Wilson\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-dammitjanet\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/commits?author=dammitjanet\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/sharpzilla\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/16763634?v=4?s=100\" width=\"100px;\" alt=\"sharpzilla\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003esharpzilla\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-sharpzilla\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Jappinen\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/44408497?v=4?s=100\" width=\"100px;\" alt=\"Tatu\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTatu\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3AJappinen\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://www.respawnsive.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/4272307?v=4?s=100\" width=\"100px;\" alt=\"Jérémy BRUN-PICARD\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJérémy BRUN-PICARD\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-JeremyBP\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/commits?author=JeremyBP\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/commits?author=JeremyBP\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ebarnard\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1059683?v=4?s=100\" width=\"100px;\" alt=\"Ed Barnard\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEd Barnard\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-ebarnard\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/bastiennoel93\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/18250350?v=4?s=100\" width=\"100px;\" alt=\"bastien.noel\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ebastien.noel\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Abastiennoel93\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/MeikelLP\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/11669846?v=4?s=100\" width=\"100px;\" alt=\"Meikel Philipp\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMeikel Philipp\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-MeikelLP\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://berkselvi.dev\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/54676516?v=4?s=100\" width=\"100px;\" alt=\"Berk Selvi\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBerk Selvi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-berkslv\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/commits?author=berkslv\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.thebuildsheet.com/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/9909564?v=4?s=100\" width=\"100px;\" alt=\"Joshua Ozeri\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJoshua Ozeri\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3AXeClutch\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://kancane.nl/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/701534?v=4?s=100\" width=\"100px;\" alt=\"Ryan Heath\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRyan Heath\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-ryanheath\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/commits?author=ryanheath\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Briaoeuidhtns\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/7530156?v=4?s=100\" width=\"100px;\" alt=\"Brian Brunner\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBrian Brunner\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-Briaoeuidhtns\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/fsamiec\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/13166020?v=4?s=100\" width=\"100px;\" alt=\"Frank Samiec\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFrank Samiec\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=fsamiec\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/fabioloreggian\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/31480768?v=4?s=100\" width=\"100px;\" alt=\"Fabio Loreggian\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFabio Loreggian\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Afabioloreggian\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/geometrikal\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1187528?v=4?s=100\" width=\"100px;\" alt=\"geometrikal\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003egeometrikal\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Ageometrikal\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/shubinp\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/25763776?v=4?s=100\" width=\"100px;\" alt=\"Shubin Pavel\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eShubin Pavel\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=shubinp\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.netindustry.nl\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/303034?v=4?s=100\" width=\"100px;\" alt=\"Wiebe Tijsma\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eWiebe Tijsma\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-zidad\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/hgdemers\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/169190876?v=4?s=100\" width=\"100px;\" alt=\"Henri Demers\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eHenri Demers\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Ahgdemers\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Fargekritt\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/11448941?v=4?s=100\" width=\"100px;\" alt=\"Amund\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAmund\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=Fargekritt\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3AFargekritt\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/velvolue\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/155445968?v=4?s=100\" width=\"100px;\" alt=\"Vegard Løkken\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eVegard Løkken\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=velvolue\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Avelvolue\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/brad-technologik\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/159975063?v=4?s=100\" width=\"100px;\" alt=\"brad-technologik\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ebrad-technologik\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Abrad-technologik\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/jaroslaw-dutka\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/40070136?v=4?s=100\" width=\"100px;\" alt=\"Jarosław Dutka\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJarosław Dutka\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=jaroslaw-dutka\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/maksionkin\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/11482043?v=4?s=100\" width=\"100px;\" alt=\"maksionkin\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003emaksionkin\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Amaksionkin\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/wocasella\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/37601504?v=4?s=100\" width=\"100px;\" alt=\"wocasella\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ewocasella\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Awocasella\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Metziell\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/33788844?v=4?s=100\" width=\"100px;\" alt=\"Petr Zika\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePetr Zika\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3AMetziell\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/sebastian-wachsmuth\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/87482207?v=4?s=100\" width=\"100px;\" alt=\"Sebastian Wachsmuth\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSebastian Wachsmuth\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=sebastian-wachsmuth\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/qrzychu\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/4633810?v=4?s=100\" width=\"100px;\" alt=\"qrzychu\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eqrzychu\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Aqrzychu\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://stbl.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/43214081?v=4?s=100\" width=\"100px;\" alt=\"Александр\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eАлександр\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Alowern1ght\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/AragornHL\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/18478623?v=4?s=100\" width=\"100px;\" alt=\"AragornHL\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAragornHL\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=AragornHL\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/kmfd3s\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/5180898?v=4?s=100\" width=\"100px;\" alt=\"kmfd3s\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ekmfd3s\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=kmfd3s\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/pfeigl\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/237891?v=4?s=100\" width=\"100px;\" alt=\"Philipp Feigl\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePhilipp Feigl\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Apfeigl\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://tommihaapa.fi/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/47896768?v=4?s=100\" width=\"100px;\" alt=\"Tommi Haapa\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTommi Haapa\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Atommieemeli\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/MrScottyTay\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/24463321?v=4?s=100\" width=\"100px;\" alt=\"Scott Taylor\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eScott Taylor\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3AMrScottyTay\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/sb-chericks\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/160796564?v=4?s=100\" width=\"100px;\" alt=\"sb-chericks\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003esb-chericks\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-sb-chericks\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Asb-chericks\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/SWarnberg\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/26246346?v=4?s=100\" width=\"100px;\" alt=\"Staffan Wärnberg\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eStaffan Wärnberg\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3ASWarnberg\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/lilinus\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/78953007?v=4?s=100\" width=\"100px;\" alt=\"Linus Hamlin\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLinus Hamlin\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Alilinus\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/commits?author=lilinus\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://marcohern.com/en/#about\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/5376517?v=4?s=100\" width=\"100px;\" alt=\"Marco Hernandez\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMarco Hernandez\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Amarcohern\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#ideas-marcohern\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/david-pw\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/178433875?v=4?s=100\" width=\"100px;\" alt=\"david-pw\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003edavid-pw\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Adavid-pw\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/commits?author=david-pw\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/eoma-knowit\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/150660175?v=4?s=100\" width=\"100px;\" alt=\"eoma-knowit\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eeoma-knowit\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=eoma-knowit\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/0xced\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/51363?v=4?s=100\" width=\"100px;\" alt=\"Cédric Luthi\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCédric Luthi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=0xced\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://christophdebaene.be\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/642207?v=4?s=100\" width=\"100px;\" alt=\"Christoph De Baene\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eChristoph De Baene\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Achristophdebaene\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/7amou3\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/993610?v=4?s=100\" width=\"100px;\" alt=\"7amou3\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003e7amou3\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-7amou3\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://haldencollier.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/25365699?v=4?s=100\" width=\"100px;\" alt=\"Halden\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eHalden\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-HGCollier\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/mhartmair-cubido\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/164479174?v=4?s=100\" width=\"100px;\" alt=\"mhartmair-cubido\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003emhartmair-cubido\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Amhartmair-cubido\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/karoberts\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/7482126?v=4?s=100\" width=\"100px;\" alt=\"Keith Roberts\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKeith Roberts\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3Akaroberts\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/kmc059000\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/660670?v=4?s=100\" width=\"100px;\" alt=\"Kenneth Crawford\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKenneth Crawford\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-kmc059000\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"https://github.com/christianhelle/refitter/commits?author=kmc059000\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/0x2badc0de\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/173240018?v=4?s=100\" width=\"100px;\" alt=\"0x2badc0de\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003e0x2badc0de\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/issues?q=author%3A0x2badc0de\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://meteion.ca\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/6116333?v=4?s=100\" width=\"100px;\" alt=\"Tylor Pater\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTylor Pater\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/christianhelle/refitter/commits?author=frogcrush\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\n#\n\nFor tips and tricks on software development, check out [my blog](https://christianhelle.com)\n\nIf you find this useful and feel a bit generous then feel free to [buy me a coffee ☕](https://www.buymeacoffee.com/christianhelle)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchristianhelle%2Frefitter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchristianhelle%2Frefitter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchristianhelle%2Frefitter/lists"}