@lifesg/react-design-system 2.5.1 → 2.6.0-canary.1

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 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../node_modules/lodash/isArray.js","../../node_modules/lodash/_root.js","../../node_modules/lodash/_freeGlobal.js","../../node_modules/lodash/_Symbol.js","../../node_modules/lodash/_getRawTag.js","../../node_modules/lodash/_objectToString.js","../../node_modules/lodash/_baseGetTag.js","../../node_modules/lodash/isObjectLike.js","../../node_modules/lodash/isSymbol.js","../../node_modules/lodash/_isKey.js","../../node_modules/lodash/isObject.js","../../node_modules/lodash/isFunction.js","../../node_modules/lodash/_isMasked.js","../../node_modules/lodash/_coreJsData.js","../../node_modules/lodash/_toSource.js","../../node_modules/lodash/_baseIsNative.js","../../node_modules/lodash/_getValue.js","../../node_modules/lodash/_getNative.js","../../node_modules/lodash/_nativeCreate.js","../../node_modules/lodash/_hashClear.js","../../node_modules/lodash/_hashDelete.js","../../node_modules/lodash/_hashGet.js","../../node_modules/lodash/_hashHas.js","../../node_modules/lodash/_hashSet.js","../../node_modules/lodash/_Hash.js","../../node_modules/lodash/_listCacheClear.js","../../node_modules/lodash/eq.js","../../node_modules/lodash/_assocIndexOf.js","../../node_modules/lodash/_listCacheDelete.js","../../node_modules/lodash/_listCacheGet.js","../../node_modules/lodash/_listCacheHas.js","../../node_modules/lodash/_listCacheSet.js","../../node_modules/lodash/_ListCache.js","../../node_modules/lodash/_Map.js","../../node_modules/lodash/_mapCacheClear.js","../../node_modules/lodash/_isKeyable.js","../../node_modules/lodash/_getMapData.js","../../node_modules/lodash/_mapCacheDelete.js","../../node_modules/lodash/_mapCacheGet.js","../../node_modules/lodash/_mapCacheHas.js","../../node_modules/lodash/_mapCacheSet.js","../../node_modules/lodash/_MapCache.js","../../node_modules/lodash/memoize.js","../../node_modules/lodash/_memoizeCapped.js","../../node_modules/lodash/_stringToPath.js","../../node_modules/lodash/_arrayMap.js","../../node_modules/lodash/_baseToString.js","../../node_modules/lodash/toString.js","../../node_modules/lodash/_castPath.js","../../node_modules/lodash/_toKey.js","../../node_modules/lodash/_baseGet.js","../../node_modules/lodash/get.js","../../src/theme/helper.ts","../../src/theme/types.ts","../../src/theme/color-theme-helper.ts","../../src/spec/color-spec/base-color-set.ts","../../src/spec/color-spec/bookingsg-color-set.ts","../../src/spec/color-spec/rbs-color-set.ts","../../src/spec/color-spec/mylegacy-color-set.ts","../../src/spec/color-spec/ccube-color-set.ts","../../src/color/color.ts","../../src/spec/media-spec.ts","../../src/media/media.ts","../../src/layout/col-div.style.tsx","../../src/layout/col-div.tsx","../../src/layout/container.tsx","../../src/layout/section.tsx","../../src/layout/content.tsx","../../src/layout/index.ts","../../src/shared/clickable-icon/clickable-icon.style.tsx","../../src/shared/clickable-icon/clickable-icon.tsx","../../src/spec/text-spec/font-spec.ts","../../src/theme/text-theme-helper.ts","../../src/spec/text-spec/base-text-style-set.ts","../../src/text/text-style.ts","../../src/text/helper.ts","../../src/text/text.tsx","../../src/text/types.ts","../../src/transition/index.ts","../../src/notification-banner/notification-banner.styles.tsx","../../src/notification-banner/notification-banner.tsx","../../node_modules/dompurify/dist/purify.es.js","../../src/notification-banner/notification-banner-hoc.tsx"],"sourcesContent":["/**\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\nmodule.exports = isArray;\n","var freeGlobal = require('./_freeGlobal');\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\nmodule.exports = root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\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\nmodule.exports = isKey;\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 != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\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 if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var coreJsData = require('./_coreJsData');\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/**\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\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\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\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\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 detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\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/** 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/**\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) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\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\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\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\nmodule.exports = getNative;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\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 this.size = 0;\n}\n\nmodule.exports = hashClear;\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 var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * 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\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * 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\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\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 this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\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 == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\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\nmodule.exports = Hash;\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 this.size = 0;\n}\n\nmodule.exports = listCacheClear;\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\nmodule.exports = eq;\n","var eq = require('./eq');\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\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\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 --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\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\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\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\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\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 ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\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 == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\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\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\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.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\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\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\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\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\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 var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\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\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\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\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\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 var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\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 == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\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\nmodule.exports = MapCache;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\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 `clear`, `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 != null && 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) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\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 = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\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 * 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 (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\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\nmodule.exports = baseToString;\n","var baseToString = require('./_baseToString');\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 convert.\n * @returns {string} Returns the converted 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\nmodule.exports = toString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\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 * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\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\nmodule.exports = toKey;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\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 = castPath(path, object);\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\nmodule.exports = baseGet;\n","var baseGet = require('./_baseGet');\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 get from \"lodash/get\";\nimport { ThemeCollectionSpec } from \"./types\";\n\n/**\n *\n * @param collection the collection of theme-specific style attributes\n * @param attributePath (optional) the path to the value within the selected collection\n * @param attributePath (optional) the path to the value within the selected collection\n * @returns style value\n */\nexport const getValue = <C, T>(\n collection: C,\n attributePath?: string,\n customCollection?: T\n): string | number => {\n return attributePath\n ? get(customCollection, attributePath) || get(collection, attributePath)\n : customCollection || collection;\n};\n\n/**\n * Gets the theme set based on the theme context value\n * @param collectionSpec the collections of theme-specific style attributes\n * @param contextValue (optional) the theme context value\n * @returns the selected collection\n */\nexport const getCollection = <T, V, C>(\n collectionSpec: ThemeCollectionSpec<T, V>,\n contextValue?: string\n): C => {\n const themeContextValue = contextValue || collectionSpec.defaultValue;\n return get(collectionSpec.collections, themeContextValue as string);\n};\n","import { ColorSet, ColorSetOptions } from \"../color/types\";\nimport { DesignTokenSet, DesignTokenSetOptions } from \"../design-token/types\";\nimport { TextStyleSetOptionsType, TextStyleSetType } from \"../text/types\";\n\nexport type ThemeLayout = \"normal\";\n\n// =============================================================================\n// COLOR THEMES\n// =============================================================================\nexport type ColorScheme = \"base\" | \"bookingsg\" | \"rbs\" | \"mylegacy\" | \"ccube\";\nexport type ColorCollectionsMap = {\n [key in ColorScheme]: ColorSet;\n};\n\n// =============================================================================\n// FONT STYLE THEMES\n// =============================================================================\nexport type TextStyleScheme = \"base\";\nexport type FontStyleCollectionsMap = {\n [key in TextStyleScheme]: TextStyleSetType;\n};\n\n// =============================================================================\n// DESIGN TOKEN THEMES\n// =============================================================================\nexport type DesignTokenScheme = \"base\" | \"rbs\";\nexport type DesignTokenCollectionsMap = {\n [key in DesignTokenScheme]: DesignTokenSet;\n};\n\n// =============================================================================\n// RESOURCE THEMES\n// =============================================================================\nexport type ResourceScheme = \"base\" | \"bookingsg\" | \"rbs\" | \"ccube\";\n\n// =============================================================================\n// GENERAL\n// =============================================================================\nexport enum ThemeContextKeys {\n colorScheme = \"colorScheme\",\n layout = \"layout\",\n textStyleScheme = \"textStyleScheme\",\n designTokenScheme = \"designTokenScheme\",\n resourceScheme = \"resourceScheme\",\n}\n\nexport interface ThemeSpecOptions {\n /** for color customisation, can specify subset of set */\n color?: ColorSetOptions | undefined;\n textStyle?: TextStyleSetOptionsType | undefined;\n designToken?: DesignTokenSetOptions | undefined;\n}\n\nexport interface ThemeSpec {\n /** Sets the color scheme of the theme */\n [ThemeContextKeys.colorScheme]: ColorScheme;\n /** Sets the text style scheme of the theme */\n [ThemeContextKeys.textStyleScheme]: TextStyleScheme;\n /** Sets the design token scheme of the theme */\n [ThemeContextKeys.designTokenScheme]: DesignTokenScheme;\n /** Sets the layout scheme of the theme */\n [ThemeContextKeys.layout]?: ThemeLayout | undefined;\n /** Sets the resource scheme (e.g. images, text) of the theme */\n [ThemeContextKeys.resourceScheme]: ResourceScheme;\n /** For specific customisations to any schemes */\n options?: ThemeSpecOptions | undefined;\n}\n\nexport interface ThemeCollectionSpec<T, V> {\n collections: T;\n defaultValue: V;\n}\n","import { ColorSet } from \"../color/types\";\nimport { BaseColorSet } from \"../spec/color-spec/base-color-set\";\nimport { BookingSGColorSet } from \"../spec/color-spec/bookingsg-color-set\";\nimport { CCubeColorSet } from \"../spec/color-spec/ccube-color-set\";\nimport { MyLegacyColorSet } from \"../spec/color-spec/mylegacy-color-set\";\nimport { RBSColorSet } from \"../spec/color-spec/rbs-color-set\";\nimport { getCollection, getValue } from \"./helper\";\nimport {\n ColorCollectionsMap,\n ColorScheme,\n ThemeCollectionSpec,\n ThemeContextKeys,\n ThemeSpec,\n} from \"./types\";\n\n// =============================================================================\n// THEME SPECIFICATION\n// =============================================================================\nconst ColorSpec: ThemeCollectionSpec<ColorCollectionsMap, ColorScheme> = {\n collections: {\n base: BaseColorSet,\n bookingsg: BookingSGColorSet,\n rbs: RBSColorSet,\n mylegacy: MyLegacyColorSet,\n ccube: CCubeColorSet,\n },\n defaultValue: \"base\",\n};\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\nexport const getThemeColors = (attributePath: string) => {\n return (props: any): string => {\n const theme = props.theme as ThemeSpec;\n const colorSet: ColorSet = getCollection(\n ColorSpec,\n theme[ThemeContextKeys.colorScheme]\n );\n\n return theme.options && theme.options.color\n ? (getValue(colorSet, attributePath, theme.options.color) as string)\n : (getValue(colorSet, attributePath) as string);\n };\n};\n","import { ColorSet, ValidationTypes } from \"../../color/types\";\n\nexport const BaseColorSet: ColorSet = {\n Brand: {\n 1: \"#EF413D\",\n 2: \"#F26664\",\n 3: \"#F58E8B\",\n 4: \"#F9B5B2\",\n 5: \"#FDDDD7\",\n 6: \"#FFEEEA\",\n },\n Primary: \"#1C76D5\",\n PrimaryDark: \"#1869BF\",\n Secondary: \"#0056b3\",\n Accent: {\n Dark: {\n 1: \"#4B539F\",\n 2: \"#6D74B1\",\n 3: \"#959BC5\",\n },\n Light: {\n 1: \"#57A9FF\",\n 2: \"#81BFFF\",\n 3: \"#BED7FF\",\n 4: \"#E2ECFD\",\n 5: \"#F6F8FF\",\n 6: \"#FBFCFE\",\n },\n },\n Neutral: {\n 1: \"#282828\", // Text Black\n 2: \"#424242\",\n 3: \"#686868\", // Text Grey\n 4: \"#A4A4A4\",\n 5: \"#E0E4E5\",\n 6: \"#ECEFEF\",\n 7: \"#F8F8F8\",\n 8: \"#FFFFFF\",\n },\n Validation: {\n Green: {\n Text: \"#097123\", // Validation Text\n Icon: \"#4FC029\",\n Border: \"#95D97F\",\n Background: \"#F9FDF8\", // Validation Background\n },\n Orange: {\n Text: \"#B34E00\", // Validation Text\n Icon: \"#FEAB10\",\n Border: \"#F9CB77\",\n Background: \"#FFFCF7\", // Validation Background\n Badge: \"#F57F17\", // Orange Badge Notification\n },\n Red: {\n Text: \"#C60000\", // Validation Text\n Icon: \"#C60000\",\n Border: \"#DD6666\",\n Background: \"#FDF7F7\", // Validation Background\n },\n Blue: {\n Text: \"#064D70\", // Validation Text\n Icon: \" #066391\",\n Border: \"#84B7DB\",\n Background: \"#E8F4FA\", // Validation Background\n },\n } as ValidationTypes,\n Shadow: {\n Accent: \"rgba(87, 169, 255, 0.5)\",\n Red: \"rgba(221, 102, 102, 0.8)\",\n Elevation: \"rgba(75, 83, 159, 0.24)\",\n },\n};\n","import { ColorSet, ValidationTypes } from \"../../color/types\";\n\nexport const BookingSGColorSet: ColorSet = {\n Brand: {\n 1: \"#EF413D\",\n 2: \"#F26664\",\n 3: \"#F58E8B\",\n 4: \"#F9B5B2\",\n 5: \"#FDDDD7\",\n 6: \"#FFEEEA\",\n },\n Primary: \"#6F4AB8\",\n PrimaryDark: \"#6443A6\",\n Secondary: \"#6443A6\",\n Accent: {\n Dark: {\n 1: \"#355985\",\n 2: \"#68819D\",\n 3: \"#9AABBE\",\n },\n Light: {\n 1: \"#977ECC\",\n 2: \"#B5A5D7\",\n 3: \"#CEC3E4 \",\n 4: \"#E2DBEF\",\n 5: \"#F2EFF8\",\n 6: \"#F7F6FB\",\n },\n },\n Neutral: {\n 1: \"#282828\", // Text Black\n 2: \"#424242\",\n 3: \"#686868\", // Text Grey\n 4: \"#A4A4A4\",\n 5: \"#E0E4E5\",\n 6: \"#ECEFEF\",\n 7: \"#F8F8F8\",\n 8: \"#FFFFFF\",\n },\n Validation: {\n Green: {\n Text: \"#097123\", // Validation Text\n Icon: \"#4FC029\",\n Border: \"#95D97F\",\n Background: \"#F9FDF8\", // Validation Background\n },\n Orange: {\n Text: \"#B34E00\", // Validation Text\n Icon: \"#FEAB10\",\n Border: \"#F9CB77\",\n Background: \"#FFFCF7\", // Validation Background\n Badge: \"#F57F17\", // Orange Badge Notification\n },\n Red: {\n Text: \"#C60000\", // Validation Text\n Icon: \"#C60000\",\n Border: \"#DD6666\",\n Background: \"#FDF7F7\", // Validation Background\n },\n Blue: {\n Text: \"#064D70\", // Validation Text\n Icon: \" #066391\",\n Border: \"#84B7DB\",\n Background: \"#E8F4FA\", // Validation Background\n },\n } as ValidationTypes,\n Shadow: {\n Accent: \"rgba(161, 87, 255, 0.5)\",\n Red: \"rgba(221, 102, 102, 0.8)\",\n Elevation: \"rgba(75, 83, 159, 0.24)\",\n },\n};\n","import { ColorSet, ValidationTypes } from \"../../color/types\";\n\nexport const RBSColorSet: ColorSet = {\n Brand: {\n 1: \"#3E4DFF\",\n 2: \"#AEACFF\",\n 3: \"#AD44FF\",\n 4: \"#F9B5B2\",\n 5: \"#FDDDD7\",\n 6: \"#FFEEEA\",\n },\n Primary: \"#4855D4\",\n PrimaryDark: \"#3E49B2\",\n Secondary: \"#364891\",\n Accent: {\n Dark: {\n 1: \"#5E516E\",\n 2: \"#7A6F87\",\n 3: \"#C5C0CC\",\n },\n Light: {\n 1: \"#8397FC\",\n 2: \"#ABB8FC\",\n 3: \"#CED6FD \",\n 4: \"#E1E4FA\",\n 5: \"#F0F2FF\",\n 6: \"#FAFBFF\",\n },\n },\n Neutral: {\n 1: \"#282828\",\n 2: \"#424242\",\n 3: \"#686868\",\n 4: \"#A4A4A4\",\n 5: \"#E0E4E5\",\n 6: \"#ECEFEF\",\n 7: \"#F8F8F8\",\n 8: \"#FFFFFF\",\n },\n Validation: {\n Green: {\n Text: \"#097123\",\n Icon: \"#4FC029\",\n Border: \"#95D97F\",\n Background: \"#F9FDF8\",\n },\n Orange: {\n Text: \"#B34E00\",\n Icon: \"#FEAB10\",\n Border: \"#F9CB77\",\n Background: \"#FFFCF7\",\n Badge: \"#F57F17\",\n },\n Red: {\n Text: \"#C60000\",\n Icon: \"#C60000\",\n Border: \"#DD6666\",\n Background: \"#FDF7F7\",\n },\n Blue: {\n Text: \"#064D70\",\n Icon: \" #066391\",\n Border: \"#84B7DB\",\n Background: \"#E8F4FA\",\n },\n } as ValidationTypes,\n Shadow: {\n Accent: \"rgba(90, 87, 255, 0.5)\",\n Red: \"rgba(221, 102, 102, 0.8)\",\n Elevation: \"rgba(75, 83, 159, 0.24)\",\n },\n};\n","import { ColorSet, ValidationTypes } from \"../../color/types\";\n\nexport const MyLegacyColorSet: ColorSet = {\n Brand: {\n 1: \"#24588D\",\n 2: \"#FFC166\",\n 3: \"#F58E8B\",\n 4: \"#F9B5B2\",\n 5: \"#FDDDD7\",\n 6: \"#FFEEEA\",\n },\n Primary: \"#0C7BB3\",\n PrimaryDark: \"#066391\",\n Secondary: \"#066391\",\n Accent: {\n Dark: {\n 1: \"#4B539F\",\n 2: \"#6D74B1\",\n 3: \"#959BC5\",\n },\n Light: {\n 1: \"#229AD6\",\n 2: \"#8DD4F7\",\n 3: \"#A4DDF9\",\n 4: \"#BBE5FA\",\n 5: \"#E8F4FA\",\n 6: \"#F7FBFC\",\n },\n },\n Neutral: {\n 1: \"#282828\",\n 2: \"#424242\",\n 3: \"#686868\",\n 4: \"#A4A4A4\",\n 5: \"#E0E4E5\",\n 6: \"#ECEFEF\",\n 7: \"#F8F8F8\",\n 8: \"#FFFFFF\",\n },\n Validation: {\n Green: {\n Text: \"#1A5230\", // Validation Text\n Icon: \"#2A854E\",\n Border: \"#7DDBA3\",\n Background: \"#E1FAEB\", // Validation Background\n },\n Orange: {\n Text: \"#693D07\", // Validation Text\n Icon: \"#CF7911\",\n Border: \"#F9CB77\",\n Background: \"#FCF2E6\", // Validation Background\n Badge: \"#F57F17\", // Orange Badge Notification\n },\n Red: {\n Text: \"#CB2213\", // Validation Text\n Icon: \"#CB2213\",\n Border: \"#DC6363\",\n Background: \"#FAF0F0\", // Validation Background\n },\n Blue: {\n Text: \"#064D70\", // Validation Text\n Icon: \" #066391\",\n Border: \"#84B7DB\",\n Background: \"#E8F4FA\", // Validation Background\n },\n } as ValidationTypes,\n Shadow: {\n Accent: \"rgba(34, 154, 214, 0.6)\",\n Red: \"rgba(203, 34, 19, 0.5)\",\n Elevation: \"rgba(75, 83, 159, 0.24)\",\n },\n};\n","import { ColorSet, ValidationTypes } from \"../../color\";\n\nexport const CCubeColorSet: ColorSet = {\n Brand: {\n 1: \"#8D5197\",\n 2: \"#FE3399\",\n 3: \"#F58E8B\",\n 4: \"#F9B5B2\",\n 5: \"#FDDDD7\",\n 6: \"#FFEEEA\",\n },\n Primary: \"#8D5197\",\n PrimaryDark: \"#6B3E73\",\n Secondary: \"#C02673\",\n Accent: {\n Dark: {\n 1: \"#921D58\",\n 2: \"#FF409F\",\n 3: \"#FF88C4\",\n },\n Light: {\n 1: \"#B07DB7\",\n 2: \"#C7A2CC\",\n 3: \"#D9C2DD\",\n 4: \"#E9DBEB\",\n 5: \"#F3ECF4\",\n 6: \"#FAF7FA\",\n },\n },\n Neutral: {\n 1: \"#282828\", // Text Black\n 2: \"#424242\",\n 3: \"#686868\", // Text Grey\n 4: \"#A4A4A4\",\n 5: \"#E0E4E5\",\n 6: \"#ECEFEF\",\n 7: \"#F8F8F8\",\n 8: \"#FFFFFF\",\n },\n Validation: {\n Green: {\n Text: \"#097123\", // Validation Text\n Icon: \"#4FC029\",\n Border: \"#95D97F\",\n Background: \"#F9FDF8\", // Validation Background\n },\n Orange: {\n Text: \"#B34E00\", // Validation Text\n Icon: \"#FEAB10\",\n Border: \"#F9CB77\",\n Background: \"#FFFCF7\", // Validation Background\n Badge: \"#F57F17\", // Orange Badge Notification\n },\n Red: {\n Text: \"#C60000\", // Validation Text\n Icon: \"#C60000\",\n Border: \"#DD6666\",\n Background: \"#FDF7F7\", // Validation Background\n },\n Blue: {\n Text: \"#064D70\", // Validation Text\n Icon: \" #066391\",\n Border: \"#84B7DB\",\n Background: \"#E8F4FA\", // Validation Background\n },\n } as ValidationTypes,\n Shadow: {\n Accent: \"rgba(210, 77, 255, 0.5)\",\n Red: \"rgba(221, 102, 102, 0.8)\",\n Elevation: \"rgba(75, 83, 159, 0.24)\",\n },\n};\n","import { getThemeColors } from \"../theme/color-theme-helper\";\nimport { PropertiesToType } from \"../util/utility-types\";\nimport { ColorSet } from \"./types\";\n\nexport const Color: PropertiesToType<\n ColorSet,\n ReturnType<typeof getThemeColors>\n> = {\n Brand: {\n 1: getThemeColors(\"Brand.1\"),\n 2: getThemeColors(\"Brand.2\"),\n 3: getThemeColors(\"Brand.3\"),\n 4: getThemeColors(\"Brand.4\"),\n 5: getThemeColors(\"Brand.5\"),\n 6: getThemeColors(\"Brand.6\"),\n },\n Primary: getThemeColors(\"Primary\"),\n PrimaryDark: getThemeColors(\"PrimaryDark\"),\n Secondary: getThemeColors(\"Secondary\"),\n Accent: {\n Light: {\n 1: getThemeColors(\"Accent.Light.1\"),\n 2: getThemeColors(\"Accent.Light.2\"),\n 3: getThemeColors(\"Accent.Light.3\"),\n 4: getThemeColors(\"Accent.Light.4\"),\n 5: getThemeColors(\"Accent.Light.5\"),\n 6: getThemeColors(\"Accent.Light.6\"),\n },\n Dark: {\n 1: getThemeColors(\"Accent.Dark.1\"),\n 2: getThemeColors(\"Accent.Dark.2\"),\n 3: getThemeColors(\"Accent.Dark.3\"),\n },\n },\n Neutral: {\n 1: getThemeColors(\"Neutral.1\"),\n 2: getThemeColors(\"Neutral.2\"),\n 3: getThemeColors(\"Neutral.3\"),\n 4: getThemeColors(\"Neutral.4\"),\n 5: getThemeColors(\"Neutral.5\"),\n 6: getThemeColors(\"Neutral.6\"),\n 7: getThemeColors(\"Neutral.7\"),\n 8: getThemeColors(\"Neutral.8\"),\n },\n Validation: {\n Green: {\n Text: getThemeColors(\"Validation.Green.Text\"),\n Icon: getThemeColors(\"Validation.Green.Icon\"),\n Border: getThemeColors(\"Validation.Green.Border\"),\n Background: getThemeColors(\"Validation.Green.Background\"),\n },\n Orange: {\n Text: getThemeColors(\"Validation.Orange.Text\"),\n Icon: getThemeColors(\"Validation.Orange.Icon\"),\n Border: getThemeColors(\"Validation.Orange.Border\"),\n Background: getThemeColors(\"Validation.Orange.Background\"),\n Badge: getThemeColors(\"Validation.Orange.Badge\"),\n },\n Red: {\n Text: getThemeColors(\"Validation.Red.Text\"),\n Icon: getThemeColors(\"Validation.Red.Icon\"),\n Border: getThemeColors(\"Validation.Red.Border\"),\n Background: getThemeColors(\"Validation.Red.Background\"),\n },\n Blue: {\n Text: getThemeColors(\"Validation.Blue.Text\"),\n Icon: getThemeColors(\"Validation.Blue.Icon\"),\n Border: getThemeColors(\"Validation.Blue.Border\"),\n Background: getThemeColors(\"Validation.Blue.Background\"),\n },\n },\n Shadow: {\n Accent: getThemeColors(\"Shadow.Accent\"),\n Red: getThemeColors(\"Shadow.Red\"),\n Elevation: getThemeColors(\"Shadow.Elevation\"),\n },\n};\n","import { MediaWidth } from \"../media/types\";\n\nexport const MediaWidths: MediaWidth = {\n mobileS: 320,\n mobileM: 375,\n mobileL: 480,\n tablet: 1199,\n desktopM: 1399,\n desktopL: 1999,\n desktop4k: 3840,\n};\n","import { MediaWidths as MediaWidthsSpec } from \"../spec/media-spec\";\nimport { MediaType, MediaWidth } from \"./types\";\n\n// =============================================================================\n// HELPER FUNCTION\n// =============================================================================\nconst getMediaQuerySpec = (type: \"max-width\" | \"min-width\") => {\n return Object.keys(MediaWidthsSpec).reduce((accumulator, key) => {\n const mediaWidth = MediaWidthsSpec[key as keyof MediaWidth];\n accumulator[\n key as keyof MediaType\n ] = `@media screen and (${type}: ${mediaWidth}px)`;\n\n return accumulator;\n }, {} as MediaType);\n};\n\n// =============================================================================\n// EXPORTS\n// =============================================================================\nexport const MediaQuery = {\n MaxWidth: getMediaQuerySpec(\"max-width\"),\n MinWidth: getMediaQuerySpec(\"min-width\"),\n};\n\nexport const MediaWidths = MediaWidthsSpec;\n","import styled, { css } from \"styled-components\";\nimport { MediaQuery } from \"../media/media\";\n\n// =============================================================================\n// STYLE INTERFACES\n// =============================================================================\nexport interface StyledDivStyleProps {\n $desktopStart?: number | undefined;\n $desktopSpan?: number | undefined;\n $tabletStart?: number | undefined;\n $tabletSpan?: number | undefined;\n $mobileStart?: number | undefined;\n $mobileSpan?: number | undefined;\n}\n\n// =============================================================================\n// STYLING\n// =============================================================================\nexport const StyledDiv = styled.div<StyledDivStyleProps>`\n position: relative;\n ${(props) => {\n const {\n $desktopStart,\n $desktopSpan,\n $tabletStart,\n $tabletSpan,\n $mobileStart,\n $mobileSpan,\n } = props;\n\n return css`\n grid-column: ${$desktopStart || \"auto\"} / span ${$desktopSpan || 1};\n\n ${MediaQuery.MaxWidth.tablet} {\n grid-column: ${$tabletStart || \"auto\"} / span\n ${$tabletSpan || 1};\n }\n\n ${MediaQuery.MaxWidth.mobileL} {\n grid-column: ${$mobileStart || \"auto\"} / span\n ${$mobileSpan || 1};\n }\n `;\n }}\n`;\n","import React from \"react\";\nimport { ColDivProps, DivRef } from \"./types\";\nimport { StyledDiv, StyledDivStyleProps } from \"./col-div.style\";\n\nconst Component = (props: ColDivProps, ref: DivRef): JSX.Element => {\n const { mobileCols, tabletCols, desktopCols, ...otherProps } = props;\n\n const getStyleProps = (): StyledDivStyleProps => {\n const desktopValues = desktopCols || tabletCols || mobileCols;\n const tabletValues = tabletCols || mobileCols;\n const mobileValues = mobileCols;\n\n const desktopStartSpan = extractStartAndSpan(desktopValues);\n const tabletStartSpan = extractStartAndSpan(tabletValues);\n const mobileStartSpan = extractStartAndSpan(mobileValues);\n\n const styles = {\n $desktopSpan: desktopStartSpan.span,\n $desktopStart: desktopStartSpan.start,\n $mobileSpan: mobileStartSpan.span,\n $mobileStart: mobileStartSpan.start,\n $tabletSpan: tabletStartSpan.span,\n $tabletStart: tabletStartSpan.start,\n };\n\n return styles;\n };\n\n return <StyledDiv ref={ref} {...getStyleProps()} {...otherProps} />;\n};\n\nexport const ColDiv = React.forwardRef(Component);\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\nconst extractStartAndSpan = (value: number | number[] | undefined) => {\n if (Array.isArray(value) && value.length > 1) {\n const [firstVal, secondVal] = value; // Will just take the first 2\n\n const startVal = firstVal <= secondVal ? firstVal : secondVal;\n const endVal = firstVal <= secondVal ? secondVal : firstVal;\n\n let span;\n\n if (endVal === startVal) {\n span = 1;\n } else {\n span = endVal - startVal;\n }\n\n return { start: startVal, span };\n } else if (typeof value === \"number\") {\n return { start: undefined, span: value };\n } else {\n return { start: undefined, span: undefined };\n }\n};\n","import React from \"react\";\nimport styled, { css } from \"styled-components\";\nimport { MediaQuery } from \"../media/media\";\nimport { ContainerProps, ContainerType, DivRef } from \"./types\";\n\nconst Component = (props: ContainerProps, ref: DivRef): JSX.Element => {\n const {\n children,\n \"data-testid\": testId = \"container\",\n type = \"flex\",\n stretch = false,\n ...otherProps\n } = props;\n\n return (\n <StyledContainer\n ref={ref}\n data-testid={testId}\n $type={type}\n $stretch={stretch}\n {...otherProps}\n >\n {children}\n </StyledContainer>\n );\n};\n\n// =============================================================================\n// EXPORT\n// =============================================================================\nexport const Container = React.forwardRef(Component);\n\n// =============================================================================\n// STYLING\n// =============================================================================\ninterface StyleProps {\n $type: ContainerType;\n $stretch: boolean;\n}\n\nconst StyledContainer = styled.div<StyleProps>`\n flex-grow: 1;\n margin: 0 auto;\n position: relative;\n width: auto;\n height: auto;\n\n ${(props) => {\n if (props.$stretch) {\n return css`\n padding: 0 3rem;\n `;\n } else {\n return css`\n padding: 0 0.75rem;\n /* Max width restrictions */\n max-width: 1320px;\n\n ${MediaQuery.MaxWidth.desktopM} {\n max-width: 1140px;\n }\n `;\n }\n }}\n ${MediaQuery.MaxWidth.tablet} {\n max-width: 720px;\n }\n ${MediaQuery.MaxWidth.mobileL} {\n width: 100%;\n padding: 0;\n max-width: unset;\n }\n\n ${(props) => {\n switch (props.$type) {\n case \"grid\":\n return css`\n column-gap: 2rem;\n display: grid;\n grid-template-columns: repeat(12, minmax(0, 1fr));\n\n ${MediaQuery.MaxWidth.tablet} {\n column-gap: 1.5rem;\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n\n ${MediaQuery.MaxWidth.mobileL} {\n column-gap: 1rem;\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n `;\n case \"flex-column\":\n return css`\n display: flex;\n flex-direction: column;\n `;\n case \"flex\":\n default:\n return css`\n display: flex;\n `;\n }\n }}\n`;\n","import React from \"react\";\nimport styled, { css } from \"styled-components\";\nimport { DivRef, SectionProps } from \"./types\";\nimport { MediaQuery } from \"../media\";\n\nconst Component = (props: SectionProps, ref: DivRef): JSX.Element => {\n const {\n children,\n \"data-testid\": testId = \"section\",\n stretch = false,\n ...otherProps\n } = props;\n\n return (\n <StyledSection\n ref={ref}\n data-testid={testId}\n $stretch={stretch}\n {...otherProps}\n >\n {children}\n </StyledSection>\n );\n};\n\n// =============================================================================\n// EXPORT\n// =============================================================================\nexport const Section = React.forwardRef(Component);\n\n// =============================================================================\n// STYLING\n// =============================================================================\ninterface StyleProps {\n $stretch: boolean;\n}\n\nconst StyledSection = styled.section<StyleProps>`\n display: block;\n position: relative;\n ${(props) => {\n if (props.$stretch) {\n return css`\n ${MediaQuery.MaxWidth.tablet} {\n padding: 0 1.5rem;\n\n // Extra enforcement\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n `;\n } else {\n return css`\n padding: 0 1.5rem;\n\n // Extra enforcement\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n `;\n }\n }}\n`;\n","import React from \"react\";\nimport { Container } from \"./container\";\nimport { Section } from \"./section\";\nimport { ContentProps, DivRef } from \"./types\";\n\nconst Component = (props: ContentProps, ref: DivRef): JSX.Element => {\n const {\n children,\n \"data-testid\": testId = \"content\",\n className,\n type = \"flex\",\n stretch = false,\n ...otherProps\n } = props;\n\n return (\n <Section\n ref={ref}\n data-testid={testId}\n className={className}\n stretch={stretch}\n {...otherProps}\n >\n <Container\n data-testid={`${testId}-container`}\n type={type}\n data-id=\"container\"\n stretch={stretch}\n >\n {children}\n </Container>\n </Section>\n );\n};\n\n// =============================================================================\n// EXPORT\n// =============================================================================\nexport const Content = React.forwardRef(Component);\n","import { ColDiv } from \"./col-div\";\nimport { Container } from \"./container\";\nimport { Content } from \"./content\";\nimport { Section } from \"./section\";\n\nexport const Layout = {\n Section,\n Container,\n Content,\n ColDiv,\n};\n\nexport * from \"./types\";\n","import styled, { css } from \"styled-components\";\nimport { Color } from \"../../color/color\";\n\ninterface StyleProps {\n $outline: \"none\" | \"browser\";\n $highlight: boolean;\n}\n\nexport const Main = styled.button<StyleProps>`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 1.5rem;\n background-color: transparent;\n border: none;\n cursor: pointer;\n\n img {\n height: 1rem;\n width: 1rem;\n }\n\n svg {\n height: 1.125rem;\n width: 1.125rem;\n }\n\n &:active,\n &:focus {\n ${({ $outline }) => $outline === \"none\" && \"outline: none;\"}\n\n ${({ $highlight }) =>\n $highlight &&\n css`\n background-color: ${Color.Neutral[7]};\n `}\n }\n`;\n","import React from \"react\";\nimport { Main } from \"./clickable-icon.style\";\nimport { ClickableIconProps } from \"./types\";\n\nconst Component = (\n {\n children,\n focusHighlight = true,\n focusOutline = \"none\",\n type = \"button\",\n ...otherProps\n }: ClickableIconProps,\n ref: React.Ref<HTMLButtonElement>\n) => {\n return (\n <Main\n ref={ref}\n $outline={focusOutline}\n $highlight={focusHighlight}\n type={type}\n {...otherProps}\n >\n {children}\n </Main>\n );\n};\n\nexport const ClickableIcon = React.forwardRef(Component);\n","export const FontFamily = {\n OpenSans: {\n Regular: \"Open Sans\",\n Semibold: \"Open Sans Semibold\",\n Bold: \"Open Sans Bold\",\n Light: \"Open Sans Light\",\n },\n MerriWeather: \"Merriweather\",\n};\n","import { BaseTextStyleSet } from \"../spec/text-spec/base-text-style-set\";\nimport { TextStyleSetType } from \"../text/types\";\nimport { getCollection, getValue } from \"./helper\";\nimport {\n FontStyleCollectionsMap,\n TextStyleScheme,\n ThemeCollectionSpec,\n ThemeContextKeys,\n ThemeSpec,\n} from \"./types\";\n\n// =============================================================================\n// THEME SPECIFICATION\n// =============================================================================\nconst TextStyleSpec: ThemeCollectionSpec<\n FontStyleCollectionsMap,\n TextStyleScheme\n> = {\n collections: {\n base: BaseTextStyleSet,\n },\n defaultValue: \"base\",\n};\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\nexport const getThemeTextStyles = (attributePath: string) => {\n return (props: any): string | number => {\n const theme = props.theme as ThemeSpec;\n const textStyleSet: TextStyleSetType = getCollection(\n TextStyleSpec,\n theme[ThemeContextKeys.textStyleScheme]\n );\n\n return theme.options && theme.options.textStyle\n ? getValue(textStyleSet, attributePath, theme.options.textStyle)\n : getValue(textStyleSet, attributePath);\n };\n};\n","import { FontFamily } from \"./font-spec\";\nimport { TextStyleSetType } from \"../../text/types\";\n\n// In rem unit\nexport const BaseTextStyleSet: TextStyleSetType = {\n D1: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 3,\n fontWeight: 700,\n lineHeight: 4,\n letterSpacing: -0.056,\n },\n D2: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 2.5,\n fontWeight: 700,\n lineHeight: 3.5,\n letterSpacing: -0.032,\n },\n D3: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 1.625,\n fontWeight: 700,\n lineHeight: 2.25,\n },\n D4: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 1.375,\n fontWeight: 700,\n lineHeight: 1.75,\n },\n DBody: {\n fontFamily: FontFamily.OpenSans.Regular,\n fontSize: 1.375,\n lineHeight: 1.75,\n },\n H1: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 2,\n fontWeight: 700,\n lineHeight: 2.5,\n },\n H2: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 1.625,\n fontWeight: 700,\n lineHeight: 2.25,\n },\n H3: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 1.375,\n fontWeight: 700,\n lineHeight: 1.75,\n },\n H4: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 1.125,\n fontWeight: 700,\n lineHeight: 1.625,\n },\n H5: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 1,\n fontWeight: 700,\n lineHeight: 1.5,\n letterSpacing: 0.014,\n },\n H6: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 0.875,\n fontWeight: 700,\n lineHeight: 1.6,\n letterSpacing: 0.012,\n },\n Body: {\n fontFamily: FontFamily.OpenSans.Regular,\n fontSize: 1.125,\n lineHeight: 1.625,\n },\n BodySmall: {\n fontFamily: FontFamily.OpenSans.Regular,\n fontSize: 1,\n lineHeight: 1.5,\n letterSpacing: 0.014,\n },\n XSmall: {\n fontFamily: FontFamily.OpenSans.Regular,\n fontSize: 0.75,\n lineHeight: 1.2,\n letterSpacing: 0.012,\n },\n};\n","import { getThemeTextStyles } from \"../theme/text-theme-helper\";\nimport { PropertiesToType } from \"../util/utility-types\";\nimport { TextStyleSetType } from \"./types\";\n\nexport const TextStyle: PropertiesToType<\n TextStyleSetType,\n ReturnType<typeof getThemeTextStyles>\n> = {\n D1: {\n fontFamily: getThemeTextStyles(\"D1.fontFamily\"),\n fontSize: getThemeTextStyles(\"D1.fontSize\"),\n fontWeight: getThemeTextStyles(\"D1.fontWeight\"),\n lineHeight: getThemeTextStyles(\"D1.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"D1.letterSpacing\"),\n },\n D2: {\n fontFamily: getThemeTextStyles(\"D2.fontFamily\"),\n fontSize: getThemeTextStyles(\"D2.fontSize\"),\n fontWeight: getThemeTextStyles(\"D2.fontWeight\"),\n lineHeight: getThemeTextStyles(\"D2.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"D2.letterSpacing\"),\n },\n D3: {\n fontFamily: getThemeTextStyles(\"D3.fontFamily\"),\n fontSize: getThemeTextStyles(\"D3.fontSize\"),\n fontWeight: getThemeTextStyles(\"D3.fontWeight\"),\n lineHeight: getThemeTextStyles(\"D3.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"D3.letterSpacing\"),\n },\n D4: {\n fontFamily: getThemeTextStyles(\"D4.fontFamily\"),\n fontSize: getThemeTextStyles(\"D4.fontSize\"),\n fontWeight: getThemeTextStyles(\"D4.fontWeight\"),\n lineHeight: getThemeTextStyles(\"D4.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"D4.letterSpacing\"),\n },\n DBody: {\n fontFamily: getThemeTextStyles(\"DBody.fontFamily\"),\n fontSize: getThemeTextStyles(\"DBody.fontSize\"),\n fontWeight: getThemeTextStyles(\"DBody.fontWeight\"),\n lineHeight: getThemeTextStyles(\"DBody.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"DBody.letterSpacing\"),\n },\n H1: {\n fontFamily: getThemeTextStyles(\"H1.fontFamily\"),\n fontSize: getThemeTextStyles(\"H1.fontSize\"),\n fontWeight: getThemeTextStyles(\"H1.fontWeight\"),\n lineHeight: getThemeTextStyles(\"H1.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"H1.letterSpacing\"),\n },\n H2: {\n fontFamily: getThemeTextStyles(\"H2.fontFamily\"),\n fontSize: getThemeTextStyles(\"H2.fontSize\"),\n fontWeight: getThemeTextStyles(\"H2.fontWeight\"),\n lineHeight: getThemeTextStyles(\"H2.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"H2.letterSpacing\"),\n },\n H3: {\n fontFamily: getThemeTextStyles(\"H3.fontFamily\"),\n fontSize: getThemeTextStyles(\"H3.fontSize\"),\n fontWeight: getThemeTextStyles(\"H3.fontWeight\"),\n lineHeight: getThemeTextStyles(\"H3.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"H3.letterSpacing\"),\n },\n H4: {\n fontFamily: getThemeTextStyles(\"H4.fontFamily\"),\n fontSize: getThemeTextStyles(\"H4.fontSize\"),\n fontWeight: getThemeTextStyles(\"H4.fontWeight\"),\n lineHeight: getThemeTextStyles(\"H4.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"H4.letterSpacing\"),\n },\n H5: {\n fontFamily: getThemeTextStyles(\"H5.fontFamily\"),\n fontSize: getThemeTextStyles(\"H5.fontSize\"),\n fontWeight: getThemeTextStyles(\"H5.fontWeight\"),\n lineHeight: getThemeTextStyles(\"H5.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"H5.letterSpacing\"),\n },\n H6: {\n fontFamily: getThemeTextStyles(\"H6.fontFamily\"),\n fontSize: getThemeTextStyles(\"H6.fontSize\"),\n fontWeight: getThemeTextStyles(\"H6.fontWeight\"),\n lineHeight: getThemeTextStyles(\"H6.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"H6.letterSpacing\"),\n },\n Body: {\n fontFamily: getThemeTextStyles(\"Body.fontFamily\"),\n fontSize: getThemeTextStyles(\"Body.fontSize\"),\n fontWeight: getThemeTextStyles(\"Body.fontWeight\"),\n lineHeight: getThemeTextStyles(\"Body.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"Body.letterSpacing\"),\n },\n BodySmall: {\n fontFamily: getThemeTextStyles(\"BodySmall.fontFamily\"),\n fontSize: getThemeTextStyles(\"BodySmall.fontSize\"),\n fontWeight: getThemeTextStyles(\"BodySmall.fontWeight\"),\n lineHeight: getThemeTextStyles(\"BodySmall.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"BodySmall.letterSpacing\"),\n },\n XSmall: {\n fontFamily: getThemeTextStyles(\"XSmall.fontFamily\"),\n fontSize: getThemeTextStyles(\"XSmall.fontSize\"),\n fontWeight: getThemeTextStyles(\"XSmall.fontWeight\"),\n lineHeight: getThemeTextStyles(\"XSmall.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"XSmall.letterSpacing\"),\n },\n};\n","import { css } from \"styled-components\";\nimport { FontFamily } from \"../spec/text-spec/font-spec\";\nimport { TextLinkSizeType, TextSizeType, TextWeight } from \"./types\";\nimport { TextStyle } from \"./text-style\";\n\n// =============================================================================\n// FONT STYLE\n// =============================================================================\nconst getFont = (weight: TextWeight) => {\n switch (weight) {\n case 700:\n case \"bold\":\n return FontFamily.OpenSans.Bold;\n case 600:\n case \"semibold\":\n return FontFamily.OpenSans.Semibold;\n case 300:\n case \"light\":\n return FontFamily.OpenSans.Light;\n case 400:\n case \"regular\":\n return FontFamily.OpenSans.Regular;\n default:\n return \"\";\n }\n};\n\nconst getFontFamily = (\n type: TextSizeType | TextLinkSizeType,\n weight?: TextWeight\n) => {\n return (props: any) => {\n const fontFamilyFromTheme = TextStyle[type].fontFamily(props) as string;\n const fontWeightFromTheme = TextStyle[type].fontWeight(\n props\n ) as TextWeight;\n\n if (Object.values(FontFamily.OpenSans).includes(fontFamilyFromTheme)) {\n return css`\n font-family: ${getFont(weight) ||\n getFont(fontWeightFromTheme) ||\n fontFamilyFromTheme};\n font-weight: normal !important;\n `;\n }\n\n return css`\n font-family: ${fontFamilyFromTheme};\n font-weight: ${(getFontWeight(weight) || fontWeightFromTheme) ??\n \"normal\"};\n `;\n };\n};\n\nconst getFontWeight = (weight: TextWeight) => {\n switch (weight) {\n case 300:\n case \"light\":\n return 300;\n case 400:\n case \"regular\":\n return 400;\n case 600:\n case \"semibold\":\n return 600;\n case 700:\n case \"bold\":\n return 700;\n case 900:\n case \"black\":\n return 900;\n default:\n return \"\";\n }\n};\n\n// =============================================================================\n// TEXT STYLE\n// =============================================================================\nconst getMaxLinesLineStyle = (maxLines: number | undefined) => {\n if (maxLines > 0) {\n return css`\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: ${maxLines};\n line-clamp: ${maxLines};\n overflow: hidden;\n `;\n }\n};\n\nconst getTextStyle = (\n type: TextSizeType | TextLinkSizeType,\n weight: TextWeight,\n paragraph = false\n) => {\n return (props: any) => {\n const attrs = TextStyle[type];\n const fontSize = attrs.fontSize(props) as number;\n\n // Add extra margin for paragraphs\n const getMarginBottomStyle = () => {\n const marginBottomScale = paragraph ? 1.05 : 0;\n return css`\n margin-bottom: ${fontSize * marginBottomScale}rem;\n `;\n };\n\n return css`\n ${getFontFamily(type, weight)}\n font-size: ${fontSize}rem !important;\n line-height: ${attrs.lineHeight}rem !important;\n letter-spacing: ${attrs.letterSpacing(props) || 0}rem !important;\n ${getMarginBottomStyle()}\n `;\n };\n};\n\nconst getDisplayStyle = (\n inline = false,\n paragraph = false,\n maxLines: number | undefined = undefined\n) => {\n if (paragraph) {\n return css`\n display: block;\n ${getMaxLinesLineStyle(maxLines)}\n `;\n } else if (inline) {\n return css`\n display: inline;\n `;\n } else {\n return css`\n display: block;\n ${getMaxLinesLineStyle(maxLines)}\n `;\n }\n};\n\n// =============================================================================\n// EXPORTS\n// =============================================================================\nexport const TextStyleHelper = {\n getFontFamily,\n getTextStyle,\n getDisplayStyle,\n};\n","import { ExternalIcon } from \"@lifesg/react-icons/external\";\nimport styled, { css } from \"styled-components\";\nimport { Color } from \"../color/color\";\nimport { TextStyleHelper } from \"./helper\";\nimport { TextLinkProps, TextLinkStyleProps, TextProps } from \"./types\";\n\nexport namespace Text {\n export const D1 = styled.h1<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"D1\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const D2 = styled.h1<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"D2\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const D3 = styled.h1<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"D3\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const D4 = styled.h1<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"D4\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const DBody = styled.h1<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"DBody\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const H1 = styled.h1<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"H1\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const H2 = styled.h2<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"H2\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const H3 = styled.h3<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"H3\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const H4 = styled.h4<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"H4\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const H5 = styled.h5<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"H5\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const H6 = styled.h6<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"H6\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const Body = styled.p<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"Body\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const BodySmall = styled.p<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"BodySmall\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const XSmall = styled.span<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"XSmall\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const Hyperlink = {\n Default: (props: TextLinkProps) =>\n HyperlinkComponent({ ...props, textStyle: \"Body\" }),\n Small: (props: TextLinkProps) =>\n HyperlinkComponent({ ...props, textStyle: \"BodySmall\" }),\n };\n}\n\n// =============================================================================\n// NON-EXPORTABLES\n// =============================================================================\n\nconst HyperlinkBase = styled.a<TextLinkStyleProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(props.textStyle, props.weight)}\n color: ${Color.Primary};\n text-decoration: none;\n\n :hover,\n :active,\n :focus {\n color: ${Color.Secondary};\n\n svg {\n color: ${Color.Secondary};\n }\n }\n `;\n }}\n`;\n\nconst StyledExternalIcon = styled(ExternalIcon)`\n height: 1rem;\n width: 1rem;\n margin-left: 0.4rem;\n vertical-align: middle;\n`;\n\nconst HyperlinkComponent = ({\n external = false,\n children,\n ...rest\n}: TextLinkStyleProps) => {\n return (\n <HyperlinkBase {...rest}>\n {children}\n {external && <StyledExternalIcon />}\n </HyperlinkBase>\n );\n};\n","export type TextSizeType =\n | \"D1\"\n | \"D2\"\n | \"D3\"\n | \"D4\"\n | \"DBody\"\n | \"H1\"\n | \"H2\"\n | \"H3\"\n | \"H4\"\n | \"H5\"\n | \"H6\"\n | \"Body\"\n | \"BodySmall\"\n | \"XSmall\";\n\nexport type TextLinkSizeType =\n | \"Body\" // Default\n | \"BodySmall\"; // Small\n\nexport interface TextStyleSpec {\n fontFamily?: string | undefined;\n fontSize?: number | undefined;\n fontWeight?: number | undefined;\n lineHeight?: number | undefined;\n letterSpacing?: number | undefined;\n}\n\nexport type TextStyleSetType = { [key in TextSizeType]: TextStyleSpec };\n\nexport type TextStyleSetOptionsType = Partial<TextStyleSetType>;\n\nexport type TextWeight =\n | \"regular\"\n | \"semibold\"\n | \"bold\"\n | \"light\"\n | \"black\"\n | 400\n | 600\n | 700\n | 300\n | 900;\n\nexport enum RedirectScope {\n Subpage, // Pages we specified the routes (within this proj folder)\n Domain, // Pages not in the project but under the same domain name\n}\n\nexport interface TextProps extends React.HTMLAttributes<HTMLElement> {\n weight?: TextWeight | undefined;\n inline?: boolean | undefined;\n /** This is applicable only to non-headers */\n paragraph?: boolean | undefined;\n /** Specify the number of lines visible, the additional lines will be truncated */\n maxLines?: number | undefined;\n}\n\nexport interface TextLinkProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n weight?: TextWeight | undefined;\n /** Specifying this will add the external indicator */\n external?: boolean | undefined;\n}\n\nexport interface TextLinkStyleProps extends TextLinkProps {\n textStyle: TextLinkSizeType;\n}\n","const Base = \"all 300ms cubic-bezier(0.21, 0.79, 0.53, 1)\";\nconst Custom = (duration: number) =>\n `all ${duration}ms cubic-bezier(0.21, 0.79, 0.53, 1)`;\n\nexport const Transition = {\n Base,\n Custom,\n};\n","import { CrossIcon } from \"@lifesg/react-icons/cross\";\nimport styled, { css } from \"styled-components\";\nimport { Color } from \"../color\";\nimport { Layout } from \"../layout\";\nimport { ClickableIcon } from \"../shared/clickable-icon\";\nimport { Text, TextStyleHelper } from \"../text\";\nimport { Transition } from \"../transition\";\n\n// =============================================================================\n// STYLE INTERFACES, transient props are denoted with $\n// See more https://styled-components.com/docs/api#transient-props\n// =============================================================================\ninterface WrapperStyleProps {\n $sticky: boolean;\n}\n\n// =============================================================================\n// STYLING\n// =============================================================================\nconst commonLinkStyle = css`\n color: ${Color.Validation.Orange.Icon};\n\n svg {\n color: ${Color.Validation.Orange.Icon};\n }\n\n :hover,\n :active,\n :visited,\n :focus {\n color: ${Color.Validation.Orange.Icon};\n svg {\n color: ${Color.Validation.Orange.Icon};\n }\n }\n`;\n\nexport const Wrapper = styled.div<WrapperStyleProps>`\n position: ${(props) => (props.$sticky ? \"sticky\" : \"relative\")};\n left: 0;\n top: 0;\n width: 100%;\n transition: ${Transition.Base};\n background: ${Color.Neutral[2]};\n z-index: 25;\n`;\n\nexport const Container = styled(Layout.Content)`\n display: flex;\n`;\n\nexport const TextContainer = styled.div`\n display: flex;\n flex: 1;\n padding: 1.5rem 0;\n`;\n\nexport const Content = styled.div`\n display: inline-block;\n width: 100%;\n\n ${TextStyleHelper.getTextStyle(\"Body\", \"regular\")}\n color: ${Color.Neutral[8]};\n\n p {\n display: inline-block;\n }\n\n strong {\n ${TextStyleHelper.getFontFamily(\"Body\", \"semibold\")}\n color: ${Color.Neutral[8]};\n }\n\n a {\n ${TextStyleHelper.getTextStyle(\"Body\", \"regular\")}\n ${commonLinkStyle}\n }\n`;\n\nexport const ContentLink = styled(Text.Hyperlink.Default)`\n position: relative;\n\n ${commonLinkStyle}\n`;\n\nexport const StyledIconButton = styled(ClickableIcon)`\n margin-right: -1.5rem;\n padding-left: 1rem;\n height: max-content;\n`;\n\nexport const StyledIcon = styled(CrossIcon)`\n height: 1.875rem;\n width: 1.875rem;\n color: ${Color.Neutral[8]};\n`;\n","import React, { useEffect, useState } from \"react\";\nimport {\n Container,\n Content,\n ContentLink as NBLink,\n StyledIcon,\n StyledIconButton,\n TextContainer,\n Wrapper,\n} from \"./notification-banner.styles\";\nimport {\n NotificationBannerProps,\n NotificationBannerWithForwardedRefProps,\n} from \"./types\";\n\nexport const NBComponent = ({\n children,\n visible = true,\n dismissible = true,\n sticky = true,\n onDismiss,\n id,\n forwardedRef,\n ...otherProps\n}: NotificationBannerWithForwardedRefProps): JSX.Element => {\n // =============================================================================\n // CONST, STATE, REF\n // =============================================================================\n const testId = otherProps[\"data-testid\"];\n\n const [isVisible, setVisible] = useState<boolean>(visible);\n\n // =============================================================================\n // EFFECTS\n // =============================================================================\n useEffect(() => {\n setVisible(visible);\n }, [visible]);\n\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n const handleDismiss = () => {\n setVisible(false);\n\n if (dismissible && onDismiss) onDismiss();\n };\n\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n if (!isVisible) return null;\n\n return (\n <Wrapper ref={forwardedRef} $sticky={sticky} {...otherProps}>\n <Container id={formatId(\"container\", id)}>\n <TextContainer>\n <Content data-testid={formatId(\"text-content\", testId)}>\n {children}\n </Content>\n </TextContainer>\n {dismissible && (\n <StyledIconButton\n onClick={handleDismiss}\n id={formatId(\"dismiss-button\", id)}\n data-testid={formatId(\"dismiss-button\", testId)}\n focusHighlight={false}\n >\n <StyledIcon />\n </StyledIconButton>\n )}\n </Container>\n </Wrapper>\n );\n};\n\n/**\n * Intermediate component to handle passing the ref as a prop\n */\nconst NBWithRef = (\n props: NotificationBannerProps,\n ref: React.Ref<HTMLDivElement>\n) => {\n return <NBComponent {...props} forwardedRef={ref} />;\n};\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\nconst formatId = (componentName: string, id = \"wrapper\"): string => {\n return `${id}-${componentName}`;\n};\n\n// =============================================================================\n// EXPORTABLE\n// =============================================================================\nconst Base = React.forwardRef(NBWithRef);\nexport const NotificationBanner = Object.assign(Base, {\n Link: NBLink,\n});\n","/*! @license DOMPurify 2.4.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.4.5/LICENSE */\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\nvar _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\nif (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\n\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\n\nif (!construct) {\n construct = function construct(Func, args) {\n return _construct(Func, _toConsumableArray(args));\n };\n}\n\nvar arrayForEach = unapply(Array.prototype.forEach);\nvar arrayPop = unapply(Array.prototype.pop);\nvar arrayPush = unapply(Array.prototype.push);\nvar stringToLowerCase = unapply(String.prototype.toLowerCase);\nvar stringToString = unapply(String.prototype.toString);\nvar stringMatch = unapply(String.prototype.match);\nvar stringReplace = unapply(String.prototype.replace);\nvar stringIndexOf = unapply(String.prototype.indexOf);\nvar stringTrim = unapply(String.prototype.trim);\nvar regExpTest = unapply(RegExp.prototype.test);\nvar typeErrorCreate = unconstruct(TypeError);\nfunction unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n}\nfunction unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n}\n/* Add properties to a lookup table */\n\nfunction addToSet(set, array, transformCaseFunc) {\n transformCaseFunc = transformCaseFunc ? transformCaseFunc : stringToLowerCase;\n\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n\n while (l--) {\n var element = array[l];\n\n if (typeof element === 'string') {\n var lcElement = transformCaseFunc(element);\n\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n/* Shallow clone an object */\n\nfunction clone(object) {\n var newObject = create(null);\n var property;\n\n for (property in object) {\n if (apply(hasOwnProperty, object, [property]) === true) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n}\n/* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\n\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n}\n\nvar html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']); // SVG\n\nvar svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nvar svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']); // List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\n\nvar svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nvar mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']); // Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\n\nvar mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nvar text = freeze(['#text']);\n\nvar html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\nvar svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nvar mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nvar xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\nvar MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n\nvar ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nvar TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\nvar DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n\nvar ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n\nvar IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nvar IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nvar ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nvar DOCTYPE_NAME = seal(/^html$/i);\n\nvar getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\n\n\nvar _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if (_typeof(trustedTypes) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n } // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n\n\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html) {\n return html;\n },\n createScriptURL: function createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\n\nfunction createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n\n\n DOMPurify.version = '2.4.5';\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === void 0 ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n HTMLFormElement = window.HTMLFormElement,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n var ElementPrototype = Element.prototype;\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode'); // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n\n var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n var documentMode = {};\n\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n var MUSTACHE_EXPR$1 = MUSTACHE_EXPR,\n ERB_EXPR$1 = ERB_EXPR,\n TMPLIT_EXPR$1 = TMPLIT_EXPR,\n DATA_ATTR$1 = DATA_ATTR,\n ARIA_ATTR$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(svgFilters), _toConsumableArray(mathMl$1), _toConsumableArray(text)));\n /* Allowed attribute names */\n\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(mathMl), _toConsumableArray(xml)));\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n\n var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n\n var FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n\n var FORBID_ATTR = null;\n /* Decide if ARIA attributes are okay */\n\n var ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n\n var ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n\n var ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n\n var SAFE_FOR_TEMPLATES = false;\n /* Decide if document with <html>... should be returned */\n\n var WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n\n var SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n\n var FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n\n var RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n\n var RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n\n var RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n\n var SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n\n var SANITIZE_NAMED_PROPS = false;\n var SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n\n var KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n\n var IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n\n var USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n\n var ALLOWED_NAMESPACES = null;\n var DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n /* Parsing of strict XHTML documents */\n\n var PARSER_MEDIA_TYPE;\n var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n var transformCaseFunc;\n /* Keep a reference to config to pass to hooks */\n\n var CONFIG = null;\n /* Ideally, do not touch anything below this line */\n\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n var isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n\n\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n\n\n if (!cfg || _typeof(cfg) !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n\n\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE; // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = 'ALLOWED_NAMESPACES' in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n\n\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, _toConsumableArray(text));\n ALLOWED_ATTR = [];\n\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n\n\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n\n\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n\n\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n\n\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n } // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n\n\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']); // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n\n var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n\n var ALL_SVG_TAGS = addToSet({}, svg$1);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n var ALL_MATHML_TAGS = addToSet({}, mathMl$1);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element); // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n } // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n\n\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n } // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n\n\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n } // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n\n\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n } // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n\n\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n } // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n\n\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n } // For XHTML and XML documents that support custom namespaces\n\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n } // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n\n\n return false;\n };\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n\n\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n\n\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name); // We void attribute values for unremovable \"is\"\" attributes\n\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n\n\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc;\n var leadingWhitespace;\n\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n\n\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {// Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n\n\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n\n\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n\n\n var _isClobbered = function _isClobbered(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function');\n };\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n\n\n var _isNode = function _isNode(object) {\n return _typeof(Node) === 'object' ? object instanceof Node : object && _typeof(object) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n\n\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n\n\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content;\n /* Execute a hook if present */\n\n _executeHook('beforeSanitizeElements', currentNode, null);\n /* Check if element is clobbered or can clobber */\n\n\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Check if tagname contains Unicode */\n\n\n if (regExpTest(/[\\u0080-\\uFFFF]/, currentNode.nodeName)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Now let's check the element's type and name */\n\n\n var tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n\n\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Mitigate a problem with templates inside select */\n\n\n if (tagName === 'select' && regExpTest(/<template/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Remove element if anything forbids its presence */\n\n\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false;\n }\n /* Keep content except for bad-listed elements */\n\n\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n var childCount = childNodes.length;\n\n for (var i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n\n return true;\n }\n /* Check whether element has a valid namespace */\n\n\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n\n return true;\n }\n\n if ((tagName === 'noscript' || tagName === 'noembed') && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Sanitize element content to be template-safe */\n\n\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR$1, ' ');\n content = stringReplace(content, ERB_EXPR$1, ' ');\n content = stringReplace(content, TMPLIT_EXPR$1, ' ');\n\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n\n\n var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n\n\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if ( // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if (!value) ; else {\n return false;\n }\n\n return true;\n };\n /**\n * _basicCustomElementCheck\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n * @param {string} tagName name of the tag of the node to sanitize\n */\n\n\n var _basicCustomElementTest = function _basicCustomElementTest(tagName) {\n return tagName.indexOf('-') > 0;\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n\n\n var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n var attr;\n var value;\n var lcName;\n var l;\n /* Execute a hook if present */\n\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n var attributes = currentNode.attributes;\n /* Check if we have attributes; if not we might have a text node */\n\n if (!attributes) {\n return;\n }\n\n var hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n\n while (l--) {\n attr = attributes[l];\n var _attr = attr,\n name = _attr.name,\n namespaceURI = _attr.namespaceURI;\n value = name === 'value' ? attr.value : stringTrim(attr.value);\n lcName = transformCaseFunc(name);\n /* Execute a hook if present */\n\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Remove attribute */\n\n\n _removeAttribute(name, currentNode);\n /* Did the hooks approve of the attribute? */\n\n\n if (!hookEvent.keepAttr) {\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n\n\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n\n\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR$1, ' ');\n value = stringReplace(value, ERB_EXPR$1, ' ');\n value = stringReplace(value, TMPLIT_EXPR$1, ' ');\n }\n /* Is `value` valid for this attribute? */\n\n\n var lcTag = transformCaseFunc(currentNode.nodeName);\n\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n\n\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode); // Prefix the value and later re-create the attribute with the sanitized value\n\n\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Handle attributes that require Trusted Types */\n\n\n if (trustedTypesPolicy && _typeof(trustedTypes) === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n value = trustedTypesPolicy.createHTML(value);\n break;\n\n case 'TrustedScriptURL':\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n\n\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n arrayPop(DOMPurify.removed);\n } catch (_) {}\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n\n\n var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n var shadowNode;\n\n var shadowIterator = _createIterator(fragment);\n /* Execute a hook if present */\n\n\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n /* Sanitize tags and elements */\n\n\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n /* Deep shadow DOM detected */\n\n\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n /* Check attributes, sanitize if necessary */\n\n\n _sanitizeAttributes(shadowNode);\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} configuration object\n */\n // eslint-disable-next-line complexity\n\n\n DOMPurify.sanitize = function (dirty) {\n var cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var body;\n var importedNode;\n var currentNode;\n var oldNode;\n var returnNode;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n\n IS_EMPTY_INPUT = !dirty;\n\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n\n\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n // eslint-disable-next-line no-negated-condition\n if (typeof dirty.toString !== 'function') {\n throw typeErrorCreate('toString is not a function');\n } else {\n dirty = dirty.toString();\n\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n }\n }\n /* Check we can run. Otherwise fall back or ignore */\n\n\n if (!DOMPurify.isSupported) {\n if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n if (typeof dirty === 'string') {\n return window.toStaticHTML(dirty);\n }\n\n if (_isNode(dirty)) {\n return window.toStaticHTML(dirty.outerHTML);\n }\n }\n\n return dirty;\n }\n /* Assign config vars */\n\n\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n\n\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n var tagName = transformCaseFunc(dirty.nodeName);\n\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n\n\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n\n\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n\n\n var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n\n\n while (currentNode = nodeIterator.nextNode()) {\n /* Fix IE's strange behavior with manipulated textNodes #89 */\n if (currentNode.nodeType === 3 && currentNode === oldNode) {\n continue;\n }\n /* Sanitize tags and elements */\n\n\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n /* Shadow DOM detected, sanitize it */\n\n\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n /* Check attributes, sanitize if necessary */\n\n\n _sanitizeAttributes(currentNode);\n\n oldNode = currentNode;\n }\n\n oldNode = null;\n /* If we sanitized `dirty` in-place, return it. */\n\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n\n\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmod) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n\n\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$1, ' ');\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR$1, ' ');\n serializedHTML = stringReplace(serializedHTML, TMPLIT_EXPR$1, ' ');\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n\n\n DOMPurify.setConfig = function (cfg) {\n _parseConfig(cfg);\n\n SET_CONFIG = true;\n };\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n\n\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {string} tag Tag name of containing element.\n * @param {string} attr Attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n\n\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n var lcTag = transformCaseFunc(tag);\n var lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n\n\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n * @return {Function} removed(popped) hook\n */\n\n\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n return arrayPop(hooks[entryPoint]);\n }\n };\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n\n\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n *\n */\n\n\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n}\n\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.js.map\n","import DOMPurify from \"dompurify\";\nimport React from \"react\";\nimport { NBComponent, NotificationBanner } from \"./notification-banner\";\nimport {\n ContentLinkAttributes,\n ContentTextAttributes,\n NotificationBannerWithForwardedRefProps,\n NotificationContentAttributes,\n} from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const withNotificationBanner = (\n data: NotificationContentAttributes[]\n) => {\n const ComponentToReturn = (\n props: NotificationBannerWithForwardedRefProps,\n ref: React.Ref<HTMLDivElement>\n ) => {\n const renderContent = () => {\n if (data.length > 0) {\n return data.map((attribute, index) => {\n if (attribute.type === \"text\") {\n const otherAttributes =\n attribute.otherAttributes as ContentTextAttributes;\n\n const sanitizedContent = DOMPurify.sanitize(\n attribute.content\n );\n return (\n <p\n key={index}\n {...otherAttributes}\n dangerouslySetInnerHTML={{\n __html: sanitizedContent,\n }}\n />\n );\n } else {\n const otherAttributes =\n attribute.otherAttributes as ContentLinkAttributes;\n return (\n <NotificationBanner.Link\n key={index}\n {...otherAttributes}\n >\n {attribute.content}\n </NotificationBanner.Link>\n );\n }\n });\n }\n\n console.error(\"[NotificationBannerHOC] Empty data passed\");\n return null;\n };\n\n return (\n <NBComponent forwardedRef={ref} {...props}>\n {renderContent()}\n </NBComponent>\n );\n };\n\n return React.forwardRef(ComponentToReturn);\n};\n"],"names":["isArray_1","Array","isArray","freeGlobal","global","Object","freeSelf","self","_root","Function","_Symbol","require$$0","Symbol","objectProto","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","toStringTag","undefined","_getRawTag","value","isOwn","call","tag","unmasked","e","result","getRawTag","require$$1","objectToString","_baseGetTag","baseGetTag","isObjectLike","isSymbol_1","isSymbol","reIsDeepProp","reIsPlainProp","_isKey","object","type","test","isObject_1","isObject","uid","isFunction_1","coreJsData","maskSrcKey","exec","keys","IE_PROTO","_isMasked","func","funcToString","_toSource","isFunction","isMasked","require$$2","toSource","require$$3","reIsHostCtor","funcProto","reIsNative","RegExp","replace","baseIsNative","getValue","key","_getNative","_nativeCreate","nativeCreate","_hashClear","this","__data__","size","_hashDelete","has","_hashGet","data","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","index","length","clear","entry","set","get","_Hash","_listCacheClear","eq","other","_assocIndexOf","array","assocIndexOf","splice","listCacheClear","listCacheDelete","pop","listCacheGet","listCacheHas","listCacheSet","push","ListCache","_ListCache","Map","isKeyable","_getMapData","map","getMapData","mapCacheClear","hash","string","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","memoize","resolver","TypeError","memoized","args","arguments","apply","cache","Cache","_memoizeCapped","rePropName","reEscapeChar","_stringToPath","charCodeAt","match","number","quote","subString","arrayMap","iteratee","symbolProto","symbolToString","_baseToString","baseToString","isKey","stringToPath","castPath","toKey","baseGet","path","defaultValue","collection","attributePath","customCollection","getCollection","collectionSpec","contextValue","themeContextValue","collections","ThemeContextKeys","ColorSpec","base","Brand","Primary","PrimaryDark","Secondary","Accent","Dark","Light","Neutral","Validation","Green","Text","Icon","Border","Background","Orange","Badge","Red","Blue","Shadow","Elevation","bookingsg","rbs","mylegacy","ccube","getThemeColors","props","theme","colorSet","colorScheme","options","color","Color","MediaWidths","mobileS","mobileM","mobileL","tablet","desktopM","desktopL","desktop4k","getMediaQuerySpec","MediaWidthsSpec","reduce","accumulator","mediaWidth","MediaQuery","StyledDiv","styled","div","$desktopStart","$desktopSpan","$tabletStart","$tabletSpan","$mobileStart","$mobileSpan","css","ColDiv","React","forwardRef","ref","mobileCols","tabletCols","desktopCols","otherProps","__rest","_jsx","assign","tabletValues","mobileValues","desktopStartSpan","extractStartAndSpan","tabletStartSpan","mobileStartSpan","span","start","getStyleProps","firstVal","secondVal","startVal","endVal","Container","children","testId","stretch","StyledContainer","$stretch","$type","Section","StyledSection","section","Content","className","Layout","Main","button","$outline","$highlight","ClickableIcon","_a","focusHighlight","focusOutline","FontFamily","Regular","Semibold","Bold","TextStyleSpec","D1","fontFamily","fontSize","fontWeight","lineHeight","letterSpacing","D2","D3","D4","DBody","H1","H2","H3","H4","H5","H6","Body","BodySmall","XSmall","getThemeTextStyles","textStyleSet","textStyleScheme","textStyle","TextStyle","getFont","weight","getFontFamily","fontFamilyFromTheme","fontWeightFromTheme","values","includes","getFontWeight","getMaxLinesLineStyle","maxLines","TextStyleHelper","paragraph","attrs","inline","h1","h2","h3","h4","h5","h6","p","Hyperlink","Default","HyperlinkComponent","Small","HyperlinkBase","a","StyledExternalIcon","ExternalIcon","external","rest","_jsxs","RedirectScope","Transition","commonLinkStyle","Wrapper","$sticky","TextContainer","ContentLink","StyledIconButton","StyledIcon","CrossIcon","NBComponent","visible","dismissible","sticky","onDismiss","id","forwardedRef","isVisible","setVisible","useState","useEffect","formatId","onClick","componentName","Base","NotificationBanner","Link","NBLink","_typeof","obj","iterator","constructor","_setPrototypeOf","o","setPrototypeOf","__proto__","_construct","Parent","Class","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","instance","bind","_toConsumableArray","arr","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","minLen","n","slice","name","_unsupportedIterableToArray","_nonIterableSpread","len","i","arr2","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","_ref","fun","thisValue","x","Func","arrayForEach","unapply","forEach","arrayPop","arrayPush","stringToLowerCase","String","toLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","indexOf","stringTrim","trim","regExpTest","typeErrorCreate","_len2","_key2","thisArg","_len","_key","addToSet","transformCaseFunc","l","element","lcElement","clone","property","newObject","lookupGetter","prop","desc","console","warn","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","text","html","svg","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","getGlobal","window","purify","createDOMPurify","DOMPurify","root","version","removed","document","nodeType","isSupported","originalDocument","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","trustedTypes","ElementPrototype","cloneNode","getNextSibling","getChildNodes","getParentNode","template","createElement","content","ownerDocument","trustedTypesPolicy","createPolicy","suffix","ATTR_NAME","currentScript","hasAttribute","getAttribute","policyName","createHTML","createScriptURL","scriptUrl","_","_createTrustedTypesPolicy","emptyHTML","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","documentMode","hooks","createHTMLDocument","PARSER_MEDIA_TYPE","MUSTACHE_EXPR$1","ERB_EXPR$1","TMPLIT_EXPR$1","DATA_ATTR$1","ARIA_ATTR$1","IS_SCRIPT_OR_DATA$1","ATTR_WHITESPACE$1","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","concat","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","tagNameCheck","writable","configurable","enumerable","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","table","tbody","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_forceRemove","node","parentNode","removeChild","outerHTML","remove","_removeAttribute","attribute","getAttributeNode","removeAttribute","setAttribute","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","parseFromString","documentElement","createDocument","innerHTML","body","insertBefore","createTextNode","childNodes","_createIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","_isNode","nodeName","_executeHook","entryPoint","currentNode","hook","_sanitizeElements","elm","textContent","attributes","namespaceURI","hasChildNodes","tagName","allowedTags","firstElementChild","_basicCustomElementTest","parent","parentTagName","_checkValidNamespace","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attr","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","_attr","forceKeepAttr","getAttributeType","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","nextNode","sanitize","importedNode","oldNode","returnNode","toStaticHTML","appendChild","firstChild","nodeIterator","shadowroot","shadowrootmod","serializedHTML","doctype","setConfig","clearConfig","isValidAttribute","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","withNotificationBanner","otherAttributes","sanitizedContent","dangerouslySetInnerHTML","__html","error"],"mappings":"03BAuBA,IAEAA,EAFcC,MAAMC,QCvBhBC,ECC8B,iBAAVC,GAAsBA,GAAUA,EAAOC,SAAWA,QAAUD,EDEhFE,EAA0B,iBAARC,MAAoBA,MAAQA,KAAKF,SAAWA,QAAUE,KAK5EC,EAFWL,GAAcG,GAAYG,SAAS,cAATA,GEDrCC,EALWC,EAGOC,OCHdA,EAASD,EAGTE,EAAcR,OAAOS,UAGrBC,EAAiBF,EAAYE,eAO7BC,EAAuBH,EAAYI,SAGnCC,EAAiBN,EAASA,EAAOO,iBAAcC,EA6BnD,IAAAC,EApBA,SAAmBC,GACjB,IAAIC,EAAQR,EAAeS,KAAKF,EAAOJ,GACnCO,EAAMH,EAAMJ,GAEhB,IACEI,EAAMJ,QAAkBE,EACxB,IAAIM,GAAW,CACnB,CAAI,MAAOC,GAAK,CAEd,IAAIC,EAASZ,EAAqBQ,KAAKF,GAQvC,OAPII,IACEH,EACFD,EAAMJ,GAAkBO,SAEjBH,EAAMJ,IAGVU,CACT,ECnCIZ,EAPcX,OAAOS,UAOcG,SAavC,ICpBIY,EAAYC,EACZC,EDeJ,SAAwBT,GACtB,OAAON,EAAqBQ,KAAKF,EACnC,ECVIJ,EATSP,IASwBQ,iBAAcC,EAkBnD,IAAAY,EATA,SAAoBV,GAClB,OAAa,MAATA,OACeF,IAAVE,EAdQ,qBADL,gBAiBJJ,GAAkBA,KAAkBb,OAAOiB,GAC/CO,EAAUP,GACVS,EAAeT,EACrB,ECGA,IC5BIW,EAAatB,EACbuB,EDuBJ,SAAsBZ,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,ECEA,IAAAa,EALA,SAAkBb,GAChB,MAAuB,iBAATA,GACXY,EAAaZ,IArBF,mBAqBYW,EAAWX,EACvC,EC1BIpB,EAAUS,EACVyB,EAAWN,EAGXO,EAAe,mDACfC,EAAgB,QAuBpB,IAAAC,EAbA,SAAejB,EAAOkB,GACpB,GAAItC,EAAQoB,GACV,OAAO,EAET,IAAImB,SAAcnB,EAClB,QAAY,UAARmB,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATnB,IAAiBc,EAASd,MAGvBgB,EAAcI,KAAKpB,KAAWe,EAAaK,KAAKpB,IAC1C,MAAVkB,GAAkBlB,KAASjB,OAAOmC,GACvC,ECIA,IAAAG,EALA,SAAkBrB,GAChB,IAAImB,SAAcnB,EAClB,OAAgB,MAATA,IAA0B,UAARmB,GAA4B,YAARA,EAC/C,EC5BIR,EAAatB,EACbiC,EAAWd,EAmCf,IChCMe,EDgCNC,EAVA,SAAoBxB,GAClB,IAAKsB,EAAStB,GACZ,OAAO,EAIT,IAAIG,EAAMQ,EAAWX,GACrB,MA5BY,qBA4BLG,GA3BI,8BA2BcA,GA7BZ,0BA6B6BA,GA1B7B,kBA0BgDA,CAC/D,EClCIsB,ECAOpC,EAGW,sBDAlBqC,GACEH,EAAM,SAASI,KAAKF,GAAcA,EAAWG,MAAQH,EAAWG,KAAKC,UAAY,KACvE,iBAAmBN,EAAO,GAc1C,IAAAO,EAJA,SAAkBC,GAChB,QAASL,GAAeA,KAAcK,CACxC,EEbIC,EAHY7C,SAASK,UAGIG,SAqB7B,IAAAsC,EAZA,SAAkBF,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOC,EAAa9B,KAAK6B,EAC/B,CAAM,MAAO1B,GAAK,CACd,IACE,OAAQ0B,EAAO,EACrB,CAAM,MAAO1B,GAAK,CACf,CACD,MAAO,EACT,ECvBI6B,EAAa7C,EACb8C,EAAW3B,EACXc,EAAWc,EACXC,EAAWC,EASXC,EAAe,8BAGfC,EAAYrD,SAASK,UACrBD,EAAcR,OAAOS,UAGrBwC,EAAeQ,EAAU7C,SAGzBF,GAAiBF,EAAYE,eAG7BgD,GAAaC,OAAO,IACtBV,EAAa9B,KAAKT,IAAgBkD,QAjBjB,sBAiBuC,QACvDA,QAAQ,yDAA0D,SAAW,KCfhF,ICZIC,GFsCJ,SAAsB5C,GACpB,SAAKsB,EAAStB,IAAUmC,EAASnC,MAGnBkC,EAAWlC,GAASyC,GAAaF,GAChCnB,KAAKiB,EAASrC,GAC/B,EE3CI6C,GDOJ,SAAkB3B,EAAQ4B,GACxB,OAAiB,MAAV5B,OAAiBpB,EAAYoB,EAAO4B,EAC7C,ECMA,IAAAC,GALA,SAAmB7B,EAAQ4B,GACzB,IAAI9C,EAAQ6C,GAAS3B,EAAQ4B,GAC7B,OAAOF,GAAa5C,GAASA,OAAQF,CACvC,ECTAkD,GALgB3D,GAGaN,OAAQ,UCHjCkE,GAAe5D,GAcnB,IAAA6D,GALA,WACEC,KAAKC,SAAWH,GAAeA,GAAa,MAAQ,CAAA,EACpDE,KAAKE,KAAO,CACd,ECIA,IAAAC,GANA,SAAoBR,GAClB,IAAIxC,EAAS6C,KAAKI,IAAIT,WAAeK,KAAKC,SAASN,GAEnD,OADAK,KAAKE,MAAQ/C,EAAS,EAAI,EACnBA,CACT,ECdI2C,GAAe5D,GASfI,GAHcV,OAAOS,UAGQC,eAoBjC,IAAA+D,GATA,SAAiBV,GACf,IAAIW,EAAON,KAAKC,SAChB,GAAIH,GAAc,CAChB,IAAI3C,EAASmD,EAAKX,GAClB,MArBiB,8BAqBVxC,OAA4BR,EAAYQ,CAChD,CACD,OAAOb,GAAeS,KAAKuD,EAAMX,GAAOW,EAAKX,QAAOhD,CACtD,EC3BImD,GAAe5D,GAMfI,GAHcV,OAAOS,UAGQC,eAgBjC,ICtBIwD,GAAe5D,GAsBnB,ICtBIqE,GAAYrE,GACZsE,GAAanD,GACboD,GAAUxB,GACVyB,GFcJ,SAAiBf,GACf,IAAIW,EAAON,KAAKC,SAChB,OAAOH,QAA8BnD,IAAd2D,EAAKX,GAAsBrD,GAAeS,KAAKuD,EAAMX,EAC9E,EEhBIgB,GDWJ,SAAiBhB,EAAK9C,GACpB,IAAIyD,EAAON,KAAKC,SAGhB,OAFAD,KAAKE,MAAQF,KAAKI,IAAIT,GAAO,EAAI,EACjCW,EAAKX,GAAQG,SAA0BnD,IAAVE,EAfV,4BAekDA,EAC9DmD,IACT,ECPA,SAASY,GAAKC,GACZ,IAAIC,GAAS,EACTC,EAAoB,MAAXF,EAAkB,EAAIA,EAAQE,OAG3C,IADAf,KAAKgB,UACIF,EAAQC,GAAQ,CACvB,IAAIE,EAAQJ,EAAQC,GACpBd,KAAKkB,IAAID,EAAM,GAAIA,EAAM,GAC1B,CACH,CAGAL,GAAKvE,UAAU2E,MAAQT,GACvBK,GAAKvE,UAAkB,OAAImE,GAC3BI,GAAKvE,UAAU8E,IAAMV,GACrBG,GAAKvE,UAAU+D,IAAMM,GACrBE,GAAKvE,UAAU6E,IAAMP,GAErB,IAAAS,GAAiBR,GCnBjB,IAAAS,GALA,WACErB,KAAKC,SAAW,GAChBD,KAAKE,KAAO,CACd,EC0BA,ICpCIoB,GDgCJ,SAAYzE,EAAO0E,GACjB,OAAO1E,IAAU0E,GAAU1E,GAAUA,GAAS0E,GAAUA,CAC1D,ECdA,IAAAC,GAVA,SAAsBC,EAAO9B,GAE3B,IADA,IAAIoB,EAASU,EAAMV,OACZA,KACL,GAAIO,GAAGG,EAAMV,GAAQ,GAAIpB,GACvB,OAAOoB,EAGX,OAAQ,CACV,EClBIW,GAAexF,GAMfyF,GAHanG,MAAMa,UAGCsF,OA4BxB,IClCID,GAAexF,GAkBnB,IClBIwF,GAAexF,GAenB,ICfIwF,GAAexF,GAyBnB,ICzBI0F,GAAiB1F,GACjB2F,GJgBJ,SAAyBlC,GACvB,IAAIW,EAAON,KAAKC,SACZa,EAAQY,GAAapB,EAAMX,GAE/B,QAAImB,EAAQ,KAIRA,GADYR,EAAKS,OAAS,EAE5BT,EAAKwB,MAELH,GAAO5E,KAAKuD,EAAMQ,EAAO,KAEzBd,KAAKE,MACA,EACT,EI9BI6B,GHSJ,SAAsBpC,GACpB,IAAIW,EAAON,KAAKC,SACZa,EAAQY,GAAapB,EAAMX,GAE/B,OAAOmB,EAAQ,OAAInE,EAAY2D,EAAKQ,GAAO,EAC7C,EGbIkB,GFQJ,SAAsBrC,GACpB,OAAO+B,GAAa1B,KAAKC,SAAUN,IAAQ,CAC7C,EETIsC,GDQJ,SAAsBtC,EAAK9C,GACzB,IAAIyD,EAAON,KAAKC,SACZa,EAAQY,GAAapB,EAAMX,GAQ/B,OANImB,EAAQ,KACRd,KAAKE,KACPI,EAAK4B,KAAK,CAACvC,EAAK9C,KAEhByD,EAAKQ,GAAO,GAAKjE,EAEZmD,IACT,ECVA,SAASmC,GAAUtB,GACjB,IAAIC,GAAS,EACTC,EAAoB,MAAXF,EAAkB,EAAIA,EAAQE,OAG3C,IADAf,KAAKgB,UACIF,EAAQC,GAAQ,CACvB,IAAIE,EAAQJ,EAAQC,GACpBd,KAAKkB,IAAID,EAAM,GAAIA,EAAM,GAC1B,CACH,CAGAkB,GAAU9F,UAAU2E,MAAQY,GAC5BO,GAAU9F,UAAkB,OAAIwF,GAChCM,GAAU9F,UAAU8E,IAAMY,GAC1BI,GAAU9F,UAAU+D,IAAM4B,GAC1BG,GAAU9F,UAAU6E,IAAMe,GAE1B,IAAAG,GAAiBD,GC3BbE,GAJYnG,GACLmB,EAGe,OCJtBuD,GAAO1E,GACPiG,GAAY9E,GACZgF,GDIaA,GEQjB,ICdIC,GDOJ,SAAmBzF,GACjB,IAAImB,SAAcnB,EAClB,MAAgB,UAARmB,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVnB,EACU,OAAVA,CACP,ECKA,IAAA0F,GAPA,SAAoBC,EAAK7C,GACvB,IAAIW,EAAOkC,EAAIvC,SACf,OAAOqC,GAAU3C,GACbW,EAAmB,iBAAPX,EAAkB,SAAW,QACzCW,EAAKkC,GACX,ECfIC,GAAavG,GAiBjB,ICjBIuG,GAAavG,GAejB,ICfIuG,GAAavG,GAejB,ICfIuG,GAAavG,GAqBjB,ICrBIwG,GPWJ,WACE1C,KAAKE,KAAO,EACZF,KAAKC,SAAW,CACd0C,KAAQ,IAAI/B,GACZ4B,IAAO,IAAKH,IAAOF,IACnBS,OAAU,IAAIhC,GAElB,EOjBIiC,GJUJ,SAAwBlD,GACtB,IAAIxC,EAASsF,GAAWzC,KAAML,GAAa,OAAEA,GAE7C,OADAK,KAAKE,MAAQ/C,EAAS,EAAI,EACnBA,CACT,EIbI2F,GHSJ,SAAqBnD,GACnB,OAAO8C,GAAWzC,KAAML,GAAKwB,IAAIxB,EACnC,EGVIoD,GFQJ,SAAqBpD,GACnB,OAAO8C,GAAWzC,KAAML,GAAKS,IAAIT,EACnC,EETIqD,GDQJ,SAAqBrD,EAAK9C,GACxB,IAAIyD,EAAOmC,GAAWzC,KAAML,GACxBO,EAAOI,EAAKJ,KAIhB,OAFAI,EAAKY,IAAIvB,EAAK9C,GACdmD,KAAKE,MAAQI,EAAKJ,MAAQA,EAAO,EAAI,EAC9BF,IACT,ECNA,SAASiD,GAASpC,GAChB,IAAIC,GAAS,EACTC,EAAoB,MAAXF,EAAkB,EAAIA,EAAQE,OAG3C,IADAf,KAAKgB,UACIF,EAAQC,GAAQ,CACvB,IAAIE,EAAQJ,EAAQC,GACpBd,KAAKkB,IAAID,EAAM,GAAIA,EAAM,GAC1B,CACH,CAGAgC,GAAS5G,UAAU2E,MAAQ0B,GAC3BO,GAAS5G,UAAkB,OAAIwG,GAC/BI,GAAS5G,UAAU8E,IAAM2B,GACzBG,GAAS5G,UAAU+D,IAAM2C,GACzBE,GAAS5G,UAAU6E,IAAM8B,GAEzB,IC/BIC,GD+BaA,GCkBjB,SAASC,GAAQtE,EAAMuE,GACrB,GAAmB,mBAARvE,GAAmC,MAAZuE,GAAuC,mBAAZA,EAC3D,MAAM,IAAIC,UAhDQ,uBAkDpB,IAAIC,EAAW,WACb,IAAIC,EAAOC,UACP5D,EAAMwD,EAAWA,EAASK,MAAMxD,KAAMsD,GAAQA,EAAK,GACnDG,EAAQJ,EAASI,MAErB,GAAIA,EAAMrD,IAAIT,GACZ,OAAO8D,EAAMtC,IAAIxB,GAEnB,IAAIxC,EAASyB,EAAK4E,MAAMxD,KAAMsD,GAE9B,OADAD,EAASI,MAAQA,EAAMvC,IAAIvB,EAAKxC,IAAWsG,EACpCtG,CACX,EAEE,OADAkG,EAASI,MAAQ,IAAKP,GAAQQ,OAAST,IAChCI,CACT,CAGAH,GAAQQ,MAAQT,GAEhB,ICxEIC,GDwEaA,GC/CjB,IAAAS,GAZA,SAAuB/E,GACrB,IAAIzB,EAAS+F,GAAQtE,GAAM,SAASe,GAIlC,OAfmB,MAYf8D,EAAMvD,MACRuD,EAAMzC,QAEDrB,CACX,IAEM8D,EAAQtG,EAAOsG,MACnB,OAAOtG,CACT,ECpBIyG,GAAa,mGAGbC,GAAe,WAoBnBC,GA1BoB5H,IAea,SAAS0G,GACxC,IAAIzF,EAAS,GAOb,OAN6B,KAAzByF,EAAOmB,WAAW,IACpB5G,EAAO+E,KAAK,IAEdU,EAAOpD,QAAQoE,IAAY,SAASI,EAAOC,EAAQC,EAAOC,GACxDhH,EAAO+E,KAAKgC,EAAQC,EAAU3E,QAAQqE,GAAc,MAASI,GAAUD,EAC3E,IACS7G,CACT,ICJA,ICnBIiH,GDQJ,SAAkB3C,EAAO4C,GAKvB,IAJA,IAAIvD,GAAS,EACTC,EAAkB,MAATU,EAAgB,EAAIA,EAAMV,OACnC5D,EAAS3B,MAAMuF,KAEVD,EAAQC,GACf5D,EAAO2D,GAASuD,EAAS5C,EAAMX,GAAQA,EAAOW,GAEhD,OAAOtE,CACT,EChBI1B,GAAUwD,EACVtB,GAAWwB,EAMXmF,GATSpI,IASqBG,eAAYM,EAC1C4H,GAAiBD,GAAcA,GAAY9H,cAAWG,EA0B1D,IAAA6H,GAhBA,SAASC,EAAa5H,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIpB,GAAQoB,GAEV,OAAOuH,GAASvH,EAAO4H,GAAgB,GAEzC,GAAI9G,GAASd,GACX,OAAO0H,GAAiBA,GAAexH,KAAKF,GAAS,GAEvD,IAAIM,EAAUN,EAAQ,GACtB,MAAkB,KAAVM,GAAkB,EAAIN,IA3BjB,SA2BwC,KAAOM,CAC9D,EClCIsH,GAAevI,GA2BnB,IC3BIT,GAAUS,EACVwI,GAAQrH,EACRsH,GAAe1F,GACfzC,GDoBJ,SAAkBK,GAChB,OAAgB,MAATA,EAAgB,GAAK4H,GAAa5H,EAC3C,ECLA,ICpBIc,GAAWzB,EAoBf,ICpBI0I,GFaJ,SAAkB/H,EAAOkB,GACvB,OAAItC,GAAQoB,GACHA,EAEF6H,GAAM7H,EAAOkB,GAAU,CAAClB,GAAS8H,GAAanI,GAASK,GAChE,EEjBIgI,GDWJ,SAAehI,GACb,GAAoB,iBAATA,GAAqBc,GAASd,GACvC,OAAOA,EAET,IAAIM,EAAUN,EAAQ,GACtB,MAAkB,KAAVM,GAAkB,EAAIN,IAdjB,SAcwC,KAAOM,CAC9D,ECKA,ICvBI2H,GDWJ,SAAiB/G,EAAQgH,GAMvB,IAHA,IAAIjE,EAAQ,EACRC,GAHJgE,EAAOH,GAASG,EAAMhH,IAGJgD,OAED,MAAVhD,GAAkB+C,EAAQC,GAC/BhD,EAASA,EAAO8G,GAAME,EAAKjE,OAE7B,OAAQA,GAASA,GAASC,EAAUhD,OAASpB,CAC/C,ECWA,UALA,SAAaoB,EAAQgH,EAAMC,GACzB,IAAI7H,EAAmB,MAAVY,OAAiBpB,EAAYmI,GAAQ/G,EAAQgH,GAC1D,YAAkBpI,IAAXQ,EAAuB6H,EAAe7H,CAC/C,ICpBO,MAAMuC,GAAW,CACpBuF,EACAC,EACAC,IAEOD,EACD/D,GAAIgE,EAAkBD,IAAkB/D,GAAI8D,EAAYC,GACxDC,GAAoBF,EASjBG,GAAgB,CACzBC,EACAC,KAEA,MAAMC,EAAoBD,GAAgBD,EAAeL,aACzD,OAAO7D,GAAIkE,EAAeG,YAAaD,EAA4B,ECOvE,IAAYE,IAAZ,SAAYA,GACRA,EAAA,YAAA,cACAA,EAAA,OAAA,SACAA,EAAA,gBAAA,kBACAA,EAAA,kBAAA,oBACAA,EAAA,eAAA,gBACH,CAND,CAAYA,KAAAA,GAMX,CAAA,IC1BD,MAAMC,GAAmE,CACrEF,YAAa,CACTG,KClB8B,CAClCC,MAAO,CACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,WAEPC,QAAS,UACTC,YAAa,UACbC,UAAW,UACXC,OAAQ,CACJC,KAAM,CACF,EAAG,UACH,EAAG,UACH,EAAG,WAEPC,MAAO,CACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,YAGXC,QAAS,CACL,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,WAEPC,WAAY,CACRC,MAAO,CACHC,KAAM,UACNC,KAAM,UACNC,OAAQ,UACRC,WAAY,WAEhBC,OAAQ,CACJJ,KAAM,UACNC,KAAM,UACNC,OAAQ,UACRC,WAAY,UACZE,MAAO,WAEXC,IAAK,CACDN,KAAM,UACNC,KAAM,UACNC,OAAQ,UACRC,WAAY,WAEhBI,KAAM,CACFP,KAAM,UACNC,KAAM,WACNC,OAAQ,UACRC,WAAY,YAGpBK,OAAQ,CACJd,OAAQ,0BACRY,IAAK,2BACLG,UAAW,4BDhDXC,UEnBmC,CACvCpB,MAAO,CACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,WAEPC,QAAS,UACTC,YAAa,UACbC,UAAW,UACXC,OAAQ,CACJC,KAAM,CACF,EAAG,UACH,EAAG,UACH,EAAG,WAEPC,MAAO,CACH,EAAG,UACH,EAAG,UACH,EAAG,WACH,EAAG,UACH,EAAG,UACH,EAAG,YAGXC,QAAS,CACL,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,WAEPC,WAAY,CACRC,MAAO,CACHC,KAAM,UACNC,KAAM,UACNC,OAAQ,UACRC,WAAY,WAEhBC,OAAQ,CACJJ,KAAM,UACNC,KAAM,UACNC,OAAQ,UACRC,WAAY,UACZE,MAAO,WAEXC,IAAK,CACDN,KAAM,UACNC,KAAM,UACNC,OAAQ,UACRC,WAAY,WAEhBI,KAAM,CACFP,KAAM,UACNC,KAAM,WACNC,OAAQ,UACRC,WAAY,YAGpBK,OAAQ,CACJd,OAAQ,0BACRY,IAAK,2BACLG,UAAW,4BF/CXE,IGpB6B,CACjCrB,MAAO,CACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,WAEPC,QAAS,UACTC,YAAa,UACbC,UAAW,UACXC,OAAQ,CACJC,KAAM,CACF,EAAG,UACH,EAAG,UACH,EAAG,WAEPC,MAAO,CACH,EAAG,UACH,EAAG,UACH,EAAG,WACH,EAAG,UACH,EAAG,UACH,EAAG,YAGXC,QAAS,CACL,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,WAEPC,WAAY,CACRC,MAAO,CACHC,KAAM,UACNC,KAAM,UACNC,OAAQ,UACRC,WAAY,WAEhBC,OAAQ,CACJJ,KAAM,UACNC,KAAM,UACNC,OAAQ,UACRC,WAAY,UACZE,MAAO,WAEXC,IAAK,CACDN,KAAM,UACNC,KAAM,UACNC,OAAQ,UACRC,WAAY,WAEhBI,KAAM,CACFP,KAAM,UACNC,KAAM,WACNC,OAAQ,UACRC,WAAY,YAGpBK,OAAQ,CACJd,OAAQ,yBACRY,IAAK,2BACLG,UAAW,4BH9CXG,SIrBkC,CACtCtB,MAAO,CACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,WAEPC,QAAS,UACTC,YAAa,UACbC,UAAW,UACXC,OAAQ,CACJC,KAAM,CACF,EAAG,UACH,EAAG,UACH,EAAG,WAEPC,MAAO,CACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,YAGXC,QAAS,CACL,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,WAEPC,WAAY,CACRC,MAAO,CACHC,KAAM,UACNC,KAAM,UACNC,OAAQ,UACRC,WAAY,WAEhBC,OAAQ,CACJJ,KAAM,UACNC,KAAM,UACNC,OAAQ,UACRC,WAAY,UACZE,MAAO,WAEXC,IAAK,CACDN,KAAM,UACNC,KAAM,UACNC,OAAQ,UACRC,WAAY,WAEhBI,KAAM,CACFP,KAAM,UACNC,KAAM,WACNC,OAAQ,UACRC,WAAY,YAGpBK,OAAQ,CACJd,OAAQ,0BACRY,IAAK,yBACLG,UAAW,4BJ7CXI,MKtB+B,CACnCvB,MAAO,CACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,WAEPC,QAAS,UACTC,YAAa,UACbC,UAAW,UACXC,OAAQ,CACJC,KAAM,CACF,EAAG,UACH,EAAG,UACH,EAAG,WAEPC,MAAO,CACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,YAGXC,QAAS,CACL,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,WAEPC,WAAY,CACRC,MAAO,CACHC,KAAM,UACNC,KAAM,UACNC,OAAQ,UACRC,WAAY,WAEhBC,OAAQ,CACJJ,KAAM,UACNC,KAAM,UACNC,OAAQ,UACRC,WAAY,UACZE,MAAO,WAEXC,IAAK,CACDN,KAAM,UACNC,KAAM,UACNC,OAAQ,UACRC,WAAY,WAEhBI,KAAM,CACFP,KAAM,UACNC,KAAM,WACNC,OAAQ,UACRC,WAAY,YAGpBK,OAAQ,CACJd,OAAQ,0BACRY,IAAK,2BACLG,UAAW,6BL3Cf/B,aAAc,QAMLoC,GAAkBlC,GACnBmC,IACJ,MAAMC,EAAQD,EAAMC,MACdC,EAAqBnC,GACvBM,GACA4B,EAAM7B,GAAiB+B,cAG3B,OAAOF,EAAMG,SAAWH,EAAMG,QAAQC,MAC/BhI,GAAS6H,EAAUrC,EAAeoC,EAAMG,QAAQC,OAChDhI,GAAS6H,EAAUrC,EAAyB,EMtC9CyC,IAKFP,GAAe,WACfA,GAAe,WACfA,GAAe,WACfA,GAAe,WACfA,GAAe,WACfA,GAAe,WAEbA,GAAe,YAZfO,IAaIP,GAAe,eACjBA,GAAe,cAdjBO,IAiBEP,GAAe,kBACfA,GAAe,kBACfA,GAAe,kBACfA,GAAe,kBACfA,GAAe,kBACfA,GAAe,kBAGfA,GAAe,iBACfA,GAAe,iBACfA,GAAe,iBAGjB,CACL,EAAGA,GAAe,aAClB,EAAGA,GAAe,aAClB,EAAGA,GAAe,aAClB,EAAGA,GAAe,aAClB,EAAGA,GAAe,aAClB,EAAGA,GAAe,aAClB,EAAGA,GAAe,aAClB,EAAGA,GAAe,eAtCbO,GAwCG,CACRtB,MAAO,CACHC,KAAMc,GAAe,yBACrBb,KAAMa,GAAe,yBACrBZ,OAAQY,GAAe,2BACvBX,WAAYW,GAAe,gCAE/BV,OAAQ,CACJJ,KAAMc,GAAe,0BACrBb,KAAMa,GAAe,0BACrBZ,OAAQY,GAAe,4BACvBX,WAAYW,GAAe,gCAC3BT,MAAOS,GAAe,4BAE1BR,IAAK,CACDN,KAAMc,GAAe,uBACrBb,KAAMa,GAAe,uBACrBZ,OAAQY,GAAe,yBACvBX,WAAYW,GAAe,8BAE/BP,KAAM,CACFP,KAAMc,GAAe,wBACrBb,KAAMa,GAAe,wBACrBZ,OAAQY,GAAe,0BACvBX,WAAYW,GAAe,gCClE1BQ,IDsEGR,GAAe,iBAClBA,GAAe,cACTA,GAAe,oBCxEK,CACnCS,QAAS,IACTC,QAAS,IACTC,QAAS,IACTC,OAAQ,KACRC,SAAU,KACVC,SAAU,KACVC,UAAW,OCHTC,GAAqBpK,GAChBpC,OAAO6C,KAAK4J,IAAiBC,QAAO,CAACC,EAAa5I,KACrD,MAAM6I,EAAaH,GAAgB1I,GAKnC,OAJA4I,EACI5I,GACA,sBAAsB3B,MAASwK,OAE5BD,CAAW,GACnB,CAAe,GAMTE,GACCL,GAAkB,aCHnBM,IDICN,GAAkB,aCJPO,EAAOC,GAAwB;;MAEjDvB,IACC,MAAMwB,cACFA,EAAaC,aACbA,EAAYC,aACZA,EAAYC,YACZA,EAAWC,aACXA,EAAYC,YACZA,GACA7B,EAEJ,OAAO8B,CAAG;2BACSN,GAAiB,iBAAiBC,GAAgB;;cAE/DL,GAAoBT;+BACHe,GAAgB;sBACzBC,GAAe;;;cAGvBP,GAAoBV;+BACHkB,GAAgB;sBACzBC,GAAe;;SAE5B;GCXIE,GAASC,EAAMC,YA3BV,CAACjC,EAAoBkC,KACnC,MAAMC,WAAEA,EAAUC,WAAEA,EAAUC,YAAEA,GAA+BrC,EAAfsC,EAAeC,EAAAvC,EAAzD,CAAA,aAAA,aAAA,gBAuBN,OAAOwC,EAACnB,GAAU9M,OAAAkO,OAAA,CAAAP,IAAKA,GArBD,MAClB,MACMQ,EAAeN,GAAcD,EAC7BQ,EAAeR,EAEfS,EAAmBC,GAJHR,GAAeD,GAAcD,GAK7CW,EAAkBD,GAAoBH,GACtCK,EAAkBF,GAAoBF,GAW5C,MATe,CACXlB,aAAcmB,EAAiBI,KAC/BxB,cAAeoB,EAAiBK,MAChCpB,YAAakB,EAAgBC,KAC7BpB,aAAcmB,EAAgBE,MAC9BtB,YAAamB,EAAgBE,KAC7BtB,aAAcoB,EAAgBG,MAGrB,EAGeC,GAAqBZ,GAAc,IAQjEO,GAAuBrN,IACzB,GAAIrB,MAAMC,QAAQoB,IAAUA,EAAMkE,OAAS,EAAG,CAC1C,MAAOyJ,EAAUC,GAAa5N,EAExB6N,EAAWF,GAAYC,EAAYD,EAAWC,EAC9CE,EAASH,GAAYC,EAAYA,EAAYD,EAEnD,IAAIH,EAQJ,OALIA,EADAM,IAAWD,EACJ,EAEAC,EAASD,EAGb,CAAEJ,MAAOI,EAAUL,OAC7B,CAAM,MAAqB,iBAAVxN,EACP,CAAEyN,WAAO3N,EAAW0N,KAAMxN,GAE1B,CAAEyN,WAAO3N,EAAW0N,UAAM1N,EACpC,EC1BQiO,GAAYvB,EAAMC,YAzBb,CAACjC,EAAuBkC,KACtC,MAAMsB,SACFA,EACA,cAAeC,EAAS,YAAW9M,KACnCA,EAAO,OAAM+M,QACbA,GAAU,GAEV1D,EADGsC,EAAUC,EACbvC,EANE,CAML,WAAA,cAAA,OAAA,YAED,OACIwC,EAACmB,kBACGzB,IAAKA,EACQ,cAAAuB,QACN9M,EAAIiN,SACDF,GACNpB,YAEHkB,IAEP,IAgBAG,GAAkBrC,EAAOC,GAAe;;;;;;;MAOvCvB,GACKA,EAAM4D,SACC9B,CAAG;;cAIHA,CAAG;;;;;kBAKJV,GAAoBR;;;;MAMhCQ,GAAoBT;;;MAGpBS,GAAoBV;;;;;;MAMnBV,IACC,OAAQA,EAAM6D,OACV,IAAK,OACD,OAAO/B,CAAG;;;;;sBAKJV,GAAoBT;;;;;sBAKpBS,GAAoBV;;;;kBAK9B,IAAK,cACD,OAAOoB,CAAG;;;kBAKd,QACI,OAAOA,CAAG;;kBAGjB;ECzEIgC,GAAU9B,EAAMC,YAvBX,CAACjC,EAAqBkC,KACpC,MAAMsB,SACFA,EACA,cAAeC,EAAS,UAASC,QACjCA,GAAU,GAEV1D,EADGsC,IACHtC,EALE,CAKL,WAAA,cAAA,YAED,OACIwC,EAACuB,GACGxP,OAAAkO,OAAA,CAAAP,IAAKA,EAAG,cACKuB,EAAMG,SACTF,GACNpB,YAEHkB,IAEP,IAeAO,GAAgBzC,EAAO0C,OAAmB;;;MAGzChE,GACKA,EAAM4D,SACC9B,CAAG;kBACJV,GAAoBT;;;;;;;cASnBmB,CAAG;;;;;;;ECdTmC,GAAUjC,EAAMC,YAjCX,CAACjC,EAAqBkC,KACpC,MAAMsB,SACFA,EACA,cAAeC,EAAS,UAASS,UACjCA,EAASvN,KACTA,EAAO,OAAM+M,QACbA,GAAU,GAEV1D,EADGsC,EAAUC,EACbvC,EAPE,CAOL,WAAA,cAAA,YAAA,OAAA,YAED,OACIwC,EAACsB,kBACG5B,IAAKA,EACQ,cAAAuB,EACbS,UAAWA,EACXR,QAASA,GACLpB,EAAU,CAAAkB,SAEdhB,EAACe,gCACgB,GAAGE,cAChB9M,KAAMA,EAAI,UACF,YACR+M,QAASA,GAAO,CAAAF,SAEfA,OAGX,IC3BOW,GAAS,CAClBL,qBACAP,WACAU,GACAlC,WCDSqC,GAAO9C,EAAO+C,MAAkB;;;;;;;;;;;;;;;;;;;;;UAqBnC,EAAGC,cAA4B,SAAbA,GAAuB;;UAEzC,EAAGC,gBACDA,GACAzC,CAAG;oCACqBxB,GAAc;;;ECPrCkE,GAAgBxC,EAAMC,YAvBjB,CACdwC,EAOAvC,KAPA,IAAAsB,SACIA,EAAQkB,eACRA,GAAiB,EAAIC,aACrBA,EAAe,OAAMhO,KACrBA,EAAO,UAAQ8N,EACZnC,EAAUC,EAAAkC,EALjB,qDASA,OACIjC,EAAC4B,GAAI7P,OAAAkO,OAAA,CACDP,IAAKA,WACKyC,EAAYJ,WACVG,EACZ/N,KAAMA,GACF2L,EAEH,CAAAkB,SAAAA,IAEP,ICxBOoB,GACC,CACNC,QAAS,YACTC,SAAU,qBACVC,KAAM,iBACNlG,MAAO,mBCSTmG,GAGF,CACA7G,YAAa,CACTG,KCf0C,CAC9C2G,GAAI,CACAC,WAAYN,GAAoBG,KAChCI,SAAU,EACVC,WAAY,IACZC,WAAY,EACZC,eAAgB,MAEpBC,GAAI,CACAL,WAAYN,GAAoBG,KAChCI,SAAU,IACVC,WAAY,IACZC,WAAY,IACZC,eAAgB,MAEpBE,GAAI,CACAN,WAAYN,GAAoBG,KAChCI,SAAU,MACVC,WAAY,IACZC,WAAY,MAEhBI,GAAI,CACAP,WAAYN,GAAoBG,KAChCI,SAAU,MACVC,WAAY,IACZC,WAAY,MAEhBK,MAAO,CACHR,WAAYN,GAAoBC,QAChCM,SAAU,MACVE,WAAY,MAEhBM,GAAI,CACAT,WAAYN,GAAoBG,KAChCI,SAAU,EACVC,WAAY,IACZC,WAAY,KAEhBO,GAAI,CACAV,WAAYN,GAAoBG,KAChCI,SAAU,MACVC,WAAY,IACZC,WAAY,MAEhBQ,GAAI,CACAX,WAAYN,GAAoBG,KAChCI,SAAU,MACVC,WAAY,IACZC,WAAY,MAEhBS,GAAI,CACAZ,WAAYN,GAAoBG,KAChCI,SAAU,MACVC,WAAY,IACZC,WAAY,OAEhBU,GAAI,CACAb,WAAYN,GAAoBG,KAChCI,SAAU,EACVC,WAAY,IACZC,WAAY,IACZC,cAAe,MAEnBU,GAAI,CACAd,WAAYN,GAAoBG,KAChCI,SAAU,KACVC,WAAY,IACZC,WAAY,IACZC,cAAe,MAEnBW,KAAM,CACFf,WAAYN,GAAoBC,QAChCM,SAAU,MACVE,WAAY,OAEhBa,UAAW,CACPhB,WAAYN,GAAoBC,QAChCM,SAAU,EACVE,WAAY,IACZC,cAAe,MAEnBa,OAAQ,CACJjB,WAAYN,GAAoBC,QAChCM,SAAU,IACVE,WAAY,IACZC,cAAe,QDpEnB3H,aAAc,QAMLyI,GAAsBvI,GACvBmC,IACJ,MAAMC,EAAQD,EAAMC,MACdoG,EAAiCtI,GACnCiH,GACA/E,EAAM7B,GAAiBkI,kBAG3B,OAAOrG,EAAMG,SAAWH,EAAMG,QAAQmG,UAChClO,GAASgO,EAAcxI,EAAeoC,EAAMG,QAAQmG,WACpDlO,GAASgO,EAAcxI,EAAc,EEjCtC2I,GAGT,CACAvB,GAAI,CACAC,WAAYkB,GAAmB,iBAC/BjB,SAAUiB,GAAmB,eAC7BhB,WAAYgB,GAAmB,iBAC/Bf,WAAYe,GAAmB,iBAC/Bd,cAAec,GAAmB,qBAEtCb,GAAI,CACAL,WAAYkB,GAAmB,iBAC/BjB,SAAUiB,GAAmB,eAC7BhB,WAAYgB,GAAmB,iBAC/Bf,WAAYe,GAAmB,iBAC/Bd,cAAec,GAAmB,qBAEtCZ,GAAI,CACAN,WAAYkB,GAAmB,iBAC/BjB,SAAUiB,GAAmB,eAC7BhB,WAAYgB,GAAmB,iBAC/Bf,WAAYe,GAAmB,iBAC/Bd,cAAec,GAAmB,qBAEtCX,GAAI,CACAP,WAAYkB,GAAmB,iBAC/BjB,SAAUiB,GAAmB,eAC7BhB,WAAYgB,GAAmB,iBAC/Bf,WAAYe,GAAmB,iBAC/Bd,cAAec,GAAmB,qBAEtCV,MAAO,CACHR,WAAYkB,GAAmB,oBAC/BjB,SAAUiB,GAAmB,kBAC7BhB,WAAYgB,GAAmB,oBAC/Bf,WAAYe,GAAmB,oBAC/Bd,cAAec,GAAmB,wBAEtCT,GAAI,CACAT,WAAYkB,GAAmB,iBAC/BjB,SAAUiB,GAAmB,eAC7BhB,WAAYgB,GAAmB,iBAC/Bf,WAAYe,GAAmB,iBAC/Bd,cAAec,GAAmB,qBAEtCR,GAAI,CACAV,WAAYkB,GAAmB,iBAC/BjB,SAAUiB,GAAmB,eAC7BhB,WAAYgB,GAAmB,iBAC/Bf,WAAYe,GAAmB,iBAC/Bd,cAAec,GAAmB,qBAEtCP,GAAI,CACAX,WAAYkB,GAAmB,iBAC/BjB,SAAUiB,GAAmB,eAC7BhB,WAAYgB,GAAmB,iBAC/Bf,WAAYe,GAAmB,iBAC/Bd,cAAec,GAAmB,qBAEtCN,GAAI,CACAZ,WAAYkB,GAAmB,iBAC/BjB,SAAUiB,GAAmB,eAC7BhB,WAAYgB,GAAmB,iBAC/Bf,WAAYe,GAAmB,iBAC/Bd,cAAec,GAAmB,qBAEtCL,GAAI,CACAb,WAAYkB,GAAmB,iBAC/BjB,SAAUiB,GAAmB,eAC7BhB,WAAYgB,GAAmB,iBAC/Bf,WAAYe,GAAmB,iBAC/Bd,cAAec,GAAmB,qBAEtCJ,GAAI,CACAd,WAAYkB,GAAmB,iBAC/BjB,SAAUiB,GAAmB,eAC7BhB,WAAYgB,GAAmB,iBAC/Bf,WAAYe,GAAmB,iBAC/Bd,cAAec,GAAmB,qBAEtCH,KAAM,CACFf,WAAYkB,GAAmB,mBAC/BjB,SAAUiB,GAAmB,iBAC7BhB,WAAYgB,GAAmB,mBAC/Bf,WAAYe,GAAmB,mBAC/Bd,cAAec,GAAmB,uBAEtCF,UAAW,CACPhB,WAAYkB,GAAmB,wBAC/BjB,SAAUiB,GAAmB,sBAC7BhB,WAAYgB,GAAmB,wBAC/Bf,WAAYe,GAAmB,wBAC/Bd,cAAec,GAAmB,4BAEtCD,OAAQ,CACJjB,WAAYkB,GAAmB,qBAC/BjB,SAAUiB,GAAmB,mBAC7BhB,WAAYgB,GAAmB,qBAC/Bf,WAAYe,GAAmB,qBAC/Bd,cAAec,GAAmB,0BChGpCK,GAAWC,IACb,OAAQA,GACJ,KAAK,IACL,IAAK,OACD,OAAO9B,GAAoBG,KAC/B,KAAK,IACL,IAAK,WACD,OAAOH,GAAoBE,SAC/B,KAAK,IACL,IAAK,QACD,OAAOF,GAAoB/F,MAC/B,KAAK,IACL,IAAK,UACD,OAAO+F,GAAoBC,QAC/B,QACI,MAAO,GACd,EAGC8B,GAAgB,CAClBhQ,EACA+P,IAEQ1G,UACJ,MAAM4G,EAAsBJ,GAAU7P,GAAMuO,WAAWlF,GACjD6G,EAAsBL,GAAU7P,GAAMyO,WACxCpF,GAGJ,OAAIzL,OAAOuS,OAAOlC,IAAqBmC,SAASH,GACrC9E,CAAG;+BACS2E,GAAQC,IACvBD,GAAQI,IACRD;;cAKD9E,CAAG;2BACS8E;2BAC8C,QAA9CnC,EAACuC,GAAcN,IAAWG,SAAoB,IAAApC,EAAAA,EAC7D;SACH,EAIHuC,GAAiBN,IACnB,OAAQA,GACJ,KAAK,IACL,IAAK,QACD,OAAO,IACX,KAAK,IACL,IAAK,UACD,OAAO,IACX,KAAK,IACL,IAAK,WACD,OAAO,IACX,KAAK,IACL,IAAK,OACD,OAAO,IACX,KAAK,IACL,IAAK,QACD,OAAO,IACX,QACI,MAAO,GACd,EAMCO,GAAwBC,IAC1B,GAAIA,EAAW,EACX,OAAOpF,CAAG;;;kCAGgBoF;0BACRA;;SAGrB,EAuDQC,GACTR,GADSQ,GApDQ,CACjBxQ,EACA+P,EACAU,GAAY,IAEJpH,IACJ,MAAMqH,EAAQb,GAAU7P,GAClBwO,EAAWkC,EAAMlC,SAASnF,GAUhC,OAAO8B,CAAG;cACJ6E,GAAchQ,EAAM+P;yBACTvB;2BACEkC,EAAMhC;8BACHgC,EAAM/B,cAActF,IAAU;cATzC8B,CAAG;iCACWqD,GAFKiC,EAAY,KAAO;;SAYhD,EA6BID,GAzBW,CACpBG,GAAS,EACTF,GAAY,EACZF,OAA+B5R,IAE3B8R,EACOtF,CAAG;;cAEJmF,GAAqBC;UAEpBI,EACAxF,CAAG;;UAIHA,CAAG;;cAEJmF,GAAqBC;UCjI7B,IAAWjI,IAAjB,SAAiBA,GACAA,EAAAgG,GAAK3D,EAAOiG,EAAa;UAC/BvH,GACQ8B,CAAG;kBACJqF,GACE,KACAnH,EAAM0G,OACN1G,EAAMoH;yBAED9G,GAAc;kBACrB6G,GACEnH,EAAMsH,OACNtH,EAAMoH,UACNpH,EAAMkH;;MAMTjI,EAAAsG,GAAKjE,EAAOiG,EAAa;UAC/BvH,GACQ8B,CAAG;kBACJqF,GACE,KACAnH,EAAM0G,OACN1G,EAAMoH;yBAED9G,GAAc;kBACrB6G,GACEnH,EAAMsH,OACNtH,EAAMoH,UACNpH,EAAMkH;;MAMTjI,EAAAuG,GAAKlE,EAAOiG,EAAa;UAC/BvH,GACQ8B,CAAG;kBACJqF,GACE,KACAnH,EAAM0G,OACN1G,EAAMoH;yBAED9G,GAAc;kBACrB6G,GACEnH,EAAMsH,OACNtH,EAAMoH,UACNpH,EAAMkH;;MAMTjI,EAAAwG,GAAKnE,EAAOiG,EAAa;UAC/BvH,GACQ8B,CAAG;kBACJqF,GACE,KACAnH,EAAM0G,OACN1G,EAAMoH;yBAED9G,GAAc;kBACrB6G,GACEnH,EAAMsH,OACNtH,EAAMoH,UACNpH,EAAMkH;;MAMTjI,EAAAyG,MAAQpE,EAAOiG,EAAa;UAClCvH,GACQ8B,CAAG;kBACJqF,GACE,QACAnH,EAAM0G,OACN1G,EAAMoH;yBAED9G,GAAc;kBACrB6G,GACEnH,EAAMsH,OACNtH,EAAMoH,UACNpH,EAAMkH;;MAMTjI,EAAA0G,GAAKrE,EAAOiG,EAAa;UAC/BvH,GACQ8B,CAAG;kBACJqF,GACE,KACAnH,EAAM0G,OACN1G,EAAMoH;yBAED9G,GAAc;kBACrB6G,GACEnH,EAAMsH,OACNtH,EAAMoH,UACNpH,EAAMkH;;MAMTjI,EAAA2G,GAAKtE,EAAOkG,EAAa;UAC/BxH,GACQ8B,CAAG;kBACJqF,GACE,KACAnH,EAAM0G,OACN1G,EAAMoH;yBAED9G,GAAc;kBACrB6G,GACEnH,EAAMsH,OACNtH,EAAMoH,UACNpH,EAAMkH;;MAMTjI,EAAA4G,GAAKvE,EAAOmG,EAAa;UAC/BzH,GACQ8B,CAAG;kBACJqF,GACE,KACAnH,EAAM0G,OACN1G,EAAMoH;yBAED9G,GAAc;kBACrB6G,GACEnH,EAAMsH,OACNtH,EAAMoH,UACNpH,EAAMkH;;MAMTjI,EAAA6G,GAAKxE,EAAOoG,EAAa;UAC/B1H,GACQ8B,CAAG;kBACJqF,GACE,KACAnH,EAAM0G,OACN1G,EAAMoH;yBAED9G,GAAc;kBACrB6G,GACEnH,EAAMsH,OACNtH,EAAMoH,UACNpH,EAAMkH;;MAMTjI,EAAA8G,GAAKzE,EAAOqG,EAAa;UAC/B3H,GACQ8B,CAAG;kBACJqF,GACE,KACAnH,EAAM0G,OACN1G,EAAMoH;yBAED9G,GAAc;kBACrB6G,GACEnH,EAAMsH,OACNtH,EAAMoH,UACNpH,EAAMkH;;MAMTjI,EAAA+G,GAAK1E,EAAOsG,EAAa;UAC/B5H,GACQ8B,CAAG;kBACJqF,GACE,KACAnH,EAAM0G,OACN1G,EAAMoH;yBAED9G,GAAc;kBACrB6G,GACEnH,EAAMsH,OACNtH,EAAMoH,UACNpH,EAAMkH;;MAMTjI,EAAAgH,KAAO3E,EAAOuG,CAAY;UAChC7H,GACQ8B,CAAG;kBACJqF,GACE,OACAnH,EAAM0G,OACN1G,EAAMoH;yBAED9G,GAAc;kBACrB6G,GACEnH,EAAMsH,OACNtH,EAAMoH,UACNpH,EAAMkH;;MAMTjI,EAAAiH,UAAY5E,EAAOuG,CAAY;UACrC7H,GACQ8B,CAAG;kBACJqF,GACE,YACAnH,EAAM0G,OACN1G,EAAMoH;yBAED9G,GAAc;kBACrB6G,GACEnH,EAAMsH,OACNtH,EAAMoH,UACNpH,EAAMkH;;MAMTjI,EAAAkH,OAAS7E,EAAO0B,IAAe;UACrChD,GACQ8B,CAAG;kBACJqF,GACE,SACAnH,EAAM0G,OACN1G,EAAMoH;yBAED9G,GAAc;kBACrB6G,GACEnH,EAAMsH,OACNtH,EAAMoH,UACNpH,EAAMkH;;MAMTjI,EAAA6I,UAAY,CACrBC,QAAU/H,GACNgI,GAAkBzT,OAAAkO,OAAAlO,OAAAkO,OAAA,CAAA,EAAMzC,GAAK,CAAEuG,UAAW,UAC9C0B,MAAQjI,GACJgI,GAAkBzT,OAAAkO,OAAAlO,OAAAkO,OAAA,CAAA,EAAMzC,GAAK,CAAEuG,UAAW,eAErD,CAnQD,CAAiBtH,KAAAA,GAmQhB,CAAA,IAMD,MAAMiJ,GAAgB5G,EAAO6G,CAAqB;MAC3CnI,GACQ8B,CAAG;cACJqF,GAA6BnH,EAAMuG,UAAWvG,EAAM0G;qBAC7CpG;;;;;;yBAMIA;;;6BAGIA;;;;EAOvB8H,GAAqB9G,EAAO+G,EAAa;;;;;EAOzCL,GAAsBvD,QAAA6D,SACxBA,GAAW,EAAK9E,SAChBA,KACG+E,EAHqBhG,EAAAkC,EAAA,CAAA,WAAA,aAKxB,OACI+D,EAACN,GAAa3T,OAAAkO,OAAA,CAAA,EAAK8F,EACd,CAAA/E,SAAA,CAAAA,EACA8E,GAAY9F,EAAC4F,GAAqB,CAAA,MAEzC,ECxQN,IAAYK,IAAZ,SAAYA,GACRA,EAAAA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,OAAA,GAAA,QACH,CAHD,CAAYA,KAAAA,GAGX,CAAA,IC/CD,MAIaC,GAJA,8CCmBPC,GAAkB7G,CAAG;aACdxB,GAAiBjB,OAAOH;;;iBAGpBoB,GAAiBjB,OAAOH;;;;;;;iBAOxBoB,GAAiBjB,OAAOH;;qBAEpBoB,GAAiBjB,OAAOH;;;EAKhC0J,GAAUtH,EAAOC,GAAsB;gBACnCvB,GAAWA,EAAM6I,QAAU,SAAW;;;;kBAIrCH;kBACApI,GAAc;;EAInBiD,GAAYjC,EAAO6C,GAAOF,QAAQ;;EAIlC6E,GAAgBxH,EAAOC,GAAG;;;;EAM1B0C,GAAU3C,EAAOC,GAAG;;;;MAI3B4F,GAA6B,OAAQ;aAC9B7G,GAAc;;;;;;;UAOjB6G,GAA8B,OAAQ;iBAC/B7G,GAAc;;;;UAIrB6G,GAA6B,OAAQ;UACrCwB;;EAIGI,GAAczH,EAAOrC,GAAK6I,UAAUC,QAAQ;;;MAGnDY;EAGOK,GAAmB1H,EAAOkD,GAAc;;;;EAMxCyE,GAAa3H,EAAO4H,EAAU;;;aAG9B5I,GAAc;EC/Ed6I,GAAe1E,QAAAjB,SACxBA,EAAQ4F,QACRA,GAAU,EAAIC,YACdA,GAAc,EAAIC,OAClBA,GAAS,EAAIC,UACbA,EAASC,GACTA,EAAEC,aACFA,KACGnH,EARqBC,EAAAkC,EAAA,CAAA,WAAA,UAAA,cAAA,SAAA,YAAA,KAAA,iBAaxB,MAAMhB,EAASnB,EAAW,gBAEnBoH,EAAWC,GAAcC,EAAkBR,GAKlDS,GAAU,KACNF,EAAWP,EAAQ,GACpB,CAACA,IAcJ,OAAKM,EAGDlH,EAACoG,GAAQrU,OAAAkO,OAAA,CAAAP,IAAKuH,EAAYZ,QAAWS,GAAYhH,EAC7C,CAAAkB,SAAAgF,EAACjF,GAAShP,OAAAkO,OAAA,CAAC+G,GAAIM,GAAS,YAAaN,IACjC,CAAAhG,SAAA,CAAAhB,EAACsG,GACG,CAAAtF,SAAAhB,EAACyB,GAAO1P,OAAAkO,OAAA,CAAA,cAAcqH,GAAS,eAAgBrG,cAC1CD,OAGR6F,GACG7G,EAACwG,kBACGe,QArBE,KAClBJ,GAAW,GAEPN,GAAeE,GAAWA,GAAW,EAmBzBC,GAAIM,GAAS,iBAAkBN,GAAG,cACrBM,GAAS,iBAAkBrG,GACxCiB,gBAAgB,GAEhB,CAAAlB,SAAAhB,EAACyG,GAAa,CAAA,aAjBX,IAsBrB,EAgBAa,GAAW,CAACE,EAAuBR,EAAK,YACnC,GAAGA,KAAMQ,IAMdC,GAAOjI,EAAMC,YAjBD,CACdjC,EACAkC,IAEOM,EAAC2G,GAAgB5U,OAAAkO,OAAA,CAAA,EAAAzC,GAAOyJ,aAAcvH,OAcpCgI,GAAqB3V,OAAOkO,OAAOwH,GAAM,CAClDE,KAAMC;;AChGV,SAASC,GAAQC,GAGf,OAAOD,GAAU,mBAAqBvV,QAAU,iBAAmBA,OAAOyV,SAAW,SAAUD,GAC7F,cAAcA,CACf,EAAG,SAAUA,GACZ,OAAOA,GAAO,mBAAqBxV,QAAUwV,EAAIE,cAAgB1V,QAAUwV,IAAQxV,OAAOE,UAAY,gBAAkBsV,CAC5H,EAAKD,GAAQC,EACb,CAEA,SAASG,GAAgBC,EAAG7C,GAM1B,OALA4C,GAAkBlW,OAAOoW,gBAAkB,SAAyBD,EAAG7C,GAErE,OADA6C,EAAEE,UAAY/C,EACP6C,CACX,EAESD,GAAgBC,EAAG7C,EAC5B,CAeA,SAASgD,GAAWC,EAAQ7O,EAAM8O,GAchC,OAVEF,GAjBJ,WACE,GAAuB,oBAAZG,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EAExC,IAEE,OADAC,QAAQpW,UAAUqW,QAAQ3V,KAAKsV,QAAQC,UAAUG,QAAS,IAAI,WAAc,MACrE,CACR,CAAC,MAAOvV,GACP,OAAO,CACR,CACH,CAGMyV,GACWN,QAAQC,UAER,SAAoBH,EAAQ7O,EAAM8O,GAC7C,IAAI5C,EAAI,CAAC,MACTA,EAAEtN,KAAKsB,MAAMgM,EAAGlM,GAChB,IACIsP,EAAW,IADG5W,SAAS6W,KAAKrP,MAAM2O,EAAQ3C,IAG9C,OADI4C,GAAON,GAAgBc,EAAUR,EAAM/V,WACpCuW,CACb,EAGSV,GAAW1O,MAAM,KAAMD,UAChC,CAEA,SAASuP,GAAmBC,GAC1B,OAGF,SAA4BA,GAC1B,GAAIvX,MAAMC,QAAQsX,GAAM,OAAOC,GAAkBD,EACnD,CALSE,CAAmBF,IAO5B,SAA0BG,GACxB,GAAsB,oBAAX/W,QAAmD,MAAzB+W,EAAK/W,OAAOyV,WAA2C,MAAtBsB,EAAK,cAAuB,OAAO1X,MAAM2X,KAAKD,EACtH,CAToCE,CAAiBL,IAWrD,SAAqChB,EAAGsB,GACtC,IAAKtB,EAAG,OACR,GAAiB,iBAANA,EAAgB,OAAOiB,GAAkBjB,EAAGsB,GACvD,IAAIC,EAAI1X,OAAOS,UAAUG,SAASO,KAAKgV,GAAGwB,MAAM,GAAI,GAC1C,WAAND,GAAkBvB,EAAEF,cAAayB,EAAIvB,EAAEF,YAAY2B,MACvD,GAAU,QAANF,GAAqB,QAANA,EAAa,OAAO9X,MAAM2X,KAAKpB,GAClD,GAAU,cAANuB,GAAqB,2CAA2CrV,KAAKqV,GAAI,OAAON,GAAkBjB,EAAGsB,EAC3G,CAlB6DI,CAA4BV,IA4BzF,WACE,MAAM,IAAI3P,UAAU,uIACtB,CA9BiGsQ,EACjG,CAmBA,SAASV,GAAkBD,EAAKY,IACnB,MAAPA,GAAeA,EAAMZ,EAAIhS,UAAQ4S,EAAMZ,EAAIhS,QAE/C,IAAK,IAAI6S,EAAI,EAAGC,EAAO,IAAIrY,MAAMmY,GAAMC,EAAID,EAAKC,IAAKC,EAAKD,GAAKb,EAAIa,GAEnE,OAAOC,CACT,CAMA,IAAIvX,GAAiBV,OAAOU,eACxB0V,GAAiBpW,OAAOoW,eACxB8B,GAAWlY,OAAOkY,SAClBC,GAAiBnY,OAAOmY,eACxBC,GAA2BpY,OAAOoY,yBAClCC,GAASrY,OAAOqY,OAChBC,GAAOtY,OAAOsY,KACdC,GAASvY,OAAOuY,OAEhBC,GAA0B,oBAAZ/B,SAA2BA,QACzC7O,GAAQ4Q,GAAK5Q,MACb8O,GAAY8B,GAAK9B,UAEhB9O,KACHA,GAAQ,SAAe6Q,EAAKC,EAAWhR,GACrC,OAAO+Q,EAAI7Q,MAAM8Q,EAAWhR,EAChC,GAGK2Q,KACHA,GAAS,SAAgBM,GACvB,OAAOA,CACX,GAGKL,KACHA,GAAO,SAAcK,GACnB,OAAOA,CACX,GAGKjC,KACHA,GAAY,SAAmBkC,EAAMlR,GACnC,OAAO4O,GAAWsC,EAAM1B,GAAmBxP,GAC/C,GAGA,IAoBqB1E,GApBjB6V,GAAeC,GAAQlZ,MAAMa,UAAUsY,SACvCC,GAAWF,GAAQlZ,MAAMa,UAAUyF,KACnC+S,GAAYH,GAAQlZ,MAAMa,UAAU6F,MACpC4S,GAAoBJ,GAAQK,OAAO1Y,UAAU2Y,aAC7CC,GAAiBP,GAAQK,OAAO1Y,UAAUG,UAC1C0Y,GAAcR,GAAQK,OAAO1Y,UAAU2H,OACvCmR,GAAgBT,GAAQK,OAAO1Y,UAAUmD,SACzC4V,GAAgBV,GAAQK,OAAO1Y,UAAUgZ,SACzCC,GAAaZ,GAAQK,OAAO1Y,UAAUkZ,MACtCC,GAAad,GAAQnV,OAAOlD,UAAU4B,MACtCwX,IAUiB7W,GAVawE,UAWzB,WACL,IAAK,IAAIsS,EAAQnS,UAAUxC,OAAQuC,EAAO,IAAI9H,MAAMka,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFrS,EAAKqS,GAASpS,UAAUoS,GAG1B,OAAOrD,GAAU1T,GAAM0E,EAC3B,GAhBA,SAASoR,GAAQ9V,GACf,OAAO,SAAUgX,GACf,IAAK,IAAIC,EAAOtS,UAAUxC,OAAQuC,EAAO,IAAI9H,MAAMqa,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClGxS,EAAKwS,EAAO,GAAKvS,UAAUuS,GAG7B,OAAOtS,GAAM5E,EAAMgX,EAAStS,EAChC,CACA,CAYA,SAASyS,GAAS7U,EAAKO,EAAOuU,GAC5BA,EAAoBA,GAAwClB,GAExD9C,IAIFA,GAAe9Q,EAAK,MAKtB,IAFA,IAAI+U,EAAIxU,EAAMV,OAEPkV,KAAK,CACV,IAAIC,EAAUzU,EAAMwU,GAEpB,GAAuB,iBAAZC,EAAsB,CAC/B,IAAIC,EAAYH,EAAkBE,GAE9BC,IAAcD,IAEXpC,GAASrS,KACZA,EAAMwU,GAAKE,GAGbD,EAAUC,EAEb,CAEDjV,EAAIgV,IAAW,CAChB,CAED,OAAOhV,CACT,CAGA,SAASkV,GAAMrY,GACb,IACIsY,EADAC,EAAYnC,GAAO,MAGvB,IAAKkC,KAAYtY,GACmC,IAA9CyF,GAAMlH,GAAgByB,EAAQ,CAACsY,MACjCC,EAAUD,GAAYtY,EAAOsY,IAIjC,OAAOC,CACT,CAMA,SAASC,GAAaxY,EAAQyY,GAC5B,KAAkB,OAAXzY,GAAiB,CACtB,IAAI0Y,EAAOzC,GAAyBjW,EAAQyY,GAE5C,GAAIC,EAAM,CACR,GAAIA,EAAKtV,IACP,OAAOuT,GAAQ+B,EAAKtV,KAGtB,GAA0B,mBAAfsV,EAAK5Z,MACd,OAAO6X,GAAQ+B,EAAK5Z,MAEvB,CAEDkB,EAASgW,GAAehW,EACzB,CAOD,OALA,SAAuBmY,GAErB,OADAQ,QAAQC,KAAK,qBAAsBT,GAC5B,IACR,CAGH,CAEA,IAAIU,GAAS3C,GAAO,CAAC,IAAK,OAAQ,UAAW,UAAW,OAAQ,UAAW,QAAS,QAAS,IAAK,MAAO,MAAO,MAAO,QAAS,aAAc,OAAQ,KAAM,SAAU,SAAU,UAAW,SAAU,OAAQ,OAAQ,MAAO,WAAY,UAAW,OAAQ,WAAY,KAAM,YAAa,MAAO,UAAW,MAAO,SAAU,MAAO,MAAO,KAAM,KAAM,UAAW,KAAM,WAAY,aAAc,SAAU,OAAQ,SAAU,OAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAAQ,SAAU,SAAU,KAAM,OAAQ,IAAK,MAAO,QAAS,MAAO,MAAO,QAAS,SAAU,KAAM,OAAQ,MAAO,OAAQ,UAAW,OAAQ,WAAY,QAAS,MAAO,OAAQ,KAAM,WAAY,SAAU,SAAU,IAAK,UAAW,MAAO,WAAY,IAAK,KAAM,KAAM,OAAQ,IAAK,OAAQ,UAAW,SAAU,SAAU,QAAS,SAAU,SAAU,OAAQ,SAAU,SAAU,QAAS,MAAO,UAAW,MAAO,QAAS,QAAS,KAAM,WAAY,WAAY,QAAS,KAAM,QAAS,OAAQ,KAAM,QAAS,KAAM,IAAK,KAAM,MAAO,QAAS,QAEn+B4C,GAAQ5C,GAAO,CAAC,MAAO,IAAK,WAAY,cAAe,eAAgB,eAAgB,gBAAiB,mBAAoB,SAAU,WAAY,OAAQ,OAAQ,UAAW,SAAU,OAAQ,IAAK,QAAS,WAAY,QAAS,QAAS,OAAQ,iBAAkB,SAAU,OAAQ,WAAY,QAAS,OAAQ,UAAW,UAAW,WAAY,iBAAkB,OAAQ,OAAQ,QAAS,SAAU,SAAU,OAAQ,WAAY,QAAS,OAAQ,QAAS,OAAQ,UAC3c6C,GAAa7C,GAAO,CAAC,UAAW,gBAAiB,sBAAuB,cAAe,mBAAoB,oBAAqB,oBAAqB,iBAAkB,UAAW,UAAW,UAAW,UAAW,UAAW,iBAAkB,UAAW,UAAW,cAAe,eAAgB,WAAY,eAAgB,qBAAsB,cAAe,SAAU,iBAKhX8C,GAAgB9C,GAAO,CAAC,UAAW,gBAAiB,SAAU,UAAW,eAAgB,YAAa,mBAAoB,iBAAkB,gBAAiB,gBAAiB,gBAAiB,QAAS,YAAa,OAAQ,eAAgB,YAAa,UAAW,gBAAiB,SAAU,MAAO,aAAc,UAAW,QAChU+C,GAAW/C,GAAO,CAAC,OAAQ,WAAY,SAAU,UAAW,QAAS,SAAU,KAAM,aAAc,gBAAiB,KAAM,KAAM,QAAS,UAAW,WAAY,QAAS,OAAQ,KAAM,SAAU,QAAS,SAAU,OAAQ,OAAQ,UAAW,SAAU,MAAO,QAAS,MAAO,SAAU,eAG1RgD,GAAmBhD,GAAO,CAAC,UAAW,cAAe,aAAc,WAAY,YAAa,UAAW,UAAW,SAAU,SAAU,QAAS,YAAa,aAAc,iBAAkB,cAAe,SAC3MiD,GAAOjD,GAAO,CAAC,UAEfkD,GAAOlD,GAAO,CAAC,SAAU,SAAU,QAAS,MAAO,iBAAkB,eAAgB,uBAAwB,WAAY,aAAc,UAAW,SAAU,UAAW,cAAe,cAAe,UAAW,OAAQ,QAAS,QAAS,QAAS,OAAQ,UAAW,WAAY,eAAgB,SAAU,cAAe,WAAY,WAAY,UAAW,MAAO,WAAY,0BAA2B,wBAAyB,WAAY,YAAa,UAAW,eAAgB,OAAQ,MAAO,UAAW,SAAU,SAAU,OAAQ,OAAQ,WAAY,KAAM,YAAa,YAAa,QAAS,OAAQ,QAAS,OAAQ,OAAQ,UAAW,OAAQ,MAAO,MAAO,YAAa,QAAS,SAAU,MAAO,YAAa,WAAY,QAAS,OAAQ,QAAS,UAAW,aAAc,SAAU,OAAQ,UAAW,UAAW,cAAe,cAAe,SAAU,UAAW,UAAW,aAAc,WAAY,MAAO,WAAY,MAAO,WAAY,OAAQ,OAAQ,UAAW,aAAc,QAAS,WAAY,QAAS,OAAQ,QAAS,OAAQ,UAAW,QAAS,MAAO,SAAU,OAAQ,QAAS,UAAW,WAAY,QAAS,YAAa,OAAQ,SAAU,SAAU,QAAS,QAAS,QAAS,SACjqCmD,GAAMnD,GAAO,CAAC,gBAAiB,aAAc,WAAY,qBAAsB,SAAU,gBAAiB,gBAAiB,UAAW,gBAAiB,iBAAkB,QAAS,OAAQ,KAAM,QAAS,OAAQ,gBAAiB,YAAa,YAAa,QAAS,sBAAuB,8BAA+B,gBAAiB,kBAAmB,KAAM,KAAM,IAAK,KAAM,KAAM,kBAAmB,YAAa,UAAW,UAAW,MAAO,WAAY,YAAa,MAAO,OAAQ,eAAgB,YAAa,SAAU,cAAe,cAAe,gBAAiB,cAAe,YAAa,mBAAoB,eAAgB,aAAc,eAAgB,cAAe,KAAM,KAAM,KAAM,KAAM,aAAc,WAAY,gBAAiB,oBAAqB,SAAU,OAAQ,KAAM,kBAAmB,KAAM,MAAO,IAAK,KAAM,KAAM,KAAM,KAAM,UAAW,YAAa,aAAc,WAAY,OAAQ,eAAgB,iBAAkB,eAAgB,mBAAoB,iBAAkB,QAAS,aAAc,aAAc,eAAgB,eAAgB,cAAe,cAAe,mBAAoB,YAAa,MAAO,OAAQ,QAAS,SAAU,OAAQ,MAAO,OAAQ,aAAc,SAAU,WAAY,UAAW,QAAS,SAAU,cAAe,SAAU,WAAY,cAAe,OAAQ,aAAc,sBAAuB,mBAAoB,eAAgB,SAAU,gBAAiB,sBAAuB,iBAAkB,IAAK,KAAM,KAAM,SAAU,OAAQ,OAAQ,cAAe,YAAa,UAAW,SAAU,SAAU,QAAS,OAAQ,kBAAmB,mBAAoB,mBAAoB,eAAgB,cAAe,eAAgB,cAAe,aAAc,eAAgB,mBAAoB,oBAAqB,iBAAkB,kBAAmB,oBAAqB,iBAAkB,SAAU,eAAgB,QAAS,eAAgB,iBAAkB,WAAY,UAAW,UAAW,YAAa,mBAAoB,cAAe,kBAAmB,iBAAkB,aAAc,OAAQ,KAAM,KAAM,UAAW,SAAU,UAAW,aAAc,UAAW,aAAc,gBAAiB,gBAAiB,QAAS,eAAgB,OAAQ,eAAgB,mBAAoB,mBAAoB,IAAK,KAAM,KAAM,QAAS,IAAK,KAAM,KAAM,IAAK,eAC9vEoD,GAASpD,GAAO,CAAC,SAAU,cAAe,QAAS,WAAY,QAAS,eAAgB,cAAe,aAAc,aAAc,QAAS,MAAO,UAAW,eAAgB,WAAY,QAAS,QAAS,SAAU,OAAQ,KAAM,UAAW,SAAU,gBAAiB,SAAU,SAAU,iBAAkB,YAAa,WAAY,cAAe,UAAW,UAAW,gBAAiB,WAAY,WAAY,OAAQ,WAAY,WAAY,aAAc,UAAW,SAAU,SAAU,cAAe,gBAAiB,uBAAwB,YAAa,YAAa,aAAc,WAAY,iBAAkB,iBAAkB,YAAa,UAAW,QAAS,UACrpBqD,GAAMrD,GAAO,CAAC,aAAc,SAAU,cAAe,YAAa,gBAElEsD,GAAgBrD,GAAK,6BAErBsD,GAAWtD,GAAK,yBAChBuD,GAAcvD,GAAK,iBACnBwD,GAAYxD,GAAK,8BAEjByD,GAAYzD,GAAK,kBAEjB0D,GAAiB1D,GAAK,yFAEtB2D,GAAoB3D,GAAK,yBACzB4D,GAAkB5D,GAAK,+DAEvB6D,GAAe7D,GAAK,WAEpB8D,GAAY,WACd,MAAyB,oBAAXC,OAAyB,KAAOA,MAChD,EAm5CA,IAAIC,GAr2CJ,SAASC,IACP,IAAIF,EAAS1U,UAAUxC,OAAS,QAAsBpE,IAAjB4G,UAAU,GAAmBA,UAAU,GAAKyU,KAE7EI,EAAY,SAAmBC,GACjC,OAAOF,EAAgBE,EAC3B,EAeE,GARAD,EAAUE,QAAU,QAMpBF,EAAUG,QAAU,IAEfN,IAAWA,EAAOO,UAAyC,IAA7BP,EAAOO,SAASC,SAIjD,OADAL,EAAUM,aAAc,EACjBN,EAGT,IAAIO,EAAmBV,EAAOO,SAC1BA,EAAWP,EAAOO,SAClBI,EAAmBX,EAAOW,iBAC1BC,EAAsBZ,EAAOY,oBAC7BC,EAAOb,EAAOa,KACdC,EAAUd,EAAOc,QACjBC,EAAaf,EAAOe,WACpBC,EAAuBhB,EAAOiB,aAC9BA,OAAwC,IAAzBD,EAAkChB,EAAOiB,cAAgBjB,EAAOkB,gBAAkBF,EACjGG,EAAkBnB,EAAOmB,gBACzBC,EAAYpB,EAAOoB,UACnBC,EAAerB,EAAOqB,aACtBC,EAAmBR,EAAQ1c,UAC3Bmd,EAAYjD,GAAagD,EAAkB,aAC3CE,EAAiBlD,GAAagD,EAAkB,eAChDG,EAAgBnD,GAAagD,EAAkB,cAC/CI,EAAgBpD,GAAagD,EAAkB,cAOnD,GAAmC,mBAAxBV,EAAoC,CAC7C,IAAIe,EAAWpB,EAASqB,cAAc,YAElCD,EAASE,SAAWF,EAASE,QAAQC,gBACvCvB,EAAWoB,EAASE,QAAQC,cAE/B,CAED,IAAIC,EA7F0B,SAAmCV,EAAcd,GAC/E,GAA8B,WAA1B9G,GAAQ4H,IAAmE,mBAA9BA,EAAaW,aAC5D,OAAO,KAMT,IAAIC,EAAS,KACTC,EAAY,wBAEZ3B,EAAS4B,eAAiB5B,EAAS4B,cAAcC,aAAaF,KAChED,EAAS1B,EAAS4B,cAAcE,aAAaH,IAG/C,IAAII,EAAa,aAAeL,EAAS,IAAMA,EAAS,IAExD,IACE,OAAOZ,EAAaW,aAAaM,EAAY,CAC3CC,WAAY,SAAoBrD,GAC9B,OAAOA,CACR,EACDsD,gBAAiB,SAAyBC,GACxC,OAAOA,CACR,GAEJ,CAAC,MAAOC,GAKP,OADAjE,QAAQC,KAAK,uBAAyB4D,EAAa,0BAC5C,IACR,CACH,CA4D2BK,CAA0BtB,EAAcX,GAE7DkC,EAAYb,EAAqBA,EAAmBQ,WAAW,IAAM,GACrEM,EAAYtC,EACZuC,EAAiBD,EAAUC,eAC3BC,EAAqBF,EAAUE,mBAC/BC,EAAyBH,EAAUG,uBACnCC,EAAuBJ,EAAUI,qBACjCC,EAAaxC,EAAiBwC,WAC9BC,EAAe,CAAA,EAEnB,IACEA,EAAehF,GAAMoC,GAAU4C,aAAe5C,EAAS4C,aAAe,EAC1E,CAAI,MAAOT,GAAK,CAEd,IAAIU,EAAQ,CAAA,EAKZjD,EAAUM,YAAuC,mBAAlBiB,GAAgCoB,QAA+D,IAAtCA,EAAeO,oBAAuD,IAAjBF,EAC7I,IAwJIG,EAGAvF,EA3JAwF,EAAkBjE,GAClBkE,EAAajE,GACbkE,EAAgBjE,GAChBkE,EAAcjE,GACdkE,EAAcjE,GACdkE,EAAsBhE,GACtBiE,EAAoBhE,GACpBiE,EAAmBnE,GAQnBoE,EAAe,KACfC,EAAuBlG,GAAS,GAAI,GAAGmG,OAAOpJ,GAAmB8D,IAAS9D,GAAmB+D,IAAQ/D,GAAmBgE,IAAahE,GAAmBkE,IAAWlE,GAAmBoE,MAGtLiF,EAAe,KACfC,EAAuBrG,GAAS,CAAE,EAAE,GAAGmG,OAAOpJ,GAAmBqE,IAAOrE,GAAmBsE,IAAMtE,GAAmBuE,IAASvE,GAAmBwE,MAQhJ+E,EAA0BzgB,OAAOsY,KAAKtY,OAAOuY,OAAO,KAAM,CAC5DmI,aAAc,CACZC,UAAU,EACVC,cAAc,EACdC,YAAY,EACZ5f,MAAO,MAET6f,mBAAoB,CAClBH,UAAU,EACVC,cAAc,EACdC,YAAY,EACZ5f,MAAO,MAET8f,+BAAgC,CAC9BJ,UAAU,EACVC,cAAc,EACdC,YAAY,EACZ5f,OAAO,MAKP+f,EAAc,KAGdC,EAAc,KAGdC,GAAkB,EAGlBC,GAAkB,EAGlBC,GAA0B,EAI1BC,GAA2B,EAK3BC,GAAqB,EAGrBC,GAAiB,EAGjBC,IAAa,EAIbC,IAAa,EAMbC,IAAa,EAIbC,IAAsB,EAItBC,IAAsB,EAKtBC,IAAe,EAefC,IAAuB,EAIvBC,IAAe,EAIfC,IAAW,EAGXC,GAAe,CAAA,EAGfC,GAAkB,KAClBC,GAA0BhI,GAAS,CAAE,EAAE,CAAC,iBAAkB,QAAS,WAAY,OAAQ,gBAAiB,OAAQ,SAAU,OAAQ,KAAM,KAAM,KAAM,KAAM,QAAS,UAAW,WAAY,WAAY,YAAa,SAAU,QAAS,MAAO,WAAY,QAAS,QAAS,QAAS,QAGpRiI,GAAgB,KAChBC,GAAwBlI,GAAS,CAAE,EAAE,CAAC,QAAS,QAAS,MAAO,SAAU,QAAS,UAGlFmI,GAAsB,KACtBC,GAA8BpI,GAAS,GAAI,CAAC,MAAO,QAAS,MAAO,KAAM,QAAS,OAAQ,UAAW,cAAe,OAAQ,UAAW,QAAS,QAAS,QAAS,UAClKqI,GAAmB,qCACnBC,GAAgB,6BAChBC,GAAiB,+BAGjBC,GAAYD,GACZE,IAAiB,EAGjBC,GAAqB,KACrBC,GAA6B3I,GAAS,GAAI,CAACqI,GAAkBC,GAAeC,IAAiBrJ,IAI7F0J,GAA+B,CAAC,wBAAyB,aAKzDC,GAAS,KAKTC,GAAcrG,EAASqB,cAAc,QAErCiF,GAAoB,SAA2BC,GACjD,OAAOA,aAAqBxf,QAAUwf,aAAqB/iB,QAC/D,EASMgjB,GAAe,SAAsBC,GACnCL,IAAUA,KAAWK,IAMpBA,GAAwB,WAAjBvN,GAAQuN,KAClBA,EAAM,CAAA,GAKRA,EAAM7I,GAAM6I,GACZ1D,EACqEA,GAAJ,IAAjEoD,GAA6BtJ,QAAQ4J,EAAI1D,mBArCX,YAqC2G0D,EAAI1D,kBAE7IvF,EAA0C,0BAAtBuF,EAAgDtG,GAAiBH,GAGrFkH,EAAe,iBAAkBiD,EAAMlJ,GAAS,CAAA,EAAIkJ,EAAIjD,aAAchG,GAAqBiG,EAC3FE,EAAe,iBAAkB8C,EAAMlJ,GAAS,CAAA,EAAIkJ,EAAI9C,aAAcnG,GAAqBoG,EAC3FqC,GAAqB,uBAAwBQ,EAAMlJ,GAAS,CAAA,EAAIkJ,EAAIR,mBAAoBxJ,IAAkByJ,GAC1GR,GAAsB,sBAAuBe,EAAMlJ,GAASK,GAAM+H,IAClEc,EAAIC,kBACJlJ,GAEEmI,GACFH,GAAgB,sBAAuBiB,EAAMlJ,GAASK,GAAM6H,IAC5DgB,EAAIE,kBACJnJ,GAEEiI,GACFH,GAAkB,oBAAqBmB,EAAMlJ,GAAS,CAAA,EAAIkJ,EAAInB,gBAAiB9H,GAAqB+H,GACpGnB,EAAc,gBAAiBqC,EAAMlJ,GAAS,CAAA,EAAIkJ,EAAIrC,YAAa5G,GAAqB,GACxF6G,EAAc,gBAAiBoC,EAAMlJ,GAAS,CAAA,EAAIkJ,EAAIpC,YAAa7G,GAAqB,GACxF6H,GAAe,iBAAkBoB,GAAMA,EAAIpB,aAC3Cf,GAA0C,IAAxBmC,EAAInC,gBAEtBC,GAA0C,IAAxBkC,EAAIlC,gBAEtBC,EAA0BiC,EAAIjC,0BAA2B,EAEzDC,GAA4D,IAAjCgC,EAAIhC,yBAE/BC,EAAqB+B,EAAI/B,qBAAsB,EAE/CC,EAAiB8B,EAAI9B,iBAAkB,EAEvCG,GAAa2B,EAAI3B,aAAc,EAE/BC,GAAsB0B,EAAI1B,sBAAuB,EAEjDC,GAAsByB,EAAIzB,sBAAuB,EAEjDH,GAAa4B,EAAI5B,aAAc,EAE/BI,IAAoC,IAArBwB,EAAIxB,aAEnBC,GAAuBuB,EAAIvB,uBAAwB,EAEnDC,IAAoC,IAArBsB,EAAItB,aAEnBC,GAAWqB,EAAIrB,WAAY,EAE3B7B,EAAmBkD,EAAIG,oBAAsBrD,EAC7CwC,GAAYU,EAAIV,WAAaD,GAC7BjC,EAA0B4C,EAAI5C,yBAA2B,GAErD4C,EAAI5C,yBAA2ByC,GAAkBG,EAAI5C,wBAAwBC,gBAC/ED,EAAwBC,aAAe2C,EAAI5C,wBAAwBC,cAGjE2C,EAAI5C,yBAA2ByC,GAAkBG,EAAI5C,wBAAwBK,sBAC/EL,EAAwBK,mBAAqBuC,EAAI5C,wBAAwBK,oBAGvEuC,EAAI5C,yBAAiG,kBAA/D4C,EAAI5C,wBAAwBM,iCACpEN,EAAwBM,+BAAiCsC,EAAI5C,wBAAwBM,gCAGnFO,IACFH,GAAkB,GAGhBQ,KACFD,IAAa,GAKXO,KACF7B,EAAejG,GAAS,CAAA,EAAIjD,GAAmBoE,KAC/CiF,EAAe,IAEW,IAAtB0B,GAAa1G,OACfpB,GAASiG,EAAcpF,IACvBb,GAASoG,EAAchF,MAGA,IAArB0G,GAAazG,MACfrB,GAASiG,EAAcnF,IACvBd,GAASoG,EAAc/E,IACvBrB,GAASoG,EAAc7E,MAGO,IAA5BuG,GAAa/G,aACff,GAASiG,EAAclF,IACvBf,GAASoG,EAAc/E,IACvBrB,GAASoG,EAAc7E,MAGG,IAAxBuG,GAAaxG,SACftB,GAASiG,EAAchF,IACvBjB,GAASoG,EAAc9E,IACvBtB,GAASoG,EAAc7E,MAMvB2H,EAAII,WACFrD,IAAiBC,IACnBD,EAAe5F,GAAM4F,IAGvBjG,GAASiG,EAAciD,EAAII,SAAUrJ,IAGnCiJ,EAAIK,WACFnD,IAAiBC,IACnBD,EAAe/F,GAAM+F,IAGvBpG,GAASoG,EAAc8C,EAAIK,SAAUtJ,IAGnCiJ,EAAIC,mBACNnJ,GAASmI,GAAqBe,EAAIC,kBAAmBlJ,GAGnDiJ,EAAInB,kBACFA,KAAoBC,KACtBD,GAAkB1H,GAAM0H,KAG1B/H,GAAS+H,GAAiBmB,EAAInB,gBAAiB9H,IAK7C2H,KACF3B,EAAa,UAAW,GAKtBmB,GACFpH,GAASiG,EAAc,CAAC,OAAQ,OAAQ,SAKtCA,EAAauD,QACfxJ,GAASiG,EAAc,CAAC,iBACjBY,EAAY4C,OAKjBvL,IACFA,GAAOgL,GAGTL,GAASK,EACb,EAEMQ,GAAiC1J,GAAS,CAAA,EAAI,CAAC,KAAM,KAAM,KAAM,KAAM,UACvE2J,GAA0B3J,GAAS,GAAI,CAAC,gBAAiB,OAAQ,QAAS,mBAK1E4J,GAA+B5J,GAAS,CAAA,EAAI,CAAC,QAAS,QAAS,OAAQ,IAAK,WAK5E6J,GAAe7J,GAAS,CAAE,EAAEc,IAChCd,GAAS6J,GAAc9I,IACvBf,GAAS6J,GAAc7I,IACvB,IAAI8I,GAAkB9J,GAAS,CAAE,EAAEiB,IACnCjB,GAAS8J,GAAiB5I,IAU1B,IA4FI6I,GAAe,SAAsBC,GACvClL,GAAUuD,EAAUG,QAAS,CAC3BrC,QAAS6J,IAGX,IAEEA,EAAKC,WAAWC,YAAYF,EAC7B,CAAC,MAAOpF,GACP,IACEoF,EAAKG,UAAYrF,CAClB,CAAC,MAAOF,GACPoF,EAAKI,QACN,CACF,CACL,EASMC,GAAmB,SAA0B5M,EAAMuM,GACrD,IACElL,GAAUuD,EAAUG,QAAS,CAC3B8H,UAAWN,EAAKO,iBAAiB9M,GACjCL,KAAM4M,GAET,CAAC,MAAOpF,GACP9F,GAAUuD,EAAUG,QAAS,CAC3B8H,UAAW,KACXlN,KAAM4M,GAET,CAID,GAFAA,EAAKQ,gBAAgB/M,GAER,OAATA,IAAkB2I,EAAa3I,GACjC,GAAI8J,IAAcC,GAChB,IACEuC,GAAaC,EACvB,CAAU,MAAOpF,GAAK,MAEd,IACEoF,EAAKS,aAAahN,EAAM,GAClC,CAAU,MAAOmH,GAAK,CAGtB,EASM8F,GAAgB,SAAuBC,GAEzC,IAAIC,EACAC,EAEJ,GAAIvD,GACFqD,EAAQ,oBAAsBA,MACzB,CAEL,IAAIG,EAAU3L,GAAYwL,EAAO,eACjCE,EAAoBC,GAAWA,EAAQ,EACxC,CAEyB,0BAAtBtF,GAAiDgD,KAAcD,KAEjEoC,EAAQ,iEAAmEA,EAAQ,kBAGrF,IAAII,EAAe9G,EAAqBA,EAAmBQ,WAAWkG,GAASA,EAM/E,GAAInC,KAAcD,GAChB,IACEqC,GAAM,IAAItH,GAAY0H,gBAAgBD,EAAcvF,EAC5D,CAAQ,MAAOZ,GAAK,CAKhB,IAAKgG,IAAQA,EAAIK,gBAAiB,CAChCL,EAAM5F,EAAekG,eAAe1C,GAAW,WAAY,MAE3D,IACEoC,EAAIK,gBAAgBE,UAAY1C,GAAiB3D,EAAYiG,CAC9D,CAAC,MAAOnG,GACR,CACF,CAED,IAAIwG,EAAOR,EAAIQ,MAAQR,EAAIK,gBAQ3B,OANIN,GAASE,GACXO,EAAKC,aAAa5I,EAAS6I,eAAeT,GAAoBO,EAAKG,WAAW,IAAM,MAKlF/C,KAAcD,GACTpD,EAAqBne,KAAK4jB,EAAKxD,EAAiB,OAAS,QAAQ,GAGnEA,EAAiBwD,EAAIK,gBAAkBG,CAClD,EASMI,GAAkB,SAAyBlJ,GAC7C,OAAO2C,EAAmBje,KAAKsb,EAAK0B,eAAiB1B,EAAMA,EAC3DW,EAAWwI,aAAexI,EAAWyI,aAAezI,EAAW0I,UAAW,MAAM,EACpF,EAoBMC,GAAU,SAAiB5jB,GAC7B,MAAyB,WAAlB2T,GAAQoH,GAAqB/a,aAAkB+a,EAAO/a,GAA8B,WAApB2T,GAAQ3T,IAAmD,iBAApBA,EAAO0a,UAAoD,iBAApB1a,EAAO6jB,QAChK,EAWMC,GAAe,SAAsBC,EAAYC,EAAazhB,GAC3D+a,EAAMyG,IAIXrN,GAAa4G,EAAMyG,IAAa,SAAUE,GACxCA,EAAKjlB,KAAKqb,EAAW2J,EAAazhB,EAAMse,GAC9C,GACA,EAaMqD,GAAoB,SAA2BF,GACjD,IAAIjI,EA9CmCoI,EAqDvC,GAJAL,GAAa,yBAA0BE,EAAa,OAjDbG,EAqDtBH,aApDK3I,IAA4C,iBAAjB8I,EAAIN,UAAoD,iBAApBM,EAAIC,aAAuD,mBAApBD,EAAIjC,eAAgCiC,EAAIE,sBAAsBlJ,IAAgD,mBAAxBgJ,EAAI3B,iBAA8D,mBAArB2B,EAAI1B,cAA2D,iBAArB0B,EAAIG,cAAyD,mBAArBH,EAAId,cAA4D,mBAAtBc,EAAII,eAuD7X,OAFAxC,GAAaiC,IAEN,EAKT,GAAIvM,GAAW,kBAAmBuM,EAAYH,UAG5C,OAFA9B,GAAaiC,IAEN,EAKT,IAAIQ,EAAUvM,EAAkB+L,EAAYH,UAU5C,GAPAC,GAAa,sBAAuBE,EAAa,CAC/CQ,QAASA,EACTC,YAAaxG,IAKX+F,EAAYO,kBAAoBX,GAAQI,EAAYU,sBAAwBd,GAAQI,EAAYjI,WAAa6H,GAAQI,EAAYjI,QAAQ2I,qBAAuBjN,GAAW,UAAWuM,EAAYb,YAAc1L,GAAW,UAAWuM,EAAYI,aAGpP,OAFArC,GAAaiC,IAEN,EAKT,GAAgB,WAAZQ,GAAwB/M,GAAW,aAAcuM,EAAYb,WAG/D,OAFApB,GAAaiC,IAEN,EAKT,IAAK/F,EAAauG,IAAY3F,EAAY2F,GAAU,CAElD,IAAK3F,EAAY2F,IAAYG,GAAwBH,GAAU,CAC7D,GAAIlG,EAAwBC,wBAAwB/c,QAAUiW,GAAW6G,EAAwBC,aAAciG,GAAU,OAAO,EAChI,GAAIlG,EAAwBC,wBAAwBtgB,UAAYqgB,EAAwBC,aAAaiG,GAAU,OAAO,CACvH,CAID,GAAI5E,KAAiBG,GAAgByE,GAAU,CAC7C,IAAIvC,EAAarG,EAAcoI,IAAgBA,EAAY/B,WACvDsB,EAAa5H,EAAcqI,IAAgBA,EAAYT,WAE3D,GAAIA,GAActB,EAGhB,IAFA,IAESpM,EAFQ0N,EAAWvgB,OAEF,EAAG6S,GAAK,IAAKA,EACrCoM,EAAWoB,aAAa5H,EAAU8H,EAAW1N,IAAI,GAAO6F,EAAesI,GAG5E,CAID,OAFAjC,GAAaiC,IAEN,CACR,CAID,OAAIA,aAAuBhJ,IA9VF,SAA8B7C,GACvD,IAAIyM,EAAShJ,EAAczD,GAGtByM,GAAWA,EAAOJ,UACrBI,EAAS,CACPN,aAAc9D,GACdgE,QAAS,aAIb,IAAIA,EAAUzN,GAAkBoB,EAAQqM,SACpCK,EAAgB9N,GAAkB6N,EAAOJ,SAE7C,QAAK9D,GAAmBvI,EAAQmM,gBAI5BnM,EAAQmM,eAAiBhE,GAIvBsE,EAAON,eAAiB/D,GACP,QAAZiE,EAMLI,EAAON,eAAiBjE,GACP,QAAZmE,IAAwC,mBAAlBK,GAAsCnD,GAA+BmD,IAK7FnQ,QAAQmN,GAAa2C,IAG1BrM,EAAQmM,eAAiBjE,GAIvBuE,EAAON,eAAiB/D,GACP,SAAZiE,EAKLI,EAAON,eAAiBhE,GACP,SAAZkE,GAAsB7C,GAAwBkD,GAKhDnQ,QAAQoN,GAAgB0C,IAG7BrM,EAAQmM,eAAiB/D,KAIvBqE,EAAON,eAAiBhE,KAAkBqB,GAAwBkD,OAIlED,EAAON,eAAiBjE,KAAqBqB,GAA+BmD,MAMxE/C,GAAgB0C,KAAa5C,GAA6B4C,KAAa3C,GAAa2C,MAIpE,0BAAtBhH,IAAiDkD,GAAmBvI,EAAQmM,eASpF,CA0Q2CQ,CAAqBd,IAC1DjC,GAAaiC,IAEN,GAGQ,aAAZQ,GAAsC,YAAZA,IAA0B/M,GAAW,uBAAwBuM,EAAYb,YAQpGhE,GAA+C,IAAzB6E,EAAYtJ,WAEpCqB,EAAUiI,EAAYI,YACtBrI,EAAU3E,GAAc2E,EAAS0B,EAAiB,KAClD1B,EAAU3E,GAAc2E,EAAS2B,EAAY,KAC7C3B,EAAU3E,GAAc2E,EAAS4B,EAAe,KAE5CqG,EAAYI,cAAgBrI,IAC9BjF,GAAUuD,EAAUG,QAAS,CAC3BrC,QAAS6L,EAAYvI,cAEvBuI,EAAYI,YAAcrI,IAM9B+H,GAAa,wBAAyBE,EAAa,OAE5C,IA1BLjC,GAAaiC,IAEN,EAyBb,EAYMe,GAAoB,SAA2BC,EAAOC,EAAQnmB,GAEhE,GAAI4gB,KAA4B,OAAXuF,GAA8B,SAAXA,KAAuBnmB,KAAS2b,GAAY3b,KAASgiB,IAC3F,OAAO,EAQT,GAAI9B,IAAoBF,EAAYmG,IAAWxN,GAAWmG,EAAaqH,SAAgB,GAAIlG,GAAmBtH,GAAWoG,EAAaoH,SAAgB,IAAK7G,EAAa6G,IAAWnG,EAAYmG,IAC7L,KAGAN,GAAwBK,KAAW1G,EAAwBC,wBAAwB/c,QAAUiW,GAAW6G,EAAwBC,aAAcyG,IAAU1G,EAAwBC,wBAAwBtgB,UAAYqgB,EAAwBC,aAAayG,MAAY1G,EAAwBK,8BAA8Bnd,QAAUiW,GAAW6G,EAAwBK,mBAAoBsG,IAAW3G,EAAwBK,8BAA8B1gB,UAAYqgB,EAAwBK,mBAAmBsG,KAEze,OAAXA,GAAmB3G,EAAwBM,iCAAmCN,EAAwBC,wBAAwB/c,QAAUiW,GAAW6G,EAAwBC,aAAczf,IAAUwf,EAAwBC,wBAAwBtgB,UAAYqgB,EAAwBC,aAAazf,KAClS,OAAO,OAIJ,GAAIqhB,GAAoB8E,SAAgB,GAAIxN,GAAWuG,EAAkB5G,GAActY,EAAOif,EAAmB,WAAa,GAAgB,QAAXkH,GAA+B,eAAXA,GAAsC,SAAXA,GAAgC,WAAVD,GAAwD,IAAlC3N,GAAcvY,EAAO,WAAkBmhB,GAAc+E,IAAe,GAAI/F,IAA4BxH,GAAWqG,EAAqB1G,GAActY,EAAOif,EAAmB,WAAa,GAAKjf,EACja,OAAO,OAGT,OAAO,CACX,EASM6lB,GAA0B,SAAiCH,GAC7D,OAAOA,EAAQlN,QAAQ,KAAO,CAClC,EAaM4N,GAAsB,SAA6BlB,GACrD,IAAImB,EACArmB,EACAmmB,EACA/M,EAGJ4L,GAAa,2BAA4BE,EAAa,MAEtD,IAAIK,EAAaL,EAAYK,WAG7B,GAAKA,EAAL,CAIA,IAAIe,EAAY,CACdC,SAAU,GACVC,UAAW,GACXC,UAAU,EACVC,kBAAmBpH,GAKrB,IAHAlG,EAAImM,EAAWrhB,OAGRkV,KAAK,CAEV,IAAIuN,EADJN,EAAOd,EAAWnM,GAEdzC,EAAOgQ,EAAMhQ,KACb6O,EAAemB,EAAMnB,aAezB,GAdAxlB,EAAiB,UAAT2W,EAAmB0P,EAAKrmB,MAAQyY,GAAW4N,EAAKrmB,OACxDmmB,EAAShN,EAAkBxC,GAG3B2P,EAAUC,SAAWJ,EACrBG,EAAUE,UAAYxmB,EACtBsmB,EAAUG,UAAW,EACrBH,EAAUM,mBAAgB9mB,EAE1BklB,GAAa,wBAAyBE,EAAaoB,GAEnDtmB,EAAQsmB,EAAUE,WAGdF,EAAUM,gBAMdrD,GAAiB5M,EAAMuO,GAIlBoB,EAAUG,UAMf,GAAKrG,IAA4BzH,GAAW,OAAQ3Y,GAApD,CAQIqgB,IACFrgB,EAAQsY,GAActY,EAAO2e,EAAiB,KAC9C3e,EAAQsY,GAActY,EAAO4e,EAAY,KACzC5e,EAAQsY,GAActY,EAAO6e,EAAe,MAK9C,IAAIqH,EAAQ/M,EAAkB+L,EAAYH,UAE1C,GAAKkB,GAAkBC,EAAOC,EAAQnmB,GAAtC,CAkBA,IAVI6gB,IAAoC,OAAXsF,GAA8B,SAAXA,IAE9C5C,GAAiB5M,EAAMuO,GAGvBllB,EAhyB4B,gBAgyBUA,GAKpCmd,GAAgD,WAA1BtI,GAAQ4H,IAAuE,mBAAlCA,EAAaoK,iBAClF,GAAIrB,QACF,OAAQ/I,EAAaoK,iBAAiBX,EAAOC,IAC3C,IAAK,cACHnmB,EAAQmd,EAAmBQ,WAAW3d,GACtC,MAEF,IAAK,mBACHA,EAAQmd,EAAmBS,gBAAgB5d,GAQnD,IACMwlB,EACFN,EAAY4B,eAAetB,EAAc7O,EAAM3W,GAG/CklB,EAAYvB,aAAahN,EAAM3W,GAGjC+X,GAASwD,EAAUG,QAC3B,CAAQ,MAAOoC,GAAK,CAzCb,CAhBA,MAHCyF,GAAiB5M,EAAMuO,EA6D1B,CAIDF,GAAa,0BAA2BE,EAAa,KAhHpD,CAiHL,EAQM6B,GAAqB,SAASA,EAAmBC,GACnD,IAAIC,EAEAC,EAAiBxC,GAAgBsC,GAMrC,IAFAhC,GAAa,0BAA2BgC,EAAU,MAE3CC,EAAaC,EAAeC,YAEjCnC,GAAa,yBAA0BiC,EAAY,MAI/C7B,GAAkB6B,KAMlBA,EAAWhK,mBAAmBlB,GAChCgL,EAAmBE,EAAWhK,SAKhCmJ,GAAoBa,IAKtBjC,GAAa,yBAA0BgC,EAAU,KACrD,EAkTE,OAvSAzL,EAAU6L,SAAW,SAAUvD,GAC7B,IACIS,EACA+C,EACAnC,EACAoC,EACAC,EALAnF,EAAM1b,UAAUxC,OAAS,QAAsBpE,IAAjB4G,UAAU,GAAmBA,UAAU,GAAK,CAAA,EAkB9E,IARAib,IAAkBkC,KAGhBA,EAAQ,eAKW,iBAAVA,IAAuBiB,GAAQjB,GAAQ,CAEhD,GAA8B,mBAAnBA,EAAMlkB,SACf,MAAMiZ,GAAgB,8BAItB,GAAqB,iBAFrBiL,EAAQA,EAAMlkB,YAGZ,MAAMiZ,GAAgB,kCAG3B,CAID,IAAK2C,EAAUM,YAAa,CAC1B,GAAqC,WAAjChH,GAAQuG,EAAOoM,eAA6D,mBAAxBpM,EAAOoM,aAA6B,CAC1F,GAAqB,iBAAV3D,EACT,OAAOzI,EAAOoM,aAAa3D,GAG7B,GAAIiB,GAAQjB,GACV,OAAOzI,EAAOoM,aAAa3D,EAAMR,UAEpC,CAED,OAAOQ,CACR,CAiBD,GAbKtD,IACH4B,GAAaC,GAKf7G,EAAUG,QAAU,GAGC,iBAAVmI,IACT9C,IAAW,GAGTA,IAEF,GAAI8C,EAAMkB,SAAU,CAClB,IAAIW,EAAUvM,EAAkB0K,EAAMkB,UAEtC,IAAK5F,EAAauG,IAAY3F,EAAY2F,GACxC,MAAM9M,GAAgB,0DAEzB,OACI,GAAIiL,aAAiB5H,EAMI,KAF9BoL,GADA/C,EAAOV,GAAc,kBACD1G,cAAcoB,WAAWuF,GAAO,IAEnCjI,UAA4C,SAA1ByL,EAAatC,UAGX,SAA1BsC,EAAatC,SADtBT,EAAO+C,EAKP/C,EAAKmD,YAAYJ,OAEd,CAEL,IAAK5G,KAAeJ,IAAuBC,IACnB,IAAxBuD,EAAMrL,QAAQ,KACZ,OAAO2E,GAAsBwD,GAAsBxD,EAAmBQ,WAAWkG,GAASA,EAQ5F,KAHAS,EAAOV,GAAcC,IAInB,OAAOpD,GAAa,KAAOE,GAAsB3C,EAAY,EAEhE,CAIGsG,GAAQ9D,IACVyC,GAAaqB,EAAKoD,YASpB,IAJA,IAAIC,EAAejD,GAAgB3D,GAAW8C,EAAQS,GAI/CY,EAAcyC,EAAaR,YAEH,IAAzBjC,EAAYtJ,UAAkBsJ,IAAgBoC,GAM9ClC,GAAkBF,KAMlBA,EAAYjI,mBAAmBlB,GACjCgL,GAAmB7B,EAAYjI,SAKjCmJ,GAAoBlB,GAEpBoC,EAAUpC,GAMZ,GAHAoC,EAAU,KAGNvG,GACF,OAAO8C,EAKT,GAAIpD,GAAY,CACd,GAAIC,GAGF,IAFA6G,EAAanJ,EAAuBle,KAAKokB,EAAKpH,eAEvCoH,EAAKoD,YAEVH,EAAWE,YAAYnD,EAAKoD,iBAG9BH,EAAajD,EAcf,OAXIhF,EAAasI,YAActI,EAAauI,iBAQ1CN,EAAajJ,EAAWpe,KAAK4b,EAAkByL,GAAY,IAGtDA,CACR,CAED,IAAIO,EAAiBxH,EAAiBgE,EAAKjB,UAAYiB,EAAKD,UAe5D,OAZI/D,GAAkBnB,EAAa,aAAemF,EAAKpH,eAAiBoH,EAAKpH,cAAc6K,SAAWzD,EAAKpH,cAAc6K,QAAQpR,MAAQgC,GAAWuC,GAAcoJ,EAAKpH,cAAc6K,QAAQpR,QAC3LmR,EAAiB,aAAexD,EAAKpH,cAAc6K,QAAQpR,KAAO,MAAQmR,GAKxEzH,IACFyH,EAAiBxP,GAAcwP,EAAgBnJ,EAAiB,KAChEmJ,EAAiBxP,GAAcwP,EAAgBlJ,EAAY,KAC3DkJ,EAAiBxP,GAAcwP,EAAgBjJ,EAAe,MAGzD1B,GAAsBwD,GAAsBxD,EAAmBQ,WAAWmK,GAAkBA,CACvG,EASEvM,EAAUyM,UAAY,SAAU5F,GAC9BD,GAAaC,GAEb7B,IAAa,CACjB,EAQEhF,EAAU0M,YAAc,WACtBlG,GAAS,KACTxB,IAAa,CACjB,EAaEhF,EAAU2M,iBAAmB,SAAU/nB,EAAKkmB,EAAMrmB,GAE3C+hB,IACHI,GAAa,CAAE,GAGjB,IAAI+D,EAAQ/M,EAAkBhZ,GAC1BgmB,EAAShN,EAAkBkN,GAC/B,OAAOJ,GAAkBC,EAAOC,EAAQnmB,EAC5C,EAUEub,EAAU4M,QAAU,SAAUlD,EAAYmD,GACZ,mBAAjBA,IAIX5J,EAAMyG,GAAczG,EAAMyG,IAAe,GACzCjN,GAAUwG,EAAMyG,GAAamD,GACjC,EAWE7M,EAAU8M,WAAa,SAAUpD,GAC/B,GAAIzG,EAAMyG,GACR,OAAOlN,GAASyG,EAAMyG,GAE5B,EASE1J,EAAU+M,YAAc,SAAUrD,GAC5BzG,EAAMyG,KACRzG,EAAMyG,GAAc,GAE1B,EAQE1J,EAAUgN,eAAiB,WACzB/J,EAAQ,CAAA,CACZ,EAESjD,CACT,CAEaD,GClpDA,MAAAkN,GACT/kB,GAmDO+I,EAAMC,YAjDa,CACtBjC,EACAkC,IAyCIM,EAAC2G,GAAW5U,OAAAkO,OAAA,CAACgH,aAAcvH,GAASlC,EAC/B,CAAAwD,SAvCDvK,EAAKS,OAAS,EACPT,EAAKkC,KAAI,CAAC6d,EAAWvf,KACxB,GAAuB,SAAnBuf,EAAUriB,KAAiB,CAC3B,MAAMsnB,EACFjF,EAAUiF,gBAERC,EAAmBnN,GAAU6L,SAC/B5D,EAAUvG,SAEd,OACIjQ,EAAA,IAAAjO,OAAAkO,OAAA,GAEQwb,EAAe,CACnBE,wBAAyB,CACrBC,OAAQF,KAHPzkB,EAOhB,CAAM,CACH,MAAMwkB,EACFjF,EAAUiF,gBACd,OACIzb,EAAC0H,GAAmBC,KAEZ5V,OAAAkO,OAAA,CAAA,EAAAwb,EAEH,CAAAza,SAAAwV,EAAUvG,UAHNhZ,EAMhB,MAIT4V,QAAQgP,MAAM,6CACP","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,81]}
1
+ {"version":3,"file":"index.js","sources":["../../node_modules/react-resize-detector/build/index.esm.js","../../node_modules/lodash/isArray.js","../../node_modules/lodash/_root.js","../../node_modules/lodash/_freeGlobal.js","../../node_modules/lodash/_Symbol.js","../../node_modules/lodash/_getRawTag.js","../../node_modules/lodash/_objectToString.js","../../node_modules/lodash/_baseGetTag.js","../../node_modules/lodash/isObjectLike.js","../../node_modules/lodash/isSymbol.js","../../node_modules/lodash/_isKey.js","../../node_modules/lodash/isObject.js","../../node_modules/lodash/isFunction.js","../../node_modules/lodash/_isMasked.js","../../node_modules/lodash/_coreJsData.js","../../node_modules/lodash/_toSource.js","../../node_modules/lodash/_baseIsNative.js","../../node_modules/lodash/_getValue.js","../../node_modules/lodash/_getNative.js","../../node_modules/lodash/_nativeCreate.js","../../node_modules/lodash/_hashClear.js","../../node_modules/lodash/_hashDelete.js","../../node_modules/lodash/_hashGet.js","../../node_modules/lodash/_hashHas.js","../../node_modules/lodash/_hashSet.js","../../node_modules/lodash/_Hash.js","../../node_modules/lodash/_listCacheClear.js","../../node_modules/lodash/eq.js","../../node_modules/lodash/_assocIndexOf.js","../../node_modules/lodash/_listCacheDelete.js","../../node_modules/lodash/_listCacheGet.js","../../node_modules/lodash/_listCacheHas.js","../../node_modules/lodash/_listCacheSet.js","../../node_modules/lodash/_ListCache.js","../../node_modules/lodash/_Map.js","../../node_modules/lodash/_mapCacheClear.js","../../node_modules/lodash/_isKeyable.js","../../node_modules/lodash/_getMapData.js","../../node_modules/lodash/_mapCacheDelete.js","../../node_modules/lodash/_mapCacheGet.js","../../node_modules/lodash/_mapCacheHas.js","../../node_modules/lodash/_mapCacheSet.js","../../node_modules/lodash/_MapCache.js","../../node_modules/lodash/memoize.js","../../node_modules/lodash/_memoizeCapped.js","../../node_modules/lodash/_stringToPath.js","../../node_modules/lodash/_arrayMap.js","../../node_modules/lodash/_baseToString.js","../../node_modules/lodash/toString.js","../../node_modules/lodash/_castPath.js","../../node_modules/lodash/_toKey.js","../../node_modules/lodash/_baseGet.js","../../node_modules/lodash/get.js","../../src/theme/helper.ts","../../src/theme/types.ts","../../src/theme/color-theme-helper.ts","../../src/spec/color-spec/base-color-set.ts","../../src/spec/color-spec/bookingsg-color-set.ts","../../src/spec/color-spec/rbs-color-set.ts","../../src/spec/color-spec/mylegacy-color-set.ts","../../src/spec/color-spec/ccube-color-set.ts","../../src/color/color.ts","../../src/spec/media-spec.ts","../../src/media/media.ts","../../src/layout/col-div.style.tsx","../../src/layout/col-div.tsx","../../src/layout/container.tsx","../../src/layout/section.tsx","../../src/layout/content.tsx","../../src/layout/index.ts","../../src/shared/clickable-icon/clickable-icon.style.tsx","../../src/shared/clickable-icon/clickable-icon.tsx","../../src/spec/text-spec/font-spec.ts","../../src/theme/text-theme-helper.ts","../../src/spec/text-spec/base-text-style-set.ts","../../src/text/text-style.ts","../../src/text/helper.ts","../../src/text/text.tsx","../../src/text/types.ts","../../src/transition/index.ts","../../src/notification-banner/notification-banner.styles.tsx","../../src/notification-banner/notification-banner.tsx","../../node_modules/dompurify/dist/purify.es.js","../../src/notification-banner/notification-banner-hoc.tsx"],"sourcesContent":["import*as React from'react';import {cloneElement,isValidElement,createRef,PureComponent,Component,forwardRef,useRef,useState,useEffect,useLayoutEffect}from'react';import {findDOMNode}from'react-dom';/******************************************************************************\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\nfunction __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\nvar __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\nfunction __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}var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};/**\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 */\n\nfunction isObject$3(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nvar isObject_1 = isObject$3;/** Detect free variable `global` from Node.js. */\n\nvar freeGlobal$1 = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\nvar _freeGlobal = freeGlobal$1;var freeGlobal = _freeGlobal;\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$2 = freeGlobal || freeSelf || Function('return this')();\n\nvar _root = root$2;var root$1 = _root;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now$1 = function() {\n return root$1.Date.now();\n};\n\nvar now_1 = now$1;/** Used to match a single whitespace character. */\n\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex$1(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nvar _trimmedEndIndex = trimmedEndIndex$1;var trimmedEndIndex = _trimmedEndIndex;\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim$1(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nvar _baseTrim = baseTrim$1;var root = _root;\n\n/** Built-in value references. */\nvar Symbol$2 = root.Symbol;\n\nvar _Symbol = Symbol$2;var Symbol$1 = _Symbol;\n\n/** Used for built-in method references. */\nvar objectProto$1 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto$1.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString$1 = objectProto$1.toString;\n\n/** Built-in value references. */\nvar symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag$1(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag$1),\n tag = value[symToStringTag$1];\n\n try {\n value[symToStringTag$1] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString$1.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag$1] = tag;\n } else {\n delete value[symToStringTag$1];\n }\n }\n return result;\n}\n\nvar _getRawTag = getRawTag$1;/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString$1(value) {\n return nativeObjectToString.call(value);\n}\n\nvar _objectToString = objectToString$1;var Symbol = _Symbol,\n getRawTag = _getRawTag,\n objectToString = _objectToString;\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag$1(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nvar _baseGetTag = baseGetTag$1;/**\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 */\n\nfunction isObjectLike$1(value) {\n return value != null && typeof value == 'object';\n}\n\nvar isObjectLike_1 = isObjectLike$1;var baseGetTag = _baseGetTag,\n isObjectLike = isObjectLike_1;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol$1(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nvar isSymbol_1 = isSymbol$1;var baseTrim = _baseTrim,\n isObject$2 = isObject_1,\n isSymbol = isSymbol_1;\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber$1(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject$2(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject$2(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nvar toNumber_1 = toNumber$1;var isObject$1 = isObject_1,\n now = now_1,\n toNumber = toNumber_1;\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT$1 = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce$1(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT$1);\n }\n wait = toNumber(wait) || 0;\n if (isObject$1(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nvar debounce_1 = debounce$1;var debounce = debounce_1,\n isObject = isObject_1;\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nvar throttle_1 = throttle;var patchResizeHandler = function (resizeCallback, refreshMode, refreshRate, refreshOptions) {\r\n switch (refreshMode) {\r\n case 'debounce':\r\n return debounce_1(resizeCallback, refreshRate, refreshOptions);\r\n case 'throttle':\r\n return throttle_1(resizeCallback, refreshRate, refreshOptions);\r\n default:\r\n return resizeCallback;\r\n }\r\n};\r\nvar isFunction = function (fn) { return typeof fn === 'function'; };\r\nvar isSSR = function () { return typeof window === 'undefined'; };\r\nvar isDOMElement = function (element) { return element instanceof Element || element instanceof HTMLDocument; };\r\nvar createNotifier = function (onResize, setSize, handleWidth, handleHeight) {\r\n return function (_a) {\r\n var width = _a.width, height = _a.height;\r\n setSize(function (prev) {\r\n if (prev.width === width && prev.height === height) {\r\n // skip if dimensions haven't changed\r\n return prev;\r\n }\r\n if ((prev.width === width && !handleHeight) || (prev.height === height && !handleWidth)) {\r\n // process `handleHeight/handleWidth` props\r\n return prev;\r\n }\r\n if (onResize && isFunction(onResize)) {\r\n onResize(width, height);\r\n }\r\n return { width: width, height: height };\r\n });\r\n };\r\n};var ResizeDetector = /** @class */ (function (_super) {\r\n __extends(ResizeDetector, _super);\r\n function ResizeDetector(props) {\r\n var _this = _super.call(this, props) || this;\r\n _this.cancelHandler = function () {\r\n if (_this.resizeHandler && _this.resizeHandler.cancel) {\r\n // cancel debounced handler\r\n _this.resizeHandler.cancel();\r\n _this.resizeHandler = null;\r\n }\r\n };\r\n _this.attachObserver = function () {\r\n var _a = _this.props, targetRef = _a.targetRef, observerOptions = _a.observerOptions;\r\n if (isSSR()) {\r\n return;\r\n }\r\n if (targetRef && targetRef.current) {\r\n _this.targetRef.current = targetRef.current;\r\n }\r\n var element = _this.getElement();\r\n if (!element) {\r\n // can't find element to observe\r\n return;\r\n }\r\n if (_this.observableElement && _this.observableElement === element) {\r\n // element is already observed\r\n return;\r\n }\r\n _this.observableElement = element;\r\n _this.resizeObserver.observe(element, observerOptions);\r\n };\r\n _this.getElement = function () {\r\n var _a = _this.props, querySelector = _a.querySelector, targetDomEl = _a.targetDomEl;\r\n if (isSSR())\r\n return null;\r\n // in case we pass a querySelector\r\n if (querySelector)\r\n return document.querySelector(querySelector);\r\n // in case we pass a DOM element\r\n if (targetDomEl && isDOMElement(targetDomEl))\r\n return targetDomEl;\r\n // in case we pass a React ref using React.createRef()\r\n if (_this.targetRef && isDOMElement(_this.targetRef.current))\r\n return _this.targetRef.current;\r\n // the worse case when we don't receive any information from the parent and the library doesn't add any wrappers\r\n // we have to use a deprecated `findDOMNode` method in order to find a DOM element to attach to\r\n var currentElement = findDOMNode(_this);\r\n if (!currentElement)\r\n return null;\r\n var renderType = _this.getRenderType();\r\n switch (renderType) {\r\n case 'renderProp':\r\n return currentElement;\r\n case 'childFunction':\r\n return currentElement;\r\n case 'child':\r\n return currentElement;\r\n case 'childArray':\r\n return currentElement;\r\n default:\r\n return currentElement.parentElement;\r\n }\r\n };\r\n _this.createResizeHandler = function (entries) {\r\n var _a = _this.props, _b = _a.handleWidth, handleWidth = _b === void 0 ? true : _b, _c = _a.handleHeight, handleHeight = _c === void 0 ? true : _c, onResize = _a.onResize;\r\n if (!handleWidth && !handleHeight)\r\n return;\r\n var notifyResize = createNotifier(onResize, _this.setState.bind(_this), handleWidth, handleHeight);\r\n entries.forEach(function (entry) {\r\n var _a = (entry && entry.contentRect) || {}, width = _a.width, height = _a.height;\r\n var shouldSetSize = !_this.skipOnMount && !isSSR();\r\n if (shouldSetSize) {\r\n notifyResize({ width: width, height: height });\r\n }\r\n _this.skipOnMount = false;\r\n });\r\n };\r\n _this.getRenderType = function () {\r\n var _a = _this.props, render = _a.render, children = _a.children;\r\n if (isFunction(render)) {\r\n // DEPRECATED. Use `Child Function Pattern` instead\r\n return 'renderProp';\r\n }\r\n if (isFunction(children)) {\r\n return 'childFunction';\r\n }\r\n if (isValidElement(children)) {\r\n return 'child';\r\n }\r\n if (Array.isArray(children)) {\r\n // DEPRECATED. Wrap children with a single parent\r\n return 'childArray';\r\n }\r\n // DEPRECATED. Use `Child Function Pattern` instead\r\n return 'parent';\r\n };\r\n var skipOnMount = props.skipOnMount, refreshMode = props.refreshMode, _a = props.refreshRate, refreshRate = _a === void 0 ? 1000 : _a, refreshOptions = props.refreshOptions;\r\n _this.state = {\r\n width: undefined,\r\n height: undefined\r\n };\r\n _this.skipOnMount = skipOnMount;\r\n _this.targetRef = createRef();\r\n _this.observableElement = null;\r\n if (isSSR()) {\r\n return _this;\r\n }\r\n _this.resizeHandler = patchResizeHandler(_this.createResizeHandler, refreshMode, refreshRate, refreshOptions);\r\n _this.resizeObserver = new window.ResizeObserver(_this.resizeHandler);\r\n return _this;\r\n }\r\n ResizeDetector.prototype.componentDidMount = function () {\r\n this.attachObserver();\r\n };\r\n ResizeDetector.prototype.componentDidUpdate = function () {\r\n this.attachObserver();\r\n };\r\n ResizeDetector.prototype.componentWillUnmount = function () {\r\n if (isSSR()) {\r\n return;\r\n }\r\n this.observableElement = null;\r\n this.resizeObserver.disconnect();\r\n this.cancelHandler();\r\n };\r\n ResizeDetector.prototype.render = function () {\r\n var _a = this.props, render = _a.render, children = _a.children, _b = _a.nodeType, WrapperTag = _b === void 0 ? 'div' : _b;\r\n var _c = this.state, width = _c.width, height = _c.height;\r\n var childProps = { width: width, height: height, targetRef: this.targetRef };\r\n var renderType = this.getRenderType();\r\n var typedChildren;\r\n switch (renderType) {\r\n case 'renderProp':\r\n return render && render(childProps);\r\n case 'childFunction':\r\n typedChildren = children;\r\n return typedChildren(childProps);\r\n case 'child':\r\n // @TODO bug prone logic\r\n typedChildren = children;\r\n if (typedChildren.type && typeof typedChildren.type === 'string') {\r\n // child is a native DOM elements such as div, span etc\r\n childProps.targetRef; var nativeProps = __rest(childProps, [\"targetRef\"]);\r\n return cloneElement(typedChildren, nativeProps);\r\n }\r\n // class or functional component otherwise\r\n return cloneElement(typedChildren, childProps);\r\n case 'childArray':\r\n typedChildren = children;\r\n return typedChildren.map(function (el) { return !!el && cloneElement(el, childProps); });\r\n default:\r\n return React.createElement(WrapperTag, null);\r\n }\r\n };\r\n return ResizeDetector;\r\n}(PureComponent));function withResizeDetector(ComponentInner, options) {\r\n if (options === void 0) { options = {}; }\r\n var ResizeDetectorHOC = /** @class */ (function (_super) {\r\n __extends(ResizeDetectorHOC, _super);\r\n function ResizeDetectorHOC() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.ref = createRef();\r\n return _this;\r\n }\r\n ResizeDetectorHOC.prototype.render = function () {\r\n var _a = this.props, forwardedRef = _a.forwardedRef, rest = __rest(_a, [\"forwardedRef\"]);\r\n var targetRef = forwardedRef !== null && forwardedRef !== void 0 ? forwardedRef : this.ref;\r\n return (React.createElement(ResizeDetector, __assign({}, options, { targetRef: targetRef }),\r\n React.createElement(ComponentInner, __assign({ targetRef: targetRef }, rest))));\r\n };\r\n return ResizeDetectorHOC;\r\n }(Component));\r\n function forwardRefWrapper(props, ref) {\r\n return React.createElement(ResizeDetectorHOC, __assign({}, props, { forwardedRef: ref }));\r\n }\r\n var name = ComponentInner.displayName || ComponentInner.name;\r\n forwardRefWrapper.displayName = \"withResizeDetector(\".concat(name, \")\");\r\n return forwardRef(forwardRefWrapper);\r\n}var useEnhancedEffect = isSSR() ? useEffect : useLayoutEffect;\r\nfunction useResizeDetector(props) {\r\n if (props === void 0) { props = {}; }\r\n var _a = props.skipOnMount, skipOnMount = _a === void 0 ? false : _a, refreshMode = props.refreshMode, _b = props.refreshRate, refreshRate = _b === void 0 ? 1000 : _b, refreshOptions = props.refreshOptions, _c = props.handleWidth, handleWidth = _c === void 0 ? true : _c, _d = props.handleHeight, handleHeight = _d === void 0 ? true : _d, targetRef = props.targetRef, observerOptions = props.observerOptions, onResize = props.onResize;\r\n var skipResize = useRef(skipOnMount);\r\n var localRef = useRef(null);\r\n var ref = (targetRef !== null && targetRef !== void 0 ? targetRef : localRef);\r\n var resizeHandler = useRef();\r\n var _e = useState({\r\n width: undefined,\r\n height: undefined\r\n }), size = _e[0], setSize = _e[1];\r\n useEnhancedEffect(function () {\r\n if (isSSR()) {\r\n return;\r\n }\r\n var notifyResize = createNotifier(onResize, setSize, handleWidth, handleHeight);\r\n var resizeCallback = function (entries) {\r\n if (!handleWidth && !handleHeight)\r\n return;\r\n entries.forEach(function (entry) {\r\n var _a = (entry && entry.contentRect) || {}, width = _a.width, height = _a.height;\r\n var shouldSetSize = !skipResize.current && !isSSR();\r\n if (shouldSetSize) {\r\n notifyResize({ width: width, height: height });\r\n }\r\n skipResize.current = false;\r\n });\r\n };\r\n resizeHandler.current = patchResizeHandler(resizeCallback, refreshMode, refreshRate, refreshOptions);\r\n var resizeObserver = new window.ResizeObserver(resizeHandler.current);\r\n if (ref.current) {\r\n // Something wrong with typings here...\r\n resizeObserver.observe(ref.current, observerOptions);\r\n }\r\n return function () {\r\n resizeObserver.disconnect();\r\n var patchedResizeHandler = resizeHandler.current;\r\n if (patchedResizeHandler && patchedResizeHandler.cancel) {\r\n patchedResizeHandler.cancel();\r\n }\r\n };\r\n }, [refreshMode, refreshRate, refreshOptions, handleWidth, handleHeight, onResize, observerOptions, ref.current]);\r\n return __assign({ ref: ref }, size);\r\n}export{ResizeDetector as default,useResizeDetector,withResizeDetector};//# sourceMappingURL=index.esm.js.map\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\nmodule.exports = isArray;\n","var freeGlobal = require('./_freeGlobal');\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\nmodule.exports = root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\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\nmodule.exports = isKey;\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 != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\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 if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var coreJsData = require('./_coreJsData');\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/**\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\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\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\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\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 detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\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/** 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/**\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) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\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\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\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\nmodule.exports = getNative;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\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 this.size = 0;\n}\n\nmodule.exports = hashClear;\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 var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * 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\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * 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\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\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 this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\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 == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\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\nmodule.exports = Hash;\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 this.size = 0;\n}\n\nmodule.exports = listCacheClear;\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\nmodule.exports = eq;\n","var eq = require('./eq');\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\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\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 --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\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\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\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\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\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 ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\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 == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\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\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\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.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\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\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\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\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\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 var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\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\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\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\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\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 var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\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 == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\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\nmodule.exports = MapCache;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\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 `clear`, `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 != null && 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) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\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 = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\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 * 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 (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\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\nmodule.exports = baseToString;\n","var baseToString = require('./_baseToString');\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 convert.\n * @returns {string} Returns the converted 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\nmodule.exports = toString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\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 * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\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\nmodule.exports = toKey;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\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 = castPath(path, object);\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\nmodule.exports = baseGet;\n","var baseGet = require('./_baseGet');\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 get from \"lodash/get\";\nimport { ThemeCollectionSpec } from \"./types\";\n\n/**\n *\n * @param collection the collection of theme-specific style attributes\n * @param attributePath (optional) the path to the value within the selected collection\n * @param attributePath (optional) the path to the value within the selected collection\n * @returns style value\n */\nexport const getValue = <C, T>(\n collection: C,\n attributePath?: string,\n customCollection?: T\n): string | number => {\n return attributePath\n ? get(customCollection, attributePath) || get(collection, attributePath)\n : customCollection || collection;\n};\n\n/**\n * Gets the theme set based on the theme context value\n * @param collectionSpec the collections of theme-specific style attributes\n * @param contextValue (optional) the theme context value\n * @returns the selected collection\n */\nexport const getCollection = <T, V, C>(\n collectionSpec: ThemeCollectionSpec<T, V>,\n contextValue?: string\n): C => {\n const themeContextValue = contextValue || collectionSpec.defaultValue;\n return get(collectionSpec.collections, themeContextValue as string);\n};\n","import { ColorSet, ColorSetOptions } from \"../color/types\";\nimport { DesignTokenSet, DesignTokenSetOptions } from \"../design-token/types\";\nimport { TextStyleSetOptionsType, TextStyleSetType } from \"../text/types\";\n\nexport type ThemeLayout = \"normal\";\n\n// =============================================================================\n// COLOR THEMES\n// =============================================================================\nexport type ColorScheme = \"base\" | \"bookingsg\" | \"rbs\" | \"mylegacy\" | \"ccube\";\nexport type ColorCollectionsMap = {\n [key in ColorScheme]: ColorSet;\n};\n\n// =============================================================================\n// FONT STYLE THEMES\n// =============================================================================\nexport type TextStyleScheme = \"base\";\nexport type FontStyleCollectionsMap = {\n [key in TextStyleScheme]: TextStyleSetType;\n};\n\n// =============================================================================\n// DESIGN TOKEN THEMES\n// =============================================================================\nexport type DesignTokenScheme = \"base\" | \"rbs\";\nexport type DesignTokenCollectionsMap = {\n [key in DesignTokenScheme]: DesignTokenSet;\n};\n\n// =============================================================================\n// RESOURCE THEMES\n// =============================================================================\nexport type ResourceScheme = \"base\" | \"bookingsg\" | \"rbs\" | \"ccube\";\n\n// =============================================================================\n// GENERAL\n// =============================================================================\nexport enum ThemeContextKeys {\n colorScheme = \"colorScheme\",\n layout = \"layout\",\n textStyleScheme = \"textStyleScheme\",\n designTokenScheme = \"designTokenScheme\",\n resourceScheme = \"resourceScheme\",\n}\n\nexport interface ThemeSpecOptions {\n /** for color customisation, can specify subset of set */\n color?: ColorSetOptions | undefined;\n textStyle?: TextStyleSetOptionsType | undefined;\n designToken?: DesignTokenSetOptions | undefined;\n}\n\nexport interface ThemeSpec {\n /** Sets the color scheme of the theme */\n [ThemeContextKeys.colorScheme]: ColorScheme;\n /** Sets the text style scheme of the theme */\n [ThemeContextKeys.textStyleScheme]: TextStyleScheme;\n /** Sets the design token scheme of the theme */\n [ThemeContextKeys.designTokenScheme]: DesignTokenScheme;\n /** Sets the layout scheme of the theme */\n [ThemeContextKeys.layout]?: ThemeLayout | undefined;\n /** Sets the resource scheme (e.g. images, text) of the theme */\n [ThemeContextKeys.resourceScheme]: ResourceScheme;\n /** For specific customisations to any schemes */\n options?: ThemeSpecOptions | undefined;\n}\n\nexport interface ThemeCollectionSpec<T, V> {\n collections: T;\n defaultValue: V;\n}\n","import { ColorSet } from \"../color/types\";\nimport { BaseColorSet } from \"../spec/color-spec/base-color-set\";\nimport { BookingSGColorSet } from \"../spec/color-spec/bookingsg-color-set\";\nimport { CCubeColorSet } from \"../spec/color-spec/ccube-color-set\";\nimport { MyLegacyColorSet } from \"../spec/color-spec/mylegacy-color-set\";\nimport { RBSColorSet } from \"../spec/color-spec/rbs-color-set\";\nimport { getCollection, getValue } from \"./helper\";\nimport {\n ColorCollectionsMap,\n ColorScheme,\n ThemeCollectionSpec,\n ThemeContextKeys,\n ThemeSpec,\n} from \"./types\";\n\n// =============================================================================\n// THEME SPECIFICATION\n// =============================================================================\nconst ColorSpec: ThemeCollectionSpec<ColorCollectionsMap, ColorScheme> = {\n collections: {\n base: BaseColorSet,\n bookingsg: BookingSGColorSet,\n rbs: RBSColorSet,\n mylegacy: MyLegacyColorSet,\n ccube: CCubeColorSet,\n },\n defaultValue: \"base\",\n};\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\nexport const getThemeColors = (attributePath: string) => {\n return (props: any): string => {\n const theme = props.theme as ThemeSpec;\n const colorSet: ColorSet = getCollection(\n ColorSpec,\n theme[ThemeContextKeys.colorScheme]\n );\n\n return theme.options && theme.options.color\n ? (getValue(colorSet, attributePath, theme.options.color) as string)\n : (getValue(colorSet, attributePath) as string);\n };\n};\n","import { ColorSet, ValidationTypes } from \"../../color/types\";\n\nexport const BaseColorSet: ColorSet = {\n Brand: {\n 1: \"#EF413D\",\n 2: \"#F26664\",\n 3: \"#F58E8B\",\n 4: \"#F9B5B2\",\n 5: \"#FDDDD7\",\n 6: \"#FFEEEA\",\n },\n Primary: \"#1C76D5\",\n PrimaryDark: \"#1869BF\",\n Secondary: \"#0056b3\",\n Accent: {\n Dark: {\n 1: \"#4B539F\",\n 2: \"#6D74B1\",\n 3: \"#959BC5\",\n },\n Light: {\n 1: \"#57A9FF\",\n 2: \"#81BFFF\",\n 3: \"#BED7FF\",\n 4: \"#E2ECFD\",\n 5: \"#F6F8FF\",\n 6: \"#FBFCFE\",\n },\n },\n Neutral: {\n 1: \"#282828\", // Text Black\n 2: \"#424242\",\n 3: \"#686868\", // Text Grey\n 4: \"#A4A4A4\",\n 5: \"#E0E4E5\",\n 6: \"#ECEFEF\",\n 7: \"#F8F8F8\",\n 8: \"#FFFFFF\",\n },\n Validation: {\n Green: {\n Text: \"#097123\", // Validation Text\n Icon: \"#4FC029\",\n Border: \"#95D97F\",\n Background: \"#F9FDF8\", // Validation Background\n },\n Orange: {\n Text: \"#B34E00\", // Validation Text\n Icon: \"#FEAB10\",\n Border: \"#F9CB77\",\n Background: \"#FFFCF7\", // Validation Background\n Badge: \"#F57F17\", // Orange Badge Notification\n },\n Red: {\n Text: \"#C60000\", // Validation Text\n Icon: \"#C60000\",\n Border: \"#DD6666\",\n Background: \"#FDF7F7\", // Validation Background\n },\n Blue: {\n Text: \"#064D70\", // Validation Text\n Icon: \" #066391\",\n Border: \"#84B7DB\",\n Background: \"#E8F4FA\", // Validation Background\n },\n } as ValidationTypes,\n Shadow: {\n Accent: \"rgba(87, 169, 255, 0.5)\",\n Red: \"rgba(221, 102, 102, 0.8)\",\n Elevation: \"rgba(75, 83, 159, 0.24)\",\n },\n};\n","import { ColorSet, ValidationTypes } from \"../../color/types\";\n\nexport const BookingSGColorSet: ColorSet = {\n Brand: {\n 1: \"#EF413D\",\n 2: \"#F26664\",\n 3: \"#F58E8B\",\n 4: \"#F9B5B2\",\n 5: \"#FDDDD7\",\n 6: \"#FFEEEA\",\n },\n Primary: \"#6F4AB8\",\n PrimaryDark: \"#6443A6\",\n Secondary: \"#6443A6\",\n Accent: {\n Dark: {\n 1: \"#355985\",\n 2: \"#68819D\",\n 3: \"#9AABBE\",\n },\n Light: {\n 1: \"#977ECC\",\n 2: \"#B5A5D7\",\n 3: \"#CEC3E4 \",\n 4: \"#E2DBEF\",\n 5: \"#F2EFF8\",\n 6: \"#F7F6FB\",\n },\n },\n Neutral: {\n 1: \"#282828\", // Text Black\n 2: \"#424242\",\n 3: \"#686868\", // Text Grey\n 4: \"#A4A4A4\",\n 5: \"#E0E4E5\",\n 6: \"#ECEFEF\",\n 7: \"#F8F8F8\",\n 8: \"#FFFFFF\",\n },\n Validation: {\n Green: {\n Text: \"#097123\", // Validation Text\n Icon: \"#4FC029\",\n Border: \"#95D97F\",\n Background: \"#F9FDF8\", // Validation Background\n },\n Orange: {\n Text: \"#B34E00\", // Validation Text\n Icon: \"#FEAB10\",\n Border: \"#F9CB77\",\n Background: \"#FFFCF7\", // Validation Background\n Badge: \"#F57F17\", // Orange Badge Notification\n },\n Red: {\n Text: \"#C60000\", // Validation Text\n Icon: \"#C60000\",\n Border: \"#DD6666\",\n Background: \"#FDF7F7\", // Validation Background\n },\n Blue: {\n Text: \"#064D70\", // Validation Text\n Icon: \" #066391\",\n Border: \"#84B7DB\",\n Background: \"#E8F4FA\", // Validation Background\n },\n } as ValidationTypes,\n Shadow: {\n Accent: \"rgba(161, 87, 255, 0.5)\",\n Red: \"rgba(221, 102, 102, 0.8)\",\n Elevation: \"rgba(75, 83, 159, 0.24)\",\n },\n};\n","import { ColorSet, ValidationTypes } from \"../../color/types\";\n\nexport const RBSColorSet: ColorSet = {\n Brand: {\n 1: \"#3E4DFF\",\n 2: \"#AEACFF\",\n 3: \"#AD44FF\",\n 4: \"#F9B5B2\",\n 5: \"#FDDDD7\",\n 6: \"#FFEEEA\",\n },\n Primary: \"#4855D4\",\n PrimaryDark: \"#3E49B2\",\n Secondary: \"#364891\",\n Accent: {\n Dark: {\n 1: \"#5E516E\",\n 2: \"#7A6F87\",\n 3: \"#C5C0CC\",\n },\n Light: {\n 1: \"#8397FC\",\n 2: \"#ABB8FC\",\n 3: \"#CED6FD \",\n 4: \"#E1E4FA\",\n 5: \"#F0F2FF\",\n 6: \"#FAFBFF\",\n },\n },\n Neutral: {\n 1: \"#282828\",\n 2: \"#424242\",\n 3: \"#686868\",\n 4: \"#A4A4A4\",\n 5: \"#E0E4E5\",\n 6: \"#ECEFEF\",\n 7: \"#F8F8F8\",\n 8: \"#FFFFFF\",\n },\n Validation: {\n Green: {\n Text: \"#097123\",\n Icon: \"#4FC029\",\n Border: \"#95D97F\",\n Background: \"#F9FDF8\",\n },\n Orange: {\n Text: \"#B34E00\",\n Icon: \"#FEAB10\",\n Border: \"#F9CB77\",\n Background: \"#FFFCF7\",\n Badge: \"#F57F17\",\n },\n Red: {\n Text: \"#C60000\",\n Icon: \"#C60000\",\n Border: \"#DD6666\",\n Background: \"#FDF7F7\",\n },\n Blue: {\n Text: \"#064D70\",\n Icon: \" #066391\",\n Border: \"#84B7DB\",\n Background: \"#E8F4FA\",\n },\n } as ValidationTypes,\n Shadow: {\n Accent: \"rgba(90, 87, 255, 0.5)\",\n Red: \"rgba(221, 102, 102, 0.8)\",\n Elevation: \"rgba(75, 83, 159, 0.24)\",\n },\n};\n","import { ColorSet, ValidationTypes } from \"../../color/types\";\n\nexport const MyLegacyColorSet: ColorSet = {\n Brand: {\n 1: \"#24588D\",\n 2: \"#FFC166\",\n 3: \"#F58E8B\",\n 4: \"#F9B5B2\",\n 5: \"#FDDDD7\",\n 6: \"#FFEEEA\",\n },\n Primary: \"#0C7BB3\",\n PrimaryDark: \"#066391\",\n Secondary: \"#066391\",\n Accent: {\n Dark: {\n 1: \"#4B539F\",\n 2: \"#6D74B1\",\n 3: \"#959BC5\",\n },\n Light: {\n 1: \"#229AD6\",\n 2: \"#8DD4F7\",\n 3: \"#A4DDF9\",\n 4: \"#BBE5FA\",\n 5: \"#E8F4FA\",\n 6: \"#F7FBFC\",\n },\n },\n Neutral: {\n 1: \"#282828\",\n 2: \"#424242\",\n 3: \"#686868\",\n 4: \"#A4A4A4\",\n 5: \"#E0E4E5\",\n 6: \"#ECEFEF\",\n 7: \"#F8F8F8\",\n 8: \"#FFFFFF\",\n },\n Validation: {\n Green: {\n Text: \"#1A5230\", // Validation Text\n Icon: \"#2A854E\",\n Border: \"#7DDBA3\",\n Background: \"#E1FAEB\", // Validation Background\n },\n Orange: {\n Text: \"#693D07\", // Validation Text\n Icon: \"#CF7911\",\n Border: \"#F9CB77\",\n Background: \"#FCF2E6\", // Validation Background\n Badge: \"#F57F17\", // Orange Badge Notification\n },\n Red: {\n Text: \"#CB2213\", // Validation Text\n Icon: \"#CB2213\",\n Border: \"#DC6363\",\n Background: \"#FAF0F0\", // Validation Background\n },\n Blue: {\n Text: \"#064D70\", // Validation Text\n Icon: \" #066391\",\n Border: \"#84B7DB\",\n Background: \"#E8F4FA\", // Validation Background\n },\n } as ValidationTypes,\n Shadow: {\n Accent: \"rgba(34, 154, 214, 0.6)\",\n Red: \"rgba(203, 34, 19, 0.5)\",\n Elevation: \"rgba(75, 83, 159, 0.24)\",\n },\n};\n","import { ColorSet, ValidationTypes } from \"../../color\";\n\nexport const CCubeColorSet: ColorSet = {\n Brand: {\n 1: \"#8D5197\",\n 2: \"#FE3399\",\n 3: \"#F58E8B\",\n 4: \"#F9B5B2\",\n 5: \"#FDDDD7\",\n 6: \"#FFEEEA\",\n },\n Primary: \"#8D5197\",\n PrimaryDark: \"#6B3E73\",\n Secondary: \"#C02673\",\n Accent: {\n Dark: {\n 1: \"#921D58\",\n 2: \"#FF409F\",\n 3: \"#FF88C4\",\n },\n Light: {\n 1: \"#B07DB7\",\n 2: \"#C7A2CC\",\n 3: \"#D9C2DD\",\n 4: \"#E9DBEB\",\n 5: \"#F3ECF4\",\n 6: \"#FAF7FA\",\n },\n },\n Neutral: {\n 1: \"#282828\", // Text Black\n 2: \"#424242\",\n 3: \"#686868\", // Text Grey\n 4: \"#A4A4A4\",\n 5: \"#E0E4E5\",\n 6: \"#ECEFEF\",\n 7: \"#F8F8F8\",\n 8: \"#FFFFFF\",\n },\n Validation: {\n Green: {\n Text: \"#097123\", // Validation Text\n Icon: \"#4FC029\",\n Border: \"#95D97F\",\n Background: \"#F9FDF8\", // Validation Background\n },\n Orange: {\n Text: \"#B34E00\", // Validation Text\n Icon: \"#FEAB10\",\n Border: \"#F9CB77\",\n Background: \"#FFFCF7\", // Validation Background\n Badge: \"#F57F17\", // Orange Badge Notification\n },\n Red: {\n Text: \"#C60000\", // Validation Text\n Icon: \"#C60000\",\n Border: \"#DD6666\",\n Background: \"#FDF7F7\", // Validation Background\n },\n Blue: {\n Text: \"#064D70\", // Validation Text\n Icon: \" #066391\",\n Border: \"#84B7DB\",\n Background: \"#E8F4FA\", // Validation Background\n },\n } as ValidationTypes,\n Shadow: {\n Accent: \"rgba(210, 77, 255, 0.5)\",\n Red: \"rgba(221, 102, 102, 0.8)\",\n Elevation: \"rgba(75, 83, 159, 0.24)\",\n },\n};\n","import { getThemeColors } from \"../theme/color-theme-helper\";\nimport { PropertiesToType } from \"../util/utility-types\";\nimport { ColorSet } from \"./types\";\n\nexport const Color: PropertiesToType<\n ColorSet,\n ReturnType<typeof getThemeColors>\n> = {\n Brand: {\n 1: getThemeColors(\"Brand.1\"),\n 2: getThemeColors(\"Brand.2\"),\n 3: getThemeColors(\"Brand.3\"),\n 4: getThemeColors(\"Brand.4\"),\n 5: getThemeColors(\"Brand.5\"),\n 6: getThemeColors(\"Brand.6\"),\n },\n Primary: getThemeColors(\"Primary\"),\n PrimaryDark: getThemeColors(\"PrimaryDark\"),\n Secondary: getThemeColors(\"Secondary\"),\n Accent: {\n Light: {\n 1: getThemeColors(\"Accent.Light.1\"),\n 2: getThemeColors(\"Accent.Light.2\"),\n 3: getThemeColors(\"Accent.Light.3\"),\n 4: getThemeColors(\"Accent.Light.4\"),\n 5: getThemeColors(\"Accent.Light.5\"),\n 6: getThemeColors(\"Accent.Light.6\"),\n },\n Dark: {\n 1: getThemeColors(\"Accent.Dark.1\"),\n 2: getThemeColors(\"Accent.Dark.2\"),\n 3: getThemeColors(\"Accent.Dark.3\"),\n },\n },\n Neutral: {\n 1: getThemeColors(\"Neutral.1\"),\n 2: getThemeColors(\"Neutral.2\"),\n 3: getThemeColors(\"Neutral.3\"),\n 4: getThemeColors(\"Neutral.4\"),\n 5: getThemeColors(\"Neutral.5\"),\n 6: getThemeColors(\"Neutral.6\"),\n 7: getThemeColors(\"Neutral.7\"),\n 8: getThemeColors(\"Neutral.8\"),\n },\n Validation: {\n Green: {\n Text: getThemeColors(\"Validation.Green.Text\"),\n Icon: getThemeColors(\"Validation.Green.Icon\"),\n Border: getThemeColors(\"Validation.Green.Border\"),\n Background: getThemeColors(\"Validation.Green.Background\"),\n },\n Orange: {\n Text: getThemeColors(\"Validation.Orange.Text\"),\n Icon: getThemeColors(\"Validation.Orange.Icon\"),\n Border: getThemeColors(\"Validation.Orange.Border\"),\n Background: getThemeColors(\"Validation.Orange.Background\"),\n Badge: getThemeColors(\"Validation.Orange.Badge\"),\n },\n Red: {\n Text: getThemeColors(\"Validation.Red.Text\"),\n Icon: getThemeColors(\"Validation.Red.Icon\"),\n Border: getThemeColors(\"Validation.Red.Border\"),\n Background: getThemeColors(\"Validation.Red.Background\"),\n },\n Blue: {\n Text: getThemeColors(\"Validation.Blue.Text\"),\n Icon: getThemeColors(\"Validation.Blue.Icon\"),\n Border: getThemeColors(\"Validation.Blue.Border\"),\n Background: getThemeColors(\"Validation.Blue.Background\"),\n },\n },\n Shadow: {\n Accent: getThemeColors(\"Shadow.Accent\"),\n Red: getThemeColors(\"Shadow.Red\"),\n Elevation: getThemeColors(\"Shadow.Elevation\"),\n },\n};\n","import { MediaWidth } from \"../media/types\";\n\nexport const MediaWidths: MediaWidth = {\n mobileS: 320,\n mobileM: 375,\n mobileL: 480,\n tablet: 1199,\n desktopM: 1399,\n desktopL: 1999,\n desktop4k: 3840,\n};\n","import { MediaWidths as MediaWidthsSpec } from \"../spec/media-spec\";\nimport { MediaType, MediaWidth } from \"./types\";\n\n// =============================================================================\n// HELPER FUNCTION\n// =============================================================================\nconst getMediaQuerySpec = (type: \"max-width\" | \"min-width\") => {\n return Object.keys(MediaWidthsSpec).reduce((accumulator, key) => {\n const mediaWidth = MediaWidthsSpec[key as keyof MediaWidth];\n accumulator[\n key as keyof MediaType\n ] = `@media screen and (${type}: ${mediaWidth}px)`;\n\n return accumulator;\n }, {} as MediaType);\n};\n\n// =============================================================================\n// EXPORTS\n// =============================================================================\nexport const MediaQuery = {\n MaxWidth: getMediaQuerySpec(\"max-width\"),\n MinWidth: getMediaQuerySpec(\"min-width\"),\n};\n\nexport const MediaWidths = MediaWidthsSpec;\n","import styled, { css } from \"styled-components\";\nimport { MediaQuery } from \"../media/media\";\n\n// =============================================================================\n// STYLE INTERFACES\n// =============================================================================\nexport interface StyledDivStyleProps {\n $desktopStart?: number | undefined;\n $desktopSpan?: number | undefined;\n $tabletStart?: number | undefined;\n $tabletSpan?: number | undefined;\n $mobileStart?: number | undefined;\n $mobileSpan?: number | undefined;\n}\n\n// =============================================================================\n// STYLING\n// =============================================================================\nexport const StyledDiv = styled.div<StyledDivStyleProps>`\n position: relative;\n ${(props) => {\n const {\n $desktopStart,\n $desktopSpan,\n $tabletStart,\n $tabletSpan,\n $mobileStart,\n $mobileSpan,\n } = props;\n\n return css`\n grid-column: ${$desktopStart || \"auto\"} / span ${$desktopSpan || 1};\n\n ${MediaQuery.MaxWidth.tablet} {\n grid-column: ${$tabletStart || \"auto\"} / span\n ${$tabletSpan || 1};\n }\n\n ${MediaQuery.MaxWidth.mobileL} {\n grid-column: ${$mobileStart || \"auto\"} / span\n ${$mobileSpan || 1};\n }\n `;\n }}\n`;\n","import React from \"react\";\nimport { ColDivProps, DivRef } from \"./types\";\nimport { StyledDiv, StyledDivStyleProps } from \"./col-div.style\";\n\nconst Component = (props: ColDivProps, ref: DivRef): JSX.Element => {\n const { mobileCols, tabletCols, desktopCols, ...otherProps } = props;\n\n const getStyleProps = (): StyledDivStyleProps => {\n const desktopValues = desktopCols || tabletCols || mobileCols;\n const tabletValues = tabletCols || mobileCols;\n const mobileValues = mobileCols;\n\n const desktopStartSpan = extractStartAndSpan(desktopValues);\n const tabletStartSpan = extractStartAndSpan(tabletValues);\n const mobileStartSpan = extractStartAndSpan(mobileValues);\n\n const styles = {\n $desktopSpan: desktopStartSpan.span,\n $desktopStart: desktopStartSpan.start,\n $mobileSpan: mobileStartSpan.span,\n $mobileStart: mobileStartSpan.start,\n $tabletSpan: tabletStartSpan.span,\n $tabletStart: tabletStartSpan.start,\n };\n\n return styles;\n };\n\n return <StyledDiv ref={ref} {...getStyleProps()} {...otherProps} />;\n};\n\nexport const ColDiv = React.forwardRef(Component);\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\nconst extractStartAndSpan = (value: number | number[] | undefined) => {\n if (Array.isArray(value) && value.length > 1) {\n const [firstVal, secondVal] = value; // Will just take the first 2\n\n const startVal = firstVal <= secondVal ? firstVal : secondVal;\n const endVal = firstVal <= secondVal ? secondVal : firstVal;\n\n let span;\n\n if (endVal === startVal) {\n span = 1;\n } else {\n span = endVal - startVal;\n }\n\n return { start: startVal, span };\n } else if (typeof value === \"number\") {\n return { start: undefined, span: value };\n } else {\n return { start: undefined, span: undefined };\n }\n};\n","import React from \"react\";\nimport styled, { css } from \"styled-components\";\nimport { MediaQuery } from \"../media/media\";\nimport { ContainerProps, ContainerType, DivRef } from \"./types\";\n\nconst Component = (props: ContainerProps, ref: DivRef): JSX.Element => {\n const {\n children,\n \"data-testid\": testId = \"container\",\n type = \"flex\",\n stretch = false,\n ...otherProps\n } = props;\n\n return (\n <StyledContainer\n ref={ref}\n data-testid={testId}\n $type={type}\n $stretch={stretch}\n {...otherProps}\n >\n {children}\n </StyledContainer>\n );\n};\n\n// =============================================================================\n// EXPORT\n// =============================================================================\nexport const Container = React.forwardRef(Component);\n\n// =============================================================================\n// STYLING\n// =============================================================================\ninterface StyleProps {\n $type: ContainerType;\n $stretch: boolean;\n}\n\nconst StyledContainer = styled.div<StyleProps>`\n flex-grow: 1;\n margin: 0 auto;\n position: relative;\n width: auto;\n height: auto;\n\n ${(props) => {\n if (props.$stretch) {\n return css`\n padding: 0 3rem;\n `;\n } else {\n return css`\n padding: 0 0.75rem;\n /* Max width restrictions */\n max-width: 1320px;\n\n ${MediaQuery.MaxWidth.desktopM} {\n max-width: 1140px;\n }\n `;\n }\n }}\n ${MediaQuery.MaxWidth.tablet} {\n max-width: 720px;\n }\n ${MediaQuery.MaxWidth.mobileL} {\n width: 100%;\n padding: 0;\n max-width: unset;\n }\n\n ${(props) => {\n switch (props.$type) {\n case \"grid\":\n return css`\n column-gap: 2rem;\n display: grid;\n grid-template-columns: repeat(12, minmax(0, 1fr));\n\n ${MediaQuery.MaxWidth.tablet} {\n column-gap: 1.5rem;\n grid-template-columns: repeat(8, minmax(0, 1fr));\n }\n\n ${MediaQuery.MaxWidth.mobileL} {\n column-gap: 1rem;\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n `;\n case \"flex-column\":\n return css`\n display: flex;\n flex-direction: column;\n `;\n case \"flex\":\n default:\n return css`\n display: flex;\n `;\n }\n }}\n`;\n","import React from \"react\";\nimport styled, { css } from \"styled-components\";\nimport { DivRef, SectionProps } from \"./types\";\nimport { MediaQuery } from \"../media\";\n\nconst Component = (props: SectionProps, ref: DivRef): JSX.Element => {\n const {\n children,\n \"data-testid\": testId = \"section\",\n stretch = false,\n ...otherProps\n } = props;\n\n return (\n <StyledSection\n ref={ref}\n data-testid={testId}\n $stretch={stretch}\n {...otherProps}\n >\n {children}\n </StyledSection>\n );\n};\n\n// =============================================================================\n// EXPORT\n// =============================================================================\nexport const Section = React.forwardRef(Component);\n\n// =============================================================================\n// STYLING\n// =============================================================================\ninterface StyleProps {\n $stretch: boolean;\n}\n\nconst StyledSection = styled.section<StyleProps>`\n display: block;\n position: relative;\n ${(props) => {\n if (props.$stretch) {\n return css`\n ${MediaQuery.MaxWidth.tablet} {\n padding: 0 1.5rem;\n\n // Extra enforcement\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n `;\n } else {\n return css`\n padding: 0 1.5rem;\n\n // Extra enforcement\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n `;\n }\n }}\n`;\n","import React from \"react\";\nimport { Container } from \"./container\";\nimport { Section } from \"./section\";\nimport { ContentProps, DivRef } from \"./types\";\n\nconst Component = (props: ContentProps, ref: DivRef): JSX.Element => {\n const {\n children,\n \"data-testid\": testId = \"content\",\n className,\n type = \"flex\",\n stretch = false,\n ...otherProps\n } = props;\n\n return (\n <Section\n ref={ref}\n data-testid={testId}\n className={className}\n stretch={stretch}\n {...otherProps}\n >\n <Container\n data-testid={`${testId}-container`}\n type={type}\n data-id=\"container\"\n stretch={stretch}\n >\n {children}\n </Container>\n </Section>\n );\n};\n\n// =============================================================================\n// EXPORT\n// =============================================================================\nexport const Content = React.forwardRef(Component);\n","import { ColDiv } from \"./col-div\";\nimport { Container } from \"./container\";\nimport { Content } from \"./content\";\nimport { Section } from \"./section\";\n\nexport const Layout = {\n Section,\n Container,\n Content,\n ColDiv,\n};\n\nexport * from \"./types\";\n","import styled, { css } from \"styled-components\";\nimport { Color } from \"../../color/color\";\n\ninterface StyleProps {\n $outline: \"none\" | \"browser\";\n $highlight: boolean;\n}\n\nexport const Main = styled.button<StyleProps>`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 1.5rem;\n background-color: transparent;\n border: none;\n cursor: pointer;\n\n img {\n height: 1rem;\n width: 1rem;\n }\n\n svg {\n height: 1.125rem;\n width: 1.125rem;\n }\n\n &:active,\n &:focus {\n ${({ $outline }) => $outline === \"none\" && \"outline: none;\"}\n\n ${({ $highlight }) =>\n $highlight &&\n css`\n background-color: ${Color.Neutral[7]};\n `}\n }\n`;\n","import React from \"react\";\nimport { Main } from \"./clickable-icon.style\";\nimport { ClickableIconProps } from \"./types\";\n\nconst Component = (\n {\n children,\n focusHighlight = true,\n focusOutline = \"none\",\n type = \"button\",\n ...otherProps\n }: ClickableIconProps,\n ref: React.Ref<HTMLButtonElement>\n) => {\n return (\n <Main\n ref={ref}\n $outline={focusOutline}\n $highlight={focusHighlight}\n type={type}\n {...otherProps}\n >\n {children}\n </Main>\n );\n};\n\nexport const ClickableIcon = React.forwardRef(Component);\n","export const FontFamily = {\n OpenSans: {\n Regular: \"Open Sans\",\n Semibold: \"Open Sans Semibold\",\n Bold: \"Open Sans Bold\",\n Light: \"Open Sans Light\",\n },\n MerriWeather: \"Merriweather\",\n};\n","import { BaseTextStyleSet } from \"../spec/text-spec/base-text-style-set\";\nimport { TextStyleSetType } from \"../text/types\";\nimport { getCollection, getValue } from \"./helper\";\nimport {\n FontStyleCollectionsMap,\n TextStyleScheme,\n ThemeCollectionSpec,\n ThemeContextKeys,\n ThemeSpec,\n} from \"./types\";\n\n// =============================================================================\n// THEME SPECIFICATION\n// =============================================================================\nconst TextStyleSpec: ThemeCollectionSpec<\n FontStyleCollectionsMap,\n TextStyleScheme\n> = {\n collections: {\n base: BaseTextStyleSet,\n },\n defaultValue: \"base\",\n};\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\nexport const getThemeTextStyles = (attributePath: string) => {\n return (props: any): string | number => {\n const theme = props.theme as ThemeSpec;\n const textStyleSet: TextStyleSetType = getCollection(\n TextStyleSpec,\n theme[ThemeContextKeys.textStyleScheme]\n );\n\n return theme.options && theme.options.textStyle\n ? getValue(textStyleSet, attributePath, theme.options.textStyle)\n : getValue(textStyleSet, attributePath);\n };\n};\n","import { FontFamily } from \"./font-spec\";\nimport { TextStyleSetType } from \"../../text/types\";\n\n// In rem unit\nexport const BaseTextStyleSet: TextStyleSetType = {\n D1: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 3,\n fontWeight: 700,\n lineHeight: 4,\n letterSpacing: -0.056,\n },\n D2: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 2.5,\n fontWeight: 700,\n lineHeight: 3.5,\n letterSpacing: -0.032,\n },\n D3: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 1.625,\n fontWeight: 700,\n lineHeight: 2.25,\n },\n D4: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 1.375,\n fontWeight: 700,\n lineHeight: 1.75,\n },\n DBody: {\n fontFamily: FontFamily.OpenSans.Regular,\n fontSize: 1.375,\n lineHeight: 1.75,\n },\n H1: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 2,\n fontWeight: 700,\n lineHeight: 2.5,\n },\n H2: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 1.625,\n fontWeight: 700,\n lineHeight: 2.25,\n },\n H3: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 1.375,\n fontWeight: 700,\n lineHeight: 1.75,\n },\n H4: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 1.125,\n fontWeight: 700,\n lineHeight: 1.625,\n },\n H5: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 1,\n fontWeight: 700,\n lineHeight: 1.5,\n letterSpacing: 0.014,\n },\n H6: {\n fontFamily: FontFamily.OpenSans.Bold,\n fontSize: 0.875,\n fontWeight: 700,\n lineHeight: 1.6,\n letterSpacing: 0.012,\n },\n Body: {\n fontFamily: FontFamily.OpenSans.Regular,\n fontSize: 1.125,\n lineHeight: 1.625,\n },\n BodySmall: {\n fontFamily: FontFamily.OpenSans.Regular,\n fontSize: 1,\n lineHeight: 1.5,\n letterSpacing: 0.014,\n },\n XSmall: {\n fontFamily: FontFamily.OpenSans.Regular,\n fontSize: 0.75,\n lineHeight: 1.2,\n letterSpacing: 0.012,\n },\n};\n","import { getThemeTextStyles } from \"../theme/text-theme-helper\";\nimport { PropertiesToType } from \"../util/utility-types\";\nimport { TextStyleSetType } from \"./types\";\n\nexport const TextStyle: PropertiesToType<\n TextStyleSetType,\n ReturnType<typeof getThemeTextStyles>\n> = {\n D1: {\n fontFamily: getThemeTextStyles(\"D1.fontFamily\"),\n fontSize: getThemeTextStyles(\"D1.fontSize\"),\n fontWeight: getThemeTextStyles(\"D1.fontWeight\"),\n lineHeight: getThemeTextStyles(\"D1.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"D1.letterSpacing\"),\n },\n D2: {\n fontFamily: getThemeTextStyles(\"D2.fontFamily\"),\n fontSize: getThemeTextStyles(\"D2.fontSize\"),\n fontWeight: getThemeTextStyles(\"D2.fontWeight\"),\n lineHeight: getThemeTextStyles(\"D2.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"D2.letterSpacing\"),\n },\n D3: {\n fontFamily: getThemeTextStyles(\"D3.fontFamily\"),\n fontSize: getThemeTextStyles(\"D3.fontSize\"),\n fontWeight: getThemeTextStyles(\"D3.fontWeight\"),\n lineHeight: getThemeTextStyles(\"D3.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"D3.letterSpacing\"),\n },\n D4: {\n fontFamily: getThemeTextStyles(\"D4.fontFamily\"),\n fontSize: getThemeTextStyles(\"D4.fontSize\"),\n fontWeight: getThemeTextStyles(\"D4.fontWeight\"),\n lineHeight: getThemeTextStyles(\"D4.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"D4.letterSpacing\"),\n },\n DBody: {\n fontFamily: getThemeTextStyles(\"DBody.fontFamily\"),\n fontSize: getThemeTextStyles(\"DBody.fontSize\"),\n fontWeight: getThemeTextStyles(\"DBody.fontWeight\"),\n lineHeight: getThemeTextStyles(\"DBody.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"DBody.letterSpacing\"),\n },\n H1: {\n fontFamily: getThemeTextStyles(\"H1.fontFamily\"),\n fontSize: getThemeTextStyles(\"H1.fontSize\"),\n fontWeight: getThemeTextStyles(\"H1.fontWeight\"),\n lineHeight: getThemeTextStyles(\"H1.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"H1.letterSpacing\"),\n },\n H2: {\n fontFamily: getThemeTextStyles(\"H2.fontFamily\"),\n fontSize: getThemeTextStyles(\"H2.fontSize\"),\n fontWeight: getThemeTextStyles(\"H2.fontWeight\"),\n lineHeight: getThemeTextStyles(\"H2.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"H2.letterSpacing\"),\n },\n H3: {\n fontFamily: getThemeTextStyles(\"H3.fontFamily\"),\n fontSize: getThemeTextStyles(\"H3.fontSize\"),\n fontWeight: getThemeTextStyles(\"H3.fontWeight\"),\n lineHeight: getThemeTextStyles(\"H3.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"H3.letterSpacing\"),\n },\n H4: {\n fontFamily: getThemeTextStyles(\"H4.fontFamily\"),\n fontSize: getThemeTextStyles(\"H4.fontSize\"),\n fontWeight: getThemeTextStyles(\"H4.fontWeight\"),\n lineHeight: getThemeTextStyles(\"H4.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"H4.letterSpacing\"),\n },\n H5: {\n fontFamily: getThemeTextStyles(\"H5.fontFamily\"),\n fontSize: getThemeTextStyles(\"H5.fontSize\"),\n fontWeight: getThemeTextStyles(\"H5.fontWeight\"),\n lineHeight: getThemeTextStyles(\"H5.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"H5.letterSpacing\"),\n },\n H6: {\n fontFamily: getThemeTextStyles(\"H6.fontFamily\"),\n fontSize: getThemeTextStyles(\"H6.fontSize\"),\n fontWeight: getThemeTextStyles(\"H6.fontWeight\"),\n lineHeight: getThemeTextStyles(\"H6.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"H6.letterSpacing\"),\n },\n Body: {\n fontFamily: getThemeTextStyles(\"Body.fontFamily\"),\n fontSize: getThemeTextStyles(\"Body.fontSize\"),\n fontWeight: getThemeTextStyles(\"Body.fontWeight\"),\n lineHeight: getThemeTextStyles(\"Body.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"Body.letterSpacing\"),\n },\n BodySmall: {\n fontFamily: getThemeTextStyles(\"BodySmall.fontFamily\"),\n fontSize: getThemeTextStyles(\"BodySmall.fontSize\"),\n fontWeight: getThemeTextStyles(\"BodySmall.fontWeight\"),\n lineHeight: getThemeTextStyles(\"BodySmall.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"BodySmall.letterSpacing\"),\n },\n XSmall: {\n fontFamily: getThemeTextStyles(\"XSmall.fontFamily\"),\n fontSize: getThemeTextStyles(\"XSmall.fontSize\"),\n fontWeight: getThemeTextStyles(\"XSmall.fontWeight\"),\n lineHeight: getThemeTextStyles(\"XSmall.lineHeight\"),\n letterSpacing: getThemeTextStyles(\"XSmall.letterSpacing\"),\n },\n};\n","import { css } from \"styled-components\";\nimport { FontFamily } from \"../spec/text-spec/font-spec\";\nimport { TextLinkSizeType, TextSizeType, TextWeight } from \"./types\";\nimport { TextStyle } from \"./text-style\";\n\n// =============================================================================\n// FONT STYLE\n// =============================================================================\nconst getFont = (weight: TextWeight) => {\n switch (weight) {\n case 700:\n case \"bold\":\n return FontFamily.OpenSans.Bold;\n case 600:\n case \"semibold\":\n return FontFamily.OpenSans.Semibold;\n case 300:\n case \"light\":\n return FontFamily.OpenSans.Light;\n case 400:\n case \"regular\":\n return FontFamily.OpenSans.Regular;\n default:\n return \"\";\n }\n};\n\nconst getFontFamily = (\n type: TextSizeType | TextLinkSizeType,\n weight?: TextWeight\n) => {\n return (props: any) => {\n const fontFamilyFromTheme = TextStyle[type].fontFamily(props) as string;\n const fontWeightFromTheme = TextStyle[type].fontWeight(\n props\n ) as TextWeight;\n\n if (Object.values(FontFamily.OpenSans).includes(fontFamilyFromTheme)) {\n return css`\n font-family: ${getFont(weight) ||\n getFont(fontWeightFromTheme) ||\n fontFamilyFromTheme};\n font-weight: normal !important;\n `;\n }\n\n return css`\n font-family: ${fontFamilyFromTheme};\n font-weight: ${(getFontWeight(weight) || fontWeightFromTheme) ??\n \"normal\"};\n `;\n };\n};\n\nconst getFontWeight = (weight: TextWeight) => {\n switch (weight) {\n case 300:\n case \"light\":\n return 300;\n case 400:\n case \"regular\":\n return 400;\n case 600:\n case \"semibold\":\n return 600;\n case 700:\n case \"bold\":\n return 700;\n case 900:\n case \"black\":\n return 900;\n default:\n return \"\";\n }\n};\n\n// =============================================================================\n// TEXT STYLE\n// =============================================================================\nconst getMaxLinesLineStyle = (maxLines: number | undefined) => {\n if (maxLines > 0) {\n return css`\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: ${maxLines};\n line-clamp: ${maxLines};\n overflow: hidden;\n `;\n }\n};\n\nconst getTextStyle = (\n type: TextSizeType | TextLinkSizeType,\n weight: TextWeight,\n paragraph = false\n) => {\n return (props: any) => {\n const attrs = TextStyle[type];\n const fontSize = attrs.fontSize(props) as number;\n\n // Add extra margin for paragraphs\n const getMarginBottomStyle = () => {\n const marginBottomScale = paragraph ? 1.05 : 0;\n return css`\n margin-bottom: ${fontSize * marginBottomScale}rem;\n `;\n };\n\n return css`\n ${getFontFamily(type, weight)}\n font-size: ${fontSize}rem !important;\n line-height: ${attrs.lineHeight}rem !important;\n letter-spacing: ${attrs.letterSpacing(props) || 0}rem !important;\n ${getMarginBottomStyle()}\n `;\n };\n};\n\nconst getDisplayStyle = (\n inline = false,\n paragraph = false,\n maxLines: number | undefined = undefined\n) => {\n if (paragraph) {\n return css`\n display: block;\n ${getMaxLinesLineStyle(maxLines)}\n `;\n } else if (inline) {\n return css`\n display: inline;\n `;\n } else {\n return css`\n display: block;\n ${getMaxLinesLineStyle(maxLines)}\n `;\n }\n};\n\n// =============================================================================\n// EXPORTS\n// =============================================================================\nexport const TextStyleHelper = {\n getFontFamily,\n getTextStyle,\n getDisplayStyle,\n};\n","import { ExternalIcon } from \"@lifesg/react-icons/external\";\nimport styled, { css } from \"styled-components\";\nimport { Color } from \"../color/color\";\nimport { TextStyleHelper } from \"./helper\";\nimport { TextLinkProps, TextLinkStyleProps, TextProps } from \"./types\";\n\nexport namespace Text {\n export const D1 = styled.h1<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"D1\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const D2 = styled.h1<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"D2\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const D3 = styled.h1<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"D3\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const D4 = styled.h1<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"D4\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const DBody = styled.h1<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"DBody\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const H1 = styled.h1<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"H1\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const H2 = styled.h2<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"H2\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const H3 = styled.h3<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"H3\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const H4 = styled.h4<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"H4\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const H5 = styled.h5<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"H5\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const H6 = styled.h6<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"H6\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const Body = styled.p<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"Body\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const BodySmall = styled.p<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"BodySmall\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const XSmall = styled.span<TextProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(\n \"XSmall\",\n props.weight,\n props.paragraph\n )}\n color: ${Color.Neutral[1]};\n ${TextStyleHelper.getDisplayStyle(\n props.inline,\n props.paragraph,\n props.maxLines\n )}\n `;\n }}\n `;\n\n export const Hyperlink = {\n Default: (props: TextLinkProps) =>\n HyperlinkComponent({ ...props, textStyle: \"Body\" }),\n Small: (props: TextLinkProps) =>\n HyperlinkComponent({ ...props, textStyle: \"BodySmall\" }),\n };\n}\n\n// =============================================================================\n// NON-EXPORTABLES\n// =============================================================================\n\nconst HyperlinkBase = styled.a<TextLinkStyleProps>`\n ${(props) => {\n return css`\n ${TextStyleHelper.getTextStyle(props.textStyle, props.weight)}\n color: ${Color.Primary};\n text-decoration: none;\n\n :hover,\n :active,\n :focus {\n color: ${Color.Secondary};\n\n svg {\n color: ${Color.Secondary};\n }\n }\n `;\n }}\n`;\n\nconst StyledExternalIcon = styled(ExternalIcon)`\n height: 1rem;\n width: 1rem;\n margin-left: 0.4rem;\n vertical-align: middle;\n`;\n\nconst HyperlinkComponent = ({\n external = false,\n children,\n ...rest\n}: TextLinkStyleProps) => {\n return (\n <HyperlinkBase {...rest}>\n {children}\n {external && <StyledExternalIcon />}\n </HyperlinkBase>\n );\n};\n","export type TextSizeType =\n | \"D1\"\n | \"D2\"\n | \"D3\"\n | \"D4\"\n | \"DBody\"\n | \"H1\"\n | \"H2\"\n | \"H3\"\n | \"H4\"\n | \"H5\"\n | \"H6\"\n | \"Body\"\n | \"BodySmall\"\n | \"XSmall\";\n\nexport type TextLinkSizeType =\n | \"Body\" // Default\n | \"BodySmall\"; // Small\n\nexport interface TextStyleSpec {\n fontFamily?: string | undefined;\n fontSize?: number | undefined;\n fontWeight?: number | undefined;\n lineHeight?: number | undefined;\n letterSpacing?: number | undefined;\n}\n\nexport type TextStyleSetType = { [key in TextSizeType]: TextStyleSpec };\n\nexport type TextStyleSetOptionsType = Partial<TextStyleSetType>;\n\nexport type TextWeight =\n | \"regular\"\n | \"semibold\"\n | \"bold\"\n | \"light\"\n | \"black\"\n | 400\n | 600\n | 700\n | 300\n | 900;\n\nexport enum RedirectScope {\n Subpage, // Pages we specified the routes (within this proj folder)\n Domain, // Pages not in the project but under the same domain name\n}\n\nexport interface TextProps extends React.HTMLAttributes<HTMLElement> {\n weight?: TextWeight | undefined;\n inline?: boolean | undefined;\n /** This is applicable only to non-headers */\n paragraph?: boolean | undefined;\n /** Specify the number of lines visible, the additional lines will be truncated */\n maxLines?: number | undefined;\n}\n\nexport interface TextLinkProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n weight?: TextWeight | undefined;\n /** Specifying this will add the external indicator */\n external?: boolean | undefined;\n}\n\nexport interface TextLinkStyleProps extends TextLinkProps {\n textStyle: TextLinkSizeType;\n}\n","const Base = \"all 300ms cubic-bezier(0.21, 0.79, 0.53, 1)\";\nconst Custom = (duration: number) =>\n `all ${duration}ms cubic-bezier(0.21, 0.79, 0.53, 1)`;\n\nexport const Transition = {\n Base,\n Custom,\n};\n","import { CrossIcon } from \"@lifesg/react-icons/cross\";\nimport styled, { css } from \"styled-components\";\nimport { Color } from \"../color\";\nimport { Layout } from \"../layout\";\nimport { ClickableIcon } from \"../shared/clickable-icon\";\nimport { Text, TextStyleHelper } from \"../text\";\nimport { Transition } from \"../transition\";\n\n// =============================================================================\n// STYLE INTERFACES, transient props are denoted with $\n// See more https://styled-components.com/docs/api#transient-props\n// =============================================================================\ninterface WrapperStyleProps {\n $sticky: boolean;\n $clickable: boolean;\n}\n\ninterface ContentStyleProps {\n $maxCollapsedHeight?: number;\n}\n\n// =============================================================================\n// STYLING\n// =============================================================================\nconst commonLinkStyle = css`\n color: ${Color.Validation.Orange.Icon};\n\n svg {\n color: ${Color.Validation.Orange.Icon};\n }\n\n :hover,\n :active,\n :visited,\n :focus {\n color: ${Color.Validation.Orange.Icon};\n svg {\n color: ${Color.Validation.Orange.Icon};\n }\n }\n`;\n\nexport const Wrapper = styled.div<WrapperStyleProps>`\n position: ${(props) => (props.$sticky ? \"sticky\" : \"relative\")};\n left: 0;\n top: 0;\n width: 100%;\n transition: ${Transition.Base};\n background: ${Color.Neutral[2]};\n z-index: 25;\n cursor: ${(props) => (props.$clickable ? \"pointer\" : \"default\")};\n`;\n\nexport const Container = styled(Layout.Content)`\n display: flex;\n`;\n\nexport const ContentContainer = styled.div`\n flex: 1;\n\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 1.5rem 0;\n`;\n\nexport const Content = styled.div<ContentStyleProps>`\n display: inline-block;\n width: 100%;\n\n ${TextStyleHelper.getTextStyle(\"Body\", \"regular\")}\n color: ${Color.Neutral[8]};\n\n p {\n display: inline-block;\n }\n\n strong {\n ${TextStyleHelper.getFontFamily(\"Body\", \"semibold\")}\n color: ${Color.Neutral[8]};\n }\n\n a {\n ${TextStyleHelper.getTextStyle(\"Body\", \"regular\")}\n ${commonLinkStyle}\n }\n\n ${(props) => {\n const gradient =\n \"linear-gradient(to bottom, black 50%, transparent 100%)\";\n if (props.$maxCollapsedHeight)\n return css`\n max-height: ${props.$maxCollapsedHeight}px;\n overflow: hidden;\n -webkit-mask-image: ${gradient};\n mask-image: ${gradient};\n `;\n }}\n`;\n\nexport const ContentLink = styled(Text.Hyperlink.Default)`\n position: relative;\n\n ${commonLinkStyle}\n`;\n\nexport const StyledIconButton = styled(ClickableIcon)`\n margin-right: -1.5rem;\n padding-left: 1rem;\n height: max-content;\n`;\n\nexport const StyledIcon = styled(CrossIcon)`\n height: 1.875rem;\n width: 1.875rem;\n color: ${Color.Neutral[8]};\n`;\n\nexport const ActionButton = styled.button`\n display: flex;\n align-items: center;\n gap: 0.25rem;\n\n margin-top: 0.5rem;\n\n border: none;\n background: transparent;\n color: ${Color.Validation.Orange.Icon};\n ${TextStyleHelper.getTextStyle(\"BodySmall\", \"semibold\")};\n\n cursor: pointer;\n`;\n\nexport const AccessibleBannerButton = styled.button`\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n`;\n","import React, { useEffect, useState } from \"react\";\nimport { useResizeDetector } from \"react-resize-detector\";\nimport {\n AccessibleBannerButton,\n ActionButton,\n Container,\n Content,\n ContentContainer,\n ContentLink as NBLink,\n StyledIcon,\n StyledIconButton,\n Wrapper,\n} from \"./notification-banner.styles\";\nimport {\n NotificationBannerProps,\n NotificationBannerWithForwardedRefProps,\n} from \"./types\";\n\nexport const NBComponent = ({\n children,\n visible = true,\n dismissible = true,\n sticky = true,\n onDismiss,\n id,\n forwardedRef,\n maxCollapsedHeight,\n onClick,\n actionButton,\n ...otherProps\n}: NotificationBannerWithForwardedRefProps): JSX.Element => {\n // =============================================================================\n // CONST, STATE, REF\n // =============================================================================\n const testId = otherProps[\"data-testid\"];\n\n const [isVisible, setVisible] = useState<boolean>(visible);\n const { height: contentHeight, ref: contentRef } = useResizeDetector();\n\n // =============================================================================\n // EFFECTS\n // =============================================================================\n useEffect(() => {\n setVisible(visible);\n }, [visible]);\n\n // =============================================================================\n // EVENT HANDLERS\n // =============================================================================\n const handleDismiss = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n setVisible(false);\n\n if (dismissible && onDismiss) onDismiss();\n };\n\n const handleActionButtonOnClick = (\n event: React.MouseEvent<HTMLButtonElement>\n ) => {\n if (!actionButton.onClick) {\n // let it bubble\n return;\n }\n event.stopPropagation();\n actionButton.onClick(event);\n };\n\n // =============================================================================\n // RENDER FUNCTIONS\n // =============================================================================\n if (!isVisible) return null;\n\n const renderDismissButton = () => (\n <StyledIconButton\n onClick={handleDismiss}\n id={formatId(\"dismiss-button\", id)}\n data-testid={formatId(\"dismiss-button\", testId)}\n focusHighlight={false}\n type=\"button\"\n >\n <StyledIcon />\n </StyledIconButton>\n );\n\n const renderActionButton = () => (\n <ActionButton\n id={formatId(\"action-button\", id)}\n data-testid={formatId(\"action-button\", testId)}\n type=\"button\"\n {...actionButton}\n onClick={handleActionButtonOnClick}\n >\n {actionButton.children}\n </ActionButton>\n );\n\n const renderContent = () => (\n <Content\n data-testid={formatId(\"text-content\", testId)}\n $maxCollapsedHeight={\n maxCollapsedHeight && contentHeight > maxCollapsedHeight\n ? maxCollapsedHeight\n : undefined\n }\n >\n <div ref={contentRef}>{children}</div>\n </Content>\n );\n\n const renderAccessibleBannerButton = () => (\n <AccessibleBannerButton aria-label={\"Clickable banner\"} type=\"button\" />\n );\n\n return (\n <Wrapper\n ref={forwardedRef}\n $sticky={sticky}\n $clickable={!!onClick}\n onClick={onClick}\n {...otherProps}\n >\n <Container id={formatId(\"container\", id)}>\n <ContentContainer>\n {renderContent()}\n {actionButton && renderActionButton()}\n </ContentContainer>\n {dismissible && renderDismissButton()}\n </Container>\n {onClick && renderAccessibleBannerButton()}\n </Wrapper>\n );\n};\n\n/**\n * Intermediate component to handle passing the ref as a prop\n */\nconst NBWithRef = (\n props: NotificationBannerProps,\n ref: React.Ref<HTMLDivElement>\n) => {\n return <NBComponent {...props} forwardedRef={ref} />;\n};\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\nconst formatId = (componentName: string, id = \"wrapper\"): string => {\n return `${id}-${componentName}`;\n};\n\n// =============================================================================\n// EXPORTABLE\n// =============================================================================\nconst Base = React.forwardRef(NBWithRef);\nexport const NotificationBanner = Object.assign(Base, {\n Link: NBLink,\n});\n","/*! @license DOMPurify 2.4.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.4.5/LICENSE */\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\nvar _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\nif (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\n\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\n\nif (!construct) {\n construct = function construct(Func, args) {\n return _construct(Func, _toConsumableArray(args));\n };\n}\n\nvar arrayForEach = unapply(Array.prototype.forEach);\nvar arrayPop = unapply(Array.prototype.pop);\nvar arrayPush = unapply(Array.prototype.push);\nvar stringToLowerCase = unapply(String.prototype.toLowerCase);\nvar stringToString = unapply(String.prototype.toString);\nvar stringMatch = unapply(String.prototype.match);\nvar stringReplace = unapply(String.prototype.replace);\nvar stringIndexOf = unapply(String.prototype.indexOf);\nvar stringTrim = unapply(String.prototype.trim);\nvar regExpTest = unapply(RegExp.prototype.test);\nvar typeErrorCreate = unconstruct(TypeError);\nfunction unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n}\nfunction unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n}\n/* Add properties to a lookup table */\n\nfunction addToSet(set, array, transformCaseFunc) {\n transformCaseFunc = transformCaseFunc ? transformCaseFunc : stringToLowerCase;\n\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n\n while (l--) {\n var element = array[l];\n\n if (typeof element === 'string') {\n var lcElement = transformCaseFunc(element);\n\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n/* Shallow clone an object */\n\nfunction clone(object) {\n var newObject = create(null);\n var property;\n\n for (property in object) {\n if (apply(hasOwnProperty, object, [property]) === true) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n}\n/* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\n\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n}\n\nvar html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']); // SVG\n\nvar svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nvar svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']); // List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\n\nvar svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nvar mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']); // Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\n\nvar mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nvar text = freeze(['#text']);\n\nvar html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\nvar svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nvar mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nvar xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\nvar MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n\nvar ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nvar TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\nvar DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n\nvar ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n\nvar IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nvar IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nvar ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nvar DOCTYPE_NAME = seal(/^html$/i);\n\nvar getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\n\n\nvar _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if (_typeof(trustedTypes) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n } // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n\n\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html) {\n return html;\n },\n createScriptURL: function createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\n\nfunction createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n\n\n DOMPurify.version = '2.4.5';\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === void 0 ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n HTMLFormElement = window.HTMLFormElement,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n var ElementPrototype = Element.prototype;\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode'); // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n\n var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n var documentMode = {};\n\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n var MUSTACHE_EXPR$1 = MUSTACHE_EXPR,\n ERB_EXPR$1 = ERB_EXPR,\n TMPLIT_EXPR$1 = TMPLIT_EXPR,\n DATA_ATTR$1 = DATA_ATTR,\n ARIA_ATTR$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(svgFilters), _toConsumableArray(mathMl$1), _toConsumableArray(text)));\n /* Allowed attribute names */\n\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(mathMl), _toConsumableArray(xml)));\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n\n var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n\n var FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n\n var FORBID_ATTR = null;\n /* Decide if ARIA attributes are okay */\n\n var ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n\n var ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n\n var ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n\n var SAFE_FOR_TEMPLATES = false;\n /* Decide if document with <html>... should be returned */\n\n var WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n\n var SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n\n var FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n\n var RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n\n var RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n\n var RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n\n var SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n\n var SANITIZE_NAMED_PROPS = false;\n var SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n\n var KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n\n var IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n\n var USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n\n var ALLOWED_NAMESPACES = null;\n var DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n /* Parsing of strict XHTML documents */\n\n var PARSER_MEDIA_TYPE;\n var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n var transformCaseFunc;\n /* Keep a reference to config to pass to hooks */\n\n var CONFIG = null;\n /* Ideally, do not touch anything below this line */\n\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n var isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n\n\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n\n\n if (!cfg || _typeof(cfg) !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n\n\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE; // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = 'ALLOWED_NAMESPACES' in cfg ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n\n\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, _toConsumableArray(text));\n ALLOWED_ATTR = [];\n\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n\n\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n\n\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n\n\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n\n\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n } // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n\n\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']); // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n\n var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n\n var ALL_SVG_TAGS = addToSet({}, svg$1);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n var ALL_MATHML_TAGS = addToSet({}, mathMl$1);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element); // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n } // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n\n\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n } // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n\n\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n } // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n\n\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n } // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n\n\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n } // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n\n\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n } // For XHTML and XML documents that support custom namespaces\n\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n } // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n\n\n return false;\n };\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n\n\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n\n\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name); // We void attribute values for unremovable \"is\"\" attributes\n\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n\n\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc;\n var leadingWhitespace;\n\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n\n\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {// Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n\n\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n\n\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n\n\n var _isClobbered = function _isClobbered(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function' || typeof elm.hasChildNodes !== 'function');\n };\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n\n\n var _isNode = function _isNode(object) {\n return _typeof(Node) === 'object' ? object instanceof Node : object && _typeof(object) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n\n\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n\n\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content;\n /* Execute a hook if present */\n\n _executeHook('beforeSanitizeElements', currentNode, null);\n /* Check if element is clobbered or can clobber */\n\n\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Check if tagname contains Unicode */\n\n\n if (regExpTest(/[\\u0080-\\uFFFF]/, currentNode.nodeName)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Now let's check the element's type and name */\n\n\n var tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n\n\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Mitigate a problem with templates inside select */\n\n\n if (tagName === 'select' && regExpTest(/<template/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Remove element if anything forbids its presence */\n\n\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false;\n }\n /* Keep content except for bad-listed elements */\n\n\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n var childCount = childNodes.length;\n\n for (var i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n\n return true;\n }\n /* Check whether element has a valid namespace */\n\n\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n\n return true;\n }\n\n if ((tagName === 'noscript' || tagName === 'noembed') && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Sanitize element content to be template-safe */\n\n\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR$1, ' ');\n content = stringReplace(content, ERB_EXPR$1, ' ');\n content = stringReplace(content, TMPLIT_EXPR$1, ' ');\n\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n\n\n var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n\n\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if ( // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if (!value) ; else {\n return false;\n }\n\n return true;\n };\n /**\n * _basicCustomElementCheck\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n * @param {string} tagName name of the tag of the node to sanitize\n */\n\n\n var _basicCustomElementTest = function _basicCustomElementTest(tagName) {\n return tagName.indexOf('-') > 0;\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n\n\n var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n var attr;\n var value;\n var lcName;\n var l;\n /* Execute a hook if present */\n\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n var attributes = currentNode.attributes;\n /* Check if we have attributes; if not we might have a text node */\n\n if (!attributes) {\n return;\n }\n\n var hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n\n while (l--) {\n attr = attributes[l];\n var _attr = attr,\n name = _attr.name,\n namespaceURI = _attr.namespaceURI;\n value = name === 'value' ? attr.value : stringTrim(attr.value);\n lcName = transformCaseFunc(name);\n /* Execute a hook if present */\n\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Remove attribute */\n\n\n _removeAttribute(name, currentNode);\n /* Did the hooks approve of the attribute? */\n\n\n if (!hookEvent.keepAttr) {\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n\n\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n\n\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR$1, ' ');\n value = stringReplace(value, ERB_EXPR$1, ' ');\n value = stringReplace(value, TMPLIT_EXPR$1, ' ');\n }\n /* Is `value` valid for this attribute? */\n\n\n var lcTag = transformCaseFunc(currentNode.nodeName);\n\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n\n\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode); // Prefix the value and later re-create the attribute with the sanitized value\n\n\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Handle attributes that require Trusted Types */\n\n\n if (trustedTypesPolicy && _typeof(trustedTypes) === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n value = trustedTypesPolicy.createHTML(value);\n break;\n\n case 'TrustedScriptURL':\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n\n\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n arrayPop(DOMPurify.removed);\n } catch (_) {}\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n\n\n var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n var shadowNode;\n\n var shadowIterator = _createIterator(fragment);\n /* Execute a hook if present */\n\n\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n /* Sanitize tags and elements */\n\n\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n /* Deep shadow DOM detected */\n\n\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n /* Check attributes, sanitize if necessary */\n\n\n _sanitizeAttributes(shadowNode);\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} configuration object\n */\n // eslint-disable-next-line complexity\n\n\n DOMPurify.sanitize = function (dirty) {\n var cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var body;\n var importedNode;\n var currentNode;\n var oldNode;\n var returnNode;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n\n IS_EMPTY_INPUT = !dirty;\n\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n\n\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n // eslint-disable-next-line no-negated-condition\n if (typeof dirty.toString !== 'function') {\n throw typeErrorCreate('toString is not a function');\n } else {\n dirty = dirty.toString();\n\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n }\n }\n /* Check we can run. Otherwise fall back or ignore */\n\n\n if (!DOMPurify.isSupported) {\n if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n if (typeof dirty === 'string') {\n return window.toStaticHTML(dirty);\n }\n\n if (_isNode(dirty)) {\n return window.toStaticHTML(dirty.outerHTML);\n }\n }\n\n return dirty;\n }\n /* Assign config vars */\n\n\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n\n\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n var tagName = transformCaseFunc(dirty.nodeName);\n\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n\n\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n\n\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n\n\n var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n\n\n while (currentNode = nodeIterator.nextNode()) {\n /* Fix IE's strange behavior with manipulated textNodes #89 */\n if (currentNode.nodeType === 3 && currentNode === oldNode) {\n continue;\n }\n /* Sanitize tags and elements */\n\n\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n /* Shadow DOM detected, sanitize it */\n\n\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n /* Check attributes, sanitize if necessary */\n\n\n _sanitizeAttributes(currentNode);\n\n oldNode = currentNode;\n }\n\n oldNode = null;\n /* If we sanitized `dirty` in-place, return it. */\n\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n\n\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmod) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n\n\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$1, ' ');\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR$1, ' ');\n serializedHTML = stringReplace(serializedHTML, TMPLIT_EXPR$1, ' ');\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n\n\n DOMPurify.setConfig = function (cfg) {\n _parseConfig(cfg);\n\n SET_CONFIG = true;\n };\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n\n\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {string} tag Tag name of containing element.\n * @param {string} attr Attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n\n\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n var lcTag = transformCaseFunc(tag);\n var lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n\n\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n * @return {Function} removed(popped) hook\n */\n\n\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n return arrayPop(hooks[entryPoint]);\n }\n };\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n\n\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n *\n */\n\n\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n}\n\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.js.map\n","import DOMPurify from \"dompurify\";\nimport React from \"react\";\nimport { NBComponent, NotificationBanner } from \"./notification-banner\";\nimport {\n ContentLinkAttributes,\n ContentTextAttributes,\n NotificationBannerWithForwardedRefProps,\n NotificationContentAttributes,\n} from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const withNotificationBanner = (\n data: NotificationContentAttributes[]\n) => {\n const ComponentToReturn = (\n props: NotificationBannerWithForwardedRefProps,\n ref: React.Ref<HTMLDivElement>\n ) => {\n const renderContent = () => {\n if (data.length > 0) {\n return data.map((attribute, index) => {\n if (attribute.type === \"text\") {\n const otherAttributes =\n attribute.otherAttributes as ContentTextAttributes;\n\n const sanitizedContent = DOMPurify.sanitize(\n attribute.content\n );\n return (\n <p\n key={index}\n {...otherAttributes}\n dangerouslySetInnerHTML={{\n __html: sanitizedContent,\n }}\n />\n );\n } else {\n const otherAttributes =\n attribute.otherAttributes as ContentLinkAttributes;\n return (\n <NotificationBanner.Link\n key={index}\n {...otherAttributes}\n >\n {attribute.content}\n </NotificationBanner.Link>\n );\n }\n });\n }\n\n console.error(\"[NotificationBannerHOC] Empty data passed\");\n return null;\n };\n\n return (\n <NBComponent forwardedRef={ref} {...props}>\n {renderContent()}\n </NBComponent>\n );\n };\n\n return React.forwardRef(ComponentToReturn);\n};\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__assign","assign","t","s","i","n","arguments","length","apply","this","commonjsGlobal","globalThis","window","global","self","isObject_1","value","type","freeGlobal","freeSelf","root$2","Function","root$1","now_1","Date","now","reWhitespace","trimmedEndIndex","string","index","test","charAt","reTrimStart","_baseTrim","slice","replace","_Symbol","Symbol","Symbol$1","objectProto$1","nativeObjectToString$1","toString","symToStringTag$1","toStringTag","undefined","_getRawTag","isOwn","tag","unmasked","e","result","nativeObjectToString","getRawTag","objectToString","symToStringTag","baseGetTag","isObjectLike","baseTrim","isObject$2","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","isObject$1","toNumber","other","valueOf","isBinary","nativeMax","Math","max","nativeMin","min","debounce_1","func","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","clearTimeout","cancel","flush","debounce","isObject","throttle_1","patchResizeHandler","resizeCallback","refreshMode","refreshRate","refreshOptions","isFunction","fn","isSSR","isDOMElement","element","Element","HTMLDocument","createNotifier","onResize","setSize","handleWidth","handleHeight","_a","width","height","prev","_super","ResizeDetector","props","_this","cancelHandler","resizeHandler","attachObserver","targetRef","observerOptions","current","getElement","observableElement","resizeObserver","observe","querySelector","targetDomEl","document","currentElement","findDOMNode","getRenderType","parentElement","createResizeHandler","entries","_b","_c","notifyResize","setState","bind","forEach","entry","contentRect","skipOnMount","render","children","isValidElement","isArray","state","createRef","ResizeObserver","String","__","constructor","create","__extends","componentDidMount","componentDidUpdate","componentWillUnmount","disconnect","typedChildren","nodeType","WrapperTag","childProps","nativeProps","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__rest","cloneElement","map","el","React","createElement","PureComponent","useEnhancedEffect","useEffect","useLayoutEffect","isArray_1","_root","require$$0","objectProto","require$$1","_baseGetTag","isSymbol_1","reIsDeepProp","reIsPlainProp","_isKey","object","uid","isFunction_1","coreJsData","maskSrcKey","exec","keys","IE_PROTO","_isMasked","funcToString","_toSource","isMasked","require$$2","toSource","require$$3","reIsHostCtor","funcProto","reIsNative","RegExp","baseIsNative","getValue","key","_getNative","_nativeCreate","nativeCreate","_hashClear","__data__","size","_hashDelete","has","_hashGet","data","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","clear","set","get","_Hash","_listCacheClear","eq","_assocIndexOf","array","assocIndexOf","splice","listCacheClear","listCacheDelete","pop","listCacheGet","listCacheHas","listCacheSet","push","ListCache","_ListCache","Map","isKeyable","_getMapData","getMapData","mapCacheClear","hash","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","memoize","resolver","memoized","cache","Cache","_memoizeCapped","rePropName","reEscapeChar","_stringToPath","charCodeAt","match","number","quote","subString","arrayMap","iteratee","symbolProto","symbolToString","_baseToString","baseToString","isKey","stringToPath","castPath","toKey","baseGet","path","defaultValue","collection","attributePath","customCollection","getCollection","collectionSpec","contextValue","themeContextValue","collections","ThemeContextKeys","ColorSpec","base","Brand","Primary","PrimaryDark","Secondary","Accent","Dark","Light","Neutral","Validation","Green","Text","Icon","Border","Background","Orange","Badge","Red","Blue","Shadow","Elevation","bookingsg","rbs","mylegacy","ccube","getThemeColors","theme","colorSet","colorScheme","color","Color","MediaWidths","mobileS","mobileM","mobileL","tablet","desktopM","desktopL","desktop4k","getMediaQuerySpec","MediaWidthsSpec","reduce","accumulator","mediaWidth","MediaQuery","StyledDiv","styled","div","$desktopStart","$desktopSpan","$tabletStart","$tabletSpan","$mobileStart","$mobileSpan","css","ColDiv","forwardRef","ref","mobileCols","tabletCols","desktopCols","otherProps","_jsx","tabletValues","mobileValues","desktopStartSpan","extractStartAndSpan","tabletStartSpan","mobileStartSpan","span","start","getStyleProps","firstVal","secondVal","startVal","endVal","Container","testId","stretch","StyledContainer","$stretch","$type","Section","StyledSection","section","Content","className","Layout","Main","button","$outline","$highlight","ClickableIcon","focusHighlight","focusOutline","FontFamily","Regular","Semibold","Bold","TextStyleSpec","D1","fontFamily","fontSize","fontWeight","lineHeight","letterSpacing","D2","D3","D4","DBody","H1","H2","H3","H4","H5","H6","Body","BodySmall","XSmall","getThemeTextStyles","textStyleSet","textStyleScheme","textStyle","TextStyle","getFont","weight","getFontFamily","fontFamilyFromTheme","fontWeightFromTheme","values","includes","getFontWeight","getMaxLinesLineStyle","maxLines","TextStyleHelper","paragraph","attrs","inline","h1","h2","h3","h4","h5","h6","Hyperlink","Default","HyperlinkComponent","Small","HyperlinkBase","a","StyledExternalIcon","ExternalIcon","external","rest","_jsxs","RedirectScope","Transition","commonLinkStyle","Wrapper","$sticky","$clickable","ContentContainer","gradient","$maxCollapsedHeight","ContentLink","StyledIconButton","StyledIcon","CrossIcon","ActionButton","AccessibleBannerButton","NBComponent","visible","dismissible","sticky","onDismiss","id","forwardedRef","maxCollapsedHeight","onClick","actionButton","isVisible","setVisible","useState","contentHeight","contentRef","_d","skipResize","useRef","localRef","_e","patchedResizeHandler","useResizeDetector","handleDismiss","event","stopPropagation","handleActionButtonOnClick","formatId","componentName","Base","NotificationBanner","Link","NBLink","_typeof","obj","iterator","_setPrototypeOf","o","_construct","Parent","Class","Reflect","construct","sham","Proxy","Boolean","_isNativeReflectConstruct","instance","_toConsumableArray","arr","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","minLen","name","_unsupportedIterableToArray","_nonIterableSpread","len","arr2","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","_ref","fun","thisValue","x","Func","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","toLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","trim","regExpTest","typeErrorCreate","_len2","_key2","_len","_key","addToSet","transformCaseFunc","l","lcElement","clone","property","newObject","lookupGetter","prop","desc","console","warn","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","text","html","svg","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","getGlobal","purify","createDOMPurify","DOMPurify","root","version","removed","isSupported","originalDocument","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","trustedTypes","ElementPrototype","cloneNode","getNextSibling","getChildNodes","getParentNode","template","content","ownerDocument","trustedTypesPolicy","createPolicy","suffix","ATTR_NAME","currentScript","hasAttribute","getAttribute","policyName","createHTML","createScriptURL","scriptUrl","_","_createTrustedTypesPolicy","emptyHTML","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","documentMode","hooks","createHTMLDocument","PARSER_MEDIA_TYPE","MUSTACHE_EXPR$1","ERB_EXPR$1","TMPLIT_EXPR$1","DATA_ATTR$1","ARIA_ATTR$1","IS_SCRIPT_OR_DATA$1","ATTR_WHITESPACE$1","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","concat","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","tagNameCheck","writable","configurable","enumerable","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","table","tbody","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_forceRemove","node","parentNode","removeChild","outerHTML","remove","_removeAttribute","attribute","getAttributeNode","removeAttribute","setAttribute","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","parseFromString","documentElement","createDocument","innerHTML","body","insertBefore","createTextNode","childNodes","_createIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","_isNode","nodeName","_executeHook","entryPoint","currentNode","hook","_sanitizeElements","elm","textContent","attributes","namespaceURI","hasChildNodes","tagName","allowedTags","firstElementChild","_basicCustomElementTest","parent","parentTagName","_checkValidNamespace","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attr","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","_attr","forceKeepAttr","getAttributeType","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","nextNode","sanitize","importedNode","oldNode","returnNode","toStaticHTML","appendChild","firstChild","nodeIterator","shadowroot","shadowrootmod","serializedHTML","doctype","setConfig","clearConfig","isValidAttribute","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","withNotificationBanner","otherAttributes","sanitizedContent","dangerouslySetInnerHTML","__html","error"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,82]}