ua-parser-js 0.7.22 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,336 +1,1443 @@
1
1
  [{
2
- "desc": "Asus Nexus 7",
2
+ "desc": "ASUS Nexus 7",
3
3
  "ua": "Mozilla/5.0 (Linux; Android 4.4.2; Nexus 7 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36",
4
4
  "expect": {
5
- "vendor": "Asus",
5
+ "vendor": "ASUS",
6
6
  "model": "Nexus 7",
7
7
  "type": "tablet"
8
8
  }
9
9
  },
10
10
  {
11
- "desc": "Asus Padfone",
11
+ "desc": "ASUS Padfone",
12
12
  "ua": "Mozilla/5.0 (Linux; Android 4.1.1; PadFone 2 Build/JRO03L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Safari/537.36",
13
13
  "expect": {
14
- "vendor": "Asus",
14
+ "vendor": "ASUS",
15
15
  "model": "PadFone",
16
16
  "type": "tablet"
17
17
  }
18
18
  },
19
19
  {
20
- "desc": "Asus ZenPad 10",
20
+ "desc": "ASUS ZenPad 10",
21
21
  "ua": "Mozilla/5.0 (Linux; Android 6.0; P00C Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Safari/537.36",
22
22
  "expect": {
23
- "vendor": "Asus",
23
+ "vendor": "ASUS",
24
24
  "model": "P00C",
25
25
  "type": "tablet"
26
26
  }
27
27
  },
28
+ {
29
+ "desc": "ASUS ZenPad Z8s",
30
+ "ua": "Mozilla/5.0 (Linux; Android 7.0; ASUS_P00J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.111 Safari/537.36\n",
31
+ "expect": {
32
+ "vendor": "ASUS",
33
+ "model": "P00J",
34
+ "type": "tablet"
35
+ }
36
+ },
37
+ {
38
+ "desc": "ASUS ROG",
39
+ "ua": "Mozilla/5.0 (Linux; Android 8.1; ZS600KL Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.126 Mobile Safari/537.36",
40
+ "expect": {
41
+ "vendor": "ASUS",
42
+ "model": "ZS600KL",
43
+ "type": "mobile"
44
+ }
45
+ },
46
+ {
47
+ "desc": "ASUS ROG II",
48
+ "ua": "Mozilla/5.0 (Linux; Android 9; ASUS_I001DA Build/PKQ1.190414.001; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36",
49
+ "expect": {
50
+ "vendor": "ASUS",
51
+ "model": "I001DA",
52
+ "type": "mobile"
53
+ }
54
+ },
55
+ {
56
+ "desc": "ASUS Zenfone 2",
57
+ "ua": "Mozilla/5.0 (Linux; Android 5.0; ASUS ZenFone 2 Build/LRX22C) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile Safari/537.36",
58
+ "expect": {
59
+ "vendor": "ASUS",
60
+ "model": "ZenFone 2",
61
+ "type": "mobile"
62
+ }
63
+ },
64
+ {
65
+ "desc": "ASUS Zenfone 3 Deluxe",
66
+ "ua": "Mozilla/5.0 (Linux; Android 6.0; ASUS_Z016D Build/MXB48T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.132 Mobile Safari/537.36",
67
+ "expect": {
68
+ "vendor": "ASUS",
69
+ "model": "Z016D",
70
+ "type": "mobile"
71
+ }
72
+ },
73
+ {
74
+ "desc": "ASUS Zenfone 5",
75
+ "ua": "Mozilla/5.0 (Linux; Android 8.0; ZE620KL Build/OPR1.170623.032) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36",
76
+ "expect": {
77
+ "vendor": "ASUS",
78
+ "model": "ZE620KL",
79
+ "type": "mobile"
80
+ }
81
+ },
82
+ {
83
+ "desc": "ASUS Zenfone 7",
84
+ "ua": "Mozilla/5.0 (Linux; Android 10; ASUS_I002D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.81 Mobile Safari/537.36",
85
+ "expect": {
86
+ "vendor": "ASUS",
87
+ "model": "I002D",
88
+ "type": "mobile"
89
+ }
90
+ },
91
+ {
92
+ "desc": "ASUS Zenfone 7 Pro",
93
+ "ua": "Mozilla/5.0 (Linux; Android 10; ZS671KS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Mobile Safari/537.36",
94
+ "expect": {
95
+ "vendor": "ASUS",
96
+ "model": "ZS671KS",
97
+ "type": "mobile"
98
+ }
99
+ },
100
+ {
101
+ "desc": "ASUS Zenfone Max Pro",
102
+ "ua": "Mozilla/5.0 (Linux; Android 9; ZB602KL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36",
103
+ "expect": {
104
+ "vendor": "ASUS",
105
+ "model": "ZB602KL",
106
+ "type": "mobile"
107
+ }
108
+ },
109
+ {
110
+ "desc": "ASUS Zenfone Max Pro (M1)",
111
+ "ua": "Mozilla/5.0 (Linux; Android 8.1; ASUS_X00TD Build/OPM1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.137 Mobile Safari/537.36",
112
+ "expect": {
113
+ "vendor": "ASUS",
114
+ "model": "X00TD",
115
+ "type": "mobile"
116
+ }
117
+ },
118
+ {
119
+ "desc": "ASUS Zenfone Max M2",
120
+ "ua": "Mozilla/5.0 (Linux; Android 8.1; ASUS_X01AD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.99 Mobile Safari/537.36",
121
+ "expect": {
122
+ "vendor": "ASUS",
123
+ "model": "X01AD",
124
+ "type": "mobile"
125
+ }
126
+ },
127
+ {
128
+ "desc": "ASUS Zenfone Max Pro M2",
129
+ "ua": "Mozilla/5.0 (Linux; Android 8.1; ASUS_X01BDA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.99 Mobile Safari/537.36",
130
+ "expect": {
131
+ "vendor": "ASUS",
132
+ "model": "X01BDA",
133
+ "type": "mobile"
134
+ }
135
+ },
136
+ {
137
+ "desc": "ASUS Zenfone Go",
138
+ "ua": "Mozilla/5.0 (Linux; Android 6.0; ASUS_X009DA Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36",
139
+ "expect": {
140
+ "vendor": "ASUS",
141
+ "model": "X009DA",
142
+ "type": "mobile"
143
+ }
144
+ },
28
145
  {
29
146
  "desc": "Acer Iconia A1-810",
30
147
  "ua": "Mozilla/5.0 (Linux; Android 4.2.2; A1-810 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Safari/537.36",
31
148
  "expect": {
32
- "vendor": "Acer",
33
- "model": "A1-810",
34
- "type": "tablet"
149
+ "vendor": "Acer",
150
+ "model": "A1-810",
151
+ "type": "tablet"
152
+ }
153
+ },
154
+ {
155
+ "desc": "BlackBerry Priv",
156
+ "ua": "User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; STV100-1 Build/LMY47V; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/46.0.2490.76 Mobile Safari/537.36",
157
+ "expect": {
158
+ "vendor": "BlackBerry",
159
+ "model": "STV100-1",
160
+ "type": "mobile"
161
+ }
162
+ },
163
+ {
164
+ "desc": "BlackBerry Keyone",
165
+ "ua": "Mozilla/5.0 (Linux; Android 8.1.0; BBB100-1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.111 Mobile Safari/537.36",
166
+ "expect": {
167
+ "vendor": "BlackBerry",
168
+ "model": "BBB100-1",
169
+ "type": "mobile"
170
+ }
171
+ },
172
+ {
173
+ "desc": "BlackBerry Key2",
174
+ "ua": "Mozilla/5.0 (Linux; Android 8.1.0; BBF100-1 Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.91 Mobile Safari/537.36",
175
+ "expect": {
176
+ "vendor": "BlackBerry",
177
+ "model": "BBF100-1",
178
+ "type": "mobile"
179
+ }
180
+ },
181
+ {
182
+ "desc": "BlackBerry Key2 LE",
183
+ "ua": "User-Agent: Mozilla/5.0 (Linux; Android 8.1.0; BBE100-1 Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497 Mobile Safari/537.36",
184
+ "expect": {
185
+ "vendor": "BlackBerry",
186
+ "model": "BBE100-1",
187
+ "type": "mobile"
188
+ }
189
+ },
190
+ {
191
+ "desc": "Desktop (IE11 with Tablet string)",
192
+ "ua": "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tablet PC 2.0; GWX:MANAGED; rv:11.0) like Gecko",
193
+ "expect": {
194
+ "vendor": "undefined",
195
+ "model": "undefined",
196
+ "type": "undefined"
197
+ }
198
+ },
199
+ {
200
+ "desc": "Essential PH-1",
201
+ "ua": "Mozilla/5.0 (Linux; Android 9; PH-1 Build/PPR1.180905.036) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.86 Mobile Safari/537.36",
202
+ "expect": {
203
+ "vendor": "Essential",
204
+ "model": "PH-1",
205
+ "type": "mobile"
206
+ }
207
+ },
208
+ {
209
+ "desc": "Fairphone 1U",
210
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.2.2; FP1U Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
211
+ "expect": {
212
+ "vendor": "Fairphone",
213
+ "model": "FP1U",
214
+ "type": "mobile"
215
+ }
216
+ },
217
+ {
218
+ "desc": "Fairphone 2",
219
+ "ua": "Mozilla/5.0 (Linux; Android 7.1.2; FP2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36",
220
+ "expect": {
221
+ "vendor": "Fairphone",
222
+ "model": "FP2",
223
+ "type": "mobile"
224
+ }
225
+ },
226
+ {
227
+ "desc": "Fairphone 3",
228
+ "ua": "Mozilla/5.0 (Linux; Android 9; FP3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.93 Mobile Safari/537.36",
229
+ "expect": {
230
+ "vendor": "Fairphone",
231
+ "model": "FP3",
232
+ "type": "mobile"
233
+ }
234
+ },
235
+ {
236
+ "desc": "HTC Desire 820",
237
+ "ua": "Mozilla/5.0 (Linux; Android 6.0.1; HTC Desire 820 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36",
238
+ "expect": {
239
+ "vendor": "HTC",
240
+ "model": "Desire 820",
241
+ "type": "mobile"
242
+ }
243
+ },
244
+ {
245
+ "desc": "HTC Evo Shift 4G",
246
+ "ua": "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Sprint APA7373KT Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0",
247
+ "expect": {
248
+ "vendor": "Sprint",
249
+ "model": "APA7373KT",
250
+ "type": "mobile"
251
+ }
252
+ },
253
+ {
254
+ "desc": "HTC Nexus 9",
255
+ "ua": "Mozilla/5.0 (Linux; Android 5.0; Nexus 9 Build/LRX21R) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Mobile Crosswalk/7.36.154.13 Safari/537.36",
256
+ "expect": {
257
+ "vendor": "HTC",
258
+ "model": "Nexus 9",
259
+ "type": "tablet"
260
+ }
261
+ },
262
+ {
263
+ "desc": "Huawei Honor",
264
+ "ua": "Mozilla/5.0 (Linux; U; Android 2.3; xx-xx; U8860 Build/HuaweiU8860) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
265
+ "expect": {
266
+ "vendor": "Huawei",
267
+ "model": "U8860",
268
+ "type": "mobile"
269
+ }
270
+ },
271
+ {
272
+ "desc": "Huawei Nexus 6P",
273
+ "ua": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 6P Build/MTC19V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.81 Mobile Safari/537",
274
+ "expect": {
275
+ "vendor": "Huawei",
276
+ "model": "Nexus 6P",
277
+ "type": "mobile"
278
+ }
279
+ },
280
+ {
281
+ "desc": "Huawei P10",
282
+ "ua": "Mozilla/5.0 (Linux; Android 7.0; VTR-L09 Build/HUAWEIVTR-L09; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Mobile Safari/537.36",
283
+ "expect": {
284
+ "vendor": "Huawei",
285
+ "model": "VTR-L09",
286
+ "type": "mobile"
287
+ }
288
+ },
289
+ {
290
+ "desc": "Huawei Y3II",
291
+ "ua": "Mozilla/5.0 (Linux; U; Android 5.1; xx-xx; HUAWEI LUA-L03 Build/HUAWEILUA-L03) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36",
292
+ "expect": {
293
+ "vendor": "Huawei",
294
+ "model": "LUA-L03",
295
+ "type": "mobile"
296
+ }
297
+ },
298
+ {
299
+ "desc": "HUAWEI MediaPad M3 Lite 10",
300
+ "ua": "Mozilla/5.0 (Linux; Android 7.0; BAH-L09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Safari/537.36",
301
+ "expect": {
302
+ "vendor": "Huawei",
303
+ "model": "BAH-L09",
304
+ "type": "tablet"
305
+ }
306
+ },
307
+ {
308
+ "desc": "HUAWEI MediaPad M5 Lite",
309
+ "ua": "Mozilla/5.0 (Linux; Android 8.0.0; BAH2-W19 Build/HUAWEIBAH2-W19; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Safari/537.36",
310
+ "expect": {
311
+ "vendor": "Huawei",
312
+ "model": "BAH2-W19",
313
+ "type": "tablet"
314
+ }
315
+ },
316
+ {
317
+ "desc": "HUAWEI MediaPad M5",
318
+ "ua": "Mozilla/5.0 (Linux; Android 9; SHT-AL09 Build/HUAWEISHT-AL09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.90 Mobile Safari/537.36",
319
+ "expect": {
320
+ "vendor": "Huawei",
321
+ "model": "SHT-AL09",
322
+ "type": "tablet"
323
+ }
324
+ },
325
+ {
326
+ "desc": "HUAWEI MediaPad T5",
327
+ "ua": "Mozilla/5.0 (Linux; Android 8.0.0; AGS2-L09 Build/HUAWEIAGS2-L09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/84.0.4147.125 Safari/537.36",
328
+ "expect": {
329
+ "vendor": "Huawei",
330
+ "model": "AGS2-L09",
331
+ "type": "tablet"
332
+ }
333
+ },
334
+ {
335
+ "desc": "HUAWEI MediaPad T10",
336
+ "ua": "Mozilla/5.0 (Linux; Android 10; AGR-W09 Build/HUAWEIAGR-W09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Safari/537.36",
337
+ "expect": {
338
+ "vendor": "Huawei",
339
+ "model": "AGR-W09",
340
+ "type": "tablet"
341
+ }
342
+ },
343
+ {
344
+ "desc": "HUAWEI MediaPad T10s",
345
+ "ua": "Mozilla/5.0 (Linux; Android 10; AGS3-W09 Build/HUAWEIAGS3-W09; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Safari/537.36",
346
+ "expect": {
347
+ "vendor": "Huawei",
348
+ "model": "AGS3-W09",
349
+ "type": "tablet"
350
+ }
351
+ },
352
+ {
353
+ "desc": "Huawei MatePad T 10",
354
+ "ua": "Mozilla/5.0 (Linux; Android 10; AGR-L09; HMSCore 5.0.4.301) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 HuaweiBrowser/11.0.3.304 Safari/537.36",
355
+ "expect": {
356
+ "vendor": "Huawei",
357
+ "model": "AGR-L09",
358
+ "type": "tablet"
359
+ }
360
+ },
361
+ {
362
+ "desc": "Huawei M3",
363
+ "ua": "Mozilla/5.0 (Linux; Android 7.0; BTV-W09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36",
364
+ "expect": {
365
+ "vendor": "Huawei",
366
+ "model": "BTV-W09",
367
+ "type": "tablet"
368
+ }
369
+ },
370
+ {
371
+ "desc": "Huawei Mate 10 Pro",
372
+ "ua": "Mozilla/5.0 (Linux; Android 8.0; BLA-L29 Build/HUAWEIBLA-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3236.6 Mobile Safari/537.36",
373
+ "expect": {
374
+ "vendor": "Huawei",
375
+ "model": "BLA-L29",
376
+ "type": "mobile"
377
+ }
378
+ },
379
+ {
380
+ "desc": "Huawei Mate X",
381
+ "ua": "Mozilla/5.0 (Linux; Android 9; TAH-AN00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.111 Safari/537.36",
382
+ "expect": {
383
+ "vendor": "Huawei",
384
+ "model": "TAH-AN00",
385
+ "type": "mobile"
386
+ }
387
+ },
388
+ {
389
+ "desc": "Huawei Mate X2",
390
+ "ua": "Mozilla/5.0 (Linux; Android 10; TET-AN00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36",
391
+ "expect": {
392
+ "vendor": "Huawei",
393
+ "model": "TET-AN00",
394
+ "type": "mobile"
395
+ }
396
+ },
397
+ {
398
+ "desc": "Huawei Mate 20 X",
399
+ "ua": "Mozilla/5.0 (Linux; Android 9; EVR-L29 Build/HUAWEIEVR-L29; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36",
400
+ "expect": {
401
+ "vendor": "Huawei",
402
+ "model": "EVR-L29",
403
+ "type": "mobile"
404
+ }
405
+ },
406
+ {
407
+ "desc": "Huawei Mate 20 Pro",
408
+ "ua": "Mozilla/5.0 (Linux; Android 9; LYA-L09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
409
+ "expect": {
410
+ "vendor": "Huawei",
411
+ "model": "LYA-L09",
412
+ "type": "mobile"
413
+ }
414
+ },
415
+ {
416
+ "desc": "Huawei Mate 20 Pro",
417
+ "ua": "Mozilla/5.0 (Linux; Android 9; LYA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
418
+ "expect": {
419
+ "vendor": "Huawei",
420
+ "model": "LYA-AL00",
421
+ "type": "mobile"
422
+ }
423
+ },
424
+ {
425
+ "desc": "Huawei P20 Lite",
426
+ "ua": "Mozilla/5.0 (Linux; Android 8.0.0; ANE-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36",
427
+ "expect": {
428
+ "vendor": "Huawei",
429
+ "model": "ANE-LX1",
430
+ "type": "mobile"
431
+ }
432
+ },
433
+ {
434
+ "desc": "Huawei P20",
435
+ "ua": "Mozilla/5.0 (Linux; Android 8.1.0; EML-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Mobile Safari/537.36",
436
+ "expect": {
437
+ "vendor": "Huawei",
438
+ "model": "EML-L29",
439
+ "type": "mobile"
440
+ }
441
+ },
442
+ {
443
+ "desc": "Huawei P20 Pro",
444
+ "ua": "Mozilla/5.0 (Linux; Android 9; CLT-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.90 Mobile Safari/537.36",
445
+ "expect": {
446
+ "vendor": "Huawei",
447
+ "model": "CLT-L29",
448
+ "type": "mobile"
449
+ }
450
+ },
451
+ {
452
+ "desc": "Huawei P30",
453
+ "ua": "Mozilla/5.0 (Linux; Android 9; ELE-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.90 Mobile Safari/537.36",
454
+ "expect": {
455
+ "vendor": "Huawei",
456
+ "model": "ELE-L29",
457
+ "type": "mobile"
458
+ }
459
+ },
460
+ {
461
+ "desc": "Huawei P30 Pro",
462
+ "ua": "Mozilla/5.0 (Linux; Android 9; VOG-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36",
463
+ "expect": {
464
+ "vendor": "Huawei",
465
+ "model": "VOG-L29",
466
+ "type": "mobile"
467
+ }
468
+ },
469
+ {
470
+ "desc": "Huawei P40",
471
+ "ua": "Mozilla/5.0 (Linux; Android 10; ANA-AN00 Build/HUAWEIANA-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/11.26 SP-engine/2.22.0 baiduboxapp/11.26.0.10 (Baidu; P1 10) NABar/1.0",
472
+ "expect": {
473
+ "vendor": "Huawei",
474
+ "model": "ANA-AN00",
475
+ "type": "mobile"
476
+ }
477
+ },
478
+ {
479
+ "desc": "Huawei P40 Pro",
480
+ "ua": "Mozilla/5.0 (Linux; Android 10; ELS-AN00 Build/HUAWEIELS-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Mobile Safari/537.36 mailapp/6.0.0",
481
+ "expect": {
482
+ "vendor": "Huawei",
483
+ "model": "ELS-AN00",
484
+ "type": "mobile"
485
+ }
486
+ },
487
+ {
488
+ "desc": "Huawei 30 Pro+",
489
+ "ua": "Mozilla/5.0 (Linux; Android 10; EBG-AN10 Build/HUAWEIEBG-AN10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.86 Mobile Safari/537.36 EdgA/42.0.0.2741",
490
+ "expect": {
491
+ "vendor": "Huawei",
492
+ "model": "EBG-AN10",
493
+ "type": "mobile"
494
+ }
495
+ },
496
+ {
497
+ "desc": "Huawei 30S",
498
+ "ua": "Mozilla/5.0 (Linux; Android 10; CDY-AN90 Build/HUAWEICDY-AN90; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.108 Mobile Safari/537.36 mailapp/5.8.0",
499
+ "expect": {
500
+ "vendor": "Huawei",
501
+ "model": "CDY-AN90",
502
+ "type": "mobile"
503
+ }
504
+ },
505
+ {
506
+ "desc": "Huawei Enjoy10e",
507
+ "ua": "Dalvik/2.1.0 (Linux; U; Android 10; MED-AL00 Build/HUAWEIMED-AL00)",
508
+ "expect": {
509
+ "vendor": "Huawei",
510
+ "model": "MED-AL00",
511
+ "type": "mobile"
512
+ }
513
+ },
514
+ {
515
+ "desc": "Huawei Honor 6A",
516
+ "ua": "Mozilla/5.0 (Linux; Android 7.0; DLI-L22 Build/HONORDLI-L22; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.116 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/252.0.0.22.355;]",
517
+ "expect": {
518
+ "vendor": "Huawei",
519
+ "model": "DLI-L22",
520
+ "type": "mobile"
521
+ }
522
+ },
523
+ {
524
+ "desc": "Huawei Honor 7",
525
+ "ua": "Mozilla/5.0 (Linux; Android 6.0; PLK-L01 Build/HONORPLK-L01; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.116 Mobile Safari/537.36",
526
+ "expect": {
527
+ "vendor": "Huawei",
528
+ "model": "PLK-L01",
529
+ "type": "mobile"
530
+ }
531
+ },
532
+ {
533
+ "desc": "Huawei 10 Lite",
534
+ "ua": "Mozilla/5.0 (Linux; Android 9; HRY-LX1 Build/HONORHRY-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.91 Mobile Safari/537.36",
535
+ "expect": {
536
+ "vendor": "Huawei",
537
+ "model": "HRY-LX1",
538
+ "type": "mobile"
539
+ }
540
+ },
541
+ {
542
+ "desc": "Huawei Y7 2018",
543
+ "ua": "Mozilla/5.0 (Linux; Android 8.0.0; LDN-L01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.62 Mobile Safari/537.36",
544
+ "expect": {
545
+ "vendor": "Huawei",
546
+ "model": "LDN-L01",
547
+ "type": "mobile"
548
+ }
549
+ },
550
+ {
551
+ "desc": "Huawei Honor 8X",
552
+ "ua": "Mozilla/5.0 (Linux; Android 9; JSN-L21) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Mobile Safari/537.36",
553
+ "expect": {
554
+ "vendor": "Huawei",
555
+ "model": "JSN-L21",
556
+ "type": "mobile"
557
+ }
558
+ },
559
+ {
560
+ "desc": "Huawei Y6 2019",
561
+ "ua": "Mozilla/5.0 (Linux; Android 9; MRD-LX1N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile Safari/537.36",
562
+ "expect": {
563
+ "vendor": "Huawei",
564
+ "model": "MRD-LX1N",
565
+ "type": "mobile"
566
+ }
567
+ },
568
+ {
569
+ "desc": "Huawei Y9 2019",
570
+ "ua": "Mozilla/5.0 (Linux; Android 9; JKM-LX2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36",
571
+ "expect": {
572
+ "vendor": "Huawei",
573
+ "model": "JKM-LX2",
574
+ "type": "mobile"
575
+ }
576
+ },
577
+ {
578
+ "desc": "Huawei Y5",
579
+ "ua": "Mozilla/5.0 (Linux; Android 9; AMN-LX3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36",
580
+ "expect": {
581
+ "vendor": "Huawei",
582
+ "model": "AMN-LX3",
583
+ "type": "mobile"
584
+ }
585
+ },
586
+ {
587
+ "desc": "Huawei Y7p",
588
+ "ua": "Mozilla/5.0 (Linux; Android 9; ART-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36",
589
+ "expect": {
590
+ "vendor": "Huawei",
591
+ "model": "ART-L29",
592
+ "type": "mobile"
593
+ }
594
+ },
595
+ {
596
+ "desc": "Huawei Mate 20 Lite",
597
+ "ua": "Mozilla/5.0 (Linux; Android 8.1.0; SNE-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.116 Mobile Safari/537.36",
598
+ "expect": {
599
+ "vendor": "Huawei",
600
+ "model": "SNE-LX1",
601
+ "type": "mobile"
602
+ }
603
+ },
604
+ {
605
+ "desc": "Huawei P10 Lite",
606
+ "ua": "Mozilla/5.0 (Linux; Android 8.0.0; WAS-LX1A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.90 Mobile Safari/537.36",
607
+ "expect": {
608
+ "vendor": "Huawei",
609
+ "model": "WAS-LX1A",
610
+ "type": "mobile"
611
+ }
612
+ },
613
+ {
614
+ "desc": "Huawei Y5 Lite 2018",
615
+ "ua": "Mozilla/5.0 (Linux; Android 8.1.0; DRA-LX5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36",
616
+ "expect": {
617
+ "vendor": "Huawei",
618
+ "model": "DRA-LX5",
619
+ "type": "mobile"
620
+ }
621
+ },
622
+ {
623
+ "desc": "Huawei Honor 8C",
624
+ "ua": "Mozilla/5.0 (Linux; Android 8.1.0; BKK-LX2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36",
625
+ "expect": {
626
+ "vendor": "Huawei",
627
+ "model": "BKK-LX2",
628
+ "type": "mobile"
629
+ }
630
+ },
631
+ {
632
+ "desc": "iPad using UCBrowser",
633
+ "ua": "Mozilla/5.0 (iPad; U; CPU OS 11_2 like Mac OS X; zh-CN; iPad5,3) AppleWebKit/534.46 (KHTML, like Gecko) UCBrowser/3.0.1.776 U3/ Mobile/10A403 Safari/7543.48.3",
634
+ "expect": {
635
+ "vendor": "Apple",
636
+ "model": "iPad",
637
+ "type": "tablet"
638
+ }
639
+ },
640
+ {
641
+ "desc": "iPad Air",
642
+ "ua": "Mozilla/5.0 (iPad; CPU OS 12_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 [FBAN/FBIOS;FBDV/iPad4,1;FBMD/iPad;FBSN/iOS;FBSV/12.4.5;FBSS/2;FBID/tablet;FBLC/en_US;FBOP/5;FBCR/]",
643
+ "expect": {
644
+ "vendor": "Apple",
645
+ "model": "iPad",
646
+ "type": "tablet"
647
+ }
648
+ },
649
+ {
650
+ "desc": "iPad using Facebook Browser",
651
+ "ua": "Mozilla/5.0 (iPad; CPU OS 14_4_2 like Mac OS X) WebKit/8610 (KHTML, like Gecko) Mobile/18D70 [FBAN/FBIOS;FBDV/iPad7,11;FBMD/iPad;FBSN/iOS;FBSV/14.4.2;FBSS/2;FBID/tablet;FBLC/en_US;FBOP/5]",
652
+ "expect": {
653
+ "vendor": "Apple",
654
+ "model": "iPad",
655
+ "type": "tablet"
656
+ }
657
+ },
658
+ {
659
+ "desc": "iPod",
660
+ "ua": "Mozilla/5.0 (iPod touch; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53",
661
+ "expect": {
662
+ "vendor": "Apple",
663
+ "model": "iPod touch",
664
+ "type": "mobile"
665
+ }
666
+ },
667
+ {
668
+ "desc": "Lenovo Tab 2",
669
+ "ua": "Mozilla/5.0 (Linux; Android 5.0.1; Lenovo TAB 2 A7-30HC Build/LRX21M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.157 Safari/537.36",
670
+ "expect": {
671
+ "vendor": "Lenovo",
672
+ "model": "TAB 2 A7",
673
+ "type": "tablet"
674
+ }
675
+ },
676
+ {
677
+ "desc": "Lenovo Phone",
678
+ "ua": "Mozilla/5.0 (Linux; Android 6.0; Lenovo PB2-650M Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.105 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/311.0.0.44.117;]",
679
+ "expect": {
680
+ "vendor": "Lenovo",
681
+ "model": "PB2-650M",
682
+ "type": "mobile"
683
+ }
684
+ },
685
+ {
686
+ "desc": "Lenovo Tab 3 Pro",
687
+ "ua": "Mozilla/5.0 (Linux; Android 6.0.1; Lenovo YT3-X90F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.99 Safari/537.36",
688
+ "expect": {
689
+ "vendor": "Lenovo",
690
+ "model": "YT3-X90F",
691
+ "type": "tablet"
692
+ }
693
+ },
694
+ {
695
+ "desc": "Lenovo Tab 4",
696
+ "ua": "Mozilla/5.0 (Linux; Android 7.1.1; Lenovo TB-X304F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.99 Safari/537.36",
697
+ "expect": {
698
+ "vendor": "Lenovo",
699
+ "model": "TB-X304F",
700
+ "type": "tablet"
701
+ }
702
+ },
703
+ {
704
+ "desc": "Lenovo Tab 4",
705
+ "ua": "Mozilla/5.0 (Linux; Android 4.4.2; Lenovo TAB 2 A7-30HC) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
706
+ "expect": {
707
+ "vendor": "Lenovo",
708
+ "model": "TAB 2 A7",
709
+ "type": "tablet"
710
+ }
711
+ },
712
+ {
713
+ "desc": "Lenovo Tab 7 Essential",
714
+ "ua": "Mozilla/5.0 (Linux; Android 7.0; Lenovo TB-7304X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
715
+ "expect": {
716
+ "vendor": "Lenovo",
717
+ "model": "TB-7304X",
718
+ "type": "tablet"
719
+ }
720
+ },
721
+ {
722
+ "desc": "Lenovo Tab M10",
723
+ "ua": "Mozilla/5.0 (Linux; arm_64; Android 9; Lenovo TB-X606F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 YaBrowser/20.9.4.99.01 Safari/537.36",
724
+ "expect": {
725
+ "vendor": "Lenovo",
726
+ "model": "TB-X606F",
727
+ "type": "tablet"
728
+ }
729
+ },
730
+ {
731
+ "desc": "LG V40 ThinQ",
732
+ "ua": "Mozilla/5.0 (Linux; Android 9; LM-V405) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36",
733
+ "expect": {
734
+ "vendor": "LG",
735
+ "model": "LM-V405",
736
+ "type": "mobile"
737
+ }
738
+ },
739
+ {
740
+ "desc": "LG K30",
741
+ "ua": "Mozilla/5.0 (Linux; Android 8.1.0; LM-X410.F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36",
742
+ "expect": {
743
+ "vendor": "LG",
744
+ "model": "LM-X410.F",
745
+ "type": "mobile"
746
+ }
747
+ },
748
+ {
749
+ "desc": "LG K30",
750
+ "ua": "Mozilla/5.0 (Linux; Android 9; LM-X410.FGN) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.93 Mobile Safari/537.36",
751
+ "expect": {
752
+ "vendor": "LG",
753
+ "model": "LM-X410.FGN",
754
+ "type": "mobile"
755
+ }
756
+ },
757
+ {
758
+ "desc": "LG Stylo 5",
759
+ "ua": "Mozilla/5.0 (Linux; Android 9; LM-Q720) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36",
760
+ "expect": {
761
+ "vendor": "LG",
762
+ "model": "LM-Q720",
763
+ "type": "mobile"
764
+ }
765
+ },
766
+ {
767
+ "desc": "LG G7 ThinQ",
768
+ "ua": "Mozilla/5.0 (Linux; Android 9; LM-G710VM Build/PKQ1.181105.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.136 Mobile Safari/537.36",
769
+ "expect": {
770
+ "vendor": "LG",
771
+ "model": "LM-G710VM",
772
+ "type": "mobile"
773
+ }
774
+ },
775
+ {
776
+ "desc": "LG K500",
777
+ "ua": "Mozilla/5.0 (Linux; Android 6.0.1; LG-K500 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36",
778
+ "expect": {
779
+ "vendor": "LG",
780
+ "model": "K500",
781
+ "type": "mobile"
782
+ }
783
+ },
784
+ {
785
+ "desc": "LG Nexus 4",
786
+ "ua": "Mozilla/5.0 (Linux; Android 4.2.1; Nexus 4 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
787
+ "expect": {
788
+ "vendor": "LG",
789
+ "model": "Nexus 4",
790
+ "type": "mobile"
791
+ }
792
+ },
793
+ {
794
+ "desc": "LG Nexus 4",
795
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.3; en-us; Google Nexus 4 - 4.3 - API 18 - 768x1280 Build/JLS36G) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
796
+ "expect": {
797
+ "vendor": "LG",
798
+ "model": "Nexus 4",
799
+ "type": "mobile"
800
+ }
801
+ },
802
+ {
803
+ "desc": "LG Nexus 5",
804
+ "ua": "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
805
+ "expect": {
806
+ "vendor": "LG",
807
+ "model": "Nexus 5",
808
+ "type": "mobile"
809
+ }
810
+ },
811
+ {
812
+ "desc": "LG Wing",
813
+ "ua": "Mozilla/5.0 (Linux; Android 10; LM-F100N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.101 Mobile Safari/537.36",
814
+ "expect": {
815
+ "vendor": "LG",
816
+ "model": "LM-F100N",
817
+ "type": "mobile"
818
+ }
819
+ },
820
+ {
821
+ "desc": "LG Smart TV",
822
+ "ua": "Mozilla/5.0 (DirectFB; U; Linux mips; en) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) LG Browser (; LG NetCast.TV-2011)",
823
+ "expect": {
824
+ "vendor": "LG",
825
+ "model": "undefined",
826
+ "type": "smarttv"
827
+ }
828
+ },
829
+ {
830
+ "desc": "LG Smart TV",
831
+ "ua": "Mozilla/5.0 (Linux; NetCast; U) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/53.0.2785 34 Safari/537.31 SmartTV/8.5",
832
+ "expect": {
833
+ "vendor": "LG",
834
+ "model": "undefined",
835
+ "type": "smarttv"
836
+ }
837
+ },
838
+ {
839
+ "desc": "LG Android TV",
840
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; LG Android TV Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30",
841
+ "expect": {
842
+ "vendor": "LG",
843
+ "model": "undefined",
844
+ "type": "smarttv"
845
+ }
846
+ },
847
+ {
848
+ "desc": "Meizu M5 Note",
849
+ "ua": "Mozilla/5.0 (Linux; Android 6.0; M5 Note Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043024 Safari/537.36 MicroMessenger/6.5.7.1040 NetType/WIFI Language/zh_CN",
850
+ "expect": {
851
+ "vendor": "Meizu",
852
+ "model": "M5 Note",
853
+ "type": "mobile"
854
+ }
855
+ },
856
+ {
857
+ "desc": "Microsoft Lumia 950",
858
+ "ua": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10586",
859
+ "expect": {
860
+ "vendor": "Microsoft",
861
+ "model": "Lumia 950",
862
+ "type": "mobile"
863
+ }
864
+ },
865
+ {
866
+ "desc": "Microsoft Surface Duo",
867
+ "ua": "Dalvik/2.1.0 (Linux; U; Android 10; Surface Duo Build/2020.1014.61)",
868
+ "expect": {
869
+ "vendor": "Microsoft",
870
+ "model": "Surface Duo",
871
+ "type": "tablet"
872
+ }
873
+ },
874
+ {
875
+ "desc": "Motorola Moto X",
876
+ "ua": "Mozilla/5.0 (Linux; Android 4.4.4; XT1097 Build/KXE21.187-38) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36",
877
+ "expect": {
878
+ "vendor": "Motorola",
879
+ "model": "XT1097",
880
+ "type": "mobile"
881
+ }
882
+ },
883
+ {
884
+ "desc" : "Meizu M3S",
885
+ "ua" : "Mozilla/5.0 (X11; Linux; Android 5.1; MZ-M3s Build/LMY47I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrom/45.0.2454.94 Mobile Safari/537.36",
886
+ "expect" :
887
+ {
888
+ "vendor" : "Meizu",
889
+ "model" : "M3s",
890
+ "type" : "mobile"
891
+ }
892
+ },
893
+ {
894
+ "desc" : "Microsoft Lumia 950",
895
+ "ua" : "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10586",
896
+ "expect" :
897
+ {
898
+ "vendor" : "Microsoft",
899
+ "model" : "Lumia 950",
900
+ "type" : "mobile"
901
+ }
902
+ },
903
+ {
904
+ "desc": "Motorola Nexus 6",
905
+ "ua": "Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.20 Mobile Safari/537.36",
906
+ "expect": {
907
+ "vendor": "Motorola",
908
+ "model": "Nexus 6",
909
+ "type": "mobile"
910
+ }
911
+ },
912
+ {
913
+ "desc": "Motorola Droid RAZR 4G",
914
+ "ua": "Mozilla/5.0 (Linux; U; Android 2.3; xx-xx; DROID RAZR 4G Build/6.5.1-73_DHD-11_M1-29) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
915
+ "expect": {
916
+ "vendor": "Motorola",
917
+ "model": "DROID RAZR 4G",
918
+ "type": "mobile"
919
+ }
920
+ },
921
+ {
922
+ "desc": "Motorola RAZR 2019",
923
+ "ua": "Mozilla/5.0 (Linux; Android 9; motorola razr) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/11.1 Chrome/75.0.3770.143 Mobile Safari/537.36",
924
+ "expect": {
925
+ "vendor": "Motorola",
926
+ "model": "razr",
927
+ "type": "mobile"
928
+ }
929
+ },
930
+ {
931
+ "desc": "iPhone",
932
+ "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
933
+ "expect": {
934
+ "vendor": "Apple",
935
+ "model": "iPhone",
936
+ "type": "mobile"
937
+ }
938
+ },
939
+ {
940
+ "desc": "iPhone SE",
941
+ "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 [FBAN/FBIOS;FBDV/iPhone8,4;FBMD/iPhone;FBSN/iOS;FBSV/13.3.1;FBSS/2;FBID/phone;FBLC/en_US;FBOP/5;FBCR/]",
942
+ "expect": {
943
+ "vendor": "Apple",
944
+ "model": "iPhone",
945
+ "type": "mobile"
946
+ }
947
+ },
948
+ {
949
+ "desc": "iPhone SE using Facebook App",
950
+ "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 [FBAN/FBIOS;FBDV/iPhone8,4;FBMD/iPhone;FBSN/iOS;FBSV/13.3.1;FBSS/2;FBID/phone;FBLC/en_US;FBOP/5;FBCR/]",
951
+ "expect": {
952
+ "vendor": "Apple",
953
+ "model": "iPhone",
954
+ "type": "mobile"
955
+ }
956
+ },
957
+ {
958
+ "desc": "iPhone 11 Pro Max",
959
+ "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 [FBAN/FBIOS;FBDV/iPhone12,5;FBMD/iPhone;FBSN/iOS;FBSV/13.3.1;FBSS/3;FBID/phone;FBLC/en_US;FBOP/5;FBCR/]",
960
+ "expect": {
961
+ "vendor": "Apple",
962
+ "model": "iPhone",
963
+ "type": "mobile"
964
+ }
965
+ },
966
+ {
967
+ "desc": "iPhone XS",
968
+ "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 [FBAN/FBIOS;FBDV/iPhone11,2;FBMD/iPhone;FBSN/iOS;FBSV/13.3.1;FBSS/3;FBID/phone;FBLC/en_US;FBOP/5;FBCR/]",
969
+ "expect": {
970
+ "vendor": "Apple",
971
+ "model": "iPhone",
972
+ "type": "mobile"
973
+ }
974
+ },
975
+ {
976
+ "desc": "iPod touch",
977
+ "ua": "Mozilla/5.0 (iPod touch; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A501 Safari/9537.53",
978
+ "expect": {
979
+ "vendor": "Apple",
980
+ "model": "iPod touch",
981
+ "type": "mobile"
982
+ }
983
+ },
984
+ {
985
+ "desc": "Moto X",
986
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.2; xx-xx; XT1058 Build/13.9.0Q2.X-70-GHOST-ATT_LE-2) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
987
+ "expect": {
988
+ "vendor": "Motorola",
989
+ "model": "XT1058",
990
+ "type": "mobile"
991
+ }
992
+ },
993
+ {
994
+ "desc": "Motorola Moto g(6) Play",
995
+ "ua": "Mozilla/5.0 (Linux; Android 9; moto g(6) play) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36",
996
+ "expect": {
997
+ "vendor": "Motorola",
998
+ "model": "moto g(6) play",
999
+ "type": "mobile"
1000
+ }
1001
+ },
1002
+ {
1003
+ "desc": "Motorola Moto g(7) Supra",
1004
+ "ua": "Mozilla/5.0 (Linux; Android 9; moto g(7) supra Build/PCOS29.114-134-2; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/73.0.3683.90 Mobile Safari/537.36",
1005
+ "expect": {
1006
+ "vendor": "Motorola",
1007
+ "model": "moto g(7) supra",
1008
+ "type": "mobile"
1009
+ }
1010
+ },
1011
+ {
1012
+ "desc": "Motorola Moto E",
1013
+ "ua": "Mozilla/5.0 (Linux; Android 7.1.1; Moto E (4) Build/NDQS26.69-64-11-7; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Mobile Safari/537.36",
1014
+ "expect": {
1015
+ "vendor": "Motorola",
1016
+ "model": "Moto E (4)",
1017
+ "type": "mobile"
1018
+ }
1019
+ },
1020
+ {
1021
+ "desc": "Nokia3xx",
1022
+ "ua": "Nokia303/14.87 CLDC-1.1",
1023
+ "expect": {
1024
+ "vendor": "Nokia",
1025
+ "model": "303",
1026
+ "type": "mobile"
1027
+ }
1028
+ },
1029
+ {
1030
+ "desc": "Nokia 3.2",
1031
+ "ua": "Mozilla/5.0 (Linux; Android 10; Nokia 3.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36",
1032
+ "expect": {
1033
+ "vendor": "Nokia",
1034
+ "model": "3.2",
1035
+ "type": "mobile"
1036
+ }
1037
+ },
1038
+ {
1039
+ "desc": "Nokia N9",
1040
+ "ua": "Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13",
1041
+ "expect": {
1042
+ "vendor": "Nokia",
1043
+ "model": "N9",
1044
+ "type": "mobile"
1045
+ }
1046
+ },
1047
+ {
1048
+ "desc": "Nokia 2720 Flip",
1049
+ "ua": "Mozilla/5.0 (Mobile; Nokia_2720_Flip; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.5.2",
1050
+ "expect": {
1051
+ "vendor": "Nokia",
1052
+ "model": "2720 Flip",
1053
+ "type": "mobile"
1054
+ }
1055
+ },
1056
+ {
1057
+ "desc": "Oculus Quest",
1058
+ "ua": "Mozilla/5.0 (Linux; Android 10; Quest) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/15.0.0.0.22.280317669 SamsungBrowser/4.0 Chrome/89.0.4389.90 VR Safari/537.36",
1059
+ "expect": {
1060
+ "vendor": "Facebook",
1061
+ "model": "Quest",
1062
+ "type": "wearable"
1063
+ }
1064
+ },
1065
+ {
1066
+ "desc": "Oculus Quest 2",
1067
+ "ua": "Mozilla/5.0 (Linux; Android 10; Quest 2) AppleWebKit/537.36 (KHTML, like Gecko) OculusBrowser/15.0.0.0.22.280317669 SamsungBrowser/4.0 Chrome/89.0.4389.90 VR Safari/537.36",
1068
+ "expect": {
1069
+ "vendor": "Facebook",
1070
+ "model": "Quest 2",
1071
+ "type": "wearable"
1072
+ }
1073
+ },
1074
+ {
1075
+ "desc": "OnePlus One",
1076
+ "ua": "Mozilla/5.0 (Linux; Android 4.4.4; A0001 Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36",
1077
+ "expect": {
1078
+ "vendor": "OnePlus",
1079
+ "model": "A0001",
1080
+ "type": "mobile"
1081
+ }
1082
+ },
1083
+ {
1084
+ "desc": "OnePlus One",
1085
+ "ua": "Mozilla/5.0 (Linux; Android 4.4.2; OnePlus One A0001 Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36",
1086
+ "expect": {
1087
+ "vendor": "OnePlus",
1088
+ "model": "A0001",
1089
+ "type": "mobile"
1090
+ }
1091
+ },
1092
+ {
1093
+ "desc": "OnePlus 2",
1094
+ "ua": "Mozilla/5.0 (Linux; Android 6.0.1; ONE A2003) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.93 Mobile Safari/537.36",
1095
+ "expect": {
1096
+ "vendor": "OnePlus",
1097
+ "model": "A2003",
1098
+ "type": "mobile"
1099
+ }
1100
+ },
1101
+ {
1102
+ "desc": "OnePlus 3",
1103
+ "ua": "Mozilla/5.0 (Linux; Android 7.1.1; ONEPLUS A3000 Build/NMF26F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36",
1104
+ "expect": {
1105
+ "vendor": "OnePlus",
1106
+ "model": "A3000",
1107
+ "type": "mobile"
1108
+ }
1109
+ },
1110
+ {
1111
+ "desc": "OnePlus 6",
1112
+ "ua": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A6003) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.89 Mobile Safari/537.36",
1113
+ "expect": {
1114
+ "vendor": "OnePlus",
1115
+ "model": "A6003",
1116
+ "type": "mobile"
1117
+ }
1118
+ },
1119
+ {
1120
+ "desc": "OnePlus 6T",
1121
+ "ua": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A6010) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36",
1122
+ "expect": {
1123
+ "vendor": "OnePlus",
1124
+ "model": "A6010",
1125
+ "type": "mobile"
35
1126
  }
