posthog-js 1.158.0 → 1.158.2
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.
- package/dist/array.full.js +2 -2
- package/dist/array.full.js.map +1 -1
- package/dist/array.js +1 -1
- package/dist/array.js.map +1 -1
- package/dist/exception-autocapture.js.map +1 -1
- package/dist/lib/src/entrypoints/web-vitals.d.ts +4 -4
- package/dist/lib/src/extensions/replay/config.d.ts +1 -1
- package/dist/lib/src/extensions/replay/sessionrecording.d.ts +4 -0
- package/dist/lib/src/extensions/surveys.d.ts +2 -2
- package/dist/lib/src/utils/globals.d.ts +6 -6
- package/dist/lib/src/utils/logger.d.ts +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/module.d.ts +4 -0
- package/dist/module.js +1 -1
- package/dist/module.js.map +1 -1
- package/dist/recorder-v2.js.map +1 -1
- package/dist/recorder.js.map +1 -1
- package/lib/package.json +14 -9
- package/lib/src/autocapture-utils.js.map +1 -1
- package/lib/src/autocapture.js.map +1 -1
- package/lib/src/consent.js +1 -1
- package/lib/src/consent.js.map +1 -1
- package/lib/src/decide.js.map +1 -1
- package/lib/src/entrypoints/exception-autocapture.js.map +1 -1
- package/lib/src/entrypoints/recorder.js +12 -12
- package/lib/src/entrypoints/recorder.js.map +1 -1
- package/lib/src/entrypoints/surveys.js.map +1 -1
- package/lib/src/entrypoints/tracing-headers.js.map +1 -1
- package/lib/src/entrypoints/web-vitals.d.ts +4 -4
- package/lib/src/extensions/exception-autocapture/error-conversion.js +2 -2
- package/lib/src/extensions/exception-autocapture/error-conversion.js.map +1 -1
- package/lib/src/extensions/exception-autocapture/index.js.map +1 -1
- package/lib/src/extensions/exception-autocapture/stack-trace.js.map +1 -1
- package/lib/src/extensions/exception-autocapture/type-checking.js +1 -1
- package/lib/src/extensions/exception-autocapture/type-checking.js.map +1 -1
- package/lib/src/extensions/rageclick.js.map +1 -1
- package/lib/src/extensions/replay/config.d.ts +1 -1
- package/lib/src/extensions/replay/config.js.map +1 -1
- package/lib/src/extensions/replay/external/denylist.js.map +1 -1
- package/lib/src/extensions/replay/mutation-rate-limiter.js.map +1 -1
- package/lib/src/extensions/replay/rrweb-plugins/patch.js.map +1 -1
- package/lib/src/extensions/replay/sessionrecording-utils.js.map +1 -1
- package/lib/src/extensions/replay/sessionrecording.d.ts +4 -0
- package/lib/src/extensions/replay/sessionrecording.js +22 -13
- package/lib/src/extensions/replay/sessionrecording.js.map +1 -1
- package/lib/src/extensions/segment-integration.js.map +1 -1
- package/lib/src/extensions/sentry-integration.js.map +1 -1
- package/lib/src/extensions/surveys/action-matcher.js.map +1 -1
- package/lib/src/extensions/surveys/components/BottomSection.jsx.map +1 -1
- package/lib/src/extensions/surveys/components/ConfirmationMessage.jsx.map +1 -1
- package/lib/src/extensions/surveys/components/QuestionTypes.jsx.map +1 -1
- package/lib/src/extensions/surveys/hooks/useContrastingTextColor.js.map +1 -1
- package/lib/src/extensions/surveys/surveys-utils.jsx.map +1 -1
- package/lib/src/extensions/surveys.d.ts +2 -2
- package/lib/src/extensions/surveys.jsx.map +1 -1
- package/lib/src/extensions/toolbar.js +2 -2
- package/lib/src/extensions/toolbar.js.map +1 -1
- package/lib/src/extensions/tracing-headers.js.map +1 -1
- package/lib/src/extensions/web-vitals/index.js.map +1 -1
- package/lib/src/heatmaps.js.map +1 -1
- package/lib/src/page-view.js.map +1 -1
- package/lib/src/posthog-core.js +5 -5
- package/lib/src/posthog-core.js.map +1 -1
- package/lib/src/posthog-featureflags.js.map +1 -1
- package/lib/src/posthog-persistence.js.map +1 -1
- package/lib/src/posthog-surveys.js.map +1 -1
- package/lib/src/rate-limiter.js.map +1 -1
- package/lib/src/request-queue.js.map +1 -1
- package/lib/src/request.js +2 -2
- package/lib/src/request.js.map +1 -1
- package/lib/src/retry-queue.js.map +1 -1
- package/lib/src/scroll-manager.js.map +1 -1
- package/lib/src/session-props.js.map +1 -1
- package/lib/src/sessionid.js.map +1 -1
- package/lib/src/storage.js +10 -10
- package/lib/src/storage.js.map +1 -1
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/blocked-uas.js.map +1 -1
- package/lib/src/utils/event-utils.js +13 -13
- package/lib/src/utils/event-utils.js.map +1 -1
- package/lib/src/utils/globals.d.ts +6 -6
- package/lib/src/utils/index.js +3 -3
- package/lib/src/utils/index.js.map +1 -1
- package/lib/src/utils/logger.d.ts +1 -1
- package/lib/src/utils/logger.js.map +1 -1
- package/lib/src/utils/request-router.js +11 -2
- package/lib/src/utils/request-router.js.map +1 -1
- package/lib/src/utils/request-utils.js +1 -1
- package/lib/src/utils/request-utils.js.map +1 -1
- package/lib/src/utils/simple-event-emitter.js.map +1 -1
- package/lib/src/utils/survey-event-receiver.js.map +1 -1
- package/lib/src/utils/type-utils.js.map +1 -1
- package/lib/src/utils/user-agent-utils.js.map +1 -1
- package/lib/src/uuidv7.js.map +1 -1
- package/package.json +14 -9
package/dist/recorder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recorder.js","sources":["../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/utils.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/types/dist/types.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/mutation.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/error-handler.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observer.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/cross-origin-iframe-mirror.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/ext/tslib/tslib.es6.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/_virtual/image-bitmap-data-url-worker.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/index.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/processed-node-manager.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/error-stack-parser.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/stringify.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/index.js","../src/utils/type-utils.ts","../src/utils/globals.ts","../src/utils/logger.ts","../src/utils/index.ts","../src/utils/request-utils.ts","../src/extensions/replay/config.ts","../src/extensions/replay/rrweb-plugins/patch.ts","../src/extensions/replay/external/denylist.ts","../src/entrypoints/recorder.ts"],"sourcesContent":["var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n const host = n === null || n === void 0 ? void 0 : n.host;\r\n return Boolean((host === null || host === void 0 ? void 0 : host.shadowRoot) === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction escapeImportStatement(rule) {\r\n const { cssText } = rule;\r\n if (cssText.split('\"').length < 3)\r\n return cssText;\r\n const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\r\n if (rule.layerName === '') {\r\n statement.push(`layer`);\r\n }\r\n else if (rule.layerName) {\r\n statement.push(`layer(${rule.layerName})`);\r\n }\r\n if (rule.supportsText) {\r\n statement.push(`supports(${rule.supportsText})`);\r\n }\r\n if (rule.media.length) {\r\n statement.push(rule.media.mediaText);\r\n }\r\n return statement.join(' ') + ';';\r\n}\r\nfunction stringifyStylesheet(s) {\r\n try {\r\n const rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules).map(stringifyRule).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction stringifyRule(rule) {\r\n let importStringified;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n importStringified =\r\n stringifyStylesheet(rule.styleSheet) ||\r\n escapeImportStatement(rule);\r\n }\r\n catch (error) {\r\n }\r\n }\r\n else if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\r\n return fixSafariColons(rule.cssText);\r\n }\r\n return importStringified || rule.cssText;\r\n}\r\nfunction fixSafariColons(cssStringified) {\r\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\r\n return cssStringified.replace(regex, '$1\\\\$2');\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nfunction isCSSStyleRule(rule) {\r\n return 'selectorText' in rule;\r\n}\r\nclass Mirror {\r\n constructor() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n getId(n) {\r\n var _a;\r\n if (!n)\r\n return -1;\r\n const id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;\r\n return id !== null && id !== void 0 ? id : -1;\r\n }\r\n getNode(id) {\r\n return this.idNodeMap.get(id) || null;\r\n }\r\n getIds() {\r\n return Array.from(this.idNodeMap.keys());\r\n }\r\n getMeta(n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n }\r\n removeNodeFromMap(n) {\r\n const id = this.getId(n);\r\n this.idNodeMap.delete(id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach((childNode) => this.removeNodeFromMap(childNode));\r\n }\r\n }\r\n has(id) {\r\n return this.idNodeMap.has(id);\r\n }\r\n hasNode(node) {\r\n return this.nodeMetaMap.has(node);\r\n }\r\n add(n, meta) {\r\n const id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n replace(id, n) {\r\n const oldNode = this.getNode(id);\r\n if (oldNode) {\r\n const meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n }\r\n reset() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n}\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction maskInputValue({ element, maskInputOptions, tagName, type, value, maskInputFn, }) {\r\n let text = value || '';\r\n const actualType = type && toLowerCase(type);\r\n if (maskInputOptions[tagName.toLowerCase()] ||\r\n (actualType && maskInputOptions[actualType])) {\r\n if (maskInputFn) {\r\n text = maskInputFn(text, element);\r\n }\r\n else {\r\n text = '*'.repeat(text.length);\r\n }\r\n }\r\n return text;\r\n}\r\nfunction toLowerCase(str) {\r\n return str.toLowerCase();\r\n}\r\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n const ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n const chunkSize = 50;\r\n for (let x = 0; x < canvas.width; x += chunkSize) {\r\n for (let y = 0; y < canvas.height; y += chunkSize) {\r\n const getImageData = ctx.getImageData;\r\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n const pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some((pixel) => pixel !== 0))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isNodeMetaEqual(a, b) {\r\n if (!a || !b || a.type !== b.type)\r\n return false;\r\n if (a.type === NodeType.Document)\r\n return a.compatMode === b.compatMode;\r\n else if (a.type === NodeType.DocumentType)\r\n return (a.name === b.name &&\r\n a.publicId === b.publicId &&\r\n a.systemId === b.systemId);\r\n else if (a.type === NodeType.Comment ||\r\n a.type === NodeType.Text ||\r\n a.type === NodeType.CDATA)\r\n return a.textContent === b.textContent;\r\n else if (a.type === NodeType.Element)\r\n return (a.tagName === b.tagName &&\r\n JSON.stringify(a.attributes) ===\r\n JSON.stringify(b.attributes) &&\r\n a.isSVG === b.isSVG &&\r\n a.needBlock === b.needBlock);\r\n return false;\r\n}\r\nfunction getInputType(element) {\r\n const type = element.type;\r\n return element.hasAttribute('data-rr-is-password')\r\n ? 'password'\r\n : type\r\n ?\r\n toLowerCase(type)\r\n : null;\r\n}\r\nfunction extractFileExtension(path, baseURL) {\r\n var _a;\r\n let url;\r\n try {\r\n url = new URL(path, baseURL !== null && baseURL !== void 0 ? baseURL : window.location.href);\r\n }\r\n catch (err) {\r\n return null;\r\n }\r\n const regex = /\\.([0-9a-z]+)(?:$)/i;\r\n const match = url.pathname.match(regex);\r\n return (_a = match === null || match === void 0 ? void 0 : match[1]) !== null && _a !== void 0 ? _a : null;\r\n}\n\nlet _id = 1;\r\nconst tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nconst IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n const processedTagName = toLowerCase(element.tagName);\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction extractOrigin(url) {\r\n let origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nlet canvasService;\r\nlet canvasCtx;\r\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\r\nconst URL_WWW_MATCH = /^www\\..*/i;\r\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, (origin, quote1, path1, quote2, path2, path3) => {\r\n const filePath = path1 || path2 || path3;\r\n const maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\r\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n }\r\n if (filePath[0] === '/') {\r\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\r\n }\r\n const stack = href.split('/');\r\n const parts = filePath.split('/');\r\n stack.pop();\r\n for (const part of parts) {\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\r\n });\r\n}\r\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n let pos = 0;\r\n function collectCharacters(regEx) {\r\n let chars;\r\n const match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n const output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n let url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n let descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n let inParens = false;\r\n while (true) {\r\n const c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n const a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n const a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value) {\r\n if (!value) {\r\n return value;\r\n }\r\n if (name === 'src' ||\r\n (name === 'href' && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset') {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style') {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n return value;\r\n}\r\nfunction ignoreAttribute(tagName, name, _value) {\r\n return (tagName === 'video' || tagName === 'audio') && name === 'autoplay';\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector) {\r\n try {\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (let eIndex = element.classList.length; eIndex--;) {\r\n const className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return false;\r\n}\r\nfunction classMatchesRegex(node, regex, checkAncestors) {\r\n if (!node)\r\n return false;\r\n if (node.nodeType !== node.ELEMENT_NODE) {\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n }\r\n for (let eIndex = node.classList.length; eIndex--;) {\r\n const className = node.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector, checkAncestors) {\r\n try {\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (typeof maskTextClass === 'string') {\r\n if (checkAncestors) {\r\n if (el.closest(`.${maskTextClass}`))\r\n return true;\r\n }\r\n else {\r\n if (el.classList.contains(maskTextClass))\r\n return true;\r\n }\r\n }\r\n else {\r\n if (classMatchesRegex(el, maskTextClass, checkAncestors))\r\n return true;\r\n }\r\n if (maskTextSelector) {\r\n if (checkAncestors) {\r\n if (el.closest(maskTextSelector))\r\n return true;\r\n }\r\n else {\r\n if (el.matches(maskTextSelector))\r\n return true;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return false;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n const win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n let fired = false;\r\n let readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n const timer = setTimeout(() => {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', () => {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n const blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n let fired = false;\r\n let styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n const timer = setTimeout(() => {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', () => {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n const { doc, mirror, blockClass, blockSelector, needsMask, inlineStylesheet, maskInputOptions = {}, maskTextFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, } = options;\r\n const rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode,\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId,\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc,\r\n blockClass,\r\n blockSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskInputFn,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n keepIframeSrcFn,\r\n newlyAddedElement,\r\n rootId,\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n needsMask,\r\n maskTextFn,\r\n rootId,\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId,\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId,\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n const docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n var _a;\r\n const { needsMask, maskTextFn, rootId } = options;\r\n const parentTagName = n.parentNode && n.parentNode.tagName;\r\n let textContent = n.textContent;\r\n const isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n const isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\r\n textContent = stringifyStylesheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(`Cannot get CSS styles from text's parentNode. Error: ${err}`, n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n if (!isStyle && !isScript && textContent && needsMask) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent, n.parentElement)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle,\r\n rootId,\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n const { doc, blockClass, blockSelector, inlineStylesheet, maskInputOptions = {}, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, rootId, } = options;\r\n const needBlock = _isBlockedElement(n, blockClass, blockSelector);\r\n const tagName = getValidTagName(n);\r\n let attributes = {};\r\n const len = n.attributes.length;\r\n for (let i = 0; i < len; i++) {\r\n const attr = n.attributes[i];\r\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\r\n attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value);\r\n }\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n const href = n.href\r\n let stylesheet = Array.from(doc.styleSheets).find((s) => {\r\n return s.href === href;\r\n });\r\n if (!stylesheet && href.includes('.css')) {\r\n const rootDomain = window.location.origin\r\n const stylesheetPath = href.replace(window.location.href, '')\r\n const potentialStylesheetHref = rootDomain + '/' + stylesheetPath\r\n stylesheet = Array.from(doc.styleSheets).find((s) => {\r\n return s.href === potentialStylesheetHref;\r\n });\r\n }\r\n let cssText = null;\r\n if (stylesheet) {\r\n cssText = stringifyStylesheet(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n const cssText = stringifyStylesheet(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {\r\n const value = n.value;\r\n const checked = n.checked;\r\n if (attributes.type !== 'radio' &&\r\n attributes.type !== 'checkbox' &&\r\n attributes.type !== 'submit' &&\r\n attributes.type !== 'button' &&\r\n value) {\r\n attributes.value = maskInputValue({\r\n element: n,\r\n type: getInputType(n),\r\n tagName,\r\n value,\r\n maskInputOptions,\r\n maskInputFn,\r\n });\r\n }\r\n else if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n const canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n const blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n const blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n const image = n;\r\n const oldValue = image.crossOrigin;\r\n image.crossOrigin = 'anonymous';\r\n const recordInlineImage = () => {\r\n image.removeEventListener('load', recordInlineImage);\r\n try {\r\n canvasService.width = image.naturalWidth;\r\n canvasService.height = image.naturalHeight;\r\n canvasCtx.drawImage(image, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(`Cannot inline img src=${image.currentSrc}! Error: ${err}`);\r\n }\r\n oldValue\r\n ? (attributes.crossOrigin = oldValue)\r\n : image.removeAttribute('crossorigin');\r\n };\r\n if (image.complete && image.naturalWidth !== 0)\r\n recordInlineImage();\r\n else\r\n image.addEventListener('load', recordInlineImage);\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n const mediaAttributes = attributes;\r\n mediaAttributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n mediaAttributes.rr_mediaCurrentTime = n.currentTime;\r\n mediaAttributes.rr_mediaPlaybackRate = n.playbackRate;\r\n mediaAttributes.rr_mediaMuted = n.muted;\r\n mediaAttributes.rr_mediaLoop = n.loop;\r\n mediaAttributes.rr_mediaVolume = n.volume;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n const { width, height } = n.getBoundingClientRect();\r\n attributes = {\r\n class: attributes.class,\r\n rr_width: `${width}px`,\r\n rr_height: `${height}px`,\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n let isCustomElement;\r\n try {\r\n if (customElements.get(tagName))\r\n isCustomElement = true;\r\n }\r\n catch (e) {\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName,\r\n attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock,\r\n rootId,\r\n isCustom: isCustomElement,\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined || maybeAttr === null) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n (sn.attributes.rel === 'preload' ||\r\n sn.attributes.rel === 'modulepreload') &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n extractFileExtension(sn.attributes.href) === 'js'))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n const { doc, mirror, blockClass, blockSelector, maskTextClass, maskTextSelector, skipChild = false, inlineStylesheet = true, maskInputOptions = {}, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions = {}, inlineImages = false, recordCanvas = false, onSerialize, onIframeLoad, iframeLoadTimeout = 5000, onStylesheetLoad, stylesheetLoadTimeout = 5000, keepIframeSrcFn = () => false, newlyAddedElement = false, } = options;\r\n let { needsMask } = options;\r\n let { preserveWhiteSpace = true } = options;\r\n if (!needsMask &&\r\n n.childNodes) {\r\n const checkAncestors = needsMask === undefined;\r\n needsMask = needMaskingText(n, maskTextClass, maskTextSelector, checkAncestors);\r\n }\r\n const _serializedNode = serializeNode(n, {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n needsMask,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n keepIframeSrcFn,\r\n newlyAddedElement,\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n let id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n const serializedNode = Object.assign(_serializedNode, { id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n let recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n const shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n const bypassOptions = {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n needsMask,\r\n maskTextClass,\r\n maskTextSelector,\r\n skipChild,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n };\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'textarea' &&\r\n serializedNode.attributes.value !== undefined) ;\r\n else {\r\n for (const childN of Array.from(n.childNodes)) {\r\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (const childN of Array.from(n.shadowRoot.childNodes)) {\r\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, () => {\r\n const iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n needsMask,\r\n maskTextClass,\r\n maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n typeof serializedNode.attributes.rel === 'string' &&\r\n (serializedNode.attributes.rel === 'stylesheet' ||\r\n (serializedNode.attributes.rel === 'preload' &&\r\n typeof serializedNode.attributes.href === 'string' &&\r\n extractFileExtension(serializedNode.attributes.href) === 'css'))) {\r\n onceStylesheetLoaded(n, () => {\r\n if (onStylesheetLoad) {\r\n const serializedLinkNode = serializeNodeWithId(n, {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n needsMask,\r\n maskTextClass,\r\n maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n const { mirror = new Mirror(), blockClass = 'rr-block', blockSelector = null, maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, inlineImages = false, recordCanvas = false, maskAllInputs = false, maskTextFn, maskInputFn, slimDOM = false, dataURLOptions, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, onStylesheetLoad, stylesheetLoadTimeout, keepIframeSrcFn = () => false, } = options || {};\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : maskAllInputs === false\r\n ? {\r\n password: true,\r\n }\r\n : maskAllInputs;\r\n const slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true,\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n newlyAddedElement: false,\r\n });\r\n}\r\n\nconst commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options = {}) {\r\n let lineno = 1;\r\n let column = 1;\r\n function updatePosition(str) {\r\n const lines = str.match(/\\n/g);\r\n if (lines) {\r\n lineno += lines.length;\r\n }\r\n const i = str.lastIndexOf('\\n');\r\n column = i === -1 ? column + str.length : str.length - i;\r\n }\r\n function position() {\r\n const start = { line: lineno, column };\r\n return (node) => {\r\n node.position = new Position(start);\r\n whitespace();\r\n return node;\r\n };\r\n }\r\n class Position {\r\n constructor(start) {\r\n this.start = start;\r\n this.end = { line: lineno, column };\r\n this.source = options.source;\r\n }\r\n }\r\n Position.prototype.content = css;\r\n const errorsList = [];\r\n function error(msg) {\r\n const err = new Error(`${options.source || ''}:${lineno}:${column}: ${msg}`);\r\n err.reason = msg;\r\n err.filename = options.source;\r\n err.line = lineno;\r\n err.column = column;\r\n err.source = css;\r\n if (options.silent) {\r\n errorsList.push(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n function stylesheet() {\r\n const rulesList = rules();\r\n return {\r\n type: 'stylesheet',\r\n stylesheet: {\r\n source: options.source,\r\n rules: rulesList,\r\n parsingErrors: errorsList,\r\n },\r\n };\r\n }\r\n function open() {\r\n return match(/^{\\s*/);\r\n }\r\n function close() {\r\n return match(/^}/);\r\n }\r\n function rules() {\r\n let node;\r\n const rules = [];\r\n whitespace();\r\n comments(rules);\r\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n if (node) {\r\n rules.push(node);\r\n comments(rules);\r\n }\r\n }\r\n return rules;\r\n }\r\n function match(re) {\r\n const m = re.exec(css);\r\n if (!m) {\r\n return;\r\n }\r\n const str = m[0];\r\n updatePosition(str);\r\n css = css.slice(str.length);\r\n return m;\r\n }\r\n function whitespace() {\r\n match(/^\\s*/);\r\n }\r\n function comments(rules = []) {\r\n let c;\r\n while ((c = comment())) {\r\n if (c) {\r\n rules.push(c);\r\n }\r\n c = comment();\r\n }\r\n return rules;\r\n }\r\n function comment() {\r\n const pos = position();\r\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n return;\r\n }\r\n let i = 2;\r\n while ('' !== css.charAt(i) &&\r\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n ++i;\r\n }\r\n i += 2;\r\n if ('' === css.charAt(i - 1)) {\r\n return error('End of comment missing');\r\n }\r\n const str = css.slice(2, i - 2);\r\n column += 2;\r\n updatePosition(str);\r\n css = css.slice(i);\r\n column += 2;\r\n return pos({\r\n type: 'comment',\r\n comment: str,\r\n });\r\n }\r\n function selector() {\r\n whitespace();\r\n while (css[0] == '}') {\r\n error('extra closing bracket');\r\n css = css.slice(1);\r\n whitespace();\r\n }\r\n const m = match(/^((\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^{])+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const cleanedInput = m[0]\r\n .trim()\r\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, (m) => {\r\n return m.replace(/,/g, '\\u200C');\r\n });\r\n return customSplit(cleanedInput).map((s) => s.replace(/\\u200C/g, ',').trim());\r\n }\r\n function customSplit(input) {\r\n const result = [];\r\n let currentSegment = '';\r\n let depthParentheses = 0;\r\n let depthBrackets = 0;\r\n for (const char of input) {\r\n if (char === '(') {\r\n depthParentheses++;\r\n }\r\n else if (char === ')') {\r\n depthParentheses--;\r\n }\r\n else if (char === '[') {\r\n depthBrackets++;\r\n }\r\n else if (char === ']') {\r\n depthBrackets--;\r\n }\r\n if (char === ',' && depthParentheses === 0 && depthBrackets === 0) {\r\n result.push(currentSegment);\r\n currentSegment = '';\r\n }\r\n else {\r\n currentSegment += char;\r\n }\r\n }\r\n if (currentSegment) {\r\n result.push(currentSegment);\r\n }\r\n return result;\r\n }\r\n function declaration() {\r\n const pos = position();\r\n const propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n if (!propMatch) {\r\n return;\r\n }\r\n const prop = trim(propMatch[0]);\r\n if (!match(/^:\\s*/)) {\r\n return error(`property missing ':'`);\r\n }\r\n const val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n const ret = pos({\r\n type: 'declaration',\r\n property: prop.replace(commentre, ''),\r\n value: val ? trim(val[0]).replace(commentre, '') : '',\r\n });\r\n match(/^[;\\s]*/);\r\n return ret;\r\n }\r\n function declarations() {\r\n const decls = [];\r\n if (!open()) {\r\n return error(`missing '{'`);\r\n }\r\n comments(decls);\r\n let decl;\r\n while ((decl = declaration())) {\r\n if (decl !== false) {\r\n decls.push(decl);\r\n comments(decls);\r\n }\r\n decl = declaration();\r\n }\r\n if (!close()) {\r\n return error(`missing '}'`);\r\n }\r\n return decls;\r\n }\r\n function keyframe() {\r\n let m;\r\n const vals = [];\r\n const pos = position();\r\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n vals.push(m[1]);\r\n match(/^,\\s*/);\r\n }\r\n if (!vals.length) {\r\n return;\r\n }\r\n return pos({\r\n type: 'keyframe',\r\n values: vals,\r\n declarations: declarations(),\r\n });\r\n }\r\n function atkeyframes() {\r\n const pos = position();\r\n let m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n const vendor = m[1];\r\n m = match(/^([-\\w]+)\\s*/);\r\n if (!m) {\r\n return error('@keyframes missing name');\r\n }\r\n const name = m[1];\r\n if (!open()) {\r\n return error(`@keyframes missing '{'`);\r\n }\r\n let frame;\r\n let frames = comments();\r\n while ((frame = keyframe())) {\r\n frames.push(frame);\r\n frames = frames.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@keyframes missing '}'`);\r\n }\r\n return pos({\r\n type: 'keyframes',\r\n name,\r\n vendor,\r\n keyframes: frames,\r\n });\r\n }\r\n function atsupports() {\r\n const pos = position();\r\n const m = match(/^@supports *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const supports = trim(m[1]);\r\n if (!open()) {\r\n return error(`@supports missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@supports missing '}'`);\r\n }\r\n return pos({\r\n type: 'supports',\r\n supports,\r\n rules: style,\r\n });\r\n }\r\n function athost() {\r\n const pos = position();\r\n const m = match(/^@host\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(`@host missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@host missing '}'`);\r\n }\r\n return pos({\r\n type: 'host',\r\n rules: style,\r\n });\r\n }\r\n function atmedia() {\r\n const pos = position();\r\n const m = match(/^@media *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const media = trim(m[1]);\r\n if (!open()) {\r\n return error(`@media missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@media missing '}'`);\r\n }\r\n return pos({\r\n type: 'media',\r\n media,\r\n rules: style,\r\n });\r\n }\r\n function atcustommedia() {\r\n const pos = position();\r\n const m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n if (!m) {\r\n return;\r\n }\r\n return pos({\r\n type: 'custom-media',\r\n name: trim(m[1]),\r\n media: trim(m[2]),\r\n });\r\n }\r\n function atpage() {\r\n const pos = position();\r\n const m = match(/^@page */);\r\n if (!m) {\r\n return;\r\n }\r\n const sel = selector() || [];\r\n if (!open()) {\r\n return error(`@page missing '{'`);\r\n }\r\n let decls = comments();\r\n let decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@page missing '}'`);\r\n }\r\n return pos({\r\n type: 'page',\r\n selectors: sel,\r\n declarations: decls,\r\n });\r\n }\r\n function atdocument() {\r\n const pos = position();\r\n const m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const vendor = trim(m[1]);\r\n const doc = trim(m[2]);\r\n if (!open()) {\r\n return error(`@document missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@document missing '}'`);\r\n }\r\n return pos({\r\n type: 'document',\r\n document: doc,\r\n vendor,\r\n rules: style,\r\n });\r\n }\r\n function atfontface() {\r\n const pos = position();\r\n const m = match(/^@font-face\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(`@font-face missing '{'`);\r\n }\r\n let decls = comments();\r\n let decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@font-face missing '}'`);\r\n }\r\n return pos({\r\n type: 'font-face',\r\n declarations: decls,\r\n });\r\n }\r\n const atimport = _compileAtrule('import');\r\n const atcharset = _compileAtrule('charset');\r\n const atnamespace = _compileAtrule('namespace');\r\n function _compileAtrule(name) {\r\n const re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n return () => {\r\n const pos = position();\r\n const m = match(re);\r\n if (!m) {\r\n return;\r\n }\r\n const ret = { type: name };\r\n ret[name] = m[1].trim();\r\n return pos(ret);\r\n };\r\n }\r\n function atrule() {\r\n if (css[0] !== '@') {\r\n return;\r\n }\r\n return (atkeyframes() ||\r\n atmedia() ||\r\n atcustommedia() ||\r\n atsupports() ||\r\n atimport() ||\r\n atcharset() ||\r\n atnamespace() ||\r\n atdocument() ||\r\n atpage() ||\r\n athost() ||\r\n atfontface());\r\n }\r\n function rule() {\r\n const pos = position();\r\n const sel = selector();\r\n if (!sel) {\r\n return error('selector missing');\r\n }\r\n comments();\r\n return pos({\r\n type: 'rule',\r\n selectors: sel,\r\n declarations: declarations(),\r\n });\r\n }\r\n return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n const isNode = obj && typeof obj.type === 'string';\r\n const childParent = isNode ? obj : parent;\r\n for (const k of Object.keys(obj)) {\r\n const value = obj[k];\r\n if (Array.isArray(value)) {\r\n value.forEach((v) => {\r\n addParent(v, childParent);\r\n });\r\n }\r\n else if (value && typeof value === 'object') {\r\n addParent(value, childParent);\r\n }\r\n }\r\n if (isNode) {\r\n Object.defineProperty(obj, 'parent', {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: parent || null,\r\n });\r\n }\r\n return obj;\r\n}\n\nconst tagMap = {\r\n script: 'noscript',\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient',\r\n};\r\nfunction getTagName(n) {\r\n let tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n if (tagName === 'link' && n.attributes._cssText) {\r\n tagName = 'style';\r\n }\r\n return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nconst MEDIA_SELECTOR = /(max|min)-device-(width|height)/;\r\nconst MEDIA_SELECTOR_GLOBAL = new RegExp(MEDIA_SELECTOR.source, 'g');\r\nconst HOVER_SELECTOR = /([^\\\\]):hover/;\r\nconst HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction adaptCssForReplay(cssText, cache) {\r\n const cachedStyle = cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.get(cssText);\r\n if (cachedStyle)\r\n return cachedStyle;\r\n const ast = parse(cssText, {\r\n silent: true,\r\n });\r\n if (!ast.stylesheet) {\r\n return cssText;\r\n }\r\n const selectors = [];\r\n const medias = [];\r\n function getSelectors(rule) {\r\n if ('selectors' in rule && rule.selectors) {\r\n rule.selectors.forEach((selector) => {\r\n if (HOVER_SELECTOR.test(selector)) {\r\n selectors.push(selector);\r\n }\r\n });\r\n }\r\n if ('media' in rule && rule.media && MEDIA_SELECTOR.test(rule.media)) {\r\n medias.push(rule.media);\r\n }\r\n if ('rules' in rule && rule.rules) {\r\n rule.rules.forEach(getSelectors);\r\n }\r\n }\r\n getSelectors(ast.stylesheet);\r\n let result = cssText;\r\n if (selectors.length > 0) {\r\n const selectorMatcher = new RegExp(selectors\r\n .filter((selector, index) => selectors.indexOf(selector) === index)\r\n .sort((a, b) => b.length - a.length)\r\n .map((selector) => {\r\n return escapeRegExp(selector);\r\n })\r\n .join('|'), 'g');\r\n result = result.replace(selectorMatcher, (selector) => {\r\n const newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n return `${selector}, ${newSelector}`;\r\n });\r\n }\r\n if (medias.length > 0) {\r\n const mediaMatcher = new RegExp(medias\r\n .filter((media, index) => medias.indexOf(media) === index)\r\n .sort((a, b) => b.length - a.length)\r\n .map((media) => {\r\n return escapeRegExp(media);\r\n })\r\n .join('|'), 'g');\r\n result = result.replace(mediaMatcher, (media) => {\r\n return media.replace(MEDIA_SELECTOR_GLOBAL, '$1-$2');\r\n });\r\n }\r\n cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.set(cssText, result);\r\n return result;\r\n}\r\nfunction createCache() {\r\n const stylesWithHoverClass = new Map();\r\n return {\r\n stylesWithHoverClass,\r\n };\r\n}\r\nfunction buildNode(n, options) {\r\n var _a;\r\n const { doc, hackCss, cache } = options;\r\n switch (n.type) {\r\n case NodeType.Document:\r\n return doc.implementation.createDocument(null, '', null);\r\n case NodeType.DocumentType:\r\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n case NodeType.Element: {\r\n const tagName = getTagName(n);\r\n let node;\r\n if (n.isSVG) {\r\n node = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n }\r\n else {\r\n if (n.isCustom &&\r\n ((_a = doc.defaultView) === null || _a === void 0 ? void 0 : _a.customElements) &&\r\n !doc.defaultView.customElements.get(n.tagName))\r\n doc.defaultView.customElements.define(n.tagName, class extends doc.defaultView.HTMLElement {\r\n });\r\n node = doc.createElement(tagName);\r\n }\r\n const specialAttributes = {};\r\n for (const name in n.attributes) {\r\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name)) {\r\n continue;\r\n }\r\n let value = n.attributes[name];\r\n if (tagName === 'option' &&\r\n name === 'selected' &&\r\n value === false) {\r\n continue;\r\n }\r\n if (value === null) {\r\n continue;\r\n }\r\n if (value === true)\r\n value = '';\r\n if (name.startsWith('rr_')) {\r\n specialAttributes[name] = value;\r\n continue;\r\n }\r\n const isTextarea = tagName === 'textarea' && name === 'value';\r\n const isRemoteOrDynamicCss = tagName === 'style' && name === '_cssText';\r\n if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n value = adaptCssForReplay(value, cache);\r\n }\r\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n node.appendChild(doc.createTextNode(value));\r\n n.childNodes = [];\r\n continue;\r\n }\r\n try {\r\n if (n.isSVG && name === 'xlink:href') {\r\n node.setAttributeNS('http://www.w3.org/1999/xlink', name, value.toString());\r\n }\r\n else if (name === 'onload' ||\r\n name === 'onclick' ||\r\n name.substring(0, 7) === 'onmouse') {\r\n node.setAttribute('_' + name, value.toString());\r\n }\r\n else if (tagName === 'meta' &&\r\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n name === 'content') {\r\n node.setAttribute('csp-content', value.toString());\r\n continue;\r\n }\r\n else if (tagName === 'link' &&\r\n (n.attributes.rel === 'preload' ||\r\n n.attributes.rel === 'modulepreload') &&\r\n n.attributes.as === 'script') {\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'prefetch' &&\r\n typeof n.attributes.href === 'string' &&\r\n n.attributes.href.endsWith('.js')) {\r\n }\r\n else if (tagName === 'img' &&\r\n n.attributes.srcset &&\r\n n.attributes.rr_dataURL) {\r\n node.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n }\r\n else {\r\n node.setAttribute(name, value.toString());\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n for (const name in specialAttributes) {\r\n const value = specialAttributes[name];\r\n if (tagName === 'canvas' && name === 'rr_dataURL') {\r\n const image = document.createElement('img');\r\n image.onload = () => {\r\n const ctx = node.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image, 0, 0, image.width, image.height);\r\n }\r\n };\r\n image.src = value.toString();\r\n if (node.RRNodeType)\r\n node.rr_dataURL = value.toString();\r\n }\r\n else if (tagName === 'img' && name === 'rr_dataURL') {\r\n const image = node;\r\n if (!image.currentSrc.startsWith('data:')) {\r\n image.setAttribute('rrweb-original-src', n.attributes.src);\r\n image.src = value.toString();\r\n }\r\n }\r\n if (name === 'rr_width') {\r\n node.style.width = value.toString();\r\n }\r\n else if (name === 'rr_height') {\r\n node.style.height = value.toString();\r\n }\r\n else if (name === 'rr_mediaCurrentTime' &&\r\n typeof value === 'number') {\r\n node.currentTime = value;\r\n }\r\n else if (name === 'rr_mediaState') {\r\n switch (value) {\r\n case 'played':\r\n node\r\n .play()\r\n .catch((e) => console.warn('media playback error', e));\r\n break;\r\n case 'paused':\r\n node.pause();\r\n break;\r\n }\r\n }\r\n else if (name === 'rr_mediaPlaybackRate' &&\r\n typeof value === 'number') {\r\n node.playbackRate = value;\r\n }\r\n else if (name === 'rr_mediaMuted' && typeof value === 'boolean') {\r\n node.muted = value;\r\n }\r\n else if (name === 'rr_mediaLoop' && typeof value === 'boolean') {\r\n node.loop = value;\r\n }\r\n else if (name === 'rr_mediaVolume' && typeof value === 'number') {\r\n node.volume = value;\r\n }\r\n }\r\n if (n.isShadowHost) {\r\n if (!node.shadowRoot) {\r\n node.attachShadow({ mode: 'open' });\r\n }\r\n else {\r\n while (node.shadowRoot.firstChild) {\r\n node.shadowRoot.removeChild(node.shadowRoot.firstChild);\r\n }\r\n }\r\n }\r\n return node;\r\n }\r\n case NodeType.Text:\r\n return doc.createTextNode(n.isStyle && hackCss\r\n ? adaptCssForReplay(n.textContent, cache)\r\n : n.textContent);\r\n case NodeType.CDATA:\r\n return doc.createCDATASection(n.textContent);\r\n case NodeType.Comment:\r\n return doc.createComment(n.textContent);\r\n default:\r\n return null;\r\n }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n const { doc, mirror, skipChild = false, hackCss = true, afterAppend, cache, } = options;\r\n if (mirror.has(n.id)) {\r\n const nodeInMirror = mirror.getNode(n.id);\r\n const meta = mirror.getMeta(nodeInMirror);\r\n if (isNodeMetaEqual(meta, n))\r\n return mirror.getNode(n.id);\r\n }\r\n let node = buildNode(n, { doc, hackCss, cache });\r\n if (!node) {\r\n return null;\r\n }\r\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n mirror.replace(n.rootId, doc);\r\n }\r\n if (n.type === NodeType.Document) {\r\n doc.close();\r\n doc.open();\r\n if (n.compatMode === 'BackCompat' &&\r\n n.childNodes &&\r\n n.childNodes[0].type !== NodeType.DocumentType) {\r\n if (n.childNodes[0].type === NodeType.Element &&\r\n 'xmlns' in n.childNodes[0].attributes &&\r\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\r\n }\r\n else {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\r\n }\r\n }\r\n node = doc;\r\n }\r\n mirror.add(node, n);\r\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n !skipChild) {\r\n for (const childN of n.childNodes) {\r\n const childNode = buildNodeWithSN(childN, {\r\n doc,\r\n mirror,\r\n skipChild: false,\r\n hackCss,\r\n afterAppend,\r\n cache,\r\n });\r\n if (!childNode) {\r\n console.warn('Failed to rebuild', childN);\r\n continue;\r\n }\r\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n node.shadowRoot.appendChild(childNode);\r\n }\r\n else if (n.type === NodeType.Document &&\r\n childN.type == NodeType.Element) {\r\n const htmlElement = childNode;\r\n let body = null;\r\n htmlElement.childNodes.forEach((child) => {\r\n if (child.nodeName === 'BODY')\r\n body = child;\r\n });\r\n if (body) {\r\n htmlElement.removeChild(body);\r\n node.appendChild(childNode);\r\n htmlElement.appendChild(body);\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n if (afterAppend) {\r\n afterAppend(childNode, childN.id);\r\n }\r\n }\r\n }\r\n return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n function walk(node) {\r\n onVisit(node);\r\n }\r\n for (const id of mirror.getIds()) {\r\n if (mirror.has(id)) {\r\n walk(mirror.getNode(id));\r\n }\r\n }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n const n = mirror.getMeta(node);\r\n if ((n === null || n === void 0 ? void 0 : n.type) !== NodeType.Element) {\r\n return;\r\n }\r\n const el = node;\r\n for (const name in n.attributes) {\r\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name) &&\r\n name.startsWith('rr_'))) {\r\n continue;\r\n }\r\n const value = n.attributes[name];\r\n if (name === 'rr_scrollLeft') {\r\n el.scrollLeft = value;\r\n }\r\n if (name === 'rr_scrollTop') {\r\n el.scrollTop = value;\r\n }\r\n }\r\n}\r\nfunction rebuild(n, options) {\r\n const { doc, onVisit, hackCss = true, afterAppend, cache, mirror = new Mirror(), } = options;\r\n const node = buildNodeWithSN(n, {\r\n doc,\r\n mirror,\r\n skipChild: false,\r\n hackCss,\r\n afterAppend,\r\n cache,\r\n });\r\n visit(mirror, (visitedNode) => {\r\n if (onVisit) {\r\n onVisit(visitedNode);\r\n }\r\n handleScroll(visitedNode, mirror);\r\n });\r\n return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, adaptCssForReplay, buildNodeWithSN, classMatchesRegex, createCache, createMirror, escapeImportStatement, extractFileExtension, fixSafariColons, genId, getInputType, ignoreAttribute, is2DCanvasBlank, isCSSImportRule, isCSSStyleRule, isElement, isNativeShadowDom, isNodeMetaEqual, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, snapshot, stringifyRule, stringifyStylesheet, toLowerCase, transformAttribute };\n","import { classMatchesRegex, IGNORED_NODE, isShadowRoot } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target = document) {\r\n const options = { capture: true, passive: true };\r\n target.addEventListener(type, fn, options);\r\n return () => target.removeEventListener(type, fn, options);\r\n}\r\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\r\n '\\r\\n' +\r\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\r\n '\\r\\n' +\r\n 'or you can use record.mirror to access the mirror instance during recording.';\r\nlet _mirror = {\r\n map: {},\r\n getId() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return -1;\r\n },\r\n getNode() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return null;\r\n },\r\n removeNodeFromMap() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n has() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return false;\r\n },\r\n reset() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n};\r\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\r\n _mirror = new Proxy(_mirror, {\r\n get(target, prop, receiver) {\r\n if (prop === 'map') {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n }\r\n return Reflect.get(target, prop, receiver);\r\n },\r\n });\r\n}\r\nfunction throttle(func, wait, options = {}) {\r\n let timeout = null;\r\n let previous = 0;\r\n return function (...args) {\r\n const now = Date.now();\r\n if (!previous && options.leading === false) {\r\n previous = now;\r\n }\r\n const remaining = wait - (now - previous);\r\n const context = this;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n func.apply(context, args);\r\n }\r\n else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(() => {\r\n previous = options.leading === false ? 0 : Date.now();\r\n timeout = null;\r\n func.apply(context, args);\r\n }, remaining);\r\n }\r\n };\r\n}\r\nfunction hookSetter(target, key, d, isRevoked, win = window) {\r\n const original = win.Object.getOwnPropertyDescriptor(target, key);\r\n win.Object.defineProperty(target, key, isRevoked\r\n ? d\r\n : {\r\n set(value) {\r\n setTimeout(() => {\r\n d.set.call(this, value);\r\n }, 0);\r\n if (original && original.set) {\r\n original.set.call(this, value);\r\n }\r\n },\r\n });\r\n return () => hookSetter(target, key, original || {}, true);\r\n}\r\nfunction patch(source, name, replacement) {\r\n try {\r\n if (!(name in source)) {\r\n return () => {\r\n };\r\n }\r\n const original = source[name];\r\n const wrapped = replacement(original);\r\n if (typeof wrapped === 'function') {\r\n wrapped.prototype = wrapped.prototype || {};\r\n Object.defineProperties(wrapped, {\r\n __rrweb_original__: {\r\n enumerable: false,\r\n value: original,\r\n },\r\n });\r\n }\r\n source[name] = wrapped;\r\n return () => {\r\n source[name] = original;\r\n };\r\n }\r\n catch (_a) {\r\n return () => {\r\n };\r\n }\r\n}\r\nlet nowTimestamp = Date.now;\r\nif (!(/[1-9][0-9]{12}/.test(Date.now().toString()))) {\r\n nowTimestamp = () => new Date().getTime();\r\n}\r\nfunction getWindowScroll(win) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const doc = win.document;\r\n return {\r\n left: doc.scrollingElement\r\n ? doc.scrollingElement.scrollLeft\r\n : win.pageXOffset !== undefined\r\n ? win.pageXOffset\r\n : (doc === null || doc === void 0 ? void 0 : doc.documentElement.scrollLeft) ||\r\n ((_b = (_a = doc === null || doc === void 0 ? void 0 : doc.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\r\n ((_c = doc === null || doc === void 0 ? void 0 : doc.body) === null || _c === void 0 ? void 0 : _c.scrollLeft) ||\r\n 0,\r\n top: doc.scrollingElement\r\n ? doc.scrollingElement.scrollTop\r\n : win.pageYOffset !== undefined\r\n ? win.pageYOffset\r\n : (doc === null || doc === void 0 ? void 0 : doc.documentElement.scrollTop) ||\r\n ((_e = (_d = doc === null || doc === void 0 ? void 0 : doc.body) === null || _d === void 0 ? void 0 : _d.parentElement) === null || _e === void 0 ? void 0 : _e.scrollTop) ||\r\n ((_f = doc === null || doc === void 0 ? void 0 : doc.body) === null || _f === void 0 ? void 0 : _f.scrollTop) ||\r\n 0,\r\n };\r\n}\r\nfunction getWindowHeight() {\r\n return (window.innerHeight ||\r\n (document.documentElement && document.documentElement.clientHeight) ||\r\n (document.body && document.body.clientHeight));\r\n}\r\nfunction getWindowWidth() {\r\n return (window.innerWidth ||\r\n (document.documentElement && document.documentElement.clientWidth) ||\r\n (document.body && document.body.clientWidth));\r\n}\r\nfunction closestElementOfNode(node) {\r\n if (!node) {\r\n return null;\r\n }\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n return el;\r\n}\r\nfunction isBlocked(node, blockClass, blockSelector, checkAncestors) {\r\n if (!node) {\r\n return false;\r\n }\r\n const el = closestElementOfNode(node);\r\n if (!el) {\r\n return false;\r\n }\r\n try {\r\n if (typeof blockClass === 'string') {\r\n if (el.classList.contains(blockClass))\r\n return true;\r\n if (checkAncestors && el.closest('.' + blockClass) !== null)\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, blockClass, checkAncestors))\r\n return true;\r\n }\r\n }\r\n catch (e) {\r\n }\r\n if (blockSelector) {\r\n if (el.matches(blockSelector))\r\n return true;\r\n if (checkAncestors && el.closest(blockSelector) !== null)\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction isSerialized(n, mirror) {\r\n return mirror.getId(n) !== -1;\r\n}\r\nfunction isIgnored(n, mirror) {\r\n return mirror.getId(n) === IGNORED_NODE;\r\n}\r\nfunction isAncestorRemoved(target, mirror) {\r\n if (isShadowRoot(target)) {\r\n return false;\r\n }\r\n const id = mirror.getId(target);\r\n if (!mirror.has(id)) {\r\n return true;\r\n }\r\n if (target.parentNode &&\r\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n if (!target.parentNode) {\r\n return true;\r\n }\r\n return isAncestorRemoved(target.parentNode, mirror);\r\n}\r\nfunction legacy_isTouchEvent(event) {\r\n return Boolean(event.changedTouches);\r\n}\r\nfunction polyfill(win = window) {\r\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\r\n win.NodeList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\r\n win.DOMTokenList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if (!Node.prototype.contains) {\r\n Node.prototype.contains = (...args) => {\r\n let node = args[0];\r\n if (!(0 in args)) {\r\n throw new TypeError('1 argument is required');\r\n }\r\n do {\r\n if (this === node) {\r\n return true;\r\n }\r\n } while ((node = node && node.parentNode));\r\n return false;\r\n };\r\n }\r\n}\r\nfunction queueToResolveTrees(queue) {\r\n const queueNodeMap = {};\r\n const putIntoMap = (m, parent) => {\r\n const nodeInTree = {\r\n value: m,\r\n parent,\r\n children: [],\r\n };\r\n queueNodeMap[m.node.id] = nodeInTree;\r\n return nodeInTree;\r\n };\r\n const queueNodeTrees = [];\r\n for (const mutation of queue) {\r\n const { nextId, parentId } = mutation;\r\n if (nextId && nextId in queueNodeMap) {\r\n const nextInTree = queueNodeMap[nextId];\r\n if (nextInTree.parent) {\r\n const idx = nextInTree.parent.children.indexOf(nextInTree);\r\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\r\n }\r\n else {\r\n const idx = queueNodeTrees.indexOf(nextInTree);\r\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\r\n }\r\n continue;\r\n }\r\n if (parentId in queueNodeMap) {\r\n const parentInTree = queueNodeMap[parentId];\r\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\r\n continue;\r\n }\r\n queueNodeTrees.push(putIntoMap(mutation, null));\r\n }\r\n return queueNodeTrees;\r\n}\r\nfunction iterateResolveTree(tree, cb) {\r\n cb(tree.value);\r\n for (let i = tree.children.length - 1; i >= 0; i--) {\r\n iterateResolveTree(tree.children[i], cb);\r\n }\r\n}\r\nfunction isSerializedIframe(n, mirror) {\r\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\r\n}\r\nfunction isSerializedStylesheet(n, mirror) {\r\n return Boolean(n.nodeName === 'LINK' &&\r\n n.nodeType === n.ELEMENT_NODE &&\r\n n.getAttribute &&\r\n n.getAttribute('rel') === 'stylesheet' &&\r\n mirror.getMeta(n));\r\n}\r\nfunction getBaseDimension(node, rootIframe) {\r\n var _a, _b;\r\n const frameElement = (_b = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.frameElement;\r\n if (!frameElement || frameElement === rootIframe) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n relativeScale: 1,\r\n absoluteScale: 1,\r\n };\r\n }\r\n const frameDimension = frameElement.getBoundingClientRect();\r\n const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\r\n const relativeScale = frameDimension.height / frameElement.clientHeight;\r\n return {\r\n x: frameDimension.x * frameBaseDimension.relativeScale +\r\n frameBaseDimension.x,\r\n y: frameDimension.y * frameBaseDimension.relativeScale +\r\n frameBaseDimension.y,\r\n relativeScale,\r\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\r\n };\r\n}\r\nfunction hasShadowRoot(n) {\r\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\r\n}\r\nfunction getNestedRule(rules, position) {\r\n const rule = rules[position[0]];\r\n if (position.length === 1) {\r\n return rule;\r\n }\r\n else {\r\n return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));\r\n }\r\n}\r\nfunction getPositionsAndIndex(nestedIndex) {\r\n const positions = [...nestedIndex];\r\n const index = positions.pop();\r\n return { positions, index };\r\n}\r\nfunction uniqueTextMutations(mutations) {\r\n const idSet = new Set();\r\n const uniqueMutations = [];\r\n for (let i = mutations.length; i--;) {\r\n const mutation = mutations[i];\r\n if (!idSet.has(mutation.id)) {\r\n uniqueMutations.push(mutation);\r\n idSet.add(mutation.id);\r\n }\r\n }\r\n return uniqueMutations;\r\n}\r\nclass StyleSheetMirror {\r\n constructor() {\r\n this.id = 1;\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n }\r\n getId(stylesheet) {\r\n var _a;\r\n return (_a = this.styleIDMap.get(stylesheet)) !== null && _a !== void 0 ? _a : -1;\r\n }\r\n has(stylesheet) {\r\n return this.styleIDMap.has(stylesheet);\r\n }\r\n add(stylesheet, id) {\r\n if (this.has(stylesheet))\r\n return this.getId(stylesheet);\r\n let newId;\r\n if (id === undefined) {\r\n newId = this.id++;\r\n }\r\n else\r\n newId = id;\r\n this.styleIDMap.set(stylesheet, newId);\r\n this.idStyleMap.set(newId, stylesheet);\r\n return newId;\r\n }\r\n getStyle(id) {\r\n return this.idStyleMap.get(id) || null;\r\n }\r\n reset() {\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n this.id = 1;\r\n }\r\n generateId() {\r\n return this.id++;\r\n }\r\n}\r\nfunction getShadowHost(n) {\r\n var _a, _b;\r\n let shadowHost = null;\r\n if (((_b = (_a = n.getRootNode) === null || _a === void 0 ? void 0 : _a.call(n)) === null || _b === void 0 ? void 0 : _b.nodeType) === Node.DOCUMENT_FRAGMENT_NODE &&\r\n n.getRootNode().host)\r\n shadowHost = n.getRootNode().host;\r\n return shadowHost;\r\n}\r\nfunction getRootShadowHost(n) {\r\n let rootShadowHost = n;\r\n let shadowHost;\r\n while ((shadowHost = getShadowHost(rootShadowHost)))\r\n rootShadowHost = shadowHost;\r\n return rootShadowHost;\r\n}\r\nfunction shadowHostInDom(n) {\r\n const doc = n.ownerDocument;\r\n if (!doc)\r\n return false;\r\n const shadowHost = getRootShadowHost(n);\r\n return doc.contains(shadowHost);\r\n}\r\nfunction inDom(n) {\r\n const doc = n.ownerDocument;\r\n if (!doc)\r\n return false;\r\n return doc.contains(n) || shadowHostInDom(n);\r\n}\n\nexport { StyleSheetMirror, _mirror, closestElementOfNode, getBaseDimension, getNestedRule, getPositionsAndIndex, getRootShadowHost, getShadowHost, getWindowHeight, getWindowScroll, getWindowWidth, hasShadowRoot, hookSetter, inDom, isAncestorRemoved, isBlocked, isIgnored, isSerialized, isSerializedIframe, isSerializedStylesheet, iterateResolveTree, legacy_isTouchEvent, nowTimestamp, on, patch, polyfill, queueToResolveTrees, shadowHostInDom, throttle, uniqueTextMutations };\n","var EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\n\nexport { CanvasContext, EventType, IncrementalSource, MouseInteractions, PointerTypes, ReplayerEvents };\n","import { isShadowRoot, isNativeShadowDom, getInputType, maskInputValue, ignoreAttribute, transformAttribute, toLowerCase, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isSerialized, isAncestorRemoved, closestElementOfNode, hasShadowRoot, inDom, getShadowHost, isSerializedIframe, isSerializedStylesheet } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\r\n return '__ln' in n;\r\n}\r\nclass DoubleLinkedList {\r\n constructor() {\r\n this.length = 0;\r\n this.head = null;\r\n this.tail = null;\r\n }\r\n get(position) {\r\n if (position >= this.length) {\r\n throw new Error('Position outside of list range');\r\n }\r\n let current = this.head;\r\n for (let index = 0; index < position; index++) {\r\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\r\n }\r\n return current;\r\n }\r\n addNode(n) {\r\n const node = {\r\n value: n,\r\n previous: null,\r\n next: null,\r\n };\r\n n.__ln = node;\r\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\r\n const current = n.previousSibling.__ln.next;\r\n node.next = current;\r\n node.previous = n.previousSibling.__ln;\r\n n.previousSibling.__ln.next = node;\r\n if (current) {\r\n current.previous = node;\r\n }\r\n }\r\n else if (n.nextSibling &&\r\n isNodeInLinkedList(n.nextSibling) &&\r\n n.nextSibling.__ln.previous) {\r\n const current = n.nextSibling.__ln.previous;\r\n node.previous = current;\r\n node.next = n.nextSibling.__ln;\r\n n.nextSibling.__ln.previous = node;\r\n if (current) {\r\n current.next = node;\r\n }\r\n }\r\n else {\r\n if (this.head) {\r\n this.head.previous = node;\r\n }\r\n node.next = this.head;\r\n this.head = node;\r\n }\r\n if (node.next === null) {\r\n this.tail = node;\r\n }\r\n this.length++;\r\n }\r\n removeNode(n) {\r\n const current = n.__ln;\r\n if (!this.head) {\r\n return;\r\n }\r\n if (!current.previous) {\r\n this.head = current.next;\r\n if (this.head) {\r\n this.head.previous = null;\r\n }\r\n else {\r\n this.tail = null;\r\n }\r\n }\r\n else {\r\n current.previous.next = current.next;\r\n if (current.next) {\r\n current.next.previous = current.previous;\r\n }\r\n else {\r\n this.tail = current.previous;\r\n }\r\n }\r\n if (n.__ln) {\r\n delete n.__ln;\r\n }\r\n this.length--;\r\n }\r\n}\r\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\r\nclass MutationBuffer {\r\n constructor() {\r\n this.frozen = false;\r\n this.locked = false;\r\n this.texts = [];\r\n this.attributes = [];\r\n this.attributeMap = new WeakMap();\r\n this.removes = [];\r\n this.mapRemoves = [];\r\n this.movedMap = {};\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.processMutations = (mutations) => {\r\n mutations.forEach(this.processMutation);\r\n this.emit();\r\n };\r\n this.emit = () => {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const adds = [];\r\n const addedIds = new Set();\r\n const addList = new DoubleLinkedList();\r\n const getNextId = (n) => {\r\n let ns = n;\r\n let nextId = IGNORED_NODE;\r\n while (nextId === IGNORED_NODE) {\r\n ns = ns && ns.nextSibling;\r\n nextId = ns && this.mirror.getId(ns);\r\n }\r\n return nextId;\r\n };\r\n const pushAdd = (n) => {\r\n if (!n.parentNode ||\r\n !inDom(n) ||\r\n n.parentNode.tagName === 'TEXTAREA') {\r\n return;\r\n }\r\n const parentId = isShadowRoot(n.parentNode)\r\n ? this.mirror.getId(getShadowHost(n))\r\n : this.mirror.getId(n.parentNode);\r\n const nextId = getNextId(n);\r\n if (parentId === -1 || nextId === -1) {\r\n return addList.addNode(n);\r\n }\r\n const sn = serializeNodeWithId(n, {\r\n doc: this.doc,\r\n mirror: this.mirror,\r\n blockClass: this.blockClass,\r\n blockSelector: this.blockSelector,\r\n maskTextClass: this.maskTextClass,\r\n maskTextSelector: this.maskTextSelector,\r\n skipChild: true,\r\n newlyAddedElement: true,\r\n inlineStylesheet: this.inlineStylesheet,\r\n maskInputOptions: this.maskInputOptions,\r\n maskTextFn: this.maskTextFn,\r\n maskInputFn: this.maskInputFn,\r\n slimDOMOptions: this.slimDOMOptions,\r\n dataURLOptions: this.dataURLOptions,\r\n recordCanvas: this.recordCanvas,\r\n inlineImages: this.inlineImages,\r\n onSerialize: (currentN) => {\r\n if (isSerializedIframe(currentN, this.mirror)) {\r\n this.iframeManager.addIframe(currentN);\r\n }\r\n if (isSerializedStylesheet(currentN, this.mirror)) {\r\n this.stylesheetManager.trackLinkElement(currentN);\r\n }\r\n if (hasShadowRoot(n)) {\r\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n this.iframeManager.attachIframe(iframe, childSn);\r\n this.shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (link, childSn) => {\r\n this.stylesheetManager.attachLinkElement(link, childSn);\r\n },\r\n });\r\n if (sn) {\r\n adds.push({\r\n parentId,\r\n nextId,\r\n node: sn,\r\n });\r\n addedIds.add(sn.id);\r\n }\r\n };\r\n while (this.mapRemoves.length) {\r\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\r\n }\r\n for (const n of this.movedSet) {\r\n if (isParentRemoved(this.removes, n, this.mirror) &&\r\n !this.movedSet.has(n.parentNode)) {\r\n continue;\r\n }\r\n pushAdd(n);\r\n }\r\n for (const n of this.addedSet) {\r\n if (!isAncestorInSet(this.droppedSet, n) &&\r\n !isParentRemoved(this.removes, n, this.mirror)) {\r\n pushAdd(n);\r\n }\r\n else if (isAncestorInSet(this.movedSet, n)) {\r\n pushAdd(n);\r\n }\r\n else {\r\n this.droppedSet.add(n);\r\n }\r\n }\r\n let candidate = null;\r\n while (addList.length) {\r\n let node = null;\r\n if (candidate) {\r\n const parentId = this.mirror.getId(candidate.value.parentNode);\r\n const nextId = getNextId(candidate.value);\r\n if (parentId !== -1 && nextId !== -1) {\r\n node = candidate;\r\n }\r\n }\r\n if (!node) {\r\n let tailNode = addList.tail;\r\n while (tailNode) {\r\n const _node = tailNode;\r\n tailNode = tailNode.previous;\r\n if (_node) {\r\n const parentId = this.mirror.getId(_node.value.parentNode);\r\n const nextId = getNextId(_node.value);\r\n if (nextId === -1)\r\n continue;\r\n else if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n else {\r\n const unhandledNode = _node.value;\r\n if (unhandledNode.parentNode &&\r\n unhandledNode.parentNode.nodeType ===\r\n Node.DOCUMENT_FRAGMENT_NODE) {\r\n const shadowHost = unhandledNode.parentNode\r\n .host;\r\n const parentId = this.mirror.getId(shadowHost);\r\n if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!node) {\r\n while (addList.head) {\r\n addList.removeNode(addList.head.value);\r\n }\r\n break;\r\n }\r\n candidate = node.previous;\r\n addList.removeNode(node.value);\r\n pushAdd(node.value);\r\n }\r\n const payload = {\r\n texts: this.texts\r\n .map((text) => {\r\n const n = text.node;\r\n if (n.parentNode &&\r\n n.parentNode.tagName === 'TEXTAREA') {\r\n this.genTextAreaValueMutation(n.parentNode);\r\n }\r\n return {\r\n id: this.mirror.getId(n),\r\n value: text.value,\r\n };\r\n })\r\n .filter((text) => !addedIds.has(text.id))\r\n .filter((text) => this.mirror.has(text.id)),\r\n attributes: this.attributes\r\n .map((attribute) => {\r\n const { attributes } = attribute;\r\n if (typeof attributes.style === 'string') {\r\n const diffAsStr = JSON.stringify(attribute.styleDiff);\r\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\r\n if (diffAsStr.length < attributes.style.length) {\r\n if ((diffAsStr + unchangedAsStr).split('var(').length ===\r\n attributes.style.split('var(').length) {\r\n attributes.style = attribute.styleDiff;\r\n }\r\n }\r\n }\r\n return {\r\n id: this.mirror.getId(attribute.node),\r\n attributes: attributes,\r\n };\r\n })\r\n .filter((attribute) => !addedIds.has(attribute.id))\r\n .filter((attribute) => this.mirror.has(attribute.id)),\r\n removes: this.removes,\r\n adds,\r\n };\r\n if (!payload.texts.length &&\r\n !payload.attributes.length &&\r\n !payload.removes.length &&\r\n !payload.adds.length) {\r\n return;\r\n }\r\n this.texts = [];\r\n this.attributes = [];\r\n this.attributeMap = new WeakMap();\r\n this.removes = [];\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.movedMap = {};\r\n this.mutationCb(payload);\r\n };\r\n this.genTextAreaValueMutation = (textarea) => {\r\n let item = this.attributeMap.get(textarea);\r\n if (!item) {\r\n item = {\r\n node: textarea,\r\n attributes: {},\r\n styleDiff: {},\r\n _unchangedStyles: {},\r\n };\r\n this.attributes.push(item);\r\n this.attributeMap.set(textarea, item);\r\n }\r\n item.attributes.value = Array.from(textarea.childNodes, (cn) => cn.textContent || '').join('');\r\n };\r\n this.processMutation = (m) => {\r\n if (isIgnored(m.target, this.mirror)) {\r\n return;\r\n }\r\n switch (m.type) {\r\n case 'characterData': {\r\n const value = m.target.textContent;\r\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\r\n value !== m.oldValue) {\r\n this.texts.push({\r\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, true) && value\r\n ? this.maskTextFn\r\n ? this.maskTextFn(value, closestElementOfNode(m.target))\r\n : value.replace(/[\\S]/g, '*')\r\n : value,\r\n node: m.target,\r\n });\r\n }\r\n break;\r\n }\r\n case 'attributes': {\r\n const target = m.target;\r\n let attributeName = m.attributeName;\r\n let value = m.target.getAttribute(attributeName);\r\n if (attributeName === 'value') {\r\n const type = getInputType(target);\r\n value = maskInputValue({\r\n element: target,\r\n maskInputOptions: this.maskInputOptions,\r\n tagName: target.tagName,\r\n type,\r\n value,\r\n maskInputFn: this.maskInputFn,\r\n });\r\n }\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n value === m.oldValue) {\r\n return;\r\n }\r\n let item = this.attributeMap.get(m.target);\r\n if (target.tagName === 'IFRAME' &&\r\n attributeName === 'src' &&\r\n !this.keepIframeSrcFn(value)) {\r\n if (!target.contentDocument) {\r\n attributeName = 'rr_src';\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n if (!item) {\r\n item = {\r\n node: m.target,\r\n attributes: {},\r\n styleDiff: {},\r\n _unchangedStyles: {},\r\n };\r\n this.attributes.push(item);\r\n this.attributeMap.set(m.target, item);\r\n }\r\n if (attributeName === 'type' &&\r\n target.tagName === 'INPUT' &&\r\n (m.oldValue || '').toLowerCase() === 'password') {\r\n target.setAttribute('data-rr-is-password', 'true');\r\n }\r\n if (!ignoreAttribute(target.tagName, attributeName)) {\r\n item.attributes[attributeName] = transformAttribute(this.doc, toLowerCase(target.tagName), toLowerCase(attributeName), value);\r\n if (attributeName === 'style') {\r\n if (!this.unattachedDoc) {\r\n try {\r\n this.unattachedDoc =\r\n document.implementation.createHTMLDocument();\r\n }\r\n catch (e) {\r\n this.unattachedDoc = this.doc;\r\n }\r\n }\r\n const old = this.unattachedDoc.createElement('span');\r\n if (m.oldValue) {\r\n old.setAttribute('style', m.oldValue);\r\n }\r\n for (const pname of Array.from(target.style)) {\r\n const newValue = target.style.getPropertyValue(pname);\r\n const newPriority = target.style.getPropertyPriority(pname);\r\n if (newValue !== old.style.getPropertyValue(pname) ||\r\n newPriority !== old.style.getPropertyPriority(pname)) {\r\n if (newPriority === '') {\r\n item.styleDiff[pname] = newValue;\r\n }\r\n else {\r\n item.styleDiff[pname] = [newValue, newPriority];\r\n }\r\n }\r\n else {\r\n item._unchangedStyles[pname] = [newValue, newPriority];\r\n }\r\n }\r\n for (const pname of Array.from(old.style)) {\r\n if (target.style.getPropertyValue(pname) === '') {\r\n item.styleDiff[pname] = false;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n case 'childList': {\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\r\n return;\r\n if (m.target.tagName === 'TEXTAREA') {\r\n this.genTextAreaValueMutation(m.target);\r\n return;\r\n }\r\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\r\n m.removedNodes.forEach((n) => {\r\n const nodeId = this.mirror.getId(n);\r\n const parentId = isShadowRoot(m.target)\r\n ? this.mirror.getId(m.target.host)\r\n : this.mirror.getId(m.target);\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n isIgnored(n, this.mirror) ||\r\n !isSerialized(n, this.mirror)) {\r\n return;\r\n }\r\n if (this.addedSet.has(n)) {\r\n deepDelete(this.addedSet, n);\r\n this.droppedSet.add(n);\r\n }\r\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\r\n else if (isAncestorRemoved(m.target, this.mirror)) ;\r\n else if (this.movedSet.has(n) &&\r\n this.movedMap[moveKey(nodeId, parentId)]) {\r\n deepDelete(this.movedSet, n);\r\n }\r\n else {\r\n this.removes.push({\r\n parentId,\r\n id: nodeId,\r\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\r\n ? true\r\n : undefined,\r\n });\r\n }\r\n this.mapRemoves.push(n);\r\n });\r\n break;\r\n }\r\n }\r\n };\r\n this.genAdds = (n, target) => {\r\n if (this.processedNodeManager.inOtherBuffer(n, this))\r\n return;\r\n if (this.addedSet.has(n) || this.movedSet.has(n))\r\n return;\r\n if (this.mirror.hasNode(n)) {\r\n if (isIgnored(n, this.mirror)) {\r\n return;\r\n }\r\n this.movedSet.add(n);\r\n let targetId = null;\r\n if (target && this.mirror.hasNode(target)) {\r\n targetId = this.mirror.getId(target);\r\n }\r\n if (targetId && targetId !== -1) {\r\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\r\n }\r\n }\r\n else {\r\n this.addedSet.add(n);\r\n this.droppedSet.delete(n);\r\n }\r\n if (!isBlocked(n, this.blockClass, this.blockSelector, false)) {\r\n n.childNodes.forEach((childN) => this.genAdds(childN));\r\n if (hasShadowRoot(n)) {\r\n n.shadowRoot.childNodes.forEach((childN) => {\r\n this.processedNodeManager.add(childN, this);\r\n this.genAdds(childN, n);\r\n });\r\n }\r\n }\r\n };\r\n }\r\n init(options) {\r\n [\r\n 'mutationCb',\r\n 'blockClass',\r\n 'blockSelector',\r\n 'maskTextClass',\r\n 'maskTextSelector',\r\n 'inlineStylesheet',\r\n 'maskInputOptions',\r\n 'maskTextFn',\r\n 'maskInputFn',\r\n 'keepIframeSrcFn',\r\n 'recordCanvas',\r\n 'inlineImages',\r\n 'slimDOMOptions',\r\n 'dataURLOptions',\r\n 'doc',\r\n 'mirror',\r\n 'iframeManager',\r\n 'stylesheetManager',\r\n 'shadowDomManager',\r\n 'canvasManager',\r\n 'processedNodeManager',\r\n ].forEach((key) => {\r\n this[key] = options[key];\r\n });\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n this.canvasManager.freeze();\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n this.canvasManager.unfreeze();\r\n this.emit();\r\n }\r\n isFrozen() {\r\n return this.frozen;\r\n }\r\n lock() {\r\n this.locked = true;\r\n this.canvasManager.lock();\r\n }\r\n unlock() {\r\n this.locked = false;\r\n this.canvasManager.unlock();\r\n this.emit();\r\n }\r\n reset() {\r\n this.shadowDomManager.reset();\r\n this.canvasManager.reset();\r\n }\r\n}\r\nfunction deepDelete(addsSet, n) {\r\n addsSet.delete(n);\r\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\r\n}\r\nfunction isParentRemoved(removes, n, mirror) {\r\n if (removes.length === 0)\r\n return false;\r\n return _isParentRemoved(removes, n, mirror);\r\n}\r\nfunction _isParentRemoved(removes, n, mirror) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const parentId = mirror.getId(parentNode);\r\n if (removes.some((r) => r.id === parentId)) {\r\n return true;\r\n }\r\n return _isParentRemoved(removes, parentNode, mirror);\r\n}\r\nfunction isAncestorInSet(set, n) {\r\n if (set.size === 0)\r\n return false;\r\n return _isAncestorInSet(set, n);\r\n}\r\nfunction _isAncestorInSet(set, n) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n if (set.has(parentNode)) {\r\n return true;\r\n }\r\n return _isAncestorInSet(set, parentNode);\r\n}\n\nexport { MutationBuffer as default };\n","let errorHandler;\r\nfunction registerErrorHandler(handler) {\r\n errorHandler = handler;\r\n}\r\nfunction unregisterErrorHandler() {\r\n errorHandler = undefined;\r\n}\r\nconst callbackWrapper = (cb) => {\r\n if (!errorHandler) {\r\n return cb;\r\n }\r\n const rrwebWrapped = ((...rest) => {\r\n try {\r\n return cb(...rest);\r\n }\r\n catch (error) {\r\n if (errorHandler && errorHandler(error) === true) {\r\n return;\r\n }\r\n throw error;\r\n }\r\n });\r\n return rrwebWrapped;\r\n};\n\nexport { callbackWrapper, registerErrorHandler, unregisterErrorHandler };\n","import { toLowerCase, getInputType, maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isBlocked, getWindowScroll, getWindowHeight, getWindowWidth, hookSetter, patch, legacy_isTouchEvent, nowTimestamp } from '../utils.js';\nimport { MouseInteractions, IncrementalSource, PointerTypes } from '../../../types/dist/types.js';\nimport MutationBuffer from './mutation.js';\nimport { callbackWrapper } from './error-handler.js';\n\nconst mutationBuffers = [];\r\nfunction getEventTarget(event) {\r\n try {\r\n if ('composedPath' in event) {\r\n const path = event.composedPath();\r\n if (path.length) {\r\n return path[0];\r\n }\r\n }\r\n else if ('path' in event && event.path.length) {\r\n return event.path[0];\r\n }\r\n }\r\n catch (_a) {\r\n }\r\n return event && event.target;\r\n}\r\nfunction initMutationObserver(options, rootEl) {\r\n var _a, _b;\r\n const mutationBuffer = new MutationBuffer();\r\n mutationBuffers.push(mutationBuffer);\r\n mutationBuffer.init(options);\r\n let mutationObserverCtor = window.MutationObserver ||\r\n window.__rrMutationObserver;\r\n const angularZoneSymbol = (_b = (_a = window === null || window === void 0 ? void 0 : window.Zone) === null || _a === void 0 ? void 0 : _a.__symbol__) === null || _b === void 0 ? void 0 : _b.call(_a, 'MutationObserver');\r\n if (angularZoneSymbol &&\r\n window[angularZoneSymbol]) {\r\n mutationObserverCtor = window[angularZoneSymbol];\r\n }\r\n const observer = new mutationObserverCtor(callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer)));\r\n observer.observe(rootEl, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n characterData: true,\r\n characterDataOldValue: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\r\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\r\n if (sampling.mousemove === false) {\r\n return () => {\r\n };\r\n }\r\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\r\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\r\n ? sampling.mousemoveCallback\r\n : 500;\r\n let positions = [];\r\n let timeBaseline;\r\n const wrappedCb = throttle(callbackWrapper((source) => {\r\n const totalOffset = Date.now() - timeBaseline;\r\n mousemoveCb(positions.map((p) => {\r\n p.timeOffset -= totalOffset;\r\n return p;\r\n }), source);\r\n positions = [];\r\n timeBaseline = null;\r\n }), callbackThreshold);\r\n const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n const target = getEventTarget(evt);\r\n const { clientX, clientY } = legacy_isTouchEvent(evt)\r\n ? evt.changedTouches[0]\r\n : evt;\r\n if (!timeBaseline) {\r\n timeBaseline = nowTimestamp();\r\n }\r\n positions.push({\r\n x: clientX,\r\n y: clientY,\r\n id: mirror.getId(target),\r\n timeOffset: nowTimestamp() - timeBaseline,\r\n });\r\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\r\n ? IncrementalSource.Drag\r\n : evt instanceof MouseEvent\r\n ? IncrementalSource.MouseMove\r\n : IncrementalSource.TouchMove);\r\n }), threshold, {\r\n trailing: false,\r\n }));\r\n const handlers = [\r\n on('mousemove', updatePosition, doc),\r\n on('touchmove', updatePosition, doc),\r\n on('drag', updatePosition, doc),\r\n ];\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n if (sampling.mouseInteraction === false) {\r\n return () => {\r\n };\r\n }\r\n const disableMap = sampling.mouseInteraction === true ||\r\n sampling.mouseInteraction === undefined\r\n ? {}\r\n : sampling.mouseInteraction;\r\n const handlers = [];\r\n let currentPointerType = null;\r\n const getHandler = (eventKey) => {\r\n return (event) => {\r\n const target = getEventTarget(event);\r\n if (isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n let pointerType = null;\r\n let thisEventKey = eventKey;\r\n if ('pointerType' in event) {\r\n switch (event.pointerType) {\r\n case 'mouse':\r\n pointerType = PointerTypes.Mouse;\r\n break;\r\n case 'touch':\r\n pointerType = PointerTypes.Touch;\r\n break;\r\n case 'pen':\r\n pointerType = PointerTypes.Pen;\r\n break;\r\n }\r\n if (pointerType === PointerTypes.Touch) {\r\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\r\n thisEventKey = 'TouchStart';\r\n }\r\n else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\r\n thisEventKey = 'TouchEnd';\r\n }\r\n }\r\n else if (pointerType === PointerTypes.Pen) ;\r\n }\r\n else if (legacy_isTouchEvent(event)) {\r\n pointerType = PointerTypes.Touch;\r\n }\r\n if (pointerType !== null) {\r\n currentPointerType = pointerType;\r\n if ((thisEventKey.startsWith('Touch') &&\r\n pointerType === PointerTypes.Touch) ||\r\n (thisEventKey.startsWith('Mouse') &&\r\n pointerType === PointerTypes.Mouse)) {\r\n pointerType = null;\r\n }\r\n }\r\n else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\r\n pointerType = currentPointerType;\r\n currentPointerType = null;\r\n }\r\n const e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\r\n if (!e) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n const { clientX, clientY } = e;\r\n callbackWrapper(mouseInteractionCb)(Object.assign({ type: MouseInteractions[thisEventKey], id, x: clientX, y: clientY }, (pointerType !== null && { pointerType })));\r\n };\r\n };\r\n Object.keys(MouseInteractions)\r\n .filter((key) => Number.isNaN(Number(key)) &&\r\n !key.endsWith('_Departed') &&\r\n disableMap[key] !== false)\r\n .forEach((eventKey) => {\r\n let eventName = toLowerCase(eventKey);\r\n const handler = getHandler(eventKey);\r\n if (window.PointerEvent) {\r\n switch (MouseInteractions[eventKey]) {\r\n case MouseInteractions.MouseDown:\r\n case MouseInteractions.MouseUp:\r\n eventName = eventName.replace('mouse', 'pointer');\r\n break;\r\n case MouseInteractions.TouchStart:\r\n case MouseInteractions.TouchEnd:\r\n return;\r\n }\r\n }\r\n handlers.push(on(eventName, handler, doc));\r\n });\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n const target = getEventTarget(evt);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n if (target === doc && doc.defaultView) {\r\n const scrollLeftTop = getWindowScroll(doc.defaultView);\r\n scrollCb({\r\n id,\r\n x: scrollLeftTop.left,\r\n y: scrollLeftTop.top,\r\n });\r\n }\r\n else {\r\n scrollCb({\r\n id,\r\n x: target.scrollLeft,\r\n y: target.scrollTop,\r\n });\r\n }\r\n }), sampling.scroll || 100));\r\n return on('scroll', updatePosition, doc);\r\n}\r\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\r\n let lastH = -1;\r\n let lastW = -1;\r\n const updateDimension = callbackWrapper(throttle(callbackWrapper(() => {\r\n const height = getWindowHeight();\r\n const width = getWindowWidth();\r\n if (lastH !== height || lastW !== width) {\r\n viewportResizeCb({\r\n width: Number(width),\r\n height: Number(height),\r\n });\r\n lastH = height;\r\n lastW = width;\r\n }\r\n }), 200));\r\n return on('resize', updateDimension, win);\r\n}\r\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\nconst lastInputValueMap = new WeakMap();\r\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, ignoreClass, ignoreSelector, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, }) {\r\n function eventHandler(event) {\r\n let target = getEventTarget(event);\r\n const userTriggered = event.isTrusted;\r\n const tagName = target && target.tagName;\r\n if (target && tagName === 'OPTION') {\r\n target = target.parentElement;\r\n }\r\n if (!target ||\r\n !tagName ||\r\n INPUT_TAGS.indexOf(tagName) < 0 ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n if (target.classList.contains(ignoreClass) ||\r\n (ignoreSelector && target.matches(ignoreSelector))) {\r\n return;\r\n }\r\n let text = target.value;\r\n let isChecked = false;\r\n const type = getInputType(target) || '';\r\n if (type === 'radio' || type === 'checkbox') {\r\n isChecked = target.checked;\r\n }\r\n else if (maskInputOptions[tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n text = maskInputValue({\r\n element: target,\r\n maskInputOptions,\r\n tagName,\r\n type,\r\n value: text,\r\n maskInputFn,\r\n });\r\n }\r\n cbWithDedup(target, userTriggeredOnInput\r\n ? { text, isChecked, userTriggered }\r\n : { text, isChecked });\r\n const name = target.name;\r\n if (type === 'radio' && name && isChecked) {\r\n doc\r\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\r\n .forEach((el) => {\r\n if (el !== target) {\r\n const text = el.value;\r\n cbWithDedup(el, userTriggeredOnInput\r\n ? { text, isChecked: !isChecked, userTriggered: false }\r\n : { text, isChecked: !isChecked });\r\n }\r\n });\r\n }\r\n }\r\n function cbWithDedup(target, v) {\r\n const lastInputValue = lastInputValueMap.get(target);\r\n if (!lastInputValue ||\r\n lastInputValue.text !== v.text ||\r\n lastInputValue.isChecked !== v.isChecked) {\r\n lastInputValueMap.set(target, v);\r\n const id = mirror.getId(target);\r\n callbackWrapper(inputCb)(Object.assign(Object.assign({}, v), { id }));\r\n }\r\n }\r\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\r\n const handlers = events.map((eventName) => on(eventName, callbackWrapper(eventHandler), doc));\r\n const currentWindow = doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n }\r\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\r\n const hookProperties = [\r\n [currentWindow.HTMLInputElement.prototype, 'value'],\r\n [currentWindow.HTMLInputElement.prototype, 'checked'],\r\n [currentWindow.HTMLSelectElement.prototype, 'value'],\r\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\r\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\r\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\r\n ];\r\n if (propertyDescriptor && propertyDescriptor.set) {\r\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\r\n set() {\r\n callbackWrapper(eventHandler)({\r\n target: this,\r\n isTrusted: false,\r\n });\r\n },\r\n }, false, currentWindow)));\r\n }\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction getNestedCSSRulePositions(rule) {\r\n const positions = [];\r\n function recurse(childRule, pos) {\r\n if ((hasNestedCSSRule('CSSGroupingRule') &&\r\n childRule.parentRule instanceof CSSGroupingRule) ||\r\n (hasNestedCSSRule('CSSMediaRule') &&\r\n childRule.parentRule instanceof CSSMediaRule) ||\r\n (hasNestedCSSRule('CSSSupportsRule') &&\r\n childRule.parentRule instanceof CSSSupportsRule) ||\r\n (hasNestedCSSRule('CSSConditionRule') &&\r\n childRule.parentRule instanceof CSSConditionRule)) {\r\n const rules = Array.from(childRule.parentRule.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n else if (childRule.parentStyleSheet) {\r\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n return pos;\r\n }\r\n return recurse(rule, positions);\r\n}\r\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\r\n let id, styleId;\r\n if (!sheet)\r\n return {};\r\n if (sheet.ownerNode)\r\n id = mirror.getId(sheet.ownerNode);\r\n else\r\n styleId = styleMirror.getId(sheet);\r\n return {\r\n styleId,\r\n id,\r\n };\r\n}\r\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\r\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\r\n return () => {\r\n };\r\n }\r\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\r\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [rule, index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [{ rule, index }],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\r\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [{ index }],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n let replace;\r\n if (win.CSSStyleSheet.prototype.replace) {\r\n replace = win.CSSStyleSheet.prototype.replace;\r\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [text] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replace: text,\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n }\r\n let replaceSync;\r\n if (win.CSSStyleSheet.prototype.replaceSync) {\r\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\r\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [text] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replaceSync: text,\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n }\r\n const supportedNestedCSSRuleTypes = {};\r\n if (canMonkeyPatchNestedCSSRule('CSSGroupingRule')) {\r\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\r\n }\r\n else {\r\n if (canMonkeyPatchNestedCSSRule('CSSMediaRule')) {\r\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\r\n }\r\n if (canMonkeyPatchNestedCSSRule('CSSConditionRule')) {\r\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\r\n }\r\n if (canMonkeyPatchNestedCSSRule('CSSSupportsRule')) {\r\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\r\n }\r\n }\r\n const unmodifiedFunctions = {};\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n unmodifiedFunctions[typeKey] = {\r\n insertRule: type.prototype.insertRule,\r\n deleteRule: type.prototype.deleteRule,\r\n };\r\n type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [rule, index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [\r\n {\r\n rule,\r\n index: [\r\n ...getNestedCSSRulePositions(thisArg),\r\n index || 0,\r\n ],\r\n },\r\n ],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [\r\n { index: [...getNestedCSSRulePositions(thisArg), index] },\r\n ],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n });\r\n return callbackWrapper(() => {\r\n win.CSSStyleSheet.prototype.insertRule = insertRule;\r\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\r\n replace && (win.CSSStyleSheet.prototype.replace = replace);\r\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\r\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\r\n });\r\n });\r\n}\r\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\r\n var _a, _b, _c;\r\n let hostId = null;\r\n if (host.nodeName === '#document')\r\n hostId = mirror.getId(host);\r\n else\r\n hostId = mirror.getId(host.host);\r\n const patchTarget = host.nodeName === '#document'\r\n ? (_a = host.defaultView) === null || _a === void 0 ? void 0 : _a.Document\r\n : (_c = (_b = host.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView) === null || _c === void 0 ? void 0 : _c.ShadowRoot;\r\n const originalPropertyDescriptor = (patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype)\r\n ? Object.getOwnPropertyDescriptor(patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype, 'adoptedStyleSheets')\r\n : undefined;\r\n if (hostId === null ||\r\n hostId === -1 ||\r\n !patchTarget ||\r\n !originalPropertyDescriptor)\r\n return () => {\r\n };\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get() {\r\n var _a;\r\n return (_a = originalPropertyDescriptor.get) === null || _a === void 0 ? void 0 : _a.call(this);\r\n },\r\n set(sheets) {\r\n var _a;\r\n const result = (_a = originalPropertyDescriptor.set) === null || _a === void 0 ? void 0 : _a.call(this, sheets);\r\n if (hostId !== null && hostId !== -1) {\r\n try {\r\n stylesheetManager.adoptStyleSheets(sheets, hostId);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return result;\r\n },\r\n });\r\n return callbackWrapper(() => {\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get: originalPropertyDescriptor.get,\r\n set: originalPropertyDescriptor.set,\r\n });\r\n });\r\n}\r\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\r\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\r\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n var _a;\r\n const [property, value, priority] = argumentsList;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return setProperty.apply(thisArg, [property, value, priority]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = thisArg.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n set: {\r\n property,\r\n value,\r\n priority,\r\n },\r\n index: getNestedCSSRulePositions(thisArg.parentRule),\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n var _a;\r\n const [property] = argumentsList;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return removeProperty.apply(thisArg, [property]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = thisArg.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n remove: {\r\n property,\r\n },\r\n index: getNestedCSSRulePositions(thisArg.parentRule),\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n return callbackWrapper(() => {\r\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\r\n });\r\n}\r\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, mirror, sampling, doc, }) {\r\n const handler = callbackWrapper((type) => throttle(callbackWrapper((event) => {\r\n const target = getEventTarget(event);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const { currentTime, volume, muted, playbackRate, loop } = target;\r\n mediaInteractionCb({\r\n type,\r\n id: mirror.getId(target),\r\n currentTime,\r\n volume,\r\n muted,\r\n playbackRate,\r\n loop,\r\n });\r\n }), sampling.media || 500));\r\n const handlers = [\r\n on('play', handler(0), doc),\r\n on('pause', handler(1), doc),\r\n on('seeked', handler(2), doc),\r\n on('volumechange', handler(3), doc),\r\n on('ratechange', handler(4), doc),\r\n ];\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initFontObserver({ fontCb, doc }) {\r\n const win = doc.defaultView;\r\n if (!win) {\r\n return () => {\r\n };\r\n }\r\n const handlers = [];\r\n const fontMap = new WeakMap();\r\n const originalFontFace = win.FontFace;\r\n win.FontFace = function FontFace(family, source, descriptors) {\r\n const fontFace = new originalFontFace(family, source, descriptors);\r\n fontMap.set(fontFace, {\r\n family,\r\n buffer: typeof source !== 'string',\r\n descriptors,\r\n fontSource: typeof source === 'string'\r\n ? source\r\n : JSON.stringify(Array.from(new Uint8Array(source))),\r\n });\r\n return fontFace;\r\n };\r\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\r\n return function (fontFace) {\r\n setTimeout(callbackWrapper(() => {\r\n const p = fontMap.get(fontFace);\r\n if (p) {\r\n fontCb(p);\r\n fontMap.delete(fontFace);\r\n }\r\n }), 0);\r\n return original.apply(this, [fontFace]);\r\n };\r\n });\r\n handlers.push(() => {\r\n win.FontFace = originalFontFace;\r\n });\r\n handlers.push(restoreHandler);\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initSelectionObserver(param) {\r\n const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\r\n let collapsed = true;\r\n const updateSelection = callbackWrapper(() => {\r\n const selection = doc.getSelection();\r\n if (!selection || (collapsed && (selection === null || selection === void 0 ? void 0 : selection.isCollapsed)))\r\n return;\r\n collapsed = selection.isCollapsed || false;\r\n const ranges = [];\r\n const count = selection.rangeCount || 0;\r\n for (let i = 0; i < count; i++) {\r\n const range = selection.getRangeAt(i);\r\n const { startContainer, startOffset, endContainer, endOffset } = range;\r\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) ||\r\n isBlocked(endContainer, blockClass, blockSelector, true);\r\n if (blocked)\r\n continue;\r\n ranges.push({\r\n start: mirror.getId(startContainer),\r\n startOffset,\r\n end: mirror.getId(endContainer),\r\n endOffset,\r\n });\r\n }\r\n selectionCb({ ranges });\r\n });\r\n updateSelection();\r\n return on('selectionchange', updateSelection);\r\n}\r\nfunction initCustomElementObserver({ doc, customElementCb, }) {\r\n const win = doc.defaultView;\r\n if (!win || !win.customElements)\r\n return () => { };\r\n const restoreHandler = patch(win.customElements, 'define', function (original) {\r\n return function (name, constructor, options) {\r\n try {\r\n customElementCb({\r\n define: {\r\n name,\r\n },\r\n });\r\n }\r\n catch (e) {\r\n console.warn(`Custom element callback failed for ${name}`);\r\n }\r\n return original.apply(this, [name, constructor, options]);\r\n };\r\n });\r\n return restoreHandler;\r\n}\r\nfunction mergeHooks(o, hooks) {\r\n const { mutationCb, mousemoveCb, mouseInteractionCb, scrollCb, viewportResizeCb, inputCb, mediaInteractionCb, styleSheetRuleCb, styleDeclarationCb, canvasMutationCb, fontCb, selectionCb, customElementCb, } = o;\r\n o.mutationCb = (...p) => {\r\n if (hooks.mutation) {\r\n hooks.mutation(...p);\r\n }\r\n mutationCb(...p);\r\n };\r\n o.mousemoveCb = (...p) => {\r\n if (hooks.mousemove) {\r\n hooks.mousemove(...p);\r\n }\r\n mousemoveCb(...p);\r\n };\r\n o.mouseInteractionCb = (...p) => {\r\n if (hooks.mouseInteraction) {\r\n hooks.mouseInteraction(...p);\r\n }\r\n mouseInteractionCb(...p);\r\n };\r\n o.scrollCb = (...p) => {\r\n if (hooks.scroll) {\r\n hooks.scroll(...p);\r\n }\r\n scrollCb(...p);\r\n };\r\n o.viewportResizeCb = (...p) => {\r\n if (hooks.viewportResize) {\r\n hooks.viewportResize(...p);\r\n }\r\n viewportResizeCb(...p);\r\n };\r\n o.inputCb = (...p) => {\r\n if (hooks.input) {\r\n hooks.input(...p);\r\n }\r\n inputCb(...p);\r\n };\r\n o.mediaInteractionCb = (...p) => {\r\n if (hooks.mediaInteaction) {\r\n hooks.mediaInteaction(...p);\r\n }\r\n mediaInteractionCb(...p);\r\n };\r\n o.styleSheetRuleCb = (...p) => {\r\n if (hooks.styleSheetRule) {\r\n hooks.styleSheetRule(...p);\r\n }\r\n styleSheetRuleCb(...p);\r\n };\r\n o.styleDeclarationCb = (...p) => {\r\n if (hooks.styleDeclaration) {\r\n hooks.styleDeclaration(...p);\r\n }\r\n styleDeclarationCb(...p);\r\n };\r\n o.canvasMutationCb = (...p) => {\r\n if (hooks.canvasMutation) {\r\n hooks.canvasMutation(...p);\r\n }\r\n canvasMutationCb(...p);\r\n };\r\n o.fontCb = (...p) => {\r\n if (hooks.font) {\r\n hooks.font(...p);\r\n }\r\n fontCb(...p);\r\n };\r\n o.selectionCb = (...p) => {\r\n if (hooks.selection) {\r\n hooks.selection(...p);\r\n }\r\n selectionCb(...p);\r\n };\r\n o.customElementCb = (...c) => {\r\n if (hooks.customElement) {\r\n hooks.customElement(...c);\r\n }\r\n customElementCb(...c);\r\n };\r\n}\r\nfunction initObservers(o, hooks = {}) {\r\n const currentWindow = o.doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n };\r\n }\r\n mergeHooks(o, hooks);\r\n let mutationObserver;\r\n if (o.recordDOM) {\r\n mutationObserver = initMutationObserver(o, o.doc);\r\n }\r\n const mousemoveHandler = initMoveObserver(o);\r\n const mouseInteractionHandler = initMouseInteractionObserver(o);\r\n const scrollHandler = initScrollObserver(o);\r\n const viewportResizeHandler = initViewportResizeObserver(o, {\r\n win: currentWindow,\r\n });\r\n const inputHandler = initInputObserver(o);\r\n const mediaInteractionHandler = initMediaInteractionObserver(o);\r\n let styleSheetObserver = () => { };\r\n let adoptedStyleSheetObserver = () => { };\r\n let styleDeclarationObserver = () => { };\r\n let fontObserver = () => { };\r\n if (o.recordDOM) {\r\n styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\r\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\r\n styleDeclarationObserver = initStyleDeclarationObserver(o, {\r\n win: currentWindow,\r\n });\r\n if (o.collectFonts) {\r\n fontObserver = initFontObserver(o);\r\n }\r\n }\r\n const selectionObserver = initSelectionObserver(o);\r\n const customElementObserver = initCustomElementObserver(o);\r\n const pluginHandlers = [];\r\n for (const plugin of o.plugins) {\r\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\r\n }\r\n return callbackWrapper(() => {\r\n mutationBuffers.forEach((b) => b.reset());\r\n mutationObserver === null || mutationObserver === void 0 ? void 0 : mutationObserver.disconnect();\r\n mousemoveHandler();\r\n mouseInteractionHandler();\r\n scrollHandler();\r\n viewportResizeHandler();\r\n inputHandler();\r\n mediaInteractionHandler();\r\n styleSheetObserver();\r\n adoptedStyleSheetObserver();\r\n styleDeclarationObserver();\r\n fontObserver();\r\n selectionObserver();\r\n customElementObserver();\r\n pluginHandlers.forEach((h) => h());\r\n });\r\n}\r\nfunction hasNestedCSSRule(prop) {\r\n return typeof window[prop] !== 'undefined';\r\n}\r\nfunction canMonkeyPatchNestedCSSRule(prop) {\r\n return Boolean(typeof window[prop] !== 'undefined' &&\r\n window[prop].prototype &&\r\n 'insertRule' in window[prop].prototype &&\r\n 'deleteRule' in window[prop].prototype);\r\n}\n\nexport { INPUT_TAGS, initAdoptedStyleSheetObserver, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","class CrossOriginIframeMirror {\r\n constructor(generateIdFn) {\r\n this.generateIdFn = generateIdFn;\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n }\r\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\r\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\r\n let id = idToRemoteIdMap.get(remoteId);\r\n if (!id) {\r\n id = this.generateIdFn();\r\n idToRemoteIdMap.set(remoteId, id);\r\n remoteIdToIdMap.set(id, remoteId);\r\n }\r\n return id;\r\n }\r\n getIds(iframe, remoteId) {\r\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\r\n }\r\n getRemoteId(iframe, id, map) {\r\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\r\n if (typeof id !== 'number')\r\n return id;\r\n const remoteId = remoteIdToIdMap.get(id);\r\n if (!remoteId)\r\n return -1;\r\n return remoteId;\r\n }\r\n getRemoteIds(iframe, ids) {\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\r\n }\r\n reset(iframe) {\r\n if (!iframe) {\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n return;\r\n }\r\n this.iframeIdToRemoteIdMap.delete(iframe);\r\n this.iframeRemoteIdToIdMap.delete(iframe);\r\n }\r\n getIdToRemoteIdMap(iframe) {\r\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\r\n if (!idToRemoteIdMap) {\r\n idToRemoteIdMap = new Map();\r\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\r\n }\r\n return idToRemoteIdMap;\r\n }\r\n getRemoteIdToIdMap(iframe) {\r\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\r\n if (!remoteIdToIdMap) {\r\n remoteIdToIdMap = new Map();\r\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\r\n }\r\n return remoteIdToIdMap;\r\n }\r\n}\n\nexport { CrossOriginIframeMirror as default };\n","import { genId, NodeType } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\n\nclass IframeManager {\r\n constructor(options) {\r\n this.iframes = new WeakMap();\r\n this.crossOriginIframeMap = new WeakMap();\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.crossOriginIframeRootIdMap = new WeakMap();\r\n this.mutationCb = options.mutationCb;\r\n this.wrappedEmit = options.wrappedEmit;\r\n this.stylesheetManager = options.stylesheetManager;\r\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\r\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\r\n this.mirror = options.mirror;\r\n if (this.recordCrossOriginIframes) {\r\n window.addEventListener('message', this.handleMessage.bind(this));\r\n }\r\n }\r\n addIframe(iframeEl) {\r\n this.iframes.set(iframeEl, true);\r\n if (iframeEl.contentWindow)\r\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\r\n }\r\n addLoadListener(cb) {\r\n this.loadListener = cb;\r\n }\r\n attachIframe(iframeEl, childSn) {\r\n var _a;\r\n this.mutationCb({\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: childSn,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n });\r\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\r\n if (iframeEl.contentDocument &&\r\n iframeEl.contentDocument.adoptedStyleSheets &&\r\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\r\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\r\n }\r\n handleMessage(message) {\r\n const crossOriginMessageEvent = message;\r\n if (crossOriginMessageEvent.data.type !== 'rrweb' ||\r\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\r\n return;\r\n const iframeSourceWindow = message.source;\r\n if (!iframeSourceWindow)\r\n return;\r\n const iframeEl = this.crossOriginIframeMap.get(message.source);\r\n if (!iframeEl)\r\n return;\r\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event);\r\n if (transformedEvent)\r\n this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout);\r\n }\r\n transformCrossOriginEvent(iframeEl, e) {\r\n var _a;\r\n switch (e.type) {\r\n case EventType.FullSnapshot: {\r\n this.crossOriginIframeMirror.reset(iframeEl);\r\n this.crossOriginIframeStyleMirror.reset(iframeEl);\r\n this.replaceIdOnNode(e.data.node, iframeEl);\r\n const rootId = e.data.node.id;\r\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\r\n this.patchRootIdOnNode(e.data.node, rootId);\r\n return {\r\n timestamp: e.timestamp,\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Mutation,\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: e.data.node,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n },\r\n };\r\n }\r\n case EventType.Meta:\r\n case EventType.Load:\r\n case EventType.DomContentLoaded: {\r\n return false;\r\n }\r\n case EventType.Plugin: {\r\n return e;\r\n }\r\n case EventType.Custom: {\r\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\r\n return e;\r\n }\r\n case EventType.IncrementalSnapshot: {\r\n switch (e.data.source) {\r\n case IncrementalSource.Mutation: {\r\n e.data.adds.forEach((n) => {\r\n this.replaceIds(n, iframeEl, [\r\n 'parentId',\r\n 'nextId',\r\n 'previousId',\r\n ]);\r\n this.replaceIdOnNode(n.node, iframeEl);\r\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\r\n rootId && this.patchRootIdOnNode(n.node, rootId);\r\n });\r\n e.data.removes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\r\n });\r\n e.data.attributes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n e.data.texts.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.Drag:\r\n case IncrementalSource.TouchMove:\r\n case IncrementalSource.MouseMove: {\r\n e.data.positions.forEach((p) => {\r\n this.replaceIds(p, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.ViewportResize: {\r\n return false;\r\n }\r\n case IncrementalSource.MediaInteraction:\r\n case IncrementalSource.MouseInteraction:\r\n case IncrementalSource.Scroll:\r\n case IncrementalSource.CanvasMutation:\r\n case IncrementalSource.Input: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n return e;\r\n }\r\n case IncrementalSource.StyleSheetRule:\r\n case IncrementalSource.StyleDeclaration: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\r\n return e;\r\n }\r\n case IncrementalSource.Font: {\r\n return e;\r\n }\r\n case IncrementalSource.Selection: {\r\n e.data.ranges.forEach((range) => {\r\n this.replaceIds(range, iframeEl, ['start', 'end']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.AdoptedStyleSheet: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\r\n (_a = e.data.styles) === null || _a === void 0 ? void 0 : _a.forEach((style) => {\r\n this.replaceStyleIds(style, iframeEl, ['styleId']);\r\n });\r\n return e;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n replace(iframeMirror, obj, iframeEl, keys) {\r\n for (const key of keys) {\r\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\r\n continue;\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\r\n }\r\n else {\r\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\r\n }\r\n }\r\n return obj;\r\n }\r\n replaceIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\r\n }\r\n replaceStyleIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\r\n }\r\n replaceIdOnNode(node, iframeEl) {\r\n this.replaceIds(node, iframeEl, ['id', 'rootId']);\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.replaceIdOnNode(child, iframeEl);\r\n });\r\n }\r\n }\r\n patchRootIdOnNode(node, rootId) {\r\n if (node.type !== NodeType.Document && !node.rootId)\r\n node.rootId = rootId;\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.patchRootIdOnNode(child, rootId);\r\n });\r\n }\r\n }\r\n}\n\nexport { IframeManager };\n","import { initMutationObserver, initScrollObserver, initAdoptedStyleSheetObserver } from './observer.js';\nimport { patch, inDom } from '../utils.js';\nimport { isNativeShadowDom } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nclass ShadowDomManager {\r\n constructor(options) {\r\n this.shadowDoms = new WeakSet();\r\n this.restoreHandlers = [];\r\n this.mutationCb = options.mutationCb;\r\n this.scrollCb = options.scrollCb;\r\n this.bypassOptions = options.bypassOptions;\r\n this.mirror = options.mirror;\r\n this.init();\r\n }\r\n init() {\r\n this.reset();\r\n this.patchAttachShadow(Element, document);\r\n }\r\n addShadowRoot(shadowRoot, doc) {\r\n if (!isNativeShadowDom(shadowRoot))\r\n return;\r\n if (this.shadowDoms.has(shadowRoot))\r\n return;\r\n this.shadowDoms.add(shadowRoot);\r\n const observer = initMutationObserver(Object.assign(Object.assign({}, this.bypassOptions), { doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\r\n this.restoreHandlers.push(() => observer.disconnect());\r\n this.restoreHandlers.push(initScrollObserver(Object.assign(Object.assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror })));\r\n setTimeout(() => {\r\n if (shadowRoot.adoptedStyleSheets &&\r\n shadowRoot.adoptedStyleSheets.length > 0)\r\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\r\n this.restoreHandlers.push(initAdoptedStyleSheetObserver({\r\n mirror: this.mirror,\r\n stylesheetManager: this.bypassOptions.stylesheetManager,\r\n }, shadowRoot));\r\n }, 0);\r\n }\r\n observeAttachShadow(iframeElement) {\r\n if (!iframeElement.contentWindow || !iframeElement.contentDocument)\r\n return;\r\n this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument);\r\n }\r\n patchAttachShadow(element, doc) {\r\n const manager = this;\r\n this.restoreHandlers.push(patch(element.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot && inDom(this))\r\n manager.addShadowRoot(this.shadowRoot, doc);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n reset() {\r\n this.restoreHandlers.forEach((handler) => {\r\n try {\r\n handler();\r\n }\r\n catch (e) {\r\n }\r\n });\r\n this.restoreHandlers = [];\r\n this.shadowDoms = new WeakSet();\r\n }\r\n}\n\nexport { ShadowDomManager };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\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}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nexport { __awaiter, __rest };\n","/*\n * base64-arraybuffer 1.0.1 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n","import { encode } from './../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nconst canvasVarMap = new Map();\r\nfunction variableListFor(ctx, ctor) {\r\n let contextMap = canvasVarMap.get(ctx);\r\n if (!contextMap) {\r\n contextMap = new Map();\r\n canvasVarMap.set(ctx, contextMap);\r\n }\r\n if (!contextMap.has(ctor)) {\r\n contextMap.set(ctor, []);\r\n }\r\n return contextMap.get(ctor);\r\n}\r\nconst saveWebGLVar = (value, win, ctx) => {\r\n if (!value ||\r\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\r\n return;\r\n const name = value.constructor.name;\r\n const list = variableListFor(ctx, name);\r\n let index = list.indexOf(value);\r\n if (index === -1) {\r\n index = list.length;\r\n list.push(value);\r\n }\r\n return index;\r\n};\r\nfunction serializeArg(value, win, ctx) {\r\n if (value instanceof Array) {\r\n return value.map((arg) => serializeArg(arg, win, ctx));\r\n }\r\n else if (value === null) {\r\n return value;\r\n }\r\n else if (value instanceof Float32Array ||\r\n value instanceof Float64Array ||\r\n value instanceof Int32Array ||\r\n value instanceof Uint32Array ||\r\n value instanceof Uint8Array ||\r\n value instanceof Uint16Array ||\r\n value instanceof Int16Array ||\r\n value instanceof Int8Array ||\r\n value instanceof Uint8ClampedArray) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [Object.values(value)],\r\n };\r\n }\r\n else if (value instanceof ArrayBuffer) {\r\n const name = value.constructor.name;\r\n const base64 = encode(value);\r\n return {\r\n rr_type: name,\r\n base64,\r\n };\r\n }\r\n else if (value instanceof DataView) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [\r\n serializeArg(value.buffer, win, ctx),\r\n value.byteOffset,\r\n value.byteLength,\r\n ],\r\n };\r\n }\r\n else if (value instanceof HTMLImageElement) {\r\n const name = value.constructor.name;\r\n const { src } = value;\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof HTMLCanvasElement) {\r\n const name = 'HTMLImageElement';\r\n const src = value.toDataURL();\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof ImageData) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\r\n };\r\n }\r\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\r\n const name = value.constructor.name;\r\n const index = saveWebGLVar(value, win, ctx);\r\n return {\r\n rr_type: name,\r\n index: index,\r\n };\r\n }\r\n return value;\r\n}\r\nconst serializeArgs = (args, win, ctx) => {\r\n return args.map((arg) => serializeArg(arg, win, ctx));\r\n};\r\nconst isInstanceOfWebGLObject = (value, win) => {\r\n const webGLConstructorNames = [\r\n 'WebGLActiveInfo',\r\n 'WebGLBuffer',\r\n 'WebGLFramebuffer',\r\n 'WebGLProgram',\r\n 'WebGLRenderbuffer',\r\n 'WebGLShader',\r\n 'WebGLShaderPrecisionFormat',\r\n 'WebGLTexture',\r\n 'WebGLUniformLocation',\r\n 'WebGLVertexArrayObject',\r\n 'WebGLVertexArrayObjectOES',\r\n ];\r\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\r\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\r\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { patch, isBlocked } from '../../../utils.js';\n\nfunction getNormalizedContextName(contextType) {\r\n return contextType === 'experimental-webgl' ? 'webgl' : contextType;\r\n}\r\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\r\n const handlers = [];\r\n try {\r\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\r\n return function (contextType, ...args) {\r\n if (!isBlocked(this, blockClass, blockSelector, true)) {\r\n const ctxName = getNormalizedContextName(contextType);\r\n if (!('__context' in this))\r\n this.__context = ctxName;\r\n if (setPreserveDrawingBufferToTrue &&\r\n ['webgl', 'webgl2'].includes(ctxName)) {\r\n if (args[0] && typeof args[0] === 'object') {\r\n const contextAttributes = args[0];\r\n if (!contextAttributes.preserveDrawingBuffer) {\r\n contextAttributes.preserveDrawingBuffer = true;\r\n }\r\n }\r\n else {\r\n args.splice(0, 1, {\r\n preserveDrawingBuffer: true,\r\n });\r\n }\r\n }\r\n }\r\n return original.apply(this, [contextType, ...args]);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasContextObserver as default };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, mirror, win) {\r\n const handlers = [];\r\n const props = Object.getOwnPropertyNames(prototype);\r\n for (const prop of props) {\r\n if ([\r\n 'isContextLost',\r\n 'canvas',\r\n 'drawingBufferWidth',\r\n 'drawingBufferHeight',\r\n ].includes(prop)) {\r\n continue;\r\n }\r\n try {\r\n if (typeof prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(prototype, prop, function (original) {\r\n return function (...args) {\r\n const result = original.apply(this, args);\r\n saveWebGLVar(result, win, this);\r\n if ('tagName' in this.canvas &&\r\n !isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n const recordArgs = serializeArgs(args, win, this);\r\n const mutation = {\r\n type,\r\n property: prop,\r\n args: recordArgs,\r\n };\r\n cb(this.canvas, mutation);\r\n }\r\n return result;\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type,\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return handlers;\r\n}\r\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, mirror) {\r\n const handlers = [];\r\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, mirror, win));\r\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\r\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, mirror, win));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasWebGLMutationObserver as default };\n","function decodeBase64(base64, enableUnicode) {\n var binaryString = atob(base64);\n if (enableUnicode) {\n var binaryView = new Uint8Array(binaryString.length);\n for (var i = 0, n = binaryString.length; i < n; ++i) {\n binaryView[i] = binaryString.charCodeAt(i);\n }\n return String.fromCharCode.apply(null, new Uint16Array(binaryView.buffer));\n }\n return binaryString;\n}\n\nfunction createURL(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n var blob = new Blob([body], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var url;\n return function WorkerFactory(options) {\n url = url || createURL(base64, sourcemapArg, enableUnicodeArg);\n return new Worker(url, options);\n };\n}\n\nexport { createBase64WorkerFactory };","import { createBase64WorkerFactory } from './_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js';\n\nvar WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgLyoKICAgICAqIGJhc2U2NC1hcnJheWJ1ZmZlciAxLjAuMSA8aHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlcj4KICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgdm9uIEhlcnR6ZW4gPGh0dHBzOi8vaGVydHplbi5jb20+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogICAgICovCiAgICB2YXIgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7CiAgICAvLyBVc2UgYSBsb29rdXAgdGFibGUgdG8gZmluZCB0aGUgaW5kZXguCiAgICB2YXIgbG9va3VwID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gW10gOiBuZXcgVWludDhBcnJheSgyNTYpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykgewogICAgICAgIGxvb2t1cFtjaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7CiAgICB9CiAgICB2YXIgZW5jb2RlID0gZnVuY3Rpb24gKGFycmF5YnVmZmVyKSB7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpLCBpLCBsZW4gPSBieXRlcy5sZW5ndGgsIGJhc2U2NCA9ICcnOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykgewogICAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaV0gPj4gMl07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTsKICAgICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpICsgMl0gJiA2M107CiAgICAgICAgfQogICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgJz0nOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJhc2U2NDsKICAgIH07CgogICAgY29uc3QgbGFzdEJsb2JNYXAgPSBuZXcgTWFwKCk7DQogICAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gbmV3IE1hcCgpOw0KICAgIGZ1bmN0aW9uIGdldFRyYW5zcGFyZW50QmxvYkZvcih3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucykgew0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICAgICAgY29uc3QgaWQgPSBgJHt3aWR0aH0tJHtoZWlnaHR9YDsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgaWYgKHRyYW5zcGFyZW50QmxvYk1hcC5oYXMoaWQpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNwYXJlbnRCbG9iTWFwLmdldChpZCk7DQogICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgICAgICAgICBvZmZzY3JlZW4uZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0geWllbGQgYmxvYi5hcnJheUJ1ZmZlcigpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7DQogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnRCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICcnOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9DQogICAgY29uc3Qgd29ya2VyID0gc2VsZjsNCiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgY29uc3QgeyBpZCwgYml0bWFwLCB3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucyB9ID0gZS5kYXRhOw0KICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zKTsNCiAgICAgICAgICAgICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoYml0bWFwLCAwLCAwKTsNCiAgICAgICAgICAgICAgICBiaXRtYXAuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBibG9iLnR5cGU7DQogICAgICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSB5aWVsZCBibG9iLmFycmF5QnVmZmVyKCk7DQogICAgICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gZW5jb2RlKGFycmF5QnVmZmVyKTsNCiAgICAgICAgICAgICAgICBpZiAoIWxhc3RCbG9iTWFwLmhhcyhpZCkgJiYgKHlpZWxkIHRyYW5zcGFyZW50QmFzZTY0KSA9PT0gYmFzZTY0KSB7DQogICAgICAgICAgICAgICAgICAgIGxhc3RCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7DQogICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgaWQsDQogICAgICAgICAgICAgICAgICAgIHR5cGUsDQogICAgICAgICAgICAgICAgICAgIGJhc2U2NCwNCiAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQogICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsKCn0pKCk7Cgo=', null, false);\n/* eslint-enable */\n\nexport { WorkerFactory as default };\n","import { createMirror, snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, nowTimestamp, on, getWindowWidth, getWindowHeight, getWindowScroll, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\nimport { IframeManager } from './iframe-manager.js';\nimport { ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManager } from './observers/canvas/canvas-manager.js';\nimport { StylesheetManager } from './stylesheet-manager.js';\nimport ProcessedNodeManager from './processed-node-manager.js';\nimport { callbackWrapper, unregisterErrorHandler, registerErrorHandler } from './error-handler.js';\n\nfunction wrapEvent(e) {\r\n return Object.assign(Object.assign({}, e), { timestamp: nowTimestamp() });\r\n}\r\nlet wrappedEmit;\r\nlet takeFullSnapshot;\r\nlet canvasManager;\r\nlet recording = false;\r\nconst mirror = createMirror();\r\nfunction record(options = {}) {\r\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, ignoreClass = 'rr-ignore', ignoreSelector = null, maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskInputFn, maskTextFn, hooks, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordDOM = true, recordCanvas = false, recordCrossOriginIframes = false, recordAfter = options.recordAfter === 'DOMContentLoaded'\r\n ? options.recordAfter\r\n : 'load', userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), errorHandler, } = options;\r\n registerErrorHandler(errorHandler);\r\n const inEmittingFrame = recordCrossOriginIframes\r\n ? window.parent === window\r\n : true;\r\n let passEmitsToParent = false;\r\n if (!inEmittingFrame) {\r\n try {\r\n if (window.parent.document) {\r\n passEmitsToParent = false;\r\n }\r\n }\r\n catch (e) {\r\n passEmitsToParent = true;\r\n }\r\n }\r\n if (inEmittingFrame && !emit) {\r\n throw new Error('emit function is required');\r\n }\r\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\r\n sampling.mousemove = mousemoveWait;\r\n }\r\n mirror.reset();\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : _maskInputOptions !== undefined\r\n ? _maskInputOptions\r\n : { password: true };\r\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\r\n ? {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaVerification: true,\r\n headMetaAuthorship: _slimDOMOptions === 'all',\r\n headMetaDescKeywords: _slimDOMOptions === 'all',\r\n }\r\n : _slimDOMOptions\r\n ? _slimDOMOptions\r\n : {};\r\n polyfill();\r\n let lastFullSnapshotEvent;\r\n let incrementalSnapshotCount = 0;\r\n const eventProcessor = (e) => {\r\n for (const plugin of plugins || []) {\r\n if (plugin.eventProcessor) {\r\n e = plugin.eventProcessor(e);\r\n }\r\n }\r\n if (packFn &&\r\n !passEmitsToParent) {\r\n e = packFn(e);\r\n }\r\n return e;\r\n };\r\n wrappedEmit = (e, isCheckout) => {\r\n var _a;\r\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\r\n e.type !== EventType.FullSnapshot &&\r\n !(e.type === EventType.IncrementalSnapshot &&\r\n e.data.source === IncrementalSource.Mutation)) {\r\n mutationBuffers.forEach((buf) => buf.unfreeze());\r\n }\r\n if (inEmittingFrame) {\r\n emit === null || emit === void 0 ? void 0 : emit(eventProcessor(e), isCheckout);\r\n }\r\n else if (passEmitsToParent) {\r\n const message = {\r\n type: 'rrweb',\r\n event: eventProcessor(e),\r\n origin: window.location.origin,\r\n isCheckout,\r\n };\r\n window.parent.postMessage(message, '*');\r\n }\r\n if (e.type === EventType.FullSnapshot) {\r\n lastFullSnapshotEvent = e;\r\n incrementalSnapshotCount = 0;\r\n }\r\n else if (e.type === EventType.IncrementalSnapshot) {\r\n if (e.data.source === IncrementalSource.Mutation &&\r\n e.data.isAttachIframe) {\r\n return;\r\n }\r\n incrementalSnapshotCount++;\r\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\r\n const exceedTime = checkoutEveryNms &&\r\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\r\n if (exceedCount || exceedTime) {\r\n takeFullSnapshot(true);\r\n }\r\n }\r\n };\r\n const wrappedMutationEmit = (m) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Mutation }, m),\r\n }));\r\n };\r\n const wrappedScrollEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Scroll }, p),\r\n }));\r\n const wrappedCanvasMutationEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.CanvasMutation }, p),\r\n }));\r\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.AdoptedStyleSheet }, a),\r\n }));\r\n const stylesheetManager = new StylesheetManager({\r\n mutationCb: wrappedMutationEmit,\r\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\r\n });\r\n const iframeManager = new IframeManager({\r\n mirror,\r\n mutationCb: wrappedMutationEmit,\r\n stylesheetManager: stylesheetManager,\r\n recordCrossOriginIframes,\r\n wrappedEmit,\r\n });\r\n for (const plugin of plugins || []) {\r\n if (plugin.getMirror)\r\n plugin.getMirror({\r\n nodeMirror: mirror,\r\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\r\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\r\n });\r\n }\r\n const processedNodeManager = new ProcessedNodeManager();\r\n canvasManager = new CanvasManager({\r\n recordCanvas,\r\n mutationCb: wrappedCanvasMutationEmit,\r\n win: window,\r\n blockClass,\r\n blockSelector,\r\n mirror,\r\n sampling: sampling.canvas,\r\n dataURLOptions,\r\n });\r\n const shadowDomManager = new ShadowDomManager({\r\n mutationCb: wrappedMutationEmit,\r\n scrollCb: wrappedScrollEmit,\r\n bypassOptions: {\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n dataURLOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n recordCanvas,\r\n inlineImages,\r\n sampling,\r\n slimDOMOptions,\r\n iframeManager,\r\n stylesheetManager,\r\n canvasManager,\r\n keepIframeSrcFn,\r\n processedNodeManager,\r\n },\r\n mirror,\r\n });\r\n takeFullSnapshot = (isCheckout = false) => {\r\n if (!recordDOM) {\r\n return;\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Meta,\r\n data: {\r\n href: window.location.href,\r\n width: getWindowWidth(),\r\n height: getWindowHeight(),\r\n },\r\n }), isCheckout);\r\n stylesheetManager.reset();\r\n shadowDomManager.init();\r\n mutationBuffers.forEach((buf) => buf.lock());\r\n const node = snapshot(document, {\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskAllInputs: maskInputOptions,\r\n maskTextFn,\r\n slimDOM: slimDOMOptions,\r\n dataURLOptions,\r\n recordCanvas,\r\n inlineImages,\r\n onSerialize: (n) => {\r\n if (isSerializedIframe(n, mirror)) {\r\n iframeManager.addIframe(n);\r\n }\r\n if (isSerializedStylesheet(n, mirror)) {\r\n stylesheetManager.trackLinkElement(n);\r\n }\r\n if (hasShadowRoot(n)) {\r\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n iframeManager.attachIframe(iframe, childSn);\r\n shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (linkEl, childSn) => {\r\n stylesheetManager.attachLinkElement(linkEl, childSn);\r\n },\r\n keepIframeSrcFn,\r\n });\r\n if (!node) {\r\n return console.warn('Failed to snapshot the document');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.FullSnapshot,\r\n data: {\r\n node,\r\n initialOffset: getWindowScroll(window),\r\n },\r\n }), isCheckout);\r\n mutationBuffers.forEach((buf) => buf.unlock());\r\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\r\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\r\n };\r\n try {\r\n const handlers = [];\r\n const observe = (doc) => {\r\n var _a;\r\n return callbackWrapper(initObservers)({\r\n mutationCb: wrappedMutationEmit,\r\n mousemoveCb: (positions, source) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source,\r\n positions,\r\n },\r\n })),\r\n mouseInteractionCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MouseInteraction }, d),\r\n })),\r\n scrollCb: wrappedScrollEmit,\r\n viewportResizeCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.ViewportResize }, d),\r\n })),\r\n inputCb: (v) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Input }, v),\r\n })),\r\n mediaInteractionCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MediaInteraction }, p),\r\n })),\r\n styleSheetRuleCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleSheetRule }, r),\r\n })),\r\n styleDeclarationCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleDeclaration }, r),\r\n })),\r\n canvasMutationCb: wrappedCanvasMutationEmit,\r\n fontCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Font }, p),\r\n })),\r\n selectionCb: (p) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Selection }, p),\r\n }));\r\n },\r\n customElementCb: (c) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.CustomElement }, c),\r\n }));\r\n },\r\n blockClass,\r\n ignoreClass,\r\n ignoreSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n maskInputOptions,\r\n inlineStylesheet,\r\n sampling,\r\n recordDOM,\r\n recordCanvas,\r\n inlineImages,\r\n userTriggeredOnInput,\r\n collectFonts,\r\n doc,\r\n maskInputFn,\r\n maskTextFn,\r\n keepIframeSrcFn,\r\n blockSelector,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n mirror,\r\n iframeManager,\r\n stylesheetManager,\r\n shadowDomManager,\r\n processedNodeManager,\r\n canvasManager,\r\n ignoreCSSAttributes,\r\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter((p) => p.observer)) === null || _a === void 0 ? void 0 : _a.map((p) => ({\r\n observer: p.observer,\r\n options: p.options,\r\n callback: (payload) => wrappedEmit(wrapEvent({\r\n type: EventType.Plugin,\r\n data: {\r\n plugin: p.name,\r\n payload,\r\n },\r\n })),\r\n }))) || [],\r\n }, hooks);\r\n };\r\n iframeManager.addLoadListener((iframeEl) => {\r\n try {\r\n handlers.push(observe(iframeEl.contentDocument));\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n });\r\n const init = () => {\r\n takeFullSnapshot();\r\n handlers.push(observe(document));\r\n recording = true;\r\n };\r\n if (document.readyState === 'interactive' ||\r\n document.readyState === 'complete') {\r\n init();\r\n }\r\n else {\r\n handlers.push(on('DOMContentLoaded', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.DomContentLoaded,\r\n data: {},\r\n }));\r\n if (recordAfter === 'DOMContentLoaded')\r\n init();\r\n }));\r\n handlers.push(on('load', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Load,\r\n data: {},\r\n }));\r\n if (recordAfter === 'load')\r\n init();\r\n }, window));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n processedNodeManager.destroy();\r\n recording = false;\r\n unregisterErrorHandler();\r\n };\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n}\r\nrecord.addCustomEvent = (tag, payload) => {\r\n if (!recording) {\r\n throw new Error('please add custom event after start recording');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Custom,\r\n data: {\r\n tag,\r\n payload,\r\n },\r\n }));\r\n};\r\nrecord.freezePage = () => {\r\n mutationBuffers.forEach((buf) => buf.freeze());\r\n};\r\nrecord.takeFullSnapshot = (isCheckout) => {\r\n if (!recording) {\r\n throw new Error('please take full snapshot after start recording');\r\n }\r\n takeFullSnapshot(isCheckout);\r\n};\r\nrecord.mirror = mirror;\n\nexport { record as default };\n","import { __rest, __awaiter } from './../../../../../../ext/tslib/tslib.es6.js';\nimport { isBlocked } from '../../../utils.js';\nimport { CanvasContext } from '../../../../../types/dist/types.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\nimport WorkerFactory from '../../../../../../_virtual/image-bitmap-data-url-worker.js';\n\nclass CanvasManager {\r\n reset() {\r\n this.pendingCanvasMutations.clear();\r\n this.resetObservers && this.resetObservers();\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n }\r\n lock() {\r\n this.locked = true;\r\n }\r\n unlock() {\r\n this.locked = false;\r\n }\r\n constructor(options) {\r\n this.pendingCanvasMutations = new Map();\r\n this.rafStamps = { latestId: 0, invokeId: null };\r\n this.frozen = false;\r\n this.locked = false;\r\n this.processMutation = (target, mutation) => {\r\n const newFrame = this.rafStamps.invokeId &&\r\n this.rafStamps.latestId !== this.rafStamps.invokeId;\r\n if (newFrame || !this.rafStamps.invokeId)\r\n this.rafStamps.invokeId = this.rafStamps.latestId;\r\n if (!this.pendingCanvasMutations.has(target)) {\r\n this.pendingCanvasMutations.set(target, []);\r\n }\r\n this.pendingCanvasMutations.get(target).push(mutation);\r\n };\r\n const { sampling = 'all', win, blockClass, blockSelector, recordCanvas, dataURLOptions, } = options;\r\n this.mutationCb = options.mutationCb;\r\n this.mirror = options.mirror;\r\n if (recordCanvas && sampling === 'all')\r\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\r\n if (recordCanvas && typeof sampling === 'number')\r\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\r\n dataURLOptions,\r\n });\r\n }\r\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, true);\r\n const snapshotInProgressMap = new Map();\r\n const worker = new WorkerFactory();\r\n worker.onmessage = (e) => {\r\n const { id } = e.data;\r\n snapshotInProgressMap.set(id, false);\r\n if (!('base64' in e.data))\r\n return;\r\n const { base64, type, width, height } = e.data;\r\n this.mutationCb({\r\n id,\r\n type: CanvasContext['2D'],\r\n commands: [\r\n {\r\n property: 'clearRect',\r\n args: [0, 0, width, height],\r\n },\r\n {\r\n property: 'drawImage',\r\n args: [\r\n {\r\n rr_type: 'ImageBitmap',\r\n args: [\r\n {\r\n rr_type: 'Blob',\r\n data: [{ rr_type: 'ArrayBuffer', base64 }],\r\n type,\r\n },\r\n ],\r\n },\r\n 0,\r\n 0,\r\n ],\r\n },\r\n ],\r\n });\r\n };\r\n const timeBetweenSnapshots = 1000 / fps;\r\n let lastSnapshotTime = 0;\r\n let rafId;\r\n const getCanvas = () => {\r\n const matchedCanvas = [];\r\n\r\n const searchCanvas = (root) => {\r\n root.querySelectorAll('canvas').forEach((canvas) => {\r\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\r\n matchedCanvas.push(canvas);\r\n }\r\n });\r\n root.querySelectorAll('*').forEach((elem) => {\r\n if (elem.shadowRoot) {\r\n searchCanvas(elem.shadowRoot);\r\n }\r\n });\r\n };\r\n \r\n searchCanvas(win.document);\r\n return matchedCanvas;\r\n };\r\n const takeCanvasSnapshots = (timestamp) => {\r\n if (lastSnapshotTime &&\r\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n return;\r\n }\r\n lastSnapshotTime = timestamp;\r\n getCanvas()\r\n .forEach((canvas) => __awaiter(this, void 0, void 0, function* () {\r\n var _a;\r\n const id = this.mirror.getId(canvas);\r\n if (snapshotInProgressMap.get(id))\r\n return;\r\n if (canvas.width === 0 || canvas.height === 0)\r\n return;\r\n snapshotInProgressMap.set(id, true);\r\n if (['webgl', 'webgl2'].includes(canvas.__context)) {\r\n const context = canvas.getContext(canvas.__context);\r\n if (((_a = context === null || context === void 0 ? void 0 : context.getContextAttributes()) === null || _a === void 0 ? void 0 : _a.preserveDrawingBuffer) === false) {\r\n context.clear(context.COLOR_BUFFER_BIT);\r\n }\r\n }\r\n\r\n // createImageBitmap throws if resizing to 0\r\n // Fallback to intrinsic size if canvas has not yet rendered\r\n const width = canvas.clientWidth || canvas.width;\r\n const height = canvas.clientHeight || canvas.height;\r\n\r\n const bitmap = yield createImageBitmap(canvas, {\r\n resizeWidth: width,\r\n resizeHeight: height\r\n })\r\n\r\n worker.postMessage({\r\n id,\r\n bitmap,\r\n width: width,\r\n height: height,\r\n dataURLOptions: options.dataURLOptions,\r\n }, [bitmap]);\r\n }));\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n };\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n initCanvasMutationObserver(win, blockClass, blockSelector) {\r\n this.startRAFTimestamping();\r\n this.startPendingCanvasMutationFlusher();\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, false);\r\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\r\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, this.mirror);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n canvas2DReset();\r\n canvasWebGL1and2Reset();\r\n };\r\n }\r\n startPendingCanvasMutationFlusher() {\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n startRAFTimestamping() {\r\n const setLatestRAFTimestamp = (timestamp) => {\r\n this.rafStamps.latestId = timestamp;\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n };\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n }\r\n flushPendingCanvasMutations() {\r\n this.pendingCanvasMutations.forEach((values, canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n this.flushPendingCanvasMutationFor(canvas, id);\r\n });\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n flushPendingCanvasMutationFor(canvas, id) {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\r\n if (!valuesWithType || id === -1)\r\n return;\r\n const values = valuesWithType.map((value) => {\r\n const rest = __rest(value, [\"type\"]);\r\n return rest;\r\n });\r\n const { type } = valuesWithType[0];\r\n this.mutationCb({ id, type, commands: values });\r\n this.pendingCanvasMutations.delete(canvas);\r\n }\r\n}\n\nexport { CanvasManager };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { serializeArgs } from './serialize-args.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\r\n const handlers = [];\r\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\r\n for (const prop of props2D) {\r\n try {\r\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\r\n return function (...args) {\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n setTimeout(() => {\r\n const recordArgs = serializeArgs(args, win, this);\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: recordArgs,\r\n });\r\n }, 0);\r\n }\r\n return original.apply(this, args);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvas2DMutationObserver as default };\n","import { stringifyRule } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { StyleSheetMirror } from '../utils.js';\n\nclass StylesheetManager {\r\n constructor(options) {\r\n this.trackedLinkElements = new WeakSet();\r\n this.styleMirror = new StyleSheetMirror();\r\n this.mutationCb = options.mutationCb;\r\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\r\n }\r\n attachLinkElement(linkEl, childSn) {\r\n if ('_cssText' in childSn.attributes)\r\n this.mutationCb({\r\n adds: [],\r\n removes: [],\r\n texts: [],\r\n attributes: [\r\n {\r\n id: childSn.id,\r\n attributes: childSn\r\n .attributes,\r\n },\r\n ],\r\n });\r\n this.trackLinkElement(linkEl);\r\n }\r\n trackLinkElement(linkEl) {\r\n if (this.trackedLinkElements.has(linkEl))\r\n return;\r\n this.trackedLinkElements.add(linkEl);\r\n this.trackStylesheetInLinkElement(linkEl);\r\n }\r\n adoptStyleSheets(sheets, hostId) {\r\n if (sheets.length === 0)\r\n return;\r\n const adoptedStyleSheetData = {\r\n id: hostId,\r\n styleIds: [],\r\n };\r\n const styles = [];\r\n for (const sheet of sheets) {\r\n let styleId;\r\n if (!this.styleMirror.has(sheet)) {\r\n styleId = this.styleMirror.add(sheet);\r\n styles.push({\r\n styleId,\r\n rules: Array.from(sheet.rules || CSSRule, (r, index) => ({\r\n rule: stringifyRule(r),\r\n index,\r\n })),\r\n });\r\n }\r\n else\r\n styleId = this.styleMirror.getId(sheet);\r\n adoptedStyleSheetData.styleIds.push(styleId);\r\n }\r\n if (styles.length > 0)\r\n adoptedStyleSheetData.styles = styles;\r\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\r\n }\r\n reset() {\r\n this.styleMirror.reset();\r\n this.trackedLinkElements = new WeakSet();\r\n }\r\n trackStylesheetInLinkElement(linkEl) {\r\n }\r\n}\n\nexport { StylesheetManager };\n","class ProcessedNodeManager {\r\n constructor() {\r\n this.nodeMap = new WeakMap();\r\n this.loop = true;\r\n this.periodicallyClear();\r\n }\r\n periodicallyClear() {\r\n requestAnimationFrame(() => {\r\n this.clear();\r\n if (this.loop)\r\n this.periodicallyClear();\r\n });\r\n }\r\n inOtherBuffer(node, thisBuffer) {\r\n const buffers = this.nodeMap.get(node);\r\n return (buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer));\r\n }\r\n add(node, buffer) {\r\n this.nodeMap.set(node, (this.nodeMap.get(node) || new Set()).add(buffer));\r\n }\r\n clear() {\r\n this.nodeMap = new WeakMap();\r\n }\r\n destroy() {\r\n this.loop = false;\r\n }\r\n}\n\nexport { ProcessedNodeManager as default };\n","class StackFrame {\r\n constructor(obj) {\r\n this.fileName = obj.fileName || '';\r\n this.functionName = obj.functionName || '';\r\n this.lineNumber = obj.lineNumber;\r\n this.columnNumber = obj.columnNumber;\r\n }\r\n toString() {\r\n const lineNumber = this.lineNumber || '';\r\n const columnNumber = this.columnNumber || '';\r\n if (this.functionName)\r\n return `${this.functionName} (${this.fileName}:${lineNumber}:${columnNumber})`;\r\n return `${this.fileName}:${lineNumber}:${columnNumber}`;\r\n }\r\n}\r\nconst FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\r\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\r\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\r\nconst ErrorStackParser = {\r\n parse: function (error) {\r\n if (!error) {\r\n return [];\r\n }\r\n if (typeof error.stacktrace !== 'undefined' ||\r\n typeof error['opera#sourceloc'] !== 'undefined') {\r\n return this.parseOpera(error);\r\n }\r\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\r\n return this.parseV8OrIE(error);\r\n }\r\n else if (error.stack) {\r\n return this.parseFFOrSafari(error);\r\n }\r\n else {\r\n console.warn('[console-record-plugin]: Failed to parse error object:', error);\r\n return [];\r\n }\r\n },\r\n extractLocation: function (urlLike) {\r\n if (urlLike.indexOf(':') === -1) {\r\n return [urlLike];\r\n }\r\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\r\n const parts = regExp.exec(urlLike.replace(/[()]/g, ''));\r\n if (!parts)\r\n throw new Error(`Cannot parse given url: ${urlLike}`);\r\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\r\n },\r\n parseV8OrIE: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return !!line.match(CHROME_IE_STACK_REGEXP);\r\n }, this);\r\n return filtered.map(function (line) {\r\n if (line.indexOf('(eval ') > -1) {\r\n line = line\r\n .replace(/eval code/g, 'eval')\r\n .replace(/(\\(eval at [^()]*)|(\\),.*$)/g, '');\r\n }\r\n let sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\r\n const location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\r\n sanitizedLine = location\r\n ? sanitizedLine.replace(location[0], '')\r\n : sanitizedLine;\r\n const tokens = sanitizedLine.split(/\\s+/).slice(1);\r\n const locationParts = this.extractLocation(location ? location[1] : tokens.pop());\r\n const functionName = tokens.join(' ') || undefined;\r\n const fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1\r\n ? undefined\r\n : locationParts[0];\r\n return new StackFrame({\r\n functionName,\r\n fileName,\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }, this);\r\n },\r\n parseFFOrSafari: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\r\n }, this);\r\n return filtered.map(function (line) {\r\n if (line.indexOf(' > eval') > -1) {\r\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\r\n }\r\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\r\n return new StackFrame({\r\n functionName: line,\r\n });\r\n }\r\n else {\r\n const functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\r\n const matches = line.match(functionNameRegex);\r\n const functionName = matches && matches[1] ? matches[1] : undefined;\r\n const locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\r\n return new StackFrame({\r\n functionName,\r\n fileName: locationParts[0],\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }\r\n }, this);\r\n },\r\n parseOpera: function (e) {\r\n if (!e.stacktrace ||\r\n (e.message.indexOf('\\n') > -1 &&\r\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\r\n return this.parseOpera9(e);\r\n }\r\n else if (!e.stack) {\r\n return this.parseOpera10(e);\r\n }\r\n else {\r\n return this.parseOpera11(e);\r\n }\r\n },\r\n parseOpera9: function (e) {\r\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\r\n const lines = e.message.split('\\n');\r\n const result = [];\r\n for (let i = 2, len = lines.length; i < len; i += 2) {\r\n const match = lineRE.exec(lines[i]);\r\n if (match) {\r\n result.push(new StackFrame({\r\n fileName: match[2],\r\n lineNumber: parseFloat(match[1]),\r\n }));\r\n }\r\n }\r\n return result;\r\n },\r\n parseOpera10: function (e) {\r\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\r\n const lines = e.stacktrace.split('\\n');\r\n const result = [];\r\n for (let i = 0, len = lines.length; i < len; i += 2) {\r\n const match = lineRE.exec(lines[i]);\r\n if (match) {\r\n result.push(new StackFrame({\r\n functionName: match[3] || undefined,\r\n fileName: match[2],\r\n lineNumber: parseFloat(match[1]),\r\n }));\r\n }\r\n }\r\n return result;\r\n },\r\n parseOpera11: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return (!!line.match(FIREFOX_SAFARI_STACK_REGEXP) &&\r\n !line.match(/^Error created at/));\r\n }, this);\r\n return filtered.map(function (line) {\r\n const tokens = line.split('@');\r\n const locationParts = this.extractLocation(tokens.pop());\r\n const functionCall = tokens.shift() || '';\r\n const functionName = functionCall\r\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\r\n .replace(/\\([^)]*\\)/g, '') || undefined;\r\n return new StackFrame({\r\n functionName,\r\n fileName: locationParts[0],\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }, this);\r\n },\r\n};\n\nexport { ErrorStackParser, StackFrame };\n","function pathToSelector(node) {\r\n if (!node || !node.outerHTML) {\r\n return '';\r\n }\r\n let path = '';\r\n while (node.parentElement) {\r\n let name = node.localName;\r\n if (!name) {\r\n break;\r\n }\r\n name = name.toLowerCase();\r\n const parent = node.parentElement;\r\n const domSiblings = [];\r\n if (parent.children && parent.children.length > 0) {\r\n for (let i = 0; i < parent.children.length; i++) {\r\n const sibling = parent.children[i];\r\n if (sibling.localName && sibling.localName.toLowerCase) {\r\n if (sibling.localName.toLowerCase() === name) {\r\n domSiblings.push(sibling);\r\n }\r\n }\r\n }\r\n }\r\n if (domSiblings.length > 1) {\r\n name += `:eq(${domSiblings.indexOf(node)})`;\r\n }\r\n path = name + (path ? '>' + path : '');\r\n node = parent;\r\n }\r\n return path;\r\n}\r\nfunction isObject(obj) {\r\n return Object.prototype.toString.call(obj) === '[object Object]';\r\n}\r\nfunction isObjTooDeep(obj, limit) {\r\n if (limit === 0) {\r\n return true;\r\n }\r\n const keys = Object.keys(obj);\r\n for (const key of keys) {\r\n if (isObject(obj[key]) &&\r\n isObjTooDeep(obj[key], limit - 1)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction stringify(obj, stringifyOptions) {\r\n const options = {\r\n numOfKeysLimit: 50,\r\n depthOfLimit: 4,\r\n };\r\n Object.assign(options, stringifyOptions);\r\n const stack = [];\r\n const keys = [];\r\n return JSON.stringify(obj, function (key, value) {\r\n if (stack.length > 0) {\r\n const thisPos = stack.indexOf(this);\r\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\r\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\r\n if (~stack.indexOf(value)) {\r\n if (stack[0] === value) {\r\n value = '[Circular ~]';\r\n }\r\n else {\r\n value =\r\n '[Circular ~.' +\r\n keys.slice(0, stack.indexOf(value)).join('.') +\r\n ']';\r\n }\r\n }\r\n }\r\n else {\r\n stack.push(value);\r\n }\r\n if (value === null)\r\n return value;\r\n if (value === undefined)\r\n return 'undefined';\r\n if (shouldIgnore(value)) {\r\n return toString(value);\r\n }\r\n if (typeof value === 'bigint') {\r\n return value.toString() + 'n';\r\n }\r\n if (value instanceof Event) {\r\n const eventResult = {};\r\n for (const eventKey in value) {\r\n const eventValue = value[eventKey];\r\n if (Array.isArray(eventValue)) {\r\n eventResult[eventKey] = pathToSelector((eventValue.length ? eventValue[0] : null));\r\n }\r\n else {\r\n eventResult[eventKey] = eventValue;\r\n }\r\n }\r\n return eventResult;\r\n }\r\n else if (value instanceof Node) {\r\n if (value instanceof HTMLElement) {\r\n return value ? value.outerHTML : '';\r\n }\r\n return value.nodeName;\r\n }\r\n else if (value instanceof Error) {\r\n return value.stack\r\n ? value.stack + '\\nEnd of stack for Error object'\r\n : value.name + ': ' + value.message;\r\n }\r\n return value;\r\n });\r\n function shouldIgnore(_obj) {\r\n if (isObject(_obj) && Object.keys(_obj).length > options.numOfKeysLimit) {\r\n return true;\r\n }\r\n if (typeof _obj === 'function') {\r\n return true;\r\n }\r\n if (isObject(_obj) &&\r\n isObjTooDeep(_obj, options.depthOfLimit)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n function toString(_obj) {\r\n let str = _obj.toString();\r\n if (options.stringLengthLimit && str.length > options.stringLengthLimit) {\r\n str = `${str.slice(0, options.stringLengthLimit)}...`;\r\n }\r\n return str;\r\n }\r\n}\n\nexport { stringify };\n","import { patch } from '../../../utils.js';\nimport { ErrorStackParser } from './error-stack-parser.js';\nimport { stringify } from './stringify.js';\n\nconst defaultLogOptions = {\r\n level: [\r\n 'assert',\r\n 'clear',\r\n 'count',\r\n 'countReset',\r\n 'debug',\r\n 'dir',\r\n 'dirxml',\r\n 'error',\r\n 'group',\r\n 'groupCollapsed',\r\n 'groupEnd',\r\n 'info',\r\n 'log',\r\n 'table',\r\n 'time',\r\n 'timeEnd',\r\n 'timeLog',\r\n 'trace',\r\n 'warn',\r\n ],\r\n lengthThreshold: 1000,\r\n logger: 'console',\r\n};\r\nfunction initLogObserver(cb, win, options) {\r\n const logOptions = (options ? Object.assign({}, defaultLogOptions, options) : defaultLogOptions);\r\n const loggerType = logOptions.logger;\r\n if (!loggerType) {\r\n return () => {\r\n };\r\n }\r\n let logger;\r\n if (typeof loggerType === 'string') {\r\n logger = win[loggerType];\r\n }\r\n else {\r\n logger = loggerType;\r\n }\r\n let logCount = 0;\r\n let inStack = false;\r\n const cancelHandlers = [];\r\n if (logOptions.level.includes('error')) {\r\n const errorHandler = (event) => {\r\n const message = event.message, error = event.error;\r\n const trace = ErrorStackParser.parse(error).map((stackFrame) => stackFrame.toString());\r\n const payload = [stringify(message, logOptions.stringifyOptions)];\r\n cb({\r\n level: 'error',\r\n trace,\r\n payload,\r\n });\r\n };\r\n win.addEventListener('error', errorHandler);\r\n cancelHandlers.push(() => {\r\n win.removeEventListener('error', errorHandler);\r\n });\r\n const unhandledrejectionHandler = (event) => {\r\n let error;\r\n let payload;\r\n if (event.reason instanceof Error) {\r\n error = event.reason;\r\n payload = [\r\n stringify(`Uncaught (in promise) ${error.name}: ${error.message}`, logOptions.stringifyOptions),\r\n ];\r\n }\r\n else {\r\n error = new Error();\r\n payload = [\r\n stringify('Uncaught (in promise)', logOptions.stringifyOptions),\r\n stringify(event.reason, logOptions.stringifyOptions),\r\n ];\r\n }\r\n const trace = ErrorStackParser.parse(error).map((stackFrame) => stackFrame.toString());\r\n cb({\r\n level: 'error',\r\n trace,\r\n payload,\r\n });\r\n };\r\n win.addEventListener('unhandledrejection', unhandledrejectionHandler);\r\n cancelHandlers.push(() => {\r\n win.removeEventListener('unhandledrejection', unhandledrejectionHandler);\r\n });\r\n }\r\n for (const levelType of logOptions.level) {\r\n cancelHandlers.push(replace(logger, levelType));\r\n }\r\n return () => {\r\n cancelHandlers.forEach((h) => h());\r\n };\r\n function replace(_logger, level) {\r\n if (!_logger[level]) {\r\n return () => {\r\n };\r\n }\r\n return patch(_logger, level, (original) => {\r\n return (...args) => {\r\n original.apply(this, args);\r\n if (inStack) {\r\n return;\r\n }\r\n inStack = true;\r\n try {\r\n const trace = ErrorStackParser.parse(new Error())\r\n .map((stackFrame) => stackFrame.toString())\r\n .splice(1);\r\n const payload = args.map((s) => stringify(s, logOptions.stringifyOptions));\r\n logCount++;\r\n if (logCount < logOptions.lengthThreshold) {\r\n cb({\r\n level,\r\n trace,\r\n payload,\r\n });\r\n }\r\n else if (logCount === logOptions.lengthThreshold) {\r\n cb({\r\n level: 'warn',\r\n trace: [],\r\n payload: [\r\n stringify('The number of log records reached the threshold.'),\r\n ],\r\n });\r\n }\r\n }\r\n catch (error) {\r\n original('rrweb logger error:', error, ...args);\r\n }\r\n finally {\r\n inStack = false;\r\n }\r\n };\r\n });\r\n }\r\n}\r\nconst PLUGIN_NAME = 'rrweb/console@1';\r\nconst getRecordConsolePlugin = (options) => ({\r\n name: PLUGIN_NAME,\r\n observer: initLogObserver,\r\n options: options,\r\n});\n\nexport { PLUGIN_NAME, getRecordConsolePlugin };\n","// eslint-disable-next-line posthog-js/no-direct-array-check\nconst nativeIsArray = Array.isArray\nconst ObjProto = Object.prototype\nexport const hasOwnProperty = ObjProto.hasOwnProperty\nconst toString = ObjProto.toString\n\nexport const isArray =\n nativeIsArray ||\n function (obj: any): obj is any[] {\n return toString.call(obj) === '[object Array]'\n }\nexport const isUint8Array = function (x: unknown): x is Uint8Array {\n return toString.call(x) === '[object Uint8Array]'\n}\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// let bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\nexport const isFunction = function (f: any): f is (...args: any[]) => any {\n // eslint-disable-next-line posthog-js/no-direct-function-check\n return typeof f === 'function'\n}\n// Underscore Addons\nexport const isObject = function (x: unknown): x is Record<string, any> {\n // eslint-disable-next-line posthog-js/no-direct-object-check\n return x === Object(x) && !isArray(x)\n}\nexport const isEmptyObject = function (x: unknown): x is Record<string, any> {\n if (isObject(x)) {\n for (const key in x) {\n if (hasOwnProperty.call(x, key)) {\n return false\n }\n }\n return true\n }\n return false\n}\nexport const isUndefined = function (x: unknown): x is undefined {\n return x === void 0\n}\n\nexport const isString = function (x: unknown): x is string {\n // eslint-disable-next-line posthog-js/no-direct-string-check\n return toString.call(x) == '[object String]'\n}\n\nexport const isEmptyString = function (x: unknown): boolean {\n return isString(x) && x.trim().length === 0\n}\n\nexport const isNull = function (x: unknown): x is null {\n // eslint-disable-next-line posthog-js/no-direct-null-check\n return x === null\n}\n\n/*\n sometimes you want to check if something is null or undefined\n that's what this is for\n */\nexport const isNullish = function (x: unknown): x is null | undefined {\n return isUndefined(x) || isNull(x)\n}\n\nexport const isDate = function (x: unknown): x is Date {\n // eslint-disable-next-line posthog-js/no-direct-date-check\n return toString.call(x) == '[object Date]'\n}\nexport const isNumber = function (x: unknown): x is number {\n // eslint-disable-next-line posthog-js/no-direct-number-check\n return toString.call(x) == '[object Number]'\n}\nexport const isBoolean = function (x: unknown): x is boolean {\n // eslint-disable-next-line posthog-js/no-direct-boolean-check\n return toString.call(x) === '[object Boolean]'\n}\n\nexport const isDocument = (x: unknown): x is Document => {\n // eslint-disable-next-line posthog-js/no-direct-document-check\n return x instanceof Document\n}\n\nexport const isFormData = (x: unknown): x is FormData => {\n // eslint-disable-next-line posthog-js/no-direct-form-data-check\n return x instanceof FormData\n}\n\nexport const isFile = (x: unknown): x is File => {\n // eslint-disable-next-line posthog-js/no-direct-file-check\n return x instanceof File\n}\n","/*\n * Global helpers to protect access to browser globals in a way that is safer for different targets\n * like DOM, SSR, Web workers etc.\n *\n * NOTE: Typically we want the \"window\" but globalThis works for both the typical browser context as\n * well as other contexts such as the web worker context. Window is still exported for any bits that explicitly require it.\n * If in doubt - export the global you need from this file and use that as an optional value. This way the code path is forced\n * to handle the case where the global is not available.\n */\n\n// eslint-disable-next-line no-restricted-globals\nconst win: (Window & typeof globalThis) | undefined = typeof window !== 'undefined' ? window : undefined\n\nconst global: typeof globalThis | undefined = typeof globalThis !== 'undefined' ? globalThis : win\n\nexport const ArrayProto = Array.prototype\nexport const nativeForEach = ArrayProto.forEach\nexport const nativeIndexOf = ArrayProto.indexOf\n\nexport const navigator = global?.navigator\nexport const document = global?.document\nexport const location = global?.location\nexport const fetch = global?.fetch\nexport const XMLHttpRequest =\n global?.XMLHttpRequest && 'withCredentials' in new global.XMLHttpRequest() ? global.XMLHttpRequest : undefined\nexport const AbortController = global?.AbortController\nexport const userAgent = navigator?.userAgent\nexport const assignableWindow: Window & typeof globalThis & Record<string, any> = win ?? ({} as any)\n\nexport { win as window }\n","import Config from '../config'\nimport { isUndefined } from './type-utils'\nimport { assignableWindow, window } from './globals'\n\nconst LOGGER_PREFIX = '[PostHog.js]'\nexport const logger = {\n _log: (level: 'log' | 'warn' | 'error', ...args: any[]) => {\n if (\n window &&\n (Config.DEBUG || assignableWindow.POSTHOG_DEBUG) &&\n !isUndefined(window.console) &&\n window.console\n ) {\n const consoleLog =\n '__rrweb_original__' in window.console[level]\n ? (window.console[level] as any)['__rrweb_original__']\n : window.console[level]\n\n // eslint-disable-next-line no-console\n consoleLog(LOGGER_PREFIX, ...args)\n }\n },\n\n info: (...args: any[]) => {\n logger._log('log', ...args)\n },\n\n warn: (...args: any[]) => {\n logger._log('warn', ...args)\n },\n\n error: (...args: any[]) => {\n logger._log('error', ...args)\n },\n\n critical: (...args: any[]) => {\n // Critical errors are always logged to the console\n // eslint-disable-next-line no-console\n console.error(LOGGER_PREFIX, ...args)\n },\n\n uninitializedWarning: (methodName: string) => {\n logger.error(`You must initialize PostHog before calling ${methodName}`)\n },\n}\n","import { Breaker, EventHandler, Properties } from '../types'\nimport { isArray, isFormData, isFunction, isNull, isNullish, isString, hasOwnProperty } from './type-utils'\nimport { logger } from './logger'\nimport { window, nativeForEach, nativeIndexOf } from './globals'\n\nconst breaker: Breaker = {}\n\n// UNDERSCORE\n// Embed part of the Underscore Library\nexport const trim = function (str: string): string {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '')\n}\n\nexport function eachArray<E = any>(\n obj: E[] | null | undefined,\n iterator: (value: E, key: number) => void | Breaker,\n thisArg?: any\n): void {\n if (isArray(obj)) {\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, thisArg)\n } else if ('length' in obj && obj.length === +obj.length) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(thisArg, obj[i], i) === breaker) {\n return\n }\n }\n }\n }\n}\n\n/**\n * @param {*=} obj\n * @param {function(...*)=} iterator\n * @param {Object=} thisArg\n */\nexport function each(obj: any, iterator: (value: any, key: any) => void | Breaker, thisArg?: any): void {\n if (isNullish(obj)) {\n return\n }\n if (isArray(obj)) {\n return eachArray(obj, iterator, thisArg)\n }\n if (isFormData(obj)) {\n for (const pair of obj.entries()) {\n if (iterator.call(thisArg, pair[1], pair[0]) === breaker) {\n return\n }\n }\n return\n }\n for (const key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n if (iterator.call(thisArg, obj[key], key) === breaker) {\n return\n }\n }\n }\n}\n\nexport const extend = function (obj: Record<string, any>, ...args: Record<string, any>[]): Record<string, any> {\n eachArray(args, function (source) {\n for (const prop in source) {\n if (source[prop] !== void 0) {\n obj[prop] = source[prop]\n }\n }\n })\n return obj\n}\n\nexport const include = function (\n obj: null | string | Array<any> | Record<string, any>,\n target: any\n): boolean | Breaker {\n let found = false\n if (isNull(obj)) {\n return found\n }\n if (nativeIndexOf && obj.indexOf === nativeIndexOf) {\n return obj.indexOf(target) != -1\n }\n each(obj, function (value) {\n if (found || (found = value === target)) {\n return breaker\n }\n return\n })\n return found\n}\n\nexport function includes<T = any>(str: T[] | string, needle: T): boolean {\n return (str as any).indexOf(needle) !== -1\n}\n\n/**\n * Object.entries() polyfill\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries\n */\nexport function entries<T = any>(obj: Record<string, T>): [string, T][] {\n const ownProps = Object.keys(obj)\n let i = ownProps.length\n const resArray = new Array(i) // preallocate the Array\n\n while (i--) {\n resArray[i] = [ownProps[i], obj[ownProps[i]]]\n }\n return resArray\n}\n\nexport const isValidRegex = function (str: string): boolean {\n try {\n new RegExp(str)\n } catch (error) {\n return false\n }\n return true\n}\n\nexport const timestamp = function (): number {\n Date.now =\n Date.now ||\n function () {\n return +new Date()\n }\n return Date.now()\n}\n\nexport const trySafe = function <T>(fn: () => T): T | undefined {\n try {\n return fn()\n } catch (e) {\n return undefined\n }\n}\n\nexport const safewrap = function <F extends (...args: any[]) => any = (...args: any[]) => any>(f: F): F {\n return function (...args) {\n try {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return f.apply(this, args)\n } catch (e) {\n logger.critical(\n 'Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A.'\n )\n logger.critical(e)\n }\n } as F\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const safewrapClass = function (klass: Function, functions: string[]): void {\n for (let i = 0; i < functions.length; i++) {\n klass.prototype[functions[i]] = safewrap(klass.prototype[functions[i]])\n }\n}\n\nexport const stripEmptyProperties = function (p: Properties): Properties {\n const ret: Properties = {}\n each(p, function (v, k) {\n if (isString(v) && v.length > 0) {\n ret[k] = v\n }\n })\n return ret\n}\n\nexport const stripLeadingDollar = function (s: string): string {\n return s.replace(/^\\$/, '')\n}\n\n/**\n * Deep copies an object.\n * It handles cycles by replacing all references to them with `undefined`\n * Also supports customizing native values\n *\n * @param value\n * @param customizer\n * @returns {{}|undefined|*}\n */\nfunction deepCircularCopy<T extends Record<string, any> = Record<string, any>>(\n value: T,\n customizer?: <K extends keyof T = keyof T>(value: T[K], key?: K) => T[K]\n): T | undefined {\n const COPY_IN_PROGRESS_SET = new Set()\n\n function internalDeepCircularCopy(value: T, key?: string): T | undefined {\n if (value !== Object(value)) return customizer ? customizer(value as any, key) : value // primitive value\n\n if (COPY_IN_PROGRESS_SET.has(value)) return undefined\n COPY_IN_PROGRESS_SET.add(value)\n let result: T\n\n if (isArray(value)) {\n result = [] as any as T\n eachArray(value, (it) => {\n result.push(internalDeepCircularCopy(it))\n })\n } else {\n result = {} as T\n each(value, (val, key) => {\n if (!COPY_IN_PROGRESS_SET.has(val)) {\n ;(result as any)[key] = internalDeepCircularCopy(val, key)\n }\n })\n }\n return result\n }\n return internalDeepCircularCopy(value)\n}\n\nexport function _copyAndTruncateStrings<T extends Record<string, any> = Record<string, any>>(\n object: T,\n maxStringLength: number | null\n): T {\n return deepCircularCopy(object, (value: any) => {\n if (isString(value) && !isNull(maxStringLength)) {\n return (value as string).slice(0, maxStringLength)\n }\n return value\n }) as T\n}\n\nexport function _base64Encode(data: null): null\nexport function _base64Encode(data: undefined): undefined\nexport function _base64Encode(data: string): string\nexport function _base64Encode(data: string | null | undefined): string | null | undefined {\n const b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n let o1,\n o2,\n o3,\n h1,\n h2,\n h3,\n h4,\n bits,\n i = 0,\n ac = 0,\n enc = ''\n const tmp_arr: string[] = []\n\n if (!data) {\n return data\n }\n\n data = utf8Encode(data)\n\n do {\n // pack three octets into four hexets\n o1 = data.charCodeAt(i++)\n o2 = data.charCodeAt(i++)\n o3 = data.charCodeAt(i++)\n\n bits = (o1 << 16) | (o2 << 8) | o3\n\n h1 = (bits >> 18) & 0x3f\n h2 = (bits >> 12) & 0x3f\n h3 = (bits >> 6) & 0x3f\n h4 = bits & 0x3f\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4)\n } while (i < data.length)\n\n enc = tmp_arr.join('')\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '=='\n break\n case 2:\n enc = enc.slice(0, -1) + '='\n break\n }\n\n return enc\n}\n\nexport const utf8Encode = function (string: string): string {\n string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n')\n\n let utftext = '',\n start,\n end\n let stringl = 0,\n n\n\n start = end = 0\n stringl = string.length\n\n for (n = 0; n < stringl; n++) {\n const c1 = string.charCodeAt(n)\n let enc = null\n\n if (c1 < 128) {\n end++\n } else if (c1 > 127 && c1 < 2048) {\n enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128)\n } else {\n enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128)\n }\n if (!isNull(enc)) {\n if (end > start) {\n utftext += string.substring(start, end)\n }\n utftext += enc\n start = end = n + 1\n }\n }\n\n if (end > start) {\n utftext += string.substring(start, string.length)\n }\n\n return utftext\n}\n\nexport const registerEvent = (function () {\n // written by Dean Edwards, 2005\n // with input from Tino Zijdel - crisp@xs4all.nl\n // with input from Carl Sverre - mail@carlsverre.com\n // with input from PostHog\n // http://dean.edwards.name/weblog/2005/10/add-event/\n // https://gist.github.com/1930440\n\n /**\n * @param {Object} element\n * @param {string} type\n * @param {function(...*)} handler\n * @param {boolean=} oldSchool\n * @param {boolean=} useCapture\n */\n const register_event = function (\n element: Element | Window | Document | Node,\n type: string,\n handler: EventHandler,\n oldSchool?: boolean,\n useCapture?: boolean\n ) {\n if (!element) {\n logger.error('No valid element provided to register_event')\n return\n }\n\n if (element.addEventListener && !oldSchool) {\n element.addEventListener(type, handler, !!useCapture)\n } else {\n const ontype = 'on' + type\n const old_handler = (element as any)[ontype] // can be undefined\n ;(element as any)[ontype] = makeHandler(element, handler, old_handler)\n }\n }\n\n function makeHandler(\n element: Element | Window | Document | Node,\n new_handler: EventHandler,\n old_handlers: EventHandler\n ) {\n return function (event: Event): boolean | void {\n event = event || fixEvent(window?.event)\n\n // this basically happens in firefox whenever another script\n // overwrites the onload callback and doesn't pass the event\n // object to previously defined callbacks. All the browsers\n // that don't define window.event implement addEventListener\n // so the dom_loaded handler will still be fired as usual.\n if (!event) {\n return undefined\n }\n\n let ret = true\n let old_result: any\n\n if (isFunction(old_handlers)) {\n old_result = old_handlers(event)\n }\n const new_result = new_handler.call(element, event)\n\n if (false === old_result || false === new_result) {\n ret = false\n }\n\n return ret\n }\n }\n\n function fixEvent(event: Event | undefined): Event | undefined {\n if (event) {\n event.preventDefault = fixEvent.preventDefault\n event.stopPropagation = fixEvent.stopPropagation\n }\n return event\n }\n fixEvent.preventDefault = function () {\n ;(this as any as Event).returnValue = false\n }\n fixEvent.stopPropagation = function () {\n ;(this as any as Event).cancelBubble = true\n }\n\n return register_event\n})()\n\nexport function isCrossDomainCookie(documentLocation: Location | undefined) {\n const hostname = documentLocation?.hostname\n\n if (!isString(hostname)) {\n return false\n }\n // split and slice isn't a great way to match arbitrary domains,\n // but it's good enough for ensuring we only match herokuapp.com when it is the TLD\n // for the hostname\n return hostname.split('.').slice(-2).join('.') !== 'herokuapp.com'\n}\n\nexport function isDistinctIdStringLike(value: string): boolean {\n return ['distinct_id', 'distinctid'].includes(value.toLowerCase())\n}\n\nexport function find<T>(value: T[], predicate: (value: T) => boolean): T | undefined {\n for (let i = 0; i < value.length; i++) {\n if (predicate(value[i])) {\n return value[i]\n }\n }\n return undefined\n}\n","import { each, isValidRegex } from './'\n\nimport { isArray, isFile, isUndefined } from './type-utils'\nimport { logger } from './logger'\nimport { document } from './globals'\n\nconst localDomains = ['localhost', '127.0.0.1']\n\n/**\n * IE11 doesn't support `new URL`\n * so we can create an anchor element and use that to parse the URL\n * there's a lot of overlap between HTMLHyperlinkElementUtils and URL\n * meaning useful properties like `pathname` are available on both\n */\nexport const convertToURL = (url: string): HTMLAnchorElement | null => {\n const location = document?.createElement('a')\n if (isUndefined(location)) {\n return null\n }\n\n location.href = url\n return location\n}\n\nexport const isUrlMatchingRegex = function (url: string, pattern: string): boolean {\n if (!isValidRegex(pattern)) return false\n return new RegExp(pattern).test(url)\n}\n\nexport const formDataToQuery = function (formdata: Record<string, any> | FormData, arg_separator = '&'): string {\n let use_val: string\n let use_key: string\n const tph_arr: string[] = []\n\n each(formdata, function (val: File | string | undefined, key: string | undefined) {\n // the key might be literally the string undefined for e.g. if {undefined: 'something'}\n if (isUndefined(val) || isUndefined(key) || key === 'undefined') {\n return\n }\n\n use_val = encodeURIComponent(isFile(val) ? val.name : val.toString())\n use_key = encodeURIComponent(key)\n tph_arr[tph_arr.length] = use_key + '=' + use_val\n })\n\n return tph_arr.join(arg_separator)\n}\n\nexport const getQueryParam = function (url: string, param: string): string {\n const withoutHash: string = url.split('#')[0] || ''\n const queryParams: string = withoutHash.split('?')[1] || ''\n\n const queryParts = queryParams.split('&')\n let keyValuePair\n\n for (let i = 0; i < queryParts.length; i++) {\n const parts = queryParts[i].split('=')\n if (parts[0] === param) {\n keyValuePair = parts\n break\n }\n }\n\n if (!isArray(keyValuePair) || keyValuePair.length < 2) {\n return ''\n } else {\n let result = keyValuePair[1]\n try {\n result = decodeURIComponent(result)\n } catch (err) {\n logger.error('Skipping decoding for malformed query param: ' + result)\n }\n return result.replace(/\\+/g, ' ')\n }\n}\n\nexport const _getHashParam = function (hash: string, param: string): string | null {\n const matches = hash.match(new RegExp(param + '=([^&]*)'))\n return matches ? matches[1] : null\n}\n\nexport const isLocalhost = (): boolean => {\n return localDomains.includes(location.hostname)\n}\n","import { CapturedNetworkRequest, NetworkRecordOptions, PostHogConfig } from '../../types'\nimport { isFunction, isNullish, isString, isUndefined } from '../../utils/type-utils'\nimport { convertToURL } from '../../utils/request-utils'\nimport { logger } from '../../utils/logger'\nimport { shouldCaptureValue } from '../../autocapture-utils'\nimport { each } from '../../utils'\n\nconst LOGGER_PREFIX = '[SessionRecording]'\nconst REDACTED = 'redacted'\n\nexport const defaultNetworkOptions: Required<NetworkRecordOptions> = {\n initiatorTypes: [\n 'audio',\n 'beacon',\n 'body',\n 'css',\n 'early-hint',\n 'embed',\n 'fetch',\n 'frame',\n 'iframe',\n 'icon',\n 'image',\n 'img',\n 'input',\n 'link',\n 'navigation',\n 'object',\n 'ping',\n 'script',\n 'track',\n 'video',\n 'xmlhttprequest',\n ],\n maskRequestFn: (data: CapturedNetworkRequest) => data,\n recordHeaders: false,\n recordBody: false,\n recordInitialRequests: false,\n recordPerformance: false,\n performanceEntryTypeToObserve: [\n // 'event', // This is too noisy as it covers all browser events\n 'first-input',\n // 'mark', // Mark is used too liberally. We would need to filter for specific marks\n // 'measure', // Measure is used too liberally. We would need to filter for specific measures\n 'navigation',\n 'paint',\n 'resource',\n ],\n payloadSizeLimitBytes: 1000000,\n payloadHostDenyList: ['.lr-ingest.io', '.ingest.sentry.io'],\n}\n\nconst HEADER_DENY_LIST = [\n 'authorization',\n 'x-forwarded-for',\n 'authorization',\n 'cookie',\n 'set-cookie',\n 'x-api-key',\n 'x-real-ip',\n 'remote-addr',\n 'forwarded',\n 'proxy-authorization',\n 'x-csrf-token',\n 'x-csrftoken',\n 'x-xsrf-token',\n]\n\nconst PAYLOAD_CONTENT_DENY_LIST = [\n 'password',\n 'secret',\n 'passwd',\n 'api_key',\n 'apikey',\n 'auth',\n 'credentials',\n 'mysql_pwd',\n 'privatekey',\n 'private_key',\n 'token',\n]\n\n// we always remove headers on the deny list because we never want to capture this sensitive data\nconst removeAuthorizationHeader = (data: CapturedNetworkRequest): CapturedNetworkRequest => {\n const headers = data.requestHeaders\n if (!isNullish(headers)) {\n each(Object.keys(headers ?? {}), (header) => {\n if (HEADER_DENY_LIST.includes(header.toLowerCase())) {\n headers[header] = REDACTED\n }\n })\n }\n return data\n}\n\nconst POSTHOG_PATHS_TO_IGNORE = ['/s/', '/e/', '/i/']\n// want to ignore posthog paths when capturing requests, or we can get trapped in a loop\n// because calls to PostHog would be reported using a call to PostHog which would be reported....\nconst ignorePostHogPaths = (data: CapturedNetworkRequest): CapturedNetworkRequest | undefined => {\n const url = convertToURL(data.name)\n if (url && url.pathname && POSTHOG_PATHS_TO_IGNORE.some((path) => url.pathname.indexOf(path) === 0)) {\n return undefined\n }\n return data\n}\n\nfunction estimateBytes(payload: string): number {\n return new Blob([payload]).size\n}\n\nfunction enforcePayloadSizeLimit(\n payload: string | null | undefined,\n headers: Record<string, any> | undefined,\n limit: number,\n description: string\n): string | null | undefined {\n if (isNullish(payload)) {\n return payload\n }\n\n let requestContentLength: string | number = headers?.['content-length'] || estimateBytes(payload)\n if (isString(requestContentLength)) {\n requestContentLength = parseInt(requestContentLength)\n }\n\n if (requestContentLength > limit) {\n return LOGGER_PREFIX + ` ${description} body too large to record (${requestContentLength} bytes)`\n }\n\n return payload\n}\n\n// people can have arbitrarily large payloads on their site, but we don't want to ingest them\nconst limitPayloadSize = (\n options: NetworkRecordOptions\n): ((data: CapturedNetworkRequest | undefined) => CapturedNetworkRequest | undefined) => {\n // the smallest of 1MB or the specified limit if there is one\n const limit = Math.min(1000000, options.payloadSizeLimitBytes ?? 1000000)\n\n return (data) => {\n if (data?.requestBody) {\n data.requestBody = enforcePayloadSizeLimit(data.requestBody, data.requestHeaders, limit, 'Request')\n }\n\n if (data?.responseBody) {\n data.responseBody = enforcePayloadSizeLimit(data.responseBody, data.responseHeaders, limit, 'Response')\n }\n\n return data\n }\n}\n\nfunction scrubPayload(payload: string | null | undefined, label: 'Request' | 'Response'): string | null | undefined {\n if (isNullish(payload)) {\n return payload\n }\n let scrubbed = payload\n\n if (!shouldCaptureValue(scrubbed, false)) {\n scrubbed = LOGGER_PREFIX + ' ' + label + ' body ' + REDACTED\n }\n each(PAYLOAD_CONTENT_DENY_LIST, (text) => {\n if (scrubbed?.length && scrubbed?.indexOf(text) !== -1) {\n scrubbed = LOGGER_PREFIX + ' ' + label + ' body ' + REDACTED + ' as might contain: ' + text\n }\n })\n\n return scrubbed\n}\n\nfunction scrubPayloads(capturedRequest: CapturedNetworkRequest | undefined): CapturedNetworkRequest | undefined {\n if (isUndefined(capturedRequest)) {\n return undefined\n }\n\n capturedRequest.requestBody = scrubPayload(capturedRequest.requestBody, 'Request')\n capturedRequest.responseBody = scrubPayload(capturedRequest.responseBody, 'Response')\n\n return capturedRequest\n}\n\n/**\n * whether a maskRequestFn is provided or not,\n * we ensure that we remove the denied header from requests\n * we _never_ want to record that header by accident\n * if someone complains then we'll add an opt-in to let them override it\n */\nexport const buildNetworkRequestOptions = (\n instanceConfig: PostHogConfig,\n remoteNetworkOptions: Pick<\n NetworkRecordOptions,\n 'recordHeaders' | 'recordBody' | 'recordPerformance' | 'payloadHostDenyList'\n >\n): NetworkRecordOptions => {\n const config: NetworkRecordOptions = {\n payloadSizeLimitBytes: defaultNetworkOptions.payloadSizeLimitBytes,\n performanceEntryTypeToObserve: [...defaultNetworkOptions.performanceEntryTypeToObserve],\n payloadHostDenyList: [\n ...(remoteNetworkOptions.payloadHostDenyList || []),\n ...defaultNetworkOptions.payloadHostDenyList,\n ],\n }\n // client can always disable despite remote options\n const canRecordHeaders =\n instanceConfig.session_recording.recordHeaders === false ? false : remoteNetworkOptions.recordHeaders\n const canRecordBody =\n instanceConfig.session_recording.recordBody === false ? false : remoteNetworkOptions.recordBody\n const canRecordPerformance =\n instanceConfig.capture_performance === false ? false : remoteNetworkOptions.recordPerformance\n\n const payloadLimiter = limitPayloadSize(config)\n\n const enforcedCleaningFn: NetworkRecordOptions['maskRequestFn'] = (d: CapturedNetworkRequest) =>\n payloadLimiter(ignorePostHogPaths(removeAuthorizationHeader(d)))\n\n const hasDeprecatedMaskFunction = isFunction(instanceConfig.session_recording.maskNetworkRequestFn)\n\n if (hasDeprecatedMaskFunction && isFunction(instanceConfig.session_recording.maskCapturedNetworkRequestFn)) {\n logger.warn(\n 'Both `maskNetworkRequestFn` and `maskCapturedNetworkRequestFn` are defined. `maskNetworkRequestFn` will be ignored.'\n )\n }\n\n if (hasDeprecatedMaskFunction) {\n instanceConfig.session_recording.maskCapturedNetworkRequestFn = (data: CapturedNetworkRequest) => {\n const cleanedURL = instanceConfig.session_recording.maskNetworkRequestFn!({ url: data.name })\n return {\n ...data,\n name: cleanedURL?.url,\n } as CapturedNetworkRequest\n }\n }\n\n config.maskRequestFn = isFunction(instanceConfig.session_recording.maskCapturedNetworkRequestFn)\n ? (data) => {\n const cleanedRequest = enforcedCleaningFn(data)\n return cleanedRequest\n ? instanceConfig.session_recording.maskCapturedNetworkRequestFn?.(cleanedRequest) ?? undefined\n : undefined\n }\n : (data) => scrubPayloads(enforcedCleaningFn(data))\n\n return {\n ...defaultNetworkOptions,\n ...config,\n recordHeaders: canRecordHeaders,\n recordBody: canRecordBody,\n recordPerformance: canRecordPerformance,\n recordInitialRequests: canRecordPerformance,\n }\n}\n","// import { patch } from 'rrweb/typings/utils'\n// copied from https://github.com/rrweb-io/rrweb/blob/8aea5b00a4dfe5a6f59bd2ae72bb624f45e51e81/packages/rrweb/src/utils.ts#L129\n// which was copied from https://github.com/getsentry/sentry-javascript/blob/b2109071975af8bf0316d3b5b38f519bdaf5dc15/packages/utils/src/object.ts\nimport { isFunction } from '../../../utils/type-utils'\n\nexport function patch(\n source: { [key: string]: any },\n name: string,\n replacement: (...args: unknown[]) => unknown\n): () => void {\n try {\n if (!(name in source)) {\n return () => {\n //\n }\n }\n\n const original = source[name] as () => unknown\n const wrapped = replacement(original)\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (isFunction(wrapped)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n wrapped.prototype = wrapped.prototype || {}\n Object.defineProperties(wrapped, {\n __posthog_wrapped__: {\n enumerable: false,\n value: true,\n },\n })\n }\n\n source[name] = wrapped\n\n return () => {\n source[name] = original\n }\n } catch {\n return () => {\n //\n }\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n}\n","import { NetworkRecordOptions } from '../../../types'\n\nfunction hostnameFromURL(url: string | URL | RequestInfo): string | null {\n try {\n if (typeof url === 'string') {\n return new URL(url).hostname\n }\n if ('url' in url) {\n return new URL(url.url).hostname\n }\n return url.hostname\n } catch {\n return null\n }\n}\n\nexport function isHostOnDenyList(url: string | URL | Request, options: NetworkRecordOptions) {\n const hostname = hostnameFromURL(url)\n const defaultNotDenied = { hostname, isHostDenied: false }\n\n if (!options.payloadHostDenyList?.length || !hostname?.trim().length) {\n return defaultNotDenied\n }\n\n for (const deny of options.payloadHostDenyList) {\n if (hostname.endsWith(deny)) {\n return { hostname, isHostDenied: true }\n }\n }\n\n return defaultNotDenied\n}\n","import { version } from 'rrweb/package.json'\n\n// Same as loader-globals.ts except includes rrweb2 scripts.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport rrwebRecord from 'rrweb/es/rrweb/packages/rrweb/src/record'\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { getRecordConsolePlugin } from 'rrweb/es/rrweb/packages/rrweb/src/plugins/console/record'\n\n// rrweb/network@1 code starts\n// most of what is below here will be removed when rrweb release their code for this\n// see https://github.com/rrweb-io/rrweb/pull/1105\n/// <reference lib=\"dom\" />\n// NB adopted from https://github.com/rrweb-io/rrweb/pull/1105 which looks like it will be accepted into rrweb\n// however, in the PR, it throws when the performance observer data is not available\n// and assumes it is running in a browser with the Request API (i.e. not IE11)\n// copying here so that we can use it before rrweb adopt it\nimport type { IWindow, listenerHandler, RecordPlugin } from '@rrweb/types'\nimport { CapturedNetworkRequest, Headers, InitiatorType, NetworkRecordOptions } from '../types'\nimport { isArray, isBoolean, isDocument, isFormData, isNull, isNullish, isObject, isString } from '../utils/type-utils'\nimport { logger } from '../utils/logger'\nimport { window } from '../utils/globals'\nimport { defaultNetworkOptions } from '../extensions/replay/config'\nimport { formDataToQuery } from '../utils/request-utils'\nimport { patch } from '../extensions/replay/rrweb-plugins/patch'\nimport { isHostOnDenyList } from '../extensions/replay/external/denylist'\n\nexport type NetworkData = {\n requests: CapturedNetworkRequest[]\n isInitial?: boolean\n}\n\ntype networkCallback = (data: NetworkData) => void\n\nconst isNavigationTiming = (entry: PerformanceEntry): entry is PerformanceNavigationTiming =>\n entry.entryType === 'navigation'\nconst isResourceTiming = (entry: PerformanceEntry): entry is PerformanceResourceTiming => entry.entryType === 'resource'\n\ntype ObservedPerformanceEntry = (PerformanceNavigationTiming | PerformanceResourceTiming) & {\n responseStatus?: number\n}\n\nexport function findLast<T>(array: Array<T>, predicate: (value: T) => boolean): T | undefined {\n const length = array.length\n for (let i = length - 1; i >= 0; i -= 1) {\n if (predicate(array[i])) {\n return array[i]\n }\n }\n return undefined\n}\n\nfunction initPerformanceObserver(cb: networkCallback, win: IWindow, options: Required<NetworkRecordOptions>) {\n // if we are only observing timings then we could have a single observer for all types, with buffer true,\n // but we are going to filter by initiatorType _if we are wrapping fetch and xhr as the wrapped functions\n // will deal with those.\n // so we have a block which captures requests from before fetch/xhr is wrapped\n // these are marked `isInitial` so playback can display them differently if needed\n // they will never have method/status/headers/body because they are pre-wrapping that provides that\n if (options.recordInitialRequests) {\n const initialPerformanceEntries = win.performance\n .getEntries()\n .filter(\n (entry): entry is ObservedPerformanceEntry =>\n isNavigationTiming(entry) ||\n (isResourceTiming(entry) && options.initiatorTypes.includes(entry.initiatorType as InitiatorType))\n )\n cb({\n requests: initialPerformanceEntries.flatMap((entry) =>\n prepareRequest(entry, undefined, undefined, {}, true)\n ),\n isInitial: true,\n })\n }\n const observer = new win.PerformanceObserver((entries) => {\n // if recordBody or recordHeaders is true then we don't want to record fetch or xhr here\n // as the wrapped functions will do that. Otherwise, this filter becomes a noop\n // because we do want to record them here\n const wrappedInitiatorFilter = (entry: ObservedPerformanceEntry) =>\n options.recordBody || options.recordHeaders\n ? entry.initiatorType !== 'xmlhttprequest' && entry.initiatorType !== 'fetch'\n : true\n\n const performanceEntries = entries.getEntries().filter(\n (entry): entry is ObservedPerformanceEntry =>\n isNavigationTiming(entry) ||\n (isResourceTiming(entry) &&\n options.initiatorTypes.includes(entry.initiatorType as InitiatorType) &&\n // TODO if we are _only_ capturing timing we don't want to filter initiator here\n wrappedInitiatorFilter(entry))\n )\n\n cb({\n requests: performanceEntries.flatMap((entry) => prepareRequest(entry, undefined, undefined, {})),\n })\n })\n // compat checked earlier\n // eslint-disable-next-line compat/compat\n const entryTypes = PerformanceObserver.supportedEntryTypes.filter((x) =>\n options.performanceEntryTypeToObserve.includes(x)\n )\n // initial records are gathered above, so we don't need to observe and buffer each type separately\n observer.observe({ entryTypes })\n return () => {\n observer.disconnect()\n }\n}\n\nfunction shouldRecordHeaders(type: 'request' | 'response', recordHeaders: NetworkRecordOptions['recordHeaders']) {\n return !!recordHeaders && (isBoolean(recordHeaders) || recordHeaders[type])\n}\n\nfunction shouldRecordBody({\n type,\n recordBody,\n headers,\n}: {\n type: 'request' | 'response'\n recordBody: NetworkRecordOptions['recordBody']\n headers: Headers\n url: string | URL | RequestInfo\n}) {\n function matchesContentType(contentTypes: string[]) {\n const contentTypeHeader = Object.keys(headers).find((key) => key.toLowerCase() === 'content-type')\n const contentType = contentTypeHeader && headers[contentTypeHeader]\n return contentTypes.some((ct) => contentType?.includes(ct))\n }\n\n if (!recordBody) return false\n if (isBoolean(recordBody)) return true\n if (isArray(recordBody)) return matchesContentType(recordBody)\n const recordBodyType = recordBody[type]\n if (isBoolean(recordBodyType)) return recordBodyType\n return matchesContentType(recordBodyType)\n}\n\nasync function getRequestPerformanceEntry(\n win: IWindow,\n initiatorType: string,\n url: string,\n after?: number,\n before?: number,\n attempt = 0\n): Promise<PerformanceResourceTiming | null> {\n if (attempt > 10) {\n logger.warn('Failed to get performance entry for request', { url, initiatorType })\n return null\n }\n const urlPerformanceEntries = win.performance.getEntriesByName(url) as PerformanceResourceTiming[]\n const performanceEntry = findLast(\n urlPerformanceEntries,\n (entry) =>\n isResourceTiming(entry) &&\n entry.initiatorType === initiatorType &&\n (!after || entry.startTime >= after) &&\n (!before || entry.startTime <= before)\n )\n if (!performanceEntry) {\n await new Promise((resolve) => setTimeout(resolve, 50 * attempt))\n return getRequestPerformanceEntry(win, initiatorType, url, after, before, attempt + 1)\n }\n return performanceEntry\n}\n\n/**\n * According to MDN https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/response\n * xhr response is typed as any but can be an ArrayBuffer, a Blob, a Document, a JavaScript object,\n * or a string, depending on the value of XMLHttpRequest.responseType, that contains the response entity body.\n *\n * XHR request body is Document | XMLHttpRequestBodyInit | null | undefined\n */\nfunction _tryReadXHRBody({\n body,\n options,\n url,\n}: {\n body: Document | XMLHttpRequestBodyInit | any | null | undefined\n options: NetworkRecordOptions\n url: string | URL | RequestInfo\n}): string | null {\n if (isNullish(body)) {\n return null\n }\n\n const { hostname, isHostDenied } = isHostOnDenyList(url, options)\n if (isHostDenied) {\n return hostname + ' is in deny list'\n }\n\n if (isString(body)) {\n return body\n }\n\n if (isDocument(body)) {\n return body.textContent\n }\n\n if (isFormData(body)) {\n return formDataToQuery(body)\n }\n\n if (isObject(body)) {\n try {\n return JSON.stringify(body)\n } catch (e) {\n return '[SessionReplay] Failed to stringify response object'\n }\n }\n\n return '[SessionReplay] Cannot read body of type ' + toString.call(body)\n}\n\nfunction initXhrObserver(cb: networkCallback, win: IWindow, options: Required<NetworkRecordOptions>): listenerHandler {\n if (!options.initiatorTypes.includes('xmlhttprequest')) {\n return () => {\n //\n }\n }\n const recordRequestHeaders = shouldRecordHeaders('request', options.recordHeaders)\n const recordResponseHeaders = shouldRecordHeaders('response', options.recordHeaders)\n\n const restorePatch = patch(\n win.XMLHttpRequest.prototype,\n 'open',\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (originalOpen: typeof XMLHttpRequest.prototype.open) => {\n return function (\n method: string,\n url: string | URL,\n async = true,\n username?: string | null,\n password?: string | null\n ) {\n // because this function is returned in its actual context `this` _is_ an XMLHttpRequest\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const xhr = this as XMLHttpRequest\n\n // check IE earlier than this, we only initialize if Request is present\n // eslint-disable-next-line compat/compat\n const req = new Request(url)\n const networkRequest: Partial<CapturedNetworkRequest> = {}\n let after: number | undefined\n let before: number | undefined\n\n const requestHeaders: Headers = {}\n const originalSetRequestHeader = xhr.setRequestHeader.bind(xhr)\n xhr.setRequestHeader = (header: string, value: string) => {\n requestHeaders[header] = value\n return originalSetRequestHeader(header, value)\n }\n if (recordRequestHeaders) {\n networkRequest.requestHeaders = requestHeaders\n }\n\n const originalSend = xhr.send.bind(xhr)\n xhr.send = (body) => {\n if (\n shouldRecordBody({\n type: 'request',\n headers: requestHeaders,\n url,\n recordBody: options.recordBody,\n })\n ) {\n networkRequest.requestBody = _tryReadXHRBody({ body, options, url })\n }\n after = win.performance.now()\n return originalSend(body)\n }\n\n xhr.addEventListener('readystatechange', () => {\n if (xhr.readyState !== xhr.DONE) {\n return\n }\n before = win.performance.now()\n const responseHeaders: Headers = {}\n const rawHeaders = xhr.getAllResponseHeaders()\n const headers = rawHeaders.trim().split(/[\\r\\n]+/)\n headers.forEach((line) => {\n const parts = line.split(': ')\n const header = parts.shift()\n const value = parts.join(': ')\n if (header) {\n responseHeaders[header] = value\n }\n })\n if (recordResponseHeaders) {\n networkRequest.responseHeaders = responseHeaders\n }\n if (\n shouldRecordBody({\n type: 'response',\n headers: responseHeaders,\n url,\n recordBody: options.recordBody,\n })\n ) {\n networkRequest.responseBody = _tryReadXHRBody({ body: xhr.response, options, url })\n }\n getRequestPerformanceEntry(win, 'xmlhttprequest', req.url, after, before)\n .then((entry) => {\n if (isNull(entry)) {\n return\n }\n const requests = prepareRequest(entry, req.method, xhr?.status, networkRequest)\n cb({ requests })\n })\n .catch(() => {\n //\n })\n })\n originalOpen.call(xhr, method, url, async, username, password)\n }\n }\n )\n return () => {\n restorePatch()\n }\n}\n\n/**\n * Check if this PerformanceEntry is either a PerformanceResourceTiming or a PerformanceNavigationTiming\n * NB PerformanceNavigationTiming extends PerformanceResourceTiming\n * Here we don't care which interface it implements as both expose `serverTimings`\n */\nconst exposesServerTiming = (event: PerformanceEntry): event is PerformanceResourceTiming =>\n event.entryType === 'navigation' || event.entryType === 'resource'\n\nfunction prepareRequest(\n entry: PerformanceResourceTiming,\n method: string | undefined,\n status: number | undefined,\n networkRequest: Partial<CapturedNetworkRequest>,\n isInitial?: boolean\n): CapturedNetworkRequest[] {\n // kudos to sentry javascript sdk for excellent background on why to use Date.now() here\n // https://github.com/getsentry/sentry-javascript/blob/e856e40b6e71a73252e788cd42b5260f81c9c88e/packages/utils/src/time.ts#L70\n // can't start observer if performance.now() is not available\n // eslint-disable-next-line compat/compat\n const timeOrigin = Math.floor(Date.now() - performance.now())\n // clickhouse can't ingest timestamps that are floats\n // (in this case representing fractions of a millisecond we don't care about anyway)\n const timestamp = Math.floor(timeOrigin + entry.startTime)\n\n const requests: CapturedNetworkRequest[] = [\n {\n ...entry.toJSON(),\n startTime: Math.round(entry.startTime),\n endTime: Math.round(entry.responseEnd),\n timeOrigin,\n timestamp,\n method: method,\n initiatorType: entry.initiatorType as InitiatorType,\n status,\n requestHeaders: networkRequest.requestHeaders,\n requestBody: networkRequest.requestBody,\n responseHeaders: networkRequest.responseHeaders,\n responseBody: networkRequest.responseBody,\n isInitial,\n },\n ]\n\n if (exposesServerTiming(entry)) {\n for (const timing of entry.serverTiming || []) {\n requests.push({\n timeOrigin,\n timestamp,\n startTime: Math.round(entry.startTime),\n name: timing.name,\n duration: timing.duration,\n // the spec has a closed list of possible types\n // https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry/entryType\n // but, we need to know this was a server timing so that we know to\n // match it to the appropriate navigation or resource timing\n // that matching will have to be on timestamp and $current_url\n entryType: 'serverTiming',\n })\n }\n }\n\n return requests\n}\n\nconst contentTypePrefixDenyList = ['video/', 'audio/']\n\nfunction _checkForCannotReadResponseBody({\n r,\n options,\n url,\n}: {\n r: Response\n options: NetworkRecordOptions\n url: string | URL | RequestInfo\n}): string | null {\n if (r.headers.get('Transfer-Encoding') === 'chunked') {\n return 'Chunked Transfer-Encoding is not supported'\n }\n\n // `get` and `has` are case-insensitive\n // but return the header value with the casing that was supplied\n const contentType = r.headers.get('Content-Type')?.toLowerCase()\n const contentTypeIsDenied = contentTypePrefixDenyList.some((prefix) => contentType?.startsWith(prefix))\n if (contentType && contentTypeIsDenied) {\n return `Content-Type ${contentType} is not supported`\n }\n\n const { hostname, isHostDenied } = isHostOnDenyList(url, options)\n if (isHostDenied) {\n return hostname + ' is in deny list'\n }\n\n return null\n}\n\nfunction _tryReadBody(r: Request | Response): Promise<string> {\n // there are now already multiple places where we're using Promise...\n // eslint-disable-next-line compat/compat\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => resolve('[SessionReplay] Timeout while trying to read body'), 500)\n r.clone()\n .text()\n .then(\n (txt) => resolve(txt),\n (reason) => reject(reason)\n )\n .finally(() => clearTimeout(timeout))\n })\n}\n\nasync function _tryReadRequestBody({\n r,\n options,\n url,\n}: {\n r: Request\n options: NetworkRecordOptions\n url: string | URL | RequestInfo\n}): Promise<string> {\n const { hostname, isHostDenied } = isHostOnDenyList(url, options)\n if (isHostDenied) {\n return Promise.resolve(hostname + ' is in deny list')\n }\n\n return _tryReadBody(r)\n}\n\nasync function _tryReadResponseBody({\n r,\n options,\n url,\n}: {\n r: Response\n options: NetworkRecordOptions\n url: string | URL | RequestInfo\n}): Promise<string> {\n const cannotReadBodyReason: string | null = _checkForCannotReadResponseBody({ r, options, url })\n if (!isNull(cannotReadBodyReason)) {\n return Promise.resolve(cannotReadBodyReason)\n }\n\n return _tryReadBody(r)\n}\n\nfunction initFetchObserver(\n cb: networkCallback,\n win: IWindow,\n options: Required<NetworkRecordOptions>\n): listenerHandler {\n if (!options.initiatorTypes.includes('fetch')) {\n return () => {\n //\n }\n }\n const recordRequestHeaders = shouldRecordHeaders('request', options.recordHeaders)\n const recordResponseHeaders = shouldRecordHeaders('response', options.recordHeaders)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const restorePatch = patch(win, 'fetch', (originalFetch: typeof fetch) => {\n return async function (url: URL | RequestInfo, init?: RequestInit | undefined) {\n // check IE earlier than this, we only initialize if Request is present\n // eslint-disable-next-line compat/compat\n const req = new Request(url, init)\n let res: Response | undefined\n const networkRequest: Partial<CapturedNetworkRequest> = {}\n let after: number | undefined\n let before: number | undefined\n try {\n const requestHeaders: Headers = {}\n req.headers.forEach((value, header) => {\n requestHeaders[header] = value\n })\n if (recordRequestHeaders) {\n networkRequest.requestHeaders = requestHeaders\n }\n if (\n shouldRecordBody({\n type: 'request',\n headers: requestHeaders,\n url,\n recordBody: options.recordBody,\n })\n ) {\n networkRequest.requestBody = await _tryReadRequestBody({ r: req, options, url })\n }\n\n after = win.performance.now()\n res = await originalFetch(req)\n before = win.performance.now()\n\n const responseHeaders: Headers = {}\n res.headers.forEach((value, header) => {\n responseHeaders[header] = value\n })\n if (recordResponseHeaders) {\n networkRequest.responseHeaders = responseHeaders\n }\n if (\n shouldRecordBody({\n type: 'response',\n headers: responseHeaders,\n url,\n recordBody: options.recordBody,\n })\n ) {\n networkRequest.responseBody = await _tryReadResponseBody({ r: res, options, url })\n }\n\n return res\n } finally {\n getRequestPerformanceEntry(win, 'fetch', req.url, after, before)\n .then((entry) => {\n if (isNull(entry)) {\n return\n }\n const requests = prepareRequest(entry, req.method, res?.status, networkRequest)\n cb({ requests })\n })\n .catch(() => {\n //\n })\n }\n }\n })\n return () => {\n restorePatch()\n }\n}\n\nlet initialisedHandler: listenerHandler | null = null\n\nfunction initNetworkObserver(\n callback: networkCallback,\n win: IWindow, // top window or in an iframe\n options: NetworkRecordOptions\n): listenerHandler {\n if (!('performance' in win)) {\n return () => {\n //\n }\n }\n\n if (initialisedHandler) {\n logger.warn('Network observer already initialised, doing nothing')\n return () => {\n // the first caller should already have this handler and will be responsible for teardown\n }\n }\n\n const networkOptions = (\n options ? Object.assign({}, defaultNetworkOptions, options) : defaultNetworkOptions\n ) as Required<NetworkRecordOptions>\n\n const cb: networkCallback = (data) => {\n const requests: CapturedNetworkRequest[] = []\n data.requests.forEach((request) => {\n const maskedRequest = networkOptions.maskRequestFn(request)\n if (maskedRequest) {\n requests.push(maskedRequest)\n }\n })\n\n if (requests.length > 0) {\n callback({ ...data, requests })\n }\n }\n const performanceObserver = initPerformanceObserver(cb, win, networkOptions)\n\n // only wrap fetch and xhr if headers or body are being recorded\n let xhrObserver: listenerHandler = () => {}\n let fetchObserver: listenerHandler = () => {}\n if (networkOptions.recordHeaders || networkOptions.recordBody) {\n xhrObserver = initXhrObserver(cb, win, networkOptions)\n fetchObserver = initFetchObserver(cb, win, networkOptions)\n }\n\n initialisedHandler = () => {\n performanceObserver()\n xhrObserver()\n fetchObserver()\n }\n return initialisedHandler\n}\n\n// use the plugin name so that when this functionality is adopted into rrweb\n// we can remove this plugin and use the core functionality with the same data\nexport const NETWORK_PLUGIN_NAME = 'rrweb/network@1'\n\n// TODO how should this be typed?\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nexport const getRecordNetworkPlugin: (options?: NetworkRecordOptions) => RecordPlugin = (options) => {\n return {\n name: NETWORK_PLUGIN_NAME,\n observer: initNetworkObserver,\n options: options,\n }\n}\n\n// rrweb/networ@1 ends\n\nif (window) {\n ;(window as any).rrweb = { record: rrwebRecord, version: 'v2', rrwebVersion: version }\n ;(window as any).rrwebConsoleRecord = { getRecordConsolePlugin }\n ;(window as any).getRecordNetworkPlugin = getRecordNetworkPlugin\n}\n\nexport default rrwebRecord\n"],"names":["NodeType","isShadowRoot","n","host","Boolean","shadowRoot","isNativeShadowDom","Object","prototype","toString","call","stringifyStylesheet","s","rules","cssRules","cssText","Array","from","map","stringifyRule","join","includes","replace","error","rule","importStringified","cssStringified","regex","isCSSImportRule","styleSheet","split","length","statement","concat","JSON","stringify","href","layerName","push","supportsText","media","mediaText","escapeImportStatement","isCSSStyleRule","selectorText","Mirror","_classCallCheck","this","idNodeMap","Map","nodeMetaMap","WeakMap","_createClass","key","value","_a","id","getMeta","get","keys","_this","getId","delete","childNodes","forEach","childNode","removeNodeFromMap","has","node","meta","set","oldNode","getNode","maskInputValue","_ref","element","maskInputOptions","tagName","type","maskInputFn","text","actualType","toLowerCase","repeat","str","ORIGINAL_ATTRIBUTE_NAME","getInputType","hasAttribute","extractFileExtension","path","baseURL","url","URL","window","location","err","match","pathname","canvasService","canvasCtx","_id","tagNameRegex","RegExp","IGNORED_NODE","genId","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","absoluteToStylesheet","origin","quote1","path1","quote2","path2","path3","filePath","maybeQuote","test","indexOf","slice","stack","parts","pop","_step","_iterator","_createForOfIteratorHelper","done","part","e","f","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","absoluteToDoc","doc","attributeValue","trim","a","createElement","isSVGElement","el","ownerSVGElement","getHref","document","transformAttribute","name","pos","collectCharacters","regEx","chars","exec","substring","output","descriptorsStr","inParens","c","charAt","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","nodeType","ELEMENT_NODE","parentNode","eIndex","classList","className","needMaskingText","maskTextClass","maskTextSelector","parentElement","closest","contains","matches","serializeNode","options","mirror","blockClass","blockSelector","needsMask","inlineStylesheet","_options$maskInputOpt","maskTextFn","_options$dataURLOptio","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","_options$newlyAddedEl","newlyAddedElement","rootId","hasNode","docId","undefined","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","isCustomElement","_options$maskInputOpt2","_options$dataURLOptio2","_options$newlyAddedEl2","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName","attributes","len","i","attr","stylesheet","styleSheets","find","potentialStylesheetHref","rel","_cssText","sheet","innerText","textContent","checked","selected","__context","canvas","ctx","getContext","x","width","y","height","getImageData","originalGetImageData","Uint32Array","Math","min","data","buffer","some","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","image","oldValue","crossOrigin","recordInlineImage","removeEventListener","naturalWidth","naturalHeight","drawImage","console","warn","currentSrc","removeAttribute","complete","addEventListener","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","_n$getBoundingClientR","getBoundingClientRect","class","rr_width","rr_height","src","contentDocument","rr_src","customElements","Element","isSVG","isCustom","serializeElementNode","TEXT_NODE","parentTagName","isStyle","isScript","nextSibling","previousSibling","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","_options$skipChild","skipChild","_options$inlineStyles","_options$maskInputOpt3","slimDOMOptions","_options$dataURLOptio3","_options$inlineImages","_options$recordCanvas","onSerialize","onIframeLoad","_options$iframeLoadTi","iframeLoadTimeout","onStylesheetLoad","_options$stylesheetLo","stylesheetLoadTimeout","_options$keepIframeSr","_options$newlyAddedEl3","_options$preserveWhit","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","assign","add","recordChild","isShadowHost","headWhitespace","bypassOptions","_i","_Array$from","serializedChildNode","isElement","_i2","_Array$from2","isShadow","iframeEl","listener","win","contentWindow","readyState","fired","blankUrl","setTimeout","timer","clearTimeout","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","on","fn","target","arguments","capture","passive","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","reset","throttle","func","wait","timeout","previous","_len","args","_key","now","Date","leading","remaining","context","apply","trailing","hookSetter","d","isRevoked","original","getOwnPropertyDescriptor","defineProperty","patch","source","replacement","wrapped","defineProperties","__rrweb_original__","enumerable","Proxy","Reflect","prop","receiver","nowTimestamp","getWindowScroll","_b","_c","_d","_e","_f","left","scrollingElement","pageXOffset","documentElement","body","top","pageYOffset","getWindowHeight","innerHeight","clientHeight","getWindowWidth","innerWidth","clientWidth","closestElementOfNode","isBlocked","isIgnored","isAncestorRemoved","legacy_isTouchEvent","event","changedTouches","isSerializedIframe","nodeName","isSerializedStylesheet","getAttribute","hasShadowRoot","getTime","StyleSheetMirror","styleIDMap","idStyleMap","newId","getShadowHost","shadowHost","getRootNode","Node","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","ownerDocument","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","isNodeInLinkedList","errorHandler","DoubleLinkedList","head","tail","position","Error","current","index","next","__ln","moveKey","parentId","MutationBuffer","frozen","locked","texts","attributeMap","removes","mapRemoves","movedMap","addedSet","Set","movedSet","droppedSet","processMutations","mutations","processMutation","emit","adds","addedIds","addList","getNextId","ns","nextId","pushAdd","addNode","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","shift","isParentRemoved","_step2","_iterator2","isAncestorInSet","candidate","tailNode","_node","unhandledNode","removeNode","payload","genTextAreaValueMutation","filter","attribute","style","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","mutationCb","textarea","item","cn","m","attributeName","setAttribute","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","addedNodes","genAdds","removedNodes","nodeId","isSerialized","deepDelete","processedNodeManager","inOtherBuffer","targetId","childN","_this2","canvasManager","freeze","unfreeze","lock","unlock","addsSet","_isParentRemoved","r","size","_isAncestorInSet","registerErrorHandler","handler","unregisterErrorHandler","callbackWrapper","cb","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","init","mutationObserverCtor","MutationObserver","__rrMutationObserver","angularZoneSymbol","Zone","__symbol__","observer","bind","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initMouseInteractionObserver","_ref3","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","Number","isNaN","endsWith","eventKey","eventName","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","startsWith","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","h","initScrollObserver","_ref4","scrollCb","evt","defaultView","scrollLeftTop","scroll","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","unshift","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","styleId","ownerNode","initAdoptedStyleSheetObserver","_ref14","hostId","patchTarget","ShadowRoot","originalPropertyDescriptor","configurable","sheets","result","adoptStyleSheets","initObservers","o","mutationObserver","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mutation","mousemove","viewportResize","input","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","mousemoveHandler","timeBaseline","threshold","callbackThreshold","mousemoveCallback","positions","wrappedCb","totalOffset","p","timeOffset","updatePosition","_ref2","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","_ref5","_ref6","lastH","lastW","initViewportResizeObserver","inputHandler","_ref7","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","querySelectorAll","v","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","_toConsumableArray","initInputObserver","mediaInteractionHandler","_ref17","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","_ref8","_ref9","CSSStyleSheet","insertRule","thisArg","argumentsList","_argumentsList","_slicedToArray","_getIdAndStyleId","replaceSync","deleteRule","_getIdAndStyleId2","_getIdAndStyleId3","_getIdAndStyleId4","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","entries","_ref10","_ref11","typeKey","_argumentsList5","_getIdAndStyleId5","_getIdAndStyleId6","_ref12","_ref13","initStyleSheetObserver","_ref15","_ref16","ignoreCSSAttributes","setProperty","CSSStyleDeclaration","_argumentsList7","priority","_getIdAndStyleId7","removeProperty","_getIdAndStyleId8","remove","initStyleDeclarationObserver","collectFonts","_ref18","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","param","collapsed","updateSelection","getSelection","isCollapsed","ranges","count","rangeCount","range","getRangeAt","startContainer","startOffset","endContainer","endOffset","start","end","initSelectionObserver","customElementObserver","_ref19","constructor","define","initCustomElementObserver","pluginHandlers","plugins","plugin","callback","b","disconnect","CrossOriginIframeMirror","generateIdFn","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","ids","getRemoteId","IframeManager","iframes","crossOriginIframeMap","crossOriginIframeMirror","crossOriginIframeRootIdMap","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","generateId","handleMessage","loadListener","isAttachIframe","adoptedStyleSheets","message","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","replaceIdOnNode","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","Input","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","obj","isArray","getIds","child","_this3","ShadowDomManager","shadowDoms","WeakSet","restoreHandlers","patchAttachShadow","iframeElement","manager","option","__awaiter","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","then","lookup","charCodeAt","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","_typeof","list","ctor","contextMap","variableListFor","serializeArg","arg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","values","ArrayBuffer","base64","arraybuffer","bytes","encode","DataView","byteOffset","byteLength","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","splice","patchGLPrototype","getOwnPropertyNames","_loop","recordArgs","hookHandler","setter","createURL","sourcemapArg","enableUnicodeArg","sourcemap","enableUnicode","binaryString","atob","binaryView","String","fromCharCode","decodeBase64","blob","Blob","createObjectURL","takeFullSnapshot","WorkerFactory","Worker","CanvasManager","pendingCanvasMutations","rafStamps","latestId","invokeId","_options$sampling","initCanvasMutationObserver","initCanvasFPSObserver","clear","resetObservers","fps","canvasContextReset","snapshotInProgressMap","worker","onmessage","_e$data","commands","rafId","timeBetweenSnapshots","lastSnapshotTime","requestAnimationFrame","takeCanvasSnapshots","matchedCanvas","searchCanvas","root","elem","_regeneratorRuntime","mark","_callee","bitmap","wrap","_context","prev","abrupt","getContextAttributes","COLOR_BUFFER_BIT","createImageBitmap","resizeWidth","resizeHeight","sent","postMessage","stop","cancelAnimationFrame","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","_this4","setLatestRAFTimestamp","_this5","flushPendingCanvasMutationFor","valuesWithType","rest","t","hasOwnProperty","getOwnPropertySymbols","propertyIsEnumerable","__rest","StylesheetManager","trackedLinkElements","adoptedStyleSheetCb","linkEl","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","ProcessedNodeManager","nodeMap","periodicallyClear","thisBuffer","buffers","wrapEvent","recording","record","checkoutEveryNms","checkoutEveryNth","_options$blockClass","_options$blockSelecto","_options$ignoreClass","_options$ignoreSelect","_options$maskTextClas","_options$maskTextSele","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","_options$recordDOM","_options$recordCrossO","_options$recordAfter","recordAfter","_options$userTriggere","_options$collectFonts","_options$ignoreCSSAtt","inEmittingFrame","parent","passEmitsToParent","lastFullSnapshotEvent","color","date","email","month","number","search","tel","time","week","select","password","NodeList","DOMTokenList","_len2","_key2","TypeError","polyfill","incrementalSnapshotCount","eventProcessor","isFrozen","buf","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","_ref2$mirror","_ref2$blockClass","_ref2$blockSelector","_ref2$maskTextClass","_ref2$maskTextSelecto","_ref2$inlineStyleshee","_ref2$inlineImages","_ref2$recordCanvas","_ref2$maskAllInputs","_ref2$slimDOM","slimDOM","_ref2$keepIframeSrcFn","snapshot","initialOffset","CustomElement","addLoadListener","destroy","addCustomEvent","tag","freezePage","StackFrame","fileName","functionName","lineNumber","columnNumber","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","ErrorStackParser","parse","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","line","sanitizedLine","tokens","locationParts","functionNameRegex","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","parseFloat","pathToSelector","outerHTML","localName","domSiblings","children","sibling","isObject","isObjTooDeep","limit","_keys","stringifyOptions","numOfKeysLimit","depthOfLimit","thisPos","Infinity","_obj","shouldIgnore","stringLengthLimit","Event","eventResult","eventValue","HTMLElement","defaultLogOptions","level","lengthThreshold","logger","initLogObserver","logOptions","loggerType","logCount","inStack","cancelHandlers","trace","stackFrame","unhandledrejectionHandler","reason","levelType","_logger","nativeIsArray","ObjProto","isFunction","isUndefined","isString","isNull","isNullish","isBoolean","isDocument","isFormData","FormData","global","globalThis","nativeForEach","navigator","fetch","XMLHttpRequest","AbortController","userAgent","assignableWindow","LOGGER_PREFIX","_log","consoleLog","info","_len3","_key3","_len4","_key4","critical","_console","_len5","_key5","uninitializedWarning","methodName","breaker","each","iterator","l","eachArray","pair","formDataToQuery","formdata","use_val","use_key","arg_separator","tph_arr","val","encodeURIComponent","File","defaultNetworkOptions","initiatorTypes","maskRequestFn","recordHeaders","recordBody","recordInitialRequests","recordPerformance","performanceEntryTypeToObserve","payloadSizeLimitBytes","payloadHostDenyList","__posthog_wrapped__","_unused","isHostOnDenyList","_options$payloadHostD","hostname","hostnameFromURL","defaultNotDenied","isHostDenied","deny","isNavigationTiming","entry","entryType","isResourceTiming","findLast","array","predicate","initPerformanceObserver","initialPerformanceEntries","performance","getEntries","initiatorType","requests","flatMap","prepareRequest","isInitial","PerformanceObserver","performanceEntries","wrappedInitiatorFilter","entryTypes","supportedEntryTypes","shouldRecordHeaders","shouldRecordBody","headers","matchesContentType","contentTypes","contentTypeHeader","contentType","ct","recordBodyType","getRequestPerformanceEntry","_x","_x2","_x3","_x4","_x5","_getRequestPerformanceEntry","_asyncToGenerator","_callee2","after","before","attempt","urlPerformanceEntries","performanceEntry","_args2","_context2","getEntriesByName","startTime","_tryReadXHRBody","_isHostOnDenyList","exposesServerTiming","method","status","networkRequest","timeOrigin","floor","_objectSpread","toJSON","round","endTime","responseEnd","requestHeaders","requestBody","responseHeaders","responseBody","serverTiming","timing","duration","contentTypePrefixDenyList","_checkForCannotReadResponseBody","_r$headers$get","contentTypeIsDenied","prefix","_isHostOnDenyList2","_tryReadBody","clone","txt","finally","_tryReadRequestBody","_x6","_tryReadRequestBody2","_callee3","_isHostOnDenyList3","_context3","_tryReadResponseBody","_x7","_tryReadResponseBody2","_callee4","cannotReadBodyReason","_context4","initialisedHandler","initNetworkObserver","networkOptions","request","maskedRequest","performanceObserver","xhrObserver","fetchObserver","recordRequestHeaders","recordResponseHeaders","restorePatch","originalOpen","async","username","xhr","req","Request","originalSetRequestHeader","setRequestHeader","header","originalSend","send","DONE","getAllResponseHeaders","response","catch","initXhrObserver","originalFetch","res","_res","finish","_x8","_x9","initFetchObserver","NETWORK_PLUGIN_NAME","getRecordNetworkPlugin","rrweb","rrwebRecord","version","rrwebVersion","rrwebConsoleRecord","getRecordConsolePlugin"],"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]}
|
|
1
|
+
{"version":3,"file":"recorder.js","sources":["../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/utils.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/types/dist/types.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/mutation.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/error-handler.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observer.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/cross-origin-iframe-mirror.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/ext/tslib/tslib.es6.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/_virtual/image-bitmap-data-url-worker.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/index.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/record/processed-node-manager.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/error-stack-parser.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/stringify.js","../node_modules/.pnpm/rrweb@2.0.0-alpha.13_patch_hash=hd3nuwqin7sbif7quehqsiwvzm/node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/index.js","../src/utils/type-utils.ts","../src/utils/globals.ts","../src/utils/logger.ts","../src/utils/index.ts","../src/utils/request-utils.ts","../src/extensions/replay/config.ts","../src/extensions/replay/rrweb-plugins/patch.ts","../src/extensions/replay/external/denylist.ts","../src/entrypoints/recorder.ts"],"sourcesContent":["var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n const host = n === null || n === void 0 ? void 0 : n.host;\r\n return Boolean((host === null || host === void 0 ? void 0 : host.shadowRoot) === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction escapeImportStatement(rule) {\r\n const { cssText } = rule;\r\n if (cssText.split('\"').length < 3)\r\n return cssText;\r\n const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\r\n if (rule.layerName === '') {\r\n statement.push(`layer`);\r\n }\r\n else if (rule.layerName) {\r\n statement.push(`layer(${rule.layerName})`);\r\n }\r\n if (rule.supportsText) {\r\n statement.push(`supports(${rule.supportsText})`);\r\n }\r\n if (rule.media.length) {\r\n statement.push(rule.media.mediaText);\r\n }\r\n return statement.join(' ') + ';';\r\n}\r\nfunction stringifyStylesheet(s) {\r\n try {\r\n const rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules).map(stringifyRule).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction stringifyRule(rule) {\r\n let importStringified;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n importStringified =\r\n stringifyStylesheet(rule.styleSheet) ||\r\n escapeImportStatement(rule);\r\n }\r\n catch (error) {\r\n }\r\n }\r\n else if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\r\n return fixSafariColons(rule.cssText);\r\n }\r\n return importStringified || rule.cssText;\r\n}\r\nfunction fixSafariColons(cssStringified) {\r\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\r\n return cssStringified.replace(regex, '$1\\\\$2');\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nfunction isCSSStyleRule(rule) {\r\n return 'selectorText' in rule;\r\n}\r\nclass Mirror {\r\n constructor() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n getId(n) {\r\n var _a;\r\n if (!n)\r\n return -1;\r\n const id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;\r\n return id !== null && id !== void 0 ? id : -1;\r\n }\r\n getNode(id) {\r\n return this.idNodeMap.get(id) || null;\r\n }\r\n getIds() {\r\n return Array.from(this.idNodeMap.keys());\r\n }\r\n getMeta(n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n }\r\n removeNodeFromMap(n) {\r\n const id = this.getId(n);\r\n this.idNodeMap.delete(id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach((childNode) => this.removeNodeFromMap(childNode));\r\n }\r\n }\r\n has(id) {\r\n return this.idNodeMap.has(id);\r\n }\r\n hasNode(node) {\r\n return this.nodeMetaMap.has(node);\r\n }\r\n add(n, meta) {\r\n const id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n replace(id, n) {\r\n const oldNode = this.getNode(id);\r\n if (oldNode) {\r\n const meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n }\r\n reset() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n}\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction maskInputValue({ element, maskInputOptions, tagName, type, value, maskInputFn, }) {\r\n let text = value || '';\r\n const actualType = type && toLowerCase(type);\r\n if (maskInputOptions[tagName.toLowerCase()] ||\r\n (actualType && maskInputOptions[actualType])) {\r\n if (maskInputFn) {\r\n text = maskInputFn(text, element);\r\n }\r\n else {\r\n text = '*'.repeat(text.length);\r\n }\r\n }\r\n return text;\r\n}\r\nfunction toLowerCase(str) {\r\n return str.toLowerCase();\r\n}\r\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n const ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n const chunkSize = 50;\r\n for (let x = 0; x < canvas.width; x += chunkSize) {\r\n for (let y = 0; y < canvas.height; y += chunkSize) {\r\n const getImageData = ctx.getImageData;\r\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n const pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some((pixel) => pixel !== 0))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isNodeMetaEqual(a, b) {\r\n if (!a || !b || a.type !== b.type)\r\n return false;\r\n if (a.type === NodeType.Document)\r\n return a.compatMode === b.compatMode;\r\n else if (a.type === NodeType.DocumentType)\r\n return (a.name === b.name &&\r\n a.publicId === b.publicId &&\r\n a.systemId === b.systemId);\r\n else if (a.type === NodeType.Comment ||\r\n a.type === NodeType.Text ||\r\n a.type === NodeType.CDATA)\r\n return a.textContent === b.textContent;\r\n else if (a.type === NodeType.Element)\r\n return (a.tagName === b.tagName &&\r\n JSON.stringify(a.attributes) ===\r\n JSON.stringify(b.attributes) &&\r\n a.isSVG === b.isSVG &&\r\n a.needBlock === b.needBlock);\r\n return false;\r\n}\r\nfunction getInputType(element) {\r\n const type = element.type;\r\n return element.hasAttribute('data-rr-is-password')\r\n ? 'password'\r\n : type\r\n ?\r\n toLowerCase(type)\r\n : null;\r\n}\r\nfunction extractFileExtension(path, baseURL) {\r\n var _a;\r\n let url;\r\n try {\r\n url = new URL(path, baseURL !== null && baseURL !== void 0 ? baseURL : window.location.href);\r\n }\r\n catch (err) {\r\n return null;\r\n }\r\n const regex = /\\.([0-9a-z]+)(?:$)/i;\r\n const match = url.pathname.match(regex);\r\n return (_a = match === null || match === void 0 ? void 0 : match[1]) !== null && _a !== void 0 ? _a : null;\r\n}\n\nlet _id = 1;\r\nconst tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nconst IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n const processedTagName = toLowerCase(element.tagName);\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction extractOrigin(url) {\r\n let origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nlet canvasService;\r\nlet canvasCtx;\r\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\r\nconst URL_WWW_MATCH = /^www\\..*/i;\r\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, (origin, quote1, path1, quote2, path2, path3) => {\r\n const filePath = path1 || path2 || path3;\r\n const maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\r\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\r\n }\r\n if (filePath[0] === '/') {\r\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\r\n }\r\n const stack = href.split('/');\r\n const parts = filePath.split('/');\r\n stack.pop();\r\n for (const part of parts) {\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\r\n });\r\n}\r\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n let pos = 0;\r\n function collectCharacters(regEx) {\r\n let chars;\r\n const match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n const output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n let url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n let descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n let inParens = false;\r\n while (true) {\r\n const c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n const a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n const a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value) {\r\n if (!value) {\r\n return value;\r\n }\r\n if (name === 'src' ||\r\n (name === 'href' && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset') {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style') {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n return value;\r\n}\r\nfunction ignoreAttribute(tagName, name, _value) {\r\n return (tagName === 'video' || tagName === 'audio') && name === 'autoplay';\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector) {\r\n try {\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (let eIndex = element.classList.length; eIndex--;) {\r\n const className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return false;\r\n}\r\nfunction classMatchesRegex(node, regex, checkAncestors) {\r\n if (!node)\r\n return false;\r\n if (node.nodeType !== node.ELEMENT_NODE) {\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n }\r\n for (let eIndex = node.classList.length; eIndex--;) {\r\n const className = node.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector, checkAncestors) {\r\n try {\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (typeof maskTextClass === 'string') {\r\n if (checkAncestors) {\r\n if (el.closest(`.${maskTextClass}`))\r\n return true;\r\n }\r\n else {\r\n if (el.classList.contains(maskTextClass))\r\n return true;\r\n }\r\n }\r\n else {\r\n if (classMatchesRegex(el, maskTextClass, checkAncestors))\r\n return true;\r\n }\r\n if (maskTextSelector) {\r\n if (checkAncestors) {\r\n if (el.closest(maskTextSelector))\r\n return true;\r\n }\r\n else {\r\n if (el.matches(maskTextSelector))\r\n return true;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n }\r\n return false;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n const win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n let fired = false;\r\n let readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n const timer = setTimeout(() => {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', () => {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n const blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n let fired = false;\r\n let styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n const timer = setTimeout(() => {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', () => {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n const { doc, mirror, blockClass, blockSelector, needsMask, inlineStylesheet, maskInputOptions = {}, maskTextFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, } = options;\r\n const rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode,\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId,\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc,\r\n blockClass,\r\n blockSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskInputFn,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n keepIframeSrcFn,\r\n newlyAddedElement,\r\n rootId,\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n needsMask,\r\n maskTextFn,\r\n rootId,\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId,\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId,\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n const docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n var _a;\r\n const { needsMask, maskTextFn, rootId } = options;\r\n const parentTagName = n.parentNode && n.parentNode.tagName;\r\n let textContent = n.textContent;\r\n const isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n const isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\r\n textContent = stringifyStylesheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(`Cannot get CSS styles from text's parentNode. Error: ${err}`, n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n if (!isStyle && !isScript && textContent && needsMask) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent, n.parentElement)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle,\r\n rootId,\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n const { doc, blockClass, blockSelector, inlineStylesheet, maskInputOptions = {}, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, rootId, } = options;\r\n const needBlock = _isBlockedElement(n, blockClass, blockSelector);\r\n const tagName = getValidTagName(n);\r\n let attributes = {};\r\n const len = n.attributes.length;\r\n for (let i = 0; i < len; i++) {\r\n const attr = n.attributes[i];\r\n if (!ignoreAttribute(tagName, attr.name, attr.value)) {\r\n attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value);\r\n }\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n const href = n.href\r\n let stylesheet = Array.from(doc.styleSheets).find((s) => {\r\n return s.href === href;\r\n });\r\n if (!stylesheet && href.includes('.css')) {\r\n const rootDomain = window.location.origin\r\n const stylesheetPath = href.replace(window.location.href, '')\r\n const potentialStylesheetHref = rootDomain + '/' + stylesheetPath\r\n stylesheet = Array.from(doc.styleSheets).find((s) => {\r\n return s.href === potentialStylesheetHref;\r\n });\r\n }\r\n let cssText = null;\r\n if (stylesheet) {\r\n cssText = stringifyStylesheet(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n const cssText = stringifyStylesheet(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {\r\n const value = n.value;\r\n const checked = n.checked;\r\n if (attributes.type !== 'radio' &&\r\n attributes.type !== 'checkbox' &&\r\n attributes.type !== 'submit' &&\r\n attributes.type !== 'button' &&\r\n value) {\r\n attributes.value = maskInputValue({\r\n element: n,\r\n type: getInputType(n),\r\n tagName,\r\n value,\r\n maskInputOptions,\r\n maskInputFn,\r\n });\r\n }\r\n else if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n const canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n const blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n const blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n const image = n;\r\n const oldValue = image.crossOrigin;\r\n image.crossOrigin = 'anonymous';\r\n const recordInlineImage = () => {\r\n image.removeEventListener('load', recordInlineImage);\r\n try {\r\n canvasService.width = image.naturalWidth;\r\n canvasService.height = image.naturalHeight;\r\n canvasCtx.drawImage(image, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(`Cannot inline img src=${image.currentSrc}! Error: ${err}`);\r\n }\r\n oldValue\r\n ? (attributes.crossOrigin = oldValue)\r\n : image.removeAttribute('crossorigin');\r\n };\r\n if (image.complete && image.naturalWidth !== 0)\r\n recordInlineImage();\r\n else\r\n image.addEventListener('load', recordInlineImage);\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n const mediaAttributes = attributes;\r\n mediaAttributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n mediaAttributes.rr_mediaCurrentTime = n.currentTime;\r\n mediaAttributes.rr_mediaPlaybackRate = n.playbackRate;\r\n mediaAttributes.rr_mediaMuted = n.muted;\r\n mediaAttributes.rr_mediaLoop = n.loop;\r\n mediaAttributes.rr_mediaVolume = n.volume;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n const { width, height } = n.getBoundingClientRect();\r\n attributes = {\r\n class: attributes.class,\r\n rr_width: `${width}px`,\r\n rr_height: `${height}px`,\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n let isCustomElement;\r\n try {\r\n if (customElements.get(tagName))\r\n isCustomElement = true;\r\n }\r\n catch (e) {\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName,\r\n attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock,\r\n rootId,\r\n isCustom: isCustomElement,\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined || maybeAttr === null) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n (sn.attributes.rel === 'preload' ||\r\n sn.attributes.rel === 'modulepreload') &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n extractFileExtension(sn.attributes.href) === 'js'))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n const { doc, mirror, blockClass, blockSelector, maskTextClass, maskTextSelector, skipChild = false, inlineStylesheet = true, maskInputOptions = {}, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions = {}, inlineImages = false, recordCanvas = false, onSerialize, onIframeLoad, iframeLoadTimeout = 5000, onStylesheetLoad, stylesheetLoadTimeout = 5000, keepIframeSrcFn = () => false, newlyAddedElement = false, } = options;\r\n let { needsMask } = options;\r\n let { preserveWhiteSpace = true } = options;\r\n if (!needsMask &&\r\n n.childNodes) {\r\n const checkAncestors = needsMask === undefined;\r\n needsMask = needMaskingText(n, maskTextClass, maskTextSelector, checkAncestors);\r\n }\r\n const _serializedNode = serializeNode(n, {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n needsMask,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n keepIframeSrcFn,\r\n newlyAddedElement,\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n let id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n const serializedNode = Object.assign(_serializedNode, { id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n let recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n const shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n const bypassOptions = {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n needsMask,\r\n maskTextClass,\r\n maskTextSelector,\r\n skipChild,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n };\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'textarea' &&\r\n serializedNode.attributes.value !== undefined) ;\r\n else {\r\n for (const childN of Array.from(n.childNodes)) {\r\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (const childN of Array.from(n.shadowRoot.childNodes)) {\r\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, () => {\r\n const iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n needsMask,\r\n maskTextClass,\r\n maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n typeof serializedNode.attributes.rel === 'string' &&\r\n (serializedNode.attributes.rel === 'stylesheet' ||\r\n (serializedNode.attributes.rel === 'preload' &&\r\n typeof serializedNode.attributes.href === 'string' &&\r\n extractFileExtension(serializedNode.attributes.href) === 'css'))) {\r\n onceStylesheetLoaded(n, () => {\r\n if (onStylesheetLoad) {\r\n const serializedLinkNode = serializeNodeWithId(n, {\r\n doc,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n needsMask,\r\n maskTextClass,\r\n maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n const { mirror = new Mirror(), blockClass = 'rr-block', blockSelector = null, maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, inlineImages = false, recordCanvas = false, maskAllInputs = false, maskTextFn, maskInputFn, slimDOM = false, dataURLOptions, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, onStylesheetLoad, stylesheetLoadTimeout, keepIframeSrcFn = () => false, } = options || {};\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : maskAllInputs === false\r\n ? {\r\n password: true,\r\n }\r\n : maskAllInputs;\r\n const slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true,\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n inlineImages,\r\n recordCanvas,\r\n preserveWhiteSpace,\r\n onSerialize,\r\n onIframeLoad,\r\n iframeLoadTimeout,\r\n onStylesheetLoad,\r\n stylesheetLoadTimeout,\r\n keepIframeSrcFn,\r\n newlyAddedElement: false,\r\n });\r\n}\r\n\nconst commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options = {}) {\r\n let lineno = 1;\r\n let column = 1;\r\n function updatePosition(str) {\r\n const lines = str.match(/\\n/g);\r\n if (lines) {\r\n lineno += lines.length;\r\n }\r\n const i = str.lastIndexOf('\\n');\r\n column = i === -1 ? column + str.length : str.length - i;\r\n }\r\n function position() {\r\n const start = { line: lineno, column };\r\n return (node) => {\r\n node.position = new Position(start);\r\n whitespace();\r\n return node;\r\n };\r\n }\r\n class Position {\r\n constructor(start) {\r\n this.start = start;\r\n this.end = { line: lineno, column };\r\n this.source = options.source;\r\n }\r\n }\r\n Position.prototype.content = css;\r\n const errorsList = [];\r\n function error(msg) {\r\n const err = new Error(`${options.source || ''}:${lineno}:${column}: ${msg}`);\r\n err.reason = msg;\r\n err.filename = options.source;\r\n err.line = lineno;\r\n err.column = column;\r\n err.source = css;\r\n if (options.silent) {\r\n errorsList.push(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n function stylesheet() {\r\n const rulesList = rules();\r\n return {\r\n type: 'stylesheet',\r\n stylesheet: {\r\n source: options.source,\r\n rules: rulesList,\r\n parsingErrors: errorsList,\r\n },\r\n };\r\n }\r\n function open() {\r\n return match(/^{\\s*/);\r\n }\r\n function close() {\r\n return match(/^}/);\r\n }\r\n function rules() {\r\n let node;\r\n const rules = [];\r\n whitespace();\r\n comments(rules);\r\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n if (node) {\r\n rules.push(node);\r\n comments(rules);\r\n }\r\n }\r\n return rules;\r\n }\r\n function match(re) {\r\n const m = re.exec(css);\r\n if (!m) {\r\n return;\r\n }\r\n const str = m[0];\r\n updatePosition(str);\r\n css = css.slice(str.length);\r\n return m;\r\n }\r\n function whitespace() {\r\n match(/^\\s*/);\r\n }\r\n function comments(rules = []) {\r\n let c;\r\n while ((c = comment())) {\r\n if (c) {\r\n rules.push(c);\r\n }\r\n c = comment();\r\n }\r\n return rules;\r\n }\r\n function comment() {\r\n const pos = position();\r\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n return;\r\n }\r\n let i = 2;\r\n while ('' !== css.charAt(i) &&\r\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n ++i;\r\n }\r\n i += 2;\r\n if ('' === css.charAt(i - 1)) {\r\n return error('End of comment missing');\r\n }\r\n const str = css.slice(2, i - 2);\r\n column += 2;\r\n updatePosition(str);\r\n css = css.slice(i);\r\n column += 2;\r\n return pos({\r\n type: 'comment',\r\n comment: str,\r\n });\r\n }\r\n function selector() {\r\n whitespace();\r\n while (css[0] == '}') {\r\n error('extra closing bracket');\r\n css = css.slice(1);\r\n whitespace();\r\n }\r\n const m = match(/^((\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^{])+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const cleanedInput = m[0]\r\n .trim()\r\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, (m) => {\r\n return m.replace(/,/g, '\\u200C');\r\n });\r\n return customSplit(cleanedInput).map((s) => s.replace(/\\u200C/g, ',').trim());\r\n }\r\n function customSplit(input) {\r\n const result = [];\r\n let currentSegment = '';\r\n let depthParentheses = 0;\r\n let depthBrackets = 0;\r\n for (const char of input) {\r\n if (char === '(') {\r\n depthParentheses++;\r\n }\r\n else if (char === ')') {\r\n depthParentheses--;\r\n }\r\n else if (char === '[') {\r\n depthBrackets++;\r\n }\r\n else if (char === ']') {\r\n depthBrackets--;\r\n }\r\n if (char === ',' && depthParentheses === 0 && depthBrackets === 0) {\r\n result.push(currentSegment);\r\n currentSegment = '';\r\n }\r\n else {\r\n currentSegment += char;\r\n }\r\n }\r\n if (currentSegment) {\r\n result.push(currentSegment);\r\n }\r\n return result;\r\n }\r\n function declaration() {\r\n const pos = position();\r\n const propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n if (!propMatch) {\r\n return;\r\n }\r\n const prop = trim(propMatch[0]);\r\n if (!match(/^:\\s*/)) {\r\n return error(`property missing ':'`);\r\n }\r\n const val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n const ret = pos({\r\n type: 'declaration',\r\n property: prop.replace(commentre, ''),\r\n value: val ? trim(val[0]).replace(commentre, '') : '',\r\n });\r\n match(/^[;\\s]*/);\r\n return ret;\r\n }\r\n function declarations() {\r\n const decls = [];\r\n if (!open()) {\r\n return error(`missing '{'`);\r\n }\r\n comments(decls);\r\n let decl;\r\n while ((decl = declaration())) {\r\n if (decl !== false) {\r\n decls.push(decl);\r\n comments(decls);\r\n }\r\n decl = declaration();\r\n }\r\n if (!close()) {\r\n return error(`missing '}'`);\r\n }\r\n return decls;\r\n }\r\n function keyframe() {\r\n let m;\r\n const vals = [];\r\n const pos = position();\r\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n vals.push(m[1]);\r\n match(/^,\\s*/);\r\n }\r\n if (!vals.length) {\r\n return;\r\n }\r\n return pos({\r\n type: 'keyframe',\r\n values: vals,\r\n declarations: declarations(),\r\n });\r\n }\r\n function atkeyframes() {\r\n const pos = position();\r\n let m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n const vendor = m[1];\r\n m = match(/^([-\\w]+)\\s*/);\r\n if (!m) {\r\n return error('@keyframes missing name');\r\n }\r\n const name = m[1];\r\n if (!open()) {\r\n return error(`@keyframes missing '{'`);\r\n }\r\n let frame;\r\n let frames = comments();\r\n while ((frame = keyframe())) {\r\n frames.push(frame);\r\n frames = frames.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@keyframes missing '}'`);\r\n }\r\n return pos({\r\n type: 'keyframes',\r\n name,\r\n vendor,\r\n keyframes: frames,\r\n });\r\n }\r\n function atsupports() {\r\n const pos = position();\r\n const m = match(/^@supports *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const supports = trim(m[1]);\r\n if (!open()) {\r\n return error(`@supports missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@supports missing '}'`);\r\n }\r\n return pos({\r\n type: 'supports',\r\n supports,\r\n rules: style,\r\n });\r\n }\r\n function athost() {\r\n const pos = position();\r\n const m = match(/^@host\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(`@host missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@host missing '}'`);\r\n }\r\n return pos({\r\n type: 'host',\r\n rules: style,\r\n });\r\n }\r\n function atmedia() {\r\n const pos = position();\r\n const m = match(/^@media *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const media = trim(m[1]);\r\n if (!open()) {\r\n return error(`@media missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@media missing '}'`);\r\n }\r\n return pos({\r\n type: 'media',\r\n media,\r\n rules: style,\r\n });\r\n }\r\n function atcustommedia() {\r\n const pos = position();\r\n const m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n if (!m) {\r\n return;\r\n }\r\n return pos({\r\n type: 'custom-media',\r\n name: trim(m[1]),\r\n media: trim(m[2]),\r\n });\r\n }\r\n function atpage() {\r\n const pos = position();\r\n const m = match(/^@page */);\r\n if (!m) {\r\n return;\r\n }\r\n const sel = selector() || [];\r\n if (!open()) {\r\n return error(`@page missing '{'`);\r\n }\r\n let decls = comments();\r\n let decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@page missing '}'`);\r\n }\r\n return pos({\r\n type: 'page',\r\n selectors: sel,\r\n declarations: decls,\r\n });\r\n }\r\n function atdocument() {\r\n const pos = position();\r\n const m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n const vendor = trim(m[1]);\r\n const doc = trim(m[2]);\r\n if (!open()) {\r\n return error(`@document missing '{'`);\r\n }\r\n const style = comments().concat(rules());\r\n if (!close()) {\r\n return error(`@document missing '}'`);\r\n }\r\n return pos({\r\n type: 'document',\r\n document: doc,\r\n vendor,\r\n rules: style,\r\n });\r\n }\r\n function atfontface() {\r\n const pos = position();\r\n const m = match(/^@font-face\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(`@font-face missing '{'`);\r\n }\r\n let decls = comments();\r\n let decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(`@font-face missing '}'`);\r\n }\r\n return pos({\r\n type: 'font-face',\r\n declarations: decls,\r\n });\r\n }\r\n const atimport = _compileAtrule('import');\r\n const atcharset = _compileAtrule('charset');\r\n const atnamespace = _compileAtrule('namespace');\r\n function _compileAtrule(name) {\r\n const re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n return () => {\r\n const pos = position();\r\n const m = match(re);\r\n if (!m) {\r\n return;\r\n }\r\n const ret = { type: name };\r\n ret[name] = m[1].trim();\r\n return pos(ret);\r\n };\r\n }\r\n function atrule() {\r\n if (css[0] !== '@') {\r\n return;\r\n }\r\n return (atkeyframes() ||\r\n atmedia() ||\r\n atcustommedia() ||\r\n atsupports() ||\r\n atimport() ||\r\n atcharset() ||\r\n atnamespace() ||\r\n atdocument() ||\r\n atpage() ||\r\n athost() ||\r\n atfontface());\r\n }\r\n function rule() {\r\n const pos = position();\r\n const sel = selector();\r\n if (!sel) {\r\n return error('selector missing');\r\n }\r\n comments();\r\n return pos({\r\n type: 'rule',\r\n selectors: sel,\r\n declarations: declarations(),\r\n });\r\n }\r\n return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n const isNode = obj && typeof obj.type === 'string';\r\n const childParent = isNode ? obj : parent;\r\n for (const k of Object.keys(obj)) {\r\n const value = obj[k];\r\n if (Array.isArray(value)) {\r\n value.forEach((v) => {\r\n addParent(v, childParent);\r\n });\r\n }\r\n else if (value && typeof value === 'object') {\r\n addParent(value, childParent);\r\n }\r\n }\r\n if (isNode) {\r\n Object.defineProperty(obj, 'parent', {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: parent || null,\r\n });\r\n }\r\n return obj;\r\n}\n\nconst tagMap = {\r\n script: 'noscript',\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient',\r\n};\r\nfunction getTagName(n) {\r\n let tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n if (tagName === 'link' && n.attributes._cssText) {\r\n tagName = 'style';\r\n }\r\n return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nconst MEDIA_SELECTOR = /(max|min)-device-(width|height)/;\r\nconst MEDIA_SELECTOR_GLOBAL = new RegExp(MEDIA_SELECTOR.source, 'g');\r\nconst HOVER_SELECTOR = /([^\\\\]):hover/;\r\nconst HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction adaptCssForReplay(cssText, cache) {\r\n const cachedStyle = cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.get(cssText);\r\n if (cachedStyle)\r\n return cachedStyle;\r\n const ast = parse(cssText, {\r\n silent: true,\r\n });\r\n if (!ast.stylesheet) {\r\n return cssText;\r\n }\r\n const selectors = [];\r\n const medias = [];\r\n function getSelectors(rule) {\r\n if ('selectors' in rule && rule.selectors) {\r\n rule.selectors.forEach((selector) => {\r\n if (HOVER_SELECTOR.test(selector)) {\r\n selectors.push(selector);\r\n }\r\n });\r\n }\r\n if ('media' in rule && rule.media && MEDIA_SELECTOR.test(rule.media)) {\r\n medias.push(rule.media);\r\n }\r\n if ('rules' in rule && rule.rules) {\r\n rule.rules.forEach(getSelectors);\r\n }\r\n }\r\n getSelectors(ast.stylesheet);\r\n let result = cssText;\r\n if (selectors.length > 0) {\r\n const selectorMatcher = new RegExp(selectors\r\n .filter((selector, index) => selectors.indexOf(selector) === index)\r\n .sort((a, b) => b.length - a.length)\r\n .map((selector) => {\r\n return escapeRegExp(selector);\r\n })\r\n .join('|'), 'g');\r\n result = result.replace(selectorMatcher, (selector) => {\r\n const newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n return `${selector}, ${newSelector}`;\r\n });\r\n }\r\n if (medias.length > 0) {\r\n const mediaMatcher = new RegExp(medias\r\n .filter((media, index) => medias.indexOf(media) === index)\r\n .sort((a, b) => b.length - a.length)\r\n .map((media) => {\r\n return escapeRegExp(media);\r\n })\r\n .join('|'), 'g');\r\n result = result.replace(mediaMatcher, (media) => {\r\n return media.replace(MEDIA_SELECTOR_GLOBAL, '$1-$2');\r\n });\r\n }\r\n cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.set(cssText, result);\r\n return result;\r\n}\r\nfunction createCache() {\r\n const stylesWithHoverClass = new Map();\r\n return {\r\n stylesWithHoverClass,\r\n };\r\n}\r\nfunction buildNode(n, options) {\r\n var _a;\r\n const { doc, hackCss, cache } = options;\r\n switch (n.type) {\r\n case NodeType.Document:\r\n return doc.implementation.createDocument(null, '', null);\r\n case NodeType.DocumentType:\r\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n case NodeType.Element: {\r\n const tagName = getTagName(n);\r\n let node;\r\n if (n.isSVG) {\r\n node = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n }\r\n else {\r\n if (n.isCustom &&\r\n ((_a = doc.defaultView) === null || _a === void 0 ? void 0 : _a.customElements) &&\r\n !doc.defaultView.customElements.get(n.tagName))\r\n doc.defaultView.customElements.define(n.tagName, class extends doc.defaultView.HTMLElement {\r\n });\r\n node = doc.createElement(tagName);\r\n }\r\n const specialAttributes = {};\r\n for (const name in n.attributes) {\r\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name)) {\r\n continue;\r\n }\r\n let value = n.attributes[name];\r\n if (tagName === 'option' &&\r\n name === 'selected' &&\r\n value === false) {\r\n continue;\r\n }\r\n if (value === null) {\r\n continue;\r\n }\r\n if (value === true)\r\n value = '';\r\n if (name.startsWith('rr_')) {\r\n specialAttributes[name] = value;\r\n continue;\r\n }\r\n const isTextarea = tagName === 'textarea' && name === 'value';\r\n const isRemoteOrDynamicCss = tagName === 'style' && name === '_cssText';\r\n if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n value = adaptCssForReplay(value, cache);\r\n }\r\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n node.appendChild(doc.createTextNode(value));\r\n n.childNodes = [];\r\n continue;\r\n }\r\n try {\r\n if (n.isSVG && name === 'xlink:href') {\r\n node.setAttributeNS('http://www.w3.org/1999/xlink', name, value.toString());\r\n }\r\n else if (name === 'onload' ||\r\n name === 'onclick' ||\r\n name.substring(0, 7) === 'onmouse') {\r\n node.setAttribute('_' + name, value.toString());\r\n }\r\n else if (tagName === 'meta' &&\r\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n name === 'content') {\r\n node.setAttribute('csp-content', value.toString());\r\n continue;\r\n }\r\n else if (tagName === 'link' &&\r\n (n.attributes.rel === 'preload' ||\r\n n.attributes.rel === 'modulepreload') &&\r\n n.attributes.as === 'script') {\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'prefetch' &&\r\n typeof n.attributes.href === 'string' &&\r\n n.attributes.href.endsWith('.js')) {\r\n }\r\n else if (tagName === 'img' &&\r\n n.attributes.srcset &&\r\n n.attributes.rr_dataURL) {\r\n node.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n }\r\n else {\r\n node.setAttribute(name, value.toString());\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n for (const name in specialAttributes) {\r\n const value = specialAttributes[name];\r\n if (tagName === 'canvas' && name === 'rr_dataURL') {\r\n const image = document.createElement('img');\r\n image.onload = () => {\r\n const ctx = node.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image, 0, 0, image.width, image.height);\r\n }\r\n };\r\n image.src = value.toString();\r\n if (node.RRNodeType)\r\n node.rr_dataURL = value.toString();\r\n }\r\n else if (tagName === 'img' && name === 'rr_dataURL') {\r\n const image = node;\r\n if (!image.currentSrc.startsWith('data:')) {\r\n image.setAttribute('rrweb-original-src', n.attributes.src);\r\n image.src = value.toString();\r\n }\r\n }\r\n if (name === 'rr_width') {\r\n node.style.width = value.toString();\r\n }\r\n else if (name === 'rr_height') {\r\n node.style.height = value.toString();\r\n }\r\n else if (name === 'rr_mediaCurrentTime' &&\r\n typeof value === 'number') {\r\n node.currentTime = value;\r\n }\r\n else if (name === 'rr_mediaState') {\r\n switch (value) {\r\n case 'played':\r\n node\r\n .play()\r\n .catch((e) => console.warn('media playback error', e));\r\n break;\r\n case 'paused':\r\n node.pause();\r\n break;\r\n }\r\n }\r\n else if (name === 'rr_mediaPlaybackRate' &&\r\n typeof value === 'number') {\r\n node.playbackRate = value;\r\n }\r\n else if (name === 'rr_mediaMuted' && typeof value === 'boolean') {\r\n node.muted = value;\r\n }\r\n else if (name === 'rr_mediaLoop' && typeof value === 'boolean') {\r\n node.loop = value;\r\n }\r\n else if (name === 'rr_mediaVolume' && typeof value === 'number') {\r\n node.volume = value;\r\n }\r\n }\r\n if (n.isShadowHost) {\r\n if (!node.shadowRoot) {\r\n node.attachShadow({ mode: 'open' });\r\n }\r\n else {\r\n while (node.shadowRoot.firstChild) {\r\n node.shadowRoot.removeChild(node.shadowRoot.firstChild);\r\n }\r\n }\r\n }\r\n return node;\r\n }\r\n case NodeType.Text:\r\n return doc.createTextNode(n.isStyle && hackCss\r\n ? adaptCssForReplay(n.textContent, cache)\r\n : n.textContent);\r\n case NodeType.CDATA:\r\n return doc.createCDATASection(n.textContent);\r\n case NodeType.Comment:\r\n return doc.createComment(n.textContent);\r\n default:\r\n return null;\r\n }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n const { doc, mirror, skipChild = false, hackCss = true, afterAppend, cache, } = options;\r\n if (mirror.has(n.id)) {\r\n const nodeInMirror = mirror.getNode(n.id);\r\n const meta = mirror.getMeta(nodeInMirror);\r\n if (isNodeMetaEqual(meta, n))\r\n return mirror.getNode(n.id);\r\n }\r\n let node = buildNode(n, { doc, hackCss, cache });\r\n if (!node) {\r\n return null;\r\n }\r\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n mirror.replace(n.rootId, doc);\r\n }\r\n if (n.type === NodeType.Document) {\r\n doc.close();\r\n doc.open();\r\n if (n.compatMode === 'BackCompat' &&\r\n n.childNodes &&\r\n n.childNodes[0].type !== NodeType.DocumentType) {\r\n if (n.childNodes[0].type === NodeType.Element &&\r\n 'xmlns' in n.childNodes[0].attributes &&\r\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\r\n }\r\n else {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\r\n }\r\n }\r\n node = doc;\r\n }\r\n mirror.add(node, n);\r\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n !skipChild) {\r\n for (const childN of n.childNodes) {\r\n const childNode = buildNodeWithSN(childN, {\r\n doc,\r\n mirror,\r\n skipChild: false,\r\n hackCss,\r\n afterAppend,\r\n cache,\r\n });\r\n if (!childNode) {\r\n console.warn('Failed to rebuild', childN);\r\n continue;\r\n }\r\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n node.shadowRoot.appendChild(childNode);\r\n }\r\n else if (n.type === NodeType.Document &&\r\n childN.type == NodeType.Element) {\r\n const htmlElement = childNode;\r\n let body = null;\r\n htmlElement.childNodes.forEach((child) => {\r\n if (child.nodeName === 'BODY')\r\n body = child;\r\n });\r\n if (body) {\r\n htmlElement.removeChild(body);\r\n node.appendChild(childNode);\r\n htmlElement.appendChild(body);\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n if (afterAppend) {\r\n afterAppend(childNode, childN.id);\r\n }\r\n }\r\n }\r\n return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n function walk(node) {\r\n onVisit(node);\r\n }\r\n for (const id of mirror.getIds()) {\r\n if (mirror.has(id)) {\r\n walk(mirror.getNode(id));\r\n }\r\n }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n const n = mirror.getMeta(node);\r\n if ((n === null || n === void 0 ? void 0 : n.type) !== NodeType.Element) {\r\n return;\r\n }\r\n const el = node;\r\n for (const name in n.attributes) {\r\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name) &&\r\n name.startsWith('rr_'))) {\r\n continue;\r\n }\r\n const value = n.attributes[name];\r\n if (name === 'rr_scrollLeft') {\r\n el.scrollLeft = value;\r\n }\r\n if (name === 'rr_scrollTop') {\r\n el.scrollTop = value;\r\n }\r\n }\r\n}\r\nfunction rebuild(n, options) {\r\n const { doc, onVisit, hackCss = true, afterAppend, cache, mirror = new Mirror(), } = options;\r\n const node = buildNodeWithSN(n, {\r\n doc,\r\n mirror,\r\n skipChild: false,\r\n hackCss,\r\n afterAppend,\r\n cache,\r\n });\r\n visit(mirror, (visitedNode) => {\r\n if (onVisit) {\r\n onVisit(visitedNode);\r\n }\r\n handleScroll(visitedNode, mirror);\r\n });\r\n return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, adaptCssForReplay, buildNodeWithSN, classMatchesRegex, createCache, createMirror, escapeImportStatement, extractFileExtension, fixSafariColons, genId, getInputType, ignoreAttribute, is2DCanvasBlank, isCSSImportRule, isCSSStyleRule, isElement, isNativeShadowDom, isNodeMetaEqual, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, snapshot, stringifyRule, stringifyStylesheet, toLowerCase, transformAttribute };\n","import { classMatchesRegex, IGNORED_NODE, isShadowRoot } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target = document) {\r\n const options = { capture: true, passive: true };\r\n target.addEventListener(type, fn, options);\r\n return () => target.removeEventListener(type, fn, options);\r\n}\r\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\r\n '\\r\\n' +\r\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\r\n '\\r\\n' +\r\n 'or you can use record.mirror to access the mirror instance during recording.';\r\nlet _mirror = {\r\n map: {},\r\n getId() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return -1;\r\n },\r\n getNode() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return null;\r\n },\r\n removeNodeFromMap() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n has() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return false;\r\n },\r\n reset() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n};\r\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\r\n _mirror = new Proxy(_mirror, {\r\n get(target, prop, receiver) {\r\n if (prop === 'map') {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n }\r\n return Reflect.get(target, prop, receiver);\r\n },\r\n });\r\n}\r\nfunction throttle(func, wait, options = {}) {\r\n let timeout = null;\r\n let previous = 0;\r\n return function (...args) {\r\n const now = Date.now();\r\n if (!previous && options.leading === false) {\r\n previous = now;\r\n }\r\n const remaining = wait - (now - previous);\r\n const context = this;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n func.apply(context, args);\r\n }\r\n else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(() => {\r\n previous = options.leading === false ? 0 : Date.now();\r\n timeout = null;\r\n func.apply(context, args);\r\n }, remaining);\r\n }\r\n };\r\n}\r\nfunction hookSetter(target, key, d, isRevoked, win = window) {\r\n const original = win.Object.getOwnPropertyDescriptor(target, key);\r\n win.Object.defineProperty(target, key, isRevoked\r\n ? d\r\n : {\r\n set(value) {\r\n setTimeout(() => {\r\n d.set.call(this, value);\r\n }, 0);\r\n if (original && original.set) {\r\n original.set.call(this, value);\r\n }\r\n },\r\n });\r\n return () => hookSetter(target, key, original || {}, true);\r\n}\r\nfunction patch(source, name, replacement) {\r\n try {\r\n if (!(name in source)) {\r\n return () => {\r\n };\r\n }\r\n const original = source[name];\r\n const wrapped = replacement(original);\r\n if (typeof wrapped === 'function') {\r\n wrapped.prototype = wrapped.prototype || {};\r\n Object.defineProperties(wrapped, {\r\n __rrweb_original__: {\r\n enumerable: false,\r\n value: original,\r\n },\r\n });\r\n }\r\n source[name] = wrapped;\r\n return () => {\r\n source[name] = original;\r\n };\r\n }\r\n catch (_a) {\r\n return () => {\r\n };\r\n }\r\n}\r\nlet nowTimestamp = Date.now;\r\nif (!(/[1-9][0-9]{12}/.test(Date.now().toString()))) {\r\n nowTimestamp = () => new Date().getTime();\r\n}\r\nfunction getWindowScroll(win) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const doc = win.document;\r\n return {\r\n left: doc.scrollingElement\r\n ? doc.scrollingElement.scrollLeft\r\n : win.pageXOffset !== undefined\r\n ? win.pageXOffset\r\n : (doc === null || doc === void 0 ? void 0 : doc.documentElement.scrollLeft) ||\r\n ((_b = (_a = doc === null || doc === void 0 ? void 0 : doc.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\r\n ((_c = doc === null || doc === void 0 ? void 0 : doc.body) === null || _c === void 0 ? void 0 : _c.scrollLeft) ||\r\n 0,\r\n top: doc.scrollingElement\r\n ? doc.scrollingElement.scrollTop\r\n : win.pageYOffset !== undefined\r\n ? win.pageYOffset\r\n : (doc === null || doc === void 0 ? void 0 : doc.documentElement.scrollTop) ||\r\n ((_e = (_d = doc === null || doc === void 0 ? void 0 : doc.body) === null || _d === void 0 ? void 0 : _d.parentElement) === null || _e === void 0 ? void 0 : _e.scrollTop) ||\r\n ((_f = doc === null || doc === void 0 ? void 0 : doc.body) === null || _f === void 0 ? void 0 : _f.scrollTop) ||\r\n 0,\r\n };\r\n}\r\nfunction getWindowHeight() {\r\n return (window.innerHeight ||\r\n (document.documentElement && document.documentElement.clientHeight) ||\r\n (document.body && document.body.clientHeight));\r\n}\r\nfunction getWindowWidth() {\r\n return (window.innerWidth ||\r\n (document.documentElement && document.documentElement.clientWidth) ||\r\n (document.body && document.body.clientWidth));\r\n}\r\nfunction closestElementOfNode(node) {\r\n if (!node) {\r\n return null;\r\n }\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n return el;\r\n}\r\nfunction isBlocked(node, blockClass, blockSelector, checkAncestors) {\r\n if (!node) {\r\n return false;\r\n }\r\n const el = closestElementOfNode(node);\r\n if (!el) {\r\n return false;\r\n }\r\n try {\r\n if (typeof blockClass === 'string') {\r\n if (el.classList.contains(blockClass))\r\n return true;\r\n if (checkAncestors && el.closest('.' + blockClass) !== null)\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, blockClass, checkAncestors))\r\n return true;\r\n }\r\n }\r\n catch (e) {\r\n }\r\n if (blockSelector) {\r\n if (el.matches(blockSelector))\r\n return true;\r\n if (checkAncestors && el.closest(blockSelector) !== null)\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction isSerialized(n, mirror) {\r\n return mirror.getId(n) !== -1;\r\n}\r\nfunction isIgnored(n, mirror) {\r\n return mirror.getId(n) === IGNORED_NODE;\r\n}\r\nfunction isAncestorRemoved(target, mirror) {\r\n if (isShadowRoot(target)) {\r\n return false;\r\n }\r\n const id = mirror.getId(target);\r\n if (!mirror.has(id)) {\r\n return true;\r\n }\r\n if (target.parentNode &&\r\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n if (!target.parentNode) {\r\n return true;\r\n }\r\n return isAncestorRemoved(target.parentNode, mirror);\r\n}\r\nfunction legacy_isTouchEvent(event) {\r\n return Boolean(event.changedTouches);\r\n}\r\nfunction polyfill(win = window) {\r\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\r\n win.NodeList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\r\n win.DOMTokenList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if (!Node.prototype.contains) {\r\n Node.prototype.contains = (...args) => {\r\n let node = args[0];\r\n if (!(0 in args)) {\r\n throw new TypeError('1 argument is required');\r\n }\r\n do {\r\n if (this === node) {\r\n return true;\r\n }\r\n } while ((node = node && node.parentNode));\r\n return false;\r\n };\r\n }\r\n}\r\nfunction queueToResolveTrees(queue) {\r\n const queueNodeMap = {};\r\n const putIntoMap = (m, parent) => {\r\n const nodeInTree = {\r\n value: m,\r\n parent,\r\n children: [],\r\n };\r\n queueNodeMap[m.node.id] = nodeInTree;\r\n return nodeInTree;\r\n };\r\n const queueNodeTrees = [];\r\n for (const mutation of queue) {\r\n const { nextId, parentId } = mutation;\r\n if (nextId && nextId in queueNodeMap) {\r\n const nextInTree = queueNodeMap[nextId];\r\n if (nextInTree.parent) {\r\n const idx = nextInTree.parent.children.indexOf(nextInTree);\r\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\r\n }\r\n else {\r\n const idx = queueNodeTrees.indexOf(nextInTree);\r\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\r\n }\r\n continue;\r\n }\r\n if (parentId in queueNodeMap) {\r\n const parentInTree = queueNodeMap[parentId];\r\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\r\n continue;\r\n }\r\n queueNodeTrees.push(putIntoMap(mutation, null));\r\n }\r\n return queueNodeTrees;\r\n}\r\nfunction iterateResolveTree(tree, cb) {\r\n cb(tree.value);\r\n for (let i = tree.children.length - 1; i >= 0; i--) {\r\n iterateResolveTree(tree.children[i], cb);\r\n }\r\n}\r\nfunction isSerializedIframe(n, mirror) {\r\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\r\n}\r\nfunction isSerializedStylesheet(n, mirror) {\r\n return Boolean(n.nodeName === 'LINK' &&\r\n n.nodeType === n.ELEMENT_NODE &&\r\n n.getAttribute &&\r\n n.getAttribute('rel') === 'stylesheet' &&\r\n mirror.getMeta(n));\r\n}\r\nfunction getBaseDimension(node, rootIframe) {\r\n var _a, _b;\r\n const frameElement = (_b = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.frameElement;\r\n if (!frameElement || frameElement === rootIframe) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n relativeScale: 1,\r\n absoluteScale: 1,\r\n };\r\n }\r\n const frameDimension = frameElement.getBoundingClientRect();\r\n const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\r\n const relativeScale = frameDimension.height / frameElement.clientHeight;\r\n return {\r\n x: frameDimension.x * frameBaseDimension.relativeScale +\r\n frameBaseDimension.x,\r\n y: frameDimension.y * frameBaseDimension.relativeScale +\r\n frameBaseDimension.y,\r\n relativeScale,\r\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\r\n };\r\n}\r\nfunction hasShadowRoot(n) {\r\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\r\n}\r\nfunction getNestedRule(rules, position) {\r\n const rule = rules[position[0]];\r\n if (position.length === 1) {\r\n return rule;\r\n }\r\n else {\r\n return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));\r\n }\r\n}\r\nfunction getPositionsAndIndex(nestedIndex) {\r\n const positions = [...nestedIndex];\r\n const index = positions.pop();\r\n return { positions, index };\r\n}\r\nfunction uniqueTextMutations(mutations) {\r\n const idSet = new Set();\r\n const uniqueMutations = [];\r\n for (let i = mutations.length; i--;) {\r\n const mutation = mutations[i];\r\n if (!idSet.has(mutation.id)) {\r\n uniqueMutations.push(mutation);\r\n idSet.add(mutation.id);\r\n }\r\n }\r\n return uniqueMutations;\r\n}\r\nclass StyleSheetMirror {\r\n constructor() {\r\n this.id = 1;\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n }\r\n getId(stylesheet) {\r\n var _a;\r\n return (_a = this.styleIDMap.get(stylesheet)) !== null && _a !== void 0 ? _a : -1;\r\n }\r\n has(stylesheet) {\r\n return this.styleIDMap.has(stylesheet);\r\n }\r\n add(stylesheet, id) {\r\n if (this.has(stylesheet))\r\n return this.getId(stylesheet);\r\n let newId;\r\n if (id === undefined) {\r\n newId = this.id++;\r\n }\r\n else\r\n newId = id;\r\n this.styleIDMap.set(stylesheet, newId);\r\n this.idStyleMap.set(newId, stylesheet);\r\n return newId;\r\n }\r\n getStyle(id) {\r\n return this.idStyleMap.get(id) || null;\r\n }\r\n reset() {\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n this.id = 1;\r\n }\r\n generateId() {\r\n return this.id++;\r\n }\r\n}\r\nfunction getShadowHost(n) {\r\n var _a, _b;\r\n let shadowHost = null;\r\n if (((_b = (_a = n.getRootNode) === null || _a === void 0 ? void 0 : _a.call(n)) === null || _b === void 0 ? void 0 : _b.nodeType) === Node.DOCUMENT_FRAGMENT_NODE &&\r\n n.getRootNode().host)\r\n shadowHost = n.getRootNode().host;\r\n return shadowHost;\r\n}\r\nfunction getRootShadowHost(n) {\r\n let rootShadowHost = n;\r\n let shadowHost;\r\n while ((shadowHost = getShadowHost(rootShadowHost)))\r\n rootShadowHost = shadowHost;\r\n return rootShadowHost;\r\n}\r\nfunction shadowHostInDom(n) {\r\n const doc = n.ownerDocument;\r\n if (!doc)\r\n return false;\r\n const shadowHost = getRootShadowHost(n);\r\n return doc.contains(shadowHost);\r\n}\r\nfunction inDom(n) {\r\n const doc = n.ownerDocument;\r\n if (!doc)\r\n return false;\r\n return doc.contains(n) || shadowHostInDom(n);\r\n}\n\nexport { StyleSheetMirror, _mirror, closestElementOfNode, getBaseDimension, getNestedRule, getPositionsAndIndex, getRootShadowHost, getShadowHost, getWindowHeight, getWindowScroll, getWindowWidth, hasShadowRoot, hookSetter, inDom, isAncestorRemoved, isBlocked, isIgnored, isSerialized, isSerializedIframe, isSerializedStylesheet, iterateResolveTree, legacy_isTouchEvent, nowTimestamp, on, patch, polyfill, queueToResolveTrees, shadowHostInDom, throttle, uniqueTextMutations };\n","var EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\n\nexport { CanvasContext, EventType, IncrementalSource, MouseInteractions, PointerTypes, ReplayerEvents };\n","import { isShadowRoot, isNativeShadowDom, getInputType, maskInputValue, ignoreAttribute, transformAttribute, toLowerCase, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isSerialized, isAncestorRemoved, closestElementOfNode, hasShadowRoot, inDom, getShadowHost, isSerializedIframe, isSerializedStylesheet } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\r\n return '__ln' in n;\r\n}\r\nclass DoubleLinkedList {\r\n constructor() {\r\n this.length = 0;\r\n this.head = null;\r\n this.tail = null;\r\n }\r\n get(position) {\r\n if (position >= this.length) {\r\n throw new Error('Position outside of list range');\r\n }\r\n let current = this.head;\r\n for (let index = 0; index < position; index++) {\r\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\r\n }\r\n return current;\r\n }\r\n addNode(n) {\r\n const node = {\r\n value: n,\r\n previous: null,\r\n next: null,\r\n };\r\n n.__ln = node;\r\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\r\n const current = n.previousSibling.__ln.next;\r\n node.next = current;\r\n node.previous = n.previousSibling.__ln;\r\n n.previousSibling.__ln.next = node;\r\n if (current) {\r\n current.previous = node;\r\n }\r\n }\r\n else if (n.nextSibling &&\r\n isNodeInLinkedList(n.nextSibling) &&\r\n n.nextSibling.__ln.previous) {\r\n const current = n.nextSibling.__ln.previous;\r\n node.previous = current;\r\n node.next = n.nextSibling.__ln;\r\n n.nextSibling.__ln.previous = node;\r\n if (current) {\r\n current.next = node;\r\n }\r\n }\r\n else {\r\n if (this.head) {\r\n this.head.previous = node;\r\n }\r\n node.next = this.head;\r\n this.head = node;\r\n }\r\n if (node.next === null) {\r\n this.tail = node;\r\n }\r\n this.length++;\r\n }\r\n removeNode(n) {\r\n const current = n.__ln;\r\n if (!this.head) {\r\n return;\r\n }\r\n if (!current.previous) {\r\n this.head = current.next;\r\n if (this.head) {\r\n this.head.previous = null;\r\n }\r\n else {\r\n this.tail = null;\r\n }\r\n }\r\n else {\r\n current.previous.next = current.next;\r\n if (current.next) {\r\n current.next.previous = current.previous;\r\n }\r\n else {\r\n this.tail = current.previous;\r\n }\r\n }\r\n if (n.__ln) {\r\n delete n.__ln;\r\n }\r\n this.length--;\r\n }\r\n}\r\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\r\nclass MutationBuffer {\r\n constructor() {\r\n this.frozen = false;\r\n this.locked = false;\r\n this.texts = [];\r\n this.attributes = [];\r\n this.attributeMap = new WeakMap();\r\n this.removes = [];\r\n this.mapRemoves = [];\r\n this.movedMap = {};\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.processMutations = (mutations) => {\r\n mutations.forEach(this.processMutation);\r\n this.emit();\r\n };\r\n this.emit = () => {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const adds = [];\r\n const addedIds = new Set();\r\n const addList = new DoubleLinkedList();\r\n const getNextId = (n) => {\r\n let ns = n;\r\n let nextId = IGNORED_NODE;\r\n while (nextId === IGNORED_NODE) {\r\n ns = ns && ns.nextSibling;\r\n nextId = ns && this.mirror.getId(ns);\r\n }\r\n return nextId;\r\n };\r\n const pushAdd = (n) => {\r\n if (!n.parentNode ||\r\n !inDom(n) ||\r\n n.parentNode.tagName === 'TEXTAREA') {\r\n return;\r\n }\r\n const parentId = isShadowRoot(n.parentNode)\r\n ? this.mirror.getId(getShadowHost(n))\r\n : this.mirror.getId(n.parentNode);\r\n const nextId = getNextId(n);\r\n if (parentId === -1 || nextId === -1) {\r\n return addList.addNode(n);\r\n }\r\n const sn = serializeNodeWithId(n, {\r\n doc: this.doc,\r\n mirror: this.mirror,\r\n blockClass: this.blockClass,\r\n blockSelector: this.blockSelector,\r\n maskTextClass: this.maskTextClass,\r\n maskTextSelector: this.maskTextSelector,\r\n skipChild: true,\r\n newlyAddedElement: true,\r\n inlineStylesheet: this.inlineStylesheet,\r\n maskInputOptions: this.maskInputOptions,\r\n maskTextFn: this.maskTextFn,\r\n maskInputFn: this.maskInputFn,\r\n slimDOMOptions: this.slimDOMOptions,\r\n dataURLOptions: this.dataURLOptions,\r\n recordCanvas: this.recordCanvas,\r\n inlineImages: this.inlineImages,\r\n onSerialize: (currentN) => {\r\n if (isSerializedIframe(currentN, this.mirror)) {\r\n this.iframeManager.addIframe(currentN);\r\n }\r\n if (isSerializedStylesheet(currentN, this.mirror)) {\r\n this.stylesheetManager.trackLinkElement(currentN);\r\n }\r\n if (hasShadowRoot(n)) {\r\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n this.iframeManager.attachIframe(iframe, childSn);\r\n this.shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (link, childSn) => {\r\n this.stylesheetManager.attachLinkElement(link, childSn);\r\n },\r\n });\r\n if (sn) {\r\n adds.push({\r\n parentId,\r\n nextId,\r\n node: sn,\r\n });\r\n addedIds.add(sn.id);\r\n }\r\n };\r\n while (this.mapRemoves.length) {\r\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\r\n }\r\n for (const n of this.movedSet) {\r\n if (isParentRemoved(this.removes, n, this.mirror) &&\r\n !this.movedSet.has(n.parentNode)) {\r\n continue;\r\n }\r\n pushAdd(n);\r\n }\r\n for (const n of this.addedSet) {\r\n if (!isAncestorInSet(this.droppedSet, n) &&\r\n !isParentRemoved(this.removes, n, this.mirror)) {\r\n pushAdd(n);\r\n }\r\n else if (isAncestorInSet(this.movedSet, n)) {\r\n pushAdd(n);\r\n }\r\n else {\r\n this.droppedSet.add(n);\r\n }\r\n }\r\n let candidate = null;\r\n while (addList.length) {\r\n let node = null;\r\n if (candidate) {\r\n const parentId = this.mirror.getId(candidate.value.parentNode);\r\n const nextId = getNextId(candidate.value);\r\n if (parentId !== -1 && nextId !== -1) {\r\n node = candidate;\r\n }\r\n }\r\n if (!node) {\r\n let tailNode = addList.tail;\r\n while (tailNode) {\r\n const _node = tailNode;\r\n tailNode = tailNode.previous;\r\n if (_node) {\r\n const parentId = this.mirror.getId(_node.value.parentNode);\r\n const nextId = getNextId(_node.value);\r\n if (nextId === -1)\r\n continue;\r\n else if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n else {\r\n const unhandledNode = _node.value;\r\n if (unhandledNode.parentNode &&\r\n unhandledNode.parentNode.nodeType ===\r\n Node.DOCUMENT_FRAGMENT_NODE) {\r\n const shadowHost = unhandledNode.parentNode\r\n .host;\r\n const parentId = this.mirror.getId(shadowHost);\r\n if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!node) {\r\n while (addList.head) {\r\n addList.removeNode(addList.head.value);\r\n }\r\n break;\r\n }\r\n candidate = node.previous;\r\n addList.removeNode(node.value);\r\n pushAdd(node.value);\r\n }\r\n const payload = {\r\n texts: this.texts\r\n .map((text) => {\r\n const n = text.node;\r\n if (n.parentNode &&\r\n n.parentNode.tagName === 'TEXTAREA') {\r\n this.genTextAreaValueMutation(n.parentNode);\r\n }\r\n return {\r\n id: this.mirror.getId(n),\r\n value: text.value,\r\n };\r\n })\r\n .filter((text) => !addedIds.has(text.id))\r\n .filter((text) => this.mirror.has(text.id)),\r\n attributes: this.attributes\r\n .map((attribute) => {\r\n const { attributes } = attribute;\r\n if (typeof attributes.style === 'string') {\r\n const diffAsStr = JSON.stringify(attribute.styleDiff);\r\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\r\n if (diffAsStr.length < attributes.style.length) {\r\n if ((diffAsStr + unchangedAsStr).split('var(').length ===\r\n attributes.style.split('var(').length) {\r\n attributes.style = attribute.styleDiff;\r\n }\r\n }\r\n }\r\n return {\r\n id: this.mirror.getId(attribute.node),\r\n attributes: attributes,\r\n };\r\n })\r\n .filter((attribute) => !addedIds.has(attribute.id))\r\n .filter((attribute) => this.mirror.has(attribute.id)),\r\n removes: this.removes,\r\n adds,\r\n };\r\n if (!payload.texts.length &&\r\n !payload.attributes.length &&\r\n !payload.removes.length &&\r\n !payload.adds.length) {\r\n return;\r\n }\r\n this.texts = [];\r\n this.attributes = [];\r\n this.attributeMap = new WeakMap();\r\n this.removes = [];\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.movedMap = {};\r\n this.mutationCb(payload);\r\n };\r\n this.genTextAreaValueMutation = (textarea) => {\r\n let item = this.attributeMap.get(textarea);\r\n if (!item) {\r\n item = {\r\n node: textarea,\r\n attributes: {},\r\n styleDiff: {},\r\n _unchangedStyles: {},\r\n };\r\n this.attributes.push(item);\r\n this.attributeMap.set(textarea, item);\r\n }\r\n item.attributes.value = Array.from(textarea.childNodes, (cn) => cn.textContent || '').join('');\r\n };\r\n this.processMutation = (m) => {\r\n if (isIgnored(m.target, this.mirror)) {\r\n return;\r\n }\r\n switch (m.type) {\r\n case 'characterData': {\r\n const value = m.target.textContent;\r\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\r\n value !== m.oldValue) {\r\n this.texts.push({\r\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, true) && value\r\n ? this.maskTextFn\r\n ? this.maskTextFn(value, closestElementOfNode(m.target))\r\n : value.replace(/[\\S]/g, '*')\r\n : value,\r\n node: m.target,\r\n });\r\n }\r\n break;\r\n }\r\n case 'attributes': {\r\n const target = m.target;\r\n let attributeName = m.attributeName;\r\n let value = m.target.getAttribute(attributeName);\r\n if (attributeName === 'value') {\r\n const type = getInputType(target);\r\n value = maskInputValue({\r\n element: target,\r\n maskInputOptions: this.maskInputOptions,\r\n tagName: target.tagName,\r\n type,\r\n value,\r\n maskInputFn: this.maskInputFn,\r\n });\r\n }\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n value === m.oldValue) {\r\n return;\r\n }\r\n let item = this.attributeMap.get(m.target);\r\n if (target.tagName === 'IFRAME' &&\r\n attributeName === 'src' &&\r\n !this.keepIframeSrcFn(value)) {\r\n if (!target.contentDocument) {\r\n attributeName = 'rr_src';\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n if (!item) {\r\n item = {\r\n node: m.target,\r\n attributes: {},\r\n styleDiff: {},\r\n _unchangedStyles: {},\r\n };\r\n this.attributes.push(item);\r\n this.attributeMap.set(m.target, item);\r\n }\r\n if (attributeName === 'type' &&\r\n target.tagName === 'INPUT' &&\r\n (m.oldValue || '').toLowerCase() === 'password') {\r\n target.setAttribute('data-rr-is-password', 'true');\r\n }\r\n if (!ignoreAttribute(target.tagName, attributeName)) {\r\n item.attributes[attributeName] = transformAttribute(this.doc, toLowerCase(target.tagName), toLowerCase(attributeName), value);\r\n if (attributeName === 'style') {\r\n if (!this.unattachedDoc) {\r\n try {\r\n this.unattachedDoc =\r\n document.implementation.createHTMLDocument();\r\n }\r\n catch (e) {\r\n this.unattachedDoc = this.doc;\r\n }\r\n }\r\n const old = this.unattachedDoc.createElement('span');\r\n if (m.oldValue) {\r\n old.setAttribute('style', m.oldValue);\r\n }\r\n for (const pname of Array.from(target.style)) {\r\n const newValue = target.style.getPropertyValue(pname);\r\n const newPriority = target.style.getPropertyPriority(pname);\r\n if (newValue !== old.style.getPropertyValue(pname) ||\r\n newPriority !== old.style.getPropertyPriority(pname)) {\r\n if (newPriority === '') {\r\n item.styleDiff[pname] = newValue;\r\n }\r\n else {\r\n item.styleDiff[pname] = [newValue, newPriority];\r\n }\r\n }\r\n else {\r\n item._unchangedStyles[pname] = [newValue, newPriority];\r\n }\r\n }\r\n for (const pname of Array.from(old.style)) {\r\n if (target.style.getPropertyValue(pname) === '') {\r\n item.styleDiff[pname] = false;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n case 'childList': {\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\r\n return;\r\n if (m.target.tagName === 'TEXTAREA') {\r\n this.genTextAreaValueMutation(m.target);\r\n return;\r\n }\r\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\r\n m.removedNodes.forEach((n) => {\r\n const nodeId = this.mirror.getId(n);\r\n const parentId = isShadowRoot(m.target)\r\n ? this.mirror.getId(m.target.host)\r\n : this.mirror.getId(m.target);\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n isIgnored(n, this.mirror) ||\r\n !isSerialized(n, this.mirror)) {\r\n return;\r\n }\r\n if (this.addedSet.has(n)) {\r\n deepDelete(this.addedSet, n);\r\n this.droppedSet.add(n);\r\n }\r\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\r\n else if (isAncestorRemoved(m.target, this.mirror)) ;\r\n else if (this.movedSet.has(n) &&\r\n this.movedMap[moveKey(nodeId, parentId)]) {\r\n deepDelete(this.movedSet, n);\r\n }\r\n else {\r\n this.removes.push({\r\n parentId,\r\n id: nodeId,\r\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\r\n ? true\r\n : undefined,\r\n });\r\n }\r\n this.mapRemoves.push(n);\r\n });\r\n break;\r\n }\r\n }\r\n };\r\n this.genAdds = (n, target) => {\r\n if (this.processedNodeManager.inOtherBuffer(n, this))\r\n return;\r\n if (this.addedSet.has(n) || this.movedSet.has(n))\r\n return;\r\n if (this.mirror.hasNode(n)) {\r\n if (isIgnored(n, this.mirror)) {\r\n return;\r\n }\r\n this.movedSet.add(n);\r\n let targetId = null;\r\n if (target && this.mirror.hasNode(target)) {\r\n targetId = this.mirror.getId(target);\r\n }\r\n if (targetId && targetId !== -1) {\r\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\r\n }\r\n }\r\n else {\r\n this.addedSet.add(n);\r\n this.droppedSet.delete(n);\r\n }\r\n if (!isBlocked(n, this.blockClass, this.blockSelector, false)) {\r\n n.childNodes.forEach((childN) => this.genAdds(childN));\r\n if (hasShadowRoot(n)) {\r\n n.shadowRoot.childNodes.forEach((childN) => {\r\n this.processedNodeManager.add(childN, this);\r\n this.genAdds(childN, n);\r\n });\r\n }\r\n }\r\n };\r\n }\r\n init(options) {\r\n [\r\n 'mutationCb',\r\n 'blockClass',\r\n 'blockSelector',\r\n 'maskTextClass',\r\n 'maskTextSelector',\r\n 'inlineStylesheet',\r\n 'maskInputOptions',\r\n 'maskTextFn',\r\n 'maskInputFn',\r\n 'keepIframeSrcFn',\r\n 'recordCanvas',\r\n 'inlineImages',\r\n 'slimDOMOptions',\r\n 'dataURLOptions',\r\n 'doc',\r\n 'mirror',\r\n 'iframeManager',\r\n 'stylesheetManager',\r\n 'shadowDomManager',\r\n 'canvasManager',\r\n 'processedNodeManager',\r\n ].forEach((key) => {\r\n this[key] = options[key];\r\n });\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n this.canvasManager.freeze();\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n this.canvasManager.unfreeze();\r\n this.emit();\r\n }\r\n isFrozen() {\r\n return this.frozen;\r\n }\r\n lock() {\r\n this.locked = true;\r\n this.canvasManager.lock();\r\n }\r\n unlock() {\r\n this.locked = false;\r\n this.canvasManager.unlock();\r\n this.emit();\r\n }\r\n reset() {\r\n this.shadowDomManager.reset();\r\n this.canvasManager.reset();\r\n }\r\n}\r\nfunction deepDelete(addsSet, n) {\r\n addsSet.delete(n);\r\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\r\n}\r\nfunction isParentRemoved(removes, n, mirror) {\r\n if (removes.length === 0)\r\n return false;\r\n return _isParentRemoved(removes, n, mirror);\r\n}\r\nfunction _isParentRemoved(removes, n, mirror) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const parentId = mirror.getId(parentNode);\r\n if (removes.some((r) => r.id === parentId)) {\r\n return true;\r\n }\r\n return _isParentRemoved(removes, parentNode, mirror);\r\n}\r\nfunction isAncestorInSet(set, n) {\r\n if (set.size === 0)\r\n return false;\r\n return _isAncestorInSet(set, n);\r\n}\r\nfunction _isAncestorInSet(set, n) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n if (set.has(parentNode)) {\r\n return true;\r\n }\r\n return _isAncestorInSet(set, parentNode);\r\n}\n\nexport { MutationBuffer as default };\n","let errorHandler;\r\nfunction registerErrorHandler(handler) {\r\n errorHandler = handler;\r\n}\r\nfunction unregisterErrorHandler() {\r\n errorHandler = undefined;\r\n}\r\nconst callbackWrapper = (cb) => {\r\n if (!errorHandler) {\r\n return cb;\r\n }\r\n const rrwebWrapped = ((...rest) => {\r\n try {\r\n return cb(...rest);\r\n }\r\n catch (error) {\r\n if (errorHandler && errorHandler(error) === true) {\r\n return;\r\n }\r\n throw error;\r\n }\r\n });\r\n return rrwebWrapped;\r\n};\n\nexport { callbackWrapper, registerErrorHandler, unregisterErrorHandler };\n","import { toLowerCase, getInputType, maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isBlocked, getWindowScroll, getWindowHeight, getWindowWidth, hookSetter, patch, legacy_isTouchEvent, nowTimestamp } from '../utils.js';\nimport { MouseInteractions, IncrementalSource, PointerTypes } from '../../../types/dist/types.js';\nimport MutationBuffer from './mutation.js';\nimport { callbackWrapper } from './error-handler.js';\n\nconst mutationBuffers = [];\r\nfunction getEventTarget(event) {\r\n try {\r\n if ('composedPath' in event) {\r\n const path = event.composedPath();\r\n if (path.length) {\r\n return path[0];\r\n }\r\n }\r\n else if ('path' in event && event.path.length) {\r\n return event.path[0];\r\n }\r\n }\r\n catch (_a) {\r\n }\r\n return event && event.target;\r\n}\r\nfunction initMutationObserver(options, rootEl) {\r\n var _a, _b;\r\n const mutationBuffer = new MutationBuffer();\r\n mutationBuffers.push(mutationBuffer);\r\n mutationBuffer.init(options);\r\n let mutationObserverCtor = window.MutationObserver ||\r\n window.__rrMutationObserver;\r\n const angularZoneSymbol = (_b = (_a = window === null || window === void 0 ? void 0 : window.Zone) === null || _a === void 0 ? void 0 : _a.__symbol__) === null || _b === void 0 ? void 0 : _b.call(_a, 'MutationObserver');\r\n if (angularZoneSymbol &&\r\n window[angularZoneSymbol]) {\r\n mutationObserverCtor = window[angularZoneSymbol];\r\n }\r\n const observer = new mutationObserverCtor(callbackWrapper(mutationBuffer.processMutations.bind(mutationBuffer)));\r\n observer.observe(rootEl, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n characterData: true,\r\n characterDataOldValue: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\r\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\r\n if (sampling.mousemove === false) {\r\n return () => {\r\n };\r\n }\r\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\r\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\r\n ? sampling.mousemoveCallback\r\n : 500;\r\n let positions = [];\r\n let timeBaseline;\r\n const wrappedCb = throttle(callbackWrapper((source) => {\r\n const totalOffset = Date.now() - timeBaseline;\r\n mousemoveCb(positions.map((p) => {\r\n p.timeOffset -= totalOffset;\r\n return p;\r\n }), source);\r\n positions = [];\r\n timeBaseline = null;\r\n }), callbackThreshold);\r\n const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n const target = getEventTarget(evt);\r\n const { clientX, clientY } = legacy_isTouchEvent(evt)\r\n ? evt.changedTouches[0]\r\n : evt;\r\n if (!timeBaseline) {\r\n timeBaseline = nowTimestamp();\r\n }\r\n positions.push({\r\n x: clientX,\r\n y: clientY,\r\n id: mirror.getId(target),\r\n timeOffset: nowTimestamp() - timeBaseline,\r\n });\r\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\r\n ? IncrementalSource.Drag\r\n : evt instanceof MouseEvent\r\n ? IncrementalSource.MouseMove\r\n : IncrementalSource.TouchMove);\r\n }), threshold, {\r\n trailing: false,\r\n }));\r\n const handlers = [\r\n on('mousemove', updatePosition, doc),\r\n on('touchmove', updatePosition, doc),\r\n on('drag', updatePosition, doc),\r\n ];\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n if (sampling.mouseInteraction === false) {\r\n return () => {\r\n };\r\n }\r\n const disableMap = sampling.mouseInteraction === true ||\r\n sampling.mouseInteraction === undefined\r\n ? {}\r\n : sampling.mouseInteraction;\r\n const handlers = [];\r\n let currentPointerType = null;\r\n const getHandler = (eventKey) => {\r\n return (event) => {\r\n const target = getEventTarget(event);\r\n if (isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n let pointerType = null;\r\n let thisEventKey = eventKey;\r\n if ('pointerType' in event) {\r\n switch (event.pointerType) {\r\n case 'mouse':\r\n pointerType = PointerTypes.Mouse;\r\n break;\r\n case 'touch':\r\n pointerType = PointerTypes.Touch;\r\n break;\r\n case 'pen':\r\n pointerType = PointerTypes.Pen;\r\n break;\r\n }\r\n if (pointerType === PointerTypes.Touch) {\r\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\r\n thisEventKey = 'TouchStart';\r\n }\r\n else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\r\n thisEventKey = 'TouchEnd';\r\n }\r\n }\r\n else if (pointerType === PointerTypes.Pen) ;\r\n }\r\n else if (legacy_isTouchEvent(event)) {\r\n pointerType = PointerTypes.Touch;\r\n }\r\n if (pointerType !== null) {\r\n currentPointerType = pointerType;\r\n if ((thisEventKey.startsWith('Touch') &&\r\n pointerType === PointerTypes.Touch) ||\r\n (thisEventKey.startsWith('Mouse') &&\r\n pointerType === PointerTypes.Mouse)) {\r\n pointerType = null;\r\n }\r\n }\r\n else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\r\n pointerType = currentPointerType;\r\n currentPointerType = null;\r\n }\r\n const e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\r\n if (!e) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n const { clientX, clientY } = e;\r\n callbackWrapper(mouseInteractionCb)(Object.assign({ type: MouseInteractions[thisEventKey], id, x: clientX, y: clientY }, (pointerType !== null && { pointerType })));\r\n };\r\n };\r\n Object.keys(MouseInteractions)\r\n .filter((key) => Number.isNaN(Number(key)) &&\r\n !key.endsWith('_Departed') &&\r\n disableMap[key] !== false)\r\n .forEach((eventKey) => {\r\n let eventName = toLowerCase(eventKey);\r\n const handler = getHandler(eventKey);\r\n if (window.PointerEvent) {\r\n switch (MouseInteractions[eventKey]) {\r\n case MouseInteractions.MouseDown:\r\n case MouseInteractions.MouseUp:\r\n eventName = eventName.replace('mouse', 'pointer');\r\n break;\r\n case MouseInteractions.TouchStart:\r\n case MouseInteractions.TouchEnd:\r\n return;\r\n }\r\n }\r\n handlers.push(on(eventName, handler, doc));\r\n });\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n const updatePosition = callbackWrapper(throttle(callbackWrapper((evt) => {\r\n const target = getEventTarget(evt);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n if (target === doc && doc.defaultView) {\r\n const scrollLeftTop = getWindowScroll(doc.defaultView);\r\n scrollCb({\r\n id,\r\n x: scrollLeftTop.left,\r\n y: scrollLeftTop.top,\r\n });\r\n }\r\n else {\r\n scrollCb({\r\n id,\r\n x: target.scrollLeft,\r\n y: target.scrollTop,\r\n });\r\n }\r\n }), sampling.scroll || 100));\r\n return on('scroll', updatePosition, doc);\r\n}\r\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\r\n let lastH = -1;\r\n let lastW = -1;\r\n const updateDimension = callbackWrapper(throttle(callbackWrapper(() => {\r\n const height = getWindowHeight();\r\n const width = getWindowWidth();\r\n if (lastH !== height || lastW !== width) {\r\n viewportResizeCb({\r\n width: Number(width),\r\n height: Number(height),\r\n });\r\n lastH = height;\r\n lastW = width;\r\n }\r\n }), 200));\r\n return on('resize', updateDimension, win);\r\n}\r\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\nconst lastInputValueMap = new WeakMap();\r\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, ignoreClass, ignoreSelector, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, }) {\r\n function eventHandler(event) {\r\n let target = getEventTarget(event);\r\n const userTriggered = event.isTrusted;\r\n const tagName = target && target.tagName;\r\n if (target && tagName === 'OPTION') {\r\n target = target.parentElement;\r\n }\r\n if (!target ||\r\n !tagName ||\r\n INPUT_TAGS.indexOf(tagName) < 0 ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n if (target.classList.contains(ignoreClass) ||\r\n (ignoreSelector && target.matches(ignoreSelector))) {\r\n return;\r\n }\r\n let text = target.value;\r\n let isChecked = false;\r\n const type = getInputType(target) || '';\r\n if (type === 'radio' || type === 'checkbox') {\r\n isChecked = target.checked;\r\n }\r\n else if (maskInputOptions[tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n text = maskInputValue({\r\n element: target,\r\n maskInputOptions,\r\n tagName,\r\n type,\r\n value: text,\r\n maskInputFn,\r\n });\r\n }\r\n cbWithDedup(target, userTriggeredOnInput\r\n ? { text, isChecked, userTriggered }\r\n : { text, isChecked });\r\n const name = target.name;\r\n if (type === 'radio' && name && isChecked) {\r\n doc\r\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\r\n .forEach((el) => {\r\n if (el !== target) {\r\n const text = el.value;\r\n cbWithDedup(el, userTriggeredOnInput\r\n ? { text, isChecked: !isChecked, userTriggered: false }\r\n : { text, isChecked: !isChecked });\r\n }\r\n });\r\n }\r\n }\r\n function cbWithDedup(target, v) {\r\n const lastInputValue = lastInputValueMap.get(target);\r\n if (!lastInputValue ||\r\n lastInputValue.text !== v.text ||\r\n lastInputValue.isChecked !== v.isChecked) {\r\n lastInputValueMap.set(target, v);\r\n const id = mirror.getId(target);\r\n callbackWrapper(inputCb)(Object.assign(Object.assign({}, v), { id }));\r\n }\r\n }\r\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\r\n const handlers = events.map((eventName) => on(eventName, callbackWrapper(eventHandler), doc));\r\n const currentWindow = doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n }\r\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\r\n const hookProperties = [\r\n [currentWindow.HTMLInputElement.prototype, 'value'],\r\n [currentWindow.HTMLInputElement.prototype, 'checked'],\r\n [currentWindow.HTMLSelectElement.prototype, 'value'],\r\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\r\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\r\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\r\n ];\r\n if (propertyDescriptor && propertyDescriptor.set) {\r\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\r\n set() {\r\n callbackWrapper(eventHandler)({\r\n target: this,\r\n isTrusted: false,\r\n });\r\n },\r\n }, false, currentWindow)));\r\n }\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction getNestedCSSRulePositions(rule) {\r\n const positions = [];\r\n function recurse(childRule, pos) {\r\n if ((hasNestedCSSRule('CSSGroupingRule') &&\r\n childRule.parentRule instanceof CSSGroupingRule) ||\r\n (hasNestedCSSRule('CSSMediaRule') &&\r\n childRule.parentRule instanceof CSSMediaRule) ||\r\n (hasNestedCSSRule('CSSSupportsRule') &&\r\n childRule.parentRule instanceof CSSSupportsRule) ||\r\n (hasNestedCSSRule('CSSConditionRule') &&\r\n childRule.parentRule instanceof CSSConditionRule)) {\r\n const rules = Array.from(childRule.parentRule.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n else if (childRule.parentStyleSheet) {\r\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n return pos;\r\n }\r\n return recurse(rule, positions);\r\n}\r\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\r\n let id, styleId;\r\n if (!sheet)\r\n return {};\r\n if (sheet.ownerNode)\r\n id = mirror.getId(sheet.ownerNode);\r\n else\r\n styleId = styleMirror.getId(sheet);\r\n return {\r\n styleId,\r\n id,\r\n };\r\n}\r\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\r\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\r\n return () => {\r\n };\r\n }\r\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\r\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [rule, index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [{ rule, index }],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\r\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [{ index }],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n let replace;\r\n if (win.CSSStyleSheet.prototype.replace) {\r\n replace = win.CSSStyleSheet.prototype.replace;\r\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [text] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replace: text,\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n }\r\n let replaceSync;\r\n if (win.CSSStyleSheet.prototype.replaceSync) {\r\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\r\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [text] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replaceSync: text,\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n }\r\n const supportedNestedCSSRuleTypes = {};\r\n if (canMonkeyPatchNestedCSSRule('CSSGroupingRule')) {\r\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\r\n }\r\n else {\r\n if (canMonkeyPatchNestedCSSRule('CSSMediaRule')) {\r\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\r\n }\r\n if (canMonkeyPatchNestedCSSRule('CSSConditionRule')) {\r\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\r\n }\r\n if (canMonkeyPatchNestedCSSRule('CSSSupportsRule')) {\r\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\r\n }\r\n }\r\n const unmodifiedFunctions = {};\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n unmodifiedFunctions[typeKey] = {\r\n insertRule: type.prototype.insertRule,\r\n deleteRule: type.prototype.deleteRule,\r\n };\r\n type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [rule, index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [\r\n {\r\n rule,\r\n index: [\r\n ...getNestedCSSRulePositions(thisArg),\r\n index || 0,\r\n ],\r\n },\r\n ],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n const [index] = argumentsList;\r\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [\r\n { index: [...getNestedCSSRulePositions(thisArg), index] },\r\n ],\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n });\r\n return callbackWrapper(() => {\r\n win.CSSStyleSheet.prototype.insertRule = insertRule;\r\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\r\n replace && (win.CSSStyleSheet.prototype.replace = replace);\r\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\r\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\r\n });\r\n });\r\n}\r\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\r\n var _a, _b, _c;\r\n let hostId = null;\r\n if (host.nodeName === '#document')\r\n hostId = mirror.getId(host);\r\n else\r\n hostId = mirror.getId(host.host);\r\n const patchTarget = host.nodeName === '#document'\r\n ? (_a = host.defaultView) === null || _a === void 0 ? void 0 : _a.Document\r\n : (_c = (_b = host.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView) === null || _c === void 0 ? void 0 : _c.ShadowRoot;\r\n const originalPropertyDescriptor = (patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype)\r\n ? Object.getOwnPropertyDescriptor(patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype, 'adoptedStyleSheets')\r\n : undefined;\r\n if (hostId === null ||\r\n hostId === -1 ||\r\n !patchTarget ||\r\n !originalPropertyDescriptor)\r\n return () => {\r\n };\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get() {\r\n var _a;\r\n return (_a = originalPropertyDescriptor.get) === null || _a === void 0 ? void 0 : _a.call(this);\r\n },\r\n set(sheets) {\r\n var _a;\r\n const result = (_a = originalPropertyDescriptor.set) === null || _a === void 0 ? void 0 : _a.call(this, sheets);\r\n if (hostId !== null && hostId !== -1) {\r\n try {\r\n stylesheetManager.adoptStyleSheets(sheets, hostId);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return result;\r\n },\r\n });\r\n return callbackWrapper(() => {\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get: originalPropertyDescriptor.get,\r\n set: originalPropertyDescriptor.set,\r\n });\r\n });\r\n}\r\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\r\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\r\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n var _a;\r\n const [property, value, priority] = argumentsList;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return setProperty.apply(thisArg, [property, value, priority]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = thisArg.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n set: {\r\n property,\r\n value,\r\n priority,\r\n },\r\n index: getNestedCSSRulePositions(thisArg.parentRule),\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\r\n apply: callbackWrapper((target, thisArg, argumentsList) => {\r\n var _a;\r\n const [property] = argumentsList;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return removeProperty.apply(thisArg, [property]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = thisArg.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n remove: {\r\n property,\r\n },\r\n index: getNestedCSSRulePositions(thisArg.parentRule),\r\n });\r\n }\r\n return target.apply(thisArg, argumentsList);\r\n }),\r\n });\r\n return callbackWrapper(() => {\r\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\r\n });\r\n}\r\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, mirror, sampling, doc, }) {\r\n const handler = callbackWrapper((type) => throttle(callbackWrapper((event) => {\r\n const target = getEventTarget(event);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const { currentTime, volume, muted, playbackRate, loop } = target;\r\n mediaInteractionCb({\r\n type,\r\n id: mirror.getId(target),\r\n currentTime,\r\n volume,\r\n muted,\r\n playbackRate,\r\n loop,\r\n });\r\n }), sampling.media || 500));\r\n const handlers = [\r\n on('play', handler(0), doc),\r\n on('pause', handler(1), doc),\r\n on('seeked', handler(2), doc),\r\n on('volumechange', handler(3), doc),\r\n on('ratechange', handler(4), doc),\r\n ];\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initFontObserver({ fontCb, doc }) {\r\n const win = doc.defaultView;\r\n if (!win) {\r\n return () => {\r\n };\r\n }\r\n const handlers = [];\r\n const fontMap = new WeakMap();\r\n const originalFontFace = win.FontFace;\r\n win.FontFace = function FontFace(family, source, descriptors) {\r\n const fontFace = new originalFontFace(family, source, descriptors);\r\n fontMap.set(fontFace, {\r\n family,\r\n buffer: typeof source !== 'string',\r\n descriptors,\r\n fontSource: typeof source === 'string'\r\n ? source\r\n : JSON.stringify(Array.from(new Uint8Array(source))),\r\n });\r\n return fontFace;\r\n };\r\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\r\n return function (fontFace) {\r\n setTimeout(callbackWrapper(() => {\r\n const p = fontMap.get(fontFace);\r\n if (p) {\r\n fontCb(p);\r\n fontMap.delete(fontFace);\r\n }\r\n }), 0);\r\n return original.apply(this, [fontFace]);\r\n };\r\n });\r\n handlers.push(() => {\r\n win.FontFace = originalFontFace;\r\n });\r\n handlers.push(restoreHandler);\r\n return callbackWrapper(() => {\r\n handlers.forEach((h) => h());\r\n });\r\n}\r\nfunction initSelectionObserver(param) {\r\n const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\r\n let collapsed = true;\r\n const updateSelection = callbackWrapper(() => {\r\n const selection = doc.getSelection();\r\n if (!selection || (collapsed && (selection === null || selection === void 0 ? void 0 : selection.isCollapsed)))\r\n return;\r\n collapsed = selection.isCollapsed || false;\r\n const ranges = [];\r\n const count = selection.rangeCount || 0;\r\n for (let i = 0; i < count; i++) {\r\n const range = selection.getRangeAt(i);\r\n const { startContainer, startOffset, endContainer, endOffset } = range;\r\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) ||\r\n isBlocked(endContainer, blockClass, blockSelector, true);\r\n if (blocked)\r\n continue;\r\n ranges.push({\r\n start: mirror.getId(startContainer),\r\n startOffset,\r\n end: mirror.getId(endContainer),\r\n endOffset,\r\n });\r\n }\r\n selectionCb({ ranges });\r\n });\r\n updateSelection();\r\n return on('selectionchange', updateSelection);\r\n}\r\nfunction initCustomElementObserver({ doc, customElementCb, }) {\r\n const win = doc.defaultView;\r\n if (!win || !win.customElements)\r\n return () => { };\r\n const restoreHandler = patch(win.customElements, 'define', function (original) {\r\n return function (name, constructor, options) {\r\n try {\r\n customElementCb({\r\n define: {\r\n name,\r\n },\r\n });\r\n }\r\n catch (e) {\r\n console.warn(`Custom element callback failed for ${name}`);\r\n }\r\n return original.apply(this, [name, constructor, options]);\r\n };\r\n });\r\n return restoreHandler;\r\n}\r\nfunction mergeHooks(o, hooks) {\r\n const { mutationCb, mousemoveCb, mouseInteractionCb, scrollCb, viewportResizeCb, inputCb, mediaInteractionCb, styleSheetRuleCb, styleDeclarationCb, canvasMutationCb, fontCb, selectionCb, customElementCb, } = o;\r\n o.mutationCb = (...p) => {\r\n if (hooks.mutation) {\r\n hooks.mutation(...p);\r\n }\r\n mutationCb(...p);\r\n };\r\n o.mousemoveCb = (...p) => {\r\n if (hooks.mousemove) {\r\n hooks.mousemove(...p);\r\n }\r\n mousemoveCb(...p);\r\n };\r\n o.mouseInteractionCb = (...p) => {\r\n if (hooks.mouseInteraction) {\r\n hooks.mouseInteraction(...p);\r\n }\r\n mouseInteractionCb(...p);\r\n };\r\n o.scrollCb = (...p) => {\r\n if (hooks.scroll) {\r\n hooks.scroll(...p);\r\n }\r\n scrollCb(...p);\r\n };\r\n o.viewportResizeCb = (...p) => {\r\n if (hooks.viewportResize) {\r\n hooks.viewportResize(...p);\r\n }\r\n viewportResizeCb(...p);\r\n };\r\n o.inputCb = (...p) => {\r\n if (hooks.input) {\r\n hooks.input(...p);\r\n }\r\n inputCb(...p);\r\n };\r\n o.mediaInteractionCb = (...p) => {\r\n if (hooks.mediaInteaction) {\r\n hooks.mediaInteaction(...p);\r\n }\r\n mediaInteractionCb(...p);\r\n };\r\n o.styleSheetRuleCb = (...p) => {\r\n if (hooks.styleSheetRule) {\r\n hooks.styleSheetRule(...p);\r\n }\r\n styleSheetRuleCb(...p);\r\n };\r\n o.styleDeclarationCb = (...p) => {\r\n if (hooks.styleDeclaration) {\r\n hooks.styleDeclaration(...p);\r\n }\r\n styleDeclarationCb(...p);\r\n };\r\n o.canvasMutationCb = (...p) => {\r\n if (hooks.canvasMutation) {\r\n hooks.canvasMutation(...p);\r\n }\r\n canvasMutationCb(...p);\r\n };\r\n o.fontCb = (...p) => {\r\n if (hooks.font) {\r\n hooks.font(...p);\r\n }\r\n fontCb(...p);\r\n };\r\n o.selectionCb = (...p) => {\r\n if (hooks.selection) {\r\n hooks.selection(...p);\r\n }\r\n selectionCb(...p);\r\n };\r\n o.customElementCb = (...c) => {\r\n if (hooks.customElement) {\r\n hooks.customElement(...c);\r\n }\r\n customElementCb(...c);\r\n };\r\n}\r\nfunction initObservers(o, hooks = {}) {\r\n const currentWindow = o.doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n };\r\n }\r\n mergeHooks(o, hooks);\r\n let mutationObserver;\r\n if (o.recordDOM) {\r\n mutationObserver = initMutationObserver(o, o.doc);\r\n }\r\n const mousemoveHandler = initMoveObserver(o);\r\n const mouseInteractionHandler = initMouseInteractionObserver(o);\r\n const scrollHandler = initScrollObserver(o);\r\n const viewportResizeHandler = initViewportResizeObserver(o, {\r\n win: currentWindow,\r\n });\r\n const inputHandler = initInputObserver(o);\r\n const mediaInteractionHandler = initMediaInteractionObserver(o);\r\n let styleSheetObserver = () => { };\r\n let adoptedStyleSheetObserver = () => { };\r\n let styleDeclarationObserver = () => { };\r\n let fontObserver = () => { };\r\n if (o.recordDOM) {\r\n styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\r\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\r\n styleDeclarationObserver = initStyleDeclarationObserver(o, {\r\n win: currentWindow,\r\n });\r\n if (o.collectFonts) {\r\n fontObserver = initFontObserver(o);\r\n }\r\n }\r\n const selectionObserver = initSelectionObserver(o);\r\n const customElementObserver = initCustomElementObserver(o);\r\n const pluginHandlers = [];\r\n for (const plugin of o.plugins) {\r\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\r\n }\r\n return callbackWrapper(() => {\r\n mutationBuffers.forEach((b) => b.reset());\r\n mutationObserver === null || mutationObserver === void 0 ? void 0 : mutationObserver.disconnect();\r\n mousemoveHandler();\r\n mouseInteractionHandler();\r\n scrollHandler();\r\n viewportResizeHandler();\r\n inputHandler();\r\n mediaInteractionHandler();\r\n styleSheetObserver();\r\n adoptedStyleSheetObserver();\r\n styleDeclarationObserver();\r\n fontObserver();\r\n selectionObserver();\r\n customElementObserver();\r\n pluginHandlers.forEach((h) => h());\r\n });\r\n}\r\nfunction hasNestedCSSRule(prop) {\r\n return typeof window[prop] !== 'undefined';\r\n}\r\nfunction canMonkeyPatchNestedCSSRule(prop) {\r\n return Boolean(typeof window[prop] !== 'undefined' &&\r\n window[prop].prototype &&\r\n 'insertRule' in window[prop].prototype &&\r\n 'deleteRule' in window[prop].prototype);\r\n}\n\nexport { INPUT_TAGS, initAdoptedStyleSheetObserver, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","class CrossOriginIframeMirror {\r\n constructor(generateIdFn) {\r\n this.generateIdFn = generateIdFn;\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n }\r\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\r\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\r\n let id = idToRemoteIdMap.get(remoteId);\r\n if (!id) {\r\n id = this.generateIdFn();\r\n idToRemoteIdMap.set(remoteId, id);\r\n remoteIdToIdMap.set(id, remoteId);\r\n }\r\n return id;\r\n }\r\n getIds(iframe, remoteId) {\r\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\r\n }\r\n getRemoteId(iframe, id, map) {\r\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\r\n if (typeof id !== 'number')\r\n return id;\r\n const remoteId = remoteIdToIdMap.get(id);\r\n if (!remoteId)\r\n return -1;\r\n return remoteId;\r\n }\r\n getRemoteIds(iframe, ids) {\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\r\n }\r\n reset(iframe) {\r\n if (!iframe) {\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n return;\r\n }\r\n this.iframeIdToRemoteIdMap.delete(iframe);\r\n this.iframeRemoteIdToIdMap.delete(iframe);\r\n }\r\n getIdToRemoteIdMap(iframe) {\r\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\r\n if (!idToRemoteIdMap) {\r\n idToRemoteIdMap = new Map();\r\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\r\n }\r\n return idToRemoteIdMap;\r\n }\r\n getRemoteIdToIdMap(iframe) {\r\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\r\n if (!remoteIdToIdMap) {\r\n remoteIdToIdMap = new Map();\r\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\r\n }\r\n return remoteIdToIdMap;\r\n }\r\n}\n\nexport { CrossOriginIframeMirror as default };\n","import { genId, NodeType } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\n\nclass IframeManager {\r\n constructor(options) {\r\n this.iframes = new WeakMap();\r\n this.crossOriginIframeMap = new WeakMap();\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.crossOriginIframeRootIdMap = new WeakMap();\r\n this.mutationCb = options.mutationCb;\r\n this.wrappedEmit = options.wrappedEmit;\r\n this.stylesheetManager = options.stylesheetManager;\r\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\r\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\r\n this.mirror = options.mirror;\r\n if (this.recordCrossOriginIframes) {\r\n window.addEventListener('message', this.handleMessage.bind(this));\r\n }\r\n }\r\n addIframe(iframeEl) {\r\n this.iframes.set(iframeEl, true);\r\n if (iframeEl.contentWindow)\r\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\r\n }\r\n addLoadListener(cb) {\r\n this.loadListener = cb;\r\n }\r\n attachIframe(iframeEl, childSn) {\r\n var _a;\r\n this.mutationCb({\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: childSn,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n });\r\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\r\n if (iframeEl.contentDocument &&\r\n iframeEl.contentDocument.adoptedStyleSheets &&\r\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\r\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\r\n }\r\n handleMessage(message) {\r\n const crossOriginMessageEvent = message;\r\n if (crossOriginMessageEvent.data.type !== 'rrweb' ||\r\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\r\n return;\r\n const iframeSourceWindow = message.source;\r\n if (!iframeSourceWindow)\r\n return;\r\n const iframeEl = this.crossOriginIframeMap.get(message.source);\r\n if (!iframeEl)\r\n return;\r\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event);\r\n if (transformedEvent)\r\n this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout);\r\n }\r\n transformCrossOriginEvent(iframeEl, e) {\r\n var _a;\r\n switch (e.type) {\r\n case EventType.FullSnapshot: {\r\n this.crossOriginIframeMirror.reset(iframeEl);\r\n this.crossOriginIframeStyleMirror.reset(iframeEl);\r\n this.replaceIdOnNode(e.data.node, iframeEl);\r\n const rootId = e.data.node.id;\r\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\r\n this.patchRootIdOnNode(e.data.node, rootId);\r\n return {\r\n timestamp: e.timestamp,\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Mutation,\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: e.data.node,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n },\r\n };\r\n }\r\n case EventType.Meta:\r\n case EventType.Load:\r\n case EventType.DomContentLoaded: {\r\n return false;\r\n }\r\n case EventType.Plugin: {\r\n return e;\r\n }\r\n case EventType.Custom: {\r\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\r\n return e;\r\n }\r\n case EventType.IncrementalSnapshot: {\r\n switch (e.data.source) {\r\n case IncrementalSource.Mutation: {\r\n e.data.adds.forEach((n) => {\r\n this.replaceIds(n, iframeEl, [\r\n 'parentId',\r\n 'nextId',\r\n 'previousId',\r\n ]);\r\n this.replaceIdOnNode(n.node, iframeEl);\r\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\r\n rootId && this.patchRootIdOnNode(n.node, rootId);\r\n });\r\n e.data.removes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\r\n });\r\n e.data.attributes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n e.data.texts.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.Drag:\r\n case IncrementalSource.TouchMove:\r\n case IncrementalSource.MouseMove: {\r\n e.data.positions.forEach((p) => {\r\n this.replaceIds(p, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.ViewportResize: {\r\n return false;\r\n }\r\n case IncrementalSource.MediaInteraction:\r\n case IncrementalSource.MouseInteraction:\r\n case IncrementalSource.Scroll:\r\n case IncrementalSource.CanvasMutation:\r\n case IncrementalSource.Input: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n return e;\r\n }\r\n case IncrementalSource.StyleSheetRule:\r\n case IncrementalSource.StyleDeclaration: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\r\n return e;\r\n }\r\n case IncrementalSource.Font: {\r\n return e;\r\n }\r\n case IncrementalSource.Selection: {\r\n e.data.ranges.forEach((range) => {\r\n this.replaceIds(range, iframeEl, ['start', 'end']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.AdoptedStyleSheet: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\r\n (_a = e.data.styles) === null || _a === void 0 ? void 0 : _a.forEach((style) => {\r\n this.replaceStyleIds(style, iframeEl, ['styleId']);\r\n });\r\n return e;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n replace(iframeMirror, obj, iframeEl, keys) {\r\n for (const key of keys) {\r\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\r\n continue;\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\r\n }\r\n else {\r\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\r\n }\r\n }\r\n return obj;\r\n }\r\n replaceIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\r\n }\r\n replaceStyleIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\r\n }\r\n replaceIdOnNode(node, iframeEl) {\r\n this.replaceIds(node, iframeEl, ['id', 'rootId']);\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.replaceIdOnNode(child, iframeEl);\r\n });\r\n }\r\n }\r\n patchRootIdOnNode(node, rootId) {\r\n if (node.type !== NodeType.Document && !node.rootId)\r\n node.rootId = rootId;\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.patchRootIdOnNode(child, rootId);\r\n });\r\n }\r\n }\r\n}\n\nexport { IframeManager };\n","import { initMutationObserver, initScrollObserver, initAdoptedStyleSheetObserver } from './observer.js';\nimport { patch, inDom } from '../utils.js';\nimport { isNativeShadowDom } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nclass ShadowDomManager {\r\n constructor(options) {\r\n this.shadowDoms = new WeakSet();\r\n this.restoreHandlers = [];\r\n this.mutationCb = options.mutationCb;\r\n this.scrollCb = options.scrollCb;\r\n this.bypassOptions = options.bypassOptions;\r\n this.mirror = options.mirror;\r\n this.init();\r\n }\r\n init() {\r\n this.reset();\r\n this.patchAttachShadow(Element, document);\r\n }\r\n addShadowRoot(shadowRoot, doc) {\r\n if (!isNativeShadowDom(shadowRoot))\r\n return;\r\n if (this.shadowDoms.has(shadowRoot))\r\n return;\r\n this.shadowDoms.add(shadowRoot);\r\n const observer = initMutationObserver(Object.assign(Object.assign({}, this.bypassOptions), { doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\r\n this.restoreHandlers.push(() => observer.disconnect());\r\n this.restoreHandlers.push(initScrollObserver(Object.assign(Object.assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror })));\r\n setTimeout(() => {\r\n if (shadowRoot.adoptedStyleSheets &&\r\n shadowRoot.adoptedStyleSheets.length > 0)\r\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\r\n this.restoreHandlers.push(initAdoptedStyleSheetObserver({\r\n mirror: this.mirror,\r\n stylesheetManager: this.bypassOptions.stylesheetManager,\r\n }, shadowRoot));\r\n }, 0);\r\n }\r\n observeAttachShadow(iframeElement) {\r\n if (!iframeElement.contentWindow || !iframeElement.contentDocument)\r\n return;\r\n this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument);\r\n }\r\n patchAttachShadow(element, doc) {\r\n const manager = this;\r\n this.restoreHandlers.push(patch(element.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot && inDom(this))\r\n manager.addShadowRoot(this.shadowRoot, doc);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n reset() {\r\n this.restoreHandlers.forEach((handler) => {\r\n try {\r\n handler();\r\n }\r\n catch (e) {\r\n }\r\n });\r\n this.restoreHandlers = [];\r\n this.shadowDoms = new WeakSet();\r\n }\r\n}\n\nexport { ShadowDomManager };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\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}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nexport { __awaiter, __rest };\n","/*\n * base64-arraybuffer 1.0.1 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n","import { encode } from './../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nconst canvasVarMap = new Map();\r\nfunction variableListFor(ctx, ctor) {\r\n let contextMap = canvasVarMap.get(ctx);\r\n if (!contextMap) {\r\n contextMap = new Map();\r\n canvasVarMap.set(ctx, contextMap);\r\n }\r\n if (!contextMap.has(ctor)) {\r\n contextMap.set(ctor, []);\r\n }\r\n return contextMap.get(ctor);\r\n}\r\nconst saveWebGLVar = (value, win, ctx) => {\r\n if (!value ||\r\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\r\n return;\r\n const name = value.constructor.name;\r\n const list = variableListFor(ctx, name);\r\n let index = list.indexOf(value);\r\n if (index === -1) {\r\n index = list.length;\r\n list.push(value);\r\n }\r\n return index;\r\n};\r\nfunction serializeArg(value, win, ctx) {\r\n if (value instanceof Array) {\r\n return value.map((arg) => serializeArg(arg, win, ctx));\r\n }\r\n else if (value === null) {\r\n return value;\r\n }\r\n else if (value instanceof Float32Array ||\r\n value instanceof Float64Array ||\r\n value instanceof Int32Array ||\r\n value instanceof Uint32Array ||\r\n value instanceof Uint8Array ||\r\n value instanceof Uint16Array ||\r\n value instanceof Int16Array ||\r\n value instanceof Int8Array ||\r\n value instanceof Uint8ClampedArray) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [Object.values(value)],\r\n };\r\n }\r\n else if (value instanceof ArrayBuffer) {\r\n const name = value.constructor.name;\r\n const base64 = encode(value);\r\n return {\r\n rr_type: name,\r\n base64,\r\n };\r\n }\r\n else if (value instanceof DataView) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [\r\n serializeArg(value.buffer, win, ctx),\r\n value.byteOffset,\r\n value.byteLength,\r\n ],\r\n };\r\n }\r\n else if (value instanceof HTMLImageElement) {\r\n const name = value.constructor.name;\r\n const { src } = value;\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof HTMLCanvasElement) {\r\n const name = 'HTMLImageElement';\r\n const src = value.toDataURL();\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof ImageData) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\r\n };\r\n }\r\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\r\n const name = value.constructor.name;\r\n const index = saveWebGLVar(value, win, ctx);\r\n return {\r\n rr_type: name,\r\n index: index,\r\n };\r\n }\r\n return value;\r\n}\r\nconst serializeArgs = (args, win, ctx) => {\r\n return args.map((arg) => serializeArg(arg, win, ctx));\r\n};\r\nconst isInstanceOfWebGLObject = (value, win) => {\r\n const webGLConstructorNames = [\r\n 'WebGLActiveInfo',\r\n 'WebGLBuffer',\r\n 'WebGLFramebuffer',\r\n 'WebGLProgram',\r\n 'WebGLRenderbuffer',\r\n 'WebGLShader',\r\n 'WebGLShaderPrecisionFormat',\r\n 'WebGLTexture',\r\n 'WebGLUniformLocation',\r\n 'WebGLVertexArrayObject',\r\n 'WebGLVertexArrayObjectOES',\r\n ];\r\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\r\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\r\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { patch, isBlocked } from '../../../utils.js';\n\nfunction getNormalizedContextName(contextType) {\r\n return contextType === 'experimental-webgl' ? 'webgl' : contextType;\r\n}\r\nfunction initCanvasContextObserver(win, blockClass, blockSelector, setPreserveDrawingBufferToTrue) {\r\n const handlers = [];\r\n try {\r\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\r\n return function (contextType, ...args) {\r\n if (!isBlocked(this, blockClass, blockSelector, true)) {\r\n const ctxName = getNormalizedContextName(contextType);\r\n if (!('__context' in this))\r\n this.__context = ctxName;\r\n if (setPreserveDrawingBufferToTrue &&\r\n ['webgl', 'webgl2'].includes(ctxName)) {\r\n if (args[0] && typeof args[0] === 'object') {\r\n const contextAttributes = args[0];\r\n if (!contextAttributes.preserveDrawingBuffer) {\r\n contextAttributes.preserveDrawingBuffer = true;\r\n }\r\n }\r\n else {\r\n args.splice(0, 1, {\r\n preserveDrawingBuffer: true,\r\n });\r\n }\r\n }\r\n }\r\n return original.apply(this, [contextType, ...args]);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasContextObserver as default };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, mirror, win) {\r\n const handlers = [];\r\n const props = Object.getOwnPropertyNames(prototype);\r\n for (const prop of props) {\r\n if ([\r\n 'isContextLost',\r\n 'canvas',\r\n 'drawingBufferWidth',\r\n 'drawingBufferHeight',\r\n ].includes(prop)) {\r\n continue;\r\n }\r\n try {\r\n if (typeof prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(prototype, prop, function (original) {\r\n return function (...args) {\r\n const result = original.apply(this, args);\r\n saveWebGLVar(result, win, this);\r\n if ('tagName' in this.canvas &&\r\n !isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n const recordArgs = serializeArgs(args, win, this);\r\n const mutation = {\r\n type,\r\n property: prop,\r\n args: recordArgs,\r\n };\r\n cb(this.canvas, mutation);\r\n }\r\n return result;\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type,\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return handlers;\r\n}\r\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, mirror) {\r\n const handlers = [];\r\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, mirror, win));\r\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\r\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, mirror, win));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasWebGLMutationObserver as default };\n","function decodeBase64(base64, enableUnicode) {\n var binaryString = atob(base64);\n if (enableUnicode) {\n var binaryView = new Uint8Array(binaryString.length);\n for (var i = 0, n = binaryString.length; i < n; ++i) {\n binaryView[i] = binaryString.charCodeAt(i);\n }\n return String.fromCharCode.apply(null, new Uint16Array(binaryView.buffer));\n }\n return binaryString;\n}\n\nfunction createURL(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n var blob = new Blob([body], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var url;\n return function WorkerFactory(options) {\n url = url || createURL(base64, sourcemapArg, enableUnicodeArg);\n return new Worker(url, options);\n };\n}\n\nexport { createBase64WorkerFactory };","import { createBase64WorkerFactory } from './_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js';\n\nvar WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgLyoKICAgICAqIGJhc2U2NC1hcnJheWJ1ZmZlciAxLjAuMSA8aHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlcj4KICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgdm9uIEhlcnR6ZW4gPGh0dHBzOi8vaGVydHplbi5jb20+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogICAgICovCiAgICB2YXIgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7CiAgICAvLyBVc2UgYSBsb29rdXAgdGFibGUgdG8gZmluZCB0aGUgaW5kZXguCiAgICB2YXIgbG9va3VwID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gW10gOiBuZXcgVWludDhBcnJheSgyNTYpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykgewogICAgICAgIGxvb2t1cFtjaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7CiAgICB9CiAgICB2YXIgZW5jb2RlID0gZnVuY3Rpb24gKGFycmF5YnVmZmVyKSB7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpLCBpLCBsZW4gPSBieXRlcy5sZW5ndGgsIGJhc2U2NCA9ICcnOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykgewogICAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaV0gPj4gMl07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTsKICAgICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpICsgMl0gJiA2M107CiAgICAgICAgfQogICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgJz0nOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJhc2U2NDsKICAgIH07CgogICAgY29uc3QgbGFzdEJsb2JNYXAgPSBuZXcgTWFwKCk7DQogICAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gbmV3IE1hcCgpOw0KICAgIGZ1bmN0aW9uIGdldFRyYW5zcGFyZW50QmxvYkZvcih3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucykgew0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICAgICAgY29uc3QgaWQgPSBgJHt3aWR0aH0tJHtoZWlnaHR9YDsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgaWYgKHRyYW5zcGFyZW50QmxvYk1hcC5oYXMoaWQpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNwYXJlbnRCbG9iTWFwLmdldChpZCk7DQogICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgICAgICAgICBvZmZzY3JlZW4uZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0geWllbGQgYmxvYi5hcnJheUJ1ZmZlcigpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7DQogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnRCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICcnOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9DQogICAgY29uc3Qgd29ya2VyID0gc2VsZjsNCiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgY29uc3QgeyBpZCwgYml0bWFwLCB3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucyB9ID0gZS5kYXRhOw0KICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zKTsNCiAgICAgICAgICAgICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoYml0bWFwLCAwLCAwKTsNCiAgICAgICAgICAgICAgICBiaXRtYXAuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBibG9iLnR5cGU7DQogICAgICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSB5aWVsZCBibG9iLmFycmF5QnVmZmVyKCk7DQogICAgICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gZW5jb2RlKGFycmF5QnVmZmVyKTsNCiAgICAgICAgICAgICAgICBpZiAoIWxhc3RCbG9iTWFwLmhhcyhpZCkgJiYgKHlpZWxkIHRyYW5zcGFyZW50QmFzZTY0KSA9PT0gYmFzZTY0KSB7DQogICAgICAgICAgICAgICAgICAgIGxhc3RCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7DQogICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgaWQsDQogICAgICAgICAgICAgICAgICAgIHR5cGUsDQogICAgICAgICAgICAgICAgICAgIGJhc2U2NCwNCiAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQogICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsKCn0pKCk7Cgo=', null, false);\n/* eslint-enable */\n\nexport { WorkerFactory as default };\n","import { createMirror, snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, nowTimestamp, on, getWindowWidth, getWindowHeight, getWindowScroll, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\nimport { IframeManager } from './iframe-manager.js';\nimport { ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManager } from './observers/canvas/canvas-manager.js';\nimport { StylesheetManager } from './stylesheet-manager.js';\nimport ProcessedNodeManager from './processed-node-manager.js';\nimport { callbackWrapper, unregisterErrorHandler, registerErrorHandler } from './error-handler.js';\n\nfunction wrapEvent(e) {\r\n return Object.assign(Object.assign({}, e), { timestamp: nowTimestamp() });\r\n}\r\nlet wrappedEmit;\r\nlet takeFullSnapshot;\r\nlet canvasManager;\r\nlet recording = false;\r\nconst mirror = createMirror();\r\nfunction record(options = {}) {\r\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, ignoreClass = 'rr-ignore', ignoreSelector = null, maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskInputFn, maskTextFn, hooks, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordDOM = true, recordCanvas = false, recordCrossOriginIframes = false, recordAfter = options.recordAfter === 'DOMContentLoaded'\r\n ? options.recordAfter\r\n : 'load', userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), errorHandler, } = options;\r\n registerErrorHandler(errorHandler);\r\n const inEmittingFrame = recordCrossOriginIframes\r\n ? window.parent === window\r\n : true;\r\n let passEmitsToParent = false;\r\n if (!inEmittingFrame) {\r\n try {\r\n if (window.parent.document) {\r\n passEmitsToParent = false;\r\n }\r\n }\r\n catch (e) {\r\n passEmitsToParent = true;\r\n }\r\n }\r\n if (inEmittingFrame && !emit) {\r\n throw new Error('emit function is required');\r\n }\r\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\r\n sampling.mousemove = mousemoveWait;\r\n }\r\n mirror.reset();\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : _maskInputOptions !== undefined\r\n ? _maskInputOptions\r\n : { password: true };\r\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\r\n ? {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaVerification: true,\r\n headMetaAuthorship: _slimDOMOptions === 'all',\r\n headMetaDescKeywords: _slimDOMOptions === 'all',\r\n }\r\n : _slimDOMOptions\r\n ? _slimDOMOptions\r\n : {};\r\n polyfill();\r\n let lastFullSnapshotEvent;\r\n let incrementalSnapshotCount = 0;\r\n const eventProcessor = (e) => {\r\n for (const plugin of plugins || []) {\r\n if (plugin.eventProcessor) {\r\n e = plugin.eventProcessor(e);\r\n }\r\n }\r\n if (packFn &&\r\n !passEmitsToParent) {\r\n e = packFn(e);\r\n }\r\n return e;\r\n };\r\n wrappedEmit = (e, isCheckout) => {\r\n var _a;\r\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\r\n e.type !== EventType.FullSnapshot &&\r\n !(e.type === EventType.IncrementalSnapshot &&\r\n e.data.source === IncrementalSource.Mutation)) {\r\n mutationBuffers.forEach((buf) => buf.unfreeze());\r\n }\r\n if (inEmittingFrame) {\r\n emit === null || emit === void 0 ? void 0 : emit(eventProcessor(e), isCheckout);\r\n }\r\n else if (passEmitsToParent) {\r\n const message = {\r\n type: 'rrweb',\r\n event: eventProcessor(e),\r\n origin: window.location.origin,\r\n isCheckout,\r\n };\r\n window.parent.postMessage(message, '*');\r\n }\r\n if (e.type === EventType.FullSnapshot) {\r\n lastFullSnapshotEvent = e;\r\n incrementalSnapshotCount = 0;\r\n }\r\n else if (e.type === EventType.IncrementalSnapshot) {\r\n if (e.data.source === IncrementalSource.Mutation &&\r\n e.data.isAttachIframe) {\r\n return;\r\n }\r\n incrementalSnapshotCount++;\r\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\r\n const exceedTime = checkoutEveryNms &&\r\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\r\n if (exceedCount || exceedTime) {\r\n takeFullSnapshot(true);\r\n }\r\n }\r\n };\r\n const wrappedMutationEmit = (m) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Mutation }, m),\r\n }));\r\n };\r\n const wrappedScrollEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Scroll }, p),\r\n }));\r\n const wrappedCanvasMutationEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.CanvasMutation }, p),\r\n }));\r\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.AdoptedStyleSheet }, a),\r\n }));\r\n const stylesheetManager = new StylesheetManager({\r\n mutationCb: wrappedMutationEmit,\r\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\r\n });\r\n const iframeManager = new IframeManager({\r\n mirror,\r\n mutationCb: wrappedMutationEmit,\r\n stylesheetManager: stylesheetManager,\r\n recordCrossOriginIframes,\r\n wrappedEmit,\r\n });\r\n for (const plugin of plugins || []) {\r\n if (plugin.getMirror)\r\n plugin.getMirror({\r\n nodeMirror: mirror,\r\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\r\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\r\n });\r\n }\r\n const processedNodeManager = new ProcessedNodeManager();\r\n canvasManager = new CanvasManager({\r\n recordCanvas,\r\n mutationCb: wrappedCanvasMutationEmit,\r\n win: window,\r\n blockClass,\r\n blockSelector,\r\n mirror,\r\n sampling: sampling.canvas,\r\n dataURLOptions,\r\n });\r\n const shadowDomManager = new ShadowDomManager({\r\n mutationCb: wrappedMutationEmit,\r\n scrollCb: wrappedScrollEmit,\r\n bypassOptions: {\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n dataURLOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n recordCanvas,\r\n inlineImages,\r\n sampling,\r\n slimDOMOptions,\r\n iframeManager,\r\n stylesheetManager,\r\n canvasManager,\r\n keepIframeSrcFn,\r\n processedNodeManager,\r\n },\r\n mirror,\r\n });\r\n takeFullSnapshot = (isCheckout = false) => {\r\n if (!recordDOM) {\r\n return;\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Meta,\r\n data: {\r\n href: window.location.href,\r\n width: getWindowWidth(),\r\n height: getWindowHeight(),\r\n },\r\n }), isCheckout);\r\n stylesheetManager.reset();\r\n shadowDomManager.init();\r\n mutationBuffers.forEach((buf) => buf.lock());\r\n const node = snapshot(document, {\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskAllInputs: maskInputOptions,\r\n maskTextFn,\r\n slimDOM: slimDOMOptions,\r\n dataURLOptions,\r\n recordCanvas,\r\n inlineImages,\r\n onSerialize: (n) => {\r\n if (isSerializedIframe(n, mirror)) {\r\n iframeManager.addIframe(n);\r\n }\r\n if (isSerializedStylesheet(n, mirror)) {\r\n stylesheetManager.trackLinkElement(n);\r\n }\r\n if (hasShadowRoot(n)) {\r\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n iframeManager.attachIframe(iframe, childSn);\r\n shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (linkEl, childSn) => {\r\n stylesheetManager.attachLinkElement(linkEl, childSn);\r\n },\r\n keepIframeSrcFn,\r\n });\r\n if (!node) {\r\n return console.warn('Failed to snapshot the document');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.FullSnapshot,\r\n data: {\r\n node,\r\n initialOffset: getWindowScroll(window),\r\n },\r\n }), isCheckout);\r\n mutationBuffers.forEach((buf) => buf.unlock());\r\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\r\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\r\n };\r\n try {\r\n const handlers = [];\r\n const observe = (doc) => {\r\n var _a;\r\n return callbackWrapper(initObservers)({\r\n mutationCb: wrappedMutationEmit,\r\n mousemoveCb: (positions, source) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source,\r\n positions,\r\n },\r\n })),\r\n mouseInteractionCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MouseInteraction }, d),\r\n })),\r\n scrollCb: wrappedScrollEmit,\r\n viewportResizeCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.ViewportResize }, d),\r\n })),\r\n inputCb: (v) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Input }, v),\r\n })),\r\n mediaInteractionCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MediaInteraction }, p),\r\n })),\r\n styleSheetRuleCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleSheetRule }, r),\r\n })),\r\n styleDeclarationCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleDeclaration }, r),\r\n })),\r\n canvasMutationCb: wrappedCanvasMutationEmit,\r\n fontCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Font }, p),\r\n })),\r\n selectionCb: (p) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Selection }, p),\r\n }));\r\n },\r\n customElementCb: (c) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.CustomElement }, c),\r\n }));\r\n },\r\n blockClass,\r\n ignoreClass,\r\n ignoreSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n maskInputOptions,\r\n inlineStylesheet,\r\n sampling,\r\n recordDOM,\r\n recordCanvas,\r\n inlineImages,\r\n userTriggeredOnInput,\r\n collectFonts,\r\n doc,\r\n maskInputFn,\r\n maskTextFn,\r\n keepIframeSrcFn,\r\n blockSelector,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n mirror,\r\n iframeManager,\r\n stylesheetManager,\r\n shadowDomManager,\r\n processedNodeManager,\r\n canvasManager,\r\n ignoreCSSAttributes,\r\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter((p) => p.observer)) === null || _a === void 0 ? void 0 : _a.map((p) => ({\r\n observer: p.observer,\r\n options: p.options,\r\n callback: (payload) => wrappedEmit(wrapEvent({\r\n type: EventType.Plugin,\r\n data: {\r\n plugin: p.name,\r\n payload,\r\n },\r\n })),\r\n }))) || [],\r\n }, hooks);\r\n };\r\n iframeManager.addLoadListener((iframeEl) => {\r\n try {\r\n handlers.push(observe(iframeEl.contentDocument));\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n });\r\n const init = () => {\r\n takeFullSnapshot();\r\n handlers.push(observe(document));\r\n recording = true;\r\n };\r\n if (document.readyState === 'interactive' ||\r\n document.readyState === 'complete') {\r\n init();\r\n }\r\n else {\r\n handlers.push(on('DOMContentLoaded', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.DomContentLoaded,\r\n data: {},\r\n }));\r\n if (recordAfter === 'DOMContentLoaded')\r\n init();\r\n }));\r\n handlers.push(on('load', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Load,\r\n data: {},\r\n }));\r\n if (recordAfter === 'load')\r\n init();\r\n }, window));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n processedNodeManager.destroy();\r\n recording = false;\r\n unregisterErrorHandler();\r\n };\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n}\r\nrecord.addCustomEvent = (tag, payload) => {\r\n if (!recording) {\r\n throw new Error('please add custom event after start recording');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Custom,\r\n data: {\r\n tag,\r\n payload,\r\n },\r\n }));\r\n};\r\nrecord.freezePage = () => {\r\n mutationBuffers.forEach((buf) => buf.freeze());\r\n};\r\nrecord.takeFullSnapshot = (isCheckout) => {\r\n if (!recording) {\r\n throw new Error('please take full snapshot after start recording');\r\n }\r\n takeFullSnapshot(isCheckout);\r\n};\r\nrecord.mirror = mirror;\n\nexport { record as default };\n","import { __rest, __awaiter } from './../../../../../../ext/tslib/tslib.es6.js';\nimport { isBlocked } from '../../../utils.js';\nimport { CanvasContext } from '../../../../../types/dist/types.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\nimport WorkerFactory from '../../../../../../_virtual/image-bitmap-data-url-worker.js';\n\nclass CanvasManager {\r\n reset() {\r\n this.pendingCanvasMutations.clear();\r\n this.resetObservers && this.resetObservers();\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n }\r\n lock() {\r\n this.locked = true;\r\n }\r\n unlock() {\r\n this.locked = false;\r\n }\r\n constructor(options) {\r\n this.pendingCanvasMutations = new Map();\r\n this.rafStamps = { latestId: 0, invokeId: null };\r\n this.frozen = false;\r\n this.locked = false;\r\n this.processMutation = (target, mutation) => {\r\n const newFrame = this.rafStamps.invokeId &&\r\n this.rafStamps.latestId !== this.rafStamps.invokeId;\r\n if (newFrame || !this.rafStamps.invokeId)\r\n this.rafStamps.invokeId = this.rafStamps.latestId;\r\n if (!this.pendingCanvasMutations.has(target)) {\r\n this.pendingCanvasMutations.set(target, []);\r\n }\r\n this.pendingCanvasMutations.get(target).push(mutation);\r\n };\r\n const { sampling = 'all', win, blockClass, blockSelector, recordCanvas, dataURLOptions, } = options;\r\n this.mutationCb = options.mutationCb;\r\n this.mirror = options.mirror;\r\n if (recordCanvas && sampling === 'all')\r\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\r\n if (recordCanvas && typeof sampling === 'number')\r\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\r\n dataURLOptions,\r\n });\r\n }\r\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, true);\r\n const snapshotInProgressMap = new Map();\r\n const worker = new WorkerFactory();\r\n worker.onmessage = (e) => {\r\n const { id } = e.data;\r\n snapshotInProgressMap.set(id, false);\r\n if (!('base64' in e.data))\r\n return;\r\n const { base64, type, width, height } = e.data;\r\n this.mutationCb({\r\n id,\r\n type: CanvasContext['2D'],\r\n commands: [\r\n {\r\n property: 'clearRect',\r\n args: [0, 0, width, height],\r\n },\r\n {\r\n property: 'drawImage',\r\n args: [\r\n {\r\n rr_type: 'ImageBitmap',\r\n args: [\r\n {\r\n rr_type: 'Blob',\r\n data: [{ rr_type: 'ArrayBuffer', base64 }],\r\n type,\r\n },\r\n ],\r\n },\r\n 0,\r\n 0,\r\n ],\r\n },\r\n ],\r\n });\r\n };\r\n const timeBetweenSnapshots = 1000 / fps;\r\n let lastSnapshotTime = 0;\r\n let rafId;\r\n const getCanvas = () => {\r\n const matchedCanvas = [];\r\n\r\n const searchCanvas = (root) => {\r\n root.querySelectorAll('canvas').forEach((canvas) => {\r\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\r\n matchedCanvas.push(canvas);\r\n }\r\n });\r\n root.querySelectorAll('*').forEach((elem) => {\r\n if (elem.shadowRoot) {\r\n searchCanvas(elem.shadowRoot);\r\n }\r\n });\r\n };\r\n \r\n searchCanvas(win.document);\r\n return matchedCanvas;\r\n };\r\n const takeCanvasSnapshots = (timestamp) => {\r\n if (lastSnapshotTime &&\r\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n return;\r\n }\r\n lastSnapshotTime = timestamp;\r\n getCanvas()\r\n .forEach((canvas) => __awaiter(this, void 0, void 0, function* () {\r\n var _a;\r\n const id = this.mirror.getId(canvas);\r\n if (snapshotInProgressMap.get(id))\r\n return;\r\n if (canvas.width === 0 || canvas.height === 0)\r\n return;\r\n snapshotInProgressMap.set(id, true);\r\n if (['webgl', 'webgl2'].includes(canvas.__context)) {\r\n const context = canvas.getContext(canvas.__context);\r\n if (((_a = context === null || context === void 0 ? void 0 : context.getContextAttributes()) === null || _a === void 0 ? void 0 : _a.preserveDrawingBuffer) === false) {\r\n context.clear(context.COLOR_BUFFER_BIT);\r\n }\r\n }\r\n\r\n // createImageBitmap throws if resizing to 0\r\n // Fallback to intrinsic size if canvas has not yet rendered\r\n const width = canvas.clientWidth || canvas.width;\r\n const height = canvas.clientHeight || canvas.height;\r\n\r\n const bitmap = yield createImageBitmap(canvas, {\r\n resizeWidth: width,\r\n resizeHeight: height\r\n })\r\n\r\n worker.postMessage({\r\n id,\r\n bitmap,\r\n width: width,\r\n height: height,\r\n dataURLOptions: options.dataURLOptions,\r\n }, [bitmap]);\r\n }));\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n };\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n initCanvasMutationObserver(win, blockClass, blockSelector) {\r\n this.startRAFTimestamping();\r\n this.startPendingCanvasMutationFlusher();\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, false);\r\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\r\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, this.mirror);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n canvas2DReset();\r\n canvasWebGL1and2Reset();\r\n };\r\n }\r\n startPendingCanvasMutationFlusher() {\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n startRAFTimestamping() {\r\n const setLatestRAFTimestamp = (timestamp) => {\r\n this.rafStamps.latestId = timestamp;\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n };\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n }\r\n flushPendingCanvasMutations() {\r\n this.pendingCanvasMutations.forEach((values, canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n this.flushPendingCanvasMutationFor(canvas, id);\r\n });\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n flushPendingCanvasMutationFor(canvas, id) {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\r\n if (!valuesWithType || id === -1)\r\n return;\r\n const values = valuesWithType.map((value) => {\r\n const rest = __rest(value, [\"type\"]);\r\n return rest;\r\n });\r\n const { type } = valuesWithType[0];\r\n this.mutationCb({ id, type, commands: values });\r\n this.pendingCanvasMutations.delete(canvas);\r\n }\r\n}\n\nexport { CanvasManager };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { serializeArgs } from './serialize-args.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\r\n const handlers = [];\r\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\r\n for (const prop of props2D) {\r\n try {\r\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\r\n return function (...args) {\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n setTimeout(() => {\r\n const recordArgs = serializeArgs(args, win, this);\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: recordArgs,\r\n });\r\n }, 0);\r\n }\r\n return original.apply(this, args);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvas2DMutationObserver as default };\n","import { stringifyRule } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { StyleSheetMirror } from '../utils.js';\n\nclass StylesheetManager {\r\n constructor(options) {\r\n this.trackedLinkElements = new WeakSet();\r\n this.styleMirror = new StyleSheetMirror();\r\n this.mutationCb = options.mutationCb;\r\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\r\n }\r\n attachLinkElement(linkEl, childSn) {\r\n if ('_cssText' in childSn.attributes)\r\n this.mutationCb({\r\n adds: [],\r\n removes: [],\r\n texts: [],\r\n attributes: [\r\n {\r\n id: childSn.id,\r\n attributes: childSn\r\n .attributes,\r\n },\r\n ],\r\n });\r\n this.trackLinkElement(linkEl);\r\n }\r\n trackLinkElement(linkEl) {\r\n if (this.trackedLinkElements.has(linkEl))\r\n return;\r\n this.trackedLinkElements.add(linkEl);\r\n this.trackStylesheetInLinkElement(linkEl);\r\n }\r\n adoptStyleSheets(sheets, hostId) {\r\n if (sheets.length === 0)\r\n return;\r\n const adoptedStyleSheetData = {\r\n id: hostId,\r\n styleIds: [],\r\n };\r\n const styles = [];\r\n for (const sheet of sheets) {\r\n let styleId;\r\n if (!this.styleMirror.has(sheet)) {\r\n styleId = this.styleMirror.add(sheet);\r\n styles.push({\r\n styleId,\r\n rules: Array.from(sheet.rules || CSSRule, (r, index) => ({\r\n rule: stringifyRule(r),\r\n index,\r\n })),\r\n });\r\n }\r\n else\r\n styleId = this.styleMirror.getId(sheet);\r\n adoptedStyleSheetData.styleIds.push(styleId);\r\n }\r\n if (styles.length > 0)\r\n adoptedStyleSheetData.styles = styles;\r\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\r\n }\r\n reset() {\r\n this.styleMirror.reset();\r\n this.trackedLinkElements = new WeakSet();\r\n }\r\n trackStylesheetInLinkElement(linkEl) {\r\n }\r\n}\n\nexport { StylesheetManager };\n","class ProcessedNodeManager {\r\n constructor() {\r\n this.nodeMap = new WeakMap();\r\n this.loop = true;\r\n this.periodicallyClear();\r\n }\r\n periodicallyClear() {\r\n requestAnimationFrame(() => {\r\n this.clear();\r\n if (this.loop)\r\n this.periodicallyClear();\r\n });\r\n }\r\n inOtherBuffer(node, thisBuffer) {\r\n const buffers = this.nodeMap.get(node);\r\n return (buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer));\r\n }\r\n add(node, buffer) {\r\n this.nodeMap.set(node, (this.nodeMap.get(node) || new Set()).add(buffer));\r\n }\r\n clear() {\r\n this.nodeMap = new WeakMap();\r\n }\r\n destroy() {\r\n this.loop = false;\r\n }\r\n}\n\nexport { ProcessedNodeManager as default };\n","class StackFrame {\r\n constructor(obj) {\r\n this.fileName = obj.fileName || '';\r\n this.functionName = obj.functionName || '';\r\n this.lineNumber = obj.lineNumber;\r\n this.columnNumber = obj.columnNumber;\r\n }\r\n toString() {\r\n const lineNumber = this.lineNumber || '';\r\n const columnNumber = this.columnNumber || '';\r\n if (this.functionName)\r\n return `${this.functionName} (${this.fileName}:${lineNumber}:${columnNumber})`;\r\n return `${this.fileName}:${lineNumber}:${columnNumber}`;\r\n }\r\n}\r\nconst FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\r\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\r\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\r\nconst ErrorStackParser = {\r\n parse: function (error) {\r\n if (!error) {\r\n return [];\r\n }\r\n if (typeof error.stacktrace !== 'undefined' ||\r\n typeof error['opera#sourceloc'] !== 'undefined') {\r\n return this.parseOpera(error);\r\n }\r\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\r\n return this.parseV8OrIE(error);\r\n }\r\n else if (error.stack) {\r\n return this.parseFFOrSafari(error);\r\n }\r\n else {\r\n console.warn('[console-record-plugin]: Failed to parse error object:', error);\r\n return [];\r\n }\r\n },\r\n extractLocation: function (urlLike) {\r\n if (urlLike.indexOf(':') === -1) {\r\n return [urlLike];\r\n }\r\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\r\n const parts = regExp.exec(urlLike.replace(/[()]/g, ''));\r\n if (!parts)\r\n throw new Error(`Cannot parse given url: ${urlLike}`);\r\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\r\n },\r\n parseV8OrIE: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return !!line.match(CHROME_IE_STACK_REGEXP);\r\n }, this);\r\n return filtered.map(function (line) {\r\n if (line.indexOf('(eval ') > -1) {\r\n line = line\r\n .replace(/eval code/g, 'eval')\r\n .replace(/(\\(eval at [^()]*)|(\\),.*$)/g, '');\r\n }\r\n let sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\r\n const location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\r\n sanitizedLine = location\r\n ? sanitizedLine.replace(location[0], '')\r\n : sanitizedLine;\r\n const tokens = sanitizedLine.split(/\\s+/).slice(1);\r\n const locationParts = this.extractLocation(location ? location[1] : tokens.pop());\r\n const functionName = tokens.join(' ') || undefined;\r\n const fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1\r\n ? undefined\r\n : locationParts[0];\r\n return new StackFrame({\r\n functionName,\r\n fileName,\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }, this);\r\n },\r\n parseFFOrSafari: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\r\n }, this);\r\n return filtered.map(function (line) {\r\n if (line.indexOf(' > eval') > -1) {\r\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\r\n }\r\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\r\n return new StackFrame({\r\n functionName: line,\r\n });\r\n }\r\n else {\r\n const functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\r\n const matches = line.match(functionNameRegex);\r\n const functionName = matches && matches[1] ? matches[1] : undefined;\r\n const locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\r\n return new StackFrame({\r\n functionName,\r\n fileName: locationParts[0],\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }\r\n }, this);\r\n },\r\n parseOpera: function (e) {\r\n if (!e.stacktrace ||\r\n (e.message.indexOf('\\n') > -1 &&\r\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\r\n return this.parseOpera9(e);\r\n }\r\n else if (!e.stack) {\r\n return this.parseOpera10(e);\r\n }\r\n else {\r\n return this.parseOpera11(e);\r\n }\r\n },\r\n parseOpera9: function (e) {\r\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\r\n const lines = e.message.split('\\n');\r\n const result = [];\r\n for (let i = 2, len = lines.length; i < len; i += 2) {\r\n const match = lineRE.exec(lines[i]);\r\n if (match) {\r\n result.push(new StackFrame({\r\n fileName: match[2],\r\n lineNumber: parseFloat(match[1]),\r\n }));\r\n }\r\n }\r\n return result;\r\n },\r\n parseOpera10: function (e) {\r\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\r\n const lines = e.stacktrace.split('\\n');\r\n const result = [];\r\n for (let i = 0, len = lines.length; i < len; i += 2) {\r\n const match = lineRE.exec(lines[i]);\r\n if (match) {\r\n result.push(new StackFrame({\r\n functionName: match[3] || undefined,\r\n fileName: match[2],\r\n lineNumber: parseFloat(match[1]),\r\n }));\r\n }\r\n }\r\n return result;\r\n },\r\n parseOpera11: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return (!!line.match(FIREFOX_SAFARI_STACK_REGEXP) &&\r\n !line.match(/^Error created at/));\r\n }, this);\r\n return filtered.map(function (line) {\r\n const tokens = line.split('@');\r\n const locationParts = this.extractLocation(tokens.pop());\r\n const functionCall = tokens.shift() || '';\r\n const functionName = functionCall\r\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\r\n .replace(/\\([^)]*\\)/g, '') || undefined;\r\n return new StackFrame({\r\n functionName,\r\n fileName: locationParts[0],\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }, this);\r\n },\r\n};\n\nexport { ErrorStackParser, StackFrame };\n","function pathToSelector(node) {\r\n if (!node || !node.outerHTML) {\r\n return '';\r\n }\r\n let path = '';\r\n while (node.parentElement) {\r\n let name = node.localName;\r\n if (!name) {\r\n break;\r\n }\r\n name = name.toLowerCase();\r\n const parent = node.parentElement;\r\n const domSiblings = [];\r\n if (parent.children && parent.children.length > 0) {\r\n for (let i = 0; i < parent.children.length; i++) {\r\n const sibling = parent.children[i];\r\n if (sibling.localName && sibling.localName.toLowerCase) {\r\n if (sibling.localName.toLowerCase() === name) {\r\n domSiblings.push(sibling);\r\n }\r\n }\r\n }\r\n }\r\n if (domSiblings.length > 1) {\r\n name += `:eq(${domSiblings.indexOf(node)})`;\r\n }\r\n path = name + (path ? '>' + path : '');\r\n node = parent;\r\n }\r\n return path;\r\n}\r\nfunction isObject(obj) {\r\n return Object.prototype.toString.call(obj) === '[object Object]';\r\n}\r\nfunction isObjTooDeep(obj, limit) {\r\n if (limit === 0) {\r\n return true;\r\n }\r\n const keys = Object.keys(obj);\r\n for (const key of keys) {\r\n if (isObject(obj[key]) &&\r\n isObjTooDeep(obj[key], limit - 1)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction stringify(obj, stringifyOptions) {\r\n const options = {\r\n numOfKeysLimit: 50,\r\n depthOfLimit: 4,\r\n };\r\n Object.assign(options, stringifyOptions);\r\n const stack = [];\r\n const keys = [];\r\n return JSON.stringify(obj, function (key, value) {\r\n if (stack.length > 0) {\r\n const thisPos = stack.indexOf(this);\r\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\r\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\r\n if (~stack.indexOf(value)) {\r\n if (stack[0] === value) {\r\n value = '[Circular ~]';\r\n }\r\n else {\r\n value =\r\n '[Circular ~.' +\r\n keys.slice(0, stack.indexOf(value)).join('.') +\r\n ']';\r\n }\r\n }\r\n }\r\n else {\r\n stack.push(value);\r\n }\r\n if (value === null)\r\n return value;\r\n if (value === undefined)\r\n return 'undefined';\r\n if (shouldIgnore(value)) {\r\n return toString(value);\r\n }\r\n if (typeof value === 'bigint') {\r\n return value.toString() + 'n';\r\n }\r\n if (value instanceof Event) {\r\n const eventResult = {};\r\n for (const eventKey in value) {\r\n const eventValue = value[eventKey];\r\n if (Array.isArray(eventValue)) {\r\n eventResult[eventKey] = pathToSelector((eventValue.length ? eventValue[0] : null));\r\n }\r\n else {\r\n eventResult[eventKey] = eventValue;\r\n }\r\n }\r\n return eventResult;\r\n }\r\n else if (value instanceof Node) {\r\n if (value instanceof HTMLElement) {\r\n return value ? value.outerHTML : '';\r\n }\r\n return value.nodeName;\r\n }\r\n else if (value instanceof Error) {\r\n return value.stack\r\n ? value.stack + '\\nEnd of stack for Error object'\r\n : value.name + ': ' + value.message;\r\n }\r\n return value;\r\n });\r\n function shouldIgnore(_obj) {\r\n if (isObject(_obj) && Object.keys(_obj).length > options.numOfKeysLimit) {\r\n return true;\r\n }\r\n if (typeof _obj === 'function') {\r\n return true;\r\n }\r\n if (isObject(_obj) &&\r\n isObjTooDeep(_obj, options.depthOfLimit)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n function toString(_obj) {\r\n let str = _obj.toString();\r\n if (options.stringLengthLimit && str.length > options.stringLengthLimit) {\r\n str = `${str.slice(0, options.stringLengthLimit)}...`;\r\n }\r\n return str;\r\n }\r\n}\n\nexport { stringify };\n","import { patch } from '../../../utils.js';\nimport { ErrorStackParser } from './error-stack-parser.js';\nimport { stringify } from './stringify.js';\n\nconst defaultLogOptions = {\r\n level: [\r\n 'assert',\r\n 'clear',\r\n 'count',\r\n 'countReset',\r\n 'debug',\r\n 'dir',\r\n 'dirxml',\r\n 'error',\r\n 'group',\r\n 'groupCollapsed',\r\n 'groupEnd',\r\n 'info',\r\n 'log',\r\n 'table',\r\n 'time',\r\n 'timeEnd',\r\n 'timeLog',\r\n 'trace',\r\n 'warn',\r\n ],\r\n lengthThreshold: 1000,\r\n logger: 'console',\r\n};\r\nfunction initLogObserver(cb, win, options) {\r\n const logOptions = (options ? Object.assign({}, defaultLogOptions, options) : defaultLogOptions);\r\n const loggerType = logOptions.logger;\r\n if (!loggerType) {\r\n return () => {\r\n };\r\n }\r\n let logger;\r\n if (typeof loggerType === 'string') {\r\n logger = win[loggerType];\r\n }\r\n else {\r\n logger = loggerType;\r\n }\r\n let logCount = 0;\r\n let inStack = false;\r\n const cancelHandlers = [];\r\n if (logOptions.level.includes('error')) {\r\n const errorHandler = (event) => {\r\n const message = event.message, error = event.error;\r\n const trace = ErrorStackParser.parse(error).map((stackFrame) => stackFrame.toString());\r\n const payload = [stringify(message, logOptions.stringifyOptions)];\r\n cb({\r\n level: 'error',\r\n trace,\r\n payload,\r\n });\r\n };\r\n win.addEventListener('error', errorHandler);\r\n cancelHandlers.push(() => {\r\n win.removeEventListener('error', errorHandler);\r\n });\r\n const unhandledrejectionHandler = (event) => {\r\n let error;\r\n let payload;\r\n if (event.reason instanceof Error) {\r\n error = event.reason;\r\n payload = [\r\n stringify(`Uncaught (in promise) ${error.name}: ${error.message}`, logOptions.stringifyOptions),\r\n ];\r\n }\r\n else {\r\n error = new Error();\r\n payload = [\r\n stringify('Uncaught (in promise)', logOptions.stringifyOptions),\r\n stringify(event.reason, logOptions.stringifyOptions),\r\n ];\r\n }\r\n const trace = ErrorStackParser.parse(error).map((stackFrame) => stackFrame.toString());\r\n cb({\r\n level: 'error',\r\n trace,\r\n payload,\r\n });\r\n };\r\n win.addEventListener('unhandledrejection', unhandledrejectionHandler);\r\n cancelHandlers.push(() => {\r\n win.removeEventListener('unhandledrejection', unhandledrejectionHandler);\r\n });\r\n }\r\n for (const levelType of logOptions.level) {\r\n cancelHandlers.push(replace(logger, levelType));\r\n }\r\n return () => {\r\n cancelHandlers.forEach((h) => h());\r\n };\r\n function replace(_logger, level) {\r\n if (!_logger[level]) {\r\n return () => {\r\n };\r\n }\r\n return patch(_logger, level, (original) => {\r\n return (...args) => {\r\n original.apply(this, args);\r\n if (inStack) {\r\n return;\r\n }\r\n inStack = true;\r\n try {\r\n const trace = ErrorStackParser.parse(new Error())\r\n .map((stackFrame) => stackFrame.toString())\r\n .splice(1);\r\n const payload = args.map((s) => stringify(s, logOptions.stringifyOptions));\r\n logCount++;\r\n if (logCount < logOptions.lengthThreshold) {\r\n cb({\r\n level,\r\n trace,\r\n payload,\r\n });\r\n }\r\n else if (logCount === logOptions.lengthThreshold) {\r\n cb({\r\n level: 'warn',\r\n trace: [],\r\n payload: [\r\n stringify('The number of log records reached the threshold.'),\r\n ],\r\n });\r\n }\r\n }\r\n catch (error) {\r\n original('rrweb logger error:', error, ...args);\r\n }\r\n finally {\r\n inStack = false;\r\n }\r\n };\r\n });\r\n }\r\n}\r\nconst PLUGIN_NAME = 'rrweb/console@1';\r\nconst getRecordConsolePlugin = (options) => ({\r\n name: PLUGIN_NAME,\r\n observer: initLogObserver,\r\n options: options,\r\n});\n\nexport { PLUGIN_NAME, getRecordConsolePlugin };\n","// eslint-disable-next-line posthog-js/no-direct-array-check\nconst nativeIsArray = Array.isArray\nconst ObjProto = Object.prototype\nexport const hasOwnProperty = ObjProto.hasOwnProperty\nconst toString = ObjProto.toString\n\nexport const isArray =\n nativeIsArray ||\n function (obj: any): obj is any[] {\n return toString.call(obj) === '[object Array]'\n }\nexport const isUint8Array = function (x: unknown): x is Uint8Array {\n return toString.call(x) === '[object Uint8Array]'\n}\n// from a comment on http://dbj.org/dbj/?p=286\n// fails on only one very rare and deliberate custom object:\n// let bomb = { toString : undefined, valueOf: function(o) { return \"function BOMBA!\"; }};\nexport const isFunction = function (f: any): f is (...args: any[]) => any {\n // eslint-disable-next-line posthog-js/no-direct-function-check\n return typeof f === 'function'\n}\n// Underscore Addons\nexport const isObject = function (x: unknown): x is Record<string, any> {\n // eslint-disable-next-line posthog-js/no-direct-object-check\n return x === Object(x) && !isArray(x)\n}\nexport const isEmptyObject = function (x: unknown): x is Record<string, any> {\n if (isObject(x)) {\n for (const key in x) {\n if (hasOwnProperty.call(x, key)) {\n return false\n }\n }\n return true\n }\n return false\n}\nexport const isUndefined = function (x: unknown): x is undefined {\n return x === void 0\n}\n\nexport const isString = function (x: unknown): x is string {\n // eslint-disable-next-line posthog-js/no-direct-string-check\n return toString.call(x) == '[object String]'\n}\n\nexport const isEmptyString = function (x: unknown): boolean {\n return isString(x) && x.trim().length === 0\n}\n\nexport const isNull = function (x: unknown): x is null {\n // eslint-disable-next-line posthog-js/no-direct-null-check\n return x === null\n}\n\n/*\n sometimes you want to check if something is null or undefined\n that's what this is for\n */\nexport const isNullish = function (x: unknown): x is null | undefined {\n return isUndefined(x) || isNull(x)\n}\n\nexport const isDate = function (x: unknown): x is Date {\n // eslint-disable-next-line posthog-js/no-direct-date-check\n return toString.call(x) == '[object Date]'\n}\nexport const isNumber = function (x: unknown): x is number {\n // eslint-disable-next-line posthog-js/no-direct-number-check\n return toString.call(x) == '[object Number]'\n}\nexport const isBoolean = function (x: unknown): x is boolean {\n // eslint-disable-next-line posthog-js/no-direct-boolean-check\n return toString.call(x) === '[object Boolean]'\n}\n\nexport const isDocument = (x: unknown): x is Document => {\n // eslint-disable-next-line posthog-js/no-direct-document-check\n return x instanceof Document\n}\n\nexport const isFormData = (x: unknown): x is FormData => {\n // eslint-disable-next-line posthog-js/no-direct-form-data-check\n return x instanceof FormData\n}\n\nexport const isFile = (x: unknown): x is File => {\n // eslint-disable-next-line posthog-js/no-direct-file-check\n return x instanceof File\n}\n","/*\n * Global helpers to protect access to browser globals in a way that is safer for different targets\n * like DOM, SSR, Web workers etc.\n *\n * NOTE: Typically we want the \"window\" but globalThis works for both the typical browser context as\n * well as other contexts such as the web worker context. Window is still exported for any bits that explicitly require it.\n * If in doubt - export the global you need from this file and use that as an optional value. This way the code path is forced\n * to handle the case where the global is not available.\n */\n\n// eslint-disable-next-line no-restricted-globals\nconst win: (Window & typeof globalThis) | undefined = typeof window !== 'undefined' ? window : undefined\n\nconst global: typeof globalThis | undefined = typeof globalThis !== 'undefined' ? globalThis : win\n\nexport const ArrayProto = Array.prototype\nexport const nativeForEach = ArrayProto.forEach\nexport const nativeIndexOf = ArrayProto.indexOf\n\nexport const navigator = global?.navigator\nexport const document = global?.document\nexport const location = global?.location\nexport const fetch = global?.fetch\nexport const XMLHttpRequest =\n global?.XMLHttpRequest && 'withCredentials' in new global.XMLHttpRequest() ? global.XMLHttpRequest : undefined\nexport const AbortController = global?.AbortController\nexport const userAgent = navigator?.userAgent\nexport const assignableWindow: Window & typeof globalThis & Record<string, any> = win ?? ({} as any)\n\nexport { win as window }\n","import Config from '../config'\nimport { isUndefined } from './type-utils'\nimport { assignableWindow, window } from './globals'\n\nconst LOGGER_PREFIX = '[PostHog.js]'\nexport const logger = {\n _log: (level: 'log' | 'warn' | 'error', ...args: any[]) => {\n if (\n window &&\n (Config.DEBUG || assignableWindow.POSTHOG_DEBUG) &&\n !isUndefined(window.console) &&\n window.console\n ) {\n const consoleLog =\n '__rrweb_original__' in window.console[level]\n ? (window.console[level] as any)['__rrweb_original__']\n : window.console[level]\n\n // eslint-disable-next-line no-console\n consoleLog(LOGGER_PREFIX, ...args)\n }\n },\n\n info: (...args: any[]) => {\n logger._log('log', ...args)\n },\n\n warn: (...args: any[]) => {\n logger._log('warn', ...args)\n },\n\n error: (...args: any[]) => {\n logger._log('error', ...args)\n },\n\n critical: (...args: any[]) => {\n // Critical errors are always logged to the console\n // eslint-disable-next-line no-console\n console.error(LOGGER_PREFIX, ...args)\n },\n\n uninitializedWarning: (methodName: string) => {\n logger.error(`You must initialize PostHog before calling ${methodName}`)\n },\n}\n","import { Breaker, EventHandler, Properties } from '../types'\nimport { isArray, isFormData, isFunction, isNull, isNullish, isString, hasOwnProperty } from './type-utils'\nimport { logger } from './logger'\nimport { window, nativeForEach, nativeIndexOf } from './globals'\n\nconst breaker: Breaker = {}\n\n// UNDERSCORE\n// Embed part of the Underscore Library\nexport const trim = function (str: string): string {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '')\n}\n\nexport function eachArray<E = any>(\n obj: E[] | null | undefined,\n iterator: (value: E, key: number) => void | Breaker,\n thisArg?: any\n): void {\n if (isArray(obj)) {\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, thisArg)\n } else if ('length' in obj && obj.length === +obj.length) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (i in obj && iterator.call(thisArg, obj[i], i) === breaker) {\n return\n }\n }\n }\n }\n}\n\n/**\n * @param {*=} obj\n * @param {function(...*)=} iterator\n * @param {Object=} thisArg\n */\nexport function each(obj: any, iterator: (value: any, key: any) => void | Breaker, thisArg?: any): void {\n if (isNullish(obj)) {\n return\n }\n if (isArray(obj)) {\n return eachArray(obj, iterator, thisArg)\n }\n if (isFormData(obj)) {\n for (const pair of obj.entries()) {\n if (iterator.call(thisArg, pair[1], pair[0]) === breaker) {\n return\n }\n }\n return\n }\n for (const key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n if (iterator.call(thisArg, obj[key], key) === breaker) {\n return\n }\n }\n }\n}\n\nexport const extend = function (obj: Record<string, any>, ...args: Record<string, any>[]): Record<string, any> {\n eachArray(args, function (source) {\n for (const prop in source) {\n if (source[prop] !== void 0) {\n obj[prop] = source[prop]\n }\n }\n })\n return obj\n}\n\nexport const include = function (\n obj: null | string | Array<any> | Record<string, any>,\n target: any\n): boolean | Breaker {\n let found = false\n if (isNull(obj)) {\n return found\n }\n if (nativeIndexOf && obj.indexOf === nativeIndexOf) {\n return obj.indexOf(target) != -1\n }\n each(obj, function (value) {\n if (found || (found = value === target)) {\n return breaker\n }\n return\n })\n return found\n}\n\nexport function includes<T = any>(str: T[] | string, needle: T): boolean {\n return (str as any).indexOf(needle) !== -1\n}\n\n/**\n * Object.entries() polyfill\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries\n */\nexport function entries<T = any>(obj: Record<string, T>): [string, T][] {\n const ownProps = Object.keys(obj)\n let i = ownProps.length\n const resArray = new Array(i) // preallocate the Array\n\n while (i--) {\n resArray[i] = [ownProps[i], obj[ownProps[i]]]\n }\n return resArray\n}\n\nexport const isValidRegex = function (str: string): boolean {\n try {\n new RegExp(str)\n } catch {\n return false\n }\n return true\n}\n\nexport const timestamp = function (): number {\n Date.now =\n Date.now ||\n function () {\n return +new Date()\n }\n return Date.now()\n}\n\nexport const trySafe = function <T>(fn: () => T): T | undefined {\n try {\n return fn()\n } catch {\n return undefined\n }\n}\n\nexport const safewrap = function <F extends (...args: any[]) => any = (...args: any[]) => any>(f: F): F {\n return function (...args) {\n try {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return f.apply(this, args)\n } catch (e) {\n logger.critical(\n 'Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A.'\n )\n logger.critical(e)\n }\n } as F\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport const safewrapClass = function (klass: Function, functions: string[]): void {\n for (let i = 0; i < functions.length; i++) {\n klass.prototype[functions[i]] = safewrap(klass.prototype[functions[i]])\n }\n}\n\nexport const stripEmptyProperties = function (p: Properties): Properties {\n const ret: Properties = {}\n each(p, function (v, k) {\n if (isString(v) && v.length > 0) {\n ret[k] = v\n }\n })\n return ret\n}\n\nexport const stripLeadingDollar = function (s: string): string {\n return s.replace(/^\\$/, '')\n}\n\n/**\n * Deep copies an object.\n * It handles cycles by replacing all references to them with `undefined`\n * Also supports customizing native values\n *\n * @param value\n * @param customizer\n * @returns {{}|undefined|*}\n */\nfunction deepCircularCopy<T extends Record<string, any> = Record<string, any>>(\n value: T,\n customizer?: <K extends keyof T = keyof T>(value: T[K], key?: K) => T[K]\n): T | undefined {\n const COPY_IN_PROGRESS_SET = new Set()\n\n function internalDeepCircularCopy(value: T, key?: string): T | undefined {\n if (value !== Object(value)) return customizer ? customizer(value as any, key) : value // primitive value\n\n if (COPY_IN_PROGRESS_SET.has(value)) return undefined\n COPY_IN_PROGRESS_SET.add(value)\n let result: T\n\n if (isArray(value)) {\n result = [] as any as T\n eachArray(value, (it) => {\n result.push(internalDeepCircularCopy(it))\n })\n } else {\n result = {} as T\n each(value, (val, key) => {\n if (!COPY_IN_PROGRESS_SET.has(val)) {\n ;(result as any)[key] = internalDeepCircularCopy(val, key)\n }\n })\n }\n return result\n }\n return internalDeepCircularCopy(value)\n}\n\nexport function _copyAndTruncateStrings<T extends Record<string, any> = Record<string, any>>(\n object: T,\n maxStringLength: number | null\n): T {\n return deepCircularCopy(object, (value: any) => {\n if (isString(value) && !isNull(maxStringLength)) {\n return (value as string).slice(0, maxStringLength)\n }\n return value\n }) as T\n}\n\nexport function _base64Encode(data: null): null\nexport function _base64Encode(data: undefined): undefined\nexport function _base64Encode(data: string): string\nexport function _base64Encode(data: string | null | undefined): string | null | undefined {\n const b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n let o1,\n o2,\n o3,\n h1,\n h2,\n h3,\n h4,\n bits,\n i = 0,\n ac = 0,\n enc = ''\n const tmp_arr: string[] = []\n\n if (!data) {\n return data\n }\n\n data = utf8Encode(data)\n\n do {\n // pack three octets into four hexets\n o1 = data.charCodeAt(i++)\n o2 = data.charCodeAt(i++)\n o3 = data.charCodeAt(i++)\n\n bits = (o1 << 16) | (o2 << 8) | o3\n\n h1 = (bits >> 18) & 0x3f\n h2 = (bits >> 12) & 0x3f\n h3 = (bits >> 6) & 0x3f\n h4 = bits & 0x3f\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4)\n } while (i < data.length)\n\n enc = tmp_arr.join('')\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '=='\n break\n case 2:\n enc = enc.slice(0, -1) + '='\n break\n }\n\n return enc\n}\n\nexport const utf8Encode = function (string: string): string {\n string = (string + '').replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n')\n\n let utftext = '',\n start,\n end\n let stringl = 0,\n n\n\n start = end = 0\n stringl = string.length\n\n for (n = 0; n < stringl; n++) {\n const c1 = string.charCodeAt(n)\n let enc = null\n\n if (c1 < 128) {\n end++\n } else if (c1 > 127 && c1 < 2048) {\n enc = String.fromCharCode((c1 >> 6) | 192, (c1 & 63) | 128)\n } else {\n enc = String.fromCharCode((c1 >> 12) | 224, ((c1 >> 6) & 63) | 128, (c1 & 63) | 128)\n }\n if (!isNull(enc)) {\n if (end > start) {\n utftext += string.substring(start, end)\n }\n utftext += enc\n start = end = n + 1\n }\n }\n\n if (end > start) {\n utftext += string.substring(start, string.length)\n }\n\n return utftext\n}\n\nexport const registerEvent = (function () {\n // written by Dean Edwards, 2005\n // with input from Tino Zijdel - crisp@xs4all.nl\n // with input from Carl Sverre - mail@carlsverre.com\n // with input from PostHog\n // http://dean.edwards.name/weblog/2005/10/add-event/\n // https://gist.github.com/1930440\n\n /**\n * @param {Object} element\n * @param {string} type\n * @param {function(...*)} handler\n * @param {boolean=} oldSchool\n * @param {boolean=} useCapture\n */\n const register_event = function (\n element: Element | Window | Document | Node,\n type: string,\n handler: EventHandler,\n oldSchool?: boolean,\n useCapture?: boolean\n ) {\n if (!element) {\n logger.error('No valid element provided to register_event')\n return\n }\n\n if (element.addEventListener && !oldSchool) {\n element.addEventListener(type, handler, !!useCapture)\n } else {\n const ontype = 'on' + type\n const old_handler = (element as any)[ontype] // can be undefined\n ;(element as any)[ontype] = makeHandler(element, handler, old_handler)\n }\n }\n\n function makeHandler(\n element: Element | Window | Document | Node,\n new_handler: EventHandler,\n old_handlers: EventHandler\n ) {\n return function (event: Event): boolean | void {\n event = event || fixEvent(window?.event)\n\n // this basically happens in firefox whenever another script\n // overwrites the onload callback and doesn't pass the event\n // object to previously defined callbacks. All the browsers\n // that don't define window.event implement addEventListener\n // so the dom_loaded handler will still be fired as usual.\n if (!event) {\n return undefined\n }\n\n let ret = true\n let old_result: any\n\n if (isFunction(old_handlers)) {\n old_result = old_handlers(event)\n }\n const new_result = new_handler.call(element, event)\n\n if (false === old_result || false === new_result) {\n ret = false\n }\n\n return ret\n }\n }\n\n function fixEvent(event: Event | undefined): Event | undefined {\n if (event) {\n event.preventDefault = fixEvent.preventDefault\n event.stopPropagation = fixEvent.stopPropagation\n }\n return event\n }\n fixEvent.preventDefault = function () {\n ;(this as any as Event).returnValue = false\n }\n fixEvent.stopPropagation = function () {\n ;(this as any as Event).cancelBubble = true\n }\n\n return register_event\n})()\n\nexport function isCrossDomainCookie(documentLocation: Location | undefined) {\n const hostname = documentLocation?.hostname\n\n if (!isString(hostname)) {\n return false\n }\n // split and slice isn't a great way to match arbitrary domains,\n // but it's good enough for ensuring we only match herokuapp.com when it is the TLD\n // for the hostname\n return hostname.split('.').slice(-2).join('.') !== 'herokuapp.com'\n}\n\nexport function isDistinctIdStringLike(value: string): boolean {\n return ['distinct_id', 'distinctid'].includes(value.toLowerCase())\n}\n\nexport function find<T>(value: T[], predicate: (value: T) => boolean): T | undefined {\n for (let i = 0; i < value.length; i++) {\n if (predicate(value[i])) {\n return value[i]\n }\n }\n return undefined\n}\n","import { each, isValidRegex } from './'\n\nimport { isArray, isFile, isUndefined } from './type-utils'\nimport { logger } from './logger'\nimport { document } from './globals'\n\nconst localDomains = ['localhost', '127.0.0.1']\n\n/**\n * IE11 doesn't support `new URL`\n * so we can create an anchor element and use that to parse the URL\n * there's a lot of overlap between HTMLHyperlinkElementUtils and URL\n * meaning useful properties like `pathname` are available on both\n */\nexport const convertToURL = (url: string): HTMLAnchorElement | null => {\n const location = document?.createElement('a')\n if (isUndefined(location)) {\n return null\n }\n\n location.href = url\n return location\n}\n\nexport const isUrlMatchingRegex = function (url: string, pattern: string): boolean {\n if (!isValidRegex(pattern)) return false\n return new RegExp(pattern).test(url)\n}\n\nexport const formDataToQuery = function (formdata: Record<string, any> | FormData, arg_separator = '&'): string {\n let use_val: string\n let use_key: string\n const tph_arr: string[] = []\n\n each(formdata, function (val: File | string | undefined, key: string | undefined) {\n // the key might be literally the string undefined for e.g. if {undefined: 'something'}\n if (isUndefined(val) || isUndefined(key) || key === 'undefined') {\n return\n }\n\n use_val = encodeURIComponent(isFile(val) ? val.name : val.toString())\n use_key = encodeURIComponent(key)\n tph_arr[tph_arr.length] = use_key + '=' + use_val\n })\n\n return tph_arr.join(arg_separator)\n}\n\nexport const getQueryParam = function (url: string, param: string): string {\n const withoutHash: string = url.split('#')[0] || ''\n const queryParams: string = withoutHash.split('?')[1] || ''\n\n const queryParts = queryParams.split('&')\n let keyValuePair\n\n for (let i = 0; i < queryParts.length; i++) {\n const parts = queryParts[i].split('=')\n if (parts[0] === param) {\n keyValuePair = parts\n break\n }\n }\n\n if (!isArray(keyValuePair) || keyValuePair.length < 2) {\n return ''\n } else {\n let result = keyValuePair[1]\n try {\n result = decodeURIComponent(result)\n } catch {\n logger.error('Skipping decoding for malformed query param: ' + result)\n }\n return result.replace(/\\+/g, ' ')\n }\n}\n\nexport const _getHashParam = function (hash: string, param: string): string | null {\n const matches = hash.match(new RegExp(param + '=([^&]*)'))\n return matches ? matches[1] : null\n}\n\nexport const isLocalhost = (): boolean => {\n return localDomains.includes(location.hostname)\n}\n","import { CapturedNetworkRequest, NetworkRecordOptions, PostHogConfig } from '../../types'\nimport { isFunction, isNullish, isString, isUndefined } from '../../utils/type-utils'\nimport { convertToURL } from '../../utils/request-utils'\nimport { logger } from '../../utils/logger'\nimport { shouldCaptureValue } from '../../autocapture-utils'\nimport { each } from '../../utils'\n\nconst LOGGER_PREFIX = '[SessionRecording]'\nconst REDACTED = 'redacted'\n\nexport const defaultNetworkOptions: Required<NetworkRecordOptions> = {\n initiatorTypes: [\n 'audio',\n 'beacon',\n 'body',\n 'css',\n 'early-hint',\n 'embed',\n 'fetch',\n 'frame',\n 'iframe',\n 'icon',\n 'image',\n 'img',\n 'input',\n 'link',\n 'navigation',\n 'object',\n 'ping',\n 'script',\n 'track',\n 'video',\n 'xmlhttprequest',\n ],\n maskRequestFn: (data: CapturedNetworkRequest) => data,\n recordHeaders: false,\n recordBody: false,\n recordInitialRequests: false,\n recordPerformance: false,\n performanceEntryTypeToObserve: [\n // 'event', // This is too noisy as it covers all browser events\n 'first-input',\n // 'mark', // Mark is used too liberally. We would need to filter for specific marks\n // 'measure', // Measure is used too liberally. We would need to filter for specific measures\n 'navigation',\n 'paint',\n 'resource',\n ],\n payloadSizeLimitBytes: 1000000,\n payloadHostDenyList: ['.lr-ingest.io', '.ingest.sentry.io'],\n}\n\nconst HEADER_DENY_LIST = [\n 'authorization',\n 'x-forwarded-for',\n 'authorization',\n 'cookie',\n 'set-cookie',\n 'x-api-key',\n 'x-real-ip',\n 'remote-addr',\n 'forwarded',\n 'proxy-authorization',\n 'x-csrf-token',\n 'x-csrftoken',\n 'x-xsrf-token',\n]\n\nconst PAYLOAD_CONTENT_DENY_LIST = [\n 'password',\n 'secret',\n 'passwd',\n 'api_key',\n 'apikey',\n 'auth',\n 'credentials',\n 'mysql_pwd',\n 'privatekey',\n 'private_key',\n 'token',\n]\n\n// we always remove headers on the deny list because we never want to capture this sensitive data\nconst removeAuthorizationHeader = (data: CapturedNetworkRequest): CapturedNetworkRequest => {\n const headers = data.requestHeaders\n if (!isNullish(headers)) {\n each(Object.keys(headers ?? {}), (header) => {\n if (HEADER_DENY_LIST.includes(header.toLowerCase())) {\n headers[header] = REDACTED\n }\n })\n }\n return data\n}\n\nconst POSTHOG_PATHS_TO_IGNORE = ['/s/', '/e/', '/i/']\n// want to ignore posthog paths when capturing requests, or we can get trapped in a loop\n// because calls to PostHog would be reported using a call to PostHog which would be reported....\nconst ignorePostHogPaths = (data: CapturedNetworkRequest): CapturedNetworkRequest | undefined => {\n const url = convertToURL(data.name)\n if (url && url.pathname && POSTHOG_PATHS_TO_IGNORE.some((path) => url.pathname.indexOf(path) === 0)) {\n return undefined\n }\n return data\n}\n\nfunction estimateBytes(payload: string): number {\n return new Blob([payload]).size\n}\n\nfunction enforcePayloadSizeLimit(\n payload: string | null | undefined,\n headers: Record<string, any> | undefined,\n limit: number,\n description: string\n): string | null | undefined {\n if (isNullish(payload)) {\n return payload\n }\n\n let requestContentLength: string | number = headers?.['content-length'] || estimateBytes(payload)\n if (isString(requestContentLength)) {\n requestContentLength = parseInt(requestContentLength)\n }\n\n if (requestContentLength > limit) {\n return LOGGER_PREFIX + ` ${description} body too large to record (${requestContentLength} bytes)`\n }\n\n return payload\n}\n\n// people can have arbitrarily large payloads on their site, but we don't want to ingest them\nconst limitPayloadSize = (\n options: NetworkRecordOptions\n): ((data: CapturedNetworkRequest | undefined) => CapturedNetworkRequest | undefined) => {\n // the smallest of 1MB or the specified limit if there is one\n const limit = Math.min(1000000, options.payloadSizeLimitBytes ?? 1000000)\n\n return (data) => {\n if (data?.requestBody) {\n data.requestBody = enforcePayloadSizeLimit(data.requestBody, data.requestHeaders, limit, 'Request')\n }\n\n if (data?.responseBody) {\n data.responseBody = enforcePayloadSizeLimit(data.responseBody, data.responseHeaders, limit, 'Response')\n }\n\n return data\n }\n}\n\nfunction scrubPayload(payload: string | null | undefined, label: 'Request' | 'Response'): string | null | undefined {\n if (isNullish(payload)) {\n return payload\n }\n let scrubbed = payload\n\n if (!shouldCaptureValue(scrubbed, false)) {\n scrubbed = LOGGER_PREFIX + ' ' + label + ' body ' + REDACTED\n }\n each(PAYLOAD_CONTENT_DENY_LIST, (text) => {\n if (scrubbed?.length && scrubbed?.indexOf(text) !== -1) {\n scrubbed = LOGGER_PREFIX + ' ' + label + ' body ' + REDACTED + ' as might contain: ' + text\n }\n })\n\n return scrubbed\n}\n\nfunction scrubPayloads(capturedRequest: CapturedNetworkRequest | undefined): CapturedNetworkRequest | undefined {\n if (isUndefined(capturedRequest)) {\n return undefined\n }\n\n capturedRequest.requestBody = scrubPayload(capturedRequest.requestBody, 'Request')\n capturedRequest.responseBody = scrubPayload(capturedRequest.responseBody, 'Response')\n\n return capturedRequest\n}\n\n/**\n * whether a maskRequestFn is provided or not,\n * we ensure that we remove the denied header from requests\n * we _never_ want to record that header by accident\n * if someone complains then we'll add an opt-in to let them override it\n */\nexport const buildNetworkRequestOptions = (\n instanceConfig: PostHogConfig,\n remoteNetworkOptions: Pick<\n NetworkRecordOptions,\n 'recordHeaders' | 'recordBody' | 'recordPerformance' | 'payloadHostDenyList'\n >\n): NetworkRecordOptions => {\n const config: NetworkRecordOptions = {\n payloadSizeLimitBytes: defaultNetworkOptions.payloadSizeLimitBytes,\n performanceEntryTypeToObserve: [...defaultNetworkOptions.performanceEntryTypeToObserve],\n payloadHostDenyList: [\n ...(remoteNetworkOptions.payloadHostDenyList || []),\n ...defaultNetworkOptions.payloadHostDenyList,\n ],\n }\n // client can always disable despite remote options\n const canRecordHeaders =\n instanceConfig.session_recording.recordHeaders === false ? false : remoteNetworkOptions.recordHeaders\n const canRecordBody =\n instanceConfig.session_recording.recordBody === false ? false : remoteNetworkOptions.recordBody\n const canRecordPerformance =\n instanceConfig.capture_performance === false ? false : remoteNetworkOptions.recordPerformance\n\n const payloadLimiter = limitPayloadSize(config)\n\n const enforcedCleaningFn: NetworkRecordOptions['maskRequestFn'] = (d: CapturedNetworkRequest) =>\n payloadLimiter(ignorePostHogPaths(removeAuthorizationHeader(d)))\n\n const hasDeprecatedMaskFunction = isFunction(instanceConfig.session_recording.maskNetworkRequestFn)\n\n if (hasDeprecatedMaskFunction && isFunction(instanceConfig.session_recording.maskCapturedNetworkRequestFn)) {\n logger.warn(\n 'Both `maskNetworkRequestFn` and `maskCapturedNetworkRequestFn` are defined. `maskNetworkRequestFn` will be ignored.'\n )\n }\n\n if (hasDeprecatedMaskFunction) {\n instanceConfig.session_recording.maskCapturedNetworkRequestFn = (data: CapturedNetworkRequest) => {\n const cleanedURL = instanceConfig.session_recording.maskNetworkRequestFn!({ url: data.name })\n return {\n ...data,\n name: cleanedURL?.url,\n } as CapturedNetworkRequest\n }\n }\n\n config.maskRequestFn = isFunction(instanceConfig.session_recording.maskCapturedNetworkRequestFn)\n ? (data) => {\n const cleanedRequest = enforcedCleaningFn(data)\n return cleanedRequest\n ? instanceConfig.session_recording.maskCapturedNetworkRequestFn?.(cleanedRequest) ?? undefined\n : undefined\n }\n : (data) => scrubPayloads(enforcedCleaningFn(data))\n\n return {\n ...defaultNetworkOptions,\n ...config,\n recordHeaders: canRecordHeaders,\n recordBody: canRecordBody,\n recordPerformance: canRecordPerformance,\n recordInitialRequests: canRecordPerformance,\n }\n}\n","// import { patch } from 'rrweb/typings/utils'\n// copied from https://github.com/rrweb-io/rrweb/blob/8aea5b00a4dfe5a6f59bd2ae72bb624f45e51e81/packages/rrweb/src/utils.ts#L129\n// which was copied from https://github.com/getsentry/sentry-javascript/blob/b2109071975af8bf0316d3b5b38f519bdaf5dc15/packages/utils/src/object.ts\nimport { isFunction } from '../../../utils/type-utils'\n\nexport function patch(\n source: { [key: string]: any },\n name: string,\n replacement: (...args: unknown[]) => unknown\n): () => void {\n try {\n if (!(name in source)) {\n return () => {\n //\n }\n }\n\n const original = source[name] as () => unknown\n const wrapped = replacement(original)\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (isFunction(wrapped)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n wrapped.prototype = wrapped.prototype || {}\n Object.defineProperties(wrapped, {\n __posthog_wrapped__: {\n enumerable: false,\n value: true,\n },\n })\n }\n\n source[name] = wrapped\n\n return () => {\n source[name] = original\n }\n } catch {\n return () => {\n //\n }\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n}\n","import { NetworkRecordOptions } from '../../../types'\n\nfunction hostnameFromURL(url: string | URL | RequestInfo): string | null {\n try {\n if (typeof url === 'string') {\n return new URL(url).hostname\n }\n if ('url' in url) {\n return new URL(url.url).hostname\n }\n return url.hostname\n } catch {\n return null\n }\n}\n\nexport function isHostOnDenyList(url: string | URL | Request, options: NetworkRecordOptions) {\n const hostname = hostnameFromURL(url)\n const defaultNotDenied = { hostname, isHostDenied: false }\n\n if (!options.payloadHostDenyList?.length || !hostname?.trim().length) {\n return defaultNotDenied\n }\n\n for (const deny of options.payloadHostDenyList) {\n if (hostname.endsWith(deny)) {\n return { hostname, isHostDenied: true }\n }\n }\n\n return defaultNotDenied\n}\n","import { version } from 'rrweb/package.json'\n\n// Same as loader-globals.ts except includes rrweb2 scripts.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport rrwebRecord from 'rrweb/es/rrweb/packages/rrweb/src/record'\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport { getRecordConsolePlugin } from 'rrweb/es/rrweb/packages/rrweb/src/plugins/console/record'\n\n// rrweb/network@1 code starts\n// most of what is below here will be removed when rrweb release their code for this\n// see https://github.com/rrweb-io/rrweb/pull/1105\n/// <reference lib=\"dom\" />\n// NB adopted from https://github.com/rrweb-io/rrweb/pull/1105 which looks like it will be accepted into rrweb\n// however, in the PR, it throws when the performance observer data is not available\n// and assumes it is running in a browser with the Request API (i.e. not IE11)\n// copying here so that we can use it before rrweb adopt it\nimport type { IWindow, listenerHandler, RecordPlugin } from '@rrweb/types'\nimport { CapturedNetworkRequest, Headers, InitiatorType, NetworkRecordOptions } from '../types'\nimport { isArray, isBoolean, isDocument, isFormData, isNull, isNullish, isObject, isString } from '../utils/type-utils'\nimport { logger } from '../utils/logger'\nimport { window } from '../utils/globals'\nimport { defaultNetworkOptions } from '../extensions/replay/config'\nimport { formDataToQuery } from '../utils/request-utils'\nimport { patch } from '../extensions/replay/rrweb-plugins/patch'\nimport { isHostOnDenyList } from '../extensions/replay/external/denylist'\n\nexport type NetworkData = {\n requests: CapturedNetworkRequest[]\n isInitial?: boolean\n}\n\ntype networkCallback = (data: NetworkData) => void\n\nconst isNavigationTiming = (entry: PerformanceEntry): entry is PerformanceNavigationTiming =>\n entry.entryType === 'navigation'\nconst isResourceTiming = (entry: PerformanceEntry): entry is PerformanceResourceTiming => entry.entryType === 'resource'\n\ntype ObservedPerformanceEntry = (PerformanceNavigationTiming | PerformanceResourceTiming) & {\n responseStatus?: number\n}\n\nexport function findLast<T>(array: Array<T>, predicate: (value: T) => boolean): T | undefined {\n const length = array.length\n for (let i = length - 1; i >= 0; i -= 1) {\n if (predicate(array[i])) {\n return array[i]\n }\n }\n return undefined\n}\n\nfunction initPerformanceObserver(cb: networkCallback, win: IWindow, options: Required<NetworkRecordOptions>) {\n // if we are only observing timings then we could have a single observer for all types, with buffer true,\n // but we are going to filter by initiatorType _if we are wrapping fetch and xhr as the wrapped functions\n // will deal with those.\n // so we have a block which captures requests from before fetch/xhr is wrapped\n // these are marked `isInitial` so playback can display them differently if needed\n // they will never have method/status/headers/body because they are pre-wrapping that provides that\n if (options.recordInitialRequests) {\n const initialPerformanceEntries = win.performance\n .getEntries()\n .filter(\n (entry): entry is ObservedPerformanceEntry =>\n isNavigationTiming(entry) ||\n (isResourceTiming(entry) && options.initiatorTypes.includes(entry.initiatorType as InitiatorType))\n )\n cb({\n requests: initialPerformanceEntries.flatMap((entry) =>\n prepareRequest(entry, undefined, undefined, {}, true)\n ),\n isInitial: true,\n })\n }\n const observer = new win.PerformanceObserver((entries) => {\n // if recordBody or recordHeaders is true then we don't want to record fetch or xhr here\n // as the wrapped functions will do that. Otherwise, this filter becomes a noop\n // because we do want to record them here\n const wrappedInitiatorFilter = (entry: ObservedPerformanceEntry) =>\n options.recordBody || options.recordHeaders\n ? entry.initiatorType !== 'xmlhttprequest' && entry.initiatorType !== 'fetch'\n : true\n\n const performanceEntries = entries.getEntries().filter(\n (entry): entry is ObservedPerformanceEntry =>\n isNavigationTiming(entry) ||\n (isResourceTiming(entry) &&\n options.initiatorTypes.includes(entry.initiatorType as InitiatorType) &&\n // TODO if we are _only_ capturing timing we don't want to filter initiator here\n wrappedInitiatorFilter(entry))\n )\n\n cb({\n requests: performanceEntries.flatMap((entry) => prepareRequest(entry, undefined, undefined, {})),\n })\n })\n // compat checked earlier\n // eslint-disable-next-line compat/compat\n const entryTypes = PerformanceObserver.supportedEntryTypes.filter((x) =>\n options.performanceEntryTypeToObserve.includes(x)\n )\n // initial records are gathered above, so we don't need to observe and buffer each type separately\n observer.observe({ entryTypes })\n return () => {\n observer.disconnect()\n }\n}\n\nfunction shouldRecordHeaders(type: 'request' | 'response', recordHeaders: NetworkRecordOptions['recordHeaders']) {\n return !!recordHeaders && (isBoolean(recordHeaders) || recordHeaders[type])\n}\n\nfunction shouldRecordBody({\n type,\n recordBody,\n headers,\n}: {\n type: 'request' | 'response'\n recordBody: NetworkRecordOptions['recordBody']\n headers: Headers\n url: string | URL | RequestInfo\n}) {\n function matchesContentType(contentTypes: string[]) {\n const contentTypeHeader = Object.keys(headers).find((key) => key.toLowerCase() === 'content-type')\n const contentType = contentTypeHeader && headers[contentTypeHeader]\n return contentTypes.some((ct) => contentType?.includes(ct))\n }\n\n if (!recordBody) return false\n if (isBoolean(recordBody)) return true\n if (isArray(recordBody)) return matchesContentType(recordBody)\n const recordBodyType = recordBody[type]\n if (isBoolean(recordBodyType)) return recordBodyType\n return matchesContentType(recordBodyType)\n}\n\nasync function getRequestPerformanceEntry(\n win: IWindow,\n initiatorType: string,\n url: string,\n after?: number,\n before?: number,\n attempt = 0\n): Promise<PerformanceResourceTiming | null> {\n if (attempt > 10) {\n logger.warn('Failed to get performance entry for request', { url, initiatorType })\n return null\n }\n const urlPerformanceEntries = win.performance.getEntriesByName(url) as PerformanceResourceTiming[]\n const performanceEntry = findLast(\n urlPerformanceEntries,\n (entry) =>\n isResourceTiming(entry) &&\n entry.initiatorType === initiatorType &&\n (!after || entry.startTime >= after) &&\n (!before || entry.startTime <= before)\n )\n if (!performanceEntry) {\n await new Promise((resolve) => setTimeout(resolve, 50 * attempt))\n return getRequestPerformanceEntry(win, initiatorType, url, after, before, attempt + 1)\n }\n return performanceEntry\n}\n\n/**\n * According to MDN https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/response\n * xhr response is typed as any but can be an ArrayBuffer, a Blob, a Document, a JavaScript object,\n * or a string, depending on the value of XMLHttpRequest.responseType, that contains the response entity body.\n *\n * XHR request body is Document | XMLHttpRequestBodyInit | null | undefined\n */\nfunction _tryReadXHRBody({\n body,\n options,\n url,\n}: {\n body: Document | XMLHttpRequestBodyInit | any | null | undefined\n options: NetworkRecordOptions\n url: string | URL | RequestInfo\n}): string | null {\n if (isNullish(body)) {\n return null\n }\n\n const { hostname, isHostDenied } = isHostOnDenyList(url, options)\n if (isHostDenied) {\n return hostname + ' is in deny list'\n }\n\n if (isString(body)) {\n return body\n }\n\n if (isDocument(body)) {\n return body.textContent\n }\n\n if (isFormData(body)) {\n return formDataToQuery(body)\n }\n\n if (isObject(body)) {\n try {\n return JSON.stringify(body)\n } catch {\n return '[SessionReplay] Failed to stringify response object'\n }\n }\n\n return '[SessionReplay] Cannot read body of type ' + toString.call(body)\n}\n\nfunction initXhrObserver(cb: networkCallback, win: IWindow, options: Required<NetworkRecordOptions>): listenerHandler {\n if (!options.initiatorTypes.includes('xmlhttprequest')) {\n return () => {\n //\n }\n }\n const recordRequestHeaders = shouldRecordHeaders('request', options.recordHeaders)\n const recordResponseHeaders = shouldRecordHeaders('response', options.recordHeaders)\n\n const restorePatch = patch(\n win.XMLHttpRequest.prototype,\n 'open',\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (originalOpen: typeof XMLHttpRequest.prototype.open) => {\n return function (\n method: string,\n url: string | URL,\n async = true,\n username?: string | null,\n password?: string | null\n ) {\n // because this function is returned in its actual context `this` _is_ an XMLHttpRequest\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const xhr = this as XMLHttpRequest\n\n // check IE earlier than this, we only initialize if Request is present\n // eslint-disable-next-line compat/compat\n const req = new Request(url)\n const networkRequest: Partial<CapturedNetworkRequest> = {}\n let after: number | undefined\n let before: number | undefined\n\n const requestHeaders: Headers = {}\n const originalSetRequestHeader = xhr.setRequestHeader.bind(xhr)\n xhr.setRequestHeader = (header: string, value: string) => {\n requestHeaders[header] = value\n return originalSetRequestHeader(header, value)\n }\n if (recordRequestHeaders) {\n networkRequest.requestHeaders = requestHeaders\n }\n\n const originalSend = xhr.send.bind(xhr)\n xhr.send = (body) => {\n if (\n shouldRecordBody({\n type: 'request',\n headers: requestHeaders,\n url,\n recordBody: options.recordBody,\n })\n ) {\n networkRequest.requestBody = _tryReadXHRBody({ body, options, url })\n }\n after = win.performance.now()\n return originalSend(body)\n }\n\n xhr.addEventListener('readystatechange', () => {\n if (xhr.readyState !== xhr.DONE) {\n return\n }\n before = win.performance.now()\n const responseHeaders: Headers = {}\n const rawHeaders = xhr.getAllResponseHeaders()\n const headers = rawHeaders.trim().split(/[\\r\\n]+/)\n headers.forEach((line) => {\n const parts = line.split(': ')\n const header = parts.shift()\n const value = parts.join(': ')\n if (header) {\n responseHeaders[header] = value\n }\n })\n if (recordResponseHeaders) {\n networkRequest.responseHeaders = responseHeaders\n }\n if (\n shouldRecordBody({\n type: 'response',\n headers: responseHeaders,\n url,\n recordBody: options.recordBody,\n })\n ) {\n networkRequest.responseBody = _tryReadXHRBody({ body: xhr.response, options, url })\n }\n getRequestPerformanceEntry(win, 'xmlhttprequest', req.url, after, before)\n .then((entry) => {\n if (isNull(entry)) {\n return\n }\n const requests = prepareRequest(entry, req.method, xhr?.status, networkRequest)\n cb({ requests })\n })\n .catch(() => {\n //\n })\n })\n originalOpen.call(xhr, method, url, async, username, password)\n }\n }\n )\n return () => {\n restorePatch()\n }\n}\n\n/**\n * Check if this PerformanceEntry is either a PerformanceResourceTiming or a PerformanceNavigationTiming\n * NB PerformanceNavigationTiming extends PerformanceResourceTiming\n * Here we don't care which interface it implements as both expose `serverTimings`\n */\nconst exposesServerTiming = (event: PerformanceEntry): event is PerformanceResourceTiming =>\n event.entryType === 'navigation' || event.entryType === 'resource'\n\nfunction prepareRequest(\n entry: PerformanceResourceTiming,\n method: string | undefined,\n status: number | undefined,\n networkRequest: Partial<CapturedNetworkRequest>,\n isInitial?: boolean\n): CapturedNetworkRequest[] {\n // kudos to sentry javascript sdk for excellent background on why to use Date.now() here\n // https://github.com/getsentry/sentry-javascript/blob/e856e40b6e71a73252e788cd42b5260f81c9c88e/packages/utils/src/time.ts#L70\n // can't start observer if performance.now() is not available\n // eslint-disable-next-line compat/compat\n const timeOrigin = Math.floor(Date.now() - performance.now())\n // clickhouse can't ingest timestamps that are floats\n // (in this case representing fractions of a millisecond we don't care about anyway)\n const timestamp = Math.floor(timeOrigin + entry.startTime)\n\n const requests: CapturedNetworkRequest[] = [\n {\n ...entry.toJSON(),\n startTime: Math.round(entry.startTime),\n endTime: Math.round(entry.responseEnd),\n timeOrigin,\n timestamp,\n method: method,\n initiatorType: entry.initiatorType as InitiatorType,\n status,\n requestHeaders: networkRequest.requestHeaders,\n requestBody: networkRequest.requestBody,\n responseHeaders: networkRequest.responseHeaders,\n responseBody: networkRequest.responseBody,\n isInitial,\n },\n ]\n\n if (exposesServerTiming(entry)) {\n for (const timing of entry.serverTiming || []) {\n requests.push({\n timeOrigin,\n timestamp,\n startTime: Math.round(entry.startTime),\n name: timing.name,\n duration: timing.duration,\n // the spec has a closed list of possible types\n // https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry/entryType\n // but, we need to know this was a server timing so that we know to\n // match it to the appropriate navigation or resource timing\n // that matching will have to be on timestamp and $current_url\n entryType: 'serverTiming',\n })\n }\n }\n\n return requests\n}\n\nconst contentTypePrefixDenyList = ['video/', 'audio/']\n\nfunction _checkForCannotReadResponseBody({\n r,\n options,\n url,\n}: {\n r: Response\n options: NetworkRecordOptions\n url: string | URL | RequestInfo\n}): string | null {\n if (r.headers.get('Transfer-Encoding') === 'chunked') {\n return 'Chunked Transfer-Encoding is not supported'\n }\n\n // `get` and `has` are case-insensitive\n // but return the header value with the casing that was supplied\n const contentType = r.headers.get('Content-Type')?.toLowerCase()\n const contentTypeIsDenied = contentTypePrefixDenyList.some((prefix) => contentType?.startsWith(prefix))\n if (contentType && contentTypeIsDenied) {\n return `Content-Type ${contentType} is not supported`\n }\n\n const { hostname, isHostDenied } = isHostOnDenyList(url, options)\n if (isHostDenied) {\n return hostname + ' is in deny list'\n }\n\n return null\n}\n\nfunction _tryReadBody(r: Request | Response): Promise<string> {\n // there are now already multiple places where we're using Promise...\n // eslint-disable-next-line compat/compat\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => resolve('[SessionReplay] Timeout while trying to read body'), 500)\n r.clone()\n .text()\n .then(\n (txt) => resolve(txt),\n (reason) => reject(reason)\n )\n .finally(() => clearTimeout(timeout))\n })\n}\n\nasync function _tryReadRequestBody({\n r,\n options,\n url,\n}: {\n r: Request\n options: NetworkRecordOptions\n url: string | URL | RequestInfo\n}): Promise<string> {\n const { hostname, isHostDenied } = isHostOnDenyList(url, options)\n if (isHostDenied) {\n return Promise.resolve(hostname + ' is in deny list')\n }\n\n return _tryReadBody(r)\n}\n\nasync function _tryReadResponseBody({\n r,\n options,\n url,\n}: {\n r: Response\n options: NetworkRecordOptions\n url: string | URL | RequestInfo\n}): Promise<string> {\n const cannotReadBodyReason: string | null = _checkForCannotReadResponseBody({ r, options, url })\n if (!isNull(cannotReadBodyReason)) {\n return Promise.resolve(cannotReadBodyReason)\n }\n\n return _tryReadBody(r)\n}\n\nfunction initFetchObserver(\n cb: networkCallback,\n win: IWindow,\n options: Required<NetworkRecordOptions>\n): listenerHandler {\n if (!options.initiatorTypes.includes('fetch')) {\n return () => {\n //\n }\n }\n const recordRequestHeaders = shouldRecordHeaders('request', options.recordHeaders)\n const recordResponseHeaders = shouldRecordHeaders('response', options.recordHeaders)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const restorePatch = patch(win, 'fetch', (originalFetch: typeof fetch) => {\n return async function (url: URL | RequestInfo, init?: RequestInit | undefined) {\n // check IE earlier than this, we only initialize if Request is present\n // eslint-disable-next-line compat/compat\n const req = new Request(url, init)\n let res: Response | undefined\n const networkRequest: Partial<CapturedNetworkRequest> = {}\n let after: number | undefined\n let before: number | undefined\n try {\n const requestHeaders: Headers = {}\n req.headers.forEach((value, header) => {\n requestHeaders[header] = value\n })\n if (recordRequestHeaders) {\n networkRequest.requestHeaders = requestHeaders\n }\n if (\n shouldRecordBody({\n type: 'request',\n headers: requestHeaders,\n url,\n recordBody: options.recordBody,\n })\n ) {\n networkRequest.requestBody = await _tryReadRequestBody({ r: req, options, url })\n }\n\n after = win.performance.now()\n res = await originalFetch(req)\n before = win.performance.now()\n\n const responseHeaders: Headers = {}\n res.headers.forEach((value, header) => {\n responseHeaders[header] = value\n })\n if (recordResponseHeaders) {\n networkRequest.responseHeaders = responseHeaders\n }\n if (\n shouldRecordBody({\n type: 'response',\n headers: responseHeaders,\n url,\n recordBody: options.recordBody,\n })\n ) {\n networkRequest.responseBody = await _tryReadResponseBody({ r: res, options, url })\n }\n\n return res\n } finally {\n getRequestPerformanceEntry(win, 'fetch', req.url, after, before)\n .then((entry) => {\n if (isNull(entry)) {\n return\n }\n const requests = prepareRequest(entry, req.method, res?.status, networkRequest)\n cb({ requests })\n })\n .catch(() => {\n //\n })\n }\n }\n })\n return () => {\n restorePatch()\n }\n}\n\nlet initialisedHandler: listenerHandler | null = null\n\nfunction initNetworkObserver(\n callback: networkCallback,\n win: IWindow, // top window or in an iframe\n options: NetworkRecordOptions\n): listenerHandler {\n if (!('performance' in win)) {\n return () => {\n //\n }\n }\n\n if (initialisedHandler) {\n logger.warn('Network observer already initialised, doing nothing')\n return () => {\n // the first caller should already have this handler and will be responsible for teardown\n }\n }\n\n const networkOptions = (\n options ? Object.assign({}, defaultNetworkOptions, options) : defaultNetworkOptions\n ) as Required<NetworkRecordOptions>\n\n const cb: networkCallback = (data) => {\n const requests: CapturedNetworkRequest[] = []\n data.requests.forEach((request) => {\n const maskedRequest = networkOptions.maskRequestFn(request)\n if (maskedRequest) {\n requests.push(maskedRequest)\n }\n })\n\n if (requests.length > 0) {\n callback({ ...data, requests })\n }\n }\n const performanceObserver = initPerformanceObserver(cb, win, networkOptions)\n\n // only wrap fetch and xhr if headers or body are being recorded\n let xhrObserver: listenerHandler = () => {}\n let fetchObserver: listenerHandler = () => {}\n if (networkOptions.recordHeaders || networkOptions.recordBody) {\n xhrObserver = initXhrObserver(cb, win, networkOptions)\n fetchObserver = initFetchObserver(cb, win, networkOptions)\n }\n\n initialisedHandler = () => {\n performanceObserver()\n xhrObserver()\n fetchObserver()\n }\n return initialisedHandler\n}\n\n// use the plugin name so that when this functionality is adopted into rrweb\n// we can remove this plugin and use the core functionality with the same data\nexport const NETWORK_PLUGIN_NAME = 'rrweb/network@1'\n\n// TODO how should this be typed?\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nexport const getRecordNetworkPlugin: (options?: NetworkRecordOptions) => RecordPlugin = (options) => {\n return {\n name: NETWORK_PLUGIN_NAME,\n observer: initNetworkObserver,\n options: options,\n }\n}\n\n// rrweb/networ@1 ends\n\nif (window) {\n ;(window as any).rrweb = { record: rrwebRecord, version: 'v2', rrwebVersion: version }\n ;(window as any).rrwebConsoleRecord = { getRecordConsolePlugin }\n ;(window as any).getRecordNetworkPlugin = getRecordNetworkPlugin\n}\n\nexport default rrwebRecord\n"],"names":["NodeType","isShadowRoot","n","host","Boolean","shadowRoot","isNativeShadowDom","Object","prototype","toString","call","stringifyStylesheet","s","rules","cssRules","cssText","Array","from","map","stringifyRule","join","includes","replace","error","rule","importStringified","cssStringified","regex","isCSSImportRule","styleSheet","split","length","statement","concat","JSON","stringify","href","layerName","push","supportsText","media","mediaText","escapeImportStatement","isCSSStyleRule","selectorText","Mirror","_classCallCheck","this","idNodeMap","Map","nodeMetaMap","WeakMap","_createClass","key","value","_a","id","getMeta","get","keys","_this","getId","delete","childNodes","forEach","childNode","removeNodeFromMap","has","node","meta","set","oldNode","getNode","maskInputValue","_ref","element","maskInputOptions","tagName","type","maskInputFn","text","actualType","toLowerCase","repeat","str","ORIGINAL_ATTRIBUTE_NAME","getInputType","hasAttribute","extractFileExtension","path","baseURL","url","URL","window","location","err","match","pathname","canvasService","canvasCtx","_id","tagNameRegex","RegExp","IGNORED_NODE","genId","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","absoluteToStylesheet","origin","quote1","path1","quote2","path2","path3","filePath","maybeQuote","test","indexOf","slice","stack","parts","pop","_step","_iterator","_createForOfIteratorHelper","done","part","e","f","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","absoluteToDoc","doc","attributeValue","trim","a","createElement","isSVGElement","el","ownerSVGElement","getHref","document","transformAttribute","name","pos","collectCharacters","regEx","chars","exec","substring","output","descriptorsStr","inParens","c","charAt","getAbsoluteSrcsetString","ignoreAttribute","_value","classMatchesRegex","checkAncestors","nodeType","ELEMENT_NODE","parentNode","eIndex","classList","className","needMaskingText","maskTextClass","maskTextSelector","parentElement","closest","contains","matches","serializeNode","options","mirror","blockClass","blockSelector","needsMask","inlineStylesheet","_options$maskInputOpt","maskTextFn","_options$dataURLOptio","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","_options$newlyAddedEl","newlyAddedElement","rootId","hasNode","docId","undefined","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","isCustomElement","_options$maskInputOpt2","_options$dataURLOptio2","_options$newlyAddedEl2","needBlock","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName","attributes","len","i","attr","stylesheet","styleSheets","find","potentialStylesheetHref","rel","_cssText","sheet","innerText","textContent","checked","selected","__context","canvas","ctx","getContext","x","width","y","height","getImageData","originalGetImageData","Uint32Array","Math","min","data","buffer","some","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","image","oldValue","crossOrigin","recordInlineImage","removeEventListener","naturalWidth","naturalHeight","drawImage","console","warn","currentSrc","removeAttribute","complete","addEventListener","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","_n$getBoundingClientR","getBoundingClientRect","class","rr_width","rr_height","src","contentDocument","rr_src","customElements","Element","isSVG","isCustom","serializeElementNode","TEXT_NODE","parentTagName","isStyle","isScript","nextSibling","previousSibling","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","_options$skipChild","skipChild","_options$inlineStyles","_options$maskInputOpt3","slimDOMOptions","_options$dataURLOptio3","_options$inlineImages","_options$recordCanvas","onSerialize","onIframeLoad","_options$iframeLoadTi","iframeLoadTimeout","onStylesheetLoad","_options$stylesheetLo","stylesheetLoadTimeout","_options$keepIframeSr","_options$newlyAddedEl3","_options$preserveWhit","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","assign","add","recordChild","isShadowHost","headWhitespace","bypassOptions","_i","_Array$from","serializedChildNode","isElement","_i2","_Array$from2","isShadow","iframeEl","listener","win","contentWindow","readyState","fired","blankUrl","setTimeout","timer","clearTimeout","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","onceStylesheetLoaded","serializedLinkNode","on","fn","target","arguments","capture","passive","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","reset","throttle","func","wait","timeout","previous","_len","args","_key","now","Date","leading","remaining","context","apply","trailing","hookSetter","d","isRevoked","original","getOwnPropertyDescriptor","defineProperty","patch","source","replacement","wrapped","defineProperties","__rrweb_original__","enumerable","Proxy","Reflect","prop","receiver","nowTimestamp","getWindowScroll","_b","_c","_d","_e","_f","left","scrollingElement","pageXOffset","documentElement","body","top","pageYOffset","getWindowHeight","innerHeight","clientHeight","getWindowWidth","innerWidth","clientWidth","closestElementOfNode","isBlocked","isIgnored","isAncestorRemoved","legacy_isTouchEvent","event","changedTouches","isSerializedIframe","nodeName","isSerializedStylesheet","getAttribute","hasShadowRoot","getTime","StyleSheetMirror","styleIDMap","idStyleMap","newId","getShadowHost","shadowHost","getRootNode","Node","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","ownerDocument","rootShadowHost","getRootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","isNodeInLinkedList","errorHandler","DoubleLinkedList","head","tail","position","Error","current","index","next","__ln","moveKey","parentId","MutationBuffer","frozen","locked","texts","attributeMap","removes","mapRemoves","movedMap","addedSet","Set","movedSet","droppedSet","processMutations","mutations","processMutation","emit","adds","addedIds","addList","getNextId","ns","nextId","pushAdd","addNode","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","shift","isParentRemoved","_step2","_iterator2","isAncestorInSet","candidate","tailNode","_node","unhandledNode","removeNode","payload","genTextAreaValueMutation","filter","attribute","style","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","mutationCb","textarea","item","cn","m","attributeName","setAttribute","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","addedNodes","genAdds","removedNodes","nodeId","isSerialized","deepDelete","processedNodeManager","inOtherBuffer","targetId","childN","_this2","canvasManager","freeze","unfreeze","lock","unlock","addsSet","_isParentRemoved","r","size","_isAncestorInSet","registerErrorHandler","handler","unregisterErrorHandler","callbackWrapper","cb","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","init","mutationObserverCtor","MutationObserver","__rrMutationObserver","angularZoneSymbol","Zone","__symbol__","observer","bind","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initMouseInteractionObserver","_ref3","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","Number","isNaN","endsWith","eventKey","eventName","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","startsWith","Click","clientX","clientY","getHandler","PointerEvent","TouchStart","TouchEnd","h","initScrollObserver","_ref4","scrollCb","evt","defaultView","scrollLeftTop","scroll","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","unshift","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","styleId","ownerNode","initAdoptedStyleSheetObserver","_ref14","hostId","patchTarget","ShadowRoot","originalPropertyDescriptor","configurable","sheets","result","adoptStyleSheets","initObservers","o","mutationObserver","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mutation","mousemove","viewportResize","input","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","mergeHooks","recordDOM","mousemoveHandler","timeBaseline","threshold","callbackThreshold","mousemoveCallback","positions","wrappedCb","totalOffset","p","timeOffset","updatePosition","_ref2","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","initMoveObserver","mouseInteractionHandler","scrollHandler","viewportResizeHandler","_ref5","_ref6","lastH","lastW","initViewportResizeObserver","inputHandler","_ref7","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","querySelectorAll","v","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","_toConsumableArray","initInputObserver","mediaInteractionHandler","_ref17","initMediaInteractionObserver","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","_ref8","_ref9","CSSStyleSheet","insertRule","thisArg","argumentsList","_argumentsList","_slicedToArray","_getIdAndStyleId","replaceSync","deleteRule","_getIdAndStyleId2","_getIdAndStyleId3","_getIdAndStyleId4","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","entries","_ref10","_ref11","typeKey","_argumentsList5","_getIdAndStyleId5","_getIdAndStyleId6","_ref12","_ref13","initStyleSheetObserver","_ref15","_ref16","ignoreCSSAttributes","setProperty","CSSStyleDeclaration","_argumentsList7","priority","_getIdAndStyleId7","removeProperty","_getIdAndStyleId8","remove","initStyleDeclarationObserver","collectFonts","_ref18","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","param","collapsed","updateSelection","getSelection","isCollapsed","ranges","count","rangeCount","range","getRangeAt","startContainer","startOffset","endContainer","endOffset","start","end","initSelectionObserver","customElementObserver","_ref19","constructor","define","initCustomElementObserver","pluginHandlers","plugins","plugin","callback","b","disconnect","CrossOriginIframeMirror","generateIdFn","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","ids","getRemoteId","IframeManager","iframes","crossOriginIframeMap","crossOriginIframeMirror","crossOriginIframeRootIdMap","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","generateId","handleMessage","loadListener","isAttachIframe","adoptedStyleSheets","message","crossOriginMessageEvent","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","replaceIdOnNode","patchRootIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","Input","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","obj","isArray","getIds","child","_this3","ShadowDomManager","shadowDoms","WeakSet","restoreHandlers","patchAttachShadow","iframeElement","manager","option","__awaiter","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","then","lookup","charCodeAt","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","_typeof","list","ctor","contextMap","variableListFor","serializeArg","arg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","values","ArrayBuffer","base64","arraybuffer","bytes","encode","DataView","byteOffset","byteLength","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","getNormalizedContextName","contextAttributes","preserveDrawingBuffer","splice","patchGLPrototype","getOwnPropertyNames","_loop","recordArgs","hookHandler","setter","createURL","sourcemapArg","enableUnicodeArg","sourcemap","enableUnicode","binaryString","atob","binaryView","String","fromCharCode","decodeBase64","blob","Blob","createObjectURL","takeFullSnapshot","WorkerFactory","Worker","CanvasManager","pendingCanvasMutations","rafStamps","latestId","invokeId","_options$sampling","initCanvasMutationObserver","initCanvasFPSObserver","clear","resetObservers","fps","canvasContextReset","snapshotInProgressMap","worker","onmessage","_e$data","commands","rafId","timeBetweenSnapshots","lastSnapshotTime","requestAnimationFrame","takeCanvasSnapshots","matchedCanvas","searchCanvas","root","elem","_regeneratorRuntime","mark","_callee","bitmap","wrap","_context","prev","abrupt","getContextAttributes","COLOR_BUFFER_BIT","createImageBitmap","resizeWidth","resizeHeight","sent","postMessage","stop","cancelAnimationFrame","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","_this4","setLatestRAFTimestamp","_this5","flushPendingCanvasMutationFor","valuesWithType","rest","t","hasOwnProperty","getOwnPropertySymbols","propertyIsEnumerable","__rest","StylesheetManager","trackedLinkElements","adoptedStyleSheetCb","linkEl","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","ProcessedNodeManager","nodeMap","periodicallyClear","thisBuffer","buffers","wrapEvent","recording","record","checkoutEveryNms","checkoutEveryNth","_options$blockClass","_options$blockSelecto","_options$ignoreClass","_options$ignoreSelect","_options$maskTextClas","_options$maskTextSele","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","_options$recordDOM","_options$recordCrossO","_options$recordAfter","recordAfter","_options$userTriggere","_options$collectFonts","_options$ignoreCSSAtt","inEmittingFrame","parent","passEmitsToParent","lastFullSnapshotEvent","color","date","email","month","number","search","tel","time","week","select","password","NodeList","DOMTokenList","_len2","_key2","TypeError","polyfill","incrementalSnapshotCount","eventProcessor","isFrozen","buf","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","_ref2$mirror","_ref2$blockClass","_ref2$blockSelector","_ref2$maskTextClass","_ref2$maskTextSelecto","_ref2$inlineStyleshee","_ref2$inlineImages","_ref2$recordCanvas","_ref2$maskAllInputs","_ref2$slimDOM","slimDOM","_ref2$keepIframeSrcFn","snapshot","initialOffset","CustomElement","addLoadListener","destroy","addCustomEvent","tag","freezePage","StackFrame","fileName","functionName","lineNumber","columnNumber","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","ErrorStackParser","parse","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","line","sanitizedLine","tokens","locationParts","functionNameRegex","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","parseFloat","pathToSelector","outerHTML","localName","domSiblings","children","sibling","isObject","isObjTooDeep","limit","_keys","stringifyOptions","numOfKeysLimit","depthOfLimit","thisPos","Infinity","_obj","shouldIgnore","stringLengthLimit","Event","eventResult","eventValue","HTMLElement","defaultLogOptions","level","lengthThreshold","logger","initLogObserver","logOptions","loggerType","logCount","inStack","cancelHandlers","trace","stackFrame","unhandledrejectionHandler","reason","levelType","_logger","nativeIsArray","ObjProto","isFunction","isUndefined","isString","isNull","isNullish","isBoolean","isDocument","isFormData","FormData","global","globalThis","nativeForEach","navigator","fetch","XMLHttpRequest","AbortController","userAgent","assignableWindow","LOGGER_PREFIX","_log","consoleLog","info","_len3","_key3","_len4","_key4","critical","_console","_len5","_key5","uninitializedWarning","methodName","breaker","each","iterator","l","eachArray","pair","formDataToQuery","formdata","use_val","use_key","arg_separator","tph_arr","val","encodeURIComponent","File","defaultNetworkOptions","initiatorTypes","maskRequestFn","recordHeaders","recordBody","recordInitialRequests","recordPerformance","performanceEntryTypeToObserve","payloadSizeLimitBytes","payloadHostDenyList","__posthog_wrapped__","_unused","isHostOnDenyList","_options$payloadHostD","hostname","hostnameFromURL","defaultNotDenied","isHostDenied","deny","isNavigationTiming","entry","entryType","isResourceTiming","findLast","array","predicate","initPerformanceObserver","initialPerformanceEntries","performance","getEntries","initiatorType","requests","flatMap","prepareRequest","isInitial","PerformanceObserver","performanceEntries","wrappedInitiatorFilter","entryTypes","supportedEntryTypes","shouldRecordHeaders","shouldRecordBody","headers","matchesContentType","contentTypes","contentTypeHeader","contentType","ct","recordBodyType","getRequestPerformanceEntry","_x","_x2","_x3","_x4","_x5","_getRequestPerformanceEntry","_asyncToGenerator","_callee2","after","before","attempt","urlPerformanceEntries","performanceEntry","_args2","_context2","getEntriesByName","startTime","_tryReadXHRBody","_isHostOnDenyList","exposesServerTiming","method","status","networkRequest","timeOrigin","floor","_objectSpread","toJSON","round","endTime","responseEnd","requestHeaders","requestBody","responseHeaders","responseBody","serverTiming","timing","duration","contentTypePrefixDenyList","_checkForCannotReadResponseBody","_r$headers$get","contentTypeIsDenied","prefix","_isHostOnDenyList2","_tryReadBody","clone","txt","finally","_tryReadRequestBody","_x6","_tryReadRequestBody2","_callee3","_isHostOnDenyList3","_context3","_tryReadResponseBody","_x7","_tryReadResponseBody2","_callee4","cannotReadBodyReason","_context4","initialisedHandler","initNetworkObserver","networkOptions","request","maskedRequest","performanceObserver","xhrObserver","fetchObserver","recordRequestHeaders","recordResponseHeaders","restorePatch","originalOpen","async","username","xhr","req","Request","originalSetRequestHeader","setRequestHeader","header","originalSend","send","DONE","getAllResponseHeaders","response","catch","initXhrObserver","originalFetch","res","_res","finish","_x8","_x9","initFetchObserver","NETWORK_PLUGIN_NAME","getRecordNetworkPlugin","rrweb","rrwebRecord","version","rrwebVersion","rrwebConsoleRecord","getRecordConsolePlugin"],"mappings":"m0TAAIA,EAaJ,SAASC,EAAaC,GAClB,IAAMC,EAAOD,aAA6B,EAASA,EAAEC,KACrD,OAAOC,SAASD,aAAmC,EAASA,EAAKE,cAAgBH,EACrF,CACA,SAASI,EAAkBD,GACvB,MAAsD,wBAA/CE,OAAOC,UAAUC,SAASC,KAAKL,EAC1C,CA2BA,SAASM,EAAoBC,GACzB,IACI,IAAMC,EAAQD,EAAEC,OAASD,EAAEE,SAC3B,OAAOD,IA7B6BE,EA8BKC,MAAMC,KAAKJ,GAAOK,IAAIC,GAAeC,KAAK,KA7B3EC,SAAS,6BAChBN,EAAQM,SAAS,qCAClBN,EAAUA,EAAQO,QAAQ,0BAA2B,2DAElDP,GA0BG,IACT,CACD,MAAOQ,GACH,OAAO,IACX,CAnCJ,IAA4CR,CAoC5C,CACA,SAASI,EAAcK,GACnB,IAAIC,EAeiBC,EACfC,EAfN,GAkBJ,SAAyBH,GACrB,MAAO,eAAgBA,CAC3B,CApBQI,CAAgBJ,GAChB,IACIC,EACId,EAAoBa,EAAKK,aAnCzC,SAA+BL,GAC3B,IAAQT,EAAYS,EAAZT,QACR,GAAIA,EAAQe,MAAM,KAAKC,OAAS,EAC5B,OAAOhB,EACX,IAAMiB,EAAY,CAAC,iBAASC,OAASC,KAAKC,UAAUX,EAAKY,MAAS,MAalE,MAZuB,KAAnBZ,EAAKa,UACLL,EAAUM,KAAI,SAETd,EAAKa,WACVL,EAAUM,KAAIL,SAAAA,OAAUT,EAAKa,UAAS,MAEtCb,EAAKe,cACLP,EAAUM,KAAIL,YAAAA,OAAaT,EAAKe,aAAY,MAE5Cf,EAAKgB,MAAMT,QACXC,EAAUM,KAAKd,EAAKgB,MAAMC,WAEvBT,EAAUZ,KAAK,KAAO,GACjC,CAkBoBsB,CAAsBlB,EAClC,CACA,MAAOD,GACP,MAEC,GAYT,SAAwBC,GACpB,MAAO,iBAAkBA,CAC7B,CAdamB,CAAenB,IAASA,EAAKoB,aAAavB,SAAS,KACxD,OAIiBK,EAJMF,EAAKT,QAK1BY,EAAQ,uCACPD,EAAeJ,QAAQK,EAAO,UAJrC,OAAOF,GAAqBD,EAAKT,OACrC,EAvEA,SAAWf,GACPA,EAASA,EAAmB,SAAI,GAAK,WACrCA,EAASA,EAAuB,aAAI,GAAK,eACzCA,EAASA,EAAkB,QAAI,GAAK,UACpCA,EAASA,EAAe,KAAI,GAAK,OACjCA,EAASA,EAAgB,MAAI,GAAK,QAClCA,EAASA,EAAkB,QAAI,GAAK,SACvC,CAPD,CAOGA,IAAaA,EAAW,CAAE,IA0E5B,IACK6C,EAAM,WACR,SAAAA,IAAcC,OAAAD,GACVE,KAAKC,UAAY,IAAIC,IACrBF,KAAKG,YAAc,IAAIC,OAC3B,CA+CC,OA/CAC,EAAAP,EAAA,CAAA,CAAAQ,IAAA,QAAAC,MACD,SAAMpD,GACF,IAAIqD,EACJ,IAAKrD,EACD,OAAQ,EACZ,IAAMsD,EAAgC,QAA1BD,EAAKR,KAAKU,QAAQvD,UAAuB,IAAPqD,OAAgB,EAASA,EAAGC,GAC1E,OAAOA,QAA+BA,GAAM,CAChD,GAAC,CAAAH,IAAA,UAAAC,MACD,SAAQE,GACJ,OAAOT,KAAKC,UAAUU,IAAIF,IAAO,IACrC,GAAC,CAAAH,IAAA,SAAAC,MACD,WACI,OAAOtC,MAAMC,KAAK8B,KAAKC,UAAUW,OACrC,GAAC,CAAAN,IAAA,UAAAC,MACD,SAAQpD,GACJ,OAAO6C,KAAKG,YAAYQ,IAAIxD,IAAM,IACtC,GAAC,CAAAmD,IAAA,oBAAAC,MACD,SAAkBpD,GAAG,IAAA0D,EAAAb,KACXS,EAAKT,KAAKc,MAAM3D,GACtB6C,KAAKC,UAAUc,OAAON,GAClBtD,EAAE6D,YACF7D,EAAE6D,WAAWC,SAAQ,SAACC,GAAS,OAAKL,EAAKM,kBAAkBD,KAEnE,GAAC,CAAAZ,IAAA,MAAAC,MACD,SAAIE,GACA,OAAOT,KAAKC,UAAUmB,IAAIX,EAC9B,GAAC,CAAAH,IAAA,UAAAC,MACD,SAAQc,GACJ,OAAOrB,KAAKG,YAAYiB,IAAIC,EAChC,GAAC,CAAAf,IAAA,MAAAC,MACD,SAAIpD,EAAGmE,GACH,IAAMb,EAAKa,EAAKb,GAChBT,KAAKC,UAAUsB,IAAId,EAAItD,GACvB6C,KAAKG,YAAYoB,IAAIpE,EAAGmE,EAC5B,GAAC,CAAAhB,IAAA,UAAAC,MACD,SAAQE,EAAItD,GACR,IAAMqE,EAAUxB,KAAKyB,QAAQhB,GAC7B,GAAIe,EAAS,CACT,IAAMF,EAAOtB,KAAKG,YAAYQ,IAAIa,GAC9BF,GACAtB,KAAKG,YAAYoB,IAAIpE,EAAGmE,EAChC,CACAtB,KAAKC,UAAUsB,IAAId,EAAItD,EAC3B,GAAC,CAAAmD,IAAA,QAAAC,MACD,WACIP,KAAKC,UAAY,IAAIC,IACrBF,KAAKG,YAAc,IAAIC,OAC3B,KAACN,CAAA,CAnDO,GAwDZ,SAAS4B,EAAcC,GAAoE,IAAjEC,EAAOD,EAAPC,QAASC,EAAgBF,EAAhBE,iBAAkBC,EAAOH,EAAPG,QAASC,EAAIJ,EAAJI,KAAMxB,EAAKoB,EAALpB,MAAOyB,EAAWL,EAAXK,YACnEC,EAAO1B,GAAS,GACd2B,EAAaH,GAAQI,EAAYJ,GAUvC,OATIF,EAAiBC,EAAQK,gBACxBD,GAAcL,EAAiBK,MAE5BD,EADAD,EACOA,EAAYC,EAAML,GAGlB,IAAIQ,OAAOH,EAAKjD,SAGxBiD,CACX,CACA,SAASE,EAAYE,GACjB,OAAOA,EAAIF,aACf,CACA,IAAMG,EAA0B,qBAwChC,SAASC,EAAaX,GAClB,IAAMG,EAAOH,EAAQG,KACrB,OAAOH,EAAQY,aAAa,uBACtB,WACAT,EAEMI,EAAYJ,GACd,IACd,CACA,SAASU,EAAqBC,EAAMC,GAChC,IAAInC,EACAoC,EACJ,IACIA,EAAM,IAAIC,IAAIH,EAAMC,QAAyCA,EAAUG,OAAOC,SAAS1D,KAC1F,CACD,MAAO2D,GACH,OAAO,IACX,CACA,IACMC,EAAQL,EAAIM,SAASD,MADb,uBAEd,OAAyE,QAAjEzC,EAAKyC,aAAqC,EAASA,EAAM,UAAuB,IAAPzC,EAAgBA,EAAK,IAC1G,CAEA,IA2BI2C,EACAC,EA5BAC,EAAM,EACJC,EAAe,IAAIC,OAAO,gBAC1BC,GAAgB,EACtB,SAASC,IACL,OAAOJ,GACX,CAwBA,IAAMK,EAAiB,6CACjBC,EAAqB,sBACrBC,EAAgB,YAChBC,EAAW,wBACjB,SAASC,EAAqB9F,EAASqB,GACnC,OAAQrB,GAAW,IAAIO,QAAQmF,GAAgB,SAACK,EAAQC,EAAQC,EAAOC,EAAQC,EAAOC,GAClF,IAnBexB,EAmBTyB,EAAWJ,GAASE,GAASC,EAC7BE,EAAaN,GAAUE,GAAU,GACvC,IAAKG,EACD,OAAON,EAEX,GAAIJ,EAAmBY,KAAKF,IAAaT,EAAcW,KAAKF,GACxD,MAAAnF,OAAAA,OAAcoF,GAAUpF,OAAGmF,GAAQnF,OAAGoF,EAAU,KAEpD,GAAIT,EAASU,KAAKF,GACd,MAAAnF,OAAAA,OAAcoF,GAAUpF,OAAGmF,GAAQnF,OAAGoF,EAAU,KAEpD,GAAoB,MAAhBD,EAAS,GACT,MAAA,OAAAnF,OAAcoF,GAAUpF,QA/Bb0D,EA+B8BvD,GA7B7CuD,EAAI4B,QAAQ,OAAS,EACZ5B,EAAI7D,MAAM,KAAK0F,MAAM,EAAG,GAAGpG,KAAK,KAGhCuE,EAAI7D,MAAM,KAAK,IAEZA,MAAM,KAAK,GAuB8BsF,IAAQnF,OAAGoF,EAAU,KAE1E,IAAMI,EAAQrF,EAAKN,MAAM,KACnB4F,EAAQN,EAAStF,MAAM,KAC7B2F,EAAME,MAAM,IACYC,EADZC,EAAAC,EACOJ,GAAK,IAAxB,IAAAG,EAAAjH,MAAAgH,EAAAC,EAAA3H,KAAA6H,MAA0B,CAAA,IAAfC,EAAIJ,EAAAtE,MACE,MAAT0E,IAGc,OAATA,EACLP,EAAME,MAGNF,EAAMnF,KAAK0F,GAEnB,CAAC,CAAA,MAAAjC,GAAA8B,EAAAI,EAAAlC,EAAA,CAAA,QAAA8B,EAAAK,GAAA,CACD,MAAA,OAAAjG,OAAcoF,GAAUpF,OAAGwF,EAAMrG,KAAK,MAAIa,OAAGoF,EAAU,IAC3D,GACJ,CACA,IAAMc,EAAoB,qBACpBC,EAA0B,qBA2DhC,SAASC,EAAcC,EAAKC,GACxB,IAAKA,GAA4C,KAA1BA,EAAeC,OAClC,OAAOD,EAEX,IAAME,EAAIH,EAAII,cAAc,KAE5B,OADAD,EAAErG,KAAOmG,EACFE,EAAErG,IACb,CACA,SAASuG,EAAaC,GAClB,OAAOxI,QAAuB,QAAfwI,EAAG/D,SAAqB+D,EAAGC,gBAC9C,CACA,SAASC,IACL,IAAML,EAAIM,SAASL,cAAc,KAEjC,OADAD,EAAErG,KAAO,GACFqG,EAAErG,IACb,CACA,SAAS4G,EAAmBV,EAAKzD,EAASoE,EAAM3F,GAC5C,OAAKA,EAGQ,QAAT2F,GACU,SAATA,IAAiC,QAAZpE,GAAkC,MAAbvB,EAAM,KAGnC,eAAT2F,GAAsC,MAAb3F,EAAM,GAF7B+E,EAAcC,EAAKhF,GAKZ,eAAT2F,GACQ,UAAZpE,GAAmC,OAAZA,GAAgC,OAAZA,EAG9B,WAAToE,EAzFb,SAAiCX,EAAKC,GAClC,GAA8B,KAA1BA,EAAeC,OACf,OAAOD,EAEX,IAAIW,EAAM,EACV,SAASC,EAAkBC,GACvB,IAAIC,EACErD,EAAQoD,EAAME,KAAKf,EAAegB,UAAUL,IAClD,OAAIlD,GACAqD,EAAQrD,EAAM,GACdkD,GAAOG,EAAMtH,OACNsH,GAEJ,EACX,CAEA,IADA,IAAMG,EAAS,GAEXL,EAAkBf,KACdc,GAAOX,EAAexG,SAFjB,CAKT,IAAI4D,EAAMwD,EAAkBhB,GAC5B,GAAsB,MAAlBxC,EAAI6B,OAAO,GACX7B,EAAM0C,EAAcC,EAAK3C,EAAI4D,UAAU,EAAG5D,EAAI5D,OAAS,IACvDyH,EAAOlH,KAAKqD,OAEX,CACD,IAAI8D,EAAiB,GACrB9D,EAAM0C,EAAcC,EAAK3C,GAEzB,IADA,IAAI+D,GAAW,IACF,CACT,IAAMC,EAAIpB,EAAeqB,OAAOV,GAChC,GAAU,KAANS,EAAU,CACVH,EAAOlH,MAAMqD,EAAM8D,GAAgBjB,QACnC,KACJ,CACK,GAAKkB,EAWI,MAANC,IACAD,GAAW,OAZC,CAChB,GAAU,MAANC,EAAW,CACXT,GAAO,EACPM,EAAOlH,MAAMqD,EAAM8D,GAAgBjB,QACnC,KACJ,CACe,MAANmB,IACLD,GAAW,EAEnB,CAMAD,GAAkBE,EAClBT,GAAO,CACX,CACJ,CACJ,CACA,OAAOM,EAAOpI,KAAK,KACvB,CAiCeyI,CAAwBvB,EAAKhF,GAEtB,UAAT2F,EACEpC,EAAqBvD,EAAOwF,KAElB,WAAZjE,GAAiC,SAAToE,EACtBZ,EAAcC,EAAKhF,GAEvBA,EAXI+E,EAAcC,EAAKhF,GAXnBA,CAuBf,CACA,SAASwG,EAAgBjF,EAASoE,EAAMc,GACpC,OAAoB,UAAZlF,GAAmC,UAAZA,IAAiC,aAAToE,CAC3D,CAwBA,SAASe,EAAkB5F,EAAMzC,EAAOsI,GACpC,IAAK7F,EACD,OAAO,EACX,GAAIA,EAAK8F,WAAa9F,EAAK+F,aACvB,QAAKF,GAEED,EAAkB5F,EAAKgG,WAAYzI,EAAOsI,GAErD,IAAK,IAAII,EAASjG,EAAKkG,UAAUvI,OAAQsI,KAAW,CAChD,IAAME,EAAYnG,EAAKkG,UAAUD,GACjC,GAAI1I,EAAM2F,KAAKiD,GACX,OAAO,CAEf,CACA,QAAKN,GAEED,EAAkB5F,EAAKgG,WAAYzI,EAAOsI,EACrD,CACA,SAASO,EAAgBpG,EAAMqG,EAAeC,EAAkBT,GAC5D,IACI,IAAMrB,EAAKxE,EAAK8F,WAAa9F,EAAK+F,aAC5B/F,EACAA,EAAKuG,cACX,GAAW,OAAP/B,EACA,OAAO,EACX,GAA6B,iBAAlB6B,GACP,GAAIR,GACA,GAAIrB,EAAGgC,QAAO3I,IAAAA,OAAKwI,IACf,OAAO,OAGX,GAAI7B,EAAG0B,UAAUO,SAASJ,GACtB,OAAO,OAIf,GAAIT,EAAkBpB,EAAI6B,EAAeR,GACrC,OAAO,EAEf,GAAIS,EACA,GAAIT,GACA,GAAIrB,EAAGgC,QAAQF,GACX,OAAO,OAGX,GAAI9B,EAAGkC,QAAQJ,GACX,OAAO,CAGvB,CACA,MAAOzC,GACP,CACA,OAAO,CACX,CA4DA,SAAS8C,EAAc7K,EAAG8K,GACtB,IAAQ1C,EAAsN0C,EAAtN1C,IAAK2C,EAAiND,EAAjNC,OAAQC,EAAyMF,EAAzME,WAAYC,EAA6LH,EAA7LG,cAAeC,EAA8KJ,EAA9KI,UAAWC,EAAmKL,EAAnKK,iBAAgBC,EAAmJN,EAAjJpG,iBAAAA,OAAgB,IAAA0G,EAAG,CAAE,EAAAA,EAAEC,EAA0HP,EAA1HO,WAAYxG,EAA8GiG,EAA9GjG,YAAWyG,EAAmGR,EAAjGS,eAAAA,OAAc,IAAAD,EAAG,CAAE,EAAAA,EAAEE,EAA4EV,EAA5EU,aAAcC,EAA8DX,EAA9DW,aAAcC,EAAgDZ,EAAhDY,gBAAeC,EAAiCb,EAA/Bc,kBAAAA,OAAoB,IAAHD,GAAQA,EAClNE,EA6DV,SAAmBzD,EAAK2C,GACpB,IAAKA,EAAOe,QAAQ1D,GAChB,OACJ,IAAM2D,EAAQhB,EAAOpH,MAAMyE,GAC3B,OAAiB,IAAV2D,OAAcC,EAAYD,CACrC,CAlEmBE,CAAU7D,EAAK2C,GAC9B,OAAQ/K,EAAEgK,UACN,KAAKhK,EAAEkM,cACH,MAAqB,eAAjBlM,EAAEmM,WACK,CACHvH,KAAM9E,EAASsM,SACfvI,WAAY,GACZsI,WAAYnM,EAAEmM,YAIX,CACHvH,KAAM9E,EAASsM,SACfvI,WAAY,IAGxB,KAAK7D,EAAEqM,mBACH,MAAO,CACHzH,KAAM9E,EAASwM,aACfvD,KAAM/I,EAAE+I,KACRwD,SAAUvM,EAAEuM,SACZC,SAAUxM,EAAEwM,SACZX,OAAAA,GAER,KAAK7L,EAAEiK,aACH,OA6EZ,SAA8BjK,EAAG8K,GAM7B,IALA,IAqJI2B,EArJIrE,EAA+L0C,EAA/L1C,IAAK4C,EAA0LF,EAA1LE,WAAYC,EAA8KH,EAA9KG,cAAeE,EAA+JL,EAA/JK,iBAAgBuB,EAA+I5B,EAA7IpG,iBAAAA,OAAgB,IAAAgI,EAAG,CAAE,EAAAA,EAAE7H,EAAsHiG,EAAtHjG,YAAW8H,EAA2G7B,EAAzGS,eAAAA,OAAc,IAAAoB,EAAG,CAAE,EAAAA,EAAEnB,EAAoFV,EAApFU,aAAcC,EAAsEX,EAAtEW,aAAcC,EAAwDZ,EAAxDY,gBAAekB,EAAyC9B,EAAvCc,kBAAAA,OAAoB,IAAHgB,GAAQA,EAAEf,EAAYf,EAAZe,OACrLgB,EAlPV,SAA2BpI,EAASuG,EAAYC,GAC5C,IACI,GAA0B,iBAAfD,GACP,GAAIvG,EAAQ2F,UAAUO,SAASK,GAC3B,OAAO,OAIX,IAAK,IAAIb,EAAS1F,EAAQ2F,UAAUvI,OAAQsI,KAAW,CACnD,IAAME,EAAY5F,EAAQ2F,UAAUD,GACpC,GAAIa,EAAW5D,KAAKiD,GAChB,OAAO,CAEf,CAEJ,GAAIY,EACA,OAAOxG,EAAQmG,QAAQK,EAE/B,CACA,MAAOlD,GACP,CACA,OAAO,CACX,CA4NsB+E,CAAkB9M,EAAGgL,EAAYC,GAC7CtG,EAxZV,SAAyBF,GACrB,GAAIA,aAAmBsI,gBACnB,MAAO,OAEX,IAAMC,EAAmBhI,EAAYP,EAAQE,SAC7C,OAAIwB,EAAaiB,KAAK4F,GACX,MAEJA,CACX,CA+YoBC,CAAgBjN,GAC5BkN,EAAa,CAAA,EACXC,EAAMnN,EAAEkN,WAAWrL,OAChBuL,EAAI,EAAGA,EAAID,EAAKC,IAAK,CAC1B,IAAMC,EAAOrN,EAAEkN,WAAWE,GACrBxD,EAAgBjF,EAAS0I,EAAKtE,KAAMsE,EAAKjK,SAC1C8J,EAAWG,EAAKtE,MAAQD,EAAmBV,EAAKzD,EAASK,EAAYqI,EAAKtE,MAAOsE,EAAKjK,OAE9F,CACA,GAAgB,SAAZuB,GAAsBwG,EAAkB,CACxC,IAAMjJ,EAAOlC,EAAEkC,KACXoL,EAAaxM,MAAMC,KAAKqH,EAAImF,aAAaC,MAAK,SAAC9M,GAC/C,OAAOA,EAAEwB,OAASA,CACtB,IACA,IAAKoL,GAAcpL,EAAKf,SAAS,QAAS,CACtC,IAEMsM,EAFa9H,OAAOC,SAASgB,OAEU,IADtB1E,EAAKd,QAAQuE,OAAOC,SAAS1D,KAAM,IAE1DoL,EAAaxM,MAAMC,KAAKqH,EAAImF,aAAaC,MAAK,SAAC9M,GAC3C,OAAOA,EAAEwB,OAASuL,CACtB,GACJ,CACA,IAAI5M,EAAU,KACVyM,IACAzM,EAAUJ,EAAoB6M,IAE9BzM,WACOqM,EAAWQ,WACXR,EAAWhL,KAClBgL,EAAWS,SAAWhH,EAAqB9F,EAASyM,EAAWpL,MAEvE,CACA,GAAgB,UAAZyC,GACA3E,EAAE4N,SACA5N,EAAE6N,WAAa7N,EAAE8N,aAAe,IAAIxF,OAAOzG,OAAQ,CACrD,IAAMhB,EAAUJ,EAAoBT,EAAE4N,OAClC/M,IACAqM,EAAWS,SAAWhH,EAAqB9F,EAAS+H,KAE5D,CACA,GAAgB,UAAZjE,GAAmC,aAAZA,GAAsC,WAAZA,EAAsB,CACvE,IAAMvB,EAAQpD,EAAEoD,MACV2K,EAAU/N,EAAE+N,QACM,UAApBb,EAAWtI,MACS,aAApBsI,EAAWtI,MACS,WAApBsI,EAAWtI,MACS,WAApBsI,EAAWtI,MACXxB,EACA8J,EAAW9J,MAAQmB,EAAe,CAC9BE,QAASzE,EACT4E,KAAMQ,EAAapF,GACnB2E,QAAAA,EACAvB,MAAAA,EACAsB,iBAAAA,EACAG,YAAAA,IAGCkJ,IACLb,EAAWa,QAAUA,EAE7B,CACgB,WAAZpJ,IACI3E,EAAEgO,WAAatJ,EAAyB,OACxCwI,EAAWc,UAAW,SAGfd,EAAWc,UAG1B,GAAgB,WAAZrJ,GAAwB8G,EACxB,GAAoB,OAAhBzL,EAAEiO,WAliBd,SAAyBC,GACrB,IAAMC,EAAMD,EAAOE,WAAW,MAC9B,IAAKD,EACD,OAAO,EAEX,IADA,IACSE,EAAI,EAAGA,EAAIH,EAAOI,MAAOD,GADhB,GAEd,IAAK,IAAIE,EAAI,EAAGA,EAAIL,EAAOM,OAAQD,GAFrB,GAEqC,CAC/C,IAAME,EAAeN,EAAIM,aACnBC,EAAuBvJ,KAA2BsJ,EAClDA,EAAatJ,GACbsJ,EAEN,GADoB,IAAIE,YAAYD,EAAqBlO,KAAK2N,EAAKE,EAAGE,EAAGK,KAAKC,IAPpE,GAOmFX,EAAOI,MAAQD,GAAIO,KAAKC,IAP3G,GAO0HX,EAAOM,OAASD,IAAIO,KAAKC,QAC7IC,MAAK,SAACC,GAAK,OAAe,IAAVA,KAC5B,OAAO,CACf,CAEJ,OAAO,CACX,EAkhBiBC,CAAgBlP,KACjBkN,EAAWiC,WAAanP,EAAEoP,UAAU7D,EAAe3G,KAAM2G,EAAe8D,eAG3E,KAAM,cAAerP,GAAI,CAC1B,IAAMsP,EAAgBtP,EAAEoP,UAAU7D,EAAe3G,KAAM2G,EAAe8D,SAChEE,EAAc1G,SAASL,cAAc,UAC3C+G,EAAYjB,MAAQtO,EAAEsO,MACtBiB,EAAYf,OAASxO,EAAEwO,OAEnBc,IADuBC,EAAYH,UAAU7D,EAAe3G,KAAM2G,EAAe8D,WAEjFnC,EAAWiC,WAAaG,EAEhC,CAEJ,GAAgB,QAAZ3K,GAAqB6G,EAAc,CAC9BxF,IACDA,EAAgBoC,EAAII,cAAc,UAClCvC,EAAYD,EAAcoI,WAAW,OAEzC,IAAMoB,EAAQxP,EACRyP,EAAWD,EAAME,YACvBF,EAAME,YAAc,YACpB,IAAMC,EAAoB,SAApBA,IACFH,EAAMI,oBAAoB,OAAQD,GAClC,IACI3J,EAAcsI,MAAQkB,EAAMK,aAC5B7J,EAAcwI,OAASgB,EAAMM,cAC7B7J,EAAU8J,UAAUP,EAAO,EAAG,GAC9BtC,EAAWiC,WAAanJ,EAAcoJ,UAAU7D,EAAe3G,KAAM2G,EAAe8D,QACvF,CACD,MAAOxJ,GACHmK,QAAQC,KAAIlO,yBAAAA,OAA0ByN,EAAMU,WAAUnO,aAAAA,OAAY8D,GACtE,CACA4J,EACOvC,EAAWwC,YAAcD,EAC1BD,EAAMW,gBAAgB,gBAE5BX,EAAMY,UAAmC,IAAvBZ,EAAMK,aACxBF,IAEAH,EAAMa,iBAAiB,OAAQV,EACvC,CACA,GAAgB,UAAZhL,GAAmC,UAAZA,EAAqB,CAC5C,IAAM2L,EAAkBpD,EACxBoD,EAAgBC,cAAgBvQ,EAAEwQ,OAC5B,SACA,SACNF,EAAgBG,oBAAsBzQ,EAAE0Q,YACxCJ,EAAgBK,qBAAuB3Q,EAAE4Q,aACzCN,EAAgBO,cAAgB7Q,EAAE8Q,MAClCR,EAAgBS,aAAe/Q,EAAEgR,KACjCV,EAAgBW,eAAiBjR,EAAEkR,MACvC,CACKtF,IACG5L,EAAEmR,aACFjE,EAAWkE,cAAgBpR,EAAEmR,YAE7BnR,EAAEqR,YACFnE,EAAWoE,aAAetR,EAAEqR,YAGpC,GAAIxE,EAAW,CACX,IAAA0E,EAA0BvR,EAAEwR,wBAApBlD,EAAKiD,EAALjD,MAAOE,EAAM+C,EAAN/C,OACftB,EAAa,CACTuE,MAAOvE,EAAWuE,MAClBC,SAAQ3P,GAAAA,OAAKuM,EAAS,MACtBqD,UAAS,GAAA5P,OAAKyM,EAAM,MAE5B,CACgB,WAAZ7J,GAAyB+G,EAAgBwB,EAAW0E,OAC/C5R,EAAE6R,kBACH3E,EAAW4E,OAAS5E,EAAW0E,YAE5B1E,EAAW0E,KAGtB,IACQG,eAAevO,IAAImB,KACnB8H,GAAkB,EAC1B,CACA,MAAO1E,GACP,CACA,MAAO,CACHnD,KAAM9E,EAASkS,QACfrN,QAAAA,EACAuI,WAAAA,EACArJ,WAAY,GACZoO,MAAOxJ,EAAazI,SAAMgM,EAC1Ba,UAAAA,EACAhB,OAAAA,EACAqG,SAAUzF,EAElB,CApPmB0F,CAAqBnS,EAAG,CAC3BoI,IAAAA,EACA4C,WAAAA,EACAC,cAAAA,EACAE,iBAAAA,EACAzG,iBAAAA,EACAG,YAAAA,EACA0G,eAAAA,EACAC,aAAAA,EACAC,aAAAA,EACAC,gBAAAA,EACAE,kBAAAA,EACAC,OAAAA,IAER,KAAK7L,EAAEoS,UACH,OA2BZ,SAA2BpS,EAAG8K,GAC1B,IAAIzH,EACI6H,EAAkCJ,EAAlCI,UAAWG,EAAuBP,EAAvBO,WAAYQ,EAAWf,EAAXe,OACzBwG,EAAgBrS,EAAEkK,YAAclK,EAAEkK,WAAWvF,QAC/CmJ,EAAc9N,EAAE8N,YACdwE,EAA4B,UAAlBD,QAAmCrG,EAC7CuG,EAA6B,WAAlBF,QAAoCrG,EACrD,GAAIsG,GAAWxE,EAAa,CACxB,IACQ9N,EAAEwS,aAAexS,EAAEyS,kBAEgB,QAA7BpP,EAAKrD,EAAEkK,WAAW0D,aAA0B,IAAPvK,OAAgB,EAASA,EAAGzC,YACvEkN,EAAcrN,EAAoBT,EAAEkK,WAAW0D,OAEtD,CACD,MAAO/H,GACHmK,QAAQC,KAAIlO,wDAAAA,OAAyD8D,GAAO7F,EAChF,CACA8N,EAAcnH,EAAqBmH,EAAalF,IACpD,CACI2J,IACAzE,EAAc,uBAEbwE,IAAYC,GAAYzE,GAAe5C,IACxC4C,EAAczC,EACRA,EAAWyC,EAAa9N,EAAEyK,eAC1BqD,EAAY1M,QAAQ,QAAS,MAEvC,MAAO,CACHwD,KAAM9E,EAAS4S,KACf5E,YAAaA,GAAe,GAC5BwE,QAAAA,EACAzG,OAAAA,EAER,CA7DmB8G,CAAkB3S,EAAG,CACxBkL,UAAAA,EACAG,WAAAA,EACAQ,OAAAA,IAER,KAAK7L,EAAE4S,mBACH,MAAO,CACHhO,KAAM9E,EAAS+S,MACf/E,YAAa,GACbjC,OAAAA,GAER,KAAK7L,EAAE8S,aACH,MAAO,CACHlO,KAAM9E,EAASiT,QACfjF,YAAa9N,EAAE8N,aAAe,GAC9BjC,OAAAA,GAER,QACI,OAAO,EAEnB,CAkNA,SAASmH,EAAcC,GACnB,OAAIA,QACO,GAGAA,EAAUjO,aAEzB,CAyEA,SAASkO,EAAoBlT,EAAG8K,GAC5B,IAAQ1C,EAAyZ0C,EAAzZ1C,IAAK2C,EAAoZD,EAApZC,OAAQC,EAA4YF,EAA5YE,WAAYC,EAAgYH,EAAhYG,cAAeV,EAAiXO,EAAjXP,cAAeC,EAAkWM,EAAlWN,iBAAgB2I,EAAkVrI,EAAhVsI,UAAAA,OAAY,IAAHD,GAAQA,EAAAE,EAA+TvI,EAA7TK,iBAAAA,OAAmB,IAAHkI,GAAOA,EAAAC,EAAsSxI,EAApSpG,iBAAAA,OAAgB,IAAA4O,EAAG,CAAE,EAAAA,EAAEjI,EAA6QP,EAA7QO,WAAYxG,EAAiQiG,EAAjQjG,YAAa0O,EAAoPzI,EAApPyI,eAAcC,EAAsO1I,EAApOS,eAAAA,OAAc,IAAAiI,EAAG,CAAE,EAAAA,EAAAC,EAAiN3I,EAA/MU,aAAAA,OAAe,IAAHiI,GAAQA,EAAAC,EAA2L5I,EAAzLW,aAAAA,OAAe,IAAHiI,GAAQA,EAAEC,EAAmK7I,EAAnK6I,YAAaC,EAAsJ9I,EAAtJ8I,aAAYC,EAA0I/I,EAAxIgJ,kBAAAA,OAAoB,IAAHD,EAAG,IAAIA,EAAEE,EAA8GjJ,EAA9GiJ,iBAAgBC,EAA8FlJ,EAA5FmJ,sBAAAA,OAAwB,IAAHD,EAAG,IAAIA,EAAAE,EAAgEpJ,EAA9DY,gBAAAA,OAAkB,IAAHwI,EAAG,WAAA,OAAM,CAAK,EAAAA,EAAAC,EAAiCrJ,EAA/Bc,kBAAAA,OAAoB,IAAHuI,GAAQA,EACrZjJ,EAAcJ,EAAdI,UACNkJ,EAAoCtJ,EAA9BuJ,mBAAAA,OAAqB,IAAHD,GAAOA,GAC1BlJ,GACDlL,EAAE6D,aAEFqH,EAAYZ,EAAgBtK,EAAGuK,EAAeC,OADTwB,IAAdd,IAG3B,IAoBI5H,EApBEgR,EAAkBzJ,EAAc7K,EAAG,CACrCoI,IAAAA,EACA2C,OAAAA,EACAC,WAAAA,EACAC,cAAAA,EACAC,UAAAA,EACAC,iBAAAA,EACAzG,iBAAAA,EACA2G,WAAAA,EACAxG,YAAAA,EACA0G,eAAAA,EACAC,aAAAA,EACAC,aAAAA,EACAC,gBAAAA,EACAE,kBAAAA,IAEJ,IAAK0I,EAED,OADAtE,QAAQC,KAAKjQ,EAAG,kBACT,KAIPsD,EADAyH,EAAOe,QAAQ9L,GACV+K,EAAOpH,MAAM3D,IAvG1B,SAAyBuU,EAAIhB,GACzB,GAAIA,EAAeiB,SAAWD,EAAG3P,OAAS9E,EAASiT,QAC/C,OAAO,EAEN,GAAIwB,EAAG3P,OAAS9E,EAASkS,QAAS,CACnC,GAAIuB,EAAekB,SACC,WAAfF,EAAG5P,SACgB,SAAf4P,EAAG5P,UACuB,YAAtB4P,EAAGrH,WAAWQ,KACW,kBAAtB6G,EAAGrH,WAAWQ,MACG,WAArB6G,EAAGrH,WAAWwH,IACF,SAAfH,EAAG5P,SACsB,aAAtB4P,EAAGrH,WAAWQ,KACgB,iBAAvB6G,EAAGrH,WAAWhL,MACwB,OAA7CoD,EAAqBiP,EAAGrH,WAAWhL,OAC3C,OAAO,EAEN,GAAIqR,EAAeoB,cACH,SAAfJ,EAAG5P,SAA4C,kBAAtB4P,EAAGrH,WAAWQ,KACrB,SAAf6G,EAAG5P,UACCqO,EAAcuB,EAAGrH,WAAWnE,MAAMjD,MAAM,sCACC,qBAAtCkN,EAAcuB,EAAGrH,WAAWnE,OACS,SAArCiK,EAAcuB,EAAGrH,WAAWQ,MACS,qBAArCsF,EAAcuB,EAAGrH,WAAWQ,MACS,kBAArCsF,EAAcuB,EAAGrH,WAAWQ,OACxC,OAAO,EAEN,GAAmB,SAAf6G,EAAG5P,QAAoB,CAC5B,GAAI4O,EAAeqB,sBACf5B,EAAcuB,EAAGrH,WAAWnE,MAAMjD,MAAM,0BACxC,OAAO,EAEN,GAAIyN,EAAesB,iBACnB7B,EAAcuB,EAAGrH,WAAW4H,UAAUhP,MAAM,sBACzCkN,EAAcuB,EAAGrH,WAAWnE,MAAMjD,MAAM,mBACF,cAAtCkN,EAAcuB,EAAGrH,WAAWnE,OAChC,OAAO,EAEN,GAAIwK,EAAewB,iBACmB,WAAtC/B,EAAcuB,EAAGrH,WAAWnE,OACa,cAAtCiK,EAAcuB,EAAGrH,WAAWnE,OACU,YAAtCiK,EAAcuB,EAAGrH,WAAWnE,OAChC,OAAO,EAEN,GAAIwK,EAAeyB,wBACYhJ,IAAhCuI,EAAGrH,WAAW,cACd,OAAO,EAEN,GAAIqG,EAAe0B,qBACmB,WAAtCjC,EAAcuB,EAAGrH,WAAWnE,OACa,cAAtCiK,EAAcuB,EAAGrH,WAAWnE,OACU,cAAtCiK,EAAcuB,EAAGrH,WAAWnE,OACU,cAAtCiK,EAAcuB,EAAGrH,WAAWnE,OACU,WAAtCiK,EAAcuB,EAAGrH,WAAWnE,OAC5BiK,EAAcuB,EAAGrH,WAAW4H,UAAUhP,MAAM,cAC5CkN,EAAcuB,EAAGrH,WAAW4H,UAAUhP,MAAM,cAChD,OAAO,EAEN,GAAIyN,EAAe2B,uBACmB,6BAAtClC,EAAcuB,EAAGrH,WAAWnE,OACa,wBAAtCiK,EAAcuB,EAAGrH,WAAWnE,OACU,eAAtCiK,EAAcuB,EAAGrH,WAAWnE,OACU,oBAAtCiK,EAAcuB,EAAGrH,WAAWnE,OACU,cAAtCiK,EAAcuB,EAAGrH,WAAWnE,OACU,iBAAtCiK,EAAcuB,EAAGrH,WAAWnE,OACU,+BAAtCiK,EAAcuB,EAAGrH,WAAWnE,OAChC,OAAO,CAEf,CACJ,CACA,OAAO,CACX,CAkCaoM,CAAgBb,EAAiBf,KACpCc,GACEC,EAAgB1P,OAAS9E,EAAS4S,MACjC4B,EAAgBhC,SAChBgC,EAAgBxG,YAAY1M,QAAQ,cAAe,IAAIS,QAIvDyE,IAHAD,EAKT,IAAM+O,EAAiB/U,OAAOgV,OAAOf,EAAiB,CAAEhR,GAAAA,IAExD,GADAyH,EAAOuK,IAAItV,EAAGoV,GACV9R,IAAO+C,EACP,OAAO,KAEPsN,GACAA,EAAY3T,GAEhB,IAAIuV,GAAenC,EACnB,GAAIgC,EAAexQ,OAAS9E,EAASkS,QAAS,CAC1CuD,EAAcA,IAAgBH,EAAevI,iBACtCuI,EAAevI,UACtB,IAAM1M,EAAaH,EAAEG,WACjBA,GAAcC,EAAkBD,KAChCiV,EAAeI,cAAe,EACtC,CACA,IAAKJ,EAAexQ,OAAS9E,EAASsM,UAClCgJ,EAAexQ,OAAS9E,EAASkS,UACjCuD,EAAa,CACThC,EAAekC,gBACfL,EAAexQ,OAAS9E,EAASkS,SACN,SAA3BoD,EAAezQ,UACf0P,GAAqB,GAEzB,IAAMqB,EAAgB,CAClBtN,IAAAA,EACA2C,OAAAA,EACAC,WAAAA,EACAC,cAAAA,EACAC,UAAAA,EACAX,cAAAA,EACAC,iBAAAA,EACA4I,UAAAA,EACAjI,iBAAAA,EACAzG,iBAAAA,EACA2G,WAAAA,EACAxG,YAAAA,EACA0O,eAAAA,EACAhI,eAAAA,EACAC,aAAAA,EACAC,aAAAA,EACA4I,mBAAAA,EACAV,YAAAA,EACAC,aAAAA,EACAE,kBAAAA,EACAC,iBAAAA,EACAE,sBAAAA,EACAvI,gBAAAA,GAEJ,GAAI0J,EAAexQ,OAAS9E,EAASkS,SACN,aAA3BoD,EAAezQ,cACqBqH,IAApCoJ,EAAelI,WAAW9J,YAE1B,IAAAuS,IAAAA,IAAAC,GAAqB9U,MAAMC,KAAKf,EAAE6D,YAAW8R,EAAAC,GAAA/T,OAAA8T,IAAE,CAA1C,IACKE,GAAsB3C,EADf0C,GAAAD,GAC2CD,GACpDG,IACAT,EAAevR,WAAWzB,KAAKyT,GAEvC,CAEJ,GA38BR,SAAmB7V,GACf,OAAOA,EAAEgK,WAAahK,EAAEiK,YAC5B,CAy8BY6L,CAAU9V,IAAMA,EAAEG,WAClB,IAAA4V,IAAAA,KAAAC,GAAqBlV,MAAMC,KAAKf,EAAEG,WAAW0D,YAAWkS,GAAAC,GAAAnU,OAAAkU,KAAE,CAArD,IACKF,GAAsB3C,EADf8C,GAAAD,IAC2CL,GACpDG,KACAzV,EAAkBJ,EAAEG,cACf0V,GAAoBI,UAAW,GACpCb,EAAevR,WAAWzB,KAAKyT,IAEvC,CAER,CAkFA,OAjFI7V,EAAEkK,YACFnK,EAAaC,EAAEkK,aACf9J,EAAkBJ,EAAEkK,cACpBkL,EAAea,UAAW,GAE1Bb,EAAexQ,OAAS9E,EAASkS,SACN,WAA3BoD,EAAezQ,SAnhBvB,SAA0BuR,EAAUC,EAAUrC,GAC1C,IAAMsC,EAAMF,EAASG,cACrB,GAAKD,EAAL,CAGA,IACIE,EADAC,GAAQ,EAEZ,IACID,EAAaF,EAAIvN,SAASyN,UAC7B,CACD,MAAOjV,GACH,MACJ,CACA,GAAmB,aAAfiV,EAAJ,CAcA,IAAME,EAAW,cACjB,GAAIJ,EAAIxQ,SAAS1D,OAASsU,GACtBN,EAAStE,MAAQ4E,GACA,KAAjBN,EAAStE,IAET,OADA6E,WAAWN,EAAU,GACdD,EAAS7F,iBAAiB,OAAQ8F,GAE7CD,EAAS7F,iBAAiB,OAAQ8F,EARlC,KAbA,CACI,IAAMO,EAAQD,YAAW,WAChBF,IACDJ,IACAI,GAAQ,EAEf,GAAEzC,GACHoC,EAAS7F,iBAAiB,QAAQ,WAC9BsG,aAAaD,GACbH,GAAQ,EACRJ,GACJ,GAEJ,CAtBA,CA+BJ,CAifQS,CAAiB5W,GAAG,WAChB,IAAM6W,EAAY7W,EAAE6R,gBACpB,GAAIgF,GAAajD,EAAc,CAC3B,IAAMkD,EAAuB5D,EAAoB2D,EAAW,CACxDzO,IAAKyO,EACL9L,OAAAA,EACAC,WAAAA,EACAC,cAAAA,EACAC,UAAAA,EACAX,cAAAA,EACAC,iBAAAA,EACA4I,WAAW,EACXjI,iBAAAA,EACAzG,iBAAAA,EACA2G,WAAAA,EACAxG,YAAAA,EACA0O,eAAAA,EACAhI,eAAAA,EACAC,aAAAA,EACAC,aAAAA,EACA4I,mBAAAA,EACAV,YAAAA,EACAC,aAAAA,EACAE,kBAAAA,EACAC,iBAAAA,EACAE,sBAAAA,EACAvI,gBAAAA,IAEAoL,GACAlD,EAAa5T,EAAG8W,EAExB,CACH,GAAEhD,GAEHsB,EAAexQ,OAAS9E,EAASkS,SACN,SAA3BoD,EAAezQ,SAC0B,iBAAlCyQ,EAAelI,WAAWQ,MACE,eAAlC0H,EAAelI,WAAWQ,KACY,YAAlC0H,EAAelI,WAAWQ,KACmB,iBAAnC0H,EAAelI,WAAWhL,MACwB,QAAzDoD,EAAqB8P,EAAelI,WAAWhL,QAxhB/D,SAA8B6U,EAAMZ,EAAUa,GAC1C,IACIC,EADAV,GAAQ,EAEZ,IACIU,EAAmBF,EAAKnJ,KAC3B,CACD,MAAOvM,GACH,MACJ,CACA,IAAI4V,EAAJ,CAEA,IAAMP,EAAQD,YAAW,WAChBF,IACDJ,IACAI,GAAQ,EAEf,GAAES,GACHD,EAAK1G,iBAAiB,QAAQ,WAC1BsG,aAAaD,GACbH,GAAQ,EACRJ,GACJ,GAXI,CAYR,CAmgBQe,CAAqBlX,GAAG,WACpB,GAAI+T,EAAkB,CAClB,IAAMoD,EAAqBjE,EAAoBlT,EAAG,CAC9CoI,IAAAA,EACA2C,OAAAA,EACAC,WAAAA,EACAC,cAAAA,EACAC,UAAAA,EACAX,cAAAA,EACAC,iBAAAA,EACA4I,WAAW,EACXjI,iBAAAA,EACAzG,iBAAAA,EACA2G,WAAAA,EACAxG,YAAAA,EACA0O,eAAAA,EACAhI,eAAAA,EACAC,aAAAA,EACAC,aAAAA,EACA4I,mBAAAA,EACAV,YAAAA,EACAC,aAAAA,EACAE,kBAAAA,EACAC,iBAAAA,EACAE,sBAAAA,EACAvI,gBAAAA,IAEAyL,GACApD,EAAiB/T,EAAGmX,EAE5B,CACH,GAAElD,GAEAmB,CACX,CChjCA,SAASgC,EAAGxS,EAAMyS,GAAuB,IAAnBC,EAAMC,UAAA1V,OAAA,QAAAmK,IAAAuL,UAAA,GAAAA,UAAA,GAAG1O,SACrBiC,EAAU,CAAE0M,SAAS,EAAMC,SAAS,GAE1C,OADAH,EAAOjH,iBAAiBzL,EAAMyS,EAAIvM,GAC3B,WAAA,OAAMwM,EAAO1H,oBAAoBhL,EAAMyS,EAAIvM,EAAQ,CAC9D,CACA,IAAM4M,EAAiC,4NAKnCC,EAAU,CACV3W,IAAK,CAAE,EACP2C,MAAK,WAED,OADAqM,QAAQ3O,MAAMqW,IACN,CACX,EACDpT,QAAO,WAEH,OADA0L,QAAQ3O,MAAMqW,GACP,IACV,EACD1T,kBAAiB,WACbgM,QAAQ3O,MAAMqW,EACjB,EACDzT,IAAG,WAEC,OADA+L,QAAQ3O,MAAMqW,IACP,CACV,EACDE,MAAK,WACD5H,QAAQ3O,MAAMqW,EAClB,GAYJ,SAASG,EAASC,EAAMC,GAAoB,IAAdjN,EAAOyM,UAAA1V,OAAA,QAAAmK,IAAAuL,UAAA,GAAAA,UAAA,GAAG,CAAA,EAChCS,EAAU,KACVC,EAAW,EACf,OAAO,WAAmB,IAAA,IAAAC,EAAAX,UAAA1V,OAANsW,EAAIrX,IAAAA,MAAAoX,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAb,UAAAa,GACpB,IAAMC,EAAMC,KAAKD,MACZJ,IAAgC,IAApBnN,EAAQyN,UACrBN,EAAWI,GAEf,IAAMG,EAAYT,GAAQM,EAAMJ,GAC1BQ,EAAU5V,KACZ2V,GAAa,GAAKA,EAAYT,GAC1BC,IACArB,aAAaqB,GACbA,EAAU,MAEdC,EAAWI,EACXP,EAAKY,MAAMD,EAASN,IAEdH,IAAgC,IAArBlN,EAAQ6N,WACzBX,EAAUvB,YAAW,WACjBwB,GAA+B,IAApBnN,EAAQyN,QAAoB,EAAID,KAAKD,MAChDL,EAAU,KACVF,EAAKY,MAAMD,EAASN,EACvB,GAAEK,IAGf,CACA,SAASI,GAAWtB,EAAQnU,EAAK0V,EAAGC,GAAyB,IAAd1C,EAAGmB,UAAA1V,OAAA,QAAAmK,IAAAuL,UAAA,GAAAA,UAAA,GAAG5R,OAC3CoT,EAAW3C,EAAI/V,OAAO2Y,yBAAyB1B,EAAQnU,GAa7D,OAZAiT,EAAI/V,OAAO4Y,eAAe3B,EAAQnU,EAAK2V,EACjCD,EACA,CACEzU,IAAG,SAAChB,GAAO,IAAAM,EAAAb,KACP4T,YAAW,WACPoC,EAAEzU,IAAI5D,KAAKkD,EAAMN,EACpB,GAAE,GACC2V,GAAYA,EAAS3U,KACrB2U,EAAS3U,IAAI5D,KAAKqC,KAAMO,EAEhC,IAED,WAAA,OAAMwV,GAAWtB,EAAQnU,EAAK4V,GAAY,CAAA,GAAI,EAAK,CAC9D,CACA,SAASG,GAAMC,EAAQpQ,EAAMqQ,GACzB,IACI,KAAMrQ,KAAQoQ,GACV,OAAO,WAAM,EAGjB,IAAMJ,EAAWI,EAAOpQ,GAClBsQ,EAAUD,EAAYL,GAW5B,MAVuB,mBAAZM,IACPA,EAAQ/Y,UAAY+Y,EAAQ/Y,WAAa,CAAA,EACzCD,OAAOiZ,iBAAiBD,EAAS,CAC7BE,mBAAoB,CAChBC,YAAY,EACZpW,MAAO2V,MAInBI,EAAOpQ,GAAQsQ,EACR,WACHF,EAAOpQ,GAAQgQ,EAEtB,CACD,MAAO1V,GACH,OAAO,WAAM,CAEjB,CACJ,CA/EsB,oBAAXsC,QAA0BA,OAAO8T,OAAS9T,OAAO+T,UACxD/B,EAAU,IAAI8B,MAAM9B,EAAS,CACzBnU,aAAI8T,EAAQqC,EAAMC,GAId,MAHa,QAATD,GACA3J,QAAQ3O,MAAMqW,GAEXgC,QAAQlW,IAAI8T,EAAQqC,EAAMC,EACrC,KAyER,IAAIC,GAAevB,KAAKD,IAIxB,SAASyB,GAAgB1D,GACrB,IAAI/S,EAAI0W,EAAIC,EAAIC,EAAIC,EAAIC,EAClB/R,EAAMgO,EAAIvN,SAChB,MAAO,CACHuR,KAAMhS,EAAIiS,iBACJjS,EAAIiS,iBAAiBlJ,gBACDnF,IAApBoK,EAAIkE,YACAlE,EAAIkE,aACHlS,aAAiC,EAASA,EAAImS,gBAAgBpJ,cAC+D,QAA1H4I,EAAmE,QAA7D1W,EAAK+E,aAAiC,EAASA,EAAIoS,YAAyB,IAAPnX,OAAgB,EAASA,EAAGoH,qBAAkC,IAAPsP,OAAgB,EAASA,EAAG5I,cACjG,QAA7D6I,EAAK5R,aAAiC,EAASA,EAAIoS,YAAyB,IAAPR,OAAgB,EAASA,EAAG7I,aACnG,EACZsJ,IAAKrS,EAAIiS,iBACHjS,EAAIiS,iBAAiBhJ,eACDrF,IAApBoK,EAAIsE,YACAtE,EAAIsE,aACHtS,aAAiC,EAASA,EAAImS,gBAAgBlJ,aAC+D,QAA1H6I,EAAmE,QAA7DD,EAAK7R,aAAiC,EAASA,EAAIoS,YAAyB,IAAPP,OAAgB,EAASA,EAAGxP,qBAAkC,IAAPyP,OAAgB,EAASA,EAAG7I,aACjG,QAA7D8I,EAAK/R,aAAiC,EAASA,EAAIoS,YAAyB,IAAPL,OAAgB,EAASA,EAAG9I,YACnG,EAEpB,CACA,SAASsJ,KACL,OAAQhV,OAAOiV,aACV/R,SAAS0R,iBAAmB1R,SAAS0R,gBAAgBM,cACrDhS,SAAS2R,MAAQ3R,SAAS2R,KAAKK,YACxC,CACA,SAASC,KACL,OAAQnV,OAAOoV,YACVlS,SAAS0R,iBAAmB1R,SAAS0R,gBAAgBS,aACrDnS,SAAS2R,MAAQ3R,SAAS2R,KAAKQ,WACxC,CACA,SAASC,GAAqB/W,GAC1B,OAAKA,EAGMA,EAAK8F,WAAa9F,EAAK+F,aAC5B/F,EACAA,EAAKuG,cAJA,IAMf,CACA,SAASyQ,GAAUhX,EAAM8G,EAAYC,EAAelB,GAChD,IAAK7F,EACD,OAAO,EAEX,IAAMwE,EAAKuS,GAAqB/W,GAChC,IAAKwE,EACD,OAAO,EAEX,IACI,GAA0B,iBAAfsC,EAAyB,CAChC,GAAItC,EAAG0B,UAAUO,SAASK,GACtB,OAAO,EACX,GAAIjB,GAAmD,OAAjCrB,EAAGgC,QAAQ,IAAMM,GACnC,OAAO,CACf,MAEI,GAAIlB,EAAkBpB,EAAIsC,EAAYjB,GAClC,OAAO,CAEnB,CACA,MAAOhC,GACP,CACA,GAAIkD,EAAe,CACf,GAAIvC,EAAGkC,QAAQK,GACX,OAAO,EACX,GAAIlB,GAAgD,OAA9BrB,EAAGgC,QAAQO,GAC7B,OAAO,CACf,CACA,OAAO,CACX,CAIA,SAASkQ,GAAUnb,EAAG+K,GAClB,OAAOA,EAAOpH,MAAM3D,KAAOqG,CAC/B,CACA,SAAS+U,GAAkB9D,EAAQvM,GAC/B,GAAIhL,EAAauX,GACb,OAAO,EAEX,IAAMhU,EAAKyH,EAAOpH,MAAM2T,GACxB,OAAKvM,EAAO9G,IAAIX,MAGZgU,EAAOpN,YACPoN,EAAOpN,WAAWF,WAAasN,EAAOpL,kBAGrCoL,EAAOpN,YAGLkR,GAAkB9D,EAAOpN,WAAYa,GAChD,CACA,SAASsQ,GAAoBC,GACzB,OAAOpb,QAAQob,EAAMC,eACzB,CAkEA,SAASC,GAAmBxb,EAAG+K,GAC3B,OAAO7K,QAAuB,WAAfF,EAAEyb,UAAyB1Q,EAAOxH,QAAQvD,GAC7D,CACA,SAAS0b,GAAuB1b,EAAG+K,GAC/B,OAAO7K,QAAuB,SAAfF,EAAEyb,UACbzb,EAAEgK,WAAahK,EAAEiK,cACjBjK,EAAE2b,cACwB,eAA1B3b,EAAE2b,aAAa,QACf5Q,EAAOxH,QAAQvD,GACvB,CAwBA,SAAS4b,GAAc5b,GACnB,OAAOE,QAAQF,aAA6B,EAASA,EAAEG,WAC3D,CAxMM,iBAAiBiH,KAAKkR,KAAKD,MAAM9X,cACnCsZ,GAAe,WAAA,OAAM,IAAIvB,MAAOuD,SAAS,GAiO5C,IACKC,GAAgB,WAClB,SAAAA,IAAclZ,OAAAkZ,GACVjZ,KAAKS,GAAK,EACVT,KAAKkZ,WAAa,IAAI9Y,QACtBJ,KAAKmZ,WAAa,IAAIjZ,GAC1B,CA+BC,OA/BAG,EAAA4Y,EAAA,CAAA,CAAA3Y,IAAA,QAAAC,MACD,SAAMkK,GACF,IAAIjK,EACJ,OAAkD,QAA1CA,EAAKR,KAAKkZ,WAAWvY,IAAI8J,UAAgC,IAAPjK,EAAgBA,GAAM,CACpF,GAAC,CAAAF,IAAA,MAAAC,MACD,SAAIkK,GACA,OAAOzK,KAAKkZ,WAAW9X,IAAIqJ,EAC/B,GAAC,CAAAnK,IAAA,MAAAC,MACD,SAAIkK,EAAYhK,GACZ,OAAIT,KAAKoB,IAAIqJ,GACFzK,KAAKc,MAAM2J,IAGlB2O,OADOjQ,IAAP1I,EACQT,KAAKS,KAGLA,EACZT,KAAKkZ,WAAW3X,IAAIkJ,EAAY2O,GAChCpZ,KAAKmZ,WAAW5X,IAAI6X,EAAO3O,GACpB2O,GARP,IAAIA,CASR,GAAC,CAAA9Y,IAAA,WAAAC,MACD,SAASE,GACL,OAAOT,KAAKmZ,WAAWxY,IAAIF,IAAO,IACtC,GAAC,CAAAH,IAAA,QAAAC,MACD,WACIP,KAAKkZ,WAAa,IAAI9Y,QACtBJ,KAAKmZ,WAAa,IAAIjZ,IACtBF,KAAKS,GAAK,CACd,GAAC,CAAAH,IAAA,aAAAC,MACD,WACI,OAAOP,KAAKS,IAChB,KAACwY,CAAA,CApCiB,GAsCtB,SAASI,GAAclc,GACnB,IAAIqD,EAAI0W,EACJoC,EAAa,KAIjB,OAHqF,QAA/EpC,EAA8B,QAAxB1W,EAAKrD,EAAEoc,mBAAgC,IAAP/Y,OAAgB,EAASA,EAAG7C,KAAKR,UAAuB,IAAP+Z,OAAgB,EAASA,EAAG/P,YAAcqS,KAAKC,wBACxItc,EAAEoc,cAAcnc,OAChBkc,EAAanc,EAAEoc,cAAcnc,MAC1Bkc,CACX,CAQA,SAASI,GAAgBvc,GACrB,IAAMoI,EAAMpI,EAAEwc,cACd,IAAKpU,EACD,OAAO,EACX,IAAM+T,EAXV,SAA2Bnc,GAGvB,IAFA,IACImc,EADAM,EAAiBzc,EAEbmc,EAAaD,GAAcO,IAC/BA,EAAiBN,EACrB,OAAOM,CACX,CAKuBC,CAAkB1c,GACrC,OAAOoI,EAAIuC,SAASwR,EACxB,CACA,SAASQ,GAAM3c,GACX,IAAMoI,EAAMpI,EAAEwc,cACd,QAAKpU,IAEEA,EAAIuC,SAAS3K,IAAMuc,GAAgBvc,GAC9C,CCtZA,IAAI4c,GAA6B,SAACC,GAQhC,OAPAA,EAAWA,EAA6B,iBAAI,GAAK,mBACjDA,EAAWA,EAAiB,KAAI,GAAK,OACrCA,EAAWA,EAAyB,aAAI,GAAK,eAC7CA,EAAWA,EAAgC,oBAAI,GAAK,sBACpDA,EAAWA,EAAiB,KAAI,GAAK,OACrCA,EAAWA,EAAmB,OAAI,GAAK,SACvCA,EAAWA,EAAmB,OAAI,GAAK,SAChCA,CACT,CATiC,CAS9BD,IAAa,CAAA,GACZE,GAAqC,SAACC,GAkBxC,OAjBAA,EAAmBA,EAA6B,SAAI,GAAK,WACzDA,EAAmBA,EAA8B,UAAI,GAAK,YAC1DA,EAAmBA,EAAqC,iBAAI,GAAK,mBACjEA,EAAmBA,EAA2B,OAAI,GAAK,SACvDA,EAAmBA,EAAmC,eAAI,GAAK,iBAC/DA,EAAmBA,EAA0B,MAAI,GAAK,QACtDA,EAAmBA,EAA8B,UAAI,GAAK,YAC1DA,EAAmBA,EAAqC,iBAAI,GAAK,mBACjEA,EAAmBA,EAAmC,eAAI,GAAK,iBAC/DA,EAAmBA,EAAmC,eAAI,GAAK,iBAC/DA,EAAmBA,EAAyB,KAAI,IAAM,OACtDA,EAAmBA,EAAwB,IAAI,IAAM,MACrDA,EAAmBA,EAAyB,KAAI,IAAM,OACtDA,EAAmBA,EAAqC,iBAAI,IAAM,mBAClEA,EAAmBA,EAA8B,UAAI,IAAM,YAC3DA,EAAmBA,EAAsC,kBAAI,IAAM,oBACnEA,EAAmBA,EAAkC,cAAI,IAAM,gBACxDA,CACT,CAnByC,CAmBtCD,IAAqB,CAAA,GACpBE,GAAqC,SAACC,GAYxC,OAXAA,EAAmBA,EAA4B,QAAI,GAAK,UACxDA,EAAmBA,EAA8B,UAAI,GAAK,YAC1DA,EAAmBA,EAA0B,MAAI,GAAK,QACtDA,EAAmBA,EAAgC,YAAI,GAAK,cAC5DA,EAAmBA,EAA6B,SAAI,GAAK,WACzDA,EAAmBA,EAA0B,MAAI,GAAK,QACtDA,EAAmBA,EAAyB,KAAI,GAAK,OACrDA,EAAmBA,EAA+B,WAAI,GAAK,aAC3DA,EAAmBA,EAAuC,mBAAI,GAAK,qBACnEA,EAAmBA,EAA6B,SAAI,GAAK,WACzDA,EAAmBA,EAAgC,YAAI,IAAM,cACtDA,CACT,CAbyC,CAatCD,IAAqB,CAAA,GACpBE,GAAgC,SAACC,GAInC,OAHAA,EAAcA,EAAqB,MAAI,GAAK,QAC5CA,EAAcA,EAAmB,IAAI,GAAK,MAC1CA,EAAcA,EAAqB,MAAI,GAAK,QACrCA,CACT,CALoC,CAKjCD,IAAgB,CAAA,GACfE,GAAiC,SAACC,GAIpC,OAHAA,EAAeA,EAAe,MAAQ,GAAK,KAC3CA,EAAeA,EAAsB,MAAI,GAAK,QAC9CA,EAAeA,EAAuB,OAAI,GAAK,SACxCA,CACT,CALqC,CAKlCD,IAAiB,CAAA,GCpDpB,SAASE,GAAmBtd,GACxB,MAAO,SAAUA,CACrB,CAAC,ICLGud,GDMEC,GAAgB,WAClB,SAAAA,IAAc5a,OAAA4a,GACV3a,KAAKhB,OAAS,EACdgB,KAAK4a,KAAO,KACZ5a,KAAK6a,KAAO,IAChB,CA6EC,OA7EAxa,EAAAsa,EAAA,CAAA,CAAAra,IAAA,MAAAC,MACD,SAAIua,GACA,GAAIA,GAAY9a,KAAKhB,OACjB,MAAM,IAAI+b,MAAM,kCAGpB,IADA,IAAIC,EAAUhb,KAAK4a,KACVK,EAAQ,EAAGA,EAAQH,EAAUG,IAClCD,GAAWA,aAAyC,EAASA,EAAQE,OAAS,KAElF,OAAOF,CACX,GAAC,CAAA1a,IAAA,UAAAC,MACD,SAAQpD,GACJ,IAAMkE,EAAO,CACTd,MAAOpD,EACPiY,SAAU,KACV8F,KAAM,MAGV,GADA/d,EAAEge,KAAO9Z,EACLlE,EAAEyS,iBAAmB6K,GAAmBtd,EAAEyS,iBAAkB,CAC5D,IAAMoL,EAAU7d,EAAEyS,gBAAgBuL,KAAKD,KACvC7Z,EAAK6Z,KAAOF,EACZ3Z,EAAK+T,SAAWjY,EAAEyS,gBAAgBuL,KAClChe,EAAEyS,gBAAgBuL,KAAKD,KAAO7Z,EAC1B2Z,IACAA,EAAQ5F,SAAW/T,EAE1B,MACI,GAAIlE,EAAEwS,aACP8K,GAAmBtd,EAAEwS,cACrBxS,EAAEwS,YAAYwL,KAAK/F,SAAU,CAC7B,IAAM4F,EAAU7d,EAAEwS,YAAYwL,KAAK/F,SACnC/T,EAAK+T,SAAW4F,EAChB3Z,EAAK6Z,KAAO/d,EAAEwS,YAAYwL,KAC1Bhe,EAAEwS,YAAYwL,KAAK/F,SAAW/T,EAC1B2Z,IACAA,EAAQE,KAAO7Z,EAEvB,MAEQrB,KAAK4a,OACL5a,KAAK4a,KAAKxF,SAAW/T,GAEzBA,EAAK6Z,KAAOlb,KAAK4a,KACjB5a,KAAK4a,KAAOvZ,EAEE,OAAdA,EAAK6Z,OACLlb,KAAK6a,KAAOxZ,GAEhBrB,KAAKhB,QACT,GAAC,CAAAsB,IAAA,aAAAC,MACD,SAAWpD,GACP,IAAM6d,EAAU7d,EAAEge,KACbnb,KAAK4a,OAGLI,EAAQ5F,UAUT4F,EAAQ5F,SAAS8F,KAAOF,EAAQE,KAC5BF,EAAQE,KACRF,EAAQE,KAAK9F,SAAW4F,EAAQ5F,SAGhCpV,KAAK6a,KAAOG,EAAQ5F,WAdxBpV,KAAK4a,KAAOI,EAAQE,KAChBlb,KAAK4a,KACL5a,KAAK4a,KAAKxF,SAAW,KAGrBpV,KAAK6a,KAAO,MAYhB1d,EAAEge,aACKhe,EAAEge,KAEbnb,KAAKhB,SACT,KAAC2b,CAAA,CAlFiB,GAoFhBS,GAAU,SAAC3a,EAAI4a,GAAQ,MAAA,GAAAnc,OAAQuB,EAAEvB,KAAAA,OAAImc,EAAQ,EAC7CC,GAAc,WAChB,SAAAA,IAAc,IAAAza,EAAAb,KAAAD,OAAAub,GACVtb,KAAKub,QAAS,EACdvb,KAAKwb,QAAS,EACdxb,KAAKyb,MAAQ,GACbzb,KAAKqK,WAAa,GAClBrK,KAAK0b,aAAe,IAAItb,QACxBJ,KAAK2b,QAAU,GACf3b,KAAK4b,WAAa,GAClB5b,KAAK6b,SAAW,GAChB7b,KAAK8b,SAAW,IAAIC,IACpB/b,KAAKgc,SAAW,IAAID,IACpB/b,KAAKic,WAAa,IAAIF,IACtB/b,KAAKkc,iBAAmB,SAACC,GACrBA,EAAUlb,QAAQJ,EAAKub,iBACvBvb,EAAKwb,QAETrc,KAAKqc,KAAO,WACR,IAAIxb,EAAK0a,SAAU1a,EAAK2a,OAAxB,CAyEA,IAtEA,IAAMc,EAAO,GACPC,EAAW,IAAIR,IACfS,EAAU,IAAI7B,GACd8B,EAAY,SAACtf,GAGf,IAFA,IAAIuf,EAAKvf,EACLwf,EAASnZ,EACNmZ,IAAWnZ,GAEdmZ,GADAD,EAAKA,GAAMA,EAAG/M,cACC9O,EAAKqH,OAAOpH,MAAM4b,GAErC,OAAOC,GAELC,EAAU,SAACzf,GACb,GAAKA,EAAEkK,YACFyS,GAAM3c,IACkB,aAAzBA,EAAEkK,WAAWvF,QAFjB,CAKA,IAAMuZ,EAAWne,EAAaC,EAAEkK,YAC1BxG,EAAKqH,OAAOpH,MAAMuY,GAAclc,IAChC0D,EAAKqH,OAAOpH,MAAM3D,EAAEkK,YACpBsV,EAASF,EAAUtf,GACzB,IAAkB,IAAdke,IAA+B,IAAZsB,EACnB,OAAOH,EAAQK,QAAQ1f,GAE3B,IAAMuU,EAAKrB,EAAoBlT,EAAG,CAC9BoI,IAAK1E,EAAK0E,IACV2C,OAAQrH,EAAKqH,OACbC,WAAYtH,EAAKsH,WACjBC,cAAevH,EAAKuH,cACpBV,cAAe7G,EAAK6G,cACpBC,iBAAkB9G,EAAK8G,iBACvB4I,WAAW,EACXxH,mBAAmB,EACnBT,iBAAkBzH,EAAKyH,iBACvBzG,iBAAkBhB,EAAKgB,iBACvB2G,WAAY3H,EAAK2H,WACjBxG,YAAanB,EAAKmB,YAClB0O,eAAgB7P,EAAK6P,eACrBhI,eAAgB7H,EAAK6H,eACrBE,aAAc/H,EAAK+H,aACnBD,aAAc9H,EAAK8H,aACnBmI,YAAa,SAACgM,GACNnE,GAAmBmE,EAAUjc,EAAKqH,SAClCrH,EAAKkc,cAAcC,UAAUF,GAE7BjE,GAAuBiE,EAAUjc,EAAKqH,SACtCrH,EAAKoc,kBAAkBC,iBAAiBJ,GAExC/D,GAAc5b,IACd0D,EAAKsc,iBAAiBC,cAAcjgB,EAAEG,WAAYuD,EAAK0E,IAE9D,EACDwL,aAAc,SAACsM,EAAQC,GACnBzc,EAAKkc,cAAcQ,aAAaF,EAAQC,GACxCzc,EAAKsc,iBAAiBK,oBAAoBH,EAC7C,EACDnM,iBAAkB,SAACgD,EAAMoJ,GACrBzc,EAAKoc,kBAAkBQ,kBAAkBvJ,EAAMoJ,EACnD,IAEA5L,IACA4K,EAAK/c,KAAK,CACN8b,SAAAA,EACAsB,OAAAA,EACAtb,KAAMqQ,IAEV6K,EAAS9J,IAAIf,EAAGjR,IAlDpB,GAqDGI,EAAK+a,WAAW5c,QACnB6B,EAAKqH,OAAO/G,kBAAkBN,EAAK+a,WAAW8B,SACjD,IAC4B7Y,EAD5BC,EAAAC,EACelE,EAAKmb,UAAQ,IAA7B,IAAAlX,EAAAjH,MAAAgH,EAAAC,EAAA3H,KAAA6H,MAA+B,CAAA,IAApB7H,EAAC0H,EAAAtE,MACJod,GAAgB9c,EAAK8a,QAASxe,EAAG0D,EAAKqH,UACrCrH,EAAKmb,SAAS5a,IAAIjE,EAAEkK,aAGzBuV,EAAQzf,EACZ,CAAC,CAAA,MAAA6F,GAAA8B,EAAAI,EAAAlC,EAAA,CAAA,QAAA8B,EAAAK,GAAA,CAAA,IAC4ByY,EAD5BC,EAAA9Y,EACelE,EAAKib,UAAQ,IAA7B,IAAA+B,EAAAhgB,MAAA+f,EAAAC,EAAA1gB,KAAA6H,MAA+B,CAAA,IAApB7H,EAACygB,EAAArd,MACHud,GAAgBjd,EAAKob,WAAY9e,IACjCwgB,GAAgB9c,EAAK8a,QAASxe,EAAG0D,EAAKqH,QAGlC4V,GAAgBjd,EAAKmb,SAAU7e,GACpCyf,EAAQzf,GAGR0D,EAAKob,WAAWxJ,IAAItV,GANpByf,EAAQzf,EAQhB,CAAC,CAAA,MAAA6F,GAAA6a,EAAA3Y,EAAAlC,EAAA,CAAA,QAAA6a,EAAA1Y,GAAA,CAED,IADA,IAAI4Y,EAAY,KACTvB,EAAQxd,QAAQ,CACnB,IAAIqC,EAAO,KACX,GAAI0c,EAAW,CACX,IAAM1C,EAAWxa,EAAKqH,OAAOpH,MAAMid,EAAUxd,MAAM8G,YAC7CsV,EAASF,EAAUsB,EAAUxd,QACjB,IAAd8a,IAA+B,IAAZsB,IACnBtb,EAAO0c,EAEf,CACA,IAAK1c,EAED,IADA,IAAI2c,EAAWxB,EAAQ3B,KAChBmD,GAAU,CACb,IAAMC,EAAQD,EAEd,GADAA,EAAWA,EAAS5I,SAChB6I,EAAO,CACP,IAAM5C,EAAWxa,EAAKqH,OAAOpH,MAAMmd,EAAM1d,MAAM8G,YAE/C,IAAgB,IADDoV,EAAUwB,EAAM1d,OAE3B,SACC,IAAkB,IAAd8a,EAAiB,CACtBha,EAAO4c,EACP,KACJ,CAEI,IAAMC,EAAgBD,EAAM1d,MAC5B,GAAI2d,EAAc7W,YACd6W,EAAc7W,WAAWF,WACrBqS,KAAKC,uBAAwB,CACjC,IAAMH,EAAa4E,EAAc7W,WAC5BjK,KAEL,IAAkB,IADDyD,EAAKqH,OAAOpH,MAAMwY,GACd,CACjBjY,EAAO4c,EACP,KACJ,CACJ,CAER,CACJ,CAEJ,IAAK5c,EAAM,CACP,KAAOmb,EAAQ5B,MACX4B,EAAQ2B,WAAW3B,EAAQ5B,KAAKra,OAEpC,KACJ,CACAwd,EAAY1c,EAAK+T,SACjBoH,EAAQ2B,WAAW9c,EAAKd,OACxBqc,EAAQvb,EAAKd,MACjB,CACA,IAAM6d,EAAU,CACZ3C,MAAO5a,EAAK4a,MACPtd,KAAI,SAAC8D,GACN,IAAM9E,EAAI8E,EAAKZ,KAKf,OAJIlE,EAAEkK,YACuB,aAAzBlK,EAAEkK,WAAWvF,SACbjB,EAAKwd,yBAAyBlhB,EAAEkK,YAE7B,CACH5G,GAAII,EAAKqH,OAAOpH,MAAM3D,GACtBoD,MAAO0B,EAAK1B,MAEpB,IACK+d,QAAO,SAACrc,GAAI,OAAMsa,EAASnb,IAAIa,EAAKxB,GAAG,IACvC6d,QAAO,SAACrc,GAAI,OAAKpB,EAAKqH,OAAO9G,IAAIa,EAAKxB,OAC3C4J,WAAYxJ,EAAKwJ,WACZlM,KAAI,SAACogB,GACN,IAAQlU,EAAekU,EAAflU,WACR,GAAgC,iBAArBA,EAAWmU,MAAoB,CACtC,IAAMC,EAAYtf,KAAKC,UAAUmf,EAAUG,WACrCC,EAAiBxf,KAAKC,UAAUmf,EAAUK,kBAC5CH,EAAUzf,OAASqL,EAAWmU,MAAMxf,SAC/Byf,EAAYE,GAAgB5f,MAAM,QAAQC,SAC3CqL,EAAWmU,MAAMzf,MAAM,QAAQC,SAC/BqL,EAAWmU,MAAQD,EAAUG,UAGzC,CACA,MAAO,CACHje,GAAII,EAAKqH,OAAOpH,MAAMyd,EAAUld,MAChCgJ,WAAYA,EAEpB,IACKiU,QAAO,SAACC,GAAS,OAAMhC,EAASnb,IAAImd,EAAU9d,GAAG,IACjD6d,QAAO,SAACC,GAAS,OAAK1d,EAAKqH,OAAO9G,IAAImd,EAAU9d,OACrDkb,QAAS9a,EAAK8a,QACdW,KAAAA,IAEC8B,EAAQ3C,MAAMzc,QACdof,EAAQ/T,WAAWrL,QACnBof,EAAQzC,QAAQ3c,QAChBof,EAAQ9B,KAAKtd,UAGlB6B,EAAK4a,MAAQ,GACb5a,EAAKwJ,WAAa,GAClBxJ,EAAK6a,aAAe,IAAItb,QACxBS,EAAK8a,QAAU,GACf9a,EAAKib,SAAW,IAAIC,IACpBlb,EAAKmb,SAAW,IAAID,IACpBlb,EAAKob,WAAa,IAAIF,IACtBlb,EAAKgb,SAAW,GAChBhb,EAAKge,WAAWT,GApMhB,GAsMJpe,KAAKqe,yBAA2B,SAACS,GAC7B,IAAIC,EAAOle,EAAK6a,aAAa/a,IAAIme,GAC5BC,IACDA,EAAO,CACH1d,KAAMyd,EACNzU,WAAY,CAAE,EACdqU,UAAW,CAAE,EACbE,iBAAkB,CAAC,GAEvB/d,EAAKwJ,WAAW9K,KAAKwf,GACrBle,EAAK6a,aAAana,IAAIud,EAAUC,IAEpCA,EAAK1U,WAAW9J,MAAQtC,MAAMC,KAAK4gB,EAAS9d,YAAY,SAACge,GAAE,OAAKA,EAAG/T,aAAe,EAAE,IAAE5M,KAAK,KAE/F2B,KAAKoc,gBAAkB,SAAC6C,GACpB,IAAI3G,GAAU2G,EAAExK,OAAQ5T,EAAKqH,QAG7B,OAAQ+W,EAAEld,MACN,IAAK,gBACD,IAAMxB,EAAQ0e,EAAExK,OAAOxJ,YAClBoN,GAAU4G,EAAExK,OAAQ5T,EAAKsH,WAAYtH,EAAKuH,eAAe,IAC1D7H,IAAU0e,EAAErS,UACZ/L,EAAK4a,MAAMlc,KAAK,CACZgB,MAAOkH,EAAgBwX,EAAExK,OAAQ5T,EAAK6G,cAAe7G,EAAK8G,kBAAkB,IAASpH,EAC/EM,EAAK2H,WACD3H,EAAK2H,WAAWjI,EAAO6X,GAAqB6G,EAAExK,SAC9ClU,EAAMhC,QAAQ,QAAS,KAC3BgC,EACNc,KAAM4d,EAAExK,SAGhB,MAEJ,IAAK,aACD,IAAMA,EAASwK,EAAExK,OACbyK,EAAgBD,EAAEC,cAClB3e,EAAQ0e,EAAExK,OAAOqE,aAAaoG,GAClC,GAAsB,UAAlBA,EAA2B,CAC3B,IAAMnd,EAAOQ,EAAakS,GAC1BlU,EAAQmB,EAAe,CACnBE,QAAS6S,EACT5S,iBAAkBhB,EAAKgB,iBACvBC,QAAS2S,EAAO3S,QAChBC,KAAAA,EACAxB,MAAAA,EACAyB,YAAanB,EAAKmB,aAE1B,CACA,GAAIqW,GAAU4G,EAAExK,OAAQ5T,EAAKsH,WAAYtH,EAAKuH,eAAe,IACzD7H,IAAU0e,EAAErS,SACZ,OAEJ,IAAImS,EAAOle,EAAK6a,aAAa/a,IAAIse,EAAExK,QACnC,GAAuB,WAAnBA,EAAO3S,SACW,QAAlBod,IACCre,EAAKgI,gBAAgBtI,GAAQ,CAC9B,GAAKkU,EAAOzF,gBAIR,OAHAkQ,EAAgB,QAKxB,CAgBA,GAfKH,IACDA,EAAO,CACH1d,KAAM4d,EAAExK,OACRpK,WAAY,CAAE,EACdqU,UAAW,CAAE,EACbE,iBAAkB,CAAC,GAEvB/d,EAAKwJ,WAAW9K,KAAKwf,GACrBle,EAAK6a,aAAana,IAAI0d,EAAExK,OAAQsK,IAEd,SAAlBG,GACmB,UAAnBzK,EAAO3S,SAC8B,cAApCmd,EAAErS,UAAY,IAAIzK,eACnBsS,EAAO0K,aAAa,sBAAuB,SAE1CpY,EAAgB0N,EAAO3S,QAASod,KACjCH,EAAK1U,WAAW6U,GAAiBjZ,EAAmBpF,EAAK0E,IAAKpD,EAAYsS,EAAO3S,SAAUK,EAAY+c,GAAgB3e,GACjG,UAAlB2e,GAA2B,CAC3B,IAAKre,EAAKue,cACN,IACIve,EAAKue,cACDpZ,SAASqZ,eAAeC,oBAC/B,CACD,MAAOpa,GACHrE,EAAKue,cAAgBve,EAAK0E,GAC9B,CAEJ,IAAMga,EAAM1e,EAAKue,cAAczZ,cAAc,QACzCsZ,EAAErS,UACF2S,EAAIJ,aAAa,QAASF,EAAErS,UAEhC,IAAAkG,IAAAA,IAAAC,EAAoB9U,MAAMC,KAAKuW,EAAO+J,OAAM1L,EAAAC,EAAA/T,OAAA8T,IAAE,CAAzC,IAAM0M,EAAKzM,EAAAD,GACN2M,EAAWhL,EAAO+J,MAAMkB,iBAAiBF,GACzCG,EAAclL,EAAO+J,MAAMoB,oBAAoBJ,GACjDC,IAAaF,EAAIf,MAAMkB,iBAAiBF,IACxCG,IAAgBJ,EAAIf,MAAMoB,oBAAoBJ,GAE1CT,EAAKL,UAAUc,GADC,KAAhBG,EACwBF,EAGA,CAACA,EAAUE,GAIvCZ,EAAKH,iBAAiBY,GAAS,CAACC,EAAUE,EAElD,CACA,IAAAzM,IAAAA,IAAAC,EAAoBlV,MAAMC,KAAKqhB,EAAIf,OAAMtL,EAAAC,EAAAnU,OAAAkU,IAAE,CAAtC,IAAMsM,EAAKrM,EAAAD,GACiC,KAAzCuB,EAAO+J,MAAMkB,iBAAiBF,KAC9BT,EAAKL,UAAUc,IAAS,EAEhC,CACJ,CAEJ,MAEJ,IAAK,YACD,GAAInH,GAAU4G,EAAExK,OAAQ5T,EAAKsH,WAAYtH,EAAKuH,eAAe,GACzD,OACJ,GAAyB,aAArB6W,EAAExK,OAAO3S,QAET,YADAjB,EAAKwd,yBAAyBY,EAAExK,QAGpCwK,EAAEY,WAAW5e,SAAQ,SAAC9D,GAAC,OAAK0D,EAAKif,QAAQ3iB,EAAG8hB,EAAExK,WAC9CwK,EAAEc,aAAa9e,SAAQ,SAAC9D,GACpB,IAAM6iB,EAASnf,EAAKqH,OAAOpH,MAAM3D,GAC3Bke,EAAWne,EAAa+hB,EAAExK,QAC1B5T,EAAKqH,OAAOpH,MAAMme,EAAExK,OAAOrX,MAC3ByD,EAAKqH,OAAOpH,MAAMme,EAAExK,QACtB4D,GAAU4G,EAAExK,OAAQ5T,EAAKsH,WAAYtH,EAAKuH,eAAe,IACzDkQ,GAAUnb,EAAG0D,EAAKqH,UF/P9C,SAAsB/K,EAAG+K,GACrB,OAA4B,IAArBA,EAAOpH,MAAM3D,EACxB,CE8P6B8iB,CAAa9iB,EAAG0D,EAAKqH,UAGtBrH,EAAKib,SAAS1a,IAAIjE,IAClB+iB,GAAWrf,EAAKib,SAAU3e,GAC1B0D,EAAKob,WAAWxJ,IAAItV,IAEf0D,EAAKib,SAAS1a,IAAI6d,EAAExK,UAAuB,IAAZuL,GAC/BzH,GAAkB0G,EAAExK,OAAQ5T,EAAKqH,UACjCrH,EAAKmb,SAAS5a,IAAIjE,IACvB0D,EAAKgb,SAAST,GAAQ4E,EAAQ3E,IAC9B6E,GAAWrf,EAAKmb,SAAU7e,GAG1B0D,EAAK8a,QAAQpc,KAAK,CACd8b,SAAAA,EACA5a,GAAIuf,EACJ5M,YAAUlW,EAAa+hB,EAAExK,UAAWlX,EAAkB0hB,EAAExK,eAElDtL,KAGdtI,EAAK+a,WAAWrc,KAAKpC,GACzB,MAKZ6C,KAAK8f,QAAU,SAAC3iB,EAAGsX,GACf,IAAI5T,EAAKsf,qBAAqBC,cAAcjjB,EAAG0D,KAE3CA,EAAKib,SAAS1a,IAAIjE,KAAM0D,EAAKmb,SAAS5a,IAAIjE,GAA9C,CAEA,GAAI0D,EAAKqH,OAAOe,QAAQ9L,GAAI,CACxB,GAAImb,GAAUnb,EAAG0D,EAAKqH,QAClB,OAEJrH,EAAKmb,SAASvJ,IAAItV,GAClB,IAAIkjB,EAAW,KACX5L,GAAU5T,EAAKqH,OAAOe,QAAQwL,KAC9B4L,EAAWxf,EAAKqH,OAAOpH,MAAM2T,IAE7B4L,IAA0B,IAAdA,IACZxf,EAAKgb,SAAST,GAAQva,EAAKqH,OAAOpH,MAAM3D,GAAIkjB,KAAa,EAEjE,MAEIxf,EAAKib,SAASrJ,IAAItV,GAClB0D,EAAKob,WAAWlb,OAAO5D,GAEtBkb,GAAUlb,EAAG0D,EAAKsH,WAAYtH,EAAKuH,eAAe,KACnDjL,EAAE6D,WAAWC,SAAQ,SAACqf,GAAM,OAAKzf,EAAKif,QAAQQ,MAC1CvH,GAAc5b,IACdA,EAAEG,WAAW0D,WAAWC,SAAQ,SAACqf,GAC7Bzf,EAAKsf,qBAAqB1N,IAAI6N,EAAQzf,GACtCA,EAAKif,QAAQQ,EAAQnjB,EACzB,IAxBJ,EA4BZ,CAoDC,OApDAkD,EAAAib,EAAA,CAAA,CAAAhb,IAAA,OAAAC,MACD,SAAK0H,GAAS,IAAAsY,EAAAvgB,KACV,CACI,aACA,aACA,gBACA,gBACA,mBACA,mBACA,mBACA,aACA,cACA,kBACA,eACA,eACA,iBACA,iBACA,MACA,SACA,gBACA,oBACA,mBACA,gBACA,wBACFiB,SAAQ,SAACX,GACPigB,EAAKjgB,GAAO2H,EAAQ3H,EACxB,GACJ,GAAC,CAAAA,IAAA,SAAAC,MACD,WACIP,KAAKub,QAAS,EACdvb,KAAKwgB,cAAcC,QACvB,GAAC,CAAAngB,IAAA,WAAAC,MACD,WACIP,KAAKub,QAAS,EACdvb,KAAKwgB,cAAcE,WACnB1gB,KAAKqc,MACT,GAAC,CAAA/b,IAAA,WAAAC,MACD,WACI,OAAOP,KAAKub,MAChB,GAAC,CAAAjb,IAAA,OAAAC,MACD,WACIP,KAAKwb,QAAS,EACdxb,KAAKwgB,cAAcG,MACvB,GAAC,CAAArgB,IAAA,SAAAC,MACD,WACIP,KAAKwb,QAAS,EACdxb,KAAKwgB,cAAcI,SACnB5gB,KAAKqc,MACT,GAAC,CAAA/b,IAAA,QAAAC,MACD,WACIP,KAAKmd,iBAAiBpI,QACtB/U,KAAKwgB,cAAczL,OACvB,KAACuG,CAAA,CAjde,GAmdpB,SAAS4E,GAAWW,EAAS1jB,GACzB0jB,EAAQ9f,OAAO5D,GACfA,EAAE6D,WAAWC,SAAQ,SAACqf,GAAM,OAAKJ,GAAWW,EAASP,KACzD,CACA,SAAS3C,GAAgBhC,EAASxe,EAAG+K,GACjC,OAAuB,IAAnByT,EAAQ3c,QAEL8hB,GAAiBnF,EAASxe,EAAG+K,EACxC,CACA,SAAS4Y,GAAiBnF,EAASxe,EAAG+K,GAClC,IAAQb,EAAelK,EAAfkK,WACR,IAAKA,EACD,OAAO,EAEX,IAAMgU,EAAWnT,EAAOpH,MAAMuG,GAC9B,QAAIsU,EAAQxP,MAAK,SAAC4U,GAAC,OAAKA,EAAEtgB,KAAO4a,CAAQ,KAGlCyF,GAAiBnF,EAAStU,EAAYa,EACjD,CACA,SAAS4V,GAAgBvc,EAAKpE,GAC1B,OAAiB,IAAboE,EAAIyf,MAEDC,GAAiB1f,EAAKpE,EACjC,CACA,SAAS8jB,GAAiB1f,EAAKpE,GAC3B,IAAQkK,EAAelK,EAAfkK,WACR,QAAKA,MAGD9F,EAAIH,IAAIiG,IAGL4Z,GAAiB1f,EAAK8F,GACjC,CC/kBA,SAAS6Z,GAAqBC,GAC1BzG,GAAeyG,CACnB,CACA,SAASC,KACL1G,QAAevR,CACnB,CACA,IAAMkY,GAAkB,SAACC,GACrB,IAAK5G,GACD,OAAO4G,EAaX,OAXsB,WAClB,IACI,OAAOA,EAAEzL,WAAA,EAAAnB,UACZ,CACD,MAAOlW,GACH,GAAIkc,KAAwC,IAAxBA,GAAalc,GAC7B,OAEJ,MAAMA,CACV,EAGR,ECjBM+iB,GAAkB,GACxB,SAASC,GAAe/I,GACpB,IACI,GAAI,iBAAkBA,EAAO,CACzB,IAAM/V,EAAO+V,EAAMgJ,eACnB,GAAI/e,EAAK1D,OACL,OAAO0D,EAAK,EAEnB,MACI,GAAI,SAAU+V,GAASA,EAAM/V,KAAK1D,OACnC,OAAOyZ,EAAM/V,KAAK,EAE1B,CACA,MAAOlC,GACP,CACA,OAAOiY,GAASA,EAAMhE,MAC1B,CACA,SAASiN,GAAqBzZ,EAAS0Z,GACnC,IAAInhB,EAAI0W,EACF0K,EAAiB,IAAItG,GAC3BiG,GAAgBhiB,KAAKqiB,GACrBA,EAAeC,KAAK5Z,GACpB,IAAI6Z,EAAuBhf,OAAOif,kBAC9Bjf,OAAOkf,qBACLC,EAAqJ,QAAhI/K,EAA4E,QAAtE1W,EAAgB,OAAXsC,aAA8B,IAAXA,YAAoB,EAASA,OAAOof,YAAyB,IAAP1hB,OAAgB,EAASA,EAAG2hB,kBAA+B,IAAPjL,OAAgB,EAASA,EAAGvZ,KAAK6C,EAAI,oBACpMyhB,GACAnf,OAAOmf,KACPH,EAAuBhf,OAAOmf,IAElC,IAAMG,EAAW,IAAIN,EAAqBT,GAAgBO,EAAe1F,iBAAiBmG,KAAKT,KAS/F,OARAQ,EAASE,QAAQX,EAAQ,CACrBtX,YAAY,EACZkY,mBAAmB,EACnBC,eAAe,EACfC,uBAAuB,EACvBC,WAAW,EACXC,SAAS,IAENP,CACX,CAoDA,SAASQ,GAA4BC,GAA4E,IAAzEC,EAAkBD,EAAlBC,mBAAoBvd,EAAGsd,EAAHtd,IAAK2C,EAAM2a,EAAN3a,OAAQC,EAAU0a,EAAV1a,WAAYC,EAAaya,EAAbza,cAAe2a,EAAQF,EAARE,SAChG,IAAkC,IAA9BA,EAASC,iBACT,OAAO,WAAM,EAGjB,IAAMC,GAA2C,IAA9BF,EAASC,uBACM7Z,IAA9B4Z,EAASC,iBACP,CAAA,EACAD,EAASC,iBACTE,EAAW,GACbC,EAAqB,KA4EzB,OApBA3lB,OAAOoD,KAAKuZ,IACPmE,QAAO,SAAChe,GAAG,OAAK8iB,OAAOC,MAAMD,OAAO9iB,MACpCA,EAAIgjB,SAAS,eACM,IAApBL,EAAW3iB,EAAc,IACxBW,SAAQ,SAACsiB,GACV,IAAIC,EAAYrhB,EAAYohB,GACtBpC,EA7DS,SAACoC,GAChB,OAAO,SAAC9K,GACJ,IAAMhE,EAAS+M,GAAe/I,GAC9B,IAAIJ,GAAU5D,EAAQtM,EAAYC,GAAe,GAAjD,CAGA,IAAIqb,EAAc,KACdC,EAAeH,EACnB,GAAI,gBAAiB9K,EAAO,CACxB,OAAQA,EAAMgL,aACV,IAAK,QACDA,EAAcpJ,GAAasJ,MAC3B,MACJ,IAAK,QACDF,EAAcpJ,GAAauJ,MAC3B,MACJ,IAAK,MACDH,EAAcpJ,GAAawJ,IAG/BJ,IAAgBpJ,GAAauJ,MACzBzJ,GAAkBoJ,KAAcpJ,GAAkB2J,UAClDJ,EAAe,aAEVvJ,GAAkBoJ,KAAcpJ,GAAkB4J,UACvDL,EAAe,YAGErJ,GAAawJ,GAC1C,MACSrL,GAAoBC,KACzBgL,EAAcpJ,GAAauJ,OAEX,OAAhBH,GACAN,EAAqBM,GAChBC,EAAaM,WAAW,UACzBP,IAAgBpJ,GAAauJ,OAC5BF,EAAaM,WAAW,UACrBP,IAAgBpJ,GAAasJ,SACjCF,EAAc,OAGbtJ,GAAkBoJ,KAAcpJ,GAAkB8J,QACvDR,EAAcN,EACdA,EAAqB,MAEzB,IAAMje,EAAIsT,GAAoBC,GAASA,EAAMC,eAAe,GAAKD,EACjE,GAAKvT,EAAL,CAGA,IAAMzE,EAAKyH,EAAOpH,MAAM2T,GAChByP,EAAqBhf,EAArBgf,QAASC,EAAYjf,EAAZif,QACjB9C,GAAgByB,EAAhBzB,CAAoC7jB,OAAOgV,OAAO,CAAEzQ,KAAMoY,GAAkBuJ,GAAejjB,GAAAA,EAAI+K,EAAG0Y,EAASxY,EAAGyY,GAA4B,OAAhBV,GAAwB,CAAEA,YAAAA,IAHpJ,CA5CA,GAwDYW,CAAWb,GAC3B,GAAIzgB,OAAOuhB,aACP,OAAQlK,GAAkBoJ,IACtB,KAAKpJ,GAAkB2J,UACvB,KAAK3J,GAAkB4J,QACnBP,EAAYA,EAAUjlB,QAAQ,QAAS,WACvC,MACJ,KAAK4b,GAAkBmK,WACvB,KAAKnK,GAAkBoK,SACnB,OAGZrB,EAAS3jB,KAAKgV,EAAGiP,EAAWrC,EAAS5b,GACzC,IACO8b,IAAgB,WACnB6B,EAASjiB,SAAQ,SAACujB,GAAC,OAAKA,MAC5B,GACJ,CACA,SAASC,GAAkBC,GAAkE,IAA/DC,EAAQD,EAARC,SAAUpf,EAAGmf,EAAHnf,IAAK2C,EAAMwc,EAANxc,OAAQC,EAAUuc,EAAVvc,WAAYC,EAAasc,EAAbtc,cAAe2a,EAAQ2B,EAAR3B,SAwB5E,OAAOxO,EAAG,SAvBa8M,GAAgBrM,EAASqM,IAAgB,SAACuD,GAC7D,IAAMnQ,EAAS+M,GAAeoD,GAC9B,GAAKnQ,IACD4D,GAAU5D,EAAQtM,EAAYC,GAAe,GADjD,CAIA,IAAM3H,EAAKyH,EAAOpH,MAAM2T,GACxB,GAAIA,IAAWlP,GAAOA,EAAIsf,YAAa,CACnC,IAAMC,EAAgB7N,GAAgB1R,EAAIsf,aAC1CF,EAAS,CACLlkB,GAAAA,EACA+K,EAAGsZ,EAAcvN,KACjB7L,EAAGoZ,EAAclN,KAEzB,MAEI+M,EAAS,CACLlkB,GAAAA,EACA+K,EAAGiJ,EAAOnG,WACV5C,EAAG+I,EAAOjG,WAdlB,CAiBH,IAAGuU,EAASgC,QAAU,MACaxf,EACxC,CAkBA,IAAMyf,GAAa,CAAC,QAAS,WAAY,UACnCC,GAAoB,IAAI7kB,QA8F9B,SAAS8kB,GAA0BzmB,GAsB/B,OApBA,SAAiB0mB,EAAWhf,GACxB,GAAKif,GAAiB,oBAClBD,EAAUE,sBAAsBC,iBAC/BF,GAAiB,iBACdD,EAAUE,sBAAsBE,cACnCH,GAAiB,oBACdD,EAAUE,sBAAsBG,iBACnCJ,GAAiB,qBACdD,EAAUE,sBAAsBI,iBAAmB,CACvD,IACMxK,EADQhd,MAAMC,KAAKinB,EAAUE,WAAWtnB,UAC1ByG,QAAQ2gB,GAC5Bhf,EAAIuf,QAAQzK,EAChB,MACK,GAAIkK,EAAUQ,iBAAkB,CACjC,IACM1K,EADQhd,MAAMC,KAAKinB,EAAUQ,iBAAiB5nB,UAChCyG,QAAQ2gB,GAC5Bhf,EAAIuf,QAAQzK,EAChB,CACA,OAAO9U,CACX,CACOyf,CAAQnnB,EArBG,GAsBtB,CACA,SAASonB,GAAgB9a,EAAO7C,EAAQ4d,GACpC,IAAIrlB,EAAIslB,EACR,OAAKhb,GAEDA,EAAMib,UACNvlB,EAAKyH,EAAOpH,MAAMiK,EAAMib,WAExBD,EAAUD,EAAYhlB,MAAMiK,GACzB,CACHgb,QAAAA,EACAtlB,GAAAA,IAPO,EASf,CA+IA,SAASwlB,GAA6BC,EAAiC9oB,GAAM,IACrEoD,EAAI0W,EAAIC,EADyBjP,EAAMge,EAANhe,OAAQ+U,EAAiBiJ,EAAjBjJ,kBAEzCkJ,EAAS,KAETA,EADkB,cAAlB/oB,EAAKwb,SACI1Q,EAAOpH,MAAM1D,GAEb8K,EAAOpH,MAAM1D,EAAKA,MAC/B,IAAMgpB,EAAgC,cAAlBhpB,EAAKwb,SACS,QAA3BpY,EAAKpD,EAAKynB,mBAAgC,IAAPrkB,OAAgB,EAASA,EAAG+I,SACyB,QAAxF4N,EAAmC,QAA7BD,EAAK9Z,EAAKuc,qBAAkC,IAAPzC,OAAgB,EAASA,EAAG2N,mBAAgC,IAAP1N,OAAgB,EAASA,EAAGkP,WAC7HC,GAA8BF,aAAiD,EAASA,EAAY3oB,WACpGD,OAAO2Y,yBAAyBiQ,aAAiD,EAASA,EAAY3oB,UAAW,2BACjH0L,EACN,OAAe,OAAXgd,IACY,IAAZA,GACCC,GACAE,GAGL9oB,OAAO4Y,eAAehZ,EAAM,qBAAsB,CAC9CmpB,aAAcD,EAA2BC,aACzC5P,WAAY2P,EAA2B3P,WACvChW,IAAG,WACC,IAAIH,EACJ,OAAiD,QAAzCA,EAAK8lB,EAA2B3lB,WAAwB,IAAPH,OAAgB,EAASA,EAAG7C,KAAKqC,KAC7F,EACDuB,IAAG,SAACilB,GACA,IAAIhmB,EACEimB,EAAmD,QAAzCjmB,EAAK8lB,EAA2B/kB,WAAwB,IAAPf,OAAgB,EAASA,EAAG7C,KAAKqC,KAAMwmB,GACxG,GAAe,OAAXL,IAA+B,IAAZA,EACnB,IACIlJ,EAAkByJ,iBAAiBF,EAAQL,EAC/C,CACA,MAAOjhB,GACP,CAEJ,OAAOuhB,CACX,IAEGpF,IAAgB,WACnB7jB,OAAO4Y,eAAehZ,EAAM,qBAAsB,CAC9CmpB,aAAcD,EAA2BC,aACzC5P,WAAY2P,EAA2B3P,WACvChW,IAAK2lB,EAA2B3lB,IAChCY,IAAK+kB,EAA2B/kB,KAExC,KA7BW,YA8Bf,CA8PA,SAASolB,GAAcC,GAAe,IAO9BC,EAPkBC,EAAKpS,UAAA1V,OAAA,QAAAmK,IAAAuL,UAAA,GAAAA,UAAA,GAAG,CAAA,EACxBqS,EAAgBH,EAAErhB,IAAIsf,YAC5B,IAAKkC,EACD,OAAO,WAAM,GApFrB,SAAoBH,EAAGE,GACnB,IAAQjI,EAAwM+H,EAAxM/H,WAAYmI,EAA4LJ,EAA5LI,YAAalE,EAA+K8D,EAA/K9D,mBAAoB6B,EAA2JiC,EAA3JjC,SAAUsC,EAAiJL,EAAjJK,iBAAkBC,EAA+HN,EAA/HM,QAASC,EAAsHP,EAAtHO,mBAAoBC,EAAkGR,EAAlGQ,iBAAkBC,EAAgFT,EAAhFS,mBAAoBC,EAA4DV,EAA5DU,iBAAkBC,EAA0CX,EAA1CW,OAAQC,EAAkCZ,EAAlCY,YAAaC,EAAqBb,EAArBa,gBAC3Lb,EAAE/H,WAAa,WACPiI,EAAMY,UACNZ,EAAMY,SAAQ7R,MAAdiR,EAAKpS,WAETmK,EAAUhJ,WAAAnB,EAAAA,YAEdkS,EAAEI,YAAc,WACRF,EAAMa,WACNb,EAAMa,UAAS9R,MAAfiR,EAAKpS,WAETsS,EAAWnR,WAAAnB,EAAAA,YAEfkS,EAAE9D,mBAAqB,WACfgE,EAAM9D,kBACN8D,EAAM9D,iBAAgBnN,MAAtBiR,EAAKpS,WAEToO,EAAkBjN,WAAAnB,EAAAA,YAEtBkS,EAAEjC,SAAW,WACLmC,EAAM/B,QACN+B,EAAM/B,OAAMlP,MAAZiR,EAAKpS,WAETiQ,EAAQ9O,WAAAnB,EAAAA,YAEZkS,EAAEK,iBAAmB,WACbH,EAAMc,gBACNd,EAAMc,eAAc/R,MAApBiR,EAAKpS,WAETuS,EAAgBpR,WAAAnB,EAAAA,YAEpBkS,EAAEM,QAAU,WACJJ,EAAMe,OACNf,EAAMe,MAAKhS,MAAXiR,EAAKpS,WAETwS,EAAOrR,WAAAnB,EAAAA,YAEXkS,EAAEO,mBAAqB,WACfL,EAAMgB,iBACNhB,EAAMgB,gBAAejS,MAArBiR,EAAKpS,WAETyS,EAAkBtR,WAAAnB,EAAAA,YAEtBkS,EAAEQ,iBAAmB,WACbN,EAAMiB,gBACNjB,EAAMiB,eAAclS,MAApBiR,EAAKpS,WAET0S,EAAgBvR,WAAAnB,EAAAA,YAEpBkS,EAAES,mBAAqB,WACfP,EAAMkB,kBACNlB,EAAMkB,iBAAgBnS,MAAtBiR,EAAKpS,WAET2S,EAAkBxR,WAAAnB,EAAAA,YAEtBkS,EAAEU,iBAAmB,WACbR,EAAMmB,gBACNnB,EAAMmB,eAAcpS,MAApBiR,EAAKpS,WAET4S,EAAgBzR,WAAAnB,EAAAA,YAEpBkS,EAAEW,OAAS,WACHT,EAAMoB,MACNpB,EAAMoB,KAAIrS,MAAViR,EAAKpS,WAET6S,EAAM1R,WAAAnB,EAAAA,YAEVkS,EAAEY,YAAc,WACRV,EAAMqB,WACNrB,EAAMqB,UAAStS,MAAfiR,EAAKpS,WAET8S,EAAW3R,WAAAnB,EAAAA,YAEfkS,EAAEa,gBAAkB,WACZX,EAAMsB,eACNtB,EAAMsB,cAAavS,MAAnBiR,EAAKpS,WAET+S,EAAe5R,WAAAnB,EAAAA,WAEvB,CAOI2T,CAAWzB,EAAGE,GAEVF,EAAE0B,YACFzB,EAAmBnF,GAAqBkF,EAAGA,EAAErhB,MAEjD,IAAMgjB,EAlwBV,SAAyB5mB,GAA0C,IAAvCqlB,EAAWrlB,EAAXqlB,YAAajE,EAAQphB,EAARohB,SAAUxd,EAAG5D,EAAH4D,IAAK2C,EAAMvG,EAANuG,OACpD,IAA2B,IAAvB6a,EAAS4E,UACT,OAAO,WAAM,EAGjB,IAKIa,EALEC,EAA0C,iBAAvB1F,EAAS4E,UAAyB5E,EAAS4E,UAAY,GAC1Ee,EAA0D,iBAA/B3F,EAAS4F,kBACpC5F,EAAS4F,kBACT,IACFC,EAAY,GAEVC,EAAY7T,EAASqM,IAAgB,SAAC/K,GACxC,IAAMwS,EAAcrT,KAAKD,MAAQgT,EACjCxB,EAAY4B,EAAUzqB,KAAI,SAAC4qB,GAEvB,OADAA,EAAEC,YAAcF,EACTC,KACPzS,GACJsS,EAAY,GACZJ,EAAe,QACfE,GACEO,EAAiB5H,GAAgBrM,EAASqM,IAAgB,SAACuD,GAC7D,IAAMnQ,EAAS+M,GAAeoD,GAC9BsE,EAA6B1Q,GAAoBoM,GAC3CA,EAAIlM,eAAe,GACnBkM,EAFEV,EAAOgF,EAAPhF,QAASC,EAAO+E,EAAP/E,QAGZqE,IACDA,EAAexR,MAEnB4R,EAAUrpB,KAAK,CACXiM,EAAG0Y,EACHxY,EAAGyY,EACH1jB,GAAIyH,EAAOpH,MAAM2T,GACjBuU,WAAYhS,KAAiBwR,IAEjCK,EAA+B,oBAAdM,WAA6BvE,aAAeuE,UACvDlP,GAAkBmP,KAClBxE,aAAeyE,WACXpP,GAAkBqP,UAClBrP,GAAkBsP,UAC/B,IAAGd,EAAW,CACX3S,UAAU,KAERoN,EAAW,CACb3O,EAAG,YAAa0U,EAAgB1jB,GAChCgP,EAAG,YAAa0U,EAAgB1jB,GAChCgP,EAAG,OAAQ0U,EAAgB1jB,IAE/B,OAAO8b,IAAgB,WACnB6B,EAASjiB,SAAQ,SAACujB,GAAC,OAAKA,MAC5B,GACJ,CAgtB6BgF,CAAiB5C,GACpC6C,EAA0B7G,GAA6BgE,GACvD8C,EAAgBjF,GAAmBmC,GACnC+C,EA9lBV,SAAmCC,EAAAC,GAAgC,IAA7B5C,EAAgB2C,EAAhB3C,iBAAsB1T,EAAGsW,EAAHtW,IACpDuW,GAAS,EACTC,GAAS,EAab,OAAOxV,EAAG,SAZc8M,GAAgBrM,EAASqM,IAAgB,WAC7D,IAAM1V,EAASmM,KACTrM,EAAQwM,KACV6R,IAAUne,GAAUoe,IAAUte,IAC9Bwb,EAAiB,CACbxb,MAAO2X,OAAO3X,GACdE,OAAQyX,OAAOzX,KAEnBme,EAAQne,EACRoe,EAAQte,EAEhB,IAAI,MACiC8H,EACzC,CA8kBkCyW,CAA2BpD,EAAG,CACxDrT,IAAKwT,IAEHkD,EA9kBV,SAA0BC,GAAmJ,IAAhJhD,EAAOgD,EAAPhD,QAAS3hB,EAAG2kB,EAAH3kB,IAAK2C,EAAMgiB,EAANhiB,OAAQC,EAAU+hB,EAAV/hB,WAAYC,EAAa8hB,EAAb9hB,cAAe+hB,EAAWD,EAAXC,YAAaC,EAAcF,EAAdE,eAAgBvoB,EAAgBqoB,EAAhBroB,iBAAkBG,EAAWkoB,EAAXloB,YAAa+gB,EAAQmH,EAARnH,SAAUsH,EAAoBH,EAApBG,qBAChJ,SAASC,EAAa7R,GAClB,IAAIhE,EAAS+M,GAAe/I,GACtB8R,EAAgB9R,EAAM+R,UACtB1oB,EAAU2S,GAAUA,EAAO3S,QAIjC,GAHI2S,GAAsB,WAAZ3S,IACV2S,EAASA,EAAO7M,eAEf6M,GACA3S,KACDkjB,GAAWxgB,QAAQ1C,GAAW,KAC9BuW,GAAU5D,EAAQtM,EAAYC,GAAe,MAG7CqM,EAAOlN,UAAUO,SAASqiB,IACzBC,GAAkB3V,EAAO1M,QAAQqiB,IADtC,CAIA,IAAInoB,EAAOwS,EAAOlU,MACdkqB,GAAY,EACV1oB,EAAOQ,EAAakS,IAAW,GACxB,UAAT1S,GAA6B,aAATA,EACpB0oB,EAAYhW,EAAOvJ,SAEdrJ,EAAiBC,EAAQK,gBAC9BN,EAAiBE,MACjBE,EAAOP,EAAe,CAClBE,QAAS6S,EACT5S,iBAAAA,EACAC,QAAAA,EACAC,KAAAA,EACAxB,MAAO0B,EACPD,YAAAA,KAGR0oB,EAAYjW,EAAQ4V,EACd,CAAEpoB,KAAAA,EAAMwoB,UAAAA,EAAWF,cAAAA,GACnB,CAAEtoB,KAAAA,EAAMwoB,UAAAA,IACd,IAAMvkB,EAAOuO,EAAOvO,KACP,UAATnE,GAAoBmE,GAAQukB,GAC5BllB,EACKolB,iBAAgBzrB,6BAAAA,OAA8BgH,EAAQ,OACtDjF,SAAQ,SAAC4E,GACV,GAAIA,IAAO4O,EAAQ,CACf,IAAMxS,EAAO4D,EAAGtF,MAChBmqB,EAAY7kB,EAAIwkB,EACV,CAAEpoB,KAAAA,EAAMwoB,WAAYA,EAAWF,eAAe,GAC9C,CAAEtoB,KAAAA,EAAMwoB,WAAYA,GAC9B,CACJ,GAhCJ,CAkCJ,CACA,SAASC,EAAYjW,EAAQmW,GACzB,IAAMC,EAAiB5F,GAAkBtkB,IAAI8T,GAC7C,IAAKoW,GACDA,EAAe5oB,OAAS2oB,EAAE3oB,MAC1B4oB,EAAeJ,YAAcG,EAAEH,UAAW,CAC1CxF,GAAkB1jB,IAAIkT,EAAQmW,GAC9B,IAAMnqB,EAAKyH,EAAOpH,MAAM2T,GACxB4M,GAAgB6F,EAAhB7F,CAAyB7jB,OAAOgV,OAAOhV,OAAOgV,OAAO,GAAIoY,GAAI,CAAEnqB,GAAAA,IACnE,CACJ,CACA,IACMyiB,GAD4B,SAAnBH,EAAS8E,MAAmB,CAAC,UAAY,CAAC,QAAS,WAC1C1pB,KAAI,SAACqlB,GAAS,OAAKjP,EAAGiP,EAAWnC,GAAgBiJ,GAAe/kB,MAClFwhB,EAAgBxhB,EAAIsf,YAC1B,IAAKkC,EACD,OAAO,WACH7D,EAASjiB,SAAQ,SAACujB,GAAC,OAAKA,QAGhC,IAAMsG,EAAqB/D,EAAcvpB,OAAO2Y,yBAAyB4Q,EAAcgE,iBAAiBttB,UAAW,SAC7GutB,EAAiB,CACnB,CAACjE,EAAcgE,iBAAiBttB,UAAW,SAC3C,CAACspB,EAAcgE,iBAAiBttB,UAAW,WAC3C,CAACspB,EAAckE,kBAAkBxtB,UAAW,SAC5C,CAACspB,EAAcmE,oBAAoBztB,UAAW,SAC9C,CAACspB,EAAckE,kBAAkBxtB,UAAW,iBAC5C,CAACspB,EAAcoE,kBAAkB1tB,UAAW,aAYhD,OAVIqtB,GAAsBA,EAAmBvpB,KACzC2hB,EAAS3jB,KAAIsW,MAAbqN,EAAQkI,EAASJ,EAAe7sB,KAAI,SAAC4qB,GAAC,OAAKhT,GAAWgT,EAAE,GAAIA,EAAE,GAAI,CAC9DxnB,IAAG,WACC8f,GAAgBiJ,EAAhBjJ,CAA8B,CAC1B5M,OAAQzU,KACRwqB,WAAW,GAEnB,IACD,EAAOzD,EAAc,MAErB1F,IAAgB,WACnB6B,EAASjiB,SAAQ,SAACujB,GAAC,OAAKA,MAC5B,GACJ,CAkfyB6G,CAAkBzE,GACjC0E,EA3NV,SAAqCC,GAA4E,IAAzEpE,EAAkBoE,EAAlBpE,mBAAoBhf,EAAUojB,EAAVpjB,WAAYC,EAAamjB,EAAbnjB,cAAeF,EAAMqjB,EAANrjB,OAAQ6a,EAAQwI,EAARxI,SAAUxd,EAAGgmB,EAAHhmB,IAC/F4b,EAAUE,IAAgB,SAACtf,GAAI,OAAKiT,EAASqM,IAAgB,SAAC5I,GAChE,IAAMhE,EAAS+M,GAAe/I,GAC9B,GAAKhE,IACD4D,GAAU5D,EAAQtM,EAAYC,GAAe,GADjD,CAIA,IAAQyF,EAAmD4G,EAAnD5G,YAAaQ,EAAsCoG,EAAtCpG,OAAQJ,EAA8BwG,EAA9BxG,MAAOF,EAAuB0G,EAAvB1G,aAAcI,EAASsG,EAATtG,KAClDgZ,EAAmB,CACfplB,KAAAA,EACAtB,GAAIyH,EAAOpH,MAAM2T,GACjB5G,YAAAA,EACAQ,OAAAA,EACAJ,MAAAA,EACAF,aAAAA,EACAI,KAAAA,GATJ,CAWH,IAAG4U,EAAStjB,OAAS,QAChByjB,EAAW,CACb3O,EAAG,OAAQ4M,EAAQ,GAAI5b,GACvBgP,EAAG,QAAS4M,EAAQ,GAAI5b,GACxBgP,EAAG,SAAU4M,EAAQ,GAAI5b,GACzBgP,EAAG,eAAgB4M,EAAQ,GAAI5b,GAC/BgP,EAAG,aAAc4M,EAAQ,GAAI5b,IAEjC,OAAO8b,IAAgB,WACnB6B,EAASjiB,SAAQ,SAACujB,GAAC,OAAKA,MAC5B,GACJ,CA+LoCgH,CAA6B5E,GACzD6E,EAAqB,aACrBC,EAA4B,aAC5BC,EAA2B,aAC3BC,EAAe,aACfhF,EAAE0B,YACFmD,EAndR,SAA+BI,EAAAC,GAA2D,IAAxD1E,EAAgByE,EAAhBzE,iBAAkBlf,EAAM2jB,EAAN3jB,OAAQ+U,EAAiB4O,EAAjB5O,kBAAuB1J,EAAGuY,EAAHvY,IAC/E,IAAKA,EAAIwY,gBAAkBxY,EAAIwY,cAActuB,UACzC,OAAO,WAAM,EAGjB,IAAMuuB,EAAazY,EAAIwY,cAActuB,UAAUuuB,WAC/CzY,EAAIwY,cAActuB,UAAUuuB,WAAa,IAAIpV,MAAMoV,EAAY,CAC3DnW,MAAOwL,IAAgB,SAAC5M,EAAQwX,EAASC,GACrC,IAAAC,EAAAC,EAAsBF,EAAa,GAA5BztB,EAAI0tB,EAAA,GAAElR,EAAKkR,EAAA,GAClBE,EAAwBxG,GAAgBoG,EAAS/jB,EAAQ+U,EAAkB6I,aAAnErlB,EAAE4rB,EAAF5rB,GAAIslB,EAAOsG,EAAPtG,QAQZ,OAPKtlB,IAAc,IAARA,GAAeslB,IAAwB,IAAbA,IACjCqB,EAAiB,CACb3mB,GAAAA,EACAslB,QAAAA,EACAzJ,KAAM,CAAC,CAAE7d,KAAAA,EAAMwc,MAAAA,MAGhBxG,EAAOoB,MAAMoW,EAASC,QAGrC,IAeI3tB,EAkBA+tB,EAjCEC,EAAahZ,EAAIwY,cAActuB,UAAU8uB,WAC/ChZ,EAAIwY,cAActuB,UAAU8uB,WAAa,IAAI3V,MAAM2V,EAAY,CAC3D1W,MAAOwL,IAAgB,SAAC5M,EAAQwX,EAASC,GACrC,IAAOjR,EAAPmR,EAAgBF,EAAa,GAAjB,GACZM,EAAwB3G,GAAgBoG,EAAS/jB,EAAQ+U,EAAkB6I,aAAnErlB,EAAE+rB,EAAF/rB,GAAIslB,EAAOyG,EAAPzG,QAQZ,OAPKtlB,IAAc,IAARA,GAAeslB,IAAwB,IAAbA,IACjCqB,EAAiB,CACb3mB,GAAAA,EACAslB,QAAAA,EACApK,QAAS,CAAC,CAAEV,MAAAA,MAGbxG,EAAOoB,MAAMoW,EAASC,QAIjC3Y,EAAIwY,cAActuB,UAAUc,UAC5BA,EAAUgV,EAAIwY,cAActuB,UAAUc,QACtCgV,EAAIwY,cAActuB,UAAUc,QAAU,IAAIqY,MAAMrY,EAAS,CACrDsX,MAAOwL,IAAgB,SAAC5M,EAAQwX,EAASC,GACrC,IAAOjqB,EAAPmqB,EAAeF,EAAa,GAAjB,GACXO,EAAwB5G,GAAgBoG,EAAS/jB,EAAQ+U,EAAkB6I,aAAnErlB,EAAEgsB,EAAFhsB,GAAIslB,EAAO0G,EAAP1G,QAQZ,OAPKtlB,IAAc,IAARA,GAAeslB,IAAwB,IAAbA,IACjCqB,EAAiB,CACb3mB,GAAAA,EACAslB,QAAAA,EACAxnB,QAAS0D,IAGVwS,EAAOoB,MAAMoW,EAASC,SAKrC3Y,EAAIwY,cAActuB,UAAU6uB,cAC5BA,EAAc/Y,EAAIwY,cAActuB,UAAU6uB,YAC1C/Y,EAAIwY,cAActuB,UAAU6uB,YAAc,IAAI1V,MAAM0V,EAAa,CAC7DzW,MAAOwL,IAAgB,SAAC5M,EAAQwX,EAASC,GACrC,IAAOjqB,EAAPmqB,EAAeF,EAAa,GAAjB,GACXQ,EAAwB7G,GAAgBoG,EAAS/jB,EAAQ+U,EAAkB6I,aAAnErlB,EAAEisB,EAAFjsB,GAAIslB,EAAO2G,EAAP3G,QAQZ,OAPKtlB,IAAc,IAARA,GAAeslB,IAAwB,IAAbA,IACjCqB,EAAiB,CACb3mB,GAAAA,EACAslB,QAAAA,EACAuG,YAAarqB,IAGdwS,EAAOoB,MAAMoW,EAASC,SAIzC,IAAMS,EAA8B,CAAA,EAChCC,GAA4B,mBAC5BD,EAA4BrH,gBAAkB/R,EAAI+R,iBAG9CsH,GAA4B,kBAC5BD,EAA4BpH,aAAehS,EAAIgS,cAE/CqH,GAA4B,sBAC5BD,EAA4BlH,iBAAmBlS,EAAIkS,kBAEnDmH,GAA4B,qBAC5BD,EAA4BnH,gBAAkBjS,EAAIiS,kBAG1D,IAAMqH,EAAsB,CAAA,EA6C5B,OA5CArvB,OAAOsvB,QAAQH,GAA6B1rB,SAAQ,SAAA8rB,GAAqB,IAAAC,EAAAZ,EAAAW,EAAA,GAAnBE,EAAOD,EAAA,GAAEjrB,EAAIirB,EAAA,GAC/DH,EAAoBI,GAAW,CAC3BjB,WAAYjqB,EAAKtE,UAAUuuB,WAC3BO,WAAYxqB,EAAKtE,UAAU8uB,YAE/BxqB,EAAKtE,UAAUuuB,WAAa,IAAIpV,MAAMiW,EAAoBI,GAASjB,WAAY,CAC3EnW,MAAOwL,IAAgB,SAAC5M,EAAQwX,EAASC,GACrC,IAAAgB,EAAAd,EAAsBF,EAAa,GAA5BztB,EAAIyuB,EAAA,GAAEjS,EAAKiS,EAAA,GAClBC,EAAwBtH,GAAgBoG,EAAQtG,iBAAkBzd,EAAQ+U,EAAkB6I,aAApFrlB,EAAE0sB,EAAF1sB,GAAIslB,EAAOoH,EAAPpH,QAgBZ,OAfKtlB,IAAc,IAARA,GAAeslB,IAAwB,IAAbA,IACjCqB,EAAiB,CACb3mB,GAAAA,EACAslB,QAAAA,EACAzJ,KAAM,CACF,CACI7d,KAAAA,EACAwc,MAAK/b,GAAAA,OAAAksB,EACElG,GAA0B+G,IAAQ,CACrChR,GAAS,QAMtBxG,EAAOoB,MAAMoW,EAASC,QAGrCnqB,EAAKtE,UAAU8uB,WAAa,IAAI3V,MAAMiW,EAAoBI,GAASV,WAAY,CAC3E1W,MAAOwL,IAAgB,SAAC5M,EAAQwX,EAASC,GACrC,IAAOjR,EAAPmR,EAAgBF,EAAa,GAAjB,GACZkB,EAAwBvH,GAAgBoG,EAAQtG,iBAAkBzd,EAAQ+U,EAAkB6I,aAApFrlB,EAAE2sB,EAAF3sB,GAAIslB,EAAOqH,EAAPrH,QAUZ,OATKtlB,IAAc,IAARA,GAAeslB,IAAwB,IAAbA,IACjCqB,EAAiB,CACb3mB,GAAAA,EACAslB,QAAAA,EACApK,QAAS,CACL,CAAEV,MAAK,GAAA/b,OAAAksB,EAAMlG,GAA0B+G,IAAQ,CAAEhR,QAItDxG,EAAOoB,MAAMoW,EAASC,OAGzC,IACO7K,IAAgB,WACnB9N,EAAIwY,cAActuB,UAAUuuB,WAAaA,EACzCzY,EAAIwY,cAActuB,UAAU8uB,WAAaA,EACzChuB,IAAYgV,EAAIwY,cAActuB,UAAUc,QAAUA,GAClD+tB,IAAgB/Y,EAAIwY,cAActuB,UAAU6uB,YAAcA,GAC1D9uB,OAAOsvB,QAAQH,GAA6B1rB,SAAQ,SAAAosB,GAAqB,IAAAC,EAAAlB,EAAAiB,EAAA,GAAnBJ,EAAOK,EAAA,GAAEvrB,EAAIurB,EAAA,GAC/DvrB,EAAKtE,UAAUuuB,WAAaa,EAAoBI,GAASjB,WACzDjqB,EAAKtE,UAAU8uB,WAAaM,EAAoBI,GAASV,UAC7D,GACJ,GACJ,CAsU6BgB,CAAuB3G,EAAG,CAAErT,IAAKwT,IACtD2E,EAA4BzF,GAA8BW,EAAGA,EAAErhB,KAC/DomB,EAvRR,SAAqC6B,EAAAC,GAAmF,IAAhFpG,EAAkBmG,EAAlBnG,mBAAoBnf,EAAMslB,EAANtlB,OAAQwlB,EAAmBF,EAAnBE,oBAAqBzQ,EAAiBuQ,EAAjBvQ,kBAAwB1J,EAAGka,EAAHla,IACvGoa,EAAcpa,EAAIqa,oBAAoBnwB,UAAUkwB,YACtDpa,EAAIqa,oBAAoBnwB,UAAUkwB,YAAc,IAAI/W,MAAM+W,EAAa,CACnE9X,MAAOwL,IAAgB,SAAC5M,EAAQwX,EAASC,GACrC,IAAI1rB,EACJqtB,EAAAzB,EAAoCF,EAAa,GAA1Cja,EAAQ4b,EAAA,GAAEttB,EAAKstB,EAAA,GAAEC,EAAQD,EAAA,GAChC,GAAIH,EAAoBtsB,IAAI6Q,GACxB,OAAO0b,EAAY9X,MAAMoW,EAAS,CAACha,EAAU1R,EAAOutB,IAExD,IAAAC,EAAwBlI,GAA8C,QAA7BrlB,EAAKyrB,EAAQ5G,kBAA+B,IAAP7kB,OAAgB,EAASA,EAAGmlB,iBAAkBzd,EAAQ+U,EAAkB6I,aAA9IrlB,EAAEstB,EAAFttB,GAAIslB,EAAOgI,EAAPhI,QAaZ,OAZKtlB,IAAc,IAARA,GAAeslB,IAAwB,IAAbA,IACjCsB,EAAmB,CACf5mB,GAAAA,EACAslB,QAAAA,EACAxkB,IAAK,CACD0Q,SAAAA,EACA1R,MAAAA,EACAutB,SAAAA,GAEJ7S,MAAOiK,GAA0B+G,EAAQ5G,cAG1C5Q,EAAOoB,MAAMoW,EAASC,QAGrC,IAAM8B,EAAiBza,EAAIqa,oBAAoBnwB,UAAUuwB,eAsBzD,OArBAza,EAAIqa,oBAAoBnwB,UAAUuwB,eAAiB,IAAIpX,MAAMoX,EAAgB,CACzEnY,MAAOwL,IAAgB,SAAC5M,EAAQwX,EAASC,GACrC,IAAI1rB,EACGyR,EAAPma,EAAmBF,EAAa,GAAjB,GACf,GAAIwB,EAAoBtsB,IAAI6Q,GACxB,OAAO+b,EAAenY,MAAMoW,EAAS,CAACha,IAE1C,IAAAgc,EAAwBpI,GAA8C,QAA7BrlB,EAAKyrB,EAAQ5G,kBAA+B,IAAP7kB,OAAgB,EAASA,EAAGmlB,iBAAkBzd,EAAQ+U,EAAkB6I,aAA9IrlB,EAAEwtB,EAAFxtB,GAAIslB,EAAOkI,EAAPlI,QAWZ,OAVKtlB,IAAc,IAARA,GAAeslB,IAAwB,IAAbA,IACjCsB,EAAmB,CACf5mB,GAAAA,EACAslB,QAAAA,EACAmI,OAAQ,CACJjc,SAAAA,GAEJgJ,MAAOiK,GAA0B+G,EAAQ5G,cAG1C5Q,EAAOoB,MAAMoW,EAASC,QAG9B7K,IAAgB,WACnB9N,EAAIqa,oBAAoBnwB,UAAUkwB,YAAcA,EAChDpa,EAAIqa,oBAAoBnwB,UAAUuwB,eAAiBA,CACvD,GACJ,CAoOmCG,CAA6BvH,EAAG,CACvDrT,IAAKwT,IAELH,EAAEwH,eACFxC,EA1MZ,SAAyByC,GAAkB,IAAf9G,EAAM8G,EAAN9G,OAAQhiB,EAAG8oB,EAAH9oB,IAC1BgO,EAAMhO,EAAIsf,YAChB,IAAKtR,EACD,OAAO,WAAM,EAGjB,IAAM2P,EAAW,GACXoL,EAAU,IAAIluB,QACdmuB,EAAmBhb,EAAIib,SAC7Bjb,EAAIib,SAAW,SAAkBC,EAAQnY,EAAQoY,GAC7C,IAAMC,EAAW,IAAIJ,EAAiBE,EAAQnY,EAAQoY,GAStD,OARAJ,EAAQ/sB,IAAIotB,EAAU,CAClBF,OAAAA,EACAviB,OAA0B,iBAAXoK,EACfoY,YAAAA,EACAE,WAA8B,iBAAXtY,EACbA,EACAnX,KAAKC,UAAUnB,MAAMC,KAAK,IAAI2wB,WAAWvY,OAE5CqY,GAEX,IAAMG,EAAiBzY,GAAM9Q,EAAIwpB,MAAO,OAAO,SAAU7Y,GACrD,OAAO,SAAUyY,GAQb,OAPA/a,WAAWyN,IAAgB,WACvB,IAAM0H,EAAIuF,EAAQ3tB,IAAIguB,GAClB5F,IACAxB,EAAOwB,GACPuF,EAAQvtB,OAAO4tB,OAEnB,GACGzY,EAASL,MAAM7V,KAAM,CAAC2uB,IAErC,IAKA,OAJAzL,EAAS3jB,MAAK,WACVgU,EAAIib,SAAWD,CACnB,IACArL,EAAS3jB,KAAKuvB,GACPzN,IAAgB,WACnB6B,EAASjiB,SAAQ,SAACujB,GAAC,OAAKA,MAC5B,GACJ,CAkK2BwK,CAAiBpI,KAGxC,IAG8B/hB,EAHxBoqB,EApKV,SAA+BC,GAC3B,IAAQ3pB,EAAwD2pB,EAAxD3pB,IAAK2C,EAAmDgnB,EAAnDhnB,OAAQC,EAA2C+mB,EAA3C/mB,WAAYC,EAA+B8mB,EAA/B9mB,cAAeof,EAAgB0H,EAAhB1H,YAC5C2H,GAAY,EACVC,EAAkB/N,IAAgB,WACpC,IAAM8G,EAAY5iB,EAAI8pB,eACtB,MAAKlH,GAAcgH,IAAchH,aAA6C,EAASA,EAAUmH,cAAjG,CAEAH,EAAYhH,EAAUmH,cAAe,EAGrC,IAFA,IAAMC,EAAS,GACTC,EAAQrH,EAAUsH,YAAc,EAC7BllB,EAAI,EAAGA,EAAIilB,EAAOjlB,IAAK,CAC5B,IAAMmlB,EAAQvH,EAAUwH,WAAWplB,GAC3BqlB,EAAyDF,EAAzDE,eAAgBC,EAAyCH,EAAzCG,YAAaC,EAA4BJ,EAA5BI,aAAcC,EAAcL,EAAdK,UACnC1X,GAAUuX,EAAgBznB,EAAYC,GAAe,IACjEiQ,GAAUyX,EAAc3nB,EAAYC,GAAe,IAGvDmnB,EAAOhwB,KAAK,CACRywB,MAAO9nB,EAAOpH,MAAM8uB,GACpBC,YAAAA,EACAI,IAAK/nB,EAAOpH,MAAMgvB,GAClBC,UAAAA,GAER,CACAvI,EAAY,CAAE+H,OAAAA,GAlBV,CAmBR,IAEA,OADAH,IACO7a,EAAG,kBAAmB6a,EACjC,CAwI8Bc,CAAsBtJ,GAC1CuJ,EAxIV,SAAkCC,GAA4B,IAAzB7qB,EAAG6qB,EAAH7qB,IAAKkiB,EAAe2I,EAAf3I,gBAChClU,EAAMhO,EAAIsf,YAChB,OAAKtR,GAAQA,EAAIrE,eAEMmH,GAAM9C,EAAIrE,eAAgB,UAAU,SAAUgH,GACjE,OAAO,SAAUhQ,EAAMmqB,EAAapoB,GAChC,IACIwf,EAAgB,CACZ6I,OAAQ,CACJpqB,KAAAA,IAGX,CACD,MAAOhB,GACHiI,QAAQC,KAAI,sCAAAlO,OAAuCgH,GACvD,CACA,OAAOgQ,EAASL,MAAM7V,KAAM,CAACkG,EAAMmqB,EAAapoB,IAExD,IAfW,WAAM,CAiBrB,CAoHkCsoB,CAA0B3J,GAClD4J,EAAiB,GAAG1rB,EAAAC,EACL6hB,EAAE6J,SAAO,IAA9B,IAAA3rB,EAAAjH,MAAAgH,EAAAC,EAAA3H,KAAA6H,MAAgC,CAAA,IAArB0rB,EAAM7rB,EAAAtE,MACbiwB,EAAejxB,KAAKmxB,EAAOtO,SAASsO,EAAOC,SAAU5J,EAAe2J,EAAOzoB,SAC/E,CAAC,CAAA,MAAAjF,GAAA8B,EAAAI,EAAAlC,EAAA,CAAA,QAAA8B,EAAAK,GAAA,CACD,OAAOkc,IAAgB,WACnBE,GAAgBtgB,SAAQ,SAAC2vB,GAAC,OAAKA,EAAE7b,WACjC8R,SAAoEA,EAAiBgK,aACrFtI,IACAkB,IACAC,IACAC,IACAM,IACAqB,IACAG,IACAC,IACAC,IACAC,IACAqD,IACAkB,IACAK,EAAevvB,SAAQ,SAACujB,GAAC,OAAKA,MAClC,GACJ,CACA,SAASY,GAAiBtO,GACtB,YAA+B,IAAjBhU,OAAOgU,EACzB,CACA,SAAS8V,GAA4B9V,GACjC,OAAOzZ,aAAgC,IAAjByF,OAAOgU,IACzBhU,OAAOgU,GAAMrZ,WACb,eAAgBqF,OAAOgU,GAAMrZ,WAC7B,eAAgBqF,OAAOgU,GAAMrZ,UACrC,KCt2BMqzB,GAAuB,WACzB,SAAAA,EAAYC,GAAchxB,OAAA+wB,GACtB9wB,KAAK+wB,aAAeA,EACpB/wB,KAAKgxB,sBAAwB,IAAI5wB,QACjCJ,KAAKixB,sBAAwB,IAAI7wB,OACrC,CAsDC,OAtDAC,EAAAywB,EAAA,CAAA,CAAAxwB,IAAA,QAAAC,MACD,SAAM8c,EAAQ6T,EAAUC,EAAeC,GACnC,IAAMC,EAAkBF,GAAiBnxB,KAAKsxB,mBAAmBjU,GAC3DkU,EAAkBH,GAAiBpxB,KAAKwxB,mBAAmBnU,GAC7D5c,EAAK4wB,EAAgB1wB,IAAIuwB,GAM7B,OALKzwB,IACDA,EAAKT,KAAK+wB,eACVM,EAAgB9vB,IAAI2vB,EAAUzwB,GAC9B8wB,EAAgBhwB,IAAId,EAAIywB,IAErBzwB,CACX,GAAC,CAAAH,IAAA,SAAAC,MACD,SAAO8c,EAAQ6T,GAAU,IAAArwB,EAAAb,KACfqxB,EAAkBrxB,KAAKsxB,mBAAmBjU,GAC1CkU,EAAkBvxB,KAAKwxB,mBAAmBnU,GAChD,OAAO6T,EAAS/yB,KAAI,SAACsC,GAAE,OAAKI,EAAKC,MAAMuc,EAAQ5c,EAAI4wB,EAAiBE,KACxE,GAAC,CAAAjxB,IAAA,cAAAC,MACD,SAAY8c,EAAQ5c,EAAItC,GACpB,IAAMozB,EAAkBpzB,GAAO6B,KAAKwxB,mBAAmBnU,GACvD,GAAkB,iBAAP5c,EACP,OAAOA,EACX,IAAMywB,EAAWK,EAAgB5wB,IAAIF,GACrC,OAAKywB,IACO,CAEhB,GAAC,CAAA5wB,IAAA,eAAAC,MACD,SAAa8c,EAAQoU,GAAK,IAAAlR,EAAAvgB,KAChBuxB,EAAkBvxB,KAAKwxB,mBAAmBnU,GAChD,OAAOoU,EAAItzB,KAAI,SAACsC,GAAE,OAAK8f,EAAKmR,YAAYrU,EAAQ5c,EAAI8wB,KACxD,GAAC,CAAAjxB,IAAA,QAAAC,MACD,SAAM8c,GACF,IAAKA,EAGD,OAFArd,KAAKgxB,sBAAwB,IAAI5wB,aACjCJ,KAAKixB,sBAAwB,IAAI7wB,SAGrCJ,KAAKgxB,sBAAsBjwB,OAAOsc,GAClCrd,KAAKixB,sBAAsBlwB,OAAOsc,EACtC,GAAC,CAAA/c,IAAA,qBAAAC,MACD,SAAmB8c,GACf,IAAIgU,EAAkBrxB,KAAKgxB,sBAAsBrwB,IAAI0c,GAKrD,OAJKgU,IACDA,EAAkB,IAAInxB,IACtBF,KAAKgxB,sBAAsBzvB,IAAI8b,EAAQgU,IAEpCA,CACX,GAAC,CAAA/wB,IAAA,qBAAAC,MACD,SAAmB8c,GACf,IAAIkU,EAAkBvxB,KAAKixB,sBAAsBtwB,IAAI0c,GAKrD,OAJKkU,IACDA,EAAkB,IAAIrxB,IACtBF,KAAKixB,sBAAsB1vB,IAAI8b,EAAQkU,IAEpCA,CACX,KAACT,CAAA,CA3DwB,GCIvBa,GAAa,WACf,SAAAA,EAAY1pB,GAASlI,OAAA4xB,GACjB3xB,KAAK4xB,QAAU,IAAIxxB,QACnBJ,KAAK6xB,qBAAuB,IAAIzxB,QAChCJ,KAAK8xB,wBAA0B,IAAIhB,GAAwBrtB,GAC3DzD,KAAK+xB,2BAA6B,IAAI3xB,QACtCJ,KAAK6e,WAAa5W,EAAQ4W,WAC1B7e,KAAKgyB,YAAc/pB,EAAQ+pB,YAC3BhyB,KAAKid,kBAAoBhV,EAAQgV,kBACjCjd,KAAKiyB,yBAA2BhqB,EAAQgqB,yBACxCjyB,KAAKkyB,6BAA+B,IAAIpB,GAAwB9wB,KAAKid,kBAAkB6I,YAAYqM,WAAW9P,KAAKriB,KAAKid,kBAAkB6I,cAC1I9lB,KAAKkI,OAASD,EAAQC,OAClBlI,KAAKiyB,0BACLnvB,OAAO0K,iBAAiB,UAAWxN,KAAKoyB,cAAc/P,KAAKriB,MAEnE,CAgMC,OAhMAK,EAAAsxB,EAAA,CAAA,CAAArxB,IAAA,YAAAC,MACD,SAAU8S,GACNrT,KAAK4xB,QAAQrwB,IAAI8R,GAAU,GACvBA,EAASG,eACTxT,KAAK6xB,qBAAqBtwB,IAAI8R,EAASG,cAAeH,EAC9D,GAAC,CAAA/S,IAAA,kBAAAC,MACD,SAAgB+gB,GACZthB,KAAKqyB,aAAe/Q,CACxB,GAAC,CAAAhhB,IAAA,eAAAC,MACD,SAAa8S,EAAUiK,GACnB,IAAI9c,EACJR,KAAK6e,WAAW,CACZvC,KAAM,CACF,CACIjB,SAAUrb,KAAKkI,OAAOpH,MAAMuS,GAC5BsJ,OAAQ,KACRtb,KAAMic,IAGd3B,QAAS,GACTF,MAAO,GACPpR,WAAY,GACZioB,gBAAgB,IAES,QAA5B9xB,EAAKR,KAAKqyB,oBAAiC,IAAP7xB,GAAyBA,EAAG7C,KAAKqC,KAAMqT,GACxEA,EAASrE,iBACTqE,EAASrE,gBAAgBujB,oBACzBlf,EAASrE,gBAAgBujB,mBAAmBvzB,OAAS,GACrDgB,KAAKid,kBAAkByJ,iBAAiBrT,EAASrE,gBAAgBujB,mBAAoBvyB,KAAKkI,OAAOpH,MAAMuS,EAASrE,iBACxH,GAAC,CAAA1O,IAAA,gBAAAC,MACD,SAAciyB,GACV,IAAMC,EAA0BD,EAChC,GAA0C,UAAtCC,EAAwBxmB,KAAKlK,MAC7B0wB,EAAwB1uB,SAAW0uB,EAAwBxmB,KAAKlI,QAEzCyuB,EAAQlc,OACnC,CAEA,IAAMjD,EAAWrT,KAAK6xB,qBAAqBlxB,IAAI6xB,EAAQlc,QACvD,GAAKjD,EAAL,CAEA,IAAMqf,EAAmB1yB,KAAK2yB,0BAA0Btf,EAAUof,EAAwBxmB,KAAKwM,OAC3Fia,GACA1yB,KAAKgyB,YAAYU,EAAkBD,EAAwBxmB,KAAK2mB,WAHhE,CAHA,CAOR,GAAC,CAAAtyB,IAAA,4BAAAC,MACD,SAA0B8S,EAAUnO,GAAG,IAC/B1E,EAD+BK,EAAAb,KAEnC,OAAQkF,EAAEnD,MACN,KAAKgY,GAAU8Y,aACX7yB,KAAK8xB,wBAAwB/c,MAAM1B,GACnCrT,KAAKkyB,6BAA6Bnd,MAAM1B,GACxCrT,KAAK8yB,gBAAgB5tB,EAAE+G,KAAK5K,KAAMgS,GAClC,IAAMrK,EAAS9D,EAAE+G,KAAK5K,KAAKZ,GAG3B,OAFAT,KAAK+xB,2BAA2BxwB,IAAI8R,EAAUrK,GAC9ChJ,KAAK+yB,kBAAkB7tB,EAAE+G,KAAK5K,KAAM2H,GAC7B,CACHgqB,UAAW9tB,EAAE8tB,UACbjxB,KAAMgY,GAAUkZ,oBAChBhnB,KAAM,CACFqK,OAAQ2D,GAAkBiZ,SAC1B5W,KAAM,CACF,CACIjB,SAAUrb,KAAKkI,OAAOpH,MAAMuS,GAC5BsJ,OAAQ,KACRtb,KAAM6D,EAAE+G,KAAK5K,OAGrBsa,QAAS,GACTF,MAAO,GACPpR,WAAY,GACZioB,gBAAgB,IAI5B,KAAKvY,GAAUoZ,KACf,KAAKpZ,GAAUqZ,KACf,KAAKrZ,GAAUsZ,iBACX,OAAO,EAEX,KAAKtZ,GAAUuZ,OACX,OAAOpuB,EAEX,KAAK6U,GAAUwZ,OAEX,OADAvzB,KAAKwzB,WAAWtuB,EAAE+G,KAAKmS,QAAS/K,EAAU,CAAC,KAAM,WAAY,aAAc,WACpEnO,EAEX,KAAK6U,GAAUkZ,oBACX,OAAQ/tB,EAAE+G,KAAKqK,QACX,KAAK2D,GAAkBiZ,SAoBnB,OAnBAhuB,EAAE+G,KAAKqQ,KAAKrb,SAAQ,SAAC9D,GACjB0D,EAAK2yB,WAAWr2B,EAAGkW,EAAU,CACzB,WACA,SACA,eAEJxS,EAAKiyB,gBAAgB31B,EAAEkE,KAAMgS,GAC7B,IAAMrK,EAASnI,EAAKkxB,2BAA2BpxB,IAAI0S,GACnDrK,GAAUnI,EAAKkyB,kBAAkB51B,EAAEkE,KAAM2H,EAC7C,IACA9D,EAAE+G,KAAK0P,QAAQ1a,SAAQ,SAAC9D,GACpB0D,EAAK2yB,WAAWr2B,EAAGkW,EAAU,CAAC,WAAY,MAC9C,IACAnO,EAAE+G,KAAK5B,WAAWpJ,SAAQ,SAAC9D,GACvB0D,EAAK2yB,WAAWr2B,EAAGkW,EAAU,CAAC,MAClC,IACAnO,EAAE+G,KAAKwP,MAAMxa,SAAQ,SAAC9D,GAClB0D,EAAK2yB,WAAWr2B,EAAGkW,EAAU,CAAC,MAClC,IACOnO,EAEX,KAAK+U,GAAkBmP,KACvB,KAAKnP,GAAkBsP,UACvB,KAAKtP,GAAkBqP,UAInB,OAHApkB,EAAE+G,KAAK2c,UAAU3nB,SAAQ,SAAC8nB,GACtBloB,EAAK2yB,WAAWzK,EAAG1V,EAAU,CAAC,MAClC,IACOnO,EAEX,KAAK+U,GAAkBwZ,eACnB,OAAO,EAEX,KAAKxZ,GAAkByZ,iBACvB,KAAKzZ,GAAkB0Z,iBACvB,KAAK1Z,GAAkB2Z,OACvB,KAAK3Z,GAAkB4Z,eACvB,KAAK5Z,GAAkB6Z,MAEnB,OADA9zB,KAAKwzB,WAAWtuB,EAAE+G,KAAMoH,EAAU,CAAC,OAC5BnO,EAEX,KAAK+U,GAAkB8Z,eACvB,KAAK9Z,GAAkB+Z,iBAGnB,OAFAh0B,KAAKwzB,WAAWtuB,EAAE+G,KAAMoH,EAAU,CAAC,OACnCrT,KAAKi0B,gBAAgB/uB,EAAE+G,KAAMoH,EAAU,CAAC,YACjCnO,EAEX,KAAK+U,GAAkBia,KACnB,OAAOhvB,EAEX,KAAK+U,GAAkBka,UAInB,OAHAjvB,EAAE+G,KAAKsjB,OAAOtuB,SAAQ,SAACyuB,GACnB7uB,EAAK2yB,WAAW9D,EAAOrc,EAAU,CAAC,QAAS,OAC/C,IACOnO,EAEX,KAAK+U,GAAkBma,kBAMnB,OALAp0B,KAAKwzB,WAAWtuB,EAAE+G,KAAMoH,EAAU,CAAC,OACnCrT,KAAKi0B,gBAAgB/uB,EAAE+G,KAAMoH,EAAU,CAAC,aACf,QAAxB7S,EAAK0E,EAAE+G,KAAKooB,cAA2B,IAAP7zB,GAAyBA,EAAGS,SAAQ,SAACud,GAClE3d,EAAKozB,gBAAgBzV,EAAOnL,EAAU,CAAC,WAC3C,IACOnO,GAKvB,OAAO,CACX,GAAC,CAAA5E,IAAA,UAAAC,MACD,SAAQ+zB,EAAcC,EAAKlhB,EAAUzS,GAAM,IACjBiE,EADiBC,EAAAC,EACrBnE,GAAI,IAAtB,IAAAkE,EAAAjH,MAAAgH,EAAAC,EAAA3H,KAAA6H,MAAwB,CAAA,IAAb1E,EAAGuE,EAAAtE,OACLtC,MAAMu2B,QAAQD,EAAIj0B,KAA6B,iBAAbi0B,EAAIj0B,MAEvCrC,MAAMu2B,QAAQD,EAAIj0B,IAClBi0B,EAAIj0B,GAAOg0B,EAAaG,OAAOphB,EAAUkhB,EAAIj0B,IAG7Ci0B,EAAIj0B,GAAOg0B,EAAaxzB,MAAMuS,EAAUkhB,EAAIj0B,IAEpD,CAAC,CAAA,MAAA0C,GAAA8B,EAAAI,EAAAlC,EAAA,CAAA,QAAA8B,EAAAK,GAAA,CACD,OAAOovB,CACX,GAAC,CAAAj0B,IAAA,aAAAC,MACD,SAAWg0B,EAAKlhB,EAAUzS,GACtB,OAAOZ,KAAKzB,QAAQyB,KAAK8xB,wBAAyByC,EAAKlhB,EAAUzS,EACrE,GAAC,CAAAN,IAAA,kBAAAC,MACD,SAAgBg0B,EAAKlhB,EAAUzS,GAC3B,OAAOZ,KAAKzB,QAAQyB,KAAKkyB,6BAA8BqC,EAAKlhB,EAAUzS,EAC1E,GAAC,CAAAN,IAAA,kBAAAC,MACD,SAAgBc,EAAMgS,GAAU,IAAAkN,EAAAvgB,KAC5BA,KAAKwzB,WAAWnyB,EAAMgS,EAAU,CAAC,KAAM,WACnC,eAAgBhS,GAChBA,EAAKL,WAAWC,SAAQ,SAACyzB,GACrBnU,EAAKuS,gBAAgB4B,EAAOrhB,EAChC,GAER,GAAC,CAAA/S,IAAA,oBAAAC,MACD,SAAkBc,EAAM2H,GAAQ,IAAA2rB,EAAA30B,KACxBqB,EAAKU,OAAS9E,EAASsM,UAAalI,EAAK2H,SACzC3H,EAAK2H,OAASA,GACd,eAAgB3H,GAChBA,EAAKL,WAAWC,SAAQ,SAACyzB,GACrBC,EAAK5B,kBAAkB2B,EAAO1rB,EAClC,GAER,KAAC2oB,CAAA,CA/Mc,GCAbiD,GAAgB,WAClB,SAAAA,EAAY3sB,GAASlI,OAAA60B,GACjB50B,KAAK60B,WAAa,IAAIC,QACtB90B,KAAK+0B,gBAAkB,GACvB/0B,KAAK6e,WAAa5W,EAAQ4W,WAC1B7e,KAAK2kB,SAAW1c,EAAQ0c,SACxB3kB,KAAK6S,cAAgB5K,EAAQ4K,cAC7B7S,KAAKkI,OAASD,EAAQC,OACtBlI,KAAK6hB,MACT,CAkDC,OAlDAxhB,EAAAu0B,EAAA,CAAA,CAAAt0B,IAAA,OAAAC,MACD,WACIP,KAAK+U,QACL/U,KAAKg1B,kBAAkB7lB,QAASnJ,SACpC,GAAC,CAAA1F,IAAA,gBAAAC,MACD,SAAcjD,EAAYiI,GAAK,IAAA1E,EAAAb,KAC3B,GAAKzC,EAAkBD,KAEnB0C,KAAK60B,WAAWzzB,IAAI9D,GAAxB,CAEA0C,KAAK60B,WAAWpiB,IAAInV,GACpB,IAAM8kB,EAAWV,GAAqBlkB,OAAOgV,OAAOhV,OAAOgV,OAAO,CAAE,EAAExS,KAAK6S,eAAgB,CAAEtN,IAAAA,EAAKsZ,WAAY7e,KAAK6e,WAAY3W,OAAQlI,KAAKkI,OAAQiV,iBAAkBnd,OAAS1C,GAC/K0C,KAAK+0B,gBAAgBx1B,MAAK,WAAA,OAAM6iB,EAASyO,gBACzC7wB,KAAK+0B,gBAAgBx1B,KAAKklB,GAAmBjnB,OAAOgV,OAAOhV,OAAOgV,OAAO,CAAA,EAAIxS,KAAK6S,eAAgB,CAAE8R,SAAU3kB,KAAK2kB,SAAUpf,IAAKjI,EAAY4K,OAAQlI,KAAKkI,WAC3J0L,YAAW,WACHtW,EAAWi1B,oBACXj1B,EAAWi1B,mBAAmBvzB,OAAS,GACvC6B,EAAKgS,cAAcoK,kBAAkByJ,iBAAiBppB,EAAWi1B,mBAAoB1xB,EAAKqH,OAAOpH,MAAMxD,EAAWF,OACtHyD,EAAKk0B,gBAAgBx1B,KAAK0mB,GAA8B,CACpD/d,OAAQrH,EAAKqH,OACb+U,kBAAmBpc,EAAKgS,cAAcoK,mBACvC3f,GACN,GAAE,EAbC,CAcR,GAAC,CAAAgD,IAAA,sBAAAC,MACD,SAAoB00B,GACXA,EAAczhB,eAAkByhB,EAAcjmB,iBAEnDhP,KAAKg1B,kBAAkBC,EAAczhB,cAAcrE,QAAS8lB,EAAcjmB,gBAC9E,GAAC,CAAA1O,IAAA,oBAAAC,MACD,SAAkBqB,EAAS2D,GACvB,IAAM2vB,EAAUl1B,KAChBA,KAAK+0B,gBAAgBx1B,KAAK8W,GAAMzU,EAAQnE,UAAW,gBAAgB,SAAUyY,GACzE,OAAO,SAAUif,GACb,IAAM73B,EAAa4Y,EAASvY,KAAKqC,KAAMm1B,GAGvC,OAFIn1B,KAAK1C,YAAcwc,GAAM9Z,OACzBk1B,EAAQ9X,cAAcpd,KAAK1C,WAAYiI,GACpCjI,EAEd,IACL,GAAC,CAAAgD,IAAA,QAAAC,MACD,WACIP,KAAK+0B,gBAAgB9zB,SAAQ,SAACkgB,GAC1B,IACIA,GACJ,CACA,MAAOjc,GACP,CACJ,IACAlF,KAAK+0B,gBAAkB,GACvB/0B,KAAK60B,WAAa,IAAIC,OAC1B,KAACF,CAAA,CA3DiB,GCuBtB,SAASQ,GAAUnJ,EAASoJ,EAAYC,EAAGC,GAEvC,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUp1B,GAAS,IAAMq1B,EAAKL,EAAUra,KAAK3a,GAAU,CAAC,MAAO2E,GAAKwwB,EAAOxwB,EAAI,CAAE,CAC1F,SAAS2wB,EAASt1B,GAAS,IAAMq1B,EAAKL,EAAiB,MAAEh1B,GAAU,CAAC,MAAO2E,GAAKwwB,EAAOxwB,EAAI,CAAE,CAC7F,SAAS0wB,EAAKnP,GAJlB,IAAelmB,EAIakmB,EAAOzhB,KAAOywB,EAAQhP,EAAOlmB,QAJ1CA,EAIyDkmB,EAAOlmB,MAJhDA,aAAiB+0B,EAAI/0B,EAAQ,IAAI+0B,GAAE,SAAUG,GAAWA,EAAQl1B,EAAQ,KAIjBu1B,KAAKH,EAAWE,EAAW,CAC7GD,GAAML,EAAYA,EAAU1f,MAAMoW,EAASoJ,GAAc,KAAKna,OAClE,GACJ,CC3BA,IAHA,IAAI5U,GAAQ,mEAERyvB,GAA+B,oBAAflH,WAA6B,GAAK,IAAIA,WAAW,KAC5DtkB,GAAI,EAAGA,GAAIjE,GAAciE,KAC9BwrB,GAAOzvB,GAAM0vB,WAAWzrB,KAAMA,GAElC,ICTM0rB,GAAe,IAAI/1B,IAYzB,IAAMg2B,GAAe,SAAC31B,EAAOgT,EAAKjI,GAC9B,GAAK/K,IACC41B,GAAwB51B,EAAOgT,IAAyB,WAAjB6iB,EAAO71B,IADpD,CAGA,IACM81B,EAhBV,SAAyB/qB,EAAKgrB,GAC1B,IAAIC,EAAaN,GAAat1B,IAAI2K,GAQlC,OAPKirB,IACDA,EAAa,IAAIr2B,IACjB+1B,GAAa10B,IAAI+J,EAAKirB,IAErBA,EAAWn1B,IAAIk1B,IAChBC,EAAWh1B,IAAI+0B,EAAM,IAElBC,EAAW51B,IAAI21B,EAC1B,CAMiBE,CAAgBlrB,EADhB/K,EAAM8vB,YAAYnqB,MAE3B+U,EAAQob,EAAK7xB,QAAQjE,GAKzB,OAJe,IAAX0a,IACAA,EAAQob,EAAKr3B,OACbq3B,EAAK92B,KAAKgB,IAEP0a,CARH,CASR,EACA,SAASwb,GAAal2B,EAAOgT,EAAKjI,GAC9B,GAAI/K,aAAiBtC,MACjB,OAAOsC,EAAMpC,KAAI,SAACu4B,GAAG,OAAKD,GAAaC,EAAKnjB,EAAKjI,MAEhD,GAAc,OAAV/K,EACL,OAAOA,EAEN,GAAIA,aAAiBo2B,cACtBp2B,aAAiBq2B,cACjBr2B,aAAiBs2B,YACjBt2B,aAAiBuL,aACjBvL,aAAiBsuB,YACjBtuB,aAAiBu2B,aACjBv2B,aAAiBw2B,YACjBx2B,aAAiBy2B,WACjBz2B,aAAiB02B,kBAEjB,MAAO,CACHC,QAFS32B,EAAM8vB,YAAYnqB,KAG3BoP,KAAM,CAAC9X,OAAO25B,OAAO52B,KAGxB,GAAIA,aAAiB62B,YAAa,CACnC,IAAMlxB,EAAO3F,EAAM8vB,YAAYnqB,KACzBmxB,EDxCD,SAAUC,GACnB,IAAyC/sB,EAArCgtB,EAAQ,IAAI1I,WAAWyI,GAAiBhtB,EAAMitB,EAAMv4B,OAAQq4B,EAAS,GACzE,IAAK9sB,EAAI,EAAGA,EAAID,EAAKC,GAAK,EACtB8sB,GAAU/wB,GAAMixB,EAAMhtB,IAAM,GAC5B8sB,GAAU/wB,IAAmB,EAAXixB,EAAMhtB,KAAW,EAAMgtB,EAAMhtB,EAAI,IAAM,GACzD8sB,GAAU/wB,IAAuB,GAAfixB,EAAMhtB,EAAI,KAAY,EAAMgtB,EAAMhtB,EAAI,IAAM,GAC9D8sB,GAAU/wB,GAAqB,GAAfixB,EAAMhtB,EAAI,IAQ9B,OANID,EAAM,GAAM,EACZ+sB,EAASA,EAAO7wB,UAAU,EAAG6wB,EAAOr4B,OAAS,GAAK,IAE7CsL,EAAM,GAAM,IACjB+sB,EAASA,EAAO7wB,UAAU,EAAG6wB,EAAOr4B,OAAS,GAAK,MAE/Cq4B,CACX,CCyBuBG,CAAOj3B,GACtB,MAAO,CACH22B,QAAShxB,EACTmxB,OAAAA,EAER,CACK,GAAI92B,aAAiBk3B,SAEtB,MAAO,CACHP,QAFS32B,EAAM8vB,YAAYnqB,KAG3BoP,KAAM,CACFmhB,GAAal2B,EAAM2L,OAAQqH,EAAKjI,GAChC/K,EAAMm3B,WACNn3B,EAAMo3B,aAIb,GAAIp3B,aAAiBq3B,iBAGtB,MAAO,CACHV,QAHS32B,EAAM8vB,YAAYnqB,KAI3B6I,IAHYxO,EAARwO,KAMP,GAAIxO,aAAiBs3B,kBAAmB,CAGzC,MAAO,CACHX,QAHS,mBAITnoB,IAHQxO,EAAMgM,YAKtB,CACK,OAAIhM,aAAiBu3B,UAEf,CACHZ,QAFS32B,EAAM8vB,YAAYnqB,KAG3BoP,KAAM,CAACmhB,GAAal2B,EAAM0L,KAAMsH,EAAKjI,GAAM/K,EAAMkL,MAAOlL,EAAMoL,SAG7DwqB,GAAwB51B,EAAOgT,IAAyB,WAAjB6iB,EAAO71B,GAG5C,CACH22B,QAHS32B,EAAM8vB,YAAYnqB,KAI3B+U,MAHUib,GAAa31B,EAAOgT,EAAKjI,IAMpC/K,CACX,CACA,IAAMw3B,GAAgB,SAACziB,EAAM/B,EAAKjI,GAC9B,OAAOgK,EAAKnX,KAAI,SAACu4B,GAAG,OAAKD,GAAaC,EAAKnjB,EAAKjI,KACpD,EACM6qB,GAA0B,SAAC51B,EAAOgT,GACpC,IAaMykB,EAbwB,CAC1B,kBACA,cACA,mBACA,eACA,oBACA,cACA,6BACA,eACA,uBACA,yBACA,6BAEyD1Z,QAAO,SAACpY,GAAI,MAA0B,mBAAdqN,EAAIrN,MACzF,OAAO7I,QAAQ26B,EAA+BrtB,MAAK,SAACzE,GAAI,OAAK3F,aAAiBgT,EAAIrN,EAAK,IAC3F,ECnHA,SAAS+xB,GAA0B1kB,EAAKpL,EAAYC,EAAe8vB,GAC/D,IAAMhV,EAAW,GACjB,IACI,IAAM4L,EAAiBzY,GAAM9C,EAAIskB,kBAAkBp6B,UAAW,cAAc,SAAUyY,GAClF,OAAO,SAAUiiB,GAAsB,IAAA9iB,IAAAA,EAAAX,UAAA1V,OAANsW,MAAIrX,MAAAoX,EAAAA,EAAAA,OAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,EAAAb,GAAAA,UAAAa,GACjC,IAAK8C,GAAUrY,KAAMmI,EAAYC,GAAe,GAAO,CACnD,IAAMgwB,EAT1B,SAAkCD,GAC9B,MAAuB,uBAAhBA,EAAuC,QAAUA,CAC5D,CAOoCE,CAAyBF,GAGzC,GAFM,cAAen4B,OACjBA,KAAKoL,UAAYgtB,GACjBF,GACA,CAAC,QAAS,UAAU55B,SAAS85B,GAC7B,GAAI9iB,EAAK,IAAyB,WAAnB8gB,EAAO9gB,EAAK,IAAiB,CACxC,IAAMgjB,EAAoBhjB,EAAK,GAC1BgjB,EAAkBC,wBACnBD,EAAkBC,uBAAwB,EAElD,MAEIjjB,EAAKkjB,OAAO,EAAG,EAAG,CACdD,uBAAuB,GAIvC,CACA,OAAOriB,EAASL,MAAM7V,KAAI,CAAGm4B,GAAWj5B,OAAKoW,IAErD,IACA4N,EAAS3jB,KAAKuvB,EACjB,CACD,MAAOtuB,GACH2M,QAAQ3O,MAAM,yDAClB,CACA,OAAO,WACH0kB,EAASjiB,SAAQ,SAACujB,GAAC,OAAKA,OAEhC,CCpCA,SAASiU,GAAiBh7B,EAAWsE,EAAMuf,EAAInZ,EAAYC,EAAeF,EAAQqL,GAC9E,IAEwB1O,EAFlBqe,EAAW,GACmCpe,EAAAC,EAAtCvH,OAAOk7B,oBAAoBj7B,IACjB,IAAA,IAAAk7B,aAAA,IAAb7hB,EAAIjS,EAAAtE,MACX,GAAI,CACA,gBACA,SACA,qBACA,uBACFjC,SAASwY,GACP,MAAA,WAEJ,IACI,GAA+B,mBAApBrZ,EAAUqZ,GACjB,MAAA,WAEJ,IAAMgY,EAAiBzY,GAAM5Y,EAAWqZ,GAAM,SAAUZ,GACpD,OAAO,WAAmB,IAAA,IAAAb,EAAAX,UAAA1V,OAANsW,EAAIrX,IAAAA,MAAAoX,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAb,UAAAa,GACpB,IAAMkR,EAASvQ,EAASL,MAAM7V,KAAMsV,GAEpC,GADA4gB,GAAazP,EAAQlT,EAAKvT,MACtB,YAAaA,KAAKqL,SACjBgN,GAAUrY,KAAKqL,OAAQlD,EAAYC,GAAe,GAAO,CAC1D,IAAMwwB,EAAab,GAAcziB,EAAM/B,EAAKvT,MACtC0nB,EAAW,CACb3lB,KAAAA,EACAkQ,SAAU6E,EACVxB,KAAMsjB,GAEVtX,EAAGthB,KAAKqL,OAAQqc,EACpB,CACA,OAAOjB,EAEf,IACAvD,EAAS3jB,KAAKuvB,EACjB,CACD,MAAOtuB,GACH,IAAMq4B,EAAc9iB,GAAWtY,EAAWqZ,EAAM,CAC5CvV,IAAG,SAACqpB,GACAtJ,EAAGthB,KAAKqL,OAAQ,CACZtJ,KAAAA,EACAkQ,SAAU6E,EACVxB,KAAM,CAACsV,GACPkO,QAAQ,GAEhB,IAEJ5V,EAAS3jB,KAAKs5B,EAClB,CAAC,EA5CL,IAAA/zB,EAAAjH,MAAAgH,EAAAC,EAAA3H,KAAA6H,MAA0B2zB,GA6CzB,CAAA,MAAA31B,GAAA8B,EAAAI,EAAAlC,EAAA,CAAA,QAAA8B,EAAAK,GAAA,CACD,OAAO+d,CACX,CC1CA,SAAS6V,GAAU1B,EAAQ2B,EAAcC,GACrC,IAAIC,OAA6B/vB,IAAjB6vB,EAA6B,KAAOA,EAEhD1iB,EAfR,SAAsB+gB,EAAQ8B,GAC1B,IAAIC,EAAeC,KAAKhC,GACxB,GAAI8B,EAAe,CAEf,IADA,IAAIG,EAAa,IAAIzK,WAAWuK,EAAap6B,QACpCuL,EAAI,EAAGpN,EAAIi8B,EAAap6B,OAAQuL,EAAIpN,IAAKoN,EAC9C+uB,EAAW/uB,GAAK6uB,EAAapD,WAAWzrB,GAE5C,OAAOgvB,OAAOC,aAAa3jB,MAAM,KAAM,IAAIihB,YAAYwC,EAAWptB,QACtE,CACA,OAAOktB,CACX,CAKiBK,CAAapC,OADeluB,IAArB8vB,GAAyCA,GAEzDjJ,EAAQ1Z,EAAO9R,QAAQ,KAAM,IAAM,EACnCmT,EAAOrB,EAAO9P,UAAUwpB,IAAUkJ,EAAY,wBAA4BA,EAAY,IACtFQ,EAAO,IAAIC,KAAK,CAAChiB,GAAO,CAAE5V,KAAM,2BACpC,OAAOc,IAAI+2B,gBAAgBF,EAC/B,CClBA,IDoBmCrC,GAAQ2B,GAAcC,GACjDr2B,GETJovB,GACA6H,GACArZ,GDdAsZ,IDoB+BzC,GCpBW,myNDoBH2B,GCpBuyN,KDoBzxNC,ICpB+xN,EDsB70N,SAAuBhxB,GAE1B,OADArF,GAAMA,IAAOm2B,GAAU1B,GAAQ2B,GAAcC,IACtC,IAAIc,OAAOn3B,GAAKqF,KGlBzB+xB,GAAa,WAiBf,SAAAA,EAAY/xB,GAAS,IAAApH,EAAAb,KAAAD,OAAAi6B,GACjBh6B,KAAKi6B,uBAAyB,IAAI/5B,IAClCF,KAAKk6B,UAAY,CAAEC,SAAU,EAAGC,SAAU,MAC1Cp6B,KAAKub,QAAS,EACdvb,KAAKwb,QAAS,EACdxb,KAAKoc,gBAAkB,SAAC3H,EAAQiT,KACX7mB,EAAKq5B,UAAUE,UAC5Bv5B,EAAKq5B,UAAUC,WAAat5B,EAAKq5B,UAAUE,WAC9Bv5B,EAAKq5B,UAAUE,WAC5Bv5B,EAAKq5B,UAAUE,SAAWv5B,EAAKq5B,UAAUC,UACxCt5B,EAAKo5B,uBAAuB74B,IAAIqT,IACjC5T,EAAKo5B,uBAAuB14B,IAAIkT,EAAQ,IAE5C5T,EAAKo5B,uBAAuBt5B,IAAI8T,GAAQlV,KAAKmoB,IAEjD,IAAA2S,EAA4FpyB,EAApF8a,SAAAA,OAAW,IAAHsX,EAAG,MAAKA,EAAE9mB,EAAkEtL,EAAlEsL,IAAKpL,EAA6DF,EAA7DE,WAAYC,EAAiDH,EAAjDG,cAAeQ,EAAkCX,EAAlCW,aAAcF,EAAoBT,EAApBS,eACxE1I,KAAK6e,WAAa5W,EAAQ4W,WAC1B7e,KAAKkI,OAASD,EAAQC,OAClBU,GAA6B,QAAbma,GAChB/iB,KAAKs6B,2BAA2B/mB,EAAKpL,EAAYC,GACjDQ,GAAoC,iBAAbma,GACvB/iB,KAAKu6B,sBAAsBxX,EAAUxP,EAAKpL,EAAYC,EAAe,CACjEM,eAAAA,GAEZ,CAyJC,OAzJArI,EAAA25B,EAAA,CAAA,CAAA15B,IAAA,QAAAC,MAxCD,WACIP,KAAKi6B,uBAAuBO,QAC5Bx6B,KAAKy6B,gBAAkBz6B,KAAKy6B,gBAChC,GAAC,CAAAn6B,IAAA,SAAAC,MACD,WACIP,KAAKub,QAAS,CAClB,GAAC,CAAAjb,IAAA,WAAAC,MACD,WACIP,KAAKub,QAAS,CAClB,GAAC,CAAAjb,IAAA,OAAAC,MACD,WACIP,KAAKwb,QAAS,CAClB,GAAC,CAAAlb,IAAA,SAAAC,MACD,WACIP,KAAKwb,QAAS,CAClB,GAAC,CAAAlb,IAAA,wBAAAC,MA0BD,SAAsBm6B,EAAKnnB,EAAKpL,EAAYC,EAAeH,GAAS,IAAAsY,EAAAvgB,KAC1D26B,EAAqB1C,GAA0B1kB,EAAKpL,EAAYC,GAAe,GAC/EwyB,EAAwB,IAAI16B,IAC5B26B,EAAS,IAAIf,GACnBe,EAAOC,UAAY,SAAC51B,GAChB,IAAQzE,EAAOyE,EAAE+G,KAATxL,GAER,GADAm6B,EAAsBr5B,IAAId,GAAI,GACxB,WAAYyE,EAAE+G,KAApB,CAEA,IAAA8uB,EAAwC71B,EAAE+G,KAAlCorB,EAAM0D,EAAN1D,OAAQt1B,EAAIg5B,EAAJh5B,KAAM0J,EAAKsvB,EAALtvB,MAAOE,EAAMovB,EAANpvB,OAC7B4U,EAAK1B,WAAW,CACZpe,GAAAA,EACAsB,KAAMwY,GAAc,MACpBygB,SAAU,CACN,CACI/oB,SAAU,YACVqD,KAAM,CAAC,EAAG,EAAG7J,EAAOE,IAExB,CACIsG,SAAU,YACVqD,KAAM,CACF,CACI4hB,QAAS,cACT5hB,KAAM,CACF,CACI4hB,QAAS,OACTjrB,KAAM,CAAC,CAAEirB,QAAS,cAAeG,OAAAA,IACjCt1B,KAAAA,KAIZ,EACA,MAxBZ,GA8BR,IAEIk5B,EAFEC,EAAuB,IAAOR,EAChCS,EAAmB,EAgEvBF,EAAQG,uBA3CoB,SAAtBC,EAAuBrI,GAnBX,IACRsI,EAmBFH,GACAnI,EAAYmI,EAAmBD,EAC/BD,EAAQG,sBAAsBC,IAGlCF,EAAmBnI,GAxBbsI,EAAgB,GAED,SAAfC,EAAgBC,GAClBA,EAAK7Q,iBAAiB,UAAU1pB,SAAQ,SAACoK,GAChCgN,GAAUhN,EAAQlD,EAAYC,GAAe,IAC9CkzB,EAAc/7B,KAAK8L,EAE3B,IACAmwB,EAAK7Q,iBAAiB,KAAK1pB,SAAQ,SAACw6B,GAC5BA,EAAKn+B,YACLi+B,EAAaE,EAAKn+B,WAE1B,IAGJi+B,CAAahoB,EAAIvN,UACVs1B,GAUFr6B,SAAQ,SAACoK,GAAM,OAAK+pB,GAAU7U,OAAM,OAAQ,EAAMmb,IAAAC,MAAE,SAAAC,IAAA,IAAAp7B,EAAAC,EAAAmV,EAAAnK,EAAAE,EAAAkwB,EAAA,OAAAH,IAAAI,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAA7gB,MAAA,KAAA,EAEjB,GAA9Bza,EAAKT,KAAKkI,OAAOpH,MAAMuK,IACzBuvB,EAAsBj6B,IAAIF,GAAG,CAAAs7B,EAAA7gB,KAAA,EAAA,KAAA,CAAA,OAAA6gB,EAAAE,OAAA,UAAA,KAAA,EAAA,GAEZ,IAAjB5wB,EAAOI,OAAiC,IAAlBJ,EAAOM,OAAY,CAAAowB,EAAA7gB,KAAA,EAAA,KAAA,CAAA,OAAA6gB,EAAAE,OAAA,UAAA,KAAA,EAe9B,OAbfrB,EAAsBr5B,IAAId,GAAI,GAC1B,CAAC,QAAS,UAAUnC,SAAS+M,EAAOD,aAC9BwK,EAAUvK,EAAOE,WAAWF,EAAOD,YACuH,KAA/D,QAA3F5K,EAAKoV,aAAyC,EAASA,EAAQsmB,8BAA2C,IAAP17B,OAAgB,EAASA,EAAG+3B,wBACjI3iB,EAAQ4kB,MAAM5kB,EAAQumB,mBAMxB1wB,EAAQJ,EAAO8M,aAAe9M,EAAOI,MACrCE,EAASN,EAAO2M,cAAgB3M,EAAOM,OAAMowB,EAAA7gB,KAAA,GAE9BkhB,kBAAkB/wB,EAAQ,CAC3CgxB,YAAa5wB,EACb6wB,aAAc3wB,IAChB,KAAA,GAHIkwB,EAAME,EAAAQ,KAKZ1B,EAAO2B,YAAY,CACf/7B,GAAAA,EACAo7B,OAAAA,EACApwB,MAAOA,EACPE,OAAQA,EACRjD,eAAgBT,EAAQS,gBACzB,CAACmzB,IAAS,KAAA,GAAA,IAAA,MAAA,OAAAE,EAAAU,OAAA,GAAAb,EAAA57B,KAChB,QACDi7B,EAAQG,sBAAsBC,OAGlCr7B,KAAKy6B,eAAiB,WAClBE,IACA+B,qBAAqBzB,GAE7B,GAAC,CAAA36B,IAAA,6BAAAC,MACD,SAA2BgT,EAAKpL,EAAYC,GACxCpI,KAAK28B,uBACL38B,KAAK48B,oCACL,IAAMjC,EAAqB1C,GAA0B1kB,EAAKpL,EAAYC,GAAe,GAC/Ey0B,EC/Jd,SAAsCvb,EAAI/N,EAAKpL,EAAYC,GACvD,IAE0BvD,EAFpBqe,EAAW,GACkEpe,EAAAC,EAAnEvH,OAAOk7B,oBAAoBnlB,EAAIupB,yBAAyBr/B,YAC9C,IAAA,IAAAk7B,aAAA,IAAf7hB,EAAIjS,EAAAtE,MACX,IACI,GAA4D,mBAAjDgT,EAAIupB,yBAAyBr/B,UAAUqZ,GAC9C,MAAA,WAEJ,IAAMgY,EAAiBzY,GAAM9C,EAAIupB,yBAAyBr/B,UAAWqZ,GAAM,SAAUZ,GACjF,OAAO,WAAmB,IAAA,IAAArV,EAAAb,KAAAqV,EAAAX,UAAA1V,OAANsW,EAAIrX,IAAAA,MAAAoX,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAb,UAAAa,GAWpB,OAVK8C,GAAUrY,KAAKqL,OAAQlD,EAAYC,GAAe,IACnDwL,YAAW,WACP,IAAMglB,EAAab,GAAcziB,EAAM/B,EAAK1S,GAC5CygB,EAAGzgB,EAAKwK,OAAQ,CACZtJ,KAAMwY,GAAc,MACpBtI,SAAU6E,EACVxB,KAAMsjB,GAEb,GAAE,GAEA1iB,EAASL,MAAM7V,KAAMsV,GAEpC,IACA4N,EAAS3jB,KAAKuvB,EACjB,CACD,MAAOtuB,GACH,IAAMq4B,EAAc9iB,GAAWxC,EAAIupB,yBAAyBr/B,UAAWqZ,EAAM,CACzEvV,IAAG,SAACqpB,GACAtJ,EAAGthB,KAAKqL,OAAQ,CACZtJ,KAAMwY,GAAc,MACpBtI,SAAU6E,EACVxB,KAAM,CAACsV,GACPkO,QAAQ,GAEhB,IAEJ5V,EAAS3jB,KAAKs5B,EAClB,CAAC,EAlCL,IAAA/zB,EAAAjH,MAAAgH,EAAAC,EAAA3H,KAAA6H,MAA4B2zB,GAmC3B,CAAA,MAAA31B,GAAA8B,EAAAI,EAAAlC,EAAA,CAAA,QAAA8B,EAAAK,GAAA,CACD,OAAO,WACH+d,EAASjiB,SAAQ,SAACujB,GAAC,OAAKA,OAEhC,CDqH8BuY,CAA6B/8B,KAAKoc,gBAAgBiG,KAAKriB,MAAOuT,EAAKpL,EAAYC,GAC/F40B,EJ7Gd,SAAyC1b,EAAI/N,EAAKpL,EAAYC,EAAeF,GACzE,IAAMgb,EAAW,GAKjB,OAJAA,EAAS3jB,KAAIsW,MAAbqN,EAAQkI,EAASqN,GAAiBllB,EAAI0pB,sBAAsBx/B,UAAW8c,GAAc2iB,MAAO5b,EAAInZ,EAAYC,EAAeF,EAAQqL,UACzF,IAA/BA,EAAI4pB,wBACXja,EAAS3jB,KAAIsW,MAAbqN,EAAQkI,EAASqN,GAAiBllB,EAAI4pB,uBAAuB1/B,UAAW8c,GAAc6iB,OAAQ9b,EAAInZ,EAAYC,EAAeF,EAAQqL,KAElI,WACH2P,EAASjiB,SAAQ,SAACujB,GAAC,OAAKA,OAEhC,CIoGsC6Y,CAAgCr9B,KAAKoc,gBAAgBiG,KAAKriB,MAAOuT,EAAKpL,EAAYC,EAAepI,KAAKkI,QACpIlI,KAAKy6B,eAAiB,WAClBE,IACAkC,IACAG,IAER,GAAC,CAAA18B,IAAA,oCAAAC,MACD,WAAoC,IAAAo0B,EAAA30B,KAChCo7B,uBAAsB,WAAA,OAAMzG,EAAK2I,gCACrC,GAAC,CAAAh9B,IAAA,uBAAAC,MACD,WAAuB,IAAAg9B,EAAAv9B,KAKnBo7B,uBAJ8B,SAAxBoC,EAAyBxK,GAC3BuK,EAAKrD,UAAUC,SAAWnH,EAC1BoI,sBAAsBoC,KAG9B,GAAC,CAAAl9B,IAAA,8BAAAC,MACD,WAA8B,IAAAk9B,EAAAz9B,KAC1BA,KAAKi6B,uBAAuBh5B,SAAQ,SAACk2B,EAAQ9rB,GACzC,IAAM5K,EAAKg9B,EAAKv1B,OAAOpH,MAAMuK,GAC7BoyB,EAAKC,8BAA8BryB,EAAQ5K,EAC/C,IACA26B,uBAAsB,WAAA,OAAMqC,EAAKH,gCACrC,GAAC,CAAAh9B,IAAA,gCAAAC,MACD,SAA8B8K,EAAQ5K,GAClC,IAAIT,KAAKub,SAAUvb,KAAKwb,OAAxB,CAGA,IAAMmiB,EAAiB39B,KAAKi6B,uBAAuBt5B,IAAI0K,GACvD,GAAKsyB,IAA0B,IAARl9B,EAAvB,CAEA,IAAM02B,EAASwG,EAAex/B,KAAI,SAACoC,GAC/B,IAAMq9B;;;;;;;;;;;;;;;ARrLlB,SAAgB//B,EAAGqH,GACf,IAAI24B,EAAI,CAAA,EACR,IAAK,IAAI9U,KAAKlrB,EAAOL,OAAOC,UAAUqgC,eAAengC,KAAKE,EAAGkrB,IAAM7jB,EAAEV,QAAQukB,GAAK,IAC9E8U,EAAE9U,GAAKlrB,EAAEkrB,IACb,GAAS,MAALlrB,GAAqD,mBAAjCL,OAAOugC,sBACtB,KAAIxzB,EAAI,EAAb,IAAgBwe,EAAIvrB,OAAOugC,sBAAsBlgC,GAAI0M,EAAIwe,EAAE/pB,OAAQuL,IAC3DrF,EAAEV,QAAQukB,EAAExe,IAAM,GAAK/M,OAAOC,UAAUugC,qBAAqBrgC,KAAKE,EAAGkrB,EAAExe,MACvEszB,EAAE9U,EAAExe,IAAM1M,EAAEkrB,EAAExe,IAF4B,CAItD,OAAOszB,CACX,CQ2KyBI,CAAO19B,EAAO,CAAC,SAC5B,OAAOq9B,CACX,IACQ77B,EAAS47B,EAAe,GAAxB57B,KACR/B,KAAK6e,WAAW,CAAEpe,GAAAA,EAAIsB,KAAAA,EAAMi5B,SAAU7D,IACtCn3B,KAAKi6B,uBAAuBl5B,OAAOsK,EAP/B,CAHJ,CAWJ,KAAC2uB,CAAA,CAlMc,GELbkE,GAAiB,WACnB,SAAAA,EAAYj2B,GAASlI,OAAAm+B,GACjBl+B,KAAKm+B,oBAAsB,IAAIrJ,QAC/B90B,KAAK8lB,YAAc,IAAI7M,GACvBjZ,KAAK6e,WAAa5W,EAAQ4W,WAC1B7e,KAAKo+B,oBAAsBn2B,EAAQm2B,mBACvC,CAwDC,OAxDA/9B,EAAA69B,EAAA,CAAA,CAAA59B,IAAA,oBAAAC,MACD,SAAkB89B,EAAQ/gB,GAClB,aAAcA,EAAQjT,YACtBrK,KAAK6e,WAAW,CACZvC,KAAM,GACNX,QAAS,GACTF,MAAO,GACPpR,WAAY,CACR,CACI5J,GAAI6c,EAAQ7c,GACZ4J,WAAYiT,EACPjT,eAIrBrK,KAAKkd,iBAAiBmhB,EAC1B,GAAC,CAAA/9B,IAAA,mBAAAC,MACD,SAAiB89B,GACTr+B,KAAKm+B,oBAAoB/8B,IAAIi9B,KAEjCr+B,KAAKm+B,oBAAoB1rB,IAAI4rB,GAC7Br+B,KAAKs+B,6BAA6BD,GACtC,GAAC,CAAA/9B,IAAA,mBAAAC,MACD,SAAiBimB,EAAQL,GACrB,GAAsB,IAAlBK,EAAOxnB,OAAX,CAEA,IAK0B6F,EALpB05B,EAAwB,CAC1B99B,GAAI0lB,EACJqY,SAAU,IAERnK,EAAS,GAAGvvB,EAAAC,EACEyhB,GAAM,IAA1B,IAAA1hB,EAAAjH,MAAAgH,EAAAC,EAAA3H,KAAA6H,MAA4B,CAAA,IAAjB+F,EAAKlG,EAAAtE,MACRwlB,OAAO,EACN/lB,KAAK8lB,YAAY1kB,IAAI2J,GAWtBgb,EAAU/lB,KAAK8lB,YAAYhlB,MAAMiK,IAVjCgb,EAAU/lB,KAAK8lB,YAAYrT,IAAI1H,GAC/BspB,EAAO90B,KAAK,CACRwmB,QAAAA,EACAjoB,MAAOG,MAAMC,KAAK6M,EAAMjN,OAAS2gC,SAAS,SAAC1d,EAAG9F,GAAK,MAAM,CACrDxc,KAAML,EAAc2iB,GACpB9F,MAAAA,SAMZsjB,EAAsBC,SAASj/B,KAAKwmB,EACxC,CAAC,CAAA,MAAA/iB,GAAA8B,EAAAI,EAAAlC,EAAA,CAAA,QAAA8B,EAAAK,GAAA,CACGkvB,EAAOr1B,OAAS,IAChBu/B,EAAsBlK,OAASA,GACnCr0B,KAAKo+B,oBAAoBG,EAxBrB,CAyBR,GAAC,CAAAj+B,IAAA,QAAAC,MACD,WACIP,KAAK8lB,YAAY/Q,QACjB/U,KAAKm+B,oBAAsB,IAAIrJ,OACnC,GAAC,CAAAx0B,IAAA,+BAAAC,MACD,SAA6B89B,GAC7B,KAACH,CAAA,CA9DkB,GCHjBQ,GAAoB,WACtB,SAAAA,IAAc3+B,OAAA2+B,GACV1+B,KAAK2+B,QAAU,IAAIv+B,QACnBJ,KAAKmO,MAAO,EACZnO,KAAK4+B,mBACT,CAoBC,OApBAv+B,EAAAq+B,EAAA,CAAA,CAAAp+B,IAAA,oBAAAC,MACD,WAAoB,IAAAM,EAAAb,KAChBo7B,uBAAsB,WAClBv6B,EAAK25B,QACD35B,EAAKsN,MACLtN,EAAK+9B,mBACb,GACJ,GAAC,CAAAt+B,IAAA,gBAAAC,MACD,SAAcc,EAAMw9B,GAChB,IAAMC,EAAU9+B,KAAK2+B,QAAQh+B,IAAIU,GACjC,OAAQy9B,GAAW7gC,MAAMC,KAAK4gC,GAAS3yB,MAAK,SAACD,GAAM,OAAKA,IAAW2yB,IACvE,GAAC,CAAAv+B,IAAA,MAAAC,MACD,SAAIc,EAAM6K,GACNlM,KAAK2+B,QAAQp9B,IAAIF,GAAOrB,KAAK2+B,QAAQh+B,IAAIU,IAAS,IAAI0a,KAAOtJ,IAAIvG,GACrE,GAAC,CAAA5L,IAAA,QAAAC,MACD,WACIP,KAAK2+B,QAAU,IAAIv+B,OACvB,GAAC,CAAAE,IAAA,UAAAC,MACD,WACIP,KAAKmO,MAAO,CAChB,KAACuwB,CAAA,CAzBqB,GJW1B,SAASK,GAAU75B,GACf,OAAO1H,OAAOgV,OAAOhV,OAAOgV,OAAO,CAAA,EAAItN,GAAI,CAAE8tB,UAAWhc,MAC5D,CAIA,IAAIgoB,IAAY,EACV92B,GhBuHK,IAAIpI,EgBtHf,SAASm/B,KAAqB,IAAdh3B,EAAOyM,UAAA1V,OAAA,QAAAmK,IAAAuL,UAAA,GAAAA,UAAA,GAAG,CAAA,EACd2H,EAE6KpU,EAF7KoU,KAAM6iB,EAEuKj3B,EAFvKi3B,iBAAkBC,EAEqJl3B,EAFrJk3B,iBAAgBC,EAEqIn3B,EAFnIE,WAAAA,OAAa,IAAHi3B,EAAG,WAAUA,EAAAC,EAE4Gp3B,EAF1GG,cAAAA,OAAgB,IAAHi3B,EAAG,KAAIA,EAAAC,EAEsFr3B,EAFpFkiB,YAAAA,OAAc,IAAHmV,EAAG,YAAWA,EAAAC,EAE2Dt3B,EAFzDmiB,eAAAA,OAAiB,IAAHmV,EAAG,KAAIA,EAAAC,EAEoCv3B,EAFlCP,cAAAA,OAAgB,IAAH83B,EAAG,UAASA,EAAAC,EAESx3B,EAFPN,iBAAAA,OAAmB,IAAH83B,EAAG,KAAIA,EAAAjvB,EAEhBvI,EAFkBK,iBAAAA,OAAmB,IAAHkI,GAAOA,EAAEkvB,EAE3Cz3B,EAF2Cy3B,cAAiCC,EAE5E13B,EAF0DpG,iBAAqD+9B,EAE/G33B,EAF+FyI,eAAiC1O,EAEhIiG,EAFgIjG,YAAawG,EAE7IP,EAF6IO,WAAYse,EAEzJ7e,EAFyJ6e,MAAO+Y,EAEhK53B,EAFgK43B,OAAMxF,EAEtKpyB,EAFwK8a,SAAAA,OAAQ,IAAAsX,EAAG,CAAE,EAAAA,EAAA5xB,EAErLR,EAFuLS,eAAAA,OAAc,IAAAD,EAAG,CAAE,EAAAA,EAAEq3B,EAE5M73B,EAF4M63B,cAAaC,EAEzN93B,EAF2NqgB,UAAAA,OAAY,IAAHyX,GAAOA,EAAAlvB,EAE3O5I,EAF6OW,aAAAA,OAAe,IAAHiI,GAAQA,EAAAmvB,EAEjQ/3B,EAFmQgqB,yBAAAA,OAA2B,IAAH+N,GAAQA,EAAAC,EAEnSh4B,EAFqSi4B,YAAAA,OAAcj4B,IAAHg4B,EAA2B,qBAAxBh4B,EAAQi4B,YAC1ej4B,EAAQi4B,YACR,OAAMD,EAAAE,EAAyKl4B,EAAvKoiB,qBAAAA,OAAuB,IAAH8V,GAAQA,EAAAC,EAA2In4B,EAAzImmB,aAAAA,OAAe,IAAHgS,GAAQA,EAAAxvB,EAAqH3I,EAAnHU,aAAAA,OAAe,IAAHiI,GAAQA,EAAE6f,EAA6FxoB,EAA7FwoB,QAAOpf,EAAsFpJ,EAApFY,gBAAAA,OAAkB,IAAHwI,EAAG,WAAA,OAAM,CAAK,EAAAA,EAAAgvB,EAAuDp4B,EAArDylB,oBAAAA,OAAsB,IAAH2S,EAAG,IAAItkB,IAAI,IAAGskB,EACjKnf,GADqLjZ,EAAlByS,cAEnK,IAAM4lB,GAAkBrO,GAClBnvB,OAAOy9B,SAAWz9B,OAEpB09B,IAAoB,EACxB,IAAKF,EACD,IACQx9B,OAAOy9B,OAAOv6B,WACdw6B,IAAoB,EAE3B,CACD,MAAOt7B,GACHs7B,IAAoB,CACxB,CAEJ,GAAIF,IAAoBjkB,EACpB,MAAM,IAAItB,MAAM,kCAEE5R,IAAlB22B,QAAsD32B,IAAvB4Z,EAAS4E,YACxC5E,EAAS4E,UAAYmY,GAEzB53B,GAAO6M,QACP,IAuCI0rB,GAvCE5+B,IAAqC,IAAlB69B,EACnB,CACEgB,OAAO,EACPC,MAAM,EACN,kBAAkB,EAClBC,OAAO,EACPC,OAAO,EACPC,QAAQ,EACRpR,OAAO,EACPqR,QAAQ,EACRC,KAAK,EACL/+B,MAAM,EACNg/B,MAAM,EACNr+B,KAAK,EACLs+B,MAAM,EACNpiB,UAAU,EACVqiB,QAAQ,EACRC,UAAU,QAEUj4B,IAAtBw2B,EACIA,EACA,CAAEyB,UAAU,GAChB1wB,IAAqC,IAApBkvB,GAAgD,QAApBA,EAC7C,CACEhuB,QAAQ,EACRD,SAAS,EACTG,aAAa,EACbc,gBAAgB,EAChBZ,gBAAgB,EAChBE,gBAAgB,EAChBC,mBAAmB,EACnBE,sBAAsB,EACtBD,mBAAwC,QAApBwtB,EACpB7tB,qBAA0C,QAApB6tB,GAExBA,GAEI,IfoId,WAAgC,IAAArf,EAAAvgB,KAAduT,EAAGmB,UAAA1V,OAAA,QAAAmK,IAAAuL,UAAA,GAAAA,UAAA,GAAG5R,OAChB,aAAcyQ,IAAQA,EAAI8tB,SAAS5jC,UAAUwD,UAC7CsS,EAAI8tB,SAAS5jC,UAAUwD,QAAUhD,MAAMR,UAClCwD,SAEL,iBAAkBsS,IAAQA,EAAI+tB,aAAa7jC,UAAUwD,UACrDsS,EAAI+tB,aAAa7jC,UAAUwD,QAAUhD,MAAMR,UACtCwD,SAEJuY,KAAK/b,UAAUqK,WAChB0R,KAAK/b,UAAUqK,SAAW,WAAa,IAAA,IAAAy5B,EAAA7sB,UAAA1V,OAATsW,EAAIrX,IAAAA,MAAAsjC,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJlsB,EAAIksB,GAAA9sB,UAAA8sB,GAC9B,IAAIngC,EAAOiU,EAAK,GAChB,KAAM,KAAKA,GACP,MAAM,IAAImsB,UAAU,0BAExB,GACI,GAAIlhB,IAASlf,EACT,OAAO,QAELA,EAAOA,GAAQA,EAAKgG,YAC9B,OAAO,GAGnB,Ce1JIq6B,GAEA,IAAIC,GAA2B,EACzBC,GAAiB,SAAC18B,GAAM,IACQL,EADRC,EAAAC,EACL0rB,GAAW,IAAE,IAAlC,IAAA3rB,EAAAjH,MAAAgH,EAAAC,EAAA3H,KAAA6H,MAAoC,CAAA,IAAzB0rB,EAAM7rB,EAAAtE,MACTmwB,EAAOkR,iBACP18B,EAAIwrB,EAAOkR,eAAe18B,GAElC,CAAC,CAAA,MAAAlC,GAAA8B,EAAAI,EAAAlC,EAAA,CAAA,QAAA8B,EAAAK,GAAA,CAKD,OAJI06B,IACCW,KACDt7B,EAAI26B,EAAO36B,IAERA,GAEX8sB,GAAc,SAAC9sB,EAAG0tB,GACd,IAAIpyB,EAOJ,KANmC,QAA7BA,EAAK+gB,GAAgB,UAAuB,IAAP/gB,OAAgB,EAASA,EAAGqhC,aACnE38B,EAAEnD,OAASgY,GAAU8Y,cACnB3tB,EAAEnD,OAASgY,GAAUkZ,qBACnB/tB,EAAE+G,KAAKqK,SAAW2D,GAAkBiZ,UACxC3R,GAAgBtgB,SAAQ,SAAC6gC,GAAG,OAAKA,EAAIphB,cAErC4f,EACAjkB,SAA4CA,EAAKulB,GAAe18B,GAAI0tB,QAEnE,GAAI4N,GAAmB,CACxB,IAAMhO,EAAU,CACZzwB,KAAM,QACN0W,MAAOmpB,GAAe18B,GACtBnB,OAAQjB,OAAOC,SAASgB,OACxB6uB,WAAAA,GAEJ9vB,OAAOy9B,OAAO/D,YAAYhK,EAAS,IACvC,CACA,GAAIttB,EAAEnD,OAASgY,GAAU8Y,aACrB4N,GAAwBv7B,EACxBy8B,GAA2B,OAE1B,GAAIz8B,EAAEnD,OAASgY,GAAUkZ,oBAAqB,CAC/C,GAAI/tB,EAAE+G,KAAKqK,SAAW2D,GAAkBiZ,UACpChuB,EAAE+G,KAAKqmB,eACP,OAEJqP,KACA,IAAMI,EAAc5C,GAAoBwC,IAA4BxC,EAC9D6C,EAAa9C,GACfh6B,EAAE8tB,UAAYyN,GAAsBzN,UAAYkM,GAChD6C,GAAeC,IACfnI,IAAiB,EAEzB,GAEJ,IA6BkCjc,GA7B5BqkB,GAAsB,SAAChjB,GACzB+S,GAAY+M,GAAU,CAClBh9B,KAAMgY,GAAUkZ,oBAChBhnB,KAAMzO,OAAOgV,OAAO,CAAE8D,OAAQ2D,GAAkBiZ,UAAYjU,OAG9DijB,GAAoB,SAACnZ,GAAC,OAAKiJ,GAAY+M,GAAU,CACnDh9B,KAAMgY,GAAUkZ,oBAChBhnB,KAAMzO,OAAOgV,OAAO,CAAE8D,OAAQ2D,GAAkB2Z,QAAU7K,KAC3D,EACGoZ,GAA4B,SAACpZ,GAAC,OAAKiJ,GAAY+M,GAAU,CAC3Dh9B,KAAMgY,GAAUkZ,oBAChBhnB,KAAMzO,OAAOgV,OAAO,CAAE8D,OAAQ2D,GAAkB4Z,gBAAkB9K,KACnE,EAKG9L,GAAoB,IAAIihB,GAAkB,CAC5Crf,WAAYojB,GACZ7D,oBANiC,SAAC14B,GAAC,OAAKssB,GAAY+M,GAAU,CAC9Dh9B,KAAMgY,GAAUkZ,oBAChBhnB,KAAMzO,OAAOgV,OAAO,CAAE8D,OAAQ2D,GAAkBma,mBAAqB1uB,KACtE,IAKGqX,GAAgB,IAAI4U,GAAc,CACpCzpB,OAAAA,GACA2W,WAAYojB,GACZhlB,kBAAmBA,GACnBgV,yBAAAA,EACAD,YAAAA,KACDnU,GAAA9Y,EACkB0rB,GAAW,IAAE,IAAlC,IAAA5S,GAAAhgB,MAAA+f,GAAAC,GAAA1gB,KAAA6H,MAAoC,CAAA,IAAzB0rB,GAAM9S,GAAArd,MACTmwB,GAAO0R,WACP1R,GAAO0R,UAAU,CACbC,WAAYn6B,GACZ4pB,wBAAyB/U,GAAc+U,wBACvCI,6BAA8BnV,GAAcmV,8BAExD,CAAC,CAAA,MAAAlvB,GAAA6a,GAAA3Y,EAAAlC,EAAA,CAAA,QAAA6a,GAAA1Y,GAAA,CACD,IAAMgb,GAAuB,IAAIue,GACjCle,GAAgB,IAAIwZ,GAAc,CAC9BpxB,aAAAA,EACAiW,WAAYsjB,GACZ5uB,IAAKzQ,OACLqF,WAAAA,EACAC,cAAAA,EACAF,OAAAA,GACA6a,SAAUA,EAAS1X,OACnB3C,eAAAA,IAEJ,IAAMyU,GAAmB,IAAIyX,GAAiB,CAC1C/V,WAAYojB,GACZtd,SAAUud,GACVrvB,cAAe,CACX1K,WAAAA,EACAC,cAAAA,EACAV,cAAAA,EACAC,iBAAAA,EACAW,iBAAAA,EACAzG,iBAAAA,GACA6G,eAAAA,EACAF,WAAAA,EACAxG,YAAAA,EACA4G,aAAAA,EACAD,aAAAA,EACAoa,SAAAA,EACArS,eAAAA,GACAqM,cAAAA,GACAE,kBAAAA,GACAuD,cAAAA,GACA3X,gBAAAA,EACAsX,qBAAAA,IAEJjY,OAAAA,KAEJ2xB,GAAmB,WAAwB,IAAvBjH,EAAUle,UAAA1V,OAAA,QAAAmK,IAAAuL,UAAA,IAAAA,UAAA,GAC1B,GAAK4T,EAAL,CAGA0J,GAAY+M,GAAU,CAClBh9B,KAAMgY,GAAUoZ,KAChBlnB,KAAM,CACF5M,KAAMyD,OAAOC,SAAS1D,KACtBoM,MAAOwM,KACPtM,OAAQmM,QAEZ8a,GACJ3V,GAAkBlI,QAClBoI,GAAiB0E,OACjBN,GAAgBtgB,SAAQ,SAAC6gC,GAAG,OAAKA,EAAInhB,UACrC,IAAMtf,EhBm1Bd,SAAkBlE,EAAG8K,GACjB,IAAAihB,EAAsajhB,GAAW,CAAE,EAAAq6B,EAAApZ,EAA3ahhB,OAAAA,OAAS,IAAHo6B,EAAG,IAAIxiC,EAAQwiC,EAAAC,EAAArZ,EAAE/gB,WAAAA,OAAa,IAAHo6B,EAAG,WAAUA,EAAAC,EAAAtZ,EAAE9gB,cAAAA,OAAgB,IAAHo6B,EAAG,KAAIA,EAAAC,EAAAvZ,EAAExhB,cAAAA,OAAgB,IAAH+6B,EAAG,UAASA,EAAAC,EAAAxZ,EAAEvhB,iBAAAA,OAAmB,IAAH+6B,EAAG,KAAIA,EAAAC,EAAAzZ,EAAE5gB,iBAAAA,OAAmB,IAAHq6B,GAAOA,EAAAC,EAAA1Z,EAAEvgB,aAAAA,OAAe,IAAHi6B,GAAQA,EAAAC,EAAA3Z,EAAEtgB,aAAAA,OAAe,IAAHi6B,GAAQA,EAAAC,EAAA5Z,EAAEwW,cAAAA,OAAgB,IAAHoD,GAAQA,EAAEt6B,EAAU0gB,EAAV1gB,WAAYxG,EAAWknB,EAAXlnB,YAAW+gC,EAAA7Z,EAAE8Z,QAAAA,OAAU,IAAHD,GAAQA,EAAEr6B,EAAcwgB,EAAdxgB,eAAgB8I,EAAkB0X,EAAlB1X,mBAAoBV,EAAWoY,EAAXpY,YAAaC,EAAYmY,EAAZnY,aAAcE,EAAiBiY,EAAjBjY,kBAAmBC,EAAgBgY,EAAhBhY,iBAAkBE,EAAqB8X,EAArB9X,sBAAqB6xB,EAAA/Z,EAAErgB,gBA0CnY,OAAOwH,EAAoBlT,EAAG,CAC1BoI,IAAKpI,EACL+K,OAAAA,EACAC,WAAAA,EACAC,cAAAA,EACAV,cAAAA,EACAC,iBAAAA,EACA4I,WAAW,EACXjI,iBAAAA,EACAzG,kBAlDuC,IAAlB69B,EACnB,CACEgB,OAAO,EACPC,MAAM,EACN,kBAAkB,EAClBC,OAAO,EACPC,OAAO,EACPC,QAAQ,EACRpR,OAAO,EACPqR,QAAQ,EACRC,KAAK,EACL/+B,MAAM,EACNg/B,MAAM,EACNr+B,KAAK,EACLs+B,MAAM,EACNpiB,UAAU,EACVqiB,QAAQ,EACRC,UAAU,IAEM,IAAlB1B,EACI,CACE0B,UAAU,GAEZ1B,EA4BNl3B,WAAAA,EACAxG,YAAAA,EACA0O,gBA7B+B,IAAZsyB,GAAgC,QAAZA,EAEnC,CACIpxB,QAAQ,EACRD,SAAS,EACTG,aAAa,EACbc,gBAAgB,EAChBb,qBAAkC,QAAZixB,EACtBhxB,gBAAgB,EAChBE,gBAAgB,EAChBC,mBAAmB,EACnBC,oBAAoB,EACpBC,sBAAsB,IAEhB,IAAZ2wB,EACI,CAAE,EACFA,EAcNt6B,eAAAA,EACAC,aAAAA,EACAC,aAAAA,EACA4I,mBAAAA,EACAV,YAAAA,EACAC,aAAAA,EACAE,kBAAAA,EACAC,iBAAAA,EACAE,sBAAAA,EACAvI,qBAhEiZ,IAAHo6B,EAAG,WAAA,OAAM,CAAK,EAAAA,EAiE5Zl6B,mBAAmB,GAE3B,CgBv5BqBm6B,CAASl9B,SAAU,CAC5BkC,OAAAA,GACAC,WAAAA,EACAC,cAAAA,EACAV,cAAAA,EACAC,iBAAAA,EACAW,iBAAAA,EACAo3B,cAAe79B,GACf2G,WAAAA,EACAw6B,QAAStyB,GACThI,eAAAA,EACAE,aAAAA,EACAD,aAAAA,EACAmI,YAAa,SAAC3T,GACNwb,GAAmBxb,EAAG+K,KACtB6U,GAAcC,UAAU7f,GAExB0b,GAAuB1b,EAAG+K,KAC1B+U,GAAkBC,iBAAiB/f,GAEnC4b,GAAc5b,IACdggB,GAAiBC,cAAcjgB,EAAEG,WAAY0I,SAEpD,EACD+K,aAAc,SAACsM,EAAQC,GACnBP,GAAcQ,aAAaF,EAAQC,GACnCH,GAAiBK,oBAAoBH,EACxC,EACDnM,iBAAkB,SAACmtB,EAAQ/gB,GACvBL,GAAkBQ,kBAAkB4gB,EAAQ/gB,EAC/C,EACDzU,gBAAAA,IAEJ,IAAKxH,EACD,OAAO8L,QAAQC,KAAK,mCAExB4kB,GAAY+M,GAAU,CAClBh9B,KAAMgY,GAAU8Y,aAChB5mB,KAAM,CACF5K,KAAAA,EACA8hC,cAAelsB,GAAgBnU,WAEnC8vB,GACJrR,GAAgBtgB,SAAQ,SAAC6gC,GAAG,OAAKA,EAAIlhB,YACjC5a,SAASusB,oBAAsBvsB,SAASusB,mBAAmBvzB,OAAS,GACpEie,GAAkByJ,iBAAiB1gB,SAASusB,mBAAoBrqB,GAAOpH,MAAMkF,UAzDjF,GA2DJ,IACI,IAAMkd,GAAW,GACXZ,GAAU,SAAC/c,GACb,IAAI/E,EACJ,OAAO6gB,GAAgBsF,GAAhBtF,CAA+B,CAClCxC,WAAYojB,GACZjb,YAAa,SAAC4B,EAAWtS,GAAM,OAAK0b,GAAY+M,GAAU,CACtDh9B,KAAMgY,GAAUkZ,oBAChBhnB,KAAM,CACFqK,OAAAA,EACAsS,UAAAA,KAEL,EACH9F,mBAAoB,SAAC9M,GAAC,OAAKgc,GAAY+M,GAAU,CAC7Ch9B,KAAMgY,GAAUkZ,oBAChBhnB,KAAMzO,OAAOgV,OAAO,CAAE8D,OAAQ2D,GAAkB0Z,kBAAoB3d,KACrE,EACH2O,SAAUud,GACVjb,iBAAkB,SAACjR,GAAC,OAAKgc,GAAY+M,GAAU,CAC3Ch9B,KAAMgY,GAAUkZ,oBAChBhnB,KAAMzO,OAAOgV,OAAO,CAAE8D,OAAQ2D,GAAkBwZ,gBAAkBzd,KACnE,EACHkR,QAAS,SAAC0D,GAAC,OAAKoH,GAAY+M,GAAU,CAClCh9B,KAAMgY,GAAUkZ,oBAChBhnB,KAAMzO,OAAOgV,OAAO,CAAE8D,OAAQ2D,GAAkB6Z,OAASlJ,KAC1D,EACHzD,mBAAoB,SAAC4B,GAAC,OAAKiJ,GAAY+M,GAAU,CAC7Ch9B,KAAMgY,GAAUkZ,oBAChBhnB,KAAMzO,OAAOgV,OAAO,CAAE8D,OAAQ2D,GAAkByZ,kBAAoB3K,KACrE,EACH3B,iBAAkB,SAACrG,GAAC,OAAKiR,GAAY+M,GAAU,CAC3Ch9B,KAAMgY,GAAUkZ,oBAChBhnB,KAAMzO,OAAOgV,OAAO,CAAE8D,OAAQ2D,GAAkB8Z,gBAAkBhT,KACnE,EACHsG,mBAAoB,SAACtG,GAAC,OAAKiR,GAAY+M,GAAU,CAC7Ch9B,KAAMgY,GAAUkZ,oBAChBhnB,KAAMzO,OAAOgV,OAAO,CAAE8D,OAAQ2D,GAAkB+Z,kBAAoBjT,KACrE,EACHuG,iBAAkB6a,GAClB5a,OAAQ,SAACwB,GAAC,OAAKiJ,GAAY+M,GAAU,CACjCh9B,KAAMgY,GAAUkZ,oBAChBhnB,KAAMzO,OAAOgV,OAAO,CAAE8D,OAAQ2D,GAAkBia,MAAQnL,KACzD,EACHvB,YAAa,SAACuB,GACViJ,GAAY+M,GAAU,CAClBh9B,KAAMgY,GAAUkZ,oBAChBhnB,KAAMzO,OAAOgV,OAAO,CAAE8D,OAAQ2D,GAAkBka,WAAapL,KAEpE,EACDtB,gBAAiB,SAAC7gB,GACdorB,GAAY+M,GAAU,CAClBh9B,KAAMgY,GAAUkZ,oBAChBhnB,KAAMzO,OAAOgV,OAAO,CAAE8D,OAAQ2D,GAAkBmpB,eAAiBx8B,KAExE,EACDuB,WAAAA,EACAgiB,YAAAA,EACAC,eAAAA,EACA1iB,cAAAA,EACAC,iBAAAA,EACA9F,iBAAAA,GACAyG,iBAAAA,EACAya,SAAAA,EACAuF,UAAAA,EACA1f,aAAAA,EACAD,aAAAA,EACA0hB,qBAAAA,EACA+D,aAAAA,EACA7oB,IAAAA,EACAvD,YAAAA,EACAwG,WAAAA,EACAK,gBAAAA,EACAT,cAAAA,EACAsI,eAAAA,GACAhI,eAAAA,EACAR,OAAAA,GACA6U,cAAAA,GACAE,kBAAAA,GACAE,iBAAAA,GACAgD,qBAAAA,GACAK,cAAAA,GACAkN,oBAAAA,EACA+C,SAAyG,QAA9FjwB,EAAKiwB,aAAyC,EAASA,EAAQnS,QAAO,SAACyK,GAAC,OAAKA,EAAE3G,QAAQ,WAAsB,IAAP5hB,OAAgB,EAASA,EAAGrC,KAAI,SAAC4qB,GAAC,MAAM,CACrJ3G,SAAU2G,EAAE3G,SACZna,QAAS8gB,EAAE9gB,QACX0oB,SAAU,SAACvS,GAAO,OAAK4T,GAAY+M,GAAU,CACzCh9B,KAAMgY,GAAUuZ,OAChBrnB,KAAM,CACFykB,OAAQ3H,EAAE7iB,KACVkY,QAAAA,KAEL,EACL,MAAM,IACT0I,IAEP/J,GAAcsmB,iBAAgB,SAAChwB,GAC3B,IACI6P,GAAS3jB,KAAK+iB,GAAQjP,EAASrE,iBAClC,CACD,MAAOxQ,GACH2O,QAAQC,KAAK5O,EACjB,CACJ,IACA,IAAMqjB,GAAO,WACTgY,KACA3W,GAAS3jB,KAAK+iB,GAAQtc,WACtBg5B,IAAY,GAwBhB,MAtB4B,gBAAxBh5B,SAASyN,YACe,aAAxBzN,SAASyN,WACToO,MAGAqB,GAAS3jB,KAAKgV,EAAG,oBAAoB,WACjCyd,GAAY+M,GAAU,CAClBh9B,KAAMgY,GAAUsZ,iBAChBpnB,KAAM,CAAC,KAES,qBAAhBi0B,GACAre,IACP,KACDqB,GAAS3jB,KAAKgV,EAAG,QAAQ,WACrByd,GAAY+M,GAAU,CAClBh9B,KAAMgY,GAAUqZ,KAChBnnB,KAAM,CAAC,KAES,SAAhBi0B,GACAre,OACL/e,UAEA,WACHogB,GAASjiB,SAAQ,SAACujB,GAAC,OAAKA,OACxBrE,GAAqBmjB,UACrBtE,IAAY,EACZ5d,KAEP,CACD,MAAO5iB,GACH2O,QAAQC,KAAK5O,EACjB,CACJ,CACAygC,GAAOsE,eAAiB,SAACC,EAAKplB,GAC1B,IAAK4gB,GACD,MAAM,IAAIjkB,MAAM,iDAEpBiX,GAAY+M,GAAU,CAClBh9B,KAAMgY,GAAUwZ,OAChBtnB,KAAM,CACFu3B,IAAAA,EACAplB,QAAAA,KAGZ,EACA6gB,GAAOwE,WAAa,WAChBliB,GAAgBtgB,SAAQ,SAAC6gC,GAAG,OAAKA,EAAIrhB,WACzC,EACAwe,GAAOpF,iBAAmB,SAACjH,GACvB,IAAKoM,GACD,MAAM,IAAIjkB,MAAM,mDAEpB8e,GAAiBjH,EACrB,EACAqM,GAAO/2B,OAASA,OKjbVw7B,GAAU,WACZ,SAAAA,EAAYnP,GAAKx0B,OAAA2jC,GACb1jC,KAAK2jC,SAAWpP,EAAIoP,UAAY,GAChC3jC,KAAK4jC,aAAerP,EAAIqP,cAAgB,GACxC5jC,KAAK6jC,WAAatP,EAAIsP,WACtB7jC,KAAK8jC,aAAevP,EAAIuP,YAC5B,CAOC,OAPAzjC,EAAAqjC,EAAA,CAAA,CAAApjC,IAAA,WAAAC,MACD,WACI,IAAMsjC,EAAa7jC,KAAK6jC,YAAc,GAChCC,EAAe9jC,KAAK8jC,cAAgB,GAC1C,OAAI9jC,KAAK4jC,gBACL1kC,OAAUc,KAAK4jC,aAAY,MAAA1kC,OAAKc,KAAK2jC,SAAQzkC,KAAAA,OAAI2kC,EAAU,KAAA3kC,OAAI4kC,EAAY,KAC/E,GAAA5kC,OAAUc,KAAK2jC,SAAQ,KAAAzkC,OAAI2kC,EAAU,KAAA3kC,OAAI4kC,EAC7C,KAACJ,CAAA,CAbW,GAeVK,GAA8B,eAC9BC,GAAyB,iCACzBC,GAA4B,8BAC5BC,GAAmB,CACrBC,MAAO,SAAU3lC,GACb,OAAKA,OAG2B,IAArBA,EAAM4lC,iBACuB,IAA7B5lC,EAAM,mBACNwB,KAAKqkC,WAAW7lC,GAElBA,EAAMkG,OAASlG,EAAMkG,MAAMzB,MAAM+gC,IAC/BhkC,KAAKskC,YAAY9lC,GAEnBA,EAAMkG,MACJ1E,KAAKukC,gBAAgB/lC,IAG5B2O,QAAQC,KAAK,yDAA0D5O,GAChE,IAdA,EAgBd,EACDgmC,gBAAiB,SAAUC,GACvB,IAA8B,IAA1BA,EAAQjgC,QAAQ,KAChB,MAAO,CAACigC,GAEZ,IACM9/B,EADS,+BACM4B,KAAKk+B,EAAQlmC,QAAQ,QAAS,KACnD,IAAKoG,EACD,MAAM,IAAIoW,MAAK,2BAAA7b,OAA4BulC,IAC/C,MAAO,CAAC9/B,EAAM,GAAIA,EAAM,SAAMwE,EAAWxE,EAAM,SAAMwE,EACxD,EACDm7B,YAAa,SAAU9lC,GAInB,OAHiBA,EAAMkG,MAAM3F,MAAM,MAAMuf,QAAO,SAAUomB,GACtD,QAASA,EAAKzhC,MAAM+gC,GACvB,GAAEhkC,MACa7B,KAAI,SAAUumC,GACtBA,EAAKlgC,QAAQ,WAAa,IAC1BkgC,EAAOA,EACFnmC,QAAQ,aAAc,QACtBA,QAAQ,+BAAgC,KAEjD,IAAIomC,EAAgBD,EAAKnmC,QAAQ,OAAQ,IAAIA,QAAQ,eAAgB,KAC/DwE,EAAW4hC,EAAc1hC,MAAM,4BAI/B2hC,GAHND,EAAgB5hC,EACV4hC,EAAcpmC,QAAQwE,EAAS,GAAI,IACnC4hC,GACuB5lC,MAAM,OAAO0F,MAAM,GAC1CogC,EAAgB7kC,KAAKwkC,gBAAgBzhC,EAAWA,EAAS,GAAK6hC,EAAOhgC,OACrEg/B,EAAegB,EAAOvmC,KAAK,WAAQ8K,EACnCw6B,EAAW,CAAC,OAAQ,eAAen/B,QAAQqgC,EAAc,KAAO,OAChE17B,EACA07B,EAAc,GACpB,OAAO,IAAInB,GAAW,CAClBE,aAAAA,EACAD,SAAAA,EACAE,WAAYgB,EAAc,GAC1Bf,aAAce,EAAc,IAEnC,GAAE7kC,KACN,EACDukC,gBAAiB,SAAU/lC,GAIvB,OAHiBA,EAAMkG,MAAM3F,MAAM,MAAMuf,QAAO,SAAUomB,GACtD,OAAQA,EAAKzhC,MAAMghC,GACtB,GAAEjkC,MACa7B,KAAI,SAAUumC,GAI1B,GAHIA,EAAKlgC,QAAQ,YAAc,IAC3BkgC,EAAOA,EAAKnmC,QAAQ,mDAAoD,SAEjD,IAAvBmmC,EAAKlgC,QAAQ,OAAsC,IAAvBkgC,EAAKlgC,QAAQ,KACzC,OAAO,IAAIk/B,GAAW,CAClBE,aAAcc,IAIlB,IAAMI,EAAoB,6BACpB/8B,EAAU28B,EAAKzhC,MAAM6hC,GACrBlB,EAAe77B,GAAWA,EAAQ,GAAKA,EAAQ,QAAKoB,EACpD07B,EAAgB7kC,KAAKwkC,gBAAgBE,EAAKnmC,QAAQumC,EAAmB,KAC3E,OAAO,IAAIpB,GAAW,CAClBE,aAAAA,EACAD,SAAUkB,EAAc,GACxBhB,WAAYgB,EAAc,GAC1Bf,aAAce,EAAc,IAGvC,GAAE7kC,KACN,EACDqkC,WAAY,SAAUn/B,GAClB,OAAKA,EAAEk/B,YACFl/B,EAAEstB,QAAQhuB,QAAQ,OAAS,GACxBU,EAAEstB,QAAQzzB,MAAM,MAAMC,OAASkG,EAAEk/B,WAAWrlC,MAAM,MAAMC,OACrDgB,KAAK+kC,YAAY7/B,GAElBA,EAAER,MAID1E,KAAKglC,aAAa9/B,GAHlBlF,KAAKilC,aAAa//B,EAKhC,EACD6/B,YAAa,SAAU7/B,GAInB,IAHA,IAAMggC,EAAS,oCACTC,EAAQjgC,EAAEstB,QAAQzzB,MAAM,MACxB0nB,EAAS,GACNlc,EAAI,EAAGD,EAAM66B,EAAMnmC,OAAQuL,EAAID,EAAKC,GAAK,EAAG,CACjD,IAAMtH,EAAQiiC,EAAO3+B,KAAK4+B,EAAM56B,IAC5BtH,GACAwjB,EAAOlnB,KAAK,IAAImkC,GAAW,CACvBC,SAAU1gC,EAAM,GAChB4gC,WAAYuB,WAAWniC,EAAM,MAGzC,CACA,OAAOwjB,CACV,EACDwe,aAAc,SAAU//B,GAIpB,IAHA,IAAMggC,EAAS,6DACTC,EAAQjgC,EAAEk/B,WAAWrlC,MAAM,MAC3B0nB,EAAS,GACNlc,EAAI,EAAGD,EAAM66B,EAAMnmC,OAAQuL,EAAID,EAAKC,GAAK,EAAG,CACjD,IAAMtH,EAAQiiC,EAAO3+B,KAAK4+B,EAAM56B,IAC5BtH,GACAwjB,EAAOlnB,KAAK,IAAImkC,GAAW,CACvBE,aAAc3gC,EAAM,SAAMkG,EAC1Bw6B,SAAU1gC,EAAM,GAChB4gC,WAAYuB,WAAWniC,EAAM,MAGzC,CACA,OAAOwjB,CACV,EACDue,aAAc,SAAUxmC,GAKpB,OAJiBA,EAAMkG,MAAM3F,MAAM,MAAMuf,QAAO,SAAUomB,GACtD,QAAUA,EAAKzhC,MAAM8gC,MAChBW,EAAKzhC,MAAM,oBACnB,GAAEjD,MACa7B,KAAI,SAAUumC,GAC1B,IAAME,EAASF,EAAK3lC,MAAM,KACpB8lC,EAAgB7kC,KAAKwkC,gBAAgBI,EAAOhgC,OAE5Cg/B,GADegB,EAAOlnB,SAAW,IAElCnf,QAAQ,iCAAkC,MAC1CA,QAAQ,aAAc,UAAO4K,EAClC,OAAO,IAAIu6B,GAAW,CAClBE,aAAAA,EACAD,SAAUkB,EAAc,GACxBhB,WAAYgB,EAAc,GAC1Bf,aAAce,EAAc,IAEnC,GAAE7kC,KACP,GCvKJ,SAASqlC,GAAehkC,GACpB,IAAKA,IAASA,EAAKikC,UACf,MAAO,GAGX,IADA,IAAI5iC,EAAO,GACJrB,EAAKuG,eAAe,CACvB,IAAI1B,EAAO7E,EAAKkkC,UAChB,IAAKr/B,EACD,MAEJA,EAAOA,EAAK/D,cACZ,IAAMo+B,EAASl/B,EAAKuG,cACd49B,EAAc,GACpB,GAAIjF,EAAOkF,UAAYlF,EAAOkF,SAASzmC,OAAS,EAC5C,IAAK,IAAIuL,EAAI,EAAGA,EAAIg2B,EAAOkF,SAASzmC,OAAQuL,IAAK,CAC7C,IAAMm7B,EAAUnF,EAAOkF,SAASl7B,GAC5Bm7B,EAAQH,WAAaG,EAAQH,UAAUpjC,aACnCujC,EAAQH,UAAUpjC,gBAAkB+D,GACpCs/B,EAAYjmC,KAAKmmC,EAG7B,CAEAF,EAAYxmC,OAAS,IACrBkH,GAAI,OAAAhH,OAAWsmC,EAAYhhC,QAAQnD,GAAQ,MAE/CqB,EAAOwD,GAAQxD,EAAO,IAAMA,EAAO,IACnCrB,EAAOk/B,CACX,CACA,OAAO79B,CACX,CACA,SAASijC,GAASpR,GACd,MAA+C,oBAAxC/2B,OAAOC,UAAUC,SAASC,KAAK42B,EAC1C,CACA,SAASqR,GAAarR,EAAKsR,GACvB,GAAc,IAAVA,EACA,OAAO,EAGX,IADA,IACA/yB,EAAA,EAAAgzB,EADatoC,OAAOoD,KAAK2zB,GACHzhB,EAAAgzB,EAAA9mC,OAAA8T,IAAE,CAAnB,IAAMxS,EAAGwlC,EAAAhzB,GACV,GAAI6yB,GAASpR,EAAIj0B,KACbslC,GAAarR,EAAIj0B,GAAMulC,EAAQ,GAC/B,OAAO,CAEf,CACA,OAAO,CACX,CACA,SAASzmC,GAAUm1B,EAAKwR,GACpB,IAAM99B,EAAU,CACZ+9B,eAAgB,GAChBC,aAAc,GAElBzoC,OAAOgV,OAAOvK,EAAS89B,GACvB,IAAMrhC,EAAQ,GACR9D,EAAO,GACb,OAAOzB,KAAKC,UAAUm1B,GAAK,SAAUj0B,EAAKC,GACtC,GAAImE,EAAM1F,OAAS,EAAG,CAClB,IAAMknC,EAAUxhC,EAAMF,QAAQxE,OAC7BkmC,EAAUxhC,EAAM8zB,OAAO0N,EAAU,GAAKxhC,EAAMnF,KAAKS,OACjDkmC,EAAUtlC,EAAK43B,OAAO0N,EAASC,IAAU7lC,GAAOM,EAAKrB,KAAKe,IACtDoE,EAAMF,QAAQjE,KAEXA,EADAmE,EAAM,KAAOnE,EACL,eAIJ,eACIK,EAAK6D,MAAM,EAAGC,EAAMF,QAAQjE,IAAQlC,KAAK,KACzC,IAGpB,MAEIqG,EAAMnF,KAAKgB,GAEf,GAAc,OAAVA,EACA,OAAOA,EACX,QAAc4I,IAAV5I,EACA,MAAO,YACX,GAgCJ,SAAsB6lC,GAClB,GAAIT,GAASS,IAAS5oC,OAAOoD,KAAKwlC,GAAMpnC,OAASiJ,EAAQ+9B,eACrD,OAAO,EAEX,GAAoB,mBAATI,EACP,OAAO,EAEX,GAAIT,GAASS,IACTR,GAAaQ,EAAMn+B,EAAQg+B,cAC3B,OAAO,EAEX,OAAO,CACX,CA5CQI,CAAa9lC,GACb,OA4CR,SAAkB6lC,GACd,IAAI/jC,EAAM+jC,EAAK1oC,WACXuK,EAAQq+B,mBAAqBjkC,EAAIrD,OAASiJ,EAAQq+B,oBAClDjkC,EAAGnD,GAAAA,OAAMmD,EAAIoC,MAAM,EAAGwD,EAAQq+B,mBAAuB,QAEzD,OAAOjkC,CACX,CAlDe3E,CAAS6C,GAEpB,GAAqB,iBAAVA,EACP,OAAOA,EAAM7C,WAAa,IAE9B,GAAI6C,aAAiBgmC,MAAO,CACxB,IAAMC,EAAc,CAAA,EACpB,IAAK,IAAMjjB,KAAYhjB,EAAO,CAC1B,IAAMkmC,EAAalmC,EAAMgjB,GACrBtlB,MAAMu2B,QAAQiS,GACdD,EAAYjjB,GAAY8hB,GAAgBoB,EAAWznC,OAASynC,EAAW,GAAK,MAG5ED,EAAYjjB,GAAYkjB,CAEhC,CACA,OAAOD,CACX,CACK,OAAIjmC,aAAiBiZ,KAClBjZ,aAAiBmmC,YACVnmC,EAAQA,EAAM+kC,UAAY,GAE9B/kC,EAAMqY,SAERrY,aAAiBwa,MACfxa,EAAMmE,MACPnE,EAAMmE,MAAQ,kCACdnE,EAAM2F,KAAO,KAAO3F,EAAMiyB,QAE7BjyB,CACX,GAqBJ,CC/HA,IAAMomC,GAAoB,CACtBC,MAAO,CACH,SACA,QACA,QACA,aACA,QACA,MACA,SACA,QACA,QACA,iBACA,WACA,OACA,MACA,QACA,OACA,UACA,UACA,QACA,QAEJC,gBAAiB,IACjBC,OAAQ,WAEZ,SAASC,GAAgBzlB,EAAI/N,EAAKtL,GAC9B,IAMI6+B,EANEE,EAAc/+B,EAAUzK,OAAOgV,OAAO,CAAA,EAAIm0B,GAAmB1+B,GAAW0+B,GACxEM,EAAaD,EAAWF,OAC9B,IAAKG,EACD,OAAO,WAAM,EAKbH,EADsB,iBAAfG,EACE1zB,EAAI0zB,GAGJA,EAEb,IAAIC,EAAW,EACXC,GAAU,EACRC,EAAiB,GACvB,GAAIJ,EAAWJ,MAAMtoC,SAAS,SAAU,CACpC,IAAMoc,EAAe,SAACjC,GAClB,IAAM+Z,EAAU/Z,EAAM+Z,QAASh0B,EAAQia,EAAMja,MACvC6oC,EAAQnD,GAAiBC,MAAM3lC,GAAOL,KAAI,SAACmpC,GAAU,OAAKA,EAAW5pC,cACrE0gB,EAAU,CAAChf,GAAUozB,EAASwU,EAAWjB,mBAC/CzkB,EAAG,CACCslB,MAAO,QACPS,MAAAA,EACAjpB,QAAAA,KAGR7K,EAAI/F,iBAAiB,QAASkN,GAC9B0sB,EAAe7nC,MAAK,WAChBgU,EAAIxG,oBAAoB,QAAS2N,EACrC,IACA,IAAM6sB,EAA4B,SAAC9uB,GAC/B,IAAIja,EACA4f,EACA3F,EAAM+uB,kBAAkBzsB,OACxBvc,EAAQia,EAAM+uB,OACdppB,EAAU,CACNhf,GAAS,yBAAAF,OAA0BV,EAAM0H,KAAI,MAAAhH,OAAKV,EAAMg0B,SAAWwU,EAAWjB,qBAIlFvnC,EAAQ,IAAIuc,MACZqD,EAAU,CACNhf,GAAU,wBAAyB4nC,EAAWjB,kBAC9C3mC,GAAUqZ,EAAM+uB,OAAQR,EAAWjB,oBAG3C,IAAMsB,EAAQnD,GAAiBC,MAAM3lC,GAAOL,KAAI,SAACmpC,GAAU,OAAKA,EAAW5pC,cAC3E4jB,EAAG,CACCslB,MAAO,QACPS,MAAAA,EACAjpB,QAAAA,KAGR7K,EAAI/F,iBAAiB,qBAAsB+5B,GAC3CH,EAAe7nC,MAAK,WAChBgU,EAAIxG,oBAAoB,qBAAsBw6B,EAClD,GACJ,CAAC,IACuC1iC,EADvCC,EAAAC,EACuBiiC,EAAWJ,OAAK,IAAxC,IAAA9hC,EAAAjH,MAAAgH,EAAAC,EAAA3H,KAAA6H,MAA0C,CAAA,IAA/ByiC,EAAS5iC,EAAAtE,MAChB6mC,EAAe7nC,KAAKhB,EAAQuoC,EAAQW,GACxC,CAAC,CAAA,MAAAzkC,GAAA8B,EAAAI,EAAAlC,EAAA,CAAA,QAAA8B,EAAAK,GAAA,CACD,OAAO,WACHiiC,EAAenmC,SAAQ,SAACujB,GAAC,OAAKA,QAElC,SAASjmB,EAAQmpC,EAASd,GAAO,IAAA/lC,EAAAb,KAC7B,OAAK0nC,EAAQd,GAINvwB,GAAMqxB,EAASd,GAAO,SAAC1wB,GAC1B,OAAO,WAAa,IAAA,IAAAb,EAAAX,UAAA1V,OAATsW,EAAIrX,IAAAA,MAAAoX,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAb,UAAAa,GAEX,GADAW,EAASL,MAAMhV,EAAMyU,IACjB6xB,EAAJ,CAGAA,GAAU,EACV,IACI,IAAME,EAAQnD,GAAiBC,MAAM,IAAIppB,OACpC5c,KAAI,SAACmpC,GAAU,OAAKA,EAAW5pC,UAAU,IACzC86B,OAAO,GACNpa,EAAU9I,EAAKnX,KAAI,SAACN,GAAC,OAAKuB,GAAUvB,EAAGmpC,EAAWjB,uBACxDmB,EACeF,EAAWH,gBACtBvlB,EAAG,CACCslB,MAAAA,EACAS,MAAAA,EACAjpB,QAAAA,IAGC8oB,IAAaF,EAAWH,iBAC7BvlB,EAAG,CACCslB,MAAO,OACPS,MAAO,GACPjpB,QAAS,CACLhf,GAAU,sDAIzB,CACD,MAAOZ,GACH0X,EAAQL,WAAA,EAAA,CAAC,sBAAuBrX,GAAKU,OAAKoW,GAC9C,CACQ,QACJ6xB,GAAU,CACd,CA9BA,EAgCR,IAxCW,WAAM,CAyCrB,CACJ,CACA,IC3IMQ,GAAgB1pC,MAAMu2B,QACtBoT,GAAWpqC,OAAOC,UACXqgC,GAAiB8J,GAAS9J,eACjCpgC,GAAWkqC,GAASlqC,SAEb82B,GACTmT,IACA,SAAUpT,GACN,MAA8B,mBAAvB72B,GAASC,KAAK42B,EACzB,EAOSsT,GAAa,SAAU1iC,GAEhC,MAAoB,mBAANA,CAClB,EAEawgC,GAAW,SAAUn6B,GAE9B,OAAOA,IAAMhO,OAAOgO,KAAOgpB,GAAQhpB,EACvC,EAYas8B,GAAc,SAAUt8B,GACjC,YAAa,IAANA,CACX,EAEau8B,GAAW,SAAUv8B,GAE9B,MAA2B,mBAApB9N,GAASC,KAAK6N,EACzB,EAMaw8B,GAAS,SAAUx8B,GAE5B,OAAa,OAANA,CACX,EAMay8B,GAAY,SAAUz8B,GAC/B,OAAOs8B,GAAYt8B,IAAMw8B,GAAOx8B,EACpC,EAUa08B,GAAY,SAAU18B,GAE/B,MAA4B,qBAArB9N,GAASC,KAAK6N,EACzB,EAEa28B,GAAa,SAAC38B,GAEvB,OAAOA,aAAajC,QACxB,EAEa6+B,GAAa,SAAC58B,GAEvB,OAAOA,aAAa68B,QACxB,ECzEM90B,GAAkE,oBAAXzQ,OAAyBA,YAASqG,EAEzFm/B,GAA8D,oBAAfC,WAA6BA,WAAah1B,GAGlFi1B,GADavqC,MAAMR,UACQwD,QAG3BwnC,GAAYH,cAAM,EAANA,GAAQG,UACTH,UAAAA,GAAQtiC,SACRsiC,UAAAA,GAAQvlC,SACXulC,UAAAA,GAAQI,MAEzBJ,UAAAA,GAAQK,gBAAkB,oBAAqB,IAAIL,GAAOK,gBAAmBL,GAAOK,eACzDL,UAAAA,GAAQM,gBACdH,UAAAA,GAAWI,UAC7B,IAAMC,GAAqEv1B,SAAAA,GAAQ,CAAU,ECvB9Fw1B,GAAgB,eACTjC,GAAS,CAClBkC,KAAM,SAACpC,GACH,GACI9jC,IACiBgmC,GAA8B,gBAC9ChB,GAAYhlC,GAAOqK,UACpBrK,GAAOqK,QACT,CAME,IALA,IAAM87B,GACF,uBAAwBnmC,GAAOqK,QAAQy5B,GAChC9jC,GAAOqK,QAAQy5B,GAAmC,mBACnD9jC,GAAOqK,QAAQy5B,IAEzBvxB,EAAAX,UAAA1V,OAZmCsW,MAAIrX,MAAAoX,EAAAA,EAAAA,OAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,EAAAb,GAAAA,UAAAa,GAavC0zB,EAAUpzB,WAACkzB,EAAAA,CAAAA,IAAa7pC,OAAKoW,GACjC,CACH,EAED4zB,KAAM,WAAoB,IAAA,IAAA3H,EAAA7sB,UAAA1V,OAAhBsW,EAAIrX,IAAAA,MAAAsjC,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJlsB,EAAIksB,GAAA9sB,UAAA8sB,GACVsF,GAAOkC,KAAInzB,MAAXixB,GAAY,CAAA,OAAK5nC,OAAKoW,GACzB,EAEDlI,KAAM,WAAoB,IAAA,IAAA+7B,EAAAz0B,UAAA1V,OAAhBsW,EAAIrX,IAAAA,MAAAkrC,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ9zB,EAAI8zB,GAAA10B,UAAA00B,GACVtC,GAAOkC,KAAInzB,MAAXixB,GAAY,CAAA,QAAM5nC,OAAKoW,GAC1B,EAED9W,MAAO,WAAoB,IAAA,IAAA6qC,EAAA30B,UAAA1V,OAAhBsW,EAAIrX,IAAAA,MAAAorC,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJh0B,EAAIg0B,GAAA50B,UAAA40B,GACXxC,GAAOkC,KAAInzB,MAAXixB,GAAY,CAAA,SAAO5nC,OAAKoW,GAC3B,EAEDi0B,SAAU,WAAoB,IAAA,IAAAC,EAAAC,EAAA/0B,UAAA1V,OAAhBsW,EAAIrX,IAAAA,MAAAwrC,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJp0B,EAAIo0B,GAAAh1B,UAAAg1B,IAGdF,EAAAr8B,SAAQ3O,MAAKqX,MAAA2zB,GAACT,IAAa7pC,OAAKoW,GACnC,EAEDq0B,qBAAsB,SAACC,GACnB9C,GAAOtoC,MAAK,8CAAAU,OAA+C0qC,GAC/D,GCtCEC,GAAmB,CAAA,EA+BlB,SAASC,GAAKvV,EAAUwV,EAAoD9d,GAC/E,IAAIgc,GAAU1T,GAAd,CAGA,GAAIC,GAAQD,GACR,OA5BD,SACHA,EACAwV,EACA9d,GAEA,GAAIuI,GAAQD,GACR,GAAIiU,IAAiBjU,EAAItzB,UAAYunC,GACjCjU,EAAItzB,QAAQ8oC,EAAU9d,QACnB,GAAI,WAAYsI,GAAOA,EAAIv1B,UAAYu1B,EAAIv1B,OAC9C,IAAK,IAAIuL,EAAI,EAAGy/B,EAAIzV,EAAIv1B,OAAQuL,EAAIy/B,EAAGz/B,IACnC,GAAIA,KAAKgqB,GAAOwV,EAASpsC,KAAKsuB,EAASsI,EAAIhqB,GAAIA,KAAOs/B,GAClD,MAKpB,CAYeI,CAAU1V,EAAKwV,EAAU9d,GAEpC,GAAImc,GAAW7T,GAAf,CAAqB,IACe1vB,EADfC,EAAAC,EACEwvB,EAAIzH,WAAS,IAAhC,IAAAhoB,EAAAjH,MAAAgH,EAAAC,EAAA3H,KAAA6H,MAAkC,CAAA,IAAvBklC,EAAIrlC,EAAAtE,MACX,GAAIwpC,EAASpsC,KAAKsuB,EAASie,EAAK,GAAIA,EAAK,MAAQL,GAC7C,MAER,CAAC,CAAA,MAAA7mC,GAAA8B,EAAAI,EAAAlC,EAAA,CAAA,QAAA8B,EAAAK,GAAA,CAEL,MACA,IAAK,IAAM7E,KAAOi0B,EACd,GAAIuJ,GAAengC,KAAK42B,EAAKj0B,IACrBypC,EAASpsC,KAAKsuB,EAASsI,EAAIj0B,GAAMA,KAASupC,GAC1C,MAfZ,CAmBJ,CC7BO,IAAMM,GAAkB,SAAUC,GAAuE,IACxGC,EACAC,EAF2EC,EAAa71B,UAAA1V,OAAA,QAAAmK,IAAAuL,UAAA,GAAAA,UAAA,GAAG,IAGzF81B,EAAoB,GAa1B,OAXAV,GAAKM,GAAU,SAAUK,EAAgCnqC,GAEjDwnC,GAAY2C,IAAQ3C,GAAYxnC,IAAgB,cAARA,IAI5C+pC,EAAUK,mBAA0BD,aJgDpBE,KIhD2BF,EAAIvkC,KAAOukC,EAAI/sC,YAC1D4sC,EAAUI,mBAAmBpqC,GAC7BkqC,EAAQA,EAAQxrC,QAAUsrC,EAAU,IAAMD,EAC9C,IAEOG,EAAQnsC,KAAKksC,EACxB,ECpCaK,GAAwD,CACjEC,eAAgB,CACZ,QACA,SACA,OACA,MACA,aACA,QACA,QACA,QACA,SACA,OACA,QACA,MACA,QACA,OACA,aACA,SACA,OACA,SACA,QACA,QACA,kBAEJC,cAAe,SAAC7+B,GAA4B,OAAKA,CAAI,EACrD8+B,eAAe,EACfC,YAAY,EACZC,uBAAuB,EACvBC,mBAAmB,EACnBC,8BAA+B,CAE3B,cAGA,aACA,QACA,YAEJC,sBAAuB,IACvBC,oBAAqB,CAAC,gBAAiB,sBC5CpC,SAASh1B,GACZC,EACApQ,EACAqQ,GAEA,IACI,KAAMrQ,KAAQoQ,GACV,OAAO,aAKX,IAAMJ,EAAWI,EAAOpQ,GAClBsQ,EAAUD,EAAYL,GAiB5B,OAbI2xB,GAAWrxB,KAEXA,EAAQ/Y,UAAY+Y,EAAQ/Y,WAAa,CAAA,EACzCD,OAAOiZ,iBAAiBD,EAAS,CAC7B80B,oBAAqB,CACjB30B,YAAY,EACZpW,OAAO,MAKnB+V,EAAOpQ,GAAQsQ,EAER,WACHF,EAAOpQ,GAAQgQ,EAEtB,CAAC,MAAAq1B,GACE,OAAO,YAKX,CACJ,CC7BO,SAASC,GAAiB5oC,EAA6BqF,GAA+B,IAAAwjC,EACnFC,EAfV,SAAyB9oC,GACrB,IACI,MAAmB,iBAARA,EACA,IAAIC,IAAID,GAAK8oC,SAEpB,QAAS9oC,EACF,IAAIC,IAAID,EAAIA,KAAK8oC,SAErB9oC,EAAI8oC,QACd,CAAC,MAAAH,GACE,OAAO,IACX,CACJ,CAGqBI,CAAgB/oC,GAC3BgpC,EAAmB,CAAEF,SAAAA,EAAUG,cAAc,GAEnD,GAAgCJ,QAA5BA,EAACxjC,EAAQojC,2BAARI,IAA2BA,IAA3BA,EAA6BzsC,QAAW0sC,UAAAA,EAAUjmC,OAAOzG,OAC1D,OAAO4sC,EACV,IAE6C/mC,EAF7CC,EAAAC,EAEkBkD,EAAQojC,qBAAmB,IAA9C,IAAAvmC,EAAAjH,MAAAgH,EAAAC,EAAA3H,KAAA6H,MAAgD,CAAA,IAArC8mC,EAAIjnC,EAAAtE,MACX,GAAImrC,EAASpoB,SAASwoB,GAClB,MAAO,CAAEJ,SAAAA,EAAUG,cAAc,EAEzC,CAAC,CAAA,MAAA7oC,GAAA8B,EAAAI,EAAAlC,EAAA,CAAA,QAAA8B,EAAAK,GAAA,CAED,OAAOymC,CACX,CCIA,IAAMG,GAAqB,SAACC,GAAuB,MAC3B,eAApBA,EAAMC,SAA0B,EAC9BC,GAAmB,SAACF,GAAuB,MAA6D,aAApBA,EAAMC,SAAwB,EAMjH,SAASE,GAAYC,EAAiBC,GAEzC,IADA,IACS9hC,EADM6hC,EAAMptC,OACC,EAAGuL,GAAK,EAAGA,GAAK,EAClC,GAAI8hC,EAAUD,EAAM7hC,IAChB,OAAO6hC,EAAM7hC,EAIzB,CAEA,SAAS+hC,GAAwBhrB,EAAqB/N,EAActL,GAOhE,GAAIA,EAAQgjC,sBAAuB,CAC/B,IAAMsB,EAA4Bh5B,EAAIi5B,YACjCC,aACAnuB,QACG,SAAC0tB,GAAK,OACFD,GAAmBC,IAClBE,GAAiBF,IAAU/jC,EAAQ4iC,eAAevsC,SAAS0tC,EAAMU,cAAgC,IAE9GprB,EAAG,CACCqrB,SAAUJ,EAA0BK,SAAQ,SAACZ,GAAK,OAC9Ca,GAAeb,OAAO7iC,OAAWA,EAAW,CAAA,GAAI,EAAK,IAEzD2jC,WAAW,GAEnB,CACA,IAAM1qB,EAAW,IAAI7O,EAAIw5B,qBAAoB,SAACjgB,GAI1C,IAKMkgB,EAAqBlgB,EAAQ2f,aAAanuB,QAC5C,SAAC0tB,GAAK,OACFD,GAAmBC,IAClBE,GAAiBF,IACd/jC,EAAQ4iC,eAAevsC,SAAS0tC,EAAMU,gBATnB,SAACV,GAA+B,OAC3D/jC,EAAQ+iC,aAAc/iC,EAAQ8iC,eACA,mBAAxBiB,EAAMU,eAA8D,UAAxBV,EAAMU,aAC9C,CAQFO,CAAuBjB,EAAO,IAG1C1qB,EAAG,CACCqrB,SAAUK,EAAmBJ,SAAQ,SAACZ,GAAK,OAAKa,GAAeb,OAAO7iC,OAAWA,EAAW,CAAE,EAAC,KAEvG,IAGM+jC,EAAaH,oBAAoBI,oBAAoB7uB,QAAO,SAAC9S,GAAC,OAChEvD,EAAQkjC,8BAA8B7sC,SAASkN,EAAE,IAIrD,OADA4W,EAASE,QAAQ,CAAE4qB,WAAAA,IACZ,WACH9qB,EAASyO,aAEjB,CAEA,SAASuc,GAAoBrrC,EAA8BgpC,GACvD,QAASA,IAAkB7C,GAAU6C,IAAkBA,EAAchpC,GACzE,CAEA,SAASsrC,GAAgB1rC,GAStB,IARCI,EAAIJ,EAAJI,KACAipC,EAAUrpC,EAAVqpC,WACAsC,EAAO3rC,EAAP2rC,QAOA,SAASC,EAAmBC,GACxB,IAAMC,EAAoBjwC,OAAOoD,KAAK0sC,GAAS3iC,MAAK,SAACrK,GAAG,MAA2B,iBAAtBA,EAAI6B,iBAC3DurC,EAAcD,GAAqBH,EAAQG,GACjD,OAAOD,EAAarhC,MAAK,SAACwhC,GAAE,OAAKD,aAAW,EAAXA,EAAapvC,SAASqvC,KAC3D,CAEA,IAAK3C,EAAY,OAAO,EACxB,GAAI9C,GAAU8C,GAAa,OAAO,EAClC,GAAIxW,GAAQwW,GAAa,OAAOuC,EAAmBvC,GACnD,IAAM4C,EAAiB5C,EAAWjpC,GAClC,OAAImmC,GAAU0F,GAAwBA,EAC/BL,EAAmBK,EAC9B,CAAC,SAEcC,GAA0BC,EAAAC,EAAAC,EAAAC,EAAAC,GAAA,OAAAC,GAAAt4B,MAAA7V,KAAA0U,UAAA,CA4BzC,SAAAy5B,KAFC,OAEDA,GAAAC,EAAA1S,IAAAC,MA5BA,SAAA0S,EACI96B,EACAm5B,EACA9pC,EACA0rC,EACAC,GAAe,IAAAC,EAAAC,EAAAC,EAAAC,EAAAj6B,UAAA,OAAAgnB,IAAAI,MAAA,SAAA8S,GAAA,OAAA,OAAAA,EAAA5S,KAAA4S,EAAA1zB,MAAA,KAAA,EACJ,MAAXszB,EAAOG,EAAA3vC,OAAA,QAAAmK,IAAAwlC,EAAA,GAAAA,EAAA,GAAG,GAEI,IAAE,CAAAC,EAAA1zB,KAAA,EAAA,KAAA,CACsE,OAAlF4rB,GAAO15B,KAAK,8CAA+C,CAAExK,IAAAA,EAAK8pC,cAAAA,IAAgBkC,EAAA3S,OAAA,SAC3E,MAAI,KAAA,EAUd,GARKwS,EAAwBl7B,EAAIi5B,YAAYqC,iBAAiBjsC,GACzD8rC,EAAmBvC,GACrBsC,GACA,SAACzC,GAAK,OACFE,GAAiBF,IACjBA,EAAMU,gBAAkBA,KACtB4B,GAAStC,EAAM8C,WAAaR,MAC5BC,GAAUvC,EAAM8C,WAAaP,EAAO,IAEzB,CAAAK,EAAA1zB,KAAA,GAAA,KAAA,CAAA,OAAA0zB,EAAA1zB,KAAA,EACX,IAAIsa,SAAQ,SAACC,GAAO,OAAK7hB,WAAW6hB,EAAS,GAAK+Y,MAAS,KAAA,EAAA,OAAAI,EAAA3S,gBAC1D4R,GAA2Bt6B,EAAKm5B,EAAe9pC,EAAK0rC,EAAOC,EAAQC,EAAU,IAAE,KAAA,GAAA,OAAAI,EAAA3S,OAAA,SAEnFyS,GAAgB,KAAA,GAAA,IAAA,MAAA,OAAAE,EAAAnS,OAAA,GAAA4R,EAC1B,KAAAF,GAAAt4B,MAAA7V,KAAA0U,UAAA,CASD,SAASq6B,GAAe7lB,GAQN,IAPdvR,EAAIuR,EAAJvR,KACA1P,EAAOihB,EAAPjhB,QACArF,EAAGsmB,EAAHtmB,IAMA,GAAIqlC,GAAUtwB,GACV,OAAO,KAGX,IAAAq3B,EAAmCxD,GAAiB5oC,EAAKqF,GAAjDyjC,EAAQsD,EAARtD,SACR,GAD8BsD,EAAZnD,aAEd,OAAOH,EAAW,mBAGtB,GAAI3D,GAASpwB,GACT,OAAOA,EAGX,GAAIwwB,GAAWxwB,GACX,OAAOA,EAAK1M,YAGhB,GAAIm9B,GAAWzwB,GACX,OAAOwyB,GAAgBxyB,GAG3B,GAAIguB,GAAShuB,GACT,IACI,OAAOxY,KAAKC,UAAUuY,EACzB,CAAC,MAAA4zB,GACE,MAAO,qDACX,CAGJ,MAAO,4CAA8C7tC,SAASC,KAAKga,EACvE,CAqHA,IAAMs3B,GAAsB,SAACx2B,GAAuB,MAC5B,eAApBA,EAAMwzB,WAAkD,aAApBxzB,EAAMwzB,SAAwB,EAEtE,SAASY,GACLb,EACAkD,EACAC,EACAC,EACAtC,GAMA,IAAMuC,EAAatjC,KAAKujC,MAAM75B,KAAKD,MAAQg3B,YAAYh3B,OAGjDwd,EAAYjnB,KAAKujC,MAAMD,EAAarD,EAAM8C,WAE1CnC,EAAqC,CAAA4C,EAAAA,EAAA,CAAA,EAEhCvD,EAAMwD,UAAQ,GAAA,CACjBV,UAAW/iC,KAAK0jC,MAAMzD,EAAM8C,WAC5BY,QAAS3jC,KAAK0jC,MAAMzD,EAAM2D,aAC1BN,WAAAA,EACArc,UAAAA,EACAkc,OAAQA,EACRxC,cAAeV,EAAMU,cACrByC,OAAAA,EACAS,eAAgBR,EAAeQ,eAC/BC,YAAaT,EAAeS,YAC5BC,gBAAiBV,EAAeU,gBAChCC,aAAcX,EAAeW,aAC7BjD,UAAAA,KAIR,GAAImC,GAAoBjD,GAAQ,CAAA,IACiBnnC,EADjBC,EAAAC,EACPinC,EAAMgE,cAAgB,IAAE,IAA7C,IAAAlrC,EAAAjH,MAAAgH,EAAAC,EAAA3H,KAAA6H,MAA+C,CAAA,IAApCirC,EAAMprC,EAAAtE,MACbosC,EAASptC,KAAK,CACV8vC,WAAAA,EACArc,UAAAA,EACA8b,UAAW/iC,KAAK0jC,MAAMzD,EAAM8C,WAC5B5oC,KAAM+pC,EAAO/pC,KACbgqC,SAAUD,EAAOC,SAMjBjE,UAAW,gBAEnB,CAAC,CAAA,MAAAjpC,GAAA8B,EAAAI,EAAAlC,EAAA,CAAA,QAAA8B,EAAAK,GAAA,CACL,CAEA,OAAOwnC,CACX,CAEA,IAAMwD,GAA4B,CAAC,SAAU,UAE7C,SAASC,GAA+BvtB,GAQtB,IAAAwtB,EAPdtvB,EAAC8B,EAAD9B,EACA9Y,EAAO4a,EAAP5a,QACArF,EAAGigB,EAAHjgB,IAMA,GAA2C,YAAvCme,EAAEusB,QAAQ3sC,IAAI,qBACd,MAAO,6CAKX,IAAM+sC,UAAW2C,EAAGtvB,EAAEusB,QAAQ3sC,IAAI,uBAAe,IAAA0vC,OAAA,EAA7BA,EAA+BluC,cAC7CmuC,EAAsBH,GAA0BhkC,MAAK,SAACokC,GAAM,OAAK7C,aAAW,EAAXA,EAAa1pB,WAAWusB,MAC/F,GAAI7C,GAAe4C,EACf,MAAApxC,gBAAAA,OAAuBwuC,EAAW,qBAGtC,IAAA8C,EAAmChF,GAAiB5oC,EAAKqF,GAAjDyjC,EAAQ8E,EAAR9E,SACR,OAD8B8E,EAAZ3E,aAEPH,EAAW,mBAGf,IACX,CAEA,SAAS+E,GAAa1vB,GAGlB,OAAO,IAAIyU,SAAQ,SAACC,EAASC,GACzB,IAAMvgB,EAAUvB,YAAW,WAAA,OAAM6hB,EAAQ,oDAAoD,GAAE,KAC/F1U,EAAE2vB,QACGzuC,OACA6zB,MACG,SAAC6a,GAAG,OAAKlb,EAAQkb,EAAI,IACrB,SAACnJ,GAAM,OAAK9R,EAAO8R,MAEtBoJ,SAAQ,WAAA,OAAM98B,aAAaqB,KACpC,GACJ,CAAC,SAEc07B,GAAmBC,GAAA,OAAAC,GAAAl7B,MAAA7V,KAAA0U,UAAA,CAAA,SAAAq8B,KAejC,OAfiCA,GAAA3C,EAAA1S,IAAAC,MAAlC,SAAAqV,EAAAtsB,GAAA,IAAA3D,EAAA9Y,EAAArF,EAAAquC,EAAAvF,EAAA,OAAAhQ,IAAAI,MAAA,SAAAoV,GAAA,OAAA,OAAAA,EAAAlV,KAAAkV,EAAAh2B,MAAA,KAAA,EASkC,GAR9B6F,EAAC2D,EAAD3D,EACA9Y,EAAOyc,EAAPzc,QACArF,EAAG8hB,EAAH9hB,IAAGquC,EAMgCzF,GAAiB5oC,EAAKqF,GAAjDyjC,EAAQuF,EAARvF,UAAsBuF,EAAZpF,aACF,CAAAqF,EAAAh2B,KAAA,EAAA,KAAA,CAAA,OAAAg2B,EAAAjV,OACLzG,SAAAA,QAAQC,QAAQiW,EAAW,qBAAmB,KAAA,EAAA,OAAAwF,EAAAjV,gBAGlDwU,GAAa1vB,IAAE,KAAA,EAAA,IAAA,MAAA,OAAAmwB,EAAAzU,OAAA,GAAAuU,EACzB,KAAAD,GAAAl7B,MAAA7V,KAAA0U,UAAA,CAAA,SAEcy8B,GAAoBC,GAAA,OAAAC,GAAAx7B,MAAA7V,KAAA0U,UAAA,CAAA,SAAA28B,KAelC,OAfkCA,GAAAjD,EAAA1S,IAAAC,MAAnC,SAAA2V,EAAA1nB,GAAA,IAAA7I,EAAA9Y,EAAArF,EAAA2uC,EAAA,OAAA7V,IAAAI,MAAA,SAAA0V,GAAA,OAAA,OAAAA,EAAAxV,KAAAwV,EAAAt2B,MAAA,KAAA,EASoG,GARhG6F,EAAC6I,EAAD7I,EACA9Y,EAAO2hB,EAAP3hB,QACArF,EAAGgnB,EAAHhnB,IAMM2uC,EAAsCnB,GAAgC,CAAErvB,EAAAA,EAAG9Y,QAAAA,EAASrF,IAAAA,IACrFolC,GAAOuJ,GAAqB,CAAAC,EAAAt2B,KAAA,EAAA,KAAA,CAAA,OAAAs2B,EAAAvV,OAAA,SACtBzG,QAAQC,QAAQ8b,IAAqB,KAAA,EAAA,OAAAC,EAAAvV,gBAGzCwU,GAAa1vB,IAAE,KAAA,EAAA,IAAA,MAAA,OAAAywB,EAAA/U,OAAA,GAAA6U,EACzB,KAAAD,GAAAx7B,MAAA7V,KAAA0U,UAAA,CAuFD,IAAI+8B,GAA6C,KAEjD,SAASC,GACL/gB,EACApd,EACAtL,GAEA,KAAM,gBAAiBsL,GACnB,OAAO,aAKX,GAAIk+B,GAEA,OADA3K,GAAO15B,KAAK,uDACL,aAKX,IAAMukC,EACF1pC,EAAUzK,OAAOgV,OAAO,CAAA,EAAIo4B,GAAuB3iC,GAAW2iC,GAG5DtpB,EAAsB,SAACrV,GACzB,IAAM0gC,EAAqC,GAC3C1gC,EAAK0gC,SAAS1rC,SAAQ,SAAC2wC,GACnB,IAAMC,EAAgBF,EAAe7G,cAAc8G,GAC/CC,GACAlF,EAASptC,KAAKsyC,EAEtB,IAEIlF,EAAS3tC,OAAS,GAClB2xB,EAAQ4e,EAAAA,KAAMtjC,GAAI,CAAA,EAAA,CAAE0gC,SAAAA,MAGtBmF,EAAsBxF,GAAwBhrB,EAAI/N,EAAKo+B,GAGzDI,EAA+B,aAC/BC,EAAiC,aAWrC,OAVIL,EAAe5G,eAAiB4G,EAAe3G,cAC/C+G,EA7XR,SAAyBzwB,EAAqB/N,EAActL,GACxD,IAAKA,EAAQ4iC,eAAevsC,SAAS,kBACjC,OAAO,aAIX,IAAM2zC,EAAuB7E,GAAoB,UAAWnlC,EAAQ8iC,eAC9DmH,EAAwB9E,GAAoB,WAAYnlC,EAAQ8iC,eAEhEoH,EAAe97B,GACjB9C,EAAIo1B,eAAelrC,UACnB,QAGA,SAAC20C,GACG,OAAO,SACHlD,EACAtsC,GAIF,IAUM0rC,EACAC,EAdJ8D,IAAK39B,UAAA1V,OAAA,QAAAmK,IAAAuL,UAAA,KAAAA,UAAA,GACL49B,EAAwB59B,UAAA1V,OAAA0V,EAAAA,kBAAAvL,EACxBi4B,EAAwB1sB,UAAA1V,OAAA0V,EAAAA,kBAAAvL,EAKlBopC,EAAMvyC,KAINwyC,EAAM,IAAIC,QAAQ7vC,GAClBwsC,EAAkD,CAAA,EAIlDQ,EAA0B,CAAA,EAC1B8C,EAA2BH,EAAII,iBAAiBtwB,KAAKkwB,GAC3DA,EAAII,iBAAmB,SAACC,EAAgBryC,GAEpC,OADAqvC,EAAegD,GAAUryC,EAClBmyC,EAAyBE,EAAQryC,IAExC0xC,IACA7C,EAAeQ,eAAiBA,GAGpC,IAAMiD,EAAeN,EAAIO,KAAKzwB,KAAKkwB,GACnCA,EAAIO,KAAO,SAACn7B,GAYR,OAVI01B,GAAiB,CACbtrC,KAAM,UACNurC,QAASsC,EACThtC,IAAAA,EACAooC,WAAY/iC,EAAQ+iC,eAGxBoE,EAAeS,YAAcd,GAAgB,CAAEp3B,KAAAA,EAAM1P,QAAAA,EAASrF,IAAAA,KAElE0rC,EAAQ/6B,EAAIi5B,YAAYh3B,MACjBq9B,EAAal7B,IAGxB46B,EAAI/kC,iBAAiB,oBAAoB,WACrC,GAAI+kC,EAAI9+B,aAAe8+B,EAAIQ,KAA3B,CAGAxE,EAASh7B,EAAIi5B,YAAYh3B,MACzB,IAAMs6B,EAA2B,CAAA,EACdyC,EAAIS,wBACIvtC,OAAO1G,MAAM,WAChCkC,SAAQ,SAACyjC,GACb,IAAM//B,EAAQ+/B,EAAK3lC,MAAM,MACnB6zC,EAASjuC,EAAM+Y,QACfnd,EAAQoE,EAAMtG,KAAK,MACrBu0C,IACA9C,EAAgB8C,GAAUryC,EAElC,IACI2xC,IACA9C,EAAeU,gBAAkBA,GAGjCzC,GAAiB,CACbtrC,KAAM,WACNurC,QAASwC,EACTltC,IAAAA,EACAooC,WAAY/iC,EAAQ+iC,eAGxBoE,EAAeW,aAAehB,GAAgB,CAAEp3B,KAAM46B,EAAIU,SAAUhrC,QAAAA,EAASrF,IAAAA,KAEjFirC,GAA2Bt6B,EAAK,iBAAkBi/B,EAAI5vC,IAAK0rC,EAAOC,GAC7DzY,MAAK,SAACkW,GACH,IAAIhE,GAAOgE,GAAX,CAGA,IAAMW,EAAWE,GAAeb,EAAOwG,EAAItD,OAAQqD,aAAAA,EAAAA,EAAKpD,OAAQC,GAChE9tB,EAAG,CAAEqrB,SAAAA,GAFL,CAGJ,IACCuG,OAAM,WACH,GAnCR,CAqCJ,IACAd,EAAaz0C,KAAK40C,EAAKrD,EAAQtsC,EAAKyvC,EAAOC,EAAUlR,GAE7D,IAEJ,OAAO,WACH+Q,IAER,CAiRsBgB,CAAgB7xB,EAAI/N,EAAKo+B,GACvCK,EAjIR,SACI1wB,EACA/N,EACAtL,GAEA,IAAKA,EAAQ4iC,eAAevsC,SAAS,SACjC,OAAO,aAIX,IAAM2zC,EAAuB7E,GAAoB,UAAWnlC,EAAQ8iC,eAC9DmH,EAAwB9E,GAAoB,WAAYnlC,EAAQ8iC,eAGhEoH,EAAe97B,GAAM9C,EAAK,SAAS,SAAC6/B,GACtC,OAAA,WAAA,IAAAvpB,EAAAukB,EAAA1S,IAAAC,MAAO,SAAAC,EAAgBh5B,EAAwBif,GAA8B,IAAA2wB,EAAAa,EAAAjE,EAAAd,EAAAC,EAAAqB,EAAAE,EAAA,OAAApU,IAAAI,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAA7gB,MAAA,KAAA,EAepE,GAZCs3B,EAAM,IAAIC,QAAQ7vC,EAAKif,GAEvButB,EAAkD,CAAA,EAAErT,EAAAC,KAAA,EAIhD4T,EAA0B,CAAA,EAChC4C,EAAIlF,QAAQrsC,SAAQ,SAACV,EAAOqyC,GACxBhD,EAAegD,GAAUryC,CAC7B,IACI0xC,IACA7C,EAAeQ,eAAiBA,IAGhCvC,GAAiB,CACbtrC,KAAM,UACNurC,QAASsC,EACThtC,IAAAA,EACAooC,WAAY/iC,EAAQ+iC,aACtB,CAAAjP,EAAA7gB,KAAA,GAAA,KAAA,CAAA,OAAA6gB,EAAA7gB,KAAA,EAEiC21B,GAAoB,CAAE9vB,EAAGyxB,EAAKvqC,QAAAA,EAASrF,IAAAA,IAAM,KAAA,EAAhFwsC,EAAeS,YAAW9T,EAAAQ,KAAA,KAAA,GAGD,OAA7B+R,EAAQ/6B,EAAIi5B,YAAYh3B,MAAKumB,EAAA7gB,KAAA,GACjBk4B,EAAcZ,GAAI,KAAA,GAS7B,GATDa,EAAGtX,EAAAQ,KACHgS,EAASh7B,EAAIi5B,YAAYh3B,MAEnBs6B,EAA2B,CAAA,EACjCuD,EAAI/F,QAAQrsC,SAAQ,SAACV,EAAOqyC,GACxB9C,EAAgB8C,GAAUryC,CAC9B,IACI2xC,IACA9C,EAAeU,gBAAkBA,IAGjCzC,GAAiB,CACbtrC,KAAM,WACNurC,QAASwC,EACTltC,IAAAA,EACAooC,WAAY/iC,EAAQ+iC,aACtB,CAAAjP,EAAA7gB,KAAA,GAAA,KAAA,CAAA,OAAA6gB,EAAA7gB,KAAA,GAEkCi2B,GAAqB,CAAEpwB,EAAGsyB,EAAKprC,QAAAA,EAASrF,IAAAA,IAAM,KAAA,GAAlFwsC,EAAeW,aAAYhU,EAAAQ,KAAA,KAAA,GAAA,OAAAR,EAAAE,OAAA,SAGxBoX,GAAG,KAAA,GAYJ,OAZItX,EAAAC,KAAA,GAEV6R,GAA2Bt6B,EAAK,QAASi/B,EAAI5vC,IAAK0rC,EAAOC,GACpDzY,MAAK,SAACkW,GAAU,IAAAsH,EACb,IAAItL,GAAOgE,GAAX,CAGA,IAAMW,EAAWE,GAAeb,EAAOwG,EAAItD,eAAMoE,EAAED,SAAG,IAAAC,OAAA,EAAHA,EAAKnE,OAAQC,GAChE9tB,EAAG,CAAEqrB,SAAAA,GAFL,CAGJ,IACCuG,OAAM,WACH,IACFnX,EAAAwX,OAAA,IAAA,KAAA,GAAA,IAAA,MAAA,OAAAxX,EAAAU,OAAA,GAAAb,EAAA,KAAA,CAAA,CAAA,EAAA,CAAA,GAAA,KAEb,KAAA,OAAA4X,SAAAA,EAAAC,GAAA,OAAA5pB,EAAAhU,MAAA7V,KAAA0U,UAAA,CAAA,CA/DD,EAgEJ,IACA,OAAO,WACHy9B,IAER,CA8CwBuB,CAAkBpyB,EAAI/N,EAAKo+B,IAG/CF,GAAqB,WACjBK,IACAC,IACAC,IAGR,CAIa2B,IAAAA,GAAsB,kBAKtBC,GAA2E,SAAC3rC,GACrF,MAAO,CACH/B,KAAMytC,GACNvxB,SAAUsvB,GACVzpC,QAASA,EAEjB,EAIInF,KACEA,GAAe+wC,MAAQ,CAAE5U,OAAQ6U,GAAaC,QAAS,KAAMC,+BAC7DlxC,GAAemxC,mBAAqB,CAAEC,uBTpeb,SAACjsC,GAAO,MAAM,CACzC/B,KAFgB,kBAGhBkc,SAAU2kB,GACV9+B,QAASA,EACZ,GSieKnF,GAAe8wC,uBAAyBA","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]}
|