{"version":3,"file":"responsiveMode-Cfvay2Ai.js","sources":["../../../node_modules/bowser/src/constants.js","../../../node_modules/bowser/src/utils.js","../../../node_modules/bowser/src/parser-browsers.js","../../../node_modules/bowser/src/parser-os.js","../../../node_modules/bowser/src/parser-platforms.js","../../../node_modules/bowser/src/parser-engines.js","../../../node_modules/bowser/src/parser.js","../../../node_modules/bowser/src/bowser.js","../../../app/javascript/utils/responsiveMode.js"],"sourcesContent":["// NOTE: this list must be up-to-date with browsers listed in\n// test/acceptance/useragentstrings.yml\nexport const BROWSER_ALIASES_MAP = {\n 'Amazon Silk': 'amazon_silk',\n 'Android Browser': 'android',\n Bada: 'bada',\n BlackBerry: 'blackberry',\n Chrome: 'chrome',\n Chromium: 'chromium',\n Electron: 'electron',\n Epiphany: 'epiphany',\n Firefox: 'firefox',\n Focus: 'focus',\n Generic: 'generic',\n 'Google Search': 'google_search',\n Googlebot: 'googlebot',\n 'Internet Explorer': 'ie',\n 'K-Meleon': 'k_meleon',\n Maxthon: 'maxthon',\n 'Microsoft Edge': 'edge',\n 'MZ Browser': 'mz',\n 'NAVER Whale Browser': 'naver',\n Opera: 'opera',\n 'Opera Coast': 'opera_coast',\n PhantomJS: 'phantomjs',\n Puffin: 'puffin',\n QupZilla: 'qupzilla',\n QQ: 'qq',\n QQLite: 'qqlite',\n Safari: 'safari',\n Sailfish: 'sailfish',\n 'Samsung Internet for Android': 'samsung_internet',\n SeaMonkey: 'seamonkey',\n Sleipnir: 'sleipnir',\n Swing: 'swing',\n Tizen: 'tizen',\n 'UC Browser': 'uc',\n Vivaldi: 'vivaldi',\n 'WebOS Browser': 'webos',\n WeChat: 'wechat',\n 'Yandex Browser': 'yandex',\n Roku: 'roku',\n};\n\nexport const BROWSER_MAP = {\n amazon_silk: 'Amazon Silk',\n android: 'Android Browser',\n bada: 'Bada',\n blackberry: 'BlackBerry',\n chrome: 'Chrome',\n chromium: 'Chromium',\n electron: 'Electron',\n epiphany: 'Epiphany',\n firefox: 'Firefox',\n focus: 'Focus',\n generic: 'Generic',\n googlebot: 'Googlebot',\n google_search: 'Google Search',\n ie: 'Internet Explorer',\n k_meleon: 'K-Meleon',\n maxthon: 'Maxthon',\n edge: 'Microsoft Edge',\n mz: 'MZ Browser',\n naver: 'NAVER Whale Browser',\n opera: 'Opera',\n opera_coast: 'Opera Coast',\n phantomjs: 'PhantomJS',\n puffin: 'Puffin',\n qupzilla: 'QupZilla',\n qq: 'QQ Browser',\n qqlite: 'QQ Browser Lite',\n safari: 'Safari',\n sailfish: 'Sailfish',\n samsung_internet: 'Samsung Internet for Android',\n seamonkey: 'SeaMonkey',\n sleipnir: 'Sleipnir',\n swing: 'Swing',\n tizen: 'Tizen',\n uc: 'UC Browser',\n vivaldi: 'Vivaldi',\n webos: 'WebOS Browser',\n wechat: 'WeChat',\n yandex: 'Yandex Browser',\n};\n\nexport const PLATFORMS_MAP = {\n tablet: 'tablet',\n mobile: 'mobile',\n desktop: 'desktop',\n tv: 'tv',\n};\n\nexport const OS_MAP = {\n WindowsPhone: 'Windows Phone',\n Windows: 'Windows',\n MacOS: 'macOS',\n iOS: 'iOS',\n Android: 'Android',\n WebOS: 'WebOS',\n BlackBerry: 'BlackBerry',\n Bada: 'Bada',\n Tizen: 'Tizen',\n Linux: 'Linux',\n ChromeOS: 'Chrome OS',\n PlayStation4: 'PlayStation 4',\n Roku: 'Roku',\n};\n\nexport const ENGINE_MAP = {\n EdgeHTML: 'EdgeHTML',\n Blink: 'Blink',\n Trident: 'Trident',\n Presto: 'Presto',\n Gecko: 'Gecko',\n WebKit: 'WebKit',\n};\n","import { BROWSER_MAP, BROWSER_ALIASES_MAP } from './constants.js';\n\nexport default class Utils {\n /**\n * Get first matched item for a string\n * @param {RegExp} regexp\n * @param {String} ua\n * @return {Array|{index: number, input: string}|*|boolean|string}\n */\n static getFirstMatch(regexp, ua) {\n const match = ua.match(regexp);\n return (match && match.length > 0 && match[1]) || '';\n }\n\n /**\n * Get second matched item for a string\n * @param regexp\n * @param {String} ua\n * @return {Array|{index: number, input: string}|*|boolean|string}\n */\n static getSecondMatch(regexp, ua) {\n const match = ua.match(regexp);\n return (match && match.length > 1 && match[2]) || '';\n }\n\n /**\n * Match a regexp and return a constant or undefined\n * @param {RegExp} regexp\n * @param {String} ua\n * @param {*} _const Any const that will be returned if regexp matches the string\n * @return {*}\n */\n static matchAndReturnConst(regexp, ua, _const) {\n if (regexp.test(ua)) {\n return _const;\n }\n return void (0);\n }\n\n static getWindowsVersionName(version) {\n switch (version) {\n case 'NT': return 'NT';\n case 'XP': return 'XP';\n case 'NT 5.0': return '2000';\n case 'NT 5.1': return 'XP';\n case 'NT 5.2': return '2003';\n case 'NT 6.0': return 'Vista';\n case 'NT 6.1': return '7';\n case 'NT 6.2': return '8';\n case 'NT 6.3': return '8.1';\n case 'NT 10.0': return '10';\n default: return undefined;\n }\n }\n\n /**\n * Get macOS version name\n * 10.5 - Leopard\n * 10.6 - Snow Leopard\n * 10.7 - Lion\n * 10.8 - Mountain Lion\n * 10.9 - Mavericks\n * 10.10 - Yosemite\n * 10.11 - El Capitan\n * 10.12 - Sierra\n * 10.13 - High Sierra\n * 10.14 - Mojave\n * 10.15 - Catalina\n *\n * @example\n * getMacOSVersionName(\"10.14\") // 'Mojave'\n *\n * @param {string} version\n * @return {string} versionName\n */\n static getMacOSVersionName(version) {\n const v = version.split('.').splice(0, 2).map(s => parseInt(s, 10) || 0);\n v.push(0);\n if (v[0] !== 10) return undefined;\n switch (v[1]) {\n case 5: return 'Leopard';\n case 6: return 'Snow Leopard';\n case 7: return 'Lion';\n case 8: return 'Mountain Lion';\n case 9: return 'Mavericks';\n case 10: return 'Yosemite';\n case 11: return 'El Capitan';\n case 12: return 'Sierra';\n case 13: return 'High Sierra';\n case 14: return 'Mojave';\n case 15: return 'Catalina';\n default: return undefined;\n }\n }\n\n /**\n * Get Android version name\n * 1.5 - Cupcake\n * 1.6 - Donut\n * 2.0 - Eclair\n * 2.1 - Eclair\n * 2.2 - Froyo\n * 2.x - Gingerbread\n * 3.x - Honeycomb\n * 4.0 - Ice Cream Sandwich\n * 4.1 - Jelly Bean\n * 4.4 - KitKat\n * 5.x - Lollipop\n * 6.x - Marshmallow\n * 7.x - Nougat\n * 8.x - Oreo\n * 9.x - Pie\n *\n * @example\n * getAndroidVersionName(\"7.0\") // 'Nougat'\n *\n * @param {string} version\n * @return {string} versionName\n */\n static getAndroidVersionName(version) {\n const v = version.split('.').splice(0, 2).map(s => parseInt(s, 10) || 0);\n v.push(0);\n if (v[0] === 1 && v[1] < 5) return undefined;\n if (v[0] === 1 && v[1] < 6) return 'Cupcake';\n if (v[0] === 1 && v[1] >= 6) return 'Donut';\n if (v[0] === 2 && v[1] < 2) return 'Eclair';\n if (v[0] === 2 && v[1] === 2) return 'Froyo';\n if (v[0] === 2 && v[1] > 2) return 'Gingerbread';\n if (v[0] === 3) return 'Honeycomb';\n if (v[0] === 4 && v[1] < 1) return 'Ice Cream Sandwich';\n if (v[0] === 4 && v[1] < 4) return 'Jelly Bean';\n if (v[0] === 4 && v[1] >= 4) return 'KitKat';\n if (v[0] === 5) return 'Lollipop';\n if (v[0] === 6) return 'Marshmallow';\n if (v[0] === 7) return 'Nougat';\n if (v[0] === 8) return 'Oreo';\n if (v[0] === 9) return 'Pie';\n return undefined;\n }\n\n /**\n * Get version precisions count\n *\n * @example\n * getVersionPrecision(\"1.10.3\") // 3\n *\n * @param {string} version\n * @return {number}\n */\n static getVersionPrecision(version) {\n return version.split('.').length;\n }\n\n /**\n * Calculate browser version weight\n *\n * @example\n * compareVersions('1.10.2.1', '1.8.2.1.90') // 1\n * compareVersions('1.010.2.1', '1.09.2.1.90'); // 1\n * compareVersions('1.10.2.1', '1.10.2.1'); // 0\n * compareVersions('1.10.2.1', '1.0800.2'); // -1\n * compareVersions('1.10.2.1', '1.10', true); // 0\n *\n * @param {String} versionA versions versions to compare\n * @param {String} versionB versions versions to compare\n * @param {boolean} [isLoose] enable loose comparison\n * @return {Number} comparison result: -1 when versionA is lower,\n * 1 when versionA is bigger, 0 when both equal\n */\n /* eslint consistent-return: 1 */\n static compareVersions(versionA, versionB, isLoose = false) {\n // 1) get common precision for both versions, for example for \"10.0\" and \"9\" it should be 2\n const versionAPrecision = Utils.getVersionPrecision(versionA);\n const versionBPrecision = Utils.getVersionPrecision(versionB);\n\n let precision = Math.max(versionAPrecision, versionBPrecision);\n let lastPrecision = 0;\n\n const chunks = Utils.map([versionA, versionB], (version) => {\n const delta = precision - Utils.getVersionPrecision(version);\n\n // 2) \"9\" -> \"9.0\" (for precision = 2)\n const _version = version + new Array(delta + 1).join('.0');\n\n // 3) \"9.0\" -> [\"000000000\"\", \"000000009\"]\n return Utils.map(_version.split('.'), chunk => new Array(20 - chunk.length).join('0') + chunk).reverse();\n });\n\n // adjust precision for loose comparison\n if (isLoose) {\n lastPrecision = precision - Math.min(versionAPrecision, versionBPrecision);\n }\n\n // iterate in reverse order by reversed chunks array\n precision -= 1;\n while (precision >= lastPrecision) {\n // 4) compare: \"000000009\" > \"000000010\" = false (but \"9\" > \"10\" = true)\n if (chunks[0][precision] > chunks[1][precision]) {\n return 1;\n }\n\n if (chunks[0][precision] === chunks[1][precision]) {\n if (precision === lastPrecision) {\n // all version chunks are same\n return 0;\n }\n\n precision -= 1;\n } else if (chunks[0][precision] < chunks[1][precision]) {\n return -1;\n }\n }\n\n return undefined;\n }\n\n /**\n * Array::map polyfill\n *\n * @param {Array} arr\n * @param {Function} iterator\n * @return {Array}\n */\n static map(arr, iterator) {\n const result = [];\n let i;\n if (Array.prototype.map) {\n return Array.prototype.map.call(arr, iterator);\n }\n for (i = 0; i < arr.length; i += 1) {\n result.push(iterator(arr[i]));\n }\n return result;\n }\n\n /**\n * Array::find polyfill\n *\n * @param {Array} arr\n * @param {Function} predicate\n * @return {Array}\n */\n static find(arr, predicate) {\n let i;\n let l;\n if (Array.prototype.find) {\n return Array.prototype.find.call(arr, predicate);\n }\n for (i = 0, l = arr.length; i < l; i += 1) {\n const value = arr[i];\n if (predicate(value, i)) {\n return value;\n }\n }\n return undefined;\n }\n\n /**\n * Object::assign polyfill\n *\n * @param {Object} obj\n * @param {Object} ...objs\n * @return {Object}\n */\n static assign(obj, ...assigners) {\n const result = obj;\n let i;\n let l;\n if (Object.assign) {\n return Object.assign(obj, ...assigners);\n }\n for (i = 0, l = assigners.length; i < l; i += 1) {\n const assigner = assigners[i];\n if (typeof assigner === 'object' && assigner !== null) {\n const keys = Object.keys(assigner);\n keys.forEach((key) => {\n result[key] = assigner[key];\n });\n }\n }\n return obj;\n }\n\n /**\n * Get short version/alias for a browser name\n *\n * @example\n * getBrowserAlias('Microsoft Edge') // edge\n *\n * @param {string} browserName\n * @return {string}\n */\n static getBrowserAlias(browserName) {\n return BROWSER_ALIASES_MAP[browserName];\n }\n\n /**\n * Get short version/alias for a browser name\n *\n * @example\n * getBrowserAlias('edge') // Microsoft Edge\n *\n * @param {string} browserAlias\n * @return {string}\n */\n static getBrowserTypeByAlias(browserAlias) {\n return BROWSER_MAP[browserAlias] || '';\n }\n}\n","/**\n * Browsers' descriptors\n *\n * The idea of descriptors is simple. You should know about them two simple things:\n * 1. Every descriptor has a method or property called `test` and a `describe` method.\n * 2. Order of descriptors is important.\n *\n * More details:\n * 1. Method or property `test` serves as a way to detect whether the UA string\n * matches some certain browser or not. The `describe` method helps to make a result\n * object with params that show some browser-specific things: name, version, etc.\n * 2. Order of descriptors is important because a Parser goes through them one by one\n * in course. For example, if you insert Chrome's descriptor as the first one,\n * more then a half of browsers will be described as Chrome, because they will pass\n * the Chrome descriptor's test.\n *\n * Descriptor's `test` could be a property with an array of RegExps, where every RegExp\n * will be applied to a UA string to test it whether it matches or not.\n * If a descriptor has two or more regexps in the `test` array it tests them one by one\n * with a logical sum operation. Parser stops if it has found any RegExp that matches the UA.\n *\n * Or `test` could be a method. In that case it gets a Parser instance and should\n * return true/false to get the Parser know if this browser descriptor matches the UA or not.\n */\n\nimport Utils from './utils.js';\n\nconst commonVersionIdentifier = /version\\/(\\d+(\\.?_?\\d+)+)/i;\n\nconst browsersList = [\n /* Googlebot */\n {\n test: [/googlebot/i],\n describe(ua) {\n const browser = {\n name: 'Googlebot',\n };\n const version = Utils.getFirstMatch(/googlebot\\/(\\d+(\\.\\d+))/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* Opera < 13.0 */\n {\n test: [/opera/i],\n describe(ua) {\n const browser = {\n name: 'Opera',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:opera)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* Opera > 13.0 */\n {\n test: [/opr\\/|opios/i],\n describe(ua) {\n const browser = {\n name: 'Opera',\n };\n const version = Utils.getFirstMatch(/(?:opr|opios)[\\s/](\\S+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/SamsungBrowser/i],\n describe(ua) {\n const browser = {\n name: 'Samsung Internet for Android',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:SamsungBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/Whale/i],\n describe(ua) {\n const browser = {\n name: 'NAVER Whale Browser',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:whale)[\\s/](\\d+(?:\\.\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/MZBrowser/i],\n describe(ua) {\n const browser = {\n name: 'MZ Browser',\n };\n const version = Utils.getFirstMatch(/(?:MZBrowser)[\\s/](\\d+(?:\\.\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/focus/i],\n describe(ua) {\n const browser = {\n name: 'Focus',\n };\n const version = Utils.getFirstMatch(/(?:focus)[\\s/](\\d+(?:\\.\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/swing/i],\n describe(ua) {\n const browser = {\n name: 'Swing',\n };\n const version = Utils.getFirstMatch(/(?:swing)[\\s/](\\d+(?:\\.\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/coast/i],\n describe(ua) {\n const browser = {\n name: 'Opera Coast',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:coast)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/opt\\/\\d+(?:.?_?\\d+)+/i],\n describe(ua) {\n const browser = {\n name: 'Opera Touch',\n };\n const version = Utils.getFirstMatch(/(?:opt)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/yabrowser/i],\n describe(ua) {\n const browser = {\n name: 'Yandex Browser',\n };\n const version = Utils.getFirstMatch(/(?:yabrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/ucbrowser/i],\n describe(ua) {\n const browser = {\n name: 'UC Browser',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:ucbrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/Maxthon|mxios/i],\n describe(ua) {\n const browser = {\n name: 'Maxthon',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:Maxthon|mxios)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/epiphany/i],\n describe(ua) {\n const browser = {\n name: 'Epiphany',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:epiphany)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/puffin/i],\n describe(ua) {\n const browser = {\n name: 'Puffin',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:puffin)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/sleipnir/i],\n describe(ua) {\n const browser = {\n name: 'Sleipnir',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:sleipnir)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/k-meleon/i],\n describe(ua) {\n const browser = {\n name: 'K-Meleon',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:k-meleon)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/micromessenger/i],\n describe(ua) {\n const browser = {\n name: 'WeChat',\n };\n const version = Utils.getFirstMatch(/(?:micromessenger)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/qqbrowser/i],\n describe(ua) {\n const browser = {\n name: (/qqbrowserlite/i).test(ua) ? 'QQ Browser Lite' : 'QQ Browser',\n };\n const version = Utils.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/msie|trident/i],\n describe(ua) {\n const browser = {\n name: 'Internet Explorer',\n };\n const version = Utils.getFirstMatch(/(?:msie |rv:)(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/\\sedg\\//i],\n describe(ua) {\n const browser = {\n name: 'Microsoft Edge',\n };\n\n const version = Utils.getFirstMatch(/\\sedg\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/edg([ea]|ios)/i],\n describe(ua) {\n const browser = {\n name: 'Microsoft Edge',\n };\n\n const version = Utils.getSecondMatch(/edg([ea]|ios)\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/vivaldi/i],\n describe(ua) {\n const browser = {\n name: 'Vivaldi',\n };\n const version = Utils.getFirstMatch(/vivaldi\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/seamonkey/i],\n describe(ua) {\n const browser = {\n name: 'SeaMonkey',\n };\n const version = Utils.getFirstMatch(/seamonkey\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/sailfish/i],\n describe(ua) {\n const browser = {\n name: 'Sailfish',\n };\n\n const version = Utils.getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/silk/i],\n describe(ua) {\n const browser = {\n name: 'Amazon Silk',\n };\n const version = Utils.getFirstMatch(/silk\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/phantom/i],\n describe(ua) {\n const browser = {\n name: 'PhantomJS',\n };\n const version = Utils.getFirstMatch(/phantomjs\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/slimerjs/i],\n describe(ua) {\n const browser = {\n name: 'SlimerJS',\n };\n const version = Utils.getFirstMatch(/slimerjs\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/blackberry|\\bbb\\d+/i, /rim\\stablet/i],\n describe(ua) {\n const browser = {\n name: 'BlackBerry',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/blackberry[\\d]+\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/(web|hpw)[o0]s/i],\n describe(ua) {\n const browser = {\n name: 'WebOS Browser',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/w(?:eb)?[o0]sbrowser\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/bada/i],\n describe(ua) {\n const browser = {\n name: 'Bada',\n };\n const version = Utils.getFirstMatch(/dolfin\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/tizen/i],\n describe(ua) {\n const browser = {\n name: 'Tizen',\n };\n const version = Utils.getFirstMatch(/(?:tizen\\s?)?browser\\/(\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/qupzilla/i],\n describe(ua) {\n const browser = {\n name: 'QupZilla',\n };\n const version = Utils.getFirstMatch(/(?:qupzilla)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/firefox|iceweasel|fxios/i],\n describe(ua) {\n const browser = {\n name: 'Firefox',\n };\n const version = Utils.getFirstMatch(/(?:firefox|iceweasel|fxios)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/electron/i],\n describe(ua) {\n const browser = {\n name: 'Electron',\n };\n const version = Utils.getFirstMatch(/(?:electron)\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/MiuiBrowser/i],\n describe(ua) {\n const browser = {\n name: 'Miui',\n };\n const version = Utils.getFirstMatch(/(?:MiuiBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/chromium/i],\n describe(ua) {\n const browser = {\n name: 'Chromium',\n };\n const version = Utils.getFirstMatch(/(?:chromium)[\\s/](\\d+(\\.?_?\\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/chrome|crios|crmo/i],\n describe(ua) {\n const browser = {\n name: 'Chrome',\n };\n const version = Utils.getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n {\n test: [/GSA/i],\n describe(ua) {\n const browser = {\n name: 'Google Search',\n };\n const version = Utils.getFirstMatch(/(?:GSA)\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* Android Browser */\n {\n test(parser) {\n const notLikeAndroid = !parser.test(/like android/i);\n const butAndroid = parser.test(/android/i);\n return notLikeAndroid && butAndroid;\n },\n describe(ua) {\n const browser = {\n name: 'Android Browser',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* PlayStation 4 */\n {\n test: [/playstation 4/i],\n describe(ua) {\n const browser = {\n name: 'PlayStation 4',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* Safari */\n {\n test: [/safari|applewebkit/i],\n describe(ua) {\n const browser = {\n name: 'Safari',\n };\n const version = Utils.getFirstMatch(commonVersionIdentifier, ua);\n\n if (version) {\n browser.version = version;\n }\n\n return browser;\n },\n },\n\n /* Something else */\n {\n test: [/.*/i],\n describe(ua) {\n /* Here we try to make sure that there are explicit details about the device\n * in order to decide what regexp exactly we want to apply\n * (as there is a specific decision based on that conclusion)\n */\n const regexpWithoutDeviceSpec = /^(.*)\\/(.*) /;\n const regexpWithDeviceSpec = /^(.*)\\/(.*)[ \\t]\\((.*)/;\n const hasDeviceSpec = ua.search('\\\\(') !== -1;\n const regexp = hasDeviceSpec ? regexpWithDeviceSpec : regexpWithoutDeviceSpec;\n return {\n name: Utils.getFirstMatch(regexp, ua),\n version: Utils.getSecondMatch(regexp, ua),\n };\n },\n },\n];\n\nexport default browsersList;\n","import Utils from './utils.js';\nimport { OS_MAP } from './constants.js';\n\nexport default [\n /* Roku */\n {\n test: [/Roku\\/DVP/],\n describe(ua) {\n const version = Utils.getFirstMatch(/Roku\\/DVP-(\\d+\\.\\d+)/i, ua);\n return {\n name: OS_MAP.Roku,\n version,\n };\n },\n },\n\n /* Windows Phone */\n {\n test: [/windows phone/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i, ua);\n return {\n name: OS_MAP.WindowsPhone,\n version,\n };\n },\n },\n\n /* Windows */\n {\n test: [/windows /i],\n describe(ua) {\n const version = Utils.getFirstMatch(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i, ua);\n const versionName = Utils.getWindowsVersionName(version);\n\n return {\n name: OS_MAP.Windows,\n version,\n versionName,\n };\n },\n },\n\n /* Firefox on iPad */\n {\n test: [/Macintosh(.*?) FxiOS(.*?)\\//],\n describe(ua) {\n const result = {\n name: OS_MAP.iOS,\n };\n const version = Utils.getSecondMatch(/(Version\\/)(\\d[\\d.]+)/, ua);\n if (version) {\n result.version = version;\n }\n return result;\n },\n },\n\n /* macOS */\n {\n test: [/macintosh/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/mac os x (\\d+(\\.?_?\\d+)+)/i, ua).replace(/[_\\s]/g, '.');\n const versionName = Utils.getMacOSVersionName(version);\n\n const os = {\n name: OS_MAP.MacOS,\n version,\n };\n if (versionName) {\n os.versionName = versionName;\n }\n return os;\n },\n },\n\n /* iOS */\n {\n test: [/(ipod|iphone|ipad)/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i, ua).replace(/[_\\s]/g, '.');\n\n return {\n name: OS_MAP.iOS,\n version,\n };\n },\n },\n\n /* Android */\n {\n test(parser) {\n const notLikeAndroid = !parser.test(/like android/i);\n const butAndroid = parser.test(/android/i);\n return notLikeAndroid && butAndroid;\n },\n describe(ua) {\n const version = Utils.getFirstMatch(/android[\\s/-](\\d+(\\.\\d+)*)/i, ua);\n const versionName = Utils.getAndroidVersionName(version);\n const os = {\n name: OS_MAP.Android,\n version,\n };\n if (versionName) {\n os.versionName = versionName;\n }\n return os;\n },\n },\n\n /* WebOS */\n {\n test: [/(web|hpw)[o0]s/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/(?:web|hpw)[o0]s\\/(\\d+(\\.\\d+)*)/i, ua);\n const os = {\n name: OS_MAP.WebOS,\n };\n\n if (version && version.length) {\n os.version = version;\n }\n return os;\n },\n },\n\n /* BlackBerry */\n {\n test: [/blackberry|\\bbb\\d+/i, /rim\\stablet/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i, ua)\n || Utils.getFirstMatch(/blackberry\\d+\\/(\\d+([_\\s]\\d+)*)/i, ua)\n || Utils.getFirstMatch(/\\bbb(\\d+)/i, ua);\n\n return {\n name: OS_MAP.BlackBerry,\n version,\n };\n },\n },\n\n /* Bada */\n {\n test: [/bada/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/bada\\/(\\d+(\\.\\d+)*)/i, ua);\n\n return {\n name: OS_MAP.Bada,\n version,\n };\n },\n },\n\n /* Tizen */\n {\n test: [/tizen/i],\n describe(ua) {\n const version = Utils.getFirstMatch(/tizen[/\\s](\\d+(\\.\\d+)*)/i, ua);\n\n return {\n name: OS_MAP.Tizen,\n version,\n };\n },\n },\n\n /* Linux */\n {\n test: [/linux/i],\n describe() {\n return {\n name: OS_MAP.Linux,\n };\n },\n },\n\n /* Chrome OS */\n {\n test: [/CrOS/],\n describe() {\n return {\n name: OS_MAP.ChromeOS,\n };\n },\n },\n\n /* Playstation 4 */\n {\n test: [/PlayStation 4/],\n describe(ua) {\n const version = Utils.getFirstMatch(/PlayStation 4[/\\s](\\d+(\\.\\d+)*)/i, ua);\n return {\n name: OS_MAP.PlayStation4,\n version,\n };\n },\n },\n];\n","import Utils from './utils.js';\nimport { PLATFORMS_MAP } from './constants.js';\n\n/*\n * Tablets go first since usually they have more specific\n * signs to detect.\n */\n\nexport default [\n /* Googlebot */\n {\n test: [/googlebot/i],\n describe() {\n return {\n type: 'bot',\n vendor: 'Google',\n };\n },\n },\n\n /* Huawei */\n {\n test: [/huawei/i],\n describe(ua) {\n const model = Utils.getFirstMatch(/(can-l01)/i, ua) && 'Nova';\n const platform = {\n type: PLATFORMS_MAP.mobile,\n vendor: 'Huawei',\n };\n if (model) {\n platform.model = model;\n }\n return platform;\n },\n },\n\n /* Nexus Tablet */\n {\n test: [/nexus\\s*(?:7|8|9|10).*/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: 'Nexus',\n };\n },\n },\n\n /* iPad */\n {\n test: [/ipad/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: 'Apple',\n model: 'iPad',\n };\n },\n },\n\n /* Firefox on iPad */\n {\n test: [/Macintosh(.*?) FxiOS(.*?)\\//],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: 'Apple',\n model: 'iPad',\n };\n },\n },\n\n /* Amazon Kindle Fire */\n {\n test: [/kftt build/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: 'Amazon',\n model: 'Kindle Fire HD 7',\n };\n },\n },\n\n /* Another Amazon Tablet with Silk */\n {\n test: [/silk/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n vendor: 'Amazon',\n };\n },\n },\n\n /* Tablet */\n {\n test: [/tablet(?! pc)/i],\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n };\n },\n },\n\n /* iPod/iPhone */\n {\n test(parser) {\n const iDevice = parser.test(/ipod|iphone/i);\n const likeIDevice = parser.test(/like (ipod|iphone)/i);\n return iDevice && !likeIDevice;\n },\n describe(ua) {\n const model = Utils.getFirstMatch(/(ipod|iphone)/i, ua);\n return {\n type: PLATFORMS_MAP.mobile,\n vendor: 'Apple',\n model,\n };\n },\n },\n\n /* Nexus Mobile */\n {\n test: [/nexus\\s*[0-6].*/i, /galaxy nexus/i],\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n vendor: 'Nexus',\n };\n },\n },\n\n /* Mobile */\n {\n test: [/[^-]mobi/i],\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n };\n },\n },\n\n /* BlackBerry */\n {\n test(parser) {\n return parser.getBrowserName(true) === 'blackberry';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n vendor: 'BlackBerry',\n };\n },\n },\n\n /* Bada */\n {\n test(parser) {\n return parser.getBrowserName(true) === 'bada';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n };\n },\n },\n\n /* Windows Phone */\n {\n test(parser) {\n return parser.getBrowserName() === 'windows phone';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n vendor: 'Microsoft',\n };\n },\n },\n\n /* Android Tablet */\n {\n test(parser) {\n const osMajorVersion = Number(String(parser.getOSVersion()).split('.')[0]);\n return parser.getOSName(true) === 'android' && (osMajorVersion >= 3);\n },\n describe() {\n return {\n type: PLATFORMS_MAP.tablet,\n };\n },\n },\n\n /* Android Mobile */\n {\n test(parser) {\n return parser.getOSName(true) === 'android';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.mobile,\n };\n },\n },\n\n /* desktop */\n {\n test(parser) {\n return parser.getOSName(true) === 'macos';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.desktop,\n vendor: 'Apple',\n };\n },\n },\n\n /* Windows */\n {\n test(parser) {\n return parser.getOSName(true) === 'windows';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.desktop,\n };\n },\n },\n\n /* Linux */\n {\n test(parser) {\n return parser.getOSName(true) === 'linux';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.desktop,\n };\n },\n },\n\n /* PlayStation 4 */\n {\n test(parser) {\n return parser.getOSName(true) === 'playstation 4';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.tv,\n };\n },\n },\n\n /* Roku */\n {\n test(parser) {\n return parser.getOSName(true) === 'roku';\n },\n describe() {\n return {\n type: PLATFORMS_MAP.tv,\n };\n },\n },\n];\n","import Utils from './utils.js';\nimport { ENGINE_MAP } from './constants.js';\n\n/*\n * More specific goes first\n */\nexport default [\n /* EdgeHTML */\n {\n test(parser) {\n return parser.getBrowserName(true) === 'microsoft edge';\n },\n describe(ua) {\n const isBlinkBased = /\\sedg\\//i.test(ua);\n\n // return blink if it's blink-based one\n if (isBlinkBased) {\n return {\n name: ENGINE_MAP.Blink,\n };\n }\n\n // otherwise match the version and return EdgeHTML\n const version = Utils.getFirstMatch(/edge\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n return {\n name: ENGINE_MAP.EdgeHTML,\n version,\n };\n },\n },\n\n /* Trident */\n {\n test: [/trident/i],\n describe(ua) {\n const engine = {\n name: ENGINE_MAP.Trident,\n };\n\n const version = Utils.getFirstMatch(/trident\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n engine.version = version;\n }\n\n return engine;\n },\n },\n\n /* Presto */\n {\n test(parser) {\n return parser.test(/presto/i);\n },\n describe(ua) {\n const engine = {\n name: ENGINE_MAP.Presto,\n };\n\n const version = Utils.getFirstMatch(/presto\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n engine.version = version;\n }\n\n return engine;\n },\n },\n\n /* Gecko */\n {\n test(parser) {\n const isGecko = parser.test(/gecko/i);\n const likeGecko = parser.test(/like gecko/i);\n return isGecko && !likeGecko;\n },\n describe(ua) {\n const engine = {\n name: ENGINE_MAP.Gecko,\n };\n\n const version = Utils.getFirstMatch(/gecko\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n engine.version = version;\n }\n\n return engine;\n },\n },\n\n /* Blink */\n {\n test: [/(apple)?webkit\\/537\\.36/i],\n describe() {\n return {\n name: ENGINE_MAP.Blink,\n };\n },\n },\n\n /* WebKit */\n {\n test: [/(apple)?webkit/i],\n describe(ua) {\n const engine = {\n name: ENGINE_MAP.WebKit,\n };\n\n const version = Utils.getFirstMatch(/webkit\\/(\\d+(\\.?_?\\d+)+)/i, ua);\n\n if (version) {\n engine.version = version;\n }\n\n return engine;\n },\n },\n];\n","import browserParsersList from './parser-browsers.js';\nimport osParsersList from './parser-os.js';\nimport platformParsersList from './parser-platforms.js';\nimport enginesParsersList from './parser-engines.js';\nimport Utils from './utils.js';\n\n/**\n * The main class that arranges the whole parsing process.\n */\nclass Parser {\n /**\n * Create instance of Parser\n *\n * @param {String} UA User-Agent string\n * @param {Boolean} [skipParsing=false] parser can skip parsing in purpose of performance\n * improvements if you need to make a more particular parsing\n * like {@link Parser#parseBrowser} or {@link Parser#parsePlatform}\n *\n * @throw {Error} in case of empty UA String\n *\n * @constructor\n */\n constructor(UA, skipParsing = false) {\n if (UA === void (0) || UA === null || UA === '') {\n throw new Error(\"UserAgent parameter can't be empty\");\n }\n\n this._ua = UA;\n\n /**\n * @typedef ParsedResult\n * @property {Object} browser\n * @property {String|undefined} [browser.name]\n * Browser name, like `\"Chrome\"` or `\"Internet Explorer\"`\n * @property {String|undefined} [browser.version] Browser version as a String `\"12.01.45334.10\"`\n * @property {Object} os\n * @property {String|undefined} [os.name] OS name, like `\"Windows\"` or `\"macOS\"`\n * @property {String|undefined} [os.version] OS version, like `\"NT 5.1\"` or `\"10.11.1\"`\n * @property {String|undefined} [os.versionName] OS name, like `\"XP\"` or `\"High Sierra\"`\n * @property {Object} platform\n * @property {String|undefined} [platform.type]\n * platform type, can be either `\"desktop\"`, `\"tablet\"` or `\"mobile\"`\n * @property {String|undefined} [platform.vendor] Vendor of the device,\n * like `\"Apple\"` or `\"Samsung\"`\n * @property {String|undefined} [platform.model] Device model,\n * like `\"iPhone\"` or `\"Kindle Fire HD 7\"`\n * @property {Object} engine\n * @property {String|undefined} [engine.name]\n * Can be any of this: `WebKit`, `Blink`, `Gecko`, `Trident`, `Presto`, `EdgeHTML`\n * @property {String|undefined} [engine.version] String version of the engine\n */\n this.parsedResult = {};\n\n if (skipParsing !== true) {\n this.parse();\n }\n }\n\n /**\n * Get UserAgent string of current Parser instance\n * @return {String} User-Agent String of the current object\n *\n * @public\n */\n getUA() {\n return this._ua;\n }\n\n /**\n * Test a UA string for a regexp\n * @param {RegExp} regex\n * @return {Boolean}\n */\n test(regex) {\n return regex.test(this._ua);\n }\n\n /**\n * Get parsed browser object\n * @return {Object}\n */\n parseBrowser() {\n this.parsedResult.browser = {};\n\n const browserDescriptor = Utils.find(browserParsersList, (_browser) => {\n if (typeof _browser.test === 'function') {\n return _browser.test(this);\n }\n\n if (_browser.test instanceof Array) {\n return _browser.test.some(condition => this.test(condition));\n }\n\n throw new Error(\"Browser's test function is not valid\");\n });\n\n if (browserDescriptor) {\n this.parsedResult.browser = browserDescriptor.describe(this.getUA());\n }\n\n return this.parsedResult.browser;\n }\n\n /**\n * Get parsed browser object\n * @return {Object}\n *\n * @public\n */\n getBrowser() {\n if (this.parsedResult.browser) {\n return this.parsedResult.browser;\n }\n\n return this.parseBrowser();\n }\n\n /**\n * Get browser's name\n * @return {String} Browser's name or an empty string\n *\n * @public\n */\n getBrowserName(toLowerCase) {\n if (toLowerCase) {\n return String(this.getBrowser().name).toLowerCase() || '';\n }\n return this.getBrowser().name || '';\n }\n\n\n /**\n * Get browser's version\n * @return {String} version of browser\n *\n * @public\n */\n getBrowserVersion() {\n return this.getBrowser().version;\n }\n\n /**\n * Get OS\n * @return {Object}\n *\n * @example\n * this.getOS();\n * {\n * name: 'macOS',\n * version: '10.11.12'\n * }\n */\n getOS() {\n if (this.parsedResult.os) {\n return this.parsedResult.os;\n }\n\n return this.parseOS();\n }\n\n /**\n * Parse OS and save it to this.parsedResult.os\n * @return {*|{}}\n */\n parseOS() {\n this.parsedResult.os = {};\n\n const os = Utils.find(osParsersList, (_os) => {\n if (typeof _os.test === 'function') {\n return _os.test(this);\n }\n\n if (_os.test instanceof Array) {\n return _os.test.some(condition => this.test(condition));\n }\n\n throw new Error(\"Browser's test function is not valid\");\n });\n\n if (os) {\n this.parsedResult.os = os.describe(this.getUA());\n }\n\n return this.parsedResult.os;\n }\n\n /**\n * Get OS name\n * @param {Boolean} [toLowerCase] return lower-cased value\n * @return {String} name of the OS — macOS, Windows, Linux, etc.\n */\n getOSName(toLowerCase) {\n const { name } = this.getOS();\n\n if (toLowerCase) {\n return String(name).toLowerCase() || '';\n }\n\n return name || '';\n }\n\n /**\n * Get OS version\n * @return {String} full version with dots ('10.11.12', '5.6', etc)\n */\n getOSVersion() {\n return this.getOS().version;\n }\n\n /**\n * Get parsed platform\n * @return {{}}\n */\n getPlatform() {\n if (this.parsedResult.platform) {\n return this.parsedResult.platform;\n }\n\n return this.parsePlatform();\n }\n\n /**\n * Get platform name\n * @param {Boolean} [toLowerCase=false]\n * @return {*}\n */\n getPlatformType(toLowerCase = false) {\n const { type } = this.getPlatform();\n\n if (toLowerCase) {\n return String(type).toLowerCase() || '';\n }\n\n return type || '';\n }\n\n /**\n * Get parsed platform\n * @return {{}}\n */\n parsePlatform() {\n this.parsedResult.platform = {};\n\n const platform = Utils.find(platformParsersList, (_platform) => {\n if (typeof _platform.test === 'function') {\n return _platform.test(this);\n }\n\n if (_platform.test instanceof Array) {\n return _platform.test.some(condition => this.test(condition));\n }\n\n throw new Error(\"Browser's test function is not valid\");\n });\n\n if (platform) {\n this.parsedResult.platform = platform.describe(this.getUA());\n }\n\n return this.parsedResult.platform;\n }\n\n /**\n * Get parsed engine\n * @return {{}}\n */\n getEngine() {\n if (this.parsedResult.engine) {\n return this.parsedResult.engine;\n }\n\n return this.parseEngine();\n }\n\n /**\n * Get engines's name\n * @return {String} Engines's name or an empty string\n *\n * @public\n */\n getEngineName(toLowerCase) {\n if (toLowerCase) {\n return String(this.getEngine().name).toLowerCase() || '';\n }\n return this.getEngine().name || '';\n }\n\n /**\n * Get parsed platform\n * @return {{}}\n */\n parseEngine() {\n this.parsedResult.engine = {};\n\n const engine = Utils.find(enginesParsersList, (_engine) => {\n if (typeof _engine.test === 'function') {\n return _engine.test(this);\n }\n\n if (_engine.test instanceof Array) {\n return _engine.test.some(condition => this.test(condition));\n }\n\n throw new Error(\"Browser's test function is not valid\");\n });\n\n if (engine) {\n this.parsedResult.engine = engine.describe(this.getUA());\n }\n\n return this.parsedResult.engine;\n }\n\n /**\n * Parse full information about the browser\n * @returns {Parser}\n */\n parse() {\n this.parseBrowser();\n this.parseOS();\n this.parsePlatform();\n this.parseEngine();\n\n return this;\n }\n\n /**\n * Get parsed result\n * @return {ParsedResult}\n */\n getResult() {\n return Utils.assign({}, this.parsedResult);\n }\n\n /**\n * Check if parsed browser matches certain conditions\n *\n * @param {Object} checkTree It's one or two layered object,\n * which can include a platform or an OS on the first layer\n * and should have browsers specs on the bottom-laying layer\n *\n * @returns {Boolean|undefined} Whether the browser satisfies the set conditions or not.\n * Returns `undefined` when the browser is no described in the checkTree object.\n *\n * @example\n * const browser = Bowser.getParser(window.navigator.userAgent);\n * if (browser.satisfies({chrome: '>118.01.1322' }))\n * // or with os\n * if (browser.satisfies({windows: { chrome: '>118.01.1322' } }))\n * // or with platforms\n * if (browser.satisfies({desktop: { chrome: '>118.01.1322' } }))\n */\n satisfies(checkTree) {\n const platformsAndOSes = {};\n let platformsAndOSCounter = 0;\n const browsers = {};\n let browsersCounter = 0;\n\n const allDefinitions = Object.keys(checkTree);\n\n allDefinitions.forEach((key) => {\n const currentDefinition = checkTree[key];\n if (typeof currentDefinition === 'string') {\n browsers[key] = currentDefinition;\n browsersCounter += 1;\n } else if (typeof currentDefinition === 'object') {\n platformsAndOSes[key] = currentDefinition;\n platformsAndOSCounter += 1;\n }\n });\n\n if (platformsAndOSCounter > 0) {\n const platformsAndOSNames = Object.keys(platformsAndOSes);\n const OSMatchingDefinition = Utils.find(platformsAndOSNames, name => (this.isOS(name)));\n\n if (OSMatchingDefinition) {\n const osResult = this.satisfies(platformsAndOSes[OSMatchingDefinition]);\n\n if (osResult !== void 0) {\n return osResult;\n }\n }\n\n const platformMatchingDefinition = Utils.find(\n platformsAndOSNames,\n name => (this.isPlatform(name)),\n );\n if (platformMatchingDefinition) {\n const platformResult = this.satisfies(platformsAndOSes[platformMatchingDefinition]);\n\n if (platformResult !== void 0) {\n return platformResult;\n }\n }\n }\n\n if (browsersCounter > 0) {\n const browserNames = Object.keys(browsers);\n const matchingDefinition = Utils.find(browserNames, name => (this.isBrowser(name, true)));\n\n if (matchingDefinition !== void 0) {\n return this.compareVersion(browsers[matchingDefinition]);\n }\n }\n\n return undefined;\n }\n\n /**\n * Check if the browser name equals the passed string\n * @param browserName The string to compare with the browser name\n * @param [includingAlias=false] The flag showing whether alias will be included into comparison\n * @returns {boolean}\n */\n isBrowser(browserName, includingAlias = false) {\n const defaultBrowserName = this.getBrowserName().toLowerCase();\n let browserNameLower = browserName.toLowerCase();\n const alias = Utils.getBrowserTypeByAlias(browserNameLower);\n\n if (includingAlias && alias) {\n browserNameLower = alias.toLowerCase();\n }\n return browserNameLower === defaultBrowserName;\n }\n\n compareVersion(version) {\n let expectedResults = [0];\n let comparableVersion = version;\n let isLoose = false;\n\n const currentBrowserVersion = this.getBrowserVersion();\n\n if (typeof currentBrowserVersion !== 'string') {\n return void 0;\n }\n\n if (version[0] === '>' || version[0] === '<') {\n comparableVersion = version.substr(1);\n if (version[1] === '=') {\n isLoose = true;\n comparableVersion = version.substr(2);\n } else {\n expectedResults = [];\n }\n if (version[0] === '>') {\n expectedResults.push(1);\n } else {\n expectedResults.push(-1);\n }\n } else if (version[0] === '=') {\n comparableVersion = version.substr(1);\n } else if (version[0] === '~') {\n isLoose = true;\n comparableVersion = version.substr(1);\n }\n\n return expectedResults.indexOf(\n Utils.compareVersions(currentBrowserVersion, comparableVersion, isLoose),\n ) > -1;\n }\n\n isOS(osName) {\n return this.getOSName(true) === String(osName).toLowerCase();\n }\n\n isPlatform(platformType) {\n return this.getPlatformType(true) === String(platformType).toLowerCase();\n }\n\n isEngine(engineName) {\n return this.getEngineName(true) === String(engineName).toLowerCase();\n }\n\n /**\n * Is anything? Check if the browser is called \"anything\",\n * the OS called \"anything\" or the platform called \"anything\"\n * @param {String} anything\n * @param [includingAlias=false] The flag showing whether alias will be included into comparison\n * @returns {Boolean}\n */\n is(anything, includingAlias = false) {\n return this.isBrowser(anything, includingAlias) || this.isOS(anything)\n || this.isPlatform(anything);\n }\n\n /**\n * Check if any of the given values satisfies this.is(anything)\n * @param {String[]} anythings\n * @returns {Boolean}\n */\n some(anythings = []) {\n return anythings.some(anything => this.is(anything));\n }\n}\n\nexport default Parser;\n","/*!\n * Bowser - a browser detector\n * https://github.com/lancedikson/bowser\n * MIT License | (c) Dustin Diaz 2012-2015\n * MIT License | (c) Denis Demchenko 2015-2019\n */\nimport Parser from './parser.js';\nimport {\n BROWSER_MAP,\n ENGINE_MAP,\n OS_MAP,\n PLATFORMS_MAP,\n} from './constants.js';\n\n/**\n * Bowser class.\n * Keep it simple as much as it can be.\n * It's supposed to work with collections of {@link Parser} instances\n * rather then solve one-instance problems.\n * All the one-instance stuff is located in Parser class.\n *\n * @class\n * @classdesc Bowser is a static object, that provides an API to the Parsers\n * @hideconstructor\n */\nclass Bowser {\n /**\n * Creates a {@link Parser} instance\n *\n * @param {String} UA UserAgent string\n * @param {Boolean} [skipParsing=false] Will make the Parser postpone parsing until you ask it\n * explicitly. Same as `skipParsing` for {@link Parser}.\n * @returns {Parser}\n * @throws {Error} when UA is not a String\n *\n * @example\n * const parser = Bowser.getParser(window.navigator.userAgent);\n * const result = parser.getResult();\n */\n static getParser(UA, skipParsing = false) {\n if (typeof UA !== 'string') {\n throw new Error('UserAgent should be a string');\n }\n return new Parser(UA, skipParsing);\n }\n\n /**\n * Creates a {@link Parser} instance and runs {@link Parser.getResult} immediately\n *\n * @param UA\n * @return {ParsedResult}\n *\n * @example\n * const result = Bowser.parse(window.navigator.userAgent);\n */\n static parse(UA) {\n return (new Parser(UA)).getResult();\n }\n\n static get BROWSER_MAP() {\n return BROWSER_MAP;\n }\n\n static get ENGINE_MAP() {\n return ENGINE_MAP;\n }\n\n static get OS_MAP() {\n return OS_MAP;\n }\n\n static get PLATFORMS_MAP() {\n return PLATFORMS_MAP;\n }\n}\n\nexport default Bowser;\n","import bowser from \"bowser\";\n\nconst browser = bowser.getParser(window.navigator.userAgent).parsedResult;\n\nexport default () => {\n return (\n [\"mobile\", \"tablet\"].includes(browser.platform.type) ||\n // iPadOS 13+ serves the desktop Safari UA, so we need an additional check\n (navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1)\n );\n};\n"],"names":["BROWSER_ALIASES_MAP","BROWSER_MAP","PLATFORMS_MAP","OS_MAP","ENGINE_MAP","Utils","regexp","ua","match","_const","version","v","s","versionA","versionB","isLoose","versionAPrecision","versionBPrecision","precision","lastPrecision","chunks","delta","_version","chunk","arr","iterator","result","i","predicate","l","value","obj","assigners","assigner","key","browserName","browserAlias","commonVersionIdentifier","browsersList","browser","parser","notLikeAndroid","butAndroid","regexpWithoutDeviceSpec","regexpWithDeviceSpec","osParsersList","versionName","os","platformParsersList","model","platform","iDevice","likeIDevice","osMajorVersion","enginesParsersList","engine","isGecko","likeGecko","Parser","UA","skipParsing","regex","browserDescriptor","browserParsersList","_browser","condition","toLowerCase","_os","name","type","_platform","_engine","checkTree","platformsAndOSes","platformsAndOSCounter","browsers","browsersCounter","currentDefinition","platformsAndOSNames","OSMatchingDefinition","osResult","platformMatchingDefinition","platformResult","browserNames","matchingDefinition","includingAlias","defaultBrowserName","browserNameLower","alias","expectedResults","comparableVersion","currentBrowserVersion","osName","platformType","engineName","anything","anythings","Bowser","bowser","responsiveMode"],"mappings":"AAEO,MAAMA,EAAsB,CACjC,cAAe,cACf,kBAAmB,UACnB,KAAM,OACN,WAAY,aACZ,OAAQ,SACR,SAAU,WACV,SAAU,WACV,SAAU,WACV,QAAS,UACT,MAAO,QACP,QAAS,UACT,gBAAiB,gBACjB,UAAW,YACX,oBAAqB,KACrB,WAAY,WACZ,QAAS,UACT,iBAAkB,OAClB,aAAc,KACd,sBAAuB,QACvB,MAAO,QACP,cAAe,cACf,UAAW,YACX,OAAQ,SACR,SAAU,WACV,GAAI,KACJ,OAAQ,SACR,OAAQ,SACR,SAAU,WACV,+BAAgC,mBAChC,UAAW,YACX,SAAU,WACV,MAAO,QACP,MAAO,QACP,aAAc,KACd,QAAS,UACT,gBAAiB,QACjB,OAAQ,SACR,iBAAkB,SAClB,KAAM,MACR,EAEaC,EAAc,CACzB,YAAa,cACb,QAAS,kBACT,KAAM,OACN,WAAY,aACZ,OAAQ,SACR,SAAU,WACV,SAAU,WACV,SAAU,WACV,QAAS,UACT,MAAO,QACP,QAAS,UACT,UAAW,YACX,cAAe,gBACf,GAAI,oBACJ,SAAU,WACV,QAAS,UACT,KAAM,iBACN,GAAI,aACJ,MAAO,sBACP,MAAO,QACP,YAAa,cACb,UAAW,YACX,OAAQ,SACR,SAAU,WACV,GAAI,aACJ,OAAQ,kBACR,OAAQ,SACR,SAAU,WACV,iBAAkB,+BAClB,UAAW,YACX,SAAU,WACV,MAAO,QACP,MAAO,QACP,GAAI,aACJ,QAAS,UACT,MAAO,gBACP,OAAQ,SACR,OAAQ,gBACV,EAEaC,EAAgB,CAC3B,OAAQ,SACR,OAAQ,SACR,QAAS,UACT,GAAI,IACN,EAEaC,EAAS,CACpB,aAAc,gBACd,QAAS,UACT,MAAO,QACP,IAAK,MACL,QAAS,UACT,MAAO,QACP,WAAY,aACZ,KAAM,OACN,MAAO,QACP,MAAO,QACP,SAAU,YACV,aAAc,gBACd,KAAM,MACR,EAEaC,EAAa,CACxB,SAAU,WACV,MAAO,QACP,QAAS,UACT,OAAQ,SACR,MAAO,QACP,OAAQ,QACV,ECjHe,MAAMC,CAAM,CAOzB,OAAO,cAAcC,EAAQC,EAAI,CAC/B,MAAMC,EAAQD,EAAG,MAAMD,CAAM,EAC7B,OAAQE,GAASA,EAAM,OAAS,GAAKA,EAAM,CAAC,GAAM,EACtD,CAQE,OAAO,eAAeF,EAAQC,EAAI,CAChC,MAAMC,EAAQD,EAAG,MAAMD,CAAM,EAC7B,OAAQE,GAASA,EAAM,OAAS,GAAKA,EAAM,CAAC,GAAM,EACtD,CASE,OAAO,oBAAoBF,EAAQC,EAAIE,EAAQ,CAC7C,GAAIH,EAAO,KAAKC,CAAE,EAChB,OAAOE,CAGb,CAEE,OAAO,sBAAsBC,EAAS,CACpC,OAAQA,EAAO,CACb,IAAK,KAAM,MAAO,KAClB,IAAK,KAAM,MAAO,KAClB,IAAK,SAAU,MAAO,OACtB,IAAK,SAAU,MAAO,KACtB,IAAK,SAAU,MAAO,OACtB,IAAK,SAAU,MAAO,QACtB,IAAK,SAAU,MAAO,IACtB,IAAK,SAAU,MAAO,IACtB,IAAK,SAAU,MAAO,MACtB,IAAK,UAAW,MAAO,KACvB,QAAS,MACf,CACA,CAsBE,OAAO,oBAAoBA,EAAS,CAClC,MAAMC,EAAID,EAAQ,MAAM,GAAG,EAAE,OAAO,EAAG,CAAC,EAAE,IAAIE,GAAK,SAASA,EAAG,EAAE,GAAK,CAAC,EAEvE,GADAD,EAAE,KAAK,CAAC,EACJA,EAAE,CAAC,IAAM,GACb,OAAQA,EAAE,CAAC,EAAC,CACV,IAAK,GAAG,MAAO,UACf,IAAK,GAAG,MAAO,eACf,IAAK,GAAG,MAAO,OACf,IAAK,GAAG,MAAO,gBACf,IAAK,GAAG,MAAO,YACf,IAAK,IAAI,MAAO,WAChB,IAAK,IAAI,MAAO,aAChB,IAAK,IAAI,MAAO,SAChB,IAAK,IAAI,MAAO,cAChB,IAAK,IAAI,MAAO,SAChB,IAAK,IAAI,MAAO,WAChB,QAAS,MACf,CACA,CA0BE,OAAO,sBAAsBD,EAAS,CACpC,MAAMC,EAAID,EAAQ,MAAM,GAAG,EAAE,OAAO,EAAG,CAAC,EAAE,IAAIE,GAAK,SAASA,EAAG,EAAE,GAAK,CAAC,EAEvE,GADAD,EAAE,KAAK,CAAC,EACJ,EAAAA,EAAE,CAAC,IAAM,GAAKA,EAAE,CAAC,EAAI,GACzB,IAAIA,EAAE,CAAC,IAAM,GAAKA,EAAE,CAAC,EAAI,EAAG,MAAO,UACnC,GAAIA,EAAE,CAAC,IAAM,GAAKA,EAAE,CAAC,GAAK,EAAG,MAAO,QACpC,GAAIA,EAAE,CAAC,IAAM,GAAKA,EAAE,CAAC,EAAI,EAAG,MAAO,SACnC,GAAIA,EAAE,CAAC,IAAM,GAAKA,EAAE,CAAC,IAAM,EAAG,MAAO,QACrC,GAAIA,EAAE,CAAC,IAAM,GAAKA,EAAE,CAAC,EAAI,EAAG,MAAO,cACnC,GAAIA,EAAE,CAAC,IAAM,EAAG,MAAO,YACvB,GAAIA,EAAE,CAAC,IAAM,GAAKA,EAAE,CAAC,EAAI,EAAG,MAAO,qBACnC,GAAIA,EAAE,CAAC,IAAM,GAAKA,EAAE,CAAC,EAAI,EAAG,MAAO,aACnC,GAAIA,EAAE,CAAC,IAAM,GAAKA,EAAE,CAAC,GAAK,EAAG,MAAO,SACpC,GAAIA,EAAE,CAAC,IAAM,EAAG,MAAO,WACvB,GAAIA,EAAE,CAAC,IAAM,EAAG,MAAO,cACvB,GAAIA,EAAE,CAAC,IAAM,EAAG,MAAO,SACvB,GAAIA,EAAE,CAAC,IAAM,EAAG,MAAO,OACvB,GAAIA,EAAE,CAAC,IAAM,EAAG,MAAO,MAE3B,CAWE,OAAO,oBAAoBD,EAAS,CAClC,OAAOA,EAAQ,MAAM,GAAG,EAAE,MAC9B,CAmBE,OAAO,gBAAgBG,EAAUC,EAAUC,EAAU,GAAO,CAE1D,MAAMC,EAAoBX,EAAM,oBAAoBQ,CAAQ,EACtDI,EAAoBZ,EAAM,oBAAoBS,CAAQ,EAE5D,IAAII,EAAY,KAAK,IAAIF,EAAmBC,CAAiB,EACzDE,EAAgB,EAEpB,MAAMC,EAASf,EAAM,IAAI,CAACQ,EAAUC,CAAQ,EAAIJ,GAAY,CAC1D,MAAMW,EAAQH,EAAYb,EAAM,oBAAoBK,CAAO,EAGrDY,EAAWZ,EAAU,IAAI,MAAMW,EAAQ,CAAC,EAAE,KAAK,IAAI,EAGzD,OAAOhB,EAAM,IAAIiB,EAAS,MAAM,GAAG,EAAGC,GAAS,IAAI,MAAM,GAAKA,EAAM,MAAM,EAAE,KAAK,GAAG,EAAIA,CAAK,EAAE,QAAS,CAC9G,CAAK,EASD,IANIR,IACFI,EAAgBD,EAAY,KAAK,IAAIF,EAAmBC,CAAiB,GAI3EC,GAAa,EACNA,GAAaC,GAAe,CAEjC,GAAIC,EAAO,CAAC,EAAEF,CAAS,EAAIE,EAAO,CAAC,EAAEF,CAAS,EAC5C,MAAO,GAGT,GAAIE,EAAO,CAAC,EAAEF,CAAS,IAAME,EAAO,CAAC,EAAEF,CAAS,EAAG,CACjD,GAAIA,IAAcC,EAEhB,MAAO,GAGTD,GAAa,CACrB,SAAiBE,EAAO,CAAC,EAAEF,CAAS,EAAIE,EAAO,CAAC,EAAEF,CAAS,EACnD,MAAO,EAEf,CAGA,CASE,OAAO,IAAIM,EAAKC,EAAU,CACxB,MAAMC,EAAS,CAAE,EACjB,IAAIC,EACJ,GAAI,MAAM,UAAU,IAClB,OAAO,MAAM,UAAU,IAAI,KAAKH,EAAKC,CAAQ,EAE/C,IAAKE,EAAI,EAAGA,EAAIH,EAAI,OAAQG,GAAK,EAC/BD,EAAO,KAAKD,EAASD,EAAIG,CAAC,CAAC,CAAC,EAE9B,OAAOD,CACX,CASE,OAAO,KAAKF,EAAKI,EAAW,CAC1B,IAAI,EACAC,EACJ,GAAI,MAAM,UAAU,KAClB,OAAO,MAAM,UAAU,KAAK,KAAKL,EAAKI,CAAS,EAEjD,IAAK,EAAI,EAAGC,EAAIL,EAAI,OAAQ,EAAIK,EAAG,GAAK,EAAG,CACzC,MAAMC,EAAQN,EAAI,CAAC,EACnB,GAAII,EAAUE,EAAO,CAAC,EACpB,OAAOA,CAEf,CAEA,CASE,OAAO,OAAOC,KAAQC,EAAW,CAC/B,MAAMN,EAASK,EACf,IAAIJ,EACAE,EACJ,GAAI,OAAO,OACT,OAAO,OAAO,OAAOE,EAAK,GAAGC,CAAS,EAExC,IAAKL,EAAI,EAAGE,EAAIG,EAAU,OAAQL,EAAIE,EAAGF,GAAK,EAAG,CAC/C,MAAMM,EAAWD,EAAUL,CAAC,EACxB,OAAOM,GAAa,UAAYA,IAAa,MAClC,OAAO,KAAKA,CAAQ,EAC5B,QAASC,GAAQ,CACpBR,EAAOQ,CAAG,EAAID,EAASC,CAAG,CACpC,CAAS,CAET,CACI,OAAOH,CACX,CAWE,OAAO,gBAAgBI,EAAa,CAClC,OAAOnC,EAAoBmC,CAAW,CAC1C,CAWE,OAAO,sBAAsBC,EAAc,CACzC,OAAOnC,EAAYmC,CAAY,GAAK,EACxC,CACA,CCzRA,MAAMC,EAA0B,6BAE1BC,EAAe,CAEnB,CACE,KAAM,CAAC,YAAY,EACnB,SAAS/B,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,WACP,EACK7B,EAAUL,EAAM,cAAc,2BAA4BE,CAAE,GAAKF,EAAM,cAAcgC,EAAyB9B,CAAE,EAEtH,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EAGD,CACE,KAAM,CAAC,QAAQ,EACf,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,OACP,EACK7B,EAAUL,EAAM,cAAcgC,EAAyB9B,CAAE,GAAKF,EAAM,cAAc,kCAAmCE,CAAE,EAE7H,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EAGD,CACE,KAAM,CAAC,cAAc,EACrB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,OACP,EACK7B,EAAUL,EAAM,cAAc,2BAA4BE,CAAE,GAAKF,EAAM,cAAcgC,EAAyB9B,CAAE,EAEtH,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,iBAAiB,EACxB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,8BACP,EACK7B,EAAUL,EAAM,cAAcgC,EAAyB9B,CAAE,GAAKF,EAAM,cAAc,2CAA4CE,CAAE,EAEtI,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,QAAQ,EACf,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,qBACP,EACK7B,EAAUL,EAAM,cAAcgC,EAAyB9B,CAAE,GAAKF,EAAM,cAAc,iCAAkCE,CAAE,EAE5H,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,YAAY,EACnB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,YACP,EACK7B,EAAUL,EAAM,cAAc,qCAAsCE,CAAE,GAAKF,EAAM,cAAcgC,EAAyB9B,CAAE,EAEhI,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,QAAQ,EACf,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,OACP,EACK7B,EAAUL,EAAM,cAAc,iCAAkCE,CAAE,GAAKF,EAAM,cAAcgC,EAAyB9B,CAAE,EAE5H,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,QAAQ,EACf,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,OACP,EACK7B,EAAUL,EAAM,cAAc,iCAAkCE,CAAE,GAAKF,EAAM,cAAcgC,EAAyB9B,CAAE,EAE5H,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,QAAQ,EACf,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,aACP,EACK7B,EAAUL,EAAM,cAAcgC,EAAyB9B,CAAE,GAAKF,EAAM,cAAc,kCAAmCE,CAAE,EAE7H,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,uBAAuB,EAC9B,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,aACP,EACK7B,EAAUL,EAAM,cAAc,gCAAiCE,CAAE,GAAKF,EAAM,cAAcgC,EAAyB9B,CAAE,EAE3H,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,YAAY,EACnB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,gBACP,EACK7B,EAAUL,EAAM,cAAc,sCAAuCE,CAAE,GAAKF,EAAM,cAAcgC,EAAyB9B,CAAE,EAEjI,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,YAAY,EACnB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,YACP,EACK7B,EAAUL,EAAM,cAAcgC,EAAyB9B,CAAE,GAAKF,EAAM,cAAc,sCAAuCE,CAAE,EAEjI,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,gBAAgB,EACvB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,SACP,EACK7B,EAAUL,EAAM,cAAcgC,EAAyB9B,CAAE,GAAKF,EAAM,cAAc,0CAA2CE,CAAE,EAErI,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,WAAW,EAClB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,UACP,EACK7B,EAAUL,EAAM,cAAcgC,EAAyB9B,CAAE,GAAKF,EAAM,cAAc,qCAAsCE,CAAE,EAEhI,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,SAAS,EAChB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,QACP,EACK7B,EAAUL,EAAM,cAAcgC,EAAyB9B,CAAE,GAAKF,EAAM,cAAc,mCAAoCE,CAAE,EAE9H,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,WAAW,EAClB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,UACP,EACK7B,EAAUL,EAAM,cAAcgC,EAAyB9B,CAAE,GAAKF,EAAM,cAAc,qCAAsCE,CAAE,EAEhI,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,WAAW,EAClB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,UACP,EACK7B,EAAUL,EAAM,cAAcgC,EAAyB9B,CAAE,GAAKF,EAAM,cAAc,qCAAsCE,CAAE,EAEhI,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,iBAAiB,EACxB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,QACP,EACK7B,EAAUL,EAAM,cAAc,2CAA4CE,CAAE,GAAKF,EAAM,cAAcgC,EAAyB9B,CAAE,EAEtI,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,YAAY,EACnB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAO,iBAAkB,KAAKhC,CAAE,EAAI,kBAAoB,YACzD,EACKG,EAAUL,EAAM,cAAc,kDAAmDE,CAAE,GAAKF,EAAM,cAAcgC,EAAyB9B,CAAE,EAE7I,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,eAAe,EACtB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,mBACP,EACK7B,EAAUL,EAAM,cAAc,iCAAkCE,CAAE,EAExE,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,UAAU,EACjB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,gBACP,EAEK7B,EAAUL,EAAM,cAAc,2BAA4BE,CAAE,EAElE,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,gBAAgB,EACvB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,gBACP,EAEK7B,EAAUL,EAAM,eAAe,mCAAoCE,CAAE,EAE3E,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,UAAU,EACjB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,SACP,EACK7B,EAAUL,EAAM,cAAc,6BAA8BE,CAAE,EAEpE,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,YAAY,EACnB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,WACP,EACK7B,EAAUL,EAAM,cAAc,+BAAgCE,CAAE,EAEtE,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,WAAW,EAClB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,UACP,EAEK7B,EAAUL,EAAM,cAAc,qCAAsCE,CAAE,EAE5E,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,OAAO,EACd,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,aACP,EACK7B,EAAUL,EAAM,cAAc,0BAA2BE,CAAE,EAEjE,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,UAAU,EACjB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,WACP,EACK7B,EAAUL,EAAM,cAAc,+BAAgCE,CAAE,EAEtE,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,WAAW,EAClB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,UACP,EACK7B,EAAUL,EAAM,cAAc,8BAA+BE,CAAE,EAErE,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,sBAAuB,cAAc,EAC5C,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,YACP,EACK7B,EAAUL,EAAM,cAAcgC,EAAyB9B,CAAE,GAAKF,EAAM,cAAc,qCAAsCE,CAAE,EAEhI,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,iBAAiB,EACxB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,eACP,EACK7B,EAAUL,EAAM,cAAcgC,EAAyB9B,CAAE,GAAKF,EAAM,cAAc,0CAA2CE,CAAE,EAErI,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,OAAO,EACd,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,MACP,EACK7B,EAAUL,EAAM,cAAc,4BAA6BE,CAAE,EAEnE,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,QAAQ,EACf,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,OACP,EACK7B,EAAUL,EAAM,cAAc,0CAA2CE,CAAE,GAAKF,EAAM,cAAcgC,EAAyB9B,CAAE,EAErI,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,WAAW,EAClB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,UACP,EACK7B,EAAUL,EAAM,cAAc,qCAAsCE,CAAE,GAAKF,EAAM,cAAcgC,EAAyB9B,CAAE,EAEhI,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,0BAA0B,EACjC,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,SACP,EACK7B,EAAUL,EAAM,cAAc,oDAAqDE,CAAE,EAE3F,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,WAAW,EAClB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,UACP,EACK7B,EAAUL,EAAM,cAAc,kCAAmCE,CAAE,EAEzE,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,cAAc,EACrB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,MACP,EACK7B,EAAUL,EAAM,cAAc,wCAAyCE,CAAE,EAE/E,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,WAAW,EAClB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,UACP,EACK7B,EAAUL,EAAM,cAAc,qCAAsCE,CAAE,GAAKF,EAAM,cAAcgC,EAAyB9B,CAAE,EAEhI,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,oBAAoB,EAC3B,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,QACP,EACK7B,EAAUL,EAAM,cAAc,2CAA4CE,CAAE,EAElF,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EACD,CACE,KAAM,CAAC,MAAM,EACb,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,eACP,EACK7B,EAAUL,EAAM,cAAc,6BAA8BE,CAAE,EAEpE,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EAGD,CACE,KAAKC,EAAQ,CACX,MAAMC,EAAiB,CAACD,EAAO,KAAK,eAAe,EAC7CE,EAAaF,EAAO,KAAK,UAAU,EACzC,OAAOC,GAAkBC,CAC1B,EACD,SAASnC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,iBACP,EACK7B,EAAUL,EAAM,cAAcgC,EAAyB9B,CAAE,EAE/D,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EAGD,CACE,KAAM,CAAC,gBAAgB,EACvB,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,eACP,EACK7B,EAAUL,EAAM,cAAcgC,EAAyB9B,CAAE,EAE/D,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EAGD,CACE,KAAM,CAAC,qBAAqB,EAC5B,SAAShC,EAAI,CACX,MAAMgC,EAAU,CACd,KAAM,QACP,EACK7B,EAAUL,EAAM,cAAcgC,EAAyB9B,CAAE,EAE/D,OAAIG,IACF6B,EAAQ,QAAU7B,GAGb6B,CACR,CACF,EAGD,CACE,KAAM,CAAC,KAAK,EACZ,SAAShC,EAAI,CAKX,MAAMoC,EAA0B,eAC1BC,EAAuB,yBAEvBtC,EADgBC,EAAG,OAAO,KAAK,IAAM,GACZqC,EAAuBD,EACtD,MAAO,CACL,KAAMtC,EAAM,cAAcC,EAAQC,CAAE,EACpC,QAASF,EAAM,eAAeC,EAAQC,CAAE,CACzC,CACF,CACF,CACH,ECtrBesC,EAAA,CAEb,CACE,KAAM,CAAC,WAAW,EAClB,SAAStC,EAAI,CACX,MAAMG,EAAUL,EAAM,cAAc,wBAAyBE,CAAE,EAC/D,MAAO,CACL,KAAMJ,EAAO,KACb,QAAAO,CACD,CACF,CACF,EAGD,CACE,KAAM,CAAC,gBAAgB,EACvB,SAASH,EAAI,CACX,MAAMG,EAAUL,EAAM,cAAc,yCAA0CE,CAAE,EAChF,MAAO,CACL,KAAMJ,EAAO,aACb,QAAAO,CACD,CACF,CACF,EAGD,CACE,KAAM,CAAC,WAAW,EAClB,SAASH,EAAI,CACX,MAAMG,EAAUL,EAAM,cAAc,iCAAkCE,CAAE,EAClEuC,EAAczC,EAAM,sBAAsBK,CAAO,EAEvD,MAAO,CACL,KAAMP,EAAO,QACb,QAAAO,EACA,YAAAoC,CACD,CACF,CACF,EAGD,CACE,KAAM,CAAC,6BAA6B,EACpC,SAASvC,EAAI,CACX,MAAMmB,EAAS,CACb,KAAMvB,EAAO,GACd,EACKO,EAAUL,EAAM,eAAe,wBAAyBE,CAAE,EAChE,OAAIG,IACFgB,EAAO,QAAUhB,GAEZgB,CACR,CACF,EAGD,CACE,KAAM,CAAC,YAAY,EACnB,SAASnB,EAAI,CACX,MAAMG,EAAUL,EAAM,cAAc,6BAA8BE,CAAE,EAAE,QAAQ,SAAU,GAAG,EACrFuC,EAAczC,EAAM,oBAAoBK,CAAO,EAE/CqC,EAAK,CACT,KAAM5C,EAAO,MACb,QAAAO,CACD,EACD,OAAIoC,IACFC,EAAG,YAAcD,GAEZC,CACR,CACF,EAGD,CACE,KAAM,CAAC,qBAAqB,EAC5B,SAASxC,EAAI,CACX,MAAMG,EAAUL,EAAM,cAAc,qCAAsCE,CAAE,EAAE,QAAQ,SAAU,GAAG,EAEnG,MAAO,CACL,KAAMJ,EAAO,IACb,QAAAO,CACD,CACF,CACF,EAGD,CACE,KAAK8B,EAAQ,CACX,MAAMC,EAAiB,CAACD,EAAO,KAAK,eAAe,EAC7CE,EAAaF,EAAO,KAAK,UAAU,EACzC,OAAOC,GAAkBC,CAC1B,EACD,SAASnC,EAAI,CACX,MAAMG,EAAUL,EAAM,cAAc,8BAA+BE,CAAE,EAC/DuC,EAAczC,EAAM,sBAAsBK,CAAO,EACjDqC,EAAK,CACT,KAAM5C,EAAO,QACb,QAAAO,CACD,EACD,OAAIoC,IACFC,EAAG,YAAcD,GAEZC,CACR,CACF,EAGD,CACE,KAAM,CAAC,iBAAiB,EACxB,SAASxC,EAAI,CACX,MAAMG,EAAUL,EAAM,cAAc,mCAAoCE,CAAE,EACpEwC,EAAK,CACT,KAAM5C,EAAO,KACd,EAED,OAAIO,GAAWA,EAAQ,SACrBqC,EAAG,QAAUrC,GAERqC,CACR,CACF,EAGD,CACE,KAAM,CAAC,sBAAuB,cAAc,EAC5C,SAASxC,EAAI,CACX,MAAMG,EAAUL,EAAM,cAAc,kCAAmCE,CAAE,GACpEF,EAAM,cAAc,mCAAoCE,CAAE,GAC1DF,EAAM,cAAc,aAAcE,CAAE,EAEzC,MAAO,CACL,KAAMJ,EAAO,WACb,QAAAO,CACD,CACF,CACF,EAGD,CACE,KAAM,CAAC,OAAO,EACd,SAASH,EAAI,CACX,MAAMG,EAAUL,EAAM,cAAc,uBAAwBE,CAAE,EAE9D,MAAO,CACL,KAAMJ,EAAO,KACb,QAAAO,CACD,CACF,CACF,EAGD,CACE,KAAM,CAAC,QAAQ,EACf,SAASH,EAAI,CACX,MAAMG,EAAUL,EAAM,cAAc,2BAA4BE,CAAE,EAElE,MAAO,CACL,KAAMJ,EAAO,MACb,QAAAO,CACD,CACF,CACF,EAGD,CACE,KAAM,CAAC,QAAQ,EACf,UAAW,CACT,MAAO,CACL,KAAMP,EAAO,KACd,CACF,CACF,EAGD,CACE,KAAM,CAAC,MAAM,EACb,UAAW,CACT,MAAO,CACL,KAAMA,EAAO,QACd,CACF,CACF,EAGD,CACE,KAAM,CAAC,eAAe,EACtB,SAASI,EAAI,CACX,MAAMG,EAAUL,EAAM,cAAc,mCAAoCE,CAAE,EAC1E,MAAO,CACL,KAAMJ,EAAO,aACb,QAAAO,CACD,CACF,CACF,CACH,EC9LesC,EAAA,CAEb,CACE,KAAM,CAAC,YAAY,EACnB,UAAW,CACT,MAAO,CACL,KAAM,MACN,OAAQ,QACT,CACF,CACF,EAGD,CACE,KAAM,CAAC,SAAS,EAChB,SAASzC,EAAI,CACX,MAAM0C,EAAQ5C,EAAM,cAAc,aAAcE,CAAE,GAAK,OACjD2C,EAAW,CACf,KAAMhD,EAAc,OACpB,OAAQ,QACT,EACD,OAAI+C,IACFC,EAAS,MAAQD,GAEZC,CACR,CACF,EAGD,CACE,KAAM,CAAC,yBAAyB,EAChC,UAAW,CACT,MAAO,CACL,KAAMhD,EAAc,OACpB,OAAQ,OACT,CACF,CACF,EAGD,CACE,KAAM,CAAC,OAAO,EACd,UAAW,CACT,MAAO,CACL,KAAMA,EAAc,OACpB,OAAQ,QACR,MAAO,MACR,CACF,CACF,EAGD,CACE,KAAM,CAAC,6BAA6B,EACpC,UAAW,CACT,MAAO,CACL,KAAMA,EAAc,OACpB,OAAQ,QACR,MAAO,MACR,CACF,CACF,EAGD,CACE,KAAM,CAAC,aAAa,EACpB,UAAW,CACT,MAAO,CACL,KAAMA,EAAc,OACpB,OAAQ,SACR,MAAO,kBACR,CACF,CACF,EAGD,CACE,KAAM,CAAC,OAAO,EACd,UAAW,CACT,MAAO,CACL,KAAMA,EAAc,OACpB,OAAQ,QACT,CACF,CACF,EAGD,CACE,KAAM,CAAC,gBAAgB,EACvB,UAAW,CACT,MAAO,CACL,KAAMA,EAAc,MACrB,CACF,CACF,EAGD,CACE,KAAKsC,EAAQ,CACX,MAAMW,EAAUX,EAAO,KAAK,cAAc,EACpCY,EAAcZ,EAAO,KAAK,qBAAqB,EACrD,OAAOW,GAAW,CAACC,CACpB,EACD,SAAS7C,EAAI,CACX,MAAM0C,EAAQ5C,EAAM,cAAc,iBAAkBE,CAAE,EACtD,MAAO,CACL,KAAML,EAAc,OACpB,OAAQ,QACR,MAAA+C,CACD,CACF,CACF,EAGD,CACE,KAAM,CAAC,mBAAoB,eAAe,EAC1C,UAAW,CACT,MAAO,CACL,KAAM/C,EAAc,OACpB,OAAQ,OACT,CACF,CACF,EAGD,CACE,KAAM,CAAC,WAAW,EAClB,UAAW,CACT,MAAO,CACL,KAAMA,EAAc,MACrB,CACF,CACF,EAGD,CACE,KAAKsC,EAAQ,CACX,OAAOA,EAAO,eAAe,EAAI,IAAM,YACxC,EACD,UAAW,CACT,MAAO,CACL,KAAMtC,EAAc,OACpB,OAAQ,YACT,CACF,CACF,EAGD,CACE,KAAKsC,EAAQ,CACX,OAAOA,EAAO,eAAe,EAAI,IAAM,MACxC,EACD,UAAW,CACT,MAAO,CACL,KAAMtC,EAAc,MACrB,CACF,CACF,EAGD,CACE,KAAKsC,EAAQ,CACX,OAAOA,EAAO,eAAc,IAAO,eACpC,EACD,UAAW,CACT,MAAO,CACL,KAAMtC,EAAc,OACpB,OAAQ,WACT,CACF,CACF,EAGD,CACE,KAAKsC,EAAQ,CACX,MAAMa,EAAiB,OAAO,OAAOb,EAAO,cAAc,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,EACzE,OAAOA,EAAO,UAAU,EAAI,IAAM,WAAca,GAAkB,CACnE,EACD,UAAW,CACT,MAAO,CACL,KAAMnD,EAAc,MACrB,CACF,CACF,EAGD,CACE,KAAKsC,EAAQ,CACX,OAAOA,EAAO,UAAU,EAAI,IAAM,SACnC,EACD,UAAW,CACT,MAAO,CACL,KAAMtC,EAAc,MACrB,CACF,CACF,EAGD,CACE,KAAKsC,EAAQ,CACX,OAAOA,EAAO,UAAU,EAAI,IAAM,OACnC,EACD,UAAW,CACT,MAAO,CACL,KAAMtC,EAAc,QACpB,OAAQ,OACT,CACF,CACF,EAGD,CACE,KAAKsC,EAAQ,CACX,OAAOA,EAAO,UAAU,EAAI,IAAM,SACnC,EACD,UAAW,CACT,MAAO,CACL,KAAMtC,EAAc,OACrB,CACF,CACF,EAGD,CACE,KAAKsC,EAAQ,CACX,OAAOA,EAAO,UAAU,EAAI,IAAM,OACnC,EACD,UAAW,CACT,MAAO,CACL,KAAMtC,EAAc,OACrB,CACF,CACF,EAGD,CACE,KAAKsC,EAAQ,CACX,OAAOA,EAAO,UAAU,EAAI,IAAM,eACnC,EACD,UAAW,CACT,MAAO,CACL,KAAMtC,EAAc,EACrB,CACF,CACF,EAGD,CACE,KAAKsC,EAAQ,CACX,OAAOA,EAAO,UAAU,EAAI,IAAM,MACnC,EACD,UAAW,CACT,MAAO,CACL,KAAMtC,EAAc,EACrB,CACF,CACF,CACH,ECnQeoD,EAAA,CAEb,CACE,KAAKd,EAAQ,CACX,OAAOA,EAAO,eAAe,EAAI,IAAM,gBACxC,EACD,SAASjC,EAAI,CAIX,GAHqB,WAAW,KAAKA,CAAE,EAIrC,MAAO,CACL,KAAMH,EAAW,KAClB,EAIH,MAAMM,EAAUL,EAAM,cAAc,0BAA2BE,CAAE,EAEjE,MAAO,CACL,KAAMH,EAAW,SACjB,QAAAM,CACD,CACF,CACF,EAGD,CACE,KAAM,CAAC,UAAU,EACjB,SAASH,EAAI,CACX,MAAMgD,EAAS,CACb,KAAMnD,EAAW,OAClB,EAEKM,EAAUL,EAAM,cAAc,6BAA8BE,CAAE,EAEpE,OAAIG,IACF6C,EAAO,QAAU7C,GAGZ6C,CACR,CACF,EAGD,CACE,KAAKf,EAAQ,CACX,OAAOA,EAAO,KAAK,SAAS,CAC7B,EACD,SAASjC,EAAI,CACX,MAAMgD,EAAS,CACb,KAAMnD,EAAW,MAClB,EAEKM,EAAUL,EAAM,cAAc,4BAA6BE,CAAE,EAEnE,OAAIG,IACF6C,EAAO,QAAU7C,GAGZ6C,CACR,CACF,EAGD,CACE,KAAKf,EAAQ,CACX,MAAMgB,EAAUhB,EAAO,KAAK,QAAQ,EAC9BiB,EAAYjB,EAAO,KAAK,aAAa,EAC3C,OAAOgB,GAAW,CAACC,CACpB,EACD,SAASlD,EAAI,CACX,MAAMgD,EAAS,CACb,KAAMnD,EAAW,KAClB,EAEKM,EAAUL,EAAM,cAAc,2BAA4BE,CAAE,EAElE,OAAIG,IACF6C,EAAO,QAAU7C,GAGZ6C,CACR,CACF,EAGD,CACE,KAAM,CAAC,0BAA0B,EACjC,UAAW,CACT,MAAO,CACL,KAAMnD,EAAW,KAClB,CACF,CACF,EAGD,CACE,KAAM,CAAC,iBAAiB,EACxB,SAASG,EAAI,CACX,MAAMgD,EAAS,CACb,KAAMnD,EAAW,MAClB,EAEKM,EAAUL,EAAM,cAAc,4BAA6BE,CAAE,EAEnE,OAAIG,IACF6C,EAAO,QAAU7C,GAGZ6C,CACR,CACF,CACH,EC9GA,MAAMG,CAAO,CAaX,YAAYC,EAAIC,EAAc,GAAO,CACnC,GAAuBD,GAAO,MAAQA,IAAO,GAC3C,MAAM,IAAI,MAAM,oCAAoC,EAGtD,KAAK,IAAMA,EAwBX,KAAK,aAAe,CAAE,EAElBC,IAAgB,IAClB,KAAK,MAAO,CAElB,CAQE,OAAQ,CACN,OAAO,KAAK,GAChB,CAOE,KAAKC,EAAO,CACV,OAAOA,EAAM,KAAK,KAAK,GAAG,CAC9B,CAME,cAAe,CACb,KAAK,aAAa,QAAU,CAAE,EAE9B,MAAMC,EAAoBzD,EAAM,KAAK0D,EAAqBC,GAAa,CACrE,GAAI,OAAOA,EAAS,MAAS,WAC3B,OAAOA,EAAS,KAAK,IAAI,EAG3B,GAAIA,EAAS,gBAAgB,MAC3B,OAAOA,EAAS,KAAK,KAAKC,GAAa,KAAK,KAAKA,CAAS,CAAC,EAG7D,MAAM,IAAI,MAAM,sCAAsC,CAC5D,CAAK,EAED,OAAIH,IACF,KAAK,aAAa,QAAUA,EAAkB,SAAS,KAAK,OAAO,GAG9D,KAAK,aAAa,OAC7B,CAQE,YAAa,CACX,OAAI,KAAK,aAAa,QACb,KAAK,aAAa,QAGpB,KAAK,aAAc,CAC9B,CAQE,eAAeI,EAAa,CAC1B,OAAIA,EACK,OAAO,KAAK,WAAU,EAAG,IAAI,EAAE,YAAW,GAAM,GAElD,KAAK,aAAa,MAAQ,EACrC,CASE,mBAAoB,CAClB,OAAO,KAAK,WAAU,EAAG,OAC7B,CAaE,OAAQ,CACN,OAAI,KAAK,aAAa,GACb,KAAK,aAAa,GAGpB,KAAK,QAAS,CACzB,CAME,SAAU,CACR,KAAK,aAAa,GAAK,CAAE,EAEzB,MAAMnB,EAAK1C,EAAM,KAAKwC,EAAgBsB,GAAQ,CAC5C,GAAI,OAAOA,EAAI,MAAS,WACtB,OAAOA,EAAI,KAAK,IAAI,EAGtB,GAAIA,EAAI,gBAAgB,MACtB,OAAOA,EAAI,KAAK,KAAKF,GAAa,KAAK,KAAKA,CAAS,CAAC,EAGxD,MAAM,IAAI,MAAM,sCAAsC,CAC5D,CAAK,EAED,OAAIlB,IACF,KAAK,aAAa,GAAKA,EAAG,SAAS,KAAK,OAAO,GAG1C,KAAK,aAAa,EAC7B,CAOE,UAAUmB,EAAa,CACrB,KAAM,CAAE,KAAAE,CAAI,EAAK,KAAK,MAAO,EAE7B,OAAIF,EACK,OAAOE,CAAI,EAAE,YAAa,GAAI,GAGhCA,GAAQ,EACnB,CAME,cAAe,CACb,OAAO,KAAK,MAAK,EAAG,OACxB,CAME,aAAc,CACZ,OAAI,KAAK,aAAa,SACb,KAAK,aAAa,SAGpB,KAAK,cAAe,CAC/B,CAOE,gBAAgBF,EAAc,GAAO,CACnC,KAAM,CAAE,KAAAG,CAAI,EAAK,KAAK,YAAa,EAEnC,OAAIH,EACK,OAAOG,CAAI,EAAE,YAAa,GAAI,GAGhCA,GAAQ,EACnB,CAME,eAAgB,CACd,KAAK,aAAa,SAAW,CAAE,EAE/B,MAAMnB,EAAW7C,EAAM,KAAK2C,EAAsBsB,GAAc,CAC9D,GAAI,OAAOA,EAAU,MAAS,WAC5B,OAAOA,EAAU,KAAK,IAAI,EAG5B,GAAIA,EAAU,gBAAgB,MAC5B,OAAOA,EAAU,KAAK,KAAKL,GAAa,KAAK,KAAKA,CAAS,CAAC,EAG9D,MAAM,IAAI,MAAM,sCAAsC,CAC5D,CAAK,EAED,OAAIf,IACF,KAAK,aAAa,SAAWA,EAAS,SAAS,KAAK,OAAO,GAGtD,KAAK,aAAa,QAC7B,CAME,WAAY,CACV,OAAI,KAAK,aAAa,OACb,KAAK,aAAa,OAGpB,KAAK,YAAa,CAC7B,CAQE,cAAcgB,EAAa,CACzB,OAAIA,EACK,OAAO,KAAK,UAAS,EAAG,IAAI,EAAE,YAAW,GAAM,GAEjD,KAAK,YAAY,MAAQ,EACpC,CAME,aAAc,CACZ,KAAK,aAAa,OAAS,CAAE,EAE7B,MAAMX,EAASlD,EAAM,KAAKiD,EAAqBiB,GAAY,CACzD,GAAI,OAAOA,EAAQ,MAAS,WAC1B,OAAOA,EAAQ,KAAK,IAAI,EAG1B,GAAIA,EAAQ,gBAAgB,MAC1B,OAAOA,EAAQ,KAAK,KAAKN,GAAa,KAAK,KAAKA,CAAS,CAAC,EAG5D,MAAM,IAAI,MAAM,sCAAsC,CAC5D,CAAK,EAED,OAAIV,IACF,KAAK,aAAa,OAASA,EAAO,SAAS,KAAK,OAAO,GAGlD,KAAK,aAAa,MAC7B,CAME,OAAQ,CACN,YAAK,aAAc,EACnB,KAAK,QAAS,EACd,KAAK,cAAe,EACpB,KAAK,YAAa,EAEX,IACX,CAME,WAAY,CACV,OAAOlD,EAAM,OAAO,GAAI,KAAK,YAAY,CAC7C,CAoBE,UAAUmE,EAAW,CACnB,MAAMC,EAAmB,CAAE,EAC3B,IAAIC,EAAwB,EAC5B,MAAMC,EAAW,CAAE,EACnB,IAAIC,EAAkB,EAetB,GAbuB,OAAO,KAAKJ,CAAS,EAE7B,QAAStC,GAAQ,CAC9B,MAAM2C,EAAoBL,EAAUtC,CAAG,EACnC,OAAO2C,GAAsB,UAC/BF,EAASzC,CAAG,EAAI2C,EAChBD,GAAmB,GACV,OAAOC,GAAsB,WACtCJ,EAAiBvC,CAAG,EAAI2C,EACxBH,GAAyB,EAEjC,CAAK,EAEGA,EAAwB,EAAG,CAC7B,MAAMI,EAAsB,OAAO,KAAKL,CAAgB,EAClDM,EAAuB1E,EAAM,KAAKyE,EAAqBV,GAAS,KAAK,KAAKA,CAAI,CAAE,EAEtF,GAAIW,EAAsB,CACxB,MAAMC,EAAW,KAAK,UAAUP,EAAiBM,CAAoB,CAAC,EAEtE,GAAIC,IAAa,OACf,OAAOA,CAEjB,CAEM,MAAMC,EAA6B5E,EAAM,KACvCyE,EACAV,GAAS,KAAK,WAAWA,CAAI,CAC9B,EACD,GAAIa,EAA4B,CAC9B,MAAMC,EAAiB,KAAK,UAAUT,EAAiBQ,CAA0B,CAAC,EAElF,GAAIC,IAAmB,OACrB,OAAOA,CAEjB,CACA,CAEI,GAAIN,EAAkB,EAAG,CACvB,MAAMO,EAAe,OAAO,KAAKR,CAAQ,EACnCS,EAAqB/E,EAAM,KAAK8E,EAAcf,GAAS,KAAK,UAAUA,EAAM,EAAI,CAAE,EAExF,GAAIgB,IAAuB,OACzB,OAAO,KAAK,eAAeT,EAASS,CAAkB,CAAC,CAE/D,CAGA,CAQE,UAAUjD,EAAakD,EAAiB,GAAO,CAC7C,MAAMC,EAAqB,KAAK,eAAc,EAAG,YAAa,EAC9D,IAAIC,EAAmBpD,EAAY,YAAa,EAChD,MAAMqD,EAAQnF,EAAM,sBAAsBkF,CAAgB,EAE1D,OAAIF,GAAkBG,IACpBD,EAAmBC,EAAM,YAAa,GAEjCD,IAAqBD,CAChC,CAEE,eAAe5E,EAAS,CACtB,IAAI+E,EAAkB,CAAC,CAAC,EACpBC,EAAoBhF,EACpBK,EAAU,GAEd,MAAM4E,EAAwB,KAAK,kBAAmB,EAEtD,GAAI,OAAOA,GAA0B,SAIrC,OAAIjF,EAAQ,CAAC,IAAM,KAAOA,EAAQ,CAAC,IAAM,KACvCgF,EAAoBhF,EAAQ,OAAO,CAAC,EAChCA,EAAQ,CAAC,IAAM,KACjBK,EAAU,GACV2E,EAAoBhF,EAAQ,OAAO,CAAC,GAEpC+E,EAAkB,CAAE,EAElB/E,EAAQ,CAAC,IAAM,IACjB+E,EAAgB,KAAK,CAAC,EAEtBA,EAAgB,KAAK,EAAE,GAEhB/E,EAAQ,CAAC,IAAM,IACxBgF,EAAoBhF,EAAQ,OAAO,CAAC,EAC3BA,EAAQ,CAAC,IAAM,MACxBK,EAAU,GACV2E,EAAoBhF,EAAQ,OAAO,CAAC,GAG/B+E,EAAgB,QACrBpF,EAAM,gBAAgBsF,EAAuBD,EAAmB3E,CAAO,CACxE,EAAG,EACR,CAEE,KAAK6E,EAAQ,CACX,OAAO,KAAK,UAAU,EAAI,IAAM,OAAOA,CAAM,EAAE,YAAa,CAChE,CAEE,WAAWC,EAAc,CACvB,OAAO,KAAK,gBAAgB,EAAI,IAAM,OAAOA,CAAY,EAAE,YAAa,CAC5E,CAEE,SAASC,EAAY,CACnB,OAAO,KAAK,cAAc,EAAI,IAAM,OAAOA,CAAU,EAAE,YAAa,CACxE,CASE,GAAGC,EAAUV,EAAiB,GAAO,CACnC,OAAO,KAAK,UAAUU,EAAUV,CAAc,GAAK,KAAK,KAAKU,CAAQ,GAChE,KAAK,WAAWA,CAAQ,CACjC,CAOE,KAAKC,EAAY,GAAI,CACnB,OAAOA,EAAU,KAAKD,GAAY,KAAK,GAAGA,CAAQ,CAAC,CACvD,CACA,CC7eA;AAAA;AAAA;AAAA;AAAA;AAAA,GAyBA,MAAME,CAAO,CAcX,OAAO,UAAUtC,EAAIC,EAAc,GAAO,CACxC,GAAI,OAAOD,GAAO,SAChB,MAAM,IAAI,MAAM,8BAA8B,EAEhD,OAAO,IAAID,EAAOC,EAAIC,CAAW,CACrC,CAWE,OAAO,MAAMD,EAAI,CACf,OAAQ,IAAID,EAAOC,CAAE,EAAG,UAAW,CACvC,CAEE,WAAW,aAAc,CACvB,OAAO1D,CACX,CAEE,WAAW,YAAa,CACtB,OAAOG,CACX,CAEE,WAAW,QAAS,CAClB,OAAOD,CACX,CAEE,WAAW,eAAgB,CACzB,OAAOD,CACX,CACA,CCxEA,MAAMqC,EAAU2D,EAAO,UAAU,OAAO,UAAU,SAAS,EAAE,aAE7DC,EAAe,IAEX,CAAC,SAAU,QAAQ,EAAE,SAAS5D,EAAQ,SAAS,IAAI,GAElD,UAAU,WAAa,YAAc,UAAU,eAAiB","x_google_ignoreList":[0,1,2,3,4,5,6,7]}