{"version":3,"file":"platform-CGq7LxER.js","names":[],"sources":["../../node_modules/.pnpm/ua-parser-js@2.0.10/node_modules/ua-parser-js/src/main/ua-parser.mjs","../../src/app/utils/platform.ts"],"sourcesContent":["// Generated ESM version of ua-parser-js\n// DO NOT EDIT THIS FILE!\n// Source: /src/main/ua-parser.js\n\n/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v2.0.10\n   Copyright © 2012-2026 Faisal Salman <f@faisalman.com>\n   AGPLv3 License *//*\n   Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n   Supports browser & node.js environment. \n   Demo   : https://uaparser.dev\n   Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n/* jshint esversion: 6 */ \n/* globals window */\n\n\n    \n    //////////////\n    // Constants\n    /////////////\n\n    var LIBVERSION  = '2.0.10',\n        UA_MAX_LENGTH = 500,\n        USER_AGENT  = 'user-agent',\n        EMPTY       = '',\n        UNKNOWN     = '?',\n        TYPEOF = {\n            FUNCTION    : 'function',\n            OBJECT      : 'object',\n            STRING      : 'string',\n            UNDEFINED   : 'undefined'\n        },\n\n        // properties\n        BROWSER     = 'browser',\n        CPU         = 'cpu',\n        DEVICE      = 'device',\n        ENGINE      = 'engine',\n        OS          = 'os',\n        RESULT      = 'result',\n\n        NAME        = 'name',\n        TYPE        = 'type',\n        VENDOR      = 'vendor',\n        VERSION     = 'version',\n        ARCHITECTURE= 'architecture',\n        MAJOR       = 'major',\n        MODEL       = 'model',\n\n        // device types\n        CONSOLE     = 'console',\n        MOBILE      = 'mobile',\n        TABLET      = 'tablet',\n        SMARTTV     = 'smarttv',\n        WEARABLE    = 'wearable',\n        XR          = 'xr',\n        EMBEDDED    = 'embedded',\n\n        // browser types\n        FETCHER     = 'fetcher',\n        INAPP       = 'inapp',\n\n        // client hints\n        BRANDS      = 'brands',\n        FORMFACTORS = 'formFactors',\n        FULLVERLIST = 'fullVersionList',\n        PLATFORM    = 'platform',\n        PLATFORMVER = 'platformVersion',\n        BITNESS     = 'bitness',\n        CH          = 'sec-ch-ua',\n        CH_FULL_VER_LIST= CH + '-full-version-list',\n        CH_ARCH         = CH + '-arch',\n        CH_BITNESS      = CH + '-' + BITNESS,\n        CH_FORM_FACTORS = CH + '-form-factors',\n        CH_MOBILE       = CH + '-' + MOBILE,\n        CH_MODEL        = CH + '-' + MODEL,\n        CH_PLATFORM     = CH + '-' + PLATFORM,\n        CH_PLATFORM_VER = CH_PLATFORM + '-version',\n        CH_ALL_VALUES   = [BRANDS, FULLVERLIST, MOBILE, MODEL, PLATFORM, PLATFORMVER, ARCHITECTURE, FORMFACTORS, BITNESS],\n\n        // device vendors\n        AMAZON      = 'Amazon',\n        APPLE       = 'Apple',\n        ASUS        = 'ASUS',\n        BLACKBERRY  = 'BlackBerry',\n        GOOGLE      = 'Google',\n        HUAWEI      = 'Huawei',\n        LENOVO      = 'Lenovo',\n        HONOR       = 'Honor',\n        LG          = 'LG',\n        MICROSOFT   = 'Microsoft',\n        MOTOROLA    = 'Motorola',\n        NVIDIA      = 'Nvidia',\n        ONEPLUS     = 'OnePlus',\n        OPPO        = 'OPPO',\n        SAMSUNG     = 'Samsung',\n        SHARP       = 'Sharp',\n        SONY        = 'Sony',\n        XIAOMI      = 'Xiaomi',\n        ZEBRA       = 'Zebra',\n\n        // browsers\n        CHROME      = 'Chrome',\n        CHROMIUM    = 'Chromium',\n        CHROMECAST  = 'Chromecast',\n        EDGE        = 'Edge',\n        FIREFOX     = 'Firefox',\n        OPERA       = 'Opera',\n        FACEBOOK    = 'Facebook',\n        SOGOU       = 'Sogou',\n\n        PREFIX_MOBILE  = 'Mobile ',\n        SUFFIX_BROWSER = ' Browser',\n\n        // os\n        WINDOWS     = 'Windows';\n   \n    var isWindow            = typeof window !== TYPEOF.UNDEFINED,\n        NAVIGATOR           = (isWindow && window.navigator) ? \n                                window.navigator : \n                                undefined,\n        NAVIGATOR_UADATA    = (NAVIGATOR && NAVIGATOR.userAgentData) ? \n                                NAVIGATOR.userAgentData : \n                                undefined;\n\n    ///////////\n    // Helper\n    //////////\n\n    var extend = function (defaultRgx, extensions) {\n            var mergedRgx = {};\n            var extraRgx = extensions;\n            if (!isExtensions(extensions)) {\n                extraRgx = {};\n                for (var i in extensions) {\n                    for (var j in extensions[i]) {\n                        extraRgx[j] = extensions[i][j].concat(extraRgx[j] ? extraRgx[j] : []);\n                    }\n                }\n            }\n            for (var k in defaultRgx) {\n                mergedRgx[k] = extraRgx[k] && extraRgx[k].length % 2 === 0 ? extraRgx[k].concat(defaultRgx[k]) : defaultRgx[k];\n            }\n            return mergedRgx;\n        },\n        enumerize = function (arr) {\n            var enums = {};\n            for (var i=0; i<arr.length; i++) {\n                enums[arr[i].toUpperCase()] = arr[i];\n            }\n            return enums;\n        },\n        has = function (str1, str2) {\n            if (typeof str1 === TYPEOF.OBJECT && str1.length > 0) {\n                for (var i in str1) {\n                    if (lowerize(str2) == lowerize(str1[i])) return true;\n                }\n                return false;\n            }\n            return isString(str1) ? lowerize(str2) == lowerize(str1) : false;\n        },\n        isExtensions = function (obj, deep) {\n            for (var prop in obj) {\n                return /^(browser|cpu|device|engine|os)$/.test(prop) || (deep ? isExtensions(obj[prop]) : false);\n            }\n        },\n        isString = function (val) {\n            return typeof val === TYPEOF.STRING;\n        },\n        itemListToArray = function (header) {\n            if (!header) return undefined;\n            var arr = [];\n            var tokens = normalizeHeaderValue(header).split(',');\n            for (var i = 0; i < tokens.length; i++) {\n                if (tokens[i].indexOf(';') > -1) {\n                    var token = trim(tokens[i]).split(';v=');\n                    arr[i] = { brand : token[0], version : token[1] };\n                } else {\n                    arr[i] = trim(tokens[i]);\n                }\n            }\n            return arr;\n        },\n        lowerize = function (str) {\n            return isString(str) ? str.toLowerCase() : str;\n        },\n        majorize = function (version) {\n            return isString(version) ? strip(/[^\\d\\.]/g, version).split('.')[0] : undefined;\n        },\n        normalizeHeaderValue = function (str) {\n            return isString(str) ? trim(strip(/\\\\?\\\"/g, str), UA_MAX_LENGTH) : undefined;\n        },\n        setProps = function (arr) {\n            for (var i in arr) {\n                if (!arr.hasOwnProperty(i)) continue;\n\n                var propName = arr[i];\n                if (typeof propName == TYPEOF.OBJECT && propName.length == 2) {\n                    this[propName[0]] = propName[1];\n                } else {\n                    this[propName] = undefined;\n                }\n            }\n            return this;\n        },\n        strip = function (pattern, str) {\n            return isString(str) ? str.replace(pattern, EMPTY) : str;\n        },\n        trim = function (str, len) {\n            str = strip(/^\\s\\s*/, String(str));\n            return typeof len === TYPEOF.UNDEFINED ? str : str.substring(0, len);\n    };\n\n    ///////////////\n    // Map helper\n    //////////////\n\n    var rgxMapper = function (ua, arrays) {\n\n            if(!ua || !arrays) return;\n\n            var i = 0, j, k, p, q, matches, match;\n\n            // loop through all regexes maps\n            while (i < arrays.length && !matches) {\n\n                var regex = arrays[i],       // even sequence (0,2,4,..)\n                    props = arrays[i + 1];   // odd sequence (1,3,5,..)\n                j = k = 0;\n\n                // try matching uastring with regexes\n                while (j < regex.length && !matches) {\n\n                    if (!regex[j]) { break; }\n                    matches = regex[j++].exec(ua);\n\n                    if (!!matches) {\n                        for (p = 0; p < props.length; p++) {\n                            match = matches[++k];\n                            q = props[p];\n                            // check if given property is actually array\n                            if (typeof q === TYPEOF.OBJECT && q.length > 0) {\n                                if (q.length === 2) {\n                                    if (typeof q[1] == TYPEOF.FUNCTION) {\n                                        // assign modified match\n                                        this[q[0]] = q[1].call(this, match);\n                                    } else {\n                                        // assign given value, ignore regex match\n                                        this[q[0]] = q[1];\n                                    }\n                                } else if (q.length >= 3) {\n                                    // Check whether q[1] FUNCTION or REGEX\n                                    if (typeof q[1] === TYPEOF.FUNCTION && !(q[1].exec && q[1].test)) {\n                                        if (q.length > 3) {\n                                            this[q[0]] = match ? q[1].apply(this, q.slice(2)) : undefined;\n                                        } else {\n                                            // call function (usually string mapper)\n                                            this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n                                        }\n                                    } else {\n                                        if (q.length == 3) {\n                                            // sanitize match using given regex\n                                            this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n                                        } else if (q.length == 4) {\n                                            this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n                                        } else if (q.length > 4) {\n                                            this[q[0]] = match ? q[3].apply(this, [match.replace(q[1], q[2])].concat(q.slice(4))) : undefined;\n                                        }\n                                    }\n                                }\n                            } else {\n                                this[q] = match ? match : undefined;\n                            }\n                        }\n                    }\n                }\n                i += 2;\n            }\n        },\n\n        strTest = function (str, map) {\n            return map.test.test(str) ? map.ifTrue : map.ifFalse;\n        },\n\n        strMapper = function (str, map) {\n\n            for (var i in map) {\n                // check if current value is array\n                if (typeof map[i] === TYPEOF.OBJECT && map[i].length > 0) {\n                    for (var j = 0; j < map[i].length; j++) {\n                        if (has(map[i][j], str)) {\n                            return (i === UNKNOWN) ? undefined : i;\n                        }\n                    }\n                } else if (has(map[i], str)) {\n                    return (i === UNKNOWN) ? undefined : i;\n                }\n            }\n            return map.hasOwnProperty('*') ? map['*'] : str;\n    };\n\n    ///////////////\n    // String map\n    //////////////\n\n    var windowsVersionMap = {\n            'ME'    : '4.90',\n            'NT 3.51': '3.51',\n            'NT 4.0': '4.0',\n            '2000'  : ['5.0', '5.01'],\n            'XP'    : ['5.1', '5.2'],\n            'Vista' : '6.0',\n            '7'     : '6.1',\n            '8'     : '6.2',\n            '8.1'   : '6.3',\n            '10'    : ['6.4', '10.0'],\n            'NT'    : ''\n        },\n        \n        formFactorsMap = {\n            'embedded'  : 'Automotive',\n            'mobile'    : 'Mobile',\n            'tablet'    : ['Tablet', 'EInk'],\n            'smarttv'   : 'TV',\n            'wearable'  : 'Watch',\n            'xr'        : ['VR', 'XR'],\n            '?'         : ['Desktop', 'Unknown'],\n            '*'         : undefined\n        },\n\n        browserHintsMap = {\n            'Chrome'        : 'Google Chrome',\n            'Edge'          : 'Microsoft Edge',\n            'Edge WebView2' : 'Microsoft Edge WebView2',\n            'Chrome WebView': 'Android WebView',\n            'Chrome Headless':'HeadlessChrome',\n            'Huawei Browser': 'HuaweiBrowser',\n            'MIUI Browser'  : 'Miui Browser',\n            'Opera Mobi'    : 'OperaMobile',\n            'Yandex'        : 'YaBrowser'\n    };\n\n    //////////////\n    // Regex map\n    /////////////\n\n    var defaultRegexes = {\n\n        browser : [[\n\n            // Most common regardless engine\n            /\\b(?:crmo|crios)\\/([\\w\\.]+)/i                                      // Chrome for Android/iOS\n            ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n            /webview.+edge\\/([\\w\\.]+)/i                                         // Microsoft Edge\n            ], [VERSION, [NAME, EDGE+' WebView'], [TYPE, INAPP]], [\n            /edg(?:e|ios|a)?\\/([\\w\\.]+)/i                                       \n            ], [VERSION, [NAME, 'Edge']], [\n\n            // Presto based\n            /(opera mini)\\/([-\\w\\.]+)/i,                                        // Opera Mini\n            /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,                 // Opera Mobi/Tablet\n            /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i                           // Opera\n            ], [NAME, VERSION], [\n            /opios[\\/ ]+([\\w\\.]+)/i                                             // Opera mini on iphone >= 8.0\n            ], [VERSION, [NAME, OPERA+' Mini']], [\n            /\\bop(?:rg)?x\\/([\\w\\.]+)/i                                          // Opera GX\n            ], [VERSION, [NAME, OPERA+' GX']], [\n            /\\bopr\\/([\\w\\.]+)/i                                                 // Opera Webkit\n            ], [VERSION, [NAME, OPERA]], [\n\n            // Mixed\n            /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i            // Baidu\n            ], [VERSION, [NAME, 'Baidu']], [\n            /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i                       // Maxthon\n            ], [VERSION, [NAME, 'Maxthon']], [\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i,      \n                                                                                // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n            // Trident based\n            /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i,        // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n            /(?:ms|\\()(ie) ([\\w\\.]+)/i,                                         // Internet Explorer\n\n            // Blink/Webkit/KHTML based                                         // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble/Palemoon/HiBrowser\n            /(atlas|flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:hi|lg |ovi|qute)browser|palemoon)\\/v?([-\\w\\.]+)/i,\n                                                                                // Atlas/Rekonq/Puffin/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n            /(brave)(?: chrome)?\\/([\\d\\.]+)/i,                                  // Brave\n            /(aloha|heytap|ovi|115|surf|qwant)browser\\/([\\d\\.]+)/i,             // Aloha/HeyTap/Ovi/115/Surf\n            /(qwant)(?:ios|mobile)\\/([\\d\\.]+)/i,                                // Qwant\n            /(ecosia|weibo)(?:__| \\w+@)([\\d\\.]+)/i                              // Ecosia/Weibo\n            ], [NAME, VERSION], [\n            /quark(?:pc)?\\/([-\\w\\.]+)/i                                         // Quark\n            ], [VERSION, [NAME, 'Quark']], [\n            /\\bddg\\/([\\w\\.]+)/i                                                 // DuckDuckGo\n            ], [VERSION, [NAME, 'DuckDuckGo']], [\n            /(?:\\buc? ?browser|(?:juc.+)ucweb| ucpc)[\\/ ]?([\\w\\.]+)/i           // UCBrowser\n            ], [VERSION, [NAME, 'UCBrowser']], [\n            /microm.+\\bqbcore\\/([\\w\\.]+)/i,                                     // WeChat Desktop for Windows Built-in Browser\n            /\\bqbcore\\/([\\w\\.]+).+microm/i,\n            /micromessenger\\/([\\w\\.]+)/i                                        // WeChat\n            ], [VERSION, [NAME, 'WeChat']], [\n            /konqueror\\/([\\w\\.]+)/i                                             // Konqueror\n            ], [VERSION, [NAME, 'Konqueror']], [\n            /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i                       // IE11\n            ], [VERSION, [NAME, 'IE']], [\n            /ya(?:search)?browser\\/([\\w\\.]+)/i                                  // Yandex\n            ], [VERSION, [NAME, 'Yandex']], [\n            /slbrowser\\/([\\w\\.]+)/i                                             // Smart Lenovo Browser\n            ], [VERSION, [NAME, 'Smart ' + LENOVO + SUFFIX_BROWSER]], [\n            /(av(?:ast|g|ira))\\/([\\w\\.]+)/i                                     // Avast/AVG/Avira Secure Browser\n            ], [[NAME, /(.+)/, '$1 Secure' + SUFFIX_BROWSER], VERSION], [\n            /norton\\/([\\w\\.]+)/i                                                // Norton Private Browser\n            ], [VERSION, [NAME, 'Norton Private' + SUFFIX_BROWSER]], [\n            /\\bfocus\\/([\\w\\.]+)/i                                               // Firefox Focus\n            ], [VERSION, [NAME, FIREFOX+' Focus']], [\n            / mms\\/([\\w\\.]+)$/i                                                 // Opera Neon\n            ], [VERSION, [NAME, OPERA+' Neon']], [\n            / opt\\/([\\w\\.]+)$/i                                                 // Opera Touch\n            ], [VERSION, [NAME, OPERA+' Touch']], [\n            /coc_coc\\w+\\/([\\w\\.]+)/i                                            // Coc Coc Browser\n            ], [VERSION, [NAME, 'Coc Coc']], [\n            /dolfin\\/([\\w\\.]+)/i                                                // Dolphin\n            ], [VERSION, [NAME, 'Dolphin']], [\n            /coast\\/([\\w\\.]+)/i                                                 // Opera Coast\n            ], [VERSION, [NAME, OPERA+' Coast']], [\n            /miuibrowser\\/([\\w\\.]+)/i                                           // MIUI Browser\n            ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [\n            /fxios\\/([\\w\\.-]+)/i                                                // Firefox for iOS\n            ], [VERSION, [NAME, PREFIX_MOBILE + FIREFOX]], [\n            /\\bqihoobrowser\\/?([\\w\\.]*)/i                                       // 360\n            ], [VERSION, [NAME, '360']], [\n            /\\b(qq)\\/([\\w\\.]+)/i                                                // QQ\n            ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n            /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n            ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [              // Oculus/Sailfish/VivoBrowser/PicoBrowser\n            / HBPC\\/([\\w\\.]+)/                                                  // Huawei Browser\n            ], [VERSION, [NAME, HUAWEI + SUFFIX_BROWSER]], [\n            /samsungbrowser\\/([\\w\\.]+)/i                                        // Samsung Internet\n            ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n            /metasr[\\/ ]?([\\d\\.]+)/i                                            // Sogou Explorer\n            ], [VERSION, [NAME, SOGOU + ' Explorer']], [\n            /(sogou)mo\\w+\\/([\\d\\.]+)/i                                          // Sogou Mobile\n            ], [[NAME, SOGOU + ' Mobile'], VERSION], [\n            /(electron)\\/([\\w\\.]+) safari/i,                                    // Electron-based App\n            /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,                   // Tesla\n            /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i   // QQ/2345\n            ], [NAME, VERSION], [\n            /(lbbrowser|luakit|rekonq|steam(?= (clie|tenf|gameo)))/i            // LieBao Browser/Luakit/Rekonq/Steam\n            ], [NAME], [\n            /ome\\/([\\w\\.]+).+(iron(?= saf)|360(?=[es]e$))/i                     // Iron / 360\n            ], [VERSION, NAME], [\n\n            // WebView\n            /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i       // Facebook App for iOS & Android\n            ], [[NAME, FACEBOOK], VERSION, [TYPE, INAPP]], [\n            /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i,                             // Kakao App\n            /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i,                                  // Naver InApp\n            /(daum)apps[\\/ ]([\\w\\.]+)/i,                                        // Daum App\n            /safari (line)\\/([\\w\\.]+)/i,                                        // Line App for iOS\n            /\\b(line)\\/([\\w\\.]+)\\/iab/i,                                        // Line App for Android\n            /(alipay)client\\/([\\w\\.]+)/i,                                       // Alipay\n            /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i,                               // Twitter\n            /(bing)(?:web|sapphire)\\/([\\w\\.]+)/i,                               // Bing\n            /(instagram|snapchat|klarna)[\\/ ]([-\\w\\.]+)/i                       // Instagram/Snapchat/Klarna\n            ], [NAME, VERSION, [TYPE, INAPP]], [\n            /\\bgsa\\/([\\w\\.]+) .*safari\\//i                                      // Google Search Appliance on iOS\n            ], [VERSION, [NAME, 'GSA'], [TYPE, INAPP]], [\n            /(?:musical_ly|trill)(?:.+app_?version\\/|_)([\\w\\.]+)/i              // TikTok\n            ], [VERSION, [NAME, 'TikTok'], [TYPE, INAPP]], [\n            /\\[(linkedin)app\\]/i                                                // LinkedIn App for iOS & Android\n            ], [NAME, [TYPE, INAPP]], [\n            /(zalo(?:app)?)[\\/\\sa-z]*([\\w\\.-]+)/i                               // Zalo \n            ], [[NAME, /(.+)/, 'Zalo'], VERSION, [TYPE, INAPP]], [\n\n            /(chromium)[\\/ ]([-\\w\\.]+)/i                                        // Chromium\n            ], [NAME, VERSION], [\n\n            /ome-(lighthouse)$/i                                                // Chrome Lighthouse\n            ], [NAME, [TYPE, FETCHER]], [\n\n            /headlesschrome(?:\\/([\\w\\.]+)| )/i                                  // Chrome Headless\n            ], [VERSION, [NAME, CHROME+' Headless']], [\n\n            /wv\\).+chrome\\/([\\w\\.]+).+edgw\\//i                                  // Edge WebView2\n            ], [VERSION, [NAME, EDGE+' WebView2'], [TYPE, INAPP]], [\n\n            /; wv\\).+(chrome)\\/([\\w\\.]+)/i                                      // Chrome WebView\n            ], [[NAME, CHROME+' WebView'], VERSION, [TYPE, INAPP]], [\n\n            /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i           // Android Browser\n            ], [VERSION, [NAME, 'Android' + SUFFIX_BROWSER]], [\n\n            /chrome\\/([\\w\\.]+) mobile/i                                         // Chrome Mobile\n            ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n\n            /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i       // Chrome/OmniWeb/Arora/Tizen/Nokia\n            ], [NAME, VERSION], [\n\n            /version\\/([\\w\\.\\,]+) .*mobile(?:\\/\\w+ | ?)safari/i                 // Safari Mobile\n            ], [VERSION, [NAME, PREFIX_MOBILE + 'Safari']], [\n            /iphone .*mobile(?:\\/\\w+ | ?)safari/i\n            ], [[NAME, PREFIX_MOBILE + 'Safari']], [\n            /version\\/([\\w\\.\\,]+) .*(safari)/i                                  // Safari\n            ], [VERSION, NAME], [\n            /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i                      // Safari < 3.0\n            ], [NAME, [VERSION, '1']], [\n\n            /(webkit|khtml)\\/([\\w\\.]+)/i\n            ], [NAME, VERSION], [\n\n            // Gecko based\n            /(?:mobile|tablet);.*(firefox)\\/([\\w\\.-]+)/i                        // Firefox Mobile\n            ], [[NAME, PREFIX_MOBILE + FIREFOX], VERSION], [\n            /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i                              // Netscape\n            ], [[NAME, 'Netscape'], VERSION], [\n            /(wolvic|librewolf)\\/([\\w\\.]+)/i                                    // Wolvic/LibreWolf\n            ], [NAME, VERSION], [\n            /mobile vr; rv:([\\w\\.]+)\\).+firefox/i                               // Firefox Reality\n            ], [VERSION, [NAME, FIREFOX+' Reality']], [\n            /ekiohf.+(flow)\\/([\\w\\.]+)/i,                                       // Flow\n            /(swiftfox)/i,                                                      // Swiftfox\n            /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,\n                                                                                // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n            /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n                                                                                // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n            /(firefox)\\/([\\w\\.]+)/i,                                            // Other Firefox-based\n            /(mozilla)\\/([\\w\\.]+(?= .+rv\\:.+gecko\\/\\d+)|[0-4][\\w\\.]+(?!.+compatible))/i, // Mozilla\n\n            // Other\n            /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n                                                                                // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird\n            /\\b(links) \\(([\\w\\.]+)/i                                            // Links\n            ], [NAME, [VERSION, /_/g, '.']], [\n            \n            /(cobalt)\\/([\\w\\.]+)/i                                              // Cobalt\n            ], [NAME, [VERSION, /[^\\d\\.]+./, EMPTY]]\n        ],\n\n        cpu : [[\n\n            /\\b((amd|x|x86[-_]?|wow|win)64)\\b/i                                 // AMD64 (x64)\n            ], [[ARCHITECTURE, 'amd64']], [\n\n            /(ia32(?=;))/i,                                                     // IA32 (quicktime)\n            /\\b((i[346]|x)86)(pc)?\\b/i                                          // IA32 (x86)\n            ], [[ARCHITECTURE, 'ia32']], [\n\n            /\\b(aarch64|arm(v?[89]e?l?|_?64))\\b/i                               // ARM64\n            ], [[ARCHITECTURE, 'arm64']], [\n\n            /\\b(arm(v[67])?ht?n?[fl]p?)\\b/i                                     // ARMHF\n            ], [[ARCHITECTURE, 'armhf']], [\n\n            // PocketPC mistakenly identified as PowerPC\n            /( (ce|mobile); ppc;|\\/[\\w\\.]+arm\\b)/i\n            ], [[ARCHITECTURE, 'arm']], [\n\n            / sun4\\w[;\\)]/i                                                     // SPARC\n            ], [[ARCHITECTURE, 'sparc']], [\n                                                                                // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n            /\\b(avr32|ia64(?=;)|68k(?=\\))|\\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\\b|pa-risc)/i,\n            /((ppc|powerpc)(64)?)( mac|;|\\))/i,                                 // PowerPC\n            /(?:osf1|[freopnt]{3,4}bsd) (alpha)/i                               // Alpha\n            ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n            /mc680.0/i\n            ], [[ARCHITECTURE, '68k']], [\n            /winnt.+\\[axp/i\n            ], [[ARCHITECTURE, 'alpha']]\n        ],\n\n        device : [[\n\n            //////////////////////////\n            // MOBILES & TABLETS\n            /////////////////////////\n\n            // Samsung\n            /\\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\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n            /\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n            /samsung[- ]((?!sm-[lr]|browser)[-\\w]+)/i,\n            /sec-(sgh\\w+)/i\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n            // Apple\n            /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)[\\/\\);]/i                           // iPod/iPhone\n            ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n            /\\b(?:ios|apple\\w+)\\/.+[\\(\\/](ipad)/i,                              // iPad\n            /\\b(ipad)[\\d,]*[;\\] ].+(mac |i(pad)?)os/i\n            ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n            /(macintosh);/i\n            ], [MODEL, [VENDOR, APPLE]], [\n\n            // Sharp\n            /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n            ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n            // Honor\n            /\\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\\)|;)/i\n            ], [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], [\n            /honor([-\\w ]+)[;\\)]/i\n            ], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [\n\n            // Huawei\n            /\\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\\w\\. ]*(?= bui|\\)))\\b(?!.+d\\/s)/i\n            ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n            /(?:huawei) ?([-\\w ]+)[;\\)]/i,\n            /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][\\dc][adnt]?)\\b(?!.+d\\/s)/i\n            ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n            // Xiaomi\n            /oid[^\\)]+; (2[\\dbc]{4}(182|283|rp\\w{2})[cgl]|m2105k81a?c)(?: bui|\\))/i,\n            /\\b(?:xiao)?((?:red)?mi[-_ ]?pad[\\w- ]*)(?: bui|\\))/i               // Mi Pad tablets\n            ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n            /\\b; (\\w+) build\\/hm\\1/i,                                           // Xiaomi Hongmi 'numeric' models\n            /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,                             // Xiaomi Hongmi\n                                                                                // Xiaomi Redmi / POCO / Black Shark / Qin\n            /oid[^\\)]+; (redmi[\\-_ ]?(?:note|k)?[\\w_ ]+|m?[12]\\d[01]\\d\\w{3,6}|poco[\\w ]+|(shark )?\\w{3}-[ah]0|qin ?[1-3](s\\+|ultra| pro)?)( bui|; wv|\\))/i,\n                                                                                // Xiaomi Mi\n            /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note|max|cc)?[_ ]?(?:\\d{0,2}\\w?)[_ ]?(?:plus|se|lite|pro)?( 5g|lte)?)(?: bui|\\))/i,\n            /; ([\\w ]+) miui\\/v?\\d/i\n            ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n\n            // OnePlus\n            /droid.+; (cph2[3-6]\\d[13579]|((gm|hd)19|(ac|be|in|kb)20|(d[en]|eb|le|mt)21|ne22)[0-2]\\d|p[g-l]\\w[1m]10)\\b/i,\n            /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n            ], [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], [\n\n            // OPPO\n            /; (\\w+) bui.+ oppo/i,\n            /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n            ], [MODEL, [VENDOR, OPPO], [TYPE, MOBILE]], [\n            /\\b(opd2(\\d{3}a?))(?: bui|\\))/i\n            ], [MODEL, [VENDOR, strMapper, { 'OnePlus' : ['203', '304', '403', '404', '413', '415'], '*' : OPPO }], [TYPE, TABLET]], [\n\n            // BLU\n            /(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\\w\\+ ]*)(?: bui|\\))/i  // Vivo series\n            ], [MODEL, [VENDOR, 'BLU'], [TYPE, MOBILE]], [    \n\n            // Vivo\n            /; vivo (\\w+)(?: bui|\\))/i,\n            /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n            ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n            // Realme\n            /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n            ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n            // Lenovo\n            /(ideatab[-\\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\\d{3,4}(?:f[cu]|xu|[av])|yt\\d?-[jx]?\\d+[lfmx])( bui|;|\\)|\\/)/i,\n            /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\\w- ]+?)|tb[\\w-]{6,7})( bui|;|\\)|\\/)/i\n            ], [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], [            \n            /lenovo[-_ ]?([-\\w ]+?)(?: bui|\\)|\\/)/i\n            ], [MODEL, [VENDOR, LENOVO], [TYPE, MOBILE]], [\n\n            // Motorola\n            /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n            /\\bmot(?:orola)?[- ]([\\w\\s]+)(\\)| bui)/i,\n            /((?:moto(?! 360)[-\\w\\(\\) ]+|xt\\d{3,4}[cgkosw\\+]?[-\\d]*|nexus 6)(?= bui|\\)))/i\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n            /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n            // LG\n            /\\b(?:lg)?([vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n            ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n            /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n            /\\blg[-e;\\/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\\w+)/i,\n            /\\blg-?([\\d\\w]+) bui/i\n            ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n            // Nokia\n            /(nokia) (t[12][01])/i\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n            /(?:maemo|nokia).*(n900|lumia \\d+|rm-\\d+)/i,\n            /nokia[-_ ]?(([-\\w\\. ]*?))( bui|\\)|;|\\/)/i\n            ], [[MODEL, /_/g, ' '], [TYPE, MOBILE], [VENDOR, 'Nokia']], [\n\n            // Google\n            /(pixel (c|tablet))\\b/i                                             // Google Pixel C/Tablet\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n                                                                                // Google Pixel\n            /droid.+;(?: google)? (g(01[13]a|020[aem]|025[jn]|1b60|1f8f|2ybb|4s1m|576d|5nz6|8hhn|8vou|a02099|c15s|d1yq|e2ae|ec77|gh2x|kv4x|p4bc|pj41|r83y|tt9q|ur25|wvk6)|pixel[\\d ]*a?( pro)?( xl)?( fold)?( \\(5g\\))?)( bui|\\))/i\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n            /(google) (pixelbook( go)?)/i\n            ], [VENDOR, MODEL], [\n\n            // Sony\n            /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-\\w\\w\\d\\d)(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n            ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n            /sony tablet [ps]/i,\n            /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n            ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n            // Amazon\n            /(alexa)webm/i,\n            /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i,                           // Kindle Fire without Silk / Echo Show\n            /(kf[a-z]+)( bui|\\)).+silk\\//i                                      // Kindle Fire HD\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n            /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i                     // Fire Phone\n            ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n            // BlackBerry\n            /(playbook);[-\\w\\),; ]+(rim)/i                                      // BlackBerry PlayBook\n            ], [MODEL, VENDOR, [TYPE, TABLET]], [\n            /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n            /(?:blackberry|\\(bb10;) (\\w+)/i\n            ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n            // Asus\n            /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n            ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n            / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n            ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n            // HTC\n            /(nexus 9)/i                                                        // HTC Nexus 9\n            ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n            /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,                         // HTC\n\n            // ZTE\n            /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n            /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i         // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n            ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n            // TCL\n            /tcl (xess p17aa)/i,\n            /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n            ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n            /droid [\\w\\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n            ], [MODEL, [VENDOR, 'TCL'], [TYPE, MOBILE]], [\n\n            // itel\n            /(itel) ((\\w+))/i\n            ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [\n\n            // Acer\n            /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n            ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n            // Meizu\n            /droid.+; (m[1-5] note) bui/i,\n            /\\bmz-([-\\w]{2,})/i\n            ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n                \n            // Ulefone\n            /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n            // Energizer\n            /; (energy ?\\w+)(?: bui|\\))/i,\n            /; energizer ([\\w ]+)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n            // Cat\n            /; cat (b35);/i,\n            /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n            // Smartfren\n            /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n            // Nothing\n            /droid.+; (a(in)?(0(15|59|6[35])|142)p?)/i\n            ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n            // Archos\n            /; (x67 5g|tikeasy \\w+|ac[1789]\\d\\w+)( b|\\))/i,\n            /archos ?(5|gamepad2?|([\\w ]*[t1789]|hello) ?\\d+[\\w ]*)( b|\\))/i\n            ], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [\n            /archos ([\\w ]+)( b|\\))/i,\n            /; (ac[3-6]\\d\\w{2,8})( b|\\))/i \n            ], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [\n\n            // Blackview\n            /blackview ([-\\w ]+)( b|\\))/i,\n            /; (bv\\d{4}[-\\w ]*)( b|\\))/i\n            ], [MODEL, [VENDOR, 'Blackview'], [TYPE, MOBILE]], [\n\n            // HMD\n            /; (n159v)/i\n            ], [MODEL, [VENDOR, 'HMD'], [TYPE, MOBILE]], [\n\n            // T-Mobile\n            /((revvl[ \\w\\+]+|tm(?:rv|af)\\w*[45]g(?:tb)?))( b|\\))/i\n            ], [MODEL, [TYPE, strTest, { 'test': /ta?b/i, 'ifTrue': TABLET, 'ifFalse': MOBILE }], [VENDOR, 'T-Mobile']], [\n\n            // MIXED\n            /(imo) (tab \\w+)/i,                                                 // IMO\n            /(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i                     // Infinix XPad / Tecno\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n                                                                                // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Tecno/Micromax/Advan\n                                                                                // BLU/Coolpad/CUBOT/HMD/IMO/Infinix/Lava/OnePlus/TCL/Wiko\n            /; (blu|coolpad|cubot|hmd|imo|infinix|lava|oneplus|tcl|wiko)[_ ]([-\\w\\+ ]+?)(?: bui|\\)|; r)/i,\n            /(hp) ([\\w ]+\\w)/i,                                                 // HP iPAQ\n            /(microsoft); (lumia[\\w ]+)/i,                                      // Microsoft Lumia\n            /(oppo) ?([\\w ]+) bui/i,                                            // OPPO\n            /(hisense) ([ehv][\\w ]+)\\)/i,                                       // Hisense\n            /droid[^;]+; (philips)[_ ]([sv-x][\\d]{3,4}[xz]?)/i                  // Philips\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /(kobo)\\s(ereader|touch)/i,                                         // Kobo\n            /(hp).+(touchpad(?!.+tablet)|tablet)/i,                             // HP TouchPad\n            /(kindle)\\/([\\w\\.]+)/i                                              // Kindle\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /(surface duo)/i                                                    // Surface Duo\n            ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n            /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i                                 // Fairphone\n            ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n            /((?:tegranote|shield t(?!.+d tv))[\\w- ]*?)(?: b|\\))/i              // Nvidia Tablets\n            ], [MODEL, [VENDOR, NVIDIA], [TYPE, TABLET]], [\n            /(sprint) (\\w+)/i                                                   // Sprint Phones\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n            /(kin\\.[onetw]{3})/i                                                // Microsoft Kin\n            ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n            /droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i               // Zebra\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n            /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n            ///////////////////\n            // SMARTTVS\n            ///////////////////\n\n            /(philips)[\\w ]+tv/i,                                               // Philips\n            /smart-tv.+(samsung)/i                                              // Samsung\n            ], [VENDOR, [TYPE, SMARTTV]], [\n            /hbbtv.+maple;(\\d+)/i\n            ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n            /(vizio)(?: |.+model\\/)(\\w+-\\w+)/i,                                 // Vizio\n            /tcast.+(lg)e?. ([-\\w]+)/i                                          // LG SmartTV\n            ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n            /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i\n            ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n            /(apple) ?tv/i                                                      // Apple TV\n            ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n            /crkey.*devicetype\\/chromecast/i                                    // Google Chromecast Third Generation\n            ], [[MODEL, CHROMECAST+' Third Generation'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /crkey.*devicetype\\/([^/]*)/i                                       // Google Chromecast with specific device type\n            ], [[MODEL, /^/, 'Chromecast '], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /fuchsia.*crkey/i                                                   // Google Chromecast Nest Hub\n            ], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /crkey/i                                                            // Google Chromecast, Linux-based or unknown\n            ], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /(portaltv)/i                                                       // Facebook Portal TV\n            ], [MODEL, [VENDOR, FACEBOOK], [TYPE, SMARTTV]], [\n            /droid.+aft(\\w+)( bui|\\))/i                                         // Fire TV\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n            /(shield \\w+ tv)/i                                                  // Nvidia Shield TV\n            ], [MODEL, [VENDOR, NVIDIA], [TYPE, SMARTTV]], [\n            /\\(dtv[\\);].+(aquos)/i,\n            /(aquos-tv[\\w ]+)\\)/i                                               // Sharp\n            ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n            /(bravia[\\w ]+)( bui|\\))/i                                          // Sony\n            ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n            /(mi(tv|box)-?\\w+) bui/i                                            // Xiaomi\n            ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n            /Hbbtv.*(technisat) (.*);/i                                         // TechniSAT\n            ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n            /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,                          // Roku\n            /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i         // HbbTV devices\n            ], [[VENDOR, /.+\\/(\\w+)/, '$1', strMapper, {'LG':'lge'}], [MODEL, trim], [TYPE, SMARTTV]], [\n\n            ///////////////////\n            // CONSOLES\n            ///////////////////\n\n            /(playstation \\w+)/i                                                // Playstation\n            ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n            /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i                                // Microsoft Xbox\n            ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n            /(ouya)/i,                                                          // Ouya\n            /(nintendo) (\\w+)/i,                                                // Nintendo\n            /(retroid) (pocket ([^\\)]+))/i,                                     // Retroid Pocket\n            /(valve).+(steam deck)/i,\n            /droid.+; ((shield|rgcube|gr0006))( bui|\\))/i                       // Nvidia Portable/Anbernic/Logitech\n            ], [[VENDOR, strMapper, { 'Nvidia': 'Shield', 'Anbernic': 'RGCUBE', 'Logitech': 'GR0006' }], MODEL, [TYPE, CONSOLE]], [\n\n            ///////////////////\n            // WEARABLES\n            ///////////////////\n\n            /\\b(sm-[lr]\\d\\d[0156][fnuw]?s?|gear live)\\b/i                       // Samsung Galaxy Watch\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n            /((pebble))app/i,                                                   // Pebble\n            /(asus|google|lg|oppo|xiaomi) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i // Asus ZenWatch / LG Watch / Pixel Watch / Xiaomi Watch\n            ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n            /(ow(?:19|20)?we?[1-3]{1,3})/i                                      // Oppo Watch\n            ], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [\n            /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i                              // Apple Watch\n            ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n            /(opwwe\\d{3})/i                                                     // OnePlus Watch\n            ], [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], [\n            /(moto 360)/i                                                       // Motorola 360\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], [\n            /(smartwatch 3)/i                                                   // Sony SmartWatch\n            ], [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], [\n            /(g watch r)/i                                                      // LG G Watch R\n            ], [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], [\n            /droid.+; (wt63?0{2,3})\\)/i\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n            ///////////////////\n            // XR\n            ///////////////////\n\n            /droid.+; (glass) \\d/i                                              // Google Glass\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [\n            /(pico) ([\\w ]+) os\\d/i                                             // Pico\n            ], [VENDOR, MODEL, [TYPE, XR]], [\n            /(quest( \\d| pro)?s?).+vr/i                                         // Meta Quest\n            ], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [\n            /mobile vr; rv.+firefox/i                                           // Unidentifiable VR device using Firefox Reality / Wolvic\n            ], [[TYPE, XR]], [\n\n            ///////////////////\n            // EMBEDDED\n            ///////////////////\n\n            /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i                              // Tesla\n            ], [VENDOR, [TYPE, EMBEDDED]], [\n            /(aeobc)\\b/i                                                        // Echo Dot\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n            /(homepod).+mac os/i                                                // Apple HomePod\n            ], [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], [\n            /windows iot/i                                                      // Unidentifiable embedded device using Windows IoT\n            ], [[TYPE, EMBEDDED]], [\n\n            ////////////////////\n            // MIXED (GENERIC)\n            ///////////////////\n\n            /droid.+; ([\\w- ]+) (4k|android|smart|google)[- ]?tv/i              // Unidentifiable SmartTV\n            ], [MODEL, [TYPE, SMARTTV]], [\n            /\\b((4k|android|smart|opera)[- ]?tv|tv; rv:|large screen[\\w ]+safari)\\b/i\n            ], [[TYPE, SMARTTV]], [\n            /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew|; hmsc).+?(mobile|vr|\\d) safari/i\n            ], [MODEL, [TYPE, strMapper, { 'mobile' : 'Mobile', 'xr' : 'VR', '*' : TABLET }]], [\n            /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i                      // Unidentifiable Tablet\n            ], [[TYPE, TABLET]], [\n            /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i    // Unidentifiable Mobile\n            ], [[TYPE, MOBILE]], [\n            /droid .+?; ([\\w\\. -]+)( bui|\\))/i                                  // Generic Android Device\n            ], [MODEL, [VENDOR, 'Generic']]\n        ],\n\n        engine : [[\n\n            /windows.+ edge\\/([\\w\\.]+)/i                                       // EdgeHTML\n            ], [VERSION, [NAME, EDGE+'HTML']], [\n\n            /(arkweb)\\/([\\w\\.]+)/i                                              // ArkWeb\n            ], [NAME, VERSION], [\n\n            /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i                         // Blink\n            ], [VERSION, [NAME, 'Blink']], [\n\n            /(presto)\\/([\\w\\.]+)/i,                                             // Presto\n            /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n            /ekioh(flow)\\/([\\w\\.]+)/i,                                          // Flow\n            /(khtml|tasman|links|dillo)[\\/ ]\\(?([\\w\\.]+)/i,                     // KHTML/Tasman/Links/Dillo\n            /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i,                                      // iCab\n\n            /\\b(libweb)/i                                                       // LibWeb\n            ], [NAME, VERSION], [\n            /ladybird\\//i\n            ], [[NAME, 'LibWeb']], [\n\n            /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i                                     // Gecko\n            ], [VERSION, NAME]\n        ],\n\n        os : [[\n\n            // Windows\n            /(windows nt) (6\\.[23]); arm/i                                      // Windows RT\n            ], [[NAME, /N/, 'R'], [VERSION, strMapper, windowsVersionMap]], [\n            /(windows (?:phone|mobile|iot))(?: os)?[\\/ ]?([\\d\\.]*( se)?)/i,     // Windows IoT/Mobile/Phone\n                                                                                // Windows NT/3.1/95/98/ME/2000/XP/Vista/7/8/8.1/10/11\n            /(windows)[\\/ ](1[01]|2000|3\\.1|7|8(\\.1)?|9[58]|me|server 20\\d\\d( r2)?|vista|xp)/i\n            ], [NAME, VERSION], [\n            /windows nt ?([\\d\\.\\)]*)(?!.+xbox)/i,\n            /\\bwin(?=3| ?9|n)(?:nt| 9x )?([\\d\\.;]*)/i\n            ], [[VERSION, /(;|\\))/g, '', strMapper, windowsVersionMap], [NAME, WINDOWS]], [\n            /(windows ce)\\/?([\\d\\.]*)/i                                         // Windows CE\n            ], [NAME, VERSION], [\n\n            // iOS/macOS\n            /[adehimnop]{4,7}\\b(?:.*os ([\\w]+) like mac|; opera)/i,             // iOS\n            /(?:ios;fbsv|ios(?=.+ip(?:ad|hone)|.+apple ?tv)|ip(?:ad|hone)(?: |.+i(?:pad)?)os|apple ?tv.+ios)[\\/ ]([\\w\\.]+)/i,\n            /\\btvos ?([\\w\\.]+)/i,\n            /cfnetwork\\/.+darwin/i\n            ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n            /(mac os x) ?([\\w\\. ]*)/i,\n            /(macintosh|mac_powerpc\\b)(?!.+(haiku|morphos))/i                   // Mac OS\n            ], [[NAME, 'macOS'], [VERSION, /_/g, '.']], [\n\n            // Google Chromecast\n            /android ([\\d\\.]+).*crkey/i                                         // Google Chromecast, Android-based\n            ], [VERSION, [NAME, CHROMECAST + ' Android']], [\n            /fuchsia.*crkey\\/([\\d\\.]+)/i                                        // Google Chromecast, Fuchsia-based\n            ], [VERSION, [NAME, CHROMECAST + ' Fuchsia']], [\n            /crkey\\/([\\d\\.]+).*devicetype\\/smartspeaker/i                       // Google Chromecast, Linux-based Smart Speaker\n            ], [VERSION, [NAME, CHROMECAST + ' SmartSpeaker']], [\n            /linux.*crkey\\/([\\d\\.]+)/i                                          // Google Chromecast, Legacy Linux-based\n            ], [VERSION, [NAME, CHROMECAST + ' Linux']], [\n            /crkey\\/([\\d\\.]+)/i                                                 // Google Chromecast, unknown\n            ], [VERSION, [NAME, CHROMECAST]], [\n\n            // Mobile OSes\n            /droid ([\\w\\.]+)\\b.+(android[- ]x86)/i                              // Android-x86\n            ], [VERSION, NAME], [                                               \n            /(ubuntu) ([\\w\\.]+) like android/i                                  // Ubuntu Touch\n            ], [[NAME, /(.+)/, '$1 Touch'], VERSION], [\n            /(harmonyos)[\\/ ]?([\\d\\.]*)/i,                                      // HarmonyOS\n                                                                                // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen\n            /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen)\\w*[-\\/\\.; ]?([\\d\\.]*)/i\n            ], [NAME, VERSION], [\n            /\\(bb(10);/i                                                        // BlackBerry 10\n            ], [VERSION, [NAME, BLACKBERRY]], [\n            /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\\/ ]?([\\w\\.]*)/i       // Symbian\n            ], [VERSION, [NAME, 'Symbian']], [\n            /mozilla\\/[\\d\\.]+ \\((?:mobile[;\\w ]*|tablet|tv|[^\\)]*(?:viera|lg(?:l25|-d300)|alcatel ?o.+|y300-f1)); rv:([\\w\\.]+)\\).+gecko\\//i // Firefox OS\n            ], [VERSION, [NAME, FIREFOX+' OS']], [\n            /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i,                             // WebOS\n            /webos(?:[ \\/]?|\\.tv-20(?=2[2-9]))(\\d[\\d\\.]*)/i\n            ], [VERSION, [NAME, 'webOS']], [\n            /web0s;.+?(?:chr[o0]me|safari)\\/(\\d+)/i\n                                                                                // https://webostv.developer.lge.com/develop/specifications/web-api-and-web-engine\n            ], [[VERSION, strMapper, {'25':'120','24':'108','23':'94','22':'87','6':'79','5':'68','4':'53','3':'38','2':'538','1':'537','*':'TV'}], [NAME, 'webOS']], [                   \n            /watch(?: ?os[,\\/ ]|\\d,\\d\\/)([\\d\\.]+)/i                              // watchOS\n            ], [VERSION, [NAME, 'watchOS']], [\n\n            // Google ChromeOS\n            /cros [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i                                    // Chromium OS\n            ], [VERSION, [NAME, 'Chrome OS']],[\n\n            // Smart TVs\n            /kepler ([\\w\\.]+); (aft|aeo)/i                                      // Vega OS\n            ], [VERSION, [NAME, 'Vega OS']],[\n            /(netrange)mmh/i,                                                   // Netrange\n            /(nettv)\\/(\\d+\\.[\\w\\.]+)/i,                                         // NetTV\n\n            // Console\n            /(nintendo|playstation) (\\w+)/i,                                    // Nintendo/Playstation\n            /(xbox); +xbox ([^\\);]+)/i,                                         // Microsoft Xbox (360, One, X, S, Series X, Series S)\n            /(pico) .+os([\\w\\.]+)/i,                                            // Pico\n\n            // Other\n            /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,                            // Joli/Palm\n            /linux.+(mint)[\\/\\(\\) ]?([\\w\\.]*)/i,                                // Mint\n            /(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\\d\\.]*)/i,  // Mageia/VectorLinux/Fuchsia/ArcaOS/Arch\n            /([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire|knoppix)(?: gnu[\\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n                                                                                // Ubuntu/Debian/SUSE/Gentoo/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire/Knoppix\n            /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,                              // Solaris\n            /\\b(aix)[; ]([1-9\\.]{0,4})/i,                                       // AIX\n            /(hurd|linux|morphos)(?: (?:arm|x86|ppc)\\w*| ?)([\\w\\.]*)/i,         // Hurd/Linux/MorphOS\n            /(gnu) ?([\\w\\.]*)/i,                                                // GNU\n            /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n            /(haiku) ?(r\\d)?/i                                                  // Haiku\n            ], [NAME, VERSION], [\n            /(sunos) ?([\\d\\.]*)/i                                               // Solaris\n            ], [[NAME, 'Solaris'], VERSION], [\n            /\\b(beos|os\\/2|amigaos|openvms|hp-ux|serenityos)/i,                 // BeOS/OS2/AmigaOS/OpenVMS/HP-UX/SerenityOS\n            /(unix) ?([\\w\\.]*)/i                                                // UNIX\n            ], [NAME, VERSION]\n        ]\n    };\n\n    /////////////////\n    // Factories\n    ////////////////\n\n    var defaultProps = (function () {\n            var props = { init : {}, isIgnore : {}, isIgnoreRgx : {}, toString : {}};\n            setProps.call(props.init, [\n                [BROWSER, [NAME, VERSION, MAJOR, TYPE]],\n                [CPU, [ARCHITECTURE]],\n                [DEVICE, [TYPE, MODEL, VENDOR]],\n                [ENGINE, [NAME, VERSION]],\n                [OS, [NAME, VERSION]]\n            ]);\n            setProps.call(props.isIgnore, [\n                [BROWSER, [VERSION, MAJOR]],\n                [ENGINE, [VERSION]],\n                [OS, [VERSION]]\n            ]);\n            setProps.call(props.isIgnoreRgx, [\n                [BROWSER, / ?browser$/i],\n                [OS, / ?os$/i]\n            ]);\n            setProps.call(props.toString, [\n                [BROWSER, [NAME, VERSION]],\n                [CPU, [ARCHITECTURE]],\n                [DEVICE, [VENDOR, MODEL]],\n                [ENGINE, [NAME, VERSION]],\n                [OS, [NAME, VERSION]]\n            ]);\n            return props;\n    })();\n\n    var createIData = function (item, itemType) {\n\n        var init_props = defaultProps.init[itemType],\n            is_ignoreProps = defaultProps.isIgnore[itemType] || 0,\n            is_ignoreRgx = defaultProps.isIgnoreRgx[itemType] || 0,\n            toString_props = defaultProps.toString[itemType] || 0;\n\n        function IData () {\n            setProps.call(this, init_props);\n        }\n\n        IData.prototype.getItem = function () {\n            return item;\n        };\n\n        IData.prototype.withClientHints = function () {\n\n            // nodejs / non-client-hints browsers\n            if (!NAVIGATOR_UADATA) {\n                return item\n                        .parseCH()\n                        .get();\n            }\n\n            // browsers based on chromium 85+\n            return NAVIGATOR_UADATA\n                    .getHighEntropyValues(CH_ALL_VALUES)\n                    .then(function (res) {\n                        return item\n                                .setCH(new UACHData(res, false))\n                                .parseCH()\n                                .get();\n            });\n        };\n\n        IData.prototype.withFeatureCheck = function () {\n            return item.detectFeature().get();\n        };\n\n        if (itemType != RESULT) {\n            IData.prototype.is = function (strToCheck) {\n                var is = false;\n                for (var i in this) {\n                    if (this.hasOwnProperty(i) && !has(is_ignoreProps, i) && lowerize(is_ignoreRgx ? strip(is_ignoreRgx, this[i]) : this[i]) == lowerize(is_ignoreRgx ? strip(is_ignoreRgx, strToCheck) : strToCheck)) {\n                        is = true;\n                        if (strToCheck != TYPEOF.UNDEFINED) break;\n                    } else if (strToCheck == TYPEOF.UNDEFINED && is) {\n                        is = !is;\n                        break;\n                    }\n                }\n                return is;\n            };\n            IData.prototype.toString = function () {\n                var str = EMPTY;\n                for (var i in toString_props) {\n                    if (typeof(this[toString_props[i]]) !== TYPEOF.UNDEFINED) {\n                        str += (str ? ' ' : EMPTY) + this[toString_props[i]];\n                    }\n                }\n                return str || TYPEOF.UNDEFINED;\n            };\n        }\n\n        IData.prototype.then = function (cb) { \n            var that = this;\n            var IDataResolve = function () {\n                for (var prop in that) {\n                    if (that.hasOwnProperty(prop)) {\n                        this[prop] = that[prop];\n                    }\n                }\n            };\n            IDataResolve.prototype = {\n                is : IData.prototype.is,\n                toString : IData.prototype.toString,\n                withClientHints : IData.prototype.withClientHints,\n                withFeatureCheck : IData.prototype.withFeatureCheck\n            };\n            var resolveData = new IDataResolve();\n            cb(resolveData);\n            return resolveData;\n        };\n\n        return new IData();\n    };\n\n    /////////////////\n    // Constructor\n    ////////////////\n\n    function UACHData (uach, isHttpUACH) {\n        uach = uach || {};\n        setProps.call(this, CH_ALL_VALUES);\n        if (isHttpUACH) {\n            setProps.call(this, [\n                [BRANDS, itemListToArray(uach[CH])],\n                [FULLVERLIST, itemListToArray(uach[CH_FULL_VER_LIST])],\n                [MOBILE, /\\?1/.test(uach[CH_MOBILE])],\n                [MODEL, normalizeHeaderValue(uach[CH_MODEL])],\n                [PLATFORM, normalizeHeaderValue(uach[CH_PLATFORM])],\n                [PLATFORMVER, normalizeHeaderValue(uach[CH_PLATFORM_VER])],\n                [ARCHITECTURE, normalizeHeaderValue(uach[CH_ARCH])],\n                [FORMFACTORS, itemListToArray(uach[CH_FORM_FACTORS])],\n                [BITNESS, normalizeHeaderValue(uach[CH_BITNESS])]\n            ]);\n        } else {\n            for (var prop in uach) {\n                if(this.hasOwnProperty(prop) && typeof uach[prop] !== TYPEOF.UNDEFINED) this[prop] = uach[prop];\n            }\n        }\n    }\n\n    function UAItem (itemType, ua, rgxMap, uaCH) {\n        setProps.call(this, [\n            ['itemType', itemType],\n            ['ua', ua],\n            ['uaCH', uaCH],\n            ['rgxMap', rgxMap],\n            ['data', createIData(this, itemType)]\n        ]);\n        return this;\n    }\n\n    UAItem.prototype.get = function (prop) {\n        if (!prop) return this.data;\n        return this.data.hasOwnProperty(prop) ? this.data[prop] : undefined;\n    };\n\n    UAItem.prototype.set = function (prop, val) {\n        this.data[prop] = val;\n        return this;\n    };\n\n    UAItem.prototype.setCH = function (ch) {\n        this.uaCH = ch;\n        return this;\n    };\n\n    UAItem.prototype.detectFeature = function () {\n        if (NAVIGATOR && NAVIGATOR.userAgent == this.ua) {\n            switch (this.itemType) {\n                case BROWSER:\n                    // Brave-specific detection\n                    if (NAVIGATOR.brave && typeof NAVIGATOR.brave.isBrave == TYPEOF.FUNCTION) {\n                        this.set(NAME, 'Brave');\n                    }\n                    break;\n                case DEVICE:\n                    // Chrome-specific detection: check for 'mobile' value of navigator.userAgentData\n                    if (!this.get(TYPE) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[MOBILE]) {\n                        this.set(TYPE, MOBILE);\n                    }\n                    // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n                    if (this.get(MODEL) == 'Macintosh' && NAVIGATOR && typeof NAVIGATOR.standalone !== TYPEOF.UNDEFINED && NAVIGATOR.maxTouchPoints && NAVIGATOR.maxTouchPoints > 2) {\n                        this.set(MODEL, 'iPad')\n                            .set(TYPE, TABLET);\n                    }\n                    break;\n                case OS:\n                    // Chrome-specific detection: check for 'platform' value of navigator.userAgentData\n                    if (!this.get(NAME) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[PLATFORM]) {\n                        this.set(NAME, NAVIGATOR_UADATA[PLATFORM]);\n                    }\n                    break;\n                case RESULT:\n                    var data = this.data;\n                    var detect = function (itemType) {\n                        return data[itemType]\n                                .getItem()\n                                .detectFeature()\n                                .get();\n                    };\n                    this.set(BROWSER, detect(BROWSER))\n                        .set(CPU, detect(CPU))\n                        .set(DEVICE, detect(DEVICE))\n                        .set(ENGINE, detect(ENGINE))\n                        .set(OS, detect(OS));\n            }\n        }\n        return this;\n    };\n\n    UAItem.prototype.parseUA = function () {\n        if (this.itemType != RESULT) {\n            rgxMapper.call(this.data, this.ua, this.rgxMap);\n        }\n        switch (this.itemType) {\n            case BROWSER:\n                this.set(MAJOR, majorize(this.get(VERSION)));\n                break;\n            case OS:\n                // Since iOS 26, Safari's UA reports the OS version as frozen at 18:\n                // https://webkit.org/blog/17333/webkit-features-in-safari-26-0/#update-to-ua-string\n                if (this.get(NAME) == 'iOS' && this.get(VERSION)) {\n                    // Only perform this if iOS version is 18/19\n                    if (/^1[89][^\\d]/.exec(this.get(VERSION))) {\n                        // Based on the assumption that \"iOS\" version is tightly coupled with \"Safari\" version\n                        var realVersion = /\\) Version\\/((\\d+)[\\d\\.]*)/.exec(this.ua);\n                        if (realVersion && parseInt(realVersion[2], 10) >= 26) {\n                            // iOS version = Safari version\n                            this.set(VERSION, realVersion[1]);\n                        }\n                    }\n                }\n                break;\n        }\n        return this;\n    };\n\n    UAItem.prototype.parseCH = function () {\n        var uaCH = this.uaCH,\n            rgxMap = this.rgxMap;\n\n        switch (this.itemType) {\n            case BROWSER:\n            case ENGINE:\n                var brands = uaCH[FULLVERLIST] || uaCH[BRANDS], prevName;\n                if (brands) {\n                    for (var i=0; i<brands.length; i++) {\n                        var brandName = brands[i].brand || brands[i],\n                            brandVersion = brands[i].version;\n                        if (this.itemType == BROWSER && \n                            !/not.a.brand/i.test(brandName) && \n                            (!prevName || \n                                (/Chrom/.test(prevName) && brandName != CHROMIUM) || \n                                (prevName == EDGE && /WebView2/.test(brandName))\n                            )) {\n                                brandName = strMapper(brandName, browserHintsMap);\n                                prevName = this.get(NAME);\n                                if (!(prevName && !/Chrom/.test(prevName) && /Chrom/.test(brandName))) {\n                                    this.set(NAME, brandName)\n                                        .set(VERSION, brandVersion)\n                                        .set(MAJOR, majorize(brandVersion));\n                                }\n                                prevName = brandName;\n                        }\n                        if (this.itemType == ENGINE && brandName == CHROMIUM) {\n                            this.set(VERSION, brandVersion);\n                        }\n                    }\n                }\n                break;\n            case CPU:\n                var archName = uaCH[ARCHITECTURE];\n                if (archName) {\n                    if (archName && uaCH[BITNESS] == '64') archName += '64';\n                    rgxMapper.call(this.data, archName + ';', rgxMap);\n                }\n                break;\n            case DEVICE:\n                if (uaCH[MOBILE]) {\n                    this.set(TYPE, MOBILE);\n                }\n                if (uaCH[MODEL]) {\n                    this.set(MODEL, uaCH[MODEL]);\n                    if (!this.get(TYPE) || !this.get(VENDOR)) {\n                        var reParse = {};\n                        rgxMapper.call(reParse, 'droid 9; ' + uaCH[MODEL] + ')', rgxMap);\n                        if (!this.get(TYPE) && !!reParse.type) {\n                            this.set(TYPE, reParse.type);\n                        }\n                        if (!this.get(VENDOR) && !!reParse.vendor) {\n                            this.set(VENDOR, reParse.vendor);\n                        }\n                    }\n                }\n                if (uaCH[FORMFACTORS]) {\n                    var ff;\n                    if (typeof uaCH[FORMFACTORS] !== 'string') {\n                        var idx = 0;\n                        while (!ff && idx < uaCH[FORMFACTORS].length) {\n                            ff = strMapper(uaCH[FORMFACTORS][idx++], formFactorsMap);\n                        }\n                    } else {\n                        ff = strMapper(uaCH[FORMFACTORS], formFactorsMap);\n                    }\n                    this.set(TYPE, ff);\n                }\n                break;\n            case OS:\n                var osName = uaCH[PLATFORM];\n                if(osName) {\n                    var osVersion = uaCH[PLATFORMVER];\n                    if (osName == WINDOWS) osVersion = (parseInt(majorize(osVersion), 10) >= 13 ? '11' : '10');\n                    this.set(NAME, osName)\n                        .set(VERSION, osVersion);\n                }\n                // Xbox-Specific Detection\n                if (this.get(NAME) == WINDOWS && uaCH[MODEL] == 'Xbox') {\n                    this.set(NAME, 'Xbox')\n                        .set(VERSION, undefined);\n                }           \n                break;\n            case RESULT:\n                var data = this.data;\n                var parse = function (itemType) {\n                    return data[itemType]\n                            .getItem()\n                            .setCH(uaCH)\n                            .parseCH()\n                            .get();\n                };\n                this.set(BROWSER, parse(BROWSER))\n                    .set(CPU, parse(CPU))\n                    .set(DEVICE, parse(DEVICE))\n                    .set(ENGINE, parse(ENGINE))\n                    .set(OS, parse(OS));\n        }\n        return this;\n    };\n\n    function UAParser (ua, extensions, headers) {\n\n        if (typeof ua === TYPEOF.OBJECT) {\n            if (isExtensions(ua, true)) {\n                if (typeof extensions === TYPEOF.OBJECT) {\n                    headers = extensions;               // case UAParser(extensions, headers)           \n                }\n                extensions = ua;                        // case UAParser(extensions)\n            } else {\n                headers = ua;                           // case UAParser(headers)\n                extensions = undefined;\n            }\n            ua = undefined;\n        } else if (typeof ua === TYPEOF.STRING && !isExtensions(extensions, true)) {\n            headers = extensions;                       // case UAParser(ua, headers)\n            extensions = undefined;\n        }\n\n        if (headers) {\n            if (typeof headers.append === TYPEOF.FUNCTION) {\n                // Convert Headers object into a plain object\n                var kv = {};\n                headers.forEach(function (v, k) { kv[String(k).toLowerCase()] = v; });\n                headers = kv;\n            } else {\n                // Normalize headers field name into lowercase\n                var normalized = {};\n                for (var header in headers) {\n                    if (headers.hasOwnProperty(header)) {\n                        normalized[String(header).toLowerCase()] = headers[header];\n                    }\n                }\n                headers = normalized;\n            }\n        }\n        \n        if (!(this instanceof UAParser)) {\n            return new UAParser(ua, extensions, headers).getResult();\n        }\n\n        var userAgent = typeof ua === TYPEOF.STRING ? ua :                                       // Passed user-agent string\n                                (headers && headers[USER_AGENT] ? headers[USER_AGENT] :     // User-Agent from passed headers\n                                ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent\n                                    EMPTY)),                                                // empty string\n\n            httpUACH = new UACHData(headers, true),\n            regexMap = defaultRegexes,\n\n            createItemFunc = function (itemType) {\n                if (itemType == RESULT) {\n                    return function () {\n                        return new UAItem(itemType, userAgent, regexMap, httpUACH)\n                                    .set('ua', userAgent)\n                                    .set(BROWSER, this.getBrowser())\n                                    .set(CPU, this.getCPU())\n                                    .set(DEVICE, this.getDevice())\n                                    .set(ENGINE, this.getEngine())\n                                    .set(OS, this.getOS())\n                                    .get();\n                    };\n                } else {\n                    return function () {\n                        return new UAItem(itemType, userAgent, regexMap[itemType], httpUACH)\n                                    .parseUA()\n                                    .get();\n                    };\n                }\n            };\n            \n        // public methods\n        setProps.call(this, [\n            ['getBrowser', createItemFunc(BROWSER)],\n            ['getCPU', createItemFunc(CPU)],\n            ['getDevice', createItemFunc(DEVICE)],\n            ['getEngine', createItemFunc(ENGINE)],\n            ['getOS', createItemFunc(OS)],\n            ['getResult', createItemFunc(RESULT)],\n            ['getUA', function () { return userAgent; }],\n            ['setUA', function (ua) {\n                if (isString(ua)) userAgent = trim(ua, UA_MAX_LENGTH);\n                return this;\n            }],\n            ['useExtension', function (exts) {\n                if (exts) regexMap = extend(regexMap, exts);\n                return this;\n            }]\n        ])\n        .setUA(userAgent)\n        .useExtension(extensions);\n\n        return this;\n    }\n\n    UAParser.VERSION = LIBVERSION;\n    UAParser.BROWSER =  enumerize([NAME, VERSION, MAJOR, TYPE]);\n    UAParser.CPU = enumerize([ARCHITECTURE]);\n    UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n    UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n    export {UAParser};","import { isTauri } from '@tauri-apps/api/core';\nimport { type as osType } from '@tauri-apps/plugin-os';\nimport { UAParser } from 'ua-parser-js';\n\nexport const ua = new UAParser(window.navigator.userAgent).getResult();\n\nlet tauriOSResolved = false;\nlet tauriOSValue: string | undefined;\n\nfunction getTauriOS(): string | undefined {\n  if (!tauriOSResolved) {\n    tauriOSResolved = true;\n    if (isTauri()) {\n      try {\n        tauriOSValue = osType();\n      } catch {\n        tauriOSValue = undefined;\n      }\n    }\n  }\n  return tauriOSValue;\n}\n\nconst MOBILE_TAURI_OS = ['android', 'ios'] as const;\nconst DESKTOP_TAURI_OS = ['linux', 'macos', 'windows'] as const;\n\nexport function isMobileOrTablet(): boolean {\n  const tauriOS = getTauriOS();\n  if (tauriOS && (MOBILE_TAURI_OS as readonly string[]).includes(tauriOS)) return true;\n  if (tauriOS && (DESKTOP_TAURI_OS as readonly string[]).includes(tauriOS)) return false;\n\n  const { os, device } = ua;\n  if (device.type === 'mobile' || device.type === 'tablet') return true;\n  if (os.name === 'Android' || os.name === 'iOS') return true;\n  return false;\n}\n\nexport function isMacOS(): boolean {\n  return ua.os.name === 'Mac OS' || ua.os.name === 'macOS';\n}\n\nexport function iosApp(): boolean {\n  return getTauriOS() === 'ios';\n}\n\nexport function isNightly(): boolean {\n  return SABLE_BUILD_FLAVOR === 'dev';\n}\n\nexport function versionLabel(opts?: { includeNightly?: boolean }): string {\n  const dev = (opts?.includeNightly ?? true) && isNightly() ? '-dev' : '';\n  const hash = BUILD_HASH ? ` (${BUILD_HASH})` : '';\n  return `v${APP_VERSION}${dev}${hash}`;\n}\n\nexport function hasServiceWorker(): boolean {\n  return 'serviceWorker' in navigator && !isTauri();\n}\n\nexport type DesktopTauriPlatform = (typeof DESKTOP_TAURI_OS)[number];\n\nexport function getDesktopTauriPlatform(): DesktopTauriPlatform | undefined {\n  const tauriOS = getTauriOS();\n  return (DESKTOP_TAURI_OS as readonly string[]).includes(tauriOS ?? '')\n    ? (tauriOS as DesktopTauriPlatform)\n    : undefined;\n}\n\nexport function isDesktopTauri(): boolean {\n  return getDesktopTauriPlatform() !== undefined;\n}\n\nexport function isDesktopUpdaterEnabled(): boolean {\n  return DESKTOP_UPDATER_ENABLED;\n}\n\nexport function isMobileTauri(): boolean {\n  const tauriOS = getTauriOS();\n  return tauriOS === 'ios' || tauriOS === 'android';\n}\n\nexport function isAndroidTauri(): boolean {\n  return getTauriOS() === 'android';\n}\n\nexport function isWebKitGtk(): boolean {\n  return getTauriOS() === 'linux' && !/Chrome\\//.test(window.navigator.userAgent);\n}\n\n// wry forces no-store on Android custom-protocol responses (RustWebViewClient.kt) and CEF does\n// the same; WKWebView, WebView2 and WebKitGTK pass it through.\nexport function webviewStripsCustomProtocolCache(): boolean {\n  const tauriOS = getTauriOS();\n  if (tauriOS === 'android') return true;\n  return tauriOS === 'linux' && !isWebKitGtk();\n}\n\nexport function hasControllingServiceWorker(): boolean {\n  return hasServiceWorker() && navigator.serviceWorker.controller !== null;\n}\n\nexport function getAppOrigin(): string {\n  if (\n    isTauri() ||\n    (typeof window !== 'undefined' && window.location.hostname === 'tauri.localhost')\n  ) {\n    return 'https://app.sable.moe';\n  }\n  return window.location.origin === 'null'\n    ? `${window.location.protocol}//${window.location.host}`\n    : window.location.origin;\n}\n\n// Runtime origin of the current window. getAppOrigin() returns the canonical\n// app URL on Tauri, which does not match the parent frame — use this for\n// widget parentUrl / postMessage targetOrigin.\nexport function getWindowOrigin(): string {\n  return window.location.origin === 'null'\n    ? `${window.location.protocol}//${window.location.host}`\n    : window.location.origin;\n}\n\ntype FormFactor = 'Web' | 'Desktop' | 'Mobile';\n\n// Display names for every known Tauri OS value. Kept exhaustive (rather than relying on capitalize() as a silent fallback) so a new OS is a visible gap.\nconst TAURI_OS_DISPLAY_NAMES: Record<string, string> = {\n  linux: 'Linux',\n  macos: 'macOS',\n  windows: 'Windows',\n  android: 'Android',\n  ios: 'iOS',\n};\n\nfunction capitalize(s: string): string {\n  return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\nfunction normalizeOSName(os: string): string {\n  return os === 'Mac OS' ? 'macOS' : os;\n}\n\nfunction variantLabel(): string {\n  return isNightly() ? ' (Nightly)' : '';\n}\n\nfunction formFactor(): FormFactor {\n  if (!isTauri()) return 'Web';\n  const tauriOS = getTauriOS();\n  if (tauriOS && (MOBILE_TAURI_OS as readonly string[]).includes(tauriOS)) return 'Mobile';\n  return 'Desktop';\n}\n\nfunction osSpec(): string {\n  if (!isTauri()) {\n    const browser = ua.browser.name;\n    const os = ua.os.name;\n    if (browser && os) return `${browser} for ${normalizeOSName(os)}`;\n    if (browser) return browser;\n    if (os) return normalizeOSName(os);\n    return 'Web';\n  }\n  const tauriOS = getTauriOS();\n  if (tauriOS) return TAURI_OS_DISPLAY_NAMES[tauriOS] ?? capitalize(tauriOS);\n  const os = ua.os.name;\n  return os ? normalizeOSName(os) : 'Desktop';\n}\n\nexport function deviceDisplayName(): string {\n  return `${SABLE_PRODUCT_NAME} ${formFactor()}${variantLabel()} on ${osSpec()}`;\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}