1###############
2# Device Detector - The Universal Device Detection library for parsing User Agents
3#
4# @link https://matomo.org
5# @license http://www.gnu.org/licenses/lgpl.html LGPL v3 or later
6###############
7
8##########
9# Coolita OS (http://www.coolitaos.com/)
10##########
11- regex: 'Coolita OS QJY/.+LiteOS(\d+[.\d]+)'
12  name: 'Coolita OS'
13  version: '$1'
14- regex: 'Coolita OS QJY/(\d+[.\d]+)'
15  name: 'Coolita OS'
16  version: '$1'
17
18##########
19# RTOS & Next
20##########
21- regex: '^NEXT '
22  name: 'RTOS & Next'
23  version: ''
24
25##########
26# Meta Horizon (https://developers.meta.com/horizon)
27##########
28- regex: '(?:Pacific|(?<!like )Quest).+OculusBrowser|Standalone HMD|PortalGo'
29  name: 'Meta Horizon'
30  version: ''
31
32##########
33# LeafOS (https://www.leafos.org/)
34##########
35- regex: 'LeafOS'
36  name: 'LeafOS'
37  version: ''
38
39##########
40# Puffin OS (https://www.puffin.com/os/help/faq/)
41##########
42- regex: 'Cloud Phone'
43  name: 'Puffin OS'
44  version: ''
45
46##########
47# risingOS (https://github.com/RisingTechOSS/android)
48##########
49- regex: 'RisingOS'
50  name: 'risingOS'
51  version: ''
52
53##########
54# Azure Linux (https://github.com/microsoft/azurelinux)
55##########
56- regex: '.+.cm(\d).x86_64'
57  name: 'Azure Linux'
58  version: '$1'
59
60- regex: 'Linux[/-].+-(azure|Microsoft)'
61  name: 'Azure Linux'
62  version: ''
63
64# ViziOS
65##########
66- regex: 'ViziOS/(\d+[.\d]+)'
67  name: 'ViziOS'
68  version: '$1'
69- regex: 'VIZIO(?: SmartCast|-DTV)'
70  name: 'ViziOS'
71  version: ''
72
73##########
74# blackPanther OS (https://blackpantheros.eu/)
75##########
76- regex: 'blackPanther OS'
77  name: 'blackPanther OS'
78  version: ''
79
80##########
81# WoPhone
82##########
83- regex: 'WoPhone(?:/(\d+[.\d]+))?'
84  name: 'WoPhone'
85  version: '$1'
86
87##########
88# KIN OS (https://en.wikipedia.org/wiki/Microsoft_Kin)
89##########
90- regex: 'KIN\.(?:One|Two) (\d+[.\d]+)'
91  name: 'KIN OS'
92  version: '$1'
93
94##########
95# Star-Blade OS
96##########
97- regex: 'Star-Blade OS'
98  name: 'Star-Blade OS'
99  version: ''
100
101##########
102# Qtopia (https://en.wikipedia.org/wiki/Qt_Extended)
103##########
104- regex: 'Qtopia/(\d+[.\d]+)'
105  name: 'Qtopia'
106  version: '$1'
107
108##########
109# OpenVMS (https://vmssoftware.com/)
110##########
111- regex: 'OpenVMS V(\d+[.\d]+)'
112  name: 'OpenVMS'
113  version: '$1'
114
115##########
116# AROS (https://aros.sourceforge.io/)
117##########
118- regex: 'AROS'
119  name: 'AROS'
120  version: ''
121
122##########
123# NeXTSTEP
124##########
125- regex: '\(NEXT\)'
126  name: 'NeXTSTEP'
127  version: ''
128
129##########
130# NEWS-OS (https://en.wikipedia.org/wiki/Sony_NEWS)
131##########
132- regex: 'NEWS-OS (\d+[.\d]+)'
133  name: 'NEWS-OS'
134  version: '$1'
135
136##########
137# ULTRIX (https://en.wikipedia.org/wiki/Ultrix)
138##########
139- regex: 'ULTRIX (\d+[.\d]+)'
140  name: 'ULTRIX'
141  version: '$1'
142
143##########
144# Turbolinux (http://www.turbolinux.com/)
145##########
146- regex: 'Turbolinux/(\d+[.\d]+)'
147  name: 'Turbolinux'
148  version: '$1'
149
150##########
151# Joli OS (https://www.jolicloud.com/products/)
152##########
153- regex: 'Joli OS/(\d+[.\d]+)'
154  name: 'Joli OS'
155  version: '$1'
156
157##########
158# GENIX
159##########
160- regex: 'GENIX (\d+[.\d]+)'
161  name: 'GENIX'
162  version: '$1'
163
164##########
165# gNewSense (http://www.gnewsense.org)
166##########
167- regex: 'gNewSense/.*\((\d+[.\d]+)'
168  name: 'gNewSense'
169  version: '$1'
170
171##########
172# GEOS
173##########
174- regex: 'Geos (\d+[.\d]+)'
175  name: 'GEOS'
176  version: '$1'
177
178##########
179# Motorola EZX
180##########
181- regex: 'MOT-.*LinuxOS/'
182  name: 'Motorola EZX'
183  version: ''
184
185##########
186# Baidu Yi (https://en.wikipedia.org/wiki/Baidu_Yi)
187##########
188- regex: 'Baidu Yi'
189  name: 'Baidu Yi'
190  version: ''
191
192##########
193# Red Star (https://en.wikipedia.org/wiki/Red_Star_OS)
194##########
195- regex: '붉은별|Fedora/(?:\d+\.[\d.-]+)\.rs(\d+(?:[_.]\d+)*)'
196  name: 'Red Star'
197  version: '$1'
198
199##########
200# Proxmox VE (https://pve.proxmox.com/wiki/Main_Page)
201##########
202- regex: 'Linux/(?:\d+\.[\d.-]+)-(?:pve|v(\d)\+)'
203  name: 'Proxmox VE'
204  version: '$1'
205
206##########
207# OpenVZ (https://openvz.org/)
208##########
209- regex: 'Linux/(?:\d+\.[\d.-]+)-(?:\d+[.\d]+)stab(?:\d+[.\d]+)'
210  name: 'OpenVZ'
211  version: ''
212
213# Rocky Linux (https://rockylinux.org/)
214##########
215- regex: 'rocky/(\d+[.\d]+)'
216  name: 'Rocky Linux'
217  version: '$1'
218
219##########
220# Clear Linux OS (https://www.clearlinux.org/)
221##########
222- regex: 'clear-linux-os/(\d+[.\d]+)'
223  name: 'Clear Linux OS'
224  version: '$1'
225
226##########
227# Alpine Linux (https://www.alpinelinux.org/)
228##########
229- regex: 'alpine/(\d+[.\d]+)'
230  name: 'Alpine Linux'
231  version: '$1'
232
233##########
234# Scientific Linux (https://scientificlinux.org/)
235##########
236- regex: 'scientific/(\d+[.\d]+)'
237  name: 'Scientific Linux'
238  version: '$1'
239
240##########
241# EulerOS (https://developer.huaweicloud.com/intl/en-us/euleros/index.html)
242##########
243- regex: 'eulerosv(\d)r(\d+)'
244  name: 'EulerOS'
245  version: '$1.$2'
246
247##########
248# Loongnix (https://www.loongson.cn/EN/system/loongnix)
249##########
250- regex: 'loongnix-server/(\d+[.\d]+)'
251  name: 'Loongnix'
252  version: '$1'
253
254- regex: 'Linux/(?:\d+\.[\d.-]+)\.lns(\d+(?:[_.]\d+)*)\.loongarch64'
255  name: 'Loongnix'
256  version: '$1'
257
258##########
259# AOSC OS (https://aosc.io/)
260##########
261- regex: 'AOSC OS'
262  name: 'AOSC OS'
263  version: ''
264
265##########
266# SerenityOS (https://github.com/SerenityOS/serenity)
267##########
268- regex: 'SerenityOS|Ladybird/'
269  name: 'SerenityOS'
270  version: ''
271
272##########
273# HELIX OS (https://www.pegasusintelligence.com/communication-security/)
274##########
275- regex: 'Helix Phone'
276  name: 'HELIX OS'
277  version: ''
278
279##########
280# Armadillo OS (https://github.com/pacificresearchalliance/kernel_google_crosshatch)
281##########
282- regex: 'Armadillo'
283  name: 'Armadillo OS'
284  version: ''
285
286# Webian (https://www.webian.org/)
287##########
288- regex: 'Webian'
289  name: 'Webian'
290  version: ''
291
292##########
293# Liri OS (https://liri.io/ | https://github.com/lirios)
294##########
295- regex: 'Linux.*Liri/'
296  name: 'Liri OS'
297  version: ''
298
299##########
300# FRITZ!OS (https://en.avm.de/products/fritzos/)
301##########
302- regex: 'FRITZ!OS(?:/0(\d+[.\d]+))?'
303  name: 'FRITZ!OS'
304  version: '$1'
305
306##########
307# UOS (https://www.chinauos.com/)
308##########
309- regex: 'UOS$'
310  name: 'UOS'
311  version: ''
312
313##########
314# Raspbian (https://www.raspbian.org/)
315##########
316- regex: 'Raspbian/(\d+[.\d]+)'
317  name: 'Raspbian'
318  version: '$1'
319
320##########
321# Raspberry Pi OS (https://www.raspberrypi.com/software/)
322##########
323- regex: 'Raspbian'
324  name: 'Raspberry Pi OS'
325  version: ''
326
327##########
328# BrightSignOS (https://www.brightsign.biz/ecosystem/brightsign-os/)
329##########
330- regex: 'BrightSign/(?:[A-Z0-9]+)/(\d+[.\d]+)'
331  name: 'BrightSignOS'
332  version: '$1'
333- regex: 'BrightSign/(\d+[.\d]+)'
334  name: 'BrightSignOS'
335  version: '$1'
336
337##########
338# LuneOS (https://www.webos-ports.org/)
339##########
340- regex: 'LuneOS'
341  name: 'LuneOS'
342  version: ''
343
344##########
345# Oracle Linux (https://www.oracle.com/linux/)
346##########
347- regex: 'Linux/(?:\d+\.[\d.-]+)\.el(\d+(?:[_.]\d+)*)uek'
348  name: 'Oracle Linux'
349  version: '$1'
350
351##########
352# Kali (https://www.kali.org/)
353##########
354- regex: '.+kali(\d)'
355  name: 'Kali'
356  version: '$1'
357
358# TiVo OS (https://business.tivo.com/products-solutions/tivo-os)
359##########
360- regex: 'TiVoOS/(\d+[.\d]+)'
361  name: 'TiVo OS'
362  version: '$1'
363
364##########
365# VIDAA (https://www.vidaa.com/vidaa-os/)
366##########
367- regex: 'VIDAA/(\d+[.\d]+)'
368  name: 'VIDAA'
369  version: '$1'
370
371##########
372# PICO OS (https://www.picoxr.com/global/software/pico-os)
373##########
374- regex: 'PICO.+OS(\d+[.\d]*)'
375  name: 'PICO OS'
376  version: '$1'
377
378##########
379# RedOS (https://redos.red-soft.ru/)
380##########
381- regex: 'RED OS; Linux'
382  name: 'RedOS'
383  version: ''
384
385##########
386# RouterOS (https://help.mikrotik.com/docs/display/ROS/RouterOS)
387##########
388- regex: 'Mikrotik/(\d)\.x'
389  name: 'RouterOS'
390  version: '$1'
391
392##########
393# Sirin OS (https://sirinlabs.com/sirin-os/)
394##########
395- regex: 'FINNEY U1'
396  name: 'Sirin OS'
397  version: ''
398
399##########
400# Nova (https://www.nova.cu/)
401##########
402- regex: 'Nova; Linux'
403  name: 'Nova'
404  version: ''
405
406##########
407# Bliss OS (https://blissos.org/)
408##########
409- regex: 'Android 10.+bliss_maple'
410  name: 'Bliss OS'
411  version: '12'
412
413##########
414# TencentOS (https://github.com/Tencent/TencentOS-kernel)
415##########
416- regex: '.+tlinux(\d)'
417  name: 'TencentOS'
418  version: '$1'
419
420##########
421# Amazon Linux (https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html)
422##########
423- regex: '.+.amzn(\d)(?:int)?.x86_64|Linux/.+aws'
424  name: 'Amazon Linux'
425  version: '$1'
426
427- regex: 'Linux/.+-c9$'
428  name: 'Amazon Linux'
429  version: '2023' # https://aws.amazon.com/about-aws/whats-new/2023/12/aws-cloud9-amazon-linux-2023/
430
431##########
432# COS (China Operating System - https://web.archive.org/web/20170825001023/http://www.china-cos.com/)
433##########
434- regex: ' COS like Android'
435  name: 'China OS'
436  version: ''
437
438##########
439# ClearOS Mobile (https://www.clearos.com/products/clearos-editions/clearos-mobile)
440##########
441- regex: 'Android (\d+[.\d]*); ClearPHONE'
442  name: 'ClearOS Mobile'
443  version: '$1'
444
445##########
446# Plasma Mobile (https://plasma-mobile.org/)
447##########
448- regex: 'Plasma Mobile'
449  name: 'Plasma Mobile'
450  version: ''
451
452##########
453# KreaTV
454##########
455- regex: 'KreaTV/0\.0\.0\.0'
456  name: 'KreaTV'
457  version: ''
458
459- regex: 'KreaTV/(\d+[.\d]+)'
460  name: 'KreaTV'
461  version: '$1'
462
463##########
464# Opera TV (https://blogs.opera.com/news/2016/01/ces-2016-meet-opera-tv/)
465##########
466- regex: 'Linux (?:[^;]+); Opera TV(?: Store)?/|^Opera/\d+\.\d+ \(Linux mips'
467  name: 'Opera TV'
468  version: ''
469- regex: 'OPR/.+TV Store/(\d+[.\d]+)'
470  name: 'Opera TV'
471  version: '$1'
472
473##########
474# GridOS (https://web.archive.org/web/20111123141630/http://fusiongarage.com/grid-os/about)
475##########
476- regex: 'Grid OS (\d+[.\d]+)'
477  name: 'GridOS'
478  version: '$1'
479
480##########
481# Caixa Mágica (https://caixamagica.pt/)
482##########
483- regex: 'CaixaMagica'
484  name: 'Caixa Mágica'
485  version: ''
486
487##########
488# Mageia (https://www.mageia.org/en/)
489##########
490- regex: 'Mageia; Linux'
491  name: 'Mageia'
492  version: ''
493
494##########
495# Whale OS (https://www.zeasn.com/)
496##########
497- regex: '(?:WH|WhaleTV)/?(\d+[.\d]+)'
498  name: 'Whale OS'
499  version: '$1'
500
501- regex: 'Zeasn/.*TBrowser/2\.0' # https://partner.zeasn.com/partnerportal/WhaleVersion1/index.jhtml
502  name: 'Whale OS'
503  version: '1'
504
505- regex: 'Zeasn/'
506  name: 'Whale OS'
507  version: ''
508
509##########
510# Tizen (https://www.tizen.org/)
511##########
512- regex: 'Tizen[ /]?(\d+[.\d]+)?'
513  name: 'Tizen'
514  version: '$1'
515
516- regex: 'Maple (?!III)(?:\d+[.\d]+)|Maple_?\d{4}|HbbTV/.+Samsung'
517  name: 'Tizen'
518  version: ''
519
520##########
521# YunOS (Android based)
522##########
523- regex: 'Android (\d+[.\d]+)-RT'
524  name: 'YunOS'
525  version: '$1'
526
527- regex: '(?:Ali)?YunOS[ /]?(\d+[.\d]+)?'
528  name: 'YunOS'
529  version: '$1'
530
531##########
532# Windows Mobile
533##########
534- regex: 'Windows Phone;FBSV/(\d+[.\d]+)'
535  name: 'Windows Phone'
536  version: '$1'
537
538- regex: '(?:Windows Phone (?:OS)?|wds)[ /]?(\d+[.\d]+)'
539  name: 'Windows Phone'
540  version: '$1'
541
542- regex: 'XBLWP7|Windows Phone'
543  name: 'Windows Phone'
544  version: ''
545
546- regex: 'Windows CE(?: (\d+[.\d]+))?'
547  name: 'Windows CE'
548  version: '$1'
549
550- regex: '(?:IEMobile|Windows ?Mobile)(?: (\d+[.\d]+))?'
551  name: 'Windows Mobile'
552  version: '$1'
553
554- regex: 'Windows NT 6\.2; ARM;'
555  name: 'Windows RT'
556  version: ''
557
558- regex: 'Windows NT 6\.3; ARM;'
559  name: 'Windows RT'
560  version: '8.1'
561
562##########
563# Windows IoT
564##########
565- regex: 'Windows IoT 10\.0'
566  name: 'Windows IoT'
567  version: '10'
568
569##########
570# KaiOS (https://www.kaiostech.com/)
571##########
572- regex: 'KAIOS(?:/(\d+[.\d]+))?'
573  name: 'KaiOS'
574  version: '$1'
575
576##########
577# Custom Android Roms
578##########
579- regex: 'HarmonyOS(?:[/ ](\d+[.\d]+))?'
580  name: 'HarmonyOS'
581  version: '$1'
582- regex: 'Hmos/1'
583  name: 'HarmonyOS'
584  version: '1.0.0'
585
586- regex: 'RazoDroiD(?: v(\d+[.\d]*))?'
587  name: 'RazoDroiD'
588  version: '$1'
589
590- regex: 'MildWild(?: CM-(\d+[.\d]*))?'
591  name: 'MildWild'
592  version: '$1'
593
594- regex: 'CyanogenMod(?:[\-/](?:CM)?(\d+[.\d]*))?'
595  name: 'CyanogenMod'
596  version: '$1'
597
598- regex: '(?:.*_)?MocorDroid(?:(\d+[.\d]*))?'
599  name: 'MocorDroid'
600  version: '$1'
601
602- regex: 'FydeOS'
603  name: 'FydeOS'
604  version: ''
605
606##########
607# Fire OS (https://developer.amazon.com/docs/fire-tv/fire-os-overview.html)
608##########
609- regex: 'Fire OS(?:/(\d+[.\d]*))?'
610  name: 'Fire OS'
611  version: '$1'
612
613- regex: '(?:Andr[o0]id (\d([\d.])*);? |Amazon;|smarttv_)AFT|AEO[ACBHKT]|KF[ADFGJKMORSTQ]|.*FIRETVSTICK2018'
614  name: 'Fire OS'
615  versions:
616    - regex: 'Andr[o0]id 1[01].+ (?:AFT|KF[ADFGJKMORSTQ])'
617      version: '8'
618    - regex: 'Andr[o0]id 9.+ (?:AEO[AHT]|AFT|KF[ADFGJKMORSTQ])|AFTSO001'
619      version: '7'
620    - regex: 'Andr[o0]id 7|.+FIRETVSTICK2018'
621      version: '6'
622    - regex: 'Andr[o0]id 5\.1'
623      version: '5'
624    - regex: 'Andr[o0]id 4\.4\.3'
625      version: '4.5.1'
626    - regex: 'Andr[o0]id 4\.4\.2'
627      version: '4'
628    - regex: 'Andr[o0]id 4\.2\.2'
629      version: '3'
630    - regex: 'Andr[o0]id 4\.0\.[34]'
631      version: '3'
632    - regex: 'Andr[o0]id 4\.0'
633      version: '2'
634    - regex: 'Andr[o0]id 2\.3\.3'
635      version: '1'
636
637- regex: 'cordova-amazon-fireos'
638  name: 'Fire OS'
639  version: ''
640
641##########
642# Revenge OS
643##########
644- regex: 'revengeos_x2'
645  name: 'Revenge OS'
646  version: '2'
647
648##########
649# Lineage OS
650##########
651- regex: 'Lineage_(\d+[.\d]*)'
652  name: 'Lineage OS'
653  version: '$1'
654
655- regex: '(?:Android (\d([\d.])*);? )?lineage_\w+'
656  name: 'Lineage OS'
657  versions:
658    - regex: 'Android 15'
659      version: '22'
660    - regex: 'Android 14'
661      version: '21'
662    - regex: 'Android 13'
663      version: '20.0'
664    - regex: 'Android 12\.1'
665      version: '19.1'
666    - regex: 'Android 12'
667      version: '19.0'
668    - regex: 'Android 11'
669      version: '18.0'
670    - regex: 'Android 10'
671      version: '17.0'
672    - regex: 'Android 9'
673      version: '16.0'
674    - regex: 'Android 8\.1'
675      version: '15.1'
676    - regex: 'Android 8'
677      version: '15.0'
678    - regex: 'Android 7\.1'
679      version: '14.1'
680    - regex: 'Android 7'
681      version: '14.0'
682    - regex: 'Android 6'
683      version: '13.0'
684    - regex: 'Android 5\.1'
685      version: '12.1'
686    - regex: 'Android 5'
687      version: '12.0'
688    - regex: 'Android 4\.4'
689      version: '11.0'
690    - regex: 'Android 4\.3'
691      version: '10.2'
692    - regex: 'Android 4\.2'
693      version: '10.1'
694    - regex: 'Android 4'
695      version: '9.1.0'
696
697#########
698# Resurrection Remix OS (https://resurrectionremix.com/)
699##########
700- regex: 'Android 8(?:[\d.]*);(?: [\w-]+;)? rr_fortuna3g'
701  name: 'Resurrection Remix OS'
702  version: '6'
703
704##########
705# Remix OS
706##########
707- regex: 'RemixOS|Remix (?:Pro|Mini)'
708  name: 'Remix OS'
709  versions:
710    - regex: 'RemixOS 5'
711      version: '1'
712    - regex: 'RemixOS 6|Remix Mini'
713      version: '2'
714    - regex: 'Remix Pro'
715      version: '3'
716
717##########
718# FreeBSD
719##########
720- regex: 'FreeBSD.+Android'
721  name: 'FreeBSD'
722  version: ''
723
724##########
725# Wear OS (https://wearos.google.com/)
726##########
727- regex: 'Chrome/(\d+\.[.\d]+) Odd/|SM-R(?:8[6-9]|9)|LEM14'
728  name: 'Wear OS'
729  version: ''
730
731##########
732# SeewoOS
733##########
734- regex: 'SeewoOS x86_64 (\d+[.\d]+)'
735  name: 'SeewoOS'
736  version: '$1'
737
738##########
739# ChromeOS
740##########
741- regex: '(?:CrOS [a-z0-9_]+ |.*Build/R\d+-)(\d+[.\d]+)|Chromebook'
742  name: 'Chrome OS'
743  version: '$1'
744
745# https://chromiumdash.appspot.com/serving-builds?deviceCategory=ChromeOS
746- regex: '(?:Android (?:9|1[0-6])[.\d]*|Linux x86_64); (?:asurada|atlas|brask|brya|cherry|coral|corsola|dedede|drallion|elm|eve|fizz|geralt|grunt|guybrush|hana|hatch|jacuzzi|kalista|kukui|nami|nautilus|nissa|nocturne|octopus|puff|pyro|rammus|reef|rex|sand|sarien|skyrim|snappy|soraka|staryu|strongbad|trogdor|volteer|zork)\)'
747  name: 'Chrome OS'
748  version: ''
749
750##########
751# Android TV (https://android.com/tv/)
752##########
753- regex: 'Linux; Andr0id[; ](\d+[.\d]*)'
754  name: 'Android TV'
755  version: '$1'
756
757- regex: 'Android[; ](\d+[.\d]*).+(?:(?:Android(?: UHD)?|AT&T|Google|Smart)[ _]?TV|AOSP on r33a0|BRAVIA|wv-atv)'
758  name: 'Android TV'
759  version: '$1'
760
761- regex: 'Windows.+Andr0id TV|.+(?:K_?Android_?TV_|AndroidTV|GoogleTV_)'
762  name: 'Android TV'
763  version: ''
764
765##########
766# Android SDK Level Api
767##########
768- regex: '(?:Android API \d+|\d+/tclwebkit(?:\d+[.\d]*)|(?:(?<!\d )Android/\d{2}|Android (?!1[0-6])\d{2})(?![^; ]))'
769  name: 'Android'
770  versions:
771    - regex: 'Android API 36|36/tclwebkit|Android[ /]36'
772      version: '16'
773    - regex: 'Android API 35|35/tclwebkit|Android[ /]35'
774      version: '15'
775    - regex: 'Android API 34|34/tclwebkit|Android[ /]34'
776      version: '14'
777    - regex: 'Android API 33|33/tclwebkit|Android[ /]33'
778      version: '13'
779    - regex: 'Android API 32|32/tclwebkit|Android[ /]32'
780      version: '12.1'
781    - regex: 'Android API 31|31/tclwebkit|Android[ /]31'
782      version: '12'
783    - regex: 'Android API 30|30/tclwebkit|Android[ /]30'
784      version: '11'
785    - regex: 'Android API 29|29/tclwebkit|Android[ /]29'
786      version: '10'
787    - regex: 'Android API 28|28/tclwebkit|Android[ /]28'
788      version: '9'
789    - regex: 'Android API 27|27/tclwebkit|Android[ /]27'
790      version: '8.1'
791    - regex: 'Android API 26|26/tclwebkit|Android[ /]26'
792      version: '8'
793    - regex: 'Android API 25|25/tclwebkit|Android[ /]25'
794      version: '7.1'
795    - regex: 'Android API 24|24/tclwebkit|Android[ /]24'
796      version: '7'
797    - regex: 'Android API 23|23/tclwebkit|Android[ /]23'
798      version: '6'
799    - regex: 'Android API 22|22/tclwebkit|Android[ /]22'
800      version: '5.1'
801    - regex: 'Android API 21|21/tclwebkit|Android[ /]21'
802      version: '5'
803    - regex: 'Android API (?:20|19)|(?:20|19)/tclwebkit|Android[ /](?:20|19)'
804      version: '4.4'
805    - regex: 'Android API 18|18/tclwebkit|Android[ /]18'
806      version: '4.3'
807    - regex: 'Android API 17|17/tclwebkit|Android[ /]17'
808      version: '4.2'
809    - regex: 'Android API 16|16/tclwebkit|Android[ /]16'
810      version: '4.1'
811    - regex: 'Android API 15|15/tclwebkit|Android[ /]15'
812      version: '4.0.3'
813    - regex: 'Android API 14|14/tclwebkit|Android[ /]14'
814      version: '4.0.1'
815
816##########
817# Android
818##########
819- regex: 'Android Marshmallow'
820  name: 'Android'
821  version: '6'
822
823- regex: '(?:Podbean|Podimo)(?:.*)/Android|Rutube(?:TV)?BlackAndroid'
824  name: 'Android'
825  version: ''
826
827- regex: '(?:Android OS|OMDroid|sdk_gphone64_arm64-userdebug|StarOS)[ /](\d+[.\d]*)'
828  name: 'Android'
829  version: '$1'
830
831- regex: 'Pinterest for Android(?: Tablet)?/.*; (\d(?:[\d.]*))\)$'
832  name: 'Android'
833  version: '$1'
834
835- regex: 'Android; (\d+[.\d]*); Mobile;'
836  name: 'Android'
837  version: '$1'
838
839- regex: '[ ]([\d.]+)\) AppleWebKit.*ROBLOX Android App'
840  name: 'Android'
841  version: '$1'
842
843- regex: '(?:(?:Orca-)?(?<!like |/|RadioPublic |Anghami |Callpod Keeper for )Android|Adr|AOSP)[ /]?(?:[a-z]+ )?(\d+[.\d]*)'
844  name: 'Android'
845  version: '$1'
846
847- regex: '(?:Allview_TX1_Quasar|Cosmote_My_mini_Tab) (\d+[.\d]*)'
848  name: 'Android'
849  version: '$1'
850
851- regex: 'Android ?(?:jelly bean|Kit Kat|S\.O\. Ginger Bread|The FireCyano|:) (\d+[.\d]*)'
852  name: 'Android'
853  version: '$1'
854
855- regex: '(?:Orca-Android|FB4A).*FBSV/(\d+[.\d]*);'
856  name: 'Android'
857  version: '$1'
858
859- regex: '(?:TwitterAndroid).*[ /](?:[a-z]+ )?(\d+[.\d]*)'
860  name: 'Android'
861  version: '$1'
862
863- regex: '\(Android:.*\); API (\d+[.\d]*)'
864  name: 'Android'
865  version: '$1'
866
867- regex: 'Android-(\d+[.\d]*);'
868  name: 'Android'
869  version: '$1'
870
871- regex: ' Adr |.*(?<!like |/ )Android|Silk-Accelerated=[a-z]{4,5}'
872  name: 'Android'
873  version: ''
874
875- regex: 'BeyondPod|AntennaPod|Podkicker|DoggCatcher|okhttp|Podcatcher Deluxe|Sonos/.+\(ACR_|.*WhatsApp/.*A$'
876  name: 'Android'
877  version: ''
878
879# Inverted Android
880- regex: 'Linux; diordnA[; ](\d+[.\d]*)'
881  name: 'Android'
882  version: '$1'
883
884- regex: '^A/(\d+[.\d]*)/'
885  name: 'Android'
886  version: '$1'
887
888##########
889## Sailfish OS
890###########
891- regex: 'Sailfish|Jolla'
892  name: 'Sailfish OS'
893  version: ''
894
895##########
896# AmigaOS
897##########
898- regex: 'AmigaOS[ ]?(\d+[.\d]+)'
899  name: 'AmigaOS'
900  version: '$1'
901
902- regex: 'AmigaOS|AmigaVoyager|Amiga-AWeb'
903  name: 'AmigaOS'
904  version: ''
905
906##########
907# ThreadX
908##########
909- regex: 'ThreadX(?:_OS)?(?:/(\d+[.\d]*))?'
910  name: 'ThreadX'
911  version: '$1'
912
913##########
914# MTK / Nucleus
915##########
916- regex: 'Nucleus(?:(?: |/v?)(\d+[.\d]*))?'
917  name: 'MTK / Nucleus'
918  version: '$1'
919- regex: 'MTK(?:(?: |/v?)(\d+[.\d]*))?'
920  name: 'MTK / Nucleus'
921  version: '$1'
922
923##########
924# MRE / MAUI Runtime Environment
925##########
926- regex: 'MRE/(\d+)\.(\d+).*;MAUI'
927  name: 'MRE'
928  version: '$1.$2'
929
930##########
931# Linux
932##########
933# Linspire (https://www.linspirelinux.com/)
934- regex: 'Linspire'
935  name: 'Linspire'
936  version: ''
937
938# LindowsOS (https://web.archive.org/web/20040304161245/http://www.lindows.com/)
939- regex: 'LindowsOS'
940  name: 'LindowsOS'
941  version: ''
942
943# Zenwalk (http://www.zenwalk.org/)
944- regex: 'Zenwalk GNU Linux'
945  name: 'Zenwalk'
946  version: ''
947
948# Kanotix (http://www.kanotix.com/)
949- regex: 'Linux.+kanotix'
950  name: 'Kanotix'
951  version: ''
952
953# moonOS (https://www.moonos.org/)
954- regex: 'moonOS/(\d+.[\d.]+)'
955  name: 'moonOS'
956  version: '$1'
957
958# Foresight Linux (https://www.foresightlinux.org/)
959- regex: 'Foresight Linux'
960  name: 'Foresight Linux'
961  version: ''
962
963# Pardus (https://www.pardus.org.tr/)
964- regex: 'Pardus/(\d+.[\d.]+)'
965  name: 'Pardus'
966  version: '$1'
967
968# Pure OS (https://pureos.net/)
969- regex: 'Librem 5'
970  name: 'PureOS'
971  version: ''
972
973# OpenWrt (https://openwrt.org/)
974- regex: 'uclient-fetch'
975  name: 'OpenWrt'
976  version: ''
977
978# Roku OS (https://www.roku.com/how-it-works/roku-os)
979- regex: 'RokuOS/.+RokuOS (\d+.[\d.]+)'
980  name: 'Roku OS'
981  version: '$1'
982
983- regex: 'Roku(?:OS|4640X)?/(?:DVP|Pluto)?-?(\d+[.\d]+)?'
984  name: 'Roku OS'
985  version: '$1'
986
987- regex: 'Roku; (?:AP|UI); (\d+[.\d]+)'
988  name: 'Roku OS'
989  version: '$1'
990
991- regex: 'RokuBrowser/.+\(TV-([a-z0-9]+)-(\d+.[\d.]+)\)'
992  name: 'Roku OS'
993  version: '$2'
994
995# DVKBuntu (https://www.dvkbuntu.org/)
996- regex: 'dvkbuntu'
997  name: 'DVKBuntu'
998  version: ''
999
1000# Lumin OS (https://developer.magicleap.com/en-us/learn/guides/lumin-os-release-notes-summary)
1001- regex: 'Helio/(\d+[.\d]+)'
1002  name: 'Lumin OS'
1003  version: '$1'
1004
1005# HasCodingOS (https://forum.hascoding.com/HasCodingOS)
1006- regex: 'HasCodingOs (\d+[.\d]+)'
1007  name: 'HasCodingOS'
1008  version: '$1'
1009
1010# PCLinuxOS (https://www.pclinuxos.com/)
1011- regex: 'PCLinuxOS/(\d+[.\d]+)'
1012  name: 'PCLinuxOS'
1013  version: '$1'
1014
1015- regex: '(Ordissimo|webissimo3)'
1016  name: 'Ordissimo'
1017  version: ''
1018
1019# Fenix (https://fenixlinux.com/)
1020- regex: '(?:Win|Sistema )Fenix'
1021  name: 'Fenix'
1022  version: ''
1023
1024- regex: 'TOS; Linux'
1025  name: 'TmaxOS'
1026  version: ''
1027
1028- regex: 'Maemo'
1029  name: 'Maemo'
1030  version: ''
1031
1032- regex: 'Arch ?Linux(?:[ /\-](\d+[.\d]+))?'
1033  name: 'Arch Linux'
1034  version: '$1'
1035
1036- regex: 'VectorLinux(?: package)?(?:[ /\-](\d+[.\d]+))?'
1037  name: 'VectorLinux'
1038  version: '$1'
1039
1040- regex: 'sles/(\d+[.\d]+)'
1041  name: 'SUSE'
1042  version: '$1'
1043
1044- regex: '(?:rhel|Red Hat Enterprise Linux Server)/(\d+[.\d]+)'
1045  name: 'Red Hat'
1046  version: '$1'
1047
1048- regex: '.+redhat-linux-gnu|rhel|Red Hat Enterprise Linux Server'
1049  name: 'Red Hat'
1050  version: ''
1051
1052- regex: 'CentOS Stream (\d)'
1053  name: 'CentOS Stream'
1054  version: '$1'
1055
1056- regex: 'centos(?: Linux)?/(\d+[.\d]+) '
1057  name: 'CentOS'
1058  version: '$1'
1059
1060- regex: '.+.el(\d+(?:[_.]\d+)*).(?:centos|x86_64)'
1061  name: 'CentOS'
1062  version: '$1'
1063
1064- regex: 'CentOS Linux (\d)'
1065  name: 'CentOS'
1066  version: '$1'
1067
1068- regex: 'Fedora/.+.fc(\d+)'
1069  name: 'Fedora'
1070  version: '$1'
1071
1072- regex: 'Mandriva(?: Linux)?/.+mdv(\d+[.\d]+)'
1073  name: 'Mandriva'
1074  version: '$1'
1075
1076- regex: 'Linux Mint/(\d)'
1077  name: 'Mint'
1078  version: '$1'
1079
1080- regex: 'Zorin OS (\d+)'
1081  name: 'ZorinOS'
1082  version: '$1'
1083
1084- regex: 'Ubuntu[-/]hardy'
1085  name: 'Ubuntu'
1086  version: '8.04'
1087
1088- regex: 'debian/stretch'
1089  name: 'Debian'
1090  version: '9.13'
1091
1092- regex: 'Ubuntu[-/]feisty'
1093  name: 'Ubuntu'
1094  version: '7.04'
1095
1096- regex: 'Ubuntu[-/]edgy'
1097  name: 'Ubuntu'
1098  version: '6.10'
1099
1100- regex: 'Ubuntu[-/]dapper'
1101  name: 'Ubuntu'
1102  version: '6.06'
1103
1104- regex: 'Ubuntu[-/]breezy'
1105  name: 'Ubuntu'
1106  version: '5.10'
1107
1108- regex: 'Ubuntu[ /](\d+[.\d]+)'
1109  name: 'Ubuntu'
1110  version: '$1'
1111
1112- regex: 'Linux; .*((?:Debian|Knoppix|Mint|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack))[ /](\d+[.\d]+)'
1113  name: '$1'
1114  version: '$2'
1115
1116- regex: 'Deepin[ /](\d+[.\d]+)'
1117  name: 'Deepin'
1118  version: '$1'
1119
1120- regex: '(Debian|Knoppix|Mint(?! Browser)|Ubuntu|Kubuntu|Xubuntu|Lubuntu|Fedora|Red Hat|Mandriva|Gentoo|Sabayon|Slackware|SUSE|CentOS|BackTrack|Freebox|ASPLinux)(?:(?: Enterprise)? Linux)?(?:[ /\-](\d+[.\d]+))?'
1121  name: '$1'
1122  version: '$2'
1123
1124- regex: 'OS ROSA; Linux'
1125  name: 'Rosa'
1126  version: ''
1127
1128##########
1129# webOS
1130##########
1131- regex: '(?:Web0S; .*WEBOS|webOS|web0S|Palm webOS|hpwOS)(?:[/]?(\d+[.\d]+))?'
1132  name: 'webOS'
1133  version: '$1'
1134  versions:
1135    - regex: 'WEBOS(\d+[.\d]+)'
1136      version: '$1'
1137    - regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/108'
1138      version: '24'
1139    - regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/94'
1140      version: '23'
1141    - regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/87'
1142      version: '22'
1143    - regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/79'
1144      version: '6'
1145    - regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/68'
1146      version: '5'
1147    - regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/53'
1148      version: '4'
1149    - regex: 'Web0S; Linux/SmartTV.+Chr[o0]me/38'
1150      version: '3'
1151    - regex: 'WEBOS1'
1152      version: '1'
1153    - regex: 'Web0S; Linux/SmartTV.+Safari/538'
1154      version: '2'
1155    - regex: 'Web0S; Linux/SmartTV.+Safari/537'
1156      version: '1'
1157
1158- regex: '(?:PalmOS|Palm OS)(?:[/ ](\d+[.\d]+))?|Palm'
1159  name: 'palmOS'
1160  version: '$1'
1161
1162- regex: 'Xiino(?:.*v\. (\d+[.\d]+))?'  # palmOS only browser
1163  name: 'palmOS'
1164  version: '$1'
1165
1166- regex: 'MorphOS(?:[ /](\d+[.\d]+))?'
1167  name: 'MorphOS'
1168  version: '$1'
1169
1170##########
1171# Windows
1172##########
1173- regex: 'FBW.+FBSV/(\d+[.\d]*);'
1174  name: 'Windows'
1175  version: '$1'
1176
1177- regex: 'Windows.+OS: (\d+[.\d]*)'
1178  name: 'Windows'
1179  version: '$1'
1180
1181- regex: 'Windows; ?(\d+[.\d]*);'
1182  name: 'Windows'
1183  version: '$1'
1184
1185- regex: 'mingw32|winhttp|WhatsApp/.*W$'
1186  name: 'Windows'
1187  version: ''
1188
1189- regex: '(?:Windows(?:-Update-Agent)?|Microsoft-(?:CryptoAPI|Delivery-Optimization|WebDAV-MiniRedir|WNS)|WINDOWS_64)/(\d+\.\d+)'
1190  name: 'Windows'
1191  version: '$1'
1192
1193- regex: 'Windows-(1[01])-'
1194  name: 'Windows'
1195  version: '$1'
1196
1197- regex: 'CYGWIN_NT-10\.0|Win(?:dows )?NT 10\.0|Windows[ /]10'
1198  name: 'Windows'
1199  version: '10'
1200
1201- regex: 'CYGWIN_NT-6\.4|Windows NT 6\.4|Windows 10|win10'
1202  name: 'Windows'
1203  version: '10'
1204
1205- regex: 'Windows[/-](2016|2019|2022|2025)Server'
1206  name: 'Windows'
1207  version: 'Server $1'
1208
1209- regex: 'Windows/2012ServerR2'
1210  name: 'Windows'
1211  version: 'Server 2012 R2'
1212
1213- regex: 'CYGWIN_NT-6\.3|Windows NT 6\.3|Windows[ /]8\.1'
1214  name: 'Windows'
1215  version: '8.1'
1216
1217- regex: 'Windows/2012Server'
1218  name: 'Windows'
1219  version: 'Server 2012'
1220
1221- regex: 'CYGWIN_NT-6\.2|Windows NT 6\.2|Windows 8|post2008Server'
1222  name: 'Windows'
1223  version: '8'
1224
1225- regex: 'Windows/2008ServerR2'
1226  name: 'Windows'
1227  version: 'Server 2008 R2'
1228
1229- regex: 'CYGWIN_NT-6\.1|Windows NT 6\.1|Windows[ /]7|win7|Windows \(6\.1'
1230  name: 'Windows'
1231  version: '7'
1232
1233- regex: 'CYGWIN_NT-6\.0|Windows NT 6\.0|Windows Vista'
1234  name: 'Windows'
1235  version: 'Vista'
1236
1237- regex: 'CYGWIN_NT-5\.2|Windows NT 5\.2|Windows Server 2003 / XP x64|Windows/2003Server'
1238  name: 'Windows'
1239  version: 'Server 2003'
1240
1241- regex: 'CYGWIN_NT-5\.1|Windows NT 5\.1|(?:Microsoft-)?Windows[ -]XP'
1242  name: 'Windows'
1243  version: 'XP'
1244
1245- regex: 'CYGWIN_NT-5\.0|Windows NT 5\.0|Windows 2000'
1246  name: 'Windows'
1247  version: '2000'
1248
1249- regex: 'CYGWIN_NT-4\.0|Windows NT 4\.0|WinNT(?! 10)|Windows NT'
1250  name: 'Windows'
1251  version: 'NT'
1252
1253- regex: 'CYGWIN_ME-4\.90|Win 9x 4\.90|Windows ME'
1254  name: 'Windows'
1255  version: 'ME'
1256
1257- regex: 'CYGWIN_98-4\.10|Win98|Windows 98'
1258  name: 'Windows'
1259  version: '98'
1260
1261- regex: 'CYGWIN_95-4\.0|Win32|Win95|Windows 95|Windows_95'
1262  name: 'Windows'
1263  version: '95'
1264
1265- regex: 'Windows 3\.1'
1266  name: 'Windows'
1267  version: '3.1'
1268
1269- regex: 'Windows|.+win32|Win64|MSDW|HandBrake Win Upd|Microsoft BITS|ms-office; MSOffice'
1270  name: 'Windows'
1271  version: ''
1272
1273- regex: 'OS/Microsoft_Windows_NT_(\d+\.\d+)'
1274  name: 'Windows'
1275  version: '$1'
1276
1277##########
1278# Haiku OS
1279##########
1280- regex: 'Haiku'
1281  name: 'Haiku OS'
1282  version: ''
1283
1284##########
1285# tvOS (https://developer.apple.com/tvos/)
1286##########
1287- regex: 'Apple ?TV.*CPU (?:iPhone )?OS ((?:9|1[0-8])[_.]\d+(?:[_.]\d+)*)'
1288  name: 'tvOS'
1289  version: '$1'
1290
1291- regex: 'Apple TV; iOS ((?:9|1[0-8])[_.]\d+(?:[_.]\d+)*)'
1292  name: 'tvOS'
1293  version: '$1'
1294
1295- regex: 'iOS(?:; |/)((?:9|1[0-8])\.\d+(?:[_.]\d+)*) (?:model/)?AppleTV'
1296  name: 'tvOS'
1297  version: '$1'
1298
1299- regex: 'tvOS[ /]?((?:9|1[0-8])\.\d+(?:[_.]\d+)*);?'
1300  name: 'tvOS'
1301  version: '$1'
1302
1303- regex: 'AppleTV(?:/?(\d+[.\d]+))?'
1304  name: 'tvOS'
1305  version: '$1'
1306
1307##########
1308# watchOS (https://developer.apple.com/watchos/)
1309##########
1310- regex: '(?:Watch1,[12]/|Watch OS,|watchOS[ /]?)(\d+[.\d]*)?'
1311  name: 'watchOS'
1312  version: '$1'
1313- regex: 'Apple Watch(?!;)'
1314  name: 'watchOS'
1315  version: ''
1316
1317##########
1318# iPadOS (https://www.apple.com/ipados/)
1319##########
1320- regex: 'FBMD/iPad;.*FBSV/ ?(1[3-8]|26).(\d+[.\d]*);'
1321  name: 'iPadOS'
1322  version: '$1.$2'
1323
1324- regex: 'iPad(?:OS)?[ /](1[3-8]|26)\.(\d+[.\d]*)'
1325  name: 'iPadOS'
1326  version: '$1.$2'
1327
1328- regex: '^iPad(?:\d+[\,\d]*)/(1[3-8]|26)\.(\d+[.\d]*)'
1329  name: 'iPadOS'
1330  version: '$1.$2'
1331
1332- regex: 'iPad(?:; (?:iOS|iPadOS|iPhone OS)|.+CPU (?:iPad |iPhone )?OS) ((1[3-8]|26)+(?:[_.]\d+)*)'
1333  name: 'iPadOS'
1334  version: '$1'
1335
1336- regex: 'iOS/(1[3-8]|26)\.(\d+[.\d]*).+Apple/iPad'
1337  name: 'iPadOS'
1338  version: '$1.$2'
1339
1340- regex: 'iPhone OS,(1[3-8]|26)\.(\d+[.\d]*).+iPad'
1341  name: 'iPadOS'
1342  version: '$1.$2'
1343
1344- regex: 'iphoneos(1[3-8]|26)\.(\d+[.\d]*); iPad'
1345  name: 'iPadOS'
1346  version: '$1.$2'
1347
1348- regex: 'Pinterest for iOS/.*iPad.*; (\d(?:[\d.]*))[)]$'
1349  name: 'iPadOS'
1350  version: '$1'
1351
1352##########
1353# iOS
1354##########
1355- regex: 'iPad/([89]|1[012])\.(\d+[.\d]*)'
1356  name: 'iOS'
1357  version: '$1.$2'
1358
1359- regex: '^(?:iPad|iPhone)(?:\d+[\,\d]*)[/_](\d+[.\d]+)'
1360  name: 'iOS'
1361  version: '$1'
1362
1363- regex: 'iphoneos(1[3-8]|26)\.(\d+[.\d]*); iPhone'
1364  name: 'iOS'
1365  version: '$1.$2'
1366
1367- regex: 'Pinterest for iOS/.*iPhone.*; (\d(?:[\d.]*))[)]$'
1368  name: 'iOS'
1369  version: '$1'
1370
1371- regex: 'iOS (\d+[.\d]+)\)'
1372  name: 'iOS'
1373  version: '$1'
1374
1375- regex: 'iPhone OS ([0-9]{1})([0-9]{1})([0-9]{1})'
1376  name: 'iOS'
1377  version: '$1.$2.$3'
1378
1379- regex: '(?:CPU OS|iPh(?:one)?[ _]OS|iPhone.+ OS|PodMN.+iPhone|iOS)[ _/](\d+(?:[_.]\d+)*)'
1380  name: 'iOS'
1381  version: '$1'
1382
1383- regex: '(?:iPhone ?OS|iOS(?: Version)?)(?:/|; |,)(\d+[.\d]+)'
1384  name: 'iOS'
1385  version: '$1'
1386
1387- regex: '^(?!com\.apple\.Safari\.SearchHelper|Safari|NetworkingExtension).*(?:CFNetwork|Mana)/.+ Darwin/(\d+[.\d]+)(?!.*(?:x86_64|i386|PowerMac|Power%20Macintosh))'
1388  name: 'iOS'
1389  versions:
1390    - regex: 'Darwin/25\.0\.0'
1391      version: '26'
1392    - regex: 'Darwin/24\.5\.0'
1393      version: '18.5'
1394    - regex: 'Darwin/24\.4\.0'
1395      version: '18.4'
1396    - regex: 'Darwin/24\.3\.0'
1397      version: '18.3'
1398    - regex: 'Darwin/24\.2\.0'
1399      version: '18.2'
1400    - regex: 'Darwin/24\.1\.0'
1401      version: '18.1'
1402    - regex: 'Darwin/24\.0\.0'
1403      version: '18.0'
1404    - regex: 'Darwin/23\.6\.0'
1405      version: '17.6'
1406    - regex: 'Darwin/23\.5\.0'
1407      version: '17.5'
1408    - regex: 'Darwin/23\.4\.0'
1409      version: '17.4'
1410    - regex: 'Darwin/23\.3\.0'
1411      version: '17.3'
1412    - regex: 'Darwin/23\.2\.0'
1413      version: '17.2'
1414    - regex: 'Darwin/23\.1\.0'
1415      version: '17.1'
1416    - regex: 'Darwin/23\.0\.0'
1417      version: '17.0'
1418    - regex: 'Darwin/22\.6\.0'
1419      version: '16.6'
1420    - regex: 'Darwin/22\.5\.0'
1421      version: '16.5'
1422    - regex: 'Darwin/22\.4\.0'
1423      version: '16.4'
1424    - regex: 'Darwin/22\.3\.0'
1425      version: '16.3'
1426    - regex: 'Darwin/22\.2\.0'
1427      version: '16.2'
1428    - regex: 'Darwin/22\.1\.0'
1429      version: '16.1'
1430    - regex: 'Darwin/22\.0\.0'
1431      version: '16.0'
1432    - regex: 'Darwin/21\.6\.0'
1433      version: '15.6'
1434    - regex: 'Darwin/21\.5\.0'
1435      version: '15.5'
1436    - regex: 'Darwin/21\.4\.0'
1437      version: '15.4'
1438    - regex: 'Darwin/21\.3\.0'
1439      version: '15.3'
1440    - regex: 'Darwin/21\.2\.0'
1441      version: '15.2'
1442    - regex: 'Darwin/21\.1\.0'
1443      version: '15.1'
1444    - regex: 'Darwin/21\.0\.0'
1445      version: '15.0'
1446    - regex: 'Darwin/20\.6\.0'
1447      version: '14.7'
1448    - regex: 'Darwin/20\.5\.0'
1449      version: '14.6'
1450    - regex: 'Darwin/20\.4\.0'
1451      version: '14.5'
1452    - regex: 'Darwin/20\.3\.0'
1453      version: '14.4'
1454    - regex: 'Darwin/20\.2\.0'
1455      version: '14.3'
1456    - regex: 'Darwin/20\.1\.0'
1457      version: '14.2'
1458    - regex: 'Darwin/20\.0\.0'
1459      version: '14.0'
1460    - regex: 'Darwin/19\.6\.0'
1461      version: '13.6'
1462    - regex: 'Darwin/19\.5\.0'
1463      version: '13.5'
1464    - regex: 'Darwin/19\.4\.0'
1465      version: '13.4'
1466    - regex: 'Darwin/19\.3\.0'
1467      version: '13.3.1'
1468    - regex: 'Darwin/19\.2\.0'
1469      version: '13.3'
1470    - regex: 'Darwin/19\.0\.0'
1471      version: '13.0'
1472    - regex: 'Darwin/18\.7\.0'
1473      version: '12.4'
1474    - regex: 'Darwin/18\.6\.0'
1475      version: '12.3'
1476    - regex: 'Darwin/18\.5\.0'
1477      version: '12.2'
1478    - regex: 'Darwin/18\.2\.0'
1479      version: '12.1'
1480    - regex: 'Darwin/18\.0\.0'
1481      version: '12.0'
1482    - regex: 'Darwin/17\.7\.0'
1483      version: '11.4.1'
1484    - regex: 'Darwin/17\.6\.0'
1485      version: '11.4'
1486    - regex: 'Darwin/17\.5\.0'
1487      version: '11.3'
1488    - regex: 'Darwin/17\.4\.0'
1489      version: '11.2.6'
1490    - regex: 'Darwin/17\.3\.0'
1491      version: '11.2'
1492    - regex: 'CFNetwork/889'
1493      version: '11.1'
1494    - regex: 'CFNetwork/887'
1495      version: '11.0'
1496    - regex: 'CFNetwork/811'
1497      version: '10.3'
1498    - regex: 'CFNetwork/808\.3'
1499      version: '10.3'
1500    - regex: 'CFNetwork/808\.2'
1501      version: '10.2'
1502    - regex: 'CFNetwork/808\.1'
1503      version: '10.1'
1504    - regex: 'CFNetwork/808\.0'
1505      version: '10.0'
1506    - regex: 'CFNetwork/808'
1507      version: '10'
1508    - regex: 'CFNetwork/758\.5\.3'
1509      version: '9.3.5'
1510    - regex: 'CFNetwork/758\.4\.3'
1511      version: '9.3.2'
1512    - regex: 'CFNetwork/758\.3\.15'
1513      version: '9.3'
1514    - regex: 'CFNetwork/758\.2\.[78]'
1515      version: '9.2'
1516    - regex: 'CFNetwork/758\.1\.6'
1517      version: '9.1'
1518    - regex: 'CFNetwork/758\.0\.2'
1519      version: '9.0'
1520    - regex: 'CFNetwork/711\.5\.6'
1521      version: '8.4.1'
1522    - regex: 'CFNetwork/711\.4\.6'
1523      version: '8.4'
1524    - regex: 'CFNetwork/711\.3\.18'
1525      version: '8.3'
1526    - regex: 'CFNetwork/711\.2\.23'
1527      version: '8.2'
1528    - regex: 'CFNetwork/711\.1\.1[26]'
1529      version: '8.1'
1530    - regex: 'CFNetwork/711\.0\.6'
1531      version: '8.0'
1532    - regex: 'CFNetwork/672\.1'
1533      version: '7.1'
1534    - regex: 'CFNetwork/672\.0'
1535      version: '7.0'
1536    - regex: 'CFNetwork/609\.1'
1537      version: '6.1'
1538    - regex: 'CFNetwork/60[29]'
1539      version: '6.0'
1540    - regex: 'CFNetwork/548\.1'
1541      version: '5.1'
1542    - regex: 'CFNetwork/548\.0'
1543      version: '5.0'
1544    - regex: 'CFNetwork/485\.13'
1545      version: '4.3'
1546    - regex: 'CFNetwork/485\.12'
1547      version: '4.2'
1548    - regex: 'CFNetwork/485\.10'
1549      version: '4.1'
1550    - regex: 'CFNetwork/485\.2'
1551      version: '4.0'
1552    - regex: 'CFNetwork/467\.12'
1553      version: '3.2'
1554    - regex: 'CFNetwork/459'
1555      version: '3.1'
1556
1557- regex: '(?:iPhone|iPod_touch)/(\d+[.\d]*)(?: hw)?/'
1558  name: 'iOS'
1559  version: '$1'
1560
1561- regex: 'iOS(\d+\.\d+\.\d+)'
1562  name: 'iOS'
1563  version: '$1'
1564
1565- regex: 'iOS(\d+)\.(\d+)0'
1566  name: 'iOS'
1567  version: '$1.$2'
1568
1569- regex: 'FBMD/iPhone;.*FBSV/ ?(\d+[.\d]+);'
1570  name: 'iOS'
1571  version: '$1'
1572
1573- regex: '(?:FBIOS|Messenger(?:Lite)?ForiOS).*FBSV/ ?(\d+[.\d]*);'
1574  name: 'iOS'
1575  version: '$1'
1576
1577- regex: 'iPhone OS,([\d.]+).+(?:iPhone|iPod)'
1578  name: 'iOS'
1579  version: '$1'
1580
1581- regex: 'iPad.+; (\d+[.\d]+);'
1582  name: 'iOS'
1583  version: '$1'
1584
1585- regex: 'iPhone.+; Version (\d+[.\d]+)'
1586  name: 'iOS'
1587  version: '$1'
1588
1589- regex: 'OS=iOS;OSVer=(\d+[.\d]+);'
1590  name: 'iOS'
1591  version: '$1'
1592
1593- regex: 'os=Apple-iOS.+osversion=(\d+[.\d]+)/'
1594  name: 'iOS'
1595  version: '$1'
1596
1597- regex: '(?:Apple-)?(?<!like )(?:iPhone|iPad|iPod)(?:.*Mac OS X.*Version/(\d+\.\d+)|; Opera)?'
1598  name: 'iOS'
1599  version: '$1'
1600
1601- regex: 'dv\(iPh.+ov\((\d+(?:[_.]\d+)*)\);'
1602  name: 'iOS'
1603  version: '$1'
1604
1605- regex: '(?:Podcasts/(?:[\d.]+)|Instacast(?:HD)?/(?:\d\.[\d\.abc]+)|Pocket Casts, iOS|\(iOS\)|iOS; Opera|Overcast|Castro|Podcat|iCatcher|RSSRadio/|MobileSafari/|WhatsApp/.*i$)(?!.*x86_64)'
1606  name: 'iOS'
1607  version: ''
1608
1609- regex: 'iTunes-(AppleTV|iPod|iPad|iPhone)/(?:[\d.]+)'
1610  name: 'iOS'
1611  version: ''
1612
1613- regex: 'iOS[ /]Version ([\d.]+)'
1614  name: 'iOS'
1615  version: '$1'
1616
1617- regex: 'Sonos/.+\(ICRU_'
1618  name: 'iOS'
1619  version: ''
1620
1621- regex: 'CaptiveNetworkSupport|AirPlay|.*[ \.\-/]iOS(?!@)'
1622  name: 'iOS'
1623  version: ''
1624
1625##########
1626# Mac
1627##########
1628- regex: '(?:CFNetwork|Mana|StudioDisplay)/.+Darwin(?:/|; )(?:[\d.]+).+(?:x86_64|i386|Power%20Macintosh)|(?:x86_64-apple-)?darwin(?:[\d.]+)|C?Python.*Darwin|PowerMac|com\.apple\.Safari\.SearchHelper|^(?:NetworkingExtension|Safari)'
1629  name: 'Mac'
1630  versions:
1631    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?25\.0\.0'
1632      version: '26'
1633    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?24\.5\.0'
1634      version: '15.5'
1635    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?24\.4\.0'
1636      version: '15.4'
1637    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?24\.3\.0'
1638      version: '15.3'
1639    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?24\.2\.0'
1640      version: '15.2'
1641    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?24\.1\.0'
1642      version: '15.1'
1643    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?24\.0\.0'
1644      version: '15.0'
1645    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?23\.6\.0'
1646      version: '14.6'
1647    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?23\.5\.0'
1648      version: '14.5'
1649    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?23\.4\.0'
1650      version: '14.4'
1651    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?23\.3\.0'
1652      version: '14.3'
1653    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?23\.2\.0'
1654      version: '14.2'
1655    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?23\.1\.0'
1656      version: '14.1'
1657    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?23\.0\.0'
1658      version: '14.0'
1659    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22\.6\.0'
1660      version: '13.5'
1661    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22\.5\.0'
1662      version: '13.4'
1663    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22\.4\.0'
1664      version: '13.3'
1665    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22\.3\.0'
1666      version: '13.2'
1667    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22\.2\.0'
1668      version: '13.1'
1669    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22\.1\.0'
1670      version: '13.0.1'
1671    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?22\.0\.0'
1672      version: '13.0'
1673    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21\.6\.0'
1674      version: '12.5'
1675    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21\.5\.0'
1676      version: '12.4'
1677    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21\.4\.0'
1678      version: '12.3'
1679    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21\.3\.0'
1680      version: '12.2'
1681    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21\.2\.0'
1682      version: '12.1'
1683    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21\.1\.0'
1684      version: '12.0.1'
1685    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?21\.0\.0'
1686      version: '12.0'
1687    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20\.6\.0'
1688      version: '11.5'
1689    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20\.5\.0'
1690      version: '11.4'
1691    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20\.4\.0'
1692      version: '11.3'
1693    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20\.3\.0'
1694      version: '11.2'
1695    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20\.2\.0.*'
1696      version: '11.1'
1697    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?20\.[01]\.0'
1698      version: '11.0'
1699    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19\.6\.0'
1700      version: '10.15.6'
1701    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19\.5\.0'
1702      version: '10.15.5'
1703    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19\.4\.0'
1704      version: '10.15.4'
1705    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19\.3\.0'
1706      version: '10.15.3'
1707    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19\.2\.0'
1708      version: '10.15.2'
1709    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?19\.0\.0'
1710      version: '10.15'
1711    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?18\.7\.0'
1712      version: '10.14'
1713    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?18\.6\.0'
1714      version: '10.14.5'
1715    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?18\.5\.0'
1716      version: '10.14.4'
1717    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?18\.2\.0'
1718      version: '10.14.1'
1719    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?18\.0\.0'
1720      version: '10.14'
1721    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17\.7\.0'
1722      version: '10.13.6'
1723    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17\.6\.0'
1724      version: '10.13.5'
1725    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17\.5\.0'
1726      version: '10.13.4'
1727    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17\.4\.0'
1728      version: '10.13.3'
1729    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17\.3\.0'
1730      version: '10.13.2'
1731    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17\.2\.0'
1732      version: '10.13.1'
1733    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?17\.0\.0'
1734      version: '10.13'
1735    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16\.7\.0'
1736      version: '10.12.6'
1737    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16\.6\.0'
1738      version: '10.12.5'
1739    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16\.5\.0'
1740      version: '10.12.4'
1741    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16\.4\.0'
1742      version: '10.12.3'
1743    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16\.3\.0'
1744      version: '10.12.2'
1745    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16\.2\.0'
1746      version: '10.12.2'
1747    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16\.1\.0'
1748      version: '10.12.1'
1749    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?16\.0\.0'
1750      version: '10.12'
1751    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?15\.6\.0'
1752      version: '10.11.6'
1753    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?15\.5\.0'
1754      version: '10.11.5'
1755    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?15\.4\.0'
1756      version: '10.11.4'
1757    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?15\.3\.0'
1758      version: '10.11.3'
1759    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?15\.2\.0'
1760      version: '10.11.2'
1761    - regex: 'CFNetwork/760'
1762      version: '10.11'
1763    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?14\.5\.0'
1764      version: '10.10.5'
1765    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?14\.4\.0'
1766      version: '10.10.4'
1767    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?14\.3\.0'
1768      version: '10.10.3'
1769    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?14\.1\.0'
1770      version: '10.10.2'
1771    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?14\.0\.0'
1772      version: '10.10'
1773    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?13\.4\.0'
1774      version: '10.9.5'
1775    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?13\.3\.0'
1776      version: '10.9.4'
1777    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?13\.2\.0'
1778      version: '10.9.3'
1779    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?13\.1\.0'
1780      version: '10.9.2'
1781    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?13\.0\.0'
1782      version: '10.9.0'
1783    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12\.6\.0'
1784      version: '10.8.5'
1785    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12\.5\.0'
1786      version: '10.8.5'
1787    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12\.4\.0'
1788      version: '10.8.4'
1789    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12\.3\.0'
1790      version: '10.8.3'
1791    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12\.2\.0'
1792      version: '10.8.2'
1793    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?12\.1\.0'
1794      version: '10.8.1'
1795    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11\.5\.0'
1796      version: '10.7.5'
1797    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11\.4\.2'
1798      version: '10.7.5'
1799    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11\.4\.0'
1800      version: '10.7.4'
1801    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11\.3\.0'
1802      version: '10.7.3'
1803    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11\.2\.0'
1804      version: '10.7.2'
1805    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?11\.1\.0'
1806      version: '10.7.1'
1807    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?10\.8\.0'
1808      version: '10.6.8'
1809    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?10\.7\.[34]'
1810      version: '10.6.7'
1811    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?10\.3\.0'
1812      version: '10.6.3'
1813    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?10\.0\.0'
1814      version: '10.6'
1815    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?9\.8\.0'
1816      version: '10.5.8'
1817    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?9\.7\.1'
1818      version: '10.5.7'
1819    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?9\.6\.2'
1820      version: '10.5.6'
1821    - regex: '(?:x86_64-apple-)?Darwin(?:/|; )?9\.5\.[05]'
1822      version: '10.5.5'
1823
1824- regex: 'Macintosh;Mac OS X \((\d+[.\d]+)\);'
1825  name: 'Mac'
1826  version: '$1'
1827
1828- regex: 'Mac[ +]OS[ +]?X(?:[ /,](?:Version )?(\d+(?:[_.]\d+)+))?'
1829  name: 'Mac'
1830  version: '$1'
1831
1832- regex: 'Mac (?:OS/)?(\d+(?:[_.]\d+)+)'
1833  name: 'Mac'
1834  version: '$1'
1835
1836- regex: '(?:macOS(?:\(Catalyst\))?[ /,]|Mac(?:os)?-)(\d+[.\d]+)'
1837  name: 'Mac'
1838  version: '$1'
1839
1840- regex: 'Macintosh; OS X (\d+[.\d]+)'
1841  name: 'Mac'
1842  version: '$1'
1843
1844- regex: 'OSX/(\d+[.\d]+)'
1845  name: 'Mac'
1846  version: '$1'
1847
1848- regex: 'Darwin|Macintosh|Mac[ _]PowerPC|PPC|iMac|MacBook|.*macOS|AppleExchangeWebServices|com\.apple\.trustd|Sonos/.+\(MDCR_|WhatsApp/.*N$'
1849  name: 'Mac'
1850  version: ''
1851
1852##########
1853# Fuchsia
1854##########
1855- regex: 'Fuchsia'
1856  name: 'Fuchsia'
1857  version: ''
1858
1859##########
1860# BlackBerry
1861##########
1862- regex: '(?:BB10;.+Version|Black[Bb]erry[0-9a-z]+|Black[Bb]erry.+Version)/(\d+[.\d]+)'
1863  name: 'BlackBerry OS'
1864  version: '$1'
1865
1866- regex: 'RIM Tablet OS (\d+[.\d]+)'
1867  name: 'BlackBerry Tablet OS'
1868  version: '$1'
1869
1870- regex: 'RIM Tablet OS|QNX|Play[Bb]ook'
1871  name: 'BlackBerry Tablet OS'
1872  version: ''
1873
1874- regex: 'BlackBerry'
1875  name: 'BlackBerry OS'
1876  version: ''
1877
1878- regex: 'bPod'
1879  name: 'BlackBerry OS'
1880  version: ''
1881
1882##########
1883# BeOS
1884##########
1885- regex: 'BeOS[ +]?(\d[.\d]*)?'
1886  name: 'BeOS'
1887  version: '$1'
1888
1889##########
1890# Symbian
1891##########
1892- regex: 'Symbian/3.+NokiaBrowser/7\.3'
1893  name: 'Symbian^3'
1894  version: 'Anna'
1895
1896- regex: 'Symbian/3.+NokiaBrowser/7\.4'
1897  name: 'Symbian^3'
1898  version: 'Belle'
1899
1900- regex: 'Symbian/3'
1901  name: 'Symbian^3'
1902  version: ''
1903
1904- regex: '(?:Series ?60|SymbOS|S60)(?:[ /]?(\d+[.\d]+|V\d+))?'
1905  name: 'Symbian OS Series 60'
1906  version: '$1'
1907
1908- regex: 'Series40'
1909  name: 'Symbian OS Series 40'
1910  version: ''
1911
1912- regex: 'SymbianOS/(\d+[.\d]+)'
1913  name: 'Symbian OS'
1914  version: '$1'
1915
1916- regex: 'MeeGo|WeTab'
1917  name: 'MeeGo'
1918  version: ''
1919
1920- regex: 'Symbian(?: OS)?|SymbOS'
1921  name: 'Symbian OS'
1922  version: ''
1923
1924- regex: 'Nokia'
1925  name: 'Symbian'
1926  version: ''
1927
1928##########
1929# Firefox OS
1930##########
1931- regex: '(?:Mobile|Tablet);.+Firefox/\d+\.\d+'
1932  name: 'Firefox OS'
1933  version: ''
1934
1935##########
1936# RISC OS
1937##########
1938- regex: 'RISC OS(?:-NC)?(?:[ /](\d+[.\d]+))?'
1939  name: 'RISC OS'
1940  version: '$1'
1941
1942##########
1943# Inferno
1944##########
1945- regex: 'Inferno(?:[ /](\d+[.\d]+))?'
1946  name: 'Inferno'
1947  version: '$1'
1948
1949##########
1950# Bada
1951##########
1952- regex: 'bada(?:[ /](\d+[.\d]+))?'
1953  name: 'Bada'
1954  version: '$1'
1955
1956##########
1957# REX
1958##########
1959- regex: 'REX; U;'
1960  name: 'REX'
1961  version: ''
1962
1963##########
1964# Brew
1965##########
1966- regex: '(?:Brew(?!-Applet)(?: MP)?|BMP)(?:[ /](\d+[.\d]+))?'
1967  name: 'Brew'
1968  version: '$1'
1969
1970##########
1971# Web TV
1972##########
1973- regex: 'GoogleTV(?:[ /](\d+[.\d]+))?'
1974  name: 'Google TV'
1975  version: '$1'
1976
1977- regex: 'WebTV/(\d+[.\d]+)'
1978  name: 'WebTV'
1979  version: '$1'
1980
1981##########
1982# Unix
1983##########
1984- regex: '(?:SunOS|Solaris)(?:[/ ](\d+[.\d]+))?'
1985  name: 'Solaris'
1986  version: '$1'
1987
1988- regex: 'AIX(?:[/ ]?(\d+[.\d]+))?'
1989  name: 'AIX'
1990  version: '$1'
1991
1992- regex: 'HP-UX(?:[/ ]?(\d+[.\d]+))?'
1993  name: 'HP-UX'
1994  version: '$1'
1995
1996# ElectroBSD (https://www.fabiankeil.de/gehacktes/electrobsd/)
1997- regex: 'ElectroBSD(?:[/ ]?(\d+[.\d]+))?'
1998  name: 'ElectroBSD'
1999  version: '$1'
2000
2001- regex: 'FreeBSD(?:[/ ]?(\d+[.\d]+))?'
2002  name: 'FreeBSD'
2003  version: '$1'
2004
2005- regex: 'NetBSD(?:[/ ]?(\d+[.\d]+))?'
2006  name: 'NetBSD'
2007  version: '$1'
2008
2009- regex: 'OpenBSD(?:[/ ]?(\d+[.\d]+))?'
2010  name: 'OpenBSD'
2011  version: '$1'
2012
2013- regex: 'DragonFly(?:[/ ]?(\d+[.\d]+))?'
2014  name: 'DragonFly'
2015  version: '$1'
2016
2017- regex: 'Syllable(?:[/ ]?(\d+[.\d]+))?'
2018  name: 'Syllable'
2019  version: '$1'
2020
2021- regex: 'IRIX(?:;64)?(?:[/ ]?(\d+[.\d]+))'
2022  name: 'IRIX'
2023  version: '$1'
2024
2025- regex: 'OSF1(?:[/ ]?v?(\d+[.\d]+))?'
2026  name: 'OSF1'
2027  version: '$1'
2028
2029##########
2030# Gaming Console
2031##########
2032- regex: 'Nintendo (Wii|Switch)'
2033  name: 'Nintendo'
2034  version: '$1'
2035
2036- regex: 'PlayStation.+; Linux (\d+[.\d]+)'
2037  name: 'PlayStation'
2038  version: '$1'
2039
2040- regex: 'PlayStation ?(\d)(?:[/ ](?:Pro )?(\d+[.\d]+))?'
2041  name: 'PlayStation'
2042  version: '$1.$2'
2043
2044- regex: 'Xbox|KIN\.(?:One|Two)'
2045  name: 'Xbox'
2046  version: '360'
2047
2048##########
2049# Mobile Gaming Console
2050##########
2051- regex: 'Nitro|Nintendo ([3]?DS[i]?)'
2052  name: 'Nintendo Mobile'
2053  version: '$1'
2054
2055- regex: 'PlayStation ((?:Portable|Vita))'
2056  name: 'PlayStation Portable'
2057  version: '$1'
2058
2059##########
2060# IBM
2061##########
2062- regex: 'OS/2; Warp (\d+[.\d]+)'
2063  name: 'OS/2'
2064  version: '$1'
2065
2066- regex: 'OS/2'
2067  name: 'OS/2'
2068  version: ''
2069
2070###########
2071# Linux (Generic)
2072###########
2073- regex: 'Linux/(\d+[.\d]+)'
2074  name: 'GNU/Linux'
2075  version: '$1'
2076
2077- regex: 'Linux[^a-z]|Cinnamon/(?:\d+[.\d]+)|.+(?:pc|unknown)-linux-gnu|X11'
2078  name: 'GNU/Linux'
2079  version: ''
2080
2081##########
2082# Java ME (Java Platform, Micro Edition)
2083##########
2084- regex: 'Java ME|(J2ME|Profile)/MIDP|MIDP-(?:\d+[.\d]+)/CLDC|Configuration/CLDC|Java; U; MIDP|MMP/\d\.\d'
2085  name: 'Java ME'
2086  version: ''
2087