Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / useragent / lib / regexps.js
1 "use strict";
2
3 /**
4  * TL;DR: Don't touch this.
5  *
6  * DO NOT EDIT THIS FILE, IT IS AUTOMATICALLY GENERATED AND COMPILED FROM AN
7  * EXTERNAL REGEXPS DATABASE. TO UPDATE THIS FILE MANUALLY PLEASE RUN THE:
8  *
9  * ```
10  * npm run update
11  * ```
12  *
13  * COMMAND FROM THE ROOT OF THIS REPOSITORY. IF YOU FOUND A REGULAR EXPRESSION THAT
14  * IS BROKEN OR MISSING. PLEASE MAKE THE PULL REQUESTS TO REGEXP DATABASE NOT TO
15  * THIS MODULE AS THEY WILL BE REJECTED INSTANTLY. THE SOURCE FILE LOCATION CAN
16  * BE FOUND IN THE `update.js` FILE WHICH IS IN THE SAME FOLDER AS THIS FILE. PLEASE
17  * SEE THE `exports.remote` PART OF THE FILE.
18  */
19
20
21 var parser;
22
23 exports.browser = Object.create(null);
24
25 parser = Object.create(null);
26 parser[0] = new RegExp("(Rival IQ, rivaliq.com)");
27 parser[1] = "Rival IQ";
28 parser[2] = 0;
29 parser[3] = 0;
30 parser[4] = 0;
31 exports.browser[0] = parser;
32 parser = Object.create(null);
33 parser[0] = new RegExp("(CFNetwork)(?:/(\\d+)\\.(\\d+)\\.?(\\d+)?)?");
34 parser[1] = "CFNetwork";
35 parser[2] = 0;
36 parser[3] = 0;
37 parser[4] = 0;
38 exports.browser[1] = parser;
39 parser = Object.create(null);
40 parser[0] = new RegExp("(Pingdom.com_bot_version_)(\\d+)\\.(\\d+)");
41 parser[1] = "PingdomBot";
42 parser[2] = 0;
43 parser[3] = 0;
44 parser[4] = 0;
45 exports.browser[2] = parser;
46 parser = Object.create(null);
47 parser[0] = new RegExp("(PingdomTMS)/(\\d+)\\.(\\d+)\\.(\\d+)");
48 parser[1] = "PingdomBot";
49 parser[2] = 0;
50 parser[3] = 0;
51 parser[4] = 0;
52 exports.browser[3] = parser;
53 parser = Object.create(null);
54 parser[0] = new RegExp("(facebookexternalhit)/(\\d+)\\.(\\d+)");
55 parser[1] = "FacebookBot";
56 parser[2] = 0;
57 parser[3] = 0;
58 parser[4] = 0;
59 exports.browser[4] = parser;
60 parser = Object.create(null);
61 parser[0] = new RegExp("Google.*/\\+/web/snippet");
62 parser[1] = "GooglePlusBot";
63 parser[2] = 0;
64 parser[3] = 0;
65 parser[4] = 0;
66 exports.browser[5] = parser;
67 parser = Object.create(null);
68 parser[0] = new RegExp("via ggpht.com GoogleImageProxy");
69 parser[1] = "GmailImageProxy";
70 parser[2] = 0;
71 parser[3] = 0;
72 parser[4] = 0;
73 exports.browser[6] = parser;
74 parser = Object.create(null);
75 parser[0] = new RegExp("(Twitterbot)/(\\d+)\\.(\\d+)");
76 parser[1] = "TwitterBot";
77 parser[2] = 0;
78 parser[3] = 0;
79 parser[4] = 0;
80 exports.browser[7] = parser;
81 parser = Object.create(null);
82 parser[0] = new RegExp("/((?:Ant-)?Nutch|[A-z]+[Bb]ot|[A-z]+[Ss]pider|Axtaris|fetchurl|Isara|ShopSalad|Tailsweep)[ \\-](\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?");
83 parser[1] = 0;
84 parser[2] = 0;
85 parser[3] = 0;
86 parser[4] = 0;
87 exports.browser[8] = parser;
88 parser = Object.create(null);
89 parser[0] = new RegExp("\\b(008|Altresium|Argus|BaiduMobaider|BoardReader|DNSGroup|DataparkSearch|EDI|Goodzer|Grub|INGRID|Infohelfer|LinkedInBot|LOOQ|Nutch|PathDefender|Peew|PostPost|Steeler|Twitterbot|VSE|WebCrunch|WebZIP|Y!J-BR[A-Z]|YahooSeeker|envolk|sproose|wminer)/(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?");
90 parser[1] = 0;
91 parser[2] = 0;
92 parser[3] = 0;
93 parser[4] = 0;
94 exports.browser[9] = parser;
95 parser = Object.create(null);
96 parser[0] = new RegExp("(MSIE) (\\d+)\\.(\\d+)([a-z]\\d?)?;.* MSIECrawler");
97 parser[1] = "MSIECrawler";
98 parser[2] = 0;
99 parser[3] = 0;
100 parser[4] = 0;
101 exports.browser[10] = parser;
102 parser = Object.create(null);
103 parser[0] = new RegExp("(Google-HTTP-Java-Client|Apache-HttpClient|http%20client|Python-urllib|HttpMonitor|TLSProber|WinHTTP|JNLP|okhttp)(?:[ /](\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?");
104 parser[1] = 0;
105 parser[2] = 0;
106 parser[3] = 0;
107 parser[4] = 0;
108 exports.browser[11] = parser;
109 parser = Object.create(null);
110 parser[0] = new RegExp("(1470\\.net crawler|50\\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]+-Agent|AdsBot-Google(?:-[a-z]+)?|altavista|AppEngine-Google|archive.*?\\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]+)*|bingbot|BingPreview|blitzbot|BlogBridge|BoardReader(?: [A-Za-z]+)*|boitho.com-dc|BotSeer|\\b\\w*favicon\\w*\\b|\\bYeti(?:-[a-z]+)?|Catchpoint bot|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\\(S\\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher)?|Feed Seeker Bot|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]+-)?Googlebot(?:-[a-zA-Z]+)?|Google SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:/mobile)?|IconSurf|IlTrovatore(?:-Setaccio)?|InfuzApp|Innovazion Crawler|InternetArchive|IP2[a-z]+Bot|jbot\\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\\.RU_Bot|masidani_bot|Mediapartners-Google|Microsoft .*? Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media *)?|msrbot|netresearch|Netvibes|NewsGator[^/]*|^NING|Nutch[^/]*|Nymesis|ObjectsSearch|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PlantyNet_WebRobot|Pompos|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|TheUsefulbot|ThumbShotsBot|Thumbshots\\.ru|TwitterBot|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]+|WhatWeb|WIRE|WordPress|Wotbox|www\\.almaden\\.ibm\\.com|Xenu(?:.s)? Link Sleuth|Xerka [A-z]+Bot|yacy(?:bot)?|Yahoo[a-z]*Seeker|Yahoo! Slurp|Yandex\\w+|YodaoBot(?:-[A-z]+)?|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\\.ze\\.bz|ZooShot|ZyBorg)(?:[ /]v?(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?");
111 parser[1] = 0;
112 parser[2] = 0;
113 parser[3] = 0;
114 parser[4] = 0;
115 exports.browser[12] = parser;
116 parser = Object.create(null);
117 parser[0] = new RegExp("(?:\\/[A-Za-z0-9\\.]+)? *([A-Za-z0-9 \\-_\\!\\[\\]:]*(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]*))/(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?");
118 parser[1] = 0;
119 parser[2] = 0;
120 parser[3] = 0;
121 parser[4] = 0;
122 exports.browser[13] = parser;
123 parser = Object.create(null);
124 parser[0] = new RegExp("(?:\\/[A-Za-z0-9\\.]+)? *([A-Za-z0-9 _\\!\\[\\]:]*(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]*)) (\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?");
125 parser[1] = 0;
126 parser[2] = 0;
127 parser[3] = 0;
128 parser[4] = 0;
129 exports.browser[14] = parser;
130 parser = Object.create(null);
131 parser[0] = new RegExp("((?:[A-z0-9]+|[A-z\\-]+ ?)?(?: the )?(?:[Ss][Pp][Ii][Dd][Ee][Rr]|[Ss]crape|[A-Za-z0-9-]*(?:[^C][^Uu])[Bb]ot|[Cc][Rr][Aa][Ww][Ll])[A-z0-9]*)(?:(?:[ /]| v)(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?");
132 parser[1] = 0;
133 parser[2] = 0;
134 parser[3] = 0;
135 parser[4] = 0;
136 exports.browser[15] = parser;
137 parser = Object.create(null);
138 parser[0] = new RegExp("(HbbTV)/(\\d+)\\.(\\d+)\\.(\\d+) \\(");
139 parser[1] = 0;
140 parser[2] = 0;
141 parser[3] = 0;
142 parser[4] = 0;
143 exports.browser[16] = parser;
144 parser = Object.create(null);
145 parser[0] = new RegExp("(Chimera|SeaMonkey|Camino)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+[a-z]*)?");
146 parser[1] = 0;
147 parser[2] = 0;
148 parser[3] = 0;
149 parser[4] = 0;
150 exports.browser[17] = parser;
151 parser = Object.create(null);
152 parser[0] = new RegExp("\\[FB.*;(FBAV)/(\\d+)(?:\\.(\\d+)(?:\\.(\\d)+)?)?");
153 parser[1] = "Facebook";
154 parser[2] = 0;
155 parser[3] = 0;
156 parser[4] = 0;
157 exports.browser[18] = parser;
158 parser = Object.create(null);
159 parser[0] = new RegExp("\\[(Pinterest)/[^\\]]+\\]");
160 parser[1] = 0;
161 parser[2] = 0;
162 parser[3] = 0;
163 parser[4] = 0;
164 exports.browser[19] = parser;
165 parser = Object.create(null);
166 parser[0] = new RegExp("(Pinterest)(?: for Android(?: Tablet)?)?/(\\d+)(?:\\.(\\d+)(?:\\.(\\d)+)?)?");
167 parser[1] = 0;
168 parser[2] = 0;
169 parser[3] = 0;
170 parser[4] = 0;
171 exports.browser[20] = parser;
172 parser = Object.create(null);
173 parser[0] = new RegExp("(Pale[Mm]oon)/(\\d+)\\.(\\d+)\\.?(\\d+)?");
174 parser[1] = "Pale Moon (Firefox Variant)";
175 parser[2] = 0;
176 parser[3] = 0;
177 parser[4] = 0;
178 exports.browser[21] = parser;
179 parser = Object.create(null);
180 parser[0] = new RegExp("(Fennec)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+[a-z]*)");
181 parser[1] = "Firefox Mobile";
182 parser[2] = 0;
183 parser[3] = 0;
184 parser[4] = 0;
185 exports.browser[22] = parser;
186 parser = Object.create(null);
187 parser[0] = new RegExp("(Fennec)/(\\d+)\\.(\\d+)(pre)");
188 parser[1] = "Firefox Mobile";
189 parser[2] = 0;
190 parser[3] = 0;
191 parser[4] = 0;
192 exports.browser[23] = parser;
193 parser = Object.create(null);
194 parser[0] = new RegExp("(Fennec)/(\\d+)\\.(\\d+)");
195 parser[1] = "Firefox Mobile";
196 parser[2] = 0;
197 parser[3] = 0;
198 parser[4] = 0;
199 exports.browser[24] = parser;
200 parser = Object.create(null);
201 parser[0] = new RegExp("(?:Mobile|Tablet);.*(Firefox)/(\\d+)\\.(\\d+)");
202 parser[1] = "Firefox Mobile";
203 parser[2] = 0;
204 parser[3] = 0;
205 parser[4] = 0;
206 exports.browser[25] = parser;
207 parser = Object.create(null);
208 parser[0] = new RegExp("(Namoroka|Shiretoko|Minefield)/(\\d+)\\.(\\d+)\\.(\\d+(?:pre)?)");
209 parser[1] = "Firefox ($1)";
210 parser[2] = 0;
211 parser[3] = 0;
212 parser[4] = 0;
213 exports.browser[26] = parser;
214 parser = Object.create(null);
215 parser[0] = new RegExp("(Firefox)/(\\d+)\\.(\\d+)(a\\d+[a-z]*)");
216 parser[1] = "Firefox Alpha";
217 parser[2] = 0;
218 parser[3] = 0;
219 parser[4] = 0;
220 exports.browser[27] = parser;
221 parser = Object.create(null);
222 parser[0] = new RegExp("(Firefox)/(\\d+)\\.(\\d+)(b\\d+[a-z]*)");
223 parser[1] = "Firefox Beta";
224 parser[2] = 0;
225 parser[3] = 0;
226 parser[4] = 0;
227 exports.browser[28] = parser;
228 parser = Object.create(null);
229 parser[0] = new RegExp("(Firefox)-(?:\\d+\\.\\d+)?/(\\d+)\\.(\\d+)(a\\d+[a-z]*)");
230 parser[1] = "Firefox Alpha";
231 parser[2] = 0;
232 parser[3] = 0;
233 parser[4] = 0;
234 exports.browser[29] = parser;
235 parser = Object.create(null);
236 parser[0] = new RegExp("(Firefox)-(?:\\d+\\.\\d+)?/(\\d+)\\.(\\d+)(b\\d+[a-z]*)");
237 parser[1] = "Firefox Beta";
238 parser[2] = 0;
239 parser[3] = 0;
240 parser[4] = 0;
241 exports.browser[30] = parser;
242 parser = Object.create(null);
243 parser[0] = new RegExp("(Namoroka|Shiretoko|Minefield)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)?");
244 parser[1] = "Firefox ($1)";
245 parser[2] = 0;
246 parser[3] = 0;
247 parser[4] = 0;
248 exports.browser[31] = parser;
249 parser = Object.create(null);
250 parser[0] = new RegExp("(Firefox).*Tablet browser (\\d+)\\.(\\d+)\\.(\\d+)");
251 parser[1] = "MicroB";
252 parser[2] = 0;
253 parser[3] = 0;
254 parser[4] = 0;
255 exports.browser[32] = parser;
256 parser = Object.create(null);
257 parser[0] = new RegExp("(MozillaDeveloperPreview)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)?");
258 parser[1] = 0;
259 parser[2] = 0;
260 parser[3] = 0;
261 parser[4] = 0;
262 exports.browser[33] = parser;
263 parser = Object.create(null);
264 parser[0] = new RegExp("(FxiOS)/(\\d+)\\.(\\d+)(\\.(\\d+))?(\\.(\\d+))?");
265 parser[1] = "Firefox iOS";
266 parser[2] = 0;
267 parser[3] = 0;
268 parser[4] = 0;
269 exports.browser[34] = parser;
270 parser = Object.create(null);
271 parser[0] = new RegExp("(Flock)/(\\d+)\\.(\\d+)(b\\d+?)");
272 parser[1] = 0;
273 parser[2] = 0;
274 parser[3] = 0;
275 parser[4] = 0;
276 exports.browser[35] = parser;
277 parser = Object.create(null);
278 parser[0] = new RegExp("(RockMelt)/(\\d+)\\.(\\d+)\\.(\\d+)");
279 parser[1] = 0;
280 parser[2] = 0;
281 parser[3] = 0;
282 parser[4] = 0;
283 exports.browser[36] = parser;
284 parser = Object.create(null);
285 parser[0] = new RegExp("(Navigator)/(\\d+)\\.(\\d+)\\.(\\d+)");
286 parser[1] = "Netscape";
287 parser[2] = 0;
288 parser[3] = 0;
289 parser[4] = 0;
290 exports.browser[37] = parser;
291 parser = Object.create(null);
292 parser[0] = new RegExp("(Navigator)/(\\d+)\\.(\\d+)([ab]\\d+)");
293 parser[1] = "Netscape";
294 parser[2] = 0;
295 parser[3] = 0;
296 parser[4] = 0;
297 exports.browser[38] = parser;
298 parser = Object.create(null);
299 parser[0] = new RegExp("(Netscape6)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+)?");
300 parser[1] = "Netscape";
301 parser[2] = 0;
302 parser[3] = 0;
303 parser[4] = 0;
304 exports.browser[39] = parser;
305 parser = Object.create(null);
306 parser[0] = new RegExp("(MyIBrow)/(\\d+)\\.(\\d+)");
307 parser[1] = "My Internet Browser";
308 parser[2] = 0;
309 parser[3] = 0;
310 parser[4] = 0;
311 exports.browser[40] = parser;
312 parser = Object.create(null);
313 parser[0] = new RegExp("(UC? ?Browser|UCWEB|U3)[ /]?(\\d+)\\.(\\d+)\\.(\\d+)");
314 parser[1] = "UC Browser";
315 parser[2] = 0;
316 parser[3] = 0;
317 parser[4] = 0;
318 exports.browser[41] = parser;
319 parser = Object.create(null);
320 parser[0] = new RegExp("(Opera Tablet).*Version/(\\d+)\\.(\\d+)(?:\\.(\\d+))?");
321 parser[1] = 0;
322 parser[2] = 0;
323 parser[3] = 0;
324 parser[4] = 0;
325 exports.browser[42] = parser;
326 parser = Object.create(null);
327 parser[0] = new RegExp("(Opera Mini)(?:/att)?/?(\\d+)?(?:\\.(\\d+))?(?:\\.(\\d+))?");
328 parser[1] = 0;
329 parser[2] = 0;
330 parser[3] = 0;
331 parser[4] = 0;
332 exports.browser[43] = parser;
333 parser = Object.create(null);
334 parser[0] = new RegExp("(Opera)/.+Opera Mobi.+Version/(\\d+)\\.(\\d+)");
335 parser[1] = "Opera Mobile";
336 parser[2] = 0;
337 parser[3] = 0;
338 parser[4] = 0;
339 exports.browser[44] = parser;
340 parser = Object.create(null);
341 parser[0] = new RegExp("(Opera)/(\\d+)\\.(\\d+).+Opera Mobi");
342 parser[1] = "Opera Mobile";
343 parser[2] = 0;
344 parser[3] = 0;
345 parser[4] = 0;
346 exports.browser[45] = parser;
347 parser = Object.create(null);
348 parser[0] = new RegExp("Opera Mobi.+(Opera)(?:/|\\s+)(\\d+)\\.(\\d+)");
349 parser[1] = "Opera Mobile";
350 parser[2] = 0;
351 parser[3] = 0;
352 parser[4] = 0;
353 exports.browser[46] = parser;
354 parser = Object.create(null);
355 parser[0] = new RegExp("Opera Mobi");
356 parser[1] = "Opera Mobile";
357 parser[2] = 0;
358 parser[3] = 0;
359 parser[4] = 0;
360 exports.browser[47] = parser;
361 parser = Object.create(null);
362 parser[0] = new RegExp("(Opera)/9.80.*Version/(\\d+)\\.(\\d+)(?:\\.(\\d+))?");
363 parser[1] = 0;
364 parser[2] = 0;
365 parser[3] = 0;
366 parser[4] = 0;
367 exports.browser[48] = parser;
368 parser = Object.create(null);
369 parser[0] = new RegExp("(?:Mobile Safari).*(OPR)/(\\d+)\\.(\\d+)\\.(\\d+)");
370 parser[1] = "Opera Mobile";
371 parser[2] = 0;
372 parser[3] = 0;
373 parser[4] = 0;
374 exports.browser[49] = parser;
375 parser = Object.create(null);
376 parser[0] = new RegExp("(?:Chrome).*(OPR)/(\\d+)\\.(\\d+)\\.(\\d+)");
377 parser[1] = "Opera";
378 parser[2] = 0;
379 parser[3] = 0;
380 parser[4] = 0;
381 exports.browser[50] = parser;
382 parser = Object.create(null);
383 parser[0] = new RegExp("(Coast)/(\\d+).(\\d+).(\\d+)");
384 parser[1] = "Opera Coast";
385 parser[2] = 0;
386 parser[3] = 0;
387 parser[4] = 0;
388 exports.browser[51] = parser;
389 parser = Object.create(null);
390 parser[0] = new RegExp("(OPiOS)/(\\d+).(\\d+).(\\d+)");
391 parser[1] = "Opera Mini";
392 parser[2] = 0;
393 parser[3] = 0;
394 parser[4] = 0;
395 exports.browser[52] = parser;
396 parser = Object.create(null);
397 parser[0] = new RegExp("Chrome/.+( MMS)/(\\d+).(\\d+).(\\d+)");
398 parser[1] = "Opera Neon";
399 parser[2] = 0;
400 parser[3] = 0;
401 parser[4] = 0;
402 exports.browser[53] = parser;
403 parser = Object.create(null);
404 parser[0] = new RegExp("(hpw|web)OS/(\\d+)\\.(\\d+)(?:\\.(\\d+))?");
405 parser[1] = "webOS Browser";
406 parser[2] = 0;
407 parser[3] = 0;
408 parser[4] = 0;
409 exports.browser[54] = parser;
410 parser = Object.create(null);
411 parser[0] = new RegExp("(luakit)");
412 parser[1] = "LuaKit";
413 parser[2] = 0;
414 parser[3] = 0;
415 parser[4] = 0;
416 exports.browser[55] = parser;
417 parser = Object.create(null);
418 parser[0] = new RegExp("(Snowshoe)/(\\d+)\\.(\\d+).(\\d+)");
419 parser[1] = 0;
420 parser[2] = 0;
421 parser[3] = 0;
422 parser[4] = 0;
423 exports.browser[56] = parser;
424 parser = Object.create(null);
425 parser[0] = new RegExp("Gecko/\\d+ (Lightning)/(\\d+)\\.(\\d+)\\.?((?:[ab]?\\d+[a-z]*)|(?:\\d*))");
426 parser[1] = 0;
427 parser[2] = 0;
428 parser[3] = 0;
429 parser[4] = 0;
430 exports.browser[57] = parser;
431 parser = Object.create(null);
432 parser[0] = new RegExp("(Firefox)/(\\d+)\\.(\\d+)\\.(\\d+(?:pre)?) \\(Swiftfox\\)");
433 parser[1] = "Swiftfox";
434 parser[2] = 0;
435 parser[3] = 0;
436 parser[4] = 0;
437 exports.browser[58] = parser;
438 parser = Object.create(null);
439 parser[0] = new RegExp("(Firefox)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)? \\(Swiftfox\\)");
440 parser[1] = "Swiftfox";
441 parser[2] = 0;
442 parser[3] = 0;
443 parser[4] = 0;
444 exports.browser[59] = parser;
445 parser = Object.create(null);
446 parser[0] = new RegExp("(rekonq)/(\\d+)\\.(\\d+)\\.?(\\d+)? Safari");
447 parser[1] = "Rekonq";
448 parser[2] = 0;
449 parser[3] = 0;
450 parser[4] = 0;
451 exports.browser[60] = parser;
452 parser = Object.create(null);
453 parser[0] = new RegExp("rekonq");
454 parser[1] = "Rekonq";
455 parser[2] = 0;
456 parser[3] = 0;
457 parser[4] = 0;
458 exports.browser[61] = parser;
459 parser = Object.create(null);
460 parser[0] = new RegExp("(conkeror|Conkeror)/(\\d+)\\.(\\d+)\\.?(\\d+)?");
461 parser[1] = "Conkeror";
462 parser[2] = 0;
463 parser[3] = 0;
464 parser[4] = 0;
465 exports.browser[62] = parser;
466 parser = Object.create(null);
467 parser[0] = new RegExp("(konqueror)/(\\d+)\\.(\\d+)\\.(\\d+)");
468 parser[1] = "Konqueror";
469 parser[2] = 0;
470 parser[3] = 0;
471 parser[4] = 0;
472 exports.browser[63] = parser;
473 parser = Object.create(null);
474 parser[0] = new RegExp("(WeTab)-Browser");
475 parser[1] = 0;
476 parser[2] = 0;
477 parser[3] = 0;
478 parser[4] = 0;
479 exports.browser[64] = parser;
480 parser = Object.create(null);
481 parser[0] = new RegExp("(Comodo_Dragon)/(\\d+)\\.(\\d+)\\.(\\d+)");
482 parser[1] = "Comodo Dragon";
483 parser[2] = 0;
484 parser[3] = 0;
485 parser[4] = 0;
486 exports.browser[65] = parser;
487 parser = Object.create(null);
488 parser[0] = new RegExp("(Symphony) (\\d+).(\\d+)");
489 parser[1] = 0;
490 parser[2] = 0;
491 parser[3] = 0;
492 parser[4] = 0;
493 exports.browser[66] = parser;
494 parser = Object.create(null);
495 parser[0] = new RegExp("PLAYSTATION 3.+WebKit");
496 parser[1] = "NetFront NX";
497 parser[2] = 0;
498 parser[3] = 0;
499 parser[4] = 0;
500 exports.browser[67] = parser;
501 parser = Object.create(null);
502 parser[0] = new RegExp("PLAYSTATION 3");
503 parser[1] = "NetFront";
504 parser[2] = 0;
505 parser[3] = 0;
506 parser[4] = 0;
507 exports.browser[68] = parser;
508 parser = Object.create(null);
509 parser[0] = new RegExp("(PlayStation Portable)");
510 parser[1] = "NetFront";
511 parser[2] = 0;
512 parser[3] = 0;
513 parser[4] = 0;
514 exports.browser[69] = parser;
515 parser = Object.create(null);
516 parser[0] = new RegExp("(PlayStation Vita)");
517 parser[1] = "NetFront NX";
518 parser[2] = 0;
519 parser[3] = 0;
520 parser[4] = 0;
521 exports.browser[70] = parser;
522 parser = Object.create(null);
523 parser[0] = new RegExp("AppleWebKit.+ (NX)/(\\d+)\\.(\\d+)\\.(\\d+)");
524 parser[1] = "NetFront NX";
525 parser[2] = 0;
526 parser[3] = 0;
527 parser[4] = 0;
528 exports.browser[71] = parser;
529 parser = Object.create(null);
530 parser[0] = new RegExp("(Nintendo 3DS)");
531 parser[1] = "NetFront NX";
532 parser[2] = 0;
533 parser[3] = 0;
534 parser[4] = 0;
535 exports.browser[72] = parser;
536 parser = Object.create(null);
537 parser[0] = new RegExp("(Silk)/(\\d+)\\.(\\d+)(?:\\.([0-9\\-]+))?");
538 parser[1] = "Amazon Silk";
539 parser[2] = 0;
540 parser[3] = 0;
541 parser[4] = 0;
542 exports.browser[73] = parser;
543 parser = Object.create(null);
544 parser[0] = new RegExp("(Puffin)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?");
545 parser[1] = 0;
546 parser[2] = 0;
547 parser[3] = 0;
548 parser[4] = 0;
549 exports.browser[74] = parser;
550 parser = Object.create(null);
551 parser[0] = new RegExp("Windows Phone .*(Edge)/(\\d+)\\.(\\d+)");
552 parser[1] = "Edge Mobile";
553 parser[2] = 0;
554 parser[3] = 0;
555 parser[4] = 0;
556 exports.browser[75] = parser;
557 parser = Object.create(null);
558 parser[0] = new RegExp("(SamsungBrowser)/(\\d+)\\.(\\d+)");
559 parser[1] = "Samsung Internet";
560 parser[2] = 0;
561 parser[3] = 0;
562 parser[4] = 0;
563 exports.browser[76] = parser;
564 parser = Object.create(null);
565 parser[0] = new RegExp("(baidubrowser)[/\\s](\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?");
566 parser[1] = "Baidu Browser";
567 parser[2] = 0;
568 parser[3] = 0;
569 parser[4] = 0;
570 exports.browser[77] = parser;
571 parser = Object.create(null);
572 parser[0] = new RegExp("(FlyFlow)/(\\d+)\\.(\\d+)");
573 parser[1] = "Baidu Explorer";
574 parser[2] = 0;
575 parser[3] = 0;
576 parser[4] = 0;
577 exports.browser[78] = parser;
578 parser = Object.create(null);
579 parser[0] = new RegExp("(CrMo)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)");
580 parser[1] = "Chrome Mobile";
581 parser[2] = 0;
582 parser[3] = 0;
583 parser[4] = 0;
584 exports.browser[79] = parser;
585 parser = Object.create(null);
586 parser[0] = new RegExp("(CriOS)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)");
587 parser[1] = "Chrome Mobile iOS";
588 parser[2] = 0;
589 parser[3] = 0;
590 parser[4] = 0;
591 exports.browser[80] = parser;
592 parser = Object.create(null);
593 parser[0] = new RegExp("(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+) Mobile(?:[ /]|$)");
594 parser[1] = "Chrome Mobile";
595 parser[2] = 0;
596 parser[3] = 0;
597 parser[4] = 0;
598 exports.browser[81] = parser;
599 parser = Object.create(null);
600 parser[0] = new RegExp(" Mobile .*(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)");
601 parser[1] = "Chrome Mobile";
602 parser[2] = 0;
603 parser[3] = 0;
604 parser[4] = 0;
605 exports.browser[82] = parser;
606 parser = Object.create(null);
607 parser[0] = new RegExp("(chromeframe)/(\\d+)\\.(\\d+)\\.(\\d+)");
608 parser[1] = "Chrome Frame";
609 parser[2] = 0;
610 parser[3] = 0;
611 parser[4] = 0;
612 exports.browser[83] = parser;
613 parser = Object.create(null);
614 parser[0] = new RegExp("(SLP Browser)/(\\d+)\\.(\\d+)");
615 parser[1] = "Tizen Browser";
616 parser[2] = 0;
617 parser[3] = 0;
618 parser[4] = 0;
619 exports.browser[84] = parser;
620 parser = Object.create(null);
621 parser[0] = new RegExp("(SE 2\\.X) MetaSr (\\d+)\\.(\\d+)");
622 parser[1] = "Sogou Explorer";
623 parser[2] = 0;
624 parser[3] = 0;
625 parser[4] = 0;
626 exports.browser[85] = parser;
627 parser = Object.create(null);
628 parser[0] = new RegExp("(MQQBrowser/Mini)(?:(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?");
629 parser[1] = "QQ Browser Mini";
630 parser[2] = 0;
631 parser[3] = 0;
632 parser[4] = 0;
633 exports.browser[86] = parser;
634 parser = Object.create(null);
635 parser[0] = new RegExp("(MQQBrowser)(?:/(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?");
636 parser[1] = "QQ Browser Mobile";
637 parser[2] = 0;
638 parser[3] = 0;
639 parser[4] = 0;
640 exports.browser[87] = parser;
641 parser = Object.create(null);
642 parser[0] = new RegExp("(QQBrowser)(?:/(\\d+)(?:\\.(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?)?");
643 parser[1] = "QQ Browser";
644 parser[2] = 0;
645 parser[3] = 0;
646 parser[4] = 0;
647 exports.browser[88] = parser;
648 parser = Object.create(null);
649 parser[0] = new RegExp("(Rackspace Monitoring)/(\\d+)\\.(\\d+)");
650 parser[1] = "RackspaceBot";
651 parser[2] = 0;
652 parser[3] = 0;
653 parser[4] = 0;
654 exports.browser[89] = parser;
655 parser = Object.create(null);
656 parser[0] = new RegExp("(PyAMF)/(\\d+)\\.(\\d+)\\.(\\d+)");
657 parser[1] = 0;
658 parser[2] = 0;
659 parser[3] = 0;
660 parser[4] = 0;
661 exports.browser[90] = parser;
662 parser = Object.create(null);
663 parser[0] = new RegExp("(YaBrowser)/(\\d+)\\.(\\d+)\\.(\\d+)");
664 parser[1] = "Yandex Browser";
665 parser[2] = 0;
666 parser[3] = 0;
667 parser[4] = 0;
668 exports.browser[91] = parser;
669 parser = Object.create(null);
670 parser[0] = new RegExp("(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+).* MRCHROME");
671 parser[1] = "Mail.ru Chromium Browser";
672 parser[2] = 0;
673 parser[3] = 0;
674 parser[4] = 0;
675 exports.browser[92] = parser;
676 parser = Object.create(null);
677 parser[0] = new RegExp("(AOL) (\\d+)\\.(\\d+); AOLBuild (\\d+)");
678 parser[1] = 0;
679 parser[2] = 0;
680 parser[3] = 0;
681 parser[4] = 0;
682 exports.browser[93] = parser;
683 parser = Object.create(null);
684 parser[0] = new RegExp("(MxBrowser)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?");
685 parser[1] = "Maxthon";
686 parser[2] = 0;
687 parser[3] = 0;
688 parser[4] = 0;
689 exports.browser[94] = parser;
690 parser = Object.create(null);
691 parser[0] = new RegExp("\\b(MobileIron|Crosswalk|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Epiphany|Shiira|Sunrise|Spotify|Flock|Netscape|Lunascape|WebPilot|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iris|UP\\.Browser|Bunjalloo|Google Earth|Raven for Mac|Openwave|MacOutlook|Electron)/(\\d+)\\.(\\d+)\\.(\\d+)");
692 parser[1] = 0;
693 parser[2] = 0;
694 parser[3] = 0;
695 parser[4] = 0;
696 exports.browser[95] = parser;
697 parser = Object.create(null);
698 parser[0] = new RegExp("Microsoft Office Outlook 12\\.\\d+\\.\\d+|MSOffice 12");
699 parser[1] = "Outlook";
700 parser[2] = "2007";
701 parser[3] = 0;
702 parser[4] = 0;
703 exports.browser[96] = parser;
704 parser = Object.create(null);
705 parser[0] = new RegExp("Microsoft Outlook 14\\.\\d+\\.\\d+|MSOffice 14");
706 parser[1] = "Outlook";
707 parser[2] = "2010";
708 parser[3] = 0;
709 parser[4] = 0;
710 exports.browser[97] = parser;
711 parser = Object.create(null);
712 parser[0] = new RegExp("Microsoft Outlook 15\\.\\d+\\.\\d+");
713 parser[1] = "Outlook";
714 parser[2] = "2013";
715 parser[3] = 0;
716 parser[4] = 0;
717 exports.browser[98] = parser;
718 parser = Object.create(null);
719 parser[0] = new RegExp("Microsoft Outlook (?:Mail )?16\\.\\d+\\.\\d+");
720 parser[1] = "Outlook";
721 parser[2] = "2016";
722 parser[3] = 0;
723 parser[4] = 0;
724 exports.browser[99] = parser;
725 parser = Object.create(null);
726 parser[0] = new RegExp("Outlook-Express\\/7\\.0.*");
727 parser[1] = "Windows Live Mail";
728 parser[2] = 0;
729 parser[3] = 0;
730 parser[4] = 0;
731 exports.browser[100] = parser;
732 parser = Object.create(null);
733 parser[0] = new RegExp("(Airmail) (\\d+)\\.(\\d+)(?:\\.(\\d+))?");
734 parser[1] = 0;
735 parser[2] = 0;
736 parser[3] = 0;
737 parser[4] = 0;
738 exports.browser[101] = parser;
739 parser = Object.create(null);
740 parser[0] = new RegExp("(Thunderbird)/(\\d+)\\.(\\d+)(?:\\.(\\d+(?:pre)?))?");
741 parser[1] = "Thunderbird";
742 parser[2] = 0;
743 parser[3] = 0;
744 parser[4] = 0;
745 exports.browser[102] = parser;
746 parser = Object.create(null);
747 parser[0] = new RegExp("(Postbox)/(\\d+)\\.(\\d+)\\.(\\d+)");
748 parser[1] = "Postbox";
749 parser[2] = 0;
750 parser[3] = 0;
751 parser[4] = 0;
752 exports.browser[103] = parser;
753 parser = Object.create(null);
754 parser[0] = new RegExp("(Barca(?:Pro)?)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?");
755 parser[1] = "Barca";
756 parser[2] = 0;
757 parser[3] = 0;
758 parser[4] = 0;
759 exports.browser[104] = parser;
760 parser = Object.create(null);
761 parser[0] = new RegExp("(Lotus-Notes)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?");
762 parser[1] = "Lotus Notes";
763 parser[2] = 0;
764 parser[3] = 0;
765 parser[4] = 0;
766 exports.browser[105] = parser;
767 parser = Object.create(null);
768 parser[0] = new RegExp("(Vivaldi)/(\\d+)\\.(\\d+)\\.(\\d+)");
769 parser[1] = 0;
770 parser[2] = 0;
771 parser[3] = 0;
772 parser[4] = 0;
773 exports.browser[106] = parser;
774 parser = Object.create(null);
775 parser[0] = new RegExp("(Edge)/(\\d+)\\.(\\d+)");
776 parser[1] = 0;
777 parser[2] = 0;
778 parser[3] = 0;
779 parser[4] = 0;
780 exports.browser[107] = parser;
781 parser = Object.create(null);
782 parser[0] = new RegExp("(brave)/(\\d+)\\.(\\d+)\\.(\\d+) Chrome");
783 parser[1] = "Brave";
784 parser[2] = 0;
785 parser[3] = 0;
786 parser[4] = 0;
787 exports.browser[108] = parser;
788 parser = Object.create(null);
789 parser[0] = new RegExp("(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)[\\d.]* Iron[^/]");
790 parser[1] = "Iron";
791 parser[2] = 0;
792 parser[3] = 0;
793 parser[4] = 0;
794 exports.browser[109] = parser;
795 parser = Object.create(null);
796 parser[0] = new RegExp("\\b(Dolphin)(?: |HDCN/|/INT\\-)(\\d+)\\.(\\d+)\\.?(\\d+)?");
797 parser[1] = 0;
798 parser[2] = 0;
799 parser[3] = 0;
800 parser[4] = 0;
801 exports.browser[110] = parser;
802 parser = Object.create(null);
803 parser[0] = new RegExp("(bingbot|Bolt|AdobeAIR|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|iTunes|MacAppStore|NetNewsWire|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo|Tizen Browser|Polaris|Abrowser|Planetweb|ICE Browser|mDolphin|qutebrowser|Otter|QupZilla|MailBar|kmail2|YahooMobileMail|ExchangeWebServices|ExchangeServicesClient|Dragon|Outlook-iOS-Android)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?");
804 parser[1] = 0;
805 parser[2] = 0;
806 parser[3] = 0;
807 parser[4] = 0;
808 exports.browser[111] = parser;
809 parser = Object.create(null);
810 parser[0] = new RegExp("(Chromium|Chrome)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?");
811 parser[1] = 0;
812 parser[2] = 0;
813 parser[3] = 0;
814 parser[4] = 0;
815 exports.browser[112] = parser;
816 parser = Object.create(null);
817 parser[0] = new RegExp("(IEMobile)[ /](\\d+)\\.(\\d+)");
818 parser[1] = "IE Mobile";
819 parser[2] = 0;
820 parser[3] = 0;
821 parser[4] = 0;
822 exports.browser[113] = parser;
823 parser = Object.create(null);
824 parser[0] = new RegExp("(BacaBerita App)\\/(\\d+)\\.(\\d+)\\.(\\d+)");
825 parser[1] = 0;
826 parser[2] = 0;
827 parser[3] = 0;
828 parser[4] = 0;
829 exports.browser[114] = parser;
830 parser = Object.create(null);
831 parser[0] = new RegExp("(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\\d+)\\.(\\d+)\\.(\\d+)");
832 parser[1] = 0;
833 parser[2] = 0;
834 parser[3] = 0;
835 parser[4] = 0;
836 exports.browser[115] = parser;
837 parser = Object.create(null);
838 parser[0] = new RegExp("(iCab|Lunascape|Opera|Android|Jasmine|Polaris|Microsoft SkyDriveSync|The Bat!) (\\d+)\\.(\\d+)\\.?(\\d+)?");
839 parser[1] = 0;
840 parser[2] = 0;
841 parser[3] = 0;
842 parser[4] = 0;
843 exports.browser[116] = parser;
844 parser = Object.create(null);
845 parser[0] = new RegExp("(Kindle)/(\\d+)\\.(\\d+)");
846 parser[1] = 0;
847 parser[2] = 0;
848 parser[3] = 0;
849 parser[4] = 0;
850 exports.browser[117] = parser;
851 parser = Object.create(null);
852 parser[0] = new RegExp("(Android) Donut");
853 parser[1] = 0;
854 parser[2] = "1";
855 parser[3] = "2";
856 parser[4] = 0;
857 exports.browser[118] = parser;
858 parser = Object.create(null);
859 parser[0] = new RegExp("(Android) Eclair");
860 parser[1] = 0;
861 parser[2] = "2";
862 parser[3] = "1";
863 parser[4] = 0;
864 exports.browser[119] = parser;
865 parser = Object.create(null);
866 parser[0] = new RegExp("(Android) Froyo");
867 parser[1] = 0;
868 parser[2] = "2";
869 parser[3] = "2";
870 parser[4] = 0;
871 exports.browser[120] = parser;
872 parser = Object.create(null);
873 parser[0] = new RegExp("(Android) Gingerbread");
874 parser[1] = 0;
875 parser[2] = "2";
876 parser[3] = "3";
877 parser[4] = 0;
878 exports.browser[121] = parser;
879 parser = Object.create(null);
880 parser[0] = new RegExp("(Android) Honeycomb");
881 parser[1] = 0;
882 parser[2] = "3";
883 parser[3] = 0;
884 parser[4] = 0;
885 exports.browser[122] = parser;
886 parser = Object.create(null);
887 parser[0] = new RegExp("(MSIE) (\\d+)\\.(\\d+).*XBLWP7");
888 parser[1] = "IE Large Screen";
889 parser[2] = 0;
890 parser[3] = 0;
891 parser[4] = 0;
892 exports.browser[123] = parser;
893 parser = Object.create(null);
894 parser[0] = new RegExp("(Slack_SSB)/(\\d+)\\.(\\d+)\\.(\\d+)");
895 parser[1] = "Slack Desktop Client";
896 parser[2] = 0;
897 parser[3] = 0;
898 parser[4] = 0;
899 exports.browser[124] = parser;
900 parser = Object.create(null);
901 parser[0] = new RegExp("(Obigo)InternetBrowser");
902 parser[1] = 0;
903 parser[2] = 0;
904 parser[3] = 0;
905 parser[4] = 0;
906 exports.browser[125] = parser;
907 parser = Object.create(null);
908 parser[0] = new RegExp("(Obigo)\\-Browser");
909 parser[1] = 0;
910 parser[2] = 0;
911 parser[3] = 0;
912 parser[4] = 0;
913 exports.browser[126] = parser;
914 parser = Object.create(null);
915 parser[0] = new RegExp("(Obigo|OBIGO)[^\\d]*(\\d+)(?:.(\\d+))?");
916 parser[1] = "Obigo";
917 parser[2] = 0;
918 parser[3] = 0;
919 parser[4] = 0;
920 exports.browser[127] = parser;
921 parser = Object.create(null);
922 parser[0] = new RegExp("(MAXTHON|Maxthon) (\\d+)\\.(\\d+)");
923 parser[1] = "Maxthon";
924 parser[2] = 0;
925 parser[3] = 0;
926 parser[4] = 0;
927 exports.browser[128] = parser;
928 parser = Object.create(null);
929 parser[0] = new RegExp("(Maxthon|MyIE2|Uzbl|Shiira)");
930 parser[1] = 0;
931 parser[2] = "0";
932 parser[3] = 0;
933 parser[4] = 0;
934 exports.browser[129] = parser;
935 parser = Object.create(null);
936 parser[0] = new RegExp("(BrowseX) \\((\\d+)\\.(\\d+)\\.(\\d+)");
937 parser[1] = 0;
938 parser[2] = 0;
939 parser[3] = 0;
940 parser[4] = 0;
941 exports.browser[130] = parser;
942 parser = Object.create(null);
943 parser[0] = new RegExp("(NCSA_Mosaic)/(\\d+)\\.(\\d+)");
944 parser[1] = "NCSA Mosaic";
945 parser[2] = 0;
946 parser[3] = 0;
947 parser[4] = 0;
948 exports.browser[131] = parser;
949 parser = Object.create(null);
950 parser[0] = new RegExp("(POLARIS)/(\\d+)\\.(\\d+)");
951 parser[1] = "Polaris";
952 parser[2] = 0;
953 parser[3] = 0;
954 parser[4] = 0;
955 exports.browser[132] = parser;
956 parser = Object.create(null);
957 parser[0] = new RegExp("(Embider)/(\\d+)\\.(\\d+)");
958 parser[1] = "Polaris";
959 parser[2] = 0;
960 parser[3] = 0;
961 parser[4] = 0;
962 exports.browser[133] = parser;
963 parser = Object.create(null);
964 parser[0] = new RegExp("(BonEcho)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+)?");
965 parser[1] = "Bon Echo";
966 parser[2] = 0;
967 parser[3] = 0;
968 parser[4] = 0;
969 exports.browser[134] = parser;
970 parser = Object.create(null);
971 parser[0] = new RegExp("(iPod|iPhone|iPad).+Version/(\\d+)\\.(\\d+)(?:\\.(\\d+))?.*[ +]Safari");
972 parser[1] = "Mobile Safari";
973 parser[2] = 0;
974 parser[3] = 0;
975 parser[4] = 0;
976 exports.browser[135] = parser;
977 parser = Object.create(null);
978 parser[0] = new RegExp("(iPod|iPhone|iPad).+Version/(\\d+)\\.(\\d+)(?:\\.(\\d+))?");
979 parser[1] = "Mobile Safari UI/WKWebView";
980 parser[2] = 0;
981 parser[3] = 0;
982 parser[4] = 0;
983 exports.browser[136] = parser;
984 parser = Object.create(null);
985 parser[0] = new RegExp("(iPod|iPod touch|iPhone|iPad);.*CPU.*OS[ +](\\d+)_(\\d+)(?:_(\\d+))?.*Mobile.*[ +]Safari");
986 parser[1] = "Mobile Safari";
987 parser[2] = 0;
988 parser[3] = 0;
989 parser[4] = 0;
990 exports.browser[137] = parser;
991 parser = Object.create(null);
992 parser[0] = new RegExp("(iPod|iPod touch|iPhone|iPad);.*CPU.*OS[ +](\\d+)_(\\d+)(?:_(\\d+))?.*Mobile");
993 parser[1] = "Mobile Safari UI/WKWebView";
994 parser[2] = 0;
995 parser[3] = 0;
996 parser[4] = 0;
997 exports.browser[138] = parser;
998 parser = Object.create(null);
999 parser[0] = new RegExp("(iPod|iPhone|iPad).* Safari");
1000 parser[1] = "Mobile Safari";
1001 parser[2] = 0;
1002 parser[3] = 0;
1003 parser[4] = 0;
1004 exports.browser[139] = parser;
1005 parser = Object.create(null);
1006 parser[0] = new RegExp("(iPod|iPhone|iPad)");
1007 parser[1] = "Mobile Safari UI/WKWebView";
1008 parser[2] = 0;
1009 parser[3] = 0;
1010 parser[4] = 0;
1011 exports.browser[140] = parser;
1012 parser = Object.create(null);
1013 parser[0] = new RegExp("(AvantGo) (\\d+).(\\d+)");
1014 parser[1] = 0;
1015 parser[2] = 0;
1016 parser[3] = 0;
1017 parser[4] = 0;
1018 exports.browser[141] = parser;
1019 parser = Object.create(null);
1020 parser[0] = new RegExp("(OneBrowser)/(\\d+).(\\d+)");
1021 parser[1] = "ONE Browser";
1022 parser[2] = 0;
1023 parser[3] = 0;
1024 parser[4] = 0;
1025 exports.browser[142] = parser;
1026 parser = Object.create(null);
1027 parser[0] = new RegExp("(Avant)");
1028 parser[1] = 0;
1029 parser[2] = "1";
1030 parser[3] = 0;
1031 parser[4] = 0;
1032 exports.browser[143] = parser;
1033 parser = Object.create(null);
1034 parser[0] = new RegExp("(QtCarBrowser)");
1035 parser[1] = 0;
1036 parser[2] = "1";
1037 parser[3] = 0;
1038 parser[4] = 0;
1039 exports.browser[144] = parser;
1040 parser = Object.create(null);
1041 parser[0] = new RegExp("^(iBrowser/Mini)(\\d+).(\\d+)");
1042 parser[1] = "iBrowser Mini";
1043 parser[2] = 0;
1044 parser[3] = 0;
1045 parser[4] = 0;
1046 exports.browser[145] = parser;
1047 parser = Object.create(null);
1048 parser[0] = new RegExp("^(iBrowser|iRAPP)/(\\d+).(\\d+)");
1049 parser[1] = 0;
1050 parser[2] = 0;
1051 parser[3] = 0;
1052 parser[4] = 0;
1053 exports.browser[146] = parser;
1054 parser = Object.create(null);
1055 parser[0] = new RegExp("^(Nokia)");
1056 parser[1] = "Nokia Services (WAP) Browser";
1057 parser[2] = 0;
1058 parser[3] = 0;
1059 parser[4] = 0;
1060 exports.browser[147] = parser;
1061 parser = Object.create(null);
1062 parser[0] = new RegExp("(NokiaBrowser)/(\\d+)\\.(\\d+).(\\d+)\\.(\\d+)");
1063 parser[1] = "Nokia Browser";
1064 parser[2] = 0;
1065 parser[3] = 0;
1066 parser[4] = 0;
1067 exports.browser[148] = parser;
1068 parser = Object.create(null);
1069 parser[0] = new RegExp("(NokiaBrowser)/(\\d+)\\.(\\d+).(\\d+)");
1070 parser[1] = "Nokia Browser";
1071 parser[2] = 0;
1072 parser[3] = 0;
1073 parser[4] = 0;
1074 exports.browser[149] = parser;
1075 parser = Object.create(null);
1076 parser[0] = new RegExp("(NokiaBrowser)/(\\d+)\\.(\\d+)");
1077 parser[1] = "Nokia Browser";
1078 parser[2] = 0;
1079 parser[3] = 0;
1080 parser[4] = 0;
1081 exports.browser[150] = parser;
1082 parser = Object.create(null);
1083 parser[0] = new RegExp("(BrowserNG)/(\\d+)\\.(\\d+).(\\d+)");
1084 parser[1] = "Nokia Browser";
1085 parser[2] = 0;
1086 parser[3] = 0;
1087 parser[4] = 0;
1088 exports.browser[151] = parser;
1089 parser = Object.create(null);
1090 parser[0] = new RegExp("(Series60)/5\\.0");
1091 parser[1] = "Nokia Browser";
1092 parser[2] = "7";
1093 parser[3] = "0";
1094 parser[4] = 0;
1095 exports.browser[152] = parser;
1096 parser = Object.create(null);
1097 parser[0] = new RegExp("(Series60)/(\\d+)\\.(\\d+)");
1098 parser[1] = "Nokia OSS Browser";
1099 parser[2] = 0;
1100 parser[3] = 0;
1101 parser[4] = 0;
1102 exports.browser[153] = parser;
1103 parser = Object.create(null);
1104 parser[0] = new RegExp("(S40OviBrowser)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)");
1105 parser[1] = "Ovi Browser";
1106 parser[2] = 0;
1107 parser[3] = 0;
1108 parser[4] = 0;
1109 exports.browser[154] = parser;
1110 parser = Object.create(null);
1111 parser[0] = new RegExp("(Nokia)[EN]?(\\d+)");
1112 parser[1] = 0;
1113 parser[2] = 0;
1114 parser[3] = 0;
1115 parser[4] = 0;
1116 exports.browser[155] = parser;
1117 parser = Object.create(null);
1118 parser[0] = new RegExp("(PlayBook).+RIM Tablet OS (\\d+)\\.(\\d+)\\.(\\d+)");
1119 parser[1] = "BlackBerry WebKit";
1120 parser[2] = 0;
1121 parser[3] = 0;
1122 parser[4] = 0;
1123 exports.browser[156] = parser;
1124 parser = Object.create(null);
1125 parser[0] = new RegExp("(Black[bB]erry|BB10).+Version/(\\d+)\\.(\\d+)\\.(\\d+)");
1126 parser[1] = "BlackBerry WebKit";
1127 parser[2] = 0;
1128 parser[3] = 0;
1129 parser[4] = 0;
1130 exports.browser[157] = parser;
1131 parser = Object.create(null);
1132 parser[0] = new RegExp("(Black[bB]erry)\\s?(\\d+)");
1133 parser[1] = "BlackBerry";
1134 parser[2] = 0;
1135 parser[3] = 0;
1136 parser[4] = 0;
1137 exports.browser[158] = parser;
1138 parser = Object.create(null);
1139 parser[0] = new RegExp("(OmniWeb)/v(\\d+)\\.(\\d+)");
1140 parser[1] = 0;
1141 parser[2] = 0;
1142 parser[3] = 0;
1143 parser[4] = 0;
1144 exports.browser[159] = parser;
1145 parser = Object.create(null);
1146 parser[0] = new RegExp("(Blazer)/(\\d+)\\.(\\d+)");
1147 parser[1] = "Palm Blazer";
1148 parser[2] = 0;
1149 parser[3] = 0;
1150 parser[4] = 0;
1151 exports.browser[160] = parser;
1152 parser = Object.create(null);
1153 parser[0] = new RegExp("(Pre)/(\\d+)\\.(\\d+)");
1154 parser[1] = "Palm Pre";
1155 parser[2] = 0;
1156 parser[3] = 0;
1157 parser[4] = 0;
1158 exports.browser[161] = parser;
1159 parser = Object.create(null);
1160 parser[0] = new RegExp("(ELinks)/(\\d+)\\.(\\d+)");
1161 parser[1] = 0;
1162 parser[2] = 0;
1163 parser[3] = 0;
1164 parser[4] = 0;
1165 exports.browser[162] = parser;
1166 parser = Object.create(null);
1167 parser[0] = new RegExp("(ELinks) \\((\\d+)\\.(\\d+)");
1168 parser[1] = 0;
1169 parser[2] = 0;
1170 parser[3] = 0;
1171 parser[4] = 0;
1172 exports.browser[163] = parser;
1173 parser = Object.create(null);
1174 parser[0] = new RegExp("(Links) \\((\\d+)\\.(\\d+)");
1175 parser[1] = 0;
1176 parser[2] = 0;
1177 parser[3] = 0;
1178 parser[4] = 0;
1179 exports.browser[164] = parser;
1180 parser = Object.create(null);
1181 parser[0] = new RegExp("(QtWeb) Internet Browser/(\\d+)\\.(\\d+)");
1182 parser[1] = 0;
1183 parser[2] = 0;
1184 parser[3] = 0;
1185 parser[4] = 0;
1186 exports.browser[165] = parser;
1187 parser = Object.create(null);
1188 parser[0] = new RegExp("(PhantomJS)/(\\d+)\\.(\\d+)\\.(\\d+)");
1189 parser[1] = 0;
1190 parser[2] = 0;
1191 parser[3] = 0;
1192 parser[4] = 0;
1193 exports.browser[166] = parser;
1194 parser = Object.create(null);
1195 parser[0] = new RegExp("(AppleWebKit)/(\\d+)\\.?(\\d+)?\\+ .* Safari");
1196 parser[1] = "WebKit Nightly";
1197 parser[2] = 0;
1198 parser[3] = 0;
1199 parser[4] = 0;
1200 exports.browser[167] = parser;
1201 parser = Object.create(null);
1202 parser[0] = new RegExp("(Version)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?.*Safari/");
1203 parser[1] = "Safari";
1204 parser[2] = 0;
1205 parser[3] = 0;
1206 parser[4] = 0;
1207 exports.browser[168] = parser;
1208 parser = Object.create(null);
1209 parser[0] = new RegExp("(Safari)/\\d+");
1210 parser[1] = 0;
1211 parser[2] = 0;
1212 parser[3] = 0;
1213 parser[4] = 0;
1214 exports.browser[169] = parser;
1215 parser = Object.create(null);
1216 parser[0] = new RegExp("(OLPC)/Update(\\d+)\\.(\\d+)");
1217 parser[1] = 0;
1218 parser[2] = 0;
1219 parser[3] = 0;
1220 parser[4] = 0;
1221 exports.browser[170] = parser;
1222 parser = Object.create(null);
1223 parser[0] = new RegExp("(OLPC)/Update()\\.(\\d+)");
1224 parser[1] = 0;
1225 parser[2] = "0";
1226 parser[3] = 0;
1227 parser[4] = 0;
1228 exports.browser[171] = parser;
1229 parser = Object.create(null);
1230 parser[0] = new RegExp("(SEMC\\-Browser)/(\\d+)\\.(\\d+)");
1231 parser[1] = 0;
1232 parser[2] = 0;
1233 parser[3] = 0;
1234 parser[4] = 0;
1235 exports.browser[172] = parser;
1236 parser = Object.create(null);
1237 parser[0] = new RegExp("(Teleca)");
1238 parser[1] = "Teleca Browser";
1239 parser[2] = 0;
1240 parser[3] = 0;
1241 parser[4] = 0;
1242 exports.browser[173] = parser;
1243 parser = Object.create(null);
1244 parser[0] = new RegExp("(Phantom)/V(\\d+)\\.(\\d+)");
1245 parser[1] = "Phantom Browser";
1246 parser[2] = 0;
1247 parser[3] = 0;
1248 parser[4] = 0;
1249 exports.browser[174] = parser;
1250 parser = Object.create(null);
1251 parser[0] = new RegExp("Trident(.*)rv.(\\d+)\\.(\\d+)");
1252 parser[1] = "IE";
1253 parser[2] = 0;
1254 parser[3] = 0;
1255 parser[4] = 0;
1256 exports.browser[175] = parser;
1257 parser = Object.create(null);
1258 parser[0] = new RegExp("(Espial)/(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?");
1259 parser[1] = 0;
1260 parser[2] = 0;
1261 parser[3] = 0;
1262 parser[4] = 0;
1263 exports.browser[176] = parser;
1264 parser = Object.create(null);
1265 parser[0] = new RegExp("(AppleWebKit)/(\\d+)\\.(\\d+)\\.(\\d+)");
1266 parser[1] = "Apple Mail";
1267 parser[2] = 0;
1268 parser[3] = 0;
1269 parser[4] = 0;
1270 exports.browser[177] = parser;
1271 parser = Object.create(null);
1272 parser[0] = new RegExp("(Firefox)/(\\d+)\\.(\\d+)\\.(\\d+)");
1273 parser[1] = 0;
1274 parser[2] = 0;
1275 parser[3] = 0;
1276 parser[4] = 0;
1277 exports.browser[178] = parser;
1278 parser = Object.create(null);
1279 parser[0] = new RegExp("(Firefox)/(\\d+)\\.(\\d+)(pre|[ab]\\d+[a-z]*)?");
1280 parser[1] = 0;
1281 parser[2] = 0;
1282 parser[3] = 0;
1283 parser[4] = 0;
1284 exports.browser[179] = parser;
1285 parser = Object.create(null);
1286 parser[0] = new RegExp("([MS]?IE) (\\d+)\\.(\\d+)");
1287 parser[1] = "IE";
1288 parser[2] = 0;
1289 parser[3] = 0;
1290 parser[4] = 0;
1291 exports.browser[180] = parser;
1292 parser = Object.create(null);
1293 parser[0] = new RegExp("(python-requests)/(\\d+)\\.(\\d+)");
1294 parser[1] = "Python Requests";
1295 parser[2] = 0;
1296 parser[3] = 0;
1297 parser[4] = 0;
1298 exports.browser[181] = parser;
1299 parser = Object.create(null);
1300 parser[0] = new RegExp("\\b(Windows-Update-Agent|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|Wget|OpenBSD ftp|jupdate)(?:[ /](\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?");
1301 parser[1] = 0;
1302 parser[2] = 0;
1303 parser[3] = 0;
1304 parser[4] = 0;
1305 exports.browser[182] = parser;
1306 parser = Object.create(null);
1307 parser[0] = new RegExp("(Java)[/ ]{0,1}\\d+\\.(\\d+)\\.(\\d+)[_-]*([a-zA-Z0-9]+)*");
1308 parser[1] = 0;
1309 parser[2] = 0;
1310 parser[3] = 0;
1311 parser[4] = 0;
1312 exports.browser[183] = parser;
1313 parser = Object.create(null);
1314 parser[0] = new RegExp("^(Roku)/DVP-(\\d+)\\.(\\d+)");
1315 parser[1] = 0;
1316 parser[2] = 0;
1317 parser[3] = 0;
1318 parser[4] = 0;
1319 exports.browser[184] = parser;
1320 parser = Object.create(null);
1321 parser[0] = new RegExp("(Kurio)\\/(\\d+)\\.(\\d+)\\.(\\d+)");
1322 parser[1] = "Kurio App";
1323 parser[2] = 0;
1324 parser[3] = 0;
1325 parser[4] = 0;
1326 exports.browser[185] = parser;
1327 parser = Object.create(null);
1328 parser[0] = new RegExp("(Wget)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+[a-z]*)");
1329 parser[1] = 0;
1330 parser[2] = 0;
1331 parser[3] = 0;
1332 parser[4] = 0;
1333 exports.browser[186] = parser;
1334 parser = Object.create(null);
1335 parser[0] = new RegExp("(curl)/(\\d+)\\.(\\d+)\\.(\\d+)");
1336 parser[1] = "cURL";
1337 parser[2] = 0;
1338 parser[3] = 0;
1339 parser[4] = 0;
1340 exports.browser[187] = parser;
1341
1342 exports.browser.length = 188;
1343
1344 exports.device = Object.create(null);
1345
1346 parser = Object.create(null);
1347 parser[0] = new RegExp("(Rival IQ, rivaliq.com)");
1348 parser[1] = "Spider";
1349 parser[2] = 0;
1350 parser[3] = 0;
1351 parser[4] = 0;
1352 exports.device[0] = parser;
1353 parser = Object.create(null);
1354 parser[0] = new RegExp("(?:(?:iPhone|Windows CE|Windows Phone|Android).*(?:(?:Bot|Yeti)-Mobile|YRSpider|BingPreview|bots?/\\d|(?:bot|spider)\\.html)|AdsBot-Google-Mobile.*iPhone)");
1355 parser[1] = "Spider";
1356 parser[2] = 0;
1357 parser[3] = 0;
1358 parser[4] = 0;
1359 exports.device[1] = parser;
1360 parser = Object.create(null);
1361 parser[0] = new RegExp("(?:DoCoMo|\\bMOT\\b|\\bLG\\b|Nokia|Samsung|SonyEricsson).*(?:(?:Bot|Yeti)-Mobile|bots?/\\d|(?:bot|crawler)\\.html|(?:jump|google|Wukong)bot|ichiro/mobile|/spider|YahooSeeker)");
1362 parser[1] = "Spider";
1363 parser[2] = 0;
1364 parser[3] = 0;
1365 parser[4] = 0;
1366 exports.device[2] = parser;
1367 parser = Object.create(null);
1368 parser[0] = new RegExp("\\bSmartWatch *\\( *([^;]+) *; *([^;]+) *;");
1369 parser[1] = "$1 $2";
1370 parser[2] = 0;
1371 parser[3] = 0;
1372 parser[4] = 0;
1373 exports.device[3] = parser;
1374 parser = Object.create(null);
1375 parser[0] = new RegExp("Android Application[^\\-]+ - (Sony) ?(Ericsson)? (.+) \\w+ - ");
1376 parser[1] = "$1 $2";
1377 parser[2] = 0;
1378 parser[3] = 0;
1379 parser[4] = 0;
1380 exports.device[4] = parser;
1381 parser = Object.create(null);
1382 parser[0] = new RegExp("Android Application[^\\-]+ - (?:HTC|HUAWEI|LGE|LENOVO|MEDION|TCT) (HTC|HUAWEI|LG|LENOVO|MEDION|ALCATEL)[ _\\-](.+) \\w+ - ");
1383 parser[1] = "$1 $2";
1384 parser[2] = 0;
1385 parser[3] = 0;
1386 parser[4] = 0;
1387 exports.device[5] = parser;
1388 parser = Object.create(null);
1389 parser[0] = new RegExp("Android Application[^\\-]+ - ([^ ]+) (.+) \\w+ - ");
1390 parser[1] = "$1 $2";
1391 parser[2] = 0;
1392 parser[3] = 0;
1393 parser[4] = 0;
1394 exports.device[6] = parser;
1395 parser = Object.create(null);
1396 parser[0] = new RegExp("; *([BLRQ]C\\d{4}[A-Z]+) +Build/");
1397 parser[1] = "3Q $1";
1398 parser[2] = 0;
1399 parser[3] = 0;
1400 parser[4] = 0;
1401 exports.device[7] = parser;
1402 parser = Object.create(null);
1403 parser[0] = new RegExp("; *(?:3Q_)([^;/]+) +Build");
1404 parser[1] = "3Q $1";
1405 parser[2] = 0;
1406 parser[3] = 0;
1407 parser[4] = 0;
1408 exports.device[8] = parser;
1409 parser = Object.create(null);
1410 parser[0] = new RegExp("Android [34].*; *(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700(?: Lite| 3G)?|A701|B1-A71|A1-\\d{3}|B1-\\d{3}|V360|V370|W500|W500P|W501|W501P|W510|W511|W700|Slider SL101|DA22[^;/]+) Build");
1411 parser[1] = "$1";
1412 parser[2] = 0;
1413 parser[3] = 0;
1414 parser[4] = 0;
1415 exports.device[9] = parser;
1416 parser = Object.create(null);
1417 parser[0] = new RegExp("; *Acer Iconia Tab ([^;/]+) Build");
1418 parser[1] = "$1";
1419 parser[2] = 0;
1420 parser[3] = 0;
1421 parser[4] = 0;
1422 exports.device[10] = parser;
1423 parser = Object.create(null);
1424 parser[0] = new RegExp("; *(Z1[1235]0|E320[^/]*|S500|S510|Liquid[^;/]*|Iconia A\\d+) Build");
1425 parser[1] = "$1";
1426 parser[2] = 0;
1427 parser[3] = 0;
1428 parser[4] = 0;
1429 exports.device[11] = parser;
1430 parser = Object.create(null);
1431 parser[0] = new RegExp("; *(Acer |ACER )([^;/]+) Build");
1432 parser[1] = "$1$2";
1433 parser[2] = 0;
1434 parser[3] = 0;
1435 parser[4] = 0;
1436 exports.device[12] = parser;
1437 parser = Object.create(null);
1438 parser[0] = new RegExp("; *(Advent )?(Vega(?:Bean|Comb)?).* Build");
1439 parser[1] = "$1$2";
1440 parser[2] = 0;
1441 parser[3] = 0;
1442 parser[4] = 0;
1443 exports.device[13] = parser;
1444 parser = Object.create(null);
1445 parser[0] = new RegExp("; *(Ainol )?((?:NOVO|[Nn]ovo)[^;/]+) Build");
1446 parser[1] = "$1$2";
1447 parser[2] = 0;
1448 parser[3] = 0;
1449 parser[4] = 0;
1450 exports.device[14] = parser;
1451 parser = Object.create(null);
1452 parser[0] = new RegExp("; *AIRIS[ _\\-]?([^/;\\)]+) *(?:;|\\)|Build)");
1453 parser[1] = "$1";
1454 parser[2] = 0;
1455 parser[3] = 0;
1456 parser[4] = 0;
1457 exports.device[15] = parser;
1458 parser = Object.create(null);
1459 parser[0] = new RegExp("; *(OnePAD[^;/]+) Build");
1460 parser[1] = "$1";
1461 parser[2] = 0;
1462 parser[3] = 0;
1463 parser[4] = 0;
1464 exports.device[16] = parser;
1465 parser = Object.create(null);
1466 parser[0] = new RegExp("; *Airpad[ \\-]([^;/]+) Build");
1467 parser[1] = "Airpad $1";
1468 parser[2] = 0;
1469 parser[3] = 0;
1470 parser[4] = 0;
1471 exports.device[17] = parser;
1472 parser = Object.create(null);
1473 parser[0] = new RegExp("; *(one ?touch) (EVO7|T10|T20) Build");
1474 parser[1] = "Alcatel One Touch $2";
1475 parser[2] = 0;
1476 parser[3] = 0;
1477 parser[4] = 0;
1478 exports.device[18] = parser;
1479 parser = Object.create(null);
1480 parser[0] = new RegExp("; *(?:alcatel[ _])?(?:(?:one[ _]?touch[ _])|ot[ \\-])([^;/]+);? Build");
1481 parser[1] = "Alcatel One Touch $1";
1482 parser[2] = 0;
1483 parser[3] = 0;
1484 parser[4] = 0;
1485 exports.device[19] = parser;
1486 parser = Object.create(null);
1487 parser[0] = new RegExp("; *(TCL)[ _]([^;/]+) Build");
1488 parser[1] = "$1 $2";
1489 parser[2] = 0;
1490 parser[3] = 0;
1491 parser[4] = 0;
1492 exports.device[20] = parser;
1493 parser = Object.create(null);
1494 parser[0] = new RegExp("; *(Vodafone Smart II|Optimus_Madrid) Build");
1495 parser[1] = "Alcatel $1";
1496 parser[2] = 0;
1497 parser[3] = 0;
1498 parser[4] = 0;
1499 exports.device[21] = parser;
1500 parser = Object.create(null);
1501 parser[0] = new RegExp("; *BASE_Lutea_3 Build");
1502 parser[1] = "Alcatel One Touch 998";
1503 parser[2] = 0;
1504 parser[3] = 0;
1505 parser[4] = 0;
1506 exports.device[22] = parser;
1507 parser = Object.create(null);
1508 parser[0] = new RegExp("; *BASE_Varia Build");
1509 parser[1] = "Alcatel One Touch 918D";
1510 parser[2] = 0;
1511 parser[3] = 0;
1512 parser[4] = 0;
1513 exports.device[23] = parser;
1514 parser = Object.create(null);
1515 parser[0] = new RegExp("; *((?:FINE|Fine)\\d[^;/]+) Build");
1516 parser[1] = "$1";
1517 parser[2] = 0;
1518 parser[3] = 0;
1519 parser[4] = 0;
1520 exports.device[24] = parser;
1521 parser = Object.create(null);
1522 parser[0] = new RegExp("; *(ALLVIEW[ _]?|Allview[ _]?)((?:Speed|SPEED).*) Build/");
1523 parser[1] = "$1$2";
1524 parser[2] = 0;
1525 parser[3] = 0;
1526 parser[4] = 0;
1527 exports.device[25] = parser;
1528 parser = Object.create(null);
1529 parser[0] = new RegExp("; *(ALLVIEW[ _]?|Allview[ _]?)?(AX1_Shine|AX2_Frenzy) Build");
1530 parser[1] = "$1$2";
1531 parser[2] = 0;
1532 parser[3] = 0;
1533 parser[4] = 0;
1534 exports.device[26] = parser;
1535 parser = Object.create(null);
1536 parser[0] = new RegExp("; *(ALLVIEW[ _]?|Allview[ _]?)([^;/]*) Build");
1537 parser[1] = "$1$2";
1538 parser[2] = 0;
1539 parser[3] = 0;
1540 parser[4] = 0;
1541 exports.device[27] = parser;
1542 parser = Object.create(null);
1543 parser[0] = new RegExp("; *(A13-MID) Build");
1544 parser[1] = "$1";
1545 parser[2] = 0;
1546 parser[3] = 0;
1547 parser[4] = 0;
1548 exports.device[28] = parser;
1549 parser = Object.create(null);
1550 parser[0] = new RegExp("; *(Allwinner)[ _\\-]?([^;/]+) Build");
1551 parser[1] = "$1 $2";
1552 parser[2] = 0;
1553 parser[3] = 0;
1554 parser[4] = 0;
1555 exports.device[29] = parser;
1556 parser = Object.create(null);
1557 parser[0] = new RegExp("; *(A651|A701B?|A702|A703|A705|A706|A707|A711|A712|A713|A717|A722|A785|A801|A802|A803|A901|A902|A1002|A1003|A1006|A1007|A9701|A9703|Q710|Q80) Build");
1558 parser[1] = "$1";
1559 parser[2] = 0;
1560 parser[3] = 0;
1561 parser[4] = 0;
1562 exports.device[30] = parser;
1563 parser = Object.create(null);
1564 parser[0] = new RegExp("; *(?:AMOI|Amoi)[ _]([^;/]+) Build");
1565 parser[1] = "Amoi $1";
1566 parser[2] = 0;
1567 parser[3] = 0;
1568 parser[4] = 0;
1569 exports.device[31] = parser;
1570 parser = Object.create(null);
1571 parser[0] = new RegExp("^(?:AMOI|Amoi)[ _]([^;/]+) Linux");
1572 parser[1] = "Amoi $1";
1573 parser[2] = 0;
1574 parser[3] = 0;
1575 parser[4] = 0;
1576 exports.device[32] = parser;
1577 parser = Object.create(null);
1578 parser[0] = new RegExp("; *(MW(?:0[789]|10)[^;/]+) Build");
1579 parser[1] = "$1";
1580 parser[2] = 0;
1581 parser[3] = 0;
1582 parser[4] = 0;
1583 exports.device[33] = parser;
1584 parser = Object.create(null);
1585 parser[0] = new RegExp("; *(G7|M1013|M1015G|M11[CG]?|M-?12[B]?|M15|M19[G]?|M30[ACQ]?|M31[GQ]|M32|M33[GQ]|M36|M37|M38|M701T|M710|M712B|M713|M715G|M716G|M71(?:G|GS|T)?|M72[T]?|M73[T]?|M75[GT]?|M77G|M79T|M7L|M7LN|M81|M810|M81T|M82|M92|M92KS|M92S|M717G|M721|M722G|M723|M725G|M739|M785|M791|M92SK|M93D) Build");
1586 parser[1] = "Aoson $1";
1587 parser[2] = 0;
1588 parser[3] = 0;
1589 parser[4] = 0;
1590 exports.device[34] = parser;
1591 parser = Object.create(null);
1592 parser[0] = new RegExp("; *Aoson ([^;/]+) Build");
1593 parser[1] = "Aoson $1";
1594 parser[2] = 0;
1595 parser[3] = 0;
1596 parser[4] = 0;
1597 exports.device[35] = parser;
1598 parser = Object.create(null);
1599 parser[0] = new RegExp("; *[Aa]panda[ _\\-]([^;/]+) Build");
1600 parser[1] = "Apanda $1";
1601 parser[2] = 0;
1602 parser[3] = 0;
1603 parser[4] = 0;
1604 exports.device[36] = parser;
1605 parser = Object.create(null);
1606 parser[0] = new RegExp("; *(?:ARCHOS|Archos) ?(GAMEPAD.*?)(?: Build|[;/\\(\\)\\-])");
1607 parser[1] = "Archos $1";
1608 parser[2] = 0;
1609 parser[3] = 0;
1610 parser[4] = 0;
1611 exports.device[37] = parser;
1612 parser = Object.create(null);
1613 parser[0] = new RegExp("ARCHOS; GOGI; ([^;]+);");
1614 parser[1] = "Archos $1";
1615 parser[2] = 0;
1616 parser[3] = 0;
1617 parser[4] = 0;
1618 exports.device[38] = parser;
1619 parser = Object.create(null);
1620 parser[0] = new RegExp("(?:ARCHOS|Archos)[ _]?(.*?)(?: Build|[;/\\(\\)\\-]|$)");
1621 parser[1] = "Archos $1";
1622 parser[2] = 0;
1623 parser[3] = 0;
1624 parser[4] = 0;
1625 exports.device[39] = parser;
1626 parser = Object.create(null);
1627 parser[0] = new RegExp("; *(AN(?:7|8|9|10|13)[A-Z0-9]{1,4}) Build");
1628 parser[1] = "Archos $1";
1629 parser[2] = 0;
1630 parser[3] = 0;
1631 parser[4] = 0;
1632 exports.device[40] = parser;
1633 parser = Object.create(null);
1634 parser[0] = new RegExp("; *(A28|A32|A43|A70(?:BHT|CHT|HB|S|X)|A101(?:B|C|IT)|A7EB|A7EB-WK|101G9|80G9) Build");
1635 parser[1] = "Archos $1";
1636 parser[2] = 0;
1637 parser[3] = 0;
1638 parser[4] = 0;
1639 exports.device[41] = parser;
1640 parser = Object.create(null);
1641 parser[0] = new RegExp("; *(PAD-FMD[^;/]+) Build");
1642 parser[1] = "$1";
1643 parser[2] = 0;
1644 parser[3] = 0;
1645 parser[4] = 0;
1646 exports.device[42] = parser;
1647 parser = Object.create(null);
1648 parser[0] = new RegExp("; *(BioniQ) ?([^;/]+) Build");
1649 parser[1] = "$1 $2";
1650 parser[2] = 0;
1651 parser[3] = 0;
1652 parser[4] = 0;
1653 exports.device[43] = parser;
1654 parser = Object.create(null);
1655 parser[0] = new RegExp("; *(AN\\d[^;/]+|ARCHM\\d+) Build");
1656 parser[1] = "Arnova $1";
1657 parser[2] = 0;
1658 parser[3] = 0;
1659 parser[4] = 0;
1660 exports.device[44] = parser;
1661 parser = Object.create(null);
1662 parser[0] = new RegExp("; *(?:ARNOVA|Arnova) ?([^;/]+) Build");
1663 parser[1] = "Arnova $1";
1664 parser[2] = 0;
1665 parser[3] = 0;
1666 parser[4] = 0;
1667 exports.device[45] = parser;
1668 parser = Object.create(null);
1669 parser[0] = new RegExp("; *(?:ASSISTANT )?(AP)-?([1789]\\d{2}[A-Z]{0,2}|80104) Build");
1670 parser[1] = "Assistant $1-$2";
1671 parser[2] = 0;
1672 parser[3] = 0;
1673 parser[4] = 0;
1674 exports.device[46] = parser;
1675 parser = Object.create(null);
1676 parser[0] = new RegExp("; *(ME17\\d[^;/]*|ME3\\d{2}[^;/]+|K00[A-Z]|Nexus 10|Nexus 7(?: 2013)?|PadFone[^;/]*|Transformer[^;/]*|TF\\d{3}[^;/]*|eeepc) Build");
1677 parser[1] = "Asus $1";
1678 parser[2] = 0;
1679 parser[3] = 0;
1680 parser[4] = 0;
1681 exports.device[47] = parser;
1682 parser = Object.create(null);
1683 parser[0] = new RegExp("; *ASUS[ _]*([^;/]+) Build");
1684 parser[1] = "Asus $1";
1685 parser[2] = 0;
1686 parser[3] = 0;
1687 parser[4] = 0;
1688 exports.device[48] = parser;
1689 parser = Object.create(null);
1690 parser[0] = new RegExp("; *Garmin-Asus ([^;/]+) Build");
1691 parser[1] = "Garmin-Asus $1";
1692 parser[2] = 0;
1693 parser[3] = 0;
1694 parser[4] = 0;
1695 exports.device[49] = parser;
1696 parser = Object.create(null);
1697 parser[0] = new RegExp("; *(Garminfone) Build");
1698 parser[1] = "Garmin $1";
1699 parser[2] = 0;
1700 parser[3] = 0;
1701 parser[4] = 0;
1702 exports.device[50] = parser;
1703 parser = Object.create(null);
1704 parser[0] = new RegExp("; (@TAB-[^;/]+) Build");
1705 parser[1] = "$1";
1706 parser[2] = 0;
1707 parser[3] = 0;
1708 parser[4] = 0;
1709 exports.device[51] = parser;
1710 parser = Object.create(null);
1711 parser[0] = new RegExp("; *(T-(?:07|[^0]\\d)[^;/]+) Build");
1712 parser[1] = "$1";
1713 parser[2] = 0;
1714 parser[3] = 0;
1715 parser[4] = 0;
1716 exports.device[52] = parser;
1717 parser = Object.create(null);
1718 parser[0] = new RegExp("; *(?:Axioo[ _\\-]([^;/]+)|(picopad)[ _\\-]([^;/]+)) Build");
1719 parser[1] = "Axioo $1$2 $3";
1720 parser[2] = 0;
1721 parser[3] = 0;
1722 parser[4] = 0;
1723 exports.device[53] = parser;
1724 parser = Object.create(null);
1725 parser[0] = new RegExp("; *(V(?:100|700|800)[^;/]*) Build");
1726 parser[1] = "$1";
1727 parser[2] = 0;
1728 parser[3] = 0;
1729 parser[4] = 0;
1730 exports.device[54] = parser;
1731 parser = Object.create(null);
1732 parser[0] = new RegExp("; *(IBAK\\-[^;/]*) Build");
1733 parser[1] = "$1";
1734 parser[2] = 0;
1735 parser[3] = 0;
1736 parser[4] = 0;
1737 exports.device[55] = parser;
1738 parser = Object.create(null);
1739 parser[0] = new RegExp("; *(HY5001|HY6501|X12|X21|I5) Build");
1740 parser[1] = "Bedove $1";
1741 parser[2] = 0;
1742 parser[3] = 0;
1743 parser[4] = 0;
1744 exports.device[56] = parser;
1745 parser = Object.create(null);
1746 parser[0] = new RegExp("; *(JC-[^;/]*) Build");
1747 parser[1] = "Benss $1";
1748 parser[2] = 0;
1749 parser[3] = 0;
1750 parser[4] = 0;
1751 exports.device[57] = parser;
1752 parser = Object.create(null);
1753 parser[0] = new RegExp("; *(BB) ([^;/]+) Build");
1754 parser[1] = "$1 $2";
1755 parser[2] = 0;
1756 parser[3] = 0;
1757 parser[4] = 0;
1758 exports.device[58] = parser;
1759 parser = Object.create(null);
1760 parser[0] = new RegExp("; *(BlackBird)[ _](I8.*) Build");
1761 parser[1] = "$1 $2";
1762 parser[2] = 0;
1763 parser[3] = 0;
1764 parser[4] = 0;
1765 exports.device[59] = parser;
1766 parser = Object.create(null);
1767 parser[0] = new RegExp("; *(BlackBird)[ _](.*) Build");
1768 parser[1] = "$1 $2";
1769 parser[2] = 0;
1770 parser[3] = 0;
1771 parser[4] = 0;
1772 exports.device[60] = parser;
1773 parser = Object.create(null);
1774 parser[0] = new RegExp("; *([0-9]+BP[EM][^;/]*|Endeavour[^;/]+) Build");
1775 parser[1] = "Blaupunkt $1";
1776 parser[2] = 0;
1777 parser[3] = 0;
1778 parser[4] = 0;
1779 exports.device[61] = parser;
1780 parser = Object.create(null);
1781 parser[0] = new RegExp("; *((?:BLU|Blu)[ _\\-])([^;/]+) Build");
1782 parser[1] = "$1$2";
1783 parser[2] = 0;
1784 parser[3] = 0;
1785 parser[4] = 0;
1786 exports.device[62] = parser;
1787 parser = Object.create(null);
1788 parser[0] = new RegExp("; *(?:BMOBILE )?(Blu|BLU|DASH [^;/]+|VIVO 4\\.3|TANK 4\\.5) Build");
1789 parser[1] = "$1";
1790 parser[2] = 0;
1791 parser[3] = 0;
1792 parser[4] = 0;
1793 exports.device[63] = parser;
1794 parser = Object.create(null);
1795 parser[0] = new RegExp("; *(TOUCH\\d[^;/]+) Build");
1796 parser[1] = "$1";
1797 parser[2] = 0;
1798 parser[3] = 0;
1799 parser[4] = 0;
1800 exports.device[64] = parser;
1801 parser = Object.create(null);
1802 parser[0] = new RegExp("; *(AX5\\d+) Build");
1803 parser[1] = "$1";
1804 parser[2] = 0;
1805 parser[3] = 0;
1806 parser[4] = 0;
1807 exports.device[65] = parser;
1808 parser = Object.create(null);
1809 parser[0] = new RegExp("; *([Bb]q) ([^;/]+);? Build");
1810 parser[1] = "$1 $2";
1811 parser[2] = 0;
1812 parser[3] = 0;
1813 parser[4] = 0;
1814 exports.device[66] = parser;
1815 parser = Object.create(null);
1816 parser[0] = new RegExp("; *(Maxwell [^;/]+) Build");
1817 parser[1] = "$1";
1818 parser[2] = 0;
1819 parser[3] = 0;
1820 parser[4] = 0;
1821 exports.device[67] = parser;
1822 parser = Object.create(null);
1823 parser[0] = new RegExp("; *((?:B-Tab|B-TAB) ?\\d[^;/]+) Build");
1824 parser[1] = "$1";
1825 parser[2] = 0;
1826 parser[3] = 0;
1827 parser[4] = 0;
1828 exports.device[68] = parser;
1829 parser = Object.create(null);
1830 parser[0] = new RegExp("; *(Broncho) ([^;/]+) Build");
1831 parser[1] = "$1 $2";
1832 parser[2] = 0;
1833 parser[3] = 0;
1834 parser[4] = 0;
1835 exports.device[69] = parser;
1836 parser = Object.create(null);
1837 parser[0] = new RegExp("; *CAPTIVA ([^;/]+) Build");
1838 parser[1] = "Captiva $1";
1839 parser[2] = 0;
1840 parser[3] = 0;
1841 parser[4] = 0;
1842 exports.device[70] = parser;
1843 parser = Object.create(null);
1844 parser[0] = new RegExp("; *(C771|CAL21|IS11CA) Build");
1845 parser[1] = "$1";
1846 parser[2] = 0;
1847 parser[3] = 0;
1848 parser[4] = 0;
1849 exports.device[71] = parser;
1850 parser = Object.create(null);
1851 parser[0] = new RegExp("; *(?:Cat|CAT) ([^;/]+) Build");
1852 parser[1] = "Cat $1";
1853 parser[2] = 0;
1854 parser[3] = 0;
1855 parser[4] = 0;
1856 exports.device[72] = parser;
1857 parser = Object.create(null);
1858 parser[0] = new RegExp("; *(?:Cat)(Nova.*) Build");
1859 parser[1] = "Cat $1";
1860 parser[2] = 0;
1861 parser[3] = 0;
1862 parser[4] = 0;
1863 exports.device[73] = parser;
1864 parser = Object.create(null);
1865 parser[0] = new RegExp("; *(INM8002KP|ADM8000KP_[AB]) Build");
1866 parser[1] = "$1";
1867 parser[2] = 0;
1868 parser[3] = 0;
1869 parser[4] = 0;
1870 exports.device[74] = parser;
1871 parser = Object.create(null);
1872 parser[0] = new RegExp("; *(?:[Cc]elkon[ _\\*]|CELKON[ _\\*])([^;/\\)]+) ?(?:Build|;|\\))");
1873 parser[1] = "$1";
1874 parser[2] = 0;
1875 parser[3] = 0;
1876 parser[4] = 0;
1877 exports.device[75] = parser;
1878 parser = Object.create(null);
1879 parser[0] = new RegExp("Build/(?:[Cc]elkon)+_?([^;/_\\)]+)");
1880 parser[1] = "$1";
1881 parser[2] = 0;
1882 parser[3] = 0;
1883 parser[4] = 0;
1884 exports.device[76] = parser;
1885 parser = Object.create(null);
1886 parser[0] = new RegExp("; *(CT)-?(\\d+) Build");
1887 parser[1] = "$1$2";
1888 parser[2] = 0;
1889 parser[3] = 0;
1890 parser[4] = 0;
1891 exports.device[77] = parser;
1892 parser = Object.create(null);
1893 parser[0] = new RegExp("; *(A19|A19Q|A105|A107[^;/\\)]*) ?(?:Build|;|\\))");
1894 parser[1] = "$1";
1895 parser[2] = 0;
1896 parser[3] = 0;
1897 parser[4] = 0;
1898 exports.device[78] = parser;
1899 parser = Object.create(null);
1900 parser[0] = new RegExp("; *(TPC[0-9]{4,5}) Build");
1901 parser[1] = "$1";
1902 parser[2] = 0;
1903 parser[3] = 0;
1904 parser[4] = 0;
1905 exports.device[79] = parser;
1906 parser = Object.create(null);
1907 parser[0] = new RegExp("; *(Cloudfone)[ _](Excite)([^ ][^;/]+) Build");
1908 parser[1] = "$1 $2 $3";
1909 parser[2] = 0;
1910 parser[3] = 0;
1911 parser[4] = 0;
1912 exports.device[80] = parser;
1913 parser = Object.create(null);
1914 parser[0] = new RegExp("; *(Excite|ICE)[ _](\\d+[^;/]+) Build");
1915 parser[1] = "Cloudfone $1 $2";
1916 parser[2] = 0;
1917 parser[3] = 0;
1918 parser[4] = 0;
1919 exports.device[81] = parser;
1920 parser = Object.create(null);
1921 parser[0] = new RegExp("; *(Cloudfone|CloudPad)[ _]([^;/]+) Build");
1922 parser[1] = "$1 $2";
1923 parser[2] = 0;
1924 parser[3] = 0;
1925 parser[4] = 0;
1926 exports.device[82] = parser;
1927 parser = Object.create(null);
1928 parser[0] = new RegExp("; *((?:Aquila|Clanga|Rapax)[^;/]+) Build");
1929 parser[1] = "$1";
1930 parser[2] = 0;
1931 parser[3] = 0;
1932 parser[4] = 0;
1933 exports.device[83] = parser;
1934 parser = Object.create(null);
1935 parser[0] = new RegExp("; *(?:CFW-|Kyros )?(MID[0-9]{4}(?:[ABC]|SR|TV)?)(\\(3G\\)-4G| GB 8K| 3G| 8K| GB)? *(?:Build|[;\\)])");
1936 parser[1] = "CobyKyros $1$2";
1937 parser[2] = 0;
1938 parser[3] = 0;
1939 parser[4] = 0;
1940 exports.device[84] = parser;
1941 parser = Object.create(null);
1942 parser[0] = new RegExp("; *([^;/]*)Coolpad[ _]([^;/]+) Build");
1943 parser[1] = "$1$2";
1944 parser[2] = 0;
1945 parser[3] = 0;
1946 parser[4] = 0;
1947 exports.device[85] = parser;
1948 parser = Object.create(null);
1949 parser[0] = new RegExp("; *(CUBE[ _])?([KU][0-9]+ ?GT.*|A5300) Build");
1950 parser[1] = "$1$2";
1951 parser[2] = 0;
1952 parser[3] = 0;
1953 parser[4] = 0;
1954 exports.device[86] = parser;
1955 parser = Object.create(null);
1956 parser[0] = new RegExp("; *CUBOT ([^;/]+) Build");
1957 parser[1] = "$1";
1958 parser[2] = 0;
1959 parser[3] = 0;
1960 parser[4] = 0;
1961 exports.device[87] = parser;
1962 parser = Object.create(null);
1963 parser[0] = new RegExp("; *(BOBBY) Build");
1964 parser[1] = "$1";
1965 parser[2] = 0;
1966 parser[3] = 0;
1967 parser[4] = 0;
1968 exports.device[88] = parser;
1969 parser = Object.create(null);
1970 parser[0] = new RegExp("; *(Dslide [^;/]+) Build");
1971 parser[1] = "$1";
1972 parser[2] = 0;
1973 parser[3] = 0;
1974 parser[4] = 0;
1975 exports.device[89] = parser;
1976 parser = Object.create(null);
1977 parser[0] = new RegExp("; *(XCD)[ _]?(28|35) Build");
1978 parser[1] = "Dell $1$2";
1979 parser[2] = 0;
1980 parser[3] = 0;
1981 parser[4] = 0;
1982 exports.device[90] = parser;
1983 parser = Object.create(null);
1984 parser[0] = new RegExp("; *(001DL) Build");
1985 parser[1] = "Dell $1";
1986 parser[2] = 0;
1987 parser[3] = 0;
1988 parser[4] = 0;
1989 exports.device[91] = parser;
1990 parser = Object.create(null);
1991 parser[0] = new RegExp("; *(?:Dell|DELL) (Streak) Build");
1992 parser[1] = "Dell $1";
1993 parser[2] = 0;
1994 parser[3] = 0;
1995 parser[4] = 0;
1996 exports.device[92] = parser;
1997 parser = Object.create(null);
1998 parser[0] = new RegExp("; *(101DL|GS01|Streak Pro[^;/]*) Build");
1999 parser[1] = "Dell $1";
2000 parser[2] = 0;
2001 parser[3] = 0;
2002 parser[4] = 0;
2003 exports.device[93] = parser;
2004 parser = Object.create(null);
2005 parser[0] = new RegExp("; *([Ss]treak ?7) Build");
2006 parser[1] = "Dell $1";
2007 parser[2] = 0;
2008 parser[3] = 0;
2009 parser[4] = 0;
2010 exports.device[94] = parser;
2011 parser = Object.create(null);
2012 parser[0] = new RegExp("; *(Mini-3iX) Build");
2013 parser[1] = "Dell $1";
2014 parser[2] = 0;
2015 parser[3] = 0;
2016 parser[4] = 0;
2017 exports.device[95] = parser;
2018 parser = Object.create(null);
2019 parser[0] = new RegExp("; *(?:Dell|DELL)[ _](Aero|Venue|Thunder|Mini.*|Streak[ _]Pro) Build");
2020 parser[1] = "Dell $1";
2021 parser[2] = 0;
2022 parser[3] = 0;
2023 parser[4] = 0;
2024 exports.device[96] = parser;
2025 parser = Object.create(null);
2026 parser[0] = new RegExp("; *Dell[ _]([^;/]+) Build");
2027 parser[1] = "Dell $1";
2028 parser[2] = 0;
2029 parser[3] = 0;
2030 parser[4] = 0;
2031 exports.device[97] = parser;
2032 parser = Object.create(null);
2033 parser[0] = new RegExp("; *Dell ([^;/]+) Build");
2034 parser[1] = "Dell $1";
2035 parser[2] = 0;
2036 parser[3] = 0;
2037 parser[4] = 0;
2038 exports.device[98] = parser;
2039 parser = Object.create(null);
2040 parser[0] = new RegExp("; *(TA[CD]-\\d+[^;/]*) Build");
2041 parser[1] = "$1";
2042 parser[2] = 0;
2043 parser[3] = 0;
2044 parser[4] = 0;
2045 exports.device[99] = parser;
2046 parser = Object.create(null);
2047 parser[0] = new RegExp("; *(iP[789]\\d{2}(?:-3G)?|IP10\\d{2}(?:-8GB)?) Build");
2048 parser[1] = "$1";
2049 parser[2] = 0;
2050 parser[3] = 0;
2051 parser[4] = 0;
2052 exports.device[100] = parser;
2053 parser = Object.create(null);
2054 parser[0] = new RegExp("; *(AirTab)[ _\\-]([^;/]+) Build");
2055 parser[1] = "$1 $2";
2056 parser[2] = 0;
2057 parser[3] = 0;
2058 parser[4] = 0;
2059 exports.device[101] = parser;
2060 parser = Object.create(null);
2061 parser[0] = new RegExp("; *(F\\-\\d[^;/]+) Build");
2062 parser[1] = "$1";
2063 parser[2] = 0;
2064 parser[3] = 0;
2065 parser[4] = 0;
2066 exports.device[102] = parser;
2067 parser = Object.create(null);
2068 parser[0] = new RegExp("; *(HT-03A) Build");
2069 parser[1] = "$1";
2070 parser[2] = 0;
2071 parser[3] = 0;
2072 parser[4] = 0;
2073 exports.device[103] = parser;
2074 parser = Object.create(null);
2075 parser[0] = new RegExp("; *(HT\\-\\d[^;/]+) Build");
2076 parser[1] = "$1";
2077 parser[2] = 0;
2078 parser[3] = 0;
2079 parser[4] = 0;
2080 exports.device[104] = parser;
2081 parser = Object.create(null);
2082 parser[0] = new RegExp("; *(L\\-\\d[^;/]+) Build");
2083 parser[1] = "$1";
2084 parser[2] = 0;
2085 parser[3] = 0;
2086 parser[4] = 0;
2087 exports.device[105] = parser;
2088 parser = Object.create(null);
2089 parser[0] = new RegExp("; *(N\\-\\d[^;/]+) Build");
2090 parser[1] = "$1";
2091 parser[2] = 0;
2092 parser[3] = 0;
2093 parser[4] = 0;
2094 exports.device[106] = parser;
2095 parser = Object.create(null);
2096 parser[0] = new RegExp("; *(P\\-\\d[^;/]+) Build");
2097 parser[1] = "$1";
2098 parser[2] = 0;
2099 parser[3] = 0;
2100 parser[4] = 0;
2101 exports.device[107] = parser;
2102 parser = Object.create(null);
2103 parser[0] = new RegExp("; *(SC\\-\\d[^;/]+) Build");
2104 parser[1] = "$1";
2105 parser[2] = 0;
2106 parser[3] = 0;
2107 parser[4] = 0;
2108 exports.device[108] = parser;
2109 parser = Object.create(null);
2110 parser[0] = new RegExp("; *(SH\\-\\d[^;/]+) Build");
2111 parser[1] = "$1";
2112 parser[2] = 0;
2113 parser[3] = 0;
2114 parser[4] = 0;
2115 exports.device[109] = parser;
2116 parser = Object.create(null);
2117 parser[0] = new RegExp("; *(SO\\-\\d[^;/]+) Build");
2118 parser[1] = "$1";
2119 parser[2] = 0;
2120 parser[3] = 0;
2121 parser[4] = 0;
2122 exports.device[110] = parser;
2123 parser = Object.create(null);
2124 parser[0] = new RegExp("; *(T\\-0[12][^;/]+) Build");
2125 parser[1] = "$1";
2126 parser[2] = 0;
2127 parser[3] = 0;
2128 parser[4] = 0;
2129 exports.device[111] = parser;
2130 parser = Object.create(null);
2131 parser[0] = new RegExp("; *(DOOV)[ _]([^;/]+) Build");
2132 parser[1] = "$1 $2";
2133 parser[2] = 0;
2134 parser[3] = 0;
2135 parser[4] = 0;
2136 exports.device[112] = parser;
2137 parser = Object.create(null);
2138 parser[0] = new RegExp("; *(Enot|ENOT)[ -]?([^;/]+) Build");
2139 parser[1] = "$1 $2";
2140 parser[2] = 0;
2141 parser[3] = 0;
2142 parser[4] = 0;
2143 exports.device[113] = parser;
2144 parser = Object.create(null);
2145 parser[0] = new RegExp("; *[^;/]+ Build/(?:CROSS|Cross)+[ _\\-]([^\\)]+)");
2146 parser[1] = "CROSS $1";
2147 parser[2] = 0;
2148 parser[3] = 0;
2149 parser[4] = 0;
2150 exports.device[114] = parser;
2151 parser = Object.create(null);
2152 parser[0] = new RegExp("; *(CROSS|Cross)[ _\\-]([^;/]+) Build");
2153 parser[1] = "$1 $2";
2154 parser[2] = 0;
2155 parser[3] = 0;
2156 parser[4] = 0;
2157 exports.device[115] = parser;
2158 parser = Object.create(null);
2159 parser[0] = new RegExp("; *Explay[_ ](.+?)(?:[\\)]| Build)");
2160 parser[1] = "$1";
2161 parser[2] = 0;
2162 parser[3] = 0;
2163 parser[4] = 0;
2164 exports.device[116] = parser;
2165 parser = Object.create(null);
2166 parser[0] = new RegExp("; *(IQ.*) Build");
2167 parser[1] = "$1";
2168 parser[2] = 0;
2169 parser[3] = 0;
2170 parser[4] = 0;
2171 exports.device[117] = parser;
2172 parser = Object.create(null);
2173 parser[0] = new RegExp("; *(Fly|FLY)[ _](IQ[^;]+|F[34]\\d+[^;]*);? Build");
2174 parser[1] = "$1 $2";
2175 parser[2] = 0;
2176 parser[3] = 0;
2177 parser[4] = 0;
2178 exports.device[118] = parser;
2179 parser = Object.create(null);
2180 parser[0] = new RegExp("; *(M532|Q572|FJL21) Build/");
2181 parser[1] = "$1";
2182 parser[2] = 0;
2183 parser[3] = 0;
2184 parser[4] = 0;
2185 exports.device[119] = parser;
2186 parser = Object.create(null);
2187 parser[0] = new RegExp("; *(G1) Build");
2188 parser[1] = "$1";
2189 parser[2] = 0;
2190 parser[3] = 0;
2191 parser[4] = 0;
2192 exports.device[120] = parser;
2193 parser = Object.create(null);
2194 parser[0] = new RegExp("; *(Geeksphone) ([^;/]+) Build");
2195 parser[1] = "$1 $2";
2196 parser[2] = 0;
2197 parser[3] = 0;
2198 parser[4] = 0;
2199 exports.device[121] = parser;
2200 parser = Object.create(null);
2201 parser[0] = new RegExp("; *(G[^F]?FIVE) ([^;/]+) Build");
2202 parser[1] = "$1 $2";
2203 parser[2] = 0;
2204 parser[3] = 0;
2205 parser[4] = 0;
2206 exports.device[122] = parser;
2207 parser = Object.create(null);
2208 parser[0] = new RegExp("; *(Gionee)[ _\\-]([^;/]+)(?:/[^;/]+)? Build");
2209 parser[1] = "$1 $2";
2210 parser[2] = 0;
2211 parser[3] = 0;
2212 parser[4] = 0;
2213 exports.device[123] = parser;
2214 parser = Object.create(null);
2215 parser[0] = new RegExp("; *(GN\\d+[A-Z]?|INFINITY_PASSION|Ctrl_V1) Build");
2216 parser[1] = "Gionee $1";
2217 parser[2] = 0;
2218 parser[3] = 0;
2219 parser[4] = 0;
2220 exports.device[124] = parser;
2221 parser = Object.create(null);
2222 parser[0] = new RegExp("; *(E3) Build/JOP40D");
2223 parser[1] = "Gionee $1";
2224 parser[2] = 0;
2225 parser[3] = 0;
2226 parser[4] = 0;
2227 exports.device[125] = parser;
2228 parser = Object.create(null);
2229 parser[0] = new RegExp("; *((?:FONE|QUANTUM|INSIGNIA) \\d+[^;/]*|PLAYTAB) Build");
2230 parser[1] = "GoClever $1";
2231 parser[2] = 0;
2232 parser[3] = 0;
2233 parser[4] = 0;
2234 exports.device[126] = parser;
2235 parser = Object.create(null);
2236 parser[0] = new RegExp("; *GOCLEVER ([^;/]+) Build");
2237 parser[1] = "GoClever $1";
2238 parser[2] = 0;
2239 parser[3] = 0;
2240 parser[4] = 0;
2241 exports.device[127] = parser;
2242 parser = Object.create(null);
2243 parser[0] = new RegExp("; *(Glass \\d+) Build");
2244 parser[1] = "$1";
2245 parser[2] = 0;
2246 parser[3] = 0;
2247 parser[4] = 0;
2248 exports.device[128] = parser;
2249 parser = Object.create(null);
2250 parser[0] = new RegExp("; *(GSmart)[ -]([^/]+) Build");
2251 parser[1] = "$1 $2";
2252 parser[2] = 0;
2253 parser[3] = 0;
2254 parser[4] = 0;
2255 exports.device[129] = parser;
2256 parser = Object.create(null);
2257 parser[0] = new RegExp("; *(imx5[13]_[^/]+) Build");
2258 parser[1] = "Freescale $1";
2259 parser[2] = 0;
2260 parser[3] = 0;
2261 parser[4] = 0;
2262 exports.device[130] = parser;
2263 parser = Object.create(null);
2264 parser[0] = new RegExp("; *Haier[ _\\-]([^/]+) Build");
2265 parser[1] = "Haier $1";
2266 parser[2] = 0;
2267 parser[3] = 0;
2268 parser[4] = 0;
2269 exports.device[131] = parser;
2270 parser = Object.create(null);
2271 parser[0] = new RegExp("; *(PAD1016) Build");
2272 parser[1] = "Haipad $1";
2273 parser[2] = 0;
2274 parser[3] = 0;
2275 parser[4] = 0;
2276 exports.device[132] = parser;
2277 parser = Object.create(null);
2278 parser[0] = new RegExp("; *(M701|M7|M8|M9) Build");
2279 parser[1] = "Haipad $1";
2280 parser[2] = 0;
2281 parser[3] = 0;
2282 parser[4] = 0;
2283 exports.device[133] = parser;
2284 parser = Object.create(null);
2285 parser[0] = new RegExp("; *(SN\\d+T[^;\\)/]*)(?: Build|[;\\)])");
2286 parser[1] = "Hannspree $1";
2287 parser[2] = 0;
2288 parser[3] = 0;
2289 parser[4] = 0;
2290 exports.device[134] = parser;
2291 parser = Object.create(null);
2292 parser[0] = new RegExp("Build/HCL ME Tablet ([^;\\)]+)[\\);]");
2293 parser[1] = "HCLme $1";
2294 parser[2] = 0;
2295 parser[3] = 0;
2296 parser[4] = 0;
2297 exports.device[135] = parser;
2298 parser = Object.create(null);
2299 parser[0] = new RegExp("; *([^;\\/]+) Build/HCL");
2300 parser[1] = "HCLme $1";
2301 parser[2] = 0;
2302 parser[3] = 0;
2303 parser[4] = 0;
2304 exports.device[136] = parser;
2305 parser = Object.create(null);
2306 parser[0] = new RegExp("; *(MID-?\\d{4}C[EM]) Build");
2307 parser[1] = "Hena $1";
2308 parser[2] = 0;
2309 parser[3] = 0;
2310 parser[4] = 0;
2311 exports.device[137] = parser;
2312 parser = Object.create(null);
2313 parser[0] = new RegExp("; *(EG\\d{2,}|HS-[^;/]+|MIRA[^;/]+) Build");
2314 parser[1] = "Hisense $1";
2315 parser[2] = 0;
2316 parser[3] = 0;
2317 parser[4] = 0;
2318 exports.device[138] = parser;
2319 parser = Object.create(null);
2320 parser[0] = new RegExp("; *(andromax[^;/]+) Build");
2321 parser[1] = "Hisense $1";
2322 parser[2] = 0;
2323 parser[3] = 0;
2324 parser[4] = 0;
2325 exports.device[139] = parser;
2326 parser = Object.create(null);
2327 parser[0] = new RegExp("; *(?:AMAZE[ _](S\\d+)|(S\\d+)[ _]AMAZE) Build");
2328 parser[1] = "AMAZE $1$2";
2329 parser[2] = 0;
2330 parser[3] = 0;
2331 parser[4] = 0;
2332 exports.device[140] = parser;
2333 parser = Object.create(null);
2334 parser[0] = new RegExp("; *(PlayBook) Build");
2335 parser[1] = "HP $1";
2336 parser[2] = 0;
2337 parser[3] = 0;
2338 parser[4] = 0;
2339 exports.device[141] = parser;
2340 parser = Object.create(null);
2341 parser[0] = new RegExp("; *HP ([^/]+) Build");
2342 parser[1] = "HP $1";
2343 parser[2] = 0;
2344 parser[3] = 0;
2345 parser[4] = 0;
2346 exports.device[142] = parser;
2347 parser = Object.create(null);
2348 parser[0] = new RegExp("; *([^/]+_tenderloin) Build");
2349 parser[1] = "HP TouchPad";
2350 parser[2] = 0;
2351 parser[3] = 0;
2352 parser[4] = 0;
2353 exports.device[143] = parser;
2354 parser = Object.create(null);
2355 parser[0] = new RegExp("; *(HUAWEI |Huawei-)?([UY][^;/]+) Build/(?:Huawei|HUAWEI)([UY][^\\);]+)\\)");
2356 parser[1] = "$1$2";
2357 parser[2] = 0;
2358 parser[3] = 0;
2359 parser[4] = 0;
2360 exports.device[144] = parser;
2361 parser = Object.create(null);
2362 parser[0] = new RegExp("; *([^;/]+) Build[/ ]Huawei(MT1-U06|[A-Z]+\\d+[^\\);]+)[^\\);]*\\)");
2363 parser[1] = "$1";
2364 parser[2] = 0;
2365 parser[3] = 0;
2366 parser[4] = 0;
2367 exports.device[145] = parser;
2368 parser = Object.create(null);
2369 parser[0] = new RegExp("; *(S7|M860) Build");
2370 parser[1] = "$1";
2371 parser[2] = 0;
2372 parser[3] = 0;
2373 parser[4] = 0;
2374 exports.device[146] = parser;
2375 parser = Object.create(null);
2376 parser[0] = new RegExp("; *((?:HUAWEI|Huawei)[ \\-]?)(MediaPad) Build");
2377 parser[1] = "$1$2";
2378 parser[2] = 0;
2379 parser[3] = 0;
2380 parser[4] = 0;
2381 exports.device[147] = parser;
2382 parser = Object.create(null);
2383 parser[0] = new RegExp("; *((?:HUAWEI[ _]?|Huawei[ _])?Ascend[ _])([^;/]+) Build");
2384 parser[1] = "$1$2";
2385 parser[2] = 0;
2386 parser[3] = 0;
2387 parser[4] = 0;
2388 exports.device[148] = parser;
2389 parser = Object.create(null);
2390 parser[0] = new RegExp("; *((?:HUAWEI|Huawei)[ _\\-]?)((?:G700-|MT-)[^;/]+) Build");
2391 parser[1] = "$1$2";
2392 parser[2] = 0;
2393 parser[3] = 0;
2394 parser[4] = 0;
2395 exports.device[149] = parser;
2396 parser = Object.create(null);
2397 parser[0] = new RegExp("; *((?:HUAWEI|Huawei)[ _\\-]?)([^;/]+) Build");
2398 parser[1] = "$1$2";
2399 parser[2] = 0;
2400 parser[3] = 0;
2401 parser[4] = 0;
2402 exports.device[150] = parser;
2403 parser = Object.create(null);
2404 parser[0] = new RegExp("; *(MediaPad[^;]+|SpringBoard) Build/Huawei");
2405 parser[1] = "$1";
2406 parser[2] = 0;
2407 parser[3] = 0;
2408 parser[4] = 0;
2409 exports.device[151] = parser;
2410 parser = Object.create(null);
2411 parser[0] = new RegExp("; *([^;]+) Build/Huawei");
2412 parser[1] = "$1";
2413 parser[2] = 0;
2414 parser[3] = 0;
2415 parser[4] = 0;
2416 exports.device[152] = parser;
2417 parser = Object.create(null);
2418 parser[0] = new RegExp("; *([Uu])([89]\\d{3}) Build");
2419 parser[1] = "$1$2";
2420 parser[2] = 0;
2421 parser[3] = 0;
2422 parser[4] = 0;
2423 exports.device[153] = parser;
2424 parser = Object.create(null);
2425 parser[0] = new RegExp("; *(?:Ideos |IDEOS )(S7) Build");
2426 parser[1] = "Huawei Ideos$1";
2427 parser[2] = 0;
2428 parser[3] = 0;
2429 parser[4] = 0;
2430 exports.device[154] = parser;
2431 parser = Object.create(null);
2432 parser[0] = new RegExp("; *(?:Ideos |IDEOS )([^;/]+\\s*|\\s*)Build");
2433 parser[1] = "Huawei Ideos$1";
2434 parser[2] = 0;
2435 parser[3] = 0;
2436 parser[4] = 0;
2437 exports.device[155] = parser;
2438 parser = Object.create(null);
2439 parser[0] = new RegExp("; *(Orange Daytona|Pulse|Pulse Mini|Vodafone 858|C8500|C8600|C8650|C8660|Nexus 6P|ATH-.+?) Build[/ ]");
2440 parser[1] = "Huawei $1";
2441 parser[2] = 0;
2442 parser[3] = 0;
2443 parser[4] = 0;
2444 exports.device[156] = parser;
2445 parser = Object.create(null);
2446 parser[0] = new RegExp("; *HTC[ _]([^;]+); Windows Phone");
2447 parser[1] = "HTC $1";
2448 parser[2] = 0;
2449 parser[3] = 0;
2450 parser[4] = 0;
2451 exports.device[157] = parser;
2452 parser = Object.create(null);
2453 parser[0] = new RegExp("; *(?:HTC[ _/])+([^ _/]+)(?:[/\\\\]1\\.0 | V|/| +)\\d+\\.\\d[\\d\\.]*(?: *Build|\\))");
2454 parser[1] = "HTC $1";
2455 parser[2] = 0;
2456 parser[3] = 0;
2457 parser[4] = 0;
2458 exports.device[158] = parser;
2459 parser = Object.create(null);
2460 parser[0] = new RegExp("; *(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+))?(?:[/\\\\]1\\.0 | V|/| +)\\d+\\.\\d[\\d\\.]*(?: *Build|\\))");
2461 parser[1] = "HTC $1 $2";
2462 parser[2] = 0;
2463 parser[3] = 0;
2464 parser[4] = 0;
2465 exports.device[159] = parser;
2466 parser = Object.create(null);
2467 parser[0] = new RegExp("; *(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+))?)?(?:[/\\\\]1\\.0 | V|/| +)\\d+\\.\\d[\\d\\.]*(?: *Build|\\))");
2468 parser[1] = "HTC $1 $2 $3";
2469 parser[2] = 0;
2470 parser[3] = 0;
2471 parser[4] = 0;
2472 exports.device[160] = parser;
2473 parser = Object.create(null);
2474 parser[0] = new RegExp("; *(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+))?)?)?(?:[/\\\\]1\\.0 | V|/| +)\\d+\\.\\d[\\d\\.]*(?: *Build|\\))");
2475 parser[1] = "HTC $1 $2 $3 $4";
2476 parser[2] = 0;
2477 parser[3] = 0;
2478 parser[4] = 0;
2479 exports.device[161] = parser;
2480 parser = Object.create(null);
2481 parser[0] = new RegExp("; *(?:(?:HTC|htc)(?:_blocked)*[ _/])+([^ _/;]+)(?: *Build|[;\\)]| - )");
2482 parser[1] = "HTC $1";
2483 parser[2] = 0;
2484 parser[3] = 0;
2485 parser[4] = 0;
2486 exports.device[162] = parser;
2487 parser = Object.create(null);
2488 parser[0] = new RegExp("; *(?:(?:HTC|htc)(?:_blocked)*[ _/])+([^ _/]+)(?:[ _/]([^ _/;\\)]+))?(?: *Build|[;\\)]| - )");
2489 parser[1] = "HTC $1 $2";
2490 parser[2] = 0;
2491 parser[3] = 0;
2492 parser[4] = 0;
2493 exports.device[163] = parser;
2494 parser = Object.create(null);
2495 parser[0] = new RegExp("; *(?:(?:HTC|htc)(?:_blocked)*[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/;\\)]+))?)?(?: *Build|[;\\)]| - )");
2496 parser[1] = "HTC $1 $2 $3";
2497 parser[2] = 0;
2498 parser[3] = 0;
2499 parser[4] = 0;
2500 exports.device[164] = parser;
2501 parser = Object.create(null);
2502 parser[0] = new RegExp("; *(?:(?:HTC|htc)(?:_blocked)*[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ /;]+))?)?)?(?: *Build|[;\\)]| - )");
2503 parser[1] = "HTC $1 $2 $3 $4";
2504 parser[2] = 0;
2505 parser[3] = 0;
2506 parser[4] = 0;
2507 exports.device[165] = parser;
2508 parser = Object.create(null);
2509 parser[0] = new RegExp("HTC Streaming Player [^\\/]*/[^\\/]*/ htc_([^/]+) /");
2510 parser[1] = "HTC $1";
2511 parser[2] = 0;
2512 parser[3] = 0;
2513 parser[4] = 0;
2514 exports.device[166] = parser;
2515 parser = Object.create(null);
2516 parser[0] = new RegExp("(?:[;,] *|^)(?:htccn_chs-)?HTC[ _-]?([^;]+?)(?: *Build|clay|Android|-?Mozilla| Opera| Profile| UNTRUSTED|[;/\\(\\)]|$)");
2517 parser[1] = "HTC $1";
2518 parser[2] = 0;
2519 parser[3] = 0;
2520 parser[4] = 0;
2521 exports.device[167] = parser;
2522 parser = Object.create(null);
2523 parser[0] = new RegExp("; *(A6277|ADR6200|ADR6300|ADR6350|ADR6400[A-Z]*|ADR6425[A-Z]*|APX515CKT|ARIA|Desire[^_ ]*|Dream|EndeavorU|Eris|Evo|Flyer|HD2|Hero|HERO200|Hero CDMA|HTL21|Incredible|Inspire[A-Z0-9]*|Legend|Liberty|Nexus ?(?:One|HD2)|One|One S C2|One[ _]?(?:S|V|X\\+?)\\w*|PC36100|PG06100|PG86100|S31HT|Sensation|Wildfire)(?: Build|[/;\\(\\)])");
2524 parser[1] = "HTC $1";
2525 parser[2] = 0;
2526 parser[3] = 0;
2527 parser[4] = 0;
2528 exports.device[168] = parser;
2529 parser = Object.create(null);
2530 parser[0] = new RegExp("; *(ADR6200|ADR6400L|ADR6425LVW|Amaze|DesireS?|EndeavorU|Eris|EVO|Evo\\d[A-Z]+|HD2|IncredibleS?|Inspire[A-Z0-9]*|Inspire[A-Z0-9]*|Sensation[A-Z0-9]*|Wildfire)[ _-](.+?)(?:[/;\\)]|Build|MIUI|1\\.0)");
2531 parser[1] = "HTC $1 $2";
2532 parser[2] = 0;
2533 parser[3] = 0;
2534 parser[4] = 0;
2535 exports.device[169] = parser;
2536 parser = Object.create(null);
2537 parser[0] = new RegExp("; *HYUNDAI (T\\d[^/]*) Build");
2538 parser[1] = "Hyundai $1";
2539 parser[2] = 0;
2540 parser[3] = 0;
2541 parser[4] = 0;
2542 exports.device[170] = parser;
2543 parser = Object.create(null);
2544 parser[0] = new RegExp("; *HYUNDAI ([^;/]+) Build");
2545 parser[1] = "Hyundai $1";
2546 parser[2] = 0;
2547 parser[3] = 0;
2548 parser[4] = 0;
2549 exports.device[171] = parser;
2550 parser = Object.create(null);
2551 parser[0] = new RegExp("; *(X700|Hold X|MB-6900) Build");
2552 parser[1] = "Hyundai $1";
2553 parser[2] = 0;
2554 parser[3] = 0;
2555 parser[4] = 0;
2556 exports.device[172] = parser;
2557 parser = Object.create(null);
2558 parser[0] = new RegExp("; *(?:iBall[ _\\-])?(Andi)[ _]?(\\d[^;/]*) Build");
2559 parser[1] = "$1 $2";
2560 parser[2] = 0;
2561 parser[3] = 0;
2562 parser[4] = 0;
2563 exports.device[173] = parser;
2564 parser = Object.create(null);
2565 parser[0] = new RegExp("; *(IBall)(?:[ _]([^;/]+)|) Build");
2566 parser[1] = "$1 $2";
2567 parser[2] = 0;
2568 parser[3] = 0;
2569 parser[4] = 0;
2570 exports.device[174] = parser;
2571 parser = Object.create(null);
2572 parser[0] = new RegExp("; *(NT-\\d+[^ ;/]*|Net[Tt]AB [^;/]+|Mercury [A-Z]+|iconBIT)(?: S/N:[^;/]+)? Build");
2573 parser[1] = "$1";
2574 parser[2] = 0;
2575 parser[3] = 0;
2576 parser[4] = 0;
2577 exports.device[175] = parser;
2578 parser = Object.create(null);
2579 parser[0] = new RegExp("; *(IMO)[ _]([^;/]+) Build");
2580 parser[1] = "$1 $2";
2581 parser[2] = 0;
2582 parser[3] = 0;
2583 parser[4] = 0;
2584 exports.device[176] = parser;
2585 parser = Object.create(null);
2586 parser[0] = new RegExp("; *i-?mobile[ _]([^/]+) Build/");
2587 parser[1] = "i-mobile $1";
2588 parser[2] = 0;
2589 parser[3] = 0;
2590 parser[4] = 0;
2591 exports.device[177] = parser;
2592 parser = Object.create(null);
2593 parser[0] = new RegExp("; *(i-(?:style|note)[^/]*) Build/");
2594 parser[1] = "i-mobile $1";
2595 parser[2] = 0;
2596 parser[3] = 0;
2597 parser[4] = 0;
2598 exports.device[178] = parser;
2599 parser = Object.create(null);
2600 parser[0] = new RegExp("; *(ImPAD) ?(\\d+(?:.)*) Build");
2601 parser[1] = "$1 $2";
2602 parser[2] = 0;
2603 parser[3] = 0;
2604 parser[4] = 0;
2605 exports.device[179] = parser;
2606 parser = Object.create(null);
2607 parser[0] = new RegExp("; *(Infinix)[ _]([^;/]+) Build");
2608 parser[1] = "$1 $2";
2609 parser[2] = 0;
2610 parser[3] = 0;
2611 parser[4] = 0;
2612 exports.device[180] = parser;
2613 parser = Object.create(null);
2614 parser[0] = new RegExp("; *(Informer)[ \\-]([^;/]+) Build");
2615 parser[1] = "$1 $2";
2616 parser[2] = 0;
2617 parser[3] = 0;
2618 parser[4] = 0;
2619 exports.device[181] = parser;
2620 parser = Object.create(null);
2621 parser[0] = new RegExp("; *(TAB) ?([78][12]4) Build");
2622 parser[1] = "Intenso $1";
2623 parser[2] = 0;
2624 parser[3] = 0;
2625 parser[4] = 0;
2626 exports.device[182] = parser;
2627 parser = Object.create(null);
2628 parser[0] = new RegExp("; *(?:Intex[ _])?(AQUA|Aqua)([ _\\.\\-])([^;/]+) *(?:Build|;)");
2629 parser[1] = "$1$2$3";
2630 parser[2] = 0;
2631 parser[3] = 0;
2632 parser[4] = 0;
2633 exports.device[183] = parser;
2634 parser = Object.create(null);
2635 parser[0] = new RegExp("; *(?:INTEX|Intex)(?:[_ ]([^\\ _;/]+))(?:[_ ]([^\\ _;/]+))? *(?:Build|;)");
2636 parser[1] = "$1 $2";
2637 parser[2] = 0;
2638 parser[3] = 0;
2639 parser[4] = 0;
2640 exports.device[184] = parser;
2641 parser = Object.create(null);
2642 parser[0] = new RegExp("; *([iI]Buddy)[ _]?(Connect)(?:_|\\?_| )?([^;/]*) *(?:Build|;)");
2643 parser[1] = "$1 $2 $3";
2644 parser[2] = 0;
2645 parser[3] = 0;
2646 parser[4] = 0;
2647 exports.device[185] = parser;
2648 parser = Object.create(null);
2649 parser[0] = new RegExp("; *(I-Buddy)[ _]([^;/]+) *(?:Build|;)");
2650 parser[1] = "$1 $2";
2651 parser[2] = 0;
2652 parser[3] = 0;
2653 parser[4] = 0;
2654 exports.device[186] = parser;
2655 parser = Object.create(null);
2656 parser[0] = new RegExp("; *(iOCEAN) ([^/]+) Build");
2657 parser[1] = "$1 $2";
2658 parser[2] = 0;
2659 parser[3] = 0;
2660 parser[4] = 0;
2661 exports.device[187] = parser;
2662 parser = Object.create(null);
2663 parser[0] = new RegExp("; *(TP\\d+(?:\\.\\d+)?\\-\\d[^;/]+) Build");
2664 parser[1] = "ionik $1";
2665 parser[2] = 0;
2666 parser[3] = 0;
2667 parser[4] = 0;
2668 exports.device[188] = parser;
2669 parser = Object.create(null);
2670 parser[0] = new RegExp("; *(M702pro) Build");
2671 parser[1] = "$1";
2672 parser[2] = 0;
2673 parser[3] = 0;
2674 parser[4] = 0;
2675 exports.device[189] = parser;
2676 parser = Object.create(null);
2677 parser[0] = new RegExp("; *(DE88Plus|MD70) Build");
2678 parser[1] = "$1";
2679 parser[2] = 0;
2680 parser[3] = 0;
2681 parser[4] = 0;
2682 exports.device[190] = parser;
2683 parser = Object.create(null);
2684 parser[0] = new RegExp("; *IVIO[_\\-]([^;/]+) Build");
2685 parser[1] = "$1";
2686 parser[2] = 0;
2687 parser[3] = 0;
2688 parser[4] = 0;
2689 exports.device[191] = parser;
2690 parser = Object.create(null);
2691 parser[0] = new RegExp("; *(TPC-\\d+|JAY-TECH) Build");
2692 parser[1] = "$1";
2693 parser[2] = 0;
2694 parser[3] = 0;
2695 parser[4] = 0;
2696 exports.device[192] = parser;
2697 parser = Object.create(null);
2698 parser[0] = new RegExp("; *(JY-[^;/]+|G[234]S?) Build");
2699 parser[1] = "$1";
2700 parser[2] = 0;
2701 parser[3] = 0;
2702 parser[4] = 0;
2703 exports.device[193] = parser;
2704 parser = Object.create(null);
2705 parser[0] = new RegExp("; *(JXD)[ _\\-]([^;/]+) Build");
2706 parser[1] = "$1 $2";
2707 parser[2] = 0;
2708 parser[3] = 0;
2709 parser[4] = 0;
2710 exports.device[194] = parser;
2711 parser = Object.create(null);
2712 parser[0] = new RegExp("; *Karbonn[ _]?([^;/]+) *(?:Build|;)");
2713 parser[1] = "$1";
2714 parser[2] = 0;
2715 parser[3] = 0;
2716 parser[4] = 0;
2717 exports.device[195] = parser;
2718 parser = Object.create(null);
2719 parser[0] = new RegExp("; *([^;]+) Build/Karbonn");
2720 parser[1] = "$1";
2721 parser[2] = 0;
2722 parser[3] = 0;
2723 parser[4] = 0;
2724 exports.device[196] = parser;
2725 parser = Object.create(null);
2726 parser[0] = new RegExp("; *(A11|A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2|Titanium S\\d) +Build");
2727 parser[1] = "$1";
2728 parser[2] = 0;
2729 parser[3] = 0;
2730 parser[4] = 0;
2731 exports.device[197] = parser;
2732 parser = Object.create(null);
2733 parser[0] = new RegExp("; *(IS01|IS03|IS05|IS\\d{2}SH) Build");
2734 parser[1] = "$1";
2735 parser[2] = 0;
2736 parser[3] = 0;
2737 parser[4] = 0;
2738 exports.device[198] = parser;
2739 parser = Object.create(null);
2740 parser[0] = new RegExp("; *(IS04) Build");
2741 parser[1] = "$1";
2742 parser[2] = 0;
2743 parser[3] = 0;
2744 parser[4] = 0;
2745 exports.device[199] = parser;
2746 parser = Object.create(null);
2747 parser[0] = new RegExp("; *(IS06|IS\\d{2}PT) Build");
2748 parser[1] = "$1";
2749 parser[2] = 0;
2750 parser[3] = 0;
2751 parser[4] = 0;
2752 exports.device[200] = parser;
2753 parser = Object.create(null);
2754 parser[0] = new RegExp("; *(IS11S) Build");
2755 parser[1] = "$1";
2756 parser[2] = 0;
2757 parser[3] = 0;
2758 parser[4] = 0;
2759 exports.device[201] = parser;
2760 parser = Object.create(null);
2761 parser[0] = new RegExp("; *(IS11CA) Build");
2762 parser[1] = "$1";
2763 parser[2] = 0;
2764 parser[3] = 0;
2765 parser[4] = 0;
2766 exports.device[202] = parser;
2767 parser = Object.create(null);
2768 parser[0] = new RegExp("; *(IS11LG) Build");
2769 parser[1] = "$1";
2770 parser[2] = 0;
2771 parser[3] = 0;
2772 parser[4] = 0;
2773 exports.device[203] = parser;
2774 parser = Object.create(null);
2775 parser[0] = new RegExp("; *(IS11N) Build");
2776 parser[1] = "$1";
2777 parser[2] = 0;
2778 parser[3] = 0;
2779 parser[4] = 0;
2780 exports.device[204] = parser;
2781 parser = Object.create(null);
2782 parser[0] = new RegExp("; *(IS11PT) Build");
2783 parser[1] = "$1";
2784 parser[2] = 0;
2785 parser[3] = 0;
2786 parser[4] = 0;
2787 exports.device[205] = parser;
2788 parser = Object.create(null);
2789 parser[0] = new RegExp("; *(IS12F) Build");
2790 parser[1] = "$1";
2791 parser[2] = 0;
2792 parser[3] = 0;
2793 parser[4] = 0;
2794 exports.device[206] = parser;
2795 parser = Object.create(null);
2796 parser[0] = new RegExp("; *(IS12M) Build");
2797 parser[1] = "$1";
2798 parser[2] = 0;
2799 parser[3] = 0;
2800 parser[4] = 0;
2801 exports.device[207] = parser;
2802 parser = Object.create(null);
2803 parser[0] = new RegExp("; *(IS12S) Build");
2804 parser[1] = "$1";
2805 parser[2] = 0;
2806 parser[3] = 0;
2807 parser[4] = 0;
2808 exports.device[208] = parser;
2809 parser = Object.create(null);
2810 parser[0] = new RegExp("; *(ISW11F) Build");
2811 parser[1] = "$1";
2812 parser[2] = 0;
2813 parser[3] = 0;
2814 parser[4] = 0;
2815 exports.device[209] = parser;
2816 parser = Object.create(null);
2817 parser[0] = new RegExp("; *(ISW11HT) Build");
2818 parser[1] = "$1";
2819 parser[2] = 0;
2820 parser[3] = 0;
2821 parser[4] = 0;
2822 exports.device[210] = parser;
2823 parser = Object.create(null);
2824 parser[0] = new RegExp("; *(ISW11K) Build");
2825 parser[1] = "$1";
2826 parser[2] = 0;
2827 parser[3] = 0;
2828 parser[4] = 0;
2829 exports.device[211] = parser;
2830 parser = Object.create(null);
2831 parser[0] = new RegExp("; *(ISW11M) Build");
2832 parser[1] = "$1";
2833 parser[2] = 0;
2834 parser[3] = 0;
2835 parser[4] = 0;
2836 exports.device[212] = parser;
2837 parser = Object.create(null);
2838 parser[0] = new RegExp("; *(ISW11SC) Build");
2839 parser[1] = "$1";
2840 parser[2] = 0;
2841 parser[3] = 0;
2842 parser[4] = 0;
2843 exports.device[213] = parser;
2844 parser = Object.create(null);
2845 parser[0] = new RegExp("; *(ISW12HT) Build");
2846 parser[1] = "$1";
2847 parser[2] = 0;
2848 parser[3] = 0;
2849 parser[4] = 0;
2850 exports.device[214] = parser;
2851 parser = Object.create(null);
2852 parser[0] = new RegExp("; *(ISW13HT) Build");
2853 parser[1] = "$1";
2854 parser[2] = 0;
2855 parser[3] = 0;
2856 parser[4] = 0;
2857 exports.device[215] = parser;
2858 parser = Object.create(null);
2859 parser[0] = new RegExp("; *(ISW?[0-9]{2}[A-Z]{0,2}) Build");
2860 parser[1] = "$1";
2861 parser[2] = 0;
2862 parser[3] = 0;
2863 parser[4] = 0;
2864 exports.device[216] = parser;
2865 parser = Object.create(null);
2866 parser[0] = new RegExp("; *(INFOBAR [^;/]+) Build");
2867 parser[1] = "$1";
2868 parser[2] = 0;
2869 parser[3] = 0;
2870 parser[4] = 0;
2871 exports.device[217] = parser;
2872 parser = Object.create(null);
2873 parser[0] = new RegExp("; *(JOYPAD|Joypad)[ _]([^;/]+) Build/");
2874 parser[1] = "$1 $2";
2875 parser[2] = 0;
2876 parser[3] = 0;
2877 parser[4] = 0;
2878 exports.device[218] = parser;
2879 parser = Object.create(null);
2880 parser[0] = new RegExp("; *(Vox|VOX|Arc|K080) Build/");
2881 parser[1] = "$1";
2882 parser[2] = 0;
2883 parser[3] = 0;
2884 parser[4] = 0;
2885 exports.device[219] = parser;
2886 parser = Object.create(null);
2887 parser[0] = new RegExp("\\b(Kobo Touch)\\b");
2888 parser[1] = "$1";
2889 parser[2] = 0;
2890 parser[3] = 0;
2891 parser[4] = 0;
2892 exports.device[220] = parser;
2893 parser = Object.create(null);
2894 parser[0] = new RegExp("; *(K-Touch)[ _]([^;/]+) Build");
2895 parser[1] = "$1 $2";
2896 parser[2] = 0;
2897 parser[3] = 0;
2898 parser[4] = 0;
2899 exports.device[221] = parser;
2900 parser = Object.create(null);
2901 parser[0] = new RegExp("; *((?:EV|KM)-S\\d+[A-Z]?) Build");
2902 parser[1] = "$1";
2903 parser[2] = 0;
2904 parser[3] = 0;
2905 parser[4] = 0;
2906 exports.device[222] = parser;
2907 parser = Object.create(null);
2908 parser[0] = new RegExp("; *(Zio|Hydro|Torque|Event|EVENT|Echo|Milano|Rise|URBANO PROGRESSO|WX04K|WX06K|WX10K|KYL21|101K|C5[12]\\d{2}) Build/");
2909 parser[1] = "$1";
2910 parser[2] = 0;
2911 parser[3] = 0;
2912 parser[4] = 0;
2913 exports.device[223] = parser;
2914 parser = Object.create(null);
2915 parser[0] = new RegExp("; *(?:LAVA[ _])?IRIS[ _\\-]?([^/;\\)]+) *(?:;|\\)|Build)");
2916 parser[1] = "Iris $1";
2917 parser[2] = 0;
2918 parser[3] = 0;
2919 parser[4] = 0;
2920 exports.device[224] = parser;
2921 parser = Object.create(null);
2922 parser[0] = new RegExp("; *LAVA[ _]([^;/]+) Build");
2923 parser[1] = "$1";
2924 parser[2] = 0;
2925 parser[3] = 0;
2926 parser[4] = 0;
2927 exports.device[225] = parser;
2928 parser = Object.create(null);
2929 parser[0] = new RegExp("; *(?:(Aspire A1)|(?:LEMON|Lemon)[ _]([^;/]+))_? Build");
2930 parser[1] = "Lemon $1$2";
2931 parser[2] = 0;
2932 parser[3] = 0;
2933 parser[4] = 0;
2934 exports.device[226] = parser;
2935 parser = Object.create(null);
2936 parser[0] = new RegExp("; *(TAB-1012) Build/");
2937 parser[1] = "Lenco $1";
2938 parser[2] = 0;
2939 parser[3] = 0;
2940 parser[4] = 0;
2941 exports.device[227] = parser;
2942 parser = Object.create(null);
2943 parser[0] = new RegExp("; Lenco ([^;/]+) Build/");
2944 parser[1] = "Lenco $1";
2945 parser[2] = 0;
2946 parser[3] = 0;
2947 parser[4] = 0;
2948 exports.device[228] = parser;
2949 parser = Object.create(null);
2950 parser[0] = new RegExp("; *(A1_07|A2107A-H|S2005A-H|S1-37AH0) Build");
2951 parser[1] = "$1";
2952 parser[2] = 0;
2953 parser[3] = 0;
2954 parser[4] = 0;
2955 exports.device[229] = parser;
2956 parser = Object.create(null);
2957 parser[0] = new RegExp("; *(Idea[Tp]ab)[ _]([^;/]+);? Build");
2958 parser[1] = "Lenovo $1 $2";
2959 parser[2] = 0;
2960 parser[3] = 0;
2961 parser[4] = 0;
2962 exports.device[230] = parser;
2963 parser = Object.create(null);
2964 parser[0] = new RegExp("; *(Idea(?:Tab|pad)) ?([^;/]+) Build");
2965 parser[1] = "Lenovo $1 $2";
2966 parser[2] = 0;
2967 parser[3] = 0;
2968 parser[4] = 0;
2969 exports.device[231] = parser;
2970 parser = Object.create(null);
2971 parser[0] = new RegExp("; *(ThinkPad) ?(Tablet) Build/");
2972 parser[1] = "Lenovo $1 $2";
2973 parser[2] = 0;
2974 parser[3] = 0;
2975 parser[4] = 0;
2976 exports.device[232] = parser;
2977 parser = Object.create(null);
2978 parser[0] = new RegExp("; *(?:LNV-)?(?:=?[Ll]enovo[ _\\-]?|LENOVO[ _])+(.+?)(?:Build|[;/\\)])");
2979 parser[1] = "Lenovo $1";
2980 parser[2] = 0;
2981 parser[3] = 0;
2982 parser[4] = 0;
2983 exports.device[233] = parser;
2984 parser = Object.create(null);
2985 parser[0] = new RegExp("[;,] (?:Vodafone )?(SmartTab) ?(II) ?(\\d+) Build/");
2986 parser[1] = "Lenovo $1 $2 $3";
2987 parser[2] = 0;
2988 parser[3] = 0;
2989 parser[4] = 0;
2990 exports.device[234] = parser;
2991 parser = Object.create(null);
2992 parser[0] = new RegExp("; *(?:Ideapad )?K1 Build/");
2993 parser[1] = "Lenovo Ideapad K1";
2994 parser[2] = 0;
2995 parser[3] = 0;
2996 parser[4] = 0;
2997 exports.device[235] = parser;
2998 parser = Object.create(null);
2999 parser[0] = new RegExp("; *(3GC101|3GW10[01]|A390) Build/");
3000 parser[1] = "$1";
3001 parser[2] = 0;
3002 parser[3] = 0;
3003 parser[4] = 0;
3004 exports.device[236] = parser;
3005 parser = Object.create(null);
3006 parser[0] = new RegExp("\\b(?:Lenovo|LENOVO)+[ _\\-]?([^,;:/ ]+)");
3007 parser[1] = "Lenovo $1";
3008 parser[2] = 0;
3009 parser[3] = 0;
3010 parser[4] = 0;
3011 exports.device[237] = parser;
3012 parser = Object.create(null);
3013 parser[0] = new RegExp("; *(MFC\\d+)[A-Z]{2}([^;,/]*),? Build");
3014 parser[1] = "$1$2";
3015 parser[2] = 0;
3016 parser[3] = 0;
3017 parser[4] = 0;
3018 exports.device[238] = parser;
3019 parser = Object.create(null);
3020 parser[0] = new RegExp("; *(E[34][0-9]{2}|LS[6-8][0-9]{2}|VS[6-9][0-9]+[^;/]+|Nexus 4|Nexus 5X?|GT540f?|Optimus (?:2X|G|4X HD)|OptimusX4HD) *(?:Build|;)");
3021 parser[1] = "$1";
3022 parser[2] = 0;
3023 parser[3] = 0;
3024 parser[4] = 0;
3025 exports.device[239] = parser;
3026 parser = Object.create(null);
3027 parser[0] = new RegExp("[;:] *(L-\\d+[A-Z]|LGL\\d+[A-Z]?)(?:/V\\d+)? *(?:Build|[;\\)])");
3028 parser[1] = "$1";
3029 parser[2] = 0;
3030 parser[3] = 0;
3031 parser[4] = 0;
3032 exports.device[240] = parser;
3033 parser = Object.create(null);
3034 parser[0] = new RegExp("; *(LG-)([A-Z]{1,2}\\d{2,}[^,;/\\)\\(]*?)(?:Build| V\\d+|[,;/\\)\\(]|$)");
3035 parser[1] = "$1$2";
3036 parser[2] = 0;
3037 parser[3] = 0;
3038 parser[4] = 0;
3039 exports.device[241] = parser;
3040 parser = Object.create(null);
3041 parser[0] = new RegExp("; *(LG[ \\-]|LG)([^;/]+)[;/]? Build");
3042 parser[1] = "$1$2";
3043 parser[2] = 0;
3044 parser[3] = 0;
3045 parser[4] = 0;
3046 exports.device[242] = parser;
3047 parser = Object.create(null);
3048 parser[0] = new RegExp("^(LG)-([^;/]+)/ Mozilla/.*; Android");
3049 parser[1] = "$1 $2";
3050 parser[2] = 0;
3051 parser[3] = 0;
3052 parser[4] = 0;
3053 exports.device[243] = parser;
3054 parser = Object.create(null);
3055 parser[0] = new RegExp("(Web0S); Linux/(SmartTV)");
3056 parser[1] = "LG $1 $2";
3057 parser[2] = 0;
3058 parser[3] = 0;
3059 parser[4] = 0;
3060 exports.device[244] = parser;
3061 parser = Object.create(null);
3062 parser[0] = new RegExp("; *((?:SMB|smb)[^;/]+) Build/");
3063 parser[1] = "$1";
3064 parser[2] = 0;
3065 parser[3] = 0;
3066 parser[4] = 0;
3067 exports.device[245] = parser;
3068 parser = Object.create(null);
3069 parser[0] = new RegExp("; *(?:Malata|MALATA) ([^;/]+) Build/");
3070 parser[1] = "$1";
3071 parser[2] = 0;
3072 parser[3] = 0;
3073 parser[4] = 0;
3074 exports.device[246] = parser;
3075 parser = Object.create(null);
3076 parser[0] = new RegExp("; *(MS[45][0-9]{3}|MID0[568][NS]?|MID[1-9]|MID[78]0[1-9]|MID970[1-9]|MID100[1-9]) Build/");
3077 parser[1] = "$1";
3078 parser[2] = 0;
3079 parser[3] = 0;
3080 parser[4] = 0;
3081 exports.device[247] = parser;
3082 parser = Object.create(null);
3083 parser[0] = new RegExp("; *(M1052|M806|M9000|M9100|M9701|MID100|MID120|MID125|MID130|MID135|MID140|MID701|MID710|MID713|MID727|MID728|MID731|MID732|MID733|MID735|MID736|MID737|MID760|MID800|MID810|MID820|MID830|MID833|MID835|MID860|MID900|MID930|MID933|MID960|MID980) Build/");
3084 parser[1] = "$1";
3085 parser[2] = 0;
3086 parser[3] = 0;
3087 parser[4] = 0;
3088 exports.device[248] = parser;
3089 parser = Object.create(null);
3090 parser[0] = new RegExp("; *(GenxDroid7|MSD7.*|AX\\d.*|Tab 701|Tab 722) Build/");
3091 parser[1] = "Maxx $1";
3092 parser[2] = 0;
3093 parser[3] = 0;
3094 parser[4] = 0;
3095 exports.device[249] = parser;
3096 parser = Object.create(null);
3097 parser[0] = new RegExp("; *(M-PP[^;/]+|PhonePad ?\\d{2,}[^;/]+) Build");
3098 parser[1] = "Mediacom $1";
3099 parser[2] = 0;
3100 parser[3] = 0;
3101 parser[4] = 0;
3102 exports.device[250] = parser;
3103 parser = Object.create(null);
3104 parser[0] = new RegExp("; *(M-MP[^;/]+|SmartPad ?\\d{2,}[^;/]+) Build");
3105 parser[1] = "Mediacom $1";
3106 parser[2] = 0;
3107 parser[3] = 0;
3108 parser[4] = 0;
3109 exports.device[251] = parser;
3110 parser = Object.create(null);
3111 parser[0] = new RegExp("; *(?:MD_)?LIFETAB[ _]([^;/]+) Build");
3112 parser[1] = "Medion Lifetab $1";
3113 parser[2] = 0;
3114 parser[3] = 0;
3115 parser[4] = 0;
3116 exports.device[252] = parser;
3117 parser = Object.create(null);
3118 parser[0] = new RegExp("; *MEDION ([^;/]+) Build");
3119 parser[1] = "Medion $1";
3120 parser[2] = 0;
3121 parser[3] = 0;
3122 parser[4] = 0;
3123 exports.device[253] = parser;
3124 parser = Object.create(null);
3125 parser[0] = new RegExp("; *(M030|M031|M035|M040|M065|m9) Build");
3126 parser[1] = "Meizu $1";
3127 parser[2] = 0;
3128 parser[3] = 0;
3129 parser[4] = 0;
3130 exports.device[254] = parser;
3131 parser = Object.create(null);
3132 parser[0] = new RegExp("; *(?:meizu_|MEIZU )(.+?) *(?:Build|[;\\)])");
3133 parser[1] = "Meizu $1";
3134 parser[2] = 0;
3135 parser[3] = 0;
3136 parser[4] = 0;
3137 exports.device[255] = parser;
3138 parser = Object.create(null);
3139 parser[0] = new RegExp("; *(?:Micromax[ _](A111|A240)|(A111|A240)) Build");
3140 parser[1] = "Micromax $1$2";
3141 parser[2] = 0;
3142 parser[3] = 0;
3143 parser[4] = 0;
3144 exports.device[256] = parser;
3145 parser = Object.create(null);
3146 parser[0] = new RegExp("; *Micromax[ _](A\\d{2,3}[^;/]*) Build");
3147 parser[1] = "Micromax $1";
3148 parser[2] = 0;
3149 parser[3] = 0;
3150 parser[4] = 0;
3151 exports.device[257] = parser;
3152 parser = Object.create(null);
3153 parser[0] = new RegExp("; *(A\\d{2}|A[12]\\d{2}|A90S|A110Q) Build");
3154 parser[1] = "Micromax $1";
3155 parser[2] = 0;
3156 parser[3] = 0;
3157 parser[4] = 0;
3158 exports.device[258] = parser;
3159 parser = Object.create(null);
3160 parser[0] = new RegExp("; *Micromax[ _](P\\d{3}[^;/]*) Build");
3161 parser[1] = "Micromax $1";
3162 parser[2] = 0;
3163 parser[3] = 0;
3164 parser[4] = 0;
3165 exports.device[259] = parser;
3166 parser = Object.create(null);
3167 parser[0] = new RegExp("; *(P\\d{3}|P\\d{3}\\(Funbook\\)) Build");
3168 parser[1] = "Micromax $1";
3169 parser[2] = 0;
3170 parser[3] = 0;
3171 parser[4] = 0;
3172 exports.device[260] = parser;
3173 parser = Object.create(null);
3174 parser[0] = new RegExp("; *(MITO)[ _\\-]?([^;/]+) Build");
3175 parser[1] = "$1 $2";
3176 parser[2] = 0;
3177 parser[3] = 0;
3178 parser[4] = 0;
3179 exports.device[261] = parser;
3180 parser = Object.create(null);
3181 parser[0] = new RegExp("; *(Cynus)[ _](F5|T\\d|.+?) *(?:Build|[;/\\)])");
3182 parser[1] = "$1 $2";
3183 parser[2] = 0;
3184 parser[3] = 0;
3185 parser[4] = 0;
3186 exports.device[262] = parser;
3187 parser = Object.create(null);
3188 parser[0] = new RegExp("; *(MODECOM )?(FreeTab) ?([^;/]+) Build");
3189 parser[1] = "$1$2 $3";
3190 parser[2] = 0;
3191 parser[3] = 0;
3192 parser[4] = 0;
3193 exports.device[263] = parser;
3194 parser = Object.create(null);
3195 parser[0] = new RegExp("; *(MODECOM )([^;/]+) Build");
3196 parser[1] = "$1 $2";
3197 parser[2] = 0;
3198 parser[3] = 0;
3199 parser[4] = 0;
3200 exports.device[264] = parser;
3201 parser = Object.create(null);
3202 parser[0] = new RegExp("; *(MZ\\d{3}\\+?|MZ\\d{3} 4G|Xoom|XOOM[^;/]*) Build");
3203 parser[1] = "Motorola $1";
3204 parser[2] = 0;
3205 parser[3] = 0;
3206 parser[4] = 0;
3207 exports.device[265] = parser;
3208 parser = Object.create(null);
3209 parser[0] = new RegExp("; *(Milestone )(XT[^;/]*) Build");
3210 parser[1] = "Motorola $1$2";
3211 parser[2] = 0;
3212 parser[3] = 0;
3213 parser[4] = 0;
3214 exports.device[266] = parser;
3215 parser = Object.create(null);
3216 parser[0] = new RegExp("; *(Motoroi ?x|Droid X|DROIDX) Build");
3217 parser[1] = "Motorola $1";
3218 parser[2] = 0;
3219 parser[3] = 0;
3220 parser[4] = 0;
3221 exports.device[267] = parser;
3222 parser = Object.create(null);
3223 parser[0] = new RegExp("; *(Droid[^;/]*|DROID[^;/]*|Milestone[^;/]*|Photon|Triumph|Devour|Titanium) Build");
3224 parser[1] = "Motorola $1";
3225 parser[2] = 0;
3226 parser[3] = 0;
3227 parser[4] = 0;
3228 exports.device[268] = parser;
3229 parser = Object.create(null);
3230 parser[0] = new RegExp("; *(A555|A85[34][^;/]*|A95[356]|ME[58]\\d{2}\\+?|ME600|ME632|ME722|MB\\d{3}\\+?|MT680|MT710|MT870|MT887|MT917|WX435|WX453|WX44[25]|XT\\d{3,4}[A-Z\\+]*|CL[iI]Q|CL[iI]Q XT) Build");
3231 parser[1] = "$1";
3232 parser[2] = 0;
3233 parser[3] = 0;
3234 parser[4] = 0;
3235 exports.device[269] = parser;
3236 parser = Object.create(null);
3237 parser[0] = new RegExp("; *(Motorola MOT-|Motorola[ _\\-]|MOT\\-?)([^;/]+) Build");
3238 parser[1] = "$1$2";
3239 parser[2] = 0;
3240 parser[3] = 0;
3241 parser[4] = 0;
3242 exports.device[270] = parser;
3243 parser = Object.create(null);
3244 parser[0] = new RegExp("; *(Moto[_ ]?|MOT\\-)([^;/]+) Build");
3245 parser[1] = "$1$2";
3246 parser[2] = 0;
3247 parser[3] = 0;
3248 parser[4] = 0;
3249 exports.device[271] = parser;
3250 parser = Object.create(null);
3251 parser[0] = new RegExp("; *((?:MP[DQ]C|MPG\\d{1,4}|MP\\d{3,4}|MID(?:(?:10[234]|114|43|7[247]|8[24]|7)C|8[01]1))[^;/]*) Build");
3252 parser[1] = "$1";
3253 parser[2] = 0;
3254 parser[3] = 0;
3255 parser[4] = 0;
3256 exports.device[272] = parser;
3257 parser = Object.create(null);
3258 parser[0] = new RegExp("; *(?:MSI[ _])?(Primo\\d+|Enjoy[ _\\-][^;/]+) Build");
3259 parser[1] = "$1";
3260 parser[2] = 0;
3261 parser[3] = 0;
3262 parser[4] = 0;
3263 exports.device[273] = parser;
3264 parser = Object.create(null);
3265 parser[0] = new RegExp("; *Multilaser[ _]([^;/]+) Build");
3266 parser[1] = "$1";
3267 parser[2] = 0;
3268 parser[3] = 0;
3269 parser[4] = 0;
3270 exports.device[274] = parser;
3271 parser = Object.create(null);
3272 parser[0] = new RegExp("; *(My)[_]?(Pad)[ _]([^;/]+) Build");
3273 parser[1] = "$1$2 $3";
3274 parser[2] = 0;
3275 parser[3] = 0;
3276 parser[4] = 0;
3277 exports.device[275] = parser;
3278 parser = Object.create(null);
3279 parser[0] = new RegExp("; *(My)\\|?(Phone)[ _]([^;/]+) Build");
3280 parser[1] = "$1$2 $3";
3281 parser[2] = 0;
3282 parser[3] = 0;
3283 parser[4] = 0;
3284 exports.device[276] = parser;
3285 parser = Object.create(null);
3286 parser[0] = new RegExp("; *(A\\d+)[ _](Duo)? Build");
3287 parser[1] = "$1 $2";
3288 parser[2] = 0;
3289 parser[3] = 0;
3290 parser[4] = 0;
3291 exports.device[277] = parser;
3292 parser = Object.create(null);
3293 parser[0] = new RegExp("; *(myTab[^;/]*) Build");
3294 parser[1] = "$1";
3295 parser[2] = 0;
3296 parser[3] = 0;
3297 parser[4] = 0;
3298 exports.device[278] = parser;
3299 parser = Object.create(null);
3300 parser[0] = new RegExp("; *(NABI2?-)([^;/]+) Build/");
3301 parser[1] = "$1$2";
3302 parser[2] = 0;
3303 parser[3] = 0;
3304 parser[4] = 0;
3305 exports.device[279] = parser;
3306 parser = Object.create(null);
3307 parser[0] = new RegExp("; *(N-\\d+[CDE]) Build/");
3308 parser[1] = "$1";
3309 parser[2] = 0;
3310 parser[3] = 0;
3311 parser[4] = 0;
3312 exports.device[280] = parser;
3313 parser = Object.create(null);
3314 parser[0] = new RegExp("; ?(NEC-)(.*) Build/");
3315 parser[1] = "$1$2";
3316 parser[2] = 0;
3317 parser[3] = 0;
3318 parser[4] = 0;
3319 exports.device[281] = parser;
3320 parser = Object.create(null);
3321 parser[0] = new RegExp("; *(LT-NA7) Build/");
3322 parser[1] = "$1";
3323 parser[2] = 0;
3324 parser[3] = 0;
3325 parser[4] = 0;
3326 exports.device[282] = parser;
3327 parser = Object.create(null);
3328 parser[0] = new RegExp("; *(NXM\\d+[A-z0-9_]*|Next\\d[A-z0-9_ \\-]*|NEXT\\d[A-z0-9_ \\-]*|Nextbook [A-z0-9_ ]*|DATAM803HC|M805)(?: Build|[\\);])");
3329 parser[1] = "$1";
3330 parser[2] = 0;
3331 parser[3] = 0;
3332 parser[4] = 0;
3333 exports.device[283] = parser;
3334 parser = Object.create(null);
3335 parser[0] = new RegExp("; *(Nokia)([ _\\-]*)([^;/]*) Build");
3336 parser[1] = "$1$2$3";
3337 parser[2] = 0;
3338 parser[3] = 0;
3339 parser[4] = 0;
3340 exports.device[284] = parser;
3341 parser = Object.create(null);
3342 parser[0] = new RegExp("; *(Nook ?|Barnes & Noble Nook |BN )([^;/]+) Build");
3343 parser[1] = "$1$2";
3344 parser[2] = 0;
3345 parser[3] = 0;
3346 parser[4] = 0;
3347 exports.device[285] = parser;
3348 parser = Object.create(null);
3349 parser[0] = new RegExp("; *(NOOK )?(BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2) Build");
3350 parser[1] = "$1$2";
3351 parser[2] = 0;
3352 parser[3] = 0;
3353 parser[4] = 0;
3354 exports.device[286] = parser;
3355 parser = Object.create(null);
3356 parser[0] = new RegExp("; Build/(Nook)");
3357 parser[1] = "$1";
3358 parser[2] = 0;
3359 parser[3] = 0;
3360 parser[4] = 0;
3361 exports.device[287] = parser;
3362 parser = Object.create(null);
3363 parser[0] = new RegExp("; *(OP110|OliPad[^;/]+) Build");
3364 parser[1] = "Olivetti $1";
3365 parser[2] = 0;
3366 parser[3] = 0;
3367 parser[4] = 0;
3368 exports.device[288] = parser;
3369 parser = Object.create(null);
3370 parser[0] = new RegExp("; *OMEGA[ _\\-](MID[^;/]+) Build");
3371 parser[1] = "Omega $1";
3372 parser[2] = 0;
3373 parser[3] = 0;
3374 parser[4] = 0;
3375 exports.device[289] = parser;
3376 parser = Object.create(null);
3377 parser[0] = new RegExp("^(MID7500|MID\\d+) Mozilla/5\\.0 \\(iPad;");
3378 parser[1] = "Omega $1";
3379 parser[2] = 0;
3380 parser[3] = 0;
3381 parser[4] = 0;
3382 exports.device[290] = parser;
3383 parser = Object.create(null);
3384 parser[0] = new RegExp("; *((?:CIUS|cius)[^;/]*) Build");
3385 parser[1] = "Openpeak $1";
3386 parser[2] = 0;
3387 parser[3] = 0;
3388 parser[4] = 0;
3389 exports.device[291] = parser;
3390 parser = Object.create(null);
3391 parser[0] = new RegExp("; *(Find ?(?:5|7a)|R8[012]\\d{1,2}|T703\\d{0,1}|U70\\d{1,2}T?|X90\\d{1,2}) Build");
3392 parser[1] = "Oppo $1";
3393 parser[2] = 0;
3394 parser[3] = 0;
3395 parser[4] = 0;
3396 exports.device[292] = parser;
3397 parser = Object.create(null);
3398 parser[0] = new RegExp("; *OPPO ?([^;/]+) Build/");
3399 parser[1] = "Oppo $1";
3400 parser[2] = 0;
3401 parser[3] = 0;
3402 parser[4] = 0;
3403 exports.device[293] = parser;
3404 parser = Object.create(null);
3405 parser[0] = new RegExp("; *(?:Odys\\-|ODYS\\-|ODYS )([^;/]+) Build");
3406 parser[1] = "Odys $1";
3407 parser[2] = 0;
3408 parser[3] = 0;
3409 parser[4] = 0;
3410 exports.device[294] = parser;
3411 parser = Object.create(null);
3412 parser[0] = new RegExp("; *(SELECT) ?(7) Build");
3413 parser[1] = "Odys $1 $2";
3414 parser[2] = 0;
3415 parser[3] = 0;
3416 parser[4] = 0;
3417 exports.device[295] = parser;
3418 parser = Object.create(null);
3419 parser[0] = new RegExp("; *(PEDI)_(PLUS)_(W) Build");
3420 parser[1] = "Odys $1 $2 $3";
3421 parser[2] = 0;
3422 parser[3] = 0;
3423 parser[4] = 0;
3424 exports.device[296] = parser;
3425 parser = Object.create(null);
3426 parser[0] = new RegExp("; *(AEON|BRAVIO|FUSION|FUSION2IN1|Genio|EOS10|IEOS[^;/]*|IRON|Loox|LOOX|LOOX Plus|Motion|NOON|NOON_PRO|NEXT|OPOS|PEDI[^;/]*|PRIME[^;/]*|STUDYTAB|TABLO|Tablet-PC-4|UNO_X8|XELIO[^;/]*|Xelio ?\\d+ ?[Pp]ro|XENO10|XPRESS PRO) Build");
3427 parser[1] = "Odys $1";
3428 parser[2] = 0;
3429 parser[3] = 0;
3430 parser[4] = 0;
3431 exports.device[297] = parser;
3432 parser = Object.create(null);
3433 parser[0] = new RegExp("; *(TP-\\d+) Build/");
3434 parser[1] = "Orion $1";
3435 parser[2] = 0;
3436 parser[3] = 0;
3437 parser[4] = 0;
3438 exports.device[298] = parser;
3439 parser = Object.create(null);
3440 parser[0] = new RegExp("; *(G100W?) Build/");
3441 parser[1] = "PackardBell $1";
3442 parser[2] = 0;
3443 parser[3] = 0;
3444 parser[4] = 0;
3445 exports.device[299] = parser;
3446 parser = Object.create(null);
3447 parser[0] = new RegExp("; *(Panasonic)[_ ]([^;/]+) Build");
3448 parser[1] = "$1 $2";
3449 parser[2] = 0;
3450 parser[3] = 0;
3451 parser[4] = 0;
3452 exports.device[300] = parser;
3453 parser = Object.create(null);
3454 parser[0] = new RegExp("; *(FZ-A1B|JT-B1) Build");
3455 parser[1] = "Panasonic $1";
3456 parser[2] = 0;
3457 parser[3] = 0;
3458 parser[4] = 0;
3459 exports.device[301] = parser;
3460 parser = Object.create(null);
3461 parser[0] = new RegExp("; *(dL1|DL1) Build");
3462 parser[1] = "Panasonic $1";
3463 parser[2] = 0;
3464 parser[3] = 0;
3465 parser[4] = 0;
3466 exports.device[302] = parser;
3467 parser = Object.create(null);
3468 parser[0] = new RegExp("; *(SKY[ _])?(IM\\-[AT]\\d{3}[^;/]+).* Build/");
3469 parser[1] = "Pantech $1$2";
3470 parser[2] = 0;
3471 parser[3] = 0;
3472 parser[4] = 0;
3473 exports.device[303] = parser;
3474 parser = Object.create(null);
3475 parser[0] = new RegExp("; *((?:ADR8995|ADR910L|ADR930L|ADR930VW|PTL21|P8000)(?: 4G)?) Build/");
3476 parser[1] = "$1";
3477 parser[2] = 0;
3478 parser[3] = 0;
3479 parser[4] = 0;
3480 exports.device[304] = parser;
3481 parser = Object.create(null);
3482 parser[0] = new RegExp("; *Pantech([^;/]+).* Build/");
3483 parser[1] = "Pantech $1";
3484 parser[2] = 0;
3485 parser[3] = 0;
3486 parser[4] = 0;
3487 exports.device[305] = parser;
3488 parser = Object.create(null);
3489 parser[0] = new RegExp("; *(papyre)[ _\\-]([^;/]+) Build/");
3490 parser[1] = "$1 $2";
3491 parser[2] = 0;
3492 parser[3] = 0;
3493 parser[4] = 0;
3494 exports.device[306] = parser;
3495 parser = Object.create(null);
3496 parser[0] = new RegExp("; *(?:Touchlet )?(X10\\.[^;/]+) Build/");
3497 parser[1] = "Pearl $1";
3498 parser[2] = 0;
3499 parser[3] = 0;
3500 parser[4] = 0;
3501 exports.device[307] = parser;
3502 parser = Object.create(null);
3503 parser[0] = new RegExp("; PHICOMM (i800) Build/");
3504 parser[1] = "Phicomm $1";
3505 parser[2] = 0;
3506 parser[3] = 0;
3507 parser[4] = 0;
3508 exports.device[308] = parser;
3509 parser = Object.create(null);
3510 parser[0] = new RegExp("; PHICOMM ([^;/]+) Build/");
3511 parser[1] = "Phicomm $1";
3512 parser[2] = 0;
3513 parser[3] = 0;
3514 parser[4] = 0;
3515 exports.device[309] = parser;
3516 parser = Object.create(null);
3517 parser[0] = new RegExp("; *(FWS\\d{3}[^;/]+) Build/");
3518 parser[1] = "Phicomm $1";
3519 parser[2] = 0;
3520 parser[3] = 0;
3521 parser[4] = 0;
3522 exports.device[310] = parser;
3523 parser = Object.create(null);
3524 parser[0] = new RegExp("; *(D633|D822|D833|T539|T939|V726|W335|W336|W337|W3568|W536|W5510|W626|W632|W6350|W6360|W6500|W732|W736|W737|W7376|W820|W832|W8355|W8500|W8510|W930) Build");
3525 parser[1] = "$1";
3526 parser[2] = 0;
3527 parser[3] = 0;
3528 parser[4] = 0;
3529 exports.device[311] = parser;
3530 parser = Object.create(null);
3531 parser[0] = new RegExp("; *(?:Philips|PHILIPS)[ _]([^;/]+) Build");
3532 parser[1] = "Philips $1";
3533 parser[2] = 0;
3534 parser[3] = 0;
3535 parser[4] = 0;
3536 exports.device[312] = parser;
3537 parser = Object.create(null);
3538 parser[0] = new RegExp("Android 4\\..*; *(M[12356789]|U[12368]|S[123])\\ ?(pro)? Build");
3539 parser[1] = "Pipo $1$2";
3540 parser[2] = 0;
3541 parser[3] = 0;
3542 parser[4] = 0;
3543 exports.device[313] = parser;
3544 parser = Object.create(null);
3545 parser[0] = new RegExp("; *(MOMO[^;/]+) Build");
3546 parser[1] = "$1";
3547 parser[2] = 0;
3548 parser[3] = 0;
3549 parser[4] = 0;
3550 exports.device[314] = parser;
3551 parser = Object.create(null);
3552 parser[0] = new RegExp("; *(?:Polaroid[ _])?((?:MIDC\\d{3,}|PMID\\d{2,}|PTAB\\d{3,})[^;/]*)(\\/[^;/]*)? Build/");
3553 parser[1] = "$1";
3554 parser[2] = 0;
3555 parser[3] = 0;
3556 parser[4] = 0;
3557 exports.device[315] = parser;
3558 parser = Object.create(null);
3559 parser[0] = new RegExp("; *(?:Polaroid )(Tablet) Build/");
3560 parser[1] = "$1";
3561 parser[2] = 0;
3562 parser[3] = 0;
3563 parser[4] = 0;
3564 exports.device[316] = parser;
3565 parser = Object.create(null);
3566 parser[0] = new RegExp("; *(POMP)[ _\\-](.+?) *(?:Build|[;/\\)])");
3567 parser[1] = "$1 $2";
3568 parser[2] = 0;
3569 parser[3] = 0;
3570 parser[4] = 0;
3571 exports.device[317] = parser;
3572 parser = Object.create(null);
3573 parser[0] = new RegExp("; *(TB07STA|TB10STA|TB07FTA|TB10FTA) Build/");
3574 parser[1] = "$1";
3575 parser[2] = 0;
3576 parser[3] = 0;
3577 parser[4] = 0;
3578 exports.device[318] = parser;
3579 parser = Object.create(null);
3580 parser[0] = new RegExp("; *(?:Positivo )?((?:YPY|Ypy)[^;/]+) Build/");
3581 parser[1] = "$1";
3582 parser[2] = 0;
3583 parser[3] = 0;
3584 parser[4] = 0;
3585 exports.device[319] = parser;
3586 parser = Object.create(null);
3587 parser[0] = new RegExp("; *(MOB-[^;/]+) Build/");
3588 parser[1] = "$1";
3589 parser[2] = 0;
3590 parser[3] = 0;
3591 parser[4] = 0;
3592 exports.device[320] = parser;
3593 parser = Object.create(null);
3594 parser[0] = new RegExp("; *POV[ _\\-]([^;/]+) Build/");
3595 parser[1] = "POV $1";
3596 parser[2] = 0;
3597 parser[3] = 0;
3598 parser[4] = 0;
3599 exports.device[321] = parser;
3600 parser = Object.create(null);
3601 parser[0] = new RegExp("; *((?:TAB-PLAYTAB|TAB-PROTAB|PROTAB|PlayTabPro|Mobii[ _\\-]|TAB-P)[^;/]*) Build/");
3602 parser[1] = "POV $1";
3603 parser[2] = 0;
3604 parser[3] = 0;
3605 parser[4] = 0;
3606 exports.device[322] = parser;
3607 parser = Object.create(null);
3608 parser[0] = new RegExp("; *(?:Prestigio )?((?:PAP|PMP)\\d[^;/]+) Build/");
3609 parser[1] = "Prestigio $1";
3610 parser[2] = 0;
3611 parser[3] = 0;
3612 parser[4] = 0;
3613 exports.device[323] = parser;
3614 parser = Object.create(null);
3615 parser[0] = new RegExp("; *(PLT[0-9]{4}.*) Build/");
3616 parser[1] = "$1";
3617 parser[2] = 0;
3618 parser[3] = 0;
3619 parser[4] = 0;
3620 exports.device[324] = parser;
3621 parser = Object.create(null);
3622 parser[0] = new RegExp("; *(A2|A5|A8|A900)_?(Classic)? Build");
3623 parser[1] = "$1 $2";
3624 parser[2] = 0;
3625 parser[3] = 0;
3626 parser[4] = 0;
3627 exports.device[325] = parser;
3628 parser = Object.create(null);
3629 parser[0] = new RegExp("; *(Q[Mm]obile)_([^_]+)_([^_]+) Build");
3630 parser[1] = "Qmobile $2 $3";
3631 parser[2] = 0;
3632 parser[3] = 0;
3633 parser[4] = 0;
3634 exports.device[326] = parser;
3635 parser = Object.create(null);
3636 parser[0] = new RegExp("; *(Q\\-?[Mm]obile)[_ ](A[^;/]+) Build");
3637 parser[1] = "Qmobile $2";
3638 parser[2] = 0;
3639 parser[3] = 0;
3640 parser[4] = 0;
3641 exports.device[327] = parser;
3642 parser = Object.create(null);
3643 parser[0] = new RegExp("; *(Q\\-Smart)[ _]([^;/]+) Build/");
3644 parser[1] = "$1 $2";
3645 parser[2] = 0;
3646 parser[3] = 0;
3647 parser[4] = 0;
3648 exports.device[328] = parser;
3649 parser = Object.create(null);
3650 parser[0] = new RegExp("; *(Q\\-?[Mm]obile)[ _\\-](S[^;/]+) Build/");
3651 parser[1] = "$1 $2";
3652 parser[2] = 0;
3653 parser[3] = 0;
3654 parser[4] = 0;
3655 exports.device[329] = parser;
3656 parser = Object.create(null);
3657 parser[0] = new RegExp("; *(TA1013) Build");
3658 parser[1] = "$1";
3659 parser[2] = 0;
3660 parser[3] = 0;
3661 parser[4] = 0;
3662 exports.device[330] = parser;
3663 parser = Object.create(null);
3664 parser[0] = new RegExp("; *(RK\\d+),? Build/");
3665 parser[1] = "$1";
3666 parser[2] = 0;
3667 parser[3] = 0;
3668 parser[4] = 0;
3669 exports.device[331] = parser;
3670 parser = Object.create(null);
3671 parser[0] = new RegExp(" Build/(RK\\d+)");
3672 parser[1] = "$1";
3673 parser[2] = 0;
3674 parser[3] = 0;
3675 parser[4] = 0;
3676 exports.device[332] = parser;
3677 parser = Object.create(null);
3678 parser[0] = new RegExp("; *(SAMSUNG |Samsung )?((?:Galaxy (?:Note II|S\\d)|GT-I9082|GT-I9205|GT-N7\\d{3}|SM-N9005)[^;/]*)\\/?[^;/]* Build/");
3679 parser[1] = "Samsung $1$2";
3680 parser[2] = 0;
3681 parser[3] = 0;
3682 parser[4] = 0;
3683 exports.device[333] = parser;
3684 parser = Object.create(null);
3685 parser[0] = new RegExp("; *(Google )?(Nexus [Ss](?: 4G)?) Build/");
3686 parser[1] = "Samsung $1$2";
3687 parser[2] = 0;
3688 parser[3] = 0;
3689 parser[4] = 0;
3690 exports.device[334] = parser;
3691 parser = Object.create(null);
3692 parser[0] = new RegExp("; *(SAMSUNG |Samsung )([^\\/]*)\\/[^ ]* Build/");
3693 parser[1] = "Samsung $2";
3694 parser[2] = 0;
3695 parser[3] = 0;
3696 parser[4] = 0;
3697 exports.device[335] = parser;
3698 parser = Object.create(null);
3699 parser[0] = new RegExp("; *(Galaxy(?: Ace| Nexus| S ?II+|Nexus S| with MCR 1.2| Mini Plus 4G)?) Build/");
3700 parser[1] = "Samsung $1";
3701 parser[2] = 0;
3702 parser[3] = 0;
3703 parser[4] = 0;
3704 exports.device[336] = parser;
3705 parser = Object.create(null);
3706 parser[0] = new RegExp("; *(SAMSUNG[ _\\-] *)+([^;/]+) Build");
3707 parser[1] = "Samsung $2";
3708 parser[2] = 0;
3709 parser[3] = 0;
3710 parser[4] = 0;
3711 exports.device[337] = parser;
3712 parser = Object.create(null);
3713 parser[0] = new RegExp("; *(SAMSUNG-)?(GT\\-[BINPS]\\d{4}[^\\/]*)(\\/[^ ]*) Build");
3714 parser[1] = "Samsung $1$2$3";
3715 parser[2] = 0;
3716 parser[3] = 0;
3717 parser[4] = 0;
3718 exports.device[338] = parser;
3719 parser = Object.create(null);
3720 parser[0] = new RegExp("(?:; *|^)((?:GT\\-[BIiNPS]\\d{4}|I9\\d{2}0[A-Za-z\\+]?\\b)[^;/\\)]*?)(?:Build|Linux|MIUI|[;/\\)])");
3721 parser[1] = "Samsung $1";
3722 parser[2] = 0;
3723 parser[3] = 0;
3724 parser[4] = 0;
3725 exports.device[339] = parser;
3726 parser = Object.create(null);
3727 parser[0] = new RegExp("; (SAMSUNG-)([A-Za-z0-9\\-]+).* Build/");
3728 parser[1] = "Samsung $1$2";
3729 parser[2] = 0;
3730 parser[3] = 0;
3731 parser[4] = 0;
3732 exports.device[340] = parser;
3733 parser = Object.create(null);
3734 parser[0] = new RegExp("; *((?:SCH|SGH|SHV|SHW|SPH|SC|SM)\\-[A-Za-z0-9 ]+)(/?[^ ]*)? Build");
3735 parser[1] = "Samsung $1";
3736 parser[2] = 0;
3737 parser[3] = 0;
3738 parser[4] = 0;
3739 exports.device[341] = parser;
3740 parser = Object.create(null);
3741 parser[0] = new RegExp(" ((?:SCH)\\-[A-Za-z0-9 ]+)(/?[^ ]*)? Build");
3742 parser[1] = "Samsung $1";
3743 parser[2] = 0;
3744 parser[3] = 0;
3745 parser[4] = 0;
3746 exports.device[342] = parser;
3747 parser = Object.create(null);
3748 parser[0] = new RegExp("; *(Behold ?(?:2|II)|YP\\-G[^;/]+|EK-GC100|SCL21|I9300) Build");
3749 parser[1] = "Samsung $1";
3750 parser[2] = 0;
3751 parser[3] = 0;
3752 parser[4] = 0;
3753 exports.device[343] = parser;
3754 parser = Object.create(null);
3755 parser[0] = new RegExp("; *(SH\\-?\\d\\d[^;/]+|SBM\\d[^;/]+) Build");
3756 parser[1] = "$1";
3757 parser[2] = 0;
3758 parser[3] = 0;
3759 parser[4] = 0;
3760 exports.device[344] = parser;
3761 parser = Object.create(null);
3762 parser[0] = new RegExp("; *(SHARP[ -])([^;/]+) Build");
3763 parser[1] = "$1$2";
3764 parser[2] = 0;
3765 parser[3] = 0;
3766 parser[4] = 0;
3767 exports.device[345] = parser;
3768 parser = Object.create(null);
3769 parser[0] = new RegExp("; *(SPX[_\\-]\\d[^;/]*) Build/");
3770 parser[1] = "$1";
3771 parser[2] = 0;
3772 parser[3] = 0;
3773 parser[4] = 0;
3774 exports.device[346] = parser;
3775 parser = Object.create(null);
3776 parser[0] = new RegExp("; *(SX7\\-PEARL\\.GmbH) Build/");
3777 parser[1] = "$1";
3778 parser[2] = 0;
3779 parser[3] = 0;
3780 parser[4] = 0;
3781 exports.device[347] = parser;
3782 parser = Object.create(null);
3783 parser[0] = new RegExp("; *(SP[T]?\\-\\d{2}[^;/]*) Build/");
3784 parser[1] = "$1";
3785 parser[2] = 0;
3786 parser[3] = 0;
3787 parser[4] = 0;
3788 exports.device[348] = parser;
3789 parser = Object.create(null);
3790 parser[0] = new RegExp("; *(SK\\-.*) Build/");
3791 parser[1] = "$1";
3792 parser[2] = 0;
3793 parser[3] = 0;
3794 parser[4] = 0;
3795 exports.device[349] = parser;
3796 parser = Object.create(null);
3797 parser[0] = new RegExp("; *(?:SKYTEX|SX)-([^;/]+) Build");
3798 parser[1] = "$1";
3799 parser[2] = 0;
3800 parser[3] = 0;
3801 parser[4] = 0;
3802 exports.device[350] = parser;
3803 parser = Object.create(null);
3804 parser[0] = new RegExp("; *(IMAGINE [^;/]+) Build");
3805 parser[1] = "$1";
3806 parser[2] = 0;
3807 parser[3] = 0;
3808 parser[4] = 0;
3809 exports.device[351] = parser;
3810 parser = Object.create(null);
3811 parser[0] = new RegExp("; *(SmartQ) ?([^;/]+) Build/");
3812 parser[1] = "$1 $2";
3813 parser[2] = 0;
3814 parser[3] = 0;
3815 parser[4] = 0;
3816 exports.device[352] = parser;
3817 parser = Object.create(null);
3818 parser[0] = new RegExp("; *(WF7C|WF10C|SBT[^;/]+) Build");
3819 parser[1] = "$1";
3820 parser[2] = 0;
3821 parser[3] = 0;
3822 parser[4] = 0;
3823 exports.device[353] = parser;
3824 parser = Object.create(null);
3825 parser[0] = new RegExp("; *(SBM(?:003SH|005SH|006SH|007SH|102SH)) Build");
3826 parser[1] = "$1";
3827 parser[2] = 0;
3828 parser[3] = 0;
3829 parser[4] = 0;
3830 exports.device[354] = parser;
3831 parser = Object.create(null);
3832 parser[0] = new RegExp("; *(003P|101P|101P11C|102P) Build");
3833 parser[1] = "$1";
3834 parser[2] = 0;
3835 parser[3] = 0;
3836 parser[4] = 0;
3837 exports.device[355] = parser;
3838 parser = Object.create(null);
3839 parser[0] = new RegExp("; *(00\\dZ) Build/");
3840 parser[1] = "$1";
3841 parser[2] = 0;
3842 parser[3] = 0;
3843 parser[4] = 0;
3844 exports.device[356] = parser;
3845 parser = Object.create(null);
3846 parser[0] = new RegExp("; HTC(X06HT) Build");
3847 parser[1] = "$1";
3848 parser[2] = 0;
3849 parser[3] = 0;
3850 parser[4] = 0;
3851 exports.device[357] = parser;
3852 parser = Object.create(null);
3853 parser[0] = new RegExp("; *(001HT|X06HT) Build");
3854 parser[1] = "$1";
3855 parser[2] = 0;
3856 parser[3] = 0;
3857 parser[4] = 0;
3858 exports.device[358] = parser;
3859 parser = Object.create(null);
3860 parser[0] = new RegExp("; *(201M) Build");
3861 parser[1] = "$1";
3862 parser[2] = 0;
3863 parser[3] = 0;
3864 parser[4] = 0;
3865 exports.device[359] = parser;
3866 parser = Object.create(null);
3867 parser[0] = new RegExp("; *(ST\\d{4}.*)Build/ST");
3868 parser[1] = "Trekstor $1";
3869 parser[2] = 0;
3870 parser[3] = 0;
3871 parser[4] = 0;
3872 exports.device[360] = parser;
3873 parser = Object.create(null);
3874 parser[0] = new RegExp("; *(ST\\d{4}.*) Build/");
3875 parser[1] = "Trekstor $1";
3876 parser[2] = 0;
3877 parser[3] = 0;
3878 parser[4] = 0;
3879 exports.device[361] = parser;
3880 parser = Object.create(null);
3881 parser[0] = new RegExp("; *(Sony ?Ericsson ?)([^;/]+) Build");
3882 parser[1] = "$1$2";
3883 parser[2] = 0;
3884 parser[3] = 0;
3885 parser[4] = 0;
3886 exports.device[362] = parser;
3887 parser = Object.create(null);
3888 parser[0] = new RegExp("; *((?:SK|ST|E|X|LT|MK|MT|WT)\\d{2}[a-z0-9]*(?:-o)?|R800i|U20i) Build");
3889 parser[1] = "$1";
3890 parser[2] = 0;
3891 parser[3] = 0;
3892 parser[4] = 0;
3893 exports.device[363] = parser;
3894 parser = Object.create(null);
3895 parser[0] = new RegExp("; *(Xperia (?:A8|Arc|Acro|Active|Live with Walkman|Mini|Neo|Play|Pro|Ray|X\\d+)[^;/]*) Build");
3896 parser[1] = "$1";
3897 parser[2] = 0;
3898 parser[3] = 0;
3899 parser[4] = 0;
3900 exports.device[364] = parser;
3901 parser = Object.create(null);
3902 parser[0] = new RegExp("; Sony (Tablet[^;/]+) Build");
3903 parser[1] = "Sony $1";
3904 parser[2] = 0;
3905 parser[3] = 0;
3906 parser[4] = 0;
3907 exports.device[365] = parser;
3908 parser = Object.create(null);
3909 parser[0] = new RegExp("; Sony ([^;/]+) Build");
3910 parser[1] = "Sony $1";
3911 parser[2] = 0;
3912 parser[3] = 0;
3913 parser[4] = 0;
3914 exports.device[366] = parser;
3915 parser = Object.create(null);
3916 parser[0] = new RegExp("; *(Sony)([A-Za-z0-9\\-]+) Build");
3917 parser[1] = "$1 $2";
3918 parser[2] = 0;
3919 parser[3] = 0;
3920 parser[4] = 0;
3921 exports.device[367] = parser;
3922 parser = Object.create(null);
3923 parser[0] = new RegExp("; *(Xperia [^;/]+) Build");
3924 parser[1] = "$1";
3925 parser[2] = 0;
3926 parser[3] = 0;
3927 parser[4] = 0;
3928 exports.device[368] = parser;
3929 parser = Object.create(null);
3930 parser[0] = new RegExp("; *(C(?:1[0-9]|2[0-9]|53|55|6[0-9])[0-9]{2}|D[25]\\d{3}|D6[56]\\d{2}) Build");
3931 parser[1] = "$1";
3932 parser[2] = 0;
3933 parser[3] = 0;
3934 parser[4] = 0;
3935 exports.device[369] = parser;
3936 parser = Object.create(null);
3937 parser[0] = new RegExp("; *(SGP\\d{3}|SGPT\\d{2}) Build");
3938 parser[1] = "$1";
3939 parser[2] = 0;
3940 parser[3] = 0;
3941 parser[4] = 0;
3942 exports.device[370] = parser;
3943 parser = Object.create(null);
3944 parser[0] = new RegExp("; *(NW-Z1000Series) Build");
3945 parser[1] = "$1";
3946 parser[2] = 0;
3947 parser[3] = 0;
3948 parser[4] = 0;
3949 exports.device[371] = parser;
3950 parser = Object.create(null);
3951 parser[0] = new RegExp("PLAYSTATION 3");
3952 parser[1] = "PlayStation 3";
3953 parser[2] = 0;
3954 parser[3] = 0;
3955 parser[4] = 0;
3956 exports.device[372] = parser;
3957 parser = Object.create(null);
3958 parser[0] = new RegExp("(PlayStation (?:Portable|Vita|\\d+))");
3959 parser[1] = "$1";
3960 parser[2] = 0;
3961 parser[3] = 0;
3962 parser[4] = 0;
3963 exports.device[373] = parser;
3964 parser = Object.create(null);
3965 parser[0] = new RegExp("; *((?:CSL_Spice|Spice|SPICE|CSL)[ _\\-]?)?([Mm][Ii])([ _\\-])?(\\d{3}[^;/]*) Build/");
3966 parser[1] = "$1$2$3$4";
3967 parser[2] = 0;
3968 parser[3] = 0;
3969 parser[4] = 0;
3970 exports.device[374] = parser;
3971 parser = Object.create(null);
3972 parser[0] = new RegExp("; *(Sprint )(.+?) *(?:Build|[;/])");
3973 parser[1] = "$1$2";
3974 parser[2] = 0;
3975 parser[3] = 0;
3976 parser[4] = 0;
3977 exports.device[375] = parser;
3978 parser = Object.create(null);
3979 parser[0] = new RegExp("\\b(Sprint)[: ]([^;,/ ]+)");
3980 parser[1] = "$1$2";
3981 parser[2] = 0;
3982 parser[3] = 0;
3983 parser[4] = 0;
3984 exports.device[376] = parser;
3985 parser = Object.create(null);
3986 parser[0] = new RegExp("; *(TAGI[ ]?)(MID) ?([^;/]+) Build/");
3987 parser[1] = "$1$2$3";
3988 parser[2] = 0;
3989 parser[3] = 0;
3990 parser[4] = 0;
3991 exports.device[377] = parser;
3992 parser = Object.create(null);
3993 parser[0] = new RegExp("; *(Oyster500|Opal 800) Build");
3994 parser[1] = "Tecmobile $1";
3995 parser[2] = 0;
3996 parser[3] = 0;
3997 parser[4] = 0;
3998 exports.device[378] = parser;
3999 parser = Object.create(null);
4000 parser[0] = new RegExp("; *(TECNO[ _])([^;/]+) Build/");
4001 parser[1] = "$1$2";
4002 parser[2] = 0;
4003 parser[3] = 0;
4004 parser[4] = 0;
4005 exports.device[379] = parser;
4006 parser = Object.create(null);
4007 parser[0] = new RegExp("; *Android for (Telechips|Techvision) ([^ ]+) ");
4008 parser[1] = "$1 $2";
4009 parser[2] = 0;
4010 parser[3] = 0;
4011 parser[4] = 0;
4012 exports.device[380] = parser;
4013 parser = Object.create(null);
4014 parser[0] = new RegExp("; *(T-Hub2) Build/");
4015 parser[1] = "$1";
4016 parser[2] = 0;
4017 parser[3] = 0;
4018 parser[4] = 0;
4019 exports.device[381] = parser;
4020 parser = Object.create(null);
4021 parser[0] = new RegExp("; *(PAD) ?(100[12]) Build/");
4022 parser[1] = "Terra $1$2";
4023 parser[2] = 0;
4024 parser[3] = 0;
4025 parser[4] = 0;
4026 exports.device[382] = parser;
4027 parser = Object.create(null);
4028 parser[0] = new RegExp("; *(T[BM]-\\d{3}[^;/]+) Build/");
4029 parser[1] = "$1";
4030 parser[2] = 0;
4031 parser[3] = 0;
4032 parser[4] = 0;
4033 exports.device[383] = parser;
4034 parser = Object.create(null);
4035 parser[0] = new RegExp("; *(tolino [^;/]+) Build");
4036 parser[1] = "$1";
4037 parser[2] = 0;
4038 parser[3] = 0;
4039 parser[4] = 0;
4040 exports.device[384] = parser;
4041 parser = Object.create(null);
4042 parser[0] = new RegExp("; *Build/.* (TOLINO_BROWSER)");
4043 parser[1] = "$1";
4044 parser[2] = 0;
4045 parser[3] = 0;
4046 parser[4] = 0;
4047 exports.device[385] = parser;
4048 parser = Object.create(null);
4049 parser[0] = new RegExp("; *(?:CJ[ -])?(ThL|THL)[ -]([^;/]+) Build/");
4050 parser[1] = "$1 $2";
4051 parser[2] = 0;
4052 parser[3] = 0;
4053 parser[4] = 0;
4054 exports.device[386] = parser;
4055 parser = Object.create(null);
4056 parser[0] = new RegExp("; *(T100|T200|T5|W100|W200|W8s) Build/");
4057 parser[1] = "$1";
4058 parser[2] = 0;
4059 parser[3] = 0;
4060 parser[4] = 0;
4061 exports.device[387] = parser;
4062 parser = Object.create(null);
4063 parser[0] = new RegExp("; *(T-Mobile[ _]G2[ _]Touch) Build");
4064 parser[1] = "$1";
4065 parser[2] = 0;
4066 parser[3] = 0;
4067 parser[4] = 0;
4068 exports.device[388] = parser;
4069 parser = Object.create(null);
4070 parser[0] = new RegExp("; *(T-Mobile[ _]G2) Build");
4071 parser[1] = "$1";
4072 parser[2] = 0;
4073 parser[3] = 0;
4074 parser[4] = 0;
4075 exports.device[389] = parser;
4076 parser = Object.create(null);
4077 parser[0] = new RegExp("; *(T-Mobile myTouch Q) Build");
4078 parser[1] = "$1";
4079 parser[2] = 0;
4080 parser[3] = 0;
4081 parser[4] = 0;
4082 exports.device[390] = parser;
4083 parser = Object.create(null);
4084 parser[0] = new RegExp("; *(T-Mobile myTouch) Build");
4085 parser[1] = "$1";
4086 parser[2] = 0;
4087 parser[3] = 0;
4088 parser[4] = 0;
4089 exports.device[391] = parser;
4090 parser = Object.create(null);
4091 parser[0] = new RegExp("; *(T-Mobile_Espresso) Build");
4092 parser[1] = "$1";
4093 parser[2] = 0;
4094 parser[3] = 0;
4095 parser[4] = 0;
4096 exports.device[392] = parser;
4097 parser = Object.create(null);
4098 parser[0] = new RegExp("; *(T-Mobile G1) Build");
4099 parser[1] = "$1";
4100 parser[2] = 0;
4101 parser[3] = 0;
4102 parser[4] = 0;
4103 exports.device[393] = parser;
4104 parser = Object.create(null);
4105 parser[0] = new RegExp("\\b(T-Mobile ?)?(myTouch)[ _]?([34]G)[ _]?([^\\/]*) (?:Mozilla|Build)");
4106 parser[1] = "$1$2 $3 $4";
4107 parser[2] = 0;
4108 parser[3] = 0;
4109 parser[4] = 0;
4110 exports.device[394] = parser;
4111 parser = Object.create(null);
4112 parser[0] = new RegExp("\\b(T-Mobile)_([^_]+)_(.*) Build");
4113 parser[1] = "$1 $2 $3";
4114 parser[2] = 0;
4115 parser[3] = 0;
4116 parser[4] = 0;
4117 exports.device[395] = parser;
4118 parser = Object.create(null);
4119 parser[0] = new RegExp("\\b(T-Mobile)[_ ]?(.*?)Build");
4120 parser[1] = "$1 $2";
4121 parser[2] = 0;
4122 parser[3] = 0;
4123 parser[4] = 0;
4124 exports.device[396] = parser;
4125 parser = Object.create(null);
4126 parser[0] = new RegExp(" (ATP[0-9]{4}) Build");
4127 parser[1] = "$1";
4128 parser[2] = 0;
4129 parser[3] = 0;
4130 parser[4] = 0;
4131 exports.device[397] = parser;
4132 parser = Object.create(null);
4133 parser[0] = new RegExp(" *(TOOKY)[ _\\-]([^;/]+) ?(?:Build|;)");
4134 parser[1] = "$1 $2";
4135 parser[2] = 0;
4136 parser[3] = 0;
4137 parser[4] = 0;
4138 exports.device[398] = parser;
4139 parser = Object.create(null);
4140 parser[0] = new RegExp("\\b(TOSHIBA_AC_AND_AZ|TOSHIBA_FOLIO_AND_A|FOLIO_AND_A)");
4141 parser[1] = "$1";
4142 parser[2] = 0;
4143 parser[3] = 0;
4144 parser[4] = 0;
4145 exports.device[399] = parser;
4146 parser = Object.create(null);
4147 parser[0] = new RegExp("; *([Ff]olio ?100) Build/");
4148 parser[1] = "$1";
4149 parser[2] = 0;
4150 parser[3] = 0;
4151 parser[4] = 0;
4152 exports.device[400] = parser;
4153 parser = Object.create(null);
4154 parser[0] = new RegExp("; *(AT[0-9]{2,3}(?:\\-A|LE\\-A|PE\\-A|SE|a)?|AT7-A|AT1S0|Hikari-iFrame/WDPF-[^;/]+|THRiVE|Thrive) Build/");
4155 parser[1] = "Toshiba $1";
4156 parser[2] = 0;
4157 parser[3] = 0;
4158 parser[4] = 0;
4159 exports.device[401] = parser;
4160 parser = Object.create(null);
4161 parser[0] = new RegExp("; *(TM-MID\\d+[^;/]+|TOUCHMATE|MID-750) Build");
4162 parser[1] = "$1";
4163 parser[2] = 0;
4164 parser[3] = 0;
4165 parser[4] = 0;
4166 exports.device[402] = parser;
4167 parser = Object.create(null);
4168 parser[0] = new RegExp("; *(TM-SM\\d+[^;/]+) Build");
4169 parser[1] = "$1";
4170 parser[2] = 0;
4171 parser[3] = 0;
4172 parser[4] = 0;
4173 exports.device[403] = parser;
4174 parser = Object.create(null);
4175 parser[0] = new RegExp("; *(A10 [Bb]asic2?) Build/");
4176 parser[1] = "$1";
4177 parser[2] = 0;
4178 parser[3] = 0;
4179 parser[4] = 0;
4180 exports.device[404] = parser;
4181 parser = Object.create(null);
4182 parser[0] = new RegExp("; *(TREQ[ _\\-])([^;/]+) Build");
4183 parser[1] = "$1$2";
4184 parser[2] = 0;
4185 parser[3] = 0;
4186 parser[4] = 0;
4187 exports.device[405] = parser;
4188 parser = Object.create(null);
4189 parser[0] = new RegExp("; *(X-?5|X-?3) Build/");
4190 parser[1] = "$1";
4191 parser[2] = 0;
4192 parser[3] = 0;
4193 parser[4] = 0;
4194 exports.device[406] = parser;
4195 parser = Object.create(null);
4196 parser[0] = new RegExp("; *(A502\\+?|A936|A603|X1|X2) Build/");
4197 parser[1] = "$1";
4198 parser[2] = 0;
4199 parser[3] = 0;
4200 parser[4] = 0;
4201 exports.device[407] = parser;
4202 parser = Object.create(null);
4203 parser[0] = new RegExp("(TOUCH(?:TAB|PAD).+?) Build/");
4204 parser[1] = "Versus $1";
4205 parser[2] = 0;
4206 parser[3] = 0;
4207 parser[4] = 0;
4208 exports.device[408] = parser;
4209 parser = Object.create(null);
4210 parser[0] = new RegExp("(VERTU) ([^;/]+) Build/");
4211 parser[1] = "$1 $2";
4212 parser[2] = 0;
4213 parser[3] = 0;
4214 parser[4] = 0;
4215 exports.device[409] = parser;
4216 parser = Object.create(null);
4217 parser[0] = new RegExp("; *(Videocon)[ _\\-]([^;/]+) *(?:Build|;)");
4218 parser[1] = "$1 $2";
4219 parser[2] = 0;
4220 parser[3] = 0;
4221 parser[4] = 0;
4222 exports.device[410] = parser;
4223 parser = Object.create(null);
4224 parser[0] = new RegExp(" (VT\\d{2}[A-Za-z]*) Build");
4225 parser[1] = "$1";
4226 parser[2] = 0;
4227 parser[3] = 0;
4228 parser[4] = 0;
4229 exports.device[411] = parser;
4230 parser = Object.create(null);
4231 parser[0] = new RegExp("; *((?:ViewPad|ViewPhone|VSD)[^;/]+) Build/");
4232 parser[1] = "$1";
4233 parser[2] = 0;
4234 parser[3] = 0;
4235 parser[4] = 0;
4236 exports.device[412] = parser;
4237 parser = Object.create(null);
4238 parser[0] = new RegExp("; *(ViewSonic-)([^;/]+) Build/");
4239 parser[1] = "$1$2";
4240 parser[2] = 0;
4241 parser[3] = 0;
4242 parser[4] = 0;
4243 exports.device[413] = parser;
4244 parser = Object.create(null);
4245 parser[0] = new RegExp("; *(GTablet.*) Build/");
4246 parser[1] = "$1";
4247 parser[2] = 0;
4248 parser[3] = 0;
4249 parser[4] = 0;
4250 exports.device[414] = parser;
4251 parser = Object.create(null);
4252 parser[0] = new RegExp("; *([Vv]ivo)[ _]([^;/]+) Build");
4253 parser[1] = "$1 $2";
4254 parser[2] = 0;
4255 parser[3] = 0;
4256 parser[4] = 0;
4257 exports.device[415] = parser;
4258 parser = Object.create(null);
4259 parser[0] = new RegExp("(Vodafone) (.*) Build/");
4260 parser[1] = "$1 $2";
4261 parser[2] = 0;
4262 parser[3] = 0;
4263 parser[4] = 0;
4264 exports.device[416] = parser;
4265 parser = Object.create(null);
4266 parser[0] = new RegExp("; *(?:Walton[ _\\-])?(Primo[ _\\-][^;/]+) Build");
4267 parser[1] = "Walton $1";
4268 parser[2] = 0;
4269 parser[3] = 0;
4270 parser[4] = 0;
4271 exports.device[417] = parser;
4272 parser = Object.create(null);
4273 parser[0] = new RegExp("; *(?:WIKO[ \\-])?(CINK\\+?|BARRY|BLOOM|DARKFULL|DARKMOON|DARKNIGHT|DARKSIDE|FIZZ|HIGHWAY|IGGY|OZZY|RAINBOW|STAIRWAY|SUBLIM|WAX|CINK [^;/]+) Build/");
4274 parser[1] = "Wiko $1";
4275 parser[2] = 0;
4276 parser[3] = 0;
4277 parser[4] = 0;
4278 exports.device[418] = parser;
4279 parser = Object.create(null);
4280 parser[0] = new RegExp("; *WellcoM-([^;/]+) Build");
4281 parser[1] = "Wellcom $1";
4282 parser[2] = 0;
4283 parser[3] = 0;
4284 parser[4] = 0;
4285 exports.device[419] = parser;
4286 parser = Object.create(null);
4287 parser[0] = new RegExp("(?:(WeTab)-Browser|; (wetab) Build)");
4288 parser[1] = "$1";
4289 parser[2] = 0;
4290 parser[3] = 0;
4291 parser[4] = 0;
4292 exports.device[420] = parser;
4293 parser = Object.create(null);
4294 parser[0] = new RegExp("; *(AT-AS[^;/]+) Build");
4295 parser[1] = "Wolfgang $1";
4296 parser[2] = 0;
4297 parser[3] = 0;
4298 parser[4] = 0;
4299 exports.device[421] = parser;
4300 parser = Object.create(null);
4301 parser[0] = new RegExp("; *(?:Woxter|Wxt) ([^;/]+) Build");
4302 parser[1] = "Woxter $1";
4303 parser[2] = 0;
4304 parser[3] = 0;
4305 parser[4] = 0;
4306 exports.device[422] = parser;
4307 parser = Object.create(null);
4308 parser[0] = new RegExp("; *(?:Xenta |Luna )?(TAB[234][0-9]{2}|TAB0[78]-\\d{3}|TAB0?9-\\d{3}|TAB1[03]-\\d{3}|SMP\\d{2}-\\d{3}) Build/");
4309 parser[1] = "Yarvik $1";
4310 parser[2] = 0;
4311 parser[3] = 0;
4312 parser[4] = 0;
4313 exports.device[423] = parser;
4314 parser = Object.create(null);
4315 parser[0] = new RegExp("; *([A-Z]{2,4})(M\\d{3,}[A-Z]{2})([^;\\)\\/]*)(?: Build|[;\\)])");
4316 parser[1] = "Yifang $1$2$3";
4317 parser[2] = 0;
4318 parser[3] = 0;
4319 parser[4] = 0;
4320 exports.device[424] = parser;
4321 parser = Object.create(null);
4322 parser[0] = new RegExp("; *((MI|HM|MI-ONE|Redmi)[ -](NOTE |Note )?[^;/]*) (Build|MIUI)/");
4323 parser[1] = "XiaoMi $1";
4324 parser[2] = 0;
4325 parser[3] = 0;
4326 parser[4] = 0;
4327 exports.device[425] = parser;
4328 parser = Object.create(null);
4329 parser[0] = new RegExp("; *XOLO[ _]([^;/]*tab.*) Build");
4330 parser[1] = "Xolo $1";
4331 parser[2] = 0;
4332 parser[3] = 0;
4333 parser[4] = 0;
4334 exports.device[426] = parser;
4335 parser = Object.create(null);
4336 parser[0] = new RegExp("; *XOLO[ _]([^;/]+) Build");
4337 parser[1] = "Xolo $1";
4338 parser[2] = 0;
4339 parser[3] = 0;
4340 parser[4] = 0;
4341 exports.device[427] = parser;
4342 parser = Object.create(null);
4343 parser[0] = new RegExp("; *(q\\d0{2,3}[a-z]?) Build");
4344 parser[1] = "Xolo $1";
4345 parser[2] = 0;
4346 parser[3] = 0;
4347 parser[4] = 0;
4348 exports.device[428] = parser;
4349 parser = Object.create(null);
4350 parser[0] = new RegExp("; *(PAD ?[79]\\d+[^;/]*|TelePAD\\d+[^;/]) Build");
4351 parser[1] = "Xoro $1";
4352 parser[2] = 0;
4353 parser[3] = 0;
4354 parser[4] = 0;
4355 exports.device[429] = parser;
4356 parser = Object.create(null);
4357 parser[0] = new RegExp("; *(?:(?:ZOPO|Zopo)[ _]([^;/]+)|(ZP ?(?:\\d{2}[^;/]+|C2))|(C[2379])) Build");
4358 parser[1] = "$1$2$3";
4359 parser[2] = 0;
4360 parser[3] = 0;
4361 parser[4] = 0;
4362 exports.device[430] = parser;
4363 parser = Object.create(null);
4364 parser[0] = new RegExp("; *(ZiiLABS) (Zii[^;/]*) Build");
4365 parser[1] = "$1 $2";
4366 parser[2] = 0;
4367 parser[3] = 0;
4368 parser[4] = 0;
4369 exports.device[431] = parser;
4370 parser = Object.create(null);
4371 parser[0] = new RegExp("; *(Zii)_([^;/]*) Build");
4372 parser[1] = "$1 $2";
4373 parser[2] = 0;
4374 parser[3] = 0;
4375 parser[4] = 0;
4376 exports.device[432] = parser;
4377 parser = Object.create(null);
4378 parser[0] = new RegExp("; *(ARIZONA|(?:ATLAS|Atlas) W|D930|Grand (?:[SX][^;]*|Era|Memo[^;]*)|JOE|(?:Kis|KIS)\\b[^;]*|Libra|Light [^;]*|N8[056][01]|N850L|N8000|N9[15]\\d{2}|N9810|NX501|Optik|(?:Vip )Racer[^;]*|RacerII|RACERII|San Francisco[^;]*|V9[AC]|V55|V881|Z[679][0-9]{2}[A-z]?) Build");
4379 parser[1] = "$1";
4380 parser[2] = 0;
4381 parser[3] = 0;
4382 parser[4] = 0;
4383 exports.device[433] = parser;
4384 parser = Object.create(null);
4385 parser[0] = new RegExp("; *([A-Z]\\d+)_USA_[^;]* Build");
4386 parser[1] = "$1";
4387 parser[2] = 0;
4388 parser[3] = 0;
4389 parser[4] = 0;
4390 exports.device[434] = parser;
4391 parser = Object.create(null);
4392 parser[0] = new RegExp("; *(SmartTab\\d+)[^;]* Build");
4393 parser[1] = "$1";
4394 parser[2] = 0;
4395 parser[3] = 0;
4396 parser[4] = 0;
4397 exports.device[435] = parser;
4398 parser = Object.create(null);
4399 parser[0] = new RegExp("; *(?:Blade|BLADE|ZTE-BLADE)([^;/]*) Build");
4400 parser[1] = "ZTE Blade$1";
4401 parser[2] = 0;
4402 parser[3] = 0;
4403 parser[4] = 0;
4404 exports.device[436] = parser;
4405 parser = Object.create(null);
4406 parser[0] = new RegExp("; *(?:Skate|SKATE|ZTE-SKATE)([^;/]*) Build");
4407 parser[1] = "ZTE Skate$1";
4408 parser[2] = 0;
4409 parser[3] = 0;
4410 parser[4] = 0;
4411 exports.device[437] = parser;
4412 parser = Object.create(null);
4413 parser[0] = new RegExp("; *(Orange |Optimus )(Monte Carlo|San Francisco) Build");
4414 parser[1] = "$1$2";
4415 parser[2] = 0;
4416 parser[3] = 0;
4417 parser[4] = 0;
4418 exports.device[438] = parser;
4419 parser = Object.create(null);
4420 parser[0] = new RegExp("; *(?:ZXY-ZTE_|ZTE\\-U |ZTE[\\- _]|ZTE-C[_ ])([^;/]+) Build");
4421 parser[1] = "ZTE $1";
4422 parser[2] = 0;
4423 parser[3] = 0;
4424 parser[4] = 0;
4425 exports.device[439] = parser;
4426 parser = Object.create(null);
4427 parser[0] = new RegExp("; (BASE) (lutea|Lutea 2|Tab[^;]*) Build");
4428 parser[1] = "$1 $2";
4429 parser[2] = 0;
4430 parser[3] = 0;
4431 parser[4] = 0;
4432 exports.device[440] = parser;
4433 parser = Object.create(null);
4434 parser[0] = new RegExp("; (Avea inTouch 2|soft stone|tmn smart a7|Movistar[ _]Link) Build");
4435 parser[1] = "$1";
4436 parser[2] = 0;
4437 parser[3] = 0;
4438 parser[4] = 0;
4439 exports.device[441] = parser;
4440 parser = Object.create(null);
4441 parser[0] = new RegExp("; *(vp9plus)\\)");
4442 parser[1] = "$1";
4443 parser[2] = 0;
4444 parser[3] = 0;
4445 parser[4] = 0;
4446 exports.device[442] = parser;
4447 parser = Object.create(null);
4448 parser[0] = new RegExp("; ?(Cloud[ _]Z5|z1000|Z99 2G|z99|z930|z999|z990|z909|Z919|z900) Build/");
4449 parser[1] = "$1";
4450 parser[2] = 0;
4451 parser[3] = 0;
4452 parser[4] = 0;
4453 exports.device[443] = parser;
4454 parser = Object.create(null);
4455 parser[0] = new RegExp("; ?(KFOT|Kindle Fire) Build\\b");
4456 parser[1] = "Kindle Fire";
4457 parser[2] = 0;
4458 parser[3] = 0;
4459 parser[4] = 0;
4460 exports.device[444] = parser;
4461 parser = Object.create(null);
4462 parser[0] = new RegExp("; ?(KFOTE|Amazon Kindle Fire2) Build\\b");
4463 parser[1] = "Kindle Fire 2";
4464 parser[2] = 0;
4465 parser[3] = 0;
4466 parser[4] = 0;
4467 exports.device[445] = parser;
4468 parser = Object.create(null);
4469 parser[0] = new RegExp("; ?(KFTT) Build\\b");
4470 parser[1] = "Kindle Fire HD";
4471 parser[2] = 0;
4472 parser[3] = 0;
4473 parser[4] = 0;
4474 exports.device[446] = parser;
4475 parser = Object.create(null);
4476 parser[0] = new RegExp("; ?(KFJWI) Build\\b");
4477 parser[1] = "Kindle Fire HD 8.9\" WiFi";
4478 parser[2] = 0;
4479 parser[3] = 0;
4480 parser[4] = 0;
4481 exports.device[447] = parser;
4482 parser = Object.create(null);
4483 parser[0] = new RegExp("; ?(KFJWA) Build\\b");
4484 parser[1] = "Kindle Fire HD 8.9\" 4G";
4485 parser[2] = 0;
4486 parser[3] = 0;
4487 parser[4] = 0;
4488 exports.device[448] = parser;
4489 parser = Object.create(null);
4490 parser[0] = new RegExp("; ?(KFSOWI) Build\\b");
4491 parser[1] = "Kindle Fire HD 7\" WiFi";
4492 parser[2] = 0;
4493 parser[3] = 0;
4494 parser[4] = 0;
4495 exports.device[449] = parser;
4496 parser = Object.create(null);
4497 parser[0] = new RegExp("; ?(KFTHWI) Build\\b");
4498 parser[1] = "Kindle Fire HDX 7\" WiFi";
4499 parser[2] = 0;
4500 parser[3] = 0;
4501 parser[4] = 0;
4502 exports.device[450] = parser;
4503 parser = Object.create(null);
4504 parser[0] = new RegExp("; ?(KFTHWA) Build\\b");
4505 parser[1] = "Kindle Fire HDX 7\" 4G";
4506 parser[2] = 0;
4507 parser[3] = 0;
4508 parser[4] = 0;
4509 exports.device[451] = parser;
4510 parser = Object.create(null);
4511 parser[0] = new RegExp("; ?(KFAPWI) Build\\b");
4512 parser[1] = "Kindle Fire HDX 8.9\" WiFi";
4513 parser[2] = 0;
4514 parser[3] = 0;
4515 parser[4] = 0;
4516 exports.device[452] = parser;
4517 parser = Object.create(null);
4518 parser[0] = new RegExp("; ?(KFAPWA) Build\\b");
4519 parser[1] = "Kindle Fire HDX 8.9\" 4G";
4520 parser[2] = 0;
4521 parser[3] = 0;
4522 parser[4] = 0;
4523 exports.device[453] = parser;
4524 parser = Object.create(null);
4525 parser[0] = new RegExp("; ?Amazon ([^;/]+) Build\\b");
4526 parser[1] = "$1";
4527 parser[2] = 0;
4528 parser[3] = 0;
4529 parser[4] = 0;
4530 exports.device[454] = parser;
4531 parser = Object.create(null);
4532 parser[0] = new RegExp("; ?(Kindle) Build\\b");
4533 parser[1] = "Kindle";
4534 parser[2] = 0;
4535 parser[3] = 0;
4536 parser[4] = 0;
4537 exports.device[455] = parser;
4538 parser = Object.create(null);
4539 parser[0] = new RegExp("; ?(Silk)/(\\d+)\\.(\\d+)(?:\\.([0-9\\-]+))? Build\\b");
4540 parser[1] = "Kindle Fire";
4541 parser[2] = 0;
4542 parser[3] = 0;
4543 parser[4] = 0;
4544 exports.device[456] = parser;
4545 parser = Object.create(null);
4546 parser[0] = new RegExp(" (Kindle)/(\\d+\\.\\d+)");
4547 parser[1] = "Kindle";
4548 parser[2] = 0;
4549 parser[3] = 0;
4550 parser[4] = 0;
4551 exports.device[457] = parser;
4552 parser = Object.create(null);
4553 parser[0] = new RegExp(" (Silk|Kindle)/(\\d+)\\.");
4554 parser[1] = "Kindle";
4555 parser[2] = 0;
4556 parser[3] = 0;
4557 parser[4] = 0;
4558 exports.device[458] = parser;
4559 parser = Object.create(null);
4560 parser[0] = new RegExp("(sprd)\\-([^/]+)/");
4561 parser[1] = "$1 $2";
4562 parser[2] = 0;
4563 parser[3] = 0;
4564 parser[4] = 0;
4565 exports.device[459] = parser;
4566 parser = Object.create(null);
4567 parser[0] = new RegExp("; *(H\\d{2}00\\+?) Build");
4568 parser[1] = "$1";
4569 parser[2] = 0;
4570 parser[3] = 0;
4571 parser[4] = 0;
4572 exports.device[460] = parser;
4573 parser = Object.create(null);
4574 parser[0] = new RegExp("; *(iphone|iPhone5) Build/");
4575 parser[1] = "Xianghe $1";
4576 parser[2] = 0;
4577 parser[3] = 0;
4578 parser[4] = 0;
4579 exports.device[461] = parser;
4580 parser = Object.create(null);
4581 parser[0] = new RegExp("; *(e\\d{4}[a-z]?_?v\\d+|v89_[^;/]+)[^;/]+ Build/");
4582 parser[1] = "Xianghe $1";
4583 parser[2] = 0;
4584 parser[3] = 0;
4585 parser[4] = 0;
4586 exports.device[462] = parser;
4587 parser = Object.create(null);
4588 parser[0] = new RegExp("\\bUSCC[_\\-]?([^ ;/\\)]+)");
4589 parser[1] = "$1";
4590 parser[2] = 0;
4591 parser[3] = 0;
4592 parser[4] = 0;
4593 exports.device[463] = parser;
4594 parser = Object.create(null);
4595 parser[0] = new RegExp("Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?)?(?:ALCATEL)[^;]*; *([^;,\\)]+)");
4596 parser[1] = "Alcatel $1";
4597 parser[2] = 0;
4598 parser[3] = 0;
4599 parser[4] = 0;
4600 exports.device[464] = parser;
4601 parser = Object.create(null);
4602 parser[0] = new RegExp("Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?)?(?:ASUS|Asus)[^;]*; *([^;,\\)]+)");
4603 parser[1] = "Asus $1";
4604 parser[2] = 0;
4605 parser[3] = 0;
4606 parser[4] = 0;
4607 exports.device[465] = parser;
4608 parser = Object.create(null);
4609 parser[0] = new RegExp("Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?)?(?:DELL|Dell)[^;]*; *([^;,\\)]+)");
4610 parser[1] = "Dell $1";
4611 parser[2] = 0;
4612 parser[3] = 0;
4613 parser[4] = 0;
4614 exports.device[466] = parser;
4615 parser = Object.create(null);
4616 parser[0] = new RegExp("Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?)?(?:HTC|Htc|HTC_blocked[^;]*)[^;]*; *(?:HTC)?([^;,\\)]+)");
4617 parser[1] = "HTC $1";
4618 parser[2] = 0;
4619 parser[3] = 0;
4620 parser[4] = 0;
4621 exports.device[467] = parser;
4622 parser = Object.create(null);
4623 parser[0] = new RegExp("Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?)?(?:HUAWEI)[^;]*; *(?:HUAWEI )?([^;,\\)]+)");
4624 parser[1] = "Huawei $1";
4625 parser[2] = 0;
4626 parser[3] = 0;
4627 parser[4] = 0;
4628 exports.device[468] = parser;
4629 parser = Object.create(null);
4630 parser[0] = new RegExp("Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?)?(?:LG|Lg)[^;]*; *(?:LG[ \\-])?([^;,\\)]+)");
4631 parser[1] = "LG $1";
4632 parser[2] = 0;
4633 parser[3] = 0;
4634 parser[4] = 0;
4635 exports.device[469] = parser;
4636 parser = Object.create(null);
4637 parser[0] = new RegExp("Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?)?(?:NOKIA|Nokia)[^;]*; *(?:NOKIA ?|Nokia ?|LUMIA ?|[Ll]umia ?)*(\\d{3,}[^;\\)]*)");
4638 parser[1] = "Lumia $1";
4639 parser[2] = 0;
4640 parser[3] = 0;
4641 parser[4] = 0;
4642 exports.device[470] = parser;
4643 parser = Object.create(null);
4644 parser[0] = new RegExp("Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?)?(?:NOKIA|Nokia)[^;]*; *(RM-\\d{3,})");
4645 parser[1] = "Nokia $1";
4646 parser[2] = 0;
4647 parser[3] = 0;
4648 parser[4] = 0;
4649 exports.device[471] = parser;
4650 parser = Object.create(null);
4651 parser[0] = new RegExp("(?:Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)]|WPDesktop;) ?(?:ARM; ?Touch; ?|Touch; ?)?(?:NOKIA|Nokia)[^;]*; *(?:NOKIA ?|Nokia ?|LUMIA ?|[Ll]umia ?)*([^;\\)]+)");
4652 parser[1] = "Nokia $1";
4653 parser[2] = 0;
4654 parser[3] = 0;
4655 parser[4] = 0;
4656 exports.device[472] = parser;
4657 parser = Object.create(null);
4658 parser[0] = new RegExp("Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?)?(?:Microsoft(?: Corporation)?)[^;]*; *([^;,\\)]+)");
4659 parser[1] = "Microsoft $1";
4660 parser[2] = 0;
4661 parser[3] = 0;
4662 parser[4] = 0;
4663 exports.device[473] = parser;
4664 parser = Object.create(null);
4665 parser[0] = new RegExp("Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?)?(?:SAMSUNG)[^;]*; *(?:SAMSUNG )?([^;,\\.\\)]+)");
4666 parser[1] = "Samsung $1";
4667 parser[2] = 0;
4668 parser[3] = 0;
4669 parser[4] = 0;
4670 exports.device[474] = parser;
4671 parser = Object.create(null);
4672 parser[0] = new RegExp("Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?)?(?:TOSHIBA|FujitsuToshibaMobileCommun)[^;]*; *([^;,\\)]+)");
4673 parser[1] = "Toshiba $1";
4674 parser[2] = 0;
4675 parser[3] = 0;
4676 parser[4] = 0;
4677 exports.device[475] = parser;
4678 parser = Object.create(null);
4679 parser[0] = new RegExp("Windows Phone [^;]+; .*?IEMobile/[^;\\)]+[;\\)] ?(?:ARM; ?Touch; ?|Touch; ?|WpsLondonTest; ?)?([^;]+); *([^;,\\)]+)");
4680 parser[1] = "$1 $2";
4681 parser[2] = 0;
4682 parser[3] = 0;
4683 parser[4] = 0;
4684 exports.device[476] = parser;
4685 parser = Object.create(null);
4686 parser[0] = new RegExp("(?:^|; )SAMSUNG\\-([A-Za-z0-9\\-]+).* Bada/");
4687 parser[1] = "Samsung $1";
4688 parser[2] = 0;
4689 parser[3] = 0;
4690 parser[4] = 0;
4691 exports.device[477] = parser;
4692 parser = Object.create(null);
4693 parser[0] = new RegExp("\\(Mobile; ALCATEL ?(One|ONE) ?(Touch|TOUCH) ?([^;/]+)(?:/[^;]+)?; rv:[^\\)]+\\) Gecko/[^\\/]+ Firefox/");
4694 parser[1] = "Alcatel $1 $2 $3";
4695 parser[2] = 0;
4696 parser[3] = 0;
4697 parser[4] = 0;
4698 exports.device[478] = parser;
4699 parser = Object.create(null);
4700 parser[0] = new RegExp("\\(Mobile; (?:ZTE([^;]+)|(OpenC)); rv:[^\\)]+\\) Gecko/[^\\/]+ Firefox/");
4701 parser[1] = "ZTE $1$2";
4702 parser[2] = 0;
4703 parser[3] = 0;
4704 parser[4] = 0;
4705 exports.device[479] = parser;
4706 parser = Object.create(null);
4707 parser[0] = new RegExp("Nokia(N[0-9]+)([A-z_\\-][A-z0-9_\\-]*)");
4708 parser[1] = "Nokia $1";
4709 parser[2] = 0;
4710 parser[3] = 0;
4711 parser[4] = 0;
4712 exports.device[480] = parser;
4713 parser = Object.create(null);
4714 parser[0] = new RegExp("(?:NOKIA|Nokia)(?:\\-| *)(?:([A-Za-z0-9]+)\\-[0-9a-f]{32}|([A-Za-z0-9\\-]+)(?:UCBrowser)|([A-Za-z0-9\\-]+))");
4715 parser[1] = "Nokia $1$2$3";
4716 parser[2] = 0;
4717 parser[3] = 0;
4718 parser[4] = 0;
4719 exports.device[481] = parser;
4720 parser = Object.create(null);
4721 parser[0] = new RegExp("Lumia ([A-Za-z0-9\\-]+)");
4722 parser[1] = "Lumia $1";
4723 parser[2] = 0;
4724 parser[3] = 0;
4725 parser[4] = 0;
4726 exports.device[482] = parser;
4727 parser = Object.create(null);
4728 parser[0] = new RegExp("\\(Symbian; U; S60 V5; [A-z]{2}\\-[A-z]{2}; (SonyEricsson|Samsung|Nokia|LG)([^;/]+)\\)");
4729 parser[1] = "$1 $2";
4730 parser[2] = 0;
4731 parser[3] = 0;
4732 parser[4] = 0;
4733 exports.device[483] = parser;
4734 parser = Object.create(null);
4735 parser[0] = new RegExp("\\(Symbian(?:/3)?; U; ([^;]+);");
4736 parser[1] = "Nokia $1";
4737 parser[2] = 0;
4738 parser[3] = 0;
4739 parser[4] = 0;
4740 exports.device[484] = parser;
4741 parser = Object.create(null);
4742 parser[0] = new RegExp("BB10; ([A-Za-z0-9\\- ]+)\\)");
4743 parser[1] = "BlackBerry $1";
4744 parser[2] = 0;
4745 parser[3] = 0;
4746 parser[4] = 0;
4747 exports.device[485] = parser;
4748 parser = Object.create(null);
4749 parser[0] = new RegExp("Play[Bb]ook.+RIM Tablet OS");
4750 parser[1] = "BlackBerry Playbook";
4751 parser[2] = 0;
4752 parser[3] = 0;
4753 parser[4] = 0;
4754 exports.device[486] = parser;
4755 parser = Object.create(null);
4756 parser[0] = new RegExp("Black[Bb]erry ([0-9]+);");
4757 parser[1] = "BlackBerry $1";
4758 parser[2] = 0;
4759 parser[3] = 0;
4760 parser[4] = 0;
4761 exports.device[487] = parser;
4762 parser = Object.create(null);
4763 parser[0] = new RegExp("Black[Bb]erry([0-9]+)");
4764 parser[1] = "BlackBerry $1";
4765 parser[2] = 0;
4766 parser[3] = 0;
4767 parser[4] = 0;
4768 exports.device[488] = parser;
4769 parser = Object.create(null);
4770 parser[0] = new RegExp("Black[Bb]erry;");
4771 parser[1] = "BlackBerry";
4772 parser[2] = 0;
4773 parser[3] = 0;
4774 parser[4] = 0;
4775 exports.device[489] = parser;
4776 parser = Object.create(null);
4777 parser[0] = new RegExp("(Pre|Pixi)/\\d+\\.\\d+");
4778 parser[1] = "Palm $1";
4779 parser[2] = 0;
4780 parser[3] = 0;
4781 parser[4] = 0;
4782 exports.device[490] = parser;
4783 parser = Object.create(null);
4784 parser[0] = new RegExp("Palm([0-9]+)");
4785 parser[1] = "Palm $1";
4786 parser[2] = 0;
4787 parser[3] = 0;
4788 parser[4] = 0;
4789 exports.device[491] = parser;
4790 parser = Object.create(null);
4791 parser[0] = new RegExp("Treo([A-Za-z0-9]+)");
4792 parser[1] = "Palm Treo $1";
4793 parser[2] = 0;
4794 parser[3] = 0;
4795 parser[4] = 0;
4796 exports.device[492] = parser;
4797 parser = Object.create(null);
4798 parser[0] = new RegExp("webOS.*(P160U(?:NA)?)/(\\d+).(\\d+)");
4799 parser[1] = "HP Veer";
4800 parser[2] = 0;
4801 parser[3] = 0;
4802 parser[4] = 0;
4803 exports.device[493] = parser;
4804 parser = Object.create(null);
4805 parser[0] = new RegExp("(Touch[Pp]ad)/\\d+\\.\\d+");
4806 parser[1] = "HP TouchPad";
4807 parser[2] = 0;
4808 parser[3] = 0;
4809 parser[4] = 0;
4810 exports.device[494] = parser;
4811 parser = Object.create(null);
4812 parser[0] = new RegExp("HPiPAQ([A-Za-z0-9]+)/\\d+.\\d+");
4813 parser[1] = "HP iPAQ $1";
4814 parser[2] = 0;
4815 parser[3] = 0;
4816 parser[4] = 0;
4817 exports.device[495] = parser;
4818 parser = Object.create(null);
4819 parser[0] = new RegExp("PDA; (PalmOS)/sony/model ([a-z]+)/Revision");
4820 parser[1] = "$1";
4821 parser[2] = 0;
4822 parser[3] = 0;
4823 parser[4] = 0;
4824 exports.device[496] = parser;
4825 parser = Object.create(null);
4826 parser[0] = new RegExp("(Apple\\s?TV)");
4827 parser[1] = "AppleTV";
4828 parser[2] = 0;
4829 parser[3] = 0;
4830 parser[4] = 0;
4831 exports.device[497] = parser;
4832 parser = Object.create(null);
4833 parser[0] = new RegExp("(QtCarBrowser)");
4834 parser[1] = "Tesla Model S";
4835 parser[2] = 0;
4836 parser[3] = 0;
4837 parser[4] = 0;
4838 exports.device[498] = parser;
4839 parser = Object.create(null);
4840 parser[0] = new RegExp("(iPhone|iPad|iPod)(\\d+,\\d+)");
4841 parser[1] = "$1";
4842 parser[2] = 0;
4843 parser[3] = 0;
4844 parser[4] = 0;
4845 exports.device[499] = parser;
4846 parser = Object.create(null);
4847 parser[0] = new RegExp("(iPad)(?:;| Simulator;)");
4848 parser[1] = "$1";
4849 parser[2] = 0;
4850 parser[3] = 0;
4851 parser[4] = 0;
4852 exports.device[500] = parser;
4853 parser = Object.create(null);
4854 parser[0] = new RegExp("(iPod)(?:;| touch;| Simulator;)");
4855 parser[1] = "$1";
4856 parser[2] = 0;
4857 parser[3] = 0;
4858 parser[4] = 0;
4859 exports.device[501] = parser;
4860 parser = Object.create(null);
4861 parser[0] = new RegExp("(iPhone)(?:;| Simulator;)");
4862 parser[1] = "$1";
4863 parser[2] = 0;
4864 parser[3] = 0;
4865 parser[4] = 0;
4866 exports.device[502] = parser;
4867 parser = Object.create(null);
4868 parser[0] = new RegExp("CFNetwork/.* Darwin/\\d.*\\(((?:Mac|iMac|PowerMac|PowerBook)[^\\d]*)(\\d+)(?:,|%2C)(\\d+)");
4869 parser[1] = "$1$2,$3";
4870 parser[2] = 0;
4871 parser[3] = 0;
4872 parser[4] = 0;
4873 exports.device[503] = parser;
4874 parser = Object.create(null);
4875 parser[0] = new RegExp("CFNetwork/.* Darwin/\\d");
4876 parser[1] = "iOS-Device";
4877 parser[2] = 0;
4878 parser[3] = 0;
4879 parser[4] = 0;
4880 exports.device[504] = parser;
4881 parser = Object.create(null);
4882 parser[0] = new RegExp("acer_([A-Za-z0-9]+)_");
4883 parser[1] = "Acer $1";
4884 parser[2] = 0;
4885 parser[3] = 0;
4886 parser[4] = 0;
4887 exports.device[505] = parser;
4888 parser = Object.create(null);
4889 parser[0] = new RegExp("(?:ALCATEL|Alcatel)-([A-Za-z0-9\\-]+)");
4890 parser[1] = "Alcatel $1";
4891 parser[2] = 0;
4892 parser[3] = 0;
4893 parser[4] = 0;
4894 exports.device[506] = parser;
4895 parser = Object.create(null);
4896 parser[0] = new RegExp("(?:Amoi|AMOI)\\-([A-Za-z0-9]+)");
4897 parser[1] = "Amoi $1";
4898 parser[2] = 0;
4899 parser[3] = 0;
4900 parser[4] = 0;
4901 exports.device[507] = parser;
4902 parser = Object.create(null);
4903 parser[0] = new RegExp("(?:; |\\/|^)((?:Transformer (?:Pad|Prime) |Transformer |PadFone[ _]?)[A-Za-z0-9]*)");
4904 parser[1] = "Asus $1";
4905 parser[2] = 0;
4906 parser[3] = 0;
4907 parser[4] = 0;
4908 exports.device[508] = parser;
4909 parser = Object.create(null);
4910 parser[0] = new RegExp("(?:asus.*?ASUS|Asus|ASUS|asus)[\\- ;]*((?:Transformer (?:Pad|Prime) |Transformer |Padfone |Nexus[ _])?[A-Za-z0-9]+)");
4911 parser[1] = "Asus $1";
4912 parser[2] = 0;
4913 parser[3] = 0;
4914 parser[4] = 0;
4915 exports.device[509] = parser;
4916 parser = Object.create(null);
4917 parser[0] = new RegExp("\\bBIRD[ \\-\\.]([A-Za-z0-9]+)");
4918 parser[1] = "Bird $1";
4919 parser[2] = 0;
4920 parser[3] = 0;
4921 parser[4] = 0;
4922 exports.device[510] = parser;
4923 parser = Object.create(null);
4924 parser[0] = new RegExp("\\bDell ([A-Za-z0-9]+)");
4925 parser[1] = "Dell $1";
4926 parser[2] = 0;
4927 parser[3] = 0;
4928 parser[4] = 0;
4929 exports.device[511] = parser;
4930 parser = Object.create(null);
4931 parser[0] = new RegExp("DoCoMo/2\\.0 ([A-Za-z0-9]+)");
4932 parser[1] = "DoCoMo $1";
4933 parser[2] = 0;
4934 parser[3] = 0;
4935 parser[4] = 0;
4936 exports.device[512] = parser;
4937 parser = Object.create(null);
4938 parser[0] = new RegExp("([A-Za-z0-9]+)_W;FOMA");
4939 parser[1] = "DoCoMo $1";
4940 parser[2] = 0;
4941 parser[3] = 0;
4942 parser[4] = 0;
4943 exports.device[513] = parser;
4944 parser = Object.create(null);
4945 parser[0] = new RegExp("([A-Za-z0-9]+);FOMA");
4946 parser[1] = "DoCoMo $1";
4947 parser[2] = 0;
4948 parser[3] = 0;
4949 parser[4] = 0;
4950 exports.device[514] = parser;
4951 parser = Object.create(null);
4952 parser[0] = new RegExp("\\b(?:HTC/|HTC/[a-z0-9]+/)?HTC[ _\\-;]? *(.*?)(?:-?Mozilla|fingerPrint|[;/\\(\\)]|$)");
4953 parser[1] = "HTC $1";
4954 parser[2] = 0;
4955 parser[3] = 0;
4956 parser[4] = 0;
4957 exports.device[515] = parser;
4958 parser = Object.create(null);
4959 parser[0] = new RegExp("Huawei([A-Za-z0-9]+)");
4960 parser[1] = "Huawei $1";
4961 parser[2] = 0;
4962 parser[3] = 0;
4963 parser[4] = 0;
4964 exports.device[516] = parser;
4965 parser = Object.create(null);
4966 parser[0] = new RegExp("HUAWEI-([A-Za-z0-9]+)");
4967 parser[1] = "Huawei $1";
4968 parser[2] = 0;
4969 parser[3] = 0;
4970 parser[4] = 0;
4971 exports.device[517] = parser;
4972 parser = Object.create(null);
4973 parser[0] = new RegExp("vodafone([A-Za-z0-9]+)");
4974 parser[1] = "Huawei Vodafone $1";
4975 parser[2] = 0;
4976 parser[3] = 0;
4977 parser[4] = 0;
4978 exports.device[518] = parser;
4979 parser = Object.create(null);
4980 parser[0] = new RegExp("i\\-mate ([A-Za-z0-9]+)");
4981 parser[1] = "i-mate $1";
4982 parser[2] = 0;
4983 parser[3] = 0;
4984 parser[4] = 0;
4985 exports.device[519] = parser;
4986 parser = Object.create(null);
4987 parser[0] = new RegExp("Kyocera\\-([A-Za-z0-9]+)");
4988 parser[1] = "Kyocera $1";
4989 parser[2] = 0;
4990 parser[3] = 0;
4991 parser[4] = 0;
4992 exports.device[520] = parser;
4993 parser = Object.create(null);
4994 parser[0] = new RegExp("KWC\\-([A-Za-z0-9]+)");
4995 parser[1] = "Kyocera $1";
4996 parser[2] = 0;
4997 parser[3] = 0;
4998 parser[4] = 0;
4999 exports.device[521] = parser;
5000 parser = Object.create(null);
5001 parser[0] = new RegExp("Lenovo[_\\-]([A-Za-z0-9]+)");
5002 parser[1] = "Lenovo $1";
5003 parser[2] = 0;
5004 parser[3] = 0;
5005 parser[4] = 0;
5006 exports.device[522] = parser;
5007 parser = Object.create(null);
5008 parser[0] = new RegExp("(HbbTV)/[0-9]+\\.[0-9]+\\.[0-9]+ \\([^;]*; *(LG)E *; *([^;]*) *;[^;]*;[^;]*;\\)");
5009 parser[1] = "$1";
5010 parser[2] = 0;
5011 parser[3] = 0;
5012 parser[4] = 0;
5013 exports.device[523] = parser;
5014 parser = Object.create(null);
5015 parser[0] = new RegExp("(HbbTV)/1\\.1\\.1.*CE-HTML/1\\.\\d;(Vendor/)*(THOM[^;]*?)[;\\s](?:.*SW-Version/.*)*(LF[^;]+);?");
5016 parser[1] = "$1";
5017 parser[2] = 0;
5018 parser[3] = 0;
5019 parser[4] = 0;
5020 exports.device[524] = parser;
5021 parser = Object.create(null);
5022 parser[0] = new RegExp("(HbbTV)(?:/1\\.1\\.1)?(?: ?\\(;;;;;\\))?; *CE-HTML(?:/1\\.\\d)?; *([^ ]+) ([^;]+);");
5023 parser[1] = "$1";
5024 parser[2] = 0;
5025 parser[3] = 0;
5026 parser[4] = 0;
5027 exports.device[525] = parser;
5028 parser = Object.create(null);
5029 parser[0] = new RegExp("(HbbTV)/1\\.1\\.1 \\(;;;;;\\) Maple_2011");
5030 parser[1] = "$1";
5031 parser[2] = 0;
5032 parser[3] = 0;
5033 parser[4] = 0;
5034 exports.device[526] = parser;
5035 parser = Object.create(null);
5036 parser[0] = new RegExp("(HbbTV)/[0-9]+\\.[0-9]+\\.[0-9]+ \\([^;]*; *(?:CUS:([^;]*)|([^;]+)) *; *([^;]*) *;.*;");
5037 parser[1] = "$1";
5038 parser[2] = 0;
5039 parser[3] = 0;
5040 parser[4] = 0;
5041 exports.device[527] = parser;
5042 parser = Object.create(null);
5043 parser[0] = new RegExp("(HbbTV)/[0-9]+\\.[0-9]+\\.[0-9]+");
5044 parser[1] = "$1";
5045 parser[2] = 0;
5046 parser[3] = 0;
5047 parser[4] = 0;
5048 exports.device[528] = parser;
5049 parser = Object.create(null);
5050 parser[0] = new RegExp("LGE; (?:Media\\/)?([^;]*);[^;]*;[^;]*;?\\); \"?LG NetCast(\\.TV|\\.Media|)-\\d+");
5051 parser[1] = "NetCast$2";
5052 parser[2] = 0;
5053 parser[3] = 0;
5054 parser[4] = 0;
5055 exports.device[529] = parser;
5056 parser = Object.create(null);
5057 parser[0] = new RegExp("InettvBrowser/[0-9]+\\.[0-9A-Z]+ \\([^;]*;(Sony)([^;]*);[^;]*;[^\\)]*\\)");
5058 parser[1] = "Inettv";
5059 parser[2] = 0;
5060 parser[3] = 0;
5061 parser[4] = 0;
5062 exports.device[530] = parser;
5063 parser = Object.create(null);
5064 parser[0] = new RegExp("InettvBrowser/[0-9]+\\.[0-9A-Z]+ \\([^;]*;([^;]*);[^;]*;[^\\)]*\\)");
5065 parser[1] = "Inettv";
5066 parser[2] = 0;
5067 parser[3] = 0;
5068 parser[4] = 0;
5069 exports.device[531] = parser;
5070 parser = Object.create(null);
5071 parser[0] = new RegExp("(?:InettvBrowser|TSBNetTV|NETTV|HBBTV)");
5072 parser[1] = "Inettv";
5073 parser[2] = 0;
5074 parser[3] = 0;
5075 parser[4] = 0;
5076 exports.device[532] = parser;
5077 parser = Object.create(null);
5078 parser[0] = new RegExp("Series60/\\d\\.\\d (LG)[\\-]?([A-Za-z0-9 \\-]+)");
5079 parser[1] = "$1 $2";
5080 parser[2] = 0;
5081 parser[3] = 0;
5082 parser[4] = 0;
5083 exports.device[533] = parser;
5084 parser = Object.create(null);
5085 parser[0] = new RegExp("\\b(?:LGE[ \\-]LG\\-(?:AX)?|LGE |LGE?-LG|LGE?[ \\-]|LG[ /\\-]|lg[\\-])([A-Za-z0-9]+)\\b");
5086 parser[1] = "LG $1";
5087 parser[2] = 0;
5088 parser[3] = 0;
5089 parser[4] = 0;
5090 exports.device[534] = parser;
5091 parser = Object.create(null);
5092 parser[0] = new RegExp("(?:^LG[\\-]?|^LGE[\\-/]?)([A-Za-z]+[0-9]+[A-Za-z]*)");
5093 parser[1] = "LG $1";
5094 parser[2] = 0;
5095 parser[3] = 0;
5096 parser[4] = 0;
5097 exports.device[535] = parser;
5098 parser = Object.create(null);
5099 parser[0] = new RegExp("^LG([0-9]+[A-Za-z]*)");
5100 parser[1] = "LG $1";
5101 parser[2] = 0;
5102 parser[3] = 0;
5103 parser[4] = 0;
5104 exports.device[536] = parser;
5105 parser = Object.create(null);
5106 parser[0] = new RegExp("(KIN\\.[^ ]+) (\\d+)\\.(\\d+)");
5107 parser[1] = "Microsoft $1";
5108 parser[2] = 0;
5109 parser[3] = 0;
5110 parser[4] = 0;
5111 exports.device[537] = parser;
5112 parser = Object.create(null);
5113 parser[0] = new RegExp("(?:MSIE|XBMC).*\\b(Xbox)\\b");
5114 parser[1] = "$1";
5115 parser[2] = 0;
5116 parser[3] = 0;
5117 parser[4] = 0;
5118 exports.device[538] = parser;
5119 parser = Object.create(null);
5120 parser[0] = new RegExp("; ARM; Trident/6\\.0; Touch[\\);]");
5121 parser[1] = "Microsoft Surface RT";
5122 parser[2] = 0;
5123 parser[3] = 0;
5124 parser[4] = 0;
5125 exports.device[539] = parser;
5126 parser = Object.create(null);
5127 parser[0] = new RegExp("Motorola\\-([A-Za-z0-9]+)");
5128 parser[1] = "Motorola $1";
5129 parser[2] = 0;
5130 parser[3] = 0;
5131 parser[4] = 0;
5132 exports.device[540] = parser;
5133 parser = Object.create(null);
5134 parser[0] = new RegExp("MOTO\\-([A-Za-z0-9]+)");
5135 parser[1] = "Motorola $1";
5136 parser[2] = 0;
5137 parser[3] = 0;
5138 parser[4] = 0;
5139 exports.device[541] = parser;
5140 parser = Object.create(null);
5141 parser[0] = new RegExp("MOT\\-([A-z0-9][A-z0-9\\-]*)");
5142 parser[1] = "Motorola $1";
5143 parser[2] = 0;
5144 parser[3] = 0;
5145 parser[4] = 0;
5146 exports.device[542] = parser;
5147 parser = Object.create(null);
5148 parser[0] = new RegExp("Nintendo WiiU");
5149 parser[1] = "Nintendo Wii U";
5150 parser[2] = 0;
5151 parser[3] = 0;
5152 parser[4] = 0;
5153 exports.device[543] = parser;
5154 parser = Object.create(null);
5155 parser[0] = new RegExp("Nintendo (DS|3DS|DSi|Wii);");
5156 parser[1] = "Nintendo $1";
5157 parser[2] = 0;
5158 parser[3] = 0;
5159 parser[4] = 0;
5160 exports.device[544] = parser;
5161 parser = Object.create(null);
5162 parser[0] = new RegExp("(?:Pantech|PANTECH)[ _-]?([A-Za-z0-9\\-]+)");
5163 parser[1] = "Pantech $1";
5164 parser[2] = 0;
5165 parser[3] = 0;
5166 parser[4] = 0;
5167 exports.device[545] = parser;
5168 parser = Object.create(null);
5169 parser[0] = new RegExp("Philips([A-Za-z0-9]+)");
5170 parser[1] = "Philips $1";
5171 parser[2] = 0;
5172 parser[3] = 0;
5173 parser[4] = 0;
5174 exports.device[546] = parser;
5175 parser = Object.create(null);
5176 parser[0] = new RegExp("Philips ([A-Za-z0-9]+)");
5177 parser[1] = "Philips $1";
5178 parser[2] = 0;
5179 parser[3] = 0;
5180 parser[4] = 0;
5181 exports.device[547] = parser;
5182 parser = Object.create(null);
5183 parser[0] = new RegExp("(SMART-TV); .* Tizen ");
5184 parser[1] = "Samsung $1";
5185 parser[2] = 0;
5186 parser[3] = 0;
5187 parser[4] = 0;
5188 exports.device[548] = parser;
5189 parser = Object.create(null);
5190 parser[0] = new RegExp("SymbianOS/9\\.\\d.* Samsung[/\\-]([A-Za-z0-9 \\-]+)");
5191 parser[1] = "Samsung $1";
5192 parser[2] = 0;
5193 parser[3] = 0;
5194 parser[4] = 0;
5195 exports.device[549] = parser;
5196 parser = Object.create(null);
5197 parser[0] = new RegExp("(Samsung)(SGH)(i[0-9]+)");
5198 parser[1] = "$1 $2$3";
5199 parser[2] = 0;
5200 parser[3] = 0;
5201 parser[4] = 0;
5202 exports.device[550] = parser;
5203 parser = Object.create(null);
5204 parser[0] = new RegExp("SAMSUNG-ANDROID-MMS/([^;/]+)");
5205 parser[1] = "$1";
5206 parser[2] = 0;
5207 parser[3] = 0;
5208 parser[4] = 0;
5209 exports.device[551] = parser;
5210 parser = Object.create(null);
5211 parser[0] = new RegExp("SAMSUNG(?:; |[ -/])([A-Za-z0-9\\-]+)");
5212 parser[1] = "Samsung $1";
5213 parser[2] = 0;
5214 parser[3] = 0;
5215 parser[4] = 0;
5216 exports.device[552] = parser;
5217 parser = Object.create(null);
5218 parser[0] = new RegExp("(Dreamcast)");
5219 parser[1] = "Sega $1";
5220 parser[2] = 0;
5221 parser[3] = 0;
5222 parser[4] = 0;
5223 exports.device[553] = parser;
5224 parser = Object.create(null);
5225 parser[0] = new RegExp("^SIE-([A-Za-z0-9]+)");
5226 parser[1] = "Siemens $1";
5227 parser[2] = 0;
5228 parser[3] = 0;
5229 parser[4] = 0;
5230 exports.device[554] = parser;
5231 parser = Object.create(null);
5232 parser[0] = new RegExp("Softbank/[12]\\.0/([A-Za-z0-9]+)");
5233 parser[1] = "Softbank $1";
5234 parser[2] = 0;
5235 parser[3] = 0;
5236 parser[4] = 0;
5237 exports.device[555] = parser;
5238 parser = Object.create(null);
5239 parser[0] = new RegExp("SonyEricsson ?([A-Za-z0-9\\-]+)");
5240 parser[1] = "Ericsson $1";
5241 parser[2] = 0;
5242 parser[3] = 0;
5243 parser[4] = 0;
5244 exports.device[556] = parser;
5245 parser = Object.create(null);
5246 parser[0] = new RegExp("Android [^;]+; ([^ ]+) (Sony)/");
5247 parser[1] = "$2 $1";
5248 parser[2] = 0;
5249 parser[3] = 0;
5250 parser[4] = 0;
5251 exports.device[557] = parser;
5252 parser = Object.create(null);
5253 parser[0] = new RegExp("(Sony)(?:BDP\\/|\\/)?([^ /;\\)]+)[ /;\\)]");
5254 parser[1] = "$1 $2";
5255 parser[2] = 0;
5256 parser[3] = 0;
5257 parser[4] = 0;
5258 exports.device[558] = parser;
5259 parser = Object.create(null);
5260 parser[0] = new RegExp("Puffin/[\\d\\.]+IT");
5261 parser[1] = "iPad";
5262 parser[2] = 0;
5263 parser[3] = 0;
5264 parser[4] = 0;
5265 exports.device[559] = parser;
5266 parser = Object.create(null);
5267 parser[0] = new RegExp("Puffin/[\\d\\.]+IP");
5268 parser[1] = "iPhone";
5269 parser[2] = 0;
5270 parser[3] = 0;
5271 parser[4] = 0;
5272 exports.device[560] = parser;
5273 parser = Object.create(null);
5274 parser[0] = new RegExp("Puffin/[\\d\\.]+AT");
5275 parser[1] = "Generic Tablet";
5276 parser[2] = 0;
5277 parser[3] = 0;
5278 parser[4] = 0;
5279 exports.device[561] = parser;
5280 parser = Object.create(null);
5281 parser[0] = new RegExp("Puffin/[\\d\\.]+AP");
5282 parser[1] = "Generic Smartphone";
5283 parser[2] = 0;
5284 parser[3] = 0;
5285 parser[4] = 0;
5286 exports.device[562] = parser;
5287 parser = Object.create(null);
5288 parser[0] = new RegExp("Android[\\- ][\\d]+\\.[\\d]+; [A-Za-z]{2}\\-[A-Za-z]{0,2}; WOWMobile (.+) Build[/ ]");
5289 parser[1] = 0;
5290 parser[2] = 0;
5291 parser[3] = 0;
5292 parser[4] = 0;
5293 exports.device[563] = parser;
5294 parser = Object.create(null);
5295 parser[0] = new RegExp("Android[\\- ][\\d]+\\.[\\d]+\\-update1; [A-Za-z]{2}\\-[A-Za-z]{0,2} *; *(.+?) Build[/ ]");
5296 parser[1] = 0;
5297 parser[2] = 0;
5298 parser[3] = 0;
5299 parser[4] = 0;
5300 exports.device[564] = parser;
5301 parser = Object.create(null);
5302 parser[0] = new RegExp("Android[\\- ][\\d]+(?:\\.[\\d]+){1,2}; *[A-Za-z]{2}[_\\-][A-Za-z]{0,2}\\-? *; *(.+?) Build[/ ]");
5303 parser[1] = 0;
5304 parser[2] = 0;
5305 parser[3] = 0;
5306 parser[4] = 0;
5307 exports.device[565] = parser;
5308 parser = Object.create(null);
5309 parser[0] = new RegExp("Android[\\- ][\\d]+(?:\\.[\\d]+){1,2}; *[A-Za-z]{0,2}\\- *; *(.+?) Build[/ ]");
5310 parser[1] = 0;
5311 parser[2] = 0;
5312 parser[3] = 0;
5313 parser[4] = 0;
5314 exports.device[566] = parser;
5315 parser = Object.create(null);
5316 parser[0] = new RegExp("Android[\\- ][\\d]+(?:\\.[\\d]+){1,2}; *[a-z]{0,2}[_\\-]?[A-Za-z]{0,2};? Build[/ ]");
5317 parser[1] = "Generic Smartphone";
5318 parser[2] = 0;
5319 parser[3] = 0;
5320 parser[4] = 0;
5321 exports.device[567] = parser;
5322 parser = Object.create(null);
5323 parser[0] = new RegExp("Android[\\- ][\\d]+(?:\\.[\\d]+){1,2}; *\\-?[A-Za-z]{2}; *(.+?) Build[/ ]");
5324 parser[1] = 0;
5325 parser[2] = 0;
5326 parser[3] = 0;
5327 parser[4] = 0;
5328 exports.device[568] = parser;
5329 parser = Object.create(null);
5330 parser[0] = new RegExp("Android[\\- ][\\d]+(?:\\.[\\d]+){1,2}(?:;.*)?; *(.+?) Build[/ ]");
5331 parser[1] = 0;
5332 parser[2] = 0;
5333 parser[3] = 0;
5334 parser[4] = 0;
5335 exports.device[569] = parser;
5336 parser = Object.create(null);
5337 parser[0] = new RegExp("(GoogleTV)");
5338 parser[1] = 0;
5339 parser[2] = 0;
5340 parser[3] = 0;
5341 parser[4] = 0;
5342 exports.device[570] = parser;
5343 parser = Object.create(null);
5344 parser[0] = new RegExp("(WebTV)/\\d+.\\d+");
5345 parser[1] = 0;
5346 parser[2] = 0;
5347 parser[3] = 0;
5348 parser[4] = 0;
5349 exports.device[571] = parser;
5350 parser = Object.create(null);
5351 parser[0] = new RegExp("^(Roku)/DVP-\\d+\\.\\d+");
5352 parser[1] = 0;
5353 parser[2] = 0;
5354 parser[3] = 0;
5355 parser[4] = 0;
5356 exports.device[572] = parser;
5357 parser = Object.create(null);
5358 parser[0] = new RegExp("(Android 3\\.\\d|Opera Tablet|Tablet; .+Firefox/|Android.*(?:Tab|Pad))");
5359 parser[1] = "Generic Tablet";
5360 parser[2] = 0;
5361 parser[3] = 0;
5362 parser[4] = 0;
5363 exports.device[573] = parser;
5364 parser = Object.create(null);
5365 parser[0] = new RegExp("(Symbian|\\bS60(Version|V\\d)|\\bS60\\b|\\((Series 60|Windows Mobile|Palm OS|Bada); Opera Mini|Windows CE|Opera Mobi|BREW|Brew|Mobile; .+Firefox/|iPhone OS|Android|MobileSafari|Windows *Phone|\\(webOS/|PalmOS)");
5366 parser[1] = "Generic Smartphone";
5367 parser[2] = 0;
5368 parser[3] = 0;
5369 parser[4] = 0;
5370 exports.device[574] = parser;
5371 parser = Object.create(null);
5372 parser[0] = new RegExp("(hiptop|avantgo|plucker|xiino|blazer|elaine)");
5373 parser[1] = "Generic Smartphone";
5374 parser[2] = 0;
5375 parser[3] = 0;
5376 parser[4] = 0;
5377 exports.device[575] = parser;
5378 parser = Object.create(null);
5379 parser[0] = new RegExp("(bot|zao|borg|DBot|oegp|silk|Xenu|zeal|^NING|CCBot|crawl|htdig|lycos|slurp|teoma|voila|yahoo|Sogou|CiBra|Nutch|^Java/|^JNLP/|Daumoa|Genieo|ichiro|larbin|pompos|Scrapy|snappy|speedy|spider|msnbot|msrbot|vortex|^vortex|crawler|favicon|indexer|Riddler|scooter|scraper|scrubby|WhatWeb|WinHTTP|bingbot|BingPreview|openbot|gigabot|furlbot|polybot|seekbot|^voyager|archiver|Icarus6j|mogimogi|Netvibes|blitzbot|altavista|charlotte|findlinks|Retreiver|TLSProber|WordPress|SeznamBot|ProoXiBot|wsr\\-agent|Squrl Java|EtaoSpider|PaperLiBot|SputnikBot|A6\\-Indexer|netresearch|searchsight|baiduspider|YisouSpider|ICC\\-Crawler|http%20client|Python-urllib|dataparksearch|converacrawler|Screaming Frog|AppEngine-Google|YahooCacheSystem|fast\\-webcrawler|Sogou Pic Spider|semanticdiscovery|Innovazion Crawler|facebookexternalhit|Google.*/\\+/web/snippet|Google-HTTP-Java-Client|BlogBridge|IlTrovatore-Setaccio|InternetArchive|GomezAgent|WebThumbnail|heritrix|NewsGator|PagePeeker|Reaper|ZooShot|holmes|NL-Crawler|Pingdom)");
5380 parser[1] = "Spider";
5381 parser[2] = 0;
5382 parser[3] = 0;
5383 parser[4] = 0;
5384 exports.device[576] = parser;
5385 parser = Object.create(null);
5386 parser[0] = new RegExp("^(1207|3gso|4thp|501i|502i|503i|504i|505i|506i|6310|6590|770s|802s|a wa|acer|acs\\-|airn|alav|asus|attw|au\\-m|aur |aus |abac|acoo|aiko|alco|alca|amoi|anex|anny|anyw|aptu|arch|argo|bmobile|bell|bird|bw\\-n|bw\\-u|beck|benq|bilb|blac|c55/|cdm\\-|chtm|capi|comp|cond|dall|dbte|dc\\-s|dica|ds\\-d|ds12|dait|devi|dmob|doco|dopo|dorado|el(?:38|39|48|49|50|55|58|68)|el[3456]\\d{2}dual|erk0|esl8|ex300|ez40|ez60|ez70|ezos|ezze|elai|emul|eric|ezwa|fake|fly\\-|fly_|g\\-mo|g1 u|g560|gf\\-5|grun|gene|go.w|good|grad|hcit|hd\\-m|hd\\-p|hd\\-t|hei\\-|hp i|hpip|hs\\-c|htc |htc\\-|htca|htcg)");
5387 parser[1] = "Generic Feature Phone";
5388 parser[2] = 0;
5389 parser[3] = 0;
5390 parser[4] = 0;
5391 exports.device[577] = parser;
5392 parser = Object.create(null);
5393 parser[0] = new RegExp("^(htcp|htcs|htct|htc_|haie|hita|huaw|hutc|i\\-20|i\\-go|i\\-ma|i\\-mobile|i230|iac|iac\\-|iac/|ig01|im1k|inno|iris|jata|kddi|kgt|kgt/|kpt |kwc\\-|klon|lexi|lg g|lg\\-a|lg\\-b|lg\\-c|lg\\-d|lg\\-f|lg\\-g|lg\\-k|lg\\-l|lg\\-m|lg\\-o|lg\\-p|lg\\-s|lg\\-t|lg\\-u|lg\\-w|lg/k|lg/l|lg/u|lg50|lg54|lge\\-|lge/|leno|m1\\-w|m3ga|m50/|maui|mc01|mc21|mcca|medi|meri|mio8|mioa|mo01|mo02|mode|modo|mot |mot\\-|mt50|mtp1|mtv |mate|maxo|merc|mits|mobi|motv|mozz|n100|n101|n102|n202|n203|n300|n302|n500|n502|n505|n700|n701|n710|nec\\-|nem\\-|newg|neon)");
5394 parser[1] = "Generic Feature Phone";
5395 parser[2] = 0;
5396 parser[3] = 0;
5397 parser[4] = 0;
5398 exports.device[578] = parser;
5399 parser = Object.create(null);
5400 parser[0] = new RegExp("^(netf|noki|nzph|o2 x|o2\\-x|opwv|owg1|opti|oran|ot\\-s|p800|pand|pg\\-1|pg\\-2|pg\\-3|pg\\-6|pg\\-8|pg\\-c|pg13|phil|pn\\-2|pt\\-g|palm|pana|pire|pock|pose|psio|qa\\-a|qc\\-2|qc\\-3|qc\\-5|qc\\-7|qc07|qc12|qc21|qc32|qc60|qci\\-|qwap|qtek|r380|r600|raks|rim9|rove|s55/|sage|sams|sc01|sch\\-|scp\\-|sdk/|se47|sec\\-|sec0|sec1|semc|sgh\\-|shar|sie\\-|sk\\-0|sl45|slid|smb3|smt5|sp01|sph\\-|spv |spv\\-|sy01|samm|sany|sava|scoo|send|siem|smar|smit|soft|sony|t\\-mo|t218|t250|t600|t610|t618|tcl\\-|tdg\\-|telm|tim\\-|ts70|tsm\\-|tsm3|tsm5|tx\\-9|tagt)");
5401 parser[1] = "Generic Feature Phone";
5402 parser[2] = 0;
5403 parser[3] = 0;
5404 parser[4] = 0;
5405 exports.device[579] = parser;
5406 parser = Object.create(null);
5407 parser[0] = new RegExp("^(talk|teli|topl|tosh|up.b|upg1|utst|v400|v750|veri|vk\\-v|vk40|vk50|vk52|vk53|vm40|vx98|virg|vertu|vite|voda|vulc|w3c |w3c\\-|wapj|wapp|wapu|wapm|wig |wapi|wapr|wapv|wapy|wapa|waps|wapt|winc|winw|wonu|x700|xda2|xdag|yas\\-|your|zte\\-|zeto|aste|audi|avan|blaz|brew|brvw|bumb|ccwa|cell|cldc|cmd\\-|dang|eml2|fetc|hipt|http|ibro|idea|ikom|ipaq|jbro|jemu|jigs|keji|kyoc|kyok|libw|m\\-cr|midp|mmef|moto|mwbp|mywa|newt|nok6|o2im|pant|pdxg|play|pluc|port|prox|rozo|sama|seri|smal|symb|treo|upsi|vx52|vx53|vx60|vx61|vx70|vx80|vx81|vx83|vx85|wap\\-|webc|whit|wmlb|xda\\-|xda_)");
5408 parser[1] = "Generic Feature Phone";
5409 parser[2] = 0;
5410 parser[3] = 0;
5411 parser[4] = 0;
5412 exports.device[580] = parser;
5413 parser = Object.create(null);
5414 parser[0] = new RegExp("^(Ice)$");
5415 parser[1] = "Generic Feature Phone";
5416 parser[2] = 0;
5417 parser[3] = 0;
5418 parser[4] = 0;
5419 exports.device[581] = parser;
5420 parser = Object.create(null);
5421 parser[0] = new RegExp("(wap[\\-\\ ]browser|maui|netfront|obigo|teleca|up\\.browser|midp|Opera Mini)");
5422 parser[1] = "Generic Feature Phone";
5423 parser[2] = 0;
5424 parser[3] = 0;
5425 parser[4] = 0;
5426 exports.device[582] = parser;
5427
5428 exports.device.length = 583;
5429
5430 exports.os = Object.create(null);
5431
5432 parser = Object.create(null);
5433 parser[0] = new RegExp("HbbTV/\\d+\\.\\d+\\.\\d+ \\( ;(LG)E ;NetCast 4.0");
5434 parser[1] = 0;
5435 parser[2] = "2013";
5436 parser[3] = 0;
5437 parser[4] = 0;
5438 exports.os[0] = parser;
5439 parser = Object.create(null);
5440 parser[0] = new RegExp("HbbTV/\\d+\\.\\d+\\.\\d+ \\( ;(LG)E ;NetCast 3.0");
5441 parser[1] = 0;
5442 parser[2] = "2012";
5443 parser[3] = 0;
5444 parser[4] = 0;
5445 exports.os[1] = parser;
5446 parser = Object.create(null);
5447 parser[0] = new RegExp("HbbTV/1.1.1 \\(;;;;;\\) Maple_2011");
5448 parser[1] = "Samsung";
5449 parser[2] = "2011";
5450 parser[3] = 0;
5451 parser[4] = 0;
5452 exports.os[2] = parser;
5453 parser = Object.create(null);
5454 parser[0] = new RegExp("HbbTV/\\d+\\.\\d+\\.\\d+ \\(;(Samsung);SmartTV([0-9]{4});.*FXPDEUC");
5455 parser[1] = 0;
5456 parser[2] = 0;
5457 parser[3] = "UE40F7000";
5458 parser[4] = 0;
5459 exports.os[3] = parser;
5460 parser = Object.create(null);
5461 parser[0] = new RegExp("HbbTV/\\d+\\.\\d+\\.\\d+ \\(;(Samsung);SmartTV([0-9]{4});.*MST12DEUC");
5462 parser[1] = 0;
5463 parser[2] = 0;
5464 parser[3] = "UE32F4500";
5465 parser[4] = 0;
5466 exports.os[4] = parser;
5467 parser = Object.create(null);
5468 parser[0] = new RegExp("HbbTV/1.1.1 \\(; (Philips);.*NETTV/4");
5469 parser[1] = 0;
5470 parser[2] = "2013";
5471 parser[3] = 0;
5472 parser[4] = 0;
5473 exports.os[5] = parser;
5474 parser = Object.create(null);
5475 parser[0] = new RegExp("HbbTV/1.1.1 \\(; (Philips);.*NETTV/3");
5476 parser[1] = 0;
5477 parser[2] = "2012";
5478 parser[3] = 0;
5479 parser[4] = 0;
5480 exports.os[6] = parser;
5481 parser = Object.create(null);
5482 parser[0] = new RegExp("HbbTV/1.1.1 \\(; (Philips);.*NETTV/2");
5483 parser[1] = 0;
5484 parser[2] = "2011";
5485 parser[3] = 0;
5486 parser[4] = 0;
5487 exports.os[7] = parser;
5488 parser = Object.create(null);
5489 parser[0] = new RegExp("HbbTV/\\d+\\.\\d+\\.\\d+.*(firetv)-firefox-plugin (\\d+).(\\d+).(\\d+)");
5490 parser[1] = "FireHbbTV";
5491 parser[2] = 0;
5492 parser[3] = 0;
5493 parser[4] = 0;
5494 exports.os[8] = parser;
5495 parser = Object.create(null);
5496 parser[0] = new RegExp("HbbTV/\\d+\\.\\d+\\.\\d+ \\(.*; ?([a-zA-Z]+) ?;.*(201[1-9]).*\\)");
5497 parser[1] = 0;
5498 parser[2] = 0;
5499 parser[3] = 0;
5500 parser[4] = 0;
5501 exports.os[9] = parser;
5502 parser = Object.create(null);
5503 parser[0] = new RegExp("(Windows Phone) (?:OS[ /])?(\\d+)\\.(\\d+)");
5504 parser[1] = 0;
5505 parser[2] = 0;
5506 parser[3] = 0;
5507 parser[4] = 0;
5508 exports.os[10] = parser;
5509 parser = Object.create(null);
5510 parser[0] = new RegExp("(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone)[ +]+(\\d+)[_\\.](\\d+)(?:[_\\.](\\d+))?.*Outlook-iOS-Android");
5511 parser[1] = "iOS";
5512 parser[2] = 0;
5513 parser[3] = 0;
5514 parser[4] = 0;
5515 exports.os[11] = parser;
5516 parser = Object.create(null);
5517 parser[0] = new RegExp("(Android)[ \\-/](\\d+)\\.(\\d+)(?:[.\\-]([a-z0-9]+))?");
5518 parser[1] = 0;
5519 parser[2] = 0;
5520 parser[3] = 0;
5521 parser[4] = 0;
5522 exports.os[12] = parser;
5523 parser = Object.create(null);
5524 parser[0] = new RegExp("(Android) Donut");
5525 parser[1] = 0;
5526 parser[2] = "1";
5527 parser[3] = "2";
5528 parser[4] = 0;
5529 exports.os[13] = parser;
5530 parser = Object.create(null);
5531 parser[0] = new RegExp("(Android) Eclair");
5532 parser[1] = 0;
5533 parser[2] = "2";
5534 parser[3] = "1";
5535 parser[4] = 0;
5536 exports.os[14] = parser;
5537 parser = Object.create(null);
5538 parser[0] = new RegExp("(Android) Froyo");
5539 parser[1] = 0;
5540 parser[2] = "2";
5541 parser[3] = "2";
5542 parser[4] = 0;
5543 exports.os[15] = parser;
5544 parser = Object.create(null);
5545 parser[0] = new RegExp("(Android) Gingerbread");
5546 parser[1] = 0;
5547 parser[2] = "2";
5548 parser[3] = "3";
5549 parser[4] = 0;
5550 exports.os[16] = parser;
5551 parser = Object.create(null);
5552 parser[0] = new RegExp("(Android) Honeycomb");
5553 parser[1] = 0;
5554 parser[2] = "3";
5555 parser[3] = 0;
5556 parser[4] = 0;
5557 exports.os[17] = parser;
5558 parser = Object.create(null);
5559 parser[0] = new RegExp("^UCWEB.*; (Adr) (\\d+)\\.(\\d+)(?:[.\\-]([a-z0-9]+))?;");
5560 parser[1] = "Android";
5561 parser[2] = 0;
5562 parser[3] = 0;
5563 parser[4] = 0;
5564 exports.os[18] = parser;
5565 parser = Object.create(null);
5566 parser[0] = new RegExp("^UCWEB.*; (iPad|iPh|iPd) OS (\\d+)_(\\d+)(?:_(\\d+))?;");
5567 parser[1] = "iOS";
5568 parser[2] = 0;
5569 parser[3] = 0;
5570 parser[4] = 0;
5571 exports.os[19] = parser;
5572 parser = Object.create(null);
5573 parser[0] = new RegExp("^UCWEB.*; (wds) (\\d+)\\.(\\d+)(?:\\.(\\d+))?;");
5574 parser[1] = "Windows Phone";
5575 parser[2] = 0;
5576 parser[3] = 0;
5577 parser[4] = 0;
5578 exports.os[20] = parser;
5579 parser = Object.create(null);
5580 parser[0] = new RegExp("^(JUC).*; ?U; ?(?:Android)?(\\d+)\\.(\\d+)(?:[\\.\\-]([a-z0-9]+))?");
5581 parser[1] = "Android";
5582 parser[2] = 0;
5583 parser[3] = 0;
5584 parser[4] = 0;
5585 exports.os[21] = parser;
5586 parser = Object.create(null);
5587 parser[0] = new RegExp("(Silk-Accelerated=[a-z]{4,5})");
5588 parser[1] = "Android";
5589 parser[2] = 0;
5590 parser[3] = 0;
5591 parser[4] = 0;
5592 exports.os[22] = parser;
5593 parser = Object.create(null);
5594 parser[0] = new RegExp("(XBLWP7)");
5595 parser[1] = "Windows Phone";
5596 parser[2] = 0;
5597 parser[3] = 0;
5598 parser[4] = 0;
5599 exports.os[23] = parser;
5600 parser = Object.create(null);
5601 parser[0] = new RegExp("(Windows ?Mobile)");
5602 parser[1] = "Windows Mobile";
5603 parser[2] = 0;
5604 parser[3] = 0;
5605 parser[4] = 0;
5606 exports.os[24] = parser;
5607 parser = Object.create(null);
5608 parser[0] = new RegExp("(Windows (?:NT 5\\.2|NT 5\\.1))");
5609 parser[1] = "Windows XP";
5610 parser[2] = 0;
5611 parser[3] = 0;
5612 parser[4] = 0;
5613 exports.os[25] = parser;
5614 parser = Object.create(null);
5615 parser[0] = new RegExp("(Windows NT 6\\.1)");
5616 parser[1] = "Windows 7";
5617 parser[2] = 0;
5618 parser[3] = 0;
5619 parser[4] = 0;
5620 exports.os[26] = parser;
5621 parser = Object.create(null);
5622 parser[0] = new RegExp("(Windows NT 6\\.0)");
5623 parser[1] = "Windows Vista";
5624 parser[2] = 0;
5625 parser[3] = 0;
5626 parser[4] = 0;
5627 exports.os[27] = parser;
5628 parser = Object.create(null);
5629 parser[0] = new RegExp("(Win 9x 4\\.90)");
5630 parser[1] = "Windows ME";
5631 parser[2] = 0;
5632 parser[3] = 0;
5633 parser[4] = 0;
5634 exports.os[28] = parser;
5635 parser = Object.create(null);
5636 parser[0] = new RegExp("(Windows 98|Windows XP|Windows ME|Windows 95|Windows CE|Windows 7|Windows NT 4\\.0|Windows Vista|Windows 2000|Windows 3.1)");
5637 parser[1] = 0;
5638 parser[2] = 0;
5639 parser[3] = 0;
5640 parser[4] = 0;
5641 exports.os[29] = parser;
5642 parser = Object.create(null);
5643 parser[0] = new RegExp("(Windows NT 6\\.2; ARM;)");
5644 parser[1] = "Windows RT";
5645 parser[2] = 0;
5646 parser[3] = 0;
5647 parser[4] = 0;
5648 exports.os[30] = parser;
5649 parser = Object.create(null);
5650 parser[0] = new RegExp("(Windows NT 6\\.2)");
5651 parser[1] = "Windows 8";
5652 parser[2] = 0;
5653 parser[3] = 0;
5654 parser[4] = 0;
5655 exports.os[31] = parser;
5656 parser = Object.create(null);
5657 parser[0] = new RegExp("(Windows NT 6\\.3; ARM;)");
5658 parser[1] = "Windows RT 8.1";
5659 parser[2] = 0;
5660 parser[3] = 0;
5661 parser[4] = 0;
5662 exports.os[32] = parser;
5663 parser = Object.create(null);
5664 parser[0] = new RegExp("(Windows NT 6\\.3)");
5665 parser[1] = "Windows 8.1";
5666 parser[2] = 0;
5667 parser[3] = 0;
5668 parser[4] = 0;
5669 exports.os[33] = parser;
5670 parser = Object.create(null);
5671 parser[0] = new RegExp("(Windows NT 6\\.4)");
5672 parser[1] = "Windows 10";
5673 parser[2] = 0;
5674 parser[3] = 0;
5675 parser[4] = 0;
5676 exports.os[34] = parser;
5677 parser = Object.create(null);
5678 parser[0] = new RegExp("(Windows NT 10\\.0)");
5679 parser[1] = "Windows 10";
5680 parser[2] = 0;
5681 parser[3] = 0;
5682 parser[4] = 0;
5683 exports.os[35] = parser;
5684 parser = Object.create(null);
5685 parser[0] = new RegExp("(Windows NT 5\\.0)");
5686 parser[1] = "Windows 2000";
5687 parser[2] = 0;
5688 parser[3] = 0;
5689 parser[4] = 0;
5690 exports.os[36] = parser;
5691 parser = Object.create(null);
5692 parser[0] = new RegExp("(WinNT4.0)");
5693 parser[1] = "Windows NT 4.0";
5694 parser[2] = 0;
5695 parser[3] = 0;
5696 parser[4] = 0;
5697 exports.os[37] = parser;
5698 parser = Object.create(null);
5699 parser[0] = new RegExp("(Windows ?CE)");
5700 parser[1] = "Windows CE";
5701 parser[2] = 0;
5702 parser[3] = 0;
5703 parser[4] = 0;
5704 exports.os[38] = parser;
5705 parser = Object.create(null);
5706 parser[0] = new RegExp("Win ?(95|98|3.1|NT|ME|2000)");
5707 parser[1] = "Windows $1";
5708 parser[2] = 0;
5709 parser[3] = 0;
5710 parser[4] = 0;
5711 exports.os[39] = parser;
5712 parser = Object.create(null);
5713 parser[0] = new RegExp("Win16");
5714 parser[1] = "Windows 3.1";
5715 parser[2] = 0;
5716 parser[3] = 0;
5717 parser[4] = 0;
5718 exports.os[40] = parser;
5719 parser = Object.create(null);
5720 parser[0] = new RegExp("Win32");
5721 parser[1] = "Windows 95";
5722 parser[2] = 0;
5723 parser[3] = 0;
5724 parser[4] = 0;
5725 exports.os[41] = parser;
5726 parser = Object.create(null);
5727 parser[0] = new RegExp("(Tizen)[/ ](\\d+)\\.(\\d+)");
5728 parser[1] = 0;
5729 parser[2] = 0;
5730 parser[3] = 0;
5731 parser[4] = 0;
5732 exports.os[42] = parser;
5733 parser = Object.create(null);
5734 parser[0] = new RegExp("((?:Mac[ +]?|; )OS[ +]X)[\\s+/](?:(\\d+)[_.](\\d+)(?:[_.](\\d+))?|Mach-O)");
5735 parser[1] = "Mac OS X";
5736 parser[2] = 0;
5737 parser[3] = 0;
5738 parser[4] = 0;
5739 exports.os[43] = parser;
5740 parser = Object.create(null);
5741 parser[0] = new RegExp(" (Dar)(win)/(9).(\\d+).*\\((?:i386|x86_64|Power Macintosh)\\)");
5742 parser[1] = "Mac OS X";
5743 parser[2] = "10";
5744 parser[3] = "5";
5745 parser[4] = 0;
5746 exports.os[44] = parser;
5747 parser = Object.create(null);
5748 parser[0] = new RegExp(" (Dar)(win)/(10).(\\d+).*\\((?:i386|x86_64)\\)");
5749 parser[1] = "Mac OS X";
5750 parser[2] = "10";
5751 parser[3] = "6";
5752 parser[4] = 0;
5753 exports.os[45] = parser;
5754 parser = Object.create(null);
5755 parser[0] = new RegExp(" (Dar)(win)/(11).(\\d+).*\\((?:i386|x86_64)\\)");
5756 parser[1] = "Mac OS X";
5757 parser[2] = "10";
5758 parser[3] = "7";
5759 parser[4] = 0;
5760 exports.os[46] = parser;
5761 parser = Object.create(null);
5762 parser[0] = new RegExp(" (Dar)(win)/(12).(\\d+).*\\((?:i386|x86_64)\\)");
5763 parser[1] = "Mac OS X";
5764 parser[2] = "10";
5765 parser[3] = "8";
5766 parser[4] = 0;
5767 exports.os[47] = parser;
5768 parser = Object.create(null);
5769 parser[0] = new RegExp(" (Dar)(win)/(13).(\\d+).*\\((?:i386|x86_64)\\)");
5770 parser[1] = "Mac OS X";
5771 parser[2] = "10";
5772 parser[3] = "9";
5773 parser[4] = 0;
5774 exports.os[48] = parser;
5775 parser = Object.create(null);
5776 parser[0] = new RegExp("Mac_PowerPC");
5777 parser[1] = "Mac OS";
5778 parser[2] = 0;
5779 parser[3] = 0;
5780 parser[4] = 0;
5781 exports.os[49] = parser;
5782 parser = Object.create(null);
5783 parser[0] = new RegExp("(?:PPC|Intel) (Mac OS X)");
5784 parser[1] = 0;
5785 parser[2] = 0;
5786 parser[3] = 0;
5787 parser[4] = 0;
5788 exports.os[50] = parser;
5789 parser = Object.create(null);
5790 parser[0] = new RegExp("(Apple\\s?TV)(?:/(\\d+)\\.(\\d+))?");
5791 parser[1] = "ATV OS X";
5792 parser[2] = 0;
5793 parser[3] = 0;
5794 parser[4] = 0;
5795 exports.os[51] = parser;
5796 parser = Object.create(null);
5797 parser[0] = new RegExp("(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS)[ +]+(\\d+)[_\\.](\\d+)(?:[_\\.](\\d+))?");
5798 parser[1] = "iOS";
5799 parser[2] = 0;
5800 parser[3] = 0;
5801 parser[4] = 0;
5802 exports.os[52] = parser;
5803 parser = Object.create(null);
5804 parser[0] = new RegExp("(iPhone|iPad|iPod); Opera");
5805 parser[1] = "iOS";
5806 parser[2] = 0;
5807 parser[3] = 0;
5808 parser[4] = 0;
5809 exports.os[53] = parser;
5810 parser = Object.create(null);
5811 parser[0] = new RegExp("(iPhone|iPad|iPod).*Mac OS X.*Version/(\\d+)\\.(\\d+)");
5812 parser[1] = "iOS";
5813 parser[2] = 0;
5814 parser[3] = 0;
5815 parser[4] = 0;
5816 exports.os[54] = parser;
5817 parser = Object.create(null);
5818 parser[0] = new RegExp("(CFNetwork)/(5)48\\.0\\.3.* Darwin/11\\.0\\.0");
5819 parser[1] = "iOS";
5820 parser[2] = 0;
5821 parser[3] = 0;
5822 parser[4] = 0;
5823 exports.os[55] = parser;
5824 parser = Object.create(null);
5825 parser[0] = new RegExp("(CFNetwork)/(5)48\\.(0)\\.4.* Darwin/(1)1\\.0\\.0");
5826 parser[1] = "iOS";
5827 parser[2] = 0;
5828 parser[3] = 0;
5829 parser[4] = 0;
5830 exports.os[56] = parser;
5831 parser = Object.create(null);
5832 parser[0] = new RegExp("(CFNetwork)/(5)48\\.(1)\\.4");
5833 parser[1] = "iOS";
5834 parser[2] = 0;
5835 parser[3] = 0;
5836 parser[4] = 0;
5837 exports.os[57] = parser;
5838 parser = Object.create(null);
5839 parser[0] = new RegExp("(CFNetwork)/(4)85\\.1(3)\\.9");
5840 parser[1] = "iOS";
5841 parser[2] = 0;
5842 parser[3] = 0;
5843 parser[4] = 0;
5844 exports.os[58] = parser;
5845 parser = Object.create(null);
5846 parser[0] = new RegExp("(CFNetwork)/(6)09\\.(1)\\.4");
5847 parser[1] = "iOS";
5848 parser[2] = 0;
5849 parser[3] = 0;
5850 parser[4] = 0;
5851 exports.os[59] = parser;
5852 parser = Object.create(null);
5853 parser[0] = new RegExp("(CFNetwork)/(6)(0)9");
5854 parser[1] = "iOS";
5855 parser[2] = 0;
5856 parser[3] = 0;
5857 parser[4] = 0;
5858 exports.os[60] = parser;
5859 parser = Object.create(null);
5860 parser[0] = new RegExp("(CFNetwork)/6(7)2\\.(1)\\.13");
5861 parser[1] = "iOS";
5862 parser[2] = 0;
5863 parser[3] = 0;
5864 parser[4] = 0;
5865 exports.os[61] = parser;
5866 parser = Object.create(null);
5867 parser[0] = new RegExp("(CFNetwork)/6(7)2\\.(1)\\.(1)4");
5868 parser[1] = "iOS";
5869 parser[2] = 0;
5870 parser[3] = 0;
5871 parser[4] = 0;
5872 exports.os[62] = parser;
5873 parser = Object.create(null);
5874 parser[0] = new RegExp("(CF)(Network)/6(7)(2)\\.1\\.15");
5875 parser[1] = "iOS";
5876 parser[2] = "7";
5877 parser[3] = "1";
5878 parser[4] = 0;
5879 exports.os[63] = parser;
5880 parser = Object.create(null);
5881 parser[0] = new RegExp("(CFNetwork)/6(7)2\\.(0)\\.(?:2|8)");
5882 parser[1] = "iOS";
5883 parser[2] = 0;
5884 parser[3] = 0;
5885 parser[4] = 0;
5886 exports.os[64] = parser;
5887 parser = Object.create(null);
5888 parser[0] = new RegExp("(CFNetwork)/709\\.1");
5889 parser[1] = "iOS";
5890 parser[2] = "8";
5891 parser[3] = "0.b5";
5892 parser[4] = 0;
5893 exports.os[65] = parser;
5894 parser = Object.create(null);
5895 parser[0] = new RegExp("(CF)(Network)/711\\.(\\d)");
5896 parser[1] = "iOS";
5897 parser[2] = "8";
5898 parser[3] = 0;
5899 parser[4] = 0;
5900 exports.os[66] = parser;
5901 parser = Object.create(null);
5902 parser[0] = new RegExp("(CF)(Network)/(720)\\.(\\d)");
5903 parser[1] = "Mac OS X";
5904 parser[2] = "10";
5905 parser[3] = "10";
5906 parser[4] = 0;
5907 exports.os[67] = parser;
5908 parser = Object.create(null);
5909 parser[0] = new RegExp("(CF)(Network)/758\\.(\\d)");
5910 parser[1] = "iOS";
5911 parser[2] = "9";
5912 parser[3] = 0;
5913 parser[4] = 0;
5914 exports.os[68] = parser;
5915 parser = Object.create(null);
5916 parser[0] = new RegExp("(CF)(Network)/808\\.(\\d)");
5917 parser[1] = "iOS";
5918 parser[2] = "10";
5919 parser[3] = 0;
5920 parser[4] = 0;
5921 exports.os[69] = parser;
5922 parser = Object.create(null);
5923 parser[0] = new RegExp("CFNetwork/.* Darwin/(9)\\.\\d+");
5924 parser[1] = "iOS";
5925 parser[2] = "1";
5926 parser[3] = 0;
5927 parser[4] = 0;
5928 exports.os[70] = parser;
5929 parser = Object.create(null);
5930 parser[0] = new RegExp("CFNetwork/.* Darwin/(10)\\.\\d+");
5931 parser[1] = "iOS";
5932 parser[2] = "4";
5933 parser[3] = 0;
5934 parser[4] = 0;
5935 exports.os[71] = parser;
5936 parser = Object.create(null);
5937 parser[0] = new RegExp("CFNetwork/.* Darwin/(11)\\.\\d+");
5938 parser[1] = "iOS";
5939 parser[2] = "5";
5940 parser[3] = 0;
5941 parser[4] = 0;
5942 exports.os[72] = parser;
5943 parser = Object.create(null);
5944 parser[0] = new RegExp("CFNetwork/.* Darwin/(13)\\.\\d+");
5945 parser[1] = "iOS";
5946 parser[2] = "6";
5947 parser[3] = 0;
5948 parser[4] = 0;
5949 exports.os[73] = parser;
5950 parser = Object.create(null);
5951 parser[0] = new RegExp("CFNetwork/6.* Darwin/(14)\\.\\d+");
5952 parser[1] = "iOS";
5953 parser[2] = "7";
5954 parser[3] = 0;
5955 parser[4] = 0;
5956 exports.os[74] = parser;
5957 parser = Object.create(null);
5958 parser[0] = new RegExp("CFNetwork/7.* Darwin/(14)\\.\\d+");
5959 parser[1] = "iOS";
5960 parser[2] = "8";
5961 parser[3] = "0";
5962 parser[4] = 0;
5963 exports.os[75] = parser;
5964 parser = Object.create(null);
5965 parser[0] = new RegExp("CFNetwork/7.* Darwin/(15)\\.\\d+");
5966 parser[1] = "iOS";
5967 parser[2] = "9";
5968 parser[3] = "0";
5969 parser[4] = 0;
5970 exports.os[76] = parser;
5971 parser = Object.create(null);
5972 parser[0] = new RegExp("CFNetwork/8.* Darwin/(16)\\.\\d+");
5973 parser[1] = "iOS";
5974 parser[2] = "10";
5975 parser[3] = 0;
5976 parser[4] = 0;
5977 exports.os[77] = parser;
5978 parser = Object.create(null);
5979 parser[0] = new RegExp("\\b(iOS[ /]|iOS; |iPhone(?:/| v|[ _]OS[/,]|; | OS : |\\d,\\d/|\\d,\\d; )|iPad/)(\\d{1,2})[_\\.](\\d{1,2})(?:[_\\.](\\d+))?");
5980 parser[1] = "iOS";
5981 parser[2] = 0;
5982 parser[3] = 0;
5983 parser[4] = 0;
5984 exports.os[78] = parser;
5985 parser = Object.create(null);
5986 parser[0] = new RegExp("\\((iOS);");
5987 parser[1] = 0;
5988 parser[2] = 0;
5989 parser[3] = 0;
5990 parser[4] = 0;
5991 exports.os[79] = parser;
5992 parser = Object.create(null);
5993 parser[0] = new RegExp("(tvOS)/(\\d+).(\\d+)");
5994 parser[1] = "tvOS";
5995 parser[2] = 0;
5996 parser[3] = 0;
5997 parser[4] = 0;
5998 exports.os[80] = parser;
5999 parser = Object.create(null);
6000 parser[0] = new RegExp("(CrOS) [a-z0-9_]+ (\\d+)\\.(\\d+)(?:\\.(\\d+))?");
6001 parser[1] = "Chrome OS";
6002 parser[2] = 0;
6003 parser[3] = 0;
6004 parser[4] = 0;
6005 exports.os[81] = parser;
6006 parser = Object.create(null);
6007 parser[0] = new RegExp("([Dd]ebian)");
6008 parser[1] = "Debian";
6009 parser[2] = 0;
6010 parser[3] = 0;
6011 parser[4] = 0;
6012 exports.os[82] = parser;
6013 parser = Object.create(null);
6014 parser[0] = new RegExp("(Linux Mint)(?:/(\\d+))?");
6015 parser[1] = 0;
6016 parser[2] = 0;
6017 parser[3] = 0;
6018 parser[4] = 0;
6019 exports.os[83] = parser;
6020 parser = Object.create(null);
6021 parser[0] = new RegExp("(Mandriva)(?: Linux)?/(?:[\\d.-]+m[a-z]{2}(\\d+).(\\d))?");
6022 parser[1] = 0;
6023 parser[2] = 0;
6024 parser[3] = 0;
6025 parser[4] = 0;
6026 exports.os[84] = parser;
6027 parser = Object.create(null);
6028 parser[0] = new RegExp("(Symbian[Oo][Ss])[/ ](\\d+)\\.(\\d+)");
6029 parser[1] = "Symbian OS";
6030 parser[2] = 0;
6031 parser[3] = 0;
6032 parser[4] = 0;
6033 exports.os[85] = parser;
6034 parser = Object.create(null);
6035 parser[0] = new RegExp("(Symbian/3).+NokiaBrowser/7\\.3");
6036 parser[1] = "Symbian^3 Anna";
6037 parser[2] = 0;
6038 parser[3] = 0;
6039 parser[4] = 0;
6040 exports.os[86] = parser;
6041 parser = Object.create(null);
6042 parser[0] = new RegExp("(Symbian/3).+NokiaBrowser/7\\.4");
6043 parser[1] = "Symbian^3 Belle";
6044 parser[2] = 0;
6045 parser[3] = 0;
6046 parser[4] = 0;
6047 exports.os[87] = parser;
6048 parser = Object.create(null);
6049 parser[0] = new RegExp("(Symbian/3)");
6050 parser[1] = "Symbian^3";
6051 parser[2] = 0;
6052 parser[3] = 0;
6053 parser[4] = 0;
6054 exports.os[88] = parser;
6055 parser = Object.create(null);
6056 parser[0] = new RegExp("\\b(Series 60|SymbOS|S60Version|S60V\\d|S60\\b)");
6057 parser[1] = "Symbian OS";
6058 parser[2] = 0;
6059 parser[3] = 0;
6060 parser[4] = 0;
6061 exports.os[89] = parser;
6062 parser = Object.create(null);
6063 parser[0] = new RegExp("(MeeGo)");
6064 parser[1] = 0;
6065 parser[2] = 0;
6066 parser[3] = 0;
6067 parser[4] = 0;
6068 exports.os[90] = parser;
6069 parser = Object.create(null);
6070 parser[0] = new RegExp("Symbian [Oo][Ss]");
6071 parser[1] = "Symbian OS";
6072 parser[2] = 0;
6073 parser[3] = 0;
6074 parser[4] = 0;
6075 exports.os[91] = parser;
6076 parser = Object.create(null);
6077 parser[0] = new RegExp("Series40;");
6078 parser[1] = "Nokia Series 40";
6079 parser[2] = 0;
6080 parser[3] = 0;
6081 parser[4] = 0;
6082 exports.os[92] = parser;
6083 parser = Object.create(null);
6084 parser[0] = new RegExp("Series30Plus;");
6085 parser[1] = "Nokia Series 30 Plus";
6086 parser[2] = 0;
6087 parser[3] = 0;
6088 parser[4] = 0;
6089 exports.os[93] = parser;
6090 parser = Object.create(null);
6091 parser[0] = new RegExp("(BB10);.+Version/(\\d+)\\.(\\d+)\\.(\\d+)");
6092 parser[1] = "BlackBerry OS";
6093 parser[2] = 0;
6094 parser[3] = 0;
6095 parser[4] = 0;
6096 exports.os[94] = parser;
6097 parser = Object.create(null);
6098 parser[0] = new RegExp("(Black[Bb]erry)[0-9a-z]+/(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.(\\d+))?");
6099 parser[1] = "BlackBerry OS";
6100 parser[2] = 0;
6101 parser[3] = 0;
6102 parser[4] = 0;
6103 exports.os[95] = parser;
6104 parser = Object.create(null);
6105 parser[0] = new RegExp("(Black[Bb]erry).+Version/(\\d+)\\.(\\d+)\\.(\\d+)(?:\\.(\\d+))?");
6106 parser[1] = "BlackBerry OS";
6107 parser[2] = 0;
6108 parser[3] = 0;
6109 parser[4] = 0;
6110 exports.os[96] = parser;
6111 parser = Object.create(null);
6112 parser[0] = new RegExp("(RIM Tablet OS) (\\d+)\\.(\\d+)\\.(\\d+)");
6113 parser[1] = "BlackBerry Tablet OS";
6114 parser[2] = 0;
6115 parser[3] = 0;
6116 parser[4] = 0;
6117 exports.os[97] = parser;
6118 parser = Object.create(null);
6119 parser[0] = new RegExp("(Play[Bb]ook)");
6120 parser[1] = "BlackBerry Tablet OS";
6121 parser[2] = 0;
6122 parser[3] = 0;
6123 parser[4] = 0;
6124 exports.os[98] = parser;
6125 parser = Object.create(null);
6126 parser[0] = new RegExp("(Black[Bb]erry)");
6127 parser[1] = "BlackBerry OS";
6128 parser[2] = 0;
6129 parser[3] = 0;
6130 parser[4] = 0;
6131 exports.os[99] = parser;
6132 parser = Object.create(null);
6133 parser[0] = new RegExp("\\((?:Mobile|Tablet);.+Gecko/18.0 Firefox/\\d+\\.\\d+");
6134 parser[1] = "Firefox OS";
6135 parser[2] = "1";
6136 parser[3] = "0";
6137 parser[4] = "1";
6138 exports.os[100] = parser;
6139 parser = Object.create(null);
6140 parser[0] = new RegExp("\\((?:Mobile|Tablet);.+Gecko/18.1 Firefox/\\d+\\.\\d+");
6141 parser[1] = "Firefox OS";
6142 parser[2] = "1";
6143 parser[3] = "1";
6144 parser[4] = 0;
6145 exports.os[101] = parser;
6146 parser = Object.create(null);
6147 parser[0] = new RegExp("\\((?:Mobile|Tablet);.+Gecko/26.0 Firefox/\\d+\\.\\d+");
6148 parser[1] = "Firefox OS";
6149 parser[2] = "1";
6150 parser[3] = "2";
6151 parser[4] = 0;
6152 exports.os[102] = parser;
6153 parser = Object.create(null);
6154 parser[0] = new RegExp("\\((?:Mobile|Tablet);.+Gecko/28.0 Firefox/\\d+\\.\\d+");
6155 parser[1] = "Firefox OS";
6156 parser[2] = "1";
6157 parser[3] = "3";
6158 parser[4] = 0;
6159 exports.os[103] = parser;
6160 parser = Object.create(null);
6161 parser[0] = new RegExp("\\((?:Mobile|Tablet);.+Gecko/30.0 Firefox/\\d+\\.\\d+");
6162 parser[1] = "Firefox OS";
6163 parser[2] = "1";
6164 parser[3] = "4";
6165 parser[4] = 0;
6166 exports.os[104] = parser;
6167 parser = Object.create(null);
6168 parser[0] = new RegExp("\\((?:Mobile|Tablet);.+Gecko/32.0 Firefox/\\d+\\.\\d+");
6169 parser[1] = "Firefox OS";
6170 parser[2] = "2";
6171 parser[3] = "0";
6172 parser[4] = 0;
6173 exports.os[105] = parser;
6174 parser = Object.create(null);
6175 parser[0] = new RegExp("\\((?:Mobile|Tablet);.+Gecko/34.0 Firefox/\\d+\\.\\d+");
6176 parser[1] = "Firefox OS";
6177 parser[2] = "2";
6178 parser[3] = "1";
6179 parser[4] = 0;
6180 exports.os[106] = parser;
6181 parser = Object.create(null);
6182 parser[0] = new RegExp("\\((?:Mobile|Tablet);.+Firefox/\\d+\\.\\d+");
6183 parser[1] = "Firefox OS";
6184 parser[2] = 0;
6185 parser[3] = 0;
6186 parser[4] = 0;
6187 exports.os[107] = parser;
6188 parser = Object.create(null);
6189 parser[0] = new RegExp("(BREW)[ /](\\d+)\\.(\\d+)\\.(\\d+)");
6190 parser[1] = 0;
6191 parser[2] = 0;
6192 parser[3] = 0;
6193 parser[4] = 0;
6194 exports.os[108] = parser;
6195 parser = Object.create(null);
6196 parser[0] = new RegExp("(BREW);");
6197 parser[1] = 0;
6198 parser[2] = 0;
6199 parser[3] = 0;
6200 parser[4] = 0;
6201 exports.os[109] = parser;
6202 parser = Object.create(null);
6203 parser[0] = new RegExp("(Brew MP|BMP)[ /](\\d+)\\.(\\d+)\\.(\\d+)");
6204 parser[1] = "Brew MP";
6205 parser[2] = 0;
6206 parser[3] = 0;
6207 parser[4] = 0;
6208 exports.os[110] = parser;
6209 parser = Object.create(null);
6210 parser[0] = new RegExp("BMP;");
6211 parser[1] = "Brew MP";
6212 parser[2] = 0;
6213 parser[3] = 0;
6214 parser[4] = 0;
6215 exports.os[111] = parser;
6216 parser = Object.create(null);
6217 parser[0] = new RegExp("(GoogleTV)(?: (\\d+)\\.(\\d+)(?:\\.(\\d+))?|/[\\da-z]+)");
6218 parser[1] = 0;
6219 parser[2] = 0;
6220 parser[3] = 0;
6221 parser[4] = 0;
6222 exports.os[112] = parser;
6223 parser = Object.create(null);
6224 parser[0] = new RegExp("(WebTV)/(\\d+).(\\d+)");
6225 parser[1] = 0;
6226 parser[2] = 0;
6227 parser[3] = 0;
6228 parser[4] = 0;
6229 exports.os[113] = parser;
6230 parser = Object.create(null);
6231 parser[0] = new RegExp("(CrKey)(?:[/](\\d+)\\.(\\d+)(?:\\.(\\d+))?)?");
6232 parser[1] = "Chromecast";
6233 parser[2] = 0;
6234 parser[3] = 0;
6235 parser[4] = 0;
6236 exports.os[114] = parser;
6237 parser = Object.create(null);
6238 parser[0] = new RegExp("(hpw|web)OS/(\\d+)\\.(\\d+)(?:\\.(\\d+))?");
6239 parser[1] = "webOS";
6240 parser[2] = 0;
6241 parser[3] = 0;
6242 parser[4] = 0;
6243 exports.os[115] = parser;
6244 parser = Object.create(null);
6245 parser[0] = new RegExp("(VRE);");
6246 parser[1] = 0;
6247 parser[2] = 0;
6248 parser[3] = 0;
6249 parser[4] = 0;
6250 exports.os[116] = parser;
6251 parser = Object.create(null);
6252 parser[0] = new RegExp("(Fedora|Red Hat|PCLinuxOS|Puppy|Ubuntu|Kindle|Bada|Lubuntu|BackTrack|Slackware|(?:Free|Open|Net|\\b)BSD)[/ ](\\d+)\\.(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?");
6253 parser[1] = 0;
6254 parser[2] = 0;
6255 parser[3] = 0;
6256 parser[4] = 0;
6257 exports.os[117] = parser;
6258 parser = Object.create(null);
6259 parser[0] = new RegExp("(Linux)[ /](\\d+)\\.(\\d+)(?:\\.(\\d+))?.*gentoo");
6260 parser[1] = "Gentoo";
6261 parser[2] = 0;
6262 parser[3] = 0;
6263 parser[4] = 0;
6264 exports.os[118] = parser;
6265 parser = Object.create(null);
6266 parser[0] = new RegExp("\\((Bada);");
6267 parser[1] = 0;
6268 parser[2] = 0;
6269 parser[3] = 0;
6270 parser[4] = 0;
6271 exports.os[119] = parser;
6272 parser = Object.create(null);
6273 parser[0] = new RegExp("(Windows|Android|WeTab|Maemo|Web0S)");
6274 parser[1] = 0;
6275 parser[2] = 0;
6276 parser[3] = 0;
6277 parser[4] = 0;
6278 exports.os[120] = parser;
6279 parser = Object.create(null);
6280 parser[0] = new RegExp("(Ubuntu|Kubuntu|Arch Linux|CentOS|Slackware|Gentoo|openSUSE|SUSE|Red Hat|Fedora|PCLinuxOS|Mageia|(?:Free|Open|Net|\\b)BSD)");
6281 parser[1] = 0;
6282 parser[2] = 0;
6283 parser[3] = 0;
6284 parser[4] = 0;
6285 exports.os[121] = parser;
6286 parser = Object.create(null);
6287 parser[0] = new RegExp("(Linux)(?:[ /](\\d+)\\.(\\d+)(?:\\.(\\d+))?)?");
6288 parser[1] = 0;
6289 parser[2] = 0;
6290 parser[3] = 0;
6291 parser[4] = 0;
6292 exports.os[122] = parser;
6293 parser = Object.create(null);
6294 parser[0] = new RegExp("SunOS");
6295 parser[1] = "Solaris";
6296 parser[2] = 0;
6297 parser[3] = 0;
6298 parser[4] = 0;
6299 exports.os[123] = parser;
6300 parser = Object.create(null);
6301 parser[0] = new RegExp("^(Roku)/DVP-(\\d+)\\.(\\d+)");
6302 parser[1] = 0;
6303 parser[2] = 0;
6304 parser[3] = 0;
6305 parser[4] = 0;
6306 exports.os[124] = parser;
6307 parser = Object.create(null);
6308 parser[0] = new RegExp("(iOS) (\\d+)\\.(\\d+)(?:\\.(\\d+))?");
6309 parser[1] = 0;
6310 parser[2] = 0;
6311 parser[3] = 0;
6312 parser[4] = 0;
6313 exports.os[125] = parser;
6314
6315 exports.os.length = 126;