{"version":3,"sources":["webpack:///./node_modules/lodash-es/isObject.js","webpack:///./node_modules/lodash-es/_freeGlobal.js","webpack:///./node_modules/lodash-es/_root.js","webpack:///./node_modules/lodash-es/now.js","webpack:///./node_modules/lodash-es/_Symbol.js","webpack:///./node_modules/lodash-es/_getRawTag.js","webpack:///./node_modules/lodash-es/_objectToString.js","webpack:///./node_modules/lodash-es/_baseGetTag.js","webpack:///./node_modules/lodash-es/isObjectLike.js","webpack:///./node_modules/lodash-es/isSymbol.js","webpack:///./node_modules/lodash-es/toNumber.js","webpack:///./node_modules/lodash-es/debounce.js","webpack:///./node_modules/@amplitude/ua-parser-js/src/ua-parser.js","webpack:///./node_modules/@amplitude/analytics-browser/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@amplitude/analytics-core/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@amplitude/analytics-types/lib/esm/config.js","webpack:///./node_modules/@amplitude/analytics-types/lib/esm/event.js","webpack:///./node_modules/@amplitude/analytics-types/lib/esm/logger.js","webpack:///./node_modules/@amplitude/analytics-types/lib/esm/plugin.js","webpack:///./node_modules/@amplitude/analytics-types/lib/esm/status.js","webpack:///./node_modules/@amplitude/analytics-types/lib/esm/transport.js","webpack:///./node_modules/@amplitude/analytics-core/lib/esm/constants.js","webpack:///./node_modules/@amplitude/analytics-core/lib/esm/utils/valid-properties.js","webpack:///./node_modules/@amplitude/analytics-core/lib/esm/identify.js","webpack:///./node_modules/@amplitude/analytics-core/lib/esm/utils/event-builder.js","webpack:///./node_modules/@amplitude/analytics-core/lib/esm/utils/result-builder.js","webpack:///./node_modules/@amplitude/analytics-core/lib/esm/timeline.js","webpack:///./node_modules/@amplitude/analytics-core/lib/esm/core-client.js","webpack:///./node_modules/@amplitude/analytics-core/lib/esm/messages.js","webpack:///./node_modules/@amplitude/analytics-core/lib/esm/revenue.js","webpack:///./node_modules/@amplitude/analytics-core/lib/esm/logger.js","webpack:///./node_modules/@amplitude/analytics-core/lib/esm/config.js","webpack:///./node_modules/@amplitude/analytics-core/lib/esm/plugins/destination.js","webpack:///./node_modules/@amplitude/analytics-core/lib/esm/utils/chunk.js","webpack:///./node_modules/@amplitude/analytics-core/lib/esm/utils/return-wrapper.js","webpack:///./node_modules/@amplitude/analytics-core/lib/esm/utils/uuid.js","webpack:///./node_modules/@amplitude/analytics-core/lib/esm/storage/memory.js","webpack:///./node_modules/@amplitude/analytics-core/lib/esm/transports/base.js","webpack:///./node_modules/@amplitude/analytics-client-common/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@amplitude/analytics-client-common/lib/esm/query-params.js","webpack:///./node_modules/@amplitude/analytics-browser/lib/esm/browser-client.js","webpack:///./node_modules/@amplitude/analytics-client-common/lib/esm/attribution/constants.js","webpack:///./node_modules/@amplitude/analytics-client-common/lib/esm/attribution/campaign-parser.js","webpack:///./node_modules/@amplitude/analytics-client-common/lib/esm/cookie-name.js","webpack:///./node_modules/@amplitude/analytics-client-common/lib/esm/attribution/campaign-tracker.js","webpack:///./node_modules/@amplitude/analytics-client-common/lib/esm/storage/cookie.js","webpack:///./node_modules/@amplitude/analytics-client-common/lib/esm/session-manager.js","webpack:///./node_modules/@amplitude/analytics-client-common/lib/esm/transports/fetch.js","webpack:///./node_modules/@amplitude/analytics-client-common/lib/esm/analytics-connector.js","webpack:///./node_modules/@amplitude/analytics-client-common/lib/esm/plugins/identity.js","webpack:///./node_modules/@amplitude/analytics-client-common/lib/esm/language.js","webpack:///./node_modules/@amplitude/analytics-browser/lib/esm/utils/snippet-helper.js","webpack:///./node_modules/@amplitude/analytics-browser/lib/esm/plugins/context.js","webpack:///./node_modules/@amplitude/analytics-browser/lib/esm/version.js","webpack:///./node_modules/@amplitude/analytics-browser/lib/esm/storage/local-storage.js","webpack:///./node_modules/@amplitude/analytics-browser/lib/esm/transports/xhr.js","webpack:///./node_modules/@amplitude/analytics-browser/lib/esm/transports/send-beacon.js","webpack:///./node_modules/@amplitude/analytics-browser/lib/esm/config.js","webpack:///./node_modules/@amplitude/analytics-browser/lib/esm/cookie-migration/index.js","webpack:///./node_modules/@amplitude/analytics-browser/lib/esm/index.js","webpack:///./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js","webpack:///./node_modules/js-cookie/src/js.cookie.js","webpack:///./node_modules/@netc/aos/dist/esm/index.js","webpack:///./node_modules/animejs/lib/anime.es.js","webpack:///./node_modules/@amplitude/analytics-connector/dist/analyticsConnector.esm.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/when-dom-ready/dist/index.es2015.js"],"names":["isObject","value","type","freeGlobal","global","Object","freeSelf","self","root","Function","now","Date","Symbol","objectProto","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","undefined","getRawTag","isOwn","call","tag","unmasked","e","result","objectToString","baseGetTag","isObjectLike","isSymbol","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","toNumber","other","valueOf","replace","isBinary","test","slice","nativeMax","Math","max","nativeMin","min","debounce","func","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","apply","leadingEdge","setTimeout","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","arguments","this","clearTimeout","cancel","flush","window","MODEL","NAME","TYPE","VENDOR","VERSION","MOBILE","TABLET","SMARTTV","enumerize","arr","enums","i","length","toUpperCase","has","str1","str2","lowerize","indexOf","str","toLowerCase","trim","len","substring","rgxMapper","ua","arrays","j","k","p","q","matches","match","regex","props","exec","strMapper","map","windowsVersionMap","ME","2000","XP","Vista","7","8","8.1","10","RT","regexes","browser","OPERA","FIREFOX","CHROME","1.2","1.3","cpu","device","APPLE","engine","EDGE","os","UAParser","extensions","getResult","_ua","navigator","userAgent","_rgxmap","mergedRegexes","concat","extend","getBrowser","version","_browser","major","split","getCPU","_cpu","getDevice","_device","getEngine","_engine","getOS","_os","getUA","setUA","BROWSER","CPU","DEVICE","ENGINE","OS","exports","module","$","jQuery","Zepto","parser","get","set","prop","extendStatics","d","b","setPrototypeOf","__proto__","Array","__extends","String","__","constructor","create","__assign","assign","t","s","n","__awaiter","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","iterator","v","op","pop","push","__values","o","m","__read","r","ar","error","to","from","pack","l","ServerZone","IdentifyOperation","RevenueProperty","SpecialEventType","LogLevel","PluginType","Status","TransportType","AMPLITUDE_PREFIX","STORAGE_PREFIX","isValidObject","properties","keys","key","isValidProperties","property","e_1","_a","isArray","isValid","value_1","value_1_1","valueElement","includes","e_1_1","return","Identify","_propertySet","Set","_properties","getUserProperties","_safeSet","SET","setOnce","SET_ONCE","append","APPEND","prepend","PREPEND","postInsert","POSTINSERT","preInsert","PREINSERT","remove","REMOVE","add","ADD","unset","UNSET","clearAll","CLEAR_ALL","operation","_validate","userPropertyMap","createIdentifyEvent","identify","eventOptions","event_type","IDENTIFY","user_properties","buildResult","event","code","message","Unknown","Timeline","queue","applying","isReady","plugins","register","plugin","config","setup","deregister","pluginName","splice","findIndex","name","reset","_this","scheduleApply","timeout","shift","item","_b","before","before_1","before_1_1","enrichment","enrichment_1","enrichment_1_1","e_2_1","destination","executeDestinations","_c","e_2","_d","_e","filter","BEFORE","execute","ENRICHMENT","DESTINATION","eventClone","catch","all","AmplitudeCore","initializing","logEvent","track","bind","timeline","_init","queuedFunctions","queuedFunctions_1","queuedFunctions_1_1","queuedFunction","eventInput","eventProperties","event_properties","createTrackEvent","dispatch","groupIdentify","groupType","groupName","GROUP_IDENTIFY","group_properties","groups","createGroupIdentifyEvent","setGroup","createGroupEvent","revenue","REVENUE","getEventProperties","createRevenueEvent","optOut","loggerProvider","log","setOptOut","Boolean","Revenue","productId","quantity","price","setProductId","setQuantity","setPrice","setRevenueType","revenueType","setRevenue","setEventProperties","REVENUE_PRODUCT_ID","REVENUE_QUANTITY","REVENUE_PRICE","REVENUE_TYPE","PREFIX","Logger","logLevel","None","disable","enable","Warn","_i","Verbose","console","join","warn","Error","getDefaultConfig","flushMaxRetries","flushQueueSize","flushIntervalMillis","serverUrl","serverZone","US","useBatch","Config","_optOut","defaultConfig","apiKey","minIdLength","plan","ingestionMetadata","storageProvider","transportProvider","serverConfig","createServerConfig","defineProperty","enumerable","configurable","getServerUrl","EU","_serverZone","Destination","retryTimeout","throttleTimeout","storageKey","scheduled","unsent","saveEvents","context","attempts","callback","addToQueue","list","tryable","fulfillRequest","forEach","schedule","useRetry","later","batches","size","chunkSize","reduce","chunks","element","index","chunkIndex","floor","batch","send","payload","res","api_key","events","extra","getOwnPropertySymbols","propertyIsEnumerable","min_id_length","handleReponse","statusCode","status","Success","handleSuccessResponse","Invalid","handleInvalidResponse","PayloadTooLarge","handlePayloadTooLargeResponse","RateLimit","handleRateLimitResponse","handleOtherReponse","missingField","startsWith","dropIndex","values","eventsWithInvalidFields","eventsWithMissingFields","eventsWithInvalidIdLengths","silencedEvents","flat","dropIndexSet","retry","dropUserIds","exceededDailyQuotaUsers","dropDeviceIds","exceededDailyQuotaDevices","throttledIndex","throttledEvents","dropUserIdsSet","dropDeviceIdsSet","throttledIndexSet","user_id","device_id","returnWrapper","fn","promise","UUID","a","random","MemoryStorage","memoryStorage","Map","isEnabled","getRaw","JSON","stringify","delete","clear","BaseTransport","_serverUrl","_payload","buildResponse","responseJSON","_f","_g","_h","_j","_k","_l","_m","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","buildStatus","eventsIngested","events_ingested","payloadSizeBytes","payload_size_bytes","serverUploadTime","server_upload_time","missing_field","events_with_invalid_fields","events_with_missing_fields","events_with_invalid_id_lengths","epsThreshold","eps_threshold","exceeded_daily_quota_devices","silencedDevices","silenced_devices","silenced_events","throttledDevices","throttled_devices","throttled_events","throttledUsers","throttled_users","exceeded_daily_quota_users","Timeout","Failed","client","getQueryParams","location","search","acc","curr","query","tryDecodeURIComponent","decodeURIComponent","BASE_CAMPAIGN","utm_source","utm_medium","utm_campaign","utm_term","utm_content","referrer","referring_domain","gclid","fbclid","CampaignParser","parse","getUtmParam","getReferrer","getClickIds","params","data","document","getCookieName","postKey","limit","CampaignTracker","storage","onNewCampaign","disabled","trackNewCampaigns","trackPageViews","excludeReferrers","unshift","hostname","initialEmptyValue","isNewCampaign","currentCampaign","previousCampaign","isReferrerExcluded","hasNewUtm","hasNewReferrer","saveCampaignToStorage","campaign","getCampaignFromStorage","createCampaignEvent","campaignParameters","identifyEvent","entries","pageViewEvent","page_title","title","page_location","href","page_path","pathname","isNewSession","CookieStorage","testStrorage","testKey","atob","cookie","find","c","expirationDays","expires","expireDate","date","setTime","getTime","btoa","encodeURIComponent","toUTCString","domain","secure","sameSite","SessionManager","isSessionCacheValid","cache","load","setSession","session","getSessionId","userSession","sessionId","setSessionId","getDeviceId","deviceId","setDeviceId","getUserId","userId","setUserId","getLastEventTime","lastEventTime","setLastEventTime","getOptOut","_super","FetchTransport","responsePayload","fetch","headers","Accept","method","json","getAnalyticsConnector","getInstance","IdentityEventSender","identityStore","userProperties","editIdentity","updateUserProperties","commit","getLanguage","userLanguage","languages","language","convertProxyObjectToRealObject","instance","name_1","isInstanceProxy","Context","agent","eventId","library","uaResult","osName","osVersion","deviceModel","deviceVendor","isSessionValid","model","vendor","session_id","appVersion","app_version","trackingOptions","platform","os_name","os_version","deviceManufacturer","device_manufacturer","device_model","ipAddress","ip","insert_id","partner_id","partnerId","ingestion_metadata","source_name","sourceName","source_version","sourceVersion","event_id","sessionTimeout","LocalStorage","testStorage","localStorage","getItem","setItem","removeItem","XHRTransport","state","XMLHttpRequest","xhr","open","onreadystatechange","readyState","responseText","parsedResponsePayload","setRequestHeader","SendBeaconTransport","sendBeacon","cookieStorage","cookieExpiration","cookieSameSite","cookieSecure","disableCookies","sessionManager","BrowserConfig","attribution","useBrowserConfig","cookieName","cookies","queryParams","getTopLevelDomain","createCookieStorage","createDeviceId","createEventsStorage","createTransport","transport","overrides","baseConfig","createFlexibleStorage","idFromCookies","idFromOptions","idFromQueryParams","XHR","SendBeacon","url","host","parts","levels","parseOldCookies","oldCookieName","getOldCookieName","decode","parseTime","num","integer","isNaN","escape","AmplitudeBrowser","init","oldCookies","browserOptions","connector","eventBridge","setEventReceiver","eventType","setIdentity","runAttributionStrategy","attributionConfig","setTransport","_toConsumableArray","arr2","hasPassiveEvents","passiveTestOptions","addEventListener","removeEventListener","isIosDevice","maxTouchPoints","locks","documentListenerAdded","initialClientY","previousBodyOverflowSetting","previousBodyPaddingRight","allowTouchMove","el","some","lock","preventDefault","rawEvent","target","touches","restoreOverflowSetting","style","paddingRight","overflow","disableBodyScroll","targetElement","ontouchstart","targetTouches","clientY","ontouchmove","scrollTop","scrollHeight","clientHeight","isTargetElementTotallyScrolled","stopPropagation","handleScroll","passive","_reserveScrollBarGap","reserveScrollBarGap","scrollBarGap","innerWidth","documentElement","clientWidth","setOverflowHidden","_lock","enableBodyScroll","factory","OldCookies","Cookies","api","noConflict","attributes","converter","path","defaults","write","stringifiedAttributes","attributeName","jar","charAt","read","getJSON","withConverter","defaultSettings","animationAttibute","reverseAttribute","thresholdAttribute","rootMarginAttribute","AOS","settings","defaultOptions","threshold","rootMargin","createObserver","IntersectionObserver","handleEntries","observe","entry","cssClass","getAttribute","reverse","isIntersecting","classList","elements","querySelectorAll","parseFloat","defaultInstanceSettings","update","begin","loopBegin","changeBegin","change","changeComplete","loopComplete","complete","loop","direction","autoplay","timelineOffset","defaultTweenSettings","duration","delay","endDelay","easing","round","validTransforms","CSS","springs","minMax","val","stringContains","text","applyArguments","is","obj","pth","svg","SVGElement","inp","HTMLInputElement","dom","nodeType","fnc","und","hex","rgb","hsl","col","parseEasingParameters","string","spring","mass","stiffness","damping","velocity","w0","sqrt","zeta","wd","solver","progress","exp","cos","sin","cached","elapsed","rest","steps","ceil","eases","functionEasings","bezier","A","aA1","aA2","B","C","calcBezier","aT","getSlope","mX1","mY1","mX2","mY2","sampleValues","Float32Array","x","getTForX","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","abs","binarySubdivide","penner","linear","Sine","PI","Circ","Back","Bounce","pow2","pow","Elastic","amplitude","period","asin","easeIn","parseEasings","ease","selectString","filterArray","flattenArray","toArray","NodeList","HTMLCollection","arrayContains","cloneObject","clone","replaceObjectProps","o1","o2","mergeObjects","colorToRgb","rgbValue","hexValue","hexToRgba","hslValue","h","hue2rgb","hslToRgba","getUnit","getFunctionValue","animatable","id","total","convertPxToUnit","unit","tempEl","createElement","tagName","parentEl","parentNode","appendChild","position","width","factor","offsetWidth","removeChild","convertedUnit","getCSSValue","uppercasePropName","getComputedStyle","getPropertyValue","getAnimationType","getElementTransforms","transform","reg","transforms","getTransformValue","propName","defaultVal","getTransformUnit","getOriginalTargetValue","getRelativeValue","operator","u","validateValue","originalUnit","unitLess","substr","getDistance","p1","p2","getPolylineLength","previousPos","points","totalLength","numberOfItems","currentPos","getTotalLength","getCircleLength","getRectLength","getLineLength","getPolygonLength","getParentSvg","pathEl","svgData","parentSvgEl","getParentSvgEl","rect","getBoundingClientRect","viewBoxAttr","height","viewBox","w","getPathProgress","point","offset","getPointAtLength","p0","atan2","decomposeValue","rgx","original","numbers","Number","strings","parseTargets","targets","pos","getAnimatables","parsed","normalizePropertyTweens","tweenSettings","propArray","getProperties","keyframes","propertyNames","newKey","flattenKeyframes","tweens","normalizeTweens","previousTween","tween","normalizeTweenValues","tweenValue","toUnit","originalValue","previousValue","fromUnit","start","end","isPath","isColor","setProgressValue","css","attribute","setAttribute","object","manual","last","setTargetsValue","valueUnit","animType","getAnimations","animatables","lastTween","createAnimation","getInstanceTimings","animations","animLength","getTlOffset","anim","timings","instanceID","raf","activeInstances","pausedInstances","play","requestAnimationFrame","activeInstancesLength","activeInstance","paused","instanceIndex","tick","cancelAnimationFrame","anime","children","startTime","lastTime","childrenLength","makePromise","_resolve","finished","instanceSettings","createNewInstance","toggleInstanceDirection","reversed","child","adjustTime","resetTime","currentTime","speed","seekChild","seek","setAnimationsProgress","insTime","animationsLength","tweenLength","eased","toNumbersLength","fromNumber","stringsLength","n$1","currentValue","setCallback","cb","passThrough","setInstanceProgress","engineTime","insDuration","insDelay","insEndDelay","reversePlayback","i$1","syncInstanceChildren","began","loopBegan","changeBegan","changeCompleted","remaining","completed","pause","restart","removeTargetsFromAnimations","targetsArray","hidden","ins","running","childAnimations","convertPx","percent","setDashoffset","pathLength","stagger","grid","axis","fromIndex","fromFirst","fromCenter","fromLast","isRange","val1","val2","maxValue","fromX","fromY","distanceX","distanceY","tl","instanceParams","tlIndex","insParams","tlDuration","ApplicationContextProviderImpl","getApplicationContext","versionName","getOs","getDeviceModel","EventBridgeImpl","receiver","ownProps","resArray","IdentityStoreImpl","identity","listeners","actingUserProperties","actingIdentity","setUserProperties","actions","actingProperties","action","getIdentity","originalIdentity","isEqual","listener","addIdentityListener","removeIdentityListener","obj1","obj2","typeA","primitive_1","isArrayA","isArrayB","sorted1","sort","sorted2","result_1","safeGlobal","globalThis","AnalyticsConnector","applicationContextProvider","instanceName","__webpack_amd_options__","loadedStates","whenDomReady","doc","resume"],"mappings":"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","file":"vendors~global-c432e15eab6e6b51b755.js","sourcesContent":["/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v0.7.31\n Copyright © 2012-2021 Faisal Salman \n MIT License */ /*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment.\n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n \"use strict\";\n\n //////////////\n // Constants\n /////////////\n\n var LIBVERSION = \"0.7.31\",\n EMPTY = \"\",\n UNKNOWN = \"?\",\n FUNC_TYPE = \"function\",\n UNDEF_TYPE = \"undefined\",\n OBJ_TYPE = \"object\",\n STR_TYPE = \"string\",\n MAJOR = \"major\",\n MODEL = \"model\",\n NAME = \"name\",\n TYPE = \"type\",\n VENDOR = \"vendor\",\n VERSION = \"version\",\n ARCHITECTURE = \"architecture\",\n CONSOLE = \"console\",\n MOBILE = \"mobile\",\n TABLET = \"tablet\",\n SMARTTV = \"smarttv\",\n WEARABLE = \"wearable\",\n EMBEDDED = \"embedded\",\n UA_MAX_LENGTH = 275;\n\n var AMAZON = \"Amazon\",\n APPLE = \"Apple\",\n ASUS = \"ASUS\",\n BLACKBERRY = \"BlackBerry\",\n BROWSER = \"Browser\",\n CHROME = \"Chrome\",\n EDGE = \"Edge\",\n FIREFOX = \"Firefox\",\n GOOGLE = \"Google\",\n HUAWEI = \"Huawei\",\n LG = \"LG\",\n MICROSOFT = \"Microsoft\",\n MOTOROLA = \"Motorola\",\n OPERA = \"Opera\",\n SAMSUNG = \"Samsung\",\n SONY = \"Sony\",\n XIAOMI = \"Xiaomi\",\n ZEBRA = \"Zebra\",\n FACEBOOK = \"Facebook\";\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\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 return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n },\n lowerize = function (str) {\n return str.toLowerCase();\n },\n majorize = function (version) {\n return typeof version === STR_TYPE ? version.replace(/[^\\d\\.]/g, EMPTY).split(\".\")[0] : undefined;\n },\n trim = function (str, len) {\n if (typeof str === STR_TYPE) {\n str = str.replace(/^\\s\\s*/, EMPTY).replace(/\\s\\s*$/, EMPTY);\n return typeof len === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n }\n };\n\n ///////////////\n // Map helper\n //////////////\n\n var rgxMapper = function (ua, arrays) {\n var i = 0,\n j,\n k,\n p,\n q,\n matches,\n match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\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 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 === OBJ_TYPE && q.length > 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\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 function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n strMapper = function (str, map) {\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && 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 str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n \"1.0\": \"/8\",\n 1.2: \"/1\",\n 1.3: \"/3\",\n \"2.0\": \"/412\",\n \"2.0.2\": \"/416\",\n \"2.0.3\": \"/417\",\n \"2.0.4\": \"/419\",\n \"?\": \"/\"\n },\n windowsVersionMap = {\n ME: \"4.90\",\n \"NT 3.11\": \"NT3.51\",\n \"NT 4.0\": \"NT4.0\",\n 2000: \"NT 5.0\",\n XP: [\"NT 5.1\", \"NT 5.2\"],\n Vista: \"NT 6.0\",\n 7: \"NT 6.1\",\n 8: \"NT 6.2\",\n 8.1: \"NT 6.3\",\n 10: [\"NT 6.4\", \"NT 10.0\"],\n RT: \"ARM\"\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n browser: [\n [\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ],\n [VERSION, [NAME, \"Chrome\"]],\n [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ],\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 ],\n [NAME, VERSION],\n [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ],\n [VERSION, [NAME, OPERA + \" Mini\"]],\n [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ],\n [VERSION, [NAME, OPERA]],\n [\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant |iemobile|slim)(?:browser)?[\\/ ]?([\\w\\.]*)/i, // Avant/IEMobile/SlimBrowser\n /(ba?idubrowser)[\\/ ]?([\\w\\.]+)/i, // Baidu Browser\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(weibo)__([\\d\\.]+)/i // Weibo\n ],\n [NAME, VERSION],\n [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ],\n [VERSION, [NAME, \"UC\" + BROWSER]],\n [\n /\\bqbcore\\/([\\w\\.]+)/i // WeChat Desktop for Windows Built-in Browser\n ],\n [VERSION, [NAME, \"WeChat(Win) Desktop\"]],\n [\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ],\n [VERSION, [NAME, \"WeChat\"]],\n [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ],\n [VERSION, [NAME, \"Konqueror\"]],\n [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ],\n [VERSION, [NAME, \"IE\"]],\n [\n /yabrowser\\/([\\w\\.]+)/i // Yandex\n ],\n [VERSION, [NAME, \"Yandex\"]],\n [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ],\n [[NAME, /(.+)/, \"$1 Secure \" + BROWSER], VERSION],\n [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ],\n [VERSION, [NAME, FIREFOX + \" Focus\"]],\n [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ],\n [VERSION, [NAME, OPERA + \" Touch\"]],\n [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ],\n [VERSION, [NAME, \"Coc Coc\"]],\n [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ],\n [VERSION, [NAME, \"Dolphin\"]],\n [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ],\n [VERSION, [NAME, OPERA + \" Coast\"]],\n [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ],\n [VERSION, [NAME, \"MIUI \" + BROWSER]],\n [\n /fxios\\/([-\\w\\.]+)/i // Firefox for iOS\n ],\n [VERSION, [NAME, FIREFOX]],\n [\n /\\bqihu|(qi?ho?o?|360)browser/i // 360\n ],\n [[NAME, \"360 \" + BROWSER]],\n [/(oculus|samsung|sailfish)browser\\/([\\w\\.]+)/i],\n [[NAME, /(.+)/, \"$1 \" + BROWSER], VERSION],\n [\n // Oculus/Samsung/Sailfish Browser\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ],\n [[NAME, /_/g, \" \"], VERSION],\n [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|baiduboxapp|2345Explorer)[\\/ ]?([\\w\\.]+)/i // QQBrowser/Baidu App/2345 Browser\n ],\n [NAME, VERSION],\n [\n /(metasr)[\\/ ]?([\\w\\.]+)/i, // SouGouBrowser\n /(lbbrowser)/i // LieBao Browser\n ],\n [NAME],\n [\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ],\n [[NAME, FACEBOOK], VERSION],\n [\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(chromium|instagram)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram\n ],\n [NAME, VERSION],\n [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ],\n [VERSION, [NAME, \"GSA\"]],\n [\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ],\n [VERSION, [NAME, CHROME + \" Headless\"]],\n [\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ],\n [[NAME, CHROME + \" WebView\"], VERSION],\n [\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ],\n [VERSION, [NAME, \"Android \" + BROWSER]],\n [\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ],\n [NAME, VERSION],\n [\n /version\\/([\\w\\.]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ],\n [VERSION, [NAME, \"Mobile Safari\"]],\n [\n /version\\/([\\w\\.]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ],\n [VERSION, NAME],\n [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ],\n [NAME, [VERSION, strMapper, oldSafariMap]],\n [/(webkit|khtml)\\/([\\w\\.]+)/i],\n [NAME, VERSION],\n [\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ],\n [[NAME, \"Netscape\"], VERSION],\n [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ],\n [VERSION, [NAME, FIREFOX + \" Reality\"]],\n [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|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+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i // Links\n ],\n [NAME, VERSION]\n ],\n\n cpu: [\n [\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ],\n [[ARCHITECTURE, \"amd64\"]],\n [\n /(ia32(?=;))/i // IA32 (quicktime)\n ],\n [[ARCHITECTURE, lowerize]],\n [\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ],\n [[ARCHITECTURE, \"ia32\"]],\n [\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ],\n [[ARCHITECTURE, \"arm64\"]],\n [\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ],\n [[ARCHITECTURE, \"armhf\"]],\n [\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ],\n [[ARCHITECTURE, \"arm\"]],\n [\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ],\n [[ARCHITECTURE, /ower/, EMPTY, lowerize]],\n [\n /(sun4\\w)[;\\)]/i // SPARC\n ],\n [[ARCHITECTURE, \"sparc\"]],\n [\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ],\n [[ARCHITECTURE, lowerize]]\n ],\n\n device: [\n [\n //////////////////////////\n // MOBILES & TABLETS\n // Ordered by popularity\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[pt]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ],\n [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]],\n [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ],\n [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]],\n [\n // Apple\n /((ipod|iphone)\\d+,\\d+)/i // iPod/iPhone model\n ],\n [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]],\n [\n /(ipad\\d+,\\d+)/i // iPad model\n ],\n [MODEL, [VENDOR, APPLE], [TYPE, TABLET]],\n [\n /\\((ip(?:hone|od)[\\w ]*);/i // iPod/iPhone\n ],\n [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]],\n [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ],\n [MODEL, [VENDOR, APPLE], [TYPE, TABLET]],\n [\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ],\n [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]],\n [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ],\n [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]],\n [\n // Xiaomi\n /\\b(poco[\\w ]+)(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n ],\n [\n [MODEL, /_/g, \" \"],\n [VENDOR, XIAOMI],\n [TYPE, MOBILE]\n ],\n [\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],\n [\n [MODEL, /_/g, \" \"],\n [VENDOR, XIAOMI],\n [TYPE, TABLET]\n ],\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 ],\n [MODEL, [VENDOR, \"OPPO\"], [TYPE, MOBILE]],\n [\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ],\n [MODEL, [VENDOR, \"Vivo\"], [TYPE, MOBILE]],\n [\n // Realme\n /\\b(rmx[12]\\d{3})(?: bui|;|\\))/i\n ],\n [MODEL, [VENDOR, \"Realme\"], [TYPE, MOBILE]],\n [\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ],\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 /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ],\n [MODEL, [VENDOR, LG], [TYPE, TABLET]],\n [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ],\n [MODEL, [VENDOR, LG], [TYPE, MOBILE]],\n [\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ],\n [MODEL, [VENDOR, \"Lenovo\"], [TYPE, TABLET]],\n [\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ],\n [\n [MODEL, /_/g, \" \"],\n [VENDOR, \"Nokia\"],\n [TYPE, MOBILE]\n ],\n [\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ],\n [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]],\n [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ],\n [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]],\n [\n // Sony\n /droid.+ (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ],\n [MODEL, [VENDOR, SONY], [TYPE, MOBILE]],\n [/sony tablet [ps]/i, /\\b(?:sony)?sgp\\w+(?: bui|\\))/i],\n [\n [MODEL, \"Xperia Tablet\"],\n [VENDOR, SONY],\n [TYPE, TABLET]\n ],\n [\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ],\n [MODEL, [VENDOR, \"OnePlus\"], [TYPE, MOBILE]],\n [\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi)( bui|\\))/i, // Kindle Fire without Silk\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ],\n [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]],\n [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ],\n [\n [MODEL, /(.+)/g, \"Fire Phone $1\"],\n [VENDOR, AMAZON],\n [TYPE, MOBILE]\n ],\n [\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ],\n [MODEL, VENDOR, [TYPE, TABLET]],\n [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ],\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 ],\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 ],\n [MODEL, [VENDOR, \"HTC\"], [TYPE, TABLET]],\n [\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 ],\n [VENDOR, [MODEL, /_/g, \" \"], [TYPE, MOBILE]],\n [\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ],\n [MODEL, [VENDOR, \"Acer\"], [TYPE, TABLET]],\n [\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ],\n [MODEL, [VENDOR, \"Meizu\"], [TYPE, MOBILE]],\n [\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ],\n [MODEL, [VENDOR, \"Sharp\"], [TYPE, MOBILE]],\n [\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ],\n [VENDOR, MODEL, [TYPE, MOBILE]],\n [\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ],\n [VENDOR, MODEL, [TYPE, TABLET]],\n [\n /(surface duo)/i // Surface Duo\n ],\n [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]],\n [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ],\n [MODEL, [VENDOR, \"Fairphone\"], [TYPE, MOBILE]],\n [\n /(u304aa)/i // AT&T\n ],\n [MODEL, [VENDOR, \"AT&T\"], [TYPE, MOBILE]],\n [\n /\\bsie-(\\w*)/i // Siemens\n ],\n [MODEL, [VENDOR, \"Siemens\"], [TYPE, MOBILE]],\n [\n /\\b(rct\\w+) b/i // RCA Tablets\n ],\n [MODEL, [VENDOR, \"RCA\"], [TYPE, TABLET]],\n [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ],\n [MODEL, [VENDOR, \"Dell\"], [TYPE, TABLET]],\n [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ],\n [MODEL, [VENDOR, \"Verizon\"], [TYPE, TABLET]],\n [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ],\n [MODEL, [VENDOR, \"Barnes & Noble\"], [TYPE, TABLET]],\n [/\\b(tm\\d{3}\\w+) b/i],\n [MODEL, [VENDOR, \"NuVision\"], [TYPE, TABLET]],\n [\n /\\b(k88) b/i // ZTE K Series Tablet\n ],\n [MODEL, [VENDOR, \"ZTE\"], [TYPE, TABLET]],\n [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ],\n [MODEL, [VENDOR, \"ZTE\"], [TYPE, MOBILE]],\n [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ],\n [MODEL, [VENDOR, \"Swiss\"], [TYPE, MOBILE]],\n [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ],\n [MODEL, [VENDOR, \"Swiss\"], [TYPE, TABLET]],\n [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ],\n [MODEL, [VENDOR, \"Zeki\"], [TYPE, TABLET]],\n [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ],\n [[VENDOR, \"Dragon Touch\"], MODEL, [TYPE, TABLET]],\n [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ],\n [MODEL, [VENDOR, \"Insignia\"], [TYPE, TABLET]],\n [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ],\n [MODEL, [VENDOR, \"NextBook\"], [TYPE, TABLET]],\n [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ],\n [[VENDOR, \"Voice\"], MODEL, [TYPE, MOBILE]],\n [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ],\n [[VENDOR, \"LvTel\"], MODEL, [TYPE, MOBILE]],\n [\n /\\b(ph-1) /i // Essential PH-1\n ],\n [MODEL, [VENDOR, \"Essential\"], [TYPE, MOBILE]],\n [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ],\n [MODEL, [VENDOR, \"Envizen\"], [TYPE, TABLET]],\n [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ],\n [MODEL, [VENDOR, \"MachSpeed\"], [TYPE, TABLET]],\n [\n /\\btu_(1491) b/i // Rotor Tablets\n ],\n [MODEL, [VENDOR, \"Rotor\"], [TYPE, TABLET]],\n [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ],\n [MODEL, [VENDOR, \"Nvidia\"], [TYPE, TABLET]],\n [\n /(sprint) (\\w+)/i // Sprint Phones\n ],\n [VENDOR, MODEL, [TYPE, MOBILE]],\n [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ],\n [\n [MODEL, /\\./g, \" \"],\n [VENDOR, MICROSOFT],\n [TYPE, MOBILE]\n ],\n [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ],\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 // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ],\n [VENDOR, MODEL, [TYPE, CONSOLE]],\n [\n /droid.+; (shield) bui/i // Nvidia\n ],\n [MODEL, [VENDOR, \"Nvidia\"], [TYPE, CONSOLE]],\n [\n /(playstation [345portablevi]+)/i // Playstation\n ],\n [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]],\n [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ],\n [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]],\n [\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ],\n [VENDOR, [TYPE, SMARTTV]],\n [/hbbtv.+maple;(\\d+)/i],\n [\n [MODEL, /^/, \"SmartTV\"],\n [VENDOR, SAMSUNG],\n [TYPE, SMARTTV]\n ],\n [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ],\n [\n [VENDOR, LG],\n [TYPE, SMARTTV]\n ],\n [\n /(apple) ?tv/i // Apple TV\n ],\n [VENDOR, [MODEL, APPLE + \" TV\"], [TYPE, SMARTTV]],\n [\n /crkey/i // Google Chromecast\n ],\n [\n [MODEL, CHROME + \"cast\"],\n [VENDOR, GOOGLE],\n [TYPE, SMARTTV]\n ],\n [\n /droid.+aft(\\w)( bui|\\))/i // Fire TV\n ],\n [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]],\n [\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ],\n [MODEL, [VENDOR, \"Sharp\"], [TYPE, SMARTTV]],\n [\n /(bravia[\\w- ]+) bui/i // Sony\n ],\n [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]],\n [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w ]*; *(\\w[^;]*);([^;]*)/i // HbbTV devices\n ],\n [\n [VENDOR, trim],\n [MODEL, trim],\n [TYPE, SMARTTV]\n ],\n [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ],\n [[TYPE, SMARTTV]],\n [\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /((pebble))app/i // Pebble\n ],\n [VENDOR, MODEL, [TYPE, WEARABLE]],\n [\n /droid.+; (glass) \\d/i // Google Glass\n ],\n [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]],\n [/droid.+; (wt63?0{2,3})\\)/i],\n [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]],\n [\n /(quest( 2)?)/i // Oculus Quest\n ],\n [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]],\n [\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ],\n [VENDOR, [TYPE, EMBEDDED]],\n [\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ],\n [MODEL, [TYPE, MOBILE]],\n [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ],\n [MODEL, [TYPE, TABLET]],\n [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ],\n [[TYPE, TABLET]],\n [\n /(phone|mobile(?:[;\\/]| safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ],\n [[TYPE, MOBILE]],\n [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ],\n [MODEL, [VENDOR, \"Generic\"]]\n ],\n\n engine: [\n [\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ],\n [VERSION, [NAME, EDGE + \"HTML\"]],\n [\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ],\n [VERSION, [NAME, \"Blink\"]],\n [\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i // iCab\n ],\n [NAME, VERSION],\n [\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ],\n [VERSION, NAME]\n ],\n\n os: [\n [\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ],\n [NAME, VERSION],\n [\n /(windows) nt 6\\.2; (arm)/i, // Windows RT\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i, // Windows Phone\n /(windows)[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i\n ],\n [NAME, [VERSION, strMapper, windowsVersionMap]],\n [/(win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i],\n [\n [NAME, \"Windows\"],\n [VERSION, strMapper, windowsVersionMap]\n ],\n [\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /cfnetwork\\/.+darwin/i\n ],\n [\n [VERSION, /_/g, \".\"],\n [NAME, \"iOS\"]\n ],\n [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ],\n [\n [NAME, \"Mac OS\"],\n [VERSION, /_/g, \".\"]\n ],\n [\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86)/i // Android-x86\n ],\n [VERSION, NAME],\n [\n // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ],\n [NAME, VERSION],\n [\n /\\(bb(10);/i // BlackBerry 10\n ],\n [VERSION, [NAME, BLACKBERRY]],\n [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ],\n [VERSION, [NAME, \"Symbian\"]],\n [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ],\n [VERSION, [NAME, FIREFOX + \" OS\"]],\n [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ],\n [VERSION, [NAME, \"webOS\"]],\n [\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ],\n [VERSION, [NAME, CHROME + \"cast\"]],\n [\n /(cros) [\\w]+ ([\\w\\.]+\\w)/i // Chromium OS\n ],\n [[NAME, \"Chromium OS\"], VERSION],\n [\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\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) (\\w+)/i // Haiku\n ],\n [NAME, VERSION],\n [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ],\n [[NAME, \"Solaris\"], VERSION],\n [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX\n /(unix) ?([\\w\\.]*)/i // UNIX\n ],\n [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _ua =\n ua ||\n (typeof window !== UNDEF_TYPE &&\n window.navigator &&\n window.navigator.userAgent ? window.navigator.userAgent : EMPTY);\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser.major = majorize(_browser.version);\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n return _os;\n };\n this.getResult = function () {\n return {\n ua: this.getUA(),\n browser: this.getBrowser(),\n engine: this.getEngine(),\n os: this.getOS(),\n device: this.getDevice(),\n cpu: this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua =\n typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([\n MODEL,\n VENDOR,\n TYPE,\n CONSOLE,\n MOBILE,\n SMARTTV,\n TABLET,\n WEARABLE,\n EMBEDDED\n ]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof exports !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof define === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n})(typeof window === \"object\" ? window : this);\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","export var ServerZone;\n(function (ServerZone) {\n ServerZone[\"US\"] = \"US\";\n ServerZone[\"EU\"] = \"EU\";\n})(ServerZone || (ServerZone = {}));\n//# sourceMappingURL=config.js.map","export var IdentifyOperation;\n(function (IdentifyOperation) {\n // Base Operations to set values\n IdentifyOperation[\"SET\"] = \"$set\";\n IdentifyOperation[\"SET_ONCE\"] = \"$setOnce\";\n // Operations around modifying existing values\n IdentifyOperation[\"ADD\"] = \"$add\";\n IdentifyOperation[\"APPEND\"] = \"$append\";\n IdentifyOperation[\"PREPEND\"] = \"$prepend\";\n IdentifyOperation[\"REMOVE\"] = \"$remove\";\n // Operations around appending values *if* they aren't present\n IdentifyOperation[\"PREINSERT\"] = \"$preInsert\";\n IdentifyOperation[\"POSTINSERT\"] = \"$postInsert\";\n // Operations around removing properties/values\n IdentifyOperation[\"UNSET\"] = \"$unset\";\n IdentifyOperation[\"CLEAR_ALL\"] = \"$clearAll\";\n})(IdentifyOperation || (IdentifyOperation = {}));\nexport var RevenueProperty;\n(function (RevenueProperty) {\n RevenueProperty[\"REVENUE_PRODUCT_ID\"] = \"$productId\";\n RevenueProperty[\"REVENUE_QUANTITY\"] = \"$quantity\";\n RevenueProperty[\"REVENUE_PRICE\"] = \"$price\";\n RevenueProperty[\"REVENUE_TYPE\"] = \"$revenueType\";\n RevenueProperty[\"REVENUE\"] = \"$revenue\";\n})(RevenueProperty || (RevenueProperty = {}));\n/**\n * Strings that have special meaning when used as an event's type\n * and have different specifications.\n */\nexport var SpecialEventType;\n(function (SpecialEventType) {\n SpecialEventType[\"IDENTIFY\"] = \"$identify\";\n SpecialEventType[\"GROUP_IDENTIFY\"] = \"$groupidentify\";\n SpecialEventType[\"REVENUE\"] = \"revenue_amount\";\n})(SpecialEventType || (SpecialEventType = {}));\n//# sourceMappingURL=event.js.map","export var LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"None\"] = 0] = \"None\";\n LogLevel[LogLevel[\"Error\"] = 1] = \"Error\";\n LogLevel[LogLevel[\"Warn\"] = 2] = \"Warn\";\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\n})(LogLevel || (LogLevel = {}));\n//# sourceMappingURL=logger.js.map","export var PluginType;\n(function (PluginType) {\n PluginType[\"BEFORE\"] = \"before\";\n PluginType[\"ENRICHMENT\"] = \"enrichment\";\n PluginType[\"DESTINATION\"] = \"destination\";\n})(PluginType || (PluginType = {}));\n//# sourceMappingURL=plugin.js.map","/** The status of an event. */\nexport var Status;\n(function (Status) {\n /** The status could not be determined. */\n Status[\"Unknown\"] = \"unknown\";\n /** The event was skipped due to configuration or callbacks. */\n Status[\"Skipped\"] = \"skipped\";\n /** The event was sent successfully. */\n Status[\"Success\"] = \"success\";\n /** A user or device in the payload is currently rate limited and should try again later. */\n Status[\"RateLimit\"] = \"rate_limit\";\n /** The sent payload was too large to be processed. */\n Status[\"PayloadTooLarge\"] = \"payload_too_large\";\n /** The event could not be processed. */\n Status[\"Invalid\"] = \"invalid\";\n /** A server-side error ocurred during submission. */\n Status[\"Failed\"] = \"failed\";\n /** a server or client side error occuring when a request takes too long and is cancelled */\n Status[\"Timeout\"] = \"Timeout\";\n /** NodeJS runtime environment error.. E.g. disconnected from network */\n Status[\"SystemError\"] = \"SystemError\";\n})(Status || (Status = {}));\n//# sourceMappingURL=status.js.map","export var TransportType;\n(function (TransportType) {\n TransportType[\"XHR\"] = \"xhr\";\n TransportType[\"SendBeacon\"] = \"beacon\";\n TransportType[\"Fetch\"] = \"fetch\";\n})(TransportType || (TransportType = {}));\n//# sourceMappingURL=transport.js.map","export var UNSET_VALUE = '-';\nexport var AMPLITUDE_PREFIX = 'AMP';\nexport var STORAGE_PREFIX = \"\".concat(AMPLITUDE_PREFIX, \"_unsent\");\nexport var AMPLITUDE_SERVER_URL = 'https://api2.amplitude.com/2/httpapi';\nexport var EU_AMPLITUDE_SERVER_URL = 'https://api.eu.amplitude.com/2/httpapi';\nexport var AMPLITUDE_BATCH_SERVER_URL = 'https://api2.amplitude.com/batch';\nexport var EU_AMPLITUDE_BATCH_SERVER_URL = 'https://api.eu.amplitude.com/batch';\n//# sourceMappingURL=constants.js.map","import { __values } from \"tslib\";\nvar MAX_PROPERTY_KEYS = 1000;\nexport var isValidObject = function (properties) {\n if (Object.keys(properties).length > MAX_PROPERTY_KEYS) {\n return false;\n }\n for (var key in properties) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var value = properties[key];\n if (!isValidProperties(key, value))\n return false;\n }\n return true;\n};\nexport var isValidProperties = function (property, value) {\n var e_1, _a;\n if (typeof property !== 'string')\n return false;\n if (Array.isArray(value)) {\n var isValid = true;\n try {\n for (var value_1 = __values(value), value_1_1 = value_1.next(); !value_1_1.done; value_1_1 = value_1.next()) {\n var valueElement = value_1_1.value;\n if (Array.isArray(valueElement)) {\n return false;\n }\n else if (typeof valueElement === 'object') {\n isValid = isValid && isValidObject(valueElement);\n }\n else if (!['number', 'string'].includes(typeof valueElement)) {\n return false;\n }\n if (!isValid) {\n return false;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (value_1_1 && !value_1_1.done && (_a = value_1.return)) _a.call(value_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else if (value === null || value === undefined) {\n return false;\n }\n else if (typeof value === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return isValidObject(value);\n }\n else if (!['number', 'string', 'boolean'].includes(typeof value)) {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=valid-properties.js.map","import { __assign } from \"tslib\";\nimport { IdentifyOperation, } from '@amplitude/analytics-types';\nimport { UNSET_VALUE } from './constants';\nimport { isValidProperties } from './utils/valid-properties';\nvar Identify = /** @class */ (function () {\n function Identify() {\n this._propertySet = new Set();\n this._properties = {};\n }\n Identify.prototype.getUserProperties = function () {\n return __assign({}, this._properties);\n };\n Identify.prototype.set = function (property, value) {\n this._safeSet(IdentifyOperation.SET, property, value);\n return this;\n };\n Identify.prototype.setOnce = function (property, value) {\n this._safeSet(IdentifyOperation.SET_ONCE, property, value);\n return this;\n };\n Identify.prototype.append = function (property, value) {\n this._safeSet(IdentifyOperation.APPEND, property, value);\n return this;\n };\n Identify.prototype.prepend = function (property, value) {\n this._safeSet(IdentifyOperation.PREPEND, property, value);\n return this;\n };\n Identify.prototype.postInsert = function (property, value) {\n this._safeSet(IdentifyOperation.POSTINSERT, property, value);\n return this;\n };\n Identify.prototype.preInsert = function (property, value) {\n this._safeSet(IdentifyOperation.PREINSERT, property, value);\n return this;\n };\n Identify.prototype.remove = function (property, value) {\n this._safeSet(IdentifyOperation.REMOVE, property, value);\n return this;\n };\n Identify.prototype.add = function (property, value) {\n this._safeSet(IdentifyOperation.ADD, property, value);\n return this;\n };\n Identify.prototype.unset = function (property) {\n this._safeSet(IdentifyOperation.UNSET, property, UNSET_VALUE);\n return this;\n };\n Identify.prototype.clearAll = function () {\n // When clear all happens, all properties are unset. Reset the entire object.\n this._properties = {};\n this._properties[IdentifyOperation.CLEAR_ALL] = UNSET_VALUE;\n return this;\n };\n // Returns whether or not this set actually worked.\n Identify.prototype._safeSet = function (operation, property, value) {\n if (this._validate(operation, property, value)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var userPropertyMap = this._properties[operation];\n if (userPropertyMap === undefined) {\n userPropertyMap = {};\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this._properties[operation] = userPropertyMap;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n userPropertyMap[property] = value;\n this._propertySet.add(property);\n return true;\n }\n return false;\n };\n Identify.prototype._validate = function (operation, property, value) {\n if (this._properties[IdentifyOperation.CLEAR_ALL] !== undefined) {\n // clear all already set. Skipping operation;\n return false;\n }\n if (this._propertySet.has(property)) {\n // Property already used. Skipping operation\n return false;\n }\n if (operation === IdentifyOperation.ADD) {\n return typeof value === 'number';\n }\n if (operation !== IdentifyOperation.UNSET && operation !== IdentifyOperation.REMOVE) {\n return isValidProperties(property, value);\n }\n return true;\n };\n return Identify;\n}());\nexport { Identify };\n//# sourceMappingURL=identify.js.map","import { __assign } from \"tslib\";\nimport { SpecialEventType, } from '@amplitude/analytics-types';\nimport { Identify } from '../identify';\nexport var createTrackEvent = function (eventInput, eventProperties, eventOptions) {\n var baseEvent = typeof eventInput === 'string' ? { event_type: eventInput } : eventInput;\n return __assign(__assign(__assign({}, baseEvent), eventOptions), (eventProperties && { event_properties: eventProperties }));\n};\nexport var createIdentifyEvent = function (identify, eventOptions) {\n var identifyEvent = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.IDENTIFY, user_properties: identify.getUserProperties() });\n return identifyEvent;\n};\nexport var createGroupIdentifyEvent = function (groupType, groupName, identify, eventOptions) {\n var _a;\n var groupIdentify = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.GROUP_IDENTIFY, group_properties: identify.getUserProperties(), groups: (_a = {},\n _a[groupType] = groupName,\n _a) });\n return groupIdentify;\n};\nexport var createGroupEvent = function (groupType, groupName, eventOptions) {\n var _a;\n var identify = new Identify();\n identify.set(groupType, groupName);\n var groupEvent = __assign(__assign({}, eventOptions), { event_type: SpecialEventType.IDENTIFY, user_properties: identify.getUserProperties(), groups: (_a = {},\n _a[groupType] = groupName,\n _a) });\n return groupEvent;\n};\nexport var createRevenueEvent = function (revenue, eventOptions) {\n return __assign(__assign({}, eventOptions), { event_type: SpecialEventType.REVENUE, event_properties: revenue.getEventProperties() });\n};\n//# sourceMappingURL=event-builder.js.map","import { Status } from '@amplitude/analytics-types';\nexport var buildResult = function (event, code, message) {\n if (code === void 0) { code = 0; }\n if (message === void 0) { message = Status.Unknown; }\n return { event: event, code: code, message: message };\n};\n//# sourceMappingURL=result-builder.js.map","import { __assign, __awaiter, __generator, __read, __values } from \"tslib\";\nimport { PluginType, } from '@amplitude/analytics-types';\nimport { buildResult } from './utils/result-builder';\nvar Timeline = /** @class */ (function () {\n function Timeline() {\n this.queue = [];\n // Flag to guarantee one schedule apply is running\n this.applying = false;\n // Flag indicates whether timeline is ready to process event\n // Events collected before timeline is ready will stay in the queue to be processed later\n this.isReady = false;\n this.plugins = [];\n }\n Timeline.prototype.register = function (plugin, config) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, plugin.setup(config)];\n case 1:\n _a.sent();\n this.plugins.push(plugin);\n return [2 /*return*/];\n }\n });\n });\n };\n Timeline.prototype.deregister = function (pluginName) {\n this.plugins.splice(this.plugins.findIndex(function (plugin) { return plugin.name === pluginName; }), 1);\n return Promise.resolve();\n };\n Timeline.prototype.reset = function () {\n this.applying = false;\n this.isReady = false;\n this.plugins = [];\n };\n Timeline.prototype.push = function (event) {\n var _this = this;\n return new Promise(function (resolve) {\n _this.queue.push([event, resolve]);\n _this.scheduleApply(0);\n });\n };\n Timeline.prototype.scheduleApply = function (timeout) {\n var _this = this;\n if (!this.isReady || this.applying)\n return;\n this.applying = true;\n setTimeout(function () {\n void _this.apply(_this.queue.shift()).then(function () {\n _this.applying = false;\n if (_this.queue.length > 0) {\n _this.scheduleApply(0);\n }\n });\n }, timeout);\n };\n Timeline.prototype.apply = function (item) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, event, _b, resolve, before, before_1, before_1_1, plugin, e_1_1, enrichment, enrichment_1, enrichment_1_1, plugin, e_2_1, destination, executeDestinations;\n var e_1, _c, e_2, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (!item) {\n return [2 /*return*/];\n }\n _a = __read(item, 1), event = _a[0];\n _b = __read(item, 2), resolve = _b[1];\n before = this.plugins.filter(function (plugin) { return plugin.type === PluginType.BEFORE; });\n _e.label = 1;\n case 1:\n _e.trys.push([1, 6, 7, 8]);\n before_1 = __values(before), before_1_1 = before_1.next();\n _e.label = 2;\n case 2:\n if (!!before_1_1.done) return [3 /*break*/, 5];\n plugin = before_1_1.value;\n return [4 /*yield*/, plugin.execute(__assign({}, event))];\n case 3:\n event = _e.sent();\n _e.label = 4;\n case 4:\n before_1_1 = before_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_1_1 = _e.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (before_1_1 && !before_1_1.done && (_c = before_1.return)) _c.call(before_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 8:\n enrichment = this.plugins.filter(function (plugin) { return plugin.type === PluginType.ENRICHMENT; });\n _e.label = 9;\n case 9:\n _e.trys.push([9, 14, 15, 16]);\n enrichment_1 = __values(enrichment), enrichment_1_1 = enrichment_1.next();\n _e.label = 10;\n case 10:\n if (!!enrichment_1_1.done) return [3 /*break*/, 13];\n plugin = enrichment_1_1.value;\n return [4 /*yield*/, plugin.execute(__assign({}, event))];\n case 11:\n event = _e.sent();\n _e.label = 12;\n case 12:\n enrichment_1_1 = enrichment_1.next();\n return [3 /*break*/, 10];\n case 13: return [3 /*break*/, 16];\n case 14:\n e_2_1 = _e.sent();\n e_2 = { error: e_2_1 };\n return [3 /*break*/, 16];\n case 15:\n try {\n if (enrichment_1_1 && !enrichment_1_1.done && (_d = enrichment_1.return)) _d.call(enrichment_1);\n }\n finally { if (e_2) throw e_2.error; }\n return [7 /*endfinally*/];\n case 16:\n destination = this.plugins.filter(function (plugin) { return plugin.type === PluginType.DESTINATION; });\n executeDestinations = destination.map(function (plugin) {\n var eventClone = __assign({}, event);\n return plugin.execute(eventClone).catch(function (e) { return buildResult(eventClone, 0, String(e)); });\n });\n void Promise.all(executeDestinations).then(function (_a) {\n var _b = __read(_a, 1), result = _b[0];\n resolve(result);\n });\n return [2 /*return*/];\n }\n });\n });\n };\n Timeline.prototype.flush = function () {\n return __awaiter(this, void 0, void 0, function () {\n var queue, destination, executeDestinations;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n queue = this.queue;\n this.queue = [];\n return [4 /*yield*/, Promise.all(queue.map(function (item) { return _this.apply(item); }))];\n case 1:\n _a.sent();\n destination = this.plugins.filter(function (plugin) { return plugin.type === PluginType.DESTINATION; });\n executeDestinations = destination.map(function (plugin) {\n return plugin.flush && plugin.flush();\n });\n return [4 /*yield*/, Promise.all(executeDestinations)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return Timeline;\n}());\nexport { Timeline };\n//# sourceMappingURL=timeline.js.map","import { __awaiter, __generator, __values } from \"tslib\";\nimport { createGroupIdentifyEvent, createIdentifyEvent, createTrackEvent, createRevenueEvent, createGroupEvent, } from './utils/event-builder';\nimport { Timeline } from './timeline';\nimport { buildResult } from './utils/result-builder';\nimport { OPT_OUT_MESSAGE } from './messages';\nvar AmplitudeCore = /** @class */ (function () {\n function AmplitudeCore(name) {\n if (name === void 0) { name = '$default'; }\n this.initializing = false;\n this.q = [];\n this.logEvent = this.track.bind(this);\n this.timeline = new Timeline();\n this.name = name;\n }\n AmplitudeCore.prototype._init = function (config) {\n return __awaiter(this, void 0, void 0, function () {\n var queuedFunctions, queuedFunctions_1, queuedFunctions_1_1, queuedFunction, e_1_1;\n var e_1, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.config = config;\n this.timeline.reset();\n queuedFunctions = this.q;\n this.q = [];\n _b.label = 1;\n case 1:\n _b.trys.push([1, 6, 7, 8]);\n queuedFunctions_1 = __values(queuedFunctions), queuedFunctions_1_1 = queuedFunctions_1.next();\n _b.label = 2;\n case 2:\n if (!!queuedFunctions_1_1.done) return [3 /*break*/, 5];\n queuedFunction = queuedFunctions_1_1.value;\n return [4 /*yield*/, queuedFunction()];\n case 3:\n _b.sent();\n _b.label = 4;\n case 4:\n queuedFunctions_1_1 = queuedFunctions_1.next();\n return [3 /*break*/, 2];\n case 5: return [3 /*break*/, 8];\n case 6:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 8];\n case 7:\n try {\n if (queuedFunctions_1_1 && !queuedFunctions_1_1.done && (_a = queuedFunctions_1.return)) _a.call(queuedFunctions_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeCore.prototype.track = function (eventInput, eventProperties, eventOptions) {\n var event = createTrackEvent(eventInput, eventProperties, eventOptions);\n return this.dispatch(event);\n };\n AmplitudeCore.prototype.identify = function (identify, eventOptions) {\n var event = createIdentifyEvent(identify, eventOptions);\n return this.dispatch(event);\n };\n AmplitudeCore.prototype.groupIdentify = function (groupType, groupName, identify, eventOptions) {\n var event = createGroupIdentifyEvent(groupType, groupName, identify, eventOptions);\n return this.dispatch(event);\n };\n AmplitudeCore.prototype.setGroup = function (groupType, groupName, eventOptions) {\n var event = createGroupEvent(groupType, groupName, eventOptions);\n return this.dispatch(event);\n };\n AmplitudeCore.prototype.revenue = function (revenue, eventOptions) {\n var event = createRevenueEvent(revenue, eventOptions);\n return this.dispatch(event);\n };\n AmplitudeCore.prototype.add = function (plugin) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this.config) {\n this.q.push(this.add.bind(this, plugin));\n return [2 /*return*/];\n }\n return [2 /*return*/, this.timeline.register(plugin, this.config)];\n });\n });\n };\n AmplitudeCore.prototype.remove = function (pluginName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this.config) {\n this.q.push(this.remove.bind(this, pluginName));\n return [2 /*return*/];\n }\n return [2 /*return*/, this.timeline.deregister(pluginName)];\n });\n });\n };\n AmplitudeCore.prototype.dispatch = function (event) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var result, e_2, message;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 2, , 3]);\n // skip event processing if opt out\n if ((_a = this.config) === null || _a === void 0 ? void 0 : _a.optOut) {\n return [2 /*return*/, buildResult(event, 0, OPT_OUT_MESSAGE)];\n }\n return [4 /*yield*/, this.timeline.push(event)];\n case 1:\n result = _b.sent();\n if (result.code === 200) {\n this.config.loggerProvider.log(result.message);\n }\n else {\n this.config.loggerProvider.error(result.message);\n }\n return [2 /*return*/, result];\n case 2:\n e_2 = _b.sent();\n message = String(e_2);\n this.config.loggerProvider.error(message);\n return [2 /*return*/, buildResult(event, 0, message)];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeCore.prototype.setOptOut = function (optOut) {\n if (!this.config) {\n this.q.push(this.setOptOut.bind(this, Boolean(optOut)));\n return;\n }\n this.config.optOut = Boolean(optOut);\n };\n AmplitudeCore.prototype.flush = function () {\n return this.timeline.flush();\n };\n return AmplitudeCore;\n}());\nexport { AmplitudeCore };\n//# sourceMappingURL=core-client.js.map","export var SUCCESS_MESSAGE = 'Event tracked successfully';\nexport var UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport var MAX_RETRIES_EXCEEDED_MESSAGE = 'Event rejected due to exceeded retry count';\nexport var OPT_OUT_MESSAGE = 'Event skipped due to optOut config';\nexport var MISSING_API_KEY_MESSAGE = 'Event rejected due to missing API key';\nexport var INVALID_API_KEY = 'Invalid API key';\n//# sourceMappingURL=messages.js.map","import { __assign } from \"tslib\";\nimport { RevenueProperty, } from '@amplitude/analytics-types';\nimport { isValidObject } from './utils/valid-properties';\nvar Revenue = /** @class */ (function () {\n function Revenue() {\n this.productId = '';\n this.quantity = 1;\n this.price = 0.0;\n }\n Revenue.prototype.setProductId = function (productId) {\n this.productId = productId;\n return this;\n };\n Revenue.prototype.setQuantity = function (quantity) {\n if (quantity > 0) {\n this.quantity = quantity;\n }\n return this;\n };\n Revenue.prototype.setPrice = function (price) {\n this.price = price;\n return this;\n };\n Revenue.prototype.setRevenueType = function (revenueType) {\n this.revenueType = revenueType;\n return this;\n };\n Revenue.prototype.setRevenue = function (revenue) {\n this.revenue = revenue;\n return this;\n };\n Revenue.prototype.setEventProperties = function (properties) {\n if (isValidObject(properties)) {\n this.properties = properties;\n }\n return this;\n };\n Revenue.prototype.getEventProperties = function () {\n var eventProperties = this.properties ? __assign({}, this.properties) : {};\n eventProperties[RevenueProperty.REVENUE_PRODUCT_ID] = this.productId;\n eventProperties[RevenueProperty.REVENUE_QUANTITY] = this.quantity;\n eventProperties[RevenueProperty.REVENUE_PRICE] = this.price;\n eventProperties[RevenueProperty.REVENUE_TYPE] = this.revenueType;\n eventProperties[RevenueProperty.REVENUE] = this.revenue;\n return eventProperties;\n };\n return Revenue;\n}());\nexport { Revenue };\n//# sourceMappingURL=revenue.js.map","import { LogLevel } from '@amplitude/analytics-types';\nvar PREFIX = 'Amplitude Logger ';\nvar Logger = /** @class */ (function () {\n function Logger() {\n this.logLevel = LogLevel.None;\n }\n Logger.prototype.disable = function () {\n this.logLevel = LogLevel.None;\n };\n Logger.prototype.enable = function (logLevel) {\n if (logLevel === void 0) { logLevel = LogLevel.Warn; }\n this.logLevel = logLevel;\n };\n Logger.prototype.log = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Verbose) {\n return;\n }\n console.log(\"\".concat(PREFIX, \"[Log]: \").concat(args.join(' ')));\n };\n Logger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Warn) {\n return;\n }\n console.warn(\"\".concat(PREFIX, \"[Warn]: \").concat(args.join(' ')));\n };\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (this.logLevel < LogLevel.Error) {\n return;\n }\n console.error(\"\".concat(PREFIX, \"[Error]: \").concat(args.join(' ')));\n };\n return Logger;\n}());\nexport { Logger };\n//# sourceMappingURL=logger.js.map","import { LogLevel, ServerZone, } from '@amplitude/analytics-types';\nimport { AMPLITUDE_SERVER_URL, AMPLITUDE_BATCH_SERVER_URL, EU_AMPLITUDE_SERVER_URL, EU_AMPLITUDE_BATCH_SERVER_URL, } from './constants';\nimport { Logger } from './logger';\nexport var getDefaultConfig = function () { return ({\n flushMaxRetries: 12,\n flushQueueSize: 200,\n flushIntervalMillis: 10000,\n logLevel: LogLevel.Warn,\n loggerProvider: new Logger(),\n optOut: false,\n serverUrl: AMPLITUDE_SERVER_URL,\n serverZone: ServerZone.US,\n useBatch: false,\n}); };\nvar Config = /** @class */ (function () {\n function Config(options) {\n var _a, _b, _c;\n this._optOut = false;\n var defaultConfig = getDefaultConfig();\n this.apiKey = options.apiKey;\n this.flushIntervalMillis = options.flushIntervalMillis || defaultConfig.flushIntervalMillis;\n this.flushMaxRetries = options.flushMaxRetries || defaultConfig.flushMaxRetries;\n this.flushQueueSize = options.flushQueueSize || defaultConfig.flushQueueSize;\n this.loggerProvider = options.loggerProvider || defaultConfig.loggerProvider;\n this.logLevel = (_a = options.logLevel) !== null && _a !== void 0 ? _a : defaultConfig.logLevel;\n this.minIdLength = options.minIdLength;\n this.plan = options.plan;\n this.ingestionMetadata = options.ingestionMetadata;\n this.optOut = (_b = options.optOut) !== null && _b !== void 0 ? _b : defaultConfig.optOut;\n this.serverUrl = options.serverUrl;\n this.serverZone = options.serverZone || defaultConfig.serverZone;\n this.storageProvider = options.storageProvider;\n this.transportProvider = options.transportProvider;\n this.useBatch = (_c = options.useBatch) !== null && _c !== void 0 ? _c : defaultConfig.useBatch;\n this.loggerProvider.enable(this.logLevel);\n var serverConfig = createServerConfig(options.serverUrl, options.serverZone, options.useBatch);\n this.serverZone = serverConfig.serverZone;\n this.serverUrl = serverConfig.serverUrl;\n }\n Object.defineProperty(Config.prototype, \"optOut\", {\n get: function () {\n return this._optOut;\n },\n set: function (optOut) {\n this._optOut = optOut;\n },\n enumerable: false,\n configurable: true\n });\n return Config;\n}());\nexport { Config };\nexport var getServerUrl = function (serverZone, useBatch) {\n if (serverZone === ServerZone.EU) {\n return useBatch ? EU_AMPLITUDE_BATCH_SERVER_URL : EU_AMPLITUDE_SERVER_URL;\n }\n return useBatch ? AMPLITUDE_BATCH_SERVER_URL : AMPLITUDE_SERVER_URL;\n};\nexport var createServerConfig = function (serverUrl, serverZone, useBatch) {\n if (serverUrl === void 0) { serverUrl = ''; }\n if (serverZone === void 0) { serverZone = getDefaultConfig().serverZone; }\n if (useBatch === void 0) { useBatch = getDefaultConfig().useBatch; }\n if (serverUrl) {\n return { serverUrl: serverUrl, serverZone: undefined };\n }\n var _serverZone = [ServerZone.US, ServerZone.EU].includes(serverZone) ? serverZone : getDefaultConfig().serverZone;\n return {\n serverZone: _serverZone,\n serverUrl: getServerUrl(_serverZone, useBatch),\n };\n};\n//# sourceMappingURL=config.js.map","import { __awaiter, __generator, __read, __rest, __spreadArray } from \"tslib\";\nimport { PluginType, Status, } from '@amplitude/analytics-types';\nimport { INVALID_API_KEY, MAX_RETRIES_EXCEEDED_MESSAGE, MISSING_API_KEY_MESSAGE, SUCCESS_MESSAGE, UNEXPECTED_ERROR_MESSAGE, } from '../messages';\nimport { STORAGE_PREFIX } from '../constants';\nimport { chunk } from '../utils/chunk';\nimport { buildResult } from '../utils/result-builder';\nimport { createServerConfig } from '../config';\nvar Destination = /** @class */ (function () {\n function Destination() {\n this.name = 'amplitude';\n this.type = PluginType.DESTINATION;\n this.retryTimeout = 1000;\n this.throttleTimeout = 30000;\n this.storageKey = '';\n this.scheduled = false;\n this.queue = [];\n }\n Destination.prototype.setup = function (config) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var unsent;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n this.config = config;\n this.storageKey = \"\".concat(STORAGE_PREFIX, \"_\").concat(this.config.apiKey.substring(0, 10));\n return [4 /*yield*/, ((_a = this.config.storageProvider) === null || _a === void 0 ? void 0 : _a.get(this.storageKey))];\n case 1:\n unsent = _b.sent();\n this.saveEvents(); // sets storage to '[]'\n if (unsent && unsent.length > 0) {\n void Promise.all(unsent.map(function (event) { return _this.execute(event); })).catch();\n }\n return [2 /*return*/, Promise.resolve(undefined)];\n }\n });\n });\n };\n Destination.prototype.execute = function (event) {\n var _this = this;\n return new Promise(function (resolve) {\n var context = {\n event: event,\n attempts: 0,\n callback: function (result) { return resolve(result); },\n timeout: 0,\n };\n void _this.addToQueue(context);\n });\n };\n Destination.prototype.addToQueue = function () {\n var _this = this;\n var list = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n list[_i] = arguments[_i];\n }\n var tryable = list.filter(function (context) {\n if (context.attempts < _this.config.flushMaxRetries) {\n context.attempts += 1;\n return true;\n }\n void _this.fulfillRequest([context], 500, MAX_RETRIES_EXCEEDED_MESSAGE);\n return false;\n });\n tryable.forEach(function (context) {\n _this.queue = _this.queue.concat(context);\n if (context.timeout === 0) {\n _this.schedule(_this.config.flushIntervalMillis);\n return;\n }\n setTimeout(function () {\n context.timeout = 0;\n _this.schedule(0);\n }, context.timeout);\n });\n this.saveEvents();\n };\n Destination.prototype.schedule = function (timeout) {\n var _this = this;\n if (this.scheduled)\n return;\n this.scheduled = true;\n setTimeout(function () {\n void _this.flush(true).then(function () {\n _this.scheduled = false;\n if (_this.queue.length > 0) {\n _this.schedule(timeout);\n }\n });\n }, timeout);\n };\n Destination.prototype.flush = function (useRetry) {\n if (useRetry === void 0) { useRetry = false; }\n return __awaiter(this, void 0, void 0, function () {\n var list, later, batches;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n list = [];\n later = [];\n this.queue.forEach(function (context) { return (context.timeout === 0 ? list.push(context) : later.push(context)); });\n this.queue = later;\n batches = chunk(list, this.config.flushQueueSize);\n return [4 /*yield*/, Promise.all(batches.map(function (batch) { return _this.send(batch, useRetry); }))];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Destination.prototype.send = function (list, useRetry) {\n if (useRetry === void 0) { useRetry = true; }\n return __awaiter(this, void 0, void 0, function () {\n var payload, serverUrl, res, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.config.apiKey) {\n return [2 /*return*/, this.fulfillRequest(list, 400, MISSING_API_KEY_MESSAGE)];\n }\n payload = {\n api_key: this.config.apiKey,\n events: list.map(function (context) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var _a = context.event, extra = _a.extra, eventWithoutExtra = __rest(_a, [\"extra\"]);\n return eventWithoutExtra;\n }),\n options: {\n min_id_length: this.config.minIdLength,\n },\n };\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n serverUrl = createServerConfig(this.config.serverUrl, this.config.serverZone, this.config.useBatch).serverUrl;\n return [4 /*yield*/, this.config.transportProvider.send(serverUrl, payload)];\n case 2:\n res = _a.sent();\n if (res === null) {\n this.fulfillRequest(list, 0, UNEXPECTED_ERROR_MESSAGE);\n return [2 /*return*/];\n }\n if (!useRetry) {\n this.fulfillRequest(list, res.statusCode, res.status);\n return [2 /*return*/];\n }\n this.handleReponse(res, list);\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n this.fulfillRequest(list, 0, String(e_1));\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n Destination.prototype.handleReponse = function (res, list) {\n var status = res.status;\n switch (status) {\n case Status.Success:\n this.handleSuccessResponse(res, list);\n break;\n case Status.Invalid:\n this.handleInvalidResponse(res, list);\n break;\n case Status.PayloadTooLarge:\n this.handlePayloadTooLargeResponse(res, list);\n break;\n case Status.RateLimit:\n this.handleRateLimitResponse(res, list);\n break;\n default:\n this.handleOtherReponse(list);\n }\n };\n Destination.prototype.handleSuccessResponse = function (res, list) {\n this.fulfillRequest(list, res.statusCode, SUCCESS_MESSAGE);\n };\n Destination.prototype.handleInvalidResponse = function (res, list) {\n var _this = this;\n if (res.body.missingField || res.body.error.startsWith(INVALID_API_KEY)) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n var dropIndex = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(Object.values(res.body.eventsWithInvalidFields)), false), __read(Object.values(res.body.eventsWithMissingFields)), false), __read(Object.values(res.body.eventsWithInvalidIdLengths)), false), __read(res.body.silencedEvents), false).flat();\n var dropIndexSet = new Set(dropIndex);\n var retry = list.filter(function (context, index) {\n if (dropIndexSet.has(index)) {\n _this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n return true;\n });\n this.addToQueue.apply(this, __spreadArray([], __read(retry), false));\n };\n Destination.prototype.handlePayloadTooLargeResponse = function (res, list) {\n if (list.length === 1) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n this.config.flushQueueSize /= 2;\n this.addToQueue.apply(this, __spreadArray([], __read(list), false));\n };\n Destination.prototype.handleRateLimitResponse = function (res, list) {\n var _this = this;\n var dropUserIds = Object.keys(res.body.exceededDailyQuotaUsers);\n var dropDeviceIds = Object.keys(res.body.exceededDailyQuotaDevices);\n var throttledIndex = res.body.throttledEvents;\n var dropUserIdsSet = new Set(dropUserIds);\n var dropDeviceIdsSet = new Set(dropDeviceIds);\n var throttledIndexSet = new Set(throttledIndex);\n var retry = list.filter(function (context, index) {\n if ((context.event.user_id && dropUserIdsSet.has(context.event.user_id)) ||\n (context.event.device_id && dropDeviceIdsSet.has(context.event.device_id))) {\n _this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n if (throttledIndexSet.has(index)) {\n context.timeout = _this.throttleTimeout;\n }\n return true;\n });\n this.addToQueue.apply(this, __spreadArray([], __read(retry), false));\n };\n Destination.prototype.handleOtherReponse = function (list) {\n var _this = this;\n this.addToQueue.apply(this, __spreadArray([], __read(list.map(function (context) {\n context.timeout = context.attempts * _this.retryTimeout;\n return context;\n })), false));\n };\n Destination.prototype.fulfillRequest = function (list, code, message) {\n this.saveEvents();\n list.forEach(function (context) { return context.callback(buildResult(context.event, code, message)); });\n };\n /**\n * Saves events to storage\n * This is called on\n * 1) new events are added to queue; or\n * 2) response comes back for a request\n */\n Destination.prototype.saveEvents = function () {\n if (!this.config.storageProvider) {\n return;\n }\n var events = Array.from(this.queue.map(function (context) { return context.event; }));\n void this.config.storageProvider.set(this.storageKey, events);\n };\n return Destination;\n}());\nexport { Destination };\n//# sourceMappingURL=destination.js.map","// Creates an array of elements split into groups the length of size.\n// If array can't be split evenly, the final chunk will be the remaining elements.\n// Works similary as https://lodash.com/docs/4.17.15#chunk\nexport var chunk = function (arr, size) {\n var chunkSize = Math.max(size, 1);\n return arr.reduce(function (chunks, element, index) {\n var chunkIndex = Math.floor(index / chunkSize);\n if (!chunks[chunkIndex]) {\n chunks[chunkIndex] = [];\n }\n chunks[chunkIndex].push(element);\n return chunks;\n }, []);\n};\n//# sourceMappingURL=chunk.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var returnWrapper = function (fn) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return ({\n promise: fn.apply(void 0, __spreadArray([], __read(args), false)),\n });\n };\n};\n//# sourceMappingURL=return-wrapper.js.map","/**\n * Source: [jed's gist]{@link https://gist.github.com/982883}.\n * Returns a random v4 UUID of the form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,\n * where each x is replaced with a random hexadecimal digit from 0 to f, and\n * y is replaced with a random hexadecimal digit from 8 to b.\n * Used to generate UUIDs for deviceIds.\n * @private\n */\nexport var UUID = function (a) {\n return a // if the placeholder was passed, return\n ? // a random number from 0 to 15\n (a ^ // unless b is 8,\n ((Math.random() * // in which case\n 16) >> // a random number from\n (a / 4))) // 8 to 11\n .toString(16) // in hexadecimal\n : // or otherwise a concatenated string:\n (String(1e7) + // 10000000 +\n String(-1e3) + // -1000 +\n String(-4e3) + // -4000 +\n String(-8e3) + // -80000000 +\n String(-1e11)) // -100000000000,\n .replace(\n // replacing\n /[018]/g, // zeroes, ones, and eights with\n UUID);\n};\n//# sourceMappingURL=uuid.js.map","import { __awaiter, __generator } from \"tslib\";\nvar MemoryStorage = /** @class */ (function () {\n function MemoryStorage() {\n this.memoryStorage = new Map();\n }\n MemoryStorage.prototype.isEnabled = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, true];\n });\n });\n };\n MemoryStorage.prototype.get = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.memoryStorage.get(key)];\n });\n });\n };\n MemoryStorage.prototype.getRaw = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.get(key)];\n case 1:\n value = _a.sent();\n return [2 /*return*/, value ? JSON.stringify(value) : undefined];\n }\n });\n });\n };\n MemoryStorage.prototype.set = function (key, value) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.memoryStorage.set(key, value);\n return [2 /*return*/];\n });\n });\n };\n MemoryStorage.prototype.remove = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.memoryStorage.delete(key);\n return [2 /*return*/];\n });\n });\n };\n MemoryStorage.prototype.reset = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this.memoryStorage.clear();\n return [2 /*return*/];\n });\n });\n };\n return MemoryStorage;\n}());\nexport { MemoryStorage };\n//# sourceMappingURL=memory.js.map","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\nimport { Status } from '@amplitude/analytics-types';\nvar BaseTransport = /** @class */ (function () {\n function BaseTransport() {\n }\n BaseTransport.prototype.send = function (_serverUrl, _payload) {\n return Promise.resolve(null);\n };\n BaseTransport.prototype.buildResponse = function (responseJSON) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;\n if (typeof responseJSON !== 'object') {\n return null;\n }\n var statusCode = responseJSON.code || 0;\n var status = this.buildStatus(statusCode);\n switch (status) {\n case Status.Success:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n eventsIngested: (_a = responseJSON.events_ingested) !== null && _a !== void 0 ? _a : 0,\n payloadSizeBytes: (_b = responseJSON.payload_size_bytes) !== null && _b !== void 0 ? _b : 0,\n serverUploadTime: (_c = responseJSON.server_upload_time) !== null && _c !== void 0 ? _c : 0,\n },\n };\n case Status.Invalid:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_d = responseJSON.error) !== null && _d !== void 0 ? _d : '',\n missingField: (_e = responseJSON.missing_field) !== null && _e !== void 0 ? _e : '',\n eventsWithInvalidFields: (_f = responseJSON.events_with_invalid_fields) !== null && _f !== void 0 ? _f : {},\n eventsWithMissingFields: (_g = responseJSON.events_with_missing_fields) !== null && _g !== void 0 ? _g : {},\n eventsWithInvalidIdLengths: (_h = responseJSON.events_with_invalid_id_lengths) !== null && _h !== void 0 ? _h : {},\n epsThreshold: (_j = responseJSON.eps_threshold) !== null && _j !== void 0 ? _j : 0,\n exceededDailyQuotaDevices: (_k = responseJSON.exceeded_daily_quota_devices) !== null && _k !== void 0 ? _k : {},\n silencedDevices: (_l = responseJSON.silenced_devices) !== null && _l !== void 0 ? _l : [],\n silencedEvents: (_m = responseJSON.silenced_events) !== null && _m !== void 0 ? _m : [],\n throttledDevices: (_o = responseJSON.throttled_devices) !== null && _o !== void 0 ? _o : {},\n throttledEvents: (_p = responseJSON.throttled_events) !== null && _p !== void 0 ? _p : [],\n },\n };\n case Status.PayloadTooLarge:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_q = responseJSON.error) !== null && _q !== void 0 ? _q : '',\n },\n };\n case Status.RateLimit:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_r = responseJSON.error) !== null && _r !== void 0 ? _r : '',\n epsThreshold: (_s = responseJSON.eps_threshold) !== null && _s !== void 0 ? _s : 0,\n throttledDevices: (_t = responseJSON.throttled_devices) !== null && _t !== void 0 ? _t : {},\n throttledUsers: (_u = responseJSON.throttled_users) !== null && _u !== void 0 ? _u : {},\n exceededDailyQuotaDevices: (_v = responseJSON.exceeded_daily_quota_devices) !== null && _v !== void 0 ? _v : {},\n exceededDailyQuotaUsers: (_w = responseJSON.exceeded_daily_quota_users) !== null && _w !== void 0 ? _w : {},\n throttledEvents: (_x = responseJSON.throttled_events) !== null && _x !== void 0 ? _x : [],\n },\n };\n case Status.Timeout:\n default:\n return {\n status: status,\n statusCode: statusCode,\n };\n }\n };\n BaseTransport.prototype.buildStatus = function (code) {\n if (code >= 200 && code < 300) {\n return Status.Success;\n }\n if (code === 429) {\n return Status.RateLimit;\n }\n if (code === 413) {\n return Status.PayloadTooLarge;\n }\n if (code === 408) {\n return Status.Timeout;\n }\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n if (code >= 500) {\n return Status.Failed;\n }\n return Status.Unknown;\n };\n return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","export var getQueryParams = function () {\n /* istanbul ignore if */\n if (typeof window === 'undefined' || !window.location || !window.location.search) {\n return {};\n }\n var pairs = window.location.search.substring(1).split('&').filter(Boolean);\n var params = pairs.reduce(function (acc, curr) {\n var query = curr.split('=', 2);\n var key = tryDecodeURIComponent(query[0]);\n var value = tryDecodeURIComponent(query[1]);\n if (!value) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n return params;\n};\nexport var tryDecodeURIComponent = function (value) {\n if (value === void 0) { value = ''; }\n try {\n return decodeURIComponent(value);\n }\n catch (_a) {\n return '';\n }\n};\n//# sourceMappingURL=query-params.js.map","import { __assign, __awaiter, __extends, __generator } from \"tslib\";\nimport { AmplitudeCore, Destination, Identify, Revenue, UUID, returnWrapper } from '@amplitude/analytics-core';\nimport { CampaignTracker, getAnalyticsConnector, IdentityEventSender } from '@amplitude/analytics-client-common';\nimport { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';\nimport { Context } from './plugins/context';\nimport { useBrowserConfig, createTransport, createFlexibleStorage } from './config';\nimport { parseOldCookies } from './cookie-migration';\nvar AmplitudeBrowser = /** @class */ (function (_super) {\n __extends(AmplitudeBrowser, _super);\n function AmplitudeBrowser() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AmplitudeBrowser.prototype.init = function (apiKey, userId, options) {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function () {\n var oldCookies, browserOptions, isNewSession, connector;\n var _this = this;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n // Step 0: Block concurrent initialization\n if (this.initializing) {\n return [2 /*return*/];\n }\n this.initializing = true;\n return [4 /*yield*/, parseOldCookies(apiKey, options)];\n case 1:\n oldCookies = _d.sent();\n return [4 /*yield*/, useBrowserConfig(apiKey, userId || oldCookies.userId, __assign(__assign({}, options), { deviceId: (_a = oldCookies.deviceId) !== null && _a !== void 0 ? _a : options === null || options === void 0 ? void 0 : options.deviceId, sessionId: (_b = oldCookies.sessionId) !== null && _b !== void 0 ? _b : options === null || options === void 0 ? void 0 : options.sessionId, optOut: (_c = options === null || options === void 0 ? void 0 : options.optOut) !== null && _c !== void 0 ? _c : oldCookies.optOut, lastEventTime: oldCookies.lastEventTime }))];\n case 2:\n browserOptions = _d.sent();\n return [4 /*yield*/, _super.prototype._init.call(this, browserOptions)];\n case 3:\n _d.sent();\n isNewSession = !this.config.lastEventTime;\n if (!this.config.sessionId ||\n (this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout)) {\n // Either\n // 1) No previous session; or\n // 2) Previous session expired\n this.setSessionId(Date.now());\n isNewSession = true;\n }\n connector = getAnalyticsConnector();\n connector.eventBridge.setEventReceiver(function (event) {\n void _this.track(event.eventType, event.eventProperties);\n });\n connector.identityStore.setIdentity({\n userId: this.config.userId,\n deviceId: this.config.deviceId,\n });\n // Step 4: Install plugins\n // Do not track any events before this\n return [4 /*yield*/, this.add(new Context())];\n case 4:\n // Step 4: Install plugins\n // Do not track any events before this\n _d.sent();\n return [4 /*yield*/, this.add(new IdentityEventSender())];\n case 5:\n _d.sent();\n return [4 /*yield*/, this.add(new Destination())];\n case 6:\n _d.sent();\n this.initializing = false;\n // Step 5: Set timeline ready for processing events\n // Send existing events, which might be collected by track before init\n this.timeline.isReady = true;\n if (!this.config.optOut) {\n this.timeline.scheduleApply(0);\n }\n // Step 6: Track attributions\n return [4 /*yield*/, this.runAttributionStrategy(browserOptions.attribution, isNewSession)];\n case 7:\n // Step 6: Track attributions\n _d.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeBrowser.prototype.runAttributionStrategy = function (attributionConfig, isNewSession) {\n if (isNewSession === void 0) { isNewSession = false; }\n return __awaiter(this, void 0, void 0, function () {\n var track, onNewCampaign, storage, campaignTracker;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n track = this.track.bind(this);\n onNewCampaign = this.setSessionId.bind(this, Date.now());\n return [4 /*yield*/, createFlexibleStorage(this.config)];\n case 1:\n storage = _a.sent();\n campaignTracker = new CampaignTracker(this.config.apiKey, __assign(__assign({}, attributionConfig), { storage: storage, track: track, onNewCampaign: onNewCampaign }));\n return [4 /*yield*/, campaignTracker.send(isNewSession)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n AmplitudeBrowser.prototype.getUserId = function () {\n var _a;\n return (_a = this.config) === null || _a === void 0 ? void 0 : _a.userId;\n };\n AmplitudeBrowser.prototype.setUserId = function (userId) {\n if (!this.config) {\n this.q.push(this.setUserId.bind(this, userId));\n return;\n }\n this.config.userId = userId;\n };\n AmplitudeBrowser.prototype.getDeviceId = function () {\n var _a;\n return (_a = this.config) === null || _a === void 0 ? void 0 : _a.deviceId;\n };\n AmplitudeBrowser.prototype.setDeviceId = function (deviceId) {\n if (!this.config) {\n this.q.push(this.setDeviceId.bind(this, deviceId));\n return;\n }\n this.config.deviceId = deviceId;\n };\n AmplitudeBrowser.prototype.reset = function () {\n this.setUserId(undefined);\n this.setDeviceId(UUID());\n };\n AmplitudeBrowser.prototype.getSessionId = function () {\n var _a;\n return (_a = this.config) === null || _a === void 0 ? void 0 : _a.sessionId;\n };\n AmplitudeBrowser.prototype.setSessionId = function (sessionId) {\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return;\n }\n this.config.sessionId = sessionId;\n this.config.lastEventTime = undefined;\n };\n AmplitudeBrowser.prototype.setTransport = function (transport) {\n if (!this.config) {\n this.q.push(this.setTransport.bind(this, transport));\n return;\n }\n this.config.transportProvider = createTransport(transport);\n };\n AmplitudeBrowser.prototype.identify = function (identify, eventOptions) {\n if (isInstanceProxy(identify)) {\n var queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n return _super.prototype.identify.call(this, identify, eventOptions);\n };\n AmplitudeBrowser.prototype.groupIdentify = function (groupType, groupName, identify, eventOptions) {\n if (isInstanceProxy(identify)) {\n var queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n return _super.prototype.groupIdentify.call(this, groupType, groupName, identify, eventOptions);\n };\n AmplitudeBrowser.prototype.revenue = function (revenue, eventOptions) {\n if (isInstanceProxy(revenue)) {\n var queue = revenue._q;\n revenue._q = [];\n revenue = convertProxyObjectToRealObject(new Revenue(), queue);\n }\n return _super.prototype.revenue.call(this, revenue, eventOptions);\n };\n return AmplitudeBrowser;\n}(AmplitudeCore));\nexport { AmplitudeBrowser };\nexport var createInstance = function () {\n var client = new AmplitudeBrowser();\n return {\n init: returnWrapper(client.init.bind(client)),\n add: returnWrapper(client.add.bind(client)),\n remove: returnWrapper(client.remove.bind(client)),\n track: returnWrapper(client.track.bind(client)),\n logEvent: returnWrapper(client.logEvent.bind(client)),\n identify: returnWrapper(client.identify.bind(client)),\n groupIdentify: returnWrapper(client.groupIdentify.bind(client)),\n setGroup: returnWrapper(client.setGroup.bind(client)),\n revenue: returnWrapper(client.revenue.bind(client)),\n flush: returnWrapper(client.flush.bind(client)),\n getUserId: client.getUserId.bind(client),\n setUserId: client.setUserId.bind(client),\n getDeviceId: client.getDeviceId.bind(client),\n setDeviceId: client.setDeviceId.bind(client),\n reset: client.reset.bind(client),\n getSessionId: client.getSessionId.bind(client),\n setSessionId: client.setSessionId.bind(client),\n setOptOut: client.setOptOut.bind(client),\n setTransport: client.setTransport.bind(client),\n };\n};\nexport default createInstance();\n//# sourceMappingURL=browser-client.js.map","export var UTM_SOURCE = 'utm_source';\nexport var UTM_MEDIUM = 'utm_medium';\nexport var UTM_CAMPAIGN = 'utm_campaign';\nexport var UTM_TERM = 'utm_term';\nexport var UTM_CONTENT = 'utm_content';\nexport var DCLID = 'dclid';\nexport var FBCLID = 'fbclid';\nexport var GCLID = 'gclid';\nexport var KO_CLICK_ID = 'ko_click_id';\nexport var MSCLKID = 'msclkid';\nexport var TTCLID = 'ttclid';\nexport var TWCLID = 'twclid';\nexport var EMPTY_VALUE = 'EMPTY';\nexport var BASE_CAMPAIGN = {\n utm_source: undefined,\n utm_medium: undefined,\n utm_campaign: undefined,\n utm_term: undefined,\n utm_content: undefined,\n referrer: undefined,\n referring_domain: undefined,\n gclid: undefined,\n fbclid: undefined,\n};\nexport var MKTG = 'MKTG';\n//# sourceMappingURL=constants.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { getQueryParams } from '../query-params';\nimport { UTM_CAMPAIGN, UTM_CONTENT, UTM_MEDIUM, UTM_SOURCE, UTM_TERM, GCLID, FBCLID, BASE_CAMPAIGN, DCLID, MSCLKID, TWCLID, TTCLID, KO_CLICK_ID, } from './constants';\nvar CampaignParser = /** @class */ (function () {\n function CampaignParser() {\n }\n CampaignParser.prototype.parse = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, __assign(__assign(__assign(__assign({}, BASE_CAMPAIGN), this.getUtmParam()), this.getReferrer()), this.getClickIds())];\n });\n });\n };\n CampaignParser.prototype.getUtmParam = function () {\n var params = getQueryParams();\n var utmSource = params[UTM_SOURCE];\n var utmMedium = params[UTM_MEDIUM];\n var utmCampaign = params[UTM_CAMPAIGN];\n var utmTerm = params[UTM_TERM];\n var utmContent = params[UTM_CONTENT];\n return {\n utm_source: utmSource,\n utm_medium: utmMedium,\n utm_campaign: utmCampaign,\n utm_term: utmTerm,\n utm_content: utmContent,\n };\n };\n CampaignParser.prototype.getReferrer = function () {\n var _a, _b;\n var data = {\n referrer: undefined,\n referring_domain: undefined,\n };\n try {\n data.referrer = document.referrer || undefined;\n data.referring_domain = (_b = (_a = data.referrer) === null || _a === void 0 ? void 0 : _a.split('/')[2]) !== null && _b !== void 0 ? _b : undefined;\n }\n catch (_c) {\n // nothing to track\n }\n return data;\n };\n CampaignParser.prototype.getClickIds = function () {\n var _a;\n var params = getQueryParams();\n return _a = {},\n _a[DCLID] = params[DCLID],\n _a[FBCLID] = params[FBCLID],\n _a[GCLID] = params[GCLID],\n _a[KO_CLICK_ID] = params[KO_CLICK_ID],\n _a[MSCLKID] = params[MSCLKID],\n _a[TTCLID] = params[TTCLID],\n _a[TWCLID] = params[TWCLID],\n _a;\n };\n return CampaignParser;\n}());\nexport { CampaignParser };\n//# sourceMappingURL=campaign-parser.js.map","import { AMPLITUDE_PREFIX } from '@amplitude/analytics-core';\nexport var getCookieName = function (apiKey, postKey, limit) {\n if (postKey === void 0) { postKey = ''; }\n if (limit === void 0) { limit = 10; }\n return [AMPLITUDE_PREFIX, postKey, apiKey.substring(0, limit)].filter(Boolean).join('_');\n};\nexport var getOldCookieName = function (apiKey) {\n return \"\".concat(AMPLITUDE_PREFIX.toLowerCase(), \"_\").concat(apiKey.substring(0, 6));\n};\n//# sourceMappingURL=cookie-name.js.map","import { __assign, __awaiter, __generator, __read } from \"tslib\";\nimport { createIdentifyEvent, Identify } from '@amplitude/analytics-core';\nimport { getCookieName as getStorageKey } from '../cookie-name';\nimport { CampaignParser } from './campaign-parser';\nimport { BASE_CAMPAIGN, EMPTY_VALUE, MKTG } from './constants';\nvar CampaignTracker = /** @class */ (function () {\n function CampaignTracker(apiKey, options) {\n var _a, _b;\n this.storage = options.storage;\n this.storageKey = getStorageKey(apiKey, MKTG);\n this.parser = new CampaignParser();\n this.track = options.track;\n this.onNewCampaign = options.onNewCampaign;\n this.disabled = Boolean(options.disabled);\n this.trackNewCampaigns = Boolean(options.trackNewCampaigns);\n this.trackPageViews = Boolean(options.trackPageViews);\n this.excludeReferrers = (_a = options.excludeReferrers) !== null && _a !== void 0 ? _a : [];\n if (typeof location !== 'undefined') {\n this.excludeReferrers.unshift(location.hostname);\n }\n this.initialEmptyValue = (_b = options.initialEmptyValue) !== null && _b !== void 0 ? _b : EMPTY_VALUE;\n }\n CampaignTracker.prototype.isNewCampaign = function (currentCampaign, previousCampaign) {\n var isReferrerExcluded = Boolean(currentCampaign.referring_domain && this.excludeReferrers.includes(currentCampaign.referring_domain));\n var hasNewUtm = previousCampaign.utm_campaign !== currentCampaign.utm_campaign ||\n previousCampaign.utm_source !== currentCampaign.utm_source ||\n previousCampaign.utm_medium !== currentCampaign.utm_medium ||\n previousCampaign.utm_term !== currentCampaign.utm_term ||\n previousCampaign.utm_content !== currentCampaign.utm_content;\n var hasNewReferrer = previousCampaign.referring_domain !== currentCampaign.referring_domain;\n return !isReferrerExcluded && (hasNewUtm || hasNewReferrer);\n };\n CampaignTracker.prototype.saveCampaignToStorage = function (campaign) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.storage.set(this.storageKey, campaign)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CampaignTracker.prototype.getCampaignFromStorage = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.storage.get(this.storageKey)];\n case 1: return [2 /*return*/, (_a.sent()) || __assign({}, BASE_CAMPAIGN)];\n }\n });\n });\n };\n CampaignTracker.prototype.createCampaignEvent = function (campaign) {\n var _this = this;\n var campaignParameters = __assign(__assign({}, BASE_CAMPAIGN), campaign);\n var identifyEvent = Object.entries(campaignParameters).reduce(function (identify, _a) {\n var _b = __read(_a, 2), key = _b[0], value = _b[1];\n identify.setOnce(\"initial_\".concat(key), value || _this.initialEmptyValue);\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n var pageViewEvent = {\n event_type: 'Page View',\n event_properties: {\n page_title: /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',\n page_location: /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '',\n page_path: /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '',\n },\n };\n return __assign(__assign({}, createIdentifyEvent(identifyEvent)), (this.trackPageViews && pageViewEvent));\n };\n CampaignTracker.prototype.send = function (isNewSession) {\n return __awaiter(this, void 0, void 0, function () {\n var currentCampaign, previousCampaign;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.disabled) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.parser.parse()];\n case 1:\n currentCampaign = _a.sent();\n return [4 /*yield*/, this.getCampaignFromStorage()];\n case 2:\n previousCampaign = _a.sent();\n if (!isNewSession) {\n if (!this.trackNewCampaigns || !this.isNewCampaign(currentCampaign, previousCampaign)) {\n return [2 /*return*/];\n }\n this.onNewCampaign(currentCampaign);\n }\n return [4 /*yield*/, this.track(this.createCampaignEvent(currentCampaign))];\n case 3:\n _a.sent();\n return [4 /*yield*/, this.saveCampaignToStorage(currentCampaign)];\n case 4:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return CampaignTracker;\n}());\nexport { CampaignTracker };\n//# sourceMappingURL=campaign-tracker.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nvar CookieStorage = /** @class */ (function () {\n function CookieStorage(options) {\n this.options = __assign({}, options);\n }\n CookieStorage.prototype.isEnabled = function () {\n return __awaiter(this, void 0, void 0, function () {\n var random, testStrorage, testKey, value, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n /* istanbul ignore if */\n if (typeof window === 'undefined') {\n return [2 /*return*/, false];\n }\n random = String(Date.now());\n testStrorage = new CookieStorage(this.options);\n testKey = 'AMP_TEST';\n _b.label = 1;\n case 1:\n _b.trys.push([1, 4, 5, 7]);\n return [4 /*yield*/, testStrorage.set(testKey, random)];\n case 2:\n _b.sent();\n return [4 /*yield*/, testStrorage.get(testKey)];\n case 3:\n value = _b.sent();\n return [2 /*return*/, value === random];\n case 4:\n _a = _b.sent();\n /* istanbul ignore next */\n return [2 /*return*/, false];\n case 5: return [4 /*yield*/, testStrorage.remove(testKey)];\n case 6:\n _b.sent();\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n CookieStorage.prototype.get = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getRaw(key)];\n case 1:\n value = _a.sent();\n if (!value) {\n return [2 /*return*/, undefined];\n }\n try {\n try {\n value = decodeURIComponent(atob(value));\n }\n catch (_b) {\n // value not encoded\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return [2 /*return*/, JSON.parse(value)];\n }\n catch (_c) {\n /* istanbul ignore next */\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n CookieStorage.prototype.getRaw = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var cookie, match;\n return __generator(this, function (_a) {\n cookie = window.document.cookie.split('; ');\n match = cookie.find(function (c) { return c.indexOf(key + '=') === 0; });\n if (!match) {\n return [2 /*return*/, undefined];\n }\n return [2 /*return*/, match.substring(key.length + 1)];\n });\n });\n };\n CookieStorage.prototype.set = function (key, value) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var expirationDays, expires, expireDate, date, str;\n return __generator(this, function (_b) {\n try {\n expirationDays = (_a = this.options.expirationDays) !== null && _a !== void 0 ? _a : 0;\n expires = value !== null ? expirationDays : -1;\n expireDate = undefined;\n if (expires) {\n date = new Date();\n date.setTime(date.getTime() + expires * 24 * 60 * 60 * 1000);\n expireDate = date;\n }\n str = \"\".concat(key, \"=\").concat(btoa(encodeURIComponent(JSON.stringify(value))));\n if (expireDate) {\n str += \"; expires=\".concat(expireDate.toUTCString());\n }\n str += '; path=/';\n if (this.options.domain) {\n str += \"; domain=\".concat(this.options.domain);\n }\n if (this.options.secure) {\n str += '; Secure';\n }\n if (this.options.sameSite) {\n str += \"; SameSite=\".concat(this.options.sameSite);\n }\n window.document.cookie = str;\n }\n catch (_c) {\n //\n }\n return [2 /*return*/];\n });\n });\n };\n CookieStorage.prototype.remove = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.set(key, null)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CookieStorage.prototype.reset = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n return CookieStorage;\n}());\nexport { CookieStorage };\n//# sourceMappingURL=cookie.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { getCookieName as getStorageKey } from './cookie-name';\nvar SessionManager = /** @class */ (function () {\n function SessionManager(storage, apiKey) {\n this.storage = storage;\n this.isSessionCacheValid = true;\n this.storageKey = getStorageKey(apiKey);\n this.cache = { optOut: false };\n }\n /**\n * load() must be called immediately after instantation\n *\n * ```ts\n * await new SessionManager(...).load();\n * ```\n */\n SessionManager.prototype.load = function () {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _b = this;\n return [4 /*yield*/, this.storage.get(this.storageKey)];\n case 1:\n _b.cache = (_a = (_c.sent())) !== null && _a !== void 0 ? _a : {\n optOut: false,\n };\n return [2 /*return*/, this];\n }\n });\n });\n };\n SessionManager.prototype.setSession = function (session) {\n this.cache = __assign(__assign({}, this.cache), session);\n void this.storage.set(this.storageKey, this.cache);\n };\n SessionManager.prototype.getSessionId = function () {\n var _this = this;\n this.isSessionCacheValid = true;\n void this.storage.get(this.storageKey).then(function (userSession) {\n // Checks if session id has been set since the last get\n if (_this.isSessionCacheValid) {\n _this.cache.sessionId = userSession === null || userSession === void 0 ? void 0 : userSession.sessionId;\n }\n });\n return this.cache.sessionId;\n };\n SessionManager.prototype.setSessionId = function (sessionId) {\n // Flags session id has been set\n this.isSessionCacheValid = false;\n this.setSession({ sessionId: sessionId });\n };\n SessionManager.prototype.getDeviceId = function () {\n return this.cache.deviceId;\n };\n SessionManager.prototype.setDeviceId = function (deviceId) {\n this.setSession({ deviceId: deviceId });\n };\n SessionManager.prototype.getUserId = function () {\n return this.cache.userId;\n };\n SessionManager.prototype.setUserId = function (userId) {\n this.setSession({ userId: userId });\n };\n SessionManager.prototype.getLastEventTime = function () {\n return this.cache.lastEventTime;\n };\n SessionManager.prototype.setLastEventTime = function (lastEventTime) {\n this.setSession({ lastEventTime: lastEventTime });\n };\n SessionManager.prototype.getOptOut = function () {\n return this.cache.optOut;\n };\n SessionManager.prototype.setOptOut = function (optOut) {\n this.setSession({ optOut: optOut });\n };\n return SessionManager;\n}());\nexport { SessionManager };\n//# sourceMappingURL=session-manager.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { BaseTransport } from '@amplitude/analytics-core';\nvar FetchTransport = /** @class */ (function (_super) {\n __extends(FetchTransport, _super);\n function FetchTransport() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FetchTransport.prototype.send = function (serverUrl, payload) {\n return __awaiter(this, void 0, void 0, function () {\n var options, response, responsePayload;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n /* istanbul ignore if */\n if (typeof fetch === 'undefined') {\n throw new Error('FetchTransport is not supported');\n }\n options = {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n },\n body: JSON.stringify(payload),\n method: 'POST',\n };\n return [4 /*yield*/, fetch(serverUrl, options)];\n case 1:\n response = _a.sent();\n return [4 /*yield*/, response.json()];\n case 2:\n responsePayload = _a.sent();\n return [2 /*return*/, this.buildResponse(responsePayload)];\n }\n });\n });\n };\n return FetchTransport;\n}(BaseTransport));\nexport { FetchTransport };\n//# sourceMappingURL=fetch.js.map","import { AnalyticsConnector } from '@amplitude/analytics-connector';\nexport var getAnalyticsConnector = function () {\n return AnalyticsConnector.getInstance('$default_instance');\n};\n//# sourceMappingURL=analytics-connector.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { PluginType } from '@amplitude/analytics-types';\nimport { getAnalyticsConnector } from '../analytics-connector';\nvar IdentityEventSender = /** @class */ (function () {\n function IdentityEventSender() {\n this.name = 'identity';\n this.type = PluginType.BEFORE;\n this.identityStore = getAnalyticsConnector().identityStore;\n }\n IdentityEventSender.prototype.execute = function (context) {\n return __awaiter(this, void 0, void 0, function () {\n var userProperties;\n return __generator(this, function (_a) {\n userProperties = context.user_properties;\n if (userProperties) {\n this.identityStore.editIdentity().updateUserProperties(userProperties).commit();\n }\n return [2 /*return*/, context];\n });\n });\n };\n IdentityEventSender.prototype.setup = function (_) {\n return Promise.resolve(undefined);\n };\n return IdentityEventSender;\n}());\nexport { IdentityEventSender };\n//# sourceMappingURL=identity.js.map","export var getLanguage = function () {\n var _a, _b, _c, _d;\n if (typeof navigator === 'undefined')\n return '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n var userLanguage = navigator.userLanguage;\n return (_d = (_c = (_b = (_a = navigator.languages) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : navigator.language) !== null && _c !== void 0 ? _c : userLanguage) !== null && _d !== void 0 ? _d : '';\n};\n//# sourceMappingURL=language.js.map","/**\n * Applies the proxied functions on the proxied amplitude snippet to an instance of the real object.\n * @ignore\n */\nexport var runQueuedFunctions = function (instance, queue) {\n convertProxyObjectToRealObject(instance, queue);\n};\n/**\n * Applies the proxied functions on the proxied object to an instance of the real object.\n * Used to convert proxied Identify and Revenue objects.\n */\nexport var convertProxyObjectToRealObject = function (instance, queue) {\n for (var i = 0; i < queue.length; i++) {\n var _a = queue[i], name_1 = _a.name, args = _a.args, resolve = _a.resolve;\n var fn = instance && instance[name_1];\n if (typeof fn === 'function') {\n var result = fn.apply(instance, args);\n if (typeof resolve === 'function') {\n resolve(result === null || result === void 0 ? void 0 : result.promise);\n }\n }\n }\n return instance;\n};\n/**\n * Check if the param is snippet proxy\n */\nexport var isInstanceProxy = function (instance) {\n var instanceProxy = instance;\n return instanceProxy && instanceProxy._q !== undefined;\n};\n//# sourceMappingURL=snippet-helper.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { PluginType } from '@amplitude/analytics-types';\nimport UAParser from '@amplitude/ua-parser-js';\nimport { UUID } from '@amplitude/analytics-core';\nimport { getLanguage } from '@amplitude/analytics-client-common';\nimport { VERSION } from '../version';\nvar BROWSER_PLATFORM = 'Web';\nvar IP_ADDRESS = '$remote';\nvar Context = /** @class */ (function () {\n function Context() {\n this.name = 'context';\n this.type = PluginType.BEFORE;\n this.eventId = 0;\n this.library = \"amplitude-ts/\".concat(VERSION);\n var agent;\n /* istanbul ignore else */\n if (typeof navigator !== 'undefined') {\n agent = navigator.userAgent;\n }\n this.uaResult = new UAParser(agent).getResult();\n }\n Context.prototype.setup = function (config) {\n this.config = config;\n return Promise.resolve(undefined);\n };\n Context.prototype.execute = function (context) {\n return __awaiter(this, void 0, void 0, function () {\n var time, osName, osVersion, deviceModel, deviceVendor, event;\n return __generator(this, function (_a) {\n /**\n * Manages user session triggered by new events\n */\n if (!this.isSessionValid()) {\n // Creates new session\n this.config.sessionId = Date.now();\n } // else use previously creates session\n // Updates last event time to extend time-based session\n this.config.lastEventTime = Date.now();\n time = new Date().getTime();\n osName = this.uaResult.browser.name;\n osVersion = this.uaResult.browser.version;\n deviceModel = this.uaResult.device.model || this.uaResult.os.name;\n deviceVendor = this.uaResult.device.vendor;\n event = __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ user_id: this.config.userId, device_id: this.config.deviceId, session_id: this.config.sessionId, time: time }, (this.config.appVersion && { app_version: this.config.appVersion })), (this.config.trackingOptions.platform && { platform: BROWSER_PLATFORM })), (this.config.trackingOptions.osName && { os_name: osName })), (this.config.trackingOptions.osVersion && { os_version: osVersion })), (this.config.trackingOptions.deviceManufacturer && { device_manufacturer: deviceVendor })), (this.config.trackingOptions.deviceModel && { device_model: deviceModel })), (this.config.trackingOptions.language && { language: getLanguage() })), (this.config.trackingOptions.ipAddress && { ip: IP_ADDRESS })), { insert_id: UUID(), partner_id: this.config.partnerId, plan: this.config.plan }), (this.config.ingestionMetadata && {\n ingestion_metadata: {\n source_name: this.config.ingestionMetadata.sourceName,\n source_version: this.config.ingestionMetadata.sourceVersion,\n },\n })), context), { event_id: this.eventId++, library: this.library });\n return [2 /*return*/, event];\n });\n });\n };\n Context.prototype.isSessionValid = function () {\n var lastEventTime = this.config.lastEventTime || Date.now();\n var timeSinceLastEvent = Date.now() - lastEventTime;\n return timeSinceLastEvent < this.config.sessionTimeout;\n };\n return Context;\n}());\nexport { Context };\n//# sourceMappingURL=context.js.map","export var VERSION = '1.4.1';\n//# sourceMappingURL=version.js.map","import { __awaiter, __generator } from \"tslib\";\nvar LocalStorage = /** @class */ (function () {\n function LocalStorage() {\n }\n LocalStorage.prototype.isEnabled = function () {\n return __awaiter(this, void 0, void 0, function () {\n var random, testStorage, testKey, value, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n /* istanbul ignore if */\n if (typeof window === 'undefined') {\n return [2 /*return*/, false];\n }\n random = String(Date.now());\n testStorage = new LocalStorage();\n testKey = 'AMP_TEST';\n _b.label = 1;\n case 1:\n _b.trys.push([1, 4, 5, 7]);\n return [4 /*yield*/, testStorage.set(testKey, random)];\n case 2:\n _b.sent();\n return [4 /*yield*/, testStorage.get(testKey)];\n case 3:\n value = _b.sent();\n return [2 /*return*/, value === random];\n case 4:\n _a = _b.sent();\n /* istanbul ignore next */\n return [2 /*return*/, false];\n case 5: return [4 /*yield*/, testStorage.remove(testKey)];\n case 6:\n _b.sent();\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n LocalStorage.prototype.get = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n var value, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this.getRaw(key)];\n case 1:\n value = _b.sent();\n if (!value) {\n return [2 /*return*/, undefined];\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return [2 /*return*/, JSON.parse(value)];\n case 2:\n _a = _b.sent();\n /* istanbul ignore next */\n return [2 /*return*/, undefined];\n case 3: return [2 /*return*/];\n }\n });\n });\n };\n LocalStorage.prototype.getRaw = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, window.localStorage.getItem(key) || undefined];\n });\n });\n };\n LocalStorage.prototype.set = function (key, value) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n }\n catch (_b) {\n //\n }\n return [2 /*return*/];\n });\n });\n };\n LocalStorage.prototype.remove = function (key) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n try {\n window.localStorage.removeItem(key);\n }\n catch (_b) {\n //\n }\n return [2 /*return*/];\n });\n });\n };\n LocalStorage.prototype.reset = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n try {\n window.localStorage.clear();\n }\n catch (_b) {\n //\n }\n return [2 /*return*/];\n });\n });\n };\n return LocalStorage;\n}());\nexport { LocalStorage };\n//# sourceMappingURL=local-storage.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { BaseTransport } from '@amplitude/analytics-core';\nvar XHRTransport = /** @class */ (function (_super) {\n __extends(XHRTransport, _super);\n function XHRTransport() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n done: 4,\n };\n return _this;\n }\n XHRTransport.prototype.send = function (serverUrl, payload) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n /* istanbul ignore if */\n if (typeof XMLHttpRequest === 'undefined') {\n reject(new Error('XHRTransport is not supported.'));\n }\n var xhr = new XMLHttpRequest();\n xhr.open('POST', serverUrl, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === _this.state.done) {\n try {\n var responsePayload = xhr.responseText;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var parsedResponsePayload = JSON.parse(responsePayload);\n var result = _this.buildResponse(parsedResponsePayload);\n resolve(result);\n }\n catch (e) {\n reject(e);\n }\n }\n };\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.setRequestHeader('Accept', '*/*');\n xhr.send(JSON.stringify(payload));\n })];\n });\n });\n };\n return XHRTransport;\n}(BaseTransport));\nexport { XHRTransport };\n//# sourceMappingURL=xhr.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { BaseTransport } from '@amplitude/analytics-core';\nvar SendBeaconTransport = /** @class */ (function (_super) {\n __extends(SendBeaconTransport, _super);\n function SendBeaconTransport() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SendBeaconTransport.prototype.send = function (serverUrl, payload) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n /* istanbul ignore if */\n if (typeof window === 'undefined' ||\n typeof window.navigator === 'undefined' ||\n typeof window.navigator.sendBeacon === 'undefined') {\n throw new Error('SendBeaconTransport is not supported');\n }\n try {\n var data = JSON.stringify(payload);\n var success = window.navigator.sendBeacon(serverUrl, JSON.stringify(payload));\n if (success) {\n return resolve(_this.buildResponse({\n code: 200,\n events_ingested: payload.events.length,\n payload_size_bytes: data.length,\n server_upload_time: Date.now(),\n }));\n }\n return resolve(_this.buildResponse({ code: 500 }));\n }\n catch (e) {\n reject(e);\n }\n })];\n });\n });\n };\n return SendBeaconTransport;\n}(BaseTransport));\nexport { SendBeaconTransport };\n//# sourceMappingURL=send-beacon.js.map","import { __assign, __awaiter, __extends, __generator, __values } from \"tslib\";\nimport { TransportType, } from '@amplitude/analytics-types';\nimport { Config, MemoryStorage, UUID } from '@amplitude/analytics-core';\nimport { CookieStorage, getCookieName, getQueryParams, SessionManager, FetchTransport, } from '@amplitude/analytics-client-common';\nimport { LocalStorage } from './storage/local-storage';\nimport { XHRTransport } from './transports/xhr';\nimport { SendBeaconTransport } from './transports/send-beacon';\nexport var getDefaultConfig = function () {\n var cookieStorage = new MemoryStorage();\n var trackingOptions = {\n deviceManufacturer: true,\n deviceModel: true,\n ipAddress: true,\n language: true,\n osName: true,\n osVersion: true,\n platform: true,\n };\n return {\n cookieExpiration: 365,\n cookieSameSite: 'Lax',\n cookieSecure: false,\n cookieStorage: cookieStorage,\n disableCookies: false,\n domain: '',\n sessionManager: new SessionManager(cookieStorage, ''),\n sessionTimeout: 30 * 60 * 1000,\n storageProvider: new MemoryStorage(),\n trackingOptions: trackingOptions,\n transportProvider: new FetchTransport(),\n };\n};\nvar BrowserConfig = /** @class */ (function (_super) {\n __extends(BrowserConfig, _super);\n function BrowserConfig(apiKey, userId, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n var _this = this;\n var defaultConfig = getDefaultConfig();\n _this = _super.call(this, __assign(__assign({ flushIntervalMillis: 1000, flushMaxRetries: 5, flushQueueSize: 30 }, options), { apiKey: apiKey, storageProvider: (_a = options === null || options === void 0 ? void 0 : options.storageProvider) !== null && _a !== void 0 ? _a : defaultConfig.storageProvider, transportProvider: (_b = options === null || options === void 0 ? void 0 : options.transportProvider) !== null && _b !== void 0 ? _b : defaultConfig.transportProvider })) || this;\n _this.cookieStorage = (_c = options === null || options === void 0 ? void 0 : options.cookieStorage) !== null && _c !== void 0 ? _c : defaultConfig.cookieStorage;\n _this.sessionManager = (_d = options === null || options === void 0 ? void 0 : options.sessionManager) !== null && _d !== void 0 ? _d : defaultConfig.sessionManager;\n _this.sessionTimeout = (_e = options === null || options === void 0 ? void 0 : options.sessionTimeout) !== null && _e !== void 0 ? _e : defaultConfig.sessionTimeout;\n _this.appVersion = options === null || options === void 0 ? void 0 : options.appVersion;\n _this.attribution = options === null || options === void 0 ? void 0 : options.attribution;\n _this.cookieExpiration = (_f = options === null || options === void 0 ? void 0 : options.cookieExpiration) !== null && _f !== void 0 ? _f : defaultConfig.cookieExpiration;\n _this.cookieSameSite = (_g = options === null || options === void 0 ? void 0 : options.cookieSameSite) !== null && _g !== void 0 ? _g : defaultConfig.cookieSameSite;\n _this.cookieSecure = (_h = options === null || options === void 0 ? void 0 : options.cookieSecure) !== null && _h !== void 0 ? _h : defaultConfig.cookieSecure;\n _this.deviceId = options === null || options === void 0 ? void 0 : options.deviceId;\n _this.disableCookies = (_j = options === null || options === void 0 ? void 0 : options.disableCookies) !== null && _j !== void 0 ? _j : defaultConfig.disableCookies;\n _this.domain = (_k = options === null || options === void 0 ? void 0 : options.domain) !== null && _k !== void 0 ? _k : defaultConfig.domain;\n _this.lastEventTime = (_l = _this.lastEventTime) !== null && _l !== void 0 ? _l : options === null || options === void 0 ? void 0 : options.lastEventTime;\n _this.optOut = Boolean(options === null || options === void 0 ? void 0 : options.optOut);\n _this.partnerId = options === null || options === void 0 ? void 0 : options.partnerId;\n _this.sessionId = options === null || options === void 0 ? void 0 : options.sessionId;\n _this.trackingOptions = (_m = options === null || options === void 0 ? void 0 : options.trackingOptions) !== null && _m !== void 0 ? _m : defaultConfig.trackingOptions;\n _this.userId = userId;\n return _this;\n }\n Object.defineProperty(BrowserConfig.prototype, \"deviceId\", {\n get: function () {\n return this.sessionManager.getDeviceId();\n },\n set: function (deviceId) {\n this.sessionManager.setDeviceId(deviceId);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BrowserConfig.prototype, \"userId\", {\n get: function () {\n return this.sessionManager.getUserId();\n },\n set: function (userId) {\n this.sessionManager.setUserId(userId);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BrowserConfig.prototype, \"sessionId\", {\n get: function () {\n return this.sessionManager.getSessionId();\n },\n set: function (sessionId) {\n this.sessionManager.setSessionId(sessionId);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BrowserConfig.prototype, \"optOut\", {\n get: function () {\n return this.sessionManager.getOptOut();\n },\n set: function (optOut) {\n var _a;\n (_a = this.sessionManager) === null || _a === void 0 ? void 0 : _a.setOptOut(Boolean(optOut));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BrowserConfig.prototype, \"lastEventTime\", {\n get: function () {\n return this.sessionManager.getLastEventTime();\n },\n set: function (lastEventTime) {\n this.sessionManager.setLastEventTime(lastEventTime);\n },\n enumerable: false,\n configurable: true\n });\n return BrowserConfig;\n}(Config));\nexport { BrowserConfig };\nexport var useBrowserConfig = function (apiKey, userId, options) { return __awaiter(void 0, void 0, void 0, function () {\n var defaultConfig, domain, _a, cookieStorage, cookieName, cookies, queryParams, sessionManager, _b, _c, _d;\n var _e;\n var _f, _g, _h, _j, _k;\n return __generator(this, function (_l) {\n switch (_l.label) {\n case 0:\n defaultConfig = getDefaultConfig();\n if (!((_f = options === null || options === void 0 ? void 0 : options.domain) !== null && _f !== void 0)) return [3 /*break*/, 1];\n _a = _f;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, getTopLevelDomain()];\n case 2:\n _a = (_l.sent());\n _l.label = 3;\n case 3:\n domain = _a;\n return [4 /*yield*/, createCookieStorage(__assign(__assign({}, options), { domain: domain }))];\n case 4:\n cookieStorage = _l.sent();\n cookieName = getCookieName(apiKey);\n return [4 /*yield*/, cookieStorage.get(cookieName)];\n case 5:\n cookies = _l.sent();\n queryParams = getQueryParams();\n return [4 /*yield*/, new SessionManager(cookieStorage, apiKey).load()];\n case 6:\n sessionManager = _l.sent();\n _b = BrowserConfig.bind;\n _c = [void 0, apiKey, userId !== null && userId !== void 0 ? userId : cookies === null || cookies === void 0 ? void 0 : cookies.userId];\n _d = [__assign({}, options)];\n _e = { cookieStorage: cookieStorage, sessionManager: sessionManager, deviceId: createDeviceId(cookies === null || cookies === void 0 ? void 0 : cookies.deviceId, options === null || options === void 0 ? void 0 : options.deviceId, queryParams.deviceId), domain: domain, optOut: (_g = options === null || options === void 0 ? void 0 : options.optOut) !== null && _g !== void 0 ? _g : Boolean(cookies === null || cookies === void 0 ? void 0 : cookies.optOut) };\n return [4 /*yield*/, cookieStorage.get(cookieName)];\n case 7:\n _e.sessionId = (_j = (_h = (_l.sent())) === null || _h === void 0 ? void 0 : _h.sessionId) !== null && _j !== void 0 ? _j : options === null || options === void 0 ? void 0 : options.sessionId;\n return [4 /*yield*/, createEventsStorage(options)];\n case 8: return [2 /*return*/, new (_b.apply(BrowserConfig, _c.concat([__assign.apply(void 0, _d.concat([(_e.storageProvider = _l.sent(), _e.trackingOptions = __assign(__assign({}, defaultConfig.trackingOptions), options === null || options === void 0 ? void 0 : options.trackingOptions), _e.transportProvider = (_k = options === null || options === void 0 ? void 0 : options.transportProvider) !== null && _k !== void 0 ? _k : createTransport(options === null || options === void 0 ? void 0 : options.transport), _e)]))])))()];\n }\n });\n}); };\nexport var createCookieStorage = function (overrides, baseConfig) {\n if (baseConfig === void 0) { baseConfig = getDefaultConfig(); }\n return __awaiter(void 0, void 0, void 0, function () {\n var options, cookieStorage, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n options = __assign(__assign({}, baseConfig), overrides);\n cookieStorage = overrides === null || overrides === void 0 ? void 0 : overrides.cookieStorage;\n _a = !cookieStorage;\n if (_a) return [3 /*break*/, 2];\n return [4 /*yield*/, cookieStorage.isEnabled()];\n case 1:\n _a = !(_b.sent());\n _b.label = 2;\n case 2:\n if (_a) {\n return [2 /*return*/, createFlexibleStorage(options)];\n }\n return [2 /*return*/, cookieStorage];\n }\n });\n });\n};\nexport var createFlexibleStorage = function (options) { return __awaiter(void 0, void 0, void 0, function () {\n var storage, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n storage = new CookieStorage({\n domain: options.domain,\n expirationDays: options.cookieExpiration,\n sameSite: options.cookieSameSite,\n secure: options.cookieSecure,\n });\n _a = options.disableCookies;\n if (_a) return [3 /*break*/, 2];\n return [4 /*yield*/, storage.isEnabled()];\n case 1:\n _a = !(_b.sent());\n _b.label = 2;\n case 2:\n if (!_a) return [3 /*break*/, 4];\n storage = new LocalStorage();\n return [4 /*yield*/, storage.isEnabled()];\n case 3:\n if (!(_b.sent())) {\n storage = new MemoryStorage();\n }\n _b.label = 4;\n case 4: return [2 /*return*/, storage];\n }\n });\n}); };\nexport var createEventsStorage = function (overrides) { return __awaiter(void 0, void 0, void 0, function () {\n var hasStorageProviderProperty, _a, _b, storage, _c, e_1_1;\n var e_1, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n hasStorageProviderProperty = overrides && Object.prototype.hasOwnProperty.call(overrides, 'storageProvider');\n if (!(!hasStorageProviderProperty || overrides.storageProvider)) return [3 /*break*/, 9];\n _e.label = 1;\n case 1:\n _e.trys.push([1, 7, 8, 9]);\n _a = __values([overrides === null || overrides === void 0 ? void 0 : overrides.storageProvider, new LocalStorage()]), _b = _a.next();\n _e.label = 2;\n case 2:\n if (!!_b.done) return [3 /*break*/, 6];\n storage = _b.value;\n _c = storage;\n if (!_c) return [3 /*break*/, 4];\n return [4 /*yield*/, storage.isEnabled()];\n case 3:\n _c = (_e.sent());\n _e.label = 4;\n case 4:\n if (_c) {\n return [2 /*return*/, storage];\n }\n _e.label = 5;\n case 5:\n _b = _a.next();\n return [3 /*break*/, 2];\n case 6: return [3 /*break*/, 9];\n case 7:\n e_1_1 = _e.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 9];\n case 8:\n try {\n if (_b && !_b.done && (_d = _a.return)) _d.call(_a);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 9: return [2 /*return*/, undefined];\n }\n });\n}); };\nexport var createDeviceId = function (idFromCookies, idFromOptions, idFromQueryParams) {\n return idFromOptions || idFromQueryParams || idFromCookies || UUID();\n};\nexport var createTransport = function (transport) {\n if (transport === TransportType.XHR) {\n return new XHRTransport();\n }\n if (transport === TransportType.SendBeacon) {\n return new SendBeaconTransport();\n }\n return getDefaultConfig().transportProvider;\n};\nexport var getTopLevelDomain = function (url) { return __awaiter(void 0, void 0, void 0, function () {\n var host, parts, levels, storageKey, i, i, domain, options, storage, value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, new CookieStorage().isEnabled()];\n case 1:\n if (!(_a.sent()) || (!url && typeof location === 'undefined')) {\n return [2 /*return*/, ''];\n }\n host = url !== null && url !== void 0 ? url : location.hostname;\n parts = host.split('.');\n levels = [];\n storageKey = 'AMP_TLDTEST';\n for (i = parts.length - 2; i >= 0; --i) {\n levels.push(parts.slice(i).join('.'));\n }\n i = 0;\n _a.label = 2;\n case 2:\n if (!(i < levels.length)) return [3 /*break*/, 7];\n domain = levels[i];\n options = { domain: '.' + domain };\n storage = new CookieStorage(options);\n return [4 /*yield*/, storage.set(storageKey, 1)];\n case 3:\n _a.sent();\n return [4 /*yield*/, storage.get(storageKey)];\n case 4:\n value = _a.sent();\n if (!value) return [3 /*break*/, 6];\n return [4 /*yield*/, storage.remove(storageKey)];\n case 5:\n _a.sent();\n return [2 /*return*/, '.' + domain];\n case 6:\n i++;\n return [3 /*break*/, 2];\n case 7: return [2 /*return*/, ''];\n }\n });\n}); };\n//# sourceMappingURL=config.js.map","import { __awaiter, __generator, __read } from \"tslib\";\nimport { getOldCookieName, CookieStorage } from '@amplitude/analytics-client-common';\nimport { LocalStorage } from '../storage/local-storage';\nexport var parseOldCookies = function (apiKey, options) { return __awaiter(void 0, void 0, void 0, function () {\n var storage, oldCookieName, cookies, _a, deviceId, userId, optOut, sessionId, lastEventTime;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n storage = new CookieStorage();\n return [4 /*yield*/, storage.isEnabled()];\n case 1:\n if (!(_b.sent()) || (options === null || options === void 0 ? void 0 : options.disableCookies)) {\n storage = new LocalStorage();\n }\n return [4 /*yield*/, storage.isEnabled()];\n case 2:\n if (!(_b.sent())) {\n return [2 /*return*/, {\n optOut: false,\n }];\n }\n oldCookieName = getOldCookieName(apiKey);\n return [4 /*yield*/, storage.getRaw(oldCookieName)];\n case 3:\n cookies = _b.sent();\n if (!cookies) {\n return [2 /*return*/, {\n optOut: false,\n }];\n }\n return [4 /*yield*/, storage.remove(oldCookieName)];\n case 4:\n _b.sent();\n _a = __read(cookies.split('.'), 5), deviceId = _a[0], userId = _a[1], optOut = _a[2], sessionId = _a[3], lastEventTime = _a[4];\n return [2 /*return*/, {\n deviceId: deviceId,\n userId: decode(userId),\n sessionId: parseTime(sessionId),\n lastEventTime: parseTime(lastEventTime),\n optOut: Boolean(optOut),\n }];\n }\n });\n}); };\nexport var parseTime = function (num) {\n var integer = parseInt(num, 32);\n if (isNaN(integer)) {\n return undefined;\n }\n return integer;\n};\nexport var decode = function (value) {\n if (!atob || !escape || !value) {\n return undefined;\n }\n try {\n return decodeURIComponent(escape(atob(value)));\n }\n catch (_a) {\n return undefined;\n }\n};\n//# sourceMappingURL=index.js.map","/* eslint-disable @typescript-eslint/unbound-method */\nimport client from './browser-client';\nexport { createInstance } from './browser-client';\nexport var add = client.add, flush = client.flush, getDeviceId = client.getDeviceId, getSessionId = client.getSessionId, getUserId = client.getUserId, groupIdentify = client.groupIdentify, identify = client.identify, init = client.init, logEvent = client.logEvent, remove = client.remove, reset = client.reset, revenue = client.revenue, setDeviceId = client.setDeviceId, setGroup = client.setGroup, setOptOut = client.setOptOut, setSessionId = client.setSessionId, setTransport = client.setTransport, setUserId = client.setUserId, track = client.track;\nexport { runQueuedFunctions } from './utils/snippet-helper';\nexport { Revenue, Identify } from '@amplitude/analytics-core';\nimport * as Types_1 from '@amplitude/analytics-types';\nexport { Types_1 as Types };\n//# sourceMappingURL=index.js.map","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// Older browsers don't support event options, feature detect it.\n\n// Adopted and modified solution from Bohdan Didukh (2017)\n// https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\n\nvar hasPassiveEvents = false;\nif (typeof window !== 'undefined') {\n var passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true;\n return undefined;\n }\n };\n window.addEventListener('testPassive', null, passiveTestOptions);\n window.removeEventListener('testPassive', null, passiveTestOptions);\n}\n\nvar isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1);\n\n\nvar locks = [];\nvar documentListenerAdded = false;\nvar initialClientY = -1;\nvar previousBodyOverflowSetting = void 0;\nvar previousBodyPaddingRight = void 0;\n\n// returns true if `el` should be allowed to receive touchmove events.\nvar allowTouchMove = function allowTouchMove(el) {\n return locks.some(function (lock) {\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\n return true;\n }\n\n return false;\n });\n};\n\nvar preventDefault = function preventDefault(rawEvent) {\n var e = rawEvent || window.event;\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true;\n }\n\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true;\n\n if (e.preventDefault) e.preventDefault();\n\n return false;\n};\n\nvar setOverflowHidden = function setOverflowHidden(options) {\n // Setting overflow on body/documentElement synchronously in Desktop Safari slows down\n // the responsiveness for some reason. Setting within a setTimeout fixes this.\n setTimeout(function () {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\n var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n\n if (_reserveScrollBarGap && scrollBarGap > 0) {\n previousBodyPaddingRight = document.body.style.paddingRight;\n document.body.style.paddingRight = scrollBarGap + 'px';\n }\n }\n\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n });\n};\n\nvar restoreOverflowSetting = function restoreOverflowSetting() {\n // Setting overflow on body/documentElement synchronously in Desktop Safari slows down\n // the responsiveness for some reason. Setting within a setTimeout fixes this.\n setTimeout(function () {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight;\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined;\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting;\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined;\n }\n });\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nvar isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\n return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\n};\n\nvar handleScroll = function handleScroll(event, targetElement) {\n var clientY = event.targetTouches[0].clientY - initialClientY;\n\n if (allowTouchMove(event.target)) {\n return false;\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event);\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event);\n }\n\n event.stopPropagation();\n return true;\n};\n\nexport var disableBodyScroll = function disableBodyScroll(targetElement, options) {\n if (isIosDevice) {\n // targetElement must be provided, and disableBodyScroll must not have been\n // called on this targetElement before.\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\n return;\n }\n\n if (targetElement && !locks.some(function (lock) {\n return lock.targetElement === targetElement;\n })) {\n var lock = {\n targetElement: targetElement,\n options: options || {}\n };\n\n locks = [].concat(_toConsumableArray(locks), [lock]);\n\n targetElement.ontouchstart = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY;\n }\n };\n targetElement.ontouchmove = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement);\n }\n };\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = true;\n }\n }\n } else {\n setOverflowHidden(options);\n var _lock = {\n targetElement: targetElement,\n options: options || {}\n };\n\n locks = [].concat(_toConsumableArray(locks), [_lock]);\n }\n};\n\nexport var clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\n if (isIosDevice) {\n // Clear all locks ontouchstart/ontouchmove handlers, and the references.\n locks.forEach(function (lock) {\n lock.targetElement.ontouchstart = null;\n lock.targetElement.ontouchmove = null;\n });\n\n if (documentListenerAdded) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n\n locks = [];\n\n // Reset initial clientY.\n initialClientY = -1;\n } else {\n restoreOverflowSetting();\n locks = [];\n }\n};\n\nexport var enableBodyScroll = function enableBodyScroll(targetElement) {\n if (isIosDevice) {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\n return;\n }\n\n targetElement.ontouchstart = null;\n targetElement.ontouchmove = null;\n\n locks = locks.filter(function (lock) {\n return lock.targetElement !== targetElement;\n });\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n\n documentListenerAdded = false;\n }\n } else {\n locks = locks.filter(function (lock) {\n return lock.targetElement !== targetElement;\n });\n if (!locks.length) {\n restoreOverflowSetting();\n }\n }\n};\n\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","const defaultSettings = {\r\n animationAttibute: 'data-aos',\r\n reverseAttribute: 'data-aos-reverse',\r\n thresholdAttribute: 'data-aos-threshold',\r\n rootMarginAttribute: 'data-aos-rootmargin',\r\n};\r\nclass AOS {\r\n constructor(settings = {}) {\r\n this.defaultOptions = {\r\n threshold: 0.6,\r\n rootMargin: '0px',\r\n };\r\n this.createObserver = (element, options) => {\r\n const observer = new IntersectionObserver(entries => this.handleEntries(entries), options);\r\n observer.observe(element);\r\n };\r\n /* handle entries run when a new element is observed (comes into view) */\r\n this.handleEntries = (entries) => {\r\n entries.forEach(entry => {\r\n const cssClass = entry.target.getAttribute(this.settings.animationAttibute);\r\n const reverse = entry.target.getAttribute(this.settings.reverseAttribute) !== null;\r\n if (cssClass === null) {\r\n return;\r\n }\r\n if (!entry.isIntersecting) {\r\n if (reverse) {\r\n entry.target.classList.remove(cssClass);\r\n }\r\n return;\r\n }\r\n entry.target.classList.add(cssClass);\r\n });\r\n };\r\n this.settings = {\r\n ...defaultSettings,\r\n ...settings,\r\n };\r\n const elements = Array.from(document.querySelectorAll(`[${this.settings.animationAttibute}]`));\r\n if (elements.length === 0) {\r\n return;\r\n }\r\n elements.forEach(element => {\r\n const options = { ...this.defaultOptions };\r\n const threshold = parseFloat(element.getAttribute(this.settings.thresholdAttribute) || '');\r\n const rootMargin = element.getAttribute(this.settings.rootMarginAttribute);\r\n if (!isNaN(threshold) && threshold < 1.0) {\r\n options.threshold = threshold;\r\n }\r\n if (rootMargin !== null && rootMargin.length > 0) {\r\n options.rootMargin = rootMargin;\r\n }\r\n this.createObserver(element, options);\r\n });\r\n }\r\n}\r\nexport default AOS;\r\n","/*\n * anime.js v3.2.0\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; }\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (getAttribute(el, prop) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width / viewBox[2],\n h: height / viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n switch (path.property) {\n case 'x': return (p.x - svg.x) * svg.w;\n case 'y': return (p.y - svg.y) * svg.h;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\nvar pausedInstances = [];\nvar raf;\n\nvar engine = (function () {\n function play() { \n raf = requestAnimationFrame(step);\n }\n function step(t) {\n var activeInstancesLength = activeInstances.length;\n if (activeInstancesLength) {\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n } else {\n var instanceIndex = activeInstances.indexOf(activeInstance);\n if (instanceIndex > -1) {\n activeInstances.splice(instanceIndex, 1);\n activeInstancesLength = activeInstances.length;\n }\n }\n i++;\n }\n play();\n } else {\n raf = cancelAnimationFrame(raf);\n }\n }\n return play;\n})();\n\nfunction handleVisibilityChange() {\n if (document.hidden) {\n activeInstances.forEach(function (ins) { return ins.pause(); });\n pausedInstances = activeInstances.slice(0);\n anime.running = activeInstances = [];\n } else {\n pausedInstances.forEach(function (ins) { return ins.play(); });\n }\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n if (!raf) { engine(); }\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargets(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.0';\nanime.speed = 1;\nanime.running = activeInstances;\nanime.remove = removeTargets;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nexport default anime;\n","import { UAParser } from '@amplitude/ua-parser-js';\n\nvar ApplicationContextProviderImpl = /** @class */ (function () {\n function ApplicationContextProviderImpl() {\n this.ua = new UAParser(typeof navigator !== 'undefined' ? navigator.userAgent : null).getResult();\n }\n ApplicationContextProviderImpl.prototype.getApplicationContext = function () {\n return {\n versionName: this.versionName,\n language: getLanguage(),\n platform: 'Web',\n os: getOs(this.ua),\n deviceModel: getDeviceModel(this.ua),\n };\n };\n return ApplicationContextProviderImpl;\n}());\nvar getOs = function (ua) {\n var _a, _b;\n return [(_a = ua.browser) === null || _a === void 0 ? void 0 : _a.name, (_b = ua.browser) === null || _b === void 0 ? void 0 : _b.major]\n .filter(function (e) { return e !== null && e !== undefined; })\n .join(' ');\n};\nvar getDeviceModel = function (ua) {\n var _a;\n return (_a = ua.os) === null || _a === void 0 ? void 0 : _a.name;\n};\nvar getLanguage = function () {\n return ((typeof navigator !== 'undefined' &&\n ((navigator.languages && navigator.languages[0]) ||\n navigator.language)) ||\n '');\n};\n\nvar EventBridgeImpl = /** @class */ (function () {\n function EventBridgeImpl() {\n this.queue = [];\n }\n EventBridgeImpl.prototype.logEvent = function (event) {\n if (!this.receiver) {\n if (this.queue.length < 512) {\n this.queue.push(event);\n }\n }\n else {\n this.receiver(event);\n }\n };\n EventBridgeImpl.prototype.setEventReceiver = function (receiver) {\n this.receiver = receiver;\n if (this.queue.length > 0) {\n this.queue.forEach(function (event) {\n receiver(event);\n });\n this.queue = [];\n }\n };\n return EventBridgeImpl;\n}());\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\nvar __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar ID_OP_SET = '$set';\nvar ID_OP_UNSET = '$unset';\nvar ID_OP_CLEAR_ALL = '$clearAll';\n// Polyfill for Object.entries\nif (!Object.entries) {\n Object.entries = function (obj) {\n var ownProps = Object.keys(obj);\n var i = ownProps.length;\n var resArray = new Array(i);\n while (i--) {\n resArray[i] = [ownProps[i], obj[ownProps[i]]];\n }\n return resArray;\n };\n}\nvar IdentityStoreImpl = /** @class */ (function () {\n function IdentityStoreImpl() {\n this.identity = { userProperties: {} };\n this.listeners = new Set();\n }\n IdentityStoreImpl.prototype.editIdentity = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n var actingUserProperties = __assign({}, this.identity.userProperties);\n var actingIdentity = __assign(__assign({}, this.identity), { userProperties: actingUserProperties });\n return {\n setUserId: function (userId) {\n actingIdentity.userId = userId;\n return this;\n },\n setDeviceId: function (deviceId) {\n actingIdentity.deviceId = deviceId;\n return this;\n },\n setUserProperties: function (userProperties) {\n actingIdentity.userProperties = userProperties;\n return this;\n },\n updateUserProperties: function (actions) {\n var actingProperties = actingIdentity.userProperties || {};\n for (var _i = 0, _a = Object.entries(actions); _i < _a.length; _i++) {\n var _b = _a[_i], action = _b[0], properties = _b[1];\n switch (action) {\n case ID_OP_SET:\n for (var _c = 0, _d = Object.entries(properties); _c < _d.length; _c++) {\n var _e = _d[_c], key = _e[0], value = _e[1];\n actingProperties[key] = value;\n }\n break;\n case ID_OP_UNSET:\n for (var _f = 0, _g = Object.keys(properties); _f < _g.length; _f++) {\n var key = _g[_f];\n delete actingProperties[key];\n }\n break;\n case ID_OP_CLEAR_ALL:\n actingProperties = {};\n break;\n }\n }\n actingIdentity.userProperties = actingProperties;\n return this;\n },\n commit: function () {\n self.setIdentity(actingIdentity);\n return this;\n },\n };\n };\n IdentityStoreImpl.prototype.getIdentity = function () {\n return __assign({}, this.identity);\n };\n IdentityStoreImpl.prototype.setIdentity = function (identity) {\n var originalIdentity = __assign({}, this.identity);\n this.identity = __assign({}, identity);\n if (!isEqual(originalIdentity, this.identity)) {\n this.listeners.forEach(function (listener) {\n listener(identity);\n });\n }\n };\n IdentityStoreImpl.prototype.addIdentityListener = function (listener) {\n this.listeners.add(listener);\n };\n IdentityStoreImpl.prototype.removeIdentityListener = function (listener) {\n this.listeners.delete(listener);\n };\n return IdentityStoreImpl;\n}());\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar isEqual = function (obj1, obj2) {\n var primitive = ['string', 'number', 'boolean', 'undefined'];\n var typeA = typeof obj1;\n var typeB = typeof obj2;\n if (typeA !== typeB) {\n return false;\n }\n for (var _i = 0, primitive_1 = primitive; _i < primitive_1.length; _i++) {\n var p = primitive_1[_i];\n if (p === typeA) {\n return obj1 === obj2;\n }\n }\n //if got here - objects\n if (obj1.length !== obj2.length) {\n return false;\n }\n //check if arrays\n var isArrayA = Array.isArray(obj1);\n var isArrayB = Array.isArray(obj2);\n if (isArrayA !== isArrayB) {\n return false;\n }\n if (isArrayA && isArrayB) {\n //arrays\n for (var i = 0; i < obj1.length; i++) {\n if (!isEqual(obj1[i], obj2[i])) {\n return false;\n }\n }\n }\n else {\n //objects\n var sorted1 = Object.keys(obj1).sort();\n var sorted2 = Object.keys(obj2).sort();\n if (!isEqual(sorted1, sorted2)) {\n return false;\n }\n //compare object values\n var result_1 = true;\n Object.keys(obj1).forEach(function (key) {\n if (!isEqual(obj1[key], obj2[key])) {\n result_1 = false;\n }\n });\n return result_1;\n }\n return true;\n};\n\nvar safeGlobal = typeof globalThis !== 'undefined' ? globalThis : global || self;\n\nvar AnalyticsConnector = /** @class */ (function () {\n function AnalyticsConnector() {\n this.identityStore = new IdentityStoreImpl();\n this.eventBridge = new EventBridgeImpl();\n this.applicationContextProvider = new ApplicationContextProviderImpl();\n }\n AnalyticsConnector.getInstance = function (instanceName) {\n if (!safeGlobal['analyticsConnectorInstances']) {\n safeGlobal['analyticsConnectorInstances'] = {};\n }\n if (!safeGlobal['analyticsConnectorInstances'][instanceName]) {\n safeGlobal['analyticsConnectorInstances'][instanceName] =\n new AnalyticsConnector();\n }\n return safeGlobal['analyticsConnectorInstances'][instanceName];\n };\n return AnalyticsConnector;\n}());\n\nexport { AnalyticsConnector };\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/* eslint no-void: \"off\" */\n\n// Loaded ready states\nvar loadedStates = ['interactive', 'complete'];\n\n// Return Promise\nvar whenDomReady = function whenDomReady(cb, doc) {\n\treturn new Promise(function (resolve) {\n\t\t// Allow doc to be passed in as the lone first param\n\t\tif (cb && typeof cb !== 'function') {\n\t\t\tdoc = cb;\n\t\t\tcb = null;\n\t\t}\n\n\t\t// Use global document if we don't have one\n\t\tdoc = doc || window.document;\n\n\t\t// Handle DOM load\n\t\tvar done = function done() {\n\t\t\treturn resolve(void (cb && setTimeout(cb)));\n\t\t};\n\n\t\t// Resolve now if DOM has already loaded\n\t\t// Otherwise wait for DOMContentLoaded\n\t\tif (loadedStates.indexOf(doc.readyState) !== -1) {\n\t\t\tdone();\n\t\t} else {\n\t\t\tdoc.addEventListener('DOMContentLoaded', done);\n\t\t}\n\t});\n};\n\n// Promise chain helper\nwhenDomReady.resume = function (doc) {\n\treturn function (val) {\n\t\treturn whenDomReady(doc).then(function () {\n\t\t\treturn val;\n\t\t});\n\t};\n};\n\nexport default whenDomReady;\n//# sourceMappingURL=index.es2015.js.map\n"],"sourceRoot":""}