{"version":3,"sources":["../node_modules/@rudderstack/analytics-js/dist/npm/modern/esm/index.mjs"],"sourcesContent":["function _isPlaceholder(a){return a!=null&&typeof a==='object'&&a['@@functional/placeholder']===true;}\n\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */function _curry1(fn){return function f1(a){if(arguments.length===0||_isPlaceholder(a)){return f1;}else {return fn.apply(this,arguments);}};}\n\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */function _curry2(fn){return function f2(a,b){switch(arguments.length){case 0:return f2;case 1:return _isPlaceholder(a)?f2:_curry1(function(_b){return fn(a,_b);});default:return _isPlaceholder(a)&&_isPlaceholder(b)?f2:_isPlaceholder(a)?_curry1(function(_a){return fn(_a,b);}):_isPlaceholder(b)?_curry1(function(_b){return fn(a,_b);}):fn(a,b);}};}\n\n/**\n * Optimized internal three-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */function _curry3(fn){return function f3(a,b,c){switch(arguments.length){case 0:return f3;case 1:return _isPlaceholder(a)?f3:_curry2(function(_b,_c){return fn(a,_b,_c);});case 2:return _isPlaceholder(a)&&_isPlaceholder(b)?f3:_isPlaceholder(a)?_curry2(function(_a,_c){return fn(_a,b,_c);}):_isPlaceholder(b)?_curry2(function(_b,_c){return fn(a,_b,_c);}):_curry1(function(_c){return fn(a,b,_c);});default:return _isPlaceholder(a)&&_isPlaceholder(b)&&_isPlaceholder(c)?f3:_isPlaceholder(a)&&_isPlaceholder(b)?_curry2(function(_a,_b){return fn(_a,_b,c);}):_isPlaceholder(a)&&_isPlaceholder(c)?_curry2(function(_a,_c){return fn(_a,b,_c);}):_isPlaceholder(b)&&_isPlaceholder(c)?_curry2(function(_b,_c){return fn(a,_b,_c);}):_isPlaceholder(a)?_curry1(function(_a){return fn(_a,b,c);}):_isPlaceholder(b)?_curry1(function(_b){return fn(a,_b,c);}):_isPlaceholder(c)?_curry1(function(_c){return fn(a,b,_c);}):fn(a,b,c);}};}\n\nfunction _has(prop,obj){return Object.prototype.hasOwnProperty.call(obj,prop);}\n\n/**\n * Gives a single-word string description of the (native) type of a value,\n * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not\n * attempt to distinguish user Object types any further, reporting them all as\n * 'Object'.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Type\n * @sig * -> String\n * @param {*} val The value to test\n * @return {String}\n * @example\n *\n *      R.type({}); //=> \"Object\"\n *      R.type(new Map); //=> \"Map\"\n *      R.type(new Set); //=> \"Set\"\n *      R.type(1); //=> \"Number\"\n *      R.type(false); //=> \"Boolean\"\n *      R.type('s'); //=> \"String\"\n *      R.type(null); //=> \"Null\"\n *      R.type([]); //=> \"Array\"\n *      R.type(/[A-z]/); //=> \"RegExp\"\n *      R.type(() => {}); //=> \"Function\"\n *      R.type(async () => {}); //=> \"AsyncFunction\"\n *      R.type(undefined); //=> \"Undefined\"\n *      R.type(BigInt(123)); //=> \"BigInt\"\n */var type=/*#__PURE__*/_curry1(function type(val){return val===null?'Null':val===undefined?'Undefined':Object.prototype.toString.call(val).slice(8,-1);});\n\nfunction _isObject(x){return Object.prototype.toString.call(x)==='[object Object]';}\n\n/**\n * Determine if the passed argument is an integer.\n *\n * @private\n * @param {*} n\n * @category Type\n * @return {Boolean}\n */const _isInteger = Number.isInteger||function _isInteger(n){return n<<0===n;};\n\nfunction _nth(offset,list){var idx=offset<0?list.length+offset:offset;return list[idx];}\n\nfunction _cloneRegExp(pattern){return new RegExp(pattern.source,pattern.flags?pattern.flags:(pattern.global?'g':'')+(pattern.ignoreCase?'i':'')+(pattern.multiline?'m':'')+(pattern.sticky?'y':'')+(pattern.unicode?'u':'')+(pattern.dotAll?'s':''));}\n\n/**\n * Copies an object.\n *\n * @private\n * @param {*} value The value to be copied\n * @param {Boolean} deep Whether or not to perform deep cloning.\n * @return {*} The copied value.\n */function _clone(value,deep,map){map||(map=new _ObjectMap());// this avoids the slower switch with a quick if decision removing some milliseconds in each run.\nif(_isPrimitive(value)){return value;}var copy=function copy(copiedValue){// Check for circular and same references on the object graph and return its corresponding clone.\nvar cachedCopy=map.get(value);if(cachedCopy){return cachedCopy;}map.set(value,copiedValue);for(var key in value){if(Object.prototype.hasOwnProperty.call(value,key)){copiedValue[key]=_clone(value[key],true,map);}}return copiedValue;};switch(type(value)){case 'Object':return copy(Object.create(Object.getPrototypeOf(value)));case 'Array':return copy(Array(value.length));case 'Date':return new Date(value.valueOf());case 'RegExp':return _cloneRegExp(value);case 'Int8Array':case 'Uint8Array':case 'Uint8ClampedArray':case 'Int16Array':case 'Uint16Array':case 'Int32Array':case 'Uint32Array':case 'Float32Array':case 'Float64Array':case 'BigInt64Array':case 'BigUint64Array':return value.slice();default:return value;}}function _isPrimitive(param){var type=typeof param;return param==null||type!='object'&&type!='function';}var _ObjectMap=/*#__PURE__*/function(){function _ObjectMap(){this.map={};this.length=0;}_ObjectMap.prototype.set=function(key,value){var hashedKey=this.hash(key);var bucket=this.map[hashedKey];if(!bucket){this.map[hashedKey]=bucket=[];}bucket.push([key,value]);this.length+=1;};_ObjectMap.prototype.hash=function(key){var hashedKey=[];for(var value in key){hashedKey.push(Object.prototype.toString.call(key[value]));}return hashedKey.join();};_ObjectMap.prototype.get=function(key){/**\n     * depending on the number of objects to be cloned is faster to just iterate over the items in the map just because the hash function is so costly,\n     * on my tests this number is 180, anything above that using the hash function is faster.\n     */if(this.length<=180){for(var p in this.map){var bucket=this.map[p];for(var i=0;i<bucket.length;i+=1){var element=bucket[i];if(element[0]===key){return element[1];}}}return;}var hashedKey=this.hash(key);var bucket=this.map[hashedKey];if(!bucket){return;}for(var i=0;i<bucket.length;i+=1){var element=bucket[i];if(element[0]===key){return element[1];}}};return _ObjectMap;}();\n\n/**\n * Creates a deep copy of the source that can be used in place of the source\n * object without retaining any references to it.\n * The source object may contain (nested) `Array`s and `Object`s,\n * `Number`s, `String`s, `Boolean`s and `Date`s.\n * `Function`s are assigned by reference rather than copied.\n *\n * Dispatches to a `clone` method if present.\n *\n * Note that if the source object has multiple nodes that share a reference,\n * the returned object will have the same structure, but the references will\n * be pointed to the location within the cloned value.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {*} -> {*}\n * @param {*} value The object or array to clone\n * @return {*} A deeply cloned copy of `val`\n * @example\n *\n *      const objects = [{}, {}, {}];\n *      const objectsClone = R.clone(objects);\n *      objects === objectsClone; //=> false\n *      objects[0] === objectsClone[0]; //=> false\n */var clone=/*#__PURE__*/_curry1(function clone(value){return value!=null&&typeof value.clone==='function'?value.clone():_clone(value);});\n\nfunction _path(pathAr,obj){var val=obj;for(var i=0;i<pathAr.length;i+=1){if(val==null){return undefined;}var p=pathAr[i];if(_isInteger(p)){val=_nth(p,val);}else {val=val[p];}}return val;}\n\n/**\n * Creates a new object with the own properties of the two provided objects. If\n * a key exists in both objects, the provided function is applied to the key\n * and the values associated with the key in each object, with the result being\n * used as the value associated with the key in the returned object.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Object\n * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeDeepWithKey, R.mergeWith\n * @example\n *\n *      let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r\n *      R.mergeWithKey(concatValues,\n *                     { a: true, thing: 'foo', values: [10, 20] },\n *                     { b: true, thing: 'bar', values: [15, 35] });\n *      //=> { a: true, b: true, thing: 'bar', values: [10, 20, 15, 35] }\n * @symb R.mergeWithKey(f, { x: 1, y: 2 }, { y: 5, z: 3 }) = { x: 1, y: f('y', 2, 5), z: 3 }\n */var mergeWithKey=/*#__PURE__*/_curry3(function mergeWithKey(fn,l,r){var result={};var k;l=l||{};r=r||{};for(k in l){if(_has(k,l)){result[k]=_has(k,r)?fn(k,l[k],r[k]):l[k];}}for(k in r){if(_has(k,r)&&!_has(k,result)){result[k]=r[k];}}return result;});\n\n/**\n * Creates a new object with the own properties of the two provided objects.\n * If a key exists in both objects:\n * - and both associated values are also objects then the values will be\n *   recursively merged.\n * - otherwise the provided function is applied to the key and associated values\n *   using the resulting value as the new value associated with the key.\n * If a key only exists in one object, the value will be associated with the key\n * of the resulting object.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.mergeWithKey, R.mergeDeepWith\n * @example\n *\n *      let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r\n *      R.mergeDeepWithKey(concatValues,\n *                         { a: true, c: { thing: 'foo', values: [10, 20] }},\n *                         { b: true, c: { thing: 'bar', values: [15, 35] }});\n *      //=> { a: true, b: true, c: { thing: 'bar', values: [10, 20, 15, 35] }}\n */var mergeDeepWithKey=/*#__PURE__*/_curry3(function mergeDeepWithKey(fn,lObj,rObj){return mergeWithKey(function(k,lVal,rVal){if(_isObject(lVal)&&_isObject(rVal)){return mergeDeepWithKey(fn,lVal,rVal);}else {return fn(k,lVal,rVal);}},lObj,rObj);});\n\n/**\n * Creates a new object with the own properties of the two provided objects.\n * If a key exists in both objects:\n * - and both associated values are also objects then the values will be\n *   recursively merged.\n * - otherwise the provided function is applied to associated values using the\n *   resulting value as the new value associated with the key.\n * If a key only exists in one object, the value will be associated with the key\n * of the resulting object.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig ((a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.mergeWith, R.mergeDeepWithKey\n * @example\n *\n *      R.mergeDeepWith(R.concat,\n *                      { a: true, c: { values: [10, 20] }},\n *                      { b: true, c: { values: [15, 35] }});\n *      //=> { a: true, b: true, c: { values: [10, 20, 15, 35] }}\n */var mergeDeepWith=/*#__PURE__*/_curry3(function mergeDeepWith(fn,lObj,rObj){return mergeDeepWithKey(function(k,lVal,rVal){return fn(lVal,rVal);},lObj,rObj);});\n\n/**\n * Retrieves the value at a given path. The nodes of the path can be arbitrary strings or non-negative integers.\n * For anything else, the value is unspecified. Integer paths are meant to index arrays, strings are meant for objects.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @sig [Idx] -> {a} -> a | Undefined\n * @sig Idx = String | NonNegativeInt\n * @param {Array} path The path to use.\n * @param {Object} obj The object or array to retrieve the nested property from.\n * @return {*} The data at `path`.\n * @see R.prop, R.nth, R.assocPath, R.dissocPath\n * @example\n *\n *      R.path(['a', 'b'], {a: {b: 2}}); //=> 2\n *      R.path(['a', 'b'], {c: {b: 2}}); //=> undefined\n *      R.path(['a', 'b', 0], {a: {b: [1, 2, 3]}}); //=> 1\n *      R.path(['a', 'b', -2], {a: {b: [1, 2, 3]}}); //=> 2\n *      R.path([2], {'2': 2}); //=> 2\n *      R.path([-2], {'-2': 'a'}); //=> undefined\n */var path=/*#__PURE__*/_curry2(_path);\n\n/**\n * Returns a partial copy of an object containing only the keys that satisfy\n * the supplied predicate.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @sig ((v, k) -> Boolean) -> {k: v} -> {k: v}\n * @param {Function} pred A predicate to determine whether or not a key\n *        should be included on the output object.\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with only properties that satisfy `pred`\n *         on it.\n * @see R.pick, R.filter\n * @example\n *\n *      const isUpperCase = (val, key) => key.toUpperCase() === key;\n *      R.pickBy(isUpperCase, {a: 1, b: 2, A: 3, B: 4}); //=> {A: 3, B: 4}\n */var pickBy=/*#__PURE__*/_curry2(function pickBy(test,obj){var result={};for(var prop in obj){if(test(obj[prop],prop,obj)){result[prop]=obj[prop];}}return result;});\n\n/**\n * A function to check given value is a function\n * @param value input value\n * @returns boolean\n */const isFunction=value=>typeof value==='function'&&Boolean(value.constructor&&value.call&&value.apply);/**\n * A function to check given value is a string\n * @param value input value\n * @returns boolean\n */const isString=value=>typeof value==='string';/**\n * A function to check given value is null or not\n * @param value input value\n * @returns boolean\n */const isNull=value=>value===null;/**\n * A function to check given value is undefined\n * @param value input value\n * @returns boolean\n */const isUndefined=value=>typeof value==='undefined';/**\n * A function to check given value is null or undefined\n * @param value input value\n * @returns boolean\n */const isNullOrUndefined=value=>isNull(value)||isUndefined(value);/**\n * Checks if the input is a BigInt\n * @param value input value\n * @returns True if the input is a BigInt\n */const isBigInt=value=>typeof value==='bigint';/**\n * A function to check given value is defined\n * @param value input value\n * @returns boolean\n */const isDefined=value=>!isUndefined(value);/**\n * A function to check given value is defined and not null\n * @param value input value\n * @returns boolean\n */const isDefinedAndNotNull=value=>!isNullOrUndefined(value);/**\n * A function to check given value is defined and not null\n * @param value input value\n * @returns boolean\n */const isDefinedNotNullAndNotEmptyString=value=>isDefinedAndNotNull(value)&&value!=='';/**\n * Determines if the input is of type error\n * @param value input value\n * @returns true if the input is of type error else false\n */const isTypeOfError=value=>{switch(Object.prototype.toString.call(value)){case '[object Error]':case '[object Exception]':case '[object DOMException]':return true;default:return value instanceof Error;}};/**\n * A function to check given value is a boolean\n * @param value input value\n * @returns boolean\n */const isBoolean=value=>typeof value==='boolean';\n\nconst getValueByPath=(obj,keyPath)=>{const pathParts=keyPath.split('.');return path(pathParts,obj);};const hasValueByPath=(obj,path)=>Boolean(getValueByPath(obj,path));const isObject=value=>typeof value==='object';/**\n * Checks if the input is an object literal or built-in object type and not null\n * @param value Input value\n * @returns true if the input is an object and not null\n */const isObjectAndNotNull=value=>!isNull(value)&&isObject(value)&&!Array.isArray(value);/**\n * Checks if the input is an object literal and not null\n * @param value Input value\n * @returns true if the input is an object and not null\n */const isObjectLiteralAndNotNull=value=>!isNull(value)&&Object.prototype.toString.call(value)==='[object Object]';/**\n * Merges two arrays deeply, right-to-left\n * In the case of conflicts, the right array's values replace the left array's values in the\n * same index position\n * @param leftValue - The left array\n * @param rightValue - The right array\n * @returns The merged array\n */const mergeDeepRightObjectArrays=(leftValue,rightValue)=>{if(!Array.isArray(leftValue)||!Array.isArray(rightValue)){return clone(rightValue);}const mergedArray=clone(leftValue);rightValue.forEach((value,index)=>{mergedArray[index]=Array.isArray(value)||isObjectAndNotNull(value)?// eslint-disable-next-line @typescript-eslint/no-use-before-define\nmergeDeepRight(mergedArray[index],value):value;});return mergedArray;};/**\n * Merges two objects deeply, right-to-left.\n * In the case of conflicts, the right object's values take precedence.\n * For arrays, the right array's values replace the left array's values in the\n * same index position keeping the remaining left array's values in the resultant array.\n * @param leftObject - The left object\n * @param rightObject - The right object\n * @returns The merged object\n */const mergeDeepRight=(leftObject,rightObject)=>mergeDeepWith(mergeDeepRightObjectArrays,leftObject,rightObject);/**\n Checks if the input is a non-empty object literal type and not undefined or null\n * @param value input any\n * @returns boolean\n */const isNonEmptyObject=value=>isObjectLiteralAndNotNull(value)&&Object.keys(value).length>0;/**\n * A utility to recursively remove undefined values from an object\n * @param obj input object\n * @returns a new object\n */const removeUndefinedValues=obj=>{const result=pickBy(isDefined,obj);Object.keys(result).forEach(key=>{const value=result[key];if(isObjectLiteralAndNotNull(value)){result[key]=removeUndefinedValues(value);}});return result;};/**\n * A utility to recursively remove undefined and null values from an object\n * @param obj input object\n * @returns a new object\n */const removeUndefinedAndNullValues=obj=>{const result=pickBy(isDefinedAndNotNull,obj);Object.keys(result).forEach(key=>{const value=result[key];if(isObjectLiteralAndNotNull(value)){result[key]=removeUndefinedAndNullValues(value);}});return result;};/**\n * Normalizes an object by removing undefined and null values.\n * @param val - The value to normalize\n * @returns The normalized object, or undefined if input is not a non-empty object\n * @example\n * getNormalizedObjectValue({ a: 1, b: null, c: undefined }) // returns { a: 1 }\n * getNormalizedObjectValue({}) // returns undefined\n * getNormalizedObjectValue(null) // returns undefined\n */const getNormalizedObjectValue=val=>{if(!isNonEmptyObject(val)){return undefined;}return removeUndefinedAndNullValues(val);};/**\n * Normalizes a value to a boolean, with support for a default value\n * @param val Input value\n * @param defVal Default value\n * @returns Returns the input value if it is a boolean, otherwise returns the default value\n * @example\n * getNormalizedBooleanValue(true, false) // returns true\n */const getNormalizedBooleanValue=(val,defVal)=>typeof val==='boolean'?val:defVal;const deepFreeze=obj=>{Object.getOwnPropertyNames(obj).forEach(function(prop){if(obj[prop]&&typeof obj[prop]==='object'){deepFreeze(obj[prop]);}});return Object.freeze(obj);};\n\nconst trim=value=>value.replace(/^\\s+|\\s+$/gm,'');const removeLeadingPeriod=value=>value.replace(/^\\.+/,'');/**\n * A function to convert values to string\n * @param val input value\n * @returns stringified value\n */const tryStringify=val=>{let retVal=val;if(!isString(val)&&!isNullOrUndefined(val)){try{retVal=JSON.stringify(val);}catch(e){retVal=null;}}return retVal;};// The following text encoding and decoding is done before base64 encoding to prevent\n/**\n * Converts a bytes array to base64 encoded string\n * @param bytes bytes array to be converted to base64\n * @returns base64 encoded string\n */const bytesToBase64=bytes=>{const binString=Array.from(bytes,x=>String.fromCodePoint(x)).join('');return globalThis.btoa(binString);};/**\n * Encodes a string to base64 even with unicode characters\n * @param value input string\n * @returns base64 encoded string\n */const toBase64=value=>bytesToBase64(new TextEncoder().encode(value));\n\n//   if yes make them null instead of omitting in overloaded cases\n/*\n * Normalise the overloaded arguments of the page call facade\n */const pageArgumentsToCallOptions=(category,name,properties,options,callback)=>{const payload={category:category,name:name,properties:properties,options:options,callback:undefined};if(isFunction(callback)){payload.callback=callback;}if(isFunction(options)){payload.category=category;payload.name=name;payload.properties=properties;payload.options=undefined;payload.callback=options;}if(isFunction(properties)){payload.category=category;payload.name=name;payload.properties=undefined;payload.options=undefined;payload.callback=properties;}if(isFunction(name)){payload.category=category;payload.name=undefined;payload.properties=undefined;payload.options=undefined;payload.callback=name;}if(isFunction(category)){payload.category=undefined;payload.name=undefined;payload.properties=undefined;payload.options=undefined;payload.callback=category;}if(isObjectLiteralAndNotNull(category)){payload.name=undefined;payload.category=undefined;payload.properties=category;if(!isFunction(name)){payload.options=name;}else {payload.options=undefined;}}else if(isObjectLiteralAndNotNull(name)){payload.name=undefined;payload.properties=name;if(!isFunction(properties)){payload.options=properties;}else {payload.options=undefined;}}// if the category argument alone is provided b/w category and name,\n// use it as name and set category to undefined\nif(isString(category)&&!isString(name)){payload.category=undefined;payload.name=category;}// Rest of the code is just to clean up undefined values\n// and set some proper defaults\n// Also, to clone the incoming object type arguments\nif(!isDefined(payload.category)){payload.category=undefined;}if(!isDefined(payload.name)){payload.name=undefined;}payload.properties=payload.properties?clone(payload.properties):{};if(isDefined(payload.options)){payload.options=clone(payload.options);}else {payload.options=undefined;}const nameForProperties=isString(payload.name)?payload.name:payload.properties.name;const categoryForProperties=isString(payload.category)?payload.category:payload.properties.category;// add name and category to properties\npayload.properties=mergeDeepRight(isObjectLiteralAndNotNull(payload.properties)?payload.properties:{},{...(nameForProperties&&{name:nameForProperties}),...(categoryForProperties&&{category:categoryForProperties})});return payload;};/*\n * Normalise the overloaded arguments of the track call facade\n */const trackArgumentsToCallOptions=(event,properties,options,callback)=>{const payload={name:event,properties:properties,options:options,callback:undefined};if(isFunction(callback)){payload.callback=callback;}if(isFunction(options)){payload.properties=properties;payload.options=undefined;payload.callback=options;}if(isFunction(properties)){payload.properties=undefined;payload.options=undefined;payload.callback=properties;}// Rest of the code is just to clean up undefined values\n// and set some proper defaults\n// Also, to clone the incoming object type arguments\npayload.properties=isDefinedAndNotNull(payload.properties)?clone(payload.properties):{};if(isDefined(payload.options)){payload.options=clone(payload.options);}else {payload.options=undefined;}return payload;};/*\n * Normalise the overloaded arguments of the identify call facade\n */const identifyArgumentsToCallOptions=(userId,traits,options,callback)=>{const payload={userId:userId,traits:traits,options:options,callback:undefined};if(isFunction(callback)){payload.callback=callback;}if(isFunction(options)){payload.userId=userId;payload.traits=traits;payload.options=undefined;payload.callback=options;}if(isFunction(traits)){payload.userId=userId;payload.traits=undefined;payload.options=undefined;payload.callback=traits;}if(isObjectLiteralAndNotNull(userId)||isNull(userId)){// Explicitly set null to prevent resetting the existing value\n// in the Analytics class\npayload.userId=null;payload.traits=userId;if(!isFunction(traits)){payload.options=traits;}else {payload.options=undefined;}}// Rest of the code is just to clean up undefined values\n// and set some proper defaults\n// Also, to clone the incoming object type arguments\npayload.userId=tryStringify(payload.userId);if(isObjectLiteralAndNotNull(payload.traits)){payload.traits=clone(payload.traits);}else {payload.traits=undefined;}if(isDefined(payload.options)){payload.options=clone(payload.options);}else {payload.options=undefined;}return payload;};/*\n * Normalise the overloaded arguments of the alias call facade\n */const aliasArgumentsToCallOptions=(to,from,options,callback)=>{const payload={to,from:from,options:options,callback:undefined};if(isFunction(callback)){payload.callback=callback;}if(isFunction(options)){payload.to=to;payload.from=from;payload.options=undefined;payload.callback=options;}if(isFunction(from)){payload.to=to;payload.from=undefined;payload.options=undefined;payload.callback=from;}else if(isObjectLiteralAndNotNull(from)||isNull(from)){payload.to=to;payload.from=undefined;payload.options=from;}// Rest of the code is just to clean up undefined values\n// and set some proper defaults\n// Also, to clone the incoming object type arguments\nif(isDefined(payload.to)){payload.to=tryStringify(payload.to);}if(isDefined(payload.from)){payload.from=tryStringify(payload.from);}else {payload.from=undefined;}if(isDefined(payload.options)){payload.options=clone(payload.options);}else {payload.options=undefined;}return payload;};/*\n * Normalise the overloaded arguments of the group call facade\n */const groupArgumentsToCallOptions=(groupId,traits,options,callback)=>{const payload={groupId:groupId,traits:traits,options:options,callback:undefined};if(isFunction(callback)){payload.callback=callback;}if(isFunction(options)){payload.groupId=groupId;payload.traits=traits;payload.options=undefined;payload.callback=options;}if(isFunction(traits)){payload.groupId=groupId;payload.traits=undefined;payload.options=undefined;payload.callback=traits;}if(isObjectLiteralAndNotNull(groupId)||isNull(groupId)){// Explicitly set null to prevent resetting the existing value\n// in the Analytics class\npayload.groupId=null;payload.traits=groupId;if(!isFunction(traits)){payload.options=traits;}else {payload.options=undefined;}}// Rest of the code is just to clean up undefined values\n// and set some proper defaults\n// Also, to clone the incoming object type arguments\npayload.groupId=tryStringify(payload.groupId);if(isObjectLiteralAndNotNull(payload.traits)){payload.traits=clone(payload.traits);}else {payload.traits=undefined;}if(isDefined(payload.options)){payload.options=clone(payload.options);}else {payload.options=undefined;}return payload;};\n\n/**\n * Represents the options parameter for anonymousId\n *//**\n * Represents the beacon queue options parameter in loadOptions type\n *//**\n * Represents the queue options parameter in loadOptions type\n *//**\n * Represents the destinations queue options parameter in loadOptions type\n */let PageLifecycleEvents=/*#__PURE__*/function(PageLifecycleEvents){PageLifecycleEvents[\"UNLOADED\"]=\"Page Unloaded\";return PageLifecycleEvents;}({});/**\n * Represents the source configuration override options for destinations\n *//**\n * Represents the options parameter in the load API\n */\n\nconst API_SUFFIX='API';const CAPABILITIES_MANAGER='CapabilitiesManager';const CONFIG_MANAGER='ConfigManager';const EVENT_MANAGER='EventManager';const PLUGINS_MANAGER='PluginsManager';const USER_SESSION_MANAGER='UserSessionManager';const ERROR_HANDLER='ErrorHandler';const PLUGIN_ENGINE='PluginEngine';const STORE_MANAGER='StoreManager';const READY_API=`Ready${API_SUFFIX}`;const LOAD_API=`Load${API_SUFFIX}`;const HTTP_CLIENT='HttpClient';const RSA='RudderStackAnalytics';const ANALYTICS_CORE='AnalyticsCore';\n\nfunction random(len){return crypto.getRandomValues(new Uint8Array(len));}\n\nvar SIZE=4096,HEX$1=[],IDX$1=0,BUFFER$1;for(;IDX$1<256;IDX$1++){HEX$1[IDX$1]=(IDX$1+256).toString(16).substring(1);}function v4$1(){if(!BUFFER$1||IDX$1+16>SIZE){BUFFER$1=random(SIZE);IDX$1=0;}var i=0,tmp,out='';for(;i<16;i++){tmp=BUFFER$1[IDX$1+i];if(i==6)out+=HEX$1[tmp&15|64];else if(i==8)out+=HEX$1[tmp&63|128];else out+=HEX$1[tmp];if(i&1&&i>1&&i<11)out+='-';}IDX$1+=16;return out;}\n\nvar IDX=256,HEX=[],BUFFER;while(IDX--)HEX[IDX]=(IDX+256).toString(16).substring(1);function v4(){var i=0,num,out='';if(!BUFFER||IDX+16>256){BUFFER=Array(i=256);while(i--)BUFFER[i]=256*Math.random()|0;i=IDX=0;}for(;i<16;i++){num=BUFFER[IDX+i];if(i==6)out+=HEX[num&15|64];else if(i==8)out+=HEX[num&63|128];else out+=HEX[num];if(i&1&&i>1&&i<11)out+='-';}IDX++;return out;}\n\nconst hasCrypto$1=()=>!isNullOrUndefined(globalThis.crypto)&&isFunction(globalThis.crypto.getRandomValues);\n\nconst generateUUID=()=>{if(hasCrypto$1()){return v4$1();}return v4();};\n\n/**\n * Determines if the SDK is running inside a chrome extension\n * @returns boolean\n */const isSDKRunningInChromeExtension=()=>!!window.chrome?.runtime?.id;const isIE11=()=>isString(globalThis.navigator.userAgent)&&/Trident.*rv:11\\./.test(globalThis.navigator.userAgent);\n\n/**\n * Registers events to detect page leave scenarios\n * @param callback Callback function\n * @param avoidBfCacheOptimization When `true`, forcefully subscribes to beforeunload event, compromising on the bfcache optimization\n */const onPageLeave=(callback,avoidBfCacheOptimization=false)=>{// To ensure the callback is only called once even if more than one events\n// are fired at once.\nlet pageLeft=false;let isAccessible=false;function handleOnLeave(){if(pageLeft){return;}pageLeft=true;callback(isAccessible);// Reset pageLeft on the next tick\n// to ensure callback executes for other listeners\n// when closing an inactive browser tab.\nsetTimeout(()=>{pageLeft=false;},0);}// Catches the unloading of the page (e.g., closing the tab or navigating away).\n// Includes user actions like clicking a link, entering a new URL,\n// refreshing the page, or closing the browser tab\n// Note that 'pagehide' is not supported in IE.\n// Registering this event conditionally for IE11 also because\n// it affects bfcache optimization on modern browsers otherwise.\n// However, if optimization is disabled, force subscribe the event\nif(avoidBfCacheOptimization||isIE11()){globalThis.addEventListener('beforeunload',()=>{isAccessible=false;handleOnLeave();});}// This is important for iOS Safari browser as it does not\n// fire the regular pagehide and visibilitychange events\n// when user goes to tablist view and closes the tab.\nglobalThis.addEventListener('blur',()=>{isAccessible=true;handleOnLeave();});globalThis.addEventListener('focus',()=>{pageLeft=false;});// Catches the page being hidden, including scenarios like closing the tab.\ndocument.addEventListener('pagehide',()=>{isAccessible=document.visibilityState==='hidden';handleOnLeave();});// Catches visibility changes, such as switching tabs or minimizing the browser.\ndocument.addEventListener('visibilitychange',()=>{isAccessible=true;if(document.visibilityState==='hidden'){handleOnLeave();}else {pageLeft=false;}});};\n\nconst getFormattedTimestamp=date=>date.toISOString();/**\n * To get the current timestamp in ISO string format\n * @returns ISO formatted timestamp string\n */const getCurrentTimeFormatted=()=>getFormattedTimestamp(new Date());\n\nconst LOG_CONTEXT_SEPARATOR=':: ';const SCRIPT_ALREADY_EXISTS_ERROR=id=>`A script with the id \"${id}\" is already loaded. Skipping the loading of this script to prevent conflicts`;const SCRIPT_LOAD_ERROR=(id,url,ev)=>`Unable to load (${isString(ev)?ev:ev.type}) the script with the id \"${id}\" from URL \"${url}\"`;const SCRIPT_LOAD_TIMEOUT_ERROR=(id,url,timeout)=>`A timeout of ${timeout} ms occurred while trying to load the script with id \"${id}\" from URL \"${url}\"`;const CIRCULAR_REFERENCE_WARNING=(context,key)=>`${context}${LOG_CONTEXT_SEPARATOR}A circular reference has been detected in the object and the property \"${key}\" has been dropped from the output.`;const JSON_STRINGIFY_WARNING=`Failed to convert the value to a JSON string.`;const BAD_DATA_WARNING=(context,key)=>`${context}${LOG_CONTEXT_SEPARATOR}A bad data (like circular reference, BigInt) has been detected in the object and the property \"${key}\" has been dropped from the output.`;const COOKIE_DATA_ENCODING_ERROR=`Failed to encode the cookie data.`;const STORAGE_UNAVAILABILITY_ERROR_PREFIX=(context,storageType)=>`${context}${LOG_CONTEXT_SEPARATOR}The \"${storageType}\" storage type is `;\n\nconst JSON_STRINGIFY='JSONStringify';const JSON_UTIL='JSON';const BIG_INT_PLACEHOLDER='[BigInt]';const CIRCULAR_REFERENCE_PLACEHOLDER='[Circular Reference]';const getCircularReplacer=(excludeNull,excludeKeys,logger)=>{const ancestors=[];// Here we do not want to use arrow function to use \"this\" in function context\n// eslint-disable-next-line func-names\nreturn function(key,value){if(excludeKeys?.includes(key)){return undefined;}if(excludeNull&&isNullOrUndefined(value)){return undefined;}if(typeof value!=='object'||isNull(value)){return value;}// `this` is the object that value is contained in, i.e., its direct parent.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore-next-line\nwhile(ancestors.length>0&&ancestors[ancestors.length-1]!==this){ancestors.pop();}if(ancestors.includes(value)){logger?.warn(CIRCULAR_REFERENCE_WARNING(JSON_STRINGIFY,key));return CIRCULAR_REFERENCE_PLACEHOLDER;}ancestors.push(value);return value;};};/**\n * Utility method for JSON stringify object excluding null values & circular references\n *\n * @param {*} value input\n * @param {boolean} excludeNull if it should exclude nul or not\n * @param {function} logger optional logger methods for warning\n * @returns string\n */const stringifyWithoutCircular=(value,excludeNull,excludeKeys,logger)=>{try{return JSON.stringify(value,getCircularReplacer(excludeNull,excludeKeys,logger));}catch(err){logger?.warn(JSON_STRINGIFY_WARNING,err);return null;}};const getReplacer=logger=>{const ancestors=[];// Array to track ancestor objects\n// Using a regular function to use `this` for the parent context\nreturn function replacer(key,value){if(isBigInt(value)){logger?.warn(BAD_DATA_WARNING(JSON_UTIL,key));return BIG_INT_PLACEHOLDER;// Replace BigInt values\n}// `this` is the object that value is contained in, i.e., its direct parent.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore-next-line\nwhile(ancestors.length>0&&ancestors[ancestors.length-1]!==this){ancestors.pop();// Remove ancestors that are no longer part of the chain\n}// Check for circular references (if the value is already in the ancestors)\nif(ancestors.includes(value)){logger?.warn(BAD_DATA_WARNING(JSON_UTIL,key));return CIRCULAR_REFERENCE_PLACEHOLDER;}// Add current value to ancestors\nancestors.push(value);return value;};};const traverseWithThis=(obj,replacer)=>{// Create a new result object or array\nconst result=Array.isArray(obj)?[]:{};// Traverse object properties or array elements\n// eslint-disable-next-line no-restricted-syntax\nfor(const key in obj){if(Object.hasOwnProperty.call(obj,key)){const value=obj[key];// Recursively apply the replacer and traversal\nconst sanitizedValue=replacer.call(obj,key,value);// If the value is an object or array, continue traversal\nif(isObjectLiteralAndNotNull(sanitizedValue)||Array.isArray(sanitizedValue)){result[key]=traverseWithThis(sanitizedValue,replacer);}else {result[key]=sanitizedValue;}}}return result;};/**\n * Recursively traverses an object similar to JSON.stringify,\n * sanitizing BigInts and circular references\n * @param value Input object\n * @param logger Logger instance\n * @returns Sanitized value\n */const getSanitizedValue=(value,logger)=>{const replacer=getReplacer(logger);// This is needed for registering the first ancestor\nconst newValue=replacer.call(value,'',value);if(isObjectLiteralAndNotNull(value)||Array.isArray(value)){return traverseWithThis(value,replacer);}return newValue;};\n\nconst MANUAL_ERROR_IDENTIFIER='[SDK DISPATCHED ERROR]';const getStacktrace=err=>{const{stack}=err;if(typeof stack==='string'&&stack){return stack;}return undefined;};/**\n * Get mutated error with issue prepended to error message\n * @param err Original error\n * @param issue Issue to prepend to error message\n * @returns Instance of Error with message prepended with issue\n */const getMutatedError=(err,issue)=>{if(!isTypeOfError(err)){return new Error(`${issue}: ${stringifyWithoutCircular(err)}`);}try{// Preserve the specific error type (TypeError, ReferenceError, etc.)\nconst ErrorConstructor=err.constructor;const newError=new ErrorConstructor(`${issue}: ${err.message}`);// Preserve stack trace\nconst stack=getStacktrace(err);if(stack){newError.stack=stack;}// Preserve any other enumerable properties\nObject.getOwnPropertyNames(err).forEach(key=>{if(key!=='message'&&key!=='stack'&&key!=='name'){try{newError[key]=err[key];}catch{// Ignore if property is not writable\n}}});return newError;}catch{return new Error(`${issue}: ${stringifyWithoutCircular(err)}`);}};const dispatchErrorEvent=error=>{if(isTypeOfError(error)){const errStack=getStacktrace(error);if(errStack){// eslint-disable-next-line no-param-reassign\nerror.stack=`${errStack}\\n${MANUAL_ERROR_IDENTIFIER}`;}}globalThis.dispatchEvent(new ErrorEvent('error',{error,bubbles:true,cancelable:true,composed:true}));};\n\nconst APP_NAME='RudderLabs JavaScript SDK';const APP_VERSION='3.32.0';const APP_NAMESPACE='com.rudderlabs.javascript';const MODULE_TYPE='npm';const BUILD_VARIANT='modern';const ADBLOCK_PAGE_CATEGORY='RudderJS-Initiated';const ADBLOCK_PAGE_NAME='ad-block page request';const ADBLOCK_PAGE_PATH='/ad-blocked';const GLOBAL_PRELOAD_BUFFER='preloadedEventsBuffer';const CONSENT_TRACK_EVENT_NAME='Consent Management Interaction';\n\nconst QUERY_PARAM_TRAIT_PREFIX='ajs_trait_';const QUERY_PARAM_PROPERTY_PREFIX='ajs_prop_';const QUERY_PARAM_ANONYMOUS_ID_KEY='ajs_aid';const QUERY_PARAM_USER_ID_KEY='ajs_uid';const QUERY_PARAM_TRACK_EVENT_NAME_KEY='ajs_event';\n\nconst DEFAULT_XHR_TIMEOUT_MS=10*1000;// 10 seconds\nconst DEFAULT_COOKIE_MAX_AGE_MS=31536000*1000;// 1 year\nconst DEFAULT_SESSION_CUT_OFF_DURATION_MS=12*60*60*1000;// 12 hours\nconst DEFAULT_SESSION_TIMEOUT_MS=30*60*1000;// 30 minutes\nconst MIN_SESSION_TIMEOUT_MS=10*1000;// 10 seconds\nconst DEFAULT_DATA_PLANE_EVENTS_BUFFER_TIMEOUT_MS=10*1000;// 10 seconds\nconst DEBOUNCED_TIMEOUT_MS=250;// 250 milliseconds\n\n/**\n * Create globally accessible RudderStackGlobals object\n */const createExposedGlobals=(analyticsInstanceId='app')=>{if(!globalThis.RudderStackGlobals){globalThis.RudderStackGlobals={};}if(!globalThis.RudderStackGlobals[analyticsInstanceId]){globalThis.RudderStackGlobals[analyticsInstanceId]={};}};/**\n * Add move values to globally accessible RudderStackGlobals object per analytics instance\n */const setExposedGlobal=(keyName,value,analyticsInstanceId='app')=>{createExposedGlobals(analyticsInstanceId);globalThis.RudderStackGlobals[analyticsInstanceId][keyName]=value;};/**\n * Get values from globally accessible RudderStackGlobals object by analytics instance\n */const getExposedGlobal=(keyName,analyticsInstanceId='app')=>{createExposedGlobals(analyticsInstanceId);return globalThis.RudderStackGlobals[analyticsInstanceId][keyName];};function debounce(func,thisArg,delay=DEBOUNCED_TIMEOUT_MS){let timeoutId;return (...args)=>{globalThis.clearTimeout(timeoutId);timeoutId=globalThis.setTimeout(()=>{func.apply(thisArg,args);},delay);};}\n\n/**\n * Parse query string params into object values for keys that start with a defined prefix\n */const getEventDataFromQueryString=(params,dataTypeNamePrefix)=>{const data={};params.forEach((value,key)=>{if(key.startsWith(dataTypeNamePrefix)){// remove prefix from key name\nconst dataKey=key.substring(dataTypeNamePrefix.length);// add new key value pair in generated object\ndata[dataKey]=params.get(key);}});return data;};/**\n * Parse query string into preload buffer events & push into existing array before any other events\n */const retrieveEventsFromQueryString=(argumentsArray=[])=>{// Mapping for trait and properties values based on key prefix\nconst eventArgumentToQueryParamMap={trait:QUERY_PARAM_TRAIT_PREFIX,properties:QUERY_PARAM_PROPERTY_PREFIX};const queryObject=new URLSearchParams(globalThis.location.search);// Add track events with name and properties\nif(queryObject.get(QUERY_PARAM_TRACK_EVENT_NAME_KEY)){argumentsArray.unshift(['track',queryObject.get(QUERY_PARAM_TRACK_EVENT_NAME_KEY),getEventDataFromQueryString(queryObject,eventArgumentToQueryParamMap.properties)]);}// Send identify event\nconst userId=queryObject.get(QUERY_PARAM_USER_ID_KEY);const userTraits=getEventDataFromQueryString(queryObject,eventArgumentToQueryParamMap.trait);if(userId||isNonEmptyObject(userTraits)){// In identify API, user ID is optional\nconst identifyApiArgs=[...(userId?[userId]:[]),userTraits];argumentsArray.unshift(['identify',...identifyApiArgs]);}// Set anonymousID\nif(queryObject.get(QUERY_PARAM_ANONYMOUS_ID_KEY)){argumentsArray.unshift(['setAnonymousId',queryObject.get(QUERY_PARAM_ANONYMOUS_ID_KEY)]);}};/**\n * Retrieve an existing buffered load method call and remove from the existing array\n */const getPreloadedLoadEvent=preloadedEventsArray=>{const loadMethodName='load';let loadEvent=[];/**\n   * Iterate the buffered API calls until we find load call and process it separately\n   */let i=0;while(i<preloadedEventsArray.length){if(preloadedEventsArray[i]&&preloadedEventsArray[i][0]===loadMethodName){loadEvent=clone(preloadedEventsArray[i]);preloadedEventsArray.splice(i,1);break;}i+=1;}return loadEvent;};/**\n * Promote consent events to the top of the preloaded events array\n * @param preloadedEventsArray Preloaded events array\n * @returns None\n */const promotePreloadedConsentEventsToTop=preloadedEventsArray=>{const consentMethodName='consent';const consentEvents=preloadedEventsArray.filter(bufferedEvent=>bufferedEvent[0]===consentMethodName);const nonConsentEvents=preloadedEventsArray.filter(bufferedEvent=>bufferedEvent[0]!==consentMethodName);// Remove all elements and add consent events first followed by non consent events\n// eslint-disable-next-line unicorn/no-useless-spread\npreloadedEventsArray.splice(0,preloadedEventsArray.length,...consentEvents,...nonConsentEvents);};/**\n * Retrieve any existing events that were triggered before SDK load and enqueue in buffer\n */const retrievePreloadBufferEvents=instance=>{const preloadedEventsArray=getExposedGlobal(GLOBAL_PRELOAD_BUFFER)||[];// Get events that are pre-populated via query string params\nretrieveEventsFromQueryString(preloadedEventsArray);// Enqueue the non load events in the buffer of the global rudder analytics singleton\nif(preloadedEventsArray.length>0){instance.enqueuePreloadBufferEvents(preloadedEventsArray);setExposedGlobal(GLOBAL_PRELOAD_BUFFER,[]);}};const consumePreloadBufferedEvent=(event,analyticsInstance)=>{const methodName=event.shift();let callOptions;if(isFunction(analyticsInstance[methodName])){switch(methodName){case 'page':callOptions=pageArgumentsToCallOptions(...event);break;case 'track':callOptions=trackArgumentsToCallOptions(...event);break;case 'identify':callOptions=identifyArgumentsToCallOptions(...event);break;case 'alias':callOptions=aliasArgumentsToCallOptions(...event);break;case 'group':callOptions=groupArgumentsToCallOptions(...event);break;default:analyticsInstance[methodName](...event);break;}if(callOptions){analyticsInstance[methodName](callOptions);}}};\n\nconst DEFAULT_EXT_SRC_LOAD_TIMEOUT_MS=10*1000;// 10 seconds\n\nconst EXTERNAL_SOURCE_LOAD_ORIGIN='RS_JS_SDK';\n\n/**\n * Create the DOM element to load a script marked as RS SDK originated\n *\n * @param {*} url The URL of the script to be loaded\n * @param {*} id ID for the script tag\n * @param {*} async Whether to load the script in async mode. Defaults to `true` [optional]\n * @param {*} onload callback to invoke onload [optional]\n * @param {*} onerror callback to invoke onerror [optional]\n * @param {*} extraAttributes key/value pair with html attributes to add in html tag [optional]\n *\n * @returns HTMLScriptElement\n */const createScriptElement=(url,id,async=true,onload=null,onerror=null,extraAttributes={})=>{const scriptElement=document.createElement('script');scriptElement.type='text/javascript';scriptElement.onload=onload;scriptElement.onerror=onerror;scriptElement.src=url;scriptElement.id=id;scriptElement.async=async;Object.keys(extraAttributes).forEach(attributeName=>{scriptElement.setAttribute(attributeName,extraAttributes[attributeName]);});scriptElement.setAttribute('data-loader',EXTERNAL_SOURCE_LOAD_ORIGIN);return scriptElement;};/**\n * Add script DOM element to DOM\n *\n * @param {*} newScriptElement the script element to add\n *\n * @returns\n */const insertScript=newScriptElement=>{// First try to add it to the head\nconst headElements=document.getElementsByTagName('head');if(headElements.length>0){headElements[0]?.insertBefore(newScriptElement,headElements[0]?.firstChild);return;}// Else wise add it before the first script tag\nconst scriptElements=document.getElementsByTagName('script');if(scriptElements.length>0&&scriptElements[0]?.parentNode){scriptElements[0]?.parentNode.insertBefore(newScriptElement,scriptElements[0]);return;}// Create a new head element and add the script as fallback\nconst headElement=document.createElement('head');headElement.appendChild(newScriptElement);const htmlElement=document.getElementsByTagName('html')[0];htmlElement?.insertBefore(headElement,htmlElement.firstChild);};/**\n * Loads external js file as a script html tag\n *\n * @param {*} url The URL of the script to be loaded\n * @param {*} id ID for the script tag\n * @param {*} timeout loading timeout\n * @param {*} async Whether to load the script in async mode. Defaults to `true` [optional]\n * @param {*} extraAttributes key/value pair with html attributes to add in html tag [optional]\n *\n * @returns\n */const jsFileLoader=(url,id,timeout,async=true,extraAttributes)=>new Promise((resolve,reject)=>{const scriptExists=document.getElementById(id);if(scriptExists){reject(new Error(SCRIPT_ALREADY_EXISTS_ERROR(id)));}try{let timeoutID;const onload=()=>{globalThis.clearTimeout(timeoutID);resolve(id);};const onerror=ev=>{globalThis.clearTimeout(timeoutID);reject(new Error(SCRIPT_LOAD_ERROR(id,url,ev)));};// Create the DOM element to load the script and add it to the DOM\ninsertScript(createScriptElement(url,id,async,onload,onerror,extraAttributes));// Reject on timeout\ntimeoutID=globalThis.setTimeout(()=>{reject(new Error(SCRIPT_LOAD_TIMEOUT_ERROR(id,url,timeout)));},timeout);}catch(err){reject(getMutatedError(err,SCRIPT_LOAD_ERROR(id,url,'unknown')));}});\n\n/**\n * Service to load external resources/files\n */class ExternalSrcLoader{constructor(logger,timeout=DEFAULT_EXT_SRC_LOAD_TIMEOUT_MS){this.logger=logger;this.timeout=timeout;}/**\n   * Load external resource of type javascript\n   */loadJSFile(config){const{url,id,timeout,async,callback,extraAttributes}=config;const isFireAndForget=!isFunction(callback);jsFileLoader(url,id,timeout||this.timeout,async,extraAttributes).then(id=>{if(!isFireAndForget){callback(id);}}).catch(err=>{if(!isFireAndForget){callback(id,err);}});}}\n\nvar i=Symbol.for(\"preact-signals\");function t(){if(!(v>1)){var i,t=false;!function(){var i=c;c=void 0;while(void 0!==i){var t=i.S;if(t.v===i.v)for(var n=t.t;void 0!==n;n=n.x)if(n.i===i.i)n.i=t.i;i=i.o;}}();while(void 0!==h){var n=h;h=void 0;s++;while(void 0!==n){var r=n.u;n.u=void 0;n.f&=-3;if(!(8&n.f)&&w(n))try{n.c();}catch(n){if(!t){i=n;t=true;}}n=r;}}s=0;v--;if(t)throw i;}else v--;}function n(i){if(v>0)return i();e=++u;v++;try{return i();}finally{t();}}var r,o=void 0;function f(i){var t=o,n=r;o=void 0;r=void 0;try{return i();}finally{o=t;r=n;}}var h=void 0,v=0,s=0,u=0,e=0,c=void 0,d=0;function a(i){if(void 0!==o){var t=i.n;if(void 0===t||t.t!==o){t={i:0,S:i,p:o.s,n:void 0,t:o,e:void 0,x:void 0,r:t};if(void 0!==o.s)o.s.n=t;o.s=t;i.n=t;if(32&o.f)i.S(t);return t;}else if(-1===t.i){t.i=0;if(void 0!==t.n){t.n.p=t.p;if(void 0!==t.p)t.p.n=t.n;t.p=o.s;t.n=void 0;o.s.n=t;o.s=t;}return t;}}}function l(i,t){this.v=i;this.i=0;this.n=void 0;this.t=void 0;this.l=0;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name;}l.prototype.brand=i;l.prototype.h=function(){return  true;};l.prototype.S=function(i){var t=this,n=this.t;if(n!==i&&void 0===i.e){i.x=n;this.t=i;if(void 0!==n)n.e=i;else f(function(){var i;null==(i=t.W)||i.call(t);});}};l.prototype.U=function(i){var t=this;if(void 0!==this.t){var n=i.e,r=i.x;if(void 0!==n){n.x=r;i.e=void 0;}if(void 0!==r){r.e=n;i.x=void 0;}if(i===this.t){this.t=r;if(void 0===r)f(function(){var i;null==(i=t.Z)||i.call(t);});}}};l.prototype.subscribe=function(i){var t=this;return j(function(){var n=t.value;f(function(){return i(n);});},{name:\"sub\"});};l.prototype.valueOf=function(){return this.value;};l.prototype.toString=function(){return this.value+\"\";};l.prototype.toJSON=function(){return this.value;};l.prototype.peek=function(){var i=this;return f(function(){return i.value;});};Object.defineProperty(l.prototype,\"value\",{get:function(){var i=a(this);if(void 0!==i)i.i=this.i;return this.v;},set:function(i){if(i!==this.v){if(s>100)throw new Error(\"Cycle detected\");!function(i){if(0!==v&&0===s)if(i.l!==e){i.l=e;c={S:i,v:i.v,i:i.i,o:c};}}(this);this.v=i;this.i++;d++;v++;try{for(var n=this.t;void 0!==n;n=n.x)n.t.N();}finally{t();}}}});function y(i,t){return new l(i,t);}function w(i){for(var t=i.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return  true;return  false;}function _(i){for(var t=i.s;void 0!==t;t=t.n){var n=t.S.n;if(void 0!==n)t.r=n;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break;}}}function b(i){var t=i.s,n=void 0;while(void 0!==t){var r=t.p;if(-1===t.i){t.S.U(t);if(void 0!==r)r.n=t.n;if(void 0!==t.n)t.n.p=r;}else n=t;t.S.n=t.r;if(void 0!==t.r)t.r=void 0;t=r;}i.s=n;}function p(i,t){l.call(this,void 0,t);this.x=i;this.s=void 0;this.g=d-1;this.f=4;}p.prototype=new l();p.prototype.h=function(){this.f&=-3;if(1&this.f)return  false;if(32==(36&this.f))return  true;this.f&=-5;if(this.g===d)return  true;this.g=d;this.f|=1;if(this.i>0&&!w(this)){this.f&=-2;return  true;}var i=o;try{_(this);o=this;var t=this.x();if(16&this.f||this.v!==t||0===this.i){this.v=t;this.f&=-17;this.i++;}}catch(i){this.v=i;this.f|=16;this.i++;}o=i;b(this);this.f&=-2;return  true;};p.prototype.S=function(i){if(void 0===this.t){this.f|=36;for(var t=this.s;void 0!==t;t=t.n)t.S.S(t);}l.prototype.S.call(this,i);};p.prototype.U=function(i){if(void 0!==this.t){l.prototype.U.call(this,i);if(void 0===this.t){this.f&=-33;for(var t=this.s;void 0!==t;t=t.n)t.S.U(t);}}};p.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var i=this.t;void 0!==i;i=i.x)i.t.N();}};Object.defineProperty(p.prototype,\"value\",{get:function(){if(1&this.f)throw new Error(\"Cycle detected\");var i=a(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v;}});function S(i){var n=i.m;i.m=void 0;if(\"function\"==typeof n){v++;var r=o;o=void 0;try{n();}catch(t){i.f&=-2;i.f|=8;m(i);throw t;}finally{o=r;t();}}}function m(i){for(var t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;S(i);}function x(i){if(o!==this)throw new Error(\"Out-of-order effect\");b(this);o=i;this.f&=-2;if(8&this.f)m(this);t();}function E(i,t){this.x=i;this.m=void 0;this.s=void 0;this.u=void 0;this.f=32;this.name=null==t?void 0:t.name;if(r)r.push(this);}E.prototype.c=function(){var i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var t=this.x();if(\"function\"==typeof t)this.m=t;}finally{i();}};E.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;S(this);_(this);v++;var i=o;o=this;return x.bind(this,i);};E.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.u=h;h=this;}};E.prototype.d=function(){this.f|=8;if(!(1&this.f))m(this);};E.prototype.dispose=function(){this.d();};function j(i,t){var n=new E(i,t);try{n.c();}catch(i){n.d();throw i;}var r=n.d.bind(n);r[Symbol.dispose]=r;return r;}\n\n/**\n * A buffer queue to serve as a store for any type of data\n */class BufferQueue{constructor(){this.items=[];}enqueue(item){this.items.push(item);}dequeue(){if(this.items.length===0){return null;}return this.items.shift();}isEmpty(){return this.items.length===0;}size(){return this.items.length;}clear(){this.items=[];}}\n\nconst LOG_LEVEL_MAP={LOG:0,INFO:1,DEBUG:2,WARN:3,ERROR:4,NONE:5};const DEFAULT_LOG_LEVEL='LOG';const POST_LOAD_LOG_LEVEL='ERROR';const LOG_MSG_PREFIX='RS SDK';const LOG_MSG_PREFIX_STYLE='font-weight: bold; background: black; color: white;';const LOG_MSG_STYLE='font-weight: normal;';/**\n * Service to log messages/data to output provider, default is console\n */class Logger{constructor(minLogLevel=DEFAULT_LOG_LEVEL,scope='',logProvider=console){this.minLogLevel=LOG_LEVEL_MAP[minLogLevel];this.scope=scope;this.logProvider=logProvider;}log(...data){this.outputLog('LOG',data);}info(...data){this.outputLog('INFO',data);}debug(...data){this.outputLog('DEBUG',data);}warn(...data){this.outputLog('WARN',data);}error(...data){this.outputLog('ERROR',data);}outputLog(logMethod,data){if(this.minLogLevel<=LOG_LEVEL_MAP[logMethod]){this.logProvider[logMethod.toLowerCase()]?.(...this.formatLogData(data));}}setScope(scopeVal){this.scope=scopeVal||this.scope;}// TODO: should we allow to change the level via global variable on run time\n//  to assist on the fly debugging?\nsetMinLogLevel(logLevel){this.minLogLevel=LOG_LEVEL_MAP[logLevel];if(isUndefined(this.minLogLevel)){this.minLogLevel=LOG_LEVEL_MAP[DEFAULT_LOG_LEVEL];}}/**\n   * Formats the console message using `scope` and styles\n   */formatLogData(data){if(Array.isArray(data)&&data.length>0){// prefix SDK identifier\nlet msg=`%c ${LOG_MSG_PREFIX}`;// format the log message using `scope`\nif(this.scope){msg=`${msg} - ${this.scope}`;}// trim whitespaces for original message\nconst originalMsg=isString(data[0])?data[0].trim():'';// prepare the final message\nmsg=`${msg} %c ${originalMsg}`;const styledLogArgs=[msg,LOG_MSG_PREFIX_STYLE,// add style for the prefix\nLOG_MSG_STYLE// reset the style for the actual message\n];// add first it if it was not a string msg\nif(!isString(data[0])){styledLogArgs.push(data[0]);}// append rest of the original arguments\nstyledLogArgs.push(...data.slice(1));return styledLogArgs;}return data;}}const defaultLogger=new Logger();\n\nlet ErrorType=/*#__PURE__*/function(ErrorType){ErrorType[\"HANDLEDEXCEPTION\"]=\"handledException\";ErrorType[\"UNHANDLEDEXCEPTION\"]=\"unhandledException\";ErrorType[\"UNHANDLEDREJECTION\"]=\"unhandledPromiseRejection\";return ErrorType;}({});\n\n// default is v3\nconst SUPPORTED_STORAGE_TYPES=['localStorage','memoryStorage','cookieStorage','sessionStorage','none'];const DEFAULT_STORAGE_TYPE='cookieStorage';\n\nconst SOURCE_CONFIG_RESOLUTION_ERROR=`Unable to process/parse source configuration response`;const SOURCE_DISABLED_ERROR=`The source is disabled. Please enable the source in the dashboard to send events.`;const XHR_PAYLOAD_PREP_ERROR=`Failed to prepare data for the request.`;const PLUGIN_EXT_POINT_MISSING_ERROR=`Failed to invoke plugin because the extension point name is missing.`;const PLUGIN_EXT_POINT_INVALID_ERROR=`Failed to invoke plugin because the extension point name is invalid.`;const SOURCE_CONFIG_OPTION_ERROR=context=>`${context}${LOG_CONTEXT_SEPARATOR}The \"getSourceConfig\" load API option must be a function that returns valid source configuration data.`;const COMPONENT_BASE_URL_ERROR=(context,component,url)=>`${context}${LOG_CONTEXT_SEPARATOR}The base URL \"${url}\" for ${component} is not valid.`;// ERROR\nconst UNSUPPORTED_CONSENT_MANAGER_ERROR=(context,selectedConsentManager,consentManagersToPluginNameMap)=>`${context}${LOG_CONTEXT_SEPARATOR}The consent manager \"${selectedConsentManager}\" is not supported. Please choose one of the following supported consent managers: \"${Object.keys(consentManagersToPluginNameMap)}\".`;const NON_ERROR_WARNING=(context,errStr)=>`${context}${LOG_CONTEXT_SEPARATOR}Ignoring a non-error: ${errStr}.`;const BREADCRUMB_ERROR=`Failed to log breadcrumb`;const HANDLE_ERROR_FAILURE=context=>`${context}${LOG_CONTEXT_SEPARATOR}Failed to handle the error.`;const PLUGIN_NAME_MISSING_ERROR=context=>`${context}${LOG_CONTEXT_SEPARATOR}Plugin name is missing.`;const PLUGIN_ALREADY_EXISTS_ERROR=(context,pluginName)=>`${context}${LOG_CONTEXT_SEPARATOR}Plugin \"${pluginName}\" already exists.`;const PLUGIN_NOT_FOUND_ERROR=(context,pluginName)=>`${context}${LOG_CONTEXT_SEPARATOR}Plugin \"${pluginName}\" not found.`;const PLUGIN_ENGINE_BUG_ERROR=(context,pluginName)=>`${context}${LOG_CONTEXT_SEPARATOR}Plugin \"${pluginName}\" not found in plugins but found in byName. This indicates a bug in the plugin engine. Please report this issue to the development team.`;const PLUGIN_DEPS_ERROR=(context,pluginName,notExistDeps)=>`${context}${LOG_CONTEXT_SEPARATOR}Plugin \"${pluginName}\" could not be loaded because some of its dependencies \"${notExistDeps}\" do not exist.`;const PLUGIN_INVOCATION_ERROR=(context,extPoint,pluginName)=>`${context}${LOG_CONTEXT_SEPARATOR}Failed to invoke the \"${extPoint}\" extension point of plugin \"${pluginName}\".`;const SOURCE_CONFIG_FETCH_ERROR='Failed to fetch the source config';const WRITE_KEY_VALIDATION_ERROR=(context,writeKey)=>`${context}${LOG_CONTEXT_SEPARATOR}The write key \"${writeKey}\" is invalid. It must be a non-empty string. Please check that the write key is correct and try again.`;const DATA_PLANE_URL_VALIDATION_ERROR=(context,dataPlaneUrl)=>`${context}${LOG_CONTEXT_SEPARATOR}The data plane URL \"${dataPlaneUrl}\" is invalid. It must be a valid URL string. Please check that the data plane URL is correct and try again.`;const INVALID_CALLBACK_FN_ERROR=context=>`${context}${LOG_CONTEXT_SEPARATOR}The provided callback parameter is not a function.`;const XHR_DELIVERY_ERROR=(prefix,status,statusText,url,response)=>`${prefix} with status ${status} (${statusText}) for URL: ${url}. Response: ${response.trim()}`;const XHR_REQUEST_ERROR=(prefix,e,url)=>`${prefix} due to timeout or no connection (${e?e.type:''}) at the client side for URL: ${url}`;const XHR_SEND_ERROR=(prefix,url)=>`${prefix} for URL: ${url}`;const STORE_DATA_SAVE_ERROR=key=>`Failed to save the value for \"${key}\" to storage`;const STORE_DATA_FETCH_ERROR=key=>`Failed to retrieve or parse data for \"${key}\" from storage`;const DATA_SERVER_REQUEST_FAIL_ERROR=status=>`The server responded with status ${status} while setting the cookies. As a fallback, the cookies will be set client side.`;const FAILED_SETTING_COOKIE_FROM_SERVER_ERROR=key=>`The server failed to set the ${key} cookie. As a fallback, the cookies will be set client side.`;const FAILED_SETTING_COOKIE_FROM_SERVER_GLOBAL_ERROR=`Failed to set/remove cookies via server. As a fallback, the cookies will be managed client side.`;// WARNING\nconst STORAGE_TYPE_VALIDATION_WARNING=(context,storageType,defaultStorageType)=>`${context}${LOG_CONTEXT_SEPARATOR}The storage type \"${storageType}\" is not supported. Please choose one of the following supported types: \"${SUPPORTED_STORAGE_TYPES}\". The default type \"${defaultStorageType}\" will be used instead.`;const UNSUPPORTED_STORAGE_ENCRYPTION_VERSION_WARNING=(context,selectedStorageEncryptionVersion,storageEncryptionVersionsToPluginNameMap,defaultVersion)=>`${context}${LOG_CONTEXT_SEPARATOR}The storage encryption version \"${selectedStorageEncryptionVersion}\" is not supported. Please choose one of the following supported versions: \"${Object.keys(storageEncryptionVersionsToPluginNameMap)}\". The default version \"${defaultVersion}\" will be used instead.`;const STORAGE_DATA_MIGRATION_OVERRIDE_WARNING=(context,storageEncryptionVersion,defaultVersion)=>`${context}${LOG_CONTEXT_SEPARATOR}The storage data migration has been disabled because the configured storage encryption version (${storageEncryptionVersion}) is not the latest (${defaultVersion}). To enable storage data migration, please update the storage encryption version to the latest version.`;const SERVER_SIDE_COOKIE_FEATURE_OVERRIDE_WARNING=(context,providedCookieDomain,currentCookieDomain)=>`${context}${LOG_CONTEXT_SEPARATOR}The provided cookie domain (${providedCookieDomain}) does not match the current webpage's domain (${currentCookieDomain}). Hence, the cookies will be set client-side.`;const RESERVED_KEYWORD_WARNING=(context,property,parentKeyPath,reservedElements)=>`${context}${LOG_CONTEXT_SEPARATOR}The \"${property}\" property defined under \"${parentKeyPath}\" is a reserved keyword. Please choose a different property name to avoid conflicts with reserved keywords (${reservedElements}).`;const RESERVED_CUSTOM_CONTEXT_KEY_WARNING=(logContext,property)=>`${logContext}${LOG_CONTEXT_SEPARATOR}The top-level custom context property \"${property}\" is reserved and was ignored.`;const INVALID_CONTEXT_OBJECT_WARNING=logContext=>`${logContext}${LOG_CONTEXT_SEPARATOR}Please make sure that the \"context\" property in the event API's \"options\" argument is a valid object literal with key-value pairs.`;const INVALID_CUSTOM_CONTEXT_WARNING=logContext=>`${logContext}${LOG_CONTEXT_SEPARATOR}Invalid custom context. Use a plain object without prototype pollution keys.`;const UNSUPPORTED_BEACON_API_WARNING=context=>`${context}${LOG_CONTEXT_SEPARATOR}The Beacon API is not supported by your browser. The events will be sent using XHR instead.`;const TIMEOUT_NOT_NUMBER_WARNING=(context,timeout,defaultValue)=>`${context}${LOG_CONTEXT_SEPARATOR}The session timeout value \"${timeout}\" is not a number. The default timeout of ${defaultValue} ms will be used instead.`;const CUT_OFF_DURATION_NOT_NUMBER_WARNING=(context,cutOffDuration,defaultValue)=>`${context}${LOG_CONTEXT_SEPARATOR}The session cut off duration value \"${cutOffDuration}\" is not a number. The default cut off duration of ${defaultValue} ms will be used instead.`;const CUT_OFF_DURATION_LESS_THAN_TIMEOUT_WARNING=(context,cutOffDuration,timeout)=>`${context}${LOG_CONTEXT_SEPARATOR}The session cut off duration value \"${cutOffDuration}\" ms is less than the session timeout value \"${timeout}\" ms. The cut off functionality will be disabled.`;const TIMEOUT_ZERO_WARNING=context=>`${context}${LOG_CONTEXT_SEPARATOR}The session timeout value is 0, which disables the automatic session tracking feature. If you want to enable session tracking, please provide a positive integer value for the timeout.`;const TIMEOUT_NOT_RECOMMENDED_WARNING=(context,timeout,minTimeout)=>`${context}${LOG_CONTEXT_SEPARATOR}The session timeout value ${timeout} ms is less than the recommended minimum of ${minTimeout} ms. Please consider increasing the timeout value to ensure optimal performance and reliability.`;const INVALID_SESSION_ID_WARNING=(context,sessionId,minSessionIdLength)=>`${context}${LOG_CONTEXT_SEPARATOR}The provided session ID (${sessionId}) is either invalid, not a positive integer, or not at least \"${minSessionIdLength}\" digits long. A new session ID will be auto-generated instead.`;const STORAGE_QUOTA_EXCEEDED_WARNING=context=>`${context}${LOG_CONTEXT_SEPARATOR}The storage is either full or unavailable, so the data will not be persisted. Switching to in-memory storage.`;const STORAGE_UNAVAILABLE_WARNING=(context,entry,selectedStorageType,finalStorageType)=>`${context}${LOG_CONTEXT_SEPARATOR}The storage type \"${selectedStorageType}\" is not available for entry \"${entry}\". The SDK will initialize the entry with \"${finalStorageType}\" storage type instead.`;const CALLBACK_INVOKE_ERROR=context=>`${context}${LOG_CONTEXT_SEPARATOR}The callback threw an exception`;const INVALID_CONFIG_URL_WARNING=(context,configUrl)=>`${context}${LOG_CONTEXT_SEPARATOR}The provided source config URL \"${configUrl}\" is invalid. Using the default source config URL instead.`;const POLYFILL_SCRIPT_LOAD_ERROR=(scriptId,url)=>`Failed to load the polyfill script with ID \"${scriptId}\" from URL ${url}.`;const UNSUPPORTED_PRE_CONSENT_STORAGE_STRATEGY=(context,selectedStrategy,defaultStrategy)=>`${context}${LOG_CONTEXT_SEPARATOR}The pre-consent storage strategy \"${selectedStrategy}\" is not supported. Please choose one of the following supported strategies: \"none, session, anonymousId\". The default strategy \"${defaultStrategy}\" will be used instead.`;const UNSUPPORTED_PRE_CONSENT_EVENTS_DELIVERY_TYPE=(context,selectedDeliveryType,defaultDeliveryType)=>`${context}${LOG_CONTEXT_SEPARATOR}The pre-consent events delivery type \"${selectedDeliveryType}\" is not supported. Please choose one of the following supported types: \"immediate, buffer\". The default type \"${defaultDeliveryType}\" will be used instead.`;const DEPRECATED_PLUGIN_WARNING=(context,pluginName)=>`${context}${LOG_CONTEXT_SEPARATOR}${pluginName} plugin is deprecated. Please exclude it from the load API options.`;const generateMisconfiguredPluginsWarning=(context,configurationStatus,missingPlugins,shouldAddMissingPlugins)=>{const isSinglePlugin=missingPlugins.length===1;const pluginsString=isSinglePlugin?` '${missingPlugins[0]}' plugin was`:` ['${missingPlugins.join(\"', '\")}'] plugins were`;const baseWarning=`${context}${LOG_CONTEXT_SEPARATOR}${configurationStatus}, but${pluginsString} not configured to load.`;if(shouldAddMissingPlugins){return `${baseWarning} So, ${isSinglePlugin?'the plugin':'those plugins'} will be loaded automatically.`;}return `${baseWarning} Ignore if this was intentional. Otherwise, consider adding ${isSinglePlugin?'it':'them'} to the 'plugins' load API option.`;};const INVALID_POLYFILL_URL_WARNING=(context,customPolyfillUrl)=>`${context}${LOG_CONTEXT_SEPARATOR}The provided polyfill URL \"${customPolyfillUrl}\" is invalid. The default polyfill URL will be used instead.`;const PAGE_UNLOAD_ON_BEACON_DISABLED_WARNING=context=>`${context}${LOG_CONTEXT_SEPARATOR}Page Unloaded event can only be tracked when the Beacon transport is active. Please enable \"useBeacon\" load API option.`;const UNKNOWN_PLUGINS_WARNING=(context,unknownPlugins)=>`${context}${LOG_CONTEXT_SEPARATOR}Ignoring unknown plugins: ${unknownPlugins.join(', ')}.`;const UNAVAILABLE_PLUGINS_ERROR=(context,unavailablePlugins)=>`${context}${LOG_CONTEXT_SEPARATOR}Failed to load the following unavailable local plugins: ${unavailablePlugins.join(', ')}. Some features of the SDK may not work as expected. Make sure you are using the correct SDK bundle variant.`;const CUSTOM_INTEGRATION_CANNOT_BE_ADDED_ERROR=(context,destinationId)=>`${context}${LOG_CONTEXT_SEPARATOR}Cannot add custom integration for destination ID \"${destinationId}\" after the SDK is loaded.`;\n\nconst DEFAULT_INTEGRATIONS_CONFIG={All:true};\n\nconst CDN_INT_DIR='js-integrations';const CDN_PLUGINS_DIR='plugins';const URL_PATTERN=new RegExp('^(https?:\\\\/\\\\/)'+// protocol\n'('+'((([a-zA-Z\\\\d]([a-zA-Z\\\\d-]*[a-zA-Z\\\\d])*)\\\\.)+[a-zA-Z]{2,}|'+// domain name\n'localhost|'+// localhost\n'((25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9]?)\\\\.){3}'+// OR IP (v4) address first 3 octets\n'(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9]?))'+// last octet of IP address\n')'+'(\\\\:\\\\d+)?'+// port\n'(\\\\/[-a-zA-Z\\\\d%_.~+]*)*'+// path\n'(\\\\?[;&a-zA-Z\\\\d%_.~+=-]*)?'+// query string\n'(\\\\#[-a-zA-Z\\\\d_]*)?$')// fragment locator\n;\n\nconst BUILD_TYPE='modern';const SDK_CDN_BASE_URL='https://cdn.rudderlabs.com';const CDN_ARCH_VERSION_DIR='v3';const DEFAULT_INTEGRATION_SDKS_URL=`${SDK_CDN_BASE_URL}/${CDN_ARCH_VERSION_DIR}/${BUILD_TYPE}/${CDN_INT_DIR}`;const DEFAULT_PLUGINS_URL=`${SDK_CDN_BASE_URL}/${CDN_ARCH_VERSION_DIR}/${BUILD_TYPE}/${CDN_PLUGINS_DIR}`;const DEFAULT_CONFIG_BE_URL='https://api.rudderstack.com';\n\nconst DEFAULT_STORAGE_ENCRYPTION_VERSION='v3';const DEFAULT_DATA_PLANE_EVENTS_TRANSPORT='xhr';const ConsentManagersToPluginNameMap={iubenda:'IubendaConsentManager',oneTrust:'OneTrustConsentManager',ketch:'KetchConsentManager',custom:'CustomConsentManager'};const StorageEncryptionVersionsToPluginNameMap={[DEFAULT_STORAGE_ENCRYPTION_VERSION]:'StorageEncryption',legacy:'StorageEncryptionLegacy'};const DataPlaneEventsTransportToPluginNameMap={[DEFAULT_DATA_PLANE_EVENTS_TRANSPORT]:'XhrQueue',beacon:'BeaconQueue'};const DEFAULT_DATA_SERVICE_ENDPOINT='rsaRequest';const METRICS_SERVICE_ENDPOINT='rsaMetrics';const CUSTOM_DEVICE_MODE_DESTINATION_DISPLAY_NAME='Custom Device Mode';\n\nconst defaultLoadOptions={configUrl:DEFAULT_CONFIG_BE_URL,loadIntegration:true,sessions:{autoTrack:true,timeout:DEFAULT_SESSION_TIMEOUT_MS,cutOff:{enabled:false}},sameSiteCookie:'Lax',polyfillIfRequired:true,integrations:DEFAULT_INTEGRATIONS_CONFIG,useBeacon:false,beaconQueueOptions:{},destinationsQueueOptions:{},queueOptions:{},lockIntegrationsVersion:true,lockPluginsVersion:true,uaChTrackLevel:'none',plugins:[],useGlobalIntegrationsConfigInEvents:false,bufferDataPlaneEventsUntilReady:false,dataPlaneEventsBufferTimeout:DEFAULT_DATA_PLANE_EVENTS_BUFFER_TIMEOUT_MS,storage:{encryption:{version:DEFAULT_STORAGE_ENCRYPTION_VERSION},migrate:true,cookie:{}},sendAdblockPage:false,sameDomainCookiesOnly:false,secureCookie:false,sendAdblockPageOptions:{},useServerSideCookies:false};const loadOptionsState=y(clone(defaultLoadOptions));\n\nconst DEFAULT_USER_SESSION_VALUES=deepFreeze({userId:'',userTraits:{},anonymousId:'',groupId:'',groupTraits:{},initialReferrer:'',initialReferringDomain:'',sessionInfo:{},authToken:null});const DEFAULT_RESET_OPTIONS=deepFreeze({entries:{userId:true,userTraits:true,groupId:true,groupTraits:true,sessionInfo:true,authToken:true,// These are not reset by default\nanonymousId:false,initialReferrer:false,initialReferringDomain:false}});const SERVER_SIDE_COOKIES_DEBOUNCE_TIME=10;// milliseconds\n\nconst sessionState={userId:y(DEFAULT_USER_SESSION_VALUES.userId),userTraits:y(DEFAULT_USER_SESSION_VALUES.userTraits),anonymousId:y(DEFAULT_USER_SESSION_VALUES.anonymousId),groupId:y(DEFAULT_USER_SESSION_VALUES.groupId),groupTraits:y(DEFAULT_USER_SESSION_VALUES.groupTraits),initialReferrer:y(DEFAULT_USER_SESSION_VALUES.initialReferrer),initialReferringDomain:y(DEFAULT_USER_SESSION_VALUES.initialReferringDomain),sessionInfo:y(DEFAULT_USER_SESSION_VALUES.sessionInfo),authToken:y(DEFAULT_USER_SESSION_VALUES.authToken)};\n\nconst capabilitiesState={isOnline:y(true),storage:{isLocalStorageAvailable:y(false),isCookieStorageAvailable:y(false),isSessionStorageAvailable:y(false)},isBeaconAvailable:y(false),isLegacyDOM:y(false),isUaCHAvailable:y(false),isCryptoAvailable:y(false),isAdBlockerDetectionInProgress:y(false),isAdBlocked:y(undefined),cspBlockedURLs:y([])};\n\nconst reportingState={isErrorReportingEnabled:y(false),isMetricsReportingEnabled:y(false),breadcrumbs:y([])};\n\nconst sourceConfigState=y(undefined);\n\nconst lifecycleState={activeDataplaneUrl:y(undefined),integrationsCDNPath:y(DEFAULT_INTEGRATION_SDKS_URL),pluginsCDNPath:y(DEFAULT_PLUGINS_URL),sourceConfigUrl:y(undefined),status:y(undefined),initialized:y(false),logLevel:y(POST_LOAD_LOG_LEVEL),loaded:y(false),readyCallbacks:y([]),writeKey:y(undefined),dataPlaneUrl:y(undefined),safeAnalyticsInstance:y(undefined)};\n\nconst consentsState={enabled:y(false),initialized:y(false),data:y({}),activeConsentManagerPluginName:y(undefined),preConsent:y({enabled:false}),postConsent:y({}),resolutionStrategy:y('and'),provider:y(undefined),metadata:y(undefined)};\n\nconst metricsState={retries:y(0),dropped:y(0),sent:y(0),queued:y(0),triggered:y(0),metricsServiceUrl:y(undefined)};\n\nconst getVariantValue=()=>{// For CDN builds, use runtime window.rudderAnalyticsBuildType\nreturn BUILD_VARIANT;};const contextState={app:y({name:APP_NAME,namespace:APP_NAMESPACE,version:APP_VERSION,installType:MODULE_TYPE}),traits:y(null),library:y({name:APP_NAME,version:APP_VERSION,snippetVersion:globalThis.RudderSnippetVersion,variant:getVariantValue()}),userAgent:y(null),device:y(null),network:y(null),os:y({name:'',version:''}),locale:y(null),screen:y({density:0,width:0,height:0,innerWidth:0,innerHeight:0}),'ua-ch':y(undefined),timezone:y(undefined)};\n\nconst customContextState=y({});\n\nconst nativeDestinationsState={configuredDestinations:y([]),activeDestinations:y([]),loadOnlyIntegrations:y({}),failedDestinations:y([]),loadIntegration:y(true),initializedDestinations:y([]),clientDestinationsReady:y(false),integrationsConfig:y({})};\n\nconst eventBufferState={toBeProcessedArray:y([]),readyCallbacksArray:y([])};\n\nconst pluginsState={ready:y(false),loadedPlugins:y([]),failedPlugins:y([]),pluginsToLoadFromConfig:y([]),activePlugins:y([]),totalPluginsToLoad:y(0)};\n\nconst storageState={encryptionPluginName:y(undefined),migrate:y(false),type:y(undefined),cookie:y(undefined),entries:y({}),trulyAnonymousTracking:y(false)};\n\nconst serverSideCookiesState={isEnabledServerSideCookies:y(false),dataServiceUrl:y(undefined)};\n\nconst dataPlaneEventsState={eventsQueuePluginName:y(undefined),deliveryEnabled:y(true)// Delivery should always happen\n};\n\nconst autoTrackState={enabled:y(false),pageLifecycle:{enabled:y(false),pageViewId:y(undefined),pageLoadedTimestamp:y(undefined)}};\n\nconst defaultStateValues={capabilities:capabilitiesState,consents:consentsState,context:contextState,customContext:customContextState,eventBuffer:eventBufferState,lifecycle:lifecycleState,loadOptions:loadOptionsState,metrics:metricsState,nativeDestinations:nativeDestinationsState,plugins:pluginsState,reporting:reportingState,session:sessionState,source:sourceConfigState,storage:storageState,serverCookies:serverSideCookiesState,dataPlaneEvents:dataPlaneEventsState,autoTrack:autoTrackState};const state={...clone(defaultStateValues)};\n\nconst CHROME_STACK_LINE_RE=/^\\s*at /;const SAFARI_NATIVE_RE=/^(eval@)?(\\[native code])?$/;const LOCATION_RE=/(.+?)(?::(\\d+))?(?::(\\d+))?$/;function extractLocation(urlLike){if(!urlLike?.includes(':')){return [urlLike||undefined,undefined,undefined];}const normalizedUrlLike=urlLike.startsWith('(')&&urlLike.endsWith(')')?urlLike.slice(1,-1):urlLike;const parts=LOCATION_RE.exec(normalizedUrlLike);if(!parts){return [undefined,undefined,undefined];}return [parts[1]||undefined,parts[2]===undefined?undefined:Number(parts[2]),parts[3]===undefined?undefined:Number(parts[3])];}function parseV8Line(line){if(!CHROME_STACK_LINE_RE.test(line)){return null;}if(line.includes('(eval ')){line=line.replaceAll('eval code','eval').replaceAll(/(\\(eval at [^()]*)|(,.*$)/g,'');}const sanitized=line.replace(/^\\s+/,'').replaceAll('(eval code','(').replace(/^.*?\\s+/,'');const parenLoc=/ (\\(.+\\)$)/.exec(sanitized);const withoutLoc=parenLoc?sanitized.replace(parenLoc[0],''):sanitized;const[rawFile,lineNumber,columnNumber]=extractLocation(parenLoc?parenLoc[1]:sanitized);const functionName=parenLoc&&withoutLoc||undefined;const fileName=rawFile==='eval'||rawFile==='<anonymous>'?undefined:rawFile;return {functionName,fileName,lineNumber,columnNumber};}function parseFFSafariLine(line){if(SAFARI_NATIVE_RE.test(line)){return null;}if(line.includes(' > eval')){line=line.replaceAll(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g,':$1');}if(!line.includes('@')&&!line.includes(':')){return {functionName:line,fileName:undefined,lineNumber:undefined,columnNumber:undefined};}const atIndex=line.lastIndexOf('@');const functionName=atIndex>0?line.slice(0,atIndex):undefined;const[fileName,lineNumber,columnNumber]=extractLocation(line.slice(atIndex+1));return {functionName,fileName,lineNumber,columnNumber};}/**\n * Parses an Error object's stack trace into structured frames.\n * Supports V8/Chromium (Chrome, Edge, Node) and SpiderMonkey/WebKit (Firefox, Safari) formats.\n * Throws if the error has no stack property.\n */function parseStackTrace(error){if(!error.stack){throw new Error('Cannot parse given Error object');}const lines=error.stack.split('\\n');if(lines.some(l=>CHROME_STACK_LINE_RE.test(l))){return lines.map(parseV8Line).filter(f=>f!==null);}return lines.map(parseFFSafariLine).filter(f=>f!==null);}\n\nconst GLOBAL_CODE='global code';const normalizeFunctionName=name=>{if(isDefined(name)){return /^global code$/i.test(name)?GLOBAL_CODE:name;}return name;};const formatStackframe=frame=>{const f={file:frame.fileName,method:normalizeFunctionName(frame.functionName),lineNumber:frame.lineNumber,columnNumber:frame.columnNumber};// Some instances result in no file:\n// - non-error exception thrown from global code in FF\n// This adds one.\nif(f.lineNumber&&f.lineNumber>-1&&!f.file&&!f.method){f.file=GLOBAL_CODE;}return f;};const ensureString=str=>isString(str)?str:'';function createException(errorClass,errorMessage,msgPrefix,stacktrace){return {errorClass:ensureString(errorClass),message:`${msgPrefix}${ensureString(errorMessage)}`,type:'browserjs',stacktrace:stacktrace.reduce((accum,frame)=>{const f=formatStackframe(frame);// don't include a stackframe if none of its properties are defined\ntry{if(JSON.stringify(f)==='{}')return accum;return accum.concat(f);}catch{return accum;}},[])};}const normalizeError=(maybeError,logger)=>{let error;if(isTypeOfError(maybeError)&&isString(getStacktrace(maybeError))){error=maybeError;}else {logger.warn(NON_ERROR_WARNING(ERROR_HANDLER,stringifyWithoutCircular(maybeError)));error=undefined;}return error;};const createBugsnagException=(error,msgPrefix)=>{try{const stacktrace=parseStackTrace(error);return createException(error.name,error.message,msgPrefix,stacktrace);}catch{return createException(error.name,error.message,msgPrefix,[]);}};\n\n/**\n * Utility to parse XHR JSON response\n */const responseTextToJson=(responseText,onError)=>{try{return JSON.parse(responseText||'');}catch(err){const error=getMutatedError(err,'Failed to parse response data');onError(error);}return undefined;};\n\nconst FAILED_REQUEST_ERR_MSG_PREFIX='The request failed';const PLUGINS_LOAD_FAILURE_MESSAGES=[/Failed to fetch dynamically imported module: .*/];const INTEGRATIONS_LOAD_FAILURE_MESSAGES=[/Unable to load \\(.*\\) the script with the id .*/,/A timeout of \\d+ ms occurred while trying to load the script with id .*/];const ERROR_MESSAGES_TO_BE_FILTERED=[new RegExp(`${FAILED_REQUEST_ERR_MSG_PREFIX}.*`),/A script with the id .* is already loaded\\./];const SCRIPT_LOAD_FAILURE_MESSAGES=[...PLUGINS_LOAD_FAILURE_MESSAGES,...INTEGRATIONS_LOAD_FAILURE_MESSAGES];const INTEGRATIONS_ERROR_CATEGORY='integrations';const SDK_ERROR_CATEGORY='sdk';const DEFAULT_ERROR_CATEGORY=SDK_ERROR_CATEGORY;\n\nconst DEFAULT_XHR_REQUEST_OPTIONS={headers:{Accept:'application/json','Content-Type':'application/json;charset=UTF-8'},method:'GET'};/**\n * Utility to create request configuration based on default options\n */const createXhrRequestOptions=(url,options,basicAuthHeader)=>{const requestOptions=mergeDeepRight(DEFAULT_XHR_REQUEST_OPTIONS,options||{});if(basicAuthHeader){requestOptions.headers=mergeDeepRight(requestOptions.headers,{Authorization:basicAuthHeader});}requestOptions.url=url;return requestOptions;};/**\n * Utility implementation of XHR, fetch cannot be used as it requires explicit\n * origin allowed values and not wildcard for CORS requests with credentials and\n * this is not supported by our sourceConfig API\n */const xhrRequest=(options,timeout=DEFAULT_XHR_TIMEOUT_MS,logger)=>new Promise((resolve,reject)=>{let payload;if(options.sendRawData===true){payload=options.data;}else {payload=stringifyWithoutCircular(options.data,false,[],logger);if(isNull(payload)){reject({error:new Error(XHR_PAYLOAD_PREP_ERROR),undefined,options});// return and don't process further if the payload could not be stringified\nreturn;}}const xhr=new XMLHttpRequest();// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst xhrReject=e=>{reject({error:new Error(XHR_DELIVERY_ERROR(FAILED_REQUEST_ERR_MSG_PREFIX,xhr.status,xhr.statusText,options.url,xhr.responseText)),xhr,options});};const xhrError=e=>{reject({error:new Error(XHR_REQUEST_ERROR(FAILED_REQUEST_ERR_MSG_PREFIX,e,options.url)),xhr,options,...(e?.type==='timeout'?{timedOut:true}:{})});};xhr.ontimeout=xhrError;xhr.onerror=xhrError;xhr.onload=()=>{if(xhr.status>=200&&xhr.status<400){resolve({response:xhr.responseText,xhr,options});}else {xhrReject();}};xhr.open(options.method,options.url,true);if(options.withCredentials===true){xhr.withCredentials=true;}// The timeout property may be set only in the time interval between a call to the open method\n// and the first call to the send method in legacy browsers\nxhr.timeout=timeout;Object.keys(options.headers).forEach(headerName=>{if(options.headers[headerName]){xhr.setRequestHeader(headerName,options.headers[headerName]);}});try{xhr.send(payload);}catch(err){reject({error:getMutatedError(err,XHR_SEND_ERROR(FAILED_REQUEST_ERR_MSG_PREFIX,options.url)),xhr,options});}});\n\n/**\n * Service to handle data communication with APIs\n */class HttpClient{constructor(logger){this.logger=logger;this.onError=this.onError.bind(this);}init(errorHandler){this.errorHandler=errorHandler;}/**\n   * Implement requests in a blocking way\n   */async getData(config){const{url,options,timeout,isRawResponse}=config;try{const data=await xhrRequest(createXhrRequestOptions(url,options,this.basicAuthHeader),timeout,this.logger);return {data:isRawResponse?data.response:responseTextToJson(data.response,this.onError),details:data};}catch(reason){return {data:undefined,details:reason};}}/**\n   * Implement requests in a non-blocking way\n   */getAsyncData(config){const{callback,url,options,timeout,isRawResponse}=config;const isFireAndForget=!isFunction(callback);xhrRequest(createXhrRequestOptions(url,options,this.basicAuthHeader),timeout,this.logger).then(data=>{if(!isFireAndForget){callback(isRawResponse?data.response:responseTextToJson(data.response,this.onError),data);}}).catch(data=>{if(!isFireAndForget){callback(undefined,data);}});}/**\n   * Handle errors\n   */onError(error,groupingHash){this.errorHandler?.onError({error,context:HTTP_CLIENT,groupingHash});}/**\n   * Set basic authentication header (eg writekey)\n   */setAuthHeader(value,noBtoa=false){const authVal=noBtoa?value:toBase64(`${value}:`);this.basicAuthHeader=`Basic ${authVal}`;}/**\n   * Clear basic authentication header\n   */resetAuthHeader(){this.basicAuthHeader=undefined;}}const defaultHttpClient=new HttpClient(defaultLogger);\n\nconst METRICS_PAYLOAD_VERSION='1';\n\n// Errors from the below scripts are NOT allowed to reach Bugsnag\nconst SDK_FILE_NAME_PREFIXES=()=>['rsa'// Prefix for all the SDK scripts including plugins and module federated chunks\n];const DEV_HOSTS=['www.test-host.com','localhost','127.0.0.1','[::1]'];// List of keys to exclude from the metadata\n// Potential PII or sensitive data\nconst APP_STATE_EXCLUDE_KEYS=['userId','userTraits','groupId','groupTraits','anonymousId','config','integration',// integration instance objects\n'eventBuffer',// pre-load event buffer (may contain PII)\n'customContext',// customer-provided event context\n'traits','authToken'];const NOTIFIER_NAME='RudderStack JavaScript SDK';const SDK_GITHUB_URL='git+https://github.com/rudderlabs/rudder-sdk-js.git';const SOURCE_NAME='js';\n\nconst detectAdBlockers=httpClient=>{state.capabilities.isAdBlockerDetectionInProgress.value=true;try{// Apparently, '?view=ad' is a query param that is blocked by majority of adblockers\n// Use source config URL here as it is very unlikely to be blocked by adblockers\n// Only the extra query param should make it vulnerable to adblockers\n// This will work even if the users proxies it.\n// The edge case where this doesn't work is when HEAD method is not allowed by the server (user's)\nconst baseUrl=new URL(state.lifecycle.sourceConfigUrl.value);const url=`${baseUrl.origin}${baseUrl.pathname}?view=ad`;httpClient.getAsyncData({url,options:{// We actually don't need the response from the request, so we are using HEAD\nmethod:'HEAD',headers:{'Content-Type':undefined}},isRawResponse:true,callback:(result,details)=>{state.capabilities.isAdBlockerDetectionInProgress.value=false;// not ad blocked if the request is successful or it is not internally redirected on the client side\n// Often adblockers instead of blocking the request, they redirect it to an internal URL\nstate.capabilities.isAdBlocked.value=details?.error!==undefined||details?.xhr?.responseURL!==url;}});}catch(err){// Reset the flag to prevent blocking future detection attempts\nstate.capabilities.isAdBlockerDetectionInProgress.value=false;// Re-throw the error to be handled by the caller\nthrow err;}};\n\nconst getErrInstance=(err,errorType)=>{switch(errorType){case ErrorType.UNHANDLEDEXCEPTION:{const{error}=err;return error||err;}case ErrorType.UNHANDLEDREJECTION:{return err.reason;}case ErrorType.HANDLEDEXCEPTION:default:return err;}};const createNewBreadcrumb=message=>({type:'manual',name:message,timestamp:new Date(),metaData:{}});/**\n * A function to get the Bugsnag release stage for the current environment\n * @param getHostName Optional function to get the hostname (primarily for testing)\n * @returns 'development' if the host is empty (for file:// protocol etc.) or a dev host (localhost, 127.0.0.1, etc.), otherwise ''production'' (it'll be replaced with the actual release stage during the build)\n */const getReleaseStage=(getHostName=()=>window.location.hostname)=>{const host=getHostName();return !host||host&&DEV_HOSTS.includes(host)?'development':'production';};const getAppStateForMetadata=state=>{const stateStr=stringifyWithoutCircular(state,false,APP_STATE_EXCLUDE_KEYS);return stateStr!==null?JSON.parse(stateStr):{};};const getURLWithoutQueryString=()=>{const url=globalThis.location.href.split('?');return url[0];};const getUserDetails=(source,session,lifecycle,autoTrack)=>({id:`${source.value?.id??lifecycle.writeKey.value}..${session.sessionInfo.value.id??'NA'}..${autoTrack.pageLifecycle.pageViewId.value??'NA'}`,name:source.value?.name??'NA'});const getDeviceDetails=(locale,userAgent)=>({locale:locale.value??'NA',userAgent:userAgent.value??'NA',time:new Date()});const getBugsnagErrorEvent=(exception,errorState,state,groupingHash)=>{const{context,lifecycle,session,source,reporting,autoTrack}=state;const{app,locale,userAgent,timezone,screen,library}=context;return {payloadVersion:'5',notifier:{name:NOTIFIER_NAME,version:app.value.version,url:SDK_GITHUB_URL},events:[{exceptions:[clone(exception)],severity:errorState.severity,unhandled:errorState.unhandled,severityReason:errorState.severityReason,app:{version:app.value.version,releaseStage:getReleaseStage(),type:app.value.installType},device:getDeviceDetails(locale,userAgent),request:{url:getURLWithoutQueryString(),clientIp:'[NOT COLLECTED]'},breadcrumbs:clone(reporting.breadcrumbs.value),context:exception.message,groupingHash,metaData:{app:{snippetVersion:library.value.snippetVersion},device:{...screen.value,timezone:timezone.value},// Add rest of the state groups as metadata\n// so that they show up as separate tabs in the dashboard\n...getAppStateForMetadata(state)},user:getUserDetails(source,session,lifecycle,autoTrack)}]};};/**\n * A function to check if adblockers are active. The promise's resolve function\n * is invoked with true if adblockers are not detected and false otherwise.\n * @param {ApplicationState} state The application state\n * @param {IHttpClient} httpClient The HTTP client instance\n * @param {Function} resolve The promise's resolve function\n */const checkIfAdBlockersAreActive=(state,httpClient,resolve)=>{// Initiate ad blocker detection if not done previously and not already in progress.\nif(isUndefined(state.capabilities.isAdBlocked.value)){if(state.capabilities.isAdBlockerDetectionInProgress.value===false){detectAdBlockers(httpClient);}// Wait for the detection to complete.\nconst detectionDisposer=j(()=>{if(isDefined(state.capabilities.isAdBlocked.value)){// If ad blocker is not detected, notify.\nresolve(state.capabilities.isAdBlocked.value===false);// Cleanup the effect.\ndetectionDisposer();}});}else {// If ad blocker is not detected, notify.\nresolve(state.capabilities.isAdBlocked.value===false);}};/**\n * A function to determine whether the error should be promoted to notify or not.\n * For plugin and integration errors from RS CDN, if it is due to CSP blocked URLs or AdBlockers,\n * it will not be promoted to notify.\n * If it is due to other reasons, it will be promoted to notify.\n * @param {Error} exception The error object\n * @param {ApplicationState} state The application state\n * @param {IHttpClient} httpClient The HTTP client instance\n * @returns A promise that resolves to a boolean indicating whether the error should be promoted to notify or not\n */const checkIfAllowedToBeNotified=(exception,state,httpClient)=>{const errMsg=exception.message;return new Promise(resolve=>{// Filter out script load failures that are not from the RS CDN.\nif(SCRIPT_LOAD_FAILURE_MESSAGES.some(regex=>regex.test(errMsg))){const extractedURL=/https?:\\/\\/[^\\s\"'(),;<>[\\]{}]+/.exec(errMsg)?.[0];if(isString(extractedURL)){if(extractedURL.startsWith(SDK_CDN_BASE_URL)){// Filter out errors that are from CSP blocked URLs.\nif(state.capabilities.cspBlockedURLs.value.includes(extractedURL)){resolve(false);}else {// Filter out errors if adblockers are detected.\ncheckIfAdBlockersAreActive(state,httpClient,resolve);}}else {// Filter out errors that are not from the RS CDN.\nresolve(false);}}else {// Allow the error to be notified if no URL could be extracted from the error message\nresolve(true);}}else {resolve(!ERROR_MESSAGES_TO_BE_FILTERED.some(e=>e.test(errMsg)));}});};/**\n * A function to get the directory name from a file path.\n * @param {string} filePath The file path\n * @returns The directory name or undefined if the file path is invalid\n */const getDirectoryName=filePath=>{if(!filePath){return undefined;}const paths=filePath.split('/');return paths.at(-2);};/**\n * A function to get the top stack path from the exception.\n * @param {Exception} exception The exception object\n * @returns The top stack path or undefined if the exception is invalid\n */const getTopStackPath=exception=>{const errorOrigin=exception.stacktrace[0]?.file;if(!errorOrigin||typeof errorOrigin!=='string'){return undefined;}return errorOrigin;};/**\n * A function to determine if the error is from Rudder SDK\n * @param {Error} exception\n * @returns\n */const isSDKError=exception=>{const errorOrigin=getTopStackPath(exception);if(!errorOrigin){return false;}const srcFileName=errorOrigin.substring(errorOrigin.lastIndexOf('/')+1);const parentFolderName=getDirectoryName(errorOrigin);return parentFolderName===CDN_INT_DIR||SDK_FILE_NAME_PREFIXES().some(prefix=>srcFileName.startsWith(prefix)&&srcFileName.endsWith('.js'));};const getErrorCategory=(exception,category)=>{if(category){return category;}const errorOrigin=getTopStackPath(exception);const directoryName=getDirectoryName(errorOrigin);if(directoryName===CDN_INT_DIR){return INTEGRATIONS_ERROR_CATEGORY;}return DEFAULT_ERROR_CATEGORY;};const getErrorDeliveryPayload=(payload,state,category)=>{const data={version:METRICS_PAYLOAD_VERSION,message_id:generateUUID(),source:{name:SOURCE_NAME,sdk_version:state.context.app.value.version,write_key:state.lifecycle.writeKey.value,install_type:state.context.app.value.installType,category},errors:payload};return stringifyWithoutCircular(data);};/**\n * A function to get the grouping hash value to be used for the error event.\n * If the grouping hash is an error instance, the normalized error message is used as the grouping hash.\n * If the grouping hash is an empty string or not specified, the default grouping hash is used.\n * If the grouping hash is a string, it is used as is.\n * @param curErrGroupingHash The grouping hash value part of the error event\n * @param defaultGroupingHash The default grouping hash value. It is the error message.\n * @param logger The logger instance\n * @returns The final grouping hash value to be used for the error event\n */const getErrorGroupingHash=(curErrGroupingHash,defaultGroupingHash,logger)=>{let normalizedGroupingHash;if(!isDefined(curErrGroupingHash)){normalizedGroupingHash=defaultGroupingHash;}else if(isString(curErrGroupingHash)){normalizedGroupingHash=curErrGroupingHash;}else {const normalizedErrorInstance=normalizeError(curErrGroupingHash,logger);if(isDefined(normalizedErrorInstance)){normalizedGroupingHash=normalizedErrorInstance.message;}else {normalizedGroupingHash=defaultGroupingHash;}}return normalizedGroupingHash;};\n\n/**\n * A service to handle errors\n */class ErrorHandler{initialized=false;// If no logger is passed errors will be thrown as unhandled error\nconstructor(httpClient,logger){this.httpClient=httpClient;this.logger=logger;}/**\n   * Initializes the error handler by attaching global error listeners.\n   * This method should be called once after construction.\n   */init(){if(this.initialized){return;}this.attachErrorListeners();this.initialized=true;}/**\n   * Attach error listeners to the global window object\n   */attachErrorListeners(){globalThis.addEventListener('error',event=>{this.onError({error:event,context:ERROR_HANDLER,errorType:ErrorType.UNHANDLEDEXCEPTION});});globalThis.addEventListener('unhandledrejection',event=>{this.onError({error:event,context:ERROR_HANDLER,errorType:ErrorType.UNHANDLEDREJECTION});});// Listen to CSP violations and add the blocked URL to the state\n// if those URLs are from RS CDN.\ndocument.addEventListener('securitypolicyviolation',event=>{const blockedURL=isString(event.blockedURI)?event.blockedURI:'';if(event.disposition==='enforce'&&blockedURL.startsWith(SDK_CDN_BASE_URL)&&!state.capabilities.cspBlockedURLs.value.includes(blockedURL)){state.capabilities.cspBlockedURLs.value=[...state.capabilities.cspBlockedURLs.value,blockedURL];}});}/**\n   * Handle errors\n   * @param errorInfo - The error information\n   * @param errorInfo.error - The error to handle\n   * @param errorInfo.context - The context of where the error occurred\n   * @param errorInfo.customMessage - The custom message of the error\n   * @param errorInfo.errorType - The type of the error (handled or unhandled)\n   * @param errorInfo.groupingHash - The grouping hash of the error\n   * @param errorInfo.category - The category of the error (sdk or integrations)\n   */async onError(errorInfo){try{const{error,context,customMessage,groupingHash,category}=errorInfo;const errorType=errorInfo.errorType??ErrorType.HANDLEDEXCEPTION;const errInstance=getErrInstance(error,errorType);const normalizedError=normalizeError(errInstance,this.logger);if(isUndefined(normalizedError)){return;}const customMsgVal=customMessage?`${customMessage} - `:'';const errorMsgPrefix=`${context}${LOG_CONTEXT_SEPARATOR}${customMsgVal}`;const bsException=createBugsnagException(normalizedError,errorMsgPrefix);const stacktrace=getStacktrace(normalizedError);const isSdkDispatched=stacktrace.includes(MANUAL_ERROR_IDENTIFIER);// Filter errors that are not originated in the SDK.\n// In case of NPM installations, the unhandled errors from the SDK cannot be identified\n// and will NOT be reported unless they occur in plugins or integrations.\nif(!isSdkDispatched&&!isSDKError(bsException)&&errorType!==ErrorType.HANDLEDEXCEPTION){return;}if(state.reporting.isErrorReportingEnabled.value){const isAllowed=await checkIfAllowedToBeNotified(bsException,state,this.httpClient);if(isAllowed){const errorState={severity:'error',unhandled:errorType!==ErrorType.HANDLEDEXCEPTION,severityReason:{type:errorType}};// This will allow custom grouping of errors.\n// In case of NPM installations, the default grouping by surrounding code\n// does not make sense as each user application is different and will create a lot of noise in the alerts.\n// References:\n// https://docs.bugsnag.com/platforms/javascript/customizing-error-reports/#groupinghash\n// https://docs.bugsnag.com/product/error-grouping/#user_defined\nconst normalizedGroupingHash=getErrorGroupingHash(groupingHash,bsException.message,this.logger);// Get the final payload to be sent to the metrics service\nconst bugsnagPayload=getBugsnagErrorEvent(bsException,errorState,state,normalizedGroupingHash);const errorCategory=getErrorCategory(bsException,category);// send it to metrics service\nthis.httpClient.getAsyncData({url:state.metrics.metricsServiceUrl.value,options:{method:'POST',data:getErrorDeliveryPayload(bugsnagPayload,state,errorCategory),sendRawData:true},isRawResponse:true});}}// Log handled errors and errors dispatched by the SDK\nif(errorType===ErrorType.HANDLEDEXCEPTION||isSdkDispatched){this.logger.error(bsException.message);}}catch(err){// If an error occurs while handling an error, log it\nthis.logger.error(HANDLE_ERROR_FAILURE(ERROR_HANDLER),err);}}/**\n   * Add breadcrumbs to add insight of a user's journey before an error\n   * occurred and send to external error monitoring service via a plugin\n   *\n   * @param {string} breadcrumb breadcrumbs message\n   */leaveBreadcrumb(breadcrumb){try{state.reporting.breadcrumbs.value=[...state.reporting.breadcrumbs.value,createNewBreadcrumb(breadcrumb)];}catch(err){this.onError({error:err,context:ERROR_HANDLER,customMessage:BREADCRUMB_ERROR,groupingHash:BREADCRUMB_ERROR});}}}// Note: Remember to call defaultErrorHandler.init() before using it\nconst defaultErrorHandler=new ErrorHandler(defaultHttpClient,defaultLogger);\n\n//  to next or return the value if it is the last one instead of an array per\n//  plugin that is the normal invoke\n// TODO: add invoke method for extension point that we know only one plugin can be used. add invokeMultiple and invokeSingle methods\nclass PluginEngine{plugins=[];byName={};cache={};config={throws:true};constructor(logger,options={}){this.config={throws:true,...options};this.logger=logger;}register(plugin,state){if(!plugin.name){const errorMessage=PLUGIN_NAME_MISSING_ERROR(PLUGIN_ENGINE);if(this.config.throws){throw new Error(errorMessage);}else {this.logger.error(errorMessage,plugin);return;}}if(this.byName[plugin.name]){const errorMessage=PLUGIN_ALREADY_EXISTS_ERROR(PLUGIN_ENGINE,plugin.name);if(this.config.throws){throw new Error(errorMessage);}else {this.logger.error(errorMessage);return;}}this.cache={};this.plugins=this.plugins.slice();let pos=this.plugins.length;this.plugins.forEach((pluginItem,index)=>{if(pluginItem.deps?.includes(plugin.name)){pos=Math.min(pos,index);}});this.plugins.splice(pos,0,plugin);this.byName[plugin.name]=plugin;if(isFunction(plugin.initialize)){plugin.initialize(state);}}unregister(name){const plugin=this.byName[name];if(!plugin){const errorMessage=PLUGIN_NOT_FOUND_ERROR(PLUGIN_ENGINE,name);if(this.config.throws){throw new Error(errorMessage);}else {this.logger.error(errorMessage);return;}}const index=this.plugins.indexOf(plugin);if(index===-1){const errorMessage=PLUGIN_ENGINE_BUG_ERROR(PLUGIN_ENGINE,name);if(this.config.throws){throw new Error(errorMessage);}else {this.logger.error(errorMessage);return;}}this.cache={};delete this.byName[name];this.plugins=this.plugins.slice();this.plugins.splice(index,1);}getPlugin(name){return this.byName[name];}getPlugins(extPoint){const lifeCycleName=extPoint??'.';if(!this.cache[lifeCycleName]){this.cache[lifeCycleName]=this.plugins.filter(plugin=>{if(plugin.deps?.some(dependency=>!this.byName[dependency])){// If deps not exist, then not load it.\nconst notExistDeps=plugin.deps.filter(dependency=>!this.byName[dependency]);this.logger.error(PLUGIN_DEPS_ERROR(PLUGIN_ENGINE,plugin.name,notExistDeps));return false;}return lifeCycleName==='.'?true:hasValueByPath(plugin,lifeCycleName);});}return this.cache[lifeCycleName];}// This method allows to process this.plugins so that it could\n// do some unified pre-process before application starts.\nprocessRawPlugins(callback){callback(this.plugins);this.cache={};}invoke(extPoint,allowMultiple=true,...args){let extensionPointName=extPoint;if(!extensionPointName){throw new Error(PLUGIN_EXT_POINT_MISSING_ERROR);}const noCall=extensionPointName.startsWith('!');const throws=this.config.throws??extensionPointName.endsWith('!');// eslint-disable-next-line unicorn/better-regex\nextensionPointName=extensionPointName.replace(/(^!|!$)/g,'');if(!extensionPointName){throw new Error(PLUGIN_EXT_POINT_INVALID_ERROR);}const extensionPointNameParts=extensionPointName.split('.');extensionPointNameParts.pop();const pluginMethodPath=extensionPointNameParts.join('.');const pluginsToInvoke=allowMultiple?this.getPlugins(extensionPointName):[this.getPlugins(extensionPointName)[0]];return pluginsToInvoke.map(plugin=>{const method=getValueByPath(plugin,extensionPointName);if(!isFunction(method)||noCall){return method;}try{return method.apply(getValueByPath(plugin,pluginMethodPath),args);}catch(err){// When a plugin failed, doesn't break the app\nif(throws){throw err;}else {this.logger.error(PLUGIN_INVOCATION_ERROR(PLUGIN_ENGINE,extensionPointName,plugin.name),err);}}return null;});}invokeSingle(extPoint,...args){return this.invoke(extPoint,false,...args)[0];}invokeMultiple(extPoint,...args){return this.invoke(extPoint,true,...args);}}const defaultPluginEngine=new PluginEngine(defaultLogger,{throws:true});\n\n/**\n * A function to filter and return non cloud mode destinations\n * A destination is considered non cloud mode if it is not a cloud mode destination or if it is a hybrid mode destination\n * @param destination\n *\n * @returns boolean\n */const isNonCloudDestination=destination=>Boolean(destination.config.connectionMode!=='cloud'||destination.config.useNativeSDKToSend===true||// this is the older flag for hybrid mode destinations\ndestination.config.useNativeSDK===true);const isHybridModeDestination=destination=>Boolean(destination.config.connectionMode==='hybrid'||destination.config.useNativeSDKToSend===true);/**\n * A function to filter and return non cloud mode destinations\n * @param destinations\n *\n * @returns destinations\n */const getNonCloudDestinations=destinations=>destinations.filter(isNonCloudDestination);/**\n * A function to get the user friendly id for a destination\n * Replaces all spaces with hyphens and appends the id to the display name\n * @param displayName The display name of the destination\n * @param id The id of the destination\n *\n * @returns the user friendly id\n */const getDestinationUserFriendlyId=(displayName,id)=>`${displayName.replaceAll(' ','-')}___${id}`;\n\n/**\n * List of plugin names that are loaded as dynamic imports in modern builds\n */const pluginNamesList=['BeaconQueue','CustomConsentManager','DeviceModeDestinations','DeviceModeTransformation','ExternalAnonymousId','GoogleLinker','IubendaConsentManager','KetchConsentManager','NativeDestinationQueue','OneTrustConsentManager','StorageEncryption','StorageEncryptionLegacy','StorageMigrator','XhrQueue'];const deprecatedPluginsList=['Bugsnag','ErrorReporting'];\n\nconst remotesMap = {\n'rudderAnalyticsRemotePlugins':{url:()=>Promise.resolve(window.RudderStackGlobals && window.RudderStackGlobals.app && window.RudderStackGlobals.app.pluginsCDNPath ? `${window.RudderStackGlobals.app.pluginsCDNPath}/rsa-plugins.js` : `https://cdn.rudderlabs.com/v3/modern/plugins//rsa-plugins.js`),format:'esm',from:'vite'}\n};\n                \n                function merge(obj1, obj2) {\n                  const mergedObj = Object.assign(obj1, obj2);\n                  for (const key of Object.keys(mergedObj)) {\n                    if (typeof mergedObj[key] === 'object' && typeof obj2[key] === 'object') {\n                      mergedObj[key] = merge(mergedObj[key], obj2[key]);\n                    }\n                  }\n                  return mergedObj;\n                }\n\n                const wrapShareModule = remoteFrom => {\n                  return merge({\n                    \n                  }, (globalThis.__federation_shared__ || {})['default'] || {});\n                };\n\n                async function __federation_method_ensure(remoteId) {\n                    const remote = remotesMap[remoteId];\n                    if (!remote.inited) {\n                        if (['esm', 'systemjs'].includes(remote.format)) {\n                            // loading js with import(...)\n                            return new Promise((resolve, reject) => {\n                                const getUrl = typeof remote.url === 'function' ? remote.url : () => Promise.resolve(remote.url);\n                                getUrl().then(url => {\n                                    import(/* webpackIgnore: true */ /* @vite-ignore */ url).then(lib => {\n                                        if (!remote.inited) {\n                                            const shareScope = wrapShareModule();\n                                            lib.init(shareScope);\n                                            remote.lib = lib;\n                                            remote.lib.init(shareScope);\n                                            remote.inited = true;\n                                        }\n                                        resolve(remote.lib);\n                                    }).catch(reject);\n                                });\n                            })\n                        }\n                    } else {\n                        return remote.lib;\n                    }\n                }\n\n                function __federation_method_wrapDefault(module, need) {\n                    if (!module?.default && need) {\n                        let obj = Object.create(null);\n                        obj.default = module;\n                        obj.__esModule = true;\n                        return obj;\n                    }\n                    return module;\n                }\n\n                function __federation_method_getRemote(remoteName, componentName) {\n                    return __federation_method_ensure(remoteName).then((remote) => remote.get(componentName).then(factory => factory()));\n                }\n\n/**\n * Get the lazy loaded dynamic import for a plugin name\n */const getFederatedModuleImport=pluginName=>{switch(pluginName){case 'BeaconQueue':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./BeaconQueue\").then(module=>__federation_method_wrapDefault(module, true));case 'CustomConsentManager':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./CustomConsentManager\").then(module=>__federation_method_wrapDefault(module, true));case 'DeviceModeDestinations':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./DeviceModeDestinations\").then(module=>__federation_method_wrapDefault(module, true));case 'DeviceModeTransformation':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./DeviceModeTransformation\").then(module=>__federation_method_wrapDefault(module, true));case 'ExternalAnonymousId':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./ExternalAnonymousId\").then(module=>__federation_method_wrapDefault(module, true));case 'GoogleLinker':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./GoogleLinker\").then(module=>__federation_method_wrapDefault(module, true));case 'KetchConsentManager':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./KetchConsentManager\").then(module=>__federation_method_wrapDefault(module, true));case 'IubendaConsentManager':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./IubendaConsentManager\").then(module=>__federation_method_wrapDefault(module, true));case 'NativeDestinationQueue':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./NativeDestinationQueue\").then(module=>__federation_method_wrapDefault(module, true));case 'OneTrustConsentManager':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./OneTrustConsentManager\").then(module=>__federation_method_wrapDefault(module, true));case 'StorageEncryption':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./StorageEncryption\").then(module=>__federation_method_wrapDefault(module, true));case 'StorageEncryptionLegacy':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./StorageEncryptionLegacy\").then(module=>__federation_method_wrapDefault(module, true));case 'StorageMigrator':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./StorageMigrator\").then(module=>__federation_method_wrapDefault(module, true));case 'XhrQueue':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./XhrQueue\").then(module=>__federation_method_wrapDefault(module, true));default:return undefined;}};/**\n * Map of active plugin names to their dynamic import\n */const federatedModulesBuildPluginImports=activePluginNames=>{const remotePlugins={};activePluginNames.forEach(pluginName=>{if(pluginNamesList.includes(pluginName)){const lazyLoadImport=getFederatedModuleImport(pluginName);if(lazyLoadImport){remotePlugins[pluginName]=lazyLoadImport;}}});return remotePlugins;};\n\n/**\n * Map of mandatory plugin names and direct imports\n */const getMandatoryPluginsMap=()=>({});/**\n * Map of optional plugin names and direct imports for legacy builds\n */const getOptionalPluginsMap=()=>{{return {};}};/**\n * Map of optional plugin names and dynamic imports for modern builds\n */const getRemotePluginsMap=activePluginNames=>{return federatedModulesBuildPluginImports?.(activePluginNames)||{};};const pluginsInventory={...getMandatoryPluginsMap(),...getOptionalPluginsMap()};const remotePluginsInventory=activePluginNames=>({...getRemotePluginsMap(activePluginNames)});\n\n// TODO: add retry mechanism for getting remote plugins\n// TODO: add timeout error mechanism for marking remote plugins that failed to load as failed in state\nclass PluginsManager{constructor(engine,errorHandler,logger){this.engine=engine;this.errorHandler=errorHandler;this.logger=logger;this.onError=this.onError.bind(this);}/**\n   * Orchestrate the plugin loading and registering\n   */init(){state.lifecycle.status.value='pluginsLoading';// Expose pluginsCDNPath to global object, so it can be used in the promise that determines\n// remote plugin cdn path to support proxied plugin remotes\n{setExposedGlobal('pluginsCDNPath',state.lifecycle.pluginsCDNPath.value);}this.setActivePlugins();this.registerLocalPlugins();this.registerRemotePlugins();this.attachEffects();}/**\n   * Update state based on plugin loaded status\n   */// eslint-disable-next-line class-methods-use-this\nattachEffects(){j(()=>{const isAllPluginsReady=state.plugins.activePlugins.value.length===0||state.plugins.loadedPlugins.value.length+state.plugins.failedPlugins.value.length===state.plugins.totalPluginsToLoad.value;if(isAllPluginsReady){n(()=>{state.plugins.ready.value=true;// TODO: decide what to do if a plugin fails to load for any reason.\n//  Should we stop here or should we progress?\nstate.lifecycle.status.value='pluginsReady';});}});}/**\n   * Determine the list of plugins that should be loaded based on sourceConfig & load options\n   */// eslint-disable-next-line class-methods-use-this\ngetPluginsToLoadBasedOnConfig(){// This contains the default plugins if load option has been omitted by user\nlet pluginsToLoadFromConfig=state.plugins.pluginsToLoadFromConfig.value;if(!pluginsToLoadFromConfig){return [];}// Filter deprecated plugins\npluginsToLoadFromConfig=pluginsToLoadFromConfig.filter(pluginName=>{if(deprecatedPluginsList.includes(pluginName)){this.logger.warn(DEPRECATED_PLUGIN_WARNING(PLUGINS_MANAGER,pluginName));return false;}return true;});const pluginGroupsToProcess=[{configurationStatus:()=>isDefined(state.dataPlaneEvents.eventsQueuePluginName.value),configurationStatusStr:'Data plane events delivery is enabled',activePluginName:state.dataPlaneEvents.eventsQueuePluginName.value,supportedPlugins:Object.values(DataPlaneEventsTransportToPluginNameMap),shouldAddMissingPlugins:true},{configurationStatus:()=>getNonCloudDestinations(state.nativeDestinations.configuredDestinations.value).length>0,configurationStatusStr:'Device mode destinations are connected to the source',supportedPlugins:['DeviceModeDestinations','NativeDestinationQueue']},{configurationStatus:()=>getNonCloudDestinations(state.nativeDestinations.configuredDestinations.value).some(destination=>destination.shouldApplyDeviceModeTransformation),configurationStatusStr:'Device mode transformations are enabled for at least one destination',supportedPlugins:['DeviceModeTransformation']},{configurationStatus:()=>isDefined(state.consents.activeConsentManagerPluginName.value),configurationStatusStr:'Consent management is enabled',activePluginName:state.consents.activeConsentManagerPluginName.value,supportedPlugins:Object.values(ConsentManagersToPluginNameMap)},{configurationStatus:()=>isDefined(state.storage.encryptionPluginName.value),configurationStatusStr:'Storage encryption is enabled',activePluginName:state.storage.encryptionPluginName.value,supportedPlugins:Object.values(StorageEncryptionVersionsToPluginNameMap)},{configurationStatus:()=>state.storage.migrate.value,configurationStatusStr:'Storage migration is enabled',supportedPlugins:['StorageMigrator']}];const addMissingPlugins=false;pluginGroupsToProcess.forEach(group=>{if(group.configurationStatus()){pluginsToLoadFromConfig=pluginsToLoadFromConfig.filter(group.activePluginName?pluginName=>!(pluginName!==group.activePluginName&&group.supportedPlugins.includes(pluginName)):pluginName=>isDefined(pluginName)// pass through\n);this.addMissingPlugins(group,addMissingPlugins,pluginsToLoadFromConfig);}else {pluginsToLoadFromConfig=pluginsToLoadFromConfig.filter(group.basePlugins!==undefined?pluginName=>!(group.basePlugins.includes(pluginName)||group.supportedPlugins.includes(pluginName)):pluginName=>!group.supportedPlugins.includes(pluginName));}});return [...Object.keys(getMandatoryPluginsMap()),...pluginsToLoadFromConfig];}addMissingPlugins(group,addMissingPlugins,pluginsToLoadFromConfig){const shouldAddMissingPlugins=group.shouldAddMissingPlugins||addMissingPlugins;let pluginsToConfigure;if(group.activePluginName){pluginsToConfigure=[...(group.basePlugins||[]),group.activePluginName];}else {pluginsToConfigure=[...group.supportedPlugins];}const missingPlugins=pluginsToConfigure.filter(pluginName=>!pluginsToLoadFromConfig.includes(pluginName));if(missingPlugins.length>0){if(shouldAddMissingPlugins){pluginsToLoadFromConfig.push(...missingPlugins);}this.logger.warn(generateMisconfiguredPluginsWarning(PLUGINS_MANAGER,group.configurationStatusStr,missingPlugins,shouldAddMissingPlugins));}}/**\n   * Determine the list of plugins that should be activated\n   */setActivePlugins(){const pluginsToLoad=this.getPluginsToLoadBasedOnConfig();// Merging available mandatory and optional plugin name list\nconst availablePlugins=[...Object.keys(pluginsInventory),...pluginNamesList];const activePlugins=[];const failedPlugins=[];pluginsToLoad.forEach(pluginName=>{if(availablePlugins.includes(pluginName)){activePlugins.push(pluginName);}else {failedPlugins.push(pluginName);}});if(failedPlugins.length>0){this.logger.warn(UNKNOWN_PLUGINS_WARNING(PLUGINS_MANAGER,failedPlugins));}n(()=>{state.plugins.totalPluginsToLoad.value=pluginsToLoad.length;state.plugins.activePlugins.value=activePlugins;state.plugins.failedPlugins.value=failedPlugins;});}/**\n   * Register plugins that are direct imports to PluginEngine\n   */registerLocalPlugins(){const unavailablePlugins=[];Object.entries(pluginsInventory).forEach(([pluginName,localPlugin])=>{if(state.plugins.activePlugins.value.includes(pluginName)){if(isFunction(localPlugin)){this.register([localPlugin()]);}else {unavailablePlugins.push(pluginName);}}});if(unavailablePlugins.length>0){state.plugins.failedPlugins.value=[...state.plugins.failedPlugins.value,...unavailablePlugins];this.logger.error(UNAVAILABLE_PLUGINS_ERROR(PLUGINS_MANAGER,unavailablePlugins));}}/**\n   * Register plugins that are dynamic imports to PluginEngine\n   */registerRemotePlugins(){const remotePluginsList=remotePluginsInventory(state.plugins.activePlugins.value);Promise.all(Object.keys(remotePluginsList).map(async remotePluginKey=>{await remotePluginsList[remotePluginKey]().then(remotePluginModule=>this.register([remotePluginModule.default()])).catch(err=>{// TODO: add retry here if dynamic import fails\nstate.plugins.failedPlugins.value=[...state.plugins.failedPlugins.value,remotePluginKey];this.onError(err,`Failed to load plugin \"${remotePluginKey}\"`,err);});})).catch(err=>{this.onError(err);});}/**\n   * Extension point invoke that allows multiple plugins to be registered to it with error handling\n   */invokeMultiple(extPoint,...args){try{return this.engine.invokeMultiple(extPoint,...args);}catch(e){this.onError(e,extPoint);return [];}}/**\n   * Extension point invoke that allows a single plugin to be registered to it with error handling\n   */invokeSingle(extPoint,...args){try{return this.engine.invokeSingle(extPoint,...args);}catch(e){this.onError(e,extPoint);return null;}}/**\n   * Plugin engine register with error handling\n   */register(plugins){plugins.forEach(plugin=>{try{this.engine.register(plugin,state);}catch(e){state.plugins.failedPlugins.value=[...state.plugins.failedPlugins.value,plugin.name];this.onError(e,`Failed to register plugin \"${plugin.name}\"`);}});}// TODO: Implement reset API instead\nunregisterLocalPlugins(){Object.keys(pluginsInventory).forEach(pluginKey=>{try{this.engine.unregister(pluginKey);}catch(e){this.onError(e,`Failed to unregister plugin \"${pluginKey}\"`);}});}/**\n   * Handle errors\n   */onError(error,customMessage,groupingHash){this.errorHandler.onError({error,context:PLUGINS_MANAGER,customMessage,groupingHash});}}\n\nconst COOKIE_STORAGE='cookieStorage';const LOCAL_STORAGE='localStorage';const SESSION_STORAGE='sessionStorage';const MEMORY_STORAGE='memoryStorage';const NO_STORAGE='none';const STORAGE_TEST_COOKIE='test_rudder_cookie';const STORAGE_TEST_LOCAL_STORAGE='test_rudder_ls';const STORAGE_TEST_SESSION_STORAGE='test_rudder_ss';\n\nconst userIdKey='rl_user_id';const userTraitsKey='rl_trait';const anonymousUserIdKey='rl_anonymous_id';const groupIdKey='rl_group_id';const groupTraitsKey='rl_group_trait';const pageInitialReferrerKey='rl_page_init_referrer';const pageInitialReferringDomainKey='rl_page_init_referring_domain';const sessionInfoKey='rl_session';const authTokenKey='rl_auth_token';const COOKIE_KEYS={userId:userIdKey,userTraits:userTraitsKey,anonymousId:anonymousUserIdKey,groupId:groupIdKey,groupTraits:groupTraitsKey,initialReferrer:pageInitialReferrerKey,initialReferringDomain:pageInitialReferringDomainKey,sessionInfo:sessionInfoKey,authToken:authTokenKey};\n\nconst STORAGE_TEST_TOP_LEVEL_DOMAIN='__tld__';const CLIENT_DATA_STORE_COOKIE='clientDataInCookie';const CLIENT_DATA_STORE_LS='clientDataInLocalStorage';const CLIENT_DATA_STORE_MEMORY='clientDataInMemory';const CLIENT_DATA_STORE_SESSION='clientDataInSessionStorage';const USER_SESSION_KEYS=['userId','userTraits','anonymousId','groupId','groupTraits','initialReferrer','initialReferringDomain','sessionInfo','authToken'];\n\nconst storageClientDataStoreNameMap={[COOKIE_STORAGE]:CLIENT_DATA_STORE_COOKIE,[LOCAL_STORAGE]:CLIENT_DATA_STORE_LS,[MEMORY_STORAGE]:CLIENT_DATA_STORE_MEMORY,[SESSION_STORAGE]:CLIENT_DATA_STORE_SESSION};\n\n/**\n * Encode.\n */const encode=(value,logger)=>{try{return encodeURIComponent(value);}catch(err){logger?.error(COOKIE_DATA_ENCODING_ERROR,err);return undefined;}};/**\n * Decode\n */const decode=value=>{try{return decodeURIComponent(value);}catch(err){// Do nothing as non-RS SDK cookies may not be URI encoded\nreturn undefined;}};/**\n * Parse cookie `str`\n */const parse=str=>{const obj={};const pairs=str.split(/\\s*;\\s*/);let pair;if(!pairs[0]){return obj;}// TODO: Decode only the cookies that are needed by the SDK\npairs.forEach(pairItem=>{pair=pairItem.split('=');const keyName=pair[0]?decode(pair[0]):undefined;if(keyName){obj[keyName]=pair[1]?decode(pair[1]):undefined;}});return obj;};/**\n * Set cookie `name` to `value`\n */const set=(name,value,optionsConfig,logger)=>{const options={...(optionsConfig||{})};let cookieString=`${encode(name,logger)}=${encode(value,logger)}`;if(isNull(value)){options.maxage=-1;}if(options.maxage){options.expires=new Date(+new Date()+options.maxage);}if(options.path){cookieString+=`; path=${options.path}`;}if(options.domain){cookieString+=`; domain=${options.domain}`;}if(options.expires){cookieString+=`; expires=${options.expires.toUTCString()}`;}if(options.samesite){cookieString+=`; samesite=${options.samesite}`;}if(options.secure){cookieString+=`; secure`;}globalThis.document.cookie=cookieString;};/**\n * Return all cookies\n */const all=()=>{const cookieStringValue=globalThis.document.cookie;return parse(cookieStringValue);};/**\n * Get cookie `name`\n */const get=name=>all()[name];/**\n * Set or get cookie `name` with `value` and `options` object\n */// eslint-disable-next-line func-names\nconst cookie=function(name,value,options,logger){switch(arguments.length){case 4:case 3:case 2:return set(name,value,options,logger);case 1:if(name){return get(name);}return all();default:return all();}};\n\nconst legacyGetHostname=href=>{const l=document.createElement('a');l.href=href;return l.hostname;};/**\n * Levels returns all levels of the given url\n *\n * The method returns an empty array when the hostname is an ip.\n */const levelsFunc=url=>{// This is called before the polyfills load thus new URL cannot be used\nconst host=typeof globalThis.URL!=='function'?legacyGetHostname(url):new URL(url).hostname;const parts=host?.split('.')??[];const last=parts[parts.length-1];const levels=[];// Ip address.\nif(parts.length===4&&last&&last===parseInt(last,10).toString()){return levels;}// Localhost.\nif(parts.length<=1){// Fix to support localhost\nif(parts[0]&&parts[0].indexOf('localhost')!==-1){return ['localhost'];}return levels;}// Create levels.\nfor(let i=parts.length-2;i>=0;i-=1){levels.push(parts.slice(i).join('.'));}return levels;};/**\n * Get the top domain.\n *\n * The function constructs the levels of domain and attempts to set a global\n * cookie on each one when it succeeds it returns the top level domain.\n *\n * The method returns an empty string when the hostname is an ip.\n */const domain=url=>{const levels=levelsFunc(url);// Lookup the real top level one.\n// eslint-disable-next-line unicorn/no-for-loop\nfor(let i=0;i<levels.length;i+=1){const domain=levels[i];const cname=STORAGE_TEST_TOP_LEVEL_DOMAIN;const opts={domain:`${domain.indexOf('localhost')!==-1?'':'.'}${domain}`};try{// Set cookie on domain\ncookie(cname,1,opts);// If successful\nif(cookie(cname)){// Remove cookie from domain\ncookie(cname,null,opts);return domain;}}catch{// Silently continue to next domain level if cookie access is restricted or setting fails\n// Best-effort cleanup to avoid leaking the test cookie\ntry{cookie(cname,null,opts);}catch{// Ignore if we are unable to delete the cookie\n}}}return '';};\n\nconst getDefaultCookieOptions=()=>{const topDomain=`.${domain(globalThis.location.href)}`;return {maxage:DEFAULT_COOKIE_MAX_AGE_MS,path:'/',domain:!topDomain||topDomain==='.'?undefined:topDomain,samesite:'Lax',enabled:true};};const getDefaultLocalStorageOptions=()=>({enabled:true});const getDefaultSessionStorageOptions=()=>({enabled:true});const getDefaultInMemoryStorageOptions=()=>({enabled:true});\n\n/**\n * A storage utility to retain values in memory via Storage interface\n */class InMemoryStorage{isEnabled=true;length=0;data={};constructor(logger){this.options=getDefaultInMemoryStorageOptions();this.logger=logger;}configure(options){this.options=mergeDeepRight(this.options,options??{});this.isEnabled=Boolean(this.options.enabled);return this.options;}setItem(key,value){this.data[key]=value;this.length=Object.keys(this.data).length;return value;}getItem(key){if(key in this.data){return this.data[key];}return null;}removeItem(key){if(key in this.data){delete this.data[key];}this.length=Object.keys(this.data).length;return null;}clear(){this.data={};this.length=0;}key(index){const curKeys=this.keys();return curKeys[index]??null;}keys(){return Object.keys(this.data);}}const defaultInMemoryStorage=new InMemoryStorage(defaultLogger);\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar store$2 = {exports: {}};\n\nvar store$1=store$2.exports;var hasRequiredStore;function requireStore(){if(hasRequiredStore)return store$2.exports;hasRequiredStore=1;(function(module,exports){(function(global,factory){module.exports=factory();})(store$1,function(){function isJSON(obj){obj=JSON.stringify(obj);if(!/^\\{[\\s\\S]*\\}$/.test(obj)){return false;}return true;}function stringify(val){return val===undefined||typeof val===\"function\"?val+'':JSON.stringify(val);}function deserialize(value){if(typeof value!=='string'){return undefined;}try{return JSON.parse(value);}catch(e){return value;}}function isFunction(value){return {}.toString.call(value)===\"[object Function]\";}function isArray(value){return Object.prototype.toString.call(value)===\"[object Array]\";}// https://github.com/jaywcjlove/store.js/pull/8\n// Error: QuotaExceededError\nfunction dealIncognito(storage){var _KEY='_Is_Incognit',_VALUE='yes';try{// NOTE: set default storage when not passed in\nif(!storage){storage=window.localStorage;}storage.setItem(_KEY,_VALUE);storage.removeItem(_KEY);}catch(e){var inMemoryStorage={};inMemoryStorage._data={};inMemoryStorage.setItem=function(id,val){return inMemoryStorage._data[id]=String(val);};inMemoryStorage.getItem=function(id){return inMemoryStorage._data.hasOwnProperty(id)?inMemoryStorage._data[id]:undefined;};inMemoryStorage.removeItem=function(id){return delete inMemoryStorage._data[id];};inMemoryStorage.clear=function(){return inMemoryStorage._data={};};storage=inMemoryStorage;}finally{if(storage.getItem(_KEY)===_VALUE)storage.removeItem(_KEY);}return storage;}// deal QuotaExceededError if user use incognito mode in browser\nvar storage=dealIncognito();function Store(){if(!(this instanceof Store)){return new Store();}}Store.prototype={set:function set(key,val){if(key&&!isJSON(key)){storage.setItem(key,stringify(val));}else if(isJSON(key)){for(var a in key)this.set(a,key[a]);}return this;},get:function get(key){// Return all entries if no key\nif(key===undefined){var ret={};this.forEach(function(key,val){return ret[key]=val;});return ret;}if(key.charAt(0)==='?'){return this.has(key.substr(1));}var args=arguments;if(args.length>1){var dt={};for(var i=0,len=args.length;i<len;i++){var value=deserialize(storage.getItem(args[i]));if(this.has(args[i])){dt[args[i]]=value;}}return dt;}return deserialize(storage.getItem(key));},clear:function clear(){storage.clear();return this;},remove:function remove(key){var val=this.get(key);storage.removeItem(key);return val;},has:function has(key){return {}.hasOwnProperty.call(this.get(),key);},keys:function keys(){var d=[];this.forEach(function(k){d.push(k);});return d;},forEach:function forEach(callback){for(var i=0,len=storage.length;i<len;i++){var key=storage.key(i);callback(key,this.get(key));}return this;},search:function search(str){var arr=this.keys(),dt={};for(var i=0,len=arr.length;i<len;i++){if(arr[i].indexOf(str)>-1)dt[arr[i]]=this.get(arr[i]);}return dt;},len:function len(){return storage.length;}};var _Store=null;function store(key,data){var argm=arguments;var dt=null;if(!_Store)_Store=Store();if(argm.length===0)return _Store.get();if(argm.length===1){if(typeof key===\"string\")return _Store.get(key);if(isJSON(key))return _Store.set(key);}if(argm.length===2&&typeof key===\"string\"){if(!data)return _Store.remove(key);if(data&&typeof data===\"string\")return _Store.set(key,data);if(data&&isFunction(data)){dt=null;dt=data(key,_Store.get(key));store.set(key,dt);}}if(argm.length===2&&isArray(key)&&isFunction(data)){for(var i=0,len=key.length;i<len;i++){dt=data(key[i],_Store.get(key[i]));store.set(key[i],dt);}}return store;}for(var a in Store.prototype)store[a]=Store.prototype[a];return store;});})(store$2);return store$2.exports;}\n\nvar storeExports = requireStore();\nconst store = /*@__PURE__*/getDefaultExportFromCjs(storeExports);\n\nconst isStorageQuotaExceeded=e=>{const matchingNames=['QuotaExceededError','NS_ERROR_DOM_QUOTA_REACHED'];// Everything except Firefox, Firefox\nconst matchingCodes=[22,1014];if(e instanceof DOMException){return matchingNames.includes(e.name)||matchingCodes.includes(e.code);}return false;};// TODO: also check for SecurityErrors\n//  https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage#exceptions\nconst isStorageAvailable=(type=LOCAL_STORAGE,storageInstance,logger)=>{let storage;let testData;const msgPrefix=STORAGE_UNAVAILABILITY_ERROR_PREFIX(CAPABILITIES_MANAGER,type);let reason='unavailable';let isAccessible=true;let errObj;try{switch(type){case MEMORY_STORAGE:return true;case COOKIE_STORAGE:storage=storageInstance;testData=STORAGE_TEST_COOKIE;break;case LOCAL_STORAGE:storage=storageInstance??globalThis.localStorage;testData=STORAGE_TEST_LOCAL_STORAGE;// was STORAGE_TEST_LOCAL_STORAGE in ours and generateUUID() in segment retry one\nbreak;case SESSION_STORAGE:storage=storageInstance??globalThis.sessionStorage;testData=STORAGE_TEST_SESSION_STORAGE;break;default:return false;}if(storage){storage.setItem(testData,'true');if(storage.getItem(testData)){storage.removeItem(testData);return true;}}isAccessible=false;}catch(err){isAccessible=false;errObj=err;if(isStorageQuotaExceeded(err)){reason='full';}}if(!isAccessible){logger?.warn(`${msgPrefix}${reason}.`,errObj);}// if we've have reached here, it means the storage is not available\nreturn false;};\n\n//  check if the get, set overloads and search methods are used at all\n//  if we do, ensure we provide types to support overloads as per storejs docs\n//  https://www.npmjs.com/package/storejs\n/**\n * A storage utility to persist values in localstorage via Storage interface\n */class LocalStorage{isSupportAvailable=true;isEnabled=true;length=0;constructor(logger){this.options=getDefaultLocalStorageOptions();this.logger=logger;}configure(options){this.options=mergeDeepRight(this.options,options??{});this.isSupportAvailable=isStorageAvailable(LOCAL_STORAGE);this.isEnabled=Boolean(this.options.enabled&&this.isSupportAvailable);return this.options;}setItem(key,value){store.set(key,value);this.length=store.len();}// eslint-disable-next-line class-methods-use-this\ngetItem(key){const value=store.get(key);return isUndefined(value)?null:value;}removeItem(key){store.remove(key);this.length=store.len();}clear(){store.clear();this.length=0;}key(index){const curKeys=this.keys();return curKeys[index]??null;}// eslint-disable-next-line class-methods-use-this\nkeys(){return store.keys();}}const defaultLocalStorage=new LocalStorage(defaultLogger);\n\n/**\n * A storage utility to persist values in SessionStorage via Storage interface\n */class SessionStorage{isSupportAvailable=true;isEnabled=true;length=0;constructor(logger){this.options=getDefaultSessionStorageOptions();this.logger=logger;}configure(options){this.options=mergeDeepRight(this.options,options??{});this.isSupportAvailable=isStorageAvailable(SESSION_STORAGE);// when storage is blocked by the user, even accessing the property throws an error\nif(this.isSupportAvailable){this.store=globalThis.sessionStorage;}this.isEnabled=Boolean(this.options.enabled&&this.isSupportAvailable);return this.options;}setItem(key,value){if(!this.store){return;}this.store.setItem(key,value);this.length=this.store.length;}getItem(key){if(!this.store){return null;}const value=this.store.getItem(key);return isUndefined(value)?null:value;}removeItem(key){if(!this.store){return;}this.store.removeItem(key);this.length=this.store.length;}clear(){this.store?.clear();this.length=0;}key(index){return this.store?.key(index)??null;}keys(){const keys=[];if(!this.store){return keys;}for(let i=0;i<this.store.length;i+=1){const key=this.store.key(i);if(key!==null){keys.push(key);}}return keys;}}const defaultSessionStorage=new SessionStorage(defaultLogger);\n\n/**\n * A storage utility to persist values in cookies via Storage interface\n */class CookieStorage{isSupportAvailable=true;isEnabled=true;length=0;constructor(logger){this.logger=logger;}configure(options){if(!this.options){this.options=getDefaultCookieOptions();}this.options=mergeDeepRight(this.options,options??{});if(this.options.sameDomainCookiesOnly){delete this.options.domain;}this.isSupportAvailable=isStorageAvailable(COOKIE_STORAGE,this);this.isEnabled=Boolean(this.options.enabled&&this.isSupportAvailable);return this.options;}setItem(key,value){cookie(key,value,this.options,this.logger);this.length=Object.keys(cookie()).length;return true;}// eslint-disable-next-line class-methods-use-this\ngetItem(key){const value=cookie(key);return isUndefined(value)?null:value;}removeItem(key){const result=this.setItem(key,null);this.length=Object.keys(cookie()).length;return result;}// eslint-disable-next-line class-methods-use-this\nclear(){// Not implemented\n// getting a list of all cookie storage keys and remove all values\n// sounds risky to do as it will take on all top domain cookies\n// better to explicitly clear specific ones if needed\n}key(index){const curKeys=this.keys();return curKeys[index]??null;}// eslint-disable-next-line class-methods-use-this\nkeys(){return Object.keys(cookie());}}const defaultCookieStorage=new CookieStorage(defaultLogger);\n\n/**\n * A utility to retrieve the storage singleton instance by type\n */const getStorageEngine=type=>{switch(type){case LOCAL_STORAGE:return defaultLocalStorage;case SESSION_STORAGE:return defaultSessionStorage;case MEMORY_STORAGE:return defaultInMemoryStorage;case COOKIE_STORAGE:return defaultCookieStorage;default:return defaultInMemoryStorage;}};/**\n * Configure cookie storage singleton\n */const configureCookieStorageEngine=options=>{const cookieStorageOptions=defaultCookieStorage.configure(options);// Update the state with the final cookie storage options\nstate.storage.cookie.value={maxage:cookieStorageOptions.maxage,path:cookieStorageOptions.path,domain:cookieStorageOptions.domain,samesite:cookieStorageOptions.samesite,expires:cookieStorageOptions.expires,secure:cookieStorageOptions.secure};};/**\n * Configure local storage singleton\n */const configureLocalStorageEngine=options=>{defaultLocalStorage.configure(options);};/**\n * Configure in memory storage singleton\n */const configureInMemoryStorageEngine=options=>{defaultInMemoryStorage.configure(options);};/**\n * Configure session storage singleton\n */const configureSessionStorageEngine=options=>{defaultSessionStorage.configure(options);};/**\n * Configure all storage singleton instances\n */const configureStorageEngines=(cookieStorageOptions={},localStorageOptions={},inMemoryStorageOptions={},sessionStorageOptions={})=>{configureCookieStorageEngine(cookieStorageOptions);configureLocalStorageEngine(localStorageOptions);configureInMemoryStorageEngine(inMemoryStorageOptions);configureSessionStorageEngine(sessionStorageOptions);};\n\n/**\n * Store Implementation with dedicated storage\n */class Store{constructor(config,engine,pluginsManager){this.id=config.id;this.name=config.name;this.isEncrypted=config.isEncrypted??false;this.validKeys=config.validKeys??{};this.engine=engine;this.noKeyValidation=Object.keys(this.validKeys).length===0;this.noCompoundKey=config.noCompoundKey;this.originalEngine=this.engine;this.errorHandler=config.errorHandler;this.logger=config.logger;this.pluginsManager=pluginsManager;}/**\n   * Ensure the key is valid and with correct format\n   */createValidKey(key){const{name,id,validKeys,noKeyValidation,noCompoundKey}=this;if(noKeyValidation){return noCompoundKey?key:[name,id,key].join('.');}// validate and return undefined if invalid key\nlet compoundKey;Object.values(validKeys).forEach(validKeyName=>{if(validKeyName===key){compoundKey=noCompoundKey?key:[name,id,key].join('.');}});return compoundKey;}/**\n   * Switch to inMemoryEngine, bringing any existing data with.\n   */swapQueueStoreToInMemoryEngine(){const{name,id,validKeys,noCompoundKey}=this;const inMemoryStorage=getStorageEngine(MEMORY_STORAGE);// grab existing data, but only for this page's queue instance, not all\n// better to keep other queues in localstorage to be flushed later\n// than to pull them into memory and remove them from durable storage\nObject.keys(validKeys).forEach(key=>{const value=this.get(validKeys[key]);const validKey=noCompoundKey?key:[name,id,key].join('.');inMemoryStorage.setItem(validKey,value);// TODO: are we sure we want to drop clientData\n//  if cookies are not available and localstorage is full?\nthis.remove(key);});this.engine=inMemoryStorage;}/**\n   * Set value by key.\n   */set(key,value){const validKey=this.createValidKey(key);if(!validKey){return;}try{// storejs that is used in localstorage engine already stringifies json\nthis.engine.setItem(validKey,this.encrypt(stringifyWithoutCircular(value,false,[],this.logger)));}catch(err){if(isStorageQuotaExceeded(err)){this.logger.warn(STORAGE_QUOTA_EXCEEDED_WARNING(`Store ${this.id}`));// switch to inMemory engine\nthis.swapQueueStoreToInMemoryEngine();// and save it there\nthis.set(key,value);}else {const customMessage=STORE_DATA_SAVE_ERROR(key);this.onError(err,customMessage,customMessage);}}}/**\n   * Get by Key.\n   */get(key){const validKey=this.createValidKey(key);let decryptedValue;try{if(!validKey){return null;}decryptedValue=this.decrypt(this.engine.getItem(validKey));if(isNullOrUndefined(decryptedValue)||decryptedValue===''){return null;}// storejs that is used in localstorage engine already deserializes json strings but swallows errors\nreturn JSON.parse(decryptedValue);}catch(err){const encryptionPluginName=state.storage.encryptionPluginName.value;// Skip error reporting only when the encryption plugin is configured but failed to load\nconst shouldReportError=!encryptionPluginName||!state.plugins.failedPlugins.value.includes(encryptionPluginName);if(shouldReportError){const customMessage=STORE_DATA_FETCH_ERROR(key);this.onError(err,customMessage,customMessage);}return null;}}/**\n   * Remove by Key.\n   */remove(key){const validKey=this.createValidKey(key);if(validKey){this.engine.removeItem(validKey);}}/**\n   * Get original engine\n   */getOriginalEngine(){return this.originalEngine;}/**\n   * Decrypt values\n   */decrypt(value){if(isNullOrUndefined(value)){return null;}return this.crypto(value,'decrypt');}/**\n   * Encrypt value\n   */encrypt(value){return this.crypto(value,'encrypt');}/**\n   * Extension point to use with encryption plugins\n   */crypto(value,mode){const noEncryption=!this.isEncrypted||!value||typeof value!=='string'||trim(value)==='';if(noEncryption){return value;}const extensionPointName=`storage.${mode}`;const formattedValue=this.pluginsManager?this.pluginsManager.invokeSingle(extensionPointName,value):value;return typeof formattedValue==='undefined'?value:formattedValue??'';}/**\n   * Handle errors\n   */onError(error,customMessage,groupingHash){this.errorHandler.onError({error,context:`Store ${this.id}`,customMessage,groupingHash});}}\n\nconst getStorageTypeFromPreConsentIfApplicable=(state,sessionKey)=>{let overriddenStorageType;if(state.consents.preConsent.value.enabled){switch(state.consents.preConsent.value.storage?.strategy){case 'none':overriddenStorageType=NO_STORAGE;break;case 'session':if(sessionKey!=='sessionInfo'){overriddenStorageType=NO_STORAGE;}break;case 'anonymousId':if(sessionKey!=='anonymousId'){overriddenStorageType=NO_STORAGE;}break;}}return overriddenStorageType;};\n\n/**\n * A service to manage stores & available storage client configurations\n */class StoreManager{stores={};isInitialized=false;constructor(pluginsManager,errorHandler,logger){this.errorHandler=errorHandler;this.logger=logger;this.pluginsManager=pluginsManager;}/**\n   * Configure available storage client instances\n   */init(){if(this.isInitialized){return;}const loadOptions=state.loadOptions.value;const config={cookieStorageOptions:{samesite:loadOptions.sameSiteCookie,secure:loadOptions.secureCookie,domain:loadOptions.setCookieDomain,sameDomainCookiesOnly:loadOptions.sameDomainCookiesOnly},localStorageOptions:{},inMemoryStorageOptions:{},sessionStorageOptions:{}};configureStorageEngines(removeUndefinedValues(mergeDeepRight(config.cookieStorageOptions??{},state.storage.cookie?.value??{})),removeUndefinedValues(config.localStorageOptions),removeUndefinedValues(config.inMemoryStorageOptions),removeUndefinedValues(config.sessionStorageOptions));this.initClientDataStores();this.isInitialized=true;}/**\n   * Create store to persist data used by the SDK like session, used details etc\n   */initClientDataStores(){this.initializeStorageState();// TODO: fill in extra config values and bring them in from StoreManagerOptions if needed\n// TODO: should we pass the keys for all in order to validate or leave free as v1.1?\n// Initializing all the enabled store because previous user data might be in different storage\n// that needs auto migration\nconst storageTypes=[MEMORY_STORAGE,LOCAL_STORAGE,COOKIE_STORAGE,SESSION_STORAGE];storageTypes.forEach(storageType=>{if(getStorageEngine(storageType)?.isEnabled){this.setStore({id:storageClientDataStoreNameMap[storageType],name:storageClientDataStoreNameMap[storageType],isEncrypted:true,noCompoundKey:true,type:storageType,errorHandler:this.errorHandler,logger:this.logger});}});}initializeStorageState(){let globalStorageType=state.storage.type.value;let entriesOptions=state.loadOptions.value.storage?.entries;// Use the storage options from post consent if anything is defined\nconst postConsentStorageOpts=state.consents.postConsent.value.storage;if(isDefined(postConsentStorageOpts?.type)||isDefined(postConsentStorageOpts?.entries)){globalStorageType=postConsentStorageOpts?.type;entriesOptions=postConsentStorageOpts?.entries;}let trulyAnonymousTracking=true;let storageEntries={};USER_SESSION_KEYS.forEach(sessionKey=>{const key=sessionKey;const storageKey=sessionKey;const configuredStorageType=entriesOptions?.[key]?.type;const preConsentStorageType=getStorageTypeFromPreConsentIfApplicable(state,sessionKey);// Storage type precedence order: pre-consent strategy > entry type > global type > default\nconst storageType=preConsentStorageType??configuredStorageType??globalStorageType??DEFAULT_STORAGE_TYPE;const finalStorageType=this.getResolvedStorageTypeForEntry(storageType,sessionKey);if(finalStorageType!==NO_STORAGE){trulyAnonymousTracking=false;}storageEntries={...storageEntries,[sessionKey]:{type:finalStorageType,key:COOKIE_KEYS[storageKey]}};});n(()=>{state.storage.type.value=globalStorageType;state.storage.entries.value=storageEntries;state.storage.trulyAnonymousTracking.value=trulyAnonymousTracking;});}getResolvedStorageTypeForEntry(storageType,sessionKey){let finalStorageType=storageType;switch(storageType){case LOCAL_STORAGE:if(!getStorageEngine(LOCAL_STORAGE)?.isEnabled){finalStorageType=MEMORY_STORAGE;}break;case SESSION_STORAGE:if(!getStorageEngine(SESSION_STORAGE)?.isEnabled){finalStorageType=MEMORY_STORAGE;}break;case MEMORY_STORAGE:case NO_STORAGE:break;case COOKIE_STORAGE:default:// First try setting the storage to cookie else to local storage\nif(getStorageEngine(COOKIE_STORAGE)?.isEnabled){finalStorageType=COOKIE_STORAGE;}else if(getStorageEngine(LOCAL_STORAGE)?.isEnabled){finalStorageType=LOCAL_STORAGE;}else if(getStorageEngine(SESSION_STORAGE)?.isEnabled){finalStorageType=SESSION_STORAGE;}else {finalStorageType=MEMORY_STORAGE;}break;}if(finalStorageType!==storageType){this.logger.warn(STORAGE_UNAVAILABLE_WARNING(STORE_MANAGER,sessionKey,storageType,finalStorageType));}return finalStorageType;}/**\n   * Create a new store\n   */setStore(storeConfig){const storageEngine=getStorageEngine(storeConfig.type);this.stores[storeConfig.id]=new Store(storeConfig,storageEngine,this.pluginsManager);return this.stores[storeConfig.id];}/**\n   * Retrieve a store\n   */getStore(id){return this.stores[id];}}\n\nconst isValidSourceConfig=res=>isObjectLiteralAndNotNull(res)&&isObjectLiteralAndNotNull(res.source)&&!isNullOrUndefined(res.source.id)&&isObjectLiteralAndNotNull(res.source.config)&&Array.isArray(res.source.destinations);const isValidStorageType=storageType=>typeof storageType==='string'&&SUPPORTED_STORAGE_TYPES.includes(storageType);const getTopDomain=url=>{// Create a URL object\nconst urlObj=new URL(url);// Extract the host and protocol\nconst{host,protocol}=urlObj;// Split the host into parts\nconst parts=host.split('.');let topDomain;// Handle different cases, especially for co.uk or similar TLDs\nif(parts.length>2){// Join the last two parts for the top-level domain\ntopDomain=`${parts[parts.length-2]}.${parts[parts.length-1]}`;}else {// If only two parts or less, return as it is\ntopDomain=host;}return {topDomain,protocol};};const getTopDomainUrl=url=>{const{topDomain,protocol}=getTopDomain(url);return `${protocol}//${topDomain}`;};const getDataServiceUrl=(endpoint,useExactDomain)=>{const url=useExactDomain?window.location.origin:getTopDomainUrl(window.location.href);const formattedEndpoint=endpoint.startsWith('/')?endpoint.substring(1):endpoint;return `${url}/${formattedEndpoint}`;};const isWebpageTopLevelDomain=providedDomain=>{const{topDomain}=getTopDomain(window.location.href);return topDomain===providedDomain;};\n\n/**\n * Removes trailing slash from url\n * @param url\n * @returns url\n */const removeTrailingSlashes=url=>url?.endsWith('/')?removeTrailingSlashes(url.substring(0,url.length-1)):url;const getDomain=url=>{try{const urlObj=new URL(url);return urlObj.host;}catch(error){return null;}};/**\n * Get the referring domain from the referrer URL\n * @param referrer Page referrer\n * @returns Page referring domain\n */const getReferringDomain=referrer=>getDomain(referrer)??'';/**\n * Extracts UTM parameters from the URL\n * @param url Page URL\n * @returns UTM parameters\n */const extractUTMParameters=url=>{const result={};try{const urlObj=new URL(url);const UTM_PREFIX='utm_';urlObj.searchParams.forEach((value,sParam)=>{if(sParam.startsWith(UTM_PREFIX)){let utmParam=sParam.substring(UTM_PREFIX.length);// Not sure why we're doing this\nif(utmParam==='campaign'){utmParam='name';}result[utmParam]=value;}});}catch(error){// Do nothing\n}return result;};/**\n * To get the URL until the hash\n * @param url The input URL\n * @returns URL until the hash\n */const getUrlWithoutHash=url=>{let urlWithoutHash=url;try{const urlObj=new URL(url);urlWithoutHash=urlObj.origin+urlObj.pathname+urlObj.search;}catch(error){// Do nothing\n}return urlWithoutHash;};\n\nconst removeDuplicateSlashes=str=>str.replace(/\\/{2,}/g,'/');/**\n * Checks if provided url is valid or not\n * @param url\n * @returns true if `url` is valid and false otherwise\n */const isValidURL=url=>{if(!isString(url)){return false;}try{// If URL is supported by the browser, we can use it to validate the URL\n// Otherwise, we can at least check if the URL matches the pattern\nif(isFunction(globalThis.URL)){// eslint-disable-next-line no-new\nnew URL(url);}return URL_PATTERN.test(url);}catch(e){return false;}};\n\nconst DEFAULT_PRE_CONSENT_STORAGE_STRATEGY='none';const DEFAULT_PRE_CONSENT_EVENTS_DELIVERY_TYPE='immediate';\n\nconst isErrorReportingEnabled=sourceConfig=>sourceConfig?.statsCollection?.errors?.enabled===true;const isMetricsReportingEnabled=sourceConfig=>sourceConfig?.statsCollection?.metrics?.enabled===true;\n\n/**\n * Validates and normalizes the consent options provided by the user\n * @param options Consent options provided by the user\n * @returns Validated and normalized consent options\n */const getValidPostConsentOptions=options=>{const validOptions={sendPageEvent:false,trackConsent:false,discardPreConsentEvents:false};if(isObjectLiteralAndNotNull(options)){const clonedOptions=clone(options);validOptions.storage=clonedOptions.storage;if(isNonEmptyObject(clonedOptions.integrations)){validOptions.integrations=clonedOptions.integrations;}validOptions.discardPreConsentEvents=clonedOptions.discardPreConsentEvents===true;validOptions.sendPageEvent=clonedOptions.sendPageEvent===true;validOptions.trackConsent=clonedOptions.trackConsent===true;if(isNonEmptyObject(clonedOptions.consentManagement)){// Override enabled value with the current state value\nvalidOptions.consentManagement=mergeDeepRight(clonedOptions.consentManagement,{enabled:state.consents.enabled.value});}}return validOptions;};/**\n * Validates if the input is a valid consents data\n * @param value Input consents data\n * @returns true if the input is a valid consents data else false\n */const isValidConsentsData=value=>isNonEmptyObject(value)||Array.isArray(value);/**\n * Retrieves the corresponding provider and plugin name of the selected consent manager from the supported consent managers\n * @param consentManagementOpts consent management options\n * @param logger logger instance\n * @returns Corresponding provider and plugin name of the selected consent manager from the supported consent managers\n */const getConsentManagerInfo=(consentManagementOpts,logger)=>{let{provider}=consentManagementOpts;const consentManagerPluginName=provider?ConsentManagersToPluginNameMap[provider]:undefined;if(provider&&!consentManagerPluginName){logger.error(UNSUPPORTED_CONSENT_MANAGER_ERROR(CONFIG_MANAGER,provider,ConsentManagersToPluginNameMap));// Reset the provider value\nprovider=undefined;}return {provider,consentManagerPluginName};};/**\n * Validates and converts the consent management options into a normalized format\n * @param consentManagementOpts Consent management options provided by the user\n * @param logger logger instance\n * @returns An object containing the consent manager plugin name, initialized, enabled and consents data\n */const getConsentManagementData=(consentManagementOpts,logger)=>{let consentManagerPluginName;let allowedConsentIds=[];let deniedConsentIds=[];let initialized=false;let provider;let enabled=consentManagementOpts?.enabled===true;if(isNonEmptyObject(consentManagementOpts)&&enabled){// Get the corresponding plugin name of the selected consent manager from the supported consent managers\n({provider,consentManagerPluginName}=getConsentManagerInfo(consentManagementOpts,logger));if(isValidConsentsData(consentManagementOpts.allowedConsentIds)){allowedConsentIds=consentManagementOpts.allowedConsentIds;initialized=true;}if(isValidConsentsData(consentManagementOpts.deniedConsentIds)){deniedConsentIds=consentManagementOpts.deniedConsentIds;initialized=true;}}const consentsData={allowedConsentIds,deniedConsentIds};// Enable consent management only if consent manager is supported\nenabled=enabled&&Boolean(consentManagerPluginName);return {provider,consentManagerPluginName,initialized,enabled,consentsData};};\n\n/**\n * Determines the SDK URL\n * @returns sdkURL\n */const getSDKUrl=()=>{// First try the new method of getting the SDK URL\n// from the script tag\nconst scriptTag=document.querySelector('script[data-rsa-write-key]');if(scriptTag&&scriptTag.dataset.rsaWriteKey===state.lifecycle.writeKey.value){return scriptTag.src;}// If the new method fails, try the old method\n// TODO: We need to remove this once all the customers upgrade to the\n// latest SDK loading snippet\nconst scripts=document.getElementsByTagName('script');const sdkFileNameRegex=/(?:^|\\/)rsa(\\.min)?\\.js$/;// eslint-disable-next-line no-restricted-syntax\nfor(const script of scripts){const src=script.getAttribute('src');if(src&&sdkFileNameRegex.test(src)){return src;}}return undefined;};/**\n * Updates the reporting state variables from the source config data\n * @param res Source config\n * @param logger Logger instance\n */const updateReportingState=res=>{state.reporting.isErrorReportingEnabled.value=isErrorReportingEnabled(res.source.config)&&!isSDKRunningInChromeExtension();state.reporting.isMetricsReportingEnabled.value=isMetricsReportingEnabled(res.source.config);};const getServerSideCookiesStateData=logger=>{const{useServerSideCookies,dataServiceEndpoint,storage:storageOptsFromLoad,setCookieDomain,sameDomainCookiesOnly}=state.loadOptions.value;let cookieOptions=storageOptsFromLoad?.cookie;let sscEnabled=false;let finalDataServiceUrl;if(useServerSideCookies){sscEnabled=useServerSideCookies;const providedCookieDomain=cookieOptions.domain??setCookieDomain;/**\n     * Based on the following conditions, we decide whether to use the exact domain or not to determine the data service URL:\n     * 1. If the cookie domain is provided and it is not a top-level domain, then use the exact domain\n     * 2. If the sameDomainCookiesOnly flag is set to true, then use the exact domain\n     */const useExactDomain=isDefined(providedCookieDomain)&&!isWebpageTopLevelDomain(removeLeadingPeriod(providedCookieDomain))||sameDomainCookiesOnly;const dataServiceUrl=getDataServiceUrl(dataServiceEndpoint??DEFAULT_DATA_SERVICE_ENDPOINT,useExactDomain);if(isValidURL(dataServiceUrl)){finalDataServiceUrl=removeTrailingSlashes(dataServiceUrl);const curHost=getDomain(window.location.href);const dataServiceHost=getDomain(dataServiceUrl);// If the current host is different from the data service host, then it is a cross-site request\n// For server-side cookies to work, we need to set the SameSite=None and Secure attributes\n// One round of cookie options manipulation is taking place here\n// Based on these(setCookieDomain/storage.cookie or sameDomainCookiesOnly) two load-options, final cookie options are set in the storage module\n// TODO: Refactor the cookie options manipulation logic in one place\nif(curHost!==dataServiceHost){cookieOptions={...cookieOptions,samesite:'None',secure:true};}/**\n       * If the sameDomainCookiesOnly flag is not set and the cookie domain is provided(not top level domain),\n       * and the data service host is different from the provided cookie domain, then we disable server-side cookies\n       * ex: provided cookie domain: 'random.com', data service host: 'sub.example.com'\n       */if(!sameDomainCookiesOnly&&useExactDomain&&dataServiceHost!==removeLeadingPeriod(providedCookieDomain)){sscEnabled=false;logger.warn(SERVER_SIDE_COOKIE_FEATURE_OVERRIDE_WARNING(CONFIG_MANAGER,providedCookieDomain,dataServiceHost));}}else {sscEnabled=false;}}return {sscEnabled,cookieOptions,finalDataServiceUrl};};const updateStorageStateFromLoadOptions=logger=>{const{storage:storageOptsFromLoad}=state.loadOptions.value;let storageType=storageOptsFromLoad?.type;if(isDefined(storageType)&&!isValidStorageType(storageType)){logger.warn(STORAGE_TYPE_VALIDATION_WARNING(CONFIG_MANAGER,storageType,DEFAULT_STORAGE_TYPE));storageType=DEFAULT_STORAGE_TYPE;}let storageEncryptionVersion=storageOptsFromLoad?.encryption?.version;const encryptionPluginName=storageEncryptionVersion&&StorageEncryptionVersionsToPluginNameMap[storageEncryptionVersion];if(!isUndefined(storageEncryptionVersion)&&isUndefined(encryptionPluginName)){// set the default encryption plugin\nlogger.warn(UNSUPPORTED_STORAGE_ENCRYPTION_VERSION_WARNING(CONFIG_MANAGER,storageEncryptionVersion,StorageEncryptionVersionsToPluginNameMap,DEFAULT_STORAGE_ENCRYPTION_VERSION));storageEncryptionVersion=DEFAULT_STORAGE_ENCRYPTION_VERSION;}else if(isUndefined(storageEncryptionVersion)){storageEncryptionVersion=DEFAULT_STORAGE_ENCRYPTION_VERSION;}// Allow migration only if the configured encryption version is the default encryption version\nconst configuredMigrationValue=storageOptsFromLoad?.migrate;const finalMigrationVal=configuredMigrationValue&&storageEncryptionVersion===DEFAULT_STORAGE_ENCRYPTION_VERSION;if(configuredMigrationValue===true&&finalMigrationVal!==configuredMigrationValue){logger.warn(STORAGE_DATA_MIGRATION_OVERRIDE_WARNING(CONFIG_MANAGER,storageEncryptionVersion,DEFAULT_STORAGE_ENCRYPTION_VERSION));}const{sscEnabled,finalDataServiceUrl,cookieOptions}=getServerSideCookiesStateData(logger);n(()=>{state.storage.type.value=storageType;state.storage.cookie.value=cookieOptions;state.serverCookies.isEnabledServerSideCookies.value=sscEnabled;state.serverCookies.dataServiceUrl.value=finalDataServiceUrl;state.storage.encryptionPluginName.value=StorageEncryptionVersionsToPluginNameMap[storageEncryptionVersion];state.storage.migrate.value=finalMigrationVal;});};const updateConsentsStateFromLoadOptions=logger=>{const{provider,consentManagerPluginName,initialized,enabled,consentsData}=getConsentManagementData(state.loadOptions.value.consentManagement,logger);// Pre-consent\nconst preConsentOpts=state.loadOptions.value.preConsent;let storageStrategy=preConsentOpts?.storage?.strategy??DEFAULT_PRE_CONSENT_STORAGE_STRATEGY;const StorageStrategies=['none','session','anonymousId'];if(isDefined(storageStrategy)&&!StorageStrategies.includes(storageStrategy)){storageStrategy=DEFAULT_PRE_CONSENT_STORAGE_STRATEGY;logger.warn(UNSUPPORTED_PRE_CONSENT_STORAGE_STRATEGY(CONFIG_MANAGER,preConsentOpts?.storage?.strategy,DEFAULT_PRE_CONSENT_STORAGE_STRATEGY));}let eventsDeliveryType=preConsentOpts?.events?.delivery??DEFAULT_PRE_CONSENT_EVENTS_DELIVERY_TYPE;const deliveryTypes=['immediate','buffer'];if(isDefined(eventsDeliveryType)&&!deliveryTypes.includes(eventsDeliveryType)){eventsDeliveryType=DEFAULT_PRE_CONSENT_EVENTS_DELIVERY_TYPE;logger.warn(UNSUPPORTED_PRE_CONSENT_EVENTS_DELIVERY_TYPE(CONFIG_MANAGER,preConsentOpts?.events?.delivery,DEFAULT_PRE_CONSENT_EVENTS_DELIVERY_TYPE));}n(()=>{state.consents.activeConsentManagerPluginName.value=consentManagerPluginName;state.consents.initialized.value=initialized;state.consents.enabled.value=enabled;state.consents.data.value=consentsData;state.consents.provider.value=provider;state.consents.preConsent.value={// Only enable pre-consent if it is explicitly enabled and\n// if it is not already initialized and\n// if consent management is enabled\nenabled:state.loadOptions.value.preConsent?.enabled===true&&initialized===false&&enabled===true,storage:{strategy:storageStrategy},events:{delivery:eventsDeliveryType}};});};/**\n * Determines the consent management state variables from the source config data\n * @param resp Source config response\n * @param logger Logger instance\n */const updateConsentsState=resp=>{let resolutionStrategy=state.consents.resolutionStrategy.value;let cmpMetadata;if(isObjectLiteralAndNotNull(resp.consentManagementMetadata)){if(state.consents.provider.value){resolutionStrategy=resp.consentManagementMetadata.providers.find(p=>p.provider===state.consents.provider.value)?.resolutionStrategy??state.consents.resolutionStrategy.value;}cmpMetadata=resp.consentManagementMetadata;}// If the provider is custom, then the resolution strategy is not applicable\nif(state.consents.provider.value==='custom'){resolutionStrategy=undefined;}n(()=>{state.consents.metadata.value=clone(cmpMetadata);state.consents.resolutionStrategy.value=resolutionStrategy;});};const updateDataPlaneEventsStateFromLoadOptions=logger=>{if(state.dataPlaneEvents.deliveryEnabled.value){const defaultEventsQueuePluginName='XhrQueue';let eventsQueuePluginName=defaultEventsQueuePluginName;if(state.loadOptions.value.useBeacon){if(state.capabilities.isBeaconAvailable.value){eventsQueuePluginName='BeaconQueue';}else {eventsQueuePluginName=defaultEventsQueuePluginName;logger.warn(UNSUPPORTED_BEACON_API_WARNING(CONFIG_MANAGER));}}n(()=>{state.dataPlaneEvents.eventsQueuePluginName.value=eventsQueuePluginName;});}};const getSourceConfigURL=(configUrl,writeKey,lockIntegrationsVersion,lockPluginsVersion,logger)=>{const defSearchParams=new URLSearchParams({p:MODULE_TYPE,v:APP_VERSION,build:BUILD_TYPE,writeKey,lockIntegrationsVersion:lockIntegrationsVersion.toString(),lockPluginsVersion:lockPluginsVersion.toString()});let origin=DEFAULT_CONFIG_BE_URL;let searchParams=defSearchParams;let pathname='/sourceConfig/';let hash='';if(isValidURL(configUrl)){const configUrlInstance=new URL(configUrl);if(!removeTrailingSlashes(configUrlInstance.pathname).endsWith('/sourceConfig')){configUrlInstance.pathname=`${removeTrailingSlashes(configUrlInstance.pathname)}/sourceConfig/`;}configUrlInstance.pathname=removeDuplicateSlashes(configUrlInstance.pathname);defSearchParams.forEach((value,key)=>{if(configUrlInstance.searchParams.get(key)===null){configUrlInstance.searchParams.set(key,value);}});origin=configUrlInstance.origin;pathname=configUrlInstance.pathname;searchParams=configUrlInstance.searchParams;hash=configUrlInstance.hash;}else {logger.warn(INVALID_CONFIG_URL_WARNING(CONFIG_MANAGER,configUrl));}return `${origin}${pathname}?${searchParams}${hash}`;};/**\n * Transforms destinations config from source config response to Destination format\n * @param destinations Array of destination items from config response\n * @returns Array of transformed Destination objects\n */const getDestinationsFromConfig=destinations=>destinations.map(destination=>({id:destination.id,displayName:destination.destinationDefinition.displayName,enabled:destination.enabled,config:destination.config,shouldApplyDeviceModeTransformation:destination.shouldApplyDeviceModeTransformation??false,propagateEventsUntransformedOnError:destination.propagateEventsUntransformedOnError??false,userFriendlyId:getDestinationUserFriendlyId(destination.destinationDefinition.displayName,destination.id),isCustomIntegration:destination.destinationDefinition.displayName===CUSTOM_DEVICE_MODE_DESTINATION_DISPLAY_NAME}));\n\n/**\n * A function that determines the base URL for the integrations or plugins SDK\n * @param componentType The type of the component (integrations or plugins)\n * @param pathSuffix The path suffix to be appended to the base URL (js-integrations or plugins)\n * @param defaultComponentUrl The default URL to be used if the user has not provided a custom URL\n * @param currentSdkVersion The current version of the SDK\n * @param lockVersion Flag to lock the version of the component\n * @param urlFromLoadOptions The URL provided by the user in the load options\n * @param logger Logger instance\n * @returns The base URL for the integrations or plugins SDK\n */const getSDKComponentBaseURL=(componentType,pathSuffix,defaultComponentUrl,currentSdkVersion,lockVersion,urlFromLoadOptions,logger)=>{let sdkComponentBaseURL;// If the user has provided a custom URL, then validate, clean up and use it\nif(urlFromLoadOptions){if(!isValidURL(urlFromLoadOptions)){logger.error(COMPONENT_BASE_URL_ERROR(CONFIG_MANAGER,componentType,urlFromLoadOptions));return null;}sdkComponentBaseURL=removeTrailingSlashes(urlFromLoadOptions);}else {sdkComponentBaseURL=defaultComponentUrl;// We can automatically determine the base URL only for CDN installations\nif(state.context.app.value.installType==='cdn'){const sdkURL=getSDKUrl();if(sdkURL){// Extract the base URL from the core SDK file URL\n// and append the path suffix to it\nsdkComponentBaseURL=sdkURL.split('/').slice(0,-1).concat(pathSuffix).join('/');}}}// If the version needs to be locked, then replace the major version in the URL\n// with the current version of the SDK\nif(lockVersion){sdkComponentBaseURL=sdkComponentBaseURL.replace(new RegExp(`/${CDN_ARCH_VERSION_DIR}/${BUILD_TYPE}/${pathSuffix}$`),`/${currentSdkVersion}/${BUILD_TYPE}/${pathSuffix}`);}return sdkComponentBaseURL;};/**\n * A function that determines integration SDK loading path\n * @param currentSdkVersion Current SDK version\n * @param lockIntegrationsVersion Flag to lock the integrations version\n * @param integrationsUrlFromLoadOptions URL to load the integrations from as provided by the user\n * @param logger Logger instance\n * @returns\n */const getIntegrationsCDNPath=(currentSdkVersion,lockIntegrationsVersion,integrationsUrlFromLoadOptions,logger)=>getSDKComponentBaseURL('integrations',CDN_INT_DIR,DEFAULT_INTEGRATION_SDKS_URL,currentSdkVersion,lockIntegrationsVersion,integrationsUrlFromLoadOptions,logger);/**\n * A function that determines plugins SDK loading path\n * @param currentSdkVersion Current SDK version\n * @param lockPluginsVersion Flag to lock the plugins version\n * @param pluginsUrlFromLoadOptions URL to load the plugins from as provided by the user\n * @param logger Logger instance\n * @returns Final plugins CDN path\n */const getPluginsCDNPath=(currentSdkVersion,lockPluginsVersion,pluginsUrlFromLoadOptions,logger)=>getSDKComponentBaseURL('plugins',CDN_PLUGINS_DIR,DEFAULT_PLUGINS_URL,currentSdkVersion,lockPluginsVersion,pluginsUrlFromLoadOptions,logger);\n\nclass ConfigManager{constructor(httpClient,errorHandler,logger){this.errorHandler=errorHandler;this.logger=logger;this.httpClient=httpClient;this.onError=this.onError.bind(this);this.processConfig=this.processConfig.bind(this);}attachEffects(){j(()=>{this.logger.setMinLogLevel(state.lifecycle.logLevel.value);});}/**\n   * A function to validate, construct and store loadOption, lifecycle, source and destination\n   * config related information in global state\n   */init(){const{logLevel,configUrl,lockIntegrationsVersion,lockPluginsVersion,destSDKBaseURL,pluginsSDKBaseURL,integrations}=state.loadOptions.value;// determine the path to fetch integration SDK from\nconst intgCdnUrl=getIntegrationsCDNPath(APP_VERSION,lockIntegrationsVersion,destSDKBaseURL,this.logger);if(isNull(intgCdnUrl)){return;}let pluginsCDNPath;{// determine the path to fetch remote plugins from\npluginsCDNPath=getPluginsCDNPath(APP_VERSION,lockPluginsVersion,pluginsSDKBaseURL,this.logger);}if(pluginsCDNPath===null){return;}this.attachEffects();state.lifecycle.activeDataplaneUrl.value=removeTrailingSlashes(state.lifecycle.dataPlaneUrl.value);updateStorageStateFromLoadOptions(this.logger);updateConsentsStateFromLoadOptions(this.logger);updateDataPlaneEventsStateFromLoadOptions(this.logger);// set application lifecycle state in global state\nn(()=>{state.lifecycle.integrationsCDNPath.value=intgCdnUrl;state.lifecycle.pluginsCDNPath.value=pluginsCDNPath;if(logLevel){state.lifecycle.logLevel.value=logLevel;}state.lifecycle.sourceConfigUrl.value=getSourceConfigURL(configUrl,state.lifecycle.writeKey.value,lockIntegrationsVersion,lockPluginsVersion,this.logger);state.metrics.metricsServiceUrl.value=`${state.lifecycle.activeDataplaneUrl.value}/${METRICS_SERVICE_ENDPOINT}`;// Data in the loadOptions state is already normalized\nstate.nativeDestinations.loadOnlyIntegrations.value=integrations;});this.getConfig();}/**\n   * Handle errors\n   */onError(error,customMessage,groupingHash){this.errorHandler.onError({error,context:CONFIG_MANAGER,customMessage,groupingHash});}/**\n   * A callback function that is executed once we fetch the source config response.\n   * Use to construct and store information that are dependent on the sourceConfig.\n   */processConfig(response,details){// TODO: add retry logic with backoff based on rejectionDetails.xhr.status\n// We can use isErrRetryable utility method\nif(!isDefined(response)){if(isDefined(details)){this.onError(details.error,SOURCE_CONFIG_FETCH_ERROR);}else {this.onError(new Error(SOURCE_CONFIG_FETCH_ERROR));}return;}let res;try{if(isString(response)){res=JSON.parse(response);}else {res=response;}}catch(err){this.onError(err,SOURCE_CONFIG_RESOLUTION_ERROR);return;}if(!isValidSourceConfig(res)){this.onError(new Error(SOURCE_CONFIG_RESOLUTION_ERROR));return;}// Log error and abort if source is disabled\nif(res.source.enabled===false){this.logger.error(SOURCE_DISABLED_ERROR);return;}// set the values in state for reporting slice\nupdateReportingState(res);const nativeDestinations=res.source.destinations.length>0?getDestinationsFromConfig(res.source.destinations):[];// set in the state --> source, destination, lifecycle, reporting\nn(()=>{// set source related information in state\nstate.source.value={config:res.source.config,name:res.source.name,id:res.source.id,workspaceId:res.source.workspaceId};// set device mode destination related information in state\nstate.nativeDestinations.configuredDestinations.value=nativeDestinations;// set the desired optional plugins\nstate.plugins.pluginsToLoadFromConfig.value=state.loadOptions.value.plugins??[];updateConsentsState(res);// set application lifecycle state\nstate.lifecycle.status.value='configured';});}/**\n   * A function to fetch source config either from /sourceConfig endpoint\n   * or from getSourceConfig load option\n   * @returns\n   */getConfig(){const sourceConfigFunc=state.loadOptions.value.getSourceConfig;if(sourceConfigFunc){if(!isFunction(sourceConfigFunc)){this.logger.error(SOURCE_CONFIG_OPTION_ERROR(CONFIG_MANAGER));return;}// Fetch source config from the function\nconst res=sourceConfigFunc();if(res instanceof Promise){res.then(pRes=>this.processConfig(pRes)).catch(err=>{this.onError(err,'SourceConfig');});}else {this.processConfig(res);}}else {// Fetch source configuration from the configured URL\nthis.httpClient.getAsyncData({url:state.lifecycle.sourceConfigUrl.value,options:{headers:{'Content-Type':undefined}},callback:this.processConfig});}}}\n\n/**\n * To get the timezone of the user\n *\n * @returns string\n */const getTimezone=()=>{// Not susceptible to super-linear backtracking\n// eslint-disable-next-line sonarjs/slow-regex\nconst timezone=/([A-Z]+[+-]\\d+)/.exec(new Date().toString());return timezone?.[1]?timezone[1]:'NA';};\n\n/**\n * Get the referrer URL\n * @returns The referrer URL\n */const getReferrer=(getDocument=()=>document)=>getDocument()?.referrer||'$direct';/**\n * To get the canonical URL of the page\n * @returns canonical URL\n */const getCanonicalUrl=(getDocument=()=>document)=>{const docInstance=getDocument();const tags=docInstance.getElementsByTagName('link');let canonicalUrl='';for(let i=0;tags[i];i+=1){const tag=tags[i];if(tag.getAttribute('rel')==='canonical'&&!canonicalUrl){canonicalUrl=tag.getAttribute('href')??'';break;}}return canonicalUrl;};const getUserAgent=(getNavigator=()=>globalThis.navigator)=>{const navigator=getNavigator();if(isUndefined(navigator)){return null;}let{userAgent}=navigator;const{brave}=navigator;// For supporting Brave browser detection,\n// add \"Brave/<version>\" to the user agent with the version value from the Chrome component\nif(brave&&Object.getPrototypeOf(brave).isBrave){// Example:\n// Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36\nconst matchedArr=userAgent.match(/(chrome)\\/([\\w.]+)/i);if(matchedArr){userAgent=`${userAgent} Brave/${matchedArr[2]}`;}}return userAgent;};const getLanguage=(getNavigator=()=>globalThis.navigator)=>{const navigator=getNavigator();if(isUndefined(navigator)){return null;}return navigator.language??navigator.browserLanguage;};/**\n * Default page properties\n * @returns Default page properties\n */const getDefaultPageProperties=(getLocation=()=>globalThis.location,getDocument=()=>document)=>{const location=getLocation();const canonicalUrl=getCanonicalUrl(getDocument);let path=location.pathname;const{href:tabUrl}=location;let pageUrl=tabUrl;const{search}=location;// If valid canonical URL is provided use this as page URL.\nif(canonicalUrl){try{const urlObj=new URL(canonicalUrl);// If existing, query params of canonical URL will be used instead of the location.search ones\nif(urlObj.search===''){pageUrl=canonicalUrl+search;}else {pageUrl=canonicalUrl;}path=urlObj.pathname;}catch(err){// Do nothing\n}}const url=getUrlWithoutHash(pageUrl);const{title}=getDocument();const referrer=getReferrer(getDocument);return {path,referrer,referring_domain:getReferringDomain(referrer),search,title,url,tab_url:tabUrl};};\n\nconst getUserAgentClientHint=(callback,level='none')=>{if(level==='none'){callback(undefined);}if(level==='default'){callback(navigator.userAgentData);}if(level==='full'){navigator.userAgentData?.getHighEntropyValues(['architecture','bitness','brands','mobile','model','platform','platformVersion','uaFullVersion','fullVersionList','wow64']).then(ua=>{callback(ua);}).catch(()=>{callback();});}};\n\nconst isDatasetAvailable=()=>{const testElement=globalThis.document.createElement('div');testElement.setAttribute('data-a-b','c');return testElement.dataset?testElement.dataset.aB==='c':false;};const legacyJSEngineRequiredPolyfills={// Ideally, we should separate the checks for URL and URLSearchParams but\n// the polyfill service serves them under the same feature name, \"URL\".\nURL:()=>!isFunction(globalThis.URL)||!isFunction(globalThis.URLSearchParams),Promise:()=>!isFunction(globalThis.Promise),'Number.isNaN':()=>!isFunction(globalThis.Number.isNaN),'Number.isInteger':()=>!isFunction(globalThis.Number.isInteger),'Array.from':()=>!isFunction(globalThis.Array.from),'Array.prototype.find':()=>!isFunction(globalThis.Array.prototype.find),'Array.prototype.includes':()=>!isFunction(globalThis.Array.prototype.includes),'String.prototype.endsWith':()=>!isFunction(globalThis.String.prototype.endsWith),'String.prototype.startsWith':()=>!isFunction(globalThis.String.prototype.startsWith),'String.prototype.includes':()=>!isFunction(globalThis.String.prototype.includes),'String.prototype.replaceAll':()=>!isFunction(globalThis.String.prototype.replaceAll),'String.fromCodePoint':()=>!isFunction(globalThis.String.fromCodePoint),'Object.entries':()=>!isFunction(globalThis.Object.entries),'Object.values':()=>!isFunction(globalThis.Object.values),'Object.assign':()=>!isFunction(globalThis.Object.assign),'Object.fromEntries':()=>!isFunction(globalThis.Object.fromEntries),'Element.prototype.dataset':()=>!isDatasetAvailable(),// Ideally, we should separate the checks for TextEncoder and TextDecoder but\n// the polyfill service serves them under the same feature name, \"TextEncoder\".\nTextEncoder:()=>!isFunction(globalThis.TextEncoder)||!isFunction(globalThis.TextDecoder),requestAnimationFrame:()=>!isFunction(globalThis.requestAnimationFrame)||!isFunction(globalThis.cancelAnimationFrame),CustomEvent:()=>!isFunction(globalThis.CustomEvent),'navigator.sendBeacon':()=>!isFunction(globalThis.navigator.sendBeacon),// Note, the polyfill service serves both ArrayBuffer and Uint8Array under the same feature name, \"ArrayBuffer\".\nArrayBuffer:()=>!isFunction(globalThis.Uint8Array),Set:()=>!isFunction(globalThis.Set),atob:()=>!isFunction(globalThis.atob)};const isLegacyJSEngine=()=>{const requiredCapabilitiesList=Object.keys(legacyJSEngineRequiredPolyfills);let needsPolyfill=false;/* eslint-disable-next-line unicorn/no-for-loop */for(let i=0;i<requiredCapabilitiesList.length;i++){const isCapabilityMissing=legacyJSEngineRequiredPolyfills[requiredCapabilitiesList[i]];if(isFunction(isCapabilityMissing)&&isCapabilityMissing()){needsPolyfill=true;break;}}return needsPolyfill;};\n\nconst polyfillIoSdkUrl='https://polyfill-fastly.io/v3/polyfill.min.js';const POLYFILL_URL=`${polyfillIoSdkUrl}?version=3.111.0&features=${Object.keys(legacyJSEngineRequiredPolyfills).join('%2C')}`;const POLYFILL_LOAD_TIMEOUT=10*1000;// 10 seconds\nconst POLYFILL_SCRIPT_ID='rudderstackPolyfill';\n\nconst hasCrypto=()=>!isNullOrUndefined(globalThis.crypto)&&isFunction(globalThis.crypto.getRandomValues);// eslint-disable-next-line compat/compat -- We are checking for the existence of navigator.userAgentData\nconst hasUAClientHints=()=>!isNullOrUndefined(globalThis.navigator.userAgentData);const hasBeacon=()=>!isNullOrUndefined(globalThis.navigator.sendBeacon)&&isFunction(globalThis.navigator.sendBeacon);\n\nconst getScreenDetails=()=>{let screenDetails={density:0,width:0,height:0,innerWidth:0,innerHeight:0};screenDetails={width:globalThis.screen.width,height:globalThis.screen.height,density:globalThis.devicePixelRatio,innerWidth:globalThis.innerWidth,innerHeight:globalThis.innerHeight};return screenDetails;};\n\nclass CapabilitiesManager{constructor(httpClient,errorHandler,logger){this.httpClient=httpClient;this.errorHandler=errorHandler;this.logger=logger;this.externalSrcLoader=new ExternalSrcLoader(this.logger);this.onError=this.onError.bind(this);this.onReady=this.onReady.bind(this);}init(){this.prepareBrowserCapabilities();this.attachWindowListeners();}/**\n   * Detect supported capabilities and set values in state\n   */// eslint-disable-next-line class-methods-use-this\ndetectBrowserCapabilities(){n(()=>{// Storage related details\nstate.capabilities.storage.isCookieStorageAvailable.value=isStorageAvailable(COOKIE_STORAGE,getStorageEngine(COOKIE_STORAGE),this.logger);state.capabilities.storage.isLocalStorageAvailable.value=isStorageAvailable(LOCAL_STORAGE,undefined,this.logger);state.capabilities.storage.isSessionStorageAvailable.value=isStorageAvailable(SESSION_STORAGE,undefined,this.logger);// Browser feature detection details\nstate.capabilities.isBeaconAvailable.value=hasBeacon();state.capabilities.isUaCHAvailable.value=hasUAClientHints();state.capabilities.isCryptoAvailable.value=hasCrypto();state.capabilities.isOnline.value=globalThis.navigator.onLine;// Get page context details\nstate.context.userAgent.value=getUserAgent();state.context.locale.value=getLanguage();state.context.screen.value=getScreenDetails();state.context.timezone.value=getTimezone();if(hasUAClientHints()){getUserAgentClientHint(uach=>{state.context['ua-ch'].value=uach;},state.loadOptions.value.uaChTrackLevel);}});// Ad blocker detection\nj(()=>{if(state.loadOptions.value.sendAdblockPage===true&&state.lifecycle.sourceConfigUrl.value!==undefined){detectAdBlockers(this.httpClient);}});}/**\n   * Detect if polyfills are required and then load script from polyfill URL\n   */prepareBrowserCapabilities(){state.capabilities.isLegacyDOM.value=isLegacyJSEngine();const customPolyfillUrl=state.loadOptions.value.polyfillURL;let polyfillUrl=POLYFILL_URL;if(isDefinedAndNotNull(customPolyfillUrl)){if(isValidURL(customPolyfillUrl)){polyfillUrl=customPolyfillUrl;}else {this.logger.warn(INVALID_POLYFILL_URL_WARNING(CAPABILITIES_MANAGER,customPolyfillUrl));}}const shouldLoadPolyfill=state.loadOptions.value.polyfillIfRequired&&state.capabilities.isLegacyDOM.value&&isValidURL(polyfillUrl);if(shouldLoadPolyfill){const isDefaultPolyfillService=polyfillUrl!==state.loadOptions.value.polyfillURL;if(isDefaultPolyfillService){// write key specific callback\n// NOTE: we're not putting this into RudderStackGlobals as providing the property path to the callback function in the polyfill URL is not possible\nconst polyfillCallbackName=`RS_polyfillCallback_${state.lifecycle.writeKey.value}`;const polyfillCallback=()=>{this.onReady();// Remove the entry from window so we don't leave room for calling it again\ndelete globalThis[polyfillCallbackName];};globalThis[polyfillCallbackName]=polyfillCallback;polyfillUrl=`${polyfillUrl}&callback=${polyfillCallbackName}`;}this.externalSrcLoader.loadJSFile({url:polyfillUrl,id:POLYFILL_SCRIPT_ID,async:true,timeout:POLYFILL_LOAD_TIMEOUT,callback:scriptId=>{if(!scriptId){this.onError(new Error(POLYFILL_SCRIPT_LOAD_ERROR(POLYFILL_SCRIPT_ID,polyfillUrl)));}else if(!isDefaultPolyfillService){this.onReady();}}});}else {this.onReady();}}/**\n   * Attach listeners to window to observe event that update capabilities state values\n   */attachWindowListeners(){globalThis.addEventListener('offline',()=>{state.capabilities.isOnline.value=false;});globalThis.addEventListener('online',()=>{state.capabilities.isOnline.value=true;});globalThis.addEventListener('resize',debounce(()=>{state.context.screen.value=getScreenDetails();},this));}/**\n   * Set the lifecycle status to next phase\n   */// eslint-disable-next-line class-methods-use-this\nonReady(){this.detectBrowserCapabilities();state.lifecycle.status.value='browserCapabilitiesReady';}/**\n   * Handles error\n   * @param error The error object\n   */onError(error,groupingHash){this.errorHandler.onError({error,context:CAPABILITIES_MANAGER,groupingHash});}}\n\nconst CHANNEL='web';// These are the top-level elements in the standard RudderStack event spec\nconst TOP_LEVEL_ELEMENTS=['integrations','anonymousId','originalTimestamp'];// Reserved elements in the context of standard RudderStack event spec\n// Typically, these elements are not allowed to be overridden by the user\nconst CONTEXT_RESERVED_ELEMENTS=['library','consentManagement','userAgent','ua-ch','screen'];// Reserved elements in the standard RudderStack event spec\nconst RESERVED_ELEMENTS=['id','anonymous_id','user_id','sent_at','timestamp','received_at','original_timestamp','event','event_text','channel','context_ip','context_request_ip','context_passed_ip','group_id','previous_id'];\n\nconst CUSTOM_CONTEXT='CustomContext';const PROTOTYPE_POLLUTION_KEYS=new Set(['__proto__','constructor','prototype']);const OBJECT_CONSTRUCTOR_SOURCE=Function.prototype.toString.call(Object);const isPlainObject=value=>{if(!isObjectLiteralAndNotNull(value)){return false;}const prototype=Object.getPrototypeOf(value);if(prototype===null){return true;}const constructor=Object.prototype.hasOwnProperty.call(prototype,'constructor')?prototype.constructor:undefined;return typeof constructor==='function'&&constructor.prototype===prototype&&Function.prototype.toString.call(constructor)===OBJECT_CONSTRUCTOR_SOURCE;};const containsPrototypePollutionKey=(value,visitedObjects=new Set())=>{if(!isObjectLiteralAndNotNull(value)&&!Array.isArray(value)){return false;}const traversableValue=value;if(visitedObjects.has(traversableValue)){return false;}visitedObjects.add(traversableValue);return Object.keys(traversableValue).some(key=>{return PROTOTYPE_POLLUTION_KEYS.has(key)||containsPrototypePollutionKey(traversableValue[key],visitedObjects);});};const filterReservedCustomContextKeys=(context,logger)=>{const retainedContext={};Object.keys(context).forEach(key=>{if(CONTEXT_RESERVED_ELEMENTS.includes(key)){logger.warn(RESERVED_CUSTOM_CONTEXT_KEY_WARNING(CUSTOM_CONTEXT,key));return;}Object.defineProperty(retainedContext,key,{configurable:true,enumerable:true,value:context[key]===context?retainedContext:context[key],writable:true});});return retainedContext;};const prepareCustomContextUpdate=(input,logger)=>{try{if(!isPlainObject(input)){logger.warn(INVALID_CUSTOM_CONTEXT_WARNING(CUSTOM_CONTEXT));return undefined;}const acceptedInput=filterReservedCustomContextKeys(input,logger);if(containsPrototypePollutionKey(acceptedInput)){logger.warn(INVALID_CUSTOM_CONTEXT_WARNING(CUSTOM_CONTEXT));return undefined;}const sanitizedContext=getSanitizedValue(acceptedInput,logger);return clone(sanitizedContext);}catch{logger.warn(INVALID_CUSTOM_CONTEXT_WARNING(CUSTOM_CONTEXT));return undefined;}};\n\nclass CustomContextStore{constructor(state,logger){this.state=state;this.logger=logger;}set(context){const update=prepareCustomContextUpdate(context,this.logger);if(!update){return;}const mergedContext=mergeDeepRight(clone(this.state.value),update);this.state.value=removeUndefinedAndNullValues(mergedContext);}get(){return clone(this.state.value);}clear(){this.state.value={};}}\n\n/**\n * A function to check given value is a number or not\n * @param num input value\n * @returns boolean\n */const isNumber=num=>typeof num==='number'&&!Number.isNaN(num);/**\n * A function to check given number has minimum length or not\n * @param minimumLength     minimum length\n * @param num               input number\n * @returns boolean\n */const hasMinLength=(minimumLength,num)=>num.toString().length>=minimumLength;/**\n * A function to check given value is a positive integer or not\n * @param num input value\n * @returns boolean\n */const isPositiveInteger=num=>isNumber(num)&&num>=0&&Number.isInteger(num);\n\nconst MIN_SESSION_ID_LENGTH=10;const isCutOffTimeExceeded=sessionInfo=>{const{cutOff}=sessionInfo;const timestamp=Date.now();return Boolean(cutOff?.enabled&&cutOff.expiresAt&&timestamp>cutOff.expiresAt);};/**\n * A function to validate whether the current auto tracking session has expired or not.\n * It checks for the current session expiry and the cut off time expiry.\n * @param sessionInfo session info\n * @returns boolean\n */const hasSessionExpired=sessionInfo=>{const isCurrentSessionExpired=Boolean(!sessionInfo.expiresAt||Date.now()>sessionInfo.expiresAt);return isCurrentSessionExpired||isCutOffTimeExceeded(sessionInfo);};/**\n * A function to generate session id\n * @returns number\n */const generateSessionId=()=>Date.now();/**\n * Function to validate user provided sessionId\n * @param {number} sessionId\n * @param logger logger\n * @returns\n */const isManualSessionIdValid=(sessionId,logger)=>{if(!sessionId||!isPositiveInteger(sessionId)||!hasMinLength(MIN_SESSION_ID_LENGTH,sessionId)){logger.warn(INVALID_SESSION_ID_WARNING(USER_SESSION_MANAGER,sessionId,MIN_SESSION_ID_LENGTH));return false;}return true;};const getCutOffExpirationTimestamp=cutOff=>{if(!cutOff?.enabled){return undefined;}return cutOff.expiresAt??(isPositiveInteger(cutOff.duration)?Date.now()+cutOff.duration:undefined);};/**\n * A function to generate new auto tracking session\n * @param sessionInfo session info\n * @returns SessionInfo\n */const generateAutoTrackingSession=sessionInfo=>{const{timeout,cutOff}=sessionInfo;const timestamp=Date.now();return {id:timestamp,// set the current timestamp\nexpiresAt:timestamp+timeout,// set the expiry time of the session\ntimeout,autoTrack:true,...(cutOff&&{cutOff})};};/**\n * A function to generate new manual tracking session\n * @param id Provided sessionId\n * @param logger Logger module\n * @returns SessionInfo\n */const generateManualTrackingSession=(id,logger)=>{const sessionId=isManualSessionIdValid(id,logger)?id:generateSessionId();return {id:sessionId,sessionStart:undefined,manualTrack:true};};const isStorageTypeValidForStoringData=storageType=>Boolean(storageType===COOKIE_STORAGE||storageType===LOCAL_STORAGE||storageType===SESSION_STORAGE||storageType===MEMORY_STORAGE);/**\n * Generate a new anonymousId\n * @returns string anonymousID\n */const generateAnonymousId=()=>generateUUID();const getFinalResetOptions=options=>{// Legacy behavior: toggle only anonymousId without mutating defaults\nif(isBoolean(options)){const{entries,...rest}=DEFAULT_RESET_OPTIONS;return {...rest,entries:{...entries,anonymousId:options}};}// Override any defaults with the user provided options\nif(isObjectLiteralAndNotNull(options)&&isObjectLiteralAndNotNull(options.entries)){return mergeDeepRight(DEFAULT_RESET_OPTIONS,options);}return {...DEFAULT_RESET_OPTIONS};};\n\n/**\n * To get the page properties for context object\n * @param pageProps Page properties\n * @returns page properties object for context\n */const getContextPageProperties=pageProps=>{// Need to get updated page details on each event as an event to notify on SPA URL changes does not seem to exist\nconst curPageProps=getDefaultPageProperties();const ctxPageProps={};Object.keys(curPageProps).forEach(key=>{ctxPageProps[key]=pageProps?.[key]||curPageProps[key];});ctxPageProps.initial_referrer=pageProps?.initial_referrer||state.session.initialReferrer.value;ctxPageProps.initial_referring_domain=pageProps?.initial_referring_domain||state.session.initialReferringDomain.value;return ctxPageProps;};/**\n * Add any missing default page properties using values from options and defaults\n * @param properties Input page properties\n * @param options API options\n */const getUpdatedPageProperties=(properties,options)=>{const optionsPageProps=options?.page||{};const pageProps=properties;// Need to get updated page details on each event as an event to notify on SPA URL changes does not seem to exist\nconst curPageProps=getDefaultPageProperties();Object.keys(curPageProps).forEach(key=>{if(isUndefined(pageProps[key])){pageProps[key]=optionsPageProps[key]||curPageProps[key];}});if(isUndefined(pageProps.initial_referrer)){pageProps.initial_referrer=optionsPageProps.initial_referrer||state.session.initialReferrer.value;}if(isUndefined(pageProps.initial_referring_domain)){pageProps.initial_referring_domain=optionsPageProps.initial_referring_domain||state.session.initialReferringDomain.value;}return pageProps;};/**\n * Utility to check for reserved keys in the input object\n * @param obj Generic object\n * @param parentKeyPath Object's parent key path\n * @param logger Logger instance\n */const checkForReservedElementsInObject=(obj,parentKeyPath,logger)=>{if(isObjectLiteralAndNotNull(obj)){Object.keys(obj).forEach(property=>{if(RESERVED_ELEMENTS.includes(property)||RESERVED_ELEMENTS.includes(property.toLowerCase())){logger.warn(RESERVED_KEYWORD_WARNING(EVENT_MANAGER,property,parentKeyPath,RESERVED_ELEMENTS));}});}};/**\n * Checks for reserved keys in traits, properties, and contextual traits\n * @param rudderEvent Generated rudder event\n * @param logger Logger instance\n */const checkForReservedElements=(rudderEvent,logger)=>{//  properties, traits, contextualTraits are either undefined or object\nconst{properties,traits,context}=rudderEvent;const{traits:contextualTraits}=context;checkForReservedElementsInObject(properties,'properties',logger);checkForReservedElementsInObject(traits,'traits',logger);checkForReservedElementsInObject(contextualTraits,'context.traits',logger);};/**\n * Overrides the top-level event properties with data from API options\n * @param rudderEvent Generated rudder event\n * @param options API options\n */const updateTopLevelEventElements=(rudderEvent,options)=>{if(options.anonymousId&&isString(options.anonymousId)){// eslint-disable-next-line no-param-reassign\nrudderEvent.anonymousId=options.anonymousId;}if(isNonEmptyObject(options.integrations)){// eslint-disable-next-line no-param-reassign\nrudderEvent.integrations=options.integrations;}if(options.originalTimestamp&&isString(options.originalTimestamp)){// eslint-disable-next-line no-param-reassign\nrudderEvent.originalTimestamp=options.originalTimestamp;}};/**\n * To merge the contextual information in API options with existing data\n * @param rudderContext Generated rudder event\n * @param options API options\n * @param logger Logger instance\n */const getMergedContext=(rudderContext,options,logger)=>{let context=rudderContext;const mergeContext=candidateContext=>{const acceptedContext=filterReservedCustomContextKeys(candidateContext,logger);if(containsPrototypePollutionKey(acceptedContext)){logger.warn(INVALID_CUSTOM_CONTEXT_WARNING(EVENT_MANAGER));return;}context=mergeDeepRight(context,acceptedContext);};Object.keys(options).forEach(key=>{if(!TOP_LEVEL_ELEMENTS.includes(key)){if(key!=='context'){mergeContext({[key]:options[key]});}else if(!isUndefined(options[key])&&isObjectLiteralAndNotNull(options[key])){mergeContext(options[key]);}else {logger.warn(INVALID_CONTEXT_OBJECT_WARNING(EVENT_MANAGER));}}});return context;};/**\n * Updates rudder event object with data from the API options\n * @param rudderEvent Generated rudder event\n * @param options API options\n */const processOptions=(rudderEvent,options,logger)=>{// Only allow object type for options\nif(isObjectLiteralAndNotNull(options)){updateTopLevelEventElements(rudderEvent,options);// eslint-disable-next-line no-param-reassign\nrudderEvent.context=getMergedContext(rudderEvent.context,options,logger);}};/**\n * Returns the final integrations config for the event based on the global config and event's config\n * @param integrationsConfig Event's integrations config\n * @returns Final integrations config\n */const getEventIntegrationsConfig=integrationsConfig=>{let finalIntgConfig;if(state.loadOptions.value.useGlobalIntegrationsConfigInEvents){// Prefer the integrations object from the consent API response over the load API integrations object\nfinalIntgConfig=state.consents.postConsent.value.integrations??state.nativeDestinations.loadOnlyIntegrations.value;}else if(integrationsConfig){finalIntgConfig=integrationsConfig;}else {finalIntgConfig=DEFAULT_INTEGRATIONS_CONFIG;}return clone(finalIntgConfig);};/**\n * Enrich the base event object with data from state and the API options\n * @param rudderEvent RudderEvent object\n * @param options API options\n * @param pageProps Page properties\n * @param logger logger\n * @returns Enriched RudderEvent object\n */const getEnrichedEvent=(rudderEvent,options,pageProps,logger,customContext={})=>{const commonEventData={channel:CHANNEL,context:{traits:clone(state.session.userTraits.value),sessionId:state.session.sessionInfo.value.id||undefined,sessionStart:state.session.sessionInfo.value.sessionStart||undefined,// Add 'consentManagement' only if consent management is enabled\n...(state.consents.enabled.value&&{consentManagement:{deniedConsentIds:clone(state.consents.data.value.deniedConsentIds),allowedConsentIds:clone(state.consents.data.value.allowedConsentIds),provider:state.consents.provider.value,resolutionStrategy:state.consents.resolutionStrategy.value}}),'ua-ch':state.context['ua-ch'].value,app:state.context.app.value,library:state.context.library.value,userAgent:state.context.userAgent.value,os:state.context.os.value,locale:state.context.locale.value,screen:state.context.screen.value,campaign:extractUTMParameters(globalThis.location.href),page:getContextPageProperties(pageProps),timezone:state.context.timezone.value,// Add auto tracking information\n...(state.autoTrack.enabled.value&&{autoTrack:{...(state.autoTrack.pageLifecycle.enabled.value&&{page:{pageViewId:state.autoTrack.pageLifecycle.pageViewId.value}})}})},originalTimestamp:getCurrentTimeFormatted(),messageId:generateUUID(),userId:rudderEvent.userId||state.session.userId.value};if(!isStorageTypeValidForStoringData(state.storage.entries.value.anonymousId?.type)){// Generate new anonymous id for each request\ncommonEventData.anonymousId=generateAnonymousId();}else {// Type casting to string as the user session manager will take care of initializing the value\ncommonEventData.anonymousId=state.session.anonymousId.value;}// set truly anonymous tracking flag\nif(state.storage.trulyAnonymousTracking.value){commonEventData.context.trulyAnonymousTracking=true;}if(rudderEvent.type==='identify'){commonEventData.context.traits=state.storage.entries.value.userTraits?.type!==NO_STORAGE?clone(state.session.userTraits.value):rudderEvent.context.traits;}if(rudderEvent.type==='group'){if(rudderEvent.groupId||state.session.groupId.value){commonEventData.groupId=rudderEvent.groupId||state.session.groupId.value;}if(rudderEvent.traits||state.session.groupTraits.value){commonEventData.traits=state.storage.entries.value.groupTraits?.type!==NO_STORAGE?clone(state.session.groupTraits.value):rudderEvent.traits;}}const sdkBuiltEvent=mergeDeepRight(rudderEvent,commonEventData);const processedEvent=mergeDeepRight(sdkBuiltEvent,{context:customContext});// Set the default values for the event properties\n// matching with v1.1 payload\nif(processedEvent.event===undefined){processedEvent.event=null;}if(processedEvent.properties===undefined){processedEvent.properties=null;}processOptions(processedEvent,options,logger);checkForReservedElements(processedEvent,logger);// Update the integrations config for the event\nprocessedEvent.integrations=getEventIntegrationsConfig(processedEvent.integrations);return processedEvent;};\n\nclass RudderEventFactory{constructor(logger){this.logger=logger;}/**\n   * Generate a 'page' event based on the user-input fields\n   * @param category Page's category\n   * @param name Page name\n   * @param properties Page properties\n   * @param options API options\n   */generatePageEvent(category,name,properties,options,customContext={}){let props=properties??{};props=getUpdatedPageProperties(props,options);const pageEvent={properties:props,name,category,type:'page'};return getEnrichedEvent(pageEvent,options,props,this.logger,customContext);}/**\n   * Generate a 'track' event based on the user-input fields\n   * @param event The event name\n   * @param properties Event properties\n   * @param options API options\n   */generateTrackEvent(event,properties,options,customContext={}){const trackEvent={properties,event,type:'track'};return getEnrichedEvent(trackEvent,options,undefined,this.logger,customContext);}/**\n   * Generate an 'identify' event based on the user-input fields\n   * @param userId New user ID\n   * @param traits new traits\n   * @param options API options\n   */generateIdentifyEvent(userId,traits,options,customContext={}){const identifyEvent={userId,type:'identify',context:{traits}};return getEnrichedEvent(identifyEvent,options,undefined,this.logger,customContext);}/**\n   * Generate an 'alias' event based on the user-input fields\n   * @param to New user ID\n   * @param from Old user ID\n   * @param options API options\n   */generateAliasEvent(to,from,options,customContext={}){const aliasEvent={previousId:from,type:'alias'};const enrichedEvent=getEnrichedEvent(aliasEvent,options,undefined,this.logger,customContext);// override the User ID from the API inputs\nenrichedEvent.userId=to??enrichedEvent.userId;return enrichedEvent;}/**\n   * Generate a 'group' event based on the user-input fields\n   * @param groupId New group ID\n   * @param traits new group traits\n   * @param options API options\n   */generateGroupEvent(groupId,traits,options,customContext={}){const groupEvent={type:'group'};if(groupId){groupEvent.groupId=groupId;}if(traits){groupEvent.traits=traits;}return getEnrichedEvent(groupEvent,options,undefined,this.logger,customContext);}/**\n   * Generates a new RudderEvent object based on the user-input fields\n   * @param event API event parameters object\n   * @returns A RudderEvent object\n   */create(event,customContext={}){let eventObj;const{type,name,properties,options,category,userId,traits,to,from,groupId}=event;switch(type){case 'page':eventObj=this.generatePageEvent(category,name,properties,options,customContext);break;case 'track':eventObj=this.generateTrackEvent(name,properties,options,customContext);break;case 'identify':eventObj=this.generateIdentifyEvent(userId,traits,options,customContext);break;case 'alias':eventObj=this.generateAliasEvent(to,from,options,customContext);break;case 'group':default:eventObj=this.generateGroupEvent(groupId,traits,options,customContext);break;}return eventObj;}}\n\n/**\n * A service to generate valid event payloads and queue them for processing\n */class EventManager{/**\n   *\n   * @param eventRepository Event repository instance\n   * @param userSessionManager UserSession Manager instance\n   * @param errorHandler Error handler object\n   * @param logger Logger object\n   */constructor(eventRepository,userSessionManager,errorHandler,logger){this.eventRepository=eventRepository;this.userSessionManager=userSessionManager;this.errorHandler=errorHandler;this.logger=logger;this.eventFactory=new RudderEventFactory(this.logger);}/**\n   * Initializes the event manager\n   */init(){this.eventRepository.init();}resume(){this.eventRepository.resume();}/**\n   * Consumes a new incoming event\n   * @param event Incoming event data\n   */addEvent(event,customContext){this.userSessionManager.refreshSession();const rudderEvent=this.eventFactory.create(event,customContext);this.eventRepository.enqueue(rudderEvent,event.callback);}}\n\nclass UserSessionManager{/**\n   * Tracks whether a server-side cookie setting request is in progress or not.\n   */constructor(pluginsManager,storeManager,httpClient,errorHandler,logger){this.storeManager=storeManager;this.pluginsManager=pluginsManager;this.logger=logger;this.errorHandler=errorHandler;this.httpClient=httpClient;this.onError=this.onError.bind(this);this.serverSideCookieDebounceFuncs={};this.serverSideCookiesRequestInProgress={};}/**\n   * Initialize User session with values from storage\n   */init(){this.syncStorageDataToState();// Register the effect to sync with storage\nthis.registerEffects();}syncStorageDataToState(){this.migrateStorageIfNeeded();this.migrateDataFromPreviousStorage();// get the values from storage and set it again\nthis.setUserId(this.getUserId());this.setUserTraits(this.getUserTraits());this.setGroupId(this.getGroupId());this.setGroupTraits(this.getGroupTraits());const{externalAnonymousIdCookieName,anonymousIdOptions}=state.loadOptions.value;let externalAnonymousId;if(isDefinedAndNotNull(externalAnonymousIdCookieName)&&typeof externalAnonymousIdCookieName==='string'){externalAnonymousId=this.getExternalAnonymousIdByCookieName(externalAnonymousIdCookieName);}this.setAnonymousId(externalAnonymousId??this.getAnonymousId(anonymousIdOptions));this.setAuthToken(this.getAuthToken());this.setInitialReferrerInfo();this.configureSessionTracking();}configureSessionTracking(){let sessionInfo;if(this.isPersistenceEnabledForStorageEntry('sessionInfo')){const configuredSessionTrackingInfo=this.getConfiguredSessionTrackingInfo();const initialSessionInfo=this.getSessionInfo()??DEFAULT_USER_SESSION_VALUES.sessionInfo;// Merge the session info from the storage and the configuration\nsessionInfo={// If manualTrack is set to true in the storage, then do not enable auto tracking even if configured.\n// Once manual tracking ends (endSession is called), auto tracking will be enabled in the next SDK run.\nautoTrack:configuredSessionTrackingInfo.autoTrack&&initialSessionInfo.manualTrack!==true,timeout:configuredSessionTrackingInfo.timeout,manualTrack:initialSessionInfo.manualTrack,expiresAt:initialSessionInfo.expiresAt,id:initialSessionInfo.id,sessionStart:initialSessionInfo.sessionStart};// If both autoTrack and manualTrack are disabled, reset the session info to default values\nif(!sessionInfo.autoTrack&&sessionInfo.manualTrack!==true){sessionInfo=DEFAULT_USER_SESSION_VALUES.sessionInfo;}else if(configuredSessionTrackingInfo.cutOff?.enabled===true){sessionInfo.cutOff={enabled:true,duration:configuredSessionTrackingInfo.cutOff.duration,expiresAt:initialSessionInfo.cutOff?.expiresAt};}}else {sessionInfo=DEFAULT_USER_SESSION_VALUES.sessionInfo;}state.session.sessionInfo.value=sessionInfo;// If auto session tracking is enabled start the session tracking\nif(state.session.sessionInfo.value.autoTrack){this.startOrRenewAutoTracking(state.session.sessionInfo.value);}}setInitialReferrerInfo(){const persistedInitialReferrer=this.getInitialReferrer();const persistedInitialReferringDomain=this.getInitialReferringDomain();if(persistedInitialReferrer&&persistedInitialReferringDomain){this.setInitialReferrer(persistedInitialReferrer);this.setInitialReferringDomain(persistedInitialReferringDomain);}else {const initialReferrer=persistedInitialReferrer||getReferrer();this.setInitialReferrer(initialReferrer);this.setInitialReferringDomain(getReferringDomain(initialReferrer));}}isPersistenceEnabledForStorageEntry(entryName){return isStorageTypeValidForStoringData(state.storage.entries.value[entryName]?.type);}migrateDataFromPreviousStorage(){const entries=state.storage.entries.value;const storageTypesForMigration=[COOKIE_STORAGE,LOCAL_STORAGE,SESSION_STORAGE];Object.keys(entries).forEach(entry=>{const key=entry;const currentStorage=entries[key]?.type;const curStore=this.storeManager?.getStore(storageClientDataStoreNameMap[currentStorage]);if(curStore){storageTypesForMigration.forEach(storage=>{const store=this.storeManager?.getStore(storageClientDataStoreNameMap[storage]);if(store&&storage!==currentStorage){const value=store.get(COOKIE_KEYS[key]);if(isDefinedNotNullAndNotEmptyString(value)){curStore.set(COOKIE_KEYS[key],value);}store.remove(COOKIE_KEYS[key]);}});}});}migrateStorageIfNeeded(stores,keys){if(!state.storage.migrate.value){return;}let storesToMigrate=stores??[];if(storesToMigrate.length===0){const persistentStoreNames=[CLIENT_DATA_STORE_COOKIE,CLIENT_DATA_STORE_LS,CLIENT_DATA_STORE_SESSION];persistentStoreNames.forEach(storeName=>{const store=this.storeManager?.getStore(storeName);if(store){storesToMigrate.push(store);}});}let keysToMigrate=keys??Object.keys(COOKIE_KEYS);keysToMigrate.forEach(storageKey=>{const storageEntry=COOKIE_KEYS[storageKey];storesToMigrate.forEach(store=>{const migratedVal=this.pluginsManager?.invokeSingle('storage.migrate',storageEntry,store.engine,this.errorHandler,this.logger);// Skip setting the value if it is null or undefined\n// as those values indicate there is no need for migration or\n// migration failed\nif(!isNullOrUndefined(migratedVal)){store.set(storageEntry,migratedVal);}});});}getConfiguredSessionTrackingInfo(){let autoTrack=state.loadOptions.value.sessions.autoTrack!==false;// Do not validate any further if autoTrack is disabled\nif(!autoTrack){return {autoTrack};}let timeout;const configuredSessionTimeout=state.loadOptions.value.sessions?.timeout;if(!isPositiveInteger(configuredSessionTimeout)){this.logger.warn(TIMEOUT_NOT_NUMBER_WARNING(USER_SESSION_MANAGER,configuredSessionTimeout,DEFAULT_SESSION_TIMEOUT_MS));timeout=DEFAULT_SESSION_TIMEOUT_MS;}else {timeout=configuredSessionTimeout;}if(timeout===0){this.logger.warn(TIMEOUT_ZERO_WARNING(USER_SESSION_MANAGER));autoTrack=false;}// In case user provides a timeout value greater than 0 but less than 10 seconds SDK will show a warning\n// and will proceed with it\nif(timeout>0&&timeout<MIN_SESSION_TIMEOUT_MS){this.logger.warn(TIMEOUT_NOT_RECOMMENDED_WARNING(USER_SESSION_MANAGER,timeout,MIN_SESSION_TIMEOUT_MS));}const cutOff=this.getCutOffInfo(timeout);return {timeout,autoTrack,cutOff};}getCutOffInfo(sessionTimeout){const cutOff=state.loadOptions.value.sessions.cutOff;let cutOffDuration;let cutOffEnabled=false;if(cutOff.enabled===true){cutOffDuration=cutOff.duration;cutOffEnabled=true;if(!isPositiveInteger(cutOffDuration)){this.logger.warn(CUT_OFF_DURATION_NOT_NUMBER_WARNING(USER_SESSION_MANAGER,cutOffDuration,DEFAULT_SESSION_CUT_OFF_DURATION_MS));// Use the default value for cut off duration\ncutOffDuration=DEFAULT_SESSION_CUT_OFF_DURATION_MS;}else if(cutOffDuration<sessionTimeout){this.logger.warn(CUT_OFF_DURATION_LESS_THAN_TIMEOUT_WARNING(USER_SESSION_MANAGER,cutOffDuration,sessionTimeout));cutOffEnabled=false;}}return {enabled:cutOffEnabled,duration:cutOffDuration};}/**\n   * Handles error\n   * @param error The error object\n   */onError(error,customMessage,groupingHash){this.errorHandler.onError({error,context:USER_SESSION_MANAGER,customMessage,groupingHash});}/**\n   * A function to encrypt the cookie value and return the encrypted data\n   * @param cookiesData\n   * @param store\n   * @returns\n   */getEncryptedCookieData(cookiesData,store){const encryptedCookieData=[];cookiesData.forEach(cData=>{const encryptedValue=store?.encrypt(stringifyWithoutCircular(cData.value,false,[],this.logger));if(isDefinedAndNotNull(encryptedValue)){encryptedCookieData.push({name:cData.name,value:encryptedValue});}});return encryptedCookieData;}/**\n   * A function that makes request to data service to set the cookie\n   * @param encryptedCookieData\n   * @param callback\n   */makeRequestToSetCookie(encryptedCookieData,callback){this.httpClient?.getAsyncData({url:state.serverCookies.dataServiceUrl.value,options:{method:'POST',data:stringifyWithoutCircular({reqType:'setCookies',workspaceId:state.source.value?.workspaceId,data:{options:{maxAge:state.storage.cookie.value?.maxage,path:state.storage.cookie.value?.path,domain:state.storage.cookie.value?.domain,sameSite:state.storage.cookie.value?.samesite,secure:state.storage.cookie.value?.secure,expires:state.storage.cookie.value?.expires},cookies:encryptedCookieData}}),sendRawData:true,withCredentials:true},isRawResponse:true,callback});}/**\n   * A function to make an external request to set the cookie from server side\n   * @param sessionToCookiesMap map of session key to cookie name\n   * @param cb callback function to be called when the cookie is set\n   * @param store store to be used to get the cookie value\n   */setServerSideCookies(sessionToCookiesMap,cb,store){// Retrieve the cookie value from the state\nconst sessionKeys=Object.keys(sessionToCookiesMap);const getCurrentCookieValuesFromState=()=>{return sessionKeys.map(sessionKey=>{return {name:sessionToCookiesMap[sessionKey].name,value:state.session[sessionKey].value};});};// Preserve the current cookie values\nconst originalCookieValues={};sessionKeys.forEach(sessionKey=>{originalCookieValues[sessionToCookiesMap[sessionKey].name]=store?.get(sessionToCookiesMap[sessionKey].name);});const clearInProgressFlags=()=>{sessionKeys.forEach(sessionKey=>{this.serverSideCookiesRequestInProgress[sessionKey]=false;});};const setCookiesClientSide=()=>{getCurrentCookieValuesFromState().forEach(each=>{if(cb){cb(each.name,each.value);}});};try{const expectedCookieValues={};sessionKeys.forEach(sessionKey=>{expectedCookieValues[sessionToCookiesMap[sessionKey].name]=state.session[sessionKey].value;});// encrypt cookies values\nconst encryptedCookieData=this.getEncryptedCookieData(getCurrentCookieValuesFromState(),store);if(encryptedCookieData.length>0){// make request to data service to set the cookie from server side\nthis.makeRequestToSetCookie(encryptedCookieData,(res,details)=>{// Mark the cookie req status as done\nclearInProgressFlags();if(details?.xhr?.status===200){getCurrentCookieValuesFromState().forEach(cData=>{const originalCookieVal=originalCookieValues[cData.name];const currentCookieVal=store?.get(cData.name);// Check if the expected cookie values are set.\nif(stringifyWithoutCircular(expectedCookieValues[cData.name],false,[])!==stringifyWithoutCircular(currentCookieVal,false,[])){// It's fine if the values don't match as other active SDK sessions might have updated the cookie values\n// or other cookie requests might have updated the cookie value.\n// Log an error only when cookie didn't exist previously and currently also doesn't exist.\nif(isNull(originalCookieVal)&&isNull(currentCookieVal)){this.logger.error(FAILED_SETTING_COOKIE_FROM_SERVER_ERROR(cData.name));}if(cb){cb(cData.name,cData.value);}}});}else {this.logger.error(DATA_SERVER_REQUEST_FAIL_ERROR(details?.xhr?.status));setCookiesClientSide();}});}else {setCookiesClientSide();// Mark the cookie req status as done\nclearInProgressFlags();}}catch(e){this.onError(e,FAILED_SETTING_COOKIE_FROM_SERVER_GLOBAL_ERROR,FAILED_SETTING_COOKIE_FROM_SERVER_GLOBAL_ERROR);setCookiesClientSide();// Mark the cookie req status as done\nclearInProgressFlags();}}/**\n   * A function to sync values in storage\n   * @param sessionKey\n   */syncValueToStorage(sessionKey){const entries=state.storage.entries.value;const storageType=entries[sessionKey]?.type;if(isStorageTypeValidForStoringData(storageType)){const curStore=this.storeManager.getStore(storageClientDataStoreNameMap[storageType]);const cookieName=entries[sessionKey]?.key;const cookieValue=state.session[sessionKey].value;if(cookieValue&&(isString(cookieValue)||isNonEmptyObject(cookieValue))){// if useServerSideCookies load option is set to true\n// set the cookie from server side\nif(state.serverCookies.isEnabledServerSideCookies.value&&storageType===COOKIE_STORAGE){// Mark the requests as in progress.\nthis.serverSideCookiesRequestInProgress[sessionKey]=true;if(this.serverSideCookieDebounceFuncs[sessionKey]){globalThis.clearTimeout(this.serverSideCookieDebounceFuncs[sessionKey]);}this.serverSideCookieDebounceFuncs[sessionKey]=globalThis.setTimeout(()=>{// Create a map of session key to cookie name\nconst sessionToCookiesMap={[sessionKey]:{name:cookieName}};this.setServerSideCookies(sessionToCookiesMap,(cookieName,cookieValue)=>{curStore?.set(cookieName,cookieValue);},curStore);},SERVER_SIDE_COOKIES_DEBOUNCE_TIME);}else {curStore?.set(cookieName,cookieValue);}}else {curStore?.remove(cookieName);}}}/**\n   * Function to update storage whenever state value changes\n   */registerEffects(){// This will work as long as the user session entry key names are same as the state keys\nUSER_SESSION_KEYS.forEach(sessionKey=>{j(()=>{this.syncValueToStorage(sessionKey);});});}/**\n   * Sets anonymous id in the following precedence:\n   *\n   * 1. anonymousId: Id directly provided to the function.\n   * 2. rudderAmpLinkerParam: value generated from linker query parm (rudderstack)\n   *    using parseLinker util.\n   * 3. generateUUID: A new unique id is generated and assigned.\n   */setAnonymousId(anonymousId,rudderAmpLinkerParam){let finalAnonymousId=anonymousId;if(!isString(anonymousId)||!finalAnonymousId){finalAnonymousId=undefined;}if(this.isPersistenceEnabledForStorageEntry('anonymousId')){if(!finalAnonymousId&&rudderAmpLinkerParam){const linkerPluginsResult=this.pluginsManager?.invokeSingle('userSession.anonymousIdGoogleLinker',rudderAmpLinkerParam);finalAnonymousId=linkerPluginsResult;}finalAnonymousId=finalAnonymousId||generateAnonymousId();}else {finalAnonymousId=DEFAULT_USER_SESSION_VALUES.anonymousId;}state.session.anonymousId.value=finalAnonymousId;}/**\n   * Fetches anonymousId\n   * @param options option to fetch it from external source\n   * @returns anonymousId\n   */getAnonymousId(options){const storage=state.storage.entries.value.anonymousId?.type;if(isStorageTypeValidForStoringData(storage)){let persistedAnonymousId=state.session.anonymousId.value;// If the anonymous ID is the default value, fetch it from storage\nif(!persistedAnonymousId||persistedAnonymousId===DEFAULT_USER_SESSION_VALUES.anonymousId){persistedAnonymousId=this.getEntryValue('anonymousId');}if(!persistedAnonymousId&&options){// fetch anonymousId from external source\nconst autoCapturedAnonymousId=this.pluginsManager?.invokeSingle('storage.getAnonymousId',getStorageEngine,options);persistedAnonymousId=autoCapturedAnonymousId;}state.session.anonymousId.value=persistedAnonymousId||generateAnonymousId();}return state.session.anonymousId.value;}getEntryValue(sessionKey){const entries=state.storage.entries.value;const storageType=entries[sessionKey]?.type;if(isStorageTypeValidForStoringData(storageType)){const store=this.storeManager?.getStore(storageClientDataStoreNameMap[storageType]);// Migrate the storage data before fetching the value\n// This is needed for entries that are fetched from the storage\n// during the current session (for example, session info)\nthis.migrateStorageIfNeeded([store],[sessionKey]);const storageKey=entries[sessionKey]?.key;return store?.get(storageKey)??null;}return null;}getExternalAnonymousIdByCookieName(key){const storageEngine=getStorageEngine(COOKIE_STORAGE);if(storageEngine?.isEnabled){return storageEngine.getItem(key)??null;}return null;}/**\n   * Fetches the value for a session key. Preferably from storage, if the server-side\n   * cookies request is not in progress. Otherwise, from the state.\n   * @param sessionKey - The session key to fetch the value for\n   * @returns - The value for the session key\n   */getUserSessionValue(sessionKey){// If the server-side cookies request is in progress, fetch the value from the state.\nif(this.serverSideCookiesRequestInProgress[sessionKey]){return state.session[sessionKey].value;}// Otherwise, fetch the value from storage.\nreturn this.getEntryValue(sessionKey);}/**\n   * Fetches User Id\n   * @returns\n   */getUserId(){return this.getUserSessionValue('userId');}/**\n   * Fetches User Traits\n   * @returns\n   */getUserTraits(){return this.getUserSessionValue('userTraits');}/**\n   * Fetches Group Id\n   * @returns\n   */getGroupId(){return this.getUserSessionValue('groupId');}/**\n   * Fetches Group Traits\n   * @returns\n   */getGroupTraits(){return this.getUserSessionValue('groupTraits');}/**\n   * Fetches Initial Referrer\n   * @returns\n   */getInitialReferrer(){return this.getUserSessionValue('initialReferrer');}/**\n   * Fetches Initial Referring domain\n   * @returns\n   */getInitialReferringDomain(){return this.getUserSessionValue('initialReferringDomain');}/**\n   * Fetches session tracking information from storage\n   * @returns\n   */getSessionInfo(){return this.getUserSessionValue('sessionInfo');}/**\n   * Fetches auth token from storage\n   * @returns\n   */getAuthToken(){return this.getUserSessionValue('authToken');}/**\n   * If session is active it returns the sessionId\n   * @returns\n   */getSessionId(){const sessionInfo=this.getSessionInfo()??DEFAULT_USER_SESSION_VALUES.sessionInfo;if(sessionInfo.autoTrack&&!hasSessionExpired(sessionInfo)||sessionInfo.manualTrack){return sessionInfo.id??null;}return null;}/**\n   * A function to keep the session information up to date in the state\n   * before using it for building event payloads.\n   */refreshSession(){let sessionInfo=this.getSessionInfo()??DEFAULT_USER_SESSION_VALUES.sessionInfo;if(sessionInfo.autoTrack||sessionInfo.manualTrack){if(sessionInfo.autoTrack){this.startOrRenewAutoTracking(sessionInfo);sessionInfo=state.session.sessionInfo.value;}// Note that if sessionStart is false, then it's an active session.\n// So, we needn't update the session info.\n//\n// For other scenarios,\n// 1. If sessionStart is undefined, then it's a new session.\n//   Mark it as sessionStart.\n// 2. If sessionStart is true, then need to flip it for the future events.\nif(sessionInfo.sessionStart===undefined){sessionInfo={...sessionInfo,sessionStart:true};}else if(sessionInfo.sessionStart){sessionInfo={...sessionInfo,sessionStart:false};}}// Always write to state (in-turn to storage) to keep the session info up to date.\nstate.session.sessionInfo.value=sessionInfo;if(state.lifecycle.status.value!=='readyExecuted'){// Force update the storage as the 'effect' blocks are not getting triggered\n// when processing preload buffered requests\nthis.syncValueToStorage('sessionInfo');}}resetAndStartNewSession(){const session=state.session;const{manualTrack,autoTrack,timeout,cutOff}=session.sessionInfo.value;if(autoTrack){const sessionInfo={...DEFAULT_USER_SESSION_VALUES.sessionInfo,timeout};if(cutOff){sessionInfo.cutOff={enabled:cutOff.enabled,duration:cutOff.duration};}session.sessionInfo.value=sessionInfo;this.startOrRenewAutoTracking(session.sessionInfo.value);}else if(manualTrack){this.startManualTrackingInternal();}}/**\n   * Reset state values\n   * @param options options for reset\n   * @returns\n   */reset(options){const{session}=state;const opts=getFinalResetOptions(options);n(()=>{Object.keys(DEFAULT_USER_SESSION_VALUES).forEach(key=>{const userSessionKey=key;if(opts.entries[userSessionKey]!==true){return;}switch(key){case 'anonymousId':this.setAnonymousId();break;case 'sessionInfo':this.resetAndStartNewSession();break;default:session[userSessionKey].value=DEFAULT_USER_SESSION_VALUES[userSessionKey];break;}});});}/**\n   * Set user Id\n   * @param userId\n   */setUserId(userId){state.session.userId.value=this.isPersistenceEnabledForStorageEntry('userId')&&userId?userId:DEFAULT_USER_SESSION_VALUES.userId;}/**\n   * Set user traits\n   * @param traits\n   */setUserTraits(traits){state.session.userTraits.value=this.isPersistenceEnabledForStorageEntry('userTraits')&&isObjectLiteralAndNotNull(traits)?mergeDeepRight(state.session.userTraits.value??DEFAULT_USER_SESSION_VALUES.userTraits,traits):DEFAULT_USER_SESSION_VALUES.userTraits;}/**\n   * Set group Id\n   * @param groupId\n   */setGroupId(groupId){state.session.groupId.value=this.isPersistenceEnabledForStorageEntry('groupId')&&groupId?groupId:DEFAULT_USER_SESSION_VALUES.groupId;}/**\n   * Set group traits\n   * @param traits\n   */setGroupTraits(traits){state.session.groupTraits.value=this.isPersistenceEnabledForStorageEntry('groupTraits')&&isObjectLiteralAndNotNull(traits)?mergeDeepRight(state.session.groupTraits.value??DEFAULT_USER_SESSION_VALUES.groupTraits,traits):DEFAULT_USER_SESSION_VALUES.groupTraits;}/**\n   * Set initial referrer\n   * @param referrer\n   */setInitialReferrer(referrer){state.session.initialReferrer.value=this.isPersistenceEnabledForStorageEntry('initialReferrer')&&referrer?referrer:DEFAULT_USER_SESSION_VALUES.initialReferrer;}/**\n   * Set initial referring domain\n   * @param {String} referringDomain\n   */setInitialReferringDomain(referringDomain){state.session.initialReferringDomain.value=this.isPersistenceEnabledForStorageEntry('initialReferringDomain')&&referringDomain?referringDomain:DEFAULT_USER_SESSION_VALUES.initialReferringDomain;}/**\n   * A function to check for existing session details and depending on that create a new session\n   */startOrRenewAutoTracking(sessionInfo){let finalSessionInfo=sessionInfo;if(hasSessionExpired(sessionInfo)){finalSessionInfo=generateAutoTrackingSession(sessionInfo);}else {const timestamp=Date.now();const timeout=sessionInfo.timeout;// Set the expiry time of the session\nfinalSessionInfo.expiresAt=timestamp+timeout;}// Reset cut off expiry timestamp if it is exceeded\nif(isCutOffTimeExceeded(finalSessionInfo)){finalSessionInfo.cutOff.expiresAt=undefined;}// If cut off is active, set or retain the expiry time\nif(finalSessionInfo.cutOff){const cutOffExpiresAt=getCutOffExpirationTimestamp(finalSessionInfo.cutOff);finalSessionInfo.cutOff.expiresAt=cutOffExpiresAt;}// Update the session info in the state\nstate.session.sessionInfo.value=finalSessionInfo;}/**\n   * A function method to start a manual session\n   * @param {number} id     session identifier\n   * @returns\n   */start(id){state.session.sessionInfo.value=generateManualTrackingSession(id,this.logger);}/**\n   * An internal function to start manual session\n   */startManualTrackingInternal(){this.start(Date.now());}/**\n   * A public method to end an ongoing session.\n   */end(){state.session.sessionInfo.value=DEFAULT_USER_SESSION_VALUES.sessionInfo;}/**\n   * Set auth token\n   * @param userId\n   */setAuthToken(token){state.session.authToken.value=this.isPersistenceEnabledForStorageEntry('authToken')&&token?token:DEFAULT_USER_SESSION_VALUES.authToken;}}\n\n/**\n * Plugins to be loaded in the plugins loadOption is not defined\n */const allOptionalPlugins=['BeaconQueue','CustomConsentManager','DeviceModeDestinations','DeviceModeTransformation','ExternalAnonymousId','GoogleLinker','IubendaConsentManager','KetchConsentManager','NativeDestinationQueue','OneTrustConsentManager','StorageEncryption','StorageEncryptionLegacy','StorageMigrator','XhrQueue'];// Plugins excluded from lite builds which are also not connected to any SDK configuration options\nconst defaultOptionalPluginsList=allOptionalPlugins;\n\nconst normalizeLoadOptions=(loadOptionsFromState,loadOptions)=>{// TODO: Maybe add warnings for invalid values\nconst normalizedLoadOpts=clone(loadOptions);if(!isString(normalizedLoadOpts.setCookieDomain)){normalizedLoadOpts.setCookieDomain=undefined;}const cookieSameSiteValues=['Strict','Lax','None'];if(!cookieSameSiteValues.includes(normalizedLoadOpts.sameSiteCookie)){normalizedLoadOpts.sameSiteCookie=undefined;}normalizedLoadOpts.secureCookie=getNormalizedBooleanValue(normalizedLoadOpts.secureCookie,loadOptionsFromState.secureCookie);normalizedLoadOpts.sameDomainCookiesOnly=getNormalizedBooleanValue(normalizedLoadOpts.sameDomainCookiesOnly,loadOptionsFromState.sameDomainCookiesOnly);const uaChTrackLevels=['none','default','full'];if(!uaChTrackLevels.includes(normalizedLoadOpts.uaChTrackLevel)){normalizedLoadOpts.uaChTrackLevel=undefined;}normalizedLoadOpts.integrations=getNormalizedObjectValue(normalizedLoadOpts.integrations);if(!Array.isArray(normalizedLoadOpts.plugins)){normalizedLoadOpts.plugins=defaultOptionalPluginsList;}normalizedLoadOpts.useGlobalIntegrationsConfigInEvents=getNormalizedBooleanValue(normalizedLoadOpts.useGlobalIntegrationsConfigInEvents,loadOptionsFromState.useGlobalIntegrationsConfigInEvents);normalizedLoadOpts.bufferDataPlaneEventsUntilReady=getNormalizedBooleanValue(normalizedLoadOpts.bufferDataPlaneEventsUntilReady,loadOptionsFromState.bufferDataPlaneEventsUntilReady);normalizedLoadOpts.sendAdblockPage=getNormalizedBooleanValue(normalizedLoadOpts.sendAdblockPage,loadOptionsFromState.sendAdblockPage);normalizedLoadOpts.useServerSideCookies=getNormalizedBooleanValue(normalizedLoadOpts.useServerSideCookies,loadOptionsFromState.useServerSideCookies);if(!isString(normalizedLoadOpts.dataServiceEndpoint)){normalizedLoadOpts.dataServiceEndpoint=undefined;}normalizedLoadOpts.sendAdblockPageOptions=getNormalizedObjectValue(normalizedLoadOpts.sendAdblockPageOptions);normalizedLoadOpts.loadIntegration=getNormalizedBooleanValue(normalizedLoadOpts.loadIntegration,loadOptionsFromState.loadIntegration);if(!isNonEmptyObject(normalizedLoadOpts.storage)){normalizedLoadOpts.storage=undefined;}else {normalizedLoadOpts.storage.migrate=getNormalizedBooleanValue(normalizedLoadOpts.storage.migrate,loadOptionsFromState.storage?.migrate);normalizedLoadOpts.storage.cookie=getNormalizedObjectValue(normalizedLoadOpts.storage.cookie);normalizedLoadOpts.storage.encryption=getNormalizedObjectValue(normalizedLoadOpts.storage.encryption);normalizedLoadOpts.storage=removeUndefinedAndNullValues(normalizedLoadOpts.storage);}normalizedLoadOpts.destinationsQueueOptions=getNormalizedObjectValue(normalizedLoadOpts.destinationsQueueOptions);normalizedLoadOpts.queueOptions=getNormalizedObjectValue(normalizedLoadOpts.queueOptions);normalizedLoadOpts.lockIntegrationsVersion=getNormalizedBooleanValue(normalizedLoadOpts.lockIntegrationsVersion,loadOptionsFromState.lockIntegrationsVersion);normalizedLoadOpts.lockPluginsVersion=getNormalizedBooleanValue(normalizedLoadOpts.lockPluginsVersion,loadOptionsFromState.lockPluginsVersion);if(!isNumber(normalizedLoadOpts.dataPlaneEventsBufferTimeout)){normalizedLoadOpts.dataPlaneEventsBufferTimeout=undefined;}normalizedLoadOpts.beaconQueueOptions=getNormalizedObjectValue(normalizedLoadOpts.beaconQueueOptions);normalizedLoadOpts.preConsent=getNormalizedObjectValue(normalizedLoadOpts.preConsent);normalizedLoadOpts.sourceConfigurationOverride=getNormalizedObjectValue(normalizedLoadOpts.sourceConfigurationOverride);const mergedLoadOptions=mergeDeepRight(loadOptionsFromState,removeUndefinedAndNullValues(normalizedLoadOpts));return mergedLoadOptions;};\n\nconst DATA_PLANE_QUEUE_EXT_POINT_PREFIX='dataplaneEventsQueue';const DESTINATIONS_QUEUE_EXT_POINT_PREFIX='destinationsEventsQueue';const DMT_EXT_POINT_PREFIX='transformEvent';\n\n/**\n * Filters and returns the user supplied integrations config that should take preference over the destination specific integrations config\n * @param eventIntgConfig User supplied integrations config at event level\n * @param destinationsIntgConfig Cumulative integrations config from all destinations\n * @returns Filtered user supplied integrations config\n */const getOverriddenIntegrationOptions=(eventIntgConfig,destinationsIntgConfig)=>Object.keys(eventIntgConfig).filter(intgName=>eventIntgConfig[intgName]!==true||!destinationsIntgConfig[intgName]).reduce((obj,key)=>{const retVal=clone(obj);retVal[key]=eventIntgConfig[key];return retVal;},{});/**\n * Returns the event object with final integrations config\n * @param event RudderEvent object\n * @param state Application state\n * @returns Mutated event with final integrations config\n */const getFinalEvent=(event,state)=>{const finalEvent=clone(event);// Merge the destination specific integrations config with the event's integrations config\n// In general, the preference is given to the event's integrations config\nconst destinationsIntgConfig=state.nativeDestinations.integrationsConfig.value;const overriddenIntgOpts=getOverriddenIntegrationOptions(event.integrations,destinationsIntgConfig);finalEvent.integrations=mergeDeepRight(destinationsIntgConfig,overriddenIntgOpts);return finalEvent;};const shouldBufferEventsForPreConsent=state=>state.consents.preConsent.value.enabled&&state.consents.preConsent.value.events?.delivery==='buffer';\n\nconst safelyInvokeCallback=(callback,args,apiName,logger)=>{if(!isDefined(callback)){return;}if(isFunction(callback)){try{callback(...args);}catch(error){logger.error(CALLBACK_INVOKE_ERROR(apiName),error);}}else {logger.error(INVALID_CALLBACK_FN_ERROR(apiName));}};\n\n/**\n * Event repository class responsible for queuing events for further processing and delivery\n */class EventRepository{/**\n   *\n   * @param pluginsManager Plugins manager instance\n   * @param storeManager Store Manager instance\n   * @param errorHandler Error handler object\n   * @param logger Logger object\n   */constructor(pluginsManager,storeManager,httpClient,errorHandler,logger){this.pluginsManager=pluginsManager;this.errorHandler=errorHandler;this.httpClient=httpClient;this.logger=logger;this.storeManager=storeManager;}/**\n   * Initializes the event repository\n   */init(){this.dataplaneEventsQueue=this.pluginsManager.invokeSingle(`${DATA_PLANE_QUEUE_EXT_POINT_PREFIX}.init`,state,this.httpClient,this.storeManager,this.errorHandler,this.logger);this.dmtEventsQueue=this.pluginsManager.invokeSingle(`${DMT_EXT_POINT_PREFIX}.init`,state,this.pluginsManager,this.httpClient,this.storeManager,this.errorHandler,this.logger);this.destinationsEventsQueue=this.pluginsManager.invokeSingle(`${DESTINATIONS_QUEUE_EXT_POINT_PREFIX}.init`,state,this.pluginsManager,this.storeManager,this.dmtEventsQueue,this.errorHandler,this.logger);// Start the queue once the client destinations are ready\nj(()=>{if(state.nativeDestinations.clientDestinationsReady.value===true){this.destinationsEventsQueue?.start();this.dmtEventsQueue?.start();}});const bufferEventsBeforeConsent=shouldBufferEventsForPreConsent(state);// Start the queue processing only when the destinations are ready or hybrid mode destinations exist\n// However, events will be enqueued for now.\n// At the time of processing the events, the integrations config data from destinations\n// is merged into the event object\nlet timeoutId;j(()=>{const shouldBufferDpEvents=state.loadOptions.value.bufferDataPlaneEventsUntilReady===true&&state.nativeDestinations.clientDestinationsReady.value===false;const hybridDestExist=state.nativeDestinations.activeDestinations.value.some(dest=>isHybridModeDestination(dest));if((hybridDestExist===false||shouldBufferDpEvents===false)&&!bufferEventsBeforeConsent&&this.dataplaneEventsQueue?.scheduleTimeoutActive!==true){globalThis.clearTimeout(timeoutId);this.dataplaneEventsQueue?.start();}});// Force start the data plane events queue processing after a timeout\nif(state.loadOptions.value.bufferDataPlaneEventsUntilReady===true){timeoutId=globalThis.setTimeout(()=>{if(this.dataplaneEventsQueue?.scheduleTimeoutActive!==true){this.dataplaneEventsQueue?.start();}},state.loadOptions.value.dataPlaneEventsBufferTimeout);}}resume(){if(this.dataplaneEventsQueue?.scheduleTimeoutActive!==true){if(state.consents.postConsent.value.discardPreConsentEvents){this.dataplaneEventsQueue?.clear();this.destinationsEventsQueue?.clear();}this.dataplaneEventsQueue?.start();}}/**\n   * Enqueues the event for processing\n   * @param event RudderEvent object\n   * @param callback API callback function\n   */enqueue(event,callback){const dpQEvent=getFinalEvent(event,state);this.pluginsManager.invokeSingle(`${DATA_PLANE_QUEUE_EXT_POINT_PREFIX}.enqueue`,state,this.dataplaneEventsQueue,dpQEvent,this.errorHandler,this.logger);const dQEvent=clone(event);this.pluginsManager.invokeSingle(`${DESTINATIONS_QUEUE_EXT_POINT_PREFIX}.enqueue`,state,this.destinationsEventsQueue,dQEvent,this.errorHandler,this.logger);// Invoke the callback if it exists\nconst apiName=`${event.type.charAt(0).toUpperCase()}${event.type.slice(1)}${API_SUFFIX}`;safelyInvokeCallback(callback,[dpQEvent],apiName,this.logger);}}\n\nconst dispatchSDKEvent=event=>{const customEvent=new CustomEvent(event,{detail:{analyticsInstance:globalThis.rudderanalytics},bubbles:true,cancelable:true,composed:true});globalThis.document.dispatchEvent(customEvent);};const isWriteKeyValid=writeKey=>isString(writeKey)&&writeKey.trim().length>0;const isDataPlaneUrlValid=dataPlaneUrl=>isValidURL(dataPlaneUrl);\n\n/*\n * Analytics class with lifecycle based on state ad user triggered events\n */class Analytics{/**\n   * Initialize services and components or use default ones if singletons\n   */constructor(){this.preloadBuffer=new BufferQueue();this.initialized=false;this.errorHandler=defaultErrorHandler;this.logger=defaultLogger;this.customContextStore=new CustomContextStore(state.customContext,this.logger);this.externalSrcLoader=new ExternalSrcLoader(this.logger);this.httpClient=defaultHttpClient;this.httpClient.init(this.errorHandler);this.capabilitiesManager=new CapabilitiesManager(this.httpClient,this.errorHandler,this.logger);}/**\n   * Start application lifecycle if not already started\n   */load(writeKey,dataPlaneUrl,loadOptions={}){if(state.lifecycle.status.value){return;}if(!isWriteKeyValid(writeKey)){this.logger.error(WRITE_KEY_VALIDATION_ERROR(ANALYTICS_CORE,writeKey));return;}if(!isDataPlaneUrlValid(dataPlaneUrl)){this.logger.error(DATA_PLANE_URL_VALIDATION_ERROR(ANALYTICS_CORE,dataPlaneUrl));return;}const{context:customContext,...loadOptionsWithoutContext}=loadOptions;const sanitizedLoadOptions=getSanitizedValue(loadOptionsWithoutContext);if(customContext!==undefined){this.customContextStore.set(customContext);}// Set initial state values\nn(()=>{state.lifecycle.writeKey.value=clone(writeKey);state.lifecycle.dataPlaneUrl.value=clone(dataPlaneUrl);state.loadOptions.value=normalizeLoadOptions(state.loadOptions.value,sanitizedLoadOptions);state.lifecycle.status.value='mounted';});// set log level as early as possible\nthis.logger.setMinLogLevel(state.loadOptions.value.logLevel??POST_LOAD_LOG_LEVEL);// Expose state to global objects\nsetExposedGlobal('state',state,writeKey);// Configure initial config of any services or components here\n// State application lifecycle\nthis.startLifecycle();}setCustomContext(context){if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,['setCustomContext',context]];return;}this.customContextStore.set(context);}getCustomContext(){return this.customContextStore.get();}clearCustomContext(){if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,['clearCustomContext']];return;}this.customContextStore.clear();}// Start lifecycle methods\n/**\n   * Orchestrate the lifecycle of the application phases/status\n   */startLifecycle(){j(()=>{try{switch(state.lifecycle.status.value){case 'mounted':this.onMounted();break;case 'browserCapabilitiesReady':this.onBrowserCapabilitiesReady();break;case 'configured':this.onConfigured();break;case 'pluginsLoading':break;case 'pluginsReady':this.onPluginsReady();break;case 'initialized':this.onInitialized();break;case 'loaded':this.onLoaded();break;case 'destinationsLoading':break;case 'destinationsReady':this.onDestinationsReady();break;case 'ready':this.onReady();break;case 'readyExecuted':default:break;}}catch(err){const issue='Failed to load the SDK';this.errorHandler.onError({error:err,context:ANALYTICS_CORE,customMessage:issue,groupingHash:issue});}});}onBrowserCapabilitiesReady(){// initialize the preloaded events enqueuing\nretrievePreloadBufferEvents(this);this.prepareInternalServices();this.loadConfig();}onLoaded(){this.processBufferedEvents();// Short-circuit the life cycle and move to the ready state if pre-consent behavior is enabled\nif(state.consents.preConsent.value.enabled===true){state.lifecycle.status.value='ready';}else {this.loadDestinations();}}/**\n   * Load browser polyfill if required\n   */onMounted(){this.capabilitiesManager.init();}/**\n   * Enqueue in SDK preload buffer events, used from preloadBuffer component\n   */enqueuePreloadBufferEvents(bufferedEvents){if(Array.isArray(bufferedEvents)){bufferedEvents.forEach(bufferedEvent=>this.preloadBuffer.enqueue(clone(bufferedEvent)));}}/**\n   * Process the buffer preloaded events by passing their arguments to the respective facade methods\n   */processDataInPreloadBuffer(){while(this.preloadBuffer.size()>0){const eventToProcess=this.preloadBuffer.dequeue();if(eventToProcess){consumePreloadBufferedEvent([...eventToProcess],this);}}}prepareInternalServices(){this.pluginsManager=new PluginsManager(defaultPluginEngine,this.errorHandler,this.logger);this.storeManager=new StoreManager(this.pluginsManager,this.errorHandler,this.logger);this.configManager=new ConfigManager(this.httpClient,this.errorHandler,this.logger);this.userSessionManager=new UserSessionManager(this.pluginsManager,this.storeManager,this.httpClient,this.errorHandler,this.logger);this.eventRepository=new EventRepository(this.pluginsManager,this.storeManager,this.httpClient,this.errorHandler,this.logger);this.eventManager=new EventManager(this.eventRepository,this.userSessionManager,this.errorHandler,this.logger);}/**\n   * Load configuration\n   */loadConfig(){if(state.lifecycle.writeKey.value){this.httpClient.setAuthHeader(state.lifecycle.writeKey.value);}this.configManager?.init();}/**\n   * Initialize the storage and event queue\n   */onPluginsReady(){// Initialize storage\nthis.storeManager?.init();this.userSessionManager?.init();// Initialize the appropriate consent manager plugin\nif(state.consents.enabled.value&&!state.consents.initialized.value){this.pluginsManager?.invokeSingle(`consentManager.init`,state,this.logger);if(state.consents.preConsent.value.enabled===false){this.pluginsManager?.invokeSingle(`consentManager.updateConsentsInfo`,state,this.storeManager,this.logger);}}// Initialize event manager\nthis.eventManager?.init();// Mark the SDK as initialized\nstate.lifecycle.status.value='initialized';}/**\n   * Load plugins\n   */onConfigured(){this.pluginsManager?.init();// TODO: are we going to enable custom plugins to be passed as load options?\n// registerCustomPlugins(state.loadOptions.value.customPlugins);\n}/**\n   * Trigger onLoaded callback if any is provided in config & emit initialised event\n   */onInitialized(){// Process any preloaded events\nthis.processDataInPreloadBuffer();// Set lifecycle state\nn(()=>{state.lifecycle.loaded.value=true;state.lifecycle.status.value='loaded';});this.initialized=true;// Execute onLoaded callback if provided in load options\nconst onLoadedCallbackFn=state.loadOptions.value.onLoaded;// TODO: we need to avoid passing the window object to the callback function\n// as this will prevent us from supporting multiple SDK instances in the same page\nsafelyInvokeCallback(onLoadedCallbackFn,[globalThis.rudderanalytics],LOAD_API,this.logger);// Emit an event to use as substitute to the onLoaded callback\ndispatchSDKEvent('RSA_Initialised');}/**\n   * Emit ready event\n   */// eslint-disable-next-line class-methods-use-this\nonReady(){state.lifecycle.status.value='readyExecuted';state.eventBuffer.readyCallbacksArray.value.forEach(callback=>{safelyInvokeCallback(callback,[],READY_API,this.logger);});// Emit an event to use as substitute to the ready callback\ndispatchSDKEvent('RSA_Ready');}/**\n   * Consume preloaded events buffer\n   */processBufferedEvents(){// This logic has been intentionally implemented without a simple\n// for-loop as the individual events that are processed may\n// add more events to the buffer (this is needed for the consent API)\nlet bufferedEvents=state.eventBuffer.toBeProcessedArray.value;while(bufferedEvents.length>0){const bufferedEvent=bufferedEvents.shift();state.eventBuffer.toBeProcessedArray.value=bufferedEvents;if(bufferedEvent){this.processBufferedEvent(bufferedEvent);}bufferedEvents=state.eventBuffer.toBeProcessedArray.value;}}processBufferedEvent(bufferedEvent){switch(bufferedEvent[0]){case 'setCustomContext':this.setCustomContext(bufferedEvent[1]);break;case 'clearCustomContext':this.clearCustomContext();break;case 'ready':this.ready(bufferedEvent[1],true);break;case 'page':this.page(bufferedEvent[1],true,bufferedEvent[2]);break;case 'track':this.track(bufferedEvent[1],true,bufferedEvent[2]);break;case 'identify':this.identify(bufferedEvent[1],true,bufferedEvent[2]);break;case 'alias':this.alias(bufferedEvent[1],true,bufferedEvent[2]);break;case 'group':this.group(bufferedEvent[1],true,bufferedEvent[2]);break;case 'reset':this.reset(bufferedEvent[1],true);break;case 'setAnonymousId':this.setAnonymousId(bufferedEvent[1],bufferedEvent[2],true);break;case 'startSession':this.startSession(bufferedEvent[1],true);break;case 'endSession':this.endSession(true);break;case 'consent':this.consent(bufferedEvent[1],true);break;case 'addCustomIntegration':this.addCustomIntegration(bufferedEvent[1],bufferedEvent[2],true);break;default:{const unsupportedEvent=bufferedEvent;return unsupportedEvent;}}}getInvocationContext(preservedCustomContext){if(preservedCustomContext===undefined){return this.customContextStore.get();}const preparedContext=prepareCustomContextUpdate(preservedCustomContext,this.logger);return preparedContext??{};}/**\n   * Load device mode destinations\n   */loadDestinations(){// If the integrations load is already triggered or completed, skip the rest of the logic\nif(state.lifecycle.status.value==='destinationsLoading'||state.nativeDestinations.clientDestinationsReady.value===true){return;}// Set in state the desired activeDestinations to inject in DOM\nthis.pluginsManager?.invokeSingle('nativeDestinations.setActiveDestinations',state,this.pluginsManager,this.errorHandler,this.logger);const totalDestinationsToLoad=state.nativeDestinations.activeDestinations.value.length;if(totalDestinationsToLoad===0){n(()=>{state.nativeDestinations.clientDestinationsReady.value=true;state.lifecycle.status.value='destinationsReady';});return;}// Start loading native integration scripts and create instances\nstate.lifecycle.status.value='destinationsLoading';this.pluginsManager?.invokeSingle('nativeDestinations.load',state,this.externalSrcLoader,this.errorHandler,this.logger);// Progress to next lifecycle phase if all native destinations are initialized or failed\nj(()=>{const areAllDestinationsReady=state.nativeDestinations.initializedDestinations.value.length+state.nativeDestinations.failedDestinations.value.length===totalDestinationsToLoad;if(areAllDestinationsReady){n(()=>{state.lifecycle.status.value='destinationsReady';state.nativeDestinations.clientDestinationsReady.value=true;});}});}/**\n   * Move to the ready state\n   */// eslint-disable-next-line class-methods-use-this\nonDestinationsReady(){// May be do any destination specific actions here\n// Mark the ready status if not already done\nif(state.lifecycle.status.value!=='ready'){n(()=>{state.lifecycle.status.value='ready';});}}// End lifecycle methods\n// Start consumer exposed methods\nready(callback,isBufferedInvocation=false){const type='ready';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,callback]];return;}this.errorHandler.leaveBreadcrumb(`New ${type} invocation`);if(!isFunction(callback)){this.logger.error(INVALID_CALLBACK_FN_ERROR(READY_API));return;}/**\n     * If destinations are loaded or no integration is available for loading\n     * execute the callback immediately else push the callbacks to a queue that\n     * will be executed after loading completes\n     */if(state.lifecycle.status.value==='readyExecuted'){safelyInvokeCallback(callback,[],READY_API,this.logger);}else {state.eventBuffer.readyCallbacksArray.value=[...state.eventBuffer.readyCallbacksArray.value,callback];}}page(payload,isBufferedInvocation=false,preservedCustomContext){const type='page';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,payload]];return;}const invocationContext=this.getInvocationContext(preservedCustomContext);this.errorHandler.leaveBreadcrumb(`New ${type} event`);state.metrics.triggered.value+=1;this.eventManager?.addEvent({type:'page',category:payload.category,name:payload.name,properties:payload.properties,options:payload.options,callback:payload.callback},invocationContext);// TODO: Maybe we should alter the behavior to send the ad-block page event even if the SDK is still loaded. It'll be pushed into the to be processed queue.\n// Send automatic ad blocked page event if ad-blockers are detected on the page\n// Check page category to avoid infinite loop\nif(state.capabilities.isAdBlocked.value===true&&payload.category!==ADBLOCK_PAGE_CATEGORY){this.page(pageArgumentsToCallOptions(ADBLOCK_PAGE_CATEGORY,ADBLOCK_PAGE_NAME,{// 'title' is intentionally omitted as it does not make sense\n// in v3 implementation\npath:ADBLOCK_PAGE_PATH},state.loadOptions.value.sendAdblockPageOptions),isBufferedInvocation,invocationContext);}}track(payload,isBufferedInvocation=false,preservedCustomContext){const type='track';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,payload]];return;}const invocationContext=this.getInvocationContext(preservedCustomContext);this.errorHandler.leaveBreadcrumb(`New ${type} event - ${payload.name}`);state.metrics.triggered.value+=1;this.eventManager?.addEvent({type,name:payload.name||undefined,properties:payload.properties,options:payload.options,callback:payload.callback},invocationContext);}identify(payload,isBufferedInvocation=false,preservedCustomContext){const type='identify';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,payload]];return;}const invocationContext=this.getInvocationContext(preservedCustomContext);this.errorHandler.leaveBreadcrumb(`New ${type} event`);state.metrics.triggered.value+=1;const shouldResetSession=Boolean(payload.userId&&state.session.userId.value&&payload.userId!==state.session.userId.value);if(shouldResetSession){this.reset();}// `null` value indicates that previous user ID needs to be retained\nif(!isNull(payload.userId)){this.userSessionManager?.setUserId(payload.userId);}this.userSessionManager?.setUserTraits(payload.traits);this.eventManager?.addEvent({type,userId:payload.userId,traits:payload.traits,options:payload.options,callback:payload.callback},invocationContext);}alias(payload,isBufferedInvocation=false,preservedCustomContext){const type='alias';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,payload]];return;}const invocationContext=this.getInvocationContext(preservedCustomContext);this.errorHandler.leaveBreadcrumb(`New ${type} event`);state.metrics.triggered.value+=1;const previousId=payload.from??(this.getUserId()||this.userSessionManager?.getAnonymousId());this.eventManager?.addEvent({type,to:payload.to,from:previousId,options:payload.options,callback:payload.callback},invocationContext);}group(payload,isBufferedInvocation=false,preservedCustomContext){const type='group';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,payload]];return;}const invocationContext=this.getInvocationContext(preservedCustomContext);this.errorHandler.leaveBreadcrumb(`New ${type} event`);state.metrics.triggered.value+=1;// `null` value indicates that previous group ID needs to be retained\nif(!isNull(payload.groupId)){this.userSessionManager?.setGroupId(payload.groupId);}this.userSessionManager?.setGroupTraits(payload.traits);this.eventManager?.addEvent({type,groupId:payload.groupId,traits:payload.traits,options:payload.options,callback:payload.callback},invocationContext);}reset(options,isBufferedInvocation=false){const type='reset';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,options]];return;}this.errorHandler.leaveBreadcrumb(`New ${type} invocation`);this.userSessionManager?.reset(options);}getAnonymousId(options){return this.userSessionManager?.getAnonymousId(options);}setAnonymousId(anonymousId,rudderAmpLinkerParam,isBufferedInvocation=false){const type='setAnonymousId';// Buffering is needed as setting the anonymous ID may require invoking the GoogleLinker plugin\nif(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,anonymousId,rudderAmpLinkerParam]];return;}this.errorHandler.leaveBreadcrumb(`New ${type} invocation`);this.userSessionManager?.setAnonymousId(anonymousId,rudderAmpLinkerParam);}// eslint-disable-next-line class-methods-use-this\ngetUserId(){return state.session.userId.value;}// eslint-disable-next-line class-methods-use-this\ngetUserTraits(){return state.session.userTraits.value;}// eslint-disable-next-line class-methods-use-this\ngetGroupId(){return state.session.groupId.value;}// eslint-disable-next-line class-methods-use-this\ngetGroupTraits(){return state.session.groupTraits.value;}startSession(sessionId,isBufferedInvocation=false){const type='startSession';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,sessionId]];return;}this.errorHandler.leaveBreadcrumb(`New ${type} invocation`);this.userSessionManager?.start(sessionId);}endSession(isBufferedInvocation=false){const type='endSession';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type]];return;}this.errorHandler.leaveBreadcrumb(`New ${type} invocation`);this.userSessionManager?.end();}// eslint-disable-next-line class-methods-use-this\ngetSessionId(){const sessionId=this.userSessionManager?.getSessionId();return sessionId??null;}consent(options,isBufferedInvocation=false){const type='consent';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,options]];return;}this.errorHandler.leaveBreadcrumb(`New consent invocation`);n(()=>{state.consents.preConsent.value={...state.consents.preConsent.value,enabled:false};state.consents.postConsent.value=getValidPostConsentOptions(options);const{initialized,consentsData}=getConsentManagementData(state.consents.postConsent.value.consentManagement,this.logger);state.consents.initialized.value=initialized;state.consents.data.value=consentsData;});// Update consents data in state\nif(state.consents.enabled.value&&!state.consents.initialized.value){this.pluginsManager?.invokeSingle(`consentManager.updateConsentsInfo`,state,this.storeManager,this.logger);}// Re-init store manager\nthis.storeManager?.initializeStorageState();// Re-init user session manager\nthis.userSessionManager?.syncStorageDataToState();// Resume event manager to process the events to destinations\nthis.eventManager?.resume();this.loadDestinations();this.sendTrackingEvents(isBufferedInvocation);}sendTrackingEvents(isBufferedInvocation){// If isBufferedInvocation is true, then the tracking events will be added to the end of the\n// events buffer array so that any other preload events (mainly from query string API) will be processed first.\nif(state.consents.postConsent.value.trackConsent){const trackOptions=trackArgumentsToCallOptions(CONSENT_TRACK_EVENT_NAME);if(isBufferedInvocation){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,['track',trackOptions,this.customContextStore.get()]];}else {this.track(trackOptions);}}if(state.consents.postConsent.value.sendPageEvent){const pageOptions=pageArgumentsToCallOptions();if(isBufferedInvocation){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,['page',pageOptions,this.customContextStore.get()]];}else {this.page(pageOptions);}}}setAuthToken(token){this.userSessionManager?.setAuthToken(token);}/**\n   * Add a custom integration for a custom destination.\n   * @param destinationId - The ID of the custom destination from the RudderStack dashboard.\n   * @param integration - The custom integration object.\n   * @param isBufferedInvocation - Whether the invocation is buffered.\n   */addCustomIntegration(destinationId,integration,isBufferedInvocation=false){const type='addCustomIntegration';if(isBufferedInvocation){this.errorHandler.leaveBreadcrumb(`New ${type} invocation`);this.pluginsManager?.invokeSingle('nativeDestinations.addCustomIntegration',destinationId,integration,state,this.logger);}else {if(state.lifecycle.loaded.value){this.logger.error(CUSTOM_INTEGRATION_CANNOT_BE_ADDED_ERROR(ANALYTICS_CORE,destinationId));return;}state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,destinationId,integration]];}}// End consumer exposed methods\n}\n\n/*\n * RudderAnalytics facade singleton that is exposed as global object and will:\n * expose overloaded methods\n * handle multiple Analytics instances\n * consume SDK preload event buffer\n */class RudderAnalytics{// START-NO-SONAR-SCAN\n// eslint-disable-next-line sonarjs/public-static-readonly\nstatic globalSingleton=null;// END-NO-SONAR-SCAN\nanalyticsInstances={};defaultAnalyticsKey='';logger=defaultLogger;// Singleton with constructor bind methods\nconstructor(){try{if(RudderAnalytics.globalSingleton){// START-NO-SONAR-SCAN\n// eslint-disable-next-line no-constructor-return\nreturn RudderAnalytics.globalSingleton;// END-NO-SONAR-SCAN\n}RudderAnalytics.initializeGlobalResources();this.setDefaultInstanceKey=this.setDefaultInstanceKey.bind(this);this.getAnalyticsInstance=this.getAnalyticsInstance.bind(this);this.load=this.load.bind(this);this.ready=this.ready.bind(this);this.triggerBufferedLoadEvent=this.triggerBufferedLoadEvent.bind(this);this.page=this.page.bind(this);this.track=this.track.bind(this);this.identify=this.identify.bind(this);this.alias=this.alias.bind(this);this.group=this.group.bind(this);this.reset=this.reset.bind(this);this.getAnonymousId=this.getAnonymousId.bind(this);this.setAnonymousId=this.setAnonymousId.bind(this);this.getUserId=this.getUserId.bind(this);this.getUserTraits=this.getUserTraits.bind(this);this.getGroupId=this.getGroupId.bind(this);this.getGroupTraits=this.getGroupTraits.bind(this);this.setCustomContext=this.setCustomContext.bind(this);this.getCustomContext=this.getCustomContext.bind(this);this.clearCustomContext=this.clearCustomContext.bind(this);this.startSession=this.startSession.bind(this);this.endSession=this.endSession.bind(this);this.getSessionId=this.getSessionId.bind(this);this.setAuthToken=this.setAuthToken.bind(this);this.consent=this.consent.bind(this);this.addCustomIntegration=this.addCustomIntegration.bind(this);this.createSafeAnalyticsInstance();RudderAnalytics.globalSingleton=this;state.autoTrack.pageLifecycle.pageViewId.value=generateUUID();state.autoTrack.pageLifecycle.pageLoadedTimestamp.value=Date.now();// start loading if a load event was buffered or wait for explicit load call\nthis.triggerBufferedLoadEvent();// Assign to global \"rudderanalytics\" object after processing the preload buffer (if any exists)\n// for CDN bundling IIFE exports covers this but for npm ESM and CJS bundling has to be done explicitly\nglobalThis.rudderanalytics=this;}catch(error){dispatchErrorEvent(error);}}/**\n   * Create an instance of the current instance that can be used\n   * to call a subset of methods of the current instance.\n   * It is typically used to expose the analytics instance to the integrations (standard and custom)\n   */createSafeAnalyticsInstance(){state.lifecycle.safeAnalyticsInstance.value={page:this.page.bind(this),track:this.track.bind(this),identify:this.identify.bind(this),alias:this.alias.bind(this),group:this.group.bind(this),getAnonymousId:this.getAnonymousId.bind(this),getUserId:this.getUserId.bind(this),getUserTraits:this.getUserTraits.bind(this),getGroupId:this.getGroupId.bind(this),getGroupTraits:this.getGroupTraits.bind(this),getSessionId:this.getSessionId.bind(this)};}static initializeGlobalResources(){// We need to initialize the error handler first to catch any unhandled errors occurring in this module as well\ndefaultErrorHandler.init();// Initialize the storage engines with default options\ndefaultCookieStorage.configure();defaultLocalStorage.configure();defaultSessionStorage.configure();defaultInMemoryStorage.configure();}/**\n   * Set instance to use if no specific writeKey is provided in methods\n   * automatically for the first created instance\n   * TODO: to support multiple analytics instances in the near future\n   */setDefaultInstanceKey(writeKey){// IMP: Add try-catch block to handle any unhandled errors\n// similar to other public methods\n// if the implementation of this method goes beyond\n// this simple implementation\nif(isString(writeKey)&&writeKey){this.defaultAnalyticsKey=writeKey;}}/**\n   * Retrieve an existing analytics instance\n   */getAnalyticsInstance(writeKey){try{let instanceId=writeKey;if(!isString(instanceId)||!instanceId){instanceId=this.defaultAnalyticsKey;}const analyticsInstanceExists=Boolean(this.analyticsInstances[instanceId]);if(!analyticsInstanceExists){this.analyticsInstances[instanceId]=new Analytics();}return this.analyticsInstances[instanceId];}catch(error){dispatchErrorEvent(error);return undefined;}}/**\n   * Loads the SDK\n   * @param writeKey Source write key\n   * @param dataPlaneUrl Data plane URL\n   * @param loadOptions Additional options for loading the SDK\n   * @returns none\n   */load(writeKey,dataPlaneUrl,loadOptions){try{if(this.analyticsInstances[writeKey]){return;}this.setDefaultInstanceKey(writeKey);// Track page loaded lifecycle event if enabled\nthis.trackPageLifecycleEvents(loadOptions);// Get the preloaded events array from global buffer instead of window.rudderanalytics\n// as the constructor must have already pushed the events to the global buffer\nconst preloadedEventsArray=getExposedGlobal(GLOBAL_PRELOAD_BUFFER);// The array will be mutated in the below method\npromotePreloadedConsentEventsToTop(preloadedEventsArray);setExposedGlobal(GLOBAL_PRELOAD_BUFFER,clone(preloadedEventsArray));this.getAnalyticsInstance(writeKey)?.load(writeKey,dataPlaneUrl,loadOptions);}catch(error){dispatchErrorEvent(error);}}/**\n   * A function to track page lifecycle events like page loaded and page unloaded\n   * @param loadOptions\n   * @returns\n   */trackPageLifecycleEvents(loadOptions){const{autoTrack,useBeacon}=loadOptions??{};const{enabled:autoTrackEnabled=false,options:autoTrackOptions={},pageLifecycle}=autoTrack??{};const{events=[PageLifecycleEvents.UNLOADED],enabled:pageLifecycleEnabled=autoTrackEnabled,options=autoTrackOptions}=pageLifecycle??{};state.autoTrack.pageLifecycle.enabled.value=pageLifecycleEnabled;// Set the autoTrack enabled state\n// if at least one of the autoTrack options is enabled\n// IMPORTANT: make sure this is done at the end as it depends on the above states\nstate.autoTrack.enabled.value=autoTrackEnabled||pageLifecycleEnabled;if(!pageLifecycleEnabled){return;}this.setupPageUnloadTracking(events,useBeacon,options);}/**\n   * Setup page unload tracking if enabled\n   * @param events\n   * @param useBeacon\n   * @param options\n   */setupPageUnloadTracking(events,useBeacon,options){if(events.length===0||events.includes(PageLifecycleEvents.UNLOADED)){if(useBeacon===true){onPageLeave(isAccessible=>{if(isAccessible===false&&state.lifecycle.loaded.value){const pageUnloadedTimestamp=Date.now();const timeOnPage=pageUnloadedTimestamp-state.autoTrack.pageLifecycle.pageLoadedTimestamp.value;this.track(PageLifecycleEvents.UNLOADED,{timeOnPage},{...options,originalTimestamp:getFormattedTimestamp(new Date(pageUnloadedTimestamp))});}},true);}else {// log warning if beacon is disabled\nthis.logger.warn(PAGE_UNLOAD_ON_BEACON_DISABLED_WARNING(RSA));}}}/**\n   * Trigger load event in buffer queue if exists and stores the\n   * remaining preloaded events array in global object\n   */triggerBufferedLoadEvent(){const preloadedEventsArray=Array.isArray(globalThis.rudderanalytics)?globalThis.rudderanalytics:[];// Get any load method call that is buffered if any\n// BTW, load method is also removed from the array\n// So, the Analytics object can directly consume the remaining events\nconst loadEvent=getPreloadedLoadEvent(preloadedEventsArray);// Set the final preloaded events array in global object\nsetExposedGlobal(GLOBAL_PRELOAD_BUFFER,clone([...preloadedEventsArray]));// Process load method if present in the buffered requests\nif(loadEvent.length>0){// Remove the event name from the Buffered Event array and keep only arguments\nloadEvent.shift();// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nthis.load.apply(null,loadEvent);}}/**\n   * Get ready callback arguments and forward to ready call\n   */ready(callback){try{this.getAnalyticsInstance()?.ready(getSanitizedValue(callback));}catch(error){dispatchErrorEvent(error);}}/**\n   * Process page arguments and forward to page call\n   */// These overloads should be same as AnalyticsPageMethod in @rudderstack/analytics-js-common/types/IRudderAnalytics\npage(category,name,properties,options,callback){try{this.getAnalyticsInstance()?.page(pageArgumentsToCallOptions(getSanitizedValue(category),getSanitizedValue(name),getSanitizedValue(properties),getSanitizedValue(options),getSanitizedValue(callback)));}catch(error){dispatchErrorEvent(error);}}/**\n   * Process track arguments and forward to page call\n   */// These overloads should be same as AnalyticsTrackMethod in @rudderstack/analytics-js-common/types/IRudderAnalytics\ntrack(event,properties,options,callback){try{this.getAnalyticsInstance()?.track(trackArgumentsToCallOptions(getSanitizedValue(event),getSanitizedValue(properties),getSanitizedValue(options),getSanitizedValue(callback)));}catch(error){dispatchErrorEvent(error);}}/**\n   * Process identify arguments and forward to page call\n   */// These overloads should be same as AnalyticsIdentifyMethod in @rudderstack/analytics-js-common/types/IRudderAnalytics\nidentify(userId,traits,options,callback){try{this.getAnalyticsInstance()?.identify(identifyArgumentsToCallOptions(getSanitizedValue(userId),getSanitizedValue(traits),getSanitizedValue(options),getSanitizedValue(callback)));}catch(error){dispatchErrorEvent(error);}}/**\n   * Process alias arguments and forward to page call\n   */// These overloads should be same as AnalyticsAliasMethod in @rudderstack/analytics-js-common/types/IRudderAnalytics\nalias(to,from,options,callback){try{this.getAnalyticsInstance()?.alias(aliasArgumentsToCallOptions(getSanitizedValue(to),getSanitizedValue(from),getSanitizedValue(options),getSanitizedValue(callback)));}catch(error){dispatchErrorEvent(error);}}/**\n   * Process group arguments and forward to page call\n   */// These overloads should be same as AnalyticsGroupMethod in @rudderstack/analytics-js-common/types/IRudderAnalytics\ngroup(groupId,traits,options,callback){try{this.getAnalyticsInstance()?.group(groupArgumentsToCallOptions(getSanitizedValue(groupId),getSanitizedValue(traits),getSanitizedValue(options),getSanitizedValue(callback)));}catch(error){dispatchErrorEvent(error);}}/**\n   * Reset the analytics instance\n   * @param options Reset options. Except for anonymousId, initialReferrer, and initialReferringDomain\n   * all other values will be reset by default.\n   * @example\n   * ```ts\n   * reset({\n   *  entries: {\n   *    anonymousId: true,\n   *  }\n   * });\n   * ```\n   * @example\n   * ```ts\n   * reset({\n   *  entries: {\n   *    userId: false,\n   *    sessionInfo: false,\n   *  }\n   * });\n   * ```\n   * @returns none\n   *//**\n   * Reset the analytics instance\n   * @param resetAnonymousId Reset anonymous ID\n   * @returns none\n   * @deprecated Use reset(options) instead\n   */reset(options){try{this.getAnalyticsInstance()?.reset(getSanitizedValue(options));}catch(error){dispatchErrorEvent(error);}}getAnonymousId(options){try{return this.getAnalyticsInstance()?.getAnonymousId(getSanitizedValue(options));}catch(error){dispatchErrorEvent(error);return undefined;}}setAnonymousId(anonymousId,rudderAmpLinkerParam){try{this.getAnalyticsInstance()?.setAnonymousId(getSanitizedValue(anonymousId),getSanitizedValue(rudderAmpLinkerParam));}catch(error){dispatchErrorEvent(error);}}getUserId(){try{return this.getAnalyticsInstance()?.getUserId();}catch(error){dispatchErrorEvent(error);return undefined;}}getUserTraits(){try{return this.getAnalyticsInstance()?.getUserTraits();}catch(error){dispatchErrorEvent(error);return undefined;}}getGroupId(){try{return this.getAnalyticsInstance()?.getGroupId();}catch(error){dispatchErrorEvent(error);return undefined;}}getGroupTraits(){try{return this.getAnalyticsInstance()?.getGroupTraits();}catch(error){dispatchErrorEvent(error);return undefined;}}setCustomContext(context){try{this.getAnalyticsInstance()?.setCustomContext(context);}catch(error){dispatchErrorEvent(error);}}getCustomContext(){try{return this.getAnalyticsInstance()?.getCustomContext()??{};}catch(error){dispatchErrorEvent(error);return {};}}clearCustomContext(){try{this.getAnalyticsInstance()?.clearCustomContext();}catch(error){dispatchErrorEvent(error);}}startSession(sessionId){try{this.getAnalyticsInstance()?.startSession(getSanitizedValue(sessionId));}catch(error){dispatchErrorEvent(error);}}endSession(){try{this.getAnalyticsInstance()?.endSession();}catch(error){dispatchErrorEvent(error);}}getSessionId(){try{return this.getAnalyticsInstance()?.getSessionId();}catch(error){dispatchErrorEvent(error);return undefined;}}setAuthToken(token){try{this.getAnalyticsInstance()?.setAuthToken(getSanitizedValue(token));}catch(error){dispatchErrorEvent(error);}}consent(options){try{this.getAnalyticsInstance()?.consent(getSanitizedValue(options));}catch(error){dispatchErrorEvent(error);}}addCustomIntegration(destinationId,integration){try{this.getAnalyticsInstance()?.addCustomIntegration(getSanitizedValue(destinationId),getSanitizedValue(integration));}catch(error){dispatchErrorEvent(error);}}}\n\nexport { RudderAnalytics };\n"],"mappings":";yCAAA,SAASA,EAAeC,EAAE,CAAC,OAAOA,GAAG,MAAM,OAAOA,GAAI,UAAUA,EAAE,0BAA0B,IAAI,EAAK,CASlG,SAASC,EAAQC,EAAG,CAAC,OAAO,SAASC,EAAGH,EAAE,CAAC,OAAG,UAAU,SAAS,GAAGD,EAAeC,CAAC,EAAUG,EAAiBD,EAAG,MAAM,KAAK,SAAS,CAAG,CAAE,CAS3I,SAASE,GAAQF,EAAG,CAAC,OAAO,SAASG,EAAGL,EAAEM,EAAE,CAAC,OAAO,UAAU,OAAO,CAAC,IAAK,GAAE,OAAOD,EAAG,IAAK,GAAE,OAAON,EAAeC,CAAC,EAAEK,EAAGJ,EAAQ,SAASM,EAAG,CAAC,OAAOL,EAAGF,EAAEO,CAAE,CAAE,CAAC,EAAE,QAAQ,OAAOR,EAAeC,CAAC,GAAGD,EAAeO,CAAC,EAAED,EAAGN,EAAeC,CAAC,EAAEC,EAAQ,SAASO,EAAG,CAAC,OAAON,EAAGM,EAAGF,CAAC,CAAE,CAAC,EAAEP,EAAeO,CAAC,EAAEL,EAAQ,SAASM,EAAG,CAAC,OAAOL,EAAGF,EAAEO,CAAE,CAAE,CAAC,EAAEL,EAAGF,EAAEM,CAAC,CAAE,CAAC,CAAE,CASxV,SAASG,GAAQP,EAAG,CAAC,OAAO,SAASQ,EAAGV,EAAEM,EAAEK,EAAE,CAAC,OAAO,UAAU,OAAO,CAAC,IAAK,GAAE,OAAOD,EAAG,IAAK,GAAE,OAAOX,EAAeC,CAAC,EAAEU,EAAGN,GAAQ,SAASG,EAAGK,EAAG,CAAC,OAAOV,EAAGF,EAAEO,EAAGK,CAAE,CAAE,CAAC,EAAE,IAAK,GAAE,OAAOb,EAAeC,CAAC,GAAGD,EAAeO,CAAC,EAAEI,EAAGX,EAAeC,CAAC,EAAEI,GAAQ,SAASI,EAAGI,EAAG,CAAC,OAAOV,EAAGM,EAAGF,EAAEM,CAAE,CAAE,CAAC,EAAEb,EAAeO,CAAC,EAAEF,GAAQ,SAASG,EAAGK,EAAG,CAAC,OAAOV,EAAGF,EAAEO,EAAGK,CAAE,CAAE,CAAC,EAAEX,EAAQ,SAASW,EAAG,CAAC,OAAOV,EAAGF,EAAEM,EAAEM,CAAE,CAAE,CAAC,EAAE,QAAQ,OAAOb,EAAeC,CAAC,GAAGD,EAAeO,CAAC,GAAGP,EAAeY,CAAC,EAAED,EAAGX,EAAeC,CAAC,GAAGD,EAAeO,CAAC,EAAEF,GAAQ,SAASI,EAAGD,EAAG,CAAC,OAAOL,EAAGM,EAAGD,EAAGI,CAAC,CAAE,CAAC,EAAEZ,EAAeC,CAAC,GAAGD,EAAeY,CAAC,EAAEP,GAAQ,SAASI,EAAGI,EAAG,CAAC,OAAOV,EAAGM,EAAGF,EAAEM,CAAE,CAAE,CAAC,EAAEb,EAAeO,CAAC,GAAGP,EAAeY,CAAC,EAAEP,GAAQ,SAASG,EAAGK,EAAG,CAAC,OAAOV,EAAGF,EAAEO,EAAGK,CAAE,CAAE,CAAC,EAAEb,EAAeC,CAAC,EAAEC,EAAQ,SAASO,EAAG,CAAC,OAAON,EAAGM,EAAGF,EAAEK,CAAC,CAAE,CAAC,EAAEZ,EAAeO,CAAC,EAAEL,EAAQ,SAASM,EAAG,CAAC,OAAOL,EAAGF,EAAEO,EAAGI,CAAC,CAAE,CAAC,EAAEZ,EAAeY,CAAC,EAAEV,EAAQ,SAASW,EAAG,CAAC,OAAOV,EAAGF,EAAEM,EAAEM,CAAE,CAAE,CAAC,EAAEV,EAAGF,EAAEM,EAAEK,CAAC,CAAE,CAAC,CAAE,CAEj5B,SAASE,GAAKC,EAAKC,EAAI,CAAC,OAAO,OAAO,UAAU,eAAe,KAAKA,EAAID,CAAI,CAAE,CA8B3E,IAAIE,GAAkBf,EAAQ,SAAcgB,EAAI,CAAC,OAAOA,IAAM,KAAK,OAAOA,IAAM,OAAU,YAAY,OAAO,UAAU,SAAS,KAAKA,CAAG,EAAE,MAAM,EAAE,EAAE,CAAE,CAAC,EAE1J,SAASC,GAAUC,EAAE,CAAC,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAC,IAAI,iBAAkB,CAShF,IAAMC,GAAa,OAAO,WAAW,SAAoBC,EAAE,CAAC,OAAOA,GAAG,IAAIA,CAAE,EAE/E,SAASC,GAAKC,EAAOC,EAAK,CAAC,IAAIC,EAAIF,EAAO,EAAEC,EAAK,OAAOD,EAAOA,EAAO,OAAOC,EAAKC,CAAG,CAAE,CAEvF,SAASC,GAAaC,EAAQ,CAAC,OAAO,IAAI,OAAOA,EAAQ,OAAOA,EAAQ,MAAMA,EAAQ,OAAOA,EAAQ,OAAO,IAAI,KAAKA,EAAQ,WAAW,IAAI,KAAKA,EAAQ,UAAU,IAAI,KAAKA,EAAQ,OAAO,IAAI,KAAKA,EAAQ,QAAQ,IAAI,KAAKA,EAAQ,OAAO,IAAI,GAAG,CAAE,CASlP,SAASC,GAAOC,EAAMC,EAAKC,EAAI,CAClC,GADmCA,IAAMA,EAAI,IAAIC,IAC9CC,GAAaJ,CAAK,EAAG,OAAOA,EAAO,IAAIK,EAAK,SAAcC,EAAY,CACzE,IAAIC,EAAWL,EAAI,IAAIF,CAAK,EAAE,GAAGO,EAAY,OAAOA,EAAYL,EAAI,IAAIF,EAAMM,CAAW,EAAE,QAAQE,KAAOR,EAAU,OAAO,UAAU,eAAe,KAAKA,EAAMQ,CAAG,IAAGF,EAAYE,CAAG,EAAET,GAAOC,EAAMQ,CAAG,EAAE,GAAKN,CAAG,GAAI,OAAOI,CAAY,EAAE,OAAOnB,GAAKa,CAAK,EAAE,CAAC,IAAK,SAAS,OAAOK,EAAK,OAAO,OAAO,OAAO,eAAeL,CAAK,CAAC,CAAC,EAAE,IAAK,QAAQ,OAAOK,EAAK,MAAML,EAAM,MAAM,CAAC,EAAE,IAAK,OAAO,OAAO,IAAI,KAAKA,EAAM,QAAQ,CAAC,EAAE,IAAK,SAAS,OAAOH,GAAaG,CAAK,EAAE,IAAK,YAAY,IAAK,aAAa,IAAK,oBAAoB,IAAK,aAAa,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,eAAe,IAAK,eAAe,IAAK,gBAAgB,IAAK,iBAAiB,OAAOA,EAAM,MAAM,EAAE,QAAQ,OAAOA,CAAM,CAAC,CAAC,SAASI,GAAaK,EAAM,CAAC,IAAItB,EAAK,OAAOsB,EAAM,OAAOA,GAAO,MAAMtB,GAAM,UAAUA,GAAM,UAAW,CAAC,IAAIgB,IAAwB,UAAU,CAAC,SAASA,GAAY,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,OAAO,CAAE,CAAC,OAAAA,EAAW,UAAU,IAAI,SAASK,EAAIR,EAAM,CAAC,IAAIU,EAAU,KAAK,KAAKF,CAAG,EAAMG,EAAO,KAAK,IAAID,CAAS,EAAMC,IAAQ,KAAK,IAAID,CAAS,EAAEC,EAAO,CAAC,GAAGA,EAAO,KAAK,CAACH,EAAIR,CAAK,CAAC,EAAE,KAAK,QAAQ,CAAE,EAAEG,EAAW,UAAU,KAAK,SAASK,EAAI,CAAC,IAAIE,EAAU,CAAC,EAAE,QAAQV,KAASQ,EAAKE,EAAU,KAAK,OAAO,UAAU,SAAS,KAAKF,EAAIR,CAAK,CAAC,CAAC,EAAG,OAAOU,EAAU,KAAK,CAAE,EAAEP,EAAW,UAAU,IAAI,SAASK,EAAI,CAGhxC,GAAG,KAAK,QAAQ,IAAI,CAAC,QAAQI,KAAK,KAAK,IAA4B,QAAnBD,EAAO,KAAK,IAAIC,CAAC,EAAUC,EAAE,EAAEA,EAAEF,EAAO,OAAOE,GAAG,EAAE,CAAC,IAAIC,EAAQH,EAAOE,CAAC,EAAE,GAAGC,EAAQ,CAAC,IAAIN,EAAK,OAAOM,EAAQ,CAAC,CAAG,CAAE,MAAO,CAAC,IAAIJ,EAAU,KAAK,KAAKF,CAAG,EAAMG,EAAO,KAAK,IAAID,CAAS,EAAE,GAAIC,EAAgB,QAAQE,EAAE,EAAEA,EAAEF,EAAO,OAAOE,GAAG,EAAE,CAAC,IAAIC,EAAQH,EAAOE,CAAC,EAAE,GAAGC,EAAQ,CAAC,IAAIN,EAAK,OAAOM,EAAQ,CAAC,CAAG,CAAC,EAASX,CAAW,GAAE,EA4BpXY,EAAmB3C,EAAQ,SAAe4B,EAAM,CAAC,OAAOA,GAAO,MAAM,OAAOA,EAAM,OAAQ,WAAWA,EAAM,MAAM,EAAED,GAAOC,CAAK,CAAE,CAAC,EAEzI,SAASgB,GAAMC,EAAO/B,EAAI,CAAa,QAARE,EAAIF,EAAY2B,EAAE,EAAEA,EAAEI,EAAO,OAAOJ,GAAG,EAAE,CAAC,GAAGzB,GAAK,KAAM,OAAkB,IAAIwB,EAAEK,EAAOJ,CAAC,EAAKtB,GAAWqB,CAAC,EAAGxB,EAAIK,GAAKmB,EAAExB,CAAG,EAASA,EAAIA,EAAIwB,CAAC,CAAG,CAAC,OAAOxB,CAAI,CA0BvL,IAAI8B,GAA0BtC,GAAQ,SAAsBP,EAAG8C,EAAEC,EAAE,CAAC,IAAIC,EAAO,CAAC,EAAMC,EAAEH,EAAEA,GAAG,CAAC,EAAEC,EAAEA,GAAG,CAAC,EAAE,IAAIE,KAAKH,EAAMnC,GAAKsC,EAAEH,CAAC,IAAGE,EAAOC,CAAC,EAAEtC,GAAKsC,EAAEF,CAAC,EAAE/C,EAAGiD,EAAEH,EAAEG,CAAC,EAAEF,EAAEE,CAAC,CAAC,EAAEH,EAAEG,CAAC,GAAI,IAAIA,KAAKF,EAAMpC,GAAKsC,EAAEF,CAAC,GAAG,CAACpC,GAAKsC,EAAED,CAAM,IAAGA,EAAOC,CAAC,EAAEF,EAAEE,CAAC,GAAI,OAAOD,CAAO,CAAC,EA6BpPE,GAA8B3C,GAAQ,SAAS2C,EAAiBlD,EAAGmD,EAAKC,EAAK,CAAC,OAAOP,GAAa,SAASI,EAAEI,EAAKC,EAAK,CAAC,OAAGtC,GAAUqC,CAAI,GAAGrC,GAAUsC,CAAI,EAAUJ,EAAiBlD,EAAGqD,EAAKC,CAAI,EAAgBtD,EAAGiD,EAAEI,EAAKC,CAAI,CAAG,EAAEH,EAAKC,CAAI,CAAE,CAAC,EA4BhPG,GAA2BhD,GAAQ,SAAuBP,EAAGmD,EAAKC,EAAK,CAAC,OAAOF,GAAiB,SAASD,EAAEI,EAAKC,EAAK,CAAC,OAAOtD,EAAGqD,EAAKC,CAAI,CAAE,EAAEH,EAAKC,CAAI,CAAE,CAAC,EAyBzJI,GAAkBtD,GAAQyC,EAAK,EAqB/Bc,GAAoBvD,GAAQ,SAAgBwD,EAAK7C,EAAI,CAAC,IAAImC,EAAO,CAAC,EAAE,QAAQpC,KAAQC,EAAQ6C,EAAK7C,EAAID,CAAI,EAAEA,EAAKC,CAAG,IAAGmC,EAAOpC,CAAI,EAAEC,EAAID,CAAI,GAAI,OAAOoC,CAAO,CAAC,EAM5JW,EAAWhC,GAAO,OAAOA,GAAQ,YAAY,GAAQA,EAAM,aAAaA,EAAM,MAAMA,EAAM,OAI1FiC,EAASjC,GAAO,OAAOA,GAAQ,SAI/BkC,EAAOlC,GAAOA,IAAQ,KAItBmC,EAAYnC,GAAO,OAAOA,EAAQ,IAIlCoC,EAAkBpC,GAAOkC,EAAOlC,CAAK,GAAGmC,EAAYnC,CAAK,EAIzDqC,GAASrC,GAAO,OAAOA,GAAQ,SAI/BsC,EAAUtC,GAAO,CAACmC,EAAYnC,CAAK,EAInCuC,GAAoBvC,GAAO,CAACoC,EAAkBpC,CAAK,EAInDwC,GAAkCxC,GAAOuC,GAAoBvC,CAAK,GAAGA,IAAQ,GAI7EyC,GAAczC,GAAO,CAAC,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAK,EAAE,CAAC,IAAK,iBAAiB,IAAK,qBAAqB,IAAK,wBAAwB,MAAO,GAAK,QAAQ,OAAOA,aAAiB,KAAM,CAAC,EAIpM0C,GAAU1C,GAAO,OAAOA,GAAQ,UAEnC2C,GAAe,CAACzD,EAAI0D,IAAU,CAAC,IAAMC,EAAUD,EAAQ,MAAM,GAAG,EAAE,OAAOf,GAAKgB,EAAU3D,CAAG,CAAE,EAAQ4D,GAAe,CAAC5D,EAAI2C,IAAO,EAAQc,GAAezD,EAAI2C,CAAI,EAASkB,GAAS/C,GAAO,OAAOA,GAAQ,SAIpMgD,GAAmBhD,GAAO,CAACkC,EAAOlC,CAAK,GAAG+C,GAAS/C,CAAK,GAAG,CAAC,MAAM,QAAQA,CAAK,EAI/EiD,EAA0BjD,GAAO,CAACkC,EAAOlC,CAAK,GAAG,OAAO,UAAU,SAAS,KAAKA,CAAK,IAAI,kBAOzFkD,GAA2B,CAACC,EAAUC,IAAa,CAAC,GAAG,CAAC,MAAM,QAAQD,CAAS,GAAG,CAAC,MAAM,QAAQC,CAAU,EAAG,OAAOrC,EAAMqC,CAAU,EAAG,IAAMC,EAAYtC,EAAMoC,CAAS,EAAE,OAAAC,EAAW,QAAQ,CAACpD,EAAMsD,IAAQ,CAACD,EAAYC,CAAK,EAAE,MAAM,QAAQtD,CAAK,GAAGgD,GAAmBhD,CAAK,EACxRuD,EAAeF,EAAYC,CAAK,EAAEtD,CAAK,EAAEA,CAAM,CAAC,EAASqD,CAAY,EAQ5DE,EAAe,CAACC,EAAWC,IAAc7B,GAAcsB,GAA2BM,EAAWC,CAAW,EAIxGC,GAAiB1D,GAAOiD,EAA0BjD,CAAK,GAAG,OAAO,KAAKA,CAAK,EAAE,OAAO,EAIpF2D,GAAsBzE,GAAK,CAAC,IAAMmC,EAAOS,GAAOQ,EAAUpD,CAAG,EAAE,cAAO,KAAKmC,CAAM,EAAE,QAAQb,GAAK,CAAC,IAAMR,EAAMqB,EAAOb,CAAG,EAAKyC,EAA0BjD,CAAK,IAAGqB,EAAOb,CAAG,EAAEmD,GAAsB3D,CAAK,EAAG,CAAC,EAASqB,CAAO,EAIzNuC,GAA6B1E,GAAK,CAAC,IAAMmC,EAAOS,GAAOS,GAAoBrD,CAAG,EAAE,cAAO,KAAKmC,CAAM,EAAE,QAAQb,GAAK,CAAC,IAAMR,EAAMqB,EAAOb,CAAG,EAAKyC,EAA0BjD,CAAK,IAAGqB,EAAOb,CAAG,EAAEoD,GAA6B5D,CAAK,EAAG,CAAC,EAASqB,CAAO,EAQjPwC,EAAyBzE,GAAK,CAAC,GAAIsE,GAAiBtE,CAAG,EAAqB,OAAOwE,GAA6BxE,CAAG,CAAE,EAOrH0E,EAA0B,CAAC1E,EAAI2E,IAAS,OAAO3E,GAAM,UAAUA,EAAI2E,EAAaC,GAAW9E,IAAM,OAAO,oBAAoBA,CAAG,EAAE,QAAQ,SAASD,EAAK,CAAIC,EAAID,CAAI,GAAG,OAAOC,EAAID,CAAI,GAAI,UAAU+E,GAAW9E,EAAID,CAAI,CAAC,CAAG,CAAC,EAAS,OAAO,OAAOC,CAAG,GAExP+E,GAAKjE,GAAOA,EAAM,QAAQ,cAAc,EAAE,EAAQkE,GAAoBlE,GAAOA,EAAM,QAAQ,OAAO,EAAE,EAIjGmE,GAAa/E,GAAK,CAAC,IAAIgF,EAAOhF,EAAI,GAAG,CAAC6C,EAAS7C,CAAG,GAAG,CAACgD,EAAkBhD,CAAG,EAAG,GAAG,CAACgF,EAAO,KAAK,UAAUhF,CAAG,CAAE,MAAS,CAACgF,EAAO,IAAK,CAAE,OAAOA,CAAO,EAKnJC,GAAcC,GAAO,CAAC,IAAMC,EAAU,MAAM,KAAKD,EAAMhF,GAAG,OAAO,cAAcA,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,WAAW,KAAKiF,CAAS,CAAE,EAI9HC,GAASxE,GAAOqE,GAAc,IAAI,YAAY,EAAE,OAAOrE,CAAK,CAAC,EAK7DyE,GAA2B,CAACC,EAASC,EAAKC,EAAWC,EAAQC,IAAW,CAAC,IAAMC,EAAQ,CAAC,SAASL,EAAS,KAAKC,EAAK,WAAWC,EAAW,QAAQC,EAAQ,SAAS,MAAS,EAAK7C,EAAW8C,CAAQ,IAAGC,EAAQ,SAASD,GAAa9C,EAAW6C,CAAO,IAAGE,EAAQ,SAASL,EAASK,EAAQ,KAAKJ,EAAKI,EAAQ,WAAWH,EAAWG,EAAQ,QAAQ,OAAUA,EAAQ,SAASF,GAAY7C,EAAW4C,CAAU,IAAGG,EAAQ,SAASL,EAASK,EAAQ,KAAKJ,EAAKI,EAAQ,WAAW,OAAUA,EAAQ,QAAQ,OAAUA,EAAQ,SAASH,GAAe5C,EAAW2C,CAAI,IAAGI,EAAQ,SAASL,EAASK,EAAQ,KAAK,OAAUA,EAAQ,WAAW,OAAUA,EAAQ,QAAQ,OAAUA,EAAQ,SAASJ,GAAS3C,EAAW0C,CAAQ,IAAGK,EAAQ,SAAS,OAAUA,EAAQ,KAAK,OAAUA,EAAQ,WAAW,OAAUA,EAAQ,QAAQ,OAAUA,EAAQ,SAASL,GAAazB,EAA0ByB,CAAQ,GAAGK,EAAQ,KAAK,OAAUA,EAAQ,SAAS,OAAUA,EAAQ,WAAWL,EAAa1C,EAAW2C,CAAI,EAA+BI,EAAQ,QAAQ,OAA5CA,EAAQ,QAAQJ,GAAgD1B,EAA0B0B,CAAI,IAAGI,EAAQ,KAAK,OAAUA,EAAQ,WAAWJ,EAAS3C,EAAW4C,CAAU,EAAqCG,EAAQ,QAAQ,OAAlDA,EAAQ,QAAQH,GAElpC3C,EAASyC,CAAQ,GAAG,CAACzC,EAAS0C,CAAI,IAAGI,EAAQ,SAAS,OAAUA,EAAQ,KAAKL,GAG5EpC,EAAUyC,EAAQ,QAAQ,IAAGA,EAAQ,SAAS,QAAezC,EAAUyC,EAAQ,IAAI,IAAGA,EAAQ,KAAK,QAAWA,EAAQ,WAAWA,EAAQ,WAAWhE,EAAMgE,EAAQ,UAAU,EAAE,CAAC,EAAKzC,EAAUyC,EAAQ,OAAO,EAAGA,EAAQ,QAAQhE,EAAMgE,EAAQ,OAAO,EAASA,EAAQ,QAAQ,OAAW,IAAMC,EAAkB/C,EAAS8C,EAAQ,IAAI,EAAEA,EAAQ,KAAKA,EAAQ,WAAW,KAAWE,EAAsBhD,EAAS8C,EAAQ,QAAQ,EAAEA,EAAQ,SAASA,EAAQ,WAAW,SAC5c,OAAAA,EAAQ,WAAWxB,EAAeN,EAA0B8B,EAAQ,UAAU,EAAEA,EAAQ,WAAW,CAAC,EAAE,CAAC,GAAIC,GAAmB,CAAC,KAAKA,CAAiB,EAAG,GAAIC,GAAuB,CAAC,SAASA,CAAqB,CAAE,CAAC,EAASF,CAAQ,EAE7NG,GAA4B,CAACC,EAAMP,EAAWC,EAAQC,IAAW,CAAC,IAAMC,EAAQ,CAAC,KAAKI,EAAM,WAAWP,EAAW,QAAQC,EAAQ,SAAS,MAAS,EAAE,OAAG7C,EAAW8C,CAAQ,IAAGC,EAAQ,SAASD,GAAa9C,EAAW6C,CAAO,IAAGE,EAAQ,WAAWH,EAAWG,EAAQ,QAAQ,OAAUA,EAAQ,SAASF,GAAY7C,EAAW4C,CAAU,IAAGG,EAAQ,WAAW,OAAUA,EAAQ,QAAQ,OAAUA,EAAQ,SAASH,GAGhaG,EAAQ,WAAWxC,GAAoBwC,EAAQ,UAAU,EAAEhE,EAAMgE,EAAQ,UAAU,EAAE,CAAC,EAAKzC,EAAUyC,EAAQ,OAAO,EAAGA,EAAQ,QAAQhE,EAAMgE,EAAQ,OAAO,EAASA,EAAQ,QAAQ,OAAkBA,CAAQ,EAEtMK,GAA+B,CAACC,EAAOC,EAAOT,EAAQC,IAAW,CAAC,IAAMC,EAAQ,CAAC,OAAOM,EAAO,OAAOC,EAAO,QAAQT,EAAQ,SAAS,MAAS,EAAE,OAAG7C,EAAW8C,CAAQ,IAAGC,EAAQ,SAASD,GAAa9C,EAAW6C,CAAO,IAAGE,EAAQ,OAAOM,EAAON,EAAQ,OAAOO,EAAOP,EAAQ,QAAQ,OAAUA,EAAQ,SAASF,GAAY7C,EAAWsD,CAAM,IAAGP,EAAQ,OAAOM,EAAON,EAAQ,OAAO,OAAUA,EAAQ,QAAQ,OAAUA,EAAQ,SAASO,IAAWrC,EAA0BoC,CAAM,GAAGnD,EAAOmD,CAAM,KAElfN,EAAQ,OAAO,KAAKA,EAAQ,OAAOM,EAAWrD,EAAWsD,CAAM,EAAiCP,EAAQ,QAAQ,OAA9CA,EAAQ,QAAQO,GAGlFP,EAAQ,OAAOZ,GAAaY,EAAQ,MAAM,EAAK9B,EAA0B8B,EAAQ,MAAM,EAAGA,EAAQ,OAAOhE,EAAMgE,EAAQ,MAAM,EAASA,EAAQ,OAAO,OAAczC,EAAUyC,EAAQ,OAAO,EAAGA,EAAQ,QAAQhE,EAAMgE,EAAQ,OAAO,EAASA,EAAQ,QAAQ,OAAkBA,CAAQ,EAE9QQ,GAA4B,CAACC,EAAGC,EAAKZ,EAAQC,IAAW,CAAC,IAAMC,EAAQ,CAAC,GAAAS,EAAG,KAAKC,EAAK,QAAQZ,EAAQ,SAAS,MAAS,EAAE,OAAG7C,EAAW8C,CAAQ,IAAGC,EAAQ,SAASD,GAAa9C,EAAW6C,CAAO,IAAGE,EAAQ,GAAGS,EAAGT,EAAQ,KAAKU,EAAKV,EAAQ,QAAQ,OAAUA,EAAQ,SAASF,GAAY7C,EAAWyD,CAAI,GAAGV,EAAQ,GAAGS,EAAGT,EAAQ,KAAK,OAAUA,EAAQ,QAAQ,OAAUA,EAAQ,SAASU,IAAcxC,EAA0BwC,CAAI,GAAGvD,EAAOuD,CAAI,KAAGV,EAAQ,GAAGS,EAAGT,EAAQ,KAAK,OAAUA,EAAQ,QAAQU,GAGtfnD,EAAUyC,EAAQ,EAAE,IAAGA,EAAQ,GAAGZ,GAAaY,EAAQ,EAAE,GAAMzC,EAAUyC,EAAQ,IAAI,EAAGA,EAAQ,KAAKZ,GAAaY,EAAQ,IAAI,EAASA,EAAQ,KAAK,OAAczC,EAAUyC,EAAQ,OAAO,EAAGA,EAAQ,QAAQhE,EAAMgE,EAAQ,OAAO,EAASA,EAAQ,QAAQ,OAAkBA,CAAQ,EAEhRW,GAA4B,CAACC,EAAQL,EAAOT,EAAQC,IAAW,CAAC,IAAMC,EAAQ,CAAC,QAAQY,EAAQ,OAAOL,EAAO,QAAQT,EAAQ,SAAS,MAAS,EAAE,OAAG7C,EAAW8C,CAAQ,IAAGC,EAAQ,SAASD,GAAa9C,EAAW6C,CAAO,IAAGE,EAAQ,QAAQY,EAAQZ,EAAQ,OAAOO,EAAOP,EAAQ,QAAQ,OAAUA,EAAQ,SAASF,GAAY7C,EAAWsD,CAAM,IAAGP,EAAQ,QAAQY,EAAQZ,EAAQ,OAAO,OAAUA,EAAQ,QAAQ,OAAUA,EAAQ,SAASO,IAAWrC,EAA0B0C,CAAO,GAAGzD,EAAOyD,CAAO,KAExfZ,EAAQ,QAAQ,KAAKA,EAAQ,OAAOY,EAAY3D,EAAWsD,CAAM,EAAiCP,EAAQ,QAAQ,OAA9CA,EAAQ,QAAQO,GAGpFP,EAAQ,QAAQZ,GAAaY,EAAQ,OAAO,EAAK9B,EAA0B8B,EAAQ,MAAM,EAAGA,EAAQ,OAAOhE,EAAMgE,EAAQ,MAAM,EAASA,EAAQ,OAAO,OAAczC,EAAUyC,EAAQ,OAAO,EAAGA,EAAQ,QAAQhE,EAAMgE,EAAQ,OAAO,EAASA,EAAQ,QAAQ,OAAkBA,CAAQ,EAUlRa,IAAiC,SAASA,EAAoB,CAAC,OAAAA,EAAoB,SAAY,gBAAuBA,CAAoB,GAAE,CAAC,CAAC,EAM/IC,GAAW,MAAYC,GAAqB,sBAA4BC,EAAe,gBAAsBC,GAAc,eAAqBC,GAAgB,iBAAuBC,GAAqB,qBAA2BC,GAAc,eAAqBC,GAAc,eAAqBC,GAAc,eAAqBC,GAAU,QAAQT,EAAU,GAASU,GAAS,OAAOV,EAAU,GAASW,GAAY,aAAmBC,GAAI,uBAA6BC,GAAe,gBAE7e,SAASC,GAAOC,EAAI,CAAC,OAAO,OAAO,gBAAgB,IAAI,WAAWA,CAAG,CAAC,CAAE,CAExE,IAAIC,GAAK,KAAKC,GAAM,CAAC,EAAEC,GAAM,EAAEC,GAAS,KAAKD,GAAM,IAAIA,KAASD,GAAMC,EAAK,GAAGA,GAAM,KAAK,SAAS,EAAE,EAAE,UAAU,CAAC,EAAG,SAASE,IAAM,EAAI,CAACD,IAAUD,GAAM,GAAGF,MAAMG,GAASL,GAAOE,EAAI,EAAEE,GAAM,GAAsB,QAAflG,EAAE,EAAEqG,EAAIC,EAAI,GAAQtG,EAAE,GAAGA,IAAKqG,EAAIF,GAASD,GAAMlG,CAAC,EAAKA,GAAG,EAAEsG,GAAKL,GAAMI,EAAI,GAAG,EAAE,EAAUrG,GAAG,EAAEsG,GAAKL,GAAMI,EAAI,GAAG,GAAG,EAAOC,GAAKL,GAAMI,CAAG,EAAKrG,EAAE,GAAGA,EAAE,GAAGA,EAAE,KAAGsG,GAAK,KAAK,OAAAJ,IAAO,GAAUI,CAAI,CAEhY,IAAIC,GAAI,IAAIC,GAAI,CAAC,EAAEC,GAAO,KAAMF,MAAMC,GAAID,EAAG,GAAGA,GAAI,KAAK,SAAS,EAAE,EAAE,UAAU,CAAC,EAAE,SAASG,IAAI,CAAC,IAAI1G,EAAE,EAAE2G,EAAIL,EAAI,GAAG,GAAG,CAACG,IAAQF,GAAI,GAAG,IAAI,CAAqB,IAApBE,GAAO,MAAMzG,EAAE,GAAG,EAAQA,KAAIyG,GAAOzG,CAAC,EAAE,IAAI,KAAK,OAAO,EAAE,EAAEA,EAAEuG,GAAI,CAAE,CAAC,KAAKvG,EAAE,GAAGA,IAAK2G,EAAIF,GAAOF,GAAIvG,CAAC,EAAKA,GAAG,EAAEsG,GAAKE,GAAIG,EAAI,GAAG,EAAE,EAAU3G,GAAG,EAAEsG,GAAKE,GAAIG,EAAI,GAAG,GAAG,EAAOL,GAAKE,GAAIG,CAAG,EAAK3G,EAAE,GAAGA,EAAE,GAAGA,EAAE,KAAGsG,GAAK,KAAK,OAAAC,KAAaD,CAAI,CAEhX,IAAMM,GAAY,IAAI,CAACrF,EAAkB,WAAW,MAAM,GAAGJ,EAAW,WAAW,OAAO,eAAe,EAEnG0F,GAAa,IAAQD,GAAY,EAAUR,GAAK,EAAUM,GAAG,EAK1DI,GAA8B,IAAI,CAAC,CAAC,OAAO,QAAQ,SAAS,GAASC,GAAO,IAAI3F,EAAS,WAAW,UAAU,SAAS,GAAG,mBAAmB,KAAK,WAAW,UAAU,SAAS,EAMhL4F,GAAY,CAAC/C,EAASgD,EAAyB,KAAQ,CAEhE,IAAIC,EAAS,GAAUC,EAAa,GAAM,SAASC,GAAe,CAAIF,IAAkBA,EAAS,GAAKjD,EAASkD,CAAY,EAG3H,WAAW,IAAI,CAACD,EAAS,EAAM,EAAE,CAAC,EAAE,EAOjCD,GAA0BF,GAAO,IAAG,WAAW,iBAAiB,eAAe,IAAI,CAACI,EAAa,GAAMC,EAAc,CAAE,CAAC,EAG3H,WAAW,iBAAiB,OAAO,IAAI,CAACD,EAAa,GAAKC,EAAc,CAAE,CAAC,EAAE,WAAW,iBAAiB,QAAQ,IAAI,CAACF,EAAS,EAAM,CAAC,EACtI,SAAS,iBAAiB,WAAW,IAAI,CAACC,EAAa,SAAS,kBAAkB,SAASC,EAAc,CAAE,CAAC,EAC5G,SAAS,iBAAiB,mBAAmB,IAAI,CAACD,EAAa,GAAQ,SAAS,kBAAkB,SAAUC,EAAc,EAASF,EAAS,EAAO,CAAC,CAAE,EAEhJG,GAAsBC,GAAMA,EAAK,YAAY,EAG1CC,GAAwB,IAAIF,GAAsB,IAAI,IAAM,EAE/DG,EAAsB,MAAYC,GAA4BC,GAAI,yBAAyBA,CAAE,gFAAsFC,GAAkB,CAACD,EAAGE,EAAIC,IAAK,mBAAmBzG,EAASyG,CAAE,EAAEA,EAAGA,EAAG,IAAI,6BAA6BH,CAAE,eAAeE,CAAG,IAAUE,GAA0B,CAACJ,EAAGE,EAAIG,IAAU,gBAAgBA,CAAO,yDAAyDL,CAAE,eAAeE,CAAG,IAAUI,GAA2B,CAACC,EAAQtI,IAAM,GAAGsI,CAAO,GAAGT,CAAqB,0EAA0E7H,CAAG,sCAA4CuI,GAAuB,gDAAsDC,GAAiB,CAACF,EAAQtI,IAAM,GAAGsI,CAAO,GAAGT,CAAqB,kGAAkG7H,CAAG,sCAA4CyI,GAA2B,oCAA0CC,GAAoC,CAACJ,EAAQK,IAAc,GAAGL,CAAO,GAAGT,CAAqB,QAAQc,CAAW,qBAE3mCC,GAAe,gBAAsBC,GAAU,OAAaC,GAAoB,WAAiBC,GAA+B,uBAA6BC,GAAoB,CAACC,EAAYC,EAAYC,IAAS,CAAC,IAAMC,EAAU,CAAC,EAE3O,OAAO,SAASpJ,EAAIR,EAAM,CAAC,GAAG,CAAA0J,GAAa,SAASlJ,CAAG,GAAwB,EAAAiJ,GAAarH,EAAkBpC,CAAK,GAAqB,IAAG,OAAOA,GAAQ,UAAUkC,EAAOlC,CAAK,EAAG,OAAOA,EAG1L,KAAM4J,EAAU,OAAO,GAAGA,EAAUA,EAAU,OAAO,CAAC,IAAI,MAAMA,EAAU,IAAI,EAAG,OAAGA,EAAU,SAAS5J,CAAK,GAAG2J,GAAQ,KAAKd,GAA2BO,GAAe5I,CAAG,CAAC,EAAS+I,KAAgCK,EAAU,KAAK5J,CAAK,EAASA,GAAM,CAAE,EAO/O6J,EAAyB,CAAC7J,EAAMyJ,EAAYC,EAAYC,IAAS,CAAC,GAAG,CAAC,OAAO,KAAK,UAAU3J,EAAMwJ,GAAoBC,EAAYC,EAAYC,CAAM,CAAC,CAAE,OAAOG,EAAI,CAAC,OAAAH,GAAQ,KAAKZ,GAAuBe,CAAG,EAAS,IAAK,CAAC,EAAQC,GAAYJ,GAAQ,CAAC,IAAMC,EAAU,CAAC,EAEhR,OAAO,SAAkBpJ,EAAIR,EAAM,CAAC,GAAGqC,GAASrC,CAAK,EAAG,OAAA2J,GAAQ,KAAKX,GAAiBK,GAAU7I,CAAG,CAAC,EAAS8I,GAI7G,KAAMM,EAAU,OAAO,GAAGA,EAAUA,EAAU,OAAO,CAAC,IAAI,MAAMA,EAAU,IAAI,EAE9E,OAAGA,EAAU,SAAS5J,CAAK,GAAG2J,GAAQ,KAAKX,GAAiBK,GAAU7I,CAAG,CAAC,EAAS+I,KACnFK,EAAU,KAAK5J,CAAK,EAASA,EAAM,CAAE,EAAQgK,GAAiB,CAAC9K,EAAI+K,IAAW,CAC9E,IAAM5I,EAAO,MAAM,QAAQnC,CAAG,EAAE,CAAC,EAAE,CAAC,EAEpC,QAAUsB,KAAOtB,EAAK,GAAG,OAAO,eAAe,KAAKA,EAAIsB,CAAG,EAAE,CAAC,IAAMR,EAAMd,EAAIsB,CAAG,EAC3E0J,EAAeD,EAAS,KAAK/K,EAAIsB,EAAIR,CAAK,EAC7CiD,EAA0BiH,CAAc,GAAG,MAAM,QAAQA,CAAc,EAAG7I,EAAOb,CAAG,EAAEwJ,GAAiBE,EAAeD,CAAQ,EAAS5I,EAAOb,CAAG,EAAE0J,CAAgB,CAAE,OAAO7I,CAAO,EAM7K8I,EAAkB,CAACnK,EAAM2J,IAAS,CAAC,IAAMM,EAASF,GAAYJ,CAAM,EACvES,EAASH,EAAS,KAAKjK,EAAM,GAAGA,CAAK,EAAE,OAAGiD,EAA0BjD,CAAK,GAAG,MAAM,QAAQA,CAAK,EAAUgK,GAAiBhK,EAAMiK,CAAQ,EAAUG,CAAS,EAE3JC,GAAwB,yBAA+BC,GAAcR,GAAK,CAAC,GAAK,CAAC,MAAAS,CAAK,EAAET,EAAI,GAAG,OAAOS,GAAQ,UAAUA,EAAO,OAAOA,CAAwB,EAK3JC,GAAgB,CAACV,EAAIW,IAAQ,CAAC,GAAG,CAAChI,GAAcqH,CAAG,EAAG,OAAO,IAAI,MAAM,GAAGW,CAAK,KAAKZ,EAAyBC,CAAG,CAAC,EAAE,EAAG,GAAG,CAClI,IAAMY,EAAiBZ,EAAI,YAAkBa,EAAS,IAAID,EAAiB,GAAGD,CAAK,KAAKX,EAAI,OAAO,EAAE,EAC/FS,EAAMD,GAAcR,CAAG,EAAE,OAAGS,IAAOI,EAAS,MAAMJ,GACxD,OAAO,oBAAoBT,CAAG,EAAE,QAAQtJ,GAAK,CAAC,GAAGA,IAAM,WAAWA,IAAM,SAASA,IAAM,OAAQ,GAAG,CAACmK,EAASnK,CAAG,EAAEsJ,EAAItJ,CAAG,CAAE,MAAM,CAChI,CAAE,CAAC,EAASmK,CAAS,MAAM,CAAC,OAAO,IAAI,MAAM,GAAGF,CAAK,KAAKZ,EAAyBC,CAAG,CAAC,EAAE,CAAE,CAAC,EAAQc,EAAmBC,GAAO,CAAC,GAAGpI,GAAcoI,CAAK,EAAE,CAAC,IAAMC,EAASR,GAAcO,CAAK,EAAKC,IAC/LD,EAAM,MAAM,GAAGC,CAAQ;AAAA,EAAKT,EAAuB,GAAI,CAAC,WAAW,cAAc,IAAI,WAAW,QAAQ,CAAC,MAAAQ,EAAM,QAAQ,GAAK,WAAW,GAAK,SAAS,EAAI,CAAC,CAAC,CAAE,EAEvJE,GAAS,4BAAkCC,GAAY,SAAeC,GAAc,4BAAkCC,GAAY,MAAYC,GAAc,SAAeC,GAAsB,qBAA2BC,GAAkB,wBAA8BC,GAAkB,cAAoBC,GAAsB,wBAA8BC,GAAyB,iCAE/XC,GAAyB,aAAmBC,GAA4B,YAAkBC,GAA6B,UAAgBC,GAAwB,UAAgBC,GAAiC,YAEhNC,GAAuB,GAAG,IAC1BC,GAA0B,QAAS,IACnCC,GAAoC,IAAM,GAAG,IAC7CC,GAA2B,KAAM,IACjCC,GAAuB,GAAG,IAC1BC,GAA4C,GAAG,IAC/CC,GAAqB,IAIlBC,GAAqB,CAACC,EAAoB,QAAQ,CAAK,WAAW,qBAAoB,WAAW,mBAAmB,CAAC,GAAO,WAAW,mBAAmBA,CAAmB,IAAG,WAAW,mBAAmBA,CAAmB,EAAE,CAAC,EAAG,EAEvOC,GAAiB,CAACC,EAAQxM,EAAMsM,EAAoB,QAAQ,CAACD,GAAqBC,CAAmB,EAAE,WAAW,mBAAmBA,CAAmB,EAAEE,CAAO,EAAExM,CAAM,EAEzKyM,GAAiB,CAACD,EAAQF,EAAoB,SAASD,GAAqBC,CAAmB,EAAS,WAAW,mBAAmBA,CAAmB,EAAEE,CAAO,GAAI,SAASE,GAASC,EAAKC,EAAQC,EAAMT,GAAqB,CAAC,IAAIU,EAAU,MAAO,IAAIC,IAAO,CAAC,WAAW,aAAaD,CAAS,EAAEA,EAAU,WAAW,WAAW,IAAI,CAACH,EAAK,MAAMC,EAAQG,CAAI,CAAE,EAAEF,CAAK,CAAE,CAAE,CAIpX,IAAMG,GAA4B,CAACC,EAAOC,IAAqB,CAAC,IAAMC,EAAK,CAAC,EAAE,OAAAF,EAAO,QAAQ,CAACjN,EAAMQ,IAAM,CAAC,GAAGA,EAAI,WAAW0M,CAAkB,EAAE,CACpJ,IAAME,EAAQ5M,EAAI,UAAU0M,EAAmB,MAAM,EACrDC,EAAKC,CAAO,EAAEH,EAAO,IAAIzM,CAAG,CAAE,CAAC,CAAC,EAAS2M,CAAK,EAErCE,GAA8B,CAACC,EAAe,CAAC,IAAI,CAC5D,IAAMC,EAA6B,CAAC,MAAM9B,GAAyB,WAAWC,EAA2B,EAAQ8B,EAAY,IAAI,gBAAgB,WAAW,SAAS,MAAM,EACxKA,EAAY,IAAI3B,EAAgC,GAAGyB,EAAe,QAAQ,CAAC,QAAQE,EAAY,IAAI3B,EAAgC,EAAEmB,GAA4BQ,EAAYD,EAA6B,UAAU,CAAC,CAAC,EACzN,IAAMlI,EAAOmI,EAAY,IAAI5B,EAAuB,EAAQ6B,EAAWT,GAA4BQ,EAAYD,EAA6B,KAAK,EAAE,GAAGlI,GAAQ3B,GAAiB+J,CAAU,EAAE,CAC3L,IAAMC,EAAgB,CAAC,GAAIrI,EAAO,CAACA,CAAM,EAAE,CAAC,EAAGoI,CAAU,EAAEH,EAAe,QAAQ,CAAC,WAAW,GAAGI,CAAe,CAAC,CAAE,CAChHF,EAAY,IAAI7B,EAA4B,GAAG2B,EAAe,QAAQ,CAAC,iBAAiBE,EAAY,IAAI7B,EAA4B,CAAC,CAAC,CAAG,EAEnIgC,GAAsBC,GAAsB,CAAC,IAAMC,EAAe,OAAWC,EAAU,CAAC,EAExFjN,EAAE,EAAE,KAAMA,EAAE+M,EAAqB,QAAO,CAAC,GAAGA,EAAqB/M,CAAC,GAAG+M,EAAqB/M,CAAC,EAAE,CAAC,IAAIgN,EAAe,CAACC,EAAU/M,EAAM6M,EAAqB/M,CAAC,CAAC,EAAE+M,EAAqB,OAAO/M,EAAE,CAAC,EAAE,KAAM,CAACA,GAAG,CAAE,CAAC,OAAOiN,CAAU,EAI1NC,GAAmCH,GAAsB,CAAC,IAAMI,EAAkB,UAAgBC,EAAcL,EAAqB,OAAOM,GAAeA,EAAc,CAAC,IAAIF,CAAiB,EAAQG,EAAiBP,EAAqB,OAAOM,GAAeA,EAAc,CAAC,IAAIF,CAAiB,EAEhTJ,EAAqB,OAAO,EAAEA,EAAqB,OAAO,GAAGK,EAAc,GAAGE,CAAgB,CAAE,EAEvFC,GAA4BC,GAAU,CAAC,IAAMT,EAAqBnB,GAAiBlB,EAAqB,GAAG,CAAC,EACrH8B,GAA8BO,CAAoB,EAC/CA,EAAqB,OAAO,IAAGS,EAAS,2BAA2BT,CAAoB,EAAErB,GAAiBhB,GAAsB,CAAC,CAAC,EAAG,EAAQ+C,GAA4B,CAACnJ,EAAMoJ,IAAoB,CAAC,IAAMC,EAAWrJ,EAAM,MAAM,EAAMsJ,EAAY,GAAGzM,EAAWuM,EAAkBC,CAAU,CAAC,EAAE,CAAC,OAAOA,EAAW,CAAC,IAAK,OAAOC,EAAYhK,GAA2B,GAAGU,CAAK,EAAE,MAAM,IAAK,QAAQsJ,EAAYvJ,GAA4B,GAAGC,CAAK,EAAE,MAAM,IAAK,WAAWsJ,EAAYrJ,GAA+B,GAAGD,CAAK,EAAE,MAAM,IAAK,QAAQsJ,EAAYlJ,GAA4B,GAAGJ,CAAK,EAAE,MAAM,IAAK,QAAQsJ,EAAY/I,GAA4B,GAAGP,CAAK,EAAE,MAAM,QAAQoJ,EAAkBC,CAAU,EAAE,GAAGrJ,CAAK,EAAE,KAAM,CAAIsJ,GAAaF,EAAkBC,CAAU,EAAEC,CAAW,CAAG,CAAC,EAEnwBC,GAAgC,GAAG,IAEnCC,GAA4B,YAazBC,GAAoB,CAACnG,EAAIF,EAAGsG,EAAM,GAAKC,EAAO,KAAKC,EAAQ,KAAKC,EAAgB,CAAC,IAAI,CAAC,IAAMC,EAAc,SAAS,cAAc,QAAQ,EAAE,OAAAA,EAAc,KAAK,kBAAkBA,EAAc,OAAOH,EAAOG,EAAc,QAAQF,EAAQE,EAAc,IAAIxG,EAAIwG,EAAc,GAAG1G,EAAG0G,EAAc,MAAMJ,EAAM,OAAO,KAAKG,CAAe,EAAE,QAAQE,GAAe,CAACD,EAAc,aAAaC,EAAcF,EAAgBE,CAAa,CAAC,CAAE,CAAC,EAAED,EAAc,aAAa,cAAcN,EAA2B,EAASM,CAAc,EAM1gBE,GAAaC,GAAkB,CACxC,IAAMC,EAAa,SAAS,qBAAqB,MAAM,EAAE,GAAGA,EAAa,OAAO,EAAE,CAACA,EAAa,CAAC,GAAG,aAAaD,EAAiBC,EAAa,CAAC,GAAG,UAAU,EAAE,MAAO,CACtK,IAAMC,EAAe,SAAS,qBAAqB,QAAQ,EAAE,GAAGA,EAAe,OAAO,GAAGA,EAAe,CAAC,GAAG,WAAW,CAACA,EAAe,CAAC,GAAG,WAAW,aAAaF,EAAiBE,EAAe,CAAC,CAAC,EAAE,MAAO,CAC9M,IAAMC,EAAY,SAAS,cAAc,MAAM,EAAEA,EAAY,YAAYH,CAAgB,EAAE,IAAMI,EAAY,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAAEA,GAAa,aAAaD,EAAYC,EAAY,UAAU,CAAE,EAU3MC,GAAa,CAAChH,EAAIF,EAAGK,EAAQiG,EAAM,GAAKG,IAAkB,IAAI,QAAQ,CAACU,EAAQC,IAAS,CAAoB,SAAS,eAAepH,CAAE,GAAmBoH,EAAO,IAAI,MAAMrH,GAA4BC,CAAE,CAAC,CAAC,EAAG,GAAG,CAAC,IAAIqH,EAC9NT,GAAaP,GAAoBnG,EAAIF,EAAGsG,EAD6M,IAAI,CAAC,WAAW,aAAae,CAAS,EAAEF,EAAQnH,CAAE,CAAE,EAAgBG,GAAI,CAAC,WAAW,aAAakH,CAAS,EAAED,EAAO,IAAI,MAAMnH,GAAkBD,EAAGE,EAAIC,CAAE,CAAC,CAAC,CAAE,EACpVsG,CAAe,CAAC,EAC7EY,EAAU,WAAW,WAAW,IAAI,CAACD,EAAO,IAAI,MAAMhH,GAA0BJ,EAAGE,EAAIG,CAAO,CAAC,CAAC,CAAE,EAAEA,CAAO,CAAE,OAAOkB,EAAI,CAAC6F,EAAOnF,GAAgBV,EAAItB,GAAkBD,EAAGE,EAAI,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,EAInLoH,GAAN,KAAuB,CAAC,YAAYlG,EAAOf,EAAQ8F,GAAgC,CAAC,KAAK,OAAO/E,EAAO,KAAK,QAAQf,CAAQ,CAE1H,WAAWkH,EAAO,CAAC,GAAK,CAAC,IAAArH,EAAI,GAAAF,EAAG,QAAAK,EAAQ,MAAAiG,EAAM,SAAA/J,EAAS,gBAAAkK,CAAe,EAAEc,EAAaC,EAAgB,CAAC/N,EAAW8C,CAAQ,EAAE2K,GAAahH,EAAIF,EAAGK,GAAS,KAAK,QAAQiG,EAAMG,CAAe,EAAE,KAAKzG,GAAI,CAAKwH,GAAiBjL,EAASyD,CAAE,CAAG,CAAC,EAAE,MAAMuB,GAAK,CAAKiG,GAAiBjL,EAASyD,EAAGuB,CAAG,CAAG,CAAC,CAAE,CAAC,EAEpSjJ,GAAE,OAAO,IAAI,gBAAgB,EAAE,SAASmP,IAAG,CAAC,GAAKC,GAAE,EAAwUA,SAArU,CAAC,IAAIpP,EAAEmP,EAAE,GAA2I,KAApI,UAAU,CAAC,IAAI,EAAElR,GAAW,IAATA,GAAE,OAAsB,IAAT,QAAW,CAAC,IAAIkR,EAAE,EAAE,EAAE,GAAGA,EAAE,IAAI,EAAE,EAAE,QAAQxQ,EAAEwQ,EAAE,EAAWxQ,IAAT,OAAWA,EAAEA,EAAE,EAAKA,EAAE,IAAI,EAAE,IAAEA,EAAE,EAAEwQ,EAAE,GAAE,EAAE,EAAE,CAAE,CAAC,GAAE,EAAiBE,KAAT,QAAW,CAAC,IAAI,EAAEA,GAAe,IAAbA,GAAE,OAAOC,KAAmB,IAAT,QAAW,CAAC,IAAI/O,EAAE,EAAE,EAAqB,GAAnB,EAAE,EAAE,OAAO,EAAE,GAAG,GAAM,EAAE,EAAE,EAAE,IAAIgP,GAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAE,OAAO5Q,EAAE,CAAKwQ,IAAGnP,EAAErB,EAAEwQ,EAAE,GAAM,CAAC,EAAE5O,CAAE,CAAC,CAAS,GAAR+O,GAAE,EAAEF,KAAOD,EAAE,MAAMnP,CAAE,CAAU,CAAC,SAASrB,EAAEqB,EAAE,CAAC,GAAGoP,GAAE,EAAE,OAAOpP,EAAE,EAAEwP,GAAE,EAAEC,GAAEL,KAAI,GAAG,CAAC,OAAOpP,EAAE,CAAE,QAAC,CAAQmP,GAAE,CAAE,CAAC,CAAC,IAAI5O,GAAEmP,EAAE,OAAO,SAASC,GAAE3P,EAAE,CAAC,IAAImP,EAAEO,EAAE,EAAEnP,GAAEmP,EAAE,OAAOnP,GAAE,OAAO,GAAG,CAAC,OAAOP,EAAE,CAAE,QAAC,CAAQ0P,EAAEP,EAAE5O,GAAE,CAAE,CAAC,CAAC,IAAI8O,GAAE,OAAOD,GAAE,EAAEE,GAAE,EAAEG,GAAE,EAAED,GAAE,EAAEvR,GAAE,OAAO2R,GAAE,EAAE,SAAStS,GAAE0C,EAAE,CAAC,GAAY0P,IAAT,OAAW,CAAC,IAAIP,EAAEnP,EAAE,EAAE,GAAYmP,IAAT,QAAYA,EAAE,IAAIO,EAAG,OAAAP,EAAE,CAAC,EAAE,EAAE,EAAEnP,EAAE,EAAE0P,EAAE,EAAE,EAAE,OAAO,EAAEA,EAAE,EAAE,OAAO,EAAE,OAAO,EAAEP,CAAC,EAAcO,EAAE,IAAX,SAAaA,EAAE,EAAE,EAAEP,GAAEO,EAAE,EAAEP,EAAEnP,EAAE,EAAEmP,EAAK,GAAGO,EAAE,GAAE1P,EAAE,EAAEmP,CAAC,EAASA,EAAQ,GAAQA,EAAE,IAAP,GAAU,OAAAA,EAAE,EAAE,EAAcA,EAAE,IAAX,SAAcA,EAAE,EAAE,EAAEA,EAAE,EAAcA,EAAE,IAAX,SAAaA,EAAE,EAAE,EAAEA,EAAE,GAAEA,EAAE,EAAEO,EAAE,EAAEP,EAAE,EAAE,OAAOO,EAAE,EAAE,EAAEP,EAAEO,EAAE,EAAEP,GAAUA,CAAG,CAAC,CAAC,SAAS7O,EAAEN,EAAEmP,EAAE,CAAC,KAAK,EAAEnP,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK,EAAE,EAAE,KAAK,EAAiBmP,GAAE,QAAQ,KAAK,EAAiBA,GAAE,UAAU,KAAK,KAAoBA,GAAE,IAAK,CAAC7O,EAAE,UAAU,MAAMN,GAAEM,EAAE,UAAU,EAAE,UAAU,CAAC,MAAQ,EAAK,EAAEA,EAAE,UAAU,EAAE,SAASN,EAAE,CAAC,IAAImP,EAAE,KAAK,EAAE,KAAK,EAAK,IAAInP,GAAYA,EAAE,IAAX,SAAcA,EAAE,EAAE,EAAE,KAAK,EAAEA,EAAc,IAAT,OAAW,EAAE,EAAEA,EAAO2P,GAAE,UAAU,CAAC,IAAI3P,GAASA,EAAEmP,EAAE,IAAX,MAAenP,EAAE,KAAKmP,CAAC,CAAE,CAAC,EAAG,EAAE7O,EAAE,UAAU,EAAE,SAASN,EAAE,CAAC,IAAImP,EAAE,KAAK,GAAY,KAAK,IAAd,OAAgB,CAAC,IAAI,EAAEnP,EAAE,EAAEO,EAAEP,EAAE,EAAc,IAAT,SAAY,EAAE,EAAEO,EAAEP,EAAE,EAAE,QAAoBO,IAAT,SAAYA,EAAE,EAAE,EAAEP,EAAE,EAAE,QAAWA,IAAI,KAAK,IAAG,KAAK,EAAEO,EAAcA,IAAT,QAAWoP,GAAE,UAAU,CAAC,IAAI,GAAS,EAAER,EAAE,IAAX,MAAe,EAAE,KAAKA,CAAC,CAAE,CAAC,EAAG,CAAC,EAAE7O,EAAE,UAAU,UAAU,SAASN,EAAE,CAAC,IAAImP,EAAE,KAAK,OAAOU,EAAE,UAAU,CAAC,IAAI,EAAEV,EAAE,MAAMQ,GAAE,UAAU,CAAC,OAAO3P,EAAE,CAAC,CAAE,CAAC,CAAE,EAAE,CAAC,KAAK,KAAK,CAAC,CAAE,EAAEM,EAAE,UAAU,QAAQ,UAAU,CAAC,OAAO,KAAK,KAAM,EAAEA,EAAE,UAAU,SAAS,UAAU,CAAC,OAAO,KAAK,MAAM,EAAG,EAAEA,EAAE,UAAU,OAAO,UAAU,CAAC,OAAO,KAAK,KAAM,EAAEA,EAAE,UAAU,KAAK,UAAU,CAAC,IAAIN,EAAE,KAAK,OAAO2P,GAAE,UAAU,CAAC,OAAO3P,EAAE,KAAM,CAAC,CAAE,EAAE,OAAO,eAAeM,EAAE,UAAU,QAAQ,CAAC,IAAI,UAAU,CAAC,IAAIN,EAAE1C,GAAE,IAAI,EAAE,OAAY0C,IAAT,SAAWA,EAAE,EAAE,KAAK,GAAS,KAAK,CAAE,EAAE,IAAI,SAASA,EAAE,CAAC,GAAGA,IAAI,KAAK,EAAE,CAAC,GAAGsP,GAAE,IAAI,MAAM,IAAI,MAAM,gBAAgB,GAAG,SAAStP,EAAE,CAAQoP,KAAJ,GAAWE,KAAJ,GAAStP,EAAE,IAAIwP,KAAGxP,EAAE,EAAEwP,GAAEvR,GAAE,CAAC,EAAE+B,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,EAAE,EAAE/B,EAAC,EAAG,GAAE,IAAI,EAAE,KAAK,EAAE+B,EAAE,KAAK,IAAI4P,KAAIR,KAAI,GAAG,CAAC,QAAQzQ,EAAE,KAAK,EAAWA,IAAT,OAAWA,EAAEA,EAAE,EAAEA,EAAE,EAAE,EAAE,CAAE,QAAC,CAAQwQ,GAAE,CAAE,CAAC,CAAC,CAAC,CAAC,EAAE,SAASW,EAAE9P,EAAEmP,EAAE,CAAC,OAAO,IAAI7O,EAAEN,EAAEmP,CAAC,CAAE,CAAC,SAASI,GAAEvP,EAAE,CAAC,QAAQmP,EAAEnP,EAAE,EAAWmP,IAAT,OAAWA,EAAEA,EAAE,EAAE,GAAGA,EAAE,EAAE,IAAIA,EAAE,GAAG,CAACA,EAAE,EAAE,EAAE,GAAGA,EAAE,EAAE,IAAIA,EAAE,EAAE,MAAQ,GAAK,MAAQ,EAAM,CAAC,SAASY,GAAE/P,EAAE,CAAC,QAAQmP,EAAEnP,EAAE,EAAWmP,IAAT,OAAWA,EAAEA,EAAE,EAAE,CAAC,IAAI,EAAEA,EAAE,EAAE,EAAqC,GAAvB,IAAT,SAAWA,EAAE,EAAE,GAAEA,EAAE,EAAE,EAAEA,EAAEA,EAAE,EAAE,GAAeA,EAAE,IAAX,OAAa,CAACnP,EAAE,EAAEmP,EAAE,KAAM,CAAC,CAAC,CAAC,SAASvR,GAAEoC,EAAE,CAAoB,QAAfmP,EAAEnP,EAAE,EAAE,EAAE,OAAsBmP,IAAT,QAAW,CAAC,IAAI5O,EAAE4O,EAAE,EAAUA,EAAE,IAAP,IAAUA,EAAE,EAAE,EAAEA,CAAC,EAAc5O,IAAT,SAAWA,EAAE,EAAE4O,EAAE,GAAcA,EAAE,IAAX,SAAaA,EAAE,EAAE,EAAE5O,IAAQ,EAAE4O,EAAEA,EAAE,EAAE,EAAEA,EAAE,EAAcA,EAAE,IAAX,SAAaA,EAAE,EAAE,QAAOA,EAAE5O,CAAE,CAACP,EAAE,EAAE,CAAE,CAAC,SAASD,GAAEC,EAAEmP,EAAE,CAAC7O,EAAE,KAAK,KAAK,OAAO6O,CAAC,EAAE,KAAK,EAAEnP,EAAE,KAAK,EAAE,OAAO,KAAK,EAAE4P,GAAE,EAAE,KAAK,EAAE,CAAE,CAAC7P,GAAE,UAAU,IAAIO,EAAIP,GAAE,UAAU,EAAE,UAAU,CAAY,GAAX,KAAK,GAAG,GAAM,EAAE,KAAK,EAAE,MAAQ,GAAiD,IAAnC,GAAG,KAAK,IAAb,KAA6B,KAAK,GAAG,GAAM,KAAK,IAAI6P,IAAE,MAAQ,GAAwB,GAAnB,KAAK,EAAEA,GAAE,KAAK,GAAG,EAAK,KAAK,EAAE,GAAG,CAACL,GAAE,IAAI,EAAG,YAAK,GAAG,GAAW,GAAM,IAAIvP,EAAE0P,EAAE,GAAG,CAACK,GAAE,IAAI,EAAEL,EAAE,KAAK,IAAIP,EAAE,KAAK,EAAE,GAAK,GAAG,KAAK,GAAG,KAAK,IAAIA,GAAO,KAAK,IAAT,KAAY,KAAK,EAAEA,EAAE,KAAK,GAAG,IAAI,KAAK,IAAK,OAAOnP,EAAE,CAAC,KAAK,EAAEA,EAAE,KAAK,GAAG,GAAG,KAAK,GAAI,CAAC,OAAA0P,EAAE1P,EAAEpC,GAAE,IAAI,EAAE,KAAK,GAAG,GAAW,EAAK,EAAEmC,GAAE,UAAU,EAAE,SAASC,EAAE,CAAC,GAAY,KAAK,IAAd,OAAgB,CAAC,KAAK,GAAG,GAAG,QAAQmP,EAAE,KAAK,EAAWA,IAAT,OAAWA,EAAEA,EAAE,EAAEA,EAAE,EAAE,EAAEA,CAAC,CAAE,CAAC7O,EAAE,UAAU,EAAE,KAAK,KAAKN,CAAC,CAAE,EAAED,GAAE,UAAU,EAAE,SAASC,EAAE,CAAC,GAAY,KAAK,IAAd,SAAiBM,EAAE,UAAU,EAAE,KAAK,KAAKN,CAAC,EAAc,KAAK,IAAd,QAAgB,CAAC,KAAK,GAAG,IAAI,QAAQmP,EAAE,KAAK,EAAWA,IAAT,OAAWA,EAAEA,EAAE,EAAEA,EAAE,EAAE,EAAEA,CAAC,CAAE,CAAE,EAAEpP,GAAE,UAAU,EAAE,UAAU,CAAC,GAAG,EAAE,EAAE,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,QAAQC,EAAE,KAAK,EAAWA,IAAT,OAAWA,EAAEA,EAAE,EAAEA,EAAE,EAAE,EAAE,CAAE,CAAC,EAAE,OAAO,eAAeD,GAAE,UAAU,QAAQ,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,IAAI,MAAM,gBAAgB,EAAE,IAAIC,EAAE1C,GAAE,IAAI,EAAoC,GAAlC,KAAK,EAAE,EAAc0C,IAAT,SAAWA,EAAE,EAAE,KAAK,GAAK,GAAG,KAAK,EAAE,MAAM,KAAK,EAAE,OAAO,KAAK,CAAE,CAAC,CAAC,EAAE,SAASgQ,GAAEhQ,EAAE,CAAC,IAAIrB,EAAEqB,EAAE,EAAa,GAAXA,EAAE,EAAE,OAAsB,OAAOrB,GAAnB,WAAqB,CAACyQ,KAAI,IAAI7O,EAAEmP,EAAEA,EAAE,OAAO,GAAG,CAAC/Q,EAAE,CAAE,OAAOwQ,EAAE,CAAC,MAAAnP,EAAE,GAAG,GAAGA,EAAE,GAAG,EAAEiQ,GAAEjQ,CAAC,EAAQmP,CAAE,QAAC,CAAQO,EAAEnP,EAAE4O,GAAE,CAAE,CAAC,CAAC,CAAC,SAASc,GAAEjQ,EAAE,CAAC,QAAQmP,EAAEnP,EAAE,EAAWmP,IAAT,OAAWA,EAAEA,EAAE,EAAEA,EAAE,EAAE,EAAEA,CAAC,EAAEnP,EAAE,EAAE,OAAOA,EAAE,EAAE,OAAOgQ,GAAEhQ,CAAC,CAAE,CAAC,SAASvB,GAAEuB,EAAE,CAAC,GAAG0P,IAAI,KAAK,MAAM,IAAI,MAAM,qBAAqB,EAAE9R,GAAE,IAAI,EAAE8R,EAAE1P,EAAE,KAAK,GAAG,GAAM,EAAE,KAAK,GAAEiQ,GAAE,IAAI,EAAEd,GAAE,CAAE,CAAC,SAASe,GAAElQ,EAAEmP,EAAE,CAAC,KAAK,EAAEnP,EAAE,KAAK,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK,EAAE,GAAG,KAAK,KAAoBmP,GAAE,KAAQ5O,IAAEA,GAAE,KAAK,IAAI,CAAE,CAAC2P,GAAE,UAAU,EAAE,UAAU,CAAC,IAAIlQ,EAAE,KAAK,EAAE,EAAE,GAAG,CAAoB,GAAhB,EAAE,KAAK,GAAqB,KAAK,IAAd,OAAgB,OAAO,IAAImP,EAAE,KAAK,EAAE,EAAiB,OAAOA,GAAnB,aAAqB,KAAK,EAAEA,EAAE,QAAC,CAAQnP,EAAE,CAAE,CAAC,EAAEkQ,GAAE,UAAU,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,IAAI,MAAM,gBAAgB,EAAE,KAAK,GAAG,EAAE,KAAK,GAAG,GAAGF,GAAE,IAAI,EAAED,GAAE,IAAI,EAAEX,KAAI,IAAIpP,EAAE0P,EAAE,OAAAA,EAAE,KAAYjR,GAAE,KAAK,KAAKuB,CAAC,CAAE,EAAEkQ,GAAE,UAAU,EAAE,UAAU,CAAM,EAAE,KAAK,IAAI,KAAK,GAAG,EAAE,KAAK,EAAEb,GAAEA,GAAE,KAAM,EAAEa,GAAE,UAAU,EAAE,UAAU,CAAC,KAAK,GAAG,EAAO,EAAE,KAAK,GAAGD,GAAE,IAAI,CAAE,EAAEC,GAAE,UAAU,QAAQ,UAAU,CAAC,KAAK,EAAE,CAAE,EAAE,SAASL,EAAE7P,EAAEmP,EAAE,CAAC,IAAI,EAAE,IAAIe,GAAElQ,EAAEmP,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAE,OAAO,EAAE,CAAC,QAAE,EAAE,EAAQ,CAAE,CAAC,IAAI5O,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,OAAAA,EAAE,OAAO,OAAO,EAAEA,EAASA,CAAE,CAI9sJ,IAAM4P,GAAN,KAAiB,CAAC,aAAa,CAAC,KAAK,MAAM,CAAC,CAAE,CAAC,QAAQC,EAAK,CAAC,KAAK,MAAM,KAAKA,CAAI,CAAE,CAAC,SAAS,CAAC,OAAG,KAAK,MAAM,SAAS,EAAU,KAAa,KAAK,MAAM,MAAM,CAAE,CAAC,SAAS,CAAC,OAAO,KAAK,MAAM,SAAS,CAAE,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,MAAO,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,CAAE,CAAC,EAE7PC,GAAc,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAQC,GAAkB,MAAYC,GAAoB,QAAcC,GAAe,SAAeC,GAAqB,sDAA4DC,GAAc,uBAE3PC,GAAN,KAAY,CAAC,YAAYC,EAAYN,GAAkBO,EAAM,GAAGC,EAAY,QAAQ,CAAC,KAAK,YAAYT,GAAcO,CAAW,EAAE,KAAK,MAAMC,EAAM,KAAK,YAAYC,CAAY,CAAC,OAAOxE,EAAK,CAAC,KAAK,UAAU,MAAMA,CAAI,CAAE,CAAC,QAAQA,EAAK,CAAC,KAAK,UAAU,OAAOA,CAAI,CAAE,CAAC,SAASA,EAAK,CAAC,KAAK,UAAU,QAAQA,CAAI,CAAE,CAAC,QAAQA,EAAK,CAAC,KAAK,UAAU,OAAOA,CAAI,CAAE,CAAC,SAASA,EAAK,CAAC,KAAK,UAAU,QAAQA,CAAI,CAAE,CAAC,UAAUyE,EAAUzE,EAAK,CAAI,KAAK,aAAa+D,GAAcU,CAAS,GAAG,KAAK,YAAYA,EAAU,YAAY,CAAC,IAAI,GAAG,KAAK,cAAczE,CAAI,CAAC,CAAG,CAAC,SAAS0E,EAAS,CAAC,KAAK,MAAMA,GAAU,KAAK,KAAM,CAEnlB,eAAeC,EAAS,CAAC,KAAK,YAAYZ,GAAcY,CAAQ,EAAK3P,EAAY,KAAK,WAAW,IAAG,KAAK,YAAY+O,GAAcC,EAAiB,EAAG,CAElJ,cAAchE,EAAK,CAAC,GAAG,MAAM,QAAQA,CAAI,GAAGA,EAAK,OAAO,EAAE,CAC/D,IAAI4E,EAAI,MAAMV,EAAc,GACzB,KAAK,QAAOU,EAAI,GAAGA,CAAG,MAAM,KAAK,KAAK,IACzC,IAAMC,EAAY/P,EAASkL,EAAK,CAAC,CAAC,EAAEA,EAAK,CAAC,EAAE,KAAK,EAAE,GACnD4E,EAAI,GAAGA,CAAG,OAAOC,CAAW,GAAG,IAAMC,EAAc,CAACF,EAAIT,GACxDC,EACA,EACA,OAAItP,EAASkL,EAAK,CAAC,CAAC,GAAG8E,EAAc,KAAK9E,EAAK,CAAC,CAAC,EACjD8E,EAAc,KAAK,GAAG9E,EAAK,MAAM,CAAC,CAAC,EAAS8E,CAAc,CAAC,OAAO9E,CAAK,CAAC,EAAO+E,GAAc,IAAIV,GAE7FW,GAAuB,SAASA,EAAU,CAAC,OAAAA,EAAU,iBAAoB,mBAAmBA,EAAU,mBAAsB,qBAAqBA,EAAU,mBAAsB,4BAAmCA,CAAU,GAAE,CAAC,CAAC,EAGhOC,GAAwB,CAAC,eAAe,gBAAgB,gBAAgB,iBAAiB,MAAM,EAAQC,GAAqB,gBAE5HC,GAA+B,wDAA8DC,GAAsB,oFAA0FC,GAAuB,0CAAgDC,GAA+B,uEAA6EC,GAA+B,uEAA6EC,GAA2B7J,GAAS,GAAGA,CAAO,GAAGT,CAAqB,yGAA+GuK,GAAyB,CAAC9J,EAAQ+J,EAAUpK,IAAM,GAAGK,CAAO,GAAGT,CAAqB,iBAAiBI,CAAG,SAASoK,CAAS,iBAC3xBC,GAAkC,CAAChK,EAAQiK,EAAuBC,IAAiC,GAAGlK,CAAO,GAAGT,CAAqB,wBAAwB0K,CAAsB,uFAAuF,OAAO,KAAKC,CAA8B,CAAC,KAAWC,GAAkB,CAACnK,EAAQoK,IAAS,GAAGpK,CAAO,GAAGT,CAAqB,yBAAyB6K,CAAM,IAAUC,GAAiB,2BAAiCC,GAAqBtK,GAAS,GAAGA,CAAO,GAAGT,CAAqB,8BAAoCgL,GAA0BvK,GAAS,GAAGA,CAAO,GAAGT,CAAqB,0BAAgCiL,GAA4B,CAACxK,EAAQyK,IAAa,GAAGzK,CAAO,GAAGT,CAAqB,WAAWkL,CAAU,oBAA0BC,GAAuB,CAAC1K,EAAQyK,IAAa,GAAGzK,CAAO,GAAGT,CAAqB,WAAWkL,CAAU,eAAqBE,GAAwB,CAAC3K,EAAQyK,IAAa,GAAGzK,CAAO,GAAGT,CAAqB,WAAWkL,CAAU,2IAAiJG,GAAkB,CAAC5K,EAAQyK,EAAWI,IAAe,GAAG7K,CAAO,GAAGT,CAAqB,WAAWkL,CAAU,2DAA2DI,CAAY,kBAAwBC,GAAwB,CAAC9K,EAAQ+K,EAASN,IAAa,GAAGzK,CAAO,GAAGT,CAAqB,yBAAyBwL,CAAQ,gCAAgCN,CAAU,KAAWO,GAA0B,oCAA0CC,GAA2B,CAACjL,EAAQkL,IAAW,GAAGlL,CAAO,GAAGT,CAAqB,kBAAkB2L,CAAQ,yGAA+GC,GAAgC,CAACnL,EAAQoL,IAAe,GAAGpL,CAAO,GAAGT,CAAqB,uBAAuB6L,CAAY,8GAAoHC,GAA0BrL,GAAS,GAAGA,CAAO,GAAGT,CAAqB,qDAA2D+L,GAAmB,CAACC,EAAOC,EAAOC,EAAW9L,EAAI+L,IAAW,GAAGH,CAAM,gBAAgBC,CAAM,KAAKC,CAAU,cAAc9L,CAAG,eAAe+L,EAAS,KAAK,CAAC,GAASC,GAAkB,CAACJ,EAAO,EAAE5L,IAAM,GAAG4L,CAAM,qCAAqC,EAAE,EAAE,KAAK,EAAE,iCAAiC5L,CAAG,GAASiM,GAAe,CAACL,EAAO5L,IAAM,GAAG4L,CAAM,aAAa5L,CAAG,GAASkM,GAAsBnU,GAAK,iCAAiCA,CAAG,eAAqBoU,GAAuBpU,GAAK,yCAAyCA,CAAG,iBAAuBqU,GAA+BP,GAAQ,oCAAoCA,CAAM,kFAAwFQ,GAAwCtU,GAAK,gCAAgCA,CAAG,+DAAqEuU,GAA+C,mGAC9iGC,GAAgC,CAAClM,EAAQK,EAAY8L,IAAqB,GAAGnM,CAAO,GAAGT,CAAqB,qBAAqBc,CAAW,4EAA4EiJ,EAAuB,wBAAwB6C,CAAkB,0BAAgCC,GAA+C,CAACpM,EAAQqM,EAAiCC,EAAyCC,IAAiB,GAAGvM,CAAO,GAAGT,CAAqB,mCAAmC8M,CAAgC,+EAA+E,OAAO,KAAKC,CAAwC,CAAC,2BAA2BC,CAAc,0BAAgCC,GAAwC,CAACxM,EAAQyM,EAAyBF,IAAiB,GAAGvM,CAAO,GAAGT,CAAqB,mGAAmGkN,CAAwB,wBAAwBF,CAAc,2GAAiHG,GAA4C,CAAC1M,EAAQ2M,EAAqBC,IAAsB,GAAG5M,CAAO,GAAGT,CAAqB,+BAA+BoN,CAAoB,kDAAkDC,CAAmB,iDAAuDC,GAAyB,CAAC7M,EAAQ8M,EAASC,EAAcC,IAAmB,GAAGhN,CAAO,GAAGT,CAAqB,QAAQuN,CAAQ,6BAA6BC,CAAa,+GAA+GC,CAAgB,KAAWC,GAAoC,CAACC,EAAWJ,IAAW,GAAGI,CAAU,GAAG3N,CAAqB,0CAA0CuN,CAAQ,iCAAuCK,GAA+BD,GAAY,GAAGA,CAAU,GAAG3N,CAAqB,qIAA2I6N,GAA+BF,GAAY,GAAGA,CAAU,GAAG3N,CAAqB,+EAAqF8N,GAA+BrN,GAAS,GAAGA,CAAO,GAAGT,CAAqB,8FAAoG+N,GAA2B,CAACtN,EAAQF,EAAQyN,IAAe,GAAGvN,CAAO,GAAGT,CAAqB,8BAA8BO,CAAO,6CAA6CyN,CAAY,4BAAkCC,GAAoC,CAACxN,EAAQyN,EAAeF,IAAe,GAAGvN,CAAO,GAAGT,CAAqB,uCAAuCkO,CAAc,sDAAsDF,CAAY,4BAAkCG,GAA2C,CAAC1N,EAAQyN,EAAe3N,IAAU,GAAGE,CAAO,GAAGT,CAAqB,uCAAuCkO,CAAc,gDAAgD3N,CAAO,oDAA0D6N,GAAqB3N,GAAS,GAAGA,CAAO,GAAGT,CAAqB,0LAAgMqO,GAAgC,CAAC5N,EAAQF,EAAQ+N,IAAa,GAAG7N,CAAO,GAAGT,CAAqB,6BAA6BO,CAAO,+CAA+C+N,CAAU,mGAAyGC,GAA2B,CAAC9N,EAAQ+N,EAAUC,IAAqB,GAAGhO,CAAO,GAAGT,CAAqB,4BAA4BwO,CAAS,iEAAiEC,CAAkB,kEAAwEC,GAA+BjO,GAAS,GAAGA,CAAO,GAAGT,CAAqB,gHAAsH2O,GAA4B,CAAClO,EAAQmO,EAAMC,EAAoBC,IAAmB,GAAGrO,CAAO,GAAGT,CAAqB,qBAAqB6O,CAAmB,iCAAiCD,CAAK,8CAA8CE,CAAgB,0BAAgCC,GAAsBtO,GAAS,GAAGA,CAAO,GAAGT,CAAqB,kCAAwCgP,GAA2B,CAACvO,EAAQwO,IAAY,GAAGxO,CAAO,GAAGT,CAAqB,mCAAmCiP,CAAS,6DAAmEC,GAA2B,CAACC,EAAS/O,IAAM,+CAA+C+O,CAAQ,cAAc/O,CAAG,IAAUgP,GAAyC,CAAC3O,EAAQ4O,EAAiBC,IAAkB,GAAG7O,CAAO,GAAGT,CAAqB,qCAAqCqP,CAAgB,oIAAoIC,CAAe,0BAAgCC,GAA6C,CAAC9O,EAAQ+O,EAAqBC,IAAsB,GAAGhP,CAAO,GAAGT,CAAqB,yCAAyCwP,CAAoB,kHAAkHC,CAAmB,0BAAgCC,GAA0B,CAACjP,EAAQyK,IAAa,GAAGzK,CAAO,GAAGT,CAAqB,GAAGkL,CAAU,sEAA4EyE,GAAoC,CAAClP,EAAQmP,EAAoBC,EAAeC,IAA0B,CAAC,IAAMC,EAAeF,EAAe,SAAS,EAAQG,EAAcD,EAAe,KAAKF,EAAe,CAAC,CAAC,eAAe,MAAMA,EAAe,KAAK,MAAM,CAAC,kBAAwBI,EAAY,GAAGxP,CAAO,GAAGT,CAAqB,GAAG4P,CAAmB,QAAQI,CAAa,2BAA2B,OAAGF,EAAgC,GAAGG,CAAW,QAAQF,EAAe,aAAa,eAAe,iCAAyC,GAAGE,CAAW,+DAA+DF,EAAe,KAAK,MAAM,oCAAqC,EAAQG,GAA6B,CAACzP,EAAQ0P,IAAoB,GAAG1P,CAAO,GAAGT,CAAqB,8BAA8BmQ,CAAiB,+DAAqEC,GAAuC3P,GAAS,GAAGA,CAAO,GAAGT,CAAqB,0HAAgIqQ,GAAwB,CAAC5P,EAAQ6P,IAAiB,GAAG7P,CAAO,GAAGT,CAAqB,6BAA6BsQ,EAAe,KAAK,IAAI,CAAC,IAAUC,GAA0B,CAAC9P,EAAQ+P,IAAqB,GAAG/P,CAAO,GAAGT,CAAqB,2DAA2DwQ,EAAmB,KAAK,IAAI,CAAC,+GAAqHC,GAAyC,CAAChQ,EAAQiQ,IAAgB,GAAGjQ,CAAO,GAAGT,CAAqB,qDAAqD0Q,CAAa,6BAEn8OC,GAA4B,CAAC,IAAI,EAAI,EAErCC,GAAY,kBAAwBC,GAAgB,UAAgBC,GAAY,IAAI,OAAO,qQAQ1E,EAGjBC,GAAW,SAAeC,GAAiB,6BAAmCC,GAAqB,KAAWC,GAA6B,GAAGF,EAAgB,IAAIC,EAAoB,IAAIF,EAAU,IAAIH,EAAW,GAASO,GAAoB,GAAGH,EAAgB,IAAIC,EAAoB,IAAIF,EAAU,IAAIF,EAAe,GAASO,GAAsB,8BAE3VC,GAAmC,KAAWC,GAAoC,MAAYC,GAA+B,CAAC,QAAQ,wBAAwB,SAAS,yBAAyB,MAAM,sBAAsB,OAAO,sBAAsB,EAAQC,GAAyC,CAAC,CAACH,EAAkC,EAAE,oBAAoB,OAAO,yBAAyB,EAAQI,GAAwC,CAAC,CAACH,EAAmC,EAAE,WAAW,OAAO,aAAa,EAAQI,GAA8B,aAAmBC,GAAyB,aAAmBC,GAA4C,qBAE3oBC,GAAmB,CAAC,UAAUT,GAAsB,gBAAgB,GAAK,SAAS,CAAC,UAAU,GAAK,QAAQxN,GAA2B,OAAO,CAAC,QAAQ,EAAK,CAAC,EAAE,eAAe,MAAM,mBAAmB,GAAK,aAAa+M,GAA4B,UAAU,GAAM,mBAAmB,CAAC,EAAE,yBAAyB,CAAC,EAAE,aAAa,CAAC,EAAE,wBAAwB,GAAK,mBAAmB,GAAK,eAAe,OAAO,QAAQ,CAAC,EAAE,oCAAoC,GAAM,gCAAgC,GAAM,6BAA6B7M,GAA4C,QAAQ,CAAC,WAAW,CAAC,QAAQuN,EAAkC,EAAE,QAAQ,GAAK,OAAO,CAAC,CAAC,EAAE,gBAAgB,GAAM,sBAAsB,GAAM,aAAa,GAAM,uBAAuB,CAAC,EAAE,qBAAqB,EAAK,EAAQS,GAAiBxJ,EAAE5P,EAAMmZ,EAAkB,CAAC,EAE1zBE,EAA4BpW,GAAW,CAAC,OAAO,GAAG,WAAW,CAAC,EAAE,YAAY,GAAG,QAAQ,GAAG,YAAY,CAAC,EAAE,gBAAgB,GAAG,uBAAuB,GAAG,YAAY,CAAC,EAAE,UAAU,IAAI,CAAC,EAAQqW,GAAsBrW,GAAW,CAAC,QAAQ,CAAC,OAAO,GAAK,WAAW,GAAK,QAAQ,GAAK,YAAY,GAAK,YAAY,GAAK,UAAU,GAClU,YAAY,GAAM,gBAAgB,GAAM,uBAAuB,EAAK,CAAC,CAAC,EAAQsW,GAAkC,GAE1GC,GAAa,CAAC,OAAO5J,EAAEyJ,EAA4B,MAAM,EAAE,WAAWzJ,EAAEyJ,EAA4B,UAAU,EAAE,YAAYzJ,EAAEyJ,EAA4B,WAAW,EAAE,QAAQzJ,EAAEyJ,EAA4B,OAAO,EAAE,YAAYzJ,EAAEyJ,EAA4B,WAAW,EAAE,gBAAgBzJ,EAAEyJ,EAA4B,eAAe,EAAE,uBAAuBzJ,EAAEyJ,EAA4B,sBAAsB,EAAE,YAAYzJ,EAAEyJ,EAA4B,WAAW,EAAE,UAAUzJ,EAAEyJ,EAA4B,SAAS,CAAC,EAElgBI,GAAkB,CAAC,SAAS7J,EAAE,EAAI,EAAE,QAAQ,CAAC,wBAAwBA,EAAE,EAAK,EAAE,yBAAyBA,EAAE,EAAK,EAAE,0BAA0BA,EAAE,EAAK,CAAC,EAAE,kBAAkBA,EAAE,EAAK,EAAE,YAAYA,EAAE,EAAK,EAAE,gBAAgBA,EAAE,EAAK,EAAE,kBAAkBA,EAAE,EAAK,EAAE,+BAA+BA,EAAE,EAAK,EAAE,YAAYA,EAAE,MAAS,EAAE,eAAeA,EAAE,CAAC,CAAC,CAAC,EAE7U8J,GAAe,CAAC,wBAAwB9J,EAAE,EAAK,EAAE,0BAA0BA,EAAE,EAAK,EAAE,YAAYA,EAAE,CAAC,CAAC,CAAC,EAErG+J,GAAkB/J,EAAE,MAAS,EAE7BgK,GAAe,CAAC,mBAAmBhK,EAAE,MAAS,EAAE,oBAAoBA,EAAE4I,EAA4B,EAAE,eAAe5I,EAAE6I,EAAmB,EAAE,gBAAgB7I,EAAE,MAAS,EAAE,OAAOA,EAAE,MAAS,EAAE,YAAYA,EAAE,EAAK,EAAE,SAASA,EAAES,EAAmB,EAAE,OAAOT,EAAE,EAAK,EAAE,eAAeA,EAAE,CAAC,CAAC,EAAE,SAASA,EAAE,MAAS,EAAE,aAAaA,EAAE,MAAS,EAAE,sBAAsBA,EAAE,MAAS,CAAC,EAEvWiK,GAAc,CAAC,QAAQjK,EAAE,EAAK,EAAE,YAAYA,EAAE,EAAK,EAAE,KAAKA,EAAE,CAAC,CAAC,EAAE,+BAA+BA,EAAE,MAAS,EAAE,WAAWA,EAAE,CAAC,QAAQ,EAAK,CAAC,EAAE,YAAYA,EAAE,CAAC,CAAC,EAAE,mBAAmBA,EAAE,KAAK,EAAE,SAASA,EAAE,MAAS,EAAE,SAASA,EAAE,MAAS,CAAC,EAEnOkK,GAAa,CAAC,QAAQlK,EAAE,CAAC,EAAE,QAAQA,EAAE,CAAC,EAAE,KAAKA,EAAE,CAAC,EAAE,OAAOA,EAAE,CAAC,EAAE,UAAUA,EAAE,CAAC,EAAE,kBAAkBA,EAAE,MAAS,CAAC,EAE3GmK,GAAgB,IACf3P,GAAsB4P,GAAa,CAAC,IAAIpK,EAAE,CAAC,KAAK5F,GAAS,UAAUE,GAAc,QAAQD,GAAY,YAAYE,EAAW,CAAC,EAAE,OAAOyF,EAAE,IAAI,EAAE,QAAQA,EAAE,CAAC,KAAK5F,GAAS,QAAQC,GAAY,eAAe,WAAW,qBAAqB,QAAQ8P,GAAgB,CAAC,CAAC,EAAE,UAAUnK,EAAE,IAAI,EAAE,OAAOA,EAAE,IAAI,EAAE,QAAQA,EAAE,IAAI,EAAE,GAAGA,EAAE,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC,EAAE,OAAOA,EAAE,IAAI,EAAE,OAAOA,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQA,EAAE,MAAS,EAAE,SAASA,EAAE,MAAS,CAAC,EAE9cqK,GAAmBrK,EAAE,CAAC,CAAC,EAEvBsK,GAAwB,CAAC,uBAAuBtK,EAAE,CAAC,CAAC,EAAE,mBAAmBA,EAAE,CAAC,CAAC,EAAE,qBAAqBA,EAAE,CAAC,CAAC,EAAE,mBAAmBA,EAAE,CAAC,CAAC,EAAE,gBAAgBA,EAAE,EAAI,EAAE,wBAAwBA,EAAE,CAAC,CAAC,EAAE,wBAAwBA,EAAE,EAAK,EAAE,mBAAmBA,EAAE,CAAC,CAAC,CAAC,EAElPuK,GAAiB,CAAC,mBAAmBvK,EAAE,CAAC,CAAC,EAAE,oBAAoBA,EAAE,CAAC,CAAC,CAAC,EAEpEwK,GAAa,CAAC,MAAMxK,EAAE,EAAK,EAAE,cAAcA,EAAE,CAAC,CAAC,EAAE,cAAcA,EAAE,CAAC,CAAC,EAAE,wBAAwBA,EAAE,CAAC,CAAC,EAAE,cAAcA,EAAE,CAAC,CAAC,EAAE,mBAAmBA,EAAE,CAAC,CAAC,EAE9IyK,GAAa,CAAC,qBAAqBzK,EAAE,MAAS,EAAE,QAAQA,EAAE,EAAK,EAAE,KAAKA,EAAE,MAAS,EAAE,OAAOA,EAAE,MAAS,EAAE,QAAQA,EAAE,CAAC,CAAC,EAAE,uBAAuBA,EAAE,EAAK,CAAC,EAEpJ0K,GAAuB,CAAC,2BAA2B1K,EAAE,EAAK,EAAE,eAAeA,EAAE,MAAS,CAAC,EAEvF2K,GAAqB,CAAC,sBAAsB3K,EAAE,MAAS,EAAE,gBAAgBA,EAAE,EAAI,CACrF,EAEM4K,GAAe,CAAC,QAAQ5K,EAAE,EAAK,EAAE,cAAc,CAAC,QAAQA,EAAE,EAAK,EAAE,WAAWA,EAAE,MAAS,EAAE,oBAAoBA,EAAE,MAAS,CAAC,CAAC,EAE1H6K,GAAmB,CAAC,aAAahB,GAAkB,SAASI,GAAc,QAAQG,GAAa,cAAcC,GAAmB,YAAYE,GAAiB,UAAUP,GAAe,YAAYR,GAAiB,QAAQU,GAAa,mBAAmBI,GAAwB,QAAQE,GAAa,UAAUV,GAAe,QAAQF,GAAa,OAAOG,GAAkB,QAAQU,GAAa,cAAcC,GAAuB,gBAAgBC,GAAqB,UAAUC,EAAc,EAAQE,EAAM,CAAC,GAAG1a,EAAMya,EAAkB,CAAC,EAEjhBE,GAAqB,UAAgBC,GAAiB,8BAAoCC,GAAY,+BAA+B,SAASC,GAAgBC,EAAQ,CAAC,GAAG,CAACA,GAAS,SAAS,GAAG,EAAG,MAAO,CAACA,GAAS,OAAU,OAAU,MAAS,EAAG,IAAMC,EAAkBD,EAAQ,WAAW,GAAG,GAAGA,EAAQ,SAAS,GAAG,EAAEA,EAAQ,MAAM,EAAE,EAAE,EAAEA,EAAcE,EAAMJ,GAAY,KAAKG,CAAiB,EAAE,OAAIC,EAAsD,CAACA,EAAM,CAAC,GAAG,OAAUA,EAAM,CAAC,IAAI,OAAU,OAAU,OAAOA,EAAM,CAAC,CAAC,EAAEA,EAAM,CAAC,IAAI,OAAU,OAAU,OAAOA,EAAM,CAAC,CAAC,CAAC,EAA5J,CAAC,OAAU,OAAU,MAAS,CAAgI,CAAC,SAASC,GAAYC,EAAK,CAAC,GAAG,CAACR,GAAqB,KAAKQ,CAAI,EAAG,OAAO,KAASA,EAAK,SAAS,QAAQ,IAAGA,EAAKA,EAAK,WAAW,YAAY,MAAM,EAAE,WAAW,6BAA6B,EAAE,GAAG,IAAMC,EAAUD,EAAK,QAAQ,OAAO,EAAE,EAAE,WAAW,aAAa,GAAG,EAAE,QAAQ,UAAU,EAAE,EAAQE,EAAS,aAAa,KAAKD,CAAS,EAAQE,EAAWD,EAASD,EAAU,QAAQC,EAAS,CAAC,EAAE,EAAE,EAAED,EAAe,CAACG,EAAQC,EAAWC,CAAY,EAAEX,GAAgBO,EAASA,EAAS,CAAC,EAAED,CAAS,EAAgI,MAAO,CAAC,aAAnHC,GAAUC,GAAY,OAA0G,SAAjFC,IAAU,QAAQA,IAAU,cAAc,OAAUA,EAAsC,WAAAC,EAAW,aAAAC,CAAY,CAAE,CAAC,SAASC,GAAkBP,EAAK,CAAC,GAAGP,GAAiB,KAAKO,CAAI,EAAG,OAAO,KAAmH,GAA1GA,EAAK,SAAS,SAAS,IAAGA,EAAKA,EAAK,WAAW,mDAAmD,KAAK,GAAM,CAACA,EAAK,SAAS,GAAG,GAAG,CAACA,EAAK,SAAS,GAAG,EAAG,MAAO,CAAC,aAAaA,EAAK,SAAS,OAAU,WAAW,OAAU,aAAa,MAAS,EAAG,IAAMQ,EAAQR,EAAK,YAAY,GAAG,EAAQS,EAAaD,EAAQ,EAAER,EAAK,MAAM,EAAEQ,CAAO,EAAE,OAAe,CAACE,EAASL,EAAWC,CAAY,EAAEX,GAAgBK,EAAK,MAAMQ,EAAQ,CAAC,CAAC,EAAE,MAAO,CAAC,aAAAC,EAAa,SAAAC,EAAS,WAAAL,EAAW,aAAAC,CAAY,CAAE,CAI9vD,SAASK,GAAgBhS,EAAM,CAAC,GAAG,CAACA,EAAM,MAAO,MAAM,IAAI,MAAM,iCAAiC,EAAG,IAAMiS,EAAMjS,EAAM,MAAM,MAAM;AAAA,CAAI,EAAE,OAAGiS,EAAM,KAAK3b,GAAGua,GAAqB,KAAKva,CAAC,CAAC,EAAU2b,EAAM,IAAIb,EAAW,EAAE,OAAOzL,GAAGA,IAAI,IAAI,EAAUsM,EAAM,IAAIL,EAAiB,EAAE,OAAOjM,GAAGA,IAAI,IAAI,CAAE,CAEvS,IAAMuM,GAAY,cAAoBC,GAAsBrY,GAAUrC,EAAUqC,CAAI,GAAU,iBAAiB,KAAKA,CAAI,EAAEoY,GAAyBpY,EAAasY,GAAiBC,GAAO,CAAC,IAAM1M,EAAE,CAAC,KAAK0M,EAAM,SAAS,OAAOF,GAAsBE,EAAM,YAAY,EAAE,WAAWA,EAAM,WAAW,aAAaA,EAAM,YAAY,EAGlU,OAAG1M,EAAE,YAAYA,EAAE,WAAW,IAAI,CAACA,EAAE,MAAM,CAACA,EAAE,SAAQA,EAAE,KAAKuM,IAAoBvM,CAAE,EAAQ2M,GAAaC,GAAKnb,EAASmb,CAAG,EAAEA,EAAI,GAAG,SAASC,GAAgBC,EAAWC,EAAaC,EAAUC,EAAW,CAAC,MAAO,CAAC,WAAWN,GAAaG,CAAU,EAAE,QAAQ,GAAGE,CAAS,GAAGL,GAAaI,CAAY,CAAC,GAAG,KAAK,YAAY,WAAWE,EAAW,OAAO,CAACC,EAAMR,IAAQ,CAAC,IAAM1M,EAAEyM,GAAiBC,CAAK,EACrY,GAAG,CAAC,OAAG,KAAK,UAAU1M,CAAC,IAAI,KAAYkN,EAAaA,EAAM,OAAOlN,CAAC,CAAE,MAAM,CAAC,OAAOkN,CAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,IAAMC,GAAe,CAACC,EAAWjU,IAAS,CAAC,IAAIkB,EAAM,OAAGpI,GAAcmb,CAAU,GAAG3b,EAASqI,GAAcsT,CAAU,CAAC,EAAG/S,EAAM+S,GAAkBjU,EAAO,KAAKsJ,GAAkB9M,GAAc0D,EAAyB+T,CAAU,CAAC,CAAC,EAAE/S,EAAM,QAAkBA,CAAM,EAAQgT,GAAuB,CAAChT,EAAM2S,IAAY,CAAC,GAAG,CAAC,IAAMC,EAAWZ,GAAgBhS,CAAK,EAAE,OAAOwS,GAAgBxS,EAAM,KAAKA,EAAM,QAAQ2S,EAAUC,CAAU,CAAE,MAAM,CAAC,OAAOJ,GAAgBxS,EAAM,KAAKA,EAAM,QAAQ2S,EAAU,CAAC,CAAC,CAAE,CAAC,EAIpkBM,GAAmB,CAACC,EAAaC,IAAU,CAAC,GAAG,CAAC,OAAO,KAAK,MAAMD,GAAc,EAAE,CAAE,OAAOjU,EAAI,CAAC,IAAMe,EAAML,GAAgBV,EAAI,+BAA+B,EAAEkU,EAAQnT,CAAK,CAAE,CAAkB,EAErMoT,GAA8B,qBAA2BC,GAA8B,CAAC,iDAAiD,EAAQC,GAAmC,CAAC,kDAAkD,yEAAyE,EAAQC,GAA8B,CAAC,IAAI,OAAO,GAAGH,EAA6B,IAAI,EAAE,6CAA6C,EAAQI,GAA6B,CAAC,GAAGH,GAA8B,GAAGC,EAAkC,EAAQG,GAA4B,eAAqBC,GAAmB,MAAYC,GAAuBD,GAEhpBE,GAA4B,CAAC,QAAQ,CAAC,OAAO,mBAAmB,eAAe,gCAAgC,EAAE,OAAO,KAAK,EAE1HC,GAAwB,CAACjW,EAAI5D,EAAQ8Z,IAAkB,CAAC,IAAMC,EAAerb,EAAekb,GAA4B5Z,GAAS,CAAC,CAAC,EAAE,OAAG8Z,IAAiBC,EAAe,QAAQrb,EAAeqb,EAAe,QAAQ,CAAC,cAAcD,CAAe,CAAC,GAAGC,EAAe,IAAInW,EAAWmW,CAAe,EAIrSC,GAAW,CAACha,EAAQ+D,EAAQkD,GAAuBnC,IAAS,IAAI,QAAQ,CAAC+F,EAAQC,IAAS,CAAC,IAAI5K,EAAQ,GAAGF,EAAQ,cAAc,GAAME,EAAQF,EAAQ,aAAYE,EAAQ8E,EAAyBhF,EAAQ,KAAK,GAAM,CAAC,EAAE8E,CAAM,EAAKzH,EAAO6C,CAAO,EAAE,CAAC4K,EAAO,CAAC,MAAM,IAAI,MAAM6C,EAAsB,EAAE,iBAAU,QAAA3N,CAAO,CAAC,EAChU,MAAO,CAAE,IAAMia,EAAI,IAAI,eACjBC,EAAU1O,GAAG,CAACV,EAAO,CAAC,MAAM,IAAI,MAAMyE,GAAmB6J,GAA8Ba,EAAI,OAAOA,EAAI,WAAWja,EAAQ,IAAIia,EAAI,YAAY,CAAC,EAAE,IAAAA,EAAI,QAAAja,CAAO,CAAC,CAAE,EAAQma,EAAS3O,GAAG,CAACV,EAAO,CAAC,MAAM,IAAI,MAAM8E,GAAkBwJ,GAA8B5N,EAAExL,EAAQ,GAAG,CAAC,EAAE,IAAAia,EAAI,QAAAja,EAAQ,GAAIwL,GAAG,OAAO,UAAU,CAAC,SAAS,EAAI,EAAE,CAAC,CAAE,CAAC,CAAE,EAAEyO,EAAI,UAAUE,EAASF,EAAI,QAAQE,EAASF,EAAI,OAAO,IAAI,CAAIA,EAAI,QAAQ,KAAKA,EAAI,OAAO,IAAKpP,EAAQ,CAAC,SAASoP,EAAI,aAAa,IAAAA,EAAI,QAAAja,CAAO,CAAC,EAASka,EAAU,CAAG,EAAED,EAAI,KAAKja,EAAQ,OAAOA,EAAQ,IAAI,EAAI,EAAKA,EAAQ,kBAAkB,KAAMia,EAAI,gBAAgB,IAErlBA,EAAI,QAAQlW,EAAQ,OAAO,KAAK/D,EAAQ,OAAO,EAAE,QAAQoa,GAAY,CAAIpa,EAAQ,QAAQoa,CAAU,GAAGH,EAAI,iBAAiBG,EAAWpa,EAAQ,QAAQoa,CAAU,CAAC,CAAG,CAAC,EAAE,GAAG,CAACH,EAAI,KAAK/Z,CAAO,CAAE,OAAO+E,EAAI,CAAC6F,EAAO,CAAC,MAAMnF,GAAgBV,EAAI4K,GAAeuJ,GAA8BpZ,EAAQ,GAAG,CAAC,EAAE,IAAAia,EAAI,QAAAja,CAAO,CAAC,CAAE,CAAC,CAAC,EAI7Sqa,GAAN,KAAgB,CAAC,YAAYvV,EAAO,CAAC,KAAK,OAAOA,EAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK,IAAI,CAAE,CAAC,KAAKwV,EAAa,CAAC,KAAK,aAAaA,CAAa,CAE9I,MAAM,QAAQrP,EAAO,CAAC,GAAK,CAAC,IAAArH,EAAI,QAAA5D,EAAQ,QAAA+D,EAAQ,cAAAwW,CAAa,EAAEtP,EAAO,GAAG,CAAC,IAAM3C,EAAK,MAAM0R,GAAWH,GAAwBjW,EAAI5D,EAAQ,KAAK,eAAe,EAAE+D,EAAQ,KAAK,MAAM,EAAE,MAAO,CAAC,KAAKwW,EAAcjS,EAAK,SAAS2Q,GAAmB3Q,EAAK,SAAS,KAAK,OAAO,EAAE,QAAQA,CAAI,CAAE,OAAOkS,EAAO,CAAC,MAAO,CAAC,KAAK,OAAU,QAAQA,CAAM,CAAE,CAAC,CAElV,aAAavP,EAAO,CAAC,GAAK,CAAC,SAAAhL,EAAS,IAAA2D,EAAI,QAAA5D,EAAQ,QAAA+D,EAAQ,cAAAwW,CAAa,EAAEtP,EAAaC,EAAgB,CAAC/N,EAAW8C,CAAQ,EAAE+Z,GAAWH,GAAwBjW,EAAI5D,EAAQ,KAAK,eAAe,EAAE+D,EAAQ,KAAK,MAAM,EAAE,KAAKuE,GAAM,CAAK4C,GAAiBjL,EAASsa,EAAcjS,EAAK,SAAS2Q,GAAmB3Q,EAAK,SAAS,KAAK,OAAO,EAAEA,CAAI,CAAG,CAAC,EAAE,MAAMA,GAAM,CAAK4C,GAAiBjL,EAAS,OAAUqI,CAAI,CAAG,CAAC,CAAE,CAElZ,QAAQtC,EAAMyU,EAAa,CAAC,KAAK,cAAc,QAAQ,CAAC,MAAAzU,EAAM,QAAQrE,GAAY,aAAA8Y,CAAY,CAAC,CAAE,CAEjG,cAActf,EAAMuf,EAAO,GAAM,CAAC,IAAMC,EAAQD,EAAOvf,EAAMwE,GAAS,GAAGxE,CAAK,GAAG,EAAE,KAAK,gBAAgB,SAASwf,CAAO,EAAG,CAE3H,iBAAiB,CAAC,KAAK,gBAAgB,MAAU,CAAC,EAAOC,GAAkB,IAAIP,GAAWhN,EAAa,EAEtGwN,GAAwB,IAGxBC,GAAuB,IAAI,CAAC,KAClC,EAAQC,GAAU,CAAC,oBAAoB,YAAY,YAAY,OAAO,EAEhEC,GAAuB,CAAC,SAAS,aAAa,UAAU,cAAc,cAAc,SAAS,cACnG,cACA,gBACA,SAAS,WAAW,EAAQC,GAAc,6BAAmCC,GAAe,sDAA4DC,GAAY,KAE9JC,GAAiBC,GAAY,CAACzE,EAAM,aAAa,+BAA+B,MAAM,GAAK,GAAG,CAKpG,IAAM0E,EAAQ,IAAI,IAAI1E,EAAM,UAAU,gBAAgB,KAAK,EAAQhT,EAAI,GAAG0X,EAAQ,MAAM,GAAGA,EAAQ,QAAQ,WAAWD,EAAW,aAAa,CAAC,IAAAzX,EAAI,QAAQ,CAC3J,OAAO,OAAO,QAAQ,CAAC,eAAe,MAAS,CAAC,EAAE,cAAc,GAAK,SAAS,CAACpH,EAAO+e,IAAU,CAAC3E,EAAM,aAAa,+BAA+B,MAAM,GAEzJA,EAAM,aAAa,YAAY,MAAM2E,GAAS,QAAQ,QAAWA,GAAS,KAAK,cAAc3X,CAAI,CAAC,CAAC,CAAE,OAAOqB,EAAI,CAChH,MAAA2R,EAAM,aAAa,+BAA+B,MAAM,GAClD3R,CAAI,CAAC,EAELuW,GAAe,CAACvW,EAAIwW,IAAY,CAAC,OAAOA,EAAU,CAAC,KAAKnO,EAAU,mBAAmB,CAAC,GAAK,CAAC,MAAAtH,CAAK,EAAEf,EAAI,OAAOe,GAAOf,CAAI,CAAC,KAAKqI,EAAU,mBAAoB,OAAOrI,EAAI,OAAQ,KAAKqI,EAAU,iBAAiB,QAAQ,OAAOrI,CAAI,CAAC,EAAQyW,GAAoBC,IAAU,CAAC,KAAK,SAAS,KAAKA,EAAQ,UAAU,IAAI,KAAO,SAAS,CAAC,CAAC,GAInUC,GAAgB,CAACC,EAAY,IAAI,OAAO,SAAS,WAAW,CAAC,IAAMC,EAAKD,EAAY,EAAE,MAAO,CAACC,GAAMA,GAAMf,GAAU,SAASe,CAAI,EAAE,cAAc,YAAa,EAAQC,GAAuBnF,GAAO,CAAC,IAAMoF,EAAShX,EAAyB4R,EAAM,GAAMoE,EAAsB,EAAE,OAAOgB,IAAW,KAAK,KAAK,MAAMA,CAAQ,EAAE,CAAC,CAAE,EAAQC,GAAyB,IAAe,WAAW,SAAS,KAAK,MAAM,GAAG,EAAa,CAAC,EAAUC,GAAe,CAACC,EAAOC,EAAQC,EAAUC,KAAa,CAAC,GAAG,GAAGH,EAAO,OAAO,IAAIE,EAAU,SAAS,KAAK,KAAKD,EAAQ,YAAY,MAAM,IAAI,IAAI,KAAKE,EAAU,cAAc,WAAW,OAAO,IAAI,GAAG,KAAKH,EAAO,OAAO,MAAM,IAAI,GAASI,GAAiB,CAACC,EAAOC,KAAa,CAAC,OAAOD,EAAO,OAAO,KAAK,UAAUC,EAAU,OAAO,KAAK,KAAK,IAAI,IAAM,GAASC,GAAqB,CAACC,EAAUC,EAAWhG,EAAM6D,IAAe,CAAC,GAAK,CAAC,QAAAxW,EAAQ,UAAAoY,EAAU,QAAAD,EAAQ,OAAAD,EAAO,UAAAU,EAAU,UAAAP,CAAS,EAAE1F,EAAW,CAAC,IAAAkG,EAAI,OAAAN,EAAO,UAAAC,EAAU,SAAAM,EAAS,OAAAC,EAAO,QAAAC,CAAO,EAAEhZ,EAAQ,MAAO,CAAC,eAAe,IAAI,SAAS,CAAC,KAAKgX,GAAc,QAAQ6B,EAAI,MAAM,QAAQ,IAAI5B,EAAc,EAAE,OAAO,CAAC,CAAC,WAAW,CAAChf,EAAMygB,CAAS,CAAC,EAAE,SAASC,EAAW,SAAS,UAAUA,EAAW,UAAU,eAAeA,EAAW,eAAe,IAAI,CAAC,QAAQE,EAAI,MAAM,QAAQ,aAAalB,GAAgB,EAAE,KAAKkB,EAAI,MAAM,WAAW,EAAE,OAAOP,GAAiBC,EAAOC,CAAS,EAAE,QAAQ,CAAC,IAAIR,GAAyB,EAAE,SAAS,iBAAiB,EAAE,YAAY/f,EAAM2gB,EAAU,YAAY,KAAK,EAAE,QAAQF,EAAU,QAAQ,aAAAlC,EAAa,SAAS,CAAC,IAAI,CAAC,eAAewC,EAAQ,MAAM,cAAc,EAAE,OAAO,CAAC,GAAGD,EAAO,MAAM,SAASD,EAAS,KAAK,EAEhlD,GAAGhB,GAAuBnF,CAAK,CAAC,EAAE,KAAKsF,GAAeC,EAAOC,EAAQC,EAAUC,CAAS,CAAC,CAAC,CAAC,CAAE,EAMpFY,GAA2B,CAACtG,EAAMyE,EAAWxQ,IAAU,CAChE,GAAGvN,EAAYsZ,EAAM,aAAa,YAAY,KAAK,EAAE,CAAIA,EAAM,aAAa,+BAA+B,QAAQ,IAAOwE,GAAiBC,CAAU,EACrJ,IAAM8B,EAAkBtR,EAAE,IAAI,CAAIpO,EAAUmZ,EAAM,aAAa,YAAY,KAAK,IAChF/L,EAAQ+L,EAAM,aAAa,YAAY,QAAQ,EAAK,EACpDuG,EAAkB,EAAG,CAAC,CAAE,MACxBtS,EAAQ+L,EAAM,aAAa,YAAY,QAAQ,EAAK,CAAG,EAS9CwG,GAA2B,CAACT,EAAU/F,EAAMyE,IAAa,CAAC,IAAMgC,EAAOV,EAAU,QAAQ,OAAO,IAAI,QAAQ9R,GAAS,CAC9H,GAAG2O,GAA6B,KAAK8D,GAAOA,EAAM,KAAKD,CAAM,CAAC,EAAE,CAAC,IAAME,EAAa,iCAAiC,KAAKF,CAAM,IAAI,CAAC,EAAKjgB,EAASmgB,CAAY,EAAMA,EAAa,WAAW/I,EAAgB,EAC1MoC,EAAM,aAAa,eAAe,MAAM,SAAS2G,CAAY,EAAG1S,EAAQ,EAAK,EAChFqS,GAA2BtG,EAAMyE,EAAWxQ,CAAO,EACnDA,EAAQ,EAAK,EACbA,EAAQ,EAAI,CAAG,MAAOA,EAAQ,CAAC0O,GAA8B,KAAK/N,GAAGA,EAAE,KAAK6R,CAAM,CAAC,CAAC,CAAG,CAAC,CAAE,EAIjFG,GAAiBC,GAAeA,EAAwCA,EAAS,MAAM,GAAG,EAAe,GAAG,EAAE,EAApE,OAI1CC,GAAgBf,GAAW,CAAC,IAAMgB,EAAYhB,EAAU,WAAW,CAAC,GAAG,KAAK,GAAG,GAACgB,GAAa,OAAOA,GAAc,UAA4B,OAAOA,CAAY,EAIjKC,GAAWjB,GAAW,CAAC,IAAMgB,EAAYD,GAAgBf,CAAS,EAAE,GAAG,CAACgB,EAAa,MAAO,GAAO,IAAME,EAAYF,EAAY,UAAUA,EAAY,YAAY,GAAG,EAAE,CAAC,EAAuD,OAA9BH,GAAiBG,CAAW,IAA4BvJ,IAAa0G,GAAuB,EAAE,KAAKtL,GAAQqO,EAAY,WAAWrO,CAAM,GAAGqO,EAAY,SAAS,KAAK,CAAC,CAAE,EAAQC,GAAiB,CAACnB,EAAU9c,IAAW,CAAC,GAAGA,EAAU,OAAOA,EAAU,IAAM8d,EAAYD,GAAgBf,CAAS,EAAoD,OAA9Ba,GAAiBG,CAAW,IAAqBvJ,GAAoBqF,GAAoCE,EAAuB,EAAQoE,GAAwB,CAAC7d,EAAQ0W,EAAM/W,IAAW,CAAC,IAAMyI,EAAK,CAAC,QAAQuS,GAAwB,WAAWhY,GAAa,EAAE,OAAO,CAAC,KAAKsY,GAAY,YAAYvE,EAAM,QAAQ,IAAI,MAAM,QAAQ,UAAUA,EAAM,UAAU,SAAS,MAAM,aAAaA,EAAM,QAAQ,IAAI,MAAM,YAAY,SAAA/W,CAAQ,EAAE,OAAOK,CAAO,EAAE,OAAO8E,EAAyBsD,CAAI,CAAE,EASz9B0V,GAAqB,CAACC,EAAmBC,EAAoBpZ,IAAS,CAAC,IAAIqZ,EAAuB,GAAG,CAAC1gB,EAAUwgB,CAAkB,EAAGE,EAAuBD,UAA6B9gB,EAAS6gB,CAAkB,EAAGE,EAAuBF,MAAyB,CAAC,IAAMG,EAAwBtF,GAAemF,EAAmBnZ,CAAM,EAAKrH,EAAU2gB,CAAuB,EAAGD,EAAuBC,EAAwB,QAAeD,EAAuBD,CAAqB,CAAC,OAAOC,CAAuB,EAIhgBE,GAAN,KAAkB,CACrB,YAAYhD,EAAWvW,EAAO,CADRwZ,EAAA,mBAAY,IACH,KAAK,WAAWjD,EAAW,KAAK,OAAOvW,CAAO,CAGxE,MAAM,CAAI,KAAK,cAAqB,KAAK,qBAAqB,EAAE,KAAK,YAAY,GAAK,CAEtF,sBAAsB,CAAC,WAAW,iBAAiB,QAAQxE,GAAO,CAAC,KAAK,QAAQ,CAAC,MAAMA,EAAM,QAAQgB,GAAc,UAAUgM,EAAU,kBAAkB,CAAC,CAAE,CAAC,EAAE,WAAW,iBAAiB,qBAAqBhN,GAAO,CAAC,KAAK,QAAQ,CAAC,MAAMA,EAAM,QAAQgB,GAAc,UAAUgM,EAAU,kBAAkB,CAAC,CAAE,CAAC,EAEvT,SAAS,iBAAiB,0BAA0BhN,GAAO,CAAC,IAAMie,EAAWnhB,EAASkD,EAAM,UAAU,EAAEA,EAAM,WAAW,GAAMA,EAAM,cAAc,WAAWie,EAAW,WAAW/J,EAAgB,GAAG,CAACoC,EAAM,aAAa,eAAe,MAAM,SAAS2H,CAAU,IAAG3H,EAAM,aAAa,eAAe,MAAM,CAAC,GAAGA,EAAM,aAAa,eAAe,MAAM2H,CAAU,EAAG,CAAC,CAAE,CASrW,MAAM,QAAQC,EAAU,CAAC,GAAG,CAAC,GAAK,CAAC,MAAAxY,EAAM,QAAA/B,EAAQ,cAAAwa,EAAc,aAAAhE,EAAa,SAAA5a,CAAQ,EAAE2e,EAAgB/C,EAAU+C,EAAU,WAAWlR,EAAU,iBAAuBoR,EAAYlD,GAAexV,EAAMyV,CAAS,EAAQkD,EAAgB7F,GAAe4F,EAAY,KAAK,MAAM,EAAE,GAAGphB,EAAYqhB,CAAe,EAAG,OAAQ,IAAMC,EAAaH,EAAc,GAAGA,CAAa,MAAM,GAASI,EAAe,GAAG5a,CAAO,GAAGT,CAAqB,GAAGob,CAAY,GAASE,EAAY9F,GAAuB2F,EAAgBE,CAAc,EAAwDE,EAArCtZ,GAAckZ,CAAe,EAAmC,SAASnZ,EAAuB,EAG3nB,GAAG,CAACuZ,GAAiB,CAACnB,GAAWkB,CAAW,GAAGrD,IAAYnO,EAAU,iBAAkB,OAAQ,GAAGsJ,EAAM,UAAU,wBAAwB,OAAuB,MAAMwG,GAA2B0B,EAAYlI,EAAM,KAAK,UAAU,EAAe,CAAC,IAAMgG,EAAW,CAAC,SAAS,QAAQ,UAAUnB,IAAYnO,EAAU,iBAAiB,eAAe,CAAC,KAAKmO,CAAS,CAAC,EAMhW0C,EAAuBH,GAAqBvD,EAAaqE,EAAY,QAAQ,KAAK,MAAM,EACxFE,EAAetC,GAAqBoC,EAAYlC,EAAWhG,EAAMuH,CAAsB,EAAQc,GAAcnB,GAAiBgB,EAAYjf,CAAQ,EACxJ,KAAK,WAAW,aAAa,CAAC,IAAI+W,EAAM,QAAQ,kBAAkB,MAAM,QAAQ,CAAC,OAAO,OAAO,KAAKmH,GAAwBiB,EAAepI,EAAMqI,EAAa,EAAE,YAAY,EAAI,EAAE,cAAc,EAAI,CAAC,CAAE,EACpMxD,IAAYnO,EAAU,kBAAkByR,IAAiB,KAAK,OAAO,MAAMD,EAAY,OAAO,CAAG,OAAO7Z,EAAI,CAC/G,KAAK,OAAO,MAAMsJ,GAAqBjN,EAAa,EAAE2D,CAAG,CAAE,CAAC,CAKvD,gBAAgBia,EAAW,CAAC,GAAG,CAACtI,EAAM,UAAU,YAAY,MAAM,CAAC,GAAGA,EAAM,UAAU,YAAY,MAAM8E,GAAoBwD,CAAU,CAAC,CAAE,OAAOja,EAAI,CAAC,KAAK,QAAQ,CAAC,MAAMA,EAAI,QAAQ3D,GAAc,cAAcgN,GAAiB,aAAaA,EAAgB,CAAC,CAAE,CAAC,CAAC,EACnQ6Q,GAAoB,IAAId,GAAazD,GAAkBvN,EAAa,EAKpE+R,GAAN,KAAkB,CAAoD,YAAYta,EAAO9E,EAAQ,CAAC,EAAE,CAAjFse,EAAA,eAAQ,CAAC,GAAEA,EAAA,cAAO,CAAC,GAAEA,EAAA,aAAM,CAAC,GAAEA,EAAA,cAAO,CAAC,OAAO,EAAI,GAAiC,KAAK,OAAO,CAAC,OAAO,GAAK,GAAGte,CAAO,EAAE,KAAK,OAAO8E,CAAO,CAAC,SAASua,EAAOzI,EAAM,CAAC,GAAG,CAACyI,EAAO,KAAK,CAAC,IAAM3G,EAAalK,GAA0BjN,EAAa,EAAE,GAAG,KAAK,OAAO,OAAQ,MAAM,IAAI,MAAMmX,CAAY,EAAS,KAAK,OAAO,MAAMA,EAAa2G,CAAM,EAAE,MAAQ,CAAC,GAAG,KAAK,OAAOA,EAAO,IAAI,EAAE,CAAC,IAAM3G,EAAajK,GAA4BlN,GAAc8d,EAAO,IAAI,EAAE,GAAG,KAAK,OAAO,OAAQ,MAAM,IAAI,MAAM3G,CAAY,EAAS,KAAK,OAAO,MAAMA,CAAY,EAAE,MAAQ,CAAC,KAAK,MAAM,CAAC,EAAE,KAAK,QAAQ,KAAK,QAAQ,MAAM,EAAE,IAAI4G,EAAI,KAAK,QAAQ,OAAO,KAAK,QAAQ,QAAQ,CAACC,EAAW9gB,IAAQ,CAAI8gB,EAAW,MAAM,SAASF,EAAO,IAAI,IAAGC,EAAI,KAAK,IAAIA,EAAI7gB,CAAK,EAAG,CAAC,EAAE,KAAK,QAAQ,OAAO6gB,EAAI,EAAED,CAAM,EAAE,KAAK,OAAOA,EAAO,IAAI,EAAEA,EAAUliB,EAAWkiB,EAAO,UAAU,GAAGA,EAAO,WAAWzI,CAAK,CAAG,CAAC,WAAW9W,EAAK,CAAC,IAAMuf,EAAO,KAAK,OAAOvf,CAAI,EAAE,GAAG,CAACuf,EAAO,CAAC,IAAM3G,EAAa/J,GAAuBpN,GAAczB,CAAI,EAAE,GAAG,KAAK,OAAO,OAAQ,MAAM,IAAI,MAAM4Y,CAAY,EAAS,KAAK,OAAO,MAAMA,CAAY,EAAE,MAAQ,CAAC,IAAMja,EAAM,KAAK,QAAQ,QAAQ4gB,CAAM,EAAE,GAAG5gB,IAAQ,GAAG,CAAC,IAAMia,EAAa9J,GAAwBrN,GAAczB,CAAI,EAAE,GAAG,KAAK,OAAO,OAAQ,MAAM,IAAI,MAAM4Y,CAAY,EAAS,KAAK,OAAO,MAAMA,CAAY,EAAE,MAAQ,CAAC,KAAK,MAAM,CAAC,EAAE,OAAO,KAAK,OAAO5Y,CAAI,EAAE,KAAK,QAAQ,KAAK,QAAQ,MAAM,EAAE,KAAK,QAAQ,OAAOrB,EAAM,CAAC,CAAE,CAAC,UAAUqB,EAAK,CAAC,OAAO,KAAK,OAAOA,CAAI,CAAE,CAAC,WAAWkP,EAAS,CAAC,IAAMwQ,EAAcxQ,GAAU,IAAI,OAAI,KAAK,MAAMwQ,CAAa,IAAG,KAAK,MAAMA,CAAa,EAAE,KAAK,QAAQ,OAAOH,GAAQ,CAAC,GAAGA,EAAO,MAAM,KAAKI,GAAY,CAAC,KAAK,OAAOA,CAAU,CAAC,EAAE,CAC1oD,IAAM3Q,EAAauQ,EAAO,KAAK,OAAOI,GAAY,CAAC,KAAK,OAAOA,CAAU,CAAC,EAAE,YAAK,OAAO,MAAM5Q,GAAkBtN,GAAc8d,EAAO,KAAKvQ,CAAY,CAAC,EAAS,EAAM,CAAC,OAAO0Q,IAAgB,IAAI,GAAKvhB,GAAeohB,EAAOG,CAAa,CAAE,CAAC,GAAU,KAAK,MAAMA,CAAa,CAAE,CAEjR,kBAAkBvf,EAAS,CAACA,EAAS,KAAK,OAAO,EAAE,KAAK,MAAM,CAAC,CAAE,CAAC,OAAO+O,EAAS0Q,EAAc,MAAQxX,EAAK,CAAC,IAAIyX,EAAmB3Q,EAAS,GAAG,CAAC2Q,EAAoB,MAAM,IAAI,MAAM/R,EAA8B,EAAG,IAAMgS,EAAOD,EAAmB,WAAW,GAAG,EAAQE,EAAO,KAAK,OAAO,QAAQF,EAAmB,SAAS,GAAG,EAC1Q,GAA7DA,EAAmBA,EAAmB,QAAQ,WAAW,EAAE,EAAK,CAACA,EAAoB,MAAM,IAAI,MAAM9R,EAA8B,EAAG,IAAMiS,EAAwBH,EAAmB,MAAM,GAAG,EAAEG,EAAwB,IAAI,EAAE,IAAMC,EAAiBD,EAAwB,KAAK,GAAG,EAAmH,OAA3FJ,EAAc,KAAK,WAAWC,CAAkB,EAAE,CAAC,KAAK,WAAWA,CAAkB,EAAE,CAAC,CAAC,GAAyB,IAAIN,GAAQ,CAAC,IAAMW,EAAOliB,GAAeuhB,EAAOM,CAAkB,EAAE,GAAG,CAACxiB,EAAW6iB,CAAM,GAAGJ,EAAQ,OAAOI,EAAQ,GAAG,CAAC,OAAOA,EAAO,MAAMliB,GAAeuhB,EAAOU,CAAgB,EAAE7X,CAAI,CAAE,OAAOjD,EAAI,CACrmB,GAAG4a,EAAQ,MAAM5a,EAAW,KAAK,OAAO,MAAM8J,GAAwBxN,GAAcoe,EAAmBN,EAAO,IAAI,EAAEpa,CAAG,CAAG,CAAC,OAAO,IAAK,CAAC,CAAE,CAAC,aAAa+J,KAAY9G,EAAK,CAAC,OAAO,KAAK,OAAO8G,EAAS,GAAM,GAAG9G,CAAI,EAAE,CAAC,CAAE,CAAC,eAAe8G,KAAY9G,EAAK,CAAC,OAAO,KAAK,OAAO8G,EAAS,GAAK,GAAG9G,CAAI,CAAE,CAAC,EAAO+X,GAAoB,IAAIb,GAAa/R,GAAc,CAAC,OAAO,EAAI,CAAC,EAQnW6S,GAAsBC,GAAqBA,EAAY,OAAO,iBAAiB,SAASA,EAAY,OAAO,qBAAqB,IACzIA,EAAY,OAAO,eAAe,GAAYC,GAAwBD,GAAqBA,EAAY,OAAO,iBAAiB,UAAUA,EAAY,OAAO,qBAAqB,GAKxKE,GAAwBC,GAAcA,EAAa,OAAOJ,EAAqB,EAO/EK,GAA6B,CAACC,EAAY9c,IAAK,GAAG8c,EAAY,WAAW,IAAI,GAAG,CAAC,MAAM9c,CAAE,GAIzF+c,GAAgB,CAAC,cAAc,uBAAuB,yBAAyB,2BAA2B,sBAAsB,eAAe,wBAAwB,sBAAsB,yBAAyB,yBAAyB,oBAAoB,0BAA0B,kBAAkB,UAAU,EAAQC,GAAsB,CAAC,UAAU,gBAAgB,EAErXC,GAAa,CACnB,6BAA+B,CAAC,IAAI,IAAI,QAAQ,QAAQ,OAAO,oBAAsB,OAAO,mBAAmB,KAAO,OAAO,mBAAmB,IAAI,eAAiB,GAAG,OAAO,mBAAmB,IAAI,cAAc,kBAAoB,8DAA8D,EAAE,OAAO,MAAM,KAAK,MAAM,CAChU,EAEgB,SAASC,GAAMC,EAAMC,EAAM,CACzB,IAAMC,EAAY,OAAO,OAAOF,EAAMC,CAAI,EAC1C,QAAWnlB,KAAO,OAAO,KAAKolB,CAAS,EACjC,OAAOA,EAAUplB,CAAG,GAAM,UAAY,OAAOmlB,EAAKnlB,CAAG,GAAM,WAC7DolB,EAAUplB,CAAG,EAAIilB,GAAMG,EAAUplB,CAAG,EAAGmlB,EAAKnlB,CAAG,CAAC,GAGpD,OAAOolB,CACT,CAEA,IAAMC,GAAkBC,GACfL,GAAM,CAEb,GAAI,WAAW,uBAAyB,CAAC,GAAG,SAAc,CAAC,CAAC,EAG9D,eAAeM,GAA2BC,EAAU,CAChD,IAAMC,EAAST,GAAWQ,CAAQ,EAClC,GAAKC,EAAO,OAoBR,OAAOA,EAAO,IAnBd,GAAI,CAAC,MAAO,UAAU,EAAE,SAASA,EAAO,MAAM,EAE1C,OAAO,IAAI,QAAQ,CAACvW,EAASC,IAAW,EACrB,OAAOsW,EAAO,KAAQ,WAAaA,EAAO,IAAM,IAAM,QAAQ,QAAQA,EAAO,GAAG,GACxF,EAAE,KAAKxd,GAAO,CACjB,OAAoDA,GAAK,KAAKyd,GAAO,CACjE,GAAI,CAACD,EAAO,OAAQ,CAChB,IAAME,EAAaN,GAAgB,EACnCK,EAAI,KAAKC,CAAU,EACnBF,EAAO,IAAMC,EACbD,EAAO,IAAI,KAAKE,CAAU,EAC1BF,EAAO,OAAS,EACpB,CACAvW,EAAQuW,EAAO,GAAG,CACtB,CAAC,EAAE,MAAMtW,CAAM,CACnB,CAAC,CACL,CAAC,CAKb,CAEA,SAASyW,EAAgCC,EAAQC,EAAM,CACnD,GAAI,CAACD,GAAQ,SAAWC,EAAM,CAC1B,IAAIpnB,EAAM,OAAO,OAAO,IAAI,EAC5B,OAAAA,EAAI,QAAUmnB,EACdnnB,EAAI,WAAa,GACVA,CACX,CACA,OAAOmnB,CACX,CAEA,SAASE,EAA8BC,EAAYC,EAAe,CAC9D,OAAOV,GAA2BS,CAAU,EAAE,KAAMP,GAAWA,EAAO,IAAIQ,CAAa,EAAE,KAAKC,GAAWA,EAAQ,CAAC,CAAC,CACvH,CAIb,IAAMC,GAAyBpT,GAAY,CAAC,OAAOA,EAAW,CAAC,IAAK,cAAc,MAAO,IAAIgT,EAA8B,+BAAiC,eAAe,EAAE,KAAKF,GAAQD,EAAgCC,EAAQ,EAAI,CAAC,EAAE,IAAK,uBAAuB,MAAO,IAAIE,EAA8B,+BAAiC,wBAAwB,EAAE,KAAKF,GAAQD,EAAgCC,EAAQ,EAAI,CAAC,EAAE,IAAK,yBAAyB,MAAO,IAAIE,EAA8B,+BAAiC,0BAA0B,EAAE,KAAKF,GAAQD,EAAgCC,EAAQ,EAAI,CAAC,EAAE,IAAK,2BAA2B,MAAO,IAAIE,EAA8B,+BAAiC,4BAA4B,EAAE,KAAKF,GAAQD,EAAgCC,EAAQ,EAAI,CAAC,EAAE,IAAK,sBAAsB,MAAO,IAAIE,EAA8B,+BAAiC,uBAAuB,EAAE,KAAKF,GAAQD,EAAgCC,EAAQ,EAAI,CAAC,EAAE,IAAK,eAAe,MAAO,IAAIE,EAA8B,+BAAiC,gBAAgB,EAAE,KAAKF,GAAQD,EAAgCC,EAAQ,EAAI,CAAC,EAAE,IAAK,sBAAsB,MAAO,IAAIE,EAA8B,+BAAiC,uBAAuB,EAAE,KAAKF,GAAQD,EAAgCC,EAAQ,EAAI,CAAC,EAAE,IAAK,wBAAwB,MAAO,IAAIE,EAA8B,+BAAiC,yBAAyB,EAAE,KAAKF,GAAQD,EAAgCC,EAAQ,EAAI,CAAC,EAAE,IAAK,yBAAyB,MAAO,IAAIE,EAA8B,+BAAiC,0BAA0B,EAAE,KAAKF,GAAQD,EAAgCC,EAAQ,EAAI,CAAC,EAAE,IAAK,yBAAyB,MAAO,IAAIE,EAA8B,+BAAiC,0BAA0B,EAAE,KAAKF,GAAQD,EAAgCC,EAAQ,EAAI,CAAC,EAAE,IAAK,oBAAoB,MAAO,IAAIE,EAA8B,+BAAiC,qBAAqB,EAAE,KAAKF,GAAQD,EAAgCC,EAAQ,EAAI,CAAC,EAAE,IAAK,0BAA0B,MAAO,IAAIE,EAA8B,+BAAiC,2BAA2B,EAAE,KAAKF,GAAQD,EAAgCC,EAAQ,EAAI,CAAC,EAAE,IAAK,kBAAkB,MAAO,IAAIE,EAA8B,+BAAiC,mBAAmB,EAAE,KAAKF,GAAQD,EAAgCC,EAAQ,EAAI,CAAC,EAAE,IAAK,WAAW,MAAO,IAAIE,EAA8B,+BAAiC,YAAY,EAAE,KAAKF,GAAQD,EAAgCC,EAAQ,EAAI,CAAC,EAAE,QAAQ,MAAiB,CAAC,EAEzmFO,GAAmCC,GAAmB,CAAC,IAAMC,EAAc,CAAC,EAAE,OAAAD,EAAkB,QAAQtT,GAAY,CAAC,GAAG+R,GAAgB,SAAS/R,CAAU,EAAE,CAAC,IAAMwT,EAAeJ,GAAyBpT,CAAU,EAAKwT,IAAgBD,EAAcvT,CAAU,EAAEwT,EAAgB,CAAC,CAAC,EAASD,CAAc,EAI9SE,GAAuB,KAAK,CAAC,GAE7BC,GAAsB,KAAa,CAAC,GAEpCC,GAAoBL,GAA2BD,KAAqCC,CAAiB,GAAG,CAAC,EAAUM,GAAiB,CAAC,GAAGH,GAAuB,EAAE,GAAGC,GAAsB,CAAC,EAAQG,GAAuBP,IAAoB,CAAC,GAAGK,GAAoBL,CAAiB,CAAC,GAI3RQ,GAAN,KAAoB,CAAC,YAAYC,EAAOnI,EAAaxV,EAAO,CAAC,KAAK,OAAO2d,EAAO,KAAK,aAAanI,EAAa,KAAK,OAAOxV,EAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK,IAAI,CAAE,CAElK,MAAM,CAAC8R,EAAM,UAAU,OAAO,MAAM,iBAExClP,GAAiB,iBAAiBkP,EAAM,UAAU,eAAe,KAAK,EAAG,KAAK,iBAAiB,EAAE,KAAK,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,KAAK,cAAc,CAAE,CAGhL,eAAe,CAAC/K,EAAE,IAAI,EAAyB+K,EAAM,QAAQ,cAAc,MAAM,SAAS,GAAGA,EAAM,QAAQ,cAAc,MAAM,OAAOA,EAAM,QAAQ,cAAc,MAAM,SAASA,EAAM,QAAQ,mBAAmB,QAA4Bjc,EAAE,IAAI,CAACic,EAAM,QAAQ,MAAM,MAAM,GAE/QA,EAAM,UAAU,OAAO,MAAM,cAAe,CAAC,CAAG,CAAC,CAAE,CAGnD,+BAA+B,CAC/B,IAAI8L,EAAwB9L,EAAM,QAAQ,wBAAwB,MAAM,GAAG,CAAC8L,EAAyB,MAAO,CAAC,EAC7GA,EAAwBA,EAAwB,OAAOhU,GAAgBgS,GAAsB,SAAShS,CAAU,GAAG,KAAK,OAAO,KAAKwE,GAA0B9R,GAAgBsN,CAAU,CAAC,EAAS,IAAc,EAAM,EAAE,IAAMiU,EAAsB,CAAC,CAAC,oBAAoB,IAAIllB,EAAUmZ,EAAM,gBAAgB,sBAAsB,KAAK,EAAE,uBAAuB,wCAAwC,iBAAiBA,EAAM,gBAAgB,sBAAsB,MAAM,iBAAiB,OAAO,OAAO3B,EAAuC,EAAE,wBAAwB,EAAI,EAAE,CAAC,oBAAoB,IAAIoL,GAAwBzJ,EAAM,mBAAmB,uBAAuB,KAAK,EAAE,OAAO,EAAE,uBAAuB,uDAAuD,iBAAiB,CAAC,yBAAyB,wBAAwB,CAAC,EAAE,CAAC,oBAAoB,IAAIyJ,GAAwBzJ,EAAM,mBAAmB,uBAAuB,KAAK,EAAE,KAAKuJ,GAAaA,EAAY,mCAAmC,EAAE,uBAAuB,uEAAuE,iBAAiB,CAAC,0BAA0B,CAAC,EAAE,CAAC,oBAAoB,IAAI1iB,EAAUmZ,EAAM,SAAS,+BAA+B,KAAK,EAAE,uBAAuB,gCAAgC,iBAAiBA,EAAM,SAAS,+BAA+B,MAAM,iBAAiB,OAAO,OAAO7B,EAA8B,CAAC,EAAE,CAAC,oBAAoB,IAAItX,EAAUmZ,EAAM,QAAQ,qBAAqB,KAAK,EAAE,uBAAuB,gCAAgC,iBAAiBA,EAAM,QAAQ,qBAAqB,MAAM,iBAAiB,OAAO,OAAO5B,EAAwC,CAAC,EAAE,CAAC,oBAAoB,IAAI4B,EAAM,QAAQ,QAAQ,MAAM,uBAAuB,+BAA+B,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,EAAQgM,EAAkB,GAAM,OAAAD,EAAsB,QAAQE,GAAO,CAAIA,EAAM,oBAAoB,GAAGH,EAAwBA,EAAwB,OAAOG,EAAM,iBAAiBnU,GAAY,EAAEA,IAAamU,EAAM,kBAAkBA,EAAM,iBAAiB,SAASnU,CAAU,GAAGA,GAAYjR,EAAUiR,CAAU,CAChlE,EAAE,KAAK,kBAAkBmU,EAAMD,EAAkBF,CAAuB,GAASA,EAAwBA,EAAwB,OAAOG,EAAM,cAAc,OAAUnU,GAAY,EAAEmU,EAAM,YAAY,SAASnU,CAAU,GAAGmU,EAAM,iBAAiB,SAASnU,CAAU,GAAGA,GAAY,CAACmU,EAAM,iBAAiB,SAASnU,CAAU,CAAC,CAAG,CAAC,EAAS,CAAC,GAAG,OAAO,KAAKyT,GAAuB,CAAC,EAAE,GAAGO,CAAuB,CAAE,CAAC,kBAAkBG,EAAMD,EAAkBF,EAAwB,CAAC,IAAMpP,EAAwBuP,EAAM,yBAAyBD,EAAsBE,EAAsBD,EAAM,iBAAkBC,EAAmB,CAAC,GAAID,EAAM,aAAa,CAAC,EAAGA,EAAM,gBAAgB,EAASC,EAAmB,CAAC,GAAGD,EAAM,gBAAgB,EAAG,IAAMxP,EAAeyP,EAAmB,OAAOpU,GAAY,CAACgU,EAAwB,SAAShU,CAAU,CAAC,EAAK2E,EAAe,OAAO,IAAMC,GAAyBoP,EAAwB,KAAK,GAAGrP,CAAc,EAAG,KAAK,OAAO,KAAKF,GAAoC/R,GAAgByhB,EAAM,uBAAuBxP,EAAeC,CAAuB,CAAC,EAAG,CAEjjC,kBAAkB,CAAC,IAAMyP,EAAc,KAAK,8BAA8B,EACzEC,EAAiB,CAAC,GAAG,OAAO,KAAKV,EAAgB,EAAE,GAAG7B,EAAe,EAAQwC,EAAc,CAAC,EAAQC,EAAc,CAAC,EAAEH,EAAc,QAAQrU,GAAY,CAAIsU,EAAiB,SAAStU,CAAU,EAAGuU,EAAc,KAAKvU,CAAU,EAASwU,EAAc,KAAKxU,CAAU,CAAG,CAAC,EAAKwU,EAAc,OAAO,GAAG,KAAK,OAAO,KAAKrP,GAAwBzS,GAAgB8hB,CAAa,CAAC,EAAGvoB,EAAE,IAAI,CAACic,EAAM,QAAQ,mBAAmB,MAAMmM,EAAc,OAAOnM,EAAM,QAAQ,cAAc,MAAMqM,EAAcrM,EAAM,QAAQ,cAAc,MAAMsM,CAAc,CAAC,CAAE,CAEvhB,sBAAsB,CAAC,IAAMlP,EAAmB,CAAC,EAAE,OAAO,QAAQsO,EAAgB,EAAE,QAAQ,CAAC,CAAC5T,EAAWyU,CAAW,IAAI,CAAIvM,EAAM,QAAQ,cAAc,MAAM,SAASlI,CAAU,IAAMvR,EAAWgmB,CAAW,EAAG,KAAK,SAAS,CAACA,EAAY,CAAC,CAAC,EAASnP,EAAmB,KAAKtF,CAAU,EAAI,CAAC,EAAKsF,EAAmB,OAAO,IAAG4C,EAAM,QAAQ,cAAc,MAAM,CAAC,GAAGA,EAAM,QAAQ,cAAc,MAAM,GAAG5C,CAAkB,EAAE,KAAK,OAAO,MAAMD,GAA0B3S,GAAgB4S,CAAkB,CAAC,EAAG,CAEhf,uBAAuB,CAAC,IAAMoP,EAAkBb,GAAuB3L,EAAM,QAAQ,cAAc,KAAK,EAAE,QAAQ,IAAI,OAAO,KAAKwM,CAAiB,EAAE,IAAI,MAAMC,GAAiB,CAAC,MAAMD,EAAkBC,CAAe,EAAE,EAAE,KAAKC,GAAoB,KAAK,SAAS,CAACA,EAAmB,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAMre,GAAK,CACpT2R,EAAM,QAAQ,cAAc,MAAM,CAAC,GAAGA,EAAM,QAAQ,cAAc,MAAMyM,CAAe,EAAE,KAAK,QAAQpe,EAAI,0BAA0Boe,CAAe,IAAIpe,CAAG,CAAE,CAAC,CAAE,CAAC,CAAC,EAAE,MAAMA,GAAK,CAAC,KAAK,QAAQA,CAAG,CAAE,CAAC,CAAE,CAE/L,eAAe+J,KAAY9G,EAAK,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,eAAe8G,EAAS,GAAG9G,CAAI,CAAE,OAAOsD,EAAE,CAAC,YAAK,QAAQA,EAAEwD,CAAQ,EAAS,CAAC,CAAE,CAAC,CAEvI,aAAaA,KAAY9G,EAAK,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,aAAa8G,EAAS,GAAG9G,CAAI,CAAE,OAAOsD,EAAE,CAAC,YAAK,QAAQA,EAAEwD,CAAQ,EAAS,IAAK,CAAC,CAErI,SAASuU,EAAQ,CAACA,EAAQ,QAAQlE,GAAQ,CAAC,GAAG,CAAC,KAAK,OAAO,SAASA,EAAOzI,CAAK,CAAE,OAAOpL,EAAE,CAACoL,EAAM,QAAQ,cAAc,MAAM,CAAC,GAAGA,EAAM,QAAQ,cAAc,MAAMyI,EAAO,IAAI,EAAE,KAAK,QAAQ7T,EAAE,8BAA8B6T,EAAO,IAAI,GAAG,CAAE,CAAC,CAAC,CAAE,CACvP,wBAAwB,CAAC,OAAO,KAAKiD,EAAgB,EAAE,QAAQkB,GAAW,CAAC,GAAG,CAAC,KAAK,OAAO,WAAWA,CAAS,CAAE,OAAOhY,EAAE,CAAC,KAAK,QAAQA,EAAE,gCAAgCgY,CAAS,GAAG,CAAE,CAAC,CAAC,CAAE,CAEvL,QAAQxd,EAAMyY,EAAchE,EAAa,CAAC,KAAK,aAAa,QAAQ,CAAC,MAAAzU,EAAM,QAAQ5E,GAAgB,cAAAqd,EAAc,aAAAhE,CAAY,CAAC,CAAE,CAAC,EAEhIgJ,EAAe,gBAAsBC,EAAc,eAAqBC,EAAgB,iBAAuBC,EAAe,gBAAsBC,GAAW,OAAaC,GAAoB,qBAA2BC,GAA2B,iBAAuBC,GAA6B,iBAE1SC,GAAU,aAAmBC,GAAc,WAAiBC,GAAmB,kBAAwBC,GAAW,cAAoBC,GAAe,iBAAuBC,GAAuB,wBAA8BC,GAA8B,gCAAsCC,GAAe,aAAmBC,GAAa,gBAAsBC,GAAY,CAAC,OAAOT,GAAU,WAAWC,GAAc,YAAYC,GAAmB,QAAQC,GAAW,YAAYC,GAAe,gBAAgBC,GAAuB,uBAAuBC,GAA8B,YAAYC,GAAe,UAAUC,EAAY,EAE3nBE,GAA8B,UAAgBC,GAAyB,qBAA2BC,GAAqB,2BAAiCC,GAAyB,qBAA2BC,GAA0B,6BAAmCC,GAAkB,CAAC,SAAS,aAAa,cAAc,UAAU,cAAc,kBAAkB,yBAAyB,cAAc,WAAW,EAE5ZC,GAA8B,CAAC,CAACxB,CAAc,EAAEmB,GAAyB,CAAClB,CAAa,EAAEmB,GAAqB,CAACjB,CAAc,EAAEkB,GAAyB,CAACnB,CAAe,EAAEoB,EAAyB,EAIhMG,GAAO,CAAC/pB,EAAM2J,IAAS,CAAC,GAAG,CAAC,OAAO,mBAAmB3J,CAAK,CAAE,OAAO8J,EAAI,CAACH,GAAQ,MAAMV,GAA2Ba,CAAG,EAAE,MAAiB,CAAC,EAEzIkgB,GAAOhqB,GAAO,CAAC,GAAG,CAAC,OAAO,mBAAmBA,CAAK,CAAE,MAAW,CACxE,MAAiB,CAAC,EAETiqB,GAAM7M,GAAK,CAAC,IAAMle,EAAI,CAAC,EAAQgrB,EAAM9M,EAAI,MAAM,SAAS,EAAM+M,EAAK,OAAID,EAAM,CAAC,GACvFA,EAAM,QAAQE,GAAU,CAACD,EAAKC,EAAS,MAAM,GAAG,EAAE,IAAM5d,EAAQ2d,EAAK,CAAC,EAAEH,GAAOG,EAAK,CAAC,CAAC,EAAE,OAAa3d,IAAStN,EAAIsN,CAAO,EAAE2d,EAAK,CAAC,EAAEH,GAAOG,EAAK,CAAC,CAAC,EAAE,OAAW,CAAC,EAASjrB,CAAI,EAEnKmrB,GAAI,CAAC1lB,EAAK3E,EAAMsqB,EAAc3gB,IAAS,CAAC,IAAM9E,EAAQ,CAAC,GAAIylB,GAAe,CAAC,CAAE,EAAMC,EAAa,GAAGR,GAAOplB,EAAKgF,CAAM,CAAC,IAAIogB,GAAO/pB,EAAM2J,CAAM,CAAC,GAAMzH,EAAOlC,CAAK,IAAG6E,EAAQ,OAAO,IAAOA,EAAQ,SAAQA,EAAQ,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAOA,EAAQ,MAAM,GAAMA,EAAQ,OAAM0lB,GAAc,UAAU1lB,EAAQ,IAAI,IAAOA,EAAQ,SAAQ0lB,GAAc,YAAY1lB,EAAQ,MAAM,IAAOA,EAAQ,UAAS0lB,GAAc,aAAa1lB,EAAQ,QAAQ,YAAY,CAAC,IAAOA,EAAQ,WAAU0lB,GAAc,cAAc1lB,EAAQ,QAAQ,IAAOA,EAAQ,SAAQ0lB,GAAc,YAAY,WAAW,SAAS,OAAOA,CAAa,EAEjmBC,GAAI,IAAI,CAAC,IAAMC,EAAkB,WAAW,SAAS,OAAO,OAAOR,GAAMQ,CAAiB,CAAE,EAE5FC,GAAI/lB,GAAM6lB,GAAI,EAAE7lB,CAAI,EAGvBgmB,EAAO,SAAShmB,EAAK3E,EAAM6E,EAAQ8E,EAAO,CAAC,OAAO,UAAU,OAAO,CAAC,IAAK,GAAE,IAAK,GAAE,IAAK,GAAE,OAAO0gB,GAAI1lB,EAAK3E,EAAM6E,EAAQ8E,CAAM,EAAE,IAAK,GAAE,OAAGhF,EAAa+lB,GAAI/lB,CAAI,EAAU6lB,GAAI,EAAE,QAAQ,OAAOA,GAAI,CAAE,CAAC,EAEpMI,GAAkBC,GAAM,CAAC,IAAM1pB,EAAE,SAAS,cAAc,GAAG,EAAE,OAAAA,EAAE,KAAK0pB,EAAY1pB,EAAE,QAAS,EAIxF2pB,GAAWriB,GAAK,CACkE,IAAMuT,GAAtF,OAAO,WAAW,KAAM,WAAW4O,GAAkBniB,CAAG,EAAE,IAAI,IAAIA,CAAG,EAAE,WAA2B,MAAM,GAAG,GAAG,CAAC,EAAQsiB,EAAK/O,EAAMA,EAAM,OAAO,CAAC,EAAQgP,EAAO,CAAC,EAC3K,GAAGhP,EAAM,SAAS,GAAG+O,GAAMA,IAAO,SAASA,EAAK,EAAE,EAAE,SAAS,EAAG,OAAOC,EACvE,GAAGhP,EAAM,QAAQ,EACjB,OAAGA,EAAM,CAAC,GAAGA,EAAM,CAAC,EAAE,QAAQ,WAAW,IAAI,GAAW,CAAC,WAAW,EAAUgP,EAC9E,QAAQnqB,EAAEmb,EAAM,OAAO,EAAEnb,GAAG,EAAEA,GAAG,EAAGmqB,EAAO,KAAKhP,EAAM,MAAMnb,CAAC,EAAE,KAAK,GAAG,CAAC,EAAG,OAAOmqB,CAAO,EAOhFC,GAAOxiB,GAAK,CAAC,IAAMuiB,EAAOF,GAAWriB,CAAG,EAEjD,QAAQ5H,EAAE,EAAEA,EAAEmqB,EAAO,OAAOnqB,GAAG,EAAE,CAAC,IAAMoqB,EAAOD,EAAOnqB,CAAC,EAAQqqB,EAAM1B,GAAoC2B,EAAK,CAAC,OAAO,GAAGF,EAAO,QAAQ,WAAW,IAAI,GAAG,GAAG,GAAG,GAAGA,CAAM,EAAE,EAAE,GAAG,CAEhL,GADAN,EAAOO,EAAM,EAAEC,CAAI,EAChBR,EAAOO,CAAK,EACf,OAAAP,EAAOO,EAAM,KAAKC,CAAI,EAASF,CAAQ,MAAM,CAE7C,GAAG,CAACN,EAAOO,EAAM,KAAKC,CAAI,CAAE,MAAM,CAClC,CAAC,CAAC,CAAC,MAAO,EAAG,EAEPC,GAAwB,IAAI,CAAC,IAAMC,EAAU,IAAIJ,GAAO,WAAW,SAAS,IAAI,CAAC,GAAG,MAAO,CAAC,OAAOlf,GAA0B,KAAK,IAAI,OAAO,CAACsf,GAAWA,IAAY,IAAI,OAAUA,EAAU,SAAS,MAAM,QAAQ,EAAI,CAAE,EAAQC,GAA8B,KAAK,CAAC,QAAQ,EAAI,GAASC,GAAgC,KAAK,CAAC,QAAQ,EAAI,GAASC,GAAiC,KAAK,CAAC,QAAQ,EAAI,GAItYC,GAAN,KAAqB,CAAiC,YAAY9hB,EAAO,CAAnDwZ,EAAA,iBAAU,IAAKA,EAAA,cAAO,GAAEA,EAAA,YAAK,CAAC,GAAsB,KAAK,QAAQqI,GAAiC,EAAE,KAAK,OAAO7hB,CAAO,CAAC,UAAU9E,EAAQ,CAAC,YAAK,QAAQtB,EAAe,KAAK,QAAQsB,GAAS,CAAC,CAAC,EAAE,KAAK,UAAU,EAAQ,KAAK,QAAQ,QAAgB,KAAK,OAAQ,CAAC,QAAQrE,EAAIR,EAAM,CAAC,YAAK,KAAKQ,CAAG,EAAER,EAAM,KAAK,OAAO,OAAO,KAAK,KAAK,IAAI,EAAE,OAAcA,CAAM,CAAC,QAAQQ,EAAI,CAAC,OAAGA,KAAO,KAAK,KAAa,KAAK,KAAKA,CAAG,EAAU,IAAK,CAAC,WAAWA,EAAI,CAAC,OAAGA,KAAO,KAAK,MAAM,OAAO,KAAK,KAAKA,CAAG,EAAG,KAAK,OAAO,OAAO,KAAK,KAAK,IAAI,EAAE,OAAc,IAAK,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,CAAE,CAAC,IAAI8C,EAAM,CAA2B,OAAZ,KAAK,KAAK,EAAiBA,CAAK,GAAG,IAAK,CAAC,MAAM,CAAC,OAAO,OAAO,KAAK,KAAK,IAAI,CAAE,CAAC,EAAOooB,GAAuB,IAAID,GAAgBvZ,EAAa,EAEhwB,SAASyZ,GAAyBrsB,EAAG,CACpC,OAAOA,GAAKA,EAAE,YAAc,OAAO,UAAU,eAAe,KAAKA,EAAG,SAAS,EAAIA,EAAE,QAAaA,CACjG,CAEA,IAAIssB,GAAU,CAAC,QAAS,CAAC,CAAC,EAEtBC,GAAQD,GAAQ,QAAYE,GAAiB,SAASC,IAAc,CAAC,OAAGD,KAAwCA,GAAiB,GAAG,SAASzF,EAAO2F,EAAQ,EAAE,SAASC,EAAOvF,EAAQ,CAACL,EAAO,QAAQK,EAAQ,CAAE,GAAGmF,GAAQ,UAAU,CAAC,SAASK,EAAOhtB,EAAI,CAAyB,OAAxBA,EAAI,KAAK,UAAUA,CAAG,EAAM,kBAAgB,KAAKA,CAAG,CAA6B,CAAC,SAASitB,EAAU/sB,EAAI,CAAC,OAAOA,IAAM,QAAW,OAAOA,GAAM,WAAWA,EAAI,GAAG,KAAK,UAAUA,CAAG,CAAE,CAAC,SAASgtB,EAAYpsB,EAAM,CAAC,GAAG,OAAOA,GAAQ,SAA4B,GAAG,CAAC,OAAO,KAAK,MAAMA,CAAK,CAAE,MAAS,CAAC,OAAOA,CAAM,CAAC,CAAC,SAASgC,EAAWhC,EAAM,CAAC,MAAO,CAAC,EAAE,SAAS,KAAKA,CAAK,IAAI,mBAAoB,CAAC,SAASqsB,EAAQrsB,EAAM,CAAC,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAK,IAAI,gBAAiB,CAE9tB,SAASssB,EAAcC,EAAQ,CAAC,IAAIC,EAAK,eAAeC,EAAO,MAAM,GAAG,CACpEF,IAASA,EAAQ,OAAO,cAAcA,EAAQ,QAAQC,EAAKC,CAAM,EAAEF,EAAQ,WAAWC,CAAI,CAAE,MAAS,CAAC,IAAIE,EAAgB,CAAC,EAAEA,EAAgB,MAAM,CAAC,EAAEA,EAAgB,QAAQ,SAASnkB,EAAGnJ,GAAI,CAAC,OAAOstB,EAAgB,MAAMnkB,CAAE,EAAE,OAAOnJ,EAAG,CAAE,EAAEstB,EAAgB,QAAQ,SAASnkB,EAAG,CAAC,OAAOmkB,EAAgB,MAAM,eAAenkB,CAAE,EAAEmkB,EAAgB,MAAMnkB,CAAE,EAAE,MAAU,EAAEmkB,EAAgB,WAAW,SAASnkB,EAAG,CAAC,OAAO,OAAOmkB,EAAgB,MAAMnkB,CAAE,CAAE,EAAEmkB,EAAgB,MAAM,UAAU,CAAC,OAAOA,EAAgB,MAAM,CAAC,CAAE,EAAEH,EAAQG,CAAgB,QAAC,CAAWH,EAAQ,QAAQC,CAAI,IAAIC,GAAOF,EAAQ,WAAWC,CAAI,CAAE,CAAC,OAAOD,CAAQ,CAC9mB,IAAIA,EAAQD,EAAc,EAAE,SAASK,GAAO,CAAC,GAAG,EAAE,gBAAgBA,GAAQ,OAAO,IAAIA,CAAS,CAACA,EAAM,UAAU,CAAC,IAAI,SAAansB,EAAIpB,EAAI,CAAC,GAAGoB,GAAK,CAAC0rB,EAAO1rB,CAAG,EAAG+rB,EAAQ,QAAQ/rB,EAAI2rB,EAAU/sB,CAAG,CAAC,UAAW8sB,EAAO1rB,CAAG,EAAG,QAAQrC,KAAKqC,EAAI,KAAK,IAAIrC,EAAEqC,EAAIrC,CAAC,CAAC,EAAG,OAAO,IAAK,EAAE,IAAI,SAAaqC,EAAI,CAClS,GAAGA,IAAM,OAAU,CAAC,IAAIosB,EAAI,CAAC,EAAE,YAAK,QAAQ,SAASpsB,GAAIpB,GAAI,CAAC,OAAOwtB,EAAIpsB,EAAG,EAAEpB,EAAI,CAAC,EAASwtB,CAAI,CAAC,GAAGpsB,EAAI,OAAO,CAAC,IAAI,IAAK,OAAO,KAAK,IAAIA,EAAI,OAAO,CAAC,CAAC,EAAG,IAAIuM,EAAK,UAAU,GAAGA,EAAK,OAAO,EAAE,CAAW,QAAN8f,EAAG,CAAC,EAAUhsB,EAAE,EAAE+F,GAAImG,EAAK,OAAOlM,EAAE+F,GAAI/F,IAAI,CAAC,IAAIb,GAAMosB,EAAYG,EAAQ,QAAQxf,EAAKlM,CAAC,CAAC,CAAC,EAAK,KAAK,IAAIkM,EAAKlM,CAAC,CAAC,IAAGgsB,EAAG9f,EAAKlM,CAAC,CAAC,EAAEb,GAAO,CAAC,OAAO6sB,CAAG,CAAC,OAAOT,EAAYG,EAAQ,QAAQ/rB,CAAG,CAAC,CAAE,EAAE,MAAM,UAAgB,CAAC,OAAA+rB,EAAQ,MAAM,EAAS,IAAK,EAAE,OAAO,SAAgB/rB,EAAI,CAAC,IAAIpB,EAAI,KAAK,IAAIoB,CAAG,EAAE,OAAA+rB,EAAQ,WAAW/rB,CAAG,EAASpB,CAAI,EAAE,IAAI,SAAaoB,EAAI,CAAC,MAAO,CAAC,EAAE,eAAe,KAAK,KAAK,IAAI,EAAEA,CAAG,CAAE,EAAE,KAAK,UAAe,CAAC,IAAIiQ,EAAE,CAAC,EAAE,YAAK,QAAQ,SAASnP,EAAE,CAACmP,EAAE,KAAKnP,CAAC,CAAE,CAAC,EAASmP,CAAE,EAAE,QAAQ,SAAiB3L,EAAS,CAAC,QAAQjE,EAAE,EAAE+F,EAAI2lB,EAAQ,OAAO1rB,EAAE+F,EAAI/F,IAAI,CAAC,IAAIL,EAAI+rB,EAAQ,IAAI1rB,CAAC,EAAEiE,EAAStE,EAAI,KAAK,IAAIA,CAAG,CAAC,CAAE,CAAC,OAAO,IAAK,EAAE,OAAO,SAAgB4c,EAAI,CAA2B,QAAtB0P,EAAI,KAAK,KAAK,EAAED,EAAG,CAAC,EAAUhsB,EAAE,EAAE+F,EAAIkmB,EAAI,OAAOjsB,EAAE+F,EAAI/F,IAAQisB,EAAIjsB,CAAC,EAAE,QAAQuc,CAAG,EAAE,KAAGyP,EAAGC,EAAIjsB,CAAC,CAAC,EAAE,KAAK,IAAIisB,EAAIjsB,CAAC,CAAC,GAAG,OAAOgsB,CAAG,EAAE,IAAI,UAAc,CAAC,OAAON,EAAQ,MAAO,CAAC,EAAE,IAAIQ,EAAO,KAAK,SAASC,EAAMxsB,EAAI2M,EAAK,CAAC,IAAI8f,EAAK,UAAcJ,EAAG,KAA+B,GAAtBE,IAAOA,EAAOJ,EAAM,GAAKM,EAAK,SAAS,EAAE,OAAOF,EAAO,IAAI,EAAE,GAAGE,EAAK,SAAS,EAAE,CAAC,GAAG,OAAOzsB,GAAM,SAAS,OAAOusB,EAAO,IAAIvsB,CAAG,EAAE,GAAG0rB,EAAO1rB,CAAG,EAAE,OAAOusB,EAAO,IAAIvsB,CAAG,CAAE,CAAC,GAAGysB,EAAK,SAAS,GAAG,OAAOzsB,GAAM,SAAS,CAAC,GAAG,CAAC2M,EAAK,OAAO4f,EAAO,OAAOvsB,CAAG,EAAE,GAAG2M,GAAM,OAAOA,GAAO,SAAS,OAAO4f,EAAO,IAAIvsB,EAAI2M,CAAI,EAAKA,GAAMnL,EAAWmL,CAAI,IAAG0f,EAAG,KAAKA,EAAG1f,EAAK3M,EAAIusB,EAAO,IAAIvsB,CAAG,CAAC,EAAEwsB,EAAM,IAAIxsB,EAAIqsB,CAAE,EAAG,CAAC,GAAGI,EAAK,SAAS,GAAGZ,EAAQ7rB,CAAG,GAAGwB,EAAWmL,CAAI,EAAG,QAAQtM,EAAE,EAAE+F,EAAIpG,EAAI,OAAOK,EAAE+F,EAAI/F,IAAKgsB,EAAG1f,EAAK3M,EAAIK,CAAC,EAAEksB,EAAO,IAAIvsB,EAAIK,CAAC,CAAC,CAAC,EAAEmsB,EAAM,IAAIxsB,EAAIK,CAAC,EAAEgsB,CAAE,EAAI,OAAOG,CAAM,CAAC,QAAQ7uB,KAAKwuB,EAAM,UAAUK,EAAM7uB,CAAC,EAAEwuB,EAAM,UAAUxuB,CAAC,EAAE,OAAO6uB,CAAM,CAAC,CAAE,GAAGpB,EAAO,GAASA,GAAQ,OAAQ,CAE1tD,IAAIsB,GAAenB,GAAa,EAC1BiB,GAAqBrB,GAAwBuB,EAAY,EAEzDC,GAAuB9c,GAAG,CAAC,IAAM+c,EAAc,CAAC,qBAAqB,4BAA4B,EACjGC,EAAc,CAAC,GAAG,IAAI,EAAE,OAAGhd,aAAa,aAAqB+c,EAAc,SAAS/c,EAAE,IAAI,GAAGgd,EAAc,SAAShd,EAAE,IAAI,EAAU,EAAM,EAE1Iid,GAAmB,CAACnuB,EAAKopB,EAAcgF,EAAgB5jB,IAAS,CAAC,IAAI4iB,EAAYiB,EAAehQ,EAAUtU,GAAoCpD,GAAqB3G,CAAI,EAAMkgB,EAAO,cAAkBrX,EAAa,GAASylB,EAAO,GAAG,CAAC,OAAOtuB,EAAK,CAAC,KAAKspB,EAAe,MAAO,GAAK,KAAKH,EAAeiE,EAAQgB,EAAgBC,EAAS7E,GAAoB,MAAM,KAAKJ,EAAcgE,EAAQgB,GAAiB,WAAW,aAAaC,EAAS5E,GACtb,MAAM,KAAKJ,EAAgB+D,EAAQgB,GAAiB,WAAW,eAAeC,EAAS3E,GAA6B,MAAM,QAAQ,MAAO,EAAM,CAAC,GAAG0D,IAASA,EAAQ,QAAQiB,EAAS,MAAM,EAAKjB,EAAQ,QAAQiB,CAAQ,GAAG,OAAAjB,EAAQ,WAAWiB,CAAQ,EAAS,GAAOxlB,EAAa,EAAM,OAAO8B,EAAI,CAAC9B,EAAa,GAAMylB,EAAO3jB,EAAOqjB,GAAuBrjB,CAAG,IAAGuV,EAAO,OAAQ,CAAC,OAAIrX,GAAc2B,GAAQ,KAAK,GAAG6T,CAAS,GAAG6B,CAAM,IAAIoO,CAAM,EAC1a,EAAM,EAOJC,GAAN,KAAkB,CAAiD,YAAY/jB,EAAO,CAAnEwZ,EAAA,0BAAmB,IAAKA,EAAA,iBAAU,IAAKA,EAAA,cAAO,GAAsB,KAAK,QAAQmI,GAA8B,EAAE,KAAK,OAAO3hB,CAAO,CAAC,UAAU9E,EAAQ,CAAC,YAAK,QAAQtB,EAAe,KAAK,QAAQsB,GAAS,CAAC,CAAC,EAAE,KAAK,mBAAmByoB,GAAmB/E,CAAa,EAAE,KAAK,UAAU,GAAQ,KAAK,QAAQ,SAAS,KAAK,oBAA2B,KAAK,OAAQ,CAAC,QAAQ/nB,EAAIR,EAAM,CAACgtB,GAAM,IAAIxsB,EAAIR,CAAK,EAAE,KAAK,OAAOgtB,GAAM,IAAI,CAAE,CACzb,QAAQxsB,EAAI,CAAC,IAAMR,EAAMgtB,GAAM,IAAIxsB,CAAG,EAAE,OAAO2B,EAAYnC,CAAK,EAAE,KAAKA,CAAM,CAAC,WAAWQ,EAAI,CAACwsB,GAAM,OAAOxsB,CAAG,EAAE,KAAK,OAAOwsB,GAAM,IAAI,CAAE,CAAC,OAAO,CAACA,GAAM,MAAM,EAAE,KAAK,OAAO,CAAE,CAAC,IAAI1pB,EAAM,CAA2B,OAAZ,KAAK,KAAK,EAAiBA,CAAK,GAAG,IAAK,CAC/O,MAAM,CAAC,OAAO0pB,GAAM,KAAK,CAAE,CAAC,EAAOW,GAAoB,IAAID,GAAaxb,EAAa,EAI5E0b,GAAN,KAAoB,CAAiD,YAAYjkB,EAAO,CAAnEwZ,EAAA,0BAAmB,IAAKA,EAAA,iBAAU,IAAKA,EAAA,cAAO,GAAsB,KAAK,QAAQoI,GAAgC,EAAE,KAAK,OAAO5hB,CAAO,CAAC,UAAU9E,EAAQ,CAAC,YAAK,QAAQtB,EAAe,KAAK,QAAQsB,GAAS,CAAC,CAAC,EAAE,KAAK,mBAAmByoB,GAAmB9E,CAAe,EAC/R,KAAK,qBAAoB,KAAK,MAAM,WAAW,gBAAgB,KAAK,UAAU,GAAQ,KAAK,QAAQ,SAAS,KAAK,oBAA2B,KAAK,OAAQ,CAAC,QAAQhoB,EAAIR,EAAM,CAAK,KAAK,QAAe,KAAK,MAAM,QAAQQ,EAAIR,CAAK,EAAE,KAAK,OAAO,KAAK,MAAM,OAAO,CAAC,QAAQQ,EAAI,CAAC,GAAG,CAAC,KAAK,MAAO,OAAO,KAAM,IAAMR,EAAM,KAAK,MAAM,QAAQQ,CAAG,EAAE,OAAO2B,EAAYnC,CAAK,EAAE,KAAKA,CAAM,CAAC,WAAWQ,EAAI,CAAK,KAAK,QAAe,KAAK,MAAM,WAAWA,CAAG,EAAE,KAAK,OAAO,KAAK,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,MAAM,EAAE,KAAK,OAAO,CAAE,CAAC,IAAI8C,EAAM,CAAC,OAAO,KAAK,OAAO,IAAIA,CAAK,GAAG,IAAK,CAAC,MAAM,CAAC,IAAMuqB,EAAK,CAAC,EAAE,GAAG,CAAC,KAAK,MAAO,OAAOA,EAAM,QAAQhtB,EAAE,EAAEA,EAAE,KAAK,MAAM,OAAOA,GAAG,EAAE,CAAC,IAAML,EAAI,KAAK,MAAM,IAAIK,CAAC,EAAKL,IAAM,MAAMqtB,EAAK,KAAKrtB,CAAG,CAAG,CAAC,OAAOqtB,CAAK,CAAC,EAAOC,GAAsB,IAAIF,GAAe1b,EAAa,EAI3wB6b,GAAN,KAAmB,CAAiD,YAAYpkB,EAAO,CAAnEwZ,EAAA,0BAAmB,IAAKA,EAAA,iBAAU,IAAKA,EAAA,cAAO,GAAsB,KAAK,OAAOxZ,CAAO,CAAC,UAAU9E,EAAQ,CAAC,OAAI,KAAK,UAAS,KAAK,QAAQumB,GAAwB,GAAG,KAAK,QAAQ7nB,EAAe,KAAK,QAAQsB,GAAS,CAAC,CAAC,EAAK,KAAK,QAAQ,uBAAuB,OAAO,KAAK,QAAQ,OAAQ,KAAK,mBAAmByoB,GAAmBhF,EAAe,IAAI,EAAE,KAAK,UAAU,GAAQ,KAAK,QAAQ,SAAS,KAAK,oBAA2B,KAAK,OAAQ,CAAC,QAAQ9nB,EAAIR,EAAM,CAAC,OAAA2qB,EAAOnqB,EAAIR,EAAM,KAAK,QAAQ,KAAK,MAAM,EAAE,KAAK,OAAO,OAAO,KAAK2qB,EAAO,CAAC,EAAE,OAAc,EAAK,CACnkB,QAAQnqB,EAAI,CAAC,IAAMR,EAAM2qB,EAAOnqB,CAAG,EAAE,OAAO2B,EAAYnC,CAAK,EAAE,KAAKA,CAAM,CAAC,WAAWQ,EAAI,CAAC,IAAMa,EAAO,KAAK,QAAQb,EAAI,IAAI,EAAE,YAAK,OAAO,OAAO,KAAKmqB,EAAO,CAAC,EAAE,OAActpB,CAAO,CACtL,OAAO,CAIP,CAAC,IAAIiC,EAAM,CAA2B,OAAZ,KAAK,KAAK,EAAiBA,CAAK,GAAG,IAAK,CAClE,MAAM,CAAC,OAAO,OAAO,KAAKqnB,EAAO,CAAC,CAAE,CAAC,EAAOqD,GAAqB,IAAID,GAAc7b,EAAa,EAIvF+b,EAAiB9uB,GAAM,CAAC,OAAOA,EAAK,CAAC,KAAKopB,EAAc,OAAOoF,GAAoB,KAAKnF,EAAgB,OAAOsF,GAAsB,KAAKrF,EAAe,OAAOiD,GAAuB,KAAKpD,EAAe,OAAO0F,GAAqB,QAAQ,OAAOtC,EAAuB,CAAC,EAE9QwC,GAA6BrpB,GAAS,CAAC,IAAMspB,EAAqBH,GAAqB,UAAUnpB,CAAO,EACjH4W,EAAM,QAAQ,OAAO,MAAM,CAAC,OAAO0S,EAAqB,OAAO,KAAKA,EAAqB,KAAK,OAAOA,EAAqB,OAAO,SAASA,EAAqB,SAAS,QAAQA,EAAqB,QAAQ,OAAOA,EAAqB,MAAM,CAAE,EAExOC,GAA4BvpB,GAAS,CAAC8oB,GAAoB,UAAU9oB,CAAO,CAAE,EAE7EwpB,GAA+BxpB,GAAS,CAAC6mB,GAAuB,UAAU7mB,CAAO,CAAE,EAEnFypB,GAA8BzpB,GAAS,CAACipB,GAAsB,UAAUjpB,CAAO,CAAE,EAEjF0pB,GAAwB,CAACJ,EAAqB,CAAC,EAAEK,EAAoB,CAAC,EAAEC,EAAuB,CAAC,EAAEC,EAAsB,CAAC,IAAI,CAACR,GAA6BC,CAAoB,EAAEC,GAA4BI,CAAmB,EAAEH,GAA+BI,CAAsB,EAAEH,GAA8BI,CAAqB,CAAE,EAI9U/B,GAAN,KAAW,CAAC,YAAY7c,EAAOwX,EAAOqH,EAAe,CAAC,KAAK,GAAG7e,EAAO,GAAG,KAAK,KAAKA,EAAO,KAAK,KAAK,YAAYA,EAAO,aAAa,GAAM,KAAK,UAAUA,EAAO,WAAW,CAAC,EAAE,KAAK,OAAOwX,EAAO,KAAK,gBAAgB,OAAO,KAAK,KAAK,SAAS,EAAE,SAAS,EAAE,KAAK,cAAcxX,EAAO,cAAc,KAAK,eAAe,KAAK,OAAO,KAAK,aAAaA,EAAO,aAAa,KAAK,OAAOA,EAAO,OAAO,KAAK,eAAe6e,CAAe,CAEra,eAAenuB,EAAI,CAAC,GAAK,CAAC,KAAAmE,EAAK,GAAA4D,EAAG,UAAAqmB,EAAU,gBAAAC,EAAgB,cAAAC,CAAa,EAAE,KAAK,GAAGD,EAAiB,OAAOC,EAActuB,EAAI,CAACmE,EAAK4D,EAAG/H,CAAG,EAAE,KAAK,GAAG,EACxJ,IAAIuuB,EAAY,cAAO,OAAOH,CAAS,EAAE,QAAQI,GAAc,CAAIA,IAAexuB,IAAKuuB,EAAYD,EAActuB,EAAI,CAACmE,EAAK4D,EAAG/H,CAAG,EAAE,KAAK,GAAG,EAAG,CAAC,EAASuuB,CAAY,CAE/J,gCAAgC,CAAC,GAAK,CAAC,KAAApqB,EAAK,GAAA4D,EAAG,UAAAqmB,EAAU,cAAAE,CAAa,EAAE,KAAWpC,EAAgBuB,EAAiBxF,CAAc,EAGvI,OAAO,KAAKmG,CAAS,EAAE,QAAQpuB,GAAK,CAAC,IAAMR,EAAM,KAAK,IAAI4uB,EAAUpuB,CAAG,CAAC,EAAQyuB,EAASH,EAActuB,EAAI,CAACmE,EAAK4D,EAAG/H,CAAG,EAAE,KAAK,GAAG,EAAEksB,EAAgB,QAAQuC,EAASjvB,CAAK,EAEzK,KAAK,OAAOQ,CAAG,CAAE,CAAC,EAAE,KAAK,OAAOksB,CAAgB,CAE3C,IAAIlsB,EAAIR,EAAM,CAAC,IAAMivB,EAAS,KAAK,eAAezuB,CAAG,EAAE,GAAIyuB,EAAkB,GAAG,CACrF,KAAK,OAAO,QAAQA,EAAS,KAAK,QAAQplB,EAAyB7J,EAAM,GAAM,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAE,OAAO8J,EAAI,CAAC,GAAGqjB,GAAuBrjB,CAAG,EAAG,KAAK,OAAO,KAAKiN,GAA+B,SAAS,KAAK,EAAE,EAAE,CAAC,EAChN,KAAK,+BAA+B,EACpC,KAAK,IAAIvW,EAAIR,CAAK,MAAQ,CAAC,IAAMsjB,EAAc3O,GAAsBnU,CAAG,EAAE,KAAK,QAAQsJ,EAAIwZ,EAAcA,CAAa,CAAE,CAAC,CAAC,CAErH,IAAI9iB,EAAI,CAAC,IAAMyuB,EAAS,KAAK,eAAezuB,CAAG,EAAM0uB,EAAe,GAAG,CAAuF,MAAnF,CAACD,IAAuBC,EAAe,KAAK,QAAQ,KAAK,OAAO,QAAQD,CAAQ,CAAC,EAAK7sB,EAAkB8sB,CAAc,GAAGA,IAAiB,IAAW,KAC9N,KAAK,MAAMA,CAAc,CAAE,OAAOplB,EAAI,CAAC,IAAMqlB,EAAqB1T,EAAM,QAAQ,qBAAqB,MACK,GAAzF,CAAC0T,GAAsB,CAAC1T,EAAM,QAAQ,cAAc,MAAM,SAAS0T,CAAoB,EAAuB,CAAC,IAAM7L,EAAc1O,GAAuBpU,CAAG,EAAE,KAAK,QAAQsJ,EAAIwZ,EAAcA,CAAa,CAAE,CAAC,OAAO,IAAK,CAAC,CAE9O,OAAO9iB,EAAI,CAAC,IAAMyuB,EAAS,KAAK,eAAezuB,CAAG,EAAKyuB,GAAU,KAAK,OAAO,WAAWA,CAAQ,CAAG,CAEnG,mBAAmB,CAAC,OAAO,KAAK,cAAe,CAE/C,QAAQjvB,EAAM,CAAC,OAAGoC,EAAkBpC,CAAK,EAAU,KAAa,KAAK,OAAOA,EAAM,SAAS,CAAE,CAE7F,QAAQA,EAAM,CAAC,OAAO,KAAK,OAAOA,EAAM,SAAS,CAAE,CAEnD,OAAOA,EAAMovB,EAAK,CAAyF,GAArE,CAAC,KAAK,aAAa,CAACpvB,GAAO,OAAOA,GAAQ,UAAUiE,GAAKjE,CAAK,IAAI,GAAoB,OAAOA,EAAO,IAAMwkB,EAAmB,WAAW4K,CAAI,GAASC,EAAe,KAAK,eAAe,KAAK,eAAe,aAAa7K,EAAmBxkB,CAAK,EAAEA,EAAM,OAAO,OAAOqvB,EAAiB,IAAYrvB,EAAMqvB,GAAgB,EAAG,CAEnW,QAAQxkB,EAAMyY,EAAchE,EAAa,CAAC,KAAK,aAAa,QAAQ,CAAC,MAAAzU,EAAM,QAAQ,SAAS,KAAK,EAAE,GAAG,cAAAyY,EAAc,aAAAhE,CAAY,CAAC,CAAE,CAAC,EAEnIgQ,GAAyC,CAAC7T,EAAM8T,IAAa,CAAC,IAAIC,EAAsB,GAAG/T,EAAM,SAAS,WAAW,MAAM,QAAS,OAAOA,EAAM,SAAS,WAAW,MAAM,SAAS,SAAS,CAAC,IAAK,OAAO+T,EAAsB9G,GAAW,MAAM,IAAK,UAAa6G,IAAa,gBAAeC,EAAsB9G,IAAY,MAAM,IAAK,cAAiB6G,IAAa,gBAAeC,EAAsB9G,IAAY,KAAM,CAAE,OAAO8G,CAAsB,EAI7bC,GAAN,KAAkB,CAA+B,YAAYd,EAAexP,EAAaxV,EAAO,CAA7EwZ,EAAA,cAAO,CAAC,GAAEA,EAAA,qBAAc,IAAsD,KAAK,aAAahE,EAAa,KAAK,OAAOxV,EAAO,KAAK,eAAeglB,CAAe,CAEpL,MAAM,CAAC,GAAG,KAAK,cAAe,OAAQ,IAAMe,EAAYjU,EAAM,YAAY,MAAY3L,EAAO,CAAC,qBAAqB,CAAC,SAAS4f,EAAY,eAAe,OAAOA,EAAY,aAAa,OAAOA,EAAY,gBAAgB,sBAAsBA,EAAY,qBAAqB,EAAE,oBAAoB,CAAC,EAAE,uBAAuB,CAAC,EAAE,sBAAsB,CAAC,CAAC,EAAEnB,GAAwB5qB,GAAsBJ,EAAeuM,EAAO,sBAAsB,CAAC,EAAE2L,EAAM,QAAQ,QAAQ,OAAO,CAAC,CAAC,CAAC,EAAE9X,GAAsBmM,EAAO,mBAAmB,EAAEnM,GAAsBmM,EAAO,sBAAsB,EAAEnM,GAAsBmM,EAAO,qBAAqB,CAAC,EAAE,KAAK,qBAAqB,EAAE,KAAK,cAAc,EAAK,CAE9qB,sBAAsB,CAAC,KAAK,uBAAuB,EAIrC,CAAC2Y,EAAeF,EAAcD,EAAeE,CAAe,EAAe,QAAQrf,GAAa,CAAI8kB,EAAiB9kB,CAAW,GAAG,WAAW,KAAK,SAAS,CAAC,GAAG2gB,GAA8B3gB,CAAW,EAAE,KAAK2gB,GAA8B3gB,CAAW,EAAE,YAAY,GAAK,cAAc,GAAK,KAAKA,EAAY,aAAa,KAAK,aAAa,OAAO,KAAK,MAAM,CAAC,CAAG,CAAC,CAAE,CAAC,wBAAwB,CAAC,IAAIwmB,EAAkBlU,EAAM,QAAQ,KAAK,MAAUmU,EAAenU,EAAM,YAAY,MAAM,SAAS,QAClfoU,EAAuBpU,EAAM,SAAS,YAAY,MAAM,SAAWnZ,EAAUutB,GAAwB,IAAI,GAAGvtB,EAAUutB,GAAwB,OAAO,KAAGF,EAAkBE,GAAwB,KAAKD,EAAeC,GAAwB,SAAS,IAAIC,EAAuB,GAASC,EAAe,CAAC,EAAElG,GAAkB,QAAQ0F,GAAY,CAAC,IAAM/uB,EAAI+uB,EAAiBS,EAAWT,EAAiBU,EAAsBL,IAAiBpvB,CAAG,GAAG,KACxb2I,EADydmmB,GAAyC7T,EAAM8T,CAAU,GAC/eU,GAAuBN,GAAmBtd,GAA2B8E,EAAiB,KAAK,+BAA+BhO,EAAYomB,CAAU,EAAKpY,IAAmBuR,KAAYoH,EAAuB,IAAOC,EAAe,CAAC,GAAGA,EAAe,CAACR,CAAU,EAAE,CAAC,KAAKpY,EAAiB,IAAIoS,GAAYyG,CAAU,CAAC,CAAC,CAAE,CAAC,EAAExwB,EAAE,IAAI,CAACic,EAAM,QAAQ,KAAK,MAAMkU,EAAkBlU,EAAM,QAAQ,QAAQ,MAAMsU,EAAetU,EAAM,QAAQ,uBAAuB,MAAMqU,CAAuB,CAAC,CAAE,CAAC,+BAA+B3mB,EAAYomB,EAAW,CAAC,IAAIpY,EAAiBhO,EAAY,OAAOA,EAAY,CAAC,KAAKof,EAAkB0F,EAAiB1F,CAAa,GAAG,YAAWpR,EAAiBsR,GAAgB,MAAM,KAAKD,EAAoByF,EAAiBzF,CAAe,GAAG,YAAWrR,EAAiBsR,GAAgB,MAAM,KAAKA,EAAe,KAAKC,GAAW,MAAM,KAAKJ,EAAe,QACp4B2F,EAAiB3F,CAAc,GAAG,UAAWnR,EAAiBmR,EAAwB2F,EAAiB1F,CAAa,GAAG,UAAWpR,EAAiBoR,EAAuB0F,EAAiBzF,CAAe,GAAG,UAAWrR,EAAiBqR,EAAuBrR,EAAiBsR,EAAgB,KAAM,CAAC,OAAGtR,IAAmBhO,GAAa,KAAK,OAAO,KAAK6N,GAA4B3Q,GAAckpB,EAAWpmB,EAAYgO,CAAgB,CAAC,EAAUA,CAAiB,CAEvc,SAAS+Y,EAAY,CAAC,IAAMC,EAAclC,EAAiBiC,EAAY,IAAI,EAAE,YAAK,OAAOA,EAAY,EAAE,EAAE,IAAIvD,GAAMuD,EAAYC,EAAc,KAAK,cAAc,EAAS,KAAK,OAAOD,EAAY,EAAE,CAAE,CAErM,SAAS3nB,EAAG,CAAC,OAAO,KAAK,OAAOA,CAAE,CAAE,CAAC,EAEpC6nB,GAAoBC,GAAKptB,EAA0BotB,CAAG,GAAGptB,EAA0BotB,EAAI,MAAM,GAAG,CAACjuB,EAAkBiuB,EAAI,OAAO,EAAE,GAAGptB,EAA0BotB,EAAI,OAAO,MAAM,GAAG,MAAM,QAAQA,EAAI,OAAO,YAAY,EAAQC,GAAmBnnB,GAAa,OAAOA,GAAc,UAAUiJ,GAAwB,SAASjJ,CAAW,EAAQonB,GAAa9nB,GAAK,CACzW,IAAM+nB,EAAO,IAAI,IAAI/nB,CAAG,EACnB,CAAC,KAAAkY,EAAK,SAAA8P,CAAQ,EAAED,EACfxU,EAAM2E,EAAK,MAAM,GAAG,EAAM0K,EAChC,OAAGrP,EAAM,OAAO,EAChBqP,EAAU,GAAGrP,EAAMA,EAAM,OAAO,CAAC,CAAC,IAAIA,EAAMA,EAAM,OAAO,CAAC,CAAC,GAC3DqP,EAAU1K,EAAa,CAAC,UAAA0K,EAAU,SAAAoF,CAAQ,CAAE,EAAQC,GAAgBjoB,GAAK,CAAC,GAAK,CAAC,UAAA4iB,EAAU,SAAAoF,CAAQ,EAAEF,GAAa9nB,CAAG,EAAE,MAAO,GAAGgoB,CAAQ,KAAKpF,CAAS,EAAG,EAAQsF,GAAkB,CAACC,EAASC,IAAiB,CAAC,IAAMpoB,EAAIooB,EAAe,OAAO,SAAS,OAAOH,GAAgB,OAAO,SAAS,IAAI,EAAQI,EAAkBF,EAAS,WAAW,GAAG,EAAEA,EAAS,UAAU,CAAC,EAAEA,EAAS,MAAO,GAAGnoB,CAAG,IAAIqoB,CAAiB,EAAG,EAAQC,GAAwBC,GAAgB,CAAC,GAAK,CAAC,UAAA3F,CAAS,EAAEkF,GAAa,OAAO,SAAS,IAAI,EAAE,OAAOlF,IAAY2F,CAAe,EAMxhBC,GAAsBxoB,GAAKA,GAAK,SAAS,GAAG,EAAEwoB,GAAsBxoB,EAAI,UAAU,EAAEA,EAAI,OAAO,CAAC,CAAC,EAAEA,EAAUyoB,GAAUzoB,GAAK,CAAC,GAAG,CAA2B,OAAb,IAAI,IAAIA,CAAG,EAAgB,IAAK,MAAa,CAAC,OAAO,IAAK,CAAC,EAIzM0oB,GAAmBC,GAAUF,GAAUE,CAAQ,GAAG,GAIlDC,GAAqB5oB,GAAK,CAAC,IAAMpH,EAAO,CAAC,EAAE,GAAG,CAAC,IAAMmvB,EAAO,IAAI,IAAI/nB,CAAG,EAAQ6oB,EAAW,OAAOd,EAAO,aAAa,QAAQ,CAACxwB,EAAMuxB,IAAS,CAAC,GAAGA,EAAO,WAAWD,CAAU,EAAE,CAAC,IAAIE,EAASD,EAAO,UAAUD,EAAW,MAAM,EACrOE,IAAW,aAAYA,EAAS,QAAQnwB,EAAOmwB,CAAQ,EAAExxB,CAAM,CAAC,CAAC,CAAE,MAAa,CACnF,CAAC,OAAOqB,CAAO,EAINowB,GAAkBhpB,GAAK,CAAC,IAAIipB,EAAejpB,EAAI,GAAG,CAAC,IAAM+nB,EAAO,IAAI,IAAI/nB,CAAG,EAAEipB,EAAelB,EAAO,OAAOA,EAAO,SAASA,EAAO,MAAO,MAAa,CAC9J,CAAC,OAAOkB,CAAe,EAEjBC,GAAuBvU,GAAKA,EAAI,QAAQ,UAAU,GAAG,EAIlDwU,GAAWnpB,GAAK,CAAC,GAAG,CAACxG,EAASwG,CAAG,EAAG,MAAO,GAAO,GAAG,CAE9D,OAAGzG,EAAW,WAAW,GAAG,GAC5B,IAAI,IAAIyG,CAAG,EAAU0Q,GAAY,KAAK1Q,CAAG,CAAE,MAAS,CAAC,MAAO,EAAM,CAAC,EAE7DopB,GAAqC,OAAaC,GAAyC,YAE3FC,GAAwBC,GAAcA,GAAc,iBAAiB,QAAQ,UAAU,GAAWC,GAA0BD,GAAcA,GAAc,iBAAiB,SAAS,UAAU,GAMzLE,GAA2BrtB,GAAS,CAAC,IAAMstB,EAAa,CAAC,cAAc,GAAM,aAAa,GAAM,wBAAwB,EAAK,EAAE,GAAGlvB,EAA0B4B,CAAO,EAAE,CAAC,IAAMutB,EAAcrxB,EAAM8D,CAAO,EAAEstB,EAAa,QAAQC,EAAc,QAAW1uB,GAAiB0uB,EAAc,YAAY,IAAGD,EAAa,aAAaC,EAAc,cAAcD,EAAa,wBAAwBC,EAAc,0BAA0B,GAAKD,EAAa,cAAcC,EAAc,gBAAgB,GAAKD,EAAa,aAAaC,EAAc,eAAe,GAAQ1uB,GAAiB0uB,EAAc,iBAAiB,IACnmBD,EAAa,kBAAkB5uB,EAAe6uB,EAAc,kBAAkB,CAAC,QAAQ3W,EAAM,SAAS,QAAQ,KAAK,CAAC,EAAG,CAAC,OAAO0W,CAAa,EAInIE,GAAoBryB,GAAO0D,GAAiB1D,CAAK,GAAG,MAAM,QAAQA,CAAK,EAKvEsyB,GAAsB,CAACC,EAAsB5oB,IAAS,CAAC,GAAG,CAAC,SAAA6oB,CAAQ,EAAED,EAA4BE,EAAyBD,EAAS5Y,GAA+B4Y,CAAQ,EAAE,OAAU,OAAGA,GAAU,CAACC,IAA0B9oB,EAAO,MAAMmJ,GAAkC/M,EAAeysB,EAAS5Y,EAA8B,CAAC,EAC7U4Y,EAAS,QAAkB,CAAC,SAAAA,EAAS,yBAAAC,CAAwB,CAAE,EAKtDC,GAAyB,CAACH,EAAsB5oB,IAAS,CAAC,IAAI8oB,EAA6BE,EAAkB,CAAC,EAAMC,EAAiB,CAAC,EAAMC,EAAY,GAAUL,EAAaM,EAAQP,GAAuB,UAAU,GAAQ7uB,GAAiB6uB,CAAqB,GAAGO,IACjR,CAAC,SAAAN,EAAS,yBAAAC,CAAwB,EAAEH,GAAsBC,EAAsB5oB,CAAM,EAAM0oB,GAAoBE,EAAsB,iBAAiB,IAAGI,EAAkBJ,EAAsB,kBAAkBM,EAAY,IAASR,GAAoBE,EAAsB,gBAAgB,IAAGK,EAAiBL,EAAsB,iBAAiBM,EAAY,KAAO,IAAME,EAAa,CAAC,kBAAAJ,EAAkB,iBAAAC,CAAgB,EACxa,OAAAE,EAAQA,GAAS,EAAQL,EAAiC,CAAC,SAAAD,EAAS,yBAAAC,EAAyB,YAAAI,EAAY,QAAAC,EAAQ,aAAAC,CAAY,CAAE,EAKtHC,GAAU,IAAI,CAEvB,IAAMC,EAAU,SAAS,cAAc,4BAA4B,EAAE,GAAGA,GAAWA,EAAU,QAAQ,cAAcxX,EAAM,UAAU,SAAS,MAAO,OAAOwX,EAAU,IAGpK,IAAMC,EAAQ,SAAS,qBAAqB,QAAQ,EAAQC,EAAiB,2BAC7E,QAAUC,KAAUF,EAAQ,CAAC,IAAMG,EAAID,EAAO,aAAa,KAAK,EAAE,GAAGC,GAAKF,EAAiB,KAAKE,CAAG,EAAG,OAAOA,CAAK,CAAkB,EAI3HC,GAAqBjD,GAAK,CAAC5U,EAAM,UAAU,wBAAwB,MAAMsW,GAAwB1B,EAAI,OAAO,MAAM,GAAG,CAAC1oB,GAA8B,EAAE8T,EAAM,UAAU,0BAA0B,MAAMwW,GAA0B5B,EAAI,OAAO,MAAM,CAAE,EAAQkD,GAA8B5pB,GAAQ,CAAC,GAAK,CAAC,qBAAA6pB,EAAqB,oBAAAC,EAAoB,QAAQC,EAAoB,gBAAAC,EAAgB,sBAAAC,CAAqB,EAAEnY,EAAM,YAAY,MAAUoY,EAAcH,GAAqB,OAAWI,EAAW,GAAUC,EAAoB,GAAGP,EAAqB,CAACM,EAAWN,EAAqB,IAAM/d,EAAqBoe,EAAc,QAAQF,EAI7mB9C,EAAevuB,EAAUmT,CAAoB,GAAG,CAACsb,GAAwB7sB,GAAoBuR,CAAoB,CAAC,GAAGme,EAA4BI,EAAerD,GAAkB8C,GAAqB1Z,GAA8B8W,CAAc,EAAE,GAAGe,GAAWoC,CAAc,EAAE,CAACD,EAAoB9C,GAAsB+C,CAAc,EAAE,IAAMC,EAAQ/C,GAAU,OAAO,SAAS,IAAI,EAAQgD,EAAgBhD,GAAU8C,CAAc,EAKpbC,IAAUC,IAAiBL,EAAc,CAAC,GAAGA,EAAc,SAAS,OAAO,OAAO,EAAI,GAI7E,CAACD,GAAuB/C,GAAgBqD,IAAkBhwB,GAAoBuR,CAAoB,IAAGqe,EAAW,GAAMnqB,EAAO,KAAK6L,GAA4CzP,EAAe0P,EAAqBye,CAAe,CAAC,EAAG,MAAOJ,EAAW,EAAO,CAAC,MAAO,CAAC,WAAAA,EAAW,cAAAD,EAAc,oBAAAE,CAAmB,CAAE,EAAQI,GAAkCxqB,GAAQ,CAAC,GAAK,CAAC,QAAQ+pB,CAAmB,EAAEjY,EAAM,YAAY,MAAUtS,EAAYuqB,GAAqB,KAAQpxB,EAAU6G,CAAW,GAAG,CAACmnB,GAAmBnnB,CAAW,IAAGQ,EAAO,KAAKqL,GAAgCjP,EAAeoD,EAAYkJ,EAAoB,CAAC,EAAElJ,EAAYkJ,IAAsB,IAAIkD,EAAyBme,GAAqB,YAAY,QAAcvE,EAAqB5Z,GAA0BsE,GAAyCtE,CAAwB,EAAK,CAACpT,EAAYoT,CAAwB,GAAGpT,EAAYgtB,CAAoB,GAC/5BxlB,EAAO,KAAKuL,GAA+CnP,EAAewP,EAAyBsE,GAAyCH,EAAkC,CAAC,EAAEnE,EAAyBmE,IAA4CvX,EAAYoT,CAAwB,IAAGA,EAAyBmE,IACtT,IAAM0a,EAAyBV,GAAqB,QAAcW,EAAkBD,GAA0B7e,IAA2BmE,GAAsC0a,IAA2B,IAAMC,IAAoBD,GAA0BzqB,EAAO,KAAK2L,GAAwCvP,EAAewP,EAAyBmE,EAAkC,CAAC,EAAG,GAAK,CAAC,WAAAoa,EAAW,oBAAAC,EAAoB,cAAAF,CAAa,EAAEN,GAA8B5pB,CAAM,EAAEnK,EAAE,IAAI,CAACic,EAAM,QAAQ,KAAK,MAAMtS,EAAYsS,EAAM,QAAQ,OAAO,MAAMoY,EAAcpY,EAAM,cAAc,2BAA2B,MAAMqY,EAAWrY,EAAM,cAAc,eAAe,MAAMsY,EAAoBtY,EAAM,QAAQ,qBAAqB,MAAM5B,GAAyCtE,CAAwB,EAAEkG,EAAM,QAAQ,QAAQ,MAAM4Y,CAAkB,CAAC,CAAE,EAAQC,GAAmC3qB,GAAQ,CAAC,GAAK,CAAC,SAAA6oB,EAAS,yBAAAC,EAAyB,YAAAI,EAAY,QAAAC,EAAQ,aAAAC,CAAY,EAAEL,GAAyBjX,EAAM,YAAY,MAAM,kBAAkB9R,CAAM,EAC1gC4qB,EAAe9Y,EAAM,YAAY,MAAM,WAAe+Y,EAAgBD,GAAgB,SAAS,UAAU1C,GAA2C4C,EAAkB,CAAC,OAAO,UAAU,aAAa,EAAKnyB,EAAUkyB,CAAe,GAAG,CAACC,EAAkB,SAASD,CAAe,IAAGA,EAAgB3C,GAAqCloB,EAAO,KAAK8N,GAAyC1R,EAAewuB,GAAgB,SAAS,SAAS1C,EAAoC,CAAC,GAAG,IAAI6C,EAAmBH,GAAgB,QAAQ,UAAUzC,GAA+C6C,EAAc,CAAC,YAAY,QAAQ,EAAKryB,EAAUoyB,CAAkB,GAAG,CAACC,EAAc,SAASD,CAAkB,IAAGA,EAAmB5C,GAAyCnoB,EAAO,KAAKiO,GAA6C7R,EAAewuB,GAAgB,QAAQ,SAASzC,EAAwC,CAAC,GAAGtyB,EAAE,IAAI,CAACic,EAAM,SAAS,+BAA+B,MAAMgX,EAAyBhX,EAAM,SAAS,YAAY,MAAMoX,EAAYpX,EAAM,SAAS,QAAQ,MAAMqX,EAAQrX,EAAM,SAAS,KAAK,MAAMsX,EAAatX,EAAM,SAAS,SAAS,MAAM+W,EAAS/W,EAAM,SAAS,WAAW,MAAM,CAG9pC,QAAQA,EAAM,YAAY,MAAM,YAAY,UAAU,IAAMoX,IAAc,IAAOC,IAAU,GAAK,QAAQ,CAAC,SAAS0B,CAAe,EAAE,OAAO,CAAC,SAASE,CAAkB,CAAC,CAAE,CAAC,CAAE,EAInKE,GAAoBC,GAAM,CAAC,IAAIC,EAAmBrZ,EAAM,SAAS,mBAAmB,MAAUsZ,EAAe9xB,EAA0B4xB,EAAK,yBAAyB,IAAMpZ,EAAM,SAAS,SAAS,QAAOqZ,EAAmBD,EAAK,0BAA0B,UAAU,KAAKj0B,GAAGA,EAAE,WAAW6a,EAAM,SAAS,SAAS,KAAK,GAAG,oBAAoBA,EAAM,SAAS,mBAAmB,OAAOsZ,EAAYF,EAAK,2BAC/YpZ,EAAM,SAAS,SAAS,QAAQ,WAAUqZ,EAAmB,QAAWt1B,EAAE,IAAI,CAACic,EAAM,SAAS,SAAS,MAAM1a,EAAMg0B,CAAW,EAAEtZ,EAAM,SAAS,mBAAmB,MAAMqZ,CAAmB,CAAC,CAAE,EAAQE,GAA0CrrB,GAAQ,CAAC,GAAG8R,EAAM,gBAAgB,gBAAgB,MAAM,CAAC,IAAMwZ,EAA6B,WAAeC,EAAsBD,EAAgCxZ,EAAM,YAAY,MAAM,YAAcA,EAAM,aAAa,kBAAkB,MAAOyZ,EAAsB,eAAqBA,EAAsBD,EAA6BtrB,EAAO,KAAKwM,GAA+BpQ,CAAc,CAAC,IAAIvG,EAAE,IAAI,CAACic,EAAM,gBAAgB,sBAAsB,MAAMyZ,CAAsB,CAAC,CAAE,CAAC,EAAQC,GAAmB,CAAC7d,EAAUtD,EAASohB,EAAwBC,EAAmB1rB,IAAS,CAAC,IAAM2rB,EAAgB,IAAI,gBAAgB,CAAC,EAAEpqB,GAAY,EAAEF,GAAY,MAAMoO,GAAW,SAAApF,EAAS,wBAAwBohB,EAAwB,SAAS,EAAE,mBAAmBC,EAAmB,SAAS,CAAC,CAAC,EAAME,EAAO9b,GAA0B+b,EAAaF,EAAoBG,EAAS,iBAAqBC,EAAK,GAAG,GAAG9D,GAAWta,CAAS,EAAE,CAAC,IAAMqe,EAAkB,IAAI,IAAIre,CAAS,EAAM2Z,GAAsB0E,EAAkB,QAAQ,EAAE,SAAS,eAAe,IAAGA,EAAkB,SAAS,GAAG1E,GAAsB0E,EAAkB,QAAQ,CAAC,kBAAkBA,EAAkB,SAAShE,GAAuBgE,EAAkB,QAAQ,EAAEL,EAAgB,QAAQ,CAACt1B,EAAMQ,IAAM,CAAIm1B,EAAkB,aAAa,IAAIn1B,CAAG,IAAI,MAAMm1B,EAAkB,aAAa,IAAIn1B,EAAIR,CAAK,CAAG,CAAC,EAAEu1B,EAAOI,EAAkB,OAAOF,EAASE,EAAkB,SAASH,EAAaG,EAAkB,aAAaD,EAAKC,EAAkB,IAAK,MAAOhsB,EAAO,KAAK0N,GAA2BtR,EAAeuR,CAAS,CAAC,EAAG,MAAO,GAAGie,CAAM,GAAGE,CAAQ,IAAID,CAAY,GAAGE,CAAI,EAAG,EAIt0DE,GAA0BzQ,GAAcA,EAAa,IAAIH,IAAc,CAAC,GAAGA,EAAY,GAAG,YAAYA,EAAY,sBAAsB,YAAY,QAAQA,EAAY,QAAQ,OAAOA,EAAY,OAAO,oCAAoCA,EAAY,qCAAqC,GAAM,oCAAoCA,EAAY,qCAAqC,GAAM,eAAeI,GAA6BJ,EAAY,sBAAsB,YAAYA,EAAY,EAAE,EAAE,oBAAoBA,EAAY,sBAAsB,cAAc/K,EAA2C,EAAE,EAY3lB4b,GAAuB,CAACC,EAAcC,EAAWC,EAAoBC,EAAkBC,EAAYC,EAAmBxsB,IAAS,CAAC,IAAIysB,EAC7I,GAAGD,EAAmB,CAAC,GAAG,CAACvE,GAAWuE,CAAkB,EAAG,OAAAxsB,EAAO,MAAMiJ,GAAyB7M,EAAe+vB,EAAcK,CAAkB,CAAC,EAAS,KAAMC,EAAoBnF,GAAsBkF,CAAkB,CAAE,SAAOC,EAAoBJ,EACtPva,EAAM,QAAQ,IAAI,MAAM,cAAc,MAAM,CAAC,IAAM4a,EAAOrD,GAAU,EAAKqD,IAE5ED,EAAoBC,EAAO,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,OAAON,CAAU,EAAE,KAAK,GAAG,EAAG,CAEhF,OAAGG,IAAaE,EAAoBA,EAAoB,QAAQ,IAAI,OAAO,IAAI9c,EAAoB,IAAIF,EAAU,IAAI2c,CAAU,GAAG,EAAE,IAAIE,CAAiB,IAAI7c,EAAU,IAAI2c,CAAU,EAAE,GAAUK,CAAoB,EAO5ME,GAAuB,CAACL,EAAkBb,EAAwBmB,EAA+B5sB,IAASksB,GAAuB,eAAe5c,GAAYM,GAA6B0c,EAAkBb,EAAwBmB,EAA+B5sB,CAAM,EAOxQ6sB,GAAkB,CAACP,EAAkBZ,EAAmBoB,EAA0B9sB,IAASksB,GAAuB,UAAU3c,GAAgBM,GAAoByc,EAAkBZ,EAAmBoB,EAA0B9sB,CAAM,EAExO+sB,GAAN,KAAmB,CAAC,YAAYxW,EAAWf,EAAaxV,EAAO,CAAC,KAAK,aAAawV,EAAa,KAAK,OAAOxV,EAAO,KAAK,WAAWuW,EAAW,KAAK,QAAQ,KAAK,QAAQ,KAAK,IAAI,EAAE,KAAK,cAAc,KAAK,cAAc,KAAK,IAAI,CAAE,CAAC,eAAe,CAACxP,EAAE,IAAI,CAAC,KAAK,OAAO,eAAe+K,EAAM,UAAU,SAAS,KAAK,CAAE,CAAC,CAAE,CAGpT,MAAM,CAAC,GAAK,CAAC,SAAA3J,EAAS,UAAAwF,EAAU,wBAAA8d,EAAwB,mBAAAC,EAAmB,eAAAsB,EAAe,kBAAAC,EAAkB,aAAAC,CAAY,EAAEpb,EAAM,YAAY,MAC3Iqb,EAAWR,GAAuBtrB,GAAYoqB,EAAwBuB,EAAe,KAAK,MAAM,EAAE,GAAGz0B,EAAO40B,CAAU,EAAG,OAAQ,IAAIC,EAC3IA,EAAeP,GAAkBxrB,GAAYqqB,EAAmBuB,EAAkB,KAAK,MAAM,EAAMG,IAAiB,OAAc,KAAK,cAAc,EAAEtb,EAAM,UAAU,mBAAmB,MAAMwV,GAAsBxV,EAAM,UAAU,aAAa,KAAK,EAAE0Y,GAAkC,KAAK,MAAM,EAAEG,GAAmC,KAAK,MAAM,EAAEU,GAA0C,KAAK,MAAM,EAC9Yx1B,EAAE,IAAI,CAACic,EAAM,UAAU,oBAAoB,MAAMqb,EAAWrb,EAAM,UAAU,eAAe,MAAMsb,EAAkBjlB,IAAU2J,EAAM,UAAU,SAAS,MAAM3J,GAAU2J,EAAM,UAAU,gBAAgB,MAAM0Z,GAAmB7d,EAAUmE,EAAM,UAAU,SAAS,MAAM2Z,EAAwBC,EAAmB,KAAK,MAAM,EAAE5Z,EAAM,QAAQ,kBAAkB,MAAM,GAAGA,EAAM,UAAU,mBAAmB,KAAK,IAAIzB,EAAwB,GAC7ayB,EAAM,mBAAmB,qBAAqB,MAAMob,CAAa,CAAC,EAAE,KAAK,UAAU,EAAE,CAEhF,QAAQhsB,EAAMyY,EAAchE,EAAa,CAAC,KAAK,aAAa,QAAQ,CAAC,MAAAzU,EAAM,QAAQ9E,EAAe,cAAAud,EAAc,aAAAhE,CAAY,CAAC,CAAE,CAG/H,cAAc9K,EAAS4L,EAAQ,CAEpC,GAAG,CAAC9d,EAAUkS,CAAQ,EAAE,CAAIlS,EAAU8d,CAAO,EAAG,KAAK,QAAQA,EAAQ,MAAMtM,EAAyB,EAAS,KAAK,QAAQ,IAAI,MAAMA,EAAyB,CAAC,EAAG,MAAO,CAAC,IAAIuc,EAAI,GAAG,CAAIpuB,EAASuS,CAAQ,EAAG6b,EAAI,KAAK,MAAM7b,CAAQ,EAAS6b,EAAI7b,CAAU,OAAO1K,EAAI,CAAC,KAAK,QAAQA,EAAIwI,EAA8B,EAAE,MAAO,CAAC,GAAG,CAAC8d,GAAoBC,CAAG,EAAE,CAAC,KAAK,QAAQ,IAAI,MAAM/d,EAA8B,CAAC,EAAE,MAAO,CAC5Z,GAAG+d,EAAI,OAAO,UAAU,GAAM,CAAC,KAAK,OAAO,MAAM9d,EAAqB,EAAE,MAAO,CAC/E+gB,GAAqBjD,CAAG,EAAE,IAAM2G,EAAmB3G,EAAI,OAAO,aAAa,OAAO,EAAEuF,GAA0BvF,EAAI,OAAO,YAAY,EAAE,CAAC,EACxI7wB,EAAE,IAAI,CACNic,EAAM,OAAO,MAAM,CAAC,OAAO4U,EAAI,OAAO,OAAO,KAAKA,EAAI,OAAO,KAAK,GAAGA,EAAI,OAAO,GAAG,YAAYA,EAAI,OAAO,WAAW,EACrH5U,EAAM,mBAAmB,uBAAuB,MAAMub,EACtDvb,EAAM,QAAQ,wBAAwB,MAAMA,EAAM,YAAY,MAAM,SAAS,CAAC,EAAEmZ,GAAoBvE,CAAG,EACvG5U,EAAM,UAAU,OAAO,MAAM,YAAa,CAAC,CAAE,CAIxC,WAAW,CAAC,IAAMwb,EAAiBxb,EAAM,YAAY,MAAM,gBAAgB,GAAGwb,EAAiB,CAAC,GAAG,CAACj1B,EAAWi1B,CAAgB,EAAE,CAAC,KAAK,OAAO,MAAMtkB,GAA2B5M,CAAc,CAAC,EAAE,MAAO,CAC5M,IAAMsqB,EAAI4G,EAAiB,EAAK5G,aAAe,QAASA,EAAI,KAAK6G,GAAM,KAAK,cAAcA,CAAI,CAAC,EAAE,MAAMptB,GAAK,CAAC,KAAK,QAAQA,EAAI,cAAc,CAAE,CAAC,EAAS,KAAK,cAAcumB,CAAG,CAAG,MACjL,KAAK,WAAW,aAAa,CAAC,IAAI5U,EAAM,UAAU,gBAAgB,MAAM,QAAQ,CAAC,QAAQ,CAAC,eAAe,MAAS,CAAC,EAAE,SAAS,KAAK,aAAa,CAAC,CAAG,CAAC,EAM5I0b,GAAY,IAAI,CAEzB,IAAMvV,EAAS,kBAAkB,KAAK,IAAI,KAAK,EAAE,SAAS,CAAC,EAAE,OAAOA,IAAW,CAAC,EAAEA,EAAS,CAAC,EAAE,IAAK,EAK1FwV,GAAY,CAACC,EAAY,IAAI,WAAWA,EAAY,GAAG,UAAU,UAGjEC,GAAgB,CAACD,EAAY,IAAI,WAAW,CAAiC,IAAME,EAApBF,EAAY,EAAyB,qBAAqB,MAAM,EAAMG,EAAa,GAAG,QAAQ,EAAE,EAAED,EAAK,CAAC,EAAE,GAAG,EAAE,CAAC,IAAME,EAAIF,EAAK,CAAC,EAAE,GAAGE,EAAI,aAAa,KAAK,IAAI,aAAa,CAACD,EAAa,CAACA,EAAaC,EAAI,aAAa,MAAM,GAAG,GAAG,KAAM,CAAC,CAAC,OAAOD,CAAa,EAAQE,GAAa,CAACC,EAAa,IAAI,WAAW,YAAY,CAAC,IAAMC,EAAUD,EAAa,EAAE,GAAGx1B,EAAYy1B,CAAS,EAAG,OAAO,KAAM,GAAG,CAAC,UAAAtW,CAAS,EAAEsW,EAAe,CAAC,MAAAC,CAAK,EAAED,EAErf,GAAGC,GAAO,OAAO,eAAeA,CAAK,EAAE,QAAQ,CAE/C,IAAMC,EAAWxW,EAAU,MAAM,qBAAqB,EAAKwW,IAAYxW,EAAU,GAAGA,CAAS,UAAUwW,EAAW,CAAC,CAAC,GAAI,CAAC,OAAOxW,CAAU,EAAQyW,GAAY,CAACJ,EAAa,IAAI,WAAW,YAAY,CAAC,IAAMC,EAAUD,EAAa,EAAE,OAAGx1B,EAAYy1B,CAAS,EAAU,KAAaA,EAAU,UAAUA,EAAU,eAAgB,EAG3TI,GAAyB,CAACC,EAAY,IAAI,WAAW,SAASZ,EAAY,IAAI,WAAW,CAAC,IAAMa,EAASD,EAAY,EAAQT,EAAaF,GAAgBD,CAAW,EAAMx1B,EAAKq2B,EAAS,SAAc,CAAC,KAAKC,CAAM,EAAED,EAAaE,EAAQD,EAAY,CAAC,OAAAE,CAAM,EAAEH,EACxQ,GAAGV,EAAc,GAAG,CAAC,IAAMhH,EAAO,IAAI,IAAIgH,CAAY,EACnDhH,EAAO,SAAS,GAAI4H,EAAQZ,EAAaa,EAAcD,EAAQZ,EAAc31B,EAAK2uB,EAAO,QAAS,MAAW,CAChH,CAAE,IAAM/nB,EAAIgpB,GAAkB2G,CAAO,EAAO,CAAC,MAAAE,CAAK,EAAEjB,EAAY,EAAQjG,EAASgG,GAAYC,CAAW,EAAE,MAAO,CAAC,KAAAx1B,EAAK,SAAAuvB,EAAS,iBAAiBD,GAAmBC,CAAQ,EAAE,OAAAiH,EAAO,MAAAC,EAAM,IAAA7vB,EAAI,QAAQ0vB,CAAM,CAAE,EAEzMI,GAAuB,CAACzzB,EAAS0zB,EAAM,SAAS,CAAIA,IAAQ,QAAQ1zB,EAAS,MAAS,EAAM0zB,IAAQ,WAAW1zB,EAAS,UAAU,aAAa,EAAM0zB,IAAQ,QAAQ,UAAU,eAAe,qBAAqB,CAAC,eAAe,UAAU,SAAS,SAAS,QAAQ,WAAW,kBAAkB,gBAAgB,kBAAkB,OAAO,CAAC,EAAE,KAAKC,GAAI,CAAC3zB,EAAS2zB,CAAE,CAAE,CAAC,EAAE,MAAM,IAAI,CAAC3zB,EAAS,CAAE,CAAC,CAAG,EAEpY4zB,GAAmB,IAAI,CAAC,IAAMC,EAAY,WAAW,SAAS,cAAc,KAAK,EAAE,OAAAA,EAAY,aAAa,WAAW,GAAG,EAASA,EAAY,QAAQA,EAAY,QAAQ,KAAK,IAAI,EAAM,EAAQC,GAAgC,CAExO,IAAI,IAAI,CAAC52B,EAAW,WAAW,GAAG,GAAG,CAACA,EAAW,WAAW,eAAe,EAAE,QAAQ,IAAI,CAACA,EAAW,WAAW,OAAO,EAAE,eAAe,IAAI,CAACA,EAAW,WAAW,OAAO,KAAK,EAAE,mBAAmB,IAAI,CAACA,EAAW,WAAW,OAAO,SAAS,EAAE,aAAa,IAAI,CAACA,EAAW,WAAW,MAAM,IAAI,EAAE,uBAAuB,IAAI,CAACA,EAAW,WAAW,MAAM,UAAU,IAAI,EAAE,2BAA2B,IAAI,CAACA,EAAW,WAAW,MAAM,UAAU,QAAQ,EAAE,4BAA4B,IAAI,CAACA,EAAW,WAAW,OAAO,UAAU,QAAQ,EAAE,8BAA8B,IAAI,CAACA,EAAW,WAAW,OAAO,UAAU,UAAU,EAAE,4BAA4B,IAAI,CAACA,EAAW,WAAW,OAAO,UAAU,QAAQ,EAAE,8BAA8B,IAAI,CAACA,EAAW,WAAW,OAAO,UAAU,UAAU,EAAE,uBAAuB,IAAI,CAACA,EAAW,WAAW,OAAO,aAAa,EAAE,iBAAiB,IAAI,CAACA,EAAW,WAAW,OAAO,OAAO,EAAE,gBAAgB,IAAI,CAACA,EAAW,WAAW,OAAO,MAAM,EAAE,gBAAgB,IAAI,CAACA,EAAW,WAAW,OAAO,MAAM,EAAE,qBAAqB,IAAI,CAACA,EAAW,WAAW,OAAO,WAAW,EAAE,4BAA4B,IAAI,CAAC02B,GAAmB,EAE7nC,YAAY,IAAI,CAAC12B,EAAW,WAAW,WAAW,GAAG,CAACA,EAAW,WAAW,WAAW,EAAE,sBAAsB,IAAI,CAACA,EAAW,WAAW,qBAAqB,GAAG,CAACA,EAAW,WAAW,oBAAoB,EAAE,YAAY,IAAI,CAACA,EAAW,WAAW,WAAW,EAAE,uBAAuB,IAAI,CAACA,EAAW,WAAW,UAAU,UAAU,EACzU,YAAY,IAAI,CAACA,EAAW,WAAW,UAAU,EAAE,IAAI,IAAI,CAACA,EAAW,WAAW,GAAG,EAAE,KAAK,IAAI,CAACA,EAAW,WAAW,IAAI,CAAC,EAAQ62B,GAAiB,IAAI,CAAC,IAAMC,EAAyB,OAAO,KAAKF,EAA+B,EAAMG,EAAc,GAAwD,QAAQl4B,EAAE,EAAEA,EAAEi4B,EAAyB,OAAOj4B,IAAI,CAAC,IAAMm4B,EAAoBJ,GAAgCE,EAAyBj4B,CAAC,CAAC,EAAE,GAAGmB,EAAWg3B,CAAmB,GAAGA,EAAoB,EAAE,CAACD,EAAc,GAAK,KAAM,CAAC,CAAC,OAAOA,CAAc,EAE/hBE,GAAiB,gDAAsDC,GAAa,GAAGD,EAAgB,6BAA6B,OAAO,KAAKL,EAA+B,EAAE,KAAK,KAAK,CAAC,GAASO,GAAsB,GAAG,IAC9NC,GAAmB,sBAEnBC,GAAU,IAAI,CAACj3B,EAAkB,WAAW,MAAM,GAAGJ,EAAW,WAAW,OAAO,eAAe,EACjGs3B,GAAiB,IAAI,CAACl3B,EAAkB,WAAW,UAAU,aAAa,EAAQm3B,GAAU,IAAI,CAACn3B,EAAkB,WAAW,UAAU,UAAU,GAAGJ,EAAW,WAAW,UAAU,UAAU,EAE/Lw3B,GAAiB,IAAI,CAAC,IAAIC,EAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,OAAAA,EAAc,CAAC,MAAM,WAAW,OAAO,MAAM,OAAO,WAAW,OAAO,OAAO,QAAQ,WAAW,iBAAiB,WAAW,WAAW,WAAW,YAAY,WAAW,WAAW,EAASA,CAAc,EAE3SC,GAAN,KAAyB,CAAC,YAAYxZ,EAAWf,EAAaxV,EAAO,CAAC,KAAK,WAAWuW,EAAW,KAAK,aAAaf,EAAa,KAAK,OAAOxV,EAAO,KAAK,kBAAkB,IAAIkG,GAAkB,KAAK,MAAM,EAAE,KAAK,QAAQ,KAAK,QAAQ,KAAK,IAAI,EAAE,KAAK,QAAQ,KAAK,QAAQ,KAAK,IAAI,CAAE,CAAC,MAAM,CAAC,KAAK,2BAA2B,EAAE,KAAK,sBAAsB,CAAE,CAG9V,2BAA2B,CAACrQ,EAAE,IAAI,CAClCic,EAAM,aAAa,QAAQ,yBAAyB,MAAM6R,GAAmBhF,EAAe2F,EAAiB3F,CAAc,EAAE,KAAK,MAAM,EAAE7M,EAAM,aAAa,QAAQ,wBAAwB,MAAM6R,GAAmB/E,EAAc,OAAU,KAAK,MAAM,EAAE9M,EAAM,aAAa,QAAQ,0BAA0B,MAAM6R,GAAmB9E,EAAgB,OAAU,KAAK,MAAM,EAC9W/M,EAAM,aAAa,kBAAkB,MAAM8d,GAAU,EAAE9d,EAAM,aAAa,gBAAgB,MAAM6d,GAAiB,EAAE7d,EAAM,aAAa,kBAAkB,MAAM4d,GAAU,EAAE5d,EAAM,aAAa,SAAS,MAAM,WAAW,UAAU,OACjOA,EAAM,QAAQ,UAAU,MAAMic,GAAa,EAAEjc,EAAM,QAAQ,OAAO,MAAMsc,GAAY,EAAEtc,EAAM,QAAQ,OAAO,MAAM+d,GAAiB,EAAE/d,EAAM,QAAQ,SAAS,MAAM0b,GAAY,EAAKmC,GAAiB,GAAGf,GAAuBoB,GAAM,CAACle,EAAM,QAAQ,OAAO,EAAE,MAAMke,CAAK,EAAEle,EAAM,YAAY,MAAM,cAAc,CAAG,CAAC,EAClT/K,EAAE,IAAI,CAAI+K,EAAM,YAAY,MAAM,kBAAkB,IAAMA,EAAM,UAAU,gBAAgB,QAAQ,QAAWwE,GAAiB,KAAK,UAAU,CAAG,CAAC,CAAE,CAE9I,4BAA4B,CAACxE,EAAM,aAAa,YAAY,MAAMod,GAAiB,EAAE,IAAMrgB,EAAkBiD,EAAM,YAAY,MAAM,YAAgBme,EAAYV,GAA2V,GAA3U32B,GAAoBiW,CAAiB,IAAMoZ,GAAWpZ,CAAiB,EAAGohB,EAAYphB,EAAyB,KAAK,OAAO,KAAKD,GAA6BzS,GAAqB0S,CAAiB,CAAC,GAA6BiD,EAAM,YAAY,MAAM,oBAAoBA,EAAM,aAAa,YAAY,OAAOmW,GAAWgI,CAAW,EAAwB,CAAC,IAAMC,EAAyBD,IAAcne,EAAM,YAAY,MAAM,YAAY,GAAGoe,EAAyB,CAEroB,IAAMC,EAAqB,uBAAuBre,EAAM,UAAU,SAAS,KAAK,GAASse,EAAiB,IAAI,CAAC,KAAK,QAAQ,EAC5H,OAAO,WAAWD,CAAoB,CAAE,EAAE,WAAWA,CAAoB,EAAEC,EAAiBH,EAAY,GAAGA,CAAW,aAAaE,CAAoB,EAAG,CAAC,KAAK,kBAAkB,WAAW,CAAC,IAAIF,EAAY,GAAGR,GAAmB,MAAM,GAAK,QAAQD,GAAsB,SAAS3hB,GAAU,CAAKA,EAAwGqiB,GAA0B,KAAK,QAAQ,EAArI,KAAK,QAAQ,IAAI,MAAMtiB,GAA2B6hB,GAAmBQ,CAAW,CAAC,CAAC,CAAsD,CAAC,CAAC,CAAE,MAAO,KAAK,QAAQ,CAAG,CAE7c,uBAAuB,CAAC,WAAW,iBAAiB,UAAU,IAAI,CAACne,EAAM,aAAa,SAAS,MAAM,EAAM,CAAC,EAAE,WAAW,iBAAiB,SAAS,IAAI,CAACA,EAAM,aAAa,SAAS,MAAM,EAAK,CAAC,EAAE,WAAW,iBAAiB,SAAS/O,GAAS,IAAI,CAAC+O,EAAM,QAAQ,OAAO,MAAM+d,GAAiB,CAAE,EAAE,IAAI,CAAC,CAAE,CAGjT,SAAS,CAAC,KAAK,0BAA0B,EAAE/d,EAAM,UAAU,OAAO,MAAM,0BAA2B,CAG9F,QAAQ5Q,EAAMyU,EAAa,CAAC,KAAK,aAAa,QAAQ,CAAC,MAAAzU,EAAM,QAAQ/E,GAAqB,aAAAwZ,CAAY,CAAC,CAAE,CAAC,EAEzG0a,GAAQ,MACRC,GAAmB,CAAC,eAAe,cAAc,mBAAmB,EAEpEC,GAA0B,CAAC,UAAU,oBAAoB,YAAY,QAAQ,QAAQ,EACrFC,GAAkB,CAAC,KAAK,eAAe,UAAU,UAAU,YAAY,cAAc,qBAAqB,QAAQ,aAAa,UAAU,aAAa,qBAAqB,oBAAoB,WAAW,aAAa,EAEvNC,GAAe,gBAAsBC,GAAyB,IAAI,IAAI,CAAC,YAAY,cAAc,WAAW,CAAC,EAAQC,GAA0B,SAAS,UAAU,SAAS,KAAK,MAAM,EAAQC,GAAcv6B,GAAO,CAAC,GAAG,CAACiD,EAA0BjD,CAAK,EAAG,MAAO,GAAO,IAAMw6B,EAAU,OAAO,eAAex6B,CAAK,EAAE,GAAGw6B,IAAY,KAAM,MAAO,GAAM,IAAMC,EAAY,OAAO,UAAU,eAAe,KAAKD,EAAU,aAAa,EAAEA,EAAU,YAAY,OAAU,OAAO,OAAOC,GAAc,YAAYA,EAAY,YAAYD,GAAW,SAAS,UAAU,SAAS,KAAKC,CAAW,IAAIH,EAA0B,EAAQI,GAA8B,CAAC16B,EAAM26B,EAAe,IAAI,MAAQ,CAAC,GAAG,CAAC13B,EAA0BjD,CAAK,GAAG,CAAC,MAAM,QAAQA,CAAK,EAAG,MAAO,GAAO,IAAM46B,EAAiB56B,EAAM,OAAG26B,EAAe,IAAIC,CAAgB,EAAU,IAAOD,EAAe,IAAIC,CAAgB,EAAS,OAAO,KAAKA,CAAgB,EAAE,KAAKp6B,GAAa65B,GAAyB,IAAI75B,CAAG,GAAGk6B,GAA8BE,EAAiBp6B,CAAG,EAAEm6B,CAAc,CAAG,EAAE,EAAQE,GAAgC,CAAC/xB,EAAQa,IAAS,CAAC,IAAMmxB,EAAgB,CAAC,EAAE,cAAO,KAAKhyB,CAAO,EAAE,QAAQtI,GAAK,CAAC,GAAG05B,GAA0B,SAAS15B,CAAG,EAAE,CAACmJ,EAAO,KAAKoM,GAAoCqkB,GAAe55B,CAAG,CAAC,EAAE,MAAO,CAAC,OAAO,eAAes6B,EAAgBt6B,EAAI,CAAC,aAAa,GAAK,WAAW,GAAK,MAAMsI,EAAQtI,CAAG,IAAIsI,EAAQgyB,EAAgBhyB,EAAQtI,CAAG,EAAE,SAAS,EAAI,CAAC,CAAE,CAAC,EAASs6B,CAAgB,EAAQC,GAA2B,CAACC,EAAMrxB,IAAS,CAAC,GAAG,CAAC,GAAG,CAAC4wB,GAAcS,CAAK,EAAE,CAACrxB,EAAO,KAAKuM,GAA+BkkB,EAAc,CAAC,EAAE,MAAiB,CAAC,IAAMa,EAAcJ,GAAgCG,EAAMrxB,CAAM,EAAE,GAAG+wB,GAA8BO,CAAa,EAAE,CAACtxB,EAAO,KAAKuM,GAA+BkkB,EAAc,CAAC,EAAE,MAAiB,CAAC,IAAMc,EAAiB/wB,EAAkB8wB,EAActxB,CAAM,EAAE,OAAO5I,EAAMm6B,CAAgB,CAAE,MAAM,CAACvxB,EAAO,KAAKuM,GAA+BkkB,EAAc,CAAC,EAAE,MAAiB,CAAC,EAE/7De,GAAN,KAAwB,CAAC,YAAY1f,EAAM9R,EAAO,CAAC,KAAK,MAAM8R,EAAM,KAAK,OAAO9R,CAAO,CAAC,IAAIb,EAAQ,CAAC,IAAMsyB,EAAOL,GAA2BjyB,EAAQ,KAAK,MAAM,EAAE,GAAG,CAACsyB,EAAQ,OAAQ,IAAMC,EAAc93B,EAAexC,EAAM,KAAK,MAAM,KAAK,EAAEq6B,CAAM,EAAE,KAAK,MAAM,MAAMx3B,GAA6By3B,CAAa,CAAE,CAAC,KAAK,CAAC,OAAOt6B,EAAM,KAAK,MAAM,KAAK,CAAE,CAAC,OAAO,CAAC,KAAK,MAAM,MAAM,CAAC,CAAE,CAAC,EAMjXu6B,GAAS9zB,GAAK,OAAOA,GAAM,UAAU,CAAC,OAAO,MAAMA,CAAG,EAKtD+zB,GAAa,CAACC,EAAch0B,IAAMA,EAAI,SAAS,EAAE,QAAQg0B,EAIzDC,GAAkBj0B,GAAK8zB,GAAS9zB,CAAG,GAAGA,GAAK,GAAG,OAAO,UAAUA,CAAG,EAErEk0B,GAAsB,GAASC,GAAqBC,GAAa,CAAC,GAAK,CAAC,OAAAC,CAAM,EAAED,EAAkBE,EAAU,KAAK,IAAI,EAAE,MAAO,GAAQD,GAAQ,SAASA,EAAO,WAAWC,EAAUD,EAAO,UAAW,EAKlME,GAAkBH,GAAoD,CAACA,EAAY,WAAW,KAAK,IAAI,EAAEA,EAAY,WAA2CD,GAAqBC,CAAW,EAGhMI,GAAkB,IAAI,KAAK,IAAI,EAK/BC,GAAuB,CAACplB,EAAUlN,IAAa,CAACkN,GAAW,CAAC4kB,GAAkB5kB,CAAS,GAAG,CAAC0kB,GAAaG,GAAsB7kB,CAAS,GAAGlN,EAAO,KAAKiN,GAA2B1Q,GAAqB2Q,EAAU6kB,EAAqB,CAAC,EAAS,IAAc,GAAaQ,GAA6BL,GAAQ,CAAC,GAAIA,GAAQ,QAA2B,OAAOA,EAAO,YAAYJ,GAAkBI,EAAO,QAAQ,EAAE,KAAK,IAAI,EAAEA,EAAO,SAAS,OAAW,EAI1bM,GAA4BP,GAAa,CAAC,GAAK,CAAC,QAAAhzB,EAAQ,OAAAizB,CAAM,EAAED,EAAkBE,EAAU,KAAK,IAAI,EAAE,MAAO,CAAC,GAAGA,EAC3H,UAAUA,EAAUlzB,EACpB,QAAAA,EAAQ,UAAU,GAAK,GAAIizB,GAAQ,CAAC,OAAAA,CAAM,CAAE,CAAE,EAKrCO,GAA8B,CAAC7zB,EAAGoB,KAA0F,CAAC,GAAjEsyB,GAAuB1zB,EAAGoB,CAAM,EAAEpB,EAAGyzB,GAAkB,EAAuB,aAAa,OAAU,YAAY,EAAI,GAAUK,GAAiClzB,GAAqBA,IAAcmf,GAAgBnf,IAAcof,GAAepf,IAAcqf,GAAiBrf,IAAcsf,EAGzV6T,GAAoB,IAAI50B,GAAa,EAAQ60B,GAAqB13B,GAAS,CACpF,GAAGnC,GAAUmC,CAAO,EAAE,CAAC,GAAK,CAAC,QAAA23B,EAAQ,GAAGC,CAAI,EAAEpiB,GAAsB,MAAO,CAAC,GAAGoiB,EAAK,QAAQ,CAAC,GAAGD,EAAQ,YAAY33B,CAAO,CAAC,CAAE,CAC9H,OAAG5B,EAA0B4B,CAAO,GAAG5B,EAA0B4B,EAAQ,OAAO,EAAUtB,EAAe8W,GAAsBxV,CAAO,EAAU,CAAC,GAAGwV,EAAqB,CAAE,EAMlKqiB,GAAyBC,GAAW,CAC7C,IAAMC,EAAa5E,GAAyB,EAAQ6E,EAAa,CAAC,EAAE,cAAO,KAAKD,CAAY,EAAE,QAAQp8B,GAAK,CAACq8B,EAAar8B,CAAG,EAAEm8B,IAAYn8B,CAAG,GAAGo8B,EAAap8B,CAAG,CAAE,CAAC,EAAEq8B,EAAa,iBAAiBF,GAAW,kBAAkBlhB,EAAM,QAAQ,gBAAgB,MAAMohB,EAAa,yBAAyBF,GAAW,0BAA0BlhB,EAAM,QAAQ,uBAAuB,MAAaohB,CAAa,EAIrYC,GAAyB,CAACl4B,EAAWC,IAAU,CAAC,IAAMk4B,EAAiBl4B,GAAS,MAAM,CAAC,EAAQ83B,EAAU/3B,EAC5Gg4B,EAAa5E,GAAyB,EAAE,cAAO,KAAK4E,CAAY,EAAE,QAAQp8B,GAAK,CAAI2B,EAAYw6B,EAAUn8B,CAAG,CAAC,IAAGm8B,EAAUn8B,CAAG,EAAEu8B,EAAiBv8B,CAAG,GAAGo8B,EAAap8B,CAAG,EAAG,CAAC,EAAK2B,EAAYw6B,EAAU,gBAAgB,IAAGA,EAAU,iBAAiBI,EAAiB,kBAAkBthB,EAAM,QAAQ,gBAAgB,OAAUtZ,EAAYw6B,EAAU,wBAAwB,IAAGA,EAAU,yBAAyBI,EAAiB,0BAA0BthB,EAAM,QAAQ,uBAAuB,OAAckhB,CAAU,EAKvfK,GAAiC,CAAC99B,EAAI2W,EAAclM,IAAS,CAAI1G,EAA0B/D,CAAG,GAAG,OAAO,KAAKA,CAAG,EAAE,QAAQ0W,GAAU,EAAIukB,GAAkB,SAASvkB,CAAQ,GAAGukB,GAAkB,SAASvkB,EAAS,YAAY,CAAC,IAAGjM,EAAO,KAAKgM,GAAyB3P,GAAc4P,EAASC,EAAcskB,EAAiB,CAAC,CAAG,CAAC,CAAG,EAIrU8C,GAAyB,CAACC,EAAYvzB,IAAS,CACxD,GAAK,CAAC,WAAA/E,EAAW,OAAAU,EAAO,QAAAwD,CAAO,EAAEo0B,EAAiB,CAAC,OAAOC,CAAgB,EAAEr0B,EAAQk0B,GAAiCp4B,EAAW,aAAa+E,CAAM,EAAEqzB,GAAiC13B,EAAO,SAASqE,CAAM,EAAEqzB,GAAiCG,EAAiB,iBAAiBxzB,CAAM,CAAE,EAIhRyzB,GAA4B,CAACF,EAAYr4B,IAAU,CAAIA,EAAQ,aAAa5C,EAAS4C,EAAQ,WAAW,IACjHq4B,EAAY,YAAYr4B,EAAQ,aAAgBnB,GAAiBmB,EAAQ,YAAY,IACrFq4B,EAAY,aAAar4B,EAAQ,cAAiBA,EAAQ,mBAAmB5C,EAAS4C,EAAQ,iBAAiB,IAC/Gq4B,EAAY,kBAAkBr4B,EAAQ,kBAAmB,EAKhDw4B,GAAiB,CAACC,EAAcz4B,EAAQ8E,IAAS,CAAC,IAAIb,EAAQw0B,EAAoBC,EAAaC,GAAkB,CAAC,IAAMC,EAAgB5C,GAAgC2C,EAAiB7zB,CAAM,EAAE,GAAG+wB,GAA8B+C,CAAe,EAAE,CAAC9zB,EAAO,KAAKuM,GAA+BlQ,EAAa,CAAC,EAAE,MAAO,CAAC8C,EAAQvF,EAAeuF,EAAQ20B,CAAe,CAAE,EAAE,cAAO,KAAK54B,CAAO,EAAE,QAAQrE,GAAK,CAAKy5B,GAAmB,SAASz5B,CAAG,IAAMA,IAAM,UAAW+8B,EAAa,CAAC,CAAC/8B,CAAG,EAAEqE,EAAQrE,CAAG,CAAC,CAAC,EAAW,CAAC2B,EAAY0C,EAAQrE,CAAG,CAAC,GAAGyC,EAA0B4B,EAAQrE,CAAG,CAAC,EAAG+8B,EAAa14B,EAAQrE,CAAG,CAAC,EAASmJ,EAAO,KAAKsM,GAA+BjQ,EAAa,CAAC,EAAI,CAAC,EAAS8C,CAAQ,EAIxqB40B,GAAe,CAACR,EAAYr4B,EAAQ8E,IAAS,CACnD1G,EAA0B4B,CAAO,IAAGu4B,GAA4BF,EAAYr4B,CAAO,EACtFq4B,EAAY,QAAQG,GAAiBH,EAAY,QAAQr4B,EAAQ8E,CAAM,EAAG,EAIjEg0B,GAA2BC,GAAoB,CAAC,IAAIC,EAAgB,OAAGpiB,EAAM,YAAY,MAAM,oCACxGoiB,EAAgBpiB,EAAM,SAAS,YAAY,MAAM,cAAcA,EAAM,mBAAmB,qBAAqB,MAAemiB,EAAoBC,EAAgBD,EAA0BC,EAAgB7kB,GAAoCjY,EAAM88B,CAAe,CAAE,EAO5PC,GAAiB,CAACZ,EAAYr4B,EAAQ83B,EAAUhzB,EAAOo0B,EAAc,CAAC,IAAI,CAAC,IAAMC,EAAgB,CAAC,QAAQhE,GAAQ,QAAQ,CAAC,OAAOj5B,EAAM0a,EAAM,QAAQ,WAAW,KAAK,EAAE,UAAUA,EAAM,QAAQ,YAAY,MAAM,IAAI,OAAU,aAAaA,EAAM,QAAQ,YAAY,MAAM,cAAc,OACpS,GAAIA,EAAM,SAAS,QAAQ,OAAO,CAAC,kBAAkB,CAAC,iBAAiB1a,EAAM0a,EAAM,SAAS,KAAK,MAAM,gBAAgB,EAAE,kBAAkB1a,EAAM0a,EAAM,SAAS,KAAK,MAAM,iBAAiB,EAAE,SAASA,EAAM,SAAS,SAAS,MAAM,mBAAmBA,EAAM,SAAS,mBAAmB,KAAK,CAAC,EAAG,QAAQA,EAAM,QAAQ,OAAO,EAAE,MAAM,IAAIA,EAAM,QAAQ,IAAI,MAAM,QAAQA,EAAM,QAAQ,QAAQ,MAAM,UAAUA,EAAM,QAAQ,UAAU,MAAM,GAAGA,EAAM,QAAQ,GAAG,MAAM,OAAOA,EAAM,QAAQ,OAAO,MAAM,OAAOA,EAAM,QAAQ,OAAO,MAAM,SAAS4V,GAAqB,WAAW,SAAS,IAAI,EAAE,KAAKqL,GAAyBC,CAAS,EAAE,SAASlhB,EAAM,QAAQ,SAAS,MAC/oB,GAAIA,EAAM,UAAU,QAAQ,OAAO,CAAC,UAAU,CAAC,GAAIA,EAAM,UAAU,cAAc,QAAQ,OAAO,CAAC,KAAK,CAAC,WAAWA,EAAM,UAAU,cAAc,WAAW,KAAK,CAAC,CAAE,CAAC,CAAE,EAAE,kBAAkBrT,GAAwB,EAAE,UAAUV,GAAa,EAAE,OAAOw1B,EAAY,QAAQzhB,EAAM,QAAQ,OAAO,KAAK,EAAM4gB,GAAiC5gB,EAAM,QAAQ,QAAQ,MAAM,aAAa,IAAI,EAEtXuiB,EAAgB,YAAYviB,EAAM,QAAQ,YAAY,MADtDuiB,EAAgB,YAAY1B,GAAoB,EAE7C7gB,EAAM,QAAQ,uBAAuB,QAAOuiB,EAAgB,QAAQ,uBAAuB,IAASd,EAAY,OAAO,aAAYc,EAAgB,QAAQ,OAAOviB,EAAM,QAAQ,QAAQ,MAAM,YAAY,OAAOiN,GAAW3nB,EAAM0a,EAAM,QAAQ,WAAW,KAAK,EAAEyhB,EAAY,QAAQ,QAAWA,EAAY,OAAO,WAAYA,EAAY,SAASzhB,EAAM,QAAQ,QAAQ,SAAOuiB,EAAgB,QAAQd,EAAY,SAASzhB,EAAM,QAAQ,QAAQ,QAAUyhB,EAAY,QAAQzhB,EAAM,QAAQ,YAAY,SAAOuiB,EAAgB,OAAOviB,EAAM,QAAQ,QAAQ,MAAM,aAAa,OAAOiN,GAAW3nB,EAAM0a,EAAM,QAAQ,YAAY,KAAK,EAAEyhB,EAAY,SAAS,IAAMe,EAAc16B,EAAe25B,EAAYc,CAAe,EAAQE,EAAe36B,EAAe06B,EAAc,CAAC,QAAQF,CAAa,CAAC,EAE9wB,OAAGG,EAAe,QAAQ,SAAWA,EAAe,MAAM,MAASA,EAAe,aAAa,SAAWA,EAAe,WAAW,MAAMR,GAAeQ,EAAer5B,EAAQ8E,CAAM,EAAEszB,GAAyBiB,EAAev0B,CAAM,EACtOu0B,EAAe,aAAaP,GAA2BO,EAAe,YAAY,EAASA,CAAe,EAEpGC,GAAN,KAAwB,CAAC,YAAYx0B,EAAO,CAAC,KAAK,OAAOA,CAAO,CAM3D,kBAAkBjF,EAASC,EAAKC,EAAWC,EAAQk5B,EAAc,CAAC,EAAE,CAAC,IAAIK,EAAMx5B,GAAY,CAAC,EAAE,OAAAw5B,EAAMtB,GAAyBsB,EAAMv5B,CAAO,EAAsEi5B,GAApD,CAAC,WAAWM,EAAM,KAAAz5B,EAAK,SAAAD,EAAS,KAAK,MAAM,EAAoCG,EAAQu5B,EAAM,KAAK,OAAOL,CAAa,CAAE,CAKpR,mBAAmB54B,EAAMP,EAAWC,EAAQk5B,EAAc,CAAC,EAAE,CAAkD,OAAOD,GAAvC,CAAC,WAAAl5B,EAAW,MAAAO,EAAM,KAAK,OAAO,EAAqCN,EAAQ,OAAU,KAAK,OAAOk5B,CAAa,CAAE,CAK/L,sBAAsB14B,EAAOC,EAAOT,EAAQk5B,EAAc,CAAC,EAAE,CAA+D,OAAOD,GAAjD,CAAC,OAAAz4B,EAAO,KAAK,WAAW,QAAQ,CAAC,OAAAC,CAAM,CAAC,EAAwCT,EAAQ,OAAU,KAAK,OAAOk5B,CAAa,CAAE,CAK/M,mBAAmBv4B,EAAGC,EAAKZ,EAAQk5B,EAAc,CAAC,EAAE,CAAiD,IAAMM,EAAcP,GAAnD,CAAC,WAAWr4B,EAAK,KAAK,OAAO,EAAkDZ,EAAQ,OAAU,KAAK,OAAOk5B,CAAa,EACrM,OAAAM,EAAc,OAAO74B,GAAI64B,EAAc,OAAcA,CAAc,CAK9D,mBAAmB14B,EAAQL,EAAOT,EAAQk5B,EAAc,CAAC,EAAE,CAAC,IAAMO,EAAW,CAAC,KAAK,OAAO,EAAE,OAAG34B,IAAS24B,EAAW,QAAQ34B,GAAYL,IAAQg5B,EAAW,OAAOh5B,GAAew4B,GAAiBQ,EAAWz5B,EAAQ,OAAU,KAAK,OAAOk5B,CAAa,CAAE,CAIzP,OAAO54B,EAAM44B,EAAc,CAAC,EAAE,CAAC,IAAIQ,EAAc,CAAC,KAAAp/B,EAAK,KAAAwF,EAAK,WAAAC,EAAW,QAAAC,EAAQ,SAAAH,EAAS,OAAAW,EAAO,OAAAC,EAAO,GAAAE,EAAG,KAAAC,EAAK,QAAAE,CAAO,EAAER,EAAM,OAAOhG,EAAK,CAAC,IAAK,OAAOo/B,EAAS,KAAK,kBAAkB75B,EAASC,EAAKC,EAAWC,EAAQk5B,CAAa,EAAE,MAAM,IAAK,QAAQQ,EAAS,KAAK,mBAAmB55B,EAAKC,EAAWC,EAAQk5B,CAAa,EAAE,MAAM,IAAK,WAAWQ,EAAS,KAAK,sBAAsBl5B,EAAOC,EAAOT,EAAQk5B,CAAa,EAAE,MAAM,IAAK,QAAQQ,EAAS,KAAK,mBAAmB/4B,EAAGC,EAAKZ,EAAQk5B,CAAa,EAAE,MAAmB,QAAQQ,EAAS,KAAK,mBAAmB54B,EAAQL,EAAOT,EAAQk5B,CAAa,EAAE,KAAM,CAAC,OAAOQ,CAAS,CAAC,EAIzmBC,GAAN,KAAkB,CAMhB,YAAYC,EAAgBC,EAAmBvf,EAAaxV,EAAO,CAAC,KAAK,gBAAgB80B,EAAgB,KAAK,mBAAmBC,EAAmB,KAAK,aAAavf,EAAa,KAAK,OAAOxV,EAAO,KAAK,aAAa,IAAIw0B,GAAmB,KAAK,MAAM,CAAE,CAE5P,MAAM,CAAC,KAAK,gBAAgB,KAAK,CAAE,CAAC,QAAQ,CAAC,KAAK,gBAAgB,OAAO,CAAE,CAG3E,SAASh5B,EAAM44B,EAAc,CAAC,KAAK,mBAAmB,eAAe,EAAE,IAAMb,EAAY,KAAK,aAAa,OAAO/3B,EAAM44B,CAAa,EAAE,KAAK,gBAAgB,QAAQb,EAAY/3B,EAAM,QAAQ,CAAE,CAAC,EAEhMw5B,GAAN,KAAwB,CAEnB,YAAYhQ,EAAeiQ,EAAa1e,EAAWf,EAAaxV,EAAO,CAAC,KAAK,aAAai1B,EAAa,KAAK,eAAejQ,EAAe,KAAK,OAAOhlB,EAAO,KAAK,aAAawV,EAAa,KAAK,WAAWe,EAAW,KAAK,QAAQ,KAAK,QAAQ,KAAK,IAAI,EAAE,KAAK,8BAA8B,CAAC,EAAE,KAAK,mCAAmC,CAAC,CAAE,CAE7U,MAAM,CAAC,KAAK,uBAAuB,EACxC,KAAK,gBAAgB,CAAE,CAAC,wBAAwB,CAAC,KAAK,uBAAuB,EAAE,KAAK,+BAA+B,EACnH,KAAK,UAAU,KAAK,UAAU,CAAC,EAAE,KAAK,cAAc,KAAK,cAAc,CAAC,EAAE,KAAK,WAAW,KAAK,WAAW,CAAC,EAAE,KAAK,eAAe,KAAK,eAAe,CAAC,EAAE,GAAK,CAAC,8BAAA2e,EAA8B,mBAAAC,CAAkB,EAAErjB,EAAM,YAAY,MAAUsjB,EAAuBx8B,GAAoBs8B,CAA6B,GAAG,OAAOA,GAAgC,WAAUE,EAAoB,KAAK,mCAAmCF,CAA6B,GAAG,KAAK,eAAeE,GAAqB,KAAK,eAAeD,CAAkB,CAAC,EAAE,KAAK,aAAa,KAAK,aAAa,CAAC,EAAE,KAAK,uBAAuB,EAAE,KAAK,yBAAyB,CAAE,CAAC,0BAA0B,CAAC,IAAIlD,EAAY,GAAG,KAAK,oCAAoC,aAAa,EAAE,CAAC,IAAMoD,EAA8B,KAAK,iCAAiC,EAAQC,EAAmB,KAAK,eAAe,GAAG7kB,EAA4B,YAC33BwhB,EAAY,CAEZ,UAAUoD,EAA8B,WAAWC,EAAmB,cAAc,GAAK,QAAQD,EAA8B,QAAQ,YAAYC,EAAmB,YAAY,UAAUA,EAAmB,UAAU,GAAGA,EAAmB,GAAG,aAAaA,EAAmB,YAAY,EAC3R,CAACrD,EAAY,WAAWA,EAAY,cAAc,GAAMA,EAAYxhB,EAA4B,YAAqB4kB,EAA8B,QAAQ,UAAU,KAAMpD,EAAY,OAAO,CAAC,QAAQ,GAAK,SAASoD,EAA8B,OAAO,SAAS,UAAUC,EAAmB,QAAQ,SAAS,EAAG,MAAOrD,EAAYxhB,EAA4B,YAAaqB,EAAM,QAAQ,YAAY,MAAMmgB,EAChZngB,EAAM,QAAQ,YAAY,MAAM,WAAW,KAAK,yBAAyBA,EAAM,QAAQ,YAAY,KAAK,CAAG,CAAC,wBAAwB,CAAC,IAAMyjB,EAAyB,KAAK,mBAAmB,EAAQC,EAAgC,KAAK,0BAA0B,EAAE,GAAGD,GAA0BC,EAAiC,KAAK,mBAAmBD,CAAwB,EAAE,KAAK,0BAA0BC,CAA+B,MAAQ,CAAC,IAAMC,EAAgBF,GAA0B9H,GAAY,EAAE,KAAK,mBAAmBgI,CAAe,EAAE,KAAK,0BAA0BjO,GAAmBiO,CAAe,CAAC,CAAE,CAAC,CAAC,oCAAoCC,EAAU,CAAC,OAAOhD,GAAiC5gB,EAAM,QAAQ,QAAQ,MAAM4jB,CAAS,GAAG,IAAI,CAAE,CAAC,gCAAgC,CAAC,IAAM7C,EAAQ/gB,EAAM,QAAQ,QAAQ,MAAY6jB,EAAyB,CAAChX,EAAeC,EAAcC,CAAe,EAAE,OAAO,KAAKgU,CAAO,EAAE,QAAQvlB,GAAO,CAAC,IAAMzW,EAAIyW,EAAYsoB,EAAe/C,EAAQh8B,CAAG,GAAG,KAAWg/B,EAAS,KAAK,cAAc,SAAS1V,GAA8ByV,CAAc,CAAC,EAAKC,GAAUF,EAAyB,QAAQ/S,GAAS,CAAC,IAAMS,EAAM,KAAK,cAAc,SAASlD,GAA8ByC,CAAO,CAAC,EAAE,GAAGS,GAAOT,IAAUgT,EAAe,CAAC,IAAMv/B,EAAMgtB,EAAM,IAAIzD,GAAY/oB,CAAG,CAAC,EAAKgC,GAAkCxC,CAAK,GAAGw/B,EAAS,IAAIjW,GAAY/oB,CAAG,EAAER,CAAK,EAAGgtB,EAAM,OAAOzD,GAAY/oB,CAAG,CAAC,CAAE,CAAC,CAAC,CAAG,CAAC,CAAE,CAAC,uBAAuBi/B,EAAO5R,EAAK,CAAC,GAAG,CAACpS,EAAM,QAAQ,QAAQ,MAAO,OAAQ,IAAIikB,EAAgBD,GAAQ,CAAC,EAAKC,EAAgB,SAAS,GAA8B,CAACjW,GAAyBC,GAAqBE,EAAyB,EAAuB,QAAQ+V,GAAW,CAAC,IAAM3S,EAAM,KAAK,cAAc,SAAS2S,CAAS,EAAK3S,GAAO0S,EAAgB,KAAK1S,CAAK,CAAG,CAAC,GAAqBa,GAAM,OAAO,KAAKtE,EAAW,GAAgB,QAAQyG,GAAY,CAAC,IAAM4P,EAAarW,GAAYyG,CAAU,EAAE0P,EAAgB,QAAQ1S,GAAO,CAAC,IAAM6S,EAAY,KAAK,gBAAgB,aAAa,kBAAkBD,EAAa5S,EAAM,OAAO,KAAK,aAAa,KAAK,MAAM,EAGhiE5qB,EAAkBy9B,CAAW,GAAG7S,EAAM,IAAI4S,EAAaC,CAAW,CAAG,CAAC,CAAE,CAAC,CAAE,CAAC,kCAAkC,CAAC,IAAI1e,EAAU1F,EAAM,YAAY,MAAM,SAAS,YAAY,GAC9K,GAAG,CAAC0F,EAAW,MAAO,CAAC,UAAAA,CAAS,EAAG,IAAIvY,EAAck3B,EAAyBrkB,EAAM,YAAY,MAAM,UAAU,QAAYggB,GAAkBqE,CAAwB,EAAoKl3B,EAAQk3B,GAAzK,KAAK,OAAO,KAAK1pB,GAA2BlQ,GAAqB45B,EAAyB7zB,EAA0B,CAAC,EAAErD,EAAQqD,IAAuErD,IAAU,IAAG,KAAK,OAAO,KAAK6N,GAAqBvQ,EAAoB,CAAC,EAAEib,EAAU,IAEhcvY,EAAQ,GAAGA,EAAQsD,IAAwB,KAAK,OAAO,KAAKwK,GAAgCxQ,GAAqB0C,EAAQsD,EAAsB,CAAC,EAAG,IAAM2vB,EAAO,KAAK,cAAcjzB,CAAO,EAAE,MAAO,CAAC,QAAAA,EAAQ,UAAAuY,EAAU,OAAA0a,CAAM,CAAE,CAAC,cAAckE,EAAe,CAAC,IAAMlE,EAAOpgB,EAAM,YAAY,MAAM,SAAS,OAAWlF,EAAmBypB,EAAc,GAAM,OAAGnE,EAAO,UAAU,KAAMtlB,EAAeslB,EAAO,SAASmE,EAAc,GAASvE,GAAkBllB,CAAc,EACpZA,EAAewpB,IAAgB,KAAK,OAAO,KAAKvpB,GAA2CtQ,GAAqBqQ,EAAewpB,CAAc,CAAC,EAAEC,EAAc,KADyP,KAAK,OAAO,KAAK1pB,GAAoCpQ,GAAqBqQ,EAAevK,EAAmC,CAAC,EAChlBuK,EAAevK,KAA0N,CAAC,QAAQg0B,EAAc,SAASzpB,CAAc,CAAE,CAGpR,QAAQ1L,EAAMyY,EAAchE,EAAa,CAAC,KAAK,aAAa,QAAQ,CAAC,MAAAzU,EAAM,QAAQ3E,GAAqB,cAAAod,EAAc,aAAAhE,CAAY,CAAC,CAAE,CAKrI,uBAAuB2gB,EAAYjT,EAAM,CAAC,IAAMkT,EAAoB,CAAC,EAAE,OAAAD,EAAY,QAAQE,GAAO,CAAC,IAAMC,EAAepT,GAAO,QAAQnjB,EAAyBs2B,EAAM,MAAM,GAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAK59B,GAAoB69B,CAAc,GAAGF,EAAoB,KAAK,CAAC,KAAKC,EAAM,KAAK,MAAMC,CAAc,CAAC,CAAG,CAAC,EAASF,CAAoB,CAI3U,uBAAuBA,EAAoBp7B,EAAS,CAAC,KAAK,YAAY,aAAa,CAAC,IAAI2W,EAAM,cAAc,eAAe,MAAM,QAAQ,CAAC,OAAO,OAAO,KAAK5R,EAAyB,CAAC,QAAQ,aAAa,YAAY4R,EAAM,OAAO,OAAO,YAAY,KAAK,CAAC,QAAQ,CAAC,OAAOA,EAAM,QAAQ,OAAO,OAAO,OAAO,KAAKA,EAAM,QAAQ,OAAO,OAAO,KAAK,OAAOA,EAAM,QAAQ,OAAO,OAAO,OAAO,SAASA,EAAM,QAAQ,OAAO,OAAO,SAAS,OAAOA,EAAM,QAAQ,OAAO,OAAO,OAAO,QAAQA,EAAM,QAAQ,OAAO,OAAO,OAAO,EAAE,QAAQykB,CAAmB,CAAC,CAAC,EAAE,YAAY,GAAK,gBAAgB,EAAI,EAAE,cAAc,GAAK,SAAAp7B,CAAQ,CAAC,CAAE,CAK1mB,qBAAqBu7B,EAAoBC,EAAGtT,EAAM,CACvD,IAAMuT,EAAY,OAAO,KAAKF,CAAmB,EAAQG,EAAgC,IAAYD,EAAY,IAAIhR,IAAoB,CAAC,KAAK8Q,EAAoB9Q,CAAU,EAAE,KAAK,MAAM9T,EAAM,QAAQ8T,CAAU,EAAE,KAAK,EAAG,EACtNkR,EAAqB,CAAC,EAAEF,EAAY,QAAQhR,GAAY,CAACkR,EAAqBJ,EAAoB9Q,CAAU,EAAE,IAAI,EAAEvC,GAAO,IAAIqT,EAAoB9Q,CAAU,EAAE,IAAI,CAAE,CAAC,EAAE,IAAMmR,EAAqB,IAAI,CAACH,EAAY,QAAQhR,GAAY,CAAC,KAAK,mCAAmCA,CAAU,EAAE,EAAM,CAAC,CAAE,EAAQoR,EAAqB,IAAI,CAACH,EAAgC,EAAE,QAAQI,GAAM,CAAIN,GAAIA,EAAGM,EAAK,KAAKA,EAAK,KAAK,CAAG,CAAC,CAAE,EAAE,GAAG,CAAC,IAAMC,EAAqB,CAAC,EAAEN,EAAY,QAAQhR,GAAY,CAACsR,EAAqBR,EAAoB9Q,CAAU,EAAE,IAAI,EAAE9T,EAAM,QAAQ8T,CAAU,EAAE,KAAM,CAAC,EACpkB,IAAM2Q,EAAoB,KAAK,uBAAuBM,EAAgC,EAAExT,CAAK,EAAKkT,EAAoB,OAAO,EAC7H,KAAK,uBAAuBA,EAAoB,CAAC7P,EAAIjQ,IAAU,CAC/DsgB,EAAqB,EAAKtgB,GAAS,KAAK,SAAS,IAAKogB,EAAgC,EAAE,QAAQL,GAAO,CAAC,IAAMW,EAAkBL,EAAqBN,EAAM,IAAI,EAAQY,EAAiB/T,GAAO,IAAImT,EAAM,IAAI,EAC1Mt2B,EAAyBg3B,EAAqBV,EAAM,IAAI,EAAE,GAAM,CAAC,CAAC,IAAIt2B,EAAyBk3B,EAAiB,GAAM,CAAC,CAAC,IAGxH7+B,EAAO4+B,CAAiB,GAAG5+B,EAAO6+B,CAAgB,GAAG,KAAK,OAAO,MAAMjsB,GAAwCqrB,EAAM,IAAI,CAAC,EAAMG,GAAIA,EAAGH,EAAM,KAAKA,EAAM,KAAK,EAAI,CAAC,GAAS,KAAK,OAAO,MAAMtrB,GAA+BuL,GAAS,KAAK,MAAM,CAAC,EAAEugB,EAAqB,EAAG,CAAC,GAASA,EAAqB,EAC7SD,EAAqB,EAAG,OAAOrwB,EAAE,CAAC,KAAK,QAAQA,EAAE0E,GAA+CA,EAA8C,EAAE4rB,EAAqB,EACrKD,EAAqB,CAAE,CAAC,CAGnB,mBAAmBnR,EAAW,CAAC,IAAMiN,EAAQ/gB,EAAM,QAAQ,QAAQ,MAAYtS,EAAYqzB,EAAQjN,CAAU,GAAG,KAAK,GAAG8M,GAAiClzB,CAAW,EAAE,CAAC,IAAMq2B,EAAS,KAAK,aAAa,SAAS1V,GAA8B3gB,CAAW,CAAC,EAAQ63B,EAAWxE,EAAQjN,CAAU,GAAG,IAAU0R,EAAYxlB,EAAM,QAAQ8T,CAAU,EAAE,MAAS0R,IAAch/B,EAASg/B,CAAW,GAAGv9B,GAAiBu9B,CAAW,GAE/ZxlB,EAAM,cAAc,2BAA2B,OAAOtS,IAAcmf,GACvE,KAAK,mCAAmCiH,CAAU,EAAE,GAAQ,KAAK,8BAA8BA,CAAU,GAAG,WAAW,aAAa,KAAK,8BAA8BA,CAAU,CAAC,EAAG,KAAK,8BAA8BA,CAAU,EAAE,WAAW,WAAW,IAAI,CAC9P,IAAM8Q,EAAoB,CAAC,CAAC9Q,CAAU,EAAE,CAAC,KAAKyR,CAAU,CAAC,EAAE,KAAK,qBAAqBX,EAAoB,CAACW,EAAWC,IAAc,CAACzB,GAAU,IAAIwB,EAAWC,CAAW,CAAE,EAAEzB,CAAQ,CAAE,EAAEllB,EAAiC,GAASklB,GAAU,IAAIwB,EAAWC,CAAW,EAAUzB,GAAU,OAAOwB,CAAU,CAAG,CAAC,CAE1S,iBAAiB,CACtBnX,GAAkB,QAAQ0F,GAAY,CAAC7e,EAAE,IAAI,CAAC,KAAK,mBAAmB6e,CAAU,CAAE,CAAC,CAAE,CAAC,CAAE,CAOnF,eAAe2R,EAAYC,EAAqB,CAAC,IAAIC,EAAiBF,GAAe,CAACj/B,EAASi/B,CAAW,GAAG,CAACE,KAAkBA,EAAiB,QAAc,KAAK,oCAAoC,aAAa,GAAM,CAACA,GAAkBD,IAA8IC,EAA9F,KAAK,gBAAgB,aAAa,sCAAsCD,CAAoB,GAAwCC,EAAiBA,GAAkB9E,GAAoB,GAAS8E,EAAiBhnB,EAA4B,YAAaqB,EAAM,QAAQ,YAAY,MAAM2lB,CAAiB,CAI7kB,eAAev8B,EAAQ,CAAC,IAAM0nB,EAAQ9Q,EAAM,QAAQ,QAAQ,MAAM,aAAa,KAAK,GAAG4gB,GAAiC9P,CAAO,EAAE,CAAC,IAAI8U,EAAqB5lB,EAAM,QAAQ,YAAY,OACvL,CAAC4lB,GAAsBA,IAAuBjnB,EAA4B,eAAainB,EAAqB,KAAK,cAAc,aAAa,GAAM,CAACA,GAAsBx8B,IACzDw8B,EAArF,KAAK,gBAAgB,aAAa,yBAAyBpT,EAAiBppB,CAAO,GAAgD4W,EAAM,QAAQ,YAAY,MAAM4lB,GAAsB/E,GAAoB,CAAE,CAAC,OAAO7gB,EAAM,QAAQ,YAAY,KAAM,CAAC,cAAc8T,EAAW,CAAC,IAAMiN,EAAQ/gB,EAAM,QAAQ,QAAQ,MAAYtS,EAAYqzB,EAAQjN,CAAU,GAAG,KAAK,GAAG8M,GAAiClzB,CAAW,EAAE,CAAC,IAAM6jB,EAAM,KAAK,cAAc,SAASlD,GAA8B3gB,CAAW,CAAC,EAG1gB,KAAK,uBAAuB,CAAC6jB,CAAK,EAAE,CAACuC,CAAU,CAAC,EAAE,IAAMS,EAAWwM,EAAQjN,CAAU,GAAG,IAAI,OAAOvC,GAAO,IAAIgD,CAAU,GAAG,IAAK,CAAC,OAAO,IAAK,CAAC,mCAAmCxvB,EAAI,CAAC,IAAM2vB,EAAclC,EAAiB3F,CAAc,EAAE,OAAG6H,GAAe,UAAkBA,EAAc,QAAQ3vB,CAAG,GAAG,KAAa,IAAK,CAKxT,oBAAoB+uB,EAAW,CACpC,OAAG,KAAK,mCAAmCA,CAAU,EAAU9T,EAAM,QAAQ8T,CAAU,EAAE,MAClF,KAAK,cAAcA,CAAU,CAAE,CAGjC,WAAW,CAAC,OAAO,KAAK,oBAAoB,QAAQ,CAAE,CAGtD,eAAe,CAAC,OAAO,KAAK,oBAAoB,YAAY,CAAE,CAG9D,YAAY,CAAC,OAAO,KAAK,oBAAoB,SAAS,CAAE,CAGxD,gBAAgB,CAAC,OAAO,KAAK,oBAAoB,aAAa,CAAE,CAGhE,oBAAoB,CAAC,OAAO,KAAK,oBAAoB,iBAAiB,CAAE,CAGxE,2BAA2B,CAAC,OAAO,KAAK,oBAAoB,wBAAwB,CAAE,CAGtF,gBAAgB,CAAC,OAAO,KAAK,oBAAoB,aAAa,CAAE,CAGhE,cAAc,CAAC,OAAO,KAAK,oBAAoB,WAAW,CAAE,CAG5D,cAAc,CAAC,IAAMqM,EAAY,KAAK,eAAe,GAAGxhB,EAA4B,YAAY,OAAGwhB,EAAY,WAAW,CAACG,GAAkBH,CAAW,GAAGA,EAAY,YAAoBA,EAAY,IAAI,KAAa,IAAK,CAG7N,gBAAgB,CAAC,IAAIA,EAAY,KAAK,eAAe,GAAGxhB,EAA4B,aAAewhB,EAAY,WAAWA,EAAY,eAAgBA,EAAY,YAAW,KAAK,yBAAyBA,CAAW,EAAEA,EAAYngB,EAAM,QAAQ,YAAY,OAOhQmgB,EAAY,eAAe,OAAWA,EAAY,CAAC,GAAGA,EAAY,aAAa,EAAI,EAAWA,EAAY,eAAcA,EAAY,CAAC,GAAGA,EAAY,aAAa,EAAK,IACzKngB,EAAM,QAAQ,YAAY,MAAMmgB,EAAengB,EAAM,UAAU,OAAO,QAAQ,iBAE9E,KAAK,mBAAmB,aAAa,CAAG,CAAC,yBAAyB,CAAC,IAAMwF,EAAQxF,EAAM,QAAa,CAAC,YAAA6lB,EAAY,UAAAngB,EAAU,QAAAvY,EAAQ,OAAAizB,CAAM,EAAE5a,EAAQ,YAAY,MAAM,GAAGE,EAAU,CAAC,IAAMya,EAAY,CAAC,GAAGxhB,EAA4B,YAAY,QAAAxR,CAAO,EAAKizB,IAAQD,EAAY,OAAO,CAAC,QAAQC,EAAO,QAAQ,SAASA,EAAO,QAAQ,GAAG5a,EAAQ,YAAY,MAAM2a,EAAY,KAAK,yBAAyB3a,EAAQ,YAAY,KAAK,CAAE,MAASqgB,GAAa,KAAK,4BAA4B,CAAG,CAI/d,MAAMz8B,EAAQ,CAAC,GAAK,CAAC,QAAAoc,CAAO,EAAExF,EAAY0P,EAAKoR,GAAqB13B,CAAO,EAAErF,EAAE,IAAI,CAAC,OAAO,KAAK4a,CAA2B,EAAE,QAAQ5Z,GAAK,CAAC,IAAM+gC,EAAe/gC,EAAI,GAAG2qB,EAAK,QAAQoW,CAAc,IAAI,GAAc,OAAO/gC,EAAI,CAAC,IAAK,cAAc,KAAK,eAAe,EAAE,MAAM,IAAK,cAAc,KAAK,wBAAwB,EAAE,MAAM,QAAQygB,EAAQsgB,CAAc,EAAE,MAAMnnB,EAA4BmnB,CAAc,EAAE,KAAM,CAAC,CAAC,CAAE,CAAC,CAAE,CAGta,UAAUl8B,EAAO,CAACoW,EAAM,QAAQ,OAAO,MAAM,KAAK,oCAAoC,QAAQ,GAAGpW,EAAOA,EAAO+U,EAA4B,MAAO,CAGlJ,cAAc9U,EAAO,CAACmW,EAAM,QAAQ,WAAW,MAAM,KAAK,oCAAoC,YAAY,GAAGxY,EAA0BqC,CAAM,EAAE/B,EAAekY,EAAM,QAAQ,WAAW,OAAOrB,EAA4B,WAAW9U,CAAM,EAAE8U,EAA4B,UAAW,CAGpR,WAAWzU,EAAQ,CAAC8V,EAAM,QAAQ,QAAQ,MAAM,KAAK,oCAAoC,SAAS,GAAG9V,EAAQA,EAAQyU,EAA4B,OAAQ,CAGzJ,eAAe9U,EAAO,CAACmW,EAAM,QAAQ,YAAY,MAAM,KAAK,oCAAoC,aAAa,GAAGxY,EAA0BqC,CAAM,EAAE/B,EAAekY,EAAM,QAAQ,YAAY,OAAOrB,EAA4B,YAAY9U,CAAM,EAAE8U,EAA4B,WAAY,CAG1R,mBAAmBgX,EAAS,CAAC3V,EAAM,QAAQ,gBAAgB,MAAM,KAAK,oCAAoC,iBAAiB,GAAG2V,EAASA,EAAShX,EAA4B,eAAgB,CAG5L,0BAA0BonB,EAAgB,CAAC/lB,EAAM,QAAQ,uBAAuB,MAAM,KAAK,oCAAoC,wBAAwB,GAAG+lB,EAAgBA,EAAgBpnB,EAA4B,sBAAuB,CAE7O,yBAAyBwhB,EAAY,CAAC,IAAI6F,EAAiB7F,EAAY,GAAGG,GAAkBH,CAAW,EAAG6F,EAAiBtF,GAA4BP,CAAW,MAAQ,CAAC,IAAME,EAAU,KAAK,IAAI,EAAQlzB,EAAQgzB,EAAY,QACrO6F,EAAiB,UAAU3F,EAAUlzB,CAAQ,CAE7C,GADG+yB,GAAqB8F,CAAgB,IAAGA,EAAiB,OAAO,UAAU,QAC1EA,EAAiB,OAAO,CAAC,IAAMC,EAAgBxF,GAA6BuF,EAAiB,MAAM,EAAEA,EAAiB,OAAO,UAAUC,CAAgB,CAC1JjmB,EAAM,QAAQ,YAAY,MAAMgmB,CAAiB,CAI5C,MAAMl5B,EAAG,CAACkT,EAAM,QAAQ,YAAY,MAAM2gB,GAA8B7zB,EAAG,KAAK,MAAM,CAAE,CAExF,6BAA6B,CAAC,KAAK,MAAM,KAAK,IAAI,CAAC,CAAE,CAErD,KAAK,CAACkT,EAAM,QAAQ,YAAY,MAAMrB,EAA4B,WAAY,CAG9E,aAAaunB,EAAM,CAAClmB,EAAM,QAAQ,UAAU,MAAM,KAAK,oCAAoC,WAAW,GAAGkmB,EAAMA,EAAMvnB,EAA4B,SAAU,CAAC,EAIxJwnB,GAAmB,CAAC,cAAc,uBAAuB,yBAAyB,2BAA2B,sBAAsB,eAAe,wBAAwB,sBAAsB,yBAAyB,yBAAyB,oBAAoB,0BAA0B,kBAAkB,UAAU,EAC/TC,GAA2BD,GAE3BE,GAAqB,CAACC,EAAqBrS,IAAc,CAC/D,IAAMsS,EAAmBjhC,EAAM2uB,CAAW,EAAE,OAAIztB,EAAS+/B,EAAmB,eAAe,IAAGA,EAAmB,gBAAgB,QAAsC,CAAC,SAAS,MAAM,MAAM,EAA2B,SAASA,EAAmB,cAAc,IAAGA,EAAmB,eAAe,QAAWA,EAAmB,aAAal+B,EAA0Bk+B,EAAmB,aAAaD,EAAqB,YAAY,EAAEC,EAAmB,sBAAsBl+B,EAA0Bk+B,EAAmB,sBAAsBD,EAAqB,qBAAqB,EAAwB,CAAC,OAAO,UAAU,MAAM,EAAsB,SAASC,EAAmB,cAAc,IAAGA,EAAmB,eAAe,QAAWA,EAAmB,aAAan+B,EAAyBm+B,EAAmB,YAAY,EAAM,MAAM,QAAQA,EAAmB,OAAO,IAAGA,EAAmB,QAAQH,IAA4BG,EAAmB,oCAAoCl+B,EAA0Bk+B,EAAmB,oCAAoCD,EAAqB,mCAAmC,EAAEC,EAAmB,gCAAgCl+B,EAA0Bk+B,EAAmB,gCAAgCD,EAAqB,+BAA+B,EAAEC,EAAmB,gBAAgBl+B,EAA0Bk+B,EAAmB,gBAAgBD,EAAqB,eAAe,EAAEC,EAAmB,qBAAqBl+B,EAA0Bk+B,EAAmB,qBAAqBD,EAAqB,oBAAoB,EAAM9/B,EAAS+/B,EAAmB,mBAAmB,IAAGA,EAAmB,oBAAoB,QAAWA,EAAmB,uBAAuBn+B,EAAyBm+B,EAAmB,sBAAsB,EAAEA,EAAmB,gBAAgBl+B,EAA0Bk+B,EAAmB,gBAAgBD,EAAqB,eAAe,EAAMr+B,GAAiBs+B,EAAmB,OAAO,GAA+CA,EAAmB,QAAQ,QAAQl+B,EAA0Bk+B,EAAmB,QAAQ,QAAQD,EAAqB,SAAS,OAAO,EAAEC,EAAmB,QAAQ,OAAOn+B,EAAyBm+B,EAAmB,QAAQ,MAAM,EAAEA,EAAmB,QAAQ,WAAWn+B,EAAyBm+B,EAAmB,QAAQ,UAAU,EAAEA,EAAmB,QAAQp+B,GAA6Bo+B,EAAmB,OAAO,GAAzcA,EAAmB,QAAQ,OAAibA,EAAmB,yBAAyBn+B,EAAyBm+B,EAAmB,wBAAwB,EAAEA,EAAmB,aAAan+B,EAAyBm+B,EAAmB,YAAY,EAAEA,EAAmB,wBAAwBl+B,EAA0Bk+B,EAAmB,wBAAwBD,EAAqB,uBAAuB,EAAEC,EAAmB,mBAAmBl+B,EAA0Bk+B,EAAmB,mBAAmBD,EAAqB,kBAAkB,EAAMzG,GAAS0G,EAAmB,4BAA4B,IAAGA,EAAmB,6BAA6B,QAAWA,EAAmB,mBAAmBn+B,EAAyBm+B,EAAmB,kBAAkB,EAAEA,EAAmB,WAAWn+B,EAAyBm+B,EAAmB,UAAU,EAAEA,EAAmB,4BAA4Bn+B,EAAyBm+B,EAAmB,2BAA2B,EAA0Bz+B,EAAew+B,EAAqBn+B,GAA6Bo+B,CAAkB,CAAC,CAA2B,EAE17GC,GAAkC,uBAA6BC,GAAoC,0BAAgCC,GAAqB,iBAOrJC,GAAgC,CAACC,EAAgBC,IAAyB,OAAO,KAAKD,CAAe,EAAE,OAAOE,GAAUF,EAAgBE,CAAQ,IAAI,IAAM,CAACD,EAAuBC,CAAQ,CAAC,EAAE,OAAO,CAACrjC,EAAIsB,IAAM,CAAC,IAAM4D,EAAOrD,EAAM7B,CAAG,EAAE,OAAAkF,EAAO5D,CAAG,EAAE6hC,EAAgB7hC,CAAG,EAAS4D,CAAO,EAAE,CAAC,CAAC,EAK3Ro+B,GAAc,CAACr9B,EAAMsW,IAAQ,CAAC,IAAMgnB,EAAW1hC,EAAMoE,CAAK,EAE7Dm9B,EAAuB7mB,EAAM,mBAAmB,mBAAmB,MAAYinB,EAAmBN,GAAgCj9B,EAAM,aAAam9B,CAAsB,EAAE,OAAAG,EAAW,aAAal/B,EAAe++B,EAAuBI,CAAkB,EAASD,CAAW,EAAQE,GAAgClnB,GAAOA,EAAM,SAAS,WAAW,MAAM,SAASA,EAAM,SAAS,WAAW,MAAM,QAAQ,WAAW,SAE5ZmnB,GAAqB,CAAC99B,EAASiI,EAAK81B,EAAQl5B,IAAS,CAAC,GAAIrH,EAAUwC,CAAQ,EAAW,GAAG9C,EAAW8C,CAAQ,EAAG,GAAG,CAACA,EAAS,GAAGiI,CAAI,CAAE,OAAOlC,EAAM,CAAClB,EAAO,MAAMyN,GAAsByrB,CAAO,EAAEh4B,CAAK,CAAE,MAAQlB,EAAO,MAAMwK,GAA0B0uB,CAAO,CAAC,CAAG,EAI9PC,GAAN,KAAqB,CAMnB,YAAYnU,EAAeiQ,EAAa1e,EAAWf,EAAaxV,EAAO,CAAC,KAAK,eAAeglB,EAAe,KAAK,aAAaxP,EAAa,KAAK,WAAWe,EAAW,KAAK,OAAOvW,EAAO,KAAK,aAAai1B,CAAa,CAEvN,MAAM,CAAC,KAAK,qBAAqB,KAAK,eAAe,aAAa,GAAGqD,EAAiC,QAAQxmB,EAAM,KAAK,WAAW,KAAK,aAAa,KAAK,aAAa,KAAK,MAAM,EAAE,KAAK,eAAe,KAAK,eAAe,aAAa,GAAG0mB,EAAoB,QAAQ1mB,EAAM,KAAK,eAAe,KAAK,WAAW,KAAK,aAAa,KAAK,aAAa,KAAK,MAAM,EAAE,KAAK,wBAAwB,KAAK,eAAe,aAAa,GAAGymB,EAAmC,QAAQzmB,EAAM,KAAK,eAAe,KAAK,aAAa,KAAK,eAAe,KAAK,aAAa,KAAK,MAAM,EACljB/K,EAAE,IAAI,CAAI+K,EAAM,mBAAmB,wBAAwB,QAAQ,KAAM,KAAK,yBAAyB,MAAM,EAAE,KAAK,gBAAgB,MAAM,EAAG,CAAC,EAAE,IAAMsnB,EAA0BJ,GAAgClnB,CAAK,EAIjN3O,EAAU4D,EAAE,IAAI,CAAC,IAAMsyB,EAAqBvnB,EAAM,YAAY,MAAM,kCAAkC,IAAMA,EAAM,mBAAmB,wBAAwB,QAAQ,IAA4BA,EAAM,mBAAmB,mBAAmB,MAAM,KAAKwnB,GAAMhe,GAAwBge,CAAI,CAAC,IAAwB,IAAOD,IAAuB,KAAQ,CAACD,GAA2B,KAAK,sBAAsB,wBAAwB,KAAM,WAAW,aAAaj2B,CAAS,EAAE,KAAK,sBAAsB,MAAM,EAAG,CAAC,EACvf2O,EAAM,YAAY,MAAM,kCAAkC,KAAM3O,EAAU,WAAW,WAAW,IAAI,CAAI,KAAK,sBAAsB,wBAAwB,IAAM,KAAK,sBAAsB,MAAM,CAAG,EAAE2O,EAAM,YAAY,MAAM,4BAA4B,EAAG,CAAC,QAAQ,CAAI,KAAK,sBAAsB,wBAAwB,KAASA,EAAM,SAAS,YAAY,MAAM,0BAAyB,KAAK,sBAAsB,MAAM,EAAE,KAAK,yBAAyB,MAAM,GAAG,KAAK,sBAAsB,MAAM,EAAG,CAI7e,QAAQtW,EAAML,EAAS,CAAC,IAAMo+B,EAASV,GAAcr9B,EAAMsW,CAAK,EAAE,KAAK,eAAe,aAAa,GAAGwmB,EAAiC,WAAWxmB,EAAM,KAAK,qBAAqBynB,EAAS,KAAK,aAAa,KAAK,MAAM,EAAE,IAAMC,EAAQpiC,EAAMoE,CAAK,EAAE,KAAK,eAAe,aAAa,GAAG+8B,EAAmC,WAAWzmB,EAAM,KAAK,wBAAwB0nB,EAAQ,KAAK,aAAa,KAAK,MAAM,EACpZ,IAAMN,EAAQ,GAAG19B,EAAM,KAAK,OAAO,CAAC,EAAE,YAAY,CAAC,GAAGA,EAAM,KAAK,MAAM,CAAC,CAAC,GAAGU,EAAU,GAAG+8B,GAAqB99B,EAAS,CAACo+B,CAAQ,EAAEL,EAAQ,KAAK,MAAM,CAAE,CAAC,EAElJO,GAAiBj+B,GAAO,CAAC,IAAMk+B,EAAY,IAAI,YAAYl+B,EAAM,CAAC,OAAO,CAAC,kBAAkB,WAAW,eAAe,EAAE,QAAQ,GAAK,WAAW,GAAK,SAAS,EAAI,CAAC,EAAE,WAAW,SAAS,cAAck+B,CAAW,CAAE,EAAQC,GAAgBtvB,GAAU/R,EAAS+R,CAAQ,GAAGA,EAAS,KAAK,EAAE,OAAO,EAAQuvB,GAAoBrvB,GAAc0d,GAAW1d,CAAY,EAI/VsvB,GAAN,KAAe,CAEb,aAAa,CAAC,KAAK,cAAc,IAAIxyB,GAAc,KAAK,YAAY,GAAM,KAAK,aAAagT,GAAoB,KAAK,OAAO9R,GAAc,KAAK,mBAAmB,IAAIipB,GAAmB1f,EAAM,cAAc,KAAK,MAAM,EAAE,KAAK,kBAAkB,IAAI5L,GAAkB,KAAK,MAAM,EAAE,KAAK,WAAW4P,GAAkB,KAAK,WAAW,KAAK,KAAK,YAAY,EAAE,KAAK,oBAAoB,IAAIia,GAAoB,KAAK,WAAW,KAAK,aAAa,KAAK,MAAM,CAAE,CAE9b,KAAK1lB,EAASE,EAAawb,EAAY,CAAC,EAAE,CAAC,GAAGjU,EAAM,UAAU,OAAO,MAAO,OAAQ,GAAG,CAAC6nB,GAAgBtvB,CAAQ,EAAE,CAAC,KAAK,OAAO,MAAMD,GAA2BrN,GAAesN,CAAQ,CAAC,EAAE,MAAO,CAAC,GAAG,CAACuvB,GAAoBrvB,CAAY,EAAE,CAAC,KAAK,OAAO,MAAMD,GAAgCvN,GAAewN,CAAY,CAAC,EAAE,MAAO,CAAC,GAAK,CAAC,QAAQ6pB,EAAc,GAAG0F,CAAyB,EAAE/T,EAAkBgU,EAAqBv5B,EAAkBs5B,CAAyB,EAAK1F,IAAgB,QAAW,KAAK,mBAAmB,IAAIA,CAAa,EAC3hBv+B,EAAE,IAAI,CAACic,EAAM,UAAU,SAAS,MAAM1a,EAAMiT,CAAQ,EAAEyH,EAAM,UAAU,aAAa,MAAM1a,EAAMmT,CAAY,EAAEuH,EAAM,YAAY,MAAMqmB,GAAqBrmB,EAAM,YAAY,MAAMioB,CAAoB,EAAEjoB,EAAM,UAAU,OAAO,MAAM,SAAU,CAAC,EAChP,KAAK,OAAO,eAAeA,EAAM,YAAY,MAAM,UAAUrK,EAAmB,EAChF7E,GAAiB,QAAQkP,EAAMzH,CAAQ,EAEvC,KAAK,eAAe,CAAE,CAAC,iBAAiBlL,EAAQ,CAAC,GAAG,CAAC2S,EAAM,UAAU,OAAO,MAAM,CAACA,EAAM,YAAY,mBAAmB,MAAM,CAAC,GAAGA,EAAM,YAAY,mBAAmB,MAAM,CAAC,mBAAmB3S,CAAO,CAAC,EAAE,MAAO,CAAC,KAAK,mBAAmB,IAAIA,CAAO,CAAE,CAAC,kBAAkB,CAAC,OAAO,KAAK,mBAAmB,IAAI,CAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC2S,EAAM,UAAU,OAAO,MAAM,CAACA,EAAM,YAAY,mBAAmB,MAAM,CAAC,GAAGA,EAAM,YAAY,mBAAmB,MAAM,CAAC,oBAAoB,CAAC,EAAE,MAAO,CAAC,KAAK,mBAAmB,MAAM,CAAE,CAG9f,gBAAgB,CAAC/K,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO+K,EAAM,UAAU,OAAO,MAAM,CAAC,IAAK,UAAU,KAAK,UAAU,EAAE,MAAM,IAAK,2BAA2B,KAAK,2BAA2B,EAAE,MAAM,IAAK,aAAa,KAAK,aAAa,EAAE,MAAM,IAAK,iBAAiB,MAAM,IAAK,eAAe,KAAK,eAAe,EAAE,MAAM,IAAK,cAAc,KAAK,cAAc,EAAE,MAAM,IAAK,SAAS,KAAK,SAAS,EAAE,MAAM,IAAK,sBAAsB,MAAM,IAAK,oBAAoB,KAAK,oBAAoB,EAAE,MAAM,IAAK,QAAQ,KAAK,QAAQ,EAAE,MAA2B,QAAQ,KAAM,CAAC,OAAO3R,EAAI,CAAC,IAAMW,EAAM,yBAAyB,KAAK,aAAa,QAAQ,CAAC,MAAMX,EAAI,QAAQpD,GAAe,cAAc+D,EAAM,aAAaA,CAAK,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC,4BAA4B,CACttB2D,GAA4B,IAAI,EAAE,KAAK,wBAAwB,EAAE,KAAK,WAAW,CAAE,CAAC,UAAU,CAAC,KAAK,sBAAsB,EACvHqN,EAAM,SAAS,WAAW,MAAM,UAAU,GAAMA,EAAM,UAAU,OAAO,MAAM,QAAe,KAAK,iBAAiB,CAAG,CAEnH,WAAW,CAAC,KAAK,oBAAoB,KAAK,CAAE,CAE5C,2BAA2BkoB,EAAe,CAAI,MAAM,QAAQA,CAAc,GAAGA,EAAe,QAAQz1B,GAAe,KAAK,cAAc,QAAQnN,EAAMmN,CAAa,CAAC,CAAC,CAAG,CAEtK,4BAA4B,CAAC,KAAM,KAAK,cAAc,KAAK,EAAE,GAAE,CAAC,IAAM01B,EAAe,KAAK,cAAc,QAAQ,EAAKA,GAAgBt1B,GAA4B,CAAC,GAAGs1B,CAAc,EAAE,IAAI,CAAG,CAAC,CAAC,yBAAyB,CAAC,KAAK,eAAe,IAAIvc,GAAevC,GAAoB,KAAK,aAAa,KAAK,MAAM,EAAE,KAAK,aAAa,IAAI2K,GAAa,KAAK,eAAe,KAAK,aAAa,KAAK,MAAM,EAAE,KAAK,cAAc,IAAIiH,GAAc,KAAK,WAAW,KAAK,aAAa,KAAK,MAAM,EAAE,KAAK,mBAAmB,IAAIiI,GAAmB,KAAK,eAAe,KAAK,aAAa,KAAK,WAAW,KAAK,aAAa,KAAK,MAAM,EAAE,KAAK,gBAAgB,IAAImE,GAAgB,KAAK,eAAe,KAAK,aAAa,KAAK,WAAW,KAAK,aAAa,KAAK,MAAM,EAAE,KAAK,aAAa,IAAItE,GAAa,KAAK,gBAAgB,KAAK,mBAAmB,KAAK,aAAa,KAAK,MAAM,CAAE,CAE70B,YAAY,CAAI/iB,EAAM,UAAU,SAAS,OAAO,KAAK,WAAW,cAAcA,EAAM,UAAU,SAAS,KAAK,EAAG,KAAK,eAAe,KAAK,CAAE,CAE1I,gBAAgB,CACrB,KAAK,cAAc,KAAK,EAAE,KAAK,oBAAoB,KAAK,EACrDA,EAAM,SAAS,QAAQ,OAAO,CAACA,EAAM,SAAS,YAAY,QAAO,KAAK,gBAAgB,aAAa,sBAAsBA,EAAM,KAAK,MAAM,EAAKA,EAAM,SAAS,WAAW,MAAM,UAAU,IAAO,KAAK,gBAAgB,aAAa,oCAAoCA,EAAM,KAAK,aAAa,KAAK,MAAM,GAC5S,KAAK,cAAc,KAAK,EACxBA,EAAM,UAAU,OAAO,MAAM,aAAc,CAEtC,cAAc,CAAC,KAAK,gBAAgB,KAAK,CAE9C,CAEK,eAAe,CACpB,KAAK,2BAA2B,EAChCjc,EAAE,IAAI,CAACic,EAAM,UAAU,OAAO,MAAM,GAAKA,EAAM,UAAU,OAAO,MAAM,QAAS,CAAC,EAAE,KAAK,YAAY,GACnG,IAAMooB,EAAmBpoB,EAAM,YAAY,MAAM,SAEjDmnB,GAAqBiB,EAAmB,CAAC,WAAW,eAAe,EAAEt9B,GAAS,KAAK,MAAM,EACzF68B,GAAiB,iBAAiB,CAAE,CAGpC,SAAS,CAAC3nB,EAAM,UAAU,OAAO,MAAM,gBAAgBA,EAAM,YAAY,oBAAoB,MAAM,QAAQ3W,GAAU,CAAC89B,GAAqB99B,EAAS,CAAC,EAAEwB,GAAU,KAAK,MAAM,CAAE,CAAC,EAC/K88B,GAAiB,WAAW,CAAE,CAEzB,uBAAuB,CAG5B,IAAIO,EAAeloB,EAAM,YAAY,mBAAmB,MAAM,KAAMkoB,EAAe,OAAO,GAAE,CAAC,IAAMz1B,EAAcy1B,EAAe,MAAM,EAAEloB,EAAM,YAAY,mBAAmB,MAAMkoB,EAAkBz1B,GAAe,KAAK,qBAAqBA,CAAa,EAAGy1B,EAAeloB,EAAM,YAAY,mBAAmB,KAAM,CAAC,CAAC,qBAAqBvN,EAAc,CAAC,OAAOA,EAAc,CAAC,EAAE,CAAC,IAAK,mBAAmB,KAAK,iBAAiBA,EAAc,CAAC,CAAC,EAAE,MAAM,IAAK,qBAAqB,KAAK,mBAAmB,EAAE,MAAM,IAAK,QAAQ,KAAK,MAAMA,EAAc,CAAC,EAAE,EAAI,EAAE,MAAM,IAAK,OAAO,KAAK,KAAKA,EAAc,CAAC,EAAE,GAAKA,EAAc,CAAC,CAAC,EAAE,MAAM,IAAK,QAAQ,KAAK,MAAMA,EAAc,CAAC,EAAE,GAAKA,EAAc,CAAC,CAAC,EAAE,MAAM,IAAK,WAAW,KAAK,SAASA,EAAc,CAAC,EAAE,GAAKA,EAAc,CAAC,CAAC,EAAE,MAAM,IAAK,QAAQ,KAAK,MAAMA,EAAc,CAAC,EAAE,GAAKA,EAAc,CAAC,CAAC,EAAE,MAAM,IAAK,QAAQ,KAAK,MAAMA,EAAc,CAAC,EAAE,GAAKA,EAAc,CAAC,CAAC,EAAE,MAAM,IAAK,QAAQ,KAAK,MAAMA,EAAc,CAAC,EAAE,EAAI,EAAE,MAAM,IAAK,iBAAiB,KAAK,eAAeA,EAAc,CAAC,EAAEA,EAAc,CAAC,EAAE,EAAI,EAAE,MAAM,IAAK,eAAe,KAAK,aAAaA,EAAc,CAAC,EAAE,EAAI,EAAE,MAAM,IAAK,aAAa,KAAK,WAAW,EAAI,EAAE,MAAM,IAAK,UAAU,KAAK,QAAQA,EAAc,CAAC,EAAE,EAAI,EAAE,MAAM,IAAK,uBAAuB,KAAK,qBAAqBA,EAAc,CAAC,EAAEA,EAAc,CAAC,EAAE,EAAI,EAAE,MAAM,QAA8C,OAAdA,CAAuC,CAAC,CAAC,qBAAqB41B,EAAuB,CAAC,OAAGA,IAAyB,OAAkB,KAAK,mBAAmB,IAAI,EAAyB/I,GAA2B+I,EAAuB,KAAK,MAAM,GAA0B,CAAC,CAAE,CAEvlD,kBAAkB,CACvB,GAAGroB,EAAM,UAAU,OAAO,QAAQ,uBAAuBA,EAAM,mBAAmB,wBAAwB,QAAQ,GAAM,OACxH,KAAK,gBAAgB,aAAa,2CAA2CA,EAAM,KAAK,eAAe,KAAK,aAAa,KAAK,MAAM,EAAE,IAAMsoB,EAAwBtoB,EAAM,mBAAmB,mBAAmB,MAAM,OAAO,GAAGsoB,IAA0B,EAAE,CAACvkC,EAAE,IAAI,CAACic,EAAM,mBAAmB,wBAAwB,MAAM,GAAKA,EAAM,UAAU,OAAO,MAAM,mBAAoB,CAAC,EAAE,MAAO,CAC3XA,EAAM,UAAU,OAAO,MAAM,sBAAsB,KAAK,gBAAgB,aAAa,0BAA0BA,EAAM,KAAK,kBAAkB,KAAK,aAAa,KAAK,MAAM,EACzK/K,EAAE,IAAI,CAA+B+K,EAAM,mBAAmB,wBAAwB,MAAM,OAAOA,EAAM,mBAAmB,mBAAmB,MAAM,SAASsoB,GAAoDvkC,EAAE,IAAI,CAACic,EAAM,UAAU,OAAO,MAAM,oBAAoBA,EAAM,mBAAmB,wBAAwB,MAAM,EAAK,CAAC,CAAG,CAAC,CAAE,CAG7U,qBAAqB,CAElBA,EAAM,UAAU,OAAO,QAAQ,SAASjc,EAAE,IAAI,CAACic,EAAM,UAAU,OAAO,MAAM,OAAQ,CAAC,CAAG,CAE3F,MAAM3W,EAASk/B,EAAqB,GAAM,CAAC,IAAM7kC,EAAK,QAAQ,GAAG,CAACsc,EAAM,UAAU,OAAO,MAAM,CAACA,EAAM,YAAY,mBAAmB,MAAM,CAAC,GAAGA,EAAM,YAAY,mBAAmB,MAAM,CAACtc,EAAK2F,CAAQ,CAAC,EAAE,MAAO,CAA6D,GAA5D,KAAK,aAAa,gBAAgB,OAAO3F,CAAI,aAAa,EAAK,CAAC6C,EAAW8C,CAAQ,EAAE,CAAC,KAAK,OAAO,MAAMqP,GAA0B7N,EAAS,CAAC,EAAE,MAAO,CAI9VmV,EAAM,UAAU,OAAO,QAAQ,gBAAiBmnB,GAAqB99B,EAAS,CAAC,EAAEwB,GAAU,KAAK,MAAM,EAASmV,EAAM,YAAY,oBAAoB,MAAM,CAAC,GAAGA,EAAM,YAAY,oBAAoB,MAAM3W,CAAQ,CAAG,CAAC,KAAKC,EAAQi/B,EAAqB,GAAMF,EAAuB,CAAC,IAAM3kC,EAAK,OAAO,GAAG,CAACsc,EAAM,UAAU,OAAO,MAAM,CAACA,EAAM,YAAY,mBAAmB,MAAM,CAAC,GAAGA,EAAM,YAAY,mBAAmB,MAAM,CAACtc,EAAK4F,CAAO,CAAC,EAAE,MAAO,CAAC,IAAMk/B,EAAkB,KAAK,qBAAqBH,CAAsB,EAAE,KAAK,aAAa,gBAAgB,OAAO3kC,CAAI,QAAQ,EAAEsc,EAAM,QAAQ,UAAU,OAAO,EAAE,KAAK,cAAc,SAAS,CAAC,KAAK,OAAO,SAAS1W,EAAQ,SAAS,KAAKA,EAAQ,KAAK,WAAWA,EAAQ,WAAW,QAAQA,EAAQ,QAAQ,SAASA,EAAQ,QAAQ,EAAEk/B,CAAiB,EAG7xBxoB,EAAM,aAAa,YAAY,QAAQ,IAAM1W,EAAQ,WAAWqG,IAAuB,KAAK,KAAK3G,GAA2B2G,GAAsBC,GAAkB,CAEvK,KAAKC,EAAiB,EAAEmQ,EAAM,YAAY,MAAM,sBAAsB,EAAEuoB,EAAqBC,CAAiB,CAAG,CAAC,MAAMl/B,EAAQi/B,EAAqB,GAAMF,EAAuB,CAAC,IAAM3kC,EAAK,QAAQ,GAAG,CAACsc,EAAM,UAAU,OAAO,MAAM,CAACA,EAAM,YAAY,mBAAmB,MAAM,CAAC,GAAGA,EAAM,YAAY,mBAAmB,MAAM,CAACtc,EAAK4F,CAAO,CAAC,EAAE,MAAO,CAAC,IAAMk/B,EAAkB,KAAK,qBAAqBH,CAAsB,EAAE,KAAK,aAAa,gBAAgB,OAAO3kC,CAAI,YAAY4F,EAAQ,IAAI,EAAE,EAAE0W,EAAM,QAAQ,UAAU,OAAO,EAAE,KAAK,cAAc,SAAS,CAAC,KAAAtc,EAAK,KAAK4F,EAAQ,MAAM,OAAU,WAAWA,EAAQ,WAAW,QAAQA,EAAQ,QAAQ,SAASA,EAAQ,QAAQ,EAAEk/B,CAAiB,CAAE,CAAC,SAASl/B,EAAQi/B,EAAqB,GAAMF,EAAuB,CAAC,IAAM3kC,EAAK,WAAW,GAAG,CAACsc,EAAM,UAAU,OAAO,MAAM,CAACA,EAAM,YAAY,mBAAmB,MAAM,CAAC,GAAGA,EAAM,YAAY,mBAAmB,MAAM,CAACtc,EAAK4F,CAAO,CAAC,EAAE,MAAO,CAAC,IAAMk/B,EAAkB,KAAK,qBAAqBH,CAAsB,EAAE,KAAK,aAAa,gBAAgB,OAAO3kC,CAAI,QAAQ,EAAEsc,EAAM,QAAQ,UAAU,OAAO,EAAmC1W,EAAQ,QAAQ0W,EAAM,QAAQ,OAAO,OAAO1W,EAAQ,SAAS0W,EAAM,QAAQ,OAAO,OAA8B,KAAK,MAAM,EAC1tCvZ,EAAO6C,EAAQ,MAAM,GAAG,KAAK,oBAAoB,UAAUA,EAAQ,MAAM,EAAG,KAAK,oBAAoB,cAAcA,EAAQ,MAAM,EAAE,KAAK,cAAc,SAAS,CAAC,KAAA5F,EAAK,OAAO4F,EAAQ,OAAO,OAAOA,EAAQ,OAAO,QAAQA,EAAQ,QAAQ,SAASA,EAAQ,QAAQ,EAAEk/B,CAAiB,CAAE,CAAC,MAAMl/B,EAAQi/B,EAAqB,GAAMF,EAAuB,CAAC,IAAM3kC,EAAK,QAAQ,GAAG,CAACsc,EAAM,UAAU,OAAO,MAAM,CAACA,EAAM,YAAY,mBAAmB,MAAM,CAAC,GAAGA,EAAM,YAAY,mBAAmB,MAAM,CAACtc,EAAK4F,CAAO,CAAC,EAAE,MAAO,CAAC,IAAMk/B,EAAkB,KAAK,qBAAqBH,CAAsB,EAAE,KAAK,aAAa,gBAAgB,OAAO3kC,CAAI,QAAQ,EAAEsc,EAAM,QAAQ,UAAU,OAAO,EAAE,IAAMyoB,EAAWn/B,EAAQ,OAAO,KAAK,UAAU,GAAG,KAAK,oBAAoB,eAAe,GAAG,KAAK,cAAc,SAAS,CAAC,KAAA5F,EAAK,GAAG4F,EAAQ,GAAG,KAAKm/B,EAAW,QAAQn/B,EAAQ,QAAQ,SAASA,EAAQ,QAAQ,EAAEk/B,CAAiB,CAAE,CAAC,MAAMl/B,EAAQi/B,EAAqB,GAAMF,EAAuB,CAAC,IAAM3kC,EAAK,QAAQ,GAAG,CAACsc,EAAM,UAAU,OAAO,MAAM,CAACA,EAAM,YAAY,mBAAmB,MAAM,CAAC,GAAGA,EAAM,YAAY,mBAAmB,MAAM,CAACtc,EAAK4F,CAAO,CAAC,EAAE,MAAO,CAAC,IAAMk/B,EAAkB,KAAK,qBAAqBH,CAAsB,EAAE,KAAK,aAAa,gBAAgB,OAAO3kC,CAAI,QAAQ,EAAEsc,EAAM,QAAQ,UAAU,OAAO,EAC9wCvZ,EAAO6C,EAAQ,OAAO,GAAG,KAAK,oBAAoB,WAAWA,EAAQ,OAAO,EAAG,KAAK,oBAAoB,eAAeA,EAAQ,MAAM,EAAE,KAAK,cAAc,SAAS,CAAC,KAAA5F,EAAK,QAAQ4F,EAAQ,QAAQ,OAAOA,EAAQ,OAAO,QAAQA,EAAQ,QAAQ,SAASA,EAAQ,QAAQ,EAAEk/B,CAAiB,CAAE,CAAC,MAAMp/B,EAAQm/B,EAAqB,GAAM,CAAC,IAAM7kC,EAAK,QAAQ,GAAG,CAACsc,EAAM,UAAU,OAAO,MAAM,CAACA,EAAM,YAAY,mBAAmB,MAAM,CAAC,GAAGA,EAAM,YAAY,mBAAmB,MAAM,CAACtc,EAAK0F,CAAO,CAAC,EAAE,MAAO,CAAC,KAAK,aAAa,gBAAgB,OAAO1F,CAAI,aAAa,EAAE,KAAK,oBAAoB,MAAM0F,CAAO,CAAE,CAAC,eAAeA,EAAQ,CAAC,OAAO,KAAK,oBAAoB,eAAeA,CAAO,CAAE,CAAC,eAAeq8B,EAAYC,EAAqB6C,EAAqB,GAAM,CAAC,IAAM7kC,EAAK,iBAChwB,GAAG,CAACsc,EAAM,UAAU,OAAO,MAAM,CAACA,EAAM,YAAY,mBAAmB,MAAM,CAAC,GAAGA,EAAM,YAAY,mBAAmB,MAAM,CAACtc,EAAK+hC,EAAYC,CAAoB,CAAC,EAAE,MAAO,CAAC,KAAK,aAAa,gBAAgB,OAAOhiC,CAAI,aAAa,EAAE,KAAK,oBAAoB,eAAe+hC,EAAYC,CAAoB,CAAE,CACnT,WAAW,CAAC,OAAO1lB,EAAM,QAAQ,OAAO,KAAM,CAC9C,eAAe,CAAC,OAAOA,EAAM,QAAQ,WAAW,KAAM,CACtD,YAAY,CAAC,OAAOA,EAAM,QAAQ,QAAQ,KAAM,CAChD,gBAAgB,CAAC,OAAOA,EAAM,QAAQ,YAAY,KAAM,CAAC,aAAa5E,EAAUmtB,EAAqB,GAAM,CAAC,IAAM7kC,EAAK,eAAe,GAAG,CAACsc,EAAM,UAAU,OAAO,MAAM,CAACA,EAAM,YAAY,mBAAmB,MAAM,CAAC,GAAGA,EAAM,YAAY,mBAAmB,MAAM,CAACtc,EAAK0X,CAAS,CAAC,EAAE,MAAO,CAAC,KAAK,aAAa,gBAAgB,OAAO1X,CAAI,aAAa,EAAE,KAAK,oBAAoB,MAAM0X,CAAS,CAAE,CAAC,WAAWmtB,EAAqB,GAAM,CAAC,IAAM7kC,EAAK,aAAa,GAAG,CAACsc,EAAM,UAAU,OAAO,MAAM,CAACA,EAAM,YAAY,mBAAmB,MAAM,CAAC,GAAGA,EAAM,YAAY,mBAAmB,MAAM,CAACtc,CAAI,CAAC,EAAE,MAAO,CAAC,KAAK,aAAa,gBAAgB,OAAOA,CAAI,aAAa,EAAE,KAAK,oBAAoB,IAAI,CAAE,CACzqB,cAAc,CAAyD,OAAxC,KAAK,oBAAoB,aAAa,GAAoB,IAAK,CAAC,QAAQ0F,EAAQm/B,EAAqB,GAAM,CAAC,IAAM7kC,EAAK,UAAU,GAAG,CAACsc,EAAM,UAAU,OAAO,MAAM,CAACA,EAAM,YAAY,mBAAmB,MAAM,CAAC,GAAGA,EAAM,YAAY,mBAAmB,MAAM,CAACtc,EAAK0F,CAAO,CAAC,EAAE,MAAO,CAAC,KAAK,aAAa,gBAAgB,wBAAwB,EAAErF,EAAE,IAAI,CAACic,EAAM,SAAS,WAAW,MAAM,CAAC,GAAGA,EAAM,SAAS,WAAW,MAAM,QAAQ,EAAK,EAAEA,EAAM,SAAS,YAAY,MAAMyW,GAA2BrtB,CAAO,EAAE,GAAK,CAAC,YAAAguB,EAAY,aAAAE,CAAY,EAAEL,GAAyBjX,EAAM,SAAS,YAAY,MAAM,kBAAkB,KAAK,MAAM,EAAEA,EAAM,SAAS,YAAY,MAAMoX,EAAYpX,EAAM,SAAS,KAAK,MAAMsX,CAAa,CAAC,EAC1tBtX,EAAM,SAAS,QAAQ,OAAO,CAACA,EAAM,SAAS,YAAY,OAAO,KAAK,gBAAgB,aAAa,oCAAoCA,EAAM,KAAK,aAAa,KAAK,MAAM,EAC7K,KAAK,cAAc,uBAAuB,EAC1C,KAAK,oBAAoB,uBAAuB,EAChD,KAAK,cAAc,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,mBAAmBuoB,CAAoB,CAAE,CAAC,mBAAmBA,EAAqB,CAE3I,GAAGvoB,EAAM,SAAS,YAAY,MAAM,aAAa,CAAC,IAAM0oB,EAAaj/B,GAA4BsG,EAAwB,EAAKw4B,EAAsBvoB,EAAM,YAAY,mBAAmB,MAAM,CAAC,GAAGA,EAAM,YAAY,mBAAmB,MAAM,CAAC,QAAQ0oB,EAAa,KAAK,mBAAmB,IAAI,CAAC,CAAC,EAAS,KAAK,MAAMA,CAAY,CAAG,CAAC,GAAG1oB,EAAM,SAAS,YAAY,MAAM,cAAc,CAAC,IAAM2oB,EAAY3/B,GAA2B,EAAKu/B,EAAsBvoB,EAAM,YAAY,mBAAmB,MAAM,CAAC,GAAGA,EAAM,YAAY,mBAAmB,MAAM,CAAC,OAAO2oB,EAAY,KAAK,mBAAmB,IAAI,CAAC,CAAC,EAAS,KAAK,KAAKA,CAAW,CAAG,CAAC,CAAC,aAAazC,EAAM,CAAC,KAAK,oBAAoB,aAAaA,CAAK,CAAE,CAK5qB,qBAAqB5oB,EAAcsrB,EAAYL,EAAqB,GAAM,CAAC,IAAM7kC,EAAK,uBAAuB,GAAG6kC,EAAsB,KAAK,aAAa,gBAAgB,OAAO7kC,CAAI,aAAa,EAAE,KAAK,gBAAgB,aAAa,0CAA0C4Z,EAAcsrB,EAAY5oB,EAAM,KAAK,MAAM,MAAQ,CAAC,GAAGA,EAAM,UAAU,OAAO,MAAM,CAAC,KAAK,OAAO,MAAM3C,GAAyCpS,GAAeqS,CAAa,CAAC,EAAE,MAAO,CAAC0C,EAAM,YAAY,mBAAmB,MAAM,CAAC,GAAGA,EAAM,YAAY,mBAAmB,MAAM,CAACtc,EAAK4Z,EAAcsrB,CAAW,CAAC,CAAE,CAAC,CACvkB,EAOSC,GAAN,MAAMA,EAAe,CAIxB,aAAa,CADbnhB,EAAA,0BAAmB,CAAC,GAAEA,EAAA,2BAAoB,IAAGA,EAAA,cAAOjR,IACtC,GAAG,CAAC,GAAGoyB,GAAgB,gBAErC,OAAOA,GAAgB,gBACtBA,GAAgB,0BAA0B,EAAE,KAAK,sBAAsB,KAAK,sBAAsB,KAAK,IAAI,EAAE,KAAK,qBAAqB,KAAK,qBAAqB,KAAK,IAAI,EAAE,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,KAAK,MAAM,KAAK,MAAM,KAAK,IAAI,EAAE,KAAK,yBAAyB,KAAK,yBAAyB,KAAK,IAAI,EAAE,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,KAAK,MAAM,KAAK,MAAM,KAAK,IAAI,EAAE,KAAK,SAAS,KAAK,SAAS,KAAK,IAAI,EAAE,KAAK,MAAM,KAAK,MAAM,KAAK,IAAI,EAAE,KAAK,MAAM,KAAK,MAAM,KAAK,IAAI,EAAE,KAAK,MAAM,KAAK,MAAM,KAAK,IAAI,EAAE,KAAK,eAAe,KAAK,eAAe,KAAK,IAAI,EAAE,KAAK,eAAe,KAAK,eAAe,KAAK,IAAI,EAAE,KAAK,UAAU,KAAK,UAAU,KAAK,IAAI,EAAE,KAAK,cAAc,KAAK,cAAc,KAAK,IAAI,EAAE,KAAK,WAAW,KAAK,WAAW,KAAK,IAAI,EAAE,KAAK,eAAe,KAAK,eAAe,KAAK,IAAI,EAAE,KAAK,iBAAiB,KAAK,iBAAiB,KAAK,IAAI,EAAE,KAAK,iBAAiB,KAAK,iBAAiB,KAAK,IAAI,EAAE,KAAK,mBAAmB,KAAK,mBAAmB,KAAK,IAAI,EAAE,KAAK,aAAa,KAAK,aAAa,KAAK,IAAI,EAAE,KAAK,WAAW,KAAK,WAAW,KAAK,IAAI,EAAE,KAAK,aAAa,KAAK,aAAa,KAAK,IAAI,EAAE,KAAK,aAAa,KAAK,aAAa,KAAK,IAAI,EAAE,KAAK,QAAQ,KAAK,QAAQ,KAAK,IAAI,EAAE,KAAK,qBAAqB,KAAK,qBAAqB,KAAK,IAAI,EAAE,KAAK,4BAA4B,EAAEA,GAAgB,gBAAgB,KAAK7oB,EAAM,UAAU,cAAc,WAAW,MAAM/T,GAAa,EAAE+T,EAAM,UAAU,cAAc,oBAAoB,MAAM,KAAK,IAAI,EACx6C,KAAK,yBAAyB,EAE9B,WAAW,gBAAgB,IAAK,OAAO5Q,EAAM,CAACD,EAAmBC,CAAK,CAAE,CAAC,CAIpE,6BAA6B,CAAC4Q,EAAM,UAAU,sBAAsB,MAAM,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,EAAE,MAAM,KAAK,MAAM,KAAK,IAAI,EAAE,SAAS,KAAK,SAAS,KAAK,IAAI,EAAE,MAAM,KAAK,MAAM,KAAK,IAAI,EAAE,MAAM,KAAK,MAAM,KAAK,IAAI,EAAE,eAAe,KAAK,eAAe,KAAK,IAAI,EAAE,UAAU,KAAK,UAAU,KAAK,IAAI,EAAE,cAAc,KAAK,cAAc,KAAK,IAAI,EAAE,WAAW,KAAK,WAAW,KAAK,IAAI,EAAE,eAAe,KAAK,eAAe,KAAK,IAAI,EAAE,aAAa,KAAK,aAAa,KAAK,IAAI,CAAC,CAAE,CAAC,OAAO,2BAA2B,CAChgBuI,GAAoB,KAAK,EACzBgK,GAAqB,UAAU,EAAEL,GAAoB,UAAU,EAAEG,GAAsB,UAAU,EAAEpC,GAAuB,UAAU,CAAE,CAIjI,sBAAsB1X,EAAS,CAIjC/R,EAAS+R,CAAQ,GAAGA,IAAU,KAAK,oBAAoBA,EAAU,CAE/D,qBAAqBA,EAAS,CAAC,GAAG,CAAC,IAAIuwB,EAAWvwB,EAAS,OAAG,CAAC/R,EAASsiC,CAAU,GAAG,CAACA,KAAYA,EAAW,KAAK,qBAA2D,KAAK,mBAAmBA,CAAU,IAAgC,KAAK,mBAAmBA,CAAU,EAAE,IAAIf,IAAoB,KAAK,mBAAmBe,CAAU,CAAE,OAAO15B,EAAM,CAACD,EAAmBC,CAAK,EAAE,MAAiB,CAAC,CAMzY,KAAKmJ,EAASE,EAAawb,EAAY,CAAC,GAAG,CAAC,GAAG,KAAK,mBAAmB1b,CAAQ,EAAG,OAAQ,KAAK,sBAAsBA,CAAQ,EAClI,KAAK,yBAAyB0b,CAAW,EAEzC,IAAM9hB,EAAqBnB,GAAiBlB,EAAqB,EACjEwC,GAAmCH,CAAoB,EAAErB,GAAiBhB,GAAsBxK,EAAM6M,CAAoB,CAAC,EAAE,KAAK,qBAAqBoG,CAAQ,GAAG,KAAKA,EAASE,EAAawb,CAAW,CAAE,OAAO7kB,EAAM,CAACD,EAAmBC,CAAK,CAAE,CAAC,CAI9O,yBAAyB6kB,EAAY,CAAC,GAAK,CAAC,UAAAvO,EAAU,UAAAqjB,CAAS,EAAE9U,GAAa,CAAC,EAAO,CAAC,QAAQ+U,EAAiB,GAAM,QAAQC,EAAiB,CAAC,EAAE,cAAAC,CAAa,EAAExjB,GAAW,CAAC,EAAO,CAAC,OAAAyjB,EAAO,CAACh/B,GAAoB,QAAQ,EAAE,QAAQi/B,EAAqBJ,EAAiB,QAAA5/B,EAAQ6/B,CAAgB,EAAEC,GAAe,CAAC,EAAElpB,EAAM,UAAU,cAAc,QAAQ,MAAMopB,EAGtWppB,EAAM,UAAU,QAAQ,MAAMgpB,GAAkBI,EAAyBA,GAA8B,KAAK,wBAAwBD,EAAOJ,EAAU3/B,CAAO,CAAE,CAKzJ,wBAAwB+/B,EAAOJ,EAAU3/B,EAAQ,EAAI+/B,EAAO,SAAS,GAAGA,EAAO,SAASh/B,GAAoB,QAAQ,KAAM4+B,IAAY,GAAM38B,GAAYG,GAAc,CAAC,GAAGA,IAAe,IAAOyT,EAAM,UAAU,OAAO,MAAM,CAAC,IAAMqpB,EAAsB,KAAK,IAAI,EAAQC,EAAWD,EAAsBrpB,EAAM,UAAU,cAAc,oBAAoB,MAAM,KAAK,MAAM7V,GAAoB,SAAS,CAAC,WAAAm/B,CAAU,EAAE,CAAC,GAAGlgC,EAAQ,kBAAkBqD,GAAsB,IAAI,KAAK48B,CAAqB,CAAC,CAAC,CAAC,CAAE,CAAC,EAAE,EAAI,EAC5f,KAAK,OAAO,KAAKrsB,GAAuChS,EAAG,CAAC,EAAI,CAG3D,0BAA0B,CAAC,IAAMmH,EAAqB,MAAM,QAAQ,WAAW,eAAe,EAAE,WAAW,gBAAgB,CAAC,EAG3HE,EAAUH,GAAsBC,CAAoB,EAC1DrB,GAAiBhB,GAAsBxK,EAAM,CAAC,GAAG6M,CAAoB,CAAC,CAAC,EACpEE,EAAU,OAAO,IACpBA,EAAU,MAAM,EAEhB,KAAK,KAAK,MAAM,KAAKA,CAAS,EAAG,CAE5B,MAAMhJ,EAAS,CAAC,GAAG,CAAC,KAAK,qBAAqB,GAAG,MAAMqF,EAAkBrF,CAAQ,CAAC,CAAE,OAAO+F,EAAM,CAACD,EAAmBC,CAAK,CAAE,CAAC,CAGlI,KAAKnG,EAASC,EAAKC,EAAWC,EAAQC,EAAS,CAAC,GAAG,CAAC,KAAK,qBAAqB,GAAG,KAAKL,GAA2B0F,EAAkBzF,CAAQ,EAAEyF,EAAkBxF,CAAI,EAAEwF,EAAkBvF,CAAU,EAAEuF,EAAkBtF,CAAO,EAAEsF,EAAkBrF,CAAQ,CAAC,CAAC,CAAE,OAAO+F,EAAM,CAACD,EAAmBC,CAAK,CAAE,CAAC,CAGrS,MAAM1F,EAAMP,EAAWC,EAAQC,EAAS,CAAC,GAAG,CAAC,KAAK,qBAAqB,GAAG,MAAMI,GAA4BiF,EAAkBhF,CAAK,EAAEgF,EAAkBvF,CAAU,EAAEuF,EAAkBtF,CAAO,EAAEsF,EAAkBrF,CAAQ,CAAC,CAAC,CAAE,OAAO+F,EAAM,CAACD,EAAmBC,CAAK,CAAE,CAAC,CAGrQ,SAASxF,EAAOC,EAAOT,EAAQC,EAAS,CAAC,GAAG,CAAC,KAAK,qBAAqB,GAAG,SAASM,GAA+B+E,EAAkB9E,CAAM,EAAE8E,EAAkB7E,CAAM,EAAE6E,EAAkBtF,CAAO,EAAEsF,EAAkBrF,CAAQ,CAAC,CAAC,CAAE,OAAO+F,EAAM,CAACD,EAAmBC,CAAK,CAAE,CAAC,CAGxQ,MAAMrF,EAAGC,EAAKZ,EAAQC,EAAS,CAAC,GAAG,CAAC,KAAK,qBAAqB,GAAG,MAAMS,GAA4B4E,EAAkB3E,CAAE,EAAE2E,EAAkB1E,CAAI,EAAE0E,EAAkBtF,CAAO,EAAEsF,EAAkBrF,CAAQ,CAAC,CAAC,CAAE,OAAO+F,EAAM,CAACD,EAAmBC,CAAK,CAAE,CAAC,CAGnP,MAAMlF,EAAQL,EAAOT,EAAQC,EAAS,CAAC,GAAG,CAAC,KAAK,qBAAqB,GAAG,MAAMY,GAA4ByE,EAAkBxE,CAAO,EAAEwE,EAAkB7E,CAAM,EAAE6E,EAAkBtF,CAAO,EAAEsF,EAAkBrF,CAAQ,CAAC,CAAC,CAAE,OAAO+F,EAAM,CAACD,EAAmBC,CAAK,CAAE,CAAC,CA2B5P,MAAMhG,EAAQ,CAAC,GAAG,CAAC,KAAK,qBAAqB,GAAG,MAAMsF,EAAkBtF,CAAO,CAAC,CAAE,OAAOgG,EAAM,CAACD,EAAmBC,CAAK,CAAE,CAAC,CAAC,eAAehG,EAAQ,CAAC,GAAG,CAAC,OAAO,KAAK,qBAAqB,GAAG,eAAesF,EAAkBtF,CAAO,CAAC,CAAE,OAAOgG,EAAM,CAACD,EAAmBC,CAAK,EAAE,MAAiB,CAAC,CAAC,eAAeq2B,EAAYC,EAAqB,CAAC,GAAG,CAAC,KAAK,qBAAqB,GAAG,eAAeh3B,EAAkB+2B,CAAW,EAAE/2B,EAAkBg3B,CAAoB,CAAC,CAAE,OAAOt2B,EAAM,CAACD,EAAmBC,CAAK,CAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,KAAK,qBAAqB,GAAG,UAAU,CAAE,OAAOA,EAAM,CAACD,EAAmBC,CAAK,EAAE,MAAiB,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,KAAK,qBAAqB,GAAG,cAAc,CAAE,OAAOA,EAAM,CAACD,EAAmBC,CAAK,EAAE,MAAiB,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,KAAK,qBAAqB,GAAG,WAAW,CAAE,OAAOA,EAAM,CAACD,EAAmBC,CAAK,EAAE,MAAiB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,KAAK,qBAAqB,GAAG,eAAe,CAAE,OAAOA,EAAM,CAACD,EAAmBC,CAAK,EAAE,MAAiB,CAAC,CAAC,iBAAiB/B,EAAQ,CAAC,GAAG,CAAC,KAAK,qBAAqB,GAAG,iBAAiBA,CAAO,CAAE,OAAO+B,EAAM,CAACD,EAAmBC,CAAK,CAAE,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,KAAK,qBAAqB,GAAG,iBAAiB,GAAG,CAAC,CAAE,OAAOA,EAAM,CAAC,OAAAD,EAAmBC,CAAK,EAAS,CAAC,CAAE,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,qBAAqB,GAAG,mBAAmB,CAAE,OAAOA,EAAM,CAACD,EAAmBC,CAAK,CAAE,CAAC,CAAC,aAAagM,EAAU,CAAC,GAAG,CAAC,KAAK,qBAAqB,GAAG,aAAa1M,EAAkB0M,CAAS,CAAC,CAAE,OAAOhM,EAAM,CAACD,EAAmBC,CAAK,CAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,qBAAqB,GAAG,WAAW,CAAE,OAAOA,EAAM,CAACD,EAAmBC,CAAK,CAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,KAAK,qBAAqB,GAAG,aAAa,CAAE,OAAOA,EAAM,CAACD,EAAmBC,CAAK,EAAE,MAAiB,CAAC,CAAC,aAAa82B,EAAM,CAAC,GAAG,CAAC,KAAK,qBAAqB,GAAG,aAAax3B,EAAkBw3B,CAAK,CAAC,CAAE,OAAO92B,EAAM,CAACD,EAAmBC,CAAK,CAAE,CAAC,CAAC,QAAQhG,EAAQ,CAAC,GAAG,CAAC,KAAK,qBAAqB,GAAG,QAAQsF,EAAkBtF,CAAO,CAAC,CAAE,OAAOgG,EAAM,CAACD,EAAmBC,CAAK,CAAE,CAAC,CAAC,qBAAqBkO,EAAcsrB,EAAY,CAAC,GAAG,CAAC,KAAK,qBAAqB,GAAG,qBAAqBl6B,EAAkB4O,CAAa,EAAE5O,EAAkBk6B,CAAW,CAAC,CAAE,OAAOx5B,EAAM,CAACD,EAAmBC,CAAK,CAAE,CAAC,CAAC,EAtG/rEsY,EAFSmhB,GAEF,kBAAgB,MAFpB,IAAMU,GAANV","names":["_isPlaceholder","a","_curry1","fn","f1","_curry2","f2","b","_b","_a","_curry3","f3","c","_c","_has","prop","obj","type","val","_isObject","x","_isInteger","n","_nth","offset","list","idx","_cloneRegExp","pattern","_clone","value","deep","map","_ObjectMap","_isPrimitive","copy","copiedValue","cachedCopy","key","param","hashedKey","bucket","p","i","element","clone","_path","pathAr","mergeWithKey","l","r","result","k","mergeDeepWithKey","lObj","rObj","lVal","rVal","mergeDeepWith","path","pickBy","test","isFunction","isString","isNull","isUndefined","isNullOrUndefined","isBigInt","isDefined","isDefinedAndNotNull","isDefinedNotNullAndNotEmptyString","isTypeOfError","isBoolean","getValueByPath","keyPath","pathParts","hasValueByPath","isObject","isObjectAndNotNull","isObjectLiteralAndNotNull","mergeDeepRightObjectArrays","leftValue","rightValue","mergedArray","index","mergeDeepRight","leftObject","rightObject","isNonEmptyObject","removeUndefinedValues","removeUndefinedAndNullValues","getNormalizedObjectValue","getNormalizedBooleanValue","defVal","deepFreeze","trim","removeLeadingPeriod","tryStringify","retVal","bytesToBase64","bytes","binString","toBase64","pageArgumentsToCallOptions","category","name","properties","options","callback","payload","nameForProperties","categoryForProperties","trackArgumentsToCallOptions","event","identifyArgumentsToCallOptions","userId","traits","aliasArgumentsToCallOptions","to","from","groupArgumentsToCallOptions","groupId","PageLifecycleEvents","API_SUFFIX","CAPABILITIES_MANAGER","CONFIG_MANAGER","EVENT_MANAGER","PLUGINS_MANAGER","USER_SESSION_MANAGER","ERROR_HANDLER","PLUGIN_ENGINE","STORE_MANAGER","READY_API","LOAD_API","HTTP_CLIENT","RSA","ANALYTICS_CORE","random","len","SIZE","HEX$1","IDX$1","BUFFER$1","v4$1","tmp","out","IDX","HEX","BUFFER","v4","num","hasCrypto$1","generateUUID","isSDKRunningInChromeExtension","isIE11","onPageLeave","avoidBfCacheOptimization","pageLeft","isAccessible","handleOnLeave","getFormattedTimestamp","date","getCurrentTimeFormatted","LOG_CONTEXT_SEPARATOR","SCRIPT_ALREADY_EXISTS_ERROR","id","SCRIPT_LOAD_ERROR","url","ev","SCRIPT_LOAD_TIMEOUT_ERROR","timeout","CIRCULAR_REFERENCE_WARNING","context","JSON_STRINGIFY_WARNING","BAD_DATA_WARNING","COOKIE_DATA_ENCODING_ERROR","STORAGE_UNAVAILABILITY_ERROR_PREFIX","storageType","JSON_STRINGIFY","JSON_UTIL","BIG_INT_PLACEHOLDER","CIRCULAR_REFERENCE_PLACEHOLDER","getCircularReplacer","excludeNull","excludeKeys","logger","ancestors","stringifyWithoutCircular","err","getReplacer","traverseWithThis","replacer","sanitizedValue","getSanitizedValue","newValue","MANUAL_ERROR_IDENTIFIER","getStacktrace","stack","getMutatedError","issue","ErrorConstructor","newError","dispatchErrorEvent","error","errStack","APP_NAME","APP_VERSION","APP_NAMESPACE","MODULE_TYPE","BUILD_VARIANT","ADBLOCK_PAGE_CATEGORY","ADBLOCK_PAGE_NAME","ADBLOCK_PAGE_PATH","GLOBAL_PRELOAD_BUFFER","CONSENT_TRACK_EVENT_NAME","QUERY_PARAM_TRAIT_PREFIX","QUERY_PARAM_PROPERTY_PREFIX","QUERY_PARAM_ANONYMOUS_ID_KEY","QUERY_PARAM_USER_ID_KEY","QUERY_PARAM_TRACK_EVENT_NAME_KEY","DEFAULT_XHR_TIMEOUT_MS","DEFAULT_COOKIE_MAX_AGE_MS","DEFAULT_SESSION_CUT_OFF_DURATION_MS","DEFAULT_SESSION_TIMEOUT_MS","MIN_SESSION_TIMEOUT_MS","DEFAULT_DATA_PLANE_EVENTS_BUFFER_TIMEOUT_MS","DEBOUNCED_TIMEOUT_MS","createExposedGlobals","analyticsInstanceId","setExposedGlobal","keyName","getExposedGlobal","debounce","func","thisArg","delay","timeoutId","args","getEventDataFromQueryString","params","dataTypeNamePrefix","data","dataKey","retrieveEventsFromQueryString","argumentsArray","eventArgumentToQueryParamMap","queryObject","userTraits","identifyApiArgs","getPreloadedLoadEvent","preloadedEventsArray","loadMethodName","loadEvent","promotePreloadedConsentEventsToTop","consentMethodName","consentEvents","bufferedEvent","nonConsentEvents","retrievePreloadBufferEvents","instance","consumePreloadBufferedEvent","analyticsInstance","methodName","callOptions","DEFAULT_EXT_SRC_LOAD_TIMEOUT_MS","EXTERNAL_SOURCE_LOAD_ORIGIN","createScriptElement","async","onload","onerror","extraAttributes","scriptElement","attributeName","insertScript","newScriptElement","headElements","scriptElements","headElement","htmlElement","jsFileLoader","resolve","reject","timeoutID","ExternalSrcLoader","config","isFireAndForget","t","v","h","s","w","e","u","o","f","d","j","y","_","S","m","E","BufferQueue","item","LOG_LEVEL_MAP","DEFAULT_LOG_LEVEL","POST_LOAD_LOG_LEVEL","LOG_MSG_PREFIX","LOG_MSG_PREFIX_STYLE","LOG_MSG_STYLE","Logger","minLogLevel","scope","logProvider","logMethod","scopeVal","logLevel","msg","originalMsg","styledLogArgs","defaultLogger","ErrorType","SUPPORTED_STORAGE_TYPES","DEFAULT_STORAGE_TYPE","SOURCE_CONFIG_RESOLUTION_ERROR","SOURCE_DISABLED_ERROR","XHR_PAYLOAD_PREP_ERROR","PLUGIN_EXT_POINT_MISSING_ERROR","PLUGIN_EXT_POINT_INVALID_ERROR","SOURCE_CONFIG_OPTION_ERROR","COMPONENT_BASE_URL_ERROR","component","UNSUPPORTED_CONSENT_MANAGER_ERROR","selectedConsentManager","consentManagersToPluginNameMap","NON_ERROR_WARNING","errStr","BREADCRUMB_ERROR","HANDLE_ERROR_FAILURE","PLUGIN_NAME_MISSING_ERROR","PLUGIN_ALREADY_EXISTS_ERROR","pluginName","PLUGIN_NOT_FOUND_ERROR","PLUGIN_ENGINE_BUG_ERROR","PLUGIN_DEPS_ERROR","notExistDeps","PLUGIN_INVOCATION_ERROR","extPoint","SOURCE_CONFIG_FETCH_ERROR","WRITE_KEY_VALIDATION_ERROR","writeKey","DATA_PLANE_URL_VALIDATION_ERROR","dataPlaneUrl","INVALID_CALLBACK_FN_ERROR","XHR_DELIVERY_ERROR","prefix","status","statusText","response","XHR_REQUEST_ERROR","XHR_SEND_ERROR","STORE_DATA_SAVE_ERROR","STORE_DATA_FETCH_ERROR","DATA_SERVER_REQUEST_FAIL_ERROR","FAILED_SETTING_COOKIE_FROM_SERVER_ERROR","FAILED_SETTING_COOKIE_FROM_SERVER_GLOBAL_ERROR","STORAGE_TYPE_VALIDATION_WARNING","defaultStorageType","UNSUPPORTED_STORAGE_ENCRYPTION_VERSION_WARNING","selectedStorageEncryptionVersion","storageEncryptionVersionsToPluginNameMap","defaultVersion","STORAGE_DATA_MIGRATION_OVERRIDE_WARNING","storageEncryptionVersion","SERVER_SIDE_COOKIE_FEATURE_OVERRIDE_WARNING","providedCookieDomain","currentCookieDomain","RESERVED_KEYWORD_WARNING","property","parentKeyPath","reservedElements","RESERVED_CUSTOM_CONTEXT_KEY_WARNING","logContext","INVALID_CONTEXT_OBJECT_WARNING","INVALID_CUSTOM_CONTEXT_WARNING","UNSUPPORTED_BEACON_API_WARNING","TIMEOUT_NOT_NUMBER_WARNING","defaultValue","CUT_OFF_DURATION_NOT_NUMBER_WARNING","cutOffDuration","CUT_OFF_DURATION_LESS_THAN_TIMEOUT_WARNING","TIMEOUT_ZERO_WARNING","TIMEOUT_NOT_RECOMMENDED_WARNING","minTimeout","INVALID_SESSION_ID_WARNING","sessionId","minSessionIdLength","STORAGE_QUOTA_EXCEEDED_WARNING","STORAGE_UNAVAILABLE_WARNING","entry","selectedStorageType","finalStorageType","CALLBACK_INVOKE_ERROR","INVALID_CONFIG_URL_WARNING","configUrl","POLYFILL_SCRIPT_LOAD_ERROR","scriptId","UNSUPPORTED_PRE_CONSENT_STORAGE_STRATEGY","selectedStrategy","defaultStrategy","UNSUPPORTED_PRE_CONSENT_EVENTS_DELIVERY_TYPE","selectedDeliveryType","defaultDeliveryType","DEPRECATED_PLUGIN_WARNING","generateMisconfiguredPluginsWarning","configurationStatus","missingPlugins","shouldAddMissingPlugins","isSinglePlugin","pluginsString","baseWarning","INVALID_POLYFILL_URL_WARNING","customPolyfillUrl","PAGE_UNLOAD_ON_BEACON_DISABLED_WARNING","UNKNOWN_PLUGINS_WARNING","unknownPlugins","UNAVAILABLE_PLUGINS_ERROR","unavailablePlugins","CUSTOM_INTEGRATION_CANNOT_BE_ADDED_ERROR","destinationId","DEFAULT_INTEGRATIONS_CONFIG","CDN_INT_DIR","CDN_PLUGINS_DIR","URL_PATTERN","BUILD_TYPE","SDK_CDN_BASE_URL","CDN_ARCH_VERSION_DIR","DEFAULT_INTEGRATION_SDKS_URL","DEFAULT_PLUGINS_URL","DEFAULT_CONFIG_BE_URL","DEFAULT_STORAGE_ENCRYPTION_VERSION","DEFAULT_DATA_PLANE_EVENTS_TRANSPORT","ConsentManagersToPluginNameMap","StorageEncryptionVersionsToPluginNameMap","DataPlaneEventsTransportToPluginNameMap","DEFAULT_DATA_SERVICE_ENDPOINT","METRICS_SERVICE_ENDPOINT","CUSTOM_DEVICE_MODE_DESTINATION_DISPLAY_NAME","defaultLoadOptions","loadOptionsState","DEFAULT_USER_SESSION_VALUES","DEFAULT_RESET_OPTIONS","SERVER_SIDE_COOKIES_DEBOUNCE_TIME","sessionState","capabilitiesState","reportingState","sourceConfigState","lifecycleState","consentsState","metricsState","getVariantValue","contextState","customContextState","nativeDestinationsState","eventBufferState","pluginsState","storageState","serverSideCookiesState","dataPlaneEventsState","autoTrackState","defaultStateValues","state","CHROME_STACK_LINE_RE","SAFARI_NATIVE_RE","LOCATION_RE","extractLocation","urlLike","normalizedUrlLike","parts","parseV8Line","line","sanitized","parenLoc","withoutLoc","rawFile","lineNumber","columnNumber","parseFFSafariLine","atIndex","functionName","fileName","parseStackTrace","lines","GLOBAL_CODE","normalizeFunctionName","formatStackframe","frame","ensureString","str","createException","errorClass","errorMessage","msgPrefix","stacktrace","accum","normalizeError","maybeError","createBugsnagException","responseTextToJson","responseText","onError","FAILED_REQUEST_ERR_MSG_PREFIX","PLUGINS_LOAD_FAILURE_MESSAGES","INTEGRATIONS_LOAD_FAILURE_MESSAGES","ERROR_MESSAGES_TO_BE_FILTERED","SCRIPT_LOAD_FAILURE_MESSAGES","INTEGRATIONS_ERROR_CATEGORY","SDK_ERROR_CATEGORY","DEFAULT_ERROR_CATEGORY","DEFAULT_XHR_REQUEST_OPTIONS","createXhrRequestOptions","basicAuthHeader","requestOptions","xhrRequest","xhr","xhrReject","xhrError","headerName","HttpClient","errorHandler","isRawResponse","reason","groupingHash","noBtoa","authVal","defaultHttpClient","METRICS_PAYLOAD_VERSION","SDK_FILE_NAME_PREFIXES","DEV_HOSTS","APP_STATE_EXCLUDE_KEYS","NOTIFIER_NAME","SDK_GITHUB_URL","SOURCE_NAME","detectAdBlockers","httpClient","baseUrl","details","getErrInstance","errorType","createNewBreadcrumb","message","getReleaseStage","getHostName","host","getAppStateForMetadata","stateStr","getURLWithoutQueryString","getUserDetails","source","session","lifecycle","autoTrack","getDeviceDetails","locale","userAgent","getBugsnagErrorEvent","exception","errorState","reporting","app","timezone","screen","library","checkIfAdBlockersAreActive","detectionDisposer","checkIfAllowedToBeNotified","errMsg","regex","extractedURL","getDirectoryName","filePath","getTopStackPath","errorOrigin","isSDKError","srcFileName","getErrorCategory","getErrorDeliveryPayload","getErrorGroupingHash","curErrGroupingHash","defaultGroupingHash","normalizedGroupingHash","normalizedErrorInstance","ErrorHandler","__publicField","blockedURL","errorInfo","customMessage","errInstance","normalizedError","customMsgVal","errorMsgPrefix","bsException","isSdkDispatched","bugsnagPayload","errorCategory","breadcrumb","defaultErrorHandler","PluginEngine","plugin","pos","pluginItem","lifeCycleName","dependency","allowMultiple","extensionPointName","noCall","throws","extensionPointNameParts","pluginMethodPath","method","defaultPluginEngine","isNonCloudDestination","destination","isHybridModeDestination","getNonCloudDestinations","destinations","getDestinationUserFriendlyId","displayName","pluginNamesList","deprecatedPluginsList","remotesMap","merge","obj1","obj2","mergedObj","wrapShareModule","remoteFrom","__federation_method_ensure","remoteId","remote","lib","shareScope","__federation_method_wrapDefault","module","need","__federation_method_getRemote","remoteName","componentName","factory","getFederatedModuleImport","federatedModulesBuildPluginImports","activePluginNames","remotePlugins","lazyLoadImport","getMandatoryPluginsMap","getOptionalPluginsMap","getRemotePluginsMap","pluginsInventory","remotePluginsInventory","PluginsManager","engine","pluginsToLoadFromConfig","pluginGroupsToProcess","addMissingPlugins","group","pluginsToConfigure","pluginsToLoad","availablePlugins","activePlugins","failedPlugins","localPlugin","remotePluginsList","remotePluginKey","remotePluginModule","plugins","pluginKey","COOKIE_STORAGE","LOCAL_STORAGE","SESSION_STORAGE","MEMORY_STORAGE","NO_STORAGE","STORAGE_TEST_COOKIE","STORAGE_TEST_LOCAL_STORAGE","STORAGE_TEST_SESSION_STORAGE","userIdKey","userTraitsKey","anonymousUserIdKey","groupIdKey","groupTraitsKey","pageInitialReferrerKey","pageInitialReferringDomainKey","sessionInfoKey","authTokenKey","COOKIE_KEYS","STORAGE_TEST_TOP_LEVEL_DOMAIN","CLIENT_DATA_STORE_COOKIE","CLIENT_DATA_STORE_LS","CLIENT_DATA_STORE_MEMORY","CLIENT_DATA_STORE_SESSION","USER_SESSION_KEYS","storageClientDataStoreNameMap","encode","decode","parse","pairs","pair","pairItem","set","optionsConfig","cookieString","all","cookieStringValue","get","cookie","legacyGetHostname","href","levelsFunc","last","levels","domain","cname","opts","getDefaultCookieOptions","topDomain","getDefaultLocalStorageOptions","getDefaultSessionStorageOptions","getDefaultInMemoryStorageOptions","InMemoryStorage","defaultInMemoryStorage","getDefaultExportFromCjs","store$2","store$1","hasRequiredStore","requireStore","exports","global","isJSON","stringify","deserialize","isArray","dealIncognito","storage","_KEY","_VALUE","inMemoryStorage","Store","ret","dt","arr","_Store","store","argm","storeExports","isStorageQuotaExceeded","matchingNames","matchingCodes","isStorageAvailable","storageInstance","testData","errObj","LocalStorage","defaultLocalStorage","SessionStorage","keys","defaultSessionStorage","CookieStorage","defaultCookieStorage","getStorageEngine","configureCookieStorageEngine","cookieStorageOptions","configureLocalStorageEngine","configureInMemoryStorageEngine","configureSessionStorageEngine","configureStorageEngines","localStorageOptions","inMemoryStorageOptions","sessionStorageOptions","pluginsManager","validKeys","noKeyValidation","noCompoundKey","compoundKey","validKeyName","validKey","decryptedValue","encryptionPluginName","mode","formattedValue","getStorageTypeFromPreConsentIfApplicable","sessionKey","overriddenStorageType","StoreManager","loadOptions","globalStorageType","entriesOptions","postConsentStorageOpts","trulyAnonymousTracking","storageEntries","storageKey","configuredStorageType","storeConfig","storageEngine","isValidSourceConfig","res","isValidStorageType","getTopDomain","urlObj","protocol","getTopDomainUrl","getDataServiceUrl","endpoint","useExactDomain","formattedEndpoint","isWebpageTopLevelDomain","providedDomain","removeTrailingSlashes","getDomain","getReferringDomain","referrer","extractUTMParameters","UTM_PREFIX","sParam","utmParam","getUrlWithoutHash","urlWithoutHash","removeDuplicateSlashes","isValidURL","DEFAULT_PRE_CONSENT_STORAGE_STRATEGY","DEFAULT_PRE_CONSENT_EVENTS_DELIVERY_TYPE","isErrorReportingEnabled","sourceConfig","isMetricsReportingEnabled","getValidPostConsentOptions","validOptions","clonedOptions","isValidConsentsData","getConsentManagerInfo","consentManagementOpts","provider","consentManagerPluginName","getConsentManagementData","allowedConsentIds","deniedConsentIds","initialized","enabled","consentsData","getSDKUrl","scriptTag","scripts","sdkFileNameRegex","script","src","updateReportingState","getServerSideCookiesStateData","useServerSideCookies","dataServiceEndpoint","storageOptsFromLoad","setCookieDomain","sameDomainCookiesOnly","cookieOptions","sscEnabled","finalDataServiceUrl","dataServiceUrl","curHost","dataServiceHost","updateStorageStateFromLoadOptions","configuredMigrationValue","finalMigrationVal","updateConsentsStateFromLoadOptions","preConsentOpts","storageStrategy","StorageStrategies","eventsDeliveryType","deliveryTypes","updateConsentsState","resp","resolutionStrategy","cmpMetadata","updateDataPlaneEventsStateFromLoadOptions","defaultEventsQueuePluginName","eventsQueuePluginName","getSourceConfigURL","lockIntegrationsVersion","lockPluginsVersion","defSearchParams","origin","searchParams","pathname","hash","configUrlInstance","getDestinationsFromConfig","getSDKComponentBaseURL","componentType","pathSuffix","defaultComponentUrl","currentSdkVersion","lockVersion","urlFromLoadOptions","sdkComponentBaseURL","sdkURL","getIntegrationsCDNPath","integrationsUrlFromLoadOptions","getPluginsCDNPath","pluginsUrlFromLoadOptions","ConfigManager","destSDKBaseURL","pluginsSDKBaseURL","integrations","intgCdnUrl","pluginsCDNPath","nativeDestinations","sourceConfigFunc","pRes","getTimezone","getReferrer","getDocument","getCanonicalUrl","tags","canonicalUrl","tag","getUserAgent","getNavigator","navigator","brave","matchedArr","getLanguage","getDefaultPageProperties","getLocation","location","tabUrl","pageUrl","search","title","getUserAgentClientHint","level","ua","isDatasetAvailable","testElement","legacyJSEngineRequiredPolyfills","isLegacyJSEngine","requiredCapabilitiesList","needsPolyfill","isCapabilityMissing","polyfillIoSdkUrl","POLYFILL_URL","POLYFILL_LOAD_TIMEOUT","POLYFILL_SCRIPT_ID","hasCrypto","hasUAClientHints","hasBeacon","getScreenDetails","screenDetails","CapabilitiesManager","uach","polyfillUrl","isDefaultPolyfillService","polyfillCallbackName","polyfillCallback","CHANNEL","TOP_LEVEL_ELEMENTS","CONTEXT_RESERVED_ELEMENTS","RESERVED_ELEMENTS","CUSTOM_CONTEXT","PROTOTYPE_POLLUTION_KEYS","OBJECT_CONSTRUCTOR_SOURCE","isPlainObject","prototype","constructor","containsPrototypePollutionKey","visitedObjects","traversableValue","filterReservedCustomContextKeys","retainedContext","prepareCustomContextUpdate","input","acceptedInput","sanitizedContext","CustomContextStore","update","mergedContext","isNumber","hasMinLength","minimumLength","isPositiveInteger","MIN_SESSION_ID_LENGTH","isCutOffTimeExceeded","sessionInfo","cutOff","timestamp","hasSessionExpired","generateSessionId","isManualSessionIdValid","getCutOffExpirationTimestamp","generateAutoTrackingSession","generateManualTrackingSession","isStorageTypeValidForStoringData","generateAnonymousId","getFinalResetOptions","entries","rest","getContextPageProperties","pageProps","curPageProps","ctxPageProps","getUpdatedPageProperties","optionsPageProps","checkForReservedElementsInObject","checkForReservedElements","rudderEvent","contextualTraits","updateTopLevelEventElements","getMergedContext","rudderContext","mergeContext","candidateContext","acceptedContext","processOptions","getEventIntegrationsConfig","integrationsConfig","finalIntgConfig","getEnrichedEvent","customContext","commonEventData","sdkBuiltEvent","processedEvent","RudderEventFactory","props","enrichedEvent","groupEvent","eventObj","EventManager","eventRepository","userSessionManager","UserSessionManager","storeManager","externalAnonymousIdCookieName","anonymousIdOptions","externalAnonymousId","configuredSessionTrackingInfo","initialSessionInfo","persistedInitialReferrer","persistedInitialReferringDomain","initialReferrer","entryName","storageTypesForMigration","currentStorage","curStore","stores","storesToMigrate","storeName","storageEntry","migratedVal","configuredSessionTimeout","sessionTimeout","cutOffEnabled","cookiesData","encryptedCookieData","cData","encryptedValue","sessionToCookiesMap","cb","sessionKeys","getCurrentCookieValuesFromState","originalCookieValues","clearInProgressFlags","setCookiesClientSide","each","expectedCookieValues","originalCookieVal","currentCookieVal","cookieName","cookieValue","anonymousId","rudderAmpLinkerParam","finalAnonymousId","persistedAnonymousId","manualTrack","userSessionKey","referringDomain","finalSessionInfo","cutOffExpiresAt","token","allOptionalPlugins","defaultOptionalPluginsList","normalizeLoadOptions","loadOptionsFromState","normalizedLoadOpts","DATA_PLANE_QUEUE_EXT_POINT_PREFIX","DESTINATIONS_QUEUE_EXT_POINT_PREFIX","DMT_EXT_POINT_PREFIX","getOverriddenIntegrationOptions","eventIntgConfig","destinationsIntgConfig","intgName","getFinalEvent","finalEvent","overriddenIntgOpts","shouldBufferEventsForPreConsent","safelyInvokeCallback","apiName","EventRepository","bufferEventsBeforeConsent","shouldBufferDpEvents","dest","dpQEvent","dQEvent","dispatchSDKEvent","customEvent","isWriteKeyValid","isDataPlaneUrlValid","Analytics","loadOptionsWithoutContext","sanitizedLoadOptions","bufferedEvents","eventToProcess","onLoadedCallbackFn","preservedCustomContext","totalDestinationsToLoad","isBufferedInvocation","invocationContext","previousId","trackOptions","pageOptions","integration","_RudderAnalytics","instanceId","useBeacon","autoTrackEnabled","autoTrackOptions","pageLifecycle","events","pageLifecycleEnabled","pageUnloadedTimestamp","timeOnPage","RudderAnalytics"]}