36
1127
  },
37
1128
  {
38
- "desc": "Desktop (IE11 with Tablet string)",
39
- "ua": "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tablet PC 2.0; GWX:MANAGED; rv:11.0) like Gecko",
1129
+ "desc": "OnePlus 8T",
1130
+ "ua": "Mozilla/5.0 (Linux; Android 11; KB2005) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 Mobile Safari/537.36",
40
1131
  "expect": {
41
- "vendor": "undefined",
42
- "model": "undefined",
43
- "type": "undefined"
1132
+ "vendor": "OnePlus",
1133
+ "model": "KB2005",
1134
+ "type": "mobile"
44
1135
  }
45
1136
  },
46
1137
  {
47
- "desc": "Essential PH-1",
48
- "ua": "Mozilla/5.0 (Linux; Android 9; PH-1 Build/PPR1.180905.036) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.86 Mobile Safari/537.36",
1138
+ "desc": "OnePlus 8 Pro",
1139
+ "ua": "Mozilla/5.0 (Linux; Android 10; IN2025) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.119 Mobile Safari/537.36",
49
1140
  "expect": {
50
- "vendor": "Essential",
51
- "model": "PH-1",
1141
+ "vendor": "OnePlus",
1142
+ "model": "IN2025",
52
1143
  "type": "mobile"
53
1144
  }
54
1145
  },
