![]() |
VOOZH | about |
dotnet add package Hardware.Info --version 110.0.0.1
NuGet\Install-Package Hardware.Info -Version 110.0.0.1
<PackageReference Include="Hardware.Info" Version="110.0.0.1" />
<PackageVersion Include="Hardware.Info" Version="110.0.0.1" />Directory.Packages.props
<PackageReference Include="Hardware.Info" />Project file
paket add Hardware.Info --version 110.0.0.1
#r "nuget: Hardware.Info, 110.0.0.1"
#:package Hardware.Info@110.0.0.1
#addin nuget:?package=Hardware.Info&version=110.0.0.1Install as a Cake Addin
#tool nuget:?package=Hardware.Info&version=110.0.0.1Install as a Cake Tool
Battery, BIOS, CPU - processor, storage drive, keyboard, RAM - memory, monitor, motherboard, mouse, NIC - network adapter, printer, sound card - audio card, graphics card - video card. Hardware.Info is a .NET Standard 2.0 library and uses WMI on Windows, /dev, /proc, /sys on Linux and sysctl, system_profiler on macOS.
Hardware.Info.Aot uses WmiLight instead of System.Management and supports AOT.
Include Hardware.Info or Hardware.Info.Aot NuGet package
https://www.nuget.org/packages/Hardware.Info
<ItemGroup>
<PackageReference Include="Hardware.Info" Version="110.0.0.1" />
</ItemGroup>
https://www.nuget.org/packages/Hardware.Info.Aot
<ItemGroup>
<PackageReference Include="Hardware.Info.Aot" Version="110.0.0.1" />
</ItemGroup>
Call RefreshAll() or one of the other Refresh*() methods:
class Program
{
static IHardwareInfo hardwareInfo;
static void Main(string[] _)
{
try
{
hardwareInfo = new HardwareInfo();
//hardwareInfo.RefreshOperatingSystem();
//hardwareInfo.RefreshMemoryStatus();
//hardwareInfo.RefreshBatteryList();
//hardwareInfo.RefreshBIOSList();
//hardwareInfo.RefreshComputerSystemList();
//hardwareInfo.RefreshCPUList();
//hardwareInfo.RefreshDriveList();
//hardwareInfo.RefreshKeyboardList();
//hardwareInfo.RefreshMemoryList();
//hardwareInfo.RefreshMonitorList();
//hardwareInfo.RefreshMotherboardList();
//hardwareInfo.RefreshMouseList();
//hardwareInfo.RefreshNetworkAdapterList();
//hardwareInfo.RefreshPrinterList();
//hardwareInfo.RefreshSoundDeviceList();
//hardwareInfo.RefreshVideoControllerList();
hardwareInfo.RefreshAll();
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
Console.WriteLine(hardwareInfo.OperatingSystem);
Console.WriteLine(hardwareInfo.MemoryStatus);
foreach (var hardware in hardwareInfo.BatteryList)
Console.WriteLine(hardware);
foreach (var hardware in hardwareInfo.BiosList)
Console.WriteLine(hardware);
foreach (var hardware in hardwareInfo.ComputerSystemList)
Console.WriteLine(hardware);
foreach (var cpu in hardwareInfo.CpuList)
{
Console.WriteLine(cpu);
foreach (var cpuCore in cpu.CpuCoreList)
Console.WriteLine(cpuCore);
}
foreach (var drive in hardwareInfo.DriveList)
{
Console.WriteLine(drive);
foreach (var partition in drive.PartitionList)
{
Console.WriteLine(partition);
foreach (var volume in partition.VolumeList)
Console.WriteLine(volume);
}
}
foreach (var hardware in hardwareInfo.KeyboardList)
Console.WriteLine(hardware);
foreach (var hardware in hardwareInfo.MemoryList)
Console.WriteLine(hardware);
foreach (var hardware in hardwareInfo.MonitorList)
Console.WriteLine(hardware);
foreach (var hardware in hardwareInfo.MotherboardList)
Console.WriteLine(hardware);
foreach (var hardware in hardwareInfo.MouseList)
Console.WriteLine(hardware);
foreach (var hardware in hardwareInfo.NetworkAdapterList)
Console.WriteLine(hardware);
foreach (var hardware in hardwareInfo.PrinterList)
Console.WriteLine(hardware);
foreach (var hardware in hardwareInfo.SoundDeviceList)
Console.WriteLine(hardware);
foreach (var hardware in hardwareInfo.VideoControllerList)
Console.WriteLine(hardware);
foreach (var address in HardwareInfo.GetLocalIPv4Addresses(NetworkInterfaceType.Ethernet, OperationalStatus.Up))
Console.WriteLine(address);
Console.WriteLine();
foreach (var address in HardwareInfo.GetLocalIPv4Addresses(NetworkInterfaceType.Wireless80211))
Console.WriteLine(address);
Console.WriteLine();
foreach (var address in HardwareInfo.GetLocalIPv4Addresses(OperationalStatus.Up))
Console.WriteLine(address);
Console.WriteLine();
foreach (var address in HardwareInfo.GetLocalIPv4Addresses())
Console.WriteLine(address);
Console.ReadLine();
}
}
Hardware.Info uses WMI (Windows Management Instrumentation) on Windows OS. For certain queries WMI takes 21 seconds to initialize the first time you use it, after that all subsequent queries will execute immediately. If WMI isn't used for 15 minutes it will have to be initialized again the next time you use it.
The 21 second initialization delay is caused by RPC that WMI uses internally. In RPC documentation it says that the RPC/TCP time-out interval is defined with a SCMApiConnectionParam registry value located at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control and that the default value is set to 21,000 (21 seconds).
You can avoid the 21 second delay by excluding the queries that cause it (see Settings).
NetworkAdapter.Speed in WindowsSometimes NetworkAdapter.Speed in Win32_NetworkAdapter can be 0 or long.MaxValue. The correct value can be retrived from CurrentBandwidth in Win32_PerfFormattedData_Tcpip_NetworkAdapter but unfortunately reading from Win32_PerfFormattedData_Tcpip_NetworkAdapter causes a 21 second delay on the first read, like mentioned in the previous paragraph. Calling RefreshNetworkAdapterList with includeBytesPersec = true will also read the CurrentBandwidth.
WmiNetUtilsHelper will throw an exception in Windows if publish settings use <PublishTrimmed>true</PublishTrimmed>This is a known error: https://github.com/dotnet/core/issues/7051#issuecomment-1071484354
PerformanceCounter may crash msvcr80.dll with an invalid-parameter exceptionWhen using PerformanceCounter on a machine without the Visual C++ 2005 CRT installed, the native shim pulls in msvcr80.dll and may crash with an invalid-parameter exception (0xc000000d).
To skip the usage of PerformanceCounter set includePerformanceCounter to false (see Settings).
HardwareInfo(TimeSpan? timeoutInWMI = null, ILogger<HardwareInfo>? logger = null)
The construcotr accepts these settings:
timeoutInWMI sets the Timeout property of the EnumerationOptions in the ManagementObjectSearcher that executes each query. The default value is EnumerationOptions.InfiniteTimeout. There are one or more queries for each hardware component, so there are more than 16 queries executed on RefreshAll(). If a query reaches the timeout it will throw a System.Management.ManagementException exception where ErrorCode will be System.Management.ManagementStatus.Timedout. If you set the timeoutInWMI then use a try-catch block like this:
IHardwareInfo hardwareInfo;
try
{
hardwareInfo = new HardwareInfo(timeoutInWMI: TimeSpan.FromMilliseconds(100));
hardwareInfo.RefreshAll();
}
catch (ManagementException ex) when (ex.ErrorCode == ManagementStatus.Timedout)
{
Console.WriteLine(ex);
}
logger is used to log every exception in every catch block.
RefreshCPUList(
bool includePercentProcessorTime = true,
int millisecondsDelayBetweenTwoMeasurements = 500,
bool includePerformanceCounter = true)
RefreshNetworkAdapterList(
bool includeBytesPersec = true,
bool includeNetworkAdapterConfiguration = true,
int millisecondsDelayBetweenTwoMeasurements = 1000)
Setting includePercentProcessorTime and includeBytesPersec to false will exclude the queries that:
Setting includeNetworkAdapterConfiguration to false has only a small impact on performance.
Delay in milliseconds between two measurements in Linux:
For PercentProcessorTime in Linux:
string[] cpuUsageLineLast = TryReadLinesFromFile("/proc/stat");
Task.Delay(millisecondsDelayBetweenTwoMeasurements).Wait();
string[] cpuUsageLineNow = TryReadLinesFromFile("/proc/stat");
If includePercentProcessorTime is false, millisecondsDelayBetweenTwoMeasurements has no effect.
For BytesSentPersec and BytesReceivedPersec in Linux:
string[] procNetDevLast = TryReadLinesFromFile("/proc/net/dev");
Task.Delay(millisecondsDelayBetweenTwoMeasurements).Wait();
string[] procNetDevNow = TryReadLinesFromFile("/proc/net/dev");
If includeBytesPersec is false, millisecondsDelayBetweenTwoMeasurements has no effect.
Setting includePerformanceCounter to false excludes PerformanceCounter in Windows and avoids the exception in case Visual C++ 2005 CRT is not installed.
void RefreshVideoControllerList(bool refreshMonitorList = true)
When refreshMonitorList is true VideoController.MonitorList is populated and IHardwareInfo.MonitorList is refreshed.
When refreshMonitorList is false VideoController.MonitorList is empty and IHardwareInfo.MonitorList is not refreshed.
| Method | Mean | Error | StdDev |
|---|---|---|---|
| RefreshMemoryStatus | 947.8 ns | 3.77 ns | 3.53 ns |
| RefreshBatteryList | 1,811,885.7 ns | 12,921.05 ns | 11,454.17 ns |
| RefreshBIOSList | 2,086,001.0 ns | 23,896.69 ns | 22,352.98 ns |
| RefreshCPUList | 1,543,579,005.2 ns | 2,405,376.47 ns | 2,132,303.59 ns |
| RefreshDriveList | 409,137,516.3 ns | 8,612,410.99 ns | 25,258,710.57 ns |
| RefreshKeyboardList | 5,568,039.5 ns | 44,228.57 ns | 41,371.43 ns |
| RefreshMemoryList | 2,120,024.5 ns | 26,103.39 ns | 24,417.13 ns |
| RefreshMonitorList | 5,669,237.8 ns | 50,801.76 ns | 45,034.44 ns |
| RefreshMotherboardList | 1,965,222.9 ns | 14,387.30 ns | 13,457.89 ns |
| RefreshMouseList | 6,003,924.9 ns | 60,725.05 ns | 50,708.17 ns |
| RefreshNetworkAdapterList | 1,412,244,738.6 ns | 14,681,615.28 ns | 12,259,813.69 ns |
| RefreshPrinterList | 28,244,822.2 ns | 143,359.60 ns | 134,098.66 ns |
| RefreshSoundDeviceList | 3,608,577.5 ns | 68,688.62 ns | 73,496.06 ns |
| RefreshVideoControllerList | 11,568,549.2 ns | 54,666.07 ns | 48,460.05 ns |
| Method | Mean | Error | StdDev |
|---|---|---|---|
| RefreshOperatingSystem | 2.946 ns | 0.0052 ns | 0.0047 ns |
| RefreshMemoryStatus | 460.552 ns | 4.4810 ns | 3.9723 ns |
| RefreshBatteryList | 1,624,392.057 ns | 22,526.9314 ns | 21,071.7057 ns |
| RefreshBIOSList | 1,785,673.828 ns | 8,812.8115 ns | 8,243.5094 ns |
| RefreshCPUList | 1,964,995,539.000 ns | 171,465,934.5051 ns | 505,571,176.5574 ns |
| RefreshDriveList | 62,452,668.148 ns | 342,662.0413 ns | 320,526.2860 ns |
| RefreshKeyboardList | 4,303,528.516 ns | 47,355.1733 ns | 41,979.1277 ns |
| RefreshMemoryList | 1,926,931.367 ns | 19,754.4179 ns | 18,478.2948 ns |
| RefreshMonitorList | 3,884,362.370 ns | 29,422.1438 ns | 27,521.4916 ns |
| RefreshMotherboardList | 1,782,235.664 ns | 12,974.2296 ns | 12,136.1024 ns |
| RefreshMouseList | 4,700,086.615 ns | 44,435.0631 ns | 41,564.5856 ns |
| RefreshNetworkAdapterList | 945,004,493.333 ns | 8,568,978.4607 ns | 8,015,427.7687 ns |
| RefreshPrinterList | 48,126,103.030 ns | 729,958.0933 ns | 682,803.2534 ns |
| RefreshSoundDeviceList | 4,154,082.924 ns | 46,922.5501 ns | 41,595.6184 ns |
| RefreshVideoControllerList | 8,784,372.500 ns | 125,080.5212 ns | 117,000.3971 ns |
| Method | Mean | Error | StdDev |
|---|---|---|---|
| RefreshOperatingSystem | 2.043 ns | 0.0106 ns | 0.0089 ns |
| RefreshMemoryStatus | 747.059 ns | 4.0881 ns | 3.6240 ns |
| RefreshBatteryList | 769,294.056 ns | 7,804.1659 ns | 7,300.0216 ns |
| RefreshBIOSList | 914,615.137 ns | 2,764.7719 ns | 2,586.1694 ns |
| RefreshComputerSystemList | 867,441.380 ns | 4,910.2677 ns | 4,593.0674 ns |
| RefreshCPUList | 547,666,150.000 ns | 3,834,134.5804 ns | 2,993,440.0817 ns |
| RefreshDriveList | 50,255,102.424 ns | 267,606.2273 ns | 250,319.0311 ns |
| RefreshKeyboardList | 3,576,457.729 ns | 13,472.4649 ns | 11,942.9892 ns |
| RefreshMemoryList | 975,401.730 ns | 6,965.8030 ns | 6,175.0029 ns |
| RefreshMonitorList | 13,044,668.229 ns | 69,062.1913 ns | 64,600.8166 ns |
| RefreshMotherboardList | 826,633.952 ns | 7,396.2197 ns | 6,918.4285 ns |
| RefreshMouseList | 3,956,703.385 ns | 18,345.2371 ns | 17,160.1462 ns |
| RefreshNetworkAdapterList | 964,918,471.429 ns | 8,276,711.3481 ns | 7,337,089.0269 ns |
| RefreshPrinterList | 40,490,665.385 ns | 240,725.9111 ns | 201,017.0383 ns |
| RefreshSoundDeviceList | 2,433,603.828 ns | 8,374.9648 ns | 7,833.9473 ns |
| RefreshVideoControllerList | 7,884,823.398 ns | 392,809.5101 ns | 1,158,207.7031 ns |
GetCpuList in Windows - by @TekuSPILogger<HardwareInfo>? logger = null to HardwareInfo - thanks to @TekuSPbool refreshMonitorList = true to RefreshVideoControllerList - thanks to @TekuSPMonitorList in VideoController - thanks to @TekuSPGetCpuList in Windows - thanks to @TekuSPCurrentHorizontalResolution, CurrentVerticalResolution, CurrentRefreshRate in MonitorGetMonitorList, GetPrinterList in LinuxGetBiosList, GetKeyboardList, GetMotherboardList, GetMouseList in macOSGetPrinterList, GetSoundDeviceList in macOSGetBatteryList, GetDriveList, GetMonitorList, GetNetworkAdapterList in macOSEnumerationOptions for ManagementObjectSearcher - by @campersauHardware.Info.Aot - thanks to @MartinKuschnikMemory.MemoryType - thanks to @loyvscDrive.MediaType in Windows - by @BastaniGetBatteryList in Linux - by @jonko0493GetCpuList in Windows - by @ilCosmicoGetCpuList in macOS - thanks to @OudomMunintGetCpuList in Linux - thanks to @inelisoniint millisecondsDelayBetweenTwoMeasurements to GetCpuListint millisecondsDelayBetweenTwoMeasurements to GetNetworkAdapterListGetNetworkAdapterList in Linux - thanks to @Pregath0rComputerSystem info in Windows, macOS, Linux - thanks to @ZagrthosGetVideoControllerList in Linux - thanks to @NogginBopsGetDriveList in Linux - thanks to @GusanoGrisMicrosoft.SourceLink.GitHub - by @andreas-erikssonDisk.Description in LinuxDisk.FirmwareRevision in LinuxDisk.Name in LinuxDisk.SerialNumber in LinuxDisk.Size in LinuxHardwareInfo.snk to sign the assembly with a strong name keyGetCpuList in Linux - thanks to @inelisoniGetMonitorList in Windows - by @GeevoGetMonitorList in Windows - by @GeevoNetworkAdapter.Speed in Windows - by @isenmannKeyboard info in LinuxMouse info in LinuxSoundDevice info in LinuxVideoController.CurrentHorizontalResolution in LinuxVideoController.CurrentVerticalResolution in LinuxVideoController.CurrentRefreshRate in LinuxVideoController.AdapterRAM in Windows - by @jesperllL1DataCacheSize and L1InstructionCacheSize in Windows, macOS, LinuxL2CacheSize and L3CacheSize in Windows, LinuxGetNetworkAdapterList in Windows - thanks to @isenmannCurrentClockSpeed in Windows - thanks to @jason-c-danielsGetCpuUsage in Linux - thanks to @glebov21CPU.Name and CPU.CurrentClockSpeed in macOS - by @davidaramantCPU.MaxClockSpeed in macOS - by @davidaramantPercentProcessorTime in Windows - thanks to @C6OIGetOperatingSystem() in Windows, macOS, Linux - thanks to @adhip94GetBatteryList() in macOS - by @TadelsuchtGetBatteryList() in Linux - by @TadelsuchtGetDriveList() and GetMemoryList() in Linux - thanks to @misaka00251Memory.BankLabel, Memory.MinVoltage, Memory.MaxVoltage in Windows - by @AathifMahirCPU.SocketDesignation, CPU.SecondLevelAddressTranslationExtensions in Windows - by @AathifMahirIHardwareInfo so that HardwareInfo can be mocked - by @240026763MemAvailable instead of MemFree in Linux - by @schotimeBattery.EstimatedChargeRemaining in Windows, Linux - by @reptailBattery.ExpectedLife in LinuxBattery.EstimatedRunTime in LinuxBattery.MaxRechargeTime in LinuxBattery.TimeToFullCharge in LinuxBattery.DesignCapacity in LinuxBattery.FullChargeCapacity in LinuxBattery.BatteryStatusDescription in LinuxMonitor info in macOSVideoController info in macOSCPU.L2CacheSize in macOSCPU.L3CacheSize in macOSMemory info in macOSBIOS.ReleaseDate in LinuxCPU.Manufacturer in LinuxCPU.L3CacheSize in LinuxMotherboard.SerialNumber in LinuxNetworkAdapter info in LinuxGetLocalIPv4Addresses() in macOSGetLocalIPv4Addresses() in Windows, macOS, LinuxMotherboard.SerialNumber in WindowsDrive, NetworkAdapter info in macOS, Linux| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 was computed. net5.0-windows net5.0-windows was computed. net6.0 net6.0 was computed. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 was computed. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 was computed. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 netcoreapp2.0 was computed. netcoreapp2.1 netcoreapp2.1 was computed. netcoreapp2.2 netcoreapp2.2 was computed. netcoreapp3.0 netcoreapp3.0 was computed. netcoreapp3.1 netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 netstandard2.0 is compatible. netstandard2.1 netstandard2.1 was computed. |
| .NET Framework | net461 net461 was computed. net462 net462 was computed. net463 net463 was computed. net47 net47 was computed. net471 net471 was computed. net472 net472 was computed. net48 net48 was computed. net481 net481 was computed. |
| MonoAndroid | monoandroid monoandroid was computed. |
| MonoMac | monomac monomac was computed. |
| MonoTouch | monotouch monotouch was computed. |
| Tizen | tizen40 tizen40 was computed. tizen60 tizen60 was computed. |
| Xamarin.iOS | xamarinios xamarinios was computed. |
| Xamarin.Mac | xamarinmac xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos xamarinwatchos was computed. |
Showing the top 5 NuGet packages that depend on Hardware.Info:
| Package | Downloads |
|---|---|
|
HexaEightJWTLibrary
Create and Validate HexaEight JWT Tokens using this Libarary. This Library provides helper functions to implement HexaEight authenticated encryption and decryption of messages. |
|
|
Seeq.Link.Agent
Agent for running Seeq .NET connectors |
|
|
Dijing.Common.Core
Dijing.Common is a common library for .netcore |
|
|
Jakar.Database
Package Description |
|
|
Lobster.Boot
LobsterBoot核心类库 |
Showing the top 11 popular GitHub repositories that depend on Hardware.Info:
| Repository | Stars |
|---|---|
|
LykosAI/StabilityMatrix
Multi-Platform Package Manager for Stable Diffusion
|
|
|
PixiEditor/PixiEditor
PixiEditor is a Universal Editor for all your 2D needs
|
|
|
Stability-AI/StableSwarmUI
StableSwarmUI, A Modular Stable Diffusion Web-User-Interface, with an emphasis on making powertools easily accessible, high performance, and extensibility.
|
|
|
mcmonkeyprojects/SwarmUI
SwarmUI (formerly StableSwarmUI), A Modular Stable Diffusion Web-User-Interface, with an emphasis on making powertools easily accessible, high performance, and extensibility.
|
|
|
ErsatzTV/legacy
Open-source platform that transforms your personal media library into live, custom TV channels.
|
|
|
codeproject/CodeProject.AI-Server
CodeProject.AI Server is a self contained service that software developers can include in, and distribute with, their applications in order to augment their apps with the power of AI.
|
|
|
akash-network/awesome-akash
Awesome List of Akash Deployment Examples
|
|
|
AscensionGameDev/Intersect-Engine
Intersect provides a complete game development suite for creating 2d mmorpgs with no programming experience required!
|
|
|
HexaEngine/HexaEngine
The official repo of the HexaEngine game engine
|
|
|
oncemi/OnceMi.Framework
基于.NET 7和Vue 2开发的企业级前后端分离权限管理开发框架(后台管理系统),具有组织管理、角色管理、用户管理、菜单管理、授权管理、计划任务、文件管理等功能。支持国内外多种流行数据库,支持IdentityServer4认证中心。
|
|
|
Gml-Launcher/Gml.Launcher
Gml.Launcher is a Minecraft launcher application developed using C#. It is designed to streamline and simplify the process of launching Minecraft, managing game versions, and configuring in-game parameters directly from the user interface of the Gml.Backend.
|
| Version | Downloads | Last Updated |
|---|---|---|
| 110.0.0.1 | 19,368 | 5/21/2026 |
| 110.0.0 | 1,700 | 5/19/2026 |
| 101.1.1.1 | 84,970 | 1/26/2026 |
| 101.1.1 | 3,913 | 1/18/2026 |
| 101.1.0.1 | 184,950 | 11/5/2025 |
| 101.1.0 | 48,665 | 9/21/2025 |
| 101.0.1.1 | 207,852 | 5/28/2025 |
| 101.0.1 | 172,282 | 2/16/2025 |
| 101.0.0.1 | 34,848 | 2/6/2025 |
| 101.0.0 | 571,369 | 9/19/2024 |
| 100.1.1.1 | 5,573 | 9/18/2024 |
| 100.1.1 | 101,860 | 8/29/2024 |
| 100.1.0.1 | 115,369 | 7/5/2024 |
| 100.1.0 | 142,558 | 3/2/2024 |
| 100.0.1.1 | 68,483 | 1/5/2024 |
| 100.0.1 | 13,632 | 12/8/2023 |
| 100.0.0.1 | 25,232 | 11/30/2023 |
| 100.0.0 | 21,998 | 9/17/2023 |
| 11.1.1.1 | 31,487 | 7/19/2023 |
| 11.1.1 | 2,027 | 7/16/2023 |