@descope/node-sdk 1.0.4-alpha.8 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.umd.js","sources":["../node_modules/jwt-decode/build/jwt-decode.esm.js","../node_modules/lodash.get/index.js","../node_modules/@descope/core-js-sdk/dist/index.esm.js","../node_modules/jose/dist/node/esm/lib/buffer_utils.js","../node_modules/jose/dist/node/esm/runtime/base64url.js","../node_modules/jose/dist/node/esm/util/errors.js","../node_modules/jose/dist/node/esm/runtime/is_key_object.js","../node_modules/jose/dist/node/esm/runtime/webcrypto.js","../node_modules/jose/dist/node/esm/lib/crypto_key.js","../node_modules/jose/dist/node/esm/runtime/env.js","../node_modules/jose/dist/node/esm/lib/invalid_key_input.js","../node_modules/jose/dist/node/esm/runtime/is_key_like.js","../node_modules/jose/dist/node/esm/runtime/zlib.js","../node_modules/jose/dist/node/esm/lib/is_object.js","../node_modules/jose/dist/node/esm/runtime/get_named_curve.js","../node_modules/jose/dist/node/esm/runtime/ecdhes.js","../node_modules/jose/dist/node/esm/runtime/pbes2kw.js","../node_modules/jose/dist/node/esm/runtime/check_modulus_length.js","../node_modules/jose/dist/node/esm/runtime/asn1_sequence_encoder.js","../node_modules/jose/dist/node/esm/runtime/jwk_to_key.js","../node_modules/jose/dist/node/esm/key/import.js","../node_modules/jose/dist/node/esm/lib/check_key_type.js","../node_modules/jose/dist/node/esm/runtime/dsa_digest.js","../node_modules/jose/dist/node/esm/runtime/key_to_jwk.js","../node_modules/jose/dist/node/esm/runtime/node_key.js","../node_modules/jose/dist/node/esm/runtime/get_sign_verify_key.js","../node_modules/jose/dist/node/esm/runtime/sign.js","../node_modules/jose/dist/node/esm/runtime/hmac_digest.js","../node_modules/jose/dist/node/esm/runtime/verify.js","../node_modules/jose/dist/node/esm/jws/flattened/verify.js","../node_modules/jose/dist/node/esm/lib/is_disjoint.js","../node_modules/jose/dist/node/esm/lib/validate_crit.js","../node_modules/jose/dist/node/esm/lib/validate_algorithms.js","../node_modules/jose/dist/node/esm/lib/secs.js","../node_modules/jose/dist/node/esm/lib/jwt_claims_set.js","../node_modules/jose/dist/node/esm/lib/epoch.js","../node_modules/jose/dist/node/esm/jwt/verify.js","../node_modules/jose/dist/node/esm/jws/compact/verify.js","../node_modules/jose/dist/node/esm/runtime/generate.js","../node_modules/webidl-conversions/lib/index.js","../node_modules/whatwg-url/lib/utils.js","../node_modules/punycode/punycode.js","../node_modules/tr46/index.js","../node_modules/whatwg-url/lib/url-state-machine.js","../node_modules/whatwg-url/lib/URL-impl.js","../node_modules/whatwg-url/lib/URL.js","../node_modules/whatwg-url/lib/public-api.js","../node_modules/node-fetch/lib/index.mjs","../lib/constants.ts","../lib/helpers.ts","../node_modules/tslib/tslib.es6.js","../lib/management/paths.ts","../lib/management/user.ts","../lib/management/tenant.ts","../lib/management/jwt.ts","../lib/index.ts","../lib/management/index.ts"],"sourcesContent":["function e(e){this.message=e}e.prototype=new Error,e.prototype.name=\"InvalidCharacterError\";var r=\"undefined\"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,\"\");if(t.length%4==1)throw new e(\"'atob' failed: The string to be decoded is not correctly encoded.\");for(var n,o,a=0,i=0,c=\"\";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(o);return c};function t(e){var t=e.replace(/-/g,\"+\").replace(/_/g,\"/\");switch(t.length%4){case 0:break;case 2:t+=\"==\";break;case 3:t+=\"=\";break;default:throw\"Illegal base64url string!\"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=\"0\"+t),\"%\"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,r){if(\"string\"!=typeof e)throw new n(\"Invalid token specified\");var o=!0===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(\".\")[o]))}catch(e){throw new n(\"Invalid token specified: \"+e.message)}}n.prototype=new Error,n.prototype.name=\"InvalidTokenError\";export default o;export{n as InvalidTokenError};\n//# sourceMappingURL=jwt-decode.esm.js.map\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","import e from\"jwt-decode\";import t from\"lodash.get\";var n={exchange:\"/v1/auth/accesskey/exchange\"},s={verify:\"/v1/auth/otp/verify\",signIn:\"/v1/auth/otp/signin\",signUp:\"/v1/auth/otp/signup\",update:{email:\"/v1/auth/otp/update/email\",phone:\"/v1/auth/otp/update/phone\"},signUpOrIn:\"/v1/auth/otp/signup-in\"},a={verify:\"/v1/auth/magiclink/verify\",signIn:\"/v1/auth/magiclink/signin\",signUp:\"/v1/auth/magiclink/signup\",update:{email:\"/v1/auth/magiclink/update/email\",phone:\"/v1/auth/magiclink/update/phone\"},signUpOrIn:\"/v1/auth/magiclink/signup-in\"},i={verify:\"/v1/auth/enchantedlink/verify\",signIn:\"/v1/auth/enchantedlink/signin\",signUp:\"/v1/auth/enchantedlink/signup\",session:\"/v1/auth/enchantedlink/pending-session\",update:{email:\"/v1/auth/enchantedlink/update/email\"},signUpOrIn:\"/v1/auth/enchantedlink/signup-in\"},o={start:\"/v1/auth/oauth/authorize\",exchange:\"/v1/auth/oauth/exchange\"},r={start:\"/v1/auth/saml/authorize\",exchange:\"/v1/auth/saml/exchange\"},u={verify:\"/v1/auth/totp/verify\",signUp:\"/v1/auth/totp/signup\",update:\"/v1/user/totp/update\"},p={signUp:{start:\"/v1/auth/webauthn/signup/start\",finish:\"/v1/auth/webauthn/signup/finish\"},signIn:{start:\"/v1/auth/webauthn/signin/start\",finish:\"/v1/auth/webauthn/signin/finish\"},signUpOrIn:{start:\"/v1/auth/webauthn/signup-in/start\"},update:{start:\"v1/auth/webauthn/update/start\",finish:\"/v1/auth/webauthn/update/finish\"}},d=\"/v1/auth/refresh\",c=\"/v1/auth/logout\",l=\"/v1/auth/logoutall\",g=\"/v1/auth/me\",h={start:\"/v1/flow/start\",next:\"/v1/flow/next\"};const m=()=>{const e={};return{headers(t){const n=\"function\"==typeof t.entries?Object.fromEntries(t.entries()):t;return e.Headers=JSON.stringify(n),this},body(t){return e.Body=t,this},url(t){return e.Url=t.toString(),this},method(t){return e.Method=t,this},title(t){return e.Title=t,this},status(t){return e.Status=t,this},build:()=>Object.keys(e).flatMap((t=>e[t]?[`${\"Title\"!==t?`${t}: `:\"\"}${e[t]}`]:[])).join(\"\\n\")}},v=(e,t)=>{const n=t||fetch;if(!n)throw new Error(\"fetch is not defined\");return e?async(...t)=>{e.log((e=>m().title(\"Request\").url(e[0]).method(e[1].method).headers(e[1].headers).body(e[1].body).build())(t));const s=await n(...t);return e[s.ok?\"log\":\"error\"](await(async e=>{const t=await(e.clone?e.clone().text():e.text());return e.text=()=>Promise.resolve(t),e.json=()=>Promise.resolve(JSON.parse(t)),m().title(\"Response\").url(e.url.toString()).status(`${e.status} ${e.statusText}`).headers(e.headers).body(t).build()})(s)),s}:n};var f;!function(e){e.get=\"GET\",e.delete=\"DELETE\",e.post=\"POST\",e.put=\"PUT\"}(f||(f={}));const I=(...e)=>new Headers(e.reduce(((e,t)=>{const n=(e=>Array.isArray(e)?e:e instanceof Headers?Array.from(e.entries()):e?Object.entries(e):[])(t);return n.reduce(((t,[n,s])=>(e[n]=s,e)),e),e}),{})),y=e=>void 0===e?void 0:JSON.stringify(e),k=(e,t=\"\")=>{let n=e;return t&&(n=n+\":\"+t),{Authorization:`Bearer ${n}`}},b=({baseUrl:e,projectId:t,baseConfig:n,logger:s,hooks:a,cookiePolicy:i})=>{const o=v(s),r=async s=>{const r=(null==a?void 0:a.beforeRequest)?a.beforeRequest(s):s,{path:u,body:p,headers:d,queryParams:c,method:l,token:g}=r,h=await o((({path:e,baseUrl:t,queryParams:n})=>{const s=new URL(e,t);return n&&(s.search=new URLSearchParams(n).toString()),s})({path:u,baseUrl:e,queryParams:c}),{headers:I(k(t,g),{\"x-descope-sdk-name\":\"core-js\",\"x-descope-sdk-version\":\"0.0.41-alpha.31\"},(null==n?void 0:n.baseHeaders)||{},d),method:l,body:y(p),credentials:i||\"include\"});return(null==a?void 0:a.afterRequest)&&a.afterRequest(s,null==h?void 0:h.clone()),h};return{get:(e,{headers:t,queryParams:n,token:s}={})=>r({path:e,headers:t,queryParams:n,body:void 0,method:f.get,token:s}),post:(e,t,{headers:n,queryParams:s,token:a}={})=>r({path:e,headers:n,queryParams:s,body:t,method:f.post,token:a}),put:(e,t,{headers:n,queryParams:s,token:a}={})=>r({path:e,headers:n,queryParams:s,body:t,method:f.put,token:a}),delete:(e,t,{headers:n,queryParams:s,token:a}={})=>r({path:e,headers:n,queryParams:s,body:t,method:f.delete,token:a})}};function O(e,t,n){var s;let a=x(e);t&&(a=null===(s=a.tenants)||void 0===s?void 0:s[t]);const i=a[n];return Array.isArray(i)?i:[]}function x(t){if(\"string\"!=typeof t||!t)throw new Error(\"Invalid token provided\");return e(t)}function w(e){const{exp:t}=x(e);return(new Date).getTime()/1e3>t}function U(e,t){return O(e,t,\"permissions\")}function j(e,t){return O(e,t,\"roles\")}const P=(...e)=>e.join(\"/\").replace(/\\/{2,}/g,\"/\");async function R(e,t){const n=await e,s={code:n.status,ok:n.ok,response:n},a=await n.clone().json();return n.ok?s.data=t?t(a):a:s.error=a,s}const q=(e,t)=>(n=t)=>t=>!e(t)&&n.replace(\"{val}\",t),$=(...e)=>({validate:t=>(e.forEach((e=>{const n=e(t);if(n)throw new Error(n)})),!0)}),M=e=>t=>e.test(t),E=M(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/),S=M(/^\\+[1-9]{1}[0-9]{3,14}$/),A=q(E,'\"{val}\" is not a valid email'),T=q(S,'\"{val}\" is not a valid phone number'),L=q((z=1,e=>e.length>=z),\"Minimum length is 1\");var z;const J=q((e=>\"string\"==typeof e),\"Input is not a string\"),H=(...e)=>t=>(...n)=>(e.forEach(((e,t)=>$(...e).validate(n[t]))),t(...n)),D=e=>[J(`\"${e}\" must be a string`),L(`\"${e}\" must not be empty`)],N=e=>[J(`\"${e}\" must be a string`),A()],Z=e=>[J(`\"${e}\" must be a string`),T()],B=H(D(\"accessKey\")),C=e=>({exchange:B((t=>R(e.post(n.exchange,{},{token:t}))))});var K,F,G,_,Q;!function(e){e.sms=\"sms\",e.whatsapp=\"whatsapp\"}(K||(K={})),function(e){e.email=\"email\",e.sms=\"sms\",e.whatsapp=\"whatsapp\"}(F||(F={})),function(e){e.waiting=\"waiting\",e.running=\"running\",e.completed=\"completed\",e.failed=\"failed\"}(G||(G={})),function(e){e.signUp=\"signup\",e.signIn=\"signin\",e.verify=\"verify\"}(_||(_={})),function(e){e.signUp=\"signup\",e.signIn=\"signin\",e.verify=\"verify\",e.updatePhone=\"updatePhone\"}(Q||(Q={}));const V=D(\"identifier\"),W=H(V,D(\"code\")),X=H(V),Y=H(V,Z(\"phone\")),ee=H(V,N(\"email\")),te=e=>({verify:Object.keys(F).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:W(((t,a)=>R(e.post(P(s.verify,n),{code:a,externalId:t}))))})),{}),signIn:Object.keys(F).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:X(((t,a,i)=>R(e.post(P(s.signIn,n),{externalId:t,loginOptions:a},{token:i}))))})),{}),signUp:Object.keys(F).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:X(((t,a)=>R(e.post(P(s.signUp,n),{externalId:t,user:a}))))})),{}),signUpOrIn:Object.keys(F).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:X((t=>R(e.post(P(s.signUpOrIn,n),{externalId:t}))))})),{}),update:{email:ee(((t,n,a)=>R(e.post(s.update.email,{externalId:t,email:n},{token:a})))),phone:Object.keys(K).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:Y(((t,a,i)=>R(e.post(P(s.update.phone,n),{externalId:t,phone:a},{token:i}))))})),{})}}),ne=D(\"identifier\"),se=D(\"uri\"),ae=H(D(\"token\")),ie=H(ne,se),oe=H(ne,Z(\"phone\"),se),re=H(ne,N(\"email\"),se),ue=e=>({verify:ae((t=>R(e.post(a.verify,{token:t})))),signIn:Object.keys(F).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:ie(((t,s,i,o)=>R(e.post(P(a.signIn,n),{externalId:t,URI:s,loginOptions:i},{token:o}))))})),{}),signUp:Object.keys(F).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:ie(((t,s,i)=>R(e.post(P(a.signUp,n),{externalId:t,URI:s,user:i}))))})),{}),signUpOrIn:Object.keys(F).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:ie(((t,s)=>R(e.post(P(a.signUpOrIn,n),{externalId:t,URI:s}))))})),{}),update:{email:re(((t,n,s,i)=>R(e.post(a.update.email,{externalId:t,email:n,URI:s},{token:i})))),phone:Object.keys(K).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:oe(((t,s,i,o)=>R(e.post(P(a.update.phone,n),{externalId:t,phone:s,URI:i},{token:o}))))})),{})}}),pe=D(\"identifier\"),de=D(\"uri\"),ce=H(D(\"token\")),le=H(pe,de),ge=H(D(\"pendingRef\")),he=H(pe,N(\"email\"),de),me=e=>({verify:ce((t=>R(e.post(i.verify,{token:t})))),signIn:le(((t,n,s,a)=>R(e.post(P(i.signIn,F.email),{externalId:t,URI:n,loginOptions:s},{token:a})))),signUpOrIn:le(((t,n)=>R(e.post(P(i.signUpOrIn,F.email),{externalId:t,URI:n})))),signUp:le(((t,n,s)=>R(e.post(P(i.signUp,F.email),{externalId:t,URI:n,user:s})))),waitForSession:ge(((t,n)=>new Promise((s=>{const{pollingIntervalMs:a,timeoutMs:o}=(({pollingIntervalMs:e=1e3,timeoutMs:t=6e5}={})=>({pollingIntervalMs:Math.max(e||1e3,1e3),timeoutMs:Math.min(t||6e5,6e5)}))(n);let r;const u=setInterval((async()=>{const n=await e.post(i.session,{pendingRef:t});n.ok&&(clearInterval(u),r&&clearTimeout(r),s(R(Promise.resolve(n))))}),a);r=setTimeout((()=>{s({error:{message:`Session polling timeout exceeded: ${o}ms`,code:\"0\"},ok:!1}),clearInterval(u)}),o)})))),update:{email:he(((t,n,s,a)=>R(e.post(i.update.email,{externalId:t,email:n,URI:s},{token:a}))))}});var ve;!function(e){e.facebook=\"facebook\",e.github=\"github\",e.google=\"google\",e.microsoft=\"microsoft\",e.gitlab=\"gitlab\",e.apple=\"apple\"}(ve||(ve={}));const fe=H(D(\"code\")),Ie=e=>({start:Object.keys(ve).reduce(((t,n)=>Object.assign(Object.assign({},t),{[n]:async(t,{redirect:s=!1}={},a,i)=>{const r=await e.post(o.start,a||{},{queryParams:Object.assign({provider:n},t&&{redirectURL:t}),token:i});if(!s||!r.ok)return R(Promise.resolve(r));const{url:u}=await r.json();window.location.href=u}})),{}),exchange:fe((t=>R(e.post(o.exchange,{code:t}))))}),ye=H(D(\"flowId\")),ke=H(D(\"executionId\"),D(\"stepId\"),D(\"interactionId\")),be=e=>({start:ye(((t,n)=>R(e.post(h.start,{flowId:t,options:n})))),next:ke(((t,n,s,a)=>R(e.post(h.next,{executionId:t,stepId:n,interactionId:s,input:a}))))}),Oe=H(D(\"tenant\")),xe=H(D(\"code\")),we=e=>({start:Oe((async(t,n,{redirect:s=!1}={},a,i)=>{const o=await e.post(r.start,a||{},{queryParams:{tenant:t,redirectURL:n},token:i});if(!s||!o.ok)return R(Promise.resolve(o));const{url:u}=await o.json();window.location.href=u})),exchange:xe((t=>R(e.post(r.exchange,{code:t}))))}),Ue=D(\"identifier\"),je=H(Ue,D(\"code\")),Pe=H(Ue),Re=H(Ue),qe=e=>({signUp:Pe(((t,n)=>R(e.post(u.signUp,{externalId:t,user:n})))),verify:je(((t,n,s,a)=>R(e.post(u.verify,{externalId:t,code:n,loginOptions:s},{token:a})))),update:Re(((t,n)=>R(e.post(u.update,{externalId:t},{token:n}))))}),$e=D(\"identifier\"),Me=D(\"origin\"),Ee=H($e,Me,D(\"name\")),Se=H($e,Me),Ae=H($e,Me,D(\"token\")),Te=H(D(\"transactionId\"),D(\"response\")),Le=e=>({signUp:{start:Ee(((t,n,s)=>R(e.post(p.signUp.start,{user:{externalId:t,name:s},origin:n})))),finish:Te(((t,n)=>R(e.post(p.signUp.finish,{transactionId:t,response:n}))))},signIn:{start:Se(((t,n,s,a)=>R(e.post(p.signIn.start,{externalId:t,origin:n,loginOptions:s},{token:a})))),finish:Te(((t,n)=>R(e.post(p.signIn.finish,{transactionId:t,response:n}))))},signUpOrIn:{start:Se(((t,n)=>R(e.post(p.signUpOrIn.start,{externalId:t,origin:n}))))},update:{start:Ae(((t,n,s)=>R(e.post(p.update.start,{externalId:t,origin:n},{token:s})))),finish:Te(((t,n)=>R(e.post(p.update.finish,{transactionId:t,response:n}))))}}),ze=H(D(\"token\"));var Je,He;const De=H([(Je=\"projectId\",He=D(\"projectId\"),q(((e,n)=>s=>$(...n).validate(t(s,e)))(Je,He))())])((({projectId:e,logger:t,baseUrl:n,hooks:s,cookiePolicy:a})=>{return i=b({baseUrl:n||\"https://api.descope.com\",projectId:e,logger:t,hooks:s,cookiePolicy:a}),{accessKey:C(i),otp:te(i),magicLink:ue(i),enchantedLink:me(i),oauth:Ie(i),saml:we(i),totp:qe(i),webauthn:Le(i),flow:be(i),refresh:e=>R(i.post(d,{},{token:e})),logout:e=>R(i.post(c,{},{token:e})),logoutAll:e=>R(i.post(l,{},{token:e})),me:e=>R(i.get(g,{token:e})),isJwtExpired:ze(w),getJwtPermissions:ze(U),getJwtRoles:ze(j),httpClient:i};var i}));De.DeliveryMethods=F;export{De as default,R as transformResponse};\n//# sourceMappingURL=index.esm.js.map\n","import digest from '../runtime/digest.js';\nexport const encoder = new TextEncoder();\nexport const decoder = new TextDecoder();\nconst MAX_INT32 = 2 ** 32;\nexport function concat(...buffers) {\n const size = buffers.reduce((acc, { length }) => acc + length, 0);\n const buf = new Uint8Array(size);\n let i = 0;\n buffers.forEach((buffer) => {\n buf.set(buffer, i);\n i += buffer.length;\n });\n return buf;\n}\nexport function p2s(alg, p2sInput) {\n return concat(encoder.encode(alg), new Uint8Array([0]), p2sInput);\n}\nfunction writeUInt32BE(buf, value, offset) {\n if (value < 0 || value >= MAX_INT32) {\n throw new RangeError(`value must be >= 0 and <= ${MAX_INT32 - 1}. Received ${value}`);\n }\n buf.set([value >>> 24, value >>> 16, value >>> 8, value & 0xff], offset);\n}\nexport function uint64be(value) {\n const high = Math.floor(value / MAX_INT32);\n const low = value % MAX_INT32;\n const buf = new Uint8Array(8);\n writeUInt32BE(buf, high, 0);\n writeUInt32BE(buf, low, 4);\n return buf;\n}\nexport function uint32be(value) {\n const buf = new Uint8Array(4);\n writeUInt32BE(buf, value);\n return buf;\n}\nexport function lengthAndInput(input) {\n return concat(uint32be(input.length), input);\n}\nexport async function concatKdf(secret, bits, value) {\n const iterations = Math.ceil((bits >> 3) / 32);\n const res = new Uint8Array(iterations * 32);\n for (let iter = 0; iter < iterations; iter++) {\n const buf = new Uint8Array(4 + secret.length + value.length);\n buf.set(uint32be(iter + 1));\n buf.set(secret, 4);\n buf.set(value, 4 + secret.length);\n res.set(await digest('sha256', buf), iter * 32);\n }\n return res.slice(0, bits >> 3);\n}\n","import { Buffer } from 'buffer';\nimport { decoder } from '../lib/buffer_utils.js';\nlet encode;\nfunction normalize(input) {\n let encoded = input;\n if (encoded instanceof Uint8Array) {\n encoded = decoder.decode(encoded);\n }\n return encoded;\n}\nif (Buffer.isEncoding('base64url')) {\n encode = (input) => Buffer.from(input).toString('base64url');\n}\nelse {\n encode = (input) => Buffer.from(input).toString('base64').replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\nexport const decodeBase64 = (input) => Buffer.from(input, 'base64');\nexport const encodeBase64 = (input) => Buffer.from(input).toString('base64');\nexport { encode };\nexport const decode = (input) => Buffer.from(normalize(input), 'base64');\n","export class JOSEError extends Error {\n constructor(message) {\n var _a;\n super(message);\n this.code = 'ERR_JOSE_GENERIC';\n this.name = this.constructor.name;\n (_a = Error.captureStackTrace) === null || _a === void 0 ? void 0 : _a.call(Error, this, this.constructor);\n }\n static get code() {\n return 'ERR_JOSE_GENERIC';\n }\n}\nexport class JWTClaimValidationFailed extends JOSEError {\n constructor(message, claim = 'unspecified', reason = 'unspecified') {\n super(message);\n this.code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n this.claim = claim;\n this.reason = reason;\n }\n static get code() {\n return 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n }\n}\nexport class JWTExpired extends JOSEError {\n constructor(message, claim = 'unspecified', reason = 'unspecified') {\n super(message);\n this.code = 'ERR_JWT_EXPIRED';\n this.claim = claim;\n this.reason = reason;\n }\n static get code() {\n return 'ERR_JWT_EXPIRED';\n }\n}\nexport class JOSEAlgNotAllowed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n }\n static get code() {\n return 'ERR_JOSE_ALG_NOT_ALLOWED';\n }\n}\nexport class JOSENotSupported extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JOSE_NOT_SUPPORTED';\n }\n static get code() {\n return 'ERR_JOSE_NOT_SUPPORTED';\n }\n}\nexport class JWEDecryptionFailed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWE_DECRYPTION_FAILED';\n this.message = 'decryption operation failed';\n }\n static get code() {\n return 'ERR_JWE_DECRYPTION_FAILED';\n }\n}\nexport class JWEInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWE_INVALID';\n }\n static get code() {\n return 'ERR_JWE_INVALID';\n }\n}\nexport class JWSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWS_INVALID';\n }\n static get code() {\n return 'ERR_JWS_INVALID';\n }\n}\nexport class JWTInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWT_INVALID';\n }\n static get code() {\n return 'ERR_JWT_INVALID';\n }\n}\nexport class JWKInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWK_INVALID';\n }\n static get code() {\n return 'ERR_JWK_INVALID';\n }\n}\nexport class JWKSInvalid extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_INVALID';\n }\n static get code() {\n return 'ERR_JWKS_INVALID';\n }\n}\nexport class JWKSNoMatchingKey extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_NO_MATCHING_KEY';\n this.message = 'no applicable key found in the JSON Web Key Set';\n }\n static get code() {\n return 'ERR_JWKS_NO_MATCHING_KEY';\n }\n}\nexport class JWKSMultipleMatchingKeys extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n this.message = 'multiple matching keys found in the JSON Web Key Set';\n }\n static get code() {\n return 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n }\n}\nexport class JWKSTimeout extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWKS_TIMEOUT';\n this.message = 'request timed out';\n }\n static get code() {\n return 'ERR_JWKS_TIMEOUT';\n }\n}\nexport class JWSSignatureVerificationFailed extends JOSEError {\n constructor() {\n super(...arguments);\n this.code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n this.message = 'signature verification failed';\n }\n static get code() {\n return 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n }\n}\n","import { KeyObject } from 'crypto';\nimport * as util from 'util';\nexport default util.types.isKeyObject\n ? (obj) => util.types.isKeyObject(obj)\n : (obj) => obj != null && obj instanceof KeyObject;\n","import * as crypto from 'crypto';\nimport * as util from 'util';\nconst webcrypto = crypto.webcrypto;\nexport default webcrypto;\nexport const isCryptoKey = util.types.isCryptoKey\n ? (key) => util.types.isCryptoKey(key)\n :\n (key) => false;\n","import { isCloudflareWorkers } from '../runtime/env.js';\nfunction unusable(name, prop = 'algorithm.name') {\n return new TypeError(`CryptoKey does not support this operation, its ${prop} must be ${name}`);\n}\nfunction isAlgorithm(algorithm, name) {\n return algorithm.name === name;\n}\nfunction getHashLength(hash) {\n return parseInt(hash.name.slice(4), 10);\n}\nfunction getNamedCurve(alg) {\n switch (alg) {\n case 'ES256':\n return 'P-256';\n case 'ES384':\n return 'P-384';\n case 'ES512':\n return 'P-521';\n default:\n throw new Error('unreachable');\n }\n}\nfunction checkUsage(key, usages) {\n if (usages.length && !usages.some((expected) => key.usages.includes(expected))) {\n let msg = 'CryptoKey does not support this operation, its usages must include ';\n if (usages.length > 2) {\n const last = usages.pop();\n msg += `one of ${usages.join(', ')}, or ${last}.`;\n }\n else if (usages.length === 2) {\n msg += `one of ${usages[0]} or ${usages[1]}.`;\n }\n else {\n msg += `${usages[0]}.`;\n }\n throw new TypeError(msg);\n }\n}\nexport function checkSigCryptoKey(key, alg, ...usages) {\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512': {\n if (!isAlgorithm(key.algorithm, 'HMAC'))\n throw unusable('HMAC');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'RS256':\n case 'RS384':\n case 'RS512': {\n if (!isAlgorithm(key.algorithm, 'RSASSA-PKCS1-v1_5'))\n throw unusable('RSASSA-PKCS1-v1_5');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case 'PS256':\n case 'PS384':\n case 'PS512': {\n if (!isAlgorithm(key.algorithm, 'RSA-PSS'))\n throw unusable('RSA-PSS');\n const expected = parseInt(alg.slice(2), 10);\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n case isCloudflareWorkers() && 'EdDSA': {\n if (!isAlgorithm(key.algorithm, 'NODE-ED25519'))\n throw unusable('NODE-ED25519');\n break;\n }\n case 'EdDSA': {\n if (key.algorithm.name !== 'Ed25519' && key.algorithm.name !== 'Ed448') {\n throw unusable('Ed25519 or Ed448');\n }\n break;\n }\n case 'ES256':\n case 'ES384':\n case 'ES512': {\n if (!isAlgorithm(key.algorithm, 'ECDSA'))\n throw unusable('ECDSA');\n const expected = getNamedCurve(alg);\n const actual = key.algorithm.namedCurve;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.namedCurve');\n break;\n }\n default:\n throw new TypeError('CryptoKey does not support this operation');\n }\n checkUsage(key, usages);\n}\nexport function checkEncCryptoKey(key, alg, ...usages) {\n switch (alg) {\n case 'A128GCM':\n case 'A192GCM':\n case 'A256GCM': {\n if (!isAlgorithm(key.algorithm, 'AES-GCM'))\n throw unusable('AES-GCM');\n const expected = parseInt(alg.slice(1, 4), 10);\n const actual = key.algorithm.length;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.length');\n break;\n }\n case 'A128KW':\n case 'A192KW':\n case 'A256KW': {\n if (!isAlgorithm(key.algorithm, 'AES-KW'))\n throw unusable('AES-KW');\n const expected = parseInt(alg.slice(1, 4), 10);\n const actual = key.algorithm.length;\n if (actual !== expected)\n throw unusable(expected, 'algorithm.length');\n break;\n }\n case 'ECDH': {\n switch (key.algorithm.name) {\n case 'ECDH':\n case 'X25519':\n case 'X448':\n break;\n default:\n throw unusable('ECDH, X25519, or X448');\n }\n break;\n }\n case 'PBES2-HS256+A128KW':\n case 'PBES2-HS384+A192KW':\n case 'PBES2-HS512+A256KW':\n if (!isAlgorithm(key.algorithm, 'PBKDF2'))\n throw unusable('PBKDF2');\n break;\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512': {\n if (!isAlgorithm(key.algorithm, 'RSA-OAEP'))\n throw unusable('RSA-OAEP');\n const expected = parseInt(alg.slice(9), 10) || 1;\n const actual = getHashLength(key.algorithm.hash);\n if (actual !== expected)\n throw unusable(`SHA-${expected}`, 'algorithm.hash');\n break;\n }\n default:\n throw new TypeError('CryptoKey does not support this operation');\n }\n checkUsage(key, usages);\n}\n","export function isCloudflareWorkers() {\n return false;\n}\n","function message(msg, actual, ...types) {\n if (types.length > 2) {\n const last = types.pop();\n msg += `one of type ${types.join(', ')}, or ${last}.`;\n }\n else if (types.length === 2) {\n msg += `one of type ${types[0]} or ${types[1]}.`;\n }\n else {\n msg += `of type ${types[0]}.`;\n }\n if (actual == null) {\n msg += ` Received ${actual}`;\n }\n else if (typeof actual === 'function' && actual.name) {\n msg += ` Received function ${actual.name}`;\n }\n else if (typeof actual === 'object' && actual != null) {\n if (actual.constructor && actual.constructor.name) {\n msg += ` Received an instance of ${actual.constructor.name}`;\n }\n }\n return msg;\n}\nexport default (actual, ...types) => {\n return message('Key must be ', actual, ...types);\n};\nexport function withAlg(alg, actual, ...types) {\n return message(`Key for the ${alg} algorithm must be `, actual, ...types);\n}\n","import { isCryptoKey } from './webcrypto.js';\nimport isKeyObject from './is_key_object.js';\nexport default (key) => isKeyObject(key) || isCryptoKey(key);\nconst types = ['KeyObject'];\nif (parseInt(process.versions.node) >= 16) {\n types.push('CryptoKey');\n}\nexport { types };\n","import { promisify } from 'util';\nimport { inflateRaw as inflateRawCb, deflateRaw as deflateRawCb } from 'zlib';\nconst inflateRaw = promisify(inflateRawCb);\nconst deflateRaw = promisify(deflateRawCb);\nexport const inflate = (input) => inflateRaw(input);\nexport const deflate = (input) => deflateRaw(input);\n","function isObjectLike(value) {\n return typeof value === 'object' && value !== null;\n}\nexport default function isObject(input) {\n if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(input) === null) {\n return true;\n }\n let proto = input;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(input) === proto;\n}\n","import { Buffer } from 'buffer';\nimport { createPublicKey, KeyObject } from 'crypto';\nimport { JOSENotSupported } from '../util/errors.js';\nimport { isCryptoKey } from './webcrypto.js';\nimport isKeyObject from './is_key_object.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { types } from './is_key_like.js';\nconst p256 = Buffer.from([42, 134, 72, 206, 61, 3, 1, 7]);\nconst p384 = Buffer.from([43, 129, 4, 0, 34]);\nconst p521 = Buffer.from([43, 129, 4, 0, 35]);\nconst secp256k1 = Buffer.from([43, 129, 4, 0, 10]);\nexport const weakMap = new WeakMap();\nconst namedCurveToJOSE = (namedCurve) => {\n switch (namedCurve) {\n case 'prime256v1':\n return 'P-256';\n case 'secp384r1':\n return 'P-384';\n case 'secp521r1':\n return 'P-521';\n case 'secp256k1':\n return 'secp256k1';\n default:\n throw new JOSENotSupported('Unsupported key curve for this operation');\n }\n};\nconst getNamedCurve = (kee, raw) => {\n var _a;\n let key;\n if (isCryptoKey(kee)) {\n key = KeyObject.from(kee);\n }\n else if (isKeyObject(kee)) {\n key = kee;\n }\n else {\n throw new TypeError(invalidKeyInput(kee, ...types));\n }\n if (key.type === 'secret') {\n throw new TypeError('only \"private\" or \"public\" type keys can be used for this operation');\n }\n switch (key.asymmetricKeyType) {\n case 'ed25519':\n case 'ed448':\n return `Ed${key.asymmetricKeyType.slice(2)}`;\n case 'x25519':\n case 'x448':\n return `X${key.asymmetricKeyType.slice(1)}`;\n case 'ec': {\n if (weakMap.has(key)) {\n return weakMap.get(key);\n }\n let namedCurve = (_a = key.asymmetricKeyDetails) === null || _a === void 0 ? void 0 : _a.namedCurve;\n if (!namedCurve && key.type === 'private') {\n namedCurve = getNamedCurve(createPublicKey(key), true);\n }\n else if (!namedCurve) {\n const buf = key.export({ format: 'der', type: 'spki' });\n const i = buf[1] < 128 ? 14 : 15;\n const len = buf[i];\n const curveOid = buf.slice(i + 1, i + 1 + len);\n if (curveOid.equals(p256)) {\n namedCurve = 'prime256v1';\n }\n else if (curveOid.equals(p384)) {\n namedCurve = 'secp384r1';\n }\n else if (curveOid.equals(p521)) {\n namedCurve = 'secp521r1';\n }\n else if (curveOid.equals(secp256k1)) {\n namedCurve = 'secp256k1';\n }\n else {\n throw new JOSENotSupported('Unsupported key curve for this operation');\n }\n }\n if (raw)\n return namedCurve;\n const curve = namedCurveToJOSE(namedCurve);\n weakMap.set(key, curve);\n return curve;\n }\n default:\n throw new TypeError('Invalid asymmetric key type for this operation');\n }\n};\nexport function setCurve(keyObject, curve) {\n weakMap.set(keyObject, curve);\n}\nexport default getNamedCurve;\n","import { diffieHellman, generateKeyPair as generateKeyPairCb, KeyObject } from 'crypto';\nimport { promisify } from 'util';\nimport getNamedCurve from './get_named_curve.js';\nimport { encoder, concat, uint32be, lengthAndInput, concatKdf } from '../lib/buffer_utils.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport { isCryptoKey } from './webcrypto.js';\nimport { checkEncCryptoKey } from '../lib/crypto_key.js';\nimport isKeyObject from './is_key_object.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { types } from './is_key_like.js';\nconst generateKeyPair = promisify(generateKeyPairCb);\nexport async function deriveKey(publicKee, privateKee, algorithm, keyLength, apu = new Uint8Array(0), apv = new Uint8Array(0)) {\n let publicKey;\n if (isCryptoKey(publicKee)) {\n checkEncCryptoKey(publicKee, 'ECDH');\n publicKey = KeyObject.from(publicKee);\n }\n else if (isKeyObject(publicKee)) {\n publicKey = publicKee;\n }\n else {\n throw new TypeError(invalidKeyInput(publicKee, ...types));\n }\n let privateKey;\n if (isCryptoKey(privateKee)) {\n checkEncCryptoKey(privateKee, 'ECDH', 'deriveBits');\n privateKey = KeyObject.from(privateKee);\n }\n else if (isKeyObject(privateKee)) {\n privateKey = privateKee;\n }\n else {\n throw new TypeError(invalidKeyInput(privateKee, ...types));\n }\n const value = concat(lengthAndInput(encoder.encode(algorithm)), lengthAndInput(apu), lengthAndInput(apv), uint32be(keyLength));\n const sharedSecret = diffieHellman({ privateKey, publicKey });\n return concatKdf(sharedSecret, keyLength, value);\n}\nexport async function generateEpk(kee) {\n let key;\n if (isCryptoKey(kee)) {\n key = KeyObject.from(kee);\n }\n else if (isKeyObject(kee)) {\n key = kee;\n }\n else {\n throw new TypeError(invalidKeyInput(kee, ...types));\n }\n switch (key.asymmetricKeyType) {\n case 'x25519':\n return generateKeyPair('x25519');\n case 'x448': {\n return generateKeyPair('x448');\n }\n case 'ec': {\n const namedCurve = getNamedCurve(key);\n return generateKeyPair('ec', { namedCurve });\n }\n default:\n throw new JOSENotSupported('Invalid or unsupported EPK');\n }\n}\nexport const ecdhAllowed = (key) => ['P-256', 'P-384', 'P-521', 'X25519', 'X448'].includes(getNamedCurve(key));\n","import { promisify } from 'util';\nimport { KeyObject, pbkdf2 as pbkdf2cb } from 'crypto';\nimport random from './random.js';\nimport { p2s as concatSalt } from '../lib/buffer_utils.js';\nimport { encode as base64url } from './base64url.js';\nimport { wrap, unwrap } from './aeskw.js';\nimport checkP2s from '../lib/check_p2s.js';\nimport { isCryptoKey } from './webcrypto.js';\nimport { checkEncCryptoKey } from '../lib/crypto_key.js';\nimport isKeyObject from './is_key_object.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { types } from './is_key_like.js';\nconst pbkdf2 = promisify(pbkdf2cb);\nfunction getPassword(key, alg) {\n if (isKeyObject(key)) {\n return key.export();\n }\n if (key instanceof Uint8Array) {\n return key;\n }\n if (isCryptoKey(key)) {\n checkEncCryptoKey(key, alg, 'deriveBits', 'deriveKey');\n return KeyObject.from(key).export();\n }\n throw new TypeError(invalidKeyInput(key, ...types, 'Uint8Array'));\n}\nexport const encrypt = async (alg, key, cek, p2c = 2048, p2s = random(new Uint8Array(16))) => {\n checkP2s(p2s);\n const salt = concatSalt(alg, p2s);\n const keylen = parseInt(alg.slice(13, 16), 10) >> 3;\n const password = getPassword(key, alg);\n const derivedKey = await pbkdf2(password, salt, p2c, keylen, `sha${alg.slice(8, 11)}`);\n const encryptedKey = await wrap(alg.slice(-6), derivedKey, cek);\n return { encryptedKey, p2c, p2s: base64url(p2s) };\n};\nexport const decrypt = async (alg, key, encryptedKey, p2c, p2s) => {\n checkP2s(p2s);\n const salt = concatSalt(alg, p2s);\n const keylen = parseInt(alg.slice(13, 16), 10) >> 3;\n const password = getPassword(key, alg);\n const derivedKey = await pbkdf2(password, salt, p2c, keylen, `sha${alg.slice(8, 11)}`);\n return unwrap(alg.slice(-6), derivedKey, encryptedKey);\n};\n","export const weakMap = new WeakMap();\nconst getLength = (buf, index) => {\n let len = buf.readUInt8(1);\n if ((len & 0x80) === 0) {\n if (index === 0) {\n return len;\n }\n return getLength(buf.subarray(2 + len), index - 1);\n }\n const num = len & 0x7f;\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(2 + i);\n len |= j;\n }\n if (index === 0) {\n return len;\n }\n return getLength(buf.subarray(2 + len), index - 1);\n};\nconst getLengthOfSeqIndex = (sequence, index) => {\n const len = sequence.readUInt8(1);\n if ((len & 0x80) === 0) {\n return getLength(sequence.subarray(2), index);\n }\n const num = len & 0x7f;\n return getLength(sequence.subarray(2 + num), index);\n};\nconst getModulusLength = (key) => {\n var _a, _b;\n if (weakMap.has(key)) {\n return weakMap.get(key);\n }\n const modulusLength = (_b = (_a = key.asymmetricKeyDetails) === null || _a === void 0 ? void 0 : _a.modulusLength) !== null && _b !== void 0 ? _b : (getLengthOfSeqIndex(key.export({ format: 'der', type: 'pkcs1' }), key.type === 'private' ? 1 : 0) -\n 1) <<\n 3;\n weakMap.set(key, modulusLength);\n return modulusLength;\n};\nexport const setModulusLength = (keyObject, modulusLength) => {\n weakMap.set(keyObject, modulusLength);\n};\nexport default (key, alg) => {\n if (getModulusLength(key) < 2048) {\n throw new TypeError(`${alg} requires key modulusLength to be 2048 bits or larger`);\n }\n};\n","import { Buffer } from 'buffer';\nimport { JOSENotSupported } from '../util/errors.js';\nconst tagInteger = 0x02;\nconst tagBitStr = 0x03;\nconst tagOctStr = 0x04;\nconst tagSequence = 0x30;\nconst bZero = Buffer.from([0x00]);\nconst bTagInteger = Buffer.from([tagInteger]);\nconst bTagBitStr = Buffer.from([tagBitStr]);\nconst bTagSequence = Buffer.from([tagSequence]);\nconst bTagOctStr = Buffer.from([tagOctStr]);\nconst encodeLength = (len) => {\n if (len < 128)\n return Buffer.from([len]);\n const buffer = Buffer.alloc(5);\n buffer.writeUInt32BE(len, 1);\n let offset = 1;\n while (buffer[offset] === 0)\n offset++;\n buffer[offset - 1] = 0x80 | (5 - offset);\n return buffer.slice(offset - 1);\n};\nconst oids = new Map([\n ['P-256', Buffer.from('06 08 2A 86 48 CE 3D 03 01 07'.replace(/ /g, ''), 'hex')],\n ['secp256k1', Buffer.from('06 05 2B 81 04 00 0A'.replace(/ /g, ''), 'hex')],\n ['P-384', Buffer.from('06 05 2B 81 04 00 22'.replace(/ /g, ''), 'hex')],\n ['P-521', Buffer.from('06 05 2B 81 04 00 23'.replace(/ /g, ''), 'hex')],\n ['ecPublicKey', Buffer.from('06 07 2A 86 48 CE 3D 02 01'.replace(/ /g, ''), 'hex')],\n ['X25519', Buffer.from('06 03 2B 65 6E'.replace(/ /g, ''), 'hex')],\n ['X448', Buffer.from('06 03 2B 65 6F'.replace(/ /g, ''), 'hex')],\n ['Ed25519', Buffer.from('06 03 2B 65 70'.replace(/ /g, ''), 'hex')],\n ['Ed448', Buffer.from('06 03 2B 65 71'.replace(/ /g, ''), 'hex')],\n]);\nexport default class DumbAsn1Encoder {\n constructor() {\n this.length = 0;\n this.elements = [];\n }\n oidFor(oid) {\n const bOid = oids.get(oid);\n if (!bOid) {\n throw new JOSENotSupported('Invalid or unsupported OID');\n }\n this.elements.push(bOid);\n this.length += bOid.length;\n }\n zero() {\n this.elements.push(bTagInteger, Buffer.from([0x01]), bZero);\n this.length += 3;\n }\n one() {\n this.elements.push(bTagInteger, Buffer.from([0x01]), Buffer.from([0x01]));\n this.length += 3;\n }\n unsignedInteger(integer) {\n if (integer[0] & 0x80) {\n const len = encodeLength(integer.length + 1);\n this.elements.push(bTagInteger, len, bZero, integer);\n this.length += 2 + len.length + integer.length;\n }\n else {\n let i = 0;\n while (integer[i] === 0 && (integer[i + 1] & 0x80) === 0)\n i++;\n const len = encodeLength(integer.length - i);\n this.elements.push(bTagInteger, encodeLength(integer.length - i), integer.slice(i));\n this.length += 1 + len.length + integer.length - i;\n }\n }\n octStr(octStr) {\n const len = encodeLength(octStr.length);\n this.elements.push(bTagOctStr, encodeLength(octStr.length), octStr);\n this.length += 1 + len.length + octStr.length;\n }\n bitStr(bitS) {\n const len = encodeLength(bitS.length + 1);\n this.elements.push(bTagBitStr, encodeLength(bitS.length + 1), bZero, bitS);\n this.length += 1 + len.length + bitS.length + 1;\n }\n add(seq) {\n this.elements.push(seq);\n this.length += seq.length;\n }\n end(tag = bTagSequence) {\n const len = encodeLength(this.length);\n return Buffer.concat([tag, len, ...this.elements], 1 + len.length + this.length);\n }\n}\n","import { Buffer } from 'buffer';\nimport { createPrivateKey, createPublicKey, createSecretKey } from 'crypto';\nimport { decode as base64url } from './base64url.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport { setCurve } from './get_named_curve.js';\nimport { setModulusLength } from './check_modulus_length.js';\nimport Asn1SequenceEncoder from './asn1_sequence_encoder.js';\nconst [major, minor] = process.version\n .slice(1)\n .split('.')\n .map((str) => parseInt(str, 10));\nconst jwkImportSupported = major >= 16 || (major === 15 && minor >= 12);\nconst parse = (jwk) => {\n if (jwkImportSupported && jwk.kty !== 'oct') {\n return jwk.d\n ? createPrivateKey({ format: 'jwk', key: jwk })\n : createPublicKey({ format: 'jwk', key: jwk });\n }\n switch (jwk.kty) {\n case 'oct': {\n return createSecretKey(base64url(jwk.k));\n }\n case 'RSA': {\n const enc = new Asn1SequenceEncoder();\n const isPrivate = jwk.d !== undefined;\n const modulus = Buffer.from(jwk.n, 'base64');\n const exponent = Buffer.from(jwk.e, 'base64');\n if (isPrivate) {\n enc.zero();\n enc.unsignedInteger(modulus);\n enc.unsignedInteger(exponent);\n enc.unsignedInteger(Buffer.from(jwk.d, 'base64'));\n enc.unsignedInteger(Buffer.from(jwk.p, 'base64'));\n enc.unsignedInteger(Buffer.from(jwk.q, 'base64'));\n enc.unsignedInteger(Buffer.from(jwk.dp, 'base64'));\n enc.unsignedInteger(Buffer.from(jwk.dq, 'base64'));\n enc.unsignedInteger(Buffer.from(jwk.qi, 'base64'));\n }\n else {\n enc.unsignedInteger(modulus);\n enc.unsignedInteger(exponent);\n }\n const der = enc.end();\n const createInput = {\n key: der,\n format: 'der',\n type: 'pkcs1',\n };\n const keyObject = isPrivate ? createPrivateKey(createInput) : createPublicKey(createInput);\n setModulusLength(keyObject, modulus.length << 3);\n return keyObject;\n }\n case 'EC': {\n const enc = new Asn1SequenceEncoder();\n const isPrivate = jwk.d !== undefined;\n const pub = Buffer.concat([\n Buffer.alloc(1, 4),\n Buffer.from(jwk.x, 'base64'),\n Buffer.from(jwk.y, 'base64'),\n ]);\n if (isPrivate) {\n enc.zero();\n const enc$1 = new Asn1SequenceEncoder();\n enc$1.oidFor('ecPublicKey');\n enc$1.oidFor(jwk.crv);\n enc.add(enc$1.end());\n const enc$2 = new Asn1SequenceEncoder();\n enc$2.one();\n enc$2.octStr(Buffer.from(jwk.d, 'base64'));\n const enc$3 = new Asn1SequenceEncoder();\n enc$3.bitStr(pub);\n const f2 = enc$3.end(Buffer.from([0xa1]));\n enc$2.add(f2);\n const f = enc$2.end();\n const enc$4 = new Asn1SequenceEncoder();\n enc$4.add(f);\n const f3 = enc$4.end(Buffer.from([0x04]));\n enc.add(f3);\n const der = enc.end();\n const keyObject = createPrivateKey({ key: der, format: 'der', type: 'pkcs8' });\n setCurve(keyObject, jwk.crv);\n return keyObject;\n }\n const enc$1 = new Asn1SequenceEncoder();\n enc$1.oidFor('ecPublicKey');\n enc$1.oidFor(jwk.crv);\n enc.add(enc$1.end());\n enc.bitStr(pub);\n const der = enc.end();\n const keyObject = createPublicKey({ key: der, format: 'der', type: 'spki' });\n setCurve(keyObject, jwk.crv);\n return keyObject;\n }\n case 'OKP': {\n const enc = new Asn1SequenceEncoder();\n const isPrivate = jwk.d !== undefined;\n if (isPrivate) {\n enc.zero();\n const enc$1 = new Asn1SequenceEncoder();\n enc$1.oidFor(jwk.crv);\n enc.add(enc$1.end());\n const enc$2 = new Asn1SequenceEncoder();\n enc$2.octStr(Buffer.from(jwk.d, 'base64'));\n const f = enc$2.end(Buffer.from([0x04]));\n enc.add(f);\n const der = enc.end();\n return createPrivateKey({ key: der, format: 'der', type: 'pkcs8' });\n }\n const enc$1 = new Asn1SequenceEncoder();\n enc$1.oidFor(jwk.crv);\n enc.add(enc$1.end());\n enc.bitStr(Buffer.from(jwk.x, 'base64'));\n const der = enc.end();\n return createPublicKey({ key: der, format: 'der', type: 'spki' });\n }\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"kty\" (Key Type) Parameter value');\n }\n};\nexport default parse;\n","import { decode as decodeBase64URL, encodeBase64, decodeBase64 } from '../runtime/base64url.js';\nimport { fromSPKI as importPublic } from '../runtime/asn1.js';\nimport { fromPKCS8 as importPrivate } from '../runtime/asn1.js';\nimport asKeyObject from '../runtime/jwk_to_key.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport formatPEM from '../lib/format_pem.js';\nimport isObject from '../lib/is_object.js';\nfunction getElement(seq) {\n let result = [];\n let next = 0;\n while (next < seq.length) {\n let nextPart = parseElement(seq.subarray(next));\n result.push(nextPart);\n next += nextPart.byteLength;\n }\n return result;\n}\nfunction parseElement(bytes) {\n let position = 0;\n let tag = bytes[0] & 0x1f;\n position++;\n if (tag === 0x1f) {\n tag = 0;\n while (bytes[position] >= 0x80) {\n tag = tag * 128 + bytes[position] - 0x80;\n position++;\n }\n tag = tag * 128 + bytes[position] - 0x80;\n position++;\n }\n let length = 0;\n if (bytes[position] < 0x80) {\n length = bytes[position];\n position++;\n }\n else if (length === 0x80) {\n length = 0;\n while (bytes[position + length] !== 0 || bytes[position + length + 1] !== 0) {\n if (length > bytes.byteLength) {\n throw new TypeError('invalid indefinite form length');\n }\n length++;\n }\n const byteLength = position + length + 2;\n return {\n byteLength,\n contents: bytes.subarray(position, position + length),\n raw: bytes.subarray(0, byteLength),\n };\n }\n else {\n let numberOfDigits = bytes[position] & 0x7f;\n position++;\n length = 0;\n for (let i = 0; i < numberOfDigits; i++) {\n length = length * 256 + bytes[position];\n position++;\n }\n }\n const byteLength = position + length;\n return {\n byteLength,\n contents: bytes.subarray(position, byteLength),\n raw: bytes.subarray(0, byteLength),\n };\n}\nfunction spkiFromX509(buf) {\n const tbsCertificate = getElement(getElement(parseElement(buf).contents)[0].contents);\n return encodeBase64(tbsCertificate[tbsCertificate[0].raw[0] === 0xa0 ? 6 : 5].raw);\n}\nfunction getSPKI(x509) {\n const pem = x509.replace(/(?:-----(?:BEGIN|END) CERTIFICATE-----|\\s)/g, '');\n const raw = decodeBase64(pem);\n return formatPEM(spkiFromX509(raw), 'PUBLIC KEY');\n}\nexport async function importSPKI(spki, alg, options) {\n if (typeof spki !== 'string' || spki.indexOf('-----BEGIN PUBLIC KEY-----') !== 0) {\n throw new TypeError('\"spki\" must be SPKI formatted string');\n }\n return importPublic(spki, alg, options);\n}\nexport async function importX509(x509, alg, options) {\n if (typeof x509 !== 'string' || x509.indexOf('-----BEGIN CERTIFICATE-----') !== 0) {\n throw new TypeError('\"x509\" must be X.509 formatted string');\n }\n let spki;\n try {\n spki = getSPKI(x509);\n }\n catch (cause) {\n throw new TypeError('failed to parse the X.509 certificate', { cause });\n }\n return importPublic(spki, alg, options);\n}\nexport async function importPKCS8(pkcs8, alg, options) {\n if (typeof pkcs8 !== 'string' || pkcs8.indexOf('-----BEGIN PRIVATE KEY-----') !== 0) {\n throw new TypeError('\"pkcs8\" must be PKCS#8 formatted string');\n }\n return importPrivate(pkcs8, alg, options);\n}\nexport async function importJWK(jwk, alg, octAsKeyObject) {\n var _a;\n if (!isObject(jwk)) {\n throw new TypeError('JWK must be an object');\n }\n alg || (alg = jwk.alg);\n if (typeof alg !== 'string' || !alg) {\n throw new TypeError('\"alg\" argument is required when \"jwk.alg\" is not present');\n }\n switch (jwk.kty) {\n case 'oct':\n if (typeof jwk.k !== 'string' || !jwk.k) {\n throw new TypeError('missing \"k\" (Key Value) Parameter value');\n }\n octAsKeyObject !== null && octAsKeyObject !== void 0 ? octAsKeyObject : (octAsKeyObject = jwk.ext !== true);\n if (octAsKeyObject) {\n return asKeyObject({ ...jwk, alg, ext: (_a = jwk.ext) !== null && _a !== void 0 ? _a : false });\n }\n return decodeBase64URL(jwk.k);\n case 'RSA':\n if (jwk.oth !== undefined) {\n throw new JOSENotSupported('RSA JWK \"oth\" (Other Primes Info) Parameter value is not supported');\n }\n case 'EC':\n case 'OKP':\n return asKeyObject({ ...jwk, alg });\n default:\n throw new JOSENotSupported('Unsupported \"kty\" (Key Type) Parameter value');\n }\n}\n","import { withAlg as invalidKeyInput } from './invalid_key_input.js';\nimport isKeyLike, { types } from '../runtime/is_key_like.js';\nconst symmetricTypeCheck = (alg, key) => {\n if (key instanceof Uint8Array)\n return;\n if (!isKeyLike(key)) {\n throw new TypeError(invalidKeyInput(alg, key, ...types, 'Uint8Array'));\n }\n if (key.type !== 'secret') {\n throw new TypeError(`${types.join(' or ')} instances for symmetric algorithms must be of type \"secret\"`);\n }\n};\nconst asymmetricTypeCheck = (alg, key, usage) => {\n if (!isKeyLike(key)) {\n throw new TypeError(invalidKeyInput(alg, key, ...types));\n }\n if (key.type === 'secret') {\n throw new TypeError(`${types.join(' or ')} instances for asymmetric algorithms must not be of type \"secret\"`);\n }\n if (usage === 'sign' && key.type === 'public') {\n throw new TypeError(`${types.join(' or ')} instances for asymmetric algorithm signing must be of type \"private\"`);\n }\n if (usage === 'decrypt' && key.type === 'public') {\n throw new TypeError(`${types.join(' or ')} instances for asymmetric algorithm decryption must be of type \"private\"`);\n }\n if (key.algorithm && usage === 'verify' && key.type === 'private') {\n throw new TypeError(`${types.join(' or ')} instances for asymmetric algorithm verifying must be of type \"public\"`);\n }\n if (key.algorithm && usage === 'encrypt' && key.type === 'private') {\n throw new TypeError(`${types.join(' or ')} instances for asymmetric algorithm encryption must be of type \"public\"`);\n }\n};\nconst checkKeyType = (alg, key, usage) => {\n const symmetric = alg.startsWith('HS') ||\n alg === 'dir' ||\n alg.startsWith('PBES2') ||\n /^A\\d{3}(?:GCM)?KW$/.test(alg);\n if (symmetric) {\n symmetricTypeCheck(alg, key);\n }\n else {\n asymmetricTypeCheck(alg, key, usage);\n }\n};\nexport default checkKeyType;\n","import { JOSENotSupported } from '../util/errors.js';\nexport default function dsaDigest(alg) {\n switch (alg) {\n case 'PS256':\n case 'RS256':\n case 'ES256':\n case 'ES256K':\n return 'sha256';\n case 'PS384':\n case 'RS384':\n case 'ES384':\n return 'sha384';\n case 'PS512':\n case 'RS512':\n case 'ES512':\n return 'sha512';\n case 'EdDSA':\n return undefined;\n default:\n throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n }\n}\n","import { KeyObject, createPublicKey } from 'crypto';\nimport { encode as base64url } from './base64url.js';\nimport Asn1SequenceDecoder from './asn1_sequence_decoder.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport getNamedCurve from './get_named_curve.js';\nimport { isCryptoKey } from './webcrypto.js';\nimport isKeyObject from './is_key_object.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { types } from './is_key_like.js';\nconst [major, minor] = process.version\n .slice(1)\n .split('.')\n .map((str) => parseInt(str, 10));\nconst jwkExportSupported = major >= 16 || (major === 15 && minor >= 9);\nconst keyToJWK = (key) => {\n let keyObject;\n if (isCryptoKey(key)) {\n if (!key.extractable) {\n throw new TypeError('CryptoKey is not extractable');\n }\n keyObject = KeyObject.from(key);\n }\n else if (isKeyObject(key)) {\n keyObject = key;\n }\n else if (key instanceof Uint8Array) {\n return {\n kty: 'oct',\n k: base64url(key),\n };\n }\n else {\n throw new TypeError(invalidKeyInput(key, ...types, 'Uint8Array'));\n }\n if (jwkExportSupported) {\n if (keyObject.type !== 'secret' &&\n !['rsa', 'ec', 'ed25519', 'x25519', 'ed448', 'x448'].includes(keyObject.asymmetricKeyType)) {\n throw new JOSENotSupported('Unsupported key asymmetricKeyType');\n }\n return keyObject.export({ format: 'jwk' });\n }\n switch (keyObject.type) {\n case 'secret':\n return {\n kty: 'oct',\n k: base64url(keyObject.export()),\n };\n case 'private':\n case 'public': {\n switch (keyObject.asymmetricKeyType) {\n case 'rsa': {\n const der = keyObject.export({ format: 'der', type: 'pkcs1' });\n const dec = new Asn1SequenceDecoder(der);\n if (keyObject.type === 'private') {\n dec.unsignedInteger();\n }\n const n = base64url(dec.unsignedInteger());\n const e = base64url(dec.unsignedInteger());\n let jwk;\n if (keyObject.type === 'private') {\n jwk = {\n d: base64url(dec.unsignedInteger()),\n p: base64url(dec.unsignedInteger()),\n q: base64url(dec.unsignedInteger()),\n dp: base64url(dec.unsignedInteger()),\n dq: base64url(dec.unsignedInteger()),\n qi: base64url(dec.unsignedInteger()),\n };\n }\n dec.end();\n return { kty: 'RSA', n, e, ...jwk };\n }\n case 'ec': {\n const crv = getNamedCurve(keyObject);\n let len;\n let offset;\n let correction;\n switch (crv) {\n case 'secp256k1':\n len = 64;\n offset = 31 + 2;\n correction = -1;\n break;\n case 'P-256':\n len = 64;\n offset = 34 + 2;\n correction = -1;\n break;\n case 'P-384':\n len = 96;\n offset = 33 + 2;\n correction = -3;\n break;\n case 'P-521':\n len = 132;\n offset = 33 + 2;\n correction = -3;\n break;\n default:\n throw new JOSENotSupported('Unsupported curve');\n }\n if (keyObject.type === 'public') {\n const der = keyObject.export({ type: 'spki', format: 'der' });\n return {\n kty: 'EC',\n crv,\n x: base64url(der.subarray(-len, -len / 2)),\n y: base64url(der.subarray(-len / 2)),\n };\n }\n const der = keyObject.export({ type: 'pkcs8', format: 'der' });\n if (der.length < 100) {\n offset += correction;\n }\n return {\n ...keyToJWK(createPublicKey(keyObject)),\n d: base64url(der.subarray(offset, offset + len / 2)),\n };\n }\n case 'ed25519':\n case 'x25519': {\n const crv = getNamedCurve(keyObject);\n if (keyObject.type === 'public') {\n const der = keyObject.export({ type: 'spki', format: 'der' });\n return {\n kty: 'OKP',\n crv,\n x: base64url(der.subarray(-32)),\n };\n }\n const der = keyObject.export({ type: 'pkcs8', format: 'der' });\n return {\n ...keyToJWK(createPublicKey(keyObject)),\n d: base64url(der.subarray(-32)),\n };\n }\n case 'ed448':\n case 'x448': {\n const crv = getNamedCurve(keyObject);\n if (keyObject.type === 'public') {\n const der = keyObject.export({ type: 'spki', format: 'der' });\n return {\n kty: 'OKP',\n crv,\n x: base64url(der.subarray(crv === 'Ed448' ? -57 : -56)),\n };\n }\n const der = keyObject.export({ type: 'pkcs8', format: 'der' });\n return {\n ...keyToJWK(createPublicKey(keyObject)),\n d: base64url(der.subarray(crv === 'Ed448' ? -57 : -56)),\n };\n }\n default:\n throw new JOSENotSupported('Unsupported key asymmetricKeyType');\n }\n }\n default:\n throw new JOSENotSupported('Unsupported key type');\n }\n};\nexport default keyToJWK;\n","import { constants } from 'crypto';\nimport getNamedCurve from './get_named_curve.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport checkModulusLength from './check_modulus_length.js';\nconst [major, minor] = process.version\n .slice(1)\n .split('.')\n .map((str) => parseInt(str, 10));\nconst electron = 'electron' in process.versions;\nconst rsaPssParams = !electron && (major >= 17 || (major === 16 && minor >= 9));\nconst PSS = {\n padding: constants.RSA_PKCS1_PSS_PADDING,\n saltLength: constants.RSA_PSS_SALTLEN_DIGEST,\n};\nconst ecCurveAlgMap = new Map([\n ['ES256', 'P-256'],\n ['ES256K', 'secp256k1'],\n ['ES384', 'P-384'],\n ['ES512', 'P-521'],\n]);\nexport default function keyForCrypto(alg, key) {\n switch (alg) {\n case 'EdDSA':\n if (!['ed25519', 'ed448'].includes(key.asymmetricKeyType)) {\n throw new TypeError('Invalid key for this operation, its asymmetricKeyType must be ed25519 or ed448');\n }\n return key;\n case 'RS256':\n case 'RS384':\n case 'RS512':\n if (key.asymmetricKeyType !== 'rsa') {\n throw new TypeError('Invalid key for this operation, its asymmetricKeyType must be rsa');\n }\n checkModulusLength(key, alg);\n return key;\n case rsaPssParams && 'PS256':\n case rsaPssParams && 'PS384':\n case rsaPssParams && 'PS512':\n if (key.asymmetricKeyType === 'rsa-pss') {\n const { hashAlgorithm, mgf1HashAlgorithm, saltLength } = key.asymmetricKeyDetails;\n const length = parseInt(alg.slice(-3), 10);\n if (hashAlgorithm !== undefined &&\n (hashAlgorithm !== `sha${length}` || mgf1HashAlgorithm !== hashAlgorithm)) {\n throw new TypeError(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of \"alg\" ${alg}`);\n }\n if (saltLength !== undefined && saltLength > length >> 3) {\n throw new TypeError(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of \"alg\" ${alg}`);\n }\n }\n else if (key.asymmetricKeyType !== 'rsa') {\n throw new TypeError('Invalid key for this operation, its asymmetricKeyType must be rsa or rsa-pss');\n }\n checkModulusLength(key, alg);\n return { key, ...PSS };\n case !rsaPssParams && 'PS256':\n case !rsaPssParams && 'PS384':\n case !rsaPssParams && 'PS512':\n if (key.asymmetricKeyType !== 'rsa') {\n throw new TypeError('Invalid key for this operation, its asymmetricKeyType must be rsa');\n }\n checkModulusLength(key, alg);\n return { key, ...PSS };\n case 'ES256':\n case 'ES256K':\n case 'ES384':\n case 'ES512': {\n if (key.asymmetricKeyType !== 'ec') {\n throw new TypeError('Invalid key for this operation, its asymmetricKeyType must be ec');\n }\n const actual = getNamedCurve(key);\n const expected = ecCurveAlgMap.get(alg);\n if (actual !== expected) {\n throw new TypeError(`Invalid key curve for the algorithm, its curve must be ${expected}, got ${actual}`);\n }\n return { dsaEncoding: 'ieee-p1363', key };\n }\n default:\n throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n }\n}\n","import { KeyObject, createSecretKey } from 'crypto';\nimport { isCryptoKey } from './webcrypto.js';\nimport { checkSigCryptoKey } from '../lib/crypto_key.js';\nimport invalidKeyInput from '../lib/invalid_key_input.js';\nimport { types } from './is_key_like.js';\nexport default function getSignVerifyKey(alg, key, usage) {\n if (key instanceof Uint8Array) {\n if (!alg.startsWith('HS')) {\n throw new TypeError(invalidKeyInput(key, ...types));\n }\n return createSecretKey(key);\n }\n if (key instanceof KeyObject) {\n return key;\n }\n if (isCryptoKey(key)) {\n checkSigCryptoKey(key, alg, usage);\n return KeyObject.from(key);\n }\n throw new TypeError(invalidKeyInput(key, ...types, 'Uint8Array'));\n}\n","import * as crypto from 'crypto';\nimport { promisify } from 'util';\nimport nodeDigest from './dsa_digest.js';\nimport hmacDigest from './hmac_digest.js';\nimport nodeKey from './node_key.js';\nimport getSignKey from './get_sign_verify_key.js';\nlet oneShotSign;\nif (crypto.sign.length > 3) {\n oneShotSign = promisify(crypto.sign);\n}\nelse {\n oneShotSign = crypto.sign;\n}\nconst sign = async (alg, key, data) => {\n const keyObject = getSignKey(alg, key, 'sign');\n if (alg.startsWith('HS')) {\n const hmac = crypto.createHmac(hmacDigest(alg), keyObject);\n hmac.update(data);\n return hmac.digest();\n }\n return oneShotSign(nodeDigest(alg), data, nodeKey(alg, keyObject));\n};\nexport default sign;\n","import { JOSENotSupported } from '../util/errors.js';\nexport default function hmacDigest(alg) {\n switch (alg) {\n case 'HS256':\n return 'sha256';\n case 'HS384':\n return 'sha384';\n case 'HS512':\n return 'sha512';\n default:\n throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n }\n}\n","import * as crypto from 'crypto';\nimport { promisify } from 'util';\nimport nodeDigest from './dsa_digest.js';\nimport nodeKey from './node_key.js';\nimport sign from './sign.js';\nimport getVerifyKey from './get_sign_verify_key.js';\nconst [major, minor] = process.version\n .slice(1)\n .split('.')\n .map((str) => parseInt(str, 10));\nconst oneShotCallbackSupported = major >= 16 || (major === 15 && minor >= 13);\nlet oneShotVerify;\nif (crypto.verify.length > 4 && oneShotCallbackSupported) {\n oneShotVerify = promisify(crypto.verify);\n}\nelse {\n oneShotVerify = crypto.verify;\n}\nconst verify = async (alg, key, signature, data) => {\n const keyObject = getVerifyKey(alg, key, 'verify');\n if (alg.startsWith('HS')) {\n const expected = await sign(alg, keyObject, data);\n const actual = signature;\n try {\n return crypto.timingSafeEqual(actual, expected);\n }\n catch {\n return false;\n }\n }\n const algorithm = nodeDigest(alg);\n const keyInput = nodeKey(alg, keyObject);\n try {\n return await oneShotVerify(algorithm, data, keyInput, signature);\n }\n catch {\n return false;\n }\n};\nexport default verify;\n","import { decode as base64url } from '../../runtime/base64url.js';\nimport verify from '../../runtime/verify.js';\nimport { JOSEAlgNotAllowed, JWSInvalid, JWSSignatureVerificationFailed } from '../../util/errors.js';\nimport { concat, encoder, decoder } from '../../lib/buffer_utils.js';\nimport isDisjoint from '../../lib/is_disjoint.js';\nimport isObject from '../../lib/is_object.js';\nimport checkKeyType from '../../lib/check_key_type.js';\nimport validateCrit from '../../lib/validate_crit.js';\nimport validateAlgorithms from '../../lib/validate_algorithms.js';\nexport async function flattenedVerify(jws, key, options) {\n var _a;\n if (!isObject(jws)) {\n throw new JWSInvalid('Flattened JWS must be an object');\n }\n if (jws.protected === undefined && jws.header === undefined) {\n throw new JWSInvalid('Flattened JWS must have either of the \"protected\" or \"header\" members');\n }\n if (jws.protected !== undefined && typeof jws.protected !== 'string') {\n throw new JWSInvalid('JWS Protected Header incorrect type');\n }\n if (jws.payload === undefined) {\n throw new JWSInvalid('JWS Payload missing');\n }\n if (typeof jws.signature !== 'string') {\n throw new JWSInvalid('JWS Signature missing or incorrect type');\n }\n if (jws.header !== undefined && !isObject(jws.header)) {\n throw new JWSInvalid('JWS Unprotected Header incorrect type');\n }\n let parsedProt = {};\n if (jws.protected) {\n try {\n const protectedHeader = base64url(jws.protected);\n parsedProt = JSON.parse(decoder.decode(protectedHeader));\n }\n catch {\n throw new JWSInvalid('JWS Protected Header is invalid');\n }\n }\n if (!isDisjoint(parsedProt, jws.header)) {\n throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n }\n const joseHeader = {\n ...parsedProt,\n ...jws.header,\n };\n const extensions = validateCrit(JWSInvalid, new Map([['b64', true]]), options === null || options === void 0 ? void 0 : options.crit, parsedProt, joseHeader);\n let b64 = true;\n if (extensions.has('b64')) {\n b64 = parsedProt.b64;\n if (typeof b64 !== 'boolean') {\n throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n }\n }\n const { alg } = joseHeader;\n if (typeof alg !== 'string' || !alg) {\n throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n }\n const algorithms = options && validateAlgorithms('algorithms', options.algorithms);\n if (algorithms && !algorithms.has(alg)) {\n throw new JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter not allowed');\n }\n if (b64) {\n if (typeof jws.payload !== 'string') {\n throw new JWSInvalid('JWS Payload must be a string');\n }\n }\n else if (typeof jws.payload !== 'string' && !(jws.payload instanceof Uint8Array)) {\n throw new JWSInvalid('JWS Payload must be a string or an Uint8Array instance');\n }\n let resolvedKey = false;\n if (typeof key === 'function') {\n key = await key(parsedProt, jws);\n resolvedKey = true;\n }\n checkKeyType(alg, key, 'verify');\n const data = concat(encoder.encode((_a = jws.protected) !== null && _a !== void 0 ? _a : ''), encoder.encode('.'), typeof jws.payload === 'string' ? encoder.encode(jws.payload) : jws.payload);\n const signature = base64url(jws.signature);\n const verified = await verify(alg, key, signature, data);\n if (!verified) {\n throw new JWSSignatureVerificationFailed();\n }\n let payload;\n if (b64) {\n payload = base64url(jws.payload);\n }\n else if (typeof jws.payload === 'string') {\n payload = encoder.encode(jws.payload);\n }\n else {\n payload = jws.payload;\n }\n const result = { payload };\n if (jws.protected !== undefined) {\n result.protectedHeader = parsedProt;\n }\n if (jws.header !== undefined) {\n result.unprotectedHeader = jws.header;\n }\n if (resolvedKey) {\n return { ...result, key };\n }\n return result;\n}\n","const isDisjoint = (...headers) => {\n const sources = headers.filter(Boolean);\n if (sources.length === 0 || sources.length === 1) {\n return true;\n }\n let acc;\n for (const header of sources) {\n const parameters = Object.keys(header);\n if (!acc || acc.size === 0) {\n acc = new Set(parameters);\n continue;\n }\n for (const parameter of parameters) {\n if (acc.has(parameter)) {\n return false;\n }\n acc.add(parameter);\n }\n }\n return true;\n};\nexport default isDisjoint;\n","import { JOSENotSupported } from '../util/errors.js';\nfunction validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) {\n if (joseHeader.crit !== undefined && protectedHeader.crit === undefined) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be integrity protected');\n }\n if (!protectedHeader || protectedHeader.crit === undefined) {\n return new Set();\n }\n if (!Array.isArray(protectedHeader.crit) ||\n protectedHeader.crit.length === 0 ||\n protectedHeader.crit.some((input) => typeof input !== 'string' || input.length === 0)) {\n throw new Err('\"crit\" (Critical) Header Parameter MUST be an array of non-empty strings when present');\n }\n let recognized;\n if (recognizedOption !== undefined) {\n recognized = new Map([...Object.entries(recognizedOption), ...recognizedDefault.entries()]);\n }\n else {\n recognized = recognizedDefault;\n }\n for (const parameter of protectedHeader.crit) {\n if (!recognized.has(parameter)) {\n throw new JOSENotSupported(`Extension Header Parameter \"${parameter}\" is not recognized`);\n }\n if (joseHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" is missing`);\n }\n else if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {\n throw new Err(`Extension Header Parameter \"${parameter}\" MUST be integrity protected`);\n }\n }\n return new Set(protectedHeader.crit);\n}\nexport default validateCrit;\n","const validateAlgorithms = (option, algorithms) => {\n if (algorithms !== undefined &&\n (!Array.isArray(algorithms) || algorithms.some((s) => typeof s !== 'string'))) {\n throw new TypeError(`\"${option}\" option must be an array of strings`);\n }\n if (!algorithms) {\n return undefined;\n }\n return new Set(algorithms);\n};\nexport default validateAlgorithms;\n","const minute = 60;\nconst hour = minute * 60;\nconst day = hour * 24;\nconst week = day * 7;\nconst year = day * 365.25;\nconst REGEX = /^(\\d+|\\d+\\.\\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i;\nexport default (str) => {\n const matched = REGEX.exec(str);\n if (!matched) {\n throw new TypeError('Invalid time period format');\n }\n const value = parseFloat(matched[1]);\n const unit = matched[2].toLowerCase();\n switch (unit) {\n case 'sec':\n case 'secs':\n case 'second':\n case 'seconds':\n case 's':\n return Math.round(value);\n case 'minute':\n case 'minutes':\n case 'min':\n case 'mins':\n case 'm':\n return Math.round(value * minute);\n case 'hour':\n case 'hours':\n case 'hr':\n case 'hrs':\n case 'h':\n return Math.round(value * hour);\n case 'day':\n case 'days':\n case 'd':\n return Math.round(value * day);\n case 'week':\n case 'weeks':\n case 'w':\n return Math.round(value * week);\n default:\n return Math.round(value * year);\n }\n};\n","import { JWTClaimValidationFailed, JWTExpired, JWTInvalid } from '../util/errors.js';\nimport { decoder } from './buffer_utils.js';\nimport epoch from './epoch.js';\nimport secs from './secs.js';\nimport isObject from './is_object.js';\nconst normalizeTyp = (value) => value.toLowerCase().replace(/^application\\//, '');\nconst checkAudiencePresence = (audPayload, audOption) => {\n if (typeof audPayload === 'string') {\n return audOption.includes(audPayload);\n }\n if (Array.isArray(audPayload)) {\n return audOption.some(Set.prototype.has.bind(new Set(audPayload)));\n }\n return false;\n};\nexport default (protectedHeader, encodedPayload, options = {}) => {\n const { typ } = options;\n if (typ &&\n (typeof protectedHeader.typ !== 'string' ||\n normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ))) {\n throw new JWTClaimValidationFailed('unexpected \"typ\" JWT header value', 'typ', 'check_failed');\n }\n let payload;\n try {\n payload = JSON.parse(decoder.decode(encodedPayload));\n }\n catch {\n }\n if (!isObject(payload)) {\n throw new JWTInvalid('JWT Claims Set must be a top-level JSON object');\n }\n const { issuer } = options;\n if (issuer && !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss)) {\n throw new JWTClaimValidationFailed('unexpected \"iss\" claim value', 'iss', 'check_failed');\n }\n const { subject } = options;\n if (subject && payload.sub !== subject) {\n throw new JWTClaimValidationFailed('unexpected \"sub\" claim value', 'sub', 'check_failed');\n }\n const { audience } = options;\n if (audience &&\n !checkAudiencePresence(payload.aud, typeof audience === 'string' ? [audience] : audience)) {\n throw new JWTClaimValidationFailed('unexpected \"aud\" claim value', 'aud', 'check_failed');\n }\n let tolerance;\n switch (typeof options.clockTolerance) {\n case 'string':\n tolerance = secs(options.clockTolerance);\n break;\n case 'number':\n tolerance = options.clockTolerance;\n break;\n case 'undefined':\n tolerance = 0;\n break;\n default:\n throw new TypeError('Invalid clockTolerance option type');\n }\n const { currentDate } = options;\n const now = epoch(currentDate || new Date());\n if ((payload.iat !== undefined || options.maxTokenAge) && typeof payload.iat !== 'number') {\n throw new JWTClaimValidationFailed('\"iat\" claim must be a number', 'iat', 'invalid');\n }\n if (payload.nbf !== undefined) {\n if (typeof payload.nbf !== 'number') {\n throw new JWTClaimValidationFailed('\"nbf\" claim must be a number', 'nbf', 'invalid');\n }\n if (payload.nbf > now + tolerance) {\n throw new JWTClaimValidationFailed('\"nbf\" claim timestamp check failed', 'nbf', 'check_failed');\n }\n }\n if (payload.exp !== undefined) {\n if (typeof payload.exp !== 'number') {\n throw new JWTClaimValidationFailed('\"exp\" claim must be a number', 'exp', 'invalid');\n }\n if (payload.exp <= now - tolerance) {\n throw new JWTExpired('\"exp\" claim timestamp check failed', 'exp', 'check_failed');\n }\n }\n if (options.maxTokenAge) {\n const age = now - payload.iat;\n const max = typeof options.maxTokenAge === 'number' ? options.maxTokenAge : secs(options.maxTokenAge);\n if (age - tolerance > max) {\n throw new JWTExpired('\"iat\" claim timestamp check failed (too far in the past)', 'iat', 'check_failed');\n }\n if (age < 0 - tolerance) {\n throw new JWTClaimValidationFailed('\"iat\" claim timestamp check failed (it should be in the past)', 'iat', 'check_failed');\n }\n }\n return payload;\n};\n","export default (date) => Math.floor(date.getTime() / 1000);\n","import { compactVerify } from '../jws/compact/verify.js';\nimport jwtPayload from '../lib/jwt_claims_set.js';\nimport { JWTInvalid } from '../util/errors.js';\nexport async function jwtVerify(jwt, key, options) {\n var _a;\n const verified = await compactVerify(jwt, key, options);\n if (((_a = verified.protectedHeader.crit) === null || _a === void 0 ? void 0 : _a.includes('b64')) && verified.protectedHeader.b64 === false) {\n throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n }\n const payload = jwtPayload(verified.protectedHeader, verified.payload, options);\n const result = { payload, protectedHeader: verified.protectedHeader };\n if (typeof key === 'function') {\n return { ...result, key: verified.key };\n }\n return result;\n}\n","import { flattenedVerify } from '../flattened/verify.js';\nimport { JWSInvalid } from '../../util/errors.js';\nimport { decoder } from '../../lib/buffer_utils.js';\nexport async function compactVerify(jws, key, options) {\n if (jws instanceof Uint8Array) {\n jws = decoder.decode(jws);\n }\n if (typeof jws !== 'string') {\n throw new JWSInvalid('Compact JWS must be a string or Uint8Array');\n }\n const { 0: protectedHeader, 1: payload, 2: signature, length } = jws.split('.');\n if (length !== 3) {\n throw new JWSInvalid('Invalid Compact JWS');\n }\n const verified = await flattenedVerify({ payload, protected: protectedHeader, signature }, key, options);\n const result = { payload: verified.payload, protectedHeader: verified.protectedHeader };\n if (typeof key === 'function') {\n return { ...result, key: verified.key };\n }\n return result;\n}\n","import { createSecretKey, generateKeyPair as generateKeyPairCb } from 'crypto';\nimport { promisify } from 'util';\nimport random from './random.js';\nimport { setModulusLength } from './check_modulus_length.js';\nimport { JOSENotSupported } from '../util/errors.js';\nconst generate = promisify(generateKeyPairCb);\nexport async function generateSecret(alg, options) {\n let length;\n switch (alg) {\n case 'HS256':\n case 'HS384':\n case 'HS512':\n case 'A128CBC-HS256':\n case 'A192CBC-HS384':\n case 'A256CBC-HS512':\n length = parseInt(alg.slice(-3), 10);\n break;\n case 'A128KW':\n case 'A192KW':\n case 'A256KW':\n case 'A128GCMKW':\n case 'A192GCMKW':\n case 'A256GCMKW':\n case 'A128GCM':\n case 'A192GCM':\n case 'A256GCM':\n length = parseInt(alg.slice(1, 4), 10);\n break;\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n return createSecretKey(random(new Uint8Array(length >> 3)));\n}\nexport async function generateKeyPair(alg, options) {\n var _a, _b;\n switch (alg) {\n case 'RS256':\n case 'RS384':\n case 'RS512':\n case 'PS256':\n case 'PS384':\n case 'PS512':\n case 'RSA-OAEP':\n case 'RSA-OAEP-256':\n case 'RSA-OAEP-384':\n case 'RSA-OAEP-512':\n case 'RSA1_5': {\n const modulusLength = (_a = options === null || options === void 0 ? void 0 : options.modulusLength) !== null && _a !== void 0 ? _a : 2048;\n if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n throw new JOSENotSupported('Invalid or unsupported modulusLength option provided, 2048 bits or larger keys must be used');\n }\n const keypair = await generate('rsa', {\n modulusLength,\n publicExponent: 0x10001,\n });\n setModulusLength(keypair.privateKey, modulusLength);\n setModulusLength(keypair.publicKey, modulusLength);\n return keypair;\n }\n case 'ES256':\n return generate('ec', { namedCurve: 'P-256' });\n case 'ES256K':\n return generate('ec', { namedCurve: 'secp256k1' });\n case 'ES384':\n return generate('ec', { namedCurve: 'P-384' });\n case 'ES512':\n return generate('ec', { namedCurve: 'P-521' });\n case 'EdDSA': {\n switch (options === null || options === void 0 ? void 0 : options.crv) {\n case undefined:\n case 'Ed25519':\n return generate('ed25519');\n case 'Ed448':\n return generate('ed448');\n default:\n throw new JOSENotSupported('Invalid or unsupported crv option provided, supported values are Ed25519 and Ed448');\n }\n }\n case 'ECDH-ES':\n case 'ECDH-ES+A128KW':\n case 'ECDH-ES+A192KW':\n case 'ECDH-ES+A256KW':\n const crv = (_b = options === null || options === void 0 ? void 0 : options.crv) !== null && _b !== void 0 ? _b : 'P-256';\n switch (crv) {\n case undefined:\n case 'P-256':\n case 'P-384':\n case 'P-521':\n return generate('ec', { namedCurve: crv });\n case 'X25519':\n return generate('x25519');\n case 'X448':\n return generate('x448');\n default:\n throw new JOSENotSupported('Invalid or unsupported crv option provided, supported values are P-256, P-384, P-521, X25519, and X448');\n }\n default:\n throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n }\n}\n","\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n","\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nmodule.exports = punycode;\n","\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n","\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n","\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n","\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n","import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport whatwgUrl from 'whatwg-url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = /<meta.+?charset=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// html4\n\tif (!res && str) {\n\t\tres = /<meta[\\s]+?http-equiv=(['\"])content-type\\1[\\s]+?content=(['\"])(.+?)\\2/i.exec(str);\n\t\tif (!res) {\n\t\t\tres = /<meta[\\s]+?content=(['\"])(.+?)\\1[\\s]+?http-equiv=(['\"])content-type\\3/i.exec(str);\n\t\t\tif (res) {\n\t\t\t\tres.pop(); // drop last quote\n\t\t\t}\n\t\t}\n\n\t\tif (res) {\n\t\t\tres = /charset=(.*)/i.exec(res.pop());\n\t\t}\n\t}\n\n\t// xml\n\tif (!res && str) {\n\t\tres = /<\\?xml.+?encoding=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// found charset\n\tif (res) {\n\t\tcharset = res.pop();\n\n\t\t// prevent decode issues when sites use incorrect encoding\n\t\t// ref: https://hsivonen.fi/encoding-menu/\n\t\tif (charset === 'gb2312' || charset === 'gbk') {\n\t\t\tcharset = 'gb18030';\n\t\t}\n\t}\n\n\t// turn raw buffers into a single utf-8 buffer\n\treturn convert(buffer, 'UTF-8', charset).toString();\n}\n\n/**\n * Detect a URLSearchParams object\n * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143\n *\n * @param Object obj Object to detect by type or brand\n * @return String\n */\nfunction isURLSearchParams(obj) {\n\t// Duck-typing as a necessary condition.\n\tif (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {\n\t\treturn false;\n\t}\n\n\t// Brand-checking and more duck-typing as optional condition.\n\treturn obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';\n}\n\n/**\n * Check if `obj` is a W3C `Blob` object (which `File` inherits from)\n * @param {*} obj\n * @return {boolean}\n */\nfunction isBlob(obj) {\n\treturn typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);\n}\n\n/**\n * Clone body given Res/Req instance\n *\n * @param Mixed instance Response or Request instance\n * @return Mixed\n */\nfunction clone(instance) {\n\tlet p1, p2;\n\tlet body = instance.body;\n\n\t// don't allow cloning a used body\n\tif (instance.bodyUsed) {\n\t\tthrow new Error('cannot clone body after it is used');\n\t}\n\n\t// check that body is a stream and not form-data object\n\t// note: we can't clone the form-data object without having it as a dependency\n\tif (body instanceof Stream && typeof body.getBoundary !== 'function') {\n\t\t// tee instance body\n\t\tp1 = new PassThrough();\n\t\tp2 = new PassThrough();\n\t\tbody.pipe(p1);\n\t\tbody.pipe(p2);\n\t\t// set instance body to teed body and return the other teed body\n\t\tinstance[INTERNALS].body = p1;\n\t\tbody = p2;\n\t}\n\n\treturn body;\n}\n\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param Mixed instance Any options.body input\n */\nfunction extractContentType(body) {\n\tif (body === null) {\n\t\t// body is null\n\t\treturn null;\n\t} else if (typeof body === 'string') {\n\t\t// body is string\n\t\treturn 'text/plain;charset=UTF-8';\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\treturn 'application/x-www-form-urlencoded;charset=UTF-8';\n\t} else if (isBlob(body)) {\n\t\t// body is blob\n\t\treturn body.type || null;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn null;\n\t} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\treturn null;\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\treturn null;\n\t} else if (typeof body.getBoundary === 'function') {\n\t\t// detect form data input from form-data module\n\t\treturn `multipart/form-data;boundary=${body.getBoundary()}`;\n\t} else if (body instanceof Stream) {\n\t\t// body is stream\n\t\t// can't really do much about this\n\t\treturn null;\n\t} else {\n\t\t// Body constructor defaults other things to string\n\t\treturn 'text/plain;charset=UTF-8';\n\t}\n}\n\n/**\n * The Fetch Standard treats this as if \"total bytes\" is a property on the body.\n * For us, we have to explicitly get it with a function.\n *\n * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes\n *\n * @param Body instance Instance of Body\n * @return Number? Number of bytes, or null if not possible\n */\nfunction getTotalBytes(instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\treturn 0;\n\t} else if (isBlob(body)) {\n\t\treturn body.size;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn body.length;\n\t} else if (body && typeof body.getLengthSync === 'function') {\n\t\t// detect form data input from form-data module\n\t\tif (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x\n\t\tbody.hasKnownLength && body.hasKnownLength()) {\n\t\t\t// 2.x\n\t\t\treturn body.getLengthSync();\n\t\t}\n\t\treturn null;\n\t} else {\n\t\t// body is stream\n\t\treturn null;\n\t}\n}\n\n/**\n * Write a Body to a Node.js WritableStream (e.g. http.Request) object.\n *\n * @param Body instance Instance of Body\n * @return Void\n */\nfunction writeToStream(dest, instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\tdest.end();\n\t} else if (isBlob(body)) {\n\t\tbody.stream().pipe(dest);\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\tdest.write(body);\n\t\tdest.end();\n\t} else {\n\t\t// body is stream\n\t\tbody.pipe(dest);\n\t}\n}\n\n// expose Promise\nBody.Promise = global.Promise;\n\n/**\n * headers.js\n *\n * Headers class offers convenient helpers\n */\n\nconst invalidTokenRegex = /[^\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]/;\nconst invalidHeaderCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n\nfunction validateName(name) {\n\tname = `${name}`;\n\tif (invalidTokenRegex.test(name) || name === '') {\n\t\tthrow new TypeError(`${name} is not a legal HTTP header name`);\n\t}\n}\n\nfunction validateValue(value) {\n\tvalue = `${value}`;\n\tif (invalidHeaderCharRegex.test(value)) {\n\t\tthrow new TypeError(`${value} is not a legal HTTP header value`);\n\t}\n}\n\n/**\n * Find the key in the map object given a header name.\n *\n * Returns undefined if not found.\n *\n * @param String name Header name\n * @return String|Undefined\n */\nfunction find(map, name) {\n\tname = name.toLowerCase();\n\tfor (const key in map) {\n\t\tif (key.toLowerCase() === name) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nconst MAP = Symbol('map');\nclass Headers {\n\t/**\n * Headers class\n *\n * @param Object headers Response headers\n * @return Void\n */\n\tconstructor() {\n\t\tlet init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence<sequence<ByteString>>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record<ByteString, ByteString>\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\trequest.body.destroy(error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\t\t\tfinalize();\n\t\t});\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError };\n","// eslint-disable-next-line import/prefer-default-export\n/** Refresh JWT cookie name */\nexport const refreshTokenCookieName = 'DSR';\n/** Session JWT cookie name */\nexport const sessionTokenCookieName = 'DS';\n/** The key of the tenants claims in the claims map */\nexport const authorizedTenantsClaimName = 'tenants';\n/** The key of the permissions claims in the claims map either under tenant or top level */\nexport const permissionsClaimName = 'permissions';\n/** The key of the roles claims in the claims map either under tenant or top level */\nexport const rolesClaimName = 'roles';\n","import type { ResponseData, SdkResponse } from '@descope/core-js-sdk';\nimport { AuthenticationInfo } from './types';\nimport {\n refreshTokenCookieName,\n sessionTokenCookieName,\n authorizedTenantsClaimName,\n} from './constants';\n\n/**\n * Generate a cookie string from given parameters\n * @param name name of the cookie\n * @param value value of cookie that must be already encoded\n * @param options any options to put on the cookie like cookieDomain, cookieMaxAge, cookiePath\n * @returns Cookie string with all options on the string\n */\nconst generateCookie = (name: string, value: string, options?: Record<string, string | number>) =>\n `${name}=${value}; Domain=${options?.cookieDomain || ''}; Max-Age=${\n options?.cookieMaxAge || ''\n }; Path=${options?.cookiePath || '/'}; HttpOnly; SameSite=Strict`;\n\n/**\n * Parse the cookie string and return the value of the cookie\n * @param cookie the raw cookie string\n * @param name the name of the cookie to get value for\n * @returns the value of the given cookie\n */\nconst getCookieValue = (cookie: string | null | undefined, name: string) => {\n const match = cookie?.match(RegExp(`(?:^|;\\\\s*)${name}=([^;]*)`));\n return match ? match[1] : null;\n};\n\n// eslint-disable-next-line import/prefer-default-export\n/**\n * Add cookie generation to core-js functions.\n * @param fn the function we are wrapping\n * @returns Wrapped function with cookie generation\n */\nexport const withCookie =\n <T extends Array<any>, U extends Promise<SdkResponse<ResponseData>>>(fn: (...args: T) => U) =>\n async (...args: T): Promise<SdkResponse<ResponseData>> => {\n const resp = await fn(...args);\n\n // istanbul ignore next\n if (!resp.data) {\n return resp;\n }\n\n // eslint-disable-next-line prefer-const\n let { sessionJwt, refreshJwt, ...rest } = resp.data;\n const cookies = [generateCookie(sessionTokenCookieName, sessionJwt, rest)];\n\n if (!refreshJwt) {\n if (resp.response?.headers.get('set-cookie')) {\n refreshJwt = getCookieValue(\n resp.response?.headers.get('set-cookie'),\n refreshTokenCookieName,\n );\n cookies.push(resp.response?.headers.get('set-cookie')!);\n }\n } else {\n cookies.push(generateCookie(refreshTokenCookieName, refreshJwt, rest));\n }\n\n return { ...resp, data: { ...resp.data, refreshJwt, cookies } };\n };\n\n/**\n * Wrap given object internal functions (can be deep inside the object) with the given wrapping function\n * @param obj we will deep wrap functions inside this object based on the given path\n * @param path the path of internal objects to walk before wrapping the final result. Path is collection of parts separated by '.' that support '*' to say all of the keys for the part.\n * @param wrappingFn function to wrap with\n * @returns void, we update the functions in place\n */\nexport const wrapWith = <T extends Record<string, any>>(\n obj: T,\n path: string | string[],\n wrappingFn: Function,\n // eslint-disable-next-line consistent-return\n): void => {\n if (!obj) return;\n\n const pathSections = typeof path === 'string' ? path.split('.') : path;\n const section = pathSections.shift() || ('' as keyof T);\n\n if (pathSections.length === 0 || section === '*') {\n const wrap = (key: keyof T) => {\n if (key && typeof obj[key] === 'function') {\n // eslint-disable-next-line no-param-reassign\n obj[key] = wrappingFn(obj[key]);\n } else {\n // istanbul ignore next\n throw Error(`cannot wrap value at key \"${key.toString()}\"`);\n }\n };\n if (section === '*') {\n Object.keys(obj).forEach(wrap);\n } else {\n wrap(section);\n }\n } else {\n wrapWith(obj[section], pathSections, wrappingFn);\n }\n};\n\n/**\n * Wrap given object internal functions (can be deep inside the object) with the given wrapping function based on multiple paths.\n * @param obj we will deep wrap functions inside this object based on the given paths\n * @param paths multiple paths of internal objects to walk before wrapping the final result. Path is collection of parts separated by '.' that support '*' to say all of the keys for the part.\n * @param wrappingFn function to wrap with\n * @returns void, we update the functions in place\n */\nexport const bulkWrapWith = (\n obj: Parameters<typeof wrapWith>[0],\n paths: string[],\n wrappingFn: Parameters<typeof wrapWith>[2],\n) => paths.forEach((path: string) => wrapWith(obj, path, wrappingFn));\n\n/**\n * Get the claim (used for permissions or roles) for a given tenant or top level if tenant is empty\n * @param authInfo The parsed authentication info from the JWT\n * @param claim name of the claim\n * @param tenant tenant to retrieve the claim for\n * @returns\n */\nexport function getAuthorizationClaimItems(\n authInfo: AuthenticationInfo,\n claim: string,\n tenant?: string,\n): string[] {\n const value = tenant\n ? authInfo.token[authorizedTenantsClaimName]?.[tenant]?.[claim]\n : authInfo.token[claim];\n return Array.isArray(value) ? value : [];\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/** API paths for the Descope service Management APIs */\nexport default {\n user: {\n create: '/v1/mgmt/user/create',\n update: '/v1/mgmt/user/update',\n delete: '/v1/mgmt/user/delete',\n load: '/v1/mgmt/user/load',\n search: '/v1/mgmt/user/search',\n },\n tenant: {\n create: '/v1/mgmt/tenant/create',\n update: '/v1/mgmt/tenant/update',\n delete: '/v1/mgmt/tenant/delete',\n },\n jwt: {\n update: '/v1/mgmt/jwt/update',\n },\n};\n","import { SdkResponse, transformResponse, UserResponse } from '@descope/core-js-sdk';\nimport { CoreSdk } from '../types';\nimport apiPaths from './paths';\nimport { UserTenant } from './types';\n\ntype SingleUserResponse = {\n user: UserResponse;\n};\n\ntype MultipleUsersResponse = {\n users: UserResponse[];\n};\n\nconst withUser = (sdk: CoreSdk, managementKey?: string) => ({\n create: (\n identifier: string,\n email?: string,\n phone?: string,\n displayName?: string,\n roleNames?: string[],\n userTenants?: UserTenant[],\n ): Promise<SdkResponse<UserResponse>> =>\n transformResponse<SingleUserResponse, UserResponse>(\n sdk.httpClient.post(\n apiPaths.user.create,\n { identifier, email, phone, displayName, roleNames, userTenants },\n { token: managementKey },\n ),\n (data) => data.user,\n ),\n update: (\n identifier: string,\n email?: string,\n phone?: string,\n displayName?: string,\n roleNames?: string[],\n userTenants?: UserTenant[],\n ): Promise<SdkResponse<UserResponse>> =>\n transformResponse<SingleUserResponse, UserResponse>(\n sdk.httpClient.post(\n apiPaths.user.update,\n { identifier, email, phone, displayName, roleNames, userTenants },\n { token: managementKey },\n ),\n (data) => data.user,\n ),\n delete: (identifier: string): Promise<SdkResponse<never>> =>\n transformResponse(\n sdk.httpClient.post(apiPaths.user.delete, { identifier }, { token: managementKey }),\n ),\n load: (identifier: string): Promise<SdkResponse<UserResponse>> =>\n transformResponse<SingleUserResponse, UserResponse>(\n sdk.httpClient.get(apiPaths.user.load, {\n queryParams: { identifier },\n token: managementKey,\n }),\n (data) => data.user,\n ),\n searchAll: (\n tenantIds?: string[],\n roleNames?: string[],\n limit?: number,\n ): Promise<SdkResponse<UserResponse[]>> =>\n transformResponse<MultipleUsersResponse, UserResponse[]>(\n sdk.httpClient.post(\n apiPaths.user.search,\n { tenantIds, roleNames, limit },\n { token: managementKey },\n ),\n (data) => data.users,\n ),\n});\n\nexport default withUser;\n","import { SdkResponse, transformResponse } from '@descope/core-js-sdk';\nimport { CoreSdk } from '../types';\nimport apiPaths from './paths';\nimport { CreateTenantResponse } from './types';\n\nconst withTenant = (sdk: CoreSdk, managementKey?: string) => ({\n create: (\n name: string,\n selfProvisioningDomains?: string[],\n ): Promise<SdkResponse<CreateTenantResponse>> =>\n transformResponse(\n sdk.httpClient.post(\n apiPaths.tenant.create,\n { name, selfProvisioningDomains },\n { token: managementKey },\n ),\n ),\n createWithId: (\n tenantId: string,\n name: string,\n selfProvisioningDomains?: string[],\n ): Promise<SdkResponse<never>> =>\n transformResponse(\n sdk.httpClient.post(\n apiPaths.tenant.create,\n { tenantId, name, selfProvisioningDomains },\n { token: managementKey },\n ),\n ),\n update: (\n tenantId: string,\n name: string,\n selfProvisioningDomains?: string[],\n ): Promise<SdkResponse<never>> =>\n transformResponse(\n sdk.httpClient.post(\n apiPaths.tenant.update,\n { tenantId, name, selfProvisioningDomains },\n { token: managementKey },\n ),\n ),\n delete: (tenantId: string): Promise<SdkResponse<never>> =>\n transformResponse(\n sdk.httpClient.post(apiPaths.tenant.delete, { tenantId }, { token: managementKey }),\n ),\n});\n\nexport default withTenant;\n","import { SdkResponse, transformResponse } from '@descope/core-js-sdk';\nimport { CoreSdk } from '../types';\nimport apiPaths from './paths';\nimport { UpdateJWTResponse } from './types';\n\nconst withJWT = (sdk: CoreSdk, managementKey?: string) => ({\n update: (\n jwt: string,\n customClaims?: Record<string, any>,\n ): Promise<SdkResponse<UpdateJWTResponse>> =>\n transformResponse(\n sdk.httpClient.post(apiPaths.jwt.update, { jwt, customClaims }, { token: managementKey }),\n ),\n});\n\nexport default withJWT;\n","import createSdk, {\n SdkResponse,\n ExchangeAccessKeyResponse,\n RequestConfig,\n} from '@descope/core-js-sdk';\nimport { KeyLike, jwtVerify, JWK, JWTHeaderParameters, importJWK, errors } from 'jose';\nimport fetch, { Headers, Response, Request } from 'node-fetch';\nimport { bulkWrapWith, withCookie, getAuthorizationClaimItems } from './helpers';\nimport withManagement from './management';\nimport { AuthenticationInfo } from './types';\nimport {\n refreshTokenCookieName,\n sessionTokenCookieName,\n permissionsClaimName,\n rolesClaimName,\n} from './constants';\n\ndeclare const BUILD_VERSION: string;\n\n/* istanbul ignore next */\nif (!globalThis.fetch) {\n // @ts-ignore\n globalThis.fetch = fetch;\n // @ts-ignore\n globalThis.Headers = Headers;\n // @ts-ignore\n globalThis.Request = Request;\n // @ts-ignore\n globalThis.Response = Response;\n}\n\n/** Configuration arguments which include the Descope core SDK args and an optional management key */\ntype NodeSdkArgs = Parameters<typeof createSdk>[0] & {\n managementKey?: string;\n};\n\nconst nodeSdk = (args: NodeSdkArgs) => {\n // eslint-disable-next-line no-param-reassign\n args.hooks = args.hooks || {};\n\n const origBeforeRequest = args.hooks.beforeRequest;\n // eslint-disable-next-line no-param-reassign\n args.hooks.beforeRequest = (config: RequestConfig) => {\n const conf = config;\n conf.headers = {\n ...conf.headers,\n 'x-descope-sdk-name': 'nodejs',\n 'x-descope-sdk-node-version': process?.versions?.node || '',\n 'x-descope-sdk-version': BUILD_VERSION,\n };\n return origBeforeRequest?.(conf) || conf;\n };\n\n const coreSdk = createSdk(args);\n\n bulkWrapWith(\n coreSdk,\n [\n 'otp.verify.*',\n 'magicLink.verify',\n 'enchantedLink.signUp.*',\n 'enchantedLink.signIn.*',\n 'oauth.exchange',\n 'saml.exchange',\n 'totp.verify',\n 'webauthn.signIn.finish',\n 'webauthn.signUp.finish',\n 'refresh',\n ],\n withCookie,\n );\n\n const { projectId, logger } = args;\n\n const keys: Record<string, KeyLike | Uint8Array> = {};\n\n /** Fetch the public keys (JWKs) from Descope for the configured project */\n const fetchKeys = async () => {\n const publicKeys: JWK[] = await coreSdk.httpClient\n .get(`v1/keys/${projectId}`)\n .then((resp) => resp.json());\n if (!Array.isArray(publicKeys)) return {};\n const kidJwksPairs = await Promise.all(\n publicKeys.map(async (key) => [key.kid, await importJWK(key)]),\n );\n\n return kidJwksPairs.reduce(\n (acc, [kid, jwk]) => (kid ? { ...acc, [kid.toString()]: jwk } : acc),\n {},\n );\n };\n\n const management = withManagement(coreSdk, args.managementKey);\n\n const sdk = {\n ...coreSdk,\n\n /**\n * Provides various APIs for managing a Descope project programmatically. A management key must\n * be provided as an argument when initializing the SDK to use these APIs. Management keys can be\n * generated in the Descope console.\n */\n management,\n\n /** Get the key that can validate the given JWT KID in the header. Can retrieve the public key from local cache or from Descope. */\n async getKey(header: JWTHeaderParameters): Promise<KeyLike | Uint8Array> {\n if (!header?.kid) throw Error('header.kid must not be empty');\n\n if (keys[header.kid]) return keys[header.kid];\n\n // do we need to fetch once or every time?\n Object.assign(keys, await fetchKeys());\n\n if (!keys[header.kid]) throw Error('failed to fetch matching key');\n\n return keys[header.kid];\n },\n\n /**\n * Validate the given JWT with the right key and make sure the issuer is correct\n * @param jwt the JWT string to parse and validate\n * @returns AuthenticationInfo with the parsed token and JWT. Will throw an error if validation fails.\n */\n async validateJwt(jwt: string): Promise<AuthenticationInfo> {\n // Do not hard-code the algo because library does not support `None` so all are valid\n const res = await jwtVerify(jwt, sdk.getKey, { clockTolerance: 5 });\n const token = res.payload;\n\n if (token) {\n token.iss = token.iss?.split('/').pop(); // support both url and project id as issuer\n if (token.iss !== projectId) {\n // We must do the verification here, since issuer can be either project ID or URL\n throw new errors.JWTClaimValidationFailed(\n 'unexpected \"iss\" claim value',\n 'iss',\n 'check_failed',\n );\n }\n }\n\n return { jwt, token };\n },\n\n /**\n * Validate session based on at least one of session and refresh JWTs. You must provide at least one of them.\n *\n * @param sessionToken session JWT\n * @param refreshToken refresh JWT\n * @returns AuthenticationInfo promise or throws Error if there is an issue with JWTs\n */\n async validateSession(\n sessionToken?: string,\n refreshToken?: string,\n ): Promise<AuthenticationInfo> {\n if (!sessionToken && !refreshToken)\n throw Error('both refresh token and session token are empty');\n\n if (sessionToken) {\n try {\n const token = await sdk.validateJwt(sessionToken);\n return token;\n } catch (error) {\n if (!refreshToken) {\n logger?.error('failed to validate session token and no refresh token provided', error);\n throw Error('could not validate tokens');\n }\n }\n }\n if (refreshToken) {\n try {\n await sdk.validateJwt(refreshToken);\n const jwtResp = await sdk.refresh(refreshToken);\n if (jwtResp.ok) {\n const token = await sdk.validateJwt(jwtResp.data?.sessionJwt);\n return token;\n }\n throw Error(jwtResp.error?.message);\n } catch (refreshTokenErr) {\n logger?.error('failed to validate refresh token', refreshTokenErr);\n throw Error('could not validate tokens');\n }\n }\n /* istanbul ignore next */\n throw Error('could not validate token');\n },\n\n /**\n * Exchange API key (access key) for a session key\n * @param accessKey access key to exchange for a session JWT\n * @returns AuthneticationInfo with session JWT data\n */\n async exchangeAccessKey(accessKey: string): Promise<AuthenticationInfo> {\n if (!accessKey) throw Error('access key must not be empty');\n\n let resp: SdkResponse<ExchangeAccessKeyResponse>;\n try {\n resp = await sdk.accessKey.exchange(accessKey);\n } catch (error) {\n logger?.error('failed to exchange access key', error);\n throw Error('could not exchange access key');\n }\n\n const { sessionJwt } = resp.data;\n if (!sessionJwt) {\n logger?.error('failed to parse exchange access key response');\n throw Error('could not exchange access key');\n }\n\n try {\n const token = await sdk.validateJwt(sessionJwt);\n return token;\n } catch (error) {\n logger?.error('failed to parse jwt from access key', error);\n throw Error('could not exchange access key');\n }\n },\n\n /**\n * Make sure that all given permissions exist on the parsed JWT top level claims\n * @param authInfo JWT parsed info\n * @param permissions list of permissions to make sure they exist on te JWT claims\n * @returns true if all permissions exist, false otherwise\n */\n validatePermissions(authInfo: AuthenticationInfo, permissions: string[]): boolean {\n return sdk.validateTenantPermissions(authInfo, null, permissions);\n },\n\n /**\n * Make sure that all given permissions exist on the parsed JWT tenant claims\n * @param authInfo JWT parsed info\n * @param permissions list of permissions to make sure they exist on te JWT claims\n * @returns true if all permissions exist, false otherwise\n */\n validateTenantPermissions(\n authInfo: AuthenticationInfo,\n tenant: string,\n permissions: string[],\n ): boolean {\n const granted = getAuthorizationClaimItems(authInfo, permissionsClaimName, tenant);\n return permissions.every((perm) => granted.includes(perm));\n },\n\n /**\n * Make sure that all given roles exist on the parsed JWT top level claims\n * @param authInfo JWT parsed info\n * @param roles list of roles to make sure they exist on te JWT claims\n * @returns true if all roles exist, false otherwise\n */\n validateRoles(authInfo: AuthenticationInfo, roles: string[]): boolean {\n return sdk.validateTenantRoles(authInfo, null, roles);\n },\n\n /**\n * Make sure that all given roles exist on the parsed JWT tenant claims\n * @param authInfo JWT parsed info\n * @param roles list of roles to make sure they exist on te JWT claims\n * @returns true if all roles exist, false otherwise\n */\n validateTenantRoles(authInfo: AuthenticationInfo, tenant: string, roles: string[]): boolean {\n const membership = getAuthorizationClaimItems(authInfo, rolesClaimName, tenant);\n return roles.every((role) => membership.includes(role));\n },\n };\n\n return sdk;\n};\n\n/** Descope SDK client with delivery methods enum.\n *\n * Please see full documentation at {@link https://docs.descope.com/guides Descope Docs}\n * @example Usage\n *\n * ```js\n * import descopeSdk from '@descope/node-sdk';\n *\n * const myProjectId = 'xxx';\n * const sdk = descopeSdk({ projectId: myProjectId });\n *\n * const userIdentifier = 'identifier';\n * sdk.otp.signIn.email(userIdentifier);\n * const jwtResponse = sdk.otp.verify.email(userIdentifier, codeFromEmail);\n * ```\n */\nconst sdkWithAttributes = nodeSdk as typeof nodeSdk & {\n DeliveryMethods: typeof createSdk.DeliveryMethods;\n RefreshTokenCookieName: typeof refreshTokenCookieName;\n SessionTokenCookieName: typeof sessionTokenCookieName;\n};\n\nsdkWithAttributes.DeliveryMethods = createSdk.DeliveryMethods;\nsdkWithAttributes.RefreshTokenCookieName = refreshTokenCookieName;\nsdkWithAttributes.SessionTokenCookieName = sessionTokenCookieName;\n\nexport default sdkWithAttributes;\n\nexport type { NodeSdkArgs };\n\nexport type { DeliveryMethod, OAuthProvider } from '@descope/core-js-sdk';\n","import { CoreSdk } from '../types';\nimport withUser from './user';\nimport withTenant from './tenant';\nimport withJWT from './jwt';\n\n/** Constructs a higher level Management API that wraps the functions from code-js-sdk */\nconst withManagement = (sdk: CoreSdk, managementKey?: string) => ({\n user: withUser(sdk, managementKey),\n tenant: withTenant(sdk, managementKey),\n jwt: withJWT(sdk, managementKey),\n});\n\nexport default withManagement;\n"],"names":["e","this","message","prototype","Error","name","r","window","atob","bind","t","String","replace","length","n","o","a","i","c","charAt","fromCharCode","indexOf","header","JSON","parse","decodeURIComponent","charCodeAt","toString","toUpperCase","split","HASH_UNDEFINED","funcTag","genTag","reIsDeepProp","reIsPlainProp","reLeadingDot","rePropName","reEscapeChar","reIsHostCtor","freeGlobal","global","Object","freeSelf","self","root","Function","uid","arrayProto","Array","funcProto","objectProto","coreJsData","maskSrcKey","exec","keys","IE_PROTO","funcToString","hasOwnProperty","objectToString","reIsNative","RegExp","call","Symbol","splice","Map","getNative","nativeCreate","symbolProto","undefined","symbolToString","Hash","entries","index","clear","entry","set","ListCache","MapCache","assocIndexOf","array","key","value","other","baseGet","object","path","isArray","type","isSymbol","test","isKey","stringToPath","toKey","baseIsNative","isObject","func","pattern","tag","isFunction","result","isHostObject","toSource","getMapData","map","data","__data__","getValue","has","get","pop","push","hash","string","memoize","baseToString","match","number","quote","resolver","TypeError","memoized","args","arguments","apply","cache","Cache","isObjectLike","lodash_get","defaultValue","s","email","phone","u","p","start","finish","h","m","headers","fromEntries","Headers","stringify","body","Body","url","Url","method","Method","title","Title","status","Status","build","flatMap","join","f","delete","post","put","I","reduce","from","y","k","Authorization","b","baseUrl","projectId","baseConfig","logger","hooks","cookiePolicy","fetch","async","log","ok","clone","text","Promise","resolve","json","statusText","v","beforeRequest","d","queryParams","l","token","g","URL","search","URLSearchParams","baseHeaders","credentials","afterRequest","O","x","tenants","w","exp","Date","getTime","U","j","P","R","code","response","error","q","$","validate","forEach","M","E","S","A","T","L","J","H","D","N","Z","B","C","exchange","K","F","G","_","Q","sms","whatsapp","waiting","running","completed","failed","signUp","signIn","verify","updatePhone","V","W","X","Y","ee","te","assign","externalId","loginOptions","user","signUpOrIn","update","ne","se","ae","ie","oe","re","ue","URI","pe","de","ce","le","ge","he","me","waitForSession","pollingIntervalMs","timeoutMs","Math","max","min","setInterval","pendingRef","clearInterval","clearTimeout","setTimeout","ve","facebook","github","google","microsoft","gitlab","apple","fe","Ie","redirect","provider","redirectURL","location","href","ye","ke","be","flowId","options","next","executionId","stepId","interactionId","input","Oe","xe","we","tenant","Ue","je","Pe","Re","qe","$e","Me","Ee","Se","Ae","Te","Le","origin","transactionId","ze","He","De","Je","accessKey","otp","magicLink","enchantedLink","oauth","saml","totp","webauthn","flow","refresh","logout","logoutAll","isJwtExpired","getJwtPermissions","getJwtRoles","httpClient","DeliveryMethods","encoder","TextEncoder","decoder","TextDecoder","Buffer","isEncoding","decode","encoded","Uint8Array","normalize","JOSEError","constructor","_a","super","captureStackTrace","JWTClaimValidationFailed","claim","reason","JWTExpired","JOSEAlgNotAllowed","JOSENotSupported","JWSInvalid","JWTInvalid","JWSSignatureVerificationFailed","isKeyObject","util","types","obj","KeyObject","isCryptoKey","unusable","prop","isAlgorithm","algorithm","getHashLength","parseInt","slice","checkSigCryptoKey","alg","usages","expected","getNamedCurve","namedCurve","some","includes","msg","last","checkUsage","actual","invalidKeyInput","withAlg","isKeyLike","process","versions","node","promisify","inflateRawCb","deflateRawCb","deflateRaw","getPrototypeOf","proto","p256","p384","p521","secp256k1","weakMap","WeakMap","kee","raw","asymmetricKeyType","asymmetricKeyDetails","buf","export","format","len","curveOid","equals","createPublicKey","curve","namedCurveToJOSE","setCurve","keyObject","generateKeyPairCb","generateKeyPair","pbkdf2cb","pbkdf2","getLength","readUInt8","subarray","num","getModulusLength","_b","modulusLength","sequence","getLengthOfSeqIndex","checkModulusLength","bZero","bTagInteger","bTagBitStr","bTagSequence","bTagOctStr","encodeLength","buffer","alloc","writeUInt32BE","offset","oids","DumbAsn1Encoder","elements","oidFor","oid","bOid","zero","one","unsignedInteger","integer","octStr","bitStr","bitS","add","seq","end","concat","major","minor","version","str","jwkImportSupported","jwk","kty","createPrivateKey","createSecretKey","base64url","enc","Asn1SequenceEncoder","isPrivate","modulus","exponent","dp","dq","qi","createInput","setModulusLength","pub","enc$1","crv","enc$2","enc$3","f2","enc$4","f3","der","importJWK","octAsKeyObject","ext","asKeyObject","decodeBase64URL","oth","checkKeyType","usage","startsWith","symmetricTypeCheck","asymmetricTypeCheck","dsaDigest","rsaPssParams","PSS","padding","constants","RSA_PKCS1_PSS_PADDING","saltLength","RSA_PSS_SALTLEN_DIGEST","ecCurveAlgMap","keyForCrypto","hashAlgorithm","mgf1HashAlgorithm","dsaEncoding","getSignVerifyKey","oneShotSign","crypto","sign","getSignKey","hmac","createHmac","hmacDigest","digest","nodeDigest","nodeKey","oneShotCallbackSupported","oneShotVerify","flattenedVerify","jws","protected","payload","signature","parsedProt","protectedHeader","sources","filter","Boolean","acc","parameters","size","parameter","Set","isDisjoint","joseHeader","extensions","Err","recognizedDefault","recognizedOption","crit","recognized","validateCrit","b64","algorithms","option","validateAlgorithms","resolvedKey","buffers","encode","verified","getVerifyKey","timingSafeEqual","keyInput","unprotectedHeader","day","hour","REGEX","secs","matched","parseFloat","toLowerCase","round","minute","normalizeTyp","jwtPayload","encodedPayload","typ","issuer","iss","subject","sub","audience","audPayload","aud","audOption","tolerance","clockTolerance","currentDate","now","date","floor","iat","maxTokenAge","nbf","age","jwtVerify","jwt","compactVerify","conversions","lib","createNumberConversion","bitLength","typeOpts","unsigned","lowerBound","pow","upperBound","moduloVal","moduloBitLength","moduloBound","opts","enforceRange","Number","isFinite","abs","isNaN","clamp","evenRound","val","treatNullAsEmptyString","codePointAt","fromCodePoint","module","exports","mixin","target","source","getOwnPropertyNames","defineProperty","getOwnPropertyDescriptor","wrapperSymbol","implSymbol","wrapperForImpl","impl","implForWrapper","wrapper","maxInt","base","regexPunycode","regexNonASCII","regexSeparators","errors","overflow","stringFromCharCode","RangeError","mapDomain","fn","parts","ucs2decode","output","counter","extra","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","inputLength","bias","basic","lastIndexOf","oldi","codePoint","baseMinusT","out","currentValue","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","punycode_1","ucs2","toASCII","toUnicode","punycode","require$$0","mappingTable","PROCESSING_OPTIONS","TRANSITIONAL","NONTRANSITIONAL","findStatus","mid","regexAstralSymbols","countSymbols","combiningMarksRegex","validateLabel","label","processing_option","substr","processing","domain_name","useSTD3","hasError","processed","mapChars","labels","validation","tr46","verifyDnsLength","total","domain","require$$1","specialSchemes","ftp","file","gopher","http","https","ws","wss","failure","at","idx","isASCIIDigit","isASCIIAlpha","isASCIIHex","isSingleDot","isWindowsDriveLetterString","isSpecialScheme","scheme","isSpecial","percentEncode","hex","isC0ControlPercentEncode","extraPathPercentEncodeSet","isPathPercentEncode","extraUserinfoPercentEncodeSet","isUserinfoPercentEncode","percentEncodeChar","encodeSetPredicate","cStr","utf8PercentEncode","parseIPv4Number","substring","parseHost","isSpecialArg","address","pieceIndex","compress","pointer","numbersSeen","ipv4Piece","swaps","temp","parseIPv6","decoded","parseOpaqueHost","utf8PercentDecode","asciiDomain","ipv4Host","numbers","part","ipv4","parseIPv4","serializeHost","host","serializeIPv4","seqResult","arr","maxIdx","maxLen","currStart","currLen","findLongestZeroSequence","ignore0","serializeIPv6","shortenPath","includesCredentials","username","password","URLStateMachine","encodingOverride","stateOverride","parseError","port","query","fragment","cannotBeABaseURL","res","trimControlChars","trimTabAndNewline","state","atFlag","arrFlag","passwordTokenSeenFlag","ret","isASCIIAlphanumeric","encodedCodePoints","fileOtherwiseCodePoints","cp1","cp2","isDoubleDot","shift","serializeURL","excludeFragment","serializeURLOrigin","parseURL","tuple","serializeOrigin","basicURLParse","usm","baseURL","setTheUsername","setThePassword","cannotHaveAUsernamePasswordPort","serializeInteger","URLImpl_1","implementation","constructorArgs","parsedBase","parsedURL","_url","protocol","hostname","pathname","toJSON","utils","Impl","require$$2","setup","is","enumerable","configurable","create","privateData","interface","expose","Window","Worker","publicApi","Readable","Stream","BUFFER","TYPE","Blob","blobParts","element","ArrayBuffer","isView","byteOffset","byteLength","arrayBuffer","ab","stream","readable","_read","relativeStart","relativeEnd","span","slicedBuffer","blob","FetchError","systemError","errno","convert","defineProperties","toStringTag","writable","require","INTERNALS","PassThrough","_this","_ref","_ref$size","_ref$timeout","timeout","isURLSearchParams","isBlob","isBuffer","disturbed","on","err","consumeBody","_this4","reject","accum","accumBytes","abort","resTimeout","chunk","append","getAll","sort","instance","p1","p2","bodyUsed","getBoundary","pipe","extractContentType","getTotalBytes","getLengthSync","_lengthRetrievers","hasKnownLength","then","ct","_this2","textConverted","_this3","charset","convertBody","mixIn","desc","invalidTokenRegex","invalidHeaderCharRegex","validateName","validateValue","find","MAP","init","rawHeaders","headerNames","headerName","iterator","pairs","pair","callback","thisArg","getHeaders","_pairs$i","createHeadersIterator","values","kind","INTERNAL","HeadersIteratorPrototype","setPrototypeOf","_INTERNAL","done","exportNodeCompatibleHeaders","__proto__","hostHeaderKey","INTERNALS$1","STATUS_CODES","Response","contentType","redirected","INTERNALS$2","whatwgUrl","parse_url","format_url","urlStr","streamDestructionSupported","isRequest","Request","inputBody","signal","isAbortSignal","follow","agent","AbortError","URL$1","PassThrough$1","request","contentLengthValue","totalBytes","getNodeRequestOptions","send","destroy","emit","aborted","abortAndFinalize","finalize","req","reqTimeout","removeEventListener","addEventListener","once","socket","createHeadersLenient","isRedirect","statusCode","locationURL","requestOpts","destination","original","orig","dest","endsWith","isDomainOrSubdomain","response_options","statusMessage","codings","zlibOptions","flush","zlib","Z_SYNC_FLUSH","finishFlush","createGunzip","createBrotliDecompress","createInflate","createInflateRaw","write","writeToStream","refreshTokenCookieName","generateCookie","cookieDomain","cookieMaxAge","cookiePath","withCookie","resp","_d","sessionJwt","refreshJwt","rest","getOwnPropertySymbols","propertyIsEnumerable","__rest","cookies","cookie","getCookieValue","_c","wrapWith","wrappingFn","pathSections","section","wrap","getAuthorizationClaimItems","authInfo","apiPaths","load","withUser","sdk","managementKey","identifier","displayName","roleNames","userTenants","transformResponse","searchAll","tenantIds","limit","users","withTenant","selfProvisioningDomains","createWithId","tenantId","withJWT","customClaims","globalThis","sdkWithAttributes","origBeforeRequest","config","conf","coreSdk","createSdk","management","withManagement","kid","publicKeys","all","fetchKeys","getKey","errors.JWTClaimValidationFailed","sessionToken","refreshToken","validateJwt","jwtResp","refreshTokenErr","validatePermissions","permissions","validateTenantPermissions","granted","every","perm","validateRoles","roles","validateTenantRoles","membership","role","RefreshTokenCookieName","SessionTokenCookieName"],"mappings":"07BAAA,SAASA,EAAEA,GAAGC,KAAKC,QAAQF,CAAC,CAACA,EAAEG,UAAU,IAAIC,MAAMJ,EAAEG,UAAUE,KAAK,wBAAwB,IAAIC,EAAE,oBAAoBC,QAAQA,OAAOC,MAAMD,OAAOC,KAAKC,KAAKF,SAAS,SAASD,GAAG,IAAII,EAAEC,OAAOL,GAAGM,QAAQ,MAAM,IAAI,GAAGF,EAAEG,OAAO,GAAG,EAAE,MAAM,IAAIb,EAAE,qEAAqE,IAAI,IAAIc,EAAEC,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,GAAGH,EAAEL,EAAES,OAAOF,MAAMF,IAAID,EAAEE,EAAE,EAAE,GAAGF,EAAEC,EAAEA,EAAEC,IAAI,GAAGE,GAAGP,OAAOS,aAAa,IAAIN,KAAK,EAAEE,EAAE,IAAI,EAAED,EAAE,oEAAoEM,QAAQN,GAAG,OAAOG,CAAC,EAAoX,SAASJ,EAAEd,GAAGC,KAAKC,QAAQF,CAAC,CAAC,SAASe,EAAEf,EAAEM,GAAG,GAAG,iBAAiBN,EAAE,MAAM,IAAIc,EAAE,2BAA2B,IAAIC,GAAE,KAAMT,EAAEA,GAAG,CAAE,GAAEgB,OAAO,EAAE,EAAE,IAAI,OAAOC,KAAKC,MAA5gB,SAAWxB,GAAG,IAAIU,EAAEV,EAAEY,QAAQ,KAAK,KAAKA,QAAQ,KAAK,KAAK,OAAOF,EAAEG,OAAO,GAAG,KAAK,EAAE,MAAM,KAAK,EAAEH,GAAG,KAAK,MAAM,KAAK,EAAEA,GAAG,IAAI,MAAM,QAAQ,KAAK,4BAA4B,IAAI,OAAO,SAASV,GAAG,OAAOyB,mBAAmBnB,EAAEN,GAAGY,QAAQ,QAAQ,SAASZ,EAAEM,GAAG,IAAII,EAAEJ,EAAEoB,WAAW,GAAGC,SAAS,IAAIC,cAAc,OAAOlB,EAAEG,OAAO,IAAIH,EAAE,IAAIA,GAAG,IAAIA,CAAE,IAAG,CAAhK,CAAkKA,EAAuB,CAApB,MAAMV,GAAG,OAAOM,EAAEI,EAAE,CAAC,CAAiKA,CAAEV,EAAE6B,MAAM,KAAKd,IAAgE,CAA3D,MAAMf,GAAG,MAAM,IAAIc,EAAE,4BAA4Bd,EAAEE,QAAQ,CAAC,CAACY,EAAEX,UAAU,IAAIC,MAAMU,EAAEX,UAAUE,KAAK,yKCapoCyB,EAAiB,4BAMjBC,EAAU,oBACVC,EAAS,6BAITC,EAAe,mDACfC,EAAgB,QAChBC,EAAe,MACfC,EAAa,mGASbC,EAAe,WAGfC,EAAe,8BAGfC,EAA8B,iBAAVC,GAAsBA,GAAUA,EAAOC,SAAWA,QAAUD,EAGhFE,EAA0B,iBAARC,MAAoBA,MAAQA,KAAKF,SAAWA,QAAUE,KAGxEC,EAAOL,GAAcG,GAAYG,SAAS,cAATA,GAkCrC,IASMC,EATFC,EAAaC,MAAM7C,UACnB8C,EAAYJ,SAAS1C,UACrB+C,EAAcT,OAAOtC,UAGrBgD,EAAaP,EAAK,sBAGlBQ,GACEN,EAAM,SAASO,KAAKF,GAAcA,EAAWG,MAAQH,EAAWG,KAAKC,UAAY,KACvE,iBAAmBT,EAAO,GAItCU,EAAeP,EAAUtB,SAGzB8B,EAAiBP,EAAYO,eAO7BC,EAAiBR,EAAYvB,SAG7BgC,EAAaC,OAAO,IACtBJ,EAAaK,KAAKJ,GAAgB7C,QA7EjB,sBA6EuC,QACvDA,QAAQ,yDAA0D,SAAW,KAI5EkD,EAASlB,EAAKkB,OACdC,EAAShB,EAAWgB,OAGpBC,EAAMC,GAAUrB,EAAM,OACtBsB,EAAeD,GAAUxB,OAAQ,UAGjC0B,EAAcL,EAASA,EAAO3D,eAAYiE,EAC1CC,EAAiBF,EAAcA,EAAYxC,cAAWyC,EAS1D,SAASE,EAAKC,GACZ,IAAIC,GAAS,EACT3D,EAAS0D,EAAUA,EAAQ1D,OAAS,EAGxC,IADAZ,KAAKwE,UACID,EAAQ3D,GAAQ,CACvB,IAAI6D,EAAQH,EAAQC,GACpBvE,KAAK0E,IAAID,EAAM,GAAIA,EAAM,GAC1B,CACH,CAyFA,SAASE,EAAUL,GACjB,IAAIC,GAAS,EACT3D,EAAS0D,EAAUA,EAAQ1D,OAAS,EAGxC,IADAZ,KAAKwE,UACID,EAAQ3D,GAAQ,CACvB,IAAI6D,EAAQH,EAAQC,GACpBvE,KAAK0E,IAAID,EAAM,GAAIA,EAAM,GAC1B,CACH,CAuGA,SAASG,EAASN,GAChB,IAAIC,GAAS,EACT3D,EAAS0D,EAAUA,EAAQ1D,OAAS,EAGxC,IADAZ,KAAKwE,UACID,EAAQ3D,GAAQ,CACvB,IAAI6D,EAAQH,EAAQC,GACpBvE,KAAK0E,IAAID,EAAM,GAAIA,EAAM,GAC1B,CACH,CAsFA,SAASI,GAAaC,EAAOC,GAE3B,IADA,IA+SUC,EAAOC,EA/SbrE,EAASkE,EAAMlE,OACZA,KACL,IA6SQoE,EA7SDF,EAAMlE,GAAQ,OA6SNqE,EA7SUF,IA8SAC,GAAUA,GAASC,GAAUA,EA7SpD,OAAOrE,EAGX,OAAQ,CACV,CAUA,SAASsE,GAAQC,EAAQC,GAuDzB,IAAkBJ,EAtDhBI,EA8FF,SAAeJ,EAAOG,GACpB,GAAIE,GAAQL,GACV,OAAO,EAET,IAAIM,SAAcN,EAClB,GAAY,UAARM,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATN,GAAiBO,GAASP,GAC5B,OAAO,EAET,OAAO/C,EAAcuD,KAAKR,KAAWhD,EAAawD,KAAKR,IAC1C,MAAVG,GAAkBH,KAASxC,OAAO2C,EACvC,CAzGSM,CAAML,EAAMD,GAAU,CAACC,GAuDvBC,GADSL,EAtD+BI,GAuDvBJ,EAAQU,GAAaV,GAlD7C,IAHA,IAAIT,EAAQ,EACR3D,EAASwE,EAAKxE,OAED,MAAVuE,GAAkBZ,EAAQ3D,GAC/BuE,EAASA,EAAOQ,GAAMP,EAAKb,OAE7B,OAAQA,GAASA,GAAS3D,EAAUuE,OAAShB,CAC/C,CAUA,SAASyB,GAAaZ,GACpB,IAAKa,GAASb,KA4GEc,EA5GiBd,EA6GxB7B,GAAeA,KAAc2C,GA5GpC,OAAO,EA2GX,IAAkBA,EAzGZC,EAoTN,SAAoBf,GAGlB,IAAIgB,EAAMH,GAASb,GAASvB,EAAeG,KAAKoB,GAAS,GACzD,OAAOgB,GAAOlE,GAAWkE,GAAOjE,CAClC,CAzTiBkE,CAAWjB,IA3Z5B,SAAsBA,GAGpB,IAAIkB,GAAS,EACb,GAAa,MAATlB,GAA0C,mBAAlBA,EAAMtD,SAChC,IACEwE,KAAYlB,EAAQ,GACR,CAAZ,MAAOjF,GAAK,CAEhB,OAAOmG,CACT,CAiZsCC,CAAanB,GAAUtB,EAAarB,EACxE,OAAO0D,EAAQP,KAsJjB,SAAkBM,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOvC,EAAaK,KAAKkC,EACb,CAAZ,MAAO/F,GAAK,CACd,IACE,OAAQ+F,EAAO,EACH,CAAZ,MAAO/F,GAAK,CACf,CACD,MAAO,EACT,CAhKsBqG,CAASpB,GAC/B,CAyCA,SAASqB,GAAWC,EAAKvB,GACvB,IA+CiBC,EACbM,EAhDAiB,EAAOD,EAAIE,SACf,OAgDgB,WADZlB,SADaN,EA9CAD,KAgDmB,UAARO,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVN,EACU,OAAVA,GAjDDuB,EAAmB,iBAAPxB,EAAkB,SAAW,QACzCwB,EAAKD,GACX,CAUA,SAAStC,GAAUmB,EAAQJ,GACzB,IAAIC,EAjeN,SAAkBG,EAAQJ,GACxB,OAAiB,MAAVI,OAAiBhB,EAAYgB,EAAOJ,EAC7C,CA+dc0B,CAAStB,EAAQJ,GAC7B,OAAOa,GAAaZ,GAASA,OAAQb,CACvC,CAnUAE,EAAKnE,UAAUsE,MAnEf,WACExE,KAAKwG,SAAWvC,EAAeA,EAAa,MAAQ,CAAA,CACtD,EAkEAI,EAAKnE,UAAkB,OAtDvB,SAAoB6E,GAClB,OAAO/E,KAAK0G,IAAI3B,WAAe/E,KAAKwG,SAASzB,EAC/C,EAqDAV,EAAKnE,UAAUyG,IA1Cf,SAAiB5B,GACf,IAAIwB,EAAOvG,KAAKwG,SAChB,GAAIvC,EAAc,CAChB,IAAIiC,EAASK,EAAKxB,GAClB,OAAOmB,IAAWrE,OAAiBsC,EAAY+B,CAChD,CACD,OAAO1C,EAAeI,KAAK2C,EAAMxB,GAAOwB,EAAKxB,QAAOZ,CACtD,EAoCAE,EAAKnE,UAAUwG,IAzBf,SAAiB3B,GACf,IAAIwB,EAAOvG,KAAKwG,SAChB,OAAOvC,OAA6BE,IAAdoC,EAAKxB,GAAqBvB,EAAeI,KAAK2C,EAAMxB,EAC5E,EAuBAV,EAAKnE,UAAUwE,IAXf,SAAiBK,EAAKC,GAGpB,OAFWhF,KAAKwG,SACXzB,GAAQd,QAA0BE,IAAVa,EAAuBnD,EAAiBmD,EAC9DhF,IACT,EAmHA2E,EAAUzE,UAAUsE,MAjFpB,WACExE,KAAKwG,SAAW,EAClB,EAgFA7B,EAAUzE,UAAkB,OArE5B,SAAyB6E,GACvB,IAAIwB,EAAOvG,KAAKwG,SACZjC,EAAQM,GAAa0B,EAAMxB,GAE/B,QAAIR,EAAQ,KAIRA,GADYgC,EAAK3F,OAAS,EAE5B2F,EAAKK,MAEL9C,EAAOF,KAAK2C,EAAMhC,EAAO,IAEpB,EACT,EAwDAI,EAAUzE,UAAUyG,IA7CpB,SAAsB5B,GACpB,IAAIwB,EAAOvG,KAAKwG,SACZjC,EAAQM,GAAa0B,EAAMxB,GAE/B,OAAOR,EAAQ,OAAIJ,EAAYoC,EAAKhC,GAAO,EAC7C,EAyCAI,EAAUzE,UAAUwG,IA9BpB,SAAsB3B,GACpB,OAAOF,GAAa7E,KAAKwG,SAAUzB,IAAQ,CAC7C,EA6BAJ,EAAUzE,UAAUwE,IAjBpB,SAAsBK,EAAKC,GACzB,IAAIuB,EAAOvG,KAAKwG,SACZjC,EAAQM,GAAa0B,EAAMxB,GAO/B,OALIR,EAAQ,EACVgC,EAAKM,KAAK,CAAC9B,EAAKC,IAEhBuB,EAAKhC,GAAO,GAAKS,EAEZhF,IACT,EAiGA4E,EAAS1E,UAAUsE,MA/DnB,WACExE,KAAKwG,SAAW,CACdM,KAAQ,IAAIzC,EACZiC,IAAO,IAAKvC,GAAOY,GACnBoC,OAAU,IAAI1C,EAElB,EA0DAO,EAAS1E,UAAkB,OA/C3B,SAAwB6E,GACtB,OAAOsB,GAAWrG,KAAM+E,GAAa,OAAEA,EACzC,EA8CAH,EAAS1E,UAAUyG,IAnCnB,SAAqB5B,GACnB,OAAOsB,GAAWrG,KAAM+E,GAAK4B,IAAI5B,EACnC,EAkCAH,EAAS1E,UAAUwG,IAvBnB,SAAqB3B,GACnB,OAAOsB,GAAWrG,KAAM+E,GAAK2B,IAAI3B,EACnC,EAsBAH,EAAS1E,UAAUwE,IAVnB,SAAqBK,EAAKC,GAExB,OADAqB,GAAWrG,KAAM+E,GAAKL,IAAIK,EAAKC,GACxBhF,IACT,EA+KA,IAAI0F,GAAesB,IAAQ,SAASD,GA4SpC,IAAkB/B,EA3ShB+B,EA4SgB,OADA/B,EA3SE+B,GA4SK,GArZzB,SAAsB/B,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIO,GAASP,GACX,OAAOZ,EAAiBA,EAAeR,KAAKoB,GAAS,GAEvD,IAAIkB,EAAUlB,EAAQ,GACtB,MAAkB,KAAVkB,GAAkB,EAAIlB,IAAU,IAAa,KAAOkB,CAC9D,CA2Y8Be,CAAajC,GA1SzC,IAAIkB,EAAS,GAOb,OANIhE,EAAasD,KAAKuB,IACpBb,EAAOW,KAAK,IAEdE,EAAOpG,QAAQwB,GAAY,SAAS+E,EAAOC,EAAQC,EAAOL,GACxDb,EAAOW,KAAKO,EAAQL,EAAOpG,QAAQyB,EAAc,MAAS+E,GAAUD,EACxE,IACShB,CACT,IASA,SAASP,GAAMX,GACb,GAAoB,iBAATA,GAAqBO,GAASP,GACvC,OAAOA,EAET,IAAIkB,EAAUlB,EAAQ,GACtB,MAAkB,KAAVkB,GAAkB,EAAIlB,IAAU,IAAa,KAAOkB,CAC9D,CAiEA,SAASc,GAAQlB,EAAMuB,GACrB,GAAmB,mBAARvB,GAAuBuB,GAA+B,mBAAZA,EACnD,MAAM,IAAIC,UAvqBQ,uBAyqBpB,IAAIC,EAAW,WACb,IAAIC,EAAOC,UACP1C,EAAMsC,EAAWA,EAASK,MAAM1H,KAAMwH,GAAQA,EAAK,GACnDG,EAAQJ,EAASI,MAErB,GAAIA,EAAMjB,IAAI3B,GACZ,OAAO4C,EAAMhB,IAAI5B,GAEnB,IAAImB,EAASJ,EAAK4B,MAAM1H,KAAMwH,GAE9B,OADAD,EAASI,MAAQA,EAAMjD,IAAIK,EAAKmB,GACzBA,CACX,EAEE,OADAqB,EAASI,MAAQ,IAAKX,GAAQY,OAAShD,GAChC2C,CACT,CAGAP,GAAQY,MAAQhD,EA6DhB,IAAIS,GAAUtC,MAAMsC,QAmDpB,SAASQ,GAASb,GAChB,IAAIM,SAAcN,EAClB,QAASA,IAAkB,UAARM,GAA4B,YAARA,EACzC,CA+CA,SAASC,GAASP,GAChB,MAAuB,iBAATA,GAtBhB,SAAsBA,GACpB,QAASA,GAAyB,iBAATA,CAC3B,CAqBK6C,CAAa7C,IAn1BF,mBAm1BYvB,EAAeG,KAAKoB,EAChD,CAyDA,IAAA8C,GALA,SAAa3C,EAAQC,EAAM2C,GACzB,IAAI7B,EAAmB,MAAVf,OAAiBhB,EAAYe,GAAQC,EAAQC,GAC1D,YAAkBjB,IAAX+B,EAAuB6B,EAAe7B,CAC/C,ECh6BwDrF,GAAY,8BAA+BmH,GAAU,sBAAVA,GAAuC,sBAAvCA,GAAoE,sBAApEA,GAAiG,CAACC,MAAM,4BAA4BC,MAAM,6BAA1IF,GAAkL,yBAA0BjH,GAAU,4BAAVA,GAA6C,4BAA7CA,GAAgF,4BAAhFA,GAAmH,CAACkH,MAAM,kCAAkCC,MAAM,mCAAlKnH,GAAgN,+BAAgCC,GAAU,gCAAVA,GAAiD,gCAAjDA,GAAwF,gCAAxFA,GAAgI,yCAAhIA,GAAgL,CAACiH,MAAM,uCAAvLjH,GAAyO,mCAAoCF,GAAS,2BAATA,GAA6C,0BAA2BT,GAAS,0BAATA,GAA4C,yBAA0B8H,GAAU,uBAAVA,GAAwC,uBAAxCA,GAAsE,uBAAwBC,GAAU,CAACC,MAAM,iCAAiCC,OAAO,mCAAzDF,GAAmG,CAACC,MAAM,iCAAiCC,OAAO,mCAAlJF,GAAgM,CAACC,MAAM,qCAAvMD,GAAmP,CAACC,MAAM,gCAAgCC,OAAO,mCAAoHC,GAAS,iBAATA,GAA+B,gBAAiB,MAAMC,GAAE,KAAK,MAAMzI,EAAE,GAAG,MAAM,CAAC0I,QAAQhI,GAAG,MAAMI,EAAE,mBAAmBJ,EAAE6D,QAAQ9B,OAAOkG,YAAYjI,EAAE6D,WAAW7D,EAAE,OAAOV,EAAE4I,QAAQrH,KAAKsH,UAAU/H,GAAGb,IAAI,EAAE6I,KAAKpI,GAAG,OAAOV,EAAE+I,KAAKrI,EAAET,IAAI,EAAE+I,IAAItI,GAAG,OAAOV,EAAEiJ,IAAIvI,EAAEiB,WAAW1B,IAAI,EAAEiJ,OAAOxI,GAAG,OAAOV,EAAEmJ,OAAOzI,EAAET,IAAI,EAAEmJ,MAAM1I,GAAG,OAAOV,EAAEqJ,MAAM3I,EAAET,IAAI,EAAEqJ,OAAO5I,GAAG,OAAOV,EAAEuJ,OAAO7I,EAAET,IAAI,EAAEuJ,MAAM,IAAI/G,OAAOa,KAAKtD,GAAGyJ,SAAS/I,GAAGV,EAAEU,GAAG,CAAC,GAAG,UAAUA,EAAE,GAAGA,MAAM,KAAKV,EAAEU,MAAM,KAAKgJ,KAAK,MAAK,EAAuhB,IAAIC,IAAG,SAAS3J,GAAGA,EAAE4G,IAAI,MAAM5G,EAAE4J,OAAO,SAAS5J,EAAE6J,KAAK,OAAO7J,EAAE8J,IAAI,KAAK,CAAnE,CAAqEH,KAAIA,GAAE,CAAE,IAAG,MAAMI,GAAE,IAAI/J,IAAI,IAAI4I,QAAQ5I,EAAEgK,SAAShK,EAAEU,KAAK,MAAMI,EAAE,CAACd,GAAGgD,MAAMsC,QAAQtF,GAAGA,EAAEA,aAAa4I,QAAQ5F,MAAMiH,KAAKjK,EAAEuE,WAAWvE,EAAEyC,OAAO8B,QAAQvE,GAAG,GAAxF,CAA4FU,GAAG,OAAOI,EAAEkJ,QAAM,CAAGtJ,GAAGI,EAAEmH,MAAMjI,EAAEc,GAAGmH,EAAEjI,IAAIA,GAAGA,CAAE,GAAE,KAAKkK,GAAElK,QAAG,IAASA,OAAE,EAAOuB,KAAKsH,UAAU7I,GAAGmK,GAAE,CAACnK,EAAEU,EAAE,MAAM,IAAII,EAAEd,EAAE,OAAOU,IAAII,EAAEA,EAAE,IAAIJ,GAAG,CAAC0J,cAAc,UAAUtJ,IAAG,EAAGuJ,GAAE,EAAEC,QAAQtK,EAAEuK,UAAU7J,EAAE8J,WAAW1J,EAAE2J,OAAOxC,EAAEyC,MAAM1J,EAAE2J,aAAa1J,MAAM,MAAMF,EAAt/B,EAACf,EAAEU,KAAK,MAAMI,EAAEJ,GAAGkK,MAAM,IAAI9J,EAAE,MAAM,IAAIV,MAAM,wBAAwB,OAAOJ,EAAE6K,SAASnK,KAAKV,EAAE8K,IAAI,CAAC9K,GAAGyI,KAAIW,MAAM,WAAWJ,IAAIhJ,EAAE,IAAIkJ,OAAOlJ,EAAE,GAAGkJ,QAAQR,QAAQ1I,EAAE,GAAG0I,SAASI,KAAK9I,EAAE,GAAG8I,MAAMU,QAA7F,CAAsG9I,IAAI,MAAMuH,QAAQnH,KAAKJ,GAAG,OAAOV,EAAEiI,EAAE8C,GAAG,MAAM,cAAc,OAACF,IAAU,MAAMnK,QAAQV,EAAEgL,MAAMhL,EAAEgL,QAAQC,OAAOjL,EAAEiL,QAAQ,OAAOjL,EAAEiL,KAAK,IAAIC,QAAQC,QAAQzK,GAAGV,EAAEoL,KAAK,IAAIF,QAAQC,QAAQ5J,KAAKC,MAAMd,IAAI+H,KAAIW,MAAM,YAAYJ,IAAIhJ,EAAEgJ,IAAIrH,YAAY2H,OAAO,GAAGtJ,EAAEsJ,UAAUtJ,EAAEqL,cAAc3C,QAAQ1I,EAAE0I,SAASI,KAAKpI,GAAG8I,OAAQ,EAAhQ,CAAkQvB,IAAIA,GAAGnH,GAAyewK,CAAErD,GAAG3H,EAAEuK,UAAU,MAAMvK,GAAG,MAAMU,OAAE,EAAOA,EAAEuK,eAAevK,EAAEuK,cAActD,GAAGA,GAAG5C,KAAK+C,EAAEU,KAAKT,EAAEK,QAAQ8C,EAAEC,YAAYvK,EAAEgI,OAAOwC,EAAEC,MAAMC,GAAGtL,EAAEkI,QAAQzH,EAAE,GAAGsE,KAAKrF,EAAEsK,QAAQ5J,EAAE+K,YAAY3K,MAAM,MAAMmH,EAAE,IAAI4D,IAAI7L,EAAEU,GAAG,OAAOI,IAAImH,EAAE6D,OAAO,IAAIC,gBAAgBjL,GAAGa,YAAYsG,CAAE,EAApH,CAAsH,CAAC5C,KAAK+C,EAAEkC,QAAQtK,EAAEyL,YAAYvK,IAAI,CAACwH,QAAQqB,GAAEI,GAAEzJ,EAAEkL,GAAG,CAAC,qBAAqB,UAAU,wBAAwB,oBAAoB,MAAM9K,OAAE,EAAOA,EAAEkL,cAAc,CAAA,EAAGR,GAAGtC,OAAOwC,EAAE5C,KAAKoB,GAAE7B,GAAG4D,YAAYhL,GAAG,YAAY,OAAO,MAAMD,OAAE,EAAOA,EAAEkL,eAAelL,EAAEkL,aAAajE,EAAE,MAAMO,OAAE,EAAOA,EAAEwC,SAASxC,GAAG,MAAM,CAAC5B,IAAI,CAAC5G,GAAG0I,QAAQhI,EAAE+K,YAAY3K,EAAE6K,MAAM1D,GAAG,CAAA,IAAK3H,EAAE,CAAC+E,KAAKrF,EAAE0I,QAAQhI,EAAE+K,YAAY3K,EAAEgI,UAAK,EAAOI,OAAOS,GAAE/C,IAAI+E,MAAM1D,IAAI4B,KAAK,CAAC7J,EAAEU,GAAGgI,QAAQ5H,EAAE2K,YAAYxD,EAAE0D,MAAM3K,GAAG,CAAE,IAAGV,EAAE,CAAC+E,KAAKrF,EAAE0I,QAAQ5H,EAAE2K,YAAYxD,EAAEa,KAAKpI,EAAEwI,OAAOS,GAAEE,KAAK8B,MAAM3K,IAAI8I,IAAI,CAAC9J,EAAEU,GAAGgI,QAAQ5H,EAAE2K,YAAYxD,EAAE0D,MAAM3K,GAAG,CAAA,IAAKV,EAAE,CAAC+E,KAAKrF,EAAE0I,QAAQ5H,EAAE2K,YAAYxD,EAAEa,KAAKpI,EAAEwI,OAAOS,GAAEG,IAAI6B,MAAM3K,IAAI4I,OAAO,CAAC5J,EAAEU,GAAGgI,QAAQ5H,EAAE2K,YAAYxD,EAAE0D,MAAM3K,GAAG,CAAA,IAAKV,EAAE,CAAC+E,KAAKrF,EAAE0I,QAAQ5H,EAAE2K,YAAYxD,EAAEa,KAAKpI,EAAEwI,OAAOS,GAAEC,OAAO+B,MAAM3K,IAAG,EAAG,SAASmL,GAAEnM,EAAEU,EAAEI,GAAG,IAAImH,EAAE,IAAIjH,EAAEoL,GAAEpM,GAAGU,IAAIM,EAAE,QAAQiH,EAAEjH,EAAEqL,eAAU,IAASpE,OAAE,EAAOA,EAAEvH,IAAI,MAAMO,EAAED,EAAEF,GAAG,OAAOkC,MAAMsC,QAAQrE,GAAGA,EAAE,EAAE,CAAC,SAASmL,GAAE1L,GAAG,GAAG,iBAAiBA,IAAIA,EAAE,MAAM,IAAIN,MAAM,0BAA0B,OAAOJ,EAAEU,EAAE,CAAC,SAAS4L,GAAEtM,GAAG,MAAMuM,IAAI7L,GAAG0L,GAAEpM,GAAG,OAAM,IAAKwM,MAAMC,UAAU,IAAI/L,CAAC,CAAC,SAASgM,GAAE1M,EAAEU,GAAG,OAAOyL,GAAEnM,EAAEU,EAAE,cAAc,CAAC,SAASiM,GAAE3M,EAAEU,GAAG,OAAOyL,GAAEnM,EAAEU,EAAE,QAAQ,CAAC,MAAMkM,GAAE,IAAI5M,IAAIA,EAAE0J,KAAK,KAAK9I,QAAQ,UAAU,KAAKiK,eAAegC,GAAE7M,EAAEU,GAAG,MAAMI,QAAQd,EAAEiI,EAAE,CAAC6E,KAAKhM,EAAEwI,OAAOyB,GAAGjK,EAAEiK,GAAGgC,SAASjM,GAAGE,QAAQF,EAAEkK,QAAQI,OAAO,OAAOtK,EAAEiK,GAAG9C,EAAEzB,KAAK9F,EAAEA,EAAEM,GAAGA,EAAEiH,EAAE+E,MAAMhM,EAAEiH,CAAC,CAAC,MAAMgF,GAAE,CAACjN,EAAEU,IAAI,CAACI,EAAEJ,IAAIA,IAAIV,EAAEU,IAAII,EAAEF,QAAQ,QAAQF,GAAGwM,GAAE,IAAIlN,KAAK,CAACmN,SAASzM,IAAIV,EAAEoN,SAASpN,IAAI,MAAMc,EAAEd,EAAEU,GAAG,GAAGI,EAAE,MAAM,IAAIV,MAAMU,EAAG,KAAG,KAAMuM,GAAErN,GAAGU,GAAGV,EAAEyF,KAAK/E,GAAG4M,GAAED,GAAE,wEAAwEE,GAAEF,GAAE,2BAA2BG,GAAEP,GAAEK,GAAE,gCAAgCG,GAAER,GAAEM,GAAE,uCAAuCG,GAAET,IAAK,EAAEjN,GAAGA,EAAEa,QAAP,GAAkB,uBAA6B,MAAM8M,GAAEV,IAAGjN,GAAG,iBAAiBA,GAAG,yBAAyB4N,GAAE,IAAI5N,IAAIU,GAAG,IAAII,KAAKd,EAAEoN,SAAS,CAACpN,EAAEU,IAAIwM,MAAKlN,GAAGmN,SAASrM,EAAEJ,MAAMA,KAAKI,IAAI+M,GAAE7N,GAAG,CAAC2N,GAAE,IAAI3N,uBAAuB0N,GAAE,IAAI1N,yBAAyB8N,GAAE9N,GAAG,CAAC2N,GAAE,IAAI3N,uBAAuBwN,MAAKO,GAAE/N,GAAG,CAAC2N,GAAE,IAAI3N,uBAAuByN,MAAKO,GAAEJ,GAAEC,GAAE,cAAcI,GAAEjO,IAAC,CAAIkO,SAASF,IAAGtN,GAAGmM,GAAE7M,EAAE6J,KAAK/I,GAAW,CAAE,EAAC,CAAC6K,MAAMjL,SAAS,IAAIyN,GAAEC,GAAEC,GAAEC,GAAEC,IAAG,SAASvO,GAAGA,EAAEwO,IAAI,MAAMxO,EAAEyO,SAAS,UAAU,CAA7C,CAA+CN,KAAIA,GAAE,CAAE,IAAG,SAASnO,GAAGA,EAAEkI,MAAM,QAAQlI,EAAEwO,IAAI,MAAMxO,EAAEyO,SAAS,UAAU,CAA7D,CAA+DL,KAAIA,GAAE,KAAK,SAASpO,GAAGA,EAAE0O,QAAQ,UAAU1O,EAAE2O,QAAQ,UAAU3O,EAAE4O,UAAU,YAAY5O,EAAE6O,OAAO,QAAQ,CAA7F,CAA+FR,KAAIA,GAAE,KAAK,SAASrO,GAAGA,EAAE8O,OAAO,SAAS9O,EAAE+O,OAAO,SAAS/O,EAAEgP,OAAO,QAAQ,CAAjE,CAAmEV,KAAIA,GAAE,CAAE,IAAG,SAAStO,GAAGA,EAAE8O,OAAO,SAAS9O,EAAE+O,OAAO,SAAS/O,EAAEgP,OAAO,SAAShP,EAAEiP,YAAY,aAAa,CAA7F,CAA+FV,KAAIA,GAAE,CAAE,IAAG,MAAMW,GAAErB,GAAE,cAAcsB,GAAEvB,GAAEsB,GAAErB,GAAE,SAASuB,GAAExB,GAAEsB,IAAGG,GAAEzB,GAAEsB,GAAEnB,GAAE,UAAUuB,GAAG1B,GAAEsB,GAAEpB,GAAE,UAAUyB,GAAGvP,IAAC,CAAIgP,OAAOvM,OAAOa,KAAK8K,IAAGpE,QAAQ,CAACtJ,EAAEI,IAAI2B,OAAO+M,OAAO/M,OAAO+M,OAAO,CAAA,EAAG9O,GAAG,CAACI,CAACA,GAAGqO,IAAG,CAACzO,EAAEM,IAAI6L,GAAE7M,EAAE6J,KAAK+C,GAAE3E,GAASnH,GAAG,CAACgM,KAAK9L,EAAEyO,WAAW/O,UAAU,CAAE,GAAEqO,OAAOtM,OAAOa,KAAK8K,IAAGpE,QAAQ,CAACtJ,EAAEI,IAAI2B,OAAO+M,OAAO/M,OAAO+M,OAAO,GAAG9O,GAAG,CAACI,CAACA,GAAGsO,IAAG,CAAC1O,EAAEM,EAAEC,IAAI4L,GAAE7M,EAAE6J,KAAK+C,GAAE3E,GAASnH,GAAG,CAAC2O,WAAW/O,EAAEgP,aAAa1O,GAAG,CAAC2K,MAAM1K,UAAU,CAAE,GAAE6N,OAAOrM,OAAOa,KAAK8K,IAAGpE,QAAM,CAAGtJ,EAAEI,IAAI2B,OAAO+M,OAAO/M,OAAO+M,OAAO,CAAA,EAAG9O,GAAG,CAACI,CAACA,GAAGsO,IAAC,CAAG1O,EAAEM,IAAI6L,GAAE7M,EAAE6J,KAAK+C,GAAE3E,GAASnH,GAAG,CAAC2O,WAAW/O,EAAEiP,KAAK3O,UAAU,CAAE,GAAE4O,WAAWnN,OAAOa,KAAK8K,IAAGpE,SAAStJ,EAAEI,IAAI2B,OAAO+M,OAAO/M,OAAO+M,OAAO,CAAA,EAAG9O,GAAG,CAACI,CAACA,GAAGsO,IAAG1O,GAAGmM,GAAE7M,EAAE6J,KAAK+C,GAAE3E,GAAanH,GAAG,CAAC2O,WAAW/O,UAAU,CAAE,GAAEmP,OAAO,CAAC3H,MAAMoH,IAAI,CAAC5O,EAAEI,EAAEE,IAAI6L,GAAE7M,EAAE6J,KAAK5B,GAASC,MAAM,CAACuH,WAAW/O,EAAEwH,MAAMpH,GAAG,CAAC6K,MAAM3K,OAAOmH,MAAM1F,OAAOa,KAAK6K,IAAGnE,QAAM,CAAGtJ,EAAEI,IAAI2B,OAAO+M,OAAO/M,OAAO+M,OAAO,CAAE,EAAC9O,GAAG,CAACI,CAACA,GAAGuO,IAAC,CAAG3O,EAAEM,EAAEC,IAAI4L,GAAE7M,EAAE6J,KAAK+C,GAAE3E,GAASE,MAAMrH,GAAG,CAAC2O,WAAW/O,EAAEyH,MAAMnH,GAAG,CAAC2K,MAAM1K,UAAU,CAAE,MAAK6O,GAAGjC,GAAE,cAAckC,GAAGlC,GAAE,OAAOmC,GAAGpC,GAAEC,GAAE,UAAUoC,GAAGrC,GAAEkC,GAAGC,IAAIG,GAAGtC,GAAEkC,GAAG/B,GAAE,SAASgC,IAAII,GAAGvC,GAAEkC,GAAGhC,GAAE,SAASiC,IAAIK,GAAGpQ,IAAI,CAACgP,OAAOgB,IAAItP,GAAGmM,GAAE7M,EAAE6J,KAAK7I,GAAS,CAAC2K,MAAMjL,OAAOqO,OAAOtM,OAAOa,KAAK8K,IAAGpE,QAAQ,CAACtJ,EAAEI,IAAI2B,OAAO+M,OAAO/M,OAAO+M,OAAO,CAAE,EAAC9O,GAAG,CAACI,CAACA,GAAGmP,IAAI,CAACvP,EAAEuH,EAAEhH,EAAEF,IAAI8L,GAAE7M,EAAE6J,KAAK+C,GAAE5L,GAASF,GAAG,CAAC2O,WAAW/O,EAAE2P,IAAIpI,EAAEyH,aAAazO,GAAG,CAAC0K,MAAM5K,UAAU,CAAA,GAAI+N,OAAOrM,OAAOa,KAAK8K,IAAGpE,QAAQ,CAACtJ,EAAEI,IAAI2B,OAAO+M,OAAO/M,OAAO+M,OAAO,CAAE,EAAC9O,GAAG,CAACI,CAACA,GAAGmP,IAAI,CAACvP,EAAEuH,EAAEhH,IAAI4L,GAAE7M,EAAE6J,KAAK+C,GAAE5L,GAASF,GAAG,CAAC2O,WAAW/O,EAAE2P,IAAIpI,EAAE0H,KAAK1O,UAAU,CAAE,GAAE2O,WAAWnN,OAAOa,KAAK8K,IAAGpE,SAAStJ,EAAEI,IAAI2B,OAAO+M,OAAO/M,OAAO+M,OAAO,GAAG9O,GAAG,CAACI,CAACA,GAAGmP,KAAKvP,EAAEuH,IAAI4E,GAAE7M,EAAE6J,KAAK+C,GAAE5L,GAAaF,GAAG,CAAC2O,WAAW/O,EAAE2P,IAAIpI,UAAU,CAAA,GAAI4H,OAAO,CAAC3H,MAAMiI,IAAE,CAAGzP,EAAEI,EAAEmH,EAAEhH,IAAI4L,GAAE7M,EAAE6J,KAAK7I,GAASkH,MAAM,CAACuH,WAAW/O,EAAEwH,MAAMpH,EAAEuP,IAAIpI,GAAG,CAAC0D,MAAM1K,OAAOkH,MAAM1F,OAAOa,KAAK6K,IAAGnE,QAAM,CAAGtJ,EAAEI,IAAI2B,OAAO+M,OAAO/M,OAAO+M,OAAO,CAAA,EAAG9O,GAAG,CAACI,CAACA,GAAGoP,IAAI,CAACxP,EAAEuH,EAAEhH,EAAEF,IAAI8L,GAAE7M,EAAE6J,KAAK+C,GAAE5L,GAASmH,MAAMrH,GAAG,CAAC2O,WAAW/O,EAAEyH,MAAMF,EAAEoI,IAAIpP,GAAG,CAAC0K,MAAM5K,UAAU,CAAE,MAAKuP,GAAGzC,GAAE,cAAc0C,GAAG1C,GAAE,OAAO2C,GAAG5C,GAAEC,GAAE,UAAU4C,GAAG7C,GAAE0C,GAAGC,IAAIG,GAAG9C,GAAEC,GAAE,eAAe8C,GAAG/C,GAAE0C,GAAGxC,GAAE,SAASyC,IAAIK,GAAG5Q,IAAI,CAACgP,OAAOwB,IAAI9P,GAAGmM,GAAE7M,EAAE6J,KAAK5I,GAAS,CAAC0K,MAAMjL,OAAOqO,OAAO0B,IAAI,CAAC/P,EAAEI,EAAEmH,EAAEjH,IAAI6L,GAAE7M,EAAE6J,KAAK+C,GAAE3L,GAASmN,GAAElG,OAAO,CAACuH,WAAW/O,EAAE2P,IAAIvP,EAAE4O,aAAazH,GAAG,CAAC0D,MAAM3K,OAAO4O,WAAWa,IAAE,CAAG/P,EAAEI,IAAI+L,GAAE7M,EAAE6J,KAAK+C,GAAE3L,GAAamN,GAAElG,OAAO,CAACuH,WAAW/O,EAAE2P,IAAIvP,OAAOgO,OAAO2B,IAAE,CAAG/P,EAAEI,EAAEmH,IAAI4E,GAAE7M,EAAE6J,KAAK+C,GAAE3L,GAASmN,GAAElG,OAAO,CAACuH,WAAW/O,EAAE2P,IAAIvP,EAAE6O,KAAK1H,OAAO4I,eAAeH,IAAE,CAAGhQ,EAAEI,IAAI,IAAIoK,SAASjD,IAAI,MAAM6I,kBAAkB9P,EAAE+P,UAAUhQ,GAAG,GAAG+P,kBAAkB9Q,EAAE,IAAI+Q,UAAUrQ,EAAE,KAAK,CAAE,KAAA,CAAKoQ,kBAAkBE,KAAKC,IAAIjR,GAAG,IAAI,KAAK+Q,UAAUC,KAAKE,IAAIxQ,GAAG,IAAI,OAApH,CAA4HI,GAAG,IAAIR,EAAE,MAAM8H,EAAE+I,aAAW,UAAY,MAAMrQ,QAAQd,EAAE6J,KAAK5I,GAAU,CAACmQ,WAAW1Q,IAAII,EAAEiK,KAAKsG,cAAcjJ,GAAG9H,GAAGgR,aAAahR,GAAG2H,EAAE4E,GAAE3B,QAAQC,QAAQrK,KAAM,GAAEE,GAAGV,EAAEiR,YAAU,KAAOtJ,EAAE,CAAC+E,MAAM,CAAC9M,QAAQ,qCAAqCa,MAAM+L,KAAK,KAAK/B,IAAG,IAAKsG,cAAcjJ,EAAG,GAAErH,EAAG,MAAK8O,OAAO,CAAC3H,MAAMyI,IAAE,CAAGjQ,EAAEI,EAAEmH,EAAEjH,IAAI6L,GAAE7M,EAAE6J,KAAK5I,GAASiH,MAAM,CAACuH,WAAW/O,EAAEwH,MAAMpH,EAAEuP,IAAIpI,GAAG,CAAC0D,MAAM3K,UAAU,IAAIwQ,IAAI,SAASxR,GAAGA,EAAEyR,SAAS,WAAWzR,EAAE0R,OAAO,SAAS1R,EAAE2R,OAAO,SAAS3R,EAAE4R,UAAU,YAAY5R,EAAE6R,OAAO,SAAS7R,EAAE8R,MAAM,OAAO,CAA/H,CAAiIN,KAAKA,GAAG,KAAK,MAAMO,GAAGnE,GAAEC,GAAE,SAASmE,GAAGhS,KAAKsI,MAAM7F,OAAOa,KAAKkO,IAAIxH,QAAQ,CAACtJ,EAAEI,IAAI2B,OAAO+M,OAAO/M,OAAO+M,OAAO,CAAE,EAAC9O,GAAG,CAACI,CAACA,GAAG+J,MAAMnK,GAAGuR,SAAShK,GAAE,GAAI,GAAGjH,EAAEC,KAAK,MAAMX,QAAQN,EAAE6J,KAAK9I,GAAQC,GAAG,CAAA,EAAG,CAACyK,YAAYhJ,OAAO+M,OAAO,CAAC0C,SAASpR,GAAGJ,GAAG,CAACyR,YAAYzR,IAAIiL,MAAM1K,IAAI,IAAIgH,IAAI3H,EAAEyK,GAAG,OAAO8B,GAAE3B,QAAQC,QAAQ7K,IAAI,MAAM0I,IAAIZ,SAAS9H,EAAE8K,OAAO7K,OAAO6R,SAASC,KAAKjK,CAAA,KAAM,CAAA,GAAI8F,SAAS6D,IAAIrR,GAAGmM,GAAE7M,EAAE6J,KAAK9I,GAAW,CAAC+L,KAAKpM,SAAS4R,GAAG1E,GAAEC,GAAE,WAAW0E,GAAG3E,GAAEC,GAAE,eAAeA,GAAE,UAAUA,GAAE,kBAAkB2E,GAAGxS,IAAC,CAAIsI,MAAMgK,IAAE,CAAG5R,EAAEI,IAAI+L,GAAE7M,EAAE6J,KAAKrB,GAAQ,CAACiK,OAAO/R,EAAEgS,QAAQ5R,OAAO6R,KAAKJ,IAAE,CAAG7R,EAAEI,EAAEmH,EAAEjH,IAAI6L,GAAE7M,EAAE6J,KAAKrB,GAAO,CAACoK,YAAYlS,EAAEmS,OAAO/R,EAAEgS,cAAc7K,EAAE8K,MAAM/R,SAASgS,GAAGpF,GAAEC,GAAE,WAAWoF,GAAGrF,GAAEC,GAAE,SAASqF,GAAGlT,KAAKsI,MAAM0K,UAAUtS,EAAEI,GAAGmR,SAAShK,GAAE,GAAI,CAAE,EAACjH,EAAEC,KAAK,MAAMF,QAAQf,EAAE6J,KAAKvJ,GAAQU,GAAG,CAAE,EAAC,CAACyK,YAAY,CAAC0H,OAAOzS,EAAEyR,YAAYrR,GAAG6K,MAAM1K,IAAI,IAAIgH,IAAIlH,EAAEgK,GAAG,OAAO8B,GAAE3B,QAAQC,QAAQpK,IAAI,MAAMiI,IAAIZ,SAASrH,EAAEqK,OAAO7K,OAAO6R,SAASC,KAAKjK,CAAE,IAAG8F,SAAS+E,IAAIvS,GAAGmM,GAAE7M,EAAE6J,KAAKvJ,GAAW,CAACwM,KAAKpM,SAAS0S,GAAGvF,GAAE,cAAcwF,GAAGzF,GAAEwF,GAAGvF,GAAE,SAASyF,GAAG1F,GAAEwF,IAAIG,GAAG3F,GAAEwF,IAAII,GAAGxT,IAAC,CAAI8O,OAAOwE,IAAE,CAAG5S,EAAEI,IAAI+L,GAAE7M,EAAE6J,KAAKzB,GAAS,CAACqH,WAAW/O,EAAEiP,KAAK7O,OAAOkO,OAAOqE,IAAI,CAAC3S,EAAEI,EAAEmH,EAAEjH,IAAI6L,GAAE7M,EAAE6J,KAAKzB,GAAS,CAACqH,WAAW/O,EAAEoM,KAAKhM,EAAE4O,aAAazH,GAAG,CAAC0D,MAAM3K,OAAO6O,OAAO0D,IAAE,CAAG7S,EAAEI,IAAI+L,GAAE7M,EAAE6J,KAAKzB,GAAS,CAACqH,WAAW/O,GAAG,CAACiL,MAAM7K,SAAS2S,GAAG5F,GAAE,cAAc6F,GAAG7F,GAAE,UAAU8F,GAAG/F,GAAE6F,GAAGC,GAAG7F,GAAE,SAAS+F,GAAGhG,GAAE6F,GAAGC,IAAIG,GAAGjG,GAAE6F,GAAGC,GAAG7F,GAAE,UAAUiG,GAAGlG,GAAEC,GAAE,iBAAiBA,GAAE,aAAakG,GAAG/T,IAAI,CAAC8O,OAAO,CAACxG,MAAMqL,IAAE,CAAGjT,EAAEI,EAAEmH,IAAI4E,GAAE7M,EAAE6J,KAAKxB,GAASC,MAAM,CAACqH,KAAK,CAACF,WAAW/O,EAAEL,KAAK4H,GAAG+L,OAAOlT,OAAOyH,OAAOuL,IAAI,CAACpT,EAAEI,IAAI+L,GAAE7M,EAAE6J,KAAKxB,GAASE,OAAO,CAAC0L,cAAcvT,EAAEqM,SAASjM,QAAQiO,OAAO,CAACzG,MAAMsL,IAAE,CAAGlT,EAAEI,EAAEmH,EAAEjH,IAAI6L,GAAE7M,EAAE6J,KAAKxB,GAASC,MAAM,CAACmH,WAAW/O,EAAEsT,OAAOlT,EAAE4O,aAAazH,GAAG,CAAC0D,MAAM3K,OAAOuH,OAAOuL,IAAI,CAACpT,EAAEI,IAAI+L,GAAE7M,EAAE6J,KAAKxB,GAASE,OAAO,CAAC0L,cAAcvT,EAAEqM,SAASjM,QAAQ8O,WAAW,CAACtH,MAAMsL,IAAE,CAAGlT,EAAEI,IAAI+L,GAAE7M,EAAE6J,KAAKxB,GAAaC,MAAM,CAACmH,WAAW/O,EAAEsT,OAAOlT,QAAQ+O,OAAO,CAACvH,MAAMuL,IAAE,CAAGnT,EAAEI,EAAEmH,IAAI4E,GAAE7M,EAAE6J,KAAKxB,GAASC,MAAM,CAACmH,WAAW/O,EAAEsT,OAAOlT,GAAG,CAAC6K,MAAM1D,OAAOM,OAAOuL,IAAE,CAAGpT,EAAEI,IAAI+L,GAAE7M,EAAE6J,KAAKxB,GAASE,OAAO,CAAC0L,cAAcvT,EAAEqM,SAASjM,UAAUoT,GAAGtG,GAAEC,GAAE,UAAU,IAAOsG,GAAG,MAAMC,GAAGxG,GAAE,EAAK,YAAYuG,GAAGtG,GAAE,aAAaZ,GAAE,EAAEjN,EAAEc,IAAImH,GAAGiF,MAAKpM,GAAGqM,SAASzM,GAAEuH,EAAOoM,cAArC,CAAhC,EAAwEF,IAA1ClH,KAArCW,EAA0F,EAAErD,UAAUvK,EAAEyK,OAAO/J,EAAE4J,QAAQxJ,EAAE4J,MAAMzC,EAAE0C,aAAa3J,MAAM,OAAOC,EAAEoJ,GAAE,CAACC,QAAQxJ,GAAG,0BAA0ByJ,UAAUvK,EAAEyK,OAAO/J,EAAEgK,MAAMzC,EAAE0C,aAAa3J,IAAI,CAACsT,UAAUrG,GAAEhN,GAAGsT,IAAIhF,GAAGtO,GAAGuT,UAAUpE,GAAGnP,GAAGwT,cAAc7D,GAAG3P,GAAGyT,MAAM1C,GAAG/Q,GAAG0T,KAAKzB,GAAGjS,GAAG2T,KAAKpB,GAAGvS,GAAG4T,SAASd,GAAG9S,GAAG6T,KAAKtC,GAAGvR,GAAG8T,QAAQ/U,GAAG6M,GAAE5L,EAAE4I,KAAzgT,mBAAghT,CAAE,EAAC,CAAC8B,MAAM3L,KAAKgV,OAAOhV,GAAG6M,GAAE5L,EAAE4I,KAAxhT,kBAA+hT,CAAA,EAAG,CAAC8B,MAAM3L,KAAKiV,UAAUjV,GAAG6M,GAAE5L,EAAE4I,KAA3iT,qBAAkjT,CAAA,EAAG,CAAC8B,MAAM3L,KAAK4Q,GAAG5Q,GAAG6M,GAAE5L,EAAE2F,IAApjT,cAA0jT,CAAC+E,MAAM3L,KAAKkV,aAAahB,GAAG5H,IAAG6I,kBAAkBjB,GAAGxH,IAAG0I,YAAYlB,GAAGvH,IAAG0I,WAAWpU,GAAG,IAAIA,CAAE,IAAGmT,GAAGkB,gBAAgBlH,GCCrkW,MAAMmH,GAAU,IAAIC,YACdC,GAAU,IAAIC,YCQvBC,SAAOC,WAAW,aASf,MAAMC,GAAU9C,GAAU4C,EAAMA,OAAC1L,KAhBxC,SAAmB8I,GACf,IAAI+C,EAAU/C,EAId,OAHI+C,aAAmBC,aACnBD,EAAUL,GAAQI,OAAOC,IAEtBA,CACX,CAU6CE,CAAUjD,GAAQ,UCnBxD,MAAMkD,WAAkB7V,MAC3B8V,YAAYhW,GACR,IAAIiW,EACJC,MAAMlW,GACND,KAAK6M,KAAO,mBACZ7M,KAAKI,KAAOJ,KAAKiW,YAAY7V,KACM,QAAlC8V,EAAK/V,MAAMiW,yBAAsC,IAAPF,GAAyBA,EAAGtS,KAAKzD,MAAOH,KAAMA,KAAKiW,YACjG,CACUpJ,kBACP,MAAO,kBACV,EAEE,MAAMwJ,WAAiCL,GAC1CC,YAAYhW,EAASqW,EAAQ,cAAeC,EAAS,eACjDJ,MAAMlW,GACND,KAAK6M,KAAO,kCACZ7M,KAAKsW,MAAQA,EACbtW,KAAKuW,OAASA,CACjB,CACU1J,kBACP,MAAO,iCACV,EAEE,MAAM2J,WAAmBR,GAC5BC,YAAYhW,EAASqW,EAAQ,cAAeC,EAAS,eACjDJ,MAAMlW,GACND,KAAK6M,KAAO,kBACZ7M,KAAKsW,MAAQA,EACbtW,KAAKuW,OAASA,CACjB,CACU1J,kBACP,MAAO,iBACV,EAEE,MAAM4J,WAA0BT,GACnCC,cACIE,SAAS1O,WACTzH,KAAK6M,KAAO,0BACf,CACUA,kBACP,MAAO,0BACV,EAEE,MAAM6J,WAAyBV,GAClCC,cACIE,SAAS1O,WACTzH,KAAK6M,KAAO,wBACf,CACUA,kBACP,MAAO,wBACV,EAqBE,MAAM8J,WAAmBX,GAC5BC,cACIE,SAAS1O,WACTzH,KAAK6M,KAAO,iBACf,CACUA,kBACP,MAAO,iBACV,EAEE,MAAM+J,WAAmBZ,GAC5BC,cACIE,SAAS1O,WACTzH,KAAK6M,KAAO,iBACf,CACUA,kBACP,MAAO,iBACV,EAkDE,MAAMgK,WAAuCb,GAChDC,cACIE,SAAS1O,WACTzH,KAAK6M,KAAO,wCACZ7M,KAAKC,QAAU,+BAClB,CACU4M,kBACP,MAAO,uCACV,EC/IL,IAAAiK,GAAeC,EAAKC,MAAMF,YACnBG,GAAQF,EAAKC,MAAMF,YAAYG,GAC/BA,GAAe,MAAPA,GAAeA,aAAeC,EAASA,UCA/C,MAAMC,GAAcJ,EAAKC,MAAMG,YAC/BpS,GAAQgS,EAAKC,MAAMG,YAAYpS,GAE7BA,IAAQ,ECNjB,SAASqS,GAAShX,EAAMiX,EAAO,kBAC3B,OAAO,IAAI/P,UAAU,kDAAkD+P,aAAgBjX,IAC3F,CACA,SAASkX,GAAYC,EAAWnX,GAC5B,OAAOmX,EAAUnX,OAASA,CAC9B,CACA,SAASoX,GAAc1Q,GACnB,OAAO2Q,SAAS3Q,EAAK1G,KAAKsX,MAAM,GAAI,GACxC,CA6BO,SAASC,GAAkB5S,EAAK6S,KAAQC,GAC3C,OAAQD,GACJ,IAAK,QACL,IAAK,QACL,IAAK,QAAS,CACV,IAAKN,GAAYvS,EAAIwS,UAAW,QAC5B,MAAMH,GAAS,QACnB,MAAMU,EAAWL,SAASG,EAAIF,MAAM,GAAI,IAExC,GADeF,GAAczS,EAAIwS,UAAUzQ,QAC5BgR,EACX,MAAMV,GAAS,OAAOU,IAAY,kBACtC,KACH,CACD,IAAK,QACL,IAAK,QACL,IAAK,QAAS,CACV,IAAKR,GAAYvS,EAAIwS,UAAW,qBAC5B,MAAMH,GAAS,qBACnB,MAAMU,EAAWL,SAASG,EAAIF,MAAM,GAAI,IAExC,GADeF,GAAczS,EAAIwS,UAAUzQ,QAC5BgR,EACX,MAAMV,GAAS,OAAOU,IAAY,kBACtC,KACH,CACD,IAAK,QACL,IAAK,QACL,IAAK,QAAS,CACV,IAAKR,GAAYvS,EAAIwS,UAAW,WAC5B,MAAMH,GAAS,WACnB,MAAMU,EAAWL,SAASG,EAAIF,MAAM,GAAI,IAExC,GADeF,GAAczS,EAAIwS,UAAUzQ,QAC5BgR,EACX,MAAMV,GAAS,OAAOU,IAAY,kBACtC,KACH,CACD,KCxEG,EDyEC,IAAKR,GAAYvS,EAAIwS,UAAW,gBAC5B,MAAMH,GAAS,gBACnB,MAEJ,IAAK,QACD,GAA2B,YAAvBrS,EAAIwS,UAAUnX,MAA6C,UAAvB2E,EAAIwS,UAAUnX,KAClD,MAAMgX,GAAS,oBAEnB,MAEJ,IAAK,QACL,IAAK,QACL,IAAK,QAAS,CACV,IAAKE,GAAYvS,EAAIwS,UAAW,SAC5B,MAAMH,GAAS,SACnB,MAAMU,EA/ElB,SAAuBF,GACnB,OAAQA,GACJ,IAAK,QACD,MAAO,QACX,IAAK,QACD,MAAO,QACX,IAAK,QACD,MAAO,QACX,QACI,MAAM,IAAIzX,MAAM,eAE5B,CAoE6B4X,CAAcH,GAE/B,GADe7S,EAAIwS,UAAUS,aACdF,EACX,MAAMV,GAASU,EAAU,wBAC7B,KACH,CACD,QACI,MAAM,IAAIxQ,UAAU,8CA1EhC,SAAoBvC,EAAK8S,GACrB,GAAIA,EAAOjX,SAAWiX,EAAOI,MAAMH,GAAa/S,EAAI8S,OAAOK,SAASJ,KAAY,CAC5E,IAAIK,EAAM,sEACV,GAAIN,EAAOjX,OAAS,EAAG,CACnB,MAAMwX,EAAOP,EAAOjR,MACpBuR,GAAO,UAAUN,EAAOpO,KAAK,aAAa2O,IAC7C,MAC0B,IAAlBP,EAAOjX,OACZuX,GAAO,UAAUN,EAAO,SAASA,EAAO,MAGxCM,GAAO,GAAGN,EAAO,MAErB,MAAM,IAAIvQ,UAAU6Q,EACvB,CACL,CA6DIE,CAAWtT,EAAK8S,EACpB,CEnGA,SAAS5X,GAAQkY,EAAKG,KAAWtB,GAC7B,GAAIA,EAAMpW,OAAS,EAAG,CAClB,MAAMwX,EAAOpB,EAAMpQ,MACnBuR,GAAO,eAAenB,EAAMvN,KAAK,aAAa2O,IACjD,MACyB,IAAjBpB,EAAMpW,OACXuX,GAAO,eAAenB,EAAM,SAASA,EAAM,MAG3CmB,GAAO,WAAWnB,EAAM,MAa5B,OAXc,MAAVsB,EACAH,GAAO,aAAaG,IAEG,mBAAXA,GAAyBA,EAAOlY,KAC5C+X,GAAO,sBAAsBG,EAAOlY,OAEb,iBAAXkY,GAAiC,MAAVA,GAC/BA,EAAOrC,aAAeqC,EAAOrC,YAAY7V,OACzC+X,GAAO,4BAA4BG,EAAOrC,YAAY7V,QAGvD+X,CACX,CACA,IAAAI,GAAe,CAACD,KAAWtB,IAChB/W,GAAQ,eAAgBqY,KAAWtB,GAEvC,SAASwB,GAAQZ,EAAKU,KAAWtB,GACpC,OAAO/W,GAAQ,eAAe2X,uBAA0BU,KAAWtB,EACvE,CC3BA,IAAAyB,GAAgB1T,GAAQ+R,GAAY/R,IAAQoS,GAAYpS,GACxD,MAAMiS,GAAQ,CAAC,aACXS,SAASiB,QAAQC,SAASC,OAAS,IACnC5B,GAAMnQ,KAAK,aCHakQ,EAAA8B,UAACC,cACVD,EAAAA,UAAUE,EAAYC,YCA1B,SAASnT,GAASiN,GAC7B,GAHwB,iBADN9N,EAIA8N,IAH4B,OAAV9N,GAGkC,oBAA1CxC,OAAOtC,UAAUwB,SAASkC,KAAKkP,GACvD,OAAO,EALf,IAAsB9N,EAOlB,GAAqC,OAAjCxC,OAAOyW,eAAenG,GACtB,OAAO,EAEX,IAAIoG,EAAQpG,EACZ,KAAwC,OAAjCtQ,OAAOyW,eAAeC,IACzBA,EAAQ1W,OAAOyW,eAAeC,GAElC,OAAO1W,OAAOyW,eAAenG,KAAWoG,CAC5C,CCRA,MAAMC,GAAOzD,EAAAA,OAAO1L,KAAK,CAAC,GAAI,IAAK,GAAI,IAAK,GAAI,EAAG,EAAG,IAChDoP,GAAO1D,EAAAA,OAAO1L,KAAK,CAAC,GAAI,IAAK,EAAG,EAAG,KACnCqP,GAAO3D,EAAAA,OAAO1L,KAAK,CAAC,GAAI,IAAK,EAAG,EAAG,KACnCsP,GAAY5D,EAAAA,OAAO1L,KAAK,CAAC,GAAI,IAAK,EAAG,EAAG,KACjCuP,GAAU,IAAIC,QAerBzB,GAAgB,CAAC0B,EAAKC,KACxB,IAAIxD,EACJ,IAAInR,EACJ,GAAIoS,GAAYsC,GACZ1U,EAAMmS,EAASA,UAAClN,KAAKyP,OAEpB,KAAI3C,GAAY2C,GAIjB,MAAM,IAAInS,UAAUiR,GAAgBkB,KAAQzC,KAH5CjS,EAAM0U,CAIT,CACD,GAAiB,WAAb1U,EAAIO,KACJ,MAAM,IAAIgC,UAAU,uEAExB,OAAQvC,EAAI4U,mBACR,IAAK,UACL,IAAK,QACD,MAAO,KAAK5U,EAAI4U,kBAAkBjC,MAAM,KAC5C,IAAK,SACL,IAAK,OACD,MAAO,IAAI3S,EAAI4U,kBAAkBjC,MAAM,KAC3C,IAAK,KAAM,CACP,GAAI6B,GAAQ7S,IAAI3B,GACZ,OAAOwU,GAAQ5S,IAAI5B,GAEvB,IAAIiT,EAAiD,QAAnC9B,EAAKnR,EAAI6U,4BAAyC,IAAP1D,OAAgB,EAASA,EAAG8B,WACzF,GAAKA,GAA2B,YAAbjT,EAAIO,MAGlB,IAAK0S,EAAY,CAClB,MAAM6B,EAAM9U,EAAI+U,OAAO,CAAEC,OAAQ,MAAOzU,KAAM,SACxCtE,EAAI6Y,EAAI,GAAK,IAAM,GAAK,GACxBG,EAAMH,EAAI7Y,GACViZ,EAAWJ,EAAInC,MAAM1W,EAAI,EAAGA,EAAI,EAAIgZ,GAC1C,GAAIC,EAASC,OAAOf,IAChBnB,EAAa,kBAEZ,GAAIiC,EAASC,OAAOd,IACrBpB,EAAa,iBAEZ,GAAIiC,EAASC,OAAOb,IACrBrB,EAAa,gBAEZ,KAAIiC,EAASC,OAAOZ,IAIrB,MAAM,IAAI5C,GAAiB,4CAH3BsB,EAAa,WAIhB,CACJ,OAtBGA,EAAaD,GAAcoC,EAAAA,gBAAgBpV,IAAM,GAuBrD,GAAI2U,EACA,OAAO1B,EACX,MAAMoC,EAnEO,CAACpC,IACtB,OAAQA,GACJ,IAAK,aACD,MAAO,QACX,IAAK,YACD,MAAO,QACX,IAAK,YACD,MAAO,QACX,IAAK,YACD,MAAO,YACX,QACI,MAAM,IAAItB,GAAiB,4CAClC,EAuDqB2D,CAAiBrC,GAE/B,OADAuB,GAAQ7U,IAAIK,EAAKqV,GACVA,CACV,CACD,QACI,MAAM,IAAI9S,UAAU,kDAC3B,EAEE,SAASgT,GAASC,EAAWH,GAChCb,GAAQ7U,IAAI6V,EAAWH,EAC3B,CC/EwBvB,EAAAA,UAAU2B,EAAiBC,iBCEpC5B,EAAAA,UAAU6B,EAAQC,QCZ1B,MAAMpB,GAAU,IAAIC,QACrBoB,GAAY,CAACf,EAAKtV,KACpB,IAAIyV,EAAMH,EAAIgB,UAAU,GACxB,GAAqB,IAAV,IAANb,GACD,OAAc,IAAVzV,EACOyV,EAEJY,GAAUf,EAAIiB,SAAS,EAAId,GAAMzV,EAAQ,GAEpD,MAAMwW,EAAY,IAANf,EACZA,EAAM,EACN,IAAK,IAAIhZ,EAAI,EAAGA,EAAI+Z,EAAK/Z,IAAK,CAC1BgZ,IAAQ,EAERA,GADUH,EAAIgB,UAAU,EAAI7Z,EAE/B,CACD,OAAc,IAAVuD,EACOyV,EAEJY,GAAUf,EAAIiB,SAAS,EAAId,GAAMzV,EAAQ,EAAE,EAUhDyW,GAAoBjW,IACtB,IAAImR,EAAI+E,EACR,GAAI1B,GAAQ7S,IAAI3B,GACZ,OAAOwU,GAAQ5S,IAAI5B,GAEvB,MAAMmW,EAAiH,QAAhGD,EAAyC,QAAnC/E,EAAKnR,EAAI6U,4BAAyC,IAAP1D,OAAgB,EAASA,EAAGgF,qBAAkC,IAAPD,EAAgBA,EAbvH,EAACE,EAAU5W,KACnC,MAAMyV,EAAMmB,EAASN,UAAU,GAC/B,GAAqB,IAAV,IAANb,GACD,OAAOY,GAAUO,EAASL,SAAS,GAAIvW,GAE3C,MAAMwW,EAAY,IAANf,EACZ,OAAOY,GAAUO,EAASL,SAAS,EAAIC,GAAMxW,EAAM,EAOkG6W,CAAoBrW,EAAI+U,OAAO,CAAEC,OAAQ,MAAOzU,KAAM,UAAyB,YAAbP,EAAIO,KAAqB,EAAI,GAChP,GACA,EAEJ,OADAiU,GAAQ7U,IAAIK,EAAKmW,GACVA,CAAa,EAKxB,IAAAG,GAAe,CAACtW,EAAK6S,KACjB,GAAIoD,GAAiBjW,GAAO,KACxB,MAAM,IAAIuC,UAAU,GAAGsQ,yDAC1B,EC5CL,MAIM0D,GAAQ5F,EAAAA,OAAO1L,KAAK,CAAC,IACrBuR,GAAc7F,EAAAA,OAAO1L,KAAK,CALb,IAMbwR,GAAa9F,EAAAA,OAAO1L,KAAK,CALb,IAMZyR,GAAe/F,EAAAA,OAAO1L,KAAK,CAJb,KAKd0R,GAAahG,EAAAA,OAAO1L,KAAK,CANb,IAOZ2R,GAAgB3B,IAClB,GAAIA,EAAM,IACN,OAAOtE,SAAO1L,KAAK,CAACgQ,IACxB,MAAM4B,EAASlG,EAAAA,OAAOmG,MAAM,GAC5BD,EAAOE,cAAc9B,EAAK,GAC1B,IAAI+B,EAAS,EACb,KAA0B,IAAnBH,EAAOG,IACVA,IAEJ,OADAH,EAAOG,EAAS,GAAK,IAAQ,EAAIA,EAC1BH,EAAOlE,MAAMqE,EAAS,EAAE,EAE7BC,GAAO,IAAIjY,IAAI,CACjB,CAAC,QAAS2R,SAAO1L,KAAK,gCAAgCrJ,QAAQ,KAAM,IAAK,QACzE,CAAC,YAAa+U,SAAO1L,KAAK,uBAAuBrJ,QAAQ,KAAM,IAAK,QACpE,CAAC,QAAS+U,SAAO1L,KAAK,uBAAuBrJ,QAAQ,KAAM,IAAK,QAChE,CAAC,QAAS+U,SAAO1L,KAAK,uBAAuBrJ,QAAQ,KAAM,IAAK,QAChE,CAAC,cAAe+U,SAAO1L,KAAK,6BAA6BrJ,QAAQ,KAAM,IAAK,QAC5E,CAAC,SAAU+U,SAAO1L,KAAK,iBAAiBrJ,QAAQ,KAAM,IAAK,QAC3D,CAAC,OAAQ+U,SAAO1L,KAAK,iBAAiBrJ,QAAQ,KAAM,IAAK,QACzD,CAAC,UAAW+U,SAAO1L,KAAK,iBAAiBrJ,QAAQ,KAAM,IAAK,QAC5D,CAAC,QAAS+U,SAAO1L,KAAK,iBAAiBrJ,QAAQ,KAAM,IAAK,UAE/C,MAAMsb,GACjBhG,cACIjW,KAAKY,OAAS,EACdZ,KAAKkc,SAAW,EACnB,CACDC,OAAOC,GACH,MAAMC,EAAOL,GAAKrV,IAAIyV,GACtB,IAAKC,EACD,MAAM,IAAI3F,GAAiB,8BAE/B1W,KAAKkc,SAASrV,KAAKwV,GACnBrc,KAAKY,QAAUyb,EAAKzb,MACvB,CACD0b,OACItc,KAAKkc,SAASrV,KAAK0U,GAAa7F,EAAAA,OAAO1L,KAAK,CAAC,IAAQsR,IACrDtb,KAAKY,QAAU,CAClB,CACD2b,MACIvc,KAAKkc,SAASrV,KAAK0U,GAAa7F,EAAAA,OAAO1L,KAAK,CAAC,IAAQ0L,EAAAA,OAAO1L,KAAK,CAAC,KAClEhK,KAAKY,QAAU,CAClB,CACD4b,gBAAgBC,GACZ,GAAiB,IAAbA,EAAQ,GAAW,CACnB,MAAMzC,EAAM2B,GAAac,EAAQ7b,OAAS,GAC1CZ,KAAKkc,SAASrV,KAAK0U,GAAavB,EAAKsB,GAAOmB,GAC5Czc,KAAKY,QAAU,EAAIoZ,EAAIpZ,OAAS6b,EAAQ7b,MAC3C,KACI,CACD,IAAII,EAAI,EACR,KAAsB,IAAfyb,EAAQzb,IAAwC,IAAV,IAAjByb,EAAQzb,EAAI,KACpCA,IACJ,MAAMgZ,EAAM2B,GAAac,EAAQ7b,OAASI,GAC1ChB,KAAKkc,SAASrV,KAAK0U,GAAaI,GAAac,EAAQ7b,OAASI,GAAIyb,EAAQ/E,MAAM1W,IAChFhB,KAAKY,QAAU,EAAIoZ,EAAIpZ,OAAS6b,EAAQ7b,OAASI,CACpD,CACJ,CACD0b,OAAOA,GACH,MAAM1C,EAAM2B,GAAae,EAAO9b,QAChCZ,KAAKkc,SAASrV,KAAK6U,GAAYC,GAAae,EAAO9b,QAAS8b,GAC5D1c,KAAKY,QAAU,EAAIoZ,EAAIpZ,OAAS8b,EAAO9b,MAC1C,CACD+b,OAAOC,GACH,MAAM5C,EAAM2B,GAAaiB,EAAKhc,OAAS,GACvCZ,KAAKkc,SAASrV,KAAK2U,GAAYG,GAAaiB,EAAKhc,OAAS,GAAI0a,GAAOsB,GACrE5c,KAAKY,QAAU,EAAIoZ,EAAIpZ,OAASgc,EAAKhc,OAAS,CACjD,CACDic,IAAIC,GACA9c,KAAKkc,SAASrV,KAAKiW,GACnB9c,KAAKY,QAAUkc,EAAIlc,MACtB,CACDmc,IAAI/W,EAAMyV,IACN,MAAMzB,EAAM2B,GAAa3b,KAAKY,QAC9B,OAAO8U,EAAMA,OAACsH,OAAO,CAAChX,EAAKgU,KAAQha,KAAKkc,UAAW,EAAIlC,EAAIpZ,OAASZ,KAAKY,OAC5E,EC/EL,MAAOqc,GAAOC,IAASxE,QAAQyE,QAC1BzF,MAAM,GACN9V,MAAM,KACN0E,KAAK8W,GAAQ3F,SAAS2F,EAAK,MAC1BC,GAAqBJ,IAAS,IAAiB,KAAVA,IAAgBC,IAAS,GAC9D3b,GAAS+b,IACX,GAAID,IAAkC,QAAZC,EAAIC,IAC1B,OAAOD,EAAI/R,EACLiS,EAAAA,iBAAiB,CAAEzD,OAAQ,MAAOhV,IAAKuY,IACvCnD,EAAeA,gBAAC,CAAEJ,OAAQ,MAAOhV,IAAKuY,IAEhD,OAAQA,EAAIC,KACR,IAAK,MACD,OAAOE,EAAeA,gBAACC,GAAUJ,EAAIpT,IAEzC,IAAK,MAAO,CACR,MAAMyT,EAAM,IAAIC,GACVC,OAAsB1Z,IAAVmZ,EAAI/R,EAChBuS,EAAUpI,EAAAA,OAAO1L,KAAKsT,EAAIzc,EAAG,UAC7Bkd,EAAWrI,EAAAA,OAAO1L,KAAKsT,EAAIvd,EAAG,UAChC8d,GACAF,EAAIrB,OACJqB,EAAInB,gBAAgBsB,GACpBH,EAAInB,gBAAgBuB,GACpBJ,EAAInB,gBAAgB9G,SAAO1L,KAAKsT,EAAI/R,EAAG,WACvCoS,EAAInB,gBAAgB9G,SAAO1L,KAAKsT,EAAIlV,EAAG,WACvCuV,EAAInB,gBAAgB9G,SAAO1L,KAAKsT,EAAItQ,EAAG,WACvC2Q,EAAInB,gBAAgB9G,SAAO1L,KAAKsT,EAAIU,GAAI,WACxCL,EAAInB,gBAAgB9G,SAAO1L,KAAKsT,EAAIW,GAAI,WACxCN,EAAInB,gBAAgB9G,SAAO1L,KAAKsT,EAAIY,GAAI,aAGxCP,EAAInB,gBAAgBsB,GACpBH,EAAInB,gBAAgBuB,IAExB,MACMI,EAAc,CAChBpZ,IAFQ4Y,EAAIZ,MAGZhD,OAAQ,MACRzU,KAAM,SAEJiV,EAAYsD,EAAYL,EAAgBA,iBAACW,GAAehE,EAAAA,gBAAgBgE,GAE9E,MFVoB,EAAC5D,EAAWW,KACxC3B,GAAQ7U,IAAI6V,EAAWW,EAAc,EEQ7BkD,CAAiB7D,EAAWuD,EAAQld,QAAU,GACvC2Z,CACV,CACD,IAAK,KAAM,CACP,MAAMoD,EAAM,IAAIC,GACVC,OAAsB1Z,IAAVmZ,EAAI/R,EAChB8S,EAAM3I,EAAMA,OAACsH,OAAO,CACtBtH,SAAOmG,MAAM,EAAG,GAChBnG,EAAAA,OAAO1L,KAAKsT,EAAInR,EAAG,UACnBuJ,EAAAA,OAAO1L,KAAKsT,EAAIrT,EAAG,YAEvB,GAAI4T,EAAW,CACXF,EAAIrB,OACJ,MAAMgC,EAAQ,IAAIV,GAClBU,EAAMnC,OAAO,eACbmC,EAAMnC,OAAOmB,EAAIiB,KACjBZ,EAAId,IAAIyB,EAAMvB,OACd,MAAMyB,EAAQ,IAAIZ,GAClBY,EAAMjC,MACNiC,EAAM9B,OAAOhH,SAAO1L,KAAKsT,EAAI/R,EAAG,WAChC,MAAMkT,EAAQ,IAAIb,GAClBa,EAAM9B,OAAO0B,GACb,MAAMK,EAAKD,EAAM1B,IAAIrH,EAAAA,OAAO1L,KAAK,CAAC,OAClCwU,EAAM3B,IAAI6B,GACV,MAAMhV,EAAI8U,EAAMzB,MACV4B,EAAQ,IAAIf,GAClBe,EAAM9B,IAAInT,GACV,MAAMkV,EAAKD,EAAM5B,IAAIrH,EAAAA,OAAO1L,KAAK,CAAC,KAClC2T,EAAId,IAAI+B,GACR,MAAMC,EAAMlB,EAAIZ,MACVxC,EAAYiD,mBAAiB,CAAEzY,IAAK8Z,EAAK9E,OAAQ,MAAOzU,KAAM,UAEpE,OADAgV,GAASC,EAAW+C,EAAIiB,KACjBhE,CACV,CACD,MAAM+D,EAAQ,IAAIV,GAClBU,EAAMnC,OAAO,eACbmC,EAAMnC,OAAOmB,EAAIiB,KACjBZ,EAAId,IAAIyB,EAAMvB,OACdY,EAAIhB,OAAO0B,GACX,MAAMQ,EAAMlB,EAAIZ,MACVxC,EAAYJ,kBAAgB,CAAEpV,IAAK8Z,EAAK9E,OAAQ,MAAOzU,KAAM,SAEnE,OADAgV,GAASC,EAAW+C,EAAIiB,KACjBhE,CACV,CACD,IAAK,MAAO,CACR,MAAMoD,EAAM,IAAIC,GAEhB,QAD4BzZ,IAAVmZ,EAAI/R,EACP,CACXoS,EAAIrB,OACJ,MAAMgC,EAAQ,IAAIV,GAClBU,EAAMnC,OAAOmB,EAAIiB,KACjBZ,EAAId,IAAIyB,EAAMvB,OACd,MAAMyB,EAAQ,IAAIZ,GAClBY,EAAM9B,OAAOhH,SAAO1L,KAAKsT,EAAI/R,EAAG,WAChC,MAAM7B,EAAI8U,EAAMzB,IAAIrH,EAAAA,OAAO1L,KAAK,CAAC,KACjC2T,EAAId,IAAInT,GACR,MAAMmV,EAAMlB,EAAIZ,MAChB,OAAOS,EAAgBA,iBAAC,CAAEzY,IAAK8Z,EAAK9E,OAAQ,MAAOzU,KAAM,SAC5D,CACD,MAAMgZ,EAAQ,IAAIV,GAClBU,EAAMnC,OAAOmB,EAAIiB,KACjBZ,EAAId,IAAIyB,EAAMvB,OACdY,EAAIhB,OAAOjH,SAAO1L,KAAKsT,EAAInR,EAAG,WAC9B,MAAM0S,EAAMlB,EAAIZ,MAChB,OAAO5C,EAAeA,gBAAC,CAAEpV,IAAK8Z,EAAK9E,OAAQ,MAAOzU,KAAM,QAC3D,CACD,QACI,MAAM,IAAIoR,GAAiB,+DAClC,ECjBE9L,eAAekU,GAAUxB,EAAK1F,EAAKmH,GACtC,IAAI7I,EACJ,IAAKrQ,GAASyX,GACV,MAAM,IAAIhW,UAAU,yBAGxB,GADAsQ,IAAQA,EAAM0F,EAAI1F,KACC,iBAARA,IAAqBA,EAC5B,MAAM,IAAItQ,UAAU,4DAExB,OAAQgW,EAAIC,KACR,IAAK,MACD,GAAqB,iBAAVD,EAAIpT,IAAmBoT,EAAIpT,EAClC,MAAM,IAAI5C,UAAU,2CAGxB,OADAyX,UAAyEA,GAA6B,IAAZzB,EAAI0B,KAC1FD,EACOE,GAAY,IAAK3B,EAAK1F,MAAKoH,IAAwB,QAAlB9I,EAAKoH,EAAI0B,WAAwB,IAAP9I,GAAgBA,IAE/EgJ,GAAgB5B,EAAIpT,GAC/B,IAAK,MACD,QAAgB/F,IAAZmZ,EAAI6B,IACJ,MAAM,IAAIzI,GAAiB,sEAEnC,IAAK,KACL,IAAK,MACD,OAAOuI,GAAY,IAAK3B,EAAK1F,QACjC,QACI,MAAM,IAAIlB,GAAiB,gDAEvC,CC/HA,MA8BM0I,GAAe,CAACxH,EAAK7S,EAAKsa,KACVzH,EAAI0H,WAAW,OACrB,QAAR1H,GACAA,EAAI0H,WAAW,UACf,qBAAqB9Z,KAAKoS,GAlCP,EAACA,EAAK7S,KAC7B,KAAIA,aAAe+Q,YAAnB,CAEA,IAAK2C,GAAU1T,GACX,MAAM,IAAIuC,UAAUiR,GAAgBX,EAAK7S,KAAQiS,GAAO,eAE5D,GAAiB,WAAbjS,EAAIO,KACJ,MAAM,IAAIgC,UAAU,GAAG0P,GAAMvN,KAAK,sEAL3B,CAMV,EA4BG8V,CAAmB3H,EAAK7S,GA1BJ,EAAC6S,EAAK7S,EAAKsa,KACnC,IAAK5G,GAAU1T,GACX,MAAM,IAAIuC,UAAUiR,GAAgBX,EAAK7S,KAAQiS,KAErD,GAAiB,WAAbjS,EAAIO,KACJ,MAAM,IAAIgC,UAAU,GAAG0P,GAAMvN,KAAK,4EAEtC,GAAc,SAAV4V,GAAiC,WAAbta,EAAIO,KACxB,MAAM,IAAIgC,UAAU,GAAG0P,GAAMvN,KAAK,gFAEtC,GAAc,YAAV4V,GAAoC,WAAbta,EAAIO,KAC3B,MAAM,IAAIgC,UAAU,GAAG0P,GAAMvN,KAAK,mFAEtC,GAAI1E,EAAIwS,WAAuB,WAAV8H,GAAmC,YAAbta,EAAIO,KAC3C,MAAM,IAAIgC,UAAU,GAAG0P,GAAMvN,KAAK,iFAEtC,GAAI1E,EAAIwS,WAAuB,YAAV8H,GAAoC,YAAbta,EAAIO,KAC5C,MAAM,IAAIgC,UAAU,GAAG0P,GAAMvN,KAAK,iFACrC,EAWG+V,CAAoB5H,EAAK7S,EAAKsa,EACjC,ECzCU,SAASI,GAAU7H,GAC9B,OAAQA,GACJ,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,SACD,MAAO,SACX,IAAK,QACL,IAAK,QACL,IAAK,QACD,MAAO,SACX,IAAK,QACL,IAAK,QACL,IAAK,QACD,MAAO,SACX,IAAK,QACD,OACJ,QACI,MAAM,IAAIlB,GAAiB,OAAOkB,gEAE9C,CCZuBc,QAAQyE,QAC1BzF,MAAM,GACN9V,MAAM,KACN0E,KAAK8W,GAAQ3F,SAAS2F,EAAK,MCRhC,MAAOH,GAAOC,IAASxE,QAAQyE,QAC1BzF,MAAM,GACN9V,MAAM,KACN0E,KAAK8W,GAAQ3F,SAAS2F,EAAK,MAE1BsC,KADW,aAAchH,QAAQC,YACJsE,IAAS,IAAiB,KAAVA,IAAgBC,IAAS,GACtEyC,GAAM,CACRC,QAASC,EAASA,UAACC,sBACnBC,WAAYF,EAASA,UAACG,wBAEpBC,GAAgB,IAAIlc,IAAI,CAC1B,CAAC,QAAS,SACV,CAAC,SAAU,aACX,CAAC,QAAS,SACV,CAAC,QAAS,WAEC,SAASmc,GAAatI,EAAK7S,GACtC,OAAQ6S,GACJ,IAAK,QACD,IAAK,CAAC,UAAW,SAASM,SAASnT,EAAI4U,mBACnC,MAAM,IAAIrS,UAAU,kFAExB,OAAOvC,EACX,IAAK,QACL,IAAK,QACL,IAAK,QACD,GAA8B,QAA1BA,EAAI4U,kBACJ,MAAM,IAAIrS,UAAU,qEAGxB,OADA+T,GAAmBtW,EAAK6S,GACjB7S,EACX,KAAK2a,IAAgB,QACrB,KAAKA,IAAgB,QACrB,KAAKA,IAAgB,QACjB,GAA8B,YAA1B3a,EAAI4U,kBAAiC,CACrC,MAAMwG,cAAEA,EAAaC,kBAAEA,EAAiBL,WAAEA,GAAehb,EAAI6U,qBACvDhZ,EAAS6W,SAASG,EAAIF,OAAO,GAAI,IACvC,QAAsBvT,IAAlBgc,IACCA,IAAkB,MAAMvf,KAAYwf,IAAsBD,GAC3D,MAAM,IAAI7Y,UAAU,gGAAgGsQ,KAExH,QAAmBzT,IAAf4b,GAA4BA,EAAanf,GAAU,EACnD,MAAM,IAAI0G,UAAU,4GAA4GsQ,IAEvI,MACI,GAA8B,QAA1B7S,EAAI4U,kBACT,MAAM,IAAIrS,UAAU,gFAGxB,OADA+T,GAAmBtW,EAAK6S,GACjB,CAAE7S,SAAQ4a,IACrB,KAAMD,IAAgB,QACtB,KAAMA,IAAgB,QACtB,KAAMA,IAAgB,QAClB,GAA8B,QAA1B3a,EAAI4U,kBACJ,MAAM,IAAIrS,UAAU,qEAGxB,OADA+T,GAAmBtW,EAAK6S,GACjB,CAAE7S,SAAQ4a,IACrB,IAAK,QACL,IAAK,SACL,IAAK,QACL,IAAK,QAAS,CACV,GAA8B,OAA1B5a,EAAI4U,kBACJ,MAAM,IAAIrS,UAAU,oEAExB,MAAMgR,EAASP,GAAchT,GACvB+S,EAAWmI,GAActZ,IAAIiR,GACnC,GAAIU,IAAWR,EACX,MAAM,IAAIxQ,UAAU,0DAA0DwQ,UAAiBQ,KAEnG,MAAO,CAAE+H,YAAa,aAActb,MACvC,CACD,QACI,MAAM,IAAI2R,GAAiB,OAAOkB,gEAE9C,CC1Ee,SAAS0I,GAAiB1I,EAAK7S,EAAKsa,GAC/C,GAAIta,aAAe+Q,WAAY,CAC3B,IAAK8B,EAAI0H,WAAW,MAChB,MAAM,IAAIhY,UAAUiR,GAAgBxT,KAAQiS,KAEhD,OAAOyG,EAAAA,gBAAgB1Y,EAC1B,CACD,GAAIA,aAAemS,EAAAA,UACf,OAAOnS,EAEX,GAAIoS,GAAYpS,GAEZ,OADA4S,GAAkB5S,EAAK6S,EAAKyH,GACrBnI,EAASA,UAAClN,KAAKjF,GAE1B,MAAM,IAAIuC,UAAUiR,GAAgBxT,KAAQiS,GAAO,cACvD,CCdA,IAAIuJ,GAEAA,GADAC,EAAOC,KAAK7f,OAAS,EACPiY,EAASA,UAAC2H,EAAOC,MAGjBD,EAAOC,KAEzB,MAAMA,GAAO7V,MAAOgN,EAAK7S,EAAKwB,KAC1B,MAAMgU,EAAYmG,GAAW9I,EAAK7S,EAAK,QACvC,GAAI6S,EAAI0H,WAAW,MAAO,CACtB,MAAMqB,EAAOH,EAAOI,WCfb,SAAoBhJ,GAC/B,OAAQA,GACJ,IAAK,QACD,MAAO,SACX,IAAK,QACD,MAAO,SACX,IAAK,QACD,MAAO,SACX,QACI,MAAM,IAAIlB,GAAiB,OAAOkB,gEAE9C,CDIuCiJ,CAAWjJ,GAAM2C,GAEhD,OADAoG,EAAK/Q,OAAOrJ,GACLoa,EAAKG,QACf,CACD,OAAOP,GAAYQ,GAAWnJ,GAAMrR,EAAMya,GAAQpJ,EAAK2C,GAAW,GEd/D0C,GAAOC,IAASxE,QAAQyE,QAC1BzF,MAAM,GACN9V,MAAM,KACN0E,KAAK8W,GAAQ3F,SAAS2F,EAAK,MAC1B6D,GAA2BhE,IAAS,IAAiB,KAAVA,IAAgBC,IAAS,GAC1E,IAAIgE,GAEAA,GADAV,EAAOzR,OAAOnO,OAAS,GAAKqgB,GACZpI,EAASA,UAAC2H,EAAOzR,QAGjByR,EAAOzR,OCPpBnE,eAAeuW,GAAgBC,EAAKrc,EAAK0N,GAC5C,IAAIyD,EACJ,IAAKrQ,GAASub,GACV,MAAM,IAAIzK,GAAW,mCAEzB,QAAsBxS,IAAlBid,EAAIC,gBAA0Cld,IAAfid,EAAI/f,OACnC,MAAM,IAAIsV,GAAW,yEAEzB,QAAsBxS,IAAlBid,EAAIC,WAAoD,iBAAlBD,EAAIC,UAC1C,MAAM,IAAI1K,GAAW,uCAEzB,QAAoBxS,IAAhBid,EAAIE,QACJ,MAAM,IAAI3K,GAAW,uBAEzB,GAA6B,iBAAlByK,EAAIG,UACX,MAAM,IAAI5K,GAAW,2CAEzB,QAAmBxS,IAAfid,EAAI/f,SAAyBwE,GAASub,EAAI/f,QAC1C,MAAM,IAAIsV,GAAW,yCAEzB,IAAI6K,EAAa,CAAA,EACjB,GAAIJ,EAAIC,UACJ,IACI,MAAMI,EAAkB/D,GAAU0D,EAAIC,WACtCG,EAAalgB,KAAKC,MAAMiU,GAAQI,OAAO6L,GAI1C,CAFD,MACI,MAAM,IAAI9K,GAAW,kCACxB,CAEL,ICvCe,KAAIlO,KACnB,MAAMiZ,EAAUjZ,EAAQkZ,OAAOC,SAC/B,GAAuB,IAAnBF,EAAQ9gB,QAAmC,IAAnB8gB,EAAQ9gB,OAChC,OAAO,EAEX,IAAIihB,EACJ,IAAK,MAAMxgB,KAAUqgB,EAAS,CAC1B,MAAMI,EAAatf,OAAOa,KAAKhC,GAC/B,GAAKwgB,GAAoB,IAAbA,EAAIE,KAIhB,IAAK,MAAMC,KAAaF,EAAY,CAChC,GAAID,EAAInb,IAAIsb,GACR,OAAO,EAEXH,EAAIhF,IAAImF,EACX,MARGH,EAAM,IAAII,IAAIH,EASrB,CACD,OAAO,CAAI,EDoBNI,CAAWV,EAAYJ,EAAI/f,QAC5B,MAAM,IAAIsV,GAAW,6EAEzB,MAAMwL,EAAa,IACZX,KACAJ,EAAI/f,QAEL+gB,EE7CV,SAAsBC,EAAKC,EAAmBC,EAAkBd,EAAiBU,GAC7E,QAAwBhe,IAApBge,EAAWK,WAA+Cre,IAAzBsd,EAAgBe,KACjD,MAAM,IAAIH,EAAI,kEAElB,IAAKZ,QAA4Ctd,IAAzBsd,EAAgBe,KACpC,OAAO,IAAIP,IAEf,IAAKlf,MAAMsC,QAAQoc,EAAgBe,OACC,IAAhCf,EAAgBe,KAAK5hB,QACrB6gB,EAAgBe,KAAKvK,MAAMnF,GAA2B,iBAAVA,GAAuC,IAAjBA,EAAMlS,SACxE,MAAM,IAAIyhB,EAAI,yFAElB,IAAII,EAEAA,OADqBte,IAArBoe,EACa,IAAIxe,IAAI,IAAIvB,OAAO8B,QAAQie,MAAsBD,EAAkBhe,YAGnEge,EAEjB,IAAK,MAAMN,KAAaP,EAAgBe,KAAM,CAC1C,IAAKC,EAAW/b,IAAIsb,GAChB,MAAM,IAAItL,GAAiB,+BAA+BsL,wBAE9D,QAA8B7d,IAA1Bge,EAAWH,GACX,MAAM,IAAIK,EAAI,+BAA+BL,iBAE5C,GAAIS,EAAW9b,IAAIqb,SAA6C7d,IAA/Bsd,EAAgBO,GAClD,MAAM,IAAIK,EAAI,+BAA+BL,iCAEpD,CACD,OAAO,IAAIC,IAAIR,EAAgBe,KACnC,CFcuBE,CAAa/L,GAAY,IAAI5S,IAAI,CAAC,CAAC,OAAO,KAAS0O,aAAyC,EAASA,EAAQ+P,KAAMhB,EAAYW,GAClJ,IAAIQ,GAAM,EACV,GAAIP,EAAW1b,IAAI,SACfic,EAAMnB,EAAWmB,IACE,kBAARA,GACP,MAAM,IAAIhM,GAAW,2EAG7B,MAAMiB,IAAEA,GAAQuK,EAChB,GAAmB,iBAARvK,IAAqBA,EAC5B,MAAM,IAAIjB,GAAW,6DAEzB,MAAMiM,EAAanQ,GG1DI,EAACoQ,EAAQD,KAChC,QAAmBze,IAAfye,KACE7f,MAAMsC,QAAQud,IAAeA,EAAW3K,MAAMjQ,GAAmB,iBAANA,KAC7D,MAAM,IAAIV,UAAU,IAAIub,yCAE5B,GAAKD,EAGL,OAAO,IAAIX,IAAIW,EAAW,EHkDIE,CAAmB,aAAcrQ,EAAQmQ,YACvE,GAAIA,IAAeA,EAAWlc,IAAIkR,GAC9B,MAAM,IAAInB,GAAkB,kDAEhC,GAAIkM,GACA,GAA2B,iBAAhBvB,EAAIE,QACX,MAAM,IAAI3K,GAAW,qCAGxB,GAA2B,iBAAhByK,EAAIE,WAA0BF,EAAIE,mBAAmBxL,YACjE,MAAM,IAAIa,GAAW,0DAEzB,IAAIoM,GAAc,EACC,mBAARhe,IACPA,QAAYA,EAAIyc,EAAYJ,GAC5B2B,GAAc,GAElB3D,GAAaxH,EAAK7S,EAAK,UACvB,MAAMwB,E1BxEH,YAAmByc,GACtB,MAAMjB,EAAOiB,EAAQjZ,QAAO,CAAC8X,GAAOjhB,YAAaihB,EAAMjhB,GAAQ,GACzDiZ,EAAM,IAAI/D,WAAWiM,GAC3B,IAAI/gB,EAAI,EAKR,OAJAgiB,EAAQ7V,SAASyO,IACb/B,EAAInV,IAAIkX,EAAQ5a,GAChBA,GAAK4a,EAAOhb,MAAM,IAEfiZ,CACX,C0B+DiBmD,CAAO1H,GAAQ2N,OAAgC,QAAxB/M,EAAKkL,EAAIC,iBAA8B,IAAPnL,EAAgBA,EAAK,IAAKZ,GAAQ2N,OAAO,KAA6B,iBAAhB7B,EAAIE,QAAuBhM,GAAQ2N,OAAO7B,EAAIE,SAAWF,EAAIE,SACjLC,EAAY7D,GAAU0D,EAAIG,WAC1B2B,OD5DKtY,OAAOgN,EAAK7S,EAAKwc,EAAWhb,KACvC,MAAMgU,EAAY4I,GAAavL,EAAK7S,EAAK,UACzC,GAAI6S,EAAI0H,WAAW,MAAO,CACtB,MAAMxH,QAAiB2I,GAAK7I,EAAK2C,EAAWhU,GACtC+R,EAASiJ,EACf,IACI,OAAOf,EAAO4C,gBAAgB9K,EAAQR,EAIzC,CAFD,MACI,OAAO,CACV,CACJ,CACD,MAAMP,EAAYwJ,GAAWnJ,GACvByL,EAAWrC,GAAQpJ,EAAK2C,GAC9B,IACI,aAAa2G,GAAc3J,EAAWhR,EAAM8c,EAAU9B,EAIzD,CAFD,MACI,OAAO,CACV,GCyCsBxS,CAAO6I,EAAK7S,EAAKwc,EAAWhb,GACnD,IAAK2c,EACD,MAAM,IAAIrM,GAEd,IAAIyK,EAEAA,EADAqB,EACUjF,GAAU0D,EAAIE,SAEI,iBAAhBF,EAAIE,QACNhM,GAAQ2N,OAAO7B,EAAIE,SAGnBF,EAAIE,QAElB,MAAMpb,EAAS,CAAEob,WAOjB,YANsBnd,IAAlBid,EAAIC,YACJnb,EAAOub,gBAAkBD,QAEVrd,IAAfid,EAAI/f,SACJ6E,EAAOod,kBAAoBlC,EAAI/f,QAE/B0hB,EACO,IAAK7c,EAAQnB,OAEjBmB,CACX,CIvGA,MAEMqd,GAAMC,MAGNC,GAAQ,sGACC,IAAAC,GAACtG,IACZ,MAAMuG,EAAUF,GAAMrgB,KAAKga,GAC3B,IAAKuG,EACD,MAAM,IAAIrc,UAAU,8BAExB,MAAMtC,EAAQ4e,WAAWD,EAAQ,IAEjC,OADaA,EAAQ,GAAGE,eAEpB,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,IACD,OAAO9S,KAAK+S,MAAM9e,GACtB,IAAK,SACL,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,IACD,OAAO+L,KAAK+S,MAzBT,GAyBe9e,GACtB,IAAK,OACL,IAAK,QACL,IAAK,KACL,IAAK,MACL,IAAK,IACD,OAAO+L,KAAK+S,MA9BXC,KA8BiB/e,GACtB,IAAK,MACL,IAAK,OACL,IAAK,IACD,OAAO+L,KAAK+S,MAAM9e,EAAQue,IAC9B,IAAK,OACL,IAAK,QACL,IAAK,IACD,OAAOxS,KAAK+S,MApCXP,OAoCiBve,GACtB,QACI,OAAO+L,KAAK+S,MArCXP,SAqCiBve,GACzB,ECrCL,MAAMgf,GAAgBhf,GAAUA,EAAM6e,cAAcljB,QAAQ,iBAAkB,IAU/D,IAAAsjB,GAAA,CAACxC,EAAiByC,EAAgBzR,EAAU,MACvD,MAAM0R,IAAEA,GAAQ1R,EAChB,GAAI0R,IACgC,iBAAxB1C,EAAgB0C,KACpBH,GAAavC,EAAgB0C,OAASH,GAAaG,IACvD,MAAM,IAAI9N,GAAyB,oCAAqC,MAAO,gBAEnF,IAAIiL,EACJ,IACIA,EAAUhgB,KAAKC,MAAMiU,GAAQI,OAAOsO,GAGvC,CADD,MACC,CACD,IAAKre,GAASyb,GACV,MAAM,IAAI1K,GAAW,kDAEzB,MAAMwN,OAAEA,GAAW3R,EACnB,GAAI2R,KAAYrhB,MAAMsC,QAAQ+e,GAAUA,EAAS,CAACA,IAASlM,SAASoJ,EAAQ+C,KACxE,MAAM,IAAIhO,GAAyB,+BAAgC,MAAO,gBAE9E,MAAMiO,QAAEA,GAAY7R,EACpB,GAAI6R,GAAWhD,EAAQiD,MAAQD,EAC3B,MAAM,IAAIjO,GAAyB,+BAAgC,MAAO,gBAE9E,MAAMmO,SAAEA,GAAa/R,EACrB,GAAI+R,IAlCuBC,EAmCAnD,EAAQoD,IAnCIC,EAmCqB,iBAAbH,EAAwB,CAACA,GAAYA,IAlC1D,iBAAfC,EACAE,EAAUzM,SAASuM,GAE1B1hB,MAAMsC,QAAQof,IACPE,EAAU1M,KAAKgK,IAAI/hB,UAAUwG,IAAIlG,KAAK,IAAIyhB,IAAIwC,OA+BrD,MAAM,IAAIpO,GAAyB,+BAAgC,MAAO,gBApCpD,IAACoO,EAAYE,EAsCvC,IAAIC,EACJ,cAAenS,EAAQoS,gBACnB,IAAK,SACDD,EAAYlB,GAAKjR,EAAQoS,gBACzB,MACJ,IAAK,SACDD,EAAYnS,EAAQoS,eACpB,MACJ,IAAK,YACDD,EAAY,EACZ,MACJ,QACI,MAAM,IAAItd,UAAU,sCAE5B,MAAMwd,YAAEA,GAAgBrS,EAClBsS,GC3DMC,ED2DMF,GAAe,IAAIvY,KC3DhBwE,KAAKkU,MAAMD,EAAKxY,UAAY,MAAtC,IAACwY,ED4DZ,SAAqB7gB,IAAhBmd,EAAQ4D,KAAqBzS,EAAQ0S,cAAuC,iBAAhB7D,EAAQ4D,IACrE,MAAM,IAAI7O,GAAyB,+BAAgC,MAAO,WAE9E,QAAoBlS,IAAhBmd,EAAQ8D,IAAmB,CAC3B,GAA2B,iBAAhB9D,EAAQ8D,IACf,MAAM,IAAI/O,GAAyB,+BAAgC,MAAO,WAE9E,GAAIiL,EAAQ8D,IAAML,EAAMH,EACpB,MAAM,IAAIvO,GAAyB,qCAAsC,MAAO,eAEvF,CACD,QAAoBlS,IAAhBmd,EAAQhV,IAAmB,CAC3B,GAA2B,iBAAhBgV,EAAQhV,IACf,MAAM,IAAI+J,GAAyB,+BAAgC,MAAO,WAE9E,GAAIiL,EAAQhV,KAAOyY,EAAMH,EACrB,MAAM,IAAIpO,GAAW,qCAAsC,MAAO,eAEzE,CACD,GAAI/D,EAAQ0S,YAAa,CACrB,MAAME,EAAMN,EAAMzD,EAAQ4D,IAE1B,GAAIG,EAAMT,GADiC,iBAAxBnS,EAAQ0S,YAA2B1S,EAAQ0S,YAAczB,GAAKjR,EAAQ0S,cAErF,MAAM,IAAI3O,GAAW,2DAA4D,MAAO,gBAE5F,GAAI6O,EAAM,EAAIT,EACV,MAAM,IAAIvO,GAAyB,gEAAiE,MAAO,eAElH,CACD,OAAOiL,CAAO,EEtFX1W,eAAe0a,GAAUC,EAAKxgB,EAAK0N,GACtC,IAAIyD,EACJ,MAAMgN,QCFHtY,eAA6BwW,EAAKrc,EAAK0N,GAI1C,GAHI2O,aAAetL,aACfsL,EAAM5L,GAAQI,OAAOwL,IAEN,iBAARA,EACP,MAAM,IAAIzK,GAAW,8CAEzB,MAAQ,EAAG8K,EAAiB,EAAGH,EAAS,EAAGC,EAAS3gB,OAAEA,GAAWwgB,EAAIxf,MAAM,KAC3E,GAAe,IAAXhB,EACA,MAAM,IAAI+V,GAAW,uBAEzB,MAAMuM,QAAiB/B,GAAgB,CAAEG,UAASD,UAAWI,EAAiBF,aAAaxc,EAAK0N,GAC1FvM,EAAS,CAAEob,QAAS4B,EAAS5B,QAASG,gBAAiByB,EAASzB,iBACtE,MAAmB,mBAAR1c,EACA,IAAKmB,EAAQnB,IAAKme,EAASne,KAE/BmB,CACX,CDf2Bsf,CAAcD,EAAKxgB,EAAK0N,GAC/C,IAA8C,QAAxCyD,EAAKgN,EAASzB,gBAAgBe,YAAyB,IAAPtM,OAAgB,EAASA,EAAGgC,SAAS,UAA4C,IAAjCgL,EAASzB,gBAAgBkB,IAC3H,MAAM,IAAI/L,GAAW,uCAEzB,MACM1Q,EAAS,CAAEob,QADD2C,GAAWf,EAASzB,gBAAiByB,EAAS5B,QAAS7O,GAC7CgP,gBAAiByB,EAASzB,iBACpD,MAAmB,mBAAR1c,EACA,IAAKmB,EAAQnB,IAAKme,EAASne,KAE/BmB,CACX,CEViB2S,EAAAA,UAAU2B,EAAiBC,2CCHxCgL,GAAc,CAAA,EAClBC,GAAiBD,GAEjB,SAAShF,GAAKtU,GACV,OAAOA,EAAI,GAAK,EAAI,CACxB,CAWA,SAASwZ,GAAuBC,EAAWC,GAClCA,EAASC,YACRF,EAEN,MAAMG,EAAaF,EAASC,SAAW,GAAK/U,KAAKiV,IAAI,EAAGJ,GAClDK,EAAalV,KAAKiV,IAAI,EAAGJ,GAAa,EAEtCM,EAAYL,EAASM,gBAAkBpV,KAAKiV,IAAI,EAAGH,EAASM,iBAAmBpV,KAAKiV,IAAI,EAAGJ,GAC3FQ,EAAcP,EAASM,gBAAkBpV,KAAKiV,IAAI,EAAGH,EAASM,gBAAkB,GAAKpV,KAAKiV,IAAI,EAAGJ,EAAY,GAEnH,OAAO,SAAS3W,EAAGoX,GACVA,IAAMA,EAAO,IAElB,IAAIla,GAAK8C,EAET,GAAIoX,EAAKC,aAAc,CACnB,IAAKC,OAAOC,SAASra,GACjB,MAAM,IAAI7E,UAAU,mCAIxB,GADA6E,EAAIsU,GAAKtU,GAAK4E,KAAKkU,MAAMlU,KAAK0V,IAAIta,IAC9BA,EAAI4Z,GAAc5Z,EAAI8Z,EACtB,MAAM,IAAI3e,UAAU,iCAGxB,OAAO6E,CACV,CAED,IAAKua,MAAMva,IAAMka,EAAKM,MAKlB,OAJAxa,EAtCZ,SAAmBA,GAEf,OAAKA,EAAI,GAAO,IAAmB,IAAP,EAAJA,GACb4E,KAAKkU,MAAM9Y,GAEX4E,KAAK+S,MAAM3X,EAE1B,CA+BgBya,CAAUza,GAEVA,EAAI4Z,IAAY5Z,EAAI4Z,GACpB5Z,EAAI8Z,IAAY9Z,EAAI8Z,GACjB9Z,EAGX,IAAKoa,OAAOC,SAASra,IAAY,IAANA,EACvB,OAAO,EAMX,GAHAA,EAAIsU,GAAKtU,GAAK4E,KAAKkU,MAAMlU,KAAK0V,IAAIta,IAClCA,GAAQ+Z,GAEHL,EAASC,UAAY3Z,GAAKia,EAC3B,OAAOja,EAAI+Z,EACR,GAAIL,EAASC,SAChB,GAAI3Z,EAAI,EACNA,GAAK+Z,OACA,IAAW,IAAP/Z,EACT,OAAO,EAIb,OAAOA,CACV,CACL,CAEAsZ,GAAkB,KAAI,WAEtB,EAEAA,GAAqB,QAAI,SAAUoB,GAC/B,QAASA,CACb,EAEApB,GAAkB,KAAIE,GAAuB,EAAG,CAAEG,UAAU,IAC5DL,GAAmB,MAAIE,GAAuB,EAAG,CAAEG,UAAU,IAE7DL,GAAmB,MAAIE,GAAuB,GAAI,CAAEG,UAAU,IAC9DL,GAAY,kBAAoBE,GAAuB,GAAI,CAAEG,UAAU,IAEvEL,GAAkB,KAAIE,GAAuB,GAAI,CAAEG,UAAU,IAC7DL,GAAY,iBAAmBE,GAAuB,GAAI,CAAEG,UAAU,IAEtEL,GAAY,aAAeE,GAAuB,GAAI,CAAEG,UAAU,EAAOK,gBAAiB,KAC1FV,GAAY,sBAAwBE,GAAuB,GAAI,CAAEG,UAAU,EAAMK,gBAAiB,KAElGV,GAAoB,OAAI,SAAUxW,GAC9B,MAAM9C,GAAK8C,EAEX,IAAKsX,OAAOC,SAASra,GACjB,MAAM,IAAI7E,UAAU,iDAGxB,OAAO6E,CACX,EAEAsZ,GAAY,uBAAyB,SAAUxW,GAC3C,MAAM9C,GAAK8C,EAEX,GAAIyX,MAAMva,GACN,MAAM,IAAI7E,UAAU,mBAGxB,OAAO6E,CACX,EAGAsZ,GAAmB,MAAIA,GAAoB,OAC3CA,GAAY,sBAAwBA,GAAY,uBAEhDA,GAAuB,UAAI,SAAUxW,EAAGoX,GAGpC,OAFKA,IAAMA,EAAO,IAEdA,EAAKS,wBAAgC,OAAN7X,EACxB,GAGJvO,OAAOuO,EAClB,EAEAwW,GAAwB,WAAI,SAAUxW,EAAGoX,GACrC,MAAMla,EAAIzL,OAAOuO,GACjB,IAAIhO,EACJ,IAAK,IAAID,EAAI,OAA8BmD,KAA1BlD,EAAIkL,EAAE4a,YAAY/lB,MAAqBA,EACpD,GAAIC,EAAI,IACJ,MAAM,IAAIqG,UAAU,sCAI5B,OAAO6E,CACX,EAEAsZ,GAAuB,UAAI,SAAUxW,GACjC,MAAM3B,EAAI5M,OAAOuO,GACXpO,EAAIyM,EAAE1M,OACN6L,EAAI,GACV,IAAK,IAAIzL,EAAI,EAAGA,EAAIH,IAAKG,EAAG,CACxB,MAAMC,EAAIqM,EAAE7L,WAAWT,GACvB,GAAIC,EAAI,OAAUA,EAAI,MAClBwL,EAAE5F,KAAKnG,OAAOsmB,cAAc/lB,SACzB,GAAI,OAAUA,GAAKA,GAAK,MAC3BwL,EAAE5F,KAAKnG,OAAOsmB,cAAc,aAE5B,GAAIhmB,IAAMH,EAAI,EACV4L,EAAE5F,KAAKnG,OAAOsmB,cAAc,YACzB,CACH,MAAMzb,EAAI+B,EAAE7L,WAAWT,EAAI,GAC3B,GAAI,OAAUuK,GAAKA,GAAK,MAAQ,CAC5B,MAAMxK,EAAQ,KAAJE,EACJmJ,EAAQ,KAAJmB,EACVkB,EAAE5F,KAAKnG,OAAOsmB,cAAc,MAAY,KAAWjmB,EAAIqJ,MACrDpJ,CACtB,MACoByL,EAAE5F,KAAKnG,OAAOsmB,cAAc,OAEnC,CAER,CAED,OAAOva,EAAEhD,KAAK,GAClB,EAEAgc,GAAkB,KAAI,SAAUxW,EAAGoX,GAC/B,KAAMpX,aAAa1C,MACf,MAAM,IAAIjF,UAAU,iCAExB,IAAIof,MAAMzX,GAIV,OAAOA,CACX,EAEAwW,GAAoB,OAAI,SAAUxW,EAAGoX,GAKjC,OAJMpX,aAAatL,SACfsL,EAAI,IAAItL,OAAOsL,IAGZA,CACX,mCC1LAgY,EAAAC,QAAAC,MAAuB,SAAeC,EAAQC,GAC5C,MAAMhkB,EAAOb,OAAO8kB,oBAAoBD,GACxC,IAAK,IAAIrmB,EAAI,EAAGA,EAAIqC,EAAKzC,SAAUI,EACjCwB,OAAO+kB,eAAeH,EAAQ/jB,EAAKrC,GAAIwB,OAAOglB,yBAAyBH,EAAQhkB,EAAKrC,IAExF,EAEAimB,EAAAC,QAAAO,cAA+B5jB,OAAO,WACtCojB,EAAAC,QAAAQ,WAA4B7jB,OAAO,QAEnCojB,EAAgCC,QAAAS,eAAA,SAAUC,GACxC,OAAOA,EAAKX,EAAOC,QAAQO,cAC7B,EAEAR,EAAgCC,QAAAW,eAAA,SAAUC,GACxC,OAAOA,EAAQb,EAAOC,QAAQQ,4CCdhC,MAAMK,GAAS,WAGTC,GAAO,GAUPC,GAAgB,QAChBC,GAAgB,aAChBC,GAAkB,4BAGlBC,GAAS,CACdC,SAAY,kDACZ,YAAa,iDACb,gBAAiB,iBAKZpD,GAAQlU,KAAKkU,MACbqD,GAAqB5nB,OAAOS,aAUlC,SAAS4L,GAAMzH,GACd,MAAM,IAAIijB,WAAWH,GAAO9iB,GAC7B,CA6BA,SAASkjB,GAAUzhB,EAAQ0hB,GAC1B,MAAMC,EAAQ3hB,EAAOnF,MAAM,KAC3B,IAAIsE,EAAS,GACTwiB,EAAM9nB,OAAS,IAGlBsF,EAASwiB,EAAM,GAAK,IACpB3hB,EAAS2hB,EAAM,IAIhB,MACM7S,EA/BP,SAAa/Q,EAAO2jB,GACnB,MAAMviB,EAAS,GACf,IAAItF,EAASkE,EAAMlE,OACnB,KAAOA,KACNsF,EAAOtF,GAAU6nB,EAAG3jB,EAAMlE,IAE3B,OAAOsF,CACR,CAwBiBI,EAFhBS,EAASA,EAAOpG,QAAQwnB,GAAiB,MACnBvmB,MAAM,KACA6mB,GAAIhf,KAAK,KACrC,OAAOvD,EAAS2P,CACjB,CAeA,SAAS8S,GAAW5hB,GACnB,MAAM6hB,EAAS,GACf,IAAIC,EAAU,EACd,MAAMjoB,EAASmG,EAAOnG,OACtB,KAAOioB,EAAUjoB,GAAQ,CACxB,MAAMoE,EAAQ+B,EAAOtF,WAAWonB,KAChC,GAAI7jB,GAAS,OAAUA,GAAS,OAAU6jB,EAAUjoB,EAAQ,CAE3D,MAAMkoB,EAAQ/hB,EAAOtF,WAAWonB,KACR,QAAX,MAARC,GACJF,EAAO/hB,OAAe,KAAR7B,IAAkB,KAAe,KAAR8jB,GAAiB,QAIxDF,EAAO/hB,KAAK7B,GACZ6jB,IAEJ,MACGD,EAAO/hB,KAAK7B,EAEb,CACD,OAAO4jB,CACR,CAUA,MAmCMG,GAAe,SAASC,EAAOC,GAGpC,OAAOD,EAAQ,GAAK,IAAMA,EAAQ,MAAgB,GAARC,IAAc,EACzD,EAOMC,GAAQ,SAASC,EAAOC,EAAWC,GACxC,IAAInf,EAAI,EAGR,IAFAif,EAAQE,EAAYpE,GAAMkE,EA1Kd,KA0K8BA,GAAS,EACnDA,GAASlE,GAAMkE,EAAQC,GACOD,EAAQG,IAA2Bpf,GAAK8d,GACrEmB,EAAQlE,GAAMkE,EA3JMnB,IA6JrB,OAAO/C,GAAM/a,EAAI,GAAsBif,GAASA,EAhLpC,IAiLb,EASMvT,GAAS,SAAS9C,GAEvB,MAAM8V,EAAS,GACTW,EAAczW,EAAMlS,OAC1B,IAAII,EAAI,EACJH,EA5LY,IA6LZ2oB,EA9Le,GAoMfC,EAAQ3W,EAAM4W,YAlMD,KAmMbD,EAAQ,IACXA,EAAQ,GAGT,IAAK,IAAI/c,EAAI,EAAGA,EAAI+c,IAAS/c,EAExBoG,EAAMrR,WAAWiL,IAAM,KAC1BK,GAAM,aAEP6b,EAAO/hB,KAAKiM,EAAMrR,WAAWiL,IAM9B,IAAK,IAAInI,EAAQklB,EAAQ,EAAIA,EAAQ,EAAI,EAAGllB,EAAQglB,GAAwC,CAO3F,IAAII,EAAO3oB,EACX,IAAK,IAAIqL,EAAI,EAAGnC,EAAI8d,IAA0B9d,GAAK8d,GAAM,CAEpDzjB,GAASglB,GACZxc,GAAM,iBAGP,MAAMic,GA9FqBY,EA8FA9W,EAAMrR,WAAW8C,MA7F9B,GAAO,GACfqlB,EAAY,GAEhBA,EAAY,GAAO,GACfA,EAAY,GAEhBA,EAAY,GAAO,GACfA,EAAY,GAEb5B,IAsFDgB,GAAShB,IAAQgB,EAAQ/D,IAAO8C,GAAS/mB,GAAKqL,KACjDU,GAAM,YAGP/L,GAAKgoB,EAAQ3c,EACb,MAAM5L,EAAIyJ,GAAKsf,EA7OL,EA6OoBtf,GAAKsf,EA5OzB,MA4O8Ctf,EAAIsf,EAE5D,GAAIR,EAAQvoB,EACX,MAGD,MAAMopB,EAAa7B,GAAOvnB,EACtB4L,EAAI4Y,GAAM8C,GAAS8B,IACtB9c,GAAM,YAGPV,GAAKwd,CAEL,CAED,MAAMC,EAAMlB,EAAOhoB,OAAS,EAC5B4oB,EAAON,GAAMloB,EAAI2oB,EAAMG,EAAa,GAARH,GAIxB1E,GAAMjkB,EAAI8oB,GAAO/B,GAASlnB,GAC7BkM,GAAM,YAGPlM,GAAKokB,GAAMjkB,EAAI8oB,GACf9oB,GAAK8oB,EAGLlB,EAAO9kB,OAAO9C,IAAK,EAAGH,EAEtB,CAnImB,IAAS+oB,EAqI7B,OAAOlpB,OAAOsmB,iBAAiB4B,EAChC,EASM3F,GAAS,SAASnQ,GACvB,MAAM8V,EAAS,GAMf,IAAIW,GAHJzW,EAAQ6V,GAAW7V,IAGKlS,OAGpBC,EA5RY,IA6RZsoB,EAAQ,EACRK,EA/Re,GAkSnB,IAAK,MAAMO,KAAgBjX,EACtBiX,EAAe,KAClBnB,EAAO/hB,KAAKyhB,GAAmByB,IAIjC,IAAIC,EAAcpB,EAAOhoB,OACrBqpB,EAAiBD,EAWrB,IALIA,GACHpB,EAAO/hB,KA9SS,KAkTVojB,EAAiBV,GAAa,CAIpC,IAAI/gB,EAAIuf,GACR,IAAK,MAAMgC,KAAgBjX,EACtBiX,GAAgBlpB,GAAKkpB,EAAevhB,IACvCA,EAAIuhB,GAMN,MAAMG,EAAwBD,EAAiB,EAC3CzhB,EAAI3H,EAAIokB,IAAO8C,GAASoB,GAASe,IACpCnd,GAAM,YAGPoc,IAAU3gB,EAAI3H,GAAKqpB,EACnBrpB,EAAI2H,EAEJ,IAAK,MAAMuhB,KAAgBjX,EAI1B,GAHIiX,EAAelpB,KAAOsoB,EAAQpB,IACjChb,GAAM,YAEHgd,GAAgBlpB,EAAG,CAEtB,IAAImM,EAAImc,EACR,IAAK,IAAIjf,EAAI8d,IAA0B9d,GAAK8d,GAAM,CACjD,MAAMvnB,EAAIyJ,GAAKsf,EArVP,EAqVsBtf,GAAKsf,EApV3B,MAoVgDtf,EAAIsf,EAC5D,GAAIxc,EAAIvM,EACP,MAED,MAAM0pB,EAAUnd,EAAIvM,EACdopB,EAAa7B,GAAOvnB,EAC1BmoB,EAAO/hB,KACNyhB,GAAmBS,GAAatoB,EAAI0pB,EAAUN,EAAY,KAE3D7c,EAAIiY,GAAMkF,EAAUN,EACpB,CAEDjB,EAAO/hB,KAAKyhB,GAAmBS,GAAa/b,EAAG,KAC/Cwc,EAAON,GAAMC,EAAOe,EAAuBD,GAAkBD,GAC7Db,EAAQ,IACNc,CACF,GAGAd,IACAtoB,CAEF,CACD,OAAO+nB,EAAOnf,KAAK,GACpB,EAmEA,IAAA2gB,GAxBiB,CAMhBjN,QAAW,QAQXkN,KAAQ,CACPzU,OAAU+S,GACV1F,OA3SiBne,GAASpE,OAAOsmB,iBAAiBliB,IA6SnD8Q,OAAUA,GACVqN,OAAUA,GACVqH,QA/Be,SAASxX,GACxB,OAAO0V,GAAU1V,GAAO,SAAS/L,GAChC,OAAOmhB,GAAc1iB,KAAKuB,GACvB,OAASkc,GAAOlc,GAChBA,CACL,GACA,EA0BCwjB,UAnDiB,SAASzX,GAC1B,OAAO0V,GAAU1V,GAAO,SAAS/L,GAChC,OAAOkhB,GAAcziB,KAAKuB,GACvB6O,GAAO7O,EAAO2Q,MAAM,GAAGmM,eACvB9c,CACL,GACA,SCrYIyjB,GAAWC,GACXC,y77PAEAC,GAAqB,CACvBC,aAAc,EACdC,gBAAiB,GAGnB,SAAS9U,GAAUqH,GACjB,OAAOA,EAAIxb,MAAM,MAAU0E,KAAI,SAAU0B,GAAK,OAAOA,EAAE+N,UAAU,MAAS,IAAEtM,KAAK,KACnF,CAEA,SAASqhB,GAAWjE,GAIlB,IAHA,IAAIxe,EAAQ,EACR0U,EAAM2N,GAAa9pB,OAAS,EAEzByH,GAAS0U,GAAK,CACnB,IAAIgO,EAAMha,KAAKkU,OAAO5c,EAAQ0U,GAAO,GAEjCqK,EAASsD,GAAaK,GAC1B,GAAI3D,EAAO,GAAG,IAAMP,GAAOO,EAAO,GAAG,IAAMP,EACzC,OAAOO,EACEA,EAAO,GAAG,GAAKP,EACxB9J,EAAMgO,EAAM,EAEZ1iB,EAAQ0iB,EAAM,CAEjB,CAED,OAAO,IACT,CAEA,IAAIC,GAAqB,kCAEzB,SAASC,GAAalkB,GACpB,OAAOA,EAEJpG,QAAQqqB,GAAoB,KAE5BpqB,MACL,CAuDA,IAAIsqB,GAAsB,oqFAE1B,SAASC,GAAcC,EAAOC,GACD,SAAvBD,EAAME,OAAO,EAAG,KAClBF,EAAQZ,GAASD,UAAUa,IAI7B,IAAIre,GAAQ,GAERgJ,GAAUqV,KAAWA,GACP,MAAbA,EAAM,IAA2B,MAAbA,EAAM,IACd,MAAbA,EAAM,IAA0C,MAA5BA,EAAMA,EAAMxqB,OAAS,KACjB,IAAxBwqB,EAAMhqB,QAAQ,MACwB,IAAtCgqB,EAAMvf,OAAOqf,OACfne,GAAQ,GAIV,IADA,IAAIiN,EAAMiR,GAAaG,GACdpqB,EAAI,EAAGA,EAAIgZ,IAAOhZ,EAAG,CAC5B,IAAIqI,EAASyhB,GAAWM,EAAMrE,YAAY/lB,IAC1C,GAAKuqB,KAAeZ,GAAmBC,cAA8B,UAAdvhB,EAAO,IACzDkiB,KAAeZ,GAAmBE,iBACpB,UAAdxhB,EAAO,IAAgC,cAAdA,EAAO,GAAqB,CACxD0D,GAAQ,EACR,KACD,CACF,CAED,MAAO,CACLqe,MAAOA,EACPre,MAAOA,EAEX,CAEA,SAASwe,GAAWC,EAAaC,EAASJ,GACxC,IAAInlB,EAzFN,SAAkBslB,EAAaC,EAASJ,GAKtC,IAJA,IAAIK,GAAW,EACXC,EAAY,GAEZ3R,EAAMiR,GAAaO,GACdxqB,EAAI,EAAGA,EAAIgZ,IAAOhZ,EAAG,CAC5B,IAAI4oB,EAAY4B,EAAYzE,YAAY/lB,GACpCqI,EAASyhB,GAAWlB,GAExB,OAAQvgB,EAAO,IACb,IAAK,aACHqiB,GAAW,EACXC,GAAajrB,OAAOsmB,cAAc4C,GAClC,MACF,IAAK,UACH,MACF,IAAK,SACH+B,GAAajrB,OAAOsmB,cAActf,MAAMhH,OAAQ2I,EAAO,IACvD,MACF,IAAK,YAEDsiB,GADEN,IAAsBV,GAAmBC,aAC9BlqB,OAAOsmB,cAActf,MAAMhH,OAAQ2I,EAAO,IAE1C3I,OAAOsmB,cAAc4C,GAEpC,MACF,IAAK,QACH+B,GAAajrB,OAAOsmB,cAAc4C,GAClC,MACF,IAAK,yBACC6B,GACFC,GAAW,EACXC,GAAajrB,OAAOsmB,cAAc4C,IAElC+B,GAAajrB,OAAOsmB,cAActf,MAAMhH,OAAQ2I,EAAO,IAEzD,MACF,IAAK,wBACCoiB,IACFC,GAAW,GAGbC,GAAajrB,OAAOsmB,cAAc4C,GAGvC,CAED,MAAO,CACL7iB,OAAQ4kB,EACR5e,MAAO2e,EAEX,CAsCeE,CAASJ,EAAaC,EAASJ,GAC5CnlB,EAAOa,OAASgP,GAAU7P,EAAOa,QAGjC,IADA,IAAI8kB,EAAS3lB,EAAOa,OAAOnF,MAAM,KACxBZ,EAAI,EAAGA,EAAI6qB,EAAOjrB,SAAUI,EACnC,IACE,IAAI8qB,EAAaX,GAAcU,EAAO7qB,IACtC6qB,EAAO7qB,GAAK8qB,EAAWV,MACvBllB,EAAO6G,MAAQ7G,EAAO6G,OAAS+e,EAAW/e,KAG3C,CAFC,MAAMhN,GACNmG,EAAO6G,OAAQ,CAChB,CAGH,MAAO,CACLhG,OAAQ8kB,EAAOpiB,KAAK,KACpBsD,MAAO7G,EAAO6G,MAElB,CAEsBgf,GAAAzB,QAAG,SAASkB,EAAaC,EAASJ,EAAmBW,GACzE,IAAI9lB,EAASqlB,GAAWC,EAAaC,EAASJ,GAC1CQ,EAAS3lB,EAAOa,OAAOnF,MAAM,KAUjC,GATAiqB,EAASA,EAAOvlB,KAAI,SAASmF,GAC3B,IACE,OAAO+e,GAASF,QAAQ7e,EAIzB,CAHC,MAAM1L,GAEN,OADAmG,EAAO6G,OAAQ,EACRtB,CACR,CACL,IAEMugB,EAAiB,CACnB,IAAIC,EAAQJ,EAAOnU,MAAM,EAAGmU,EAAOjrB,OAAS,GAAG6I,KAAK,KAAK7I,QACrDqrB,EAAMrrB,OAAS,KAAwB,IAAjBqrB,EAAMrrB,UAC9BsF,EAAO6G,OAAQ,GAGjB,IAAK,IAAI/L,EAAE,EAAGA,EAAI6qB,EAAOjrB,SAAUI,EACjC,GAAI6qB,EAAOjrB,OAAS,IAAwB,IAAlBirB,EAAOjrB,OAAc,CAC7CsF,EAAO6G,OAAQ,EACf,KACD,CAEJ,CAED,OAAI7G,EAAO6G,MAAc,KAClB8e,EAAOpiB,KAAK,IACrB,EAEAsiB,GAAAxB,UAA2B,SAASiB,EAAaC,GAC/C,IAAIvlB,EAASqlB,GAAWC,EAAaC,EAASd,GAAmBE,iBAEjE,MAAO,CACLqB,OAAQhmB,EAAOa,OACfgG,MAAO7G,EAAO6G,MAElB,EAEAgf,GAAApB,mBAAoCA,eC/LpC,MAAMH,EAAWC,GACXsB,EAAOI,GAEPC,EAAiB,CACrBC,IAAK,GACLC,KAAM,KACNC,OAAQ,GACRC,KAAM,GACNC,MAAO,IACPC,GAAI,GACJC,IAAK,KAGDC,EAAU/oB,OAAO,WAEvB,SAASonB,EAAa7N,GACpB,OAAOoN,EAASH,KAAKzU,OAAOwH,GAAKxc,MAClC,CAED,SAASisB,EAAG/Z,EAAOga,GACjB,MAAM7rB,EAAI6R,EAAMga,GAChB,OAAOpG,MAAMzlB,QAAKkD,EAAYzD,OAAOsmB,cAAc/lB,EACpD,CAED,SAAS8rB,EAAa9rB,GACpB,OAAOA,GAAK,IAAQA,GAAK,EAC1B,CAED,SAAS+rB,EAAa/rB,GACpB,OAAQA,GAAK,IAAQA,GAAK,IAAUA,GAAK,IAAQA,GAAK,GACvD,CAMD,SAASgsB,EAAWhsB,GAClB,OAAO8rB,EAAa9rB,IAAOA,GAAK,IAAQA,GAAK,IAAUA,GAAK,IAAQA,GAAK,GAC1E,CAED,SAASisB,EAAYtR,GACnB,MAAkB,MAAXA,GAA2C,QAAzBA,EAAOiI,aACjC,CAWD,SAASsJ,EAA2BpmB,GAClC,OAAyB,IAAlBA,EAAOnG,QAAgBosB,EAAajmB,EAAOggB,YAAY,MAAsB,MAAdhgB,EAAO,IAA4B,MAAdA,EAAO,GACnG,CAcD,SAASqmB,EAAgBC,GACvB,YAAkClpB,IAA3BioB,EAAeiB,EACvB,CAED,SAASC,EAAUvkB,GACjB,OAAOqkB,EAAgBrkB,EAAIskB,OAC5B,CAMD,SAASE,EAActsB,GACrB,IAAIusB,EAAMvsB,EAAES,SAAS,IAAIC,cAKzB,OAJmB,IAAf6rB,EAAI5sB,SACN4sB,EAAM,IAAMA,GAGP,IAAMA,CACd,CA8BD,SAASC,EAAyBxsB,GAChC,OAAOA,GAAK,IAAQA,EAAI,GACzB,CAED,MAAMysB,EAA4B,IAAIzL,IAAI,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,MAC5E,SAAS0L,EAAoB1sB,GAC3B,OAAOwsB,EAAyBxsB,IAAMysB,EAA0BhnB,IAAIzF,EACrE,CAED,MAAM2sB,EACJ,IAAI3L,IAAI,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,MAC/C,SAAS4L,EAAwB5sB,GAC/B,OAAO0sB,EAAoB1sB,IAAM2sB,EAA8BlnB,IAAIzF,EACpE,CAED,SAAS6sB,EAAkB7sB,EAAG8sB,GAC5B,MAAMC,EAAOttB,OAAOsmB,cAAc/lB,GAElC,OAAI8sB,EAAmB9sB,GA9CzB,SAA2BA,GACzB,MAAM4Y,EAAM,IAAInE,OAAOzU,GAEvB,IAAImc,EAAM,GAEV,IAAK,IAAIpc,EAAI,EAAGA,EAAI6Y,EAAIjZ,SAAUI,EAChCoc,GAAOmQ,EAAc1T,EAAI7Y,IAG3B,OAAOoc,CACR,CAqCU6Q,CAAkBD,GAGpBA,CACR,CAED,SAASE,EAAgBpb,GACvB,IAAIlG,EAAI,GAUR,GARIkG,EAAMlS,QAAU,GAAyB,MAApBkS,EAAM5R,OAAO,IAAgD,MAAlC4R,EAAM5R,OAAO,GAAG2iB,eAClE/Q,EAAQA,EAAMqb,UAAU,GACxBvhB,EAAI,IACKkG,EAAMlS,QAAU,GAAyB,MAApBkS,EAAM5R,OAAO,KAC3C4R,EAAQA,EAAMqb,UAAU,GACxBvhB,EAAI,GAGQ,KAAVkG,EACF,OAAO,EAIT,OADoB,KAANlG,EAAW,SAAkB,KAANA,EAAW,eAAiB,UACvDpH,KAAKsN,GACN8Z,EAGFnV,SAAS3E,EAAOlG,EACxB,CA6ND,SAASwhB,EAAUtb,EAAOub,GACxB,GAAiB,MAAbvb,EAAM,GACR,MAAgC,MAA5BA,EAAMA,EAAMlS,OAAS,GAChBgsB,EAlKb,SAAmB9Z,GACjB,MAAMwb,EAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACtC,IAAIC,EAAa,EACbC,EAAW,KACXC,EAAU,EAId,GAAuB,MAFvB3b,EAAQ0X,EAASH,KAAKzU,OAAO9C,IAEnB2b,GAAiB,CACzB,GAA2B,KAAvB3b,EAAM2b,EAAU,GAClB,OAAO7B,EAGT6B,GAAW,IACTF,EACFC,EAAWD,CACZ,CAED,KAAOE,EAAU3b,EAAMlS,QAAQ,CAC7B,GAAmB,IAAf2tB,EACF,OAAO3B,EAGT,GAAuB,KAAnB9Z,EAAM2b,GAAiB,CACzB,GAAiB,OAAbD,EACF,OAAO5B,IAEP6B,IACAF,EACFC,EAAWD,EACX,QACD,CAED,IAAIvpB,EAAQ,EACRpE,EAAS,EAEb,KAAOA,EAAS,GAAKqsB,EAAWna,EAAM2b,KACpCzpB,EAAgB,GAARA,EAAeyS,SAASoV,EAAG/Z,EAAO2b,GAAU,MAClDA,IACA7tB,EAGJ,GAAuB,KAAnBkS,EAAM2b,GAAiB,CACzB,GAAe,IAAX7tB,EACF,OAAOgsB,EAKT,GAFA6B,GAAW7tB,EAEP2tB,EAAa,EACf,OAAO3B,EAGT,IAAI8B,EAAc,EAElB,UAA0BvqB,IAAnB2O,EAAM2b,IAAwB,CACnC,IAAIE,EAAY,KAEhB,GAAID,EAAc,EAAG,CACnB,KAAuB,KAAnB5b,EAAM2b,IAAmBC,EAAc,GAGzC,OAAO9B,IAFL6B,CAIL,CAED,IAAK1B,EAAaja,EAAM2b,IACtB,OAAO7B,EAGT,KAAOG,EAAaja,EAAM2b,KAAW,CACnC,MAAMtnB,EAASsQ,SAASoV,EAAG/Z,EAAO2b,IAClC,GAAkB,OAAdE,EACFA,EAAYxnB,MACP,IAAkB,IAAdwnB,EACT,OAAO/B,EAEP+B,EAAwB,GAAZA,EAAiBxnB,CAC9B,CACD,GAAIwnB,EAAY,IACd,OAAO/B,IAEP6B,CACH,CAEDH,EAAQC,GAAoC,IAAtBD,EAAQC,GAAsBI,IAElDD,EAEkB,IAAhBA,GAAqC,IAAhBA,KACrBH,CAEL,CAED,GAAoB,IAAhBG,EACF,OAAO9B,EAGT,KACD,CAAM,GAAuB,KAAnB9Z,EAAM2b,IAEf,KADEA,OACqBtqB,IAAnB2O,EAAM2b,GACR,OAAO7B,OAEJ,QAAuBzoB,IAAnB2O,EAAM2b,GACf,OAAO7B,EAGT0B,EAAQC,GAAcvpB,IACpBupB,CACH,CAED,GAAiB,OAAbC,EAAmB,CACrB,IAAII,EAAQL,EAAaC,EAEzB,IADAD,EAAa,EACS,IAAfA,GAAoBK,EAAQ,GAAG,CACpC,MAAMC,EAAOP,EAAQE,EAAWI,EAAQ,GACxCN,EAAQE,EAAWI,EAAQ,GAAKN,EAAQC,GACxCD,EAAQC,GAAcM,IACpBN,IACAK,CACH,CACF,MAAM,GAAiB,OAAbJ,GAAoC,IAAfD,EAC9B,OAAO3B,EAGT,OAAO0B,CACR,CAsCUQ,CAAUhc,EAAMqb,UAAU,EAAGrb,EAAMlS,OAAS,IAGrD,IAAKytB,EACH,OAqBJ,SAAyBvb,GACvB,GAhWsD/L,EAgWH+L,GA/VkC,IAA9E/L,EAAO8E,OAAO,2DAgWnB,OAAO+gB,EAjWX,IAAwD7lB,EAoWtD,IAAI6hB,EAAS,GACb,MAAMmG,EAAUvE,EAASH,KAAKzU,OAAO9C,GACrC,IAAK,IAAI9R,EAAI,EAAGA,EAAI+tB,EAAQnuB,SAAUI,EACpC4nB,GAAUkF,EAAkBiB,EAAQ/tB,GAAIysB,GAE1C,OAAO7E,CACR,CAhCUoG,CAAgBlc,GAGzB,MAAMoZ,EAxSR,SAA2B9O,GACzB,MAAMtK,EAAQ,IAAI4C,OAAO0H,GACnBwL,EAAS,GACf,IAAK,IAAI5nB,EAAI,EAAGA,EAAI8R,EAAMlS,SAAUI,EACjB,KAAb8R,EAAM9R,GACR4nB,EAAO/hB,KAAKiM,EAAM9R,IACI,KAAb8R,EAAM9R,IAAaisB,EAAWna,EAAM9R,EAAI,KAAOisB,EAAWna,EAAM9R,EAAI,KAC7E4nB,EAAO/hB,KAAK4Q,SAAS3E,EAAM4E,MAAM1W,EAAI,EAAGA,EAAI,GAAGU,WAAY,KAC3DV,GAAK,GAEL4nB,EAAO/hB,KAAKiM,EAAM9R,IAGtB,OAAO,IAAI0U,OAAOkT,GAAQlnB,UAC3B,CA0RgButB,CAAkBnc,GAC3Boc,EAAcnD,EAAKzB,QAAQ4B,GAAQ,EAAOH,EAAKpB,mBAAmBE,iBAAiB,GACzF,GAAoB,OAAhBqE,EACF,OAAOtC,EAGT,IAtVuF,IAsVpDsC,EAtVrBrjB,OAAO,6DAuVnB,OAAO+gB,EAGT,MAAMuC,EAlPR,SAAmBrc,GACjB,MAAM4V,EAAQ5V,EAAMlR,MAAM,KAO1B,GANgC,KAA5B8mB,EAAMA,EAAM9nB,OAAS,IACnB8nB,EAAM9nB,OAAS,GACjB8nB,EAAM9hB,MAIN8hB,EAAM9nB,OAAS,EACjB,OAAOkS,EAGT,MAAMsc,EAAU,GAChB,IAAK,MAAMC,KAAQ3G,EAAO,CACxB,GAAa,KAAT2G,EACF,OAAOvc,EAET,MAAMjS,EAAIqtB,EAAgBmB,GAC1B,GAAIxuB,IAAM+rB,EACR,OAAO9Z,EAGTsc,EAAQvoB,KAAKhG,EACd,CAED,IAAK,IAAIG,EAAI,EAAGA,EAAIouB,EAAQxuB,OAAS,IAAKI,EACxC,GAAIouB,EAAQpuB,GAAK,IACf,OAAO4rB,EAGX,GAAIwC,EAAQA,EAAQxuB,OAAS,IAAMmQ,KAAKiV,IAAI,IAAK,EAAIoJ,EAAQxuB,QAC3D,OAAOgsB,EAGT,IAAI0C,EAAOF,EAAQxoB,MACfiiB,EAAU,EAEd,IAAK,MAAMhoB,KAAKuuB,EACdE,GAAQzuB,EAAIkQ,KAAKiV,IAAI,IAAK,EAAI6C,KAC5BA,EAGJ,OAAOyG,CACR,CAuMkBC,CAAUL,GAC3B,MAAwB,iBAAbC,GAAyBA,IAAavC,EACxCuC,EAGFD,CACR,CAkDD,SAASM,EAAcC,GACrB,MAAoB,iBAATA,EA9Pb,SAAuBnB,GACrB,IAAI1F,EAAS,GACT/nB,EAAIytB,EAER,IAAK,IAAIttB,EAAI,EAAGA,GAAK,IAAKA,EACxB4nB,EAASloB,OAAOG,EAAI,KAAO+nB,EACjB,IAAN5nB,IACF4nB,EAAS,IAAMA,GAEjB/nB,EAAIkQ,KAAKkU,MAAMpkB,EAAI,KAGrB,OAAO+nB,CACR,CAkPU8G,CAAcD,GAInBA,aAAgB1sB,MACX,IApHX,SAAuBurB,GACrB,IAAI1F,EAAS,GACb,MAAM+G,EAwER,SAAiCC,GAC/B,IAAIC,EAAS,KACTC,EAAS,EACTC,EAAY,KACZC,EAAU,EAEd,IAAK,IAAIhvB,EAAI,EAAGA,EAAI4uB,EAAIhvB,SAAUI,EACjB,IAAX4uB,EAAI5uB,IACFgvB,EAAUF,IACZD,EAASE,EACTD,EAASE,GAGXD,EAAY,KACZC,EAAU,IAEQ,OAAdD,IACFA,EAAY/uB,KAEZgvB,GAUN,OALIA,EAAUF,IACZD,EAASE,EACTD,EAASE,GAGJ,CACLlD,IAAK+C,EACL7V,IAAK8V,EAER,CAzGmBG,CAAwB3B,GACpCE,EAAWmB,EAAU7C,IAC3B,IAAIoD,GAAU,EAEd,IAAK,IAAI3B,EAAa,EAAGA,GAAc,IAAKA,EACtC2B,GAAmC,IAAxB5B,EAAQC,KAEZ2B,IACTA,GAAU,GAGR1B,IAAaD,GAOjB3F,GAAU0F,EAAQC,GAAY7sB,SAAS,IAEpB,IAAf6sB,IACF3F,GAAU,OARVA,GADiC,IAAf2F,EAAmB,KAAO,IAE5C2B,GAAU,IAWd,OAAOtH,CACR,CAwFgBuH,CAAcV,GAAQ,IAG9BA,CACR,CAUD,SAASW,EAAYrnB,GACnB,MAAM3D,EAAO2D,EAAI3D,KAmBnB,IAAwC2B,EAlBlB,IAAhB3B,EAAKxE,SAGU,SAAfmI,EAAIskB,QAAqC,IAAhBjoB,EAAKxE,SAeImG,EAf2C3B,EAAK,GAgB/E,cAAcI,KAAKuB,KAZ1B3B,EAAKwB,MACN,CAED,SAASypB,EAAoBtnB,GAC3B,MAAwB,KAAjBA,EAAIunB,UAAoC,KAAjBvnB,EAAIwnB,QACnC,CAUD,SAASC,EAAgB1d,EAAOkV,EAAMyI,EAAkB1nB,EAAK2nB,GAU3D,GATA1wB,KAAKyuB,QAAU,EACfzuB,KAAK8S,MAAQA,EACb9S,KAAKgoB,KAAOA,GAAQ,KACpBhoB,KAAKywB,iBAAmBA,GAAoB,QAC5CzwB,KAAK0wB,cAAgBA,EACrB1wB,KAAK+I,IAAMA,EACX/I,KAAK4sB,SAAU,EACf5sB,KAAK2wB,YAAa,GAEb3wB,KAAK+I,IAAK,CACb/I,KAAK+I,IAAM,CACTskB,OAAQ,GACRiD,SAAU,GACVC,SAAU,GACVd,KAAM,KACNmB,KAAM,KACNxrB,KAAM,GACNyrB,MAAO,KACPC,SAAU,KAEVC,kBAAkB,GAGpB,MAAMC,EAxDV,SAA0BjoB,GACxB,OAAOA,EAAIpI,QAAQ,mDAAoD,GACxE,CAsDeswB,CAAiBjxB,KAAK8S,OAC9Bke,IAAQhxB,KAAK8S,QACf9S,KAAK2wB,YAAa,GAEpB3wB,KAAK8S,MAAQke,CACd,CAED,MAAMA,EA3DR,SAA2BjoB,GACzB,OAAOA,EAAIpI,QAAQ,wBAAyB,GAC7C,CAyDauwB,CAAkBlxB,KAAK8S,OAenC,IAdIke,IAAQhxB,KAAK8S,QACf9S,KAAK2wB,YAAa,GAEpB3wB,KAAK8S,MAAQke,EAEbhxB,KAAKmxB,MAAQT,GAAiB,eAE9B1wB,KAAK4b,OAAS,GACd5b,KAAKoxB,QAAS,EACdpxB,KAAKqxB,SAAU,EACfrxB,KAAKsxB,uBAAwB,EAE7BtxB,KAAK8S,MAAQ0X,EAASH,KAAKzU,OAAO5V,KAAK8S,OAEhC9S,KAAKyuB,SAAWzuB,KAAK8S,MAAMlS,SAAUZ,KAAKyuB,QAAS,CACxD,MAAMxtB,EAAIjB,KAAK8S,MAAM9S,KAAKyuB,SACpBT,EAAOtH,MAAMzlB,QAAKkD,EAAYzD,OAAOsmB,cAAc/lB,GAGnDswB,EAAMvxB,KAAK,SAAWA,KAAKmxB,OAAOlwB,EAAG+sB,GAC3C,IAAKuD,EACH,MACK,GAAIA,IAAQ3E,EAAS,CAC1B5sB,KAAK4sB,SAAU,EACf,KACD,CACF,CACF,CAED4D,EAAgBtwB,UAAU,sBAAwB,SAA0Be,EAAG+sB,GAC7E,GAAIhB,EAAa/rB,GACfjB,KAAK4b,QAAUoS,EAAKnK,cACpB7jB,KAAKmxB,MAAQ,aACR,IAAKnxB,KAAK0wB,cAKf,OADA1wB,KAAK2wB,YAAa,EACX/D,EAJP5sB,KAAKmxB,MAAQ,cACXnxB,KAAKyuB,OAIR,CAED,OAAO,CACT,EAEA+B,EAAgBtwB,UAAU,gBAAkB,SAAqBe,EAAG+sB,GAClE,GA1iBF,SAA6B/sB,GAC3B,OAAO+rB,EAAa/rB,IAAM8rB,EAAa9rB,EACxC,CAwiBKuwB,CAAoBvwB,IAAY,KAANA,GAAkB,KAANA,GAAkB,KAANA,EACpDjB,KAAK4b,QAAUoS,EAAKnK,mBACf,GAAU,KAAN5iB,EAAU,CACnB,GAAIjB,KAAK0wB,cAAe,CACtB,GAAIpD,EAAUttB,KAAK+I,OAASqkB,EAAgBptB,KAAK4b,QAC/C,OAAO,EAGT,IAAK0R,EAAUttB,KAAK+I,MAAQqkB,EAAgBptB,KAAK4b,QAC/C,OAAO,EAGT,IAAKyU,EAAoBrwB,KAAK+I,MAA0B,OAAlB/I,KAAK+I,IAAI6nB,OAAkC,SAAhB5wB,KAAK4b,OACpE,OAAO,EAGT,GAAwB,SAApB5b,KAAK+I,IAAIskB,SAAwC,KAAlBrtB,KAAK+I,IAAI0mB,MAAiC,OAAlBzvB,KAAK+I,IAAI0mB,MAClE,OAAO,CAEV,CAGD,GAFAzvB,KAAK+I,IAAIskB,OAASrtB,KAAK4b,OACvB5b,KAAK4b,OAAS,GACV5b,KAAK0wB,cACP,OAAO,EAEe,SAApB1wB,KAAK+I,IAAIskB,QAC0B,KAAjCrtB,KAAK8S,MAAM9S,KAAKyuB,QAAU,IAA8C,KAAjCzuB,KAAK8S,MAAM9S,KAAKyuB,QAAU,KACnEzuB,KAAK2wB,YAAa,GAEpB3wB,KAAKmxB,MAAQ,QACJ7D,EAAUttB,KAAK+I,MAAsB,OAAd/I,KAAKgoB,MAAiBhoB,KAAKgoB,KAAKqF,SAAWrtB,KAAK+I,IAAIskB,OACpFrtB,KAAKmxB,MAAQ,gCACJ7D,EAAUttB,KAAK+I,KACxB/I,KAAKmxB,MAAQ,4BAC6B,KAAjCnxB,KAAK8S,MAAM9S,KAAKyuB,QAAU,IACnCzuB,KAAKmxB,MAAQ,sBACXnxB,KAAKyuB,UAEPzuB,KAAK+I,IAAIgoB,kBAAmB,EAC5B/wB,KAAK+I,IAAI3D,KAAKyB,KAAK,IACnB7G,KAAKmxB,MAAQ,4BAEnB,KAAS,IAAKnxB,KAAK0wB,cAMf,OADA1wB,KAAK2wB,YAAa,EACX/D,EALP5sB,KAAK4b,OAAS,GACd5b,KAAKmxB,MAAQ,YACbnxB,KAAKyuB,SAAW,CAIjB,CAED,OAAO,CACT,EAEA+B,EAAgBtwB,UAAU,mBAAqB,SAAuBe,GACpE,OAAkB,OAAdjB,KAAKgoB,MAAkBhoB,KAAKgoB,KAAK+I,kBAA0B,KAAN9vB,EAChD2rB,GACE5sB,KAAKgoB,KAAK+I,kBAA0B,KAAN9vB,GACvCjB,KAAK+I,IAAIskB,OAASrtB,KAAKgoB,KAAKqF,OAC5BrtB,KAAK+I,IAAI3D,KAAOpF,KAAKgoB,KAAK5iB,KAAKsS,QAC/B1X,KAAK+I,IAAI8nB,MAAQ7wB,KAAKgoB,KAAK6I,MAC3B7wB,KAAK+I,IAAI+nB,SAAW,GACpB9wB,KAAK+I,IAAIgoB,kBAAmB,EAC5B/wB,KAAKmxB,MAAQ,YACiB,SAArBnxB,KAAKgoB,KAAKqF,QACnBrtB,KAAKmxB,MAAQ,SACXnxB,KAAKyuB,UAEPzuB,KAAKmxB,MAAQ,aACXnxB,KAAKyuB,UAGF,EACT,EAEA+B,EAAgBtwB,UAAU,uCAAyC,SAAyCe,GAU1G,OATU,KAANA,GAA6C,KAAjCjB,KAAK8S,MAAM9S,KAAKyuB,QAAU,IACxCzuB,KAAKmxB,MAAQ,qCACXnxB,KAAKyuB,UAEPzuB,KAAK2wB,YAAa,EAClB3wB,KAAKmxB,MAAQ,aACXnxB,KAAKyuB,UAGF,CACT,EAEA+B,EAAgBtwB,UAAU,2BAA6B,SAA8Be,GAQnF,OAPU,KAANA,EACFjB,KAAKmxB,MAAQ,aAEbnxB,KAAKmxB,MAAQ,SACXnxB,KAAKyuB,UAGF,CACT,EAEA+B,EAAgBtwB,UAAU,kBAAoB,SAAuBe,GA0CnE,OAzCAjB,KAAK+I,IAAIskB,OAASrtB,KAAKgoB,KAAKqF,OACxB3G,MAAMzlB,IACRjB,KAAK+I,IAAIunB,SAAWtwB,KAAKgoB,KAAKsI,SAC9BtwB,KAAK+I,IAAIwnB,SAAWvwB,KAAKgoB,KAAKuI,SAC9BvwB,KAAK+I,IAAI0mB,KAAOzvB,KAAKgoB,KAAKyH,KAC1BzvB,KAAK+I,IAAI6nB,KAAO5wB,KAAKgoB,KAAK4I,KAC1B5wB,KAAK+I,IAAI3D,KAAOpF,KAAKgoB,KAAK5iB,KAAKsS,QAC/B1X,KAAK+I,IAAI8nB,MAAQ7wB,KAAKgoB,KAAK6I,OACZ,KAAN5vB,EACTjB,KAAKmxB,MAAQ,iBACE,KAANlwB,GACTjB,KAAK+I,IAAIunB,SAAWtwB,KAAKgoB,KAAKsI,SAC9BtwB,KAAK+I,IAAIwnB,SAAWvwB,KAAKgoB,KAAKuI,SAC9BvwB,KAAK+I,IAAI0mB,KAAOzvB,KAAKgoB,KAAKyH,KAC1BzvB,KAAK+I,IAAI6nB,KAAO5wB,KAAKgoB,KAAK4I,KAC1B5wB,KAAK+I,IAAI3D,KAAOpF,KAAKgoB,KAAK5iB,KAAKsS,QAC/B1X,KAAK+I,IAAI8nB,MAAQ,GACjB7wB,KAAKmxB,MAAQ,SACE,KAANlwB,GACTjB,KAAK+I,IAAIunB,SAAWtwB,KAAKgoB,KAAKsI,SAC9BtwB,KAAK+I,IAAIwnB,SAAWvwB,KAAKgoB,KAAKuI,SAC9BvwB,KAAK+I,IAAI0mB,KAAOzvB,KAAKgoB,KAAKyH,KAC1BzvB,KAAK+I,IAAI6nB,KAAO5wB,KAAKgoB,KAAK4I,KAC1B5wB,KAAK+I,IAAI3D,KAAOpF,KAAKgoB,KAAK5iB,KAAKsS,QAC/B1X,KAAK+I,IAAI8nB,MAAQ7wB,KAAKgoB,KAAK6I,MAC3B7wB,KAAK+I,IAAI+nB,SAAW,GACpB9wB,KAAKmxB,MAAQ,YACJ7D,EAAUttB,KAAK+I,MAAc,KAAN9H,GAChCjB,KAAK2wB,YAAa,EAClB3wB,KAAKmxB,MAAQ,mBAEbnxB,KAAK+I,IAAIunB,SAAWtwB,KAAKgoB,KAAKsI,SAC9BtwB,KAAK+I,IAAIwnB,SAAWvwB,KAAKgoB,KAAKuI,SAC9BvwB,KAAK+I,IAAI0mB,KAAOzvB,KAAKgoB,KAAKyH,KAC1BzvB,KAAK+I,IAAI6nB,KAAO5wB,KAAKgoB,KAAK4I,KAC1B5wB,KAAK+I,IAAI3D,KAAOpF,KAAKgoB,KAAK5iB,KAAKsS,MAAM,EAAG1X,KAAKgoB,KAAK5iB,KAAKxE,OAAS,GAEhEZ,KAAKmxB,MAAQ,SACXnxB,KAAKyuB,UAGF,CACT,EAEA+B,EAAgBtwB,UAAU,wBAA0B,SAA4Be,GAiB9E,OAhBIqsB,EAAUttB,KAAK+I,MAAe,KAAN9H,GAAkB,KAANA,EAKvB,KAANA,EACTjB,KAAKmxB,MAAQ,aAEbnxB,KAAK+I,IAAIunB,SAAWtwB,KAAKgoB,KAAKsI,SAC9BtwB,KAAK+I,IAAIwnB,SAAWvwB,KAAKgoB,KAAKuI,SAC9BvwB,KAAK+I,IAAI0mB,KAAOzvB,KAAKgoB,KAAKyH,KAC1BzvB,KAAK+I,IAAI6nB,KAAO5wB,KAAKgoB,KAAK4I,KAC1B5wB,KAAKmxB,MAAQ,SACXnxB,KAAKyuB,UAZG,KAANxtB,IACFjB,KAAK2wB,YAAa,GAEpB3wB,KAAKmxB,MAAQ,qCAYR,CACT,EAEAX,EAAgBtwB,UAAU,mCAAqC,SAAsCe,GAUnG,OATU,KAANA,GAA6C,KAAjCjB,KAAK8S,MAAM9S,KAAKyuB,QAAU,IACxCzuB,KAAKmxB,MAAQ,qCACXnxB,KAAKyuB,UAEPzuB,KAAK2wB,YAAa,EAClB3wB,KAAKmxB,MAAQ,qCACXnxB,KAAKyuB,UAGF,CACT,EAEA+B,EAAgBtwB,UAAU,0CAA4C,SAA4Ce,GAQhH,OAPU,KAANA,GAAkB,KAANA,GACdjB,KAAKmxB,MAAQ,cACXnxB,KAAKyuB,SAEPzuB,KAAK2wB,YAAa,GAGb,CACT,EAEAH,EAAgBtwB,UAAU,mBAAqB,SAAwBe,EAAG+sB,GACxE,GAAU,KAAN/sB,EAAU,CACZjB,KAAK2wB,YAAa,EACd3wB,KAAKoxB,SACPpxB,KAAK4b,OAAS,MAAQ5b,KAAK4b,QAE7B5b,KAAKoxB,QAAS,EAGd,MAAMpX,EAAMiR,EAAajrB,KAAK4b,QAC9B,IAAK,IAAI6S,EAAU,EAAGA,EAAUzU,IAAOyU,EAAS,CAC9C,MAAM7E,EAAY5pB,KAAK4b,OAAOmL,YAAY0H,GAE1C,GAAkB,KAAd7E,IAAqB5pB,KAAKsxB,sBAAuB,CACnDtxB,KAAKsxB,uBAAwB,EAC7B,QACD,CACD,MAAMG,EAAoB3D,EAAkBlE,EAAWiE,GACnD7tB,KAAKsxB,sBACPtxB,KAAK+I,IAAIwnB,UAAYkB,EAErBzxB,KAAK+I,IAAIunB,UAAYmB,CAExB,CACDzxB,KAAK4b,OAAS,EAClB,MAAS,GAAI8K,MAAMzlB,IAAY,KAANA,GAAkB,KAANA,GAAkB,KAANA,GACnCqsB,EAAUttB,KAAK+I,MAAc,KAAN9H,EAAW,CAC5C,GAAIjB,KAAKoxB,QAA0B,KAAhBpxB,KAAK4b,OAEtB,OADA5b,KAAK2wB,YAAa,EACX/D,EAET5sB,KAAKyuB,SAAWxD,EAAajrB,KAAK4b,QAAU,EAC5C5b,KAAK4b,OAAS,GACd5b,KAAKmxB,MAAQ,MACjB,MACInxB,KAAK4b,QAAUoS,EAGjB,OAAO,CACT,EAEAwC,EAAgBtwB,UAAU,kBAC1BswB,EAAgBtwB,UAAU,cAAgB,SAAuBe,EAAG+sB,GAClE,GAAIhuB,KAAK0wB,eAAqC,SAApB1wB,KAAK+I,IAAIskB,SAC/BrtB,KAAKyuB,QACPzuB,KAAKmxB,MAAQ,iBACR,GAAU,KAANlwB,GAAajB,KAAKqxB,QAiBtB,GAAI3K,MAAMzlB,IAAY,KAANA,GAAkB,KAANA,GAAkB,KAANA,GACnCqsB,EAAUttB,KAAK+I,MAAc,KAAN9H,EAAW,CAE5C,KADEjB,KAAKyuB,QACHnB,EAAUttB,KAAK+I,MAAwB,KAAhB/I,KAAK4b,OAE9B,OADA5b,KAAK2wB,YAAa,EACX/D,EACF,GAAI5sB,KAAK0wB,eAAiC,KAAhB1wB,KAAK4b,SAC1ByU,EAAoBrwB,KAAK+I,MAA0B,OAAlB/I,KAAK+I,IAAI6nB,MAEpD,OADA5wB,KAAK2wB,YAAa,GACX,EAGT,MAAMlB,EAAOrB,EAAUpuB,KAAK4b,OAAQ0R,EAAUttB,KAAK+I,MACnD,GAAI0mB,IAAS7C,EACX,OAAOA,EAMT,GAHA5sB,KAAK+I,IAAI0mB,KAAOA,EAChBzvB,KAAK4b,OAAS,GACd5b,KAAKmxB,MAAQ,aACTnxB,KAAK0wB,cACP,OAAO,CAEb,MACc,KAANzvB,EACFjB,KAAKqxB,SAAU,EACA,KAANpwB,IACTjB,KAAKqxB,SAAU,GAEjBrxB,KAAK4b,QAAUoS,MA9CqB,CACpC,GAAoB,KAAhBhuB,KAAK4b,OAEP,OADA5b,KAAK2wB,YAAa,EACX/D,EAGT,MAAM6C,EAAOrB,EAAUpuB,KAAK4b,OAAQ0R,EAAUttB,KAAK+I,MACnD,GAAI0mB,IAAS7C,EACX,OAAOA,EAMT,GAHA5sB,KAAK+I,IAAI0mB,KAAOA,EAChBzvB,KAAK4b,OAAS,GACd5b,KAAKmxB,MAAQ,OACc,aAAvBnxB,KAAK0wB,cACP,OAAO,CAEb,CAgCE,OAAO,CACT,EAEAF,EAAgBtwB,UAAU,cAAgB,SAAmBe,EAAG+sB,GAC9D,GAAIjB,EAAa9rB,GACfjB,KAAK4b,QAAUoS,MACV,MAAItH,MAAMzlB,IAAY,KAANA,GAAkB,KAANA,GAAkB,KAANA,GACnCqsB,EAAUttB,KAAK+I,MAAc,KAAN9H,GACxBjB,KAAK0wB,eAiBd,OADA1wB,KAAK2wB,YAAa,EACX/D,EAhBP,GAAoB,KAAhB5sB,KAAK4b,OAAe,CACtB,MAAMgV,EAAOnZ,SAASzX,KAAK4b,QAC3B,GAAIgV,EAAO7f,KAAKiV,IAAI,EAAG,IAAM,EAE3B,OADAhmB,KAAK2wB,YAAa,EACX/D,EAET5sB,KAAK+I,IAAI6nB,KAAOA,KAvyBDvD,EAuyBsBrtB,KAAK+I,IAAIskB,OAtyB3CjB,EAAeiB,IAsyBsC,KAAOuD,EAC/D5wB,KAAK4b,OAAS,EACf,CACD,GAAI5b,KAAK0wB,cACP,OAAO,EAET1wB,KAAKmxB,MAAQ,eACXnxB,KAAKyuB,OAIR,CAlzBH,IAAqBpB,EAozBnB,OAAO,CACT,EAEA,MAAMqE,EAA0B,IAAIzP,IAAI,CAAC,GAAI,GAAI,GAAI,KAErDuO,EAAgBtwB,UAAU,cAAgB,SAAmBe,GAr1B7D,IAAwC0wB,EAAKC,EAi4B3C,OA3CA5xB,KAAK+I,IAAIskB,OAAS,OAER,KAANpsB,GAAkB,KAANA,GACJ,KAANA,IACFjB,KAAK2wB,YAAa,GAEpB3wB,KAAKmxB,MAAQ,cACU,OAAdnxB,KAAKgoB,MAAsC,SAArBhoB,KAAKgoB,KAAKqF,OACrC3G,MAAMzlB,IACRjB,KAAK+I,IAAI0mB,KAAOzvB,KAAKgoB,KAAKyH,KAC1BzvB,KAAK+I,IAAI3D,KAAOpF,KAAKgoB,KAAK5iB,KAAKsS,QAC/B1X,KAAK+I,IAAI8nB,MAAQ7wB,KAAKgoB,KAAK6I,OACZ,KAAN5vB,GACTjB,KAAK+I,IAAI0mB,KAAOzvB,KAAKgoB,KAAKyH,KAC1BzvB,KAAK+I,IAAI3D,KAAOpF,KAAKgoB,KAAK5iB,KAAKsS,QAC/B1X,KAAK+I,IAAI8nB,MAAQ,GACjB7wB,KAAKmxB,MAAQ,SACE,KAANlwB,GACTjB,KAAK+I,IAAI0mB,KAAOzvB,KAAKgoB,KAAKyH,KAC1BzvB,KAAK+I,IAAI3D,KAAOpF,KAAKgoB,KAAK5iB,KAAKsS,QAC/B1X,KAAK+I,IAAI8nB,MAAQ7wB,KAAKgoB,KAAK6I,MAC3B7wB,KAAK+I,IAAI+nB,SAAW,GACpB9wB,KAAKmxB,MAAQ,aAETnxB,KAAK8S,MAAMlS,OAASZ,KAAKyuB,QAAU,GAAM,IA92BXkD,EA+2BE1wB,EA/2BG2wB,EA+2BA5xB,KAAK8S,MAAM9S,KAAKyuB,QAAU,IA92B9DzB,EAAa2E,IAAiB,KAARC,GAAsB,MAARA,IA+2BlC5xB,KAAK8S,MAAMlS,OAASZ,KAAKyuB,QAAU,GAAK,IACvCiD,EAAwBhrB,IAAI1G,KAAK8S,MAAM9S,KAAKyuB,QAAU,KAC1DzuB,KAAK+I,IAAI0mB,KAAOzvB,KAAKgoB,KAAKyH,KAC1BzvB,KAAK+I,IAAI3D,KAAOpF,KAAKgoB,KAAK5iB,KAAKsS,QAC/B0Y,EAAYpwB,KAAK+I,MAEjB/I,KAAK2wB,YAAa,EAGpB3wB,KAAKmxB,MAAQ,SACXnxB,KAAKyuB,UAGTzuB,KAAKmxB,MAAQ,SACXnxB,KAAKyuB,UAGF,CACT,EAEA+B,EAAgBtwB,UAAU,oBAAsB,SAAwBe,GA53BxE,IAA8C8F,EA84B5C,OAjBU,KAAN9F,GAAkB,KAANA,GACJ,KAANA,IACFjB,KAAK2wB,YAAa,GAEpB3wB,KAAKmxB,MAAQ,cAEK,OAAdnxB,KAAKgoB,MAAsC,SAArBhoB,KAAKgoB,KAAKqF,SAl4Bb,KADmBtmB,EAo4BC/G,KAAKgoB,KAAK5iB,KAAK,IAn4B9CxE,QAAgBosB,EAAajmB,EAAOggB,YAAY,KAAqB,MAAdhgB,EAAO,GAo4BtE/G,KAAK+I,IAAI3D,KAAKyB,KAAK7G,KAAKgoB,KAAK5iB,KAAK,IAElCpF,KAAK+I,IAAI0mB,KAAOzvB,KAAKgoB,KAAKyH,MAG9BzvB,KAAKmxB,MAAQ,SACXnxB,KAAKyuB,UAGF,CACT,EAEA+B,EAAgBtwB,UAAU,mBAAqB,SAAuBe,EAAG+sB,GACvE,GAAItH,MAAMzlB,IAAY,KAANA,GAAkB,KAANA,GAAkB,KAANA,GAAkB,KAANA,EAElD,KADEjB,KAAKyuB,SACFzuB,KAAK0wB,eAAiBvD,EAA2BntB,KAAK4b,QACzD5b,KAAK2wB,YAAa,EAClB3wB,KAAKmxB,MAAQ,YACR,GAAoB,KAAhBnxB,KAAK4b,OAAe,CAE7B,GADA5b,KAAK+I,IAAI0mB,KAAO,GACZzvB,KAAK0wB,cACP,OAAO,EAET1wB,KAAKmxB,MAAQ,YACnB,KAAW,CACL,IAAI1B,EAAOrB,EAAUpuB,KAAK4b,OAAQ0R,EAAUttB,KAAK+I,MACjD,GAAI0mB,IAAS7C,EACX,OAAOA,EAOT,GALa,cAAT6C,IACFA,EAAO,IAETzvB,KAAK+I,IAAI0mB,KAAOA,EAEZzvB,KAAK0wB,cACP,OAAO,EAGT1wB,KAAK4b,OAAS,GACd5b,KAAKmxB,MAAQ,YACd,MAEDnxB,KAAK4b,QAAUoS,EAGjB,OAAO,CACT,EAEAwC,EAAgBtwB,UAAU,oBAAsB,SAAwBe,GAuBtE,OAtBIqsB,EAAUttB,KAAK+I,MACP,KAAN9H,IACFjB,KAAK2wB,YAAa,GAEpB3wB,KAAKmxB,MAAQ,OAEH,KAANlwB,GAAkB,KAANA,KACZjB,KAAKyuB,SAECzuB,KAAK0wB,eAAuB,KAANzvB,EAGtBjB,KAAK0wB,eAAuB,KAANzvB,OAGjBkD,IAANlD,IACTjB,KAAKmxB,MAAQ,OACH,KAANlwB,KACAjB,KAAKyuB,UALTzuB,KAAK+I,IAAI+nB,SAAW,GACpB9wB,KAAKmxB,MAAQ,aAJbnxB,KAAK+I,IAAI8nB,MAAQ,GACjB7wB,KAAKmxB,MAAQ,UAWR,CACT,EAEAX,EAAgBtwB,UAAU,cAAgB,SAAmBe,GAC3D,GAAIylB,MAAMzlB,IAAY,KAANA,GAAaqsB,EAAUttB,KAAK+I,MAAc,KAAN9H,IAC9CjB,KAAK0wB,gBAAwB,KAANzvB,GAAkB,KAANA,GAAY,CAwBnD,GAvBIqsB,EAAUttB,KAAK+I,MAAc,KAAN9H,IACzBjB,KAAK2wB,YAAa,IAh+BxB,SAAqB/U,GAEnB,MAAkB,QADlBA,EAASA,EAAOiI,gBACqB,SAAXjI,GAAgC,SAAXA,GAAgC,WAAXA,CACrE,CAg+BOiW,CAAY7xB,KAAK4b,SAKVsR,EAAYltB,KAAK4b,SAAiB,KAAN3a,GAC1BqsB,EAAUttB,KAAK+I,MAAc,KAAN9H,EAExBisB,EAAYltB,KAAK4b,UACH,SAApB5b,KAAK+I,IAAIskB,QAA8C,IAAzBrtB,KAAK+I,IAAI3D,KAAKxE,QAAgBusB,EAA2BntB,KAAK4b,UACxE,KAAlB5b,KAAK+I,IAAI0mB,MAAiC,OAAlBzvB,KAAK+I,IAAI0mB,OACnCzvB,KAAK2wB,YAAa,EAClB3wB,KAAK+I,IAAI0mB,KAAO,IAElBzvB,KAAK4b,OAAS5b,KAAK4b,OAAO,GAAK,KAEjC5b,KAAK+I,IAAI3D,KAAKyB,KAAK7G,KAAK4b,SATxB5b,KAAK+I,IAAI3D,KAAKyB,KAAK,KANnBupB,EAAYpwB,KAAK+I,KACP,KAAN9H,GAAcqsB,EAAUttB,KAAK+I,MAAc,KAAN9H,GACvCjB,KAAK+I,IAAI3D,KAAKyB,KAAK,KAevB7G,KAAK4b,OAAS,GACU,SAApB5b,KAAK+I,IAAIskB,cAA4BlpB,IAANlD,GAAyB,KAANA,GAAkB,KAANA,GAChE,KAAOjB,KAAK+I,IAAI3D,KAAKxE,OAAS,GAA0B,KAArBZ,KAAK+I,IAAI3D,KAAK,IAC/CpF,KAAK2wB,YAAa,EAClB3wB,KAAK+I,IAAI3D,KAAK0sB,QAGR,KAAN7wB,IACFjB,KAAK+I,IAAI8nB,MAAQ,GACjB7wB,KAAKmxB,MAAQ,SAEL,KAANlwB,IACFjB,KAAK+I,IAAI+nB,SAAW,GACpB9wB,KAAKmxB,MAAQ,WAEnB,MAGc,KAANlwB,GACAgsB,EAAWjtB,KAAK8S,MAAM9S,KAAKyuB,QAAU,KACpCxB,EAAWjtB,KAAK8S,MAAM9S,KAAKyuB,QAAU,MACxCzuB,KAAK2wB,YAAa,GAGpB3wB,KAAK4b,QAAUkS,EAAkB7sB,EAAG0sB,GAGtC,OAAO,CACT,EAEA6C,EAAgBtwB,UAAU,mCAAqC,SAAmCe,GAwBhG,OAvBU,KAANA,GACFjB,KAAK+I,IAAI8nB,MAAQ,GACjB7wB,KAAKmxB,MAAQ,SACE,KAANlwB,GACTjB,KAAK+I,IAAI+nB,SAAW,GACpB9wB,KAAKmxB,MAAQ,aAGRzK,MAAMzlB,IAAY,KAANA,IACfjB,KAAK2wB,YAAa,GAGV,KAAN1vB,GACEgsB,EAAWjtB,KAAK8S,MAAM9S,KAAKyuB,QAAU,KACrCxB,EAAWjtB,KAAK8S,MAAM9S,KAAKyuB,QAAU,MACzCzuB,KAAK2wB,YAAa,GAGfjK,MAAMzlB,KACTjB,KAAK+I,IAAI3D,KAAK,GAAKpF,KAAK+I,IAAI3D,KAAK,GAAK0oB,EAAkB7sB,EAAGwsB,MAIxD,CACT,EAEA+C,EAAgBtwB,UAAU,eAAiB,SAAoBe,EAAG+sB,GAChE,GAAItH,MAAMzlB,KAAQjB,KAAK0wB,eAAuB,KAANzvB,EAAW,CAC5CqsB,EAAUttB,KAAK+I,MAA4B,OAApB/I,KAAK+I,IAAIskB,QAAuC,QAApBrtB,KAAK+I,IAAIskB,SAC/DrtB,KAAKywB,iBAAmB,SAG1B,MAAM7U,EAAS,IAAIlG,OAAO1V,KAAK4b,QAC/B,IAAK,IAAI5a,EAAI,EAAGA,EAAI4a,EAAOhb,SAAUI,EAC/B4a,EAAO5a,GAAK,IAAQ4a,EAAO5a,GAAK,KAAsB,KAAd4a,EAAO5a,IAA6B,KAAd4a,EAAO5a,IACvD,KAAd4a,EAAO5a,IAA6B,KAAd4a,EAAO5a,GAC/BhB,KAAK+I,IAAI8nB,OAAStD,EAAc3R,EAAO5a,IAEvChB,KAAK+I,IAAI8nB,OAASnwB,OAAOsmB,cAAcpL,EAAO5a,IAIlDhB,KAAK4b,OAAS,GACJ,KAAN3a,IACFjB,KAAK+I,IAAI+nB,SAAW,GACpB9wB,KAAKmxB,MAAQ,WAEnB,MAEc,KAANlwB,GACAgsB,EAAWjtB,KAAK8S,MAAM9S,KAAKyuB,QAAU,KACpCxB,EAAWjtB,KAAK8S,MAAM9S,KAAKyuB,QAAU,MACxCzuB,KAAK2wB,YAAa,GAGpB3wB,KAAK4b,QAAUoS,EAGjB,OAAO,CACT,EAEAwC,EAAgBtwB,UAAU,kBAAoB,SAAuBe,GAenE,OAdIylB,MAAMzlB,KACO,IAANA,EACTjB,KAAK2wB,YAAa,GAGR,KAAN1vB,GACAgsB,EAAWjtB,KAAK8S,MAAM9S,KAAKyuB,QAAU,KACpCxB,EAAWjtB,KAAK8S,MAAM9S,KAAKyuB,QAAU,MACxCzuB,KAAK2wB,YAAa,GAGpB3wB,KAAK+I,IAAI+nB,UAAYhD,EAAkB7sB,EAAGwsB,MAGrC,CACT,EAsDAxG,EAAAC,QAAA6K,aApDA,SAAsBhpB,EAAKipB,GACzB,IAAIpJ,EAAS7f,EAAIskB,OAAS,IAqB1B,GApBiB,OAAbtkB,EAAI0mB,MACN7G,GAAU,KAEW,KAAjB7f,EAAIunB,UAAoC,KAAjBvnB,EAAIwnB,WAC7B3H,GAAU7f,EAAIunB,SACO,KAAjBvnB,EAAIwnB,WACN3H,GAAU,IAAM7f,EAAIwnB,UAEtB3H,GAAU,KAGZA,GAAU4G,EAAczmB,EAAI0mB,MAEX,OAAb1mB,EAAI6nB,OACNhI,GAAU,IAAM7f,EAAI6nB,OAEA,OAAb7nB,EAAI0mB,MAAgC,SAAf1mB,EAAIskB,SAClCzE,GAAU,MAGR7f,EAAIgoB,iBACNnI,GAAU7f,EAAI3D,KAAK,QAEnB,IAAK,MAAM2B,KAAUgC,EAAI3D,KACvBwjB,GAAU,IAAM7hB,EAYpB,OARkB,OAAdgC,EAAI8nB,QACNjI,GAAU,IAAM7f,EAAI8nB,OAGjBmB,GAAoC,OAAjBjpB,EAAI+nB,WAC1BlI,GAAU,IAAM7f,EAAI+nB,UAGflI,CACR,EAeD3B,EAAoCC,QAAA+K,mBAAA,SAAUlpB,GAE5C,OAAQA,EAAIskB,QACV,IAAK,OACH,IACE,OAAOpG,EAAOC,QAAQ+K,mBAAmBhL,EAAOC,QAAQgL,SAASnpB,EAAI3D,KAAK,IAI3E,CAHC,MAAOrF,GAEP,MAAO,MACR,CACH,IAAK,MACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,KACL,IAAK,MACH,OA7BN,SAAyBoyB,GACvB,IAAIjsB,EAASisB,EAAM9E,OAAS,MAO5B,OANAnnB,GAAUspB,EAAc2C,EAAM1C,MAEX,OAAf0C,EAAMvB,OACR1qB,GAAU,IAAMisB,EAAMvB,MAGjB1qB,CACR,CAoBYksB,CAAgB,CACrB/E,OAAQtkB,EAAIskB,OACZoC,KAAM1mB,EAAI0mB,KACVmB,KAAM7nB,EAAI6nB,OAEd,IAAK,OAEH,MAAO,UACT,QAEE,MAAO,OAEb,EAEA3J,EAAAC,QAAAmL,cAA+B,SAAUvf,EAAOL,QAC9BtO,IAAZsO,IACFA,EAAU,CAAA,GAGZ,MAAM6f,EAAM,IAAI9B,EAAgB1d,EAAOL,EAAQ8f,QAAS9f,EAAQge,iBAAkBhe,EAAQ1J,IAAK0J,EAAQie,eACvG,OAAI4B,EAAI1F,QACC,UAGF0F,EAAIvpB,GACb,EAEAke,EAAAC,QAAAsL,eAAgC,SAAUzpB,EAAKunB,GAC7CvnB,EAAIunB,SAAW,GACf,MAAMvB,EAAUvE,EAASH,KAAKzU,OAAO0a,GACrC,IAAK,IAAItvB,EAAI,EAAGA,EAAI+tB,EAAQnuB,SAAUI,EACpC+H,EAAIunB,UAAYxC,EAAkBiB,EAAQ/tB,GAAI6sB,EAElD,EAEA5G,EAAAC,QAAAuL,eAAgC,SAAU1pB,EAAKwnB,GAC7CxnB,EAAIwnB,SAAW,GACf,MAAMxB,EAAUvE,EAASH,KAAKzU,OAAO2a,GACrC,IAAK,IAAIvvB,EAAI,EAAGA,EAAI+tB,EAAQnuB,SAAUI,EACpC+H,EAAIwnB,UAAYzC,EAAkBiB,EAAQ/tB,GAAI6sB,EAElD,EAEA5G,EAAAC,QAAAsI,cAA+BA,EAE/BvI,EAAAC,QAAAwL,gCA7wBA,SAAyC3pB,GACvC,OAAoB,OAAbA,EAAI0mB,MAA8B,KAAb1mB,EAAI0mB,MAAe1mB,EAAIgoB,kBAAmC,SAAfhoB,EAAIskB,MAC5E,EA6wBDpG,EAAkCC,QAAAyL,iBAAA,SAAUlW,GAC1C,OAAO/b,OAAO+b,EAChB,EAEAwK,EAAAC,QAAAgL,SAA0B,SAAUpf,EAAOL,GAMzC,YALgBtO,IAAZsO,IACFA,EAAU,CAAA,GAILwU,EAAOC,QAAQmL,cAAcvf,EAAO,CAAEyf,QAAS9f,EAAQ8f,QAAS9B,iBAAkBhe,EAAQge,yBC9wCnG,MAAM6B,GAAM7H,GAAAA,QAEUmI,GAAAC,eAAG,MACvB5c,YAAY6c,GACV,MAAM/pB,EAAM+pB,EAAgB,GACtB9K,EAAO8K,EAAgB,GAE7B,IAAIC,EAAa,KACjB,QAAa5uB,IAAT6jB,IACF+K,EAAaT,GAAID,cAAcrK,GACZ,YAAf+K,GACF,MAAM,IAAIzrB,UAAU,oBAIxB,MAAM0rB,EAAYV,GAAID,cAActpB,EAAK,CAAEwpB,QAASQ,IACpD,GAAkB,YAAdC,EACF,MAAM,IAAI1rB,UAAU,eAGtBtH,KAAKizB,KAAOD,CAGb,CAEG5gB,WACF,OAAOkgB,GAAIP,aAAa/xB,KAAKizB,KAC9B,CAEG7gB,SAAK/G,GACP,MAAM2nB,EAAYV,GAAID,cAAchnB,GACpC,GAAkB,YAAd2nB,EACF,MAAM,IAAI1rB,UAAU,eAGtBtH,KAAKizB,KAAOD,CACb,CAEGjf,aACF,OAAOue,GAAIL,mBAAmBjyB,KAAKizB,KACpC,CAEGC,eACF,OAAOlzB,KAAKizB,KAAK5F,OAAS,GAC3B,CAEG6F,aAAS7nB,GACXinB,GAAID,cAAchnB,EAAI,IAAK,CAAEtC,IAAK/I,KAAKizB,KAAMvC,cAAe,gBAC7D,CAEGJ,eACF,OAAOtwB,KAAKizB,KAAK3C,QAClB,CAEGA,aAASjlB,GACPinB,GAAII,gCAAgC1yB,KAAKizB,OAI7CX,GAAIE,eAAexyB,KAAKizB,KAAM5nB,EAC/B,CAEGklB,eACF,OAAOvwB,KAAKizB,KAAK1C,QAClB,CAEGA,aAASllB,GACPinB,GAAII,gCAAgC1yB,KAAKizB,OAI7CX,GAAIG,eAAezyB,KAAKizB,KAAM5nB,EAC/B,CAEGokB,WACF,MAAM1mB,EAAM/I,KAAKizB,KAEjB,OAAiB,OAAblqB,EAAI0mB,KACC,GAGQ,OAAb1mB,EAAI6nB,KACC0B,GAAI9C,cAAczmB,EAAI0mB,MAGxB6C,GAAI9C,cAAczmB,EAAI0mB,MAAQ,IAAM6C,GAAIK,iBAAiB5pB,EAAI6nB,KACrE,CAEGnB,SAAKpkB,GACHrL,KAAKizB,KAAKlC,kBAIduB,GAAID,cAAchnB,EAAG,CAAEtC,IAAK/I,KAAKizB,KAAMvC,cAAe,QACvD,CAEGyC,eACF,OAAuB,OAAnBnzB,KAAKizB,KAAKxD,KACL,GAGF6C,GAAI9C,cAAcxvB,KAAKizB,KAAKxD,KACpC,CAEG0D,aAAS9nB,GACPrL,KAAKizB,KAAKlC,kBAIduB,GAAID,cAAchnB,EAAG,CAAEtC,IAAK/I,KAAKizB,KAAMvC,cAAe,YACvD,CAEGE,WACF,OAAuB,OAAnB5wB,KAAKizB,KAAKrC,KACL,GAGF0B,GAAIK,iBAAiB3yB,KAAKizB,KAAKrC,KACvC,CAEGA,SAAKvlB,GACHinB,GAAII,gCAAgC1yB,KAAKizB,QAInC,KAAN5nB,EACFrL,KAAKizB,KAAKrC,KAAO,KAEjB0B,GAAID,cAAchnB,EAAG,CAAEtC,IAAK/I,KAAKizB,KAAMvC,cAAe,SAEzD,CAEG0C,eACF,OAAIpzB,KAAKizB,KAAKlC,iBACL/wB,KAAKizB,KAAK7tB,KAAK,GAGM,IAA1BpF,KAAKizB,KAAK7tB,KAAKxE,OACV,GAGF,IAAMZ,KAAKizB,KAAK7tB,KAAKqE,KAAK,IAClC,CAEG2pB,aAAS/nB,GACPrL,KAAKizB,KAAKlC,mBAId/wB,KAAKizB,KAAK7tB,KAAO,GACjBktB,GAAID,cAAchnB,EAAG,CAAEtC,IAAK/I,KAAKizB,KAAMvC,cAAe,eACvD,CAEG7kB,aACF,OAAwB,OAApB7L,KAAKizB,KAAKpC,OAAsC,KAApB7wB,KAAKizB,KAAKpC,MACjC,GAGF,IAAM7wB,KAAKizB,KAAKpC,KACxB,CAEGhlB,WAAOR,GAGT,MAAMtC,EAAM/I,KAAKizB,KAEjB,GAAU,KAAN5nB,EAEF,YADAtC,EAAI8nB,MAAQ,MAId,MAAM/d,EAAiB,MAATzH,EAAE,GAAaA,EAAE8iB,UAAU,GAAK9iB,EAC9CtC,EAAI8nB,MAAQ,GACZyB,GAAID,cAAcvf,EAAO,CAAE/J,MAAK2nB,cAAe,SAChD,CAEG5pB,WACF,OAA2B,OAAvB9G,KAAKizB,KAAKnC,UAA4C,KAAvB9wB,KAAKizB,KAAKnC,SACpC,GAGF,IAAM9wB,KAAKizB,KAAKnC,QACxB,CAEGhqB,SAAKuE,GACP,GAAU,KAANA,EAEF,YADArL,KAAKizB,KAAKnC,SAAW,MAIvB,MAAMhe,EAAiB,MAATzH,EAAE,GAAaA,EAAE8iB,UAAU,GAAK9iB,EAC9CrL,KAAKizB,KAAKnC,SAAW,GACrBwB,GAAID,cAAcvf,EAAO,CAAE/J,IAAK/I,KAAKizB,KAAMvC,cAAe,YAC3D,CAED2C,SACE,OAAOrzB,KAAKoS,IACb,eCpMH,MAAMqT,EAAcgF,GACd6I,EAAQnH,GAAAA,QACRoH,EAAOC,GAEP5L,EAAO0L,EAAM5L,WAEnB,SAAS9b,EAAI7C,GACX,IAAK/I,MAAQA,KAAK4nB,MAAW5nB,gBAAgB4L,GAC3C,MAAM,IAAItE,UAAU,yHAEtB,GAAIG,UAAU7G,OAAS,EACrB,MAAM,IAAI0G,UAAU,4DAA8DG,UAAU7G,OAAS,aAEvG,MAAM4G,EAAO,GACb,IAAK,IAAIxG,EAAI,EAAGA,EAAIyG,UAAU7G,QAAUI,EAAI,IAAKA,EAC/CwG,EAAKxG,GAAKyG,UAAUzG,GAEtBwG,EAAK,GAAKie,EAAuB,UAAEje,EAAK,SACxBrD,IAAZqD,EAAK,KACTA,EAAK,GAAKie,EAAuB,UAAEje,EAAK,KAGxCyf,EAAOC,QAAQuM,MAAMzzB,KAAMwH,EAC5B,CAEDoE,EAAI1L,UAAUmzB,OAAS,WACrB,IAAKrzB,OAASinB,EAAOC,QAAQwM,GAAG1zB,MAC9B,MAAM,IAAIsH,UAAU,sBAEtB,MAAME,EAAO,GACb,IAAK,IAAIxG,EAAI,EAAGA,EAAIyG,UAAU7G,QAAUI,EAAI,IAAKA,EAC/CwG,EAAKxG,GAAKyG,UAAUzG,GAEtB,OAAOhB,KAAK4nB,GAAMyL,OAAO3rB,MAAM1H,KAAK4nB,GAAOpgB,EAC7C,EACAhF,OAAO+kB,eAAe3b,EAAI1L,UAAW,OAAQ,CAC3CyG,MACE,OAAO3G,KAAK4nB,GAAMxV,IACnB,EACD1N,IAAIuK,GACFA,EAAIwW,EAAuB,UAAExW,GAC7BjP,KAAK4nB,GAAMxV,KAAOnD,CACnB,EACD0kB,YAAY,EACZC,cAAc,IAGhBhoB,EAAI1L,UAAUwB,SAAW,WACvB,IAAK1B,OAASinB,EAAOC,QAAQwM,GAAG1zB,MAC9B,MAAM,IAAIsH,UAAU,sBAEtB,OAAOtH,KAAKoS,IACd,EAEA5P,OAAO+kB,eAAe3b,EAAI1L,UAAW,SAAU,CAC7CyG,MACE,OAAO3G,KAAK4nB,GAAM7T,MACnB,EACD4f,YAAY,EACZC,cAAc,IAGhBpxB,OAAO+kB,eAAe3b,EAAI1L,UAAW,WAAY,CAC/CyG,MACE,OAAO3G,KAAK4nB,GAAMsL,QACnB,EACDxuB,IAAIuK,GACFA,EAAIwW,EAAuB,UAAExW,GAC7BjP,KAAK4nB,GAAMsL,SAAWjkB,CACvB,EACD0kB,YAAY,EACZC,cAAc,IAGhBpxB,OAAO+kB,eAAe3b,EAAI1L,UAAW,WAAY,CAC/CyG,MACE,OAAO3G,KAAK4nB,GAAM0I,QACnB,EACD5rB,IAAIuK,GACFA,EAAIwW,EAAuB,UAAExW,GAC7BjP,KAAK4nB,GAAM0I,SAAWrhB,CACvB,EACD0kB,YAAY,EACZC,cAAc,IAGhBpxB,OAAO+kB,eAAe3b,EAAI1L,UAAW,WAAY,CAC/CyG,MACE,OAAO3G,KAAK4nB,GAAM2I,QACnB,EACD7rB,IAAIuK,GACFA,EAAIwW,EAAuB,UAAExW,GAC7BjP,KAAK4nB,GAAM2I,SAAWthB,CACvB,EACD0kB,YAAY,EACZC,cAAc,IAGhBpxB,OAAO+kB,eAAe3b,EAAI1L,UAAW,OAAQ,CAC3CyG,MACE,OAAO3G,KAAK4nB,GAAM6H,IACnB,EACD/qB,IAAIuK,GACFA,EAAIwW,EAAuB,UAAExW,GAC7BjP,KAAK4nB,GAAM6H,KAAOxgB,CACnB,EACD0kB,YAAY,EACZC,cAAc,IAGhBpxB,OAAO+kB,eAAe3b,EAAI1L,UAAW,WAAY,CAC/CyG,MACE,OAAO3G,KAAK4nB,GAAMuL,QACnB,EACDzuB,IAAIuK,GACFA,EAAIwW,EAAuB,UAAExW,GAC7BjP,KAAK4nB,GAAMuL,SAAWlkB,CACvB,EACD0kB,YAAY,EACZC,cAAc,IAGhBpxB,OAAO+kB,eAAe3b,EAAI1L,UAAW,OAAQ,CAC3CyG,MACE,OAAO3G,KAAK4nB,GAAMgJ,IACnB,EACDlsB,IAAIuK,GACFA,EAAIwW,EAAuB,UAAExW,GAC7BjP,KAAK4nB,GAAMgJ,KAAO3hB,CACnB,EACD0kB,YAAY,EACZC,cAAc,IAGhBpxB,OAAO+kB,eAAe3b,EAAI1L,UAAW,WAAY,CAC/CyG,MACE,OAAO3G,KAAK4nB,GAAMwL,QACnB,EACD1uB,IAAIuK,GACFA,EAAIwW,EAAuB,UAAExW,GAC7BjP,KAAK4nB,GAAMwL,SAAWnkB,CACvB,EACD0kB,YAAY,EACZC,cAAc,IAGhBpxB,OAAO+kB,eAAe3b,EAAI1L,UAAW,SAAU,CAC7CyG,MACE,OAAO3G,KAAK4nB,GAAM/b,MACnB,EACDnH,IAAIuK,GACFA,EAAIwW,EAAuB,UAAExW,GAC7BjP,KAAK4nB,GAAM/b,OAASoD,CACrB,EACD0kB,YAAY,EACZC,cAAc,IAGhBpxB,OAAO+kB,eAAe3b,EAAI1L,UAAW,OAAQ,CAC3CyG,MACE,OAAO3G,KAAK4nB,GAAM9gB,IACnB,EACDpC,IAAIuK,GACFA,EAAIwW,EAAuB,UAAExW,GAC7BjP,KAAK4nB,GAAM9gB,KAAOmI,CACnB,EACD0kB,YAAY,EACZC,cAAc,IAIhB3M,EAAiBC,QAAA,CACfwM,GAAGzc,KACQA,GAAOA,EAAI2Q,aAAiB2L,EAAKV,eAE5CgB,OAAOf,EAAiBgB,GACtB,IAAI7c,EAAMzU,OAAOqxB,OAAOjoB,EAAI1L,WAE5B,OADAF,KAAKyzB,MAAMxc,EAAK6b,EAAiBgB,GAC1B7c,CACR,EACDwc,MAAMxc,EAAK6b,EAAiBgB,GACrBA,IAAaA,EAAc,IAChCA,EAAYhM,QAAU7Q,EAEtBA,EAAI2Q,GAAQ,IAAI2L,EAAKV,eAAeC,EAAiBgB,GACrD7c,EAAI2Q,GAAM0L,EAAM7L,eAAiBxQ,CAClC,EACD8c,UAAWnoB,EACXooB,OAAQ,CACNC,OAAQ,CAAEroB,IAAKA,GACfsoB,OAAQ,CAAEtoB,IAAKA,UC9LnBuoB,GAAAvoB,IAAc6e,GAAAA,QAAiBsJ,UAC/BI,GAAApC,aAAuB5F,GAAAA,QAA+B4F,aACtDoC,GAAAlC,mBAA6B9F,GAAAA,QAA+B8F,mBAC5DkC,GAAA9B,cAAwBlG,GAAAA,QAA+BkG,cACvD8B,GAAA3B,eAAyBrG,GAAAA,QAA+BqG,eACxD2B,GAAA1B,eAAyBtG,GAAAA,QAA+BsG,eACxD0B,GAAA3E,cAAwBrD,GAAAA,QAA+BqD,cACvD2E,GAAAxB,iBAA2BxG,GAAAA,QAA+BwG,iBAC1CwB,GAAAjC,SAAG/F,GAAAA,QAA+B+F,SCAlD,MAAMkC,GAAWC,EAAM,QAACD,SAElBE,GAASzwB,OAAO,UAChB0wB,GAAO1wB,OAAO,QAEpB,MAAM2wB,GACLve,cACCjW,KAAKu0B,IAAQ,GAEb,MAAME,EAAYhtB,UAAU,GACtBgL,EAAUhL,UAAU,GAEpBub,EAAU,GAChB,IAAIjB,EAAO,EAEX,GAAI0S,EAAW,CACd,MAAM1zB,EAAI0zB,EACJ7zB,EAAS2lB,OAAOxlB,EAAEH,QACxB,IAAK,IAAII,EAAI,EAAGA,EAAIJ,EAAQI,IAAK,CAChC,MAAM0zB,EAAU3zB,EAAEC,GAClB,IAAI4a,EAEHA,EADG8Y,aAAmBhf,OACbgf,EACCC,YAAYC,OAAOF,GACpBhf,OAAO1L,KAAK0qB,EAAQ9Y,OAAQ8Y,EAAQG,WAAYH,EAAQI,YACvDJ,aAAmBC,YACpBjf,OAAO1L,KAAK0qB,GACXA,aAAmBF,GACpBE,EAAQJ,IAER5e,OAAO1L,KAAwB,iBAAZ0qB,EAAuBA,EAAUh0B,OAAOg0B,IAErE3S,GAAQnG,EAAOhb,OACfoiB,EAAQnc,KAAK+U,EACb,CACD,CAED5b,KAAKs0B,IAAU5e,OAAOsH,OAAOgG,GAE7B,IAAI1d,EAAOmN,QAA4BtO,IAAjBsO,EAAQnN,MAAsB5E,OAAO+R,EAAQnN,MAAMue,cACrEve,IAAS,mBAAmBE,KAAKF,KACpCtF,KAAKu0B,IAAQjvB,EAEd,CACGyc,WACH,OAAO/hB,KAAKs0B,IAAQ1zB,MACpB,CACG0E,WACH,OAAOtF,KAAKu0B,GACZ,CACDvpB,OACC,OAAOC,QAAQC,QAAQlL,KAAKs0B,IAAQ5yB,WACpC,CACDqzB,cACC,MAAMlb,EAAM7Z,KAAKs0B,IACXU,EAAKnb,EAAI+B,OAAOlE,MAAMmC,EAAIgb,WAAYhb,EAAIgb,WAAahb,EAAIib,YACjE,OAAO7pB,QAAQC,QAAQ8pB,EACvB,CACDC,SACC,MAAMC,EAAW,IAAId,GAIrB,OAHAc,EAASC,MAAQ,aACjBD,EAASruB,KAAK7G,KAAKs0B,KACnBY,EAASruB,KAAK,MACPquB,CACP,CACDxzB,WACC,MAAO,eACP,CACDgW,QACC,MAAMqK,EAAO/hB,KAAK+hB,KAEZ1Z,EAAQZ,UAAU,GAClBsV,EAAMtV,UAAU,GACtB,IAAI2tB,EAAeC,EAElBD,OADajxB,IAAVkE,EACa,EACNA,EAAQ,EACF0I,KAAKC,IAAI+Q,EAAO1Z,EAAO,GAEvB0I,KAAKE,IAAI5I,EAAO0Z,GAGhCsT,OADWlxB,IAAR4Y,EACWgF,EACJhF,EAAM,EACFhM,KAAKC,IAAI+Q,EAAOhF,EAAK,GAErBhM,KAAKE,IAAI8L,EAAKgF,GAE7B,MAAMuT,EAAOvkB,KAAKC,IAAIqkB,EAAcD,EAAe,GAG7CG,EADSv1B,KAAKs0B,IACQ5c,MAAM0d,EAAeA,EAAgBE,GAC3DE,EAAO,IAAIhB,GAAK,GAAI,CAAElvB,KAAMmC,UAAU,KAE5C,OADA+tB,EAAKlB,IAAUiB,EACRC,CACP,EA8BF,SAASC,GAAWx1B,EAASqF,EAAMowB,GACjCv1B,MAAMyD,KAAK5D,KAAMC,GAEjBD,KAAKC,QAAUA,EACfD,KAAKsF,KAAOA,EAGRowB,IACF11B,KAAK6M,KAAO7M,KAAK21B,MAAQD,EAAY7oB,MAIvC1M,MAAMiW,kBAAkBpW,KAAMA,KAAKiW,YACrC,CAMA,IAAI2f,GA9CJpzB,OAAOqzB,iBAAiBrB,GAAKt0B,UAAW,CACvC6hB,KAAM,CAAE4R,YAAY,GACpBruB,KAAM,CAAEquB,YAAY,GACpBjc,MAAO,CAAEic,YAAY,KAGtBnxB,OAAO+kB,eAAeiN,GAAKt0B,UAAW2D,OAAOiyB,YAAa,CACzD9wB,MAAO,OACP+wB,UAAU,EACVpC,YAAY,EACZC,cAAc,IAgCf6B,GAAWv1B,UAAYsC,OAAOqxB,OAAO1zB,MAAMD,WAC3Cu1B,GAAWv1B,UAAU+V,YAAcwf,GACnCA,GAAWv1B,UAAUE,KAAO,aAG5B,IACCw1B,GAAUI,QAAQ,YAAYJ,OACjB,CAAZ,MAAO71B,GAAK,CAEd,MAAMk2B,GAAYpyB,OAAO,kBAGnBqyB,GAAc7B,EAAM,QAAC6B,YAW3B,SAASptB,GAAKD,GACb,IAAIstB,EAAQn2B,KAERo2B,EAAO3uB,UAAU7G,OAAS,QAAsBuD,IAAjBsD,UAAU,GAAmBA,UAAU,GAAK,CAAE,EAC7E4uB,EAAYD,EAAKrU,KAErB,IAAIA,OAAqB5d,IAAdkyB,EAA0B,EAAIA,EACzC,IAAIC,EAAeF,EAAKG,QACxB,IAAIA,OAA2BpyB,IAAjBmyB,EAA6B,EAAIA,EAEnC,MAARztB,EAEHA,EAAO,KACG2tB,GAAkB3tB,GAE5BA,EAAO6M,OAAO1L,KAAKnB,EAAKnH,YACd+0B,GAAO5tB,IAAkB6M,OAAOghB,SAAS7tB,KAA2D,yBAAzCrG,OAAOtC,UAAUwB,SAASkC,KAAKiF,GAEpGA,EAAO6M,OAAO1L,KAAKnB,GACT8rB,YAAYC,OAAO/rB,GAE7BA,EAAO6M,OAAO1L,KAAKnB,EAAK+S,OAAQ/S,EAAKgsB,WAAYhsB,EAAKisB,YAC5CjsB,aAAgBwrB,EAAM,UAGhCxrB,EAAO6M,OAAO1L,KAAKtJ,OAAOmI,MAE3B7I,KAAKi2B,IAAa,CACjBptB,OACA8tB,WAAW,EACX5pB,MAAO,MAER/M,KAAK+hB,KAAOA,EACZ/hB,KAAKu2B,QAAUA,EAEX1tB,aAAgBwrB,EAAAA,SACnBxrB,EAAK+tB,GAAG,SAAS,SAAUC,GAC1B,MAAM9pB,EAAqB,eAAb8pB,EAAIz2B,KAAwBy2B,EAAM,IAAIpB,GAAW,+CAA+CU,EAAMptB,QAAQ8tB,EAAI52B,UAAW,SAAU42B,GACrJV,EAAMF,IAAWlpB,MAAQA,CAC5B,GAEA,CAuHA,SAAS+pB,KACR,IAAIC,EAAS/2B,KAEb,GAAIA,KAAKi2B,IAAWU,UACnB,OAAO7tB,GAAKmC,QAAQ+rB,OAAO,IAAI1vB,UAAU,0BAA0BtH,KAAK+I,QAKzE,GAFA/I,KAAKi2B,IAAWU,WAAY,EAExB32B,KAAKi2B,IAAWlpB,MACnB,OAAOjE,GAAKmC,QAAQ+rB,OAAOh3B,KAAKi2B,IAAWlpB,OAG5C,IAAIlE,EAAO7I,KAAK6I,KAGhB,GAAa,OAATA,EACH,OAAOC,GAAKmC,QAAQC,QAAQwK,OAAOmG,MAAM,IAS1C,GALI4a,GAAO5tB,KACVA,EAAOA,EAAKosB,UAITvf,OAAOghB,SAAS7tB,GACnB,OAAOC,GAAKmC,QAAQC,QAAQrC,GAI7B,KAAMA,aAAgBwrB,EAAAA,SACrB,OAAOvrB,GAAKmC,QAAQC,QAAQwK,OAAOmG,MAAM,IAK1C,IAAIob,EAAQ,GACRC,EAAa,EACbC,GAAQ,EAEZ,OAAO,IAAIruB,GAAKmC,SAAQ,SAAUC,EAAS8rB,GAC1C,IAAII,EAGAL,EAAOR,UACVa,EAAa9lB,YAAW,WACvB6lB,GAAQ,EACRH,EAAO,IAAIvB,GAAW,0CAA0CsB,EAAOhuB,aAAaguB,EAAOR,aAAc,gBAC7G,GAAMQ,EAAOR,UAIX1tB,EAAK+tB,GAAG,SAAS,SAAUC,GACT,eAAbA,EAAIz2B,MAEP+2B,GAAQ,EACRH,EAAOH,IAGPG,EAAO,IAAIvB,GAAW,+CAA+CsB,EAAOhuB,QAAQ8tB,EAAI52B,UAAW,SAAU42B,GAEjH,IAEEhuB,EAAK+tB,GAAG,QAAQ,SAAUS,GACzB,IAAIF,GAAmB,OAAVE,EAAb,CAIA,GAAIN,EAAOhV,MAAQmV,EAAaG,EAAMz2B,OAASm2B,EAAOhV,KAGrD,OAFAoV,GAAQ,OACRH,EAAO,IAAIvB,GAAW,mBAAmBsB,EAAOhuB,mBAAmBguB,EAAOhV,OAAQ,aAInFmV,GAAcG,EAAMz2B,OACpBq2B,EAAMpwB,KAAKwwB,EATV,CAUJ,IAEExuB,EAAK+tB,GAAG,OAAO,WACd,IAAIO,EAAJ,CAIA9lB,aAAa+lB,GAEb,IACClsB,EAAQwK,OAAOsH,OAAOia,EAAOC,GAI7B,CAHC,MAAOL,GAERG,EAAO,IAAIvB,GAAW,kDAAkDsB,EAAOhuB,QAAQ8tB,EAAI52B,UAAW,SAAU42B,GAChH,CATA,CAUJ,GACA,GACA,CA0EA,SAASL,GAAkBvf,GAE1B,MAAmB,iBAARA,GAA0C,mBAAfA,EAAIqgB,QAA+C,mBAAfrgB,EAAItN,QAA4C,mBAAZsN,EAAItQ,KAA4C,mBAAfsQ,EAAIsgB,QAA4C,mBAAZtgB,EAAIvQ,KAAyC,mBAAZuQ,EAAIvS,MAKxL,oBAAzBuS,EAAIhB,YAAY7V,MAAsE,6BAAxCoC,OAAOtC,UAAUwB,SAASkC,KAAKqT,IAA2D,mBAAbA,EAAIugB,KACvI,CAOA,SAASf,GAAOxf,GACf,MAAsB,iBAARA,GAA+C,mBAApBA,EAAI8d,aAAkD,iBAAb9d,EAAI3R,MAA2C,mBAAf2R,EAAIge,QAAoD,mBAApBhe,EAAIhB,aAA8D,iBAAzBgB,EAAIhB,YAAY7V,MAAqB,gBAAgBoF,KAAKyR,EAAIhB,YAAY7V,OAAS,gBAAgBoF,KAAKyR,EAAIpT,OAAOiyB,aACnT,CAQA,SAAS/qB,GAAM0sB,GACd,IAAIC,EAAIC,EACJ9uB,EAAO4uB,EAAS5uB,KAGpB,GAAI4uB,EAASG,SACZ,MAAM,IAAIz3B,MAAM,sCAgBjB,OAXI0I,aAAgBwrB,EAAM,SAAgC,mBAArBxrB,EAAKgvB,cAEzCH,EAAK,IAAIxB,GACTyB,EAAK,IAAIzB,GACTrtB,EAAKivB,KAAKJ,GACV7uB,EAAKivB,KAAKH,GAEVF,EAASxB,IAAWptB,KAAO6uB,EAC3B7uB,EAAO8uB,GAGD9uB,CACR,CAWA,SAASkvB,GAAmBlvB,GAC3B,OAAa,OAATA,EAEI,KACmB,iBAATA,EAEV,2BACG2tB,GAAkB3tB,GAErB,kDACG4tB,GAAO5tB,GAEVA,EAAKvD,MAAQ,KACVoQ,OAAOghB,SAAS7tB,IAGyB,yBAAzCrG,OAAOtC,UAAUwB,SAASkC,KAAKiF,IAG/B8rB,YAAYC,OAAO/rB,GAJtB,KAO+B,mBAArBA,EAAKgvB,YAEf,gCAAgChvB,EAAKgvB,gBAClChvB,aAAgBwrB,UAGnB,KAGA,0BAET,CAWA,SAAS2D,GAAcP,GACtB,MAAM5uB,EAAO4uB,EAAS5uB,KAGtB,OAAa,OAATA,EAEI,EACG4tB,GAAO5tB,GACVA,EAAKkZ,KACFrM,OAAOghB,SAAS7tB,GAEnBA,EAAKjI,OACFiI,GAAsC,mBAAvBA,EAAKovB,gBAE1BpvB,EAAKqvB,mBAAsD,GAAjCrvB,EAAKqvB,kBAAkBt3B,QACrDiI,EAAKsvB,gBAAkBtvB,EAAKsvB,kBAEpBtvB,EAAKovB,gBAKN,IAET,CA5ZAnvB,GAAK5I,UAAY,CACZ2I,WACH,OAAO7I,KAAKi2B,IAAWptB,IACvB,EAEG+uB,eACH,OAAO53B,KAAKi2B,IAAWU,SACvB,EAOD5B,cACC,OAAO+B,GAAYlzB,KAAK5D,MAAMo4B,MAAK,SAAUve,GAC5C,OAAOA,EAAI+B,OAAOlE,MAAMmC,EAAIgb,WAAYhb,EAAIgb,WAAahb,EAAIib,WAChE,GACE,EAODU,OACC,IAAI6C,EAAKr4B,KAAKyI,SAAWzI,KAAKyI,QAAQ9B,IAAI,iBAAmB,GAC7D,OAAOmwB,GAAYlzB,KAAK5D,MAAMo4B,MAAK,SAAUve,GAC5C,OAAOrX,OAAO+M,OAEd,IAAIilB,GAAK,GAAI,CACZlvB,KAAM+yB,EAAGxU,gBACN,CACHyQ,CAACA,IAASza,GAEd,GACE,EAOD1O,OACC,IAAImtB,EAASt4B,KAEb,OAAO82B,GAAYlzB,KAAK5D,MAAMo4B,MAAK,SAAUxc,GAC5C,IACC,OAAOta,KAAKC,MAAMqa,EAAOla,WAGzB,CAFC,MAAOm1B,GACR,OAAO/tB,GAAKmC,QAAQ+rB,OAAO,IAAIvB,GAAW,iCAAiC6C,EAAOvvB,eAAe8tB,EAAI52B,UAAW,gBAChH,CACJ,GACE,EAOD+K,OACC,OAAO8rB,GAAYlzB,KAAK5D,MAAMo4B,MAAK,SAAUxc,GAC5C,OAAOA,EAAOla,UACjB,GACE,EAODka,SACC,OAAOkb,GAAYlzB,KAAK5D,KACxB,EAQDu4B,gBACC,IAAIC,EAASx4B,KAEb,OAAO82B,GAAYlzB,KAAK5D,MAAMo4B,MAAK,SAAUxc,GAC5C,OAwIH,SAAqBA,EAAQnT,GAC5B,GAAuB,mBAAZmtB,GACV,MAAM,IAAIz1B,MAAM,gFAGjB,MAAMk4B,EAAK5vB,EAAQ9B,IAAI,gBACvB,IACIqqB,EAAK5T,EADLqb,EAAU,QAIVJ,IACHrH,EAAM,mBAAmB5tB,KAAKi1B,IAI/Bjb,EAAMxB,EAAOlE,MAAM,EAAG,MAAMhW,YAGvBsvB,GAAO5T,IACX4T,EAAM,iCAAiC5tB,KAAKga,KAIxC4T,GAAO5T,IACX4T,EAAM,yEAAyE5tB,KAAKga,GAC/E4T,IACJA,EAAM,yEAAyE5tB,KAAKga,GAChF4T,GACHA,EAAIpqB,OAIFoqB,IACHA,EAAM,gBAAgB5tB,KAAK4tB,EAAIpqB,UAK5BoqB,GAAO5T,IACX4T,EAAM,mCAAmC5tB,KAAKga,IAI3C4T,IACHyH,EAAUzH,EAAIpqB,MAIE,WAAZ6xB,GAAoC,QAAZA,IAC3BA,EAAU,YAKZ,OAAO7C,GAAQha,EAAQ,QAAS6c,GAAS/2B,UAC1C,CA/LUg3B,CAAY9c,EAAQ4c,EAAO/vB,QACrC,GACE,GAIFjG,OAAOqzB,iBAAiB/sB,GAAK5I,UAAW,CACvC2I,KAAM,CAAE8qB,YAAY,GACpBiE,SAAU,CAAEjE,YAAY,GACxBoB,YAAa,CAAEpB,YAAY,GAC3B6B,KAAM,CAAE7B,YAAY,GACpBxoB,KAAM,CAAEwoB,YAAY,GACpB3oB,KAAM,CAAE2oB,YAAY,KAGrB7qB,GAAK6vB,MAAQ,SAAUzf,GACtB,IAAK,MAAM9Y,KAAQoC,OAAO8kB,oBAAoBxe,GAAK5I,WAElD,KAAME,KAAQ8Y,GAAQ,CACrB,MAAM0f,EAAOp2B,OAAOglB,yBAAyB1e,GAAK5I,UAAWE,GAC7DoC,OAAO+kB,eAAerO,EAAO9Y,EAAMw4B,EACnC,CAEH,EA4UA9vB,GAAKmC,QAAU1I,OAAO0I,QAQtB,MAAM4tB,GAAoB,gCACpBC,GAAyB,0BAE/B,SAASC,GAAa34B,GAErB,GADAA,EAAO,GAAGA,IACNy4B,GAAkBrzB,KAAKpF,IAAkB,KAATA,EACnC,MAAM,IAAIkH,UAAU,GAAGlH,oCAEzB,CAEA,SAAS44B,GAAch0B,GAEtB,GADAA,EAAQ,GAAGA,IACP8zB,GAAuBtzB,KAAKR,GAC/B,MAAM,IAAIsC,UAAU,GAAGtC,qCAEzB,CAUA,SAASi0B,GAAK3yB,EAAKlG,GAClBA,EAAOA,EAAKyjB,cACZ,IAAK,MAAM9e,KAAOuB,EACjB,GAAIvB,EAAI8e,gBAAkBzjB,EACzB,OAAO2E,CAIV,CAEA,MAAMm0B,GAAMr1B,OAAO,OACnB,MAAM8E,GAOLsN,cACC,IAAIkjB,EAAO1xB,UAAU7G,OAAS,QAAsBuD,IAAjBsD,UAAU,GAAmBA,UAAU,QAAKtD,EAI/E,GAFAnE,KAAKk5B,IAAO12B,OAAOqxB,OAAO,MAEtBsF,aAAgBxwB,GAApB,CACC,MAAMywB,EAAaD,EAAKzf,MAClB2f,EAAc72B,OAAOa,KAAK+1B,GAEhC,IAAK,MAAME,KAAcD,EACxB,IAAK,MAAMr0B,KAASo0B,EAAWE,GAC9Bt5B,KAAKs3B,OAAOgC,EAAYt0B,EAK1B,MAID,GAAY,MAARm0B,OAAqB,IAAoB,iBAATA,EA+BnC,MAAM,IAAI7xB,UAAU,0CA/BkC,CACtD,MAAM2B,EAASkwB,EAAKt1B,OAAO01B,UAC3B,GAAc,MAAVtwB,EAAgB,CACnB,GAAsB,mBAAXA,EACV,MAAM,IAAI3B,UAAU,iCAKrB,MAAMkyB,EAAQ,GACd,IAAK,MAAMC,KAAQN,EAAM,CACxB,GAAoB,iBAATM,GAAsD,mBAA1BA,EAAK51B,OAAO01B,UAClD,MAAM,IAAIjyB,UAAU,qCAErBkyB,EAAM3yB,KAAK9D,MAAMiH,KAAKyvB,GACtB,CAED,IAAK,MAAMA,KAAQD,EAAO,CACzB,GAAoB,IAAhBC,EAAK74B,OACR,MAAM,IAAI0G,UAAU,+CAErBtH,KAAKs3B,OAAOmC,EAAK,GAAIA,EAAK,GAC1B,CACL,MAEI,IAAK,MAAM10B,KAAOvC,OAAOa,KAAK81B,GAAO,CACpC,MAAMn0B,EAAQm0B,EAAKp0B,GACnB/E,KAAKs3B,OAAOvyB,EAAKC,EACjB,CAEL,CAEG,CACD,CAQD2B,IAAIvG,GAEH24B,GADA34B,EAAO,GAAGA,KAEV,MAAM2E,EAAMk0B,GAAKj5B,KAAKk5B,IAAM94B,GAC5B,YAAY+D,IAARY,EACI,KAGD/E,KAAKk5B,IAAKn0B,GAAK0E,KAAK,KAC3B,CASD0D,QAAQusB,GACP,IAAIC,EAAUlyB,UAAU7G,OAAS,QAAsBuD,IAAjBsD,UAAU,GAAmBA,UAAU,QAAKtD,EAE9Eq1B,EAAQI,GAAW55B,MACnBgB,EAAI,EACR,KAAOA,EAAIw4B,EAAM54B,QAAQ,CACxB,IAAIi5B,EAAWL,EAAMx4B,GACrB,MAAMZ,EAAOy5B,EAAS,GAChB70B,EAAQ60B,EAAS,GAEvBH,EAAS91B,KAAK+1B,EAAS30B,EAAO5E,EAAMJ,MACpCw5B,EAAQI,GAAW55B,MACnBgB,GACA,CACD,CASD0D,IAAItE,EAAM4E,GAETA,EAAQ,GAAGA,IACX+zB,GAFA34B,EAAO,GAAGA,KAGV44B,GAAch0B,GACd,MAAMD,EAAMk0B,GAAKj5B,KAAKk5B,IAAM94B,GAC5BJ,KAAKk5B,SAAa/0B,IAARY,EAAoBA,EAAM3E,GAAQ,CAAC4E,EAC7C,CASDsyB,OAAOl3B,EAAM4E,GAEZA,EAAQ,GAAGA,IACX+zB,GAFA34B,EAAO,GAAGA,KAGV44B,GAAch0B,GACd,MAAMD,EAAMk0B,GAAKj5B,KAAKk5B,IAAM94B,QAChB+D,IAARY,EACH/E,KAAKk5B,IAAKn0B,GAAK8B,KAAK7B,GAEpBhF,KAAKk5B,IAAK94B,GAAQ,CAAC4E,EAEpB,CAQD0B,IAAItG,GAGH,OADA24B,GADA34B,EAAO,GAAGA,UAEuB+D,IAA1B80B,GAAKj5B,KAAKk5B,IAAM94B,EACvB,CAQDuJ,OAAOvJ,GAEN24B,GADA34B,EAAO,GAAGA,KAEV,MAAM2E,EAAMk0B,GAAKj5B,KAAKk5B,IAAM94B,QAChB+D,IAARY,UACI/E,KAAKk5B,IAAKn0B,EAElB,CAOD2U,MACC,OAAO1Z,KAAKk5B,GACZ,CAOD71B,OACC,OAAOy2B,GAAsB95B,KAAM,MACnC,CAOD+5B,SACC,OAAOD,GAAsB95B,KAAM,QACnC,CASD,CAAC6D,OAAO01B,YACP,OAAOO,GAAsB95B,KAAM,YACnC,EAuBF,SAAS45B,GAAWnxB,GACnB,IAAIuxB,EAAOvyB,UAAU7G,OAAS,QAAsBuD,IAAjBsD,UAAU,GAAmBA,UAAU,GAAK,YAE/E,MAAMpE,EAAOb,OAAOa,KAAKoF,EAAQywB,KAAM1B,OACvC,OAAOn0B,EAAKiD,IAAa,QAAT0zB,EAAiB,SAAU9vB,GAC1C,OAAOA,EAAE2Z,aACX,EAAc,UAATmW,EAAmB,SAAU9vB,GAChC,OAAOzB,EAAQywB,IAAKhvB,GAAGT,KAAK,KAC5B,EAAG,SAAUS,GACb,MAAO,CAACA,EAAE2Z,cAAepb,EAAQywB,IAAKhvB,GAAGT,KAAK,MAChD,EACA,CAhCAd,GAAQzI,UAAUoE,QAAUqE,GAAQzI,UAAU2D,OAAO01B,UAErD/2B,OAAO+kB,eAAe5e,GAAQzI,UAAW2D,OAAOiyB,YAAa,CAC5D9wB,MAAO,UACP+wB,UAAU,EACVpC,YAAY,EACZC,cAAc,IAGfpxB,OAAOqzB,iBAAiBltB,GAAQzI,UAAW,CAC1CyG,IAAK,CAAEgtB,YAAY,GACnBxmB,QAAS,CAAEwmB,YAAY,GACvBjvB,IAAK,CAAEivB,YAAY,GACnB2D,OAAQ,CAAE3D,YAAY,GACtBjtB,IAAK,CAAEitB,YAAY,GACnBhqB,OAAQ,CAAEgqB,YAAY,GACtBtwB,KAAM,CAAEswB,YAAY,GACpBoG,OAAQ,CAAEpG,YAAY,GACtBrvB,QAAS,CAAEqvB,YAAY,KAgBxB,MAAMsG,GAAWp2B,OAAO,YAExB,SAASi2B,GAAsB1S,EAAQ4S,GACtC,MAAMT,EAAW/2B,OAAOqxB,OAAOqG,IAM/B,OALAX,EAASU,IAAY,CACpB7S,SACA4S,OACAz1B,MAAO,GAEDg1B,CACR,CAEA,MAAMW,GAA2B13B,OAAO23B,eAAe,CACtDznB,OAEC,IAAK1S,MAAQwC,OAAOyW,eAAejZ,QAAUk6B,GAC5C,MAAM,IAAI5yB,UAAU,4CAGrB,IAAI8yB,EAAYp6B,KAAKi6B,IACrB,MAAM7S,EAASgT,EAAUhT,OACnB4S,EAAOI,EAAUJ,KACjBz1B,EAAQ61B,EAAU71B,MAElBw1B,EAASH,GAAWxS,EAAQ4S,GAElC,OAAIz1B,GADQw1B,EAAOn5B,OAEX,CACNoE,WAAOb,EACPk2B,MAAM,IAIRr6B,KAAKi6B,IAAU11B,MAAQA,EAAQ,EAExB,CACNS,MAAO+0B,EAAOx1B,GACd81B,MAAM,GAEP,GACC73B,OAAOyW,eAAezW,OAAOyW,eAAe,GAAGpV,OAAO01B,eAezD,SAASe,GAA4B7xB,GACpC,MAAMwO,EAAMzU,OAAO+M,OAAO,CAAEgrB,UAAW,MAAQ9xB,EAAQywB,KAIjDsB,EAAgBvB,GAAKxwB,EAAQywB,IAAM,QAKzC,YAJsB/0B,IAAlBq2B,IACHvjB,EAAIujB,GAAiBvjB,EAAIujB,GAAe,IAGlCvjB,CACR,CAxBAzU,OAAO+kB,eAAe2S,GAA0Br2B,OAAOiyB,YAAa,CACnE9wB,MAAO,kBACP+wB,UAAU,EACVpC,YAAY,EACZC,cAAc,IAqDf,MAAM6G,GAAc52B,OAAO,sBAGrB62B,GAAelO,EAAI,QAACkO,aAS1B,MAAMC,GACL1kB,cACC,IAAIpN,EAAOpB,UAAU7G,OAAS,QAAsBuD,IAAjBsD,UAAU,GAAmBA,UAAU,GAAK,KAC3E4e,EAAO5e,UAAU7G,OAAS,QAAsBuD,IAAjBsD,UAAU,GAAmBA,UAAU,GAAK,CAAA,EAE/EqB,GAAKlF,KAAK5D,KAAM6I,EAAMwd,GAEtB,MAAMhd,EAASgd,EAAKhd,QAAU,IACxBZ,EAAU,IAAIE,GAAQ0d,EAAK5d,SAEjC,GAAY,MAARI,IAAiBJ,EAAQ/B,IAAI,gBAAiB,CACjD,MAAMk0B,EAAc7C,GAAmBlvB,GACnC+xB,GACHnyB,EAAQ6uB,OAAO,eAAgBsD,EAEhC,CAED56B,KAAKy6B,IAAe,CACnB1xB,IAAKsd,EAAKtd,IACVM,SACA+B,WAAYib,EAAKjb,YAAcsvB,GAAarxB,GAC5CZ,UACAogB,QAASxC,EAAKwC,QAEf,CAEG9f,UACH,OAAO/I,KAAKy6B,IAAa1xB,KAAO,EAChC,CAEGM,aACH,OAAOrJ,KAAKy6B,IAAapxB,MACzB,CAKGyB,SACH,OAAO9K,KAAKy6B,IAAapxB,QAAU,KAAOrJ,KAAKy6B,IAAapxB,OAAS,GACrE,CAEGwxB,iBACH,OAAO76B,KAAKy6B,IAAa5R,QAAU,CACnC,CAEGzd,iBACH,OAAOpL,KAAKy6B,IAAarvB,UACzB,CAEG3C,cACH,OAAOzI,KAAKy6B,IAAahyB,OACzB,CAODsC,QACC,OAAO,IAAI4vB,GAAS5vB,GAAM/K,MAAO,CAChC+I,IAAK/I,KAAK+I,IACVM,OAAQrJ,KAAKqJ,OACb+B,WAAYpL,KAAKoL,WACjB3C,QAASzI,KAAKyI,QACdqC,GAAI9K,KAAK8K,GACT+vB,WAAY76B,KAAK66B,YAElB,EAGF/xB,GAAK6vB,MAAMgC,GAASz6B,WAEpBsC,OAAOqzB,iBAAiB8E,GAASz6B,UAAW,CAC3C6I,IAAK,CAAE4qB,YAAY,GACnBtqB,OAAQ,CAAEsqB,YAAY,GACtB7oB,GAAI,CAAE6oB,YAAY,GAClBkH,WAAY,CAAElH,YAAY,GAC1BvoB,WAAY,CAAEuoB,YAAY,GAC1BlrB,QAAS,CAAEkrB,YAAY,GACvB5oB,MAAO,CAAE4oB,YAAY,KAGtBnxB,OAAO+kB,eAAeoT,GAASz6B,UAAW2D,OAAOiyB,YAAa,CAC7D9wB,MAAO,WACP+wB,UAAU,EACVpC,YAAY,EACZC,cAAc,IAGf,MAAMkH,GAAcj3B,OAAO,qBACrB+H,GAAM5C,EAAG,QAAC4C,KAAOmvB,GAAUnvB,IAG3BovB,GAAYhyB,EAAG,QAACzH,MAChB05B,GAAajyB,EAAG,QAAC+Q,OAQvB,SAASmY,GAASgJ,GAWjB,MALI,4BAA4B93B,KAAK83B,KACpCA,EAAS,IAAItvB,GAAIsvB,GAAQx5B,YAInBs5B,GAAUE,EAClB,CAEA,MAAMC,GAA6B,YAAa9G,UAAOD,SAASl0B,UAQhE,SAASk7B,GAAUtoB,GAClB,MAAwB,iBAAVA,GAAoD,iBAAvBA,EAAMgoB,GAClD,CAcA,MAAMO,GACLplB,YAAYnD,GACX,IAEIkgB,EAFAmG,EAAO1xB,UAAU7G,OAAS,QAAsBuD,IAAjBsD,UAAU,GAAmBA,UAAU,GAAK,CAAA,EAK1E2zB,GAAUtoB,GAYdkgB,EAAYd,GAASpf,EAAM/J,MAP1BiqB,EAJGlgB,GAASA,EAAMV,KAIN8f,GAASpf,EAAMV,MAGf8f,GAAS,GAAGpf,KAEzBA,EAAQ,CAAA,GAKT,IAAI7J,EAASkwB,EAAKlwB,QAAU6J,EAAM7J,QAAU,MAG5C,GAFAA,EAASA,EAAOtH,eAEE,MAAbw3B,EAAKtwB,MAAgBuyB,GAAUtoB,IAAyB,OAAfA,EAAMjK,QAA8B,QAAXI,GAA+B,SAAXA,GAC1F,MAAM,IAAI3B,UAAU,iDAGrB,IAAIg0B,EAAyB,MAAbnC,EAAKtwB,KAAeswB,EAAKtwB,KAAOuyB,GAAUtoB,IAAyB,OAAfA,EAAMjK,KAAgBkC,GAAM+H,GAAS,KAEzGhK,GAAKlF,KAAK5D,KAAMs7B,EAAW,CAC1B/E,QAAS4C,EAAK5C,SAAWzjB,EAAMyjB,SAAW,EAC1CxU,KAAMoX,EAAKpX,MAAQjP,EAAMiP,MAAQ,IAGlC,MAAMtZ,EAAU,IAAIE,GAAQwwB,EAAK1wB,SAAWqK,EAAMrK,SAAW,CAAA,GAE7D,GAAiB,MAAb6yB,IAAsB7yB,EAAQ/B,IAAI,gBAAiB,CACtD,MAAMk0B,EAAc7C,GAAmBuD,GACnCV,GACHnyB,EAAQ6uB,OAAO,eAAgBsD,EAEhC,CAED,IAAIW,EAASH,GAAUtoB,GAASA,EAAMyoB,OAAS,KAG/C,GAFI,WAAYpC,IAAMoC,EAASpC,EAAKoC,QAEtB,MAAVA,IA5DN,SAAuBA,GACtB,MAAMriB,EAAQqiB,GAA4B,iBAAXA,GAAuB/4B,OAAOyW,eAAesiB,GAC5E,SAAUriB,GAAoC,gBAA3BA,EAAMjD,YAAY7V,KACtC,CAyDyBo7B,CAAcD,GACpC,MAAM,IAAIj0B,UAAU,mDAGrBtH,KAAK86B,IAAe,CACnB7xB,SACA+I,SAAUmnB,EAAKnnB,UAAYc,EAAMd,UAAY,SAC7CvJ,UACAuqB,YACAuI,UAIDv7B,KAAKy7B,YAAyBt3B,IAAhBg1B,EAAKsC,OAAuBtC,EAAKsC,YAA0Bt3B,IAAjB2O,EAAM2oB,OAAuB3oB,EAAM2oB,OAAS,GACpGz7B,KAAKwuB,cAA6BrqB,IAAlBg1B,EAAK3K,SAAyB2K,EAAK3K,cAA8BrqB,IAAnB2O,EAAM0b,UAAyB1b,EAAM0b,SACnGxuB,KAAK6oB,QAAUsQ,EAAKtQ,SAAW/V,EAAM+V,SAAW,EAChD7oB,KAAK07B,MAAQvC,EAAKuC,OAAS5oB,EAAM4oB,KACjC,CAEGzyB,aACH,OAAOjJ,KAAK86B,IAAa7xB,MACzB,CAEGF,UACH,OAAOkyB,GAAWj7B,KAAK86B,IAAa9H,UACpC,CAEGvqB,cACH,OAAOzI,KAAK86B,IAAaryB,OACzB,CAEGuJ,eACH,OAAOhS,KAAK86B,IAAa9oB,QACzB,CAEGupB,aACH,OAAOv7B,KAAK86B,IAAaS,MACzB,CAODxwB,QACC,OAAO,IAAIswB,GAAQr7B,KACnB,EAyGF,SAAS27B,GAAW17B,GAClBE,MAAMyD,KAAK5D,KAAMC,GAEjBD,KAAKsF,KAAO,UACZtF,KAAKC,QAAUA,EAGfE,MAAMiW,kBAAkBpW,KAAMA,KAAKiW,YACrC,CA9GAnN,GAAK6vB,MAAM0C,GAAQn7B,WAEnBsC,OAAO+kB,eAAe8T,GAAQn7B,UAAW2D,OAAOiyB,YAAa,CAC5D9wB,MAAO,UACP+wB,UAAU,EACVpC,YAAY,EACZC,cAAc,IAGfpxB,OAAOqzB,iBAAiBwF,GAAQn7B,UAAW,CAC1C+I,OAAQ,CAAE0qB,YAAY,GACtB5qB,IAAK,CAAE4qB,YAAY,GACnBlrB,QAAS,CAAEkrB,YAAY,GACvB3hB,SAAU,CAAE2hB,YAAY,GACxB5oB,MAAO,CAAE4oB,YAAY,GACrB4H,OAAQ,CAAE5H,YAAY,KAiGvBgI,GAAWz7B,UAAYsC,OAAOqxB,OAAO1zB,MAAMD,WAC3Cy7B,GAAWz7B,UAAU+V,YAAc0lB,GACnCA,GAAWz7B,UAAUE,KAAO,aAE5B,MAAMw7B,GAAQ5yB,EAAG,QAAC4C,KAAOmvB,GAAUnvB,IAG7BiwB,GAAgBxH,EAAM,QAAC6B,YAgB7B,SAASvrB,GAAM5B,EAAKsd,GAGnB,IAAK1b,GAAMM,QACV,MAAM,IAAI9K,MAAM,0EAMjB,OAHA2I,GAAKmC,QAAUN,GAAMM,QAGd,IAAIN,GAAMM,SAAQ,SAAUC,EAAS8rB,GAE3C,MAAM8E,EAAU,IAAIT,GAAQtyB,EAAKsd,GAC3B5T,EA5HR,SAA+BqpB,GAC9B,MAAM9I,EAAY8I,EAAQhB,IAAa9H,UACjCvqB,EAAU,IAAIE,GAAQmzB,EAAQhB,IAAaryB,SAQjD,GALKA,EAAQ/B,IAAI,WAChB+B,EAAQ/D,IAAI,SAAU,QAIlBsuB,EAAUE,WAAaF,EAAUG,SACrC,MAAM,IAAI7rB,UAAU,oCAGrB,IAAK,YAAY9B,KAAKwtB,EAAUE,UAC/B,MAAM,IAAI5rB,UAAU,wCAGrB,GAAIw0B,EAAQP,QAAUO,EAAQjzB,gBAAgBwrB,UAAOD,WAAa+G,GACjE,MAAM,IAAIh7B,MAAM,mFAIjB,IAAI47B,EAAqB,KAIzB,GAHoB,MAAhBD,EAAQjzB,MAAgB,gBAAgBrD,KAAKs2B,EAAQ7yB,UACxD8yB,EAAqB,KAEF,MAAhBD,EAAQjzB,KAAc,CACzB,MAAMmzB,EAAahE,GAAc8D,GACP,iBAAfE,IACVD,EAAqBr7B,OAAOs7B,GAE7B,CACGD,GACHtzB,EAAQ/D,IAAI,iBAAkBq3B,GAI1BtzB,EAAQ/B,IAAI,eAChB+B,EAAQ/D,IAAI,aAAc,0DAIvBo3B,EAAQtN,WAAa/lB,EAAQ/B,IAAI,oBACpC+B,EAAQ/D,IAAI,kBAAmB,gBAGhC,IAAIg3B,EAAQI,EAAQJ,MAYpB,MAXqB,mBAAVA,IACVA,EAAQA,EAAM1I,IAGVvqB,EAAQ/B,IAAI,eAAkBg1B,GAClCjzB,EAAQ/D,IAAI,aAAc,SAMpBlC,OAAO+M,OAAO,CAAE,EAAEyjB,EAAW,CACnC/pB,OAAQ6yB,EAAQ7yB,OAChBR,QAAS6xB,GAA4B7xB,GACrCizB,SAEF,CA4DkBO,CAAsBH,GAEhCI,GAA6B,WAArBzpB,EAAQygB,SAAwBzG,EAAK,QAAGD,EAAI,SAAEsP,QACtDP,EAASO,EAAQP,OAEvB,IAAIzuB,EAAW,KAEf,MAAMqqB,EAAQ,WACb,IAAIpqB,EAAQ,IAAI4uB,GAAW,+BAC3B3E,EAAOjqB,GACH+uB,EAAQjzB,MAAQizB,EAAQjzB,gBAAgBwrB,EAAAA,QAAOD,UAClD0H,EAAQjzB,KAAKszB,QAAQpvB,GAEjBD,GAAaA,EAASjE,MAC3BiE,EAASjE,KAAKuzB,KAAK,QAASrvB,EAC/B,EAEE,GAAIwuB,GAAUA,EAAOc,QAEpB,YADAlF,IAID,MAAMmF,EAAmB,WACxBnF,IACAoF,GACH,EAGQC,EAAMN,EAAKzpB,GACjB,IAAIgqB,EAMJ,SAASF,IACRC,EAAIrF,QACAoE,GAAQA,EAAOmB,oBAAoB,QAASJ,GAChDjrB,aAAaorB,EACb,CARGlB,GACHA,EAAOoB,iBAAiB,QAASL,GAS9BR,EAAQvF,SACXiG,EAAII,KAAK,UAAU,SAAUC,GAC5BJ,EAAanrB,YAAW,WACvB0lB,EAAO,IAAIvB,GAAW,uBAAuBqG,EAAQ/yB,MAAO,oBAC5DwzB,GACL,GAAOT,EAAQvF,QACf,IAGEiG,EAAI5F,GAAG,SAAS,SAAUC,GACzBG,EAAO,IAAIvB,GAAW,cAAcqG,EAAQ/yB,uBAAuB8tB,EAAI52B,UAAW,SAAU42B,IAC5F0F,GACH,IAEEC,EAAI5F,GAAG,YAAY,SAAU5F,GAC5B3f,aAAaorB,GAEb,MAAMh0B,EA/dT,SAA8BwO,GAC7B,MAAMxO,EAAU,IAAIE,GACpB,IAAK,MAAMvI,KAAQoC,OAAOa,KAAK4T,GAC9B,IAAI4hB,GAAkBrzB,KAAKpF,GAG3B,GAAI2C,MAAMsC,QAAQ4R,EAAI7W,IACrB,IAAK,MAAMymB,KAAO5P,EAAI7W,GACjB04B,GAAuBtzB,KAAKqhB,UAGL1iB,IAAvBsE,EAAQywB,IAAK94B,GAChBqI,EAAQywB,IAAK94B,GAAQ,CAACymB,GAEtBpe,EAAQywB,IAAK94B,GAAMyG,KAAKggB,SAGfiS,GAAuBtzB,KAAKyR,EAAI7W,MAC3CqI,EAAQywB,IAAK94B,GAAQ,CAAC6W,EAAI7W,KAG5B,OAAOqI,CACR,CAycmBq0B,CAAqB9L,EAAIvoB,SAGzC,GAAIkC,GAAMoyB,WAAW/L,EAAIgM,YAAa,CAErC,MAAM7qB,EAAW1J,EAAQ9B,IAAI,YAG7B,IAAIs2B,EAAc,KAClB,IACCA,EAA2B,OAAb9qB,EAAoB,KAAO,IAAIypB,GAAMzpB,EAAU2pB,EAAQ/yB,KAAKrH,UAU1E,CATC,MAAOm1B,GAIR,GAAyB,WAArBiF,EAAQ9pB,SAGX,OAFAglB,EAAO,IAAIvB,GAAW,wDAAwDtjB,IAAY,0BAC1FoqB,GAGD,CAGD,OAAQT,EAAQ9pB,UACf,IAAK,QAGJ,OAFAglB,EAAO,IAAIvB,GAAW,0EAA0EqG,EAAQ/yB,MAAO,qBAC/GwzB,IAED,IAAK,SAEJ,GAAoB,OAAhBU,EAEH,IACCx0B,EAAQ/D,IAAI,WAAYu4B,EAIxB,CAHC,MAAOpG,GAERG,EAAOH,EACP,CAEF,MACD,IAAK,SAEJ,GAAoB,OAAhBoG,EACH,MAID,GAAInB,EAAQjT,SAAWiT,EAAQL,OAG9B,OAFAzE,EAAO,IAAIvB,GAAW,gCAAgCqG,EAAQ/yB,MAAO,sBACrEwzB,IAMD,MAAMW,EAAc,CACnBz0B,QAAS,IAAIE,GAAQmzB,EAAQrzB,SAC7BgzB,OAAQK,EAAQL,OAChB5S,QAASiT,EAAQjT,QAAU,EAC3B6S,MAAOI,EAAQJ,MACflN,SAAUsN,EAAQtN,SAClBvlB,OAAQ6yB,EAAQ7yB,OAChBJ,KAAMizB,EAAQjzB,KACd0yB,OAAQO,EAAQP,OAChBhF,QAASuF,EAAQvF,QACjBxU,KAAM+Z,EAAQ/Z,MAGf,IAzJsB,SAA6Bob,EAAaC,GACrE,MAAMC,EAAO,IAAIzB,GAAMwB,GAAUjK,SAC3BmK,EAAO,IAAI1B,GAAMuB,GAAahK,SAEpC,OAAOkK,IAASC,GAAgD,MAAxCD,EAAKA,EAAKz8B,OAAS08B,EAAK18B,OAAS,IAAcy8B,EAAKE,SAASD,EACtF,CAoJWE,CAAoB1B,EAAQ/yB,IAAKk0B,GACrC,IAAK,MAAM78B,IAAQ,CAAC,gBAAiB,mBAAoB,SAAU,WAClE88B,EAAYz0B,QAAQkB,OAAOvJ,GAK7B,OAAuB,MAAnB4wB,EAAIgM,YAAsBlB,EAAQjzB,MAAmC,OAA3BmvB,GAAc8D,IAC3D9E,EAAO,IAAIvB,GAAW,2DAA4D,8BAClF8G,MAKsB,MAAnBvL,EAAIgM,aAA0C,MAAnBhM,EAAIgM,YAAyC,MAAnBhM,EAAIgM,YAA0C,SAAnBlB,EAAQ7yB,UAC3Fi0B,EAAYj0B,OAAS,MACrBi0B,EAAYr0B,UAAO1E,EACnB+4B,EAAYz0B,QAAQkB,OAAO,mBAI5BuB,EAAQP,GAAM,IAAI0wB,GAAQ4B,EAAaC,UACvCX,KAGF,CAGDvL,EAAI4L,KAAK,OAAO,WACXrB,GAAQA,EAAOmB,oBAAoB,QAASJ,EACpD,IACG,IAAIzzB,EAAOmoB,EAAI8G,KAAK,IAAI+D,IAExB,MAAM4B,EAAmB,CACxB10B,IAAK+yB,EAAQ/yB,IACbM,OAAQ2nB,EAAIgM,WACZ5xB,WAAY4lB,EAAI0M,cAChBj1B,QAASA,EACTsZ,KAAM+Z,EAAQ/Z,KACdwU,QAASuF,EAAQvF,QACjB1N,QAASiT,EAAQjT,SAIZ8U,EAAUl1B,EAAQ9B,IAAI,oBAU5B,IAAKm1B,EAAQtN,UAA+B,SAAnBsN,EAAQ7yB,QAAiC,OAAZ00B,GAAuC,MAAnB3M,EAAIgM,YAAyC,MAAnBhM,EAAIgM,WAGvG,OAFAlwB,EAAW,IAAI6tB,GAAS9xB,EAAM40B,QAC9BvyB,EAAQ4B,GAST,MAAM8wB,EAAc,CACnBC,MAAOC,EAAI,QAACC,aACZC,YAAaF,EAAI,QAACC,cAInB,GAAe,QAAXJ,GAAgC,UAAXA,EAIxB,OAHA90B,EAAOA,EAAKivB,KAAKgG,EAAI,QAACG,aAAaL,IACnC9wB,EAAW,IAAI6tB,GAAS9xB,EAAM40B,QAC9BvyB,EAAQ4B,GAKT,GAAe,WAAX6wB,GAAmC,aAAXA,EAA5B,CAkBA,GAAe,MAAXA,GAA0D,mBAAhCG,EAAAA,QAAKI,uBAIlC,OAHAr1B,EAAOA,EAAKivB,KAAKgG,EAAAA,QAAKI,0BACtBpxB,EAAW,IAAI6tB,GAAS9xB,EAAM40B,QAC9BvyB,EAAQ4B,GAKTA,EAAW,IAAI6tB,GAAS9xB,EAAM40B,GAC9BvyB,EAAQ4B,EAZP,KAfD,CAGakkB,EAAI8G,KAAK,IAAI+D,IACrBe,KAAK,QAAQ,SAAUvF,GAGzBxuB,EADyB,IAAV,GAAXwuB,EAAM,IACHxuB,EAAKivB,KAAKgG,EAAAA,QAAKK,iBAEft1B,EAAKivB,KAAKgG,EAAAA,QAAKM,oBAEvBtxB,EAAW,IAAI6tB,GAAS9xB,EAAM40B,GAC9BvyB,EAAQ4B,EACb,GAEI,CAaJ,IAtgCA,SAAuBwwB,EAAM7F,GAC5B,MAAM5uB,EAAO4uB,EAAS5uB,KAGT,OAATA,EAEHy0B,EAAKvgB,MACK0Z,GAAO5tB,GACjBA,EAAKosB,SAAS6C,KAAKwF,GACT5nB,OAAOghB,SAAS7tB,IAE1By0B,EAAKe,MAAMx1B,GACXy0B,EAAKvgB,OAGLlU,EAAKivB,KAAKwF,EAEZ,CAu/BEgB,CAAc9B,EAAKV,EACrB,GACA,CAOAnxB,GAAMoyB,WAAa,SAAUlwB,GAC5B,OAAgB,MAATA,GAAyB,MAATA,GAAyB,MAATA,GAAyB,MAATA,GAAyB,MAATA,CACxE,EAGAlC,GAAMM,QAAU1I,OAAO0I,QChpDhB,MAAMszB,GAAyB,MCahCC,GAAiB,CAACp+B,EAAc4E,EAAeyN,IACnD,GAAGrS,KAAQ4E,cAAiByN,aAAA,EAAAA,EAASgsB,eAAgB,gBACnDhsB,aAAA,EAAAA,EAASisB,eAAgB,aACjBjsB,aAAA,EAAAA,EAASksB,aAAc,iCAmBtBC,GAC0DnW,GACrE7d,SAAUpD,eACR,MAAMq3B,QAAapW,KAAMjhB,GAGzB,IAAKq3B,EAAKt4B,KACR,OAAOs4B,EAIT,IAAIC,EAAsCD,EAAKt4B,MAA3Cw4B,WAAEA,EAAUC,WAAEA,KAAeC,ECN9B,SAAgBj3B,EAAGjI,GACtB,IAAIU,EAAI,CAAA,EACR,IAAK,IAAI2H,KAAKJ,EAAOxF,OAAOtC,UAAUsD,eAAeI,KAAKoE,EAAGI,IAAMrI,EAAEqB,QAAQgH,GAAK,IAC9E3H,EAAE2H,GAAKJ,EAAEI,IACb,GAAS,MAALJ,GAAqD,mBAAjCxF,OAAO08B,sBACtB,KAAIl+B,EAAI,EAAb,IAAgBoH,EAAI5F,OAAO08B,sBAAsBl3B,GAAIhH,EAAIoH,EAAExH,OAAQI,IAC3DjB,EAAEqB,QAAQgH,EAAEpH,IAAM,GAAKwB,OAAOtC,UAAUi/B,qBAAqBv7B,KAAKoE,EAAGI,EAAEpH,MACvEP,EAAE2H,EAAEpH,IAAMgH,EAAEI,EAAEpH,IAF4B,CAItD,OAAOP,CACX,CDJQ2+B,CAAAN,EAAA,CAAA,aAAA,eACJ,MAAMO,EAAU,CAACb,GD7CiB,KC6CsBO,EAAYE,IAcpE,OAZKD,EASHK,EAAQx4B,KAAK23B,GAAeD,GAAwBS,EAAYC,KAR/C,QAAb/oB,EAAA2oB,EAAK/xB,gBAAQ,IAAAoJ,OAAA,EAAAA,EAAEzN,QAAQ9B,IAAI,iBAC7Bq4B,EA3Be,EAACM,EAAmCl/B,KACzD,MAAM8G,EAAQo4B,eAAAA,EAAQp4B,MAAMvD,OAAO,cAAcvD,cACjD,OAAO8G,EAAQA,EAAM,GAAK,IAAI,EAyBXq4B,CACE,QAAbtkB,EAAA4jB,EAAK/xB,gBAAQ,IAAAmO,OAAA,EAAAA,EAAExS,QAAQ9B,IAAI,cAC3B43B,IAEFc,EAAQx4B,KAAoB,QAAf24B,EAAAX,EAAK/xB,gBAAU,IAAA0yB,OAAA,EAAAA,EAAA/2B,QAAQ9B,IAAI,gBAMhCnE,OAAA+M,OAAA/M,OAAA+M,OAAA,CAAA,EAAAsvB,GAAM,CAAAt4B,KAAW/D,OAAA+M,OAAA/M,OAAA+M,OAAA,GAAAsvB,EAAKt4B,MAAM,CAAAy4B,aAAYK,aAAY,EAUvDI,GAAW,CACtBxoB,EACA7R,EACAs6B,KAGA,IAAKzoB,EAAK,OAEV,MAAM0oB,EAA+B,iBAATv6B,EAAoBA,EAAKxD,MAAM,KAAOwD,EAC5Dw6B,EAAUD,EAAa7N,SAAY,GAEzC,GAA4B,IAAxB6N,EAAa/+B,QAA4B,MAAZg/B,EAAiB,CAChD,MAAMC,EAAQ96B,IACZ,IAAIA,GAA2B,mBAAbkS,EAAIlS,GAKpB,MAAM5E,MAAM,6BAA6B4E,EAAIrD,eAH7CuV,EAAIlS,GAAO26B,EAAWzoB,EAAIlS,GAI3B,EAEa,MAAZ66B,EACFp9B,OAAOa,KAAK4T,GAAK9J,QAAQ0yB,GAEzBA,EAAKD,EAER,MACCH,GAASxoB,EAAI2oB,GAAUD,EAAcD,EACtC,WAuBaI,GACdC,EACAzpB,EACApD,WAEA,MAAMlO,EAAQkO,EAC0C,QAApD+H,EAA6C,QAA7C/E,EAAA6pB,EAASr0B,MAAgC,eAAI,IAAAwK,OAAA,EAAAA,EAAAhD,UAAO,IAAA+H,OAAA,EAAAA,EAAG3E,GACvDypB,EAASr0B,MAAM4K,GACnB,OAAOvT,MAAMsC,QAAQL,GAASA,EAAQ,EACxC,CEpIe,IAAAg7B,GACP,CACJnM,OAAQ,uBACRjkB,OAAQ,uBACRjG,OAAQ,uBACRs2B,KAAM,qBACNp0B,OAAQ,wBANGm0B,GAQL,CACNnM,OAAQ,yBACRjkB,OAAQ,yBACRjG,OAAQ,0BAXGq2B,GAaR,CACHpwB,OAAQ,uBCFZ,MAAMswB,GAAW,CAACC,EAAcC,KAA4B,CAC1DvM,OAAQ,CACNwM,EACAp4B,EACAC,EACAo4B,EACAC,EACAC,IAEAC,GACEN,EAAI/qB,WAAWxL,KACbo2B,GAAcnM,OACd,CAAEwM,aAAYp4B,QAAOC,QAAOo4B,cAAaC,YAAWC,eACpD,CAAE90B,MAAO00B,KAEV75B,GAASA,EAAKmJ,OAEnBE,OAAQ,CACNywB,EACAp4B,EACAC,EACAo4B,EACAC,EACAC,IAEAC,GACEN,EAAI/qB,WAAWxL,KACbo2B,GAAcpwB,OACd,CAAEywB,aAAYp4B,QAAOC,QAAOo4B,cAAaC,YAAWC,eACpD,CAAE90B,MAAO00B,KAEV75B,GAASA,EAAKmJ,OAEnB/F,OAAS02B,GACPI,GACEN,EAAI/qB,WAAWxL,KAAKo2B,GAAcr2B,OAAQ,CAAE02B,cAAc,CAAE30B,MAAO00B,KAEvEH,KAAOI,GACLI,GACEN,EAAI/qB,WAAWzO,IAAIq5B,GAAcC,KAAM,CACrCz0B,YAAa,CAAE60B,cACf30B,MAAO00B,KAER75B,GAASA,EAAKmJ,OAEnBgxB,UAAW,CACTC,EACAJ,EACAK,IAEAH,GACEN,EAAI/qB,WAAWxL,KACbo2B,GAAcn0B,OACd,CAAE80B,YAAWJ,YAAWK,SACxB,CAAEl1B,MAAO00B,KAEV75B,GAASA,EAAKs6B,UChEfC,GAAa,CAACX,EAAcC,KAA4B,CAC5DvM,OAAQ,CACNzzB,EACA2gC,IAEAN,GACEN,EAAI/qB,WAAWxL,KACbo2B,GAAgBnM,OAChB,CAAEzzB,OAAM2gC,2BACR,CAAEr1B,MAAO00B,KAGfY,aAAc,CACZC,EACA7gC,EACA2gC,IAEAN,GACEN,EAAI/qB,WAAWxL,KACbo2B,GAAgBnM,OAChB,CAAEoN,WAAU7gC,OAAM2gC,2BAClB,CAAEr1B,MAAO00B,KAGfxwB,OAAQ,CACNqxB,EACA7gC,EACA2gC,IAEAN,GACEN,EAAI/qB,WAAWxL,KACbo2B,GAAgBpwB,OAChB,CAAEqxB,WAAU7gC,OAAM2gC,2BAClB,CAAEr1B,MAAO00B,KAGfz2B,OAASs3B,GACPR,GACEN,EAAI/qB,WAAWxL,KAAKo2B,GAAgBr2B,OAAQ,CAAEs3B,YAAY,CAAEv1B,MAAO00B,OCtCnEc,GAAU,CAACf,EAAcC,KAA4B,CACzDxwB,OAAQ,CACN2V,EACA4b,IAEAV,GACEN,EAAI/qB,WAAWxL,KAAKo2B,GAAapwB,OAAQ,CAAE2V,MAAK4b,gBAAgB,CAAEz1B,MAAO00B,OCS1EgB,WAAWz2B,QAEdy2B,WAAWz2B,MAAQA,GAEnBy2B,WAAWz4B,QAAUA,GAErBy4B,WAAW/F,QAAUA,GAErB+F,WAAWzG,SAAWA,IAQxB,MAuPM0G,GAvPW75B,IAEfA,EAAKiD,MAAQjD,EAAKiD,OAAS,CAAA,EAE3B,MAAM62B,EAAoB95B,EAAKiD,MAAMa,cAErC9D,EAAKiD,MAAMa,cAAiBi2B,UAC1B,MAAMC,EAAOD,EAOb,OANAC,EAAK/4B,QACAjG,OAAA+M,OAAA/M,OAAA+M,OAAA,GAAAiyB,EAAK/4B,SACR,CAAA,qBAAsB,SACtB,8BAAiD,QAAnByN,EAAO,OAAPwC,cAAO,IAAPA,aAAO,EAAPA,QAASC,gBAAU,IAAAzC,OAAA,EAAAA,EAAA0C,OAAQ,GACzD,wBAAyB,mBAEpB0oB,aAAiB,EAAjBA,EAAoBE,KAASA,CAAI,EAG1C,MAAMC,EAAUC,GAAUl6B,GN0DA,IAC1ByP,EAEAyoB,EAFAzoB,EMxDEwqB,EN0DF/B,EM7CEd,GAZA,CACE,eACA,mBACA,yBACA,yBACA,iBACA,gBACA,cACA,yBACA,yBACA,WNgDKzxB,SAAS/H,GAAiBq6B,GAASxoB,EAAK7R,EAAMs6B,KM3CvD,MAAMp1B,UAAEA,EAASE,OAAEA,GAAWhD,EAExBnE,EAA6C,CAAA,EAkB7Cs+B,ECtFe,EAACxB,EAAcC,KAA4B,CAChE1wB,KAAMwwB,GAASC,EAAKC,GACpBltB,OAAQ4tB,GAAWX,EAAKC,GACxB7a,IAAK2b,GAAQf,EAAKC,KDmFCwB,CAAeH,EAASj6B,EAAK44B,eAE1CD,iCACDsB,GAAO,CAOVE,aAGA/2B,aAAavJ,GACX,KAAKA,aAAA,EAAAA,EAAQwgC,KAAK,MAAM1hC,MAAM,gCAE9B,GAAIkD,EAAKhC,EAAOwgC,KAAM,OAAOx+B,EAAKhC,EAAOwgC,KAKzC,GAFAr/B,OAAO+M,OAAOlM,OAlCAuH,WAChB,MAAMk3B,QAA0BL,EAAQrsB,WACrCzO,IAAI,WAAW2D,KACf8tB,MAAMyG,GAASA,EAAK1zB,SACvB,OAAKpI,MAAMsC,QAAQy8B,UACQ72B,QAAQ82B,IACjCD,EAAWx7B,KAAIsE,MAAO7F,GAAQ,CAACA,EAAI88B,UAAW/iB,GAAU/Z,QAGtCgF,QAClB,CAAC8X,GAAMggB,EAAKvkB,KAAUukB,EAAWr/B,OAAA+M,OAAA/M,OAAA+M,OAAA,CAAA,EAAAsS,IAAK,CAACggB,EAAIngC,YAAa4b,IAAQuE,GAChE,CAAE,GAPmC,EAQtC,EAsB2BmgB,KAErB3+B,EAAKhC,EAAOwgC,KAAM,MAAM1hC,MAAM,gCAEnC,OAAOkD,EAAKhC,EAAOwgC,IACpB,EAODj3B,kBAAkB2a,SAEhB,MACM7Z,SADY4Z,GAAUC,EAAK4a,EAAI8B,OAAQ,CAAEpd,eAAgB,KAC7CvD,QAElB,GAAI5V,IACFA,EAAM2Y,IAAe,QAATnO,EAAAxK,EAAM2Y,WAAG,IAAAnO,OAAA,EAAAA,EAAEtU,MAAM,KAAKgF,MAC9B8E,EAAM2Y,MAAQ/Z,GAEhB,MAAM,IAAI43B,GACR,+BACA,MACA,gBAKN,MAAO,CAAE3c,MAAK7Z,QACf,EASDd,sBACEu3B,EACAC,WAEA,IAAKD,IAAiBC,EACpB,MAAMjiC,MAAM,kDAEd,GAAIgiC,EACF,IAEE,aADoBhC,EAAIkC,YAAYF,EAOrC,CALC,MAAOp1B,GACP,IAAKq1B,EAEH,MADA53B,SAAAA,EAAQuC,MAAM,iEAAkEA,GAC1E5M,MAAM,4BAEf,CAEH,GAAIiiC,EACF,UACQjC,EAAIkC,YAAYD,GACtB,MAAME,QAAgBnC,EAAIrrB,QAAQstB,GAClC,GAAIE,EAAQx3B,GAAI,CAEd,aADoBq1B,EAAIkC,YAA0B,QAAdnsB,EAAAosB,EAAQ/7B,YAAM,IAAA2P,OAAA,EAAAA,EAAA6oB,WAEnD,CACD,MAAM5+B,MAAmB,QAAb8a,EAAAqnB,EAAQv1B,aAAK,IAAAkO,OAAA,EAAAA,EAAEhb,QAI5B,CAHC,MAAOsiC,GAEP,MADA/3B,SAAAA,EAAQuC,MAAM,mCAAoCw1B,GAC5CpiC,MAAM,4BACb,CAGH,MAAMA,MAAM,2BACb,EAODyK,wBAAwByJ,GACtB,IAAKA,EAAW,MAAMlU,MAAM,gCAE5B,IAAI0+B,EACJ,IACEA,QAAasB,EAAI9rB,UAAUpG,SAASoG,EAIrC,CAHC,MAAOtH,GAEP,MADAvC,SAAAA,EAAQuC,MAAM,gCAAiCA,GACzC5M,MAAM,gCACb,CAED,MAAM4+B,WAAEA,GAAeF,EAAKt4B,KAC5B,IAAKw4B,EAEH,MADAv0B,SAAAA,EAAQuC,MAAM,gDACR5M,MAAM,iCAGd,IAEE,aADoBggC,EAAIkC,YAAYtD,EAKrC,CAHC,MAAOhyB,GAEP,MADAvC,SAAAA,EAAQuC,MAAM,sCAAuCA,GAC/C5M,MAAM,gCACb,CACF,EAQDqiC,oBAAmB,CAACzC,EAA8B0C,IACzCtC,EAAIuC,0BAA0B3C,EAAU,KAAM0C,GASvDC,0BACE3C,EACA7sB,EACAuvB,GAEA,MAAME,EAAU7C,GAA2BC,EPtOb,cOsO6C7sB,GAC3E,OAAOuvB,EAAYG,OAAOC,GAASF,EAAQzqB,SAAS2qB,IACrD,EAQDC,cAAa,CAAC/C,EAA8BgD,IACnC5C,EAAI6C,oBAAoBjD,EAAU,KAAMgD,GASjDC,oBAAoBjD,EAA8B7sB,EAAgB6vB,GAChE,MAAME,EAAanD,GAA2BC,EPzPtB,QOyPgD7sB,GACxE,OAAO6vB,EAAMH,OAAOM,GAASD,EAAW/qB,SAASgrB,IAClD,IAGH,OAAO/C,CAAG,SAyBZkB,GAAkBhsB,gBAAkBqsB,GAAUrsB,gBAC9CgsB,GAAkB8B,uBAAyB5E,GAC3C8C,GAAkB+B,uBP/RoB"}