vendor: 5,624 bytes, lines 1-175
1/* UAParser.js v1.0.35 2 Copyright © 2012-2021 Faisal Salman <[email protected]> 3 MIT License */ 4(function (window, undefined) { 5 'use strict'; 6 var LIBVERSION = '1.0.35', 7 EMPTY = '', 8 UNKNOWN = '?', 9 FUNC_TYPE = 'function', 10 UNDEF_TYPE = 'undefined', 11 OBJ_TYPE = 'object', 12 STR_TYPE = 'string', 13 MAJOR = 'major', 14 MODEL = 'model', 15 NAME = 'name', 16 TYPE = 'type', 17 VENDOR = 'vendor', 18 VERSION = 'version', 19 ARCHITECTURE = 'architecture', 20 CONSOLE = 'console', 21 MOBILE = 'mobile', 22 TABLET = 'tablet', 23 SMARTTV = 'smarttv', 24 WEARABLE = 'wearable', 25 EMBEDDED = 'embedded', 26 UA_MAX_LENGTH = 350; 27 var AMAZON = 'Amazon', 28 APPLE = 'Apple', 29 ASUS = 'ASUS', 30 BLACKBERRY = 'BlackBerry', 31 BROWSER = 'Browser', 32 CHROME = 'Chrome', 33 EDGE = 'Edge', 34 FIREFOX = 'Firefox', 35 GOOGLE = 'Google', 36 HUAWEI = 'Huawei', 37 LG = 'LG', 38 MICROSOFT = 'Microsoft', 39 MOTOROLA = 'Motorola', 40 OPERA = 'Opera', 41 SAMSUNG = 'Samsung', 42 SHARP = 'Sharp', 43 SONY = 'Sony', 44 VIERA = 'Viera', 45 XIAOMI = 'Xiaomi', 46 ZEBRA = 'Zebra', 47 FACEBOOK = 'Facebook', 48 CHROMIUM_OS = 'Chromium OS', 49 MAC_OS = 'Mac OS'; 50 var extend = function (regexes, extensions) { 51 var mergedRegexes = {}; 52 for (var i in regexes) { 53 if (extensions[i] && extensions[i].length % 2 === 0) { 54 mergedRegexes[i] = extensions[i].concat(regexes[i]); 55 } else { 56 mergedRegexes[i] = regexes[i]; 57 } 58 } 59 return mergedRegexes; 60 }, 61 enumerize = function (arr) { 62 var enums = {}; 63 for (var i = 0; i < arr.length; i++) { 64 enums[arr[i].toUpperCase()] = arr[i]; 65 } 66 return enums; 67 }, 68 has = function (str1, str2) { 69 return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false; 70 }, 71 lowerize = function (str) { 72 return str.toLowerCase(); 73 }, 74 majorize = function (version) { 75 return typeof version === STR_TYPE ? version.replace(/[^\d\.]/g, EMPTY).split('.')[0] : undefined; 76 }, 77 trim = function (str, len) { 78 if (typeof str === STR_TYPE) { 79 str = str.replace(/^\s\s*/, EMPTY); 80 return typeof len === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH); 81 } 82 }; 83 var rgxMapper = function (ua, arrays) { 84 var i = 0, 85 j, 86 k, 87 p, 88 q, 89 matches, 90 match; 91 while (i < arrays.length && !matches) { 92 var regex = arrays[i], 93 props = arrays[i + 1]; 94 j = k = 0; 95 while (j < regex.length && !matches) { 96 if (!regex[j]) { 97 break; 98 } 99 matches = regex[j++].exec(ua); 100 if (!!matches) { 101 for (p = 0; p < props.length; p++) { 102 match = matches[++k]; 103 q = props[p]; 104 if (typeof q === OBJ_TYPE && q.length > 0) { 105 if (q.length === 2) { 106 if (typeof q[1] == FUNC_TYPE) { 107 this[q[0]] = q[1].call(this, match); 108 } else { 109 this[q[0]] = q[1]; 110 } 111 } else if (q.length === 3) { 112 if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) { 113 this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined; 114 } else { 115 this[q[0]] = match ? match.replace(q[1], q[2]) : undefined; 116 } 117 } else if (q.length === 4) { 118 this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined; 119 } 120 } else { 121 this[q] = match ? match : undefined; 122 } 123 } 124 } 125 } 126 i += 2; 127 } 128 }, 129 strMapper = function (str, map) { 130 for (var i in map) { 131 if (typeof map[i] === OBJ_TYPE && map[i].length > 0) { 132 for (var j = 0; j < map[i].length; j++) { 133 if (has(map[i][j], str)) { 134 return i === UNKNOWN ? undefined : i; 135 } 136 } 137 } else if (has(map[i], str)) { 138 return i === UNKNOWN ? undefined : i; 139 } 140 } 141 return str; 142 }; 143 var oldSafariMap = {'1.0': '/8', 1.2: '/1', 1.3: '/3', '2.0': '/412', '2.0.2': '/416', '2.0.3': '/417', '2.0.4': '/419', '?': '/'}, 144 windowsVersionMap = {ME: '4.90', 'NT 3.11': 'NT3.51', 'NT 4.0': 'NT4.0', 2e3: 'NT 5.0', XP: ['NT 5.1', 'NT 5.2'], Vista: 'NT 6.0', 7: 'NT 6.1', 8: 'NT 6.2', 8.1: 'NT 6.3', 10: ['NT 6.4', 'NT 10.0'], RT: 'ARM'}; 145 var regexes = { 146 browser: [ 147 [/\b(?:crmo|crios)\/([\w\.]+)/i], 148 [VERSION, [NAME, 'Chrome']], 149 [/edg(?:e|ios|a)?\/([\w\.]+)/i], 150 [VERSION, [NAME, 'Edge']], 151 [/(opera mini)\/([-\w\.]+)/i, /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i, /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i], 152 [NAME, VERSION], 153 [/opios[\/ ]+([\w\.]+)/i], 154 [VERSION, [NAME, OPERA + ' Mini']], 155 [/\bopr\/([\w\.]+)/i], 156 [VERSION, [NAME, OPERA]], 157 [/(kindle)\/([\w\.]+)/i, /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i, /(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i, /(ba?idubrowser)[\/ ]?([\w\.]+)/i, /(?:ms|\()(ie) ([\w\.]+)/i, /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i, /(heytap|ovi)browser\/([\d\.]+)/i, /(weibo)__([\d\.]+)/i], 158 [NAME, VERSION], 159 [/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i], 160 [VERSION, [NAME, 'UC' + BROWSER]], 161 [/microm.+\bqbcore\/([\w\.]+)/i, /\bqbcore\/([\w\.]+).+microm/i], 162 [VERSION, [NAME, 'WeChat(Win) Desktop']], 163 [/micromessenger\/([\w\.]+)/i], 164 [VERSION, [NAME, 'WeChat']], 165 [/konqueror\/([\w\.]+)/i], 166 [VERSION, [NAME, 'Konqueror']], 167 [/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i], 168 [VERSION, [NAME, 'IE']], 169 [/ya(?:search)?browser\/([\w\.]+)/i], 170 [VERSION, [NAME, 'Yandex']], 171 [/(avast|avg)\/([\w\.]+)/i], 172 [[NAME, /(.+)/, '$1 Secure ' + BROWSER], VERSION], 173 [/\bfocus\/([\w\.]+)/i], 174 [VERSION, [NAME, FIREFOX + ' Focus']], 175 [/\bopt\/([\w\.]+)/i],
vendor: 12,590 bytes, lines 176-441
176 [VERSION, [NAME, OPERA + ' Touch']], 177 [/coc_coc\w+\/([\w\.]+)/i], 178 [VERSION, [NAME, 'Coc Coc']], 179 [/dolfin\/([\w\.]+)/i], 180 [VERSION, [NAME, 'Dolphin']], 181 [/coast\/([\w\.]+)/i], 182 [VERSION, [NAME, OPERA + ' Coast']], 183 [/miuibrowser\/([\w\.]+)/i], 184 [VERSION, [NAME, 'MIUI ' + BROWSER]], 185 [/fxios\/([-\w\.]+)/i], 186 [VERSION, [NAME, FIREFOX]], 187 [/\bqihu|(qi?ho?o?|360)browser/i], 188 [[NAME, '360 ' + BROWSER]], 189 [/(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i], 190 [[NAME, /(.+)/, '$1 ' + BROWSER], VERSION], 191 [/(comodo_dragon)\/([\w\.]+)/i], 192 [[NAME, /_/g, ' '], VERSION], 193 [/(electron)\/([\w\.]+) safari/i, /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i, /m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i], 194 [NAME, VERSION], 195 [/(metasr)[\/ ]?([\w\.]+)/i, /(lbbrowser)/i, /\[(linkedin)app\]/i], 196 [NAME], 197 [/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i], 198 [[NAME, FACEBOOK], VERSION], 199 [/(kakao(?:talk|story))[\/ ]([\w\.]+)/i, /(naver)\(.*?(\d+\.[\w\.]+).*\)/i, /safari (line)\/([\w\.]+)/i, /\b(line)\/([\w\.]+)\/iab/i, /(chromium|instagram)[\/ ]([-\w\.]+)/i], 200 [NAME, VERSION], 201 [/\bgsa\/([\w\.]+) .*safari\//i], 202 [VERSION, [NAME, 'GSA']], 203 [/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i], 204 [VERSION, [NAME, 'TikTok']], 205 [/headlesschrome(?:\/([\w\.]+)| )/i], 206 [VERSION, [NAME, CHROME + ' Headless']], 207 [/ wv\).+(chrome)\/([\w\.]+)/i], 208 [[NAME, CHROME + ' WebView'], VERSION], 209 [/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i], 210 [VERSION, [NAME, 'Android ' + BROWSER]], 211 [/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i], 212 [NAME, VERSION], 213 [/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i], 214 [VERSION, [NAME, 'Mobile Safari']], 215 [/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i], 216 [VERSION, NAME], 217 [/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i], 218 [NAME, [VERSION, strMapper, oldSafariMap]], 219 [/(webkit|khtml)\/([\w\.]+)/i], 220 [NAME, VERSION], 221 [/(navigator|netscape\d?)\/([-\w\.]+)/i], 222 [[NAME, 'Netscape'], VERSION], 223 [/mobile vr; rv:([\w\.]+)\).+firefox/i], 224 [VERSION, [NAME, FIREFOX + ' Reality']], 225 [/ekiohf.+(flow)\/([\w\.]+)/i, /(swiftfox)/i, /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i, /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i, /(firefox)\/([\w\.]+)/i, /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i, /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i, /(links) \(([\w\.]+)/i, /panasonic;(viera)/i], 226 [NAME, VERSION], 227 [/(cobalt)\/([\w\.]+)/i], 228 [NAME, [VERSION, /master.|lts./, '']], 229 ], 230 cpu: [[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i], [[ARCHITECTURE, 'amd64']], [/(ia32(?=;))/i], [[ARCHITECTURE, lowerize]], [/((?:i[346]|x)86)[;\)]/i], [[ARCHITECTURE, 'ia32']], [/\b(aarch64|arm(v?8e?l?|_?64))\b/i], [[ARCHITECTURE, 'arm64']], [/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i], [[ARCHITECTURE, 'armhf']], [/windows (ce|mobile); ppc;/i], [[ARCHITECTURE, 'arm']], [/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [/(sun4\w)[;\)]/i], [[ARCHITECTURE, 'sparc']], [/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i], [[ARCHITECTURE, lowerize]]], 231 device: [ 232 [/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i], 233 [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], 234 [/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i, /samsung[- ]([-\w]+)/i, /sec-(sgh\w+)/i], 235 [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], 236 [/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i], 237 [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], 238 [/\((ipad);[-\w\),; ]+apple/i, /applecoremedia\/[\w\.]+ \((ipad)/i, /\b(ipad)\d\d?,\d\d?[;\]].+ios/i], 239 [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], 240 [/(macintosh);/i], 241 [MODEL, [VENDOR, APPLE]], 242 [/\b(sh-?[altvz]?\d\d[a-ekm]?)/i], 243 [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], 244 [/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i], 245 [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], 246 [/(?:huawei|honor)([-\w ]+)[;\)]/i, /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i], 247 [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], 248 [/\b(poco[\w ]+)(?: bui|\))/i, /\b; (\w+) build\/hm\1/i, /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i], 249 [ 250 [MODEL, /_/g, ' '], 251 [VENDOR, XIAOMI], 252 [TYPE, MOBILE], 253 ], 254 [/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i], 255 [ 256 [MODEL, /_/g, ' '], 257 [VENDOR, XIAOMI], 258 [TYPE, TABLET], 259 ], 260 [/; (\w+) bui.+ oppo/i, /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i], 261 [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], 262 [/vivo (\w+)(?: bui|\))/i, /\b(v[12]\d{3}\w?[at])(?: bui|;)/i], 263 [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], 264 [/\b(rmx[12]\d{3})(?: bui|;|\))/i], 265 [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], 266 [/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i, /\bmot(?:orola)?[- ](\w*)/i, /((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i], 267 [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], 268 [/\b(mz60\d|xoom[2 ]{0,2}) build\//i], 269 [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], 270 [/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i], 271 [MODEL, [VENDOR, LG], [TYPE, TABLET]], 272 [/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i, /\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i, /\blg-?([\d\w]+) bui/i], 273 [MODEL, [VENDOR, LG], [TYPE, MOBILE]], 274 [/(ideatab[-\w ]+)/i, /lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i], 275 [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], 276 [/(?:maemo|nokia).*(n900|lumia \d+)/i, /nokia[-_ ]?([-\w\.]*)/i], 277 [ 278 [MODEL, /_/g, ' '], 279 [VENDOR, 'Nokia'], 280 [TYPE, MOBILE], 281 ], 282 [/(pixel c)\b/i], 283 [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], 284 [/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i], 285 [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], 286 [/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i], 287 [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], 288 [/sony tablet [ps]/i, /\b(?:sony)?sgp\w+(?: bui|\))/i], 289 [ 290 [MODEL, 'Xperia Tablet'], 291 [VENDOR, SONY], 292 [TYPE, TABLET], 293 ], 294 [/ (kb2005|in20[12]5|be20[12][59])\b/i, /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i], 295 [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], 296 [/(alexa)webm/i, /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i, /(kf[a-z]+)( bui|\)).+silk\//i], 297 [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], 298 [/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i], 299 [ 300 [MODEL, /(.+)/g, 'Fire Phone $1'], 301 [VENDOR, AMAZON], 302 [TYPE, MOBILE], 303 ], 304 [/(playbook);[-\w\),; ]+(rim)/i], 305 [MODEL, VENDOR, [TYPE, TABLET]], 306 [/\b((?:bb[a-f]|st[hv])100-\d)/i, /\(bb10; (\w+)/i], 307 [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], 308 [/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i], 309 [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], 310 [/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i], 311 [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], 312 [/(nexus 9)/i], 313 [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], 314 [/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i, /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i, /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i], 315 [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], 316 [/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i], 317 [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], 318 [/droid.+; (m[1-5] note) bui/i, /\bmz-([-\w]{2,})/i], 319 [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], 320 [/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i, /(hp) ([\w ]+\w)/i, /(asus)-?(\w+)/i, /(microsoft); (lumia[\w ]+)/i, /(lenovo)[-_ ]?([-\w]+)/i, /(jolla)/i, /(oppo) ?([\w ]+) bui/i], 321 [VENDOR, MODEL, [TYPE, MOBILE]], 322 [/(kobo)\s(ereader|touch)/i, /(archos) (gamepad2?)/i, /(hp).+(touchpad(?!.+tablet)|tablet)/i, /(kindle)\/([\w\.]+)/i, /(nook)[\w ]+build\/(\w+)/i, /(dell) (strea[kpr\d ]*[\dko])/i, /(le[- ]+pan)[- ]+(\w{1,9}) bui/i, /(trinity)[- ]*(t\d{3}) bui/i, /(gigaset)[- ]+(q\w{1,9}) bui/i, /(vodafone) ([\w ]+)(?:\)| bui)/i], 323 [VENDOR, MODEL, [TYPE, TABLET]], 324 [/(surface duo)/i], 325 [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], 326 [/droid [\d\.]+; (fp\du?)(?: b|\))/i], 327 [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], 328 [/(u304aa)/i], 329 [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], 330 [/\bsie-(\w*)/i], 331 [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], 332 [/\b(rct\w+) b/i], 333 [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], 334 [/\b(venue[\d ]{2,7}) b/i], 335 [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], 336 [/\b(q(?:mv|ta)\w+) b/i], 337 [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], 338 [/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i], 339 [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], 340 [/\b(tm\d{3}\w+) b/i], 341 [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], 342 [/\b(k88) b/i], 343 [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], 344 [/\b(nx\d{3}j) b/i], 345 [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], 346 [/\b(gen\d{3}) b.+49h/i], 347 [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], 348 [/\b(zur\d{3}) b/i], 349 [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], 350 [/\b((zeki)?tb.*\b) b/i], 351 [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], 352 [/\b([yr]\d{2}) b/i, /\b(dragon[- ]+touch |dt)(\w{5}) b/i], 353 [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], 354 [/\b(ns-?\w{0,9}) b/i], 355 [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], 356 [/\b((nxa|next)-?\w{0,9}) b/i], 357 [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], 358 [/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i], 359 [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], 360 [/\b(lvtel\-)?(v1[12]) b/i], 361 [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], 362 [/\b(ph-1) /i], 363 [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], 364 [/\b(v(100md|700na|7011|917g).*\b) b/i], 365 [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], 366 [/\b(trio[-\w\. ]+) b/i], 367 [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], 368 [/\btu_(1491) b/i], 369 [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], 370 [/(shield[\w ]+) b/i], 371 [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], 372 [/(sprint) (\w+)/i], 373 [VENDOR, MODEL, [TYPE, MOBILE]], 374 [/(kin\.[onetw]{3})/i], 375 [ 376 [MODEL, /\./g, ' '], 377 [VENDOR, MICROSOFT], 378 [TYPE, MOBILE], 379 ], 380 [/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i], 381 [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], 382 [/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i], 383 [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], 384 [/smart-tv.+(samsung)/i], 385 [VENDOR, [TYPE, SMARTTV]], 386 [/hbbtv.+maple;(\d+)/i], 387 [ 388 [MODEL, /^/, 'SmartTV'], 389 [VENDOR, SAMSUNG], 390 [TYPE, SMARTTV], 391 ], 392 [/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i], 393 [ 394 [VENDOR, LG], 395 [TYPE, SMARTTV], 396 ], 397 [/(apple) ?tv/i], 398 [VENDOR, [MODEL, APPLE + ' TV'], [TYPE, SMARTTV]], 399 [/crkey/i], 400 [ 401 [MODEL, CHROME + 'cast'], 402 [VENDOR, GOOGLE], 403 [TYPE, SMARTTV], 404 ], 405 [/droid.+aft(\w)( bui|\))/i], 406 [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], 407 [/\(dtv[\);].+(aquos)/i, /(aquos-tv[\w ]+)\)/i], 408 [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]], 409 [/(bravia[\w ]+)( bui|\))/i], 410 [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], 411 [/(mitv-\w{5}) bui/i], 412 [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], 413 [/Hbbtv.*(technisat) (.*);/i], 414 [VENDOR, MODEL, [TYPE, SMARTTV]], 415 [/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i], 416 [ 417 [VENDOR, trim], 418 [MODEL, trim], 419 [TYPE, SMARTTV], 420 ], 421 [/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i], 422 [[TYPE, SMARTTV]], 423 [/(ouya)/i, /(nintendo) ([wids3utch]+)/i], 424 [VENDOR, MODEL, [TYPE, CONSOLE]], 425 [/droid.+; (shield) bui/i], 426 [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], 427 [/(playstation [345portablevi]+)/i], 428 [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], 429 [/\b(xbox(?: one)?(?!; xbox))[\); ]/i], 430 [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], 431 [/((pebble))app/i], 432 [VENDOR, MODEL, [TYPE, WEARABLE]], 433 [/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i], 434 [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], 435 [/droid.+; (glass) \d/i], 436 [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], 437 [/droid.+; (wt63?0{2,3})\)/i], 438 [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], 439 [/(quest( 2| pro)?)/i], 440 [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], 441 [/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],
vendor: 7,203 bytes, lines 442-612
442 [VENDOR, [TYPE, EMBEDDED]], 443 [/(aeobc)\b/i], 444 [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], 445 [/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i], 446 [MODEL, [TYPE, MOBILE]], 447 [/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i], 448 [MODEL, [TYPE, TABLET]], 449 [/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i], 450 [[TYPE, TABLET]], 451 [/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i], 452 [[TYPE, MOBILE]], 453 [/(android[-\w\. ]{0,9});.+buil/i], 454 [MODEL, [VENDOR, 'Generic']], 455 ], 456 engine: [[/windows.+ edge\/([\w\.]+)/i], [VERSION, [NAME, EDGE + 'HTML']], [/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i], [VERSION, [NAME, 'Blink']], [/(presto)\/([\w\.]+)/i, /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, /ekioh(flow)\/([\w\.]+)/i, /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, /(icab)[\/ ]([23]\.[\d\.]+)/i, /\b(libweb)/i], [NAME, VERSION], [/rv\:([\w\.]{1,9})\b.+(gecko)/i], [VERSION, NAME]], 457 os: [ 458 [/microsoft (windows) (vista|xp)/i], 459 [NAME, VERSION], 460 [/(windows) nt 6\.2; (arm)/i, /(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i, /(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i], 461 [NAME, [VERSION, strMapper, windowsVersionMap]], 462 [/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i], 463 [ 464 [NAME, 'Windows'], 465 [VERSION, strMapper, windowsVersionMap], 466 ], 467 [/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, /ios;fbsv\/([\d\.]+)/i, /cfnetwork\/.+darwin/i], 468 [ 469 [VERSION, /_/g, '.'], 470 [NAME, 'iOS'], 471 ], 472 [/(mac os x) ?([\w\. ]*)/i, /(macintosh|mac_powerpc\b)(?!.+haiku)/i], 473 [ 474 [NAME, MAC_OS], 475 [VERSION, /_/g, '.'], 476 ], 477 [/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i], 478 [VERSION, NAME], 479 [/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i, /(blackberry)\w*\/([\w\.]*)/i, /(tizen|kaios)[\/ ]([\w\.]+)/i, /\((series40);/i], 480 [NAME, VERSION], 481 [/\(bb(10);/i], 482 [VERSION, [NAME, BLACKBERRY]], 483 [/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i], 484 [VERSION, [NAME, 'Symbian']], 485 [/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i], 486 [VERSION, [NAME, FIREFOX + ' OS']], 487 [/web0s;.+rt(tv)/i, /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i], 488 [VERSION, [NAME, 'webOS']], 489 [/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i], 490 [VERSION, [NAME, 'watchOS']], 491 [/crkey\/([\d\.]+)/i], 492 [VERSION, [NAME, CHROME + 'cast']], 493 [/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i], 494 [[NAME, CHROMIUM_OS], VERSION], 495 [/panasonic;(viera)/i, /(netrange)mmh/i, /(nettv)\/(\d+\.[\w\.]+)/i, /(nintendo|playstation) ([wids345portablevuch]+)/i, /(xbox); +xbox ([^\);]+)/i, /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i, /(mint)[\/\(\) ]?(\w*)/i, /(mageia|vectorlinux)[; ]/i, /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i, /(hurd|linux) ?([\w\.]*)/i, /(gnu) ?([\w\.]*)/i, /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i, /(haiku) (\w+)/i], 496 [NAME, VERSION], 497 [/(sunos) ?([\w\.\d]*)/i], 498 [[NAME, 'Solaris'], VERSION], 499 [/((?:open)?solaris)[-\/ ]?([\w\.]*)/i, /(aix) ((\d)(?=\.|\)| )[\w\.])*/i, /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, /(unix) ?([\w\.]*)/i], 500 [NAME, VERSION], 501 ], 502 }; 503 var UAParser = function (ua, extensions) { 504 if (typeof ua === OBJ_TYPE) { 505 extensions = ua; 506 ua = undefined; 507 } 508 if (!(this instanceof UAParser)) { 509 return new UAParser(ua, extensions).getResult(); 510 } 511 var _navigator = typeof window !== UNDEF_TYPE && window.navigator ? window.navigator : undefined; 512 var _ua = ua || (_navigator && _navigator.userAgent ? _navigator.userAgent : EMPTY); 513 var _uach = _navigator && _navigator.userAgentData ? _navigator.userAgentData : undefined; 514 var _rgxmap = extensions ? extend(regexes, extensions) : regexes; 515 var _isSelfNav = _navigator && _navigator.userAgent == _ua; 516 this.getBrowser = function () { 517 var _browser = {}; 518 _browser[NAME] = undefined; 519 _browser[VERSION] = undefined; 520 rgxMapper.call(_browser, _ua, _rgxmap.browser); 521 _browser[MAJOR] = majorize(_browser[VERSION]); 522 if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) { 523 _browser[NAME] = 'Brave'; 524 } 525 return _browser; 526 }; 527 this.getCPU = function () { 528 var _cpu = {}; 529 _cpu[ARCHITECTURE] = undefined; 530 rgxMapper.call(_cpu, _ua, _rgxmap.cpu); 531 return _cpu; 532 }; 533 this.getDevice = function () { 534 var _device = {}; 535 _device[VENDOR] = undefined; 536 _device[MODEL] = undefined; 537 _device[TYPE] = undefined; 538 rgxMapper.call(_device, _ua, _rgxmap.device); 539 if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) { 540 _device[TYPE] = MOBILE; 541 } 542 if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) { 543 _device[MODEL] = 'iPad'; 544 _device[TYPE] = TABLET; 545 } 546 return _device; 547 }; 548 this.getEngine = function () { 549 var _engine = {}; 550 _engine[NAME] = undefined; 551 _engine[VERSION] = undefined; 552 rgxMapper.call(_engine, _ua, _rgxmap.engine); 553 return _engine; 554 }; 555 this.getOS = function () { 556 var _os = {}; 557 _os[NAME] = undefined; 558 _os[VERSION] = undefined; 559 rgxMapper.call(_os, _ua, _rgxmap.os); 560 if (_isSelfNav && !_os[NAME] && _uach && _uach.platform != 'Unknown') { 561 _os[NAME] = _uach.platform.replace(/chrome os/i, CHROMIUM_OS).replace(/macos/i, MAC_OS); 562 } 563 return _os; 564 }; 565 this.getResult = function () { 566 return {ua: this.getUA(), browser: this.getBrowser(), engine: this.getEngine(), os: this.getOS(), device: this.getDevice(), cpu: this.getCPU()}; 567 }; 568 this.getUA = function () { 569 return _ua; 570 }; 571 this.setUA = function (ua) { 572 _ua = typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH ? trim(ua, UA_MAX_LENGTH) : ua; 573 return this; 574 }; 575 this.setUA(_ua); 576 return this; 577 }; 578 UAParser.VERSION = LIBVERSION; 579 UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]); 580 UAParser.CPU = enumerize([ARCHITECTURE]); 581 UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]); 582 UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]); 583 if (typeof exports !== UNDEF_TYPE) { 584 if (typeof module !== UNDEF_TYPE && module.exports) { 585 exports = module.exports = UAParser; 586 } 587 exports.UAParser = UAParser; 588 } else { 589 if (typeof define === FUNC_TYPE && define.amd) { 590 define(function () { 591 return UAParser; 592 }); 593 } else if (typeof window !== UNDEF_TYPE) { 594 window.UAParser = UAParser; 595 } 596 } 597 var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto); 598 if ($ && !$.ua) { 599 var parser = new UAParser(); 600 $.ua = parser.getResult(); 601 $.ua.get = function () { 602 return parser.getUA(); 603 }; 604 $.ua.set = function (ua) { 605 parser.setUA(ua); 606 var result = parser.getResult(); 607 for (var prop in result) { 608 $.ua[prop] = result[prop]; 609 } 610 }; 611 } 612})(typeof window === 'object' ? window : this);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.