55
1146
  {
56
- "desc": "HTC Desire 820",
57
- "ua": "Mozilla/5.0 (Linux; Android 6.0.1; HTC Desire 820 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.76 Mobile Safari/537.36",
1147
+ "desc": "OnePlus Nord N100",
1148
+ "ua": "Mozilla/5.0 (Linux; Android 10; BE2015 Build/QKQ1.200719.002; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36",
58
1149
  "expect": {
59
- "vendor": "HTC",
60
- "model": "Desire 820",
1150
+ "vendor": "OnePlus",
1151
+ "model": "BE2015",
61
1152
  "type": "mobile"
62
1153
  }
63
1154
  },
64
1155
  {
65
- "desc": "HTC Evo Shift 4G",
66
- "ua": "Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Sprint APA7373KT Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0",
1156
+ "desc": "OnePlus Nord N10 5G",
1157
+ "ua": "Mozilla/5.0 (Linux; Android 10; BE2029) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.185 Mobile Safari/537.36",
67
1158
  "expect": {
68
- "vendor": "HTC",
69
- "model": "Evo Shift 4G",
1159
+ "vendor": "OnePlus",
1160
+ "model": "BE2029",
70
1161
  "type": "mobile"
71
1162
  }
72
1163
  },
73
1164
  {
74
- "desc": "HTC Nexus 9",
75
- "ua": "Mozilla/5.0 (Linux; Android 5.0; Nexus 9 Build/LRX21R) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Mobile Crosswalk/7.36.154.13 Safari/537.36",
1165
+ "desc": "OPPO Neo",
1166
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; R831T Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 OppoBrowser/3.3.2 Mobile Safari/534.30",
76
1167
  "expect": {
77
- "vendor": "HTC",
78
- "model": "Nexus 9",
79
- "type": "tablet"
1168
+ "vendor": "OPPO",
1169
+ "model": "R831T",
1170
+ "type": "mobile"
80
1171
  }
81
1172
  },
