PageSourceSearch

https://www.kwxx.com/wp-content/plugins/wpb-app-manager/public/js/smart-app-banner.js?ver=0.7.18

js kwxx.com collected 2026-09-28 12:12:44 UTC 45,561 bytes, 1,162 lines download raw bytes

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">&times;</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.