{
  "version": 3,
  "sources": ["../../rrweb-snapshot/dist/rrweb-snapshot.js", "../src/utils.ts", "../../types/dist/rrweb-types.js", "../src/record/error-handler.ts", "../../../node_modules/base64-arraybuffer/dist/base64-arraybuffer.es5.js", "../src/record/observers/canvas/serialize-args.ts", "../src/record/observers/canvas/2d.ts", "../src/record/observers/canvas/canvas.ts", "../src/record/observers/canvas/webgl.ts", "../../rrweb-worker/dist/rrweb-worker/image-bitmap-data-url-worker.mjs", "../../rrweb-worker/dist/rrweb-worker/index.mjs", "../src/record/observers/canvas/canvas-manager.ts", "canvas-manager.cjs"],
  "sourcesContent": ["var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar NodeType = /* @__PURE__ */ ((NodeType2) => {\n  NodeType2[NodeType2[\"Document\"] = 0] = \"Document\";\n  NodeType2[NodeType2[\"DocumentType\"] = 1] = \"DocumentType\";\n  NodeType2[NodeType2[\"Element\"] = 2] = \"Element\";\n  NodeType2[NodeType2[\"Text\"] = 3] = \"Text\";\n  NodeType2[NodeType2[\"CDATA\"] = 4] = \"CDATA\";\n  NodeType2[NodeType2[\"Comment\"] = 5] = \"Comment\";\n  return NodeType2;\n})(NodeType || {});\nfunction isElement(n) {\n  return n.nodeType === n.ELEMENT_NODE;\n}\nfunction isShadowRoot(n) {\n  const host = n?.host;\n  return Boolean(host?.shadowRoot === n);\n}\nfunction isNativeShadowDom(shadowRoot) {\n  return Object.prototype.toString.call(shadowRoot) === \"[object ShadowRoot]\";\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n  if (cssText.includes(\" background-clip: text;\") && !cssText.includes(\" -webkit-background-clip: text;\")) {\n    cssText = cssText.replace(\n      /\\sbackground-clip:\\s*text;/g,\n      \" -webkit-background-clip: text; background-clip: text;\"\n    );\n  }\n  return cssText;\n}\nfunction escapeImportStatement(rule) {\n  const { cssText } = rule;\n  if (cssText.split('\"').length < 3) return cssText;\n  const statement = [\"@import\", `url(${JSON.stringify(rule.href)})`];\n  if (rule.layerName === \"\") {\n    statement.push(`layer`);\n  } else if (rule.layerName) {\n    statement.push(`layer(${rule.layerName})`);\n  }\n  if (rule.supportsText) {\n    statement.push(`supports(${rule.supportsText})`);\n  }\n  if (rule.media.length) {\n    statement.push(rule.media.mediaText);\n  }\n  return statement.join(\" \") + \";\";\n}\nfunction stringifyStylesheet(s) {\n  try {\n    const rules = s.rules || s.cssRules;\n    return rules ? fixBrowserCompatibilityIssuesInCSS(\n      Array.from(rules, stringifyRule).join(\"\")\n    ) : null;\n  } catch (error) {\n    return null;\n  }\n}\nfunction fixAllCssProperty(rule) {\n  let styles = \"\";\n  for (let i = 0; i < rule.style.length; i++) {\n    const styleDeclaration = rule.style;\n    const attribute = styleDeclaration[i];\n    const isImportant = styleDeclaration.getPropertyPriority(attribute);\n    styles += `${attribute}:${styleDeclaration.getPropertyValue(attribute)}${isImportant ? ` !important` : \"\"};`;\n  }\n  return `${rule.selectorText} { ${styles} }`;\n}\nfunction stringifyRule(rule) {\n  let importStringified;\n  if (isCSSImportRule(rule)) {\n    try {\n      importStringified = // for same-origin stylesheets,\n      // we can access the imported stylesheet rules directly\n      stringifyStylesheet(rule.styleSheet) || // work around browser issues with the raw string `@import url(...)` statement\n      escapeImportStatement(rule);\n    } catch (error) {\n    }\n  } else if (isCSSStyleRule(rule)) {\n    let cssText = rule.cssText;\n    const needsSafariColonFix = rule.selectorText.includes(\":\");\n    const needsAllFix = typeof rule.style[\"all\"] === \"string\" && rule.style[\"all\"];\n    if (needsAllFix) {\n      cssText = fixAllCssProperty(rule);\n    }\n    if (needsSafariColonFix) {\n      cssText = fixSafariColons(cssText);\n    }\n    if (needsSafariColonFix || needsAllFix) {\n      return cssText;\n    }\n  }\n  return importStringified || rule.cssText;\n}\nfunction fixSafariColons(cssStringified) {\n  const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n  return cssStringified.replace(regex, \"$1\\\\$2\");\n}\nfunction isCSSImportRule(rule) {\n  return \"styleSheet\" in rule;\n}\nfunction isCSSStyleRule(rule) {\n  return \"selectorText\" in rule;\n}\nclass Mirror {\n  constructor() {\n    __publicField(this, \"idNodeMap\", /* @__PURE__ */ new Map());\n    __publicField(this, \"nodeMetaMap\", /* @__PURE__ */ new WeakMap());\n  }\n  getId(n) {\n    if (!n) return -1;\n    const id = this.getMeta(n)?.id;\n    return id ?? -1;\n  }\n  getNode(id) {\n    return this.idNodeMap.get(id) || null;\n  }\n  getIds() {\n    return Array.from(this.idNodeMap.keys());\n  }\n  getMeta(n) {\n    return this.nodeMetaMap.get(n) || null;\n  }\n  // removes the node from idNodeMap\n  // doesn't remove the node from nodeMetaMap\n  removeNodeFromMap(n) {\n    const id = this.getId(n);\n    this.idNodeMap.delete(id);\n    if (n.childNodes) {\n      n.childNodes.forEach(\n        (childNode) => this.removeNodeFromMap(childNode)\n      );\n    }\n  }\n  has(id) {\n    return this.idNodeMap.has(id);\n  }\n  hasNode(node) {\n    return this.nodeMetaMap.has(node);\n  }\n  add(n, meta) {\n    const id = meta.id;\n    this.idNodeMap.set(id, n);\n    this.nodeMetaMap.set(n, meta);\n  }\n  replace(id, n) {\n    const oldNode = this.getNode(id);\n    if (oldNode) {\n      const meta = this.nodeMetaMap.get(oldNode);\n      if (meta) this.nodeMetaMap.set(n, meta);\n    }\n    this.idNodeMap.set(id, n);\n  }\n  reset() {\n    this.idNodeMap = /* @__PURE__ */ new Map();\n    this.nodeMetaMap = /* @__PURE__ */ new WeakMap();\n  }\n}\nfunction createMirror() {\n  return new Mirror();\n}\nfunction shouldMaskInput({\n  maskInputOptions,\n  tagName,\n  type\n}) {\n  if (tagName === \"OPTION\") {\n    tagName = \"SELECT\";\n  }\n  return Boolean(\n    maskInputOptions[tagName.toLowerCase()] || type && maskInputOptions[type] || type === \"password\" || // Default to \"text\" option for inputs without a \"type\" attribute defined\n    tagName === \"INPUT\" && !type && maskInputOptions[\"text\"]\n  );\n}\nfunction maskInputValue({\n  isMasked,\n  element,\n  value,\n  maskInputFn\n}) {\n  let text = value || \"\";\n  if (!isMasked) {\n    return text;\n  }\n  if (maskInputFn) {\n    text = maskInputFn(text, element);\n  }\n  return \"*\".repeat(text.length);\n}\nfunction toLowerCase(str) {\n  return str.toLowerCase();\n}\nfunction toUpperCase(str) {\n  return str.toUpperCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = \"__rrweb_original__\";\nfunction is2DCanvasBlank(canvas) {\n  const ctx = canvas.getContext(\"2d\");\n  if (!ctx) return true;\n  const chunkSize = 50;\n  for (let x = 0; x < canvas.width; x += chunkSize) {\n    for (let y = 0; y < canvas.height; y += chunkSize) {\n      const getImageData = ctx.getImageData;\n      const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData ? getImageData[ORIGINAL_ATTRIBUTE_NAME] : getImageData;\n      const pixelBuffer = new Uint32Array(\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n        originalGetImageData.call(\n          ctx,\n          x,\n          y,\n          Math.min(chunkSize, canvas.width - x),\n          Math.min(chunkSize, canvas.height - y)\n        ).data.buffer\n      );\n      if (pixelBuffer.some((pixel) => pixel !== 0)) return false;\n    }\n  }\n  return true;\n}\nfunction isNodeMetaEqual(a, b) {\n  if (!a || !b || a.type !== b.type) return false;\n  if (a.type === NodeType.Document)\n    return a.compatMode === b.compatMode;\n  else if (a.type === NodeType.DocumentType)\n    return a.name === b.name && a.publicId === b.publicId && a.systemId === b.systemId;\n  else if (a.type === NodeType.Comment || a.type === NodeType.Text || a.type === NodeType.CDATA)\n    return a.textContent === b.textContent;\n  else if (a.type === NodeType.Element)\n    return a.tagName === b.tagName && JSON.stringify(a.attributes) === JSON.stringify(b.attributes) && a.isSVG === b.isSVG && a.needBlock === b.needBlock;\n  return false;\n}\nfunction getInputType(element) {\n  const type = element.type;\n  return element.hasAttribute(\"data-rr-is-password\") ? \"password\" : type ? (\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n    toLowerCase(type)\n  ) : null;\n}\nfunction getInputValue(el, tagName, type) {\n  if (tagName === \"INPUT\" && (type === \"radio\" || type === \"checkbox\")) {\n    return el.getAttribute(\"value\") || \"\";\n  }\n  return el.value;\n}\nfunction extractFileExtension(path, baseURL) {\n  let url;\n  try {\n    url = new URL(path, baseURL ?? window.location.href);\n  } catch (err) {\n    return null;\n  }\n  const regex = /\\.([0-9a-z]+)(?:$)/i;\n  const match = url.pathname.match(regex);\n  return match?.[1] ?? null;\n}\nconst cachedImplementations = {};\nfunction getImplementation(name) {\n  const cached = cachedImplementations[name];\n  if (cached) {\n    return cached;\n  }\n  const document = window.document;\n  let impl = window[name];\n  if (document && typeof document.createElement === \"function\") {\n    try {\n      const sandbox = document.createElement(\"iframe\");\n      sandbox.hidden = true;\n      document.head.appendChild(sandbox);\n      const contentWindow = sandbox.contentWindow;\n      if (contentWindow && contentWindow[name]) {\n        impl = // eslint-disable-next-line @typescript-eslint/unbound-method\n        contentWindow[name];\n      }\n      document.head.removeChild(sandbox);\n    } catch (e) {\n    }\n  }\n  return cachedImplementations[name] = impl.bind(\n    window\n  );\n}\nfunction onRequestAnimationFrame(...rest) {\n  return getImplementation(\"requestAnimationFrame\")(...rest);\n}\nfunction setTimeout(...rest) {\n  return getImplementation(\"setTimeout\")(...rest);\n}\nfunction clearTimeout(...rest) {\n  return getImplementation(\"clearTimeout\")(...rest);\n}\nfunction getIFrameContentDocument(iframe) {\n  try {\n    return iframe.contentDocument;\n  } catch {\n  }\n}\nfunction getIFrameContentWindow(iframe) {\n  try {\n    return iframe.contentWindow;\n  } catch {\n  }\n}\nlet _id = 1;\nconst tagNameRegex = new RegExp(\"[^a-z0-9-_:]\");\nconst IGNORED_NODE = -2;\nfunction genId() {\n  return _id++;\n}\nfunction getValidTagName(element) {\n  if (element instanceof HTMLFormElement) {\n    return \"form\";\n  }\n  const processedTagName = toLowerCase(element.tagName);\n  if (tagNameRegex.test(processedTagName)) {\n    return \"div\";\n  }\n  return processedTagName;\n}\nfunction extractOrigin(url) {\n  let origin = \"\";\n  if (url.indexOf(\"//\") > -1) {\n    origin = url.split(\"/\").slice(0, 3).join(\"/\");\n  } else {\n    origin = url.split(\"/\")[0];\n  }\n  origin = origin.split(\"?\")[0];\n  return origin;\n}\nlet canvasService;\nlet canvasCtx;\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction filterCSSPropertiesFromInlineStyle(cssText, ignoredProperties) {\n  if (!cssText || ignoredProperties.size === 0) {\n    return cssText;\n  }\n  try {\n    const properties = cssText.split(\";\");\n    const filteredProperties = [];\n    for (let property of properties) {\n      property = property.trim();\n      if (!property) continue;\n      const colonIndex = property.indexOf(\":\");\n      if (colonIndex === -1) {\n        filteredProperties.push(property);\n        continue;\n      }\n      const propertyName = property.slice(0, colonIndex).trim();\n      if (!ignoredProperties.has(propertyName)) {\n        filteredProperties.push(property);\n      }\n    }\n    return filteredProperties.join(\"; \") + (filteredProperties.length > 0 && cssText.endsWith(\";\") ? \";\" : \"\");\n  } catch (error) {\n    console.warn(\"Error filtering CSS properties:\", error);\n    return cssText;\n  }\n}\nfunction absoluteToStylesheet(cssText, href) {\n  return (cssText || \"\").replace(\n    URL_IN_CSS_REF,\n    (origin, quote1, path1, quote2, path2, path3) => {\n      const filePath = path1 || path2 || path3;\n      const maybeQuote = quote1 || quote2 || \"\";\n      if (!filePath) {\n        return origin;\n      }\n      if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n        return `url(${maybeQuote}${filePath}${maybeQuote})`;\n      }\n      if (DATA_URI.test(filePath)) {\n        return `url(${maybeQuote}${filePath}${maybeQuote})`;\n      }\n      if (filePath[0] === \"/\") {\n        return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n      }\n      const stack = href.split(\"/\");\n      const parts = filePath.split(\"/\");\n      stack.pop();\n      for (const part of parts) {\n        if (part === \".\") {\n          continue;\n        } else if (part === \"..\") {\n          stack.pop();\n        } else {\n          stack.push(part);\n        }\n      }\n      return `url(${maybeQuote}${stack.join(\"/\")}${maybeQuote})`;\n    }\n  );\n}\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n  if (attributeValue.trim() === \"\") {\n    return attributeValue;\n  }\n  let pos = 0;\n  function collectCharacters(regEx) {\n    let chars;\n    const match = regEx.exec(attributeValue.substring(pos));\n    if (match) {\n      chars = match[0];\n      pos += chars.length;\n      return chars;\n    }\n    return \"\";\n  }\n  const output = [];\n  while (true) {\n    collectCharacters(SRCSET_COMMAS_OR_SPACES);\n    if (pos >= attributeValue.length) {\n      break;\n    }\n    let url = collectCharacters(SRCSET_NOT_SPACES);\n    if (url.slice(-1) === \",\") {\n      url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n      output.push(url);\n    } else {\n      let descriptorsStr = \"\";\n      url = absoluteToDoc(doc, url);\n      let inParens = false;\n      while (true) {\n        const c = attributeValue.charAt(pos);\n        if (c === \"\") {\n          output.push((url + descriptorsStr).trim());\n          break;\n        } else if (!inParens) {\n          if (c === \",\") {\n            pos += 1;\n            output.push((url + descriptorsStr).trim());\n            break;\n          } else if (c === \"(\") {\n            inParens = true;\n          }\n        } else {\n          if (c === \")\") {\n            inParens = false;\n          }\n        }\n        descriptorsStr += c;\n        pos += 1;\n      }\n    }\n  }\n  return output.join(\", \");\n}\nconst cachedDocument = /* @__PURE__ */ new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n  if (!attributeValue || attributeValue.trim() === \"\") {\n    return attributeValue;\n  }\n  return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n  return Boolean(el.tagName === \"svg\" || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n  let a = cachedDocument.get(doc);\n  if (!a) {\n    a = doc.createElement(\"a\");\n    cachedDocument.set(doc, a);\n  }\n  if (!customHref) {\n    customHref = \"\";\n  } else if (customHref.startsWith(\"blob:\") || customHref.startsWith(\"data:\")) {\n    return customHref;\n  }\n  a.setAttribute(\"href\", customHref);\n  return a.href;\n}\nfunction transformAttribute(doc, tagName, name, value, element, maskAttributeFn, ignoreCSSAttributes) {\n  if (!value) {\n    return value;\n  }\n  if (name === \"src\" || name === \"href\" && !(tagName === \"use\" && value[0] === \"#\")) {\n    return absoluteToDoc(doc, value);\n  } else if (name === \"xlink:href\" && value[0] !== \"#\") {\n    return absoluteToDoc(doc, value);\n  } else if (name === \"background\" && (tagName === \"table\" || tagName === \"td\" || tagName === \"th\")) {\n    return absoluteToDoc(doc, value);\n  } else if (name === \"srcset\") {\n    return getAbsoluteSrcsetString(doc, value);\n  } else if (name === \"style\") {\n    let processedStyle = absoluteToStylesheet(value, getHref(doc));\n    if (ignoreCSSAttributes && ignoreCSSAttributes.size > 0) {\n      processedStyle = filterCSSPropertiesFromInlineStyle(\n        processedStyle,\n        ignoreCSSAttributes\n      );\n    }\n    return processedStyle;\n  } else if (tagName === \"object\" && name === \"data\") {\n    return absoluteToDoc(doc, value);\n  }\n  if (typeof maskAttributeFn === \"function\") {\n    return maskAttributeFn(name, value, element);\n  }\n  return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n  return (tagName === \"video\" || tagName === \"audio\") && name === \"autoplay\";\n}\nfunction _isBlockedElement(element, blockClass, blockSelector, unblockSelector) {\n  try {\n    if (unblockSelector && element.matches(unblockSelector)) {\n      return false;\n    }\n    if (typeof blockClass === \"string\") {\n      if (element.classList.contains(blockClass)) {\n        return true;\n      }\n    } else {\n      for (let eIndex = element.classList.length; eIndex--; ) {\n        const className = element.classList[eIndex];\n        if (blockClass.test(className)) {\n          return true;\n        }\n      }\n    }\n    if (blockSelector) {\n      return element.matches(blockSelector);\n    }\n  } catch (e) {\n  }\n  return false;\n}\nfunction elementClassMatchesRegex(el, regex) {\n  for (let eIndex = el.classList.length; eIndex--; ) {\n    const className = el.classList[eIndex];\n    if (regex.test(className)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction classMatchesRegex(node, regex, checkAncestors) {\n  if (!node) return false;\n  if (checkAncestors) {\n    return distanceToMatch(\n      node,\n      (node2) => elementClassMatchesRegex(node2, regex)\n    ) >= 0;\n  } else if (node.nodeType === node.ELEMENT_NODE) {\n    return elementClassMatchesRegex(node, regex);\n  }\n  return false;\n}\nfunction distanceToMatch(node, matchPredicate, limit = Infinity, distance = 0) {\n  if (!node) return -1;\n  if (node.nodeType !== node.ELEMENT_NODE) return -1;\n  if (distance > limit) return -1;\n  if (matchPredicate(node)) return distance;\n  return distanceToMatch(node.parentNode, matchPredicate, limit, distance + 1);\n}\nfunction createMatchPredicate(className, selector) {\n  return (node) => {\n    const el = node;\n    if (el === null) return false;\n    try {\n      if (className) {\n        if (typeof className === \"string\") {\n          if (el.matches(`.${className}`)) return true;\n        } else if (elementClassMatchesRegex(el, className)) {\n          return true;\n        }\n      }\n      if (selector && el.matches(selector)) return true;\n      return false;\n    } catch {\n      return false;\n    }\n  };\n}\nfunction needMaskingText(node, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText) {\n  try {\n    const el = node.nodeType === node.ELEMENT_NODE ? node : node.parentElement;\n    if (el === null) return false;\n    if (el.tagName === \"INPUT\") {\n      const autocomplete = el.getAttribute(\"autocomplete\");\n      const disallowedAutocompleteValues = [\n        \"current-password\",\n        \"new-password\",\n        \"cc-number\",\n        \"cc-exp\",\n        \"cc-exp-month\",\n        \"cc-exp-year\",\n        \"cc-csc\"\n      ];\n      if (disallowedAutocompleteValues.includes(autocomplete)) {\n        return true;\n      }\n    }\n    let maskDistance = -1;\n    let unmaskDistance = -1;\n    if (maskAllText) {\n      unmaskDistance = distanceToMatch(\n        el,\n        createMatchPredicate(unmaskTextClass, unmaskTextSelector)\n      );\n      if (unmaskDistance < 0) {\n        return true;\n      }\n      maskDistance = distanceToMatch(\n        el,\n        createMatchPredicate(maskTextClass, maskTextSelector),\n        unmaskDistance >= 0 ? unmaskDistance : Infinity\n      );\n    } else {\n      maskDistance = distanceToMatch(\n        el,\n        createMatchPredicate(maskTextClass, maskTextSelector)\n      );\n      if (maskDistance < 0) {\n        return false;\n      }\n      unmaskDistance = distanceToMatch(\n        el,\n        createMatchPredicate(unmaskTextClass, unmaskTextSelector),\n        maskDistance >= 0 ? maskDistance : Infinity\n      );\n    }\n    return maskDistance >= 0 ? unmaskDistance >= 0 ? maskDistance <= unmaskDistance : true : unmaskDistance >= 0 ? false : !!maskAllText;\n  } catch (e) {\n  }\n  return !!maskAllText;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n  const win = getIFrameContentWindow(iframeEl);\n  if (!win) {\n    return;\n  }\n  let fired = false;\n  let readyState;\n  try {\n    readyState = win.document.readyState;\n  } catch (error) {\n    return;\n  }\n  if (readyState !== \"complete\") {\n    const timer = setTimeout(() => {\n      if (!fired) {\n        listener();\n        fired = true;\n      }\n    }, iframeLoadTimeout);\n    iframeEl.addEventListener(\"load\", () => {\n      clearTimeout(timer);\n      fired = true;\n      listener();\n    });\n    return;\n  }\n  const blankUrl = \"about:blank\";\n  if (win.location.href !== blankUrl || iframeEl.src === blankUrl || iframeEl.src === \"\") {\n    setTimeout(listener, 0);\n    return iframeEl.addEventListener(\"load\", listener);\n  }\n  iframeEl.addEventListener(\"load\", listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n  let fired = false;\n  let styleSheetLoaded;\n  try {\n    styleSheetLoaded = link.sheet;\n  } catch (error) {\n    styleSheetLoaded = null;\n  }\n  if (styleSheetLoaded) return;\n  const timer = setTimeout(() => {\n    if (!fired) {\n      listener();\n      fired = true;\n    }\n  }, styleSheetLoadTimeout);\n  link.addEventListener(\"load\", () => {\n    clearTimeout(timer);\n    fired = true;\n    listener();\n  });\n}\nfunction serializeNode(n, options) {\n  const {\n    doc,\n    mirror,\n    blockClass,\n    blockSelector,\n    unblockSelector,\n    maskAllText,\n    maskAttributeFn,\n    maskTextClass,\n    unmaskTextClass,\n    maskTextSelector,\n    unmaskTextSelector,\n    inlineStylesheet,\n    maskInputOptions = {},\n    maskTextFn,\n    maskInputFn,\n    dataURLOptions = {},\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement = false,\n    ignoreCSSAttributes\n  } = options;\n  const rootId = getRootId(doc, mirror);\n  switch (n.nodeType) {\n    case n.DOCUMENT_NODE:\n      if (n.compatMode !== \"CSS1Compat\") {\n        return {\n          type: NodeType.Document,\n          childNodes: [],\n          compatMode: n.compatMode\n          // probably \"BackCompat\"\n        };\n      } else {\n        return {\n          type: NodeType.Document,\n          childNodes: []\n        };\n      }\n    case n.DOCUMENT_TYPE_NODE:\n      return {\n        type: NodeType.DocumentType,\n        name: n.name,\n        publicId: n.publicId,\n        systemId: n.systemId,\n        rootId\n      };\n    case n.ELEMENT_NODE:\n      return serializeElementNode(n, {\n        doc,\n        blockClass,\n        blockSelector,\n        unblockSelector,\n        inlineStylesheet,\n        maskAttributeFn,\n        maskInputOptions,\n        maskInputFn,\n        dataURLOptions,\n        inlineImages,\n        recordCanvas,\n        keepIframeSrcFn,\n        newlyAddedElement,\n        rootId,\n        maskTextClass,\n        unmaskTextClass,\n        maskTextSelector,\n        unmaskTextSelector,\n        ignoreCSSAttributes\n      });\n    case n.TEXT_NODE:\n      return serializeTextNode(n, {\n        doc,\n        maskAllText,\n        maskTextClass,\n        unmaskTextClass,\n        maskTextSelector,\n        unmaskTextSelector,\n        maskTextFn,\n        maskInputOptions,\n        maskInputFn,\n        rootId\n      });\n    case n.CDATA_SECTION_NODE:\n      return {\n        type: NodeType.CDATA,\n        textContent: \"\",\n        rootId\n      };\n    case n.COMMENT_NODE:\n      return {\n        type: NodeType.Comment,\n        textContent: n.textContent || \"\",\n        rootId\n      };\n    default:\n      return false;\n  }\n}\nfunction getRootId(doc, mirror) {\n  if (!mirror.hasNode(doc)) return void 0;\n  const docId = mirror.getId(doc);\n  return docId === 1 ? void 0 : docId;\n}\nfunction serializeTextNode(n, options) {\n  const {\n    maskAllText,\n    maskTextClass,\n    unmaskTextClass,\n    maskTextSelector,\n    unmaskTextSelector,\n    maskTextFn,\n    maskInputOptions,\n    maskInputFn,\n    rootId\n  } = options;\n  const parentTagName = n.parentNode && n.parentNode.tagName;\n  let textContent = n.textContent;\n  const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n  const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n  const isTextarea = parentTagName === \"TEXTAREA\" ? true : void 0;\n  if (isStyle && textContent) {\n    try {\n      if (n.nextSibling || n.previousSibling) {\n      } else if (n.parentNode.sheet?.cssRules) {\n        textContent = stringifyStylesheet(\n          n.parentNode.sheet\n        );\n      }\n    } catch (err) {\n      console.warn(\n        `Cannot get CSS styles from text's parentNode. Error: ${err}`,\n        n\n      );\n    }\n    textContent = absoluteToStylesheet(textContent, getHref(options.doc));\n  }\n  if (isScript) {\n    textContent = \"SCRIPT_PLACEHOLDER\";\n  }\n  const forceMask = needMaskingText(\n    n,\n    maskTextClass,\n    maskTextSelector,\n    unmaskTextClass,\n    unmaskTextSelector,\n    maskAllText\n  );\n  if (!isStyle && !isScript && !isTextarea && textContent && forceMask) {\n    textContent = maskTextFn ? maskTextFn(textContent, n.parentElement) : textContent.replace(/[\\S]/g, \"*\");\n  }\n  if (isTextarea && textContent && (maskInputOptions.textarea || forceMask)) {\n    textContent = maskInputFn ? maskInputFn(textContent, n.parentNode) : textContent.replace(/[\\S]/g, \"*\");\n  }\n  if (parentTagName === \"OPTION\" && textContent) {\n    const isInputMasked = shouldMaskInput({\n      type: null,\n      tagName: parentTagName,\n      maskInputOptions\n    });\n    textContent = maskInputValue({\n      isMasked: needMaskingText(\n        n,\n        maskTextClass,\n        maskTextSelector,\n        unmaskTextClass,\n        unmaskTextSelector,\n        isInputMasked\n      ),\n      element: n,\n      value: textContent,\n      maskInputFn\n    });\n  }\n  return {\n    type: NodeType.Text,\n    textContent: textContent || \"\",\n    isStyle,\n    rootId\n  };\n}\nfunction serializeElementNode(n, options) {\n  const {\n    doc,\n    blockClass,\n    blockSelector,\n    unblockSelector,\n    inlineStylesheet,\n    maskInputOptions = {},\n    maskAttributeFn,\n    maskInputFn,\n    dataURLOptions = {},\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement = false,\n    rootId,\n    maskTextClass,\n    unmaskTextClass,\n    maskTextSelector,\n    unmaskTextSelector,\n    ignoreCSSAttributes\n  } = options;\n  const needBlock = _isBlockedElement(\n    n,\n    blockClass,\n    blockSelector,\n    unblockSelector\n  );\n  const tagName = getValidTagName(n);\n  let attributes2 = {};\n  const len = n.attributes.length;\n  for (let i = 0; i < len; i++) {\n    const attr = n.attributes[i];\n    if (attr.name && !ignoreAttribute(tagName, attr.name, attr.value)) {\n      attributes2[attr.name] = transformAttribute(\n        doc,\n        tagName,\n        toLowerCase(attr.name),\n        attr.value,\n        n,\n        maskAttributeFn,\n        ignoreCSSAttributes\n      );\n    }\n  }\n  if (tagName === \"link\" && inlineStylesheet) {\n    const stylesheet = Array.from(doc.styleSheets).find((s) => {\n      return s.href === n.href;\n    });\n    let cssText = null;\n    if (stylesheet) {\n      cssText = stringifyStylesheet(stylesheet);\n    }\n    if (cssText) {\n      attributes2.rel = null;\n      attributes2.href = null;\n      attributes2.crossorigin = null;\n      attributes2._cssText = absoluteToStylesheet(cssText, stylesheet.href);\n    }\n  }\n  if (tagName === \"style\" && n.sheet && // TODO: Currently we only try to get dynamic stylesheet when it is an empty style element\n  !(n.innerText || n.textContent || \"\").trim().length) {\n    const cssText = stringifyStylesheet(\n      n.sheet\n    );\n    if (cssText) {\n      attributes2._cssText = absoluteToStylesheet(cssText, getHref(doc));\n    }\n  }\n  if (tagName === \"input\" || tagName === \"textarea\" || tagName === \"select\" || tagName === \"option\") {\n    const el = n;\n    const type = getInputType(el);\n    const value = getInputValue(el, toUpperCase(tagName), type);\n    const checked = el.checked;\n    if (type !== \"submit\" && type !== \"button\" && value) {\n      const forceMask = needMaskingText(\n        el,\n        maskTextClass,\n        maskTextSelector,\n        unmaskTextClass,\n        unmaskTextSelector,\n        shouldMaskInput({\n          type,\n          tagName: toUpperCase(tagName),\n          maskInputOptions\n        })\n      );\n      attributes2.value = maskInputValue({\n        isMasked: forceMask,\n        element: el,\n        value,\n        maskInputFn\n      });\n    }\n    if (checked) {\n      attributes2.checked = checked;\n    }\n  }\n  if (tagName === \"option\") {\n    if (n.selected && !maskInputOptions[\"select\"]) {\n      attributes2.selected = true;\n    } else {\n      delete attributes2.selected;\n    }\n  }\n  if (tagName === \"canvas\" && recordCanvas) {\n    if (n.__context === \"2d\") {\n      if (!is2DCanvasBlank(n)) {\n        attributes2.rr_dataURL = n.toDataURL(\n          dataURLOptions.type,\n          dataURLOptions.quality\n        );\n      }\n    } else if (!(\"__context\" in n)) {\n      const canvasDataURL = n.toDataURL(\n        dataURLOptions.type,\n        dataURLOptions.quality\n      );\n      const blankCanvas = doc.createElement(\"canvas\");\n      blankCanvas.width = n.width;\n      blankCanvas.height = n.height;\n      const blankCanvasDataURL = blankCanvas.toDataURL(\n        dataURLOptions.type,\n        dataURLOptions.quality\n      );\n      if (canvasDataURL !== blankCanvasDataURL) {\n        attributes2.rr_dataURL = canvasDataURL;\n      }\n    }\n  }\n  if (tagName === \"img\" && inlineImages) {\n    if (!canvasService) {\n      canvasService = doc.createElement(\"canvas\");\n      canvasCtx = canvasService.getContext(\"2d\");\n    }\n    const image = n;\n    const imageSrc = image.currentSrc || image.getAttribute(\"src\") || \"<unknown-src>\";\n    const priorCrossOrigin = image.crossOrigin;\n    const recordInlineImage = () => {\n      image.removeEventListener(\"load\", recordInlineImage);\n      try {\n        canvasService.width = image.naturalWidth;\n        canvasService.height = image.naturalHeight;\n        canvasCtx.drawImage(image, 0, 0);\n        attributes2.rr_dataURL = canvasService.toDataURL(\n          dataURLOptions.type,\n          dataURLOptions.quality\n        );\n      } catch (err) {\n        if (image.crossOrigin !== \"anonymous\") {\n          image.crossOrigin = \"anonymous\";\n          if (image.complete && image.naturalWidth !== 0)\n            recordInlineImage();\n          else image.addEventListener(\"load\", recordInlineImage);\n          return;\n        } else {\n          console.warn(\n            `Cannot inline img src=${imageSrc}! Error: ${err}`\n          );\n        }\n      }\n      if (image.crossOrigin === \"anonymous\") {\n        priorCrossOrigin ? attributes2.crossOrigin = priorCrossOrigin : image.removeAttribute(\"crossorigin\");\n      }\n    };\n    if (image.complete && image.naturalWidth !== 0) recordInlineImage();\n    else image.addEventListener(\"load\", recordInlineImage);\n  }\n  if (tagName === \"audio\" || tagName === \"video\") {\n    attributes2.rr_mediaState = n.paused ? \"paused\" : \"played\";\n    attributes2.rr_mediaCurrentTime = n.currentTime;\n  }\n  if (!newlyAddedElement) {\n    if (n.scrollLeft) {\n      attributes2.rr_scrollLeft = n.scrollLeft;\n    }\n    if (n.scrollTop) {\n      attributes2.rr_scrollTop = n.scrollTop;\n    }\n  }\n  if (needBlock) {\n    const { width, height } = n.getBoundingClientRect();\n    attributes2 = {\n      class: attributes2.class,\n      rr_width: `${width}px`,\n      rr_height: `${height}px`\n    };\n  }\n  if (tagName === \"iframe\" && !keepIframeSrcFn(attributes2.src)) {\n    if (!needBlock && !getIFrameContentDocument(n)) {\n      attributes2.rr_src = attributes2.src;\n    }\n    delete attributes2.src;\n  }\n  let isCustomElement;\n  try {\n    if (customElements.get(tagName)) isCustomElement = true;\n  } catch (e) {\n  }\n  return {\n    type: NodeType.Element,\n    tagName,\n    attributes: attributes2,\n    childNodes: [],\n    isSVG: isSVGElement(n) || void 0,\n    needBlock,\n    rootId,\n    isCustom: isCustomElement\n  };\n}\nfunction lowerIfExists(maybeAttr) {\n  if (maybeAttr === void 0 || maybeAttr === null) {\n    return \"\";\n  } else {\n    return maybeAttr.toLowerCase();\n  }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n  if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\n    return true;\n  } else if (sn.type === NodeType.Element) {\n    if (slimDOMOptions.script && // script tag\n    (sn.tagName === \"script\" || // (module)preload link\n    sn.tagName === \"link\" && (sn.attributes.rel === \"preload\" || sn.attributes.rel === \"modulepreload\") || // prefetch link\n    sn.tagName === \"link\" && sn.attributes.rel === \"prefetch\" && typeof sn.attributes.href === \"string\" && extractFileExtension(sn.attributes.href) === \"js\")) {\n      return true;\n    } else if (slimDOMOptions.headFavicon && (sn.tagName === \"link\" && sn.attributes.rel === \"shortcut icon\" || sn.tagName === \"meta\" && (lowerIfExists(sn.attributes.name).match(\n      /^msapplication-tile(image|color)$/\n    ) || lowerIfExists(sn.attributes.name) === \"application-name\" || lowerIfExists(sn.attributes.rel) === \"icon\" || lowerIfExists(sn.attributes.rel) === \"apple-touch-icon\" || lowerIfExists(sn.attributes.rel) === \"shortcut icon\"))) {\n      return true;\n    } else if (sn.tagName === \"meta\") {\n      if (slimDOMOptions.headMetaDescKeywords && lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n        return true;\n      } else if (slimDOMOptions.headMetaSocial && (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) || // og = opengraph (facebook)\n      lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) || lowerIfExists(sn.attributes.name) === \"pinterest\")) {\n        return true;\n      } else if (slimDOMOptions.headMetaRobots && (lowerIfExists(sn.attributes.name) === \"robots\" || lowerIfExists(sn.attributes.name) === \"googlebot\" || lowerIfExists(sn.attributes.name) === \"bingbot\")) {\n        return true;\n      } else if (slimDOMOptions.headMetaHttpEquiv && sn.attributes[\"http-equiv\"] !== void 0) {\n        return true;\n      } else if (slimDOMOptions.headMetaAuthorship && (lowerIfExists(sn.attributes.name) === \"author\" || lowerIfExists(sn.attributes.name) === \"generator\" || lowerIfExists(sn.attributes.name) === \"framework\" || lowerIfExists(sn.attributes.name) === \"publisher\" || lowerIfExists(sn.attributes.name) === \"progid\" || lowerIfExists(sn.attributes.property).match(/^article:/) || lowerIfExists(sn.attributes.property).match(/^product:/))) {\n        return true;\n      } else if (slimDOMOptions.headMetaVerification && (lowerIfExists(sn.attributes.name) === \"google-site-verification\" || lowerIfExists(sn.attributes.name) === \"yandex-verification\" || lowerIfExists(sn.attributes.name) === \"csrf-token\" || lowerIfExists(sn.attributes.name) === \"p:domain_verify\" || lowerIfExists(sn.attributes.name) === \"verify-v1\" || lowerIfExists(sn.attributes.name) === \"verification\" || lowerIfExists(sn.attributes.name) === \"shopify-checkout-api-token\")) {\n        return true;\n      }\n    }\n  }\n  return false;\n}\nfunction serializeNodeWithId(n, options) {\n  const {\n    doc,\n    mirror,\n    blockClass,\n    blockSelector,\n    unblockSelector,\n    maskAllText,\n    maskTextClass,\n    unmaskTextClass,\n    maskTextSelector,\n    unmaskTextSelector,\n    skipChild = false,\n    inlineStylesheet = true,\n    maskInputOptions = {},\n    maskAttributeFn,\n    maskTextFn,\n    maskInputFn,\n    slimDOMOptions,\n    dataURLOptions = {},\n    inlineImages = false,\n    recordCanvas = false,\n    onSerialize,\n    onIframeLoad,\n    iframeLoadTimeout = 5e3,\n    onBlockedImageLoad,\n    onStylesheetLoad,\n    stylesheetLoadTimeout = 5e3,\n    keepIframeSrcFn = () => false,\n    newlyAddedElement = false,\n    ignoreCSSAttributes\n  } = options;\n  let { preserveWhiteSpace = true } = options;\n  const _serializedNode = serializeNode(n, {\n    doc,\n    mirror,\n    blockClass,\n    blockSelector,\n    maskAllText,\n    unblockSelector,\n    maskTextClass,\n    unmaskTextClass,\n    maskTextSelector,\n    unmaskTextSelector,\n    inlineStylesheet,\n    maskInputOptions,\n    maskAttributeFn,\n    maskTextFn,\n    maskInputFn,\n    dataURLOptions,\n    inlineImages,\n    recordCanvas,\n    keepIframeSrcFn,\n    newlyAddedElement,\n    ignoreCSSAttributes\n  });\n  if (!_serializedNode) {\n    console.warn(n, \"not serialized\");\n    return null;\n  }\n  let id;\n  if (mirror.hasNode(n)) {\n    id = mirror.getId(n);\n  } else if (slimDOMExcluded(_serializedNode, slimDOMOptions) || !preserveWhiteSpace && _serializedNode.type === NodeType.Text && !_serializedNode.isStyle && !_serializedNode.textContent.trim().length) {\n    id = IGNORED_NODE;\n  } else {\n    id = genId();\n  }\n  const serializedNode2 = Object.assign(_serializedNode, { id });\n  mirror.add(n, serializedNode2);\n  if (id === IGNORED_NODE) {\n    return null;\n  }\n  if (onSerialize) {\n    onSerialize(n);\n  }\n  let recordChild = !skipChild;\n  if (serializedNode2.type === NodeType.Element) {\n    recordChild = recordChild && !serializedNode2.needBlock;\n    const shadowRoot = n.shadowRoot;\n    if (shadowRoot && isNativeShadowDom(shadowRoot))\n      serializedNode2.isShadowHost = true;\n  }\n  if ((serializedNode2.type === NodeType.Document || serializedNode2.type === NodeType.Element) && recordChild) {\n    if (slimDOMOptions.headWhitespace && serializedNode2.type === NodeType.Element && serializedNode2.tagName === \"head\") {\n      preserveWhiteSpace = false;\n    }\n    const bypassOptions = {\n      doc,\n      mirror,\n      blockClass,\n      blockSelector,\n      maskAllText,\n      unblockSelector,\n      maskTextClass,\n      unmaskTextClass,\n      maskTextSelector,\n      unmaskTextSelector,\n      skipChild,\n      inlineStylesheet,\n      maskInputOptions,\n      maskAttributeFn,\n      maskTextFn,\n      maskInputFn,\n      slimDOMOptions,\n      dataURLOptions,\n      inlineImages,\n      recordCanvas,\n      preserveWhiteSpace,\n      onSerialize,\n      onIframeLoad,\n      iframeLoadTimeout,\n      onBlockedImageLoad,\n      onStylesheetLoad,\n      stylesheetLoadTimeout,\n      keepIframeSrcFn,\n      ignoreCSSAttributes\n    };\n    const childNodes = n.childNodes ? Array.from(n.childNodes) : [];\n    for (const childN of childNodes) {\n      const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n      if (serializedChildNode) {\n        serializedNode2.childNodes.push(serializedChildNode);\n      }\n    }\n    if (isElement(n) && n.shadowRoot) {\n      for (const childN of Array.from(n.shadowRoot.childNodes)) {\n        const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n        if (serializedChildNode) {\n          isNativeShadowDom(n.shadowRoot) && (serializedChildNode.isShadow = true);\n          serializedNode2.childNodes.push(serializedChildNode);\n        }\n      }\n    }\n  }\n  if (n.parentNode && isShadowRoot(n.parentNode) && isNativeShadowDom(n.parentNode)) {\n    serializedNode2.isShadow = true;\n  }\n  if (serializedNode2.type === NodeType.Element && serializedNode2.tagName === \"iframe\" && !serializedNode2.needBlock) {\n    onceIframeLoaded(\n      n,\n      () => {\n        const iframeDoc = getIFrameContentDocument(n);\n        if (iframeDoc && onIframeLoad) {\n          const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n            doc: iframeDoc,\n            mirror,\n            blockClass,\n            blockSelector,\n            unblockSelector,\n            maskAllText,\n            maskTextClass,\n            unmaskTextClass,\n            maskTextSelector,\n            unmaskTextSelector,\n            skipChild: false,\n            inlineStylesheet,\n            maskInputOptions,\n            maskAttributeFn,\n            maskTextFn,\n            maskInputFn,\n            slimDOMOptions,\n            dataURLOptions,\n            inlineImages,\n            recordCanvas,\n            preserveWhiteSpace,\n            onSerialize,\n            onIframeLoad,\n            iframeLoadTimeout,\n            onStylesheetLoad,\n            stylesheetLoadTimeout,\n            keepIframeSrcFn,\n            ignoreCSSAttributes\n          });\n          if (serializedIframeNode) {\n            onIframeLoad(\n              n,\n              serializedIframeNode\n            );\n          }\n        }\n      },\n      iframeLoadTimeout\n    );\n  }\n  if (serializedNode2.type === NodeType.Element && serializedNode2.tagName === \"img\" && !n.complete && serializedNode2.needBlock) {\n    const image = n;\n    const updateImageDimensions = () => {\n      if (image.isConnected && !image.complete && onBlockedImageLoad) {\n        try {\n          const rect = image.getBoundingClientRect();\n          if (rect.width > 0 && rect.height > 0) {\n            onBlockedImageLoad(image, serializedNode2, rect);\n          }\n        } catch (error) {\n        }\n      }\n      image.removeEventListener(\"load\", updateImageDimensions);\n    };\n    if (image.isConnected) {\n      image.addEventListener(\"load\", updateImageDimensions);\n    }\n  }\n  if (serializedNode2.type === NodeType.Element && serializedNode2.tagName === \"link\" && typeof serializedNode2.attributes.rel === \"string\" && (serializedNode2.attributes.rel === \"stylesheet\" || serializedNode2.attributes.rel === \"preload\" && typeof serializedNode2.attributes.href === \"string\" && extractFileExtension(serializedNode2.attributes.href) === \"css\")) {\n    onceStylesheetLoaded(\n      n,\n      () => {\n        if (onStylesheetLoad) {\n          const serializedLinkNode = serializeNodeWithId(n, {\n            doc,\n            mirror,\n            blockClass,\n            blockSelector,\n            unblockSelector,\n            maskAllText,\n            maskTextClass,\n            unmaskTextClass,\n            maskTextSelector,\n            unmaskTextSelector,\n            skipChild: false,\n            inlineStylesheet,\n            maskInputOptions,\n            maskAttributeFn,\n            maskTextFn,\n            maskInputFn,\n            slimDOMOptions,\n            dataURLOptions,\n            inlineImages,\n            recordCanvas,\n            preserveWhiteSpace,\n            onSerialize,\n            onIframeLoad,\n            iframeLoadTimeout,\n            onStylesheetLoad,\n            stylesheetLoadTimeout,\n            keepIframeSrcFn,\n            ignoreCSSAttributes\n          });\n          if (serializedLinkNode) {\n            onStylesheetLoad(\n              n,\n              serializedLinkNode\n            );\n          }\n        }\n      },\n      stylesheetLoadTimeout\n    );\n  }\n  if (serializedNode2.type === NodeType.Element) {\n    delete serializedNode2.needBlock;\n  }\n  return serializedNode2;\n}\nfunction snapshot(n, options) {\n  const {\n    mirror = new Mirror(),\n    blockClass = \"rr-block\",\n    blockSelector = null,\n    unblockSelector = null,\n    maskAllText = false,\n    maskTextClass = \"rr-mask\",\n    unmaskTextClass = null,\n    maskTextSelector = null,\n    unmaskTextSelector = null,\n    inlineStylesheet = true,\n    inlineImages = false,\n    recordCanvas = false,\n    maskAllInputs = false,\n    maskAttributeFn,\n    maskTextFn,\n    maskInputFn,\n    slimDOM = false,\n    dataURLOptions,\n    preserveWhiteSpace,\n    onSerialize,\n    onIframeLoad,\n    iframeLoadTimeout,\n    onBlockedImageLoad,\n    onStylesheetLoad,\n    stylesheetLoadTimeout,\n    keepIframeSrcFn = () => false,\n    ignoreCSSAttributes = /* @__PURE__ */ new Set([])\n  } = options || {};\n  const maskInputOptions = maskAllInputs === true ? {\n    color: true,\n    date: true,\n    \"datetime-local\": true,\n    email: true,\n    month: true,\n    number: true,\n    range: true,\n    search: true,\n    tel: true,\n    text: true,\n    time: true,\n    url: true,\n    week: true,\n    textarea: true,\n    select: true\n  } : maskAllInputs === false ? {} : maskAllInputs;\n  const slimDOMOptions = slimDOM === true || slimDOM === \"all\" ? (\n    // if true: set of sensible options that should not throw away any information\n    {\n      script: true,\n      comment: true,\n      headFavicon: true,\n      headWhitespace: true,\n      headMetaDescKeywords: slimDOM === \"all\",\n      // destructive\n      headMetaSocial: true,\n      headMetaRobots: true,\n      headMetaHttpEquiv: true,\n      headMetaAuthorship: true,\n      headMetaVerification: true\n    }\n  ) : slimDOM === false ? {} : slimDOM;\n  return serializeNodeWithId(n, {\n    doc: n,\n    mirror,\n    blockClass,\n    blockSelector,\n    unblockSelector,\n    maskAllText,\n    maskTextClass,\n    unmaskTextClass,\n    maskTextSelector,\n    unmaskTextSelector,\n    skipChild: false,\n    inlineStylesheet,\n    maskInputOptions,\n    maskAttributeFn,\n    maskTextFn,\n    maskInputFn,\n    slimDOMOptions,\n    dataURLOptions,\n    inlineImages,\n    recordCanvas,\n    preserveWhiteSpace,\n    onSerialize,\n    onIframeLoad,\n    iframeLoadTimeout,\n    onBlockedImageLoad,\n    onStylesheetLoad,\n    stylesheetLoadTimeout,\n    keepIframeSrcFn,\n    newlyAddedElement: false,\n    ignoreCSSAttributes\n  });\n}\nfunction visitSnapshot(node, onVisit) {\n  function walk(current) {\n    onVisit(current);\n    if (current.type === NodeType.Document || current.type === NodeType.Element) {\n      current.childNodes.forEach(walk);\n    }\n  }\n  walk(node);\n}\nfunction cleanupSnapshot() {\n  _id = 1;\n}\nconst commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\nfunction parse(css, options = {}) {\n  let lineno = 1;\n  let column = 1;\n  function updatePosition(str) {\n    const lines = str.match(/\\n/g);\n    if (lines) {\n      lineno += lines.length;\n    }\n    const i = str.lastIndexOf(\"\\n\");\n    column = i === -1 ? column + str.length : str.length - i;\n  }\n  function position() {\n    const start = { line: lineno, column };\n    return (node) => {\n      node.position = new Position(start);\n      whitespace();\n      return node;\n    };\n  }\n  const _Position = class _Position {\n    constructor(start) {\n      __publicField(this, \"content\");\n      __publicField(this, \"start\");\n      __publicField(this, \"end\");\n      __publicField(this, \"source\");\n      this.start = start;\n      this.end = { line: lineno, column };\n      this.source = options.source;\n      this.content = _Position.content;\n    }\n  };\n  __publicField(_Position, \"content\");\n  let Position = _Position;\n  Position.content = css;\n  const errorsList = [];\n  function error(msg) {\n    const err = new Error(\n      `${options.source || \"\"}:${lineno}:${column}: ${msg}`\n    );\n    err.reason = msg;\n    err.filename = options.source;\n    err.line = lineno;\n    err.column = column;\n    err.source = css;\n    if (options.silent) {\n      errorsList.push(err);\n    } else {\n      throw err;\n    }\n  }\n  function stylesheet() {\n    const rulesList = rules();\n    return {\n      type: \"stylesheet\",\n      stylesheet: {\n        source: options.source,\n        rules: rulesList,\n        parsingErrors: errorsList\n      }\n    };\n  }\n  function open() {\n    return match(/^{\\s*/);\n  }\n  function close() {\n    return match(/^}/);\n  }\n  function rules() {\n    let node;\n    const rules2 = [];\n    whitespace();\n    comments(rules2);\n    while (css.length && css.charAt(0) !== \"}\" && (node = atrule() || rule())) {\n      if (node) {\n        rules2.push(node);\n        comments(rules2);\n      }\n    }\n    return rules2;\n  }\n  function match(re) {\n    const m = re.exec(css);\n    if (!m) {\n      return;\n    }\n    const str = m[0];\n    updatePosition(str);\n    css = css.slice(str.length);\n    return m;\n  }\n  function whitespace() {\n    match(/^\\s*/);\n  }\n  function comments(rules2 = []) {\n    let c;\n    while (c = comment()) {\n      if (c) {\n        rules2.push(c);\n      }\n      c = comment();\n    }\n    return rules2;\n  }\n  function comment() {\n    const pos = position();\n    if (\"/\" !== css.charAt(0) || \"*\" !== css.charAt(1)) {\n      return;\n    }\n    let i = 2;\n    while (\"\" !== css.charAt(i) && (\"*\" !== css.charAt(i) || \"/\" !== css.charAt(i + 1))) {\n      ++i;\n    }\n    i += 2;\n    if (\"\" === css.charAt(i - 1)) {\n      return error(\"End of comment missing\");\n    }\n    const str = css.slice(2, i - 2);\n    column += 2;\n    updatePosition(str);\n    css = css.slice(i);\n    column += 2;\n    return pos({\n      type: \"comment\",\n      comment: str\n    });\n  }\n  function selector() {\n    const m = match(/^([^{]+)/);\n    if (!m) {\n      return;\n    }\n    const splitSelectors = trim(m[0]).replace(/\\/\\*[\\s\\S]*?\\*\\/+/g, \"\").replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, (m2) => {\n      return m2.replace(/,/g, \"‌\");\n    }).split(/\\s*(?![^(]*\\)),\\s*/);\n    if (splitSelectors.length <= 1) {\n      return splitSelectors.map((s) => {\n        return s.replace(/\\u200C/g, \",\");\n      });\n    }\n    let i = 0;\n    let j = 0;\n    const len = splitSelectors.length;\n    const finalSelectors = [];\n    while (i < len) {\n      const openingParensCount = (splitSelectors[i].match(/\\(/g) || []).length;\n      const closingParensCount = (splitSelectors[i].match(/\\)/g) || []).length;\n      let unbalancedParens = openingParensCount - closingParensCount;\n      if (unbalancedParens >= 1) {\n        let foundClosingSelector = false;\n        j = i + 1;\n        while (j < len) {\n          const nextOpeningParensCount = (splitSelectors[j].match(/\\(/g) || []).length;\n          const nextClosingParensCount = (splitSelectors[j].match(/\\)/g) || []).length;\n          const nextUnbalancedParens = nextClosingParensCount - nextOpeningParensCount;\n          if (nextUnbalancedParens === unbalancedParens) {\n            finalSelectors.push(splitSelectors.slice(i, j + 1).join(\",\"));\n            i = j + 1;\n            foundClosingSelector = true;\n            break;\n          }\n          j++;\n          unbalancedParens -= nextUnbalancedParens;\n        }\n        if (foundClosingSelector) {\n          continue;\n        }\n        splitSelectors.slice(i, len).forEach((selector2) => selector2 && finalSelectors.push(selector2));\n        break;\n      }\n      splitSelectors[i] && finalSelectors.push(splitSelectors[i]);\n      i++;\n    }\n    return finalSelectors.map((s) => {\n      return s.replace(/\\u200C/g, \",\");\n    });\n  }\n  function declaration() {\n    const pos = position();\n    const propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\n    if (!propMatch) {\n      return;\n    }\n    const prop = trim(propMatch[0]);\n    if (!match(/^:\\s*/)) {\n      return error(`property missing ':'`);\n    }\n    const val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\n    const ret = pos({\n      type: \"declaration\",\n      property: prop.replace(commentre, \"\"),\n      value: val ? trim(val[0]).replace(commentre, \"\") : \"\"\n    });\n    match(/^[;\\s]*/);\n    return ret;\n  }\n  function declarations() {\n    const decls = [];\n    if (!open()) {\n      return error(`missing '{'`);\n    }\n    comments(decls);\n    let decl;\n    while (decl = declaration()) {\n      if (decl !== false) {\n        decls.push(decl);\n        comments(decls);\n      }\n      decl = declaration();\n    }\n    if (!close()) {\n      return error(`missing '}'`);\n    }\n    return decls;\n  }\n  function keyframe() {\n    let m;\n    const vals = [];\n    const pos = position();\n    while (m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/)) {\n      vals.push(m[1]);\n      match(/^,\\s*/);\n    }\n    if (!vals.length) {\n      return;\n    }\n    return pos({\n      type: \"keyframe\",\n      values: vals,\n      declarations: declarations()\n    });\n  }\n  function atkeyframes() {\n    const pos = position();\n    let m = match(/^@([-\\w]+)?keyframes\\s*/);\n    if (!m) {\n      return;\n    }\n    const vendor = m[1];\n    m = match(/^([-\\w]+)\\s*/);\n    if (!m) {\n      return error(\"@keyframes missing name\");\n    }\n    const name = m[1];\n    if (!open()) {\n      return error(`@keyframes missing '{'`);\n    }\n    let frame;\n    let frames = comments();\n    while (frame = keyframe()) {\n      frames.push(frame);\n      frames = frames.concat(comments());\n    }\n    if (!close()) {\n      return error(`@keyframes missing '}'`);\n    }\n    return pos({\n      type: \"keyframes\",\n      name,\n      vendor,\n      keyframes: frames\n    });\n  }\n  function atsupports() {\n    const pos = position();\n    const m = match(/^@supports *([^{]+)/);\n    if (!m) {\n      return;\n    }\n    const supports = trim(m[1]);\n    if (!open()) {\n      return error(`@supports missing '{'`);\n    }\n    const style = comments().concat(rules());\n    if (!close()) {\n      return error(`@supports missing '}'`);\n    }\n    return pos({\n      type: \"supports\",\n      supports,\n      rules: style\n    });\n  }\n  function athost() {\n    const pos = position();\n    const m = match(/^@host\\s*/);\n    if (!m) {\n      return;\n    }\n    if (!open()) {\n      return error(`@host missing '{'`);\n    }\n    const style = comments().concat(rules());\n    if (!close()) {\n      return error(`@host missing '}'`);\n    }\n    return pos({\n      type: \"host\",\n      rules: style\n    });\n  }\n  function atmedia() {\n    const pos = position();\n    const m = match(/^@media *([^{]+)/);\n    if (!m) {\n      return;\n    }\n    const media = trim(m[1]);\n    if (!open()) {\n      return error(`@media missing '{'`);\n    }\n    const style = comments().concat(rules());\n    if (!close()) {\n      return error(`@media missing '}'`);\n    }\n    return pos({\n      type: \"media\",\n      media,\n      rules: style\n    });\n  }\n  function atcustommedia() {\n    const pos = position();\n    const m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\n    if (!m) {\n      return;\n    }\n    return pos({\n      type: \"custom-media\",\n      name: trim(m[1]),\n      media: trim(m[2])\n    });\n  }\n  function atpage() {\n    const pos = position();\n    const m = match(/^@page */);\n    if (!m) {\n      return;\n    }\n    const sel = selector() || [];\n    if (!open()) {\n      return error(`@page missing '{'`);\n    }\n    let decls = comments();\n    let decl;\n    while (decl = declaration()) {\n      decls.push(decl);\n      decls = decls.concat(comments());\n    }\n    if (!close()) {\n      return error(`@page missing '}'`);\n    }\n    return pos({\n      type: \"page\",\n      selectors: sel,\n      declarations: decls\n    });\n  }\n  function atdocument() {\n    const pos = position();\n    const m = match(/^@([-\\w]+)?document *([^{]+)/);\n    if (!m) {\n      return;\n    }\n    const vendor = trim(m[1]);\n    const doc = trim(m[2]);\n    if (!open()) {\n      return error(`@document missing '{'`);\n    }\n    const style = comments().concat(rules());\n    if (!close()) {\n      return error(`@document missing '}'`);\n    }\n    return pos({\n      type: \"document\",\n      document: doc,\n      vendor,\n      rules: style\n    });\n  }\n  function atfontface() {\n    const pos = position();\n    const m = match(/^@font-face\\s*/);\n    if (!m) {\n      return;\n    }\n    if (!open()) {\n      return error(`@font-face missing '{'`);\n    }\n    let decls = comments();\n    let decl;\n    while (decl = declaration()) {\n      decls.push(decl);\n      decls = decls.concat(comments());\n    }\n    if (!close()) {\n      return error(`@font-face missing '}'`);\n    }\n    return pos({\n      type: \"font-face\",\n      declarations: decls\n    });\n  }\n  const atimport = _compileAtrule(\"import\");\n  const atcharset = _compileAtrule(\"charset\");\n  const atnamespace = _compileAtrule(\"namespace\");\n  function _compileAtrule(name) {\n    const re = new RegExp(\n      \"^@\" + name + \"\\\\s*((?:\" + [\n        /[^\\\\]\"(?:\\\\\"|[^\"])*\"/.source,\n        // consume any quoted parts (checking that the double quote isn't itself escaped)\n        /[^\\\\]'(?:\\\\'|[^'])*'/.source,\n        // same but for single quotes\n        \"[^;]\"\n      ].join(\"|\") + \")+);\"\n    );\n    return () => {\n      const pos = position();\n      const m = match(re);\n      if (!m) {\n        return;\n      }\n      const ret = { type: name };\n      ret[name] = m[1].trim();\n      return pos(ret);\n    };\n  }\n  function atrule() {\n    if (css[0] !== \"@\") {\n      return;\n    }\n    return atkeyframes() || atmedia() || atcustommedia() || atsupports() || atimport() || atcharset() || atnamespace() || atdocument() || atpage() || athost() || atfontface();\n  }\n  function rule() {\n    const pos = position();\n    const sel = selector();\n    if (!sel) {\n      return error(\"selector missing\");\n    }\n    comments();\n    return pos({\n      type: \"rule\",\n      selectors: sel,\n      declarations: declarations()\n    });\n  }\n  return addParent(stylesheet());\n}\nfunction trim(str) {\n  return str ? str.replace(/^\\s+|\\s+$/g, \"\") : \"\";\n}\nfunction addParent(obj, parent) {\n  const isNode = obj && typeof obj.type === \"string\";\n  const childParent = isNode ? obj : parent;\n  for (const k of Object.keys(obj)) {\n    const value = obj[k];\n    if (Array.isArray(value)) {\n      value.forEach((v) => {\n        addParent(v, childParent);\n      });\n    } else if (value && typeof value === \"object\") {\n      addParent(value, childParent);\n    }\n  }\n  if (isNode) {\n    Object.defineProperty(obj, \"parent\", {\n      configurable: true,\n      writable: true,\n      enumerable: false,\n      value: parent || null\n    });\n  }\n  return obj;\n}\nconst tagMap = {\n  script: \"noscript\",\n  // camel case svg element tag names\n  altglyph: \"altGlyph\",\n  altglyphdef: \"altGlyphDef\",\n  altglyphitem: \"altGlyphItem\",\n  animatecolor: \"animateColor\",\n  animatemotion: \"animateMotion\",\n  animatetransform: \"animateTransform\",\n  clippath: \"clipPath\",\n  feblend: \"feBlend\",\n  fecolormatrix: \"feColorMatrix\",\n  fecomponenttransfer: \"feComponentTransfer\",\n  fecomposite: \"feComposite\",\n  feconvolvematrix: \"feConvolveMatrix\",\n  fediffuselighting: \"feDiffuseLighting\",\n  fedisplacementmap: \"feDisplacementMap\",\n  fedistantlight: \"feDistantLight\",\n  fedropshadow: \"feDropShadow\",\n  feflood: \"feFlood\",\n  fefunca: \"feFuncA\",\n  fefuncb: \"feFuncB\",\n  fefuncg: \"feFuncG\",\n  fefuncr: \"feFuncR\",\n  fegaussianblur: \"feGaussianBlur\",\n  feimage: \"feImage\",\n  femerge: \"feMerge\",\n  femergenode: \"feMergeNode\",\n  femorphology: \"feMorphology\",\n  feoffset: \"feOffset\",\n  fepointlight: \"fePointLight\",\n  fespecularlighting: \"feSpecularLighting\",\n  fespotlight: \"feSpotLight\",\n  fetile: \"feTile\",\n  feturbulence: \"feTurbulence\",\n  foreignobject: \"foreignObject\",\n  glyphref: \"glyphRef\",\n  lineargradient: \"linearGradient\",\n  radialgradient: \"radialGradient\"\n};\nfunction getTagName(n) {\n  let tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\n  if (tagName === \"link\" && n.attributes._cssText) {\n    tagName = \"style\";\n  }\n  return tagName;\n}\nfunction escapeRegExp(str) {\n  return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\nconst HOVER_SELECTOR = /([^\\\\]):hover/;\nconst HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, \"g\");\nfunction addHoverClass(cssText, cache) {\n  const cachedStyle = cache?.stylesWithHoverClass.get(cssText);\n  if (cachedStyle) return cachedStyle;\n  if (cssText.length >= 1e6) {\n    return cssText;\n  }\n  const ast = parse(cssText, {\n    silent: true\n  });\n  if (!ast.stylesheet) {\n    return cssText;\n  }\n  const selectors = [];\n  ast.stylesheet.rules.forEach((rule) => {\n    if (\"selectors\" in rule) {\n      (rule.selectors || []).forEach((selector) => {\n        if (HOVER_SELECTOR.test(selector)) {\n          selectors.push(selector);\n        }\n      });\n    }\n  });\n  if (selectors.length === 0) {\n    return cssText;\n  }\n  const selectorMatcher = new RegExp(\n    selectors.filter((selector, index) => selectors.indexOf(selector) === index).sort((a, b) => b.length - a.length).map((selector) => {\n      return escapeRegExp(selector);\n    }).join(\"|\"),\n    \"g\"\n  );\n  const result = cssText.replace(selectorMatcher, (selector) => {\n    const newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, \"$1.\\\\:hover\");\n    return `${selector}, ${newSelector}`;\n  });\n  cache?.stylesWithHoverClass.set(cssText, result);\n  return result;\n}\nfunction createCache() {\n  const stylesWithHoverClass = /* @__PURE__ */ new Map();\n  return {\n    stylesWithHoverClass\n  };\n}\nfunction buildNode(n, options) {\n  const { doc, hackCss, cache } = options;\n  switch (n.type) {\n    case NodeType.Document:\n      return doc.implementation.createDocument(null, \"\", null);\n    case NodeType.DocumentType:\n      return doc.implementation.createDocumentType(\n        n.name || \"html\",\n        n.publicId,\n        n.systemId\n      );\n    case NodeType.Element: {\n      const tagName = getTagName(n);\n      let node;\n      if (n.isSVG) {\n        node = doc.createElementNS(\"http://www.w3.org/2000/svg\", tagName);\n      } else {\n        if (\n          // If the tag name is a custom element name\n          n.isCustom && // If the browser supports custom elements\n          doc.defaultView?.customElements && // If the custom element hasn't been defined yet\n          !doc.defaultView.customElements.get(n.tagName)\n        )\n          try {\n            doc.defaultView.customElements.define(\n              n.tagName,\n              class extends doc.defaultView.HTMLElement {\n              }\n            );\n          } catch (e) {\n            console.warn(\"Cannot define custom element\", e);\n          }\n        node = doc.createElement(tagName);\n      }\n      const specialAttributes = {};\n      for (const name in n.attributes) {\n        if (!Object.prototype.hasOwnProperty.call(n.attributes, name)) {\n          continue;\n        }\n        let value = n.attributes[name];\n        if (tagName === \"option\" && name === \"selected\" && value === false) {\n          continue;\n        }\n        if (value === null) {\n          continue;\n        }\n        if (value === true) value = \"\";\n        if (name.startsWith(\"rr_\")) {\n          specialAttributes[name] = value;\n          continue;\n        }\n        const isTextarea = tagName === \"textarea\" && name === \"value\";\n        const isRemoteOrDynamicCss = tagName === \"style\" && name === \"_cssText\";\n        if (isRemoteOrDynamicCss && hackCss && typeof value === \"string\") {\n          value = addHoverClass(value, cache);\n        }\n        if ((isTextarea || isRemoteOrDynamicCss) && typeof value === \"string\") {\n          const child = doc.createTextNode(value);\n          for (const c of Array.from(node.childNodes)) {\n            if (c.nodeType === node.TEXT_NODE) {\n              node.removeChild(c);\n            }\n          }\n          node.appendChild(child);\n          continue;\n        }\n        try {\n          if (n.isSVG && name === \"xlink:href\") {\n            node.setAttributeNS(\n              \"http://www.w3.org/1999/xlink\",\n              name,\n              value.toString()\n            );\n          } else if (name === \"onload\" || name === \"onclick\" || name.substring(0, 7) === \"onmouse\") {\n            node.setAttribute(\"_\" + name, value.toString());\n          } else if (tagName === \"meta\" && n.attributes[\"http-equiv\"] === \"Content-Security-Policy\" && name === \"content\") {\n            node.setAttribute(\"csp-content\", value.toString());\n            continue;\n          } else if (tagName === \"link\" && (n.attributes.rel === \"preload\" || n.attributes.rel === \"modulepreload\")) {\n          } else if (tagName === \"link\" && n.attributes.rel === \"prefetch\" && typeof n.attributes.href === \"string\" && extractFileExtension(n.attributes.href) === \"js\") {\n          } else if (tagName === \"img\" && n.attributes.srcset && n.attributes.rr_dataURL) {\n            node.setAttribute(\n              \"rrweb-original-srcset\",\n              n.attributes.srcset\n            );\n          } else {\n            node.setAttribute(name, value.toString());\n          }\n        } catch (error) {\n        }\n      }\n      for (const name in specialAttributes) {\n        const value = specialAttributes[name];\n        if (tagName === \"canvas\" && name === \"rr_dataURL\") {\n          const image = doc.createElement(\"img\");\n          image.onload = () => {\n            const ctx = node.getContext(\"2d\");\n            if (ctx) {\n              ctx.drawImage(image, 0, 0, image.width, image.height);\n            }\n          };\n          image.src = value.toString();\n          if (node.RRNodeType)\n            node.rr_dataURL = value.toString();\n        } else if (tagName === \"img\" && name === \"rr_dataURL\") {\n          const image = node;\n          if (!image.currentSrc.startsWith(\"data:\")) {\n            image.setAttribute(\n              \"rrweb-original-src\",\n              n.attributes.src\n            );\n            image.src = value.toString();\n          }\n        }\n        if (name === \"rr_width\") {\n          node.style.setProperty(\"width\", value.toString());\n        } else if (name === \"rr_height\") {\n          node.style.setProperty(\"height\", value.toString());\n        } else if (name === \"rr_mediaCurrentTime\" && typeof value === \"number\") {\n          node.currentTime = value;\n        } else if (name === \"rr_mediaState\") {\n          switch (value) {\n            case \"played\":\n              node.play().catch((e) => console.warn(\"media playback error\", e));\n              break;\n            case \"paused\":\n              node.pause();\n              break;\n          }\n        }\n      }\n      if (n.isShadowHost) {\n        if (!node.shadowRoot) {\n          node.attachShadow({ mode: \"open\" });\n        } else {\n          while (node.shadowRoot.firstChild) {\n            node.shadowRoot.removeChild(node.shadowRoot.firstChild);\n          }\n        }\n      }\n      return node;\n    }\n    case NodeType.Text:\n      return doc.createTextNode(\n        n.isStyle && hackCss ? addHoverClass(n.textContent, cache) : n.textContent\n      );\n    case NodeType.CDATA:\n      if (!(doc instanceof XMLDocument)) {\n        return null;\n      }\n      return doc.createCDATASection(n.textContent);\n    case NodeType.Comment:\n      return doc.createComment(n.textContent);\n    default:\n      return null;\n  }\n}\nfunction buildNodeWithSN(n, options) {\n  const {\n    doc,\n    mirror,\n    skipChild = false,\n    hackCss = true,\n    afterAppend,\n    cache\n  } = options;\n  if (mirror.has(n.id)) {\n    const nodeInMirror = mirror.getNode(n.id);\n    const meta = mirror.getMeta(nodeInMirror);\n    if (isNodeMetaEqual(meta, n)) return mirror.getNode(n.id);\n  }\n  let node = buildNode(n, { doc, hackCss, cache });\n  if (!node) {\n    return null;\n  }\n  if (n.rootId && mirror.getNode(n.rootId) !== doc) {\n    mirror.replace(n.rootId, doc);\n  }\n  if (n.type === NodeType.Document) {\n    doc.close();\n    doc.open();\n    if (n.compatMode === \"BackCompat\" && n.childNodes && n.childNodes[0].type !== NodeType.DocumentType) {\n      if (n.childNodes[0].type === NodeType.Element && \"xmlns\" in n.childNodes[0].attributes && n.childNodes[0].attributes.xmlns === \"http://www.w3.org/1999/xhtml\") {\n        doc.write(\n          '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">'\n        );\n      } else {\n        doc.write(\n          '<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">'\n        );\n      }\n    }\n    node = doc;\n  }\n  mirror.add(node, n);\n  if ((n.type === NodeType.Document || n.type === NodeType.Element) && !skipChild) {\n    for (const childN of n.childNodes) {\n      const childNode = buildNodeWithSN(childN, {\n        doc,\n        mirror,\n        skipChild: false,\n        hackCss,\n        afterAppend,\n        cache\n      });\n      if (!childNode) {\n        console.warn(\"Failed to rebuild\", childN);\n        continue;\n      }\n      if (childN.isShadow && isElement(node) && node.shadowRoot) {\n        node.shadowRoot.appendChild(childNode);\n      } else if (n.type === NodeType.Document && childN.type == NodeType.Element) {\n        const htmlElement = childNode;\n        let body = null;\n        htmlElement.childNodes.forEach((child) => {\n          if (child.nodeName === \"BODY\") body = child;\n        });\n        if (body) {\n          htmlElement.removeChild(body);\n          node.appendChild(childNode);\n          htmlElement.appendChild(body);\n        } else {\n          node.appendChild(childNode);\n        }\n      } else {\n        node.appendChild(childNode);\n      }\n      if (afterAppend) {\n        afterAppend(childNode, childN.id);\n      }\n    }\n  }\n  return node;\n}\nfunction visit(mirror, onVisit) {\n  function walk(node) {\n    onVisit(node);\n  }\n  for (const id of mirror.getIds()) {\n    if (mirror.has(id)) {\n      walk(mirror.getNode(id));\n    }\n  }\n}\nfunction handleScroll(node, mirror) {\n  const n = mirror.getMeta(node);\n  if (n?.type !== NodeType.Element) {\n    return;\n  }\n  const el = node;\n  for (const name in n.attributes) {\n    if (!(Object.prototype.hasOwnProperty.call(n.attributes, name) && name.startsWith(\"rr_\"))) {\n      continue;\n    }\n    const value = n.attributes[name];\n    if (name === \"rr_scrollLeft\") {\n      el.scrollLeft = value;\n    }\n    if (name === \"rr_scrollTop\") {\n      el.scrollTop = value;\n    }\n  }\n}\nfunction rebuild(n, options) {\n  const {\n    doc,\n    onVisit,\n    hackCss = true,\n    afterAppend,\n    cache,\n    mirror = new Mirror()\n  } = options;\n  const node = buildNodeWithSN(n, {\n    doc,\n    mirror,\n    skipChild: false,\n    hackCss,\n    afterAppend,\n    cache\n  });\n  visit(mirror, (visitedNode) => {\n    if (onVisit) {\n      onVisit(visitedNode);\n    }\n    handleScroll(visitedNode, mirror);\n  });\n  return node;\n}\nexport {\n  IGNORED_NODE,\n  Mirror,\n  NodeType,\n  addHoverClass,\n  buildNodeWithSN,\n  classMatchesRegex,\n  cleanupSnapshot,\n  clearTimeout,\n  createCache,\n  createMatchPredicate,\n  createMirror,\n  distanceToMatch,\n  escapeImportStatement,\n  extractFileExtension,\n  filterCSSPropertiesFromInlineStyle,\n  fixAllCssProperty,\n  fixSafariColons,\n  genId,\n  getIFrameContentDocument,\n  getIFrameContentWindow,\n  getInputType,\n  getInputValue,\n  ignoreAttribute,\n  is2DCanvasBlank,\n  isCSSImportRule,\n  isCSSStyleRule,\n  isElement,\n  isNativeShadowDom,\n  isNodeMetaEqual,\n  isShadowRoot,\n  maskInputValue,\n  needMaskingText,\n  onRequestAnimationFrame,\n  rebuild,\n  serializeNodeWithId,\n  setTimeout,\n  shouldMaskInput,\n  snapshot,\n  stringifyRule,\n  stringifyStylesheet,\n  toLowerCase,\n  toUpperCase,\n  transformAttribute,\n  visitSnapshot\n};\n//# sourceMappingURL=rrweb-snapshot.js.map\n", "import type {\n  throttleOptions,\n  listenerHandler,\n  hookResetter,\n  blockClass,\n  addedNodeMutation,\n  DocumentDimension,\n  IWindow,\n  DeprecatedMirror,\n  textMutation,\n} from '@sentry-internal/rrweb-types';\nimport type { IMirror, Mirror } from '@sentry-internal/rrweb-snapshot';\nimport {\n  createMatchPredicate,\n  distanceToMatch,\n} from '@sentry-internal/rrweb-snapshot';\nimport { isShadowRoot, IGNORED_NODE } from '@sentry-internal/rrweb-snapshot';\nimport type { RRNode, RRIFrameElement } from '@sentry-internal/rrdom';\n\nexport function on(\n  type: string,\n  fn: EventListenerOrEventListenerObject,\n  target: Document | IWindow = document,\n): listenerHandler {\n  const options = { capture: true, passive: true };\n  target.addEventListener(type, fn, options);\n  return () => target.removeEventListener(type, fn, options);\n}\n\n// https://github.com/rrweb-io/rrweb/pull/407\nconst DEPARTED_MIRROR_ACCESS_WARNING =\n  'Please stop import mirror directly. Instead of that,' +\n  '\\r\\n' +\n  'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\n  '\\r\\n' +\n  'or you can use record.mirror to access the mirror instance during recording.';\n/** @deprecated */\nexport let _mirror: DeprecatedMirror = {\n  map: {},\n  getId() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    return -1;\n  },\n  getNode() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    return null;\n  },\n  removeNodeFromMap() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n  },\n  has() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n    return false;\n  },\n  reset() {\n    console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n  },\n};\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\n  _mirror = new Proxy(_mirror, {\n    get(target, prop, receiver) {\n      if (prop === 'map') {\n        console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n      }\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n      return Reflect.get(target, prop, receiver);\n    },\n  });\n}\n\n// copy from underscore and modified\nexport function throttle<T>(\n  func: (arg: T) => void,\n  wait: number,\n  options: throttleOptions = {},\n) {\n  let timeout: ReturnType<typeof setTimeout> | null = null;\n  let previous = 0;\n  return function (...args: T[]) {\n    const now = Date.now();\n    if (!previous && options.leading === false) {\n      previous = now;\n    }\n    const remaining = wait - (now - previous);\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-this-alias\n    const context = this;\n    if (remaining <= 0 || remaining > wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n      previous = now;\n      func.apply(context, args);\n    } else if (!timeout && options.trailing !== false) {\n      timeout = setTimeout(() => {\n        previous = options.leading === false ? 0 : Date.now();\n        timeout = null;\n        func.apply(context, args);\n      }, remaining);\n    }\n  };\n}\n\nexport function hookSetter<T>(\n  target: T,\n  key: string | number | symbol,\n  d: PropertyDescriptor,\n  isRevoked?: boolean,\n  win = window,\n): hookResetter {\n  const original = win.Object.getOwnPropertyDescriptor(target, key);\n  win.Object.defineProperty(\n    target,\n    key,\n    isRevoked\n      ? d\n      : {\n          set(value) {\n            // put hooked setter into event loop to avoid of set latency\n            setTimeout(() => {\n              d.set!.call(this, value);\n            }, 0);\n            if (original && original.set) {\n              original.set.call(this, value);\n            }\n          },\n        },\n  );\n  return () => hookSetter(target, key, original || {}, true);\n}\n\n// copy from https://github.com/getsentry/sentry-javascript/blob/b2109071975af8bf0316d3b5b38f519bdaf5dc15/packages/utils/src/object.ts\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 (typeof wrapped === 'function') {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n      wrapped.prototype = wrapped.prototype || {};\n      Object.defineProperties(wrapped, {\n        __rrweb_original__: {\n          enumerable: false,\n          value: original,\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\n// guard against old third party libraries which redefine Date.now\nlet nowTimestamp = Date.now;\n\nif (!(/*@__PURE__*/ /[1-9][0-9]{12}/.test(Date.now().toString()))) {\n  // they have already redefined it! use a fallback\n  nowTimestamp = () => new Date().getTime();\n}\nexport { nowTimestamp };\n\nexport function getWindowScroll(win: Window) {\n  const doc = win.document;\n  return {\n    left: doc.scrollingElement\n      ? doc.scrollingElement.scrollLeft\n      : win.pageXOffset !== undefined\n      ? win.pageXOffset\n      : doc?.documentElement.scrollLeft ||\n        doc?.body?.parentElement?.scrollLeft ||\n        doc?.body?.scrollLeft ||\n        0,\n    top: doc.scrollingElement\n      ? doc.scrollingElement.scrollTop\n      : win.pageYOffset !== undefined\n      ? win.pageYOffset\n      : doc?.documentElement.scrollTop ||\n        doc?.body?.parentElement?.scrollTop ||\n        doc?.body?.scrollTop ||\n        0,\n  };\n}\n\nexport function getWindowHeight(): number {\n  return (\n    window.innerHeight ||\n    (document.documentElement && document.documentElement.clientHeight) ||\n    (document.body && document.body.clientHeight)\n  );\n}\n\nexport function getWindowWidth(): number {\n  return (\n    window.innerWidth ||\n    (document.documentElement && document.documentElement.clientWidth) ||\n    (document.body && document.body.clientWidth)\n  );\n}\n\n/**\n * Returns the given node as an HTMLElement if it is one, otherwise the parent node as an HTMLElement\n * @param node - node to check\n * @returns HTMLElement or null\n */\n\nexport function closestElementOfNode(node: Node | null): HTMLElement | null {\n  if (!node) {\n    return null;\n  }\n\n  // Catch access to node properties to avoid Firefox \"permission denied\" errors\n  try {\n    const el: HTMLElement | null =\n      node.nodeType === node.ELEMENT_NODE\n        ? (node as HTMLElement)\n        : node.parentElement;\n    return el;\n  } catch (error) {\n    return null;\n  }\n}\n\n/**\n * Checks if the given element set to be blocked by rrweb\n * @param node - node to check\n * @param blockClass - class name to check\n * @param blockSelector - css selectors to check\n * @param checkAncestors - whether to search through parent nodes for the block class\n * @returns true/false if the node was blocked or not\n */\nexport function isBlocked(\n  node: Node | null,\n  blockClass: blockClass,\n  blockSelector: string | null,\n  unblockSelector: string | null,\n  checkAncestors: boolean,\n): boolean {\n  if (!node) {\n    return false;\n  }\n  const el = closestElementOfNode(node);\n\n  if (!el) {\n    return false;\n  }\n\n  const blockedPredicate = createMatchPredicate(blockClass, blockSelector);\n\n  if (!checkAncestors) {\n    const isUnblocked = unblockSelector && el.matches(unblockSelector);\n\n    return blockedPredicate(el) && !isUnblocked;\n  }\n\n  const blockDistance = distanceToMatch(el, blockedPredicate);\n  let unblockDistance = -1;\n\n  if (blockDistance < 0) {\n    return false;\n  }\n\n  if (unblockSelector) {\n    unblockDistance = distanceToMatch(\n      el,\n      createMatchPredicate(null, unblockSelector),\n    );\n  }\n\n  if (blockDistance > -1 && unblockDistance < 0) {\n    return true;\n  }\n\n  return blockDistance < unblockDistance;\n}\n\nexport function isSerialized(n: Node, mirror: Mirror): boolean {\n  return mirror.getId(n) !== -1;\n}\n\nexport function isIgnored(n: Node, mirror: Mirror): boolean {\n  // The main part of the slimDOM check happens in\n  // rrweb-snapshot::serializeNodeWithId\n  return mirror.getId(n) === IGNORED_NODE;\n}\n\nexport function isAncestorRemoved(target: Node, mirror: Mirror): boolean {\n  if (isShadowRoot(target)) {\n    return false;\n  }\n  const id = mirror.getId(target);\n  if (!mirror.has(id)) {\n    return true;\n  }\n  if (\n    target.parentNode &&\n    target.parentNode.nodeType === target.DOCUMENT_NODE\n  ) {\n    return false;\n  }\n  // if the root is not document, it means the node is not in the DOM tree anymore\n  if (!target.parentNode) {\n    return true;\n  }\n  return isAncestorRemoved(target.parentNode, mirror);\n}\n\nexport function legacy_isTouchEvent(\n  event: MouseEvent | TouchEvent | PointerEvent,\n): event is TouchEvent {\n  return Boolean((event as TouchEvent).changedTouches);\n}\n\nexport function polyfill(win = window) {\n  if ('NodeList' in win && !win.NodeList.prototype.forEach) {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    win.NodeList.prototype.forEach = Array.prototype\n      .forEach as unknown as NodeList['forEach'];\n  }\n\n  if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    win.DOMTokenList.prototype.forEach = Array.prototype\n      .forEach as unknown as DOMTokenList['forEach'];\n  }\n\n  // https://github.com/Financial-Times/polyfill-service/pull/183\n  if (!Node.prototype.contains) {\n    Node.prototype.contains = (...args: unknown[]) => {\n      let node = args[0] as Node | null;\n      if (!(0 in args)) {\n        throw new TypeError('1 argument is required');\n      }\n\n      do {\n        if (this === node) {\n          return true;\n        }\n      } while ((node = node && node.parentNode));\n\n      return false;\n    };\n  }\n}\n\ntype ResolveTree = {\n  value: addedNodeMutation;\n  children: ResolveTree[];\n  parent: ResolveTree | null;\n};\n\nexport function queueToResolveTrees(queue: addedNodeMutation[]): ResolveTree[] {\n  const queueNodeMap: Record<number, ResolveTree> = {};\n  const putIntoMap = (\n    m: addedNodeMutation,\n    parent: ResolveTree | null,\n  ): ResolveTree => {\n    const nodeInTree: ResolveTree = {\n      value: m,\n      parent,\n      children: [],\n    };\n    queueNodeMap[m.node.id] = nodeInTree;\n    return nodeInTree;\n  };\n\n  const queueNodeTrees: ResolveTree[] = [];\n  for (const mutation of queue) {\n    const { nextId, parentId } = mutation;\n    if (nextId && nextId in queueNodeMap) {\n      const nextInTree = queueNodeMap[nextId];\n      if (nextInTree.parent) {\n        const idx = nextInTree.parent.children.indexOf(nextInTree);\n        nextInTree.parent.children.splice(\n          idx,\n          0,\n          putIntoMap(mutation, nextInTree.parent),\n        );\n      } else {\n        const idx = queueNodeTrees.indexOf(nextInTree);\n        queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\n      }\n      continue;\n    }\n    if (parentId in queueNodeMap) {\n      const parentInTree = queueNodeMap[parentId];\n      parentInTree.children.push(putIntoMap(mutation, parentInTree));\n      continue;\n    }\n    queueNodeTrees.push(putIntoMap(mutation, null));\n  }\n\n  return queueNodeTrees;\n}\n\nexport function iterateResolveTree(\n  tree: ResolveTree,\n  cb: (mutation: addedNodeMutation) => unknown,\n) {\n  cb(tree.value);\n  /**\n   * The resolve tree was designed to reflect the DOM layout,\n   * but we need append next sibling first, so we do a reverse\n   * loop here.\n   */\n  for (let i = tree.children.length - 1; i >= 0; i--) {\n    iterateResolveTree(tree.children[i], cb);\n  }\n}\n\nexport type AppendedIframe = {\n  mutationInQueue: addedNodeMutation;\n  builtNode: HTMLIFrameElement | RRIFrameElement;\n};\n\nexport function isSerializedIframe<TNode extends Node | RRNode>(\n  n: TNode,\n  mirror: IMirror<TNode>,\n): boolean {\n  return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\n}\n\nexport function isSerializedStylesheet<TNode extends Node | RRNode>(\n  n: TNode,\n  mirror: IMirror<TNode>,\n): boolean {\n  return Boolean(\n    n.nodeName === 'LINK' &&\n      n.nodeType === n.ELEMENT_NODE &&\n      (n as HTMLElement).getAttribute &&\n      (n as HTMLElement).getAttribute('rel') === 'stylesheet' &&\n      mirror.getMeta(n),\n  );\n}\n\nexport function getBaseDimension(\n  node: Node,\n  rootIframe: Node,\n): DocumentDimension {\n  const frameElement = node.ownerDocument?.defaultView?.frameElement;\n  if (!frameElement || frameElement === rootIframe) {\n    return {\n      x: 0,\n      y: 0,\n      relativeScale: 1,\n      absoluteScale: 1,\n    };\n  }\n\n  const frameDimension = frameElement.getBoundingClientRect();\n  const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\n  // the iframe element may have a scale transform\n  const relativeScale = frameDimension.height / frameElement.clientHeight;\n  return {\n    x:\n      frameDimension.x * frameBaseDimension.relativeScale +\n      frameBaseDimension.x,\n    y:\n      frameDimension.y * frameBaseDimension.relativeScale +\n      frameBaseDimension.y,\n    relativeScale,\n    absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\n  };\n}\n\nexport function hasShadowRoot<T extends Node | RRNode>(\n  n: T,\n): n is T & { shadowRoot: ShadowRoot } {\n  return Boolean((n as unknown as Element)?.shadowRoot);\n}\n\nexport function getNestedRule(\n  rules: CSSRuleList,\n  position: number[],\n): CSSGroupingRule {\n  const rule = rules[position[0]] as CSSGroupingRule;\n  if (position.length === 1) {\n    return rule;\n  } else {\n    return getNestedRule(\n      (rule.cssRules[position[1]] as CSSGroupingRule).cssRules,\n      position.slice(2),\n    );\n  }\n}\n\nexport function getPositionsAndIndex(nestedIndex: number[]) {\n  const positions = [...nestedIndex];\n  const index = positions.pop();\n  return { positions, index };\n}\n\n/**\n * Returns the latest mutation in the queue for each node.\n * @param mutations - mutations The text mutations to filter.\n * @returns The filtered text mutations.\n */\nexport function uniqueTextMutations(mutations: textMutation[]): textMutation[] {\n  const idSet = new Set<number>();\n  const uniqueMutations: textMutation[] = [];\n\n  for (let i = mutations.length; i--; ) {\n    const mutation = mutations[i];\n    if (!idSet.has(mutation.id)) {\n      uniqueMutations.push(mutation);\n      idSet.add(mutation.id);\n    }\n  }\n\n  return uniqueMutations;\n}\n\nexport class StyleSheetMirror {\n  private id = 1;\n  private styleIDMap = new WeakMap<CSSStyleSheet, number>();\n  private idStyleMap = new Map<number, CSSStyleSheet>();\n\n  getId(stylesheet: CSSStyleSheet): number {\n    return this.styleIDMap.get(stylesheet) ?? -1;\n  }\n\n  has(stylesheet: CSSStyleSheet): boolean {\n    return this.styleIDMap.has(stylesheet);\n  }\n\n  /**\n   * @returns If the stylesheet is in the mirror, returns the id of the stylesheet. If not, return the new assigned id.\n   */\n  add(stylesheet: CSSStyleSheet, id?: number): number {\n    if (this.has(stylesheet)) return this.getId(stylesheet);\n    let newId: number;\n    if (id === undefined) {\n      newId = this.id++;\n    } else newId = id;\n    this.styleIDMap.set(stylesheet, newId);\n    this.idStyleMap.set(newId, stylesheet);\n    return newId;\n  }\n\n  getStyle(id: number): CSSStyleSheet | null {\n    return this.idStyleMap.get(id) || null;\n  }\n\n  reset(): void {\n    this.styleIDMap = new WeakMap();\n    this.idStyleMap = new Map();\n    this.id = 1;\n  }\n\n  generateId(): number {\n    return this.id++;\n  }\n}\n\n/**\n * Get the direct shadow host of a node in shadow dom. Returns null if it is not in a shadow dom.\n */\nexport function getShadowHost(n: Node): Element | null {\n  let shadowHost: Element | null = null;\n  if (\n    n.getRootNode?.()?.nodeType === Node.DOCUMENT_FRAGMENT_NODE &&\n    (n.getRootNode() as ShadowRoot).host\n  )\n    shadowHost = (n.getRootNode() as ShadowRoot).host;\n  return shadowHost;\n}\n\n/**\n * Get the root shadow host of a node in nested shadow doms. Returns the node itself if it is not in a shadow dom.\n */\nexport function getRootShadowHost(n: Node): Node {\n  let rootShadowHost: Node = n;\n\n  let shadowHost: Element | null;\n  // If n is in a nested shadow dom.\n  while ((shadowHost = getShadowHost(rootShadowHost)))\n    rootShadowHost = shadowHost;\n\n  return rootShadowHost;\n}\n\nexport function shadowHostInDom(n: Node): boolean {\n  const doc = n.ownerDocument;\n  if (!doc) return false;\n  const shadowHost = getRootShadowHost(n);\n  return doc.contains(shadowHost);\n}\n\nexport function inDom(n: Node): boolean {\n  const doc = n.ownerDocument;\n  if (!doc) return false;\n  return doc.contains(n) || shadowHostInDom(n);\n}\n\n/**\n * We generally want to use window.requestAnimationFrame / window.setTimeout / window.clearTimeout.\n * However, in some cases this may be wrapped (e.g. by Zone.js for Angular),\n * so we try to get an unpatched version of this from a sandboxed iframe.\n */\n\ninterface CacheableImplementations {\n  requestAnimationFrame: typeof requestAnimationFrame;\n  setTimeout: typeof setTimeout;\n  clearTimeout: typeof clearTimeout;\n}\n\nconst cachedImplementations: Partial<CacheableImplementations> = {};\n\nfunction getImplementation<T extends keyof CacheableImplementations>(\n  name: T,\n): CacheableImplementations[T] {\n  const cached = cachedImplementations[name];\n  if (cached) {\n    return cached;\n  }\n\n  const document = window.document;\n  let impl = window[name] as CacheableImplementations[T];\n  if (document && typeof document.createElement === 'function') {\n    try {\n      const sandbox = document.createElement('iframe');\n      sandbox.hidden = true;\n      document.head.appendChild(sandbox);\n      const contentWindow = sandbox.contentWindow;\n      if (contentWindow && contentWindow[name]) {\n        impl =\n          // eslint-disable-next-line @typescript-eslint/unbound-method\n          contentWindow[name] as CacheableImplementations[T];\n      }\n      document.head.removeChild(sandbox);\n    } catch (e) {\n      // Could not create sandbox iframe, just use window.xxx\n    }\n  }\n\n  return (cachedImplementations[name] = impl.bind(\n    window,\n  ) as CacheableImplementations[T]);\n}\n\nexport function onRequestAnimationFrame(\n  ...rest: Parameters<typeof requestAnimationFrame>\n): ReturnType<typeof requestAnimationFrame> {\n  return getImplementation('requestAnimationFrame')(...rest);\n}\n\nexport function setTimeout(\n  ...rest: Parameters<typeof window.setTimeout>\n): ReturnType<typeof window.setTimeout> {\n  return getImplementation('setTimeout')(...rest);\n}\n\nexport function clearTimeout(\n  ...rest: Parameters<typeof window.clearTimeout>\n): ReturnType<typeof window.clearTimeout> {\n  return getImplementation('clearTimeout')(...rest);\n}\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 MediaInteractions = /* @__PURE__ */ ((MediaInteractions2) => {\n  MediaInteractions2[MediaInteractions2[\"Play\"] = 0] = \"Play\";\n  MediaInteractions2[MediaInteractions2[\"Pause\"] = 1] = \"Pause\";\n  MediaInteractions2[MediaInteractions2[\"Seeked\"] = 2] = \"Seeked\";\n  MediaInteractions2[MediaInteractions2[\"VolumeChange\"] = 3] = \"VolumeChange\";\n  MediaInteractions2[MediaInteractions2[\"RateChange\"] = 4] = \"RateChange\";\n  return MediaInteractions2;\n})(MediaInteractions || {});\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 || {});\nexport {\n  CanvasContext,\n  EventType,\n  IncrementalSource,\n  MediaInteractions,\n  MouseInteractions,\n  PointerTypes,\n  ReplayerEvents\n};\n//# sourceMappingURL=rrweb-types.js.map\n", "import type { ErrorHandler } from '../types';\n\ntype Callback = (...args: unknown[]) => unknown;\n\nlet errorHandler: ErrorHandler | undefined;\n\nexport function registerErrorHandler(handler: ErrorHandler | undefined) {\n  errorHandler = handler;\n}\n\nexport function unregisterErrorHandler() {\n  errorHandler = undefined;\n}\n\n/**\n * Wrap callbacks in a wrapper that allows to pass errors to a configured `errorHandler` method.\n */\nexport const callbackWrapper = <T extends Callback>(cb: T): T => {\n  if (!errorHandler) {\n    return cb;\n  }\n\n  const rrwebWrapped = ((...rest: unknown[]) => {\n    try {\n      return cb(...rest);\n    } catch (error) {\n      if (errorHandler && errorHandler(error) === true) {\n        return () => {\n          // This will get called by `record()`'s cleanup function\n        };\n      }\n\n      throw error;\n    }\n  }) as unknown as T;\n\n  return rrwebWrapped;\n};\n", "/*\n * base64-arraybuffer 1.0.2 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2022 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//# sourceMappingURL=base64-arraybuffer.es5.js.map\n", "import { encode } from 'base64-arraybuffer';\nimport type { IWindow, CanvasArg } from '@sentry-internal/rrweb-types';\n\n// TODO: unify with `replay/webgl.ts`\ntype CanvasVarMap = Map<string, unknown[]>;\nconst canvasVarMap: Map<RenderingContext, CanvasVarMap> = new Map();\nexport function variableListFor(ctx: RenderingContext, ctor: string) {\n  let contextMap = canvasVarMap.get(ctx);\n  if (!contextMap) {\n    contextMap = new Map();\n    canvasVarMap.set(ctx, contextMap);\n  }\n  if (!contextMap.has(ctor)) {\n    contextMap.set(ctor, []);\n  }\n  return contextMap.get(ctor) as unknown[];\n}\n\nexport const saveWebGLVar = (\n  value: unknown,\n  win: IWindow,\n  ctx: RenderingContext,\n): number | void => {\n  if (\n    !value ||\n    !(isInstanceOfWebGLObject(value, win) || typeof value === 'object')\n  )\n    return;\n\n  const name = value.constructor.name;\n  const list = variableListFor(ctx, name);\n  let index = list.indexOf(value);\n\n  if (index === -1) {\n    index = list.length;\n    list.push(value);\n  }\n  return index;\n};\n\n// from webgl-recorder: https://github.com/evanw/webgl-recorder/blob/bef0e65596e981ee382126587e2dcbe0fc7748e2/webgl-recorder.js#L50-L77\nexport function serializeArg(\n  value: unknown,\n  win: IWindow,\n  ctx: RenderingContext,\n): CanvasArg {\n  if (value instanceof Array) {\n    return value.map((arg) => serializeArg(arg, win, ctx));\n  } else if (value === null) {\n    return value;\n  } else if (\n    value instanceof Float32Array ||\n    value instanceof Float64Array ||\n    value instanceof Int32Array ||\n    value instanceof Uint32Array ||\n    value instanceof Uint8Array ||\n    value instanceof Uint16Array ||\n    value instanceof Int16Array ||\n    value instanceof Int8Array ||\n    value instanceof Uint8ClampedArray\n  ) {\n    const name = value.constructor.name;\n    return {\n      rr_type: name,\n      args: [Object.values(value)],\n    };\n  } else if (\n    // SharedArrayBuffer disabled on most browsers due to spectre.\n    // More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/SharedArrayBuffer\n    // value instanceof SharedArrayBuffer ||\n    value instanceof ArrayBuffer\n  ) {\n    const name = value.constructor.name as 'ArrayBuffer';\n    const base64 = encode(value);\n\n    return {\n      rr_type: name,\n      base64,\n    };\n  } else if (value instanceof DataView) {\n    const name = value.constructor.name;\n    return {\n      rr_type: name,\n      args: [\n        serializeArg(value.buffer, win, ctx),\n        value.byteOffset,\n        value.byteLength,\n      ],\n    };\n  } else if (value instanceof HTMLImageElement) {\n    const name = value.constructor.name;\n    const { src } = value;\n    return {\n      rr_type: name,\n      src,\n    };\n  } else if (value instanceof HTMLCanvasElement) {\n    const name = 'HTMLImageElement';\n    // TODO: move `toDataURL` to web worker if possible\n    const src = value.toDataURL(); // heavy on large canvas\n    return {\n      rr_type: name,\n      src,\n    };\n  } else if (value instanceof ImageData) {\n    const name = value.constructor.name;\n    return {\n      rr_type: name,\n      args: [serializeArg(value.data, win, ctx), value.width, value.height],\n    };\n    // } else if (value instanceof Blob) {\n    //   const name = value.constructor.name;\n    //   return {\n    //     rr_type: name,\n    //     data: [serializeArg(await value.arrayBuffer(), win, ctx)],\n    //     type: value.type,\n    //   };\n  } else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\n    const name = value.constructor.name;\n    const index = saveWebGLVar(value, win, ctx) as number;\n\n    return {\n      rr_type: name,\n      index: index,\n    };\n  }\n\n  return value as unknown as CanvasArg;\n}\n\nexport const serializeArgs = (\n  args: Array<unknown>,\n  win: IWindow,\n  ctx: RenderingContext,\n) => {\n  return args.map((arg) => serializeArg(arg, win, ctx));\n};\n\nexport const isInstanceOfWebGLObject = (\n  value: unknown,\n  win: IWindow,\n): value is\n  | WebGLActiveInfo\n  | WebGLBuffer\n  | WebGLFramebuffer\n  | WebGLProgram\n  | WebGLRenderbuffer\n  | WebGLShader\n  | WebGLShaderPrecisionFormat\n  | WebGLTexture\n  | WebGLUniformLocation\n  | WebGLVertexArrayObject => {\n  const webGLConstructorNames: string[] = [\n    'WebGLActiveInfo',\n    'WebGLBuffer',\n    'WebGLFramebuffer',\n    'WebGLProgram',\n    'WebGLRenderbuffer',\n    'WebGLShader',\n    'WebGLShaderPrecisionFormat',\n    'WebGLTexture',\n    'WebGLUniformLocation',\n    'WebGLVertexArrayObject',\n    // In old Chrome versions, value won't be an instanceof WebGLVertexArrayObject.\n    'WebGLVertexArrayObjectOES',\n  ];\n  const supportedWebGLConstructorNames = webGLConstructorNames.filter(\n    (name: string) => typeof win[name as keyof Window] === 'function',\n  );\n  return Boolean(\n    supportedWebGLConstructorNames.find(\n      (name: string) => value instanceof win[name as keyof Window],\n    ),\n  );\n};\n", "import {\n  blockClass,\n  CanvasContext,\n  canvasManagerMutationCallback,\n  IWindow,\n  listenerHandler,\n} from '@sentry-internal/rrweb-types';\nimport { hookSetter, isBlocked, patch, setTimeout } from '../../../utils';\nimport { serializeArgs } from './serialize-args';\n\nexport default function initCanvas2DMutationObserver(\n  cb: canvasManagerMutationCallback,\n  win: IWindow,\n  blockClass: blockClass,\n  blockSelector: string | null,\n  unblockSelector: string | null,\n): listenerHandler {\n  const handlers: listenerHandler[] = [];\n  const props2D = Object.getOwnPropertyNames(\n    win.CanvasRenderingContext2D.prototype,\n  );\n  for (const prop of props2D) {\n    try {\n      if (\n        typeof win.CanvasRenderingContext2D.prototype[\n          prop as keyof CanvasRenderingContext2D\n        ] !== 'function'\n      ) {\n        continue;\n      }\n      const restoreHandler = patch(\n        win.CanvasRenderingContext2D.prototype,\n        prop,\n        function (\n          original: (\n            this: CanvasRenderingContext2D,\n            ...args: unknown[]\n          ) => void,\n        ) {\n          return function (\n            this: CanvasRenderingContext2D,\n            ...args: Array<unknown>\n          ) {\n            if (\n              !isBlocked(\n                this.canvas,\n                blockClass,\n                blockSelector,\n                unblockSelector,\n                true,\n              )\n            ) {\n              // Using setTimeout as toDataURL can be heavy\n              // and we'd rather not block the main thread\n              setTimeout(() => {\n                const recordArgs = serializeArgs(args, win, this);\n                cb(this.canvas, {\n                  type: CanvasContext['2D'],\n                  property: prop,\n                  args: recordArgs,\n                });\n              }, 0);\n            }\n            return original.apply(this, args);\n          };\n        },\n      );\n      handlers.push(restoreHandler);\n    } catch {\n      const hookHandler = hookSetter<CanvasRenderingContext2D>(\n        win.CanvasRenderingContext2D.prototype,\n        prop,\n        {\n          set(v) {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n            cb(this.canvas, {\n              type: CanvasContext['2D'],\n              property: prop,\n              args: [v],\n              setter: true,\n            });\n          },\n        },\n      );\n      handlers.push(hookHandler);\n    }\n  }\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\n", "import type { ICanvas } from '@sentry-internal/rrweb-snapshot';\nimport type {\n  blockClass,\n  IWindow,\n  listenerHandler,\n} from '@sentry-internal/rrweb-types';\nimport { isBlocked, patch } from '../../../utils';\n\nfunction getNormalizedContextName(contextType: string) {\n  return contextType === 'experimental-webgl' ? 'webgl' : contextType;\n}\n\nexport default function initCanvasContextObserver(\n  win: IWindow,\n  blockClass: blockClass,\n  blockSelector: string | null,\n  unblockSelector: string | null,\n  setPreserveDrawingBufferToTrue: boolean,\n): listenerHandler {\n  const handlers: listenerHandler[] = [];\n  try {\n    const restoreHandler = patch(\n      win.HTMLCanvasElement.prototype,\n      'getContext',\n      function (\n        original: (\n          this: ICanvas | HTMLCanvasElement,\n          contextType: string,\n          ...args: Array<unknown>\n        ) => void,\n      ) {\n        return function (\n          this: ICanvas | HTMLCanvasElement,\n          contextType: string,\n          ...args: Array<unknown>\n        ) {\n          if (\n            !isBlocked(this, blockClass, blockSelector, unblockSelector, true)\n          ) {\n            const ctxName = getNormalizedContextName(contextType);\n            if (!('__context' in this)) (this as ICanvas).__context = ctxName;\n\n            if (\n              setPreserveDrawingBufferToTrue &&\n              ['webgl', 'webgl2'].includes(ctxName)\n            ) {\n              if (args[0] && typeof args[0] === 'object') {\n                const contextAttributes = args[0] as WebGLContextAttributes;\n                if (!contextAttributes.preserveDrawingBuffer) {\n                  contextAttributes.preserveDrawingBuffer = true;\n                }\n              } else {\n                args.splice(0, 1, {\n                  preserveDrawingBuffer: true,\n                });\n              }\n            }\n          }\n          return original.apply(this, [contextType, ...args]);\n        };\n      },\n    );\n    handlers.push(restoreHandler);\n  } catch {\n    console.error('failed to patch HTMLCanvasElement.prototype.getContext');\n  }\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\n", "import type { Mirror } from '@sentry-internal/rrweb-snapshot';\nimport {\n  blockClass,\n  CanvasContext,\n  canvasManagerMutationCallback,\n  canvasMutationWithType,\n  IWindow,\n  listenerHandler,\n} from '@sentry-internal/rrweb-types';\nimport { hookSetter, isBlocked, patch } from '../../../utils';\nimport { saveWebGLVar, serializeArgs } from './serialize-args';\n\nfunction patchGLPrototype(\n  prototype: WebGLRenderingContext | WebGL2RenderingContext,\n  type: CanvasContext,\n  cb: canvasManagerMutationCallback,\n  blockClass: blockClass,\n  blockSelector: string | null,\n  unblockSelector: string | null,\n  _mirror: Mirror,\n  win: IWindow,\n): listenerHandler[] {\n  const handlers: listenerHandler[] = [];\n\n  const props = Object.getOwnPropertyNames(prototype);\n\n  for (const prop of props) {\n    if (\n      //prop.startsWith('get') ||  // e.g. getProgramParameter, but too risky\n      [\n        'isContextLost',\n        'canvas',\n        'drawingBufferWidth',\n        'drawingBufferHeight',\n      ].includes(prop)\n    ) {\n      // skip read only propery/functions\n      continue;\n    }\n    try {\n      if (typeof prototype[prop as keyof typeof prototype] !== 'function') {\n        continue;\n      }\n      const restoreHandler = patch(\n        prototype,\n        prop,\n        function (\n          original: (this: typeof prototype, ...args: Array<unknown>) => void,\n        ) {\n          return function (this: typeof prototype, ...args: Array<unknown>) {\n            const result = original.apply(this, args);\n            saveWebGLVar(result, win, this);\n            if (\n              'tagName' in this.canvas &&\n              !isBlocked(\n                this.canvas,\n                blockClass,\n                blockSelector,\n                unblockSelector,\n                true,\n              )\n            ) {\n              const recordArgs = serializeArgs(args, win, this);\n              const mutation: canvasMutationWithType = {\n                type,\n                property: prop,\n                args: recordArgs,\n              };\n              // TODO: this could potentially also be an OffscreenCanvas as well as HTMLCanvasElement\n              cb(this.canvas, mutation);\n            }\n\n            return result;\n          };\n        },\n      );\n      handlers.push(restoreHandler);\n    } catch {\n      const hookHandler = hookSetter<typeof prototype>(prototype, prop, {\n        set(v) {\n          // TODO: this could potentially also be an OffscreenCanvas as well as HTMLCanvasElement\n          // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n          cb(this.canvas as HTMLCanvasElement, {\n            type,\n            property: prop,\n            args: [v],\n            setter: true,\n          });\n        },\n      });\n      handlers.push(hookHandler);\n    }\n  }\n\n  return handlers;\n}\n\nexport default function initCanvasWebGLMutationObserver(\n  cb: canvasManagerMutationCallback,\n  win: IWindow,\n  blockClass: blockClass,\n  blockSelector: string | null,\n  unblockSelector: string | null,\n  mirror: Mirror,\n): listenerHandler {\n  const handlers: listenerHandler[] = [];\n\n  handlers.push(\n    ...patchGLPrototype(\n      win.WebGLRenderingContext.prototype,\n      CanvasContext.WebGL,\n      cb,\n      blockClass,\n      blockSelector,\n      unblockSelector,\n      mirror,\n      win,\n    ),\n  );\n\n  if (typeof win.WebGL2RenderingContext !== 'undefined') {\n    handlers.push(\n      ...patchGLPrototype(\n        win.WebGL2RenderingContext.prototype,\n        CanvasContext.WebGL2,\n        cb,\n        blockClass,\n        blockSelector,\n        unblockSelector,\n        mirror,\n        win,\n      ),\n    );\n  }\n\n  return () => {\n    handlers.forEach((h) => h());\n  };\n}\n", "export default `for(var e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",t=\"undefined\"==typeof Uint8Array?[]:new Uint8Array(256),a=0;a<64;a++)t[e.charCodeAt(a)]=a;var n=function(t){var a,n=new Uint8Array(t),r=n.length,s=\"\";for(a=0;a<r;a+=3)s+=e[n[a]>>2],s+=e[(3&n[a])<<4|n[a+1]>>4],s+=e[(15&n[a+1])<<2|n[a+2]>>6],s+=e[63&n[a+2]];return r%3==2?s=s.substring(0,s.length-1)+\"=\":r%3==1&&(s=s.substring(0,s.length-2)+\"==\"),s};const r=new Map,s=new Map;const i=self;i.onmessage=async function(e){if(!(\"OffscreenCanvas\"in globalThis))return i.postMessage({id:e.data.id});{const{id:t,bitmap:a,width:o,height:f,maxCanvasSize:c,dataURLOptions:g}=e.data,u=async function(e,t,a){const r=e+\"-\"+t;if(\"OffscreenCanvas\"in globalThis){if(s.has(r))return s.get(r);const i=new OffscreenCanvas(e,t);i.getContext(\"2d\");const o=await i.convertToBlob(a),f=await o.arrayBuffer(),c=n(f);return s.set(r,c),c}return\"\"}(o,f,g),[h,d]=function(e,t,a){if(!a)return[e,t];const[n,r]=a;if(e<=n&&t<=r)return[e,t];let s=e,i=t;return s>n&&(i=Math.floor(n*t/e),s=n),i>r&&(s=Math.floor(r*e/t),i=r),[s,i]}(o,f,c),l=new OffscreenCanvas(h,d),w=l.getContext(\"bitmaprenderer\"),p=h===o&&d===f?a:await createImageBitmap(a,{resizeWidth:h,resizeHeight:d,resizeQuality:\"low\"});w?.transferFromImageBitmap(p),a.close();const y=await l.convertToBlob(g),v=y.type,b=await y.arrayBuffer(),m=n(b);if(p.close(),!r.has(t)&&await u===m)return r.set(t,m),i.postMessage({id:t});if(r.get(t)===m)return i.postMessage({id:t});i.postMessage({id:t,type:v,base64:m,width:o,height:f}),r.set(t,m)}};`;\n", "import r from\"./image-bitmap-data-url-worker\";function t(){const t=new Blob([r]);return URL.createObjectURL(t)}export{t as getImageBitmapDataUrlWorkerURL};\n", "import type {\n  ICanvas,\n  Mirror,\n  DataURLOptions,\n} from '@sentry-internal/rrweb-snapshot';\nimport type {\n  blockClass,\n  canvasManagerMutationCallback,\n  canvasMutationCallback,\n  canvasMutationCommand,\n  canvasMutationWithType,\n  IWindow,\n  listenerHandler,\n  CanvasArg,\n  ImageBitmapDataURLWorkerResponse,\n} from '@sentry-internal/rrweb-types';\nimport { isBlocked, onRequestAnimationFrame } from '../../../utils';\nimport { CanvasContext } from '@sentry-internal/rrweb-types';\nimport initCanvas2DMutationObserver from './2d';\nimport initCanvasContextObserver from './canvas';\nimport initCanvasWebGLMutationObserver from './webgl';\nimport { getImageBitmapDataUrlWorkerURL } from '@sentry-internal/rrweb-worker';\nimport { callbackWrapper, registerErrorHandler } from '../../error-handler';\nimport type { ErrorHandler } from '../../../types';\n\nexport type RafStamps = { latestId: number; invokeId: number | null };\n\ntype pendingCanvasMutationsMap = Map<\n  HTMLCanvasElement,\n  canvasMutationWithType[]\n>;\ntype MaxCanvasSize = [number, number];\ntype SnapshotOptions = {\n  skipRequestAnimationFrame?: boolean;\n};\n\nexport interface CanvasManagerInterface {\n  reset(): void;\n  freeze(): void;\n  unfreeze(): void;\n  lock(): void;\n  unlock(): void;\n  snapshot(canvasElement?: HTMLCanvasElement, options?: SnapshotOptions): void;\n  addWindow(win: IWindow): void;\n  addShadowRoot(shadowRoot: ShadowRoot): void;\n  resetShadowRoots(): void;\n}\n\nexport interface CanvasManagerConstructorOptions {\n  recordCanvas: boolean;\n  enableManualSnapshot?: boolean;\n  mutationCb: canvasMutationCallback;\n  win: IWindow;\n  blockClass: blockClass;\n  blockSelector: string | null;\n  unblockSelector: string | null;\n  maxCanvasSize?: MaxCanvasSize | null;\n  mirror: Mirror;\n  dataURLOptions: DataURLOptions;\n  errorHandler?: ErrorHandler;\n  sampling?: 'all' | number;\n}\n\nexport class CanvasManagerNoop implements CanvasManagerInterface {\n  public reset() {\n    // noop\n  }\n  public freeze() {\n    // noop\n  }\n  public unfreeze() {\n    // noop\n  }\n  public lock() {\n    // noop\n  }\n  public unlock() {\n    // noop\n  }\n  public snapshot() {\n    // noop\n  }\n  public addWindow() {\n    // noop\n  }\n\n  public addShadowRoot() {\n    // noop\n  }\n\n  public resetShadowRoots() {\n    // noop\n  }\n}\n\nexport class CanvasManager implements CanvasManagerInterface {\n  private pendingCanvasMutations: pendingCanvasMutationsMap = new Map();\n  private rafStamps: RafStamps = { latestId: 0, invokeId: null };\n  private options: CanvasManagerConstructorOptions;\n  private mirror: Mirror;\n\n  private shadowDoms = new Set<WeakRef<ShadowRoot>>();\n  private windowsSet = new WeakSet<IWindow>();\n  private windows: WeakRef<IWindow>[] = [];\n\n  private mutationCb: canvasMutationCallback;\n  private restoreHandlers: listenerHandler[] = [];\n  private frozen = false;\n  private locked = false;\n\n  private snapshotInProgressMap: Map<number, boolean> = new Map();\n  private worker: Worker | null = null;\n\n  private lastSnapshotTime = 0;\n\n  public reset() {\n    this.pendingCanvasMutations.clear();\n    this.restoreHandlers.forEach((handler) => {\n      try {\n        handler();\n      } catch (e) {\n        //\n      }\n    });\n    this.restoreHandlers = [];\n    this.windowsSet = new WeakSet();\n    this.windows = [];\n    this.shadowDoms = new Set();\n    this.worker?.terminate();\n    this.worker = null;\n    this.snapshotInProgressMap = new Map();\n  }\n\n  public freeze() {\n    this.frozen = true;\n  }\n\n  public unfreeze() {\n    this.frozen = false;\n  }\n\n  public lock() {\n    this.locked = true;\n  }\n\n  public unlock() {\n    this.locked = false;\n  }\n\n  constructor(options: CanvasManagerConstructorOptions) {\n    const {\n      enableManualSnapshot,\n      sampling = 'all',\n      win,\n      recordCanvas,\n      errorHandler,\n    } = options;\n    options.sampling = sampling;\n    this.mutationCb = options.mutationCb;\n    this.mirror = options.mirror;\n    this.options = options;\n\n    if (errorHandler) {\n      registerErrorHandler(errorHandler);\n    }\n    if (\n      (recordCanvas && typeof sampling === 'number') ||\n      enableManualSnapshot\n    ) {\n      this.worker = this.initFPSWorker();\n    }\n    this.addWindow(win);\n\n    if (enableManualSnapshot) {\n      return;\n    }\n\n    callbackWrapper(() => {\n      if (recordCanvas && sampling === 'all') {\n        this.startRAFTimestamping();\n        this.startPendingCanvasMutationFlusher();\n      }\n      if (recordCanvas && typeof sampling === 'number') {\n        this.initCanvasFPSObserver();\n      }\n    })();\n  }\n\n  public addWindow(win: IWindow) {\n    const {\n      sampling = 'all',\n      blockClass,\n      blockSelector,\n      unblockSelector,\n      recordCanvas,\n      enableManualSnapshot,\n    } = this.options;\n    if (this.windowsSet.has(win)) return;\n\n    if (enableManualSnapshot) {\n      this.windowsSet.add(win);\n      this.windows.push(new WeakRef(win));\n      return;\n    }\n\n    callbackWrapper(() => {\n      if (recordCanvas && sampling === 'all') {\n        this.initCanvasMutationObserver(\n          win,\n          blockClass,\n          blockSelector,\n          unblockSelector,\n        );\n      }\n      if (recordCanvas && typeof sampling === 'number') {\n        const canvasContextReset = initCanvasContextObserver(\n          win,\n          blockClass,\n          blockSelector,\n          unblockSelector,\n          true,\n        );\n        this.restoreHandlers.push(() => {\n          canvasContextReset();\n        });\n      }\n    })();\n    this.windowsSet.add(win);\n    this.windows.push(new WeakRef(win));\n  }\n\n  public addShadowRoot(shadowRoot: ShadowRoot) {\n    this.shadowDoms.add(new WeakRef(shadowRoot));\n  }\n\n  public resetShadowRoots() {\n    this.shadowDoms = new Set();\n  }\n\n  public snapshot(\n    canvasElement?: HTMLCanvasElement,\n    options?: SnapshotOptions,\n  ): void {\n    if (options?.skipRequestAnimationFrame) {\n      this.takeSnapshot(performance.now(), true, canvasElement);\n      return;\n    }\n    onRequestAnimationFrame((timestamp) =>\n      this.takeSnapshot(timestamp, true, canvasElement),\n    );\n  }\n\n  private initFPSWorker(): Worker {\n    const worker = new Worker(getImageBitmapDataUrlWorkerURL());\n    worker.onmessage = (e) => {\n      const data = e.data as ImageBitmapDataURLWorkerResponse;\n      const { id } = data;\n      this.snapshotInProgressMap.set(id, false);\n\n      if (!('base64' in data)) return;\n\n      const { base64, type, width, height } = data;\n      this.mutationCb({\n        id,\n        type: CanvasContext['2D'],\n        commands: [\n          {\n            property: 'clearRect', // wipe canvas\n            args: [0, 0, width, height],\n          },\n          {\n            property: 'drawImage', // draws (semi-transparent) image\n            args: [\n              {\n                rr_type: 'ImageBitmap',\n                args: [\n                  {\n                    rr_type: 'Blob',\n                    data: [{ rr_type: 'ArrayBuffer', base64 }],\n                    type,\n                  },\n                ],\n              } as CanvasArg,\n              0,\n              0,\n              // The below args are needed if we enforce a max size, we want to\n              // retain the original size when drawing the image (which should be smaller)\n              width,\n              height,\n            ],\n          },\n        ],\n      });\n    };\n    return worker;\n  }\n\n  private processMutation: canvasManagerMutationCallback = (\n    target,\n    mutation,\n  ) => {\n    const newFrame =\n      this.rafStamps.invokeId &&\n      this.rafStamps.latestId !== this.rafStamps.invokeId;\n    if (newFrame || !this.rafStamps.invokeId)\n      this.rafStamps.invokeId = this.rafStamps.latestId;\n\n    if (!this.pendingCanvasMutations.has(target)) {\n      this.pendingCanvasMutations.set(target, []);\n    }\n\n    this.pendingCanvasMutations.get(target)!.push(mutation);\n  };\n\n  private initCanvasFPSObserver() {\n    let rafId: number;\n\n    if (!this.windows.length && !this.shadowDoms.size) {\n      // If these are empty, then we won't be able to find any canvases to snapshot, so nothing to do here.\n      return;\n    }\n\n    const rafCallback = (timestamp: DOMHighResTimeStamp) => {\n      this.takeSnapshot(timestamp, false);\n      rafId = onRequestAnimationFrame(rafCallback);\n    };\n\n    rafId = onRequestAnimationFrame(rafCallback);\n\n    this.restoreHandlers.push(() => {\n      if (rafId) {\n        cancelAnimationFrame(rafId);\n      }\n    });\n  }\n\n  private initCanvasMutationObserver(\n    win: IWindow,\n    blockClass: blockClass,\n    blockSelector: string | null,\n    unblockSelector: string | null,\n  ): void {\n    const canvasContextReset = initCanvasContextObserver(\n      win,\n      blockClass,\n      blockSelector,\n      unblockSelector,\n      false,\n    );\n    const canvas2DReset = initCanvas2DMutationObserver(\n      this.processMutation.bind(this),\n      win,\n      blockClass,\n      blockSelector,\n      unblockSelector,\n    );\n\n    const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(\n      this.processMutation.bind(this),\n      win,\n      blockClass,\n      blockSelector,\n      unblockSelector,\n      this.mirror,\n    );\n\n    this.restoreHandlers.push(() => {\n      canvasContextReset();\n      canvas2DReset();\n      canvasWebGL1and2Reset();\n    });\n  }\n\n  /**\n   * Returns all `canvas` elements that are not blocked by the given selectors. Searches all windows and shadow roots.\n   */\n  private getCanvasElements(\n    blockClass: blockClass,\n    blockSelector: string | null,\n    unblockSelector: string | null,\n  ): HTMLCanvasElement[] {\n    const matchedCanvas: HTMLCanvasElement[] = [];\n\n    const searchCanvas = (root: Document | ShadowRoot) => {\n      root.querySelectorAll('canvas').forEach((canvas) => {\n        if (\n          !isBlocked(canvas, blockClass, blockSelector, unblockSelector, true)\n        ) {\n          matchedCanvas.push(canvas);\n        }\n      });\n    };\n\n    for (const item of this.windows) {\n      const window = item.deref();\n      let _document: Document | false | undefined;\n\n      try {\n        _document = window && window.document;\n      } catch {\n        // Accessing `window.document` can throw a security error:\n        // \"Failed to read a named property 'document' from 'Window': An\n        // attempt was made to break through the security policy of the user\n        // agent.\"\n      }\n\n      if (_document) {\n        // This is not included in the `try` block above in case `searchCanvas()` throws\n        searchCanvas(_document);\n      }\n    }\n\n    // Search in shadow roots\n    for (const item of this.shadowDoms) {\n      const shadowRoot = item.deref();\n      if (shadowRoot) {\n        searchCanvas(shadowRoot);\n      }\n    }\n\n    return matchedCanvas;\n  }\n\n  /**\n   * Takes a snapshot of the provided canvas element, or will search all windows/shadow roots for canvases. Will self-throttle based on `options.sampling`.\n   *\n   * @returns `true` if the snapshot was taken, `false` if it was throttled.\n   */\n  private takeSnapshot(\n    timestamp: DOMHighResTimeStamp,\n    isManualSnapshot: boolean,\n    canvasElement?: HTMLCanvasElement,\n  ) {\n    const {\n      sampling,\n      blockClass,\n      blockSelector,\n      unblockSelector,\n      dataURLOptions,\n      maxCanvasSize,\n    } = this.options;\n    const fps = sampling === 'all' ? 2 : sampling || 2;\n    const timeBetweenSnapshots = 1000 / fps;\n    const shouldThrottle =\n      this.lastSnapshotTime &&\n      timestamp - this.lastSnapshotTime < timeBetweenSnapshots;\n\n    if (shouldThrottle) {\n      return false;\n    }\n\n    this.lastSnapshotTime = timestamp;\n    const canvases = canvasElement\n      ? [canvasElement]\n      : this.getCanvasElements(blockClass, blockSelector, unblockSelector);\n\n    // Process all canvases concurrently\n    canvases.forEach((canvas) => {\n      const id = this.mirror.getId(canvas);\n\n      // Check if canvas is valid and not already being processed\n      if (\n        !this.mirror.hasNode(canvas) ||\n        !canvas.width ||\n        !canvas.height ||\n        this.snapshotInProgressMap.get(id)\n      ) {\n        return;\n      }\n\n      this.snapshotInProgressMap.set(id, true);\n\n      // Handle WebGL context preservation\n      if (\n        !isManualSnapshot &&\n        ['webgl', 'webgl2'].includes((canvas as ICanvas).__context)\n      ) {\n        const context = canvas.getContext((canvas as ICanvas).__context) as\n          | WebGLRenderingContext\n          | WebGL2RenderingContext\n          | null;\n\n        if (context?.getContextAttributes()?.preserveDrawingBuffer === false) {\n          // Hack to load canvas back into memory so `createImageBitmap` can grab it's contents.\n          // Context: https://twitter.com/Juice10/status/1499775271758704643\n          // Preferably we set `preserveDrawingBuffer` to true, but that's not always possible,\n          // especially when canvas is loaded before rrweb.\n          // This hack can wipe the background color of the canvas in the (unlikely) event that\n          // the canvas background was changed but clear was not called directly afterwards.\n          // Example of this hack having negative side effect: https://visgl.github.io/react-map-gl/examples/layers\n          context.clear(context.COLOR_BUFFER_BIT);\n        }\n      }\n\n      createImageBitmap(canvas)\n        .then((bitmap) => {\n          this.worker?.postMessage(\n            {\n              id,\n              bitmap,\n              width: canvas.width,\n              height: canvas.height,\n              dataURLOptions,\n              maxCanvasSize,\n            },\n            [bitmap],\n          );\n        })\n        .catch((error) => {\n          callbackWrapper(() => {\n            this.snapshotInProgressMap.delete(id);\n            throw error;\n          })();\n        });\n    });\n\n    return true;\n  }\n\n  private startPendingCanvasMutationFlusher() {\n    onRequestAnimationFrame(() => this.flushPendingCanvasMutations());\n  }\n\n  private startRAFTimestamping() {\n    const setLatestRAFTimestamp = (timestamp: DOMHighResTimeStamp) => {\n      this.rafStamps.latestId = timestamp;\n      onRequestAnimationFrame(setLatestRAFTimestamp);\n    };\n    onRequestAnimationFrame(setLatestRAFTimestamp);\n  }\n\n  flushPendingCanvasMutations() {\n    this.pendingCanvasMutations.forEach(\n      (_values: canvasMutationCommand[], canvas: HTMLCanvasElement) => {\n        const id = this.mirror.getId(canvas);\n        this.flushPendingCanvasMutationFor(canvas, id);\n      },\n    );\n    onRequestAnimationFrame(() => this.flushPendingCanvasMutations());\n  }\n\n  flushPendingCanvasMutationFor(canvas: HTMLCanvasElement, id: number) {\n    if (this.frozen || this.locked) {\n      return;\n    }\n\n    const valuesWithType = this.pendingCanvasMutations.get(canvas);\n    if (!valuesWithType || id === -1) return;\n\n    const values = valuesWithType.map((value) => {\n      const { type, ...rest } = value;\n      return rest;\n    });\n    const { type } = valuesWithType[0];\n\n    this.mutationCb({ id, type, commands: values });\n\n    this.pendingCanvasMutations.delete(canvas);\n  }\n}\n", "\"use strict\";\nObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\nconst canvasManager = require(\"./canvas-manager-900X62Xw.cjs\");\nexports.CanvasManager = canvasManager.CanvasManager;\n//# sourceMappingURL=canvas-manager.cjs.map\n"],
  "mappings": "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",
  "names": ["__defProp", "__defNormalProp", "obj", "key", "value", "__publicField", "NodeType", "NodeType2", "isElement", "n", "isShadowRoot", "isNativeShadowDom", "shadowRoot", "fixBrowserCompatibilityIssuesInCSS", "cssText", "escapeImportStatement", "rule", "statement", "stringifyStylesheet", "s", "rules", "stringifyRule", "fixAllCssProperty", "styles", "i", "styleDeclaration", "attribute", "isImportant", "importStringified", "isCSSImportRule", "isCSSStyleRule", "needsSafariColonFix", "needsAllFix", "fixSafariColons", "cssStringified", "regex", "Mirror", "id", "childNode", "node", "meta", "oldNode", "createMirror", "shouldMaskInput", "maskInputOptions", "tagName", "type", "maskInputValue", "isMasked", "element", "maskInputFn", "text", "toLowerCase", "str", "toUpperCase", "ORIGINAL_ATTRIBUTE_NAME", "is2DCanvasBlank", "canvas", "ctx", "chunkSize", "x", "y", "getImageData", "originalGetImageData", "pixel", "isNodeMetaEqual", "a", "b", "getInputType", "getInputValue", "el", "extractFileExtension", "path", "baseURL", "url", "cachedImplementations", "getImplementation", "name", "cached", "document", "impl", "sandbox", "contentWindow", "setTimeout", "rest", "clearTimeout", "getIFrameContentDocument", "iframe", "getIFrameContentWindow", "_id", "tagNameRegex", "IGNORED_NODE", "genId", "getValidTagName", "processedTagName", "extractOrigin", "origin", "canvasService", "canvasCtx", "URL_IN_CSS_REF", "URL_PROTOCOL_MATCH", "URL_WWW_MATCH", "DATA_URI", "filterCSSPropertiesFromInlineStyle", "ignoredProperties", "properties", "filteredProperties", "property", "colonIndex", "propertyName", "error", "absoluteToStylesheet", "href", "quote1", "path1", "quote2", "path2", "path3", "filePath", "maybeQuote", "stack", "parts", "part", "SRCSET_NOT_SPACES", "SRCSET_COMMAS_OR_SPACES", "getAbsoluteSrcsetString", "doc", "attributeValue", "pos", "collectCharacters", "regEx", "chars", "match", "output", "absoluteToDoc", "descriptorsStr", "inParens", "c", "cachedDocument", "getHref", "isSVGElement", "customHref", "transformAttribute", "maskAttributeFn", "ignoreCSSAttributes", "processedStyle", "ignoreAttribute", "_value", "_isBlockedElement", "blockClass", "blockSelector", "unblockSelector", "eIndex", "className", "elementClassMatchesRegex", "distanceToMatch", "matchPredicate", "limit", "distance", "createMatchPredicate", "selector", "needMaskingText", "maskTextClass", "maskTextSelector", "unmaskTextClass", "unmaskTextSelector", "maskAllText", "autocomplete", "maskDistance", "unmaskDistance", "onceIframeLoaded", "iframeEl", "listener", "iframeLoadTimeout", "win", "fired", "readyState", "timer", "blankUrl", "onceStylesheetLoaded", "link", "styleSheetLoadTimeout", "styleSheetLoaded", "serializeNode", "options", "mirror", "inlineStylesheet", "maskTextFn", "dataURLOptions", "inlineImages", "recordCanvas", "keepIframeSrcFn", "newlyAddedElement", "rootId", "getRootId", "serializeElementNode", "serializeTextNode", "docId", "parentTagName", "textContent", "isStyle", "isScript", "isTextarea", "err", "forceMask", "isInputMasked", "needBlock", "attributes2", "len", "attr", "stylesheet", "checked", "canvasDataURL", "blankCanvas", "blankCanvasDataURL", "image", "imageSrc", "priorCrossOrigin", "recordInlineImage", "width", "height", "isCustomElement", "lowerIfExists", "maybeAttr", "slimDOMExcluded", "sn", "slimDOMOptions", "serializeNodeWithId", "skipChild", "onSerialize", "onIframeLoad", "onBlockedImageLoad", "onStylesheetLoad", "stylesheetLoadTimeout", "preserveWhiteSpace", "_serializedNode", "serializedNode2", "recordChild", "bypassOptions", "childNodes", "childN", "serializedChildNode", "iframeDoc", "serializedIframeNode", "updateImageDimensions", "rect", "serializedLinkNode", "snapshot", "maskAllInputs", "slimDOM", "commentre", "parse", "css", "lineno", "column", "updatePosition", "lines", "position", "start", "Position", "whitespace", "_Position", "errorsList", "msg", "rulesList", "open", "close", "rules2", "comments", "atrule", "re", "m", "comment", "splitSelectors", "trim", "m2", "j", "finalSelectors", "openingParensCount", "closingParensCount", "unbalancedParens", "foundClosingSelector", "nextOpeningParensCount", "nextUnbalancedParens", "selector2", "declaration", "propMatch", "prop", "val", "ret", "declarations", "decls", "decl", "keyframe", "vals", "atkeyframes", "vendor", "frame", "frames", "atsupports", "supports", "style", "athost", "atmedia", "media", "atcustommedia", "atpage", "sel", "atdocument", "atfontface", "atimport", "_compileAtrule", "atcharset", "atnamespace", "addParent", "parent", "isNode", "childParent", "k", "v", "tagMap", "getTagName", "escapeRegExp", "HOVER_SELECTOR", "HOVER_SELECTOR_GLOBAL", "addHoverClass", "cache", "cachedStyle", "ast", "selectors", "selectorMatcher", "index", "result", "newSelector", "createCache", "buildNode", "hackCss", "e", "specialAttributes", "isRemoteOrDynamicCss", "child", "buildNodeWithSN", "afterAppend", "nodeInMirror", "htmlElement", "body", "visit", "onVisit", "walk", "handleScroll", "rebuild", "visitedNode", "on", "fn", "target", "DEPARTED_MIRROR_ACCESS_WARNING", "_mirror", "receiver", "throttle", "func", "wait", "timeout", "previous", "args", "now", "remaining", "context", "hookSetter", "d", "isRevoked", "original", "patch", "source", "replacement", "wrapped", "nowTimestamp", "getWindowScroll", "getWindowHeight", "getWindowWidth", "closestElementOfNode", "isBlocked", "checkAncestors", "blockedPredicate", "isUnblocked", "blockDistance", "unblockDistance", "isSerialized", "isIgnored", "isAncestorRemoved", "legacy_isTouchEvent", "event", "polyfill", "queueToResolveTrees", "queue", "queueNodeMap", "putIntoMap", "nodeInTree", "queueNodeTrees", "mutation", "nextId", "parentId", "nextInTree", "idx", "parentInTree", "iterateResolveTree", "tree", "cb", "isSerializedIframe", "isSerializedStylesheet", "getBaseDimension", "rootIframe", "frameElement", "frameDimension", "frameBaseDimension", "relativeScale", "hasShadowRoot", "getNestedRule", "getPositionsAndIndex", "nestedIndex", "positions", "uniqueTextMutations", "mutations", "idSet", "uniqueMutations", "StyleSheetMirror", "newId", "getShadowHost", "shadowHost", "getRootShadowHost", "rootShadowHost", "shadowHostInDom", "inDom", "onRequestAnimationFrame", "EventType", "EventType2", "IncrementalSource", "IncrementalSource2", "MouseInteractions", "MouseInteractions2", "PointerTypes", "PointerTypes2", "CanvasContext", "CanvasContext2", "MediaInteractions", "MediaInteractions2", "ReplayerEvents", "ReplayerEvents2", "errorHandler", "registerErrorHandler", "handler", "unregisterErrorHandler", "callbackWrapper", "lookup", "encode", "arraybuffer", "bytes", "base64", "decode", "bufferLength", "p", "encoded1", "encoded2", "encoded3", "encoded4", "canvasVarMap", "variableListFor", "ctor", "contextMap", "saveWebGLVar", "isInstanceOfWebGLObject", "list", "serializeArg", "arg", "src", "serializeArgs", "initCanvas2DMutationObserver", "handlers", "props2D", "restoreHandler", "recordArgs", "hookHandler", "h", "getNormalizedContextName", "contextType", "initCanvasContextObserver", "setPreserveDrawingBufferToTrue", "ctxName", "contextAttributes", "patchGLPrototype", "prototype", "props", "initCanvasWebGLMutationObserver", "r", "t", "CanvasManagerNoop", "CanvasManager", "enableManualSnapshot", "sampling", "canvasContextReset", "canvasElement", "timestamp", "worker", "getImageBitmapDataUrlWorkerURL", "data", "rafId", "rafCallback", "canvas2DReset", "canvasWebGL1and2Reset", "matchedCanvas", "searchCanvas", "root", "item", "window", "_document", "isManualSnapshot", "maxCanvasSize", "timeBetweenSnapshots", "bitmap", "setLatestRAFTimestamp", "_values", "valuesWithType", "values", "canvasManager"]
}