82
1173
  {
83
- "desc": "Huawei Honor",
84
- "ua": "Mozilla/5.0 (Linux; U; Android 2.3; xx-xx; U8860 Build/HuaweiU8860) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
1174
+ "desc": "OPPO R7s",
1175
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; OPPO R7s Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/7.1 Mobile Safari/537.36",
85
1176
  "expect": {
86
- "vendor": "Huawei",
87
- "model": "U8860",
1177
+ "vendor": "OPPO",
1178
+ "model": "R7s",
88
1179
  "type": "mobile"
89
1180
  }
90
1181
  },
91
1182
  {
92
- "desc": "Huawei Nexus 6P",
93
- "ua": "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 6P Build/MTC19V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.81 Mobile Safari/537",
1183
+ "desc": "OPPO A3s",
1184
+ "ua": "Mozilla/5.0 (Linux; Android 8.1; CPH1803 Build/OPM1.171019.026; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 Mobile Safari/537.36",
94
1185
  "expect": {
95
- "vendor": "Huawei",
96
- "model": "Nexus 6P",
1186
+ "vendor": "OPPO",
1187
+ "model": "CPH1803",
97
1188
  "type": "mobile"
98
1189
  }
99
1190
  },
100
1191
  {
101
- "desc": "Huawei P10",
102
- "ua": "Mozilla/5.0 (Linux; Android 7.0; VTR-L09 Build/HUAWEIVTR-L09; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Mobile Safari/537.36",
1192
+ "desc": "OPPO A12",
1193
+ "ua": "Mozilla/5.0 (Linux; Android 9; CPH2083) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36",
103
1194
  "expect": {
104
- "vendor": "Huawei",
105
- "model": "VTR-L09",
1195
+ "vendor": "OPPO",
1196
+ "model": "CPH2083",
106
1197
  "type": "mobile"
107
1198
  }
108
1199
  },
109
1200
  {
110
- "desc": "Huawei Y3II",
111
- "ua": "Mozilla/5.0 (Linux; U; Android 5.1; xx-xx; HUAWEI LUA-L03 Build/HUAWEILUA-L03) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36",
1201
+ "desc": "OPPO Reno",
1202
+ "ua": "Mozilla/5.0 (Linux; Android 9; PCAT00 Build/PKQ1.190101.001; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36",
112
1203
  "expect": {
113
- "vendor": "Huawei",
114
- "model": "LUA-L03",
1204
+ "vendor": "OPPO",
1205
+ "model": "PCAT00",
115
1206
  "type": "mobile"
116
1207
  }
117
1208
  },
118
1209
  {
119
- "desc": "iPad using UCBrowser",
120
- "ua": "Mozilla/5.0 (iPad; U; CPU OS 11_2 like Mac OS X; zh-CN; iPad5,3) AppleWebKit/534.46 (KHTML, like Gecko) UCBrowser/3.0.1.776 U3/ Mobile/10A403 Safari/7543.48.3",
1210
+ "desc": "OPPO Reno3 Pro 5G",
1211
+ "ua": "Mozilla/5.0 (Linux; Android 10; PCLM50) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.117 Mobile Safari/537.36",
121
1212
  "expect": {
122
- "vendor": "Apple",
123
- "model": "iPad",
124
- "type": "tablet"
1213
+ "vendor": "OPPO",
1214
+ "model": "PCLM50",
1215
+ "type": "mobile"
125
1216
  }
126
1217
  },
127
1218
  {
128
- "desc": "iPod",
129
- "ua": "Mozilla/5.0 (iPod touch; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53",
1219
+ "desc": "OPPO Reno4 SE",
1220
+ "ua": "Mozilla/5.0 (Linux; U; Android 10; xx-xx; PEAM00 Build/QP1A.190711.020) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.80 Mobile Safari/537.36",
130
1221
  "expect": {
131
- "vendor": "Apple",
132
- "model": "iPod touch",
1222
+ "vendor": "OPPO",
1223
+ "model": "PEAM00",
133
1224
  "type": "mobile"
134
1225
  }
135
1226
  },
136
1227
  {
137
- "desc": "Lenovo Tab 2",
138
- "ua": "Mozilla/5.0 (Linux; Android 5.0.1; Lenovo TAB 2 A7-30HC Build/LRX21M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.157 Safari/537.36",
1228
+ "desc": "OPPO Reno4 5G",
1229
+ "ua": "Mozilla/5.0 (Linux; Android 10; PDPM00 Build/QKQ1.200216.002; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36",
139
1230
  "expect": {
140
- "vendor": "Lenovo",
141
- "model": "TAB 2 A7",
142
- "type": "tablet"
1231
+ "vendor": "OPPO",
1232
+ "model": "PDPM00",
1233
+ "type": "mobile"
143
1234
  }
144
1235
  },
145
1236
  {
146
- "desc": "LG Nexus 4",
147
- "ua": "Mozilla/5.0 (Linux; Android 4.2.1; Nexus 4 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
1237
+ "desc": "OPPO Reno4 Pro 5G",
1238
+ "ua": "Mozilla/5.0 (Linux; U; Android 10; xx-xx; PDNT00 Build/QKQ1.200216.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.80 Mobile Safari/537.36",
148
1239
  "expect": {
149
- "vendor": "LG",
150
- "model": "Nexus 4",
1240
+ "vendor": "OPPO",
1241
+ "model": "PDNT00",
151
1242
  "type": "mobile"
152
1243
  }
153
1244
  },
154
1245
  {
155
- "desc": "LG Nexus 5",
156
- "ua": "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19",
1246
+ "desc": "OPPO Reno5 A",
1247
+ "ua": "Mozilla/5.0 (Linux; Android 11; A101OP) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Mobile Safari/537.36",
157
1248
  "expect": {
158
- "vendor": "LG",
159
- "model": "Nexus 5",
1249
+ "vendor": "OPPO",
1250
+ "model": "A101OP",
160
1251
  "type": "mobile"
161
1252
  }
162
1253
  },
