Jarvis.Toolkit
1.2.0.6
.NET 5.0
This package targets .NET 5.0. The package is compatible with this framework or higher.
.NET Standard 2.1
This package targets .NET Standard 2.1. The package is compatible with this framework or higher.
dotnet add package Jarvis.Toolkit --version 1.2.0.6
NuGet\Install-Package Jarvis.Toolkit -Version 1.2.0.6
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Jarvis.Toolkit" Version="1.2.0.6" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Jarvis.Toolkit" Version="1.2.0.6" />
<PackageReference Include="Jarvis.Toolkit" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Jarvis.Toolkit --version 1.2.0.6
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Jarvis.Toolkit, 1.2.0.6"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Jarvis.Toolkit@1.2.0.6
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Jarvis.Toolkit&version=1.2.0.6
#tool nuget:?package=Jarvis.Toolkit&version=1.2.0.6
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Jarvis.Toolkit
Biblioteca de utilidades para .NET com extensões, validações, serviços HTTP, criptografia, autenticação, e-mail, notificações push e muito mais.
Instalação
dotnet add package Jarvis.Toolkit
Extensões
String
// Extrair conteúdo
"123.456.789-00".GetOnlyNumbers(); // "12345678900"
"abc123".GetOnlyLetters(); // "abc"
// Verificações
"texto".IsNullOrEmpty(); // false
"texto".NotNullOrEmptyOrWhiteSpace(); // true
// Capitalização
"hello world".FirstCharToUpper(); // "Hello world"
"hello world".AllFirstCharToUpper(); // "Hello World"
// Máscara
"12345678900".SetMask(MaskType.CPF); // "123.456.789-00"
"12345678".SetMask(MaskType.CEP); // "12345-678"
"1234567890".SetMask("(##) ####-####"); // "(12) 3456-7890"
// Remover acentos e caracteres especiais
"café".RemoveAccentuation(); // "cafe"
"a@b#c".RemoveSpecialCharacters(); // "abc"
// Truncar e nomes
"texto longo".Truncate(5); // "texto..."
"João Carlos Silva".GetFirstAndLastName(); // "João Silva"
// Valor padrão
string nulo = null;
nulo.IfNullOrEmpty("padrão"); // "padrão"
Data e Hora
// Validações
"25/12/2024".IsDate(); // true
"14:30".IsTime(); // true
// Conversões (formato brasileiro dd/MM/yyyy)
DateTime.Now.ToDate(); // "01/02/2026"
DateTime.Now.ToDateTime(); // "01/02/2026 14:30"
DateTime.Now.ToTime(); // "14:30"
"25/12/2024".ToDate(); // DateTime
// ISO
DateTime.Now.ToISODate(); // "2026-02-01"
DateTime.Now.ToISODateTime(); // "2026-02-01 14:30:00"
// Fuso horário Brasil
DateTime.UtcNow.ToDateTimeBr(); // converte UTC para horário de Brasília
DateTimeBr.Now; // DateTime agora em horário de Brasília
// Idade
new DateTime(1990, 5, 15).Age(); // 35
new DateTime(1990, 5, 15).AgeWithMonths(); // "35 anos e 8 meses"
// Dia da semana / Mês (pt-BR)
DateTime.Now.ToDay(); // "Sábado"
DateTime.Now.ToMonth(); // "Fevereiro"
// Verificações e limites
DateTime.Now.IsWeekend(); // true/false
DateTime.Now.FirstDayOfMonth();
DateTime.Now.LastDayOfMonth();
DateTime.Now.EndOfDay();
Objeto
object obj = null;
obj.IsNull(); // true
obj.NotNull(); // false
// Conversões
"123".ToInt(); // 123
"3.14".ToDouble(); // 3.14
"guid-string".ToGuid(); // Guid
"123".ToIntNullable(); // int?
// Condicionais
valor.If(condicao, novoValor);
condicao.IfElse(valorTrue, valorFalse);
item.IsNullOrNotEnabled(); // verifica propriedade "Ativo"
Número
(-5).IfNegative(0); // 0
(0).IfZero(1); // 1
(-5).IfNegativeOrZero(1); // 1
valor.MinValue(0); // não permite menor que 0
valor.MaxValue(100); // não permite maior que 100
valor.RangeValue(0, 100); // limita entre 0 e 100
Formatação (pt-BR)
1234.56.ToMoney(); // "R$ 1.234,56"
0.1575.ToPercent(); // "15,75%"
1234.56.ToNumber(); // "1.234,56"
// Converter de string formatada para número
"R$ 1.234,56".ToNumber<double>(); // 1234.56
"15,75%".ToNumber<double>(); // 15.75
Validação
"12345678900".IsCPF(); // true/false
"00038166000105".IsCNPJ(); // true/false
"12345678".IsCEP(); // true/false
"user@email.com".IsEmail(); // true/false
"11999887766".IsPhoneNumber(); // true/false
"12345678900".IsChavePix(); // true/false (CPF, CNPJ, email, telefone ou EVP)
Serialização JSON
// Serializar
var json = objeto.Serialize();
var json = objeto.Serialize(writeIndented: true);
// Deserializar
var obj = json.Deserialize<Produto>();
var obj = json.TryDeserialize<Produto>(); // retorna default em caso de erro
Mapeamento de Objetos
// Mapear propriedades por nome
var model = source.MapTo<TargetModel>();
// Com controle
var result = source.MapTo(target);
result.Set(x => x.Nome, s => s.FullName);
// Mapear lista
var result = sources.MapListTo(new TargetModel());
// Ignorar propriedades nulas
var result = source.MapToIgnoreNull(target);
// Atributos de controle
[MapIgnoreSource] // ignora ao mapear como target
[MapIgnoreTarget] // ignora ao mapear como source
Coleções e Listas
// Paginação
var pagina = lista.Page(pageNumber: 2, pageSize: 10);
var total = lista.TotalPages(pageSize: 10);
// Verificações
lista.IsNullOrEmpty();
lista.IsEmpty();
lista.EmptyIfNull(); // retorna vazio em vez de null
// Operações
lista.ForEach(x => x.Ativo = true);
lista.Randomize();
lista.Split(3); // divide em 3 grupos
lista.Partition(10); // divide em páginas de 10
lista.WithIndex(); // ForeachResult com Index, IsFirstItem, IsLastItem
// Filtros opcionais (ignora se valor é null)
lista.WhereOptional(x => x.Status, statusFiltro);
lista.InRange(x => x.Valor, min, max);
IQueryable
// Paginação (compatível com EF Core)
query.Page(pageNumber, pageSize);
query.TotalPages(pageSize);
// Filtros opcionais (ignora se valor é null)
query.WhereOptional(x => x.Status, statusFiltro);
query.InRange(x => x.Valor, min, max);
query.Contains(x => x.Nome, textoBusca);
Enum
myEnum.ToInt(); // 1
1.ToEnum<MeuEnum>(); // MeuEnum.Valor
"Valor".ToEnum<MeuEnum>(); // MeuEnum.Valor
// Display attribute
myEnum.GetName(); // [Display(Name = "...")]
myEnum.GetDescription(); // [Display(Description = "...")]
// Listar
Enum<MeuEnum>.AsEnumerable();
Enum<MeuEnum>.FilterExcluded(); // ignora itens com [Exclude]
Enum<MeuEnum>.ToGenericList();
Criptografia e Hash
// AES
var encrypted = "texto".AESEncrypt("chave16chars!!!");
var decrypted = encrypted.AESDecrypt("chave16chars!!!");
// SHA1 / MD5
var sha1 = "texto".SHA1Hash();
var md5 = "texto".MD5Hash();
// Base64
var base64 = "texto".ToBase64();
var original = base64.FromBase64();
// URL Slug
"Meu Título Aqui".ToUrlSlug(); // "meu-titulo-aqui"
// Ofuscar ID
Guid.NewGuid().ObfuscateId(); // string ofuscada
"ofuscado".DeobfuscateId(); // Guid original
HTML
"texto".Bold(); // <b>texto</b>
"texto".Italic(); // <i>texto</i>
"texto".Paragraph(); // <p>texto</p>
"texto".Link("https://..."); // <a href='https://...'>texto</a>
Claims
// Ler claims do ClaimsPrincipal
var id = User.Id();
var name = User.Name();
var roles = User.Roles();
var email = User.Email();
var isAuth = User.IsAuthenticated();
URI e Query String
var query = QueryItem.Object("nome", "João")
.AddObject("idade", 30)
.AddDate("data", DateTime.Now);
var url = query.ToUri("https://api.exemplo.com/buscar");
// https://api.exemplo.com/buscar?nome=Jo%c3%a3o&idade=30&data=2026-02-01
Atributos de Validação
[CPF(ErrorMessage = "CPF inválido")]
public string CPF { get; set; }
[CNPJ(ErrorMessage = "CNPJ inválido")]
public string CNPJ { get; set; }
[CPF_CNPJ(ErrorMessage = "Documento inválido")]
public string Documento { get; set; }
[CEP(ErrorMessage = "CEP inválido")]
public string CEP { get; set; }
[PhoneNumber(ErrorMessage = "Telefone inválido")]
public string Telefone { get; set; }
[ChavePix(ErrorMessage = "Chave PIX inválida")]
public string ChavePix { get; set; }
[MinValue(1, ErrorMessage = "Mínimo 1")]
public int Quantidade { get; set; }
[MaxValue(100, ErrorMessage = "Máximo 100")]
public int Porcentagem { get; set; }
[NotEmptyGuid(ErrorMessage = "Selecione um item")]
public Guid ItemId { get; set; }
[NotEmptyList(ErrorMessage = "Lista não pode ser vazia")]
public List<int> Itens { get; set; }
[RequiredList(ErrorMessage = "Lista obrigatória")]
public List<int> ItensObrigatorios { get; set; }
// Atributos de mapeamento
[MapIgnoreSource] // ignora propriedade na origem
[MapIgnoreTarget] // ignora propriedade no destino
// Atributo de enum
[Exclude] // exclui campo de listagens (FilterExcluded)
Modelos e Respostas
ModelResponse
// Resposta simples
return ModelResponse.Success("Operação realizada");
return ModelResponse.Error("Falha na operação");
// Resposta tipada
return ModelResponse<Produto>.Success(produto);
return ModelResponse<Produto>.Error("Não encontrado");
JsonResponse
return JsonResponse.Success(item, "Salvo com sucesso");
return JsonResponse.Error("Algo deu errado");
return JsonResponse.NotAuthenticated();
return JsonResponse.NotAuthorized();
return JsonResponse.Blocked();
// Deserializar item
var produto = response.Deserialize<Produto>();
HttpResponse
return HttpResponse<Produto>.Success(produto);
return HttpResponse<Produto>.Error("Falha");
return HttpResponse<Produto, ErroDTO>.Error(erroDto);
PaginationResponse
var paginacao = new PaginationResponse<Produto>
{
PageNumber = 1,
PageSize = 10,
TotalItems = 100,
Items = produtos
};
paginacao.TotalPages; // 10
paginacao.HasNextPage; // true
TokenResponse
var token = new TokenResponse
{
Token = "jwt...",
RefreshToken = "refresh...",
ExpiresToken = DateTime.UtcNow.AddHours(1)
};
token.IsValid; // true se não expirou
Ranges
// DateRange
var range = new DateRange("01/01/2024", "31/12/2024");
range.TotalDays; // 366
range.Dates; // lista de todos os dias
DateRange.Today;
DateRange.ThisMonth;
DateRange.ThisYear;
// TimeRange
var horario = new TimeRange("08:00", "17:00");
horario.TotalHours; // 9
// DateTimeRange
var periodo = new DateTimeRange("01/01/2024 08:00", "31/12/2024 17:00");
CPF e CNPJ (Classes)
CPF cpf = "12345678900";
cpf.Masked; // "123.456.789-00"
cpf.Unmasked; // "12345678900"
cpf.DV; // "00"
cpf.IsValid; // true/false
var novoCpf = CPF.Generate();
CNPJ cnpj = "00038166000105";
cnpj.Masked; // "00.038.166/0001-05"
cnpj.IsValid; // true/false
var novoCnpj = CNPJ.Generate();
GenericItem e GenericList
var item = new GenericItem<int>(1, "Opção 1");
var lista = new GenericList<int> { item };
var item2 = new GenericItem<int, Produto>(1, "Opção", produto);
CardModel
var card = new CardModel<int>
{
Id = 1,
Title = "Título",
Subtitle = "Subtítulo",
Description = "Descrição",
Image = "url"
};
Serviços
HTTP Client
var http = new JarvisHttpClient("https://api.exemplo.com");
// GET
var produto = await http.GetAsync<Produto>("/produtos/1");
var response = await http.GetJsonAsync<Produto>("/produtos/1");
// POST / PUT / DELETE
var response = await http.PostJsonAsync<Produto>("/produtos", novoProduto);
var response = await http.PutJsonAsync<Produto>("/produtos/1", produto);
var response = await http.DeleteJsonAsync<Produto>("/produtos/1");
// Download / Upload
var bytes = await http.DownloadAsync("/arquivo.pdf");
var result = await http.UploadAsync<FileResult>("/upload", fileBytes, "foto.jpg");
// Configurar headers
http.Client.BaseAddress("https://api.exemplo.com")
.BearerAuthorization(jwtToken)
.AddHeader("X-Custom", "valor");
Consulta CEP
var endereco = await ViaCEP.FindAsync("01001000");
var endereco = await OpenCEP.FindAsync("01001000");
var endereco = await AwesomeCEP.FindAsync("01001000");
// Busca por endereço (ViaCEP)
var resultados = await ViaCEP.FindAsync("SP", "São Paulo", "Paulista");
E-mail (SMTP)
var mail = new JarvisMailClient("smtp.gmail.com", 587, "user@gmail.com", "senha");
// Enviar e-mail
var result = await mail.SendAsync(
to: "destino@email.com",
subject: "Assunto",
body: "<p>Corpo HTML</p>"
);
// Template com placeholders
var template = new JarvisMailTemplate("<p>Olá {nome}!</p>");
template.Replace("{nome}", "João");
OneSignal (Push Notifications)
var onesignal = new JarvisOneSignalClient("app-id", "api-key");
// Enviar notificação
var body = new JarvisOneSignalBody
{
Title = "Título",
Message = "Mensagem",
Segments = new[] { JarvisOneSignalSegments.All }
};
var response = await onesignal.SendAsync(body);
Arquivo (File)
// Upload/download com progresso
var client = new JarvisFileClient();
client.ProgressChanged += (s, e) => Console.WriteLine($"{e.Percent}%");
client.Completed += (s, e) => Console.WriteLine("Concluído");
// Operações de arquivo
var result = JarvisFile.FromBase64(base64String, "foto.jpg");
var base64 = JarvisFile.ToBase64("caminho/arquivo.pdf");
Local Storage
var config = new JarvisLocalStorageConfiguration
{
FilePath = "C:/dados",
EnableEncryption = true,
EncryptionKey = "minha-chave-16!!"
};
using var storage = new JarvisLocalStorageClient(config);
storage.Store("chave", meuObjeto);
var obj = storage.Get<MeuTipo>("chave");
storage.Exists("chave"); // true
storage.Keys(); // lista de chaves
Autenticação
JarvisAuthenticationUser
var user = new JarvisAuthenticationUser("Cookies")
{
Id = "1",
Name = "João",
Email = "joao@email.com",
Roles = new List<string> { "Admin" }
};
user.SetItem(meuObjeto); // serializa objeto como claim Item
user.AddOther("custom_claim", "valor");
JarvisClaimTypes
JarvisClaimTypes.Id // claim de ID
JarvisClaimTypes.Name // claim de nome
JarvisClaimTypes.Email // claim de e-mail
JarvisClaimTypes.Role // claim de role
JarvisClaimTypes.ClientId // claim de client ID
JarvisClaimTypes.JwtName // "unique_name" (JWT)
JarvisClaimTypes.JwtRole // "role" (JWT)
JWT Options
var options = new JarvisJwtOptions
{
Issuer = "minha-app",
Audience = "minha-api",
SecretKey = "chave-secreta-32-chars!!!!!!!!!",
Expiration = TimeSpan.FromHours(1)
};
Utilitários
Gerador
var senha = JarvisGenerator.Password(8, PasswordType.Mixed);
var senhaDiaria = JarvisGenerator.DailyPassword(); // 6 dígitos baseado na data
var cpf = JarvisGenerator.CPF();
var cnpj = JarvisGenerator.CNPJ();
var texto = JarvisGenerator.LoremIpsum(100);
Password (PBKDF2/SHA256)
var hash = JarvisPassword.Hash("minha-senha");
var valido = JarvisPassword.Verify("minha-senha", hash); // true
Haversine (Distância Geográfica)
var km = JarvisHaversine.ToKilometers(lat1, lng1, lat2, lng2);
var metros = JarvisHaversine.ToMeters(coord1, coord2);
var milhas = JarvisHaversine.ToMiles(coord1, coord2);
Timer
var elapsed = JarvisTimer.Elapsed(() => MinhaOperacao());
var ms = JarvisTimer.ElapsedMilliseconds(() => MinhaOperacao());
var ms = await JarvisTimer.ElapsedMilliseconds(async () => await MinhaOperacaoAsync());
Log
JarvisLog.Debug("mensagem");
JarvisLog.Info("mensagem");
JarvisLog.Warn("mensagem");
JarvisLog.Error("mensagem");
JarvisLog.Exception(ex);
Matemática
JarvisMath.Percent(10, 100); // 10.0 (10%)
JarvisMath.CalculatePercentage(200, 15); // 30.0 (15% de 200)
JarvisMath.AddPercentage(100, 10); // 110.0
JarvisMath.SubtractPercentage(100, 10); // 90.0
Cor
JarvisColor.Combine("#FF0000", "#0000FF"); // combina cores pela média RGB
JarvisColor.HexToRgb("#FF5500"); // "255, 85, 0"
JarvisColor.HexToRgba("#FF5500", 0.5); // "255, 85, 0, 0.5"
Conversões de Unidade
JarvisConverter.MmToPixels(10, 96); // milímetros para pixels
JarvisConverter.PixelsToMm(100, 96); // pixels para milímetros
Diretórios e Arquivos (Helper)
JarvisDirectoryHelper.CreateIfNotExists("C:/minha-pasta");
JarvisDirectoryHelper.GetOrCreate("dados", "C:/base");
JarvisDirectoryHelper.GetOrCreateHidden("dados-ocultos");
JarvisFileHelper.SetHiddenAttribute("C:/arquivo.txt", true);
Estados e Meses (Brasil)
EstadosBrasil.Lista(); // dicionário "SP" => "São Paulo"
EstadosBrasil.Siglas(); // ["AC", "AL", ..., "TO"]
EstadosBrasil.Nomes(); // ["Acre", "Alagoas", ..., "Tocantins"]
MesesAno.Lista(); // ["Janeiro", ..., "Dezembro"]
Structs
// Meses do ano
var meses = new Months(2024);
meses.January; // 01/01/2024
meses.December; // 01/12/2024
// DateTime Brasil
DateTimeBr.Now; // agora em horário de Brasília
DateTimeBr.Today; // hoje em horário de Brasília
// Enum tipado
var valores = Enum<MeuEnum>.AsEnumerable();
Converters JSON
// Converters para System.Text.Json
var options = new JsonSerializerOptions();
options.Converters.Add(new JsonStringDateConverter()); // "yyyy-MM-dd"
options.Converters.Add(new JsonStringDateTimeConverter()); // "yyyy-MM-dd HH:mm:ss"
options.Converters.Add(new JsonStringDoubleConverter()); // aceita string ou número
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.1
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Drawing.Common (>= 10.0.2)
- System.Net.Http.Json (>= 10.0.2)
-
net10.0
- No dependencies.
-
net5.0
- No dependencies.
-
net6.0
- No dependencies.
-
net7.0
- No dependencies.
-
net8.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages (9)
Showing the top 5 NuGet packages that depend on Jarvis.Toolkit:
| Package | Downloads |
|---|---|
|
Jarvis.Blazor
Biblioteca de componentes para Blazor. |
|
|
Jarvis.Components.Web.Mvc.Core
Biblioteca de componentes para WEB MVC Core. |
|
|
Jarvis.Maui
Biblioteca de componentes para Maui. |
|
|
Jarvis.WebApi
Biblioteca de componentes para API Web. |
|
|
Jarvis.Blazor.Mud
Biblioteca de componentes para MudBlazor. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.2.0.6 | 5 | 2/3/2026 |
| 1.2.0.5 | 82 | 2/1/2026 |
| 1.2.0.4 | 99 | 1/28/2026 |
| 1.2.0.3 | 99 | 1/21/2026 |
| 1.2.0.2 | 132 | 1/8/2026 |
| 1.2.0.1 | 320 | 11/28/2025 |
| 1.2.0 | 268 | 11/24/2025 |
| 1.1.9.9 | 204 | 11/24/2025 |
| 1.1.9.8 | 206 | 11/15/2025 |
| 1.1.9.7 | 333 | 11/13/2025 |
| 1.1.9.6 | 218 | 10/18/2025 |
| 1.1.9.5 | 326 | 9/4/2025 |
| 1.1.9.4 | 276 | 8/28/2025 |
| 1.1.9.3 | 273 | 8/14/2025 |
| 1.1.9.2 | 354 | 8/6/2025 |
| 1.1.9.1 | 307 | 6/6/2025 |
| 1.1.9 | 454 | 4/18/2025 |
| 1.1.8.9 | 281 | 4/3/2025 |
| 1.1.8.8 | 283 | 4/3/2025 |
| 1.1.8.7 | 262 | 4/1/2025 |
| 1.1.8.6 | 264 | 3/30/2025 |
| 1.1.8.5 | 221 | 3/28/2025 |
| 1.1.8.4 | 294 | 3/18/2025 |
| 1.1.8.3 | 323 | 3/6/2025 |
| 1.1.8.2 | 223 | 2/20/2025 |
| 1.1.8.1 | 237 | 2/13/2025 |
| 1.1.8 | 194 | 1/21/2025 |
| 1.1.7.9 | 671 | 12/24/2024 |
| 1.1.7.8 | 212 | 12/24/2024 |
| 1.1.7.7 | 207 | 12/24/2024 |
| 1.1.7.6 | 198 | 12/20/2024 |
| 1.1.7.5 | 219 | 12/10/2024 |
| 1.1.7.4 | 246 | 12/6/2024 |
| 1.1.7.3 | 253 | 12/3/2024 |
| 1.1.7.2 | 206 | 12/3/2024 |
| 1.1.7.1 | 216 | 12/2/2024 |
| 1.1.7 | 215 | 12/1/2024 |
| 1.1.6.9 | 203 | 12/1/2024 |
| 1.1.6.8 | 209 | 12/1/2024 |
| 1.1.6.7 | 226 | 11/18/2024 |
| 1.1.6.6 | 205 | 11/16/2024 |
| 1.1.6.5 | 244 | 11/15/2024 |
| 1.1.6.4 | 215 | 11/15/2024 |
| 1.1.6.3 | 208 | 11/15/2024 |
| 1.1.6.2 | 210 | 11/15/2024 |
| 1.1.6.1 | 219 | 11/15/2024 |
| 1.1.6 | 279 | 11/12/2024 |
| 1.1.5.9 | 222 | 11/8/2024 |
| 1.1.5.8 | 309 | 10/1/2024 |
| 1.1.5.7 | 201 | 9/25/2024 |
| 1.1.5.6 | 294 | 9/18/2024 |
| 1.1.5.5 | 230 | 9/17/2024 |
| 1.1.5.4 | 284 | 9/13/2024 |
| 1.1.5.3 | 327 | 9/2/2024 |
| 1.1.5.2 | 273 | 9/1/2024 |
| 1.1.5.1 | 352 | 8/13/2024 |
| 1.1.5 | 228 | 8/7/2024 |
| 1.1.4.9 | 201 | 8/7/2024 |
| 1.1.4.8 | 215 | 8/2/2024 |
| 1.1.4.7 | 192 | 8/1/2024 |
| 1.1.4.6 | 248 | 7/12/2024 |
| 1.1.4.5 | 229 | 7/12/2024 |
| 1.1.4.4 | 230 | 7/11/2024 |
| 1.1.4.3 | 221 | 7/10/2024 |
| 1.1.4.2 | 225 | 7/7/2024 |
| 1.1.4.1 | 422 | 6/11/2024 |
| 1.1.4 | 289 | 6/5/2024 |
| 1.1.3.9 | 275 | 5/30/2024 |
| 1.1.3.8 | 233 | 5/30/2024 |
| 1.1.3.7 | 218 | 5/30/2024 |
| 1.1.3.6 | 216 | 5/30/2024 |
| 1.1.3.5 | 289 | 5/11/2024 |
| 1.1.3.4 | 248 | 5/1/2024 |
| 1.1.3.3 | 281 | 4/29/2024 |
| 1.1.3.2 | 255 | 4/27/2024 |
| 1.1.3.1 | 258 | 4/25/2024 |
| 1.1.3 | 251 | 4/9/2024 |
| 1.1.2.9 | 230 | 4/2/2024 |
| 1.1.2.8 | 251 | 4/2/2024 |
| 1.1.2.7 | 242 | 3/30/2024 |
| 1.1.2.6 | 278 | 3/25/2024 |
| 1.1.2.5 | 560 | 3/20/2024 |
| 1.1.2.4 | 343 | 3/12/2024 |
| 1.1.2.3 | 370 | 2/24/2024 |
| 1.1.2.2 | 229 | 2/22/2024 |
| 1.1.2.1 | 246 | 2/20/2024 |
| 1.1.2 | 403 | 2/18/2024 |
| 1.1.1.9 | 597 | 2/16/2024 |
| 1.1.1.8 | 233 | 2/15/2024 |
| 1.1.1.7 | 266 | 2/15/2024 |
| 1.1.1.6 | 375 | 1/28/2024 |
| 1.1.1.5 | 246 | 1/28/2024 |
| 1.1.1.4 | 266 | 1/28/2024 |
| 1.1.1.3 | 229 | 1/27/2024 |
| 1.1.1.2 | 216 | 1/26/2024 |
| 1.1.1.1 | 254 | 1/25/2024 |
| 1.1.1 | 1,753 | 1/24/2024 |
| 1.1.0.9 | 302 | 1/21/2024 |
| 1.1.0.8 | 2,535 | 1/9/2024 |
| 1.1.0.7 | 291 | 1/6/2024 |
| 1.1.0.6 | 271 | 1/6/2024 |
| 1.1.0.5 | 278 | 1/6/2024 |
| 1.1.0.4 | 291 | 1/4/2024 |
| 1.1.0.3 | 283 | 1/4/2024 |
| 1.1.0.2 | 278 | 12/31/2023 |
| 1.1.0.1 | 268 | 12/30/2023 |
| 1.1.0 | 266 | 12/30/2023 |
| 1.0.9.9 | 277 | 12/30/2023 |
| 1.0.9.8 | 288 | 12/29/2023 |
| 1.0.9.7 | 306 | 12/26/2023 |
| 1.0.9.6 | 652 | 11/20/2023 |
| 1.0.9.5 | 1,517 | 11/17/2023 |
| 1.0.9.4 | 1,847 | 11/16/2023 |
| 1.0.9.3 | 1,652 | 10/6/2023 |
| 1.0.9.2 | 236 | 9/26/2023 |
| 1.0.9.1 | 320 | 9/2/2023 |
| 1.0.9 | 331 | 8/26/2023 |
| 1.0.8.9 | 302 | 8/25/2023 |
| 1.0.8.8 | 778 | 7/31/2023 |
| 1.0.8.7 | 308 | 7/31/2023 |
| 1.0.8.6 | 304 | 7/30/2023 |
| 1.0.8.5 | 1,837 | 5/2/2023 |
| 1.0.8.4 | 1,233 | 4/24/2023 |
| 1.0.8.3 | 422 | 4/18/2023 |
| 1.0.8.2 | 370 | 4/18/2023 |
| 1.0.8.1 | 505 | 4/4/2023 |
| 1.0.8 | 424 | 3/29/2023 |
| 1.0.7.9 | 509 | 3/22/2023 |
| 1.0.7.8 | 1,126 | 3/3/2023 |
| 1.0.7.7 | 643 | 2/24/2023 |
| 1.0.7.6 | 565 | 2/23/2023 |
| 1.0.7.5 | 437 | 2/23/2023 |
| 1.0.7.4 | 1,121 | 1/26/2023 |
| 1.0.7.3 | 583 | 1/24/2023 |
| 1.0.7.2 | 504 | 1/18/2023 |
| 1.0.7.1 | 698 | 1/18/2023 |
| 1.0.7 | 1,001 | 12/14/2022 |
| 1.0.6.9 | 499 | 12/2/2022 |
| 1.0.6.8 | 932 | 11/30/2022 |
| 1.0.6.7 | 845 | 11/9/2022 |
| 1.0.6.6 | 752 | 10/27/2022 |
| 1.0.6.5 | 2,616 | 8/26/2022 |
| 1.0.6.4 | 1,081 | 8/25/2022 |
| 1.0.6.3 | 2,010 | 8/8/2022 |
| 1.0.6.2 | 1,044 | 7/28/2022 |
| 1.0.6.1 | 677 | 7/28/2022 |
| 1.0.6 | 649 | 7/28/2022 |
| 1.0.5.9 | 845 | 7/6/2022 |
| 1.0.5.8 | 1,722 | 6/21/2022 |
| 1.0.5.7 | 1,129 | 6/15/2022 |
| 1.0.5.6 | 677 | 6/15/2022 |
| 1.0.5.5 | 1,643 | 6/8/2022 |
| 1.0.5.4 | 685 | 6/8/2022 |
| 1.0.5.3 | 705 | 6/2/2022 |
| 1.0.5.2 | 1,428 | 5/28/2022 |
| 1.0.5.1 | 1,793 | 5/23/2022 |
| 1.0.5 | 821 | 5/21/2022 |
| 1.0.4.9 | 700 | 5/17/2022 |
| 1.0.4.8 | 871 | 5/5/2022 |
| 1.0.4.7 | 703 | 5/1/2022 |
| 1.0.4.6 | 711 | 4/27/2022 |
| 1.0.4.5 | 1,189 | 4/8/2022 |
| 1.0.4.4 | 749 | 3/14/2022 |
| 1.0.4.3 | 690 | 3/14/2022 |
| 1.0.4.2 | 707 | 3/14/2022 |
| 1.0.4.1 | 729 | 3/14/2022 |
| 1.0.4 | 679 | 3/13/2022 |
| 1.0.3.9 | 716 | 3/1/2022 |
| 1.0.3.8 | 904 | 2/24/2022 |
| 1.0.3.7 | 727 | 2/24/2022 |
| 1.0.3.6 | 764 | 2/15/2022 |
| 1.0.3.5 | 890 | 2/14/2022 |
| 1.0.3.4 | 729 | 2/10/2022 |
| 1.0.3.3 | 735 | 2/9/2022 |
| 1.0.3.2 | 1,351 | 1/21/2022 |
| 1.0.3.1 | 720 | 1/21/2022 |
| 1.0.3 | 633 | 12/17/2021 |
| 1.0.2.9 | 560 | 12/16/2021 |
| 1.0.2.8 | 563 | 12/16/2021 |
| 1.0.2.7 | 586 | 12/10/2021 |
| 1.0.2.6 | 604 | 12/9/2021 |
| 1.0.2.5 | 587 | 12/8/2021 |
| 1.0.2.4 | 564 | 11/28/2021 |
| 1.0.2.3 | 766 | 10/23/2021 |
| 1.0.2.2 | 761 | 10/3/2021 |
| 1.0.2.1 | 670 | 9/20/2021 |
| 1.0.2 | 548 | 9/2/2021 |
| 1.0.1.9 | 610 | 8/23/2021 |
| 1.0.1.8 | 699 | 7/17/2021 |
| 1.0.1.7 | 642 | 7/17/2021 |
| 1.0.1.6 | 629 | 7/6/2021 |
| 1.0.1.5 | 622 | 7/4/2021 |
| 1.0.1.4 | 693 | 6/9/2021 |
| 1.0.1.3 | 628 | 6/3/2021 |
| 1.0.1.2 | 629 | 6/3/2021 |
| 1.0.1.1 | 649 | 6/2/2021 |
| 1.0.1 | 649 | 6/1/2021 |
| 1.0.0.9 | 817 | 5/18/2021 |
| 1.0.0.8 | 647 | 5/18/2021 |
| 1.0.0.7 | 575 | 5/11/2021 |
| 1.0.0.6 | 702 | 5/2/2021 |
| 1.0.0.5 | 671 | 5/2/2021 |
| 1.0.0.4 | 634 | 4/29/2021 |
| 1.0.0.3 | 653 | 4/21/2021 |
| 1.0.0.2 | 905 | 4/20/2021 |
| 1.0.0.1 | 676 | 4/20/2021 |
| 1.0.0 | 639 | 4/17/2021 |