1/* 2 UAParser.js v0.7.18 3 Lightweight JavaScript-based User-Agent string parser 4 https://github.com/faisalman/ua-parser-js 5 6 Copyright ? 2012-2016 Faisal Salman <[email protected]> 7 Dual licensed under GPLv2 or MIT 8*/ 9var $jscomp = $jscomp || {}; 10$jscomp.scope = {}; 11$jscomp.ASSUME_ES5 = !1; 12$jscomp.ASSUME_NO_NATIVE_MAP = !1; 13$jscomp.ASSUME_NO_NATIVE_SET = !1; 14$jscomp.defineProperty = 15 $jscomp.ASSUME_ES5 || "function" == typeof Object.defineProperties 16 ? Object.defineProperty 17 : function(a, d, b) { 18 a != Array.prototype && a != Object.prototype && (a[d] = b.value); 19 }; 20$jscomp.getGlobal = function(a) { 21 return "undefined" != typeof window && window === a 22 ? a 23 : "undefined" != typeof global && null != global 24 ? global 25 : a; 26}; 27$jscomp.global = $jscomp.getGlobal(this); 28$jscomp.polyfill = function(a, d, b, e) { 29 if (d) { 30 b = $jscomp.global; 31 a = a.split("."); 32 for (e = 0; e < a.length - 1; e++) { 33 var c = a[e]; 34 c in b || (b[c] = {}); 35 b = b[c]; 36 } 37 a = a[a.length - 1]; 38 e = b[a]; 39 d = d(e); 40 d != e && 41 null != d && 42 $jscomp.defineProperty(b, a, { 43 configurable: !0, 44 writable: !0, 45 value: d 46 }); 47 } 48}; 49$jscomp.polyfill( 50 "Object.getOwnPropertySymbols", 51 function(a) { 52 return a 53 ? a 54 : function() { 55 return []; 56 }; 57 }, 58 "es6", 59 "es5" 60); 61$jscomp.SYMBOL_PREFIX = "jscomp_symbol_"; 62$jscomp.initSymbol = function() { 63 $jscomp.initSymbol = function() {}; 64 $jscomp.global.Symbol || ($jscomp.global.Symbol = $jscomp.Symbol); 65}; 66$jscomp.Symbol = (function() { 67 var a = 0; 68 return function(d) { 69 return $jscomp.SYMBOL_PREFIX + (d || "") + a++; 70 }; 71})(); 72$jscomp.initSymbolIterator = function() { 73 $jscomp.initSymbol(); 74 var a = $jscomp.global.Symbol.iterator; 75 a || (a = $jscomp.global.Symbol.iterator = $jscomp.global.Symbol("iterator")); 76 "function" != typeof Array.prototype[a] && 77 $jscomp.defineProperty(Array.prototype, a, { 78 configurable: !0, 79 writable: !0, 80 value: function() { 81 return $jscomp.arrayIterator(this); 82 } 83 }); 84 $jscomp.initSymbolIterator = function() {}; 85}; 86$jscomp.arrayIterator = function(a) { 87 var d = 0; 88 return $jscomp.iteratorPrototype(function() { 89 return d < a.length ? { done: !1, value: a[d++] } : { done: !0 }; 90 }); 91}; 92$jscomp.iteratorPrototype = function(a) { 93 $jscomp.initSymbolIterator(); 94 a = { next: a }; 95 a[$jscomp.global.Symbol.iterator] = function() { 96 return this; 97 }; 98 return a; 99}; 100$jscomp.iteratorFromArray = function(a, d) { 101 $jscomp.initSymbolIterator(); 102 a instanceof String && (a += ""); 103 var b = 0, 104 e = { 105 next: function() { 106 if (b < a.length) { 107 var c = b++; 108 return { value: d(c, a[c]), done: !1 }; 109 } 110 e.next = function() { 111 return { done: !0, value: void 0 }; 112 }; 113 return e.next(); 114 } 115 }; 116 e[Symbol.iterator] = function() { 117 return e; 118 }; 119 return e; 120}; 121$jscomp.polyfill( 122 "Array.prototype.keys", 123 function(a) { 124 return a 125 ? a 126 : function() { 127 return $jscomp.iteratorFromArray(this, function(a) { 128 return a; 129 }); 130 }; 131 }, 132 "es6", 133 "es3" 134); 135$jscomp.owns = function(a, d) { 136 return Object.prototype.hasOwnProperty.call(a, d); 137}; 138$jscomp.assign = 139 "function" == typeof Object.assign 140 ? Object.assign 141 : function(a, d) { 142 for (var b = 1; b < arguments.length; b++) { 143 var e = arguments[b]; 144 if (e) for (var c in e) $jscomp.owns(e, c) && (a[c] = e[c]); 145 } 146 return a; 147 }; 148$jscomp.polyfill( 149 "Object.assign", 150 function(a) { 151 return a || $jscomp.assign; 152 }, 153 "es6", 154 "es3" 155); 156(function(a) { 157 "object" === typeof exports && "undefined" !== typeof module 158 ? (module.exports = a()) 159 : "function" === typeof define && define.amd 160 ? define([], a) 161 : (("undefined" !== typeof window 162 ? window 163 : "undefined" !== typeof global 164 ? global 165 : "undefined" !== typeof self 166 ? self 167 : this 168 ).SmartBanner = a()); 169})(function() { 170 return (function() { 171 function a(d, b, e) {
172 function c(f, k) { 173 if (!b[f]) { 174 if (!d[f]) { 175 var r = "function" == typeof require && require; 176 if (!k && r) return r(f, !0); 177 if (m) return m(f, !0); 178 k = Error("Cannot find module '" + f + "'"); 179 throw ((k.code = "MODULE_NOT_FOUND"), k); 180 } 181 k = b[f] = { exports: {} }; 182 d[f][0].call( 183 k.exports, 184 function(a) { 185 return c(d[f][1][a] || a); 186 }, 187 k, 188 k.exports, 189 a, 190 d, 191 b, 192 e 193 ); 194 } 195 return b[f].exports; 196 } 197 for ( 198 var m = "function" == typeof require && require, f = 0; 199 f < e.length; 200 f++ 201 ) 202 c(e[f]); 203 return c; 204 } 205 return a; 206 })()( 207 { 208 1: [ 209 function(a, d, b) { 210 var e = a("object-assign"), 211 c = a("component-query"), 212 m = a("get-doc"), 213 f = a("cookie-cutter"), 214 n = a("ua-parser-js"), 215 k = 216 ( 217 navigator.language || 218 navigator.userLanguage || 219 navigator.browserLanguage 220 ).slice(-2) || "us", 221 r = m && m.documentElement, 222 g = { 223 ios: { 224 appMeta: "apple-itunes-app", 225 iconRels: ["apple-touch-icon-precomposed", "apple-touch-icon"], 226 getStoreLink: function() { 227 return ( 228 "https://itunes.apple.com/" + 229 this.options.appStoreLanguage + 230 "/app/id" + 231 this.appId + 232 "?mt=8" 233 ); 234 } 235 }, 236 android: { 237 appMeta: "google-play-app", 238 iconRels: [ 239 "android-touch-icon", 240 "apple-touch-icon-precomposed", 241 "apple-touch-icon" 242 ], 243 getStoreLink: function() { 244 return ( 245 "http://play.google.com/store/apps/details?id=" + this.appId 246 ); 247 } 248 }, 249 windows: { 250 appMeta: "msApplication-ID", 251 iconRels: [ 252 "windows-touch-icon", 253 "apple-touch-icon-precomposed", 254 "apple-touch-icon" 255 ], 256 getStoreLink: function() { 257 return "http://www.windowsphone.com/s?appid=" + this.appId; 258 } 259 } 260 }; 261 a = function(a) { 262 var c = n(navigator.userAgent); 263 this.options = e( 264 {}, 265 { 266 daysHidden: 15, 267 daysReminder: 90, 268 appStoreLanguage: k, 269 button: "OPEN", 270 store: { 271 ios: "On the App Store", 272 android: "In Google Play", 273 windows: "In the Windows Store" 274 }, 275 price: { ios: "FREE", android: "FREE", windows: "FREE" }, 276 theme: "", 277 icon: "", 278 force: "" 279 }, 280 a || {} 281 ); 282 this.options.force 283 ? (this.type = this.options.force) 284 : "Windows Phone" === c.os.name || "Windows Mobile" === c.os.name 285 ? (this.type = "windows") 286 : "iOS" === c.os.name 287 ? (this.type = "ios")
vendor: 6,327 bytes, lines 288-459
288 : "Android" === c.os.name && (this.type = "android"); 289 if (this.type && this.options.store[this.type]) { 290 this.appMeta = g[this.type].appMeta; 291 this.parseAppId(); 292 a = 293 "ios" === this.type && 294 "Mobile Safari" === c.browser.name && 295 6 <= parseInt(c.os.version, 10); 296 var l = navigator.standalone, 297 b = f.get(this.appId + "-smartbanner-closed"), 298 d = f.get(this.appId + "-smartbanner-installed"); 299 a || 300 l || 301 b || 302 d || 303 (e(this, g[this.type]), 304 !this.appId && 305 "IOS" === c.os.name && 306 "Safari" === c.browser.name) || 307 (this.create(), this.show()); 308 } 309 }; 310 a.prototype = { 311 constructor: a, 312 create: function() { 313 var a = this.getStoreLink(), 314 e = 315 this.options.price[this.type] + 316 " - " + 317 this.options.store[this.type]; 318 if (this.options.icon) var f = this.options.icon; 319 else 320 for (var b = 0; b < this.iconRels.length; b++) { 321 var d = c('link[rel="' + this.iconRels[b] + '"]'); 322 if (d) { 323 f = d.getAttribute("href"); 324 break; 325 } 326 } 327 var t = m.createElement("div"); 328 t.className = 329 "smartbanner smartbanner-" + (this.options.theme || this.type); 330 t.innerHTML = 331 '<div class="smartbanner-container"><a href="javascript:void(0);" class="smartbanner-close">×</a><span class="smartbanner-icon" style="background-image: url(' + 332 f + 333 ')"></span><div class="smartbanner-info"><div class="smartbanner-title">' + 334 this.options.title + 335 "</div><div>" + 336 this.options.author + 337 "</div><span>" + 338 e + 339 '</span></div><a href="' + 340 a + 341 '" class="smartbanner-button"><span class="smartbanner-button-text">' + 342 this.options.button + 343 "</span></a></div>"; 344 m.body 345 ? m.body.appendChild(t) 346 : m && 347 m.addEventListener("DOMContentLoaded", function() { 348 m.body.appendChild(t); 349 }); 350 c(".smartbanner-button", t).addEventListener( 351 "click", 352 this.install.bind(this), 353 !1 354 ); 355 c(".smartbanner-close", t).addEventListener( 356 "click", 357 this.close.bind(this), 358 !1 359 ); 360 }, 361 hide: function() { 362 r.classList.remove("smartbanner-show"); 363 if ("function" === typeof this.options.close) 364 return this.options.close(); 365 }, 366 show: function() { 367 r.classList.add("smartbanner-show"); 368 if ("function" === typeof this.options.show) 369 return this.options.show(); 370 }, 371 close: function() { 372 this.hide(); 373 f.set(this.appId + "-smartbanner-closed", "true", { 374 path: "/", 375 expires: new Date( 376 Number(new Date()) + 864e5 * this.options.daysHidden 377 ) 378 }); 379 if ("function" === typeof this.options.close) 380 return this.options.close(); 381 }, 382 install: function() { 383 this.hide(); 384 f.set(this.appId + "-smartbanner-installed", "true", { 385 path: "/", 386 expires: new Date( 387 Number(new Date()) + 864e5 * this.options.daysReminder 388 ) 389 }); 390 if ("function" === typeof this.options.close) 391 return this.options.close(); 392 }, 393 parseAppId: function() { 394 var a = c('meta[name="' + this.appMeta + '"]'); 395 if (a) 396 return (this.appId = 397 "windows" === this.type 398 ? a.getAttribute("content") 399 : /app-id=([^\s,]+)/.exec(a.getAttribute("content"))[1]); 400 } 401 }; 402 d.exports = a; 403 }, 404 { 405 "component-query": 2, 406 "cookie-cutter": 3, 407 "get-doc": 4, 408 "object-assign": 6, 409 "ua-parser-js": 7 410 } 411 ], 412 2: [ 413 function(a, d, b) { 414 function e(a, e) { 415 return e.querySelector(a); 416 } 417 b = d.exports = function(a, b) { 418 b = b || document; 419 return e(a, b); 420 }; 421 b.all = function(a, e) { 422 e = e || document; 423 return e.querySelectorAll(a); 424 }; 425 b.engine = function(a) { 426 if (!a.one) throw Error(".one callback required"); 427 if (!a.all) throw Error(".all callback required"); 428 e = a.one; 429 b.all = a.all; 430 return b; 431 }; 432 }, 433 {} 434 ], 435 3: [ 436 function(a, d, b) { 437 b = d.exports = function(a) { 438 a || (a = {}); 439 "string" === typeof a && (a = { cookie: a }); 440 void 0 === a.cookie && (a.cookie = ""); 441 return { 442 get: function(c) { 443 for (var b = a.cookie.split(/;\s*/), f = 0; f < b.length; f++) { 444 var e = b[f].split("="); 445 if (unescape(e[0]) === c) return unescape(e[1]); 446 } 447 }, 448 set: function(c, b, f) { 449 f || (f = {}); 450 c = escape(c) + "=" + escape(b); 451 f.expires && (c += "; expires=" + f.expires); 452 f.path && (c += "; path=" + escape(f.path)); 453 f.domain && (c += "; domain=" + escape(f.domain)); 454 f.secure && (c += "; secure"); 455 return (a.cookie = c); 456 } 457 }; 458 }; 459 "undefined" !== typeof document &&
460 ((a = b(document)), (b.get = a.get), (b.set = a.set)); 461 }, 462 {} 463 ], 464 4: [ 465 function(a, d, b) { 466 a = a("has-dom"); 467 d.exports = a() ? document : null; 468 }, 469 { "has-dom": 5 } 470 ], 471 5: [ 472 function(a, d, b) { 473 d.exports = function() { 474 return ( 475 "undefined" !== typeof window && 476 "undefined" !== typeof document && 477 "function" === typeof document.createElement 478 ); 479 }; 480 }, 481 {} 482 ], 483 6: [ 484 function(a, d, b) { 485 var e = Object.getOwnPropertySymbols, 486 c = Object.prototype.hasOwnProperty, 487 m = Object.prototype.propertyIsEnumerable; 488 d.exports = (function() { 489 try { 490 if (!Object.assign) return !1; 491 var a = new String("abc"); 492 a[5] = "de"; 493 if ("5" === Object.getOwnPropertyNames(a)[0]) return !1; 494 var c = {}; 495 for (a = 0; 10 > a; a++) c["_" + String.fromCharCode(a)] = a; 496 if ( 497 "0123456789" !== 498 Object.getOwnPropertyNames(c) 499 .map(function(a) { 500 return c[a]; 501 }) 502 .join("") 503 ) 504 return !1; 505 var b = {}; 506 "abcdefghijklmnopqrst".split("").forEach(function(a) { 507 b[a] = a; 508 }); 509 return "abcdefghijklmnopqrst" !== 510 Object.keys(Object.assign({}, b)).join("") 511 ? !1 512 : !0; 513 } catch (r) { 514 return !1; 515 } 516 })() 517 ? Object.assign 518 : function(a, b) { 519 if (null === a || void 0 === a) 520 throw new TypeError( 521 "Object.assign cannot be called with null or undefined" 522 ); 523 var d = Object(a); 524 for (var f, g = 1; g < arguments.length; g++) { 525 var p = Object(arguments[g]); 526 for (var n in p) c.call(p, n) && (d[n] = p[n]); 527 if (e) { 528 f = e(p); 529 for (var l = 0; l < f.length; l++) 530 m.call(p, f[l]) && (d[f[l]] = p[f[l]]); 531 } 532 } 533 return d; 534 }; 535 }, 536 {} 537 ], 538 7: [ 539 function(a, d, b) { 540 (function(a, c) { 541 var e = { 542 extend: function(a, c) { 543 var b = {}, 544 e; 545 for (e in a) 546 b[e] = 547 c[e] && 0 === c[e].length % 2 ? c[e].concat(a[e]) : a[e]; 548 return b; 549 }, 550 has: function(a, c) { 551 return "string" === typeof a 552 ? -1 !== c.toLowerCase().indexOf(a.toLowerCase()) 553 : !1; 554 }, 555 lowerize: function(a) { 556 return a.toLowerCase(); 557 }, 558 major: function(a) { 559 return "string" === typeof a 560 ? a.replace(/[^\d\.]/g, "").split(".")[0] 561 : c; 562 }, 563 trim: function(a) { 564 return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); 565 } 566 }, 567 f = function(a, b) { 568 for (var e = 0, d, f, l, h, g, q; e < b.length && !g; ) { 569 var k = b[e], 570 m = b[e + 1]; 571 for (d = f = 0; d < k.length && !g; ) 572 if ((g = k[d++].exec(a))) 573 for (l = 0; l < m.length; l++) 574 (q = g[++f]), 575 (h = m[l]), 576 "object" === typeof h && 0 < h.length 577 ? 2 == h.length 578 ? (this[h[0]] = 579 "function" == typeof h[1] 580 ? h[1].call(this, q) 581 : h[1]) 582 : 3 == h.length 583 ? (this[h[0]] = 584 "function" !== typeof h[1] || 585 (h[1].exec && h[1].test) 586 ? q 587 ? q.replace(h[1], h[2]) 588 : c 589 : q 590 ? h[1].call(this, q, h[2]) 591 : c) 592 : 4 == h.length && 593 (this[h[0]] = q 594 ? h[3].call(this, q.replace(h[1], h[2])) 595 : c) 596 : (this[h] = q ? q : c); 597 e += 2; 598 } 599 }, 600 n = function(a, b) { 601 for (var d in b) 602 if ("object" === typeof b[d] && 0 < b[d].length) 603 for (var f = 0; f < b[d].length; f++) { 604 if (e.has(b[d][f], a)) return "?" === d ? c : d; 605 } 606 else if (e.has(b[d], a)) return "?" === d ? c : d; 607 return a; 608 }, 609 k = { 610 ME: "4.90", 611 "NT 3.11": "NT3.51", 612 "NT 4.0": "NT4.0", 613 2e3: "NT 5.0", 614 XP: ["NT 5.1", "NT 5.2"], 615 Vista: "NT 6.0", 616 7: "NT 6.1", 617 8: "NT 6.2", 618 "8.1": "NT 6.3", 619 10: ["NT 6.4", "NT 10.0"], 620 RT: "ARM" 621 }, 622 r = { 623 browser: [ 624 [ 625 /(opera\smini)\/([\w\.-]+)/i, 626 /(opera\s[mobiletab]+).+version\/([\w\.-]+)/i, 627 /(opera).+version\/([\w\.]+)/i, 628 /(opera)[\/\s]+([\w\.]+)/i 629 ], 630 ["name", "version"], 631 [/(opios)[\/\s]+([\w\.]+)/i], 632 [["name", "Opera Mini"], "version"], 633 [/\s(opr)\/([\w\.]+)/i], 634 [["name", "Opera"], "version"], 635 [ 636 /(kindle)\/([\w\.]+)/i, 637 /(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]*)/i, 638 /(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i, 639 /(?:ms|\()(ie)\s([\w\.]+)/i, 640 /(rekonq)\/([\w\.]*)/i, 641 /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\/([\w\.-]+)/i 642 ], 643 ["name", "version"], 644 [/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i], 645 [["name", "IE"], "version"], 646 [/(edge|edgios|edgea)\/((\d+)?[\w\.]+)/i], 647 [["name", "Edge"], "version"], 648 [/(yabrowser)\/([\w\.]+)/i], 649 [["name", "Yandex"], "version"], 650 [/(puffin)\/([\w\.]+)/i], 651 [["name", "Puffin"], "version"],
vendor: 18,523 bytes, lines 652-1018
652 [/((?:[\s\/])uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i], 653 [["name", "UCBrowser"], "version"], 654 [/(comodo_dragon)\/([\w\.]+)/i], 655 [["name", /_/g, " "], "version"], 656 [/(micromessenger)\/([\w\.]+)/i], 657 [["name", "WeChat"], "version"], 658 [/(qqbrowserlite)\/([\w\.]+)/i], 659 ["name", "version"], 660 [/(QQ)\/([\d\.]+)/i], 661 ["name", "version"], 662 [/m?(qqbrowser)[\/\s]?([\w\.]+)/i], 663 ["name", "version"], 664 [/(BIDUBrowser)[\/\s]?([\w\.]+)/i], 665 ["name", "version"], 666 [/(2345Explorer)[\/\s]?([\w\.]+)/i], 667 ["name", "version"], 668 [/(MetaSr)[\/\s]?([\w\.]+)/i], 669 ["name"], 670 [/(LBBROWSER)/i], 671 ["name"], 672 [/xiaomi\/miuibrowser\/([\w\.]+)/i], 673 ["version", ["name", "MIUI Browser"]], 674 [/;fbav\/([\w\.]+);/i], 675 ["version", ["name", "Facebook"]], 676 [/headlesschrome(?:\/([\w\.]+)|\s)/i], 677 ["version", ["name", "Chrome Headless"]], 678 [/\swv\).+(chrome)\/([\w\.]+)/i], 679 [["name", /(.+)/, "$1 WebView"], "version"], 680 [/((?:oculus|samsung)browser)\/([\w\.]+)/i], 681 [["name", /(.+(?:g|us))(.+)/, "$1 $2"], "version"], 682 [ 683 /android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)*/i 684 ], 685 ["version", ["name", "Android Browser"]], 686 [ 687 /(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i 688 ], 689 ["name", "version"], 690 [/(dolfin)\/([\w\.]+)/i], 691 [["name", "Dolphin"], "version"], 692 [/((?:android.+)crmo|crios)\/([\w\.]+)/i], 693 [["name", "Chrome"], "version"], 694 [/(coast)\/([\w\.]+)/i], 695 [["name", "Opera Coast"], "version"], 696 [/fxios\/([\w\.-]+)/i], 697 ["version", ["name", "Firefox"]], 698 [/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i], 699 ["version", ["name", "Mobile Safari"]], 700 [/version\/([\w\.]+).+?(mobile\s?safari|safari)/i], 701 ["version", "name"], 702 [ 703 /webkit.+?(gsa)\/([\w\.]+).+?(mobile\s?safari|safari)(\/[\w\.]+)/i 704 ], 705 [["name", "GSA"], "version"], 706 [/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i], 707 [ 708 "name", 709 [ 710 "version", 711 n, 712 { 713 "1.0": "/8", 714 "1.2": "/1", 715 "1.3": "/3", 716 "2.0": "/412", 717 "2.0.2": "/416", 718 "2.0.3": "/417", 719 "2.0.4": "/419", 720 "?": "/" 721 } 722 ] 723 ], 724 [/(konqueror)\/([\w\.]+)/i, /(webkit|khtml)\/([\w\.]+)/i], 725 ["name", "version"], 726 [/(navigator|netscape)\/([\w\.-]+)/i], 727 [["name", "Netscape"], "version"], 728 [ 729 /(swiftfox)/i, 730 /(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i, 731 /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([\w\.-]+)$/i, 732 /(mozilla)\/([\w\.]+).+rv:.+gecko\/\d+/i, 733 /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i, 734 /(links)\s\(([\w\.]+)/i, 735 /(gobrowser)\/?([\w\.]*)/i, 736 /(ice\s?browser)\/v?([\w\._]+)/i, 737 /(mosaic)[\/\s]([\w\.]+)/i 738 ], 739 ["name", "version"] 740 ], 741 cpu: [ 742 [/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i], 743 [["architecture", "amd64"]], 744 [/(ia32(?=;))/i], 745 [["architecture", e.lowerize]], 746 [/((?:i[346]|x)86)[;\)]/i], 747 [["architecture", "ia32"]], 748 [/windows\s(ce|mobile);\sppc;/i], 749 [["architecture", "arm"]], 750 [/((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i], 751 [["architecture", /ower/, "", e.lowerize]], 752 [/(sun4\w)[;\)]/i], 753 [["architecture", "sparc"]], 754 [ 755 /((?:avr32|ia64(?=;))|68k(?=\))|arm(?:64|(?=v\d+;))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i 756 ], 757 [["architecture", e.lowerize]] 758 ], 759 device: [ 760 [/\((ipad|playbook);[\w\s\);-]+(rim|apple)/i], 761 ["model", "vendor", ["type", "tablet"]], 762 [/applecoremedia\/[\w\.]+ \((ipad)/], 763 ["model", ["vendor", "Apple"], ["type", "tablet"]], 764 [/(apple\s{0,1}tv)/i], 765 [["model", "Apple TV"], ["vendor", "Apple"]], 766 [ 767 /(archos)\s(gamepad2?)/i, 768 /(hp).+(touchpad)/i, 769 /(hp).+(tablet)/i, 770 /(kindle)\/([\w\.]+)/i, 771 /\s(nook)[\w\s]+build\/(\w+)/i, 772 /(dell)\s(strea[kpr\s\d]*[\dko])/i 773 ], 774 ["vendor", "model", ["type", "tablet"]], 775 [/(kf[A-z]+)\sbuild\/.+silk\//i], 776 ["model", ["vendor", "Amazon"], ["type", "tablet"]], 777 [/(sd|kf)[0349hijorstuw]+\sbuild\/.+silk\//i], 778 [ 779 ["model", n, { "Fire Phone": ["SD", "KF"] }], 780 ["vendor", "Amazon"], 781 ["type", "mobile"] 782 ], 783 [/\((ip[honed|\s\w*]+);.+(apple)/i], 784 ["model", "vendor", ["type", "mobile"]], 785 [/\((ip[honed|\s\w*]+);/i], 786 ["model", ["vendor", "Apple"], ["type", "mobile"]], 787 [ 788 /(blackberry)[\s-]?(\w+)/i, 789 /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]*)/i, 790 /(hp)\s([\w\s]+\w)/i, 791 /(asus)-?(\w+)/i 792 ], 793 ["vendor", "model", ["type", "mobile"]], 794 [/\(bb10;\s(\w+)/i], 795 ["model", ["vendor", "BlackBerry"], ["type", "mobile"]], 796 [ 797 /android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7|padfone)/i 798 ], 799 ["model", ["vendor", "Asus"], ["type", "tablet"]], 800 [ 801 /(sony)\s(tablet\s[ps])\sbuild\//i, 802 /(sony)?(?:sgp.+)\sbuild\//i 803 ], 804 [ 805 ["vendor", "Sony"], 806 ["model", "Xperia Tablet"], 807 ["type", "tablet"] 808 ], 809 [/android.+\s([c-g]\d{4}|so[-l]\w+)\sbuild\//i], 810 ["model", ["vendor", "Sony"], ["type", "mobile"]], 811 [/\s(ouya)\s/i, /(nintendo)\s([wids3u]+)/i], 812 ["vendor", "model", ["type", "console"]], 813 [/android.+;\s(shield)\sbuild/i], 814 ["model", ["vendor", "Nvidia"], ["type", "console"]], 815 [/(playstation\s[34portablevi]+)/i], 816 ["model", ["vendor", "Sony"], ["type", "console"]], 817 [/(sprint\s(\w+))/i], 818 [ 819 ["vendor", n, { HTC: "APA", Sprint: "Sprint" }], 820 ["model", n, { "Evo Shift 4G": "7373KT" }], 821 ["type", "mobile"] 822 ], 823 [/(lenovo)\s?(S(?:5000|6000)+(?:[-][\w+]))/i], 824 ["vendor", "model", ["type", "tablet"]], 825 [ 826 /(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i, 827 /(zte)-(\w*)/i, 828 /(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]*)/i 829 ], 830 ["vendor", ["model", /_/g, " "], ["type", "mobile"]], 831 [/(nexus\s9)/i], 832 ["model", ["vendor", "HTC"], ["type", "tablet"]], 833 [/d\/huawei([\w\s-]+)[;\)]/i, /(nexus\s6p)/i], 834 ["model", ["vendor", "Huawei"], ["type", "mobile"]], 835 [/(microsoft);\s(lumia[\s\w]+)/i], 836 ["vendor", "model", ["type", "mobile"]], 837 [/[\s\(;](xbox(?:\sone)?)[\s\);]/i], 838 ["model", ["vendor", "Microsoft"], ["type", "console"]], 839 [/(kin\.[onetw]{3})/i], 840 [ 841 ["model", /\./g, " "], 842 ["vendor", "Microsoft"], 843 ["type", "mobile"] 844 ], 845 [ 846 /\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?:?(\s4g)?)[\w\s]+build\//i, 847 /mot[\s-]?(\w*)/i, 848 /(XT\d{3,4}) build\//i, 849 /(nexus\s6)/i 850 ], 851 ["model", ["vendor", "Motorola"], ["type", "mobile"]], 852 [/android.+\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i], 853 ["model", ["vendor", "Motorola"], ["type", "tablet"]], 854 [/hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i], 855 [["vendor", e.trim], ["model", e.trim], ["type", "smarttv"]], 856 [/hbbtv.+maple;(\d+)/i], 857 [ 858 ["model", /^/, "SmartTV"], 859 ["vendor", "Samsung"], 860 ["type", "smarttv"] 861 ], 862 [/\(dtv[\);].+(aquos)/i], 863 ["model", ["vendor", "Sharp"], ["type", "smarttv"]], 864 [ 865 /android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n\d+|sgh-t8[56]9|nexus 10))/i, 866 /((SM-T\w+))/i 867 ], 868 [["vendor", "Samsung"], "model", ["type", "tablet"]], 869 [/smart-tv.+(samsung)/i], 870 ["vendor", ["type", "smarttv"], "model"], 871 [ 872 /((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-\w[\w\d]+))/i, 873 /(sam[sung]*)[\s-]*(\w+-?[\w-]*)/i, 874 /sec-((sgh\w+))/i 875 ], 876 [["vendor", "Samsung"], "model", ["type", "mobile"]], 877 [/sie-(\w*)/i], 878 ["model", ["vendor", "Siemens"], ["type", "mobile"]], 879 [ 880 /(maemo|nokia).*(n900|lumia\s\d+)/i, 881 /(nokia)[\s_-]?([\w-]*)/i 882 ], 883 [["vendor", "Nokia"], "model", ["type", "mobile"]], 884 [/android\s3\.[\s\w;-]{10}(a\d{3})/i], 885 ["model", ["vendor", "Acer"], ["type", "tablet"]], 886 [/android.+([vl]k\-?\d{3})\s+build/i], 887 ["model", ["vendor", "LG"], ["type", "tablet"]], 888 [/android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i], 889 [["vendor", "LG"], "model", ["type", "tablet"]], 890 [/(lg) netcast\.tv/i], 891 ["vendor", "model", ["type", "smarttv"]], 892 [ 893 /(nexus\s[45])/i, 894 /lg[e;\s\/-]+(\w*)/i, 895 /android.+lg(\-?[\d\w]+)\s+build/i 896 ], 897 ["model", ["vendor", "LG"], ["type", "mobile"]], 898 [/android.+(ideatab[a-z0-9\-\s]+)/i], 899 ["model", ["vendor", "Lenovo"], ["type", "tablet"]], 900 [/linux;.+((jolla));/i], 901 ["vendor", "model", ["type", "mobile"]], 902 [/((pebble))app\/[\d\.]+\s/i], 903 ["vendor", "model", ["type", "wearable"]], 904 [/android.+;\s(oppo)\s?([\w\s]+)\sbuild/i], 905 ["vendor", "model", ["type", "mobile"]], 906 [/crkey/i], 907 [["model", "Chromecast"], ["vendor", "Google"]], 908 [/android.+;\s(glass)\s\d/i], 909 ["model", ["vendor", "Google"], ["type", "wearable"]], 910 [/android.+;\s(pixel c)\s/i], 911 ["model", ["vendor", "Google"], ["type", "tablet"]], 912 [/android.+;\s(pixel xl|pixel)\s/i], 913 ["model", ["vendor", "Google"], ["type", "mobile"]], 914 [ 915 /android.+;\s(\w+)\s+build\/hm\1/i, 916 /android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i, 917 /android.+(mi[\s\-_]*(?:one|one[\s_]plus|note lte)?[\s_]*(?:\d?\w?)[\s_]*(?:plus)?)\s+build/i, 918 /android.+(redmi[\s\-_]*(?:note)?(?:[\s_]*[\w\s]+))\s+build/i 919 ], 920 [ 921 ["model", /_/g, " "], 922 ["vendor", "Xiaomi"], 923 ["type", "mobile"] 924 ], 925 [/android.+(mi[\s\-_]*(?:pad)(?:[\s_]*[\w\s]+))\s+build/i], 926 [ 927 ["model", /_/g, " "], 928 ["vendor", "Xiaomi"], 929 ["type", "tablet"] 930 ], 931 [/android.+;\s(m[1-5]\snote)\sbuild/i], 932 ["model", ["vendor", "Meizu"], ["type", "tablet"]], 933 [ 934 /android.+a000(1)\s+build/i, 935 /android.+oneplus\s(a\d{4})\s+build/i 936 ], 937 ["model", ["vendor", "OnePlus"], ["type", "mobile"]], 938 [/android.+[;\/]\s*(RCT[\d\w]+)\s+build/i], 939 ["model", ["vendor", "RCA"], ["type", "tablet"]], 940 [/android.+[;\/\s]+(Venue[\d\s]{2,7})\s+build/i], 941 ["model", ["vendor", "Dell"], ["type", "tablet"]], 942 [/android.+[;\/]\s*(Q[T|M][\d\w]+)\s+build/i], 943 ["model", ["vendor", "Verizon"], ["type", "tablet"]], 944 [ 945 /android.+[;\/]\s+(Barnes[&\s]+Noble\s+|BN[RT])(V?.*)\s+build/i 946 ], 947 [["vendor", "Barnes & Noble"], "model", ["type", "tablet"]], 948 [/android.+[;\/]\s+(TM\d{3}.*\b)\s+build/i], 949 ["model", ["vendor", "NuVision"], ["type", "tablet"]], 950 [/android.+;\s(k88)\sbuild/i], 951 ["model", ["vendor", "ZTE"], ["type", "tablet"]], 952 [/android.+[;\/]\s*(gen\d{3})\s+build.*49h/i], 953 ["model", ["vendor", "Swiss"], ["type", "mobile"]], 954 [/android.+[;\/]\s*(zur\d{3})\s+build/i], 955 ["model", ["vendor", "Swiss"], ["type", "tablet"]], 956 [/android.+[;\/]\s*((Zeki)?TB.*\b)\s+build/i], 957 ["model", ["vendor", "Zeki"], ["type", "tablet"]], 958 [ 959 /(android).+[;\/]\s+([YR]\d{2})\s+build/i, 960 /android.+[;\/]\s+(Dragon[\-\s]+Touch\s+|DT)(\w{5})\sbuild/i 961 ], 962 [["vendor", "Dragon Touch"], "model", ["type", "tablet"]], 963 [/android.+[;\/]\s*(NS-?\w{0,9})\sbuild/i], 964 ["model", ["vendor", "Insignia"], ["type", "tablet"]], 965 [/android.+[;\/]\s*((NX|Next)-?\w{0,9})\s+build/i], 966 ["model", ["vendor", "NextBook"], ["type", "tablet"]], 967 [ 968 /android.+[;\/]\s*(Xtreme_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\s+build/i 969 ], 970 [["vendor", "Voice"], "model", ["type", "mobile"]], 971 [/android.+[;\/]\s*(LVTEL\-)?(V1[12])\s+build/i], 972 [["vendor", "LvTel"], "model", ["type", "mobile"]], 973 [/android.+[;\/]\s*(V(100MD|700NA|7011|917G).*\b)\s+build/i], 974 ["model", ["vendor", "Envizen"], ["type", "tablet"]], 975 [/android.+[;\/]\s*(Le[\s\-]+Pan)[\s\-]+(\w{1,9})\s+build/i], 976 ["vendor", "model", ["type", "tablet"]], 977 [/android.+[;\/]\s*(Trio[\s\-]*.*)\s+build/i], 978 ["model", ["vendor", "MachSpeed"], ["type", "tablet"]], 979 [/android.+[;\/]\s*(Trinity)[\-\s]*(T\d{3})\s+build/i], 980 ["vendor", "model", ["type", "tablet"]], 981 [/android.+[;\/]\s*TU_(1491)\s+build/i], 982 ["model", ["vendor", "Rotor"], ["type", "tablet"]], 983 [/android.+(KS(.+))\s+build/i], 984 ["model", ["vendor", "Amazon"], ["type", "tablet"]], 985 [/android.+(Gigaset)[\s\-]+(Q\w{1,9})\s+build/i], 986 ["vendor", "model", ["type", "tablet"]], 987 [/\s(tablet|tab)[;\/]/i, /\s(mobile)(?:[;\/]|\ssafari)/i], 988 [["type", e.lowerize], "vendor", "model"], 989 [/(android[\w\.\s\-]{0,9});.+build/i], 990 ["model", ["vendor", "Generic"]] 991 ], 992 engine: [ 993 [/windows.+\sedge\/([\w\.]+)/i], 994 ["version", ["name", "EdgeHTML"]], 995 [ 996 /(presto)\/([\w\.]+)/i, 997 /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i, 998 /(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i, 999 /(icab)[\/\s]([23]\.[\d\.]+)/i 1000 ], 1001 ["name", "version"], 1002 [/rv:([\w\.]{1,9}).+(gecko)/i], 1003 ["version", "name"] 1004 ], 1005 os: [ 1006 [/microsoft\s(windows)\s(vista|xp)/i], 1007 ["name", "version"], 1008 [ 1009 /(windows)\snt\s6\.2;\s(arm)/i, 1010 /(windows\sphone(?:\sos)*)[\s\/]?([\d\.\s\w]*)/i, 1011 /(windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i 1012 ], 1013 ["name", ["version", n, k]], 1014 [/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i], 1015 [["name", "Windows"], ["version", n, k]], 1016 [/\((bb)(10);/i], 1017 [["name", "BlackBerry"], "version"], 1018 [
1019 /(blackberry)\w*\/?([\w\.]*)/i, 1020 /(tizen)[\/\s]([\w\.]+)/i, 1021 /(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]*)/i, 1022 /linux;.+(sailfish);/i 1023 ], 1024 ["name", "version"], 1025 [/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]*)/i], 1026 [["name", "Symbian"], "version"], 1027 [/\((series40);/i], 1028 ["name"], 1029 [/mozilla.+\(mobile;.+gecko.+firefox/i], 1030 [["name", "Firefox OS"], "version"], 1031 [ 1032 /(nintendo|playstation)\s([wids34portablevu]+)/i, 1033 /(mint)[\/\s\(]?(\w*)/i, 1034 /(mageia|vectorlinux)[;\s]/i, 1035 /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?(?!chrom)([\w\.-]*)/i, 1036 /(hurd|linux)\s?([\w\.]*)/i, 1037 /(gnu)\s?([\w\.]*)/i 1038 ], 1039 ["name", "version"], 1040 [/(cros)\s[\w]+\s([\w\.]+\w)/i], 1041 [["name", "Chromium OS"], "version"], 1042 [/(sunos)\s?([\w\.\d]*)/i], 1043 [["name", "Solaris"], "version"], 1044 [/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]*)/i], 1045 ["name", "version"], 1046 [/(haiku)\s(\w+)/i], 1047 ["name", "version"], 1048 [ 1049 /cfnetwork\/.+darwin/i, 1050 /ip[honead]{2,4}(?:.*os\s([\w]+)\slike\smac|;\sopera)/i 1051 ], 1052 [["version", /_/g, "."], ["name", "iOS"]], 1053 [ 1054 /(mac\sos\sx)\s?([\w\s\.]*)/i, 1055 /(macintosh|mac(?=_powerpc)\s)/i 1056 ], 1057 [["name", "Mac OS"], ["version", /_/g, "."]], 1058 [ 1059 /((?:open)?solaris)[\/\s-]?([\w\.]*)/i, 1060 /(aix)\s((\d)(?=\.|\)|\s)[\w\.])*/i, 1061 /(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i, 1062 /(unix)\s?([\w\.]*)/i 1063 ], 1064 ["name", "version"] 1065 ] 1066 }, 1067 g = function(b, d) { 1068 "object" === typeof b && ((d = b), (b = c)); 1069 if (!(this instanceof g)) return new g(b, d).getResult(); 1070 var l = 1071 b || 1072 (a && a.navigator && a.navigator.userAgent 1073 ? a.navigator.userAgent 1074 : ""), 1075 k = d ? e.extend(r, d) : r; 1076 this.getBrowser = function() { 1077 var a = { name: c, version: c }; 1078 f.call(a, l, k.browser); 1079 a.major = e.major(a.version); 1080 return a; 1081 }; 1082 this.getCPU = function() { 1083 var a = { architecture: c }; 1084 f.call(a, l, k.cpu); 1085 return a; 1086 }; 1087 this.getDevice = function() { 1088 var a = { vendor: c, model: c, type: c }; 1089 f.call(a, l, k.device); 1090 return a; 1091 }; 1092 this.getEngine = function() { 1093 var a = { name: c, version: c }; 1094 f.call(a, l, k.engine); 1095 return a; 1096 }; 1097 this.getOS = function() { 1098 var a = { name: c, version: c }; 1099 f.call(a, l, k.os); 1100 return a; 1101 }; 1102 this.getResult = function() { 1103 return { 1104 ua: this.getUA(), 1105 browser: this.getBrowser(), 1106 engine: this.getEngine(), 1107 os: this.getOS(), 1108 device: this.getDevice(), 1109 cpu: this.getCPU() 1110 }; 1111 }; 1112 this.getUA = function() { 1113 return l; 1114 }; 1115 this.setUA = function(a) { 1116 l = a; 1117 return this; 1118 }; 1119 return this; 1120 }; 1121 g.VERSION = "0.7.18"; 1122 g.BROWSER = { NAME: "name", MAJOR: "major", VERSION: "version" }; 1123 g.CPU = { ARCHITECTURE: "architecture" }; 1124 g.DEVICE = { 1125 MODEL: "model", 1126 VENDOR: "vendor", 1127 TYPE: "type", 1128 CONSOLE: "console", 1129 MOBILE: "mobile", 1130 SMARTTV: "smarttv", 1131 TABLET: "tablet", 1132 WEARABLE: "wearable", 1133 EMBEDDED: "embedded" 1134 };
1135 g.ENGINE = { NAME: "name", VERSION: "version" }; 1136 g.OS = { NAME: "name", VERSION: "version" }; 1137 "undefined" !== typeof b 1138 ? ("undefined" !== typeof d && d.exports && (b = d.exports = g), 1139 (b.UAParser = g)) 1140 : a && (a.UAParser = g); 1141 var p = a && (a.jQuery || a.Zepto); 1142 if ("undefined" !== typeof p) { 1143 var u = new g(); 1144 p.ua = u.getResult(); 1145 p.ua.get = function() { 1146 return u.getUA(); 1147 }; 1148 p.ua.set = function(a) { 1149 u.setUA(a); 1150 a = u.getResult(); 1151 for (var b in a) p.ua[b] = a[b]; 1152 }; 1153 } 1154 })("object" === typeof window ? window : this); 1155 }, 1156 {} 1157 ] 1158 }, 1159 {}, 1160 [1] 1161 )(1); 1162});
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.