163
1254
  {
164
- "desc": "Meizu M5 Note",
165
- "ua": "Mozilla/5.0 (Linux; Android 6.0; M5 Note Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043024 Safari/537.36 MicroMessenger/6.5.7.1040 NetType/WIFI Language/zh_CN",
1255
+ "desc": "OPPO Find X",
1256
+ "ua": "Mozilla/5.0 (Linux; Android 8.1; PAFM00 Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
166
1257
  "expect": {
167
- "vendor": "Meizu",
168
- "model": "M5 Note",
1258
+ "vendor": "OPPO",
1259
+ "model": "PAFM00",
169
1260
  "type": "mobile"
170
1261
  }
171
1262
  },
172
1263
  {
173
- "desc": "Microsoft Lumia 950",
174
- "ua": "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10586",
1264
+ "desc": "OPPO Find 7a",
1265
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.3; xx-xx; X9007 Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
175
1266
  "expect": {
176
- "vendor": "Microsoft",
177
- "model": "Lumia 950",
1267
+ "vendor": "OPPO",
1268
+ "model": "X9007",
178
1269
  "type": "mobile"
179
1270
  }
180
1271
  },
181
1272
  {
182
- "desc": "Motorola Moto X",
183
- "ua": "Mozilla/5.0 (Linux; Android 4.4.4; XT1097 Build/KXE21.187-38) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36",
1273
+ "desc": "Realme C1",
1274
+ "ua": "Mozilla/5.0 (Linux; Android 8.1; RMX1811 Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.126 Mobile Safari/537.36",
184
1275
  "expect": {
185
- "vendor": "Motorola",
186
- "model": "XT1097",
1276
+ "vendor": "Realme",
1277
+ "model": "RMX1811",
187
1278
  "type": "mobile"
188
1279
  }
189
1280
  },
190
1281
  {
191
- "desc" : "Meizu M3S",
192
- "ua" : "Mozilla/5.0 (X11; Linux; Android 5.1; MZ-M3s Build/LMY47I) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrom/45.0.2454.94 Mobile Safari/537.36",
193
- "expect" :
194
- {
195
- "vendor" : "Meizu",
196
- "model" : "M3s",
197
- "type" : "mobile"
1282
+ "desc": "Realme C2",
1283
+ "ua": "Mozilla/5.0 (Linux; Android 9; RMX1941) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36",
1284
+ "expect": {
1285
+ "vendor": "Realme",
1286
+ "model": "RMX1941",
1287
+ "type": "mobile"
198
1288
  }
199
1289
  },
200
1290
  {
201
- "desc" : "Microsoft Lumia 950",
202
- "ua" : "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10586",
203
- "expect" :
204
- {
205
- "vendor" : "Microsoft",
206
- "model" : "Lumia 950",
207
- "type" : "mobile"
1291
+ "desc": "Realme Narzo 20",
1292
+ "ua": "Mozilla/5.0 (Linux; U; Android 10; xx-xx; RMX2193 Build/QP1A.190711.020) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.80 Mobile Safari/537.36",
1293
+ "expect": {
1294
+ "vendor": "Realme",
1295
+ "model": "RMX2193",
1296
+ "type": "mobile"
208
1297
  }
209
1298
  },
210
1299
  {
211
- "desc": "Motorola Nexus 6",
212
- "ua": "Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.20 Mobile Safari/537.36",
1300
+ "desc": "Realme 2 Pro",
1301
+ "ua": "Mozilla/5.0 (Linux; Android 9; RMX1801) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36",
213
1302
  "expect": {
214
- "vendor": "Motorola",
215
- "model": "Nexus 6",
1303
+ "vendor": "Realme",
1304
+ "model": "RMX1801",
216
1305
  "type": "mobile"
217
1306
  }
218
1307
  },
219
1308
  {
220
- "desc": "Motorola Droid RAZR 4G",
221
- "ua": "Mozilla/5.0 (Linux; U; Android 2.3; xx-xx; DROID RAZR 4G Build/6.5.1-73_DHD-11_M1-29) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
1309
+ "desc": "Philips SmartTV",
1310
+ "ua": "Opera/9.80 HbbTV/1.1.1 (; Philips; ; ; ; ) NETTV/4.0.2; en) Version/11.60",
222
1311
  "expect": {
223
- "vendor": "Motorola",
224
- "model": "DROID RAZR 4G",
225
- "type": "mobile"
1312
+ "vendor": "Philips",
1313
+ "model": "",
1314
+ "type": "smarttv"
226
1315
  }
227
1316
  },
228
1317
  {
229
- "desc": "iPhone",
230
- "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53",
1318
+ "desc": "Roku",
1319
+ "ua": "Mozilla/5.0 (Roku) AppleWebKit/537.36 (KHTML, like Gecko) Web/1.1 Safari/537.36",
231
1320
  "expect": {
232
- "vendor": "Apple",
233
- "model": "iPhone",
234
- "type": "mobile"
1321
+ "vendor": "Roku",
1322
+ "model": "",
1323
+ "type": "smarttv"
235
1324
  }
236
1325
  },
237
1326
  {
238
- "desc": "Motorola Droid RAZR 4G",
239
- "ua": "Mozilla/5.0 (iPod touch; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A501 Safari/9537.53",
1327
+ "desc": "Roku",
1328
+ "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36 Roku/DVP-8.10 (468.10E04145A)",
240
1329
  "expect": {
241
- "vendor": "Apple",
242
- "model": "iPod touch",
243
- "type": "mobile"
1330
+ "vendor": "Roku",
1331
+ "model": "DVP-8.10",
1332
+ "type": "smarttv"
244
1333
  }
245
1334
  },
246
1335
  {
247
- "desc": "Moto X",
248
- "ua": "Mozilla/5.0 (Linux; U; Android 4.2; xx-xx; XT1058 Build/13.9.0Q2.X-70-GHOST-ATT_LE-2) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
1336
+ "desc": "Roku",
1337
+ "ua": "Roku4640X/DVP-7.70 (297.70E04154A)",
249
1338
  "expect": {
250
- "vendor": "Motorola",
251
- "model": "XT1058",
252
- "type": "mobile"
1339
+ "vendor": "Roku",
1340
+ "model": "DVP-7.70",
1341
+ "type": "smarttv"
253
1342
  }
254
1343
  },
255
1344
  {
256
- "desc": "Nokia3xx",
257
- "ua": "Nokia303/14.87 CLDC-1.1",
1345
+ "desc": "Kindle Fire HD",
1346
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated=true",
258
1347
  "expect": {
259
- "vendor": "Nokia",
260
- "model": "303",
1348
+ "vendor": "Amazon",
1349
+ "model": "KFTT",
1350
+ "type": "tablet"
1351
+ }
1352
+ },
1353
+ {
1354
+ "desc": "Kindle Fire HD",
1355
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated=true",
1356
+ "expect": {
1357
+ "vendor": "Amazon",
1358
+ "model": "KFTT",
1359
+ "type": "tablet"
1360
+ }
1361
+ },
1362
+ {
1363
+ "desc": "Samsung Galaxy A21s",
1364
+ "ua": "Mozilla/5.0 (Linux; Android 10; SAMSUNG SM-A217F) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/11.0 Chrome/75.0.3770.143 Mobile Safari/537.36",
1365
+ "expect": {
1366
+ "vendor": "Samsung",
1367
+ "model": "SM-A217F",
261
1368
  "type": "mobile"
262
1369
  }
263
1370
  },
264
1371
  {
265
- "desc": "OnePlus One",
266
- "ua": "Mozilla/5.0 (Linux; Android 4.4.4; A0001 Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36",
1372
+ "desc": "Samsung Galaxy A31",
1373
+ "ua": "Mozilla/5.0 (Linux; Android 10; SM-A315G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36",
267
1374
  "expect": {
268
- "vendor": "OnePlus",
269
- "model": "1",
1375
+ "vendor": "Samsung",
1376
+ "model": "SM-A315G",
270
1377
  "type": "mobile"
271
1378
  }
272
1379
  },
273
1380
  {
274
- "desc": "OnePlus 3",
275
- "ua": "Mozilla/5.0 (Linux; Android 7.1.1; ONEPLUS A3000 Build/NMF26F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36",
1381
+ "desc": "Samsung Galaxy A50",
1382
+ "ua": "Mozilla/5.0 (Linux; Android 9; SM-A505F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.105 Mobile Safari/537.36",
276
1383
  "expect": {
277
- "vendor": "OnePlus",
278
- "model": "A3000",
1384
+ "vendor": "Samsung",
1385
+ "model": "SM-A505F",
279
1386
  "type": "mobile"
280
1387
  }
281
1388
  },
282
1389
  {
283
- "desc": "OnePlus 6",
284
- "ua": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A6003) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.89 Mobile Safari/537.36",
1390
+ "desc": "Samsung Galaxy A80",
1391
+ "ua": "Mozilla/5.0 (Linux; Android 9; SM-A805F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.112 Mobile Safari/537.36",
285
1392
  "expect": {
286
- "vendor": "OnePlus",
287
- "model": "A6003",
1393
+ "vendor": "Samsung",
1394
+ "model": "SM-A805F",
288
1395
  "type": "mobile"
289
1396
  }
290
1397
  },
291
1398
  {
292
- "desc": "OnePlus 6T",
293
- "ua": "Mozilla/5.0 (Linux; Android 9; ONEPLUS A6010) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36",
1399
+ "desc": "Samsung Galaxy Fold",
1400
+ "ua": "Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-F900U Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/9.2 Chrome/67.0.3396.87 Mobile Safari/537.36",
294
1401
  "expect": {
295
- "vendor": "OnePlus",
296
- "model": "A6010",
1402
+ "vendor": "Samsung",
1403
+ "model": "SM-F900U",
297
1404
  "type": "mobile"
298
1405
  }
299
1406
  },
300
1407
  {
301
- "desc": "OPPO R7s",
302
- "ua": "Mozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; OPPO R7s Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/37.0.0.0 MQQBrowser/7.1 Mobile Safari/537.36",
1408
+ "desc": "Samsung Galaxy Z Flip",
1409
+ "ua": "Mozilla/5.0 (Linux; Android 10; SM-F700N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36",
303
1410
  "expect": {
304
- "vendor": "OPPO",
305
- "model": "R7s",
1411
+ "vendor": "Samsung",
1412
+ "model": "SM-F700N",
306
1413
  "type": "mobile"
307
1414
  }
308
1415
  },
309
1416
  {
310
- "desc": "Philips SmartTV",
311
- "ua": "Opera/9.80 HbbTV/1.1.1 (; Philips; ; ; ; ) NETTV/4.0.2; en) Version/11.60",
1417
+ "desc": "Samsung Galaxy Z Fold2",
1418
+ "ua": "Mozilla/5.0 (Linux; Android 10; SM-F916B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36",
312
1419
  "expect": {
313
- "vendor": "Philips",
314
- "model": "",
315
- "type": "smarttv"
1420
+ "vendor": "Samsung",
1421
+ "model": "SM-F916B",
1422
+ "type": "mobile"
316
1423
  }
317
1424
  },
318
1425
  {
319
- "desc": "Kindle Fire HD",
320
- "ua": "Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; KFTT Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.4 Mobile Safari/535.19 Silk-Accelerated=true",
1426
+ "desc": "Samsung Galaxy S10E",
1427
+ "ua": "Mozilla/5.0 (Linux; Android 9; SM-G970F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile Safari/537.36",
321
1428
  "expect": {
322
- "vendor": "Amazon",
323
- "model": "KFTT",
324
- "type": "tablet"
1429
+ "vendor": "Samsung",
1430
+ "model": "SM-G970F",
1431
+ "type": "mobile"
325
1432
  }
326
1433
  },
327
1434
  {
328
- "desc": "Samsung Galaxy Note 8",
329
- "ua": "Mozilla/5.0 (Linux; Android 4.2.2; GT-N5100 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36",
1435
+ "desc": "Samsung Galaxy Note 10+",
1436
+ "ua": "Mozilla/5.0 (Linux; Android 9; SM-N976V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.89 Mobile Safari/537.36",
330
1437
  "expect": {
331
1438
  "vendor": "Samsung",
332
- "model": "GT-N5100",
333
- "type": "tablet"
1439
+ "model": "SM-N976V",
1440
+ "type": "mobile"
334
1441
  }
335
1442
  },
336
1443
  {
@@ -342,6 +1449,15 @@
342
1449
  "type": "mobile"
343
1450
  }
344
1451
  },
1452
+ {
1453
+ "desc": "Samsung Galaxy Note 8",
1454
+ "ua": "Mozilla/5.0 (Linux; Android 4.2.2; GT-N5100 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Safari/537.36",
1455
+ "expect": {
1456
+ "vendor": "Samsung",
1457
+ "model": "GT-N5100",
1458
+ "type": "tablet"
1459
+ }
1460
+ },
345
1461
  {
346
1462
  "desc": "Samsung SM-T231",
347
1463
  "ua": "Mozilla/5.0 (Linux; Android 4.4.2; SM-T231 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Safari/537.36",
@@ -352,7 +1468,43 @@
352
1468
  }
353
1469
  },
354
1470
  {
355
- "desc": "Samsung SM-T700",
1471
+ "desc": "Samsung Galaxy Tab 6 Lite",
1472
+ "ua": "Mozilla/5.0 (Linux; Android 10; SAMSUNG SM-P610) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/12.0 Chrome/79.0.3945.136 Safari/537.36",
1473
+ "expect": {
1474
+ "vendor": "Samsung",
1475
+ "model": "SM-P610",
1476
+ "type": "tablet"
1477
+ }
1478
+ },
1479
+ {
1480
+ "desc": "Samsung Galaxy Tab A 9.7",
1481
+ "ua": "Mozilla/5.0 (Linux; Android 7.1.1; SM-P550 Build/NMF26X; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.90 Safari/537.36",
1482
+ "expect": {
1483
+ "vendor": "Samsung",
1484
+ "model": "SM-P550",
1485
+ "type": "tablet"
1486
+ }
1487
+ },
1488
+ {
1489
+ "desc": "Samsung Galaxy Tab A 10.1",
1490
+ "ua": " Mozilla/5.0 (Linux; Android 10; SAMSUNG SM-T515) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/13.0 Chrome/83.0.4103.106 Safari/537.36",
1491
+ "expect": {
1492
+ "vendor": "Samsung",
1493
+ "model": "SM-T515",
1494
+ "type": "tablet"
1495
+ }
1496
+ },
1497
+ {
1498
+ "desc": "Samsung Galaxy Tab S7",
1499
+ "ua": "Mozilla/5.0 (Linux; Android 10; SM-T870) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36",
1500
+ "expect": {
1501
+ "vendor": "Samsung",
1502
+ "model": "SM-T870",
1503
+ "type": "tablet"
1504
+ }
1505
+ },
1506
+ {
1507
+ "desc": "Samsung Galaxy Tab S",
356
1508
  "ua": "Mozilla/5.0 (Linux; Android 4.4.2; SM-T700 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Safari/537.36",
357
1509
  "expect": {
358
1510
  "vendor": "Samsung",
@@ -361,12 +1513,21 @@
361
1513
  }
362
1514
  },
