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