363
1515
  {
364
- "desc": "Samsung SM-T520",
1516
+ "desc": "Samsung Galaxy Tab Pro 10.1",
365
1517
  "ua": "Mozilla/5.0 (Linux; Android 4.4.2; SM-T520 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Safari/537.36",
366
1518
  "expect": {
367
- "vendor": "Samsung",
368
- "model": "SM-T520",
369
- "type": "tablet"
1519
+ "vendor": "Samsung",
1520
+ "model": "SM-T520",
1521
+ "type": "tablet"
1522
+ }
1523
+ },
1524
+ {
1525
+ "desc": "Samsung Note 10.1",
1526
+ "ua": "Mozilla/5.0 (Linux; Android 5.1.1; SM-P605) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36",
1527
+ "expect": {
1528
+ "vendor": "Samsung",
1529
+ "model": "SM-P605",
1530
+ "type": "tablet"
370
1531
  }
371
1532
  },
372
1533
  {
@@ -414,6 +1575,33 @@
414
1575
  "type": "smarttv"
415
1576
  }
416
1577
  },
1578
+ {
1579
+ "desc": "Sharp Aquos B10",
1580
+ "ua": "Mozilla/5.0 (Linux; Android 7.0; SH-A01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Mobile Safari/537.36",
1581
+ "expect": {
1582
+ "vendor": "Sharp",
1583
+ "model": "SH-A01",
1584
+ "type": "mobile"
1585
+ }
1586
+ },
1587
+ {
1588
+ "desc": "Sharp Aquos L2",
1589
+ "ua": "Mozilla/5.0 (Linux; Android 7.0; SH-L02 Build/S4045) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36",
1590
+ "expect": {
1591
+ "vendor": "Sharp",
1592
+ "model": "SH-L02",
1593
+ "type": "mobile"
1594
+ }
1595
+ },
1596
+ {
1597
+ "desc": "Sharp Aquos R2",
1598
+ "ua": "Mozilla/5.0 (Linux; Android 8.0; SHV42) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.92 Mobile Safari/537.36",
1599
+ "expect": {
1600
+ "vendor": "Sharp",
1601
+ "model": "SHV42",
1602
+ "type": "mobile"
1603
+ }
1604
+ },
417
1605
  {
418
1606
  "desc": "Sony G8141 (Xperia XZ Premium)",
419
1607
  "ua": "Mozilla/5.0 (Linux; Android 8.0.0; G8141) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36",
@@ -468,6 +1656,51 @@
468
1656
  "type": "mobile"
469
1657
  }
470
1658
  },
1659
+ {
1660
+ "desc": "Sony Xperia L4",
1661
+ "ua": "Mozilla/5.0 (Linux; Android 9; XQ-AD51) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36",
1662
+ "expect": {
1663
+ "vendor": "Sony",
1664
+ "model": "XQ-AD51",
1665
+ "type": "mobile"
1666
+ }
1667
+ },
1668
+ {
1669
+ "desc": "Sony Xperia 1ii",
1670
+ "ua": "Mozilla/5.0 (Linux; Android 10; XQ-AT51) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36",
1671
+ "expect": {
1672
+ "vendor": "Sony",
1673
+ "model": "XQ-AT51",
1674
+ "type": "mobile"
1675
+ }
1676
+ },
1677
+ {
1678
+ "desc": "Sony Xperia 1ii",
1679
+ "ua": "Mozilla/5.0 (Linux; Android 10; SOG01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 Mobile Safari/537.36",
1680
+ "expect": {
1681
+ "vendor": "Sony",
1682
+ "model": "SOG01",
1683
+ "type": "mobile"
1684
+ }
1685
+ },
1686
+ {
1687
+ "desc": "Sony Xperia 10ii",
1688
+ "ua": "Mozilla/5.0 (Linux; Android 10; XQ-AU52) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36",
1689
+ "expect": {
1690
+ "vendor": "Sony",
1691
+ "model": "XQ-AU52",
1692
+ "type": "mobile"
1693
+ }
1694
+ },
1695
+ {
1696
+ "desc": "Sony Xperia Pro",
1697
+ "ua": "Mozilla/5.0 (Linux; Android 10; XQ-AQ52) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.185 Mobile Safari/537.36",
1698
+ "expect": {
1699
+ "vendor": "Sony",
1700
+ "model": "XQ-AQ52",
1701
+ "type": "mobile"
1702
+ }
1703
+ },
471
1704
  {
472
1705
  "desc": "Sony SGP521 (Xperia Z2 Tablet)",
473
1706
  "ua": "Mozilla/5.0 (Linux; Android 4.4; SGP521 Build/17.1.A.0.432) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Safari/537.36",
@@ -477,6 +1710,15 @@
477
1710
  "type": "tablet"
478
1711
  }
479
1712
  },
1713
+ {
1714
+ "desc": "Sony Xperia Z2 Tablet",
1715
+ "ua": "Mozilla/5.0 (Linux; Android 5.1.1; SGP561) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.99 Safari/537.36",
1716
+ "expect": {
1717
+ "vendor": "Sony",
1718
+ "model": "Xperia Tablet",
1719
+ "type": "tablet"
1720
+ }
1721
+ },
480
1722
  {
481
1723
  "desc": "Sony Tablet S",
482
1724
  "ua": "Mozilla/5.0 (Linux; U; Android 3.1; Sony Tablet S Build/THMAS10000) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13",
@@ -495,6 +1737,26 @@
495
1737
  "type": "tablet"
496
1738
  }
497
1739
  },
1740
+ {
1741
+ "desc" : "Tesla",
1742
+ "ua" : "Mozilla/5.0 (X11; GNU/Linux) AppleWebKit/601.1 (KHTML, like Gecko) Tesla QtCarBrowser Safari/601.1",
1743
+ "expect" :
1744
+ {
1745
+ "vendor": "Tesla",
1746
+ "model": "undefined",
1747
+ "type": "embedded"
1748
+ }
1749
+ },
1750
+ {
1751
+ "desc" : "Tesla",
1752
+ "ua" : "Mozilla/5.0 (X11; GNU/Linux) AppleWebKit/537.36 (KHTML, like Gecko) Chromium/79.0.3945.130 Chrome/79.0.3945.130 Safari/537.36 Tesla/2020.16.2.1-e99c70fff409",
1753
+ "expect" :
1754
+ {
1755
+ "vendor": "Tesla",
1756
+ "model": "undefined",
1757
+ "type": "embedded"
1758
+ }
1759
+ },
498
1760
  {
499
1761
  "desc": "Xiaomi 2013023",
500
1762
  "ua": "Mozilla/5.0 (Linux; U; Android 4.2.2; en-US; 2013023 Build/HM2013023) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/10.0.1.512 U3/0.8.0 Mobile Safari/533.1",
@@ -576,6 +1838,123 @@
576
1838
  "type": "mobile"
577
1839
  }
578
1840
  },
1841
+ {
1842
+ "desc": "Xiaomi Mi Max 3",
1843
+ "ua": "Mozilla/5.0 (Linux; Android 9; MI MAX 3 Build/PKQ1.181007.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.116 Mobile Safari/537.36",
1844
+ "expect": {
1845
+ "vendor": "Xiaomi",
1846
+ "model": "MI MAX 3",
1847
+ "type": "mobile"
1848
+ }
1849
+ },
1850
+ {
1851
+ "desc": "Xiaomi Mi A1",
1852
+ "ua": "Mozilla/5.0 (Linux; Android 9; Mi A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.101 Mobile Safari/537.36",
1853
+ "expect": {
1854
+ "vendor": "Xiaomi",
1855
+ "model": "Mi A1",
1856
+ "type": "mobile"
1857
+ }
1858
+ },
1859
+ {
1860
+ "desc": "Xiaomi Mi A2 Lite",
1861
+ "ua": "Mozilla/5.0 (Linux; Android 9; Mi A2 Lite) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.62 Mobile Safari/537.36",
1862
+ "expect": {
1863
+ "vendor": "Xiaomi",
1864
+ "model": "Mi A2 Lite",
1865
+ "type": "mobile"
1866
+ }
1867
+ },
1868
+ {
1869
+ "desc": "Xiaomi Mi 9 SE",
1870
+ "ua": "Mozilla/5.0 (Linux; Android 9; Mi 9 SE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36",
1871
+ "expect": {
1872
+ "vendor": "Xiaomi",
1873
+ "model": "Mi 9 SE",
1874
+ "type": "mobile"
1875
+ }
1876
+ },
1877
+ {
1878
+ "desc": "Xiaomi Mi A2",
1879
+ "ua": "Mozilla/5.0 (Linux; Android 9; Mi A2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Mobile Safari/537.36",
1880
+ "expect": {
1881
+ "vendor": "Xiaomi",
1882
+ "model": "Mi A2",
1883
+ "type": "mobile"
1884
+ }
1885
+ },
1886
+ {
1887
+ "desc": "Xiaomi MI PAD 2",
1888
+ "ua": "Mozilla/5.0 (Linux; Android 5.1; MI PAD 2 Build/LMY47I; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/60.0.3112.107 Safari/537.36 [FB_IAB/FB4A;FBAV/137.0.0.24.91;]",
1889
+ "expect": {
1890
+ "vendor": "Xiaomi",
1891
+ "model": "MI PAD 2",
1892
+ "type": "tablet"
1893
+ }
1894
+ },
1895
+ {
1896
+ "desc": "Xiaomi MI PAD 4 PLUS",
1897
+ "ua": "Mozilla/5.0 (Linux; Android 8.1; MI PAD 4 PLUS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36",
1898
+ "expect": {
1899
+ "vendor": "Xiaomi",
1900
+ "model": "MI PAD 4 PLUS",
1901
+ "type": "tablet"
1902
+ }
1903
+ },
1904
+ {
1905
+ "desc": "Xiaomi POCO X2",
1906
+ "ua": "Mozilla/5.0 (Linux; Android 10; POCO X2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.136 Mobile Safari/537.36",
1907
+ "expect": {
1908
+ "vendor": "Xiaomi",
1909
+ "model": "POCO X2",
1910
+ "type": "mobile"
1911
+ }
1912
+ },
1913
+ {
1914
+ "desc": "Xiaomi Redmi 4A",
1915
+ "ua": "Mozilla/5.0 (Linux; Android 6.0; Redmi 4A Build/MMB29M; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Mobile Safari/537.36",
1916
+ "expect": {
1917
+ "vendor": "Xiaomi",
1918
+ "model": "Redmi 4A",
1919
+ "type": "mobile"
1920
+ }
1921
+ },
1922
+ {
1923
+ "desc": "Xiaomi Redmi K30 5G",
1924
+ "ua": "Mozilla/5.0 (Linux; Android 10; Redmi K30 5G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.96 Mobile Safari/537.36",
1925
+ "expect": {
1926
+ "vendor": "Xiaomi",
1927
+ "model": "Redmi K30 5G",
1928
+ "type": "mobile"
1929
+ }
1930
+ },
1931
+ {
1932
+ "desc": "Xiaomi Redmi K30 Pro",
1933
+ "ua": "Mozilla/5.0 (Linux; Android 10; Redmi K30 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Mobile Safari/537.36",
1934
+ "expect": {
1935
+ "vendor": "Xiaomi",
1936
+ "model": "Redmi K30 Pro",
1937
+ "type": "mobile"
1938
+ }
1939
+ },
1940
+ {
1941
+ "desc": "Xiaomi Redmi Note 3",
1942
+ "ua": "Mozilla/5.0 (Linux; Android 6.0.1; Redmi Note 3 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.116 Mobile Safari/537.36",
1943
+ "expect": {
1944
+ "vendor": "Xiaomi",
1945
+ "model": "Redmi Note 3",
1946
+ "type": "mobile"
1947
+ }
1948
+ },
1949
+ {
1950
+ "desc": "Xiaomi Redmi Note 9 Pro Max",
1951
+ "ua": "Mozilla/5.0 (Linux; Android 10; Redmi Note 9 Pro Max) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.99 Mobile Safari/537.36",
1952
+ "expect": {
1953
+ "vendor": "Xiaomi",
1954
+ "model": "Redmi Note 9 Pro Max",
1955
+ "type": "mobile"
1956
+ }
1957
+ },
579
1958
  {
580
1959
  "desc": "PlayStation 4",
581
1960
  "ua": "Mozilla/5.0 (PlayStation 4 3.00) AppleWebKit/537.73 (KHTML, like Gecko)",
@@ -585,6 +1964,69 @@
585
1964
  "type": "console"
586
1965
  }
587
1966
  },
1967
+ {
1968
+ "desc": "PlayStation 5",
1969
+ "ua": "Mozilla/5.0 (Playstation; Playstation 5/1.05) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15",
1970
+ "expect": {
1971
+ "vendor": "Sony",
1972
+ "model": "Playstation 5",
1973
+ "type": "console"
1974
+ }
1975
+ },
1976
+ {
1977
+ "desc": "PlayStation Vita",
1978
+ "ua": "Mozilla/5.0 (PlayStation Vita 3.52) AppleWebKit/537.73 (KHTML, like Gecko) Silk/3.2",
1979
+ "expect": {
1980
+ "vendor": "Sony",
1981
+ "model": "PlayStation Vita",
1982
+ "type": "console"
1983
+ }
1984
+ },
1985
+ {
1986
+ "desc": "Nintendo Switch",
1987
+ "ua": "Mozilla/5.0 (Nintendo Switch; WifiWebAuthApplet) AppleWebKit/606.4 (KHTML, like Gecko) NF/6.0.1.15.4 NintendoBrowser/5.1.0.20393",
1988
+ "expect": {
1989
+ "vendor": "Nintendo",
1990
+ "model": "Switch",
1991
+ "type": "console"
1992
+ }
1993
+ },
1994
+ {
1995
+ "desc": "Nintendo WiiU",
1996
+ "ua": "Mozilla/5.0 (Nintendo WiiU) AppleWebKit/536.30 (KHTML, like Gecko) NX/3.0.4.2.9 NintendoBrowser/4.2.0.11146.EU",
1997
+ "expect": {
1998
+ "vendor": "Nintendo",
1999
+ "model": "WiiU",
2000
+ "type": "console"
2001
+ }
2002
+ },
2003
+ {
2004
+ "desc": "Nintendo Wii",
2005
+ "ua": "Opera/9.10 (Nintendo Wii; U; ; 1621; en)",
2006
+ "expect": {
2007
+ "vendor": "Nintendo",
2008
+ "model": "Wii",
2009
+ "type": "console"
2010
+ }
2011
+ },
2012
+ {
2013
+ "desc": "Nintendo 3DS",
2014
+ "ua": "Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1.7610.EU",
2015
+ "expect": {
2016
+ "vendor": "Nintendo",
2017
+ "model": "3DS",
2018
+ "type": "console"
2019
+ }
2020
+ },
2021
+ {
2022
+ "desc": "Nintendo 3DS",
2023
+ "ua": "Mozilla/5.0 (New Nintendo 3DS like iPhone) AppleWebKit/536.30 (KHTML, like Gecko) NX/3.0.0.5.15 Mobile NintendoBrowser/1.3.10126.EU",
2024
+ "expect": {
2025
+ "vendor": "Nintendo",
2026
+ "model": "3DS",
2027
+ "type": "console"
2028
+ }
2029
+ },
588
2030
  {
589
2031
  "desc": "Galaxy Nexus",
590
2032
  "ua": "Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19",
@@ -730,38 +2172,125 @@
730
2172
  }
731
2173
  },
732
2174
  {
733
- "desc": "Google Pixel 3",
734
- "ua": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
2175
+ "desc": "Google Pixel 3",
2176
+ "ua": "Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
2177
+ "expect": {
2178
+ "vendor": "Google",
2179
+ "model": "Pixel 3",
2180
+ "type": "mobile"
2181
+ }
2182
+ },
2183
+ {
2184
+ "desc": "Google Pixel 3 XL",
2185
+ "ua": "Mozilla/5.0 (Linux; Android 9; Pixel 3 XL Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
2186
+ "expect": {
2187
+ "vendor": "Google",
2188
+ "model": "Pixel 3 XL",
2189
+ "type": "mobile"
2190
+ }
2191
+ },
2192
+ {
2193
+ "desc": "Google Pixel 3 XL",
2194
+ "ua": "Mozilla/5.0 (Linux; Android 9; Pixel 3 XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile Safari/537.36",
2195
+ "expect": {
2196
+ "vendor": "Google",
2197
+ "model": "Pixel 3 XL",
2198
+ "type": "mobile"
2199
+ }
2200
+ },
2201
+ {
2202
+ "desc": "Google Pixel 3a",
2203
+ "ua": "Mozilla/5.0 (Linux; Android 10; Pixel 3a) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36",
2204
+ "expect": {
2205
+ "vendor": "Google",
2206
+ "model": "Pixel 3a",
2207
+ "type": "mobile"
2208
+ }
2209
+ },
2210
+ {
2211
+ "desc": "Google Pixel 3a XL",
2212
+ "ua": "Mozilla/5.0 (Linux; Android 10; Pixel 3a XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36",
2213
+ "expect": {
2214
+ "vendor": "Google",
2215
+ "model": "Pixel 3a XL",
2216
+ "type": "mobile"
2217
+ }
2218
+ },
2219
+ {
2220
+ "desc": "Google Pixel 4",
2221
+ "ua": "Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36",
2222
+ "expect": {
2223
+ "vendor": "Google",
2224
+ "model": "Pixel 4",
2225
+ "type": "mobile"
2226
+ }
2227
+ },
2228
+ {
2229
+ "desc": "Google Pixel 4a",
2230
+ "ua": "Mozilla/5.0 (Linux; Android 10; Pixel 4a) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.83 Mobile Safari/537.36",
2231
+ "expect": {
2232
+ "vendor": "Google",
2233
+ "model": "Pixel 4a",
2234
+ "type": "mobile"
2235
+ }
2236
+ },
2237
+ {
2238
+ "desc": "Google Pixel 4 XL",
2239
+ "ua": "Mozilla/5.0 (Linux; Android 10; Pixel 4 XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36",
2240
+ "expect": {
2241
+ "vendor": "Google",
2242
+ "model": "Pixel 4 XL",
2243
+ "type": "mobile"
2244
+ }
2245
+ },
2246
+ {
2247
+ "desc": "Google Pixel 5",
2248
+ "ua": "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.120 Mobile Safari/537.36",
2249
+ "expect": {
2250
+ "vendor": "Google",
2251
+ "model": "Pixel 5",
2252
+ "type": "mobile"
2253
+ }
2254
+ },
2255
+ {
2256
+ "desc": "Generic Android Device",
2257
+ "ua": "Mozilla/5.0 (Linux; U; Android 6.0.1; i980 Build/MRA58K)",
2258
+ "expect": {
2259
+ "vendor": "Generic",
2260
+ "model": "Android 6.0.1"
2261
+ }
2262
+ },
2263
+ {
2264
+ "desc": "Android Phone Unidentified Vendor (docomo F-04K)",
2265
+ "ua": "Mozilla/5.0 (Linux; Android 8.1.0; F-04K Build/V15R060P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.137 Mobile Safari/537.36",
735
2266
  "expect": {
736
- "vendor": "Google",
737
- "model": "Pixel 3",
2267
+ "model": "F-04K",
738
2268
  "type": "mobile"
739
2269
  }
740
2270
  },
741
2271
  {
742
- "desc": "Google Pixel 3 XL",
743
- "ua": "Mozilla/5.0 (Linux; Android 9; Pixel 3 XL Build/PD1A.180720.030) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Mobile Safari/537.36",
2272
+ "desc": "docomo SH-02M",
2273
+ "ua": "Mozilla/5.0 (Linux; Android 9; SH-02M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Mobile Safari/537.36",
744
2274
  "expect": {
745
- "vendor": "Google",
746
- "model": "Pixel 3 XL",
2275
+ "vendor": "Sharp",
2276
+ "model": "SH-02M",
747
2277
  "type": "mobile"
748
2278
  }
749
2279
  },
750
2280
  {
751
- "desc": "Google Pixel 3 XL",
752
- "ua": "Mozilla/5.0 (Linux; Android 9; Pixel 3 XL) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile Safari/537.36",
2281
+ "desc": "Android Tablet Unidentified Vendor (docomo F-02K)",
2282
+ "ua": "Mozilla/5.0 (Linux; Android 8.1.0; F-02K Build/V44R059G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Safari/537.36",
753
2283
  "expect": {
754
- "vendor": "Google",
755
- "model": "Pixel 3 XL",
756
- "type": "mobile"
2284
+ "model": "F-02K",
2285
+ "type": "tablet"
757
2286
  }
758
2287
  },
759
2288
  {
760
- "desc": "Generic Android Device",
761
- "ua": "Mozilla/5.0 (Linux; U; Android 6.0.1; i980 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
2289
+ "desc": "Android Tablet Unidentified Vendor (docomo d-02K)",
2290
+ "ua": "Mozilla/5.0 (Linux; Android 9; d-02K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.136 Safari/537.36",
762
2291
  "expect": {
763
- "vendor": "Generic",
764
- "model": "Android 6.0.1"
2292
+ "model": "d-02K",
2293
+ "type": "tablet"
765
2294
  }
766
2295
  },
767
2296
  {
@@ -872,6 +2401,24 @@
872
2401
  "type": "tablet"
873
2402
  }
874
2403
  },
2404
+ {
2405
+ "desc": "ZTE-Z431",
2406
+ "ua": "ZTE-Z431/1.4.0 NetFront/4.2 QTV5.1 Profile/MIDP-2.1 Configuration/CLDC-1.1",
2407
+ "expect": {
2408
+ "vendor": "ZTE",
2409
+ "model": "Z431",
2410
+ "type": "mobile"
2411
+ }
2412
+ },
2413
+ {
2414
+ "desc": "ZTE",
2415
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.1.2; en-us; ZTE-Z740G Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30",
2416
+ "expect": {
2417
+ "vendor": "ZTE",
2418
+ "model": "Z740G",
2419
+ "type": "mobile"
2420
+ }
2421
+ },
875
2422
  {
876
2423
  "desc": "ZTE K Series Tablet",
877
2424
  "ua": "Mozilla/5.0 (Linux; Android 6.0.1; K88 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
@@ -881,6 +2428,42 @@
881
2428
  "type": "tablet"
882
2429
  }
883
2430
  },
2431
+ {
2432
+ "desc": "ZTE Nubia Red Magic 3",
2433
+ "ua": "Mozilla/5.0 (Linux; Android 9; NX629J Build/PKQ1.190321.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/45016 Mobile Safari/537.36 MMWEBID/4064 MicroMessenger/7.0.10.1580(0x27000A34) Process/tools NetType/WIFI Language/zh_CN ABI/arm64",
2434
+ "expect": {
2435
+ "vendor": "ZTE",
2436
+ "model": "NX629J",
2437
+ "type": "mobile"
2438
+ }
2439
+ },
2440
+ {
2441
+ "desc": "ZTE Blade A5",
2442
+ "ua": "Mozilla/5.0 (Linux; Android 9; ZTE Blade A5 2019) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36",
2443
+ "expect": {
2444
+ "vendor": "ZTE",
2445
+ "model": "Blade A5 2019",
2446
+ "type": "mobile"
2447
+ }
2448
+ },
2449
+ {
2450
+ "desc": "ZTE BLADE V0730",
2451
+ "ua": "Mozilla/5.0 (Linux; Android 6.0; ZTE BLADE V0730) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.116 Mobile Safari/537.36",
2452
+ "expect": {
2453
+ "vendor": "ZTE",
2454
+ "model": "BLADE V0730",
2455
+ "type": "mobile"
2456
+ }
2457
+ },
2458
+ {
2459
+ "desc": "ZTE B2017G",
2460
+ "ua": "Mozilla/5.0 (Linux; Android 7.1.1; ZTE B2017G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.93 Mobile Safari/537.36",
2461
+ "expect": {
2462
+ "vendor": "ZTE",
2463
+ "model": "B2017G",
2464
+ "type": "mobile"
2465
+ }
2466
+ },
884
2467
  {
885
2468
  "desc": "Swizz GEN610",
886
2469
  "ua": "Mozilla/5.0 (Linux; Android 4.4.2; GEN610 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36",
@@ -1016,6 +2599,15 @@
1016
2599
  "type": "tablet"
1017
2600
  }
1018
2601
  },
2602
+ {
2603
+ "desc": "Amazon Alexa Echo Show",
2604
+ "ua": "AlexaWebMediaPlayer/1.0.200641.0 (Linux;Android 5.1.1)",
2605
+ "expect": {
2606
+ "vendor": "Amazon",
2607
+ "model": "Alexa",
2608
+ "type": "tablet"
2609
+ }
2610
+ },
1019
2611
  {
1020
2612
  "desc": "Amazon Kindle Fire Tablet",
1021
2613
  "ua": "Mozilla/5.0 (Linux; U; Android 4.4.3; en-us; KFSAWI Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.66 like Chrome/39.0.2171.93 Safari/537.36",
@@ -1025,6 +2617,24 @@
1025
2617
  "type": "tablet"
1026
2618
  }
1027
2619
  },
2620
+ {
2621
+ "desc": "Amazon Kindle Fire Tablet",
2622
+ "ua": "Mozilla/5.0 (Linux; U; Android 4.4.3; en-us; KFSAWI) AppleWebKit/537.36 (KHTML, like Gecko) Silk/3.66 like Chrome/39.0.2171.93 Safari/537.36",
2623
+ "expect": {
2624
+ "vendor": "Amazon",
2625
+ "model": "KFSAWI",
2626
+ "type": "tablet"
2627
+ }
2628
+ },
2629
+ {
2630
+ "desc": "Amazon Kindle Fire Tablet",
2631
+ "ua": "Mozilla/5.0 (Linux; Android 9; KFMAWI Build/PS7312; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Safari/537.36",
2632
+ "expect": {
2633
+ "vendor": "Amazon",
2634
+ "model": "KFMAWI",
2635
+ "type": "tablet"
2636
+ }
2637
+ },
1028
2638
  {
1029
2639
  "desc": "Amazon Fire TV",
1030
2640
  "ua": "Mozilla/5.0 (Linux; Android 4.2.2; AFTB Build/JDQ39) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.173 Mobile Safari/537.22",
@@ -1034,6 +2644,24 @@
1034
2644
  "type": "smarttv"
1035
2645
  }
1036
2646
  },
2647
+ {
2648
+ "desc": "Amazon Fire TV",
2649
+ "ua": "Mozilla/5.0 (Linux; Android 5.1.1; AFTT) AppleWebKit/537.36 (KHTML, like Gecko) Silk/86.3.20 like Chrome/86.0.4240.198 Safari/537.36",
2650
+ "expect": {
2651
+ "vendor": "Amazon",
2652
+ "model": "T",
2653
+ "type": "smarttv"
2654
+ }
2655
+ },
2656
+ {
2657
+ "desc": "Android TV",
2658
+ "ua": "Mozilla/5.0 (Linux; Android 10; 2020/2021 UHD Android TV Build/QTG3.201102.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) version/4.0 Chrome/83.0.4103.101 Mobile Safari/537.36",
2659
+ "expect": {
2660
+ "vendor": "undefined",
2661
+ "model": "undefined",
2662
+ "type": "smarttv"
2663
+ }
2664
+ },
1037
2665
  {
1038
2666
  "desc": "Gigaset Tablet",
1039
2667
  "ua": "Mozilla/5.0 (Linux; Android 4.2.2; Gigaset QV830 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
@@ -1044,66 +2672,253 @@
1044
2672
  }
1045
2673
  },
1046
2674
  {
1047
- "desc": "Redmi Note 3",
1048
- "ua": "Mozilla/5.0 (Linux; Android 6.0.1; Redmi Note 3 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.116 Mobile Safari/537.36",
2675
+ "desc": "Amazon Fire 7",
2676
+ "ua": "Mozilla/5.0 (Linux; Android 5.1.1; KFAUWI) AppleWebKit/537.36 (KHTML, like Gecko) Silk/80.5.3 like Chrome/80.0.3987.162 Safari/537.36",
1049
2677
  "expect": {
1050
- "vendor": "Xiaomi",
1051
- "model": "Redmi Note 3",
2678
+ "vendor": "Amazon",
2679
+ "model": "KFAUWI",
2680
+ "type": "tablet"
2681
+ }
2682
+ },
2683
+ {
2684
+ "desc": "AT&T Radiant Core U304AA",
2685
+ "ua": "Dalvik/2.1.0 (Linux; U; Android 9; U304AA Build/P00610)",
2686
+ "expect": {
2687
+ "vendor": "AT&T",
2688
+ "model": "U304AA",
1052
2689
  "type": "mobile"
1053
2690
  }
1054
2691
  },
1055
2692
  {
1056
- "desc": "MI PAD 2",
1057
- "ua": "Mozilla/5.0 (Linux; Android 5.1; MI PAD 2 Build/LMY47I; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/60.0.3112.107 Safari/537.36 [FB_IAB/FB4A;FBAV/137.0.0.24.91;]",
2693
+ "desc": "Vodafone Smart Tab 4G",
2694
+ "ua": "Mozilla/5.0 (Linux; Android 4.4.4; Vodafone Smart Tab 4G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
1058
2695
  "expect": {
1059
- "vendor": "Xiaomi",
1060
- "model": "MI PAD 2",
2696
+ "vendor": "Vodafone",
2697
+ "model": "Smart Tab 4G",
1061
2698
  "type": "tablet"
1062
2699
  }
1063
2700
  },
1064
2701
  {
1065
- "desc": "HUAWEI MediaPad M3 Lite 10",
1066
- "ua": "Mozilla/5.0 (Linux; Android 7.0; BAH-L09) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Safari/537.36",
2702
+ "desc": "Vodafone Smart ultra 6",
2703
+ "ua": "Mozilla/5.0 (Linux; Android 5.0.2; Vodafone Smart ultra 6 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.133 Mobile Safari/537.36",
1067
2704
  "expect": {
1068
- "vendor": "Huawei",
1069
- "model": "BAH-L09",
2705
+ "vendor": "Vodafone",
2706
+ "model": "Smart ultra 6",
1070
2707
  "type": "tablet"
1071
2708
  }
1072
2709
  },
1073
2710
  {
1074
- "desc": "Huawei P30 Pro",
1075
- "ua": "Mozilla/5.0 (Linux; Android 9; VOG-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36",
2711
+ "desc": "4ife 4K Smart TV Box",
2712
+ "ua": "Mozilla/5.0 (Linux; Android 4.4.2; 4ife 4K Smart TV Box Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36 Vinebre",
2713
+ "expect": {
2714
+ "vendor": "undefined",
2715
+ "model": "undefined",
2716
+ "type": "smarttv"
2717
+ }
2718
+ },
2719
+ {
2720
+ "desc": "FaceBook Mobile App",
2721
+ "ua": "[FBAN/FBIOS;FBAV/283.0.0.44.117;FBBV/238386386;FBDV/iPhone12,1;FBMD/iPhone;FBSN/iOS;FBSV/13.6.1;FBSS/2;FBID/phone;FBLC/en_US;FBOP/5;FBRV/240127608]",
1076
2722
  "expect": {
1077
- "vendor": "Huawei",
1078
- "model": "VOG-L29",
1079
2723
  "type": "mobile"
1080
2724
  }
1081
2725
  },
1082
2726
  {
1083
- "desc": "Huawei P20 Lite",
1084
- "ua": "Mozilla/5.0 (Linux; Android 8.0.0; ANE-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.143 Mobile Safari/537.36",
2727
+ "desc": "Issue #454",
2728
+ "ua": "Mosamzilla/5.0 (Windows; U; Win98; en-US; rv:1.7.5) Gecko/20050603 Netscape/8.0.2",
1085
2729
  "expect": {
1086
- "vendor": "Huawei",
1087
- "model": "ANE-LX1",
2730
+ "vendor": "undefined",
2731
+ "model": "undefined",
2732
+ "type": "undefined"
2733
+ }
2734
+ },
2735
+ {
2736
+ "desc": "Alcatel",
2737
+ "ua": "Mozilla/5.0 (Linux; Android 4.4.2; ALCATEL A564C Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.133 Mobile Safari/537.36",
2738
+ "expect": {
2739
+ "vendor": "ALCATEL",
2740
+ "model": "A564C",
1088
2741
  "type": "mobile"
1089
2742
  }
1090
2743
  },
1091
2744
  {
1092
- "desc": "Huawei P20",
1093
- "ua": "Mozilla/5.0 (Linux; Android 8.1.0; EML-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Mobile Safari/537.36",
1094
- "expect": {
1095
- "vendor": "Huawei",
1096
- "model": "EML-L29",
1097
- "type": "mobile"
1098
- }
2745
+ "desc": "Alcatel Go Flip",
2746
+ "ua": "Mozilla/5.0 (Mobile; ALCATEL4044T; rv:37.0) Gecko/37.0 Firefox/37.0 KaiOS/1.0",
2747
+ "expect": {
2748
+ "vendor": "ALCATEL",
2749
+ "model": "4044T",
2750
+ "type": "mobile"
2751
+ }
1099
2752
  },
1100
2753
  {
1101
- "desc": "Huawei P30",
1102
- "ua": "Mozilla/5.0 (Linux; Android 9; ELE-L29) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.90 Mobile Safari/537.36",
1103
- "expect": {
1104
- "vendor": "Huawei",
1105
- "model": "ELE-L29",
1106
- "type": "mobile"
1107
- }
2754
+ "desc": "Jolla",
2755
+ "ua": "Mozilla/5.0 (Maemo; Linux; U; Jolla; Sailfish; Mobile; rv:31.0) Gecko/31.0 Firefox/31.0 SailfishBrowser/1.0",
2756
+ "expect": {
2757
+ "vendor": "Jolla",
2758
+ "model": "undefined",
2759
+ "type": "mobile"
2760
+ }
2761
+ },
2762
+ {
2763
+ "desc": "Xbox One",
2764
+ "ua": "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; Xbox; Xbox One)",
2765
+ "expect": {
2766
+ "vendor": "Microsoft",
2767
+ "model": "Xbox One",
2768
+ "type": "console"
2769
+ }
2770
+ },
2771
+ {
2772
+ "desc": "Xbox",
2773
+ "ua": "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Xbox)",
2774
+ "expect": {
2775
+ "vendor": "Microsoft",
2776
+ "model": "Xbox",
2777
+ "type": "console"
2778
+ }
2779
+ },
2780
+ {
2781
+ "desc": "Nvidia Shield Tablet",
2782
+ "ua": "Mozilla/5.0 (Linux; Android 5.1.1; SHIELD Tablet Build/LVY48E; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/45.0.2454.19 Safari/537.36",
2783
+ "expect": {
2784
+ "vendor": "Nvidia",
2785
+ "model": "SHIELD Tablet",
2786
+ "type": "tablet"
2787
+ }
2788
+ },
2789
+ {
2790
+ "desc": "Ouya",
2791
+ "ua": "Mozilla/5.0 (Linux; Android 4.1.2; OUYA Console Build/JZO54L-OUYA) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.84 Safari/537.36",
2792
+ "expect": {
2793
+ "vendor": "OUYA",
2794
+ "model": "undefined",
2795
+ "type": "console"
2796
+ }
2797
+ },
2798
+ {
2799
+ "desc": "Vivo Y52s",
2800
+ "ua": "Mozilla/5.0 (Linux; Android 10; V2057A Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/76.0.3809.89 Mobile Safari/537.36 T7/12.10 SP-engine/2.28.0 baiduboxapp/12.10.0.10 (Baidu; P1 10) NABar/1.0",
2801
+ "expect": {
2802
+ "vendor": "Vivo",
2803
+ "model": "V2057A",
2804
+ "type": "mobile"
2805
+ }
2806
+ },
2807
+ {
2808
+ "desc": "Vivo X60",
2809
+ "ua": "Mozilla/5.0 (Linux; Android 11; V2046A; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/8.8.71.0",
2810
+ "expect": {
2811
+ "vendor": "Vivo",
2812
+ "model": "V2046A",
2813
+ "type": "mobile"
2814
+ }
2815
+ },
2816
+ {
2817
+ "desc": "Vivo Y79A",
2818
+ "ua": "Mozilla/5.0 (Linux; Android 7.1.2; vivo Y79A Build/N2G47H; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/9.0.14.0",
2819
+ "expect": {
2820
+ "vendor": "Vivo",
2821
+ "model": "Y79A",
2822
+ "type": "mobile"
2823
+ }
2824
+ },
2825
+ {
2826
+ "desc": "Vivo Y97",
2827
+ "ua": "Mozilla/5.0 (Linux; Android 8.1.0; V1813T Build/O11019; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/9.0.14.0",
2828
+ "expect": {
2829
+ "vendor": "Vivo",
2830
+ "model": "V1813T",
2831
+ "type": "mobile"
2832
+ }
2833
+ },
2834
+ {
2835
+ "desc": "Vivo iQOO Pro",
2836
+ "ua": "Mozilla/5.0 (Linux; Android 11; V1916A; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/9.1.10.6",
2837
+ "expect": {
2838
+ "vendor": "Vivo",
2839
+ "model": "V1916A",
2840
+ "type": "mobile"
2841
+ }
2842
+ },
2843
+ {
2844
+ "desc": "Unknown Mobile using Firefox",
2845
+ "ua": "Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0",
2846
+ "expect": {
2847
+ "vendor": "undefined",
2848
+ "model": "undefined",
2849
+ "type": "mobile"
2850
+ }
2851
+ },
2852
+ {
2853
+ "desc": "Unknown Tablet using Firefox",
2854
+ "ua": "Mozilla/5.0 (Android 4.4; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0",
2855
+ "expect": {
2856
+ "vendor": "undefined",
2857
+ "model": "undefined",
2858
+ "type": "tablet"
2859
+ }
2860
+ },
2861
+ {
2862
+ "desc": "Unknown Mobile using Focus for Android",
2863
+ "ua": "Mozilla/5.0 (Linux; Android 7.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.0 Chrome/59.0.3029.83 Mobile Safari/537.36",
2864
+ "expect": {
2865
+ "vendor": "undefined",
2866
+ "model": "undefined",
2867
+ "type": "mobile"
2868
+ }
2869
+ },
2870
+ {
2871
+ "desc": "Unknown Tablet using Focus for Android",
2872
+ "ua": "Mozilla/5.0 (Linux; Android 7.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/1.0 Chrome/59.0.3029.83 Safari/537.36",
2873
+ "expect": {
2874
+ "vendor": "undefined",
2875
+ "model": "undefined",
2876
+ "type": "tablet"
2877
+ }
2878
+ },
2879
+ {
2880
+ "desc": "Unknown Device using Focus for Android with GeckoView",
2881
+ "ua": "Mozilla/5.0 (Android 7.0; Mobile; rv:62.0) Gecko/62.0 Firefox/62.0",
2882
+ "expect": {
2883
+ "vendor": "undefined",
2884
+ "model": "undefined",
2885
+ "type": "mobile"
2886
+ }
2887
+ },
2888
+ {
2889
+ "desc": "Unknown Mobile using Firefox OS",
2890
+ "ua": "Mozilla/5.0 (Mobile; rv:26.0) Gecko/26.0 Firefox/26.0",
2891
+ "expect": {
2892
+ "vendor": "undefined",
2893
+ "model": "undefined",
2894
+ "type": "mobile"
2895
+ }
2896
+ },
2897
+ {
2898
+ "desc": "Unknown Tablet using Firefox OS",
2899
+ "ua": "Mozilla/5.0 (Tablet; rv:26.0) Gecko/26.0 Firefox/26.0",
2900
+ "expect": {
2901
+ "vendor": "undefined",
2902
+ "model": "undefined",
2903
+ "type": "tablet"
2904
+ }
2905
+ },
2906
+ {
2907
+ "desc": "Unknown TV using Firefox OS",
2908
+ "ua": "Mozilla/5.0 (TV; rv:44.0) Gecko/44.0 Firefox/44.0",
2909
+ "expect": {
2910
+ "vendor": "undefined",
2911
+ "model": "undefined",
2912
+ "type": "smarttv"
2913
+ }
2914
+ },
2915
+ {
2916
+ "desc": "PDA with Windows CE",
2917
+ "ua": "Mozilla/4.0 (PDA; Windows CE/1.0.1) NetFront/3.0",
2918
+ "expect": {
2919
+ "vendor": "undefined",
2920
+ "model": "undefined",
2921
+ "type": "mobile"
2922
+ }
1108
2923
  }
1109
2924
  ]